summaryrefslogtreecommitdiff
path: root/user
diff options
context:
space:
mode:
Diffstat (limited to 'user')
-rw-r--r--user/.rootbld-repositories4
-rw-r--r--user/a52dec/APKBUILD32
-rw-r--r--user/a52dec/a52dec-0.7.4-build.patch27
-rw-r--r--user/a52dec/automake.patch11
-rw-r--r--user/a52dec/fix-globals-test-x86-pie.patch11
-rw-r--r--user/abiword/APKBUILD26
-rw-r--r--user/abiword/fix-bad-cast.patch12
-rw-r--r--user/abiword/fix-black-drawing-regression.patch54
-rw-r--r--user/abiword/libxml2-2.12.patch29
-rw-r--r--user/accountsservice/APKBUILD17
-rw-r--r--user/accountsservice/disable-msgfmt15
-rw-r--r--user/acpi/APKBUILD2
-rw-r--r--user/acpid/APKBUILD17
-rw-r--r--user/acpid/handler.sh2
-rw-r--r--user/acpilight/APKBUILD11
-rw-r--r--user/adelie-fonts/APKBUILD19
-rw-r--r--user/adelie-kde-theme/APKBUILD26
-rw-r--r--user/adelie-kde-theme/adelie-kde-theme.js33
-rw-r--r--user/adelie-kde-theme/kdeglobals10
-rw-r--r--user/adelie-kde-theme/kscreenlockerrc13
-rw-r--r--user/adelie-lxqt-theme/APKBUILD28
-rw-r--r--user/adelie-lxqt-theme/lxqt-desktop.conf20
-rw-r--r--user/adelie-lxqt-theme/lxqt-qt5ct.conf19
-rw-r--r--user/adelie-lxqt-theme/lxqt-session.conf2
-rw-r--r--user/adelie-mate-theme/APKBUILD22
-rw-r--r--user/adelie-mate-theme/adelie-mate-theme.post-install3
-rw-r--r--user/adelie-mate-theme/dconf.conf17
-rw-r--r--user/adelie-wallpapers/APKBUILD31
-rw-r--r--user/adwaita-icon-theme/APKBUILD9
-rw-r--r--user/ae_fonts/APKBUILD6
-rw-r--r--user/akonadi-contacts/APKBUILD17
-rw-r--r--user/akonadi-contacts/build-without-trunk.patch17
-rw-r--r--user/akonadi-mime/APKBUILD20
-rw-r--r--user/akonadi-search/APKBUILD44
-rw-r--r--user/akonadi/APKBUILD23
-rw-r--r--user/akonadi/atomics.patch10
-rw-r--r--user/alegreya-sans/APKBUILD3
-rw-r--r--user/alegreya/APKBUILD1
-rw-r--r--user/alkimia/APKBUILD13
-rw-r--r--user/alpine/APKBUILD29
-rw-r--r--user/alpine/support-musl.patch20
-rw-r--r--user/alsa-lib/APKBUILD25
-rw-r--r--user/alsa-lib/remove-test.patch31
-rw-r--r--user/alsa-lib/type_compat.patch23
-rw-r--r--user/alsa-lib/ucm_add_limits_h.patch10
-rw-r--r--user/alsa-plugins/APKBUILD10
-rw-r--r--user/alsa-utils/APKBUILD13
-rw-r--r--user/alsa-utils/alsa.initd4
-rw-r--r--user/analitza/APKBUILD13
-rw-r--r--user/andika/APKBUILD5
-rw-r--r--user/anonymous-pro/APKBUILD18
-rw-r--r--user/ant/APKBUILD65
-rw-r--r--user/ant/ant.sh3
-rw-r--r--user/ant/imageio_fix_java_test.patch26
-rw-r--r--user/ant/imageio_fix_test.patch23
-rw-r--r--user/apache-httpd/APKBUILD84
-rwxr-xr-xuser/apache-httpd/apache-httpd.initd4
-rw-r--r--user/apache-httpd/apache-httpd.pre-install8
l---------[-rw-r--r--]user/apache-httpd/apache-httpd.pre-upgrade9
-rw-r--r--user/apache-httpd/conf/httpd.conf8
-rw-r--r--user/apaste/APKBUILD84
-rw-r--r--user/apaste/apasted-log.run5
-rw-r--r--user/apaste/apasted.confd32
-rw-r--r--user/apaste/apasted.initd64
-rw-r--r--user/apaste/apasted.pre-install7
-rw-r--r--user/apaste/apasted.run19
-rw-r--r--user/apaste/apastesd.run23
-rw-r--r--user/apkfoundry/APKBUILD31
-rw-r--r--user/apkvitrine/APKBUILD22
-rw-r--r--user/appres/APKBUILD33
-rw-r--r--user/apr-util/APKBUILD21
-rw-r--r--user/apr/APKBUILD13
-rw-r--r--user/arcticfox/APKBUILD136
-rw-r--r--user/arcticfox/arcticfox.desktop76
-rw-r--r--user/arcticfox/hunspell.patch15
-rw-r--r--user/arcticfox/mozconfig28
-rw-r--r--user/arcticfox/override-cxx-version.patch17
-rw-r--r--user/arcticfox/stackwalk-x86-ppc.patch14
-rw-r--r--user/argp-standalone/001-throw-in-funcdef.patch79
-rw-r--r--user/argp-standalone/APKBUILD49
-rw-r--r--user/argp-standalone/gnu89-inline.patch22
-rw-r--r--user/aria2/APKBUILD71
-rw-r--r--user/aria2/aria2.conf61
-rw-r--r--user/aria2/aria2.confd10
-rw-r--r--user/aria2/aria2.initd42
-rw-r--r--user/aria2/aria2.logrotate6
-rw-r--r--user/aria2/aria2.pre-install7
-rw-r--r--user/ark/APKBUILD18
-rw-r--r--user/artikulate/APKBUILD16
-rw-r--r--user/aspell-dict-af/APKBUILD12
-rw-r--r--user/aspell-dict-am/APKBUILD12
-rw-r--r--user/aspell-dict-ar/APKBUILD12
-rw-r--r--user/aspell-dict-ast/APKBUILD12
-rw-r--r--user/aspell-dict-az/APKBUILD12
-rw-r--r--user/aspell-dict-be/APKBUILD12
-rw-r--r--user/aspell-dict-bg/APKBUILD12
-rw-r--r--user/aspell-dict-bn/APKBUILD12
-rw-r--r--user/aspell-dict-br/APKBUILD12
-rw-r--r--user/aspell-dict-ca/APKBUILD19
-rw-r--r--user/aspell-dict-cs/APKBUILD12
-rw-r--r--user/aspell-dict-csb/APKBUILD12
-rw-r--r--user/aspell-dict-cy/APKBUILD18
-rw-r--r--user/aspell-dict-da/APKBUILD27
-rw-r--r--user/aspell-dict-de-alt/APKBUILD18
-rw-r--r--user/aspell-dict-de/APKBUILD34
-rw-r--r--user/aspell-dict-el/APKBUILD18
-rw-r--r--user/aspell-dict-en/APKBUILD16
-rw-r--r--user/aspell-dict-eo/APKBUILD18
-rw-r--r--user/aspell-dict-es/APKBUILD18
-rw-r--r--user/aspell-dict-et/APKBUILD18
-rw-r--r--user/aspell-dict-fa/APKBUILD18
-rw-r--r--user/aspell-dict-fi/APKBUILD18
-rw-r--r--user/aspell-dict-fo/APKBUILD18
-rw-r--r--user/aspell-dict-fr/APKBUILD18
-rw-r--r--user/aspell-dict-fy/APKBUILD18
-rw-r--r--user/aspell-dict-ga/APKBUILD20
-rw-r--r--user/aspell-dict-gd/APKBUILD18
-rw-r--r--user/aspell-dict-gl/APKBUILD18
-rw-r--r--user/aspell-dict-grc/APKBUILD18
-rw-r--r--user/aspell-dict-gu/APKBUILD18
-rw-r--r--user/aspell-dict-gv/APKBUILD18
-rw-r--r--user/aspell-dict-he/APKBUILD18
-rw-r--r--user/aspell-dict-hi/APKBUILD23
-rw-r--r--user/aspell-dict-hil/APKBUILD18
-rw-r--r--user/aspell-dict-hr/APKBUILD18
-rw-r--r--user/aspell-dict-hsb/APKBUILD18
-rw-r--r--user/aspell-dict-hu/APKBUILD18
-rw-r--r--user/aspell-dict-hus/APKBUILD18
-rw-r--r--user/aspell-dict-hy/APKBUILD18
-rw-r--r--user/aspell-dict-ia/APKBUILD18
-rw-r--r--user/aspell-dict-id/APKBUILD18
-rw-r--r--user/aspell-dict-is/APKBUILD18
-rw-r--r--user/aspell-dict-it/APKBUILD16
-rw-r--r--user/aspell-dict-kn/APKBUILD18
-rw-r--r--user/aspell-dict-ku/APKBUILD18
-rw-r--r--user/aspell-dict-ky/APKBUILD18
-rw-r--r--user/aspell-dict-la/APKBUILD18
-rw-r--r--user/aspell-dict-lt/APKBUILD25
-rw-r--r--user/aspell-dict-lv/APKBUILD27
-rw-r--r--user/aspell-dict-mg/APKBUILD18
-rw-r--r--user/aspell-dict-mi/APKBUILD18
-rw-r--r--user/aspell-dict-mk/APKBUILD18
-rw-r--r--user/aspell-dict-ml/APKBUILD18
-rw-r--r--user/aspell-dict-mn/APKBUILD18
-rw-r--r--user/aspell-dict-mr/APKBUILD24
-rw-r--r--user/aspell-dict-ms/APKBUILD18
-rw-r--r--user/aspell-dict-mt/APKBUILD18
-rw-r--r--user/aspell-dict-nb/APKBUILD18
-rw-r--r--user/aspell-dict-nds/APKBUILD18
-rw-r--r--user/aspell-dict-nl/APKBUILD18
-rw-r--r--user/aspell-dict-nn/APKBUILD18
-rw-r--r--user/aspell-dict-ny/APKBUILD18
-rw-r--r--user/aspell-dict-or/APKBUILD18
-rw-r--r--user/aspell-dict-pa/APKBUILD18
-rw-r--r--user/aspell-dict-pl/APKBUILD22
-rw-r--r--user/aspell-dict-pt_BR/APKBUILD25
-rw-r--r--user/aspell-dict-pt_PT/APKBUILD25
-rw-r--r--user/aspell-dict-qu/APKBUILD18
-rw-r--r--user/aspell-dict-ro/APKBUILD19
-rw-r--r--user/aspell-dict-ru/APKBUILD18
-rw-r--r--user/aspell-dict-rw/APKBUILD18
-rw-r--r--user/aspell-dict-sc/APKBUILD18
-rw-r--r--user/aspell-dict-sk/APKBUILD18
-rw-r--r--user/aspell-dict-sl/APKBUILD18
-rw-r--r--user/aspell-dict-sr/APKBUILD18
-rw-r--r--user/aspell-dict-sv/APKBUILD18
-rw-r--r--user/aspell-dict-sw/APKBUILD18
-rw-r--r--user/aspell-dict-ta/APKBUILD18
-rw-r--r--user/aspell-dict-te/APKBUILD18
-rw-r--r--user/aspell-dict-tet/APKBUILD18
-rw-r--r--user/aspell-dict-tk/APKBUILD18
-rw-r--r--user/aspell-dict-tl/APKBUILD16
-rw-r--r--user/aspell-dict-tn/APKBUILD18
-rw-r--r--user/aspell-dict-tr/APKBUILD18
-rw-r--r--user/aspell-dict-uk/APKBUILD18
-rw-r--r--user/aspell-dict-uz/APKBUILD18
-rw-r--r--user/aspell-dict-vi/APKBUILD18
-rw-r--r--user/aspell-dict-wa/APKBUILD18
-rw-r--r--user/aspell-dict-yi/APKBUILD18
-rw-r--r--user/aspell-dict-zu/APKBUILD18
-rw-r--r--user/aspell/APKBUILD20
-rw-r--r--user/aspell/aspell-0.60.6.1-gcc7-fixes.patch34
-rw-r--r--user/assimp/05-remove-failing-x86-test.patch14
-rw-r--r--user/assimp/APKBUILD36
-rw-r--r--user/astyle/APKBUILD34
-rw-r--r--user/astyle/limits.patch12
-rw-r--r--user/at-spi2-atk/APKBUILD21
-rw-r--r--user/at-spi2-core/APKBUILD15
-rw-r--r--user/atf/APKBUILD34
-rw-r--r--user/atk/APKBUILD21
-rw-r--r--user/atkmm/APKBUILD30
-rw-r--r--user/atril/APKBUILD30
-rw-r--r--user/attica/APKBUILD13
-rw-r--r--user/audacious-plugins/APKBUILD16
-rw-r--r--user/audacious/APKBUILD15
-rw-r--r--user/audiofile/APKBUILD25
-rw-r--r--user/audiofile/CVE-2015-7747.patch156
-rw-r--r--user/audiofile/CVE-2017-6827,6828,6832,6833,6835,6837.patch34
-rw-r--r--user/audiofile/CVE-2017-6829.patch33
-rw-r--r--user/audiofile/CVE-2017-6830,6834,6836,6838.patch70
-rw-r--r--user/audiofile/CVE-2017-6831.patch36
-rw-r--r--user/audiofile/CVE-2017-6839.patch120
-rw-r--r--user/audiofile/CVE-2018-13440,17095.patch77
-rw-r--r--user/autoconf-archive/APKBUILD33
-rw-r--r--user/autoconf2.13/APKBUILD12
-rw-r--r--user/avahi/APKBUILD75
-rw-r--r--user/avahi/avahi.pre-install10
l---------user/avahi/avahi.pre-upgrade1
-rw-r--r--user/avahi/build-db49
-rw-r--r--user/awesome/APKBUILD31
-rw-r--r--user/awesome/gcc10.patch236
-rw-r--r--user/ayatana-ido/APKBUILD17
-rw-r--r--user/baekmuk-ttf/APKBUILD3
-rw-r--r--user/baloo-widgets/APKBUILD11
-rw-r--r--user/baloo/APKBUILD28
-rw-r--r--user/baloo/baloo-5.38.0-r0-x86_64-ciall.log2714
-rw-r--r--user/baloo/initialise-variable.patch2
-rw-r--r--user/bash-completion/APKBUILD38
-rw-r--r--user/bash-completion/fix-tests.patch13
-rw-r--r--user/bash-completion/gcc-x86-tests.patch22
-rw-r--r--user/bcnm/APKBUILD32
-rw-r--r--user/bdftopcf/APKBUILD9
-rw-r--r--user/bearssl/APKBUILD44
-rw-r--r--user/bearssl/bearssl.pc5
-rw-r--r--user/beforelight/APKBUILD16
-rw-r--r--user/bengali-fonts/APKBUILD2
-rw-r--r--user/bind/APKBUILD72
-rw-r--r--user/bind/bind.pre-install5
-rw-r--r--user/bindgen-cli/APKBUILD241
-rw-r--r--user/bitlbee/APKBUILD37
-rw-r--r--user/bitmap/APKBUILD6
-rw-r--r--user/black-hole-solver/APKBUILD43
-rw-r--r--user/blinken/APKBUILD11
-rw-r--r--user/blinken/test.patch13
-rw-r--r--user/bluedevil/APKBUILD44
-rw-r--r--user/bluez-qt/APKBUILD43
-rw-r--r--user/bluez/APKBUILD92
-rw-r--r--user/bluez/bluez-5.40-obexd_without_systemd-1.patch61
-rw-r--r--user/bluez/dbus-without-systemd.patch34
-rw-r--r--user/bluez/mesh-without-systemd.patch29
-rw-r--r--user/bluez/obex-without-systemd.patch54
-rw-r--r--user/bluez/time64.patch82
-rw-r--r--user/bolt/APKBUILD33
-rw-r--r--user/bomber/APKBUILD11
-rw-r--r--user/boost/APKBUILD74
-rw-r--r--user/boost/boost-1.57.0-python-abi_letters.patch62
-rw-r--r--user/boost/boost-1.57.0-python-libpython_dep.patch13
-rw-r--r--user/boost/dual-python.patch27
-rw-r--r--user/boost/python-311-fix-enum.patch39
-rw-r--r--user/boost/python-311-fix-open.patch22
-rw-r--r--user/bovo/APKBUILD11
-rw-r--r--user/breeze-grub/APKBUILD22
-rw-r--r--user/breeze-gtk/APKBUILD17
-rw-r--r--user/breeze-icons/APKBUILD19
-rw-r--r--user/breeze/APKBUILD11
-rw-r--r--user/brillo/APKBUILD25
-rw-r--r--user/bsdwhois/APKBUILD3
-rw-r--r--user/btrfs-progs/APKBUILD21
-rw-r--r--user/bugzilla/APKBUILD7
-rw-r--r--user/byobu/APKBUILD33
-rw-r--r--user/bzflag/APKBUILD11
-rw-r--r--user/bzflag/defineAddrLen.patch11
-rw-r--r--user/c-ares/APKBUILD32
-rw-r--r--user/cairo/APKBUILD87
-rw-r--r--user/cairo/cairo-respect-fontconfig_pb.patch13
-rw-r--r--user/cairo/cairo-webkit-html5-fix.patch30
-rw-r--r--user/cairomm/APKBUILD37
-rw-r--r--user/caja-dropbox/APKBUILD11
-rw-r--r--user/caja-extensions/APKBUILD11
-rw-r--r--user/caja/APKBUILD16
-rw-r--r--user/calligra/APKBUILD56
-rw-r--r--user/calligra/braindump.patch21
-rw-r--r--user/calligra/c99-math.patch18
-rw-r--r--user/calligra/cxx17.patch474
-rw-r--r--user/calligra/fontconfig.patch86
-rw-r--r--user/calligra/poppler-73.patch45
-rw-r--r--user/calligra/poppler.patch236
-rw-r--r--user/calligra/poppler2.patch114
-rw-r--r--user/calligra/poppler3.patch92
-rw-r--r--user/calligra/poppler4.patch76
-rw-r--r--user/calligra/ridiculous-typo.patch11
-rw-r--r--user/cantarell-fonts/APKBUILD9
-rw-r--r--user/cantor/APKBUILD22
-rw-r--r--user/cantor/rip-out-webengine.patch56
-rw-r--r--user/cardo/APKBUILD3
-rw-r--r--user/catcodec/APKBUILD6
-rw-r--r--user/catdoc/APKBUILD14
-rw-r--r--user/catdoc/CVE-2017-11110.patch32
-rw-r--r--user/catfish/APKBUILD13
-rw-r--r--user/cbindgen/APKBUILD162
-rw-r--r--user/cbindgen/ppc-libc-hugetlb.patch12
-rw-r--r--user/cdparanoia/APKBUILD4
-rw-r--r--user/certbot/APKBUILD12
-rw-r--r--user/cervisia/APKBUILD45
-rw-r--r--user/cgit/APKBUILD21
-rw-r--r--user/cgmanager/APKBUILD3
-rw-r--r--user/checkbashisms/APKBUILD16
-rw-r--r--user/chelf/APKBUILD26
-rw-r--r--user/chntpw/APKBUILD40
-rw-r--r--user/chntpw/chntpw-080526-correct-test-for-failing-open-syscall.patch75
-rw-r--r--user/chntpw/chntpw-110511-detect-failure-to-write-key.patch19
-rw-r--r--user/chntpw/chntpw-110511-reged-no-deref-null.patch15
-rw-r--r--user/chntpw/chntpw-110511-robustness.patch39
-rw-r--r--user/chntpw/chntpw-140201-get_abs_path.patch10
-rw-r--r--user/chntpw/getopt-signed-char-return.patch37
-rw-r--r--user/chntpw/stdint.patch11
-rw-r--r--user/choqok/APKBUILD44
-rw-r--r--user/chrony/APKBUILD24
-rw-r--r--user/chrony/chrony-include-util.patch10
-rw-r--r--user/chrony/chrony.conf4
-rw-r--r--user/chrony/chrony.pre-install5
-rw-r--r--user/chrpath/APKBUILD36
-rw-r--r--user/cifs-utils/APKBUILD29
-rw-r--r--user/cifs-utils/respect-destdir.patch18
-rw-r--r--user/cjson/APKBUILD36
-rw-r--r--user/ckbcomp/APKBUILD23
-rw-r--r--user/clang/0001-Add-support-for-Ad-lie-Linux.patch60
-rw-r--r--user/clang/0008-Fix-ClangConfig-cmake-LLVM-path.patch25
-rw-r--r--user/clang/APKBUILD112
-rw-r--r--user/clang/big-endian-32.patch183
-rw-r--r--user/clang/cfe-005-ppc64-dynamic-linker-path.patch17
-rw-r--r--user/clang/ppc-dirwatcher.patch10
-rw-r--r--user/clang/secure-plt.patch11
-rw-r--r--user/clang/use-llvm-lit.patch2
-rw-r--r--user/claws-mail/APKBUILD11
-rw-r--r--user/clazy/APKBUILD45
-rw-r--r--user/clazy/fix-link-fs-lib.patch11
-rw-r--r--user/clearsans/APKBUILD5
-rw-r--r--user/cloc/APKBUILD28
-rw-r--r--user/clucene/APKBUILD79
-rw-r--r--user/clucene/disable-threading.patch75
-rw-r--r--user/clucene/install_contribs_lib.patch42
-rw-r--r--user/clucene/pkgconfig.patch12
-rw-r--r--user/clucene/usleep.patch12
-rw-r--r--user/clutter/APKBUILD24
-rw-r--r--user/cm-unicode/APKBUILD3
-rw-r--r--user/cmocka/APKBUILD41
-rw-r--r--user/cmocka/uintptr_t.patch25
-rw-r--r--user/cmus/APKBUILD15
-rw-r--r--user/cmus/ppc-libatomic.patch2
-rw-r--r--user/cogl/APKBUILD27
-rw-r--r--user/cogl/fix-wayland-egl-check.patch12
-rw-r--r--user/colordiff/APKBUILD28
-rw-r--r--user/comfortaa/APKBUILD10
-rw-r--r--user/comic-neue/APKBUILD7
-rw-r--r--user/command-not-found/APKBUILD11
-rw-r--r--user/compface/APKBUILD5
-rw-r--r--user/compton-conf/APKBUILD39
-rw-r--r--user/compton/APKBUILD15
-rw-r--r--user/confuse/APKBUILD18
-rw-r--r--user/consolekit2/APKBUILD57
-rw-r--r--user/consolekit2/consolekit2.initd9
-rw-r--r--user/consolekit2/pam-foreground-compat.ck17
-rw-r--r--user/convertlit/APKBUILD4
-rw-r--r--user/corindon-red/APKBUILD27
-rw-r--r--user/courier-prime/APKBUILD3
-rw-r--r--user/coverage/APKBUILD11
-rw-r--r--user/cppcheck/APKBUILD54
-rw-r--r--user/cppunit/APKBUILD9
-rw-r--r--user/cracklib/APKBUILD25
-rw-r--r--user/cracklib/nls.patch48
-rw-r--r--user/cram/APKBUILD5
-rw-r--r--user/cryptsetup/APKBUILD61
-rw-r--r--user/cryptsetup/dmcrypt.confd111
-rw-r--r--user/cryptsetup/dmcrypt.initd339
-rw-r--r--user/ctags/APKBUILD34
-rw-r--r--user/cunit/APKBUILD52
-rw-r--r--user/cunit/path-makefile.patch31
-rw-r--r--user/cups-filters/APKBUILD15
-rw-r--r--user/cups/APKBUILD22
-rw-r--r--user/cups/cups-no-export-ssllibs.patch12
-rw-r--r--user/cups/cups.pre-install7
-rw-r--r--user/cve-check-tool/APKBUILD43
-rw-r--r--user/cyrus-sasl/APKBUILD23
-rw-r--r--user/cyrus-sasl/CVE-2019-19906.patch25
-rw-r--r--user/darkman/APKBUILD25
-rw-r--r--user/davmail/APKBUILD60
-rwxr-xr-xuser/davmail/davmail.sh7
-rw-r--r--user/dbus-glib/APKBUILD10
-rw-r--r--user/dbus/APKBUILD14
-rw-r--r--user/dbus/dbus.pre-install5
-rw-r--r--user/dconf/APKBUILD31
-rw-r--r--user/dconf/user-profile.conf2
-rw-r--r--user/ddrescue/APKBUILD23
-rw-r--r--user/dejagnu/APKBUILD37
-rw-r--r--user/desktop-file-utils/APKBUILD24
-rw-r--r--user/dev86/APKBUILD29
-rw-r--r--user/dhcpcd/APKBUILD11
-rw-r--r--user/dialog/APKBUILD8
-rw-r--r--user/digikam/APKBUILD56
-rw-r--r--user/digikam/backport.patch28
-rw-r--r--user/digikam/isdigit.patch12
-rw-r--r--user/dina/APKBUILD13
-rw-r--r--user/diskdev_cmds/APKBUILD22
-rw-r--r--user/distcc/APKBUILD13
-rw-r--r--user/distcc/distcc.pre-install5
-rw-r--r--user/distcc/heap.patch67
-rw-r--r--user/djvulibre/APKBUILD30
-rw-r--r--user/djvulibre/CVE-2019-15142.patch94
-rw-r--r--user/djvulibre/CVE-2019-15143.patch46
-rw-r--r--user/djvulibre/CVE-2019-15144.patch117
-rw-r--r--user/djvulibre/CVE-2019-15145.patch34
-rw-r--r--user/djvulibre/CVE-2019-18804.patch39
-rw-r--r--user/dmenu/APKBUILD36
-rw-r--r--user/dmidecode/APKBUILD17
-rw-r--r--user/dmraid/APKBUILD3
-rw-r--r--user/dnsmasq/APKBUILD39
-rw-r--r--user/dnsmasq/dnsmasq.confd4
-rw-r--r--user/dnsmasq/dnsmasq.initd29
-rw-r--r--user/dnsmasq/dnsmasq.pre-install7
-rw-r--r--user/doas/APKBUILD34
-rw-r--r--user/docbook2x/APKBUILD7
-rw-r--r--user/dolphin/APKBUILD13
-rw-r--r--user/dos2unix/APKBUILD27
-rw-r--r--user/dosbox/APKBUILD14
-rw-r--r--user/dosfstools/APKBUILD5
-rw-r--r--user/dotconf/APKBUILD8
-rw-r--r--user/dovecot/APKBUILD275
-rw-r--r--user/dovecot/CVE-2022-30550.patch155
-rw-r--r--user/dovecot/default-config.patch46
-rw-r--r--user/dovecot/dovecot.initd40
-rw-r--r--user/dovecot/dovecot.logrotate12
-rw-r--r--user/dovecot/dovecot.post-install45
-rw-r--r--user/dovecot/dovecot.post-upgrade7
-rw-r--r--user/dovecot/dovecot.pre-install8
-rw-r--r--user/dovecot/fix-time64.patch13
-rw-r--r--user/dovecot/skip-iconv-check.patch11
-rw-r--r--user/dovecot/split-protocols.patch30
-rw-r--r--user/dovecot/ssl-paths.patch13
-rw-r--r--user/dovecot/test-file-cache-enomem.patch20
-rw-r--r--user/doxygen/APKBUILD17
-rw-r--r--user/doxygen/doxygen-1.8.14-install.patch21
-rw-r--r--user/doxygen/time64.patch19
-rw-r--r--user/dracut/APKBUILD30
-rw-r--r--user/dracut/dracut.easy-boot14
-rw-r--r--user/dracut/fts.patch30
-rw-r--r--user/dragonplayer/APKBUILD11
-rw-r--r--user/drkonqi/APKBUILD44
-rw-r--r--user/drm_info/APKBUILD26
-rw-r--r--user/dtach/APKBUILD1
-rw-r--r--user/duktape/APKBUILD29
-rw-r--r--user/dumb-init/APKBUILD24
-rw-r--r--user/dwl/APKBUILD25
-rw-r--r--user/ebgaramond/APKBUILD3
-rw-r--r--user/ebook-tools/APKBUILD7
-rw-r--r--user/edid-decode/APKBUILD35
-rw-r--r--user/editres/APKBUILD11
-rw-r--r--user/efibootmgr/APKBUILD19
-rw-r--r--user/efibootmgr/fix-efiboot-includes.patch66
-rw-r--r--user/efivar/0001-makeguids-Ensure-compatibility-with-other-libcs.patch4
-rw-r--r--user/efivar/APKBUILD14
-rw-r--r--user/efivar/fix-musl-build.patch231
-rw-r--r--user/eggdbus/APKBUILD7
-rw-r--r--user/eigen/APKBUILD36
-rw-r--r--user/eigen/assert-compile-error.patch64
-rw-r--r--user/elixir/APKBUILD28
-rw-r--r--user/elogind/APKBUILD80
-rw-r--r--user/elogind/bad-tests.patch35
-rw-r--r--user/elogind/disable-cgroup-test.patch13
-rwxr-xr-xuser/elogind/dracut_module.sh18
-rw-r--r--user/elogind/elogind-252.9-musl-getdents.patch37
-rw-r--r--user/elogind/elogind-252.9-musl-gshadow.patch14
-rw-r--r--user/elogind/elogind-252.9-musl-lfs.patch52
-rw-r--r--user/elogind/elogind-252.9-musl-more-strerror_r.patch44
-rw-r--r--user/elogind/elogind-252.9-musl-statx.patch26
-rw-r--r--user/elogind/elogind.confd4
-rw-r--r--user/elogind/elogind.initd26
-rw-r--r--user/elogind/elogind.pamd18
-rw-r--r--user/elogind/elogind.post-deinstall3
-rw-r--r--user/elogind/elogind.post-install3
-rw-r--r--user/elogind/fix-rlim-fmt.patch40
-rw-r--r--user/elogind/fix-strerror.patch13
-rw-r--r--user/elogind/fix-test-bus-error.patch12
-rw-r--r--user/elogind/hostname-length.patch16
-rw-r--r--user/elogind/signal-include.patch13
-rw-r--r--user/elogind/utmps.patch68
-rw-r--r--user/emacs/APKBUILD21
-rw-r--r--user/encfs/APKBUILD50
-rw-r--r--user/encfs/cmake.patch72
-rw-r--r--user/encfs/length.patch22
-rw-r--r--user/encfs/shell.patch22
-rw-r--r--user/encfs/typos.patch44
-rw-r--r--user/encfs/utimensat.patch22
-rw-r--r--user/enchant/APKBUILD6
-rw-r--r--user/encodings/APKBUILD18
-rw-r--r--user/engrampa/APKBUILD14
-rw-r--r--user/eom/APKBUILD18
-rw-r--r--user/erl-rebar3/APKBUILD33
-rw-r--r--user/erlang/APKBUILD49
-rw-r--r--user/ers-symbols/APKBUILD3
-rw-r--r--user/essays1743/APKBUILD1
-rw-r--r--user/ethtool/APKBUILD19
-rw-r--r--user/eudev/APKBUILD35
-rw-r--r--user/evince/APKBUILD47
-rw-r--r--user/exfat-utils/APKBUILD3
-rw-r--r--user/exiv2/0000-pthread-init-fix.patch29
-rw-r--r--user/exiv2/0001-Amend-fix-for-9-to-apply-to-other-Unix-systems.patch36
-rw-r--r--user/exiv2/APKBUILD120
-rw-r--r--user/exiv2/CVE-2018-19535.patch239
-rw-r--r--user/exiv2/disable-icc-test.patch76
-rw-r--r--user/exiv2/musl-strerror.patch20
-rw-r--r--user/exo/APKBUILD22
-rw-r--r--user/extra-cmake-modules/APKBUILD25
-rw-r--r--user/extra-cmake-modules/posix.patch2
-rw-r--r--user/f2fs-tools/APKBUILD42
-rw-r--r--user/faad2/APKBUILD65
-rw-r--r--user/faad2/automake.patch11
-rw-r--r--user/faad2/fix-ensure-libraries-versioned.patch50
-rw-r--r--user/faad2/fix-x86-lrintf.patch11
-rw-r--r--user/fantasque-sans-mono/APKBUILD7
-rw-r--r--user/farstream/APKBUILD21
-rw-r--r--user/farstream/make43.patch38
-rw-r--r--user/fastfetch/APKBUILD42
-rw-r--r--user/fastjar/APKBUILD12
-rw-r--r--user/fastjar/CVE-2010-0831,2322.patch48
-rw-r--r--user/fastjar/efficiency.patch34
-rw-r--r--user/fastjar/fix-update-mode.patch44
-rw-r--r--user/fbset/APKBUILD30
-rw-r--r--user/fbset/types.patch14
-rw-r--r--user/fdupes/APKBUILD19
-rw-r--r--user/featherpad/APKBUILD17
-rw-r--r--user/featherpad/hunspell-link.patch11
-rw-r--r--user/feh/APKBUILD16
-rw-r--r--user/feh/getopt.patch100
-rw-r--r--user/felinks/APKBUILD48
-rw-r--r--user/felinks/gettext-tiny.patch14
-rw-r--r--user/ffmpeg/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch2
-rw-r--r--user/ffmpeg/APKBUILD32
-rw-r--r--user/ffmpeg/fix-avcodec-x86-mathops-binutils-241.patch76
-rw-r--r--user/ffmpegthumbnailer/APKBUILD16
-rw-r--r--user/ffmpegthumbs/APKBUILD15
-rw-r--r--user/fftw/APKBUILD17
-rw-r--r--user/fftw/clock-sgi-cycle.patch70
-rw-r--r--user/fifth-leg/APKBUILD3
-rw-r--r--user/figlet/APKBUILD8
-rw-r--r--user/fira-code/APKBUILD5
-rw-r--r--user/fira/APKBUILD2
-rw-r--r--user/firefox-esr/0002-Use-C99-math-isfinite.patch17
-rw-r--r--user/firefox-esr/APKBUILD313
-rw-r--r--user/firefox-esr/bad-google-code.patch49
-rw-r--r--user/firefox-esr/disable-hunspell_hooks.patch11
-rw-r--r--user/firefox-esr/disable-moz-stackwalk.patch18
-rw-r--r--user/firefox-esr/ffmpeg4.patch13560
-rw-r--r--user/firefox-esr/fix-arm-atomics-grsec.patch306
-rw-r--r--user/firefox-esr/fix-arm-version-detect.patch13
-rw-r--r--user/firefox-esr/fix-fortify-inline.patch11
-rw-r--r--user/firefox-esr/fix-fortify-system-wrappers.patch13
-rw-r--r--user/firefox-esr/fix-mutex-build.patch20
-rw-r--r--user/firefox-esr/fix-seccomp-bpf.patch6
-rw-r--r--user/firefox-esr/fix-stack-overflow.patch45
-rw-r--r--user/firefox-esr/fix-toolkit.patch90
-rw-r--r--user/firefox-esr/fix-tools.patch50
-rw-r--r--user/firefox-esr/icu-75.patch41
-rw-r--r--user/firefox-esr/jpeg-link.patch25
-rw-r--r--user/firefox-esr/js-endian.patch33
-rw-r--r--user/firefox-esr/mallinfo.patch20
-rw-r--r--user/firefox-esr/missing-header-s390x.patch12
-rw-r--r--user/firefox-esr/mozconfig26
-rw-r--r--user/firefox-esr/mozilla-build-arm.patch4
-rw-r--r--user/firefox-esr/musl-pthread-setname.patch14
-rw-r--r--user/firefox-esr/pmmx-double-format.patch16
-rw-r--r--user/firefox-esr/ppc32-fix.patch43
-rw-r--r--user/firefox-esr/python3.patch10397
-rw-r--r--user/firefox-esr/rust-32bit.patch30
-rw-r--r--user/firefox-esr/shut-up-warning.patch6
-rw-r--r--user/firefox-esr/skia-endian.patch112
-rw-r--r--user/firefox-esr/skia-unified.patch786
-rw-r--r--user/firefox-esr/stab.h71
-rw-r--r--user/firefox-esr/stackwalk-x86-ppc.patch16
-rw-r--r--user/firefox-esr/webrender.patch28
-rw-r--r--user/firefox-esr/without-jit.patch28
-rw-r--r--user/fish/APKBUILD42
-rw-r--r--user/flac/APKBUILD24
-rw-r--r--user/flameshot/APKBUILD40
-rw-r--r--user/flite/APKBUILD25
-rw-r--r--user/fltk/APKBUILD16
-rw-r--r--user/fluidsynth/APKBUILD8
-rw-r--r--user/fluxbox/APKBUILD13
-rw-r--r--user/fluxbox/modern-c.patch25
-rw-r--r--user/font-adobe-100dpi/APKBUILD12
-rw-r--r--user/font-adobe-75dpi/APKBUILD12
-rw-r--r--user/font-adobe-utopia-100dpi/APKBUILD12
-rw-r--r--user/font-adobe-utopia-75dpi/APKBUILD12
-rw-r--r--user/font-adobe-utopia-type1/APKBUILD12
-rw-r--r--user/font-alias/APKBUILD18
-rw-r--r--user/font-arabic-misc/APKBUILD12
-rw-r--r--user/font-bh-100dpi/APKBUILD12
-rw-r--r--user/font-bh-75dpi/APKBUILD12
-rw-r--r--user/font-bh-lucidatypewriter-100dpi/APKBUILD12
-rw-r--r--user/font-bh-lucidatypewriter-75dpi/APKBUILD12
-rw-r--r--user/font-bitstream-100dpi/APKBUILD12
-rw-r--r--user/font-bitstream-75dpi/APKBUILD12
-rw-r--r--user/font-bitstream-speedo/APKBUILD6
-rw-r--r--user/font-bitstream-type1/APKBUILD12
-rw-r--r--user/font-cronyx-cyrillic/APKBUILD12
-rw-r--r--user/font-cursor-misc/APKBUILD14
-rw-r--r--user/font-daewoo-misc/APKBUILD12
-rw-r--r--user/font-dec-misc/APKBUILD12
-rw-r--r--user/font-isas-misc/APKBUILD12
-rw-r--r--user/font-jis-misc/APKBUILD12
-rw-r--r--user/font-micro-misc/APKBUILD12
-rw-r--r--user/font-misc-cyrillic/APKBUILD14
-rw-r--r--user/font-misc-ethiopic/APKBUILD17
-rw-r--r--user/font-misc-misc/APKBUILD16
-rw-r--r--user/font-mutt-misc/APKBUILD12
-rw-r--r--user/font-schumacher-misc/APKBUILD12
-rw-r--r--user/font-screen-cyrillic/APKBUILD12
-rw-r--r--user/font-sony-misc/APKBUILD16
-rw-r--r--user/font-sun-misc/APKBUILD12
-rw-r--r--user/font-util/APKBUILD13
-rw-r--r--user/font-winitzki-cyrillic/APKBUILD12
-rw-r--r--user/font-xfree86-type1/APKBUILD10
-rw-r--r--user/fontawesome/APKBUILD5
-rw-r--r--user/fontconfig/APKBUILD42
-rw-r--r--user/fontconfig/disable-crbug.patch13
-rw-r--r--user/fontforge/APKBUILD55
-rw-r--r--user/fontforge/python3.patch197
-rw-r--r--user/fonttosfnt/APKBUILD9
-rw-r--r--user/fortune-mod/APKBUILD26
-rw-r--r--user/frameworkintegration/APKBUILD9
-rw-r--r--user/free42/APKBUILD4
-rw-r--r--user/free42/patch.patch8
-rw-r--r--user/freealut/APKBUILD20
-rw-r--r--user/freecell-solver/APKBUILD19
-rw-r--r--user/freeglut/APKBUILD32
-rw-r--r--user/freeglut/glvnd.patch13
-rw-r--r--user/freetds/APKBUILD18
-rw-r--r--user/freetype/APKBUILD17
-rw-r--r--user/frei0r-plugins/APKBUILD14
-rw-r--r--user/frei0r-plugins/facebl0r-opencv-3.4.3.patch22
-rw-r--r--user/fribidi/APKBUILD9
-rw-r--r--user/fslsfonts/APKBUILD9
-rw-r--r--user/fstobdf/APKBUILD9
-rw-r--r--user/ftmenu/APKBUILD16
-rw-r--r--user/fts/00-static-and-shared-libs.patch49
-rw-r--r--user/fts/APKBUILD46
-rw-r--r--user/fuse-exfat/APKBUILD3
-rw-r--r--user/fuse/APKBUILD8
-rw-r--r--user/fuse3/APKBUILD22
-rw-r--r--user/gambit-c/APKBUILD85
-rw-r--r--user/gambit-c/fix-incompatible-stat-usage.patch21
-rw-r--r--user/gambit-c/reproducibility.patch52
-rw-r--r--user/gamin/APKBUILD19
-rw-r--r--user/gamin/deadlock.patch65
-rw-r--r--user/garcon/APKBUILD21
-rw-r--r--user/gavl/APKBUILD5
-rw-r--r--user/gc/APKBUILD12
-rw-r--r--user/gcompat/APKBUILD18
-rw-r--r--user/gcompat/no-utmp.patch16
-rw-r--r--user/gcompris-qt/APKBUILD10
-rw-r--r--user/gconf/APKBUILD13
-rw-r--r--user/gcr3/APKBUILD39
-rw-r--r--user/gdbm/APKBUILD9
-rw-r--r--user/gdk-pixbuf/APKBUILD25
-rw-r--r--user/gdk-pixbuf/fix-pkgconfig.patch11
-rw-r--r--user/genext2fs/APKBUILD36
-rw-r--r--user/genmenu/APKBUILD5
-rw-r--r--user/gi-docgen/APKBUILD35
-rw-r--r--user/giblib/APKBUILD12
-rw-r--r--user/gidole/APKBUILD3
-rw-r--r--user/giflib/APKBUILD25
-rw-r--r--user/giflib/xmlto-skip-validation.patch19
-rw-r--r--user/gigolo/APKBUILD34
-rw-r--r--user/gitlab-runner/APKBUILD86
-rw-r--r--user/gitlab-runner/disable-crap.patch22
-rw-r--r--user/gitlab-runner/gccgo.patch68
-rw-r--r--user/gitlab-runner/gitlab-runner.confd17
-rw-r--r--user/gitlab-runner/gitlab-runner.initd46
-rw-r--r--user/gitlab-runner/gitlab-runner.pre-install7
-rw-r--r--user/gitlab-runner/tests.patch28
-rw-r--r--user/glass-tty-vt220/APKBUILD7
-rw-r--r--user/gleam/APKBUILD562
-rw-r--r--user/glew/APKBUILD17
-rw-r--r--user/glew/mesa-compat.patch53
-rw-r--r--user/glfw/APKBUILD45
-rw-r--r--user/glib-networking/APKBUILD30
-rw-r--r--user/glib-networking/disable-gnome-test.patch14
-rw-r--r--user/glib-networking/glib-networking-2.60-new-gnutls-cert-error-fix.patch31
-rw-r--r--user/glib-networking/proxy-test.patch13
-rw-r--r--user/glib-networking/tls13.patch87
-rw-r--r--user/glib/0001-gquark-fix-initialization-with-c-constructors.patch2
-rw-r--r--user/glib/APKBUILD54
-rw-r--r--user/glib/broken-gio-tests.patch31
-rw-r--r--user/glib/fix-spawn.patch22
-rw-r--r--user/glib/i386-fpu-test.patch2
-rw-r--r--user/glib/meson-sucks-and-i-hate-you-so-much-right-now.patch8
-rw-r--r--user/glib/musl-no-locale.patch38
-rw-r--r--user/glib/ridiculous-strerror-nonconformance.patch2
-rw-r--r--user/glib/sigstksz.patch20
-rw-r--r--user/glibmm/APKBUILD31
-rw-r--r--user/glm/APKBUILD24
-rw-r--r--user/glpk/APKBUILD32
-rw-r--r--user/glslang/APKBUILD43
-rw-r--r--user/glslang/remap-endian.patch46
-rw-r--r--user/glu/APKBUILD18
-rw-r--r--user/gmime/3.2.3-broken-tests.patch2
-rw-r--r--user/gmime/APKBUILD28
-rw-r--r--user/gnu-ghostscript/APKBUILD11
-rw-r--r--user/gnu-ghostscript/ft-callback-def.patch19
-rw-r--r--user/gnu-ghostscript/locksafe.patch25
-rw-r--r--user/gnu-netcat/APKBUILD37
-rw-r--r--user/gnucobol/0001-move-packed-decimal.patch30
-rw-r--r--user/gnucobol/0002-errno.patch26
-rw-r--r--user/gnucobol/APKBUILD58
-rw-r--r--user/gnumeric/APKBUILD19
-rw-r--r--user/gnumeric/cs.patch11
-rw-r--r--user/gnupg/APKBUILD31
-rw-r--r--user/gnupg/fix-i18n.patch12
-rw-r--r--user/gnupg/t5993-d556-disallow-compressed.patch171
-rw-r--r--user/gnutls/APKBUILD39
-rw-r--r--user/gnutls/disable-certtool-test.patch34
-rw-r--r--user/gnutls/gnulib-tests-dont-require-gpg-passphrase.patch10
-rw-r--r--user/gobject-introspection/APKBUILD30
-rw-r--r--user/gobject-introspection/musl-time64.patch37
-rw-r--r--user/gobject-introspection/support-cross-filesystem-move.patch11
-rw-r--r--user/gobject-introspection/we-are-in-a-pickle.patch28
-rw-r--r--user/goffice/APKBUILD12
-rw-r--r--user/gperf/APKBUILD7
-rw-r--r--user/gpgme/1.12.0-fix-t-tofuinfo.patch100
-rw-r--r--user/gpgme/APKBUILD30
-rw-r--r--user/gpgme/initialize-err-variable.patch26
-rw-r--r--user/gpgme/test32bit.patch93
-rw-r--r--user/gprbuild/APKBUILD55
-rw-r--r--user/gprbuild/foxkit.xml17
-rw-r--r--user/gptfdisk/APKBUILD14
-rw-r--r--user/gptfdisk/ncurses.patch14
-rw-r--r--user/granatier/APKBUILD11
-rw-r--r--user/grantlee/APKBUILD23
-rw-r--r--user/grantlee/enum-comparators.patch14
-rw-r--r--user/grantlee/x87fpu.patch42
-rw-r--r--user/grantleetheme/APKBUILD46
-rw-r--r--user/grantleetheme/colour.patch16
-rw-r--r--user/graphene/APKBUILD34
-rw-r--r--user/graphene/installed-tests.patch28
-rw-r--r--user/graphite2/APKBUILD17
-rw-r--r--user/graphviz/0001-clone-nameclash.patch18
-rw-r--r--user/graphviz/APKBUILD56
-rw-r--r--user/grfcodec/APKBUILD28
-rw-r--r--user/grfcodec/va_copy.patch16
-rw-r--r--user/groff/APKBUILD38
-rw-r--r--user/grub/0002-revert-gawk.patch19
-rw-r--r--user/grub/0010-fix-gcc-no-pie-specs.patch (renamed from user/grub/fix-gcc-no-pie-specs.patch)7
-rw-r--r--user/grub/2.02_beta3-mkconfig-alpine.patch30
-rw-r--r--user/grub/APKBUILD124
-rw-r--r--user/grub/adelie-branding.patch25
-rw-r--r--user/grub/default-grub18
-rw-r--r--user/grub/grub.post-upgrade38
-rw-r--r--user/grub/grub2-accept-empty-module.patch10
-rw-r--r--user/grub/quirk-01_radeon_agpmode28
-rw-r--r--user/grub/update-grub17
-rw-r--r--user/grub/xfs.patch56
-rw-r--r--user/gsettings-desktop-schemas/APKBUILD33
-rw-r--r--user/gsl/APKBUILD53
-rw-r--r--user/gsl/aarch64-test-failure.patch13
-rw-r--r--user/gsl/dont-disable-deprecated.patch24
-rw-r--r--user/gsl/static-inline.patch12
-rw-r--r--user/gsm/APKBUILD6
-rw-r--r--user/gspell/APKBUILD38
-rw-r--r--user/gst-plugins-bad/APKBUILD45
-rw-r--r--user/gst-plugins-bad/camerabin.patch13
-rw-r--r--user/gst-plugins-bad/curlhttpsrc.patch11
-rw-r--r--user/gst-plugins-base/APKBUILD60
-rw-r--r--user/gst-plugins-base/endian.patch40
-rw-r--r--user/gst-plugins-good/APKBUILD39
-rw-r--r--user/gst-plugins-good/endian-test.patch20
-rw-r--r--user/gst-plugins-good/flvmux-disable-flaky-test.patch15
-rw-r--r--user/gstreamer/APKBUILD62
-rw-r--r--user/gtest/APKBUILD38
-rw-r--r--user/gtk+/APKBUILD23
-rw-r--r--user/gtk+2.0/APKBUILD54
-rw-r--r--user/gtk+2.0/automake.patch19
-rw-r--r--user/gtk+3.0/APKBUILD17
-rw-r--r--user/gtk+3.0/releng-what-releng.patch12
-rw-r--r--user/gtk-doc/0001-tests-Label-parts-with-decimals-not-roman-numerals.patch76
-rw-r--r--user/gtk-doc/APKBUILD29
-rw-r--r--user/gtk-layer-shell/APKBUILD34
-rw-r--r--user/gtk4/APKBUILD51
-rw-r--r--user/gtk4/vulkan-nullref.patch69
-rw-r--r--user/gtkmm+3.0/APKBUILD34
-rw-r--r--user/gtksourceview-3.0/APKBUILD14
-rw-r--r--user/gtksourceview4/APKBUILD39
-rw-r--r--user/gtkspell/APKBUILD12
-rw-r--r--user/gucharmap/APKBUILD35
-rw-r--r--user/guile/APKBUILD24
-rw-r--r--user/guile20/0002-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch29
-rw-r--r--user/guile20/APKBUILD37
-rw-r--r--user/gutenprint/APKBUILD13
-rw-r--r--user/gvfs/APKBUILD45
-rw-r--r--user/gvim/APKBUILD42
-rw-r--r--user/gwenview/APKBUILD15
-rw-r--r--user/gxmessage/APKBUILD8
-rw-r--r--user/harfbuzz/APKBUILD41
-rw-r--r--user/haveged/APKBUILD25
-rw-r--r--user/haveged/fix-cpu-cache-size-detection.patch15
-rw-r--r--user/hdparm/APKBUILD11
-rw-r--r--user/hermit/APKBUILD8
-rw-r--r--user/heuristica-otf/APKBUILD4
-rw-r--r--user/hexchat/APKBUILD36
-rw-r--r--user/hfsutils/APKBUILD42
-rw-r--r--user/hfsutils/fix-missing-header.patch11
-rw-r--r--user/hicolor-icon-theme/APKBUILD4
-rw-r--r--user/highlight/APKBUILD9
-rw-r--r--user/hiredis/APKBUILD40
-rw-r--r--user/horizon/APKBUILD166
-rw-r--r--user/horizon/ppc32-apm.patch29
-rw-r--r--user/htop/APKBUILD28
-rw-r--r--user/htop/fix-python-path.patch8
-rw-r--r--user/http-parser/APKBUILD12
-rw-r--r--user/http-parser/remove-bogus-sizeof-test.patch14
-rw-r--r--user/humor-sans/APKBUILD4
-rw-r--r--user/hunkyfonts/APKBUILD3
-rw-r--r--user/hunspell/APKBUILD21
-rw-r--r--user/hunspell/CVE-2019-16707.patch22
-rw-r--r--user/hwdata/APKBUILD38
-rw-r--r--user/hwids/APKBUILD70
-rw-r--r--user/hyfetch/APKBUILD33
-rw-r--r--user/hyfetch/no-typing-extensions.patch21
-rw-r--r--user/hyfetch/python3.patch16
-rw-r--r--user/hyperfine/APKBUILD376
-rw-r--r--user/hyphen/APKBUILD6
-rw-r--r--user/i3lock/APKBUILD33
-rw-r--r--user/i3status/APKBUILD40
-rw-r--r--user/i3status/asciidoctor.patch50
-rw-r--r--user/i3status/glob_tilde.patch38
-rw-r--r--user/i3wm/APKBUILD39
-rw-r--r--user/i3wm/i3wm-musl-glob-tilde.patch14
-rw-r--r--user/i3wm/i3wm-test-disable-branch-check.patch10
-rw-r--r--user/iceauth/APKBUILD17
-rw-r--r--user/icewm/APKBUILD29
-rw-r--r--user/ico/APKBUILD9
-rw-r--r--user/icon-naming-utils/APKBUILD5
-rw-r--r--user/id3lib/APKBUILD13
-rw-r--r--user/id3lib/CVE-2007-4460.patch54
-rw-r--r--user/ido/APKBUILD27
-rw-r--r--user/ido/ubuntu-private.patch70
-rw-r--r--user/ifupdown-ng/APKBUILD110
-rw-r--r--user/ifupdown-ng/ifupdown-ng.initd91
-rw-r--r--user/imagemagick/APKBUILD17
-rw-r--r--user/imake/APKBUILD15
-rw-r--r--user/imlib2/APKBUILD18
-rw-r--r--user/imlib2/loader-build.patch26
-rw-r--r--user/inconsolata-lgc/APKBUILD3
-rw-r--r--user/inih/APKBUILD38
-rw-r--r--user/inih/testrun.patch185
-rw-r--r--user/inotify-tools/APKBUILD36
-rw-r--r--user/intlfonts/APKBUILD5
-rw-r--r--user/intltool/APKBUILD4
-rw-r--r--user/iotop-c/APKBUILD27
-rw-r--r--user/ipaexfont/APKBUILD12
-rw-r--r--user/iperf3/APKBUILD12
-rw-r--r--user/iperf3/remove-pg-flags.patch29
-rw-r--r--user/ipmiutil/APKBUILD18
-rw-r--r--user/iptables/APKBUILD67
-rw-r--r--user/iptables/ip6tables.confd14
-rw-r--r--user/iptables/iptables.confd14
-rw-r--r--user/iptables/iptables.initd136
-rw-r--r--user/iputils/APKBUILD60
-rw-r--r--user/iputils/fix-idn.patch14
-rw-r--r--user/iputils/fix-init-of-cmsg.patch20
-rw-r--r--user/iputils/time.patch10
-rw-r--r--user/irssi/APKBUILD23
-rw-r--r--user/irssi/fix-ridiculous-egregious-conformance-error.patch19
-rw-r--r--user/iso-codes/APKBUILD12
-rw-r--r--user/isync/APKBUILD12
-rw-r--r--user/itstool/APKBUILD42
-rw-r--r--user/itstool/fix-segfault.patch25
-rw-r--r--user/iw/APKBUILD27
-rw-r--r--user/jansson/APKBUILD34
-rw-r--r--user/jasper/APKBUILD34
-rw-r--r--user/java-cacerts/APKBUILD2
-rw-r--r--user/java-common/APKBUILD11
-rw-r--r--user/java-common/java.profd2
-rw-r--r--user/jomolhari/APKBUILD4
-rw-r--r--user/jpegoptim/APKBUILD3
-rw-r--r--user/jq/APKBUILD34
-rw-r--r--user/json-c/APKBUILD36
-rw-r--r--user/json-glib/APKBUILD15
-rw-r--r--user/json/APKBUILD36
-rw-r--r--user/juk/APKBUILD13
-rw-r--r--user/kacst_fonts/APKBUILD3
-rw-r--r--user/kactivities-stats/APKBUILD26
-rw-r--r--user/kactivities/APKBUILD28
-rw-r--r--user/kactivitymanagerd/APKBUILD25
-rw-r--r--user/kaddressbook/APKBUILD47
-rw-r--r--user/kaffeine/APKBUILD13
-rw-r--r--user/kalgebra/APKBUILD11
-rw-r--r--user/kalzium/APKBUILD11
-rw-r--r--user/kamera/APKBUILD39
-rw-r--r--user/kamoso/APKBUILD46
-rw-r--r--user/kanagram/APKBUILD11
-rw-r--r--user/kanjistrokeorders/APKBUILD6
-rw-r--r--user/kapman/APKBUILD11
-rw-r--r--user/kapptemplate/APKBUILD42
-rw-r--r--user/karchive/APKBUILD13
-rw-r--r--user/kate/APKBUILD21
-rw-r--r--user/katomic/APKBUILD11
-rw-r--r--user/kauth/APKBUILD17
-rw-r--r--user/kblackbox/APKBUILD11
-rw-r--r--user/kblocks/APKBUILD14
-rw-r--r--user/kbookmarks/APKBUILD12
-rw-r--r--user/kbounce/APKBUILD11
-rw-r--r--user/kbreakout/APKBUILD11
-rw-r--r--user/kbruch/APKBUILD11
-rw-r--r--user/kcachegrind/APKBUILD11
-rw-r--r--user/kcalc/APKBUILD13
-rw-r--r--user/kcalcore/APKBUILD44
-rw-r--r--user/kcalendarcore/APKBUILD62
-rw-r--r--user/kcharselect/APKBUILD11
-rw-r--r--user/kcmutils/APKBUILD14
-rw-r--r--user/kcodecs/APKBUILD13
-rw-r--r--user/kcolorchooser/APKBUILD11
-rw-r--r--user/kcompletion/APKBUILD11
-rw-r--r--user/kconfig/APKBUILD16
-rw-r--r--user/kconfigwidgets/APKBUILD17
-rw-r--r--user/kcontacts/APKBUILD23
-rw-r--r--user/kcoreaddons/APKBUILD14
-rw-r--r--user/kcoreaddons/utf8.patch17
-rw-r--r--user/kcrash/APKBUILD11
-rw-r--r--user/kdbusaddons/APKBUILD11
-rw-r--r--user/kde-cli-tools/APKBUILD16
-rw-r--r--user/kde-development/APKBUILD21
-rw-r--r--user/kde-development/org.adelie-linux.about-development.desktop8
-rw-r--r--user/kde-education/APKBUILD7
-rw-r--r--user/kde-games/APKBUILD14
-rw-r--r--user/kde-graphics/APKBUILD7
-rw-r--r--user/kde-gtk-config/APKBUILD20
-rw-r--r--user/kde-internet/APKBUILD21
-rw-r--r--user/kde-internet/org.adelie-linux.about-internet.desktop8
-rw-r--r--user/kde-multimedia/APKBUILD5
-rw-r--r--user/kde-system/APKBUILD6
-rw-r--r--user/kde-utilities/APKBUILD2
-rw-r--r--user/kde/APKBUILD13
-rw-r--r--user/kdebugsettings/APKBUILD41
-rw-r--r--user/kdeclarative/APKBUILD14
-rw-r--r--user/kdecoration/APKBUILD15
-rw-r--r--user/kded/APKBUILD11
-rw-r--r--user/kdegraphics-thumbnailers/APKBUILD12
-rw-r--r--user/kdelibs4support/APKBUILD11
-rw-r--r--user/kdenlive/APKBUILD21
-rw-r--r--user/kdeplasma-addons/APKBUILD29
-rw-r--r--user/kdesignerplugin/APKBUILD17
-rw-r--r--user/kdesu/APKBUILD12
-rw-r--r--user/kdesvn/APKBUILD45
-rw-r--r--user/kdevelop-pg-qt/APKBUILD39
-rw-r--r--user/kdevelop/APKBUILD56
-rw-r--r--user/kdevelop/libarchive-tar.patch30
-rw-r--r--user/kdewebkit/APKBUILD13
-rw-r--r--user/kdf/APKBUILD11
-rw-r--r--user/kdiagram/APKBUILD14
-rw-r--r--user/kdiamond/APKBUILD11
-rw-r--r--user/kdiff3/APKBUILD48
-rw-r--r--user/kdnssd/APKBUILD12
-rw-r--r--user/kdoctools/APKBUILD13
-rw-r--r--user/keepassxc/APKBUILD33
-rw-r--r--user/kemoticons/APKBUILD12
-rw-r--r--user/keybinder-3.0/APKBUILD8
-rw-r--r--user/keychain/APKBUILD8
-rw-r--r--user/keyutils/APKBUILD7
-rw-r--r--user/kfilemetadata/APKBUILD11
-rw-r--r--user/kfind/APKBUILD11
-rw-r--r--user/kfloppy/APKBUILD11
-rw-r--r--user/kfourinline/APKBUILD11
-rw-r--r--user/kgamma5/APKBUILD13
-rw-r--r--user/kgeography/APKBUILD11
-rw-r--r--user/kget/APKBUILD15
-rw-r--r--user/kglobalaccel/APKBUILD14
-rw-r--r--user/kgoldrunner/APKBUILD11
-rw-r--r--user/kgpg/APKBUILD16
-rw-r--r--user/kgpg/find-gpgme-with-pkg-config-first.patch68
-rw-r--r--user/kgraphviewer/APKBUILD7
-rw-r--r--user/kguiaddons/APKBUILD15
-rw-r--r--user/khangman/APKBUILD11
-rw-r--r--user/khelpcenter/APKBUILD11
-rw-r--r--user/khmeros-fonts/APKBUILD3
-rw-r--r--user/kholidays/APKBUILD14
-rw-r--r--user/khotkeys/APKBUILD16
-rw-r--r--user/khtml/APKBUILD9
-rw-r--r--user/ki18n/APKBUILD12
-rw-r--r--user/ki18n/libintl.patch116
-rw-r--r--user/kiconthemes/APKBUILD9
-rw-r--r--user/kidentitymanagement/APKBUILD42
-rw-r--r--user/kidletime/APKBUILD11
-rw-r--r--user/kig/APKBUILD13
-rw-r--r--user/kigo/APKBUILD11
-rw-r--r--user/killbots/APKBUILD11
-rw-r--r--user/kimap/APKBUILD41
-rw-r--r--user/kinfocenter/APKBUILD17
-rw-r--r--user/kinit/APKBUILD8
-rw-r--r--user/kio-extras/APKBUILD18
-rw-r--r--user/kio/APKBUILD21
-rw-r--r--user/kio/cxx17.patch21
-rw-r--r--user/kio/strcpy-ppc.patch10
-rw-r--r--user/kirigami-gallery/APKBUILD40
-rw-r--r--user/kirigami2/APKBUILD21
-rw-r--r--user/kiriki/APKBUILD11
-rw-r--r--user/kitemmodels/APKBUILD9
-rw-r--r--user/kitemviews/APKBUILD11
-rw-r--r--user/kiten/APKBUILD11
-rw-r--r--user/kjobwidgets/APKBUILD12
-rw-r--r--user/kjs/APKBUILD11
-rw-r--r--user/kjsembed/APKBUILD9
-rw-r--r--user/kjumpingcube/APKBUILD11
-rw-r--r--user/kldap/APKBUILD42
-rw-r--r--user/kleopatra/APKBUILD13
-rw-r--r--user/klettres/APKBUILD11
-rw-r--r--user/klickety/APKBUILD11
-rw-r--r--user/klines/APKBUILD11
-rw-r--r--user/kmag/APKBUILD13
-rw-r--r--user/kmahjongg/APKBUILD11
-rw-r--r--user/kmediaplayer/APKBUILD9
-rw-r--r--user/kmenuedit/APKBUILD14
-rw-r--r--user/kmime/APKBUILD16
-rw-r--r--user/kmines/APKBUILD11
-rw-r--r--user/kmix/APKBUILD11
-rw-r--r--user/kmousetool/APKBUILD11
-rw-r--r--user/kmplot/APKBUILD13
-rw-r--r--user/knavalbattle/APKBUILD11
-rw-r--r--user/knetwalk/APKBUILD11
-rw-r--r--user/knewstuff/APKBUILD25
-rw-r--r--user/knewstuff/backport.patch54
-rw-r--r--user/knotifications/APKBUILD14
-rw-r--r--user/knotifyconfig/APKBUILD14
-rw-r--r--user/kolf/APKBUILD15
-rw-r--r--user/kollision/APKBUILD11
-rw-r--r--user/kolourpaint/APKBUILD11
-rw-r--r--user/kompare/APKBUILD43
-rw-r--r--user/konquest/APKBUILD11
-rw-r--r--user/konsole/APKBUILD15
-rw-r--r--user/konsole/cursor.patch87
-rw-r--r--user/konsole/musl.patch87
-rw-r--r--user/kontactinterface/APKBUILD41
-rw-r--r--user/konversation/APKBUILD9
-rw-r--r--user/kopete/APKBUILD44
-rw-r--r--user/koruri/APKBUILD5
-rw-r--r--user/kpackage/APKBUILD14
-rw-r--r--user/kparts/APKBUILD17
-rw-r--r--user/kpartx/APKBUILD31
-rwxr-xr-xuser/kpartx/test-kpartx395
-rw-r--r--user/kpat/APKBUILD14
-rw-r--r--user/kpeople/APKBUILD14
-rw-r--r--user/kpeople/dont-crash-test.patch12
-rw-r--r--user/kphotoalbum/APKBUILD17
-rw-r--r--user/kpimtextedit/APKBUILD11
-rw-r--r--user/kplotting/APKBUILD9
-rw-r--r--user/kpmcore/APKBUILD20
-rw-r--r--user/kpmcore/filesystem.patch10
-rw-r--r--user/kpmcore/test.patch42
-rw-r--r--user/kpty/APKBUILD14
-rw-r--r--user/kquickcharts/APKBUILD42
-rw-r--r--user/krb5-conf/APKBUILD2
-rw-r--r--user/krb5/APKBUILD29
-rw-r--r--user/krb5/mit-krb5_krb5-config_LDFLAGS.patch12
-rw-r--r--user/krdc/APKBUILD14
-rw-r--r--user/kreversi/APKBUILD11
-rw-r--r--user/krfb/APKBUILD14
-rw-r--r--user/krita/APKBUILD31
-rw-r--r--user/krita/fix-nullptr-deref.patch73
-rw-r--r--user/kronometer/APKBUILD9
-rw-r--r--user/kross/APKBUILD9
-rw-r--r--user/kruler/APKBUILD11
-rw-r--r--user/krunner/APKBUILD13
-rw-r--r--user/krusader/APKBUILD11
-rw-r--r--user/krusader/posix-headers.patch4
-rw-r--r--user/kscreen/APKBUILD43
-rw-r--r--user/kscreenlocker/APKBUILD19
-rw-r--r--user/kservice/APKBUILD20
-rw-r--r--user/kshisen/APKBUILD11
-rw-r--r--user/ksirk/APKBUILD11
-rw-r--r--user/ksmtp/APKBUILD41
-rw-r--r--user/ksnakeduel/APKBUILD11
-rw-r--r--user/kspaceduel/APKBUILD11
-rw-r--r--user/ksquares/APKBUILD11
-rw-r--r--user/ksshaskpass/APKBUILD11
-rw-r--r--user/kst/6a41644c39ffb394c350de3dacbacdffa54a0a2a-fix-cmake.patch29
-rw-r--r--user/kst/APKBUILD16
-rw-r--r--user/kst/qt5.patch47
-rw-r--r--user/kstars/0001-htmesh-Fix-compile-error-on-modern-Linux-systems.patch25
-rw-r--r--user/kstars/APKBUILD31
-rw-r--r--user/ksudoku/APKBUILD11
-rw-r--r--user/ksysguard/0001-Linux-softraid-define-_GNU_SOURCE-for-pipe2.patch31
-rw-r--r--user/ksysguard/APKBUILD49
-rw-r--r--user/ksysguard/ksysguard-5.6.5-rindex-header.patch10
-rw-r--r--user/ksystemlog/APKBUILD11
-rw-r--r--user/ksystemstats/APKBUILD42
-rw-r--r--user/kteatime/APKBUILD11
-rw-r--r--user/ktexteditor/APKBUILD17
-rw-r--r--user/ktextwidgets/APKBUILD12
-rw-r--r--user/ktimer/APKBUILD11
-rw-r--r--user/ktorrent/APKBUILD11
-rw-r--r--user/ktouch/APKBUILD13
-rw-r--r--user/ktuberling/APKBUILD11
-rw-r--r--user/kturtle/APKBUILD11
-rw-r--r--user/kubrick/APKBUILD11
-rw-r--r--user/kunitconversion/APKBUILD9
-rw-r--r--user/kuserfeedback/APKBUILD42
-rw-r--r--user/kwallet/APKBUILD11
-rw-r--r--user/kwallet/kwallet-5.22.0-blowfish-endianness.patch13
-rw-r--r--user/kwalletmanager/APKBUILD13
-rw-r--r--user/kwave/APKBUILD13
-rw-r--r--user/kwave/es-doc-fix.patch101
-rw-r--r--user/kwayland-server/APKBUILD43
-rw-r--r--user/kwayland/APKBUILD14
-rw-r--r--user/kwidgetsaddons/APKBUILD9
-rw-r--r--user/kwin/APKBUILD44
-rw-r--r--user/kwindowsystem/APKBUILD11
-rw-r--r--user/kwordquiz/APKBUILD11
-rw-r--r--user/kxmlgui/APKBUILD16
-rw-r--r--user/kxmlrpcclient/APKBUILD11
-rw-r--r--user/kxstitch/APKBUILD10
-rw-r--r--user/kyua/APKBUILD34
-rw-r--r--user/labplot/APKBUILD22
-rw-r--r--user/labplot/liborigin-endian.patch26
-rw-r--r--user/ladspa/APKBUILD18
-rw-r--r--user/ladspa/fallback-ladspa-path.patch27
-rw-r--r--user/lame/APKBUILD14
-rw-r--r--user/latte-dock/APKBUILD44
-rw-r--r--user/layer-shell-qt/APKBUILD40
-rw-r--r--user/lbxproxy/APKBUILD45
-rw-r--r--user/lcms2/APKBUILD15
-rw-r--r--user/lcov/APKBUILD27
-rw-r--r--user/lesscpy/APKBUILD11
-rw-r--r--user/libaacs/APKBUILD9
-rw-r--r--user/libabw/APKBUILD7
-rw-r--r--user/libao/APKBUILD4
-rw-r--r--user/libart-lgpl/APKBUILD6
-rw-r--r--user/libass/APKBUILD12
-rw-r--r--user/libassuan/APKBUILD3
-rw-r--r--user/libatasmart/APKBUILD7
-rw-r--r--user/libatomic_ops/APKBUILD5
-rw-r--r--user/libavc1394/APKBUILD16
-rw-r--r--user/libavc1394/argp.patch2
-rw-r--r--user/libayatana-indicator/APKBUILD15
-rw-r--r--user/libblockdev/APKBUILD7
-rw-r--r--user/libbluray/APKBUILD8
-rw-r--r--user/libbsd/0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch366
-rw-r--r--user/libbsd/APKBUILD54
-rw-r--r--user/libbsd/disable-fpurge-test.patch10
-rw-r--r--user/libbsd/headers.patch10
-rw-r--r--user/libburn/APKBUILD12
-rw-r--r--user/libbytesize/APKBUILD15
-rw-r--r--user/libcanberra/APKBUILD11
-rw-r--r--user/libcddb/APKBUILD9
-rw-r--r--user/libcdio-paranoia/APKBUILD22
-rw-r--r--user/libcdio-paranoia/pkg-version-format.patch14
-rw-r--r--user/libcdio/APKBUILD9
-rw-r--r--user/libcdr/APKBUILD14
-rw-r--r--user/libcmis/APKBUILD11
-rw-r--r--user/libcmis/icu.patch17
-rw-r--r--user/libconfig/APKBUILD4
-rw-r--r--user/libcroco/APKBUILD16
-rw-r--r--user/libcroco/CVE-2020-12825.patch187
-rw-r--r--user/libcue/APKBUILD5
-rw-r--r--user/libdaemon/APKBUILD41
-rw-r--r--user/libdbusmenu-qt/APKBUILD22
-rw-r--r--user/libdbusmenu/APKBUILD38
-rw-r--r--user/libdc1394/0001-Fix-bad-variable-type-uint-int.patch37
-rw-r--r--user/libdc1394/APKBUILD13
-rw-r--r--user/libdca/APKBUILD9
-rw-r--r--user/libdisplay-info/APKBUILD41
-rw-r--r--user/libdmtx/APKBUILD6
-rw-r--r--user/libdrm/APKBUILD45
-rw-r--r--user/libdrm/ioctl.patch11
-rw-r--r--user/libdv/APKBUILD13
-rw-r--r--user/libdv/pic.patch1632
-rw-r--r--user/libdvbpsi/APKBUILD7
-rw-r--r--user/libdvdcss/APKBUILD6
-rw-r--r--user/libdvdnav/APKBUILD7
-rw-r--r--user/libdvdread/APKBUILD8
-rw-r--r--user/libe-book/APKBUILD18
-rw-r--r--user/libe-book/fix-icu68.patch13
-rw-r--r--user/libebml/APKBUILD9
-rw-r--r--user/libepoxy/APKBUILD26
-rw-r--r--user/libepubgen/APKBUILD5
-rw-r--r--user/libertine-fonts/APKBUILD4
-rw-r--r--user/libetonyek/APKBUILD15
-rw-r--r--user/libetpan/APKBUILD16
-rw-r--r--user/libetpan/CVE-2020-15953-a.patch27
-rw-r--r--user/libetpan/CVE-2020-15953-b.patch58
-rw-r--r--user/libev/APKBUILD10
-rw-r--r--user/libevdev/APKBUILD7
-rw-r--r--user/libevent/APKBUILD36
-rw-r--r--user/libevent/dont-test-fallback.patch16
-rw-r--r--user/libevent/fix-test-on-32bit.patch11
-rw-r--r--user/libevent/libressl.patch97
-rw-r--r--user/libevent/py3_dumpevents.patch30
-rw-r--r--user/libevent/py3_rpcgen.patch417
-rw-r--r--user/libexecinfo/10-execinfo.patch64
-rw-r--r--user/libexecinfo/20-define-gnu-source.patch24
-rw-r--r--user/libexecinfo/30-linux-makefile.patch44
-rw-r--r--user/libexecinfo/APKBUILD48
-rw-r--r--user/libexif/APKBUILD37
-rw-r--r--user/libexttextcat/APKBUILD5
-rw-r--r--user/libfakekey/APKBUILD12
-rw-r--r--user/libfm-extra/APKBUILD8
-rw-r--r--user/libfm-qt/APKBUILD28
-rw-r--r--user/libfm/APKBUILD26
-rw-r--r--user/libfm/without-extra.patch75
-rw-r--r--user/libfontenc/APKBUILD6
-rw-r--r--user/libfreehand/APKBUILD14
-rw-r--r--user/libfreehand/icu.patch11
-rw-r--r--user/libfs/APKBUILD6
-rw-r--r--user/libgd/APKBUILD44
-rw-r--r--user/libgd/CVE-2016-7568.patch33
-rw-r--r--user/libgd/revert-318-removal-of-macros.patch27
-rw-r--r--user/libgda/APKBUILD7
-rw-r--r--user/libgee/APKBUILD7
-rw-r--r--user/libgeoip/APKBUILD33
-rw-r--r--user/libgit2/APKBUILD24
-rw-r--r--user/libgit2/libressl.patch12
-rw-r--r--user/libgit2/pkgconfig-do-not-quote-Libs.patch26
-rw-r--r--user/libgit2/test-32bit.patch59
-rw-r--r--user/libglade/APKBUILD10
-rw-r--r--user/libglvnd/APKBUILD42
-rw-r--r--user/libgnome-keyring/APKBUILD7
-rw-r--r--user/libgnt/APKBUILD39
-rw-r--r--user/libgnt/ncurses.patch62
-rw-r--r--user/libgnt/tinfo.patch18
-rw-r--r--user/libgphoto2/APKBUILD14
-rw-r--r--user/libgphoto2/libgphoto2.pre-install2
-rw-r--r--user/libgsf/APKBUILD9
-rw-r--r--user/libgtop/APKBUILD7
-rw-r--r--user/libgudev/APKBUILD11
-rw-r--r--user/libguess/APKBUILD15
-rw-r--r--user/libgxps/APKBUILD3
-rw-r--r--user/libical/APKBUILD20
-rw-r--r--user/libical/automake.patch11
-rw-r--r--user/libical/icu75.patch31
-rw-r--r--user/libice/APKBUILD20
-rw-r--r--user/libid3tag/APKBUILD24
-rw-r--r--user/libid3tag/CVE-2004-2779.patch32
-rw-r--r--user/libid3tag/CVE-2008-2109.patch11
-rw-r--r--user/libid3tag/CVE-2017-11550.patch33
-rw-r--r--user/libid3tag/gperf.patch12
-rw-r--r--user/libidl/APKBUILD5
-rw-r--r--user/libidn2/APKBUILD15
-rw-r--r--user/libiec61883/APKBUILD4
-rw-r--r--user/libieee1284/APKBUILD7
-rw-r--r--user/libimobiledevice/APKBUILD38
-rw-r--r--user/libimobiledevice/modern-libplist.patch34
-rw-r--r--user/libindicator/APKBUILD43
-rw-r--r--user/libinput/APKBUILD15
-rw-r--r--user/libisofs/APKBUILD12
-rw-r--r--user/libixion/APKBUILD13
-rw-r--r--user/libjpeg-turbo/APKBUILD25
-rw-r--r--user/libkdcraw/APKBUILD11
-rw-r--r--user/libkdegames/APKBUILD18
-rw-r--r--user/libkdepim/APKBUILD46
-rw-r--r--user/libkeduvocdocument/APKBUILD11
-rw-r--r--user/libkexiv2/APKBUILD14
-rw-r--r--user/libkexiv2/backport.patch31
-rw-r--r--user/libkipi/APKBUILD10
-rw-r--r--user/libkleo/APKBUILD14
-rw-r--r--user/libkmahjongg/APKBUILD11
-rw-r--r--user/libkomparediff2/APKBUILD42
-rw-r--r--user/libksane/APKBUILD11
-rw-r--r--user/libksba/APKBUILD10
-rw-r--r--user/libkscreen/APKBUILD21
-rw-r--r--user/libksysguard/APKBUILD20
-rw-r--r--user/libksysguard/underlinking.patch12
-rw-r--r--user/libktorrent/APKBUILD13
-rw-r--r--user/libkworkspace/APKBUILD50
-rw-r--r--user/libkworkspace/session.patch11
-rw-r--r--user/libkworkspace/standalone.patch108
-rw-r--r--user/liblangtag/APKBUILD9
-rw-r--r--user/liblbxutil/APKBUILD13
-rw-r--r--user/liblbxutil/gcc10.patch18
-rw-r--r--user/libliftoff/APKBUILD34
-rw-r--r--user/liblxqt/APKBUILD31
-rw-r--r--user/liblxqt/revert-kwindowsystem-bump.patch40
-rw-r--r--user/libmad/APKBUILD11
-rw-r--r--user/libmad/CVE-2018-7263.patch817
-rw-r--r--user/libmatekbd/APKBUILD11
-rw-r--r--user/libmatemixer/APKBUILD14
-rw-r--r--user/libmateweather/APKBUILD15
-rw-r--r--user/libmatroska/APKBUILD11
-rw-r--r--user/libmaxminddb/APKBUILD32
-rw-r--r--user/libmbim/APKBUILD35
-rw-r--r--user/libmms/APKBUILD7
-rw-r--r--user/libmowgli/APKBUILD9
-rw-r--r--user/libmpd/APKBUILD9
-rw-r--r--user/libmpeg2/APKBUILD6
-rw-r--r--user/libmspub/APKBUILD16
-rw-r--r--user/libmspub/missing-header.patch10
-rw-r--r--user/libmtp/APKBUILD7
-rw-r--r--user/libmwaw/APKBUILD8
-rw-r--r--user/libnatpmp/APKBUILD24
-rw-r--r--user/libndp/APKBUILD34
-rw-r--r--user/libnfs/APKBUILD8
-rw-r--r--user/libnftnl/APKBUILD16
-rw-r--r--user/libnice/APKBUILD7
-rw-r--r--user/libnih/APKBUILD16
-rw-r--r--user/libnih/gcc10.patch15
-rw-r--r--user/libnl3/APKBUILD16
-rw-r--r--user/libnotify/APKBUILD14
-rw-r--r--user/libnumbertext/APKBUILD4
-rw-r--r--user/libodfgen/APKBUILD9
-rw-r--r--user/libogg/APKBUILD14
-rw-r--r--user/libopenraw/APKBUILD13
-rw-r--r--user/liborcus/APKBUILD12
-rw-r--r--user/libotr/APKBUILD9
-rw-r--r--user/libotr/fix-client.patch11
-rw-r--r--user/libpagemaker/APKBUILD5
-rw-r--r--user/libpaper/APKBUILD9
-rw-r--r--user/libpcap/APKBUILD17
-rw-r--r--user/libpciaccess/APKBUILD33
-rw-r--r--user/libpciaccess/fix-arm.patch11
-rw-r--r--user/libpeas/APKBUILD38
-rw-r--r--user/libpeas/use-locale.h.patch12
-rw-r--r--user/libpfm/APKBUILD8
-rw-r--r--user/libplist/APKBUILD35
-rw-r--r--user/libpng/APKBUILD19
-rw-r--r--user/libpng/libpng-fix-arm-neon.patch8
-rw-r--r--user/libproxy/APKBUILD18
-rw-r--r--user/libpsl/APKBUILD17
-rw-r--r--user/libpthread-stubs/APKBUILD11
-rw-r--r--user/libptytty/APKBUILD43
-rw-r--r--user/libptytty/force-utmps.patch12
-rw-r--r--user/libpwquality/APKBUILD7
-rw-r--r--user/libqaccessibilityclient/APKBUILD40
-rw-r--r--user/libqalculate/APKBUILD12
-rw-r--r--user/libqmi/APKBUILD35
-rw-r--r--user/libqrcodegen/APKBUILD31
-rw-r--r--user/libqrcodegen/cxxflags.patch13
-rw-r--r--user/libqrencode/APKBUILD6
-rw-r--r--user/libqtxdg/APKBUILD25
-rw-r--r--user/libquotient/APKBUILD (renamed from user/libqmatrixclient/APKBUILD)15
-rw-r--r--user/libqxp/APKBUILD8
-rw-r--r--user/libraw/APKBUILD18
-rw-r--r--user/libraw/CVE-2020-15503.patch131
-rw-r--r--user/libraw1394/APKBUILD5
-rw-r--r--user/libraw1394/fix-types.patch62
-rw-r--r--user/librdkafka/APKBUILD34
-rw-r--r--user/libreoffice/APKBUILD488
-rw-r--r--user/libreoffice/boost.patch17
-rw-r--r--user/libreoffice/disable-crc-test.patch39
-rw-r--r--user/libreoffice/disable-mariadbc.patch13
-rw-r--r--user/libreoffice/disable-mysqlc.patch26
-rw-r--r--user/libreoffice/disable-outdated-font-test.patch16
-rw-r--r--user/libreoffice/fix-execinfo.patch33
-rw-r--r--user/libreoffice/fix-includes.patch11
-rw-r--r--user/libreoffice/gettext-tiny.patch38
-rw-r--r--user/libreoffice/linux-musl.patch69
-rw-r--r--user/librevenge/APKBUILD6
-rw-r--r--user/librsvg/APKBUILD15
-rw-r--r--user/libsamplerate/APKBUILD6
-rw-r--r--user/libsass/APKBUILD6
-rw-r--r--user/libseccomp/APKBUILD46
-rw-r--r--user/libseccomp/remove-redefinition-prctl.patch10
-rw-r--r--user/libsecret/APKBUILD8
-rw-r--r--user/libsexy/APKBUILD11
-rw-r--r--user/libshout/APKBUILD10
-rw-r--r--user/libsigc++/APKBUILD13
-rw-r--r--user/libsigc++3/APKBUILD39
-rw-r--r--user/libsigsegv/APKBUILD37
-rw-r--r--user/libsigsegv/musl-ppc32.patch10
-rw-r--r--user/libslirp/APKBUILD39
-rw-r--r--user/libslirp/git-describe.patch24
-rw-r--r--user/libslirp/static.patch14
-rw-r--r--user/libsm/APKBUILD10
-rw-r--r--user/libsndfile/APKBUILD7
-rw-r--r--user/libsodium/APKBUILD9
-rw-r--r--user/libsoup/APKBUILD36
-rw-r--r--user/libsoup/musl.patch189
-rw-r--r--user/libsoup3/APKBUILD31
-rw-r--r--user/libspectre/APKBUILD3
-rw-r--r--user/libspiro/APKBUILD37
-rw-r--r--user/libsrtp/APKBUILD34
-rw-r--r--user/libssh2/APKBUILD40
-rw-r--r--user/libstaroffice/APKBUILD14
-rw-r--r--user/libstaroffice/mistake.patch22
-rw-r--r--user/libstatgrab/APKBUILD24
-rw-r--r--user/libstatgrab/fix-configure.patch14
-rw-r--r--user/libstatgrab/nongnu.patch12
-rw-r--r--user/libsysstat/APKBUILD23
-rw-r--r--user/libtap/APKBUILD2
-rw-r--r--user/libtasn1/APKBUILD17
-rw-r--r--user/libtasn1/CVE-2017-10790.patch55
-rw-r--r--user/libtheora/APKBUILD9
-rw-r--r--user/libtirpc/APKBUILD14
-rw-r--r--user/libtirpc/bsd-types.patch12
-rw-r--r--user/libtirpc/musl.patch11
-rw-r--r--user/libtommath/APKBUILD13
-rw-r--r--user/libuninameslist/APKBUILD4
-rw-r--r--user/libunistring/APKBUILD6
-rw-r--r--user/libusb/APKBUILD12
-rw-r--r--user/libusbmuxd/APKBUILD34
-rw-r--r--user/libutempter/APKBUILD4
-rw-r--r--user/libva/APKBUILD39
-rw-r--r--user/libvdpau/APKBUILD29
-rw-r--r--user/libverto/001-libev-not-compliant-c89.patch15
-rw-r--r--user/libverto/APKBUILD16
-rw-r--r--user/libverto/dash.patch131
-rw-r--r--user/libvisio/APKBUILD18
-rw-r--r--user/libvncserver/APKBUILD19
-rw-r--r--user/libvncserver/LibVNCServer-0.9.10-system_minilzo.patch67
-rw-r--r--user/libvorbis/APKBUILD28
-rw-r--r--user/libvorbis/CVE-2017-14160.patch58
-rw-r--r--user/libwacom/APKBUILD32
-rw-r--r--user/libwacom/musl-test.patch22
-rw-r--r--user/libwebp/APKBUILD14
-rw-r--r--user/libwnck/APKBUILD33
-rw-r--r--user/libwps/APKBUILD7
-rw-r--r--user/libx11/APKBUILD20
-rw-r--r--user/libxau/APKBUILD6
-rw-r--r--user/libxaw/APKBUILD11
-rw-r--r--user/libxaw3d/APKBUILD36
-rw-r--r--user/libxcb/APKBUILD14
-rw-r--r--user/libxcomposite/APKBUILD6
-rw-r--r--user/libxcursor/APKBUILD8
-rw-r--r--user/libxcvt/APKBUILD40
-rw-r--r--user/libxdamage/APKBUILD11
-rw-r--r--user/libxdg-basedir/APKBUILD20
-rw-r--r--user/libxdmcp/APKBUILD6
-rw-r--r--user/libxext/APKBUILD6
-rw-r--r--user/libxfce4ui/APKBUILD25
-rw-r--r--user/libxfce4util/APKBUILD19
-rw-r--r--user/libxfce4windowing/APKBUILD36
-rw-r--r--user/libxfixes/APKBUILD12
-rw-r--r--user/libxfont/APKBUILD38
-rw-r--r--user/libxfont2/APKBUILD11
-rw-r--r--user/libxft/APKBUILD6
-rw-r--r--user/libxi/APKBUILD14
-rw-r--r--user/libxinerama/APKBUILD11
-rw-r--r--user/libxkbcommon/APKBUILD78
-rw-r--r--user/libxkbfile/APKBUILD24
-rw-r--r--user/libxkbui/APKBUILD6
-rw-r--r--user/libxklavier/APKBUILD11
-rw-r--r--user/libxmu/APKBUILD8
-rw-r--r--user/libxp/APKBUILD9
-rw-r--r--user/libxpm/APKBUILD12
-rw-r--r--user/libxpresent/APKBUILD35
-rw-r--r--user/libxrandr/APKBUILD6
-rw-r--r--user/libxrender/APKBUILD11
-rw-r--r--user/libxres/APKBUILD34
-rw-r--r--user/libxscrnsaver/APKBUILD9
-rw-r--r--user/libxshmfence/APKBUILD9
-rw-r--r--user/libxt/APKBUILD15
-rw-r--r--user/libxtst/APKBUILD18
-rw-r--r--user/libxv/APKBUILD14
-rw-r--r--user/libxvmc/APKBUILD6
-rw-r--r--user/libxxf86dga/APKBUILD6
-rw-r--r--user/libxxf86misc/APKBUILD5
-rw-r--r--user/libxxf86vm/APKBUILD16
-rw-r--r--user/libzip/APKBUILD14
-rw-r--r--user/libzmf/APKBUILD7
-rw-r--r--user/lighttpd/APKBUILD88
-rw-r--r--user/lighttpd/lighttpd.conf62
-rw-r--r--user/lighttpd/lighttpd.initd2
-rw-r--r--user/lighttpd/lighttpd.pre-install8
-rw-r--r--user/lighttpd/mime-types.conf79
-rw-r--r--user/lilo/APKBUILD59
-rw-r--r--user/lilo/adelie.patch400
-rw-r--r--user/lilo/cflags.patch13
-rw-r--r--user/lilo/gcc10.patch51
-rw-r--r--user/lilo/initramfs.patch81
-rw-r--r--user/lilo/lilo.conf.template23
-rw-r--r--user/lilo/lilo.easy-boot93
-rw-r--r--user/lilo/musl.patch81
-rw-r--r--user/lilo/partuuid.patch65
-rw-r--r--user/links/APKBUILD4
-rw-r--r--user/linux-firmware/APKBUILD77
-rw-r--r--user/linux-firmware/linux-firmware-other.post-upgrade16
-rw-r--r--user/listres/APKBUILD9
-rw-r--r--user/live-media/APKBUILD16
-rw-r--r--user/livecd-support/APKBUILD83
-rw-r--r--user/livecd-support/allow-nullpw.start6
-rw-r--r--user/livecd-support/allow-nullpw.stop5
-rw-r--r--user/livecd-support/dhcpcd-suid.start5
-rw-r--r--user/livecd-support/horizon-ui10
-rw-r--r--user/livecd-support/horizon.desktop8
-rw-r--r--user/livecd-support/kde.sddm.conf3
-rw-r--r--user/livecd-support/live.sudoersd3
-rw-r--r--user/livecd-support/lxqt.sddm.conf3
-rw-r--r--user/livecd-support/mate.sddm.conf3
-rw-r--r--user/livecd-support/set-time.start5
-rw-r--r--user/livecd-support/xfce.sddm.conf3
-rw-r--r--user/lksctp-tools/APKBUILD6
-rw-r--r--user/llvm18/APKBUILD328
-rw-r--r--user/llvm18/disable-FileSystemTest.CreateDir-perms-assert.patch (renamed from user/llvm7/disable-FileSystemTest.CreateDir-perms-assert.patch)4
-rw-r--r--user/llvm18/dwarf-info.patch28
-rw-r--r--user/llvm18/dyld-elf-ppc32-2.patch176
-rw-r--r--user/llvm18/dyld-elf-ppc32.patch22
-rw-r--r--user/llvm18/hexagon.patch95
-rw-r--r--user/llvm18/i586-json-test.patch19
-rw-r--r--user/llvm18/llvm-fix-build-with-musl-libc.patch (renamed from user/llvm7/llvm-fix-build-with-musl-libc.patch)0
-rw-r--r--user/llvm18/m68k-endianness.patch26
-rw-r--r--user/llvm18/macho32.patch17
-rw-r--r--user/llvm18/musl-ppc64-elfv2.patch (renamed from user/llvm7/musl-ppc64-elfv2.patch)15
-rw-r--r--user/llvm18/ppc-gcc-bug.patch22
-rw-r--r--user/llvm18/python3-test.patch (renamed from user/llvm7/python3-test.patch)2
-rw-r--r--user/llvm18/roundeven.patch49
-rw-r--r--user/llvm7/APKBUILD252
-rw-r--r--user/llvm7/disable-dlclose-test.patch18
-rw-r--r--user/llvm7/even-more-secure-plt.patch101
-rw-r--r--user/llvm7/more-secure-plt.patch28
-rw-r--r--user/llvm7/ppc32-calling-convention.patch69
-rw-r--r--user/lm_sensors/APKBUILD26
-rw-r--r--user/lmdb/APKBUILD14
-rw-r--r--user/lohit-ttf/APKBUILD3
-rw-r--r--user/lokalize/APKBUILD48
-rw-r--r--user/lokalize/tests.patch43
-rw-r--r--user/lolcat/APKBUILD28
-rw-r--r--user/lolcat/https.patch24
-rw-r--r--user/lskat/APKBUILD13
-rw-r--r--user/lsof/APKBUILD42
-rw-r--r--user/lsof/test-disable-nfs-test.patch4
-rw-r--r--user/lsof/test-enable-suite.patch4
-rw-r--r--user/lsof/test-linux-sysmacros.patch4
-rw-r--r--user/lsof/utmps.patch4
-rw-r--r--user/lua-expat/32bit.patch11
-rw-r--r--user/lua-expat/APKBUILD22
-rw-r--r--user/lua-filesystem/APKBUILD15
-rw-r--r--user/lua-lgi/APKBUILD5
-rw-r--r--user/lua-sec/APKBUILD12
-rw-r--r--user/lua-socket/0001-Create-socket-on-first-sendto-if-family-agnostic-udp.patch49
-rw-r--r--user/lua-socket/APKBUILD40
-rw-r--r--user/lua-socket/git.patch6609
-rw-r--r--user/lua-socket/lua-cflags.patch22
-rw-r--r--user/lua-yaml/APKBUILD25
-rw-r--r--user/lua5.3/APKBUILD139
-rw-r--r--user/lua5.3/CVE-2019-6706.patch27
-rw-r--r--user/lua5.3/CVE-2020-24370.patch36
-rw-r--r--user/lua5.3/linenoise.patch18
-rw-r--r--user/lua5.3/lua-5.3-make.patch74
-rw-r--r--user/lua5.3/lua-5.3-module_paths.patch31
-rw-r--r--user/luarocks/APKBUILD21
-rw-r--r--user/luarocks/config.lua17
-rw-r--r--user/luit/APKBUILD4
-rw-r--r--user/lutok/APKBUILD40
-rw-r--r--user/lximage-qt/APKBUILD25
-rw-r--r--user/lxmenu-data/APKBUILD36
-rw-r--r--user/lxqt-about/APKBUILD22
-rw-r--r--user/lxqt-admin/APKBUILD22
-rw-r--r--user/lxqt-archiver/APKBUILD48
-rw-r--r--user/lxqt-build-tools/APKBUILD24
-rw-r--r--user/lxqt-config/APKBUILD34
-rw-r--r--user/lxqt-config/revert-kscren-bump.patch57
-rw-r--r--user/lxqt-desktop/APKBUILD24
-rw-r--r--user/lxqt-desktop/org.adelie-linux.about-lxqt.desktop2
-rw-r--r--user/lxqt-desktop/startlxqt.14
-rw-r--r--user/lxqt-globalkeys/APKBUILD27
-rw-r--r--user/lxqt-l10n/APKBUILD38
-rw-r--r--user/lxqt-menu-data/APKBUILD40
-rw-r--r--user/lxqt-notificationd/APKBUILD32
-rw-r--r--user/lxqt-notificationd/revert-kwindowsystem-bump.patch32
-rw-r--r--user/lxqt-openssh-askpass/APKBUILD25
-rw-r--r--user/lxqt-panel/APKBUILD41
-rw-r--r--user/lxqt-panel/revert-kwindowsystem-bump.patch643
-rw-r--r--user/lxqt-policykit/APKBUILD25
-rw-r--r--user/lxqt-powermanagement/APKBUILD34
-rw-r--r--user/lxqt-powermanagement/revert-kwindowsystem-bump.patch32
-rw-r--r--user/lxqt-qtplugin/APKBUILD26
-rw-r--r--user/lxqt-runner/APKBUILD32
-rw-r--r--user/lxqt-runner/revert-kwindowsystem-bump.patch92
-rw-r--r--user/lxqt-session/APKBUILD30
-rw-r--r--user/lxqt-sudo/APKBUILD27
-rw-r--r--user/lxqt-themes/APKBUILD22
-rw-r--r--user/lynx/APKBUILD18
-rw-r--r--user/mac-fdisk/APKBUILD7
-rw-r--r--user/mactel-boot/APKBUILD4
-rw-r--r--user/mailcap/APKBUILD22
-rw-r--r--user/makedepend/APKBUILD7
-rw-r--r--user/marble/APKBUILD19
-rw-r--r--user/marco/APKBUILD20
-rw-r--r--user/mariadb/APKBUILD276
-rw-r--r--user/mariadb/mariadb-server.limits3
-rw-r--r--user/mariadb/mariadb-server.pre-install7
-rw-r--r--user/mariadb/mariadb.initd47
-rw-r--r--user/mariadb/missing-header.patch12
-rw-r--r--user/mariadb/ppchax.patch26
-rw-r--r--user/massif-visualizer/APKBUILD43
-rw-r--r--user/mate-applets/APKBUILD21
-rw-r--r--user/mate-backgrounds/APKBUILD11
-rw-r--r--user/mate-calc/APKBUILD14
-rw-r--r--user/mate-common/APKBUILD13
-rw-r--r--user/mate-complete/APKBUILD43
-rw-r--r--user/mate-complete/mate.desktop11
-rw-r--r--user/mate-control-center/APKBUILD16
-rw-r--r--user/mate-desktop/APKBUILD14
-rw-r--r--user/mate-icon-theme/APKBUILD12
-rw-r--r--user/mate-indicator-applet/APKBUILD15
-rw-r--r--user/mate-media/APKBUILD13
-rw-r--r--user/mate-menus/APKBUILD13
-rw-r--r--user/mate-netbook/APKBUILD11
-rw-r--r--user/mate-notification-daemon/APKBUILD15
-rw-r--r--user/mate-panel/APKBUILD13
-rw-r--r--user/mate-polkit/APKBUILD11
-rw-r--r--user/mate-power-manager/APKBUILD15
-rw-r--r--user/mate-screensaver/APKBUILD18
-rw-r--r--user/mate-sensors-applet/APKBUILD15
-rw-r--r--user/mate-sensors-applet/locale-guards.patch29
-rw-r--r--user/mate-session-manager/APKBUILD18
-rw-r--r--user/mate-session-manager/no-systemd.patch65
-rw-r--r--user/mate-settings-daemon/APKBUILD17
-rw-r--r--user/mate-system-monitor/APKBUILD13
-rw-r--r--user/mate-terminal/APKBUILD13
-rw-r--r--user/mate-themes/APKBUILD34
-rw-r--r--user/mate-user-guide/APKBUILD12
-rw-r--r--user/mate-user-share/APKBUILD11
-rw-r--r--user/mate-utils/APKBUILD13
-rw-r--r--user/mbedtls/APKBUILD52
-rw-r--r--user/mbuffer/APKBUILD39
-rw-r--r--user/mbuffer/clamp-32-bit-parameters.patch39
-rw-r--r--user/mbuffer/test-static-file-instead.patch11
-rw-r--r--user/mcpp/03-gniibe-fix-11.patch21
-rw-r--r--user/mcpp/04-gniibe-fix-12.patch17
-rw-r--r--user/mcpp/05-gniibe-fix-13.patch52
-rw-r--r--user/mcpp/APKBUILD27
-rw-r--r--user/mdadm/0001-udev.c-Do-not-require-libudev.h-if-DNO_LIBUDEV.patch28
-rw-r--r--user/mdadm/APKBUILD25
-rw-r--r--user/mdadm/falloc.patch41
-rw-r--r--user/mdadm/missing-header.patch29
-rw-r--r--user/mdadm/time64.patch19
-rw-r--r--user/mdbook/APKBUILD623
-rw-r--r--user/mdds/APKBUILD11
-rw-r--r--user/mednafen/APKBUILD12
-rw-r--r--user/mednafen/ppc.patch8
-rw-r--r--user/mednaffe/APKBUILD14
-rw-r--r--user/menu-cache/APKBUILD12
-rw-r--r--user/menu-cache/gcc10.patch103
-rw-r--r--user/mesa-amber/APKBUILD78
-rw-r--r--user/mesa-amber/big-endian-flipping.patch37
-rw-r--r--user/mesa-amber/mesa-amber-i915c.patch46
-rw-r--r--user/mesa-amber/no-tls.patch25
-rw-r--r--user/mesa-amber/nouveau-flush-fix.patch11
-rw-r--r--user/mesa-be/APKBUILD136
-rw-r--r--user/mesa-demos/APKBUILD14
-rw-r--r--user/mesa/APKBUILD277
-rw-r--r--user/mesa/amdgpu-pthread-header.patch10
-rw-r--r--user/mesa/disk_cache-stack-overflow.patch42
-rw-r--r--user/mesa/drmdeps.patch41
-rw-r--r--user/mesa/fix-non-altivec-ppc32.patch66
-rw-r--r--user/mesa/musl-fix-includes.patch14
-rw-r--r--user/mesa/musl-fixes.patch11
-rw-r--r--user/meson/APKBUILD11
-rw-r--r--user/metalog/APKBUILD48
-rw-r--r--user/metalog/metalog-0.9-metalog-conf.patch11
-rw-r--r--user/metalog/metalog.confd18
-rw-r--r--user/metalog/metalog.initd-r128
-rw-r--r--user/milou/APKBUILD13
-rw-r--r--user/mimetic/APKBUILD18
-rw-r--r--user/mimetic/nullptr.patch11
-rw-r--r--user/minicom/APKBUILD13
-rw-r--r--user/minicom/fix-includes.patch24
-rw-r--r--user/miniupnpc/APKBUILD41
-rw-r--r--user/miniupnpc/fix-cmake-include-install.patch29
-rw-r--r--user/minivmac/APKBUILD11
-rw-r--r--user/minizip/APKBUILD38
-rw-r--r--user/minizip/CVE-2023-45853.patch40
-rw-r--r--user/minuet/APKBUILD14
-rw-r--r--user/minuet/missing-header.patch30
-rw-r--r--user/mkcomposecache/APKBUILD11
-rw-r--r--user/mkfontscale/APKBUILD8
-rw-r--r--user/mksh/APKBUILD41
-rw-r--r--user/mksh/fix-deprecated-fgrep.patch22
-rw-r--r--user/mlt/APKBUILD53
-rw-r--r--user/mlt/mlt-6.14.0-locale-header.patch12
-rw-r--r--user/mlt/x86caps.patch37
-rw-r--r--user/mobile-broadband-provider-info/APKBUILD34
-rw-r--r--user/modemmanager-qt/APKBUILD43
-rw-r--r--user/modemmanager/01-org.freedesktop.ModemManager.rules8
-rw-r--r--user/modemmanager/APKBUILD48
-rw-r--r--user/modemmanager/no-translit.patch92
-rw-r--r--user/modules/APKBUILD36
-rw-r--r--user/monoid/APKBUILD3
-rw-r--r--user/montecarlo/APKBUILD2
-rw-r--r--user/mosh/APKBUILD12
-rw-r--r--user/mosh/fix-ppc64le-build-with-musl.patch53
-rw-r--r--user/mosquitto/APKBUILD98
-rw-r--r--user/mosquitto/endian.patch169
-rw-r--r--user/mosquitto/mosquitto.initd36
-rw-r--r--user/mosquitto/mosquitto.pre-install7
-rw-r--r--user/mosquitto/no-persist_read_test.patch15
-rw-r--r--user/mosquitto/openrc-conf.patch20
-rw-r--r--user/mousepad/APKBUILD20
-rw-r--r--user/mozjs/0003-build-Fix-library-install-name-on-macOS.patch30
-rw-r--r--user/mozjs/0004-build-Copy-headers-on-install-instead-of-symlinking.patch35
-rw-r--r--user/mozjs/0006-Disable-MOZ_GLUE_IN_PROGRAM-in-stand-alone-builds-on.patch68
-rw-r--r--user/mozjs/0008-tests-Skip-on-all-64-bit-archs.patch51
-rw-r--r--user/mozjs/0009-build-Include-configure-script-be-nicer-about-option.patch53
-rw-r--r--user/mozjs/APKBUILD75
-rw-r--r--user/mozjs/arm64.patch60
-rw-r--r--user/mozjs/baseconfig.patch22
-rw-r--r--user/mozjs/dont-fail-tests-without-ion.patch39
-rw-r--r--user/mozjs/python3.patch9883
-rw-r--r--user/mozo/APKBUILD11
-rw-r--r--user/mpg123/APKBUILD11
-rw-r--r--user/mplayer/APKBUILD51
-rw-r--r--user/mplayer/ldt.patch11
-rw-r--r--user/mpv/APKBUILD26
-rw-r--r--user/mtdev/APKBUILD17
-rw-r--r--user/mtdev/printf-format.patch19
-rw-r--r--user/mtools/APKBUILD32
-rw-r--r--user/mtr/APKBUILD40
-rw-r--r--user/mtr/handle-program-suffix.patch15
-rw-r--r--user/mumble/APKBUILD133
-rw-r--r--user/mumble/default-config.patch36
-rw-r--r--user/mumble/murmur.initd35
-rw-r--r--user/mumble/murmur.pre-install7
-rw-r--r--user/mumble/tests-networking.patch33
-rw-r--r--user/muparser/APKBUILD19
-rw-r--r--user/musl-obstack/APKBUILD38
-rw-r--r--user/mutt/APKBUILD16
-rw-r--r--user/mythes/APKBUILD7
-rw-r--r--user/nano/APKBUILD12
-rw-r--r--user/nasm/APKBUILD9
-rw-r--r--user/ncftp/APKBUILD23
-rw-r--r--user/ncompress/APKBUILD9
-rw-r--r--user/neon/APKBUILD23
-rw-r--r--user/net-snmp/APKBUILD20
-rw-r--r--user/netifrc/APKBUILD13
-rw-r--r--user/netifrc/switch-l2tp-gawk-to-perl.patch92
-rw-r--r--user/netqmail/0005-CVE-2005-1513.patch19
-rw-r--r--user/netqmail/APKBUILD98
-rw-r--r--user/netqmail/netqmail.confd21
-rw-r--r--user/netqmail/netqmail.initd68
-rw-r--r--user/netqmail/rename-mbox-man.patch162
-rw-r--r--user/netqmail/smtpd-notls.run9
-rw-r--r--user/netqmail/smtpd.run7
-rw-r--r--user/netqmail/smtpsd.run8
-rw-r--r--user/netsurf/APKBUILD29
-rw-r--r--user/netsurf/Makefile.config1
-rw-r--r--user/netsurf/netsurf.desktop8
-rw-r--r--user/nettle/APKBUILD18
-rw-r--r--user/networkmanager-qt/APKBUILD43
-rw-r--r--user/networkmanager/01-org.freedesktop.NetworkManager.rules7
-rw-r--r--user/networkmanager/10-openrc-status35
-rw-r--r--user/networkmanager/APKBUILD105
-rw-r--r--user/networkmanager/editline.patch128
-rw-r--r--user/networkmanager/errno.patch21
-rw-r--r--user/networkmanager/musl.patch224
-rw-r--r--user/networkmanager/nm.confd4
-rw-r--r--user/networkmanager/nm.initd58
-rw-r--r--user/networkmanager/qsort_r.patch18
-rw-r--r--user/networkmanager/random.patch50
-rw-r--r--user/networkmanager/reallocarray.patch35
-rw-r--r--user/networkmanager/tests.patch18
-rw-r--r--user/newt/APKBUILD38
-rw-r--r--user/nextcloud-client/APKBUILD38
-rw-r--r--user/nextcloud-client/fix-missing-header.patch11
-rw-r--r--user/nextcloud-client/no-webengine.patch1254
-rw-r--r--user/nextcloud-client/openssl.patch11
-rw-r--r--user/nextcloud-client/test-fix-include.patch22
-rw-r--r--user/nextcloud/APKBUILD20
-rw-r--r--user/nextcloud/nextcloud.post-upgrade55
-rw-r--r--user/nextcloud/nextcloud.pre-install5
-rw-r--r--user/nfs-utils/APKBUILD18
-rw-r--r--user/nfs-utils/nfs-utils-1.1.4-mtab-sym.patch39
-rw-r--r--user/nfs-utils/nfs-utils.conf3
-rw-r--r--user/nfs-utils/posixish.patch25
-rw-r--r--user/nfs-utils/rpc.statd.initd2
-rw-r--r--user/nfs-utils/time64.patch94
-rw-r--r--user/nfs-utils/undef-def.patch42
-rw-r--r--user/nftables/APKBUILD30
-rw-r--r--user/nftables/asciidoctor.patch28
-rw-r--r--user/nghttp2-utils/APKBUILD54
-rw-r--r--user/nghttp2/APKBUILD42
-rw-r--r--user/ninja/APKBUILD11
-rw-r--r--user/nmap/APKBUILD56
-rw-r--r--user/nmap/disable-broken-tests.patch13
-rw-r--r--user/nml/APKBUILD9
-rw-r--r--user/node/APKBUILD92
-rw-r--r--user/node/gyp-python3.patch3862
-rw-r--r--user/node/libatomic.patch14
-rw-r--r--user/node/pmmx-test.patch16
-rw-r--r--user/node/pmmx-time64.patch216
-rw-r--r--user/node/ppc-fixes-for-older-models-18.patch918
-rw-r--r--user/node/ppc32.patch18
-rw-r--r--user/node/ppc64.patch40
-rw-r--r--user/node/python3.patch163
-rw-r--r--user/node/stack-silliness.patch14
-rw-r--r--user/node/v8-python3.patch169
-rw-r--r--user/node/zlib-version-regex.patch31
-rw-r--r--user/notmuch/0.28.2-disable-rpath.patch48
-rw-r--r--user/notmuch/APKBUILD96
-rw-r--r--user/npth/APKBUILD7
-rw-r--r--user/nsd/APKBUILD15
-rw-r--r--user/ntfs-3g/APKBUILD16
-rw-r--r--user/ntfs-3g/CVE-2019-9755.patch63
-rw-r--r--user/ntpsec/APKBUILD26
-rw-r--r--user/numactl/APKBUILD49
-rw-r--r--user/numactl/version.patch11
-rw-r--r--user/nvme-cli/APKBUILD52
-rw-r--r--user/nvme-cli/add-limits.patch20
-rw-r--r--user/obconf-qt/APKBUILD26
-rw-r--r--user/oclock/APKBUILD9
-rw-r--r--user/ode/APKBUILD12
-rw-r--r--user/ode/stdint.patch44
-rw-r--r--user/okteta/APKBUILD8
-rw-r--r--user/okular/APKBUILD21
-rw-r--r--user/okular/es-doc-fix.patch11
-rw-r--r--user/ol/APKBUILD39
-rw-r--r--user/ol/require-explicit-cdefs.patch28
-rw-r--r--user/olm/APKBUILD43
-rw-r--r--user/oniguruma/192.patch25
-rw-r--r--user/oniguruma/APKBUILD45
-rw-r--r--user/opal-utils/APKBUILD44
-rw-r--r--user/opal-utils/musl.patch36
-rw-r--r--user/opal-utils/opal-prd.patch8
-rw-r--r--user/open-vm-tools/APKBUILD111
-rw-r--r--user/open-vm-tools/disable-werror.patch21
-rw-r--r--user/open-vm-tools/dndcp-portability.patch22
-rw-r--r--user/open-vm-tools/hgfs-portability.patch34
-rw-r--r--user/open-vm-tools/loff_t.patch11
-rw-r--r--user/open-vm-tools/open-vm-tools.confd2
-rw-r--r--user/open-vm-tools/open-vm-tools.initd60
-rw-r--r--user/open-vm-tools/poll-header.patch125
-rw-r--r--user/open-vm-tools/preadv.patch11
-rw-r--r--user/open-vm-tools/resolver.patch40
-rw-r--r--user/open-vm-tools/strerror_r.patch25
-rw-r--r--user/open-vm-tools/time64.patch58
-rw-r--r--user/open-vm-tools/vgauth-portability.patch49
-rw-r--r--user/open-vm-tools/vgauthd.initd6
-rw-r--r--user/open-vm-tools/vix.patch11
-rw-r--r--user/open-vm-tools/vmtoolsd.pamd6
-rw-r--r--user/openal-soft/APKBUILD33
-rw-r--r--user/openbox/APKBUILD6
-rw-r--r--user/opencv/APKBUILD55
-rw-r--r--user/opencv/cmake-license.patch12
-rw-r--r--user/opencv/fix-headers.manual-patch12
-rw-r--r--user/opengfx/APKBUILD14
-rw-r--r--user/opengfx/Makefile.patch22
-rw-r--r--user/openjdk7/APKBUILD286
-rw-r--r--user/openjdk7/icedtea-cpio.patch11
-rw-r--r--user/openjdk7/icedtea-hotspot-musl-ppc.patch169
-rw-r--r--user/openjdk7/icedtea-hotspot-musl.patch79
-rw-r--r--user/openjdk7/icedtea-hotspot-noagent-musl.patch54
-rw-r--r--user/openjdk7/icedtea-hotspot-uclibc-fixes.patch93
-rw-r--r--user/openjdk7/icedtea-jdk-execinfo.patch40
-rw-r--r--user/openjdk7/icedtea-jdk-fix-build.patch56
-rw-r--r--user/openjdk7/icedtea-jdk-fix-ipv6-init.patch42
-rw-r--r--user/openjdk7/icedtea-jdk-musl.patch116
-rw-r--r--user/openjdk7/icedtea-jdk-no-lib-nsl-uclibc.patch84
-rw-r--r--user/openjdk7/icedtea-jdk-no-soname.patch12
-rw-r--r--user/openjdk7/icedtea-remove-gawk.patch22
-rw-r--r--user/openjdk7/icedtea-tar.patch22
-rw-r--r--user/openjdk7/icedtea-xattr.patch11
-rw-r--r--user/openjdk7/remove-gawk.patch125
-rw-r--r--user/openjdk7/xattr.patch11
-rw-r--r--user/openjdk8/APKBUILD177
-rw-r--r--user/openjdk8/icedtea-hotspot-musl-ppc.patch201
-rw-r--r--user/openjdk8/icedtea-hotspot-musl.patch4
-rw-r--r--user/openjdk8/icedtea-jdk-getmntent-buffer.patch88
-rw-r--r--user/openjdk8/icedtea-jdk-includes.patch23
-rw-r--r--user/openjdk8/icedtea-jdk-musl.patch32
-rw-r--r--user/openjdk8/icedtea-jdk-tls-nist-curves.patch47
-rwxr-xr-xuser/openjdk8/maintain162
-rw-r--r--user/openjdk8/project-autoconf-2xx.patch30
-rw-r--r--user/openjpeg/APKBUILD32
-rw-r--r--user/openldap/APKBUILD77
-rw-r--r--user/openldap/CVE-2017-9287.patch28
-rw-r--r--user/openldap/configs.patch41
-rw-r--r--user/openldap/fix-manpages.patch22
-rw-r--r--user/openldap/libressl.patch65
-rw-r--r--user/openldap/openldap-2.4-ppolicy.patch13
-rw-r--r--user/openldap/openldap-2.4.11-libldap_r.patch11
-rw-r--r--user/openldap/openldap-mqtt-overlay.patch447
-rw-r--r--user/openldap/openldap.pre-install6
-rw-r--r--user/openldap/test063.patch17
-rw-r--r--user/openldap/test079.patch160
-rw-r--r--user/openldap/time64.patch198
-rw-r--r--user/openmsx/APKBUILD13
-rw-r--r--user/openmsx/python3.patch265
-rw-r--r--user/opensfx/APKBUILD18
-rw-r--r--user/openttd/APKBUILD40
-rw-r--r--user/openvpn/APKBUILD26
-rw-r--r--user/openvpn/openvpn.pre-install5
-rw-r--r--user/oprofile/APKBUILD7
-rw-r--r--user/optipng/APKBUILD3
-rw-r--r--user/opus/APKBUILD13
-rw-r--r--user/opusfile/APKBUILD10
-rw-r--r--user/orage/APKBUILD28
-rw-r--r--user/orage/libical-3.patch76
-rw-r--r--user/orbit2/APKBUILD14
-rw-r--r--user/orc/APKBUILD34
-rw-r--r--user/orc/orc-0.4.28-ppc64-elfv2.patch28
-rw-r--r--user/os-prober/APKBUILD52
-rw-r--r--user/otf-culmus/APKBUILD10
-rw-r--r--user/otf-exo/APKBUILD14
-rw-r--r--user/otf-office-code-pro/APKBUILD14
-rw-r--r--user/otf-proggy-vector/APKBUILD10
-rw-r--r--user/otf-source-code-pro/APKBUILD22
-rw-r--r--user/otf-source-sans-pro/APKBUILD21
-rw-r--r--user/otf-source-serif-pro/APKBUILD25
-rw-r--r--user/otf-source-serif/APKBUILD27
-rw-r--r--user/oxygen-fonts/APKBUILD7
-rw-r--r--user/oxygen-icons5/APKBUILD9
-rw-r--r--user/oxygen/APKBUILD13
-rw-r--r--user/p11-kit/APKBUILD12
-rw-r--r--user/palapeli/APKBUILD11
-rw-r--r--user/pango/APKBUILD52
-rw-r--r--user/pangomm/APKBUILD30
-rw-r--r--user/papirus-icons/APKBUILD17
-rw-r--r--user/parole/APKBUILD17
-rw-r--r--user/partitionmanager/APKBUILD13
-rw-r--r--user/password-store/APKBUILD12
-rw-r--r--user/patchutils/APKBUILD4
-rw-r--r--user/pavucontrol-qt/APKBUILD24
-rw-r--r--user/pavucontrol/APKBUILD9
-rw-r--r--user/pciutils/APKBUILD14
-rw-r--r--user/pcmanfm-qt/APKBUILD29
-rw-r--r--user/pcmanfm/APKBUILD13
-rw-r--r--user/pcmciautils/APKBUILD2
-rw-r--r--user/pcsc-lite/APKBUILD9
-rw-r--r--user/pcsc-lite/pcsc-lite.pre-install9
-rw-r--r--user/perl-algorithm-diff/APKBUILD18
-rw-r--r--user/perl-any-moose/APKBUILD17
-rw-r--r--user/perl-anyevent/APKBUILD22
-rw-r--r--user/perl-apache-logformat-compiler/APKBUILD22
-rw-r--r--user/perl-app-licensecheck/APKBUILD46
-rw-r--r--user/perl-appconfig/APKBUILD17
-rw-r--r--user/perl-array-intspan/APKBUILD34
-rw-r--r--user/perl-b-hooks-endofscope/APKBUILD21
-rw-r--r--user/perl-b-hooks-op-check/APKBUILD34
-rw-r--r--user/perl-bareword-filehandles/APKBUILD34
-rw-r--r--user/perl-bit-vector/APKBUILD34
-rw-r--r--user/perl-canary-stability/APKBUILD20
-rw-r--r--user/perl-capture-tiny/APKBUILD25
-rw-r--r--user/perl-carp-clan/APKBUILD34
-rw-r--r--user/perl-cgi/APKBUILD21
-rw-r--r--user/perl-chart/APKBUILD21
-rw-r--r--user/perl-class-accessor-lite/APKBUILD18
-rw-r--r--user/perl-class-accessor/APKBUILD34
-rw-r--r--user/perl-class-data-inheritable/APKBUILD21
-rw-r--r--user/perl-class-inspector/APKBUILD22
-rw-r--r--user/perl-class-load-xs/APKBUILD15
-rw-r--r--user/perl-class-load/APKBUILD17
-rw-r--r--user/perl-class-method-modifiers/APKBUILD22
-rw-r--r--user/perl-class-singleton/APKBUILD20
-rw-r--r--user/perl-class-tiny/APKBUILD20
-rw-r--r--user/perl-class-xsaccessor/APKBUILD17
-rw-r--r--user/perl-code-tidyall/APKBUILD21
-rw-r--r--user/perl-commandable/APKBUILD36
-rw-r--r--user/perl-common-sense/APKBUILD20
-rw-r--r--user/perl-config-ini/APKBUILD19
-rw-r--r--user/perl-convert-color-xterm/APKBUILD36
-rw-r--r--user/perl-convert-color/APKBUILD35
-rw-r--r--user/perl-cookie-baker/APKBUILD22
-rw-r--r--user/perl-cpan-changes/APKBUILD34
-rw-r--r--user/perl-cpan-meta-check/APKBUILD23
-rw-r--r--user/perl-crypt-des/APKBUILD12
-rw-r--r--user/perl-crypt-rijndael/APKBUILD30
-rw-r--r--user/perl-crypt-rijndael/use-stdint_h.patch18
-rw-r--r--user/perl-cwd-guard/APKBUILD24
-rw-r--r--user/perl-data-dump/APKBUILD22
-rw-r--r--user/perl-data-optlist/APKBUILD15
-rw-r--r--user/perl-data-section/APKBUILD34
-rw-r--r--user/perl-data-uuid/APKBUILD34
-rw-r--r--user/perl-datetime-locale/APKBUILD25
-rw-r--r--user/perl-datetime-timezone/APKBUILD30
-rw-r--r--user/perl-datetime/APKBUILD22
-rw-r--r--user/perl-dbd-pg/APKBUILD23
-rw-r--r--user/perl-devel-checkcompiler/APKBUILD23
-rw-r--r--user/perl-devel-cycle/APKBUILD34
-rw-r--r--user/perl-devel-globaldestruction/APKBUILD16
-rw-r--r--user/perl-devel-hide/APKBUILD34
-rw-r--r--user/perl-devel-nytprof/APKBUILD35
-rw-r--r--user/perl-devel-overloadinfo/APKBUILD23
-rw-r--r--user/perl-devel-stacktrace-ashtml/APKBUILD18
-rw-r--r--user/perl-devel-stacktrace/APKBUILD19
-rw-r--r--user/perl-devel-symdump/APKBUILD16
-rw-r--r--user/perl-dir-manifest/APKBUILD34
-rw-r--r--user/perl-dist-checkconflicts/APKBUILD19
-rw-r--r--user/perl-email-abstract/APKBUILD22
-rw-r--r--user/perl-email-address-xs/APKBUILD22
-rw-r--r--user/perl-email-address/APKBUILD22
-rw-r--r--user/perl-email-date-format/APKBUILD22
-rw-r--r--user/perl-email-messageid/APKBUILD22
-rw-r--r--user/perl-email-mime-contenttype/APKBUILD22
-rw-r--r--user/perl-email-mime-encodings/APKBUILD22
-rw-r--r--user/perl-email-mime/APKBUILD22
-rw-r--r--user/perl-email-reply/APKBUILD18
-rw-r--r--user/perl-email-sender/APKBUILD24
-rw-r--r--user/perl-email-simple/APKBUILD22
-rw-r--r--user/perl-encode-detect/APKBUILD16
-rw-r--r--user/perl-env-path/APKBUILD17
-rw-r--r--user/perl-eval-closure/APKBUILD19
-rw-r--r--user/perl-exception-class/APKBUILD21
-rw-r--r--user/perl-exporter-lite/APKBUILD21
-rw-r--r--user/perl-exporter-tiny/APKBUILD22
-rw-r--r--user/perl-extutils-cbuilder/APKBUILD34
-rw-r--r--user/perl-extutils-cchecker/APKBUILD35
-rw-r--r--user/perl-extutils-cppguess/APKBUILD37
-rw-r--r--user/perl-extutils-cppguess/fix.patch60
-rw-r--r--user/perl-extutils-depends/APKBUILD20
-rw-r--r--user/perl-extutils-parsexs/APKBUILD34
-rw-r--r--user/perl-extutils-pkgconfig/APKBUILD25
-rw-r--r--user/perl-feature-compat-class/APKBUILD35
-rw-r--r--user/perl-feature-compat-try/APKBUILD35
-rw-r--r--user/perl-file-basedir/APKBUILD22
-rw-r--r--user/perl-file-chdir/APKBUILD34
-rw-r--r--user/perl-file-copy-recursive-reduced/APKBUILD22
-rw-r--r--user/perl-file-copy-recursive/APKBUILD22
-rw-r--r--user/perl-file-desktopentry/APKBUILD18
-rw-r--r--user/perl-file-find-object-rule/APKBUILD21
-rw-r--r--user/perl-file-find-object/APKBUILD20
-rw-r--r--user/perl-file-finder/APKBUILD17
-rw-r--r--user/perl-file-mimeinfo/APKBUILD24
-rw-r--r--user/perl-file-pushd/APKBUILD15
-rw-r--r--user/perl-file-sharedir-install/APKBUILD18
-rw-r--r--user/perl-file-sharedir/APKBUILD21
-rw-r--r--user/perl-file-slurp/APKBUILD22
-rw-r--r--user/perl-file-slurper/APKBUILD22
-rw-r--r--user/perl-file-treecreate/APKBUILD33
-rw-r--r--user/perl-file-which/APKBUILD21
-rw-r--r--user/perl-filesys-notify-simple/APKBUILD22
-rw-r--r--user/perl-font-afm/APKBUILD18
-rw-r--r--user/perl-games-solitaire-verify/APKBUILD23
-rw-r--r--user/perl-gd/APKBUILD36
-rw-r--r--user/perl-gdgraph/APKBUILD23
-rw-r--r--user/perl-gdtextutil/APKBUILD18
-rw-r--r--user/perl-getopt-long-descriptive/APKBUILD23
-rw-r--r--user/perl-graphics-toolkit-color/APKBUILD35
-rw-r--r--user/perl-hash-defhash/APKBUILD35
-rw-r--r--user/perl-hash-fieldhash/APKBUILD34
-rw-r--r--user/perl-hash-multivalue/APKBUILD18
-rw-r--r--user/perl-heap/APKBUILD34
-rw-r--r--user/perl-html-formatter/APKBUILD18
-rw-r--r--user/perl-html-formattext-withlinks/APKBUILD18
-rw-r--r--user/perl-html-scrubber/APKBUILD24
-rw-r--r--user/perl-html-tree/APKBUILD18
-rw-r--r--user/perl-http-entity-parser/APKBUILD22
-rw-r--r--user/perl-http-headers-fast/APKBUILD18
-rw-r--r--user/perl-http-multipartparser/APKBUILD18
-rw-r--r--user/perl-import-into/APKBUILD15
-rw-r--r--user/perl-importer/APKBUILD34
-rw-r--r--user/perl-indirect/APKBUILD34
-rw-r--r--user/perl-inline-c/APKBUILD22
-rw-r--r--user/perl-inline/APKBUILD20
-rw-r--r--user/perl-io-all/APKBUILD17
-rw-r--r--user/perl-io-interactive/APKBUILD29
-rw-r--r--user/perl-io-sessiondata/APKBUILD18
-rw-r--r--user/perl-io-stringy/APKBUILD30
-rw-r--r--user/perl-io-tty/APKBUILD21
-rw-r--r--user/perl-ipc-run/APKBUILD18
-rw-r--r--user/perl-ipc-run3/APKBUILD33
-rw-r--r--user/perl-ipc-system-simple/APKBUILD21
-rw-r--r--user/perl-json-rpc/APKBUILD20
-rw-r--r--user/perl-json-xs/APKBUILD20
-rw-r--r--user/perl-lib-relative/APKBUILD19
-rw-r--r--user/perl-list-compare/APKBUILD21
-rw-r--r--user/perl-list-moreutils-xs/APKBUILD19
-rw-r--r--user/perl-list-moreutils/APKBUILD19
-rw-r--r--user/perl-list-someutils-xs/APKBUILD15
-rw-r--r--user/perl-list-someutils/APKBUILD21
-rw-r--r--user/perl-list-utilsby/APKBUILD34
-rw-r--r--user/perl-log-any-adapter-screen/APKBUILD34
-rw-r--r--user/perl-log-any/APKBUILD21
-rw-r--r--user/perl-lwp-protocol-https/APKBUILD22
-rw-r--r--user/perl-math-random-isaac/APKBUILD16
-rw-r--r--user/perl-mime-types/APKBUILD22
-rw-r--r--user/perl-mixin-linewise/APKBUILD19
-rw-r--r--user/perl-module-build-xsutil/APKBUILD24
-rw-r--r--user/perl-module-implementation/APKBUILD17
-rw-r--r--user/perl-module-pluggable/APKBUILD18
-rw-r--r--user/perl-module-runtime-conflicts/APKBUILD15
-rw-r--r--user/perl-module-runtime/APKBUILD18
-rw-r--r--user/perl-moo/APKBUILD22
-rw-r--r--user/perl-moose/APKBUILD24
-rw-r--r--user/perl-moosex-getopt/APKBUILD23
-rw-r--r--user/perl-moosex-role-parameterised/APKBUILD25
-rw-r--r--user/perl-moosex-strictconstructor/APKBUILD17
-rw-r--r--user/perl-moox-late/APKBUILD23
-rw-r--r--user/perl-moox-struct/APKBUILD34
-rw-r--r--user/perl-moox-types-mooselike/APKBUILD18
-rw-r--r--user/perl-moox/APKBUILD17
-rw-r--r--user/perl-mouse/APKBUILD29
-rw-r--r--user/perl-mousex-nativetraits/APKBUILD16
-rw-r--r--user/perl-mozilla-ca/APKBUILD20
-rw-r--r--user/perl-mro-compat/APKBUILD21
-rw-r--r--user/perl-multidimensional/APKBUILD34
-rw-r--r--user/perl-namespace-autoclean/APKBUILD23
-rw-r--r--user/perl-namespace-clean/APKBUILD17
-rw-r--r--user/perl-net-dbus/APKBUILD35
-rw-r--r--user/perl-net-snmp/APKBUILD24
-rw-r--r--user/perl-number-compare/APKBUILD17
-rw-r--r--user/perl-number-range/APKBUILD34
-rw-r--r--user/perl-object-id/APKBUILD35
-rw-r--r--user/perl-object-pad/APKBUILD35
-rw-r--r--user/perl-package-deprecationmanager/APKBUILD21
-rw-r--r--user/perl-package-stash-xs/APKBUILD23
-rw-r--r--user/perl-package-stash/APKBUILD22
-rw-r--r--user/perl-padwalker/APKBUILD34
-rw-r--r--user/perl-parallel-forkmanager/APKBUILD35
-rw-r--r--user/perl-params-util/APKBUILD18
-rw-r--r--user/perl-params-validate/APKBUILD21
-rw-r--r--user/perl-params-validationcompiler/APKBUILD24
-rw-r--r--user/perl-parse-recdescent/APKBUILD18
-rw-r--r--user/perl-patchreader/APKBUILD18
-rw-r--r--user/perl-path-iterator-rule/APKBUILD35
-rw-r--r--user/perl-path-tiny/APKBUILD20
-rw-r--r--user/perl-pegex/APKBUILD26
-rw-r--r--user/perl-perl-tidy/APKBUILD19
-rw-r--r--user/perl-perlio-utf8_strict/APKBUILD23
-rw-r--r--user/perl-plack/APKBUILD22
-rw-r--r--user/perl-pod-constants/APKBUILD35
-rw-r--r--user/perl-pod-coverage/APKBUILD18
-rw-r--r--user/perl-pod-parser/APKBUILD34
-rw-r--r--user/perl-posix-strftime-compiler/APKBUILD26
-rw-r--r--user/perl-posix-strftime-compiler/change-timezone-name.patch12
-rw-r--r--user/perl-probe-perl/APKBUILD34
-rw-r--r--user/perl-re-engine-re2/APKBUILD34
-rw-r--r--user/perl-regexp-common/APKBUILD34
-rw-r--r--user/perl-regexp-pattern-defhash/APKBUILD33
-rw-r--r--user/perl-regexp-pattern-license/APKBUILD36
-rw-r--r--user/perl-regexp-pattern/APKBUILD34
-rw-r--r--user/perl-role-hooks/APKBUILD36
-rw-r--r--user/perl-role-tiny/APKBUILD20
-rw-r--r--user/perl-router-simple/APKBUILD18
-rw-r--r--user/perl-scalar-list-utils/APKBUILD35
-rw-r--r--user/perl-scope-guard/APKBUILD17
-rw-r--r--user/perl-set-intspan/APKBUILD34
-rw-r--r--user/perl-soap-lite/APKBUILD18
-rw-r--r--user/perl-software-license/APKBUILD34
-rw-r--r--user/perl-sort-key/APKBUILD34
-rw-r--r--user/perl-specio-library-path-tiny/APKBUILD19
-rw-r--r--user/perl-specio/APKBUILD21
-rw-r--r--user/perl-stream-buffered/APKBUILD18
-rw-r--r--user/perl-strictures/APKBUILD34
-rw-r--r--user/perl-string-copyright/APKBUILD35
-rw-r--r--user/perl-string-escape/APKBUILD34
-rw-r--r--user/perl-string-license/APKBUILD37
-rw-r--r--user/perl-string-shellquote/APKBUILD17
-rw-r--r--user/perl-string-tagged-terminal/APKBUILD36
-rw-r--r--user/perl-string-tagged/APKBUILD35
-rw-r--r--user/perl-string-trim-more/APKBUILD34
-rw-r--r--user/perl-struct-dumb/APKBUILD35
-rw-r--r--user/perl-sub-exporter-progressive/APKBUILD16
-rw-r--r--user/perl-sub-exporter/APKBUILD30
-rw-r--r--user/perl-sub-handlesvia/APKBUILD37
-rw-r--r--user/perl-sub-identify/APKBUILD17
-rw-r--r--user/perl-sub-info/APKBUILD34
-rw-r--r--user/perl-sub-install/APKBUILD17
-rw-r--r--user/perl-sub-name/APKBUILD19
-rw-r--r--user/perl-sub-quote/APKBUILD23
-rw-r--r--user/perl-sub-uplevel/APKBUILD34
-rw-r--r--user/perl-syntax-keyword-match/APKBUILD35
-rw-r--r--user/perl-syntax-keyword-try/APKBUILD35
-rw-r--r--user/perl-task-freecellsolver-testing/APKBUILD21
-rw-r--r--user/perl-task-test-run-allplugins/APKBUILD21
-rw-r--r--user/perl-task-weaken/APKBUILD18
-rw-r--r--user/perl-template-gd/APKBUILD18
-rw-r--r--user/perl-template-toolkit/APKBUILD21
-rw-r--r--user/perl-term-readkey/APKBUILD12
-rw-r--r--user/perl-term-size-any/APKBUILD34
-rw-r--r--user/perl-term-size-perl/APKBUILD34
-rw-r--r--user/perl-term-table/APKBUILD35
-rw-r--r--user/perl-test-class-most/APKBUILD17
-rw-r--r--user/perl-test-class/APKBUILD23
-rw-r--r--user/perl-test-cleannamespaces/APKBUILD19
-rw-r--r--user/perl-test-command-simple/APKBUILD30
-rw-r--r--user/perl-test-command/APKBUILD31
-rw-r--r--user/perl-test-data-split/APKBUILD21
-rw-r--r--user/perl-test-deep/APKBUILD34
-rw-r--r--user/perl-test-differences/APKBUILD18
-rw-r--r--user/perl-test-failwarnings/APKBUILD34
-rw-r--r--user/perl-test-file-sharedir/APKBUILD18
-rw-r--r--user/perl-test-file/APKBUILD22
-rw-r--r--user/perl-test-filename/APKBUILD34
-rw-r--r--user/perl-test-identity/APKBUILD34
-rw-r--r--user/perl-test-manifest/APKBUILD26
-rw-r--r--user/perl-test-memory-cycle/APKBUILD34
-rw-r--r--user/perl-test-mockrandom/APKBUILD14
-rw-r--r--user/perl-test-mocktime/APKBUILD18
-rw-r--r--user/perl-test-more-utf8/APKBUILD34
-rw-r--r--user/perl-test-most/APKBUILD22
-rw-r--r--user/perl-test-number-delta/APKBUILD34
-rw-r--r--user/perl-test-output/APKBUILD30
-rw-r--r--user/perl-test-perltidy/APKBUILD23
-rw-r--r--user/perl-test-pod-coverage/APKBUILD16
-rw-r--r--user/perl-test-refcount/APKBUILD35
-rw-r--r--user/perl-test-regexp-pattern/APKBUILD34
-rw-r--r--user/perl-test-run-cmdline/APKBUILD23
-rw-r--r--user/perl-test-run-plugin-ai/APKBUILD19
-rw-r--r--user/perl-test-run-plugin-bof/APKBUILD19
-rw-r--r--user/perl-test-run-plugin-cfv/APKBUILD19
-rw-r--r--user/perl-test-run-plugin-cs/APKBUILD19
-rw-r--r--user/perl-test-run-plugin-tdf/APKBUILD19
-rw-r--r--user/perl-test-run/APKBUILD19
-rw-r--r--user/perl-test-runvalgrind/APKBUILD19
-rw-r--r--user/perl-test-script/APKBUILD34
-rw-r--r--user/perl-test-sharedfork/APKBUILD18
-rw-r--r--user/perl-test-some/APKBUILD35
-rw-r--r--user/perl-test-taint/APKBUILD22
-rw-r--r--user/perl-test-tcp/APKBUILD22
-rw-r--r--user/perl-test-time/APKBUILD22
-rw-r--r--user/perl-test-trailingspace/APKBUILD19
-rw-r--r--user/perl-test-trap/APKBUILD21
-rw-r--r--user/perl-test-utf8/APKBUILD20
-rw-r--r--user/perl-test-warn/APKBUILD34
-rw-r--r--user/perl-test-warnings/APKBUILD34
-rw-r--r--user/perl-test2-plugin-nowarnings/APKBUILD35
-rw-r--r--user/perl-test2-suite/APKBUILD38
-rw-r--r--user/perl-test2-tools-command/APKBUILD34
-rw-r--r--user/perl-text-diff/APKBUILD16
-rw-r--r--user/perl-text-glob/APKBUILD17
-rw-r--r--user/perl-text-sprintf-named/APKBUILD21
-rw-r--r--user/perl-text-template/APKBUILD34
-rw-r--r--user/perl-text-unidecode/APKBUILD34
-rw-r--r--user/perl-throwable/APKBUILD23
-rw-r--r--user/perl-tie-ixhash/APKBUILD34
-rw-r--r--user/perl-time-duration-parse/APKBUILD21
-rw-r--r--user/perl-time-duration/APKBUILD21
-rw-r--r--user/perl-timedate/APKBUILD22
-rw-r--r--user/perl-type-tiny/APKBUILD21
-rw-r--r--user/perl-types-serialiser/APKBUILD20
-rw-r--r--user/perl-universal-require/APKBUILD21
-rw-r--r--user/perl-variable-magic/APKBUILD21
-rw-r--r--user/perl-www-form-urlencoded/APKBUILD23
-rw-r--r--user/perl-x11-xcb/APKBUILD23
-rw-r--r--user/perl-xml-descent/APKBUILD20
-rw-r--r--user/perl-xml-namespacesupport/APKBUILD18
-rw-r--r--user/perl-xml-parser-lite/APKBUILD18
-rw-r--r--user/perl-xml-parser/APKBUILD31
-rw-r--r--user/perl-xml-sax-base/APKBUILD17
-rw-r--r--user/perl-xml-sax/APKBUILD23
-rw-r--r--user/perl-xml-sax/install-fix.patch2
-rw-r--r--user/perl-xml-simple/APKBUILD20
-rw-r--r--user/perl-xml-tokeparser/APKBUILD18
-rw-r--r--user/perl-xml-twig/APKBUILD18
-rw-r--r--user/perl-xmlrpc-lite/APKBUILD20
-rw-r--r--user/perl-xs-object-magic/APKBUILD23
-rw-r--r--user/perl-xs-parse-keyword/APKBUILD35
-rw-r--r--user/perl-xs-parse-sublike/APKBUILD35
-rw-r--r--user/perl-xstring/APKBUILD30
-rw-r--r--user/perl-xxx/APKBUILD34
-rw-r--r--user/perl-yaml-libyaml/APKBUILD24
-rw-r--r--user/perl-yaml-pp/APKBUILD35
-rw-r--r--user/phonon-vlc/APKBUILD17
-rw-r--r--user/phonon-vlc/ecm.patch11
-rw-r--r--user/phonon/APKBUILD20
-rw-r--r--user/php7-apcu/APKBUILD16
-rw-r--r--user/php7/APKBUILD491
-rw-r--r--user/php7/allow-build-recode-and-imap-together.patch20
-rw-r--r--user/php7/disabled-tests.list87
-rw-r--r--user/php7/enchant-2.patch75
-rw-r--r--user/php7/fix-tests-devserver.patch23
-rw-r--r--user/php7/fpm-paths.patch10
-rw-r--r--user/php7/gh14834.patch62
-rw-r--r--user/php7/install-pear.patch7
-rw-r--r--user/php7/libgd-unused-constants.patch51
-rw-r--r--user/php7/no-max-ent-size.patch183
-rw-r--r--user/php7/php-fpm.initd7
-rw-r--r--user/php7/pwbuflen.patch15
-rw-r--r--user/php7/test-fixes.patch71
-rw-r--r--user/php7/zend_bool.patch19
-rw-r--r--user/physfs/APKBUILD5
-rw-r--r--user/physlock/APKBUILD13
-rw-r--r--user/physlock/makefile.patch14
-rw-r--r--user/physlock/utmps.patch30
-rw-r--r--user/picmi/APKBUILD42
-rw-r--r--user/picocom/APKBUILD6
-rw-r--r--user/pidgin-otr/APKBUILD5
-rw-r--r--user/pidgin/APKBUILD29
-rw-r--r--user/pidgin/pidgin-2.14.8-libpurple_test_fix.patch52
-rw-r--r--user/pigz/APKBUILD35
-rw-r--r--user/pimcommon/APKBUILD48
-rw-r--r--user/pinentry/APKBUILD14
-rw-r--r--user/pixman/APKBUILD19
-rw-r--r--user/pixman/stacksize-reduction.patch17
-rw-r--r--user/plasma-browser-integration/APKBUILD42
-rw-r--r--user/plasma-desktop/APKBUILD33
-rw-r--r--user/plasma-desktop/remove-discover-from-taskmanager.patch16
-rw-r--r--user/plasma-framework/APKBUILD14
-rw-r--r--user/plasma-integration/APKBUILD11
-rw-r--r--user/plasma-meta/APKBUILD21
-rw-r--r--user/plasma-nm/APKBUILD47
-rw-r--r--user/plasma-pa/APKBUILD42
-rw-r--r--user/plasma-systemmonitor/APKBUILD41
-rw-r--r--user/plasma-thunderbolt/APKBUILD41
-rw-r--r--user/plasma-vault/APKBUILD42
-rw-r--r--user/plasma-wayland-protocols/APKBUILD39
-rw-r--r--user/plasma-workspace-wallpapers/APKBUILD11
-rw-r--r--user/plasma-workspace/APKBUILD34
-rw-r--r--user/plasma-workspace/backport1.patch40
-rw-r--r--user/plasma-workspace/backport2.patch41
-rw-r--r--user/plasma-workspace/libkworkspace.patch35
-rw-r--r--user/plib/APKBUILD20
-rw-r--r--user/plib/CVE-2011-4620.patch (renamed from user/plib/plib-1.8.5-CVE-2011-4620.patch)0
-rw-r--r--user/plib/CVE-2012-4552.patch (renamed from user/plib/plib-1.8.5-CVE-2012-4552.patch)0
-rw-r--r--user/pluma-plugins/APKBUILD34
-rw-r--r--user/pluma/APKBUILD17
-rw-r--r--user/pm-quirks/APKBUILD7
-rw-r--r--user/pm-utils/APKBUILD2
-rw-r--r--user/polkit-kde-agent-1/APKBUILD41
-rw-r--r--user/polkit-qt-1/APKBUILD11
-rw-r--r--user/polkit/0001-make-netgroup-support-optional.patch480
-rw-r--r--user/polkit/APKBUILD62
-rw-r--r--user/polkit/CVE-2018-19788.patch183
-rw-r--r--user/polkit/fix-consolekit-db-stat.patch6
-rw-r--r--user/polkit/fix-parallel-make.patch40
-rw-r--r--user/ponysay/APKBUILD2
-rw-r--r--user/poppler-qt5/APKBUILD54
-rw-r--r--user/poppler/APKBUILD42
-rw-r--r--user/postfix/APKBUILD27
-rw-r--r--user/postfix/honour-config-directory.patch2
-rw-r--r--user/postgresql/APKBUILD57
-rw-r--r--user/postgresql/disable-broken-tests.patch13
-rw-r--r--user/postgresql/initdb.patch14
-rw-r--r--user/postgresql/perl-rpath.patch30
-rw-r--r--user/postgresql/postgresql.initd6
-rw-r--r--user/powerdevil/APKBUILD16
-rw-r--r--user/powerpc-utils/APKBUILD4
-rw-r--r--user/ppp/03_all_use_internal_logwtmp.patch22
-rw-r--r--user/ppp/04_all_mpls.patch427
-rw-r--r--user/ppp/06_all_killaddr-smarter.patch131
-rw-r--r--user/ppp/08_all_wait-children.patch76
-rw-r--r--user/ppp/12_all_linkpidfile.patch93
-rw-r--r--user/ppp/16_all_auth-fail.patch138
-rw-r--r--user/ppp/19_all_radius_pid_overflow.patch14
-rw-r--r--user/ppp/20_all_dev-ppp.patch20
-rw-r--r--user/ppp/24_all_passwordfd-read-early.patch84
-rw-r--r--user/ppp/26_all_pppd-usepeerwins.patch256
-rw-r--r--user/ppp/28_all_connect-errors.patch11
-rw-r--r--user/ppp/32_all_pado-timeout.patch220
-rw-r--r--user/ppp/34_all_lcp-echo-adaptive.patch56
-rw-r--r--user/ppp/80_all_eaptls-mppe-1.101a.patch3233
-rw-r--r--user/ppp/85_all_dhcp-make-vars.patch19
-rw-r--r--user/ppp/86_all_dhcp-sys_error_to_strerror.patch128
-rw-r--r--user/ppp/APKBUILD121
-rw-r--r--user/ppp/CVE-2020-8597.patch37
-rw-r--r--user/ppp/adelie.patch79
-rw-r--r--user/ppp/dhcp.patch335
-rw-r--r--user/ppp/fix-linux-5.15-include.patch12
-rw-r--r--user/ppp/install-path.patch11
-rw-r--r--user/ppp/musl-fix-headers.patch99
-rw-r--r--user/ppp/ppp.mod10
-rw-r--r--user/ppp/ppp.pamd7
-rw-r--r--user/ppp/pppd.initd13
-rw-r--r--user/ppp/utmpx.patch142
-rw-r--r--user/prison/APKBUILD18
-rw-r--r--user/prison/code128.patch245
-rw-r--r--user/prison/endian.patch33
-rw-r--r--user/prosody/APKBUILD18
-rw-r--r--user/prosody/luasec-0.6-fix.patch14
-rw-r--r--user/prosody/mallinfo.patch13
-rw-r--r--user/prosody/prosody.initd2
-rw-r--r--user/prosody/prosody.pre-install10
-rw-r--r--user/prosody/prosodyctl.patch11
-rw-r--r--user/protobuf/32bit.patch121
-rw-r--r--user/protobuf/APKBUILD105
-rw-r--r--user/protobuf/cxx14.patch115
-rw-r--r--user/protobuf/musl-fix.patch22
-rw-r--r--user/protobuf/python-311.patch134
-rw-r--r--user/protobuf/trim-rakefile.patch72
-rw-r--r--user/proxymngr/APKBUILD37
-rw-r--r--user/pulseaudio/APKBUILD19
-rw-r--r--user/pulseaudio/pulseaudio.pre-install8
-rw-r--r--user/purple-plugin-pack/APKBUILD7
-rw-r--r--user/purpose/APKBUILD42
-rw-r--r--user/pv/APKBUILD34
-rw-r--r--user/py3-alabaster/APKBUILD9
-rw-r--r--user/py3-apkkit/APKBUILD25
-rw-r--r--user/py3-appdirs/APKBUILD28
-rw-r--r--user/py3-asn1crypto/APKBUILD11
-rw-r--r--user/py3-atomicwrites/APKBUILD7
-rw-r--r--user/py3-attrs/APKBUILD9
-rw-r--r--user/py3-babel/APKBUILD16
-rw-r--r--user/py3-bcrypt/APKBUILD32
-rw-r--r--user/py3-certifi/APKBUILD14
-rw-r--r--user/py3-certifi/use-system-certs.patch2
-rw-r--r--user/py3-cffi/APKBUILD13
-rw-r--r--user/py3-chardet/APKBUILD21
-rw-r--r--user/py3-chardet/pytest.patch24
-rw-r--r--user/py3-commonmark/APKBUILD10
-rw-r--r--user/py3-configargparse/APKBUILD15
-rw-r--r--user/py3-configargparse/python3.patch11
-rw-r--r--user/py3-configobj/APKBUILD8
-rw-r--r--user/py3-cparser/APKBUILD7
-rw-r--r--user/py3-cryptography/APKBUILD22
-rw-r--r--user/py3-cython/APKBUILD31
-rw-r--r--user/py3-dbus-python/APKBUILD25
-rw-r--r--user/py3-decorator/APKBUILD31
-rw-r--r--user/py3-distutils-extra/APKBUILD14
-rw-r--r--user/py3-docopt/APKBUILD32
-rw-r--r--user/py3-docutils/APKBUILD31
-rw-r--r--user/py3-docutils/py311-test.patch246
-rw-r--r--user/py3-flup/APKBUILD24
-rw-r--r--user/py3-freezegun/APKBUILD11
-rw-r--r--user/py3-future/APKBUILD13
-rw-r--r--user/py3-html5lib/APKBUILD16
-rw-r--r--user/py3-html5lib/pytest.patch163
-rw-r--r--user/py3-hypothesis/APKBUILD15
-rw-r--r--user/py3-idna/APKBUILD7
-rw-r--r--user/py3-imagesize/APKBUILD7
-rw-r--r--user/py3-incremental/APKBUILD3
-rw-r--r--user/py3-iniconfig/APKBUILD32
-rw-r--r--user/py3-iniconfig/version.patch23
-rw-r--r--user/py3-invoke/APKBUILD33
-rw-r--r--user/py3-jinja2/APKBUILD26
-rw-r--r--user/py3-josepy/APKBUILD10
-rw-r--r--user/py3-lxml/APKBUILD9
-rw-r--r--user/py3-mako/APKBUILD13
-rw-r--r--user/py3-markdown/APKBUILD14
-rw-r--r--user/py3-markupsafe/APKBUILD17
-rw-r--r--user/py3-mock/APKBUILD9
-rw-r--r--user/py3-monotonic/APKBUILD31
-rw-r--r--user/py3-more-itertools/APKBUILD13
-rw-r--r--user/py3-more-itertools/fix-test-32bit-overflow.patch25
-rw-r--r--user/py3-ncclient/APKBUILD49
-rw-r--r--user/py3-netconf/APKBUILD31
-rw-r--r--user/py3-netifaces/APKBUILD28
-rw-r--r--user/py3-olefile/APKBUILD4
-rw-r--r--user/py3-openssl/APKBUILD14
-rw-r--r--user/py3-ordered-set/APKBUILD24
-rw-r--r--user/py3-packaging/APKBUILD21
-rw-r--r--user/py3-packaging/test-glibc.patch10
-rw-r--r--user/py3-paho-mqtt/APKBUILD33
-rw-r--r--user/py3-paho-mqtt/setup.patch25
-rw-r--r--user/py3-paramiko/APKBUILD32
-rw-r--r--user/py3-parsedatetime/APKBUILD10
-rw-r--r--user/py3-passlib/APKBUILD34
-rw-r--r--user/py3-pbr/APKBUILD13
-rw-r--r--user/py3-pexpect/APKBUILD15
-rw-r--r--user/py3-pillow/APKBUILD62
-rw-r--r--user/py3-pluggy/APKBUILD13
-rw-r--r--user/py3-pluggy/scm.patch14
-rw-r--r--user/py3-ply/APKBUILD3
-rw-r--r--user/py3-pretend/APKBUILD9
-rw-r--r--user/py3-psutil/APKBUILD30
-rw-r--r--user/py3-psutil/utmpx.patch87
-rw-r--r--user/py3-psycopg2/APKBUILD28
-rw-r--r--user/py3-ptyprocess/APKBUILD16
-rw-r--r--user/py3-py/APKBUILD15
-rw-r--r--user/py3-py/scm.patch12
-rw-r--r--user/py3-pyang/APKBUILD40
-rw-r--r--user/py3-pycairo/APKBUILD19
-rw-r--r--user/py3-pycairo/meson-idiocy.patch27
-rw-r--r--user/py3-pycotap/APKBUILD3
-rw-r--r--user/py3-pygments/APKBUILD19
-rw-r--r--user/py3-pygobject/APKBUILD15
-rw-r--r--user/py3-pyirc/APKBUILD33
-rw-r--r--user/py3-pyirc/new-taillight.patch21
-rw-r--r--user/py3-pynacl/APKBUILD32
-rw-r--r--user/py3-pyparsing/APKBUILD11
-rw-r--r--user/py3-pysocks/APKBUILD13
-rw-r--r--user/py3-pytest-expect/APKBUILD8
-rw-r--r--user/py3-pytest-relaxed/APKBUILD32
-rw-r--r--user/py3-pytest/APKBUILD24
-rw-r--r--user/py3-pytest/scm.patch13
-rw-r--r--user/py3-python-dateutil/APKBUILD20
-rw-r--r--user/py3-pyyaml/APKBUILD14
-rw-r--r--user/py3-random2/APKBUILD21
-rw-r--r--user/py3-recommonmark/APKBUILD8
-rw-r--r--user/py3-requests-toolbelt/APKBUILD7
-rw-r--r--user/py3-requests/APKBUILD18
-rw-r--r--user/py3-rfc3339/APKBUILD9
-rw-r--r--user/py3-roman/APKBUILD7
-rw-r--r--user/py3-six/APKBUILD7
-rw-r--r--user/py3-smartypants/APKBUILD35
-rw-r--r--user/py3-smartypants/hashbang.patch8
-rw-r--r--user/py3-snowballstemmer/APKBUILD11
-rw-r--r--user/py3-sortedcontainers/APKBUILD30
-rw-r--r--user/py3-sphinx-rtd-theme/APKBUILD2
-rw-r--r--user/py3-sphinx/APKBUILD17
-rw-r--r--user/py3-sphinxcontrib-applehelp/APKBUILD13
-rw-r--r--user/py3-sphinxcontrib-asyncio/APKBUILD33
-rw-r--r--user/py3-sphinxcontrib-devhelp/APKBUILD13
-rw-r--r--user/py3-sphinxcontrib-htmlhelp/APKBUILD13
-rw-r--r--user/py3-sphinxcontrib-jsmath/APKBUILD9
-rw-r--r--user/py3-sphinxcontrib-qthelp/APKBUILD13
-rw-r--r--user/py3-sphinxcontrib-serializinghtml/APKBUILD13
-rw-r--r--user/py3-sshutil/APKBUILD31
-rw-r--r--user/py3-taillight/APKBUILD29
-rw-r--r--user/py3-toml/APKBUILD28
-rw-r--r--user/py3-tox/APKBUILD13
-rw-r--r--user/py3-transitions/APKBUILD33
-rw-r--r--user/py3-twisted/APKBUILD28
-rw-r--r--user/py3-twisted/CVE-2020-10108-and-2020-10109.patch260
-rw-r--r--user/py3-typogrify/APKBUILD28
-rw-r--r--user/py3-tz/APKBUILD13
-rw-r--r--user/py3-tz/zoneinfo-fix.patch2
-rw-r--r--user/py3-u-msgpack-python/APKBUILD14
-rw-r--r--user/py3-urllib3/APKBUILD10
-rw-r--r--user/py3-virtualenv/APKBUILD21
-rw-r--r--user/py3-virtualenv/test-python3.6.patch96
-rw-r--r--user/py3-wcwidth/APKBUILD34
-rw-r--r--user/py3-wcwidth/run-tests.patch16
-rw-r--r--user/py3-webencodings/APKBUILD10
-rw-r--r--user/py3-websockets/APKBUILD33
-rw-r--r--user/py3-wheel/APKBUILD30
-rw-r--r--user/py3-zipp/APKBUILD34
-rw-r--r--user/py3-zipp/scm.patch19
-rw-r--r--user/py3-zope-component/APKBUILD7
-rw-r--r--user/py3-zope-deferredimport/APKBUILD10
-rw-r--r--user/py3-zope-deprecation/APKBUILD6
-rw-r--r--user/py3-zope-event/APKBUILD13
-rw-r--r--user/py3-zope-hookable/APKBUILD16
-rw-r--r--user/py3-zope-interface/APKBUILD15
-rw-r--r--user/py3-zope-proxy/APKBUILD10
-rw-r--r--user/qastools/APKBUILD18
-rw-r--r--user/qca/APKBUILD19
-rw-r--r--user/qca/gcc11.patch26
-rw-r--r--user/qca/test.patch77
-rw-r--r--user/qemu/APKBUILD125
-rw-r--r--user/qemu/CVE-2020-11102.patch144
-rw-r--r--user/qemu/CVE-2020-1711.patch61
-rw-r--r--user/qemu/MAP_SYNC-fix.patch22
-rw-r--r--user/qemu/fix-no-pie-ld-flag.patch71
-rw-r--r--user/qemu/fix-sockios-header.patch13
-rw-r--r--user/qemu/qemu.pre-install4
-rw-r--r--user/qemu/time64.patch40
-rw-r--r--user/qml-box2d/APKBUILD2
-rw-r--r--user/qpdf/APKBUILD13
-rw-r--r--user/qpdf/fix-deprecated-use-of-egrep.patch22
-rw-r--r--user/qpdfview/APKBUILD19
-rw-r--r--user/qpdfview/qpdfview-0.4.18-qt-5.15.patch11
-rw-r--r--user/qps/APKBUILD30
-rw-r--r--user/qqc2-desktop-style/APKBUILD41
-rw-r--r--user/qt-creator/APKBUILD33
-rw-r--r--user/qt-creator/cstdint.patch27
-rw-r--r--user/qt-creator/llvm13.patch71
-rw-r--r--user/qt-creator/llvm15.patch29
-rw-r--r--user/qt-creator/llvm16-deux.patch45
-rw-r--r--user/qt-creator/llvm16.patch44
-rw-r--r--user/qt-creator/llvm17.patch38
-rw-r--r--user/qt-creator/llvm18.patch30
-rw-r--r--user/qt-creator/llvm19.patch28
-rw-r--r--user/qt-creator/malloc_trim.patch12
-rw-r--r--user/qt5-qtbase/APKBUILD69
-rw-r--r--user/qt5-qtbase/big-endian-scroll-wheel.patch55
-rw-r--r--user/qt5-qtbase/kde-lts.patch64884
-rw-r--r--user/qt5-qtbase/qt-musl-iconv-no-bom.patch2
-rw-r--r--user/qt5-qtdeclarative/APKBUILD26
-rw-r--r--user/qt5-qtdeclarative/add-execinfo.patch2
-rw-r--r--user/qt5-qtdeclarative/broken-bgra-be.patch11
-rw-r--r--user/qt5-qtdeclarative/endian.patch31
-rw-r--r--user/qt5-qtdeclarative/kde-lts.patch1724
-rw-r--r--user/qt5-qtdeclarative/python3.patch31
-rw-r--r--user/qt5-qtgraphicaleffects/APKBUILD18
-rw-r--r--user/qt5-qtimageformats/APKBUILD33
-rw-r--r--user/qt5-qtimageformats/kde-lts.patch78
-rw-r--r--user/qt5-qtmultimedia/APKBUILD21
-rw-r--r--user/qt5-qtmultimedia/kde-lts.patch64
-rw-r--r--user/qt5-qtnetworkauth/APKBUILD27
-rw-r--r--user/qt5-qtpositioning/APKBUILD23
-rw-r--r--user/qt5-qtpositioning/no-getting-thread-names.patch12
-rw-r--r--user/qt5-qtquickcontrols/APKBUILD18
-rw-r--r--user/qt5-qtquickcontrols2/APKBUILD22
-rw-r--r--user/qt5-qtquickcontrols2/kde-lts.patch403
-rw-r--r--user/qt5-qtscript/APKBUILD25
-rw-r--r--user/qt5-qtscript/gcc8.patch238
-rw-r--r--user/qt5-qtsensors/APKBUILD16
-rw-r--r--user/qt5-qtserialport/APKBUILD16
-rw-r--r--user/qt5-qtspeech/APKBUILD26
-rw-r--r--user/qt5-qtspeech/fix-linking-order.patch6
-rw-r--r--user/qt5-qtspeech/kde-lts.patch36
-rw-r--r--user/qt5-qtsvg/APKBUILD20
-rw-r--r--user/qt5-qtsvg/kde-lts.patch716
-rw-r--r--user/qt5-qttools/APKBUILD43
-rw-r--r--user/qt5-qtvirtualkeyboard/APKBUILD30
-rw-r--r--user/qt5-qtvirtualkeyboard/kde-lts.patch188
-rw-r--r--user/qt5-qtwayland/APKBUILD49
-rw-r--r--user/qt5-qtwayland/kde-lts.patch3481
-rw-r--r--user/qt5-qtwebchannel/APKBUILD21
-rw-r--r--user/qt5-qtwebchannel/kde-lts.patch576
-rw-r--r--user/qt5-qtwebkit/0001-Add-ARM-64-support.patch13
-rw-r--r--user/qt5-qtwebkit/APKBUILD141
-rw-r--r--user/qt5-qtwebkit/armv6.patch72
-rw-r--r--user/qt5-qtwebkit/fix-execinfo.patch20
-rw-r--r--user/qt5-qtwebkit/fix-rpath.patch11
-rw-r--r--user/qt5-qtwebkit/glib-compat.patch37
-rw-r--r--user/qt5-qtwebkit/icu-68.patch124
-rw-r--r--user/qt5-qtwebkit/icu-75.patch55
-rw-r--r--user/qt5-qtwebkit/jsc-musl.patch32
-rw-r--r--user/qt5-qtwebkit/missing-header.patch11
-rw-r--r--user/qt5-qtwebkit/pic.patch11
-rw-r--r--user/qt5-qtwebkit/ppc-llint.patch32
-rw-r--r--user/qt5-qtwebkit/ppc-ucontext.patch15
-rw-r--r--user/qt5-qtwebkit/ppc64-llint.patch28
-rw-r--r--user/qt5-qtwebkit/webkit-offlineasm-warnings-ruby27.patch46
-rw-r--r--user/qt5-qtwebsockets/APKBUILD19
-rw-r--r--user/qt5-qtwebsockets/kde-lts.patch115
-rw-r--r--user/qt5-qtx11extras/APKBUILD16
-rw-r--r--user/qt5-qtxmlpatterns/APKBUILD18
-rw-r--r--user/qt5ct/APKBUILD12
-rw-r--r--user/qterminal/APKBUILD27
-rw-r--r--user/qtermwidget/APKBUILD30
-rw-r--r--user/qtermwidget/fix-linking.patch11
-rw-r--r--user/qtkeychain/APKBUILD23
-rw-r--r--user/qtxdg-tools/APKBUILD42
-rw-r--r--user/quassel/APKBUILD44
-rw-r--r--user/quaternion/APKBUILD13
-rw-r--r--user/quazip/APKBUILD39
-rw-r--r--user/r/APKBUILD12
-rw-r--r--user/r/curl-8-support.patch62
-rw-r--r--user/ragel/APKBUILD9
-rw-r--r--user/range-v3/APKBUILD37
-rw-r--r--user/raptor2/APKBUILD22
-rw-r--r--user/raptor2/CVE-2017-18926.patch40
-rw-r--r--user/raptor2/CVE-2020-25713.patch29
-rw-r--r--user/raptor2/fix-checked-field-issue.patch19
-rw-r--r--user/rarian/APKBUILD5
-rw-r--r--user/rasqal/APKBUILD5
-rw-r--r--user/rc/APKBUILD8
-rw-r--r--user/rdesktop/APKBUILD24
-rw-r--r--user/rdesktop/gssapi.patch82
-rw-r--r--user/rdesktop/signed-int.patch11
-rw-r--r--user/rdfind/APKBUILD35
-rw-r--r--user/re2c/APKBUILD17
-rw-r--r--user/readstat/APKBUILD45
-rw-r--r--user/readstat/big-endian.patch76
-rw-r--r--user/readstat/buf-overflow.patch26
-rw-r--r--user/readstat/use-after-free.patch37
-rw-r--r--user/recode/APKBUILD9
-rw-r--r--user/redis/APKBUILD19
-rw-r--r--user/redis/redis.pre-install5
-rw-r--r--user/redland/APKBUILD5
-rw-r--r--user/redshift/APKBUILD12
-rw-r--r--user/rendercheck/APKBUILD33
-rw-r--r--user/rfkill/APKBUILD6
-rw-r--r--user/rgb/APKBUILD9
-rw-r--r--user/rinutils/APKBUILD41
-rw-r--r--user/ripgrep/APKBUILD173
-rw-r--r--user/ristretto/APKBUILD20
-rw-r--r--user/rlottie/APKBUILD36
-rw-r--r--user/rocs/APKBUILD18
-rw-r--r--user/rofi/APKBUILD40
-rw-r--r--user/rpcbind/APKBUILD16
-rw-r--r--user/rpcbind/rpcbind.pre-install5
-rw-r--r--user/rpcsvc-proto/APKBUILD9
-rw-r--r--user/rpm/APKBUILD57
-rw-r--r--user/rpm/include-fcntl.patch15
-rw-r--r--user/rpm/musl.patch33
-rw-r--r--user/rpm2targz/APKBUILD3
-rw-r--r--user/rrdtool/APKBUILD31
-rw-r--r--user/rrdtool/no-posix-fallocate.patch12
-rw-r--r--user/rrdtool/signedness.patch32
-rw-r--r--user/rrdtool/time64.patch51
-rw-r--r--user/rsibreak/APKBUILD9
-rw-r--r--user/rspamd/10-conf-split-workers.patch88
-rw-r--r--user/rspamd/APKBUILD142
-rw-r--r--user/rspamd/rspamd.confd13
-rw-r--r--user/rspamd/rspamd.initd51
-rw-r--r--user/rspamd/rspamd.logrotated11
-rw-r--r--user/rspamd/rspamd.pre-install6
-rw-r--r--user/rtmpdump/APKBUILD24
-rw-r--r--user/rtmpdump/openssl11.patch251
-rw-r--r--user/rttr/APKBUILD56
-rw-r--r--user/rttr/arm64.patch22
-rw-r--r--user/rttr/clang.patch141
-rw-r--r--user/rttr/dlclose-doesnt-work.patch94
-rw-r--r--user/rttr/gcc9.patch103
-rw-r--r--user/rttr/header.patch21
-rw-r--r--user/rttr/install-doc.patch11
-rw-r--r--user/rttr/no-pessimising-moves.patch65
-rw-r--r--user/rttr/permissions.patch36
-rw-r--r--user/rttr/show-warnings-not-error-out.patch16
-rw-r--r--user/rubberband/APKBUILD17
-rw-r--r--user/rubberband/no-jni.patch15
-rw-r--r--user/ruby-bundler/APKBUILD42
-rw-r--r--user/ruby-diff-lcs/APKBUILD48
-rw-r--r--user/ruby-rake-compiler/APKBUILD43
-rw-r--r--user/ruby-rake-compiler/gemfile-remove-unwanted-files.patch26
-rw-r--r--user/ruby-reline/APKBUILD42
-rw-r--r--user/ruby-rspec-core/APKBUILD41
-rw-r--r--user/ruby-rspec-core/gemspec.patch16
-rw-r--r--user/ruby-rspec-expectations/APKBUILD40
-rw-r--r--user/ruby-rspec-expectations/gemspec.patch12
-rw-r--r--user/ruby-rspec-mocks/APKBUILD40
-rw-r--r--user/ruby-rspec-mocks/gemspec.patch12
-rw-r--r--user/ruby-rspec-support/APKBUILD40
-rw-r--r--user/ruby-rspec-support/gemspec.patch12
-rw-r--r--user/ruby-rspec/APKBUILD40
-rw-r--r--user/ruby-rspec/gemspec.patch14
-rw-r--r--user/ruby-rubygems-tasks/APKBUILD42
-rw-r--r--user/rust/0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch36
-rw-r--r--user/rust/0001-Fix-LLVM-build.patch22
-rw-r--r--user/rust/0002-Fix-LLVM-build.patch26
-rw-r--r--user/rust/0002-Fix-linking-to-zlib-when-cross-compiling.patch34
-rw-r--r--user/rust/0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch36
-rw-r--r--user/rust/0003-Fix-rustdoc-when-cross-compiling-on-musl.patch57
-rw-r--r--user/rust/0004-Remove-musl_root-and-CRT-fallback-from-musl-targets.patch526
-rw-r--r--user/rust/0004-Require-static-native-libraries-when-linking-static-.patch50
-rw-r--r--user/rust/0005-Prefer-libgcc_eh-over-libunwind-for-musl.patch25
-rw-r--r--user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch388
-rw-r--r--user/rust/0006-Link-libssp_nonshared.a-on-all-musl-targets.patch28
-rw-r--r--user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch24
-rw-r--r--user/rust/0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch37
-rw-r--r--user/rust/0007-test-failed-doctest-output-Fix-normalization.patch33
-rw-r--r--user/rust/0008-test-enum-debug-Correct-minimum-LLVM-version.patch67
-rw-r--r--user/rust/0008-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch22
-rw-r--r--user/rust/0009-Ignore-broken-and-non-applicable-tests.patch47
-rw-r--r--user/rust/0009-test-use-extern-for-plugins-Don-t-assume-multilib.patch30
-rw-r--r--user/rust/0010-Link-stage-2-tools-dynamically-to-libstd.patch22
-rw-r--r--user/rust/0010-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch25
-rw-r--r--user/rust/0011-Ignore-broken-and-non-applicable-tests.patch62
-rw-r--r--user/rust/0011-Move-debugger-scripts-to-usr-share-rust.patch66
-rw-r--r--user/rust/0012-Add-foxkit-target-specs.patch206
-rw-r--r--user/rust/0012-Link-stage-2-tools-dynamically-to-libstd.patch27
-rw-r--r--user/rust/0013-Move-debugger-scripts-to-usr-share-rust.patch53
-rw-r--r--user/rust/0014-Add-foxkit-target-specs.patch208
-rw-r--r--user/rust/0030-libc-linkage.patch23
-rw-r--r--user/rust/0040-rls-atomics.patch63
-rw-r--r--user/rust/APKBUILD241
-rw-r--r--user/rust/mir-opt-tests-endianness.patch1564
-rw-r--r--user/rust/powerpc-atomics.patch16
-rw-r--r--user/rust/ppc64-abi.patch251
-rw-r--r--user/rust/stdarch-ppc.patch116
-rw-r--r--user/rust/test-be.patch49
-rw-r--r--user/rust/ui-test-strings.patch25
-rw-r--r--user/rxvt-unicode/APKBUILD29
-rw-r--r--user/rxvt-unicode/kerning.patch2
-rw-r--r--user/s6-dns/APKBUILD59
-rw-r--r--user/s6-linux-utils/APKBUILD32
-rw-r--r--user/s6-networking/APKBUILD79
-rw-r--r--user/s6-portable-utils/APKBUILD32
-rw-r--r--user/samurai/APKBUILD37
-rw-r--r--user/samurai/CVE-2021-30218.patch29
-rw-r--r--user/samurai/CVE-2021-30219.patch26
-rw-r--r--user/sane-airscan/APKBUILD37
-rw-r--r--user/sane/APKBUILD54
-rw-r--r--user/sane/BTS-304.patch30
-rw-r--r--user/sane/check.patch2
-rw-r--r--user/sane/network.patch25
-rw-r--r--user/sane/pidfile.patch2
-rw-r--r--user/sane/sane.pre-install2
-rw-r--r--user/sane/saned.pre-install3
-rw-r--r--user/sassc/APKBUILD13
-rw-r--r--user/sbc/APKBUILD2
-rw-r--r--user/schismtracker/APKBUILD11
-rw-r--r--user/scons/APKBUILD4
-rw-r--r--user/screen/APKBUILD22
-rw-r--r--user/screen/missing-header.patch11
-rw-r--r--user/screen/utmpx.patch21
-rw-r--r--user/screengrab/APKBUILD28
-rw-r--r--user/screengrab/revert-kwindowsystem-bump.patch899
-rw-r--r--user/scrot/APKBUILD42
-rw-r--r--user/scrot/config.h29
-rw-r--r--user/scrot/docdir.patch51
-rw-r--r--user/scummvm/APKBUILD17
-rw-r--r--user/scummvm/fluidsynth.patch37
-rw-r--r--user/sddm-kcm/APKBUILD13
-rw-r--r--user/sddm/APKBUILD56
-rw-r--r--user/sddm/allocate-vt.patch220
-rw-r--r--user/sddm/authed.patch32
-rw-r--r--user/sddm/autologin-pam.patch80
-rw-r--r--user/sddm/autologin-type.patch31
-rw-r--r--user/sddm/ck2-support.patch89
-rw-r--r--user/sddm/cleanup-xorg.patch63
-rw-r--r--user/sddm/qt515.patch23
-rw-r--r--user/sddm/retry.patch115
-rw-r--r--user/sddm/revert-fedora.patch74
-rw-r--r--user/sddm/sddm.initd17
-rw-r--r--user/sddm/sddm.post-install2
-rw-r--r--user/sddm/session-env.patch122
-rw-r--r--user/sddm/utmpx.patch8
-rw-r--r--user/sddm/xdm.confd1
-rw-r--r--user/sddm/xephyr.patch171
-rw-r--r--user/sdl/APKBUILD9
-rw-r--r--user/sdl2/APKBUILD47
-rw-r--r--user/sdl2/altivec-detection.patch22
-rw-r--r--user/sdl2/ensure-c++-on-ppc.patch14
-rw-r--r--user/sdl2/sdl2-soname.patch13
-rw-r--r--user/sdl2_image/APKBUILD19
-rw-r--r--user/sdl_image/APKBUILD7
-rw-r--r--user/sdl_mixer/APKBUILD12
-rw-r--r--user/sdl_net/APKBUILD4
-rw-r--r--user/sdl_ttf/APKBUILD4
-rw-r--r--user/seatd/APKBUILD45
-rw-r--r--user/seatd/seatd.confd12
-rw-r--r--user/seatd/seatd.initd14
-rw-r--r--user/serf/APKBUILD6
-rw-r--r--user/setxkbmap/APKBUILD13
-rw-r--r--user/sg3_utils/APKBUILD7
-rw-r--r--user/shared-mime-info/APKBUILD22
-rw-r--r--user/showfont/APKBUILD9
-rw-r--r--user/shunit2/APKBUILD11
-rw-r--r--user/skanlite/APKBUILD15
-rw-r--r--user/skanlite/build.patch27
-rw-r--r--user/skanlite/fix-version.patch23
-rw-r--r--user/slang/APKBUILD37
-rw-r--r--user/smartmontools/APKBUILD19
-rw-r--r--user/smartmontools/musl-canonicalize_file_name.patch12
-rw-r--r--user/smproxy/APKBUILD9
-rw-r--r--user/smtpd-starttls-proxy/APKBUILD33
-rw-r--r--user/snappy/APKBUILD14
-rw-r--r--user/sntpd/APKBUILD42
-rw-r--r--user/sntpd/select.patch12
-rw-r--r--user/socat/APKBUILD16
-rw-r--r--user/solid/APKBUILD11
-rw-r--r--user/sonnet/APKBUILD24
-rw-r--r--user/sound-theme-freedesktop/APKBUILD3
-rw-r--r--user/sox/APKBUILD50
-rw-r--r--user/sox/disable-pipe-file-detection.patch11
-rw-r--r--user/sox/sox-dynamic.patch12
-rw-r--r--user/spack/APKBUILD79
-rw-r--r--user/spack/clingo-explicit-libatomic.patch12
-rw-r--r--user/spack/config.yaml22
-rw-r--r--user/spack/default-adelie-upstream-git.patch27
-rw-r--r--user/spack/default-no-buildcache.patch13
-rw-r--r--user/spack/openssl-explicit-linux-headers.patch12
-rw-r--r--user/spack/spack.post-install28
-rw-r--r--user/spdlog/APKBUILD34
-rw-r--r--user/spectacle/APKBUILD15
-rw-r--r--user/spectrwm/APKBUILD20
-rw-r--r--user/speech-dispatcher/APKBUILD16
-rw-r--r--user/speech-dispatcher/sys-types.patch11
-rw-r--r--user/speech-dispatcher/threadleak.patch84
-rw-r--r--user/speex/APKBUILD2
-rw-r--r--user/speexdsp/APKBUILD29
-rw-r--r--user/speexdsp/speexdsp-fixbuilds-774c87d.patch36
-rw-r--r--user/spice-gtk/APKBUILD70
-rw-r--r--user/spice-gtk/fix-dirty-spicy-corruption.patch23
-rw-r--r--user/spice-gtk/macro.patch33
-rw-r--r--user/spice-protocol/APKBUILD20
-rw-r--r--user/spice/APKBUILD7
-rw-r--r--user/spirv-headers/APKBUILD40
-rw-r--r--user/spirv-tools/APKBUILD48
-rw-r--r--user/spirv-tools/endian.patch283
-rw-r--r--user/spirv-tools/remove-copyright-check-test.patch16
-rw-r--r--user/spleen/APKBUILD8
-rw-r--r--user/sprunge/APKBUILD11
-rw-r--r--user/squashfs-tools/0001-mksquashfs-fix-rare-race-in-fragment-waiting-in-file.patch60
-rw-r--r--user/squashfs-tools/APKBUILD39
-rw-r--r--user/squashfs-tools/CVE-2015-4645.patch29
-rw-r--r--user/squashfs-tools/fix-compat.patch38
-rw-r--r--user/squashfs-tools/vla-overlow.patch21
-rw-r--r--user/sshfs/APKBUILD18
-rw-r--r--user/startup-notification/APKBUILD5
-rw-r--r--user/stdman/APKBUILD25
-rw-r--r--user/step/APKBUILD13
-rw-r--r--user/stow/APKBUILD11
-rw-r--r--user/strongswan/0205-ike-Adhere-to-IKE_SA-limit-when-checking-out-by-conf.patch104
-rw-r--r--user/strongswan/1001-charon-add-optional-source-and-remote-overrides-for-.patch597
-rw-r--r--user/strongswan/1002-vici-send-certificates-for-ike-sa-events.patch131
-rw-r--r--user/strongswan/1003-vici-add-support-for-individual-sa-state-changes.patch159
-rw-r--r--user/strongswan/APKBUILD35
-rw-r--r--user/strongswan/charon.initd2
-rw-r--r--user/strongswan/strongswan.pre-install5
-rw-r--r--user/subversion/APKBUILD44
-rw-r--r--user/subversion/apr-1.7.0.patch18
-rw-r--r--user/supertux/APKBUILD48
-rw-r--r--user/supertux/cmake32.patch22
-rw-r--r--user/supertux/find-sdl2.patch11
-rw-r--r--user/supertux/zip-header.patch30
-rw-r--r--user/sway/APKBUILD37
-rw-r--r--user/sway/license.txt472
-rw-r--r--user/swaybg/APKBUILD36
-rw-r--r--user/swig/APKBUILD23
-rw-r--r--user/sword/APKBUILD18
-rw-r--r--user/symboleditor/APKBUILD13
-rw-r--r--user/syndication/APKBUILD40
-rw-r--r--user/syntax-highlighting/APKBUILD15
-rw-r--r--user/sysfsutils/APKBUILD5
-rw-r--r--user/systemsettings/APKBUILD20
-rw-r--r--user/taglib/APKBUILD21
-rw-r--r--user/taglib/CVE-2017-12678.patch31
-rw-r--r--user/taglib/CVE-2018-11439.patch42
-rw-r--r--user/talloc/APKBUILD17
-rw-r--r--user/talloc/waf-location.patch10
-rw-r--r--user/tcpdump/APKBUILD45
-rw-r--r--user/tcpdump/CVE-2018-19519.patch10
-rw-r--r--user/tcpdump/rm-vendor-specific-tests.patch34
-rw-r--r--user/tcsh/002-test_123-posix_fix.patch34
-rw-r--r--user/tcsh/APKBUILD25
-rw-r--r--user/tellico/APKBUILD16
-rw-r--r--user/tellico/modern-taglib.patch13
-rw-r--r--user/terminus-font/75-yes-terminus.conf17
-rw-r--r--user/terminus-font/APKBUILD17
-rw-r--r--user/testdisk/APKBUILD34
-rw-r--r--user/tf/0001-Add-DESTDIR-support.patch113
-rw-r--r--user/tf/0002-Correct-use-of-va_list.patch34
-rw-r--r--user/tf/0003-Minor-man-page-fixes.patch112
-rw-r--r--user/tf/0006-Fix-library-install-path.patch38
-rw-r--r--user/tf/0007-Fix-spelling-errors.patch59
-rw-r--r--user/tf/0008-Build-on-musl.patch49
-rw-r--r--user/tf/APKBUILD47
-rw-r--r--user/the_silver_searcher/APKBUILD19
-rw-r--r--user/the_silver_searcher/no-common.patch207
-rw-r--r--user/the_silver_searcher/pattern-fix.patch78
-rw-r--r--user/the_silver_searcher/pipe-symlink.patch26
-rw-r--r--user/threadweaver/APKBUILD9
-rw-r--r--user/thunar-archive-plugin/APKBUILD34
-rw-r--r--user/thunar-volman/APKBUILD20
-rw-r--r--user/thunar/APKBUILD22
-rw-r--r--user/thunderbird/APKBUILD214
-rw-r--r--user/thunderbird/bad-google-code.patch20
-rw-r--r--user/thunderbird/disable-hunspell_hooks.patch11
-rw-r--r--user/thunderbird/fix-mutex-build.patch20
-rw-r--r--user/thunderbird/fix-seccomp-bpf.patch10
-rw-r--r--user/thunderbird/icu-75.patch41
-rw-r--r--user/thunderbird/jpeg-link.patch25
-rw-r--r--user/thunderbird/js-endian.patch33
-rw-r--r--user/thunderbird/mach-linux-musl.patch119
-rw-r--r--user/thunderbird/mozconfig13
-rw-r--r--user/thunderbird/mozilla-build-arm.patch11
-rw-r--r--user/thunderbird/pmmx-double-format.patch16
-rw-r--r--user/thunderbird/ppc32-fix.patch43
-rw-r--r--user/thunderbird/profiler.patch44
-rw-r--r--user/thunderbird/proper-system-hunspell.patch22
-rw-r--r--user/thunderbird/python3.patch10079
-rw-r--r--user/thunderbird/rust-32bit.patch30
-rw-r--r--user/thunderbird/shut-up-warning.patch11
-rw-r--r--user/thunderbird/skia-endian.patch112
-rw-r--r--user/thunderbird/skia-unified.patch786
-rw-r--r--user/thunderbird/stab.h71
-rw-r--r--user/thunderbird/stackwalk-x86-ppc.patch20
-rw-r--r--user/thunderbird/webrender.patch28
-rw-r--r--user/thunderbird/without-jit.patch28
-rw-r--r--user/tiff/APKBUILD20
-rw-r--r--user/tigervnc/0001-CSecurityTLS-Use-size_t-as-argument-for-new.patch66
-rw-r--r--user/tigervnc/APKBUILD25
-rw-r--r--user/tigervnc/endian.patch51
-rw-r--r--user/tigervnc/initialise-var.patch24
-rw-r--r--user/tigervnc/null-termination.patch39
-rw-r--r--user/tigervnc/use-intltool.patch32
-rw-r--r--user/tint2/APKBUILD24
-rw-r--r--user/tinycdb/APKBUILD26
-rw-r--r--user/tinycdb/Makefile.patch19
-rw-r--r--user/tinyfugue/APKBUILD38
-rw-r--r--user/tinywl/APKBUILD27
-rw-r--r--user/tinyxml2/APKBUILD8
-rw-r--r--user/tipidee/APKBUILD88
-rw-r--r--user/tipidee/httpd.run19
-rw-r--r--user/tipidee/httpsd.run23
-rw-r--r--user/tipidee/logger.run5
-rw-r--r--user/tipidee/tipidee.conf18
-rw-r--r--user/tipidee/tipidee.confd33
-rw-r--r--user/tipidee/tipidee.initd64
-rw-r--r--user/tipidee/tipidee.post-deinstall3
-rw-r--r--user/tipidee/tipidee.post-install3
-rw-r--r--user/tipidee/tipidee.pre-install7
-rw-r--r--user/tk/APKBUILD13
-rw-r--r--user/tlp/APKBUILD21
-rw-r--r--user/tlp/tlp.post-upgrade14
-rw-r--r--user/tmux-bash-completion/APKBUILD9
-rw-r--r--user/tmux/APKBUILD26
-rw-r--r--user/tmux/no-yacc-needed.patch26
-rw-r--r--user/torcs/APKBUILD13
-rw-r--r--user/traceroute/APKBUILD7
-rw-r--r--user/transmission/APKBUILD102
-rw-r--r--user/transmission/fix-release-tarball.patch2511
-rw-r--r--user/transmission/transmission-daemon.confd14
-rw-r--r--user/transmission/transmission-daemon.initd73
-rw-r--r--user/transmission/transmission-daemon.post-upgrade10
-rw-r--r--user/transmission/transmission-daemon.pre-install6
-rw-r--r--user/transmission/transmission.post-install12
-rw-r--r--user/transset/APKBUILD9
-rw-r--r--user/tree/APKBUILD2
-rw-r--r--user/trigger-rally/APKBUILD12
-rw-r--r--user/trigger-rally/sdl2-compat.patch11
-rw-r--r--user/trojita/APKBUILD71
-rw-r--r--user/trojita/CVE-2019-10734.patch104
-rw-r--r--user/trojita/CVE-2020-15047.patch88
-rw-r--r--user/trojita/attachments.patch68
-rw-r--r--user/trojita/deprecated1.patch369
-rw-r--r--user/trojita/deprecated2.patch28
-rw-r--r--user/trojita/deprecated3.patch37
-rw-r--r--user/trojita/fetch-task.patch204
-rw-r--r--user/trojita/find-gpgme.patch14
-rw-r--r--user/trojita/plaintext-upgrade-attack.patch221
-rw-r--r--user/trojita/pwstorage.patch52
-rw-r--r--user/trojita/segfault-sorting-mailboxes.patch72
-rw-r--r--user/trojita/signedness.patch71
-rw-r--r--user/trojita/statusbar-fix.patch167
-rw-r--r--user/trojita/testfix.patch85
-rw-r--r--user/ttc-iosevka/APKBUILD12
-rw-r--r--user/ttf-alee/APKBUILD3
-rw-r--r--user/ttf-dejavu/APKBUILD2
-rw-r--r--user/ttf-freefont/APKBUILD7
-rw-r--r--user/ttf-hack/APKBUILD4
-rw-r--r--user/ttf-jetbrains-mono/APKBUILD25
-rw-r--r--user/ttf-noto/APKBUILD30
-rw-r--r--user/ttf-sinhala-lklug/APKBUILD4
-rw-r--r--user/ttf-sudo/APKBUILD21
-rw-r--r--user/ttf-terminus/APKBUILD15
-rw-r--r--user/tumbler/APKBUILD22
-rw-r--r--user/twm/APKBUILD10
-rw-r--r--user/tyrquake/APKBUILD46
-rw-r--r--user/tyrquake/tyrquake.initd14
-rw-r--r--user/tyrquake/tyrquake.pre-install6
-rw-r--r--user/uchardet/APKBUILD19
-rw-r--r--user/uchardet/no-debug-suffix.patch14
-rw-r--r--user/ucpp/APKBUILD2
-rw-r--r--user/udisks2/50-udisks2.rules28
-rw-r--r--user/udisks2/APKBUILD13
-rw-r--r--user/udisks2/O_CLOEXEC.patch2
-rw-r--r--user/ufw/APKBUILD42
-rw-r--r--user/ufw/ufw-0.36-bash-completion.patch16
-rw-r--r--user/ufw/ufw-0.36-move-path.patch174
-rw-r--r--user/ufw/ufw.confd5
-rw-r--r--user/ufw/ufw.initd136
-rw-r--r--user/umbrello/APKBUILD11
-rw-r--r--user/umbrello/assertion-fix.patch41
-rw-r--r--user/unbound/APKBUILD20
-rw-r--r--user/unicode-data/APKBUILD43
-rw-r--r--user/unifont/APKBUILD6
-rw-r--r--user/unittest-cpp/APKBUILD4
-rw-r--r--user/unixodbc/APKBUILD8
-rw-r--r--user/upower/APKBUILD10
-rw-r--r--user/upower/daemon-fix-get_critical_action.patch28
-rw-r--r--user/upower/lib-add-propererror-and-cancellable-handling-to-UpClient.patch184
-rw-r--r--user/uptimed/APKBUILD18
-rw-r--r--user/urw-base35-fonts/APKBUILD6
-rw-r--r--user/usbredir/APKBUILD4
-rw-r--r--user/usbutils/APKBUILD14
-rw-r--r--user/usbutils/hwdata.patch28
-rw-r--r--user/user-manager/APKBUILD43
-rw-r--r--user/userspace-rcu/APKBUILD36
-rw-r--r--user/userspace-rcu/endian.patch11
-rw-r--r--user/utf8proc/APKBUILD28
-rw-r--r--user/util-macros/APKBUILD10
-rw-r--r--user/uwsgi/APKBUILD6
-rw-r--r--user/v4l-utils/APKBUILD56
-rw-r--r--user/v4l-utils/getsubopt.patch36
-rw-r--r--user/v4l-utils/qv4l2.desktop12
-rw-r--r--user/v4l-utils/qv4l2.svg31
-rw-r--r--user/vala/APKBUILD16
-rw-r--r--user/valgrind/0001-Ensure-ELFv2-is-supported-on-PPC64.patch158
-rw-r--r--user/valgrind/APKBUILD32
-rw-r--r--user/valgrind/ppc32.patch15
-rw-r--r--user/valgrind/ppc64-support-tkill.patch14
-rw-r--r--user/valgrind/realloc.patch24
-rw-r--r--user/valgrind/suppressions.patch24
-rw-r--r--user/valgrind/uclibc.patch10
-rw-r--r--user/vamp-sdk/APKBUILD20
-rw-r--r--user/vde2/APKBUILD10
-rw-r--r--user/vde2/gcc8.patch44
-rw-r--r--user/vde2/openssl11.patch92
-rw-r--r--user/vde2/vde2.pre-install5
-rw-r--r--user/viewres/APKBUILD9
-rw-r--r--user/vlc/APKBUILD173
-rw-r--r--user/vlc/tar-compat.patch10
-rw-r--r--user/vlc/vlc-daemon.pre-install16
-rw-r--r--user/vlc/vlc-libs.trigger2
-rw-r--r--user/volume_key/APKBUILD22
-rw-r--r--user/vorbis-tools/APKBUILD43
-rw-r--r--user/vorbis-tools/CVE-2014-9638-and-9639.patch87
-rw-r--r--user/vorbis-tools/CVE-2014-9640.patch51
-rw-r--r--user/vorbis-tools/CVE-2015-6749.patch46
-rw-r--r--user/vte/APKBUILD34
-rw-r--r--user/vte/gcc-volatile.patch45
-rw-r--r--user/vulkan-headers/APKBUILD41
-rw-r--r--user/vulkan-loader/APKBUILD42
-rw-r--r--user/w3m/APKBUILD8
-rw-r--r--user/wavpack/APKBUILD47
-rw-r--r--user/wavpack/cve2018-19840.patch25
-rw-r--r--user/wavpack/cve2018-19841.patch29
-rw-r--r--user/wayfire/APKBUILD37
-rw-r--r--user/wayland-protocols/APKBUILD41
-rw-r--r--user/wayland-protocols/tests.patch53
-rw-r--r--user/wayland/APKBUILD49
-rw-r--r--user/waypipe/0.9.2-fix-compile.patch11
-rw-r--r--user/waypipe/APKBUILD37
-rw-r--r--user/weechat/APKBUILD67
-rw-r--r--user/weechat/libintl-fix.patch12
-rw-r--r--user/wf-config/APKBUILD34
-rw-r--r--user/wf-shell/APKBUILD36
-rw-r--r--user/wget/APKBUILD37
-rw-r--r--user/which/APKBUILD34
-rw-r--r--user/wimlib/APKBUILD40
-rw-r--r--user/wimlib/header.patch29
-rw-r--r--user/wimlib/pc-fuse3.patch31
-rw-r--r--user/wine/APKBUILD102
-rw-r--r--user/wine/headers.patch24
-rw-r--r--user/wine/no-pie.patch14
-rw-r--r--user/wine/nopie.patch10
-rw-r--r--user/wine/printer.patch13
-rw-r--r--user/wine/rpath.patch11
-rw-r--r--user/wine/winhlp32-flex.patch9
-rw-r--r--user/wireguard-module-power8-64k/APKBUILD32
-rw-r--r--user/wireguard-module-power8/APKBUILD32
-rw-r--r--user/wireguard-module/APKBUILD32
-rw-r--r--user/wireguard-tools/APKBUILD30
-rw-r--r--user/wireless-regdb/APKBUILD22
-rw-r--r--user/wireless-tools/APKBUILD11
-rw-r--r--user/wlroots-0.17/APKBUILD39
-rw-r--r--user/wlroots-0.18/APKBUILD40
-rw-r--r--user/wpa_supplicant/APKBUILD24
-rw-r--r--user/wpa_supplicant/CVE-2019-16275.patch73
-rw-r--r--user/wpa_supplicant/undefined-ref.patch38
-rw-r--r--user/wpa_supplicant/wpa_supplicant.conf4
-rw-r--r--user/wv/APKBUILD8
-rw-r--r--user/wxwidgets/APKBUILD11
-rw-r--r--user/x11perf/APKBUILD6
-rw-r--r--user/x11vnc/APKBUILD19
-rw-r--r--user/x11vnc/CVE-2020-29074.patch11
-rw-r--r--user/x11vnc/gcc10.patch42
-rw-r--r--user/x11vnc/time64.patch78
-rw-r--r--user/x264/APKBUILD28
-rw-r--r--user/x265/APKBUILD18
-rw-r--r--user/x265/x265-arm-asm-primitives.patch360
-rw-r--r--user/xabacus/APKBUILD24
-rw-r--r--user/xapian-core/APKBUILD23
-rw-r--r--user/xapian-core/sortable-serialise.patch15
-rw-r--r--user/xauth/APKBUILD11
-rw-r--r--user/xautolock/APKBUILD20
-rw-r--r--user/xbiff/APKBUILD15
-rw-r--r--user/xbitmaps/APKBUILD10
-rw-r--r--user/xcalc/APKBUILD6
-rw-r--r--user/xcape/APKBUILD2
-rw-r--r--user/xcb-proto/APKBUILD11
-rw-r--r--user/xcb-util-cursor/APKBUILD16
-rw-r--r--user/xcb-util-errors/APKBUILD33
-rw-r--r--user/xcb-util-image/APKBUILD15
-rw-r--r--user/xcb-util-keysyms/APKBUILD14
-rw-r--r--user/xcb-util-renderutil/APKBUILD14
-rw-r--r--user/xcb-util-wm/APKBUILD14
-rw-r--r--user/xcb-util-xrm/APKBUILD8
-rw-r--r--user/xcb-util/APKBUILD14
-rw-r--r--user/xclip/APKBUILD5
-rw-r--r--user/xclipboard/APKBUILD9
-rw-r--r--user/xclock/APKBUILD6
-rw-r--r--user/xcmsdb/APKBUILD9
-rw-r--r--user/xcompmgr/APKBUILD6
-rw-r--r--user/xconsole/APKBUILD9
-rw-r--r--user/xcursor-themes/APKBUILD6
-rw-r--r--user/xcursorgen/APKBUILD6
-rw-r--r--user/xdbedizzy/APKBUILD4
-rw-r--r--user/xdg-user-dirs/APKBUILD10
-rw-r--r--user/xdg-utils/APKBUILD16
-rw-r--r--user/xdg-utils/xdg-mime-gnome.patch40
-rw-r--r--user/xdg-utils/xdg-mime-plasma.patch61
-rw-r--r--user/xdg-utils/xdg-open-failure.patch43
-rw-r--r--user/xdg-utils/xdg-open-spaces.patch38
-rw-r--r--user/xdg-utils/xdg-su-lxqt.patch28
-rw-r--r--user/xditview/APKBUILD6
-rw-r--r--user/xdotool/APKBUILD5
-rw-r--r--user/xdpyinfo/APKBUILD15
-rw-r--r--user/xdriinfo/APKBUILD13
-rw-r--r--user/xedit/APKBUILD9
-rw-r--r--user/xev/APKBUILD6
-rw-r--r--user/xeyes/APKBUILD11
-rw-r--r--user/xf86-input-evdev/APKBUILD5
-rw-r--r--user/xf86-input-joystick/APKBUILD9
-rw-r--r--user/xf86-input-keyboard/APKBUILD37
-rw-r--r--user/xf86-input-libinput/APKBUILD6
-rw-r--r--user/xf86-input-mouse/APKBUILD9
-rw-r--r--user/xf86-input-synaptics/APKBUILD9
-rw-r--r--user/xf86-input-void/APKBUILD9
-rw-r--r--user/xf86-input-wacom/APKBUILD7
-rw-r--r--user/xf86-video-amdgpu/APKBUILD35
-rw-r--r--user/xf86-video-ast/APKBUILD9
-rw-r--r--user/xf86-video-ati/APKBUILD11
-rw-r--r--user/xf86-video-cirrus/APKBUILD9
-rw-r--r--user/xf86-video-dummy/APKBUILD9
-rw-r--r--user/xf86-video-fbdev/APKBUILD5
-rw-r--r--user/xf86-video-freedreno/APKBUILD5
-rw-r--r--user/xf86-video-geode/APKBUILD14
-rw-r--r--user/xf86-video-geode/loader.patch48
-rw-r--r--user/xf86-video-geode/randr.patch30
-rw-r--r--user/xf86-video-intel/APKBUILD19
-rw-r--r--user/xf86-video-intel/fno-common.patch24
-rw-r--r--user/xf86-video-intel/pmmx.patch13
-rw-r--r--user/xf86-video-mach64/APKBUILD11
-rw-r--r--user/xf86-video-mga/APKBUILD11
-rw-r--r--user/xf86-video-nouveau/APKBUILD8
-rw-r--r--user/xf86-video-openchrome/APKBUILD7
-rw-r--r--user/xf86-video-qxl/APKBUILD16
-rw-r--r--user/xf86-video-qxl/libdrm.patch25
-rw-r--r--user/xf86-video-r128/0001-Fix-output-detection-on-non-x86-and-allow-override.patch197
-rw-r--r--user/xf86-video-r128/0002-Only-try-to-init-XAA-when-XAA-is-available.patch34
-rw-r--r--user/xf86-video-r128/0003-Disable-Int10-support-on-all-non-x86-arches.patch48
-rw-r--r--user/xf86-video-r128/APKBUILD19
-rw-r--r--user/xf86-video-r128/xaa.patch21
-rw-r--r--user/xf86-video-rendition/APKBUILD35
-rw-r--r--user/xf86-video-siliconmotion/APKBUILD35
-rw-r--r--user/xf86-video-sis/APKBUILD34
-rw-r--r--user/xf86-video-sisusb/APKBUILD34
-rw-r--r--user/xf86-video-sunffb/APKBUILD34
-rw-r--r--user/xf86-video-sunleo/APKBUILD34
-rw-r--r--user/xf86-video-tdfx/APKBUILD2
-rw-r--r--user/xf86-video-trident/APKBUILD34
-rw-r--r--user/xf86-video-v4l/APKBUILD34
-rw-r--r--user/xf86-video-vboxvideo/APKBUILD34
-rw-r--r--user/xf86-video-vesa/APKBUILD34
-rw-r--r--user/xf86-video-vmware/APKBUILD35
-rw-r--r--user/xf86-video-vmware/fix-stdbool-includes.patch60
-rw-r--r--user/xfburn/APKBUILD19
-rw-r--r--user/xfce-desktop/APKBUILD27
-rw-r--r--user/xfce-plugins/APKBUILD20
-rw-r--r--user/xfce4-appfinder/APKBUILD19
-rw-r--r--user/xfce4-battery-plugin/APKBUILD17
-rw-r--r--user/xfce4-clipman-plugin/APKBUILD19
-rw-r--r--user/xfce4-cpugraph-plugin/APKBUILD26
-rw-r--r--user/xfce4-dev-tools/APKBUILD34
-rw-r--r--user/xfce4-dict/APKBUILD16
-rw-r--r--user/xfce4-diskperf-plugin/APKBUILD19
-rw-r--r--user/xfce4-docklike-plugin/APKBUILD36
-rw-r--r--user/xfce4-docklike-plugin/xfce4-docklike-plugin-0.4.0-fix-missing-include.patch12
-rw-r--r--user/xfce4-genmon-plugin/APKBUILD34
-rw-r--r--user/xfce4-indicator-plugin/APKBUILD26
-rw-r--r--user/xfce4-mailwatch-plugin/APKBUILD34
-rw-r--r--user/xfce4-netload-plugin/APKBUILD21
-rw-r--r--user/xfce4-netload-plugin/no-sysctl.patch11
-rw-r--r--user/xfce4-notes-plugin/APKBUILD34
-rw-r--r--user/xfce4-notifyd/APKBUILD24
-rw-r--r--user/xfce4-panel-profiles/APKBUILD13
-rw-r--r--user/xfce4-panel/APKBUILD27
-rw-r--r--user/xfce4-power-manager/APKBUILD19
-rw-r--r--user/xfce4-pulseaudio-plugin/APKBUILD21
-rw-r--r--user/xfce4-screenshooter/APKBUILD20
-rw-r--r--user/xfce4-sensors-plugin/APKBUILD20
-rw-r--r--user/xfce4-session/APKBUILD25
-rw-r--r--user/xfce4-settings/APKBUILD27
-rw-r--r--user/xfce4-systemload-plugin/APKBUILD25
-rw-r--r--user/xfce4-systemload-plugin/fix-failure-due-to-wrong-var-type.patch25
-rw-r--r--user/xfce4-taskmanager/APKBUILD21
-rw-r--r--user/xfce4-terminal/APKBUILD20
-rw-r--r--user/xfce4-time-out-plugin/APKBUILD24
-rw-r--r--user/xfce4-timer-plugin/APKBUILD17
-rw-r--r--user/xfce4-verve-plugin/APKBUILD19
-rw-r--r--user/xfce4-volumed-pulse/APKBUILD17
-rw-r--r--user/xfce4-whiskermenu-plugin/APKBUILD21
-rw-r--r--user/xfconf/APKBUILD22
-rw-r--r--user/xfd/APKBUILD6
-rw-r--r--user/xfdashboard/APKBUILD17
-rw-r--r--user/xfdesktop/APKBUILD22
-rw-r--r--user/xfindproxy/APKBUILD3
-rw-r--r--user/xfmpc/APKBUILD17
-rw-r--r--user/xfontsel/APKBUILD9
-rw-r--r--user/xfs/APKBUILD9
-rw-r--r--user/xfsinfo/APKBUILD6
-rw-r--r--user/xfsprogs/APKBUILD54
-rw-r--r--user/xfsprogs/no-utmp-header.patch20
-rw-r--r--user/xfsprogs/scrub.patch49
-rw-r--r--user/xfwm4/APKBUILD30
-rw-r--r--user/xfwm4/fix-mask-length.patch12
-rw-r--r--user/xfwp/APKBUILD3
-rw-r--r--user/xgamma/APKBUILD9
-rw-r--r--user/xgc/APKBUILD11
-rw-r--r--user/xhost/APKBUILD10
-rw-r--r--user/xinit/06_move_serverauthfile_into_tmp.patch8
-rw-r--r--user/xinit/APKBUILD10
-rw-r--r--user/xinput/APKBUILD11
-rw-r--r--user/xisxwayland/APKBUILD32
-rw-r--r--user/xkbcomp/APKBUILD9
-rw-r--r--user/xkbevd/APKBUILD9
-rw-r--r--user/xkbprint/APKBUILD9
-rw-r--r--user/xkbutils/APKBUILD16
-rw-r--r--user/xkeyboard-config/APKBUILD31
-rw-r--r--user/xkill/APKBUILD9
-rw-r--r--user/xload/APKBUILD9
-rw-r--r--user/xlogo/APKBUILD6
-rw-r--r--user/xlsatoms/APKBUILD6
-rw-r--r--user/xlsclients/APKBUILD9
-rw-r--r--user/xlsfonts/APKBUILD9
-rw-r--r--user/xmag/APKBUILD9
-rw-r--r--user/xman/APKBUILD9
-rw-r--r--user/xmessage/APKBUILD10
-rw-r--r--user/xmh/APKBUILD9
-rw-r--r--user/xmlsec/APKBUILD59
-rw-r--r--user/xmlsec/testrun.patch11
-rw-r--r--user/xmodmap/APKBUILD8
-rw-r--r--user/xmore/APKBUILD6
-rw-r--r--user/xmoto/APKBUILD13
-rw-r--r--user/xorg-apps/APKBUILD19
-rw-r--r--user/xorg-cf-files/APKBUILD21
-rw-r--r--user/xorg-drivers/APKBUILD26
-rw-r--r--user/xorg-gtest/APKBUILD13
-rw-r--r--user/xorg-server/20-modules.conf18
-rw-r--r--user/xorg-server/APKBUILD140
-rw-r--r--user/xorg-server/autoconfig-sis.patch2
-rw-r--r--user/xorg-server/fix-musl-arm.patch24
-rw-r--r--user/xorgproto/APKBUILD33
-rw-r--r--user/xorriso/APKBUILD9
-rw-r--r--user/xpr/APKBUILD9
-rw-r--r--user/xprop/APKBUILD11
-rw-r--r--user/xrandr/APKBUILD12
-rw-r--r--user/xrdb/APKBUILD6
-rw-r--r--user/xrefresh/APKBUILD9
-rw-r--r--user/xrx/APKBUILD4
-rw-r--r--user/xsane/APKBUILD9
-rw-r--r--user/xscope/APKBUILD9
-rw-r--r--user/xscreensaver/APKBUILD39
-rw-r--r--user/xscreensaver/xscreensaver-fixes.patch14
-rw-r--r--user/xset/APKBUILD11
-rw-r--r--user/xsetmode/APKBUILD4
-rw-r--r--user/xsetpointer/APKBUILD4
-rw-r--r--user/xsetroot/APKBUILD11
-rw-r--r--user/xsettingsd/APKBUILD41
-rw-r--r--user/xsettingsd/endian.patch76
-rw-r--r--user/xsm/APKBUILD9
-rw-r--r--user/xstdcmap/APKBUILD6
-rw-r--r--user/xsv/APKBUILD156
-rw-r--r--user/xterm/APKBUILD26
-rw-r--r--user/xterm/posix-ptmx.patch4
-rw-r--r--user/xtrans/APKBUILD6
-rw-r--r--user/xvidcore/APKBUILD6
-rw-r--r--user/xvidtune/APKBUILD16
-rw-r--r--user/xvinfo/APKBUILD6
-rw-r--r--user/xwayland/APKBUILD53
-rw-r--r--user/xwd/APKBUILD9
-rw-r--r--user/xwininfo/APKBUILD8
-rw-r--r--user/xwud/APKBUILD9
-rw-r--r--user/xxhash/APKBUILD34
-rw-r--r--user/yajl/APKBUILD53
-rw-r--r--user/yakuake/APKBUILD13
-rw-r--r--user/yaml-cpp/APKBUILD39
-rw-r--r--user/yasm/APKBUILD17
-rw-r--r--user/yasm/fix-pmmx.patch91
-rw-r--r--user/yelp-tools/APKBUILD35
-rw-r--r--user/yelp-xsl/APKBUILD33
-rw-r--r--user/youtube-dl/APKBUILD12
-rw-r--r--user/youtube-dl/tumblr.patch49
-rw-r--r--user/yubico-c/APKBUILD14
-rw-r--r--user/yubikey-personalization/APKBUILD27
-rw-r--r--user/yubikey-personalization/gcc10.patch25
-rw-r--r--user/yubikey-personalization/json_c.patch83
-rw-r--r--user/yubikey-personalization/uninit.patch204
-rw-r--r--user/yubikey-personalization/wipe-mem.patch29
-rw-r--r--user/z3/APKBUILD52
-rw-r--r--user/zenity/APKBUILD7
-rw-r--r--user/zola/APKBUILD1138
-rw-r--r--user/zola/ring-use-generic-implementation-on-non-sse2-x86.patch430
-rw-r--r--user/zstd/APKBUILD27
3307 files changed, 158536 insertions, 92863 deletions
diff --git a/user/.rootbld-repositories b/user/.rootbld-repositories
index dd670b51f..1f6b7e3cc 100644
--- a/user/.rootbld-repositories
+++ b/user/.rootbld-repositories
@@ -1,2 +1,2 @@
-https://distfiles.adelielinux.org/adelie/1.0-beta1/system/
-https://distfiles.adelielinux.org/adelie/1.0-beta1/user/
+https://distfiles.adelielinux.org/adelie/current/system/
+https://distfiles.adelielinux.org/adelie/current/user/
diff --git a/user/a52dec/APKBUILD b/user/a52dec/APKBUILD
index 9296f3ad0..8d552e47d 100644
--- a/user/a52dec/APKBUILD
+++ b/user/a52dec/APKBUILD
@@ -1,28 +1,19 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=a52dec
-pkgver=0.7.4
-pkgrel=8
+pkgver=0.8.0
+pkgrel=0
pkgdesc="Library for decoding ATSC A/52 streams"
-url="http://liba52.sourceforge.net/"
+url="https://git.adelielinux.org/community/a52dec/-/wikis/home"
arch="all"
license="GPL-2.0+"
-subpackages="$pkgname-dev $pkgname-doc"
+depends=""
makedepends="autoconf automake libtool linux-headers"
-source="http://liba52.sourceforge.net/files/$pkgname-$pkgver.tar.gz
- automake.patch
- $pkgname-$pkgver-build.patch
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://distfiles.adelielinux.org/source/$pkgname/$pkgname-$pkgver.tar.gz
+ fix-globals-test-x86-pie.patch
"
-prepare() {
- cd "$builddir"
- default_prepare
- update_config_sub
- libtoolize --force && \
- aclocal && autoconf && automake --add-missing
-}
-
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,16 +23,13 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -m644 liba52/a52_internal.h "$pkgdir"/usr/include/a52dec/
}
-sha512sums="4b26fe9492f218b775fb190b76ecf06edaeb656adfe6dcbd24d0a0f86871c3ba917edb88a398eb12dccedaa1605b6f0a0be06b09f9fddd9a46e457b7dd244848 a52dec-0.7.4.tar.gz
-4a832b7e13e19ba00b1fcf5ddbdcca416ee71818f2fd77f19114d7f98fb41dbd04f906eb78f403dc27324d7e8bd8ec4e0b670139a27b49a7acdb2e3cf88d8d12 automake.patch
-eee40a2871c00fc704fa49d3192a41ceadc4cf7e80d7d7cf368aa2a3e7ebb786f39ef835bdffca5685bf054316a9bacf87556b9a0c90868dbf29e7269873806e a52dec-0.7.4-build.patch"
+sha512sums="dbabc293ac5554b13ebbe43ca56278cb81478c5cc98b04c6805f5fc517a1484b0b7d23f5d6a64580d781f2976ff79e0646d9a1ebd48ab14005aa8d4128ecfeeb a52dec-0.8.0.tar.gz
+b8dbcdc817531bc737ee689a1a8fc76ba40462397ca95286fe834795a09df04cd68010ca6105c8e56392328bec00c838372ab28324c5428421d44824109ea6ec fix-globals-test-x86-pie.patch"
diff --git a/user/a52dec/a52dec-0.7.4-build.patch b/user/a52dec/a52dec-0.7.4-build.patch
deleted file mode 100644
index f3a29f303..000000000
--- a/user/a52dec/a52dec-0.7.4-build.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -Naur a52dec-0.7.4.orig/liba52/Makefile.am a52dec-0.7.4/liba52/Makefile.am
---- a52dec-0.7.4.orig/liba52/Makefile.am 2002-01-27 20:36:48.000000000 -0800
-+++ a52dec-0.7.4/liba52/Makefile.am 2004-11-05 01:10:21.317401872 -0800
-@@ -1,4 +1,3 @@
--CFLAGS = @CFLAGS@ @LIBA52_CFLAGS@
-
- lib_LTLIBRARIES = liba52.la
-
-diff -Naur a52dec-0.7.4.orig/liba52/configure.incl a52dec-0.7.4/liba52/configure.incl
---- a52dec-0.7.4.orig/liba52/configure.incl 2002-01-27 20:36:48.000000000 -0800
-+++ a52dec-0.7.4/liba52/configure.incl 2004-11-05 01:11:38.172672216 -0800
-@@ -2,7 +2,6 @@
- AC_SUBST([LIBA52_LIBS])
-
- dnl avoid -fPIC when possible
--LIBA52_CFLAGS="$LIBA52_CFLAGS -prefer-non-pic"
-
- AC_ARG_ENABLE([double],
- [ --enable-double use double-precision samples])
-diff -Naur a52dec-0.7.4.orig/src/Makefile.am a52dec-0.7.4/src/Makefile.am
---- a52dec-0.7.4.orig/src/Makefile.am 2002-06-22 18:51:57.000000000 -0700
-+++ a52dec-0.7.4/src/Makefile.am 2004-11-05 01:10:21.320401375 -0800
-@@ -1,4 +1,3 @@
--CFLAGS = @A52DEC_CFLAGS@
-
- bin_PROGRAMS = a52dec extract_a52
- a52dec_SOURCES = a52dec.c getopt.c gettimeofday.c
diff --git a/user/a52dec/automake.patch b/user/a52dec/automake.patch
deleted file mode 100644
index 42231e040..000000000
--- a/user/a52dec/automake.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./configure.in.orig 2013-04-23 12:43:16.258733686 +0000
-+++ ./configure.in 2013-04-23 12:43:32.922233281 +0000
-@@ -6,7 +6,7 @@
- AC_CONFIG_FILES([Makefile autotools/Makefile include/Makefile test/Makefile
- doc/Makefile src/Makefile liba52/Makefile libao/Makefile vc++/Makefile])
- AM_INIT_AUTOMAKE([a52dec],[0.7.4])
--AM_CONFIG_HEADER(include/config.h)
-+AC_CONFIG_HEADERS(include/config.h)
- AM_MAINTAINER_MODE
- AC_CANONICAL_HOST
-
diff --git a/user/a52dec/fix-globals-test-x86-pie.patch b/user/a52dec/fix-globals-test-x86-pie.patch
new file mode 100644
index 000000000..da227a139
--- /dev/null
+++ b/user/a52dec/fix-globals-test-x86-pie.patch
@@ -0,0 +1,11 @@
+--- a52dec-0.7.4.orig/test/globals
++++ a52dec-0.7.4/test/globals
+@@ -13,7 +13,7 @@
+ builddir=`cd $builddir;pwd`
+
+ bad_globals=`nm -g --defined-only $builddir/../liba52/*.o|\
+- awk '{if ($3) print $3}'|grep -v '^_\?a52_'`
++ awk '{if ($3) print $3}'|grep -v '^_\?a52_'`|grep -v '^__x86.get_pc_thunk.'
+
+ if test x"$bad_globals" != x""; then
+ echo BAD GLOBAL SYMBOLS:
diff --git a/user/abiword/APKBUILD b/user/abiword/APKBUILD
index 351961055..7da87b633 100644
--- a/user/abiword/APKBUILD
+++ b/user/abiword/APKBUILD
@@ -1,36 +1,34 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer: multiplexd <multi@in-addr.xyz>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=abiword
-pkgver=3.0.2
-pkgrel=0
+pkgver=3.0.5
+pkgrel=1
pkgdesc="A fully-featured word processor"
url="https://www.abisource.com"
arch="all"
options="!check" # Test suite requires valgrind, etc
license="GPL-2.0+"
+depends=""
makedepends="bzip2-dev enchant-dev fribidi-dev goffice-dev gtk+3.0-dev
libgsf-dev libjpeg-turbo-dev librsvg-dev libxslt-dev pcre-dev
popt-dev wv-dev"
-
# openxml plugin
makedepends="$makedepends boost-dev"
-
# collab plugin
makedepends="$makedepends gnutls-dev libsoup-dev dbus-glib-dev"
-
subpackages="$pkgname-dev $pkgname-doc"
-
_plugins="applix babelfish bmp clarisworks collab docbook eml epub \
freetranslation garble gdict gimp google hancom hrtext iscii kword \
latex loadbindings mht mif mswrite openwriter openxml opml paint \
passepartout pdb pdf presentation s5 sdw t602 urldict wikipedia wml \
xslfo"
-
-source="https://www.abisource.com/downloads/$pkgname/$pkgver/source/$pkgname-$pkgver.tar.gz
- fix-black-drawing-regression.patch"
+# https certificate is expired; integrity provided by checksum
+source="http://www.abisource.com/downloads/$pkgname/$pkgver/source/$pkgname-$pkgver.tar.gz
+ fix-bad-cast.patch
+ libxml2-2.12.patch
+ "
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -42,9 +40,9 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="29ce9e80b3b85ab2933e7d39216771d8c4e05db5255eaed0cf8e1d032ffaac2cb1880bf24e754196ad5dae4969a1c2101ce4dc9c1db14604adc2f852b6a17fe3 abiword-3.0.2.tar.gz
-cae9a08047cd97d11acea25a2f0b0ca4e8e4556b462eb476507fa178a7412221839febfeb36bebf491bb94d53525c4584d86230f96c403a7ceb2dec4223be8fe fix-black-drawing-regression.patch"
+sha512sums="a2484268901ff47307c9d1f1928622e364f1006f22ce38257c585144df9411dfe3c2dea28c1f1f50a6e545e8cc579cce34117a89dfa771e20312e3ea1a9989d6 abiword-3.0.5.tar.gz
+89edeed246f937e4f198068ed9861e155662d346fb1534d2ed676cbd782de22a691d2b045989942bd715cbfc3750cf9d7615065816b970695597361ae4a9d55e fix-bad-cast.patch
+0f98383e160782ccc2160e1bd9f5ba5ca02463dc14c2caeb987f225c06b4484a3618a068ff35806b6e3b6b2748e90a558c71ffb8d44c669f302fdcaebca836d4 libxml2-2.12.patch"
diff --git a/user/abiword/fix-bad-cast.patch b/user/abiword/fix-bad-cast.patch
new file mode 100644
index 000000000..fdecb21c5
--- /dev/null
+++ b/user/abiword/fix-bad-cast.patch
@@ -0,0 +1,12 @@
+diff -ur a/src/af/xap/xp/xap_Dialog.cpp b/src/af/xap/xp/xap_Dialog.cpp
+--- a/src/af/xap/xp/xap_Dialog.cpp 2022-02-01 17:49:27.650000000 +0000
++++ b/src/af/xap/xp/xap_Dialog.cpp 2022-02-01 17:52:14.000000000 +0000
+@@ -267,7 +267,7 @@
+ // This function constructs and returns the window name of a modeless dialog by
+ // concatenating the active frame with the dialog name
+
+- *pWindowName = (char) NULL;
++ *pWindowName = 0; // https://gitlab.gnome.org/World/AbiWord/-/commit/857cd86def49fe8557cfe123830c4d5a61eee732.patch
+ UT_UTF8String wn = UT_UTF8String(pDialogName);
+
+ XAP_Frame* pFrame = getActiveFrame();
diff --git a/user/abiword/fix-black-drawing-regression.patch b/user/abiword/fix-black-drawing-regression.patch
deleted file mode 100644
index dbce8c696..000000000
--- a/user/abiword/fix-black-drawing-regression.patch
+++ /dev/null
@@ -1,54 +0,0 @@
-From cec2fda355b67b5b814a803c5ed128c425cbb030 Mon Sep 17 00:00:00 2001
-From: Hubert Figuiere <hub@figuiere.net>
-Date: Thu, 8 Dec 2016 02:03:10 +0000
-Subject: [PATCH] Bug 13815 - draw event should return TRUE
-
-This fix the black drawing regression with Gtk3.22
-
-git-svn-id: svn+ssh://svn.abisource.com/svnroot/abiword/branches/ABI-3-0-0-STABLE@35394 bcba8976-2d24-0410-9c9c-aab3bd5fdfd6
----
- src/af/xap/gtk/xap_UnixFrameImpl.cpp | 6 +++---
- src/af/xap/gtk/xap_UnixFrameImpl.h | 4 ++--
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/src/af/xap/gtk/xap_UnixFrameImpl.cpp b/src/af/xap/gtk/xap_UnixFrameImpl.cpp
-index 780000e..10f8e00 100644
---- a/src/af/xap/gtk/xap_UnixFrameImpl.cpp
-+++ b/src/af/xap/gtk/xap_UnixFrameImpl.cpp
-@@ -1208,9 +1208,9 @@ gint XAP_UnixFrameImpl::_fe::delete_event(GtkWidget * w, GdkEvent * /*event*/, g
- }
-
- #if GTK_CHECK_VERSION(3,0,0)
--gint XAP_UnixFrameImpl::_fe::draw(GtkWidget * w, cairo_t * cr)
-+gboolean XAP_UnixFrameImpl::_fe::draw(GtkWidget * w, cairo_t * cr)
- #else
--gint XAP_UnixFrameImpl::_fe::expose(GtkWidget * w, GdkEventExpose* pExposeEvent)
-+gboolean XAP_UnixFrameImpl::_fe::expose(GtkWidget * w, GdkEventExpose* pExposeEvent)
- #endif
- {
- XAP_UnixFrameImpl * pUnixFrameImpl = static_cast<XAP_UnixFrameImpl *>(g_object_get_data(G_OBJECT(w), "user_data"));
-@@ -1243,7 +1243,7 @@ gint XAP_UnixFrameImpl::_fe::expose(GtkWidget * w, GdkEventExpose* pExposeEvent)
- pView->draw(&rClip);
- #endif
- }
-- return FALSE;
-+ return TRUE;
- }
-
- static bool bScrollWait = false;
-diff --git a/src/af/xap/gtk/xap_UnixFrameImpl.h b/src/af/xap/gtk/xap_UnixFrameImpl.h
-index 30ee5d8..a0ff57f 100644
---- a/src/af/xap/gtk/xap_UnixFrameImpl.h
-+++ b/src/af/xap/gtk/xap_UnixFrameImpl.h
-@@ -152,9 +152,9 @@ class XAP_UnixFrameImpl : public XAP_FrameImpl
- static gint key_release_event(GtkWidget* w, GdkEventKey* e);
- static gint delete_event(GtkWidget * w, GdkEvent * /*event*/, gpointer /*data*/);
- #if GTK_CHECK_VERSION(3,0,0)
-- static gint draw(GtkWidget * w, cairo_t * cr);
-+ static gboolean draw(GtkWidget * w, cairo_t * cr);
- #else
-- static gint expose(GtkWidget * w, GdkEventExpose* pExposeEvent);
-+ static gboolean expose(GtkWidget * w, GdkEventExpose* pExposeEvent);
- #endif
- static gint do_ZoomUpdate( gpointer /* xap_UnixFrame * */ p);
- static void vScrollChanged(GtkAdjustment * w, gpointer /*data*/);
diff --git a/user/abiword/libxml2-2.12.patch b/user/abiword/libxml2-2.12.patch
new file mode 100644
index 000000000..2c3642248
--- /dev/null
+++ b/user/abiword/libxml2-2.12.patch
@@ -0,0 +1,29 @@
+From 2a06be6a10a0718f8a3d8e00c317f5042c99a467 Mon Sep 17 00:00:00 2001
+From: Jan Tojnar <jtojnar@gmail.com>
+Date: Mon, 11 Dec 2023 01:55:53 +0100
+Subject: [PATCH] Fix build with libxml2 2.12
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+libxml 2.12.0 restructured headers so that xmlFree is no longer in the scope.
+Let’s add the correct include.
+---
+ src/af/util/xp/ut_stringbuf.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/af/util/xp/ut_stringbuf.cpp b/src/af/util/xp/ut_stringbuf.cpp
+index f1e8d9078..88488ad67 100644
+--- a/src/af/util/xp/ut_stringbuf.cpp
++++ b/src/af/util/xp/ut_stringbuf.cpp
+@@ -26,6 +26,7 @@
+ #include <algorithm>
+
+ #include <libxml/uri.h>
++#include <libxml/xmlmemory.h>
+
+ #include <glib.h>
+
+--
+GitLab
+
diff --git a/user/accountsservice/APKBUILD b/user/accountsservice/APKBUILD
index 2ea23a416..62ae94d9e 100644
--- a/user/accountsservice/APKBUILD
+++ b/user/accountsservice/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=accountsservice
-pkgver=0.6.54
+pkgver=22.08.8
pkgrel=0
pkgdesc="D-Bus service for accessing user account information"
url="https://www.freedesktop.org/wiki/Software/AccountsService/"
@@ -9,14 +9,11 @@ arch="all"
license="GPL-3.0+ AND GPL-2.0+"
depends="dbus"
makedepends="cmake dbus-dev glib-dev gobject-introspection-dev meson ninja
- polkit-dev utmps-dev xmlto"
+ polkit-dev utmps-dev xmlto elogind-dev vala"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://www.freedesktop.org/software/accountsservice/accountsservice-$pkgver.tar.xz
- disable-msgfmt
- "
+source="https://www.freedesktop.org/software/accountsservice/accountsservice-$pkgver.tar.xz"
build() {
- cd "$builddir"
CPPFLAGS="-D_PATH_WTMPX=\\\"/run/utmps/wtmp\\\"" meson \
--prefix=/usr \
--sysconfdir=/etc \
@@ -24,26 +21,22 @@ build() {
--localstatedir=/var \
-Dadmin_group=wheel \
-Ddocbook=true \
- -Dsystemd=false \
+ -Delogind=true \
-Dsystemdsystemunitdir=no \
. output
mkdir -p output/data
# msgfmt(1) XML error
cp data/org.freedesktop.accounts.policy.in \
output/data/org.freedesktop.accounts.policy
- patch -Np1 < "$srcdir"/disable-msgfmt
ninja -C output
}
check() {
- cd "$builddir"
ninja -C output test
}
package() {
- cd "$builddir"
DESTDIR="$pkgdir" ninja -C output install
}
-sha512sums="5fbcccc286dba60efba905aa79b1b51a5478fe52bf2e256d40d9fc2d7a311aea4ce397365045659a4ef2ecb2cc079130fb1d0107749c3c906c394517056ac1c0 accountsservice-0.6.54.tar.xz
-d3cd21c871f66359aae0b4688aeb5f31ba124579212350870540344a489299413a13ad4b66872a9fb549ed3b3664dfbadd03c9b20df3714cb4d26e3f2cf107ce disable-msgfmt"
+sha512sums="2ca3ceb1b44338d9924b86788256d4eef7ec10e0c2197bfb8cc6c31ae224fab3051f03cb406a526f90057684965bef4ba0f2cc01b26198ec1fc6baec36ad3ff8 accountsservice-22.08.8.tar.xz"
diff --git a/user/accountsservice/disable-msgfmt b/user/accountsservice/disable-msgfmt
deleted file mode 100644
index 3342f7eab..000000000
--- a/user/accountsservice/disable-msgfmt
+++ /dev/null
@@ -1,15 +0,0 @@
---- accountsservice-0.6.54/output/build.ninja.old 2019-01-20 21:23:36.570000000 +0000
-+++ accountsservice-0.6.54/output/build.ninja 2019-01-20 21:25:01.140000000 +0000
-@@ -60,9 +60,9 @@
-
- # Build rules for targets
-
--build data/org.freedesktop.accounts.policy: CUSTOM_COMMAND ../data/org.freedesktop.accounts.policy.in
-- COMMAND = /usr/bin/meson --internal msgfmthelper ../data/org.freedesktop.accounts.policy.in data/org.freedesktop.accounts.policy xml /usr/src/packages/user/accountsservice/src/accountsservice-0.6.54/po
-- description = Generating$ org.freedesktop.accounts.policy_data_merge$ with$ a$ custom$ command.
-+#build data/org.freedesktop.accounts.policy: CUSTOM_COMMAND ../data/org.freedesktop.accounts.policy.in
-+# COMMAND = /usr/bin/meson --internal msgfmthelper ../data/org.freedesktop.accounts.policy.in data/org.freedesktop.accounts.policy xml /usr/src/packages/user/accountsservice/src/accountsservice-0.6.54/po
-+# description = Generating$ org.freedesktop.accounts.policy_data_merge$ with$ a$ custom$ command.
-
- build src/accounts-generated.c: CUSTOM_COMMAND /usr/src/packages/user/accountsservice/src/accountsservice-0.6.54/data/org.freedesktop.Accounts.xml | /usr/bin/gdbus-codegen
- COMMAND = /usr/bin/gdbus-codegen --c-generate-autocleanup all --interface-prefix org.freedesktop. --c-namespace Accounts --body --output src/accounts-generated.c /usr/src/packages/user/accountsservice/src/accountsservice-0.6.54/data/org.freedesktop.Accounts.xml
diff --git a/user/acpi/APKBUILD b/user/acpi/APKBUILD
index 8d2b49412..9dc1c2977 100644
--- a/user/acpi/APKBUILD
+++ b/user/acpi/APKBUILD
@@ -14,7 +14,6 @@ subpackages="$pkgname-doc"
source="http://downloads.sourceforge.net/acpiclient/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,7 +25,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/acpid/APKBUILD b/user/acpid/APKBUILD
index aa674dfbb..c293a3a5f 100644
--- a/user/acpid/APKBUILD
+++ b/user/acpid/APKBUILD
@@ -1,13 +1,12 @@
-# Maintainer: multiplexd <multi@in-addr.xyz>
# Contributor: Morten Linderud <foxboron@archlinux.org>
-# Contributor: Sébastien Luttringer
-# Contributor: xduugu
-# Contributor: Manolis Tzanidakis
+# Contributor: Sébastien Luttringer <seblu@archlinux.org>
+# Contributor: Cedric Staniewski <cedric@gmx.ca>
+# Contributor: Manolis Tzanidakis <mtzanidakis@gmail.com>
# Contributor: Jonathan Schmidt <j.schmidt@archlinux.us>
# Contributor: multiplexd <multi@in-addr.xyz>
-
+# Maintainer:
pkgname=acpid
-pkgver=2.0.31
+pkgver=2.0.34
pkgrel=0
pkgdesc="Daemon for handling ACPI power management events"
url="https://sourceforge.net/projects/acpid2/"
@@ -24,7 +23,6 @@ source="http://downloads.sourceforge.net/sourceforge/acpid2/$pkgname-$pkgver.tar
acpid.confd"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -37,7 +35,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -m 755 -D "$srcdir"/acpid.initd \
@@ -50,8 +47,8 @@ package() {
"$pkgdir"/etc/acpi/handler.sh
}
-sha512sums="05eb96cdae698731b14caa89aa01239a0f16ce732f897d295447753aab7c8d49227c9b9ce901c6fd3bfdb117688e6ed80ec61aea0f64d75c9c0afe2aea2aa91a acpid-2.0.31.tar.xz
-f5935340391a927b2c0b8d36f6b9579d740299a46c210f762483336f2685e80bdfc237dd5ac5eeed5e458eff2fa436cd36e3277c4ee2085e05662e1525c56edd handler.sh
+sha512sums="2bf92295b55bb44fe83074b3e0c1ae639f63edaeea84b2184ae95b38852be40f380d5413110b8c0fcb2efc2ec01bf4764e1dcb97022fc724bebbfc35c0b63c81 acpid-2.0.34.tar.xz
+42e8a66c4fd4de3bf0b6adc359c5d5a08e45bf38fc2945c75ab0bf38058c10906e2c84f50895bb85b38e1a19646d91e40a875f2b45f67e07a9336d27bfa2dcd8 handler.sh
2ca236168ce6aaa56c980568c781d6e51590870b7a7936c74bf72532ef3f6c60a369f37597202f3a236d60637fd0daa6611d4ae0348484011ff71871a9914246 default
7381d30b5c6478cdbf5dff93ae95baa0b3b1fe0a04b02cf491831f1657d6f71b8eef121b7e78f3201d11a5856bfb30df0a57437c76e6fbe05ad88cd45e86ae64 acpid.initd
518cb397b2aa63b893ead1be08f32fe436d19b72663dee66834cfbc112b003333f0df8b9e4f1ffe64b813783f657d3fe8b9a0c5e992d5665583357e68b266705 acpid.confd"
diff --git a/user/acpid/handler.sh b/user/acpid/handler.sh
index 8e291bc2b..298ac1b81 100644
--- a/user/acpid/handler.sh
+++ b/user/acpid/handler.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/bin/sh
logger "Received ACPI event: ${@}"
diff --git a/user/acpilight/APKBUILD b/user/acpilight/APKBUILD
index f81e93e37..0fc2d15dc 100644
--- a/user/acpilight/APKBUILD
+++ b/user/acpilight/APKBUILD
@@ -1,27 +1,22 @@
# Contributor: Max Rees <maxcrees@me.com>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=acpilight
-pkgver=1.1
+pkgver=1.2
pkgrel=0
pkgdesc="Control backlight brightness level"
url="https://gitlab.com/wavexx/acpilight"
arch="noarch"
+options="!check" # Just a udev rule and a python script
license="GPL-3.0+"
depends="eudev python3"
makedepends=""
install="$pkgname.post-install"
subpackages="$pkgname-doc"
-options="!check" # Just a udev rule and a python script
source="https://gitlab.com/wavexx/acpilight/-/archive/v$pkgver/$pkgname-v$pkgver.tar.gz
rules-warning.patch"
builddir="$srcdir/$pkgname-v$pkgver"
-build() {
- cd "$builddir"
-}
-
package() {
- cd "$builddir"
install -Dm755 xbacklight \
"$pkgdir/usr/bin/xbacklight"
install -Dm644 90-backlight.rules \
@@ -30,5 +25,5 @@ package() {
"$pkgdir/usr/share/man/man1/xbacklight.1"
}
-sha512sums="af10a538fec83315aaec3837647622ecea41cb936d38667e4e70689a2b8a968a786fc9ad2be136d5799fa091f07614886decc9044e71aec1e64765e90ddae439 acpilight-v1.1.tar.gz
+sha512sums="ef634ec0f315fe94dca138f1b9231f320b93340db3365ab9a09cf898fe4691f70573041bcb04563d760f1201000ea3ff11ab5dad3bfffddf3d3070dedb5732d7 acpilight-v1.2.tar.gz
1b04e8c92bd39f2230b351fc15c63a303f71768ebce58fff5ed3d99fcbc38b417a61214227ab8612e6212d8db775dad2b5f9bad58fddf57452e2ff2cfa4fd077 rules-warning.patch"
diff --git a/user/adelie-fonts/APKBUILD b/user/adelie-fonts/APKBUILD
new file mode 100644
index 000000000..8006a4574
--- /dev/null
+++ b/user/adelie-fonts/APKBUILD
@@ -0,0 +1,19 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=adelie-fonts
+pkgver=1.0
+pkgrel=0
+pkgdesc="Default font set for Adélie Linux desktops"
+url="https://www.adelielinux.org/"
+arch="noarch"
+options="!check" # No test suite.
+license="NCSA"
+depends="otf-source-code-pro otf-source-sans-pro ttf-liberation"
+makedepends=""
+subpackages=""
+source=""
+
+package() {
+ mkdir -p "$pkgdir"
+}
+
diff --git a/user/adelie-kde-theme/APKBUILD b/user/adelie-kde-theme/APKBUILD
index 5eb3e9509..3631bc35c 100644
--- a/user/adelie-kde-theme/APKBUILD
+++ b/user/adelie-kde-theme/APKBUILD
@@ -2,27 +2,27 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=adelie-kde-theme
pkgver=1.0
-pkgrel=2
+pkgrel=4
pkgdesc="The Adélie Linux official KDE theme"
url="https://adelielinux.org/"
arch="noarch"
options="!check" # No test suite.
license="NCSA"
depends="adelie-wallpapers papirus-icons"
-source="kdeglobals
- kscreenlockerrc
- adelie-kde-theme.js
+makedepends=""
+subpackages=""
+source="https://distfiles.adelielinux.org/source/$pkgname-$pkgver.tar.xz
+ kdeglobals
"
-builddir="$srcdir/"
package() {
- cd "$builddir"
- install -D -m644 kdeglobals "$pkgdir"/etc/xdg/kdeglobals
- install -m644 kscreenlockerrc "$pkgdir"/etc/xdg/kscreenlockerrc
- install -D -m644 adelie-kde-theme.js \
- "$pkgdir"/usr/share/plasma/shells/org.kde.plasma.desktop/contents/updates/adelie-kde-theme.js
+ install -D -m644 "$srcdir"/kdeglobals "$pkgdir"/etc/xdg/kdeglobals
+ install -m644 "$builddir"/kscreenlockerrc \
+ "$pkgdir"/etc/xdg/kscreenlockerrc
+ mkdir -p "$pkgdir"/usr/share/plasma/look-and-feel
+ mv "$builddir"/org.adelielinux.*.desktop \
+ "$pkgdir"/usr/share/plasma/look-and-feel/
}
-sha512sums="ed5dfa83a4d2f6b171b3a3238dea626b9ca9e1afd72ae026ef680a5eef0c3fff4aaf7c82f4bf394c26d002fde7517a4c842f9bdb9059107200d17f48e432b940 kdeglobals
-b94c261d2ce098af1c1856f92b20485167be4f59b66fd3a47379d339a21b4c7a9c274dca2964bbc5f2adff74e514eb73e988db749e22d35817f37b10303fecca kscreenlockerrc
-05a4649938755b3b3c058d6a7507065e07ba29ac448d314db3fc93623008eb1903ae5bcc9c62d0b29b37dd0e85246bc2dbfc2792c69e0f387e99683275db09cd adelie-kde-theme.js"
+sha512sums="1a839b3c96e5881be9c0b096984d79a320f66f65bdcf2749b31aca7a04d7eb8edc1326649a2fcf4b6f2012c0b5d6967d1066397542fec44c7d1ac44b0599b462 adelie-kde-theme-1.0.tar.xz
+84940738263518df79cebaa3c158ed3713009f1a8cd201a6de06cc2a935845aba8a90a60882b575e5b17321706786a7ee6addc30dc530ce0453821d0ba157616 kdeglobals"
diff --git a/user/adelie-kde-theme/adelie-kde-theme.js b/user/adelie-kde-theme/adelie-kde-theme.js
deleted file mode 100644
index 596d386b5..000000000
--- a/user/adelie-kde-theme/adelie-kde-theme.js
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2016 Aurélien COUDERC <zecoucou@free.fr>
-//
-// This program is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program. If not, see <https://www.gnu.org/licenses/>.
-
-// This script is provided by desktop-base
-// It is run by Plasma 5 on upgrade.
-// Plasma checks that the script is only run once for each version.
-desktops = desktops()
-
-for (desktop in desktops) {
- // Only set up the wallpaper if the plugin is the default.
- // Otherwise it means the user chose another plugin and we don’t want to override that.
- if (desktops[desktop].wallpaperPlugin == 'org.kde.image') {
- desktops[desktop].currentConfigGroup = Array('Wallpaper', 'org.kde.image', 'General')
- if (!desktops[desktop].readConfig('Image')) {
- // Only set up the wallpaper if the wallpaper image is empty (=default).
- // Otherwise it means the user selected a picture and we don’t want to override that.
- desktops[desktop].writeConfig('Image', 'Sunset');
- }
- }
-}
-
diff --git a/user/adelie-kde-theme/kdeglobals b/user/adelie-kde-theme/kdeglobals
index 2ec479dc2..80168401d 100644
--- a/user/adelie-kde-theme/kdeglobals
+++ b/user/adelie-kde-theme/kdeglobals
@@ -1,8 +1,2 @@
-[General]
-ColorScheme=Steel
-
-[Icons]
-Theme=Papirus
-
-[WM]
-activeBackground=104,0,0
+[KDE]
+LookAndFeelPackage=org.adelielinux.kdetheme.desktop
diff --git a/user/adelie-kde-theme/kscreenlockerrc b/user/adelie-kde-theme/kscreenlockerrc
deleted file mode 100644
index 54b5cbd92..000000000
--- a/user/adelie-kde-theme/kscreenlockerrc
+++ /dev/null
@@ -1,13 +0,0 @@
-[$Version]
-update_info=kscreenlocker.upd:0.1-autolock
-
-[Greeter]
-WallpaperPlugin=org.kde.image
-
-[Greeter][Wallpaper][org.kde.color][General]
-Color=128,0,0
-
-[Greeter][Wallpaper][org.kde.image][General]
-Color=128,0,0
-FillMode=1
-Image=LockScreen
diff --git a/user/adelie-lxqt-theme/APKBUILD b/user/adelie-lxqt-theme/APKBUILD
new file mode 100644
index 000000000..afe840866
--- /dev/null
+++ b/user/adelie-lxqt-theme/APKBUILD
@@ -0,0 +1,28 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=adelie-lxqt-theme
+pkgver=1.0
+pkgrel=1
+pkgdesc="The Adélie Linux official LXQt theme"
+url="https://adelielinux.org/"
+arch="noarch"
+options="!check" # No test suite.
+license="NCSA"
+depends="adelie-fonts adelie-wallpapers papirus-icons"
+makedepends=""
+subpackages=""
+source="lxqt-session.conf
+ lxqt-desktop.conf
+ lxqt-qt5ct.conf
+ "
+builddir="$srcdir/"
+
+package() {
+ install -D -m644 lxqt-desktop.conf "$pkgdir"/etc/xdg/pcmanfm-qt/lxqt/settings.conf
+ install -D -m644 lxqt-qt5ct.conf "$pkgdir"/etc/xdg/qt5ct/qt5ct.conf
+ install -D -m644 lxqt-session.conf "$pkgdir"/etc/xdg/lxqt/session.conf
+}
+
+sha512sums="1e3bc3c06ae7d5251f24bad11f305947d43f2fcf7f4813f7d07ed98f44a0a12c6da8c9068044ea92fa4b704e0a7987a4369a4a80f327a1b67ed67376c35877e8 lxqt-session.conf
+1f9f2ce47c1d0d1ed7cb1584ff550de69c49ab9493c10f1a999a2a285601b2d94cfc41ea9686120e5be0b968832c8975a6c4f619a17e564d00e2e7f592f8ce5e lxqt-desktop.conf
+79db5e0e6fdeabc5e82e843f0199c5e9102b983097a9f8c007bfe2624b85980fc713da0603833af20c00d88c889972e5bfb78b064af32a09b459328065304aac lxqt-qt5ct.conf"
diff --git a/user/adelie-lxqt-theme/lxqt-desktop.conf b/user/adelie-lxqt-theme/lxqt-desktop.conf
new file mode 100644
index 000000000..efe12b85f
--- /dev/null
+++ b/user/adelie-lxqt-theme/lxqt-desktop.conf
@@ -0,0 +1,20 @@
+[Behavior]
+ConfirmDelete=true
+ConfirmTrash=false
+CtrlRightClick=true
+SingleClick=false
+UseTrash=true
+
+[Desktop]
+AllSticky=false
+BgColor=#eeeeee
+DesktopIconSize=48
+DesktopShortcuts=Home, Trash, Computer
+FgColor=#131517
+Font="Liberation Sans,10,-1,5,50,0,0,0,0,0"
+HideItems=false
+PerScreenWallpaper=false
+ShadowColor=#c3c3c3
+TransformWallpaper=false
+Wallpaper=/usr/share/wallpapers/background/contents/images/1920x1200.png
+WallpaperMode=zoom
diff --git a/user/adelie-lxqt-theme/lxqt-qt5ct.conf b/user/adelie-lxqt-theme/lxqt-qt5ct.conf
new file mode 100644
index 000000000..023519e76
--- /dev/null
+++ b/user/adelie-lxqt-theme/lxqt-qt5ct.conf
@@ -0,0 +1,19 @@
+[Appearance]
+icon_theme=Papirus
+style=Fusion
+
+[Fonts]
+fixed=@Variant(\0\0\0@\0\0\0\x1e\0L\0i\0\x62\0\x65\0r\0\x61\0t\0i\0o\0n\0 \0M\0o\0n\0o@$\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10)
+general=@Variant(\0\0\0@\0\0\0\x1e\0L\0i\0\x62\0\x65\0r\0\x61\0t\0i\0o\0n\0 \0S\0\x61\0n\0s@$\0\0\0\0\0\0\xff\xff\xff\xff\x5\x1\0\x32\x10)
+
+[Interface]
+activate_item_on_single_click=1
+buttonbox_layout=0
+cursor_flash_time=1000
+dialog_buttons_have_icons=1
+double_click_interval=400
+menus_have_icons=true
+show_shortcuts_in_context_menus=true
+toolbutton_style=4
+underline_shortcut=1
+wheel_scroll_lines=3
diff --git a/user/adelie-lxqt-theme/lxqt-session.conf b/user/adelie-lxqt-theme/lxqt-session.conf
new file mode 100644
index 000000000..09518fc2d
--- /dev/null
+++ b/user/adelie-lxqt-theme/lxqt-session.conf
@@ -0,0 +1,2 @@
+[General]
+window_manager=openbox
diff --git a/user/adelie-mate-theme/APKBUILD b/user/adelie-mate-theme/APKBUILD
new file mode 100644
index 000000000..a182d9045
--- /dev/null
+++ b/user/adelie-mate-theme/APKBUILD
@@ -0,0 +1,22 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=adelie-mate-theme
+pkgver=1.0
+pkgrel=1
+pkgdesc="Adélie theme for the MATE desktop environment"
+url="https://adelielinux.org/"
+arch="noarch"
+options="!check" # no tests
+license="NCSA"
+depends="adelie-fonts adelie-wallpapers dconf papirus-icons"
+makedepends=""
+subpackages=""
+install="adelie-mate-theme.post-install"
+source="dconf.conf"
+
+package() {
+ install -Dm644 "$srcdir"/dconf.conf \
+ "$pkgdir"/etc/dconf/db/local.d/01-mate
+}
+
+sha512sums="10a5ca7aeb78bb464ed8455ecec0b8aa21ab76d89fad95674b71900ccb569ce1d800dd5352cdec0c10e38f3264982a53e809791780cbce2f495ad9f082b93bcb dconf.conf"
diff --git a/user/adelie-mate-theme/adelie-mate-theme.post-install b/user/adelie-mate-theme/adelie-mate-theme.post-install
new file mode 100644
index 000000000..37ca00b1d
--- /dev/null
+++ b/user/adelie-mate-theme/adelie-mate-theme.post-install
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+dconf update > /dev/null
diff --git a/user/adelie-mate-theme/dconf.conf b/user/adelie-mate-theme/dconf.conf
new file mode 100644
index 000000000..6e9cf64dc
--- /dev/null
+++ b/user/adelie-mate-theme/dconf.conf
@@ -0,0 +1,17 @@
+[org/mate/desktop/background]
+picture-filename='/usr/share/wallpapers/background/contents/image/1920x1200.png'
+picture-options='zoom'
+
+[org/mate/desktop/interface]
+document-font-name='Source Sans 3 10'
+font-name='Source Sans 3 10'
+gtk-theme='Raleigh'
+icon-theme='Papirus'
+monospace-font-name='Source Code Pro 10'
+
+[org/mate/marco/general]
+theme='Blue-Submarine'
+
+[org/mate/terminal/profiles/default]
+background-color='#000000000000'
+foreground-color='#FFFFFFFFFFFF'
diff --git a/user/adelie-wallpapers/APKBUILD b/user/adelie-wallpapers/APKBUILD
index dc66e9e5f..e6b4ac45f 100644
--- a/user/adelie-wallpapers/APKBUILD
+++ b/user/adelie-wallpapers/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=adelie-wallpapers
-pkgver=1.0
+pkgver=1.1
pkgrel=0
pkgdesc="Wallpapers from the Adélie Linux team"
url="https://www.adelielinux.org/"
@@ -10,13 +10,34 @@ options="!check" # No test suite.
license="CC-BY-SA-4.0"
depends=""
makedepends=""
-subpackages=""
+subpackages="$pkgname-core"
source="https://distfiles.adelielinux.org/source/adelie-wallpapers-$pkgver.tar.xz"
package() {
- cd "$builddir"
mkdir -p "$pkgdir"
- cp -r usr "$pkgdir"/
+ mv "$builddir"/usr "$pkgdir"/
+
+ # For MATE/XFCE
+ mkdir "$pkgdir"/usr/share/backgrounds/
+ ln -s ../wallpapers/background/contents/images/1280x1024.png \
+ "$pkgdir"/usr/share/backgrounds/background.png
+ ln -s ../wallpapers/background/contents/images/1920x1080.png \
+ "$pkgdir"/usr/share/backgrounds/background-wide.png
+ ln -s ../wallpapers/lockscreen/contents/images/1280x1024.png \
+ "$pkgdir"/usr/share/backgrounds/lockscreen.png
+ ln -s ../wallpapers/lockscreen/contents/images/1920x1080.png \
+ "$pkgdir"/usr/share/backgrounds/lockscreen-wide.png
+}
+
+core() {
+ provides="$pkgname=1"
+ description="Base wallpapers needed for minimal desktop environments"
+
+ mkdir -p "$subpkgdir"/usr/share/wallpapers
+ for wallpaper in background lockscreen; do
+ cp -r "$pkgdir"/usr/share/wallpapers/$wallpaper \
+ "$subpkgdir"/usr/share/wallpapers/
+ done
}
-sha512sums="3815145eaf92524eb848ec179cefecd66b43873a9f17133b62baf2ce894d7f629585f6670e5e499d7d5779377c1819627256d7812bb4318b0bfd68466c9b1cff adelie-wallpapers-1.0.tar.xz"
+sha512sums="9ea239bd2ab1c53274a63f159b572c682b72ddb31f02ec30d5afe43e935fa0128fc61e4497d2c76c8d70dc2cd5fc53d0c0b04aa6ab744bb954addc10dcaff981 adelie-wallpapers-1.1.tar.xz"
diff --git a/user/adwaita-icon-theme/APKBUILD b/user/adwaita-icon-theme/APKBUILD
index 1815af7fb..d63dd1819 100644
--- a/user/adwaita-icon-theme/APKBUILD
+++ b/user/adwaita-icon-theme/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=adwaita-icon-theme
-pkgver=3.32.0
+pkgver=3.36.1
pkgrel=0
pkgdesc="GNOME system icon set"
url="https://www.gnome.org/"
@@ -10,10 +10,9 @@ license="CC-BY-SA-3.0 OR LGPL-3.0-only"
depends=""
makedepends=""
subpackages=""
-source="https://ftp.gnome.org/pub/gnome/sources/adwaita-icon-theme/3.32/adwaita-icon-theme-$pkgver.tar.xz"
+source="https://ftp.gnome.org/pub/gnome/sources/adwaita-icon-theme/${pkgver%.*}/adwaita-icon-theme-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="9609732cd51c6794d4d86598818bb2a589b0f4b6b795e57f3507dad69b21ef1b2fc2e83e24e937428bbace32fcccf587a5771cbc02c5768206e704f0456a6d1d adwaita-icon-theme-3.32.0.tar.xz"
+sha512sums="5df33c8592ebd17e05fb36590423177fa3e07345565302a5b7ef58fb7d7a9b2b3a1789907a81f5ca0abc7446f7e83af059ca9d6432e8182d5274394c79a24fb9 adwaita-icon-theme-3.36.1.tar.xz"
diff --git a/user/ae_fonts/APKBUILD b/user/ae_fonts/APKBUILD
index c5f66b6ab..e23ca23a7 100644
--- a/user/ae_fonts/APKBUILD
+++ b/user/ae_fonts/APKBUILD
@@ -15,12 +15,8 @@ source="https://downloads.sourceforge.net/arabeyes/ae_fonts_$pkgver.tar.bz2"
builddir="$srcdir"/${pkgname}_$pkgver
package() {
- cd "$builddir"
- local _fontdir
for _fontdir in AAHS AGA FS Kasr MCS Shmookh; do
- pushd $_fontdir
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ *.ttf
- popd
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ "$builddir"/$_fontdir/*.ttf
done
}
diff --git a/user/akonadi-contacts/APKBUILD b/user/akonadi-contacts/APKBUILD
index b4a0a598a..fdb83ce88 100644
--- a/user/akonadi-contacts/APKBUILD
+++ b/user/akonadi-contacts/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=akonadi-contacts
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Library for integrating contact lists with Akonadi"
url="https://www.kde.org/"
@@ -9,15 +9,14 @@ arch="all"
options="!check" # Tests require X11
license="LGPL-2.1+"
depends=""
-depends_dev="qt5-qtbase-dev akonadi-dev kcontacts-dev kcoreaddons-dev
- kservice-dev"
+depends_dev="qt5-qtbase-dev akonadi-dev grantleetheme-dev kcontacts-dev
+ kcoreaddons-dev kservice-dev"
makedepends="$depends_dev cmake extra-cmake-modules akonadi-mime-dev kio-dev
- kmime-dev prison-dev"
+ grantlee-dev kcmutils-dev kmime-dev prison-dev"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/akonadi-contacts-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/akonadi-contacts-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="dba40ec470d8b34b38d69470128708580a0581dcf1a88191da1b6bfedb426a13c964117eea1d266d1cb2224006a4b26f1f8ccc39e79eac67653aa808c5d81fb0 akonadi-contacts-18.12.3.tar.xz"
+sha512sums="81899905896da0f3b3459201400e6461d3dbec5ea2752b5176b0870974e015d03a5e409b5958c57fa737ac6b9381e9f5b347ba673d4346c32b7f84677478695c akonadi-contacts-22.04.2.tar.xz"
diff --git a/user/akonadi-contacts/build-without-trunk.patch b/user/akonadi-contacts/build-without-trunk.patch
deleted file mode 100644
index 9354bba96..000000000
--- a/user/akonadi-contacts/build-without-trunk.patch
+++ /dev/null
@@ -1,17 +0,0 @@
---- akonadi-contacts-17.08.1-55/CMakeLists.txt.old 2017-10-11 17:15:27.000000000 -0500
-+++ akonadi-contacts-17.08.1-55/CMakeLists.txt 2017-10-11 17:31:53.667300461 -0500
-@@ -25,10 +25,10 @@
-
-
- set(AKONADI_CONTACTS_VERSION ${PIM_VERSION})
--set(AKONADI_MIME_VERSION "5.6.40")
--set(KCONTACTS_VERSION "5.6.40")
--set(KMIMELIB_VERSION "5.6.40")
--set(AKONADI_VERSION "5.6.40")
-+set(AKONADI_MIME_VERSION "5.6.1")
-+set(KCONTACTS_VERSION "5.6.1")
-+set(KMIMELIB_VERSION "5.6.1")
-+set(AKONADI_VERSION "5.6.1")
-
- set(QT_REQUIRED_VERSION "5.8.0")
- find_package(Qt5 ${QT_REQUIRED_VERSION} CONFIG REQUIRED Widgets Test)
diff --git a/user/akonadi-mime/APKBUILD b/user/akonadi-mime/APKBUILD
index 9892edd68..26fb9610b 100644
--- a/user/akonadi-mime/APKBUILD
+++ b/user/akonadi-mime/APKBUILD
@@ -1,22 +1,20 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=akonadi-mime
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Libraries to implement basic MIME message handling"
url="https://www.kde.org/"
arch="all"
-options="!check" # regression?
license="LGPL-2.1+"
depends=""
depends_dev="qt5-qtbase-dev akonadi-dev kio-dev kmime-dev"
makedepends="$depends_dev cmake extra-cmake-modules libxslt-dev kdbusaddons-dev
kconfig-dev kitemmodels-dev kxmlgui-dev shared-mime-info"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/akonadi-mime-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/akonadi-mime-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +25,22 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ # The mailserializerplugintest test requires kdepim-runtime to be
+ # present on the system. Otherwise, Akonadi does not know how to
+ # convert a QByteArray of message/rfc822 to KMime::Message. This
+ # is a circular dependency, because kdepim-runtime requires amime
+ # so we must skip this test.
+ # Attribute tests all require X11.
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E 'mailserializerplugintest|attributetest'
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="ecda52f1d41c7b7925b9e71f55f2dca14f38308185a9bdd528f53b109758f79a653b52a2bbb91c138dfc432c798fa9d83307c8652b14269e5d6969a38130ee13 akonadi-mime-18.12.3.tar.xz"
+sha512sums="4c55414cb4fb756890b554981facf0a37aecc9ff43353605e4ac44e826f347b46814ec81afdbfec8a05d25a7af0efb1a5bb0b31752bbf3996242e3b8a6b1afdb akonadi-mime-22.04.2.tar.xz"
diff --git a/user/akonadi-search/APKBUILD b/user/akonadi-search/APKBUILD
new file mode 100644
index 000000000..a514ca634
--- /dev/null
+++ b/user/akonadi-search/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=akonadi-search
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="Search functionality for Akonadi"
+url="https://kde.org/"
+arch="all"
+license="LGPL-2.1+ AND (LGPL-2.1-only OR LGPL-3.0-only) AND GPL-2.0-only AND GPL-2.0+"
+depends=""
+makedepends="qt5-qtbase-dev cmake extra-cmake-modules kcmutils-dev kconfig-dev
+ kcrash-dev kdbusaddons-dev ki18n-dev kio-dev krunner-dev akonadi-dev
+ akonadi-mime-dev boost-dev kcalendarcore-dev kcontacts-dev kmime-dev
+ xapian-core-dev kauth-dev kcodecs-dev kcoreaddons-dev kitemmodels-dev
+ kjobwidgets-dev kpackage-dev kservice-dev solid-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/akonadi-search-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ # sqlite backend requires D-Bus server.
+ QT_QPA_PLATFORM=offscreen CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E 'akonadi-sqlite*|akonadi-pgsql*'
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="ddffb521c8e0ac368b41bf9c3e93dca84b977affa19aa70525a51fa146a337fdf25bb804abf98aab0f0666592c72b09e998322253b852ab8b6e0e8266594a953 akonadi-search-22.04.2.tar.xz"
diff --git a/user/akonadi/APKBUILD b/user/akonadi/APKBUILD
index b6fe014e0..61dd0437b 100644
--- a/user/akonadi/APKBUILD
+++ b/user/akonadi/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=akonadi
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Libraries and storage system for PIM data"
url="https://community.kde.org/KDE_PIM/Akonadi"
@@ -14,13 +14,15 @@ depends_dev="qt5-qtbase-dev boost-dev kconfig-dev kconfigwidgets-dev
makedepends="$depends_dev cmake extra-cmake-modules libxslt-dev qt5-qttools-dev
libxslt-dev shared-mime-info sqlite-dev kcompletion-dev kcrash-dev
kdesignerplugin-dev ki18n-dev kiconthemes-dev kitemviews-dev kio-dev
- kwidgetsaddons-dev kwindowsystem-dev kxmlgui-dev"
+ kwidgetsaddons-dev kwindowsystem-dev kxmlgui-dev postgresql-dev xz-dev
+ doxygen postgresql"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/akonadi-$pkgver.tar.xz
- akonadiserverrc"
+source="https://download.kde.org/stable/release-service/$pkgver/src/akonadi-$pkgver.tar.xz
+ akonadiserverrc
+ atomics.patch
+ "
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -31,17 +33,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ -DBUILD_QCH:BOOL=ON \
+ -DDATABASE_BACKEND=POSTGRES \
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
mkdir -p "$pkgdir"/usr/share/config/akonadi
@@ -49,5 +51,6 @@ package() {
"$pkgdir"/usr/share/config/akonadi
}
-sha512sums="f97e716be612001a8176f20afbe80a1cf4c78c6d348d92e542307ea951e1ff74189d2f0847675ed44ad65845b52a5180346b3866f5a8d82b55ed613d107ac346 akonadi-18.12.3.tar.xz
-b0c333508da8ba5c447827b2bad5f36e3dc72bef8303b1526043b09c75d3055790908ac9cbb871e61319cfd4b405f4662d62d2d347e563c9956f4c8159fca9ab akonadiserverrc"
+sha512sums="ea06a24ea0d740ba44705a33e7b7a51e99ca4a51efa735e409dd5be5707d0447ce409e8af88ad316a6064e61f381b27a63262a583d097a79cbdb132d6ca13d45 akonadi-22.04.2.tar.xz
+b0c333508da8ba5c447827b2bad5f36e3dc72bef8303b1526043b09c75d3055790908ac9cbb871e61319cfd4b405f4662d62d2d347e563c9956f4c8159fca9ab akonadiserverrc
+3d895231b88aedf3ef45112d637d3b90696386ef8e00df61c5204cd054b01a7c4326748b5126f03abe4ff8ba7bd74e0686bee60060fefeb45aefa7744b2a046e atomics.patch"
diff --git a/user/akonadi/atomics.patch b/user/akonadi/atomics.patch
new file mode 100644
index 000000000..55bdb5c03
--- /dev/null
+++ b/user/akonadi/atomics.patch
@@ -0,0 +1,10 @@
+--- akonadi-20.04.2/src/server/CMakeLists.txt.old 2020-06-02 07:09:51.000000000 +0000
++++ akonadi-20.04.2/src/server/CMakeLists.txt 2020-06-16 00:56:48.253282683 +0000
+@@ -272,6 +272,7 @@
+ set_target_properties(libakonadiserver PROPERTIES OUTPUT_NAME akonadiserver)
+ target_link_libraries(libakonadiserver
+ akonadi_shared
++ atomic
+ KF5AkonadiPrivate
+ Qt5::Core
+ Qt5::Network
diff --git a/user/alegreya-sans/APKBUILD b/user/alegreya-sans/APKBUILD
index f14a5f467..1f731cc63 100644
--- a/user/alegreya-sans/APKBUILD
+++ b/user/alegreya-sans/APKBUILD
@@ -15,8 +15,7 @@ source="Alegreya-Sans-$pkgver.tar.gz::https://github.com/huertatipografica/Alegr
builddir="$srcdir/Alegreya-Sans-$pkgver"
package() {
- cd "$builddir"/fonts/otf
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF/ *.otf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF/ "$builddir"/fonts/otf/*.otf
}
sha512sums="8052fe15717ecdfd301d878b03282ff4fd472a7e13a1e581c84d6f3993780897354d103aeda2f027350d9e56466914be38e97417fe450ec32e5823769015d0a4 Alegreya-Sans-2.008.tar.gz"
diff --git a/user/alegreya/APKBUILD b/user/alegreya/APKBUILD
index 354b8c276..0c035efc2 100644
--- a/user/alegreya/APKBUILD
+++ b/user/alegreya/APKBUILD
@@ -15,7 +15,6 @@ source="Alegreya-$pkgver.tar.gz::https://github.com/huertatipografica/Alegreya/a
builddir="$srcdir/Alegreya-$pkgver"
package() {
- cd "$builddir"
install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF/ fonts/otf/*.otf
}
diff --git a/user/alkimia/APKBUILD b/user/alkimia/APKBUILD
index 31c586984..0b3f062eb 100644
--- a/user/alkimia/APKBUILD
+++ b/user/alkimia/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=alkimia
-pkgver=8.0.1
+pkgver=8.0.4
pkgrel=0
pkgdesc="Library for common financial functionality"
url="https://community.kde.org/Alkimia/libalkimia"
@@ -11,13 +11,12 @@ license="LGPL-2.1+"
depends=""
depends_dev="gmp-dev qt5-qtbase-dev"
makedepends="$depends_dev cmake extra-cmake-modules qt5-qtwebkit-dev
- kconfig-dev kcoreaddons-dev kdelibs4support-dev knewstuff-dev
- kpackage-dev plasma-framework-dev"
+ kconfig-dev kcoreaddons-dev kdelibs4support-dev knewstuff-dev
+ kpackage-dev plasma-framework-dev"
subpackages="$pkgname-dev $pkgname-lang"
source="https://download.kde.org/stable/alkimia/$pkgver/alkimia-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="be943e854c6c2d3f85332b456be9fb3c3528fac403228a7d4ab9362856d53ea622ba9e96b70f7be47058aa0016eec78381dc7649db3b06938d4547ba1e181517 alkimia-8.0.1.tar.xz"
+sha512sums="49b771ac28ec76143cf1237a21a834fa38689c91c773a472cc090e94f49287a79ad7790ef068cd6bebc4e64aa97e5026a9ea5be841bbdb3ca89b00b6ca7acc27 alkimia-8.0.4.tar.xz"
diff --git a/user/alpine/APKBUILD b/user/alpine/APKBUILD
index 189057dea..f218b796c 100644
--- a/user/alpine/APKBUILD
+++ b/user/alpine/APKBUILD
@@ -1,27 +1,27 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=alpine
-pkgver=2.21
+pkgver=2.26
pkgrel=0
pkgdesc="Terminal-based email client"
-url="http://alpine.x10host.com/alpine/"
+url="https://alpineapp.email/"
arch="all"
license="Apache-2.0"
depends=""
makedepends="aspell-dev krb5-dev linux-pam-dev ncurses-dev openldap-dev
openssl-dev"
subpackages="$pkgname-doc"
-source="http://alpine.x10host.com/alpine/release/src/alpine-$pkgver.tar.xz
- support-musl.patch"
+# NOTE: "old" releases are moved elsewhere, so URLs will break often.
+# The author was contacted about this on 2022-09-30.
+#source="https://alpineapp.email/alpine/release/src/$pkgname-$pkgver.tar.xz"
+source="$pkgname-$pkgver.tar.gz::https://repo.or.cz/alpine.git/snapshot/refs/tags/v$pkgver.tar.gz"
+builddir="$srcdir/$pkgname-v$pkgver"
-prepare() {
- cd "$builddir"
- default_prepare
- autoreconf -vif
-}
+# secfixes:
+# 2.25-r0:
+# - CVE-2021-38370
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,14 +33,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="a2a36a033c8af79810816a7da7185c269808ba6d84d013691fd8b3764c63f5fb2284e6844ec5a5e99d168514ae636debf59fae962533a2916679e4e9109c6264 alpine-2.21.tar.xz
-cdf827b5947fd14b6a6c1ad86df4ff1b8be1ffd51279aaa02376b2b60f3de742c54364e18d73d9a75c5c87ed3c8668a3f0c9eb59733f8da195e85833b4364782 support-musl.patch"
+sha512sums="7ca4d5fc7cc9b5fc63b0cb341fa161274c7f724d3f812a7f94dcfe60d678665f0fbce5b671fa26d4da822f09ac58978a3f6385a94c8f3dc9b16bd8fa66a49634 alpine-2.26.tar.gz"
diff --git a/user/alpine/support-musl.patch b/user/alpine/support-musl.patch
deleted file mode 100644
index ab3c2d857..000000000
--- a/user/alpine/support-musl.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- ./configure.ac.orig
-+++ ./configure.ac
-@@ -723,7 +723,7 @@
- else
- dnl preload c-client default locations/options
- case $host in
-- *-linux-gnu*|*-k*bsd*-gnu*|*-gnu*)
-+ *-linux-gnu*|*-k*bsd*-gnu*|*-gnu*|*-linux-musl*)
- if test -f /etc/fedora-release -o -f /etc/redhat-release -o -f /etc/redhat_version ; then
- alpine_SSLTYPE="nopwd"
- if test -d /etc/pki/tls ; then
-@@ -1059,7 +1059,7 @@
- dnl build from c-client. Most of this will go away when c-client
- dnl adopts configure
- case "$host" in
-- *-linux-gnu*|*-k*bsd*-gnu*|*-gnu*)
-+ *-linux-gnu*|*-k*bsd*-gnu*|*-gnu*|*-linux-musl*)
- alpine_path_delim="/"
- alpine_mode_readonly="(0600)"
- if test -f /etc/fedora-release ; then
diff --git a/user/alsa-lib/APKBUILD b/user/alsa-lib/APKBUILD
index 61a771373..2071b794a 100644
--- a/user/alsa-lib/APKBUILD
+++ b/user/alsa-lib/APKBUILD
@@ -1,24 +1,19 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=alsa-lib
-pkgver=1.1.8
+pkgver=1.2.6.1
pkgrel=0
pkgdesc="Linux sound support system"
url="https://www.alsa-project.org/wiki/Main_Page"
arch="all"
license="LGPL-2.0+"
-subpackages="$pkgname-dev $pkgname-dbg"
+depends=""
makedepends="linux-headers"
-source="ftp://ftp.alsa-project.org/pub/lib/$pkgname-$pkgver.tar.bz2
- ucm_add_limits_h.patch
+subpackages="$pkgname-dev $pkgname-dbg"
+source="https://www.alsa-project.org/files/pub/lib/$pkgname-$pkgver.tar.bz2
remove-test.patch
+ type_compat.patch
"
-prepare() {
- update_config_sub
- rm src/compat/hsearch_r.c && touch src/compat/hsearch_r.c
- default_prepare
-}
-
build() {
./configure \
--build=$CBUILD \
@@ -32,6 +27,10 @@ build() {
--enable-aload \
--disable-dependency-tracking \
--without-versioned
+ rm -rf "$builddir"/include/sound
+ mkdir "$builddir"/include/sound
+ printf "all:\ncheck:\ninstall:\n" > "$builddir"/include/sound/Makefile
+
make
}
@@ -43,6 +42,6 @@ package() {
make -j1 DESTDIR="$pkgdir" install
}
-sha512sums="50ae107c6efe8200b4c41e0463e099d16e149332f1d3a22c3e81d3e7d980b7f93f3610fc9711ef62067caeb1054e7ea612ba3903bf8a91ebeffa48687cf80eed alsa-lib-1.1.8.tar.bz2
-3b37652d50809443b5f8e80f8d447108195b0cd66fd917805bb393fc091584b6f3dad4414f568742b61745617e7a695862058a0a0f93dcc31e4c97177a520352 ucm_add_limits_h.patch
-8ef518517647b702da7f3573f4f3f10be8bbac3f092834b38c59521f7236acae258a9afe65eebfa415828135ac8a1836e3dce83ee3f0eaf4403158a48802144d remove-test.patch"
+sha512sums="70e539cf092b5d43e00e4134d8a3e184f0dc34312823e4b58a574320cbf06cb7369bc3251ecb1858033756a7a8c35d36faa8da48d49f6efe0cec905784adbd45 alsa-lib-1.2.6.1.tar.bz2
+0ce3c2b8a0a70e2dffb6d633b95c4aae74504cd694fe1507cbc409d931b5f733935b22de45e4adcf5a507587c9f80c60a6f0e798aac2ca2fbf0cbcdef0080079 remove-test.patch
+bdcfa3d5fcc055fb6732922679e21689fc2ac19462fe7b72d16862c98ef8c995c3dd5becc4987ba417068e6b0e561bec7e6284d5f0a414e2966c8e00ac304fa8 type_compat.patch"
diff --git a/user/alsa-lib/remove-test.patch b/user/alsa-lib/remove-test.patch
index e52cad42a..92059b0f2 100644
--- a/user/alsa-lib/remove-test.patch
+++ b/user/alsa-lib/remove-test.patch
@@ -19,7 +19,7 @@
client_event_filter_LDADD=../src/libasound.la
--- alsa-lib-1.1.4.1/test/Makefile.in.old 2017-06-01 01:28:25.000000000 -0500
+++ alsa-lib-1.1.4.1/test/Makefile.in 2017-09-27 00:58:29.668332253 -0500
-@@ -52,7 +52,7 @@
+@@ -90,7 +90,7 @@
check_PROGRAMS = control$(EXEEXT) pcm$(EXEEXT) pcm_min$(EXEEXT) \
latency$(EXEEXT) seq$(EXEEXT) playmidi1$(EXEEXT) \
timer$(EXEEXT) rawmidi$(EXEEXT) midiloop$(EXEEXT) \
@@ -28,7 +28,7 @@
client_event_filter$(EXEEXT) chmap$(EXEEXT) \
audio_time$(EXEEXT) user-ctl-element-set$(EXEEXT) \
pcm-multi-thread$(EXEEXT)
-@@ -96,9 +96,6 @@
+@@ -136,9 +136,6 @@
namehint_SOURCES = namehint.c
namehint_OBJECTS = namehint.$(OBJEXT)
namehint_DEPENDENCIES = ../src/libasound.la
@@ -38,7 +38,7 @@
pcm_SOURCES = pcm.c
pcm_OBJECTS = pcm.$(OBJEXT)
pcm_DEPENDENCIES = ../src/libasound.la
-@@ -173,11 +170,11 @@
+@@ -223,11 +219,11 @@
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
SOURCES = audio_time.c chmap.c client_event_filter.c control.c \
@@ -52,7 +52,7 @@
pcm-multi-thread.c pcm_min.c playmidi1.c queue_timer.c \
rawmidi.c seq.c timer.c user-ctl-element-set.c
RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-@@ -366,7 +363,6 @@
+@@ -439,7 +436,6 @@
timer_LDADD = ../src/libasound.la
rawmidi_LDADD = ../src/libasound.la
midiloop_LDADD = ../src/libasound.la
@@ -60,21 +60,22 @@
queue_timer_LDADD = ../src/libasound.la
namehint_LDADD = ../src/libasound.la
client_event_filter_LDADD = ../src/libasound.la
-@@ -444,9 +440,6 @@
- namehint$(EXEEXT): $(namehint_OBJECTS) $(namehint_DEPENDENCIES) $(EXTRA_namehint_DEPENDENCIES)
+@@ -524,9 +520,6 @@
@rm -f namehint$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(namehint_OBJECTS) $(namehint_LDADD) $(LIBS)
+
-oldapi$(EXEEXT): $(oldapi_OBJECTS) $(oldapi_DEPENDENCIES) $(EXTRA_oldapi_DEPENDENCIES)
- @rm -f oldapi$(EXEEXT)
- $(AM_V_CCLD)$(LINK) $(oldapi_OBJECTS) $(oldapi_LDADD) $(LIBS)
+
pcm$(EXEEXT): $(pcm_OBJECTS) $(pcm_DEPENDENCIES) $(EXTRA_pcm_DEPENDENCIES)
@rm -f pcm$(EXEEXT)
- $(AM_V_CCLD)$(pcm_LINK) $(pcm_OBJECTS) $(pcm_LDADD) $(LIBS)
-@@ -488,7 +481,6 @@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/latency.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/midiloop.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/namehint.Po@am__quote@
--@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldapi.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcm-multi-thread.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcm.Po@am__quote@
- @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcm_min.Po@am__quote@
+@@ -577,7 +570,6 @@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/latency.Po@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/midiloop.Po@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/namehint.Po@am__quote@ # am--include-marker
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oldapi.Po@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcm-multi-thread.Po@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcm.Po@am__quote@ # am--include-marker
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/pcm_min.Po@am__quote@ # am--include-marker
+
diff --git a/user/alsa-lib/type_compat.patch b/user/alsa-lib/type_compat.patch
new file mode 100644
index 000000000..4236d11d4
--- /dev/null
+++ b/user/alsa-lib/type_compat.patch
@@ -0,0 +1,23 @@
+Since we force the use of the uapi headers from linux-headers instead of
+using the vendored copy, type_compat.h never gets put in the place it
+should be for it to be seen in sound/.
+
+However, the only reason it was included here anyway was to replace a
+definition that was never used:
+
+https://github.com/alsa-project/alsa-lib/commit/ae564665ec261cf104de499b1cdda3564070fc65#diff-5e0b4d8ecf374a31036ffc7b224d5e7fL21
+
+ -#define __packed __attribute__((__packed__))
+ -
+ +#include <sound/type_compat.h>
+
+--- alsa-lib-1.2.2/src/topology/tplg_local.h 2020-02-19 03:35:39.000000000 -0600
++++ alsa-lib-1.2.2/src/topology/tplg_local.h 2020-03-17 01:26:25.159548858 -0500
+@@ -18,7 +18,6 @@
+ #include "list.h"
+ #include "topology.h"
+
+-#include <sound/type_compat.h>
+ #include <sound/asound.h>
+ #include <sound/asoc.h>
+ #include <sound/tlv.h>
diff --git a/user/alsa-lib/ucm_add_limits_h.patch b/user/alsa-lib/ucm_add_limits_h.patch
deleted file mode 100644
index 2686dddd1..000000000
--- a/user/alsa-lib/ucm_add_limits_h.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- a/src/ucm/parser.c
-+++ b/src/ucm/parser.c
-@@ -31,6 +31,7 @@
- */
-
- #include "ucm_local.h"
-+#include <limits.h>
- #include <dirent.h>
-
- /** The name of the environment variable containing the UCM directory */
diff --git a/user/alsa-plugins/APKBUILD b/user/alsa-plugins/APKBUILD
index be384caa8..ebf39a4cb 100644
--- a/user/alsa-plugins/APKBUILD
+++ b/user/alsa-plugins/APKBUILD
@@ -1,23 +1,19 @@
# Contributor: Taner Tas <taner76@gmail.com>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=alsa-plugins
-pkgver=1.1.8
+pkgver=1.2.2
pkgrel=0
pkgdesc="Advanced Linux Sound Architecture (ALSA) plugins"
url="https://www.alsa-project.org/main/index.php/Main_Page"
arch="all"
options="!check" # No test suite.
license="GPL-2.0+ AND LGPL-2.1+ AND BSD-3-Clause AND MIT"
+depends=""
makedepends="linux-headers alsa-lib-dev speexdsp-dev ffmpeg-dev
libsamplerate-dev pulseaudio-dev"
subpackages="$pkgname-lavcrate $pkgname-pulse $pkgname-a52"
source="ftp://ftp.alsa-project.org/pub/plugins/$pkgname-$pkgver.tar.bz2"
-prepare() {
- default_prepare
- update_config_sub
-}
-
build() {
./configure \
--build=$CBUILD \
@@ -64,4 +60,4 @@ a52() {
"$subpkgdir"/usr/share/alsa/alsa.conf.d/
}
-sha512sums="bb1a4411921ec332f47b43515f6d3b4c03a01568854950b9b5c3f0d8172d9a0c4a5b3652bc64c62eae5ea3aaa5d95fe3d32c0a213fe99adf490a9807bcb58ecd alsa-plugins-1.1.8.tar.bz2"
+sha512sums="25a7dfaa64be024447d889b5cde668f1308d197f54880548a82d50beb4ac0dbff33b415da1e26dc5229408c934247a9bd38acfb0f82ca388deac0d77ab3cdadb alsa-plugins-1.2.2.tar.bz2"
diff --git a/user/alsa-utils/APKBUILD b/user/alsa-utils/APKBUILD
index f956cc10a..cab801ab0 100644
--- a/user/alsa-utils/APKBUILD
+++ b/user/alsa-utils/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=alsa-utils
-pkgver=1.1.8
+pkgver=1.2.4
pkgrel=0
pkgdesc="Advanced Linux Sound Architecture (ALSA) utilities"
url="https://www.alsa-project.org/wiki/Main_Page"
@@ -16,12 +16,7 @@ source="ftp://ftp.alsa-project.org/pub/utils/$pkgname-$pkgver.tar.bz2
alsaconf.patch
alsa.initd
alsa.confd
-"
-
-prepare() {
- default_prepare
- update_config_sub
-}
+ "
build() {
./configure \
@@ -41,7 +36,7 @@ package() {
install -Dm644 ../alsa.confd "$pkgdir"/etc/conf.d/alsa
}
-sha512sums="f877b491840126420dd9847347d0af865b6d03eccac2e2c3853cdbc76e91899f5a5139753cc41a4db942e7999c8d53cf9bd57d2fd5e1d32c872871b2d25146d9 alsa-utils-1.1.8.tar.bz2
+sha512sums="13080abda55269513b3751044dac292d695e273073a62d74ed4a32c68f448a2b015fe16604650821a6398b6ef6a7b6008cb9f0b7fb7f4ee1fa2b4eb2dcf29770 alsa-utils-1.2.4.tar.bz2
817215be6e9f103a8a187df5b1142c4d2e952f547a64579a9b8cfa58bd762d6a55bde75c0f66f018c0597744d07ccdb08216f7b368db464e36667cecedcc00f3 alsaconf.patch
-8a52e6363d5dcfb16e1e607e1af3e46a2148989689e5ab04caf05f84dc68b34cc003b1cf0945ce2c3670cc7f3ef0e40824f689f1efa2d09177c82b13571a7168 alsa.initd
+7bf743024d7c5caed2fbf8af5cee73bcc569a7bab0bd6459541d3704cc6a7456d588b600b690e7406e122deaf0316dd1f67219a267bec4dff3f6c0f120edaae4 alsa.initd
6e716e6230fd3d2c33e3cb2dbf572d632c9ac6452c1768388bea7d3ca22f7c72cf6bcd702580f45cb9089983582011c8b04cbdb4420d14fb988167b1391ea547 alsa.confd"
diff --git a/user/alsa-utils/alsa.initd b/user/alsa-utils/alsa.initd
index e0a1215cf..1266b6624 100644
--- a/user/alsa-utils/alsa.initd
+++ b/user/alsa-utils/alsa.initd
@@ -39,7 +39,7 @@ restore() {
for ossfile in "${alsastatedir}"/oss/card*_pcm* ; do
[ -e "${ossfile}" ] || continue
# We use cat because I'm not sure if cp works properly on /proc
- local procfile=${ossfile##${alsastatedir}/oss}
+ local procfile="${ossfile##${alsastatedir}/oss}"
procfile="$(echo "${procfile}" | sed -e 's,_,/,g')"
if [ -e /proc/asound/"${procfile}"/oss ] ; then
cat "${ossfile}" > /proc/asound/"${procfile}"/oss
@@ -63,7 +63,7 @@ save() {
for ossfile in /proc/asound/card*/pcm*/oss; do
[ -e "${ossfile}" ] || continue
- local device=${ossfile##/proc/asound/} ; device=${device%%/oss}
+ local device="${ossfile##/proc/asound/}" ; device="${device%%/oss}"
device="$(echo "${device}" | sed -e 's,/,_,g')"
mkdir -p "${alsastatedir}/oss/"
cp "${ossfile}" "${alsastatedir}/oss/${device}"
diff --git a/user/analitza/APKBUILD b/user/analitza/APKBUILD
index 4dfd623df..2be4e1764 100644
--- a/user/analitza/APKBUILD
+++ b/user/analitza/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=analitza
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Mathematical object library"
url="https://api.kde.org/4.x-api/kdeedu-apidocs/analitza/html/index.html"
@@ -12,10 +12,9 @@ depends_dev="qt5-qtbase-dev"
makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev eigen-dev
qt5-qtsvg-dev qt5-qtdeclarative-dev"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/analitza-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/analitza-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,19 +25,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3
- ${CMAKE_CROSSOPTS}
+ -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3 \
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E '(export|curve|plots|surface)'
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d20ac4ce1a9ed5737d6e29f92f86c081cbdded829055d4d077832bdeadd00afa736ee4c6c99a8d7de242d6d8b5165368f6ca05cc9c623a9533b2cf3deedb33a9 analitza-18.12.3.tar.xz"
+sha512sums="1dc9460ae65d9cf820687f34f2675956d3c64fabef7a1513fad82fd0343ce6a34d9ea0a3647bf614369381a06d65c32032f53f0fd8b2c13b5ec67b543ce555aa analitza-22.04.2.tar.xz"
diff --git a/user/andika/APKBUILD b/user/andika/APKBUILD
index 5d385c71b..8d32e7ca7 100644
--- a/user/andika/APKBUILD
+++ b/user/andika/APKBUILD
@@ -11,11 +11,10 @@ license="OFL-1.1"
depends="fontconfig"
makedepends=""
subpackages=""
-source="https://software.sil.org/downloads/r/andika/Andika-5.000.zip"
-builddir="$srcdir/Andika-5.000"
+source="https://software.sil.org/downloads/r/andika/Andika-$pkgver.zip"
+builddir="$srcdir/Andika-$pkgver"
package() {
- cd "$builddir"
install -D -m644 Andika-R.ttf "$pkgdir"/usr/share/fonts/X11/TTF/Andika-R.ttf
}
diff --git a/user/anonymous-pro/APKBUILD b/user/anonymous-pro/APKBUILD
index 33466e792..8719368a6 100644
--- a/user/anonymous-pro/APKBUILD
+++ b/user/anonymous-pro/APKBUILD
@@ -2,7 +2,9 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=anonymous-pro
pkgver=1.003
-_prev=1.002
+_pkgver=$(printf '%s' "$pkgver" | tr '.' '_')
+pkgold=1.002
+_pkgold=$(printf '%s' "$pkgold" | tr '.' '_')
pkgrel=0
pkgdesc="Fixed-width (monospace) font designed for programming"
url="https://www.marksimonson.com/fonts/view/anonymous-pro"
@@ -12,15 +14,13 @@ license="OFL-1.1"
depends="fontconfig"
makedepends=""
subpackages=""
-source="https://www.marksimonson.com/assets/content/fonts/AnonymousPro-$_prev.zip
- https://www.marksimonson.com/assets/content/fonts/AnonymousProMinus-$pkgver.zip"
-builddir="$srcdir/AnonymousPro-1.002.001"
+source="https://www.marksimonson.com/assets/content/fonts/AnonymousProMinus-$_pkgver.zip
+ https://www.marksimonson.com/assets/content/fonts/AnonymousPro-$_pkgold.zip"
package() {
- cd "$srcdir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ AnonymousPro-1.002.001/*.ttf
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ AnonymousProMinus-$pkgver/*.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ "$srcdir"/AnonymousPro-$pkgold.001/*.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ "$srcdir"/AnonymousProMinus-$_pkgver/*.ttf
}
-sha512sums="7606d520ad79fbf4e13d676c1aff61b764dce74e170f8783b8e606f7907c4b8db0871e5568504d15aa23ca26e925ada4eb6b60fcf27171dccee0d3d32d9a92a1 AnonymousPro-1.002.zip
-1c81c449edb80cdcaf10c9779a3b5b2ea09ce9d0c457f620384cb0486cb1987449ba5c5b57de4f8e01b7d3c4fd54e7ec45baf02ab75232b8c29c36381697baf9 AnonymousProMinus-1.003.zip"
+sha512sums="d0019892c2a2c2ab90142f01dffb6a3c115d436181060247061c24256d333ae2ab6f28e1a233657061cc8b068b02ee974e5b6ffe4b9c26fb1c792d713f81d7ab AnonymousProMinus-1_003.zip
+e34c757b6be907b84194b4506ec2389113bb0d3750d518d7b2f7f9deb992172fd625dfb5a9c105df985b796c15559a5fcf53b123e86449a3fb71fdbfb57b6dd1 AnonymousPro-1_002.zip"
diff --git a/user/ant/APKBUILD b/user/ant/APKBUILD
new file mode 100644
index 000000000..022b4c8ef
--- /dev/null
+++ b/user/ant/APKBUILD
@@ -0,0 +1,65 @@
+# Contributor: Steeve Chailloux <steeve@chaahk.com>
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Contributor: Alyx Wolcott <alyx@leuhta.com>
+# Maintainer: Alyx Wolcott <alyx@leuhta.com>
+pkgname=ant
+pkgver=1.10.8
+pkgrel=0
+pkgdesc="Java-based build tool"
+url="http://ant.apache.org/"
+arch="noarch !armv7" #1007
+options="!check" # ExecStreamRedirectorTest locks on ppc64, SMTP tests fail
+license="Apache-2.0"
+depends="openjdk8"
+makedepends=""
+subpackages=""
+source="https://archive.apache.org/dist/ant/source/apache-$pkgname-$pkgver-src.tar.gz
+ ant.sh
+ imageio_fix_java_test.patch
+ imageio_fix_test.patch
+ "
+builddir="$srcdir/apache-$pkgname-$pkgver"
+
+_anthome="/usr/lib/java/$pkgname"
+
+# secfixes:
+# 1.10.8-r0:
+# - CVE-2020-1945
+
+build() {
+ sh ./bootstrap.sh
+ ./bootstrap/bin/ant dist-lite
+}
+
+check() {
+ ./bootstrap/bin/ant test
+}
+
+package() {
+ local destdir="$pkgdir/$_anthome"
+
+ install -dm755 "$destdir"/bin
+ rm dist/bin/*.bat dist/bin/*.cmd
+ install -m755 dist/bin/* "$destdir"/bin
+
+ install -dm755 "$pkgdir"/usr/bin
+ ln -sf $_anthome/bin/ant "$pkgdir"/usr/bin/ant
+
+ install -dm755 "$destdir"/lib
+ install -m644 dist/lib/*.jar "$destdir"/lib
+
+ # symlink to junit so it's on the javac build path for ant
+ # matches behavior on ubuntu 9 and makes sense for compatibility
+ ln -sf ../../junit.jar "$destdir"/lib/junit.jar
+
+ # The license says the NOTICE file should be redistributed for
+ # derivative works, so lets supply it.
+ install -m644 -D NOTICE "$pkgdir"/usr/share/licenses/$pkgname/NOTICE
+
+ install -m644 -D $srcdir/$pkgname.sh "$pkgdir"/etc/profile.d/$pkgname.sh
+}
+
+sha512sums="08312b38db21f0e9b32cbe45aebe42ff8abbc1feab0f7343c9c60ea751fb9ad3a92ecd36cdf89bc1cc77a381c945da6194fc611b26e385a915d8e2404cc168c6 apache-ant-1.10.8-src.tar.gz
+955fe52b415d57716df1338eff6d667d80e06a67bffd53def7d63d96f1224157b724a92df647afe8b3243dea749e221aec1e86d5be01060408fa000ec1132374 ant.sh
+9a698041a06ccc6db7765133fc6fabc6f2d0e70b96ff9de594bd836fc05ac33f489968a4fdd12fe044458eb3b99e905ca1e2a62a55acdbacebff9782c82a27de imageio_fix_java_test.patch
+1457c7415df1e80c8763b4db9f41cbdebfa58e17bcd263dae9ce31f9ee601650b51a893e4e0a324c974b60a6c2076fddfd78180baca0bcdbff65e9e88b30e063 imageio_fix_test.patch"
diff --git a/user/ant/ant.sh b/user/ant/ant.sh
new file mode 100644
index 000000000..bab7b972d
--- /dev/null
+++ b/user/ant/ant.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+ANT_HOME="/usr/share/java/ant"
+export ANT_HOME
diff --git a/user/ant/imageio_fix_java_test.patch b/user/ant/imageio_fix_java_test.patch
new file mode 100644
index 000000000..4fa856e73
--- /dev/null
+++ b/user/ant/imageio_fix_java_test.patch
@@ -0,0 +1,26 @@
+diff --git a/src/tests/junit/org/apache/tools/ant/taskdefs/optional/image/ImageIOTest.java b/src/tests/junit/org/apache/tools/ant/taskdefs/optional/image/ImageIOTest.java
+index c96691d..e8cfd29 100644
+--- a/src/tests/junit/org/apache/tools/ant/taskdefs/optional/image/ImageIOTest.java
++++ b/src/tests/junit/org/apache/tools/ant/taskdefs/optional/image/ImageIOTest.java
+@@ -86,21 +86,6 @@ public class ImageIOTest {
+ assertTrue("File was not overwritten.", lastModified < overwrittenLastModified);
+ }
+
+- @Test
+- public void testDrawOverwriteTrue() {
+- buildRule.executeTarget("testSimpleScale");
+- assertThat(buildRule.getLog(), containsString("Processing File"));
+- File f = new File(buildRule.getOutputDir(), LARGEIMAGE);
+- assumeTrue("Could not change file modification date",
+- f.setLastModified(f.lastModified() - FILE_UTILS.getFileTimestampGranularity() * 2));
+- long lastModified = f.lastModified();
+- buildRule.executeTarget("testDrawOverwriteTrue");
+- assertThat(buildRule.getLog(), containsString("Processing File"));
+- f = new File(buildRule.getOutputDir(), LARGEIMAGE);
+- long overwrittenLastModified = f.lastModified();
+- assertTrue("File was not overwritten.", lastModified < overwrittenLastModified);
+- }
+-
+ @Test
+ public void testOverwriteFalse() {
+ buildRule.executeTarget("testSimpleScale");
diff --git a/user/ant/imageio_fix_test.patch b/user/ant/imageio_fix_test.patch
new file mode 100644
index 000000000..ad3cc3e67
--- /dev/null
+++ b/user/ant/imageio_fix_test.patch
@@ -0,0 +1,23 @@
+diff --git a/src/etc/testcases/taskdefs/optional/image/imageio.xml b/src/etc/testcases/taskdefs/optional/image/imageio.xml
+index a7d6a23..0f0318b 100644
+--- a/src/etc/testcases/taskdefs/optional/image/imageio.xml
++++ b/src/etc/testcases/taskdefs/optional/image/imageio.xml
+@@ -59,18 +59,6 @@
+ </imageio>
+ </target>
+
+- <!-- this should produce a single file in the dest dir, overwriting any existing file -->
+- <target name="testDrawOverwriteTrue" depends="setUp">
+- <imageio includes="*.jpg" srcdir="${src.dir}" destdir="${output}"
+- overwrite="yes" failonerror="no">
+- <scale width="300" proportions="width"/>
+- <draw xloc="10" yloc="10">
+- <rectangle height="50" width="50" strokewidth="2"/>
+- <text string="Test"/>
+- </draw>
+- </imageio>
+- </target>
+-
+ <!-- this should not overwrite the existing file -->
+ <target name="testOverwriteFalse" depends="setUp">
+ <imageio includes="*.jpg" srcdir="${src.dir}" destdir="${output}"
diff --git a/user/apache-httpd/APKBUILD b/user/apache-httpd/APKBUILD
index fb5e75d29..94ee32cf9 100644
--- a/user/apache-httpd/APKBUILD
+++ b/user/apache-httpd/APKBUILD
@@ -1,8 +1,8 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=apache-httpd
_pkgreal=httpd
-pkgver=2.4.39
+pkgver=2.4.59
pkgrel=0
pkgdesc="Open-source HTTP server"
url="https://httpd.apache.org"
@@ -11,7 +11,7 @@ license="Apache-2.0"
depends=""
install="$pkgname.pre-install $pkgname.pre-upgrade"
makedepends="apr-dev apr-util-dev autoconf automake libxml2-dev nghttp2-dev
- openssl-dev pcre-dev sed zlib-dev"
+ openssl-dev pcre-dev sed zlib-dev cmd:which"
pkgusers="apache"
pkggroups="apache"
subpackages="$pkgname-dev
@@ -21,7 +21,7 @@ subpackages="$pkgname-dev
$pkgname-ldap
$pkgname-openrc"
provides="apache2 apache2-ssl"
-source="http://archive.apache.org/dist/$_pkgreal/$_pkgreal-$pkgver.tar.bz2
+source="https://archive.apache.org/dist/httpd/httpd-$pkgver.tar.bz2
adelie.layout
apache-httpd.confd
apache-httpd.initd
@@ -36,25 +36,67 @@ source="http://archive.apache.org/dist/$_pkgreal/$_pkgreal-$pkgver.tar.bz2
builddir="$srcdir/$_pkgreal-$pkgver"
options="suid !check"
-# 2.4.30: (unreleased)
-# - CVE-2017-15710
-# - CVE-2018-1283
-# - CVE-2018-1303
-# - CVE-2018-1301
-# - CVE-2017-15715
-# - CVE-2018-1312
-# - CVE-2018-1302
-# 2.4.34:
-# - CVE-2018-8011
-# - CVE-2018-1333
+# secfixes: http_server
+# 2.4.57-r0:
+# - CVE-2023-25690
+# - CVE-2023-27522
+# 2.4.55-r0:
+# - CVE-2022-36760
+# - CVE-2022-37436
+# 2.4.54-r0:
+# - CVE-2022-26377
+# - CVE-2022-28614
+# - CVE-2022-28615
+# - CVE-2022-29404
+# - CVE-2022-30522
+# - CVE-2022-30556
+# - CVE-2022-31813
+# 2.4.52-r0:
+# - CVE-2020-13950
+# - CVE-2020-35452
+# - CVE-2021-26690
+# - CVE-2021-26691
+# - CVE-2021-30641
+# - CVE-2021-33193
+# - CVE-2021-34798
+# - CVE-2021-36160
+# - CVE-2021-39275
+# - CVE-2021-40438
+# - CVE-2021-44224
+# - CVE-2021-44790
+# 2.4.46-r0:
+# - CVE-2020-9490
+# - CVE-2020-11984
+# - CVE-2020-11993
+# 2.4.43-r0:
+# - CVE-2020-1934
+# - CVE-2020-1927
+# 2.4.34-r0:
+# - CVE-2017-15710
+# - CVE-2017-15715
+# - CVE-2018-1283
+# - CVE-2018-1301
+# - CVE-2018-1302
+# - CVE-2018-1303
+# - CVE-2018-1312
+# - CVE-2018-1333
+# - CVE-2018-8011
+# 2.4.41-r0:
+# - CVE-2019-9517
+# - CVE-2019-10081
+# - CVE-2019-10082
+# - CVE-2019-10092
+# - CVE-2019-10097
+# - CVE-2019-10098
prepare() {
default_prepare
cat "$srcdir"/adelie.layout >> "$builddir"/config.layout
+ ./buildconf \
+ --with-apr=apr-1-config
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -62,6 +104,7 @@ build() {
--enable-layout=Adelie \
--enable-so \
--with-mpm=event \
+ --enable-mpms-shared="event prefork" \
--enable-mods-shared=reallyall \
--enable-ssl \
--disable-lua \
@@ -77,7 +120,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" -j1 install
# apache-provided configuration is awful
@@ -135,12 +177,12 @@ ldap() {
"$subpkgdir"/usr/libexec/apache2
}
-sha512sums="9742202040b3dc6344b301540f54b2d3f8e36898410d24206a7f8dcecb1bea7d7230fabc7256752724558af249facf64bffe2cf678b8f7cccb64076737abfda7 httpd-2.4.39.tar.bz2
+sha512sums="209da0bbac5e2564d4590302515b35495be6402273ff4024aa93e85e44554c95e053201d606383936425a41e1b5b97e6b40055dcbb385eb691a5029a6f3158c2 httpd-2.4.59.tar.bz2
c8bc2bb06ae51b0956e0ee673e80c444551c9b33dfcbb845106477c46d9e52786a8896022e1f00102264fecdf66e35e47fc6cf0abe9836fa536735cff4e6adf4 adelie.layout
336e81fa0d08f8fbe6243d52bd59b12cf2e925deb49b29d7a22953c5d40a951b6b753f51e5a396752cb0bbaf1cf25b1358902f375fb65639d00e62db7ae55ff2 apache-httpd.confd
-9893248f1724748c9ef91171728b4c557ced7de543e23ed72cb75c02728048b2813ac99015a4a28e7984daa51faa6e42403c17b875539fe71c33424865eccecf apache-httpd.initd
+5762d53f39ce7ecd730e05ddf6c063ede65cd75b9e7d67217784c80366646491ef9474306e8eb119c8fb5b4358407b07636a4e9cd82325d8df4e3e00dabc3459 apache-httpd.initd
18e8859c7d99c4483792a5fd20127873aad8fa396cafbdb6f2c4253451ffe7a1093a3859ce719375e0769739c93704c88897bd087c63e1ef585e26dcc1f5dd9b apache-httpd.logrotate
-cba279f31c12c3516bacf74856493c5a62a94017b3911d457b33e350af646b3e97632b15e396992e5115532c88c81fdd680a951ca0c71eb8a207f39d6c027c41 httpd.conf
+927fd409221a6a632db6786f112e6e804f0e45adc2d4bc4754c84af9a2f8374b53816a9f493d9c870ecd6c5aeb365ee248d254aea1f7c2730efadd212a508d18 httpd.conf
83d57c57b809340bb07291c340ded5903ae55c0bba7c48e4eb0d27529ce4ecb6e235378ad770c69c8be2762b5346fa5bec94b6c585510719c37fe6addb33f998 alias.conf
7def0982bda42d5fe3a1812128be455fe0a47161f7fd0facd9ff85056f043a19f520bdb1c01b9f3fb25ddd66aa6224fb4b183f107bccd56719e0c7a88ad70bd9 http2.conf
9745ec511331b2ec399bf7895bc935f9c8526fd81d47cb17e42c1f5c010bbbea0b5ef2f2f4b12984dc8c77f410132010c3e73347a49ebe5feb0c1a763fe73a82 host.conf
diff --git a/user/apache-httpd/apache-httpd.initd b/user/apache-httpd/apache-httpd.initd
index c18643735..24be3e172 100755
--- a/user/apache-httpd/apache-httpd.initd
+++ b/user/apache-httpd/apache-httpd.initd
@@ -114,7 +114,7 @@ fullstatus() {
if ! service_started "${SVCNAME}"; then
eerror "${SVCNAME} not started"
- elif ! type -p $(set -- ${LYNX}; echo $1) 2>&1 >/dev/null; then
+ elif ! command -v "$(set -- ${LYNX}; printf '%s' "$1")" 2>&1 >/dev/null; then
eerror "lynx not installed!"
else
${LYNX} ${STATUSURL}
@@ -134,7 +134,7 @@ configdump() {
if ! service_started "${SVCNAME}"; then
eerror "${SVCNAME} not started"
- elif ! type -p $(set -- ${LYNX}; echo $1) 2>&1 >/dev/null; then
+ elif ! command -v "$(set -- ${LYNX}; printf '%s' "$1")" 2>&1 >/dev/null; then
eerror "lynx not installed!"
else
echo "${HTTPD} started with '${HTTPD_OPTS}'"
diff --git a/user/apache-httpd/apache-httpd.pre-install b/user/apache-httpd/apache-httpd.pre-install
index d4ede7476..65cf5b926 100644
--- a/user/apache-httpd/apache-httpd.pre-install
+++ b/user/apache-httpd/apache-httpd.pre-install
@@ -1,8 +1,8 @@
#!/bin/sh
-addgroup -S -g 82 www-data 2>/dev/null
-addgroup -S apache 2>/dev/null
-adduser -S -D -H -h /var/www -s /sbin/nologin -G apache -g apache apache 2>/dev/null
-addgroup apache www-data 2>/dev/null
+groupadd -r -g 82 www-data 2>/dev/null
+groupadd -r apache 2>/dev/null
+useradd -c apache -s /sbin/nologin -g apache -G www-data \
+ -m -d /var/www -r apache 2>/dev/null
exit 0
diff --git a/user/apache-httpd/apache-httpd.pre-upgrade b/user/apache-httpd/apache-httpd.pre-upgrade
index d4ede7476..02edc914c 100644..120000
--- a/user/apache-httpd/apache-httpd.pre-upgrade
+++ b/user/apache-httpd/apache-httpd.pre-upgrade
@@ -1,8 +1 @@
-#!/bin/sh
-
-addgroup -S -g 82 www-data 2>/dev/null
-addgroup -S apache 2>/dev/null
-adduser -S -D -H -h /var/www -s /sbin/nologin -G apache -g apache apache 2>/dev/null
-addgroup apache www-data 2>/dev/null
-
-exit 0
+apache-httpd.pre-install \ No newline at end of file
diff --git a/user/apache-httpd/conf/httpd.conf b/user/apache-httpd/conf/httpd.conf
index 7fe8adfdf..bada89139 100644
--- a/user/apache-httpd/conf/httpd.conf
+++ b/user/apache-httpd/conf/httpd.conf
@@ -11,6 +11,14 @@ ServerTokens Prod
# What IP/port to listen on. By default, listens to port 80 on all IPs.
Listen 80
+# Only ONE of the following modules should be uncommented to select the
+# Multi-Processing Module that Apache should use to handle connections.
+# Read More: https://httpd.apache.org/docs/2.4/mpm.html
+# Adélie Linux enables mpm_event by default, as it performs better
+# than mpm_prefork for most use cases.
+LoadModule mpm_event_module /usr/libexec/apache2/mod_mpm_event.so
+#LoadModule mpm_prefork_module /usr/libexec/apache2/mod_mpm_prefork.so
+
# The rest of these modules are required for basic operations.
LoadModule log_config_module /usr/libexec/apache2/mod_log_config.so
LoadModule mime_module /usr/libexec/apache2/mod_mime.so
diff --git a/user/apaste/APKBUILD b/user/apaste/APKBUILD
new file mode 100644
index 000000000..99851d559
--- /dev/null
+++ b/user/apaste/APKBUILD
@@ -0,0 +1,84 @@
+# Maintainer: Laurent Bercot <ska-adelie@skarnet.org>
+pkgname=apaste
+pkgver=0.0.3.0
+pkgrel=0
+pkgdesc="A command-line pastebin"
+url="https://skarnet.org/software/apaste/"
+arch="all"
+options="!check" # No test suite.
+license="ISC"
+_skalibs_version=2.14.4
+_execline_version=2.9.7
+_s6_version=2.13.2
+_s6net_version=2.7.1
+depends="s6-networking"
+makedepends="skalibs-dev>=$_skalibs_version s6-networking-dev>=$_s6net_version"
+subpackages="apaste-doc apasted:server apasted-openrc:apasted_openrc"
+source="
+ https://skarnet.org/software/apaste/apaste-$pkgver.tar.gz
+ apasted.run
+ apastesd.run
+ apasted-log.run
+ apasted.confd
+ apasted.initd
+ "
+pkggroups="apasted"
+pkgusers="apastedlog apasted"
+
+build() {
+ ./configure \
+ --enable-shared \
+ --disable-allstatic \
+ --prefix=/usr \
+ --with-pkgconfig \
+ --enable-pkgconfig
+ make
+}
+
+_makeservicedir() {
+ name="apaste${1}d-${2}"
+ fn="$subpkgdir/var/lib/apasted/services/$name"
+ mkdir -p "$fn/log"
+ echo 3 > "$fn/log/notification-fd"
+ sed -e "s/@S@/${1}/g; s/@V@/${2}/g;" "$srcdir/apasted-log.run" > "$fn/log/run"
+ chmod 0755 "$fn/log/run"
+ echo 3 > "$fn/notification-fd"
+ sed -e "s/@V@/${2}/g;" "$srcdir/apaste${1}d.run" > "$fn/run"
+ chmod 0755 "$fn/run"
+ fn="$subpkgdir/var/log/$name"
+ mkdir -p "$fn"
+ chown apastedlog:apasted "$fn"
+ chmod 02700 "$fn"
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ install -D -m 0644 "$srcdir/apasted.confd" "$pkgdir/etc/conf.d/apasted"
+ install -D -m 0755 "$srcdir/apasted.initd" "$pkgdir/etc/init.d/apasted"
+ mkdir -p -m 0755 "$pkgdir/usr/share/doc"
+ cp -a "$builddir/doc" "$pkgdir/usr/share/doc/$pkgname"
+}
+
+server() {
+ depends="execline>=$_execline_version s6>=$_s6_version s6-networking>=$_s6net_version apasted-openrc"
+ pkgdesc="A server for the apaste command-line pastebin"
+ install="apasted.pre-install"
+ mkdir -p "$subpkgdir/usr/bin" "$subpkgdir/var/lib/apasted/services"
+ mv "$pkgdir/usr/bin/apasted" "$subpkgdir/usr/bin/"
+ for i in '' s ; do for j in 4 6 ; do
+ _makeservicedir "$i" "$j"
+ done ; done
+}
+
+apasted_openrc() {
+ depends="apasted"
+ install -D -m 0644 "$srcdir/apasted.confd" "$subpkgdir/etc/conf.d/apasted"
+ install -D -m 0755 "$srcdir/apasted.initd" "$subpkgdir/etc/init.d/apasted"
+}
+
+sha512sums="ac3031b5d43447cf33bb4300ce866716b650ed730d74e6d41fff83a7a3eff2233172d9962e13c6d624002537a7c13ac5d581715a9a49145f392139c21b921ea6 apaste-0.0.3.0.tar.gz
+970a79b6da5a7c58539cd9d47cba36855eb4f37e1e0bbd841ade15022b5fb291a077f7ad118ff662a45f3b2b59162264a180c338f23f964ea3e48364c68ac606 apasted.run
+817b276ae51e9bd769e39a8313a84449d181c65749640119ba1e4af3c21d2572152c7bdd5eec70cbcfaa3255fd6cba966dfc1dc7a818a60d329283c39ae058a8 apastesd.run
+9341c1c69c1d45b35052b0042665fffb9cff6583fad558ed37a19af574b53a5e298727c43a6c718fd40936e8f16d1a10e9c229392595ba1e06ddb21d1d8b055b apasted-log.run
+3b91225252d95d676097d337ca77ef2bdffb52baa657197efe079b82c663baeaed0882993eeed7f7ce260f051e439159c61368f8a1d4b84d1daa74fe358c39d7 apasted.confd
+f9e6dd5aa6d5efe678f370431e7b58a52f903eed9b698f60b1853d601a4d9c0a53ccb996034d401dfd7ddbe573fc2651cf5c87164de599c42f754ad015b8e302 apasted.initd"
diff --git a/user/apaste/apasted-log.run b/user/apaste/apasted-log.run
new file mode 100644
index 000000000..4d10c72b1
--- /dev/null
+++ b/user/apaste/apasted-log.run
@@ -0,0 +1,5 @@
+#!/bin/execlineb -S1
+
+s6-envuidgid apastedlog
+exec -c
+s6-log -d3 -- t /var/log/apaste@S@d-@V@
diff --git a/user/apaste/apasted.confd b/user/apaste/apasted.confd
new file mode 100644
index 000000000..df57ce121
--- /dev/null
+++ b/user/apaste/apasted.confd
@@ -0,0 +1,32 @@
+# apasted configuration
+
+# The IPs you want the apasted server to listen on.
+# Comment to disable.
+APASTED_IPv4=0.0.0.0
+APASTED_IPv6=::
+
+# The ports for plaintext service and TLS-tunneled service.
+# Comment to disable.
+APASTED_PORT=9999
+# APASTED_TLS_PORT=9997
+
+# If APASTED_TLS_PORT is present, KEYFILE should point to
+# your private key, and CERTFILE should point to your certificate.
+# KEYFILE=
+# CERTFILE=
+
+# Where the pastes are stored. Make sure this directory exists
+# and is writable by the apasted user.
+APASTED_ROOT=/var/tmp/apaste
+
+# If you want a prefix for the slugs.
+# APASTED_PREFIX=
+
+# Maximum number of client files stored at once. Default is 10.
+# APASTED_MAXFILES=10
+
+# Maximum client file size, in bytes. Default is 1048576 (1 MB).
+# APASTED_MAXSIZE=1048576
+
+# Maximum total size of a transaction, in bytes. Default is 10485760 (10 MB).
+# APASTED_MAXTOTALSIZE=10485760
diff --git a/user/apaste/apasted.initd b/user/apaste/apasted.initd
new file mode 100644
index 000000000..f730f8012
--- /dev/null
+++ b/user/apaste/apasted.initd
@@ -0,0 +1,64 @@
+#!/sbin/openrc-run
+
+description="Start/stop the apasted services"
+
+depend()
+{
+ after net
+ after localmount
+}
+
+_get_services()
+{
+ list=
+ if test -n "$APASTED_PORT" ; then
+ if test -n "$APASTED_IPv4" ; then
+ list="apasted-4"
+ fi
+ if test -n "$APASTED_IPv6" ; then
+ list="$list apasted-6"
+ fi
+ fi
+ if test -n "$APASTED_TLS_PORT" ; then
+ if test -n "$APASTED_IPV4" ; then
+ list="apastesd-4"
+ fi
+ if test -n "$APASTED_IPV6" ; then
+ list="$list apastesd-6"
+ fi
+ fi
+ echo $list
+}
+
+stop()
+{
+ ebegin "Stopping the apasted services"
+ for i in `_get_services` ; do
+ s6-svunlink /run/service "$i"
+ done
+ eend $?
+}
+
+start()
+{
+ ebegin "Starting the apasted services"
+ for i in `_get_services` ; do
+ s6-svlink -t10000 /run/service "/var/lib/apasted/services/$i"
+ done
+ eend $?
+}
+
+status()
+{
+ for i in `_get_services` ; do
+ echo -n "${i}: "
+ s6-svstat "/run/service/${i}"
+ done
+}
+
+restart()
+{
+ for i in `_get_services` ; do
+ s6-svc -rwR "/run/service/$i"
+ done
+}
diff --git a/user/apaste/apasted.pre-install b/user/apaste/apasted.pre-install
new file mode 100644
index 000000000..27c1c1880
--- /dev/null
+++ b/user/apaste/apasted.pre-install
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+groupadd -r -- apasted 2>/dev/null
+useradd -r -d / -M -N -s /sbin/nologin -g apasted -c apastedlog -- apastedlog 2>/dev/null
+useradd -r -d / -M -N -s /sbin/nologin -g apasted -c apasted -- apasted 2>/dev/null
+
+exit 0
diff --git a/user/apaste/apasted.run b/user/apaste/apasted.run
new file mode 100644
index 000000000..8ad8aa487
--- /dev/null
+++ b/user/apaste/apasted.run
@@ -0,0 +1,19 @@
+#!/bin/execlineb -S1
+
+fdmove -c 2 1
+emptyenv -p
+fdmove 1 3
+envfile /etc/conf.d/apasted
+multisubstitute
+{
+ importas -uSi APASTED_IPv@V@
+ importas -uSi APASTED_PORT
+ importas -uSi APASTED_ROOT
+ importas -uSD "" APASTED_PREFIX
+ importas -uSD10 APASTED_MAXFILES
+ importas -uSD1048576 APASTED_MAXSIZE
+ importas -uSD10485760 APASTED_MAXTOTALSIZE
+}
+s6-envuidgid apasted
+s6-tcpserver -1 -U -- ${APASTED_IPv@V@} ${APASTED_PORT}
+apasted -r 10000 -w 10000 -d ${APASTED_ROOT} -p ${APASTED_PREFIX} -n ${APASTED_MAXFILES} -s ${APASTED_MAXSIZE} -S ${APASTED_MAXTOTALSIZE}
diff --git a/user/apaste/apastesd.run b/user/apaste/apastesd.run
new file mode 100644
index 000000000..a1205ed4c
--- /dev/null
+++ b/user/apaste/apastesd.run
@@ -0,0 +1,23 @@
+#!/bin/execlineb -S1
+
+fdmove -c 2 1
+emptyenv -p
+fdmove 1 3
+envfile /etc/conf.d/apasted
+multisubstitute
+{
+ importas -uSi APASTED_IPv@V@
+ importas -uSi APASTED_TLS_PORT
+ importas -uSi APASTED_ROOT
+ importas -uSD "" APASTED_PREFIX
+ importas -uSD10 APASTED_MAXFILES
+ importas -uSD1048576 APASTED_MAXSIZE
+ importas -uSD10485760 APASTED_MAXTOTALSIZE
+ importas -uSi KEYFILE
+ importas -uSi CERTFILE
+}
+s6-envuidgid apasted
+export TLS_UID 65534
+export TLS_GID 65534
+s6-tlsserver -1 -U -H -l0 -K 5000 -- ${APASTED_IPv@V@} ${APASTED_TLS_PORT}
+apasted -r 10000 -w 10000 -d ${APASTED_ROOT} -p ${APASTED_PREFIX} -n ${APASTED_MAXFILES} -s ${APASTED_MAXSIZE} -S ${APASTED_MAXTOTALSIZE}
diff --git a/user/apkfoundry/APKBUILD b/user/apkfoundry/APKBUILD
new file mode 100644
index 000000000..c06c33e20
--- /dev/null
+++ b/user/apkfoundry/APKBUILD
@@ -0,0 +1,31 @@
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=apkfoundry
+pkgver=0.6
+pkgrel=0
+pkgdesc="APK build orchestrator and distribution builder"
+url="https://dev.sick.bike/apkfoundry/"
+arch="all"
+options="!check" # Cannot be run inside itself.
+license="GPL-2.0-only AND MIT"
+depends="bubblewrap-nosuid python3 shadow-uidmap"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://dev.sick.bike/dist/apkfoundry-$pkgver.tar.gz"
+
+build() {
+ cat >config.mk <<-EOF
+ DEFAULT_ARCH = $CARCH
+ EOF
+ make configure
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make install DESTDIR="$pkgdir"
+}
+
+sha512sums="71c1a0baabb2d1092e8873d438a14fba40eb953f7a11a93754e2dd6753da34a4427b2b7d50de6b7e7d34eb99b9bb91f829453d431649d3596a9789e1f1b34a0b apkfoundry-0.6.tar.gz"
diff --git a/user/apkvitrine/APKBUILD b/user/apkvitrine/APKBUILD
new file mode 100644
index 000000000..e72bef517
--- /dev/null
+++ b/user/apkvitrine/APKBUILD
@@ -0,0 +1,22 @@
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=apkvitrine
+pkgver=0.2
+pkgrel=1
+pkgdesc="Package tracker and analyzer for APK repositories"
+url="https://git.adelielinux.org/sroracle/apkvitrine"
+arch="noarch"
+options="!check" # No test suite.
+license="NCSA"
+depends="apk-tools py3-apkkit py3-flup py3-jinja2"
+makedepends=""
+source="https://dev.sick.bike/dist/$pkgname-$pkgver.tar.gz"
+
+build() {
+ make
+}
+
+package() {
+ make install DESTDIR="$pkgdir"
+}
+
+sha512sums="11ec7adfdaaa9c72735a53514457e690f285e415dddeaaefe35024a09f8e01e654628654f2e55c9b67712a42c898e3a864f38d7f60ae8fa435bd64ad04bfc883 apkvitrine-0.2.tar.gz"
diff --git a/user/appres/APKBUILD b/user/appres/APKBUILD
index 49dcb6115..0f8b4de41 100644
--- a/user/appres/APKBUILD
+++ b/user/appres/APKBUILD
@@ -1,38 +1,33 @@
# Contributor: Dan Theisen <djt@hxx.in>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=appres
-pkgver=1.0.5
+pkgver=1.0.7
pkgrel=0
pkgdesc="list X application resource database"
-url="https://xorg.freedesktop.org/"
+url="https://www.X.org/"
arch="all"
license="X11"
depends=""
-makedepends="libx11-dev libxt-dev xproto"
-install=""
+makedepends="libx11-dev libxt-dev xproto meson"
subpackages="$pkgname-doc"
-source="https://xorg.freedesktop.org/archive/individual/app/$pkgname-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
+ meson setup \
+ -Dprefix=/usr \
+ -Dsysconfdir=/etc \
+ -Dmandir=/usr/share/man \
+ -Dlocalstatedir=/var \
+ build
+ meson compile -C build
}
check() {
- cd "$builddir"
- make check
+ meson test -C build
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" meson install -C build
}
-sha512sums="70825563cd80f0f433c48ab2fdae888072939c1b22fb22340b70b9444c97916275ed92c9e5bf9a06bb76c32a5371b89ff7c0211a9a47a227c88311078c2c4137 appres-1.0.5.tar.bz2"
+sha512sums="5948f869124dd7160ffe109b0fc7ccdca45c3b3f551a382a0bcf2c2af9e3832b0d4451e2868ca93a38de8e8e2caf1946ac72936b3256e99a32437d0ddd937a60 appres-1.0.7.tar.xz"
diff --git a/user/apr-util/APKBUILD b/user/apr-util/APKBUILD
index 36a8f4a59..7f27672b8 100644
--- a/user/apr-util/APKBUILD
+++ b/user/apr-util/APKBUILD
@@ -1,21 +1,20 @@
-# Maintainer:
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=apr-util
-pkgver=1.6.1
+pkgver=1.6.3
pkgrel=0
pkgdesc="The Apache Portable Runtime Utility Library"
-url="http://apr.apache.org/"
+url="https://apr.apache.org/"
arch="all"
license="Apache-2.0"
-depends=
-subpackages="$pkgname-dev $pkgname-dbm_db $pkgname-dbd_pgsql
- $pkgname-dbd_sqlite3 $pkgname-ldap"
+depends=""
depends_dev="db-dev expat-dev openldap-dev openssl-dev postgresql-dev
sqlite-dev"
makedepends="$depends_dev apr-dev bash chrpath openssl"
-source="http://www.apache.org/dist/apr/$pkgname-$pkgver.tar.bz2"
+subpackages="$pkgname-dev $pkgname-dbm_db $pkgname-dbd_pgsql
+ $pkgname-dbd_sqlite3 $pkgname-ldap"
+source="https://downloads.apache.org/apr/$pkgname-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,13 +32,11 @@ build() {
}
check() {
- cd "$builddir"
# testxlate fails because UTF-7 is unsupported
make check || return 0
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
rm "$pkgdir"/usr/lib/*.exp
chrpath -d "$pkgdir"/usr/lib/*.so.*
@@ -48,7 +45,7 @@ package() {
_mv_mod() {
pkgdesc="The Apache Portable Runtime Utility Library - $2 driver"
depends=
- local _moddir="usr/lib/apr-util-1"
+ _moddir="usr/lib/apr-util-1"
mkdir -p "$subpkgdir"/$_moddir
mv "$pkgdir"/$_moddir/apr_$1*.so "$subpkgdir"/$_moddir/
}
@@ -59,4 +56,4 @@ dbd_mysql() { _mv_mod dbd_mysql "MySQL"; }
dbd_sqlite3() { _mv_mod dbd_sqlite "SQLite3"; }
ldap() { _mv_mod ldap "LDAP"; }
-sha512sums="40eff8a37c0634f7fdddd6ca5e596b38de15fd10767a34c30bbe49c632816e8f3e1e230678034f578dd5816a94f246fb5dfdf48d644829af13bf28de3225205d apr-util-1.6.1.tar.bz2"
+sha512sums="8050a481eeda7532ef3751dbd8a5aa6c48354d52904a856ef9709484f4b0cc2e022661c49ddf55ec58253db22708ee0607dfa7705d9270e8fee117ae4f06a0fe apr-util-1.6.3.tar.bz2"
diff --git a/user/apr/APKBUILD b/user/apr/APKBUILD
index 5b973eeec..ce7322659 100644
--- a/user/apr/APKBUILD
+++ b/user/apr/APKBUILD
@@ -1,21 +1,20 @@
-# Maintainer:
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=apr
-pkgver=1.7.0
+pkgver=1.7.4
pkgrel=0
pkgdesc="The Apache Portable Runtime"
-url="http://apr.apache.org/"
+url="https://apr.apache.org/"
arch="all"
license="Apache-2.0"
depends=""
depends_dev="util-linux-dev bash"
makedepends="$depends_dev"
subpackages="$pkgname-dev"
-source="http://www.apache.org/dist/$pkgname/$pkgname-$pkgver.tar.bz2
+source="https://downloads.apache.org/apr/$pkgname-$pkgver.tar.bz2
apr-1.6.2-dont-test-dlclose.patch
"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,12 +26,10 @@ build() {
}
check() {
- cd "$builddir"
make -j1 check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -45,5 +42,5 @@ dev() {
mv "$subpkgdir"/usr/lib/*.so* "$pkgdir"/usr/lib/
}
-sha512sums="3dc42d5caf17aab16f5c154080f020d5aed761e22db4c5f6506917f6bfd2bf8becfb40af919042bd4ce1077d5de74aa666f5edfba7f275efba78e8893c115148 apr-1.7.0.tar.bz2
+sha512sums="2342c997765ea2ca96eac158e5fd260232dba68fc41b90a79a7ba9b25c539fc217981867362090e0ebebe632289257c342275e3c5baedb698c474ef8f49a9dcd apr-1.7.4.tar.bz2
9fb931e45f30fbe68af56849dfca148c09cdf85e300af14fb259cbd43470113288680bdb21189d4cf13f5ce95f8d28666822535e017e64ace5324339ab50cbef apr-1.6.2-dont-test-dlclose.patch"
diff --git a/user/arcticfox/APKBUILD b/user/arcticfox/APKBUILD
new file mode 100644
index 000000000..78349f11a
--- /dev/null
+++ b/user/arcticfox/APKBUILD
@@ -0,0 +1,136 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=arcticfox
+pkgver=45.1
+pkgrel=0
+pkgdesc="Arctic Fox web browser (fork of Firefox with PPC support)"
+url="https://github.com/rmottola/Arctic-Fox/wiki"
+arch="pmmx ppc ppc64 x86"
+options="!check" # Disable tests.
+license="MPL-2.0"
+depends=""
+makedepends="alsa-lib-dev bzip2-dev dbus-glib-dev gconf-dev gtk+2.0-dev
+ gtk+3.0-dev hunspell-dev icu-dev libevent-dev libidl-dev
+ libjpeg-turbo-dev libnotify-dev libogg-dev libtheora-dev libvorbis-dev
+ libxt-dev libxcomposite-dev mesa-dev nspr-dev automake libtool
+ pulseaudio-dev sqlite-dev startup-notification-dev autoconf2.13
+ bsd-compat-headers cmd:which openssl-dev sed yasm zip"
+subpackages="$pkgname-dev"
+source="arcticfox-$pkgver.tar.gz::https://github.com/rmottola/Arctic-Fox/archive/refs/tags/v$pkgver.tar.gz
+ mozconfig
+ https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tar.xz
+ arcticfox.desktop
+
+ hunspell.patch
+ override-cxx-version.patch
+ stackwalk-x86-ppc.patch
+ "
+builddir="$srcdir/Arctic-Fox-$pkgver"
+provides="firefox-esr=$pkgver-r$pkgrel"
+_mozappdir="/usr/lib/$pkgname-$pkgver"
+# Vendors its own NSS for now until upstream is compatible with latest versions
+somask="libfreeblpriv3.so liblgpllibs.so libmozgtk.so libmozsqlite3.so
+ libnss3.so libnssckbi.so libnssdbm3.so libnssutil3.so libsmime3.so
+ libsoftokn3.so libssl3.so libxul.so"
+ldpath="$_mozappdir"
+
+unpack() {
+ default_unpack
+
+ [ -z $SKIP_PYTHON ] || return 0
+ msg "Killing all remaining hope for humanity and building Python 2..."
+ cd "$srcdir"
+ [ -d python ] && rm -r python
+ mkdir python
+ # 19:39 <+solar> just make the firefox build process build its own py2 copy
+ # 20:03 <calvin> TheWilfox: there's always violence
+ cd Python-2.7.15
+ ./configure --prefix="$srcdir/python"
+ make -j $JOBS
+ # 6 tests failed:
+ # test__locale test_os test_posix test_re test_strptime test_time
+ # make test
+ make -j $JOBS install
+}
+
+prepare() {
+ default_prepare
+
+ cp "$srcdir"/mozconfig "$builddir"/mozconfig
+ echo "ac_add_options --host=\"$CHOST\"" >> "$builddir"/mozconfig
+ echo "ac_add_options --target=\"$CTARGET\"" >> "$builddir"/mozconfig
+ echo "mk_add_options MOZ_MAKE_FLAGS=\"-j$JOBS\"" >> "$builddir"/mozconfig
+ # Needed, see upstream https://github.com/rmottola/Arctic-Fox/issues/125
+ # on ppc, fails in NSFrameState::operator& without these flags
+ export CFLAGS="$CFLAGS -O1 -fno-delete-null-pointer-checks -fno-lifetime-dse -fno-schedule-insns2"
+ export LDFLAGS="$LDFLAGS -Wl,-rpath,$_mozappdir"
+
+ # arch-specific configuration
+ case "$CARCH" in
+ pmmx|x86*|arm*)
+ echo "ac_add_options --disable-elf-hack" >> "$builddir"/mozconfig
+ ;;
+ ppc)
+ export LDFLAGS="$LDFLAGS -latomic"
+ ;;
+ ppc64)
+ echo "ac_add_options --enable-altivec" >> "$builddir"/mozconfig
+ ;;
+ s390x)
+ echo "ac_add_options --disable-startupcache" >> "$builddir"/mozconfig
+ ;;
+ esac
+
+ echo "ac_add_options --enable-optimize=\"$CFLAGS\"" >> "$builddir"/mozconfig
+}
+
+build() {
+ export CFLAGS="$CFLAGS -Wno-dangling-pointer -Wno-array-bounds -Wno-comment -Wno-maybe-uninitialized -Wno-misleading-indentation -Wno-multistatement-macros -Wno-stringop-overflow -Wno-unused-function -Wno-unused-value -Wno-ignored-qualifiers -Wno-deprecated-declarations -Wno-implicit-fallthrough -Wno-unused-but-set-variable -Wno-int-in-bool-context -Wno-stringop-overread -Wno-address -Wno-use-after-free"
+ export CXXFLAGS="$CFLAGS -Wno-class-memaccess -Wno-changes-meaning -Wno-subobject-linkage -Wno-return-local-addr -Wno-unused-local-typedefs"
+ export SHELL=/bin/sh
+ export BUILD_OFFICIAL=1
+ export MOZILLA_OFFICIAL=1
+ export USE_SHORT_LIBNAME=1
+ export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system
+ export PATH="$PATH:$srcdir/python/bin"
+ export CXX="/usr/bin/g++ -std=gnu++17"
+
+ # set rpath so linker finds the libs
+ export UNIXCONFDIR="$srcdir"
+
+ ./mach configure
+ # parallel make bug hit on gwyn (64 threads)
+ ./mach build -j1 export
+ ./mach build
+}
+
+package() {
+ export PATH="$PATH:$srcdir/python/bin"
+ DESTDIR="$pkgdir" ./mach install
+
+ for pngsize in 16 32 48; do
+ install -D -m644 \
+ "browser/branding/$pkgname/default$pngsize.png" \
+ "$pkgdir"/usr/share/icons/hicolor/${pngsize}x${pngsize}/apps/$pkgname.png
+ done
+
+ install -D -m644 "browser/branding/$pkgname/mozicon128.png" \
+ "$pkgdir"/usr/share/pixmaps/$pkgname.png
+ install -D -m644 $srcdir/$pkgname.desktop \
+ "$pkgdir"/usr/share/applications/$pkgname.desktop
+}
+
+dev() {
+ mkdir -p "$subpkgdir"/usr/lib "$subpkgdir"/usr/share
+ mv "$pkgdir"/usr/lib/$pkgname-devel-$pkgver \
+ "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/share/idl "$subpkgdir"/usr/share/
+ default_dev
+}
+
+sha512sums="0b24bc8cf201a78517c7934c119b1e21d511068e8ea06c8b7f5ce65e5867e9f091cc0c8c65b0f8c78e8637d27dd3d505126d355c8ca5693f1b0417020b838800 arcticfox-45.1.tar.gz
+ce5312b4fcf07d0dd0496366f6e3be406ef19a389f67a3eb8e3df62232d9eb08ed1a5e212dee1725d907bb025bc3da19b6d0b0d97210893846eb8206890fe8de mozconfig
+27ea43eb45fc68f3d2469d5f07636e10801dee11635a430ec8ec922ed790bb426b072da94df885e4dfa1ea8b7a24f2f56dd92f9b0f51e162330f161216bd6de6 Python-2.7.15.tar.xz
+d4f9a2a64cb8c1e679a13429e62cfd2e8a44cf54896c2999258571ab990711fbc3d078ce655efd90437e60ef113af1e5277f416f5cf78dfea21f82c481f6929b arcticfox.desktop
+50cc077df6d17358f5dcffcabb1a75087b58ac46f60d9d5fc8f2d407e93a26d89778e4c09a5203f2a55bc9f9ddb247f4482483d30f495bc9e3393fad37a322d7 hunspell.patch
+bf63b06c030b388711554a4eff36fc50f2af802b59a9f1d7c5b42f11fcc1dd806d53980bdd89bf9518fc51ba25a812c892dfaf47e9d50b33a82ebad9462da92a override-cxx-version.patch
+a0f97b8b3e5b0d93b155f1678a3d5984b52ede440202656d35237a6e7025b4a1315c114a1a87c3974d0d43b0f637e186b2be6422c44ba5f111ede53893e39c54 stackwalk-x86-ppc.patch"
diff --git a/user/arcticfox/arcticfox.desktop b/user/arcticfox/arcticfox.desktop
new file mode 100644
index 000000000..9e09c4abd
--- /dev/null
+++ b/user/arcticfox/arcticfox.desktop
@@ -0,0 +1,76 @@
+[Desktop Entry]
+Exec=arcticfox %u
+Icon=arcticfox
+Type=Application
+Terminal=false
+Name=Arctic Fox
+GenericName=Web Browser
+GenericName[af]=Web Blaaier
+GenericName[ar]=متصفح ويب
+GenericName[az]=Veb Səyyahı
+GenericName[bg]=Браузър
+GenericName[bn]=ওয়েব ব্রাউজার
+GenericName[br]=Furcher ar Gwiad
+GenericName[bs]=WWW Preglednik
+GenericName[ca]=Fullejador web
+GenericName[cs]=WWW prohlížeč
+GenericName[cy]=Porydd Gwe
+GenericName[da]=Browser
+GenericName[de]=Web-Browser
+GenericName[el]=Περιηγητής Ιστού
+GenericName[eo]=TTT-legilo
+GenericName[es]=Navegador web
+GenericName[et]=Veebilehitseja
+GenericName[eu]=Web arakatzailea
+GenericName[fa]=مرورگر وب
+GenericName[fi]=WWW-selain
+GenericName[fo]=Alnótsfar
+GenericName[fr]=Navigateur web
+GenericName[gl]=Navegador Web
+GenericName[he]=דפדפן אינטרנט
+GenericName[hi]=वेब ब्राउज़र
+GenericName[hr]=Web preglednik
+GenericName[hu]=Webböngésző
+GenericName[is]=Vafri
+GenericName[it]=Browser Web
+GenericName[ja]=ウェブブラウザ
+GenericName[ko]=웹 브라우저
+GenericName[lo]=ເວັບບຣາວເຊີ
+GenericName[lt]=Žiniatinklio naršyklė
+GenericName[lv]=Web Pārlūks
+GenericName[mk]=Прелистувач на Интернет
+GenericName[mn]=Веб-Хөтөч
+GenericName[nb]=Nettleser
+GenericName[nds]=Nettkieker
+GenericName[nl]=Webbrowser
+GenericName[nn]=Nettlesar
+GenericName[nso]=Seinyakisi sa Web
+GenericName[pa]=ਵੈਬ ਝਲਕਾਰਾ
+GenericName[pl]=Przeglądarka WWW
+GenericName[pt]=Navegador Web
+GenericName[pt_BR]=Navegador Web
+GenericName[ro]=Navigator de web
+GenericName[ru]=Веб-браузер
+GenericName[se]=Fierpmádatlogan
+GenericName[sk]=Webový prehliadač
+GenericName[sl]=Spletni brskalnik
+GenericName[sr]=Веб претраживач
+GenericName[sr@Latn]=Veb pretraživač
+GenericName[ss]=Ibrawuza yeWeb
+GenericName[sv]=Webbläsare
+GenericName[ta]=வலை உலாவி
+GenericName[tg]=Тафсиргари вэб
+GenericName[th]=เว็บบราวเซอร์
+GenericName[tr]=Web Tarayıcı
+GenericName[uk]=Навігатор Тенет
+GenericName[uz]=Веб-браузер
+GenericName[ven]=Buronza ya Webu
+GenericName[vi]=Trình duyệt Web
+GenericName[wa]=Betchteu waibe
+GenericName[xh]=Umkhangeli zincwadi we Web
+GenericName[zh_CN]=网页浏览器
+GenericName[zh_TW]=網頁瀏覽器
+GenericName[zu]=Umcingi we-Web
+MimeType=text/html;
+StartupNotify=true
+Categories=Network;WebBrowser;
diff --git a/user/arcticfox/hunspell.patch b/user/arcticfox/hunspell.patch
new file mode 100644
index 000000000..9fa23eeb5
--- /dev/null
+++ b/user/arcticfox/hunspell.patch
@@ -0,0 +1,15 @@
+On musl libc, #define free is dangerous.
+
+Upstream-URL: https://github.com/rmottola/Arctic-Fox/issues/100
+
+--- Arctic-Fox-45.1/extensions/spellcheck/hunspell/glue/hunspell_alloc_hooks.h.old 2024-09-30 19:54:44.000000000 +0000
++++ Arctic-Fox-45.1/extensions/spellcheck/hunspell/glue/hunspell_alloc_hooks.h 2024-10-22 21:46:00.494798524 +0000
+@@ -47,6 +47,8 @@
+ * allocated using C memory allocation functions.
+ */
+
++#include <sched.h>
++#include "mozilla/Logging.h"
+ #include "mozilla/mozalloc.h"
+ #include "mozHunspellAllocator.h"
+
diff --git a/user/arcticfox/mozconfig b/user/arcticfox/mozconfig
new file mode 100644
index 000000000..e19a24be1
--- /dev/null
+++ b/user/arcticfox/mozconfig
@@ -0,0 +1,28 @@
+ac_add_options --prefix=/usr
+ac_add_options --disable-crashreporter
+ac_add_options --disable-eme
+ac_add_options --disable-install-strip
+ac_add_options --disable-jemalloc
+ac_add_options --disable-mozril-geoloc
+ac_add_options --disable-necko-wifi
+ac_add_options --disable-precompiled-startupcache
+ac_add_options --disable-profiling
+ac_add_options --disable-strip
+ac_add_options --disable-tests
+ac_add_options --disable-updater
+ac_add_options --disable-webrtc
+ac_add_options --enable-alsa
+ac_add_options --enable-application=browser
+ac_add_options --enable-dbus
+ac_add_options --enable-default-toolkit=cairo-gtk3
+ac_add_options --enable-pulseaudio
+ac_add_options --enable-system-ffi
+ac_add_options --enable-system-hunspell
+ac_add_options --with-branding=browser/branding/arcticfox
+ac_add_options --with-system-icu
+ac_add_options --with-system-jpeg
+ac_add_options --with-system-nspr
+ac_add_options --with-system-pixman
+ac_add_options --with-system-png
+ac_add_options --with-system-zlib
+ac_add_options --without-system-nss
diff --git a/user/arcticfox/override-cxx-version.patch b/user/arcticfox/override-cxx-version.patch
new file mode 100644
index 000000000..6486c702e
--- /dev/null
+++ b/user/arcticfox/override-cxx-version.patch
@@ -0,0 +1,17 @@
+ICU 75 requires C++17 mode as a bare minimum.
+
+--- Arctic-Fox-45.1/build/moz.configure/toolchain.configure.old 2024-09-30 14:54:44.000000000 -0500
++++ Arctic-Fox-45.1/build/moz.configure/toolchain.configure 2024-11-19 00:21:31.792210428 -0600
+@@ -339,9 +339,9 @@
+ # Note: MSVC, while supporting C++11, still reports 199711L for __cplusplus.
+ # Note: this is a strict version check because we used to always add
+ # -std=gnu++11.
+- if info.language == 'C++' and info.language_version != 201103:
+- if info.type in ('clang-cl', 'clang', 'gcc'):
+- append_flag('-std=gnu++11')
++ if info.language == 'C++' and info.language_version < 201703:
++ if info.type in ('clang', 'gcc'):
++ append_flag('-std=gnu++17')
+
+ # We force clang-cl to emulate Visual C++ 2013 Update 3 with fallback to
+ # cl.exe.
diff --git a/user/arcticfox/stackwalk-x86-ppc.patch b/user/arcticfox/stackwalk-x86-ppc.patch
new file mode 100644
index 000000000..377edabb6
--- /dev/null
+++ b/user/arcticfox/stackwalk-x86-ppc.patch
@@ -0,0 +1,14 @@
+--- Arctic-Fox-45.1/mozglue/misc/StackWalk.cpp.old 2024-09-30 19:54:44.000000000 +0000
++++ Arctic-Fox-45.1/mozglue/misc/StackWalk.cpp 2024-10-21 11:28:48.295293788 +0000
+@@ -42,10 +42,7 @@
+ (defined(XP_DARWIN) && \
+ (defined(__i386) || defined(__ppc__) || defined(HAVE__UNWIND_BACKTRACE)))
+
+-#define MOZ_STACKWALK_SUPPORTS_LINUX \
+- (defined(linux) && \
+- ((defined(__GNUC__) && (defined(__i386) || defined(PPC))) || \
+- defined(HAVE__UNWIND_BACKTRACE)))
++#define MOZ_STACKWALK_SUPPORTS_LINUX 0
+
+ #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1)
+ #define HAVE___LIBC_STACK_END 1
diff --git a/user/argp-standalone/001-throw-in-funcdef.patch b/user/argp-standalone/001-throw-in-funcdef.patch
deleted file mode 100644
index 4a90751e1..000000000
--- a/user/argp-standalone/001-throw-in-funcdef.patch
+++ /dev/null
@@ -1,79 +0,0 @@
-# --- T2-COPYRIGHT-NOTE-BEGIN ---
-# This copyright note is auto-generated by ./scripts/Create-CopyPatch.
-#
-# T2 SDE: package/.../rng-tools/throw-in-funcdef.patch.argp-standalone
-# Copyright (C) 2006 The T2 SDE Project
-#
-# More information can be found in the files COPYING and README.
-#
-# This patch file is dual-licensed. It is available under the license the
-# patched project is licensed under, as long as it is an OpenSource license
-# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms
-# of the GNU General Public License as published by the Free Software
-# Foundation; either version 2 of the License, or (at your option) any later
-# version.
-# --- T2-COPYRIGHT-NOTE-END ---
-
-
-No __THROW in function implementation.
- --jsaw
-
---- argp-standalone-1.4-test2/argp.h.orig 2006-01-06 02:29:59.000000000 +0100
-+++ argp-standalone-1.4-test2/argp.h 2006-01-06 02:41:10.000000000 +0100
-@@ -560,17 +560,17 @@
- # endif
-
- # ifndef ARGP_EI
--# define ARGP_EI extern __inline__
-+# define ARGP_EI extern inline
- # endif
-
- ARGP_EI void
--__argp_usage (__const struct argp_state *__state) __THROW
-+__argp_usage (__const struct argp_state *__state)
- {
- __argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE);
- }
-
- ARGP_EI int
--__option_is_short (__const struct argp_option *__opt) __THROW
-+__option_is_short (__const struct argp_option *__opt)
- {
- if (__opt->flags & OPTION_DOC)
- return 0;
-@@ -582,7 +582,7 @@
- }
-
- ARGP_EI int
--__option_is_end (__const struct argp_option *__opt) __THROW
-+__option_is_end (__const struct argp_option *__opt)
- {
- return !__opt->key && !__opt->name && !__opt->doc && !__opt->group;
- }
---- argp-standalone-1.4-test2/argp-parse.c.orig 2006-01-06 02:47:48.000000000 +0100
-+++ argp-standalone-1.4-test2/argp-parse.c 2006-01-06 02:48:16.000000000 +0100
-@@ -1290,13 +1290,13 @@
- /* Defined here, in case a user is not inlining the definitions in
- * argp.h */
- void
--__argp_usage (__const struct argp_state *__state) __THROW
-+__argp_usage (__const struct argp_state *__state)
- {
- __argp_state_help (__state, stderr, ARGP_HELP_STD_USAGE);
- }
-
- int
--__option_is_short (__const struct argp_option *__opt) __THROW
-+__option_is_short (__const struct argp_option *__opt)
- {
- if (__opt->flags & OPTION_DOC)
- return 0;
-@@ -1310,7 +1310,7 @@
- }
-
- int
--__option_is_end (__const struct argp_option *__opt) __THROW
-+__option_is_end (__const struct argp_option *__opt)
- {
- return !__opt->key && !__opt->name && !__opt->doc && !__opt->group;
- }
diff --git a/user/argp-standalone/APKBUILD b/user/argp-standalone/APKBUILD
deleted file mode 100644
index 846ed4c61..000000000
--- a/user/argp-standalone/APKBUILD
+++ /dev/null
@@ -1,49 +0,0 @@
-# Contributor: Francesco Colista <francesco.colista@gmail.com>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=argp-standalone
-pkgver=1.3
-pkgrel=4
-pkgdesc="Hierarchial argument parsing library broken out from glibc"
-url="http://www.lysator.liu.se/~nisse/misc/"
-arch="all"
-options="!dbg"
-license="LGPL-2.0+ AND Public-Domain"
-depends=""
-makedepends="libtool automake autoconf"
-source="http://www.lysator.liu.se/~nisse/misc/$pkgname-$pkgver.tar.gz
- 001-throw-in-funcdef.patch
- gnu89-inline.patch
- "
-
-builddir="$srcdir"/$pkgname-$pkgver
-prepare() {
- default_prepare
- cd "$builddir"
- autoreconf -vif
-}
-
-build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
-}
-
-check() {
- make -C "$builddir" check
-}
-
-package() {
- cd "$builddir"
- install -D -m644 argp.h "$pkgdir"/usr/include/argp.h
- install -D -m755 libargp.a "$pkgdir"/usr/lib/libargp.a
-}
-
-sha512sums="58c3feb8852b90248fff39e49b5019bd0dcf646790c3eaf70c3262eb81dda31a61dc0a45963c7b4a010e80fc14b37288dcb3b3ef48d02f2d33dd72c1c62e62d9 argp-standalone-1.3.tar.gz
-5e4cdeeb16e6a4fb46a00ab95f3da9276ee554eec00bb2a05da7467961234ba3f9a630aafa7ceb5feb429a84ece8bf03b869fa996b86468f4716935a914c79a4 001-throw-in-funcdef.patch
-69f1d8a4fcd542346f98bc1fb7151db748483fc2f331c8c35114e0891d867b41c603ddaa5f3130aaaf1c640e02c51ac71cee71b62c09301b146812e9059e9ade gnu89-inline.patch"
diff --git a/user/argp-standalone/gnu89-inline.patch b/user/argp-standalone/gnu89-inline.patch
deleted file mode 100644
index 71978eba5..000000000
--- a/user/argp-standalone/gnu89-inline.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git a/configure.ac b/configure.ac
-index 4658839..09f0267 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -79,16 +79,10 @@ AC_CHECK_DECLS([program_invocation_name, program_invocation_short_name],
-
- # Set these flags *last*, or else the test programs won't compile
- if test x$GCC = xyes ; then
-- # Using -ggdb3 makes (some versions of) Redhat's gcc-2.96 dump core
-- if "$CC" --version | grep '^2\.96$' 1>/dev/null 2>&1; then
-- true
-- else
-- CFLAGS="$CFLAGS -ggdb3"
-- fi
- CFLAGS="$CFLAGS -Wall -W \
- -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes \
- -Waggregate-return \
-- -Wpointer-arith -Wbad-function-cast -Wnested-externs"
-+ -Wpointer-arith -Wbad-function-cast -Wnested-externs -fgnu89-inline"
- fi
-
- CPPFLAGS="$CPPFLAGS -I$srcdir"
diff --git a/user/aria2/APKBUILD b/user/aria2/APKBUILD
new file mode 100644
index 000000000..7d5a89150
--- /dev/null
+++ b/user/aria2/APKBUILD
@@ -0,0 +1,71 @@
+# Contributor: Alice <alicela1n@protonmail.com>
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: Alice <alicela1n@protonmail.com>
+pkgname=aria2
+pkgver=1.37.0
+pkgrel=0
+pkgdesc="The ultra fast download utility"
+url="https://aria2.github.io/"
+arch="all"
+license="GPL-2.0+"
+depends="ca-certificates"
+checkdepends="cppunit-dev"
+makedepends="openssl-dev sqlite-dev libuv-dev"
+install="aria2.pre-install"
+pkgusers="aria2"
+pkggroups="aria2"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-openrc::noarch"
+source="https://github.com/aria2/$pkgname/releases/download/release-$pkgver/$pkgname-$pkgver.tar.xz
+ $pkgname.conf
+ $pkgname.initd
+ $pkgname.confd
+ $pkgname.logrotate
+ "
+
+build() {
+ ./configure --build=$CBUILD \
+ --host=$CHOST \
+ --with-openssl \
+ --with-sqlite3 \
+ --with-libuv \
+ --enable-libaria2 \
+ --enable-shared \
+ --disable-static \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var \
+ --with-ca-bundle=/etc/ssl/certs/ca-certificates.crt
+
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+openrc() {
+ default_openrc
+ pkgdesc="Support for running Aria2 as a daemon using OpenRC"
+ depends="$pkgname=$pkgver-r$pkgrel"
+
+ mkdir -p "$subpkgdir"
+
+ install -Dm755 "$srcdir"/$pkgname.initd "$subpkgdir"/etc/init.d/$pkgname
+ install -Dm644 "$srcdir"/$pkgname.confd "$subpkgdir"/etc/conf.d/$pkgname
+ install -Dm644 "$srcdir"/$pkgname.logrotate "$subpkgdir"/etc/logrotate.d/$pkgname
+ install -Dm644 "$srcdir"/$pkgname.conf "$subpkgdir"/etc/$pkgname/$pkgname.conf
+ install -m750 -o aria2 -g aria2 -d "$subpkgdir"var/lib/$pkgname
+ install -m700 -o aria2 -g aria2 -d "$subpkgdir"/var/cache/$pkgname
+}
+
+sha512sums="df3b8b4de8fa8d78f203ea00c059e43585e18a229009f202e42e6a9e59db67d09df0dbba8a016e99ed73c82f59e4f8b26f86c2288afdbb96a6807cbe2c56e6b3 aria2-1.37.0.tar.xz
+dd716f27eae2628bd528fd2842de7881e8f8f00d587b179e832f1639241db5bd8f4e74a5b791ca4de984923654b38a28813a89ad49a864f64534903a46878a60 aria2.conf
+c65bef73a519b567ab35558bd60310081f5d4fcb630538666a5b2435f23dc9d741c7bfa6080e4ff46e646e977f4d5e8ba937ce9cdfb55880a3dc0eb1c2ee617a aria2.initd
+f1b5b66c00eeac4b332913d55441adb2ce7aa081f29ed030dc3c69c4767b68c4def6b7f16ea6d7ffbf149cee476df6878e35f8774eea300f241d4aca95e59ef6 aria2.confd
+2ed9ff7a5fd1801643e4fb3cdd8cb21f0ead60420c87636bb581fe00828a98a5290a0888e49f6a6becb9f39c3c145b1399aa3a9ae452eb10ac2064c0e7bca1f8 aria2.logrotate"
diff --git a/user/aria2/aria2.conf b/user/aria2/aria2.conf
new file mode 100644
index 000000000..abca1ea73
--- /dev/null
+++ b/user/aria2/aria2.conf
@@ -0,0 +1,61 @@
+# Run aria2c --help=#all to see all the available options.
+
+# The directory to store the downloaded file.
+dir=/var/lib/aria2
+
+# Save error/unfinished downloads to this file on exit.
+save-session=/var/lib/aria2/aria2.session
+input-file=/var/lib/aria2/aria2.session
+
+# Save error/unfinished downloads to a file specified by save-session option
+# every SEC seconds. If 0 is given, file will be saved only when aria2 exits.
+save-session-interval=60
+
+# Save download even if the download is completed or removed.
+force-save=true
+
+# Continue downloading a partially downloaded files. Only for HTTP/FTP.
+continue=true
+
+# Always resume download.
+always-resume=true
+
+# Set log level to output to file.
+# Possible Values: debug, info, notice, warn, error.
+log-level=notice
+
+# Set interval to output download progress summary.
+# Setting 0 suppresses the output.
+summary-interval=0
+
+# File allocation method. "falloc" is the best choice for newer file systems
+# such as ext4, Btrfs or XFS.
+file-allocation=falloc
+
+
+## RPC
+
+# Specify a port number for JSON-RPC/XML-RPC server to listen to.
+#rpc-listen-port=6800
+
+# Listen incoming JSON-RPC/XML-RPC requests on all network interfaces.
+#rpc-listen-all=false
+
+# RPC secret authorization token. Change to some random string!
+rpc-secret=top-secret
+
+
+## BitTorrent
+
+# Specify the external IP address to use in BitTorrent download and DHT.
+#bt-external-ip=
+
+# TCP port number(s) for BitTorrent downloads.
+#listen-port=6881-6999
+
+# Requires BitTorrent message payload encryption with arc4.
+#bt-force-encryption=false
+
+# Maximum number of files to open in multi-file BitTorrent/Metalink
+# downloads globally.
+#bt-max-open-files=100
diff --git a/user/aria2/aria2.confd b/user/aria2/aria2.confd
new file mode 100644
index 000000000..8b20cb34d
--- /dev/null
+++ b/user/aria2/aria2.confd
@@ -0,0 +1,10 @@
+# Configuration for /etc/init.d/aria2
+
+# The user (and group) to run Aria2 daemon.
+#command_user="aria2"
+
+# Path of the configuration file.
+#cfgfile="/etc/aria2/aria2.conf"
+
+# Path of the log file.
+#logfile="/var/log/aria2.log"
diff --git a/user/aria2/aria2.initd b/user/aria2/aria2.initd
new file mode 100644
index 000000000..a23b6eb0d
--- /dev/null
+++ b/user/aria2/aria2.initd
@@ -0,0 +1,42 @@
+#!/sbin/openrc-run
+
+: ${cfgfile:="/etc/aria2/aria2.conf"}
+: ${logfile:="/var/log/aria2.log"}
+: ${command_user:="aria2"}
+
+command="/usr/bin/aria2c"
+command_args="
+ --enable-rpc=true
+ --quiet=true
+ --log=$logfile
+ --conf-path=$cfgfile
+ ${command_args:-}"
+command_background="yes"
+
+pidfile="/run/$RC_SVCNAME.pid"
+output_log="/dev/null"
+error_log="/dev/null"
+start_stop_daemon_args="--env XDG_CACHE_HOME=/var/cache"
+
+required_files="$cfgfile"
+
+depend() {
+ need net
+ use dns netmount
+}
+
+start_pre() {
+ local _logfile=$(sed -En 's|^log=([^#]+)|\1|p' "$cfgfile")
+
+ checkpath -f -m 640 -o "$command_user" "${_logfile:-$logfile}"
+
+ # Session
+ local _inputfile=$(sed -En 's|^input-file=([^#]+)|\1|p' "$cfgfile")
+
+ if [ "$_inputfile" != "" ]; then
+ checkpath -f -m 644 -o "$command_user" "$_inputfile"
+ fi
+
+ # DHT
+ checkpath -d -m 755 -o "$command_user" "/var/cache/$command_user"
+}
diff --git a/user/aria2/aria2.logrotate b/user/aria2/aria2.logrotate
new file mode 100644
index 000000000..e73ffc044
--- /dev/null
+++ b/user/aria2/aria2.logrotate
@@ -0,0 +1,6 @@
+/var/log/aria2.log {
+ compress
+ copytruncate
+ missingok
+ notifempty
+}
diff --git a/user/aria2/aria2.pre-install b/user/aria2/aria2.pre-install
new file mode 100644
index 000000000..d819d3388
--- /dev/null
+++ b/user/aria2/aria2.pre-install
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+groupadd -r aria2 2>/dev/null
+useradd -c aria2 -d /var/lib/aria2 -s /sbin/nologin -g aria2 \
+ -r aria2 2>/dev/null
+
+exit 0
diff --git a/user/ark/APKBUILD b/user/ark/APKBUILD
index 1c2cd87e4..b6eaef478 100644
--- a/user/ark/APKBUILD
+++ b/user/ark/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ark
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Graphical file compression/decompression utility with support for multiple formats"
url="https://utils.kde.org/projects/ark/"
@@ -12,12 +12,16 @@ depends="lzop shared-mime-info unzip zip"
makedepends="cmake extra-cmake-modules qt5-qtbase-dev karchive-dev kconfig-dev
kcrash-dev kdbusaddons-dev kdoctools-dev ki18n-dev kiconthemes-dev
kitemmodels-dev kio-dev kservice-dev kparts-dev kpty-dev libarchive-dev
- kwidgetsaddons-dev xz-dev"
+ kwidgetsaddons-dev libzip-dev xz-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/ark-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/ark-$pkgver.tar.xz"
+
+# secfixes:
+# 20.08.1-r0:
+# - CVE-2020-16116
+# - CVE-2020-24654
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +32,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="0dc232b004134c048bb516aa43e478545b4052fba9321a6166a3bb4e05638288802f578cea51340c8416257f10e1bcbd55740a8945ae5f95cee6864f107d633f ark-18.12.3.tar.xz"
+sha512sums="4665a39e8759d77da39e275ffeb474720aca0eaf3ce58cf13d12940323e3fee563fd6709d2d198c856387e944ee8639b040f0041c14fe8ef40740a5ad5157060 ark-22.04.2.tar.xz"
diff --git a/user/artikulate/APKBUILD b/user/artikulate/APKBUILD
index f68438764..39931110a 100644
--- a/user/artikulate/APKBUILD
+++ b/user/artikulate/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=artikulate
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Pronunciation trainer for languages"
url="https://www.kde.org/applications/education/artikulate/"
@@ -9,13 +9,12 @@ arch="all"
license="GPL-2.0-only"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtxmlpatterns-dev
- kdoctools-dev ki18n-dev kconfig-dev kcrash-dev knewstuff-dev
- kxmlgui-dev karchive-dev qt5-qtmultimedia-dev"
+ karchive-dev kconfig-dev kcrash-dev kdoctools-dev ki18n-dev
+ kirigami2-dev knewstuff-dev kxmlgui-dev qt5-qtmultimedia-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/artikulate-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/artikulate-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,19 +25,18 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ -DBUILD_TESTING=OFF \
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
# TestCourseFiles needs X11
CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E TestCourseFiles
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="cab931686929a73a3fea25a6718818514a0216b096431f972cfc494e7df754a701a8d4c61874d6914bf8331c0b944b2053a5003bf7bf01901bf2fe79cdf7eba8 artikulate-18.12.3.tar.xz"
+sha512sums="a6c19200869f6c693ca28c130a6b62674ef3908169fa01e1e406f83ae3d2d616bfe14417c61c28766f42708c842e061c218c00a37c9a07103cf33d8df773e5d0 artikulate-22.04.2.tar.xz"
diff --git a/user/aspell-dict-af/APKBUILD b/user/aspell-dict-af/APKBUILD
index b06ffd33f..05f0649c1 100644
--- a/user/aspell-dict-af/APKBUILD
+++ b/user/aspell-dict-af/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-af
pkgver=0.50.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,21 +7,19 @@ pkgrel=0
pkgdesc="Afrikaans dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
+options="!check" # No test suite.
license="LGPL-2.1-only"
-options="!check" # no tests
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/af/aspell-af-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/af/aspell-af-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-af-$_pkgver"
build() {
- cd "$builddir"
./configure --vars DESTDIR="$pkgdir"
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/aspell-dict-am/APKBUILD b/user/aspell-dict-am/APKBUILD
index a4be5ad68..a4219658a 100644
--- a/user/aspell-dict-am/APKBUILD
+++ b/user/aspell-dict-am/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-am
pkgver=0.03.1
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,21 +7,19 @@ pkgrel=0
pkgdesc="Amharic dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="Public-Domain"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/am/aspell6-am-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/am/aspell6-am-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-am-$_pkgver"
build() {
- cd "$builddir"
./configure --vars DESTDIR="$pkgdir"
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/aspell-dict-ar/APKBUILD b/user/aspell-dict-ar/APKBUILD
index 34ffabad4..d46f3d01c 100644
--- a/user/aspell-dict-ar/APKBUILD
+++ b/user/aspell-dict-ar/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-ar
pkgver=1.2.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,21 +7,19 @@ pkgrel=0
pkgdesc="Arabic dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/ar/aspell6-ar-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/ar/aspell6-ar-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-ar-$_pkgver"
build() {
- cd "$builddir"
./configure --vars DESTDIR="$pkgdir"
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/aspell-dict-ast/APKBUILD b/user/aspell-dict-ast/APKBUILD
index c8fdd5708..2dbf3b04b 100644
--- a/user/aspell-dict-ast/APKBUILD
+++ b/user/aspell-dict-ast/APKBUILD
@@ -1,26 +1,24 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-ast
pkgver=0.01
pkgrel=0
pkgdesc="Asturian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
+options="!check" # No test suite.
license="LGPL-2.1-only"
-options="!check" # no tests
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/ast/aspell6-ast-$pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/ast/aspell6-ast-$pkgver.tar.bz2"
builddir="$srcdir/aspell6-ast-$pkgver"
build() {
- cd "$builddir"
./configure --vars DESTDIR="$pkgdir"
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/aspell-dict-az/APKBUILD b/user/aspell-dict-az/APKBUILD
index 62cc4508d..8ce547f90 100644
--- a/user/aspell-dict-az/APKBUILD
+++ b/user/aspell-dict-az/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-az
pkgver=0.02.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,21 +7,19 @@ pkgrel=0
pkgdesc="Azerbaijani dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
+options="!check" # No test suite.
license="GPL-2.0-only"
-options="!check" # no tests
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/az/aspell6-az-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/az/aspell6-az-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-az-$_pkgver"
build() {
- cd "$builddir"
./configure --vars DESTDIR="$pkgdir"
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/aspell-dict-be/APKBUILD b/user/aspell-dict-be/APKBUILD
index a25306568..07ceb9420 100644
--- a/user/aspell-dict-be/APKBUILD
+++ b/user/aspell-dict-be/APKBUILD
@@ -1,26 +1,24 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-be
pkgver=0.01
pkgrel=0
pkgdesc="Belarusian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
+options="!check" # No test suite.
license="LGPL-2.1-only"
-options="!check" # no tests
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/be/aspell5-be-$pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/be/aspell5-be-$pkgver.tar.bz2"
builddir="$srcdir/aspell5-be-$pkgver"
build() {
- cd "$builddir"
./configure --vars DESTDIR="$pkgdir"
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/aspell-dict-bg/APKBUILD b/user/aspell-dict-bg/APKBUILD
index 3af15fa3a..1e12918fd 100644
--- a/user/aspell-dict-bg/APKBUILD
+++ b/user/aspell-dict-bg/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-bg
pkgver=4.1.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,21 +7,19 @@ pkgrel=0
pkgdesc="Bulgarian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
+options="!check" # No test suite.
license="GPL-2.0-only"
-options="!check" # no tests
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/bg/aspell6-bg-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/bg/aspell6-bg-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-bg-$_pkgver"
build() {
- cd "$builddir"
./configure --vars DESTDIR="$pkgdir"
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/aspell-dict-bn/APKBUILD b/user/aspell-dict-bn/APKBUILD
index a2a9c9eac..ae54190ed 100644
--- a/user/aspell-dict-bn/APKBUILD
+++ b/user/aspell-dict-bn/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-bn
pkgver=0.01.1.1
_pkgver=${pkgver%.*}-${pkgver#*.*.*.}
@@ -7,21 +7,19 @@ pkgrel=0
pkgdesc="Bengali dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
+options="!check" # No test suite.
license="GPL-2.0-only"
-options="!check" # no tests
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/bn/aspell6-bn-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/bn/aspell6-bn-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-bn-$_pkgver"
build() {
- cd "$builddir"
./configure --vars DESTDIR="$pkgdir"
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/aspell-dict-br/APKBUILD b/user/aspell-dict-br/APKBUILD
index 60204987a..ea5fce6aa 100644
--- a/user/aspell-dict-br/APKBUILD
+++ b/user/aspell-dict-br/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-br
pkgver=0.50.2
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,21 +7,19 @@ pkgrel=0
pkgdesc="Breton dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
+options="!check" # No test suite.
license="GPL-2.0-only"
-options="!check" # no tests
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/br/aspell-br-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/br/aspell-br-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-br-$_pkgver"
build() {
- cd "$builddir"
./configure --vars DESTDIR="$pkgdir"
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/aspell-dict-ca/APKBUILD b/user/aspell-dict-ca/APKBUILD
index 9facc23cf..806ff5929 100644
--- a/user/aspell-dict-ca/APKBUILD
+++ b/user/aspell-dict-ca/APKBUILD
@@ -1,28 +1,25 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-ca
-pkgver=2.1.5.1
-_pkgver=${pkgver%.*}-${pkgver#*.*.*.}
+pkgver=2.5.0
pkgrel=0
pkgdesc="Catalan dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
+options="!check" # No test suite.
license="GPL-2.0-only"
-options="!check" # no tests
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/ca/aspell6-ca-$_pkgver.tar.bz2"
-builddir="$srcdir/aspell6-ca-$_pkgver"
+makedepends="cmd:which"
+source="https://www.softcatala.org/pub/softcatala/aspell/$pkgver/aspell6-ca-$pkgver.tar.bz2"
+builddir="$srcdir/aspell6-ca-$pkgver"
build() {
- cd "$builddir"
./configure --vars DESTDIR="$pkgdir"
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="9f3baef829948a4979c03dcc380caf3fa249912fa94d375a41df4d34d62ffdbf781a777eb437d101bdf99873e9d515a4d27ebef08f71ff435f07e845194c9f0a aspell6-ca-2.1.5-1.tar.bz2"
+sha512sums="70eee12b026d6d0b5f710593f4d1759190596e7b7db651b804cc4d724d2c567911ef8d370873ac7ab4506f6555b8dde046f3277c3cd072e0d7b76047cdd5b1b2 aspell6-ca-2.5.0.tar.bz2"
diff --git a/user/aspell-dict-cs/APKBUILD b/user/aspell-dict-cs/APKBUILD
index 768829bb9..7ab2dd321 100644
--- a/user/aspell-dict-cs/APKBUILD
+++ b/user/aspell-dict-cs/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-cs
pkgver=20040614.1
_pkgver=${pkgver%.*}-${pkgver#*.}
@@ -7,21 +7,19 @@ pkgrel=0
pkgdesc="Czech dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
+options="!check" # No test suite.
license="GPL-2.0-only"
-options="!check" # no tests
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/cs/aspell6-cs-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/cs/aspell6-cs-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-cs-$_pkgver"
build() {
- cd "$builddir"
./configure --vars DESTDIR="$pkgdir"
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/aspell-dict-csb/APKBUILD b/user/aspell-dict-csb/APKBUILD
index c2ceff90b..013e0f9ab 100644
--- a/user/aspell-dict-csb/APKBUILD
+++ b/user/aspell-dict-csb/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-csb
pkgver=0.02.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,21 +7,19 @@ pkgrel=0
pkgdesc="Kashubian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
+options="!check" # No test suite.
license="GPL-2.0-only"
-options="!check" # no tests
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/csb/aspell6-csb-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/csb/aspell6-csb-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-csb-$_pkgver"
build() {
- cd "$builddir"
./configure --vars DESTDIR="$pkgdir"
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/aspell-dict-cy/APKBUILD b/user/aspell-dict-cy/APKBUILD
index 4cdd1a287..d9a043990 100644
--- a/user/aspell-dict-cy/APKBUILD
+++ b/user/aspell-dict-cy/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-cy
pkgver=0.50.3
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Welsh dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/cy/aspell-cy-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/cy/aspell-cy-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-cy-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="feb68ea9749788a45725a5bc706ea2c24e73bada4fbce907bbe3b884d16875458516dd53fe7f5d62179cafe40117416f7068c1e6e0292353447c2ed7a494ad6b aspell-cy-0.50-3.tar.bz2"
diff --git a/user/aspell-dict-da/APKBUILD b/user/aspell-dict-da/APKBUILD
index 230fabcdd..1678e9a84 100644
--- a/user/aspell-dict-da/APKBUILD
+++ b/user/aspell-dict-da/APKBUILD
@@ -1,26 +1,25 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-da
-pkgver=1.4.42.1
-_pkgver=${pkgver%.*}-${pkgver#*.*.*.}
+pkgver=4.3
pkgrel=0
pkgdesc="Danish dictionaries for aspell"
-url="http://aspell.net"
+url="https://github.com/mortenivar/aspell-da"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/da/aspell5-da-$_pkgver.tar.bz2"
-builddir="$srcdir/aspell5-da-$_pkgver"
+makedepends="cmd:which"
+source="$pkgname-$pkgver.tar.gz::https://github.com/mortenivar/aspell-da/archive/refs/tags/$pkgver.tar.gz"
+builddir="$srcdir/aspell-da-$pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
-sha512sums="d431464b254670b56179ed19a03efe91e65e4dad3e3132f264830cde35f3da200179b39bd1ac21565287bbc1143fd74079c9082f2639fbc4573f2dfffbbecbc6 aspell5-da-1.4.42-1.tar.bz2"
+
+sha512sums="6cb391660f7c7dad85f0242feca284d07204dfbab348e4138e07932da8dd7446e8bccf8e3079bc40f69d73b3967da80ddd539e66eda037b8053056effd20b389 aspell-dict-da-4.3.tar.gz"
diff --git a/user/aspell-dict-de-alt/APKBUILD b/user/aspell-dict-de-alt/APKBUILD
index 0d8effa19..d756999da 100644
--- a/user/aspell-dict-de-alt/APKBUILD
+++ b/user/aspell-dict-de-alt/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-de-alt
pkgver=2.1.1
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="German (Old Spelling) dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/de-alt/aspell6-de-alt-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/de-alt/aspell6-de-alt-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-de-alt-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="823324bc299e9adbbe5308681a5f74ee2a76a32816e8abc9d19c3da0c4eae756eaf1a3c76e2d75449b51010854ab869379073b1fe377e505662187d6c38230b4 aspell6-de-alt-2.1-1.tar.bz2"
diff --git a/user/aspell-dict-de/APKBUILD b/user/aspell-dict-de/APKBUILD
index 080984aa3..eeb9259c1 100644
--- a/user/aspell-dict-de/APKBUILD
+++ b/user/aspell-dict-de/APKBUILD
@@ -1,31 +1,27 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-de
-pkgver=20161207
+pkgver=20161207.7.0
+_pkgver=${pkgver%.*}-${pkgver#*.*.}
+_pkgver=${_pkgver%.*-*}-${_pkgver#*.}
pkgrel=0
pkgdesc="German dictionaries for aspell"
-url="http://j3e.de/ispell/igerman98/index.html"
+url="http://ftp.gnu.org/gnu/aspell/dict/0index.html"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="https://j3e.de/ispell/igerman98/dict/igerman98-${pkgver}.tar.bz2"
-builddir="$srcdir/igerman98-$pkgver"
-_langs="de_DE de_AT de_CH"
+makedepends="cmd:which"
+source="http://ftp.gnu.org/pub/gnu/aspell/dict/de/aspell6-de-${_pkgver}.tar.bz2"
+builddir="$srcdir/aspell6-de-$_pkgver"
build() {
- cd "$builddir"
- for i in $_langs; do
- make aspell/${i}.rws
- done
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"/aspell
- mkdir -p "$pkgdir"/usr/share/aspell
- for i in $_langs; do
- install -m644 ${i}.alias ${i}.dat ${i}_affix.dat ${i}.multi ${i}.rws "$pkgdir"/usr/share/aspell
- done
+ make DESTDIR="$pkgdir" install
}
-sha512sums="62be84ac76fd2a0acc25439aa4c04339e54a1c7a2f619d76e0e01cfb53eeeca263c5cc335e315f9adeee9bab5cc392d4c473ca55cbed371c04c123d6fa2272aa igerman98-20161207.tar.bz2"
+
+sha512sums="ec29fa49d4e0303d6ceb78da3884ac54ddf34205895f30a95bce0db66f74472b423980200acf01efb1fa40380d6ea6351a58656400af35772266f8a54b1bbec8 aspell6-de-20161207-7-0.tar.bz2"
diff --git a/user/aspell-dict-el/APKBUILD b/user/aspell-dict-el/APKBUILD
index 37149af35..b2046dd21 100644
--- a/user/aspell-dict-el/APKBUILD
+++ b/user/aspell-dict-el/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-el
pkgver=0.08.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Greek dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/el/aspell6-el-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/el/aspell6-el-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-el-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="ea4ca962afc552e5525bbb84c7a8f980a2cc07265de748c68fb322c1dbfc52b0ba07b4a561966bb89e850ec60b11a3f21befa6ca8b66501e9ad8b5314ddd1f47 aspell6-el-0.08-0.tar.bz2"
diff --git a/user/aspell-dict-en/APKBUILD b/user/aspell-dict-en/APKBUILD
index c3a848440..e9d33e1ba 100644
--- a/user/aspell-dict-en/APKBUILD
+++ b/user/aspell-dict-en/APKBUILD
@@ -1,28 +1,26 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-en
-pkgver=2018.04.16.0
+pkgver=2020.12.07.0
_pkgver=${pkgver%.*}-${pkgver#*.*.*.}
pkgrel=0
pkgdesc="English dictionaries for aspell"
url="http://aspell.net/"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="BSD-3-Clause AND Public-Domain"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/en/aspell6-en-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/en/aspell6-en-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-en-$_pkgver"
build() {
- cd "$builddir"
./configure --vars DESTDIR="$pkgdir"
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="70447f5f11a6a2d96e58376ac06e78add59e4eb237ca40ed0752f481dabe1a6e9e227fd20ba95a5612de1bb4357cd65760a31c94efe66f8499b9ed031e9846c2 aspell6-en-2018.04.16-0.tar.bz2"
+sha512sums="9ed4e64891242e5e5e7d6ac82a0d1fda3bdc5116bd9d926e787b8f381080b357915f0c9b39cae04c1da0f2ec6e47ffe30a584f7f3bf7d455a46e8518a7858547 aspell6-en-2020.12.07-0.tar.bz2"
diff --git a/user/aspell-dict-eo/APKBUILD b/user/aspell-dict-eo/APKBUILD
index a03d2b2c8..3c343b369 100644
--- a/user/aspell-dict-eo/APKBUILD
+++ b/user/aspell-dict-eo/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-eo
pkgver=2.1.20000225.a2
_pkgver=${pkgver%.*}${pkgver#*.*.*.}
@@ -8,20 +8,20 @@ pkgrel=0
pkgdesc="Esperanto dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/eo/aspell6-eo-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/eo/aspell6-eo-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-eo-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="172ff88745e36abccf47ed8526868e3c2fd1f41c6da15893e723ef70bb29fc0e4b4e614f1eae8b3db8206f971f9a9cd9ec627fce2dae611804a276118367dfda aspell6-eo-2.1.20000225a-2.tar.bz2"
diff --git a/user/aspell-dict-es/APKBUILD b/user/aspell-dict-es/APKBUILD
index 9216f3bec..5d8964b7e 100644
--- a/user/aspell-dict-es/APKBUILD
+++ b/user/aspell-dict-es/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-es
pkgver=1.11.2
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Spanish dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/es/aspell6-es-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/es/aspell6-es-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-es-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="5d0159f24d6bff43db682a4beb25e82dd362c205acf7c9e0d728808c0e54a8a566befe26316f384099c72e6c429713f8ad7d2dc66a8f04a15e1d5a9cfe2290d8 aspell6-es-1.11-2.tar.bz2"
diff --git a/user/aspell-dict-et/APKBUILD b/user/aspell-dict-et/APKBUILD
index d352e745e..131cb6fa6 100644
--- a/user/aspell-dict-et/APKBUILD
+++ b/user/aspell-dict-et/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-et
pkgver=0.1.21.1
_pkgver=${pkgver%.*}-${pkgver#*.*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Estonian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/et/aspell6-et-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/et/aspell6-et-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-et-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="b3ed1249dbbb3caf12047407d85a3397f5e9561a59d71e33d6f29f18b9a83baa3f3c8d5a02a22cf0861212ff7b3ea1d33e38a943352e70be3703e0c42ff739ae aspell6-et-0.1.21-1.tar.bz2"
diff --git a/user/aspell-dict-fa/APKBUILD b/user/aspell-dict-fa/APKBUILD
index d08a32657..5b38164c5 100644
--- a/user/aspell-dict-fa/APKBUILD
+++ b/user/aspell-dict-fa/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-fa
pkgver=0.11.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Persian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/fa/aspell6-fa-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/fa/aspell6-fa-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-fa-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="1ed97d3bf8397fe9b3c9215ca3ca6630a06ae5fa1c47b2bbdf9821fbe069b9c097d1e145a6303202cec85047f9cd50bef2bde3adbca0caeb05625932c5f3bfe4 aspell6-fa-0.11-0.tar.bz2"
diff --git a/user/aspell-dict-fi/APKBUILD b/user/aspell-dict-fi/APKBUILD
index 6a4666ded..838ae2a5e 100644
--- a/user/aspell-dict-fi/APKBUILD
+++ b/user/aspell-dict-fi/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-fi
pkgver=0.7.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Finnish dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/fi/aspell6-fi-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/fi/aspell6-fi-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-fi-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="d1f27bc8e36033cba6ddaa978f2facfe8d134ab70124ec80d5397dba2b533b512755312feaf2afa838f68e4449479953a8b951264fbbfc28cdfd9457f67f67f7 aspell6-fi-0.7-0.tar.bz2"
diff --git a/user/aspell-dict-fo/APKBUILD b/user/aspell-dict-fo/APKBUILD
index eef2193a8..2dc47bd7a 100644
--- a/user/aspell-dict-fo/APKBUILD
+++ b/user/aspell-dict-fo/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-fo
pkgver=0.2.16.1
_pkgver=${pkgver%.*}-${pkgver#*.*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Faroese dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/fo/aspell5-fo-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/fo/aspell5-fo-$_pkgver.tar.bz2"
builddir="$srcdir/aspell5-fo-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="7e99f105cff0e682e2761ba1f91646a3ce657858be819cc598775303d6c08f2c5bd524f72bc0c0b52383aeaf591af56e910e19796732be627d8ab11ad6149126 aspell5-fo-0.2.16-1.tar.bz2"
diff --git a/user/aspell-dict-fr/APKBUILD b/user/aspell-dict-fr/APKBUILD
index 0685c068f..4affa5c6a 100644
--- a/user/aspell-dict-fr/APKBUILD
+++ b/user/aspell-dict-fr/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-fr
pkgver=0.50.3
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="French dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/fr/aspell-fr-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/fr/aspell-fr-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-fr-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="bb5d1faada9283521096a19a8f5abada2a19cc02717f6dde57846ef46a4df253113b10a2bb72d2b0e32e4a3ab24b541a5acd9f4595b908d2f6cd2fc448d8bc3b aspell-fr-0.50-3.tar.bz2"
diff --git a/user/aspell-dict-fy/APKBUILD b/user/aspell-dict-fy/APKBUILD
index 6eee693fe..1aecfdbfc 100644
--- a/user/aspell-dict-fy/APKBUILD
+++ b/user/aspell-dict-fy/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-fy
pkgver=0.12.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Frisian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/fy/aspell6-fy-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/fy/aspell6-fy-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-fy-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="f63b5436c78a5c0ebec3be1d3c24dced09a264c68e8ad39716e0e9e6bd984aca627bdc875f88b521f87b7f4d147edfce3fc0f4dc4b22fc8ef8d1aa5090fb9bda aspell6-fy-0.12-0.tar.bz2"
diff --git a/user/aspell-dict-ga/APKBUILD b/user/aspell-dict-ga/APKBUILD
index 7ade44261..c2a7d9ddf 100644
--- a/user/aspell-dict-ga/APKBUILD
+++ b/user/aspell-dict-ga/APKBUILD
@@ -1,27 +1,27 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-ga
-pkgver=5.0.0
+pkgver=5.1.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
_pkgver2=${pkgver%.*}
pkgrel=0
pkgdesc="Irish dictionaries for aspell"
url="https://cadhan.com/gaelspell/"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
+makedepends="cmd:which"
source="https://github.com/kscanne/gaelspell/releases/download/v$_pkgver2/aspell5-ga-$_pkgver.tar.bz2"
builddir="$srcdir/aspell5-ga-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
-sha512sums="15c4e3d85c1ad589300f7288af054d0574e849163816e5e5aec56d464a71fcd02eba129ed74ed7ec341bb19ad2578091c6701b36ac23cc5a7972026742e9bb57 aspell5-ga-5.0-0.tar.bz2"
+
+sha512sums="e13c66829b8d578c577539b9adea459ca85bca5fa535ca130aa76011cad0deb0e8bbf1d5a09c7c0317c9d419898755807b7a5af166c1ee52a34906825070214b aspell5-ga-5.1-0.tar.bz2"
diff --git a/user/aspell-dict-gd/APKBUILD b/user/aspell-dict-gd/APKBUILD
index fa14b77b8..36619dab3 100644
--- a/user/aspell-dict-gd/APKBUILD
+++ b/user/aspell-dict-gd/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-gd
pkgver=0.1.1.1
_pkgver=${pkgver%.*}-${pkgver#*.*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Scottish Gaelic dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/gd/aspell5-gd-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/gd/aspell5-gd-$_pkgver.tar.bz2"
builddir="$srcdir/aspell5-gd-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="d388bf3476f440c7773a69a0758b8e9cdddf01b64579f6d92fde38e7363c5c3b321a76c7a4e4587b0810159a35eec8d33d1cd2de49068d73f9e0e4dfa60fbc5c aspell5-gd-0.1.1-1.tar.bz2"
diff --git a/user/aspell-dict-gl/APKBUILD b/user/aspell-dict-gl/APKBUILD
index e586b4682..23c19ccd3 100644
--- a/user/aspell-dict-gl/APKBUILD
+++ b/user/aspell-dict-gl/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-gl
pkgver=0.5.a2
_pkgver=${pkgver%.*}${pkgver#*.*.}
@@ -8,20 +8,20 @@ pkgrel=0
pkgdesc="Galician dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/gl/aspell6-gl-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/gl/aspell6-gl-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-gl-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="9c8aae22d23e1cce9c5c94844c35ec3eaa5b76e5049712b714993e7c628a0b8ee250de2ad1b646a6ecffe32ebc0e4f0009a4db041b6f8bde5d021cf71c5cd714 aspell6-gl-0.5a-2.tar.bz2"
diff --git a/user/aspell-dict-grc/APKBUILD b/user/aspell-dict-grc/APKBUILD
index 39bd4b1b8..642ede9e1 100644
--- a/user/aspell-dict-grc/APKBUILD
+++ b/user/aspell-dict-grc/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-grc
pkgver=0.02.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Ancient Greek dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/grc/aspell6-grc-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/grc/aspell6-grc-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-grc-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="17999e20621efc67ab42d83b0e149d19b18bcfd20966da35d217a3e5682c0728287bec4bce28af34f4e343943a1dac49f85077693ca30bd1ff7cbaaeda453ddd aspell6-grc-0.02-0.tar.bz2"
diff --git a/user/aspell-dict-gu/APKBUILD b/user/aspell-dict-gu/APKBUILD
index 04fac1de1..7611d0185 100644
--- a/user/aspell-dict-gu/APKBUILD
+++ b/user/aspell-dict-gu/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-gu
pkgver=0.03.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Gujarati dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/gu/aspell6-gu-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/gu/aspell6-gu-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-gu-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="0cc252bd1112b8f06cb4ea9000b00d036dc405d8fbb9c380beff949ea138903b5807afa8f1419f4d8f57329a7bb1a4b7f4bd733170e5f09ac7786ac39beb87c6 aspell6-gu-0.03-0.tar.bz2"
diff --git a/user/aspell-dict-gv/APKBUILD b/user/aspell-dict-gv/APKBUILD
index a2aa1779e..d3f2b2cc2 100644
--- a/user/aspell-dict-gv/APKBUILD
+++ b/user/aspell-dict-gv/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-gv
pkgver=0.50.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Manx Gaelic dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/gv/aspell-gv-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/gv/aspell-gv-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-gv-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="6ec0893bb853c9600b49958802572edfed2127b749b2e4ee5ce051863526fefbae367cf2686ccae2f3c27fa168a8c3a8611eae3561853553594fb097fd78e37d aspell-gv-0.50-0.tar.bz2"
diff --git a/user/aspell-dict-he/APKBUILD b/user/aspell-dict-he/APKBUILD
index 99166d52a..d17b19675 100644
--- a/user/aspell-dict-he/APKBUILD
+++ b/user/aspell-dict-he/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-he
pkgver=1.0.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Hebrew dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/he/aspell6-he-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/he/aspell6-he-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-he-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="4db335c1566432ac8e18bace1f1ab892e47765b9dfb342f981b52637ee6768f592b7d9793c229e7f67f7f4770e6ef4abb9b2dd66da0feef9cc42bfd316adad88 aspell6-he-1.0-0.tar.bz2"
diff --git a/user/aspell-dict-hi/APKBUILD b/user/aspell-dict-hi/APKBUILD
index 26223d8df..e7b114ce5 100644
--- a/user/aspell-dict-hi/APKBUILD
+++ b/user/aspell-dict-hi/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-hi
pkgver=0.02.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,25 @@ pkgrel=0
pkgdesc="Hindi dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/hi/aspell6-hi-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/hi/aspell6-hi-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-hi-$_pkgver"
+prepare() {
+ sed -e 's/u-deva/u-deva-hi/g' -i info -i Makefile.pre -i hi.dat
+ mv u-deva.cmap u-deva-hi.cmap
+ mv u-deva.cset u-deva-hi.cset
+}
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="298743e1e5988e26081d89ee6cdea3b2f3185ad81b3449b5fa3f644a2beaf488320f9468fbeeb7e6c7bcb3ae4b7116bd02f64c4e6f4c60f80c1a7c3b84946a93 aspell6-hi-0.02-0.tar.bz2"
diff --git a/user/aspell-dict-hil/APKBUILD b/user/aspell-dict-hil/APKBUILD
index bc4d3af07..a8ecbb139 100644
--- a/user/aspell-dict-hil/APKBUILD
+++ b/user/aspell-dict-hil/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-hil
pkgver=0.11.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Hiligaynon dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/hil/aspell5-hil-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/hil/aspell5-hil-$_pkgver.tar.bz2"
builddir="$srcdir/aspell5-hil-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="274c353f48da1a769a454cff0fa54d0e5cfd84a2da7ed979693335aa8e45c5c562b0f92cc5bdeb77a5ff54d0f79f747e792ff4e3f8a0427bbd131879659af432 aspell5-hil-0.11-0.tar.bz2"
diff --git a/user/aspell-dict-hr/APKBUILD b/user/aspell-dict-hr/APKBUILD
index 917f599cb..60d178be9 100644
--- a/user/aspell-dict-hr/APKBUILD
+++ b/user/aspell-dict-hr/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-hr
pkgver=0.51.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Croatian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/hr/aspell-hr-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/hr/aspell-hr-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-hr-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="d6d891f3e55252fdbc5e0534c623cc42311c25cd1219351ce8a8160c3c3c49a6f219706e02f2c1c27174ef77c64e17f8cc25844befb17a43802b0a09ab42b1ad aspell-hr-0.51-0.tar.bz2"
diff --git a/user/aspell-dict-hsb/APKBUILD b/user/aspell-dict-hsb/APKBUILD
index 95fc32a90..6e2a6f1b1 100644
--- a/user/aspell-dict-hsb/APKBUILD
+++ b/user/aspell-dict-hsb/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-hsb
pkgver=0.02.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Upper Sorbian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/hsb/aspell6-hsb-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/hsb/aspell6-hsb-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-hsb-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="b8e49bf6d85e149365378a33b56ab61767c34ddfd4545eedeedad012b2b396dff54bb3dcba56fb4d3c0a92a0c3e13fddf0548591568295709d91f18c45ca1274 aspell6-hsb-0.02-0.tar.bz2"
diff --git a/user/aspell-dict-hu/APKBUILD b/user/aspell-dict-hu/APKBUILD
index 690fa6841..77badbcb8 100644
--- a/user/aspell-dict-hu/APKBUILD
+++ b/user/aspell-dict-hu/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-hu
pkgver=0.99.4.2.0
_pkgver=${pkgver%.*}-${pkgver#*.*.*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Hungarian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/hu/aspell6-hu-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/hu/aspell6-hu-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-hu-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="95922401f2a8aeac61b117c464b4b83b8101fbe1e0ee758b3284a67c188348db55d900c2898eaa8639ee2db99c3b27e85f9677fc6a4d54caae57dd72101cb320 aspell6-hu-0.99.4.2-0.tar.bz2"
diff --git a/user/aspell-dict-hus/APKBUILD b/user/aspell-dict-hus/APKBUILD
index 892165847..58b07d7ff 100644
--- a/user/aspell-dict-hus/APKBUILD
+++ b/user/aspell-dict-hus/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-hus
pkgver=0.03.1
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Huastec Tenek dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/hus/aspell6-hus-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/hus/aspell6-hus-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-hus-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="2d1f8458f04bda64068ddd3c5017ed129c2b7549e2474acdcc39f76283dae1a0fe557ab67526fa31ce300f615bd5d2ded4aa0414f3a5b6ee8e59389c8ac20c70 aspell6-hus-0.03-1.tar.bz2"
diff --git a/user/aspell-dict-hy/APKBUILD b/user/aspell-dict-hy/APKBUILD
index 6cd26a147..f72aa2b98 100644
--- a/user/aspell-dict-hy/APKBUILD
+++ b/user/aspell-dict-hy/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-hy
pkgver=0.10.0.0
_pkgver=${pkgver%.*}-${pkgver#*.*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Armenian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/hy/aspell6-hy-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/hy/aspell6-hy-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-hy-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="b2157c1d04e4d4726851fe4cda91fcc3cf0dba8d5cfaaea74deed77d9c5f94473e13784526f884ba483789a098dd3efee936c456606913a731a165ec3eb145a3 aspell6-hy-0.10.0-0.tar.bz2"
diff --git a/user/aspell-dict-ia/APKBUILD b/user/aspell-dict-ia/APKBUILD
index 722c08f15..28bc9462e 100644
--- a/user/aspell-dict-ia/APKBUILD
+++ b/user/aspell-dict-ia/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-ia
pkgver=0.50.1
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Interlingua dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/ia/aspell-ia-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/ia/aspell-ia-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-ia-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="5cdd7b91393043d7b537166c1df100aa76e911cf1c389b34b916839e907abc3cdbdc368f2876a5ecfbd625414b67858950e9d79af184560b9ddd667030dc608d aspell-ia-0.50-1.tar.bz2"
diff --git a/user/aspell-dict-id/APKBUILD b/user/aspell-dict-id/APKBUILD
index cda3e6217..2186c00b0 100644
--- a/user/aspell-dict-id/APKBUILD
+++ b/user/aspell-dict-id/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-id
pkgver=1.2.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Indonesian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/id/aspell5-id-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/id/aspell5-id-$_pkgver.tar.bz2"
builddir="$srcdir/aspell5-id-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="bc33c5d6c68027304b0dc299454f8dd221e0138b079bcc423e287fda5e9204b0d6dc14a5a0617b4d018259e011c979453ee13b9050be5516d2379e86ac9cb86a aspell5-id-1.2-0.tar.bz2"
diff --git a/user/aspell-dict-is/APKBUILD b/user/aspell-dict-is/APKBUILD
index 1bdaab2f5..77bf9cf13 100644
--- a/user/aspell-dict-is/APKBUILD
+++ b/user/aspell-dict-is/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-is
pkgver=0.51.1.0
_pkgver=${pkgver%.*}-${pkgver#*.*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Icelandic dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/is/aspell-is-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/is/aspell-is-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-is-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="b96aeb407c1de700a20ca18bbd9e1bc1a4c086379ef7fbd0467178d11b9ed70e547a81a4659619e7385f89926638cb2a5e807cc701b444a7bf0d246905795bf2 aspell-is-0.51.1-0.tar.bz2"
diff --git a/user/aspell-dict-it/APKBUILD b/user/aspell-dict-it/APKBUILD
index 639d81c27..2dfe8ce05 100644
--- a/user/aspell-dict-it/APKBUILD
+++ b/user/aspell-dict-it/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-it
pkgver=2.4.20070901.0
_pkgver=${pkgver%.*.*}-${pkgver#*.*.}
@@ -8,20 +8,20 @@ pkgrel=0
pkgdesc="Italian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
+makedepends="cmd:which"
source="https://downloads.sourceforge.net/linguistico/aspell6-it-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-it-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="6a5014880e51103e70d57a6b01e2d4bb5d51ae939f72ee9270b46891804203399c817dd73c3a0b91c004744a4e66a1a5b402d19be0a53db952152cdd3c1741e9 aspell6-it-2.4-20070901-0.tar.bz2"
diff --git a/user/aspell-dict-kn/APKBUILD b/user/aspell-dict-kn/APKBUILD
index 560e222c3..4c05eccc0 100644
--- a/user/aspell-dict-kn/APKBUILD
+++ b/user/aspell-dict-kn/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-kn
pkgver=0.01.1
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Kannada dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/kn/aspell6-kn-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/kn/aspell6-kn-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-kn-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="892f93c0ed33f4aedb240d8c673d7888318760ccb2ca0cfb8377a2770f757c5410583a7c18314f3fb7cd58704a531e8931bc8be44d9de80b1421d2238e4229c3 aspell6-kn-0.01-1.tar.bz2"
diff --git a/user/aspell-dict-ku/APKBUILD b/user/aspell-dict-ku/APKBUILD
index 5770b2ebb..902703ac4 100644
--- a/user/aspell-dict-ku/APKBUILD
+++ b/user/aspell-dict-ku/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-ku
pkgver=0.20.1
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Kurdi dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/ku/aspell5-ku-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/ku/aspell5-ku-$_pkgver.tar.bz2"
builddir="$srcdir/aspell5-ku-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="b1aadc13e4cc494bb7b8bdb1ef96215abb72dfe2ec398d4c383984a2540323117d18a940c675ed0266cbbdf14958525975083a9fe35e93b7885c8f0216362d84 aspell5-ku-0.20-1.tar.bz2"
diff --git a/user/aspell-dict-ky/APKBUILD b/user/aspell-dict-ky/APKBUILD
index 86cb8c757..304fce717 100644
--- a/user/aspell-dict-ky/APKBUILD
+++ b/user/aspell-dict-ky/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-ky
pkgver=0.01.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Kirghiz dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/ky/aspell6-ky-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/ky/aspell6-ky-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-ky-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="94389905505ffc0c469dd5f4ea31e2e76fed695e8cb7b903e248a57a8677e45311e525a07c43da0be87bfdc7825b1af4ae8dd1993d35948dd1ace4b1af9fa307 aspell6-ky-0.01-0.tar.bz2"
diff --git a/user/aspell-dict-la/APKBUILD b/user/aspell-dict-la/APKBUILD
index b2d3473b0..150478420 100644
--- a/user/aspell-dict-la/APKBUILD
+++ b/user/aspell-dict-la/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-la
pkgver=20020503.0
_pkgver=${pkgver%.*}-${pkgver#*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Latin dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/la/aspell6-la-20020503-0.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/la/aspell6-la-20020503-0.tar.bz2"
builddir="$srcdir/aspell6-la-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="b167541050546edfdb6148f06952eb07f67c8a5115d40ea777d566b722d4476147e986de06ebc8ffdfdadf1f201e3c1b5f000527ca489da96e2b3f764e487e5f aspell6-la-20020503-0.tar.bz2"
diff --git a/user/aspell-dict-lt/APKBUILD b/user/aspell-dict-lt/APKBUILD
index 8d31a0a30..8424a9e0e 100644
--- a/user/aspell-dict-lt/APKBUILD
+++ b/user/aspell-dict-lt/APKBUILD
@@ -1,26 +1,25 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-lt
-pkgver=1.3
-_pkgver=${pkgver%.*}-${pkgver#*.*.*.}
+pkgver=1.3.2
pkgrel=0
pkgdesc="Lithuanian dictionaries for aspell"
-url="https://launchpad.net/ispell-lt"
+url="https://github.com/ispell-lt/ispell-lt"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="https://launchpad.net/ispell-lt/main/$pkgver/+download/aspell6-lt-$pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://github.com/ispell-lt/ispell-lt/releases/download/rel-$pkgver/aspell6-lt-$pkgver.tar.bz2"
builddir="$srcdir/aspell6-lt-$pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
-sha512sums="dd19994f703b78b1296644699df18ddcdfdcb2441003ed9edee03ee18601ff2e15e9b4ed8fbf844d72b31f0c0313a6755c89b67c44eea35485c30f2abc3b206f aspell6-lt-1.3.tar.bz2"
+
+sha512sums="df64eb6f5ae9bb564d14f0cd84106da3f32908e79682ebece6e3ed1613216eeca94f48c9c3f689df724cfca4d80f9749e39772766a9ea20167a97ee39074e5a3 aspell6-lt-1.3.2.tar.bz2"
diff --git a/user/aspell-dict-lv/APKBUILD b/user/aspell-dict-lv/APKBUILD
index bd102c589..455d07b9d 100644
--- a/user/aspell-dict-lv/APKBUILD
+++ b/user/aspell-dict-lv/APKBUILD
@@ -1,26 +1,25 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-lv
-pkgver=0.5.5.1
-_pkgver=${pkgver%.*}-${pkgver#*.*.*.}
+pkgver=0.9.3
pkgrel=0
pkgdesc="Latvian dictionaries for aspell"
-url="http://aspell.net"
+url="https://dict.dv.lv/"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/lv/aspell6-lv-$_pkgver.tar.bz2"
-builddir="$srcdir/aspell6-lv-$_pkgver"
+makedepends="cmd:which"
+source="https://distfiles.adelielinux.org/source/archive/$pkgname-$pkgver/aspell6-lv-$pkgver.tar.bz2"
+builddir="$srcdir/aspell6-lv-$pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
-sha512sums="94a9c6da3fd29f17fbe5d02cd4764bf24379abef526725bb34c0726f7ff385fcb876df24b741bc66518295c3bb75c800aa6010130454c6dc1d6372d12d2eb98e aspell6-lv-0.5.5-1.tar.bz2"
+
+sha512sums="7148c704297dd0383059968898a4330c66929fd6ec4bbfcbb9120794bcd58d5d78e6c2b9d11b57f477563189356d54aec2c2c3b4871598efec3831b8e4ba5e66 aspell6-lv-0.9.3.tar.bz2"
diff --git a/user/aspell-dict-mg/APKBUILD b/user/aspell-dict-mg/APKBUILD
index 0a1963250..c5013902d 100644
--- a/user/aspell-dict-mg/APKBUILD
+++ b/user/aspell-dict-mg/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-mg
pkgver=0.03.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Malagasy dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/mg/aspell5-mg-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/mg/aspell5-mg-$_pkgver.tar.bz2"
builddir="$srcdir/aspell5-mg-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="a9c0861b925b40bf9bba5e1d02f3e225a516f929a2e72c6760ec5bedbc513e18e8bda0205e83e17c09b6a37256877e54576c8085e6000f67783147d4cd9ec6df aspell5-mg-0.03-0.tar.bz2"
diff --git a/user/aspell-dict-mi/APKBUILD b/user/aspell-dict-mi/APKBUILD
index dbcd853e0..81a42be7f 100644
--- a/user/aspell-dict-mi/APKBUILD
+++ b/user/aspell-dict-mi/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-mi
pkgver=0.50.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Maori dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/mi/aspell-mi-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/mi/aspell-mi-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-mi-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="cba0a646612f6cd24d1e1d91326dcf1c7a6ec01c04ad0661a95fcd745b4d1a3bb50aef84c382d3a6c9108d4e9589ee7661f4988930c7198950396eeb029062a0 aspell-mi-0.50-0.tar.bz2"
diff --git a/user/aspell-dict-mk/APKBUILD b/user/aspell-dict-mk/APKBUILD
index f620067e3..296d543e0 100644
--- a/user/aspell-dict-mk/APKBUILD
+++ b/user/aspell-dict-mk/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-mk
pkgver=0.50.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Macedonian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/mk/aspell-mk-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/mk/aspell-mk-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-mk-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="6bcd57338ce76b7daf22a4be28a2f583c6c1d73ff2d8d5db2e3d5122d89c41617d44a40019dfe647c8e1e07509bee20be6ba136e872710bd77871adbac29e947 aspell-mk-0.50-0.tar.bz2"
diff --git a/user/aspell-dict-ml/APKBUILD b/user/aspell-dict-ml/APKBUILD
index 8cd3ee5fc..44d483992 100644
--- a/user/aspell-dict-ml/APKBUILD
+++ b/user/aspell-dict-ml/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-ml
pkgver=0.04.1
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Malayalam dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="http://gnu.mirrors.pair.com/savannah/savannah/smc/Spellchecker/aspell6-ml-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://download-mirror.savannah.gnu.org/releases/smc/Spellchecker/aspell6-ml-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-ml-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="a9b6e522f9a4b4d9034f9cd2e1546e0cdfc9bad9f9c7515c8144efb186fb164ab55d422e93da89f0cf7c2b7e6f7b5d439747cc8b7e211c5b09a3638573765563 aspell6-ml-0.04-1.tar.bz2"
diff --git a/user/aspell-dict-mn/APKBUILD b/user/aspell-dict-mn/APKBUILD
index cbaad148f..7756f7442 100644
--- a/user/aspell-dict-mn/APKBUILD
+++ b/user/aspell-dict-mn/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-mn
pkgver=0.06.2
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Mongolian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/mn/aspell6-mn-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/mn/aspell6-mn-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-mn-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="c0cf603169eaf8b4b858fd7573374d1ec47b9794e2514cb241b8fc3b053bce715dad6a15bd73eeef443f0d6a4308ffb384acae825d33315ee983a69ceacf9201 aspell6-mn-0.06-2.tar.bz2"
diff --git a/user/aspell-dict-mr/APKBUILD b/user/aspell-dict-mr/APKBUILD
index 029d4001a..3a158dfb8 100644
--- a/user/aspell-dict-mr/APKBUILD
+++ b/user/aspell-dict-mr/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-mr
pkgver=0.10.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,26 @@ pkgrel=0
pkgdesc="Marathi dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/mr/aspell6-mr-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/mr/aspell6-mr-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-mr-$_pkgver"
+prepare() {
+ sed -e 's/u-deva/u-deva-mr/g' -i info -i Makefile.pre -i mr.dat
+ mv u-deva.cmap u-deva-mr.cmap
+ mv u-deva.cset u-deva-mr.cset
+}
+
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="4137a9d6f3dc67db81479a2df628c33c3989214a629f48fc9bb6421e4ce723bdf559eb2f0981c2172315ec140ccd160a10b9556a6618f2fd3383dec184352732 aspell6-mr-0.10-0.tar.bz2"
diff --git a/user/aspell-dict-ms/APKBUILD b/user/aspell-dict-ms/APKBUILD
index a8187eb00..6b57ce4e0 100644
--- a/user/aspell-dict-ms/APKBUILD
+++ b/user/aspell-dict-ms/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-ms
pkgver=0.50.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Malay dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/ms/aspell-ms-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/ms/aspell-ms-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-ms-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="270a6ad18d9b317588e781eab84b59c83450383d703fab815856b3afa58a19ffa0eec3c7cbc418993302703d586cb92678878aea51fff753733f7583d8c2b0e9 aspell-ms-0.50-0.tar.bz2"
diff --git a/user/aspell-dict-mt/APKBUILD b/user/aspell-dict-mt/APKBUILD
index e7c3cef1c..7a6ffbe7e 100644
--- a/user/aspell-dict-mt/APKBUILD
+++ b/user/aspell-dict-mt/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-mt
pkgver=0.50.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Maltese dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/mt/aspell-mt-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/mt/aspell-mt-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-mt-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="aadcc59b0dbbfdf4d715bfe6735bfa2a91e6fae382634a25c0cdf8367710050b2daeac1db18df3a71184720ff9339a852983c8a266f8c97e0ffba1e8be50eaa1 aspell-mt-0.50-0.tar.bz2"
diff --git a/user/aspell-dict-nb/APKBUILD b/user/aspell-dict-nb/APKBUILD
index 7dd694e35..4f53bb33e 100644
--- a/user/aspell-dict-nb/APKBUILD
+++ b/user/aspell-dict-nb/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-nb
pkgver=0.50.1.0
_pkgver=${pkgver%.*}-${pkgver#*.*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Norwegian (Bokmal) dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/nb/aspell-nb-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/nb/aspell-nb-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-nb-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="e30dcf7e757ab1ceb5de349927f9cfa4d9de4015bd9cc9449739fd2f17f6f033f698e71da0270b4e1ebd76be2195c42422630266ad9cadd2173184706d651c13 aspell-nb-0.50.1-0.tar.bz2"
diff --git a/user/aspell-dict-nds/APKBUILD b/user/aspell-dict-nds/APKBUILD
index 688ce1c4e..3756a1477 100644
--- a/user/aspell-dict-nds/APKBUILD
+++ b/user/aspell-dict-nds/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-nds
pkgver=0.01.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Low Saxon dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/nds/aspell6-nds-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/nds/aspell6-nds-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-nds-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="88ef6f6773e8699a5200ff8ae3ef9935fee21958fa35868bc10d37c22b55ea721ad9c59ab4843fdc6fedbf5a9ed10c7ea144548713742b8094b99c3c46a552a5 aspell6-nds-0.01-0.tar.bz2"
diff --git a/user/aspell-dict-nl/APKBUILD b/user/aspell-dict-nl/APKBUILD
index 3d288aa76..d6b807038 100644
--- a/user/aspell-dict-nl/APKBUILD
+++ b/user/aspell-dict-nl/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-nl
pkgver=0.50.2
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Dutch dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/nl/aspell-nl-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/nl/aspell-nl-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-nl-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="bee6218b476f8655fa325940ba5ea1035ff483b5b47b9b547f60fd63786e8ff08daa03a30dd0ccd988c2f01827bb06075021e1a1fa79c640db82e72a3ccd3152 aspell-nl-0.50-2.tar.bz2"
diff --git a/user/aspell-dict-nn/APKBUILD b/user/aspell-dict-nn/APKBUILD
index 14be7c042..9c01a837d 100644
--- a/user/aspell-dict-nn/APKBUILD
+++ b/user/aspell-dict-nn/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-nn
pkgver=0.50.1.1
_pkgver=${pkgver%.*}-${pkgver#*.*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Norwegian (Nynorsk) dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/nn/aspell-nn-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/nn/aspell-nn-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-nn-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="a4db6fe937a62758f51d713e246f70ea6e0b2726c8ddb23af084925394a2d8168442fccbd74378f4773db121f0d506d848c01573138e974efc79f295f3ebe551 aspell-nn-0.50.1-1.tar.bz2"
diff --git a/user/aspell-dict-ny/APKBUILD b/user/aspell-dict-ny/APKBUILD
index 258dcd0a7..1754f2a6f 100644
--- a/user/aspell-dict-ny/APKBUILD
+++ b/user/aspell-dict-ny/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-ny
pkgver=0.01.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Chichewa dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/ny/aspell5-ny-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/ny/aspell5-ny-$_pkgver.tar.bz2"
builddir="$srcdir/aspell5-ny-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="52f4526d605a2f0577217af1dc8e44da20484fe7f725ceee1f8fdf9ba0fc1457910d55567ea9287465cbf37955af9a11b2caba084cece59aec29755cb147cb05 aspell5-ny-0.01-0.tar.bz2"
diff --git a/user/aspell-dict-or/APKBUILD b/user/aspell-dict-or/APKBUILD
index 97703ffa8..eff837b56 100644
--- a/user/aspell-dict-or/APKBUILD
+++ b/user/aspell-dict-or/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-or
pkgver=0.03.1
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Oriya dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/or/aspell6-or-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/or/aspell6-or-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-or-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="4f5c13e37054266a782cc9d9aa6a03de77ca383907ce05f23ab5812581b815276f4d79a2f8626226f30a59f8ab9ecf0f0186835f7f30881e4a358f99a75b708a aspell6-or-0.03-1.tar.bz2"
diff --git a/user/aspell-dict-pa/APKBUILD b/user/aspell-dict-pa/APKBUILD
index 83d4ae61f..731875b19 100644
--- a/user/aspell-dict-pa/APKBUILD
+++ b/user/aspell-dict-pa/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-pa
pkgver=0.01.1
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Punjabi dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/pa/aspell6-pa-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/pa/aspell6-pa-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-pa-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="6a0d2d7f1b1a935b6ac4b373963e525083d16c26953cce5d7a29d391aaed36f5430d27ea69efe59f081230822830dc4d4143bc155049bb5384580ffd66b5ee61 aspell6-pa-0.01-1.tar.bz2"
diff --git a/user/aspell-dict-pl/APKBUILD b/user/aspell-dict-pl/APKBUILD
index e7c364f02..cb5274091 100644
--- a/user/aspell-dict-pl/APKBUILD
+++ b/user/aspell-dict-pl/APKBUILD
@@ -1,25 +1,25 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-pl
-pkgver=20190107
+pkgver=20200619
pkgrel=0
pkgdesc="Polish dictionaries for aspell"
url="https://sjp.pl/slownik/ort/"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="https://distfiles.adelielinux.org/source/sjp-aspell6-pl-6.0_$pkgver-0.tar.bz2"
+makedepends="cmd:which"
+source="https://dev.sick.bike/dist/sjp-aspell6-pl-6.0_$pkgver-0.tar.bz"2
builddir="$srcdir/aspell6-pl-6.0_$pkgver-0"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
-sha512sums="a898462495e4797173141f2f82ce74fadb80dfc469e7c4b44871f2622137d5958fad30fd0525ac9cf7a07c31b74d805bb789f022ccbcacadd0d4d1f172986665 sjp-aspell6-pl-6.0_20190107-0.tar.bz2"
+
+sha512sums="76be557382fbc255b32c1be13124090ce65514b2472e57a7205fdeefeae8dac929c8d4a075c2ff18d6bb0dc195fcb4294c621c06b128dad9de12431bfe338c49 sjp-aspell6-pl-6.0_20200619-0.tar.bz2"
diff --git a/user/aspell-dict-pt_BR/APKBUILD b/user/aspell-dict-pt_BR/APKBUILD
index 5ac5dc4e8..a83f0b014 100644
--- a/user/aspell-dict-pt_BR/APKBUILD
+++ b/user/aspell-dict-pt_BR/APKBUILD
@@ -1,26 +1,27 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-pt_BR
-pkgver=20090702.0
-_pkgver=${pkgver%.*}-${pkgver#*.}
+pkgver=20131030.12.0
+_pkgver=${pkgver%.*}-${pkgver#*.*.}
+_pkgver=${_pkgver%.*-*}-${_pkgver#*.}
pkgrel=0
pkgdesc="Brazilian Portuguese dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/pt_BR/aspell6-pt_BR-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/pt_BR/aspell6-pt_BR-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-pt_BR-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
-sha512sums="4c2606dad177881db7b7996c707a8d5a087fc9ec6ac46fac08b2bbb9c7acb51c7f0b3cb936f46257d03dd8e4e7a23b0244331db68a8208f5b7625d79ea6522d1 aspell6-pt_BR-20090702-0.tar.bz2"
+
+sha512sums="9cb54552d34239202e74ac1e2b7da112dfbecbe0df2da011828178db0b93f74dde9922d33ad18a7b37084e6d37cc7fd16419e30cc63aa46664b0b86fb0e6ee99 aspell6-pt_BR-20131030-12-0.tar.bz2"
diff --git a/user/aspell-dict-pt_PT/APKBUILD b/user/aspell-dict-pt_PT/APKBUILD
index 72c92641b..1ecc4846a 100644
--- a/user/aspell-dict-pt_PT/APKBUILD
+++ b/user/aspell-dict-pt_PT/APKBUILD
@@ -1,26 +1,27 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-pt_PT
-pkgver=20070510.0
-_pkgver=${pkgver%.*}-${pkgver#*.}
+pkgver=20190329.1.0
+_pkgver=${pkgver%.*.*}-${pkgver#*.}
+_pkgver=${_pkgver%.*}-${_pkgver#*.}
pkgrel=0
pkgdesc="Portuguese dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/pt_PT/aspell6-pt_PT-20070510-0.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/pt_PT/aspell6-pt_PT-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-pt_PT-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
-sha512sums="eab60bfed51e4b044519e8e91fa2a4abb45d02431372310a45334c80abafd2022982331f3c0d39294d5029674d75536ad153877c23db01971f4b3d54b7b90cd6 aspell6-pt_PT-20070510-0.tar.bz2"
+
+sha512sums="7c7edb79cd46bf4566814dbdef09f9b6d202f183abe5c25fda454e69c57d617948806657ed1da83039b508c1ccdb8a020d694b7119edfce63bae7defeafa1123 aspell6-pt_PT-20190329-1-0.tar.bz2"
diff --git a/user/aspell-dict-qu/APKBUILD b/user/aspell-dict-qu/APKBUILD
index 4641181d7..c992b5222 100644
--- a/user/aspell-dict-qu/APKBUILD
+++ b/user/aspell-dict-qu/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-qu
pkgver=0.02.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Quechua dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/qu/aspell6-qu-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/qu/aspell6-qu-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-qu-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="aac1caea88e9bd896ec5a9a2e7fa4a569626fa5e6f6bf1188614db10ca2b34196b589c496027b3bc562ef9435245e215b428a49e91a8d0eb215801ae8c9bb512 aspell6-qu-0.02-0.tar.bz2"
diff --git a/user/aspell-dict-ro/APKBUILD b/user/aspell-dict-ro/APKBUILD
index f80bc913f..c9605ca47 100644
--- a/user/aspell-dict-ro/APKBUILD
+++ b/user/aspell-dict-ro/APKBUILD
@@ -1,25 +1,26 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-ro
pkgver=3.3.10
pkgrel=0
pkgdesc="Romanian dictionaries for aspell"
url="https://sourceforge.net/projects/rospell/"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="https://download.sourceforge.net/rospell/aspell5-ro-$pkgver.tar.bz2"
+makedepends="cmd:which"
+#source="https://download.sourceforge.net/rospell/aspell5-ro-$pkgver.tar.bz2"
+source="https://distfiles.adelielinux.org/source/archive/${pkgname}-${pkgver}/aspell5-ro-$pkgver.tar.bz2"
builddir="$srcdir/aspell5-ro-$pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="c535894d11ee168311a2cc0f799005639b21f3284a2a51db25d513d3e0494cf6d2fb7517bc79bc76f2d9ae89bb43c8bcbac7f451195ee22a7cce361aa09914ba aspell5-ro-3.3.10.tar.bz2"
diff --git a/user/aspell-dict-ru/APKBUILD b/user/aspell-dict-ru/APKBUILD
index cd2b6d5f5..a8c57266f 100644
--- a/user/aspell-dict-ru/APKBUILD
+++ b/user/aspell-dict-ru/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-ru
pkgver=0.99f7.1
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Russian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/ru/aspell6-ru-0.99f7-1.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/ru/aspell6-ru-0.99f7-1.tar.bz2"
builddir="$srcdir/aspell6-ru-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="789fe15f5502b54008a41f2afb5635dcb7bb0a36e61b300ee48b2429c339793f5c4808d6063f13f1f8455ce251912433890e7d01ca59d8b0924ecd2987ceb430 aspell6-ru-0.99f7-1.tar.bz2"
diff --git a/user/aspell-dict-rw/APKBUILD b/user/aspell-dict-rw/APKBUILD
index accb77d6c..7489b4567 100644
--- a/user/aspell-dict-rw/APKBUILD
+++ b/user/aspell-dict-rw/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-rw
pkgver=0.50.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Kinyarwanda dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/rw/aspell-rw-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/rw/aspell-rw-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-rw-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="a987fe90b091c5f8d4c28713ad50ca917d2a8fd120df55bd413e3112913cb7e9e8fdc740994aa881bbfdd9ac38fa5ebe728c9e62e25a0e7cc8eac13c2380c56a aspell-rw-0.50-0.tar.bz2"
diff --git a/user/aspell-dict-sc/APKBUILD b/user/aspell-dict-sc/APKBUILD
index 8e447c831..e463bd9d5 100644
--- a/user/aspell-dict-sc/APKBUILD
+++ b/user/aspell-dict-sc/APKBUILD
@@ -1,25 +1,25 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-sc
pkgver=1.0
pkgrel=0
pkgdesc="Sardinian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/sc/aspell5-sc-$pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/sc/aspell5-sc-$pkgver.tar.bz2"
builddir="$srcdir/aspell5-sc-$pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="3cad49510894645b9bc97bbae877641e64af0440a2abcb6f96197da95390d4dd59d1374008c0ade9dc17772a32c367b9b03e6be65e7f190268365f25069d2a23 aspell5-sc-1.0.tar.bz2"
diff --git a/user/aspell-dict-sk/APKBUILD b/user/aspell-dict-sk/APKBUILD
index ac036cc6e..c7eb873cc 100644
--- a/user/aspell-dict-sk/APKBUILD
+++ b/user/aspell-dict-sk/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-sk
pkgver=2.02.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Slovak dictionaries for aspell"
url="http://www.sk-spell.sk.cx/aspell-sk"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="http://www.sk-spell.sk.cx/file_download/103/aspell6-sk-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://distfiles.adelielinux.org/source/aspell6-sk-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-sk-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="fcdf5c043168c887f93dfad5b9c6e07d9edd0c6194139e61bee2ba3928798792d8e8b446754bc55a67acc6d333034ebed9655cc3c15ad638f834b5a9efcc63cd aspell6-sk-2.02-0.tar.bz2"
diff --git a/user/aspell-dict-sl/APKBUILD b/user/aspell-dict-sl/APKBUILD
index ab8dc8621..13977d976 100644
--- a/user/aspell-dict-sl/APKBUILD
+++ b/user/aspell-dict-sl/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-sl
pkgver=0.50.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Slovenian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/sl/aspell-sl-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/sl/aspell-sl-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-sl-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="17b74bd3c6d7fbda0b4f6d14ee529f47f39c349642593312c160eb4e7eb6eb40f704e9c34e6fb33ef9e829b861e92a224196f55326fa4d02197d12912fd4b44f aspell-sl-0.50-0.tar.bz2"
diff --git a/user/aspell-dict-sr/APKBUILD b/user/aspell-dict-sr/APKBUILD
index 601515fcb..0a2d94c44 100644
--- a/user/aspell-dict-sr/APKBUILD
+++ b/user/aspell-dict-sr/APKBUILD
@@ -1,25 +1,25 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-sr
pkgver=0.02
pkgrel=0
pkgdesc="Serbian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/sr/aspell6-sr-$pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/sr/aspell6-sr-$pkgver.tar.bz2"
builddir="$srcdir/aspell6-sr-$pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="3334d98779c9eff74ca85e5168e51375e38f831ff3f2b9164d0773cf220bd9ca0076d282086bed6258c643cfae70124d985931982db6c885b8d53fc35fb0c395 aspell6-sr-0.02.tar.bz2"
diff --git a/user/aspell-dict-sv/APKBUILD b/user/aspell-dict-sv/APKBUILD
index cbdf4dfc8..dbc96ecf4 100644
--- a/user/aspell-dict-sv/APKBUILD
+++ b/user/aspell-dict-sv/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-sv
pkgver=0.51.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Swedish dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/sv/aspell-sv-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/sv/aspell-sv-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-sv-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="f995f3ae1a1380a5dbb171786c2cf3d46670c4bc012792a1d241ff0f3de61046766583e3704c57618eb0690aa0e915b64130114420358a3f46b5b59a37d45e5c aspell-sv-0.51-0.tar.bz2"
diff --git a/user/aspell-dict-sw/APKBUILD b/user/aspell-dict-sw/APKBUILD
index d904ac81a..7c3f0d59f 100644
--- a/user/aspell-dict-sw/APKBUILD
+++ b/user/aspell-dict-sw/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-sw
pkgver=0.50.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Swahili dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/sw/aspell-sw-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/sw/aspell-sw-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-sw-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="5d89a68c292b45a188f611a14bc355c955810f79c32c7784b2e3ba5a4307b48d572e5a7ca882a344b7635eabe6aa6c2f5d789e9506f3a3f4e69c93fd3675e423 aspell-sw-0.50-0.tar.bz2"
diff --git a/user/aspell-dict-ta/APKBUILD b/user/aspell-dict-ta/APKBUILD
index 50cbf030c..f19b4a592 100644
--- a/user/aspell-dict-ta/APKBUILD
+++ b/user/aspell-dict-ta/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-ta
pkgver=20040424.1
_pkgver=${pkgver%.*}-${pkgver#*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Tamil dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/ta/aspell6-ta-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/ta/aspell6-ta-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-ta-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="8809948f25bf197207c3cbd865bf4c7e73cee552fd1518533d48fcabdc79c95765df253d9ef6c7f904748f24898f04acdeb64800ce9856ced8ccab086ddb664e aspell6-ta-20040424-1.tar.bz2"
diff --git a/user/aspell-dict-te/APKBUILD b/user/aspell-dict-te/APKBUILD
index fbd2bbef9..3440a9de2 100644
--- a/user/aspell-dict-te/APKBUILD
+++ b/user/aspell-dict-te/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-te
pkgver=0.01.2
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Telugu dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/te/aspell6-te-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/te/aspell6-te-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-te-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="09566d44de03e3e990f575d8e665bad9079f7bafec2474a6aa4a430a1ff71641dd4989d24bc5ecf3b19ca8c4f61b9365ea792b16f271c89bffaab159e8ed0129 aspell6-te-0.01-2.tar.bz2"
diff --git a/user/aspell-dict-tet/APKBUILD b/user/aspell-dict-tet/APKBUILD
index 392c24a62..17bcc1729 100644
--- a/user/aspell-dict-tet/APKBUILD
+++ b/user/aspell-dict-tet/APKBUILD
@@ -1,25 +1,25 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-tet
pkgver=0.1.1
pkgrel=0
pkgdesc="Tetum dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/tet/aspell5-tet-$pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/tet/aspell5-tet-$pkgver.tar.bz2"
builddir="$srcdir/aspell5-tet-$pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="6dc691b40cedd054a677197219f97ae5afc21bcf4820bf452d23963ae04a716bf7e38d1cff0eb050e13fd24fd2e8f3b0d24f9b19e7de3868faeca8aa16881802 aspell5-tet-0.1.1.tar.bz2"
diff --git a/user/aspell-dict-tk/APKBUILD b/user/aspell-dict-tk/APKBUILD
index f02b20fd0..2d74dab3f 100644
--- a/user/aspell-dict-tk/APKBUILD
+++ b/user/aspell-dict-tk/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-tk
pkgver=0.01.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Turkmen dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/tk/aspell5-tk-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/tk/aspell5-tk-$_pkgver.tar.bz2"
builddir="$srcdir/aspell5-tk-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="0a4a0c3be9b9322187677d47f56c091f6c3ae2662b8d6831e9fa2e18720277f76c79e9e0c65ee37474459a19dc5a99519af8492645b241cdc076775afc4a700f aspell5-tk-0.01-0.tar.bz2"
diff --git a/user/aspell-dict-tl/APKBUILD b/user/aspell-dict-tl/APKBUILD
index fefaf89ff..7c807f259 100644
--- a/user/aspell-dict-tl/APKBUILD
+++ b/user/aspell-dict-tl/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-tl
pkgver=0.4.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Tagalog dictionaries for aspell"
url=" " # no suitable website
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
+makedepends="cmd:which"
source="https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/tagalog-wordlist/aspell6-tl-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-tl-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="e9ad3e7e619ed19ffde923a07553c4930c60292a0e5592a68cf0e09d6f6d3b3b7ff74adb8f53e9255528c319c12ef442eff4e3b2ce169156d1664b5d565a7f5a aspell6-tl-0.4-0.tar.bz2"
diff --git a/user/aspell-dict-tn/APKBUILD b/user/aspell-dict-tn/APKBUILD
index 4a404b4da..59dac428f 100644
--- a/user/aspell-dict-tn/APKBUILD
+++ b/user/aspell-dict-tn/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-tn
pkgver=1.0.1.0
_pkgver=${pkgver%.*}-${pkgver#*.*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Setswana dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/tn/aspell5-tn-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/tn/aspell5-tn-$_pkgver.tar.bz2"
builddir="$srcdir/aspell5-tn-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="ff3258c3eec392f45b34ba7754bbd6af7ffa0ac812fc1743985fec301755be81387a3e567b36ff145a7a3f9b906e991efde8b4fafc33be14f07a581f4af111dc aspell5-tn-1.0.1-0.tar.bz2"
diff --git a/user/aspell-dict-tr/APKBUILD b/user/aspell-dict-tr/APKBUILD
index 6e32881a1..dabd85cf4 100644
--- a/user/aspell-dict-tr/APKBUILD
+++ b/user/aspell-dict-tr/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-tr
pkgver=0.50.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Turkish dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/tr/aspell-tr-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/tr/aspell-tr-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-tr-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="0054eef2089a916695b7501676d9cedb1d14defdea76deb01656a6a644b4e646db46470040227814f750e0d69dcc72b1023967eb7924b42ddcefd3d604709059 aspell-tr-0.50-0.tar.bz2"
diff --git a/user/aspell-dict-uk/APKBUILD b/user/aspell-dict-uk/APKBUILD
index d812753ad..0d585630c 100644
--- a/user/aspell-dict-uk/APKBUILD
+++ b/user/aspell-dict-uk/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-uk
pkgver=1.4.0.0
_pkgver=${pkgver%.*}-${pkgver#*.*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Ukrainian dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/uk/aspell6-uk-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/uk/aspell6-uk-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-uk-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="2e66465d17695dd3147241f13d611571f8a80a15886c69728d2f34019fb4834e56e4c0834d9e898927522b54d75f78a32dd3435b2c16eb86cf9cfa11070f0799 aspell6-uk-1.4.0-0.tar.bz2"
diff --git a/user/aspell-dict-uz/APKBUILD b/user/aspell-dict-uz/APKBUILD
index cc9e0b28a..0d288f76b 100644
--- a/user/aspell-dict-uz/APKBUILD
+++ b/user/aspell-dict-uz/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-uz
pkgver=0.6.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Uzbek dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/uz/aspell6-uz-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/uz/aspell6-uz-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-uz-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="0542a83c149ad761d8bb964be556bfb2387404fce21e0e38d3c0fa8efef2d1587db0fa80140cf7de72da7f08bbb807ff931a95bb63c2a84771a197f5841e545b aspell6-uz-0.6-0.tar.bz2"
diff --git a/user/aspell-dict-vi/APKBUILD b/user/aspell-dict-vi/APKBUILD
index 12a23ae79..e16b9199d 100644
--- a/user/aspell-dict-vi/APKBUILD
+++ b/user/aspell-dict-vi/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-vi
pkgver=0.01.1.1
_pkgver=${pkgver%.*}-${pkgver#*.*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Vietnamese dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/vi/aspell6-vi-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/vi/aspell6-vi-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-vi-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="d6b0a85ea3edf3193327f6df1b9c24947663fe711f060f10122e2c60aea2717d70277fd516fa685d9886c725baeebfc72d3f33e240ee8d182be669da716bb5c5 aspell6-vi-0.01.1-1.tar.bz2"
diff --git a/user/aspell-dict-wa/APKBUILD b/user/aspell-dict-wa/APKBUILD
index 35ed79b6b..fc0667e83 100644
--- a/user/aspell-dict-wa/APKBUILD
+++ b/user/aspell-dict-wa/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-wa
pkgver=0.50.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Walloon dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/wa/aspell-wa-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/wa/aspell-wa-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-wa-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="67e8fbb80a2622b921e28a37b978fc998713f7e281beccc921afd8e289ac76094f589e905da2e9386c585fcfae53179ca1e9b24a39c8a021cb3f2685461e3a8c aspell-wa-0.50-0.tar.bz2"
diff --git a/user/aspell-dict-yi/APKBUILD b/user/aspell-dict-yi/APKBUILD
index f3b55aaaa..9e3b25c77 100644
--- a/user/aspell-dict-yi/APKBUILD
+++ b/user/aspell-dict-yi/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-yi
pkgver=0.01.1.1
_pkgver=${pkgver%.*}-${pkgver#*.*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Yiddish dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/yi/aspell6-yi-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/yi/aspell6-yi-$_pkgver.tar.bz2"
builddir="$srcdir/aspell6-yi-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="a8d96ba192e61193469596ce1bf6e808bbb03e3fa3a75e545bdee4b6cfa607b681d0a9631465d004ce6e0e25453af732391e76b134138acc7c28991a3664f346 aspell6-yi-0.01.1-1.tar.bz2"
diff --git a/user/aspell-dict-zu/APKBUILD b/user/aspell-dict-zu/APKBUILD
index 6beb5fb89..8c9d2e1c8 100644
--- a/user/aspell-dict-zu/APKBUILD
+++ b/user/aspell-dict-zu/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell-dict-zu
pkgver=0.50.0
_pkgver=${pkgver%.*}-${pkgver#*.*.}
@@ -7,20 +7,20 @@ pkgrel=0
pkgdesc="Zulu dictionaries for aspell"
url="http://aspell.net"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="aspell"
-makedepends="debianutils-which"
-source="ftp://ftp.gnu.org/gnu/aspell/dict/zu/aspell-zu-$_pkgver.tar.bz2"
+makedepends="cmd:which"
+source="https://ftp.gnu.org/gnu/aspell/dict/zu/aspell-zu-$_pkgver.tar.bz2"
builddir="$srcdir/aspell-zu-$_pkgver"
build() {
- cd "$builddir"
- ./configure --vars DESTDIR="$pkgdir"
+ ./configure --vars DESTDIR="$pkgdir"
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
+
sha512sums="c79679a41e8aa1b80532c9eea0cf49c3a4bcdaa00f3d0d9e9f6eb7f4037992e40eaad0af711e5d5c29935afe6d0a2fb1c7b49dfdb2add07526a64cb2efac6ea9 aspell-zu-0.50-0.tar.bz2"
diff --git a/user/aspell/APKBUILD b/user/aspell/APKBUILD
index 88ab8a736..cd2775dca 100644
--- a/user/aspell/APKBUILD
+++ b/user/aspell/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Valery Kartel <valery.kartel@gmail.com>
-# Maintainer:
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=aspell
-pkgver=0.60.6.1
-pkgrel=15
+pkgver=0.60.8.1
+pkgrel=0
pkgdesc="Libre spell checker software"
url="http://aspell.net/"
arch="all"
@@ -12,14 +12,11 @@ makedepends="ncurses-dev perl"
provides="aspell-utils"
subpackages="$pkgname-compat::noarch $pkgname-dev $pkgname-doc
$pkgname-lang"
-source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz
- aspell-0.60.6.1-gcc7-fixes.patch
- "
+source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz"
-prepare() {
- default_prepare
- update_config_sub
-}
+# secfixes:
+# 0.60.8-r0:
+# - CVE-2019-17544
build() {
LIBS="-ltinfo" ./configure \
@@ -49,5 +46,4 @@ compat() {
mv spell ispell "$subpkgdir"/usr/bin/
}
-sha512sums="f310c7590be98406589b5c26ca36a2ecfe4733f0b40fd6c176b96b7955ef2b5cd0ec9a3d770cf132146ae7a896042b4b698945112995ee1ae66adcfa5542247f aspell-0.60.6.1.tar.gz
-7acdd483fa218952775282f42c28998b4901b1c70aeeef307835a205d1cde3fb2912898d08799ee596d744dde55d04e5c4905fb66d8bfa3028d1f5d45bb66d1e aspell-0.60.6.1-gcc7-fixes.patch"
+sha512sums="80fa9d7f5f4b8bf66388825ae28403713a2e3eda81fc31f2f452c3e2fe8349cd0fa8f0e4d0d3f8cffe215817229af25aa7be2dba358cb9cdc97e9d2834ba5ca7 aspell-0.60.8.1.tar.gz"
diff --git a/user/aspell/aspell-0.60.6.1-gcc7-fixes.patch b/user/aspell/aspell-0.60.6.1-gcc7-fixes.patch
deleted file mode 100644
index 4eb825a24..000000000
--- a/user/aspell/aspell-0.60.6.1-gcc7-fixes.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-commit 8089fa02122fed0a6394eba14bbedcb1d18e2384
-Author: Kevin Atkinson <kevina@gnu.org>
-Date: Thu Dec 29 00:50:31 2016 -0500
-
- Compile Fixes for GCC 7.
-
- Closes #519.
-
-diff --git a/modules/filter/tex.cpp b/modules/filter/tex.cpp
-index a979539..19ab63c 100644
---- a/modules/filter/tex.cpp
-+++ b/modules/filter/tex.cpp
-@@ -174,7 +174,7 @@ namespace {
-
- if (c == '{') {
-
-- if (top.in_what == Parm || top.in_what == Opt || top.do_check == '\0')
-+ if (top.in_what == Parm || top.in_what == Opt || *top.do_check == '\0')
- push_command(Parm);
-
- top.in_what = Parm;
-diff --git a/prog/check_funs.cpp b/prog/check_funs.cpp
-index db54f3d..89ee09d 100644
---- a/prog/check_funs.cpp
-+++ b/prog/check_funs.cpp
-@@ -647,7 +647,7 @@ static void print_truncate(FILE * out, const char * word, int width) {
- }
- }
- if (i == width-1) {
-- if (word == '\0')
-+ if (*word == '\0')
- put(out,' ');
- else if (word[len] == '\0')
- put(out, word, len);
diff --git a/user/assimp/05-remove-failing-x86-test.patch b/user/assimp/05-remove-failing-x86-test.patch
new file mode 100644
index 000000000..7b564b8b9
--- /dev/null
+++ b/user/assimp/05-remove-failing-x86-test.patch
@@ -0,0 +1,14 @@
+diff --git a/test/unit/utFastAtof.cpp b/test/unit/utFastAtof.cpp
+index ef1e722..ddd8fe9 100644
+--- a/test/unit/utFastAtof.cpp
++++ b/test/unit/utFastAtof.cpp
+@@ -184,7 +184,7 @@ struct FastAtofWrapper {
+ ai_real operator()(const char* str) { return Assimp::fast_atof(str); }
+ };
+
+-TEST_F(FastAtofTest, FastAtof)
++/*TEST_F(FastAtofTest, FastAtof)
+ {
+ RunTest<ai_real>(FastAtofWrapper());
+-}
++}*/
diff --git a/user/assimp/APKBUILD b/user/assimp/APKBUILD
new file mode 100644
index 000000000..da9d6cca1
--- /dev/null
+++ b/user/assimp/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Russ Webber <russ@rw.id.au>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=assimp
+pkgver=5.4.1
+pkgrel=0
+pkgdesc="Open Asset Import Library imports and exports 3D model formats"
+url="http://www.assimp.org/"
+arch="all" # FIXME: might fail to build on big-endian?
+license="BSD-3-Clause"
+depends=""
+makedepends="cmake minizip-dev zlib-dev"
+subpackages="$pkgname-dev"
+source="https://github.com/assimp/assimp/archive/v$pkgver/assimp-v$pkgver.tar.gz
+ 05-remove-failing-x86-test.patch
+ "
+
+build() {
+ cmake -B build \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DASSIMP_BUILD_TESTS=True
+ make -C build
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
+}
+
+package() {
+ make -C build DESTDIR="$pkgdir" install
+ rm -vf "$pkgdir"/usr/lib/libIrrXML.a
+}
+sha512sums="980db331ca39950359db116d36968b87f5fea4b470be52960dd983e2ec232e019cae754819182b63a095a13b1d98364d64bd02ac29db1ea4f627d095a03da742 assimp-v5.4.1.tar.gz
+bfb321b8493b2ef8c35ab0627173d0f1754519e9bae6f6c59cc164aaf91a07d8ae382fbc92550cfab6f52502565390ba22b7478efa5bba008eec0aa075c5e7d1 05-remove-failing-x86-test.patch"
diff --git a/user/astyle/APKBUILD b/user/astyle/APKBUILD
new file mode 100644
index 000000000..bd4fc923c
--- /dev/null
+++ b/user/astyle/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=astyle
+pkgver=3.1
+pkgrel=0
+pkgdesc="Automatic code formatting library"
+url="https://astyle.sourceforge.net/"
+arch="all"
+options="!check" # No test suite.
+license="MIT"
+depends=""
+makedepends=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://downloads.sourceforge.net/astyle/astyle_${pkgver}_linux.tar.gz
+ limits.patch
+ "
+builddir="$srcdir"/$pkgname
+
+build() {
+ make -C build/gcc shared
+}
+
+package() {
+ mkdir -p "$pkgdir"/usr/lib "$pkgdir"/usr/include \
+ "$pkgdir"/usr/share/doc/astyle-$pkgver
+ install -m644 build/gcc/bin/libastyle.so* "$pkgdir"/usr/lib/
+ _soname=$(ls build/gcc/bin)
+ ln -s $_soname "$pkgdir"/usr/lib/libastyle.so
+ install -m644 src/astyle.h "$pkgdir"/usr/include/
+ install -D -m644 doc/* "$pkgdir"/usr/share/doc/astyle-$pkgver/
+}
+
+sha512sums="2e8f13d291abda66bbba30174c364c81a81a490e0a21376f7da7cf471644c22caa37b9eefb100d093bf26d1a8bfa9d2f14b4c2a9b75b3cb84428b4514e277ff2 astyle_3.1_linux.tar.gz
+a5bc2d90cbd803219e7a5ff4078ff07ffec407eb31b7694aca089bd4884b8a9e63568974e7583a6981bca78c3ed5a34710fff2c2193f80c972ba5d9dde0f06d0 limits.patch"
diff --git a/user/astyle/limits.patch b/user/astyle/limits.patch
new file mode 100644
index 000000000..9853819f4
--- /dev/null
+++ b/user/astyle/limits.patch
@@ -0,0 +1,12 @@
+PATH_MAX is not defined unless we pull in <limits.h> on musl.
+
+--- astyle/src/astyle_main.cpp.old 2018-01-11 17:18:19.000000000 +0000
++++ astyle/src/astyle_main.cpp 2020-07-19 20:23:56.774222078 +0000
+@@ -37,6 +37,7 @@
+
+ #include <algorithm>
+ #include <cerrno>
++#include <climits>
+ #include <clocale> // needed by some compilers
+ #include <cstdlib>
+ #include <fstream>
diff --git a/user/at-spi2-atk/APKBUILD b/user/at-spi2-atk/APKBUILD
index 4f328d84f..85a16db16 100644
--- a/user/at-spi2-atk/APKBUILD
+++ b/user/at-spi2-atk/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer:
pkgname=at-spi2-atk
-pkgver=2.32.0
+pkgver=2.38.0
pkgrel=0
pkgdesc="GTK+ module to bridge ATK to D-Bus at-spi"
url="https://wiki.linuxfoundation.org/accessibility/d-bus"
@@ -15,26 +15,17 @@ makedepends="$depends_dev at-spi2-core-dev glib-dev intltool libxml2-dev meson
subpackages="$pkgname-dev"
source="https://download.gnome.org/sources/at-spi2-atk/${pkgver%.*}/at-spi2-atk-$pkgver.tar.xz"
-prepare() {
- cd "$builddir"
- default_prepare
- mkdir _build
-}
-
build() {
- cd "$builddir"/_build
- meson -Dprefix=/usr
- ninja
+ meson -Dprefix=/usr build
+ ninja -C build
}
check() {
- cd "$builddir"/_build
- ninja test
+ ninja -C build test
}
package() {
- cd "$builddir"/_build
- DESTDIR="$pkgdir" ninja install
+ DESTDIR="$pkgdir" ninja -C build install
}
-sha512sums="095ceaa33d5b35f1f4f81a31bea00487c054493cb29d4fdbcf74331ec8d1b9570dc7cb93e1cc06da9ea3f5805e7a3a9e7bf80cfdbce86a1822c2a46327109393 at-spi2-atk-2.32.0.tar.xz"
+sha512sums="2f40ecbc55b0fbaa57ade952a75583bc8fbfde234cce9248489e9ae06e0597d98c2f4c77d8279758dec29da97e06cde5708d30a1238d91bebd023b2320f38528 at-spi2-atk-2.38.0.tar.xz"
diff --git a/user/at-spi2-core/APKBUILD b/user/at-spi2-core/APKBUILD
index edd3dd5f3..66b2ebcac 100644
--- a/user/at-spi2-core/APKBUILD
+++ b/user/at-spi2-core/APKBUILD
@@ -1,34 +1,29 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer:
pkgname=at-spi2-core
-pkgver=2.32.1
+pkgver=2.38.0
pkgrel=0
pkgdesc="Protocol definitions and daemon for D-Bus at-spi"
url="https://wiki.linuxfoundation.org/accessibility/d-bus"
arch="all"
options="!check" # Requires running at-spi2 daemon.
license="LGPL-2.0+"
-depends=""
-depends_dev="libxtst-dev"
-makedepends="$depends_dev dbus-dev glib-dev intltool gobject-introspection-dev
- dbus meson ninja"
+depends="gobject-introspection"
+makedepends="dbus-dev glib-dev gobject-introspection-dev libxtst-dev meson ninja"
subpackages="$pkgname-dev $pkgname-lang"
source="https://download.gnome.org/sources/at-spi2-core/${pkgver%.*}/at-spi2-core-$pkgver.tar.xz"
build() {
- cd "$builddir"
- meson --prefix=/usr builddir/
+ meson -Dprefix=/usr builddir/
ninja -C builddir/
}
check() {
- cd "$builddir"
ninja -C builddir/ test
}
package() {
- cd "$builddir"
DESTDIR="$pkgdir" ninja -C builddir/ install
}
-sha512sums="cec6ea1426b25d9738c5c401a1038b39e04b1e989b7ef8e02590d117b35cfb253b260cc6e41b09e10e007801fedcb7702c48ba7f3a0c7b6c1f16edd4e8ad0cca at-spi2-core-2.32.1.tar.xz"
+sha512sums="3a1eb27cff6e0dd03119b4f8361a3b6037b26c511e80e2d003d1d5c41fede6d49eb5e0ac1ee45cfb4f3ca8e53292a7e2da67df80be28e77014775e41777a96c1 at-spi2-core-2.38.0.tar.xz"
diff --git a/user/atf/APKBUILD b/user/atf/APKBUILD
new file mode 100644
index 000000000..1c8fc1a64
--- /dev/null
+++ b/user/atf/APKBUILD
@@ -0,0 +1,34 @@
+# Maintainer:
+pkgname=atf
+pkgver=0.21
+pkgrel=1
+pkgdesc="Automated Testing Framework"
+url="https://github.com/jmmv/atf"
+arch="all"
+license="BSD-2-Clause AND BSD-3-Clause"
+depends=""
+makedepends=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/jmmv/atf/releases/download/atf-$pkgver/atf-$pkgver.tar.gz"
+builddir="$srcdir/atf-$pkgver"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="9b4b67d7d0d1f65cc9571d38c67dfc620b08ff7c0abf57d87bcae54055b4af21f95f3363f2cf8ee9b13b89a5351bc58669b784a0fd8c1beb0664c14933c10ce1 atf-0.21.tar.gz"
diff --git a/user/atk/APKBUILD b/user/atk/APKBUILD
index c87c8dfd7..e4829b041 100644
--- a/user/atk/APKBUILD
+++ b/user/atk/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=atk
-pkgver=2.32.0
+pkgver=2.36.0
pkgrel=0
pkgdesc="A library providing a set of interfaces for accessibility"
url="https://www.gtk.org/"
@@ -11,26 +11,17 @@ makedepends="glib-dev gobject-introspection-dev gtk-doc meson musl-utils ninja"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz"
-prepare() {
- cd "$builddir"
- default_prepare
- mkdir _build
-}
-
build() {
- cd "$builddir"/_build
- meson -Dprefix=/usr -Dintrospection=true -Ddocs=true
- ninja
+ meson -Dprefix=/usr -Dintrospection=true -Ddocs=true build
+ ninja -C build
}
check() {
- cd "$builddir"/_build
- ninja test
+ ninja -C build test
}
package() {
- cd "$builddir"/_build
- DESTDIR="$pkgdir" ninja install
+ DESTDIR="$pkgdir" ninja -C build install
}
-sha512sums="8cd2a3ee006f21835f3e564f2e1de4ae61bd9529b4c0b4f2e3ece88e905e2dd36b67affb089f41582806a1397576602a526a4b8698303708894f20af97ecac22 atk-2.32.0.tar.xz"
+sha512sums="d0f18204eaf96511e8448e3dfbc4b6953a7cf8b816151fb7caf5592cf578572b1cdb16836fe2157b11e3ad018ef171f1ca1bfdf255bb31bb455716d7519fd634 atk-2.36.0.tar.xz"
diff --git a/user/atkmm/APKBUILD b/user/atkmm/APKBUILD
index cbf9d21de..9fc24bbef 100644
--- a/user/atkmm/APKBUILD
+++ b/user/atkmm/APKBUILD
@@ -1,37 +1,35 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=atkmm
-pkgver=2.28.0
+pkgver=2.28.3
pkgrel=0
pkgdesc="C++ interfaces to ATK"
url="https://gnome.org"
arch="all"
license="LGPL-2.1+"
depends=""
-makedepends="glibmm-dev atk-dev"
+makedepends="atk-dev doxygen glibmm-dev graphviz meson ninja libxslt"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.gnome.org/sources/atkmm/${pkgver%.*}/atkmm-$pkgver.tar.xz"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
+ meson \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var
- make
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ -Dbuild-documentation=true \
+ . output
+ ninja -C output
}
check() {
- cd "$builddir"
- make check
+ ninja -C output test
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" ninja -C output install
}
-
-sha512sums="8457cff58648c3d3944d6a9fb400062985c70a714856a5d84d4553cb6b1202bdc47aa48c612851fea1cc1b7ab59381116c65d2a22212907e3c4b7090601946bc atkmm-2.28.0.tar.xz"
+sha512sums="ebc25e9de4b9de6df7097ab485fb0675d8c83113d99a444eec91df0908073362bfdaa9b03fc4c3e91766109d9b94b88df041851176ecde578cf932b526ef678e atkmm-2.28.3.tar.xz"
diff --git a/user/atril/APKBUILD b/user/atril/APKBUILD
index 4d2996967..12e577e07 100644
--- a/user/atril/APKBUILD
+++ b/user/atril/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=atril
-pkgver=1.22.0
+pkgver=1.26.1
pkgrel=0
pkgdesc="Document viewer for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -11,13 +11,21 @@ license="GPL-2.0+ AND Afmparse AND Info-ZIP AND libtiff AND LGPL-2.0+ AND MIT AN
depends=""
makedepends="caja-dev djvulibre-dev gobject-introspection-dev gtk+3.0-dev
intltool itstool libgxps-dev libsecret-dev libsm-dev libspectre-dev
- libxml2-dev libxml2-utils poppler-dev python3 tiff-dev"
-subpackages="$pkgname-dev $pkgname-doc"
-source="https://pub.mate-desktop.org/releases/1.22/atril-$pkgver.tar.xz"
+ libxml2-dev libxml2-utils poppler-dev python3 tiff-dev
+ wayland-protocols"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/atril-$pkgver.tar.xz
+ "
+
+# secfixes:
+# 1.22.1-r1:
+# - CVE-2019-1010006
+# 1.22.1-r2:
+# - CVE-2019-11459
build() {
- cd "$builddir"
./configure \
+ --disable-maintainer-mode \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -27,18 +35,18 @@ build() {
--enable-introspection \
--enable-pixbuf \
--enable-comics \
- --enable-xps
+ --enable-xps \
+ --enable-epub \
+ --disable-synctex
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="bf940178647c348fd78e828bcb3a55c4ff6195d4020bf198ae5ba4a96e2fe582f7e30fb9d4cde4143e82ae783358373d3a9fd68413295586da9fe1b374e2f034 atril-1.22.0.tar.xz"
+sha512sums="276e80a81234f3228065f3a804fbd8a306ac948978f3dfd233f678dc4fb6f833ebd1123950996ae08869fac112ebb0d2785ab60fde6bfddd2d2c407a2c991ea3 atril-1.26.1.tar.xz"
diff --git a/user/attica/APKBUILD b/user/attica/APKBUILD
index c3a1bc8f6..98c049d5e 100644
--- a/user/attica/APKBUILD
+++ b/user/attica/APKBUILD
@@ -1,22 +1,19 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=attica
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Qt 5-based implementation of Open Collaboration Services"
url="https://www.kde.org/"
arch="all"
license="LGPL-2.1-only"
depends=""
-depends_dev="qt5-qtbase-dev"
-makedepends="$depends_dev cmake extra-cmake-modules doxygen graphviz
+makedepends="cmake extra-cmake-modules doxygen graphviz qt5-qtbase-dev
qt5-qttools-dev"
-install=""
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/attica-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +25,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="f278423e5bcbd1899d6c41caceee740e3caee01dd1af20303827ec5a807e262e560b068dcb6619f5410ebe815b71b1244ccc453c49956c3bfd1452a88ecf5b18 attica-5.54.0.tar.xz"
+sha512sums="0c5dd2495f43b2cd4e7bd431619af249a767e5f7add913889dffcf64dc5ef8c4551e789a3a2b1850bb7c4a544144921d562e62580f0ff257b0291521dfdddf56 attica-5.94.0.tar.xz"
diff --git a/user/audacious-plugins/APKBUILD b/user/audacious-plugins/APKBUILD
index a147b9183..8200310e5 100644
--- a/user/audacious-plugins/APKBUILD
+++ b/user/audacious-plugins/APKBUILD
@@ -1,8 +1,6 @@
-# Contributor: Łukasz Jendrysik <scadu@yandex.com>
-# Contributor: William Pitcock <nenolod@dereferenced.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=audacious-plugins
-pkgver=3.10.1
+pkgver=4.0.5
pkgrel=0
pkgdesc="Playlist-oriented media player (plugins)"
url="https://audacious-media-player.org/"
@@ -10,8 +8,7 @@ arch="all"
options="!check" # No test suite
license="ISC"
depends="audacious"
-install_if="audacious=$pkgver"
-makedepends="audacious-dev>=${pkgver%.*}
+makedepends="audacious-dev>=${pkgver%.*} autoconf automake
alsa-lib-dev curl-dev dbus-glib-dev faad2-dev ffmpeg-dev flac-dev
fluidsynth-dev lame-dev libcddb-dev libcdio-dev libcdio-paranoia-dev
libcue-dev libguess-dev libmodplug-dev libmms-dev libmowgli-dev
@@ -19,14 +16,9 @@ makedepends="audacious-dev>=${pkgver%.*}
libxcomposite-dev libxml2-dev mpg123-dev neon-dev pulseaudio-dev
qt5-qtmultimedia-dev sdl-dev wavpack-dev"
subpackages="$pkgname-lang"
+install_if="audacious=$pkgver"
source="https://distfiles.audacious-media-player.org/$pkgname-$pkgver.tar.bz2"
-prepare() {
- default_prepare
- msg "Rebuilding configure..."
- aclocal -I m4 && autoheader && autoconf
-}
-
build() {
./configure \
--build=$CBUILD \
@@ -44,4 +36,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="454e9ce4061e92a0ecda40f562d4cc7453fc0019fd76b25dbe9e319319fa37c22f9785cb29563e8074de8a88e6130106aca1e431790297e1b4636dc974fde565 audacious-plugins-3.10.1.tar.bz2"
+sha512sums="90ab2edbfc797fa835aae9937b5f478a0ca575f31c443d9e8ba7394e1615f605beb417372872874c94d4f804dba7bea9fbae2078e162178386683d8a3e36c108 audacious-plugins-4.0.5.tar.bz2"
diff --git a/user/audacious/APKBUILD b/user/audacious/APKBUILD
index d671e395d..aa5838289 100644
--- a/user/audacious/APKBUILD
+++ b/user/audacious/APKBUILD
@@ -1,25 +1,18 @@
-# Contributor: Łukasz Jendrysik <scadu@yandex.com>
-# Contributor: William Pitcock <nenolod@dereferenced.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=audacious
-pkgver=3.10.1
+pkgver=4.0.5
pkgrel=0
pkgdesc="A playlist-oriented media player with multiple interfaces"
url="https://audacious-media-player.org/"
arch="all"
options="!check" # No test suite.
license="ISC"
+depends=""
depends_dev="qt5-qtbase-dev dbus-glib-dev"
-makedepends="$depends_dev libguess-dev>=1.2 libxml2-dev autoconf automake"
+makedepends="$depends_dev libguess-dev>=1.2 libxml2-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://distfiles.audacious-media-player.org/$pkgname-$pkgver.tar.bz2"
-prepare() {
- default_prepare
- msg "Rebuilding configure..."
- aclocal -I m4 && autoheader && autoconf
-}
-
build() {
./configure \
--build=$CBUILD \
@@ -36,4 +29,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="e88891caaa3897f9b4abf39136e20834aedf1287d0d5eefea392fda89050db8db00c6f363976a68fe250ddbae4e27590f7615916a76370a44ca9235f1fa60b43 audacious-3.10.1.tar.bz2"
+sha512sums="4be7ebeee937f9b29931a28e1d80782b9df8beec70eab3917f5adccd0bf02aa6003a5b8361359b792edac2d2f31a257b853db43d59dd0674e5a3fbec7e7c1e46 audacious-4.0.5.tar.bz2"
diff --git a/user/audiofile/APKBUILD b/user/audiofile/APKBUILD
index 4744d3297..904fea5d0 100644
--- a/user/audiofile/APKBUILD
+++ b/user/audiofile/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=audiofile
pkgver=0.3.6
-pkgrel=0
+pkgrel=1
pkgdesc="Library for reading and writing audio files in many formats"
url="https://audiofile.68k.org"
arch="all"
@@ -12,7 +12,16 @@ depends_dev="flac-dev"
makedepends="$depends_dev alsa-lib-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://audiofile.68k.org/audiofile-$pkgver.tar.gz
- tests-unsigned-gcc6.patch"
+ tests-unsigned-gcc6.patch
+
+ CVE-2015-7747.patch
+ CVE-2017-6827,6828,6832,6833,6835,6837.patch
+ CVE-2017-6829.patch
+ CVE-2017-6830,6834,6836,6838.patch
+ CVE-2017-6831.patch
+ CVE-2017-6839.patch
+ CVE-2018-13440,17095.patch
+ "
prepare() {
default_prepare
@@ -20,7 +29,6 @@ prepare() {
}
build() {
- cd "$builddir"
export CXXFLAGS="$CXXFLAGS -fpermissive"
./configure \
--build=$CBUILD \
@@ -33,14 +41,19 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
sha512sums="f9a1182d93e405c21eba79c5cc40962347bff13f1b3b732d9a396e3d1675297515188bd6eb43033aaa00e9bde74ff4628c1614462456529cabba464f03c1d5fa audiofile-0.3.6.tar.gz
-b85546eaccf0911fb2f5ba26c323ea2c0b18cae7d7476d5ac9e821c90097f331e3391b787f390d130382fffb6b777887344f914489ca1bc0a3974f1ebe16e328 tests-unsigned-gcc6.patch"
+b85546eaccf0911fb2f5ba26c323ea2c0b18cae7d7476d5ac9e821c90097f331e3391b787f390d130382fffb6b777887344f914489ca1bc0a3974f1ebe16e328 tests-unsigned-gcc6.patch
+7673ab3fafdb0dac514a42622f53ea17aa56836c76413e5680c475537e195c53df21f26da1bd4e7941df2dc8b33a471ab52d539dabffbaef8bc95ee59951e7fe CVE-2015-7747.patch
+880392c89e0f5982ceb3f56b32da7f28217df64dedf588eb2a72616367f77813b34f3f12092d0b05818247da8e411de8fded336fe09413e81184e98546489b3a CVE-2017-6827,6828,6832,6833,6835,6837.patch
+e7afe1a27566fb593ea53176256df23e447a2ee842cb4168930dec365fdabe7f2f43512d81bca5f14336ef0c756f6006c24948a3c2d79baafb0042ed8a145aae CVE-2017-6829.patch
+3b870602fab366015de6dc2f3cf83eae90a4113e2c18e843494c3a75744730f41aefd99547ea758cef194d921a7fc66024b1b9ffbf0bbe6614693453cce09e99 CVE-2017-6830,6834,6836,6838.patch
+51c92ce66e987ae1d4bda65247134097705ef45cf7670401af7943bf6bbfc674089bcfafa49983046b10573ea72900adb96c296739c234d5e98539098eebe022 CVE-2017-6831.patch
+88603061ffe607910d0c73b88c2a305134d6ea4d51dadb6a33163d24c7dd3ab091e7f32c8549fec442c4898a2d6ba91da209973d002c47342645d82d3957a0f0 CVE-2017-6839.patch
+b90684b8e8082acd84f40ec8da83a6f2a2280e71be873055829d4555377454797446f4f5f77c7a9cda7aa4450f1647370a16e2284b5b7777eb86da4ff7d1e336 CVE-2018-13440,17095.patch"
diff --git a/user/audiofile/CVE-2015-7747.patch b/user/audiofile/CVE-2015-7747.patch
new file mode 100644
index 000000000..332563959
--- /dev/null
+++ b/user/audiofile/CVE-2015-7747.patch
@@ -0,0 +1,156 @@
+Description: fix buffer overflow when changing both sample format and
+ number of channels
+Origin: https://github.com/mpruett/audiofile/pull/25
+Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/audiofile/+bug/1502721
+Bug-Debian: https://bugs.debian.org/801102
+
+--- a/libaudiofile/modules/ModuleState.cpp
++++ b/libaudiofile/modules/ModuleState.cpp
+@@ -402,7 +402,7 @@ status ModuleState::arrange(AFfilehandle
+ addModule(new Transform(outfc, in.pcm, out.pcm));
+
+ if (in.channelCount != out.channelCount)
+- addModule(new ApplyChannelMatrix(infc, isReading,
++ addModule(new ApplyChannelMatrix(outfc, isReading,
+ in.channelCount, out.channelCount,
+ in.pcm.minClip, in.pcm.maxClip,
+ track->channelMatrix));
+--- a/test/Makefile.am
++++ b/test/Makefile.am
+@@ -26,6 +26,7 @@ TESTS = \
+ VirtualFile \
+ floatto24 \
+ query2 \
++ sixteen-stereo-to-eight-mono \
+ sixteen-to-eight \
+ testchannelmatrix \
+ testdouble \
+@@ -139,6 +140,7 @@ printmarkers_SOURCES = printmarkers.c
+ printmarkers_LDADD = $(LIBAUDIOFILE) -lm
+
+ sixteen_to_eight_SOURCES = sixteen-to-eight.c TestUtilities.cpp TestUtilities.h
++sixteen_stereo_to_eight_mono_SOURCES = sixteen-stereo-to-eight-mono.c TestUtilities.cpp TestUtilities.h
+
+ testchannelmatrix_SOURCES = testchannelmatrix.c TestUtilities.cpp TestUtilities.h
+
+--- /dev/null
++++ b/test/sixteen-stereo-to-eight-mono.c
+@@ -0,0 +1,118 @@
++/*
++ Audio File Library
++
++ Copyright 2000, Silicon Graphics, Inc.
++
++ This program is free software; you can redistribute it and/or modify
++ it under the terms of the GNU General Public License as published by
++ the Free Software Foundation; either version 2 of the License, or
++ (at your option) any later version.
++
++ This program is distributed in the hope that it will be useful,
++ but WITHOUT ANY WARRANTY; without even the implied warranty of
++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ GNU General Public License for more details.
++
++ You should have received a copy of the GNU General Public License along
++ with this program; if not, write to the Free Software Foundation, Inc.,
++ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
++*/
++
++/*
++ sixteen-stereo-to-eight-mono.c
++
++ This program tests the conversion from 2-channel 16-bit integers to
++ 1-channel 8-bit integers.
++*/
++
++#ifdef HAVE_CONFIG_H
++#include <config.h>
++#endif
++
++#include <stdint.h>
++#include <stdio.h>
++#include <stdlib.h>
++#include <string.h>
++#include <unistd.h>
++#include <limits.h>
++
++#include <audiofile.h>
++
++#include "TestUtilities.h"
++
++int main (int argc, char **argv)
++{
++ AFfilehandle file;
++ AFfilesetup setup;
++ int16_t frames16[] = {14298, 392, 3923, -683, 958, -1921};
++ int8_t frames8[] = {28, 6, -2};
++ int i, frameCount = 3;
++ int8_t byte;
++ AFframecount result;
++
++ setup = afNewFileSetup();
++
++ afInitFileFormat(setup, AF_FILE_WAVE);
++
++ afInitSampleFormat(setup, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 16);
++ afInitChannels(setup, AF_DEFAULT_TRACK, 2);
++
++ char *testFileName;
++ if (!createTemporaryFile("sixteen-to-eight", &testFileName))
++ {
++ fprintf(stderr, "Could not create temporary file.\n");
++ exit(EXIT_FAILURE);
++ }
++
++ file = afOpenFile(testFileName, "w", setup);
++ if (file == AF_NULL_FILEHANDLE)
++ {
++ fprintf(stderr, "could not open file for writing\n");
++ exit(EXIT_FAILURE);
++ }
++
++ afFreeFileSetup(setup);
++
++ afWriteFrames(file, AF_DEFAULT_TRACK, frames16, frameCount);
++
++ afCloseFile(file);
++
++ file = afOpenFile(testFileName, "r", AF_NULL_FILESETUP);
++ if (file == AF_NULL_FILEHANDLE)
++ {
++ fprintf(stderr, "could not open file for reading\n");
++ exit(EXIT_FAILURE);
++ }
++
++ afSetVirtualSampleFormat(file, AF_DEFAULT_TRACK, AF_SAMPFMT_TWOSCOMP, 8);
++ afSetVirtualChannels(file, AF_DEFAULT_TRACK, 1);
++
++ for (i=0; i<frameCount; i++)
++ {
++ /* Read one frame. */
++ result = afReadFrames(file, AF_DEFAULT_TRACK, &byte, 1);
++
++ if (result != 1)
++ break;
++
++ /* Compare the byte read with its precalculated value. */
++ if (memcmp(&byte, &frames8[i], 1) != 0)
++ {
++ printf("error\n");
++ printf("expected %d, got %d\n", frames8[i], byte);
++ exit(EXIT_FAILURE);
++ }
++ else
++ {
++#ifdef DEBUG
++ printf("got what was expected: %d\n", byte);
++#endif
++ }
++ }
++
++ afCloseFile(file);
++ unlink(testFileName);
++ free(testFileName);
++
++ exit(EXIT_SUCCESS);
++}
diff --git a/user/audiofile/CVE-2017-6827,6828,6832,6833,6835,6837.patch b/user/audiofile/CVE-2017-6827,6828,6832,6833,6835,6837.patch
new file mode 100644
index 000000000..0465a1f59
--- /dev/null
+++ b/user/audiofile/CVE-2017-6827,6828,6832,6833,6835,6837.patch
@@ -0,0 +1,34 @@
+From c48e4c6503f7dabd41f11d4c9c7b7f8960e7f2c0 Mon Sep 17 00:00:00 2001
+From: Antonio Larrosa <larrosa@kde.org>
+Date: Mon, 6 Mar 2017 12:51:22 +0100
+Subject: [PATCH 1/3] Always check the number of coefficients
+
+When building the library with NDEBUG, asserts are eliminated
+so it's better to always check that the number of coefficients
+is inside the array range.
+
+This fixes the 00191-audiofile-indexoob issue in #41
+---
+ libaudiofile/WAVE.cpp | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/libaudiofile/WAVE.cpp b/libaudiofile/WAVE.cpp
+index 0e81cf7..61f9541 100644
+--- a/libaudiofile/WAVE.cpp
++++ b/libaudiofile/WAVE.cpp
+@@ -281,6 +281,12 @@ status WAVEFile::parseFormat(const Tag &id, uint32_t size)
+
+ /* numCoefficients should be at least 7. */
+ assert(numCoefficients >= 7 && numCoefficients <= 255);
++ if (numCoefficients < 7 || numCoefficients > 255)
++ {
++ _af_error(AF_BAD_HEADER,
++ "Bad number of coefficients");
++ return AF_FAIL;
++ }
+
+ m_msadpcmNumCoefficients = numCoefficients;
+
+--
+2.36.1
+
diff --git a/user/audiofile/CVE-2017-6829.patch b/user/audiofile/CVE-2017-6829.patch
new file mode 100644
index 000000000..c1047af06
--- /dev/null
+++ b/user/audiofile/CVE-2017-6829.patch
@@ -0,0 +1,33 @@
+From: Antonio Larrosa <larrosa@kde.org>
+Date: Mon, 6 Mar 2017 18:02:31 +0100
+Subject: clamp index values to fix index overflow in IMA.cpp
+
+This fixes #33
+(also reported at https://bugzilla.opensuse.org/show_bug.cgi?id=1026981
+and https://blogs.gentoo.org/ago/2017/02/20/audiofile-global-buffer-overflow-in-decodesample-ima-cpp/)
+---
+ libaudiofile/modules/IMA.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libaudiofile/modules/IMA.cpp b/libaudiofile/modules/IMA.cpp
+index 7476d44..df4aad6 100644
+--- a/libaudiofile/modules/IMA.cpp
++++ b/libaudiofile/modules/IMA.cpp
+@@ -169,7 +169,7 @@ int IMA::decodeBlockWAVE(const uint8_t *encoded, int16_t *decoded)
+ if (encoded[1] & 0x80)
+ m_adpcmState[c].previousValue -= 0x10000;
+
+- m_adpcmState[c].index = encoded[2];
++ m_adpcmState[c].index = clamp(encoded[2], 0, 88);
+
+ *decoded++ = m_adpcmState[c].previousValue;
+
+@@ -210,7 +210,7 @@ int IMA::decodeBlockQT(const uint8_t *encoded, int16_t *decoded)
+ predictor -= 0x10000;
+
+ state.previousValue = clamp(predictor, MIN_INT16, MAX_INT16);
+- state.index = encoded[1] & 0x7f;
++ state.index = clamp(encoded[1] & 0x7f, 0, 88);
+ encoded += 2;
+
+ for (int n=0; n<m_framesPerPacket; n+=2)
diff --git a/user/audiofile/CVE-2017-6830,6834,6836,6838.patch b/user/audiofile/CVE-2017-6830,6834,6836,6838.patch
new file mode 100644
index 000000000..eae11b27b
--- /dev/null
+++ b/user/audiofile/CVE-2017-6830,6834,6836,6838.patch
@@ -0,0 +1,70 @@
+From 7d65f89defb092b63bcbc5d98349fb222ca73b3c Mon Sep 17 00:00:00 2001
+From: Antonio Larrosa <larrosa@kde.org>
+Date: Mon, 6 Mar 2017 13:54:52 +0100
+Subject: [PATCH 3/3] Check for multiplication overflow in sfconvert
+
+Checks that a multiplication doesn't overflow when
+calculating the buffer size, and if it overflows,
+reduce the buffer size instead of failing.
+
+This fixes the 00192-audiofile-signintoverflow-sfconvert case
+in #41
+---
+ sfcommands/sfconvert.c | 34 ++++++++++++++++++++++++++++++++--
+ 1 file changed, 32 insertions(+), 2 deletions(-)
+
+diff --git a/sfcommands/sfconvert.c b/sfcommands/sfconvert.c
+index 80a1bc4..970a3e4 100644
+--- a/sfcommands/sfconvert.c
++++ b/sfcommands/sfconvert.c
+@@ -45,6 +45,33 @@ void printusage (void);
+ void usageerror (void);
+ bool copyaudiodata (AFfilehandle infile, AFfilehandle outfile, int trackid);
+
++int firstBitSet(int x)
++{
++ int position=0;
++ while (x!=0)
++ {
++ x>>=1;
++ ++position;
++ }
++ return position;
++}
++
++#ifndef __has_builtin
++#define __has_builtin(x) 0
++#endif
++
++int multiplyCheckOverflow(int a, int b, int *result)
++{
++#if (defined __GNUC__ && __GNUC__ >= 5) || ( __clang__ && __has_builtin(__builtin_mul_overflow))
++ return __builtin_mul_overflow(a, b, result);
++#else
++ if (firstBitSet(a)+firstBitSet(b)>31) // int is signed, so we can't use 32 bits
++ return true;
++ *result = a * b;
++ return false;
++#endif
++}
++
+ int main (int argc, char **argv)
+ {
+ if (argc == 2)
+@@ -323,8 +350,11 @@ bool copyaudiodata (AFfilehandle infile, AFfilehandle outfile, int trackid)
+ {
+ int frameSize = afGetVirtualFrameSize(infile, trackid, 1);
+
+- const int kBufferFrameCount = 65536;
+- void *buffer = malloc(kBufferFrameCount * frameSize);
++ int kBufferFrameCount = 65536;
++ int bufferSize;
++ while (multiplyCheckOverflow(kBufferFrameCount, frameSize, &bufferSize))
++ kBufferFrameCount /= 2;
++ void *buffer = malloc(bufferSize);
+
+ AFframecount totalFrames = afGetFrameCount(infile, AF_DEFAULT_TRACK);
+ AFframecount totalFramesWritten = 0;
+--
+2.36.1
+
diff --git a/user/audiofile/CVE-2017-6831.patch b/user/audiofile/CVE-2017-6831.patch
new file mode 100644
index 000000000..50cd3dc9a
--- /dev/null
+++ b/user/audiofile/CVE-2017-6831.patch
@@ -0,0 +1,36 @@
+From: Antonio Larrosa <larrosa@kde.org>
+Date: Mon, 6 Mar 2017 18:59:26 +0100
+Subject: Actually fail when error occurs in parseFormat
+
+When there's an unsupported number of bits per sample or an invalid
+number of samples per block, don't only print an error message using
+the error handler, but actually stop parsing the file.
+
+This fixes #35 (also reported at
+https://bugzilla.opensuse.org/show_bug.cgi?id=1026983 and
+https://blogs.gentoo.org/ago/2017/02/20/audiofile-heap-based-buffer-overflow-in-imadecodeblockwave-ima-cpp/
+)
+---
+ libaudiofile/WAVE.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/libaudiofile/WAVE.cpp b/libaudiofile/WAVE.cpp
+index 0fc48e8..d04b796 100644
+--- a/libaudiofile/WAVE.cpp
++++ b/libaudiofile/WAVE.cpp
+@@ -332,6 +332,7 @@ status WAVEFile::parseFormat(const Tag &id, uint32_t size)
+ {
+ _af_error(AF_BAD_NOT_IMPLEMENTED,
+ "IMA ADPCM compression supports only 4 bits per sample");
++ return AF_FAIL;
+ }
+
+ int bytesPerBlock = (samplesPerBlock + 14) / 8 * 4 * channelCount;
+@@ -339,6 +340,7 @@ status WAVEFile::parseFormat(const Tag &id, uint32_t size)
+ {
+ _af_error(AF_BAD_CODEC_CONFIG,
+ "Invalid samples per block for IMA ADPCM compression");
++ return AF_FAIL;
+ }
+
+ track->f.sampleWidth = 16;
diff --git a/user/audiofile/CVE-2017-6839.patch b/user/audiofile/CVE-2017-6839.patch
new file mode 100644
index 000000000..ff0cdc2b3
--- /dev/null
+++ b/user/audiofile/CVE-2017-6839.patch
@@ -0,0 +1,120 @@
+From beacc44eb8cdf6d58717ec1a5103c5141f1b37f9 Mon Sep 17 00:00:00 2001
+From: Antonio Larrosa <larrosa@kde.org>
+Date: Mon, 6 Mar 2017 13:43:53 +0100
+Subject: [PATCH 2/3] Check for multiplication overflow in MSADPCM decodeSample
+
+Check for multiplication overflow (using __builtin_mul_overflow
+if available) in MSADPCM.cpp decodeSample and return an empty
+decoded block if an error occurs.
+
+This fixes the 00193-audiofile-signintoverflow-MSADPCM case of #41
+---
+ libaudiofile/modules/BlockCodec.cpp | 5 +--
+ libaudiofile/modules/MSADPCM.cpp | 47 ++++++++++++++++++++++++++---
+ 2 files changed, 46 insertions(+), 6 deletions(-)
+
+diff --git a/libaudiofile/modules/BlockCodec.cpp b/libaudiofile/modules/BlockCodec.cpp
+index 45925e8..4731be1 100644
+--- a/libaudiofile/modules/BlockCodec.cpp
++++ b/libaudiofile/modules/BlockCodec.cpp
+@@ -52,8 +52,9 @@ void BlockCodec::runPull()
+ // Decompress into m_outChunk.
+ for (int i=0; i<blocksRead; i++)
+ {
+- decodeBlock(static_cast<const uint8_t *>(m_inChunk->buffer) + i * m_bytesPerPacket,
+- static_cast<int16_t *>(m_outChunk->buffer) + i * m_framesPerPacket * m_track->f.channelCount);
++ if (decodeBlock(static_cast<const uint8_t *>(m_inChunk->buffer) + i * m_bytesPerPacket,
++ static_cast<int16_t *>(m_outChunk->buffer) + i * m_framesPerPacket * m_track->f.channelCount)==0)
++ break;
+
+ framesRead += m_framesPerPacket;
+ }
+diff --git a/libaudiofile/modules/MSADPCM.cpp b/libaudiofile/modules/MSADPCM.cpp
+index 8ea3c85..ef9c38c 100644
+--- a/libaudiofile/modules/MSADPCM.cpp
++++ b/libaudiofile/modules/MSADPCM.cpp
+@@ -101,24 +101,60 @@ static const int16_t adaptationTable[] =
+ 768, 614, 512, 409, 307, 230, 230, 230
+ };
+
++int firstBitSet(int x)
++{
++ int position=0;
++ while (x!=0)
++ {
++ x>>=1;
++ ++position;
++ }
++ return position;
++}
++
++#ifndef __has_builtin
++#define __has_builtin(x) 0
++#endif
++
++int multiplyCheckOverflow(int a, int b, int *result)
++{
++#if (defined __GNUC__ && __GNUC__ >= 5) || ( __clang__ && __has_builtin(__builtin_mul_overflow))
++ return __builtin_mul_overflow(a, b, result);
++#else
++ if (firstBitSet(a)+firstBitSet(b)>31) // int is signed, so we can't use 32 bits
++ return true;
++ *result = a * b;
++ return false;
++#endif
++}
++
++
+ // Compute a linear PCM value from the given differential coded value.
+ static int16_t decodeSample(ms_adpcm_state &state,
+- uint8_t code, const int16_t *coefficient)
++ uint8_t code, const int16_t *coefficient, bool *ok=NULL)
+ {
+ int linearSample = (state.sample1 * coefficient[0] +
+ state.sample2 * coefficient[1]) >> 8;
++ int delta;
+
+ linearSample += ((code & 0x08) ? (code - 0x10) : code) * state.delta;
+
+ linearSample = clamp(linearSample, MIN_INT16, MAX_INT16);
+
+- int delta = (state.delta * adaptationTable[code]) >> 8;
++ if (multiplyCheckOverflow(state.delta, adaptationTable[code], &delta))
++ {
++ if (ok) *ok=false;
++ _af_error(AF_BAD_COMPRESSION, "Error decoding sample");
++ return 0;
++ }
++ delta >>= 8;
+ if (delta < 16)
+ delta = 16;
+
+ state.delta = delta;
+ state.sample2 = state.sample1;
+ state.sample1 = linearSample;
++ if (ok) *ok=true;
+
+ return static_cast<int16_t>(linearSample);
+ }
+@@ -212,13 +248,16 @@ int MSADPCM::decodeBlock(const uint8_t *encoded, int16_t *decoded)
+ {
+ uint8_t code;
+ int16_t newSample;
++ bool ok;
+
+ code = *encoded >> 4;
+- newSample = decodeSample(*state[0], code, coefficient[0]);
++ newSample = decodeSample(*state[0], code, coefficient[0], &ok);
++ if (!ok) return 0;
+ *decoded++ = newSample;
+
+ code = *encoded & 0x0f;
+- newSample = decodeSample(*state[1], code, coefficient[1]);
++ newSample = decodeSample(*state[1], code, coefficient[1], &ok);
++ if (!ok) return 0;
+ *decoded++ = newSample;
+
+ encoded++;
+--
+2.36.1
+
diff --git a/user/audiofile/CVE-2018-13440,17095.patch b/user/audiofile/CVE-2018-13440,17095.patch
new file mode 100644
index 000000000..b35ce980e
--- /dev/null
+++ b/user/audiofile/CVE-2018-13440,17095.patch
@@ -0,0 +1,77 @@
+From fde6d79fb8363c4a329a184ef0b107156602b225 Mon Sep 17 00:00:00 2001
+From: Wim Taymans <wtaymans@redhat.com>
+Date: Thu, 27 Sep 2018 10:48:45 +0200
+Subject: [PATCH 1/3] ModuleState: handle compress/decompress init failure
+
+When the unit initcompress or initdecompress function fails,
+m_fileModule is NULL. Return AF_FAIL in that case instead of
+causing NULL pointer dereferences later.
+
+Fixes #49
+---
+ libaudiofile/modules/ModuleState.cpp | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/libaudiofile/modules/ModuleState.cpp b/libaudiofile/modules/ModuleState.cpp
+index 0c29d7a..070fd9b 100644
+--- a/libaudiofile/modules/ModuleState.cpp
++++ b/libaudiofile/modules/ModuleState.cpp
+@@ -75,6 +75,9 @@ status ModuleState::initFileModule(AFfilehandle file, Track *track)
+ m_fileModule = unit->initcompress(track, file->m_fh, file->m_seekok,
+ file->m_fileFormat == AF_FILE_RAWDATA, &chunkFrames);
+
++ if (!m_fileModule)
++ return AF_FAIL;
++
+ if (unit->needsRebuffer)
+ {
+ assert(unit->nativeSampleFormat == AF_SAMPFMT_TWOSCOMP);
+
+From 941774c8c0e79007196d7f1e7afdc97689f869b3 Mon Sep 17 00:00:00 2001
+From: Wim Taymans <wtaymans@redhat.com>
+Date: Thu, 27 Sep 2018 12:09:45 +0200
+Subject: [PATCH 2/3] ALAC: set chunk frameCount to 0 on short read
+
+---
+ libaudiofile/modules/ALAC.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libaudiofile/modules/ALAC.cpp b/libaudiofile/modules/ALAC.cpp
+index 7593c11..478e2af 100644
+--- a/libaudiofile/modules/ALAC.cpp
++++ b/libaudiofile/modules/ALAC.cpp
+@@ -240,6 +240,7 @@ void ALAC::runPull()
+ if (read(m_inChunk->buffer, bytesPerPacket) < bytesPerPacket)
+ {
+ reportReadError(0, m_track->f.framesPerPacket);
++ m_outChunk->frameCount = 0;
+ return;
+ }
+
+
+From 822b732fd31ffcb78f6920001e9b1fbd815fa712 Mon Sep 17 00:00:00 2001
+From: Wim Taymans <wtaymans@redhat.com>
+Date: Thu, 27 Sep 2018 12:11:12 +0200
+Subject: [PATCH 3/3] SimpleModule: set output chunk framecount after pull
+
+After pulling the data, set the output chunk to the amount of
+frames we pulled so that the next module in the chain has the correct
+frame count.
+
+Fixes #50 and #51
+---
+ libaudiofile/modules/SimpleModule.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libaudiofile/modules/SimpleModule.cpp b/libaudiofile/modules/SimpleModule.cpp
+index 2bae1eb..e87932c 100644
+--- a/libaudiofile/modules/SimpleModule.cpp
++++ b/libaudiofile/modules/SimpleModule.cpp
+@@ -26,6 +26,7 @@
+ void SimpleModule::runPull()
+ {
+ pull(m_outChunk->frameCount);
++ m_outChunk->frameCount = m_inChunk->frameCount;
+ run(*m_inChunk, *m_outChunk);
+ }
+
diff --git a/user/autoconf-archive/APKBUILD b/user/autoconf-archive/APKBUILD
new file mode 100644
index 000000000..8a87a30fa
--- /dev/null
+++ b/user/autoconf-archive/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor:
+# Maintainer:
+pkgname=autoconf-archive
+pkgver=2019.01.06
+pkgrel=0
+pkgdesc="GNU Autoconf Macro Archive"
+url="https://www.gnu.org/software/autoconf-archive/"
+arch="noarch"
+license="GPL-3.0+"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://ftpmirror.gnu.org/$pkgname/$pkgname-$pkgver.tar.xz"
+builddir="$srcdir/$pkgname-$pkgver/"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="14bf8d0bf8be4a4dc078677de1977e496d4d9cf095bc897c174e331311b722cd3a34054e74c2146fff4b5c84269463e6a6fc61907d77d1c51bb221c8fb124fcb autoconf-archive-2019.01.06.tar.xz"
diff --git a/user/autoconf2.13/APKBUILD b/user/autoconf2.13/APKBUILD
index bd5b533a9..29222ea87 100644
--- a/user/autoconf2.13/APKBUILD
+++ b/user/autoconf2.13/APKBUILD
@@ -3,35 +3,33 @@ pkgname=autoconf2.13
pkgver=2.13
pkgrel=2
pkgdesc="A GNU tool for automatically configuring source code"
+url="https://www.gnu.org/software/autoconf"
arch="noarch"
license="GPL-2.0"
-url="https://www.gnu.org/software/autoconf"
depends="m4 perl"
checkdepends="dejagnu flex gfortran"
-source="ftp://ftp.gnu.org/pub/gnu/autoconf/autoconf-${pkgver}.tar.gz
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://ftp.gnu.org/pub/gnu/autoconf/autoconf-${pkgver}.tar.gz
getloadavg.patch
"
-subpackages="$pkgname-doc"
-
builddir="$srcdir"/autoconf-$pkgver
+
prepare() {
default_prepare
update_config_sub # Required for AC_F77_LIBRARY_LDFLAGS
}
build() {
- cd "$builddir"
M4=/usr/bin/m4 ./configure --prefix=/usr --program-suffix=-2.13
make
}
check() {
- cd "$builddir"
F77=gfortran make check
}
package() {
- cd "$builddir"
make prefix="$pkgdir/usr" infodir="$pkgdir/usr/share/info" install
rm -f "$pkgdir"/usr/share/info/dir
diff --git a/user/avahi/APKBUILD b/user/avahi/APKBUILD
new file mode 100644
index 000000000..d831ec801
--- /dev/null
+++ b/user/avahi/APKBUILD
@@ -0,0 +1,75 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=avahi
+pkgver=0.8
+pkgrel=1
+pkgdesc="Local network service discovery library"
+url="https://avahi.org/"
+arch="all"
+license="LGPL-2.1+"
+depends=""
+makedepends="dbus-dev expat-dev glib-dev gobject-introspection-dev
+ gtk+3.0-dev libdaemon-dev libevent-dev qt5-qtbase-dev doxygen
+ py3-dbus-python py3-pygobject-dev"
+pkgusers="avahi avahi-autoipd"
+pkggroups="avahi avahi-autoipd"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-openrc
+ $pkgname-gtk3 $pkgname-py3 $pkgname-qt5"
+install="$pkgname.pre-install $pkgname.pre-upgrade"
+source="https://avahi.org/download/avahi-$pkgver.tar.gz
+ build-db
+ "
+
+prepare() {
+ default_prepare
+ # Missing from release tarballs:
+ # https://github.com/lathiat/avahi/pull/281
+ mv "$srcdir"/build-db "$builddir"/service-type-database/
+}
+
+build() {
+ [ "$CBUILD_ARCH" = "$CTARGET_ARCH" ] || \
+ die "You cannot cross-build Avahi; dbm files are not portable."
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --with-distro=gentoo \
+ --enable-core-docs \
+ --disable-mono \
+ --disable-gdbm \
+ --enable-compat-libdns_sd
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+gtk3() {
+ pkgdesc="$pkgdesc (Gtk+ 3 bindings)"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libavahi*gtk3* "$subpkgdir"/usr/lib/
+}
+
+py3() {
+ pkgdesc="$pkgdesc (Python bindings)"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/python* "$subpkgdir"/usr/lib/
+}
+
+qt5() {
+ pkgdesc="$pkgdesc (Qt 5 bindings)"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libavahi*qt5* "$subpkgdir"/usr/lib/
+}
+
+sha512sums="c6ba76feb6e92f70289f94b3bf12e5f5c66c11628ce0aeb3cadfb72c13a5d1a9bd56d71bdf3072627a76cd103b9b056d9131aa49ffe11fa334c24ab3b596c7de avahi-0.8.tar.gz
+60f5cab8417ba1f7ef9b3e30a9f33923fd71a11ae846dda9c29fd0327008821f55f6c77f8ef8442e6dd164d1b777d858cec95c31b7b3bc7f1121417620ca5f08 build-db"
diff --git a/user/avahi/avahi.pre-install b/user/avahi/avahi.pre-install
new file mode 100644
index 000000000..4d6a7d061
--- /dev/null
+++ b/user/avahi/avahi.pre-install
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+groupadd -r -g 201 avahi 2>/dev/null
+groupadd -r -g 202 avahi-autoipd 2>/dev/null
+useradd -c "Service Discovery User" -s /sbin/nologin -g avahi \
+ -d /var/empty -M -N -u 201 2>/dev/null
+useradd -c "IPv4LL network address configuration daemon" -s /sbin/nologin \
+ -g avahi-autoipd -d /var/empty -M -N -u 202 2>/dev/null
+
+exit 0
diff --git a/user/avahi/avahi.pre-upgrade b/user/avahi/avahi.pre-upgrade
new file mode 120000
index 000000000..6b36c801b
--- /dev/null
+++ b/user/avahi/avahi.pre-upgrade
@@ -0,0 +1 @@
+avahi.pre-install \ No newline at end of file
diff --git a/user/avahi/build-db b/user/avahi/build-db
new file mode 100644
index 000000000..78ee892f6
--- /dev/null
+++ b/user/avahi/build-db
@@ -0,0 +1,49 @@
+#!/usr/bin/env python
+# -*-python-*-
+# This file is part of avahi.
+#
+# avahi is free software; you can redistribute it and/or modify it
+# under the terms of the GNU Lesser General Public License as
+# published by the Free Software Foundation; either version 2 of the
+# License, or (at your option) any later version.
+#
+# avahi 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 Lesser General Public
+# License along with avahi; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+# USA.
+
+try:
+ import anydbm as dbm
+except ImportError:
+ import dbm
+
+import sys
+
+if len(sys.argv) > 1:
+ infn = sys.argv[1]
+else:
+ infn = "service-types"
+
+if len(sys.argv) > 2:
+ outfn = sys.argv[2]
+else:
+ outfn = infn + ".db"
+
+db = dbm.open(outfn, "n")
+
+for ln in open(infn, "r"):
+ ln = ln.strip(" \r\n\t")
+
+ if ln == "" or ln.startswith("#"):
+ continue
+
+ t, n = ln.split(":", 1)
+
+ db[t.strip()] = n.strip()
+
+db.close()
diff --git a/user/awesome/APKBUILD b/user/awesome/APKBUILD
index d3236b714..0029587b0 100644
--- a/user/awesome/APKBUILD
+++ b/user/awesome/APKBUILD
@@ -1,46 +1,45 @@
# Contributor: Łukasz Jendrysik <scadu@yandex.com>
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=awesome
pkgver=4.3
-pkgrel=0
+pkgrel=1
pkgdesc="lua-configurable window manager framework"
-url="http://awesome.naquadah.org/"
+url="https://awesomewm.org"
arch="all"
-license="GPL-2.0+"
options="!check" # Tests require X and D-Bus
+license="GPL-2.0+"
depends="imagemagick lua-lgi cairo-gobject pango"
+checkdepends="xorg-server-xephyr"
makedepends="lua5.3 lua5.3-dev libxcb-dev pango-dev cairo-dev cmake gperf glib-dev
imlib2-dev libxdg-basedir-dev libev-dev startup-notification-dev
xcb-util-keysyms-dev xcb-util-image-dev xcb-util-dev xcb-util-wm-dev
dbus-dev gdk-pixbuf-dev xcb-util-cursor-dev libxkbcommon-dev
xcb-util-xrm-dev libexecinfo-dev xmlto"
-checkdepends="xorg-server-xephyr"
subpackages="$pkgname-doc"
-source="https://github.com/awesomeWM/$pkgname-releases/raw/master/$pkgname-$pkgver.tar.xz"
+source="https://github.com/awesomeWM/$pkgname-releases/raw/master/$pkgname-$pkgver.tar.xz
+ gcc10.patch
+ "
build() {
# Awesome does not support in-tree builds
- mkdir -p "$builddir/build"
- cd "$builddir/build"
cmake -DCMAKE_INSTALL_PREFIX=/usr \
-DSYSCONFDIR=/etc \
- -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DLUA_INCLUDE_DIR=/usr/include/lua5.3 \
-DLUA_LIBRARIES=/usr/lib/lua5.3/liblua.so \
- ..
- make
+ -Bbuild
+ make -C build
}
check() {
- cd "$builddir/build"
- make check
+ make -C build check
}
package() {
- cd "$builddir/build"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="c5ef1e8dc593e7783b895d22143154aea8f211beeda24672a7ee4ed5112b4f4284043f848a151f3d3c4f569e91308670367a4353f705b20511b36495b22fa3f5 awesome-4.3.tar.xz"
+sha512sums="c5ef1e8dc593e7783b895d22143154aea8f211beeda24672a7ee4ed5112b4f4284043f848a151f3d3c4f569e91308670367a4353f705b20511b36495b22fa3f5 awesome-4.3.tar.xz
+cc0aa85c42eff24ff2599673cc41058c04ec265d153ebecdb7a038d638500389da34a2063c3ce4e04b0f78f8972b9e5c3b793c46a37feeeef5505909ef8167f8 gcc10.patch"
diff --git a/user/awesome/gcc10.patch b/user/awesome/gcc10.patch
new file mode 100644
index 000000000..f1d0c3404
--- /dev/null
+++ b/user/awesome/gcc10.patch
@@ -0,0 +1,236 @@
+From d256d9055095f27a33696e0aeda4ee20ed4fb1a0 Mon Sep 17 00:00:00 2001
+From: Reiner Herrmann <reiner@reiner-h.de>
+Date: Fri, 17 Apr 2020 19:25:40 +0200
+Subject: [PATCH] Move variable declarations from header to C file to fix build
+ with GCC 10
+
+GCC 10 builds with -fno-common by default, which causes linker errors when
+variables are declared in header files and included in multiple places.
+
+See also: https://gcc.gnu.org/gcc-10/porting_to.html
+---
+ common/lualib.c | 2 ++
+ common/lualib.h | 2 +-
+ luaa.c | 2 ++
+ luaa.h | 2 +-
+ objects/button.c | 2 ++
+ objects/button.h | 2 +-
+ objects/client.c | 2 ++
+ objects/client.h | 2 +-
+ objects/drawin.c | 2 ++
+ objects/drawin.h | 2 +-
+ objects/key.c | 2 ++
+ objects/key.h | 2 +-
+ objects/tag.c | 2 ++
+ objects/tag.h | 2 +-
+ objects/window.c | 1 +
+ objects/window.h | 2 +-
+ 16 files changed, 23 insertions(+), 8 deletions(-)
+
+diff --git a/common/lualib.c b/common/lualib.c
+index 312fb2d594..bb110ac716 100644
+--- a/common/lualib.c
++++ b/common/lualib.c
+@@ -20,6 +20,8 @@
+ #include "common/lualib.h"
+ #include "luaa.h"
+
++lua_CFunction lualib_dofunction_on_error;
++
+ void luaA_checkfunction(lua_State *L, int idx)
+ {
+ if(!lua_isfunction(L, idx))
+diff --git a/common/lualib.h b/common/lualib.h
+index 8a3ef089d7..a91261843c 100644
+--- a/common/lualib.h
++++ b/common/lualib.h
+@@ -28,7 +28,7 @@
+ #include "common/util.h"
+
+ /** Lua function to call on dofunction() error */
+-lua_CFunction lualib_dofunction_on_error;
++extern lua_CFunction lualib_dofunction_on_error;
+
+ void luaA_checkfunction(lua_State *, int);
+ void luaA_checktable(lua_State *, int);
+diff --git a/luaa.c b/luaa.c
+index 419a8c2eb2..aeaba9cd1f 100644
+--- a/luaa.c
++++ b/luaa.c
+@@ -91,6 +91,8 @@ extern const struct luaL_Reg awesome_mouse_meta[];
+ extern const struct luaL_Reg awesome_root_methods[];
+ extern const struct luaL_Reg awesome_root_meta[];
+
++signal_array_t global_signals;
++
+ /** A call into the Lua code aborted with an error.
+ *
+ * This signal is used in the example configuration, @{05-awesomerc.md},
+diff --git a/luaa.h b/luaa.h
+index e159258348..d26c437691 100644
+--- a/luaa.h
++++ b/luaa.h
+@@ -317,7 +317,7 @@ const char *luaA_find_config(xdgHandle *, const char *, luaA_config_callback *);
+ bool luaA_parserc(xdgHandle *, const char *);
+
+ /** Global signals */
+-signal_array_t global_signals;
++extern signal_array_t global_signals;
+
+ int luaA_class_index_miss_property(lua_State *, lua_object_t *);
+ int luaA_class_newindex_miss_property(lua_State *, lua_object_t *);
+diff --git a/objects/button.c b/objects/button.c
+index 892347a928..5ffdcd4432 100644
+--- a/objects/button.c
++++ b/objects/button.c
+@@ -35,6 +35,8 @@
+
+ #include "button.h"
+
++lua_class_t button_class;
++
+ /** Button object.
+ *
+ * @tfield int button The mouse button number, or 0 for any button.
+diff --git a/objects/button.h b/objects/button.h
+index fb8bb8da28..8f0b894305 100644
+--- a/objects/button.h
++++ b/objects/button.h
+@@ -39,7 +39,7 @@ typedef struct button_t
+ xcb_button_t button;
+ } button_t;
+
+-lua_class_t button_class;
++extern lua_class_t button_class;
+ LUA_OBJECT_FUNCS(button_class, button_t, button)
+ ARRAY_FUNCS(button_t *, button, DO_NOTHING)
+
+diff --git a/objects/client.c b/objects/client.c
+index 7b2d3a2022..b617a9e7a9 100644
+--- a/objects/client.c
++++ b/objects/client.c
+@@ -106,6 +106,8 @@
+ #include <xcb/shape.h>
+ #include <cairo-xcb.h>
+
++lua_class_t client_class;
++
+ /** Client class.
+ *
+ * This table allow to add more dynamic properties to the clients. For example,
+diff --git a/objects/client.h b/objects/client.h
+index 74a23131c5..387e7c2aea 100644
+--- a/objects/client.h
++++ b/objects/client.h
+@@ -192,7 +192,7 @@ struct client_t
+ ARRAY_FUNCS(client_t *, client, DO_NOTHING)
+
+ /** Client class */
+-lua_class_t client_class;
++extern lua_class_t client_class;
+
+ LUA_OBJECT_FUNCS(client_class, client_t, client)
+
+diff --git a/objects/drawin.c b/objects/drawin.c
+index 3fd1cc4350..3bbd93179c 100644
+--- a/objects/drawin.c
++++ b/objects/drawin.c
+@@ -46,6 +46,8 @@
+ #include <cairo-xcb.h>
+ #include <xcb/shape.h>
+
++lua_class_t drawin_class;
++
+ /** Drawin object.
+ *
+ * @field border_width Border width.
+diff --git a/objects/drawin.h b/objects/drawin.h
+index 31f315aac5..2f8887d944 100644
+--- a/objects/drawin.h
++++ b/objects/drawin.h
+@@ -52,7 +52,7 @@ void luaA_drawin_systray_kickout(lua_State *);
+
+ void drawin_class_setup(lua_State *);
+
+-lua_class_t drawin_class;
++extern lua_class_t drawin_class;
+
+ #endif
+ // vim: filetype=c:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80
+diff --git a/objects/key.c b/objects/key.c
+index c42f7446d8..365ba998cc 100644
+--- a/objects/key.c
++++ b/objects/key.c
+@@ -43,6 +43,8 @@
+ #include <xkbcommon/xkbcommon.h>
+ #include <glib.h>
+
++lua_class_t key_class;
++
+ /** Key object.
+ *
+ * @tfield string key The key to trigger an event.
+diff --git a/objects/key.h b/objects/key.h
+index 8aa07ffe3d..45f23cac79 100644
+--- a/objects/key.h
++++ b/objects/key.h
+@@ -36,7 +36,7 @@ typedef struct keyb_t
+ xcb_keycode_t keycode;
+ } keyb_t;
+
+-lua_class_t key_class;
++extern lua_class_t key_class;
+ LUA_OBJECT_FUNCS(key_class, keyb_t, key)
+ DO_ARRAY(keyb_t *, key, DO_NOTHING)
+
+diff --git a/objects/tag.c b/objects/tag.c
+index a0050cc2a9..1b1a135762 100644
+--- a/objects/tag.c
++++ b/objects/tag.c
+@@ -203,6 +203,8 @@
+ #include "ewmh.h"
+ #include "luaa.h"
+
++lua_class_t tag_class;
++
+ /**
+ * @signal request::select
+ */
+diff --git a/objects/tag.h b/objects/tag.h
+index d6bb40e0d8..f830b1e2c5 100644
+--- a/objects/tag.h
++++ b/objects/tag.h
+@@ -46,7 +46,7 @@ struct tag
+ client_array_t clients;
+ };
+
+-lua_class_t tag_class;
++extern lua_class_t tag_class;
+ LUA_OBJECT_FUNCS(tag_class, tag_t, tag)
+
+ void tag_class_setup(lua_State *);
+diff --git a/objects/window.c b/objects/window.c
+index 440970f3d0..371d06bcd3 100644
+--- a/objects/window.c
++++ b/objects/window.c
+@@ -59,6 +59,7 @@
+ #include "property.h"
+ #include "xwindow.h"
+
++lua_class_t window_class;
+ LUA_CLASS_FUNCS(window, window_class)
+
+ static xcb_window_t
+diff --git a/objects/window.h b/objects/window.h
+index 5386fafead..fbc5296cf5 100644
+--- a/objects/window.h
++++ b/objects/window.h
+@@ -80,7 +80,7 @@ typedef struct
+ WINDOW_OBJECT_HEADER
+ } window_t;
+
+-lua_class_t window_class;
++extern lua_class_t window_class;
+
+ void window_class_setup(lua_State *);
+
diff --git a/user/ayatana-ido/APKBUILD b/user/ayatana-ido/APKBUILD
index dea352c42..ceff6f91f 100644
--- a/user/ayatana-ido/APKBUILD
+++ b/user/ayatana-ido/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=ayatana-ido
-pkgver=0.4.4
+pkgver=0.8.2
pkgrel=0
pkgdesc="Indicator display object library for the Gnome desktop environment"
url="https://ayatanaindicators.github.io/"
@@ -9,19 +9,18 @@ arch="all"
license="GPL-3.0-only AND (LGPL-2.1-only OR LGPL-3.0-only) AND LGPL-2.0+"
depends=""
makedepends="glib-dev gobject-introspection-dev gtest-dev gtk+3.0-dev
- mate-common-dev vala-dev xorg-gtest-dev"
+ mate-common-dev vala-dev xorg-gtest-dev autoconf automake"
subpackages="$pkgname-dev"
source="ayatana-ido-$pkgver.tar.gz::https://github.com/AyatanaIndicators/ayatana-ido/archive/$pkgver.tar.gz
- gtk-doc-fix.patch"
+ gtk-doc-fix.patch
+ "
prepare() {
- cd "$builddir"
default_prepare
autoreconf -vif
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,14 +32,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
DESTDIR="$pkgdir" make install
}
-sha512sums="ef04b0b6c959d209e88b1de322ac64ea33fdd043a73980bf3b043380603b6a448ea7bf43ba8e2750e1a0a9bef704a7099f7ae9b92a97d3ce0be2e9f48ba16703 ayatana-ido-0.4.4.tar.gz
+sha512sums="c166e609a62aeb2704b292d8c066769f33a56663649ade4d7385072cf57bfe9384411cd25c4e6711f89dc50329f7b71eb9bdc8b84c58d8150924bbb429104553 ayatana-ido-0.8.2.tar.gz
92ddc4f09c5ed7800357a76e2276c07db682408f259e22d6511696df032d6712ecd295d0775db36ad6ace5d3f352ce7d59cd9f1b24e899b7accaf680c0e4488d gtk-doc-fix.patch"
diff --git a/user/baekmuk-ttf/APKBUILD b/user/baekmuk-ttf/APKBUILD
index 28b840f6b..2f885f9eb 100644
--- a/user/baekmuk-ttf/APKBUILD
+++ b/user/baekmuk-ttf/APKBUILD
@@ -14,8 +14,7 @@ subpackages=""
source="http://kldp.net/baekmuk/release/865-baekmuk-ttf-$pkgver.tar.gz"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ ttf/*.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ "$builddir"/ttf/*.ttf
}
sha512sums="779e0bef5fe17e08e0e08ccdad9ad0e91123a5d5cbcb3d66256d517a0903c5fd91c4a8c75eb42f82fcb0d82e26455cf13aeec5ba3a04002133dbbaf1357ec14b 865-baekmuk-ttf-2.2.tar.gz"
diff --git a/user/baloo-widgets/APKBUILD b/user/baloo-widgets/APKBUILD
index f30e3c168..e3dce9372 100644
--- a/user/baloo-widgets/APKBUILD
+++ b/user/baloo-widgets/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=baloo-widgets
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Widgets that utilise the Baloo desktop indexing engine"
url="https://www.KDE.org/"
@@ -13,10 +13,9 @@ depends_dev="qt5-qtbase-dev baloo-dev kio-dev"
makedepends="$depends_dev cmake extra-cmake-modules kconfig-dev
kfilemetadata-dev ki18n-dev"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/baloo-widgets-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/baloo-widgets-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="40b62fd9fb204ba60f0f5d8550e33506907de11b8cc6a222071402ed4eef83d3171df6eef1be31c501dfc4b7271a05f79def095aec6d83c705dcbc52760966dc baloo-widgets-18.12.3.tar.xz"
+sha512sums="b85e7daf97b5f6b28423664c14875ce24affd3ef3e8fcea1d663f610dcecbed6b195bee12ff7c0c97cffe9fec6fabc30dbd137135d056f5b4061dd400aa55738 baloo-widgets-22.04.2.tar.xz"
diff --git a/user/baloo/APKBUILD b/user/baloo/APKBUILD
index b0a147dd0..0ea50a54f 100644
--- a/user/baloo/APKBUILD
+++ b/user/baloo/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=baloo
-pkgver=5.54.0
-pkgrel=0
+pkgver=5.94.0
+pkgrel=1
pkgdesc="Semantic desktop search framework"
url="https://www.kde.org/"
arch="all"
@@ -19,18 +19,19 @@ arch="all"
# This may be a bug in libQtTest, or in musl. I have not debugged further.
# This has already taken up two days of my time and I just want to ship Plasma
options="!check"
-license="(LGPL-2.1-only OR LGPL-3.0-only) AND LGPL-2.1+"
+license="LGPL-2.0+"
depends=""
depends_dev="kcoreaddons-dev kfilemetadata-dev"
+docdepends="kcoreaddons-doc kfilemetadata-doc"
makedepends="$depends_dev cmake extra-cmake-modules python3 doxygen graphviz
qt5-qtbase-dev qt5-qttools-dev kconfig-dev kcrash-dev kdbusaddons-dev
- ki18n-dev kidletime-dev kio-dev lmdb-dev solid-dev"
+ ki18n-dev kidletime-dev kio-dev lmdb-dev solid-dev icu-dev $docdepends"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/baloo-$pkgver.tar.xz
- initialise-variable.patch"
+ initialise-variable.patch
+ "
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -42,19 +43,18 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
- make
+ ${CMAKE_CROSSOPTS} . \
+ -Bbuild
+ make -C build
}
check() {
- cd "$builddir"
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="ec610aa2ab6409cf206623e08eb78d7ccc3b278ca94d6f8ba79d6d705459eb5cb9d74ed9ffc4cc20c337582b12517fb59da1570aa689111c0f105746234333de baloo-5.54.0.tar.xz
-5622f1eb7a692c0ebd5d904b421612292375d3ea3f4ffdc4624fa8e2dc4a5fe56e5636f11a388224642be03c8fc28a678cffb9b167eb3de48ff4ae2979e6435e initialise-variable.patch"
+sha512sums="e79fa98d86daca96fd813e8778cfffa16488d0c5fc050eaa4b72b5bfc33243fcd777e8508425bf64ecd451e0f150c02dd18fb892d215fa6a05cb17e03bd349f7 baloo-5.94.0.tar.xz
+a6e4965d63ea42a09f831489eb493a621a0fa4ec9528a86b0d444e4c4d7e6a3d29adad007d1286f829877ae7e6a7485a8f8e865d2b519c7192fcd72cb2f40505 initialise-variable.patch"
diff --git a/user/baloo/baloo-5.38.0-r0-x86_64-ciall.log b/user/baloo/baloo-5.38.0-r0-x86_64-ciall.log
deleted file mode 100644
index 00820eb0c..000000000
--- a/user/baloo/baloo-5.38.0-r0-x86_64-ciall.log
+++ /dev/null
@@ -1,2714 +0,0 @@
->>> baloo: abuild 3.0.1-r2
-]0;abuild: baloo>>> baloo: Checking sanity of /usr/src/packages/user/baloo/APKBUILD...
->>> baloo: Analyzing dependencies...
->>> baloo: Installing for build: build-base qt5-qtbase-dev kcoreaddons-dev kconfig-dev kdbusaddons-dev lmdb-dev ki18n-dev kidletime-dev solid-dev kfilemetadata-dev kcrash-dev kio-dev cmake extra-cmake-modules python3 gettext-dev doxygen graphviz qt5-qttools-dev
-(1/247) Installing fcron-pam (3.2.0-r2)
-(2/247) Installing libpciaccess (0.13.5-r1)
-(3/247) Installing libdrm (2.4.83-r2)
-(4/247) Installing libdrm-dev (2.4.83-r2)
-(5/247) Installing dri2proto (2.8-r2)
-(6/247) Installing xproto (7.0.31-r1)
-(7/247) Installing libxau-dev (1.0.8-r2)
-(8/247) Installing xcb-proto (1.12-r1)
-(9/247) Installing libpthread-stubs (0.3-r5)
-(10/247) Installing libxdmcp-dev (1.1.2-r4)
-(11/247) Installing libxcb-dev (1.12-r1)
-(12/247) Installing xextproto (7.3.0-r2)
-(13/247) Installing xf86bigfontproto-dev (1.2.0-r5)
-(14/247) Installing xtrans (1.3.5-r1)
-(15/247) Installing inputproto (2.3.2-r1)
-(16/247) Installing kbproto (1.0.7-r2)
-(17/247) Installing libx11-dev (1.6.5-r1)
-(18/247) Installing libxext-dev (1.3.3-r2)
-(19/247) Installing libxxf86vm (1.1.4-r1)
-(20/247) Installing xf86vidmodeproto (2.3.1-r3)
-(21/247) Installing libxxf86vm-dev (1.1.4-r1)
-(22/247) Installing damageproto (1.2.1-r3)
-(23/247) Installing fixesproto (5.0-r2)
-(24/247) Installing libxfixes-dev (5.0.3-r1)
-(25/247) Installing libxdamage-dev (1.1.4-r1)
-(26/247) Installing glproto (1.4.17-r2)
-(27/247) Installing dri3proto (1.0-r2)
-(28/247) Installing presentproto (1.1-r1)
-(29/247) Installing libxshmfence (1.2-r2)
-(30/247) Installing libxshmfence-dev (1.2-r2)
-(31/247) Installing wayland-libs-server (1.14.0-r2)
-(32/247) Installing wayland-libs-cursor (1.14.0-r2)
-(33/247) Installing wayland-libs-client (1.14.0-r2)
-(34/247) Installing mesa-gbm (17.1.4-r2)
-(35/247) Installing mesa-egl (17.1.4-r2)
-(36/247) Installing mesa-glapi (17.1.4-r2)
-(37/247) Installing mesa-gl (17.1.4-r2)
-(38/247) Installing mesa-gles (17.1.4-r2)
-(39/247) Installing mesa-libwayland-egl (17.1.4-r2)
-(40/247) Installing mesa-osmesa (17.1.4-r2)
-(41/247) Installing llvm4-libs (4.0.0-r5)
-(42/247) Installing mesa-xatracker (17.1.4-r2)
-(43/247) Installing libffi-dev (3.2.1-r4)
-(44/247) Installing expat-dev (2.2.4-r0)
-(45/247) Installing wayland-dev (1.14.0-r2)
-(46/247) Installing mesa-dev (17.1.4-r2)
-(47/247) Installing libice-dev (1.0.9-r2)
-(48/247) Installing libsm-dev (1.2.2-r1)
-(49/247) Installing zlib-dev (1.2.11-r1)
-(50/247) Installing openssl-dev (1.0.2l-r0)
-(51/247) Installing libpng-dev (1.6.32-r1)
-(52/247) Installing freetype-dev (2.8.1-r1)
-(53/247) Installing fontconfig-dev (2.12.4-r1)
-(54/247) Installing gdbm (1.13-r1)
-(55/247) Installing python3 (3.6.2-r2)
-(56/247) Installing attr-dev (2.4.47-r7)
-(57/247) Installing gettext-asprintf (0.19.8.1-r1)
-(58/247) Installing gettext-libs (0.19.8.1-r1)
-(59/247) Installing gettext (0.19.8.1-r1)
-(60/247) Installing gettext-dev (0.19.8.1-r1)
-(61/247) Installing bzip2-dev (1.0.6-r6)
-(62/247) Installing util-linux-dev (2.30.1-r3)
-(63/247) Installing libpcre16 (8.41-r1)
-(64/247) Installing libpcre32 (8.41-r1)
-(65/247) Installing libpcrecpp (8.41-r1)
-(66/247) Installing pcre-dev (8.41-r1)
-(67/247) Installing glib-dev (2.54.0-r0)
-(68/247) Installing sqlite-dev (3.20.1-r0)
-(69/247) Installing dbus-libs (1.10.18-r1)
-(70/247) Installing dbus-dev (1.10.18-r1)
-(71/247) Installing libpcre2-16 (10.30-r0)
-(72/247) Installing qt5-qtbase (5.9.1-r2)
-(73/247) Installing qt5-qtbase-sqlite (5.9.1-r2)
-(74/247) Installing unixodbc (2.3.4-r2)
-(75/247) Installing qt5-qtbase-odbc (5.9.1-r2)
-(76/247) Installing libpq (9.6.4-r1)
-(77/247) Installing qt5-qtbase-postgresql (5.9.1-r2)
-(78/247) Installing mariadb-common (10.1.26-r1)
-(79/247) Installing mariadb-client-libs (10.1.26-r1)
-(80/247) Installing qt5-qtbase-mysql (5.9.1-r2)
-(81/247) Installing freetds (1.00.40-r0)
-(82/247) Installing qt5-qtbase-tds (5.9.1-r2)
-(83/247) Installing libevdev (1.5.7-r1)
-(84/247) Installing mtdev (1.1.5-r2)
-(85/247) Installing eudev-libs (3.2.4-r0)
-(86/247) Installing libinput-libs (1.8.1-r1)
-(87/247) Installing xcb-util-wm (0.4.1-r1)
-(88/247) Installing xcb-util (0.4.0-r1)
-(89/247) Installing xcb-util-image (0.4.0-r1)
-(90/247) Installing xcb-util-keysyms (0.4.0-r1)
-(91/247) Installing xcb-util-renderutil (0.3.9-r1)
-(92/247) Installing libxkbcommon (0.7.1-r1)
-(93/247) Installing qt5-qtbase-x11 (5.9.1-r2)
-(94/247) Installing qt5-qtbase-dev (5.9.1-r2)
-(95/247) Installing kcoreaddons (5.38.0-r0)
-(96/247) Installing kcoreaddons-dev (5.38.0-r0)
-(97/247) Installing kconfig (5.38.0-r0)
-(98/247) Installing kconfig-dev (5.38.0-r0)
-(99/247) Installing qt5-qtx11extras (5.9.1-r0)
-(100/247) Installing qt5-qtx11extras-dev (5.9.1-r0)
-(101/247) Installing kdbusaddons (5.38.0-r0)
-(102/247) Installing kdbusaddons-dev (5.38.0-r0)
-(103/247) Installing lmdb-dev (0.9.21-r1)
-(104/247) Installing qt5-qtscript (5.9.1-r0)
-(105/247) Installing qt5-qtscript-dev (5.9.1-r0)
-(106/247) Installing qt5-qtdeclarative (5.9.1-r0)
-(107/247) Installing qt5-qtdeclarative-dev (5.9.1-r0)
-(108/247) Installing ki18n (5.38.0-r0)
-(109/247) Installing ki18n-dev (5.38.0-r0)
-(110/247) Installing kidletime (5.38.0-r0)
-(111/247) Installing kidletime-dev (5.38.0-r0)
-(112/247) Installing udev-init-scripts (32-r1)
-Executing udev-init-scripts-32-r1.post-install
-(113/247) Installing kmod (24-r1)
-(114/247) Installing eudev (3.2.4-r0)
-(115/247) Installing eudev-dev (3.2.4-r0)
-(116/247) Installing solid (5.38.0-r0)
-(117/247) Installing solid-dev (5.38.0-r0)
-(118/247) Installing xz-dev (5.2.3-r1)
-(119/247) Installing karchive (5.38.0-r0)
-(120/247) Installing karchive-dev (5.38.0-r0)
-(121/247) Installing libjpeg-turbo-dev (1.5.2-r1)
-(122/247) Installing renderproto (0.11.1-r3)
-(123/247) Installing libxrender-dev (0.9.10-r2)
-(124/247) Installing pixman-dev (0.34.0-r2)
-(125/247) Installing util-macros (1.19.1-r1)
-(126/247) Installing xcb-util-dev (0.4.0-r1)
-(127/247) Installing cairo-tools (1.14.8-r2)
-(128/247) Installing cairo-gobject (1.14.8-r2)
-(129/247) Installing cairo-dev (1.14.8-r2)
-(130/247) Installing icu-dev (59.1-r1)
-(131/247) Installing libxml2-dev (2.9.4-r5)
-(132/247) Installing lcms2 (2.8-r2)
-(133/247) Installing openjpeg (2.2.0-r2)
-(134/247) Installing tiff (4.0.8-r1)
-(135/247) Installing poppler (0.56.0-r1)
-(136/247) Installing poppler-glib (0.56.0-r1)
-(137/247) Installing poppler-dev (0.56.0-r1)
-(138/247) Installing tiff-dev (4.0.8-r1)
-(139/247) Installing lcms2-dev (2.8-r2)
-(140/247) Installing openjpeg-dev (2.2.0-r2)
-(141/247) Installing poppler-qt5 (0.56.0-r0)
-(142/247) Installing poppler-qt5-dev (0.56.0-r0)
-(143/247) Installing exiv2 (0.26-r0)
-(144/247) Installing exiv2-dev (0.26-r0)
-(145/247) Installing taglib (1.11.1-r1)
-(146/247) Installing taglib-dev (1.11.1-r1)
-(147/247) Installing alsa-lib (1.1.4.1-r2)
-(148/247) Installing libxv (1.0.11-r1)
-(149/247) Installing cdparanoia-libs (10.2-r7)
-(150/247) Installing gstreamer (1.12.2-r1)
-(151/247) Installing libogg (1.3.2-r2)
-(152/247) Installing opus (1.2.1-r0)
-(153/247) Installing orc (0.4.26-r1)
-(154/247) Installing libtheora (1.1.1-r13)
-(155/247) Installing libvorbis (1.3.5-r2)
-(156/247) Installing gst-plugins-base (1.12.1-r3)
-(157/247) Installing json-c (0.12.1-r2)
-(158/247) Installing flac (1.3.2-r1)
-(159/247) Installing libsndfile (1.0.28-r3)
-(160/247) Installing speexdsp (1.2_rc3-r4)
-(161/247) Installing pulseaudio-libs (9.0-r2)
-(162/247) Installing qt5-qtmultimedia (5.9.1-r1)
-(163/247) Installing qt5-qtmultimedia-dev (5.9.1-r1)
-(164/247) Installing catdoc (0.95-r0)
-(165/247) Installing kfilemetadata (5.38.0-r0)
-(166/247) Installing kfilemetadata-dev (5.38.0-r0)
-(167/247) Installing xcb-util-keysyms-dev (0.4.0-r1)
-(168/247) Installing kwindowsystem (5.38.0-r0)
-(169/247) Installing kwindowsystem-dev (5.38.0-r0)
-(170/247) Installing kcrash (5.38.0-r0)
-(171/247) Installing kcrash-dev (5.38.0-r0)
-(172/247) Installing kservice (5.38.0-r0)
-(173/247) Installing kservice-dev (5.38.0-r0)
-(174/247) Installing kcodecs (5.38.0-r0)
-(175/247) Installing kcodecs-dev (5.38.0-r0)
-(176/247) Installing dbus-glib (0.108-r1)
-(177/247) Installing eggdbus (0.6-r5)
-(178/247) Installing eggdbus-dev (0.6-r5)
-(179/247) Installing dbus-glib-dev (0.108-r1)
-(180/247) Installing linux-pam-dev (1.3.0-r0)
-(181/247) Installing polkit (0.105-r8)
-(182/247) Installing polkit-dev (0.105-r8)
-(183/247) Installing polkit-qt-1 (0.112.0-r0)
-(184/247) Installing polkit-qt-1-dev (0.112.0-r0)
-(185/247) Installing kauth (5.38.0-r0)
-(186/247) Installing kauth-dev (5.38.0-r0)
-(187/247) Installing kguiaddons (5.38.0-r0)
-(188/247) Installing kguiaddons-dev (5.38.0-r0)
-(189/247) Installing kwidgetsaddons (5.38.0-r0)
-(190/247) Installing kwidgetsaddons-dev (5.38.0-r0)
-(191/247) Installing libxslt (1.1.29-r4)
-(192/247) Installing libxslt-dev (1.1.29-r4)
-(193/247) Installing perl-uri-escape (1.72-r0)
-(194/247) Installing libxml2-utils (2.9.5-r2)
-(195/247) Installing docbook-xml (4.5-r5)
-Executing docbook-xml-4.5-r5.post-install
-(196/247) Installing docbook-xsl (1.79.1-r0)
-Executing docbook-xsl-1.79.1-r0.post-install
-(197/247) Installing kdoctools (5.38.0-r0)
-(198/247) Installing kdoctools-dev (5.38.0-r0)
-(199/247) Installing kconfigwidgets (5.38.0-r0)
-(200/247) Installing kconfigwidgets-dev (5.38.0-r0)
-(201/247) Installing qt5-qtsvg (5.9.1-r0)
-(202/247) Installing qt5-qtsvg-dev (5.9.1-r0)
-(203/247) Installing kitemviews (5.38.0-r0)
-(204/247) Installing kitemviews-dev (5.38.0-r0)
-(205/247) Installing kiconthemes (5.38.0-r0)
-(206/247) Installing kiconthemes-dev (5.38.0-r0)
-(207/247) Installing kcompletion (5.38.0-r0)
-(208/247) Installing kcompletion-dev (5.38.0-r0)
-(209/247) Installing sonnet (5.38.0-r0)
-(210/247) Installing sonnet-dev (5.38.0-r0)
-(211/247) Installing ktextwidgets (5.38.0-r0)
-(212/247) Installing ktextwidgets-dev (5.38.0-r0)
-(213/247) Installing kglobalaccel (5.38.0-r0)
-(214/247) Installing kglobalaccel-dev (5.38.0-r0)
-(215/247) Installing attica (5.38.0-r0)
-(216/247) Installing attica-dev (5.38.0-r0)
-(217/247) Installing kxmlgui (5.38.0-r0)
-(218/247) Installing kxmlgui-dev (5.38.0-r0)
-(219/247) Installing kbookmarks (5.38.0-r0)
-(220/247) Installing kbookmarks-dev (5.38.0-r0)
-(221/247) Installing kjobwidgets (5.38.0-r0)
-(222/247) Installing kjobwidgets-dev (5.38.0-r0)
-(223/247) Installing acl-dev (2.2.52-r4)
-(224/247) Installing libxtst (1.2.3-r1)
-(225/247) Installing fftw-single-libs (3.3.6p2-r0)
-(226/247) Installing libidl (0.8.14-r3)
-(227/247) Installing orbit2 (2.14.19-r4)
-(228/247) Installing gconf (3.2.6-r2)
-(229/247) Installing pulseaudio (9.0-r2)
-(230/247) Installing phonon (4.9.1-r0)
-(231/247) Installing phonon-dev (4.9.1-r0)
-(232/247) Installing libdbusmenu-qt-dev (0.9.3_pre20160218-r0)
-(233/247) Installing knotifications (5.38.0-r0)
-(234/247) Installing knotifications-dev (5.38.0-r0)
-(235/247) Installing libgpg-error-dev (1.27-r1)
-(236/247) Installing libgcrypt-dev (1.8.1-r1)
-(237/247) Installing kwallet (5.38.0-r0)
-(238/247) Installing kwallet-dev (5.38.0-r0)
-(239/247) Installing kio (5.38.0-r0)
-(240/247) Installing kio-dev (5.38.0-r0)
-(241/247) Installing extra-cmake-modules (5.38.0-r0)
-(242/247) Installing doxygen (1.8.13-r1)
-(243/247) Installing graphviz (2.40.1-r1)
-(244/247) Installing qt5-qttools (5.9.1-r1)
-(245/247) Installing qt5-qttools-dev (5.9.1-r1)
-(246/247) Installing .makedepends-baloo (0)
-(247/247) Installing pulseaudio-zsh-completion (9.0-r2)
-Executing glib-2.54.0-r0.trigger
-No schema files found: doing nothing.
-Executing graphviz-2.40.1-r1.trigger
-Executing shared-mime-info-1.8-r1.trigger
-Executing gtk-update-icon-cache-2.24.31-r1.trigger
-OK: 1464 MiB in 446 packages
->>> baloo: Cleaning temporary build dirs...
->>> baloo: Fetching http://download.kde.org/stable/frameworks/5.38/baloo-5.38.0.tar.xz
->>> baloo: Fetching http://download.kde.org/stable/frameworks/5.38/baloo-5.38.0.tar.xz
->>> baloo: Checking sha512sums...
-baloo-5.38.0.tar.xz: OK
->>> baloo: Unpacking /var/cache/distfiles/baloo-5.38.0.tar.xz...
--- The C compiler identification is GNU 6.4.0
--- The CXX compiler identification is GNU 6.4.0
--- Check for working C compiler: /usr/bin/gcc
--- Check for working C compiler: /usr/bin/gcc -- works
--- Detecting C compiler ABI info
--- Detecting C compiler ABI info - done
--- Detecting C compile features
--- Detecting C compile features - done
--- Check for working CXX compiler: /usr/bin/c++
--- Check for working CXX compiler: /usr/bin/c++ -- works
--- Detecting CXX compiler ABI info
--- Detecting CXX compiler ABI info - done
--- Detecting CXX compile features
--- Detecting CXX compile features - done
---
-
--- Installing in the same prefix as Qt, adopting their path scheme.
--- Could not set up the appstream test. appstreamcli is missing.
--- Looking for __GLIBC__
--- Looking for __GLIBC__ - not found
--- Performing Test _OFFT_IS_64BIT
--- Performing Test _OFFT_IS_64BIT - Success
--- Performing Test HAVE_DATE_TIME
--- Performing Test HAVE_DATE_TIME - Success
--- Found KF5CoreAddons: /usr/lib/cmake/KF5CoreAddons/KF5CoreAddonsConfig.cmake (found version "5.38.0")
--- Found KF5Config: /usr/lib/cmake/KF5Config/KF5ConfigConfig.cmake (found version "5.38.0")
--- Found KF5DBusAddons: /usr/lib/cmake/KF5DBusAddons/KF5DBusAddonsConfig.cmake (found version "5.38.0")
--- Found Gettext: /usr/bin/msgmerge (found version "0.19.8.1")
--- Found PythonInterp: /usr/bin/python (found version "3.6.2")
--- Found KF5I18n: /usr/lib/cmake/KF5I18n/KF5I18nConfig.cmake (found version "5.38.0")
--- Found KF5IdleTime: /usr/lib/cmake/KF5IdleTime/KF5IdleTimeConfig.cmake (found version "5.38.0")
--- Found KF5Solid: /usr/lib/cmake/KF5Solid/KF5SolidConfig.cmake (found version "5.38.0")
--- Found KF5FileMetaData: /usr/lib/cmake/KF5FileMetaData/KF5FileMetaDataConfig.cmake (found version "5.38.0")
--- Found KF5Crash: /usr/lib/cmake/KF5Crash/KF5CrashConfig.cmake (found version "5.38.0")
--- Found KF5KIO: /usr/lib/cmake/KF5KIO/KF5KIOConfig.cmake (found version "5.38.0")
--- Found KF5: success (found suitable version "5.38.0", minimum required is "5.38.0") found components: CoreAddons Config DBusAddons I18n IdleTime Solid FileMetaData Crash KIO
--- Found LMDB: /usr/include
--- LMDB lib: /usr/lib/liblmdb.a
--- LMDB include: /usr/include
--- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY
--- Performing Test COMPILER_HAS_HIDDEN_VISIBILITY - Success
--- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY
--- Performing Test COMPILER_HAS_HIDDEN_INLINE_VISIBILITY - Success
--- Performing Test COMPILER_HAS_DEPRECATED_ATTR
--- Performing Test COMPILER_HAS_DEPRECATED_ATTR - Success
--- Found Doxygen: /usr/bin/doxygen (found suitable version "1.8.13", minimum required is "1.8.13") found components: doxygen dot
--- Found QHelpGenerator executable: /usr/lib/qt5/bin/qhelpgenerator
--- No such target Qt5Core_QCH defined when calling ecm_add_qch(), ignored.
--- No such target KF5CoreAddons_QCH defined when calling ecm_add_qch(), ignored.
--- No such target KF5FileMetaData_QCH defined when calling ecm_add_qch(), ignored.
--- The following features have been enabled:
-
- * QCH, API documentation in QCH format (for e.g. Qt Assistant, Qt Creator & KDevelop)
-
--- The following OPTIONAL packages have been found:
-
- * Inotify
- Filesystem alteration notifications using inotify
-
--- The following REQUIRED packages have been found:
-
- * ECM (required version >= 5.38.0), Extra CMake Modules, <https://projects.kde.org/projects/kdesupport/extra-cmake-modules>
- * Qt5DBus
- * Qt5Gui (required version >= 5.9.1)
- * Qt5Widgets
- * Qt5Network (required version >= 5.9.1)
- * Qt5Qml
- * Qt5Quick
- * Qt5Test
- * Qt5 (required version >= 5.7.0)
- * KF5CoreAddons (required version >= 5.38.0)
- * KF5Config (required version >= 5.38.0)
- * KF5DBusAddons (required version >= 5.38.0)
- * Gettext
- * PythonInterp
- * KF5I18n (required version >= 5.38.0)
- * KF5IdleTime (required version >= 5.38.0)
- * KF5Solid (required version >= 5.38.0)
- * KF5FileMetaData (required version >= 5.38.0)
- * KF5Crash (required version >= 5.38.0)
- * KF5KIO (required version >= 5.38.0)
- * KF5 (required version >= 5.38.0)
- * LMDB, Lightning Memory-Mapped Database (LMDB), <http://symas.com/mdb>
- * Doxygen (required version >= 1.8.13)
- Needed for API dox QCH file generation
- * QHelpGenerator, Part of Qt5 tools
- Needed for API dox QCH file generation
- * Qt5Core
-
--- Configuring done
--- Generating done
--- Build files have been written to: /usr/src/packages/user/baloo/src/baloo-5.38.0
-Scanning dependencies of target tsfiles-20019e270ed76750f8f8374aa75fc90f
-Scanning dependencies of target pofiles-20019e270ed76750f8f8374aa75fc90f
-Scanning dependencies of target KF5Baloo_QCH
-Scanning dependencies of target KF5BalooCodecs_autogen
-Scanning dependencies of target BalooDBusInterfaces
-Scanning dependencies of target extractorIOTest_autogen
-Scanning dependencies of target baloosearchmodule_autogen
-[ 0%] Generating ts...
-[ 0%] Generating src/lib/KF5Baloo.qch, src/lib/KF5Baloo.tags
-[ 1%] Generating mo...
-Scanning dependencies of target advancedqueryparsertest_autogen
-[ 1%] Generating org.kde.baloo.main.xml
-[ 2%] Automatic MOC for target extractorIOTest
-[ 3%] Automatic MOC for target KF5BalooCodecs
-[ 3%] Generating baloosearchmodule.json
-[ 3%] Automatic MOC for target advancedqueryparsertest
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
--- building... ar/baloo_file5.po to baloo_file5.mo
-Generating MOC predefs moc_predefs.h
-[ 4%] Generating org.kde.baloo.scheduler.xml
--- building... ar/baloo_file_extractor5.po to baloo_file_extractor5.mo
-[ 4%] Built target tsfiles-20019e270ed76750f8f8374aa75fc90f
-About to parse service type file "kdedmodule.desktop"
-Warning: Could not locate service type file kservicetypes5/kdedmodule.desktop, tried ("/home/awilcox/.local/share", "/usr/local/share", "/usr/share") and ":/kservicetypes5/kdedmodule.desktop" ((null):0, (null))
-Generating MOC compilation mocs_compilation.cpp
-Unknown property type for key "X-KDE-DBus-ModuleName" -> falling back to string
-Unknown property type for key "X-KDE-Kded-autoload" -> falling back to string
-Unknown property type for key "X-KDE-Kded-load-on-demand" -> falling back to string
-Unknown property type for key "X-KDE-Kded-phase" -> falling back to string
-Generated "/usr/src/packages/user/baloo/src/baloo-5.38.0/src/kioslaves/kded/baloosearchmodule.json"
-
--- building... ar/balooctl5.po to balooctl5.mo
-[ 4%] Automatic MOC for target baloosearchmodule
-[ 4%] Generating org.kde.baloo.fileindexer.xml
-[ 4%] Built target KF5BalooCodecs_autogen
--- building... ar/baloomonitorplugin.po to baloomonitorplugin.mo
-[ 4%] Generating maininterface.cpp, maininterface.h
-Scanning dependencies of target KF5BalooCodecs
--- building... ar/baloosearch5.po to baloosearch5.mo
-AutoMoc: Warning: "/usr/src/packages/user/baloo/src/baloo-5.38.0/src/kioslaves/kded/baloosearchmodule.cpp"
-The file includes the moc file "baloosearchmodule.moc", but does not contain a Q_OBJECT or Q_GADGET macro.
-
--- building... ar/balooshow5.po to balooshow5.mo
-[ 4%] Generating schedulerinterface.cpp, schedulerinterface.h
--- building... ar/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... ar/kio5_timeline.po to kio5_timeline.mo
--- building... ast/baloo_file5.po to baloo_file5.mo
-[ 4%] Building CXX object src/codecs/CMakeFiles/KF5BalooCodecs.dir/doctermscodec.cpp.o
--- building... ast/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... ast/balooctl5.po to balooctl5.mo
-[ 4%] Generating fileindexerinterface.cpp, fileindexerinterface.h
--- building... ast/baloomonitorplugin.po to baloomonitorplugin.mo
-[ 4%] Generating maininterface.moc
--- building... ast/baloosearch5.po to baloosearch5.mo
--- building... ast/balooshow5.po to balooshow5.mo
--- building... ast/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... ast/kio5_tags.po to kio5_tags.mo
--- building... ast/kio5_timeline.po to kio5_timeline.mo
-[ 5%] Generating schedulerinterface.moc
--- building... bg/baloo_file5.po to baloo_file5.mo
--- building... bg/baloosearch5.po to baloosearch5.mo
--- building... bg/balooshow5.po to balooshow5.mo
--- building... bs/baloo_file5.po to baloo_file5.mo
--- building... bs/balooctl5.po to balooctl5.mo
--- building... bs/baloosearch5.po to baloosearch5.mo
-Generating MOC source include/advancedqueryparsertest.moc
-Generating MOC compilation mocs_compilation.cpp
-Generating MOC source include/iohandlertest.moc
-Generating MOC compilation mocs_compilation.cpp
--- building... bs/balooshow5.po to balooshow5.mo
--- building... bs/kio5_baloosearch.po to kio5_baloosearch.mo
-[ 5%] Built target advancedqueryparsertest_autogen
-Building up file structure...
--- building... bs/kio5_tags.po to kio5_tags.mo
-[ 5%] Built target extractorIOTest_autogen
--- building... bs/kio5_timeline.po to kio5_timeline.mo
--- building... ca/baloo_file5.po to baloo_file5.mo
--- building... ca/baloo_file_extractor5.po to baloo_file_extractor5.mo
-[ 5%] Generating fileindexerinterface.moc
--- building... ca/balooctl5.po to balooctl5.mo
-[ 5%] Building CXX object src/codecs/CMakeFiles/KF5BalooCodecs.dir/positioncodec.cpp.o
--- building... ca/baloomonitorplugin.po to baloomonitorplugin.mo
-Insert custom filters...
-Insert help data for filter section (1 of 1)...
-Insert files...
-Insert contents...
-Insert indices...
-Documentation successfully generated.
--- building... ca/baloosearch5.po to baloosearch5.mo
--- building... ca/balooshow5.po to balooshow5.mo
--- building... ca/kio5_baloosearch.po to kio5_baloosearch.mo
-[ 5%] Built target KF5Baloo_QCH
--- building... ca/kio5_tags.po to kio5_tags.mo
--- building... ca/kio5_timeline.po to kio5_timeline.mo
-Scanning dependencies of target advancedqueryparsertest
--- building... ca@valencia/baloo_file5.po to baloo_file5.mo
--- building... ca@valencia/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... ca@valencia/balooctl5.po to balooctl5.mo
--- building... ca@valencia/baloomonitorplugin.po to baloomonitorplugin.mo
-Generating MOC predefs moc_predefs.h
-Generating MOC source include/baloosearchmodule.moc
-Generating MOC source EWIEGA46WW/moc_baloosearchmodule.cpp
-Generating MOC compilation mocs_compilation.cpp
--- building... ca@valencia/baloosearch5.po to baloosearch5.mo
-[ 6%] Building CXX object autotests/unit/lib/CMakeFiles/advancedqueryparsertest.dir/advancedqueryparsertest.cpp.o
-[ 6%] Built target baloosearchmodule_autogen
--- building... ca@valencia/balooshow5.po to balooshow5.mo
-[ 6%] Building CXX object autotests/unit/lib/CMakeFiles/advancedqueryparsertest.dir/__/__/__/src/lib/advancedqueryparser.cpp.o
-Scanning dependencies of target extractorIOTest
--- building... ca@valencia/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... ca@valencia/kio5_tags.po to kio5_tags.mo
--- building... ca@valencia/kio5_timeline.po to kio5_timeline.mo
-[ 6%] Building CXX object autotests/unit/lib/CMakeFiles/advancedqueryparsertest.dir/__/__/__/src/lib/term.cpp.o
--- building... cs/baloo_file5.po to baloo_file5.mo
-[ 6%] Building CXX object src/file/extractor/autotests/CMakeFiles/extractorIOTest.dir/iohandlertest.cpp.o
--- building... cs/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... cs/balooctl5.po to balooctl5.mo
-[ 6%] Built target BalooDBusInterfaces
--- building... cs/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... cs/baloosearch5.po to baloosearch5.mo
--- building... cs/balooshow5.po to balooshow5.mo
-[ 7%] Building CXX object src/file/extractor/autotests/CMakeFiles/extractorIOTest.dir/__/iohandler.cpp.o
--- building... cs/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... cs/kio5_tags.po to kio5_tags.mo
--- building... cs/kio5_timeline.po to kio5_timeline.mo
--- building... da/baloo_file5.po to baloo_file5.mo
--- building... da/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... da/balooctl5.po to balooctl5.mo
--- building... da/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... da/baloosearch5.po to baloosearch5.mo
--- building... da/balooshow5.po to balooshow5.mo
--- building... da/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... da/kio5_tags.po to kio5_tags.mo
--- building... da/kio5_timeline.po to kio5_timeline.mo
--- building... de/baloo_file5.po to baloo_file5.mo
--- building... de/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... de/balooctl5.po to balooctl5.mo
--- building... de/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... de/baloosearch5.po to baloosearch5.mo
--- building... de/balooshow5.po to balooshow5.mo
--- building... de/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... de/kio5_tags.po to kio5_tags.mo
--- building... de/kio5_timeline.po to kio5_timeline.mo
--- building... el/baloo_file5.po to baloo_file5.mo
--- building... el/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... el/balooctl5.po to balooctl5.mo
--- building... el/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... el/baloosearch5.po to baloosearch5.mo
--- building... el/balooshow5.po to balooshow5.mo
--- building... el/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... el/kio5_tags.po to kio5_tags.mo
--- building... el/kio5_timeline.po to kio5_timeline.mo
--- building... en_GB/baloo_file5.po to baloo_file5.mo
--- building... en_GB/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... en_GB/balooctl5.po to balooctl5.mo
--- building... en_GB/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... en_GB/baloosearch5.po to baloosearch5.mo
--- building... en_GB/balooshow5.po to balooshow5.mo
--- building... en_GB/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... en_GB/kio5_tags.po to kio5_tags.mo
--- building... en_GB/kio5_timeline.po to kio5_timeline.mo
--- building... es/baloo_file5.po to baloo_file5.mo
--- building... es/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... es/balooctl5.po to balooctl5.mo
--- building... es/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... es/baloosearch5.po to baloosearch5.mo
--- building... es/balooshow5.po to balooshow5.mo
--- building... es/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... es/kio5_tags.po to kio5_tags.mo
--- building... es/kio5_timeline.po to kio5_timeline.mo
--- building... et/baloo_file5.po to baloo_file5.mo
--- building... et/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... et/balooctl5.po to balooctl5.mo
--- building... et/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... et/baloosearch5.po to baloosearch5.mo
--- building... et/balooshow5.po to balooshow5.mo
--- building... et/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... et/kio5_tags.po to kio5_tags.mo
--- building... et/kio5_timeline.po to kio5_timeline.mo
--- building... eu/baloo_file5.po to baloo_file5.mo
--- building... eu/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... eu/balooctl5.po to balooctl5.mo
--- building... eu/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... eu/baloosearch5.po to baloosearch5.mo
--- building... eu/balooshow5.po to balooshow5.mo
--- building... eu/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... eu/kio5_tags.po to kio5_tags.mo
--- building... eu/kio5_timeline.po to kio5_timeline.mo
--- building... fi/baloo_file5.po to baloo_file5.mo
--- building... fi/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... fi/balooctl5.po to balooctl5.mo
--- building... fi/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... fi/baloosearch5.po to baloosearch5.mo
--- building... fi/balooshow5.po to balooshow5.mo
--- building... fi/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... fi/kio5_tags.po to kio5_tags.mo
--- building... fi/kio5_timeline.po to kio5_timeline.mo
--- building... fr/baloo_file5.po to baloo_file5.mo
--- building... fr/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... fr/balooctl5.po to balooctl5.mo
--- building... fr/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... fr/baloosearch5.po to baloosearch5.mo
--- building... fr/balooshow5.po to balooshow5.mo
--- building... fr/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... fr/kio5_tags.po to kio5_tags.mo
--- building... fr/kio5_timeline.po to kio5_timeline.mo
--- building... gd/baloo_file5.po to baloo_file5.mo
--- building... gd/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... gd/balooctl5.po to balooctl5.mo
--- building... gd/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... gd/baloosearch5.po to baloosearch5.mo
--- building... gd/balooshow5.po to balooshow5.mo
--- building... gd/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... gd/kio5_tags.po to kio5_tags.mo
--- building... gd/kio5_timeline.po to kio5_timeline.mo
--- building... gl/baloo_file5.po to baloo_file5.mo
--- building... gl/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... gl/balooctl5.po to balooctl5.mo
--- building... gl/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... gl/baloosearch5.po to baloosearch5.mo
--- building... gl/balooshow5.po to balooshow5.mo
--- building... gl/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... gl/kio5_tags.po to kio5_tags.mo
--- building... gl/kio5_timeline.po to kio5_timeline.mo
--- building... he/baloo_file5.po to baloo_file5.mo
--- building... he/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... he/kio5_timeline.po to kio5_timeline.mo
--- building... hu/baloo_file5.po to baloo_file5.mo
--- building... hu/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... hu/balooctl5.po to balooctl5.mo
--- building... hu/baloosearch5.po to baloosearch5.mo
--- building... hu/balooshow5.po to balooshow5.mo
--- building... hu/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... hu/kio5_tags.po to kio5_tags.mo
--- building... hu/kio5_timeline.po to kio5_timeline.mo
--- building... ia/baloo_file5.po to baloo_file5.mo
--- building... ia/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... ia/balooctl5.po to balooctl5.mo
--- building... ia/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... ia/baloosearch5.po to baloosearch5.mo
--- building... ia/balooshow5.po to balooshow5.mo
--- building... ia/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... ia/kio5_tags.po to kio5_tags.mo
--- building... ia/kio5_timeline.po to kio5_timeline.mo
--- building... it/baloo_file5.po to baloo_file5.mo
--- building... it/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... it/balooctl5.po to balooctl5.mo
--- building... it/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... it/baloosearch5.po to baloosearch5.mo
--- building... it/balooshow5.po to balooshow5.mo
--- building... it/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... it/kio5_tags.po to kio5_tags.mo
--- building... it/kio5_timeline.po to kio5_timeline.mo
--- building... ja/baloo_file5.po to baloo_file5.mo
--- building... ja/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... ja/balooctl5.po to balooctl5.mo
--- building... ja/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... ja/baloosearch5.po to baloosearch5.mo
--- building... ja/balooshow5.po to balooshow5.mo
--- building... ja/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... ja/kio5_tags.po to kio5_tags.mo
--- building... ja/kio5_timeline.po to kio5_timeline.mo
--- building... ko/baloo_file5.po to baloo_file5.mo
--- building... ko/balooctl5.po to balooctl5.mo
--- building... ko/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... ko/baloosearch5.po to baloosearch5.mo
--- building... ko/balooshow5.po to balooshow5.mo
--- building... ko/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... ko/kio5_tags.po to kio5_tags.mo
--- building... ko/kio5_timeline.po to kio5_timeline.mo
--- building... lt/baloo_file5.po to baloo_file5.mo
--- building... lt/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... lt/balooctl5.po to balooctl5.mo
--- building... lt/baloosearch5.po to baloosearch5.mo
--- building... lt/balooshow5.po to balooshow5.mo
--- building... lt/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... lt/kio5_tags.po to kio5_tags.mo
-[ 7%] Building CXX object src/codecs/CMakeFiles/KF5BalooCodecs.dir/postingcodec.cpp.o
--- building... lt/kio5_timeline.po to kio5_timeline.mo
--- building... nb/baloo_file5.po to baloo_file5.mo
--- building... nb/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... nb/balooctl5.po to balooctl5.mo
--- building... nb/baloosearch5.po to baloosearch5.mo
--- building... nb/balooshow5.po to balooshow5.mo
--- building... nb/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... nb/kio5_tags.po to kio5_tags.mo
--- building... nb/kio5_timeline.po to kio5_timeline.mo
--- building... nds/baloo_file5.po to baloo_file5.mo
--- building... nds/balooctl5.po to balooctl5.mo
--- building... nds/baloosearch5.po to baloosearch5.mo
--- building... nds/balooshow5.po to balooshow5.mo
--- building... nds/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... nds/kio5_tags.po to kio5_tags.mo
--- building... nds/kio5_timeline.po to kio5_timeline.mo
--- building... nl/baloo_file5.po to baloo_file5.mo
--- building... nl/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... nl/balooctl5.po to balooctl5.mo
--- building... nl/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... nl/baloosearch5.po to baloosearch5.mo
--- building... nl/balooshow5.po to balooshow5.mo
--- building... nl/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... nl/kio5_tags.po to kio5_tags.mo
--- building... nl/kio5_timeline.po to kio5_timeline.mo
--- building... nn/baloo_file5.po to baloo_file5.mo
--- building... nn/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... nn/balooctl5.po to balooctl5.mo
--- building... nn/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... nn/baloosearch5.po to baloosearch5.mo
--- building... nn/balooshow5.po to balooshow5.mo
--- building... nn/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... nn/kio5_tags.po to kio5_tags.mo
--- building... nn/kio5_timeline.po to kio5_timeline.mo
--- building... pa/baloo_file5.po to baloo_file5.mo
--- building... pa/balooctl5.po to balooctl5.mo
--- building... pa/baloosearch5.po to baloosearch5.mo
--- building... pa/balooshow5.po to balooshow5.mo
--- building... pa/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... pa/kio5_tags.po to kio5_tags.mo
--- building... pa/kio5_timeline.po to kio5_timeline.mo
--- building... pl/baloo_file5.po to baloo_file5.mo
--- building... pl/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... pl/balooctl5.po to balooctl5.mo
--- building... pl/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... pl/baloosearch5.po to baloosearch5.mo
--- building... pl/balooshow5.po to balooshow5.mo
--- building... pl/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... pl/kio5_tags.po to kio5_tags.mo
--- building... pl/kio5_timeline.po to kio5_timeline.mo
--- building... pt/baloo_file5.po to baloo_file5.mo
--- building... pt/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... pt/balooctl5.po to balooctl5.mo
--- building... pt/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... pt/baloosearch5.po to baloosearch5.mo
--- building... pt/balooshow5.po to balooshow5.mo
--- building... pt/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... pt/kio5_tags.po to kio5_tags.mo
--- building... pt/kio5_timeline.po to kio5_timeline.mo
--- building... pt_BR/baloo_file5.po to baloo_file5.mo
--- building... pt_BR/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... pt_BR/balooctl5.po to balooctl5.mo
--- building... pt_BR/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... pt_BR/baloosearch5.po to baloosearch5.mo
--- building... pt_BR/balooshow5.po to balooshow5.mo
--- building... pt_BR/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... pt_BR/kio5_tags.po to kio5_tags.mo
--- building... pt_BR/kio5_timeline.po to kio5_timeline.mo
--- building... ro/baloo_file5.po to baloo_file5.mo
--- building... ro/balooctl5.po to balooctl5.mo
--- building... ro/baloosearch5.po to baloosearch5.mo
--- building... ro/balooshow5.po to balooshow5.mo
--- building... ro/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... ro/kio5_tags.po to kio5_tags.mo
--- building... ro/kio5_timeline.po to kio5_timeline.mo
--- building... ru/baloo_file5.po to baloo_file5.mo
--- building... ru/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... ru/balooctl5.po to balooctl5.mo
--- building... ru/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... ru/baloosearch5.po to baloosearch5.mo
--- building... ru/balooshow5.po to balooshow5.mo
-[ 8%] Building CXX object src/codecs/CMakeFiles/KF5BalooCodecs.dir/coding.cpp.o
--- building... ru/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... ru/kio5_tags.po to kio5_tags.mo
--- building... ru/kio5_timeline.po to kio5_timeline.mo
--- building... sk/baloo_file5.po to baloo_file5.mo
--- building... sk/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... sk/balooctl5.po to balooctl5.mo
--- building... sk/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... sk/baloosearch5.po to baloosearch5.mo
--- building... sk/balooshow5.po to balooshow5.mo
--- building... sk/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... sk/kio5_tags.po to kio5_tags.mo
--- building... sk/kio5_timeline.po to kio5_timeline.mo
--- building... sl/baloo_file5.po to baloo_file5.mo
--- building... sl/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... sl/balooctl5.po to balooctl5.mo
--- building... sl/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... sl/baloosearch5.po to baloosearch5.mo
--- building... sl/balooshow5.po to balooshow5.mo
--- building... sl/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... sl/kio5_tags.po to kio5_tags.mo
--- building... sl/kio5_timeline.po to kio5_timeline.mo
--- building... sr/baloo_file5.po to baloo_file5.mo
--- building... sr/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... sr/balooctl5.po to balooctl5.mo
--- building... sr/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... sr/baloosearch5.po to baloosearch5.mo
--- building... sr/balooshow5.po to balooshow5.mo
--- building... sr/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... sr/kio5_tags.po to kio5_tags.mo
--- building... sr/kio5_timeline.po to kio5_timeline.mo
--- building... sr@ijekavian/baloo_file5.po to baloo_file5.mo
--- building... sr@ijekavian/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... sr@ijekavian/balooctl5.po to balooctl5.mo
--- building... sr@ijekavian/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... sr@ijekavian/baloosearch5.po to baloosearch5.mo
--- building... sr@ijekavian/balooshow5.po to balooshow5.mo
-[ 8%] Building CXX object src/file/extractor/autotests/CMakeFiles/extractorIOTest.dir/extractorIOTest_autogen/mocs_compilation.cpp.o
--- building... sr@ijekavian/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... sr@ijekavian/kio5_tags.po to kio5_tags.mo
--- building... sr@ijekavian/kio5_timeline.po to kio5_timeline.mo
--- building... sr@ijekavianlatin/baloo_file5.po to baloo_file5.mo
--- building... sr@ijekavianlatin/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... sr@ijekavianlatin/balooctl5.po to balooctl5.mo
-[ 9%] Building CXX object autotests/unit/lib/CMakeFiles/advancedqueryparsertest.dir/advancedqueryparsertest_autogen/mocs_compilation.cpp.o
--- building... sr@ijekavianlatin/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... sr@ijekavianlatin/baloosearch5.po to baloosearch5.mo
--- building... sr@ijekavianlatin/balooshow5.po to balooshow5.mo
--- building... sr@ijekavianlatin/kio5_baloosearch.po to kio5_baloosearch.mo
-[ 9%] Building CXX object src/codecs/CMakeFiles/KF5BalooCodecs.dir/KF5BalooCodecs_autogen/mocs_compilation.cpp.o
--- building... sr@ijekavianlatin/kio5_tags.po to kio5_tags.mo
--- building... sr@ijekavianlatin/kio5_timeline.po to kio5_timeline.mo
--- building... sr@latin/baloo_file5.po to baloo_file5.mo
--- building... sr@latin/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... sr@latin/balooctl5.po to balooctl5.mo
-Scanning dependencies of target baloosearchmodule
--- building... sr@latin/baloomonitorplugin.po to baloomonitorplugin.mo
-[ 9%] Linking CXX executable ../../../../bin/extractorIOTest
-[ 9%] Building CXX object src/kioslaves/kded/CMakeFiles/baloosearchmodule.dir/baloosearchmodule.cpp.o
--- building... sr@latin/baloosearch5.po to baloosearch5.mo
--- building... sr@latin/balooshow5.po to balooshow5.mo
--- building... sr@latin/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... sr@latin/kio5_tags.po to kio5_tags.mo
--- building... sr@latin/kio5_timeline.po to kio5_timeline.mo
--- building... sv/baloo_file5.po to baloo_file5.mo
--- building... sv/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... sv/balooctl5.po to balooctl5.mo
--- building... sv/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... sv/baloosearch5.po to baloosearch5.mo
--- building... sv/balooshow5.po to balooshow5.mo
--- building... sv/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... sv/kio5_tags.po to kio5_tags.mo
--- building... sv/kio5_timeline.po to kio5_timeline.mo
--- building... tr/baloo_file5.po to baloo_file5.mo
--- building... tr/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... tr/balooctl5.po to balooctl5.mo
--- building... tr/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... tr/baloosearch5.po to baloosearch5.mo
--- building... tr/balooshow5.po to balooshow5.mo
--- building... tr/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... tr/kio5_tags.po to kio5_tags.mo
--- building... tr/kio5_timeline.po to kio5_timeline.mo
--- building... uk/baloo_file5.po to baloo_file5.mo
--- building... uk/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... uk/balooctl5.po to balooctl5.mo
--- building... uk/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... uk/baloosearch5.po to baloosearch5.mo
--- building... uk/balooshow5.po to balooshow5.mo
--- building... uk/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... uk/kio5_tags.po to kio5_tags.mo
-[ 9%] Built target extractorIOTest
--- building... uk/kio5_timeline.po to kio5_timeline.mo
--- building... zh_CN/baloo_file5.po to baloo_file5.mo
-[ 9%] Building CXX object src/kioslaves/kded/CMakeFiles/baloosearchmodule.dir/baloosearchmodule_autogen/mocs_compilation.cpp.o
--- building... zh_CN/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... zh_CN/balooctl5.po to balooctl5.mo
--- building... zh_CN/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... zh_CN/baloosearch5.po to baloosearch5.mo
--- building... zh_CN/balooshow5.po to balooshow5.mo
--- building... zh_CN/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... zh_CN/kio5_tags.po to kio5_tags.mo
--- building... zh_CN/kio5_timeline.po to kio5_timeline.mo
--- building... zh_TW/baloo_file5.po to baloo_file5.mo
--- building... zh_TW/baloo_file_extractor5.po to baloo_file_extractor5.mo
--- building... zh_TW/balooctl5.po to balooctl5.mo
--- building... zh_TW/baloomonitorplugin.po to baloomonitorplugin.mo
--- building... zh_TW/baloosearch5.po to baloosearch5.mo
--- building... zh_TW/balooshow5.po to balooshow5.mo
--- building... zh_TW/kio5_baloosearch.po to kio5_baloosearch.mo
--- building... zh_TW/kio5_tags.po to kio5_tags.mo
--- building... zh_TW/kio5_timeline.po to kio5_timeline.mo
-[ 9%] Built target pofiles-20019e270ed76750f8f8374aa75fc90f
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/codecs/coding.cpp: In function 'char* Baloo::getDifferentialVarInt32(char*, char*, QVector<unsigned int>*)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/codecs/coding.cpp:122:26: warning: 'n' may be used uninitialized in this function [-Wmaybe-uninitialized]
- values->append(n + v);
- ~~^~~
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/codecs/coding.cpp:124:15: warning: 'size' may be used uninitialized in this function [-Wmaybe-uninitialized]
- size--;
- ^
-[ 9%] Linking CXX static library ../../lib/libKF5BalooCodecs.a
-[ 9%] Built target KF5BalooCodecs
-Scanning dependencies of target positioncodectest_autogen
-Scanning dependencies of target doctermscodectest_autogen
-Scanning dependencies of target postingcodectest_autogen
-Scanning dependencies of target KF5BalooEngine_autogen
-Scanning dependencies of target positioncodecbenchmark_autogen
-[ 9%] Automatic MOC for target postingcodectest
-[ 10%] Automatic MOC for target positioncodectest
-[ 11%] Automatic MOC for target doctermscodectest
-[ 11%] Automatic MOC for target KF5BalooEngine
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-[ 12%] Automatic MOC for target positioncodecbenchmark
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Generating MOC compilation mocs_compilation.cpp
-[ 12%] Built target KF5BalooEngine_autogen
-Scanning dependencies of target KF5BalooEngine
-Generating MOC source include/postingcodectest.moc
-Generating MOC compilation mocs_compilation.cpp
-Generating MOC source include/doctermscodectest.moc
-Generating MOC compilation mocs_compilation.cpp
-[ 12%] Built target postingcodectest_autogen
-[ 12%] Built target doctermscodectest_autogen
-Scanning dependencies of target postingcodectest
-[ 12%] Building CXX object autotests/unit/codecs/CMakeFiles/postingcodectest.dir/postingcodectest.cpp.o
-Generating MOC source include/positioncodectest.moc
-Generating MOC compilation mocs_compilation.cpp
-[ 12%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/andpostingiterator.cpp.o
-[ 12%] Built target positioncodectest_autogen
-Scanning dependencies of target doctermscodectest
-[ 12%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/database.cpp.o
-[ 13%] Building CXX object autotests/unit/codecs/CMakeFiles/doctermscodectest.dir/doctermscodectest.cpp.o
-Generating MOC source include/positioncodecbenchmark.moc
-Generating MOC compilation mocs_compilation.cpp
-[ 13%] Built target positioncodecbenchmark_autogen
-Scanning dependencies of target positioncodectest
-[ 13%] Building CXX object autotests/unit/codecs/CMakeFiles/positioncodectest.dir/positioncodectest.cpp.o
-[ 13%] Building CXX object autotests/unit/codecs/CMakeFiles/positioncodectest.dir/positioncodectest_autogen/mocs_compilation.cpp.o
-[ 13%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/document.cpp.o
-[ 14%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/documentdb.cpp.o
-[ 14%] Linking CXX executable ../../../bin/advancedqueryparsertest
-[ 15%] Linking CXX shared module ../../../bin/baloosearchmodule.so
-[ 15%] Built target baloosearchmodule
-Scanning dependencies of target positioncodecbenchmark
-[ 15%] Building CXX object autotests/benchmarks/CMakeFiles/positioncodecbenchmark.dir/positioncodecbenchmark.cpp.o
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/database.cpp:41:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-[ 15%] Built target advancedqueryparsertest
-[ 15%] Building CXX object autotests/benchmarks/CMakeFiles/positioncodecbenchmark.dir/positioncodecbenchmark_autogen/mocs_compilation.cpp.o
-[ 15%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/documentdatadb.cpp.o
-[ 16%] Building CXX object autotests/unit/codecs/CMakeFiles/postingcodectest.dir/postingcodectest_autogen/mocs_compilation.cpp.o
-[ 16%] Linking CXX executable ../../../bin/postingcodectest
-[ 16%] Built target postingcodectest
-[ 16%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/documenturldb.cpp.o
-[ 16%] Building CXX object autotests/unit/codecs/CMakeFiles/doctermscodectest.dir/doctermscodectest_autogen/mocs_compilation.cpp.o
-[ 16%] Linking CXX executable ../../../bin/doctermscodectest
-[ 16%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/documenttimedb.cpp.o
-[ 16%] Built target doctermscodectest
-[ 17%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/documentiddb.cpp.o
-[ 17%] Linking CXX executable ../../../bin/positioncodectest
-[ 17%] Built target positioncodectest
-[ 17%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/enginequery.cpp.o
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/documenturldb.cpp:22:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-[ 17%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/idtreedb.cpp.o
-[ 17%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/idfilenamedb.cpp.o
-[ 17%] Linking CXX executable ../../bin/positioncodecbenchmark
-[ 18%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/mtimedb.cpp.o
-[ 18%] Built target positioncodecbenchmark
-[ 18%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/orpostingiterator.cpp.o
-[ 18%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/phraseanditerator.cpp.o
-[ 18%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/positiondb.cpp.o
-[ 19%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/postingdb.cpp.o
-[ 19%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/postingiterator.cpp.o
-[ 19%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/queryparser.cpp.o
-[ 20%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/termgenerator.cpp.o
-[ 20%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/transaction.cpp.o
-[ 20%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/vectorpostingiterator.cpp.o
-[ 20%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/vectorpositioninfoiterator.cpp.o
-[ 21%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/writetransaction.cpp.o
-[ 21%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/global.cpp.o
-[ 21%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/fsutils.cpp.o
-[ 21%] Building CXX object src/engine/CMakeFiles/KF5BalooEngine.dir/KF5BalooEngine_autogen/mocs_compilation.cpp.o
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/writetransaction.cpp:33:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/transaction.cpp:38:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/fsutils.cpp: In function 'void Baloo::FSUtils::disableCoW(const QString&)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/fsutils.cpp:94:19: warning: overflow in implicit constant conversion [-Woverflow]
- if (ioctl(fd, FS_IOC_GETFLAGS, &flags) == -1) {
- ^~~~~~~~~~~~~~~
-[ 22%] Linking CXX shared library ../../bin/libKF5BalooEngine.so
-[ 22%] Built target KF5BalooEngine
-Scanning dependencies of target baloofilecommon_autogen
-Scanning dependencies of target memorytest_autogen
-Scanning dependencies of target baloo_file_extractor_autogen
-Scanning dependencies of target KF5Baloo_autogen
-Scanning dependencies of target documenturldb_autogen
-Scanning dependencies of target databasebenchmark_autogen
-Scanning dependencies of target writeiotest_autogen
-Scanning dependencies of target querytest_autogen
-[ 23%] Automatic MOC for target baloofilecommon
-[ 23%] Automatic MOC for target KF5Baloo
-[ 23%] Automatic MOC for target baloo_file_extractor
-[ 23%] Automatic MOC for target memorytest
-[ 23%] Automatic MOC for target documenturldb
-[ 23%] Automatic MOC for target databasebenchmark
-[ 23%] Automatic MOC for target writeiotest
-[ 23%] Automatic MOC for target querytest
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Generating MOC compilation mocs_compilation.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 23%] Built target documenturldb_autogen
-Generating MOC compilation mocs_compilation.cpp
-[ 23%] Built target writeiotest_autogen
-[ 23%] Built target memorytest_autogen
-Scanning dependencies of target writetransactiontest_autogen
-Scanning dependencies of target idtreedbtest_autogen
-[ 24%] Automatic MOC for target writetransactiontest
-[ 24%] Automatic MOC for target idtreedbtest
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Scanning dependencies of target documenturldbtest_autogen
-[ 24%] Automatic MOC for target documenturldbtest
-Generating MOC predefs moc_predefs.h
-Generating MOC source include/databasebenchmark.moc
-Generating MOC compilation mocs_compilation.cpp
-Generating MOC source include/querytest.moc
-Generating MOC compilation mocs_compilation.cpp
-[ 24%] Built target databasebenchmark_autogen
-[ 24%] Built target querytest_autogen
-Scanning dependencies of target documentiddbtest_autogen
-Scanning dependencies of target positiondbtest_autogen
-[ 24%] Automatic MOC for target documentiddbtest
-Generating MOC predefs moc_predefs.h
-[ 24%] Automatic MOC for target positiondbtest
-Generating MOC predefs moc_predefs.h
-Generating MOC source include/writetransactiontest.moc
-Generating MOC compilation mocs_compilation.cpp
-[ 24%] Built target writetransactiontest_autogen
-Scanning dependencies of target idfilenamedbtest_autogen
-Generating MOC source include/idtreedbtest.moc
-Generating MOC source EWIEGA46WW/moc_singledbtest.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 24%] Built target idtreedbtest_autogen
-[ 25%] Automatic MOC for target idfilenamedbtest
-Scanning dependencies of target postingdbtest_autogen
-Generating MOC predefs moc_predefs.h
-[ 25%] Automatic MOC for target postingdbtest
-Generating MOC predefs moc_predefs.h
-Generating MOC source include/documenturldbtest.moc
-Generating MOC source EWIEGA46WW/moc_singledbtest.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 25%] Built target documenturldbtest_autogen
-Scanning dependencies of target mtimedbtest_autogen
-Generating MOC source YH6BUZA3PE/moc_fileindexerconfig.cpp
-Generating MOC source YH6BUZA3PE/moc_storagedevices.cpp
-Generating MOC source EWIEGA46WW/moc_filemonitor.cpp
-Generating MOC source EWIEGA46WW/moc_queryrunnable.cpp
-Generating MOC source EWIEGA46WW/moc_taglistjob.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 25%] Built target KF5Baloo_autogen
-Scanning dependencies of target documentdbtest_autogen
-[ 26%] Automatic MOC for target mtimedbtest
-[ 26%] Automatic MOC for target documentdbtest
-Generating MOC source include/documentiddbtest.moc
-Generating MOC source EWIEGA46WW/moc_singledbtest.cpp
-Generating MOC compilation mocs_compilation.cpp
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-[ 26%] Built target documentiddbtest_autogen
-Scanning dependencies of target termgeneratortest_autogen
-Generating MOC source EWIEGA46WW/moc_app.cpp
-Generating MOC source EWIEGA46WW/moc_idlestatemonitor.cpp
-Generating MOC source YH6BUZA3PE/moc_fileindexerconfig.cpp
-Generating MOC source YH6BUZA3PE/moc_storagedevices.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 26%] Built target baloo_file_extractor_autogen
-Generating MOC source include/positiondbtest.moc
-Generating MOC source EWIEGA46WW/moc_singledbtest.cpp
-Generating MOC compilation mocs_compilation.cpp
-Scanning dependencies of target queryparsertest_autogen
-[ 26%] Automatic MOC for target termgeneratortest
-[ 26%] Built target positiondbtest_autogen
-[ 27%] Automatic MOC for target queryparsertest
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Scanning dependencies of target documenttimedbtest_autogen
-[ 27%] Automatic MOC for target documenttimedbtest
-Generating MOC predefs moc_predefs.h
-Generating MOC source include/idfilenamedbtest.moc
-Generating MOC source EWIEGA46WW/moc_singledbtest.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 27%] Built target idfilenamedbtest_autogen
-Scanning dependencies of target andpostingiteratortest_autogen
-[ 27%] Automatic MOC for target andpostingiteratortest
-Generating MOC predefs moc_predefs.h
-Generating MOC source include/postingdbtest.moc
-Generating MOC source EWIEGA46WW/moc_singledbtest.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 27%] Built target postingdbtest_autogen
-Scanning dependencies of target transactiontest_autogen
-Generating MOC source include/mtimedbtest.moc
-Generating MOC source EWIEGA46WW/moc_singledbtest.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 27%] Automatic MOC for target transactiontest
-[ 27%] Built target mtimedbtest_autogen
-Scanning dependencies of target orpostingiteratortest_autogen
-Generating MOC source include/documentdbtest.moc
-Generating MOC source EWIEGA46WW/moc_singledbtest.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 27%] Automatic MOC for target orpostingiteratortest
-Generating MOC predefs moc_predefs.h
-[ 27%] Built target documentdbtest_autogen
-Generating MOC predefs moc_predefs.h
-Scanning dependencies of target phraseanditeratortest_autogen
-[ 27%] Automatic MOC for target phraseanditeratortest
-Generating MOC predefs moc_predefs.h
-Generating MOC source include/documenttimedbtest.moc
-Generating MOC source EWIEGA46WW/moc_singledbtest.cpp
-Generating MOC compilation mocs_compilation.cpp
-Generating MOC source include/termgeneratortest.moc
-Generating MOC source EWIEGA46WW/moc_singledbtest.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 27%] Built target termgeneratortest_autogen
-[ 27%] Built target documenttimedbtest_autogen
-Scanning dependencies of target documentdatadbtest_autogen
-Scanning dependencies of target KF5Baloo
-[ 27%] Automatic MOC for target documentdatadbtest
-Generating MOC predefs moc_predefs.h
-Generating MOC source include/queryparsertest.moc
-Generating MOC source EWIEGA46WW/moc_singledbtest.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 27%] Built target queryparsertest_autogen
-Generating MOC source include/andpostingiteratortest.moc
-Generating MOC source EWIEGA46WW/moc_singledbtest.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 27%] Built target andpostingiteratortest_autogen
-Scanning dependencies of target baloo_file_extractor
-Scanning dependencies of target documenturldb
-[ 27%] Building CXX object tests/engine/CMakeFiles/documenturldb.dir/documenturldbtest.cpp.o
-[ 27%] Building CXX object src/lib/CMakeFiles/KF5Baloo.dir/term.cpp.o
-Generating MOC source include/orpostingiteratortest.moc
-Generating MOC source EWIEGA46WW/moc_singledbtest.cpp
-Generating MOC compilation mocs_compilation.cpp
-Generating MOC source include/transactiontest.moc
-Generating MOC source EWIEGA46WW/moc_singledbtest.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 27%] Built target orpostingiteratortest_autogen
-Generating MOC source include/phraseanditeratortest.moc
-Generating MOC source EWIEGA46WW/moc_singledbtest.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 27%] Built target transactiontest_autogen
-Scanning dependencies of target memorytest
-[ 27%] Built target phraseanditeratortest_autogen
-[ 27%] Building CXX object src/lib/CMakeFiles/KF5Baloo.dir/query.cpp.o
-Scanning dependencies of target writeiotest
-[ 27%] Building CXX object tests/engine/CMakeFiles/memorytest.dir/memorytest.cpp.o
-Generating MOC source include/documentdatadbtest.moc
-Generating MOC source EWIEGA46WW/moc_singledbtest.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 27%] Built target documentdatadbtest_autogen
-[ 28%] Building CXX object tests/engine/CMakeFiles/writeiotest.dir/writeiotest.cpp.o
-[ 30%] Building CXX object src/file/extractor/CMakeFiles/baloo_file_extractor.dir/main.cpp.o
-[ 30%] Building CXX object tests/engine/CMakeFiles/memorytest.dir/memorytest_autogen/mocs_compilation.cpp.o
-[ 31%] Building CXX object src/lib/CMakeFiles/KF5Baloo.dir/queryrunnable.cpp.o
-Generating MOC source include/moc_kinotify.cpp
-Generating MOC source EWIEGA46WW/moc_extractorprocess.cpp
-Generating MOC source EWIEGA46WW/moc_filecontentindexer.cpp
-Generating MOC source EWIEGA46WW/moc_fileindexerconfig.cpp
-Generating MOC source EWIEGA46WW/moc_fileindexscheduler.cpp
-Generating MOC source EWIEGA46WW/moc_filewatch.cpp
-Generating MOC source EWIEGA46WW/moc_firstrunindexer.cpp
-Generating MOC source EWIEGA46WW/moc_indexcleaner.cpp
-Generating MOC source EWIEGA46WW/moc_mainadaptor.cpp
-Generating MOC source EWIEGA46WW/moc_mainhub.cpp
-Generating MOC source EWIEGA46WW/moc_metadatamover.cpp
-Generating MOC source EWIEGA46WW/moc_modifiedfileindexer.cpp
-Generating MOC source EWIEGA46WW/moc_newfileindexer.cpp
-Generating MOC source EWIEGA46WW/moc_pendingfilequeue.cpp
-Generating MOC source EWIEGA46WW/moc_powerstatemonitor.cpp
-Generating MOC source EWIEGA46WW/moc_storagedevices.cpp
-Generating MOC source EWIEGA46WW/moc_timeestimator.cpp
-Generating MOC source EWIEGA46WW/moc_unindexedfileindexer.cpp
-Generating MOC source EWIEGA46WW/moc_xattrindexer.cpp
-Generating MOC compilation mocs_compilation.cpp
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/tests/engine/documenturldbtest.cpp:32:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-[ 31%] Building CXX object tests/engine/CMakeFiles/documenturldb.dir/documenturldb_autogen/mocs_compilation.cpp.o
-[ 31%] Building CXX object src/lib/CMakeFiles/KF5Baloo.dir/resultiterator.cpp.o
-[ 32%] Linking CXX executable ../../bin/documenturldb
-[ 32%] Linking CXX executable ../../bin/memorytest
-[ 32%] Building CXX object tests/engine/CMakeFiles/writeiotest.dir/writeiotest_autogen/mocs_compilation.cpp.o
-[ 32%] Linking CXX executable ../../bin/writeiotest
-[ 32%] Building CXX object src/file/extractor/CMakeFiles/baloo_file_extractor.dir/app.cpp.o
-[ 32%] Built target writeiotest
-[ 32%] Built target baloofilecommon_autogen
-[ 32%] Built target memorytest
-[ 32%] Built target documenturldb
-Scanning dependencies of target databasebenchmark
-Scanning dependencies of target querytest
-Scanning dependencies of target writetransactiontest
-Scanning dependencies of target documenturldbtest
-Scanning dependencies of target idtreedbtest
-[ 33%] Building CXX object autotests/benchmarks/CMakeFiles/databasebenchmark.dir/databasebenchmark.cpp.o
-[ 33%] Building CXX object autotests/integration/CMakeFiles/querytest.dir/querytest.cpp.o
-[ 33%] Building CXX object autotests/unit/engine/CMakeFiles/documenturldbtest.dir/documenturldbtest.cpp.o
-[ 34%] Building CXX object autotests/integration/CMakeFiles/writetransactiontest.dir/writetransactiontest.cpp.o
-[ 34%] Building CXX object autotests/unit/engine/CMakeFiles/idtreedbtest.dir/idtreedbtest.cpp.o
-[ 34%] Building CXX object src/lib/CMakeFiles/KF5Baloo.dir/advancedqueryparser.cpp.o
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/src/file/extractor/app.cpp:26:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-[ 34%] Building CXX object src/lib/CMakeFiles/KF5Baloo.dir/file.cpp.o
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/autotests/integration/querytest.cpp:26:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/autotests/integration/writetransactiontest.cpp:24:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/autotests/unit/engine/documenturldbtest.cpp:23:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/src/lib/file.cpp:27:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-[ 34%] Building CXX object autotests/benchmarks/CMakeFiles/databasebenchmark.dir/databasebenchmark_autogen/mocs_compilation.cpp.o
-[ 34%] Linking CXX executable ../../bin/databasebenchmark
-[ 34%] Building CXX object autotests/unit/engine/CMakeFiles/idtreedbtest.dir/singledbtest.cpp.o
-[ 34%] Built target databasebenchmark
-Scanning dependencies of target documentiddbtest
-[ 34%] Building CXX object autotests/unit/engine/CMakeFiles/documentiddbtest.dir/documentiddbtest.cpp.o
-[ 35%] Building CXX object src/lib/CMakeFiles/KF5Baloo.dir/filemonitor.cpp.o
-[ 35%] Building CXX object src/lib/CMakeFiles/KF5Baloo.dir/taglistjob.cpp.o
-[ 35%] Building CXX object src/file/extractor/CMakeFiles/baloo_file_extractor.dir/result.cpp.o
-[ 35%] Building CXX object autotests/integration/CMakeFiles/querytest.dir/querytest_autogen/mocs_compilation.cpp.o
-[ 35%] Building CXX object autotests/unit/engine/CMakeFiles/documenturldbtest.dir/singledbtest.cpp.o
-[ 36%] Linking CXX executable ../../bin/querytest
-[ 36%] Built target querytest
-Scanning dependencies of target positiondbtest
-[ 36%] Building CXX object autotests/unit/engine/CMakeFiles/positiondbtest.dir/positiondbtest.cpp.o
-[ 36%] Building CXX object autotests/unit/engine/CMakeFiles/idtreedbtest.dir/idtreedbtest_autogen/mocs_compilation.cpp.o
-[ 37%] Building CXX object autotests/unit/engine/CMakeFiles/documentiddbtest.dir/singledbtest.cpp.o
-[ 37%] Building CXX object src/lib/CMakeFiles/KF5Baloo.dir/indexerconfig.cpp.o
-[ 38%] Building CXX object autotests/unit/engine/CMakeFiles/documenturldbtest.dir/documenturldbtest_autogen/mocs_compilation.cpp.o
-[ 39%] Building CXX object src/lib/CMakeFiles/KF5Baloo.dir/__/file/fileindexerconfig.cpp.o
-[ 40%] Linking CXX executable ../../../bin/idtreedbtest
-[ 40%] Built target idtreedbtest
-Scanning dependencies of target idfilenamedbtest
-[ 40%] Building CXX object autotests/unit/engine/CMakeFiles/idfilenamedbtest.dir/idfilenamedbtest.cpp.o
-[ 40%] Building CXX object autotests/unit/engine/CMakeFiles/documentiddbtest.dir/documentiddbtest_autogen/mocs_compilation.cpp.o
-[ 40%] Building CXX object autotests/unit/engine/CMakeFiles/positiondbtest.dir/singledbtest.cpp.o
-[ 40%] Building CXX object autotests/integration/CMakeFiles/writetransactiontest.dir/writetransactiontest_autogen/mocs_compilation.cpp.o
-[ 40%] Linking CXX executable ../../bin/writetransactiontest
-[ 40%] Built target writetransactiontest
-[ 40%] Building CXX object autotests/unit/engine/CMakeFiles/positiondbtest.dir/positiondbtest_autogen/mocs_compilation.cpp.o
-[ 40%] Linking CXX executable ../../../bin/documenturldbtest
-[ 40%] Built target documenturldbtest
-Scanning dependencies of target postingdbtest
-[ 40%] Building CXX object autotests/unit/engine/CMakeFiles/postingdbtest.dir/postingdbtest.cpp.o
-[ 41%] Building CXX object autotests/unit/engine/CMakeFiles/postingdbtest.dir/singledbtest.cpp.o
-[ 41%] Building CXX object src/lib/CMakeFiles/KF5Baloo.dir/__/file/storagedevices.cpp.o
-[ 41%] Building CXX object src/lib/CMakeFiles/KF5Baloo.dir/__/file/regexpcache.cpp.o
-[ 41%] Linking CXX executable ../../../bin/documentiddbtest
-[ 42%] Linking CXX executable ../../../bin/positiondbtest
-[ 42%] Built target documentiddbtest
-Scanning dependencies of target mtimedbtest
-[ 42%] Built target positiondbtest
-[ 43%] Building CXX object autotests/unit/engine/CMakeFiles/mtimedbtest.dir/mtimedbtest.cpp.o
-Scanning dependencies of target documentdbtest
-[ 43%] Building CXX object autotests/unit/engine/CMakeFiles/documentdbtest.dir/documentdbtest.cpp.o
-[ 44%] Building CXX object src/file/extractor/CMakeFiles/baloo_file_extractor.dir/iohandler.cpp.o
-[ 44%] Building CXX object src/file/extractor/CMakeFiles/baloo_file_extractor.dir/idlestatemonitor.cpp.o
-[ 44%] Building CXX object autotests/unit/engine/CMakeFiles/postingdbtest.dir/postingdbtest_autogen/mocs_compilation.cpp.o
-[ 44%] Building CXX object src/lib/CMakeFiles/KF5Baloo.dir/__/file/fileexcludefilters.cpp.o
-[ 44%] Building CXX object src/file/extractor/CMakeFiles/baloo_file_extractor.dir/__/priority.cpp.o
-[ 45%] Building CXX object autotests/unit/engine/CMakeFiles/idfilenamedbtest.dir/singledbtest.cpp.o
-[ 45%] Building CXX object autotests/unit/engine/CMakeFiles/idfilenamedbtest.dir/idfilenamedbtest_autogen/mocs_compilation.cpp.o
-[ 45%] Building CXX object autotests/unit/engine/CMakeFiles/documentdbtest.dir/singledbtest.cpp.o
-[ 45%] Building CXX object autotests/unit/engine/CMakeFiles/mtimedbtest.dir/singledbtest.cpp.o
-[ 45%] Building CXX object src/file/extractor/CMakeFiles/baloo_file_extractor.dir/__/basicindexingjob.cpp.o
-[ 46%] Building CXX object src/lib/CMakeFiles/KF5Baloo.dir/__/file/baloodebug.cpp.o
-[ 46%] Linking CXX executable ../../../bin/postingdbtest
-[ 46%] Built target postingdbtest
-Scanning dependencies of target termgeneratortest
-[ 46%] Building CXX object autotests/unit/engine/CMakeFiles/termgeneratortest.dir/termgeneratortest.cpp.o
-[ 47%] Building CXX object autotests/unit/engine/CMakeFiles/termgeneratortest.dir/singledbtest.cpp.o
-[ 48%] Building CXX object src/file/extractor/CMakeFiles/baloo_file_extractor.dir/__/fileindexerconfig.cpp.o
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/src/file/basicindexingjob.cpp:25:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-[ 49%] Building CXX object autotests/unit/engine/CMakeFiles/documentdbtest.dir/documentdbtest_autogen/mocs_compilation.cpp.o
-[ 49%] Linking CXX executable ../../../bin/idfilenamedbtest
-[ 49%] Building CXX object autotests/unit/engine/CMakeFiles/mtimedbtest.dir/mtimedbtest_autogen/mocs_compilation.cpp.o
-[ 49%] Built target idfilenamedbtest
-Scanning dependencies of target queryparsertest
-[ 50%] Building CXX object autotests/unit/engine/CMakeFiles/queryparsertest.dir/queryparsertest.cpp.o
-[ 50%] Building CXX object src/lib/CMakeFiles/KF5Baloo.dir/searchstore.cpp.o
-[ 50%] Building CXX object autotests/unit/engine/CMakeFiles/termgeneratortest.dir/termgeneratortest_autogen/mocs_compilation.cpp.o
-[ 50%] Linking CXX executable ../../../bin/documentdbtest
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/src/lib/searchstore.cpp:34:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-[ 50%] Linking CXX executable ../../../bin/mtimedbtest
-[ 50%] Built target documentdbtest
-Scanning dependencies of target documenttimedbtest
-[ 51%] Building CXX object autotests/unit/engine/CMakeFiles/documenttimedbtest.dir/documenttimedbtest.cpp.o
-[ 51%] Built target mtimedbtest
-Scanning dependencies of target andpostingiteratortest
-[ 51%] Building CXX object autotests/unit/engine/CMakeFiles/andpostingiteratortest.dir/andpostingiteratortest.cpp.o
-[ 51%] Building CXX object src/file/extractor/CMakeFiles/baloo_file_extractor.dir/__/storagedevices.cpp.o
-[ 51%] Building CXX object src/file/extractor/CMakeFiles/baloo_file_extractor.dir/__/regexpcache.cpp.o
-[ 51%] Building CXX object src/file/extractor/CMakeFiles/baloo_file_extractor.dir/__/fileexcludefilters.cpp.o
-[ 51%] Linking CXX executable ../../../bin/termgeneratortest
-[ 51%] Building CXX object autotests/unit/engine/CMakeFiles/documenttimedbtest.dir/singledbtest.cpp.o
-[ 51%] Building CXX object src/lib/CMakeFiles/KF5Baloo.dir/__/dbus/maininterface.cpp.o
-[ 51%] Built target termgeneratortest
-Scanning dependencies of target transactiontest
-[ 51%] Building CXX object autotests/unit/engine/CMakeFiles/transactiontest.dir/transactiontest.cpp.o
-[ 52%] Building CXX object autotests/unit/engine/CMakeFiles/andpostingiteratortest.dir/singledbtest.cpp.o
-[ 52%] Building CXX object autotests/unit/engine/CMakeFiles/queryparsertest.dir/singledbtest.cpp.o
-[ 53%] Building CXX object src/file/extractor/CMakeFiles/baloo_file_extractor.dir/__/baloodebug.cpp.o
-[ 53%] Building CXX object src/file/extractor/CMakeFiles/baloo_file_extractor.dir/baloo_file_extractor_autogen/mocs_compilation.cpp.o
-[ 53%] Building CXX object autotests/unit/engine/CMakeFiles/queryparsertest.dir/queryparsertest_autogen/mocs_compilation.cpp.o
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/autotests/unit/engine/transactiontest.cpp:23:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-[ 53%] Building CXX object autotests/unit/engine/CMakeFiles/andpostingiteratortest.dir/andpostingiteratortest_autogen/mocs_compilation.cpp.o
-[ 53%] Building CXX object autotests/unit/engine/CMakeFiles/transactiontest.dir/singledbtest.cpp.o
-[ 53%] Building CXX object autotests/unit/engine/CMakeFiles/documenttimedbtest.dir/documenttimedbtest_autogen/mocs_compilation.cpp.o
-[ 53%] Building CXX object autotests/unit/engine/CMakeFiles/transactiontest.dir/transactiontest_autogen/mocs_compilation.cpp.o
-[ 53%] Linking CXX executable ../../../bin/baloo_file_extractor
-[ 53%] Linking CXX executable ../../../bin/queryparsertest
-[ 53%] Built target queryparsertest
-Scanning dependencies of target orpostingiteratortest
-[ 53%] Building CXX object autotests/unit/engine/CMakeFiles/orpostingiteratortest.dir/orpostingiteratortest.cpp.o
-[ 53%] Building CXX object src/lib/CMakeFiles/KF5Baloo.dir/KF5Baloo_autogen/mocs_compilation.cpp.o
-[ 53%] Building CXX object autotests/unit/engine/CMakeFiles/orpostingiteratortest.dir/singledbtest.cpp.o
-[ 53%] Building CXX object autotests/unit/engine/CMakeFiles/orpostingiteratortest.dir/orpostingiteratortest_autogen/mocs_compilation.cpp.o
-[ 53%] Linking CXX executable ../../../bin/andpostingiteratortest
-[ 53%] Built target baloo_file_extractor
-Scanning dependencies of target phraseanditeratortest
-[ 53%] Building CXX object autotests/unit/engine/CMakeFiles/phraseanditeratortest.dir/phraseanditeratortest.cpp.o
-[ 53%] Built target andpostingiteratortest
-Scanning dependencies of target documentdatadbtest
-[ 53%] Building CXX object autotests/unit/engine/CMakeFiles/documentdatadbtest.dir/documentdatadbtest.cpp.o
-[ 54%] Linking CXX executable ../../../bin/documenttimedbtest
-[ 55%] Linking CXX executable ../../../bin/transactiontest
-[ 55%] Built target documenttimedbtest
-Scanning dependencies of target baloofilecommon
-[ 55%] Built target transactiontest
-[ 55%] Building CXX object autotests/unit/engine/CMakeFiles/documentdatadbtest.dir/singledbtest.cpp.o
-[ 55%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/mainhub.cpp.o
-[ 55%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/mainadaptor.cpp.o
-[ 56%] Linking CXX shared library ../../bin/libKF5Baloo.so
-[ 57%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/fileindexerconfig.cpp.o
-[ 57%] Built target KF5Baloo
-Scanning dependencies of target balooplugin_autogen
-[ 57%] Automatic MOC for target balooplugin
-Generating MOC predefs moc_predefs.h
-Generating MOC source EWIEGA46WW/moc_balooplugin.cpp
-Generating MOC source EWIEGA46WW/moc_queryresultsmodel.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 57%] Built target balooplugin_autogen
-Scanning dependencies of target baloomonitorplugin_autogen
-[ 57%] Automatic MOC for target baloomonitorplugin
-Generating MOC predefs moc_predefs.h
-[ 58%] Linking CXX executable ../../../bin/orpostingiteratortest
-[ 58%] Building CXX object autotests/unit/engine/CMakeFiles/documentdatadbtest.dir/documentdatadbtest_autogen/mocs_compilation.cpp.o
-Generating MOC source EWIEGA46WW/moc_baloomonitorplugin.cpp
-Generating MOC source EWIEGA46WW/moc_monitor.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 58%] Built target baloomonitorplugin_autogen
-Scanning dependencies of target timeline_autogen
-[ 59%] Automatic MOC for target timeline
-Generating MOC predefs moc_predefs.h
-Generating MOC compilation mocs_compilation.cpp
-[ 59%] Built target timeline_autogen
-Scanning dependencies of target tags_autogen
-[ 59%] Automatic MOC for target tags
-[ 59%] Built target orpostingiteratortest
-Generating MOC predefs moc_predefs.h
-Scanning dependencies of target kio_baloosearch_autogen
-[ 59%] Automatic MOC for target kio_baloosearch
-Generating MOC predefs moc_predefs.h
-Generating MOC compilation mocs_compilation.cpp
-[ 59%] Built target kio_baloosearch_autogen
-[ 59%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/basicindexingjob.cpp.o
-[ 59%] Building CXX object autotests/unit/engine/CMakeFiles/phraseanditeratortest.dir/singledbtest.cpp.o
-Generating MOC source EWIEGA46WW/moc_kio_tags.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 59%] Built target tags_autogen
-Scanning dependencies of target baloosearch_autogen
-[ 59%] Automatic MOC for target baloosearch
-Generating MOC predefs moc_predefs.h
-Generating MOC compilation mocs_compilation.cpp
-[ 59%] Built target baloosearch_autogen
-Scanning dependencies of target balooshow_autogen
-[ 59%] Automatic MOC for target balooshow
-Generating MOC predefs moc_predefs.h
-Generating MOC compilation mocs_compilation.cpp
-[ 59%] Built target balooshow_autogen
-Scanning dependencies of target filefetchjobtest_autogen
-Scanning dependencies of target filemonitortest_autogen
-[ 60%] Automatic MOC for target filefetchjobtest
-[ 60%] Automatic MOC for target filemonitortest
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Generating MOC source include/filemonitortest.moc
-Generating MOC compilation mocs_compilation.cpp
-[ 60%] Built target filemonitortest_autogen
-Scanning dependencies of target queryserializationtest_autogen
-[ 60%] Automatic MOC for target queryserializationtest
-Generating MOC predefs moc_predefs.h
-[ 60%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/powerstatemonitor.cpp.o
-Generating MOC source include/filefetchjobtest.moc
-Generating MOC compilation mocs_compilation.cpp
-[ 60%] Built target filefetchjobtest_autogen
-Scanning dependencies of target balooplugin
-[ 61%] Building CXX object src/qml/CMakeFiles/balooplugin.dir/balooplugin.cpp.o
-[ 61%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/fileindexscheduler.cpp.o
-Generating MOC source include/queryserializationtest.moc
-Generating MOC compilation mocs_compilation.cpp
-[ 61%] Built target queryserializationtest_autogen
-Scanning dependencies of target baloomonitorplugin
-[ 61%] Building CXX object src/qml/experimental/CMakeFiles/baloomonitorplugin.dir/baloomonitorplugin.cpp.o
-[ 62%] Linking CXX executable ../../../bin/documentdatadbtest
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/src/file/basicindexingjob.cpp:25:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-[ 62%] Built target documentdatadbtest
-Scanning dependencies of target timeline
-[ 63%] Building CXX object src/kioslaves/timeline/CMakeFiles/timeline.dir/kio_timeline.cpp.o
-[ 64%] Building CXX object autotests/unit/engine/CMakeFiles/phraseanditeratortest.dir/phraseanditeratortest_autogen/mocs_compilation.cpp.o
-[ 65%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/firstrunindexer.cpp.o
-[ 65%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/newfileindexer.cpp.o
-[ 65%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/xattrindexer.cpp.o
-[ 65%] Linking CXX executable ../../../bin/phraseanditeratortest
-[ 65%] Built target phraseanditeratortest
-Scanning dependencies of target tags
-[ 65%] Building CXX object src/kioslaves/tags/CMakeFiles/tags.dir/kio_tags.cpp.o
-[ 65%] Building CXX object src/qml/CMakeFiles/balooplugin.dir/queryresultsmodel.cpp.o
-[ 65%] Building CXX object src/kioslaves/timeline/CMakeFiles/timeline.dir/timelinetools.cpp.o
-[ 66%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/modifiedfileindexer.cpp.o
-[ 66%] Building CXX object src/qml/experimental/CMakeFiles/baloomonitorplugin.dir/monitor.cpp.o
-[ 66%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/unindexedfileindexer.cpp.o
-[ 66%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/filecontentindexer.cpp.o
-[ 66%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/filecontentindexerprovider.cpp.o
-[ 66%] Building CXX object src/qml/CMakeFiles/balooplugin.dir/balooplugin_autogen/mocs_compilation.cpp.o
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/src/file/modifiedfileindexer.cpp:23:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-[ 66%] Building CXX object src/kioslaves/tags/CMakeFiles/tags.dir/tags_autogen/mocs_compilation.cpp.o
-[ 67%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/extractorprocess.cpp.o
-[ 67%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/timeestimator.cpp.o
-[ 67%] Building CXX object src/kioslaves/timeline/CMakeFiles/timeline.dir/timeline_autogen/mocs_compilation.cpp.o
-[ 67%] Linking CXX shared module ../../../bin/timeline.so
-[ 68%] Linking CXX shared library ../../bin/libbalooplugin.so
-[ 68%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/indexcleaner.cpp.o
-[ 68%] Built target timeline
-Scanning dependencies of target kio_baloosearch
-[ 68%] Building CXX object src/kioslaves/search/CMakeFiles/kio_baloosearch.dir/kio_search.cpp.o
-[ 68%] Built target balooplugin
-Scanning dependencies of target baloosearch
-[ 68%] Building CXX object src/tools/baloosearch/CMakeFiles/baloosearch.dir/main.cpp.o
-[ 69%] Linking CXX shared module ../../../bin/tags.so
-[ 69%] Building CXX object src/tools/baloosearch/CMakeFiles/baloosearch.dir/baloosearch_autogen/mocs_compilation.cpp.o
-[ 70%] Building CXX object src/qml/experimental/CMakeFiles/baloomonitorplugin.dir/__/__/dbus/schedulerinterface.cpp.o
-[ 70%] Building CXX object src/qml/experimental/CMakeFiles/baloomonitorplugin.dir/__/__/dbus/fileindexerinterface.cpp.o
-[ 70%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/priority.cpp.o
-[ 70%] Built target tags
-Scanning dependencies of target balooshow
-[ 70%] Building CXX object src/tools/balooshow/CMakeFiles/balooshow.dir/main.cpp.o
-[ 71%] Building CXX object src/tools/balooshow/CMakeFiles/balooshow.dir/balooshow_autogen/mocs_compilation.cpp.o
-[ 72%] Building CXX object src/kioslaves/search/CMakeFiles/kio_baloosearch.dir/kio_baloosearch_autogen/mocs_compilation.cpp.o
-[ 73%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/regexpcache.cpp.o
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/src/file/indexcleaner.cpp:25:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-[ 73%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/fileexcludefilters.cpp.o
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/src/tools/balooshow/main.cpp:38:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-[ 73%] Linking CXX shared module ../../../bin/baloosearch.so
-[ 74%] Linking CXX executable ../../../bin/baloosearch
-[ 74%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/storagedevices.cpp.o
-[ 74%] Built target kio_baloosearch
-Scanning dependencies of target filefetchjobtest
-[ 74%] Building CXX object autotests/unit/lib/CMakeFiles/filefetchjobtest.dir/filefetchjobtest.cpp.o
-[ 74%] Built target baloosearch
-[ 74%] Building CXX object autotests/unit/lib/CMakeFiles/filefetchjobtest.dir/filefetchjobtest_autogen/mocs_compilation.cpp.o
-Scanning dependencies of target filemonitortest
-[ 74%] Building CXX object autotests/unit/lib/CMakeFiles/filemonitortest.dir/filemonitortest.cpp.o
-[ 74%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/filtereddiriterator.cpp.o
-[ 75%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/unindexedfileiterator.cpp.o
-[ 75%] Building CXX object src/qml/experimental/CMakeFiles/baloomonitorplugin.dir/baloomonitorplugin_autogen/mocs_compilation.cpp.o
-[ 75%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/migrator.cpp.o
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/autotests/unit/lib/filefetchjobtest.cpp:25:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-[ 75%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/baloodebug.cpp.o
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/src/file/unindexedfileiterator.cpp:23:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-[ 75%] Linking CXX executable ../../../bin/balooshow
-[ 75%] Built target balooshow
-Scanning dependencies of target queryserializationtest
-[ 75%] Building CXX object autotests/unit/lib/CMakeFiles/queryserializationtest.dir/queryserializationtest.cpp.o
-[ 76%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/fileinfo.cpp.o
-[ 76%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/filewatch.cpp.o
-[ 76%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/pendingfilequeue.cpp.o
-[ 76%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/metadatamover.cpp.o
-[ 77%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/pendingfile.cpp.o
-[ 77%] Building CXX object autotests/unit/lib/CMakeFiles/filemonitortest.dir/filemonitortest_autogen/mocs_compilation.cpp.o
-[ 78%] Linking CXX executable ../../../bin/filemonitortest
-[ 78%] Linking CXX shared library ../../../bin/libbaloomonitorplugin.so
-[ 78%] Built target filemonitortest
-[ 78%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/kinotify.cpp.o
-[ 78%] Built target baloomonitorplugin
-[ 78%] Building CXX object src/file/CMakeFiles/baloofilecommon.dir/baloofilecommon_autogen/mocs_compilation.cpp.o
-[ 78%] Linking CXX executable ../../../bin/filefetchjobtest
-[ 78%] Built target filefetchjobtest
-[ 78%] Building CXX object autotests/unit/lib/CMakeFiles/queryserializationtest.dir/queryserializationtest_autogen/mocs_compilation.cpp.o
-[ 79%] Linking CXX executable ../../../bin/queryserializationtest
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/src/file/metadatamover.cpp:24:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-[ 79%] Built target queryserializationtest
-[ 79%] Linking CXX static library ../../lib/libbaloofilecommon.a
-[ 79%] Built target baloofilecommon
-Scanning dependencies of target balooctl_autogen
-Scanning dependencies of target baloo_file_autogen
-Scanning dependencies of target unindexedfileiteratorbenchmark_autogen
-Scanning dependencies of target basicindexingtest_autogen
-Scanning dependencies of target filtereddiriteratorbenchmark_autogen
-Scanning dependencies of target indexerconfigtest_autogen
-Scanning dependencies of target inotifytest_autogen
-Scanning dependencies of target storagedevicestest_autogen
-[ 79%] Automatic MOC for target baloo_file
-[ 79%] Automatic MOC for target unindexedfileiteratorbenchmark
-[ 79%] Automatic MOC for target filtereddiriteratorbenchmark
-[ 79%] Automatic MOC for target indexerconfigtest
-[ 79%] Automatic MOC for target basicindexingtest
-[ 79%] Automatic MOC for target balooctl
-[ 79%] Automatic MOC for target inotifytest
-[ 79%] Automatic MOC for target storagedevicestest
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Generating MOC compilation mocs_compilation.cpp
-Generating MOC compilation mocs_compilation.cpp
-Generating MOC compilation mocs_compilation.cpp
-Generating MOC compilation mocs_compilation.cpp
-Generating MOC compilation mocs_compilation.cpp
-Generating MOC predefs moc_predefs.h
-[ 79%] Built target unindexedfileiteratorbenchmark_autogen
-[ 79%] Built target indexerconfigtest_autogen
-[ 79%] Built target inotifytest_autogen
-[ 79%] Built target basicindexingtest_autogen
-[ 79%] Built target filtereddiriteratorbenchmark_autogen
-Generating MOC compilation mocs_compilation.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 79%] Built target storagedevicestest_autogen
-[ 79%] Built target baloo_file_autogen
-Scanning dependencies of target unindexedfileiteratortest_autogen
-Scanning dependencies of target kinotifytest_autogen
-Scanning dependencies of target fileindexerconfigtest_autogen
-Scanning dependencies of target basicindexingjobtest_autogen
-Scanning dependencies of target regularexpcachebenchmark_autogen
-Scanning dependencies of target filtereddiriteratortest_autogen
-[ 80%] Automatic MOC for target fileindexerconfigtest
-Scanning dependencies of target metadatamovertest_autogen
-[ 80%] Automatic MOC for target basicindexingjobtest
-[ 80%] Automatic MOC for target unindexedfileiteratortest
-[ 80%] Automatic MOC for target kinotifytest
-[ 80%] Automatic MOC for target regularexpcachebenchmark
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-[ 80%] Automatic MOC for target filtereddiriteratortest
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-[ 80%] Automatic MOC for target metadatamovertest
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Generating MOC predefs moc_predefs.h
-Generating MOC source EWIEGA46WW/moc_monitorcommand.cpp
-Generating MOC compilation mocs_compilation.cpp
-[ 80%] Built target balooctl_autogen
-Scanning dependencies of target fileinfotest_autogen
-Generating MOC source include/fileindexerconfigtest.moc
-Generating MOC compilation mocs_compilation.cpp
-[ 80%] Built target fileindexerconfigtest_autogen
-[ 81%] Automatic MOC for target fileinfotest
-Generating MOC source include/unindexedfileiteratortest.moc
-Generating MOC compilation mocs_compilation.cpp
-Generating MOC predefs moc_predefs.h
-[ 81%] Built target unindexedfileiteratortest_autogen
-Generating MOC source include/regularexpcachebenchmark.moc
-Generating MOC compilation mocs_compilation.cpp
-Scanning dependencies of target pendingfilequeuetest_autogen
-[ 81%] Built target regularexpcachebenchmark_autogen
-Scanning dependencies of target filewatchtest_autogen
-Generating MOC source include/basicindexingjobtest.moc
-Generating MOC compilation mocs_compilation.cpp
-Generating MOC source include/filtereddiriteratortest.moc
-Generating MOC compilation mocs_compilation.cpp
-[ 81%] Automatic MOC for target pendingfilequeuetest
-[ 81%] Automatic MOC for target filewatchtest
-Scanning dependencies of target baloo_file
-[ 81%] Built target basicindexingjobtest_autogen
-[ 81%] Built target filtereddiriteratortest_autogen
-Generating MOC predefs moc_predefs.h
-Generating MOC source include/kinotifytest.moc
-Generating MOC compilation mocs_compilation.cpp
-Scanning dependencies of target balooctl
-Generating MOC source include/metadatamovertest.moc
-Generating MOC compilation mocs_compilation.cpp
-Generating MOC predefs moc_predefs.h
-Scanning dependencies of target basicindexingtest
-[ 81%] Built target kinotifytest_autogen
-[ 81%] Built target metadatamovertest_autogen
-Scanning dependencies of target unindexedfileiteratorbenchmark
-[ 82%] Building CXX object src/file/CMakeFiles/baloo_file.dir/main.cpp.o
-Scanning dependencies of target filtereddiriteratorbenchmark
-[ 83%] Building CXX object tests/benchmarks/CMakeFiles/unindexedfileiteratorbenchmark.dir/unindexedfileiteratortest.cpp.o
-[ 84%] Building CXX object tests/engine/CMakeFiles/basicindexingtest.dir/basicindexingtest.cpp.o
-[ 84%] Building CXX object tests/file/CMakeFiles/filtereddiriteratorbenchmark.dir/filtereddiriteratorbenchmark.cpp.o
-Generating MOC source include/pendingfilequeuetest.moc
-Generating MOC compilation mocs_compilation.cpp
-[ 84%] Built target pendingfilequeuetest_autogen
-[ 85%] Building CXX object src/tools/balooctl/CMakeFiles/balooctl.dir/main.cpp.o
-[ 85%] Building CXX object tests/engine/CMakeFiles/basicindexingtest.dir/basicindexingtest_autogen/mocs_compilation.cpp.o
-Generating MOC source include/filewatchtest.moc
-Generating MOC compilation mocs_compilation.cpp
-[ 85%] Built target filewatchtest_autogen
-Generating MOC source include/fileinfotest.moc
-Generating MOC compilation mocs_compilation.cpp
-[ 85%] Built target fileinfotest_autogen
-Scanning dependencies of target indexerconfigtest
-Scanning dependencies of target storagedevicestest
-[ 85%] Building CXX object src/file/CMakeFiles/baloo_file.dir/baloo_file_autogen/mocs_compilation.cpp.o
-[ 85%] Building CXX object tests/file/CMakeFiles/storagedevicestest.dir/storagedevicestest.cpp.o
-[ 85%] Building CXX object tests/file/CMakeFiles/indexerconfigtest.dir/indexerconfigtest.cpp.o
-[ 85%] Building CXX object tests/benchmarks/CMakeFiles/unindexedfileiteratorbenchmark.dir/unindexedfileiteratorbenchmark_autogen/mocs_compilation.cpp.o
-[ 85%] Building CXX object tests/file/CMakeFiles/indexerconfigtest.dir/indexerconfigtest_autogen/mocs_compilation.cpp.o
-[ 85%] Building CXX object tests/file/CMakeFiles/storagedevicestest.dir/storagedevicestest_autogen/mocs_compilation.cpp.o
-Scanning dependencies of target inotifytest
-[ 85%] Building CXX object tests/file/CMakeFiles/inotifytest.dir/inotify.cpp.o
-[ 85%] Linking CXX executable ../../bin/baloo_file
-[ 86%] Linking CXX executable ../../bin/indexerconfigtest
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/src/tools/balooctl/main.cpp:48:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-[ 87%] Linking CXX executable ../../bin/storagedevicestest
-[ 87%] Linking CXX executable ../../bin/unindexedfileiteratorbenchmark
-[ 88%] Building CXX object tests/file/CMakeFiles/filtereddiriteratorbenchmark.dir/filtereddiriteratorbenchmark_autogen/mocs_compilation.cpp.o
-[ 88%] Linking CXX executable ../../bin/filtereddiriteratorbenchmark
-[ 88%] Built target baloo_file
-Scanning dependencies of target basicindexingjobtest
-[ 89%] Building CXX object autotests/unit/file/CMakeFiles/basicindexingjobtest.dir/basicindexingjobtest.cpp.o
-[ 89%] Built target storagedevicestest
-Scanning dependencies of target unindexedfileiteratortest
-[ 89%] Built target indexerconfigtest
-Scanning dependencies of target fileindexerconfigtest
-[ 90%] Building CXX object autotests/unit/file/CMakeFiles/unindexedfileiteratortest.dir/unindexedfileiteratortest.cpp.o
-[ 90%] Building CXX object autotests/unit/file/CMakeFiles/fileindexerconfigtest.dir/fileindexerconfigtest.cpp.o
-[ 90%] Linking CXX executable ../../bin/basicindexingtest
-[ 90%] Building CXX object tests/file/CMakeFiles/inotifytest.dir/inotifytest_autogen/mocs_compilation.cpp.o
-[ 91%] Linking CXX executable ../../bin/inotifytest
-[ 91%] Built target unindexedfileiteratorbenchmark
-Scanning dependencies of target metadatamovertest
-[ 91%] Building CXX object autotests/unit/file/CMakeFiles/metadatamovertest.dir/metadatamovertest.cpp.o
-[ 91%] Built target basicindexingtest
-Scanning dependencies of target kinotifytest
-[ 91%] Built target filtereddiriteratorbenchmark
-Scanning dependencies of target regularexpcachebenchmark
-[ 91%] Building CXX object autotests/unit/file/CMakeFiles/kinotifytest.dir/kinotifytest.cpp.o
-[ 91%] Building CXX object autotests/unit/file/CMakeFiles/regularexpcachebenchmark.dir/regularexpcachebenchmark.cpp.o
-[ 91%] Built target inotifytest
-Scanning dependencies of target filtereddiriteratortest
-[ 91%] Building CXX object autotests/unit/file/CMakeFiles/filtereddiriteratortest.dir/filtereddiriteratortest.cpp.o
-[ 91%] Building CXX object src/tools/balooctl/CMakeFiles/balooctl.dir/indexer.cpp.o
-[ 91%] Building CXX object autotests/unit/file/CMakeFiles/basicindexingjobtest.dir/basicindexingjobtest_autogen/mocs_compilation.cpp.o
-[ 91%] Linking CXX executable ../../../bin/basicindexingjobtest
-[ 91%] Built target basicindexingjobtest
-Scanning dependencies of target fileinfotest
-[ 91%] Building CXX object autotests/unit/file/CMakeFiles/fileinfotest.dir/fileinfotest.cpp.o
-[ 91%] Building CXX object autotests/unit/file/CMakeFiles/regularexpcachebenchmark.dir/regularexpcachebenchmark_autogen/mocs_compilation.cpp.o
-[ 91%] Building CXX object autotests/unit/file/CMakeFiles/unindexedfileiteratortest.dir/unindexedfileiteratortest_autogen/mocs_compilation.cpp.o
-[ 92%] Linking CXX executable ../../../bin/regularexpcachebenchmark
-[ 92%] Linking CXX executable ../../../bin/unindexedfileiteratortest
-[ 92%] Built target regularexpcachebenchmark
-[ 92%] Built target unindexedfileiteratortest
-Scanning dependencies of target pendingfilequeuetest
-Scanning dependencies of target filewatchtest
-[ 92%] Building CXX object autotests/unit/file/CMakeFiles/pendingfilequeuetest.dir/pendingfilequeuetest.cpp.o
-[ 92%] Building CXX object autotests/unit/file/CMakeFiles/filewatchtest.dir/filewatchtest.cpp.o
-[ 92%] Building CXX object autotests/unit/file/CMakeFiles/fileindexerconfigtest.dir/fileindexerconfigtest_autogen/mocs_compilation.cpp.o
-[ 92%] Linking CXX executable ../../../bin/fileindexerconfigtest
-[ 93%] Building CXX object autotests/unit/file/CMakeFiles/metadatamovertest.dir/metadatamovertest_autogen/mocs_compilation.cpp.o
-[ 94%] Building CXX object autotests/unit/file/CMakeFiles/filtereddiriteratortest.dir/filtereddiriteratortest_autogen/mocs_compilation.cpp.o
-[ 94%] Linking CXX executable ../../../bin/metadatamovertest
-[ 94%] Linking CXX executable ../../../bin/filtereddiriteratortest
-[ 94%] Built target fileindexerconfigtest
-[ 94%] Building CXX object autotests/unit/file/CMakeFiles/filewatchtest.dir/__/lib/xattrdetector.cpp.o
-[ 94%] Building CXX object autotests/unit/file/CMakeFiles/fileinfotest.dir/fileinfotest_autogen/mocs_compilation.cpp.o
-[ 94%] Linking CXX executable ../../../bin/fileinfotest
-[ 94%] Built target fileinfotest
-[ 95%] Building CXX object autotests/unit/file/CMakeFiles/filewatchtest.dir/filewatchtest_autogen/mocs_compilation.cpp.o
-[ 95%] Building CXX object autotests/unit/file/CMakeFiles/pendingfilequeuetest.dir/pendingfilequeuetest_autogen/mocs_compilation.cpp.o
-[ 95%] Building CXX object src/tools/balooctl/CMakeFiles/balooctl.dir/command.cpp.o
-[ 95%] Building CXX object src/tools/balooctl/CMakeFiles/balooctl.dir/configcommand.cpp.o
-[ 95%] Built target filtereddiriteratortest
-[ 96%] Building CXX object src/tools/balooctl/CMakeFiles/balooctl.dir/statuscommand.cpp.o
-[ 96%] Built target metadatamovertest
-[ 96%] Building CXX object src/tools/balooctl/CMakeFiles/balooctl.dir/monitorcommand.cpp.o
-[ 97%] Building CXX object autotests/unit/file/CMakeFiles/kinotifytest.dir/kinotifytest_autogen/mocs_compilation.cpp.o
-[ 97%] Linking CXX executable ../../../bin/kinotifytest
-[ 98%] Linking CXX executable ../../../bin/pendingfilequeuetest
-[ 98%] Building CXX object src/tools/balooctl/CMakeFiles/balooctl.dir/__/__/file/extractor/result.cpp.o
-[ 98%] Built target kinotifytest
-[ 99%] Building CXX object src/tools/balooctl/CMakeFiles/balooctl.dir/__/__/dbus/maininterface.cpp.o
-[ 99%] Building CXX object src/tools/balooctl/CMakeFiles/balooctl.dir/__/__/dbus/schedulerinterface.cpp.o
-[ 99%] Built target pendingfilequeuetest
-[ 99%] Building CXX object src/tools/balooctl/CMakeFiles/balooctl.dir/__/__/dbus/fileindexerinterface.cpp.o
-[ 99%] Linking CXX executable ../../../bin/filewatchtest
-In file included from /usr/src/packages/user/baloo/src/baloo-5.38.0/src/tools/balooctl/statuscommand.cpp:27:0:
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h: In function 'quint64 Baloo::devIdAndInodeToId(quint32, quint32)':
-/usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/idutils.h:41:45: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
- return *(reinterpret_cast<quint64*>(arr));
- ^
-[ 99%] Built target filewatchtest
-[ 99%] Building CXX object src/tools/balooctl/CMakeFiles/balooctl.dir/balooctl_autogen/mocs_compilation.cpp.o
-[100%] Linking CXX executable ../../../bin/balooctl
-[100%] Built target balooctl
->>> baloo: Entering fakeroot...
-]0;abuild: balooTest project /usr/src/packages/user/baloo/src/baloo-5.38.0
- Start 1: extractorIOTest
- 1/38 Test #1: extractorIOTest .................. Passed 0.00 sec
- Start 2: databasebenchmark
- 2/38 Test #2: databasebenchmark ................ Passed 0.00 sec
- Start 3: positioncodecbenchmark
- 3/38 Test #3: positioncodecbenchmark ........... Passed 1.27 sec
- Start 4: querytest
- 4/38 Test #4: querytest ........................***Exception: Other 0.69 sec
-********* Start testing of QueryTest *********
-Config: Using QtTest library 5.9.1, Qt 5.9.1 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 6.4.0)
-PASS : QueryTest::initTestCase()
-PASS : QueryTest::testTermEqual()
-
-========= Received signal, dumping stack ==============
-GNU gdb (GDB) 7.12.1
-Copyright (C) 2017 Free Software Foundation, Inc.
-License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
-This is free software: you are free to change and redistribute it.
-There is NO WARRANTY, to the extent permitted by law. Type "show copying"
-and "show warranty" for details.
-This GDB was configured as "x86_64-foxkit-linux-musl".
-Type "show configuration" for configuration details.
-For bug reporting instructions, please see:
-<http://bugs.alpinelinux.org/>.
-Find the GDB manual and other documentation resources online at:
-<http://www.gnu.org/software/gdb/documentation/>.
-For help, type "help".
-Type "apropos word" to search for commands related to "word".
-Attaching to process 5478
-[New LWP 5479]
-__cp_end () at src/thread/x86_64/syscall_cp.s:29
-(gdb)
-Thread 2 (LWP 5479):
-#0 __cp_end () at src/thread/x86_64/syscall_cp.s:29
-No locals.
-#1 0x00007f66d5b389f1 in __syscall_cp_c (nr=202, u=<optimized out>,
- v=<optimized out>, w=<optimized out>, x=<optimized out>,
- y=<optimized out>, z=0) at src/thread/pthread_cancel.c:35
- r = <optimized out>
- st = <optimized out>
-#2 0x00007f66d5b37bdf in __timedwait_cp (addr=addr@entry=0x7f66d5d728d4,
- val=val@entry=2, clk=clk@entry=1, at=at@entry=0x7f66d5d72930, priv=128,
- priv@entry=1) at src/thread/__timedwait.c:31
- r = <optimized out>
- to = {tv_sec = 299, tv_nsec = 999999666}
- top = <optimized out>
-#3 0x00007f66d5b38e32 in __pthread_cond_timedwait (c=0x7f66d3f344a8,
- m=0x7f66d3f34480, ts=0x7f66d5d72930)
- at src/thread/pthread_cond_timedwait.c:105
- node = {prev = 0x0, next = 0x0, state = 0, barrier = 2, notify = 0x0}
- e = <optimized out>
- seq = 2
- clock = <optimized out>
- cs = 0
- shared = 0
- oldstate = <optimized out>
- tmp = <optimized out>
- fut = 0x7f66d5d728d4
-#4 0x00007f66d4df4f16 in QWaitCondition::wait(QMutex*, unsigned long) ()
- from /usr/lib/libQt5Core.so.5
-No symbol table info available.
-#5 0x00007f66d56a3032 in QTest::WatchDog::run (this=0x7f66d568b500)
- at qtestcase.cpp:990
- locker = {val = 140079643800857}
-#6 0x00007f66d4df4058 in QThreadPrivate::start(void*) ()
- from /usr/lib/libQt5Core.so.5
-No symbol table info available.
-#7 0x00007f66d5b397a0 in start (p=0x7f66d5d72ae8)
- at src/thread/pthread_create.c:145
- self = 0x7f66d5d72ae8
-#8 0x00007f66d5b45e04 in __clone () at src/thread/x86_64/clone.s:21
-No locals.
-Backtrace stopped: frame did not save the PC
-
-Thread 1 (LWP 5478):
-#0 __cp_end () at src/thread/x86_64/syscall_cp.s:29
-No locals.
-#1 0x00007f66d5b389f1 in __syscall_cp_c (nr=61, u=<optimized out>,
- v=<optimized out>, w=<optimized out>, x=<optimized out>,
- y=<optimized out>, z=0) at src/thread/pthread_cancel.c:35
- r = <optimized out>
- st = <optimized out>
-#2 0x00007f66d5b1eb06 in waitpid (pid=<optimized out>,
- status=status@entry=0x7f66d58c736c <QTest::FatalSignalHandler::FatalSignalHandler()::alternate_stack+13164>, options=options@entry=0)
- at src/process/waitpid.c:7
-No locals.
-#3 0x00007f66d5b1e9ea in system (
- cmd=0x7f66d58c7800 <QTest::FatalSignalHandler::FatalSignalHandler()::alternate_stack+14336> "gdb --pid 5478 2>/dev/null <<EOF\nset prompt\nset height 0\nthread apply all where full\ndetach\nquit\nEOF\n") at src/process/system.c:40
- pid = 5480
- old = {__bits = {21711, 7719224956813516832, 4209586178373323330,
- 3688764892143165449, 140079646143520, 140079648458255,
- 739271074867519520, 4294967297, 18446744073709551614, 64,
- 3539864629463222586, 7878495878512652338, 2314885432472784208, 0,
- 8, 140079646144056}}
- reset = {__bits = {6, 44, 5, 140079634797405, 4, 0, 32, 0, 0, 32, 1,
- 140079651061376, 140079651048056, 1, 140079646144288,
- 140079651048064}}
- sa = {__sa_handler = {sa_handler = 0x1, sa_sigaction = 0x1},
- sa_mask = {__bits = {65536, 0 <repeats 15 times>}}, sa_flags = 0,
- sa_restorer = 0x0}
- oldint = {__sa_handler = {
- sa_handler = 0x7f66d5699a70 <QTest::FatalSignalHandler::signal(int)>, sa_sigaction = 0x7f66d5699a70 <QTest::FatalSignalHandler::signal(int)>},
- sa_mask = {__bits = {21711, 0, 140079651061400, 140079646143920,
- 140079648459259, 140079651048128, 1, 101, 160, 140079646143984,
- 104, 94651405916256, 63, 0, 140079651061400, 8}},
- sa_flags = -1946157056, sa_restorer = 0x66}
- oldquit = {__sa_handler = {
- sa_handler = 0x7f66d5699a70 <QTest::FatalSignalHandler::signal(int)>, sa_sigaction = 0x7f66d5699a70 <QTest::FatalSignalHandler::signal(int)>},
- sa_mask = {__bits = {21711, 101, 140079651061400, 101,
- 140079646144232, 140079646144080, 140079648455426,
- 94651405916400, 33636187584, 64424509439, 101, 1,
- 94651405916240, 94651405916400, 140725177193184,
- 140079646144192}}, sa_flags = -1946157056, sa_restorer = 0xb}
- status = 32512
- ret = 0
- attr = {__flags = 12, __pgrp = 0, __def = {__bits = {6, 44, 5,
- 140079634797405, 4, 0, 32, 0, 0, 32, 1, 140079651061376,
- 140079651048056, 1, 140079646144288, 140079651048064}},
- __mask = {__bits = {21711, 7719224956813516832, 4209586178373323330,
- 3688764892143165449, 140079646143520, 140079648458255,
- 739271074867519520, 4294967297, 18446744073709551614, 64,
- 3539864629463222586, 7878495878512652338, 2314885432472784208,
- 0, 8, 140079646144056}}, __prio = 0, __pol = 0, __pad = {
- 0 <repeats 16 times>}}
-#4 0x00007f66d56999ac in stackTrace () at qtestcase.cpp:222
- cmd = "gdb --pid 5478 2>/dev/null <<EOF\nset prompt\nset height 0\nthread apply all where full\ndetach\nquit\nEOF\n", '\000' <repeats 291 times>...
-#5 0x00007f66d5699a65 in stackTrace () at qtestcase.cpp:237
- ok = false
- disableStackDump = <optimized out>
-#6 0x00007f66d5699b05 in QTest::FatalSignalHandler::signal (signum=11)
- at qtestcase.cpp:1417
-No locals.
-#7 <signal handler called>
-No locals.
-#8 0x00007f66d547e2df in mdb_cursor_open (txn=0x8b4960b5aaff1e44, dbi=2,
- ret=ret@entry=0x7ffd22329150) at mdb.c:7597
-No locals.
-#9 0x00007f66d5463821 in Baloo::PostingDB::iter<Baloo::PostingDB::prefixIter(const QByteArray&)::<lambda(const QByteArray&)> > (this=0xc, this=0xc,
- prefix=..., validate=...)
- at /usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/postingdb.cpp:211
- key = {mv_size = 3, mv_data = 0x7f66d1c72fd8}
- cursor = 0x0
- termIterators = {d = 0x30}
- val = {mv_size = 140725177192912,
- mv_data = 0x7f66d5afbb02 <alloc_fwd+450>}
- rc = <optimized out>
-#10 Baloo::PostingDB::prefixIter (this=this@entry=0x7ffd22329220, prefix=...)
- at /usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/postingdb.cpp:246
-No locals.
-#11 0x00007f66d546a482 in Baloo::Transaction::postingIterator (
- this=0x7ffd22329300, query=...)
- at /usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/transaction.cpp:296
- postingDb = {m_txn = 0x8b4960b5aaff1e44, m_dbi = 2}
- positionDb = {m_txn = 0x8b4960b5aaff1e44, m_dbi = 3}
- vec = {d = 0x1d}
-#12 0x00007f66d546a4fa in Baloo::Transaction::exec (this=<optimized out>,
- query=..., limit=-1)
- at /usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/transaction.cpp:361
- results = {d = 0x7f66d5081020 <QArrayData::shared_null>}
- it = <optimized out>
-#13 0x00005615bf0fc4b5 in QueryTest::testTermStartsWith (this=0x7ffd22329e40)
- at /usr/src/packages/user/baloo/src/baloo-5.38.0/autotests/integration/querytest.cpp:123
- q = {m_term = {d = 0x7f66d1c72fc0}, m_pos = 0,
- m_op = Baloo::EngineQuery::StartsWith, m_subQueries = {
- d = 0x7f66d5081020 <QArrayData::shared_null>}}
- result = {d = 0x5615bf303fa0}
- tr = {m_dbis = @0x7f66d1c72f78, m_txn = 0x8b4960b5aaff1e44,
- m_env = 0x5615bf303e80, m_writeTrans = 0x0}
-#14 0x00005615bf0fe6c5 in QueryTest::qt_static_metacall (_o=0x7ffd22329e40,
- _c=<optimized out>, _id=<optimized out>, _a=<optimized out>)
- at /usr/src/packages/user/baloo/src/baloo-5.38.0/autotests/integration/querytest_autogen/include/querytest.moc:93
- _t = 0x7ffd22329e40
-#15 0x00007f66d4fe6536 in QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const () from /usr/lib/libQt5Core.so.5
-No symbol table info available.
-#16 0x00007f66d56a1158 in QMetaMethod::invoke (val9=..., val8=..., val7=...,
- val6=..., val5=..., val4=..., val3=..., val2=..., val1=..., val0=...,
- connectionType=Qt::DirectConnection, object=<optimized out>,
- this=<optimized out>)
- at ../../include/QtCore/../../src/corelib/kernel/qmetaobject.h:123
-No locals.
-#17 QTest::TestMethods::invokeTestOnData (this=this@entry=0x7ffd22329d70,
- index=index@entry=1) at qtestcase.cpp:890
- invokeOk = <optimized out>
- isBenchmark = <optimized out>
- i = -1
- results = {d = 0x7f66d5081020 <QArrayData::shared_null>}
- minimumTotalReached = <optimized out>
-#18 0x00007f66d56a1b90 in QTest::TestMethods::invokeTest (
- this=this@entry=0x7ffd22329d70, index=index@entry=1, data=data@entry=0x0,
- watchDog=watchDog@entry=0x7f66d568b500) at qtestcase.cpp:1071
- curDataIndex = 0
- dataCount = 0
- foundFunction = true
- benchmarkData = {static current = 0x7ffd223299b0, result = {context = {
- slotName = {static null = {<No data fields>},
- d = 0x7f66d5081020 <QArrayData::shared_null>}, tag = {
- static null = {<No data fields>},
- d = 0x7f66d5081020 <QArrayData::shared_null>},
- checkpointIndex = -1}, value = -1, iterations = -1,
- metric = QTest::FramesPerSecond, setByMacro = true,
- valid = false}, resultAccepted = false, runOnce = false,
- iterationCount = 1}
- name = @0x7ffd22329998: {
- d = 0x5615bf101478 <qt_meta_stringdata_QueryTest+120>}
- member = "testTermStartsWith_data()\000k\325f\177\000\000\000\000\000\000\000\000\000\000]S\337\324f\177\000\000 hk\325f\177\000\000\030\233\062\"\375\177\000\000\a\000\000\000\000\000\000\000\224\315\337\324f\177\000\000`\232\062\"\375\177\000\000\235\071\257\325f\177\000\000\300\233\062\"\375\177\000\000К2\"\375\177\000\000@\233\062\"\375\177\000\000\366\232\263\325f\177\000\000 +\327\325f\177\000\000\016\232\263\325f\177\000\000H\024\020\277\025V\000\000\000,\327\325f\177\000\000\000\340\325\325f\177\000\000\361\211\263\325f\177\000\000Pk\327\325f\177\000\000\000\000\000\000\000\000\000\000\002", '\000' <repeats 15 times>...
- table = {d = 0x7f66d1c72d60}
- gTable = <optimized out>
- curGlobalDataIndex = <optimized out>
-#19 0x00007f66d56a21e1 in QTest::TestMethods::invokeTests (
- this=this@entry=0x7ffd22329d70, testObject=testObject@entry=0x7ffd22329e40)
- at qtestcase.cpp:1378
- data = 0x0
- ok = <optimized out>
- i = 1
- count = 5
- previousFailed = <optimized out>
- metaObject = <optimized out>
- watchDog = {d = 0x7f66d568b500}
-#20 0x00007f66d56a2727 in QTest::qExec (testObject=0x7ffd22329e40,
- argc=<optimized out>, argv=0x7ffd22329f08) at qtestcase.cpp:1793
- handler = {d = 0x7f66d3f34140}
- commandLineMethods = {<std::_Vector_base<QMetaMethod, std::allocator<QMetaMethod> >> = {
- _M_impl = {<std::allocator<QMetaMethod>> = {<__gnu_cxx::new_allocator<QMetaMethod>> = {<No data fields>}, <No data fields>}, _M_start = 0x0,
- _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}
- test = {m_initTestCaseMethod = {mobj = 0x0, handle = 0},
- m_initTestCaseDataMethod = {mobj = 0x0, handle = 0},
- m_cleanupTestCaseMethod = {mobj = 0x0, handle = 0}, m_initMethod = {
- mobj = 0x5615bf302ba0 <QueryTest::staticMetaObject>, handle = 14},
- m_cleanupMethod = {
- mobj = 0x5615bf302ba0 <QueryTest::staticMetaObject>, handle = 19},
- m_methods = {<std::_Vector_base<QMetaMethod, std::allocator<QMetaMethod> >> = {
- _M_impl = {<std::allocator<QMetaMethod>> = {<__gnu_cxx::new_allocator<QMetaMethod>> = {<No data fields>}, <No data fields>},
- _M_start = 0x7f66d568b900, _M_finish = 0x7f66d568b950,
- _M_end_of_storage = 0x7f66d568b9c0}}, <No data fields>}}
- metaObject = <optimized out>
- benchmarkData = {static current = 0x7ffd22329d30,
- measurer = 0x7f66d568b1c0, context = {slotName = {
- static null = {<No data fields>}, d = 0x7f66d3f349a0}, tag = {
- static null = {<No data fields>},
- d = 0x7f66d5080fc0 <qt_array>}, checkpointIndex = -1},
- walltimeMinimum = -1, iterationCount = -1,
- medianIterationCount = -1, createChart = false,
- verboseOutput = false, callgrindOutFileBase = {
- static null = {<No data fields>},
- d = 0x7f66d5081020 <QArrayData::shared_null>}, minimumTotal = -1,
- mode_ = QBenchmarkGlobalData::WallTime}
- callgrindChildExitCode = 0
-#21 0x00005615bf0fc16e in main (argc=<optimized out>, argv=0x7ffd22329f08)
- at /usr/src/packages/user/baloo/src/baloo-5.38.0/autotests/integration/querytest.cpp:166
- app = <incomplete type>
- tc = {<QObject> = {<No data fields>}, static staticMetaObject = {d = {
- superdata = 0x7f66d5428660 <QObject::staticMetaObject>,
- stringdata = 0x5615bf101400 <qt_meta_stringdata_QueryTest>,
- data = 0x5615bf101300 <qt_meta_data_QueryTest>,
- static_metacall = 0x5615bf0fe550 <QueryTest::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0,
- extradata = 0x0}}, dir = 0x7f66d568b9e0, db = 0x7f66d1c72f60,
- m_id1 = 16967899663105536, m_id2 = 16967903958072832,
- m_id3 = 16967908253040128, m_id4 = 16967912548007424}
-Detaching from program: /usr/src/packages/user/baloo/src/baloo-5.38.0/bin/querytest, process 5478
-========= End of stack trace ==============
-QFATAL : QueryTest::testTermStartsWith() Received signal 11
- Function time: 67ms Total time: 151ms
-FAIL! : QueryTest::testTermStartsWith() Received a fatal error.
- Loc: [Unknown file(0)]
-Totals: 2 passed, 1 failed, 0 skipped, 0 blacklisted, 688ms
-********* Finished testing of QueryTest *********
-
- Start 5: writetransactiontest
- 5/38 Test #5: writetransactiontest .............***Exception: Other 0.66 sec
-********* Start testing of WriteTransactionTest *********
-Config: Using QtTest library 5.9.1, Qt 5.9.1 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 6.4.0)
-PASS : WriteTransactionTest::initTestCase()
-PASS : WriteTransactionTest::testAddDocument()
-
-========= Received signal, dumping stack ==============
-GNU gdb (GDB) 7.12.1
-Copyright (C) 2017 Free Software Foundation, Inc.
-License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
-This is free software: you are free to change and redistribute it.
-There is NO WARRANTY, to the extent permitted by law. Type "show copying"
-and "show warranty" for details.
-This GDB was configured as "x86_64-foxkit-linux-musl".
-Type "show configuration" for configuration details.
-For bug reporting instructions, please see:
-<http://bugs.alpinelinux.org/>.
-Find the GDB manual and other documentation resources online at:
-<http://www.gnu.org/software/gdb/documentation/>.
-For help, type "help".
-Type "apropos word" to search for commands related to "word".
-Attaching to process 5486
-[New LWP 5487]
-__cp_end () at src/thread/x86_64/syscall_cp.s:29
-(gdb)
-Thread 2 (LWP 5487):
-#0 __cp_end () at src/thread/x86_64/syscall_cp.s:29
-No locals.
-#1 0x00007fcfa76e79f1 in __syscall_cp_c (nr=202, u=<optimized out>,
- v=<optimized out>, w=<optimized out>, x=<optimized out>,
- y=<optimized out>, z=0) at src/thread/pthread_cancel.c:35
- r = <optimized out>
- st = <optimized out>
-#2 0x00007fcfa76e6bdf in __timedwait_cp (addr=addr@entry=0x7fcfa79218d4,
- val=val@entry=2, clk=clk@entry=1, at=at@entry=0x7fcfa7921930, priv=128,
- priv@entry=1) at src/thread/__timedwait.c:31
- r = <optimized out>
- to = {tv_sec = 299, tv_nsec = 999999708}
- top = <optimized out>
-#3 0x00007fcfa76e7e32 in __pthread_cond_timedwait (c=0x7fcfa5ae34a8,
- m=0x7fcfa5ae3480, ts=0x7fcfa7921930)
- at src/thread/pthread_cond_timedwait.c:105
- node = {prev = 0x0, next = 0x0, state = 0, barrier = 2, notify = 0x0}
- e = <optimized out>
- seq = 2
- clock = <optimized out>
- cs = 0
- shared = 0
- oldstate = <optimized out>
- tmp = <optimized out>
- fut = 0x7fcfa79218d4
-#4 0x00007fcfa69a3f16 in QWaitCondition::wait(QMutex*, unsigned long) ()
- from /usr/lib/libQt5Core.so.5
-No symbol table info available.
-#5 0x00007fcfa7252032 in QTest::WatchDog::run (this=0x7fcfa723a900)
- at qtestcase.cpp:990
- locker = {val = 140529839089945}
-#6 0x00007fcfa69a3058 in QThreadPrivate::start(void*) ()
- from /usr/lib/libQt5Core.so.5
-No symbol table info available.
-#7 0x00007fcfa76e87a0 in start (p=0x7fcfa7921ae8)
- at src/thread/pthread_create.c:145
- self = 0x7fcfa7921ae8
-#8 0x00007fcfa76f4e04 in __clone () at src/thread/x86_64/clone.s:21
-No locals.
-Backtrace stopped: frame did not save the PC
-
-Thread 1 (LWP 5486):
-#0 __cp_end () at src/thread/x86_64/syscall_cp.s:29
-No locals.
-#1 0x00007fcfa76e79f1 in __syscall_cp_c (nr=61, u=<optimized out>,
- v=<optimized out>, w=<optimized out>, x=<optimized out>,
- y=<optimized out>, z=0) at src/thread/pthread_cancel.c:35
- r = <optimized out>
- st = <optimized out>
-#2 0x00007fcfa76cdb06 in waitpid (pid=<optimized out>,
- status=status@entry=0x7fcfa747636c <QTest::FatalSignalHandler::FatalSignalHandler()::alternate_stack+13164>, options=options@entry=0)
- at src/process/waitpid.c:7
-No locals.
-#3 0x00007fcfa76cd9ea in system (
- cmd=0x7fcfa7476800 <QTest::FatalSignalHandler::FatalSignalHandler()::alternate_stack+14336> "gdb --pid 5486 2>/dev/null <<EOF\nset prompt\nset height 0\nthread apply all where full\ndetach\nquit\nEOF\n") at src/process/system.c:40
- pid = 5488
- old = {__bits = {21711, 3834024671439380852, 739271074867654707,
- 2308440517191626070, 140529841431584, 140529843746319,
- 2314885530818447674, 188978561025, 18446744073709551614, 64,
- 664920123419481610, 4049353029007188000, 5571072955364043552, 0,
- 8, 140529841432120}}
- reset = {__bits = {6, 44, 5, 140529830085469, 4, 140529841431786,
- 140529841431856, 140529830597770, 140529841431856,
- 140529841432128, 1, 140529830504092, 3472328296227680304,
- 3472328296227680304, 4209577309166457610, 3472328296227680265}}
- sa = {__sa_handler = {sa_handler = 0x1, sa_sigaction = 0x1},
- sa_mask = {__bits = {65536, 0 <repeats 15 times>}}, sa_flags = 0,
- sa_restorer = 0x0}
- oldint = {__sa_handler = {
- sa_handler = 0x7fcfa7248a70 <QTest::FatalSignalHandler::signal(int)>, sa_sigaction = 0x7fcfa7248a70 <QTest::FatalSignalHandler::signal(int)>},
- sa_mask = {__bits = {21711, 0, 94705615740472, 140529841431984,
- 140529843747323, 140529846336960, 1, 101, 160, 140529841432048,
- 104, 94705615740736, 63, 0, 94705615740472, 8}},
- sa_flags = -1946157056, sa_restorer = 0x66}
- oldquit = {__sa_handler = {
- sa_handler = 0x7fcfa7248a70 <QTest::FatalSignalHandler::signal(int)>, sa_sigaction = 0x7fcfa7248a70 <QTest::FatalSignalHandler::signal(int)>},
- sa_mask = {__bits = {21711, 101, 94705615740472, 101,
- 140529841432296, 140529841432144, 140529843743490,
- 94705615740880, 191773699520, 64424509439, 101, 1,
- 94705615740432, 94705615740880, 140728573147760,
- 140529841432256}}, sa_flags = -1946157056, sa_restorer = 0xb}
- status = 32512
- ret = 0
- attr = {__flags = 12, __pgrp = 0, __def = {__bits = {6, 44, 5,
- 140529830085469, 4, 140529841431786, 140529841431856,
- 140529830597770, 140529841431856, 140529841432128, 1,
- 140529830504092, 3472328296227680304, 3472328296227680304,
- 4209577309166457610, 3472328296227680265}}, __mask = {__bits = {
- 21711, 3834024671439380852, 739271074867654707,
- 2308440517191626070, 140529841431584, 140529843746319,
- 2314885530818447674, 188978561025, 18446744073709551614, 64,
- 664920123419481610, 4049353029007188000, 5571072955364043552, 0,
- 8, 140529841432120}}, __prio = 0, __pol = 0, __pad = {
- 0 <repeats 16 times>}}
-#4 0x00007fcfa72489ac in stackTrace () at qtestcase.cpp:222
- cmd = "gdb --pid 5486 2>/dev/null <<EOF\nset prompt\nset height 0\nthread apply all where full\ndetach\nquit\nEOF\n", '\000' <repeats 291 times>...
-#5 0x00007fcfa7248a65 in stackTrace () at qtestcase.cpp:237
- ok = false
- disableStackDump = <optimized out>
-#6 0x00007fcfa7248b05 in QTest::FatalSignalHandler::signal (signum=11)
- at qtestcase.cpp:1417
-No locals.
-#7 <signal handler called>
-No locals.
-#8 memcpy () at src/string/x86_64/memcpy.s:18
-No locals.
-#9 0x00007fcfa69a6c9b in QByteArray::QByteArray(char const*, int) ()
- from /usr/lib/libQt5Core.so.5
-No symbol table info available.
-#10 0x00007fcfa70131c5 in Baloo::PostingDB::toTestMap (this=<optimized out>)
- at /usr/src/packages/user/baloo/src/baloo-5.38.0/src/engine/postingdb.cpp:288
- rc = <optimized out>
- ba = {d = 0x7fcfa6c30020 <QArrayData::shared_null>}
- plist = {d = 0x0}
- cursor = 0x0
- key = {mv_size = 0, mv_data = 0x0}
- val = {mv_size = 94705615690848, mv_data = 0x56225e950c50}
- map = {d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>}
-#11 0x000056225dc03d07 in Baloo::DBState::fromTransaction (tr=<optimized out>)
- at /usr/src/packages/user/baloo/src/baloo-5.38.0/autotests/integration/dbstate.h:83
- dbis = {postingDbi = <optimized out>, positionDBi = <optimized out>,
- docTermsDbi = <optimized out>,
- docFilenameTermsDbi = <optimized out>,
- docXattrTermsDbi = <optimized out>, idTreeDbi = 7,
- idFilenameDbi = 8, docTimeDbi = <optimized out>,
- docDataDbi = <optimized out>, contentIndexingDbi = <optimized out>,
- mtimeDbi = <optimized out>, failedIdDbi = <optimized out>}
- txn = <optimized out>
- postingDB = {m_txn = 0x56225e950880, m_dbi = 2}
- positionDB = {m_txn = 0x56225e950880, m_dbi = 3}
- documentTermsDB = {m_txn = 0x56225e950880, m_dbi = 4}
- documentXattrTermsDB = {m_txn = 0x56225e950880, m_dbi = 6}
- documentFileNameTermsDB = {m_txn = 0x56225e950880, m_dbi = 5}
- docTimeDB = {m_txn = 0x56225e950880, m_dbi = 9}
- docDataDB = {m_txn = 0x56225e950880, m_dbi = 10}
- contentIndexingDB = {m_txn = 0x56225e950880, m_dbi = 11}
- failedIdDb = {m_txn = 0x56225e950880, m_dbi = 12}
- mtimeDB = {m_txn = 0x56225e950880, m_dbi = 13}
- docUrlDB = {m_txn = 0x56225e950880, m_idFilenameDbi = 8,
- m_idTreeDbi = 7}
- state = {postingDb = {d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- positionDb = {d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- docTermsDb = {d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- docFileNameTermsDb = {
- d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- docXAttrTermsDb = {d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- docTimeDb = {d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- mtimeDb = {d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- docDataDb = {d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- docUrlDb = {d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- contentIndexingDb = {d = 0x7fcfa6c30020 <QArrayData::shared_null>},
- failedIdDb = {d = 0x7fcfa6c30020 <QArrayData::shared_null>}}
-#12 0x000056225dc05901 in WriteTransactionTest::testAddDocumentTwoDocuments (
- this=<optimized out>)
- at /usr/src/packages/user/baloo/src/baloo-5.38.0/autotests/integration/writetransactiontest.cpp:160
- url1 = {d = 0x56225e94f060}
- url2 = {d = 0x7fcfa7926e80}
- doc1 = {m_id = 16967929727876608, m_terms = {d = 0x7fcfa5ae3940},
- m_xattrTerms = {d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- m_fileNameTerms = {d = 0x56225de12ec0}, m_url = {
- d = 0x56225e94f060}, m_contentIndexing = false, m_mTime = 5,
- m_cTime = 1, m_data = {d = 0x7fcfa6c30020 <QArrayData::shared_null>}}
- doc2 = {m_id = 16967934022843904, m_terms = {d = 0x56225e94f4a0},
- m_xattrTerms = {d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- m_fileNameTerms = {d = 0x56225e94f5a0}, m_url = {
- d = 0x7fcfa7926e80}, m_contentIndexing = false, m_mTime = 6,
- m_cTime = 2, m_data = {d = 0x7fcfa6c30020 <QArrayData::shared_null>}}
- tr = {m_dbis = @0x7fcfa3821db8, m_txn = 0x56225e950880,
- m_env = 0x7fcfa7926ee0, m_writeTrans = 0x0}
- id1 = <optimized out>
- id2 = 16967934022843904
- state = {postingDb = {d = 0x56225e94e5a0}, positionDb = {
- d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>}, docTermsDb = {
- d = 0x7fcfa5649c80}, docFileNameTermsDb = {d = 0x7fcfa5649e40},
- docXAttrTermsDb = {d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- docTimeDb = {d = 0x7fcfa5649f00}, mtimeDb = {d = 0x7fcfa5649fc0},
- docDataDb = {d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- docUrlDb = {d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- contentIndexingDb = {d = 0x7fcfa6c30020 <QArrayData::shared_null>},
- failedIdDb = {d = 0x7fcfa6c30020 <QArrayData::shared_null>}}
- actualState = {postingDb = {
- d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>}, positionDb = {
- d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>}, docTermsDb = {
- d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- docFileNameTermsDb = {
- d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- docXAttrTermsDb = {d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- docTimeDb = {d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- mtimeDb = {d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- docDataDb = {d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- docUrlDb = {d = 0x7fcfa6c7c9a0 <QMapDataBase::shared_null>},
- contentIndexingDb = {d = 0x7fcfa6c30020 <QArrayData::shared_null>},
- failedIdDb = {d = 0x7fcfa6c30020 <QArrayData::shared_null>}}
-#13 0x000056225dc068a5 in WriteTransactionTest::qt_static_metacall (
- _o=0x7ffdec9cc690, _c=<optimized out>, _id=<optimized out>,
- _a=<optimized out>)
- at /usr/src/packages/user/baloo/src/baloo-5.38.0/autotests/integration/writetransactiontest_autogen/include/writetransactiontest.moc:94
- _t = 0x7ffdec9cc690
-#14 0x00007fcfa6b95536 in QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const () from /usr/lib/libQt5Core.so.5
-No symbol table info available.
-#15 0x00007fcfa7250158 in QMetaMethod::invoke (val9=..., val8=..., val7=...,
- val6=..., val5=..., val4=..., val3=..., val2=..., val1=..., val0=...,
- connectionType=Qt::DirectConnection, object=<optimized out>,
- this=<optimized out>)
- at ../../include/QtCore/../../src/corelib/kernel/qmetaobject.h:123
-No locals.
-#16 QTest::TestMethods::invokeTestOnData (this=this@entry=0x7ffdec9cc5c0,
- index=index@entry=1) at qtestcase.cpp:890
- invokeOk = <optimized out>
- isBenchmark = <optimized out>
- i = -1
- results = {d = 0x7fcfa6c30020 <QArrayData::shared_null>}
- minimumTotalReached = <optimized out>
-#17 0x00007fcfa7250b90 in QTest::TestMethods::invokeTest (
- this=this@entry=0x7ffdec9cc5c0, index=index@entry=1, data=data@entry=0x0,
- watchDog=watchDog@entry=0x7fcfa723a900) at qtestcase.cpp:1071
- curDataIndex = 0
- dataCount = 0
- foundFunction = true
- benchmarkData = {static current = 0x7ffdec9cc200, result = {context = {
- slotName = {static null = {<No data fields>},
- d = 0x7fcfa6c30020 <QArrayData::shared_null>}, tag = {
- static null = {<No data fields>},
- d = 0x7fcfa6c30020 <QArrayData::shared_null>},
- checkpointIndex = -1}, value = -1, iterations = -1,
- metric = QTest::FramesPerSecond, setByMacro = true,
- valid = false}, resultAccepted = false, runOnce = false,
- iterationCount = 1}
- name = @0x7ffdec9cc1e8: {
- d = 0x56225dc10a38 <qt_meta_stringdata_WriteTransactionTest+120>}
- member = "testAddDocumentTwoDocuments_data()\000\000\000\000\000\000]C\232\246\317\177\000\000 X&\247\317\177\000\000hÜ\354\375\177\000\000\a\000\000\000\000\000\000\000\224\275\232\246\317\177\000\000\260\302\234\354\375\177\000\000\235)j\247\317\177\000\000\020Ĝ\354\375\177\000\000 Ü\354\375\177\000\000\220Ü\354\375\177\000\000\366\212n\247\317\177\000\000 \033\222\247\317\177\000\000\016\212n\247\317\177\000\000\b\n\301]\"V\000\000\000\034\222\247\317\177\000\000\000А\247\317\177\000\000\361yn\247\317\177\000\000P[\222\247\317\177\000\000\000\000\000\000\000\000\000\000\002", '\000' <repeats 15 times>...
- table = {d = 0x7fcfa3821d60}
- gTable = <optimized out>
- curGlobalDataIndex = <optimized out>
-#18 0x00007fcfa72511e1 in QTest::TestMethods::invokeTests (
- this=this@entry=0x7ffdec9cc5c0, testObject=testObject@entry=0x7ffdec9cc690)
- at qtestcase.cpp:1378
- data = 0x0
- ok = <optimized out>
- i = 1
- count = 5
- previousFailed = <optimized out>
- metaObject = <optimized out>
- watchDog = {d = 0x7fcfa723a900}
-#19 0x00007fcfa7251727 in QTest::qExec (testObject=0x7ffdec9cc690,
- argc=<optimized out>, argv=0x7ffdec9cc738) at qtestcase.cpp:1793
- handler = {d = 0x7fcfa5ae3140}
- commandLineMethods = {<std::_Vector_base<QMetaMethod, std::allocator<QMetaMethod> >> = {
- _M_impl = {<std::allocator<QMetaMethod>> = {<__gnu_cxx::new_allocator<QMetaMethod>> = {<No data fields>}, <No data fields>}, _M_start = 0x0,
- _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}
- test = {m_initTestCaseMethod = {mobj = 0x0, handle = 0},
- m_initTestCaseDataMethod = {mobj = 0x0, handle = 0},
- m_cleanupTestCaseMethod = {mobj = 0x0, handle = 0}, m_initMethod = {
- mobj = 0x56225de11a40 <WriteTransactionTest::staticMetaObject>,
- handle = 14}, m_cleanupMethod = {
- mobj = 0x56225de11a40 <WriteTransactionTest::staticMetaObject>,
- handle = 19},
- m_methods = {<std::_Vector_base<QMetaMethod, std::allocator<QMetaMethod> >> = {
- _M_impl = {<std::allocator<QMetaMethod>> = {<__gnu_cxx::new_allocator<QMetaMethod>> = {<No data fields>}, <No data fields>},
- _M_start = 0x7fcfa723a500, _M_finish = 0x7fcfa723a550,
- _M_end_of_storage = 0x7fcfa723a5c0}}, <No data fields>}}
- metaObject = <optimized out>
- benchmarkData = {static current = 0x7ffdec9cc580,
- measurer = 0x7fcfa723a1c0, context = {slotName = {
- static null = {<No data fields>}, d = 0x7fcfa3821f60}, tag = {
- static null = {<No data fields>},
- d = 0x7fcfa6c2ffc0 <qt_array>}, checkpointIndex = -1},
- walltimeMinimum = -1, iterationCount = -1,
- medianIterationCount = -1, createChart = false,
- verboseOutput = false, callgrindOutFileBase = {
- static null = {<No data fields>},
- d = 0x7fcfa6c30020 <QArrayData::shared_null>}, minimumTotal = -1,
- mode_ = QBenchmarkGlobalData::WallTime}
- callgrindChildExitCode = 0
-#20 0x000056225dc03155 in main (argc=<optimized out>, argv=0x7ffdec9cc738)
- at /usr/src/packages/user/baloo/src/baloo-5.38.0/autotests/integration/writetransactiontest.cpp:238
- app = <incomplete type>
- tc = {<QObject> = {<No data fields>}, static staticMetaObject = {d = {
- superdata = 0x7fcfa6fd7660 <QObject::staticMetaObject>,
- stringdata = 0x56225dc109c0 <qt_meta_stringdata_WriteTransactionTest>, data = 0x56225dc108c0 <qt_meta_data_WriteTransactionTest>,
- static_metacall = 0x56225dc06770 <WriteTransactionTest::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0,
- extradata = 0x0}}, dir = 0x7fcfa38211e0, db = 0x7fcfa3821da0}
-Detaching from program: /usr/src/packages/user/baloo/src/baloo-5.38.0/bin/writetransactiontest, process 5486
-========= End of stack trace ==============
-QFATAL : WriteTransactionTest::testAddDocumentTwoDocuments() Received signal 11
- Function time: 66ms Total time: 152ms
-FAIL! : WriteTransactionTest::testAddDocumentTwoDocuments() Received a fatal error.
- Loc: [Unknown file(0)]
-Totals: 2 passed, 1 failed, 0 skipped, 0 blacklisted, 658ms
-********* Finished testing of WriteTransactionTest *********
-
- Start 6: doctermscodectest
- 6/38 Test #6: doctermscodectest ................ Passed 0.00 sec
- Start 7: postingcodectest
- 7/38 Test #7: postingcodectest ................. Passed 0.00 sec
- Start 8: positioncodectest
- 8/38 Test #8: positioncodectest ................ Passed 0.01 sec
- Start 9: positiondbtest
- 9/38 Test #9: positiondbtest ................... Passed 0.00 sec
- Start 10: postingdbtest
-10/38 Test #10: postingdbtest .................... Passed 0.00 sec
- Start 11: documentdbtest
-11/38 Test #11: documentdbtest ................... Passed 0.00 sec
- Start 12: documenturldbtest
-12/38 Test #12: documenturldbtest ................ Passed 0.01 sec
- Start 13: documentiddbtest
-13/38 Test #13: documentiddbtest ................. Passed 0.00 sec
- Start 14: documentdatadbtest
-14/38 Test #14: documentdatadbtest ............... Passed 0.00 sec
- Start 15: documenttimedbtest
-15/38 Test #15: documenttimedbtest ............... Passed 0.01 sec
- Start 16: idtreedbtest
-16/38 Test #16: idtreedbtest ..................... Passed 0.00 sec
- Start 17: idfilenamedbtest
-17/38 Test #17: idfilenamedbtest ................. Passed 0.00 sec
- Start 18: mtimedbtest
-18/38 Test #18: mtimedbtest ...................... Passed 0.00 sec
- Start 19: termgeneratortest
-19/38 Test #19: termgeneratortest ................ Passed 0.00 sec
- Start 20: queryparsertest
-20/38 Test #20: queryparsertest .................. Passed 0.00 sec
- Start 21: andpostingiteratortest
-21/38 Test #21: andpostingiteratortest ........... Passed 0.00 sec
- Start 22: orpostingiteratortest
-22/38 Test #22: orpostingiteratortest ............ Passed 0.00 sec
- Start 23: phraseanditeratortest
-23/38 Test #23: phraseanditeratortest ............ Passed 0.00 sec
- Start 24: transactiontest
-24/38 Test #24: transactiontest .................. Passed 0.08 sec
- Start 25: kinotifytest
-25/38 Test #25: kinotifytest ..................... Passed 0.52 sec
- Start 26: pendingfilequeuetest
-26/38 Test #26: pendingfilequeuetest ............. Passed 6.97 sec
- Start 27: fileindexerconfigtest
-27/38 Test #27: fileindexerconfigtest ............ Passed 0.30 sec
- Start 28: basicindexingjobtest
-28/38 Test #28: basicindexingjobtest ............. Passed 0.00 sec
- Start 29: regularexpcachebenchmark
-29/38 Test #29: regularexpcachebenchmark ......... Passed 0.30 sec
- Start 30: filtereddiriteratortest
-30/38 Test #30: filtereddiriteratortest .......... Passed 0.23 sec
- Start 31: unindexedfileiteratortest
-31/38 Test #31: unindexedfileiteratortest ........ Passed 0.00 sec
- Start 32: metadatamovertest
-32/38 Test #32: metadatamovertest ................ Passed 0.49 sec
- Start 33: fileinfotest
-33/38 Test #33: fileinfotest ..................... Passed 0.00 sec
- Start 34: filewatchtest
-34/38 Test #34: filewatchtest .................... Passed 0.12 sec
- Start 35: queryserializationtest
-35/38 Test #35: queryserializationtest ........... Passed 0.02 sec
- Start 36: filemonitortest
-36/38 Test #36: filemonitortest ..................***Exception: Other301.93 sec
-********* Start testing of FileMonitorTest *********
-Config: Using QtTest library 5.9.1, Qt 5.9.1 (x86_64-little_endian-lp64 shared (dynamic) release build; by GCC 6.4.0)
-PASS : FileMonitorTest::initTestCase()
-
-========= Received signal, dumping stack ==============
-GNU gdb (GDB) 7.12.1
-Copyright (C) 2017 Free Software Foundation, Inc.
-License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
-This is free software: you are free to change and redistribute it.
-There is NO WARRANTY, to the extent permitted by law. Type "show copying"
-and "show warranty" for details.
-This GDB was configured as "x86_64-foxkit-linux-musl".
-Type "show configuration" for configuration details.
-For bug reporting instructions, please see:
-<http://bugs.alpinelinux.org/>.
-Find the GDB manual and other documentation resources online at:
-<http://www.gnu.org/software/gdb/documentation/>.
-For help, type "help".
-Type "apropos word" to search for commands related to "word".
-Attaching to process 5557
-[New LWP 5558]
-[New LWP 5559]
-__cp_end () at src/thread/x86_64/syscall_cp.s:29
-(gdb)
-Thread 3 (LWP 5559):
-#0 __cp_end () at src/thread/x86_64/syscall_cp.s:29
-No locals.
-#1 0x00007fd215ec69f1 in __syscall_cp_c (nr=7, u=<optimized out>,
- v=<optimized out>, w=<optimized out>, x=<optimized out>,
- y=<optimized out>, z=0) at src/thread/pthread_cancel.c:35
- r = <optimized out>
- st = <optimized out>
-#2 0x00007fd215eb61c3 in poll (fds=<optimized out>, n=<optimized out>,
- timeout=<optimized out>) at src/select/poll.c:10
-No locals.
-#3 0x00007fd212a5dcb5 in g_main_context_poll (priority=<optimized out>,
- n_fds=1, fds=0x55e0837e59e0, timeout=<optimized out>,
- context=0x7fd212a12d60) at gmain.c:4187
- ret = <optimized out>
- errsv = <optimized out>
- poll_func = 0x7fd212a6e0a0 <g_poll>
-#4 g_main_context_iterate (context=context@entry=0x7fd212a12d60,
- block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
- at gmain.c:3881
- max_priority = 2147483647
- timeout = -1
- some_ready = <optimized out>
- nfds = 1
- allocated_nfds = <optimized out>
- fds = 0x55e0837e59e0
-#5 0x00007fd212a5dddf in g_main_context_iteration (context=0x7fd212a12d60,
- may_block=1) at gmain.c:3947
- retval = <optimized out>
-#6 0x00007fd21514c9af in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
-No symbol table info available.
-#7 0x00007fd2150f4f2a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
-No symbol table info available.
-#8 0x00007fd214f0e063 in QThread::exec() () from /usr/lib/libQt5Core.so.5
-No symbol table info available.
-#9 0x00007fd21557304d in QDBusConnectionManager::run (
- this=0x7fd2157e90a0 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>) at qdbusconnection.cpp:178
- locker = <optimized out>
-#10 0x00007fd214f13058 in QThreadPrivate::start(void*) ()
- from /usr/lib/libQt5Core.so.5
-No symbol table info available.
-#11 0x00007fd215ec77a0 in start (p=0x7fd2160e9ae8)
- at src/thread/pthread_create.c:145
- self = 0x7fd2160e9ae8
-#12 0x00007fd215ed3e04 in __clone () at src/thread/x86_64/clone.s:21
-No locals.
-Backtrace stopped: frame did not save the PC
-
-Thread 2 (LWP 5558):
-#0 __cp_end () at src/thread/x86_64/syscall_cp.s:29
-No locals.
-#1 0x00007fd215ec69f1 in __syscall_cp_c (nr=61, u=<optimized out>,
- v=<optimized out>, w=<optimized out>, x=<optimized out>,
- y=<optimized out>, z=0) at src/thread/pthread_cancel.c:35
- r = <optimized out>
- st = <optimized out>
-#2 0x00007fd215eacb06 in waitpid (pid=<optimized out>,
- status=status@entry=0x7fd21610028c, options=options@entry=0)
- at src/process/waitpid.c:7
-No locals.
-#3 0x00007fd215eac9ea in system (
- cmd=0x7fd216100720 "gdb --pid 5557 2>/dev/null <<EOF\nset prompt\nset height 0\nthread apply all where full\ndetach\nquit\nEOF\n")
- at src/process/system.c:40
- pid = 5611
- old = {__bits = {0, 1, 512, 140540290017944, 140540290007872,
- 140540287428111, 3683979817539084297, 42949672961,
- 18446744073709551614, 64, 2308440353445801302,
- 2319979645499351072, 4921678398310990443, 0, 8, 140540290008408}}
- reset = {__bits = {6, 44, 5, 140540271215453, 4, 140540290008074,
- 140540290008144, 140540271727754, 140540290008144,
- 140540290008416, 1, 140540271634076, 3472328296227680304,
- 734139722786418736, 664962007705282899, 3472328296227680304}}
- sa = {__sa_handler = {sa_handler = 0x1, sa_sigaction = 0x1},
- sa_mask = {__bits = {65536, 0 <repeats 15 times>}}, sa_flags = 0,
- sa_restorer = 0x0}
- oldint = {__sa_handler = {
- sa_handler = 0x7fd215a27a70 <QTest::FatalSignalHandler::signal(int)>, sa_sigaction = 0x7fd215a27a70 <QTest::FatalSignalHandler::signal(int)>},
- sa_mask = {__bits = {21711, 0, 140540235644504, 140540290008272,
- 140540287429115, 140540290018464, 1, 101, 160, 140540290008336,
- 104, 140540165574784, 63, 0, 140540235644504, 8}},
- sa_flags = -1946157056, sa_restorer = 0x66}
- oldquit = {__sa_handler = {
- sa_handler = 0x7fd215a27a70 <QTest::FatalSignalHandler::signal(int)>, sa_sigaction = 0x7fd215a27a70 <QTest::FatalSignalHandler::signal(int)>},
- sa_mask = {__bits = {21711, 101, 140540235644504, 101,
- 140540290008584, 140540290008432, 140540287425282,
- 140540165574928, 116315483584, 64424509439, 101, 1,
- 140540165574768, 140540165574928, 0, 140540290008544}},
- sa_flags = -1946157056, sa_restorer = 0x55e0837e51a0}
- status = 32512
- ret = 0
- attr = {__flags = 12, __pgrp = 0, __def = {__bits = {6, 44, 5,
- 140540271215453, 4, 140540290008074, 140540290008144,
- 140540271727754, 140540290008144, 140540290008416, 1,
- 140540271634076, 3472328296227680304, 734139722786418736,
- 664962007705282899, 3472328296227680304}}, __mask = {__bits = {
- 0, 1, 512, 140540290017944, 140540290007872, 140540287428111,
- 3683979817539084297, 42949672961, 18446744073709551614, 64,
- 2308440353445801302, 2319979645499351072, 4921678398310990443,
- 0, 8, 140540290008408}}, __prio = 0, __pol = 0, __pad = {
- 0 <repeats 16 times>}}
-#4 0x00007fd215a279ac in stackTrace () at qtestcase.cpp:222
- cmd = "gdb --pid 5557 2>/dev/null <<EOF\nset prompt\nset height 0\nthread apply all where full\ndetach\nquit\nEOF\n\000\000\000`\001\000\000\000\000\000\000\000\b\020\026\322\177\000\000\017\246\350\025\322\177\000\000\000\376\377\377\377\377\377\377\340\a\020\026\322\177\000\000\034\333\030\272\375\177\000\000 \b\020\026\322\177\000\000\340\a\020\026\001\000\000\000\361i\354\025\322\177\000\000\060\v\020\026\322\177\000\000\000\000\000\000\000\000\000\000\002\000\000\000\000\000\000\000"...
-#5 0x00007fd215a27a65 in stackTrace () at qtestcase.cpp:237
- ok = false
- disableStackDump = <optimized out>
-#6 0x00007fd215a3103b in QTest::WatchDog::run (this=0x55e0837e5180)
- at qtestcase.cpp:991
- locker = {val = 94422767128985}
-#7 0x00007fd214f13058 in QThreadPrivate::start(void*) ()
- from /usr/lib/libQt5Core.so.5
-No symbol table info available.
-#8 0x00007fd215ec77a0 in start (p=0x7fd216100ae8)
- at src/thread/pthread_create.c:145
- self = 0x7fd216100ae8
-#9 0x00007fd215ed3e04 in __clone () at src/thread/x86_64/clone.s:21
-No locals.
-Backtrace stopped: frame did not save the PC
-
-Thread 1 (LWP 5557):
-#0 __cp_end () at src/thread/x86_64/syscall_cp.s:29
-No locals.
-#1 0x00007fd215ec69f1 in __syscall_cp_c (nr=7, u=<optimized out>,
- v=<optimized out>, w=<optimized out>, x=<optimized out>,
- y=<optimized out>, z=0) at src/thread/pthread_cancel.c:35
- r = <optimized out>
- st = <optimized out>
-#2 0x00007fd215eb61c3 in poll (fds=<optimized out>, n=<optimized out>,
- timeout=<optimized out>) at src/select/poll.c:10
-No locals.
-#3 0x00007fd212a5dcb5 in g_main_context_poll (priority=<optimized out>,
- n_fds=1, fds=0x7fd20ffc5fe0, timeout=<optimized out>,
- context=0x7fd213ee4b20) at gmain.c:4187
- ret = <optimized out>
- errsv = <optimized out>
- poll_func = 0x7fd212a6e0a0 <g_poll>
-#4 g_main_context_iterate (context=context@entry=0x7fd213ee4b20,
- block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
- at gmain.c:3881
- max_priority = 2147483647
- timeout = -1
- some_ready = <optimized out>
- nfds = 1
- allocated_nfds = <optimized out>
- fds = 0x7fd20ffc5fe0
-#5 0x00007fd212a5dddf in g_main_context_iteration (context=0x7fd213ee4b20,
- may_block=1) at gmain.c:3947
- retval = <optimized out>
-#6 0x00007fd21514c9af in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
-No symbol table info available.
-#7 0x00007fd2150f4f2a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQt5Core.so.5
-No symbol table info available.
-#8 0x000055e0835e18fd in FileMonitorTest::test (this=<optimized out>)
- at /usr/src/packages/user/baloo/src/baloo-5.38.0/autotests/unit/lib/filemonitortest.cpp:87
- file = {static null = {<No data fields>}, d = 0x7fd2131c1f40}
- spy = {<QObject> = {<No data fields>}, <QList<QList<QVariant> >> = {<QListSpecialMethods<QList<QVariant> >> = {<No data fields>}, {p = {
- static shared_null = {ref = {atomic = {
- _q_value = {<std::__atomic_base<int>> = {
- static _S_alignment = 4,
- _M_i = -1}, <No data fields>}}}, alloc = 0,
- begin = 0, end = 0, array = {0x0}},
- d = 0x7fd2151a24c0 <QListData::shared_null>},
- d = 0x7fd2151a24c0 <QListData::shared_null>}}, sig = {
- d = 0x7fd20ec80d80}, args = {d = 0x7fd20ec80f20},
- m_loop = {<QObject> = {<No data fields>}, static staticMetaObject = {
- d = {superdata = 0x7fd215547660 <QObject::staticMetaObject>,
- stringdata = 0x7fd215a493e0 <qt_meta_stringdata_QTestEventLoop>, data = 0x7fd215a49380 <qt_meta_data_QTestEventLoop>,
- static_metacall = 0x7fd215a440c0 <QTestEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0,
- extradata = 0x0}}, inLoop = false, _timeout = false,
- timerId = -1, loop = 0x0}, m_waiting = false}
- message = {d_ptr = 0x7fd20ec80f60}
- list = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {
- static shared_null = {ref = {atomic = {
- _q_value = {<std::__atomic_base<int>> = {
- static _S_alignment = 4,
- _M_i = -1}, <No data fields>}}}, alloc = 0, begin = 0,
- end = 0, array = {0x0}}, d = 0x7fd212d27c40},
- d = 0x7fd212d27c40}}
- vl = {<QListSpecialMethods<QVariant>> = {<No data fields>}, {p = {
- static shared_null = {ref = {atomic = {
- _q_value = {<std::__atomic_base<int>> = {
- static _S_alignment = 4,
- _M_i = -1}, <No data fields>}}}, alloc = 0, begin = 0,
- end = 0, array = {0x0}}, d = 0x7fd212d27c80},
- d = 0x7fd212d27c80}}
- loop = <incomplete type>
- variantList = {<QListSpecialMethods<QVariant>> = {<No data fields>}, {
- p = {static shared_null = {ref = {atomic = {
- _q_value = {<std::__atomic_base<int>> = {
- static _S_alignment = 4,
- _M_i = -1}, <No data fields>}}}, alloc = 0, begin = 0,
- end = 0, array = {0x0}}, d = 0x7fd20ec80d80},
- d = 0x7fd20ec80d80}}
- var = {d = {data = {c = 96 '`', uc = 96 '`', s = 4448, sc = 96 '`',
- us = 4448, i = 320606560, u = 320606560, l = 140540240466272,
- ul = 140540240466272, b = 96, d = 6.9436104672652768e-310,
- f = 1.96985347e-27, real = 6.9436104672652768e-310,
- ll = 140540240466272, ull = 140540240466272, o = 0x7fd2131c1160,
- ptr = 0x7fd2131c1160, shared = 0x7fd2131c1160}, type = 0,
- is_shared = 0, is_null = 0}}
-#9 0x00007fd215105536 in QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const () from /usr/lib/libQt5Core.so.5
-No symbol table info available.
-#10 0x00007fd215a2f158 in QMetaMethod::invoke (val9=..., val8=..., val7=...,
- val6=..., val5=..., val4=..., val3=..., val2=..., val1=..., val0=...,
- connectionType=Qt::DirectConnection, object=<optimized out>,
- this=<optimized out>)
- at ../../include/QtCore/../../src/corelib/kernel/qmetaobject.h:123
-No locals.
-#11 QTest::TestMethods::invokeTestOnData (this=this@entry=0x7ffdba11ab40,
- index=index@entry=0) at qtestcase.cpp:890
- invokeOk = <optimized out>
- isBenchmark = <optimized out>
- i = -1
- results = {d = 0x7fd2151a0020 <QArrayData::shared_null>}
- minimumTotalReached = <optimized out>
-#12 0x00007fd215a2fb90 in QTest::TestMethods::invokeTest (
- this=this@entry=0x7ffdba11ab40, index=index@entry=0, data=data@entry=0x0,
- watchDog=watchDog@entry=0x55e0837e5180) at qtestcase.cpp:1071
- curDataIndex = 0
- dataCount = 0
- foundFunction = true
- benchmarkData = {static current = 0x7ffdba11a780, result = {context = {
- slotName = {static null = {<No data fields>},
- d = 0x7fd2151a0020 <QArrayData::shared_null>}, tag = {
- static null = {<No data fields>},
- d = 0x7fd2151a0020 <QArrayData::shared_null>},
- checkpointIndex = -1}, value = -1, iterations = -1,
- metric = QTest::FramesPerSecond, setByMacro = true,
- valid = false}, resultAccepted = false, runOnce = false,
- iterationCount = 1}
- name = @0x7ffdba11a768: {
- d = 0x55e0835e33d8 <qt_meta_stringdata_FileMonitorTest+24>}
- member = "test_data()\000\000\000\000\000\350\250\021\272\375\177\000\000 H\244\025\322\177\000\000\000\000\000\000\000\000\000\000]C\361\024\322\177\000\000 H\244\025\322\177\000\000\350\250\021\272\375\177\000\000P\250\021\272\375\177\000\000\002\233\350\025\322\177\000\000\260Q~\203\340U\000\000\235\031\350\025\322\177\000\000\220\251\021\272\375\177\000\000\240\250\021\272\375\177\000\000\020\251\021\272\375\177\000\000\366z\354\025\322\177\000\000 \v\020\026\322\177\000\000\016z\354\025\322\177\000\000\300\250\021\272\375\177\000\000\000\f\020\026\322\177\000\000\000\300\016\026\322\177\000\000\361i\354\025\322\177\000\000PK\020\026\322\177\000\000\000\000\000\000\000\000\000\000\002", '\000' <repeats 15 times>...
- table = {d = 0x7fd214134340}
- gTable = <optimized out>
- curGlobalDataIndex = <optimized out>
-#13 0x00007fd215a301e1 in QTest::TestMethods::invokeTests (
- this=this@entry=0x7ffdba11ab40, testObject=testObject@entry=0x7ffdba11ac10)
- at qtestcase.cpp:1378
- data = 0x0
- ok = <optimized out>
- i = 0
- count = 8
- previousFailed = <optimized out>
- metaObject = <optimized out>
- watchDog = {d = 0x55e0837e5180}
-#14 0x00007fd215a30727 in QTest::qExec (testObject=0x7ffdba11ac10,
- argc=<optimized out>, argv=0x7ffdba11aca8) at qtestcase.cpp:1793
- handler = {d = 0x55e0837e50e0}
- commandLineMethods = {<std::_Vector_base<QMetaMethod, std::allocator<QMetaMethod> >> = {
- _M_impl = {<std::allocator<QMetaMethod>> = {<__gnu_cxx::new_allocator<QMetaMethod>> = {<No data fields>}, <No data fields>}, _M_start = 0x0,
- _M_finish = 0x0, _M_end_of_storage = 0x0}}, <No data fields>}
- test = {m_initTestCaseMethod = {mobj = 0x0, handle = 0},
- m_initTestCaseDataMethod = {mobj = 0x0, handle = 0},
- m_cleanupTestCaseMethod = {mobj = 0x0, handle = 0}, m_initMethod = {
- mobj = 0x55e0837e4a80 <FileMonitorTest::staticMetaObject>,
- handle = 19}, m_cleanupMethod = {
- mobj = 0x55e0837e4a80 <FileMonitorTest::staticMetaObject>,
- handle = 24},
- m_methods = {<std::_Vector_base<QMetaMethod, std::allocator<QMetaMethod> >> = {
- _M_impl = {<std::allocator<QMetaMethod>> = {<__gnu_cxx::new_allocator<QMetaMethod>> = {<No data fields>}, <No data fields>},
- _M_start = 0x55e0837e58a0, _M_finish = 0x55e0837e5920,
- _M_end_of_storage = 0x55e0837e5990}}, <No data fields>}}
- metaObject = <optimized out>
- benchmarkData = {static current = 0x7ffdba11ab00,
- measurer = 0x7fd212faafa0, context = {slotName = {
- static null = {<No data fields>}, d = 0x7fd214134300}, tag = {
- static null = {<No data fields>},
- d = 0x7fd21519ffc0 <qt_array>}, checkpointIndex = -1},
- walltimeMinimum = -1, iterationCount = -1,
- medianIterationCount = -1, createChart = false,
- verboseOutput = false, callgrindOutFileBase = {
- static null = {<No data fields>},
- d = 0x7fd2151a0020 <QArrayData::shared_null>}, minimumTotal = -1,
- mode_ = QBenchmarkGlobalData::WallTime}
- callgrindChildExitCode = 0
-#15 0x000055e0835e00a5 in main (argc=<optimized out>, argv=0x7ffdba11aca8)
- at /usr/src/packages/user/baloo/src/baloo-5.38.0/autotests/unit/lib/filemonitortest.cpp:204
- app = <incomplete type>
- tc = {<QObject> = {<No data fields>}, static staticMetaObject = {d = {
- superdata = 0x7fd215547660 <QObject::staticMetaObject>,
- stringdata = 0x55e0835e33c0 <qt_meta_stringdata_FileMonitorTest>, data = 0x55e0835e3280 <qt_meta_data_FileMonitorTest>,
- static_metacall = 0x55e0835e1f80 <FileMonitorTest::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0,
- extradata = 0x0}}, m_sut = 0x7fd214134380}
-Detaching from program: /usr/src/packages/user/baloo/src/baloo-5.38.0/bin/filemonitortest, process 5557
-========= End of stack trace ==============
-QFATAL : FileMonitorTest::test() Test function timed out
-FAIL! : FileMonitorTest::test() Received a fatal error.
- Loc: [Unknown file(0)]
-Totals: 1 passed, 1 failed, 0 skipped, 0 blacklisted, 301914ms
-********* Finished testing of FileMonitorTest *********
-
- Start 37: advancedqueryparsertest
-37/38 Test #37: advancedqueryparsertest .......... Passed 0.00 sec
- Start 38: filefetchjobtest
-38/38 Test #38: filefetchjobtest ................. Passed 0.12 sec
-
-92% tests passed, 3 tests failed out of 38
-
-Total Test time (real) = 313.83 sec
-
-The following tests FAILED:
- 4 - querytest (OTHER_FAULT)
- 5 - writetransactiontest (OTHER_FAULT)
- 36 - filemonitortest (OTHER_FAULT)
-Errors while running CTest
->>> ERROR: baloo*: check failed
-]0;>>> ERROR: baloo: all failed
-]0; \ No newline at end of file
diff --git a/user/baloo/initialise-variable.patch b/user/baloo/initialise-variable.patch
index 836e26ff0..542b35e79 100644
--- a/user/baloo/initialise-variable.patch
+++ b/user/baloo/initialise-variable.patch
@@ -1,6 +1,6 @@
--- baloo-5.38.0/src/engine/postingdb.cpp.old 2017-09-03 02:58:12.000000000 -0500
+++ baloo-5.38.0/src/engine/postingdb.cpp 2017-10-04 21:44:30.019139903 -0500
-@@ -274,7 +274,7 @@
+@@ -297,7 +297,7 @@
mdb_cursor_open(m_txn, m_dbi, &cursor);
MDB_val key = {0, nullptr};
diff --git a/user/bash-completion/APKBUILD b/user/bash-completion/APKBUILD
index 42575f687..81a7355ed 100644
--- a/user/bash-completion/APKBUILD
+++ b/user/bash-completion/APKBUILD
@@ -1,17 +1,22 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
-# Contributor: Kiyoshi Aman <kiyoshi.aman@gmail.com>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=bash-completion
-pkgver=2.8
+pkgver=2.11
pkgrel=0
-pkgdesc="Command-line tab-completion for bash"
+pkgdesc="Command-line tab-completion for the Bash shell"
url="https://github.com/scop/bash-completion"
arch="noarch"
-license="GPL-2.0-or-later"
+license="GPL-2.0+"
depends="bash"
+checkdepends="py3-pexpect py3-pytest py3-iniconfig"
makedepends=""
subpackages="$pkgname-doc"
-source="https://github.com/scop/${pkgname}/releases/download/${pkgver}/${pkgname}-${pkgver}.tar.xz"
+source="https://github.com/scop/${pkgname}/releases/download/${pkgver}/${pkgname}-${pkgver}.tar.xz
+ fix-tests.patch
+ gcc-x86-tests.patch
+ "
# Provided with util-linux and networkmanager:
_conflicting="
@@ -36,7 +41,6 @@ _conflicting="
"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -48,12 +52,24 @@ build() {
}
check() {
- cd "$builddir"
+ for k in \
+ test_aclocal \
+ test_chsh \
+ test_hostname \
+ test_ifdown \
+ test_ifup \
+ test_man \
+ test_service \
+ test_xmlwf \
+ unit/test_unit_expand \
+ unit/test_unit_expand_tilde_by_ref \
+ ; do
+ rm test/t/${k}.py
+ done
make check
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
mkdir -p "$pkgdir"/usr/share/doc/$pkgname/
@@ -66,4 +82,6 @@ package() {
done
}
-sha512sums="d839ef5a98811a2aade7ebdc0bc84c84a41c74db384f89913b06f3c25add1ba22528ac25392b19d27280685d258c74dcdc11247cbaae5b8d82f2c0b546abc268 bash-completion-2.8.tar.xz"
+sha512sums="41585f730b5114d397831ba36d10d05643c6a6179e746ddc49aa1cbef61ea5525fd2f09b2e474adee14e647f99df8d5983ee48e29a59d8a30e1daf7fb1837e06 bash-completion-2.11.tar.xz
+ada80cbec419a6f6b2eab648497d5aa6795883bc52a160c233c04d4479c6d543b5089745ab098c5d6d7b4a0f05d25708cf7cf9d3b565b5b70e96796b3042ca75 fix-tests.patch
+fb65b60f52da373368dfb5fd8034ca6b2be4c68648d827679596908364d0e0a69ede51c2954411ad5d83cfc4ee7666eeade2b036f2b5f52c004a9dba51f328a7 gcc-x86-tests.patch"
diff --git a/user/bash-completion/fix-tests.patch b/user/bash-completion/fix-tests.patch
new file mode 100644
index 000000000..b0a3a3641
--- /dev/null
+++ b/user/bash-completion/fix-tests.patch
@@ -0,0 +1,13 @@
+--- bash-completion-2.9/test/t/test_getconf.py.old 2019-07-12 01:03:00.331419016 +0000
++++ bash-completion-2.9/test/t/test_getconf.py 2019-07-12 04:15:53.176145140 +0000
+@@ -2,7 +2,9 @@
+
+
+ class TestGetconf:
+- @pytest.mark.complete("getconf P")
++ @pytest.mark.complete(
++ "getconf P", skipif="! getconf -a 2>&1 | command grep -q ^POSIX_V"
++ )
+ def test_1(self, completion):
+ assert completion
+
diff --git a/user/bash-completion/gcc-x86-tests.patch b/user/bash-completion/gcc-x86-tests.patch
new file mode 100644
index 000000000..49d7838b0
--- /dev/null
+++ b/user/bash-completion/gcc-x86-tests.patch
@@ -0,0 +1,22 @@
+Now that we have a GCC that supports completions, we have a few test failures.
+
+* -march=native is an x86-specific flag. There is no -march on Power.
+
+* -mtune=generic is x86 and Arm specific; Power's equivalent is powerpc.
+
+Upstream-URL: https://github.com/scop/bash-completion/issues/1201
+
+--- bash-completion-2.11/test/t/test_gcc.py.old 2020-07-25 06:49:49.000000000 -0500
++++ bash-completion-2.11/test/t/test_gcc.py 2024-05-26 21:16:26.236036406 -0500
+@@ -56,9 +56,9 @@
+ assert completion == "fam10"
+
+ @pytest.mark.complete("gcc -march=")
+- def test_march_native(self, completion, gcc_with_completion):
++ def test_march_native(self, completion, gcc_with_completion, gcc_x86):
+ assert "native" in completion
+
+ @pytest.mark.complete("gcc -mtune=")
+- def test_mtune_generic(self, completion, gcc_with_completion):
++ def test_mtune_generic(self, completion, gcc_with_completion, gcc_x86):
+ assert "generic" in completion
diff --git a/user/bcnm/APKBUILD b/user/bcnm/APKBUILD
new file mode 100644
index 000000000..69fc94ef5
--- /dev/null
+++ b/user/bcnm/APKBUILD
@@ -0,0 +1,32 @@
+# Maintainer: Laurent Bercot <ska-adelie@skarnet.org>
+pkgname=bcnm
+pkgver=0.0.2.0
+pkgrel=0
+pkgdesc="Client network manager"
+url="https://skarnet.org/software/bcnm/"
+arch="all"
+options="!check" # No test suite.
+license="ISC"
+_skalibs_version=2.14.4
+depends=""
+makedepends="skalibs-dev>=$_skalibs_version"
+subpackages="$pkgname-dev $pkgname-libs $pkgname-doc"
+source="https://skarnet.org/software/bcnm/bcnm-$pkgver.tar.gz"
+
+build() {
+ ./configure \
+ --enable-shared \
+ --disable-allstatic \
+ --prefix=/usr \
+ --with-pkgconfig \
+ --enable-pkgconfig
+ make
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ mkdir -p "$pkgdir/usr/share/doc"
+ cp -a "$builddir/doc" "$pkgdir/usr/share/doc/$pkgname"
+}
+
+sha512sums="826f8f5dce5bc07396c5c8af116c438ad9da0b320e9002e33e3da8f16619f36f2c295f25ef2acbdbf90e241b5887f6d0b51abab5f3f547d5e067378d220913f5 bcnm-0.0.2.0.tar.gz"
diff --git a/user/bdftopcf/APKBUILD b/user/bdftopcf/APKBUILD
index 5e7282cca..a62999dc6 100644
--- a/user/bdftopcf/APKBUILD
+++ b/user/bdftopcf/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=bdftopcf
-pkgver=1.1
+pkgver=1.1.1
pkgrel=0
pkgdesc="Compiler for bitmapped X11 fonts"
url="https://www.X.Org/"
@@ -9,10 +9,9 @@ license="MIT"
depends=""
makedepends="util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/bdftopcf-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/util/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -22,13 +21,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="7b790e8d512ca2812ac889c156ef91c48798b4744a6857e5b17e0128764b5afa8c5426fe5de05a9819d64745116718db4221b3e657e3c2633465e87179c44bec bdftopcf-1.1.tar.bz2"
+sha512sums="257dc9ae29f2cf1496aad91ccba534348d87f881d75431aa6611a8154cb817d17588c464ab6c6c6bc51e6060baa8dcfcb9fd8c037cdaea8d18287651fa6b7ea9 bdftopcf-1.1.1.tar.xz"
diff --git a/user/bearssl/APKBUILD b/user/bearssl/APKBUILD
index ad6e8b20a..0056de1f8 100644
--- a/user/bearssl/APKBUILD
+++ b/user/bearssl/APKBUILD
@@ -1,24 +1,35 @@
-# Maintainer: Laurent Bercot <ska-adelie@skarnet.org>
# Contributor: Laurent Bercot <ska-adelie@skarnet.org>
+# Maintainer: Laurent Bercot <ska-adelie@skarnet.org>
pkgname=bearssl
-pkgver=0.6
-pkgrel=1
+pkgver=0.6_git20241009
+_pkgcommit=3c040368f6791553610e362401db1efff4b4c5b8
+pkgrel=0
pkgdesc="The BearSSL implementation of the SSL/TLS protocol"
url="https://bearssl.org/"
arch="all"
license="MIT"
-builddir="$srcdir/$pkgname-$pkgver"
+depends=""
+makedepends=""
subpackages="$pkgname-dev"
-source="https://bearssl.org/$pkgname-$pkgver.tar.gz bearssl-brssl-dynamic.patch"
+source="bearssl-$pkgver.tar.gz::https://bearssl.org/gitweb/?p=BearSSL;a=snapshot;h=$_pkgcommit;sf=tgz
+ bearssl-brssl-dynamic.patch
+ bearssl.pc
+ "
+
+builddir="${srcdir}"/BearSSL-$(printf "%s" "${_pkgcommit}" | cut -c -7)
build() {
- cd "$builddir"
make \
- CC=gcc \
- LD=gcc \
- LDDLL=gcc \
- LDDLLFLAGS="-shared -Wl,-soname,libbearssl.so.${pkgver%%.*}" \
- D=".so.$pkgver"
+ CC=gcc \
+ LD=gcc \
+ LDDLL=gcc \
+ LDDLLFLAGS="-shared -Wl,-soname,libbearssl.so.${pkgver%%.*}" \
+ D=".so.$pkgver"
+}
+
+check() {
+ build/testx509
+ build/testcrypto all
}
package() {
@@ -29,12 +40,9 @@ package() {
cp -f "$builddir/build/libbearssl.so.$pkgver" "$pkgdir/lib/"
ln -sf "libbearssl.so.$pkgver" "$pkgdir/lib/libbearssl.so.${pkgver%%.*}"
ln -sf "libbearssl.so.${pkgver%%.*}" "$pkgdir/lib/libbearssl.so"
+ install -D -m644 "$srcdir"/bearssl.pc "$pkgdir"/usr/lib/pkgconfig/bearssl.pc
}
-check() {
- cd "$builddir/build"
- ./testx509 && ./testcrypto all
-}
-
-sha512sums="f9ed25683cfc6c4abe7f1203a2b82ed101ee4c9e0f9ab60755b6a09c8d1e8e4f64d413624e7bb9c4b0033f909a2e4568a1d916cc6ce4736222900691e1f8359a bearssl-0.6.tar.gz
-f5fe047862eb355a662ccb1b95c2ca4a870ac0f8d3f4cada5396d2f6a6635647db53fbeb038f9a7651b84d6cda32b6415ce0f69a8da92636d3b3b76578114d5c bearssl-brssl-dynamic.patch"
+sha512sums="1d6957515833c81ca3fa070bef1ddc82fab3ff03ca3e8a81aae3f8c09b01d1ed488eb8f54988f25c09cbfbc7a90a4cd1de13ba179f205580c9c73164a0ced2a8 bearssl-0.6_git20241009.tar.gz
+f5fe047862eb355a662ccb1b95c2ca4a870ac0f8d3f4cada5396d2f6a6635647db53fbeb038f9a7651b84d6cda32b6415ce0f69a8da92636d3b3b76578114d5c bearssl-brssl-dynamic.patch
+9b4972cb47e59b3e090429d08734d90c77bc29868cdb3efe3de7b38de4b183880e71552319242f0cac9d7ffe8547b6238fa483a6be462598f5f53c394fe4371c bearssl.pc"
diff --git a/user/bearssl/bearssl.pc b/user/bearssl/bearssl.pc
new file mode 100644
index 000000000..3ecd2fb46
--- /dev/null
+++ b/user/bearssl/bearssl.pc
@@ -0,0 +1,5 @@
+Name: bearssl
+Description: The BearSSL implementation of the SSL/TLS protocol
+URL: https://bearssl.org/
+Version: 0.6
+Libs: -lbearssl
diff --git a/user/beforelight/APKBUILD b/user/beforelight/APKBUILD
index 88fef1821..ee6f0da72 100644
--- a/user/beforelight/APKBUILD
+++ b/user/beforelight/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=beforelight
-pkgver=1.0.5
+pkgver=1.0.6
pkgrel=0
pkgdesc="Example screen saver for X.Org"
url="https://www.X.Org/"
@@ -10,17 +10,9 @@ license="X11"
depends=""
makedepends="util-macros libx11-dev libxscrnsaver-dev libxt-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/beforelight-$pkgver.tar.bz2"
-
-prepare() {
- cd "$builddir"
- default_prepare
- chmod a+w config.sub
- update_config_sub
-}
+source="https://www.x.org/releases/individual/app/beforelight-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="f6cc794159cda89ac060a43d190fa72419dbcf503a97093b4c0f05315389085ff804c2891e00da2843709e97633973010165f9d68ceb0dcc76eed150f9c75968 beforelight-1.0.5.tar.bz2"
+sha512sums="48a165d151676f6d213883bee98b34007403a77e025253c8649f9a0f5ea258b09381ab523a5e906030ac9fc8245fce2c6beaf9ad0f81116e302d51ad4a0fad5a beforelight-1.0.6.tar.xz"
diff --git a/user/bengali-fonts/APKBUILD b/user/bengali-fonts/APKBUILD
index 974e0971a..1a2b7590a 100644
--- a/user/bengali-fonts/APKBUILD
+++ b/user/bengali-fonts/APKBUILD
@@ -19,14 +19,12 @@ source="https://savannah.nongnu.org/download/freebangfont/Akaash-0.8.5.tar.gz
builddir="$srcdir"
prepare() {
- cd "$builddir"
default_prepare
# don't capitalise extension
mv Ani/mitra.TTF Ani/mitra.ttf
}
package() {
- cd "$builddir"
install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF \
$(find . -name *.ttf)
}
diff --git a/user/bind/APKBUILD b/user/bind/APKBUILD
index 7e0b38e15..db46d019f 100644
--- a/user/bind/APKBUILD
+++ b/user/bind/APKBUILD
@@ -1,15 +1,15 @@
-# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
+# Contributor: Sergey Lukin <sergej.lukin@gmail.com>
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=bind
-pkgver=9.13.3
+pkgver=9.16.35
_p=${pkgver#*_p}
_ver=${pkgver%_p*}
_major=${pkgver%%.*}
[ "$_p" != "$pkgver" ] && _ver="${_ver}-P$_p"
-pkgrel=1
+pkgrel=0
pkgdesc="The ISC DNS server"
url="https://www.isc.org/downloads/bind/"
arch="all"
@@ -24,10 +24,11 @@ options="!check"
license="ISC AND Apache-2.0 AND OpenSSL AND BSD-2-Clause AND BSD-3-Clause AND BSD-4-Clause"
pkgusers="named"
pkggroups="named"
-makedepends="bash openssl-dev libcap-dev perl linux-headers bsd-compat-headers libxml2-dev json-c-dev"
-install="$pkgname.pre-install"
+depends=""
+makedepends="bash openssl-dev libcap-dev perl linux-headers bsd-compat-headers libxml2-dev json-c-dev py3-ply libuv-dev"
subpackages="$pkgname-doc $pkgname-dev $pkgname-libs $pkgname-openrc $pkgname-tools"
-source="https://ftp.isc.org/isc/${pkgname}${_major}/$_ver/$pkgname-$_ver.tar.gz
+install="$pkgname.pre-install"
+source="https://ftp.isc.org/isc/${pkgname}${_major}/$_ver/$pkgname-$_ver.tar.xz
bind.so_bsdcompat.patch
named.initd
named.confd
@@ -40,6 +41,30 @@ source="https://ftp.isc.org/isc/${pkgname}${_major}/$_ver/$pkgname-$_ver.tar.gz
builddir="$srcdir/$pkgname-$_ver"
# secfixes:
+# 9.16.21-r0:
+# - CVE-2021-25214
+# - CVE-2021-25215
+# - CVE-2021-25216
+# 9.16.8-r0:
+# - CVE-2020-8620
+# - CVE-2020-8621
+# - CVE-2020-8622
+# - CVE-2020-8623
+# - CVE-2020-8624
+# - CVE-2020-8618
+# - CVE-2020-8619
+# 9.14.9-r0:
+# - CVE-2019-6477
+# 9.14.7-r0:
+# - CVE-2019-6475
+# - CVE-2019-6476
+# 9.14.3:
+# - CVE-2018-5744
+# - CVE-2018-5745
+# - CVE-2019-6465
+# - CVE-2018-5743
+# - CVE-2019-6467
+# - CVE-2019-6471
# 9.13.3:
# - CVE-2018-5741
# - CVE-2018-5740
@@ -61,23 +86,21 @@ builddir="$srcdir/$pkgname-$_ver"
prepare() {
default_prepare
- cd "$builddir"
### http://bugs.gentoo.org/show_bug.cgi?id=227333
export CFLAGS="$CFLAGS -D_GNU_SOURCE"
# Adjusting PATHs in manpages
- for i in bin/named/named.8 bin/check/named-checkconf.8 bin/rndc/rndc.8; do
- sed -i \
- -e 's:/etc/named.conf:/etc/bind/named.conf:g' \
- -e 's:/etc/rndc.conf:/etc/bind/rndc.conf:g' \
- -e 's:/etc/rndc.key:/etc/bind/rndc.key:g' \
- "${i}"
+ for k in bin/named/named.rst bin/check/named-checkconf.rst bin/rndc/rndc.rst; do
+ sed -i "${k}" \
+ -e 's:/etc/named.conf:/etc/bind/named.conf:g' \
+ -e 's:/etc/rndc.conf:/etc/bind/rndc.conf:g' \
+ -e 's:/etc/rndc.key:/etc/bind/rndc.key:g' \
+ ;
done
}
build() {
- cd "$builddir"
./configure \
--build="$CBUILD" \
--host="$CHOST" \
@@ -87,21 +110,15 @@ build() {
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--with-openssl=/usr \
- --with-randomdev=/dev/random \
--with-libxml2 \
--with-libjson \
--enable-linux-caps \
- --enable-threads \
- --enable-filter-aaaa \
- --enable-ipv6 \
--enable-shared \
- --enable-static \
--with-libtool
- make
+ make -j${JOBS}
}
package() {
- cd "$builddir"
install -d -m0770 -g named -o root "$pkgdir"/var/bind \
"$pkgdir"/var/bind/sec \
"$pkgdir"/var/bind/dyn \
@@ -131,6 +148,17 @@ package() {
ln -s named.ca root.cache
}
+libs() {
+ default_libs
+ for dir in lib usr/lib; do
+ for file in "$pkgdir"/$dir/lib*-"$pkgver".so; do
+ [ -f "$file" ] || continue
+ mkdir -p "$subpkgdir"/$dir
+ mv "$file" "$subpkgdir"/$dir/
+ done
+ done
+}
+
tools() {
pkgdesc="The ISC DNS tools"
install=""
@@ -147,7 +175,7 @@ tools() {
done
}
-sha512sums="980f294ef7b75c9a0917212e26300037ad6a33ff3565c099a6bad15350f0738491396a22a40dd552efd7fd25634f82f236abca4f83b4c8a9c580099851dd3c83 bind-9.13.3.tar.gz
+sha512sums="c979e7a9bcea1c9fb1049a2708d8643c71ad2448a195454fcb3dfacf5d874221e95473e140a6944c3fa249f516718416fb67a50e267522d6bcb2915cdb46e6ea bind-9.16.35.tar.xz
7167dccdb2833643dfdb92994373d2cc087e52ba23b51bd68bd322ff9aca6744f01fa9d8a4b9cd8c4ce471755a85c03ec956ec0d8a1d4fae02124ddbed6841f6 bind.so_bsdcompat.patch
196c0a3b43cf89e8e3547d7fb63a93ff9a3306505658dfd9aa78e6861be6b226580b424dd3dd44b955b2d9f682b1dc62c457f3ac29ce86200ef070140608c015 named.initd
127bdcc0b5079961f0951344bc3fad547450c81aee2149eac8c41a8c0c973ea0ffe3f956684c6fcb735a29c43d2ff48c153b6a71a0f15757819a72c492488ddf named.confd
diff --git a/user/bind/bind.pre-install b/user/bind/bind.pre-install
index 3f7c36847..2801f5172 100644
--- a/user/bind/bind.pre-install
+++ b/user/bind/bind.pre-install
@@ -1,6 +1,7 @@
#!/bin/sh
-addgroup -S named 2>/dev/null
-adduser -S -D -H -h /etc/bind -s /sbin/nologin -G named -g named named 2>/dev/null
+groupadd -r named 2>/dev/null
+useradd -c named -s /sbin/nologin -g named \
+ -m -d /etc/bind -r named 2>/dev/null
exit 0
diff --git a/user/bindgen-cli/APKBUILD b/user/bindgen-cli/APKBUILD
new file mode 100644
index 000000000..ec4e1ee1a
--- /dev/null
+++ b/user/bindgen-cli/APKBUILD
@@ -0,0 +1,241 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=bindgen-cli
+pkgver=0.70.1
+pkgrel=0
+pkgdesc="Automatically generates Rust FFI bindings to C (and some C++) libraries."
+url="https://rust-lang.github.io/rust-bindgen/"
+arch="all"
+license="BSD-3-Clause"
+depends="clang-libs"
+makedepends="rust cargo"
+subpackages=""
+source=""
+
+cargo_deps="
+aho-corasick 0.7.20
+annotate-snippets 0.9.1
+bindgen 0.70.1
+bindgen-cli 0.70.1
+bitflags 1.3.2
+bitflags 2.2.1
+block 0.1.6
+cc 1.0.78
+cexpr 0.6.0
+cfg-if 1.0.0
+clang-sys 1.4.0
+clap 4.1.4
+clap_complete 4.2.0
+clap_derive 4.1.0
+clap_lex 0.3.1
+either 1.8.1
+env_logger 0.10.0
+env_logger 0.8.4
+errno-dragonfly 0.1.2
+errno 0.3.1
+fastrand 1.8.0
+getrandom 0.2.8
+glob 0.3.1
+heck 0.4.0
+hermit-abi 0.3.2
+humantime 2.1.0
+instant 0.1.12
+io-lifetimes 1.0.4
+is-terminal 0.4.7
+itertools 0.13.0
+libc 0.2.154
+libloading 0.7.4
+linux-raw-sys 0.3.8
+log 0.4.17
+malloc_buf 0.0.6
+memchr 2.5.0
+minimal-lexical 0.2.1
+nom 7.1.3
+objc 0.2.7
+once_cell 1.17.0
+os_str_bytes 6.4.1
+owo-colors 3.5.0
+prettyplease 0.2.7
+proc-macro-error-attr 1.0.4
+proc-macro-error 1.0.4
+proc-macro2 1.0.60
+quickcheck 1.0.3
+quote 1.0.28
+rand 0.8.5
+rand_core 0.6.4
+redox_syscall 0.3.5
+regex-syntax 0.6.28
+regex 1.7.1
+rustc-hash 1.1.0
+rustix 0.37.7
+shlex 1.3.0
+similar 2.2.1
+strsim 0.10.0
+syn 1.0.107
+syn 2.0.18
+tempfile 3.5.0
+termcolor 1.2.0
+unicode-ident 1.0.6
+unicode-width 0.1.10
+version_check 0.9.4
+wasi 0.11.0+wasi-snapshot-preview1
+winapi-i686-pc-windows-gnu 0.4.0
+winapi-util 0.1.5
+winapi-x86_64-pc-windows-gnu 0.4.0
+winapi 0.3.9
+windows-sys 0.42.0
+windows-sys 0.45.0
+windows-sys 0.48.0
+windows-targets 0.42.2
+windows-targets 0.48.1
+windows_aarch64_gnullvm 0.42.2
+windows_aarch64_gnullvm 0.48.0
+windows_aarch64_msvc 0.42.2
+windows_aarch64_msvc 0.48.0
+windows_i686_gnu 0.42.2
+windows_i686_gnu 0.48.0
+windows_i686_msvc 0.42.2
+windows_i686_msvc 0.48.0
+windows_x86_64_gnu 0.42.2
+windows_x86_64_gnu 0.48.0
+windows_x86_64_gnullvm 0.42.2
+windows_x86_64_gnullvm 0.48.0
+windows_x86_64_msvc 0.42.2
+windows_x86_64_msvc 0.48.0
+yansi-term 0.1.2
+"
+
+source="$source $(echo $cargo_deps | sed -E 's#([[:graph:]]+) ([[:graph:]]+)#\1-\2.tar.gz::https://crates.io/api/v1/crates/\1/\2/download#g')"
+
+prepare() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ export CARGO_VENDOR="$CARGO_HOME/adelie"
+
+ (builddir=$srcdir; default_prepare)
+
+ mkdir -p "$CARGO_VENDOR"
+ cat <<- EOF > "$CARGO_HOME/config.toml"
+ [source.adelie]
+ directory = "${CARGO_VENDOR}"
+
+ [source.crates-io]
+ replace-with = "adelie"
+ local-registry = "/nonexistant"
+ EOF
+
+ for _dep in $(echo $cargo_deps | sed -E 's#([[:graph:]]+) ([[:graph:]]+)#\1-\2#g'); do
+ ln -s "$srcdir/$_dep" "$CARGO_VENDOR/$_dep"
+ _sum=$(sha256sum "$srcdir/$_dep.tar.gz" | cut -d' ' -f1)
+ cat <<- EOF > "$CARGO_VENDOR/$_dep/.cargo-checksum.json"
+ {
+ "package":"$_sum",
+ "files":{}
+ }
+ EOF
+ done
+}
+
+build() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ cargo build -j $JOBS --release
+}
+
+check() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ cargo test -j $JOBS --release
+}
+
+package() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ cargo install --no-track --path . --root="$pkgdir"/usr
+}
+
+sha512sums="ad31f3d1b3fe41e593d4ca7e721bbad62936f2e6a17fd1e0997353edb6fc906d1bef2b79f0ac7c7676abe637bbabb23ff22059947be379a2441011f8178983c5 aho-corasick-0.7.20.tar.gz
+e1e8b262a6681730ad068c29d7e0f3879acf0c7138721f606851228bd5d90292f24ac2c225fe49f26264e7d35de5ed3904850e522da8cd2c44a67f7db36f2d8e annotate-snippets-0.9.1.tar.gz
+cf1c87ea7ab9ed4df953795f1aa77e6ae6d72e768de3b517300074501ce49db6a3def1f58b9d824b5727974cab84a48461e7d98086fc440dc73ad9cf173ad5ed bindgen-0.70.1.tar.gz
+70ba89860ac86bcbc546cea8459b3d2f4f0762e3fef758df2358e2aeea09249775174a6ccbcbd707f9dba107c1d49a8f066b122af88f05cf98b0d0e087fa13f5 bindgen-cli-0.70.1.tar.gz
+3c698f757b5cc62f815f9a1cce365c3d2dd88e4db71f331dff8bba86c2865f755b81cb4c9bfc59bd86b7643b0943f9e09a7c4f8ad75eb2ab0e714803d0129f62 bitflags-1.3.2.tar.gz
+413b602edb82f8a4553735e46feefe323137b742d003368e037406157f916e5a5ea002d015a27cf8d41accca75f103c6712e2268fe2853d4d5e93e7264682182 bitflags-2.2.1.tar.gz
+c278e3c0346cae423b533a8f5d6b822e788ec450c92ef0f5f559d5705764a0a11df49f0f66bb1c8af7e89bec8ec802934676b969e43f92255a38b210d0fbd710 block-0.1.6.tar.gz
+b85bec4c75cb1d1e252419052e9dd22b6892e54ea36195ff483a04f785b5b103e82b30b778459fd45324ffeb2463aa4f5696baeff2779c25ffe9f65eb99ae893 cc-1.0.78.tar.gz
+766bff7ca7f9bf0885aee6f014bcfc084e7fdfcd567a49443d5340acfe8f257db109de17b24588504fc35c53f2d4303e2d22da21f73669125cfca984950cf886 cexpr-0.6.0.tar.gz
+0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff cfg-if-1.0.0.tar.gz
+062189bb0a341e2e85de4987f4b564c1fc69e4005c9c42cfedb61dee5f48db9126a8114d1d97be1b9c21b8c885243751232fbe8cf532e1d2be593308fe45216a clang-sys-1.4.0.tar.gz
+0828a67a5dda8a32251ce5de6570e020cb54ff7198a7df0051e1e78c75bf7c3f7b9e47ee1f6ff93fcac985d06a65c0d6ec061de4b967954949f77c12110053bb clap-4.1.4.tar.gz
+6af0d15c54aea2dd90fe49688053936f158f374290a568df80ca7907c6a6a93edf2c84f281c3ff0a4ca716619e71714922928b2f90885cb79a3b64666e83bebd clap_complete-4.2.0.tar.gz
+dc191ccd0b596395d029e9ded5d1cb2cb86c8392a4de52ddb877b59dafe85369287b6ec2749d01f33372fcd4cb6a4e12a9cb02b394f50d65ebdc4693af062807 clap_derive-4.1.0.tar.gz
+2619ba0fb961d8ee86e42864b56511378ef837674aab6b1a21defee20f321e4f29b3b3fead0665b4385b0675d7bc63a7dd7df00dde51dee7ee99c7add6828b89 clap_lex-0.3.1.tar.gz
+5e4da301a605e0bc1ee3a269fe449aef044df05b5e833940c7f79bed61bbff4fc248e9c82b45dab92b2688d578ada000b271aaf67f2f4f7c82b35f05663cfe7e either-1.8.1.tar.gz
+4dd02f9d333a1f15657167ef4bd403eda5426cad17e0a4a43fa20cc65449345eb4d3fae2d6b10a3480016b9e23497fac13ed7e70b40c9450ef430be9f910d3e4 env_logger-0.10.0.tar.gz
+9e4478ff609a2e1e1a902a55b221af43a52622fdb5668dc33fb0be354b964708b7b6d13b7f1ef11982f45fa7e71f0712a2ab3fd4ea98155a5115e5a7c3d33049 env_logger-0.8.4.tar.gz
+f853f1e1b8dd0f359a8f9a0399b3384c1103cd090d96e2b2204f91a40d40a9eb99383d4aa6a11e5470c51557afacf452d4be2049600d4235d27f59870fa3b916 errno-dragonfly-0.1.2.tar.gz
+00d64157d066f1e7601c522c0f4e777eb662ca5cce64682f616de0734857765c343396f7161ac2908c3db0c474995ae157bfe9d8a9880743724d9bd428dfdf54 errno-0.3.1.tar.gz
+82cbc2b29b97fa3fa2c9372d3e8c390586a7b39f6c7d8c45f9b779bdfdaa2e8a3b44bc7bfcb3367c18120726facc753c9827cf63a8fb4ddc2667509b16333cb1 fastrand-1.8.0.tar.gz
+cd7aea29f79a33a0de2a52a0a82f2b57ea8f27908ccfe00a5f42248766df88b225023603ec56d6fc634ef9c1eb67ad0135c90d4c695f6f659db0767e7fda44c5 getrandom-0.2.8.tar.gz
+29368160138bcb7ea5660f9f30c5711cfca8bc8ba836bbade3fbe8c424e7b4118daf27cffa677962e37e36f025fd2bb5a9c2aea865b0ff155cace455dfbb658b glob-0.3.1.tar.gz
+33bdbf4ff9ecc4f4d74cf06590e056f4d96bf0d990d5381b9da5b65682b2495ed74e27b45419c2afa986c1f6200909d5175b137ae73ced5cc8ac869e4e1bce8f heck-0.4.0.tar.gz
+22901ec8976a7c96e93c9e07a2c5d3db49d7af60ce60c7ee6f61c3cbe93190d1f285e737c1c8b2236d540ab14e5d92e42828ec05f1b212332a862baf2b1b57f6 hermit-abi-0.3.2.tar.gz
+3bf29ddd1391d82897c22baa0ff3ed58ef6d6959859f1f8ed54d324caba5b6fb4422e56790511ce82f902cd11467f93c8ab7fc7b0e0bdb719308a4d0a446ae0c humantime-2.1.0.tar.gz
+fae494c00111c51c840f9dd6a10febe403e27ebb933dd16633a213e9c20f2bc11adeb431c71f8a6713bf88f270a010941e15d83df294e658791934f83a5d2407 instant-0.1.12.tar.gz
+1b2b151561dc79d1467b699590b2cb5d4acb39f75f38c05a94edb6d1543acca541b5a083fe7b606bc37cb2812692b7acb46996d0b096b96b0b085d31b1336775 io-lifetimes-1.0.4.tar.gz
+56c00b2942963f8a0b5c40c96a885f85565fb09e247bfd5a3e77ca5c9e0e0e40a17a8d809c0541177e8b496fef87baac4b86c751765491ffffdb631515d8acf5 is-terminal-0.4.7.tar.gz
+c6cb8f93a93b6ac1a2cbb3033e66fc81a39f83be773b734bea3311332b96bc71bbb518aae3e6b40cb537590c23de1ca4964361c336795c3985bde63232d410c4 itertools-0.13.0.tar.gz
+891a36cf153a9f4d58793412c104504c57280994e428ce8ba208673a924b2de38cc21eece09b91696eaea3b2359606dbe9f1509f9bf364bdabdb366ef2dd0f61 libc-0.2.154.tar.gz
+34439d9eca68bac8fcbe2bc94a70e07550e7e95d713ab74ed60ba6736ec807fd9c9135c178d436fbeb39afb074b2a9b05775d953340845c088f5f8712f5f56a1 libloading-0.7.4.tar.gz
+cb0e5c54870dacfa513ad05f7a84e9e90dc1a42f55685fe3e252fd25cffa4b875f1b65eaf4ad132ef0a19e6677c7763b360d71ff0060fe6ce5198f38b9956375 linux-raw-sys-0.3.8.tar.gz
+2477d88db42b1d92c30708d88823212e236f613b3465e85eb425f83f8d16fadfaf0352f06c2999a1852102edd2f6ffb10ecb539d8a3b6c48f552a25622ccffa2 log-0.4.17.tar.gz
+463b3d7666cdd7de618abf0cc4e488060c84d6d93c56d4e922169511a0b03de380ea988cd998f5a162b244088902198763351ac16dea3762f0fa0840fc29d6ed malloc_buf-0.0.6.tar.gz
+444a163b484c233e78c0e2e4d51f01ce2da93d7d29f516a95e4b0866b20bdfd3f34137653abed53eb70387991ee3e2b5937d8d4360a85bbcb50a93005a75defa memchr-2.5.0.tar.gz
+385fab51884bdcc7b0f2728a219ab164d0dc8efe42160b918f2c09f79ecf853fb12bda006d11e649f097bae1499dcd41ddf2a8784ee7d178cf2c28059e46078c minimal-lexical-0.2.1.tar.gz
+1ffce08dde299bc0e0367ad59c7b6a83e23decfa11115ee076ab91ec53cdd9ef37e4c2103c96eff23a7b6b8b5c3f67c83ce1917928c7d4c6462083bdfa0c9cad nom-7.1.3.tar.gz
+7178870c8e4e9154b4c7b4953b3164946b7ce72c956a02b9ba18889353c72be735824bd73e44a485e42ad5f97994820d9153ac684629342755a6a63711ab5988 objc-0.2.7.tar.gz
+291d87380c0ea17fb3ffc9fdff8620d2ff55601c06ef65b2f0c54254fecd5b488645c6e94c6026b82071893f4d420491ff712399a782e14efa1e323e5c299c46 once_cell-1.17.0.tar.gz
+2199502ad24449e08370686a596f905325f5b145e105e8c7bf90ed7729bbc405e065fce62c98eada40f77f0665ca041db41f16cc8e62473501eca32c24e56f43 os_str_bytes-6.4.1.tar.gz
+1718f03d9f3296ffe3145161e038ebdb8dc40b69c0e2cb80a51866b519cf857b6573aedb7704895401e10cea11ca422a384c3594b8762be29eaa90908e24f7aa owo-colors-3.5.0.tar.gz
+b8625d09c9709d0cbb7c49bf887574e40419df2b21978ad9ba22693358abb295c3d9f85830fb41b64c4adc76d64a514de174fcc4a11b54d59fa6aca3f8b85c3c prettyplease-0.2.7.tar.gz
+2606afa9ec78d7dad4500c98d3a5ecbd02c6b53ab829c742bed7f57b322a95238ab4e01cf268746815f1424fd9b02eddfa30e72f98c66106f57765f3d3116495 proc-macro-error-attr-1.0.4.tar.gz
+8a47bc9d3e24e9561d1e384d8f5a633284c2cf9b5e6733c5f9d1dbfe1870ccc8e2152482852e50b551cecb68e009148585b910ffb0508a7b4875598eaf8657db proc-macro-error-1.0.4.tar.gz
+2a3d33d2e42e3b7edac7a099dcaf83c43ad47852217424c2bcf8ed5b894292975ef5a11df01ebb3479971e94d5b032b9d043c28bed476d6f7087fb9297fbaac0 proc-macro2-1.0.60.tar.gz
+07dd707c9d3fd0b9cedbba545bc8b4fc1ca2770d169e444f8c96f8306d3161a6a3e9189cc5d0d6b3dc4221f7dbc05887dfe2dedc914f88d5e69ab2b94179185a quickcheck-1.0.3.tar.gz
+846d718153f78cbae6dc714caa9413a5d5964bcc5e032f5c6c5356c62c33bf22635955ebdff0dede69ba1c9657387e65d61de7c537f6f56f8060721dfa52d735 quote-1.0.28.tar.gz
+8b33a8988906ba5e2057a9a84bdd11f867a5536c22f5056eec59ed4ec4e3a6da2fd773da4c0510d343762e5a4ea0f007db4c4a7cef87a47f90e36c1a84d86fb2 rand-0.8.5.tar.gz
+36c67eb845aa2ccca49d6d680f28d418229bbc5a050729e487fe6b9f9f384fdd7b8d67fc6508b90b79ffb3c26688e72feceb3ecae57d3d7f59338aeb62296f79 rand_core-0.6.4.tar.gz
+16f8f4766932bb54e4740cfdb4f0802f76246c0bf88c1d76c69c115949b124b625d8c3b85d8947073c2e9544f425aa16c10f71fabe3c03d29e424c47fe4ccdde redox_syscall-0.3.5.tar.gz
+ba5fb1622a330b67a4eb820551c7f20dbfdc6b38eb697b9bfddea4cf0060b473472045e93aaf6cb9727ae609e06ed285e1e42f06f34ac730ac39fb90425bbe85 regex-syntax-0.6.28.tar.gz
+ee19bc6d24b981a151324ad4115488383227ec33dfba0225b35b6252f0d363b8d906db59a45170139c7a687fe681a983c2392d2921c7365db38c7c0e9745066f regex-1.7.1.tar.gz
+84e673ea9b046f7b989d47f2c4505557fbd5de991e6fc9f56a03605d40e0b4ba5427cd566954890153cc033ccbec6c984306634571935bfe0d4cdfbe56f39544 rustc-hash-1.1.0.tar.gz
+e72fcf16722b62dc9821a498b21254b6f794580aef64e2ae9db15eaf5f5c63bd55a22e0014a00e2a2fcdb4f6ad703c2fa8b75b2db387d1a658a34da7a4ca424e rustix-0.37.7.tar.gz
+5c8cedbe666a14b8a0874defb9208146ce64579cde52ed483e4a794cac5dde6a24bf8d684404edff582f842e1fd4fa3fbeddbe074f191e4ec4aa517aa456fe8a shlex-1.3.0.tar.gz
+9a353bfbe495bab83e401314bb97c6605fa6283af06e03bad50bc429388c7abf44bb9cc68db781ef2b786840eb444907f35b70b17343b2cb993800536b4e36a2 similar-2.2.1.tar.gz
+78b318532addfcf5c1ccc1e14539e258aab9d3cd893cc45d82342549bde838c177d90f13c560671f8f32929af47d0b467db35e6876bd7697d8b3f9e055aeeac1 strsim-0.10.0.tar.gz
+58132adb76643521a6a9cbc0316431318ac25f8517bba3cbb98e7e28ed536f9e24f643e898fa21a2f74cc8c1aeafaecf9b4199b23048c7be8c0bab2fe3aa7623 syn-1.0.107.tar.gz
+2642eb35d52022c6d21bb893843beb9b737a267f620e1f5a6c9096d434fd1fab05fe007c8d8b6f1fe00a25007d6f55dbd4ec620b9f5c1154659bf34c246334dd syn-2.0.18.tar.gz
+8e8775a9727e32f6931b3289d2b8aefa5ede7b224ae2e1937da3aff371ef5f6078587f060eb36793e9779249992a97acc39c02c6095c41467929e39ada12c7db tempfile-3.5.0.tar.gz
+cf1896523353390b2f90b2a8bf30f47da5fc7c2daa635bd0cd8059bdc73feb243e46e4279562fe45d5726f2840833b1e967c7de19ffc0c853592d9f86c0c1be7 termcolor-1.2.0.tar.gz
+ee1dc78fe535f46bdaf3e19dd8dfc859bf3133d9271026cadf626a07ba586c39caca4e45d905156a6276cf852f9cebef196b2229c3ba4b5e2b26c956fd6cff86 unicode-ident-1.0.6.tar.gz
+9836a8d489d18ea1ecfe1957ed6d5da7dce825e138cd1848aef093fa8d2eb83fcf01eabb1a2446df4f5ede4e67316e9e81b5d58b59d4e8c5d67870e8fa5dca3b unicode-width-0.1.10.tar.gz
+b172dc9a3759a4a683ffc39b9a40b03b9974b626a088217de87090466cef695226557c226cf3e469b2b25ee7297b7eb0d7719878cab42457f80146a81943c0c8 version_check-0.9.4.tar.gz
+043500ab28cd9cb779475255da5d109ebab7fccca72b64873dc28d77bc5a157ba8d96b9e8f05223b5b36c7089bb7b4ba87657fc69bac16b78972f897294a865f wasi-0.11.0+wasi-snapshot-preview1.tar.gz
+a672ccefd0730a8166fef1d4e39f9034d9ae426a3f5e28d1f4169fa5c5790767693f281d890e7804773b34acdb0ae1febac33cde8c50c0044a5a6152c7209ec2 winapi-i686-pc-windows-gnu-0.4.0.tar.gz
+7baeb661f397c4693dfa001fdc774b323c51a7c55caad40f2de5112a1cefd1d6151e3df41fa4ee193460a5905917c83d2b1de5fa10b4bd014ad96690af95c0fd winapi-util-0.1.5.tar.gz
+4a654af6a5d649dc87e00497245096b35a2894ae66f155cb62389902c3b93ddcc5cf7d0d8b9dd97b291d2d80bc686af2298e80abef6ac69883f4a54e79712513 winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz
+ff8b7b78065f3d8999ec03c725a0460ebc059771bf071c7a3df3f0ecd733edf3b0a2450024d4e24e1aedddaecd9038ce1376c0d8bbf45132068cf45cf4a53a97 winapi-0.3.9.tar.gz
+b07b119688f3e3ad234d36979947f34e8e19988fb62101afbe18ec8afc9c8a4261128939df8bbb849d5c5982422cb4c50dbcba70f2bf401fbb7c605df1b2b354 windows-sys-0.42.0.tar.gz
+f239346c0141b95aa76e0771e2f4e38b9a592f3cd92c6001de353637cd65cd73b94cbf9917a4eaa9b0c0b2e6e2af920b9cf6b3fccb52770df5160254cffc1c47 windows-sys-0.45.0.tar.gz
+bdf534bcf3face31e9ebe11427a911a53f89f4ff5eaea8cccd094e139bfe14b2aec602b1cab1df774794d999477439d9adc6b627a8e33c20334fc348ba2c47ed windows-sys-0.48.0.tar.gz
+84fbaffcad9a80beca77506aac26d0c5cb75aa0f21a5a70bcd3f6a16e71e8753ae00d3b89da9262c99756624163dcc0d6074fa9f99dfaae0dc098018209025f9 windows-targets-0.42.2.tar.gz
+e48179620cce528292167f1d5ee2deea0659569c996dc90eb4ab62b9ea8baee6c0bea3ab739e06d8793c9690bfc895545ed0039cb633ca39293de79c42ea9de2 windows-targets-0.48.1.tar.gz
+75cd7eb1def8ce9d0ff3d7468d2b1cc31cc76c08f981a2460c3d1eb09cff7100d7442863a3591621c1f5f3b3f4badf0b5c95285b6ed583e37283a8403f1095f1 windows_aarch64_gnullvm-0.42.2.tar.gz
+80c5aa74c5669f7acff3882a8e7575f15e8d7cc58c11a1cb731ff423eb9cc9ba43cc6b80e52803c0d44e6a9001655ba87de6f43a9fe858da6d6e3a5c983a2711 windows_aarch64_gnullvm-0.48.0.tar.gz
+d2dafa8c94d01c1b65ca1bd631d31f2ef842f1db7accb132ff78c3f8483221b991afd3391563e03dcec42bbc9cbdc0ebdab47b991d25af85b5ba2ac1bbf8db63 windows_aarch64_msvc-0.42.2.tar.gz
+617e47a7202f1db4dbd3ecea509682135ccd85e3a458c0331b9bc7aa1d84e5756b59c881cb098d5c6d4c951248d13c8253a8e8a50938e1997bd19ceba77262df windows_aarch64_msvc-0.48.0.tar.gz
+ad09d650a05cb91cb6b40f59025c023a4c286bc1194586697c506016df2b9b0d5b02606b81687bc634795a0d9a9b8a73e486599328ae09c853e8e5ba662fc59c windows_i686_gnu-0.42.2.tar.gz
+15149fdd48b61b6d993acd392dbd353d0280d984ea88745217e4207937174bb90cdd9701f69ff0fe06a842f03607cbb57937d20d79ab577181e605a8a8fadc68 windows_i686_gnu-0.48.0.tar.gz
+c1706fc36d4b157c020744a11b3eb5d7dfbf05a0b56775bc717e94b7fd725816b20154fdbcd69ac08dbfb8b8bbfa74fab72d7a9c10399aad6a1cc54cf597e804 windows_i686_msvc-0.42.2.tar.gz
+11a50800e709712dbea907275bc0faa46d2eb2969118445ed5b932d9c5957a09592a5b26a40e554c1f5fd56c6d074a07637e6f88eedd2224e1001e62df7b469b windows_i686_msvc-0.48.0.tar.gz
+5767af3c86e717f93137a89d442230e6b60a649057edb3ab104b1f82c0bcd64fe089dcdf2f4fd486a799bece1ddb5f0449641536b678211945e749ae24f35c1f windows_x86_64_gnu-0.42.2.tar.gz
+38eff1164fb37dbd2bbe53404b20cba92de84cbbd5e4eb9ad60d51fb43d6fdb8b87a1488e2c88ebd4b3ff3b708f93fdc05df4b14a285d3ff11c33ff0d9828602 windows_x86_64_gnu-0.48.0.tar.gz
+d39a8bc948110fe612d3f8d6628b3f0d56620df11d8a49e0fabb6c90389ad407582b3af10e4eab46c79b3d11d2e10753d73d9e55963fbeac085f41e9749bdba3 windows_x86_64_gnullvm-0.42.2.tar.gz
+8d82fad4c8445030844708aa026a62f1ca43362b8e15f14b0d226c7e9cda04ffa0715087b6a025dbb738e8891de24fcc4a2df071a532917cf03c4a46f934f396 windows_x86_64_gnullvm-0.48.0.tar.gz
+53a35f438903fceb59e36bd2ac331773fb8e6c8c5a6d984e79021761f91b3b4a23efe49d219667a4d0d23dcdbf906da9c24e74fb1cff93395b5c55ff524e3788 windows_x86_64_msvc-0.42.2.tar.gz
+6e598b8e3ac54912a8ebac01b0dd2c58fd282072527d7fedc7f6ebecdfb7dcb09ae46c22293bc0117849437f8b053db5e90406e7a38276f0f0afd06be3966795 windows_x86_64_msvc-0.48.0.tar.gz
+ba720e36487871427aaa7139e8aeaf5b2b3f2d1df4798d7e238e323dc3d3220f12202e223f74339201be3466848c372dc1712e1842e5cd6bd51c3dedf76c9ff6 yansi-term-0.1.2.tar.gz"
diff --git a/user/bitlbee/APKBUILD b/user/bitlbee/APKBUILD
new file mode 100644
index 000000000..4724191f6
--- /dev/null
+++ b/user/bitlbee/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=bitlbee
+pkgver=3.6
+pkgrel=0
+pkgdesc="IRC gateway server to IM services"
+url="https://www.bitlbee.org"
+arch="all"
+options="!check" # Tests are not compatible with new check.
+license="GPL-2.0+ AND LGPL-2.1-only AND BSD-2-Clause AND GPL-2.0-only AND ISC"
+depends=""
+checkdepends="check-dev"
+makedepends="glib-dev gnutls-dev libgcrypt-dev linux-pam-dev python3"
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://get.bitlbee.org/src/bitlbee-$pkgver.tar.gz"
+
+build() {
+ PYTHON=python3 ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --pam=1
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install install-dev
+}
+
+sha512sums="ccbf0f23e228de2de147241f36f59744b2256cba958e2fabfba0cfa60935e55bbb7d7e20fffa54da9a345e55ffa9ca82cb62e9b99dc738ba35c6e268c6561a8d bitlbee-3.6.tar.gz"
diff --git a/user/bitmap/APKBUILD b/user/bitmap/APKBUILD
index 26cacdb08..864ffbb84 100644
--- a/user/bitmap/APKBUILD
+++ b/user/bitmap/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=bitmap
-pkgver=1.0.9
+pkgver=1.1.1
pkgrel=0
pkgdesc="X Bitmap (XBM) editor and utilities"
url="https://www.X.Org/"
@@ -11,7 +11,7 @@ depends=""
makedepends="util-macros libx11-dev libxaw-dev libxmu-dev xbitmaps
xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/bitmap-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
./configure \
@@ -32,4 +32,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="873c626c72a0f4025fe8c8aeedbf3fe4ee5657fb487ad7410406a20da518c0358041dc45c2549926cc10e1d031977073b9d1ddb32830fdce95b716a52fe44456 bitmap-1.0.9.tar.bz2"
+sha512sums="69096a73739019545f2eb44b823e659b84377cf7c497243c89cbf3f26c9623c31fecfa36628022d241a581a5930e9e2394ec116e5c6d9df94097b45661261307 bitmap-1.1.1.tar.xz"
diff --git a/user/black-hole-solver/APKBUILD b/user/black-hole-solver/APKBUILD
new file mode 100644
index 000000000..4bf1b903b
--- /dev/null
+++ b/user/black-hole-solver/APKBUILD
@@ -0,0 +1,43 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=black-hole-solver
+pkgver=1.12.0
+pkgrel=0
+pkgdesc="Move solver for various solitaire card games"
+url="https://www.shlomifish.org/open-source/projects/black-hole-solitaire-solver/"
+arch="all"
+license="Expat"
+depends=""
+checkdepends="perl-dir-manifest perl-env-path perl-file-which perl-inline
+ perl-inline-c perl-test-differences perl-test-trailingspace
+ perl-test-some perl-test-trap"
+makedepends="cmake perl-path-tiny rinutils python3"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://fc-solve.shlomifish.org/downloads/fc-solve/$pkgname-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake -Bbuild \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make -C build
+}
+
+check() {
+ rm t/perltidy.t # test could fail on every bump
+ rm t/valgrind.t # we don't run Valgrind tests
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
+}
+
+package() {
+ make -C build DESTDIR="$pkgdir" install
+}
+
+sha512sums="54aea7d86717e6dd24eb809afe972691e644497eeb240859194eca6193506af9f5d739949ebc9f0776b7409b5f934a2e9ab3f4507dc827f90fd0c3de945818d1 black-hole-solver-1.12.0.tar.xz"
diff --git a/user/blinken/APKBUILD b/user/blinken/APKBUILD
index 5c4f4e35a..4cf2c6cb3 100644
--- a/user/blinken/APKBUILD
+++ b/user/blinken/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=blinken
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Memory enhancement game"
url="https://www.kde.org/applications/education/blinken/"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev ki18n-dev
kxmlgui-dev kguiaddons-dev kdoctools-dev kdbusaddons-dev kcrash-dev
phonon-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/blinken-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/blinken-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="605d4015b122419c512f614bf2b27c23f5219dc2ef48a7cf86beb0aa0333872058b0cdb04c98799bd4780909cbfc9544e13ace22b809457bd362b3c4555c1d89 blinken-18.12.3.tar.xz"
+sha512sums="103eb5785029cf8de713675540fc3563fe93557b55d5cfe0d2506d1bcf57761a4ce4788951be4f1f5536ed7616a15ebf8327953ece9b31c1741c3ce6035bcbca blinken-22.04.2.tar.xz"
diff --git a/user/blinken/test.patch b/user/blinken/test.patch
deleted file mode 100644
index d24c03491..000000000
--- a/user/blinken/test.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 2a1b077..019efcd 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -17,7 +17,7 @@ find_package (KF5 REQUIRED COMPONENTS
- I18n XmlGui GuiAddons DocTools DBusAddons Crash
- )
-
--find_package (Phonon4Qt5)
-+find_package (Phonon4Qt5 REQUIRED)
-
- include(KDEInstallDirs)
- include(KDECompilerSettings NO_POLICY_SCOPE)
diff --git a/user/bluedevil/APKBUILD b/user/bluedevil/APKBUILD
new file mode 100644
index 000000000..cc6422fe6
--- /dev/null
+++ b/user/bluedevil/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=bluedevil
+pkgver=5.24.5
+pkgrel=0
+pkgdesc="Bluetooth framework for KDE"
+url="https://userbase.kde.org/Bluedevil"
+arch="all"
+license="GPL-2.0+ AND LGPL-2.0+ AND (LGPL-2.1-only OR LGPL-3.0-only) AND GPL-3.0+"
+depends="kded kirigami2 shared-mime-info"
+makedepends="bluez-qt-dev cmake extra-cmake-modules kauth-dev kcodecs-dev
+ kcompletion-dev kconfig-dev kconfigwidgets-dev kcoreaddons-dev
+ kdbusaddons-dev kdeclarative-dev ki18n-dev kio-dev kitemviews-dev
+ kjobwidgets-dev knotifications-dev kpackage-dev kservice-dev
+ kwidgetsaddons-dev kwindowsystem-dev kxmlgui-dev plasma-framework-dev
+ qt5-qtbase-dev qt5-qtdeclarative-dev solid-dev kirigami2-dev"
+subpackages="$pkgname-lang"
+source="https://download.kde.org/stable/plasma/$pkgver/bluedevil-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="02b24ba96169d733166ac6b906d995414bcf31b4a459d695ec018e7120b6e69ba01ec0f8bfa6e73d1fc8c965fc6fc285bbcefaea86a9dc230cd6a0247e566757 bluedevil-5.24.5.tar.xz"
diff --git a/user/bluez-qt/APKBUILD b/user/bluez-qt/APKBUILD
new file mode 100644
index 000000000..4a127a78b
--- /dev/null
+++ b/user/bluez-qt/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=bluez-qt
+pkgver=5.94.0
+pkgrel=0
+pkgdesc="Qt integration with BlueZ"
+url="https://www.kde.org/"
+arch="all"
+options="!check" # Requires running D-Bus server.
+license="LGPL-2.1-only OR LGPL-3.0-only"
+depends=""
+makedepends="cmake doxygen extra-cmake-modules qt5-qtbase-dev
+ qt5-qtdeclarative-dev qt5-qttools-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://download.kde.org/stable/frameworks/${pkgver%.*}/bluez-qt-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DBUILD_QCH:BOOL=ON \
+ -DBUILD_TESTING:BOOL=OFF \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="9599376056de2711faba6e74f6259caa5d641f4c1dadd84967f184736d0437195d0789c322fd81dc3767bafc99232d0899e7728ba90a8c6bac7b8f482fad0ac9 bluez-qt-5.94.0.tar.xz"
diff --git a/user/bluez/APKBUILD b/user/bluez/APKBUILD
index 02cdf5995..3d7c3736a 100644
--- a/user/bluez/APKBUILD
+++ b/user/bluez/APKBUILD
@@ -1,54 +1,78 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=bluez
-pkgver=5.50
+pkgver=5.55
pkgrel=0
pkgdesc="Linux Bluetooth protocol stack"
url="http://www.bluez.org/"
arch="all"
license="GPL-2.0+"
-depends="consolekit2 dbus"
+depends="dbus elogind"
makedepends="alsa-lib-dev dbus-dev eudev-dev glib-dev libical-dev
- linux-headers"
+ linux-headers ncurses-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-libs $pkgname-bccmd
- $pkgname-btmon $pkgname-cups $pkgname-deprecated $pkgname-hid2hci
- $pkgname-obexd $pkgname-openrc"
+ $pkgname-btmgmt $pkgname-btmon $pkgname-cups $pkgname-deprecated
+ $pkgname-hid2hci $pkgname-obexd $pkgname-openrc $pkgname-tools"
source="https://www.kernel.org/pub/linux/bluetooth/bluez-$pkgver.tar.xz
+ https://ftp.gnu.org/gnu/readline/readline-8.0.tar.gz
bluetooth.initd
rfcomm.initd
rfcomm.confd
- 001-bcm43xx-Add-bcm43xx-3wire-variant.patch
- 002-bcm43xx-The-UART-speed-must-be-reset-after-the-firmw.patch
- 003-Increase-firmware-load-timeout-to-30s.patch
- 004-Move-the-43xx-firmware-into-lib-firmware.patch
- bluez-5.40-obexd_without_systemd-1.patch
+ 001-bcm43xx-Add-bcm43xx-3wire-variant.patch
+ 002-bcm43xx-The-UART-speed-must-be-reset-after-the-firmw.patch
+ 003-Increase-firmware-load-timeout-to-30s.patch
+ 004-Move-the-43xx-firmware-into-lib-firmware.patch
+ dbus-without-systemd.patch
+ mesh-without-systemd.patch
+ obex-without-systemd.patch
disable-lock-test.patch
fix-endianness.patch
+ time64.patch
"
-build() {
- cd "$builddir"
+# secfixes:
+# 5.55-r0:
+# - CVE-2020-27153
+# 5.54-r0:
+# - CVE-2020-0556
+
+prepare() {
+ default_prepare
+
+ cd "$srcdir"/readline-8.0
./configure \
--build=$CBUILD \
--host=$CHOST \
+ --prefix="$srcdir"/readline \
+ --enable-static \
+ --disable-shared
+ make install
+}
+
+build() {
+ CFLAGS="$CFLAGS -I$srcdir/readline/include -L$srcdir/readline/lib" \
+ CPPFLAGS="$CPPFLAGS -I$srcdir/readline/include" LIBS="-ltinfo" ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
--localstatedir=/var \
--libexecdir=/usr/lib \
--disable-systemd \
- --disable-client \
+ --enable-client \
--enable-library \
- --enable-deprecated
+ --enable-deprecated \
+ --enable-experimental \
+ --enable-tools \
+ --enable-hid2hci
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make install DESTDIR="$pkgdir"
install -D -m644 src/main.conf "$pkgdir"/etc/bluetooth/main.conf
@@ -59,33 +83,39 @@ package() {
}
bccmd() {
- pkgdesc="Bluez utility for the CSR BCCMD interface"
+ pkgdesc="BlueZ utility for the CSR BCCMD interface"
mkdir -p "$subpkgdir"/usr/bin
mv "$pkgdir"/usr/bin/bccmd "$subpkgdir"/usr/bin/
}
btmon() {
- pkgdesc="Bluez bluetooth monitor"
+ pkgdesc="BlueZ Bluetooth monitor"
mkdir -p "$subpkgdir"/usr/bin
mv "$pkgdir"/usr/bin/btmon "$subpkgdir"/usr/bin/
}
+btmgmt() {
+ pkgdesc="Bluez tool for the Bluetooth Management API"
+ install -Dm755 "$builddir"/tools/btmgmt -t \
+ "$subpkgdir"/usr/bin
+}
+
cups() {
- pkgdesc="Bluez backend for CUPS"
+ pkgdesc="BlueZ backend for CUPS"
depends="cups"
mkdir -p "$subpkgdir"/usr/lib/
mv "$pkgdir"/usr/lib/cups "$subpkgdir"/usr/lib/
}
hid2hci() {
- pkgdesc="Put HID proxying bluetooth HCI's into HCI mode"
+ pkgdesc="Put HID proxying Bluetooth HCIs into HCI mode"
replaces="bluez"
mkdir -p "$subpkgdir"
mv "$pkgdir"/lib "$subpkgdir"/
}
deprecated() {
- pkgdesc="Deprecated bluetooth tools"
+ pkgdesc="Deprecated Bluetooth tools"
mkdir -p "$subpkgdir"/usr/bin
mv "$pkgdir"/usr/bin/ciptool \
"$pkgdir"/usr/bin/hciattach \
@@ -98,12 +128,21 @@ deprecated() {
}
obexd() {
- pkgdesc="Bluez OBEX daemon"
+ pkgdesc="BlueZ OBEX daemon"
mkdir -p "$subpkgdir"/usr/lib/bluetooth
mv "$pkgdir"/usr/lib/bluetooth/obexd "$subpkgdir"/usr/lib/bluetooth
}
-sha512sums="64a680e4b3c270bc2439610c91ad2aef36131d84401e4bbdf6c2b7ec8708a19dfc942b31b9189c38a97ca072c761c669ae1aace5f4ff5d06de3ccbf33184be45 bluez-5.50.tar.xz
+tools() {
+ pkgdesc="Bluetooth tools"
+ mkdir -p "$subpkgdir"/usr/bin
+ for _tool in bluetooth-player mpris-proxy; do
+ install -Dm755 "$builddir"/tools/$_tool "$subpkgdir"/usr/bin/$_tool
+ done
+}
+
+sha512sums="9423cb60d15a6f068838497a1eaea9f5a32d70c07191c313ba821a6919d6e0c436ada4f547cc5f2db5eacc0123429ad54851f57df2554f61fa293743ec14a033 bluez-5.55.tar.xz
+41759d27bc3a258fefd7f4ff3277fa6ab9c21abb7b160e1a75aa8eba547bd90b288514e76264bd94fb0172da8a4faa54aab2c07b68a0356918ecf7f1969e866f readline-8.0.tar.gz
fc43c78ed248ea412529eed5ae8bb47bacca9bf5b3b10de121ddd4e792c85893561a88be4aa2c6318106e5d2146a721445152d44fa60ca257ca0b4eb87318c1e bluetooth.initd
8d7b7c8938a2316ce0a855e9bdf1ef8fcdf33d23f4011df828270a088b88b140a19c432e83fef15355d0829e3c86be05b63e7718fef88563254ea239b8dc12ac rfcomm.initd
a70aa0dbbabe7e29ee81540a6f98bf191a850da55a28f678975635caf34b363cf4d461a801b3484120ee28fdd21240bd456a4f5d706262700924bd2e9a0972fb rfcomm.confd
@@ -111,6 +150,9 @@ a70aa0dbbabe7e29ee81540a6f98bf191a850da55a28f678975635caf34b363cf4d461a801b34841
d5fd1c962bd846eaa6fff879bab85f753eb367d514f82d133b5d3242e1da989af5eddd942c60a87d5b67783e060f91bfa0f74fb1e8e6699cdee6e5bbe6a431ea 002-bcm43xx-The-UART-speed-must-be-reset-after-the-firmw.patch
784e9644c8de4e2693e2eeed988a245608b8cb14e1fc0dff8795c60c527b2e8d0c87862cfbfd6b850b47ae80cdf993a5ed3f477078ea1068fd7374899c7a1a77 003-Increase-firmware-load-timeout-to-30s.patch
42ac04044a8c66e07487598b3a75ef52efc32999ebce4e7c63f6198e2f603f4a1442e74600e43a0938cb4f52d4db0298aa99050b18144b84990cda71748e9de5 004-Move-the-43xx-firmware-into-lib-firmware.patch
-41ce7ccf78cca97563f0ef31e01dac6eb4484c24fe57be360b5e8de8c5bff5845e9d395766f891bd3f123788344456c88c9fc00cd1bb7c6a1dca89d09f19172b bluez-5.40-obexd_without_systemd-1.patch
+a681a98178f9374ab882984058559752d1e1f3261412f450b38f1a06c3dfb5ce45e2cce35aa152f3c5761a9f7695fb0990cfdcc394706304470e6d1a8dbef682 dbus-without-systemd.patch
+59fa8b90d5b8ac5922b730b01fbeb8a237075cd537705fe2665f15c7626bc6a8bd8128a3e899b0c620b6cb4f86862c2a416b2af8c2575d0724b26c8132aff251 mesh-without-systemd.patch
+9aa78fdd9a84dd2a20cd6a4f5105e88af16896ae81a76a9a9f86902a9988d58af1102948c2d87397df36d747ce206d06a7bf1795c3ceb6a4617d95a26be3526f obex-without-systemd.patch
04c4889372c8e790bb338dde7ffa76dc32fcf7370025c71b9184fcf17fd01ade4a6613d84d648303af3bbc54043ad489f29fc0cd4679ec8c9029dcb846d7e026 disable-lock-test.patch
-118d55183860f395fc4bdc93efffb13902ebf7388cad722b9061cd2860d404333e500af521741c3d92c0f8a161f6810348fbeb6682e49c372383f417aed8c76a fix-endianness.patch"
+118d55183860f395fc4bdc93efffb13902ebf7388cad722b9061cd2860d404333e500af521741c3d92c0f8a161f6810348fbeb6682e49c372383f417aed8c76a fix-endianness.patch
+da2ca90b0de1afb90914370dbc482f78ab9a270e60142ed7901eff408d02611d7fe423ae4677bce49fe829d59aa9aa971f9d0039d6e9134d3346aeb51b62ba9c time64.patch"
diff --git a/user/bluez/bluez-5.40-obexd_without_systemd-1.patch b/user/bluez/bluez-5.40-obexd_without_systemd-1.patch
deleted file mode 100644
index 749787c5b..000000000
--- a/user/bluez/bluez-5.40-obexd_without_systemd-1.patch
+++ /dev/null
@@ -1,61 +0,0 @@
-Submitted By: Armin K. <krejzi at email dot com>
-Date: 2013-04-29
-Initial Package Version: 5.17
-Upstream Status: unknown
-Origin: Arch Linux (Giovanni Campagna)
-Description: Allow using obexd without systemd in the user session
-
-Not all sessions run systemd --user (actually, the majority
-doesn't), so the dbus daemon must be able to spawn obexd
-directly, and to do so it needs the full path of the daemon.
----
- Makefile.obexd | 4 ++--
- obexd/src/org.bluez.obex.service | 4 ----
- obexd/src/org.bluez.obex.service.in | 4 ++++
- 3 files changed, 6 insertions(+), 6 deletions(-)
- delete mode 100644 obexd/src/org.bluez.obex.service
- create mode 100644 obexd/src/org.bluez.obex.service.in
-
-diff --git a/Makefile.obexd b/Makefile.obexd
-index 3760867..142e7c3 100644
---- a/Makefile.obexd
-+++ b/Makefile.obexd
-@@ -2,12 +2,12 @@
- if SYSTEMD
- systemduserunitdir = @SYSTEMD_USERUNITDIR@
- systemduserunit_DATA = obexd/src/obex.service
-+endif
-
- dbussessionbusdir = @DBUS_SESSIONBUSDIR@
- dbussessionbus_DATA = obexd/src/org.bluez.obex.service
--endif
-
--EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service
-+EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service.in
-
- obex_plugindir = $(libdir)/obex/plugins
-
-diff --git a/obexd/src/org.bluez.obex.service b/obexd/src/org.bluez.obex.service
-deleted file mode 100644
-index a538088..0000000
---- a/obexd/src/org.bluez.obex.service
-+++ /dev/null
-@@ -1,4 +0,0 @@
--[D-BUS Service]
--Name=org.bluez.obex
--Exec=/bin/false
--SystemdService=dbus-org.bluez.obex.service
-diff --git a/obexd/src/org.bluez.obex.service.in b/obexd/src/org.bluez.obex.service.in
-new file mode 100644
-index 0000000..9c815f2
---- /dev/null
-+++ b/obexd/src/org.bluez.obex.service.in
-@@ -0,0 +1,4 @@
-+[D-BUS Service]
-+Name=org.bluez.obex
-+Exec=@libexecdir@/obexd
-+SystemdService=dbus-org.bluez.obex.service
---
-1.8.3.1
-
-
diff --git a/user/bluez/dbus-without-systemd.patch b/user/bluez/dbus-without-systemd.patch
new file mode 100644
index 000000000..5b9c7dc70
--- /dev/null
+++ b/user/bluez/dbus-without-systemd.patch
@@ -0,0 +1,34 @@
+From 2625ab38ae27754205d060f09e3a18f7648d5167 Mon Sep 17 00:00:00 2001
+From: Doan Tran Cong Danh <congdanhqx@gmail.com>
+Date: Thu, 3 Oct 2019 12:57:09 +0700
+Subject: [PATCH 1/9] enable dbus without systemd
+
+---
+ Makefile.am | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 404e6a460..0884156fa 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -40,14 +40,14 @@ conf_DATA =
+
+ statedir = $(localstatedir)/lib/bluetooth
+ state_DATA =
++
++dbussystembusdir = $(DBUS_SYSTEMBUSDIR)
++dbussystembus_DATA = src/org.bluez.service
+ endif
+
+ if SYSTEMD
+ systemdsystemunitdir = $(SYSTEMD_SYSTEMUNITDIR)
+ systemdsystemunit_DATA = src/bluetooth.service
+-
+-dbussystembusdir = $(DBUS_SYSTEMBUSDIR)
+-dbussystembus_DATA = src/org.bluez.service
+ endif
+
+ EXTRA_DIST += src/bluetooth.service.in src/org.bluez.service
+--
+2.23.0
+
diff --git a/user/bluez/mesh-without-systemd.patch b/user/bluez/mesh-without-systemd.patch
new file mode 100644
index 000000000..2cf6f7344
--- /dev/null
+++ b/user/bluez/mesh-without-systemd.patch
@@ -0,0 +1,29 @@
+From 32a425c3f9b42a55824c044a6b486c9c12e65a65 Mon Sep 17 00:00:00 2001
+From: Doan Tran Cong Danh <congdanhqx@gmail.com>
+Date: Thu, 3 Oct 2019 12:58:18 +0700
+Subject: [PATCH 3/9] allow mesh on non-systemd system
+
+---
+ Makefile.mesh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/Makefile.mesh b/Makefile.mesh
+index 90979cbc0..9e6e2c2ca 100644
+--- a/Makefile.mesh
++++ b/Makefile.mesh
+@@ -2,11 +2,11 @@ if MESH
+
+ if DATAFILES
+ dbus_DATA += mesh/bluetooth-mesh.conf
++dbussystembus_DATA += mesh/org.bluez.mesh.service
+ endif
+
+ if SYSTEMD
+ systemdsystemunit_DATA += mesh/bluetooth-mesh.service
+-dbussystembus_DATA += mesh/org.bluez.mesh.service
+ endif
+
+ mesh_sources = mesh/mesh.h mesh/mesh.c \
+--
+2.23.0
+
diff --git a/user/bluez/obex-without-systemd.patch b/user/bluez/obex-without-systemd.patch
new file mode 100644
index 000000000..c011d2307
--- /dev/null
+++ b/user/bluez/obex-without-systemd.patch
@@ -0,0 +1,54 @@
+From 5f27d3887b60c95cbcdefaeae5dea38f020c390e Mon Sep 17 00:00:00 2001
+From: Doan Tran Cong Danh <congdanhqx@gmail.com>
+Date: Thu, 3 Oct 2019 12:57:55 +0700
+Subject: [PATCH 2/8] allow obexd on non-systemd system
+
+---
+ Makefile.obexd | 6 +++---
+ .../{org.bluez.obex.service => org.bluez.obex.service.in} | 2 +-
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+ rename obexd/src/{org.bluez.obex.service => org.bluez.obex.service.in} (74%)
+
+diff --git a/Makefile.obexd b/Makefile.obexd
+index de59d297b..cb04bb1e2 100644
+--- a/Makefile.obexd
++++ b/Makefile.obexd
+@@ -1,12 +1,12 @@
+ if SYSTEMD
+ systemduserunitdir = $(SYSTEMD_USERUNITDIR)
+ systemduserunit_DATA = obexd/src/obex.service
++endif
+
+ dbussessionbusdir = $(DBUS_SESSIONBUSDIR)
+ dbussessionbus_DATA = obexd/src/org.bluez.obex.service
+-endif
+
+-EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service
++EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service.in
+
+ if OBEX
+
+@@ -107,6 +107,6 @@ obexd/src/builtin.h: obexd/src/genbuiltin $(obexd_builtin_sources)
+ $(AM_V_at)$(MKDIR_P) $(dir $@)
+ $(AM_V_GEN)$(srcdir)/obexd/src/genbuiltin $(obexd_builtin_modules) > $@
+
+-CLEANFILES += obexd/src/builtin.h $(builtin_files) obexd/src/obex.service
++CLEANFILES += obexd/src/builtin.h $(builtin_files) obexd/src/obex.service obexd/src/org.bluez.obex.service
+
+ EXTRA_DIST += obexd/src/genbuiltin
+diff --git a/obexd/src/org.bluez.obex.service b/obexd/src/org.bluez.obex.service.in
+similarity index 74%
+rename from obexd/src/org.bluez.obex.service
+rename to obexd/src/org.bluez.obex.service.in
+index a53808884..543d7bc07 100644
+--- a/obexd/src/org.bluez.obex.service
++++ b/obexd/src/org.bluez.obex.service.in
+@@ -1,4 +1,4 @@
+ [D-BUS Service]
+ Name=org.bluez.obex
+-Exec=/bin/false
++Exec=@pkglibexecdir@/obexd
+ SystemdService=dbus-org.bluez.obex.service
+--
+2.23.0
+
diff --git a/user/bluez/time64.patch b/user/bluez/time64.patch
new file mode 100644
index 000000000..782255817
--- /dev/null
+++ b/user/bluez/time64.patch
@@ -0,0 +1,82 @@
+--- bluez-5.53/monitor/packet.c.old 2020-02-15 18:33:56.000000000 +0000
++++ bluez-5.53/monitor/packet.c 2020-02-25 09:24:09.629224611 +0000
+@@ -364,7 +364,7 @@
+ }
+
+ if (filter_mask & PACKET_FILTER_SHOW_TIME) {
+- n = sprintf(ts_str + ts_pos, " %02d:%02d:%02d.%06lu",
++ n = sprintf(ts_str + ts_pos, " %02d:%02d:%02d.%06"PRIu64,
+ tm.tm_hour, tm.tm_min, tm.tm_sec, tv->tv_usec);
+ if (n > 0) {
+ ts_pos += n;
+@@ -373,7 +373,7 @@
+ }
+
+ if (filter_mask & PACKET_FILTER_SHOW_TIME_OFFSET) {
+- n = sprintf(ts_str + ts_pos, " %lu.%06lu",
++ n = sprintf(ts_str + ts_pos, " %"PRIu64".%06"PRIu64,
+ tv->tv_sec - time_offset, tv->tv_usec);
+ if (n > 0) {
+ ts_pos += n;
+--- bluez-5.53/tools/parser/parser.h.old 2015-10-30 03:30:13.000000000 +0000
++++ bluez-5.53/tools/parser/parser.h 2020-02-25 09:26:51.471579651 +0000
+@@ -26,6 +26,7 @@
+ #define __PARSER_H
+
+ #include <time.h>
++#include <inttypes.h>
+ #include <sys/time.h>
+ #include <netinet/in.h>
+
+@@ -133,11 +134,11 @@
+ struct tm tm;
+ time_t t = f->ts.tv_sec;
+ localtime_r(&t, &tm);
+- printf("%04d-%02d-%02d %02d:%02d:%02d.%06lu ",
++ printf("%04d-%02d-%02d %02d:%02d:%02d.%06"PRIu64" ",
+ tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday,
+ tm.tm_hour, tm.tm_min, tm.tm_sec, f->ts.tv_usec);
+ } else
+- printf("%8lu.%06lu ", f->ts.tv_sec, f->ts.tv_usec);
++ printf("%8"PRIu64".%06"PRIu64" ", f->ts.tv_sec, f->ts.tv_usec);
+ }
+ printf("%c ", (f->in ? '>' : '<'));
+ parser.state = 1;
+--- bluez-5.53/tools/rctest.c.old 2019-09-19 18:51:03.000000000 +0000
++++ bluez-5.53/tools/rctest.c 2020-02-25 09:24:56.994060632 +0000
+@@ -36,6 +36,7 @@
+ #include <getopt.h>
+ #include <syslog.h>
+ #include <signal.h>
++#include <inttypes.h>
+ #include <sys/time.h>
+ #include <sys/ioctl.h>
+ #include <sys/socket.h>
+@@ -513,7 +514,7 @@
+ timestamp = 0;
+ memset(ts, 0, sizeof(ts));
+ } else {
+- sprintf(ts, "[%ld.%ld] ",
++ sprintf(ts, "[%"PRId64".%"PRId64"] ",
+ tv.tv_sec, tv.tv_usec);
+ }
+ }
+--- bluez-5.53/tools/l2test.c.old 2019-09-19 18:51:03.000000000 +0000
++++ bluez-5.53/tools/l2test.c 2020-02-25 09:27:47.325490145 +0000
+@@ -38,6 +38,7 @@
+ #include <getopt.h>
+ #include <syslog.h>
+ #include <signal.h>
++#include <inttypes.h>
+ #include <sys/time.h>
+ #include <poll.h>
+ #include <sys/ioctl.h>
+@@ -915,7 +916,7 @@
+ timestamp = 0;
+ memset(ts, 0, sizeof(ts));
+ } else {
+- sprintf(ts, "[%ld.%ld] ",
++ sprintf(ts, "[%"PRId64".%"PRId64"] ",
+ tv.tv_sec, tv.tv_usec);
+ }
+ }
diff --git a/user/bolt/APKBUILD b/user/bolt/APKBUILD
new file mode 100644
index 000000000..b9b75ff19
--- /dev/null
+++ b/user/bolt/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=bolt
+pkgver=0.9
+pkgrel=0
+pkgdesc="Thunderbolt 3 device manager"
+url=" "
+arch="all"
+license="LGPL-2.1-only"
+depends=""
+makedepends="eudev-dev glib-dev meson ninja polkit-dev"
+subpackages=""
+source="https://gitlab.freedesktop.org/bolt/bolt/-/archive/$pkgver/bolt-$pkgver.tar.gz"
+
+build() {
+ meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ . output
+ ninja -C output
+}
+
+check() {
+ ninja -C output test
+}
+
+package() {
+ DESTDIR="$pkgdir" ninja -C output install
+}
+
+sha512sums="427e9ad95a8d018dd22326cc4b458fc9149b001d3aa6e4bb8e4047eaf6c3cf04a4dc3be9396049734dc0bd54f990b3bce31b6eef4031e3b671a6202a588cfe78 bolt-0.9.tar.gz"
diff --git a/user/bomber/APKBUILD b/user/bomber/APKBUILD
index b5e6658e0..13057fdac 100644
--- a/user/bomber/APKBUILD
+++ b/user/bomber/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=bomber
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Arcade bombing game"
url="https://www.kde.org/applications/games/bomber/"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kconfig-dev kcrash-dev
kcoreaddons-dev kdbusaddons-dev kdoctools-dev ki18n-dev kxmlgui-dev
libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/bomber-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/bomber-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="7292e5449e4a6444730f771aeb7ab9c2290fda12c213edfae190593f30cae5c4b2d6b0622d9fceaebb474f38cb12396961326af34435e26c1feda64e5153a881 bomber-18.12.3.tar.xz"
+sha512sums="9d4e5815a92ed83577c2f7a71d65d196f5752c7657f6601120cfa13961c46e61e5ab74ea1bd01263aaef6a9646aed6a2ab97e9601a9295565ac3667222fa05e4 bomber-22.04.2.tar.xz"
diff --git a/user/boost/APKBUILD b/user/boost/APKBUILD
index ffd7e867e..9e8e7f9f0 100644
--- a/user/boost/APKBUILD
+++ b/user/boost/APKBUILD
@@ -1,29 +1,30 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=boost
-pkgver=1.69.0
-_pkgver="${pkgver//./_}"
-pkgrel=0
+pkgver=1.79.0
+_pkgver=$(printf '%s' "$pkgver" | tr . _)
+pkgrel=1
pkgdesc="Free peer-reviewed portable C++ source libraries"
url="https://www.boost.org/"
arch="all"
license="BSL-1.0"
-options="!check" # No test suite.
depends=""
depends_dev="linux-headers"
makedepends="$depends_dev byacc bzip2-dev flex python3-dev xz-dev zlib-dev
zstd-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="http://downloads.sourceforge.net/$pkgname/${pkgname}_$_pkgver.tar.bz2
- boost-1.57.0-python-abi_letters.patch
- boost-1.57.0-python-libpython_dep.patch
+source="https://boostorg.jfrog.io/artifactory/main/release/${pkgver}/source/${pkgname}_${_pkgver}.tar.bz2
+ python-311-fix-enum.patch
+ python-311-fix-open.patch
"
+
builddir="$srcdir/${pkgname}_${_pkgver}"
_libs="
atomic
chrono
container
+ context
contract
coroutine
date_time
@@ -31,56 +32,57 @@ _libs="
filesystem
graph
iostreams
+ json
+ locale
+ log_setup
+ log
math
+ nowide
prg_exec_monitor
program_options
python3
random
regex
serialization
+ stacktrace_basic
+ stacktrace_noop
system
thread
+ timer
+ type_erasure
unit_test_framework
wave
wserialization
"
for _lib in $_libs; do
- subpackages="$subpackages $pkgname-$_lib:_boostlib"
+ subpackages="$subpackages $pkgname-${_lib}:_boostlib"
done
prepare() {
default_prepare
PY3_VERSION="$(_pyversion python3)"
- abiflags=$(python3-config --abiflags)
-
+ abiflags="$(python3-config --abiflags)"
# create user-config.jam
cat > user-config.jam <<-__EOF__
- using gcc : : $CC : <cxxflags>"${CXXFLAGS}" <linkflags>"${LDFLAGS}" ;
- using python : ${PY3_VERSION} : /usr/bin/python3 : /usr/include/python${PY3_VERSION}m : : : : $abiflags ;
+ using gcc : : $CC : <cxxflags>"$CXXFLAGS" <linkflags>"$LDFLAGS" ;
+ using python : ${PY3_VERSION} : /usr/bin/python3 : /usr/include/python${PY3_VERSION}${abiflags} : "$(python3-config --libs)" : : $abiflags ;
__EOF__
}
case "$CARCH" in
- armhf|aarch64) _boostarch=arm ;;
- ppc64*) _boostarch=ppc ;;
- s390x) _boostarch=s390 ;;
- pmmx) _boostarch=x86 ;;
- *) _boostarch=$CARCH ;;
+ s390x)
+ _options_s390="--without-coroutine --without-coroutine2" ;;
esac
_enginedir=tools/build/src/engine
-_bjam="${builddir}/$_enginedir/bin.linux${_boostarch}/bjam"
-[ "$_boostarch" = "s390" ] && _bjam="${builddir}/$_enginedir/bin.linux390/bjam" && \
- _options_s390="--without-coroutine --without-coroutine2"
+_bjam="${builddir}/$_enginedir/bjam"
-# context is broken on at least s390 and sparc
_options="--user-config=\"$builddir/user-config.jam\"
--prefix=\"$pkgdir/usr\"
release
- debug-symbols=off
runtime-link=shared
link=shared,static
cflags=-fno-strict-aliasing
@@ -88,7 +90,7 @@ _options="--user-config=\"$builddir/user-config.jam\"
-sTOOLS=gcc
--layout=system
-q
- --without-context
+ --without-mpi
-j${JOBS:-2}
${_options_s390}
"
@@ -98,7 +100,7 @@ build() {
msg "Building bjam"
cd "$builddir"/$_enginedir
- CC= ./build.sh cc
+ CC= ./build.sh gcc
msg "Building bcp"
cd "$builddir"/tools/bcp
@@ -109,6 +111,12 @@ build() {
"$_bjam" $_options
}
+check() {
+ cd "$builddir"/tools/build/test
+
+ PATH="${_bjam%/*}:$PATH" python3 test_all.py --default-bjam
+}
+
package() {
export BOOST_ROOT="$builddir"
@@ -127,20 +135,20 @@ package() {
}
_boostlib() {
- local name="${subpkgname#$pkgname-}"
- pkgdesc="Boost $name library"
- case "$name" in
- python*) depends="$depends $name"
+ libname="${subpkgname#$pkgname-}"
+ pkgdesc="Boost library - $libname"
+ case "$subpkgname" in
+ boost-python3) depends="$depends python3"
esac
mkdir -p "$subpkgdir"/usr/lib
- mv "$pkgdir"/usr/lib/libboost_$name* "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/lib/libboost_$libname* "$subpkgdir"/usr/lib/
}
_pyversion() {
$1 -c 'import sys; print("%i.%i" % (sys.version_info.major, sys.version_info.minor))'
}
-sha512sums="d0e9bb858c44880d56c0291afef6a1b011a62f659a2d8f58dcb6147ea0899f9157bd8db3097896618fee0116847ebeac78b6d0f0fec8a92c3469500828bbe552 boost_1_69_0.tar.bz2
-d96d4d37394a31764ed817d0bc4a99cffa68a75ff1ecfd4417b9e1e5ae2c31a96ed24f948c6f2758ffdac01328d2402c4cf0d33a37107e4f5f721e636daebd66 boost-1.57.0-python-abi_letters.patch
-132c4b62815d605c2d3c9038427fa4f422612a33711d47b2862f2311516af8a371d6b75bf078a7bffe20be863f8d21fb9fe74dc1a1bac3a10d061e9768ec3e02 boost-1.57.0-python-libpython_dep.patch"
+sha512sums="70909e0561c213d10a1fdd692f9ae7b293d3cdc63e925bdc207da9e9bba6e86474341100e7ee5de6d94f9561196b1a3a1597055a7b7382babf8931131170a312 boost_1_79_0.tar.bz2
+04b9bcbd37cf660450aa4ff27b32db514d669caa378a25158d6d1e71ef0b42ea097e9dfda01774fbe80487db0f80d809d10b42e5ebc464f9faff02379bead98d python-311-fix-enum.patch
+4b517dc36719e4e4666d32822a65e650496f9ec534232ae96500538bf8182ce72e08bda3786a598330babda1bc169afa9b38fbc9d5a63d2dc633c03ba428a060 python-311-fix-open.patch"
diff --git a/user/boost/boost-1.57.0-python-abi_letters.patch b/user/boost/boost-1.57.0-python-abi_letters.patch
deleted file mode 100644
index 7df3ee704..000000000
--- a/user/boost/boost-1.57.0-python-abi_letters.patch
+++ /dev/null
@@ -1,62 +0,0 @@
---- boost_1_57_0/tools/build/src/tools/python.jam 2013-05-21 06:14:18.000000000 +0200
-+++ boost_1_55_0/tools/build/src/tools/python.jam 2014-05-29 19:09:12.115413877 +0200
-@@ -94,7 +94,7 @@ feature.feature pythonpath : : free opti
- # using python : 2.3 : /usr/local/bin/python ;
- #
- rule init ( version ? : cmd-or-prefix ? : includes * : libraries ?
-- : condition * : extension-suffix ? )
-+ : condition * : extension-suffix ? : abi-letters ? )
- {
- project.push-current $(.project) ;
-
-@@ -107,7 +107,7 @@ rule init ( version ? : cmd-or-prefix ?
- }
- }
-
-- configure $(version) : $(cmd-or-prefix) : $(includes) : $(libraries) : $(condition) : $(extension-suffix) ;
-+ configure $(version) : $(cmd-or-prefix) : $(includes) : $(libraries) : $(condition) : $(extension-suffix) : $(abi-letters) ;
-
- project.pop-current ;
- }
-@@ -653,7 +653,7 @@ local rule system-library-dependencies (
-
- # Declare a target to represent Python's library.
- #
--local rule declare-libpython-target ( version ? : requirements * )
-+local rule declare-libpython-target ( version ? : requirements * : abi-letters ? )
- {
- # Compute the representation of Python version in the name of Python's
- # library file.
-@@ -677,13 +677,13 @@ local rule declare-libpython-target ( ve
- }
-
- # Declare it.
-- lib python.lib : : <name>python$(lib-version) $(requirements) ;
-+ lib python.lib : : <name>python$(lib-version)$(abi-letters) $(requirements) ;
- }
-
-
- # Implementation of init.
- local rule configure ( version ? : cmd-or-prefix ? : includes * : libraries ? :
-- condition * : extension-suffix ? )
-+ condition * : extension-suffix ? : abi-letters ? )
- {
- local prefix ;
- local exec-prefix ;
-@@ -699,6 +699,7 @@ local rule configure ( version ? : cmd-o
- extension-suffix ?= _d ;
- }
- extension-suffix ?= "" ;
-+ abi-letters ?= "" ;
-
- # Normalize and dissect any version number.
- local major-minor ;
-@@ -922,7 +923,7 @@ local rule configure ( version ? : cmd-o
- }
- else
- {
-- declare-libpython-target $(version) : $(target-requirements) ;
-+ declare-libpython-target $(version) : $(target-requirements) : $(abi-letters) ;
-
- # This is an evil hack. On, Windows, when Python is embedded, nothing
- # seems to set up sys.path to include Python's standard library
diff --git a/user/boost/boost-1.57.0-python-libpython_dep.patch b/user/boost/boost-1.57.0-python-libpython_dep.patch
deleted file mode 100644
index 57bfc2677..000000000
--- a/user/boost/boost-1.57.0-python-libpython_dep.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-Index: boost_1_57_0/tools/build/src/tools/python.jam
-===================================================================
---- boost_1_57_0/tools/build/src/tools/python.jam (revision 50406)
-+++ boost_1_57_0/tools/build/src/tools/python.jam (working copy)
-@@ -994,7 +994,7 @@
- else
- {
- alias python_for_extensions
-- :
-+ : python
- : $(target-requirements)
- :
- : $(usage-requirements)
diff --git a/user/boost/dual-python.patch b/user/boost/dual-python.patch
deleted file mode 100644
index 6a0647888..000000000
--- a/user/boost/dual-python.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff --git a/tools/build/src/tools/python.jam b/tools/build/src/tools/python.jam
-index cbd6419..0c29df6 100644
---- a/tools/build/src/tools/python.jam
-+++ b/tools/build/src/tools/python.jam
-@@ -907,14 +907,14 @@ local rule configure ( version ? : cmd-or-prefix ? : includes * : libraries ? :
- # for a particular target OS as the default. This makes it so that we can
- # select a python interpreter with only knowledge of the target OS. And hence
- # can configure different Pythons based on the target OS only.
-- local toolset-requirements = [ toolset.requirements ] ;
-- local toolset-target-os-requirements
-- = [ property.evaluate-conditionals-in-context
-- [ $(toolset-requirements).raw ] : <target-os>$(target-os) ] ;
-- if ! <python> in $(toolset-target-os-requirements:G)
-- {
-- toolset.add-requirements <target-os>$(target-os):<python>$(version:E=default) ;
-- }
-+# local toolset-requirements = [ toolset.requirements ] ;
-+# local toolset-target-os-requirements
-+# = [ property.evaluate-conditionals-in-context
-+# [ $(toolset-requirements).raw ] : <target-os>$(target-os) ] ;
-+# if ! <python> in $(toolset-target-os-requirements:G)
-+# {
-+# toolset.add-requirements <target-os>$(target-os):<python>$(version:E=default) ;
-+# }
-
- # Register the right suffix for extensions.
- register-extension-suffix $(extension-suffix) : $(target-requirements) ;
diff --git a/user/boost/python-311-fix-enum.patch b/user/boost/python-311-fix-enum.patch
new file mode 100644
index 000000000..02e0cf2c7
--- /dev/null
+++ b/user/boost/python-311-fix-enum.patch
@@ -0,0 +1,39 @@
+https://github.com/boostorg/python/pull/385
+
+Patch modified to include 'libs/python/' prefix.
+
+From ae5da2a7e8f1111757d8a474095486a5b22aa12d Mon Sep 17 00:00:00 2001
+From: Victor Stinner <vstinner@python.org>
+Date: Mon, 25 Apr 2022 10:51:46 +0200
+Subject: [PATCH] Fix enum_type_object type on Python 3.11
+
+The enum_type_object type inherits from PyLong_Type which is not tracked
+by the GC. Instances doesn't have to be tracked by the GC: remove the
+Py_TPFLAGS_HAVE_GC flag.
+
+The Python C API documentation says:
+
+ "To create a container type, the tp_flags field of the type object
+ must include the Py_TPFLAGS_HAVE_GC and provide an implementation of
+ the tp_traverse handler."
+
+https://docs.python.org/dev/c-api/gcsupport.html
+
+The new exception was introduced in Python 3.11 by:
+https://github.com/python/cpython/issues/88429
+---
+ src/object/enum.cpp | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/object/enum.cpp b/src/object/enum.cpp
+index 293e705899..5753b32e07 100644
+--- a/libs/python/src/object/enum.cpp
++++ b/libs/python/src/object/enum.cpp
+@@ -113,7 +113,6 @@ static PyTypeObject enum_type_object = {
+ #if PY_VERSION_HEX < 0x03000000
+ | Py_TPFLAGS_CHECKTYPES
+ #endif
+- | Py_TPFLAGS_HAVE_GC
+ | Py_TPFLAGS_BASETYPE, /* tp_flags */
+ 0, /* tp_doc */
+ 0, /* tp_traverse */
diff --git a/user/boost/python-311-fix-open.patch b/user/boost/python-311-fix-open.patch
new file mode 100644
index 000000000..4d238d3a2
--- /dev/null
+++ b/user/boost/python-311-fix-open.patch
@@ -0,0 +1,22 @@
+https://docs.python.org/3/whatsnew/3.11.html#porting-to-python-3-11
+
+open(), io.open(), codecs.open() and fileinput.FileInput no
+longer accept 'U' (“universal newline”) in the file mode.
+
+In Python 3, “universal newline” mode is used by default
+whenever a file is opened in text mode, and the 'U' flag
+has been deprecated since Python 3.3. The newline parameter
+to these functions controls how universal newlines work.
+
+diff -ur a/tools/build/test/BoostBuild.py b/tools/build/test/BoostBuild.py
+--- a/tools/build/test/BoostBuild.py 2022-11-27 10:51:49.323319793 -0600
++++ b/tools/build/test/BoostBuild.py 2022-11-27 10:52:31.636168392 -0600
+@@ -579,8 +579,6 @@
+ openMode = "r"
+ if binary:
+ openMode += "b"
+- else:
+- openMode += "U"
+ f = open(name, openMode)
+ result = f.read()
+ f.close()
diff --git a/user/bovo/APKBUILD b/user/bovo/APKBUILD
index 8e747d9ef..dca2ce55b 100644
--- a/user/bovo/APKBUILD
+++ b/user/bovo/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=bovo
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Gomoku or Connect Five game"
url="https://www.kde.org/applications/games/bovo/"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kcrash-dev
kcoreaddons-dev kdbusaddons-dev kdoctools-dev kxmlgui-dev
libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/bovo-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/bovo-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="077221d1a510e587fe8d90cb8f026dee78fcd88f831c26ad098c62db0bd2788bac30864247762f5221c7b3b3a55f772aa33e861fe0e9f91aacb3cd03f07a8fdd bovo-18.12.3.tar.xz"
+sha512sums="2b2b8cc0b8f097328d6666169c903baf2d7953e95936a9bbc040db30ac919bd9db28bc82060e39ea94a813b7b1dc1fd708ecfa68a4dcc497dc239317ba73f73d bovo-22.04.2.tar.xz"
diff --git a/user/breeze-grub/APKBUILD b/user/breeze-grub/APKBUILD
new file mode 100644
index 000000000..1f3fa93d0
--- /dev/null
+++ b/user/breeze-grub/APKBUILD
@@ -0,0 +1,22 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=breeze-grub
+pkgver=5.24.5
+pkgrel=0
+pkgdesc="KDE Breeze theme for GRUB boot screen"
+url="https://www.kde.org/"
+arch="noarch"
+options="!check" # Theme files, no code.
+license="GPL-3.0+"
+depends="grub"
+makedepends=""
+subpackages=""
+install_if="grub breeze"
+source="https://download.kde.org/stable/plasma/$pkgver/breeze-grub-$pkgver.tar.xz"
+
+package() {
+ mkdir -p "$pkgdir"/usr/share/grub/themes
+ cp -r breeze "$pkgdir"/usr/share/grub/themes/
+}
+
+sha512sums="5ffba2c633f0442c6bb109df6f6ce73d527788c93487818f4c93f6140935eaeae76b7d1efb00d570a766054e2aac5bfea17f6ae7439b04c9dc0f6d8e02d10355 breeze-grub-5.24.5.tar.xz"
diff --git a/user/breeze-gtk/APKBUILD b/user/breeze-gtk/APKBUILD
index 3b55131e2..4b7fb64f3 100644
--- a/user/breeze-gtk/APKBUILD
+++ b/user/breeze-gtk/APKBUILD
@@ -1,20 +1,19 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=breeze-gtk
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="GTK+ style that matches KDE Breeze"
url="https://www.kde.org/"
-arch="all"
+arch="noarch"
license="LGPL-2.1-only"
-depends="gtk+2.0"
-makedepends="cmake extra-cmake-modules qt5-qtbase-dev"
+depends="breeze gtk+2.0"
+makedepends="breeze-dev cmake extra-cmake-modules py3-pycairo qt5-qtbase-dev sassc"
# XXX should be installed if breeze and gtk+3.0 are installed, as well
install_if="breeze~$pkgver gtk+2.0"
source="https://download.kde.org/stable/plasma/$pkgver/breeze-gtk-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,18 +24,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="5be51fc6a884e4f3338b3ad3044b918f7267205c5234b2053edd4773be42b90fb8f665e339a40c1d49d6eea16e90e1e51f58f149002568e2e7ce0be69ee412d9 breeze-gtk-5.12.7.tar.xz"
+sha512sums="6bf656a94a1c4f708ad83c9d2c23b15d29387975558494502613df07dbd298580b372a83dd16c1077d8c91057c92d74b47f279e1f92eb53fa9c8783fe98c3c29 breeze-gtk-5.24.5.tar.xz"
diff --git a/user/breeze-icons/APKBUILD b/user/breeze-icons/APKBUILD
index 7a57ede78..03e62126e 100644
--- a/user/breeze-icons/APKBUILD
+++ b/user/breeze-icons/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=breeze-icons
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Modern, coherent icon set for desktops"
url="https://www.kde.org/"
@@ -9,13 +9,12 @@ arch="noarch"
options="!check" # 8,753 failures because it can't tell symlink from file.
license="LGPL-3.0+"
depends=""
-makedepends="$depends_dev cmake extra-cmake-modules qt5-qtbase-dev"
checkdepends="fdupes"
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev"
subpackages="breeze-icons-dark:dark"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/breeze-icons-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,18 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
- make
+ ${CMAKE_CROSSOPTS} \
+ -B build \
+ .
+ make -C build
}
check() {
- cd "$builddir"
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
dark() {
@@ -46,4 +45,4 @@ dark() {
mv "$pkgdir"/usr/share/icons/breeze-dark "$subpkgdir"/usr/share/icons/
}
-sha512sums="60a2f07bcf3e8ce59b3860d4e74411e3b52af16c08ff3213ecdbebca8d1e9a2918ec5b24f67af0dcee0673108a3f2c8f8b6c04d2a829bdaeac300383fdd6dad5 breeze-icons-5.54.0.tar.xz"
+sha512sums="63f58c75864b3791c7b7ab87666c49328589cd2867f166e496553281497375d9c6054c3ddfea7c6101092d8636d35d4c263fdccd3a58b50d9dd2a14210facb5c breeze-icons-5.94.0.tar.xz"
diff --git a/user/breeze/APKBUILD b/user/breeze/APKBUILD
index 17e5d241e..57f91a2c5 100644
--- a/user/breeze/APKBUILD
+++ b/user/breeze/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=breeze
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="Default KDE Plasma 5 style"
url="https://www.kde.org/"
@@ -16,7 +16,6 @@ subpackages="$pkgname-dev $pkgname-lang"
source="https://download.kde.org/stable/plasma/$pkgver/breeze-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="c0e564fa6df64c225ea7754271c138d4b4304068c5fcf2e0502f109af3478f37d2781ac13d068b0818c819c8f60d6c4a333ff8940334c3ee5030607f80080b99 breeze-5.12.7.tar.xz"
+sha512sums="25e5744589130f7d339c727e17e662a28bdecc3f0598b9683735ccdfd2dcdeada46a49baa5564a7cf7d59a3f6ac34802ae2172857e704941d64cf879b3583df0 breeze-5.24.5.tar.xz"
diff --git a/user/brillo/APKBUILD b/user/brillo/APKBUILD
new file mode 100644
index 000000000..f377b047f
--- /dev/null
+++ b/user/brillo/APKBUILD
@@ -0,0 +1,25 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=brillo
+pkgver=1.4.12
+pkgrel=0
+pkgdesc="Utility for controlling display brightness"
+url="https://gitlab.com/cameronnemo/brillo"
+arch="all"
+options="!check" # no testsuite
+license="GPL-3.0-only AND 0BSD"
+depends="udev polkit"
+makedepends=""
+subpackages=""
+source="https://gitlab.com/cameronnemo/brillo/-/archive/v$pkgver/brillo-v$pkgver.tar.bz2"
+builddir="$srcdir/brillo-v$pkgver"
+
+build() {
+ make
+}
+
+package() {
+ make DESTDIR="$pkgdir" install.bin install.udev install.polkit
+}
+
+sha512sums="f7bb6df12a8ddd7df6ac3c973cf24a0b4974387479d20477c7cec75503ca0bfbff8d16645464f79f73074711e62614ffcc5c9388384100274ba8be0bfaae26b8 brillo-v1.4.12.tar.bz2"
diff --git a/user/bsdwhois/APKBUILD b/user/bsdwhois/APKBUILD
index d5222238d..7fe28519f 100644
--- a/user/bsdwhois/APKBUILD
+++ b/user/bsdwhois/APKBUILD
@@ -15,13 +15,10 @@ source="http://utenti.gufi.org/~drizzt/codes/bsdwhois-$pkgver.tar.bz2"
builddir="$srcdir/$pkgname"
build() {
- cd "$builddir"
make
}
package() {
- cd "$builddir"
-
install -D -m755 "$builddir"/whois "$pkgdir"/usr/bin/whois
install -D -m644 "$builddir"/whois.1 "$pkgdir"/usr/share/man/man1/whois.1
}
diff --git a/user/btrfs-progs/APKBUILD b/user/btrfs-progs/APKBUILD
index 5e30eb457..c2c423ff8 100644
--- a/user/btrfs-progs/APKBUILD
+++ b/user/btrfs-progs/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=btrfs-progs
-pkgver=4.20.2
+pkgver=5.9
pkgrel=0
pkgdesc="File system utilities for Btrfs"
url="https://btrfs.wiki.kernel.org/index.php/Main_Page"
@@ -9,35 +9,26 @@ arch="all"
license="GPL-2.0-only"
depends=""
makedepends="asciidoctor attr-dev e2fsprogs-dev libexecinfo-dev lzo-dev
- python3-dev util-linux-dev xmlto zlib-dev zstd-dev"
-subpackages="$pkgname-doc $pkgname-python"
+ util-linux-dev xmlto zlib-dev zstd-dev"
+subpackages="$pkgname-doc"
source="https://mirrors.edge.kernel.org/pub/linux/kernel/people/kdave/btrfs-progs/btrfs-progs-v$pkgver.tar.xz"
builddir="$srcdir"/$pkgname-v$pkgver
build() {
- cd "$builddir"
LIBS="-lexecinfo" ./configure \
--build=$CBUILD \
--host=$CHOST \
- --prefix=/usr
+ --prefix=/usr \
+ --disable-python # --enable-python doesn't work.
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-python() {
- pkgdesc="$pkgdesc (Python 3 bindings)"
-
- cd "$builddir"
- make DESTDIR="$subpkgdir" install_python
-}
-
-sha512sums="a542423589e7ee35b9a1791ef13e4c8ea4be56b33d6119a18d046233cfc04678c525cad545387aeb48e0dbd8249c5a501100fdee8f6d6882c906e0a737a1778a btrfs-progs-v4.20.2.tar.xz"
+sha512sums="38db047198ab0467d3fe235f7e8e1fd14ade00dd0b182588220c5f5e4b598efbdcd30a3d5d56cf0a0ed8a902d2374af0927eb7f3720cd761172c7291a2a65c94 btrfs-progs-v5.9.tar.xz"
diff --git a/user/bugzilla/APKBUILD b/user/bugzilla/APKBUILD
index 5e0f6f31d..9217601b0 100644
--- a/user/bugzilla/APKBUILD
+++ b/user/bugzilla/APKBUILD
@@ -10,7 +10,7 @@ options="!check" # "Cannot determine your time zone"; all other tests pass
license="MPL-2.0"
# First section are required deps. Second section are optional features we use.
depends="perl-cgi perl-datetime perl-datetime-timezone perl-dbi perl-email-mime
- perl-email-sender perl-json-xs perl-list-moreutils
+ perl-email-sender perl-json-xs perl-list-moreutils perl
perl-math-random-isaac perl-template-toolkit perl-timedate perl-uri
patchutils perl-authen-sasl perl-chart perl-encode-detect
@@ -24,20 +24,17 @@ subpackages=""
source="https://ftp.mozilla.org/pub/mozilla.org/webtools/bugzilla-$pkgver.tar.gz"
build() {
- cd "$builddir"
perl Build.PL installdirs=vendor
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$srcdir"
mkdir -p "$pkgdir"/usr/share/webapps
- mv bugzilla-$pkgver "$pkgdir"/usr/share/webapps/
+ mv "$srcdir"/bugzilla-$pkgver "$pkgdir"/usr/share/webapps/
}
sha512sums="8ca47ea1be2b433a6ce68e1a595d72f3d0f0fede44d1194dc6bc9a116dbde3ab7285212c71995e200d31544876e4c3c57b63da1f877a0cb22747ab87a5d598de bugzilla-5.0.6.tar.gz"
diff --git a/user/byobu/APKBUILD b/user/byobu/APKBUILD
new file mode 100644
index 000000000..9d91403aa
--- /dev/null
+++ b/user/byobu/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Nathan <ndowens@artixlinux.org>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=byobu
+pkgver=5.133
+pkgrel=0
+pkgdesc="An enhancement of the GNU Screen"
+url="https://launchpad.net/byobu"
+arch="noarch"
+license="GPL-3.0+"
+depends="python3 tmux"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://launchpad.net/byobu/trunk/$pkgver/+download/byobu_$pkgver.orig.tar.gz"
+
+build() {
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="4c0ef7a3b483e48c57f3e97dae1c7c77084797016efb677b201f2b56c6b9f4b771739d9a6d9a4fb612203a22e9fa460db80fde30c837b102ad830b1b2919db6c byobu_5.133.orig.tar.gz"
diff --git a/user/bzflag/APKBUILD b/user/bzflag/APKBUILD
index 3e4b8be76..ab799c36b 100644
--- a/user/bzflag/APKBUILD
+++ b/user/bzflag/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Dan Theisen <djt@hxx.in>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=bzflag
-pkgver=2.4.18
+pkgver=2.4.22
pkgrel=0
pkgdesc="3D networked multi-player multi-platform tank battle game"
url="https://www.bzflag.org/"
@@ -10,11 +10,9 @@ license="LGPL-2.1+ AND MPL-2.0"
depends=""
makedepends="c-ares-dev curl-dev glew-dev ncurses-dev sdl2-dev zlib-dev"
subpackages="$pkgname-doc"
-source="https://download.bzflag.org/bzflag/source/$pkgver/$pkgname-$pkgver.tar.bz2
- defineAddrLen.patch"
+source="https://download.bzflag.org/bzflag/source/$pkgver/$pkgname-$pkgver.tar.bz2"
build() {
- cd "$builddir"
LIBS="-ltinfo" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,14 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="8e3183f2d78b686c92f3b9911b3cad2fa0df5693401537dc674c75e192fd59451167b7ddc546aa8a090b38d7864b8f22459ba9a4702451987f9c1dfa87fdb246 bzflag-2.4.18.tar.bz2
-6c7a1873706140b1b0b254d6f8350f47adef8f499a7e7b3418331beda11bdc71e2e0dee74e17d4a955960de66adf90d22796b440e1afa78d328077235e2e3dde defineAddrLen.patch"
+sha512sums="c78ad0e9e861d0c922ef73dd1e040d998836efaab3a48d5a3cd8392835ce37392b1b9438aed7483ea48c6bce672bb937aeba40553553dce0c0fd3cce38bf10cf bzflag-2.4.22.tar.bz2"
diff --git a/user/bzflag/defineAddrLen.patch b/user/bzflag/defineAddrLen.patch
deleted file mode 100644
index a25eb96c3..000000000
--- a/user/bzflag/defineAddrLen.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- bzflag-2.4.16/include/network.h.old 2018-09-27 19:16:48.015111918 -0700
-+++ bzflag-2.4.16/include/network.h 2018-09-27 19:17:06.195370763 -0700
-@@ -57,7 +57,7 @@
- # include <bstring.h>
- #endif
-
--#if defined(BSD) || defined(__sun__) || defined(__GLIBC__)
-+#if defined(BSD) || defined(__sun__) || defined(__linux__)
- # define AddrLen socklen_t
- #elif defined (__APPLE__)
- # include <AvailabilityMacros.h>
diff --git a/user/c-ares/APKBUILD b/user/c-ares/APKBUILD
index 5b33772a3..71a799909 100644
--- a/user/c-ares/APKBUILD
+++ b/user/c-ares/APKBUILD
@@ -1,38 +1,36 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=c-ares
-pkgver=1.15.0
-pkgrel=0
+pkgver=1.18.1
+pkgrel=1
pkgdesc="Asynchronous DNS/name resolver library"
-url="https://c-ares.haxx.se/"
+url="https://c-ares.org/"
arch="all"
options="!checkroot"
license="MIT"
depends=""
-makedepends=""
+makedepends="cmake"
subpackages="$pkgname-doc $pkgname-dev"
-source="https://c-ares.haxx.se/download/$pkgname-$pkgver.tar.gz"
+source="https://c-ares.org/download/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --mandir=/usr/share/man \
- --infodir=/usr/share/info \
- --enable-shared
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCARES_BUILD_TESTS=ON \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ .
make
}
check() {
- cd "$builddir"
- make -C test check
+ bin/arestest --gtest_filter=-*.Live*
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
}
-sha512sums="a1de6c5e7e1a6a13c926aae690e83d5caa51e7313d63da1cf2af6bc757c41d585aad5466bc3ba7b7f7793cb1748fa589f40972b196728851c8b059cfc8c3be50 c-ares-1.15.0.tar.gz"
+sha512sums="1276ec0799916019f8c0af6b55a139701bd15e0ca4a00811d07963893978bc96c107b980f0fd49f81aa70bc8b3b8cd671195ba357c390772d4c2c5643c50c5a5 c-ares-1.18.1.tar.gz"
diff --git a/user/cairo/APKBUILD b/user/cairo/APKBUILD
index 36e88f395..3f1823ece 100644
--- a/user/cairo/APKBUILD
+++ b/user/cairo/APKBUILD
@@ -1,65 +1,55 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=cairo
-pkgver=1.16.0
+pkgver=1.18.4
pkgrel=0
pkgdesc="A vector graphics library"
url="https://cairographics.org/"
arch="all"
-options="!check" # Recursive dependency on gtk+2.0 for check.
+options="!check" # Times out (after 3600 seconds).
license="LGPL-2.0+ AND MPL-1.1"
-depends=
-depends_dev="fontconfig-dev freetype-dev libxrender-dev pixman-dev
- xcb-util-dev libxext-dev $pkgname-tools"
-makedepends="$depends_dev zlib-dev expat-dev glib-dev libpng-dev
- autoconf automake libtool"
+depends=""
+depends_dev="$pkgname-tools"
+makedepends="expat-dev fontconfig-dev freetype-dev glib-dev gtk-doc libpng-dev
+ libx11-dev libxext-dev libxrender-dev meson pixman-dev xcb-util-dev
+ zlib-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-gobject $pkgname-tools"
-# fontconfig-ultimate https://github.com/bohoomil/fontconfig-ultimate
-_ultver="2016-04-23"
source="https://cairographics.org/releases/$pkgname-$pkgver.tar.xz
- fontconfig-ultimate-$_ultver.tar.gz::https://github.com/bohoomil/fontconfig-ultimate/archive/$_ultver.tar.gz
musl-stacksize.patch
+ cairo-respect-fontconfig_pb.patch
+ cairo-webkit-html5-fix.patch
"
-prepare() {
- cd "$builddir"
- default_prepare
+# secfixes:
+# 1.16.0-r2:
+# - CVE-2019-6462
+# - CVE-2020-35492
+# 1.16.0-r1:
+# - CVE-2018-19876
- # infinality
- for j in "$srcdir"/fontconfig-ultimate-$_ultver/$pkgname/*.patch; do
- msg "Applying ${j}"
- patch -p1 -i $j
- done
+build() {
+ meson setup \
+ -Dprefix=/usr \
+ -Dfontconfig=enabled \
+ -Dfreetype=enabled \
+ -Dglib=enabled \
+ -Dpng=enabled \
+ -Dspectre=disabled \
+ -Dtee=enabled \
+ -Dxcb=enabled \
+ -Dxlib=enabled \
+ -Dzlib=enabled \
+ -Dgtk_doc=true \
+ build
+
+ meson compile -C build
}
-build() {
- cd "$builddir"
- autoreconf -vif
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --enable-ft \
- --enable-gobject \
- --enable-pdf \
- --enable-png \
- --enable-ps \
- --enable-svg \
- --enable-tee \
- --enable-x \
- --enable-xcb \
- --enable-xcb-shm \
- --enable-xlib \
- --enable-xlib-xrender \
- --disable-xlib-xcb \
- --disable-static
- make
+check() {
+ meson test -C build
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" meson install -C build
}
gobject() {
@@ -76,6 +66,7 @@ tools() {
"$subpkgdir"/usr/lib/cairo/
}
-sha512sums="9eb27c4cf01c0b8b56f2e15e651f6d4e52c99d0005875546405b64f1132aed12fbf84727273f493d84056a13105e065009d89e94a8bfaf2be2649e232b82377f cairo-1.16.0.tar.xz
-d8185f4ec74f44c4746acf7e79bba7ff7ffd9d35bdabeb25e10b4e12825942d910931aa857f1645e5c8185bcb40a1f1ffe1e7e647428e9ea66618b2aec52fac3 fontconfig-ultimate-2016-04-23.tar.gz
-86f26fe41deb5e14f553c999090d1ec1d92a534fa7984112c9a7f1d6c6a8f1b7bb735947e8ec3f26e817f56410efe8cc46c5e682f6a278d49b40a683513740e0 musl-stacksize.patch"
+sha512sums="863679f817ed67dc2c916c035d740916e27e7e69c04fca63936e37d274e7f4c79848d16c8f7c481798864602e8847c489f698df89b785cbc576c925dbd513316 cairo-1.18.4.tar.xz
+86f26fe41deb5e14f553c999090d1ec1d92a534fa7984112c9a7f1d6c6a8f1b7bb735947e8ec3f26e817f56410efe8cc46c5e682f6a278d49b40a683513740e0 musl-stacksize.patch
+bdc01ec3619e40e6e260890e038628607076d56d8e64ceaf8a3fd3c92e348d451a12852148a168f2e0e69d40285800fa66e39fdee771d1e0d632311c61923ca2 cairo-respect-fontconfig_pb.patch
+9bf936f9c84f00409d75665034b21fa345c2e1c414715a899ad37ae10eaf54348537a3386ce078a56f1e931c749c3e50a99dd3b4e8aab484077ee18b5b89abe9 cairo-webkit-html5-fix.patch"
diff --git a/user/cairo/cairo-respect-fontconfig_pb.patch b/user/cairo/cairo-respect-fontconfig_pb.patch
new file mode 100644
index 000000000..0bb0f4a7a
--- /dev/null
+++ b/user/cairo/cairo-respect-fontconfig_pb.patch
@@ -0,0 +1,13 @@
+--- a/src/cairo-ft-font.c 2015-03-10 23:21:07.000000000 +0100
++++ b/src/cairo-ft-font.c 2015-03-11 21:59:05.747697134 +0100
+@@ -1932,7 +1932,9 @@ _cairo_ft_options_merge (cairo_ft_option
+ options->base.subpixel_order = other->base.subpixel_order;
+ }
+
+- if (options->base.hint_style == CAIRO_HINT_STYLE_DEFAULT)
++ options->base.hint_style = CAIRO_HINT_STYLE_DEFAULT;
++
++ if (other->base.hint_style != CAIRO_HINT_STYLE_DEFAULT)
+ options->base.hint_style = other->base.hint_style;
+
+ if (other->base.hint_style == CAIRO_HINT_STYLE_NONE)
diff --git a/user/cairo/cairo-webkit-html5-fix.patch b/user/cairo/cairo-webkit-html5-fix.patch
new file mode 100644
index 000000000..07c5c6db8
--- /dev/null
+++ b/user/cairo/cairo-webkit-html5-fix.patch
@@ -0,0 +1,30 @@
+From 0742b90a214b35951414558f6f5579f79b8a8194 Mon Sep 17 00:00:00 2001
+From: Massimo Valentini <mvalentini@src.gnome.org>
+Date: Thu, 21 Aug 2014 17:15:51 +0200
+Subject: [PATCH] Fix segfault rendering videos in webkit based browsers
+
+do not tessellate empty boxes.
+
+Reported-by: Henrique Lengler <henriqueleng@openmailbox.org>
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=81699
+---
+ src/cairo-bentley-ottmann-rectangular.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/cairo-bentley-ottmann-rectangular.c b/src/cairo-bentley-ottmann-rectangular.c
+index 5541bdc..4bcd8d1 100644
+--- a/src/cairo-bentley-ottmann-rectangular.c
++++ b/src/cairo-bentley-ottmann-rectangular.c
+@@ -834,6 +834,9 @@ _cairo_bentley_ottmann_tessellate_boxes (const cairo_boxes_t *in,
+ for (i = 0; i < chunk->count; i++) {
+ int h;
+
++ if (box[i].p1.y == box[i].p2.y)
++ continue;
++
+ if (box[i].p1.x < box[i].p2.x) {
+ rectangles[j].left.x = box[i].p1.x;
+ rectangles[j].left.dir = 1;
+--
+1.9.3
+
diff --git a/user/cairomm/APKBUILD b/user/cairomm/APKBUILD
index f79d27580..b2c0df778 100644
--- a/user/cairomm/APKBUILD
+++ b/user/cairomm/APKBUILD
@@ -1,37 +1,40 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=cairomm
-pkgver=1.12.2
+pkgver=1.14.4
pkgrel=0
pkgdesc="C++ interfaces to Cairo"
url="https://gnome.org"
arch="all"
+options="!check" # broken test
license="LGPL-2.1+"
depends=""
-makedepends="glibmm-dev libsigc++-dev cairo-dev"
+makedepends="boost-dev cairo-dev doxygen fontconfig-dev glibmm-dev graphviz
+ libsigc++-dev meson ninja libxslt"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.cairographics.org/releases/cairomm-$pkgver.tar.gz"
+source="https://www.cairographics.org/releases/cairomm-$pkgver.tar.xz"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
+ meson \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var
- make
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ -Dbuild-documentation=true \
+ -Dbuild-examples=false \
+ -Dbuild-tests=true \
+ -Dboost-shared=true \
+ . output
+ ninja -C output
}
check() {
- cd "$builddir"
- make check
+ ninja -C output test
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" ninja -C output install
}
-
-sha512sums="df2749e3865dfddf04c40b671453e057e7e76c5052bfc38d5b986c544b7ec43de40b1ef5b4d0e34f58781230d4b220c4176ddef773cd6a316c73641c4aec77c0 cairomm-1.12.2.tar.gz"
+sha512sums="9e2692837f55a2e66cd7e9d0a8033a35524df1c3186a53a9be75d71e899240dbc8959c914471e61e311812dabaf815e732142686b42fbdc75a71c05b41013d33 cairomm-1.14.4.tar.xz"
diff --git a/user/caja-dropbox/APKBUILD b/user/caja-dropbox/APKBUILD
index 17b585fbc..04fede959 100644
--- a/user/caja-dropbox/APKBUILD
+++ b/user/caja-dropbox/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=caja-dropbox
-pkgver=1.22.0
+pkgver=1.26.0
pkgrel=0
pkgdesc="DropBox extension for Caja"
url="https://mate-desktop.org"
@@ -13,7 +13,6 @@ subpackages="$pkgname-doc"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/caja-dropbox-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,14 +24,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
rm "$pkgdir"/usr/lib/caja/extensions-2.0/libcaja-dropbox.a
}
-sha512sums="d21f44c0e0f7f28a963fb8611e6992b3ea58ba2ad5910e440d286ab447f2f91e4776496569eb271ed25cb2628e35d2bd80d12bf832bc76011241f6b09903a8b2 caja-dropbox-1.22.0.tar.xz"
+sha512sums="f96e3ddf4434936b04e992044d6cd5797b6ff77ead573e8e9a6493f4308d9716f47871f1fd7f08b0dbf7f2659f107511b6be65e98632a0892ebfff0a9888dbe7 caja-dropbox-1.26.0.tar.xz"
diff --git a/user/caja-extensions/APKBUILD b/user/caja-extensions/APKBUILD
index 530be8356..c1a50dd48 100644
--- a/user/caja-extensions/APKBUILD
+++ b/user/caja-extensions/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=caja-extensions
-pkgver=1.22.0
+pkgver=1.26.1
pkgrel=0
pkgdesc="Extensions for the Caja file manager"
url="https://mate-desktop.org"
@@ -13,7 +13,6 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/caja-extensions-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="19fd287123b8d2ba67b636066e9f8910aadd47d375eb1d52136d9b808b48abacade81dde490ce3edb6fc4a9d2ddfd39d9abf294a58aed8bcaf620c1eff03e761 caja-extensions-1.22.0.tar.xz"
+sha512sums="0b4df2b141f1a5b2e06b9c426f9605b900e9ed61c8725930165465265938740725f3e49f27788cb41728ab6d559245fc1ce6e44ef97b229d1456b191892c1ef0 caja-extensions-1.26.1.tar.xz"
diff --git a/user/caja/APKBUILD b/user/caja/APKBUILD
index 46156b522..1dbc48e4e 100644
--- a/user/caja/APKBUILD
+++ b/user/caja/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=caja
-pkgver=1.22.0
+pkgver=1.26.1
pkgrel=0
pkgdesc="File manager for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -10,13 +10,11 @@ options="!check" # testsuite requires X
license="GPL-2.0+ AND LGPL-2.0+"
depends=""
makedepends="gobject-introspection-dev intltool libexif-dev libnotify-dev
- libxml2-dev mate-desktop-dev"
-subpackages="$pkgname-dev $pkgname-doc"
+ libxml2-dev mate-desktop-dev wayland-protocols"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/caja-$pkgver.tar.xz"
-builddir="$srcdir/caja-$pkgver"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,12 +26,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
for i in icons globs globs2 XMLnamespaces magic aliases subclasses types treemagic mime.cache version generic-icons; do
@@ -41,4 +37,4 @@ package() {
done
}
-sha512sums="ca97a1e81cc7b061bb331d7a4574c76831dbff50bdc9ba0a162675def7278cf5dadb37aacb0e1e37a0ac2cf60df73f98353aaa36fa0e69a0097017eed5d325b6 caja-1.22.0.tar.xz"
+sha512sums="e5d14d1a5f0ae9f86d3250e5a2d10a4e0afdc7ba1b52fcac4c8efc0a4c555d0208be3caf3aac19cc4938fe4c20e82f1f81d259d30e5d8fffbc78708664d23d4e caja-1.26.1.tar.xz"
diff --git a/user/calligra/APKBUILD b/user/calligra/APKBUILD
index a17bf9711..3a064428b 100644
--- a/user/calligra/APKBUILD
+++ b/user/calligra/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=calligra
-pkgver=3.1.0
+pkgver=3.2.1
pkgrel=1
pkgdesc="KDE Office suite"
url="https://www.calligra.org/"
@@ -23,33 +23,19 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtscript-dev
boost-dev eigen-dev fontconfig-dev freetype-dev gsl-dev lcms2-dev
libetonyek-dev libgit2-dev libodfgen-dev librevenge-dev libvisio-dev
libwpd-dev libwpg-dev libwps-dev marble-dev poppler-dev poppler-qt5-dev
- qca-dev
+ qca-dev okular
- kcalcore-dev kcontacts-dev kdiagram-dev"
+ kcalendarcore-dev kcontacts-dev kdiagram-dev"
subpackages="$pkgname-dev $pkgname-lang"
source="https://download.kde.org/stable/calligra/$pkgver/calligra-$pkgver.tar.xz
- https://download.kde.org/stable/calligra/$pkgver/calligraplan-$pkgver.tar.xz
- c99-math.patch
+ braindump.patch
+ ridiculous-typo.patch
+ fontconfig.patch
+ cxx17.patch
poppler.patch
- poppler2.patch
- poppler3.patch
- poppler4.patch
- poppler-73.patch
"
-prepare() {
- default_prepare
-
- cd "$builddir"
- mv ../calligraplan-$pkgver plan
- sed -e "/add_subdirectory(plan)/s/#//" \
- -e "/^calligra_disable_product(APP_PLAN/s/^/#/" \
- -i CMakeLists.txt
- mkdir build
-}
-
build() {
- cd "$builddir"/build
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -61,28 +47,26 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DEIGEN3_INCLUDE_DIR=/usr/include/eigen3 \
- -DPRODUCTSET="KARBON PLAN SHEETS STAGE WORDS" \
+ -DPRODUCTSET=desktop \
+ -DQt5WebKitWidgets_FOUND=True \
+ -DAPP_BRAINDUMP=True \
-DBUILD_UNMAINTAINED=True \
${CMAKE_CROSSOPTS} \
- ..
- make
+ -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="ad1b689a5b36deafcf6985d4a0a1e8148d10e19fb4a0be8343c6e1d24146b9a8ffa0890ab5bbb21816b3134d21150b57f6159db1a30cc54c0fde5bf7bdf4537b calligra-3.1.0.tar.xz
-a8ccc6ee2f0381b811926a296122464bdb79aad7c75ff0f7a554e4596165ff7fd7ef62c9af9232ea36542d6b538446c8920fe77cbbe7ffacdf6e6b99a1b68156 calligraplan-3.1.0.tar.xz
-b03d2f33a0233638be06b4219328404eac4a77c508619c4037b3b53556b257fc4888cd690bb3755562040a198cbd51a323d13553fed3f2082398556a49482c6e c99-math.patch
-960614eb2d367443810cc356d004d43867a4fa4085b054ffd1522b94ef09e9338e723117c91148383d33d54104729750a199ab1b75569aaa7164a908afd3cd4c poppler.patch
-53296af0b1ad39c523bc93a0040f1316dfb52e2077d277a83841a741c5cb48d81efb1f6328b2af2c8f1dc92db12c4d771a9a65028498d7802b2c30dd702b9455 poppler2.patch
-a22b78d9664284ee5de7a4299907ec37a7835cb6ae3af8e7c1ee0202cea8c1e544fbad7395e56115fb5fe13ec06aeff22e381431e20c6c151c93003cf8a45446 poppler3.patch
-df0e592f8c314581b1811776f8aa1c3dd32f05f966f23ef4dd023c41dad759aea8b674b32e2bd7bee36efe4ba0ce0bdd08f3fc30d10115330605d09d46883a28 poppler4.patch
-8440f1c36aba9cb54efa36fae73d605f57e78d055225c776791b14554d6be6f081f8cdc3fa65fb9c0b600a3b030d7776b45f631b9bc00d495ab16bfc35bd66f4 poppler-73.patch"
+sha512sums="e53a939aa1b277c2291cfd626868c77085fc9cc7774df160b5b1afceb33314b4381fa8ffe03636cbde6e35cc2abd170a51e7f9c1a99191339313b9c9c3b1526f calligra-3.2.1.tar.xz
+cdb50c21581e753926e1d73eb1dd090e7ef243bfd54ddac6df2d22dafd496c7f4d543dc2818d1ddae98e2bbcef0de403a10cc162c03da548ced8d872d8348594 braindump.patch
+3fa0700f471202eb8b76ded3928b884f43aa1c52e3fa6fc33b7fb62d5b1dcff1df2823723963a40f383e466eb7bebb1a66db14f2bd076a41f25b74f1a5f7f8d5 ridiculous-typo.patch
+8dd6498dd5b225a630f69da37e5e53f513c9d4bc764e3ddedfb06b6403faca298358340264366972953ca5cc4ec3c2eb59fe76fb7fc0d924653a5c885f2a5e4f fontconfig.patch
+5e85e59edd36df81f51d2fc046bbff5628d9255a3a992ce4ec1ea7bf14f5b5415bb81578c4e87a2a78cfe3a0af2800bb57b3642e47afe71b62501100832ca417 cxx17.patch
+717a2e04195e686906e8af2b0d04f76e4ab8e9b77a224a1e85cab27de8d6afbb699200ffb76771b0ac0973d7c5e0ffc4a183f2486ff9c1a5fafb75aaee94457d poppler.patch"
diff --git a/user/calligra/braindump.patch b/user/calligra/braindump.patch
new file mode 100644
index 000000000..933fe7c9f
--- /dev/null
+++ b/user/calligra/braindump.patch
@@ -0,0 +1,21 @@
+--- calligra-3.2.1/CMakeLists.txt.old 2020-05-14 06:53:49.000000000 +0000
++++ calligra-3.2.1/CMakeLists.txt 2020-07-29 23:07:48.255879433 +0000
+@@ -1068,7 +1068,7 @@
+ # e.g.:
+ # calligra_disable_product(APP_FOO "isn't buildable at the moment")
+
+-calligra_disable_product(APP_BRAINDUMP "Disabled, will (probably) be removed from Calligra")
++#calligra_disable_product(APP_BRAINDUMP "Disabled, will (probably) be removed from Calligra")
+
+ #############################################
+ #### Calculate buildable products ####
+--- calligra-3.2.1/braindump/src/MainWindow.h.old 2020-05-14 01:51:30.000000000 -0500
++++ calligra-3.2.1/braindump/src/MainWindow.h 2022-11-19 04:34:25.337849680 -0600
+@@ -22,6 +22,7 @@
+
+ #include <kxmlguiwindow.h>
+ #include <KoCanvasSupervisor.h>
++#include <QMap>
+
+ class DockerManager;
+ class RootSection;
diff --git a/user/calligra/c99-math.patch b/user/calligra/c99-math.patch
deleted file mode 100644
index 4326dd7fa..000000000
--- a/user/calligra/c99-math.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- calligra-3.1.0/filters/words/msword-odf/wv2/CMakeLists.txt.old 2018-01-26 09:24:44.000000000 +0000
-+++ calligra-3.1.0/filters/words/msword-odf/wv2/CMakeLists.txt 2018-10-24 23:22:43.440000000 +0000
-@@ -64,12 +64,12 @@
- set( CMAKE_REQUIRED_INCLUDES math.h )
- endif()
-
--check_function_exists( isinf HAVE_FUNC_ISINF )
--check_function_exists( isnan HAVE_FUNC_ISNAN )
-+check_symbol_exists( isinf math.h HAVE_FUNC_ISINF )
-+check_symbol_exists( isnan math.h HAVE_FUNC_ISNAN )
- if(MINGW)
- add_definitions( -DHAVE_FUNC_ISFINITE )
- endif()
--check_function_exists( finite HAVE_FUNC_FINITE )
-+check_symbol_exists( finite math.h HAVE_FUNC_FINITE )
- check_function_exists( _finite HAVE_FUNC__FINITE )
-
- #
diff --git a/user/calligra/cxx17.patch b/user/calligra/cxx17.patch
new file mode 100644
index 000000000..d3fe6dca3
--- /dev/null
+++ b/user/calligra/cxx17.patch
@@ -0,0 +1,474 @@
+From 175b92c26637a08be4093c9579128f2f89253090 Mon Sep 17 00:00:00 2001
+From: Andreas Sturmlechner <asturm@gentoo.org>
+Date: Fri, 7 Jan 2022 14:00:05 +0100
+Subject: [PATCH] Fix build with >=app-text/poppler-22.01.0
+
+Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
+---
+ CMakeLists.txt | 7 +------
+ 1 file changed, 1 insertion(+), 6 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 71272ffef2d..bdd9ed74406 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -104,12 +104,7 @@ if(NOT DEFINED RELEASE_BUILD)
+ endif()
+ message(STATUS "Release build: ${RELEASE_BUILD}")
+
+-# use CPP-11
+-if (CMAKE_VERSION VERSION_LESS "3.1")
+- set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
+-else ()
+- set (CMAKE_CXX_STANDARD 11)
+-endif ()
++set (CMAKE_CXX_STANDARD 17) # required for >=poppler-22.01
+
+ ############
+ #############
+--
+2.34.1
+
+From 068cd9aec11052733e393976142516d2190e4564 Mon Sep 17 00:00:00 2001
+From: Pierre Ducroquet <pinaraf@pinaraf.info>
+Date: Sun, 28 Feb 2021 23:23:02 +0100
+Subject: [PATCH] Fix some more warnings
+
+---
+ filters/libmsooxml/MsooXmlDiagramReader_p.cpp | 1 +
+ filters/sheets/csv/csvimport.cc | 2 +-
+ filters/sheets/excel/sidewinder/excel.cpp | 1 +
+ filters/sheets/excel/sidewinder/formulas.cpp | 2 +-
+ filters/sheets/gnumeric/gnumericexport.cc | 5 ++---
+ filters/sheets/html/htmlexport.cc | 2 --
+ filters/sheets/latex/export/latexexport.cc | 1 -
+ filters/sheets/latex/export/table.cc | 1 +
+ filters/sheets/xlsx/XlsxXmlWorksheetReader.cpp | 1 -
+ filters/stage/pptx/PptxXmlDocumentReader.cpp | 2 +-
+ filters/words/msword-odf/texthandler.cpp | 2 ++
+ filters/words/msword-odf/wv2/src/parser9x.cpp | 4 +++-
+ filters/words/msword-odf/wv2/src/styles.cpp | 4 +---
+ filters/words/msword-odf/wv2/src/styles.h | 11 ++++++++---
+ gemini/lib/GeminiMainWindow.cpp | 2 ++
+ libs/pageapp/KoPAOdfPageSaveHelper.cpp | 2 +-
+ plugins/spacenavigator/SpaceNavigatorDevice.h | 6 ++----
+ plugins/spacenavigator/SpaceNavigatorEvent.h | 2 +-
+ plugins/spacenavigator/SpaceNavigatorPollingThread.h | 3 +--
+ plugins/vectorshape/VectorShape.cpp | 1 +
+ sheets/functions/datetime.cpp | 1 +
+ sheets/part/Digest.cpp | 8 ++++----
+ sheets/shape/TableToolFactory.h | 2 +-
+ sheets/tests/TestSort.cpp | 4 ++--
+ 24 files changed, 38 insertions(+), 32 deletions(-)
+
+diff --git a/filters/libmsooxml/MsooXmlDiagramReader_p.cpp b/filters/libmsooxml/MsooXmlDiagramReader_p.cpp
+index 14b08531262..14fc6ab9a71 100644
+--- a/filters/libmsooxml/MsooXmlDiagramReader_p.cpp
++++ b/filters/libmsooxml/MsooXmlDiagramReader_p.cpp
+@@ -872,6 +872,7 @@ void LayoutNodeAtom::finishBuild(Context* context) {
+ case AlgorithmAtom::UnknownAlg:
+ warnMsooXml << "Layout with name=" << m_name << "defines an unknown algorithm.";
+ // fall through and use the composite-algorithm
++ // fall through
+ case AlgorithmAtom::CompositeAlg: m_algorithmImpl = new CompositeAlgorithm; break;
+ case AlgorithmAtom::ConnectorAlg: m_algorithmImpl = new ConnectorAlgorithm; break;
+ case AlgorithmAtom::CycleAlg: m_algorithmImpl = new CycleAlgorithm; break;
+diff --git a/filters/sheets/csv/csvimport.cc b/filters/sheets/csv/csvimport.cc
+index 89fb7162e00..1008d186f18 100644
+--- a/filters/sheets/csv/csvimport.cc
++++ b/filters/sheets/csv/csvimport.cc
+@@ -97,8 +97,8 @@ KoFilter::ConversionStatus CSVFilter::convert(const QByteArray& from, const QByt
+ return KoFilter::FileNotFound;
+ }
+
+- QString csv_delimiter;
+ // ###### FIXME: disabled for now
++ //QString csv_delimiter;
+ //if (!config.isNull())
+ // csv_delimiter = config[0];
+
+diff --git a/filters/sheets/excel/sidewinder/excel.cpp b/filters/sheets/excel/sidewinder/excel.cpp
+index ab592225ca6..7fa5633d433 100644
+--- a/filters/sheets/excel/sidewinder/excel.cpp
++++ b/filters/sheets/excel/sidewinder/excel.cpp
+@@ -2449,6 +2449,7 @@ bool ExcelReader::load(Workbook* workbook, const char* filename)
+ } else {
+ bytes_read = combObjStream->read( buffer, markerOrLength );
+ QString ansiString = readByteString(buffer, markerOrLength);
++ Q_UNUSED(ansiString);
+ //TODO...
+ //printf( "markerOrLength=%i ansiString=%s\n",markerOrLength,ansiString.ascii() );
+ }
+diff --git a/filters/sheets/excel/sidewinder/formulas.cpp b/filters/sheets/excel/sidewinder/formulas.cpp
+index 62747469a49..0132d39e024 100644
+--- a/filters/sheets/excel/sidewinder/formulas.cpp
++++ b/filters/sheets/excel/sidewinder/formulas.cpp
+@@ -1513,7 +1513,7 @@ static void mergeTokens(UStringStack* stack, unsigned count, const QString &merg
+ if (!stack) return;
+ if (stack->size() < count) return;
+
+- QString s1, s2;
++ QString s1;
+
+ while (count) {
+ count--;
+diff --git a/filters/sheets/gnumeric/gnumericexport.cc b/filters/sheets/gnumeric/gnumericexport.cc
+index 1256c68bc74..2468548edb3 100644
+--- a/filters/sheets/gnumeric/gnumericexport.cc
++++ b/filters/sheets/gnumeric/gnumericexport.cc
+@@ -1293,15 +1293,13 @@ KoFilter::ConversionStatus GNUMERICExport::convert(const QByteArray& from, const
+ i = 0;
+ }
+
+- QString line;
+ for (int currentcolumn = 1; currentcolumn <= iMaxColumn; currentcolumn++) {
+ QDomElement cell_contents;
+ Cell cell(table, currentcolumn, currentrow);
+
+- QString text, style;
++ QString text;
+ QDomDocument domLink;
+ QDomElement domRoot;
+- QDomNode domNode;
+ QDomNodeList childNodes;
+
+ if (!cell.isDefault() && !cell.isEmpty()) {
+@@ -1342,6 +1340,7 @@ KoFilter::ConversionStatus GNUMERICExport::convert(const QByteArray& from, const
+ text = domNode.toElement().text();
+
+ while (!domNode.isNull()) {
++ QString style;
+ style = domNode.toElement().tagName();
+
+ if (style == "b")
+diff --git a/filters/sheets/html/htmlexport.cc b/filters/sheets/html/htmlexport.cc
+index 2d116e0608c..bf41a6f743e 100644
+--- a/filters/sheets/html/htmlexport.cc
++++ b/filters/sheets/html/htmlexport.cc
+@@ -242,7 +242,6 @@ void HTMLExport::convertSheet(Sheet *sheet, QString &str, int iMaxUsedRow, int i
+ i = 0;
+ }
+
+- QString separators;
+ QString line;
+ unsigned int nonempty_cells = 0;
+
+@@ -435,7 +434,6 @@ void HTMLExport::detectFilledCells(Sheet *sheet, int &rows, int &columns)
+ int iUsedColumn = 0;
+ for (int currentcolumn = 1 ; currentcolumn <= iMaxColumn ; currentcolumn++) {
+ cell = Cell(sheet, currentcolumn, currentrow);
+- QString text;
+ if (!cell.isDefault() && !cell.isEmpty()) {
+ iUsedColumn = currentcolumn;
+ }
+diff --git a/filters/sheets/latex/export/latexexport.cc b/filters/sheets/latex/export/latexexport.cc
+index 8d0698a3420..4f8caf235d9 100644
+--- a/filters/sheets/latex/export/latexexport.cc
++++ b/filters/sheets/latex/export/latexexport.cc
+@@ -38,7 +38,6 @@ LATEXExport::LATEXExport(QObject* parent, const QVariantList&) :
+
+ KoFilter::ConversionStatus LATEXExport::convert(const QByteArray& from, const QByteArray& to)
+ {
+- QString config;
+
+ if (to != "text/x-tex" || from != "application/x-kspread")
+ return KoFilter::NotImplemented;
+diff --git a/filters/sheets/latex/export/table.cc b/filters/sheets/latex/export/table.cc
+index 8d8b6701a39..e58827dfbc7 100644
+--- a/filters/sheets/latex/export/table.cc
++++ b/filters/sheets/latex/export/table.cc
+@@ -118,6 +118,7 @@ void Table::analyzePaper(const QDomNode node)
+
+ /* borders */
+ QDomNode border = getChild(node, "borders");
++ Q_UNUSED(border);
+ setBorderRight(getAttr(node, "right").toLong());
+ setBorderLeft(getAttr(node, "left").toLong());
+ setBorderBottom(getAttr(node, "bottom").toLong());
+diff --git a/filters/sheets/xlsx/XlsxXmlWorksheetReader.cpp b/filters/sheets/xlsx/XlsxXmlWorksheetReader.cpp
+index 782a5914729..eda8ffc6b47 100644
+--- a/filters/sheets/xlsx/XlsxXmlWorksheetReader.cpp
++++ b/filters/sheets/xlsx/XlsxXmlWorksheetReader.cpp
+@@ -872,7 +872,6 @@ KoFilter::ConversionStatus XlsxXmlWorksheetReader::read_conditionalFormatting()
+ while (index < m_conditionalIndices.size()) {
+ QString conditionalArea;
+ Condition examinedCondition = m_conditionalIndices.at(index);
+- QString sqrefOriginal = sqref;
+ int areaIndex = 0;
+ Condition previousCond;
+
+diff --git a/filters/stage/pptx/PptxXmlDocumentReader.cpp b/filters/stage/pptx/PptxXmlDocumentReader.cpp
+index 4cf86aea8c8..11b5ad266b9 100644
+--- a/filters/stage/pptx/PptxXmlDocumentReader.cpp
++++ b/filters/stage/pptx/PptxXmlDocumentReader.cpp
+@@ -316,7 +316,7 @@ KoFilter::ConversionStatus PptxXmlDocumentReader::read_sldId()
+
+ QString slideMasterPath, slideMasterFile;
+ MSOOXML::Utils::splitPathAndFile(m_context->relationships->targetForType(slidePath, slideFile, QLatin1String(MSOOXML::Schemas::officeDocument::relationships) + "/slideLayout"), &slideMasterPath, &slideMasterFile);
+- const QString slideMasterPathAndFile = m_context->relationships->targetForType(slideMasterPath, slideMasterFile, QLatin1String(MSOOXML::Schemas::officeDocument::relationships) + "/slideMaster");
++ // const QString slideMasterPathAndFile = m_context->relationships->targetForType(slideMasterPath, slideMasterFile, QLatin1String(MSOOXML::Schemas::officeDocument::relationships) + "/slideMaster");
+
+ // Delay the reading of a tableStyle until we find a table as we need the
+ // clrMap from the master slide
+diff --git a/filters/words/msword-odf/texthandler.cpp b/filters/words/msword-odf/texthandler.cpp
+index e167d86e028..89ef678961a 100644
+--- a/filters/words/msword-odf/texthandler.cpp
++++ b/filters/words/msword-odf/texthandler.cpp
+@@ -408,6 +408,7 @@ void WordsTextHandler::footnoteFound(wvWare::FootnoteData data,
+ }
+ case msonfcUCLetter:
+ letter = 'A';
++ // fall through
+ case msonfcLCLetter:
+ {
+ while (noteNumber / 25 > 0) {
+@@ -1064,6 +1065,7 @@ void WordsTextHandler::fieldStart(const wvWare::FLD* fld, wvWare::SharedPtr<cons
+ break;
+ case UNSUPPORTED:
+ warnMsDoc << "Warning: Fld data missing, ignoring!";
++ // fall through
+ default:
+ warnMsDoc << "Warning: unrecognized field type, ignoring!";
+ m_fld->m_type = UNSUPPORTED;
+diff --git a/filters/words/msword-odf/wv2/src/parser9x.cpp b/filters/words/msword-odf/wv2/src/parser9x.cpp
+index 9a6d1606ce9..e5d7d14691c 100644
+--- a/filters/words/msword-odf/wv2/src/parser9x.cpp
++++ b/filters/words/msword-odf/wv2/src/parser9x.cpp
+@@ -581,7 +581,8 @@ void Parser9x::processPiece( String* string, U32 fc, U32 limit, const Position&
+ // same ASCII code as TTP_MARK (0x0007), NOTE: table depth == 1
+ case CELL_MARK:
+ m_cellMarkFound = true;
+- // Fall-through intended. A row/cell end is also a paragraph end.
++ // A row/cell end is also a paragraph end.
++ // fall through
+ case PARAGRAPH_MARK:
+ {
+ // No "index - start + 1" here, as we don't want to copy the
+@@ -1064,6 +1065,7 @@ void Parser9x::emitSpecialCharacter( UChar character, U32 globalCP, SharedPtr<co
+ if (m_subDocument == Main) {
+ emitAnnotation( UString(character), globalCP, chp );
+ }
++ break;
+ }
+ case TextHandler::FieldEscapeChar:
+ wvlog << "Found an escape character ++++++++++++++++++++?" << endl;
+diff --git a/filters/words/msword-odf/wv2/src/styles.cpp b/filters/words/msword-odf/wv2/src/styles.cpp
+index f47c3dd8d51..d2c96e3d92b 100644
+--- a/filters/words/msword-odf/wv2/src/styles.cpp
++++ b/filters/words/msword-odf/wv2/src/styles.cpp
+@@ -42,7 +42,6 @@ STD::STD()
+ }
+
+ STD::STD( U16 baseSize, U16 totalSize, OLEStreamReader* stream, bool preservePos )
+-throw(InvalidFormatException)
+ {
+ clearInternal();
+ if (!read( baseSize, totalSize, stream, preservePos )) {
+@@ -112,7 +111,6 @@ STD& STD::operator=( const STD& rhs )
+ }
+
+ bool STD::read( const U16 cbStd, const U16 stdfSize, OLEStreamReader* stream, bool preservePos )
+-throw(InvalidFormatException)
+ {
+ U16 shifterU16;
+ S32 startOffset=stream->tell(); // address where the STD starts
+@@ -938,7 +936,7 @@ void Style::mergeUpechpx( const Style* parentStyle, WordVersion version )
+ }
+
+
+-StyleSheet::StyleSheet( OLEStreamReader* tableStream, U32 fcStshf, U32 lcbStshf ) throw(InvalidFormatException)
++StyleSheet::StyleSheet( OLEStreamReader* tableStream, U32 fcStshf, U32 lcbStshf )
+ : m_udsNum(0)
+ {
+ WordVersion version = Word8;
+diff --git a/filters/words/msword-odf/wv2/src/styles.h b/filters/words/msword-odf/wv2/src/styles.h
+index ba02def6845..41c8278dd21 100644
+--- a/filters/words/msword-odf/wv2/src/styles.h
++++ b/filters/words/msword-odf/wv2/src/styles.h
+@@ -58,8 +58,9 @@ struct STD
+ STD();
+ /**
+ * Simply calls read(...)
++ * @throw InvalidFormatException
+ */
+- STD( U16 stdfSize, U16 totalSize, OLEStreamReader* stream, bool preservePos = false ) throw(InvalidFormatException);
++ STD( U16 stdfSize, U16 totalSize, OLEStreamReader* stream, bool preservePos = false );
+ /**
+ * Attention: This struct allocates memory on the heap
+ */
+@@ -74,8 +75,9 @@ struct STD
+ * false the state of stream will be changed!
+ *
+ * @return true - success, false - failed
++ * @throw InvalidFormatException
+ */
+- bool read( const U16 cbStd, const U16 stdfSize, OLEStreamReader* stream, bool preservePos = false ) throw(InvalidFormatException);
++ bool read( const U16 cbStd, const U16 stdfSize, OLEStreamReader* stream, bool preservePos = false );
+
+ /**
+ * Same as reading :)
+@@ -365,7 +367,10 @@ private:
+ class WV2_EXPORT StyleSheet
+ {
+ public:
+- StyleSheet( OLEStreamReader* tableStream, U32 fcStshf, U32 lcbStshf ) throw(InvalidFormatException);
++ /**
++ * @throw InvalidFormatException
++ */
++ StyleSheet( OLEStreamReader* tableStream, U32 fcStshf, U32 lcbStshf );
+ ~StyleSheet();
+
+ /**
+diff --git a/gemini/lib/GeminiMainWindow.cpp b/gemini/lib/GeminiMainWindow.cpp
+index 3d05f6461e0..eb5f120c0f7 100644
+--- a/gemini/lib/GeminiMainWindow.cpp
++++ b/gemini/lib/GeminiMainWindow.cpp
+@@ -136,8 +136,10 @@ void GeminiMainWindow::setFullScreen(bool newState)
+ }
+
+
++
+ void GeminiMainWindow::changeState(GeminiMainWindow::GeminiState newState, bool lockNewState)
+ {
++ Q_UNUSED(lockNewState);
+ d->syncObject = new GeminiModeSynchronisationObject;
+
+ if(centralWidget()) {
+diff --git a/libs/pageapp/KoPAOdfPageSaveHelper.cpp b/libs/pageapp/KoPAOdfPageSaveHelper.cpp
+index 92c6dfd4cb4..068501c8af1 100644
+--- a/libs/pageapp/KoPAOdfPageSaveHelper.cpp
++++ b/libs/pageapp/KoPAOdfPageSaveHelper.cpp
+@@ -49,7 +49,7 @@ KoPAOdfPageSaveHelper::KoPAOdfPageSaveHelper( KoPADocument * doc, QList<KoPAPage
+ KoPAPage * p = static_cast<KoPAPage *>( page );
+ masterPages.insert( p->masterPage() );
+ }
+- m_masterPages = masterPages.toList();
++ m_masterPages = masterPages.values();
+ }
+ }
+
+diff --git a/plugins/spacenavigator/SpaceNavigatorDevice.h b/plugins/spacenavigator/SpaceNavigatorDevice.h
+index b9056ac98c1..ecd696e415f 100644
+--- a/plugins/spacenavigator/SpaceNavigatorDevice.h
++++ b/plugins/spacenavigator/SpaceNavigatorDevice.h
+@@ -31,10 +31,8 @@ public:
+ explicit SpaceNavigatorDevice(QObject *parent);
+ virtual ~SpaceNavigatorDevice();
+
+- /// reimplemented from KoInputDeviceHandler
+- virtual bool start();
+- /// reimplemented from KoInputDeviceHandler
+- virtual bool stop();
++ virtual bool start() override;
++ virtual bool stop() override;
+ private Q_SLOTS:
+ void slotMoveEvent( int x, int y, int z, int rx, int ry, int rz, Qt::MouseButtons );
+ void slotButtonEvent( int x, int y, int z, int rx, int ry, int rz, Qt::MouseButtons, Qt::MouseButton, int type );
+diff --git a/plugins/spacenavigator/SpaceNavigatorEvent.h b/plugins/spacenavigator/SpaceNavigatorEvent.h
+index 73751ec88ff..76ee8e2f880 100644
+--- a/plugins/spacenavigator/SpaceNavigatorEvent.h
++++ b/plugins/spacenavigator/SpaceNavigatorEvent.h
+@@ -33,7 +33,7 @@ public:
+ void setPosition( int x, int y, int z );
+ void setRotation( int rx, int ry, int rz );
+
+- virtual KoPointerEvent * pointerEvent();
++ virtual KoPointerEvent * pointerEvent() override;
+
+ private:
+ int m_x, m_y, m_z;
+diff --git a/plugins/spacenavigator/SpaceNavigatorPollingThread.h b/plugins/spacenavigator/SpaceNavigatorPollingThread.h
+index 62c4de8ab73..67d59177021 100644
+--- a/plugins/spacenavigator/SpaceNavigatorPollingThread.h
++++ b/plugins/spacenavigator/SpaceNavigatorPollingThread.h
+@@ -39,8 +39,7 @@ Q_SIGNALS:
+
+ protected:
+
+- /// reimplemented from QThread
+- virtual void run();
++ virtual void run() override;
+
+ private:
+ bool m_stopped;
+diff --git a/plugins/vectorshape/VectorShape.cpp b/plugins/vectorshape/VectorShape.cpp
+index a25ab3fc561..9acbd251c94 100644
+--- a/plugins/vectorshape/VectorShape.cpp
++++ b/plugins/vectorshape/VectorShape.cpp
+@@ -294,6 +294,7 @@ void VectorShape::saveOdf(KoShapeSavingContext & context) const
+ break;
+ case VectorTypeSvg:
+ mimeType = "image/svg+xml";
++ break;
+ default:
+ // FIXME: What here?
+ mimeType = "application/x-what";
+diff --git a/sheets/functions/datetime.cpp b/sheets/functions/datetime.cpp
+index 9f59fe2cf75..6157b0996c1 100644
+--- a/sheets/functions/datetime.cpp
++++ b/sheets/functions/datetime.cpp
+@@ -597,6 +597,7 @@ Value func_currentDate(valVector, ValueCalc * calc, FuncExtra *)
+ // Function: CURRENTTIME
+ Value func_currentTime(valVector, ValueCalc * calc, FuncExtra *)
+ {
++ Q_UNUSED(calc);
+ return Value(QTime::currentTime());
+ }
+
+diff --git a/sheets/part/Digest.cpp b/sheets/part/Digest.cpp
+index 8cd972db989..e9246ce6e7d 100644
+--- a/sheets/part/Digest.cpp
++++ b/sheets/part/Digest.cpp
+@@ -596,10 +596,10 @@ static void __rtl_digest_endSHA(DigestContextSHA *ctx)
+ }
+
+ switch (ctx->m_nDatLen & 0x03) {
+- case 0: X[i] = ((sal_uInt32)(*(p++))) << 0L;
+- case 1: X[i] |= ((sal_uInt32)(*(p++))) << 8L;
+- case 2: X[i] |= ((sal_uInt32)(*(p++))) << 16L;
+- case 3: X[i] |= ((sal_uInt32)(*(p++))) << 24L;
++ case 0: X[i] = ((sal_uInt32)(*(p++))) << 0L; /* fall through */
++ case 1: X[i] |= ((sal_uInt32)(*(p++))) << 8L; /* fall through */
++ case 2: X[i] |= ((sal_uInt32)(*(p++))) << 16L; /* fall through */
++ case 3: X[i] |= ((sal_uInt32)(*(p++))) << 24L; /* fall through */
+ }
+
+ __rtl_digest_swapLong(X, i + 1);
+diff --git a/sheets/shape/TableToolFactory.h b/sheets/shape/TableToolFactory.h
+index 679bfe14b8e..9412d8ffdc5 100644
+--- a/sheets/shape/TableToolFactory.h
++++ b/sheets/shape/TableToolFactory.h
+@@ -34,7 +34,7 @@ public:
+ TableToolFactory();
+ ~TableToolFactory();
+
+- KoToolBase* createTool(KoCanvasBase* canvas);
++ KoToolBase* createTool(KoCanvasBase* canvas) override;
+ };
+
+ } // namespace Sheets
+diff --git a/sheets/tests/TestSort.cpp b/sheets/tests/TestSort.cpp
+index b3f1e35169d..6354d79abc5 100644
+--- a/sheets/tests/TestSort.cpp
++++ b/sheets/tests/TestSort.cpp
+@@ -68,7 +68,7 @@ void TestSort::AscendingOrder()
+ command->setSheet(sheet);
+
+ // Parameters.
+- command->setSortRows(Qt::Vertical);
++ command->setSortRows(true);
+ command->setSkipFirst(false);
+ command->setCopyFormat(false);
+
+@@ -121,7 +121,7 @@ void TestSort::DescendingOrder()
+ command->setSheet(sheet);
+
+ // Parameters.
+- command->setSortRows(Qt::Vertical);
++ command->setSortRows(true);
+ command->setSkipFirst(false);
+ command->setCopyFormat(false);
+
+--
+GitLab
+
diff --git a/user/calligra/fontconfig.patch b/user/calligra/fontconfig.patch
new file mode 100644
index 000000000..7e1fd9d41
--- /dev/null
+++ b/user/calligra/fontconfig.patch
@@ -0,0 +1,86 @@
+From c7636fb343c848000300a9429410b74d17a4d54d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C3=96mer=20Fad=C4=B1l=20Usta?= <omerusta@gmail.com>
+Date: Tue, 8 Jun 2021 05:13:23 +0000
+Subject: [PATCH] Partial update of Commit 62f51070 to make it compileable
+ again
+
+Cmake to 3.16
+Fix Fontconfig's FOUND variable
+Fix Fontconfig's include_dirs variable
+Use Correct Target to link FontConfig and Freetype
+---
+ CMakeLists.txt | 14 +++++---------
+ libs/text/CMakeLists.txt | 4 ++--
+ 2 files changed, 7 insertions(+), 11 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 1ce210ebe01..71272ffef2d 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,4 +1,4 @@
+-cmake_minimum_required(VERSION 2.8.12)
++cmake_minimum_required(VERSION 3.16)
+
+ project(calligra)
+
+@@ -168,6 +168,8 @@ calligra_set_productset(${PRODUCTSET})
+ ## Look for ECM, Qt, KF5 ##
+ ###########################
+ ##########################
++set(REQUIRED_KF5_VERSION "5.7.0")
++set(REQUIRED_QT_VERSION "5.3.0")
+
+ find_package(ECM 5.19 REQUIRED NO_MODULE)
+ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
+@@ -199,9 +201,6 @@ include(MacroOptionalFindPackage)
+ include(MacroEnsureVersion)
+ include(MacroDesktopToJson)
+
+-
+-set(REQUIRED_KF5_VERSION "5.7.0")
+-
+ find_package(KF5 ${REQUIRED_KF5_VERSION} REQUIRED
+ COMPONENTS
+ Archive
+@@ -251,9 +250,6 @@ if(${KF5_VERSION} VERSION_LESS "5.16.0")
+ set(CALLIGRA_OLD_PLUGIN_METADATA TRUE)
+ endif()
+
+-
+-set(REQUIRED_QT_VERSION "5.3.0")
+-
+ find_package(Qt5 ${REQUIRED_QT_VERSION} REQUIRED
+ COMPONENTS
+ Core
+@@ -641,8 +637,8 @@ if(NOT WIN32 AND NOT APPLE)
+ )
+ endif()
+
+-if(NOT FONTCONFIG_FOUND OR NOT FREETYPE_FOUND)
+- set(FONTCONFIG_INCLUDE_DIR "")
++if(NOT Fontconfig_FOUND OR NOT FREETYPE_FOUND)
++ set(Fontconfig_INCLUDE_DIRS "")
+ set(FREETYPE_INCLUDE_DIRS "")
+ else()
+ add_definitions( -DSHOULD_BUILD_FONT_CONVERSION )
+diff --git a/libs/text/CMakeLists.txt b/libs/text/CMakeLists.txt
+index 16d7e066fa2..429afe79704 100644
+--- a/libs/text/CMakeLists.txt
++++ b/libs/text/CMakeLists.txt
+@@ -152,11 +152,11 @@ if( SHOULD_BUILD_FEATURE_RDF )
+ endif()
+
+ if( FONTCONFIG_FOUND )
+- target_link_libraries(kotext PRIVATE ${FONTCONFIG_LIBRARIES})
++ target_link_libraries(kotext PRIVATE Fontconfig::Fontconfig)
+ endif()
+
+ if( FREETYPE_FOUND )
+- target_link_libraries(kotext PRIVATE ${FREETYPE_LIBRARIES})
++ target_link_libraries(kotext PRIVATE Freetype::Freetype)
+ endif()
+
+
+--
+GitLab
+
diff --git a/user/calligra/poppler-73.patch b/user/calligra/poppler-73.patch
deleted file mode 100644
index aa71e20b4..000000000
--- a/user/calligra/poppler-73.patch
+++ /dev/null
@@ -1,45 +0,0 @@
---- calligra-3.1.0/filters/karbon/pdf/SvgOutputDev.cpp.old 2019-01-14 18:40:55.580000000 +0000
-+++ calligra-3.1.0/filters/karbon/pdf/SvgOutputDev.cpp 2019-01-14 18:53:05.000000000 +0000
-@@ -402,7 +402,7 @@
-
- QString str;
-
-- const char * p = s->getCString();
-+ const char * p = s->c_str();
- int len = s->getLength();
- CharCode code;
- Unicode *u = nullptr;
-@@ -451,11 +451,11 @@
- *d->body << " y=\"" << y << "px\"";
-
- if (font && font->getFamily()) {
-- *d->body << " font-family=\"" << QString::fromLatin1(font->getFamily()->getCString()) << "\"";
-- //debugPdf << "font family:" << QString::fromLatin1( font->getFamily()->getCString() );
-+ *d->body << " font-family=\"" << QString::fromLatin1(font->getFamily()->c_str()) << "\"";
-+ //debugPdf << "font family:" << QString::fromLatin1( font->getFamily()->c_str() );
- } else if (font && font->getName()) {
-- *d->body << " font-family=\"" << QString::fromLatin1(font->getName()->getCString()) << "\"";
-- //debugPdf << "font name:" << QString::fromLatin1( font->getName()->getCString() );
-+ *d->body << " font-family=\"" << QString::fromLatin1(font->getName()->c_str()) << "\"";
-+ //debugPdf << "font name:" << QString::fromLatin1( font->getName()->c_str() );
- }
- *d->body << " font-size=\"" << qMax(state->getFontSize(), state->getTransformedFontSize()) << "px\"";
-
-@@ -488,7 +488,7 @@
- if (maskColors) {
- for (int y = 0; y < height; y++) {
- dest = (unsigned int *)(buffer + y * 4 * width);
-- Guchar * pix = imgStr->getLine();
-+ unsigned char * pix = imgStr->getLine();
- colorMap->getRGBLine(pix, dest, width);
-
- for (int x = 0; x < width; x++) {
-@@ -507,7 +507,7 @@
- } else {
- for (int y = 0; y < height; y++) {
- dest = (unsigned int *)(buffer + y * 4 * width);
-- Guchar * pix = imgStr->getLine();
-+ unsigned char * pix = imgStr->getLine();
- colorMap->getRGBLine(pix, dest, width);
- }
-
diff --git a/user/calligra/poppler.patch b/user/calligra/poppler.patch
index 458a31514..f59d995fe 100644
--- a/user/calligra/poppler.patch
+++ b/user/calligra/poppler.patch
@@ -1,84 +1,192 @@
-From a615718222f8ad3bba4b88fad640382e517f7dd9 Mon Sep 17 00:00:00 2001
-From: Antonio Rojas <arojas@archlinux.org>
-Date: Wed, 24 Oct 2018 08:28:00 +0200
-Subject: Fix build with poppler>=0.69
+From 63ae4ecc780ba42901e6934302b75bd18d3bc5eb Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <aacid@kde.org>
+Date: Wed, 13 Apr 2022 01:25:44 +0200
+Subject: [PATCH 1/3] PdfImport: Fix compile with newer poppler
-Remove no longer available Object::memCheck usage (which didn't do anything anyway since DEBUG_MEM was not set); add some const's
-
-Differential Revision: https://phabricator.kde.org/D16388
+Brings a dependency on poppler-qt5 to be able to include the version
+header, honestly it's not strictly needed, one could do a
+check_cxx_source_compiles, but I don't care about Calligra enough to
+spend more time making it compile while it's using poppler the wrong
+way.
---
- filters/karbon/pdf/PdfImport.cpp | 3 ---
- filters/karbon/pdf/SvgOutputDev.cpp | 8 ++++----
- filters/karbon/pdf/SvgOutputDev.h | 2 +-
- 3 files changed, 5 insertions(+), 8 deletions(-)
+ CMakeLists.txt | 1 +
+ filters/karbon/pdf/CMakeLists.txt | 2 +-
+ filters/karbon/pdf/PdfImport.cpp | 9 +++++++++
+ 3 files changed, 11 insertions(+), 1 deletion(-)
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index bdd9ed74406..d8c86810b54 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -998,6 +998,7 @@ calligra_drop_product_on_bad_condition( FILTER_WPG_TO_ODG
+ calligra_drop_product_on_bad_condition( FILTER_PDF_TO_SVG
+ NOT_WIN "not supported on Windows"
+ PopplerXPDFHeaders_FOUND "poppler xpdf headers not found"
++ Poppler_FOUND "poppler qt5 headers not found"
+ )
+
+ calligra_drop_product_on_bad_condition( FILTER_HTML_TO_ODS
+diff --git a/filters/karbon/pdf/CMakeLists.txt b/filters/karbon/pdf/CMakeLists.txt
+index 94d4071da3d..ef360f44359 100644
+--- a/filters/karbon/pdf/CMakeLists.txt
++++ b/filters/karbon/pdf/CMakeLists.txt
+@@ -19,7 +19,7 @@ set(pdf2svg_PART_SRCS PdfImportDebug.cpp PdfImport.cpp SvgOutputDev.cpp )
+ add_library(calligra_filter_pdf2svg MODULE ${pdf2svg_PART_SRCS})
+ calligra_filter_desktop_to_json(calligra_filter_pdf2svg calligra_filter_pdf2svg.desktop)
+
+-target_link_libraries(calligra_filter_pdf2svg komain Poppler::Core)
++target_link_libraries(calligra_filter_pdf2svg komain Poppler::Core Poppler::Qt5)
+
+ install(TARGETS calligra_filter_pdf2svg DESTINATION ${PLUGIN_INSTALL_DIR}/calligra/formatfilters)
+
diff --git a/filters/karbon/pdf/PdfImport.cpp b/filters/karbon/pdf/PdfImport.cpp
-index c3e96b0..48b08df 100644
+index 286f5fa78bc..c171c754116 100644
--- a/filters/karbon/pdf/PdfImport.cpp
+++ b/filters/karbon/pdf/PdfImport.cpp
-@@ -102,9 +102,6 @@ KoFilter::ConversionStatus PdfImport::convert(const QByteArray& from, const QByt
- delete globalParams;
- globalParams = 0;
+@@ -30,6 +30,10 @@
+
+ #include <kpluginfactory.h>
+
++#include <poppler-version.h>
++
++#define POPPLER_VERSION_MACRO ((POPPLER_VERSION_MAJOR << 16) | (POPPLER_VERSION_MINOR << 8) | (POPPLER_VERSION_MICRO))
++
+ // Don't show this warning: it's an issue in poppler
+ #ifdef __GNUC__
+ #pragma GCC diagnostic ignored "-Wunused-parameter"
+@@ -73,8 +77,13 @@ KoFilter::ConversionStatus PdfImport::convert(const QByteArray& from, const QByt
+ if (! globalParams)
+ return KoFilter::NotImplemented;
+
++#if POPPLER_VERSION_MACRO < QT_VERSION_CHECK(22, 03, 0)
+ GooString * fname = new GooString(QFile::encodeName(m_chain->inputFile()).data());
+ PDFDoc * pdfDoc = new PDFDoc(fname, 0, 0, 0);
++#else
++ std::unique_ptr<GooString> fname = std::make_unique<GooString>(QFile::encodeName(m_chain->inputFile()).data());
++ PDFDoc * pdfDoc = new PDFDoc(std::move(fname));
++#endif
+ if (! pdfDoc) {
+ #ifdef HAVE_POPPLER_PRE_0_83
+ delete globalParams;
+--
+2.35.1
+
+From feb28e5fbd4e3b41c74da1220bc14826bcf9b3c7 Mon Sep 17 00:00:00 2001
+From: Dag Andersen <dag.andersen@kdemail.net>
+Date: Wed, 13 Apr 2022 14:45:33 +0200
+Subject: [PATCH 2/3] PdfImport: Fix compile with newer poppler
+
+Also fixes odg2pdf filter.
+
+Same solution as commit 236bacbe13739414e919de868283b0caf2df5d8a
+by accid@kde.org.
+---
+ filters/karbon/pdf/CMakeLists.txt | 2 +-
+ filters/karbon/pdf/Pdf2OdgImport.cpp | 9 +++++++++
+ filters/karbon/pdf/SvgOutputDev.cpp | 9 +++++++++
+ 3 files changed, 19 insertions(+), 1 deletion(-)
+
+diff --git a/filters/karbon/pdf/CMakeLists.txt b/filters/karbon/pdf/CMakeLists.txt
+index ef360f44359..849baa70f12 100644
+--- a/filters/karbon/pdf/CMakeLists.txt
++++ b/filters/karbon/pdf/CMakeLists.txt
+@@ -29,6 +29,6 @@ set(pdf2odg_PART_SRCS PdfImportDebug.cpp Pdf2OdgImport.cpp SvgOutputDev.cpp)
+ add_library(calligra_filter_pdf2odg MODULE ${pdf2odg_PART_SRCS})
+ calligra_filter_desktop_to_json(calligra_filter_pdf2odg calligra_filter_pdf2odg.desktop)
+
+-target_link_libraries(calligra_filter_pdf2odg kopageapp karbonui Poppler::Core)
++target_link_libraries(calligra_filter_pdf2odg kopageapp karbonui Poppler::Core Poppler::Qt5)
-- // check for memory leaks
-- Object::memCheck(stderr);
--
- return KoFilter::OK;
- }
+ install(TARGETS calligra_filter_pdf2odg DESTINATION ${PLUGIN_INSTALL_DIR}/calligra/formatfilters)
+diff --git a/filters/karbon/pdf/Pdf2OdgImport.cpp b/filters/karbon/pdf/Pdf2OdgImport.cpp
+index 745239c9c21..b5f3722b320 100644
+--- a/filters/karbon/pdf/Pdf2OdgImport.cpp
++++ b/filters/karbon/pdf/Pdf2OdgImport.cpp
+@@ -40,6 +40,8 @@
+ #include <kpluginfactory.h>
+
++#include <poppler-version.h>
++
+ // Don't show this warning: it's an issue in poppler
+ #ifdef __GNUC__
+ #pragma GCC diagnostic ignored "-Wunused-parameter"
+@@ -49,6 +51,8 @@
+ #include <PDFDoc.h>
+ #include <GlobalParams.h>
+
++#define POPPLER_VERSION_MACRO ((POPPLER_VERSION_MAJOR << 16) | (POPPLER_VERSION_MINOR << 8) | (POPPLER_VERSION_MICRO))
++
+ K_PLUGIN_FACTORY_WITH_JSON(Pdf2OdgImportFactory, "calligra_filter_pdf2odg.json",
+ registerPlugin<Pdf2OdgImport>();)
+
+@@ -86,8 +90,13 @@ KoFilter::ConversionStatus Pdf2OdgImport::convert(const QByteArray& from, const
+ if (! globalParams)
+ return KoFilter::NotImplemented;
+
++#if POPPLER_VERSION_MACRO < QT_VERSION_CHECK(22, 03, 0)
+ GooString * fname = new GooString(QFile::encodeName(m_chain->inputFile()).data());
+ PDFDoc * pdfDoc = new PDFDoc(fname, 0, 0, 0);
++#else
++ std::unique_ptr<GooString> fname = std::make_unique<GooString>(QFile::encodeName(m_chain->inputFile()).data());
++ PDFDoc * pdfDoc = new PDFDoc(std::move(fname));
++#endif
+ if (! pdfDoc) {
+ #ifdef HAVE_POPPLER_PRE_0_83
+ delete globalParams;
diff --git a/filters/karbon/pdf/SvgOutputDev.cpp b/filters/karbon/pdf/SvgOutputDev.cpp
-index 931917a..7901317 100644
+index b980fdf60f6..76b909e3b69 100644
--- a/filters/karbon/pdf/SvgOutputDev.cpp
+++ b/filters/karbon/pdf/SvgOutputDev.cpp
-@@ -212,7 +212,7 @@ QString SvgOutputDev::convertMatrix(const QMatrix &matrix)
- .arg(matrix.dx()) .arg(matrix.dy());
- }
+@@ -35,6 +35,10 @@
+ #include <QPen>
+ #include <QImage>
--QString SvgOutputDev::convertMatrix(double * matrix)
-+QString SvgOutputDev::convertMatrix(const double * matrix)
++#include <poppler-version.h>
++
++#define POPPLER_VERSION_MACRO ((POPPLER_VERSION_MAJOR << 16) | (POPPLER_VERSION_MINOR << 8) | (POPPLER_VERSION_MICRO))
++
+ class SvgOutputDev::Private
{
- return QString("matrix(%1 %2 %3 %4 %5 %6)")
- .arg(matrix[0]).arg(matrix[1])
-@@ -402,7 +402,7 @@ void SvgOutputDev::drawString(GfxState * state, GooString * s)
+ public:
+@@ -410,7 +414,12 @@ void SvgOutputDev::drawString(GfxState * state, const GooString * s)
+ if (s->getLength() == 0)
+ return;
+
++#if POPPLER_VERSION_MACRO < QT_VERSION_CHECK(22, 03, 0)
+ GfxFont * font = state->getFont();
++#else
++ std::shared_ptr<GfxFont> font = state->getFont();
++#endif
++
QString str;
-- char * p = s->getCString();
-+ const char * p = s->getCString();
- int len = s->getLength();
- CharCode code;
- Unicode *u = nullptr;
-@@ -429,7 +429,7 @@ void SvgOutputDev::drawString(GfxState * state, GooString * s)
- double x = state->getCurX();
- double y = state->getCurY();
-
-- double * ctm = state->getCTM();
-+ const double * ctm = state->getCTM();
- QMatrix transform(ctm[0], ctm[1], ctm[2], ctm[3], ctm[4], ctm[5]);
-
- QMatrix mirror;
-@@ -522,7 +522,7 @@ void SvgOutputDev::drawImage(GfxState *state, Object */*ref*/, Stream *str,
+--
+2.35.1
+
+From 2dd2c02094ab9dfd964b2363039527d414db3b28 Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <aacid@kde.org>
+Date: Wed, 13 Apr 2022 21:30:14 +0200
+Subject: [PATCH 3/3] SvgOutputDev: Fix ifdef version for getFont API change
+
+---
+ filters/karbon/pdf/SvgOutputDev.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/filters/karbon/pdf/SvgOutputDev.cpp b/filters/karbon/pdf/SvgOutputDev.cpp
+index 76b909e3b69..588cda8ecbe 100644
+--- a/filters/karbon/pdf/SvgOutputDev.cpp
++++ b/filters/karbon/pdf/SvgOutputDev.cpp
+@@ -414,7 +414,7 @@ void SvgOutputDev::drawString(GfxState * state, const GooString * s)
+ if (s->getLength() == 0)
return;
- }
-
-- double * ctm = state->getCTM();
-+ const double * ctm = state->getCTM();
- QMatrix m;
- m.setMatrix(ctm[0] / width, ctm[1] / width, -ctm[2] / height, -ctm[3] / height, ctm[2] + ctm[4], ctm[3] + ctm[5]);
-
-diff --git a/filters/karbon/pdf/SvgOutputDev.h b/filters/karbon/pdf/SvgOutputDev.h
-index 85fe55d..2a44908 100644
---- a/filters/karbon/pdf/SvgOutputDev.h
-+++ b/filters/karbon/pdf/SvgOutputDev.h
-@@ -84,7 +84,7 @@ public:
- private:
- QString convertPath(GfxPath *path);
- QString convertMatrix(const QMatrix &matrix);
-- QString convertMatrix(double * matrix);
-+ QString convertMatrix(const double * matrix);
- QString printFill();
- QString printStroke();
+-#if POPPLER_VERSION_MACRO < QT_VERSION_CHECK(22, 03, 0)
++#if POPPLER_VERSION_MACRO < QT_VERSION_CHECK(22, 04, 0)
+ GfxFont * font = state->getFont();
+ #else
+ std::shared_ptr<GfxFont> font = state->getFont();
--
-cgit v0.11.2
+2.35.1
diff --git a/user/calligra/poppler2.patch b/user/calligra/poppler2.patch
deleted file mode 100644
index 6f18c070f..000000000
--- a/user/calligra/poppler2.patch
+++ /dev/null
@@ -1,114 +0,0 @@
-From fa4c2961b8280456d4c1484565b973d312e0bd1c Mon Sep 17 00:00:00 2001
-From: Albert Astals Cid <aacid@kde.org>
-Date: Thu, 25 Oct 2018 23:04:39 +0200
-Subject: Mark the functions as override
-
-So when poppler API breaks (as it often does) it stops compiling and
-someone has to fix it
----
- filters/karbon/pdf/SvgOutputDev.cpp | 13 +++--------
- filters/karbon/pdf/SvgOutputDev.h | 43 +++++++++++++++++--------------------
- 2 files changed, 23 insertions(+), 33 deletions(-)
-
-diff --git a/filters/karbon/pdf/SvgOutputDev.cpp b/filters/karbon/pdf/SvgOutputDev.cpp
-index 5692824..1d07f16 100644
---- a/filters/karbon/pdf/SvgOutputDev.cpp
-+++ b/filters/karbon/pdf/SvgOutputDev.cpp
-@@ -387,7 +387,7 @@ QString SvgOutputDev::printStroke()
- return stroke;
- }
-
--void SvgOutputDev::drawString(GfxState * state, GooString * s)
-+void SvgOutputDev::drawString(GfxState * state, const GooString * s)
- {
- int render = state->getRender();
- // check for invisible text -- this is used by Acrobat Capture
-@@ -478,9 +478,9 @@ void SvgOutputDev::drawString(GfxState * state, GooString * s)
- *d->body << "</text>" << endl;
- }
-
--void SvgOutputDev::drawImage(GfxState *state, Object */*ref*/, Stream *str,
-+void SvgOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
- int width, int height, GfxImageColorMap *colorMap,
-- int *maskColors, GBool /*inlineImg*/)
-+ GBool /*interpolate*/, int *maskColors, GBool inlineImg)
- {
- ImageStream * imgStr = new ImageStream(str, width, colorMap->getNumPixelComps(), colorMap->getBits());
- imgStr->reset();
-@@ -547,10 +547,3 @@ void SvgOutputDev::drawImage(GfxState *state, Object */*ref*/, Stream *str,
- delete imgStr;
- }
-
--void SvgOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
-- int width, int height, GfxImageColorMap *colorMap,
-- GBool /*interpolate*/, int *maskColors, GBool inlineImg)
--{
-- drawImage(state, ref, str, width, height, colorMap, maskColors, inlineImg);
--}
--
-diff --git a/filters/karbon/pdf/SvgOutputDev.h b/filters/karbon/pdf/SvgOutputDev.h
-index 2a44908..422027c 100644
---- a/filters/karbon/pdf/SvgOutputDev.h
-+++ b/filters/karbon/pdf/SvgOutputDev.h
-@@ -46,38 +46,35 @@ public:
-
- GBool isOk();
-
-- virtual GBool upsideDown();
-- virtual GBool useDrawChar();
-- virtual GBool interpretType3Chars();
-- virtual void startPage(int pageNum, GfxState *state, XRef *xref);
-- virtual void endPage();
-+ GBool upsideDown() override;
-+ GBool useDrawChar() override;
-+ GBool interpretType3Chars() override;
-+ void startPage(int pageNum, GfxState *state, XRef *xref) override;
-+ void endPage() override;
-
- // path painting
-- virtual void stroke(GfxState * state);
-- virtual void fill(GfxState * state);
-- virtual void eoFill(GfxState *state);
-+ void stroke(GfxState * state) override;
-+ void fill(GfxState * state) override;
-+ void eoFill(GfxState *state) override;
-
- // text
-- virtual void drawString(GfxState * state, GooString * s);
-+ void drawString(GfxState * state, const GooString * s) override;
-
- // images
-- virtual void drawImage(GfxState *state, Object *ref, Stream *str,
-+ void drawImage(GfxState *state, Object *ref, Stream *str,
- int width, int height, GfxImageColorMap *colorMap,
-- int *maskColors, GBool inlineImg);
-- virtual void drawImage(GfxState *state, Object *ref, Stream *str,
-- int width, int height, GfxImageColorMap *colorMap,
-- GBool interpolate, int *maskColors, GBool inlineImg);
-+ GBool interpolate, int *maskColors, GBool inlineImg) override;
-
- // styles
-- virtual void updateAll(GfxState *state);
-- virtual void updateFillColor(GfxState *state);
-- virtual void updateStrokeColor(GfxState *state);
-- virtual void updateFillOpacity(GfxState *state);
-- virtual void updateStrokeOpacity(GfxState *state);
-- virtual void updateLineJoin(GfxState *state);
-- virtual void updateLineCap(GfxState *state);
-- virtual void updateMiterLimit(GfxState *state);
-- virtual void updateLineWidth(GfxState *state);
-+ void updateAll(GfxState *state) override;
-+ void updateFillColor(GfxState *state) override;
-+ void updateStrokeColor(GfxState *state) override;
-+ void updateFillOpacity(GfxState *state) override;
-+ void updateStrokeOpacity(GfxState *state) override;
-+ void updateLineJoin(GfxState *state) override;
-+ void updateLineCap(GfxState *state) override;
-+ void updateMiterLimit(GfxState *state) override;
-+ void updateLineWidth(GfxState *state) override;
-
- /// Dumps content to svg file
- void dumpContent();
---
-cgit v1.1
-
diff --git a/user/calligra/poppler3.patch b/user/calligra/poppler3.patch
deleted file mode 100644
index 54702b515..000000000
--- a/user/calligra/poppler3.patch
+++ /dev/null
@@ -1,92 +0,0 @@
-From 82d68cebf870ac97fd27b626a08c3fb4dd94ea3e Mon Sep 17 00:00:00 2001
-From: Albert Astals Cid <aacid@kde.org>
-Date: Thu, 25 Oct 2018 23:06:34 +0200
-Subject: GBool -> bool
-
-It was just a typedef in poppler and it'll die in next versions
----
- filters/karbon/pdf/SvgOutputDev.cpp | 12 ++++++------
- filters/karbon/pdf/SvgOutputDev.h | 10 +++++-----
- 2 files changed, 11 insertions(+), 11 deletions(-)
-
-diff --git a/filters/karbon/pdf/SvgOutputDev.cpp b/filters/karbon/pdf/SvgOutputDev.cpp
-index 1d07f16..870a940 100644
---- a/filters/karbon/pdf/SvgOutputDev.cpp
-+++ b/filters/karbon/pdf/SvgOutputDev.cpp
-@@ -52,7 +52,7 @@ public:
- QString defsData;
- QTextStream * defs;
- QTextStream * body;
-- GBool state;
-+ bool state;
- QSizeF pageSize;
- QPen pen;
- QBrush brush;
-@@ -75,22 +75,22 @@ SvgOutputDev::~SvgOutputDev()
- delete d;
- }
-
--GBool SvgOutputDev::isOk()
-+bool SvgOutputDev::isOk()
- {
- return d->state;
- }
-
--GBool SvgOutputDev::upsideDown()
-+bool SvgOutputDev::upsideDown()
- {
- return gTrue;
- }
-
--GBool SvgOutputDev::useDrawChar()
-+bool SvgOutputDev::useDrawChar()
- {
- return gFalse;
- }
-
--GBool SvgOutputDev::interpretType3Chars()
-+bool SvgOutputDev::interpretType3Chars()
- {
- return gFalse;
- }
-@@ -480,7 +480,7 @@ void SvgOutputDev::drawString(GfxState * state, const GooString * s)
-
- void SvgOutputDev::drawImage(GfxState *state, Object *ref, Stream *str,
- int width, int height, GfxImageColorMap *colorMap,
-- GBool /*interpolate*/, int *maskColors, GBool inlineImg)
-+ bool /*interpolate*/, int *maskColors, bool inlineImg)
- {
- ImageStream * imgStr = new ImageStream(str, width, colorMap->getNumPixelComps(), colorMap->getBits());
- imgStr->reset();
-diff --git a/filters/karbon/pdf/SvgOutputDev.h b/filters/karbon/pdf/SvgOutputDev.h
-index 422027c..df2805c 100644
---- a/filters/karbon/pdf/SvgOutputDev.h
-+++ b/filters/karbon/pdf/SvgOutputDev.h
-@@ -44,11 +44,11 @@ public:
- explicit SvgOutputDev(const QString &fileName);
- virtual ~SvgOutputDev();
-
-- GBool isOk();
-+ bool isOk();
-
-- GBool upsideDown() override;
-- GBool useDrawChar() override;
-- GBool interpretType3Chars() override;
-+ bool upsideDown() override;
-+ bool useDrawChar() override;
-+ bool interpretType3Chars() override;
- void startPage(int pageNum, GfxState *state, XRef *xref) override;
- void endPage() override;
-
-@@ -63,7 +63,7 @@ public:
- // images
- void drawImage(GfxState *state, Object *ref, Stream *str,
- int width, int height, GfxImageColorMap *colorMap,
-- GBool interpolate, int *maskColors, GBool inlineImg) override;
-+ bool interpolate, int *maskColors, bool inlineImg) override;
-
- // styles
- void updateAll(GfxState *state) override;
---
-cgit v1.1
-
diff --git a/user/calligra/poppler4.patch b/user/calligra/poppler4.patch
deleted file mode 100644
index 9a13bcdec..000000000
--- a/user/calligra/poppler4.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From f099b8e143bbeb1de3c7e89f4764006c3de61ae4 Mon Sep 17 00:00:00 2001
-From: Antonio Rojas <arojas@archlinux.org>
-Date: Fri, 2 Nov 2018 21:23:13 +0100
-Subject: Fix build with poppler 0.71
-
-Port away from removed API
-
-Differential Revision: https://phabricator.kde.org/D16607
----
- filters/karbon/pdf/PdfImport.cpp | 6 +++---
- filters/karbon/pdf/SvgOutputDev.cpp | 10 +++++-----
- 2 files changed, 8 insertions(+), 8 deletions(-)
-
-diff --git a/filters/karbon/pdf/PdfImport.cpp b/filters/karbon/pdf/PdfImport.cpp
-index 48b08df..e910dae 100644
---- a/filters/karbon/pdf/PdfImport.cpp
-+++ b/filters/karbon/pdf/PdfImport.cpp
-@@ -88,9 +88,9 @@ KoFilter::ConversionStatus PdfImport::convert(const QByteArray& from, const QByt
- SvgOutputDev * dev = new SvgOutputDev(m_chain->outputFile());
- if (dev->isOk()) {
- int rotate = 0;
-- GBool useMediaBox = gTrue;
-- GBool crop = gFalse;
-- GBool printing = gFalse;
-+ bool useMediaBox = true;
-+ bool crop = false;
-+ bool printing = false;
- pdfDoc->displayPages(dev, firstPage, lastPage, hDPI, vDPI, rotate, useMediaBox, crop, printing);
- dev->dumpContent();
- }
-diff --git a/filters/karbon/pdf/SvgOutputDev.cpp b/filters/karbon/pdf/SvgOutputDev.cpp
-index 9063e69..80f01a5 100644
---- a/filters/karbon/pdf/SvgOutputDev.cpp
-+++ b/filters/karbon/pdf/SvgOutputDev.cpp
-@@ -39,7 +39,7 @@ class SvgOutputDev::Private
- {
- public:
- Private(const QString &fname)
-- : svgFile(fname), defs(0), body(0), state(gTrue)
-+ : svgFile(fname), defs(0), body(0), state(true)
- , brush(Qt::SolidPattern) {}
-
- ~Private() {
-@@ -62,7 +62,7 @@ SvgOutputDev::SvgOutputDev(const QString &fileName)
- : d(new Private(fileName))
- {
- if (! d->svgFile.open(QIODevice::WriteOnly)) {
-- d->state = gFalse;
-+ d->state = false;
- return;
- }
-
-@@ -82,17 +82,17 @@ bool SvgOutputDev::isOk()
-
- bool SvgOutputDev::upsideDown()
- {
-- return gTrue;
-+ return true;
- }
-
- bool SvgOutputDev::useDrawChar()
- {
-- return gFalse;
-+ return false;
- }
-
- bool SvgOutputDev::interpretType3Chars()
- {
-- return gFalse;
-+ return false;
- }
-
- void SvgOutputDev::startPage(int pageNum, GfxState *state, XRef */*xref*/)
---
-cgit v1.1
-
diff --git a/user/calligra/ridiculous-typo.patch b/user/calligra/ridiculous-typo.patch
new file mode 100644
index 000000000..9d81e899e
--- /dev/null
+++ b/user/calligra/ridiculous-typo.patch
@@ -0,0 +1,11 @@
+--- calligra-3.2.1/braindump/src/layouts/ColumnLayout.cpp.old 2020-05-14 06:51:30.000000000 +0000
++++ calligra-3.2.1/braindump/src/layouts/ColumnLayout.cpp 2020-07-30 00:37:08.634435315 +0000
+@@ -94,7 +94,7 @@
+ qDebug() << _shape << _shape->absolutePosition(KoFlake::TopLeftCorner).y() << " " << _shape->position().y();
+ }
+ qDebug() << "</moh>";
+- std:sort(m_shapes.begin(), m_shapes.end(), shapeIsLessThan);
++ std::sort(m_shapes.begin(), m_shapes.end(), shapeIsLessThan);
+ // Update position
+ qreal y = 0;
+ qDebug() << "<Updating>";
diff --git a/user/cantarell-fonts/APKBUILD b/user/cantarell-fonts/APKBUILD
index b5fec057f..1ec4938d1 100644
--- a/user/cantarell-fonts/APKBUILD
+++ b/user/cantarell-fonts/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=cantarell-fonts
-pkgver=0.111
-pkgrel=1
+pkgver=0.201
+pkgrel=0
pkgdesc="Humanist sans-serif typeface, designed for GNOME Shell"
url=" "
arch="noarch"
@@ -15,8 +15,7 @@ replaces="ttf-cantarell"
source="https://download.gnome.org/sources/cantarell-fonts/$pkgver/cantarell-fonts-$pkgver.tar.xz"
package() {
- cd "$builddir"/prebuilt
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF/ *.otf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF/ "$builddir"/prebuilt/*.otf
}
-sha512sums="638298a6381a3ede862d1b100fcfea943bebb5e1c0dc4f1597ab2f841e933b484436b139090a669c770c02483a24f2b92bbd12bce71d7a40eb4c325573e3df9e cantarell-fonts-0.111.tar.xz"
+sha512sums="c512244a1ed343b1b9fef3a630c1c678c6ef7f06efcda883af0dbab5478823f31c9bd5fc38b92ad1747704528c6e2589584ab94743f433957644d5386dabdc98 cantarell-fonts-0.201.tar.xz"
diff --git a/user/cantor/APKBUILD b/user/cantor/APKBUILD
index dbebd6089..b8be268b5 100644
--- a/user/cantor/APKBUILD
+++ b/user/cantor/APKBUILD
@@ -1,26 +1,29 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=cantor
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="KDE worksheet interface for popular mathematical applications"
url="https://edu.kde.org/cantor/"
arch="all"
options="!check" # Tests require X11.
license="GPL-2.0-only"
-depends="r"
+depends="qt5-qttools r shared-mime-info"
+depends_dev="libspectre-dev"
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev
qt5-qtxmlpatterns-dev karchive-dev kcompletion-dev kconfig-dev
kcoreaddons-dev kcrash-dev kdoctools-dev ki18n-dev kiconthemes-dev
kio-dev knewstuff-dev kparts-dev kpty-dev ktexteditor-dev
- ktextwidgets-dev kxmlgui-dev libspectre-dev
-
+ ktextwidgets-dev kxmlgui-dev $depends_dev poppler-dev poppler-qt5-dev
+ qt5-qttools-dev
+
analitza-dev gfortran libqalculate-dev python3-dev r r-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/cantor-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/cantor-$pkgver.tar.xz
+ rip-out-webengine.patch
+ "
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -31,18 +34,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="196d47adef9cb35c1816efa0a88dcf904ac7b91176bde779f84c40315732bbc1196c21dff4a6c363cbf6fc4785aaa512590638a965c79c50574b264a4d7beccf cantor-18.12.3.tar.xz"
+sha512sums="a452cb1e91c5b75587d520c139109a81c6b78bd17060f7c97ba1ae4fe444c31f3dae34a8a31597345c1b275b508cac349ef6af4b2bdd09cca37da9d8c7400ec5 cantor-22.04.2.tar.xz
+d29103817ef512f34e84c6dda26a1e675a1e57d9b9392f309f583e41384569f041a662af207cf7bfde428a379db189c05c0b1f6321e8fa7804bfad3c2ecd4189 rip-out-webengine.patch"
diff --git a/user/cantor/rip-out-webengine.patch b/user/cantor/rip-out-webengine.patch
new file mode 100644
index 000000000..15bda36b1
--- /dev/null
+++ b/user/cantor/rip-out-webengine.patch
@@ -0,0 +1,56 @@
+This is temporary until I have time to write a proper patch to make the
+WebEngine dependency truly optional.
+
+Upstream-URL: https://bugs.kde.org/show_bug.cgi?id=455108
+BUG: 455108
+
+--- cantor-22.04.2/CMakeLists.txt.old 2022-06-06 22:43:15.000000000 -0500
++++ cantor-22.04.2/CMakeLists.txt 2022-06-10 00:48:15.475027350 -0500
+@@ -37,9 +37,7 @@
+ Xml
+ XmlPatterns
+ Test
+- Help
+- WebEngine
+- WebEngineWidgets)
++ Help)
+
+ find_package(KF5 ${KF5_MIN_VERSION} REQUIRED
+ Config
+--- cantor-22.04.2/src/CMakeLists.txt.old 2022-06-06 22:43:15.000000000 -0500
++++ cantor-22.04.2/src/CMakeLists.txt 2022-06-10 00:47:38.599064429 -0500
+@@ -39,7 +39,7 @@
+ add_executable(cantor ${cantor_SRCS})
+
+ target_link_libraries(cantor KF5::Parts KF5::NewStuff KF5::ConfigCore KF5::CoreAddons KF5::ConfigGui
+- KF5::Crash KF5::XmlGui Qt5::WebEngine cantorlibs cantor_config)
++ KF5::Crash KF5::XmlGui cantorlibs cantor_config)
+
+ ########### install files ###############
+ install(TARGETS cantor ${KDE_INSTALL_TARGETS_DEFAULT_ARGS} )
+--- cantor-22.04.2/src/panelplugins/CMakeLists.txt.old 2022-06-06 22:43:15.000000000 -0500
++++ cantor-22.04.2/src/panelplugins/CMakeLists.txt 2022-06-10 00:46:15.718138007 -0500
+@@ -13,4 +13,3 @@
+ add_subdirectory(variablemgr)
+ add_subdirectory(filebrowserpanel)
+ add_subdirectory(tocpanel)
+-add_subdirectory(documentationpanel)
+--- cantor-22.04.2/src/main.cpp.old 2022-06-06 22:43:15.000000000 -0500
++++ cantor-22.04.2/src/main.cpp 2022-06-10 00:46:37.755725391 -0500
+@@ -17,16 +17,10 @@
+ #include <QFileInfo>
+ #include <QDir>
+ #include <QDebug>
+-#include <QtWebEngine>
+
+
+ int main(int argc, char **argv)
+ {
+- QtWebEngine::initialize();
+- // Register custom scheme handler for qthelp:// scheme
+- QWebEngineUrlScheme qthelp("qthelp");
+- QWebEngineUrlScheme::registerScheme(qthelp);
+-
+ QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
+ QApplication app(argc, argv);
+
diff --git a/user/cardo/APKBUILD b/user/cardo/APKBUILD
index 7af7e9f04..9f057c246 100644
--- a/user/cardo/APKBUILD
+++ b/user/cardo/APKBUILD
@@ -15,8 +15,7 @@ source="http://scholarsfonts.net/cardo104.zip"
builddir="$srcdir"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ *.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ "$srcdir"/*.ttf
}
sha512sums="559d91528dfebba1c0668ab0116e7cc8d481c88727cf01848978d920d625ee32c893d6abff3170e5365e136fa6f603c4f34390e17383409bc3db01611c42eefb cardo104.zip"
diff --git a/user/catcodec/APKBUILD b/user/catcodec/APKBUILD
index 9a18b7b29..415540bdc 100644
--- a/user/catcodec/APKBUILD
+++ b/user/catcodec/APKBUILD
@@ -4,22 +4,20 @@ pkgname=catcodec
pkgver=1.0.5
pkgrel=0
pkgdesc="Encode and decode sound sample catalogues for OpenTTD"
-url="https://www.openttd.org/en/"
+url="https://www.openttd.org/"
arch="all"
options="!check" # No test suite.
license="GPL-2.0-only"
depends=""
makedepends=""
subpackages="$pkgname-doc"
-source="https://binaries.openttd.org/extra/catcodec/1.0.5/catcodec-$pkgver-source.tar.xz"
+source="https://cdn.openttd.org/$pkgname-releases/$pkgver/$pkgname-$pkgver-source.tar.xz"
build() {
- cd "$builddir"
make
}
package() {
- cd "$builddir"
make prefix=/usr DESTDIR="$pkgdir" install
}
diff --git a/user/catdoc/APKBUILD b/user/catdoc/APKBUILD
index 2b6bc7d3d..e5fdbb52d 100644
--- a/user/catdoc/APKBUILD
+++ b/user/catdoc/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=catdoc
pkgver=0.95
-pkgrel=1
+pkgrel=2
pkgdesc="Read information and data from Microsoft Office documents"
url="http://www.wagner.pp.ru/~vitus/software/catdoc/"
arch="all"
@@ -11,10 +11,14 @@ license="GPL-2.0-only"
depends=""
makedepends=""
subpackages="$pkgname-doc"
-source="http://ftp.wagner.pp.ru/pub/catdoc/catdoc-$pkgver.tar.gz"
+source="http://ftp.wagner.pp.ru/pub/catdoc/catdoc-$pkgver.tar.gz
+ CVE-2017-11110.patch"
+
+# secfixes:
+# 0.95-r2:
+# - CVE-2017-11110
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,8 +31,8 @@ build() {
}
package() {
- cd "$builddir"
make -j1 install
}
-sha512sums="dd6bded4b6b70749c007256b182b063ff266f86d53024d8582001678821e8096c5b980bc8f43015d9c82bbe022d71d4ba5fe68aff31b2ff6db3688595e651b2c catdoc-0.95.tar.gz"
+sha512sums="dd6bded4b6b70749c007256b182b063ff266f86d53024d8582001678821e8096c5b980bc8f43015d9c82bbe022d71d4ba5fe68aff31b2ff6db3688595e651b2c catdoc-0.95.tar.gz
+15d1da9fe095c6e4a990faa22ee67952d91494057a1fd6334f2eb671898156c95245b54f229549a5662d13dec6ecc4e607583e865fb9775fea8d163755cf04b0 CVE-2017-11110.patch"
diff --git a/user/catdoc/CVE-2017-11110.patch b/user/catdoc/CVE-2017-11110.patch
new file mode 100644
index 000000000..d36d5d63c
--- /dev/null
+++ b/user/catdoc/CVE-2017-11110.patch
@@ -0,0 +1,32 @@
+Description: CVE-2017-11110: Heap buffer overflow in ole_init
+Origin: vendor, https://build.opensuse.org/package/view_file/openSUSE:Maintenance:6985/catdoc.openSUSE_Leap_42.2_Update/CVE-2017-11110.patch?rev=d437c3be72c2e5a3516b75f4e9de6b35
+Bug-Debian: https://bugs.debian.org/867717
+Bug-SuSE: https://bugzilla.novell.com/show_bug.cgi?id=1047877
+Forwarded: no
+Author: Andreas Stieger <astieger@suse.com>
+Reviewed-by: Salvatore Bonaccorso <carnil@debian.org>
+Last-Update: 2017-07-20
+
+--- a/src/ole.c
++++ b/src/ole.c
+@@ -106,6 +106,11 @@ FILE* ole_init(FILE *f, void *buffer, si
+ return NULL;
+ }
+ sectorSize = 1<<getshort(oleBuf,0x1e);
++ /* CVE-2017-11110 */
++ if (sectorSize < 4) {
++ fprintf(stderr, "sectorSize < 4 not supported\n");
++ return NULL;
++ }
+ shortSectorSize=1<<getshort(oleBuf,0x20);
+
+ /* Read BBD into memory */
+@@ -147,7 +152,7 @@ FILE* ole_init(FILE *f, void *buffer, si
+ }
+
+ fseek(newfile, 512+mblock*sectorSize, SEEK_SET);
+- if(fread(tmpBuf+MSAT_ORIG_SIZE+(sectorSize-4)*i,
++ if(fread(tmpBuf+MSAT_ORIG_SIZE+(sectorSize-4)*i, /* >=4 for CVE-2017-11110 */
+ 1, sectorSize, newfile) != sectorSize) {
+ fprintf(stderr, "Error read MSAT!\n");
+ ole_finish();
diff --git a/user/catfish/APKBUILD b/user/catfish/APKBUILD
index efcbacd72..15e4d191b 100644
--- a/user/catfish/APKBUILD
+++ b/user/catfish/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=catfish
-pkgver=1.4.7
+pkgver=4.18.0
pkgrel=0
pkgdesc="File-searching application for the XFCE desktop environment"
url="https://xfce.org"
@@ -10,21 +10,18 @@ license="GPL-2.0-only"
depends="python3 py3-pygobject py3-pexpect"
makedepends="py3-distutils-extra intltool"
subpackages="$pkgname-doc $pkgname-lang"
-source="http://archive.xfce.org/src/apps/catfish/1.4/catfish-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/apps/catfish/${pkgver%.*}/catfish-$pkgver.tar.bz2"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py check
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="cafa8eaaa40522f50111b3bb9c09a116ebad827532b0cfc88bc643fb2e2d89edee53057fbbed23719f4091ca384d7ea025633e571e160d7dfced008f788a3ffd catfish-1.4.7.tar.bz2"
+sha512sums="57a3cc5043281bd9527e4faa6a3afcba2e8948fb6dc9e8d93d26ceb0358a84850b3e892105f81b4f2a30bb2964d65b2083fd07b55f145f3ae6ea653acd098539 catfish-4.18.0.tar.bz2"
diff --git a/user/cbindgen/APKBUILD b/user/cbindgen/APKBUILD
new file mode 100644
index 000000000..e2ef30812
--- /dev/null
+++ b/user/cbindgen/APKBUILD
@@ -0,0 +1,162 @@
+# Contributor: Leo <thinkabit.ukim@gmail.com>
+# Contributor: Gentoo Rust Maintainers <rust@gentoo.org>
+# Contributor: Samuel Holland <samuel@sholland.org>
+# Contributor: Molly Miller <adelie@m-squa.red>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=cbindgen
+pkgver=0.26.0
+pkgrel=0
+pkgdesc="Tool to generate C bindings from Rust code"
+url="https://github.com/eqrion/cbindgen"
+arch="all"
+license="MPL-2.0"
+depends=""
+makedepends="cargo"
+checkdepends="py3-cython"
+source=""
+
+# dependencies taken from Cargo.lock
+cargo_deps="$pkgname-$pkgver
+atty-0.2.14
+autocfg-1.1.0
+bitflags-1.3.2
+cfg-if-1.0.0
+clap-3.2.25
+clap_lex-0.2.4
+fastrand-1.9.0
+hashbrown-0.12.3
+heck-0.4.1
+hermit-abi-0.1.19
+indexmap-1.9.3
+instant-0.1.12
+itoa-1.0.6
+lazy_static-1.4.0
+libc-0.2.144
+lock_api-0.4.9
+log-0.4.17
+os_str_bytes-6.5.0
+parking_lot-0.11.2
+parking_lot_core-0.8.6
+proc-macro2-1.0.66
+quote-1.0.27
+redox_syscall-0.2.16
+remove_dir_all-0.5.3
+ryu-1.0.13
+scopeguard-1.1.0
+serde-1.0.163
+serde_derive-1.0.163
+serde_json-1.0.96
+serial_test-0.5.1
+serial_test_derive-0.5.1
+smallvec-1.10.0
+strsim-0.10.0
+syn-1.0.109
+syn-2.0.16
+tempfile-3.3.0
+termcolor-1.2.0
+textwrap-0.16.0
+toml-0.5.11
+unicode-ident-1.0.8
+winapi-0.3.9
+winapi-i686-pc-windows-gnu-0.4.0
+winapi-util-0.1.5
+winapi-x86_64-pc-windows-gnu-0.4.0
+"
+
+source="$source $(echo $cargo_deps | sed -E 's#([[:graph:]]+)-([0-9.]+(-(alpha|beta|rc)[0-9.]+)?)#&.tar.gz::https://crates.io/api/v1/crates/\1/\2/download#g')
+ ppc-libc-hugetlb.patch
+ "
+
+prepare() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ export CARGO_VENDOR="$CARGO_HOME/adelie"
+
+ (builddir=$srcdir; default_prepare)
+
+ mkdir -p "$CARGO_VENDOR"
+ cat <<- EOF > "$CARGO_HOME/config"
+ [source.adelie]
+ directory = "${CARGO_VENDOR}"
+
+ [source.crates-io]
+ replace-with = "adelie"
+ local-registry = "/nonexistant"
+ EOF
+
+ for _dep in $cargo_deps; do
+ ln -s "$srcdir/$_dep" "$CARGO_VENDOR/$_dep"
+ _sum=$(sha256sum "$srcdir/$_dep.tar.gz" | cut -d' ' -f1)
+ cat <<- EOF > "$CARGO_VENDOR/$_dep/.cargo-checksum.json"
+ {
+ "package":"$_sum",
+ "files":{}
+ }
+ EOF
+ done
+}
+
+build() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ cargo build -j $JOBS --release
+}
+
+check() {
+ export CARGO_HOME="$srcdir/cargo-home"
+
+# # Failing tests
+# rm -rf tests/rust/expand*
+ cargo test -j $JOBS --release
+}
+
+package() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ cargo install --no-track --path . --root="$pkgdir"/usr
+}
+
+
+sha512sums="2de81f46c9c68c985241a349f13125876667d1460d3658ead8c4ee9788cd139c30dbc08bebddc172cf0bd4644f3f17c02cf66f2a3ef706c52366fdaf0f9d8059 cbindgen-0.26.0.tar.gz
+d7b6c4b9a0f898d91ddbc41a5ee45bbf45d1d269508c8cc87ee3e3990500e41e0ec387afb1f3bc7db55bedac396dd86c6509f4bf9e5148d809c3802edcc5e1d9 atty-0.2.14.tar.gz
+df972c09abbdc0b6cb6bb55b1e29c7fed706ece38a62613d9e275bac46a19574a7f96f0152cccb0239efea04ee90083a146b58b15307696c4c81878cd12de28f autocfg-1.1.0.tar.gz
+3c698f757b5cc62f815f9a1cce365c3d2dd88e4db71f331dff8bba86c2865f755b81cb4c9bfc59bd86b7643b0943f9e09a7c4f8ad75eb2ab0e714803d0129f62 bitflags-1.3.2.tar.gz
+0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff cfg-if-1.0.0.tar.gz
+557c8932175d7ecd077b32b68904924e52dd46d04fd04ba36b3a9dfd7ab1dbe8c2128fecfd75d0388b21fca4aee55a941794181cc2910a4d4eb3c54e9c7e73ea clap-3.2.25.tar.gz
+6c05e5fd850befd45be9005af7252385f2304aa28a107413bbe329d97aea835f7acfd0bd169c99f69f466ab93d6e1c35d73a4e48343457a06fe2d6be5bedde0f clap_lex-0.2.4.tar.gz
+321567b5fad8552c0efc4393b1e77d1bce288b0a88c475d432f79e91b3457ee6eb5db9e4d65ac6381b9990c9916f4651b6a76250df44d51ea3e25bd8184bdc52 fastrand-1.9.0.tar.gz
+b3700fcd659a21a6b9b3777c18b37a83bf25542b4e8f2b963779a122f5d22e1742c064cfc03e649583e7dd5c6e90ca8407f8c51a0e8755f6a108682853022f76 hashbrown-0.12.3.tar.gz
+8c80e959d2f10a2893f9a71994720f90747742bb5b61fc0a539eed3ea5679b140c48fd7f7690d7122cd6af5f7f20a19d412e3569fe741c6d31f6b2ce1e0b80e8 heck-0.4.1.tar.gz
+1c877fcd562b15d2de9c151fd6c5f3ea4bf48abcb799e6139a180ffad5d64b632f0000d5707bbd92ff23a0e5f349157b9e0f5be8b50f03680b0fa47315dbb78a hermit-abi-0.1.19.tar.gz
+2aa8069eb07a814c8fa3e11296c9f032ef60963520d7786ad20cca5cb7e73b8f76d97722a994d65295bb713020aadce5008cd3df5e99d8bd968ef1979f910a37 indexmap-1.9.3.tar.gz
+fae494c00111c51c840f9dd6a10febe403e27ebb933dd16633a213e9c20f2bc11adeb431c71f8a6713bf88f270a010941e15d83df294e658791934f83a5d2407 instant-0.1.12.tar.gz
+e1fb82fe16e1248141d48de9e05e7abed0c6fef58f2ff8b77b52aca5f16f3600c46707ff4c7a0f0307047610f29775bda74948d6d1efceb74b37cdd22e1fcf31 itoa-1.0.6.tar.gz
+e124c0521ec7c950f3c4a066821918da7a9c6e711115d98009ae7c351928fdddead852e7596fea5937a9c30e4e4ce8eee7099b20248b5d6e3b2494b6a6d88cb8 lazy_static-1.4.0.tar.gz
+576da68e3845a7149f64bee425529ffec4bbb8df0272790182e49c8bad5b9744de21ffb5c1206753b57b7fe45af02c6c429e16522b72a77e5262482d64df5692 libc-0.2.144.tar.gz
+9215381d9bb6b80d217c73a900db43df043b3e939b5bd7a292a02e9ab911cf0eacd8f883d35bdf72b3a0e78df8f1bc3e843ca4c775294c7a7a03091dc1a74990 lock_api-0.4.9.tar.gz
+2477d88db42b1d92c30708d88823212e236f613b3465e85eb425f83f8d16fadfaf0352f06c2999a1852102edd2f6ffb10ecb539d8a3b6c48f552a25622ccffa2 log-0.4.17.tar.gz
+cde7779ba24304256cc57de78208af4d26bc91dae7fbb9c85e3f67c3e35cb6268caf3fc9eef530a8d3cbdc951ec3534223f3559d2a013561912231ebdb1801b2 os_str_bytes-6.5.0.tar.gz
+526b176363dffa59501c18324bb723a3846ef5b0ff9bf1d890e40ad10e7023284f7c8012eda87520eaa94515ee828d9ef52692a9ed590a55e176383d6d472f9e parking_lot-0.11.2.tar.gz
+906241f8e2d71784d572fb78978c9550b19af9c4e32fe3b2da751287806d0faeba61f5bd36f7aab026970b2bffaaa1f62ddc10c64dc348eae61bf7b51297ef80 parking_lot_core-0.8.6.tar.gz
+85f5a762f9411142e5ac28144bd380f07f0633ed2e44d8a2545be9fb8f42abaca6b5d45631b4be83b8e8b9beca7438bc52f25615c3a410a3a1249474b1aca407 proc-macro2-1.0.66.tar.gz
+5fb5802aa667c60d1a721766081b01bfd6cd929db7a5d71cb74627c2325f7108740752e514db73fb3612c163840e60ef2d4bde31c41978f3d77605418bdf2b4a quote-1.0.27.tar.gz
+63b5d876baaf99f5cf737679bc6ac7a9e3d8a41aa93f5c59416ce7e3841e2513bff678773553cfe62fb452707f82acc384ea63aec932a31bf94679cd1caddd27 redox_syscall-0.2.16.tar.gz
+50417d6d8a33912193a1ed37eb72b47431b12ae65d2780cdb7080c3d141e63819da13751c3fb737685cea322f70b36d413389c3dc01aa12b4dce615aefed0e2c remove_dir_all-0.5.3.tar.gz
+25f60216d91e68cb47695ce4e966fae674d5b3e4b0cf33e740248c1605fdcf0c963acd278a485c5b4bb0a1c1144002e73173592222af4989df7a4ba402508c13 ryu-1.0.13.tar.gz
+368fa5726df8f42b599993681579a9ffd0196480ee3cd0f9f671e8493f3bedd1e1779bdf2beb329e77e0005fa09b816e3385f309490c0f2781568db275d4d17d scopeguard-1.1.0.tar.gz
+752738ef5f67f1b4435bdd4e76e740ba192bd93e83cac55fd667809af26ceaf02db7083aaf7b2074644b38964021af206000b6130199e7994c12c9c57cd31a34 serde-1.0.163.tar.gz
+744c4235330781c8d9c6ab4f49f6ddd11fcd70b97c97fcbf1434ccac02ba7d29eacfed21ee8e005f5541dd8ab4a34023e95d85231f11c5f4d6e24fcf806f7283 serde_derive-1.0.163.tar.gz
+39779419900e1d395d81e70cff0e7a688564a66124b08e74da54ac30f389c912707f4bf5e29afab6fa106faf4bf4e0b841f42fef125cf7bec185482ff6bbba0e serde_json-1.0.96.tar.gz
+e1a0f7a24981698eaa6bcce8f951863f76e8a2750aff3191104d092a06021c39d4eb2e9b74e6690b0dba0d674a216ea170efe0a5367d22bdef72c2006f644a4e serial_test-0.5.1.tar.gz
+e3f4b3c2eed1b284dbff7447c2f912343f9b95cbd88f3387c0136ca42698b38a607c752277ee4590ded9f73f475325d2652ba67ba029ddd54711d9070ac5f43e serial_test_derive-0.5.1.tar.gz
+a09110184582dcc01d7a0d3fa8f74c17bf726935126d3654667b8e9c4bc43ad16ccfd8fa94feae7d9b31913aa7ee030fe5936e4b44a36302b6ce5fe37372a7ae smallvec-1.10.0.tar.gz
+78b318532addfcf5c1ccc1e14539e258aab9d3cd893cc45d82342549bde838c177d90f13c560671f8f32929af47d0b467db35e6876bd7697d8b3f9e055aeeac1 strsim-0.10.0.tar.gz
+12816b9e8cf984024b2fbce9f0ae14cf94d4d2c06f08cc54fb793ce78770bb4cc1288eb7df0ba5e8e937756e1e8e295c53fe07a0c5dde1ea8ddba03b6203b37d syn-1.0.109.tar.gz
+75d6728614a39d7f676536fc345be6777e8dba6198f031e576ecd199e503347c4069fc7294c4da3e829cb919c08347513447dc86fbf0c545df2d347311621da3 syn-2.0.16.tar.gz
+ba6faafb2dd56d694efe424752099a2efb50316afc0a4db9fdb7620ae3f1a31dfbb2a7b41724878cb977fa11f7568a406bd3b6a4f7cfc0b88b86b2cc616b953e tempfile-3.3.0.tar.gz
+cf1896523353390b2f90b2a8bf30f47da5fc7c2daa635bd0cd8059bdc73feb243e46e4279562fe45d5726f2840833b1e967c7de19ffc0c853592d9f86c0c1be7 termcolor-1.2.0.tar.gz
+97ae8acece5663e1a6b08b827179e96d5ad0ee67d635888cc3d83454b52cf48fce97eb0eba374ba4747834099c74f43d66d9fec868e84be45369a42c1aaec2c3 textwrap-0.16.0.tar.gz
+eddb82aeb8fdeb5436579292c6f7a64a90a2c7bb54070beb437bc7890b99795d0505faa8d6451a99e8bcf440f78db8a1b273a697c8ad44275cc4163a9ee49317 toml-0.5.11.tar.gz
+8104999c6fff002c5aa109e2ca75ce3eaf772155d31dff87bcf39e3eb3da58b6cb543717be7b55acdb0cb1a4bd2a3d2e9c9974f7f75b6528668f5ef665ef4088 unicode-ident-1.0.8.tar.gz
+ff8b7b78065f3d8999ec03c725a0460ebc059771bf071c7a3df3f0ecd733edf3b0a2450024d4e24e1aedddaecd9038ce1376c0d8bbf45132068cf45cf4a53a97 winapi-0.3.9.tar.gz
+a672ccefd0730a8166fef1d4e39f9034d9ae426a3f5e28d1f4169fa5c5790767693f281d890e7804773b34acdb0ae1febac33cde8c50c0044a5a6152c7209ec2 winapi-i686-pc-windows-gnu-0.4.0.tar.gz
+7baeb661f397c4693dfa001fdc774b323c51a7c55caad40f2de5112a1cefd1d6151e3df41fa4ee193460a5905917c83d2b1de5fa10b4bd014ad96690af95c0fd winapi-util-0.1.5.tar.gz
+4a654af6a5d649dc87e00497245096b35a2894ae66f155cb62389902c3b93ddcc5cf7d0d8b9dd97b291d2d80bc686af2298e80abef6ac69883f4a54e79712513 winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz
+299fbec38c0874bd53987ee8f8d793ac2f7b7695af22fb85b01dd0f3a20190d6920cc2deacc2a9da35bd58fd8eaab177aaa3460ef9e3f0897cd80d0c180e3ce0 ppc-libc-hugetlb.patch"
diff --git a/user/cbindgen/ppc-libc-hugetlb.patch b/user/cbindgen/ppc-libc-hugetlb.patch
new file mode 100644
index 000000000..8a1bfe78d
--- /dev/null
+++ b/user/cbindgen/ppc-libc-hugetlb.patch
@@ -0,0 +1,12 @@
+diff -ur a/src/unix/linux_like/linux/musl/b32/powerpc.rs b/src/unix/linux_like/linux/musl/b32/powerpc.rs
+--- a/libc-0.2.144/src/unix/linux_like/linux/musl/b32/powerpc.rs 2024-09-02 00:25:08.560000000 +0000
++++ b/libc-0.2.144/src/unix/linux_like/linux/musl/b32/powerpc.rs 2024-09-02 00:25:41.080000000 +0000
+@@ -377,8 +377,6 @@
+
+ pub const EXTPROC: ::tcflag_t = 0x10000000;
+
+-pub const MAP_HUGETLB: ::c_int = 0x040000;
+-
+ pub const F_GETLK: ::c_int = 12;
+ pub const F_GETOWN: ::c_int = 9;
+ pub const F_SETLK: ::c_int = 13;
diff --git a/user/cdparanoia/APKBUILD b/user/cdparanoia/APKBUILD
index 28a37e944..f8f567ba5 100644
--- a/user/cdparanoia/APKBUILD
+++ b/user/cdparanoia/APKBUILD
@@ -8,6 +8,7 @@ url="https://xiph.org/paranoia"
arch="all"
options="!check" # Build system has test suite commented out.
license="LGPL-2.0+"
+depends=""
makedepends="libtool autoconf automake linux-headers"
subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
source="http://downloads.xiph.org/releases/cdparanoia/$pkgname-III-$pkgver.src.tgz
@@ -18,7 +19,6 @@ builddir="$srcdir/cdparanoia-III-$pkgver"
prepare() {
default_prepare
- cd "$builddir"
mv configure.guess config.guess
mv configure.sub config.sub
update_config_sub
@@ -28,7 +28,6 @@ prepare() {
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -40,7 +39,6 @@ build() {
}
package() {
- cd "$builddir"
make prefix="$pkgdir"/usr MANDIR="$pkgdir"/usr/share/man install
}
diff --git a/user/certbot/APKBUILD b/user/certbot/APKBUILD
index 1ff38841e..20e59ff00 100644
--- a/user/certbot/APKBUILD
+++ b/user/certbot/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: zlg <zlg+adelie@zlg.space>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=certbot
-pkgver=0.32.0
+pkgver=1.0.0
pkgrel=0
pkgdesc="The EFF's reference ACME client"
url="https://certbot.eff.org/"
@@ -17,28 +17,26 @@ _depends_acme="python3 py3-cryptography py3-josepy py3-mock py3-openssl py3-requ
makedepends="python3-dev $_depends_acme"
subpackages="py3-acme:acme"
source="certbot-$pkgver.tar.gz::https://github.com/certbot/certbot/archive/v$pkgver.tar.gz"
+builddir="$srcdir"/$pkgname-$pkgver/$pkgname
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py check
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
acme() {
pkgdesc="ACME protocol implementation for Python"
depends="$_depends_acme"
- cd "$builddir"/acme
+ cd "$builddir"/../acme
python3 setup.py build
python3 setup.py install --prefix=/usr --root="$subpkgdir"
}
-sha512sums="fa61e975d2ce09efa3570118f220cd9f9d2fc8d5ab408feb4c4e50bfa795cb28be6c7a78497fb10bc91e577e908126988197ae5d016be4823c5c4ddb68cbf5a4 certbot-0.32.0.tar.gz"
+sha512sums="649ddd3d9305e166ef36de4e4e48b1171d5f369d9d60c026ab37a03e7b221cd815e93e69460662e6436b56cec076005582457e9d45499114306ad808a2497912 certbot-1.0.0.tar.gz"
diff --git a/user/cervisia/APKBUILD b/user/cervisia/APKBUILD
new file mode 100644
index 000000000..388fbc761
--- /dev/null
+++ b/user/cervisia/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=cervisia
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="CVS Frontend"
+url="https://kde.org/applications/development/org.kde.cervisia"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="qt5-qtbase-dev cmake extra-cmake-modules kdoctools-dev kdesu-dev
+ kiconthemes-dev kinit-dev kitemviews-dev knotifications-dev kparts-dev
+ kwidgetsaddons-dev
+
+ kauth-dev kcodecs-dev kcompletion-dev kconfigwidgets-dev kcoreaddons-dev
+ kdbusaddons-dev kio-dev kjobwidgets-dev kpty-dev kservice-dev solid-dev
+ sonnet-dev kwindowsystem-dev kxmlgui-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/cervisia-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="47bf2e5273e6271eb34637275bc76c899da159c960a6b037440e5e984708942ef74276f82bec4b43224c9a5ce5ddabec07bc0e5183180c849bc9ed1f0c9c2d68 cervisia-22.04.2.tar.xz"
diff --git a/user/cgit/APKBUILD b/user/cgit/APKBUILD
index 70be3a769..bc910040e 100644
--- a/user/cgit/APKBUILD
+++ b/user/cgit/APKBUILD
@@ -1,14 +1,16 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=cgit
-pkgver=1.2.1
-pkgrel=1
-_gitver=2.18.0
+pkgver=1.2.3
+pkgrel=0
+_gitver=2.25.1
pkgdesc="A fast Web interface for Git"
url="https://git.zx2c4.com/cgit/"
arch="all"
license="GPL-2.0-only"
+depends=""
makedepends="openssl-dev zlib-dev lua5.3-libs lua5.3-dev asciidoctor gettext-tiny-dev"
subpackages="$pkgname-doc"
source="http://git.zx2c4.com/$pkgname/snapshot/$pkgname-$pkgver.tar.xz
@@ -26,10 +28,8 @@ _makeopts="NO_CURL=1
prefix=/usr"
prepare() {
- cd "$builddir"
-
# check that upstream git ver corresponds with ours
- local _ver=$(awk -F'[ \t]*=[ \t]*' '/^GIT_VER/ { print $2 }' Makefile)
+ local _ver="$(awk -F'[ \t]*=[ \t]*' '/^GIT_VER/ { print $2 }' Makefile)"
if [ "$_ver" != "$_gitver" ]; then
error "Please set _gitver in APKBUILD to $_ver"
return 1
@@ -42,23 +42,20 @@ prepare() {
}
build() {
- cd "$builddir"
sed -i -e 's:a2x -f:asciidoctor -b:' Makefile
make $_makeopts all doc-man
}
check() {
- cd "$builddir"
make $_makeopts test
}
package() {
- cd "$builddir"
make $_makeopts DESTDIR="$pkgdir" \
CGIT_SCRIPT_PATH=/usr/share/webapps/cgit \
install install-man
ln -s cgit.cgi "$pkgdir"/usr/share/webapps/cgit/cgit
}
-sha512sums="c7380df9afbc3735ef9e4f196f4f5bbd26cf52e473fa6f435e7d0c00dc295cc8de6bee6bfb1857144025c8591d41a6a74efb1af551e8610848d90ac40fcfab36 cgit-1.2.1.tar.xz
-db19363c9c2042248322d49874a27c0614acfb912183725e5d4f0331d6b44cef66a9a7da6a49bd4a17e5d86d30c5fed6bef7527f386494184595a433c4060e46 git-2.18.0.tar.xz"
+sha512sums="58f9bb644b07be49dc51f3ef30a3d0e53699cede3c06b1d6920f3874fe846c83dd2589632aa84357b70ea2d60272448409aa1b892f405d14dd6745f5559b4504 cgit-1.2.3.tar.xz
+15241143acfd8542d85d2709ac3c80dbd6e8d5234438f70c4f33cc71a2bdec3e32938df7f6351e2746d570b021d3bd0b70474ea4beec0c51d1fc45f9c287b344 git-2.25.1.tar.xz"
diff --git a/user/cgmanager/APKBUILD b/user/cgmanager/APKBUILD
index 3074679fd..f4cad0309 100644
--- a/user/cgmanager/APKBUILD
+++ b/user/cgmanager/APKBUILD
@@ -13,7 +13,6 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-openrc"
source="https://linuxcontainers.org/downloads/cgmanager/cgmanager-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,12 +25,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/checkbashisms/APKBUILD b/user/checkbashisms/APKBUILD
index 09f3359c8..594e91897 100644
--- a/user/checkbashisms/APKBUILD
+++ b/user/checkbashisms/APKBUILD
@@ -1,17 +1,18 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=checkbashisms
-pkgver=2.18.6
+pkgver=2.20.4
pkgrel=0
pkgdesc="Check shell scripts for POSIX compliance"
-url="https://tracker.debian.org/pkg/devscripts"
+url="https://salsa.debian.org/debian/devscripts"
arch="noarch"
license="GPL-2.0+"
-makedepends=""
depends="perl"
checkdepends="shunit2"
+makedepends=""
subpackages="$pkgname-doc $pkgname-bash-completion:bashcomp:noarch"
-source="https://cdn-aws.deb.debian.org/debian/pool/main/d/devscripts/devscripts_$pkgver.tar.xz"
+# find timestamp here: https://snapshot.debian.org/package/devscripts/
+source="https://snapshot.debian.org/archive/debian/20200628T204444Z/pool/main/d/devscripts/devscripts_${pkgver}.tar.xz"
builddir="$srcdir/devscripts-$pkgver"
prepare() {
@@ -20,12 +21,10 @@ prepare() {
}
check() {
- cd "$builddir"
./test/test_checkbashisms
}
package() {
- cd "$builddir"
install -Dm755 "scripts/$pkgname.pl" "$pkgdir/usr/bin/$pkgname"
install -Dm644 "scripts/$pkgname.1" "$pkgdir/usr/share/man/man1/$pkgname.1"
}
@@ -35,9 +34,8 @@ bashcomp() {
depends=""
install_if="$pkgname=$pkgver-r$pkgrel bash-completion"
- cd "$builddir"
- install -Dm644 "scripts/$pkgname.bash_completion" \
+ install -Dm644 "$builddir/scripts/$pkgname.bash_completion" \
"$subpkgdir/usr/share/bash-completion/completions/$pkgname"
}
-sha512sums="6bbd5ab2ac522bf4201cf57cc481d3885dd26b0a57338812b5a7ae10ca4575a2942b84b6bd05934898551eae7263ed28f0f7d8d295d055aa5c80111da1531014 devscripts_2.18.6.tar.xz"
+sha512sums="49e9ae38ca3682f399a17f2108a7ee15198dc955d8c7c4c1b043456c19cb35b47b6116de9a2cfaccbdd7560e79426ca0953674e5a89ac226d21af2c1cf847e5c devscripts_2.20.4.tar.xz"
diff --git a/user/chelf/APKBUILD b/user/chelf/APKBUILD
deleted file mode 100644
index 6e7aff4c0..000000000
--- a/user/chelf/APKBUILD
+++ /dev/null
@@ -1,26 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=chelf
-pkgver=0.2.2
-pkgrel=0
-pkgdesc="Display or change the stack size of an ELF binary"
-url=" "
-arch="all"
-options="!check" # No test suite.
-license="BSD-2-Clause"
-depends=""
-makedepends=""
-subpackages=""
-source="$pkgname-$pkgver.tar.xz::https://distfiles.adelielinux.org/source/$pkgname-$pkgver.txz"
-
-build() {
- cd "$builddir"
- make
-}
-
-package() {
- cd "$builddir"
- install -D -m755 chelf "$pkgdir"/usr/bin/chelf
-}
-
-sha512sums="bf29f0f526ca1977e0d0743901f6afeb23b2dd78b60618ea65201ea95000832854250f44de6e7625b6d546cace4638be094989cdb96b4e842285ef85718c0082 chelf-0.2.2.tar.xz"
diff --git a/user/chntpw/APKBUILD b/user/chntpw/APKBUILD
new file mode 100644
index 000000000..7a943885f
--- /dev/null
+++ b/user/chntpw/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: CyberLeo <cyberleo@cyberleo.net>
+# Maintainer: CyberLeo <cyberleo@cyberleo.net>
+pkgname=chntpw
+pkgver=140201
+pkgrel=0
+pkgdesc="Change passwords in Windows SAM files"
+url="https://pogostick.net/~pnh/ntpasswd/"
+arch="all"
+options="!check" # No test suite.
+license="(LGPL-2.1-only AND GPL-2.0-only)"
+depends=""
+makedepends=""
+source="http://pogostick.net/~pnh/ntpasswd/$pkgname-source-$pkgver.zip
+ stdint.patch
+ chntpw-080526-correct-test-for-failing-open-syscall.patch
+ chntpw-110511-detect-failure-to-write-key.patch
+ chntpw-110511-reged-no-deref-null.patch
+ chntpw-110511-robustness.patch
+ chntpw-140201-get_abs_path.patch
+ getopt-signed-char-return.patch
+ "
+
+build() {
+ make CC="${CC:-gcc}" CFLAGS="$CFLAGS" \
+ chntpw cpnt reged
+}
+
+package() {
+ install -d "$pkgdir"/usr/bin
+ install chntpw cpnt reged "$pkgdir"/usr/bin/
+}
+
+sha512sums="a26d747f6e077d1bb3e9b8077781f8c37dd978e07b7426495862f15c9004572b706c34736fc4d1ed8856b1a43335d726b4d87c688f7f9a11fd6cc3a74d71a7fa chntpw-source-140201.zip
+3ed747119d125b3e4dc8dbb2a697d411ef2f4403ec84c60177d8e35389bc695bb0c65f7aa4314ca320ffceec87e60e2a0c81d52544b90463fe23aa7d4a50df67 stdint.patch
+1332407858eb20e0f1304472bc458789ef78638059137b91ff0b7bac9619740e8a608aace0330ace363853b5c02642fdbbc66bc47dac19f6807dae57cdaca4ca chntpw-080526-correct-test-for-failing-open-syscall.patch
+a570451f52943a2ccdced349c5fe4e82e1a338dd6d0067ddaf18dc328b2c3ee3976d08827eee866b4654ccbda93ad95dcbabaddd0b6487a1e4112b66fc63bde1 chntpw-110511-detect-failure-to-write-key.patch
+c61ea69ea1f039e470f501fddd1d3674ee7427e9084361a1aba03402d302a07efd1a2630e16f479bd3cef13b17e85c14cbfff53cb33bccb470465276b1b7ac22 chntpw-110511-reged-no-deref-null.patch
+bcc314545272b5be04612e435a2f9dd13cbf065cfbd80aed2ed57147ee9e73b2478cd18e95cbaa7ad3b5dfcf4788a3026b5ddd767f89ea9c80ba7a2efc7ea8c4 chntpw-110511-robustness.patch
+1bb5939d2cfd3718b9e630998b250c3c37d50d5769463f4f8456ede9fa4521e1bf9d9f05986883df36418d91bef591b34a81cd36bfacca053160e4d95c03cb4b chntpw-140201-get_abs_path.patch
+85bbe9c7f21362cdff6becd94fe402d051a770105ec2eeb61e1936693e0a39ee03b6e971843c251f7768499444711392d966227f6126c328f7f58055cafe38d7 getopt-signed-char-return.patch"
diff --git a/user/chntpw/chntpw-080526-correct-test-for-failing-open-syscall.patch b/user/chntpw/chntpw-080526-correct-test-for-failing-open-syscall.patch
new file mode 100644
index 000000000..3c68146b0
--- /dev/null
+++ b/user/chntpw/chntpw-080526-correct-test-for-failing-open-syscall.patch
@@ -0,0 +1,75 @@
+From jim@meyering.net Mon Jul 20 20:05:55 2009
+Return-Path: jim@meyering.net
+X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on amd.home.annexia.org
+X-Spam-Level:
+X-Spam-Status: No, score=-2.2 required=5.0 tests=AWL,BAYES_00,
+ UNPARSEABLE_RELAY autolearn=ham version=3.2.5
+Received: from mail.corp.redhat.com [10.5.5.51]
+ by amd.home.annexia.org with IMAP (fetchmail-6.3.8)
+ for <rjones@localhost> (single-drop); Mon, 20 Jul 2009 20:05:55 +0100 (BST)
+Received: from zmta03.collab.prod.int.phx2.redhat.com (LHLO
+ zmta03.collab.prod.int.phx2.redhat.com) (10.5.5.33) by
+ mail06.corp.redhat.com with LMTP; Mon, 20 Jul 2009 15:05:47 -0400 (EDT)
+Received: from localhost (localhost.localdomain [127.0.0.1])
+ by zmta03.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id 2C1134E4EB
+ for <rjones@redhat.com>; Mon, 20 Jul 2009 15:05:47 -0400 (EDT)
+Received: from zmta03.collab.prod.int.phx2.redhat.com ([127.0.0.1])
+ by localhost (zmta03.collab.prod.int.phx2.redhat.com [127.0.0.1]) (amavisd-new, port 10024)
+ with ESMTP id a7N9dvNRkYQB for <rjones@redhat.com>;
+ Mon, 20 Jul 2009 15:05:47 -0400 (EDT)
+Received: from int-mx2.corp.redhat.com (int-mx2.corp.redhat.com [172.16.27.26])
+ by zmta03.collab.prod.int.phx2.redhat.com (Postfix) with ESMTP id 034384E4D6
+ for <rjones@mail.corp.redhat.com>; Mon, 20 Jul 2009 15:05:46 -0400 (EDT)
+Received: from ns3.rdu.redhat.com (ns3.rdu.redhat.com [10.11.255.199])
+ by int-mx2.corp.redhat.com (8.13.1/8.13.1) with ESMTP id n6KJ5kIt032703
+ for <rjones@int-mx2.corp.redhat.com>; Mon, 20 Jul 2009 15:05:46 -0400
+Received: from mx.meyering.net (sebastian-int.corp.redhat.com [172.16.52.221])
+ by ns3.rdu.redhat.com (8.13.8/8.13.8) with ESMTP id n6KJ5jf3021050
+ for <rjones@redhat.com>; Mon, 20 Jul 2009 15:05:45 -0400
+Received: by rho.meyering.net (Acme Bit-Twister, from userid 1000)
+ id D674638154; Mon, 20 Jul 2009 21:05:44 +0200 (CEST)
+From: Jim Meyering <jim@meyering.net>
+To: "Richard W. M. Jones" <rjones@redhat.com>
+Subject: chntpw [PATCH] correct test for failing "open" syscall
+Date: Mon, 20 Jul 2009 21:05:44 +0200
+Message-ID: <878wij899z.fsf@meyering.net>
+MIME-Version: 1.0
+Content-Type: text/plain; charset=us-ascii
+X-Scanned-By: MIMEDefang 2.58 on 172.16.27.26
+Status: RO
+Content-Length: 1103
+Lines: 33
+
+This one is weird.
+It must be code that is never exercised,
+since the existing code is totally bogus.
+The condition, !open(...), will almost always be true.
+(sole exception is when starting a program with stdin
+initially closed)
+
+>From bc4cddb06cf13c189fbdc93e6962cad072779097 Mon Sep 17 00:00:00 2001
+From: Jim Meyering <meyering@redhat.com>
+Date: Mon, 20 Jul 2009 14:59:19 -0400
+Subject: [PATCH] correct test for failing "open" syscall
+
+* ntreg.c (writeHive): Test open() < 0, not !open().
+---
+ ntreg.c | 2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/ntreg.c b/ntreg.c
+index be6b680..21cd3e3 100644
+--- a/ntreg.c
++++ b/ntreg.c
+@@ -2765,7 +2765,7 @@ int writeHive(struct hive *hdesc)
+ if ( !(hdesc->state & HMODE_DIRTY)) return(0);
+
+ if ( !(hdesc->state & HMODE_OPEN)) { /* File has been closed */
+- if (!(hdesc->filedesc = open(hdesc->filename,O_RDWR))) {
++ if ((hdesc->filedesc = open(hdesc->filename,O_RDWR)) < 0) {
+ fprintf(stderr,"writeHive: open(%s) failed: %s, FILE NOT WRITTEN!\n",hdesc->filename,strerror(errno));
+ return(1);
+ }
+--
+1.6.2.5
+
diff --git a/user/chntpw/chntpw-110511-detect-failure-to-write-key.patch b/user/chntpw/chntpw-110511-detect-failure-to-write-key.patch
new file mode 100644
index 000000000..818639d83
--- /dev/null
+++ b/user/chntpw/chntpw-110511-detect-failure-to-write-key.patch
@@ -0,0 +1,19 @@
+diff -ur chntpw-110511.orig/ntreg.c chntpw-110511/ntreg.c
+--- chntpw-110511.orig/ntreg.c 2011-05-11 12:33:56.000000000 -0700
++++ chntpw-110511/ntreg.c 2011-11-01 13:45:02.550421729 -0700
+@@ -3389,7 +3389,14 @@
+
+ fprintf(file,"\r\n"); /* Must end file with an empty line, windows does that */
+
+- fclose(file);
++ if (ferror (file)) {
++ printf("failed to write file '%s'\n", filename);
++ fclose (file);
++ return;
++ }
++ if (fclose(file))
++ printf("failed to write file '%s': %s\n", filename,
++ strerror(errno));
+ }
+
+ /* ================================================================ */
diff --git a/user/chntpw/chntpw-110511-reged-no-deref-null.patch b/user/chntpw/chntpw-110511-reged-no-deref-null.patch
new file mode 100644
index 000000000..0193cd493
--- /dev/null
+++ b/user/chntpw/chntpw-110511-reged-no-deref-null.patch
@@ -0,0 +1,15 @@
+diff -ur chntpw-110511.orig/reged.c chntpw-110511/reged.c
+--- chntpw-110511.orig/reged.c 2011-05-11 12:33:56.000000000 -0700
++++ chntpw-110511/reged.c 2011-11-01 13:46:55.569625286 -0700
+@@ -167,6 +167,11 @@
+
+ if (edit) { /* Call editor. Rest of arguments are considered hives to load */
+ hivename = argv[optind+no_hives];
++ if (!hivename) {
++ fprintf(stderr,"with -e you must specify at least one hive file name\n");
++ usage();
++ exit(1);
++ }
+ do {
+ if (!(hive[no_hives] = openHive(hivename,
+ HMODE_RW|mode))) {
diff --git a/user/chntpw/chntpw-110511-robustness.patch b/user/chntpw/chntpw-110511-robustness.patch
new file mode 100644
index 000000000..ea2363f34
--- /dev/null
+++ b/user/chntpw/chntpw-110511-robustness.patch
@@ -0,0 +1,39 @@
+--- chntpw-110511.orig/ntreg.c 2011-05-11 12:33:56.000000000 -0700
++++ chntpw-110511/ntreg.c 2011-12-18 17:09:06.290818997 -0800
+@@ -190,14 +190,18 @@
+
+ int fmyinput(char *prmpt, char *ibuf, int maxlen)
+ {
+-
++ int len;
+ printf("%s",prmpt);
+
+ fgets(ibuf,maxlen+1,stdin);
++ len = strlen(ibuf);
+
+- ibuf[strlen(ibuf)-1] = 0;
++ if (len) {
++ ibuf[len-1] = 0;
++ --len;
++ }
+
+- return(strlen(ibuf));
++ return len;
+ }
+
+ /* Print len number of hexbytes */
+@@ -4119,6 +4123,14 @@
+ closeHive(hdesc);
+ return(NULL);
+ }
++
++ if (r < sizeof (*hdesc)) {
++ fprintf(stderr,
++ "file is too small; got %d bytes while expecting %d or more\n",
++ r, sizeof (*hdesc));
++ closeHive(hdesc);
++ return(NULL);
++ }
+
+ /* Now run through file, tallying all pages */
+ /* NOTE/KLUDGE: Assume first page starts at offset 0x1000 */
diff --git a/user/chntpw/chntpw-140201-get_abs_path.patch b/user/chntpw/chntpw-140201-get_abs_path.patch
new file mode 100644
index 000000000..c9f1a3dec
--- /dev/null
+++ b/user/chntpw/chntpw-140201-get_abs_path.patch
@@ -0,0 +1,10 @@
+--- chntpw-140201/ntreg.c.orig 2014-02-01 08:54:37.000000000 -0800
++++ chntpw-140201/ntreg.c 2018-07-02 16:10:39.625152640 -0700
+@@ -1511,6 +1511,7 @@
+ }
+
+ strncpy(tmp,path,ABSPATHLEN-1);
++ tmp[ABSPATHLEN-1] = '\0';
+
+ if (key->type & 0x20)
+ keyname = mem_str(key->keyname, key->len_name);
diff --git a/user/chntpw/getopt-signed-char-return.patch b/user/chntpw/getopt-signed-char-return.patch
new file mode 100644
index 000000000..6dc78c624
--- /dev/null
+++ b/user/chntpw/getopt-signed-char-return.patch
@@ -0,0 +1,37 @@
+diff -ur chntpw-140201.orig/chntpw.c chntpw-140201/chntpw.c
+--- chntpw-140201.orig/chntpw.c 2020-06-08 14:21:55.839494887 +0000
++++ chntpw-140201/chntpw.c 2020-06-08 14:22:29.922115922 +0000
+@@ -1026,7 +1026,8 @@
+ int mode = HMODE_INFO;
+ extern int /* opterr, */ optind;
+ extern char* optarg;
+- char *filename,c;
++ char *filename;
++ signed char c;
+ char *who = "Administrator";
+ char iwho[100];
+ FILE *ch; /* Write out names of touched files to this */
+diff -ur chntpw-140201.orig/sampasswd.c chntpw-140201/sampasswd.c
+--- chntpw-140201.orig/sampasswd.c 2020-06-08 14:21:49.661563576 +0000
++++ chntpw-140201/sampasswd.c 2020-06-08 14:22:21.009215027 +0000
+@@ -140,7 +140,7 @@
+ int first = 0;
+ int ret, wret, il;
+ char *hivename;
+- char c;
++ signed char c;
+ char *usr = NULL;
+
+ char *options = "rlHu:vNEthaf";
+diff -ur chntpw-140201.orig/samusrgrp.c chntpw-140201/samusrgrp.c
+--- chntpw-140201.orig/samusrgrp.c 2020-06-08 14:21:47.330589493 +0000
++++ chntpw-140201/samusrgrp.c 2020-06-08 14:22:19.218234941 +0000
+@@ -176,7 +176,7 @@
+ int human = 0;
+ int ret, wret, il;
+ char *hivename;
+- char c;
++ signed char c;
+ char *usr = NULL;
+ char *grp = NULL;
+
diff --git a/user/chntpw/stdint.patch b/user/chntpw/stdint.patch
new file mode 100644
index 000000000..841e25ed7
--- /dev/null
+++ b/user/chntpw/stdint.patch
@@ -0,0 +1,11 @@
+--- ./ntreg.h.orig
++++ ./ntreg.h
+@@ -25,6 +25,8 @@
+ #ifndef _INCLUDE_NTREG_H
+ #define _INCLUDE_NTREG_H 1
+
++#include <stdint.h>
++
+ #define SZ_MAX 4096 /* Max unicode strlen before we truncate */
+
+ #define KEY_ROOT 0x2c /* Type ID of ROOT key node */
diff --git a/user/choqok/APKBUILD b/user/choqok/APKBUILD
new file mode 100644
index 000000000..889566410
--- /dev/null
+++ b/user/choqok/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=choqok
+pkgver=1.7.0
+pkgrel=0
+pkgdesc="Microblogging client from KDE"
+url="https://kde.org/applications/internet/org.kde.choqok"
+arch="all"
+license="GPL-3.0+"
+depends=""
+makedepends="qt5-qtbase-dev qt5-qtnetworkauth-dev cmake extra-cmake-modules
+ kcmutils-dev kconfigwidgets-dev kcoreaddons-dev kdoctools-dev
+ kemoticons-dev kglobalaccel-dev kguiaddons-dev ki18n-dev kio-dev
+ knotifications-dev knotifyconfig-dev ktextwidgets-dev kwallet-dev
+ kwidgetsaddons-dev kxmlgui-dev purpose-dev qca-dev sonnet-dev
+ kdewebkit-dev kparts-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/choqok/1.7/src/choqok-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="6f5998078e555f7b4a40270ad0a4defa2d15bb8440b810320fc4cfc38d78cb34bb9b2f6a38eb33eb3217b51a78a7fbc7f79224cd0ddb0fcbf8c9035d8e600e96 choqok-1.7.0.tar.xz"
diff --git a/user/chrony/APKBUILD b/user/chrony/APKBUILD
index dc2fe5d4f..282302d99 100644
--- a/user/chrony/APKBUILD
+++ b/user/chrony/APKBUILD
@@ -1,33 +1,31 @@
-# Contributor: Łukasz Jendrysik
+# Contributor: Łukasz Jendrysik <scadu@yandex.com>
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=chrony
-pkgver=3.4
-pkgrel=1
-_ver=${pkgver/_/-}
+pkgver=4.1
+pkgrel=0
pkgdesc="NTP client and server programs"
url="https://chrony.tuxfamily.org"
pkgusers="$pkgname"
pkggroups="$pkgname"
arch="all"
+options="!check" # Test suite no longer functions after 2020-01-01.
license="GPL-2.0-only"
-install="$pkgname.pre-install $pkgname.pre-upgrade"
depends=""
-makedepends="asciidoctor libcap-dev libedit-dev texinfo"
checkdepends="bash"
+makedepends="asciidoctor libcap-dev libedit-dev texinfo"
+install="$pkgname.pre-install $pkgname.pre-upgrade"
subpackages="$pkgname-doc $pkgname-openrc"
-source="https://download.tuxfamily.org/$pkgname/$pkgname-$_ver.tar.gz
+source="https://download.tuxfamily.org/$pkgname/$pkgname-$pkgver.tar.gz
fix-tests.patch
max_resolve_interval.patch
- chrony-include-util.patch
chronyd.confd
chronyd.initd
chrony.logrotate
chrony.conf
timepps.h
"
-builddir="$srcdir/$pkgname-$_ver"
prepare() {
default_prepare
@@ -44,7 +42,6 @@ prepare() {
}
build() {
- cd "$builddir"
CPPFLAGS="$CPPFLAGS -I./pps-tools/" ./configure \
--prefix=/usr \
--infodir=/usr/share/info \
@@ -58,12 +55,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
mkdir -p "$pkgdir"/etc/logrotate.d
@@ -90,12 +85,11 @@ package() {
chown -R $pkgusers:$pkggroups "$pkgdir"/var/lib/chrony
}
-sha512sums="4fbb0311c8d363a87edd6f5d1be3d8554da169f260ba23c1ad9e8c567808258c6fd7513ba630d6fa27453ecfd81f0ece0e26d5ee2f98ca47fbc9887181a36918 chrony-3.4.tar.gz
+sha512sums="5e283d6a56e6852606c681a7c29c5786b102d584178cbd7033ebbc95a8e95533605631363b850a3087cca438a5878db7a317f120aab2fd856487d02fccfbcb1f chrony-4.1.tar.gz
067d47224a8c075ec8f63ffc58e65b030fdf228a72c4f03d50a2f2c17414da65bb5d27c7c2e4ba99e909f452041db83eaebe3c9e34c0c8fce18e05ebb489735e fix-tests.patch
b26581ed32680585edea5b8163a0062a87f648394c0f363c77a7d01a36608fcf4d005d9e6ab179ed2827b8a08f598f7bad4801bb5e135cad5107eb77fb19b247 max_resolve_interval.patch
-30f1ed28e0d956c994abd770c68634c7d5c69ded04a2fbfd387bbd8009bc0102ce57934ce41e468fc6b2c7f8fefdab73d97f6d6ff39ec93fffa6575fa1451fbd chrony-include-util.patch
1ebb72341b4421060a43d6db164d743de9144f1c23370e052f0db92a17e5e34f24ac98baddeb5dbfef27f67479142d448c4401d927394e55024760730a27e8de chronyd.confd
9a18c9744d7b78d9b9be3f0ae0b43cb988b294c342764802e0d5df835d450e748584c0b345f7161f14d84e15c8bbd491514ee9dc45e4a65f1276c52124d2e312 chronyd.initd
ab38f06bf45888846778ad935e24abb30d13b6805e9a750bc694ff953695fa8c5b33aac560f5f7f96dc46031c1a38660e5c418b6fce6fb34a87908a9a3c99357 chrony.logrotate
-41dca08064abb7ea1c54ca3587f4a614ab1fdecd98ef77b39d10ac23366772860aacce2a12c647331199dbfe3e242834e70aa5643b24b773e6fe266ad4125007 chrony.conf
+a0fc89a742217f623d3dbd878dce57d994185d65f7a16b4c2b54a131c9d78b981d67aaa67dc87d978bb82e53798a492dac58b93bf94d378d858eb29fc2113e67 chrony.conf
eb11fc19243d1789016d88eb7645bfe67c46304547781489bf36eb1dd4c252d523681ff835a6488fa0ef62b6b9e2f781c672279f4439f5d5640a3f214a113048 timepps.h"
diff --git a/user/chrony/chrony-include-util.patch b/user/chrony/chrony-include-util.patch
deleted file mode 100644
index 20b43c187..000000000
--- a/user/chrony/chrony-include-util.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- chrony-3.4/hash_intmd5.c.old 2018-09-27 19:29:57.386348229 -0700
-+++ chrony-3.4/hash_intmd5.c 2018-09-27 19:30:07.696494803 -0700
-@@ -29,6 +29,7 @@
- #include "sysincl.h"
- #include "hash.h"
- #include "memory.h"
-+#include "util.h"
-
- #include "md5.c"
-
diff --git a/user/chrony/chrony.conf b/user/chrony/chrony.conf
index 98ae0d32b..e24db5c93 100644
--- a/user/chrony/chrony.conf
+++ b/user/chrony/chrony.conf
@@ -1,7 +1,7 @@
# default config
# TODO: update pools to adelie vendor zone when it is assigned
-pool pool.ntp.org iburst
-initstepslew 10 pool.ntp.org
+pool 2.pool.ntp.org iburst
+initstepslew 10 2.pool.ntp.org
driftfile /var/lib/chrony/chrony.drift
rtcsync
diff --git a/user/chrony/chrony.pre-install b/user/chrony/chrony.pre-install
index 897fb74cc..b143d0a4c 100644
--- a/user/chrony/chrony.pre-install
+++ b/user/chrony/chrony.pre-install
@@ -1,6 +1,7 @@
#!/bin/sh
-addgroup -S chrony 2>/dev/null
-adduser -S -D -h /var/log/chrony -s /sbin/nologin -G chrony -g chrony chrony 2>/dev/null
+groupadd -r chrony 2>/dev/null
+useradd -c chrony -s /sbin/nologin -g chrony \
+ -m -d /var/log/chrony -r chrony 2>/dev/null
exit 0
diff --git a/user/chrpath/APKBUILD b/user/chrpath/APKBUILD
deleted file mode 100644
index 869a8bfdd..000000000
--- a/user/chrpath/APKBUILD
+++ /dev/null
@@ -1,36 +0,0 @@
-# Maintainer: Dead Upstream <nobody@deprecated.invalid>
-pkgname=chrpath
-pkgver=0.16
-pkgrel=2
-pkgdesc="Modify rpath of compiled programs"
-url="https://github.com/jwilk-mirrors/chrpath"
-arch="all"
-license="GPL-2.0-only"
-subpackages="$pkgname-doc"
-source="https://alioth-archive.debian.org/releases/chrpath/chrpath/0.16/chrpath-0.16.tar.gz"
-
-build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --infodir=/usr/share/info \
- --localstatedir=/var
- make
-}
-
-check() {
- cd "$builddir"
- make check
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" docdir=/usr/share/doc/$pkgname-$pkgver \
- install
-}
-
-sha512sums="aa04d490f78bff20a56fe20539cec10218c0772a668909eda8324ca825f51e8ef92001e95d9c316e79a145a043c9c327ec94d1a82e104ab408ca1021832745aa chrpath-0.16.tar.gz"
diff --git a/user/cifs-utils/APKBUILD b/user/cifs-utils/APKBUILD
index f5987a037..17b83ab41 100644
--- a/user/cifs-utils/APKBUILD
+++ b/user/cifs-utils/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=cifs-utils
-pkgver=6.8
+pkgver=6.11
pkgrel=0
pkgdesc="CIFS filesystem user-space tools"
url="https://wiki.samba.org/index.php/LinuxCIFS_utils"
@@ -9,18 +9,26 @@ arch="all"
options="!check suid" # No test suite.
license="GPL-3.0+ AND GPL-2.0+ AND LGPL-3.0+"
depends=""
-makedepends="keyutils-dev krb5-dev libcap-ng-dev linux-pam-dev
- py3-docutils talloc-dev"
+makedepends="keyutils-dev krb5-dev libcap-ng-dev linux-pam-dev py3-docutils
+ talloc-dev autoconf automake"
subpackages="$pkgname-doc $pkgname-dev"
source="https://ftp.samba.org/pub/linux-cifs/$pkgname/$pkgname-$pkgver.tar.bz2
musl-fix-includes.patch
- xattr_size_max.patch"
+ respect-destdir.patch
+ xattr_size_max.patch
+ "
+
+# secfixes:
+# 6.11-r0:
+# - CVE-2020-14342
+
+prepare() {
+ default_prepare
+ autoreconf -vif
+}
build() {
- cd "$builddir"
# --enable-cifsidmap and --enable-cifsacl require libwbclient (samba)
-
- autoreconf -i
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -35,19 +43,16 @@ build() {
}
check() {
- cd "$builddir"
-
make check
}
package() {
- cd "$builddir"
-
make DESTDIR="$pkgdir" install
# Allow unprivileged mount
chmod u+s "$pkgdir"/sbin/mount.cifs
}
-sha512sums="54a094f78c9e07acc997adfe0c8d4c2fb8e15c18adcc1805450e2180f8539aaec8619e781e985b289e097932637e2de3e6815e32f59ec2fc06cfc3762b832e13 cifs-utils-6.8.tar.bz2
+sha512sums="064c0ac75572fb44908390508462e4fdfe0686751149fd8b656a209dd961a5a24a7d9774c38c0e72fa5f9875b43aea7bf2de038c4e4a63a11664e71d9003100e cifs-utils-6.11.tar.bz2
99a2fab05bc2f14a600f89526ae0ed2c183cfa179fe386cb327075f710aee3aed5ae823f7c2f51913d1217c2371990d6d4609fdb8d80288bd3a6139df3c8aebe musl-fix-includes.patch
+f3acb4f7873628d67c7dfb2378135c302fe382e314277829ea5569710bac0ddb43684aa6d143327d735aec641997084eaa567823b534138ed884bd74044b652a respect-destdir.patch
2a9366ec1ddb0389c535d2fa889f63287cb8374535a47232de102c7e50b6874f67a3d5ef3318df23733300fd8459c7ec4b11f3211508aca7800b756119308e98 xattr_size_max.patch"
diff --git a/user/cifs-utils/respect-destdir.patch b/user/cifs-utils/respect-destdir.patch
new file mode 100644
index 000000000..6330efc38
--- /dev/null
+++ b/user/cifs-utils/respect-destdir.patch
@@ -0,0 +1,18 @@
+--- cifs-utils-6.10/Makefile.am.old 2019-12-16 23:34:56.000000000 +0000
++++ cifs-utils-6.10/Makefile.am 2020-01-09 07:28:27.635229782 +0000
+@@ -119,11 +119,11 @@
+ SUBDIRS = contrib
+
+ install-exec-hook:
+- (cd $(ROOTSBINDIR) && ln -sf mount.cifs mount.smb3)
++ (cd $(DESTDIR)$(ROOTSBINDIR) && ln -sf mount.cifs mount.smb3)
+
+ install-data-hook:
+- (cd $(man8dir) && ln -sf mount.cifs.8 mount.smb3.8)
++ (cd $(DESTDIR)$(man8dir) && ln -sf mount.cifs.8 mount.smb3.8)
+
+ uninstall-hook:
+- (cd $(ROOTSBINDIR) && rm -f $(ROOTSBINDIR)/mount.smb3)
+- (cd $(man8dir) && rm -f $(man8dir)/mount.smb3.8)
++ (cd $(DESTDIR)$(ROOTSBINDIR) && rm -f $(DESTDIR)$(ROOTSBINDIR)/mount.smb3)
++ (cd $(DESTDIR)$(man8dir) && rm -f $(DESTDIR)$(man8dir)/mount.smb3.8)
diff --git a/user/cjson/APKBUILD b/user/cjson/APKBUILD
new file mode 100644
index 000000000..2b2f63dd5
--- /dev/null
+++ b/user/cjson/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Leo <thinkabit.ukim@gmail.com>
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=cjson
+pkgver=1.7.15
+pkgrel=0
+pkgdesc="Lighweight JSON parser in C"
+url="https://github.com/DaveGamble/cJSON"
+arch="all"
+license="MIT"
+depends=""
+makedepends="cmake"
+subpackages="$pkgname-dev"
+source="$pkgname-$pkgver.tar.gz::https://github.com/DaveGamble/cJSON/archive/v$pkgver.tar.gz"
+builddir="$srcdir/cJSON-$pkgver"
+
+build() {
+ cmake -Bbuild \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=ON \
+ -DENABLE_CJSON_TEST=ON \
+ .
+ make -C build
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
+}
+
+package() {
+ make -C build install DESTDIR="$pkgdir"
+}
+
+sha512sums="0b32a758c597fcc90c8ed0af493c9bccd611b9d4f9a03e87de3f7337bb9a28990b810befd44bc321a0cb42cbcd0b026d45761f9bab7bd798f920b7b6975fb124 cjson-1.7.15.tar.gz"
diff --git a/user/ckbcomp/APKBUILD b/user/ckbcomp/APKBUILD
new file mode 100644
index 000000000..57701b38a
--- /dev/null
+++ b/user/ckbcomp/APKBUILD
@@ -0,0 +1,23 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=ckbcomp
+pkgver=1.196
+pkgrel=0
+pkgdesc="XKB keyboard layout translation utility"
+url="https://salsa.debian.org/installer-team/console-setup"
+arch="noarch"
+options="!check" # No test suite.
+license="GPL-2.0+"
+depends="perl"
+makedepends=""
+subpackages="$pkgname-doc"
+# find timestamp here: https://snapshot.debian.org/package/console-setup/
+source="https://snapshot.debian.org/archive/debian/20200712T205255Z/pool/main/c/console-setup/console-setup_$pkgver.tar.xz"
+builddir="$srcdir"/console-setup-$pkgver
+
+package() {
+ install -Dm755 -t "$pkgdir"/usr/bin Keyboard/ckbcomp
+ install -Dm644 -t "$pkgdir"/usr/share/man/man1 man/ckbcomp.1
+}
+
+sha512sums="f100cdf2226cdad94c595ca269e65155b52ec23996f2fee8d4916f7a414c7a6f70ae51e9ba2d3c7ae4a93a8830ee2e3eb2f1d09c636f49005d54d52ec674e938 console-setup_1.196.tar.xz"
diff --git a/user/clang/0001-Add-support-for-Ad-lie-Linux.patch b/user/clang/0001-Add-support-for-Ad-lie-Linux.patch
index f12adf513..9f2612440 100644
--- a/user/clang/0001-Add-support-for-Ad-lie-Linux.patch
+++ b/user/clang/0001-Add-support-for-Ad-lie-Linux.patch
@@ -16,7 +16,7 @@ diff --git a/include/clang/Driver/Distro.h b/include/clang/Driver/Distro.h
index 7b34a09256..7a3774a4f1 100644
--- a/include/clang/Driver/Distro.h
+++ b/include/clang/Driver/Distro.h
-@@ -26,6 +26,7 @@ public:
+@@ -28,6 +28,7 @@ public:
// NB: Releases of a particular Linux distro should be kept together
// in this enum, because some tests are done by integer comparison against
// the first and last known member in the family, e.g. IsRedHat().
@@ -24,55 +24,39 @@ index 7b34a09256..7a3774a4f1 100644
AlpineLinux,
ArchLinux,
DebianLenny,
-@@ -118,6 +119,10 @@ public:
- return DistroVal >= UbuntuHardy && DistroVal <= UbuntuCosmic;
+@@ -134,3 +135,5 @@ public:
}
-+ bool IsAdelieLinux() const {
-+ return DistroVal == AdelieLinux;
-+ }
++ bool IsAdelieLinux() const { return DistroVal == AdelieLinux; }
+
- bool IsAlpineLinux() const {
- return DistroVal == AlpineLinux;
- }
+ bool IsAlpineLinux() const { return DistroVal == AlpineLinux; }
diff --git a/lib/Driver/Distro.cpp b/lib/Driver/Distro.cpp
index 2c4d44faf8..7ef35ab379 100644
--- a/lib/Driver/Distro.cpp
+++ b/lib/Driver/Distro.cpp
-@@ -130,6 +130,9 @@ static Distro::DistroType DetectDistro(vfs::FileSystem &VFS) {
- if (VFS.exists("/etc/exherbo-release"))
- return Distro::Exherbo;
+@@ -36,6 +36,7 @@
+ for (StringRef Line : Lines)
+ if (Version == Distro::UnknownDistro && Line.starts_with("ID="))
+ Version = llvm::StringSwitch<Distro::DistroType>(Line.substr(3))
++ .Case("adelie", Distro::AdelieLinux)
+ .Case("alpine", Distro::AlpineLinux)
+ .Case("fedora", Distro::Fedora)
+ .Case("gentoo", Distro::Gentoo)
+--- cfe-8.0.0.src/lib/Driver/ToolChains/Linux.cpp.old 2018-11-29 18:52:22.000000000 +0000
++++ cfe-8.0.0.src/lib/Driver/ToolChains/Linux.cpp 2019-04-23 23:49:37.786181838 +0000
+@@ -226,13 +226,13 @@
-+ if (VFS.exists("/etc/adelie-release"))
-+ return Distro::AdelieLinux;
-+
- if (VFS.exists("/etc/alpine-release"))
- return Distro::AlpineLinux;
+ Distro Distro(D.getVFS(), Triple);
-diff --git a/lib/Driver/ToolChains/Linux.cpp b/lib/Driver/ToolChains/Linux.cpp
-index 2a87cb077c..85bcd8ed47 100644
---- a/lib/Driver/ToolChains/Linux.cpp
-+++ b/lib/Driver/ToolChains/Linux.cpp
-@@ -234,7 +234,8 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
+- if (Distro.IsAlpineLinux() || Triple.isAndroid()) {
++ if (Distro.IsAdelieLinux() || Distro.IsAlpineLinux() || Triple.isAndroid()) {
+ ExtraOpts.push_back("-z");
ExtraOpts.push_back("now");
}
-- if (Distro.IsOpenSUSE() || Distro.IsUbuntu() || Distro.IsAlpineLinux()) {
-+ if (Distro.IsOpenSUSE() || Distro.IsUbuntu() || Distro.IsAlpineLinux() ||
-+ Distro.IsAdelieLinux()) {
+ if (Distro.IsOpenSUSE() || Distro.IsUbuntu() || Distro.IsAlpineLinux() ||
+- Triple.isAndroid()) {
++ Distro.IsAdelieLinux() || Triple.isAndroid()) {
ExtraOpts.push_back("-z");
ExtraOpts.push_back("relro");
}
-@@ -268,7 +269,8 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
- // Hexagon linker/loader does not support .gnu.hash
- if (!IsMips && !IsAndroid && !IsHexagon) {
- if (Distro.IsRedhat() || Distro.IsOpenSUSE() || Distro.IsAlpineLinux() ||
-- (Distro.IsUbuntu() && Distro >= Distro::UbuntuMaverick))
-+ Distro.IsAdelieLinux() ||
-+ (Distro.IsUbuntu() && Distro >= Distro::UbuntuMaverick))
- ExtraOpts.push_back("--hash-style=gnu");
-
- if (Distro.IsDebian() || Distro.IsOpenSUSE() || Distro == Distro::UbuntuLucid ||
---
-2.18.0
-
diff --git a/user/clang/0008-Fix-ClangConfig-cmake-LLVM-path.patch b/user/clang/0008-Fix-ClangConfig-cmake-LLVM-path.patch
deleted file mode 100644
index f1c1c2449..000000000
--- a/user/clang/0008-Fix-ClangConfig-cmake-LLVM-path.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From: Adeel <adeelbm@outlook.com>
-Date: Sun, 6 May 2018 10:22:00 +0200
-Subject: [PATCH] Fix ClangConfig.cmake to look for LLVM-Config.cmake in correct location
-
-This results in the following change in the generated ClangConfig.cmake:
-
- find_package(LLVM REQUIRED CONFIG
- - HINTS "${CLANG_INSTALL_PREFIX}/lib/cmake/llvm")
- + HINTS "/usr/lib/llvm5/lib/cmake/llvm")
-
-This is needed e.g. for building lldb.
-
-See https://github.com/alpinelinux/aports/pull/2342 for more information.
-
---- a/cmake/modules/CMakeLists.txt
-+++ b/cmake/modules/CMakeLists.txt
-@@ -39,7 +39,7 @@ foreach(p ${_count})
- get_filename_component(CLANG_INSTALL_PREFIX \"\${CLANG_INSTALL_PREFIX}\" PATH)")
- endforeach(p)
- set(CLANG_CONFIG_CMAKE_DIR "\${CLANG_INSTALL_PREFIX}/${CLANG_INSTALL_PACKAGE_DIR}")
--set(CLANG_CONFIG_LLVM_CMAKE_DIR "\${CLANG_INSTALL_PREFIX}/${LLVM_INSTALL_PACKAGE_DIR}")
-+set(CLANG_CONFIG_LLVM_CMAKE_DIR "${llvm_cmake_builddir}")
- set(CLANG_CONFIG_EXPORTS_FILE "\${CLANG_CMAKE_DIR}/ClangTargets.cmake")
- set(CLANG_CONFIG_INCLUDE_DIRS
- "\${CLANG_INSTALL_PREFIX}/include"
diff --git a/user/clang/APKBUILD b/user/clang/APKBUILD
index a56e16368..5084a4020 100644
--- a/user/clang/APKBUILD
+++ b/user/clang/APKBUILD
@@ -2,8 +2,8 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=clang
# Note: Update together with llvm.
-pkgver=7.0.1
-pkgrel=0
+pkgver=18.1.8
+pkgrel=1
_llvmver=${pkgver%%.*}
pkgdesc="A C language family front-end for LLVM"
arch="all"
@@ -12,23 +12,71 @@ url="https://llvm.org/"
license="NCSA"
depends_dev="$pkgname=$pkgver-r$pkgrel"
makedepends="cmake isl-dev libedit-dev libexecinfo-dev libxml2-dev libxml2-utils
- llvm-dev>=$_llvmver llvm-static>=$_llvmver llvm-test-utils>=$_llvmver"
+ llvm${_llvmver}-dev llvm${_llvmver}-static llvm${_llvmver}-test-utils
+ z3 z3-dev"
subpackages="$pkgname-static $pkgname-dev $pkgname-doc $pkgname-libs
$pkgname-analyzer::noarch"
-source="https://llvm.org/releases/$pkgver/cfe-$pkgver.src.tar.xz
+source="https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver/llvm-project-$pkgver.src.tar.xz
0001-Add-support-for-Ad-lie-Linux.patch
- 0008-Fix-ClangConfig-cmake-LLVM-path.patch
+ big-endian-32.patch
+ cfe-005-ppc64-dynamic-linker-path.patch
+ ppc-dirwatcher.patch
use-llvm-lit.patch
- secure-plt.patch
"
-builddir="$srcdir/cfe-$pkgver.src"
+builddir="$srcdir/llvm-project-$pkgver.src/$pkgname"
-build() {
- mkdir -p "$builddir"/build
- cd "$builddir"/build
+prepare() {
+ default_prepare
+
+ #1054
+ rm -fr \
+ test/Coverage/html-diagnostics.c \
+ test/Coverage/html-multifile-diagnostics.c \
+ test/Modules/crash-vfs-path-emptydir-entries.m \
+ test/Modules/crash-vfs-path-symlink-component.m \
+ test/Modules/crash-vfs-path-symlink-topheader.m \
+ test/Modules/crash-vfs-path-traversal.m \
+ test/Modules/crash-vfs-relative-overlay.m \
+ test/Modules/crash-vfs-umbrella-frameworks.m \
+ test/Modules/load-module-with-errors.m \
+ test/Modules/modules-with-same-name.m \
+ test/Modules/prebuilt-implicit-modules.m \
+ test/Modules/prune.m \
+ test/Modules/signal.m \
+ test/VFS/module-header-mismatches.m \
+ test/VFS/module_missing_vfs.m \
+ test/utils/update_cc_test_checks/basic-cplusplus.test \
+ test/utils/update_cc_test_checks/check-globals.test \
+ test/utils/update_cc_test_checks/check_attrs.test \
+ test/utils/update_cc_test_checks/def-and-decl.test \
+ test/utils/update_cc_test_checks/exec-all-runlines.test \
+ test/utils/update_cc_test_checks/explicit-template-instantiation.test \
+ test/utils/update_cc_test_checks/generated-funcs-regex.test \
+ test/utils/update_cc_test_checks/generated-funcs.test \
+ test/utils/update_cc_test_checks/global-hex-value-regex.test \
+ test/utils/update_cc_test_checks/global-value-regex.test \
+ test/utils/update_cc_test_checks/mangled_names.test \
+ test/utils/update_cc_test_checks/on_the_fly_arg_change.test \
+ test/utils/update_cc_test_checks/prefix-never-matches.test \
+ test/utils/update_cc_test_checks/replace-value-regex-across-runs.test \
+ test/utils/update_cc_test_checks/resolve-tmp-conflict.test \
+ ;
+
+ rm -f test/Driver/ppc-float-abi-warning.cpp
+ # known broken on 32-bit platforms
+ rm -f test/CodeGenCUDA/static-device-var-rdc.cu
+}
- cmake .. -Wno-dev \
- -DCMAKE_BUILD_TYPE=MinSizeRel \
+build() {
+ _build_type=MinSizeRel
+ case $CARCH in
+ ppc64)
+ # https://github.com/llvm/llvm-project/issues/102192
+ _build_type=Release;;
+ esac
+ CMAKE_PREFIX_PATH=/usr/lib/llvm$_llvmver/lib/cmake \
+ cmake -Wno-dev \
+ -DCMAKE_BUILD_TYPE=$_build_type \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_VERBOSE_MAKEFILE=OFF \
-DCLANG_VENDOR=${DISTRO_SHORT_NAME:-Adélie} \
@@ -38,41 +86,40 @@ build() {
-DCLANG_PLUGIN_SUPPORT=ON \
-DLIBCLANG_BUILD_STATIC=ON \
-DLLVM_ENABLE_EH=ON \
- -DLLVM_ENABLE_RTTI=ON
+ -DLLVM_ENABLE_RTTI=ON \
+ -DLLVM_MAIN_SRC_DIR="$srcdir/llvm-$pkgver.src" \
+ -DLLVM_EXTERNAL_LIT="/usr/lib/llvm$_llvmver/bin/lit" \
+ -Bbuild \
+ .
- make clang-tblgen
+ make -C build clang-tblgen
# too memory hungry
- if [ -z "$JOBS" -o $JOBS -gt 32 ]; then
- make -j32
+ if [ -z "$JOBS" ] || [ $JOBS -gt 32 ]; then
+ make -C build -j32
else
- make
+ make -C build
fi
}
check() {
- cd "$builddir"/build
- [ -f bin/llvm-lit ] || ln -s /usr/bin/lit bin/llvm-lit
- make check-clang
+ make -C build check-clang
}
package() {
- local _dir _file
- cd "$builddir"/build
-
- make DESTDIR="$pkgdir" install
- install -m 644 lib/libclang.a "$pkgdir"/usr/lib
+ make DESTDIR="$pkgdir" -C build install
+ install -m 644 build/lib/libclang.a "$pkgdir"/usr/lib
# mozilla will never be happy
mkdir -p "$pkgdir"/usr/lib/llvm$_llvmver/bin
mkdir -p "$pkgdir"/usr/lib/llvm$_llvmver/lib
for _dir in bin lib; do
- pushd "$pkgdir"/usr/$_dir
+ cd "$pkgdir"/usr/$_dir
for _file in *; do
[ -f $_file ] || continue
ln -s "../../../$_dir/$_file" \
"$pkgdir"/usr/lib/llvm$_llvmver/$_dir/$_file
done
- popd
+ cd "$OLDPWD"
done
# needed for at least Qt Creator
@@ -103,8 +150,9 @@ analyzer() {
mv usr/share/scan-* "$subpkgdir"/usr/share/
}
-sha512sums="df2f38153ebdc261bcfa6a569567f759bbb1a803192882a9d4eca55a47878166ac9057151a94ad341dc1281136547e4faa783a68070dfde2307b48cacd4b9194 cfe-7.0.1.src.tar.xz
-44aa152d50822a9e1a223b9e07e150ffa830c55deb4c4ca29e6218a0103eb263a00b41fd1ca84390e65fa08005901a0a0f88cf529bff8764220e99d06adef5fc 0001-Add-support-for-Ad-lie-Linux.patch
-9485fe4fd6182df543735ed8f4ce618693d0faeafa86d3f9574a6c7abf50978e2d56e0a94be3ed94d515cc937c388d66ceff1bbc9bb120d371b6d3e95340da00 0008-Fix-ClangConfig-cmake-LLVM-path.patch
-8a596e7369b5791e7e9c3278320aa5bac30d91f27d9a0df335ea862c359623869353d12145c3b64730f721600522f3acc5abe706428091482e0209e4ff308175 use-llvm-lit.patch
-9dad6dfb0097f79939b743dbe7ed20274c463d9c41f061a957841c60070247a4760b676465652e2e844fc75aab9a5b7f9f4dd7632f2ff5dd5b0a335fcbd29312 secure-plt.patch"
+sha512sums="25eeee9984c8b4d0fbc240df90f33cbb000d3b0414baff5c8982beafcc5e59e7ef18f6f85d95b3a5f60cb3d4cd4f877c80487b5768bc21bc833f107698ad93db llvm-project-18.1.8.src.tar.xz
+d37d2339a76c21666aa4405b2a620100e6967eb933535b5cea05f5de25a4d75510479443500715529cea38014028741d71553c7b247d5f349a05660133d66bc6 0001-Add-support-for-Ad-lie-Linux.patch
+241a087888b7b5373b54653c4675c77c70d82b61a1b79359cba7d5fe0187851e790cb4e7e278a0a59c660b9a980cf087b393dc43a19a975fc9b97717bca12bc4 big-endian-32.patch
+8272ec0eeb93287c9cc961099139f7cb0f94561befc31a4521387fa5f7216dc4b3d99750c4560a0b71ec4acde5bd776abef733cfafe81058ef054b62f72fc209 cfe-005-ppc64-dynamic-linker-path.patch
+0032fdd3864870d345caff9c4ff44f58bebc802bddf06c4b3bf30276c89e237167e6dea03456d322d3f6e2ee5e3a2ecf9f649ed033f0ab078b80bda44371b3ce ppc-dirwatcher.patch
+6c6b4fc49539ecf02e4eec9c2bbd89cc37fe01383e7884aa52c90ab0a4aa23cd9a86716bc645af6949f787d2fe3b9a3ad177baef1edbec928437872d14db536d use-llvm-lit.patch"
diff --git a/user/clang/big-endian-32.patch b/user/clang/big-endian-32.patch
new file mode 100644
index 000000000..9235d2f5e
--- /dev/null
+++ b/user/clang/big-endian-32.patch
@@ -0,0 +1,183 @@
+From 4f37ed5ff6c18c8cf0de244bb064d5f4f60065a4 Mon Sep 17 00:00:00 2001
+From: Jessica Clarke <jrtc27@jrtc27.com>
+Date: Fri, 18 Oct 2024 16:50:22 +0100
+Subject: [PATCH 1/2] [clang] Make LazyOffsetPtr more portable
+
+LazyOffsetPtr currently relies on uint64_t being able to store a pointer
+and, unless sizeof(uint64_t) == sizeof(void *), little endianness, since
+getAddressOfPointer reinterprets the memory as a pointer. This also
+doesn't properly respect the C++ object model.
+
+As removing getAddressOfPointer would have wide-reaching implications,
+improve the implementation to account for these problems by using
+placement new and a suitably sized-and-aligned buffer, "right"-aligning
+the objects on big-endian platforms so the LSBs are in the same place
+for use as the discriminator.
+
+Fixes: bc73ef0031b50f7443615fef614fb4ecaaa4bd11
+Fixes: https://github.com/llvm/llvm-project/issues/111993
+---
+ clang/include/clang/AST/ExternalASTSource.h | 48 +++++++++++++++------
+ 1 file changed, 35 insertions(+), 13 deletions(-)
+
+diff --git clang/include/clang/AST/ExternalASTSource.h clang/include/clang/AST/ExternalASTSource.h
+index 385c32edbae0fd..caf37144d5eb73 100644
+--- clang/include/clang/AST/ExternalASTSource.h
++++ clang/include/clang/AST/ExternalASTSource.h
+@@ -25,10 +25,12 @@
+ #include "llvm/ADT/SmallVector.h"
+ #include "llvm/ADT/iterator.h"
+ #include "llvm/Support/PointerLikeTypeTraits.h"
++#include <algorithm>
+ #include <cassert>
+ #include <cstddef>
+ #include <cstdint>
+ #include <iterator>
++#include <new>
+ #include <optional>
+ #include <utility>
+
+@@ -326,29 +328,49 @@ struct LazyOffsetPtr {
+ ///
+ /// If the low bit is clear, a pointer to the AST node. If the low
+ /// bit is set, the upper 63 bits are the offset.
+- mutable uint64_t Ptr = 0;
++ static constexpr size_t DataSize = std::max(sizeof(uint64_t), sizeof(T *));
++ alignas(uint64_t) alignas(T *) mutable unsigned char Data[DataSize] = {};
++
++ unsigned char GetLSB() const {
++ return Data[llvm::sys::IsBigEndianHost ? DataSize - 1 : 0];
++ }
++
++ template <typename U> U &As(bool New) const {
++ unsigned char *Obj =
++ Data + (llvm::sys::IsBigEndianHost ? DataSize - sizeof(U) : 0);
++ if (New)
++ return *new (Obj) U;
++ return *std::launder(reinterpret_cast<U *>(Obj));
++ }
++
++ T *&GetPtr() const { return As<T *>(false); }
++ uint64_t &GetU64() const { return As<uint64_t>(false); }
++ void SetPtr(T *Ptr) const { As<T *>(true) = Ptr; }
++ void SetU64(uint64_t U64) const { As<uint64_t>(true) = U64; }
+
+ public:
+ LazyOffsetPtr() = default;
+- explicit LazyOffsetPtr(T *Ptr) : Ptr(reinterpret_cast<uint64_t>(Ptr)) {}
++ explicit LazyOffsetPtr(T *Ptr) : Data() { SetPtr(Ptr); }
+
+- explicit LazyOffsetPtr(uint64_t Offset) : Ptr((Offset << 1) | 0x01) {
++ explicit LazyOffsetPtr(uint64_t Offset) : Data() {
+ assert((Offset << 1 >> 1) == Offset && "Offsets must require < 63 bits");
+ if (Offset == 0)
+- Ptr = 0;
++ SetPtr(NULL);
++ else
++ SetU64((Offset << 1) | 0x01);
+ }
+
+ LazyOffsetPtr &operator=(T *Ptr) {
+- this->Ptr = reinterpret_cast<uint64_t>(Ptr);
++ SetPtr(Ptr);
+ return *this;
+ }
+
+ LazyOffsetPtr &operator=(uint64_t Offset) {
+ assert((Offset << 1 >> 1) == Offset && "Offsets must require < 63 bits");
+ if (Offset == 0)
+- Ptr = 0;
++ SetPtr(NULL);
+ else
+- Ptr = (Offset << 1) | 0x01;
++ SetU64((Offset << 1) | 0x01);
+
+ return *this;
+ }
+@@ -356,15 +378,15 @@ struct LazyOffsetPtr {
+ /// Whether this pointer is non-NULL.
+ ///
+ /// This operation does not require the AST node to be deserialized.
+- explicit operator bool() const { return Ptr != 0; }
++ explicit operator bool() const { return isOffset() || GetPtr() != NULL; }
+
+ /// Whether this pointer is non-NULL.
+ ///
+ /// This operation does not require the AST node to be deserialized.
+- bool isValid() const { return Ptr != 0; }
++ bool isValid() const { return isOffset() || GetPtr() != NULL; }
+
+ /// Whether this pointer is currently stored as an offset.
+- bool isOffset() const { return Ptr & 0x01; }
++ bool isOffset() const { return GetLSB() & 0x01; }
+
+ /// Retrieve the pointer to the AST node that this lazy pointer points to.
+ ///
+@@ -375,9 +397,9 @@ struct LazyOffsetPtr {
+ if (isOffset()) {
+ assert(Source &&
+ "Cannot deserialize a lazy pointer without an AST source");
+- Ptr = reinterpret_cast<uint64_t>((Source->*Get)(Ptr >> 1));
++ SetPtr((Source->*Get)(GetU64() >> 1));
+ }
+- return reinterpret_cast<T*>(Ptr);
++ return GetPtr();
+ }
+
+ /// Retrieve the address of the AST node pointer. Deserializes the pointee if
+@@ -385,7 +407,7 @@ struct LazyOffsetPtr {
+ T **getAddressOfPointer(ExternalASTSource *Source) const {
+ // Ensure the integer is in pointer form.
+ (void)get(Source);
+- return reinterpret_cast<T**>(&Ptr);
++ return &GetPtr();
+ }
+ };
+
+
+From 35eed5f3f5e09c4275cabac09e277a167a98f742 Mon Sep 17 00:00:00 2001
+From: Jessica Clarke <jrtc27@jrtc27.com>
+Date: Fri, 18 Oct 2024 17:45:28 +0100
+Subject: [PATCH 2/2] NULL -> nullptr
+
+---
+ clang/include/clang/AST/ExternalASTSource.h | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git clang/include/clang/AST/ExternalASTSource.h clang/include/clang/AST/ExternalASTSource.h
+index caf37144d5eb73..582ed7c65f58ca 100644
+--- clang/include/clang/AST/ExternalASTSource.h
++++ clang/include/clang/AST/ExternalASTSource.h
+@@ -355,7 +355,7 @@ struct LazyOffsetPtr {
+ explicit LazyOffsetPtr(uint64_t Offset) : Data() {
+ assert((Offset << 1 >> 1) == Offset && "Offsets must require < 63 bits");
+ if (Offset == 0)
+- SetPtr(NULL);
++ SetPtr(nullptr);
+ else
+ SetU64((Offset << 1) | 0x01);
+ }
+@@ -368,7 +368,7 @@ struct LazyOffsetPtr {
+ LazyOffsetPtr &operator=(uint64_t Offset) {
+ assert((Offset << 1 >> 1) == Offset && "Offsets must require < 63 bits");
+ if (Offset == 0)
+- SetPtr(NULL);
++ SetPtr(nullptr);
+ else
+ SetU64((Offset << 1) | 0x01);
+
+@@ -378,12 +378,12 @@ struct LazyOffsetPtr {
+ /// Whether this pointer is non-NULL.
+ ///
+ /// This operation does not require the AST node to be deserialized.
+- explicit operator bool() const { return isOffset() || GetPtr() != NULL; }
++ explicit operator bool() const { return isOffset() || GetPtr() != nullptr; }
+
+ /// Whether this pointer is non-NULL.
+ ///
+ /// This operation does not require the AST node to be deserialized.
+- bool isValid() const { return isOffset() || GetPtr() != NULL; }
++ bool isValid() const { return isOffset() || GetPtr() != nullptr; }
+
+ /// Whether this pointer is currently stored as an offset.
+ bool isOffset() const { return GetLSB() & 0x01; }
diff --git a/user/clang/cfe-005-ppc64-dynamic-linker-path.patch b/user/clang/cfe-005-ppc64-dynamic-linker-path.patch
new file mode 100644
index 000000000..0238ca5c6
--- /dev/null
+++ b/user/clang/cfe-005-ppc64-dynamic-linker-path.patch
@@ -0,0 +1,17 @@
+--- a/lib/Driver/ToolChains/Linux.cpp
++++ b/lib/Driver/ToolChains/Linux.cpp
+@@ -551,12 +551,12 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
+ Loader = "ld.so.1";
+ break;
+ case llvm::Triple::ppc64:
+- LibDir = "lib64";
++ LibDir = "lib";
+ Loader =
+ (tools::ppc::hasPPCAbiArg(Args, "elfv2")) ? "ld64.so.2" : "ld64.so.1";
+ break;
+ case llvm::Triple::ppc64le:
+- LibDir = "lib64";
++ LibDir = "lib";
+ Loader =
+ (tools::ppc::hasPPCAbiArg(Args, "elfv1")) ? "ld64.so.1" : "ld64.so.2";
+ break;
diff --git a/user/clang/ppc-dirwatcher.patch b/user/clang/ppc-dirwatcher.patch
new file mode 100644
index 000000000..35587152f
--- /dev/null
+++ b/user/clang/ppc-dirwatcher.patch
@@ -0,0 +1,10 @@
+Doesn't work on PowerPC.
+
+--- clang-14.0.6.src/unittests/DirectoryWatcher/CMakeLists.txt.old 2022-06-22 16:46:24.000000000 +0000
++++ clang-14.0.6.src/unittests/DirectoryWatcher/CMakeLists.txt 2022-12-05 01:14:23.863133395 +0000
+@@ -1,4 +1,4 @@
+-if(APPLE OR CMAKE_SYSTEM_NAME MATCHES "Linux" OR CMAKE_SYSTEM_NAME STREQUAL Windows)
++if(APPLE OR (CMAKE_SYSTEM_NAME MATCHES "Linux" AND NOT (CMAKE_SYSTEM_PROCESSOR STREQUAL "ppc")) OR CMAKE_SYSTEM_NAME STREQUAL Windows)
+
+ set(LLVM_LINK_COMPONENTS
+ Support
diff --git a/user/clang/secure-plt.patch b/user/clang/secure-plt.patch
deleted file mode 100644
index a92071e52..000000000
--- a/user/clang/secure-plt.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- cfe-7.0.1.src/lib/Driver/ToolChains/Arch/PPC.cpp.old 2018-11-29 00:31:15.000000000 +0000
-+++ cfe-7.0.1.src/lib/Driver/ToolChains/Arch/PPC.cpp 2019-03-10 04:37:49.350000000 +0000
-@@ -116,7 +116,7 @@
- const ArgList &Args) {
- if (Args.getLastArg(options::OPT_msecure_plt))
- return ppc::ReadGOTPtrMode::SecurePlt;
-- if (Triple.isOSOpenBSD())
-+ if (Triple.isOSOpenBSD() || Triple.isMusl())
- return ppc::ReadGOTPtrMode::SecurePlt;
- else
- return ppc::ReadGOTPtrMode::Bss;
diff --git a/user/clang/use-llvm-lit.patch b/user/clang/use-llvm-lit.patch
index 0cbb84835..5652ff12f 100644
--- a/user/clang/use-llvm-lit.patch
+++ b/user/clang/use-llvm-lit.patch
@@ -1,6 +1,6 @@
--- cfe-6.0.1.src/test/CMakeLists.txt.old 2017-12-12 19:47:40.000000000 +0000
+++ cfe-6.0.1.src/test/CMakeLists.txt 2018-09-13 17:01:03.690000000 +0000
-@@ -115,7 +115,7 @@
+@@ -170,7 +170,7 @@
add_lit_testsuite(check-clang "Running the Clang regression tests"
${CMAKE_CURRENT_BINARY_DIR}
diff --git a/user/claws-mail/APKBUILD b/user/claws-mail/APKBUILD
index 319bf9998..1554a00da 100644
--- a/user/claws-mail/APKBUILD
+++ b/user/claws-mail/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=claws-mail
-pkgver=3.17.3
+pkgver=3.17.8
pkgrel=0
pkgdesc="User-friendly, lightweight, and fast email client"
url="https://www.claws-mail.org/"
@@ -15,8 +15,11 @@ makedepends="compface-dev curl-dev dbus-glib-dev enchant-dev gnutls-dev
subpackages="$pkgname-doc $pkgname-lang"
source="https://www.claws-mail.org/download.php?file=releases/claws-mail-$pkgver.tar.xz"
+# secfixes:
+# 3.17.8-r0:
+# - CVE-2020-16094
+
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -30,13 +33,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b562d785eaedbdec408c4a3db8f4d9326183266fe314509a189c9e1220f15b4f41ccd9d8c58c5194c0267842e8efe900e88eb17c0d17d6069e2543870efa5ef8 claws-mail-3.17.3.tar.xz"
+sha512sums="dc29c968dc81a184af8f66c1afe5c9d17558ce6a4a8b196136a9fb5deec96aa67eec42148ed0f4d6d6ee94aec2791247b9034090dac81beec193bd7d366617d7 claws-mail-3.17.8.tar.xz"
diff --git a/user/clazy/APKBUILD b/user/clazy/APKBUILD
new file mode 100644
index 000000000..cdf5211ae
--- /dev/null
+++ b/user/clazy/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=clazy
+pkgver=1.12
+_llvmver=18
+pkgrel=0
+pkgdesc="Clang compiler plugin to warn about Qt best practices"
+url="https://kde.org/applications/development/org.kde.clazy"
+arch="all"
+license="LGPL-2.1+"
+options="!check" # need 'clang-tools-extra'
+depends=""
+makedepends="cmake clang-dev llvm$_llvmver-dev"
+subpackages="$pkgname-doc"
+source="https://download.kde.org/stable/clazy/$pkgver/src/clazy-$pkgver.tar.xz
+ fix-link-fs-lib.patch
+ "
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DLLVM_ROOT="/usr/lib/llvm$_llvmver" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="7a2b4a753098f15936a4731c82c660c1cd4d81949279435e87f00f7f72bef3e32cb574c8991c0707798581278e9fbcae34d354c1e6b77a15a5e26166d658fa9e clazy-1.12.tar.xz
+92e10ad26bae84021b6d076d90e46ad570c9bcb676bcdd3f0d53b46b47b379fb0c757310e91b995851703892003cbc870dacef7de5419575502eccc2715a8ea7 fix-link-fs-lib.patch"
diff --git a/user/clazy/fix-link-fs-lib.patch b/user/clazy/fix-link-fs-lib.patch
new file mode 100644
index 000000000..6bd09bd32
--- /dev/null
+++ b/user/clazy/fix-link-fs-lib.patch
@@ -0,0 +1,11 @@
+diff -ur a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt 2022-08-19 00:58:47.518958902 +0000
++++ b/CMakeLists.txt 2022-08-19 01:03:37.193667800 +0000
+@@ -262,6 +262,7 @@
+ target_link_libraries(clazy-standalone clangFrontend)
+ else()
+ target_link_libraries(clazy-standalone ClazyPlugin)
++ target_link_libraries(clazy-standalone stdc++fs)
+ endif()
+
+ link_to_llvm(clazy-standalone TRUE)
diff --git a/user/clearsans/APKBUILD b/user/clearsans/APKBUILD
index 2f8f486d0..64e815afe 100644
--- a/user/clearsans/APKBUILD
+++ b/user/clearsans/APKBUILD
@@ -11,12 +11,11 @@ license="Apache-2.0"
depends="fontconfig"
makedepends=""
subpackages=""
-source="https://01.org/sites/default/files/downloads/clear-sans/clearsans-$pkgver.zip"
+source="https://distfiles.adelielinux.org/source/archive/$pkgname-$pkgver/$pkgname-$pkgver.zip"
builddir="$srcdir"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ TTF/*.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ "$builddir"/TTF/*.ttf
}
sha512sums="83faebae8b1041ab16bb3c6586574374f70ad1da406ad5d20f07f14b65e00e8645c5393471cea0194b14f2c2d926d6de814f745299062a4dccef2581e6de332d clearsans-1.00.zip"
diff --git a/user/cloc/APKBUILD b/user/cloc/APKBUILD
new file mode 100644
index 000000000..129439670
--- /dev/null
+++ b/user/cloc/APKBUILD
@@ -0,0 +1,28 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=cloc
+pkgver=1.90
+pkgrel=0
+pkgdesc="Perl utility for counting lines of code in various languages"
+url="https://github.com/AlDanial/cloc"
+arch="noarch"
+license="GPL-2.0+"
+depends="perl perl-regexp-common perl-algorithm-diff"
+checkdepends="perl-parallel-forkmanager"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://github.com/AlDanial/cloc/releases/download/v$pkgver/cloc-$pkgver.tar.gz"
+
+build() {
+ make DESTDIR="$pkgdir" -C Unix doc
+}
+
+check() {
+ make DESTDIR="$pkgdir" -C Unix test-perl
+}
+
+package() {
+ make DESTDIR="$pkgdir" -C Unix install
+}
+
+sha512sums="368692b308e8da04246c059814bc24433c128d7937ec2efc12359af17dec0026bda9c982097eab0318852a89cc48098e845bfc10f2ed7340dce824d6ae1415c9 cloc-1.90.tar.gz"
diff --git a/user/clucene/APKBUILD b/user/clucene/APKBUILD
deleted file mode 100644
index 2c5e047e4..000000000
--- a/user/clucene/APKBUILD
+++ /dev/null
@@ -1,79 +0,0 @@
-# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer: Max Rees <maxcrees@me.com>
-pkgname=clucene
-pkgver=2.3.3.4
-pkgrel=5
-pkgdesc="A C++ port of Lucene"
-url="http://www.sourceforge.net/projects/clucene"
-arch="all"
-license="(LGPL-2.1+ OR Apache-2.0) AND RSA-MD AND (LGPL-2.0+ OR Apache-2.0) AND Zlib AND Apache-2.0"
-depends=""
-depends_dev="zlib-dev boost-dev"
-makedepends="cmake $depends_dev"
-subpackages="$pkgname-dev $pkgname-contribs"
-source="http://downloads.sourceforge.net/clucene/clucene-core-$pkgver.tar.gz
- pkgconfig.patch
- install_contribs_lib.patch
- usleep.patch
- disable-threading.patch
-"
-builddir="$srcdir/$pkgname-core-$pkgver"
-
-prepare() {
- default_prepare
- cd "$builddir"
- # Do not use bundled zlib or boost
- sed -ie '/ADD_SUBDIRECTORY (src\/ext)/d' CMakeLists.txt
- rm -rf src/ext
-}
-
-build() {
- cd "$builddir"
- cmake . -DCMAKE_BUILD_TYPE=RelWithDebInfo \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DBUILD_CONTRIBS_LIB=BOOL:ON \
- -DLIB_DESTINATION:PATH=/usr/lib \
- -DLUCENE_SYS_INCLUDES:PATH=/usr/lib \
- -DDISABLE_MULTITHREADING=BOOL:ON
- make
-}
-
-check() {
- cd "$builddir"
-
- # clucene is not smart enough to delete files between successive checks,
- # so let's remove them for it. Otherwise, if check is run a second time
- # without clearing the files beforehand, a lot of tests will fail.
- rm -rf "$builddir/tmp"
- mkdir "$builddir/tmp"
-
- # Need to force cmake to update - some sort of race condition
- touch CMakeCache.txt
- make cl_test
-
- cd bin
- TMP="$builddir/tmp" ./cl_test
-}
-
-package() {
- cd "$builddir"
- make install/fast DESTDIR="$pkgdir"
- rm -r "$pkgdir"/usr/lib/CLuceneConfig.cmake
-}
-
-contribs() {
- pkgdesc="Language specific text analyzers for CLucene"
- mkdir -p "$subpkgdir"/usr/lib
- mv "$pkgdir"/usr/lib/libclucene-contribs*.so.* "$subpkgdir"/usr/lib/
-}
-
-dev() {
- default_dev
- mv "$pkgdir"/usr/lib/CLucene/*.cmake "$subpkgdir"/usr/lib/CLucene/
-}
-
-sha512sums="1c9da9077edcebd46563bd9e47d330518e0b30061016650a759cfe051e9748fdad8932a472b1cca53a6adafed5f41656527271fc5f55ddfcefb558f0d83286b4 clucene-core-2.3.3.4.tar.gz
-b357cb5a1c5d66219f3168724a71af3ebf5c45c752a612d3a69c170b739acc065dc17c261c3a730298ea6c637fe820637a100f73ab03d931734f80bb598fbf55 pkgconfig.patch
-0aa92635949089196e4e7c579e78761e8751987ef5036320a161a4aaa67da3c63756398c903419c76ea0fbdc8a949e871fcb65be98179a9853a24a5a4cacfde3 install_contribs_lib.patch
-5de49cb5eba1f9033f28281e0e5ff0e29fe6842ea3e1cb246c12649dc12dedad15e1811b45ccc989a1b743657eb0eeb4937616aa19ec5ee482cd323f54431b99 usleep.patch
-3ded79aed693f6de35389377eddea0b4b0bb0cafd016f6f766986297c35912b18c1e90cedb1fb1d256765abdaab05ca2999aec2fe7ae309fa75231ac94c519a9 disable-threading.patch"
diff --git a/user/clucene/disable-threading.patch b/user/clucene/disable-threading.patch
deleted file mode 100644
index 87a5d1c91..000000000
--- a/user/clucene/disable-threading.patch
+++ /dev/null
@@ -1,75 +0,0 @@
-Adapted from https://sourceforge.net/p/clucene/bugs/197
---- clucene-core-2.3.3.4/src/shared/CLucene/util/Misc.cpp 2011-03-16 20:21:07.000000000 -0400
-+++ clucene-core-2.3.3.4/src/shared/CLucene/util/Misc.cpp 2018-05-20 19:24:09.219901243 -0400
-@@ -466,6 +466,7 @@
- std::string Misc::toString(const bool value){
- return value ? "true" : "false";
- }
-+#ifndef _CL_DISABLE_MULTITHREADING
- std::string Misc::toString(_LUCENE_THREADID_TYPE value){
- static int32_t nextindex = 0;
- static std::map<_LUCENE_THREADID_TYPE, int32_t> ids;
-@@ -474,6 +475,7 @@
- }
- return toString(ids[value]);
- }
-+#endif
- std::string Misc::toString(const int32_t value){
- char buf[20];
- TCHAR tbuf[20];
---- clucene-core-2.3.3.4/src/shared/CLucene/util/Misc.h 2011-03-16 20:21:07.000000000 -0400
-+++ clucene-core-2.3.3.4/src/shared/CLucene/util/Misc.h 2018-05-20 19:24:09.219901243 -0400
-@@ -67,7 +67,9 @@
-
- static std::string toString(const int32_t value);
- static std::string toString(const int64_t value);
-+ #ifndef _CL_DISABLE_MULTITHREADING
- static std::string toString(const _LUCENE_THREADID_TYPE value);
-+ #endif
- static std::string toString(const bool value);
- static std::string toString(const float_t value);
- static std::string toString(const TCHAR* s, int32_t len=-1);
---- clucene-core-2.3.3.4/src/shared/CLucene/LuceneThreads.h 2011-03-16 20:21:07.000000000 -0400
-+++ clucene-core-2.3.3.4/src/shared/CLucene/LuceneThreads.h 2018-05-20 19:28:05.999899570 -0400
-@@ -13,10 +13,10 @@
-
- #if defined(_CL_DISABLE_MULTITHREADING)
- #define SCOPED_LOCK_MUTEX(theMutex)
-- #define DEFINE_MUTEX(x)
-+ //#define DEFINE_MUTEX(x)
- #define DEFINE_MUTABLE_MUTEX(x)
- #define DEFINE_CONDITION(x)
-- #define STATIC_DEFINE_MUTEX(x)
-+ //#define STATIC_DEFINE_MUTEX(x)
- #define CONDITION_WAIT(theMutex, theCondition)
- #define CONDITION_NOTIFYALL(theCondition)
- #define _LUCENE_CURRTHREADID 1
-@@ -25,11 +25,27 @@
- #define _LUCENE_THREAD_FUNC_RETURN(val) return (int)val;
- #define _LUCENE_THREAD_CREATE(func, arg) (*func)(arg)
- #define _LUCENE_THREAD_JOIN(value) //nothing to do...
-- #define _LUCENE_THREADMUTEX void*
-+ //#define _LUCENE_THREADMUTEX void*
-
- #define _LUCENE_ATOMIC_INC(theInteger) (++(*theInteger))
- #define _LUCENE_ATOMIC_DEC(theInteger) (--(*theInteger))
- #define _LUCENE_ATOMIC_INT int
-+
-+ #define _LUCENE_ATOMIC_INT_SET(x,v) x=v
-+ #define _LUCENE_ATOMIC_INT_GET(x) x
-+
-+ struct CLUCENE_SHARED_EXPORT mutex_thread
-+ {
-+ void lock() {}
-+ void unlock() {}
-+ };
-+ #define _LUCENE_THREADMUTEX CL_NS(util)::mutex_thread
-+
-+ #define DEFINE_MUTEX(theMutex) _LUCENE_THREADMUTEX theMutex;
-+ #define STATIC_DEFINE_MUTEX(theMutex) static _LUCENE_THREADMUTEX theMutex;
-+
-+ #define CONDITION_WAIT(theMutex, theCondition)
-+ #define CONDITION_NOTIFYALL(theCondition)
- #else
- #if defined(_LUCENE_DONTIMPLEMENT_THREADMUTEX)
- //do nothing
diff --git a/user/clucene/install_contribs_lib.patch b/user/clucene/install_contribs_lib.patch
deleted file mode 100644
index 8fbb3c716..000000000
--- a/user/clucene/install_contribs_lib.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-diff -NaurpBb clucene-core-2.3.3.4/CMakeLists.txt clucene-core-2.3.3.4-mod/CMakeLists.txt
---- clucene-core-2.3.3.4/CMakeLists.txt 2011-03-17 03:21:07.000000000 +0300
-+++ clucene-core-2.3.3.4-mod/CMakeLists.txt 2011-08-16 16:56:55.968268152 +0400
-@@ -163,7 +163,7 @@ IF ( BUILD_CONTRIBS )
- SET(BUILD_CONTRIBS_LIB 1)
- ENDIF ( BUILD_CONTRIBS )
- IF ( BUILD_CONTRIBS_LIB )
-- ADD_SUBDIRECTORY (src/contribs-lib EXCLUDE_FROM_ALL)
-+ ADD_SUBDIRECTORY (src/contribs-lib)
- ENDIF ( BUILD_CONTRIBS_LIB )
-
-
-diff -NaurpBb clucene-core-2.3.3.4/src/contribs-lib/CMakeLists.txt clucene-core-2.3.3.4-mod/src/contribs-lib/CMakeLists.txt
---- clucene-core-2.3.3.4/src/contribs-lib/CMakeLists.txt 2011-03-17 03:21:07.000000000 +0300
-+++ clucene-core-2.3.3.4-mod/src/contribs-lib/CMakeLists.txt 2011-08-16 17:14:13.499275499 +0400
-@@ -106,9 +106,26 @@ add_library(clucene-contribs-lib SHARED
- )
- TARGET_LINK_LIBRARIES(clucene-contribs-lib ${clucene_contrib_extra_libs})
-
-+#install public headers.
-+FOREACH(file ${HEADERS})
-+ get_filename_component(apath ${file} PATH)
-+ get_filename_component(aname ${file} NAME)
-+ file(RELATIVE_PATH relpath ${CMAKE_SOURCE_DIR}/src/contribs-lib ${apath})
-+ IF ( NOT aname MATCHES "^_.*" )
-+ install(FILES ${file}
-+ DESTINATION include/${relpath}
-+ COMPONENT development)
-+ ENDIF ( NOT aname MATCHES "^_.*" )
-+ENDFOREACH(file)
-+
- #set properties on the libraries
- SET_TARGET_PROPERTIES(clucene-contribs-lib PROPERTIES
- VERSION ${CLUCENE_VERSION}
- SOVERSION ${CLUCENE_SOVERSION}
- COMPILE_DEFINITIONS_DEBUG _DEBUG
- )
-+
-+#and install library
-+install(TARGETS clucene-contribs-lib
-+ DESTINATION ${LIB_DESTINATION}
-+ COMPONENT runtime )
diff --git a/user/clucene/pkgconfig.patch b/user/clucene/pkgconfig.patch
deleted file mode 100644
index aff20d7b4..000000000
--- a/user/clucene/pkgconfig.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up clucene-core-2.3.3.4/src/core/libclucene-core.pc.cmake.pkgconfig_sys_includes clucene-core-2.3.3.4/src/core/libclucene-core.pc.cmake
---- clucene-core-2.3.3.4/src/core/libclucene-core.pc.cmake.pkgconfig_sys_includes 2011-03-16 19:21:07.000000000 -0500
-+++ clucene-core-2.3.3.4/src/core/libclucene-core.pc.cmake 2012-03-19 09:01:00.689263954 -0500
-@@ -6,6 +6,6 @@ includedir=${prefix}/include:${prefix}/i
- Name: libclucene
- Description: CLucene - a C++ search engine, ported from the popular Apache Lucene
- Version: @CLUCENE_VERSION_MAJOR@.@CLUCENE_VERSION_MINOR@.@CLUCENE_VERSION_REVISION@.@CLUCENE_VERSION_PATCH@
--Libs: -L${prefix}/@LIB_DESTINATION@/ -lclucene-core
--Cflags: -I${prefix}/include -I${prefix}/include/CLucene/ext
-+Libs: -L${prefix}/@LIB_DESTINATION@/ -lclucene-core -lclucene-shared
-+Cflags: -I${prefix}/include -I${prefix}/include/CLucene/ext -I@LUCENE_SYS_INCLUDES@
- ~
diff --git a/user/clucene/usleep.patch b/user/clucene/usleep.patch
deleted file mode 100644
index d6cbac360..000000000
--- a/user/clucene/usleep.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Add missing include needed to run tests which use usleep
-
---- clucene-core-2.3.3.4/src/test/test.h 2011-03-17 00:21:07.000000000 +0000
-+++ clucene-core-2.3.3.4/src/test/test.h 2017-12-27 09:43:25.320000000 +0000
-@@ -23,6 +23,7 @@
- #include <iostream>
- #include <string.h>
- #include <stdio.h>
-+#include <unistd.h>
-
- using namespace std;
-
diff --git a/user/clutter/APKBUILD b/user/clutter/APKBUILD
index d2a53b372..d102ee728 100644
--- a/user/clutter/APKBUILD
+++ b/user/clutter/APKBUILD
@@ -1,38 +1,38 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=clutter
-pkgver=1.26.2
-pkgrel=0
+pkgver=1.26.4
+pkgrel=1
pkgdesc="OpenGL-based interactive canvas library"
url="https://gnome.org"
arch="all"
-options="!check" # testsuite skipped all tests
+options="!check" # Test suite skipped all tests.
license="LGPL-2.0+ AND MIT AND LGPL-2.1+ AND GPL-2.0+"
-makedepends="glib-dev mesa-dev cogl-dev cairo-dev pango-dev json-glib-dev
- atk-dev vala gobject-introspection-dev"
+depends=""
+makedepends="glib-dev libglvnd-dev cogl-dev cairo-dev pango-dev json-glib-dev
+ atk-dev vala gobject-introspection-dev wayland-dev wayland-protocols
+ libxkbcommon-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.gnome.org/sources/clutter/1.26/clutter-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var
+ --localstatedir=/var \
+ --enable-wayland-backend=yes
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="c8008a1a1f111313d9abaff8d4415f112ddc32a02e08845f3735d33bb25b72b082f133daba06749bb9595eaf1ba83b308d30a413fbbe8dcdc1afdd7077a30937 clutter-1.26.2.tar.xz"
+sha512sums="6d43ac09df7671fa2bda74d1231166e8331f3ef1dbe0d167225033b3ddae7377d1062db81b73fc498c2e9f0db467bf4febb7306a6f40c9ef0266dac2a397f43a clutter-1.26.4.tar.xz"
diff --git a/user/cm-unicode/APKBUILD b/user/cm-unicode/APKBUILD
index 30a09c8a0..26e26d477 100644
--- a/user/cm-unicode/APKBUILD
+++ b/user/cm-unicode/APKBUILD
@@ -14,8 +14,7 @@ subpackages=""
source="https://downloads.sourceforge.net/cm-unicode/cm-unicode-$pkgver-ttf.tar.xz"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ *.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ "$builddir"/*.ttf
}
sha512sums="6340b7c6b220c8c887a4b77e77a01a43bedf13d08dd1d62570de70866d0bff908adf3fcb7907149ab2f5ab060650b39eaad3c01c1e8d028bbeb879b058190e70 cm-unicode-0.7.0-ttf.tar.xz"
diff --git a/user/cmocka/APKBUILD b/user/cmocka/APKBUILD
new file mode 100644
index 000000000..302249363
--- /dev/null
+++ b/user/cmocka/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=cmocka
+pkgver=1.1.5
+pkgrel=0
+pkgdesc="Unit testing framework for C"
+url="https://cmocka.org/"
+arch="all"
+license="Apache-2.0"
+depends=""
+makedepends="cmake"
+subpackages="$pkgname-dev"
+source="https://cmocka.org/files/1.1/cmocka-$pkgver.tar.xz
+ uintptr_t.patch
+ "
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ -Bbuild
+ make -C build
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
+}
+
+package() {
+ make DESTDIR="$pkgdir" -C build install
+}
+
+sha512sums="cad7f04757183d004f6eaad39036fc0e24c5e0e987f80e85bc43bc66dba22389cb02b08e25531cc28a541d0a24a86b29be134a2d6fc339128e87d66952f502bd cmocka-1.1.5.tar.xz
+8f928bc6bf4bbe43f461b6387d63ba9c63ef97496e93a13fd28b423767ced8c6935ea40f1a054145bb8efbf2c9b88c4b130a49d55e498da7aab0624fae4e1e44 uintptr_t.patch"
diff --git a/user/cmocka/uintptr_t.patch b/user/cmocka/uintptr_t.patch
new file mode 100644
index 000000000..2950e3933
--- /dev/null
+++ b/user/cmocka/uintptr_t.patch
@@ -0,0 +1,25 @@
+--- cmocka-1.1.5/include/cmocka.h.old 2019-03-28 12:33:50.000000000 +0000
++++ cmocka-1.1.5/include/cmocka.h 2020-01-14 10:59:11.716464203 +0000
+@@ -123,21 +123,7 @@
+ # elif defined(_WIN64)
+ typedef unsigned long int uintptr_t;
+ # else /* _WIN32 */
+-
+-/* ILP32 and LP64 platforms */
+-# ifdef __WORDSIZE /* glibc */
+-# if __WORDSIZE == 64
+- typedef unsigned long int uintptr_t;
+-# else
+- typedef unsigned int uintptr_t;
+-# endif /* __WORDSIZE == 64 */
+-# else /* __WORDSIZE */
+-# if defined(_LP64) || defined(_I32LPx)
+- typedef unsigned long int uintptr_t;
+-# else
+- typedef unsigned int uintptr_t;
+-# endif
+-# endif /* __WORDSIZE */
++# include <stdint.h>
+ # endif /* _WIN32 */
+
+ # define _UINTPTR_T
diff --git a/user/cmus/APKBUILD b/user/cmus/APKBUILD
index 0be94312e..a6f7ac075 100644
--- a/user/cmus/APKBUILD
+++ b/user/cmus/APKBUILD
@@ -1,12 +1,12 @@
-# Contributor: Luis Ressel <aranea@aixah.de>
-# Maintainer: Luis Ressel <aranea@aixah.de>
+# Contributor: Mira Ressel <aranea@aixah.de>
+# Maintainer:
pkgname=cmus
pkgver=2.8.0
-pkgrel=0
+pkgrel=1
pkgdesc="An ncurses based music player with plugin support for many formats"
url="https://cmus.github.io/"
arch="all"
-options="!check" # no test suite
+options="!check" # No test suite.
license="GPL-2.0+"
depends=""
makedepends="alsa-lib-dev faad2-dev ffmpeg-dev flac-dev libao-dev libcddb-dev
@@ -14,10 +14,10 @@ makedepends="alsa-lib-dev faad2-dev ffmpeg-dev flac-dev libao-dev libcddb-dev
opusfile-dev pulseaudio-dev wavpack-dev"
subpackages="$pkgname-doc"
source="$pkgname-$pkgver.tar.gz::https://github.com/$pkgname/$pkgname/archive/v$pkgver.tar.gz
- ppc-libatomic.patch"
+ ppc-libatomic.patch
+ "
build() {
- cd "$builddir"
./configure prefix=/usr \
CONFIG_AAC=y \
CONFIG_ALSA=y \
@@ -57,9 +57,8 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" PREFIX=/usr install
}
sha512sums="cf359dfcefa833a5b10a2d16ac405672bea762b62b7177c115560127035682fba65c15b9a8710179a343d1f99212a0260b5c095542982202e2cd1bef5b0c17fc cmus-2.8.0.tar.gz
-06a91da06cc916aa475467aa90bd7170c7288b68459706c3416700e79ba8707fd7a85bded0c0d5d51d805c15f59ff395670f11318ca5a419d17ab1070a48775f ppc-libatomic.patch"
+1993e5c891d1f88105373a448cf3841cdded4aeef5268ea0591f5940228f9eb5a638cd16e37d5127dcdf76bfd15563c632f780834ee3c0748d2e5015bc292285 ppc-libatomic.patch"
diff --git a/user/cmus/ppc-libatomic.patch b/user/cmus/ppc-libatomic.patch
index 7107fb5db..73cdf1457 100644
--- a/user/cmus/ppc-libatomic.patch
+++ b/user/cmus/ppc-libatomic.patch
@@ -1,5 +1,5 @@
From 9a56c86a663e53195a32b7908cf2bd4349bad5c3 Mon Sep 17 00:00:00 2001
-From: Luis Ressel <aranea@aixah.de>
+From: Mira Ressel <aranea@aixah.de>
Date: Fri, 29 Mar 2019 17:16:16 +0100
Subject: [PATCH] Link against libatomic on ppc32. DO NOT UPSTREAM.
diff --git a/user/cogl/APKBUILD b/user/cogl/APKBUILD
index 4f1b2202f..7e0311e66 100644
--- a/user/cogl/APKBUILD
+++ b/user/cogl/APKBUILD
@@ -1,21 +1,21 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=cogl
-pkgver=1.22.2
-pkgrel=0
+pkgver=1.22.8
+pkgrel=1
pkgdesc="GObject-based GL/GLES abstraction library"
url="https://gnome.org"
arch="all"
-options="!check" # broken testsuite, no logs/messages to determine why
+options="!check" # broken testsuite, no logs/messages to determine why
license="MIT AND SGI-B-2.0 AND BSD-3-Clause AND Public-Domain AND LGPL-2.0+ AND Apache-2.0"
+depends=""
makedepends="glib-dev libxcomposite-dev libxrandr-dev mesa-dev cairo-dev
- pango-dev vala gobject-introspection-dev gdk-pixbuf-dev"
+ pango-dev vala gobject-introspection-dev gdk-pixbuf-dev libglvnd-dev
+ wayland-dev wayland-protocols"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.gnome.org/sources/cogl/1.22/cogl-$pkgver.tar.xz
- fix-wayland-egl-check.patch"
+source="https://download.gnome.org/sources/cogl/1.22/cogl-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -24,19 +24,18 @@ build() {
--mandir=/usr/share/man \
--localstatedir=/var \
--enable-kms-egl-platform=yes \
- --enable-xlib-egl-platform=yes
+ --enable-xlib-egl-platform=yes \
+ --enable-wayland-egl-platform=yes \
+ --enable-wayland-egl-server=yes
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="2ec99f5ff22683d12925b9a1f748387b47c4506aaf3c5afec851b3b6fe6b7cdfd211fb7e4359bd7a1d1b7cb3cb7fbd257efbcb7d2941d0f133a60bad1c9645e3 cogl-1.22.2.tar.xz
-73fa3a7258e2624d13abfe36259bef1a28e993653f0fdebfb4b0822752fa40a95399f4f9cd707873938bc6b8edcc7db46228247851471899f05a7e7132af58c7 fix-wayland-egl-check.patch"
+sha512sums="702d5b1b22dc34bffaa82c9c57021caf036ee3a13fa7ca24a90cca1ebc0f8b7a86070cc1fe5125757132b02774fa874bb55675c96d1ccbc233fac0e6132da65f cogl-1.22.8.tar.xz"
diff --git a/user/cogl/fix-wayland-egl-check.patch b/user/cogl/fix-wayland-egl-check.patch
deleted file mode 100644
index 72ec484e5..000000000
--- a/user/cogl/fix-wayland-egl-check.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nurd cogl-1.22.2/cogl/winsys/cogl-winsys-egl.c cogl-1.22.2.new/cogl/winsys/cogl-winsys-egl.c
---- cogl-1.22.2/cogl/winsys/cogl-winsys-egl.c 2016-08-26 11:18:16.000000000 -0500
-+++ cogl-1.22.2.new/cogl/winsys/cogl-winsys-egl.c 2018-09-07 08:28:36.950138458 -0500
-@@ -1029,7 +1029,7 @@
- egl_ctx = EGL_NO_CONTEXT;
- else
- #endif
--#if COGL_HAS_WAYLAND_EGL_SERVER_SUPPORT
-+#ifdef COGL_HAS_WAYLAND_EGL_SERVER_SUPPORT
- /* The WL_bind_wayland_display spec states that EGL_NO_CONTEXT is to be used
- * in conjunction with the EGL_WAYLAND_BUFFER_WL target */
- if (target == EGL_WAYLAND_BUFFER_WL)
diff --git a/user/colordiff/APKBUILD b/user/colordiff/APKBUILD
new file mode 100644
index 000000000..0ef752514
--- /dev/null
+++ b/user/colordiff/APKBUILD
@@ -0,0 +1,28 @@
+# Contributor: Alice <alicela1n@protonmail.com>
+# Maintainer: Alice <alicela1n@protonmail.com>
+pkgname=colordiff
+pkgver=1.0.21
+pkgrel=0
+pkgdesc="Wrapper for diff that produces the same output but with syntax highlighting"
+url="https://www.colordiff.org/"
+arch="noarch"
+options="!check" # No test suite
+license="GPL-3.0+"
+depends="diffutils less perl"
+makedepends="xmlto w3m"
+subpackages="$pkgname-doc"
+source="https://www.colordiff.org/$pkgname-$pkgver.tar.gz"
+
+build() {
+ make
+}
+
+package() {
+ install -Dm 755 colordiff.pl "$pkgdir"/usr/bin/colordiff
+ install -Dm 755 cdiff.sh "$pkgdir"/usr/bin/cdiff
+ install -Dm 644 colordiff.1 "$pkgdir"/usr/share/man/man1/colordiff.1
+ install -Dm 644 cdiff.1 "$pkgdir"/usr/share/man/man1/cdiff.1
+ install -Dm 644 colordiffrc "$pkgdir"/etc/colordiffrc
+}
+
+sha512sums="e814e38db0db6e0ba420c64bc53815c1c9e74457390bbe45f31eb9539c068efc9354c11dbf1259b1a64bd3cd5b2cc452441f822e030af80d18fe5b5c5f627c9d colordiff-1.0.21.tar.gz"
diff --git a/user/comfortaa/APKBUILD b/user/comfortaa/APKBUILD
index cca3023f9..98118e63f 100644
--- a/user/comfortaa/APKBUILD
+++ b/user/comfortaa/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=comfortaa
-pkgver=3.001
+pkgver=3.101
pkgrel=0
pkgdesc="Stylish, modern, free TrueType font"
url="https://www.deviantart.com/aajohan/art/Comfortaa-font-105395949"
@@ -11,13 +11,11 @@ license="OFL-1.1"
depends="fontconfig"
makedepends=""
subpackages=""
-source="https://distfiles.adelielinux.org/source/comfortaa-$pkgver.zip"
-builddir="$srcdir/$pkgver"
+source="$pkgname-$pkgver.tar.gz::https://github.com/alexeiva/comfortaa/archive/3.101.tar.gz"
package() {
- cd "$builddir"
mkdir -p "$pkgdir"/usr/share/fonts/X11/TTF/
- install -D -m644 *.ttf "$pkgdir"/usr/share/fonts/X11/TTF/
+ install -D -m644 "$builddir"/fonts/TTF/*.ttf "$pkgdir"/usr/share/fonts/X11/TTF/
}
-sha512sums="caf998f9a1dd994f790a2ace1fcc8bf5632f21a61d849e6b5590d808d646556115ec08142397817d9dcfc1bb507d62ca52caf061e5c6048f89bc77f6e74c1f4b comfortaa-3.001.zip"
+sha512sums="0411960f72729513c234de753271e311465968ea62975201e1d54125aee16520a065f983b37e588f91cf7e5d0f439e7f1095ea02ea13f94b605b4b72ff626b7f comfortaa-3.101.tar.gz"
diff --git a/user/comic-neue/APKBUILD b/user/comic-neue/APKBUILD
index dc12db220..0142a6618 100644
--- a/user/comic-neue/APKBUILD
+++ b/user/comic-neue/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=comic-neue
-pkgver=2.4
+pkgver=2.5
pkgrel=0
pkgdesc="Casual typeface"
url="http://comicneue.com/"
@@ -15,8 +15,7 @@ source="$pkgname-$pkgver.zip::https://github.com/crozynski/comicneue/archive/v$p
builddir="$srcdir/comicneue-$pkgver"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF/ OTF/*.otf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF/ "$builddir"/Fonts/OTF/ComicNeue/*.otf
}
-sha512sums="12c93efc00e1caecd6be9080de37ecf2049384185c4043dc250945b7cb47fbbe3fcc973ebdf7d58f3351ba11f87341c24af7e1039b873d463b0d84da9c72f0b8 comic-neue-2.4.zip"
+sha512sums="32cc6370f127dd7d773ce80a1c0530c9fe329a5e06fab6e416e1075f99f27a9eb551f3e27c0bec307862b171130d5ae774f32f8385618c3f91a2abb796c3715c comic-neue-2.5.zip"
diff --git a/user/command-not-found/APKBUILD b/user/command-not-found/APKBUILD
index 96cd1127d..c91ff15a4 100644
--- a/user/command-not-found/APKBUILD
+++ b/user/command-not-found/APKBUILD
@@ -4,20 +4,19 @@ pkgname=command-not-found
pkgver=0.3
pkgrel=0
pkgdesc="Provide suggestions for missing commands via APK"
-url="https://git.dereferenced.org/kaniini/command-not-found"
+url=" "
arch="noarch"
options="!check" # No test suite.
license="MIT"
depends="apk-tools"
makedepends=""
subpackages="$pkgname-bash $pkgname-zsh"
-source="$pkgname-$pkgver.tar.gz::https://git.dereferenced.org/kaniini/command-not-found/archive/v$pkgver.tar.gz
+source="https://distfiles.adelielinux.org/source/$pkgname-$pkgver.tar.gz
explicit-apk-path.patch
"
builddir="$srcdir/$pkgname"
package() {
- cd "$builddir"
install -d -D -m755 "$pkgdir"/usr/libexec
install -m755 command-not-found.sh "$pkgdir"/usr/libexec/command-not-found
}
@@ -25,17 +24,15 @@ package() {
bash() {
pkgdesc="$pkgdesc (Bash shell support)"
install_if="$pkgname=$pkgver-r$pkgrel bash"
- cd "$builddir"
install -d -D -m755 "$subpkgdir"/etc/profile.d/
- install -m755 profiles/command-not-found.ash "$subpkgdir"/etc/profile.d/command-not-found.sh
+ install -m755 "$builddir"/profiles/command-not-found.ash "$subpkgdir"/etc/profile.d/command-not-found.sh
}
zsh() {
pkgdesc="$pkgdesc (Z shell support)"
install_if="$pkgname=$pkgver-r$pkgrel zsh"
- cd "$builddir"
install -d -D -m755 "$subpkgdir"/etc/zprofile.d/
- install -m755 profiles/command-not-found.zsh "$subpkgdir"/etc/zprofile.d/command-not-found.zsh
+ install -m755 "$builddir"/profiles/command-not-found.zsh "$subpkgdir"/etc/zprofile.d/command-not-found.zsh
}
sha512sums="a9fc6cf063195abf4bbf015f770b93fb23e2afc0efbed10a54adc1e0d38d7f9a57ab5817a52e483dd01aa21888e76f5aaefdbf89c835f227be2f150848ddb7ad command-not-found-0.3.tar.gz
diff --git a/user/compface/APKBUILD b/user/compface/APKBUILD
index 0c742f166..6cc0b4c03 100644
--- a/user/compface/APKBUILD
+++ b/user/compface/APKBUILD
@@ -9,13 +9,11 @@ arch="all"
options="!check" # No test suite.
license="MIT"
depends=""
-depends_dev=""
-makedepends="$depends_dev"
+makedepends=""
subpackages="$pkgname-dev $pkgname-doc"
source="http://ftp.xemacs.org/pub/xemacs/aux/compface-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,7 +25,6 @@ build() {
}
package() {
- cd "$builddir"
make prefix="$pkgdir"/usr MANDIR="$pkgdir"/usr/share/man install
}
diff --git a/user/compton-conf/APKBUILD b/user/compton-conf/APKBUILD
deleted file mode 100644
index 1753aff6c..000000000
--- a/user/compton-conf/APKBUILD
+++ /dev/null
@@ -1,39 +0,0 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-pkgname=compton-conf
-pkgver=0.14.1
-pkgrel=0
-pkgdesc="GUI configuration tool for the Compton X compositor"
-url="https://lxqt.org"
-arch="all"
-options="!check" # No test suite.
-license="LGPL-2.1+"
-depends=""
-makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qttools-dev
- libconfig-dev liblxqt-dev lxqt-build-tools>=0.6.0"
-subpackages=""
-source="https://github.com/lxqt/compton-conf/releases/download/$pkgver/compton-conf-$pkgver.tar.xz"
-
-build() {
- cd "$builddir"
- if [ "$CBUILD" != "$CHOST" ]; then
- CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
- fi
- mkdir -p build && cd build
- cmake \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_INSTALL_LIBDIR=lib \
- -DBUILD_SHARED_LIBS=True \
- -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
- -DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
-}
-
-package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
-}
-
-sha512sums="76cacb0960112ab3d0b7a05fba3ac2418c2bd37f4273fc20383b49ce035fd045a2a8e8a1ae5a8a5dc116f46ab6ccd7a5764dd2c3ec64822d930c7dd268533db4 compton-conf-0.14.1.tar.xz"
diff --git a/user/compton/APKBUILD b/user/compton/APKBUILD
index 338f123de..3b0dee878 100644
--- a/user/compton/APKBUILD
+++ b/user/compton/APKBUILD
@@ -1,20 +1,20 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=compton
pkgver=4
-pkgrel=0
+pkgrel=1
pkgdesc="Lightweight compositor for X11"
url="https://github.com/yshui/compton"
arch="all"
-options="!check" # no tests
+options="!check" # No test suite.
license="MIT AND MPL-2.0"
+depends=""
makedepends="meson libx11-dev libxext-dev libev-dev xcb-util-renderutil-dev
- xcb-util-image-dev pixman-dev libconfig-dev pcre-dev mesa-dev
+ xcb-util-image-dev pixman-dev libconfig-dev pcre-dev libglvnd-dev
dbus-dev"
-source="compton-$pkgver.tar.gz::https://github.com/yshui/compton/archive/v$pkgver.tar.gz"
+source="https://distfiles.adelielinux.org/source/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
meson \
--prefix=/usr \
--sysconfdir=/etc \
@@ -26,7 +26,6 @@ build() {
}
package() {
- cd "$builddir"
DESTDIR="$pkgdir" ninja -C output install
}
diff --git a/user/confuse/APKBUILD b/user/confuse/APKBUILD
index 3fe8f33b4..fc31d73d1 100644
--- a/user/confuse/APKBUILD
+++ b/user/confuse/APKBUILD
@@ -1,20 +1,22 @@
-# Contributor: Luis Ressel <aranea@aixah.de>
-# Maintainer: Luis Ressel <aranea@aixah.de>
+# Contributor: Mira Ressel <aranea@aixah.de>
+# Maintainer:
pkgname=confuse
-pkgver=3.2.2
+pkgver=3.3
pkgrel=0
pkgdesc="Small configuration file parser library for C"
url="https://github.com/martinh/libconfuse"
arch="all"
-options="!checkroot"
license="ISC"
depends=""
makedepends=""
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="$url/releases/download/v$pkgver/$pkgname-$pkgver.tar.xz"
+source="https://github.com/martinh/libconfuse/releases/download/v$pkgver/$pkgname-$pkgver.tar.xz"
+
+# secfixes:
+# 3.3-r0:
+# - CVE-2018-19760
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,13 +31,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="c6baea65e064fe7f2d1bde187c6dcbb7f03c31f5d777cb04576f9cc2d94e9c96b7ee202e030e9a2c7eb619deb240d9e76fb12b3528ae5aa0d3abe231354d12c9 confuse-3.2.2.tar.xz"
+sha512sums="93cc62d98166199315f65a2f6f540a9c0d33592b69a2c6a57fd17f132aecc6ece39b9813b96c9a49ae2b66a99b7eba1188a9ce9e360e1c5fb4b973619e7088a0 confuse-3.3.tar.xz"
diff --git a/user/consolekit2/APKBUILD b/user/consolekit2/APKBUILD
deleted file mode 100644
index 3325c3cb1..000000000
--- a/user/consolekit2/APKBUILD
+++ /dev/null
@@ -1,57 +0,0 @@
-# Contributor: Bart Ribbers <bribbers@disroot.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgbase=ConsoleKit2
-pkgname=consolekit2
-pkgver=1.2.1
-pkgrel=0
-pkgdesc="Framework for defining and tracking users, login sessions, and seats"
-provides="consolekit=$pkgver"
-replaces="consolekit"
-arch="all"
-url="https://consolekit2.github.io/ConsoleKit2"
-license="GPL-2.0+"
-depends="eudev polkit"
-makedepends="acl-dev docbook-xml eudev-dev glib-dev libdrm-dev libevdev-dev
- libnih-dev libxslt-dev linux-pam-dev polkit-dev xmlto xorg-server-dev
- zlib-dev"
-checkdepends="libxml2-utils"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-openrc"
-source="https://github.com/ConsoleKit2/$pkgbase/releases/download/$pkgver/$pkgbase-$pkgver.tar.bz2
- consolekit2.initd
- pam-foreground-compat.ck"
-# Capital "ConsoleKit"
-builddir="$srcdir"/$pkgbase-$pkgver
-
-build() {
- cd "$builddir"
- XMLTO_FLAGS='--skip-validation' ./configure \
- --prefix=/usr \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --disable-static \
- --enable-pam-module \
- --enable-udev-acl \
- --enable-tests \
- --enable-docbook-docs \
- --enable-polkit
- sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool
- make
-}
-
-check() {
- cd "$builddir"
- make check
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
- install -m 755 "$srcdir"/pam-foreground-compat.ck \
- "$pkgdir"/usr/lib/ConsoleKit/run-session.d/
- install -D -m755 "$srcdir"/consolekit2.initd \
- "$pkgdir"/etc/init.d/consolekit
-}
-
-sha512sums="31befe89f7fa604138bfb0722fc6cf12f0934bac004f98fc331004eb5a7f466ed7bd0dc9adc9869da739974208f9a3bc125068ff8a60d4b2badb58ef70a3eb10 ConsoleKit2-1.2.1.tar.bz2
-8c16c452707475bdd4a50d3ade367d52ad92a6560be48b4e21e5b5eadef6e56c39d3d03d3a64f9b45a59eca50179cf5aa9c11978904d5d101db7498fb9bc0339 consolekit2.initd
-3b114fbbe74cfba0bfd4dad0eb1b85d08b4979a998980c1cbcd7f44b8a16b0ceca224680d4f4a1644cd24698f8817e5e8bdfcdc4ead87a122d0e323142f47910 pam-foreground-compat.ck"
diff --git a/user/consolekit2/consolekit2.initd b/user/consolekit2/consolekit2.initd
deleted file mode 100644
index 697eea8f9..000000000
--- a/user/consolekit2/consolekit2.initd
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/sbin/openrc-run
-
-description="Tracks sessions and seats"
-pidfile="/var/run/ConsoleKit/pid"
-command="/usr/sbin/console-kit-daemon"
-
-depend() {
- need dbus
-}
diff --git a/user/consolekit2/pam-foreground-compat.ck b/user/consolekit2/pam-foreground-compat.ck
deleted file mode 100644
index c9255503c..000000000
--- a/user/consolekit2/pam-foreground-compat.ck
+++ /dev/null
@@ -1,17 +0,0 @@
-#!/bin/sh
-TAGDIR=/var/run/console
-
-[ -n "$CK_SESSION_USER_UID" ] || exit 1
-[ "$CK_SESSION_IS_LOCAL" = "true" ] || exit 0
-
-TAGFILE="$TAGDIR/`getent passwd $CK_SESSION_USER_UID | cut -f 1 -d:`"
-
-if [ "$1" = "session_added" ]; then
- mkdir -p "$TAGDIR"
- echo "$CK_SESSION_ID" >> "$TAGFILE"
-fi
-
-if [ "$1" = "session_removed" ] && [ -e "$TAGFILE" ]; then
- sed -i "\%^$CK_SESSION_ID\$%d" "$TAGFILE"
- [ -s "$TAGFILE" ] || rm -f "$TAGFILE"
-fi
diff --git a/user/convertlit/APKBUILD b/user/convertlit/APKBUILD
index 49cce0d46..19bea9b84 100644
--- a/user/convertlit/APKBUILD
+++ b/user/convertlit/APKBUILD
@@ -11,19 +11,17 @@ license="GPL-2.0"
depends=""
makedepends="libtommath-dev"
subpackages=""
-source="http://www.convertlit.com/${pkgname}${pkgver/./}src.zip
+source="http://www.convertlit.com/${pkgname}$(echo $pkgver | sed s/\\.//)src.zip
lib.patch
"
builddir="$srcdir/"
build() {
- cd "$builddir"
make -C lib
make -C clit18
}
package() {
- cd "$builddir"
install -D -m755 clit18/clit "$pkgdir"/usr/bin/clit
}
diff --git a/user/corindon-red/APKBUILD b/user/corindon-red/APKBUILD
deleted file mode 100644
index e099c5de9..000000000
--- a/user/corindon-red/APKBUILD
+++ /dev/null
@@ -1,27 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=corindon-red
-pkgver=1.0
-pkgrel=0
-pkgdesc="Corindon theme for Aurorae (Red)"
-url="https://store.kde.org/p/1002602/"
-arch="noarch"
-license="GPL-2.0+"
-options="!check" # No test suite.
-depends=""
-makedepends=""
-source="https://dl.opendesktop.org/api/files/downloadfile/id/1460740699/s/90b6b780028e72203f2a0fba41edf43a/t/1520219138/u//122445-corindon-red.tar.gz"
-builddir="$srcdir/"
-
-build() {
- cd "$builddir"
-}
-
-package() {
- cd "$builddir"
- mkdir -p "$pkgdir"/usr/share/aurorae/themes
-
- mv "$builddir"/corindon-red "$pkgdir"/usr/share/aurorae/themes/
-}
-
-sha512sums="9be72e3404eac6c7f0093038b1f873064883ed62ab81486133ef1d9ce50a9ede43d68ed61ebc3280289433abf8a794ca6591c906f51636dec5c1fa197626a630 122445-corindon-red.tar.gz"
diff --git a/user/courier-prime/APKBUILD b/user/courier-prime/APKBUILD
index 94cdce083..950e88c1f 100644
--- a/user/courier-prime/APKBUILD
+++ b/user/courier-prime/APKBUILD
@@ -14,8 +14,7 @@ subpackages=""
source="https://dev.gentoo.org/~jstein/dist/courier-prime-$pkgver.tar.xz"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ *.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ "$builddir"/*.ttf
}
sha512sums="fef9d7f09dafbdb9d8626cb06cac617319d5ec43aef29fe7f6ee25156b380f9ec9684715d6012f05cb40d9511d44cf36a9ed1951281218b2c545e6ce4e7cdbda courier-prime-1.203.tar.xz"
diff --git a/user/coverage/APKBUILD b/user/coverage/APKBUILD
index 1cea3561d..c604e178a 100644
--- a/user/coverage/APKBUILD
+++ b/user/coverage/APKBUILD
@@ -1,31 +1,28 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=coverage
-pkgver=4.5.1
+pkgver=6.5.0
pkgrel=0
pkgdesc="Code coverage testing for Python"
url="https://coverage.readthedocs.io/"
arch="all"
license="Apache-2.0"
depends="python3"
-makedepends="python3-dev"
checkdepends="py3-tox"
+makedepends="python3-dev"
subpackages=""
-source="https://files.pythonhosted.org/packages/35/fe/e7df7289d717426093c68d156e0fd9117c8f4872b6588e8a8928a0f68424/coverage-$pkgver.tar.gz"
+source="https://files.pythonhosted.org/packages/source/c/coverage/coverage-$pkgver.tar.gz"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py check
}
package() {
- cd "$builddir"
python3 setup.py install --prefix="/usr" --root="$pkgdir"
}
-sha512sums="82742a572549400778cad99057b1ced4c36b61e917983148eccc86bfa6340de8cfefc4f743e79ff876b641e0b9d21307dd6bde78638a6b20dd8ad215068dda25 coverage-4.5.1.tar.gz"
+sha512sums="4f2ec0bf69a83471a2b5a73b6a2212372ee6e32ccc4c72e0d33eef915939152f3213ab60e1a22ce2b72791e706c2223b0c81c87b95bbfadd1e828fa1a9fff120 coverage-6.5.0.tar.gz"
diff --git a/user/cppcheck/APKBUILD b/user/cppcheck/APKBUILD
new file mode 100644
index 000000000..e4304ae72
--- /dev/null
+++ b/user/cppcheck/APKBUILD
@@ -0,0 +1,54 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=cppcheck
+pkgver=2.7
+pkgrel=0
+pkgdesc="Tool for static C/C++ code analysis"
+url="https://cppcheck.sourceforge.io/"
+arch="all"
+license="GPL-3.0-only"
+depends=""
+makedepends="cmake pcre-dev qt5-qtbase-dev qt5-qttools-dev z3-dev"
+subpackages="$pkgname-gui"
+source="cppcheck-$pkgver.tar.gz::https://github.com/danmar/cppcheck/archive/$pkgver.tar.gz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DBUILD_GUI=ON \
+ -DBUILD_TESTS=ON \
+ -DHAVE_RULES=ON \
+ -DUSE_MATCHCOMPILER=ON \
+ -DUSE_Z3=ON \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+gui() {
+ pkgdesc="$pkgdesc (Qt UI)"
+ depends="cppcheck"
+ mkdir -p "$subpkgdir"/usr/share "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/cppcheck-gui "$subpkgdir"/usr/bin/
+ mv "$pkgdir"/usr/bin/*.qm "$subpkgdir"/usr/bin/
+ mv "$pkgdir"/usr/share/applications "$subpkgdir"/usr/share/
+ mv "$pkgdir"/usr/share/icons "$subpkgdir"/usr/share/
+}
+
+sha512sums="22da64126ec76fa2b3c533fe4c82d8c3a46a274bce78aa2495bffed5491c604891ba46684499a28a4a22ab928979e9388e52df36ad0e2b001b81619c26791aad cppcheck-2.7.tar.gz"
diff --git a/user/cppunit/APKBUILD b/user/cppunit/APKBUILD
index f334d23f1..4efda7916 100644
--- a/user/cppunit/APKBUILD
+++ b/user/cppunit/APKBUILD
@@ -1,17 +1,18 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=cppunit
-pkgver=1.14.0
+pkgver=1.15.1
pkgrel=0
pkgdesc="C++ unit testing framework"
url="https://www.freedesktop.org/wiki/Software/cppunit/"
arch="all"
license="LGPL-2.1+"
+depends=""
+makedepends=""
subpackages="$pkgname-dev $pkgname-doc"
source="http://dev-www.libreoffice.org/src/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
LIBS="-ldl" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -24,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="4ea1da423c6f7ab37e4144689f593396829ce74d43872d6b10709c1ad5fbda4ee945842f7e9803592520ef81ac713e95a3fe130295bf048cd32a605d1959882e cppunit-1.14.0.tar.gz"
+sha512sums="0feb47faec451357bb4c4e287efa17bb60fd3ad966d5350e9f25b414aaab79e94921024b0c0497672f8d3eeb22a599213d2d71d9e1d28b243b3e37f3a9a43691 cppunit-1.15.1.tar.gz"
diff --git a/user/cracklib/APKBUILD b/user/cracklib/APKBUILD
index eba2a0c49..7f457604f 100644
--- a/user/cracklib/APKBUILD
+++ b/user/cracklib/APKBUILD
@@ -1,47 +1,52 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=cracklib
-pkgver=2.9.6
+pkgver=2.9.8
pkgrel=0
pkgdesc="Library for checking passwords against dictionary words"
url=" "
arch="all"
license="LGPL-2.0+"
depends=""
-makedepends=""
+makedepends="autoconf automake libtool"
subpackages="$pkgname-dev $pkgname-lang"
triggers="$pkgname.trigger=/usr/share/dict"
-source="https://github.com/cracklib/cracklib/releases/download/cracklib-$pkgver/cracklib-$pkgver.tar.gz
+source="https://github.com/cracklib/cracklib/releases/download/v$pkgver/cracklib-$pkgver.tar.bz2
$pkgname.trigger
+ nls.patch
"
+# secfixes:
+# 2.9.7-r0:
+# - CVE-2016-6318
+
prepare() {
- cd "$builddir"
default_prepare
+ # autogen.sh is not included in the dist tarball, but only calls:
+ autoreconf -f -i
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var
+ --localstatedir=/var \
+ --without-python
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -D -m644 dicts/cracklib-small "$pkgdir"/usr/share/dict/cracklib-small
}
-sha512sums="2b09672e5b412d670e7ed911ebf0c0023fe2901ea05c9c02eefb7a58a13cddbc27a65d75bb20be9f8cebf4c90a9a56dfe1a3b656dff62b1d6048f5376e671786 cracklib-2.9.6.tar.gz
-deef4710a3bf78348adfe699ff995acc21a7671ab03c4dd28da7f38f4a83008af4c97c9c1d4e1e98a47c0148c84146b36477f41f98fb0ee028cc0fadebb85ab9 cracklib.trigger"
+sha512sums="bba1b82067156f44095b282c70c06a05e58572cde7ad2430dd24c4b42ae98be86708ea86ba8b7104aa5887e16ac90d7cf3ae613b84ab9c0f7602307d78b75371 cracklib-2.9.8.tar.bz2
+deef4710a3bf78348adfe699ff995acc21a7671ab03c4dd28da7f38f4a83008af4c97c9c1d4e1e98a47c0148c84146b36477f41f98fb0ee028cc0fadebb85ab9 cracklib.trigger
+100edacf91a4c251d4b05c0f550164fefc3fdaae4b715b24b9c42ec8cc17916b0929f96881982441dddf0fc7b8b91c9423bf0518cb571864f302d054c24a0770 nls.patch"
diff --git a/user/cracklib/nls.patch b/user/cracklib/nls.patch
new file mode 100644
index 000000000..20d695fc0
--- /dev/null
+++ b/user/cracklib/nls.patch
@@ -0,0 +1,48 @@
+From f0610dec6dafa550c87809d39ea1c43701af4f31 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Sat, 26 Nov 2022 19:55:12 -0600
+Subject: [PATCH] util: Call bindtextdomain to initialise gettext
+
+This fixes localised message output in the following cases:
+
+* non-standard PREFIX on GNU systems
+
+ GNU systems wouldn't be able to find the message catalog files.
+
+* musl systems
+
+ musl relies on bindtextdomain being called; it has no default catalog
+ path.
+---
+ util/Makefile.am | 2 +-
+ util/check.c | 1 +
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/util/Makefile.am b/util/Makefile.am
+index 4649416..409dc29 100644
+--- a/util/Makefile.am
++++ b/util/Makefile.am
+@@ -6,7 +6,7 @@ dist_sbin_SCRIPTS = create-cracklib-dict cracklib-format
+
+ LDADD = ../lib/libcrack.la
+
+-AM_CPPFLAGS = -I. -I.. -I$(top_srcdir)/lib '-DDEFAULT_CRACKLIB_DICT="$(DEFAULT_CRACKLIB_DICT)"' -Wall
++AM_CPPFLAGS = -I. -I.. -I$(top_srcdir)/lib '-DDEFAULT_CRACKLIB_DICT="$(DEFAULT_CRACKLIB_DICT)"' '-DLOCALEDIR="$(localedir)"' -Wall
+
+ cracklib_check_SOURCES = check.c
+ cracklib_check_LDADD = $(LDADD) $(LTLIBINTL)
+diff --git a/util/check.c b/util/check.c
+index 7db0c88..bb8fff5 100644
+--- a/util/check.c
++++ b/util/check.c
+@@ -24,6 +24,7 @@ main(int argc, char **argv)
+ setlocale(LC_ALL, "");
+
+ #ifdef ENABLE_NLS
++ bindtextdomain(PACKAGE, LOCALEDIR);
+ textdomain(PACKAGE);
+ #endif
+
+--
+2.36.0
+
diff --git a/user/cram/APKBUILD b/user/cram/APKBUILD
index 73bb7c8cc..505e64ef8 100644
--- a/user/cram/APKBUILD
+++ b/user/cram/APKBUILD
@@ -8,26 +8,23 @@ url="https://bitheap.org/cram/"
arch="noarch"
license="GPL-2.0-only"
depends="python3"
-makedepends="cmd:which"
checkdepends="coverage"
+makedepends="cmd:which"
subpackages=""
source="https://bitheap.org/cram/cram-$pkgver.tar.gz
die-py2-die.patch
"
build() {
- cd "$builddir"
make PYTHON=python3
}
check() {
- cd "$builddir"
# tests are not 100% coverage
make PYTHON=python3 check || true
}
package() {
- cd "$builddir"
# we can't use make because there's no --root option
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
diff --git a/user/cryptsetup/APKBUILD b/user/cryptsetup/APKBUILD
new file mode 100644
index 000000000..1786fbb0d
--- /dev/null
+++ b/user/cryptsetup/APKBUILD
@@ -0,0 +1,61 @@
+# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
+# Maintainer:
+pkgname=cryptsetup
+pkgver=2.3.4
+pkgrel=1
+pkgdesc="Utility for setting up encrypted filesystems"
+url="https://gitlab.com/cryptsetup/cryptsetup"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends_build=""
+makedepends_host="lvm2-dev openssl-dev popt-dev util-linux-dev json-c-dev
+ argon2-dev"
+makedepends="$makedepends_build $makedepends_host"
+checkdepends="bash debianutils-which lvm2 sharutils"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-libs $pkgname-openrc"
+source="https://www.kernel.org/pub/linux/utils/$pkgname/v${pkgver%.*}/$pkgname-$pkgver.tar.gz
+ dmcrypt.confd
+ dmcrypt.initd
+ "
+
+build() {
+ ./configure \
+ --build="$CBUILD" \
+ --host="$CHOST" \
+ --prefix=/usr \
+ --libdir=/lib \
+ --sbindir=/sbin \
+ --disable-static \
+ --enable-libargon2 \
+ --with-crypto_backend=openssl
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR=$pkgdir install
+
+ mkdir -p "$pkgdir"/usr/lib
+ mv "$pkgdir"/lib/pkgconfig "$pkgdir"/usr/lib/
+
+ install -Dm644 "$srcdir"/dmcrypt.confd "$pkgdir"/etc/conf.d/dmcrypt
+ install -Dm755 "$srcdir"/dmcrypt.initd "$pkgdir"/etc/init.d/dmcrypt
+
+ mkdir -p "$pkgdir"/usr/share/doc/$pkgname/
+ install -m644 README TODO FAQ NEWS docs/v${pkgver}-ReleaseNotes \
+ "$pkgdir"/usr/share/doc/$pkgname/
+}
+
+libs() {
+ pkgdesc="Cryptsetup shared library"
+ mkdir -p "$subpkgdir"
+ mv "$pkgdir"/lib "$subpkgdir"/
+}
+
+sha512sums="a0a4981ca7294d6f0568bc9465e78ee1781ad73fe77e8daa0bbe67693534f02d3510e6fba9f76749b90ce7533bc9ac96dd27b73d733f8051e9560a3b4196ca3c cryptsetup-2.3.4.tar.gz
+74422d5e1614b43af894ea01da1ea80d805ec7f77981cbb80a6b1a4becad737a8825d7269812499095a7f50d39fa7da5bf4e4edae63529b1fe87b9176943a733 dmcrypt.confd
+81dad61cdecf1dc529b26eb3cdc15979a582c876b01268f88e7a71c8fae6911137c03bfa63fee64e064e5fb31f673610be27ecab9fc432229f13e7040698bd5c dmcrypt.initd"
diff --git a/user/cryptsetup/dmcrypt.confd b/user/cryptsetup/dmcrypt.confd
new file mode 100644
index 000000000..642ff0870
--- /dev/null
+++ b/user/cryptsetup/dmcrypt.confd
@@ -0,0 +1,111 @@
+# /etc/conf.d/dmcrypt
+
+# For people who run dmcrypt on top of some other layer (like raid),
+# use rc_need to specify that requirement. See the runscript(8) man
+# page for more information.
+
+#--------------------
+# Instructions
+#--------------------
+
+# Note regarding the syntax of this file. This file is *almost* bash,
+# but each line is evaluated separately. Separate swaps/targets can be
+# specified. The init-script which reads this file assumes that a
+# swap= or target= line starts a new section, similar to lilo or grub
+# configuration.
+
+# Note when using gpg keys and /usr on a separate partition, you will
+# have to copy /usr/bin/gpg to /bin/gpg so that it will work properly
+# and ensure that gpg has been compiled statically.
+# See http://bugs.gentoo.org/90482 for more information.
+
+# Note that the init-script which reads this file detects whether your
+# partition is LUKS or not. No mkfs is run unless you specify a makefs
+# option.
+
+# Global options:
+#----------------
+
+# How long to wait for each timeout (in seconds).
+dmcrypt_key_timeout=1
+
+# Max number of checks to perform (see dmcrypt_key_timeout).
+#dmcrypt_max_timeout=300
+
+# Number of password retries.
+dmcrypt_retries=5
+
+# Arguments:
+#-----------
+# target=<name> == Mapping name for partition.
+# swap=<name> == Mapping name for swap partition.
+# source='<dev>' == Real device for partition.
+# Note: You can (and should) specify a tag like UUID
+# for blkid (see -t option). This is safer than using
+# the full path to the device.
+# key='</path/to/keyfile>[:<mode>]' == Fullpath from / or from inside removable media.
+# remdev='<dev>' == Device that will be assigned to removable media.
+# gpg_options='<opts>' == Default are --quiet --decrypt
+# options='<opts>' == cryptsetup, for LUKS you can only use --readonly
+# loop_file='<file>' == Loopback file.
+# Note: If you omit $source, then a free loopback will
+# be looked up automatically.
+# pre_mount='cmds' == commands to execute before mounting partition.
+# post_mount='cmds' == commands to execute after mounting partition.
+#-----------
+# Supported Modes
+# gpg == decrypt and pipe key into cryptsetup.
+# Note: new-line character must not be part of key.
+# Command to erase \n char: 'cat key | tr -d '\n' > cleanKey'
+
+#--------------------
+# dm-crypt examples
+#--------------------
+
+## swap
+# Swap partitions. These should come first so that no keys make their
+# way into unencrypted swap.
+# If no options are given, they will default to: -c aes -h sha1 -d /dev/urandom
+# If no makefs is given then mkswap will be assumed
+#swap=crypt-swap
+#source='/dev/hda2'
+
+## /home with passphrase
+#target=crypt-home
+#source='/dev/hda5'
+
+## /home with regular keyfile
+#target=crypt-home
+#source='/dev/hda5'
+#key='/full/path/to/homekey'
+
+## /home with gpg protected key
+#target=crypt-home
+#source='/dev/hda5'
+#key='/full/path/to/homekey:gpg'
+
+## /home with regular keyfile on removable media(such as usb-stick)
+#target=crypt-home
+#source='/dev/hda5'
+#key='/full/path/to/homekey'
+#remdev='/dev/sda1'
+
+## /home with gpg protected key on removable media(such as usb-stick)
+#target=crypt-home
+#source='/dev/hda5'
+#key='/full/path/to/homekey:gpg'
+#remdev='/dev/sda1'
+
+## /tmp with regular keyfile
+#target=crypt-tmp
+#source='/dev/hda6'
+#key='/full/path/to/tmpkey'
+#pre_mount='/sbin/mkreiserfs -f -f ${dev}'
+#post_mount='chown root:root ${mount_point}; chmod 1777 ${mount_point}'
+
+## Loopback file example
+#target='crypt-loop-home'
+#source='/dev/loop0'
+#loop_file='/mnt/crypt/home'
+
+# The file must be terminated by a newline. Or leave this comment last.
diff --git a/user/cryptsetup/dmcrypt.initd b/user/cryptsetup/dmcrypt.initd
new file mode 100644
index 000000000..340b579b7
--- /dev/null
+++ b/user/cryptsetup/dmcrypt.initd
@@ -0,0 +1,339 @@
+#!/sbin/openrc-run
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+depend() {
+ before checkfs fsck
+
+ if grep -qs ^swap= "${conf_file}" ; then
+ before swap
+ fi
+}
+
+# We support multiple dmcrypt instances based on $SVCNAME
+conf_file="/etc/conf.d/${SVCNAME}"
+
+# Get splash helpers if available.
+if [ -e /sbin/splash-functions.sh ] ; then
+ . /sbin/splash-functions.sh
+fi
+
+# Setup mappings for an individual target/swap
+# Note: This relies on variables localized in the main body below.
+dm_crypt_execute() {
+ local dev ret mode foo
+
+ if [ -z "${target}" -a -z "${swap}" ] ; then
+ return
+ fi
+
+ # Set up default values.
+ : ${dmcrypt_key_timeout:=1}
+ : ${dmcrypt_max_timeout:=300}
+ : ${dmcrypt_retries:=5}
+
+ # Handle automatic look up of the source path.
+ if [ -z "${source}" -a -n "${loop_file}" ] ; then
+ source=$(losetup --show -f "${loop_file}")
+ fi
+ case ${source} in
+ *=*)
+ source="$(findfs ${source})"
+ ;;
+ esac
+ if [ -z "${source}" ] || [ ! -e "${source}" ] ; then
+ ewarn "source \"${source}\" for ${target} missing, skipping..."
+ return
+ fi
+
+ if [ -n "${target}" ] ; then
+ # let user set options, otherwise leave empty
+ : ${options:=' '}
+ elif [ -n "${swap}" ] ; then
+ if cryptsetup isLuks ${source} 2>/dev/null ; then
+ ewarn "The swap you have defined is a LUKS partition. Aborting crypt-swap setup."
+ return
+ fi
+ target=${swap}
+ # swap contents do not need to be preserved between boots, luks not required.
+ # suspend2 users should have initramfs's init handling their swap partition either way.
+ : ${options:='-c aes -h sha1 -d /dev/urandom'}
+ : ${pre_mount:='mkswap ${dev}'}
+ fi
+
+ if [ -n "${loop_file}" ] ; then
+ dev="/dev/mapper/${target}"
+ ebegin " Setting up loop device ${source}"
+ losetup ${source} ${loop_file}
+ fi
+
+ # cryptsetup:
+ # open <device> <name> # <device> is $source
+ # create <name> <device> # <name> is $target
+ local arg1="create" arg2="${target}" arg3="${source}"
+ if cryptsetup isLuks ${source} 2>/dev/null ; then
+ arg1="open"
+ arg2="${source}"
+ arg3="${target}"
+ fi
+
+ # Older versions reported:
+ # ${target} is active:
+ # Newer versions report:
+ # ${target} is active[ and is in use.]
+ if cryptsetup status ${target} | egrep -q ' is active' ; then
+ einfo "dm-crypt mapping ${target} is already configured"
+ return
+ fi
+ splash svc_input_begin ${SVCNAME} >/dev/null 2>&1
+
+ # Handle keys
+ if [ -n "${key}" ] ; then
+ read_abort() {
+ # some colors
+ local ans savetty resettty
+ [ -z "${NORMAL}" ] && eval $(eval_ecolors)
+ einfon " $1? (${WARN}yes${NORMAL}/${GOOD}No${NORMAL}) "
+ shift
+ # This is ugly as s**t. But POSIX doesn't provide `read -t`, so
+ # we end up having to implement our own crap with stty/etc...
+ savetty=$(stty -g)
+ resettty='stty ${savetty}; trap - EXIT HUP INT TERM'
+ trap 'eval "${resettty}"' EXIT HUP INT TERM
+ stty -icanon
+ stty min 0 time "$(( $2 * 10 ))"
+ ans=$(dd count=1 bs=1 2>/dev/null) || ans=''
+ eval "${resettty}"
+ if [ -z "${ans}" ] ; then
+ printf '\r'
+ else
+ echo
+ fi
+ case ${ans} in
+ [yY]) return 0;;
+ *) return 1;;
+ esac
+ }
+
+ # Notes: sed not used to avoid case where /usr partition is encrypted.
+ mode=${key##*:} && ( [ "${mode}" = "${key}" ] || [ -z "${mode}" ] ) && mode=reg
+ key=${key%:*}
+ case "${mode}" in
+ gpg|reg)
+ # handle key on removable device
+ if [ -n "${remdev}" ] ; then
+ # temp directory to mount removable device
+ local mntrem="${RC_SVCDIR}/dm-crypt-remdev.$$"
+ if [ ! -d "${mntrem}" ] ; then
+ if ! mkdir -p "${mntrem}" ; then
+ ewarn "${source} will not be decrypted ..."
+ einfo "Reason: Unable to create temporary mount point '${mntrem}'"
+ return
+ fi
+ fi
+ i=0
+ einfo "Please insert removable device for ${target}"
+ while [ ${i} -lt ${dmcrypt_max_timeout} ] ; do
+ foo=""
+ if mount -n -o ro "${remdev}" "${mntrem}" 2>/dev/null >/dev/null ; then
+ # keyfile exists?
+ if [ ! -e "${mntrem}${key}" ] ; then
+ umount -n "${mntrem}"
+ rmdir "${mntrem}"
+ einfo "Cannot find ${key} on removable media."
+ read_abort "Abort" ${dmcrypt_key_timeout} && return
+ else
+ key="${mntrem}${key}"
+ break
+ fi
+ else
+ [ -e "${remdev}" ] \
+ && foo="mount failed" \
+ || foo="mount source not found"
+ fi
+ : $((i += 1))
+ read_abort "Stop waiting after $i attempts (${foo})" -t 1 && return
+ done
+ else # keyfile ! on removable device
+ if [ ! -e "${key}" ] ; then
+ ewarn "${source} will not be decrypted ..."
+ einfo "Reason: keyfile ${key} does not exist."
+ return
+ fi
+ fi
+ ;;
+ *)
+ ewarn "${source} will not be decrypted ..."
+ einfo "Reason: mode ${mode} is invalid."
+ return
+ ;;
+ esac
+ else
+ mode=none
+ fi
+ ebegin " ${target} using: ${options} ${arg1} ${arg2} ${arg3}"
+ if [ "${mode}" = "gpg" ] ; then
+ : ${gpg_options:='-q -d'}
+ # gpg available ?
+ if command -v gpg >/dev/null ; then
+ i=0
+ while [ ${i} -lt ${dmcrypt_retries} ] ; do
+ # paranoid, don't store key in a variable, pipe it so it stays very little in ram unprotected.
+ # save stdin stdout stderr "values"
+ timeout ${dmcrypt_max_timeout} gpg ${gpg_options} ${key} 2>/dev/null | \
+ cryptsetup --key-file - ${options} ${arg1} ${arg2} ${arg3}
+ ret=$?
+ # The timeout command exits 124 when it times out.
+ [ ${ret} -eq 0 -o ${ret} -eq 124 ] && break
+ : $(( i += 1 ))
+ done
+ eend ${ret} "failure running cryptsetup"
+ else
+ ewarn "${source} will not be decrypted ..."
+ einfo "Reason: cannot find gpg application."
+ einfo "You have to install app-crypt/gnupg first."
+ einfo "If you have /usr on its own partition, try copying gpg to /bin ."
+ fi
+ else
+ if [ "${mode}" = "reg" ] ; then
+ cryptsetup ${options} -d ${key} ${arg1} ${arg2} ${arg3}
+ ret=$?
+ eend ${ret} "failure running cryptsetup"
+ else
+ cryptsetup ${options} ${arg1} ${arg2} ${arg3}
+ ret=$?
+ eend ${ret} "failure running cryptsetup"
+ fi
+ fi
+ if [ -d "${mntrem}" ] ; then
+ umount -n ${mntrem} 2>/dev/null >/dev/null
+ rmdir ${mntrem} 2>/dev/null >/dev/null
+ fi
+ splash svc_input_end ${SVCNAME} >/dev/null 2>&1
+
+ if [ ${ret} -ne 0 ] ; then
+ cryptfs_status=1
+ else
+ if [ -n "${pre_mount}" ] ; then
+ dev="/dev/mapper/${target}"
+ eval ebegin \"" pre_mount: ${pre_mount}"\"
+ eval "${pre_mount}" > /dev/null
+ ewend $? || cryptfs_status=1
+ fi
+ fi
+}
+
+# Lookup optional bootparams
+get_bootparam_val() {
+ # We're given something like:
+ # foo=bar=cow
+ # Return the "bar=cow" part.
+ case $1 in
+ *=*)
+ echo "${1#*=}"
+ ;;
+ esac
+}
+
+start() {
+ local header=true cryptfs_status=0
+ local gpg_options key loop_file target targetline options pre_mount post_mount source swap remdev
+
+ local x
+ for x in $(cat /proc/cmdline) ; do
+ case "${x}" in
+ key_timeout=*)
+ dmcrypt_key_timeout=$(get_bootparam_val "${x}")
+ ;;
+ esac
+ done
+
+ while read targetline <&3 ; do
+ case ${targetline} in
+ # skip comments and blank lines
+ ""|"#"*) continue ;;
+ # skip service-specific openrc configs #377927
+ rc_*) continue ;;
+ esac
+
+ ${header} && ebegin "Setting up dm-crypt mappings"
+ header=false
+
+ # check for the start of a new target/swap
+ case ${targetline} in
+ target=*|swap=*)
+ # If we have a target queued up, then execute it
+ dm_crypt_execute
+
+ # Prepare for the next target/swap by resetting variables
+ unset gpg_options key loop_file target options pre_mount post_mount source swap remdev
+ ;;
+
+ gpg_options=*|remdev=*|key=*|loop_file=*|options=*|pre_mount=*|post_mount=*|source=*)
+ if [ -z "${target}${swap}" ] ; then
+ ewarn "Ignoring setting outside target/swap section: ${targetline}"
+ continue
+ fi
+ ;;
+
+ dmcrypt_*=*)
+ # ignore global options
+ continue
+ ;;
+
+ *)
+ ewarn "Skipping invalid line in ${conf_file}: ${targetline}"
+ ;;
+ esac
+
+ # Queue this setting for the next call to dm_crypt_execute
+ eval "${targetline}"
+ done 3< ${conf_file}
+
+ # If we have a target queued up, then execute it
+ dm_crypt_execute
+
+ ewend ${cryptfs_status} "Failed to setup dm-crypt devices"
+}
+
+stop() {
+ local line header
+
+ # Break down all mappings
+ header=true
+ egrep "^(target|swap)=" ${conf_file} | \
+ while read line ; do
+ ${header} && einfo "Removing dm-crypt mappings"
+ header=false
+
+ target= swap=
+ eval ${line}
+
+ [ -n "${swap}" ] && target=${swap}
+ if [ -z "${target}" ] ; then
+ ewarn "invalid line in ${conf_file}: ${line}"
+ continue
+ fi
+
+ ebegin " ${target}"
+ cryptsetup remove ${target}
+ eend $?
+ done
+
+ # Break down loop devices
+ header=true
+ grep '^source=./dev/loop' ${conf_file} | \
+ while read line ; do
+ ${header} && einfo "Detaching dm-crypt loop devices"
+ header=false
+
+ source=
+ eval ${line}
+
+ ebegin " ${source}"
+ losetup -d "${source}"
+ eend $?
+ done
+
+ return 0
+}
diff --git a/user/ctags/APKBUILD b/user/ctags/APKBUILD
deleted file mode 100644
index bdc83ed14..000000000
--- a/user/ctags/APKBUILD
+++ /dev/null
@@ -1,34 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=ctags
-pkgver=5.8
-pkgrel=0
-pkgdesc="Source code indexer for faster searching"
-url="http://ctags.sourceforge.net/"
-arch="all"
-options="!check" # No test suite.
-license="GPL-2.0-only"
-depends=""
-makedepends=""
-subpackages="$pkgname-doc"
-source="https://prdownloads.sourceforge.net/ctags/ctags-$pkgver.tar.gz"
-
-build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
-}
-
-package() {
- cd "$builddir"
- install -D -m755 ctags "$pkgdir"/usr/bin/ctags
- install -D -m644 ctags.1 "$pkgdir"/usr/share/man/man1/ctags.1
-}
-
-sha512sums="981912cd335978cde22864e977947fc75326572fb29518e559cc4a8ac1edc84b3604165218a666e36353f17da4f89f8e967acdb88696f816748eb946d79eaa15 ctags-5.8.tar.gz"
diff --git a/user/cunit/APKBUILD b/user/cunit/APKBUILD
new file mode 100644
index 000000000..afe47d8fa
--- /dev/null
+++ b/user/cunit/APKBUILD
@@ -0,0 +1,52 @@
+# Contributor: Francesco Colista <fcolista@alpinelinux.org>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=cunit
+_pkgname=CUnit
+pkgver=2.1.3
+_pkgver=${pkgver%.*}-${pkgver##*.}
+pkgrel=0
+pkgdesc="Automated testing framework for C"
+url="https://cunit.sourceforge.net/"
+arch="all"
+license="LGPL-2.0+"
+depends=""
+makedepends="automake autoconf libtool bash"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://downloads.sourceforge.net/project/$pkgname/$_pkgname/$_pkgver/$_pkgname-$_pkgver.tar.bz2
+ path-makefile.patch
+ "
+builddir="$srcdir/$_pkgname-$_pkgver"
+
+prepare() {
+ sed -i "s/@VERSION@-@RELEASE@/$pkgver/" cunit.pc.in
+ default_prepare
+ ./bootstrap
+}
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --includedir=/usr/include \
+ --datarootdir=/usr/share \
+ --libdir=/usr/lib \
+ --enable-debug \
+ --enable-examples \
+ --enable-automated \
+ --enable-basic \
+ --enable-test \
+ --disable-static
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="547b417109332446dfab8fda17bf4ccd2da841dc93f824dc90a20635bcf1fb80fb2176500d8a0906940f3f3d3e2f77b2d70a71090c9ab84ad9af43f3582bc487 CUnit-2.1-3.tar.bz2
+1a4e670c8eeb1b2b19c079cdb2d025a688c76e8eba19ff54a4737d9cf18c22656fe83af2c728111ceb5740601bf48edf9d1537397369c4c3c78397849361169f path-makefile.patch"
diff --git a/user/cunit/path-makefile.patch b/user/cunit/path-makefile.patch
new file mode 100644
index 000000000..0e16aaa25
--- /dev/null
+++ b/user/cunit/path-makefile.patch
@@ -0,0 +1,31 @@
+diff --git a/doc/Makefile.am b/doc/Makefile.am
+index a864d46..1c15fc0 100644
+--- a/doc/Makefile.am
++++ b/doc/Makefile.am
+@@ -1,6 +1,6 @@
+ ## Process this file with automake to produce Makefile.in
+
+-docdir = $(prefix)/doc/@PACKAGE@
++docdir = $(datarootdir)/doc/@PACKAGE@
+
+ doc_DATA = \
+ CUnit_doc.css \
+@@ -13,4 +13,4 @@ doc_DATA = \
+ test_registry.html \
+ writing_tests.html
+
+-SUBDIRS = headers
+\ No newline at end of file
++SUBDIRS = headers
+diff --git a/doc/headers/Makefile.am b/doc/headers/Makefile.am
+index 9926e8b..3c5f1ba 100644
+--- a/doc/headers/Makefile.am
++++ b/doc/headers/Makefile.am
+@@ -1,6 +1,6 @@
+ ## Process this file with automake to produce Makefile.in
+
+-dochdrdir = $(prefix)/doc/@PACKAGE@/headers
++dochdrdir = $(datarootdir)/doc/@PACKAGE@/headers
+
+ INCLUDE_FILES = \
+ Automated.h \
diff --git a/user/cups-filters/APKBUILD b/user/cups-filters/APKBUILD
index 98205aecb..d0e40e35e 100644
--- a/user/cups-filters/APKBUILD
+++ b/user/cups-filters/APKBUILD
@@ -1,21 +1,20 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=cups-filters
-pkgver=1.21.6
+pkgver=1.28.16
pkgrel=0
pkgdesc="OpenPrinting CUPS filters and backends"
url="https://wiki.linuxfoundation.org/openprinting/cups-filters"
arch="all"
license="GPL-2.0-only AND GPL-2.0+ AND GPL-3.0-only AND MIT"
-depends="gnu-ghostscript poppler-utils bc ttf-freefont"
-makedepends="cups-dev libjpeg-turbo-dev poppler-dev zlib-dev libpng-dev
- tiff-dev lcms2-dev freetype-dev fontconfig-dev qpdf-dev dbus-dev linux-headers
- coreutils gnutls-dev python3"
+depends="gnu-ghostscript poppler-utils bc"
checkdepends="ttf-dejavu"
+makedepends="cups-dev dbus-dev fontconfig-dev freetype-dev gnutls-dev lcms2-dev
+ libexif-dev libjpeg-turbo-dev libpng-dev poppler-dev qpdf-dev tiff-dev
+ zlib-dev linux-headers coreutils python3"
subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
source="https://www.openprinting.org/download/cups-filters/cups-filters-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -37,12 +36,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
# the pdf.utf-8 symlink isn't quite good enough
cd "$pkgdir"/usr/share/cups/charsets && \
@@ -62,4 +59,4 @@ libs() {
mv "$pkgdir"/usr/lib/lib*.so.* "$subpkgdir"/usr/lib/
}
-sha512sums="804250745ac710706ff1bfa6e161c0b1a8a65a74850a76a311b7614694a7e5d07f01dfd15f277ad79ed7fe1e84ea680bab1643e0b82cefa3e26603fa2eea935a cups-filters-1.21.6.tar.xz"
+sha512sums="0369f96a8ae5e33bf75c8765947d5ad7285b3532e9d9b0ded7e206798834c9ade3a2ac3f1d16e0fdd43346f2bc7852c541130e935cbb20f9c1239a53118d1239 cups-filters-1.28.16.tar.xz"
diff --git a/user/cups/APKBUILD b/user/cups/APKBUILD
index f37bc34d0..4f6f39c93 100644
--- a/user/cups/APKBUILD
+++ b/user/cups/APKBUILD
@@ -1,9 +1,9 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=cups
-pkgver=2.2.11
+pkgver=2.4.2
pkgrel=0
pkgdesc="The CUPS Printing System"
-url="https://www.cups.org/"
+url="https://openprinting.github.io/cups/"
arch="all"
license="GPL-2.0-only AND LGPL-2.0-only"
# cupsUTF8ToCharset(CUPS_EUC_JP) of utfdemo.txt: FAIL (UTF-8 to EUC-JP on line 1)
@@ -17,15 +17,14 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-libs ipptool $pkgname-client
install="cups.pre-install"
pkgusers="lp"
pkggroups="lp lpadmin"
-source="https://github.com/apple/cups/releases/download/v$pkgver/cups-$pkgver-source.tar.gz
+source="https://github.com/OpenPrinting/$pkgname/releases/download/v$pkgver/$pkgname-$pkgver-source.tar.gz
$pkgname.logrotate
cupsd.initd
- cups-no-export-ssllibs.patch
default-config-no-gssapi.patch
"
build() {
- cd "$builddir"
+ unset LIBTOOL; #624
./configure \
--build=$CBUILD \
@@ -57,13 +56,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
-
make BUILDROOT="$pkgdir" install
cd "$pkgdir"
@@ -107,17 +103,14 @@ client() {
cd "$pkgdir"
_mv usr/bin \
- usr/sbin/accept \
usr/sbin/cupsaccept \
- usr/sbin/cupsaddsmb \
usr/sbin/cupsctl \
usr/sbin/cupsdisable \
usr/sbin/cupsenable \
usr/sbin/lpadmin \
usr/sbin/lpc \
usr/sbin/lpinfo \
- usr/sbin/lpmove \
- usr/sbin/reject
+ usr/sbin/lpmove
}
_mv() {
@@ -127,8 +120,7 @@ _mv() {
done
}
-sha512sums="21a6916041b50044d336871f10d1192635458a3d318f19a18ad21d27027dd3839400601019e758424c218225a34aba148ba3a57f0ce3fe14c4df03bd1fde3403 cups-2.2.11-source.tar.gz
+sha512sums="07474643bffe11c79b3226b70d28f1bb803dc19daa10711938cea303feacdcce3945ba8ff0334d94fdd5922ea7d6bf37a28c1ea62cce8ce946c2f90a0faf002f cups-2.4.2-source.tar.gz
cf64211da59e79285f99d437c02fdd7db462855fb2920ec9563ba47bd8a9e5cbd10555094940ceedeb41ac805c4f0ddb9147481470112a11a76220d0298aef79 cups.logrotate
2c2683f755a220166b3a1653fdd1a6daa9718c8f0bbdff2e2d5e61d1133306260d63a83d3ff41619b5cf84c4913fae5822b79553e2822858f38fa3613f4c7082 cupsd.initd
-7a8cd9ac33b0dd4627c72df4275db8ccd7cf8e201bce3833719b42f532f526bb347b842e3ea1ef0d61855b5c6e1088b5d20b68942f2c2c0acf504d8d9728efd3 cups-no-export-ssllibs.patch
98bb97f4af69ea286fc3d398b8e57c32440e6b2d49fb7f79b418a4fe7f13441f3a610f65d3433d10d971ade808233c0b29b4d66160623ccaae919179384be918 default-config-no-gssapi.patch"
diff --git a/user/cups/cups-no-export-ssllibs.patch b/user/cups/cups-no-export-ssllibs.patch
deleted file mode 100644
index e227bd182..000000000
--- a/user/cups/cups-no-export-ssllibs.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -up cups-1.5b1/config-scripts/cups-ssl.m4.no-export-ssllibs cups-1.5b1/config-scripts/cups-ssl.m4
---- cups-1.6.2/config-scripts/cups-ssl.m4.no-export-ssllibs 2011-05-11 02:52:08.000000000 +0200
-+++ cups-1.6.2/config-scripts/cups-ssl.m4 2011-05-23 17:47:27.000000000 +0200
-@@ -180,7 +180,7 @@
- AC_SUBST(SSLFLAGS)
- AC_SUBST(SSLLIBS)
-
--EXPORT_SSLLIBS="$SSLLIBS"
-+EXPORT_SSLLIBS=""
- AC_SUBST(EXPORT_SSLLIBS)
-
- dnl
diff --git a/user/cups/cups.pre-install b/user/cups/cups.pre-install
index cdb75cac5..9776f0796 100644
--- a/user/cups/cups.pre-install
+++ b/user/cups/cups.pre-install
@@ -1,8 +1,7 @@
#!/bin/sh
-addgroup -S lpadmin 2>/dev/null
-addgroup -S lp 2>/dev/null
-adduser -S -G lp -g lp lp 2>/dev/null
-addgroup lp lp 2>/dev/null
+groupadd -r lpadmin 2>/dev/null
+groupadd -r lp 2>/dev/null
+useradd -c lp -s /sbin/nologin -g lp -r lp 2>/dev/null
exit 0
diff --git a/user/cve-check-tool/APKBUILD b/user/cve-check-tool/APKBUILD
new file mode 100644
index 000000000..055d49fe2
--- /dev/null
+++ b/user/cve-check-tool/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: Max Rees <maxcrees@me.com>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=cve-check-tool
+pkgver=5.6.4_p2
+_pkgver=${pkgver%_p*}+adelie${pkgver#*_p}
+pkgrel=0
+pkgdesc="Vulnerability checker for Linux packaging"
+url="https://code.foxkit.us/sroracle/cve-check-tool"
+arch="all"
+license="GPL-2.0+"
+depends=""
+checkdepends="check-dev"
+makedepends="autoconf automake bash curl-dev glib-dev gobject-introspection-dev
+ jansson-dev libtool libxml2-dev openssl-dev sqlite-dev"
+subpackages="$pkgname-doc"
+source="https://dev.sick.bike/dist/cve-check-tool-$_pkgver.tar.gz"
+builddir="$srcdir/$pkgname-$_pkgver"
+
+prepare() {
+ default_prepare
+ autoreconf -vif
+}
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make -j1 check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="ee3e8edde7a21a139a7ff9853959487d980e703dbd52c653dd88892ecb1770e52568cf37168c9069378141c159730aa9631dca0e72630e1b67bb8a3f3d835a0e cve-check-tool-5.6.4+adelie2.tar.gz"
diff --git a/user/cyrus-sasl/APKBUILD b/user/cyrus-sasl/APKBUILD
index 29f093f39..31753ae53 100644
--- a/user/cyrus-sasl/APKBUILD
+++ b/user/cyrus-sasl/APKBUILD
@@ -2,28 +2,29 @@
# Maintainer:
pkgname=cyrus-sasl
pkgver=2.1.27
-pkgrel=0
+pkgrel=1
pkgdesc="Cyrus Simple Authentication Service Layer (SASL)"
url="https://www.cyrusimap.org/sasl/"
arch="all"
options="!check" # No test suite.
license="BSD-4-Clause"
+depends="adelie-core" # #1167
+makedepends="db-dev openssl-dev krb5-dev autoconf automake libtool"
subpackages="$pkgname-dev $pkgname-doc $pkgname-gssapi $pkgname-gs2
$pkgname-scram $pkgname-ntlm $pkgname-crammd5 $pkgname-digestmd5
libsasl $pkgname-openrc"
-depends=""
-makedepends="db-dev openssl-dev krb5-dev
- autoconf automake libtool"
-source="ftp://ftp.cyrusimap.org/$pkgname/$pkgname-$pkgver.tar.gz
+source="https://github.com/cyrusimap/$pkgname/releases/download/$pkgname-$pkgver/$pkgname-$pkgver.tar.gz
saslauthd.initd
+ CVE-2019-19906.patch
"
# secfixes:
# 2.1.26-r7:
-# - CVE-2013-4122
+# - CVE-2013-4122
+# 2.1.27-r1:
+# - CVE-2019-19906
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -47,7 +48,6 @@ build() {
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
install -D -m644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
@@ -57,7 +57,7 @@ package() {
_plugindir=usr/lib/sasl2
_plugin() {
- depends=
+ depends=""
replaces="libsasl"
pkgdesc="Cyrus SASL plugin for $2"
mkdir -p "$subpkgdir"/$_plugindir
@@ -72,11 +72,12 @@ crammd5() { _plugin crammd5 CRAM-MD5; }
digestmd5() { _plugin digestmd5 DIGEST-MD5; }
libsasl() {
- depends=
+ depends=""
pkgdesc="Cyrus Simple Authentication and Security Layer (SASL) library"
mkdir -p "$subpkgdir"/usr
mv "$pkgdir"/usr/lib "$subpkgdir"/usr/
}
sha512sums="d11549a99b3b06af79fc62d5478dba3305d7e7cc0824f4b91f0d2638daafbe940623eab235f85af9be38dcf5d42fc131db531c177040a85187aee5096b8df63b cyrus-sasl-2.1.27.tar.gz
-71a00a22f91f0fb6ba2796acede321a0f071b1d7a99616f0e36c354213777f30575c340b6df392dcbfc103ba7640d046144882f6a7b505f59709bb5c429b44d8 saslauthd.initd"
+71a00a22f91f0fb6ba2796acede321a0f071b1d7a99616f0e36c354213777f30575c340b6df392dcbfc103ba7640d046144882f6a7b505f59709bb5c429b44d8 saslauthd.initd
+35d2fc8d1ea905898d526af515ee6c1c23f46092d2a034c7fa1b989ec2985ff68f74b7dc26e86525beecb6997562f29aea87a0c945953db1b6a0fac807c294ae CVE-2019-19906.patch"
diff --git a/user/cyrus-sasl/CVE-2019-19906.patch b/user/cyrus-sasl/CVE-2019-19906.patch
new file mode 100644
index 000000000..acdf68243
--- /dev/null
+++ b/user/cyrus-sasl/CVE-2019-19906.patch
@@ -0,0 +1,25 @@
+From dcc9f51cbd4ed622cfb0f9b1c141eb2ffe3b12f1 Mon Sep 17 00:00:00 2001
+From: Quanah Gibson-Mount <quanah@symas.com>
+Date: Tue, 18 Feb 2020 19:05:12 +0000
+Subject: [PATCH] Fix #587
+
+Off by one error in common.c, CVE-2019-19906.
+
+Thanks to Stephan Zeisberg for reporting
+---
+ lib/common.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/lib/common.c b/lib/common.c
+index bc3bf1df..9969d6aa 100644
+--- a/lib/common.c
++++ b/lib/common.c
+@@ -190,7 +190,7 @@ int _sasl_add_string(char **out, size_t *alloclen,
+
+ if (add==NULL) add = "(null)";
+
+- addlen=strlen(add); /* only compute once */
++ addlen=strlen(add)+1; /* only compute once */
+ if (_buf_alloc(out, alloclen, (*outlen)+addlen)!=SASL_OK)
+ return SASL_NOMEM;
+
diff --git a/user/darkman/APKBUILD b/user/darkman/APKBUILD
new file mode 100644
index 000000000..1600fae79
--- /dev/null
+++ b/user/darkman/APKBUILD
@@ -0,0 +1,25 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=darkman
+pkgver=2.0.1
+pkgrel=0
+pkgdesc="Framework for managing dark- and light-mode transitions"
+url="https://darkman.whynothugo.nl/"
+arch="all"
+options="!check" # no testsuite
+license="0BSD"
+depends=""
+makedepends="gcc-go scdoc"
+subpackages="$pkgname-doc $pkgname-systemd"
+source="https://gitlab.com/WhyNotHugo/darkman/-/archive/v$pkgver/darkman-v$pkgver.tar.bz2"
+builddir="$srcdir/darkman-v$pkgver"
+
+build() {
+ make VERSION="$pkgver"
+}
+
+package() {
+ make VERSION="$pkgver" DESTDIR="$pkgdir" install
+}
+
+sha512sums="8036e3470d22e1f689d8305cb3faf81a1fc2f0692afd8fb9657c2c22af417f25fd928189fcda42df7c053cb9129c90cdf11df64e6f597498af95f330de76f282 darkman-v2.0.1.tar.bz2"
diff --git a/user/davmail/APKBUILD b/user/davmail/APKBUILD
new file mode 100644
index 000000000..be0531a66
--- /dev/null
+++ b/user/davmail/APKBUILD
@@ -0,0 +1,60 @@
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=davmail
+pkgver=5.5.1.3299
+_pkgver=${pkgver%.*}-${pkgver##*.}
+pkgrel=0
+pkgdesc="POP/IMAP/SMTP/Caldav/Carddav/LDAP proxy for Exchange/O365 servers"
+url="http://davmail.sourceforge.net/" # No HTTPS
+arch="noarch !armv7" #1007
+options="!check" # Requires running mail servers and X11
+license="GPL-2.0+ AND MIT AND (LGPL-2.1+ or Apache-2.0) AND BSD-2-Clause AND Apache-2.0 AND LGPL-2.1 AND BSD-3-Clause AND (CDDL-1.1 OR GPL-2.0 WITH Classpath-exception-2.0)"
+depends="/bin/sh openjdk8-jre"
+makedepends="ant desktop-file-utils"
+subpackages=""
+source="https://sourceforge.net/projects/davmail/files/davmail/${pkgver%.*}/davmail-src-$_pkgver.tgz
+ davmail.sh
+ "
+builddir="$srcdir/$pkgname-src-$_pkgver"
+
+_ant() {
+ . /etc/profile.d/java.sh
+ . /etc/profile.d/ant.sh
+ ant "$@"
+}
+
+build() {
+ _ant jar
+}
+
+check() {
+ _ant test
+}
+
+package() {
+ _ant prepare-dist
+
+ install -Dm755 "$srcdir"/davmail.sh \
+ "$pkgdir"/usr/bin/davmail
+
+ rm -f dist/lib/*growl* \
+ dist/lib/*x86*.jar \
+ dist/lib/junit-*.jar \
+ dist/lib/winrun4j-*.jar
+ install -Dm644 -t "$pkgdir"/usr/lib/java/davmail/lib \
+ dist/lib/* dist/davmail.jar
+
+ desktop-file-install --dir "$pkgdir"/usr/share/applications \
+ src/desktop/davmail.desktop
+
+ for _i in 16 32 48 128; do
+ case $_i in
+ 16) _fn=src/java/tray.png;;
+ *) _fn=src/java/tray$_i.png;;
+ esac
+ install -Dm644 $_fn \
+ "$pkgdir"/usr/share/icons/hicolor/${_i}x${_i}/apps/davmail.png
+ done
+}
+
+sha512sums="0d3481f0930e09b30ae4341149b443bd92f107872d4e39dcc66e5e6c2fa6a667f9dde2c5a49bc5c96375d9e9b4b824a4211bf90a985a2cc2b1b8aa7613f02b5d davmail-src-5.5.1-3299.tgz
+e937f3bdf71cddba4678b768bc6fc87320cd2a76d324f5ef99a0248ddc989d89c25e1f0e291416acb264cb2a1dbfef6d5eeea092c95d9be3f75669d6f68d1fdd davmail.sh"
diff --git a/user/davmail/davmail.sh b/user/davmail/davmail.sh
new file mode 100755
index 000000000..17c5cd45e
--- /dev/null
+++ b/user/davmail/davmail.sh
@@ -0,0 +1,7 @@
+#!/bin/sh -e
+# Usage: davmail [</path/to/davmail.properties>]
+
+# force GTK2 to avoid crash with OpenJDK 11
+JAVA_OPTS="-Xmx512M -Dsun.net.inetaddr.ttl=60 -Djdk.gtk.version=2.2"
+JAVA_CP="/usr/lib/java/davmail/lib/*"
+exec java $JAVA_OPTS -cp "$JAVA_CP" davmail.DavGateway "$@"
diff --git a/user/dbus-glib/APKBUILD b/user/dbus-glib/APKBUILD
index c2c581928..6187e395f 100644
--- a/user/dbus-glib/APKBUILD
+++ b/user/dbus-glib/APKBUILD
@@ -5,16 +5,14 @@ pkgrel=0
pkgdesc="GLib bindings for D-Bus"
url="https://www.freedesktop.org/wiki/Software/DBusBindings"
arch="all"
-options="!checkroot"
license="AFL-2.1 OR GPL-2.0+"
subpackages="$pkgname-dev $pkgname-doc"
-depends=
-makedepends="dbus-dev expat-dev glib-dev"
+depends=""
checkdepends="dbus"
-source="http://dbus.freedesktop.org/releases/$pkgname/$pkgname-$pkgver.tar.gz"
+makedepends="dbus-dev expat-dev glib-dev"
+source="https://dbus.freedesktop.org/releases/$pkgname/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,12 +25,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/dbus/APKBUILD b/user/dbus/APKBUILD
index 087aa3b75..a3f0847b0 100644
--- a/user/dbus/APKBUILD
+++ b/user/dbus/APKBUILD
@@ -1,9 +1,9 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=dbus
-pkgver=1.12.12
+pkgver=1.12.20
pkgrel=0
pkgdesc="IPC/message bus system, allowing user applications to communicate"
-url="http://www.freedesktop.org/wiki/Software/dbus/"
+url="https://www.freedesktop.org/wiki/Software/dbus/"
pkggroups="messagebus"
pkgusers="messagebus"
arch="all"
@@ -12,7 +12,7 @@ license="AFL-2.1 OR GPL-2.0+"
subpackages="$pkgname-dev $pkgname-doc $pkgname-libs $pkgname-openrc
$pkgname-x11"
triggers="$pkgname.trigger=/etc/dbus-1/system.d"
-depends=""
+depends="adelie-core" # #1167
depends_dev="util-linux-dev"
makedepends="$depends_dev expat-dev libx11-dev autoconf automake libtool xmlto
libsm-dev"
@@ -21,6 +21,12 @@ source="http://dbus.freedesktop.org/releases/dbus/dbus-$pkgver.tar.gz
$pkgname.initd
"
+# secfixes:
+# 1.12.16-r0:
+# - CVE-2019-12749
+# 1.12.18-r0:
+# - CVE-2020-12049
+
build() {
./configure \
--build=$CBUILD \
@@ -61,5 +67,5 @@ x11() {
mv "$pkgdir"/usr/bin/dbus-launch "$subpkgdir"/usr/bin/
}
-sha512sums="51af4e86ab7d36e1c9a861164e7cd7aa1605fdd82f90aed8728b34c45a87864a00671de9db00d88ea6f96be97459c7eb53d2517ea9d9687ae9ebf81c58c3a80f dbus-1.12.12.tar.gz
+sha512sums="0964683bc6859374cc94e42e1ec0cdb542cca67971c205fcba4352500b6c0891665b0718e7d85eb060c81cb82e3346c313892bc02384da300ddd306c7eef0056 dbus-1.12.20.tar.gz
df74e7d6a4f76f777d356e94bd23422b17656aa51a5b2d3c655fcabb32c84f2f06b9f5cd8827920d51842f89e8c0d968a6e723315e4bf216e55711fcda9b0ee9 dbus.initd"
diff --git a/user/dbus/dbus.pre-install b/user/dbus/dbus.pre-install
index 889651721..39e5464f2 100644
--- a/user/dbus/dbus.pre-install
+++ b/user/dbus/dbus.pre-install
@@ -1,6 +1,7 @@
#!/bin/sh
-addgroup -S messagebus 2>/dev/null
-adduser -S -D -H -h /dev/null -s /sbin/nologin -G messagebus -g "D-Bus User" messagebus 2>/dev/null
+groupadd -r messagebus 2>/dev/null
+useradd -c "D-Bus User" -s /sbin/nologin -g messagebus \
+ -m -d /dev/null -r messagebus 2>/dev/null
exit 0
diff --git a/user/dconf/APKBUILD b/user/dconf/APKBUILD
index 988cfbae5..75e403ead 100644
--- a/user/dconf/APKBUILD
+++ b/user/dconf/APKBUILD
@@ -1,37 +1,36 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=dconf
-pkgver=0.32.0
-pkgrel=0
+pkgver=0.40.0
+pkgrel=1
pkgdesc="Configuration management for the Gnome desktop environment"
url="https://gnome.org"
arch="all"
+options="!check" # Requires running D-Bus daemon.
license="LGPL-2.0+ AND LGPL-2.1+"
depends="dbus"
makedepends="meson ninja
bash-completion dbus-dev docbook-xsl libxslt-dev python3-dev vala-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://download.gnome.org/sources/dconf/${pkgver%.*}/dconf-$pkgver.tar.xz"
+source="https://download.gnome.org/sources/dconf/${pkgver%.*}/dconf-$pkgver.tar.xz
+ user-profile.conf"
build() {
- cd "$builddir"
meson \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var \
+ -Dprefix=/usr \
--buildtype=release \
- . output
- ninja -C output
+ . build
+ ninja -C build
}
check() {
- cd "$builddir"
+ ninja -C build test
}
package() {
- cd "$builddir"
- DESTDIR="$pkgdir" ninja -C output install
+ DESTDIR="$pkgdir" ninja -C build install
+ install -Dm644 "$srcdir"/user-profile.conf "$pkgdir"/etc/dconf/profile/user
}
-sha512sums="09ae65ad365947aed24228b94978b290060264e55b443d18a743e943627703c92e16e3a5ca8a0aaf3549f7a1d5aad77bdc285d4c8519db705d3104ec22b111a0 dconf-0.32.0.tar.xz"
+sha512sums="71396d71f24f47653181482b052fdfc63795c50c373de34e2fb93e16101745daa7e81192b79a102d5389911cea34138eedf3ac32bc80562018e8a7f31963559a dconf-0.40.0.tar.xz
+226ef29cced7271d503ae29580fa189994067aa174903844b1bcc619d1e33e6038e5d9d3dd6d502505fdb966489605227323cba37db2d5287b6317ad2d31480e user-profile.conf"
diff --git a/user/dconf/user-profile.conf b/user/dconf/user-profile.conf
new file mode 100644
index 000000000..aca0641f5
--- /dev/null
+++ b/user/dconf/user-profile.conf
@@ -0,0 +1,2 @@
+user-db:user
+system-db:local
diff --git a/user/ddrescue/APKBUILD b/user/ddrescue/APKBUILD
index f1c42d607..dd16b1167 100644
--- a/user/ddrescue/APKBUILD
+++ b/user/ddrescue/APKBUILD
@@ -1,18 +1,20 @@
# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=ddrescue
-pkgver=1.23
+pkgver=1.26
pkgrel=0
pkgdesc="Data recovery tool for block devices with errors"
url="https://www.gnu.org/s/ddrescue/ddrescue.html"
+arch="all"
license="GPL-3.0+"
-arch="all !aarch64"
+depends=""
+makedepends=""
subpackages="$pkgname-doc"
-source="http://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.lz"
+source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.lz"
build() {
- cd "$builddir"
- ./configure --prefix=/usr \
+ ./configure \
+ --prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
--infodir=/usr/share/info
@@ -20,18 +22,11 @@ build() {
}
check() {
- cd "$builddir"
-
- # XXX: Some tests fail on s390x, but only on builder, so ignore it for now.
- case "$CARCH" in
- s390x) make check || true;;
- *) make check;;
- esac
+ make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="4f0b27067966b71efaae809d4f38714863cf3663f3b8c3f26055d482debb15c0fab77752411a9d242f18dbb8e4edc68494f866721dae9c95cfc5354439eaa656 ddrescue-1.23.tar.lz"
+sha512sums="bbe414563d459a1ad1c4e55848214d195e01f8bc455104eddbeff7046623f5bc21d961457d27ace2605d13dff68c7948182706b8afe6755e5c363e8cad86a1cc ddrescue-1.26.tar.lz"
diff --git a/user/dejagnu/APKBUILD b/user/dejagnu/APKBUILD
deleted file mode 100644
index 53018f36f..000000000
--- a/user/dejagnu/APKBUILD
+++ /dev/null
@@ -1,37 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=dejagnu
-pkgver=1.6.2
-pkgrel=0
-pkgdesc="Framework for testing other programs"
-url="https://www.gnu.org/software/dejagnu/"
-arch="noarch"
-license="GPL-3.0+"
-depends="expect"
-makedepends="$depends tcl>=8.5"
-subpackages="$pkgname-dev $pkgname-doc"
-source="https://ftp.gnu.org/pub/gnu/$pkgname/$pkgname-$pkgver.tar.gz"
-
-build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
-}
-
-check() {
- cd "$builddir"
- make check
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
-}
-
-sha512sums="ae527ce245871d49b84773d0d14b1ea6b2316c88097eeb84091a3aa885ff007eeaa1cd9c5b002d94a956d218451079b5e170561ffa43a291d9d82283aa834042 dejagnu-1.6.2.tar.gz"
diff --git a/user/desktop-file-utils/APKBUILD b/user/desktop-file-utils/APKBUILD
index f8a62336f..4dd077102 100644
--- a/user/desktop-file-utils/APKBUILD
+++ b/user/desktop-file-utils/APKBUILD
@@ -1,37 +1,29 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=desktop-file-utils
-pkgver=0.23
+pkgver=0.26
pkgrel=0
pkgdesc="Utilities for working with Desktop Entry files"
url="https://www.freedesktop.org/wiki/Software/desktop-file-utils/"
arch="all"
+options="!check" # No test suite.
license="GPL-2.0+"
depends=""
-makedepends="glib-dev"
+makedepends="glib-dev meson ninja"
subpackages="$pkgname-doc"
source="https://www.freedesktop.org/software/desktop-file-utils/releases/desktop-file-utils-$pkgver.tar.xz"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
+ meson -Dprefix=/usr build
+ ninja -C build
}
check() {
- cd "$builddir"
- make check
+ ninja -C build check
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" ninja -C build install
}
-sha512sums="66a8ddfbb2be8edc14e16427e0dafa6fb1ef7491c816f19221fb5d5782e964cdcc3ae89807339f1c565af828aa83403cc56edeb2d03b3f93e013f3c5e9e6fe6a desktop-file-utils-0.23.tar.xz"
+sha512sums="5b4e435f0b635d8f898ac7f5759f74a08ffbe2a56d41fee0e84ff57e73b98d08b57b4416f20b99f696dad8bcb1c20792b39acf836b0814220c0b386ea5f6b831 desktop-file-utils-0.26.tar.xz"
diff --git a/user/dev86/APKBUILD b/user/dev86/APKBUILD
new file mode 100644
index 000000000..7a5170e7f
--- /dev/null
+++ b/user/dev86/APKBUILD
@@ -0,0 +1,29 @@
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=dev86
+pkgver=0.16.21
+pkgrel=0
+pkgdesc="Standalone 8086 assembler and linker"
+url="https://github.com/lkundrak/dev86/"
+arch="all"
+options="!check" # Just compiles stuff with bcc which we don't build
+license="GPL-2.0 AND LGPL-2.0"
+depends=""
+makedepends=""
+subpackages="$pkgname-doc"
+source="$pkgname-$pkgver.tar.gz::https://github.com/lkundrak/dev86/archive/v$pkgver.tar.gz"
+
+build() {
+ make -j1 as ld \
+ GCCFLAG="$CFLAGS" \
+ NATIVE='-DA_OUT_INCL=\"../libc/include/a.out.h\"'
+}
+
+package() {
+ install -Dm755 as/as86 "$pkgdir"/usr/bin/as86
+ install -Dm755 ld/ld86 "$pkgdir"/usr/bin/ld86
+
+ install -Dm644 man/as86.1 "$pkgdir"/usr/share/man/man1/as86.1
+ install -Dm644 man/ld86.1 "$pkgdir"/usr/share/man/man1/ld86.1
+}
+
+sha512sums="e51d94cecc298f860c1dcbc225d5c77a18769eb7a51f888853ca3bdb3cc6596c07d67cd9b403f7d52155716eb1708396461dc596cd02728d762d0ed5e87d054f dev86-0.16.21.tar.gz"
diff --git a/user/dhcpcd/APKBUILD b/user/dhcpcd/APKBUILD
index e42405db5..7c3bb273c 100644
--- a/user/dhcpcd/APKBUILD
+++ b/user/dhcpcd/APKBUILD
@@ -3,7 +3,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=dhcpcd
-pkgver=7.0.8
+pkgver=9.5.2
pkgrel=0
pkgdesc="RFC2131 compliant DHCP client"
url="https://roy.marples.name/projects/dhcpcd"
@@ -12,14 +12,12 @@ license="BSD-2-Clause"
makedepends="linux-headers bsd-compat-headers eudev-dev"
install="$pkgname.post-upgrade"
subpackages="$pkgname-doc $pkgname-openrc"
-source="https://roy.marples.name/downloads/dhcpcd/$pkgname-$pkgver.tar.xz
+source="https://github.com/NetworkConfiguration/dhcpcd/releases/download/v${pkgver}/$pkgname-$pkgver.tar.xz
fix-chrony-conf-location.patch
dhcpcd.initd
"
build() {
- cd "$builddir"
-
CFLAGS="$CFLAGS -D_GNU_SOURCE -DHAVE_PRINTF_M"
./configure \
--build=$CBUILD \
@@ -35,18 +33,15 @@ build() {
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
-
make DESTDIR="$pkgdir" install
install -Dm755 "$srcdir"/dhcpcd.initd \
"$pkgdir"/etc/init.d/dhcpcd
}
-sha512sums="82cd845eb35670788b8f31b973945460f4c5f1a0a3025e3a452b79230dc30704e129d97140e6aec6d0281e0c89c333c0ce0af03c4767b2e5e66547ed3e071953 dhcpcd-7.0.8.tar.xz
+sha512sums="de9040b6ce6b4eb6dbf193fe3d983984a58a3bc14384bdd7ffbd2040056d72a786bc033a8bc69f7df37fbf9202b35ff3bca4196ae31ee78670eed0d779e5fd6a dhcpcd-9.5.2.tar.xz
1c19eed0f7a008ee96ea392beb327169ff8c83fc27fed20f65f05c9125f60629ebe3474c5e6a7cf4aeeea448fde4264c9b84916efacd67d47ab908c47b1fc3a5 fix-chrony-conf-location.patch
e777432c2efc84285b41e63a4687f3bd543f6864218d037529ab78b5ad934de154f28f478bd9facb56628f2953aad8a932bc2eb8b1dfffa0ce2278ffcfc4d880 dhcpcd.initd"
diff --git a/user/dialog/APKBUILD b/user/dialog/APKBUILD
index 6e0547a1f..d00813c2d 100644
--- a/user/dialog/APKBUILD
+++ b/user/dialog/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Michael Mason <ms13sp@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=dialog
-_realver=1.3-20190211
-pkgver=${_realver/-/.}
+pkgver=1.3.20200327
+_realver="${pkgver%.*}-${pkgver##*.}"
pkgrel=0
pkgdesc="Script interpreter providing curses widgets"
url="https://invisible-island.net/dialog/dialog.html"
@@ -13,7 +13,7 @@ depends=""
makedepends="ncurses-dev"
subpackages="$pkgname-doc"
source="https://invisible-mirror.net/archives/dialog/dialog-$_realver.tgz"
-builddir="$srcdir"/$pkgname-$_realver
+builddir="$srcdir/$pkgname-$_realver"
build() {
./configure \
@@ -31,4 +31,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="247639190c97c1baa6aa2cc75bc17593a0e33fcfcfd6dbc4a1903b55709f8f102c965de03f0620c48463f018525eb77f9b62b39db8331b811a227bbf39b254c4 dialog-1.3-20190211.tgz"
+sha512sums="c8c7ccd86fa189a2b6739320f59f127512e53f908ed257280099f8c45754da98d2095835d0c14090cd071af0ed6e8ff95f9938f5ca8027b0b7001c7fd746fe59 dialog-1.3-20200327.tgz"
diff --git a/user/digikam/APKBUILD b/user/digikam/APKBUILD
new file mode 100644
index 000000000..e2b01ba40
--- /dev/null
+++ b/user/digikam/APKBUILD
@@ -0,0 +1,56 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=digikam
+pkgver=7.6.0
+pkgrel=1
+pkgdesc="Professional photo management and digital camera import"
+url="https://www.digikam.org/"
+arch="all"
+options="!check" # No test suite.
+license="GPL-2.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtxmlpatterns-dev
+ qt5-qtsvg-dev kconfig-dev kwindowsystem-dev kxmlgui-dev ki18n-dev
+ karchive-dev kio-dev qt5-qtwebkit-dev kcoreaddons-dev kservice-dev
+ solid-dev kiconthemes-dev kfilemetadata-dev threadweaver-dev libpng-dev
+ knotifyconfig-dev knotifications-dev akonadi-contacts-dev x265-dev
+ libjpeg-turbo-dev tiff-dev zlib-dev boost-dev lcms2-dev expat-dev
+ exiv2-dev flex bison libxml2-dev libxslt-dev eigen-dev libgphoto2-dev
+ libksane-dev libkipi-dev glu-dev qt5-qtx11extras-dev jasper-dev
+ opencv opencv-dev imagemagick-dev kcalendarcore-dev marble-dev"
+# YES, both are needed. opencv-dev only pulls in -libs; CMake module in opencv
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/digikam/$pkgver/digiKam-$pkgver.tar.xz
+ backport.patch
+ isdigit.patch
+ "
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DENABLE_APPSTYLES=ON \
+ -DENABLE_FACESENGINE_DNN=OFF \
+ -DENABLE_MYSQLSUPPORT=OFF \
+ -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3 \
+ -DBUILD_TESTING=OFF \
+ -DENABLE_QWEBENGINE=OFF \
+ -DCMAKE_CXX_STANDARD_LIBRARIES="-latomic" \
+ ${CMAKE_CROSSOPTS} .
+ make
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="72cae1f36249687d2c82392b7d5bcede39364372f935a2d09ba561d0b7f51b6f9a1e6a83a8974616061a8200f3d997b96fb021a16323a2f30b404cf628188216 digiKam-7.6.0.tar.xz
+44f33f77b327f384764d74aade0567560f2f8cf34f53a9391da42ade06b08d9edc858c8b48cb0f2677dce8fa195e31d866585ee287a49a765d3fd2f8d5ed3c41 backport.patch
+691d65a1f8f48820380e98bc72059cb4fb4ac4ace96ae46a04e60f1bc778b1e01af6f7a8c0c2f9951b5597017bca830baea2e919a145b2635e3be468f8e81862 isdigit.patch"
diff --git a/user/digikam/backport.patch b/user/digikam/backport.patch
new file mode 100644
index 000000000..a2933bc71
--- /dev/null
+++ b/user/digikam/backport.patch
@@ -0,0 +1,28 @@
+From 51efe295a222070743187af0367b0bf957879337 Mon Sep 17 00:00:00 2001
+From: Antonio Rojas <arojas@archlinux.org>
+Date: Fri, 22 Apr 2022 19:13:28 +0200
+Subject: [PATCH] Fix build with akonadi-contacts 22.04
+
+---
+ core/utilities/extrasupport/addressbook/akonadiiface.cpp | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/core/utilities/extrasupport/addressbook/akonadiiface.cpp b/core/utilities/extrasupport/addressbook/akonadiiface.cpp
+index 6a78863cf6..8e65a405da 100644
+--- a/core/utilities/extrasupport/addressbook/akonadiiface.cpp
++++ b/core/utilities/extrasupport/addressbook/akonadiiface.cpp
+@@ -49,7 +49,11 @@
+ #include <AkonadiCore/Item>
+ #endif
+
++#if AKONADI_VERSION >= QT_VERSION_CHECK(5, 19, 80)
++#include <Akonadi/ContactSearchJob>
++#else
+ #include <Akonadi/Contact/ContactSearchJob>
++#endif
+ #include <KContacts/Addressee>
+
+ #if defined(Q_OS_DARWIN) && defined(Q_CC_CLANG)
+--
+GitLab
+
diff --git a/user/digikam/isdigit.patch b/user/digikam/isdigit.patch
new file mode 100644
index 000000000..82122b5d8
--- /dev/null
+++ b/user/digikam/isdigit.patch
@@ -0,0 +1,12 @@
+--- digikam-7.6.0/core/libs/dngwriter/extra/dng_sdk/dng_string.cpp.old 2022-03-01 02:42:07.000000000 -0600
++++ digikam-7.6.0/core/libs/dngwriter/extra/dng_sdk/dng_string.cpp 2024-05-28 18:24:34.849989979 -0500
+@@ -23,9 +23,7 @@
+ #include <windows.h>
+ #endif
+
+-#if qiPhone || qAndroid
+ #include <ctype.h> // for isdigit
+-#endif
+
+ /*****************************************************************************/
+
diff --git a/user/dina/APKBUILD b/user/dina/APKBUILD
index 4612562c9..ba36d3549 100644
--- a/user/dina/APKBUILD
+++ b/user/dina/APKBUILD
@@ -1,19 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=dina
-pkgver=2.92
+pkgver=2.93
pkgrel=0
pkgdesc="Bitmap-based programming font"
url="https://www.dcmembers.com/jibsen/download/61/"
arch="noarch"
options="!check" # No tests
license="MIT"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf"
source="$pkgname-$pkgver.zip::https://www.dcmembers.com/jibsen/download/61/?wpdmdl=61&refresh=5c64600776bf51550082055"
+builddir="$srcdir/BDF"
build() {
- cd "$srcdir"/BDF
for i in *.bdf; do
bdftopcf -o ${i%.bdf}.pcf $i
gzip ${i%.bdf}.pcf
@@ -21,11 +21,10 @@ build() {
}
package() {
- cd "$srcdir"/BDF
mkdir -p "$pkgdir"/usr/share/fonts/X11/misc
for i in *.pcf.gz; do
install -Dm644 "$i" "$pkgdir"/usr/share/fonts/X11/misc
done
}
-sha512sums="ff4e3b6031c815c9c5d469852f094243022a1ac889fb6667c734ac1498fa99d1253abf4d02e8eadb55d7d4d7d80be4fac32730bc24660451d78d2600ceb0ee6f dina-2.92.zip"
+sha512sums="ff4e3b6031c815c9c5d469852f094243022a1ac889fb6667c734ac1498fa99d1253abf4d02e8eadb55d7d4d7d80be4fac32730bc24660451d78d2600ceb0ee6f dina-2.93.zip"
diff --git a/user/diskdev_cmds/APKBUILD b/user/diskdev_cmds/APKBUILD
index 1b071453c..f3a60eb61 100644
--- a/user/diskdev_cmds/APKBUILD
+++ b/user/diskdev_cmds/APKBUILD
@@ -2,29 +2,26 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=diskdev_cmds
pkgver=332.14
-pkgrel=0
+pkgrel=1
pkgdesc="HFS+ utilities ported from OS X 10.8.4 (fsck/mkfs)"
url="https://opensource.apple.com/release/mac-os-x-10411ppc.html"
arch="all"
+options="!check" # No test suite.
license="APSL-2.0"
depends=""
makedepends="bsd-compat-headers openssl-dev"
-install=""
-options="!check"
subpackages="$pkgname-doc"
-source="https://opensource.apple.com/tarballs/diskdev_cmds/diskdev_cmds-$pkgver.tar.gz
+source="https://opensource.apple.com/tarballs/$pkgname/$pkgname-$pkgver.tar.gz
linux.patch
musl.patch
"
-builddir="$srcdir/diskdev_cmds-$pkgver"
+builddir="$srcdir/$pkgname-$pkgname-$pkgver" #830
build() {
- cd "$builddir"
make -f Makefile.lnx
}
package() {
- cd "$builddir"
install -D -m755 "$builddir"/fsck_hfs.tproj/fsck_hfs "$pkgdir"/sbin/fsck_hfs
install -m755 "$builddir"/newfs_hfs.tproj/newfs_hfs "$pkgdir"/sbin/newfs_hfs
ln -s fsck_hfs "$pkgdir"/sbin/fsck.hfs
@@ -32,14 +29,19 @@ package() {
ln -s newfs_hfs "$pkgdir"/sbin/mkfs.hfs
ln -s newfs_hfs "$pkgdir"/sbin/mkfs.hfsplus
- install -D -m644 "$builddir"/fsck_hfs.tproj/fsck_hfs.8 "$pkgdir"/usr/share/man/man8/fsck_hfs.8
+ install -D -m644 "$builddir"/newfs_hfs.tproj/hfsbootdata.img \
+ "$pkgdir"/usr/share/hfsprogs/hfsbootdata
+
+ install -D -m644 "$builddir"/fsck_hfs.tproj/fsck_hfs.8 \
+ "$pkgdir"/usr/share/man/man8/fsck_hfs.8
ln -s fsck_hfs.8 "$pkgdir"/usr/share/man/man8/fsck.hfs.8
ln -s fsck_hfs.8 "$pkgdir"/usr/share/man/man8/fsck.hfsplus.8
- install -m644 "$builddir"/newfs_hfs.tproj/newfs_hfs.8 "$pkgdir"/usr/share/man/man8/newfs_hfs.8
+ install -m644 "$builddir"/newfs_hfs.tproj/newfs_hfs.8 \
+ "$pkgdir"/usr/share/man/man8/newfs_hfs.8
ln -s newfs_hfs.8 "$pkgdir"/usr/share/man/man8/mkfs.hfs.8
ln -s newfs_hfs.8 "$pkgdir"/usr/share/man/man8/mkfs.hfsplus.8
}
-sha512sums="e1df91fb5330dc01a79de99dd8b1f389a337a19c2136994d59b7cbca9c2e1cb5f7d47101366dd01db4e23a5d3d7afab41758045bf7402d739fa22182dc922044 diskdev_cmds-332.14.tar.gz
+sha512sums="b189bbe9e43ed2354cc134d1cce6bb0f65709e36f64b586f850a73f864cc3c7e36e83cccde093871efba9e095c16a8278d92d13de59dd03ad757b79fb83cda06 diskdev_cmds-332.14.tar.gz
bd736c087291024d352d7e3379069f440cf1af6abbcb236499a00c6a756c1b2b3c36e61a13d08e8db7319654b9cb1c04574a4dbda79cedeceb32660708900da9 linux.patch
0b6280e20b0e8d2e453505866af2f1423a4f0172de2e5a6b14feb82df3c659270d9af0320a098e41d405e5cf9111852926e8a4eb5bea1604c262b126917f442f musl.patch"
diff --git a/user/distcc/APKBUILD b/user/distcc/APKBUILD
index 9584cab67..75d839c0d 100644
--- a/user/distcc/APKBUILD
+++ b/user/distcc/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Brandon Bergren <git@bdragon.rtk0.net>
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=distcc
-pkgver=3.3.2
+pkgver=3.4
pkgrel=0
pkgdesc="Distributed builds for C, C++ and Objective C"
url="https://distcc.github.io/"
@@ -21,12 +21,10 @@ subpackages="$pkgname-doc"
#pkggroups="distcc"
install="$pkgname.pre-install"
source="https://github.com/distcc/$pkgname/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz
+ heap.patch
"
-builddir=$srcdir/$pkgname
build() {
- cd "$builddir"
- ./autogen.sh
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -40,7 +38,6 @@ build() {
}
check() {
- cd "$builddir"
# Tests rely on invoking compiler, etc, with a normal path.
# The default "make check" target gets confused, so we manually
# invoke the test framework.
@@ -51,8 +48,8 @@ check() {
}
package() {
- cd "$builddir"
make install DESTDIR="$pkgdir"
}
-sha512sums="fdf11ed94ba50977b45e302179c5c4ba067cc3db37579cb8ed6d5b9487f8e3c89114f65af69333c38d374cf7634d7aef8d5a2d5c7fd8e9b1f4930c0897d6da10 distcc-3.3.2.tar.gz"
+sha512sums="de09329fdfa25e08a9b9529190ddaa9ceccb34c8655692edb86f367a8db4a71b750c6e928cb8e5a670f51fbbc02fd1c8524f72e01b3ebaacc1106dc676d18eef distcc-3.4.tar.gz
+897429ec358ee36faf7dd19329978d9ba3ac83008158a1df9df8e7c6bc55843b5a681884b67006c526875b26993b64de6fb33e2f7dfac8a2066eabde1f13c348 heap.patch"
diff --git a/user/distcc/distcc.pre-install b/user/distcc/distcc.pre-install
index ded93fd09..16b5e4f59 100644
--- a/user/distcc/distcc.pre-install
+++ b/user/distcc/distcc.pre-install
@@ -1,6 +1,7 @@
#!/bin/sh
-addgroup -S distcc 2>/dev/null
-adduser -S -D -H -h /var/lib/distcc -s /bin/false -G distcc -g distcc distcc 2>/dev/null
+groupadd -r distcc 2>/dev/null
+useradd -c distcc -s /sbin/nologin -g distcc \
+ -m -d /var/lib/distcc -r distcc 2>/dev/null
exit 0
diff --git a/user/distcc/heap.patch b/user/distcc/heap.patch
new file mode 100644
index 000000000..f1d75caa0
--- /dev/null
+++ b/user/distcc/heap.patch
@@ -0,0 +1,67 @@
+From 879b71d6e95673e58d33f6c3c341a893ee307161 Mon Sep 17 00:00:00 2001
+From: Alexey Sheplyakov <asheplyakov@yandex.ru>
+Date: Sat, 10 Jul 2021 22:18:14 +0400
+Subject: [PATCH] dcc_gcc_rewrite_fqn: avoid heap corruption
+
+On ALT Linux I've run into the following bug:
+
+distcc gcc -Wall -std=gnu89 -I. -O2 -o hello.o -c hello.c
+free(): invalid next size (fast)
+Aborted (core dumped)
+
+Apparently dcc_gcc_rewrite writes beyond the allocated memory:
+
+valgrind --leak-check=full -v ./distcc gcc -Wall -std=gnu89 -I. -O2 -o hello.o -c hello.c
+
+==11382== ERROR SUMMARY: 53 errors from 5 contexts (suppressed: 0 from 0)
+==11382==
+==11382== 1 errors in context 1 of 5:
+==11382== Invalid write of size 1
+==11382== at 0x4C349D8: strcat (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==11382== by 0x10D165: dcc_gcc_rewrite_fqn (compile.c:611)
+==11382== by 0x10D4B4: dcc_build_somewhere (compile.c:725)
+==11382== by 0x10DC01: dcc_build_somewhere_timed (compile.c:1014)
+==11382== by 0x10E380: main (distcc.c:352)
+==11382== Address 0x544e828 is 1 bytes after a block of size 23 alloc'd
+==11382== at 0x4C31B0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==11382== by 0x10D087: dcc_gcc_rewrite_fqn (compile.c:588)
+==11382== by 0x10D4B4: dcc_build_somewhere (compile.c:725)
+==11382== by 0x10DC01: dcc_build_somewhere_timed (compile.c:1014)
+==11382== by 0x10E380: main (distcc.c:352)
+==11382==
+==11382==
+==11382== 1 errors in context 2 of 5:
+==11382== Invalid write of size 1
+==11382== at 0x4C349C8: strcat (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==11382== by 0x10D165: dcc_gcc_rewrite_fqn (compile.c:611)
+==11382== by 0x10D4B4: dcc_build_somewhere (compile.c:725)
+==11382== by 0x10DC01: dcc_build_somewhere_timed (compile.c:1014)
+==11382== by 0x10E380: main (distcc.c:352)
+==11382== Address 0x544e827 is 0 bytes after a block of size 23 alloc'd
+==11382== at 0x4C31B0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==11382== by 0x10D087: dcc_gcc_rewrite_fqn (compile.c:588)
+==11382== by 0x10D4B4: dcc_build_somewhere (compile.c:725)
+==11382== by 0x10DC01: dcc_build_somewhere_timed (compile.c:1014)
+==11382== by 0x10E380: main (distcc.c:352)
+
+and ALT Linux' hardened glibc does not quite like that.
+Correctly compute the `newcmd_len` to avoid the problem.
+
+ALTBUG: #40425
+---
+ src/compile.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/compile.c b/src/compile.c
+index 34964566..26d7d182 100644
+--- a/src/compile.c
++++ b/src/compile.c
+@@ -584,7 +584,7 @@ static int dcc_gcc_rewrite_fqn(char **argv)
+ return -ENOENT;
+
+
+- newcmd_len = strlen(target_with_vendor) + 1 + strlen(argv[0] + 1);
++ newcmd_len = strlen(target_with_vendor) + 1 + strlen(argv[0]) + 1;
+ newcmd = malloc(newcmd_len);
+ if (!newcmd)
+ return -ENOMEM;
diff --git a/user/djvulibre/APKBUILD b/user/djvulibre/APKBUILD
index a90485e6a..fa2ce6059 100644
--- a/user/djvulibre/APKBUILD
+++ b/user/djvulibre/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=djvulibre
pkgver=3.5.27
-pkgrel=0
+pkgrel=2
pkgdesc="Format for distributing documents and images"
url="http://djvu.sourceforge.net/"
arch="all"
@@ -11,10 +11,24 @@ depends=""
depends_dev=""
makedepends="$depends_dev imagemagick libjpeg-turbo-dev tiff-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://downloads.sourceforge.net/djvu/djvulibre-$pkgver.tar.gz"
+source="https://downloads.sourceforge.net/djvu/djvulibre-$pkgver.tar.gz
+ CVE-2019-15142.patch
+ CVE-2019-15143.patch
+ CVE-2019-15144.patch
+ CVE-2019-15145.patch
+ CVE-2019-18804.patch
+ "
+
+# secfixes:
+# 3.5.27-r1:
+# - CVE-2019-15142
+# - CVE-2019-15143
+# - CVE-2019-15144
+# - CVE-2019-15145
+# 3.5.27-r2:
+# - CVE-2019-18804
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +40,17 @@ build() {
}
check() {
- cd "$builddir"
+ # This doesn't actually do anything yet
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="62abcaa2fe7edab536477929ba38b882453dab1a06e119a3f838b38d5c61f5d8c252e4769e6534582b826e49bcfb490513179580fab9c3afa84aa92053ccebee djvulibre-3.5.27.tar.gz"
+sha512sums="62abcaa2fe7edab536477929ba38b882453dab1a06e119a3f838b38d5c61f5d8c252e4769e6534582b826e49bcfb490513179580fab9c3afa84aa92053ccebee djvulibre-3.5.27.tar.gz
+d9e4301fb98a35b8c2f1854eb4be53611f98b3fc9fdd357dd5502b5b189bdf61957a48b220f3ab7465bbf1df8606ce04513e10df74643a9e289c349f94721561 CVE-2019-15142.patch
+3527e1c84f7c7d36f902cb3d7e9ddb6866acbdd4b47675ce3ffd164accf2e2931a4c6bbaae2ea775b4710d88ae34dd4dcd39a5846fce13bef2c82a99d608b8c1 CVE-2019-15143.patch
+f8f1abf328a97d69514b2626e4c6449c0c7b7e2b5518d56bba6a61a944aaf4b7fffd1371c26396353728f6a1399c6d87492af5c17e6b623dae7751b81eac11f9 CVE-2019-15144.patch
+790ef1e05874635c762600c990ecbd3e29e2eb01c59e25a0f8b2a15dbadbd3673d9dbb651d9dcb53fd3e5f4cb6bded47c3eefaaef8b4ccac39bd28f8bbec2068 CVE-2019-15145.patch
+e5d6cd98f208db49880c6237f7cd8ab097d02f9771936c04a5acc48d9d18876d5cf48bcc61b14f1affc501ee63e8d6337fa83af259485ef35d4faa5086f06d10 CVE-2019-18804.patch"
diff --git a/user/djvulibre/CVE-2019-15142.patch b/user/djvulibre/CVE-2019-15142.patch
new file mode 100644
index 000000000..84ed64e24
--- /dev/null
+++ b/user/djvulibre/CVE-2019-15142.patch
@@ -0,0 +1,94 @@
+Lifted from SUSE: backport of two upstream commits
+
+https://sourceforge.net/p/djvu/djvulibre-git/ci/970fb11a296b5bbdc5e8425851253d2c5913c45e
+https://sourceforge.net/p/djvu/djvulibre-git/ci/89d71b01d606e57ecec2c2930c145bb20ba5bbe3
+https://bugzilla.suse.com/show_bug.cgi?id=1146702#c3
+https://build.opensuse.org/package/view_file/graphics/djvulibre/djvulibre-CVE-2019-15142.patch
+
+Index: djvulibre-3.5.27/libdjvu/DjVmDir.cpp
+===================================================================
+--- djvulibre-3.5.27.orig/libdjvu/DjVmDir.cpp 2014-07-08 23:15:07.000000000 +0200
++++ djvulibre-3.5.27/libdjvu/DjVmDir.cpp 2019-09-02 13:46:28.076374501 +0200
+@@ -300,36 +300,44 @@ DjVmDir::decode(const GP<ByteStream> &gs
+ memcpy((char*) strings+strings_size, buffer, length);
+ }
+ DEBUG_MSG("size of decompressed names block=" << strings.size() << "\n");
+-
+- // Copy names into the files
++ int strings_size=strings.size();
++ strings.resize(strings_size+3);
++ memset((char*) strings+strings_size, 0, 4);
++
++ // Copy names into the files
+ const char * ptr=strings;
+ for(pos=files_list;pos;++pos)
+ {
+ GP<File> file=files_list[pos];
+-
++ if (ptr >= (const char*)strings + strings_size)
++ G_THROW( "DjVu document is corrupted (DjVmDir)" );
+ file->id=ptr;
+ ptr+=file->id.length()+1;
+ if (file->flags & File::HAS_NAME)
+ {
+- file->name=ptr;
+- ptr+=file->name.length()+1;
+- } else
++ file->name=ptr;
++ ptr+=file->name.length()+1;
++ }
++ else
+ {
+ file->name=file->id;
+ }
+ if (file->flags & File::HAS_TITLE)
+ {
+- file->title=ptr;
+- ptr+=file->title.length()+1;
+- } else
+- file->title=file->id;
+- /* msr debug: multipage file, file->title is null.
++ file->title=ptr;
++ ptr+=file->title.length()+1;
++ }
++ else
++ {
++ file->title=file->id;
++ }
++ /* msr debug: multipage file, file->title is null.
+ DEBUG_MSG(file->name << ", " << file->id << ", " << file->title << ", " <<
+ file->offset << ", " << file->size << ", " <<
+ file->is_page() << "\n"); */
+ }
+
+- // Check that there is only one file with SHARED_ANNO flag on
++ // Check that there is only one file with SHARED_ANNO flag on
+ int shared_anno_cnt=0;
+ for(pos=files_list;pos;++pos)
+ {
+Index: djvulibre-3.5.27/libdjvu/miniexp.cpp
+===================================================================
+--- djvulibre-3.5.27.orig/libdjvu/miniexp.cpp 2015-02-11 05:35:37.000000000 +0100
++++ djvulibre-3.5.27/libdjvu/miniexp.cpp 2019-09-02 13:46:28.072374476 +0200
+@@ -1028,7 +1028,7 @@ print_c_string(const char *s, char *d, i
+ {
+ if (char_quoted(c, flags))
+ {
+- char buffer[10];
++ char buffer[16]; /* 10+1 */
+ static const char *tr1 = "\"\\tnrbf";
+ static const char *tr2 = "\"\\\t\n\r\b\f";
+ buffer[0] = buffer[1] = 0;
+Index: djvulibre-3.5.27/tools/csepdjvu.cpp
+===================================================================
+--- djvulibre-3.5.27.orig/tools/csepdjvu.cpp 2014-07-24 23:12:05.000000000 +0200
++++ djvulibre-3.5.27/tools/csepdjvu.cpp 2019-09-02 13:46:28.072374476 +0200
+@@ -1814,7 +1814,7 @@ main(int argc, const char **argv)
+ ByteStream::create(GURL::Filename::UTF8(arg),"rb");
+ BufferByteStream ibs(*fbs);
+ do {
+- char pagename[16];
++ char pagename[20];
+ sprintf(pagename, "p%04d.djvu", ++pageno);
+ if (opts.verbose > 1)
+ DjVuPrintErrorUTF8("%s","--------------------\n");
diff --git a/user/djvulibre/CVE-2019-15143.patch b/user/djvulibre/CVE-2019-15143.patch
new file mode 100644
index 000000000..db04087e1
--- /dev/null
+++ b/user/djvulibre/CVE-2019-15143.patch
@@ -0,0 +1,46 @@
+From b1f4e1b2187d9e5010cd01ceccf20b4a11ce723f Mon Sep 17 00:00:00 2001
+From: Leon Bottou <leon@bottou.org>
+Date: Tue, 26 Mar 2019 20:45:46 -0400
+Subject: [PATCH] fix for bug #297
+
+---
+ libdjvu/DjVmDir.cpp | 2 +-
+ libdjvu/GBitmap.cpp | 6 ++++--
+ 2 files changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/libdjvu/DjVmDir.cpp b/libdjvu/DjVmDir.cpp
+index 0a0fac6..5a49015 100644
+--- a/libdjvu/DjVmDir.cpp
++++ b/libdjvu/DjVmDir.cpp
+@@ -309,7 +309,7 @@ DjVmDir::decode(const GP<ByteStream> &gstr)
+ {
+ GP<File> file=files_list[pos];
+ if (ptr >= (const char*)strings + strings_size)
+- G_THROW( "DjVu document is corrupted (DjVmDir)" );
++ G_THROW( ByteStream::EndOfFile );
+ file->id=ptr;
+ ptr+=file->id.length()+1;
+ if (file->flags & File::HAS_NAME)
+diff --git a/libdjvu/GBitmap.cpp b/libdjvu/GBitmap.cpp
+index 0e487f0..c2fdbe4 100644
+--- a/libdjvu/GBitmap.cpp
++++ b/libdjvu/GBitmap.cpp
+@@ -890,11 +890,13 @@ GBitmap::read_rle_raw(ByteStream &bs)
+ int c = 0;
+ while (n >= 0)
+ {
+- bs.read(&h, 1);
++ if (bs.read(&h, 1) <= 0)
++ G_THROW( ByteStream::EndOfFile );
+ int x = h;
+ if (x >= (int)RUNOVERFLOWVALUE)
+ {
+- bs.read(&h, 1);
++ if (bs.read(&h, 1) <= 0)
++ G_THROW( ByteStream::EndOfFile );
+ x = h + ((x - (int)RUNOVERFLOWVALUE) << 8);
+ }
+ if (c+x > ncolumns)
+--
+2.22.1
+
diff --git a/user/djvulibre/CVE-2019-15144.patch b/user/djvulibre/CVE-2019-15144.patch
new file mode 100644
index 000000000..1b0c71c5f
--- /dev/null
+++ b/user/djvulibre/CVE-2019-15144.patch
@@ -0,0 +1,117 @@
+From e15d51510048927f172f1bf1f27ede65907d940d Mon Sep 17 00:00:00 2001
+From: Leon Bottou <leon@bottou.org>
+Date: Mon, 8 Apr 2019 22:25:55 -0400
+Subject: [PATCH] bug 299 fixed
+
+---
+ libdjvu/GContainer.h | 87 ++++++++++++++++++++++++--------------------
+ 1 file changed, 48 insertions(+), 39 deletions(-)
+
+diff --git a/libdjvu/GContainer.h b/libdjvu/GContainer.h
+index 96b067c..0140211 100644
+--- a/libdjvu/GContainer.h
++++ b/libdjvu/GContainer.h
+@@ -550,52 +550,61 @@ public:
+ template <class TYPE> void
+ GArrayTemplate<TYPE>::sort(int lo, int hi)
+ {
+- if (hi <= lo)
+- return;
+- if (hi > hibound || lo<lobound)
+- G_THROW( ERR_MSG("GContainer.illegal_subscript") );
+ TYPE *data = (TYPE*)(*this);
+- // Test for insertion sort
+- if (hi <= lo + 50)
++ while(true)
+ {
+- for (int i=lo+1; i<=hi; i++)
++ if (hi <= lo)
++ return;
++ if (hi > hibound || lo<lobound)
++ G_THROW( ERR_MSG("GContainer.illegal_subscript") );
++ // Test for insertion sort
++ if (hi <= lo + 50)
+ {
+- int j = i;
+- TYPE tmp = data[i];
+- while ((--j>=lo) && !(data[j]<=tmp))
+- data[j+1] = data[j];
+- data[j+1] = tmp;
++ for (int i=lo+1; i<=hi; i++)
++ {
++ int j = i;
++ TYPE tmp = data[i];
++ while ((--j>=lo) && !(data[j]<=tmp))
++ data[j+1] = data[j];
++ data[j+1] = tmp;
++ }
++ return;
+ }
+- return;
+- }
+- // -- determine suitable quick-sort pivot
+- TYPE tmp = data[lo];
+- TYPE pivot = data[(lo+hi)/2];
+- if (pivot <= tmp)
+- { tmp = pivot; pivot=data[lo]; }
+- if (data[hi] <= tmp)
+- { pivot = tmp; }
+- else if (data[hi] <= pivot)
+- { pivot = data[hi]; }
+- // -- partition set
+- int h = hi;
+- int l = lo;
+- while (l < h)
+- {
+- while (! (pivot <= data[l])) l++;
+- while (! (data[h] <= pivot)) h--;
+- if (l < h)
++ // -- determine median-of-three pivot
++ TYPE tmp = data[lo];
++ TYPE pivot = data[(lo+hi)/2];
++ if (pivot <= tmp)
++ { tmp = pivot; pivot=data[lo]; }
++ if (data[hi] <= tmp)
++ { pivot = tmp; }
++ else if (data[hi] <= pivot)
++ { pivot = data[hi]; }
++ // -- partition set
++ int h = hi;
++ int l = lo;
++ while (l < h)
+ {
+- tmp = data[l];
+- data[l] = data[h];
+- data[h] = tmp;
+- l = l+1;
+- h = h-1;
++ while (! (pivot <= data[l])) l++;
++ while (! (data[h] <= pivot)) h--;
++ if (l < h)
++ {
++ tmp = data[l];
++ data[l] = data[h];
++ data[h] = tmp;
++ l = l+1;
++ h = h-1;
++ }
++ }
++ // -- recurse, small partition first
++ // tail-recursion elimination
++ if (h - lo <= hi - l) {
++ sort(lo,h);
++ lo = l; // sort(l,hi)
++ } else {
++ sort(l,hi);
++ hi = h; // sort(lo,h)
+ }
+ }
+- // -- recursively restart
+- sort(lo, h);
+- sort(l, hi);
+ }
+
+ template<class TYPE> inline TYPE&
+--
+2.22.1
+
diff --git a/user/djvulibre/CVE-2019-15145.patch b/user/djvulibre/CVE-2019-15145.patch
new file mode 100644
index 000000000..2a545cee2
--- /dev/null
+++ b/user/djvulibre/CVE-2019-15145.patch
@@ -0,0 +1,34 @@
+From 9658b01431cd7ff6344d7787f855179e73fe81a7 Mon Sep 17 00:00:00 2001
+From: Leon Bottou <leon@bottou.org>
+Date: Mon, 8 Apr 2019 22:55:38 -0400
+Subject: [PATCH] fix bug #298
+
+---
+ libdjvu/GBitmap.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libdjvu/GBitmap.h b/libdjvu/GBitmap.h
+index e8e0c9b..ca89a19 100644
+--- a/libdjvu/GBitmap.h
++++ b/libdjvu/GBitmap.h
+@@ -566,7 +566,7 @@ GBitmap::operator[](int row)
+ {
+ if (!bytes)
+ uncompress();
+- if (row<0 || row>=nrows) {
++ if (row<0 || row>=nrows || !bytes) {
+ #ifndef NDEBUG
+ if (zerosize < bytes_per_row + border)
+ G_THROW( ERR_MSG("GBitmap.zero_small") );
+@@ -581,7 +581,7 @@ GBitmap::operator[](int row) const
+ {
+ if (!bytes)
+ ((GBitmap*)this)->uncompress();
+- if (row<0 || row>=nrows) {
++ if (row<0 || row>=nrows || !bytes) {
+ #ifndef NDEBUG
+ if (zerosize < bytes_per_row + border)
+ G_THROW( ERR_MSG("GBitmap.zero_small") );
+--
+2.22.1
+
diff --git a/user/djvulibre/CVE-2019-18804.patch b/user/djvulibre/CVE-2019-18804.patch
new file mode 100644
index 000000000..7c66c3989
--- /dev/null
+++ b/user/djvulibre/CVE-2019-18804.patch
@@ -0,0 +1,39 @@
+From c8bec6549c10ffaa2f2fbad8bbc629efdf0dd125 Mon Sep 17 00:00:00 2001
+From: Leon Bottou <leon@bottou.org>
+Date: Thu, 17 Oct 2019 22:20:31 -0400
+Subject: [PATCH] Fixed bug 309
+
+---
+ libdjvu/IW44EncodeCodec.cpp | 2 +-
+ tools/ddjvu.cpp | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/libdjvu/IW44EncodeCodec.cpp b/libdjvu/IW44EncodeCodec.cpp
+index 00752a0..f81eaeb 100644
+--- a/libdjvu/IW44EncodeCodec.cpp
++++ b/libdjvu/IW44EncodeCodec.cpp
+@@ -405,7 +405,7 @@ filter_fv(short *p, int w, int h, int rowsize, int scale)
+ int y = 0;
+ int s = scale*rowsize;
+ int s3 = s+s+s;
+- h = ((h-1)/scale)+1;
++ h = (h>0) ? ((h-1)/scale)+1 : 0;
+ y += 1;
+ p += s;
+ while (y-3 < h)
+diff --git a/tools/ddjvu.cpp b/tools/ddjvu.cpp
+index 6d0df3b..7109952 100644
+--- a/tools/ddjvu.cpp
++++ b/tools/ddjvu.cpp
+@@ -279,7 +279,7 @@ render(ddjvu_page_t *page, int pageno)
+ prect.h = (ih * 100) / dpi;
+ }
+ /* Process aspect ratio */
+- if (flag_aspect <= 0)
++ if (flag_aspect <= 0 && iw>0 && ih>0)
+ {
+ double dw = (double)iw / prect.w;
+ double dh = (double)ih / prect.h;
+--
+2.20.1
+
diff --git a/user/dmenu/APKBUILD b/user/dmenu/APKBUILD
deleted file mode 100644
index 39a27bc5a..000000000
--- a/user/dmenu/APKBUILD
+++ /dev/null
@@ -1,36 +0,0 @@
-# Contributor: Eivind Uggedal <eivind@uggedal.com>
-# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
-# Maintainer: Dan Theisen <djt@hxx.in>
-pkgname=dmenu
-pkgver=4.8
-pkgrel=0
-pkgdesc="Dynamic menu for X"
-url="https://tools.suckless.org/dmenu/"
-arch="all"
-license="MIT OR X11"
-depends=""
-makedepends="libx11-dev libxinerama-dev libxft-dev"
-options="!check" # This package has no testsuite
-subpackages="$pkgname-doc"
-source="https://dl.suckless.org/tools/$pkgname-$pkgver.tar.gz"
-
-prepare() {
- default_prepare
- sed -i -e '/CFLAGS/{s/-Os//;s/=/+=/}' \
- -e '/LDFLAGS/{s/-s//;s/=/+=/}' \
- "$builddir"/config.mk
-}
-
-build() {
- make X11INC=/usr/include/X11 \
- X11LIB=/usr/lib/X11 \
- FREETYPEINC=/usr/include/freetype2 \
- -C "$builddir"
-}
-
-package() {
- make DESTDIR=$pkgdir PREFIX=/usr \
- -C "$builddir" install
-}
-
-sha512sums="fa2700018cfb912a21f867ef3ca771a58a25c2cb8e1fb37acef046bb15d8d8b92dcc5bfce486befae0f143495d0283910988e181a9eb143be3bb1b5be9738d77 dmenu-4.8.tar.gz"
diff --git a/user/dmidecode/APKBUILD b/user/dmidecode/APKBUILD
index 811c0a361..3ff429b21 100644
--- a/user/dmidecode/APKBUILD
+++ b/user/dmidecode/APKBUILD
@@ -1,24 +1,23 @@
-# Maintainer:
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=dmidecode
-pkgver=3.2
+pkgver=3.4
pkgrel=0
pkgdesc="Utility for gathering information about system hardware"
-url="http://www.nongnu.org/dmidecode"
+url="https://www.nongnu.org/dmidecode"
arch="all"
options="!check" # No test suite.
license="GPL-2.0-only"
+depends=""
+makedepends=""
subpackages="$pkgname-doc"
-source="http://download.savannah.gnu.org/releases/dmidecode/dmidecode-$pkgver.tar.xz
- "
+source="https://download.savannah.gnu.org/releases/dmidecode/dmidecode-$pkgver.tar.xz"
build() {
- cd "$builddir"
make prefix=/usr
}
package() {
- cd "$builddir"
- make prefix=/usr DESTDIR="${pkgdir}" install
+ make prefix=/usr DESTDIR="$pkgdir" install
}
-sha512sums="b080c73fbda756109f0f29935c641e0b32ea9ffe90f0a8254164c9c1ff5617d042347298e6bac31e5463e94fa56efe2b2743238156d878254fc77120e6dc1a18 dmidecode-3.2.tar.xz"
+sha512sums="62990b6159e5a7c8688d37e44957e7948391d2c6afeabaa4514ba9dad2d08b020297676e2dbbfcb6471efc6fb6f3682750422931a953f78f358bb3dd3745e95b dmidecode-3.4.tar.xz"
diff --git a/user/dmraid/APKBUILD b/user/dmraid/APKBUILD
index 7f5b953d4..71545ecda 100644
--- a/user/dmraid/APKBUILD
+++ b/user/dmraid/APKBUILD
@@ -19,13 +19,11 @@ source="https://people.redhat.com/~heinzm/sw/$pkgname/src/$pkgname-$_realver-$pk
builddir="$srcdir/$pkgname/$_realver-$pkgrel/$pkgname"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--prefix=/usr \
--build=$CBUILD \
@@ -34,7 +32,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/dnsmasq/APKBUILD b/user/dnsmasq/APKBUILD
new file mode 100644
index 000000000..1d5756e95
--- /dev/null
+++ b/user/dnsmasq/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=dnsmasq
+pkgver=2.89
+pkgrel=0
+pkgdesc="Network infrastructure (DNS, DHCP, PXE) for small networks"
+url="https://dnsmasq.org/"
+arch="all"
+options="!check" # No test suite.
+license="GPL-2.0 OR GPL-3.0"
+depends=""
+makedepends="libidn2-dev nettle-dev"
+subpackages="$pkgname-doc $pkgname-lang $pkgname-openrc"
+install="$pkgname.pre-install"
+source="https://thekelleys.org.uk/$pkgname/$pkgname-$pkgver.tar.xz
+ dnsmasq.initd
+ dnsmasq.confd
+ "
+
+_conf="-DNO_CONNTRACK -DNO_DBUS -DHAVE_IDN -DHAVE_LIBIDN2 -DHAVE_DNSSEC -DNO_LUA"
+
+build() {
+ make PREFIX=/usr CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" COPTS="$_conf"\
+ all-i18n
+}
+
+package() {
+ make PREFIX=/usr CFLAGS="${CFLAGS}" LDFLAGS="${LDFLAGS}" COPTS="$_conf"\
+ DESTDIR="$pkgdir" install-i18n
+}
+
+openrc() {
+ install -D -m755 "$srcdir"/dnsmasq.initd "$subpkgdir"/etc/init.d/dnsmasq
+ install -D -m755 "$srcdir"/dnsmasq.confd "$subpkgdir"/etc/conf.d/dnsmasq
+}
+
+sha512sums="4384ed5b673e10eaf6532e6eaeb5c0a6b817581433cc28c632bdcbadbfc050a0ab73bc5b73c98d708cd39515bb3f72168714b0aa5f16436cebdd18020648d428 dnsmasq-2.89.tar.xz
+72ae659a62c61495dc575fa590cbf1352c4bd4f374a6e0a56fce9c641c163b882d8b8097d27605d102e47df49eb68c456baf7b11009a7bb7db98e99429bd80a6 dnsmasq.initd
+9a401bfc408bf1638645c61b8ca734bea0a09ef79fb36648ec7ef21666257234254bbe6c73c82cc23aa1779ddcdda0e6baa2c041866f16dfb9c4e0ba9133eab8 dnsmasq.confd"
diff --git a/user/dnsmasq/dnsmasq.confd b/user/dnsmasq/dnsmasq.confd
new file mode 100644
index 000000000..0e9446307
--- /dev/null
+++ b/user/dnsmasq/dnsmasq.confd
@@ -0,0 +1,4 @@
+# /etc/conf.d/dnsmasq: config file for /etc/init.d/dnsmasq
+
+# See the dnsmasq(8) man page for possible options to put here.
+DNSMASQ_OPTS="--user=dnsmasq --group=dnsmasq"
diff --git a/user/dnsmasq/dnsmasq.initd b/user/dnsmasq/dnsmasq.initd
new file mode 100644
index 000000000..559cb1e89
--- /dev/null
+++ b/user/dnsmasq/dnsmasq.initd
@@ -0,0 +1,29 @@
+#!/sbin/openrc-run
+# Copyright 1999-2018 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License, v2 or later
+
+extra_started_commands="reload rotate"
+
+pidfile="/var/run/dnsmasq.pid"
+command="/usr/sbin/dnsmasq"
+command_args="-x ${pidfile} ${DNSMASQ_OPTS}"
+retry="TERM/3/TERM/5"
+
+depend() {
+ provide dns
+ need localmount net
+ after bootmisc
+ use logger
+}
+
+reload() {
+ ebegin "Reloading ${RC_SVCNAME}"
+ start-stop-daemon --signal HUP --pidfile "${pidfile}"
+ eend $?
+}
+
+rotate() {
+ ebegin "Reopening ${RC_SVCNAME} log file"
+ start-stop-daemon --signal USR2 --pidfile "${pidfile}"
+ eend $?
+}
diff --git a/user/dnsmasq/dnsmasq.pre-install b/user/dnsmasq/dnsmasq.pre-install
new file mode 100644
index 000000000..38a723e57
--- /dev/null
+++ b/user/dnsmasq/dnsmasq.pre-install
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+groupadd -r dnsmasq -g 200 2>/dev/null
+useradd -c "dnsmasq daemon user" -s /sbin/nologin -g dnsmasq \
+ -M -d /var/empty -r -u 200 dnsmasq 2>/dev/null
+
+exit 0
diff --git a/user/doas/APKBUILD b/user/doas/APKBUILD
new file mode 100644
index 000000000..99b3ac5c0
--- /dev/null
+++ b/user/doas/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Nathan <ndowens@artixlinux.org>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=doas
+pkgver=6.6.1
+pkgrel=0
+pkgdesc="OpenBSD's escalation tool"
+url="https://github.com/Duncaen/OpenDoas"
+arch="all"
+options="suid"
+license="ISC"
+depends=""
+makedepends="bison"
+subpackages="$pkgname-doc"
+source="$pkgname-$pkgver.tar.gz::https://github.com/Duncaen/OpenDoas/archive/v$pkgver.tar.gz"
+builddir="$srcdir/OpenDoas-$pkgver"
+
+build() {
+ ./configure \
+ --prefix=/usr \
+ --without-pam \
+ --with-timestamp
+ make
+}
+
+check() {
+ # doas -v returns 1
+ ./doas -v || test $? = 1
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="390e0e139a2641be22c4493c3ed755d9cb4091f4ab8d590123b7c8c4f2f116cea3b3500926ff191fb98d92192ca9e92118cbcbeb463a7833763e00c65603e678 doas-6.6.1.tar.gz"
diff --git a/user/docbook2x/APKBUILD b/user/docbook2x/APKBUILD
index 463e60300..fb6702b3f 100644
--- a/user/docbook2x/APKBUILD
+++ b/user/docbook2x/APKBUILD
@@ -4,7 +4,7 @@ pkgname=docbook2x
pkgver=0.8.8
pkgrel=0
pkgdesc="Tool to convert DocBook XML to Unix man pages"
-url="http://docbook2x.sourceforge.net/"
+url="https://docbook2x.sourceforge.net/"
arch="all"
license="MIT"
depends="docbook-xml docbook-xsl libxml2-utils libxslt perl-xml-sax"
@@ -20,7 +20,6 @@ source="https://downloads.sourceforge.net/docbook2x/docbook2X-$pkgver.tar.gz
builddir="$srcdir/docbook2X-$pkgver"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,12 +32,10 @@ build() {
}
check() {
- cd "$builddir"/test/refentry
- make check
+ make -C test/refentry check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/dolphin/APKBUILD b/user/dolphin/APKBUILD
index 2a7ec1437..7e4dd508a 100644
--- a/user/dolphin/APKBUILD
+++ b/user/dolphin/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=dolphin
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Lightweight desktop file manager"
url="https://www.kde.org/applications/system/dolphin/"
@@ -14,12 +14,11 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kdoctools-dev kinit-dev
kbookmarks-dev kconfig-dev kio-dev kparts-dev solid-dev kiconthemes-dev
kcompletion-dev ktextwidgets-dev knotifications-dev kcrash-dev
baloo-dev kfilemetadata-dev kdelibs4support-dev kactivities-dev
- baloo-widgets-dev"
+ baloo-widgets-dev kuserfeedback-dev ruby-test-unit"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/dolphin-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/dolphin-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -30,18 +29,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="369592af52053550eb482fecfbb54fda3d65db75b0bcf000f88c32d4e709e056f8f5399427674b3aac0bcea438fe8fa24bdbb08109373e0c44e495d9c772da1f dolphin-18.12.3.tar.xz"
+sha512sums="67c0e536aa09b20b54a22a35e369cad51fb17618503cef7418d40189cfca113f672c199eebee22130e385ba29210c64c475302ff8c6227df5560a537e7846ff0 dolphin-22.04.2.tar.xz"
diff --git a/user/dos2unix/APKBUILD b/user/dos2unix/APKBUILD
new file mode 100644
index 000000000..782bc5d66
--- /dev/null
+++ b/user/dos2unix/APKBUILD
@@ -0,0 +1,27 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=dos2unix
+pkgver=7.4.3
+pkgrel=0
+pkgdesc="Convert line endings in plain text files"
+url="https://sourceforge.net/projects/dos2unix/"
+arch="all"
+license="BSD-2-Clause-FreeBSD"
+depends=""
+makedepends=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://downloads.sourceforge.net/dos2unix/dos2unix-$pkgver.tar.gz"
+
+build() {
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="1c6d81348de8aca451174794141d0802685487cf6847fa91f7de745d89bcf2af864fc2ec549b9af72031891d4efcb9731fe823ce05da36d1f9e9890ff2cb60fb dos2unix-7.4.3.tar.gz"
diff --git a/user/dosbox/APKBUILD b/user/dosbox/APKBUILD
index e8674b531..f3a83f46e 100644
--- a/user/dosbox/APKBUILD
+++ b/user/dosbox/APKBUILD
@@ -9,7 +9,8 @@ arch="all !s390x"
options="!check" # dosbox does not ship tests
license="GPL-2.0-only"
depends=""
-makedepends="ncurses-dev zlib-dev libxkbfile-dev libpng-dev libpcap-dev fluidsynth-dev sdl2-dev alsa-lib-dev"
+makedepends="ncurses-dev zlib-dev libxkbfile-dev libpng-dev libpcap-dev
+ fluidsynth-dev sdl2-dev alsa-lib-dev autoconf automake libtool"
source="https://github.com/joncampbell123/dosbox-x/archive/dosbox-x-wip-20180513-1316.tar.gz
porttalk-fix.patch
asmfix.patch
@@ -20,7 +21,12 @@ source="https://github.com/joncampbell123/dosbox-x/archive/dosbox-x-wip-20180513
builddir="$srcdir/dosbox-x-dosbox-x-wip-20180513-1316"
build() {
- cd "$builddir"
+ _extra_conf=""
+
+ case $CTARGET_ARCH in
+ pmmx) _extra_conf="--disable-dynamic-x86";;
+ esac
+
./autogen.sh
./configure \
--build=$CBUILD \
@@ -28,12 +34,12 @@ build() {
--prefix=/usr \
--enable-debug \
--enable-core-inline \
- --enable-sdl2
+ --enable-sdl2 \
+ $_extra_conf
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/dosfstools/APKBUILD b/user/dosfstools/APKBUILD
index 0ee614c94..a45803e24 100644
--- a/user/dosfstools/APKBUILD
+++ b/user/dosfstools/APKBUILD
@@ -7,13 +7,12 @@ url="https://github.com/dosfstools/dosfstools"
arch="all"
license="GPL-3.0+"
depends=""
-makedepends="linux-headers"
checkdepends="vim"
+makedepends="linux-headers"
subpackages="$pkgname-doc"
source="https://github.com/dosfstools/dosfstools/releases/download/v$pkgver/dosfstools-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,12 +25,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/dotconf/APKBUILD b/user/dotconf/APKBUILD
index 54f08fa92..5ea71278f 100644
--- a/user/dotconf/APKBUILD
+++ b/user/dotconf/APKBUILD
@@ -9,17 +9,15 @@ arch="all"
license="LGPL-2.1-only"
depends=""
makedepends=""
-subpackages="$pkgname-dev $pkgname-doc"
-source="https://distfiles.gentoo.org/distfiles/dotconf-$pkgver.tar.gz"
+subpackages="$pkgname-doc $pkgname-dev"
+source="http://distfiles.gentoo.org/distfiles/dotconf-$pkgver.tar.gz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,12 +29,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/dovecot/APKBUILD b/user/dovecot/APKBUILD
new file mode 100644
index 000000000..b85f3a97e
--- /dev/null
+++ b/user/dovecot/APKBUILD
@@ -0,0 +1,275 @@
+# Contributor: Valery Kartel <valery.kartel@gmail.com>
+# Contributor: Łukasz Jendrysik <scadu@yandex.com>
+# Contributor: Michael Mason <ms13sp@gmail.com>
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Lee Starnes <lee@canned-death.us>
+pkgname=dovecot
+pkgver=2.3.21.1
+case "$pkgver" in
+ *.*.*.*) _pkgvermajor=${pkgver%.*.*};;
+ *.*.*) _pkgvermajor=${pkgver%.*};;
+esac
+pkgrel=1
+_pigeonholevel=0.5.21.1
+pkgdesc="IMAP and POP3 server"
+url="https://www.dovecot.org/"
+arch="all"
+options="libtool"
+license="LGPL-2.0+"
+depends="openssl"
+makedepends="autoconf automake libtool bzip2-dev expat-dev krb5-dev libcap-dev
+ libsodium-dev linux-headers linux-pam-dev mariadb-dev openldap-dev
+ openssl-dev postgresql-dev sqlite-dev zlib-dev"
+pkgusers="dovecot dovenull"
+pkggroups="dovecot dovenull"
+install="$pkgname.pre-install $pkgname.post-install $pkgname.post-upgrade"
+subpackages="$pkgname-doc $pkgname-dev $pkgname-openrc $pkgname-lmtpd
+ $pkgname-pop3d $pkgname-submissiond
+ $pkgname-pigeonhole-plugin-ldap:_sieve_ldap
+ $pkgname-pigeonhole-plugin:_sieve
+ $pkgname-sql $pkgname-pgsql $pkgname-mysql $pkgname-sqlite
+ $pkgname-gssapi $pkgname-ldap $pkgname-fts-solr:_fts_solr
+ "
+source="https://www.dovecot.org/releases/$_pkgvermajor/dovecot-$pkgver.tar.gz
+ https://pigeonhole.dovecot.org/releases/$_pkgvermajor/$pkgname-$_pkgvermajor-pigeonhole-$_pigeonholevel.tar.gz
+ fix-time64.patch
+ skip-iconv-check.patch
+ split-protocols.patch
+ default-config.patch
+ ssl-paths.patch
+ test-file-cache-enomem.patch
+ dovecot.logrotate
+ dovecot.initd
+ CVE-2022-30550.patch
+ "
+_builddir_pigeonhole="$srcdir/$pkgname-$_pkgvermajor-pigeonhole-$_pigeonholevel"
+
+# secfixes:
+# 2.3.21.1-r0:
+# - CVE-2024-23184
+# - CVE-2024-23185
+# 2.3.19.1-r0:
+# - CVE-2022-30550
+# 2.3.19-r0:
+# - CVE-2020-28200
+# - CVE-2021-29157
+# - CVE-2021-33515
+# 2.3.13-r0:
+# - CVE-2020-24386
+# - CVE-2020-25275
+# 2.3.11.3-r0:
+# - CVE-2020-12100
+# - CVE-2020-12673
+# - CVE-2020-12674
+# 2.3.10.1-r0:
+# - CVE-2020-10957
+# - CVE-2020-10958
+# - CVE-2020-10967
+
+_configure() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --localstatedir=/var \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --disable-static \
+ "$@"
+}
+
+build() {
+ _configure \
+ --with-gssapi=plugin \
+ --with-ldap=plugin \
+ --with-sql=plugin \
+ --with-pam \
+ --with-mysql \
+ --with-sqlite \
+ --with-pgsql \
+ --with-solr \
+ --with-ssl=openssl \
+ --with-ssldir=/etc/ssl/dovecot \
+ --with-rundir=/run/dovecot \
+ --without-lucene
+ make
+
+ # Build pigeonhole plugin
+ cd "$_builddir_pigeonhole"
+ _configure \
+ --with-dovecot="$builddir" \
+ --with-ldap=plugin
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+
+ cd "$pkgdir"
+
+ install -d ./etc/ssl/dovecot
+ install -D -m 755 "$srcdir"/dovecot.initd ./etc/init.d/dovecot
+ install -D -m 644 "$srcdir"/dovecot.logrotate ./etc/logrotate.d/dovecot
+
+ # default config
+ rm ./etc/dovecot/*
+ rm ./usr/share/doc/dovecot/mkcert.sh
+ mv ./usr/share/doc/dovecot/dovecot-openssl.cnf ./etc/dovecot/
+ mv ./usr/share/doc/dovecot/example-config/dovecot* \
+ ./usr/share/doc/dovecot/example-config/conf.d \
+ ./etc/dovecot/
+ rm -fr ./usr/share/doc/dovecot/example-config
+
+ # Installing pigeonhole plugin.
+ cd "$_builddir_pigeonhole"
+ make install DESTDIR="$pkgdir"
+
+ # Moving config in the correct place
+ mv "$pkgdir"/usr/share/doc/dovecot/example-config/conf.d/* \
+ "$pkgdir"/etc/dovecot/conf.d
+
+ # Remove libtool archives. abuild doesn't remove them automatically even without options=libtool.
+ find "$pkgdir" -name '*.la' | xargs rm -f
+}
+
+dev() {
+ default_dev
+ mkdir -p "$subpkgdir"/usr/lib/dovecot
+ mv "$pkgdir"/usr/lib/dovecot/dovecot-config \
+ "$subpkgdir"/usr/lib/dovecot/
+}
+
+lmtpd() {
+ pkgdesc="$pkgdesc (LMTP server)"
+ _protocol lmtp
+}
+
+pop3d() {
+ pkgdesc="$pkgdesc (POP3 daemon)"
+ _protocol pop3
+}
+
+submissiond() {
+ pkgdesc="$pkgdesc (mail submission agent)"
+ _protocol submission
+}
+
+_protocol() {
+ depends="$pkgname=$pkgver-r$pkgrel"
+ _name="$1"
+ _protocolsd="$subpkgdir/usr/share/dovecot/protocols.d"
+
+ cd "$pkgdir"
+ _submv usr/libexec/dovecot/$_name*
+ _submv etc/dovecot/conf.d/*-$_name.conf
+
+ mkdir -p "$_protocolsd"
+ echo "protocols = \$protocols $_name" \
+ > "$_protocolsd"/${subpkgname#$pkgname-}.conf
+}
+
+_sieve() {
+ pkgdesc="Sieve and managesieve plugin for Dovecot"
+ depends="$pkgname=$pkgver-r$pkgrel"
+
+ cd "$pkgdir"
+ _submv $(find usr/ -name '*sieve_extprograms*')
+ _submv $(find usr/ -name '*sieve_imapsieve*')
+ _submv $(find usr/ -name '*sieve*')
+ _submv $(find usr/ -name '*pigeonhole*')
+ _submv $(find etc/dovecot/ -name '*sieve*')
+}
+
+_sieve_ldap() {
+ pkgdesc="Sieve and managesieve plugin for Dovecot (LDAP support)"
+ depends="$pkgname-pigeonhole-plugin=$pkgver-r$pkgrel $pkgname-ldap=$pkgver-r$pkgrel"
+
+ cd "$pkgdir"
+ _submv $(find usr/ -name '*_sieve_storage_ldap_*')
+}
+
+pgsql() {
+ pkgdesc="PostgreSQL driver for Dovecot"
+ depends="$pkgname-sql=$pkgver-r$pkgrel"
+
+ cd "$pkgdir"
+ _submv $(find usr/ -name '*_pgsql*')
+}
+
+mysql() {
+ pkgdesc="MySQL driver for Dovecot"
+ depends="$pkgname-sql=$pkgver-r$pkgrel"
+
+ cd "$pkgdir"
+ _submv $(find usr/ -name '*_mysql*')
+}
+
+sqlite() {
+ pkgdesc="SQLite driver for Dovecot"
+ depends="$pkgname-sql=$pkgver-r$pkgrel"
+
+ cd "$pkgdir"
+ _submv $(find usr/ -name '*_sqlite*')
+}
+
+gssapi() {
+ pkgdesc="GSSAPI auth plugin for Dovecot"
+ depends="$pkgname=$pkgver-r$pkgrel"
+
+ cd "$pkgdir"
+ _submv $(find usr/ -name '*_gssapi*')
+}
+
+ldap() {
+ pkgdesc="LDAP auth plugin for Dovecot"
+ depends="$pkgname=$pkgver-r$pkgrel"
+
+ cd "$pkgdir"
+ _submv $(find usr/ -name '*[_-]ldap*')
+ _submv $(find etc/dovecot/ -name '*-ldap.conf*')
+}
+
+sql() {
+ pkgdesc="SQL plugin for dovecot"
+ depends="$pkgname=$pkgver-r$pkgrel"
+
+ cd "$pkgdir"
+ _submv $(find usr/ -name '*-sql.*')
+ _submv $(find etc/dovecot/ -name '*-sql.conf*')
+}
+
+_fts_solr() {
+ pkgdesc="FTS-Solr plugin for dovecot"
+ depends="$pkgname=$pkgver-r$pkgrel"
+
+ cd "$pkgdir"
+ _submv $(find usr/ -name '*fts*solr*')
+}
+
+_submv() {
+ while [ $# -gt 0 ]; do
+ _dir=${1%/*}
+ mkdir -p "$subpkgdir"/$_dir
+ mv "$pkgdir/$1" "$subpkgdir/$_dir/"
+ [ "$(ls -A $pkgdir/$_dir)" ] || rmdir "$pkgdir"/$_dir
+ shift
+ done
+}
+
+sha512sums="9de6ce3a579ef2040248b692874a6d64a732bb735a9cee3144604927cad49690c4b0e29f7ecf3af23190d56f30956d955d13acd5d352534df62fbdfde4b60f9f dovecot-2.3.21.1.tar.gz
+7387b417611599fe70d1a83d3b408321e66f5a883bf78a9d55c7496b1a17220677daebaefde2061e0d7064fe07c410ecfc64662878bb253ddcd9e128dd83fbaa dovecot-2.3-pigeonhole-0.5.21.1.tar.gz
+a73e7323a582ea9504c33ea3591784af8187af8fffbcc47b69f549e33620c532d976853f0f7a9071af6ef2970d4899e2c5b30aac605dd5c933b3c6faa391bad4 fix-time64.patch
+fe4fbeaedb377d809f105d9dbaf7c1b961aa99f246b77189a73b491dc1ae0aa9c68678dde90420ec53ec877c08f735b42d23edb13117d7268420e001aa30967a skip-iconv-check.patch
+794875dbf0ded1e82c5c3823660cf6996a7920079149cd8eed54231a53580d931b966dfb17185ab65e565e108545ecf6591bae82f935ab1b6ff65bb8ee93d7d5 split-protocols.patch
+0d8f89c7ba6f884719b5f9fc89e8b2efbdc3e181de308abf9b1c1b0e42282f4df72c7bf62f574686967c10a8677356560c965713b9d146e2770aab17e95bcc07 default-config.patch
+5e68a0042a7c11b3d8c411fc157f5960e2e3305dac11f4b6b880441e2b4105769ddf6c56f67a995af6e1a58f3bfa2c199ea51318a3a0e37c7ef0ae6c4109b13f ssl-paths.patch
+277d0b55583908cd6c063fb190eb3d2a362a3a33306e35a069a0bca28968f11627c455887d82d01884313b7f7e18530c056bd7a4cda0a1f9c4be7065cd033aa9 test-file-cache-enomem.patch
+9f19698ab45969f1f94dc4bddf6de59317daee93c9421c81f2dbf8a7efe6acf89689f1d30f60f536737bb9526c315215d2bce694db27e7b8d7896036a59c31f0 dovecot.logrotate
+d91951b81150d7a3ef6a674c0dc7b012f538164dac4b9d27a6801d31da6813b764995a438f69b6a680463e1b60a3b4f2959654f68e565fe116ea60312d5e5e70 dovecot.initd
+b2ff67fd8b6c5cea93877651a1168ef1a5d399cc5f1a61d1cce407c7624f5b6d758996084c6a5714b6880de0ce11ce5eac74a1e02918758cb6983caedb651c58 CVE-2022-30550.patch"
diff --git a/user/dovecot/CVE-2022-30550.patch b/user/dovecot/CVE-2022-30550.patch
new file mode 100644
index 000000000..d7da1316f
--- /dev/null
+++ b/user/dovecot/CVE-2022-30550.patch
@@ -0,0 +1,155 @@
+From 7bad6a24160e34bce8f10e73dbbf9e5fbbcd1904 Mon Sep 17 00:00:00 2001
+From: Timo Sirainen <timo.sirainen@open-xchange.com>
+Date: Mon, 9 May 2022 15:23:33 +0300
+Subject: [PATCH 1/2] auth: Fix handling passdbs with identical driver/args but
+ different mechanisms/username_filter
+
+The passdb was wrongly deduplicated in this situation, causing wrong
+mechanisms or username_filter setting to be used. This would be a rather
+unlikely configuration though.
+
+Fixed by moving mechanisms and username_filter from struct passdb_module
+to struct auth_passdb, which is where they should have been in the first
+place.
+---
+ src/auth/auth-request.c | 6 +++---
+ src/auth/auth.c | 18 ++++++++++++++++++
+ src/auth/auth.h | 5 +++++
+ src/auth/passdb.c | 15 ++-------------
+ src/auth/passdb.h | 4 ----
+ 5 files changed, 28 insertions(+), 20 deletions(-)
+
+diff --git a/src/auth/auth-request.c b/src/auth/auth-request.c
+index cd08b1fa02..0ca29f3674 100644
+--- a/src/auth/auth-request.c
++++ b/src/auth/auth-request.c
+@@ -534,8 +534,8 @@ auth_request_want_skip_passdb(struct auth_request *request,
+ struct auth_passdb *passdb)
+ {
+ /* if mechanism is not supported, skip */
+- const char *const *mechs = passdb->passdb->mechanisms;
+- const char *const *username_filter = passdb->passdb->username_filter;
++ const char *const *mechs = passdb->mechanisms;
++ const char *const *username_filter = passdb->username_filter;
+ const char *username;
+
+ username = request->fields.user;
+@@ -548,7 +548,7 @@ auth_request_want_skip_passdb(struct auth_request *request,
+ return TRUE;
+ }
+
+- if (passdb->passdb->username_filter != NULL &&
++ if (passdb->username_filter != NULL &&
+ !auth_request_username_accepted(username_filter, username)) {
+ auth_request_log_debug(request,
+ request->mech != NULL ? AUTH_SUBSYS_MECH
+diff --git a/src/auth/auth.c b/src/auth/auth.c
+index f2f3fda20c..9f6c4ba60c 100644
+--- a/src/auth/auth.c
++++ b/src/auth/auth.c
+@@ -99,6 +99,24 @@ auth_passdb_preinit(struct auth *auth, const struct auth_passdb_settings *set,
+ auth_passdb->override_fields_tmpl =
+ passdb_template_build(auth->pool, set->override_fields);
+
++ if (*set->mechanisms == '\0') {
++ auth_passdb->mechanisms = NULL;
++ } else if (strcasecmp(set->mechanisms, "none") == 0) {
++ auth_passdb->mechanisms = (const char *const[]){ NULL };
++ } else {
++ auth_passdb->mechanisms =
++ (const char *const *)p_strsplit_spaces(auth->pool,
++ set->mechanisms, " ,");
++ }
++
++ if (*set->username_filter == '\0') {
++ auth_passdb->username_filter = NULL;
++ } else {
++ auth_passdb->username_filter =
++ (const char *const *)p_strsplit_spaces(auth->pool,
++ set->username_filter, " ,");
++ }
++
+ /* for backwards compatibility: */
+ if (set->pass)
+ auth_passdb->result_success = AUTH_DB_RULE_CONTINUE;
+diff --git a/src/auth/auth.h b/src/auth/auth.h
+index f700e29d5c..460a179765 100644
+--- a/src/auth/auth.h
++++ b/src/auth/auth.h
+@@ -41,6 +41,11 @@ struct auth_passdb {
+ struct passdb_template *default_fields_tmpl;
+ struct passdb_template *override_fields_tmpl;
+
++ /* Supported authentication mechanisms, NULL is all, {NULL} is none */
++ const char *const *mechanisms;
++ /* Username filter, NULL is no filter */
++ const char *const *username_filter;
++
+ enum auth_passdb_skip skip;
+ enum auth_db_rule result_success;
+ enum auth_db_rule result_failure;
+diff --git a/src/auth/passdb.c b/src/auth/passdb.c
+index eb4ac8ae82..f5eed1af4f 100644
+--- a/src/auth/passdb.c
++++ b/src/auth/passdb.c
+@@ -224,19 +224,8 @@ passdb_preinit(pool_t pool, const struct auth_passdb_settings *set)
+ passdb->id = ++auth_passdb_id;
+ passdb->iface = *iface;
+ passdb->args = p_strdup(pool, set->args);
+- if (*set->mechanisms == '\0') {
+- passdb->mechanisms = NULL;
+- } else if (strcasecmp(set->mechanisms, "none") == 0) {
+- passdb->mechanisms = (const char *const[]){NULL};
+- } else {
+- passdb->mechanisms = (const char* const*)p_strsplit_spaces(pool, set->mechanisms, " ,");
+- }
+-
+- if (*set->username_filter == '\0') {
+- passdb->username_filter = NULL;
+- } else {
+- passdb->username_filter = (const char* const*)p_strsplit_spaces(pool, set->username_filter, " ,");
+- }
++ /* NOTE: if anything else than driver & args are added here,
++ passdb_find() also needs to be updated. */
+ array_push_back(&passdb_modules, &passdb);
+ return passdb;
+ }
+diff --git a/src/auth/passdb.h b/src/auth/passdb.h
+index 2e95328e5c..e466a9fdb6 100644
+--- a/src/auth/passdb.h
++++ b/src/auth/passdb.h
+@@ -63,10 +63,6 @@ struct passdb_module {
+ /* Default password scheme for this module.
+ If default_cache_key is set, must not be NULL. */
+ const char *default_pass_scheme;
+- /* Supported authentication mechanisms, NULL is all, [NULL] is none*/
+- const char *const *mechanisms;
+- /* Username filter, NULL is no filter */
+- const char *const *username_filter;
+
+ /* If blocking is set to TRUE, use child processes to access
+ this passdb. */
+
+From a1022072e2ce36f853873d910287f466165b184b Mon Sep 17 00:00:00 2001
+From: Timo Sirainen <timo.sirainen@open-xchange.com>
+Date: Mon, 16 May 2022 14:58:45 +0200
+Subject: [PATCH 2/2] auth: Add a comment about updating userdb_find()
+
+---
+ src/auth/userdb.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/auth/userdb.c b/src/auth/userdb.c
+index 0849659102..830bc2dd64 100644
+--- a/src/auth/userdb.c
++++ b/src/auth/userdb.c
+@@ -158,7 +158,8 @@ userdb_preinit(pool_t pool, const struct auth_userdb_settings *set)
+ userdb->id = ++auth_userdb_id;
+ userdb->iface = iface;
+ userdb->args = p_strdup(pool, set->args);
+-
++ /* NOTE: if anything else than driver & args are added here,
++ userdb_find() also needs to be updated. */
+ array_push_back(&userdb_modules, &userdb);
+ return userdb;
+ }
diff --git a/user/dovecot/default-config.patch b/user/dovecot/default-config.patch
new file mode 100644
index 000000000..0f8a7385a
--- /dev/null
+++ b/user/dovecot/default-config.patch
@@ -0,0 +1,46 @@
+--- a/doc/example-config/conf.d/10-mail.conf
++++ b/doc/example-config/conf.d/10-mail.conf
+@@ -208,10 +208,10 @@
+
+ # UNIX socket path to master authentication server to find users.
+ # This is used by imap (for shared users) and lda.
+-#auth_socket_path = /var/run/dovecot/auth-userdb
++#auth_socket_path = /run/dovecot/auth-userdb
+
+ # Directory where to look up mail plugins.
+-#mail_plugin_dir = /usr/lib/dovecot
++#mail_plugin_dir = /usr/lib/dovecot/modules
+
+ # Space separated list of plugins to load for all services. Plugins specific to
+ # IMAP, LDA, etc. are added to this list in their own .conf files.
+@@ -322,6 +322,7 @@ protocol !indexer-worker {
+ # them simultaneously.
+ #mbox_read_locks = fcntl
+ #mbox_write_locks = dotlock fcntl
++mbox_write_locks = fcntl
+
+ # Maximum time to wait for lock (all of them) before aborting.
+ #mbox_lock_timeout = 5 mins
+--- a/doc/example-config/conf.d/10-ssl.conf
++++ b/doc/example-config/conf.d/10-ssl.conf
+@@ -3,7 +3,10 @@
+ ##
+
+ # SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
+-#ssl = yes
++# Disable plain (unencrypted) POP3 and IMAP, allowed are only POP3+TLS,
++# POP3S, IMAP+TLS and IMAPS.
++# Plain IMAP and POP3 are still allowed for local connections.
++ssl = required
+
+ # PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
+ # dropping root privileges, so keep the key file unreadable by anyone but
+@@ -67,7 +67,7 @@
+ #ssl_curve_list =
+
+ # Prefer the server's order of ciphers over client's.
+-#ssl_prefer_server_ciphers = no
++ssl_prefer_server_ciphers = yes
+
+ # SSL crypto device to use, for valid values run "openssl engine"
+ #ssl_crypto_device =
diff --git a/user/dovecot/dovecot.initd b/user/dovecot/dovecot.initd
new file mode 100644
index 000000000..721f131ad
--- /dev/null
+++ b/user/dovecot/dovecot.initd
@@ -0,0 +1,40 @@
+#!/sbin/openrc-run
+
+[ "$RC_SVCNAME" != "${RC_SVCNAME##*.}" ] && instance=${RC_SVCNAME##*.}
+
+description="Secure POP3/IMAP server"
+
+cfgfile=/etc/dovecot/dovecot${instance:+.$instance}.conf
+pidfile=$(doveconf -c $cfgfile -h base_dir 2>/dev/null)/master.pid
+command=/usr/sbin/dovecot
+command_args=${instance:+-c $cfgfile}
+required_files="$cfgfile"
+extra_started_commands="reload reopen"
+description_reload="Reload configuration"
+description_reopen="Reopen log files"
+
+depend() {
+ need localmount net
+ before mta
+ after bootmisc firewall ldap mysql ntp-client ntpd postgresql saslauthd slapd
+ use logger
+}
+
+start_pre() {
+ ebegin
+ doveconf -c $cfgfile -x >/dev/null 2>&1 && \
+ checkpath --directory ${pidfile%/*}
+ eend $?
+}
+
+reload() {
+ ebegin "Reloading $RC_SVCNAME configs and restarting auth/login processes"
+ start_pre && start-stop-daemon --signal HUP --pidfile $pidfile
+ eend $?
+}
+
+reopen() {
+ ebegin "Reopening $RC_SVCNAME log files"
+ start-stop-daemon --signal USR1 --pidfile $pidfile
+ eend $?
+}
diff --git a/user/dovecot/dovecot.logrotate b/user/dovecot/dovecot.logrotate
new file mode 100644
index 000000000..b1a4087b4
--- /dev/null
+++ b/user/dovecot/dovecot.logrotate
@@ -0,0 +1,12 @@
+/var/log/dovecot*.log {
+ daily
+ missingok
+ copytruncate
+ rotate 7
+ compress
+ notifempty
+ sharedscripts
+ postrotate
+ /etc/init.d/dovecot --quiet --ifstarted reopen
+ endscript
+}
diff --git a/user/dovecot/dovecot.post-install b/user/dovecot/dovecot.post-install
new file mode 100644
index 000000000..eb70cdece
--- /dev/null
+++ b/user/dovecot/dovecot.post-install
@@ -0,0 +1,45 @@
+#!/bin/sh
+
+# based on doc/mkcert.sh
+
+# if ssl disabled then lets just exit
+doveconf ssl 2>/dev/null | grep -Eq '(yes|required)' || exit 0
+# Generates a self-signed certificate.
+
+OPENSSL=${OPENSSL-openssl}
+SSLDIR=${SSLDIR-/etc/ssl/dovecot}
+OPENSSLCONFIG=${OPENSSLCONFIG-/etc/dovecot/dovecot-openssl.cnf}
+
+CERTDIR=$SSLDIR
+KEYDIR=$SSLDIR
+
+# check if we have ssl_cert and/or key (for dovecot-2.0+)
+# try expand the cert/key itself and if found, lets just keep it
+[ -n "$(doveconf -x ssl_cert 2>/dev/null)" ] && exit 0
+[ -n "$(doveconf -x ssl_key 2>/dev/null)" ] && exit 0
+
+ssl_cert_file=$(doveconf ssl_cert | sed 's/.*= <//')
+ssl_key_file=$(doveconf ssl_key | sed 's/.*= <//')
+
+CERTFILE=${ssl_cert_file:-$CERTDIR/server.pem}
+KEYFILE=${ssl_key_file:-$KEYDIR/server.key}
+
+if [ -e "$CERTFILE" ]; then
+ echo "Keeping existing $CERTFILE"
+ exit 0
+fi
+
+if [ -e "$KEYFILE" ]; then
+ echo "Keeping existing $KEYFILE"
+ exit 0
+fi
+
+if [ ! -c /dev/urandom ] && [ ! -c /dev/random ]; then
+ echo "No /dev/urandom or /dev/random so ssl cert not created"
+ exit 1
+fi
+
+$OPENSSL req -new -x509 -nodes -config $OPENSSLCONFIG -out $CERTFILE -keyout $KEYFILE -days 365 || exit 2
+chmod 0600 $KEYFILE
+echo
+$OPENSSL x509 -subject -fingerprint -noout -in $CERTFILE || exit 2
diff --git a/user/dovecot/dovecot.post-upgrade b/user/dovecot/dovecot.post-upgrade
new file mode 100644
index 000000000..69f4366ed
--- /dev/null
+++ b/user/dovecot/dovecot.post-upgrade
@@ -0,0 +1,7 @@
+#!/bin/sh
+if ! grep ^"version_ignore=yes" /etc/dovecot/dovecot.conf; then
+ printf "dovecot restart required (version_ignore=yes not set)\n"
+fi
+
+exit $?
+
diff --git a/user/dovecot/dovecot.pre-install b/user/dovecot/dovecot.pre-install
new file mode 100644
index 000000000..0f6df4c75
--- /dev/null
+++ b/user/dovecot/dovecot.pre-install
@@ -0,0 +1,8 @@
+#!/bin/sh
+
+groupadd -r dovecot 2>/dev/null
+groupadd -r dovenull 2>/dev/null
+useradd -r -u 90 -d / -s /sbin/nologin -g dovecot dovecot 2>/dev/null
+useradd -r -u 91 -d / -s /sbin/nologin -g dovenull dovenull 2>/dev/null
+
+exit 0
diff --git a/user/dovecot/fix-time64.patch b/user/dovecot/fix-time64.patch
new file mode 100644
index 000000000..30d0307d5
--- /dev/null
+++ b/user/dovecot/fix-time64.patch
@@ -0,0 +1,13 @@
+We need to case this on sizeof(time_t), not sizeof(void*).
+
+--- dovecot-2.3.20/src/lib-index/mail-cache-fields.c.old 2023-02-22 08:01:49.420556821 +0000
++++ dovecot-2.3.20/src/lib-index/mail-cache-fields.c 2023-02-23 09:45:11.417417626 +0000
+@@ -529,7 +529,7 @@
+ copy_to_buf_last_used(struct mail_cache *cache, buffer_t *dest, bool add_new)
+ {
+ size_t offset = offsetof(struct mail_cache_field, last_used);
+-#if defined(WORDS_BIGENDIAN) && SIZEOF_VOID_P == 8
++#if defined(WORDS_BIGENDIAN) && TIME_T_MAX_BITS > 32
+ /* 64bit time_t with big endian CPUs: copy the last 32 bits instead of
+ the first 32 bits (that are always 0). The 32 bits are enough until
+ year 2106, so we're not in a hurry to use 64 bits on disk. */
diff --git a/user/dovecot/skip-iconv-check.patch b/user/dovecot/skip-iconv-check.patch
new file mode 100644
index 000000000..bb1002c84
--- /dev/null
+++ b/user/dovecot/skip-iconv-check.patch
@@ -0,0 +1,11 @@
+--- a/src/lib-charset/test-charset.c
++++ b/src/lib-charset/test-charset.c
+@@ -159,7 +159,7 @@
+ static void (*const test_functions[])(void) = {
+ test_charset_is_utf8,
+ test_charset_utf8,
+-#ifdef HAVE_ICONV
++#if 0 //def HAVE_ICONV
+ test_charset_iconv,
+ test_charset_iconv_crashes,
+ test_charset_iconv_utf7_state,
diff --git a/user/dovecot/split-protocols.patch b/user/dovecot/split-protocols.patch
new file mode 100644
index 000000000..b4bed2ccb
--- /dev/null
+++ b/user/dovecot/split-protocols.patch
@@ -0,0 +1,30 @@
+For each protocol $prot, which is moved into subpackage $subname,
+is installed file /usr/share/dovecot/protocols.d/$subname.conf with:
+
+ protocols = $protocols $prot
+
+--- a/doc/example-config/dovecot.conf
++++ b/doc/example-config/dovecot.conf
+@@ -20,8 +20,9 @@
+ # options. The paths listed here are for configure --prefix=/usr
+ # --sysconfdir=/etc --localstatedir=/var
+
+-# Protocols we want to be serving.
+-#protocols = imap pop3 lmtp submission
++# Enable installed protocols.
++#protocols = imap
++!include_try /usr/share/dovecot/protocols.d/*.conf
+
+ # A comma separated list of IPs or hosts where to listen in for connections.
+ # "*" listens in all IPv4 interfaces, "::" listens in all IPv6 interfaces.
+--- a/src/master/master-settings.c.orig
++++ b/src/master/master-settings.c
+@@ -206,7 +206,7 @@
+ .state_dir = PKG_STATEDIR,
+ .libexec_dir = PKG_LIBEXECDIR,
+ .instance_name = PACKAGE,
+- .protocols = "imap pop3 lmtp",
++ .protocols = "imap",
+ .listen = "*, ::",
+ .ssl = "yes:no:required",
+ .default_internal_user = "dovecot",
diff --git a/user/dovecot/ssl-paths.patch b/user/dovecot/ssl-paths.patch
new file mode 100644
index 000000000..b354b607e
--- /dev/null
+++ b/user/dovecot/ssl-paths.patch
@@ -0,0 +1,13 @@
+--- dovecot-2.3.10/doc/example-config/conf.d/10-ssl.conf 2020-03-05 14:35:53.000000000 +0000
++++ dovecot-2.3.10.new/doc/example-config/conf.d/10-ssl.conf 2020-04-26 06:49:45.860000000 +0000
+@@ -9,8 +9,8 @@
+ # dropping root privileges, so keep the key file unreadable by anyone but
+ # root. Included doc/mkcert.sh can be used to easily generate self-signed
+ # certificate, just make sure to update the domains in dovecot-openssl.cnf
+-ssl_cert = </etc/ssl/certs/dovecot.pem
+-ssl_key = </etc/ssl/private/dovecot.pem
++ssl_cert = </etc/ssl/dovecot/server.pem
++ssl_key = </etc/ssl/dovecot/server.key
+
+ # If key file is password protected, give the password here. Alternatively
+ # give it when starting dovecot with -p parameter. Since this file is often
diff --git a/user/dovecot/test-file-cache-enomem.patch b/user/dovecot/test-file-cache-enomem.patch
new file mode 100644
index 000000000..536b857de
--- /dev/null
+++ b/user/dovecot/test-file-cache-enomem.patch
@@ -0,0 +1,20 @@
+--- a/src/lib/test-file-cache.c 2021-01-05 14:10:50.160000000 +0000
++++ b/src/lib/test-file-cache.c 2021-01-05 14:10:50.160000000 +0000
+@@ -263,7 +263,7 @@
+ };
+ const char *errstr =
+ t_strdup_printf("mmap_anon(.test_file_cache, %zu) failed: "
+- "Cannot allocate memory", page_size);
++ "Out of memory", page_size);
+ test_assert(setrlimit(RLIMIT_AS, &rl_new) == 0);
+ test_expect_error_string(errstr);
+ test_assert(file_cache_set_size(cache, 1024) == -1);
+@@ -271,7 +271,7 @@
+
+ /* same for mremap */
+ errstr = t_strdup_printf("mremap_anon(.test_file_cache, %zu) failed: "
+- "Cannot allocate memory", page_size*2);
++ "Out of memory", page_size*2);
+ test_assert(file_cache_set_size(cache, 1) == 0);
+ test_assert(setrlimit(RLIMIT_AS, &rl_new) == 0);
+ test_expect_error_string(errstr);
diff --git a/user/doxygen/APKBUILD b/user/doxygen/APKBUILD
index b1f5414e2..69a89354f 100644
--- a/user/doxygen/APKBUILD
+++ b/user/doxygen/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=doxygen
-pkgver=1.8.15
+pkgver=1.8.20
_pkgver=${pkgver%.*.*}_${pkgver#*.}
_pkgver=${_pkgver%.*}_${pkgver#*.*.}
pkgrel=0
@@ -12,33 +12,30 @@ depends=""
makedepends="bison cmake coreutils flex perl python3"
checkdepends="libxml2-utils"
source="https://github.com/doxygen/doxygen/archive/Release_$_pkgver.tar.gz
- doxygen-1.8.14-install.patch
+ time64.patch
"
builddir="$srcdir/doxygen-Release_$_pkgver"
build() {
- cd "$builddir"
cmake .\
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-Dbuild_xmlparser=ON \
- -DMAN_INSTALL_DIR=/usr/share/man/man1 \
- -DDOC_INSTALL_DIR=/usr/share/doc/doxygen
+ -DMAN_INSTALL_DIR=share/man/man1 \
+ -DDOC_INSTALL_DIR=share/doc/doxygen
make
}
check() {
- cd "$builddir"
# Remove test that use bibtex
rm -f ./testing/012_cite.dox
- make test
+ CTEST_OUTPUT_ON_FAILURE=true make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="bc3ea295b894a73324bf41408d05332bc480638840b62fac6f12493be15de29eedd4e7f2d7ad61e0db36623887ca364eda5eb5e46d9b91a4241240cb380b07d5 Release_1_8_15.tar.gz
-725a29a6f21ffc8ec6ca8ed6d746a69cc78060e97704c7fe909abee603ba0a99f27dc3b80c414afd886d0ee81d9948b13f29c43f7db2e00aae8c0c3a32aa9ec1 doxygen-1.8.14-install.patch"
+sha512sums="25509cec8904b10431cf3d29f6e6bbdad49fbf3a763606b30c92c111f294ac0311aa13d53007d71ff1f55fcae6903e2ce8f80d1a6b4832fa43f6a9166184e005 Release_1_8_20.tar.gz
+92d82c0799d7cdbb6fb37069514d7c6dbadb0c3d88409803e88180bcfcf4be9a2f346c035cd49de8f7496eed2ffd1519d96a1ec3c22db21c2dfdc4e437dada50 time64.patch"
diff --git a/user/doxygen/doxygen-1.8.14-install.patch b/user/doxygen/doxygen-1.8.14-install.patch
deleted file mode 100644
index 71448b8b4..000000000
--- a/user/doxygen/doxygen-1.8.14-install.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- doxygen-1.8.14/doc/CMakeLists.txt.config 2017-12-31 15:28:32.351163123 +0100
-+++ doxygen-1.8.14/doc/CMakeLists.txt 2017-12-31 15:29:11.490119182 +0100
-@@ -168,15 +168,15 @@ install(FILES
- "${PROJECT_BINARY_DIR}/man/doxywizard.1"
- "${PROJECT_BINARY_DIR}/man/doxysearch.1"
- "${PROJECT_BINARY_DIR}/man/doxyindexer.1"
-- DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
-+ DESTINATION "${MAN_INSTALL_DIR}"
- )
-
- install(FILES
- "${PROJECT_BINARY_DIR}/latex/doxygen_manual.pdf"
-- DESTINATION "${CMAKE_INSTALL_PREFIX}/${DOC_INSTALL_DIR}"
-+ DESTINATION "${DOC_INSTALL_DIR}"
- )
-
- install(DIRECTORY
- "${PROJECT_BINARY_DIR}/html"
-- DESTINATION "${CMAKE_INSTALL_PREFIX}/${DOC_INSTALL_DIR}"
-+ DESTINATION "${DOC_INSTALL_DIR}"
- )
diff --git a/user/doxygen/time64.patch b/user/doxygen/time64.patch
new file mode 100644
index 000000000..ee06d6e03
--- /dev/null
+++ b/user/doxygen/time64.patch
@@ -0,0 +1,19 @@
+--- doxygen-Release_1_8_16/qtools/qdatetime.cpp.old 2019-08-08 13:36:52.000000000 +0000
++++ doxygen-Release_1_8_16/qtools/qdatetime.cpp 2020-01-19 19:14:24.204239898 +0000
+@@ -35,7 +35,6 @@
+ **
+ **********************************************************************/
+
+-#define gettimeofday __hide_gettimeofday
+ #include "qdatetime.h"
+ #include "qdatastream.h"
+ #include <stdio.h>
+@@ -55,8 +54,6 @@
+ #elif defined(_OS_UNIX_) || defined(_OS_MAC_)
+ #include <sys/time.h>
+ #include <unistd.h>
+-#undef gettimeofday
+-extern "C" int gettimeofday( struct timeval *, struct timezone * );
+ #endif
+
+ static const uint FIRST_DAY = 2361222; // Julian day for 1752/09/14
diff --git a/user/dracut/APKBUILD b/user/dracut/APKBUILD
index 8782ed974..025a3b0ca 100644
--- a/user/dracut/APKBUILD
+++ b/user/dracut/APKBUILD
@@ -1,24 +1,31 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=dracut
-pkgver=048
-pkgrel=1
+pkgver=050
+pkgrel=3
pkgdesc="Event-driven initramfs infrastructure"
url="https://dracut.wiki.kernel.org/"
arch="all"
options="!check" # Test suite is for kernel developers only, requires ext3 rootfs
license="GPL-2.0+"
-depends="libarchive-tools musl-utils xz"
+depends="bash gzip libarchive-tools musl-utils xz"
makedepends="fts-dev kmod-dev"
subpackages="$pkgname-doc $pkgname-bash-completion:bashcomp:noarch
$pkgname-crypt::noarch $pkgname-lvm::noarch"
source="https://www.kernel.org/pub/linux/utils/boot/$pkgname/$pkgname-$pkgver.tar.xz
+ fts.patch
header-fix.patch
mount-run-without-noexec.patch
+ dracut.easy-boot
"
+prepare() {
+ default_prepare
+ # Breaks separate /usr with OpenRC
+ rm -r "$builddir"/modules.d/98usrmount
+}
+
build() {
- cd "$builddir"
./configure \
--prefix=/usr \
--sysconfdir=/etc \
@@ -29,17 +36,18 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
for sysdmod in 00systemd 98dracut-systemd \
01systemd-initrd 02systemd-networkd; do
rm -r "$pkgdir"/usr/lib/dracut/modules.d/$sysdmod
done
+
+ install -Dm755 "$srcdir"/dracut.easy-boot \
+ "$pkgdir"/etc/easy-boot.d/20-dracut
}
bashcomp() {
@@ -53,17 +61,19 @@ bashcomp() {
}
crypt() {
- depends="cryptsetup device-mapper dracut"
+ depends="cryptsetup dracut lvm2"
pkgdesc="$pkgname - LUKS / disk encryption support (crypt) module"
mkdir -p "$subpkgdir"
}
lvm() {
- depends="device-mapper dracut lvm2"
+ depends="dracut lvm2"
pkgdesc="$pkgname - LVM2 module"
mkdir -p "$subpkgdir"
}
-sha512sums="97fcfd5d314ef40687c245d95d2f1d0f3f9ff0472e66b6e6324bf9bd6b98186104f9d71fd9af344126d6ea9fa47b744d52831a374225633225f6f17fb15c04e0 dracut-048.tar.xz
+sha512sums="eba046cf1c8013369a398e585e0bff233daa8595d469ce9acc8bbc6a32d55c6a5429d4219db19abbf6001104be05b357f0961f9e66b7f926039a5d3ee7c2b850 dracut-050.tar.xz
+ce84e527e441e18494ea9011b4b10cf723ce5981c4717140f43861b6ed3e0f0aa78545be41c111d3338422f2ad158edc8704376c3dca207ae4445c58f54a4574 fts.patch
988f03a3fd2e7ee62409d3c57e8029403513dcec5efb37e64633d989728e4c7b619ce5b8775a04c5a0b654f7f093777d94fe6e4098a99a690c353a94f537e24c header-fix.patch
-d7aa2b35def975ec2a9620d3e8c94da5fad5be51e81ac913b9f3497b3ca62beefb9d4cf8e4ba3b292f89b936373486d0e3184f65eb1eaed972f38d17424a32b1 mount-run-without-noexec.patch"
+d7aa2b35def975ec2a9620d3e8c94da5fad5be51e81ac913b9f3497b3ca62beefb9d4cf8e4ba3b292f89b936373486d0e3184f65eb1eaed972f38d17424a32b1 mount-run-without-noexec.patch
+ea576d30e51b2f1c676e29fb81b064b3b8c696a3692dbcf6a31f8a589ab2a426f421bc1002295eb79843cba22d6ddeb04fadb3f99d9e5c00d2d5f53fd3a6c484 dracut.easy-boot"
diff --git a/user/dracut/dracut.easy-boot b/user/dracut/dracut.easy-boot
new file mode 100644
index 000000000..53c95c54e
--- /dev/null
+++ b/user/dracut/dracut.easy-boot
@@ -0,0 +1,14 @@
+#!/bin/sh -e
+
+for i in /boot/vmlinu[xz]*; do
+ version="${i##*/vmlinu[xz]}"
+ # Support filenames with no version. LILO supports this, but GRUB
+ # doesn't (currently).
+ version="${version#-}"
+ if ! [ -d /lib/modules/"$version" ]; then
+ printf '>>> %s: no modules installed, skipping\n' "$version" >&2
+ continue
+ fi
+ printf '>>> %s\n' "$version" >&2
+ dracut --force --quiet /boot/initramfs-"$version".img "$version"
+done
diff --git a/user/dracut/fts.patch b/user/dracut/fts.patch
new file mode 100644
index 000000000..f2bbb03b7
--- /dev/null
+++ b/user/dracut/fts.patch
@@ -0,0 +1,30 @@
+From 7f6517b7dc3f3d160ae43de43d1184b137c0c96f Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Sun, 5 Apr 2020 04:52:19 -0500
+Subject: [PATCH] configure: Find FTS library with --as-needed
+
+When LDFLAGS contains ``-Wl,--as-needed``, the FTS library will be
+ignored if it is specified before the .c source.
+
+Signed-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com>
+Fixes: 62f27ee6f145 ("configure: find cflags and libs for fts on musl")
+---
+ configure | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/configure b/configure
+index 3f724ef2..aceec138 100755
+--- a/configure
++++ b/configure
+@@ -85,7 +85,7 @@ EOF
+
+ found=no
+ for lib in "-lc" "-lfts"; do
+- ${CC} $CFLAGS -Wl,$lib $LDFLAGS conftest.c >/dev/null 2>&1
++ ${CC} $CFLAGS $LDFLAGS conftest.c -Wl,$lib >/dev/null 2>&1
+ ret=$?
+ if test $ret -eq 0; then
+ FTS_LIBS="$lib"
+--
+2.25.1
+
diff --git a/user/dragonplayer/APKBUILD b/user/dragonplayer/APKBUILD
index 59c394962..9d9bd2122 100644
--- a/user/dragonplayer/APKBUILD
+++ b/user/dragonplayer/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=dragonplayer
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Multimedia player with a focus on simplicity"
url="https://www.kde.org/applications/multimedia/dragonplayer/"
@@ -13,11 +13,10 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kconfig-dev kcrash-dev
ki18n-dev kjobwidgets-dev kio-dev kparts-dev solid-dev phonon-dev
kwidgetsaddons-dev kwindowsystem-dev kxmlgui-dev knotifications-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/dragon-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/dragon-$pkgver.tar.xz"
builddir="$srcdir"/dragon-$pkgver
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="1173ca6bc1fa65161e35add94f08681de211000b571456edb41015d72f9e4a0ae2e5b1d323dcd3e599f35f54e24ce7714771e89d53c8c9a135a1641cf91e862a dragon-18.12.3.tar.xz"
+sha512sums="19587d225f383d0823d18f72d584377c1ff3c5562ff524567e4e89e13f29895b019f9f337f0163db074c60a4d8105d10ce5f75a0914b7e0701f94011644fe63c dragon-22.04.2.tar.xz"
diff --git a/user/drkonqi/APKBUILD b/user/drkonqi/APKBUILD
new file mode 100644
index 000000000..0c556fdd3
--- /dev/null
+++ b/user/drkonqi/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=drkonqi
+pkgver=5.24.5
+pkgrel=0
+pkgdesc="Crash diagnostic system for KDE"
+url="https://www.kde.org/"
+arch="all"
+options="!check" # Requires X11
+license="GPL-2.0+ AND (LGPL-2.1-only OR LGPL-3.0-only) AND BSD-2-Clause"
+depends=""
+makedepends="cmake extra-cmake-modules kauth-dev kcodecs-dev kcompletion-dev
+ kconfigwidgets-dev kcoreaddons-dev kcrash-dev ki18n-dev kidletime-dev
+ kio-dev kitemviews-dev kjobwidgets-dev knotifications-dev kservice-dev
+ kwallet-dev kwidgetsaddons-dev kwindowsystem-dev kxmlgui-dev
+ qt5-qtbase-dev qt5-qtx11extras-dev solid-dev syntax-highlighting-dev"
+subpackages="$pkgname-lang"
+source="https://download.kde.org/stable/plasma/$pkgver/drkonqi-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="e1b5986f687da629d5e5f3e9034f551db4fec26870ff6801922da64cb7cff6d3089ae171ede47a6a733bb383cbb6dd54a691db962829027ad1449e71f2c45405 drkonqi-5.24.5.tar.xz"
diff --git a/user/drm_info/APKBUILD b/user/drm_info/APKBUILD
new file mode 100644
index 000000000..2f367c1a4
--- /dev/null
+++ b/user/drm_info/APKBUILD
@@ -0,0 +1,26 @@
+# Contributor: Michał Polański <michal@polanski.me>
+# Maintainer: Ermine <mustela@erminea.space>
+pkgname=drm_info
+pkgver=2.7.0
+pkgrel=0
+pkgdesc="Small utility to dump info about DRM devices"
+url="https://gitlab.freedesktop.org/emersion/drm_info"
+license="MIT"
+arch="all"
+options="!check" # no test suite
+makedepends="meson libdrm-dev pciutils-dev json-c-dev scdoc"
+subpackages="$pkgname-doc"
+source="https://gitlab.freedesktop.org/emersion/drm_info/-/archive/v$pkgver/$pkgname-v$pkgver.tar.gz"
+builddir="$srcdir/$pkgname-v$pkgver"
+
+build() {
+ meson setup \
+ -Dprefix=/usr \
+ output
+ meson compile -C output
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C output
+}
+sha512sums="1eeaa103699655dd6b5d0e81e43c5422b843bb8cea991585047c3cc3e118b65c7dac4cef84155346df2c887ca57702a82e6fac202fe0146fe5280e3c83519ab8 drm_info-v2.7.0.tar.gz"
diff --git a/user/dtach/APKBUILD b/user/dtach/APKBUILD
index d94502928..79751667a 100644
--- a/user/dtach/APKBUILD
+++ b/user/dtach/APKBUILD
@@ -14,7 +14,6 @@ subpackages="$pkgname-doc"
source="dtach-$pkgver.tar.gz::https://github.com/crigler/dtach/archive/v$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
diff --git a/user/duktape/APKBUILD b/user/duktape/APKBUILD
new file mode 100644
index 000000000..8d90dee87
--- /dev/null
+++ b/user/duktape/APKBUILD
@@ -0,0 +1,29 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=duktape
+pkgver=2.7.0
+pkgrel=0
+pkgdesc="Embeddable JavaScript/ECMAScript engine"
+url="https://duktape.org/"
+arch="all"
+options="!check" # No test suite.
+license="MIT"
+depends=""
+makedepends=""
+subpackages="$pkgname-dev"
+source="https://duktape.org/duktape-$pkgver.tar.xz"
+
+prepare() {
+ default_prepare
+ ln -s "$builddir"/Makefile.sharedlibrary "$builddir"/Makefile
+}
+
+build() {
+ make INSTALL_PREFIX=/usr LIBDIR=/lib
+}
+
+package() {
+ make INSTALL_PREFIX=/usr DESTDIR="$pkgdir" LIBDIR=/lib install
+}
+
+sha512sums="8ff5465c9c335ea08ebb0d4a06569c991b9dc4661b63e10da6b123b882e7375e82291d6b883c2644902d68071a29ccc880dae8229447cebe710c910b54496c1d duktape-2.7.0.tar.xz"
diff --git a/user/dumb-init/APKBUILD b/user/dumb-init/APKBUILD
new file mode 100644
index 000000000..541b964d4
--- /dev/null
+++ b/user/dumb-init/APKBUILD
@@ -0,0 +1,24 @@
+# Contributor: Alyx Wolcott <alyx@leuhta.com>
+# Maintainer: Alyx Wolcott <alyx@leuhta.com>
+pkgname=dumb-init
+pkgver=1.2.2
+pkgrel=0
+pkgdesc="A minimal init system for Linux containers"
+url="https://github.com/Yelp/dumb-init"
+arch="all"
+options="!check" # Check requires Python 3.7 and will not function correctly within chroots.
+license="MIT"
+depends=""
+makedepends=""
+source="$pkgname-$pkgver.tar.gz::https://github.com/Yelp/$pkgname/archive/v$pkgver.tar.gz"
+
+build() {
+ make
+}
+
+package() {
+ mkdir -p $pkgdir/usr/bin
+ install -m755 ./dumb-init $pkgdir/usr/bin/
+}
+
+sha512sums="efb0b99d3a98a2ff0bd1ac9d105f034589869b44237575489fb0d2ebb99b13df4451cf355bf285b91ac1e87af9d5ac87aed3e9d225f0c0f47299ca716ed70b27 dumb-init-1.2.2.tar.gz"
diff --git a/user/dwl/APKBUILD b/user/dwl/APKBUILD
new file mode 100644
index 000000000..000ac4151
--- /dev/null
+++ b/user/dwl/APKBUILD
@@ -0,0 +1,25 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=dwl
+pkgver=0.7
+pkgrel=0
+pkgdesc="Minimal, DWM-like compositor for Wayland"
+url="https://codeberg.org/dwl/dwl"
+arch="all"
+options="!check" # no testsuite
+license="GPL-3.0+ AND MIT AND CC0-1.0"
+depends="wlroots-0.18"
+makedepends="libinput-dev libxkbcommon-dev wayland-dev wayland-protocols wlroots-0.18-dev"
+subpackages="$pkgname-doc"
+source="https://codeberg.org/dwl/dwl/releases/download/v$pkgver/dwl-v$pkgver.tar.gz"
+builddir="$srcdir/dwl-v$pkgver"
+
+build() {
+ make PREFIX="/usr"
+}
+
+package() {
+ make PREFIX="/usr" DESTDIR="$pkgdir" install
+}
+
+sha512sums="d2ec9467bb7758ea52e0face555cb505624062eb66c8959b59e715b7d1c7bb74c649029f365c9bfd07d7b5806fdef018f555d7e64bd62e7e413ead45b5d73986 dwl-v0.7.tar.gz"
diff --git a/user/ebgaramond/APKBUILD b/user/ebgaramond/APKBUILD
index f1f071a67..4db1ce2c0 100644
--- a/user/ebgaramond/APKBUILD
+++ b/user/ebgaramond/APKBUILD
@@ -15,8 +15,7 @@ source="https://bitbucket.org/georgd/eb-garamond/downloads/EBGaramond-$pkgver.zi
builddir="$srcdir/EBGaramond-0.016"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF/ otf/*.otf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF/ "$builddir"/otf/*.otf
}
sha512sums="f7d67d6fb47ff7aa614b08d97f953cd50122935b40ff191c7b226ad0714b738a5b359b04342ebea10109e7ab8b4260256ce0f8592fd70dc3e7fe29c77188a955 EBGaramond-0.016.zip"
diff --git a/user/ebook-tools/APKBUILD b/user/ebook-tools/APKBUILD
index 6c33ad3d5..6eeeb3cdb 100644
--- a/user/ebook-tools/APKBUILD
+++ b/user/ebook-tools/APKBUILD
@@ -8,12 +8,11 @@ url="https://sourceforge.net/projects/ebook-tools/"
arch="all"
license="MIT"
depends="convertlit cmd:which"
-makedepends="libxml2-dev libzip-dev"
+makedepends="cmake libxml2-dev libzip-dev"
subpackages="$pkgname-dev"
source="https://downloads.sourceforge.net/ebook-tools/ebook-tools-$pkgver.tar.gz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -22,17 +21,15 @@ build() {
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/edid-decode/APKBUILD b/user/edid-decode/APKBUILD
new file mode 100644
index 000000000..b4a4610b2
--- /dev/null
+++ b/user/edid-decode/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=edid-decode
+pkgver=0_git20240827
+pkgrel=0
+pkgdesc="Utility for extracting EDID information"
+url="https://git.linuxtv.org/edid-decode.git/"
+arch="all"
+options="!check" # no tests
+license="MIT"
+depends=""
+makedepends="meson"
+subpackages="$pkgname-doc"
+source="https://distfiles.adelielinux.org/source/$pkgname-$pkgver.tar.gz"
+giturl="git://linuxtv.org/edid-decode.git"
+reporev="10bc5ee3901ef337f6d255a8d5bee211277543c0"
+disturl="https://distfiles.adelielinux.org/source/$pkgname-$pkgver.tar.gz"
+
+build() {
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ build
+ meson compile -C build
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C build
+}
+
+sha512sums="1e3d0c149662ed05166838a0e11185505a03b0804a28a0846505e6e8f94adadf073962a6d442ddb408561d57a7da4c6769e4f9a40ea47cb014e919e9cc1603c4 edid-decode-0_git20240827.tar.gz"
diff --git a/user/editres/APKBUILD b/user/editres/APKBUILD
index f0f7bd1d8..e22e79115 100644
--- a/user/editres/APKBUILD
+++ b/user/editres/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=editres
-pkgver=1.0.7
+pkgver=1.0.9
pkgrel=0
pkgdesc="Examine Xt widgets and edit X11 resources dynamically"
url="http://www.rahul.net/kenton/editres.html"
@@ -9,12 +9,11 @@ arch="all"
license="X11"
depends=""
makedepends="util-macros libx11-dev libxaw-dev libxmu-dev libxt-dev
- xorgproto-dev"
+ xorgproto-dev libxkbfile-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/editres-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b9c928b556116bf50cf4b6ea779bdc9fedf29f5db3e6a8cc75c122578c92e1cc530a81b226ec24aad183b8ebc2de570f200314b0d9ce7883b6e3306007365b32 editres-1.0.7.tar.bz2"
+sha512sums="b1abf32cad8f881b8b98c8b4a3280b09f581fc3a86188e86d5d435801676ec75377d8a636b9479a335c5c2321d358841f1194861913b2c17803758b626517230 editres-1.0.9.tar.xz"
diff --git a/user/efibootmgr/APKBUILD b/user/efibootmgr/APKBUILD
index 0cde72c5a..d3e310fb8 100644
--- a/user/efibootmgr/APKBUILD
+++ b/user/efibootmgr/APKBUILD
@@ -1,26 +1,27 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=efibootmgr
-pkgver=16
+pkgver=18
pkgrel=0
pkgdesc="User-space application to modify the Intel EFI Boot Manager"
url="https://github.com/rhboot/efibootmgr"
-arch="pmmx x86_64 arm64 ia64"
+arch="pmmx x86_64 aarch64 armv7"
options="!check" # Dangerous.
license="GPL-2.0-only"
depends=""
-makedepends="efivar-dev"
+makedepends="efivar-dev popt-dev pkgconf"
subpackages="$pkgname-doc"
-source="https://github.com/rhboot/$pkgname/releases/download/$pkgver/$pkgname-$pkgver.tar.bz2"
+source="https://github.com/rhboot/$pkgname/releases/download/$pkgver/$pkgname-$pkgver.tar.bz2
+ fix-efiboot-includes.patch
+ "
build() {
- cd "$builddir"
- make EFIDIR="Adelie" libdir="/usr/lib" LIBS="intl"
+ make EFIDIR="Adelie"
}
package() {
- cd "$builddir"
- make EFIDIR="Adelie" libdir="/usr/lib" LIBS="intl" DESTDIR="$pkgdir" install
+ make EFIDIR="Adelie" DESTDIR="$pkgdir" install
}
-sha512sums="936318c7163c07b716f89be3d830957d9db68ba1b059223f7ea3d9eafe0dbf1c91b9aee096f5aed70955c6052c3b8547295c0a47f17cdf43788259d87d1990b9 efibootmgr-16.tar.bz2"
+sha512sums="59112a3da3bad782ae893e1390f5a371474392f9779a2769a9d56335760b611b5330fe57b46e8d858d237786230162a0947261769c02c960549be6c1f6a5f4a6 efibootmgr-18.tar.bz2
+055cdebafce1993a600148d74f61785a7c217d73c9868d542ff7eecca3a0236010495473ecdcd568fbfb7301e7c55ba766d4803089af32d88772451481f83a2b fix-efiboot-includes.patch"
diff --git a/user/efibootmgr/fix-efiboot-includes.patch b/user/efibootmgr/fix-efiboot-includes.patch
new file mode 100644
index 000000000..cfcab07f2
--- /dev/null
+++ b/user/efibootmgr/fix-efiboot-includes.patch
@@ -0,0 +1,66 @@
+diff -ur a/src/efi.c b/src/efi.c
+--- a/src/efi.c 2022-04-28 19:57:19.197635727 +0000
++++ b/src/efi.c 2022-04-28 19:57:53.558571268 +0000
+@@ -25,8 +25,8 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+-#include <efiboot.h>
+-#include <efivar.h>
++#include <efivar/efiboot.h>
++#include <efivar/efivar.h>
+ #include <errno.h>
+ #include <stdint.h>
+ #include <sys/stat.h>
+diff -ur a/src/efibootdump.c b/src/efibootdump.c
+--- a/src/efibootdump.c 2022-04-28 19:57:19.197635727 +0000
++++ b/src/efibootdump.c 2022-04-28 19:57:45.128341742 +0000
+@@ -11,8 +11,8 @@
+ #include "fix_coverity.h"
+
+ #include <ctype.h>
+-#include <efiboot.h>
+-#include <efivar.h>
++#include <efivar/efiboot.h>
++#include <efivar/efivar.h>
+ #include <err.h>
+ #include <inttypes.h>
+ #include <libintl.h>
+diff -ur a/src/efibootmgr.c b/src/efibootmgr.c
+--- a/src/efibootmgr.c 2022-04-28 19:57:19.197635727 +0000
++++ b/src/efibootmgr.c 2022-04-28 19:57:35.418077359 +0000
+@@ -47,8 +47,8 @@
+ #include <dirent.h>
+ #include <unistd.h>
+ #include <getopt.h>
+-#include <efivar.h>
+-#include <efiboot.h>
++#include <efivar/efivar.h>
++#include <efivar/efiboot.h>
+ #include <inttypes.h>
+
+ #include "list.h"
+diff -ur a/src/eficonman.c b/src/eficonman.c
+--- a/src/eficonman.c 2022-04-28 19:57:19.197635727 +0000
++++ b/src/eficonman.c 2022-04-28 19:58:41.789884456 +0000
+@@ -10,7 +10,7 @@
+
+ #include "fix_coverity.h"
+
+-#include <efivar.h>
++#include <efivar/efivar.h>
+ #include <err.h>
+ #include <inttypes.h>
+ #include <libintl.h>
+diff -ur a/src/include/efi.h b/src/include/efi.h
+--- a/src/include/efi.h 2022-04-28 19:57:19.197635727 +0000
++++ b/src/include/efi.h 2022-04-28 19:58:57.110301583 +0000
+@@ -29,7 +29,7 @@
+ #include <stdint.h>
+ #include <dirent.h>
+
+-#include <efivar.h>
++#include <efivar/efivar.h>
+
+ /*******************************************************
+ * Boot Option Attributes
diff --git a/user/efivar/0001-makeguids-Ensure-compatibility-with-other-libcs.patch b/user/efivar/0001-makeguids-Ensure-compatibility-with-other-libcs.patch
index 1577d306b..4ab037e53 100644
--- a/user/efivar/0001-makeguids-Ensure-compatibility-with-other-libcs.patch
+++ b/user/efivar/0001-makeguids-Ensure-compatibility-with-other-libcs.patch
@@ -15,10 +15,10 @@ diff --git a/src/makeguids.c b/src/makeguids.c
index ec75a86..6b0d80e 100644
--- a/src/makeguids.c
+++ b/src/makeguids.c
-@@ -152,6 +152,15 @@ main(int argc, char *argv[])
+@@ -178,6 +178,15 @@ main(int argc, char *argv[])
fprintf(symout, "#include <efivar/efivar.h>\n");
fprintf(symout, "#include <endian.h>\n");
- fprintf(symout, """\n\
+ fprintf(symout, "\n\
+#ifndef __bswap_constant_16\n\
+#define __bswap_constant_16(x)\\\n\
+ ((unsigned short int) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))\n\
diff --git a/user/efivar/APKBUILD b/user/efivar/APKBUILD
index c9283bbdb..616c96a93 100644
--- a/user/efivar/APKBUILD
+++ b/user/efivar/APKBUILD
@@ -1,30 +1,30 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=efivar
-pkgver=36
+pkgver=38
pkgrel=0
pkgdesc="Tools and library to manipulate EFI variables"
url="https://github.com/rhboot/efivar"
-arch="pmmx x86_64 arm64 ia64"
+arch="pmmx x86_64 aarch64 armv7"
options="!check" # "WARNING: You should probably not run tests /ever/. This is not a joke."
license="LGPL-2.1+"
depends=""
depends_dev="popt-dev"
-makedepends="$depends_dev"
+makedepends="$depends_dev mandoc"
subpackages="$pkgname-dev $pkgname-doc"
source="https://github.com/rhboot/$pkgname/releases/download/$pkgver/$pkgname-$pkgver.tar.bz2
0001-makeguids-Ensure-compatibility-with-other-libcs.patch
+ fix-musl-build.patch
"
build() {
- cd "$builddir"
make prefix="/usr" libdir="/usr/lib"
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" prefix="/usr" libdir="/usr/lib" install
}
-sha512sums="951feabe2d238826fdd6e74e8f7a24f04d705f9ef925cfcfb852944d2d7a4f04e3a6c23f276c40e5564da42614558941dbe7aaf21efa6a722a616e4d165aba2d efivar-36.tar.bz2
-8a47abad5d6d2ceffb5effdd177d3e678256961294ff66df1158084e3f45f0bcb07105a1c3df35b3a5c503742c4e59148df740c40fa3b7149b1f609f8b51ebd3 0001-makeguids-Ensure-compatibility-with-other-libcs.patch"
+sha512sums="c2f17297c863ece134a9dd758d237fd2df8c8d072f87af1d0bf2bcf9acfc7a53c25597f03fd4fb8cc664b205743d4ffa0ef1b068d0f73c58fa573d40993f3155 efivar-38.tar.bz2
+623cc065c7e6a91d668b3ce77ec2d1870e0bf58970219ce7be176f4981005b2f5821d4134d454b5fb09278d160cc79afe3be19ed04d832092f77656c1341cc08 0001-makeguids-Ensure-compatibility-with-other-libcs.patch
+1a1dfd66a5b613167eeedafe3f2728a0e644cb89860c3dad5955cbaba254ecde617e05d969eeac50be443d090136cbfec626f878f49eea2458b6b8ca17287bd4 fix-musl-build.patch"
diff --git a/user/efivar/fix-musl-build.patch b/user/efivar/fix-musl-build.patch
new file mode 100644
index 000000000..00229be5c
--- /dev/null
+++ b/user/efivar/fix-musl-build.patch
@@ -0,0 +1,231 @@
+From cece3ffd5be2f8641eb694513f2b73e5eb97ffd3 Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Fri, 28 Jan 2022 12:13:30 +0100
+Subject: [PATCH 1/2] efisecdb: fix build with musl libc
+
+Refactor code to use POSIX atexit(3) instead of the GNU specific
+on_exit(3).
+
+Resolves: #197
+Resolves: #202
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ src/compiler.h | 2 --
+ src/efisecdb.c | 68 +++++++++++++++++++-------------------------------
+ 2 files changed, 26 insertions(+), 44 deletions(-)
+
+diff --git a/src/compiler.h b/src/compiler.h
+index e2f18f0b..d95fb014 100644
+--- a/src/compiler.h
++++ b/src/compiler.h
+@@ -7,8 +7,6 @@
+ #ifndef COMPILER_H_
+ #define COMPILER_H_
+
+-#include <sys/cdefs.h>
+-
+ /* GCC version checking borrowed from glibc. */
+ #if defined(__GNUC__) && defined(__GNUC_MINOR__)
+ # define GNUC_PREREQ(maj,min) \
+diff --git a/src/efisecdb.c b/src/efisecdb.c
+index f8823737..6bd5ad90 100644
+--- a/src/efisecdb.c
++++ b/src/efisecdb.c
+@@ -25,6 +25,10 @@
+ extern char *optarg;
+ extern int optind, opterr, optopt;
+
++static efi_secdb_t *secdb = NULL;
++static list_t infiles;
++static list_t actions;
++
+ struct hash_param {
+ char *name;
+ efi_secdb_type_t algorithm;
+@@ -187,12 +191,11 @@ add_action(list_t *list, action_type_t action_type, const efi_guid_t *owner,
+ }
+
+ static void
+-free_actions(int status UNUSED, void *actionsp)
++free_actions(void)
+ {
+- list_t *actions = (list_t *)actionsp;
+ list_t *pos, *tmp;
+
+- for_each_action_safe(pos, tmp, actions) {
++ for_each_action_safe(pos, tmp, &actions) {
+ action_t *action = list_entry(pos, action_t, list);
+
+ list_del(&action->list);
+@@ -202,12 +205,11 @@ free_actions(int status UNUSED, void *actionsp)
+ }
+
+ static void
+-free_infiles(int status UNUSED, void *infilesp)
++free_infiles(void)
+ {
+- list_t *infiles = (list_t *)infilesp;
+ list_t *pos, *tmp;
+
+- for_each_ptr_safe(pos, tmp, infiles) {
++ for_each_ptr_safe(pos, tmp, &infiles) {
+ ptrlist_t *entry = list_entry(pos, ptrlist_t, list);
+
+ list_del(&entry->list);
+@@ -216,27 +218,12 @@ free_infiles(int status UNUSED, void *infilesp)
+ }
+
+ static void
+-maybe_free_secdb(int status UNUSED, void *voidp)
++maybe_free_secdb(void)
+ {
+- efi_secdb_t **secdbp = (efi_secdb_t **)voidp;
+-
+- if (secdbp == NULL || *secdbp == NULL)
++ if (secdb == NULL)
+ return;
+
+- efi_secdb_free(*secdbp);
+-}
+-
+-static void
+-maybe_do_unlink(int status, void *filep)
+-{
+- char **file = (char **)filep;
+-
+- if (status == 0)
+- return;
+- if (file == NULL || *file == NULL)
+- return;
+-
+- unlink(*file);
++ efi_secdb_free(secdb);
+ }
+
+ static void
+@@ -323,15 +310,6 @@ parse_input_files(list_t *infiles, char **outfile, efi_secdb_t **secdb,
+ return status;
+ }
+
+-/*
+- * These need to be static globals so that they're not on main's stack when
+- * on_exit() fires.
+- */
+-static efi_secdb_t *secdb = NULL;
+-static list_t infiles;
+-static list_t actions;
+-static char *outfile = NULL;
+-
+ int
+ main(int argc, char *argv[])
+ {
+@@ -351,6 +329,7 @@ main(int argc, char *argv[])
+ bool do_sort_data = false;
+ bool sort_descending = false;
+ int status = 0;
++ char *outfile = NULL;
+
+ const char sopts[] = ":aAc:dfg:h:i:Lo:rs:t:v?";
+ const struct option lopts[] = {
+@@ -376,10 +355,9 @@ main(int argc, char *argv[])
+ INIT_LIST_HEAD(&infiles);
+ INIT_LIST_HEAD(&actions);
+
+- on_exit(free_actions, &actions);
+- on_exit(free_infiles, &infiles);
+- on_exit(maybe_free_secdb, &secdb);
+- on_exit(maybe_do_unlink, &outfile);
++ atexit(free_actions);
++ atexit(free_infiles);
++ atexit(maybe_free_secdb);
+
+ /*
+ * parse the command line.
+@@ -587,24 +565,30 @@ main(int argc, char *argv[])
+ outfd = open(outfile, flags, 0600);
+ if (outfd < 0) {
+ char *tmpoutfile = outfile;
+- if (errno == EEXIST)
+- outfile = NULL;
++ if (errno != EEXIST)
++ unlink(outfile);
+ err(1, "could not open \"%s\"", tmpoutfile);
+ }
+
+ rc = ftruncate(outfd, 0);
+- if (rc < 0)
++ if (rc < 0) {
++ unlink(outfile);
+ err(1, "could not truncate output file \"%s\"", outfile);
++ }
+
+ void *output;
+ size_t size = 0;
+ rc = efi_secdb_realize(secdb, &output, &size);
+- if (rc < 0)
++ if (rc < 0) {
++ unlink(outfile);
+ secdb_err(1, "could not realize signature list");
++ }
+
+ rc = write(outfd, output, size);
+- if (rc < 0)
++ if (rc < 0) {
++ unlink(outfile);
+ err(1, "could not write signature list");
++ }
+
+ close(outfd);
+ xfree(output);
+
+From df09b472419466987f2f30176dd00937e640aa9a Mon Sep 17 00:00:00 2001
+From: Natanael Copa <ncopa@alpinelinux.org>
+Date: Fri, 28 Jan 2022 12:29:00 +0100
+Subject: [PATCH 2/2] efisecdb: do not free optarg
+
+The *outfile passed to parse_input_files can only be either set to
+optarg or be NULL. optarg should not be free'd and NULL does not need
+to.
+
+Since we no longer use on_exit to unlink outfile we also don't need to
+set *outfile to NULL.
+
+Fixes commit d91787035bc1 (efisecdb: add efisecdb)
+
+Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
+---
+ src/efisecdb.c | 7 ++-----
+ 1 file changed, 2 insertions(+), 5 deletions(-)
+
+diff --git a/src/efisecdb.c b/src/efisecdb.c
+index 6bd5ad90..70fa1847 100644
+--- a/src/efisecdb.c
++++ b/src/efisecdb.c
+@@ -255,8 +255,7 @@ list_guids(void)
+ * failure.
+ */
+ static int
+-parse_input_files(list_t *infiles, char **outfile, efi_secdb_t **secdb,
+- bool dump)
++parse_input_files(list_t *infiles, efi_secdb_t **secdb, bool dump)
+ {
+ int status = 0;
+ list_t *pos, *tmp;
+@@ -297,8 +296,6 @@ parse_input_files(list_t *infiles, char **outfile, efi_secdb_t **secdb,
+ if (!dump)
+ exit(1);
+ status = 1;
+- xfree(*outfile);
+- *outfile = NULL;
+ break;
+ }
+ }
+@@ -528,7 +525,7 @@ main(int argc, char *argv[])
+ efi_secdb_set_bool(secdb, EFI_SECDB_SORT_DATA, do_sort_data);
+ efi_secdb_set_bool(secdb, EFI_SECDB_SORT_DESCENDING, sort_descending);
+
+- status = parse_input_files(&infiles, &outfile, &secdb, dump);
++ status = parse_input_files(&infiles, &secdb, dump);
+ if (status == 0) {
+ for_each_action_safe(pos, tmp, &actions) {
+ action_t *action = list_entry(pos, action_t, list);
diff --git a/user/eggdbus/APKBUILD b/user/eggdbus/APKBUILD
index ddceb9066..eb754d4d9 100644
--- a/user/eggdbus/APKBUILD
+++ b/user/eggdbus/APKBUILD
@@ -1,4 +1,4 @@
-# Contributor: Carlo Landmeter
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=eggdbus
pkgver=0.6
@@ -7,18 +7,17 @@ pkgdesc="Experimental D-Bus bindings for GObject"
url="https://cgit.freedesktop.org/~david/eggdbus"
arch="all"
license="LGPL-2.0+"
+depends=""
makedepends="dbus-glib-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://hal.freedesktop.org/releases/$pkgname-$pkgver.tar.gz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,12 +30,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/eigen/APKBUILD b/user/eigen/APKBUILD
index 125cf77fe..da5ad32d2 100644
--- a/user/eigen/APKBUILD
+++ b/user/eigen/APKBUILD
@@ -1,27 +1,41 @@
# Contributor: Bradley J Chambers <brad.chambers@gmail.com>
# Maintainer:
pkgname=eigen
-pkgver=3.3.7
-pkgrel=0
+pkgver=3.3.8
+pkgrel=1
pkgdesc="Eigen is a C++ template library for linear algebra"
url="http://eigen.tuxfamily.org/index.php?title=Main_Page"
arch="noarch"
options="!check" # Headers-only: no tests are possible.
license="MPL-2.0"
depends=""
-makedepends=""
+makedepends="cmake"
subpackages="$pkgname-dev"
-source="$pkgname-$pkgver.tar.gz::http://bitbucket.org/eigen/$pkgname/get/$pkgver.tar.gz"
+source="https://gitlab.com/libeigen/eigen/-/archive/$pkgver/eigen-$pkgver.tar.gz
+ assert-compile-error.patch
+ "
-prepare() {
- mv "$srcdir"/eigen-eigen-* "$builddir" # directory name contains hash
- default_prepare
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ -Bbuild
+ # Header-only library, so there is no 'build'.
}
package() {
- mkdir -p "$pkgdir"/usr/include/eigen3
- cp -r "$builddir"/Eigen "$pkgdir"/usr/include/eigen3
- cp -r "$builddir"/unsupported "$pkgdir"/usr/include/eigen3
+ make -C build DESTDIR="$pkgdir" install
+ mkdir -p "$pkgdir"/usr/lib/cmake
+ mv "$pkgdir"/usr/share/eigen3/cmake "$pkgdir"/usr/lib/cmake/Eigen3
}
-sha512sums="34cf600914cce719d61511577ef9cd26fbdcb7a6fad1d0ab8396f98b887fac6a5577d3967e84a8f56225cc50de38f3b91f34f447d14312028383e32b34ea1972 eigen-3.3.7.tar.gz"
+sha512sums="5b4b5985b0294e07b3ed1155720cbbfea322fe9ccad0fc8b0a10060b136a9169a15d5b9cb7a434470cadd45dff0a43049edc20d2e1070005481a120212edc355 eigen-3.3.8.tar.gz
+26cdf877d4d3378b322cc08c0430b0628a07279a030732661ba4acb85d6c835956c99474fc4587a170d11437ca6715e56d8eaabb625a1eba7c46ce4d6e4d66f9 assert-compile-error.patch"
diff --git a/user/eigen/assert-compile-error.patch b/user/eigen/assert-compile-error.patch
new file mode 100644
index 000000000..556474e8b
--- /dev/null
+++ b/user/eigen/assert-compile-error.patch
@@ -0,0 +1,64 @@
+From ef3cc72cb65e2d500459c178c63e349bacfa834f Mon Sep 17 00:00:00 2001
+From: Luke Peterson <hazelnusse@gmail.com>
+Date: Thu, 8 Oct 2020 12:16:53 -0700
+Subject: [PATCH] Remove error counting in OpenMP parallelize_gemm
+
+This resolves a compilation error associated with
+Eigen::eigen_assert_exception. It also eliminates the counting of
+exceptions that may occur in the OpenMP parallel section. If an
+unhandled exception occurs in this section, the behavior is non-conforming
+according to the OpenMP specification.
+---
+ Eigen/src/Core/products/Parallelizer.h | 14 +++++---------
+ test/CMakeLists.txt | 2 +-
+ 2 files changed, 6 insertions(+), 10 deletions(-)
+
+diff --git a/Eigen/src/Core/products/Parallelizer.h b/Eigen/src/Core/products/Parallelizer.h
+index 67b2442b5..a3cc05b77 100644
+--- a/Eigen/src/Core/products/Parallelizer.h
++++ b/Eigen/src/Core/products/Parallelizer.h
+@@ -132,8 +132,7 @@ void parallelize_gemm(const Functor& func, Index rows, Index cols, Index depth,
+
+ ei_declare_aligned_stack_constructed_variable(GemmParallelInfo<Index>,info,threads,0);
+
+- int errorCount = 0;
+- #pragma omp parallel num_threads(threads) reduction(+: errorCount)
++ #pragma omp parallel num_threads(threads)
+ {
+ Index i = omp_get_thread_num();
+ // Note that the actual number of threads might be lower than the number of request ones.
+@@ -152,14 +151,11 @@ void parallelize_gemm(const Functor& func, Index rows, Index cols, Index depth,
+ info[i].lhs_start = r0;
+ info[i].lhs_length = actualBlockRows;
+
+- EIGEN_TRY {
+- if(transpose) func(c0, actualBlockCols, 0, rows, info);
+- else func(0, rows, c0, actualBlockCols, info);
+- } EIGEN_CATCH(...) {
+- ++errorCount;
+- }
++ if(transpose)
++ func(c0, actualBlockCols, 0, rows, info);
++ else
++ func(0, rows, c0, actualBlockCols, info);
+ }
+- if (errorCount) EIGEN_THROW_X(Eigen::eigen_assert_exception());
+ #endif
+ }
+
+diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
+index 0747aa6cb..b02577780 100644
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -163,7 +163,7 @@ ei_add_test(constructor)
+ ei_add_test(linearstructure)
+ ei_add_test(integer_types)
+ ei_add_test(unalignedcount)
+-if(NOT EIGEN_TEST_NO_EXCEPTIONS)
++if(NOT EIGEN_TEST_NO_EXCEPTIONS AND NOT EIGEN_TEST_OPENMP)
+ ei_add_test(exceptions)
+ endif()
+ ei_add_test(redux)
+--
+GitLab
+
diff --git a/user/elixir/APKBUILD b/user/elixir/APKBUILD
new file mode 100644
index 000000000..40b16876e
--- /dev/null
+++ b/user/elixir/APKBUILD
@@ -0,0 +1,28 @@
+# Contributor: Daniel Isaksen <d@duniel.no>
+# Contributor: Marlus Saraiva <marlus.saraiva@gmail.com>
+# Maintainer: Lee Starnes <lee@canned-death.us>
+pkgname=elixir
+pkgver=1.17.2
+pkgrel=0
+pkgdesc="Dynamic, functional language designed for building scalable and maintainable applications"
+url="https://elixir-lang.org/"
+arch="noarch"
+license="Apache-2.0"
+depends="erlang"
+makedepends="erlang-dev"
+subpackages="$pkgname-doc"
+source="$pkgname-$pkgver.tar.gz::https://github.com/elixir-lang/elixir/archive/v$pkgver.tar.gz"
+
+build() {
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" PREFIX=/usr install
+}
+
+sha512sums="f9d4983c3e7bd054a76bfe0dfa4aea483a4dd84ada432ae5a144167ff8d268499077704214eaaecfda84469c2f747a3594258ca95a7955bffde0c7b0f65985f2 elixir-1.17.2.tar.gz"
diff --git a/user/elogind/APKBUILD b/user/elogind/APKBUILD
new file mode 100644
index 000000000..977d4a8c8
--- /dev/null
+++ b/user/elogind/APKBUILD
@@ -0,0 +1,80 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=elogind
+pkgver=252.9
+pkgrel=0
+pkgdesc="Session manager system"
+url="https://github.com/elogind/elogind/wiki"
+arch="all"
+license="LGPL-2.1+"
+depends="dbus eudev utmps"
+makedepends="meson ninja acl-dev dbus-dev docbook-xsl eudev-dev gperf libcap-dev
+ libxslt-dev linux-headers linux-pam-dev m4 py3-jinja2 skalibs-dev
+ utmps-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-openrc $pkgname-dracut"
+install="$pkgname.post-install $pkgname.post-deinstall"
+source="elogind-$pkgver.tar.gz::https://github.com/elogind/elogind/archive/v$pkgver.tar.gz
+ utmps.patch
+
+ elogind.pamd
+ elogind.confd
+ elogind.initd
+ dracut_module.sh
+
+ disable-cgroup-test.patch
+ elogind-252.9-musl-getdents.patch
+ elogind-252.9-musl-gshadow.patch
+ elogind-252.9-musl-lfs.patch
+ elogind-252.9-musl-more-strerror_r.patch
+ elogind-252.9-musl-statx.patch
+ fix-rlim-fmt.patch
+ fix-strerror.patch
+ fix-test-bus-error.patch
+ hostname-length.patch
+ signal-include.patch
+ "
+
+build() {
+ export LDFLAGS="-Wl,--no-as-needed -l:libutmps.so -Wl,--as-needed"
+ # Note: We can't use openrc as our cgroup controller,
+ # otherwise we aren't portable to s6/runit later.
+ meson setup \
+ -Dcgroup-controller=elogind \
+ -Ddefault-kill-user-processes=false \
+ build
+ ninja -C build
+}
+
+check() {
+ ninja -C build test
+}
+
+package() {
+ DESTDIR="$pkgdir" ninja -C build install
+ install -D -m644 "$srcdir"/elogind.pamd "$pkgdir"/etc/pam.d/elogind-user
+ install -D -m755 "$srcdir"/elogind.initd "$pkgdir"/etc/init.d/elogind
+ install -D -m644 "$srcdir"/elogind.confd "$pkgdir"/etc/conf.d/elogind
+}
+
+dracut() {
+ install_if="$pkgname=$pkgver-r$pkgrel dracut"
+ install -D -m755 "$srcdir"/dracut_module.sh "$subpkgdir"/usr/lib/dracut/modules.d/99elogind/module-setup.sh
+}
+
+sha512sums="eed620cbc2f03bfeae6a80c9a421c21d3293fa40adffb96c7e4d86508c06712041f6623fb2bac15ecbb85faca4b5674ea6423b3067840809fb27d023fd9e5ffd elogind-252.9.tar.gz
+56e588f3c53060a3a175f9b9710cb804c155c7956895a118e04ebe8f6565aebbc9073d3375c3f08028dd4240c4b09a7c77c4b392c5549304054b53dbbfe70015 utmps.patch
+b5043d7bcbefdf00704d40670deafa0984899cc7be083e8d886a92137932a9f23c25749c106cfc07906166e57db32fe6c602cf1c54129faa7e5b04d6228b7c17 elogind.pamd
+2c9047c054582824f8a3e71bb0a79a5621d7a92cb15c66bb7e7a8deb931037b6d3a331b86cdc9eb5ec4e7b2b725548a7ee6657e3c3193d81ba6422cd101a2491 elogind.confd
+bbc203a924abf65b45d7d4d2fc31baf2d4e23135d98c7c937f93a4fe2d4ce9dac3d4e0747c1e09101f8b2ce674d25d49e085bf2445e7cb28408d7d209f8f4491 elogind.initd
+d5889b2757b69a5a853341a5730affeb7db4c4129514009d11f1ca010d1ccf6cbc55393bd79e0d2dd97c5af77fff75390b1e58538370d9847256eb7f7ec865ff dracut_module.sh
+44c92b056ac012b1b951191bc2f4d60ef8bc0ce2d26a9b4a568794cc51e4eb04794d953d7bb838b195667566e3c8e3acb0fc3f8404ed8ca8ac8bd034d9103269 disable-cgroup-test.patch
+866f9ba22ca62866e9d7f0ea51a450b79de955df780045584eed0a2681541f04430df84075c8efe6176c7b25a4cf0ac4394146403f31b8d3f2e1c7c0bb39ef86 elogind-252.9-musl-getdents.patch
+b69598c6ff56155b8f73bb4684bca6fd66011a9088e0007499617621d2f2b8b5683efabb414d1376a27f931d5372cfda845ad50e4e2efa498391529a22909108 elogind-252.9-musl-gshadow.patch
+6152bd2e21cf5693d2cd8f8d83189371c702141092ad1604fc4ffc9b7dacbefcfa3ad0d35a184c938c56b1aaa8dc086814c1d65a2a77d2804ab6f5ceb3d88b54 elogind-252.9-musl-lfs.patch
+d79d8fb6149299b24d6935d1e8feff194daf67318d45dd8e93087e715f08863a6152261ee2c0b5eff89b01c7189117605309be43184104ba571fbb8425e2f364 elogind-252.9-musl-more-strerror_r.patch
+f7f22edfea8062c6bfaa2e7b706368ab87b026bc486a2f34627bb82cd362883279ccd9e8436208b0904b86e80b3fa977695ca79a19e1dd9e7218dbb1eb8610e0 elogind-252.9-musl-statx.patch
+470314d4a5fbd352c8f9b41255e810c06f1546055b32bc67f72bed5da02d4517ff3701bc5b0e87a02209a6bf8a9ab987b6c677722f495132f3b903cda001263e fix-rlim-fmt.patch
+1231fb7ff40b2bdc1d23e591a5690b2de32ef64ad8e28ffb6e912cbbbe360e72889d4b4c2c0dc1a83c6df2cdccbf86697e89757dc5d7e8290cf8b2a33cfbbef9 fix-strerror.patch
+777827470671623558db658bab1172f83af21691fcc87f69a7bdda0c0cec9e11c697dfef1ee01ad689552cd20924782964e3faa0e3b103dead49db638b27bf10 fix-test-bus-error.patch
+112e35c073faebe66f2cbe3657e12c2e2b4ab10d8cf58a19cd45567b7cb2479ed6eba48c34dcf23494b1957e8dfcc7e475c2c21ab101ff8324d2fa9ba2527a7c hostname-length.patch
+56282dc312f20256f803d954edeef1c9f380256c16a140490225a58c04cefc0c3306d0d1d641afeeeea2a219b2fcb2931263166f978fab28fb48d77e2f7c315a signal-include.patch"
diff --git a/user/elogind/bad-tests.patch b/user/elogind/bad-tests.patch
new file mode 100644
index 000000000..b448dbf34
--- /dev/null
+++ b/user/elogind/bad-tests.patch
@@ -0,0 +1,35 @@
+diff -ur a/src/test/meson.build b/src/test/meson.build
+--- a/src/test/meson.build 2022-01-11 19:27:23.220000000 +0000
++++ b/src/test/meson.build 2022-01-11 19:28:38.370000000 +0000
+@@ -257,10 +257,6 @@
+ # []],
+ #endif // 0
+
+- [['src/test/test-mountpoint-util.c'],
+- [],
+- []],
+-
+ [['src/test/test-exec-util.c'],
+ [],
+ []],
+@@ -1095,20 +1091,10 @@
+ # '', 'timeout=120'],
+ #endif // 0
+
+- [['src/libelogind/sd-login/test-login.c'],
+- [],
+- []],
+-
+ [['src/libelogind/sd-device/test-sd-device.c'],
+ [],
+ []],
+
+- [['src/libelogind/sd-device/test-sd-device-thread.c'],
+- [libbasic,
+- libshared_static,
+- libelogind],
+- [threads]],
+-
+ #if 0 /// elogind does not ship libudev itself
+ # [['src/libsystemd/sd-device/test-udev-device-thread.c'],
+ # [libbasic,
diff --git a/user/elogind/disable-cgroup-test.patch b/user/elogind/disable-cgroup-test.patch
new file mode 100644
index 000000000..3b4f5f300
--- /dev/null
+++ b/user/elogind/disable-cgroup-test.patch
@@ -0,0 +1,13 @@
+--- elogind-252.9/src/test/meson.build.old 2023-05-15 06:35:29.000000000 -0500
++++ elogind-252.9/src/test/meson.build 2023-11-27 06:42:49.671974662 -0600
+@@ -564,7 +564,9 @@
+ #endif // 0
+ [files('test-daemon.c')],
+
+- [files('test-cgroup.c')],
++#if 0
++# [files('test-cgroup.c')],
++#endif // 0
+
+ #if 0 /// UNNEEDED in elogind
+ # [files('test-cgroup-cpu.c'),
diff --git a/user/elogind/dracut_module.sh b/user/elogind/dracut_module.sh
new file mode 100755
index 000000000..c65bcadec
--- /dev/null
+++ b/user/elogind/dracut_module.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+# called by dracut
+check() {
+ require_binaries /lib/elogind/elogind-uaccess-command
+}
+
+# called by dracut
+depends() {
+ echo base
+ return 0
+}
+
+# called by dracut
+install() {
+ inst /lib/elogind/elogind-uaccess-command
+}
+
diff --git a/user/elogind/elogind-252.9-musl-getdents.patch b/user/elogind/elogind-252.9-musl-getdents.patch
new file mode 100644
index 000000000..7b81dc222
--- /dev/null
+++ b/user/elogind/elogind-252.9-musl-getdents.patch
@@ -0,0 +1,37 @@
+Not strictly required until musl 1.2.4, but doesn't hurt.
+
+From dab02796780f00d689cc1c7a0ba81abe7c5f28d0 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Fri, 21 Jan 2022 15:15:11 -0800
+Subject: [PATCH] pass correct parameters to getdents64
+
+Fixes
+../git/src/basic/recurse-dir.c:57:40: error: incompatible pointer types passing 'uint8_t *' (aka 'unsigned char *') to parameter of type 'struct dirent *' [-Werror,-Wincompatible-pointer-types]
+ n = getdents64(dir_fd, (uint8_t*) de->buffer + de->buffer_size, bs - de->buffer_size);
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+../git/src/basic/stat-util.c:102:28: error: incompatible pointer types passing 'union (unnamed union at ../git/src/basic/stat-util.c:78:9) *' to parameter of type 'struct dirent *' [-Werror,-Wincompatible-pointer-types]
+ n = getdents64(fd, &buffer, sizeof(buffer));
+ ^~~~~~~
+
+Upstream-Status: Inappropriate [musl specific]
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+Signed-off-by: Jiaqing Zhao <jiaqing.zhao@linux.intel.com>
+
+---
+ src/basic/recurse-dir.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/basic/recurse-dir.c b/src/basic/recurse-dir.c
+index d16ca98..31f6154 100644
+--- a/src/basic/recurse-dir.c
++++ b/src/basic/recurse-dir.c
+@@ -54,7 +54,7 @@ int readdir_all(int dir_fd,
+ bs = MIN(MALLOC_SIZEOF_SAFE(de) - offsetof(DirectoryEntries, buffer), (size_t) SSIZE_MAX);
+ assert(bs > de->buffer_size);
+
+- n = getdents64(dir_fd, (uint8_t*) de->buffer + de->buffer_size, bs - de->buffer_size);
++ n = getdents(dir_fd, (struct dirent*)((uint8_t*) de->buffer + de->buffer_size), bs - de->buffer_size);
+ if (n < 0)
+ return -errno;
+ if (n == 0)
diff --git a/user/elogind/elogind-252.9-musl-gshadow.patch b/user/elogind/elogind-252.9-musl-gshadow.patch
new file mode 100644
index 000000000..95613cb66
--- /dev/null
+++ b/user/elogind/elogind-252.9-musl-gshadow.patch
@@ -0,0 +1,14 @@
+just like the other part it's already patched in, not actually used
+--
+diff --git a/src/shared/user-record-nss.h b/src/shared/user-record-nss.h
+index 7a41be7..3a970a6 100644
+--- a/src/shared/user-record-nss.h
++++ b/src/shared/user-record-nss.h
+@@ -2,7 +2,6 @@
+ #pragma once
+
+ #include <grp.h>
+-#include <gshadow.h>
+ #include <pwd.h>
+ #include <shadow.h>
+
diff --git a/user/elogind/elogind-252.9-musl-lfs.patch b/user/elogind/elogind-252.9-musl-lfs.patch
new file mode 100644
index 000000000..50c1bfa00
--- /dev/null
+++ b/user/elogind/elogind-252.9-musl-lfs.patch
@@ -0,0 +1,52 @@
+Again, only required for musl 1.2.4 but let's not make it harder on ourselves.
+Upstream-URL: https://github.com/systemd/systemd/pull/27599
+
+From d096e05c625ea825eb4d781216ded717b7f71cca Mon Sep 17 00:00:00 2001
+From: Sam James <sam@gentoo.org>
+Date: Wed, 10 May 2023 01:47:13 +0100
+Subject: [PATCH] dirent: conditionalize dirent assert based on dirent64
+ existence
+
+>=musl-1.2.4 doesn't define dirent64 and its LFS friends as its "native"
+functions are already LFS-aware.
+
+Check for dirent64 in meson.build and only assert if it exists.
+
+Bug: https://bugs.gentoo.org/905900
+Closes: https://github.com/systemd/systemd/pull/25809
+--- a/meson.build
++++ b/meson.build
+@@ -599,6 +599,7 @@ decl_headers = '''
+ # define _GNU_SOURCE 1
+ # endif // _GNU_SOURCE
+ #endif // 1
++#include <dirent.h>
+ #include <uchar.h>
+ #include <sys/mount.h>
+ #include <sys/stat.h>
+@@ -608,6 +609,7 @@ foreach decl : ['char16_t',
+ 'char32_t',
+ 'struct mount_attr',
+ 'struct statx',
++ 'struct dirent64',
+ ]
+
+ # We get -1 if the size cannot be determined
+--- a/src/basic/dirent-util.h
++++ b/src/basic/dirent-util.h
+@@ -39,6 +39,7 @@ struct dirent *readdir_no_dot(DIR *dirp);
+ /* Only if 64bit off_t is enabled struct dirent + struct dirent64 are actually the same. We require this, and
+ * we want them to be interchangeable to make getdents64() work, hence verify that. */
+ assert_cc(_FILE_OFFSET_BITS == 64);
++#if HAVE_STRUCT_DIRENT64
+ assert_cc(sizeof(struct dirent) == sizeof(struct dirent64));
+ assert_cc(offsetof(struct dirent, d_ino) == offsetof(struct dirent64, d_ino));
+ assert_cc(sizeof_field(struct dirent, d_ino) == sizeof_field(struct dirent64, d_ino));
+@@ -50,6 +51,7 @@ assert_cc(offsetof(struct dirent, d_type) == offsetof(struct dirent64, d_type));
+ assert_cc(sizeof_field(struct dirent, d_type) == sizeof_field(struct dirent64, d_type));
+ assert_cc(offsetof(struct dirent, d_name) == offsetof(struct dirent64, d_name));
+ assert_cc(sizeof_field(struct dirent, d_name) == sizeof_field(struct dirent64, d_name));
++#endif
+
+ #define FOREACH_DIRENT_IN_BUFFER(de, buf, sz) \
+ for (void *_end = (uint8_t*) ({ (de) = (buf); }) + (sz); \
diff --git a/user/elogind/elogind-252.9-musl-more-strerror_r.patch b/user/elogind/elogind-252.9-musl-more-strerror_r.patch
new file mode 100644
index 000000000..3cfafae4c
--- /dev/null
+++ b/user/elogind/elogind-252.9-musl-more-strerror_r.patch
@@ -0,0 +1,44 @@
+Patch-Source: https://github.com/chimera-linux/cports/blob/6ff62886181bc1325a1431157a80993497fd561b/main/udev/patches/0001-errno-util-Make-STRERROR-portable-for-musl.patch
+--
+From f66b5c802ce0a3310f5580cfc1b02446f8087568 Mon Sep 17 00:00:00 2001
+From: Khem Raj <raj.khem@gmail.com>
+Date: Mon, 23 Jan 2023 23:39:46 -0800
+Subject: [PATCH] errno-util: Make STRERROR portable for musl
+
+Sadly, systemd has decided to use yet another GNU extention in a macro
+lets make this such that we can use XSI compliant strerror_r() for
+non-glibc hosts
+
+Upstream-Status: Inappropriate [musl specific]
+
+Signed-off-by: Khem Raj <raj.khem@gmail.com>
+---
+ src/basic/errno-util.h | 12 ++++++++++--
+ 1 file changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/src/basic/errno-util.h b/src/basic/errno-util.h
+index 091f99c590..eb5c1f9961 100644
+--- a/src/basic/errno-util.h
++++ b/src/basic/errno-util.h
+@@ -14,8 +14,16 @@
+ * https://stackoverflow.com/questions/34880638/compound-literal-lifetime-and-if-blocks
+ *
+ * Note that we use the GNU variant of strerror_r() here. */
+-#define STRERROR(errnum) strerror_r(abs(errnum), (char[ERRNO_BUF_LEN]){}, ERRNO_BUF_LEN)
+-
++static inline const char * STRERROR(int errnum);
++
++static inline const char * STRERROR(int errnum) {
++#ifdef __GLIBC__
++ return strerror_r(abs(errnum), (char[ERRNO_BUF_LEN]){}, ERRNO_BUF_LEN);
++#else
++ static __thread char buf[ERRNO_BUF_LEN];
++ return strerror_r(abs(errnum), buf, ERRNO_BUF_LEN) ? "unknown error" : buf;
++#endif
++}
+ /* A helper to print an error message or message for functions that return 0 on EOF.
+ * Note that we can't use ({ … }) to define a temporary variable, so errnum is
+ * evaluated twice. */
+--
+2.39.1
+
diff --git a/user/elogind/elogind-252.9-musl-statx.patch b/user/elogind/elogind-252.9-musl-statx.patch
new file mode 100644
index 000000000..60a894216
--- /dev/null
+++ b/user/elogind/elogind-252.9-musl-statx.patch
@@ -0,0 +1,26 @@
+diff --git a/src/basic/mountpoint-util.c b/src/basic/mountpoint-util.c
+index ab8744b..59ff466 100644
+--- a/src/basic/mountpoint-util.c
++++ b/src/basic/mountpoint-util.c
+@@ -11,7 +11,7 @@
+ //#include "filesystems.h"
+ #include "fs-util.h"
+ #include "missing_stat.h"
+-//#include "missing_syscall.h"
++#include "missing_syscall.h"
+ //#include "mkdir.h"
+ #include "mountpoint-util.h"
+ #include "nulstr-util.h"
+diff --git a/src/basic/stat-util.c b/src/basic/stat-util.c
+index d8e0693..f8324ed 100644
+--- a/src/basic/stat-util.c
++++ b/src/basic/stat-util.c
+@@ -18,7 +18,7 @@
+ #include "macro.h"
+ //#include "missing_fs.h"
+ #include "missing_magic.h"
+-//#include "missing_syscall.h"
++#include "missing_syscall.h"
+ #include "nulstr-util.h"
+ //#include "parse-util.h"
+ #include "stat-util.h"
diff --git a/user/elogind/elogind.confd b/user/elogind/elogind.confd
new file mode 100644
index 000000000..f212514cb
--- /dev/null
+++ b/user/elogind/elogind.confd
@@ -0,0 +1,4 @@
+# /etc/conf.d/elogind: config file for /etc/init.d/elogind
+
+# this is where elogind will store its pid file
+ELOGIND_PIDFILE="/run/elogind.pid"
diff --git a/user/elogind/elogind.initd b/user/elogind/elogind.initd
new file mode 100644
index 000000000..ab6a3905c
--- /dev/null
+++ b/user/elogind/elogind.initd
@@ -0,0 +1,26 @@
+#!/sbin/openrc-run
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+depend() {
+ need dbus
+
+ # Make sure elogind is up before xdm starts any dm
+ before xdm
+ before sddm
+}
+
+start() {
+ ebegin "Starting elogind"
+
+ start-stop-daemon --start --quiet \
+ --pidfile "${ELOGIND_PIDFILE}" \
+ --exec /lib/elogind/elogind -- --daemon
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping elogind"
+ start-stop-daemon --stop --quiet --pidfile "${ELOGIND_PIDFILE}"
+ eend $?
+}
diff --git a/user/elogind/elogind.pamd b/user/elogind/elogind.pamd
new file mode 100644
index 000000000..210d3becb
--- /dev/null
+++ b/user/elogind/elogind.pamd
@@ -0,0 +1,18 @@
+# Welcome to Adélie Linux.
+# This file describes the PAM configuration for elogind.
+# This is *not* the configuration that adds elogind to the system;
+# that file is $SYSROOT/etc/pam.d/base-session-elogind.
+
+account required pam_access.so
+account include base-account
+
+session required pam_env.so
+session required pam_limits.so
+session required pam_unix.so
+session required pam_loginuid.so
+session optional pam_keyinit.so force revoke
+session optional pam_elogind.so
+
+auth required pam_deny.so
+
+password required pam_deny.so
diff --git a/user/elogind/elogind.post-deinstall b/user/elogind/elogind.post-deinstall
new file mode 100644
index 000000000..76e04048e
--- /dev/null
+++ b/user/elogind/elogind.post-deinstall
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+printf "" > /etc/pam.d/base-session-elogind
diff --git a/user/elogind/elogind.post-install b/user/elogind/elogind.post-install
new file mode 100644
index 000000000..8a6636660
--- /dev/null
+++ b/user/elogind/elogind.post-install
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+printf "# Welcome to Adélie Linux\n# This file integrates elogind with your system PAM configuration.\n# It should not be modified. If you no longer wish to use elogind,\n# simply remove the include line from /etc/pam.d/base-session.\n\nsession\t\trequired\tpam_loginuid.so\nsession\t\toptional\tpam_elogind.so\n" > /etc/pam.d/base-session-elogind
diff --git a/user/elogind/fix-rlim-fmt.patch b/user/elogind/fix-rlim-fmt.patch
new file mode 100644
index 000000000..cfb943e48
--- /dev/null
+++ b/user/elogind/fix-rlim-fmt.patch
@@ -0,0 +1,40 @@
+%ju is uintmax_t which is unsigned long, not unsigned long long.
+
+Using the glibc code gives the same error - PRIu64 is unsigned long, not ll.
+
+Upstream-URL: https://github.com/elogind/elogind/issues/269
+
+--- elogind-252.9/src/basic/format-util.h.old 2023-05-15 06:35:29.000000000 -0500
++++ elogind-252.9/src/basic/format-util.h 2023-11-27 05:11:43.903588357 -0600
+@@ -34,7 +34,7 @@
+ # error Unknown timex member size
+ #endif
+
+-#ifdef __GLIBC__ /// Go directly for %ju in elogind if not. Enhances musl-libc compatibility.
++#ifdef __GLIBC__ /// Go directly for %llu in elogind if not. Enhances musl-libc compatibility.
+ #if SIZEOF_RLIM_T == 8
+ # define RLIM_FMT "%" PRIu64
+ #elif SIZEOF_RLIM_T == 4
+@@ -43,7 +43,7 @@
+ # error Unknown rlim_t size
+ #endif
+ #else // __GLIBC__
+-#define RLIM_FMT "%ju"
++#define RLIM_FMT "%llu"
+ #endif // __GLIBC__
+
+ #if SIZEOF_DEV_T == 8
+--- elogind-252.9/src/basic/rlimit-util.c.old 2023-05-15 06:35:29.000000000 -0500
++++ elogind-252.9/src/basic/rlimit-util.c 2023-11-27 05:21:02.633167487 -0600
+@@ -407,11 +407,7 @@
+
+ rl.rlim_cur = FD_SETSIZE;
+ if (setrlimit(RLIMIT_NOFILE, &rl) < 0)
+-#ifdef __GLIBC__ /// To be compatible with musl-libc, elogind uses an (uintmax_t) cast.
+ return log_debug_errno(errno, "Failed to lower RLIMIT_NOFILE's soft limit to " RLIM_FMT ": %m", rl.rlim_cur);
+-#else // __GLIBC__
+- return log_debug_errno(errno, "Failed to lower RLIMIT_NOFILE's soft limit to " RLIM_FMT ": %m", (uintmax_t)rl.rlim_cur);
+-#endif // __GLIBC__
+
+ return 1;
+ }
diff --git a/user/elogind/fix-strerror.patch b/user/elogind/fix-strerror.patch
new file mode 100644
index 000000000..a685651b9
--- /dev/null
+++ b/user/elogind/fix-strerror.patch
@@ -0,0 +1,13 @@
+Causes build errors with the semicolon.
+
+--- elogind-252.9/src/basic/musl_missing.h.old 2023-11-27 05:10:27.761821031 -0600
++++ elogind-252.9/src/basic/musl_missing.h 2023-11-27 05:10:51.839218582 -0600
+@@ -26,7 +26,7 @@
+ #include <unistd.h>
+ #include <pthread.h> /* for pthread_atfork */
+
+-#define strerror_r(e, m, k) (strerror_r(e, m, k) < 0 ? strdup("strerror_r() failed") : m);
++#define strerror_r(e, m, k) (strerror_r(e, m, k) < 0 ? strdup("strerror_r() failed") : m)
+
+ /*
+ * Possibly TODO according to http://man7.org/linux/man-pages/man3/getenv.3.html
diff --git a/user/elogind/fix-test-bus-error.patch b/user/elogind/fix-test-bus-error.patch
new file mode 100644
index 000000000..47654ea8b
--- /dev/null
+++ b/user/elogind/fix-test-bus-error.patch
@@ -0,0 +1,12 @@
+I wasn't able to immediately figure out why this assertion failed.
+
+--- elogind-252.9/src/libelogind/sd-bus/test-bus-error.c.old 2023-05-15 06:35:29.000000000 -0500
++++ elogind-252.9/src/libelogind/sd-bus/test-bus-error.c 2023-11-27 06:53:53.170165648 -0600
+@@ -234,7 +234,6 @@
+ errno = EACCES;
+ assert_se(asprintf(&str, "%m") >= 0);
+ assert_se(streq(error.message, str));
+- assert_se(error._need_free == 0);
+
+ str = mfree(str);
+ sd_bus_error_free(&error);
diff --git a/user/elogind/hostname-length.patch b/user/elogind/hostname-length.patch
new file mode 100644
index 000000000..738f3573d
--- /dev/null
+++ b/user/elogind/hostname-length.patch
@@ -0,0 +1,16 @@
+musl defines HOST_NAME_MAX to 255, even though a nodename in Linux can only
+be 64 characters in length. Use the literal value instead of <limits.h>.
+
+--- elogind-252.9/src/basic/hostname-util.c.old 2023-05-15 06:35:29.000000000 -0500
++++ elogind-252.9/src/basic/hostname-util.c 2023-11-27 06:45:02.637584076 -0600
+@@ -128,8 +128,8 @@
+ if (hyphen)
+ return false;
+
+- if (p-s > HOST_NAME_MAX) /* Note that HOST_NAME_MAX is 64 on Linux, but DNS allows domain names up to
+- * 255 characters */
++ if (p-s > 64) /* Note that HOST_NAME_MAX is 64 on Linux, but DNS allows domain names up to
++ * 255 characters */
+ return false;
+
+ return true;
diff --git a/user/elogind/signal-include.patch b/user/elogind/signal-include.patch
new file mode 100644
index 000000000..18485e07a
--- /dev/null
+++ b/user/elogind/signal-include.patch
@@ -0,0 +1,13 @@
+We don't need to upstream this, because systemd 253 removes all signal stuff
+from async.c.
+
+--- elogind-252.9/src/basic/async.c.old 2023-05-15 06:35:29.000000000 -0500
++++ elogind-252.9/src/basic/async.c 2023-11-27 04:39:38.561566175 -0600
+@@ -2,6 +2,7 @@
+
+ #include <errno.h>
+ #include <pthread.h>
++#include <signal.h>
+ #include <stddef.h>
+ #include <unistd.h>
+
diff --git a/user/elogind/utmps.patch b/user/elogind/utmps.patch
new file mode 100644
index 000000000..06889a587
--- /dev/null
+++ b/user/elogind/utmps.patch
@@ -0,0 +1,68 @@
+diff -rNU3 elogind-246.10.old/src/basic/user-util.c elogind-246.10/src/basic/user-util.c
+--- elogind-246.10.old/src/basic/user-util.c 2021-03-02 08:29:23.000000000 +0000
++++ elogind-246.10/src/basic/user-util.c 2023-08-30 23:59:46.850233132 +0000
+@@ -8,7 +8,6 @@
+ #include <stdlib.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
+-#include <utmp.h>
+
+ #include "sd-messages.h"
+
+diff -rNU3 elogind-246.10.old/src/login/logind-core.c elogind-246.10/src/login/logind-core.c
+--- elogind-246.10.old/src/login/logind-core.c 2021-03-02 08:29:23.000000000 +0000
++++ elogind-246.10/src/login/logind-core.c 2023-08-30 23:54:42.910231156 +0000
+@@ -759,8 +759,6 @@
+
+ assert(m);
+
+- if (utmpxname(_PATH_UTMPX) < 0)
+- return log_error_errno(errno, "Failed to set utmp path to " _PATH_UTMPX ": %m");
+
+ utmpx = utxent_start();
+
+diff -rNU3 elogind-246.10.old/src/shared/musl_missing.h elogind-246.10/src/shared/musl_missing.h
+--- elogind-246.10.old/src/shared/musl_missing.h 2021-03-02 08:29:23.000000000 +0000
++++ elogind-246.10/src/basic/musl_missing.h 2023-08-30 23:58:42.010232710 +0000
+@@ -76,14 +76,13 @@
+ /* Make musl utmp/wtmp stubs visible if needed. */
+ #if ENABLE_UTMP
+ # include <paths.h>
+-# include <utmp.h>
+ # include <utmpx.h>
+-# if defined(_PATH_UTMP) && !defined(_PATH_UTMPX)
+-# define _PATH_UTMPX _PATH_UTMP
+-# endif
+-# if defined(_PATH_WTMP) && !defined(_PATH_WTMPX)
+-# define _PATH_WTMPX _PATH_WTMP
+-# endif
++# undef _PATH_UTMPX
++# define _PATH_UTMPX "/run/utmps/utmp"
++# undef _PATH_WTMPX
++# define _PATH_WTMPX "/var/log/wtmpd/wtmp"
++# undef _PATH_BTMPX
++# define _PATH_BTMPX "/var/log/wtmpd/btmp"
+ #endif // ENABLE_UTMP
+
+ /*
+diff -rNU3 elogind-246.10.old/src/shared/utmp-wtmp.c elogind-246.10/src/shared/utmp-wtmp.c
+--- elogind-246.10.old/src/shared/utmp-wtmp.c 2021-03-02 08:29:23.000000000 +0000
++++ elogind-246.10/src/shared/utmp-wtmp.c 2023-08-30 23:53:07.330230534 +0000
+@@ -47,8 +47,6 @@
+ return 0;
+ }
+
+- if (utmpxname(_PATH_UTMPX) < 0)
+- return -errno;
+
+ utmpx = utxent_start();
+
+@@ -97,8 +95,6 @@
+ * each entry type resp. user; i.e. basically a key/value
+ * table. */
+
+- if (utmpxname(_PATH_UTMPX) < 0)
+- return -errno;
+
+ utmpx = utxent_start();
+
diff --git a/user/emacs/APKBUILD b/user/emacs/APKBUILD
index 362b9ac7c..8298e4f3b 100644
--- a/user/emacs/APKBUILD
+++ b/user/emacs/APKBUILD
@@ -1,27 +1,27 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer: Horst Burkhardt <horst@adelielinux.org>
pkgname=emacs
-pkgver=26.1
+pkgver=28.1
pkgrel=0
pkgdesc="The extensible, customizable, self-documenting real-time display editor"
+url="https://www.gnu.org/software/emacs/"
arch="all"
options="!check !dbg"
-url="https://www.gnu.org/software/emacs/"
license="GPL-3.0+"
depends="emacs-nox"
-makedepends="autoconf automake linux-headers paxmark
+makedepends="autoconf automake linux-headers
librsvg-dev giflib-dev libxpm-dev gtk+2.0-dev gconf-dev alsa-lib-dev
glib-dev fontconfig-dev libpng-dev
libxml2-dev pango-dev tiff-dev libjpeg-turbo-dev ncurses-dev
ncurses-libs gnutls-dev libxaw-dev"
subpackages="$pkgname-doc $pkgname-nox $pkgname-x11 $pkgname-gtk2"
-source="ftp://ftp.gnu.org/gnu/emacs/emacs-$pkgver.tar.xz
- gamedir.patch"
+source="https://ftp.gnu.org/gnu/emacs/emacs-$pkgver.tar.xz
+ gamedir.patch
+ "
prepare() {
- cd "$builddir/$1"
- default_prepare || return 1
- ./autogen.sh || return 1
+ default_prepare
+ ./autogen.sh
}
_build_variant() {
@@ -68,7 +68,6 @@ _build_nox() {
}
build() {
- cd "$builddir"
mkdir -p nox
mv * nox || true
cp -a nox gtk2
@@ -96,6 +95,8 @@ doc() {
"$subpkgdir"/usr/share/emacs \
"$subpkgdir"/usr/share/icons \
"$subpkgdir"/var
+ # remove autogenerated info dir file
+ rm "$subpkgdir"/usr/share/info/dir
}
_subpackage() {
@@ -135,5 +136,5 @@ gtk2() {
_subpackage gtk2
}
-sha512sums="537c2cfdd281151b360002419dde6280c313e07a937ed96405c67f754b3401ec5541091a3c0aa6690929bc33dd79e8e0d8844e7a6b014b7798c63cb15de210c2 emacs-26.1.tar.xz
+sha512sums="c146ff7086aba49fa6c18adf4e485a59eb4c6525fddb9d385034446830b8bb0ac9e6fb76e7b6d94a9fddc41643415f36acad57a1ae16a841c97f61bc211459d9 emacs-28.1.tar.xz
8898f309aeaf274366849bd5c56c8e2a1be94dfee2f01b20f1700bf26203f49b9600237e5090fc3d8eaad3ea246f803ffd493d0c04cb3512084a4e3bf58f8f5e gamedir.patch"
diff --git a/user/encfs/APKBUILD b/user/encfs/APKBUILD
new file mode 100644
index 000000000..a20e1c888
--- /dev/null
+++ b/user/encfs/APKBUILD
@@ -0,0 +1,50 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=encfs
+pkgver=1.9.5
+pkgrel=0
+pkgdesc="Encrypted filesystem for FUSE"
+url="https://vgough.github.io/encfs/"
+arch="all"
+license="LGPL-3.0+ AND GPL-3.0+ AND MIT AND Zlib"
+depends=""
+makedepends="cmake fuse-dev openssl-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://github.com/vgough/encfs/releases/download/v$pkgver/encfs-$pkgver.tar.gz
+ cmake.patch
+ length.patch
+ shell.patch
+ typos.patch
+ utimensat.patch
+ "
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ -Bbuild .
+ make -C build
+}
+
+check() {
+ make -C build unittests
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
+}
+
+package() {
+ make DESTDIR="$pkgdir" -C build install
+}
+
+sha512sums="036e08ca9bc13b44742aebdee49bf7029d0c6b7e59cd6dedc9a09da2af99482859f6a79eddf07e3db296edaf45aafc48fe08488840e765682e9b192dd6ae4c46 encfs-1.9.5.tar.gz
+4810156ba2d61aef2f5c0c4cf8528596752309aacba5930aa6becfc6160b3c897df7570408b6431d5f09d6f85cd0fc41bd9127d47bdc9da6eb2e6321a9bda2f6 cmake.patch
+fa94088ad23ca9bdc2127f3025dc27fbf148ce94aad0378601cf0e0831039f654d74f2b3259d18ab448df3e3e63e96c59c73275abe0463504f91345d495f4375 length.patch
+c25a8c0a65c163ce87c3275261f0dae01df8d382a31a97efdc074a746cc8e8e2564e19568ca84e49c8c0c209406257dcd161784f47ec9fc78251e2c3175a3a82 shell.patch
+432199fddc361a8ace6c09a883261d07dc3aead6450584c52e98ddfaf310e5621fc9f3c3da48f012104690cc036a251919100c5d0ad17143e68ba07e826dafd9 typos.patch
+2e44c9808e065424c62d81f58798c25f5d749a5f12aa46d62385e610aff563a8730100035ac044d9ea00430cd275ced33184682d1d1b55a46ef8e22d821cc635 utimensat.patch"
diff --git a/user/encfs/cmake.patch b/user/encfs/cmake.patch
new file mode 100644
index 000000000..4e564d996
--- /dev/null
+++ b/user/encfs/cmake.patch
@@ -0,0 +1,72 @@
+From 4328178788c1adcdf431952b2723770607f3cbec Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Rogelio=20Dom=C3=ADnguez=20Hern=C3=A1ndez?=
+ <rogelio.dominguez@gmail.com>
+Date: Fri, 21 Feb 2020 15:48:12 -0600
+Subject: [PATCH] Remove "SYSTEM" from the include_directories() CMakeLists.txt
+ entries (#561)
+
+---
+ CMakeLists.txt | 14 +++++++-------
+ 1 file changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 62a2ad0d..e90ce0c8 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -96,7 +96,7 @@ endif()
+
+ # Check for FUSE.
+ find_package (FUSE REQUIRED)
+-include_directories (SYSTEM ${FUSE_INCLUDE_DIR})
++include_directories (${FUSE_INCLUDE_DIR})
+ add_definitions (-D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=29)
+ if (CYGWIN)
+ # Cygwin build is intended to use WinFsp
+@@ -105,7 +105,7 @@ endif()
+
+ # Check for OpenSSL.
+ find_package (OpenSSL REQUIRED)
+-include_directories (SYSTEM ${OPENSSL_INCLUDE_DIR})
++include_directories (${OPENSSL_INCLUDE_DIR})
+
+ find_program (POD2MAN pod2man)
+
+@@ -187,7 +187,7 @@ include_directories (${CMAKE_CURRENT_LIST_DIR})
+ if (ENABLE_NLS)
+ find_package (Intl)
+ if (Intl_FOUND)
+- include_directories (SYSTEM ${Intl_INCLUDE_DIRS})
++ include_directories (${Intl_INCLUDE_DIRS})
+ endif()
+
+ add_subdirectory(po)
+@@ -236,11 +236,11 @@ if (USE_INTERNAL_TINYXML)
+ endif ()
+ set(BUILD_TESTS OFF CACHE BOOL "build tests")
+ add_subdirectory(${TINYXML_DIR} EXCLUDE_FROM_ALL)
+- include_directories(SYSTEM ${CMAKE_CURRENT_LIST_DIR}/${TINYXML_DIR})
++ include_directories(${CMAKE_CURRENT_LIST_DIR}/${TINYXML_DIR})
+ link_directories(${CMAKE_BINARY_DIR}/${TINYXML_DIR})
+ else ()
+ find_package (TinyXML REQUIRED)
+- include_directories (SYSTEM ${TINYXML_INCLUDE_DIR})
++ include_directories (${TINYXML_INCLUDE_DIR})
+ endif ()
+
+ if (USE_INTERNAL_EASYLOGGING)
+@@ -248,13 +248,13 @@ if (USE_INTERNAL_EASYLOGGING)
+ set(EASYLOGGING_DIR vendor/github.com/muflihun/easyloggingpp)
+ set(build_static_lib ON CACHE BOOL "build static libs")
+ add_subdirectory(${EASYLOGGING_DIR} EXCLUDE_FROM_ALL)
+- include_directories(SYSTEM ${CMAKE_CURRENT_LIST_DIR}/${EASYLOGGING_DIR}/src)
++ include_directories(${CMAKE_CURRENT_LIST_DIR}/${EASYLOGGING_DIR}/src)
+ link_directories(${CMAKE_BINARY_DIR}/${EASYLOGGING_DIR})
+ set(EASYLOGGINGPP_LIBRARY easyloggingpp)
+ else ()
+ set(EASYLOGGINGPP_USE_SHARED_LIBS ON CACHE BOOL "look for shared lib")
+ find_package (EASYLOGGINGPP REQUIRED)
+- include_directories (SYSTEM ${EASYLOGGINGPP_INCLUDE_DIR})
++ include_directories (${EASYLOGGINGPP_INCLUDE_DIR})
+ endif ()
+
+ set(SOURCE_FILES
diff --git a/user/encfs/length.patch b/user/encfs/length.patch
new file mode 100644
index 000000000..be3f373c3
--- /dev/null
+++ b/user/encfs/length.patch
@@ -0,0 +1,22 @@
+From dafeb556d27076b0c6fa23e44e523bdd84598838 Mon Sep 17 00:00:00 2001
+From: Ben RUBSON <ben.rubson@gmail.com>
+Date: Sun, 9 Dec 2018 11:28:42 +0100
+Subject: [PATCH] Correct block filename max length (#540)
+
+---
+ encfs/encfs.pod | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/encfs/encfs.pod b/encfs/encfs.pod
+index 6cb5b8f5..d3831296 100644
+--- a/encfs/encfs.pod
++++ b/encfs/encfs.pod
+@@ -490,7 +490,7 @@ filenames for some reason.
+
+ Based on an underlying filesystem supporting a maximum of 255 characters in
+ filenames, here is the maximum possible filename length depending on the choosen
+-encoding scheme : stream (189), block (176), block32 (143). Note that we should
++encoding scheme : stream (189), block (175), block32 (143). Note that we should
+ rather talk about bytes, when filenames contain special (multi-bytes) characters.
+
+ Prior to version 1.1, only stream encoding was supported.
diff --git a/user/encfs/shell.patch b/user/encfs/shell.patch
new file mode 100644
index 000000000..40876ca9f
--- /dev/null
+++ b/user/encfs/shell.patch
@@ -0,0 +1,22 @@
+From 4f21701c1aaeb3e5b9822231e011ac3224026a4c Mon Sep 17 00:00:00 2001
+From: Daniel Santana <daniel@santana.tech>
+Date: Sun, 9 Dec 2018 08:37:12 -0200
+Subject: [PATCH] Use /bin/sh as a fallback to SHELL in encfssh (#538)
+
+---
+ encfs/encfssh | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/encfs/encfssh b/encfs/encfssh
+index fe7b502e..d9566f7d 100755
+--- a/encfs/encfssh
++++ b/encfs/encfssh
+@@ -77,7 +77,7 @@ fuse_umount() {
+ }
+
+ # Honor the SHELL environment variable to select a shell to run
+-"$SHELL"; retval=$?
++"${SHELL:-/bin/sh}"; retval=$?
+
+ # ensure that this shell isn't itself holding the mounted directory open
+ # ...but avoid terminating on failure, *or* causing a shellcheck warning for
diff --git a/user/encfs/typos.patch b/user/encfs/typos.patch
new file mode 100644
index 000000000..8809d8a1d
--- /dev/null
+++ b/user/encfs/typos.patch
@@ -0,0 +1,44 @@
+From 24af76d0d9503e1bd0725f6b448c8fecb603ab56 Mon Sep 17 00:00:00 2001
+From: Vasiliy Glazov <vascom2@gmail.com>
+Date: Tue, 3 Jul 2018 08:57:09 +0300
+Subject: [PATCH] Correct typo in russian translate (#528)
+
+---
+ po/ru.po | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/po/ru.po b/po/ru.po
+index 33ad129b..c0793cc8 100644
+--- a/po/ru.po
++++ b/po/ru.po
+@@ -448,7 +448,7 @@ msgstr ""
+ "Выберите одну из следующих букв:\n"
+ " введите \"x\" для режима эксперта,\n"
+ " введите \"p\" для режима максимальной секретности,\n"
+-" любой другая буква для выбора стандартного режима.\n"
++" любая другая буква для выбора стандартного режима.\n"
+ "?> "
+
+ #, c-format
+From ce200c83f0d9b5309f3e8fae7283c4cad598f637 Mon Sep 17 00:00:00 2001
+From: Shohei Kusakata <shohei@kusakata.com>
+Date: Thu, 18 Jul 2019 19:29:16 +0900
+Subject: [PATCH] Fix typo in japanese translation (#553)
+
+---
+ po/ja.po | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/po/ja.po b/po/ja.po
+index eccefb44..b089aadf 100644
+--- a/po/ja.po
++++ b/po/ja.po
+@@ -608,7 +608,7 @@ msgid ""
+ " - invalid options -- see usage message\n"
+ msgstr ""
+ "fuse が失敗しました。一般的な原因としては:\n"
+-" - fuse カーネルモジュールがインストールされていない (modeprobe fuse)\n"
++" - fuse カーネルモジュールがインストールされていない (modprobe fuse)\n"
+ " - 無効なオプション -- 使い方を参照してください\n"
+
+ #, c-format
diff --git a/user/encfs/utimensat.patch b/user/encfs/utimensat.patch
new file mode 100644
index 000000000..93c5378e1
--- /dev/null
+++ b/user/encfs/utimensat.patch
@@ -0,0 +1,22 @@
+From 3d060783eea3790b8d6ea9920db8a0dc6e73d184 Mon Sep 17 00:00:00 2001
+From: Russell Yanofsky <russ@yanofsky.org>
+Date: Sun, 16 Sep 2018 15:41:11 -0400
+Subject: [PATCH] Fix setting nanosecond times
+
+utimensat function was never being called due to missing cmake define
+---
+ config.h.cmake | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/config.h.cmake b/config.h.cmake
+index 8548d706..32ddf2bb 100644
+--- a/config.h.cmake
++++ b/config.h.cmake
+@@ -6,6 +6,7 @@
+ #cmakedefine XATTR_LLIST
+
+ #cmakedefine HAVE_LCHMOD
++#cmakedefine HAVE_UTIMENSAT
+ #cmakedefine HAVE_FDATASYNC
+
+ #cmakedefine HAVE_DIRENT_D_TYPE
diff --git a/user/enchant/APKBUILD b/user/enchant/APKBUILD
index 57b0bf6c1..fab725135 100644
--- a/user/enchant/APKBUILD
+++ b/user/enchant/APKBUILD
@@ -1,8 +1,8 @@
# Maintainer:
pkgname=enchant
-pkgver=2.2.3
+pkgver=2.2.12
pkgrel=0
-pkgdesc="A wrapper library for generic spell checking"
+pkgdesc="Generic library for spell checking"
url="https://abiword.github.io/enchant/"
arch="all"
options="!check" # Requires dictionary that it can't find
@@ -30,4 +30,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="abde9d6fec25edff694570455fd4c6e8e2e2c41a6b133bbb31a344761137a354cc1c655e53374cf712bf311c3732dc721e9ffd2dc933d78ec8ccf224350635d6 enchant-2.2.3.tar.gz"
+sha512sums="ac284ed9649b11a13ff529db68cef8da829b5ff1c46ccfff36e5770fcd762055c1a75f6afbf1d2cdb00c3d8ae1cf7f336d1ff794de8f430dc2e89bb805525211 enchant-2.2.12.tar.gz"
diff --git a/user/encodings/APKBUILD b/user/encodings/APKBUILD
index d5c5adbea..d1b03e036 100644
--- a/user/encodings/APKBUILD
+++ b/user/encodings/APKBUILD
@@ -1,23 +1,17 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=encodings
-pkgver=1.0.4
-pkgrel=3
+pkgver=1.1.0
+pkgrel=0
pkgdesc="Font encoding files for X11"
url="https://www.X.Org/"
arch="noarch"
license="Public-Domain"
depends=""
makedepends="cmd:gzip mkfontscale util-macros"
-source="https://www.X.Org/releases/individual/font/encodings-$pkgver.tar.bz2"
-
-prepare() {
- cd "$builddir"
- update_config_sub
- default_prepare
-}
+subpackages=""
+source="https://www.X.Org/releases/individual/font/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +20,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="838d1c9489e9880bf1982dc14d34a48b624b7bc2c0fffbf28e2c24e1546b0602357ca31afef100053481d6a18e357085ef74ac7a82261daa1ac1398bc1e05d17 encodings-1.0.4.tar.bz2"
+sha512sums="ae912e120847954f5756193cc8860f50ada6c79bb3ba44f7f0cd1913b13aeed7885e140282cb47989a93fae0a0e8cedebe9a2420f65b1936b40192dc7d208427 encodings-1.1.0.tar.xz"
diff --git a/user/engrampa/APKBUILD b/user/engrampa/APKBUILD
index e2e84c8b6..836eb595c 100644
--- a/user/engrampa/APKBUILD
+++ b/user/engrampa/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=engrampa
-pkgver=1.22.0
+pkgver=1.26.1
pkgrel=0
pkgdesc="Archive manager for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -9,12 +9,12 @@ arch="all"
license="GPL-2.0+ AND LGPL-2.0+"
depends=""
makedepends="caja-dev file-dev gtk+3.0-dev intltool itstool json-glib-dev
- libsm-dev libxml2-utils"
+ libsm-dev libxml2-utils wayland-protocols"
subpackages="$pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/engrampa-$pkgver.tar.xz"
build() {
- cd "$builddir"
+ rm -r help/ja
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,13 +27,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="7b4c3b85184c1530ec72eba174ee571cc14490c88f5fef1232acd4197f1020107f5172d6d4271753f9f6fcfadcf049273095b3dfbcef6fdd25a51ad8d2e17382 engrampa-1.22.0.tar.xz"
+sha512sums="6e3e59503d3d55df3eddc63f5f8f67c80a84b2b602801f9bcbaf4e38b6e991fffaa879e1cd44c1173b5c11096587122438bda51401c2694654c99b87a52b9f5e engrampa-1.26.1.tar.xz"
diff --git a/user/eom/APKBUILD b/user/eom/APKBUILD
index f6479a1f6..45856d598 100644
--- a/user/eom/APKBUILD
+++ b/user/eom/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=eom
-pkgver=1.22.0
+pkgver=1.26.1
pkgrel=0
pkgdesc="Image viewer for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -10,12 +10,16 @@ license="GPL-2.0+ AND LGPL-2.0+ AND GPL-2.0-only"
depends=""
makedepends="gobject-introspection-dev gtk+3.0-dev intltool itstool
mate-desktop-dev libjpeg-turbo-dev libexif-dev libpeas-dev librsvg-dev
- libxml2-dev libxml2-utils"
+ libxml2-dev libxml2-utils wayland-protocols"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/eom-$pkgver.tar.xz"
+prepare() {
+ default_prepare
+ rm -r help/ja
+}
+
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,13 +31,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="1e086d1e2a0adc02978ffb45a4636e9b614a52d53a7a821af4050029f3fa3a774c29c2d43b5f2e0c58a100311eccc34e9424caf44e7e2139b4fa8d695b77cea0 eom-1.22.0.tar.xz"
+sha512sums="263eb6a843577f3ba399fa27b6a9087246053dffd963090933f6bb11b762e1049fdc7b0fd52a6987f40fb57be76d68f6964413a0c12437fb00b8766dc17b7648 eom-1.26.1.tar.xz"
diff --git a/user/erl-rebar3/APKBUILD b/user/erl-rebar3/APKBUILD
new file mode 100644
index 000000000..437ca4783
--- /dev/null
+++ b/user/erl-rebar3/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Alyx Wolcott <alyx@leuhta.com>
+# Maintainer: Alyx Wolcott <alyx@leuhta.com>
+pkgname=erl-rebar3
+pkgver=3.23.0
+pkgrel=0
+pkgdesc="Erlang build tool"
+url="https://www.rebar3.org/"
+arch="noarch"
+options="!tracedeps"
+license="Apache-2.0"
+depends="erlang"
+makedepends="erlang-dev"
+subpackages="$pkgname-doc"
+source="$pkgname-$pkgver.tar.gz::https://codeload.github.com/erlang/rebar3/tar.gz/$pkgver"
+builddir="$srcdir/rebar3-$pkgver"
+
+build() {
+ ./bootstrap
+}
+
+check() {
+ ./rebar3 ct
+}
+
+package() {
+ install -d -m755 $pkgdir/usr/bin/
+ install -m755 ./rebar3 $pkgdir/usr/bin/
+ gzip -c ./manpages/rebar3.1 > ./manpages/rebar3.1.gz
+ install -d -m755 $pkgdir/usr/share/man/man1/
+ install -m644 ./manpages/rebar3.1.gz $pkgdir/usr/share/man/man1/
+}
+
+sha512sums="4da1db8ed830c59fb322c1a652c2efe28d54e09ad74d12a87381ea7a7f13965b91815f383221831fbc14e6deed1a75db1039164f7df128a977d5b64048540cc3 erl-rebar3-3.23.0.tar.gz"
diff --git a/user/erlang/APKBUILD b/user/erlang/APKBUILD
new file mode 100644
index 000000000..31778994d
--- /dev/null
+++ b/user/erlang/APKBUILD
@@ -0,0 +1,49 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=erlang
+pkgver=27.0
+pkgrel=0
+pkgdesc="Soft real-time system programming language"
+url="https://www.erlang.org/"
+arch="all"
+license="Apache-2.0"
+depends=""
+makedepends="flex libxml2-utils libxslt-dev ncurses-dev openssl-dev perl
+ unixodbc-dev"
+subpackages="$pkgname-dev"
+source="erlang-$pkgver.tar.gz::https://github.com/erlang/otp/archive/OTP-$pkgver.tar.gz"
+builddir="$srcdir/otp-OTP-$pkgver"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --enable-shared-zlib \
+ --enable-ssl=dynamic-ssl-lib \
+ --enable-threads \
+ --disable-hipe
+ make
+}
+
+check() {
+ export ERL_TOP=$builddir
+
+ make release_tests
+
+ for _header in erl_fixed_size_int_types.h \
+ ${CHOST}/erl_int_sizes_config.h; do
+ cp erts/include/$_header erts/emulator/beam/
+ done
+ cd release/tests/test_server
+ $ERL_TOP/bin/erl -s ts install -s ts smoke_test batch -s init stop
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="16945c50c09caad9aac6808470ea2a0e282713f23e54cd4ad60510b114811b5deac427acb36cc8049443b4e3c3302c40b02c696cf3f2028f8bd3e836c8c48ea9 erlang-27.0.tar.gz"
diff --git a/user/ers-symbols/APKBUILD b/user/ers-symbols/APKBUILD
index 652acc95f..7cf4173e6 100644
--- a/user/ers-symbols/APKBUILD
+++ b/user/ers-symbols/APKBUILD
@@ -15,8 +15,7 @@ source="https://www.fgdc.gov/HSWG/symbol_downloads/ers_v220.zip"
builddir="$srcdir"/ersSymbolsVersion0202/ersV2sym
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF *.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF "$builddir"/*.ttf
}
sha512sums="f34b11f13df250d85758c1980f0782033d2ed6874980d51a3b225ca348d0cf8f722e28fab9f9ffc81720ba637928dfa126eb7b1e8227743fb58bb18960407717 ers_v220.zip"
diff --git a/user/essays1743/APKBUILD b/user/essays1743/APKBUILD
index 930050ba1..0c0ce7654 100644
--- a/user/essays1743/APKBUILD
+++ b/user/essays1743/APKBUILD
@@ -15,7 +15,6 @@ source="https://www.thibault.org/fonts/essays/essays1743-$pkgver-1.ttc"
builddir="$srcdir/"
package() {
- cd "$builddir"
install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ essays1743-$pkgver-1.ttc
}
diff --git a/user/ethtool/APKBUILD b/user/ethtool/APKBUILD
index 8d4823e3d..984066d58 100644
--- a/user/ethtool/APKBUILD
+++ b/user/ethtool/APKBUILD
@@ -1,18 +1,18 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=ethtool
-pkgver=4.18
+pkgver=5.4
pkgrel=0
pkgdesc="Utility for controlling network drivers and hardware"
url="https://mirrors.edge.kernel.org/pub/software/network/ethtool/"
arch="all"
license="GPL-2.0-only AND GPL-2.0+"
+depends=""
makedepends="linux-headers"
-subpackages="$pkgname-doc"
+subpackages="$pkgname-doc $pkgname-bash-completion:bashcomp:noarch"
source="https://www.kernel.org/pub/software/network/ethtool/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -24,13 +24,20 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e77f9967be4634955640d9dccbc539455d333bcbad61326617dffea32cfd13a72a7dda4087caf6fff41b49c9ce476435cc1310e131705d0ad402685e10b4fb0e ethtool-4.18.tar.xz"
+bashcomp() {
+ pkgdesc="Bash completions for $pkgname"
+ depends=""
+ install_if="$pkgname=$pkgver-r$pkgrel bash-completion"
+
+ mkdir -p "$subpkgdir"/usr/share/
+ mv "$pkgdir"/usr/share/bash-completion/ "$subpkgdir"/usr/share/
+}
+
+sha512sums="c7bfe7eae2ba207d710716274e9f5ae275c57d0bebc0a9acb95677125e64f1b42ef610032011fb59894aab46973988bad40fddbc5ccc238893e7da66f913255b ethtool-5.4.tar.xz"
diff --git a/user/eudev/APKBUILD b/user/eudev/APKBUILD
index 5b9aa2526..86a8e30f8 100644
--- a/user/eudev/APKBUILD
+++ b/user/eudev/APKBUILD
@@ -1,22 +1,21 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
-# Maintainer:
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=eudev
-pkgver=3.2.7
-pkgrel=0
+pkgver=3.2.9
+pkgrel=1
pkgdesc="OpenRC compatible fork of systemd-udev"
url="https://wiki.gentoo.org/wiki/Project:Eudev"
arch="all"
options="!checkroot"
license="GPL-2.0-only"
depends=""
-depends_dev=""
-replaces="udev udev-init-scripts"
-provides="udev=176"
makedepends="gperf glib-dev linux-headers kmod-dev gobject-introspection-dev
util-linux-dev"
checkdepends="tree xz"
subpackages="$pkgname-dev $pkgname-doc $pkgname-libs $pkgname-openrc
$pkgname-netifnames::noarch"
+provides="udev=176"
+replaces="udev udev-init-scripts"
source="http://dev.gentoo.org/~blueness/$pkgname/$pkgname-$pkgver.tar.gz
default-rules.patch
load-fbcon.patch
@@ -29,10 +28,8 @@ source="http://dev.gentoo.org/~blueness/$pkgname/$pkgname-$pkgver.tar.gz
udev-settle.confd
udev-trigger.confd
"
-builddir="$srcdir/$pkgname-$pkgver"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -50,17 +47,13 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
-
make DESTDIR="$pkgdir" sharepkgconfigdir=/usr/lib/pkgconfig \
install
- local i
for i in udev udev-settle udev-trigger; do
install -Dm755 "$srcdir"/$i.initd \
"$pkgdir"/etc/init.d/$i
@@ -74,11 +67,6 @@ package() {
"$pkgdir"/sbin/setup-udev
}
-dev() {
- replaces="udev-dev"
- default_dev
-}
-
libs() {
pkgdesc="Dynamic library to access udev device information"
replaces="libudev"
@@ -102,9 +90,20 @@ netifnames() {
openrc() {
replaces="udev-init-scripts-openrc"
default_openrc
+ install -d "$subpkgdir"/usr/share/openrc/runlevels/sysinit
+ install -d "$subpkgdir"/etc/runlevels/sysinit
+ # https://bts.adelielinux.org/show_bug.cgi?id=51
+ # if eudev is installed, it should be running in the sysinit runlevel
+ ln -s /etc/init.d/udev \
+ "$subpkgdir"/usr/share/openrc/runlevels/sysinit/udev
+ ln -s /etc/init.d/udev "$subpkgdir"/etc/runlevels/sysinit/udev
+ ln -s /etc/init.d/udev-trigger \
+ "$subpkgdir"/usr/share/openrc/runlevels/sysinit/udev-trigger
+ ln -s /etc/init.d/udev-trigger \
+ "$subpkgdir"/etc/runlevels/sysinit/udev-trigger
}
-sha512sums="e6c8ec86ae434c967f6a568fa0b281229bb87be7e3fec025dc3e0225de7843ffaa5dd65bdeffefbc91e9e2911aa3de9df84c76148fe8863ff60fba4c88653c40 eudev-3.2.7.tar.gz
+sha512sums="09e49fff9848e72507ef14b9d4cfab2d1443f16d5b3d54d2b0e4f6b04c471ca41f09200cb8772e9f850f0dc4a574a7ec7eede7ce11cbabda65e210a89287531f eudev-3.2.9.tar.gz
683e3c26ca4f058303f8db7d4977e436d728386ee6866719c4f11ff31db27572d3f486f51d3173310e1ec2cf995fa4c396f2415bdf45dabdd80e6e55e798a314 default-rules.patch
ff5928fd555e095d9f3234dd004ac4c5925405d308777e9b018e8e03112cd109935b51d75a3bc4a2a1018eb486e8a5e5ef6ee978860002a8fff93b116e9721f5 load-fbcon.patch
8ef1b911843ab13acb1c1b9b7a0a5cd76659f395c3db9e579429556f23eacebb414507dc0231e2455e7589bc70054fa1e6b6dd93dd833f7101c0da0597aabf88 udev-postmount.initd
diff --git a/user/evince/APKBUILD b/user/evince/APKBUILD
index 9f8ba5d66..8d6368a9b 100644
--- a/user/evince/APKBUILD
+++ b/user/evince/APKBUILD
@@ -1,23 +1,26 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=evince
-pkgver=3.32.0
+pkgver=3.36.7
pkgrel=0
pkgdesc="GNOME document viewer"
url="https://wiki.gnome.org/Apps/Evince"
arch="all"
license="GPL-2.0+ AND MIT AND BSD-3-Clause AND LGPL-2.0+ AND X11 AND LGPL-3.0-only AND Public-Domain AND LGPL-2.1+"
-depends="gst-plugins-base gst-plugins-good"
+depends="gsettings-desktop-schemas gst-plugins-base gst-plugins-good"
makedepends="djvulibre-dev glib-dev gobject-introspection-dev
gsettings-desktop-schemas-dev gstreamer-dev gst-plugins-base-dev
gtk+3.0-dev itstool libarchive-dev libexecinfo-dev libgxps-dev
libsecret-dev libspectre-dev libxml2-dev libxml2-utils poppler-dev
tiff-dev zlib-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://ftp.gnome.org/pub/gnome/sources/evince/3.32/evince-$pkgver.tar.xz"
+source="https://ftp.gnome.org/pub/gnome/sources/evince/${pkgver%.*}/evince-$pkgver.tar.xz"
+
+# secfixes:
+# 3.32.0-r2:
+# - CVE-2019-11459
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,49 +32,15 @@ build() {
--disable-nautilus \
--enable-introspection \
--enable-ps
-
- # our msgfmt(1) can't do --desktop
- cp data/org.gnome.Evince.desktop.in data/org.gnome.Evince.desktop
- cp data/org.gnome.Evince-previewer.desktop.in \
- data/org.gnome.Evince-previewer.desktop
- cp backend/pdf/evince-pdfdocument.metainfo.xml.in \
- backend/pdf/evince-pdfdocument.metainfo.xml
- cp backend/pdf/pdfdocument.evince-backend.desktop.in \
- backend/pdf/pdfdocument.evince-backend
- cp backend/djvu/evince-djvudocument.metainfo.xml.in \
- backend/djvu/evince-djvudocument.metainfo.xml
- cp backend/djvu/djvudocument.evince-backend.desktop.in \
- backend/djvu/djvudocument.evince-backend
- cp backend/tiff/evince-tiffdocument.metainfo.xml.in \
- backend/tiff/evince-tiffdocument.metainfo.xml
- cp backend/tiff/tiffdocument.evince-backend.desktop.in \
- backend/tiff/tiffdocument.evince-backend
- cp backend/comics/evince-comicsdocument.metainfo.xml.in \
- backend/comics/evince-comicsdocument.metainfo.xml
- cp backend/comics/comicsdocument.evince-backend.desktop.in \
- backend/comics/comicsdocument.evince-backend
- cp backend/xps/evince-xpsdocument.metainfo.xml.in \
- backend/xps/evince-xpsdocument.metainfo.xml
- cp backend/xps/xpsdocument.evince-backend.desktop.in \
- backend/xps/xpsdocument.evince-backend
- cp backend/ps/evince-psdocument.metainfo.xml.in \
- backend/ps/evince-psdocument.metainfo.xml
- cp backend/ps/psdocument.evince-backend.desktop.in \
- backend/ps/psdocument.evince-backend
- cp org.gnome.Evince.appdata.xml.in org.gnome.Evince.appdata.xml
-
- # we now return you to your regularly scheduled build
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="565298a200d9ae2f6b4cb53c3cba0d0d0e4cfbef60e4145bfb9c82a5682947ceb2371e52c27179cd69a238cd387bcfd744d3c55df814b6347f07781aec3ea658 evince-3.32.0.tar.xz"
+sha512sums="dacc26d2d75c3dcadceb0a35c995ae3501bd91e84632cdf87decd359350e74032444707ea152e24c01fb57fe0ef2a426813a33919833cefdeb8699f8c642d910 evince-3.36.7.tar.xz"
diff --git a/user/exfat-utils/APKBUILD b/user/exfat-utils/APKBUILD
index 552d1bfe6..cfdabc42c 100644
--- a/user/exfat-utils/APKBUILD
+++ b/user/exfat-utils/APKBUILD
@@ -13,7 +13,6 @@ subpackages="$pkgname-doc"
source="https://github.com/relan/exfat/releases/download/v$pkgver/exfat-utils-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,12 +24,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/exiv2/0000-pthread-init-fix.patch b/user/exiv2/0000-pthread-init-fix.patch
deleted file mode 100644
index ac69b14c1..000000000
--- a/user/exiv2/0000-pthread-init-fix.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From 620ef04e96f4c0d0894d976fc361588b6526a116 Mon Sep 17 00:00:00 2001
-From: clanmills <robin@clanmills.com>
-Date: Tue, 20 Jun 2017 20:41:30 +0100
-Subject: [PATCH] https://github.com/Exiv2/exiv2/issues/9 Fix submitted.
-
----
- src/actions.cpp | 8 ++++++--
- 1 file changed, 6 insertions(+), 2 deletions(-)
-
-diff --git a/src/actions.cpp b/src/actions.cpp
-index 0ebe8505..17444c5b 100644
---- a/src/actions.cpp
-+++ b/src/actions.cpp
-@@ -2045,9 +2045,13 @@ namespace {
- #else
- /* Unix/Linux/Cygwin/MacOSX */
- #include <pthread.h>
-+ /* This is the critical section object (statically allocated). */
- #if defined(__APPLE__)
-- /* This is the critical section object (statically allocated). */
-- static pthread_mutex_t cs = PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
-+ #if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER)
-+ static pthread_mutex_t cs = PTHREAD_RECURSIVE_MUTEX_INITIALIZER;
-+ #else
-+ static pthread_mutex_t cs = PTHREAD_MUTEX_INITIALIZER;
-+ #endif
- #else
- static pthread_mutex_t cs = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
- #endif
diff --git a/user/exiv2/0001-Amend-fix-for-9-to-apply-to-other-Unix-systems.patch b/user/exiv2/0001-Amend-fix-for-9-to-apply-to-other-Unix-systems.patch
deleted file mode 100644
index 86412532d..000000000
--- a/user/exiv2/0001-Amend-fix-for-9-to-apply-to-other-Unix-systems.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From d775683f579543c35463ab2a8d9425da10d2f016 Mon Sep 17 00:00:00 2001
-From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
-Date: Wed, 4 Oct 2017 00:15:30 -0500
-Subject: [PATCH] Amend fix for #9 to apply to other Unix systems
-
-At least the musl libc on Linux has the same issue as Mac OS X: the
-PTHREAD_RECURSIVE_* static initialiser does not exist. This is a
-documented and purposeful omission:
-
-http://www.openwall.com/lists/musl/2017/02/20/3
-
-This commit uses similar logic to the Apple test on other Unixes.
----
- src/actions.cpp | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/src/actions.cpp b/src/actions.cpp
-index fe14de4..aa15ec7 100644
---- a/src/actions.cpp
-+++ b/src/actions.cpp
-@@ -2051,7 +2051,11 @@ namespace {
- static pthread_mutex_t cs = PTHREAD_MUTEX_INITIALIZER;
- #endif
- #else
-- static pthread_mutex_t cs = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
-+ #if defined(PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP)
-+ static pthread_mutex_t cs = PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP;
-+ #else
-+ static pthread_mutex_t cs = PTHREAD_MUTEX_INITIALIZER;
-+ #endif
- #endif
- #endif
-
---
-2.10.0
-
diff --git a/user/exiv2/APKBUILD b/user/exiv2/APKBUILD
index 7cf8693fe..7f8f5ea1e 100644
--- a/user/exiv2/APKBUILD
+++ b/user/exiv2/APKBUILD
@@ -1,47 +1,115 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=exiv2
-pkgver=0.26
-pkgrel=2
+pkgver=0.27.5
+pkgrel=0
pkgdesc="Exif, IPTC and XMP metadata library and tools"
url="https://www.exiv2.org/"
arch="all"
-options="!check" # No test suite.
license="GPL-2.0+"
depends=""
depends_dev="expat-dev zlib-dev"
-makedepends="$depends_dev bash"
+checkdepends="python3 libxml2 cmd:which"
+makedepends="$depends_dev bash cmake gtest gtest-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="http://www.exiv2.org/builds/exiv2-$pkgver-trunk.tar.gz
- 0000-pthread-init-fix.patch
- 0001-Amend-fix-for-9-to-apply-to-other-Unix-systems.patch
- CVE-2018-19535.patch
+source="https://github.com/Exiv2/exiv2/releases/download/v$pkgver/exiv2-$pkgver-Source.tar.gz
+ disable-icc-test.patch
+ musl-strerror.patch
"
-builddir="$srcdir"/exiv2-trunk
+builddir="$srcdir/$pkgname-$pkgver-Source"
# secfixes:
# 0.26-r2:
# - CVE-2018-19535
+# 0.27.1-r0:
+# - CVE-2017-9239
+# - CVE-2017-9953
+# - CVE-2017-11336
+# - CVE-2017-11337
+# - CVE-2017-11338
+# - CVE-2017-11339
+# - CVE-2017-11340
+# - CVE-2017-11553
+# - CVE-2017-11591
+# - CVE-2017-11592
+# - CVE-2017-11683
+# - CVE-2017-12955
+# - CVE-2017-12956
+# - CVE-2017-12957
+# - CVE-2017-14857
+# - CVE-2017-14858
+# - CVE-2017-14859
+# - CVE-2017-14860
+# - CVE-2017-14861
+# - CVE-2017-14862
+# - CVE-2017-14863
+# - CVE-2017-14864
+# - CVE-2017-14865
+# - CVE-2017-14866
+# - CVE-2017-17669
+# - CVE-2017-17722
+# - CVE-2017-17723
+# - CVE-2017-17724
+# - CVE-2017-17725
+# - CVE-2017-18005
+# - CVE-2017-1000126
+# - CVE-2017-1000127
+# - CVE-2017-1000128
+# - CVE-2018-4868
+# - CVE-2018-5772
+# - CVE-2018-8976
+# - CVE-2018-8977
+# - CVE-2018-9145
+# - CVE-2018-10772
+# - CVE-2018-10780
+# - CVE-2018-10958
+# - CVE-2018-10998
+# - CVE-2018-10999
+# - CVE-2018-11037
+# - CVE-2018-11531
+# - CVE-2018-12264
+# - CVE-2018-12265
+# - CVE-2018-14046
+# - CVE-2018-14338
+# - CVE-2018-16336
+# - CVE-2018-17229
+# - CVE-2018-17230
+# - CVE-2018-17282
+# - CVE-2018-17581
+# - CVE-2018-19107
+# - CVE-2018-19108
+# 0.27.2-r0:
+# - CVE-2019-13108
+# - CVE-2019-13109
+# - CVE-2019-13110
+# - CVE-2019-13111
+# - CVE-2019-13112
+# - CVE-2019-13113
+# - CVE-2019-13114
+# 0.27.2-r1:
+# - CVE-2019-17402
+# 0.27.2-r2:
+# - CVE-2019-20421
-prepare() {
- cd "$builddir"
- default_prepare
- update_config_sub
-}
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr
- make
+ cmake -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo -Bbuild \
+ -DEXIV2_BUILD_UNIT_TESTS=On
+ make -C build
+}
+
+check() {
+ # addition overflow doesn't occur on 64-bit platforms
+ rm -f tests/bugfixes/github/test_CVE_2018_12265.py
+ # endian-dependent JP2 stuff
+ rm -f tests/bugfixes/github/test_issue_1522.py
+ make -C build tests
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="d1e9cab886e279b045768dd9ec781f07d2d36d573119403d0b76dc571442173aae6972f86ec55c3ea53fb3ee9ca3571eb8fd63a2a6643a970852813e88634a86 exiv2-0.26-trunk.tar.gz
-9721d359708c385be7c86a8f8a63de43b05b2578a29b4339861e82873aa81a98a7ee7252847b6c55529341187d40f552c488589b416fd9d1e27418925929c018 0000-pthread-init-fix.patch
-485bd340169f69a3ce356e59e9138250cc14592f4477bb73827c799fe465535954469634fc58a1856f690f0e0b4171cba6fdd3391d43c0efc5e89652b93eb3ce 0001-Amend-fix-for-9-to-apply-to-other-Unix-systems.patch
-ac145a9b4df21e7f5fdd3099e6ae4c1e12ae2cdccc455d0262c5d38b8e07ce6437036a19264bd04b1cb1fffd01d89672044ca82fddd5e71dcd0d84d48356ab12 CVE-2018-19535.patch"
+sha512sums="0f2d2dfbc976052a428dfeb597225d3ea3c725f584d05b99316bd4aa9cbf0ba5e1e37bcde71f9041975cf003b4fdb578c559adb144268d784bfd64494f451491 exiv2-0.27.5-Source.tar.gz
+2fffbcd214db0e917479b970937769b66eb52cd41c34b3c676a17fa7ca7e327b61014c160d56257981459040ce7ab4cf2516db09b4095473e002a75101de6631 disable-icc-test.patch
+d148225d634dbdaeceb8fe57f4752a270c428bf0d05900322f7783f0c874a375198f96697c0aa3c4f972346aca44db3c08f15bba2eb40a2247f174dee8a1d150 musl-strerror.patch"
diff --git a/user/exiv2/CVE-2018-19535.patch b/user/exiv2/CVE-2018-19535.patch
deleted file mode 100644
index ba9355012..000000000
--- a/user/exiv2/CVE-2018-19535.patch
+++ /dev/null
@@ -1,239 +0,0 @@
-From 03173751b4d7053d6ddf52a15904e8f751f78f56 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Luis=20D=C3=ADaz=20M=C3=A1s?= <piponazo@gmail.com>
-Date: Sun, 2 Sep 2018 14:39:52 +0200
-Subject: [PATCH 2/5] Fix bug in PngChunk::readRawProfile
-
-- Now it takes into account text.size_ when searching for a newline
-char.
----
- src/pngchunk.cpp | 12 ++++++++++--
- 1 file changed, 10 insertions(+), 2 deletions(-)
-
-diff --git a/src/pngchunk.cpp b/src/pngchunk.cpp
-index 58281b3ff..755872c94 100644
---- a/src/pngchunk.cpp
-+++ b/src/pngchunk.cpp
-@@ -629,11 +629,19 @@ namespace Exiv2 {
-
-
- sp = (char*)text.pData_+1;
-+ int pointerPos = 1;
-
- // Look for newline
--
-- while (*sp != '\n')
-+ while (*sp != '\n' && pointerPos < (text.size_ - 1))
-+ {
- sp++;
-+ pointerPos++;
-+ }
-+
-+ if (pointerPos == (text.size_ - 1))
-+ {
-+ return DataBuf();
-+ }
-
- // Look for length
-
-
-From cf3ba049a2792ec2a4a877e343f5dd9654da53dc Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Luis=20D=C3=ADaz=20M=C3=A1s?= <piponazo@gmail.com>
-Date: Mon, 3 Sep 2018 08:51:08 +0200
-Subject: [PATCH 3/5] Fix more issues in PngChunk::readRawProfile
-
----
- src/pngchunk.cpp | 36 +++++++++++++-----------
- 1 file changed, 20 insertions(+), 16 deletions(-)
-
-diff --git a/src/pngchunk.cpp b/src/pngchunk.cpp
-index 755872c94..9b3faf1aa 100644
---- a/src/pngchunk.cpp
-+++ b/src/pngchunk.cpp
-@@ -606,11 +606,6 @@ namespace Exiv2 {
- DataBuf PngChunk::readRawProfile(const DataBuf& text,bool iTXt)
- {
- DataBuf info;
-- register long i;
-- register unsigned char *dp;
-- const char *sp;
-- unsigned int nibbles;
-- long length;
- unsigned char unhex[103]={0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,
- 0,0,0,0,0,0,0,0,0,1, 2,3,4,5,6,7,8,9,0,0,
-@@ -627,8 +622,7 @@ namespace Exiv2 {
- return info;
- }
-
--
-- sp = (char*)text.pData_+1;
-+ const char *sp = (char*)text.pData_+1;
- int pointerPos = 1;
-
- // Look for newline
-@@ -638,20 +632,30 @@ namespace Exiv2 {
- pointerPos++;
- }
-
-+ // Look for length
-+ while ((*sp == '\0' || *sp == ' ' || *sp == '\n') && pointerPos < (text.size_ - 1))
-+ {
-+ sp++;
-+ pointerPos++;
-+ }
-+
- if (pointerPos == (text.size_ - 1))
- {
- return DataBuf();
- }
-
-- // Look for length
-+ long length = (long) atol(sp);
-
-- while (*sp == '\0' || *sp == ' ' || *sp == '\n')
-+ while (*sp != ' ' && *sp != '\n' && pointerPos < (text.size_ - 1))
-+ {
- sp++;
-+ pointerPos++;
-+ }
-
-- length = (long) atol(sp);
--
-- while (*sp != ' ' && *sp != '\n')
-- sp++;
-+ if (pointerPos == (text.size_ - 1))
-+ {
-+ return DataBuf();
-+ }
-
- // Allocate space
-
-@@ -674,10 +678,10 @@ namespace Exiv2 {
-
- // Copy profile, skipping white space and column 1 "=" signs
-
-- dp = (unsigned char*)info.pData_;
-- nibbles = length * 2;
-+ unsigned char *dp = (unsigned char*)info.pData_;
-+ unsigned int nibbles = length * 2;
-
-- for (i = 0; i < (long) nibbles; i++)
-+ for (long i = 0; i < (long) nibbles; i++)
- {
- while (*sp < '0' || (*sp > '9' && *sp < 'a') || *sp > 'f')
- {
-
-From 8b480bc5b2cc2abb8cf6fe4e16c24e58916464d2 Mon Sep 17 00:00:00 2001
-From: Robin Mills <robin@clanmills.com>
-Date: Mon, 10 Sep 2018 20:54:53 +0200
-Subject: [PATCH 4/5] Fixes in PngChunk::readRawProfile
-
----
- src/pngchunk.cpp | 55 ++++++++++++++++++++++----------------------
- 1 file changed, 27 insertions(+), 28 deletions(-)
-
-diff --git a/src/pngchunk.cpp b/src/pngchunk.cpp
-index 9b3faf1aa..f81b560aa 100644
---- a/src/pngchunk.cpp
-+++ b/src/pngchunk.cpp
-@@ -607,11 +607,11 @@ namespace Exiv2 {
- {
- DataBuf info;
- unsigned char unhex[103]={0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,
-- 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,
-- 0,0,0,0,0,0,0,0,0,1, 2,3,4,5,6,7,8,9,0,0,
-- 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,
-- 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,10,11,12,
-- 13,14,15};
-+ 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,
-+ 0,0,0,0,0,0,0,0,0,1, 2,3,4,5,6,7,8,9,0,0,
-+ 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,
-+ 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,10,11,12,
-+ 13,14,15};
- if (text.size_ == 0) {
- return DataBuf();
- }
-@@ -622,52 +622,51 @@ namespace Exiv2 {
- return info;
- }
-
-- const char *sp = (char*)text.pData_+1;
-- int pointerPos = 1;
-+ const char *sp = (char*) text.pData_+1; // current byte (space pointer)
-+ const char *eot = (char*) text.pData_+text.size_; // end of text
-
- // Look for newline
-- while (*sp != '\n' && pointerPos < (text.size_ - 1))
-+ while (*sp != '\n' && sp < eot )
- {
- sp++;
-- pointerPos++;
-+ if ( sp == eot )
-+ {
-+ return DataBuf();
-+ }
- }
-+ sp++ ; // step over '\n'
-
- // Look for length
-- while ((*sp == '\0' || *sp == ' ' || *sp == '\n') && pointerPos < (text.size_ - 1))
-+ while ( (*sp == '\0' || *sp == ' ' || *sp == '\n') && sp < eot )
- {
- sp++;
-- pointerPos++;
-- }
--
-- if (pointerPos == (text.size_ - 1))
-- {
-- return DataBuf();
-+ if (sp == eot )
-+ {
-+ return DataBuf();
-+ }
- }
-
-- long length = (long) atol(sp);
--
-- while (*sp != ' ' && *sp != '\n' && pointerPos < (text.size_ - 1))
-+ const char* startOfLength = sp;
-+ while ( ('0' <= *sp && *sp <= '9') && sp < eot)
- {
- sp++;
-- pointerPos++;
-+ if (sp == eot )
-+ {
-+ return DataBuf();
-+ }
- }
-+ sp++ ; // step over '\n'
-
-- if (pointerPos == (text.size_ - 1))
-- {
-- return DataBuf();
-- }
-+ long length = (long) atol(startOfLength);
-
- // Allocate space
--
- if (length == 0)
- {
- #ifdef DEBUG
- std::cerr << "Exiv2::PngChunk::readRawProfile: Unable To Copy Raw Profile: invalid profile length\n";
- #endif
- }
--
- info.alloc(length);
--
- if (info.size_ != length)
- {
- #ifdef DEBUG
-@@ -678,7 +677,7 @@ namespace Exiv2 {
-
- // Copy profile, skipping white space and column 1 "=" signs
-
-- unsigned char *dp = (unsigned char*)info.pData_;
-+ unsigned char *dp = (unsigned char*)info.pData_; // decode pointer
- unsigned int nibbles = length * 2;
-
- for (long i = 0; i < (long) nibbles; i++)
-
diff --git a/user/exiv2/disable-icc-test.patch b/user/exiv2/disable-icc-test.patch
new file mode 100644
index 000000000..3f2c39fd5
--- /dev/null
+++ b/user/exiv2/disable-icc-test.patch
@@ -0,0 +1,76 @@
+diff -ur a/tests/bash_tests/testcases.py b/tests/bash_tests/testcases.py
+--- a/tests/bash_tests/testcases.py 2022-02-05 18:26:24.330000000 +0000
++++ b/tests/bash_tests/testcases.py 2022-02-05 18:26:50.260000000 +0000
+@@ -440,72 +440,6 @@
+ BT.reportTest('geotag-test', out)
+
+
+- def icc_test(self):
+- # Test driver for exiv2.exe ICC support (-pS, -pC, -eC, -iC)
+-
+- def test1120(img):
+- # --comment and -dc clobbered by writing ICC/JPG
+- out = BT.Output()
+- if img == 'Reagan2.jp2':
+- return
+- if img == 'exiv2-bug1199.webp':
+- out += BT.Executer('exiv2 --comment abcdefg {img}', vars(), assert_returncode=[0, 1])
+- out += BT.Executer('exiv2 -pS {img}', vars())
+- out += ''
+- else:
+- out += BT.Executer('exiv2 --comment abcdefg {img}', vars())
+- out += BT.Executer('exiv2 -pS {img}', vars())
+- out += BT.Executer('exiv2 -pc {img}', vars())
+- out += BT.Executer('exiv2 -dc {img}', vars())
+- out += BT.Executer('exiv2 -pS {img}', vars())
+- return str(out) or None
+-
+- # num = 1074 # ICC Profile Support
+- out = BT.Output()
+- for img in ['Reagan.jpg'
+- ,'exiv2-bug1199.webp'
+- ,'ReaganLargePng.png'
+- ,'ReaganLargeJpg.jpg'
+- ,'Reagan2.jp2' # 1272 ReaganLargeTiff.tiff
+- ]:
+- stub = img.split('.')[0]
+- iccname = stub + '.icc'
+-
+- for i in ['large.icc', 'small.icc', img]:
+- BT.copyTestFile(i)
+-
+- out += BT.Executer('exiv2 -pS {img}', vars())
+- e = BT.Executer('exiv2 -pC {img}', vars(), compatible_output=False, decode_output=False)
+- BT.save(e.stdout, stub + '_1.icc')
+- out += BT.Executer('exiv2 -eC --force {img}', vars())
+- BT.mv(iccname, stub + '_2.icc')
+- out += test1120(img)
+-
+- BT.copyTestFile('large.icc', iccname)
+- out += BT.Executer('exiv2 -iC {img}', vars())
+- e = BT.Executer('exiv2 -pC {img}', vars(), compatible_output=False, decode_output=False)
+- BT.save(e.stdout, stub + '_large_1.icc')
+- out += BT.Executer('exiv2 -pS {img}', vars())
+- out += BT.Executer('exiv2 -eC --force {img}', vars())
+- BT.mv(iccname, stub + '_large_2.icc')
+- out += test1120(img)
+-
+- BT.copyTestFile('small.icc', iccname)
+- out += BT.Executer('exiv2 -iC {img}', vars())
+- e = BT.Executer('exiv2 -pC {img}', vars(), compatible_output=False, decode_output=False)
+- BT.save(e.stdout, stub + '_small_1.icc')
+- out += BT.Executer('exiv2 -pS {img}', vars())
+- out += BT.Executer('exiv2 -eC --force {img}', vars())
+- BT.mv(iccname, stub + '_small_2.icc')
+- out += test1120(img)
+-
+- for f in [stub, stub + '_small', stub + '_large']:
+- for i in [1, 2]:
+- out += BT.md5sum('{}_{}.icc'.format(f, i))
+-
+- BT.reportTest('icc-test', out)
+-
+-
+ def image_test(self):
+ test_files = ['table.jpg', 'smiley1.jpg', 'smiley2.jpg']
+ erase_test_files = [
diff --git a/user/exiv2/musl-strerror.patch b/user/exiv2/musl-strerror.patch
new file mode 100644
index 000000000..c425eaf8d
--- /dev/null
+++ b/user/exiv2/musl-strerror.patch
@@ -0,0 +1,20 @@
+--- exiv2-0.27.5-Source/unitTests/test_futils.cpp.old 2021-10-21 12:01:10.000000000 -0500
++++ exiv2-0.27.5-Source/unitTests/test_futils.cpp 2022-06-10 01:07:12.090519526 -0500
+@@ -53,7 +53,7 @@
+ #elif defined(__NetBSD__)
+ const char * expectedString = "Undefined error: 0 (errno = 0)";
+ #else
+- const char * expectedString = "Success (errno = 0)";
++ const char * expectedString = "No error information (errno = 0)";
+ #endif
+ std::remove(tmpFile.c_str());
+ ASSERT_STREQ(expectedString, strError().c_str());
+@@ -81,7 +81,7 @@
+ #elif defined(__NetBSD__)
+ const char * expectedString = "Unknown error: 9999 (errno = 9999)";
+ #else
+- const char * expectedString = "Unknown error 9999 (errno = 9999)";
++ const char * expectedString = "No error information (errno = 9999)";
+ #endif
+ ASSERT_STREQ(expectedString, strError().c_str());
+ }
diff --git a/user/exo/APKBUILD b/user/exo/APKBUILD
index 1752b8bbf..8e928d919 100644
--- a/user/exo/APKBUILD
+++ b/user/exo/APKBUILD
@@ -1,21 +1,21 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=exo
-pkgver=0.12.4
+pkgver=4.20.0
pkgrel=0
pkgdesc="Support library for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="LGPL-2.0+ AND GPL-2.0+"
-makedepends="intltool glib-dev gtk+2.0-dev gtk+3.0-dev libxfce4util-dev
- libxfce4ui-dev libice-dev"
+depends=""
+makedepends="intltool glib-dev gtk+3.0-dev
+ libxfce4util-dev>=${pkgver%.*} libxfce4ui-dev>=${pkgver%.*} libice-dev
+ wayland-protocols"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/xfce/exo/0.12/exo-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/xfce/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -26,13 +26,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="8f84258aeb5c1fcfe91e775af1e5fed02f36b3d18aa72d497cd05294d54f050d679628cdb4339219c67b203a8cc663704a240fc18e6a918cef363cf4d9b94783 exo-0.12.4.tar.bz2"
+sha512sums="7481f47bb0c8eb5cdc8d7db3e67c1cdaa81e3ef0833281b5380f3eab41e3c2f7112a22b37a3ce305a052b261444fd9f11c130150663deb1b4a220a998321284b exo-4.20.0.tar.bz2"
diff --git a/user/extra-cmake-modules/APKBUILD b/user/extra-cmake-modules/APKBUILD
index 40bff86ff..b35bcb3ea 100644
--- a/user/extra-cmake-modules/APKBUILD
+++ b/user/extra-cmake-modules/APKBUILD
@@ -1,44 +1,41 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=extra-cmake-modules
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="CMake modules needed for KDE development"
url="https://www.kde.org/"
-arch="all"
+arch="noarch"
+options="!dbg !check" # apparently tests can't be built in a git repo
license="BSD-3-Clause"
-options="!dbg"
depends=""
makedepends="cmake qt5-qtbase-dev qt5-qttools-dev qt5-qtdeclarative-dev
- qt5-qtquickcontrols"
-subpackages=""
+ qt5-qtquickcontrols py3-sphinx"
+subpackages="$pkgname-doc"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/extra-cmake-modules-$pkgver.tar.xz
- posix.patch"
+ posix.patch
+ "
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
- -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE \
- ctest -E '(relative_or_absolute_|KDEFetchTranslations|ECMToolchainAndroidTest|ECMPoQmToolsTest)'
+ ctest -E '(relative_or_absolute_|KDEFetchTranslations|ECMGeneratePkgConfigFile)'
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="2c592ab659dc2c1167111d394b976f7d008b9c3e8e18aea06001f4852f93d6a0e61c2ea5f6add2680e11f76da9f5f8c437afd350c5d3224cf1e9adba2dd765e1 extra-cmake-modules-5.54.0.tar.xz
-0af703a9d4696080bc52032d1d341e86fd142bef91f3c1afa9cf180e1cf2ff3bba2ea47fd36b8f52135f056a202c58a08e7c7525f671d6993839865ce6aef0f6 posix.patch"
+sha512sums="c76e27ded4d5108d756b5891c64cbfbaad8a944e2cc5ce3a1b56ef395bad9688e493a1d8a6e91c2910e156ff5ff018ed054a4b3825b093c877e6c445eb74179e extra-cmake-modules-5.94.0.tar.xz
+7787ce077da9e1d0ff082d19591739265d8d63c2a70c9c4f87836327154cd5221850cefefe9291712c121d5875c7442b4a276535f4214ac653dde692a82f398a posix.patch"
diff --git a/user/extra-cmake-modules/posix.patch b/user/extra-cmake-modules/posix.patch
index 4ed301d5e..aa381080f 100644
--- a/user/extra-cmake-modules/posix.patch
+++ b/user/extra-cmake-modules/posix.patch
@@ -17,7 +17,7 @@ diff --git a/kde-modules/KDECompilerSettings.cmake b/kde-modules/KDECompilerSett
index dfa29f7..f50911c 100644
--- a/kde-modules/KDECompilerSettings.cmake
+++ b/kde-modules/KDECompilerSettings.cmake
-@@ -140,6 +140,9 @@ if (UNIX)
+@@ -313,6 +313,9 @@ if (UNIX)
# implementation recognize it?
_kde_add_platform_definitions(-D_LARGEFILE64_SOURCE)
diff --git a/user/f2fs-tools/APKBUILD b/user/f2fs-tools/APKBUILD
new file mode 100644
index 000000000..59246c22e
--- /dev/null
+++ b/user/f2fs-tools/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: CyberLeo <cyberleo@cyberleo.net>
+# Maintainer: CyberLeo <cyberleo@cyberleo.net>
+pkgname=f2fs-tools
+pkgver=1.14.0
+pkgrel=0
+pkgdesc="Tools for the Flash-Friendly File System (F2FS)"
+url="https://git.kernel.org/cgit/linux/kernel/git/jaegeuk/f2fs-tools.git"
+arch="all"
+options="!check" # No test suite.
+license="GPL-2.0+ OR LGPL-2.1+"
+depends=""
+makedepends="automake autoconf bsd-compat-headers libtool util-linux-dev linux-headers"
+subpackages="$pkgname-doc $pkgname-dev $pkgname-libs"
+source="https://git.kernel.org/cgit/linux/kernel/git/jaegeuk/f2fs-tools.git/snapshot/$pkgname-$pkgver.tar.gz"
+
+#secfixes:
+# 1.14.0-r0:
+# - CVE-2020-6104
+# - CVE-2020-6105
+# - CVE-2020-6106
+# - CVE-2020-6107
+# - CVE-2020-6108
+
+prepare() {
+ default_prepare
+ ./autogen.sh
+}
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr
+ make
+}
+
+package() {
+ make install DESTDIR="$pkgdir"
+ install -D -m644 mkfs/f2fs_format_utils.h "$pkgdir"/usr/include/
+}
+
+sha512sums="951b74178f99722550e73f331be066f124f6ee6022710f6b47ae47390b978b08f12a7f2a268d82ca69a32bf440cd3ce3adddc8a4c49c32df83da87e7f659f98d f2fs-tools-1.14.0.tar.gz"
diff --git a/user/faad2/APKBUILD b/user/faad2/APKBUILD
index c76894b27..aec7e58ac 100644
--- a/user/faad2/APKBUILD
+++ b/user/faad2/APKBUILD
@@ -1,29 +1,64 @@
-# Maintainer:
+# Maintainer:
pkgname=faad2
-pkgver=2.8.8
-pkgrel=0
+pkgver=2.10.1_git20230904
+pkgrel=1
pkgdesc="ISO AAC audio decoder"
url="https://www.audiocoding.com/"
arch="all"
options="!check" # No test suite.
license="GPL-2.0+"
-subpackages="$pkgname-dev $pkgname-doc"
depends=""
-makedepends="autoconf automake libtool"
-source="https://downloads.sourceforge.net/sourceforge/faac/$pkgname-$pkgver.tar.gz"
+makedepends="cmake"
+subpackages="$pkgname-dev $pkgname-doc"
+#source="$pkgname-$pkgver.tar.gz::https://github.com/knik0/faad2/archive/$pkgver.tar.gz"
+source="https://distfiles.adelielinux.org/source/$pkgname-$pkgver.tar.gz
+ fix-x86-lrintf.patch
+ fix-ensure-libraries-versioned.patch
+ "
+
+# secfixes:
+# 2.8.8-r1:
+# - CVE-2018-19502
+# - CVE-2019-15296
+# 2.9.0-r0:
+# - CVE-2019-6956
+# - CVE-2018-19503
+# - CVE-2018-19504
+# - CVE-2018-20194
+# - CVE-2018-20195
+# - CVE-2018-20196
+# - CVE-2018-20197
+# - CVE-2018-20198
+# - CVE-2018-20199
+# - CVE-2018-20357
+# - CVE-2018-20358
+# - CVE-2018-20359
+# - CVE-2018-20360
+# - CVE-2018-20361
+# - CVE-2018-20362
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr
- make
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -Bbuild
+ make -C build
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
+}
+
+doc() {
+ default_doc
+ mkdir -p "$subpkgdir"/usr/share/doc
+ cp -r "$builddir"/docs \
+ "$subpkgdir"/usr/share/doc/$pkgname
}
-sha512sums="3275d292b2a9fe984842962f4d81202894bddd17033f7cd6df95466554cc968dfcbf2890ae8b1df37da0cd25d645cca0a687f07e39b9fc37dd004fd5956a82af faad2-2.8.8.tar.gz"
+sha512sums="5ec65a70ebbb5dbb5e0bffa47499f8bb9436c28ce9a8947e9cede92bbb2441117bac01216989888956e245589c9db572dad17cc47d47ae908709e4e57a7f84b9 faad2-2.10.1_git20230904.tar.gz
+2b83d5bf4d4136a4d53536cfd2f4d62174e3660f4a7f39bcedca516ae26a98f3b573db91fb689b20aa26a0d0968745944927c7898ea79bc7a5321971fe92a481 fix-x86-lrintf.patch
+b30727cd1b422a820b30747b3374815b5568a0554945d344aaa4e95502add5d956fed0d1aea451bd97ef704272c8c65c7ec33afe7cbea4b642f7991a135cdc93 fix-ensure-libraries-versioned.patch"
diff --git a/user/faad2/automake.patch b/user/faad2/automake.patch
deleted file mode 100644
index 809031eb0..000000000
--- a/user/faad2/automake.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./configure.in.orig 2012-12-31 10:42:26.394219312 +0000
-+++ ./configure.in 2012-12-31 10:42:43.294360781 +0000
-@@ -25,7 +25,7 @@
- AC_PROG_MAKE_SET
- AC_CHECK_PROGS(RPMBUILD, rpmbuild, rpm)
-
--AM_CONFIG_HEADER(config.h)
-+AC_CONFIG_HEADER(config.h)
-
- AC_ARG_WITH(xmms,[ --with-xmms compile XMMS-1 plugin],
- WITHXMMS=$withval, WITHXMMS=no)
diff --git a/user/faad2/fix-ensure-libraries-versioned.patch b/user/faad2/fix-ensure-libraries-versioned.patch
new file mode 100644
index 000000000..ae0150f46
--- /dev/null
+++ b/user/faad2/fix-ensure-libraries-versioned.patch
@@ -0,0 +1,50 @@
+From 3a593d3efc5cf1db5f4c8914768ea1ea70cbcde5 Mon Sep 17 00:00:00 2001
+From: Eugene Kliuchnikov <eustas.ru@gmail.com>
+Date: Fri, 13 Oct 2023 08:52:31 +0200
+Subject: [PATCH] Add vesion to linked libraries (#181)
+
+---
+ CMakeLists.txt | 20 ++++++++++++++++++--
+ 1 file changed, 18 insertions(+), 2 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 31270436..6b4d4d84 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -34,11 +34,20 @@ endif()
+
+ set(CAPTURE_PACKAGE_VERSION "[ \\t]*\"PACKAGE_VERSION\"[ \\t]*:[ \\t]\"(.*)\"")
+ file(STRINGS "properties.json" _faad_version_line REGEX "${CAPTURE_PACKAGE_VERSION}")
+-message("${_faad_version_line}")
+ string(REGEX REPLACE "${CAPTURE_PACKAGE_VERSION}" "\\1" FAAD_VERSION "${_faad_version_line}")
++string(REPLACE "\." ";" FAAD_VERSION_PARTS ${FAAD_VERSION})
++list(GET FAAD_VERSION_PARTS 0 FAAD_VERSION_MAJOR)
++list(GET FAAD_VERSION_PARTS 1 FAAD_VERSION_MINOR)
++list(GET FAAD_VERSION_PARTS 2 FAAD_VERSION_PATCH)
++# Semantic -> library version
++# NB(eustas): likely that will be always OK; if not, we could read "overrides" from properties.json
++math(EXPR FAAD_ABI_VERSION_CURRENT "${FAAD_VERSION_MAJOR} + ${FAAD_VERSION_MINOR}")
++set(FAAD_ABI_VERSION_AGE "${FAAD_VERSION_MINOR}")
++set(FAAD_ABI_VERSION_REVISION "${FAAD_VERSION_PATCH}")
++set(FAAD_ABI_COMPATIBILITY "${FAAD_VERSION_MAJOR}")
+
+ message(STATUS "FAAD PACKAGE_VERSION: ${FAAD_VERSION}")
+-mark_as_advanced(FAAD_VERSION)
++mark_as_advanced(FAAD_VERSION FAAD_ABI_COMPATIBILITY FAAD_ABI_VERSION_AGE FAAD_ABI_VERSION_REVISION)
+
+ file(READ include/faad.h.in FAAD_H_SRC)
+ string(REGEX REPLACE "@VERSION@" "${FAAD_VERSION}" FAAD_H_SRC ${FAAD_H_SRC})
+@@ -187,6 +196,13 @@ endfunction()
+
+ transform_pc_file("libfaad/faad2.pc.in" "${CMAKE_CURRENT_BINARY_DIR}/faad2.pc" "${FAAD_VERSION}")
+
++foreach(LIB faad faad_drm faad_fixed faad_drm_fixed)
++ set_target_properties(${LIB} PROPERTIES
++ VERSION "${FAAD_ABI_COMPATIBILITY}.${FAAD_ABI_VERSION_AGE}.${FAAD_ABI_VERSION_REVISION}"
++ SOVERSION "${FAAD_ABI_COMPATIBILITY}"
++ )
++endforeach()
++
+ # CLI
+
+ add_executable(faad_cli ${FAAD_SOURCES})
diff --git a/user/faad2/fix-x86-lrintf.patch b/user/faad2/fix-x86-lrintf.patch
new file mode 100644
index 000000000..b0038b756
--- /dev/null
+++ b/user/faad2/fix-x86-lrintf.patch
@@ -0,0 +1,11 @@
+diff -ur a/CMakeLists.txt b/CMakeLists.txt
+--- a/CMakeLists.txt 2023-10-24 21:00:08.223699531 +0000
++++ b/CMakeLists.txt 2023-10-24 21:00:30.200223679 +0000
+@@ -60,6 +60,7 @@
+ set(FAAD_DEFINES
+ APPLY_DRC
+ HAVE_INTTYPES_H=1
++ HAVE_LRINTF=1
+ HAVE_MEMCPY=1
+ HAVE_STRING_H=1
+ HAVE_STRINGS_H=1
diff --git a/user/fantasque-sans-mono/APKBUILD b/user/fantasque-sans-mono/APKBUILD
index 5fc591222..3d4712524 100644
--- a/user/fantasque-sans-mono/APKBUILD
+++ b/user/fantasque-sans-mono/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=fantasque-sans-mono
-pkgver=1.7.2
+pkgver=1.8.0
pkgrel=0
pkgdesc="Monospace typeface with unique accents, designed for programming"
url="https://fontlibrary.org/en/font/fantasque-sans-mono"
@@ -15,8 +15,7 @@ source="$pkgname-$pkgver.tar.gz::https://github.com/belluzj/fantasque-sans/relea
builddir="$srcdir"/OTF
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF/ *.otf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF/ "$builddir"/*.otf
}
-sha512sums="f854de5a5e0464d7f69b484c4ae0f59cfdcaa65d357b9935eda1df8cb90781f78c6b6ab0a96ac5099a6464a52de14cf26630d3db5dad8228e86e44033b32c228 fantasque-sans-mono-1.7.2.tar.gz"
+sha512sums="3afbd441d192769ea44fd7730e728844d13c15b0dd52e3968e6e1659ffa11a173d21891c09ceb7465b83a0b8c923129df2554e159620c9611ee9bb6ff35c90c6 fantasque-sans-mono-1.8.0.tar.gz"
diff --git a/user/farstream/APKBUILD b/user/farstream/APKBUILD
index f0d45c176..3017898cb 100644
--- a/user/farstream/APKBUILD
+++ b/user/farstream/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=farstream
-pkgver=0.2.8
-pkgrel=0
+pkgver=0.2.9
+pkgrel=1
pkgdesc="Audio/Video communications framework"
url="https://www.freedesktop.org/wiki/Software/Farstream/"
arch="all"
@@ -11,31 +11,32 @@ license="LGPL-2.1+"
depends="gst-plugins-base gst-plugins-good"
depends_dev="glib-dev"
makedepends="$depends_dev gobject-introspection-dev gstreamer-dev
- gst-plugins-base-dev libnice-dev"
+ gst-plugins-base-dev libnice-dev autoconf automake libtool cmd:which"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://freedesktop.org/software/farstream/releases/farstream/farstream-$pkgver.tar.gz"
+source="https://freedesktop.org/software/farstream/releases/farstream/farstream-$pkgver.tar.gz
+ make43.patch
+ "
build() {
- cd "$builddir"
- ./configure \
+ export GTKDOCIZE=true #740
+ ./autogen.sh \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
--localstatedir=/var \
- --with-package-origin="${DISTRO_NAME-:Adélie Linux} (${DISTRO_URL-:https://www.adelielinux.org/})"
+ --disable-gtk-doc
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="7ec5c57f8778f4107cb628dbf411e38b726152cf78920127dff4423239ff7e4980b6b4f938abba2aa21ab984b1e3053e7e648611322a0ce94df0af576df99a7e farstream-0.2.8.tar.gz"
+sha512sums="8840725d2f1de59bebc8c49cf68a6712822a4e7b6ba9078713f80e3c35a39135565a1a885edab43a562f895e11b8f5d8d666d57d9b3814dabb661f46498515bd farstream-0.2.9.tar.gz
+ea863d7e72e6c0311c1e6f4718721f4f03955e0c9a61066db833cc0b73246b27387067abfe677f594c6a132c7e3836de50cc216903ba12e286638988f41e3bd5 make43.patch"
diff --git a/user/farstream/make43.patch b/user/farstream/make43.patch
new file mode 100644
index 000000000..7b1ec9a9e
--- /dev/null
+++ b/user/farstream/make43.patch
@@ -0,0 +1,38 @@
+From 54987d445ea714b467d901b7daf8c09ed0644189 Mon Sep 17 00:00:00 2001
+From: Debarshi Ray <debarshir@freedesktop.org>
+Date: Thu, 12 Mar 2020 14:07:23 +0100
+Subject: [PATCH] build: Adapt to backwards incompatible change in GNU Make 4.3
+
+GNU Make 4.3 has a backwards incompatible change affecting the use of
+number signs or hashes (ie., #) inside function invocations. See:
+https://lists.gnu.org/archive/html/info-gnu/2020-01/msg00004.html
+
+In this case, it would expand the '\#' in the '\n\#include \"$(h)\"'
+argument to the foreach call to '\#', not '#'. This would lead to
+spurious backslashes in front of the '#include' directives in the
+generated fs-enumtypes.c file.
+
+Spotted by Ernestas Kulik.
+
+https://gitlab.freedesktop.org/farstream/farstream/-/merge_requests/4
+---
+ common-modified/gst-glib-gen.mak | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/common-modified/gst-glib-gen.mak b/common-modified/gst-glib-gen.mak
+index 14f1ba37c788..2247a41c49ea 100644
+--- a/common-modified/gst-glib-gen.mak
++++ b/common-modified/gst-glib-gen.mak
+@@ -6,7 +6,8 @@
+ #glib_gen_prefix=gst_color_balance
+ #glib_gen_basename=colorbalance
+
+-enum_headers=$(foreach h,$(glib_enum_headers),\n\#include \"$(h)\")
++hash:=\#
++enum_headers=$(foreach h,$(glib_enum_headers),\n$(hash)include \"$(h)\")
+
+ # these are all the rules generating the relevant files
+ $(glib_gen_basename)-enumtypes.h: $(glib_enum_headers)
+--
+2.24.1
+
diff --git a/user/fastfetch/APKBUILD b/user/fastfetch/APKBUILD
new file mode 100644
index 000000000..9c527663e
--- /dev/null
+++ b/user/fastfetch/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: Horst G. Burkhardt <horst@adelielinux.org>
+# Maintainer: Horst G. Burkhardt <horst@adelielinux.org>
+pkgname=fastfetch
+pkgver=2.5.0
+pkgrel=1
+pkgdesc="Tool for fetching and presenting system information"
+url="https://github.com/fastfetch-cli/fastfetch"
+arch="all"
+options="!check" # No separate test suite available.
+subpackages="$pkgname-doc"
+license="MIT"
+depends=""
+makedepends="cmake dbus-dev dconf-dev libdrm-dev libxcb-dev libxrandr-dev
+ mesa-dev networkmanager-dev pciutils-dev pulseaudio-dev sqlite-dev
+ utmps-dev wayland-dev xfconf-dev zlib-dev libglvnd-dev"
+source="$pkgname-$pkgver.tar.gz::https://github.com/fastfetch-cli/fastfetch/archive/refs/tags/$pkgver.tar.gz"
+
+build() {
+ cmake \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DENABLE_DBUS=ON \
+ -DENABLE_DCONF=ON \
+ -DENABLE_DRM=ON \
+ -DENABLE_LIBNM=ON \
+ -DENABLE_LIBPCI=ON \
+ -DENABLE_OSMESA=ON \
+ -DENABLE_PULSE=ON \
+ -DENABLE_WAYLAND=ON \
+ -DENABLE_X11=ON \
+ -DENABLE_XCB=ON \
+ -DENABLE_XFCONF=ON \
+ -DENABLE_XRANDR=ON \
+ -DENABLE_ZLIB=ON
+ make VERBOSE=1
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="a69f4e839acf8897a9cd8f6c017a4d7657a8dc0b3c58e645c88fc8e47e0a7bd3411d1a3e1e916628a948cb7e1688a200f7ac1eabd090f5eb42ce4b0030e342b4 fastfetch-2.5.0.tar.gz"
diff --git a/user/fastjar/APKBUILD b/user/fastjar/APKBUILD
index b821b2419..d07ee9162 100644
--- a/user/fastjar/APKBUILD
+++ b/user/fastjar/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=fastjar
pkgver=0.98
-pkgrel=0
+pkgrel=1
pkgdesc="Java archiver tool, tuned for performance"
url="https://savannah.nongnu.org/projects/fastjar/"
arch="all"
@@ -11,19 +11,19 @@ depends=""
makedepends="zlib-dev"
subpackages="$pkgname-doc"
source="https://download.savannah.nongnu.org/releases/fastjar/fastjar-$pkgver.tar.gz
+ CVE-2010-0831,2322.patch
+ fix-update-mode.patch
null-terminate.patch
write-return.patch
efficiency.patch
"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -35,17 +35,17 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
rm -f "$pkgdir"/usr/lib/charset.alias
}
sha512sums="c0f9fca7b58d6acd00b90a5184dbde9ba3ffc5bf4d69512743e450649a272baf1f6af98b15d79d2b53990eaf84ef402c986035e6b615a19e35ed424348143903 fastjar-0.98.tar.gz
+7fcabd7a0ed23b1ce9f9a11e635ccf50f5403118cd979bdf4ff9a57358e8992cf122cedbdb5c671cb2782348457bedf589ca8aa2603267ce683c81f34f5370f5 CVE-2010-0831,2322.patch
+9a9231e8b943e3602e78645cf50719d8e5ae7297981803af46e16edbed2e3c1a04273f08f445363e294373b90c13b75baefc6f5774e8c590724c5bc28354a93c fix-update-mode.patch
073c4fcc780588f146f2970f8718dbd70597ce46be8429b86d989056811bd331e209edf90e49d9ed8507e518fd7d7f57a76749f36eb308c12f9a74c7ab10beca null-terminate.patch
061c9ca0a13136b5eacef453822f71b8dc27f7501e2bbf5243785c147800f5793cffa6d1998dce0c12ce12fd892f3f0f03c06350e50621b5782dfb9a16c375ae write-return.patch
-16584ebe2bc104c2489ee8ff0f0aca471dc0d95c79b199fc463d6bdd6fe99425d583948ebb7e9aab775dffbffdea3babbd824df5debdbd445f559e1334815583 efficiency.patch"
+0e581282d67d6e995a87f5cbe8d92f77a36668c35bdf0a715da67b428aafbdf181a2e5b2528a6e6c2651dfd2fd1abb7dd64fa7cf290e294e114c5c49d036e860 efficiency.patch"
diff --git a/user/fastjar/CVE-2010-0831,2322.patch b/user/fastjar/CVE-2010-0831,2322.patch
new file mode 100644
index 000000000..acf9f3e86
--- /dev/null
+++ b/user/fastjar/CVE-2010-0831,2322.patch
@@ -0,0 +1,48 @@
+diff -ur fastjar-0.98.orig/jartool.c fastjar-0.98/jartool.c
+--- fastjar-0.98.orig/jartool.c 2009-09-06 18:10:47.000000000 -0400
++++ fastjar-0.98/jartool.c 2010-04-28 17:15:09.000000000 -0400
+@@ -1730,8 +1730,18 @@
+ struct stat sbuf;
+ int depth = 0;
+
++ if(strncmp((const char *)filename, "/", 1) == 0){
++ fprintf(stderr, "Absolute path names are not allowed.\n");
++ exit(EXIT_FAILURE);
++ }
++
+ tmp_buff = malloc(sizeof(char) * strlen((const char *)filename));
+
++ if(tmp_buff == NULL) {
++ fprintf(stderr, "Out of memory.\n");
++ exit(EXIT_FAILURE);
++ }
++
+ for(;;){
+ const ub1 *idx = (const unsigned char *)strchr((const char *)start, '/');
+
+@@ -1749,14 +1759,17 @@
+ #ifdef DEBUG
+ printf("checking the existance of %s\n", tmp_buff);
+ #endif
+- if(strcmp(tmp_buff, "..") == 0){
+- --depth;
+- if (depth < 0){
+- fprintf(stderr, "Traversal to parent directories during unpacking!\n");
+- exit(EXIT_FAILURE);
+- }
+- } else if (strcmp(tmp_buff, ".") != 0)
+- ++depth;
++ if(strcmp(tmp_buff, "..") == 0 || (strlen(tmp_buff) > 2 && strncmp(tmp_buff + strlen(tmp_buff) - 3, "/..", 3) == 0)){
++ --depth;
++ if (depth < 0){
++ fprintf(stderr, "Traversal to parent directories during unpacking!\n");
++ exit(EXIT_FAILURE);
++ }
++ } else if (strcmp(tmp_buff, ".") == 0 || (strlen(tmp_buff) > 1 && strncmp(tmp_buff + strlen(tmp_buff) - 2, "/.", 2) == 0)){
++ /* Do nothing, the current directory is "." */
++ } else
++ ++depth;
++
+ if(stat(tmp_buff, &sbuf) < 0){
+ if(errno != ENOENT)
+ exit_on_error("stat");
diff --git a/user/fastjar/efficiency.patch b/user/fastjar/efficiency.patch
index 54c471e25..b71b02f8c 100644
--- a/user/fastjar/efficiency.patch
+++ b/user/fastjar/efficiency.patch
@@ -28,40 +28,6 @@ Author: Dan Rosenberg <dan.j.rosenberg@gmail.com>
for(;;){
const ub1 *idx = (const unsigned char *)strchr((const char *)start, '/');
-@@ -1739,25 +1749,28 @@
- if(idx == NULL)
- break;
- else if(idx == start){
-+ tmp_buff[idx - filename] = '/';
- start++;
- continue;
- }
-- start = idx + 1;
-
-- strncpy(tmp_buff, (const char *)filename, (idx - filename));
-- tmp_buff[(idx - filename)] = '\0';
-+ memcpy(tmp_buff + (start - filename), (const char *)start, (idx - start));
-+ tmp_buff[idx - filename] = '\0';
-
- #ifdef DEBUG
- printf("checking the existance of %s\n", tmp_buff);
- #endif
-- if(strcmp(tmp_buff, "..") == 0){
-+ if(idx - start == 2 && memcmp(start, "..", 2) == 0){
- --depth;
- if (depth < 0){
- fprintf(stderr, "Traversal to parent directories during unpacking!\n");
- exit(EXIT_FAILURE);
- }
-- } else if (strcmp(tmp_buff, ".") != 0)
-+ } else if (idx - start != 1 || *start != '.')
- ++depth;
-+
-+ start = idx + 1;
-+
- if(stat(tmp_buff, &sbuf) < 0){
- if(errno != ENOENT)
- exit_on_error("stat");
@@ -1766,6 +1779,7 @@
#ifdef DEBUG
printf("Directory exists\n");
diff --git a/user/fastjar/fix-update-mode.patch b/user/fastjar/fix-update-mode.patch
new file mode 100644
index 000000000..509651e44
--- /dev/null
+++ b/user/fastjar/fix-update-mode.patch
@@ -0,0 +1,44 @@
+Index: b/compress.c
+===================================================================
+--- a/compress.c
++++ b/compress.c
+@@ -86,6 +86,10 @@ write_data (int fd, void *buf, size_t le
+ exit(EXIT_FAILURE);
+ }
+ }
++ else if (!next && here + len >= end_of_entries)
++ {
++ end_of_entries = here + len;
++ }
+ }
+
+ return write (fd, buf, len);
+Index: b/jartool.c
+===================================================================
+--- a/jartool.c
++++ b/jartool.c
+@@ -1273,15 +1273,18 @@ int add_file_to_jar(int jfd, int ffd, co
+ compress_file(ffd, jfd, ze, existing);
+ } else {
+ /* If we are not writing the last entry, make space for it. */
+- if (existing && existing->next_entry)
++ if (existing)
+ {
+- if (ze->usize > existing->usize)
++ if (existing->next_entry)
+ {
+- if (shift_down (jfd, existing->next_entry->offset,
+- ze->usize - existing->usize, existing->next_entry))
++ if (ze->usize > existing->usize)
+ {
+- fprintf (stderr, "%s: %s\n", progname, strerror (errno));
+- return 1;
++ if (shift_down (jfd, existing->next_entry->offset,
++ ze->usize - existing->usize, existing->next_entry))
++ {
++ fprintf (stderr, "%s: %s\n", progname, strerror (errno));
++ return 1;
++ }
+ }
+ }
+ }
diff --git a/user/fbset/APKBUILD b/user/fbset/APKBUILD
new file mode 100644
index 000000000..bdd602522
--- /dev/null
+++ b/user/fbset/APKBUILD
@@ -0,0 +1,30 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=fbset
+pkgver=2.1
+pkgrel=0
+pkgdesc="Utility to manipulate the framebuffer"
+url="http://users.telenet.be/geertu/Linux/fbdev/"
+arch="all"
+options="!check" # No test suite.
+license="GPL-2.0-only"
+depends=""
+makedepends="bison flex"
+subpackages="$pkgname-doc"
+#source="http://users.telenet.be/geertu/Linux/fbdev/fbset-$pkgver.tar.gz
+source="https://distfiles.adelielinux.org/source/upstream/$pkgname-$pkgver.tar.gz
+ types.patch
+ "
+
+build() {
+ make -j1
+}
+
+package() {
+ install -m755 -Dt "$pkgdir"/usr/sbin fbset
+ install -m644 -Dt "$pkgdir"/usr/share/man/man5 fb.modes.5
+ install -m644 -Dt "$pkgdir"/usr/share/man/man8 fbset.8
+}
+
+sha512sums="7e0380760f77b0db7dcc128f6375a3ed8da4b8521d1926faba27812c5cb20e6f1a62f3a539591a81a6b7e7986940db4cd83e03d6de487e0ab7f0760ed1d21b28 fbset-2.1.tar.gz
+5c4443f20b8342d2af6f1ddad9b2680c6e1a187f179645cb849eae921faf9c31a5d50fe59145357dff822fb6b0c0b717a590f7370dcdbc66cb283397960932b0 types.patch"
diff --git a/user/fbset/types.patch b/user/fbset/types.patch
new file mode 100644
index 000000000..7b3499427
--- /dev/null
+++ b/user/fbset/types.patch
@@ -0,0 +1,14 @@
+From: Gentoo
+For: musl compatibility (__u32)
+
+--- a/fbset.h 2018-04-05 18:17:18.292975594 +0000
++++ b/fbset.h 2018-04-05 18:22:20.448747231 +0000
+@@ -17,6 +17,8 @@
+
+ #ifdef __GLIBC__
+ #include <asm/types.h>
++#else
++#include <linux/types.h>
+ #endif
+
+ #define VERSION "Linux Frame Buffer Device Configuration " \
diff --git a/user/fdupes/APKBUILD b/user/fdupes/APKBUILD
index 1cd4e02b3..3e8758f15 100644
--- a/user/fdupes/APKBUILD
+++ b/user/fdupes/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=fdupes
-pkgver=1.6.1
+pkgver=2.1.2
pkgrel=0
pkgdesc="Identify or delete duplicate files in a directory tree"
url=" "
@@ -9,18 +9,23 @@ arch="all"
options="!check" # No test suite.
license="MIT"
depends=""
-makedepends=""
+makedepends="autoconf automake ncurses-dev pcre2-dev"
subpackages="$pkgname-doc"
source="fdupes-$pkgver.tar.gz::https://github.com/adrianlopezroche/fdupes/archive/v$pkgver.tar.gz"
+prepare() {
+ default_prepare
+ autoreconf -vif
+}
+
build() {
- cd "$builddir"
- make PREFIX=/usr
+ LIBS="-ltinfow" ./configure \
+ --prefix=/usr
+ make
}
package() {
- cd "$builddir"
- make PREFIX=/usr DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
}
-sha512sums="6c6662b70068c2f48f4be64a6830c81a66852d650391d0756f20b9ac0df7d70c1a32918bd7cbd50e19de524d9ebc09ea338c19636e1807b071eb96b325e641db fdupes-1.6.1.tar.gz"
+sha512sums="ab16e83ff56f63555e70471d562b2d1e07edc988f2ce10ba633720f1793e8a6432dd13c3dd7340562f5784056591efca947fe2e458c24e7394e71093d0353973 fdupes-2.1.2.tar.gz"
diff --git a/user/featherpad/APKBUILD b/user/featherpad/APKBUILD
index fc73865e7..b94aac077 100644
--- a/user/featherpad/APKBUILD
+++ b/user/featherpad/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=featherpad
-pkgver=0.9.4
+pkgver=0.18.0
pkgrel=0
pkgdesc="Featureful Qt-based text editor"
url="https://github.com/tsujan/FeatherPad"
@@ -10,13 +10,14 @@ options="!check" # No test suite.
license="GPL-3.0+"
depends=""
makedepends="qt5-qtbase-dev qt5-qtx11extras-dev qt5-qttools-dev qt5-qtsvg-dev
- libx11-dev libxext-dev"
+ hunspell-dev libx11-dev libxext-dev"
subpackages="$pkgname-lang"
-source="FeatherPad-$pkgver.tar.gz::https://github.com/tsujan/FeatherPad/archive/V$pkgver.tar.gz"
+source="FeatherPad-$pkgver.tar.gz::https://github.com/tsujan/FeatherPad/archive/V$pkgver.tar.gz
+ hunspell-link.patch
+ "
builddir="$srcdir/FeatherPad-$pkgver"
build() {
- cd "$builddir"
qmake
make PREFIX=/usr
}
@@ -27,8 +28,8 @@ lang() {
}
package() {
- cd "$builddir"
make INSTALL_ROOT="$pkgdir" PREFIX=/usr install
}
-sha512sums="95fe137ccc0de49bb464b15aec586287e46b04ff2fe636d6092e39a6c5e3d633ca0b809181a728a8931a6628cdcf51cd0b91d8dfa58eee6a551fb3ec4ff42280 FeatherPad-0.9.4.tar.gz"
+sha512sums="3e0d008792dd55bc5e57654f9b032f0a66a60c682499c684cfc3b182fdc57a654bb5fb195b458af66ddd8db929b31e7bfa789bd9bdf33d32454fbbcb090bcd91 FeatherPad-0.18.0.tar.gz
+471714eec9a376b138cc4c6c7b7d1339c9767091309c95b11ef2a8536250c796367b1544dca9610cc10babdbd08ac1436784d71292680b9da90e681dd855aaf0 hunspell-link.patch"
diff --git a/user/featherpad/hunspell-link.patch b/user/featherpad/hunspell-link.patch
new file mode 100644
index 000000000..8e4aec121
--- /dev/null
+++ b/user/featherpad/hunspell-link.patch
@@ -0,0 +1,11 @@
+--- FeatherPad-0.11.1/featherpad/featherpad.pro.old 2019-08-15 06:06:09.000000000 +0000
++++ FeatherPad-0.11.1/featherpad/featherpad.pro 2019-08-17 20:32:55.081129885 +0000
+@@ -91,7 +91,7 @@
+ }
+
+ unix {
+- LIBS += -lhunspell
++ LIBS += -lhunspell-1.7
+ #TRANSLATIONS
+ exists($$[QT_INSTALL_BINS]/lrelease) {
+ TRANSLATIONS = $$system("find data/translations/ -name 'featherpad_*.ts'")
diff --git a/user/feh/APKBUILD b/user/feh/APKBUILD
index 487e086ab..b95aaf01d 100644
--- a/user/feh/APKBUILD
+++ b/user/feh/APKBUILD
@@ -1,18 +1,25 @@
# Contributor: Max Rees <maxcrees@me.com>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=feh
-pkgver=3.1.3
+pkgver=3.4.1
pkgrel=0
pkgdesc="feh is a fast, lightweight image viewer which uses imlib2"
url="https://feh.finalrewind.org/"
arch="all"
license="MIT-feh"
depends=""
+checkdepends="perl-test-command"
makedepends="curl-dev imlib2-dev libexif-dev libjpeg-turbo-dev libpng-dev
libxinerama-dev libxt-dev"
-checkdepends="perl-test-command"
subpackages="$pkgname-doc"
-source="https://feh.finalrewind.org/$pkgname-$pkgver.tar.bz2"
+source="https://feh.finalrewind.org/$pkgname-$pkgver.tar.bz2
+ getopt.patch
+ "
+
+prepare() {
+ default_prepare
+ rm src/getopt.c src/getopt1.c src/getopt.h
+}
build() {
make PREFIX=/usr curl=1 exif=1 xinerama=1
@@ -31,4 +38,5 @@ package() {
install
}
-sha512sums="dc4960706e4134bbe6c34036a9c9b7cd98eb8935e13e2354504664a1599d4af193c6b977433a40c7e3638b2b3e2928960e0c755b04f7c48076ef15445f792583 feh-3.1.3.tar.bz2"
+sha512sums="d674d3134819cf6731aebf8af87a2f890d54dd7f8c64071e8816a032aeeb95c31f56752bb3477be0dfb653f813872b32dc2daf4e0514fed03e3f6bba36896c66 feh-3.4.1.tar.bz2
+cf02fbfcb1fd4f4e5cf899f7f94fd42521dbe8f1b805268eae5ae6222b85884c31abc3346a95ed46dfece7b89b445018e159ff8a42b799b3db18275e29eba1e3 getopt.patch"
diff --git a/user/feh/getopt.patch b/user/feh/getopt.patch
new file mode 100644
index 000000000..be7616fa9
--- /dev/null
+++ b/user/feh/getopt.patch
@@ -0,0 +1,100 @@
+--- feh-3.4.1/src/feh.h 2020-05-29 21:55:03.000000000 +0000
++++ feh-3.4.1/src/feh.h 2020-06-20 02:22:16.040051483 +0000
+@@ -74,7 +74,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE
+ #include "menu.h"
+
+ #include "utils.h"
+-#include "getopt.h"
++#include <getopt.h>
+
+ #include "debug.h"
+
+--- feh-3.4.1/src/Makefile 2020-05-29 21:55:03.000000000 +0000
++++ feh-3.4.1/src/Makefile 2020-06-20 02:22:43.660051920 +0000
+@@ -4,8 +4,6 @@ TARGETS = \
+ events.c \
+ feh_png.c \
+ filelist.c \
+- getopt.c \
+- getopt1.c \
+ gib_hash.c \
+ gib_imlib.c \
+ gib_list.c \
+--- feh-3.4.1/src/deps.mk 2020-05-29 21:55:03.000000000 +0000
++++ feh-3.4.1/src/deps.mk 2020-06-20 02:23:33.810052712 +0000
+@@ -1,57 +1,55 @@
+ events.o: events.c feh.h gib_hash.h gib_list.h gib_imlib.h gib_style.h \
+- structs.h menu.h utils.h getopt.h debug.h filelist.h winwidget.h \
++ structs.h menu.h utils.h debug.h filelist.h winwidget.h \
+ timers.h options.h events.h thumbnail.h
+ feh_png.o: feh_png.c feh_png.h feh.h gib_hash.h gib_list.h gib_imlib.h \
+- gib_style.h structs.h menu.h utils.h getopt.h debug.h
++ gib_style.h structs.h menu.h utils.h debug.h
+ filelist.o: filelist.c feh.h gib_hash.h gib_list.h gib_imlib.h \
+- gib_style.h structs.h menu.h utils.h getopt.h debug.h filelist.h \
++ gib_style.h structs.h menu.h utils.h debug.h filelist.h \
+ signals.h options.h
+-getopt.o: getopt.c
+-getopt1.o: getopt1.c getopt.h
+ gib_hash.o: gib_hash.c gib_hash.h gib_list.h utils.h debug.h
+ gib_imlib.o: gib_imlib.c gib_imlib.h gib_style.h gib_list.h utils.h \
+ debug.h
+ gib_list.o: gib_list.c gib_list.h utils.h debug.h
+ gib_style.o: gib_style.c gib_style.h gib_list.h utils.h debug.h
+ imlib.o: imlib.c feh.h gib_hash.h gib_list.h gib_imlib.h gib_style.h \
+- structs.h menu.h utils.h getopt.h debug.h filelist.h signals.h \
++ structs.h menu.h utils.h debug.h filelist.h signals.h \
+ winwidget.h options.h
+ index.o: index.c feh.h gib_hash.h gib_list.h gib_imlib.h gib_style.h \
+- structs.h menu.h utils.h getopt.h debug.h filelist.h winwidget.h \
++ structs.h menu.h utils.h debug.h filelist.h winwidget.h \
+ options.h index.h
+ keyevents.o: keyevents.c feh.h gib_hash.h gib_list.h gib_imlib.h \
+- gib_style.h structs.h menu.h utils.h getopt.h debug.h thumbnail.h \
++ gib_style.h structs.h menu.h utils.h debug.h thumbnail.h \
+ filelist.h winwidget.h options.h
+ list.o: list.c feh.h gib_hash.h gib_list.h gib_imlib.h gib_style.h \
+- structs.h menu.h utils.h getopt.h debug.h filelist.h options.h
++ structs.h menu.h utils.h debug.h filelist.h options.h
+ main.o: main.c feh.h gib_hash.h gib_list.h gib_imlib.h gib_style.h \
+- structs.h menu.h utils.h getopt.h debug.h filelist.h winwidget.h \
++ structs.h menu.h utils.h debug.h filelist.h winwidget.h \
+ timers.h options.h events.h signals.h wallpaper.h
+ md5.o: md5.c md5.h
+ menu.o: menu.c feh.h gib_hash.h gib_list.h gib_imlib.h gib_style.h \
+- structs.h menu.h utils.h getopt.h debug.h thumbnail.h filelist.h \
++ structs.h menu.h utils.h debug.h thumbnail.h filelist.h \
+ winwidget.h wallpaper.h options.h
+ multiwindow.o: multiwindow.c feh.h gib_hash.h gib_list.h gib_imlib.h \
+- gib_style.h structs.h menu.h utils.h getopt.h debug.h winwidget.h \
++ gib_style.h structs.h menu.h utils.h debug.h winwidget.h \
+ timers.h filelist.h options.h signals.h
+ options.o: options.c feh.h gib_hash.h gib_list.h gib_imlib.h gib_style.h \
+- structs.h menu.h utils.h getopt.h debug.h filelist.h options.h
++ structs.h menu.h utils.h debug.h filelist.h options.h
+ signals.o: signals.c feh.h gib_hash.h gib_list.h gib_imlib.h gib_style.h \
+- structs.h menu.h utils.h getopt.h debug.h filelist.h winwidget.h \
++ structs.h menu.h utils.h debug.h filelist.h winwidget.h \
+ options.h
+ slideshow.o: slideshow.c feh.h gib_hash.h gib_list.h gib_imlib.h \
+- gib_style.h structs.h menu.h utils.h getopt.h debug.h filelist.h \
++ gib_style.h structs.h menu.h utils.h debug.h filelist.h \
+ timers.h winwidget.h options.h signals.h
+ thumbnail.o: thumbnail.c feh.h gib_hash.h gib_list.h gib_imlib.h \
+- gib_style.h structs.h menu.h utils.h getopt.h debug.h filelist.h \
++ gib_style.h structs.h menu.h utils.h debug.h filelist.h \
+ winwidget.h options.h thumbnail.h md5.h feh_png.h index.h signals.h
+ timers.o: timers.c feh.h gib_hash.h gib_list.h gib_imlib.h gib_style.h \
+- structs.h menu.h utils.h getopt.h debug.h options.h timers.h
++ structs.h menu.h utils.h debug.h options.h timers.h
+ utils.o: utils.c feh.h gib_hash.h gib_list.h gib_imlib.h gib_style.h \
+- structs.h menu.h utils.h getopt.h debug.h options.h
++ structs.h menu.h utils.h debug.h options.h
+ wallpaper.o: wallpaper.c feh.h gib_hash.h gib_list.h gib_imlib.h \
+- gib_style.h structs.h menu.h utils.h getopt.h debug.h filelist.h \
++ gib_style.h structs.h menu.h utils.h debug.h filelist.h \
+ options.h wallpaper.h
+ winwidget.o: winwidget.c feh.h gib_hash.h gib_list.h gib_imlib.h \
+- gib_style.h structs.h menu.h utils.h getopt.h debug.h filelist.h \
++ gib_style.h structs.h menu.h utils.h debug.h filelist.h \
+ winwidget.h options.h events.h
diff --git a/user/felinks/APKBUILD b/user/felinks/APKBUILD
new file mode 100644
index 000000000..0ebe25975
--- /dev/null
+++ b/user/felinks/APKBUILD
@@ -0,0 +1,48 @@
+# Contributor: Nathan <ndowens@artixlinux.org>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=felinks
+pkgver=0.13.5
+pkgrel=0
+pkgdesc="A text mode web browser"
+url="https://github.com/rkd77/felinks"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="autoconf automake bzip2-dev gettext-tiny libexecinfo-dev
+ openssl-dev zlib-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+#source="$pkgname-$pkgver.tar.gz::https://github.com/rkd77/felinks/archive/v$pkgver.tar.gz
+source="https://distfiles.adelielinux.org/source/upstream/$pkgname-$pkgver.tar.gz
+ gettext-tiny.patch
+ "
+
+prepare() {
+ default_prepare
+ update_config_sub
+ autoreconf -fi
+}
+
+build() {
+ LIBS="-lexecinfo" ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --enable-nls
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ rm -rf "$pkgdir"/usr/lib/charset.alias
+ rm -rf "$pkgdir"/usr/lib
+}
+
+sha512sums="786f6142c03bca4a47a1043ca4f9c36aab431d192eb13bcad14c1da391f5746779a8f65e53eb781dff79f619ceb3ed30ef939eae8d81f64251fad9b803c0ae7b felinks-0.13.5.tar.gz
+327a3b3193d1ddac891e5c46caf11a3dd946ca0a49d214a61303733eddb3e181c73a8b8d78962dc6e589b9401c7e56698154acade4d321515145cc85db834195 gettext-tiny.patch"
diff --git a/user/felinks/gettext-tiny.patch b/user/felinks/gettext-tiny.patch
new file mode 100644
index 000000000..27c2667d4
--- /dev/null
+++ b/user/felinks/gettext-tiny.patch
@@ -0,0 +1,14 @@
+gettext-tiny's msgfmt tries to use "--" as a literal output file (note
+that --statistics is ignored)
+
+--- felinks-0.13.5/po/Makefile 2020-08-30 14:31:52.000000000 +0000
++++ felinks-0.13.5/po/Makefile 2020-10-24 21:23:18.736882854 +0000
+@@ -22,7 +22,7 @@ POTFILES_ABS_LIST = potfiles.list
+ POTFILES_REL = $(shell find $(top_srcdir)/src/ -name '*.[ch]' -o -name options.inc -o -name 'actions-*.inc' | sort)
+
+ quiet_cmd_gmsgfmt = ' [$(PO_COLOR)GMSGFMT$(END_COLOR)] $(RELPATH)$(@)'
+- cmd_gmsgfmt = rm -f -- "$@" && $(GMSGFMT) --statistics -o "$@" -- "$<"
++ cmd_gmsgfmt = rm -f -- "$@" && $(GMSGFMT) --statistics -o "$@" "$<"
+
+
+ # Distributed elinks-*.tar.gz packages include po/*.gmo files, so that
diff --git a/user/ffmpeg/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch b/user/ffmpeg/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch
index 93e3ac995..9cc6fdfcf 100644
--- a/user/ffmpeg/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch
+++ b/user/ffmpeg/0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch
@@ -15,7 +15,7 @@ diff --git a/libavutil/internal.h b/libavutil/internal.h
index 61784b5..69d63d5 100644
--- a/libavutil/internal.h
+++ b/libavutil/internal.h
-@@ -177,34 +177,6 @@
+@@ -187,34 +187,6 @@
#endif
/**
diff --git a/user/ffmpeg/APKBUILD b/user/ffmpeg/APKBUILD
index dada6f23a..de3213b98 100644
--- a/user/ffmpeg/APKBUILD
+++ b/user/ffmpeg/APKBUILD
@@ -1,25 +1,27 @@
-# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
+# Contributor: Sergey Lukin <sergej.lukin@gmail.com>
# Contributor: Łukasz Jendrysik <scadu@yandex.com>
# Contributor: Jakub Skrzypnik <j.skrzypnik@openmailbox.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ffmpeg
-pkgver=4.1.3
-pkgrel=0
+pkgver=4.4.1
+pkgrel=1
pkgdesc="Record, convert, and stream audio and video"
url="https://ffmpeg.org/"
arch="all"
-license="GPL-2.0-only"
options="!check textrels" # Test suite requires proper licensing headers on all files,
# which upstream does not provide.
-subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
+license="GPL-2.0-only"
+depends=""
makedepends="alsa-lib-dev bzip2-dev freetype-dev gnutls-dev imlib2-dev
ladspa-dev lame-dev libcdio-dev libcdio-paranoia-dev libmodplug-dev
libtheora-dev libva-dev libvdpau-dev libvorbis-dev libwebp-dev
libxfixes-dev opus-dev perl-dev pulseaudio-dev sdl2-dev
- speex-dev v4l-utils-dev wavpack-dev x264-dev x265-dev xvidcore-dev
+ speex-dev v4l-utils-dev x264-dev x265-dev xvidcore-dev
xz-dev yasm zlib-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
source="https://ffmpeg.org/releases/ffmpeg-$pkgver.tar.xz
0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch
+ fix-avcodec-x86-mathops-binutils-241.patch
"
# secfixes:
@@ -36,18 +38,19 @@ source="https://ffmpeg.org/releases/ffmpeg-$pkgver.tar.xz
# - CVE-2017-14222
# - CVE-2017-14223
# - CVE-2017-14225
+# 4.2.2-r1:
+# - CVE-2019-13312
+# - CVE-2020-12284
build() {
- local _dbg="--disable-debug"
- local _asm=""
- [ -n "$DEBUG" ] && _dbg="--enable-debug"
+ _asm=""
case "$CARCH" in
ppc64) _asm="--cpu=G5" ;;
pmmx) _asm="--disable-asm" ;;
esac
- cd "$builddir"
+ LDFLAGS="-latomic" \
./configure \
--prefix=/usr \
--enable-avresample \
@@ -78,17 +81,15 @@ build() {
--enable-lzma \
--enable-libspeex \
--enable-libfreetype \
- --enable-libwavpack \
--enable-libwebp \
--enable-libpulse \
--optflags="$CFLAGS" \
- $_asm $_dbg
+ $_asm
make
${CC:-gcc} -o tools/qt-faststart $CFLAGS tools/qt-faststart.c
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install install-man
install -D -m755 tools/qt-faststart "$pkgdir/usr/bin/qt-faststart"
}
@@ -100,5 +101,6 @@ libs() {
mv "$pkgdir"/usr/lib "$subpkgdir"/usr/
}
-sha512sums="0a540a0c5395f42c6079bc26d1b3baca453995693da7de21da469ce40b3a548bea14ff46a72c6f4c32256333855f9b86207cb8bf1d0dda33a17ddca54970daa3 ffmpeg-4.1.3.tar.xz
-32652e18d4eb231a2e32ad1cacffdf33264aac9d459e0e2e6dd91484fced4e1ca5a62886057b1f0b4b1589c014bbe793d17c78adbaffec195f9a75733b5b18cb 0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch"
+sha512sums="c651c120b71db6991ffc54abc291986e7d35d776203af327f9a28853d1d0af468ca0956e2d3d893f55a211f70a40c041d5aa9aa9664ef581302b27494be9374e ffmpeg-4.4.1.tar.xz
+1047a23eda51b576ac200d5106a1cd318d1d5291643b3a69e025c0a7b6f3dbc9f6eb0e1e6faa231b7e38c8dd4e49a54f7431f87a93664da35825cc2e9e8aedf4 0001-libavutil-clean-up-unused-FF_SYMVER-macro.patch
+c1141eb8b8d9d02f021fee2290d02b16d924d2fcca9ea971f9438db46c7d83775bc7ffeb87fba6561008c43359684329c7f7f8f82aea7999b252e3ab98617581 fix-avcodec-x86-mathops-binutils-241.patch"
diff --git a/user/ffmpeg/fix-avcodec-x86-mathops-binutils-241.patch b/user/ffmpeg/fix-avcodec-x86-mathops-binutils-241.patch
new file mode 100644
index 000000000..33fd3d484
--- /dev/null
+++ b/user/ffmpeg/fix-avcodec-x86-mathops-binutils-241.patch
@@ -0,0 +1,76 @@
+From effadce6c756247ea8bae32dc13bb3e6f464f0eb Mon Sep 17 00:00:00 2001
+From: =?utf8?q?R=C3=A9mi=20Denis-Courmont?= <remi@remlab.net>
+Date: Sun, 16 Jul 2023 18:18:02 +0300
+Subject: [PATCH] avcodec/x86/mathops: clip constants used with shift
+ instructions within inline assembly
+
+Fixes assembling with binutil as >= 2.41
+
+Signed-off-by: James Almer <jamrial@gmail.com>
+---
+ libavcodec/x86/mathops.h | 26 +++++++++++++++++++++++---
+ 1 file changed, 23 insertions(+), 3 deletions(-)
+
+diff --git a/libavcodec/x86/mathops.h b/libavcodec/x86/mathops.h
+index 6298f5ed19..ca7e2dffc1 100644
+--- a/libavcodec/x86/mathops.h
++++ b/libavcodec/x86/mathops.h
+@@ -35,12 +35,20 @@
+ static av_always_inline av_const int MULL(int a, int b, unsigned shift)
+ {
+ int rt, dummy;
++ if (__builtin_constant_p(shift))
+ __asm__ (
+ "imull %3 \n\t"
+ "shrdl %4, %%edx, %%eax \n\t"
+ :"=a"(rt), "=d"(dummy)
+- :"a"(a), "rm"(b), "ci"((uint8_t)shift)
++ :"a"(a), "rm"(b), "i"(shift & 0x1F)
+ );
++ else
++ __asm__ (
++ "imull %3 \n\t"
++ "shrdl %4, %%edx, %%eax \n\t"
++ :"=a"(rt), "=d"(dummy)
++ :"a"(a), "rm"(b), "c"((uint8_t)shift)
++ );
+ return rt;
+ }
+
+@@ -113,19 +121,31 @@ __asm__ volatile(\
+ // avoid +32 for shift optimization (gcc should do that ...)
+ #define NEG_SSR32 NEG_SSR32
+ static inline int32_t NEG_SSR32( int32_t a, int8_t s){
++ if (__builtin_constant_p(s))
+ __asm__ ("sarl %1, %0\n\t"
+ : "+r" (a)
+- : "ic" ((uint8_t)(-s))
++ : "i" (-s & 0x1F)
+ );
++ else
++ __asm__ ("sarl %1, %0\n\t"
++ : "+r" (a)
++ : "c" ((uint8_t)(-s))
++ );
+ return a;
+ }
+
+ #define NEG_USR32 NEG_USR32
+ static inline uint32_t NEG_USR32(uint32_t a, int8_t s){
++ if (__builtin_constant_p(s))
+ __asm__ ("shrl %1, %0\n\t"
+ : "+r" (a)
+- : "ic" ((uint8_t)(-s))
++ : "i" (-s & 0x1F)
+ );
++ else
++ __asm__ ("shrl %1, %0\n\t"
++ : "+r" (a)
++ : "c" ((uint8_t)(-s))
++ );
+ return a;
+ }
+
+--
+2.30.2
+
diff --git a/user/ffmpegthumbnailer/APKBUILD b/user/ffmpegthumbnailer/APKBUILD
index ae8a1c7e0..b29faa91d 100644
--- a/user/ffmpegthumbnailer/APKBUILD
+++ b/user/ffmpegthumbnailer/APKBUILD
@@ -1,19 +1,18 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=ffmpegthumbnailer
-pkgver=2.2.0
+pkgver=2.2.2
pkgrel=0
pkgdesc="Thumbnail generator based on FFMPEG"
url="https://github.com/dirkvdb/ffmpegthumbnailer"
arch="all"
license="GPL-2.0+"
-makedepends="ffmpeg-dev libjpeg-turbo-dev libpng-dev"
+depends=""
+makedepends="cmake ffmpeg-dev libjpeg-turbo-dev libpng-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://github.com/dirkvdb/ffmpegthumbnailer/releases/download/$pkgver/ffmpegthumbnailer-$pkgver.tar.bz2"
-sha512sums="526d15b2c754fcb1415e69fb54cb6e7d0102b6d73a32a7e8528df81e32633dfe3786898984fdb988c93daee7218956c75c096ef657c9b3a42399d2d1d27c7bbf ffmpegthumbnailer-2.2.0.tar.bz2"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,17 +25,16 @@ build() {
-DCMAKE_C_FLAGS="$CFLAGS" \
-DENABLE_GIO=True \
-DENABLE_THUMBNAILER=True \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
+sha512sums="52760dcf59430e5e85024c9f19dc1fac1d5f0edb4f937b33feac2b3ca8f12bbf549b5f658fc16fc07bf773717b9e10048aa3eb24bf52811c5c88c995ef492612 ffmpegthumbnailer-2.2.2.tar.bz2"
diff --git a/user/ffmpegthumbs/APKBUILD b/user/ffmpegthumbs/APKBUILD
index 74d46e589..7d8219267 100644
--- a/user/ffmpegthumbs/APKBUILD
+++ b/user/ffmpegthumbs/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ffmpegthumbs
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="KDE video thumbnail system using FFmpeg"
url="https://www.KDE.org/"
@@ -9,12 +9,11 @@ arch="all"
license="GPL-2.0+"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev ffmpeg-dev kconfig-dev
- ki18n-dev kio-dev"
-subpackages="$pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/ffmpegthumbs-$pkgver.tar.xz"
+ ki18n-dev kio-dev taglib-dev"
+subpackages=""
+source="https://download.kde.org/stable/release-service/$pkgver/src/ffmpegthumbs-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,18 +24,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="50d15d72b4181bea11895d8fc79a898d11c21c2f5c8b5d37e046f2d03f8b4b09047d3558c763c272e6e854693797b1f7f4a093981bdaefa2f405ec5d4f66dec0 ffmpegthumbs-18.12.3.tar.xz"
+sha512sums="63d1d6cdde0ecc0a7e3145331762466f6a743c97f2efd245d3b3193e8faf1addc55938d754dad22fda14f5b90bb05e60247f7ee5f12cfc4dcf859acd534615cd ffmpegthumbs-22.04.2.tar.xz"
diff --git a/user/fftw/APKBUILD b/user/fftw/APKBUILD
index 31a334f88..1e4e09d44 100644
--- a/user/fftw/APKBUILD
+++ b/user/fftw/APKBUILD
@@ -1,7 +1,8 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
-# Maintainer:
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=fftw
-pkgver=3.3.8
+pkgver=3.3.10
+_pkgver=$(printf '%s' "$pkgver" | sed 's/p/-pl/')
pkgrel=0
pkgdesc="Fastest fourier transform in the west"
url="http://www.fftw.org/"
@@ -12,9 +13,10 @@ makedepends="texinfo"
# order of the libs split functions are important because of lib naming
subpackages="$pkgname-dev $pkgname-doc $pkgname-single-libs:single
$pkgname-long-double-libs:long_double $pkgname-double-libs:double"
-srcpkgver=${pkgver//p/-pl}
-source="http://www.fftw.org/$pkgname-$srcpkgver.tar.gz"
-builddir="$srcdir/$pkgname-$srcpkgver"
+source="http://www.fftw.org/$pkgname-$_pkgver.tar.gz
+ clock-sgi-cycle.patch
+ "
+builddir="$srcdir/$pkgname-$_pkgver"
_precision="single double long-double"
@@ -92,4 +94,5 @@ long_double() {
"$subpkgdir"/usr/lib/
}
-sha512sums="ab918b742a7c7dcb56390a0a0014f517a6dff9a2e4b4591060deeb2c652bf3c6868aa74559a422a276b853289b4b701bdcbd3d4d8c08943acf29167a7be81a38 fftw-3.3.8.tar.gz"
+sha512sums="2d34b5ccac7b08740dbdacc6ebe451d8a34cf9d9bfec85a5e776e87adf94abfd803c222412d8e10fbaa4ed46f504aa87180396af1b108666cde4314a55610b40 fftw-3.3.10.tar.gz
+7683b31fd56c1883fd9ac553ced161b0e253163a97fb9f718f830da93ff1e45692dae4ddda3d9f3f238b8e8047f2cd62bd1933b67839328ccf386137f592f5b0 clock-sgi-cycle.patch"
diff --git a/user/fftw/clock-sgi-cycle.patch b/user/fftw/clock-sgi-cycle.patch
new file mode 100644
index 000000000..2fd37c837
--- /dev/null
+++ b/user/fftw/clock-sgi-cycle.patch
@@ -0,0 +1,70 @@
+From 8fdc7b71354fbbbbc68fa8b2b810610ee41e052f Mon Sep 17 00:00:00 2001
+From: Frank Hartmann <frank.hartmann@dreamchip.de>
+Date: Fri, 5 Jan 2018 21:27:23 +0100
+Subject: [PATCH 1/2] linux: avoid using CLOCK_SGI_CYCLE
+
+The call clock_gettime(CLOCK_SGI_CYCLE, &t) from function getticks() fails with EINVAL.
+See : http://elixir.free-electrons.com/linux/latest/source/include/uapi/linux/time.h#L62 - "The driver implementing this got removed. The clock ID is kept as a place holder. Do not reuse!"
+---
+ kernel/cycle.h | 14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/kernel/cycle.h b/kernel/cycle.h
+index fe3dd50d6..21d206e35 100644
+--- a/kernel/cycle.h
++++ b/kernel/cycle.h
+@@ -437,8 +437,18 @@ INLINE_ELAPSED(__inline)
+ #define HAVE_TICK_COUNTER
+ #endif
+ /*----------------------------------------------------------------*/
+-/* SGI/Irix */
+-#if defined(HAVE_CLOCK_GETTIME) && defined(CLOCK_SGI_CYCLE) && !defined(HAVE_TICK_COUNTER) && !defined(__ANDROID__)
++/* SGI/Irix/Linux but not android */
++#if !defined(__ANDROID__)
++#if defined(HAVE_CLOCK_GETTIME) && !defined(HAVE_TICK_COUNTER)
++#if defined(CLOCK_MONOTONIC)
++#define METHOD CLOCK_MONOTONIC
++#elif defined(CLOCK_REALTIME)
++#define METHOD CLOCK_REALTIME
++#elif defined(CLOCK_SGI_CYCLE)
++#define METHOD CLOCK_SGI_CYCLE
++#endif
++#endif
++
+ typedef struct timespec ticks;
+
+ static inline ticks getticks(void)
+
+From c68b27dedad182b0b222502d98cc9795787c2607 Mon Sep 17 00:00:00 2001
+From: Frank Hartmann <frank.hartmann@dreamchip.de>
+Date: Sun, 14 Jan 2018 16:52:30 +0100
+Subject: [PATCH 2/2] linux: avoid using CLOCK_SGI_CYCLE, use METHOD
+
+---
+ kernel/cycle.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/kernel/cycle.h b/kernel/cycle.h
+index 21d206e35..777d1cda5 100644
+--- a/kernel/cycle.h
++++ b/kernel/cycle.h
+@@ -438,8 +438,8 @@ INLINE_ELAPSED(__inline)
+ #endif
+ /*----------------------------------------------------------------*/
+ /* SGI/Irix/Linux but not android */
+-#if !defined(__ANDROID__)
+-#if defined(HAVE_CLOCK_GETTIME) && !defined(HAVE_TICK_COUNTER)
++#if !defined(__ANDROID__) && !defined(HAVE_TICK_COUNTER)
++#if defined(HAVE_CLOCK_GETTIME)
+ #if defined(CLOCK_MONOTONIC)
+ #define METHOD CLOCK_MONOTONIC
+ #elif defined(CLOCK_REALTIME)
+@@ -454,7 +454,7 @@ typedef struct timespec ticks;
+ static inline ticks getticks(void)
+ {
+ struct timespec t;
+- clock_gettime(CLOCK_SGI_CYCLE, &t);
++ clock_gettime(METHOD, &t);
+ return t;
+ }
+
diff --git a/user/fifth-leg/APKBUILD b/user/fifth-leg/APKBUILD
index c80ecb5a6..43cf5b2b3 100644
--- a/user/fifth-leg/APKBUILD
+++ b/user/fifth-leg/APKBUILD
@@ -15,8 +15,7 @@ source="https://api.opensuse.org/public/source/openSUSE:Factory/fifth-leg-font/o
builddir="$srcdir"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF *.otf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF "$builddir"/*.otf
}
sha512sums="7c2ee6aab8d5bc54d3a0d3a7d02ff5514cdc9e6672fcd28e827197061e5aa3f023b1d6cbe7077458f8cb3046a22e4aac085d4a56398d59845d004edde67622f9 opensuse-font-fifth-leg-0.6.tar.bz2"
diff --git a/user/figlet/APKBUILD b/user/figlet/APKBUILD
index 1d44369c4..af44549e6 100644
--- a/user/figlet/APKBUILD
+++ b/user/figlet/APKBUILD
@@ -1,4 +1,4 @@
-# Contributor: Francesco Colista <francesco.colista@gmail.com>
+# Contributor: Francesco Colista <fcolista@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=figlet
pkgver=2.2.5
@@ -11,20 +11,18 @@ depends=""
makedepends=""
subpackages="$pkgname-doc"
source="ftp://ftp.figlet.org/pub/figlet/program/unix/${pkgname}-${pkgver}.tar.gz
- musl-fix-cplusplus-decls.patch"
+ musl-fix-cplusplus-decls.patch
+ "
build() {
- cd "$builddir"
make DEFAULTFONTDIR=/usr/share/figlet/fonts all
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="${pkgdir}" BINDIR=/usr/bin MANDIR=/usr/share/man \
DEFAULTFONTDIR=/usr/share/figlet/fonts install
install -D -m644 LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"
diff --git a/user/fira-code/APKBUILD b/user/fira-code/APKBUILD
index 51be841bd..6f6808256 100644
--- a/user/fira-code/APKBUILD
+++ b/user/fira-code/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=fira-code
-pkgver=1.206
+pkgver=2
pkgrel=0
pkgdesc="Monospace typeface with ligatures for programming"
url="https://patreon.com/tonsky"
@@ -15,8 +15,7 @@ source="https://github.com/tonsky/FiraCode/releases/download/$pkgver/FiraCode_$p
builddir="$srcdir"/otf
package() {
- cd "$builddir"
install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF/ *.otf
}
-sha512sums="56451c338a76fabb15527c1ac247f61f3e8a3ef98d8428bf7a5bfcf506a12ce1cbf6075a1435cbf936800b38ebe5554f4c8becc62f596c23097fdbaaa30f606b FiraCode_1.206.zip"
+sha512sums="c6bc3229acab8874e8d0f4709d7ed25cb9153996d85cba5c19aa6a472d1c22e9d2c1e9b4d580787f212f87e9aaa4059503ab38dc675fe914fc0537fbf91d7774 FiraCode_2.zip"
diff --git a/user/fira/APKBUILD b/user/fira/APKBUILD
index 8d0b68e9b..15770d162 100644
--- a/user/fira/APKBUILD
+++ b/user/fira/APKBUILD
@@ -14,7 +14,7 @@ depends="fontconfig"
makedepends=""
subpackages=""
source="https://bboxtype.com/downloads/Fira/Download_Folder_FiraSans_$_pkgver.zip
- https://bboxtype.com/downloads/Fira/Fira_Mono_${_monover/./_}.zip"
+ https://bboxtype.com/downloads/Fira/Fira_Mono_$(echo $_monover | sed s/\\./_/).zip"
package() {
cd "$srcdir"/Download_Folder_FiraSans_$_pkgver/Fonts/Fira_Sans_OTF_$_pkgver
diff --git a/user/firefox-esr/0002-Use-C99-math-isfinite.patch b/user/firefox-esr/0002-Use-C99-math-isfinite.patch
deleted file mode 100644
index ba4f5cfb3..000000000
--- a/user/firefox-esr/0002-Use-C99-math-isfinite.patch
+++ /dev/null
@@ -1,17 +0,0 @@
---- ./xpcom/ds/nsMathUtils.h.orig
-+++ ./xpcom/ds/nsMathUtils.h
-@@ -104,12 +104,12 @@
- #ifdef WIN32
- // NOTE: '!!' casts an int to bool without spamming MSVC warning C4800.
- return !!_finite(aNum);
--#elif defined(XP_DARWIN)
-+#elif defined(XP_DARWIN) || defined(_GLIBCXX_CMATH)
- // Darwin has deprecated |finite| and recommends |isfinite|. The former is
- // not present in the iOS SDK.
- return std::isfinite(aNum);
- #else
-- return finite(aNum);
-+ return isfinite(aNum);
- #endif
- }
-
diff --git a/user/firefox-esr/APKBUILD b/user/firefox-esr/APKBUILD
index 8a9a805e1..66803e8b4 100644
--- a/user/firefox-esr/APKBUILD
+++ b/user/firefox-esr/APKBUILD
@@ -1,209 +1,147 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Molly Miller <adelie@m-squa.red>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=firefox-esr
-pkgver=52.9.0
-_pkgver=$pkgver
-_xulver=$pkgver
-pkgrel=4
-pkgdesc="Firefox web browser"
-url="https://www.mozilla.org/en-US/firefox/organizations/faq/"
-arch="all"
+pkgver=128.10.1
+_llvmver=18
+pkgrel=0
+pkgdesc="Firefox web browser (extended support release)"
+url="https://www.mozilla.org/firefox/"
+arch="all !ppc" # #837
options="!check" # Tests disabled
-license="GPL LGPL MPL"
+license="MPL-2.0"
depends=""
-depends_dev="alsa-lib-dev bzip2-dev dbus-glib-dev gconf-dev gtk+2.0-dev
- gtk+3.0-dev hunspell-dev icu-dev libevent-dev libidl-dev
- libjpeg-turbo-dev libnotify-dev libogg-dev libtheora-dev libvorbis-dev
- libxt-dev libxcomposite-dev mesa-dev nspr-dev nss-dev
- pulseaudio-dev sqlite-dev startup-notification-dev wireless-tools-dev"
-makedepends="$depends_dev autoconf2.13 automake libtool
- bsd-compat-headers cmd:which nss-static openssl-dev sed yasm zip"
-subpackages="$pkgname-dev"
-source="https://ftp.mozilla.org/pub/firefox/releases/${pkgver}esr/source/firefox-${pkgver}esr.source.tar.xz
- stab.h
-
- 0002-Use-C99-math-isfinite.patch
- fix-fortify-inline.patch
- disable-hunspell_hooks.patch
+# moz build system stuff
+# python deps
+# system-libs
+# actual deps
+makedepends="
+ autoconf2.13 cargo cbindgen clang llvm${_llvmver}-dev node ncurses-dev
+ perl python3 rust rust-std cmd:which
+
+ ncurses-dev openssl-dev
+
+ alsa-lib-dev bzip2-dev icu-dev libevent-dev libffi-dev libpng-dev
+ libjpeg-turbo-dev nspr-dev nss-dev pcre-dev pulseaudio-dev zlib-dev
+
+ dbus-glib-dev fts-dev gconf-dev gtk+3.0-dev hunspell-dev
+ libnotify-dev libsm-dev libxcomposite-dev libxdamage-dev
+ libxrender-dev libxt-dev nasm nss-static sqlite-dev
+ startup-notification-dev unzip yasm zip gtk+2.0-dev
+ "
+_ffxver="$pkgver"'esr'
+source="https://ftp.mozilla.org/pub/firefox/releases/$_ffxver/source/firefox-$_ffxver.source.tar.xz
+ mozconfig
+
+ bad-google-code.patch
+ fix-mutex-build.patch
fix-seccomp-bpf.patch
- fix-toolkit.patch
- fix-tools.patch
- mallinfo.patch
- musl-pthread-setname.patch
-
- fix-fortify-system-wrappers.patch
- fix-arm-atomics-grsec.patch
- fix-arm-version-detect.patch
+ icu-75.patch
+ jpeg-link.patch
+ js-endian.patch
mozilla-build-arm.patch
- disable-moz-stackwalk.patch
- missing-header-s390x.patch
- ffmpeg4.patch
+ pmmx-double-format.patch
+ ppc32-fix.patch
+ rust-32bit.patch
shut-up-warning.patch
+ skia-endian.patch
+ skia-unified.patch
+ stackwalk-x86-ppc.patch
+ webrender.patch
+ without-jit.patch
firefox.desktop
- firefox-safe.desktop"
-
-builddir="${srcdir}/firefox-${pkgver}esr"/objdir
-_mozappdir=/usr/lib/firefox-${pkgver}
-_mozappdirdev=/usr/lib/firefox-devel-${pkgver}
-
-# help our shared-object scanner to find the libs
+ firefox-safe.desktop
+ "
+builddir="$srcdir/firefox-$pkgver"
+_mozappdir=/usr/lib/firefox
+somask="libgkcodecs.so libipcclientcerts.so liblgpllibs.so libmozavcodec.so
+ libmozavutil.so libmozgtk.so libmozsandbox.so libmozsqlite3.so
+ libmozwayland.so libxul.so"
ldpath="$_mozappdir"
-# secfixes:
-# 52.6.0-r0:
-# - CVE-2018-5089
-# - CVE-2018-5091
-# - CVE-2018-5095
-# - CVE-2018-5096
-# - CVE-2018-5097
-# - CVE-2018-5098
-# - CVE-2018-5099
-# - CVE-2018-5102
-# - CVE-2018-5103
-# - CVE-2018-5104
-# - CVE-2018-5117
-# 52.5.2-r0:
-# - CVE-2017-7843
-# - CVE-2017-7843
-
-unpack() {
- default_unpack
- [ -z $SKIP_PYTHON ] || return 0
- msg "Killing all remaining hope for humanity and building Python 2..."
- cd "$srcdir"
- [ -d python ] && rm -r python
- mkdir python
- cd python
- # 19:39 <+solar> just make the firefox build process build its own py2 copy
- curl -O https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tar.xz
- tar xJf Python-2.7.15.tar.xz
- cd Python-2.7.15
- # 20:03 <calvin> TheWilfox: there's always violence
- ./configure --prefix="$srcdir/python"
- make -j $JOBS
- # 6 tests failed:
- # test__locale test_os test_posix test_re test_strptime test_time
- # make test
- make -j $JOBS install
-}
+# secfixes: firefox-esr
+# 68.0.2-r0:
+# - CVE-2019-11733
prepare() {
- local i
- mkdir -p "$builddir"
- cd "$builddir"/..
-
- for i in $source; do
- case $i in
- *.patch) msg $i; patch -p1 -i "$srcdir"/$i || return 1;;
- esac
- done
- cp "$srcdir"/stab.h toolkit/crashreporter/google-breakpad/src/
+ default_prepare
+ cp "$srcdir"/mozconfig "$builddir"/mozconfig
+ echo "ac_add_options --host=\"$CHOST\"" >> "$builddir"/mozconfig
+ echo "ac_add_options --target=\"$CTARGET\"" >> "$builddir"/mozconfig
+ echo "mk_add_options MOZ_MAKE_FLAGS=\"-j$JOBS\"" >> "$builddir"/mozconfig
+
+ # arch-specific configuration
+ case "$CARCH" in
+ pmmx|x86*|arm*|aarch64)
+ echo "ac_add_options --disable-elf-hack" >> "$builddir"/mozconfig
+ ;;
+ ppc)
+ export LDFLAGS="$LDFLAGS -latomic"
+ ;;
+ s390x)
+ echo "ac_add_options --disable-startupcache" >> "$builddir"/mozconfig
+ ;;
+ esac
+
+ # 32-bit memory ceiling, #1012, #1057
+ case "${CARCH}" in
+ pmmx|x86|ppc|i528|m68k|mips32*|arm*)
+ echo "ac_add_options --disable-debug-symbols" >> "$builddir"/mozconfig
+ echo "ac_add_options --enable-strip" >> "$builddir"/mozconfig
+ CFLAGS="${CFLAGS} -g0";
+ ;;
+ esac
+
+ echo "ac_add_options --enable-optimize=\"$CFLAGS\"" >> "$builddir"/mozconfig
}
build() {
- cd "$builddir"
-
+ export CFLAGS="$CFLAGS -Wno-dangling-pointer -Wno-array-bounds -Wno-comment -Wno-maybe-uninitialized -Wno-misleading-indentation"
+ export CXXFLAGS="$CFLAGS -Wno-class-memaccess -Wno-changes-meaning"
+ export PATH="/usr/lib/llvm${_llvmver}/bin:${PATH}" #1230
export SHELL=/bin/sh
export BUILD_OFFICIAL=1
export MOZILLA_OFFICIAL=1
export USE_SHORT_LIBNAME=1
- # gcc 6
- export CXXFLAGS="-fno-delete-null-pointer-checks -fno-schedule-insns2"
+ export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system
# set rpath so linker finds the libs
export LDFLAGS="$LDFLAGS -Wl,-rpath,${_mozappdir}"
- local extra_flags=""
- [ "$CARCH" = "s390x" ] && extra_flags="--disable-startupcache"
-
- export PATH="$srcdir/python/bin:$PATH"
- ../configure \
- --host=$CHOST \
- --target=$CTARGET \
- --prefix=/usr \
- \
- --disable-crashreporter \
- --disable-elf-hack \
- --disable-install-strip \
- --disable-jemalloc \
- --disable-profiling \
- --disable-strip \
- --disable-tests \
- --disable-updater \
- \
- --enable-alsa \
- --enable-default-toolkit=cairo-gtk3 \
- --enable-gio \
- --enable-gold=no \
- --enable-official-branding \
- --enable-optimize="$CFLAGS" \
- --enable-pie \
- --enable-pulseaudio \
- --enable-startup-notification \
- --enable-system-ffi \
- --enable-system-hunspell \
- --enable-system-sqlite \
- \
- --with-pthreads \
- --with-system-bz2 \
- --with-system-icu \
- --with-system-jpeg \
- --with-system-libevent \
- --with-system-nspr \
- --with-system-nss \
- --with-system-pixman \
- --with-system-png \
- --with-system-zlib \
- $extra_flags
- # too memory hungry
- if [ -z "$JOBS" -o $JOBS -gt 16 ]; then
- make -j16
- else
- make
- fi
+ export UNIXCONFDIR="$srcdir"
+
+ ./mach build
}
-package() {
- cd "$builddir"
+run() {
+ cd "$builddir"/obj-$CHOST/dist/bin
+ export LD_LIBRARY_PATH=.
+ export PROFILE_DIR="$builddir"/obj-$CHOST/tmp/profile-default
+ [ -d $PROFILE_DIR ] || ./firefox -no-remote -CreateProfile "Test $PROFILE_DIR"
+ ./firefox -no-remote -profile "$PROFILE_DIR" about:buildconfig
+}
- export PATH="$srcdir/python/bin:$PATH"
- make install \
- DESTDIR="$pkgdir" \
- MOZ_MAKE_FLAGS="$MAKEOPTS"
+package() {
+ export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system
+ DESTDIR="$pkgdir" ./mach install
install -m755 -d ${pkgdir}/usr/share/applications
install -m755 -d ${pkgdir}/usr/share/pixmaps
- local png
- for png in ../browser/branding/official/default*.png; do
- local i=${_png%.png}
+ for png in browser/branding/official/default*.png; do
+ local i="${_png%.png}"
i=${i##*/default}
install -D -m644 "$png" \
"$pkgdir"/usr/share/icons/hicolor/${i}x${i}/apps/firefox.png
done
- install -m644 "$builddir"/../browser/branding/official/default48.png \
+ install -m644 "$builddir"/browser/branding/official/default48.png \
${pkgdir}/usr/share/pixmaps/firefox.png
install -m644 ${startdir}/firefox.desktop \
${pkgdir}/usr/share/applications/firefox.desktop
install -m644 ${startdir}/firefox-safe.desktop \
${pkgdir}/usr/share/applications/firefox-safe.desktop
- # xulrunner stub launcher has changed to using a symlink overlay...
- # go figure
- ln -sf /usr/lib/xulrunner-${_xulver} ${pkgdir}/$_mozappdir/xulrunner
-
- # launcher as symlink is broken from firefox-7.0
- rm "$pkgdir"/usr/bin/firefox
- libgl=$(scanelf -qF '#F%S' /usr/lib/libGL.so)
- cat > "$pkgdir"/usr/bin/firefox << __EOF__
-#!/bin/sh
-
-exec $_mozappdir/firefox "\$@"
-__EOF__
- chmod 755 "$pkgdir"/usr/bin/firefox
-
# install our vendor prefs
install -d "$pkgdir"/$_mozappdir/browser/defaults/preferences
@@ -218,36 +156,25 @@ __EOF__
pref("extensions.autoDisableScopes", 11);
pref("extensions.shownSelectionUI", true);
EOF
-
- # remove copied, huge, libraries
- rm -f "$pkgdir"/${_mozappdirdev}/sdk/lib/libmozjs.so
- rm -f "$pkgdir"/${_mozappdirdev}/sdk/lib/libmozalloc.so
- rm -f "$pkgdir"/${_mozappdirdev}/sdk/lib/libxul.so
-}
-
-dev() {
- mkdir -p "$subpkgdir"/${_mozappdirdev%/*}
- mv "$pkgdir"/${_mozappdirdev} "$subpkgdir"/${_mozappdirdev%/*}
- default_dev
}
-sha512sums="bfca42668ca78a12a9fb56368f4aae5334b1f7a71966fbba4c32b9c5e6597aac79a6e340ac3966779d2d5563eb47c054ab33cc40bfb7306172138ccbd3adb2b9 firefox-52.9.0esr.source.tar.xz
-0b3f1e4b9fdc868e4738b5c81fd6c6128ce8885b260affcb9a65ff9d164d7232626ce1291aaea70132b3e3124f5e13fef4d39326b8e7173e362a823722a85127 stab.h
-7e123144bc2b1efed149dfb41b255c447d43ea93a63ebe114d01945e6a6d69edc2f2a3c36980a93279106c1842355851b8b6c1d96679ee6be7b9b30513e0b1a8 0002-Use-C99-math-isfinite.patch
-09bc32cf9ee81b9cc6bb58ddbc66e6cc5c344badff8de3435cde5848e5a451e0172153231db85c2385ff05b5d9c20760cb18e4138dfc99060a9e960de2befbd5 fix-fortify-inline.patch
-0fcc647af53a3ce21c2bc36e5631eb0935e7243ebb3ab59b5719542cc54a6ac023a4a857b43b75756efb9ed80c0aecaa94dc5679a3b3792f82e87bf2c1af82e1 disable-hunspell_hooks.patch
-70863b985427b9653ce5e28d6064f078fb6d4ccf43dd1b68e72f97f44868fc0ce063161c39a4e77a0a1a207b7365d5dc7a7ca5e68c726825eba814f2b93e2f5d fix-seccomp-bpf.patch
-a2925045154f4fd34e5fc056656f4f9da100341529e5d4104d249154db0c7863384083f421ce6e47e0f20566a8b20787fa35444c7933c03cd03f96f06dcd4532 fix-toolkit.patch
-7d7531a0dbb1b3c2f4cbf155168e750f274dbf19cd767d6395d479ef1626a651e714b41e353465d9d58239dc15256d83eeb1bf06c6adf47c521a0db5ee88bb50 fix-tools.patch
-bdcd1b402d2ec94957ba5d08cbad7b1a7f59c251c311be9095208491a05abb05a956c79f27908e1f26b54a3679387b2f33a51e945b650671ad85c0a2d59a5a29 mallinfo.patch
-3f535b1e4e9a5a0506ef6f6d9427a84fae1efa3c8e8d6b25b21046d2d04c132bde1a7a98e415067e5c542f699d89249b8cc3d925e0be4e96db498037429691ef musl-pthread-setname.patch
-2a967e4619fd89a046bd40be7fdcef646fcb1eba5e47afc96aa1d59c25bcc8747cb07baee6c11f3b803db0981aced181534b806778e4d21e74958f5f4d74c784 fix-fortify-system-wrappers.patch
-ed0d344c66fc8e1cc83a11e9858b32c42e841cbeedd9eb9438811e9fcc3593dc824a8336d00058d55836cedc970aeadd6a82c6dcd7bc0fb746e564d8b478cc6c fix-arm-atomics-grsec.patch
-015e1ff6dbf920033982b5df95d869a0b7bf56c6964e45e50649ddf46d1ce09563458e45240c3ecb92808662b1300b67507f7af272ba184835d91068a9e7d5b0 fix-arm-version-detect.patch
-e61664bc93eadce5016a06a4d0684b34a05074f1815e88ef2613380d7b369c6fd305fb34f83b5eb18b9e3138273ea8ddcfdcb1084fdcaa922a1e5b30146a3b18 mozilla-build-arm.patch
-4797d2d89ac63a57abb826b8ea9f751314ce66946194033deb9d78c2ff377b88106fd2c7bc5034dc13ad03dd5085b1893c3ccae1a9e63fde35655bb0921f7188 disable-moz-stackwalk.patch
-6beba471b6a7fc229a9c105d58137f80cec07219e52bb9a666c787b37ca88635d6ec2eba651eccb5096429c2965709c9475c89839c255c3545f8c96c5d40f403 missing-header-s390x.patch
-1e2d0321afb0fc3bb0f6e1f1d7c0621f574414fa3d2696ec30c0e4ebf7738aa4f74a15017f18fae3561f1bc72932ccfb7e5be0e608b878fca5558fb265c16860 ffmpeg4.patch
-21100340ff03f4257fa6a4b59e206d4d1b71c074ebae392ba616f9e6e6d4988a22eec69b40534221f9453ec3a58397fa4ab99b87abdcb7d22fabb13f9cc577d2 shut-up-warning.patch
+sha512sums="6e7363d8cbecda1cedaf534ac10dc046b5f515399ec754492357e8a558c61ee3389f7bb90aa929dbcb4d6eba041ae1e778a0a8f90aa1e1f939eea517333b6c45 firefox-128.10.1esr.source.tar.xz
+aaeec88eda3ca5ef00503f2e1656f8a143017d5ff60bd289ce7a49b7f8352ce5b61556c732e5eb3b6859e1c30551219eb5bbb954e9b88eca8d3f44683bdd747d mozconfig
+1fff71be77aa34791ef8aa972b5dc5f131d79f4b895ebbfb59bc223078764d6f79c82a3a4e4c717a3893ecbe4907d556f27e97d2692e41f02365f06da759a71a bad-google-code.patch
+5e6c3fa027052cc43ba161cf5c12016b07723e7c0b002a42431bbd5d716d512d5245ab6befbb56c37c7d244441533f810f4e7b583f83bbe965981931f1435a94 fix-mutex-build.patch
+9f2892eff9d09f3eed1f9a9ee98ba9c6a6826c30ccdeabfefb8733abc98e7b612418827262423568e830c6354a2b8242f471bc200b7079f21862bb00947da716 fix-seccomp-bpf.patch
+0a84e8cb6604fdb7601745b60c04ee74733632ada32bfd85eb32db8fee095cfb79c82033e5e3cf3bbc7b7f4df753e86ffe18e26e63a6603a93c3bb5a459aabd3 icu-75.patch
+a2400c8df888637d9ebe33d82dc2fb95792685c9938b5486230a5c15bc819cbb850a2bdcb54a775516652fc8ffd6b40f8c591ab7941211f9516064101380ebbf jpeg-link.patch
+d40e6c1a6e62d5e1dc350dc0bbaf2b8488b19ea0911532784f1df1199a7a5af0aae81b0b0d77c4398a2d903d86b5560f4442386eb446d9af8d58e73eea475e4f js-endian.patch
+9f5730ee3a29b86786089abcfffab32bf2210f1a1ec43260ae824a08acda687dbfa37306b82a4978dd022bcf747eab155f7f3c5f73a1375f1c3c4fcd106dae3e mozilla-build-arm.patch
+1864c6c63c647f3ed1b3ca4df7f52a2c7ec4c65f2e067a9842d24a242f01e047d59ffbf88ad3740d830df1eb0bade929e245e640db135fe14f4c0d879269cb7e pmmx-double-format.patch
+06a3f4ee6d3726adf3460952fcbaaf24bb15ef8d15b3357fdd1766c7a62b00bd53a1e943b5df7f4e1a69f4fae0d44b64fae1e027d7812499c77894975969ea10 ppc32-fix.patch
+e1c8a85c46a9cc804eb6b5946d35b63fa2cfc7ad8b4f250c5eaf1b590b139a66d9a833246bc26ae2e340fffb81b6761cf51c600181895bd49feb9a3b8fbfe331 rust-32bit.patch
+c2248297df00633771da7e6b9f2caba3dd5108d93617f652fa8b2fb4e6975821e5fee866c00713f8fce08e760fa456e2dd19a8ef7370e5a2c65dc09614526be9 shut-up-warning.patch
+11f7ce86376b54281082fa5b9d3fefee8046eabe38a0ec17266764b4f62cb90f4744245c1ca93d73ed74cf81c066dab7ddcb3fe9704be8f91e0a2a4f664b203a skia-endian.patch
+a6a14104ee6985867efb1937a262aba1538ed4b069bba56e400d75f51d84d29363d8bbb2183ee27785758ad3a8b8ae4350e23dc854d50c92cb2147eddf83b9bb skia-unified.patch
+9df89366bd51670f534591e4c169186703ad3166a493f522e58f129fb79af375d71baaf0f6b238126792118a2d3ed0f011b010e39497ab5901ee5bea63a84fa2 stackwalk-x86-ppc.patch
+7d6c5f3cafd29eae4e7c5433b14f49cc679eebdcb4e602af18819f685500747a6daa8d38fbb0f91878331b14ce299ca8b731f62ab013b69e579fc450b29fe743 webrender.patch
+ed78e15030d79b10026ebae26e44a68d16c2a8567082072b5099b0dde4f79ae217a21737e0d9c7ec6a3cc99de3ab3c9083cca7d82889d559bb18cc15fa7e6f2a without-jit.patch
f3b7c3e804ce04731012a46cb9e9a6b0769e3772aef9c0a4a8c7520b030fdf6cd703d5e9ff49275f14b7d738fe82a0a4fde3bc3219dff7225d5db0e274987454 firefox.desktop
5dcb6288d0444a8a471d669bbaf61cdb1433663eff38b72ee5e980843f5fc07d0d60c91627a2c1159215d0ad77ae3f115dcc5fdfe87e64ca704b641aceaa44ed firefox-safe.desktop"
diff --git a/user/firefox-esr/bad-google-code.patch b/user/firefox-esr/bad-google-code.patch
new file mode 100644
index 000000000..31659370d
--- /dev/null
+++ b/user/firefox-esr/bad-google-code.patch
@@ -0,0 +1,49 @@
+--- firefox-esr-60.2.1/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc
++++ firefox-esr-60.2.1/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc
+@@ -47,6 +47,7 @@
+ #include <sys/mman.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
++#include <libgen.h>
+
+ #include <iostream>
+ #include <set>
+--- firefox-esr-60.2.1/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc
++++ firefox-esr-60.2.1/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc
+@@ -41,6 +41,10 @@
+
+ #include "common/using_std_string.h"
+
++#ifndef N_UNDF
++#define N_UNDF 0
++#endif
++
+ using std::vector;
+
+ namespace google_breakpad {
+--- firefox-esr-60.2.1/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h
++++ firefox-esr-60.2.1/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h
+@@ -55,7 +55,7 @@
+
+ #ifdef HAVE_MACH_O_NLIST_H
+ #include <mach-o/nlist.h>
+-#elif defined(HAVE_A_OUT_H)
++#elif 0
+ #include <a.out.h>
+ #endif
+
+--- firefox-esr-60.2.1/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h
++++ firefox-esr-60.2.1/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h
+@@ -1246,6 +1246,12 @@ struct kernel_statfs {
+ #ifndef __NR_fallocate
+ #define __NR_fallocate 285
+ #endif
++
++#undef __NR_pread
++#define __NR_pread __NR_pread64
++#undef __NR_pwrite
++#define __NR_pwrite __NR_pwrite64
++
+ /* End of x86-64 definitions */
+ #elif defined(__mips__)
+ #if _MIPS_SIM == _MIPS_SIM_ABI32
diff --git a/user/firefox-esr/disable-hunspell_hooks.patch b/user/firefox-esr/disable-hunspell_hooks.patch
deleted file mode 100644
index 1eaa4d035..000000000
--- a/user/firefox-esr/disable-hunspell_hooks.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/mozilla-config.h.in 2016-07-06 15:16:06.621880293 +0200
-+++ b/mozilla-config.h.in 2016-07-06 15:16:42.958428126 +0200
-@@ -54,7 +54,7 @@
- * HUNSPELL_STATIC is defined in extensions/spellcheck/hunspell/src/Makefile.in,
- * unless --enable-system-hunspell is defined.
- */
--#if defined(HUNSPELL_STATIC)
-+#if 0
- #include "hunspell_alloc_hooks.h"
- #include "hunspell_fopen_hooks.h"
- #endif
diff --git a/user/firefox-esr/disable-moz-stackwalk.patch b/user/firefox-esr/disable-moz-stackwalk.patch
deleted file mode 100644
index c83ae7eae..000000000
--- a/user/firefox-esr/disable-moz-stackwalk.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-diff --git a/mozglue/misc/StackWalk.cpp b/mozglue/misc/StackWalk.cpp
-index a208bad..14e1f0d 100644
---- a/mozglue/misc/StackWalk.cpp
-+++ b/mozglue/misc/StackWalk.cpp
-@@ -41,13 +41,7 @@ static CriticalAddress gCriticalAddress;
- #define MOZ_STACKWALK_SUPPORTS_MACOSX 0
- #endif
-
--#if (defined(linux) && \
-- ((defined(__GNUC__) && (defined(__i386) || defined(PPC))) || \
-- defined(HAVE__UNWIND_BACKTRACE)))
--#define MOZ_STACKWALK_SUPPORTS_LINUX 1
--#else
- #define MOZ_STACKWALK_SUPPORTS_LINUX 0
--#endif
-
- #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1)
- #define HAVE___LIBC_STACK_END 1
diff --git a/user/firefox-esr/ffmpeg4.patch b/user/firefox-esr/ffmpeg4.patch
deleted file mode 100644
index 5dbd53185..000000000
--- a/user/firefox-esr/ffmpeg4.patch
+++ /dev/null
@@ -1,13560 +0,0 @@
-Support ffmpeg 4 in firefox-esr 52
-Based on https://hg.mozilla.org/integration/autoland/rev/573a198b7fdf
-
-Only dom/media/platforms/ffmpeg/FFmpegVideoDecoder.cpp was skipped
-
---- firefox-52.9.0esr/dom/media/platforms/ffmpeg/FFmpegDataDecoder.cpp
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/FFmpegDataDecoder.cpp
-@@ -69,15 +69,21 @@
- mCodecContext->extradata_size = mExtraData->Length();
- // FFmpeg may use SIMD instructions to access the data which reads the
- // data in 32 bytes block. Must ensure we have enough data to read.
-+#if LIBAVCODEC_VERSION_MAJOR >= 58
-+ mExtraData->AppendElements(AV_INPUT_BUFFER_PADDING_SIZE);
-+#else
- mExtraData->AppendElements(FF_INPUT_BUFFER_PADDING_SIZE);
-+#endif
- mCodecContext->extradata = mExtraData->Elements();
- } else {
- mCodecContext->extradata_size = 0;
- }
-
-+#if LIBAVCODEC_VERSION_MAJOR < 57
- if (codec->capabilities & CODEC_CAP_DR1) {
- mCodecContext->flags |= CODEC_FLAG_EMU_EDGE;
- }
-+#endif
-
- if (mLib->avcodec_open2(mCodecContext, codec, nullptr) < 0) {
- NS_WARNING("Couldn't initialise ffmpeg decoder");
---- firefox-52.9.0esr/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/FFmpegLibWrapper.cpp
-@@ -69,12 +69,14 @@
- AV_FUNC_55 = 1 << 2,
- AV_FUNC_56 = 1 << 3,
- AV_FUNC_57 = 1 << 4,
-+ AV_FUNC_58 = 1 << 5,
- AV_FUNC_AVUTIL_53 = AV_FUNC_53 | AV_FUNC_AVUTIL_MASK,
- AV_FUNC_AVUTIL_54 = AV_FUNC_54 | AV_FUNC_AVUTIL_MASK,
- AV_FUNC_AVUTIL_55 = AV_FUNC_55 | AV_FUNC_AVUTIL_MASK,
- AV_FUNC_AVUTIL_56 = AV_FUNC_56 | AV_FUNC_AVUTIL_MASK,
- AV_FUNC_AVUTIL_57 = AV_FUNC_57 | AV_FUNC_AVUTIL_MASK,
-- AV_FUNC_AVCODEC_ALL = AV_FUNC_53 | AV_FUNC_54 | AV_FUNC_55 | AV_FUNC_56 | AV_FUNC_57,
-+ AV_FUNC_AVUTIL_58 = AV_FUNC_58 | AV_FUNC_AVUTIL_MASK,
-+ AV_FUNC_AVCODEC_ALL = AV_FUNC_53 | AV_FUNC_54 | AV_FUNC_55 | AV_FUNC_56 | AV_FUNC_57 | AV_FUNC_58,
- AV_FUNC_AVUTIL_ALL = AV_FUNC_AVCODEC_ALL | AV_FUNC_AVUTIL_MASK
- };
-
-@@ -94,6 +96,9 @@
- case 57:
- version = AV_FUNC_57;
- break;
-+ case 58:
-+ version = AV_FUNC_58;
-+ break;
- default:
- FFMPEG_LOG("Unknown avcodec version");
- Unlink();
-@@ -142,9 +147,9 @@
- AV_FUNC(av_log_set_level, AV_FUNC_AVUTIL_ALL)
- AV_FUNC(av_malloc, AV_FUNC_AVUTIL_ALL)
- AV_FUNC(av_freep, AV_FUNC_AVUTIL_ALL)
-- AV_FUNC(av_frame_alloc, (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57))
-- AV_FUNC(av_frame_free, (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57))
-- AV_FUNC(av_frame_unref, (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57))
-+ AV_FUNC(av_frame_alloc, (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58))
-+ AV_FUNC(av_frame_free, (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58))
-+ AV_FUNC(av_frame_unref, (AV_FUNC_AVUTIL_55 | AV_FUNC_AVUTIL_56 | AV_FUNC_AVUTIL_57 | AV_FUNC_AVUTIL_58))
- AV_FUNC_OPTION(av_frame_get_colorspace, AV_FUNC_AVUTIL_ALL)
- #undef AV_FUNC
- #undef AV_FUNC_OPTION
---- firefox-52.9.0esr/dom/media/platforms/ffmpeg/FFmpegLibs.h
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/FFmpegLibs.h
-@@ -29,6 +29,9 @@
- #define AV_CODEC_ID_FLAC CODEC_ID_FLAC
- typedef CodecID AVCodecID;
- #endif
-+#if LIBAVCODEC_VERSION_MAJOR <= 55
-+#define AV_CODEC_FLAG_LOW_DELAY CODEC_FLAG_LOW_DELAY
-+#endif
-
- #ifdef FFVPX_VERSION
- enum { LIBAV_VER = FFVPX_VERSION };
---- firefox-52.9.0esr/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/FFmpegRuntimeLinker.cpp
-@@ -21,22 +21,25 @@ template <int V> class FFmpegDecoderModu
- public:
- static already_AddRefed<PlatformDecoderModule> Create(FFmpegLibWrapper*);
- };
-
- static FFmpegLibWrapper sLibAV;
-
- static const char* sLibs[] = {
- #if defined(XP_DARWIN)
-+ "libavcodec.58.dylib",
- "libavcodec.57.dylib",
- "libavcodec.56.dylib",
- "libavcodec.55.dylib",
- "libavcodec.54.dylib",
- "libavcodec.53.dylib",
- #else
-+ "libavcodec.so.58",
-+ "libavcodec-ffmpeg.so.58",
- "libavcodec-ffmpeg.so.57",
- "libavcodec-ffmpeg.so.56",
- "libavcodec.so.57",
- "libavcodec.so.56",
- "libavcodec.so.55",
- "libavcodec.so.54",
- "libavcodec.so.53",
- #endif
-@@ -129,16 +132,17 @@ FFmpegRuntimeLinker::CreateDecoderModule
- }
- RefPtr<PlatformDecoderModule> module;
- switch (sLibAV.mVersion) {
- case 53: module = FFmpegDecoderModule<53>::Create(&sLibAV); break;
- case 54: module = FFmpegDecoderModule<54>::Create(&sLibAV); break;
- case 55:
- case 56: module = FFmpegDecoderModule<55>::Create(&sLibAV); break;
- case 57: module = FFmpegDecoderModule<57>::Create(&sLibAV); break;
-+ case 58: module = FFmpegDecoderModule<58>::Create(&sLibAV); break;
- default: module = nullptr;
- }
- return module.forget();
- }
-
- /* static */ const char*
- FFmpegRuntimeLinker::LinkStatusString()
- {
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/COPYING.LGPLv2.1
-@@ -0,0 +1,504 @@
-+ GNU LESSER GENERAL PUBLIC LICENSE
-+ Version 2.1, February 1999
-+
-+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
-+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ Everyone is permitted to copy and distribute verbatim copies
-+ of this license document, but changing it is not allowed.
-+
-+[This is the first released version of the Lesser GPL. It also counts
-+ as the successor of the GNU Library Public License, version 2, hence
-+ the version number 2.1.]
-+
-+ Preamble
-+
-+ The licenses for most software are designed to take away your
-+freedom to share and change it. By contrast, the GNU General Public
-+Licenses are intended to guarantee your freedom to share and change
-+free software--to make sure the software is free for all its users.
-+
-+ This license, the Lesser General Public License, applies to some
-+specially designated software packages--typically libraries--of the
-+Free Software Foundation and other authors who decide to use it. You
-+can use it too, but we suggest you first think carefully about whether
-+this license or the ordinary General Public License is the better
-+strategy to use in any particular case, based on the explanations below.
-+
-+ When we speak of free software, we are referring to freedom of use,
-+not price. Our General Public Licenses are designed to make sure that
-+you have the freedom to distribute copies of free software (and charge
-+for this service if you wish); that you receive source code or can get
-+it if you want it; that you can change the software and use pieces of
-+it in new free programs; and that you are informed that you can do
-+these things.
-+
-+ To protect your rights, we need to make restrictions that forbid
-+distributors to deny you these rights or to ask you to surrender these
-+rights. These restrictions translate to certain responsibilities for
-+you if you distribute copies of the library or if you modify it.
-+
-+ For example, if you distribute copies of the library, whether gratis
-+or for a fee, you must give the recipients all the rights that we gave
-+you. You must make sure that they, too, receive or can get the source
-+code. If you link other code with the library, you must provide
-+complete object files to the recipients, so that they can relink them
-+with the library after making changes to the library and recompiling
-+it. And you must show them these terms so they know their rights.
-+
-+ We protect your rights with a two-step method: (1) we copyright the
-+library, and (2) we offer you this license, which gives you legal
-+permission to copy, distribute and/or modify the library.
-+
-+ To protect each distributor, we want to make it very clear that
-+there is no warranty for the free library. Also, if the library is
-+modified by someone else and passed on, the recipients should know
-+that what they have is not the original version, so that the original
-+author's reputation will not be affected by problems that might be
-+introduced by others.
-+
-+ Finally, software patents pose a constant threat to the existence of
-+any free program. We wish to make sure that a company cannot
-+effectively restrict the users of a free program by obtaining a
-+restrictive license from a patent holder. Therefore, we insist that
-+any patent license obtained for a version of the library must be
-+consistent with the full freedom of use specified in this license.
-+
-+ Most GNU software, including some libraries, is covered by the
-+ordinary GNU General Public License. This license, the GNU Lesser
-+General Public License, applies to certain designated libraries, and
-+is quite different from the ordinary General Public License. We use
-+this license for certain libraries in order to permit linking those
-+libraries into non-free programs.
-+
-+ When a program is linked with a library, whether statically or using
-+a shared library, the combination of the two is legally speaking a
-+combined work, a derivative of the original library. The ordinary
-+General Public License therefore permits such linking only if the
-+entire combination fits its criteria of freedom. The Lesser General
-+Public License permits more lax criteria for linking other code with
-+the library.
-+
-+ We call this license the "Lesser" General Public License because it
-+does Less to protect the user's freedom than the ordinary General
-+Public License. It also provides other free software developers Less
-+of an advantage over competing non-free programs. These disadvantages
-+are the reason we use the ordinary General Public License for many
-+libraries. However, the Lesser license provides advantages in certain
-+special circumstances.
-+
-+ For example, on rare occasions, there may be a special need to
-+encourage the widest possible use of a certain library, so that it becomes
-+a de-facto standard. To achieve this, non-free programs must be
-+allowed to use the library. A more frequent case is that a free
-+library does the same job as widely used non-free libraries. In this
-+case, there is little to gain by limiting the free library to free
-+software only, so we use the Lesser General Public License.
-+
-+ In other cases, permission to use a particular library in non-free
-+programs enables a greater number of people to use a large body of
-+free software. For example, permission to use the GNU C Library in
-+non-free programs enables many more people to use the whole GNU
-+operating system, as well as its variant, the GNU/Linux operating
-+system.
-+
-+ Although the Lesser General Public License is Less protective of the
-+users' freedom, it does ensure that the user of a program that is
-+linked with the Library has the freedom and the wherewithal to run
-+that program using a modified version of the Library.
-+
-+ The precise terms and conditions for copying, distribution and
-+modification follow. Pay close attention to the difference between a
-+"work based on the library" and a "work that uses the library". The
-+former contains code derived from the library, whereas the latter must
-+be combined with the library in order to run.
-+
-+ GNU LESSER GENERAL PUBLIC LICENSE
-+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-+
-+ 0. This License Agreement applies to any software library or other
-+program which contains a notice placed by the copyright holder or
-+other authorized party saying it may be distributed under the terms of
-+this Lesser General Public License (also called "this License").
-+Each licensee is addressed as "you".
-+
-+ A "library" means a collection of software functions and/or data
-+prepared so as to be conveniently linked with application programs
-+(which use some of those functions and data) to form executables.
-+
-+ The "Library", below, refers to any such software library or work
-+which has been distributed under these terms. A "work based on the
-+Library" means either the Library or any derivative work under
-+copyright law: that is to say, a work containing the Library or a
-+portion of it, either verbatim or with modifications and/or translated
-+straightforwardly into another language. (Hereinafter, translation is
-+included without limitation in the term "modification".)
-+
-+ "Source code" for a work means the preferred form of the work for
-+making modifications to it. For a library, complete source code means
-+all the source code for all modules it contains, plus any associated
-+interface definition files, plus the scripts used to control compilation
-+and installation of the library.
-+
-+ Activities other than copying, distribution and modification are not
-+covered by this License; they are outside its scope. The act of
-+running a program using the Library is not restricted, and output from
-+such a program is covered only if its contents constitute a work based
-+on the Library (independent of the use of the Library in a tool for
-+writing it). Whether that is true depends on what the Library does
-+and what the program that uses the Library does.
-+
-+ 1. You may copy and distribute verbatim copies of the Library's
-+complete source code as you receive it, in any medium, provided that
-+you conspicuously and appropriately publish on each copy an
-+appropriate copyright notice and disclaimer of warranty; keep intact
-+all the notices that refer to this License and to the absence of any
-+warranty; and distribute a copy of this License along with the
-+Library.
-+
-+ You may charge a fee for the physical act of transferring a copy,
-+and you may at your option offer warranty protection in exchange for a
-+fee.
-+
-+ 2. You may modify your copy or copies of the Library or any portion
-+of it, thus forming a work based on the Library, and copy and
-+distribute such modifications or work under the terms of Section 1
-+above, provided that you also meet all of these conditions:
-+
-+ a) The modified work must itself be a software library.
-+
-+ b) You must cause the files modified to carry prominent notices
-+ stating that you changed the files and the date of any change.
-+
-+ c) You must cause the whole of the work to be licensed at no
-+ charge to all third parties under the terms of this License.
-+
-+ d) If a facility in the modified Library refers to a function or a
-+ table of data to be supplied by an application program that uses
-+ the facility, other than as an argument passed when the facility
-+ is invoked, then you must make a good faith effort to ensure that,
-+ in the event an application does not supply such function or
-+ table, the facility still operates, and performs whatever part of
-+ its purpose remains meaningful.
-+
-+ (For example, a function in a library to compute square roots has
-+ a purpose that is entirely well-defined independent of the
-+ application. Therefore, Subsection 2d requires that any
-+ application-supplied function or table used by this function must
-+ be optional: if the application does not supply it, the square
-+ root function must still compute square roots.)
-+
-+These requirements apply to the modified work as a whole. If
-+identifiable sections of that work are not derived from the Library,
-+and can be reasonably considered independent and separate works in
-+themselves, then this License, and its terms, do not apply to those
-+sections when you distribute them as separate works. But when you
-+distribute the same sections as part of a whole which is a work based
-+on the Library, the distribution of the whole must be on the terms of
-+this License, whose permissions for other licensees extend to the
-+entire whole, and thus to each and every part regardless of who wrote
-+it.
-+
-+Thus, it is not the intent of this section to claim rights or contest
-+your rights to work written entirely by you; rather, the intent is to
-+exercise the right to control the distribution of derivative or
-+collective works based on the Library.
-+
-+In addition, mere aggregation of another work not based on the Library
-+with the Library (or with a work based on the Library) on a volume of
-+a storage or distribution medium does not bring the other work under
-+the scope of this License.
-+
-+ 3. You may opt to apply the terms of the ordinary GNU General Public
-+License instead of this License to a given copy of the Library. To do
-+this, you must alter all the notices that refer to this License, so
-+that they refer to the ordinary GNU General Public License, version 2,
-+instead of to this License. (If a newer version than version 2 of the
-+ordinary GNU General Public License has appeared, then you can specify
-+that version instead if you wish.) Do not make any other change in
-+these notices.
-+
-+ Once this change is made in a given copy, it is irreversible for
-+that copy, so the ordinary GNU General Public License applies to all
-+subsequent copies and derivative works made from that copy.
-+
-+ This option is useful when you wish to copy part of the code of
-+the Library into a program that is not a library.
-+
-+ 4. You may copy and distribute the Library (or a portion or
-+derivative of it, under Section 2) in object code or executable form
-+under the terms of Sections 1 and 2 above provided that you accompany
-+it with the complete corresponding machine-readable source code, which
-+must be distributed under the terms of Sections 1 and 2 above on a
-+medium customarily used for software interchange.
-+
-+ If distribution of object code is made by offering access to copy
-+from a designated place, then offering equivalent access to copy the
-+source code from the same place satisfies the requirement to
-+distribute the source code, even though third parties are not
-+compelled to copy the source along with the object code.
-+
-+ 5. A program that contains no derivative of any portion of the
-+Library, but is designed to work with the Library by being compiled or
-+linked with it, is called a "work that uses the Library". Such a
-+work, in isolation, is not a derivative work of the Library, and
-+therefore falls outside the scope of this License.
-+
-+ However, linking a "work that uses the Library" with the Library
-+creates an executable that is a derivative of the Library (because it
-+contains portions of the Library), rather than a "work that uses the
-+library". The executable is therefore covered by this License.
-+Section 6 states terms for distribution of such executables.
-+
-+ When a "work that uses the Library" uses material from a header file
-+that is part of the Library, the object code for the work may be a
-+derivative work of the Library even though the source code is not.
-+Whether this is true is especially significant if the work can be
-+linked without the Library, or if the work is itself a library. The
-+threshold for this to be true is not precisely defined by law.
-+
-+ If such an object file uses only numerical parameters, data
-+structure layouts and accessors, and small macros and small inline
-+functions (ten lines or less in length), then the use of the object
-+file is unrestricted, regardless of whether it is legally a derivative
-+work. (Executables containing this object code plus portions of the
-+Library will still fall under Section 6.)
-+
-+ Otherwise, if the work is a derivative of the Library, you may
-+distribute the object code for the work under the terms of Section 6.
-+Any executables containing that work also fall under Section 6,
-+whether or not they are linked directly with the Library itself.
-+
-+ 6. As an exception to the Sections above, you may also combine or
-+link a "work that uses the Library" with the Library to produce a
-+work containing portions of the Library, and distribute that work
-+under terms of your choice, provided that the terms permit
-+modification of the work for the customer's own use and reverse
-+engineering for debugging such modifications.
-+
-+ You must give prominent notice with each copy of the work that the
-+Library is used in it and that the Library and its use are covered by
-+this License. You must supply a copy of this License. If the work
-+during execution displays copyright notices, you must include the
-+copyright notice for the Library among them, as well as a reference
-+directing the user to the copy of this License. Also, you must do one
-+of these things:
-+
-+ a) Accompany the work with the complete corresponding
-+ machine-readable source code for the Library including whatever
-+ changes were used in the work (which must be distributed under
-+ Sections 1 and 2 above); and, if the work is an executable linked
-+ with the Library, with the complete machine-readable "work that
-+ uses the Library", as object code and/or source code, so that the
-+ user can modify the Library and then relink to produce a modified
-+ executable containing the modified Library. (It is understood
-+ that the user who changes the contents of definitions files in the
-+ Library will not necessarily be able to recompile the application
-+ to use the modified definitions.)
-+
-+ b) Use a suitable shared library mechanism for linking with the
-+ Library. A suitable mechanism is one that (1) uses at run time a
-+ copy of the library already present on the user's computer system,
-+ rather than copying library functions into the executable, and (2)
-+ will operate properly with a modified version of the library, if
-+ the user installs one, as long as the modified version is
-+ interface-compatible with the version that the work was made with.
-+
-+ c) Accompany the work with a written offer, valid for at
-+ least three years, to give the same user the materials
-+ specified in Subsection 6a, above, for a charge no more
-+ than the cost of performing this distribution.
-+
-+ d) If distribution of the work is made by offering access to copy
-+ from a designated place, offer equivalent access to copy the above
-+ specified materials from the same place.
-+
-+ e) Verify that the user has already received a copy of these
-+ materials or that you have already sent this user a copy.
-+
-+ For an executable, the required form of the "work that uses the
-+Library" must include any data and utility programs needed for
-+reproducing the executable from it. However, as a special exception,
-+the materials to be distributed need not include anything that is
-+normally distributed (in either source or binary form) with the major
-+components (compiler, kernel, and so on) of the operating system on
-+which the executable runs, unless that component itself accompanies
-+the executable.
-+
-+ It may happen that this requirement contradicts the license
-+restrictions of other proprietary libraries that do not normally
-+accompany the operating system. Such a contradiction means you cannot
-+use both them and the Library together in an executable that you
-+distribute.
-+
-+ 7. You may place library facilities that are a work based on the
-+Library side-by-side in a single library together with other library
-+facilities not covered by this License, and distribute such a combined
-+library, provided that the separate distribution of the work based on
-+the Library and of the other library facilities is otherwise
-+permitted, and provided that you do these two things:
-+
-+ a) Accompany the combined library with a copy of the same work
-+ based on the Library, uncombined with any other library
-+ facilities. This must be distributed under the terms of the
-+ Sections above.
-+
-+ b) Give prominent notice with the combined library of the fact
-+ that part of it is a work based on the Library, and explaining
-+ where to find the accompanying uncombined form of the same work.
-+
-+ 8. You may not copy, modify, sublicense, link with, or distribute
-+the Library except as expressly provided under this License. Any
-+attempt otherwise to copy, modify, sublicense, link with, or
-+distribute the Library is void, and will automatically terminate your
-+rights under this License. However, parties who have received copies,
-+or rights, from you under this License will not have their licenses
-+terminated so long as such parties remain in full compliance.
-+
-+ 9. You are not required to accept this License, since you have not
-+signed it. However, nothing else grants you permission to modify or
-+distribute the Library or its derivative works. These actions are
-+prohibited by law if you do not accept this License. Therefore, by
-+modifying or distributing the Library (or any work based on the
-+Library), you indicate your acceptance of this License to do so, and
-+all its terms and conditions for copying, distributing or modifying
-+the Library or works based on it.
-+
-+ 10. Each time you redistribute the Library (or any work based on the
-+Library), the recipient automatically receives a license from the
-+original licensor to copy, distribute, link with or modify the Library
-+subject to these terms and conditions. You may not impose any further
-+restrictions on the recipients' exercise of the rights granted herein.
-+You are not responsible for enforcing compliance by third parties with
-+this License.
-+
-+ 11. If, as a consequence of a court judgment or allegation of patent
-+infringement or for any other reason (not limited to patent issues),
-+conditions are imposed on you (whether by court order, agreement or
-+otherwise) that contradict the conditions of this License, they do not
-+excuse you from the conditions of this License. If you cannot
-+distribute so as to satisfy simultaneously your obligations under this
-+License and any other pertinent obligations, then as a consequence you
-+may not distribute the Library at all. For example, if a patent
-+license would not permit royalty-free redistribution of the Library by
-+all those who receive copies directly or indirectly through you, then
-+the only way you could satisfy both it and this License would be to
-+refrain entirely from distribution of the Library.
-+
-+If any portion of this section is held invalid or unenforceable under any
-+particular circumstance, the balance of the section is intended to apply,
-+and the section as a whole is intended to apply in other circumstances.
-+
-+It is not the purpose of this section to induce you to infringe any
-+patents or other property right claims or to contest validity of any
-+such claims; this section has the sole purpose of protecting the
-+integrity of the free software distribution system which is
-+implemented by public license practices. Many people have made
-+generous contributions to the wide range of software distributed
-+through that system in reliance on consistent application of that
-+system; it is up to the author/donor to decide if he or she is willing
-+to distribute software through any other system and a licensee cannot
-+impose that choice.
-+
-+This section is intended to make thoroughly clear what is believed to
-+be a consequence of the rest of this License.
-+
-+ 12. If the distribution and/or use of the Library is restricted in
-+certain countries either by patents or by copyrighted interfaces, the
-+original copyright holder who places the Library under this License may add
-+an explicit geographical distribution limitation excluding those countries,
-+so that distribution is permitted only in or among countries not thus
-+excluded. In such case, this License incorporates the limitation as if
-+written in the body of this License.
-+
-+ 13. The Free Software Foundation may publish revised and/or new
-+versions of the Lesser General Public License from time to time.
-+Such new versions will be similar in spirit to the present version,
-+but may differ in detail to address new problems or concerns.
-+
-+Each version is given a distinguishing version number. If the Library
-+specifies a version number of this License which applies to it and
-+"any later version", you have the option of following the terms and
-+conditions either of that version or of any later version published by
-+the Free Software Foundation. If the Library does not specify a
-+license version number, you may choose any version ever published by
-+the Free Software Foundation.
-+
-+ 14. If you wish to incorporate parts of the Library into other free
-+programs whose distribution conditions are incompatible with these,
-+write to the author to ask for permission. For software which is
-+copyrighted by the Free Software Foundation, write to the Free
-+Software Foundation; we sometimes make exceptions for this. Our
-+decision will be guided by the two goals of preserving the free status
-+of all derivatives of our free software and of promoting the sharing
-+and reuse of software generally.
-+
-+ NO WARRANTY
-+
-+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-+
-+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-+DAMAGES.
-+
-+ END OF TERMS AND CONDITIONS
-+
-+ How to Apply These Terms to Your New Libraries
-+
-+ If you develop a new library, and you want it to be of the greatest
-+possible use to the public, we recommend making it free software that
-+everyone can redistribute and change. You can do so by permitting
-+redistribution under these terms (or, alternatively, under the terms of the
-+ordinary General Public License).
-+
-+ To apply these terms, attach the following notices to the library. It is
-+safest to attach them to the start of each source file to most effectively
-+convey the exclusion of warranty; and each file should have at least the
-+"copyright" line and a pointer to where the full notice is found.
-+
-+ <one line to give the library's name and a brief idea of what it does.>
-+ Copyright (C) <year> <name of author>
-+
-+ This library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Lesser General Public
-+ License as published by the Free Software Foundation; either
-+ version 2.1 of the License, or (at your option) any later version.
-+
-+ This library 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
-+ Lesser General Public License for more details.
-+
-+ You should have received a copy of the GNU Lesser General Public
-+ License along with this library; if not, write to the Free Software
-+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+
-+Also add information on how to contact you by electronic and paper mail.
-+
-+You should also get your employer (if you work as a programmer) or your
-+school, if any, to sign a "copyright disclaimer" for the library, if
-+necessary. Here is a sample; alter the names:
-+
-+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
-+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-+
-+ <signature of Ty Coon>, 1 April 1990
-+ Ty Coon, President of Vice
-+
-+That's all there is to it!
-+
-+
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavcodec/avcodec.h
-@@ -0,0 +1,6146 @@
-+/*
-+ * copyright (c) 2001 Fabrice Bellard
-+ *
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+#ifndef AVCODEC_AVCODEC_H
-+#define AVCODEC_AVCODEC_H
-+
-+/**
-+ * @file
-+ * @ingroup libavc
-+ * Libavcodec external API header
-+ */
-+
-+#include <errno.h>
-+#include "libavutil/samplefmt.h"
-+#include "libavutil/attributes.h"
-+#include "libavutil/avutil.h"
-+#include "libavutil/buffer.h"
-+#include "libavutil/cpu.h"
-+#include "libavutil/channel_layout.h"
-+#include "libavutil/dict.h"
-+#include "libavutil/frame.h"
-+#include "libavutil/hwcontext.h"
-+#include "libavutil/log.h"
-+#include "libavutil/pixfmt.h"
-+#include "libavutil/rational.h"
-+
-+#include "version.h"
-+
-+/**
-+ * @defgroup libavc libavcodec
-+ * Encoding/Decoding Library
-+ *
-+ * @{
-+ *
-+ * @defgroup lavc_decoding Decoding
-+ * @{
-+ * @}
-+ *
-+ * @defgroup lavc_encoding Encoding
-+ * @{
-+ * @}
-+ *
-+ * @defgroup lavc_codec Codecs
-+ * @{
-+ * @defgroup lavc_codec_native Native Codecs
-+ * @{
-+ * @}
-+ * @defgroup lavc_codec_wrappers External library wrappers
-+ * @{
-+ * @}
-+ * @defgroup lavc_codec_hwaccel Hardware Accelerators bridge
-+ * @{
-+ * @}
-+ * @}
-+ * @defgroup lavc_internal Internal
-+ * @{
-+ * @}
-+ * @}
-+ */
-+
-+/**
-+ * @ingroup libavc
-+ * @defgroup lavc_encdec send/receive encoding and decoding API overview
-+ * @{
-+ *
-+ * The avcodec_send_packet()/avcodec_receive_frame()/avcodec_send_frame()/
-+ * avcodec_receive_packet() functions provide an encode/decode API, which
-+ * decouples input and output.
-+ *
-+ * The API is very similar for encoding/decoding and audio/video, and works as
-+ * follows:
-+ * - Set up and open the AVCodecContext as usual.
-+ * - Send valid input:
-+ * - For decoding, call avcodec_send_packet() to give the decoder raw
-+ * compressed data in an AVPacket.
-+ * - For encoding, call avcodec_send_frame() to give the encoder an AVFrame
-+ * containing uncompressed audio or video.
-+ * In both cases, it is recommended that AVPackets and AVFrames are
-+ * refcounted, or libavcodec might have to copy the input data. (libavformat
-+ * always returns refcounted AVPackets, and av_frame_get_buffer() allocates
-+ * refcounted AVFrames.)
-+ * - Receive output in a loop. Periodically call one of the avcodec_receive_*()
-+ * functions and process their output:
-+ * - For decoding, call avcodec_receive_frame(). On success, it will return
-+ * an AVFrame containing uncompressed audio or video data.
-+ * - For encoding, call avcodec_receive_packet(). On success, it will return
-+ * an AVPacket with a compressed frame.
-+ * Repeat this call until it returns AVERROR(EAGAIN) or an error. The
-+ * AVERROR(EAGAIN) return value means that new input data is required to
-+ * return new output. In this case, continue with sending input. For each
-+ * input frame/packet, the codec will typically return 1 output frame/packet,
-+ * but it can also be 0 or more than 1.
-+ *
-+ * At the beginning of decoding or encoding, the codec might accept multiple
-+ * input frames/packets without returning a frame, until its internal buffers
-+ * are filled. This situation is handled transparently if you follow the steps
-+ * outlined above.
-+ *
-+ * In theory, sending input can result in EAGAIN - this should happen only if
-+ * not all output was received. You can use this to structure alternative decode
-+ * or encode loops other than the one suggested above. For example, you could
-+ * try sending new input on each iteration, and try to receive output if that
-+ * returns EAGAIN.
-+ *
-+ * End of stream situations. These require "flushing" (aka draining) the codec,
-+ * as the codec might buffer multiple frames or packets internally for
-+ * performance or out of necessity (consider B-frames).
-+ * This is handled as follows:
-+ * - Instead of valid input, send NULL to the avcodec_send_packet() (decoding)
-+ * or avcodec_send_frame() (encoding) functions. This will enter draining
-+ * mode.
-+ * - Call avcodec_receive_frame() (decoding) or avcodec_receive_packet()
-+ * (encoding) in a loop until AVERROR_EOF is returned. The functions will
-+ * not return AVERROR(EAGAIN), unless you forgot to enter draining mode.
-+ * - Before decoding can be resumed again, the codec has to be reset with
-+ * avcodec_flush_buffers().
-+ *
-+ * Using the API as outlined above is highly recommended. But it is also
-+ * possible to call functions outside of this rigid schema. For example, you can
-+ * call avcodec_send_packet() repeatedly without calling
-+ * avcodec_receive_frame(). In this case, avcodec_send_packet() will succeed
-+ * until the codec's internal buffer has been filled up (which is typically of
-+ * size 1 per output frame, after initial input), and then reject input with
-+ * AVERROR(EAGAIN). Once it starts rejecting input, you have no choice but to
-+ * read at least some output.
-+ *
-+ * Not all codecs will follow a rigid and predictable dataflow; the only
-+ * guarantee is that an AVERROR(EAGAIN) return value on a send/receive call on
-+ * one end implies that a receive/send call on the other end will succeed, or
-+ * at least will not fail with AVERROR(EAGAIN). In general, no codec will
-+ * permit unlimited buffering of input or output.
-+ *
-+ * This API replaces the following legacy functions:
-+ * - avcodec_decode_video2() and avcodec_decode_audio4():
-+ * Use avcodec_send_packet() to feed input to the decoder, then use
-+ * avcodec_receive_frame() to receive decoded frames after each packet.
-+ * Unlike with the old video decoding API, multiple frames might result from
-+ * a packet. For audio, splitting the input packet into frames by partially
-+ * decoding packets becomes transparent to the API user. You never need to
-+ * feed an AVPacket to the API twice (unless it is rejected with AVERROR(EAGAIN) - then
-+ * no data was read from the packet).
-+ * Additionally, sending a flush/draining packet is required only once.
-+ * - avcodec_encode_video2()/avcodec_encode_audio2():
-+ * Use avcodec_send_frame() to feed input to the encoder, then use
-+ * avcodec_receive_packet() to receive encoded packets.
-+ * Providing user-allocated buffers for avcodec_receive_packet() is not
-+ * possible.
-+ * - The new API does not handle subtitles yet.
-+ *
-+ * Mixing new and old function calls on the same AVCodecContext is not allowed,
-+ * and will result in undefined behavior.
-+ *
-+ * Some codecs might require using the new API; using the old API will return
-+ * an error when calling it. All codecs support the new API.
-+ *
-+ * A codec is not allowed to return AVERROR(EAGAIN) for both sending and receiving. This
-+ * would be an invalid state, which could put the codec user into an endless
-+ * loop. The API has no concept of time either: it cannot happen that trying to
-+ * do avcodec_send_packet() results in AVERROR(EAGAIN), but a repeated call 1 second
-+ * later accepts the packet (with no other receive/flush API calls involved).
-+ * The API is a strict state machine, and the passage of time is not supposed
-+ * to influence it. Some timing-dependent behavior might still be deemed
-+ * acceptable in certain cases. But it must never result in both send/receive
-+ * returning EAGAIN at the same time at any point. It must also absolutely be
-+ * avoided that the current state is "unstable" and can "flip-flop" between
-+ * the send/receive APIs allowing progress. For example, it's not allowed that
-+ * the codec randomly decides that it actually wants to consume a packet now
-+ * instead of returning a frame, after it just returned AVERROR(EAGAIN) on an
-+ * avcodec_send_packet() call.
-+ * @}
-+ */
-+
-+/**
-+ * @defgroup lavc_core Core functions/structures.
-+ * @ingroup libavc
-+ *
-+ * Basic definitions, functions for querying libavcodec capabilities,
-+ * allocating core structures, etc.
-+ * @{
-+ */
-+
-+
-+/**
-+ * Identify the syntax and semantics of the bitstream.
-+ * The principle is roughly:
-+ * Two decoders with the same ID can decode the same streams.
-+ * Two encoders with the same ID can encode compatible streams.
-+ * There may be slight deviations from the principle due to implementation
-+ * details.
-+ *
-+ * If you add a codec ID to this list, add it so that
-+ * 1. no value of an existing codec ID changes (that would break ABI),
-+ * 2. it is as close as possible to similar codecs
-+ *
-+ * After adding new codec IDs, do not forget to add an entry to the codec
-+ * descriptor list and bump libavcodec minor version.
-+ */
-+enum AVCodecID {
-+ AV_CODEC_ID_NONE,
-+
-+ /* video codecs */
-+ AV_CODEC_ID_MPEG1VIDEO,
-+ AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding
-+ AV_CODEC_ID_H261,
-+ AV_CODEC_ID_H263,
-+ AV_CODEC_ID_RV10,
-+ AV_CODEC_ID_RV20,
-+ AV_CODEC_ID_MJPEG,
-+ AV_CODEC_ID_MJPEGB,
-+ AV_CODEC_ID_LJPEG,
-+ AV_CODEC_ID_SP5X,
-+ AV_CODEC_ID_JPEGLS,
-+ AV_CODEC_ID_MPEG4,
-+ AV_CODEC_ID_RAWVIDEO,
-+ AV_CODEC_ID_MSMPEG4V1,
-+ AV_CODEC_ID_MSMPEG4V2,
-+ AV_CODEC_ID_MSMPEG4V3,
-+ AV_CODEC_ID_WMV1,
-+ AV_CODEC_ID_WMV2,
-+ AV_CODEC_ID_H263P,
-+ AV_CODEC_ID_H263I,
-+ AV_CODEC_ID_FLV1,
-+ AV_CODEC_ID_SVQ1,
-+ AV_CODEC_ID_SVQ3,
-+ AV_CODEC_ID_DVVIDEO,
-+ AV_CODEC_ID_HUFFYUV,
-+ AV_CODEC_ID_CYUV,
-+ AV_CODEC_ID_H264,
-+ AV_CODEC_ID_INDEO3,
-+ AV_CODEC_ID_VP3,
-+ AV_CODEC_ID_THEORA,
-+ AV_CODEC_ID_ASV1,
-+ AV_CODEC_ID_ASV2,
-+ AV_CODEC_ID_FFV1,
-+ AV_CODEC_ID_4XM,
-+ AV_CODEC_ID_VCR1,
-+ AV_CODEC_ID_CLJR,
-+ AV_CODEC_ID_MDEC,
-+ AV_CODEC_ID_ROQ,
-+ AV_CODEC_ID_INTERPLAY_VIDEO,
-+ AV_CODEC_ID_XAN_WC3,
-+ AV_CODEC_ID_XAN_WC4,
-+ AV_CODEC_ID_RPZA,
-+ AV_CODEC_ID_CINEPAK,
-+ AV_CODEC_ID_WS_VQA,
-+ AV_CODEC_ID_MSRLE,
-+ AV_CODEC_ID_MSVIDEO1,
-+ AV_CODEC_ID_IDCIN,
-+ AV_CODEC_ID_8BPS,
-+ AV_CODEC_ID_SMC,
-+ AV_CODEC_ID_FLIC,
-+ AV_CODEC_ID_TRUEMOTION1,
-+ AV_CODEC_ID_VMDVIDEO,
-+ AV_CODEC_ID_MSZH,
-+ AV_CODEC_ID_ZLIB,
-+ AV_CODEC_ID_QTRLE,
-+ AV_CODEC_ID_TSCC,
-+ AV_CODEC_ID_ULTI,
-+ AV_CODEC_ID_QDRAW,
-+ AV_CODEC_ID_VIXL,
-+ AV_CODEC_ID_QPEG,
-+ AV_CODEC_ID_PNG,
-+ AV_CODEC_ID_PPM,
-+ AV_CODEC_ID_PBM,
-+ AV_CODEC_ID_PGM,
-+ AV_CODEC_ID_PGMYUV,
-+ AV_CODEC_ID_PAM,
-+ AV_CODEC_ID_FFVHUFF,
-+ AV_CODEC_ID_RV30,
-+ AV_CODEC_ID_RV40,
-+ AV_CODEC_ID_VC1,
-+ AV_CODEC_ID_WMV3,
-+ AV_CODEC_ID_LOCO,
-+ AV_CODEC_ID_WNV1,
-+ AV_CODEC_ID_AASC,
-+ AV_CODEC_ID_INDEO2,
-+ AV_CODEC_ID_FRAPS,
-+ AV_CODEC_ID_TRUEMOTION2,
-+ AV_CODEC_ID_BMP,
-+ AV_CODEC_ID_CSCD,
-+ AV_CODEC_ID_MMVIDEO,
-+ AV_CODEC_ID_ZMBV,
-+ AV_CODEC_ID_AVS,
-+ AV_CODEC_ID_SMACKVIDEO,
-+ AV_CODEC_ID_NUV,
-+ AV_CODEC_ID_KMVC,
-+ AV_CODEC_ID_FLASHSV,
-+ AV_CODEC_ID_CAVS,
-+ AV_CODEC_ID_JPEG2000,
-+ AV_CODEC_ID_VMNC,
-+ AV_CODEC_ID_VP5,
-+ AV_CODEC_ID_VP6,
-+ AV_CODEC_ID_VP6F,
-+ AV_CODEC_ID_TARGA,
-+ AV_CODEC_ID_DSICINVIDEO,
-+ AV_CODEC_ID_TIERTEXSEQVIDEO,
-+ AV_CODEC_ID_TIFF,
-+ AV_CODEC_ID_GIF,
-+ AV_CODEC_ID_DXA,
-+ AV_CODEC_ID_DNXHD,
-+ AV_CODEC_ID_THP,
-+ AV_CODEC_ID_SGI,
-+ AV_CODEC_ID_C93,
-+ AV_CODEC_ID_BETHSOFTVID,
-+ AV_CODEC_ID_PTX,
-+ AV_CODEC_ID_TXD,
-+ AV_CODEC_ID_VP6A,
-+ AV_CODEC_ID_AMV,
-+ AV_CODEC_ID_VB,
-+ AV_CODEC_ID_PCX,
-+ AV_CODEC_ID_SUNRAST,
-+ AV_CODEC_ID_INDEO4,
-+ AV_CODEC_ID_INDEO5,
-+ AV_CODEC_ID_MIMIC,
-+ AV_CODEC_ID_RL2,
-+ AV_CODEC_ID_ESCAPE124,
-+ AV_CODEC_ID_DIRAC,
-+ AV_CODEC_ID_BFI,
-+ AV_CODEC_ID_CMV,
-+ AV_CODEC_ID_MOTIONPIXELS,
-+ AV_CODEC_ID_TGV,
-+ AV_CODEC_ID_TGQ,
-+ AV_CODEC_ID_TQI,
-+ AV_CODEC_ID_AURA,
-+ AV_CODEC_ID_AURA2,
-+ AV_CODEC_ID_V210X,
-+ AV_CODEC_ID_TMV,
-+ AV_CODEC_ID_V210,
-+ AV_CODEC_ID_DPX,
-+ AV_CODEC_ID_MAD,
-+ AV_CODEC_ID_FRWU,
-+ AV_CODEC_ID_FLASHSV2,
-+ AV_CODEC_ID_CDGRAPHICS,
-+ AV_CODEC_ID_R210,
-+ AV_CODEC_ID_ANM,
-+ AV_CODEC_ID_BINKVIDEO,
-+ AV_CODEC_ID_IFF_ILBM,
-+#define AV_CODEC_ID_IFF_BYTERUN1 AV_CODEC_ID_IFF_ILBM
-+ AV_CODEC_ID_KGV1,
-+ AV_CODEC_ID_YOP,
-+ AV_CODEC_ID_VP8,
-+ AV_CODEC_ID_PICTOR,
-+ AV_CODEC_ID_ANSI,
-+ AV_CODEC_ID_A64_MULTI,
-+ AV_CODEC_ID_A64_MULTI5,
-+ AV_CODEC_ID_R10K,
-+ AV_CODEC_ID_MXPEG,
-+ AV_CODEC_ID_LAGARITH,
-+ AV_CODEC_ID_PRORES,
-+ AV_CODEC_ID_JV,
-+ AV_CODEC_ID_DFA,
-+ AV_CODEC_ID_WMV3IMAGE,
-+ AV_CODEC_ID_VC1IMAGE,
-+ AV_CODEC_ID_UTVIDEO,
-+ AV_CODEC_ID_BMV_VIDEO,
-+ AV_CODEC_ID_VBLE,
-+ AV_CODEC_ID_DXTORY,
-+ AV_CODEC_ID_V410,
-+ AV_CODEC_ID_XWD,
-+ AV_CODEC_ID_CDXL,
-+ AV_CODEC_ID_XBM,
-+ AV_CODEC_ID_ZEROCODEC,
-+ AV_CODEC_ID_MSS1,
-+ AV_CODEC_ID_MSA1,
-+ AV_CODEC_ID_TSCC2,
-+ AV_CODEC_ID_MTS2,
-+ AV_CODEC_ID_CLLC,
-+ AV_CODEC_ID_MSS2,
-+ AV_CODEC_ID_VP9,
-+ AV_CODEC_ID_AIC,
-+ AV_CODEC_ID_ESCAPE130,
-+ AV_CODEC_ID_G2M,
-+ AV_CODEC_ID_WEBP,
-+ AV_CODEC_ID_HNM4_VIDEO,
-+ AV_CODEC_ID_HEVC,
-+#define AV_CODEC_ID_H265 AV_CODEC_ID_HEVC
-+ AV_CODEC_ID_FIC,
-+ AV_CODEC_ID_ALIAS_PIX,
-+ AV_CODEC_ID_BRENDER_PIX,
-+ AV_CODEC_ID_PAF_VIDEO,
-+ AV_CODEC_ID_EXR,
-+ AV_CODEC_ID_VP7,
-+ AV_CODEC_ID_SANM,
-+ AV_CODEC_ID_SGIRLE,
-+ AV_CODEC_ID_MVC1,
-+ AV_CODEC_ID_MVC2,
-+ AV_CODEC_ID_HQX,
-+ AV_CODEC_ID_TDSC,
-+ AV_CODEC_ID_HQ_HQA,
-+ AV_CODEC_ID_HAP,
-+ AV_CODEC_ID_DDS,
-+ AV_CODEC_ID_DXV,
-+ AV_CODEC_ID_SCREENPRESSO,
-+ AV_CODEC_ID_RSCC,
-+
-+ AV_CODEC_ID_Y41P = 0x8000,
-+ AV_CODEC_ID_AVRP,
-+ AV_CODEC_ID_012V,
-+ AV_CODEC_ID_AVUI,
-+ AV_CODEC_ID_AYUV,
-+ AV_CODEC_ID_TARGA_Y216,
-+ AV_CODEC_ID_V308,
-+ AV_CODEC_ID_V408,
-+ AV_CODEC_ID_YUV4,
-+ AV_CODEC_ID_AVRN,
-+ AV_CODEC_ID_CPIA,
-+ AV_CODEC_ID_XFACE,
-+ AV_CODEC_ID_SNOW,
-+ AV_CODEC_ID_SMVJPEG,
-+ AV_CODEC_ID_APNG,
-+ AV_CODEC_ID_DAALA,
-+ AV_CODEC_ID_CFHD,
-+ AV_CODEC_ID_TRUEMOTION2RT,
-+ AV_CODEC_ID_M101,
-+ AV_CODEC_ID_MAGICYUV,
-+ AV_CODEC_ID_SHEERVIDEO,
-+ AV_CODEC_ID_YLC,
-+ AV_CODEC_ID_PSD,
-+ AV_CODEC_ID_PIXLET,
-+ AV_CODEC_ID_SPEEDHQ,
-+ AV_CODEC_ID_FMVC,
-+ AV_CODEC_ID_SCPR,
-+ AV_CODEC_ID_CLEARVIDEO,
-+ AV_CODEC_ID_XPM,
-+ AV_CODEC_ID_AV1,
-+ AV_CODEC_ID_BITPACKED,
-+ AV_CODEC_ID_MSCC,
-+ AV_CODEC_ID_SRGC,
-+ AV_CODEC_ID_SVG,
-+ AV_CODEC_ID_GDV,
-+ AV_CODEC_ID_FITS,
-+
-+ /* various PCM "codecs" */
-+ AV_CODEC_ID_FIRST_AUDIO = 0x10000, ///< A dummy id pointing at the start of audio codecs
-+ AV_CODEC_ID_PCM_S16LE = 0x10000,
-+ AV_CODEC_ID_PCM_S16BE,
-+ AV_CODEC_ID_PCM_U16LE,
-+ AV_CODEC_ID_PCM_U16BE,
-+ AV_CODEC_ID_PCM_S8,
-+ AV_CODEC_ID_PCM_U8,
-+ AV_CODEC_ID_PCM_MULAW,
-+ AV_CODEC_ID_PCM_ALAW,
-+ AV_CODEC_ID_PCM_S32LE,
-+ AV_CODEC_ID_PCM_S32BE,
-+ AV_CODEC_ID_PCM_U32LE,
-+ AV_CODEC_ID_PCM_U32BE,
-+ AV_CODEC_ID_PCM_S24LE,
-+ AV_CODEC_ID_PCM_S24BE,
-+ AV_CODEC_ID_PCM_U24LE,
-+ AV_CODEC_ID_PCM_U24BE,
-+ AV_CODEC_ID_PCM_S24DAUD,
-+ AV_CODEC_ID_PCM_ZORK,
-+ AV_CODEC_ID_PCM_S16LE_PLANAR,
-+ AV_CODEC_ID_PCM_DVD,
-+ AV_CODEC_ID_PCM_F32BE,
-+ AV_CODEC_ID_PCM_F32LE,
-+ AV_CODEC_ID_PCM_F64BE,
-+ AV_CODEC_ID_PCM_F64LE,
-+ AV_CODEC_ID_PCM_BLURAY,
-+ AV_CODEC_ID_PCM_LXF,
-+ AV_CODEC_ID_S302M,
-+ AV_CODEC_ID_PCM_S8_PLANAR,
-+ AV_CODEC_ID_PCM_S24LE_PLANAR,
-+ AV_CODEC_ID_PCM_S32LE_PLANAR,
-+ AV_CODEC_ID_PCM_S16BE_PLANAR,
-+
-+ AV_CODEC_ID_PCM_S64LE = 0x10800,
-+ AV_CODEC_ID_PCM_S64BE,
-+ AV_CODEC_ID_PCM_F16LE,
-+ AV_CODEC_ID_PCM_F24LE,
-+
-+ /* various ADPCM codecs */
-+ AV_CODEC_ID_ADPCM_IMA_QT = 0x11000,
-+ AV_CODEC_ID_ADPCM_IMA_WAV,
-+ AV_CODEC_ID_ADPCM_IMA_DK3,
-+ AV_CODEC_ID_ADPCM_IMA_DK4,
-+ AV_CODEC_ID_ADPCM_IMA_WS,
-+ AV_CODEC_ID_ADPCM_IMA_SMJPEG,
-+ AV_CODEC_ID_ADPCM_MS,
-+ AV_CODEC_ID_ADPCM_4XM,
-+ AV_CODEC_ID_ADPCM_XA,
-+ AV_CODEC_ID_ADPCM_ADX,
-+ AV_CODEC_ID_ADPCM_EA,
-+ AV_CODEC_ID_ADPCM_G726,
-+ AV_CODEC_ID_ADPCM_CT,
-+ AV_CODEC_ID_ADPCM_SWF,
-+ AV_CODEC_ID_ADPCM_YAMAHA,
-+ AV_CODEC_ID_ADPCM_SBPRO_4,
-+ AV_CODEC_ID_ADPCM_SBPRO_3,
-+ AV_CODEC_ID_ADPCM_SBPRO_2,
-+ AV_CODEC_ID_ADPCM_THP,
-+ AV_CODEC_ID_ADPCM_IMA_AMV,
-+ AV_CODEC_ID_ADPCM_EA_R1,
-+ AV_CODEC_ID_ADPCM_EA_R3,
-+ AV_CODEC_ID_ADPCM_EA_R2,
-+ AV_CODEC_ID_ADPCM_IMA_EA_SEAD,
-+ AV_CODEC_ID_ADPCM_IMA_EA_EACS,
-+ AV_CODEC_ID_ADPCM_EA_XAS,
-+ AV_CODEC_ID_ADPCM_EA_MAXIS_XA,
-+ AV_CODEC_ID_ADPCM_IMA_ISS,
-+ AV_CODEC_ID_ADPCM_G722,
-+ AV_CODEC_ID_ADPCM_IMA_APC,
-+ AV_CODEC_ID_ADPCM_VIMA,
-+
-+ AV_CODEC_ID_ADPCM_AFC = 0x11800,
-+ AV_CODEC_ID_ADPCM_IMA_OKI,
-+ AV_CODEC_ID_ADPCM_DTK,
-+ AV_CODEC_ID_ADPCM_IMA_RAD,
-+ AV_CODEC_ID_ADPCM_G726LE,
-+ AV_CODEC_ID_ADPCM_THP_LE,
-+ AV_CODEC_ID_ADPCM_PSX,
-+ AV_CODEC_ID_ADPCM_AICA,
-+ AV_CODEC_ID_ADPCM_IMA_DAT4,
-+ AV_CODEC_ID_ADPCM_MTAF,
-+
-+ /* AMR */
-+ AV_CODEC_ID_AMR_NB = 0x12000,
-+ AV_CODEC_ID_AMR_WB,
-+
-+ /* RealAudio codecs*/
-+ AV_CODEC_ID_RA_144 = 0x13000,
-+ AV_CODEC_ID_RA_288,
-+
-+ /* various DPCM codecs */
-+ AV_CODEC_ID_ROQ_DPCM = 0x14000,
-+ AV_CODEC_ID_INTERPLAY_DPCM,
-+ AV_CODEC_ID_XAN_DPCM,
-+ AV_CODEC_ID_SOL_DPCM,
-+
-+ AV_CODEC_ID_SDX2_DPCM = 0x14800,
-+ AV_CODEC_ID_GREMLIN_DPCM,
-+
-+ /* audio codecs */
-+ AV_CODEC_ID_MP2 = 0x15000,
-+ AV_CODEC_ID_MP3, ///< preferred ID for decoding MPEG audio layer 1, 2 or 3
-+ AV_CODEC_ID_AAC,
-+ AV_CODEC_ID_AC3,
-+ AV_CODEC_ID_DTS,
-+ AV_CODEC_ID_VORBIS,
-+ AV_CODEC_ID_DVAUDIO,
-+ AV_CODEC_ID_WMAV1,
-+ AV_CODEC_ID_WMAV2,
-+ AV_CODEC_ID_MACE3,
-+ AV_CODEC_ID_MACE6,
-+ AV_CODEC_ID_VMDAUDIO,
-+ AV_CODEC_ID_FLAC,
-+ AV_CODEC_ID_MP3ADU,
-+ AV_CODEC_ID_MP3ON4,
-+ AV_CODEC_ID_SHORTEN,
-+ AV_CODEC_ID_ALAC,
-+ AV_CODEC_ID_WESTWOOD_SND1,
-+ AV_CODEC_ID_GSM, ///< as in Berlin toast format
-+ AV_CODEC_ID_QDM2,
-+ AV_CODEC_ID_COOK,
-+ AV_CODEC_ID_TRUESPEECH,
-+ AV_CODEC_ID_TTA,
-+ AV_CODEC_ID_SMACKAUDIO,
-+ AV_CODEC_ID_QCELP,
-+ AV_CODEC_ID_WAVPACK,
-+ AV_CODEC_ID_DSICINAUDIO,
-+ AV_CODEC_ID_IMC,
-+ AV_CODEC_ID_MUSEPACK7,
-+ AV_CODEC_ID_MLP,
-+ AV_CODEC_ID_GSM_MS, /* as found in WAV */
-+ AV_CODEC_ID_ATRAC3,
-+ AV_CODEC_ID_APE,
-+ AV_CODEC_ID_NELLYMOSER,
-+ AV_CODEC_ID_MUSEPACK8,
-+ AV_CODEC_ID_SPEEX,
-+ AV_CODEC_ID_WMAVOICE,
-+ AV_CODEC_ID_WMAPRO,
-+ AV_CODEC_ID_WMALOSSLESS,
-+ AV_CODEC_ID_ATRAC3P,
-+ AV_CODEC_ID_EAC3,
-+ AV_CODEC_ID_SIPR,
-+ AV_CODEC_ID_MP1,
-+ AV_CODEC_ID_TWINVQ,
-+ AV_CODEC_ID_TRUEHD,
-+ AV_CODEC_ID_MP4ALS,
-+ AV_CODEC_ID_ATRAC1,
-+ AV_CODEC_ID_BINKAUDIO_RDFT,
-+ AV_CODEC_ID_BINKAUDIO_DCT,
-+ AV_CODEC_ID_AAC_LATM,
-+ AV_CODEC_ID_QDMC,
-+ AV_CODEC_ID_CELT,
-+ AV_CODEC_ID_G723_1,
-+ AV_CODEC_ID_G729,
-+ AV_CODEC_ID_8SVX_EXP,
-+ AV_CODEC_ID_8SVX_FIB,
-+ AV_CODEC_ID_BMV_AUDIO,
-+ AV_CODEC_ID_RALF,
-+ AV_CODEC_ID_IAC,
-+ AV_CODEC_ID_ILBC,
-+ AV_CODEC_ID_OPUS,
-+ AV_CODEC_ID_COMFORT_NOISE,
-+ AV_CODEC_ID_TAK,
-+ AV_CODEC_ID_METASOUND,
-+ AV_CODEC_ID_PAF_AUDIO,
-+ AV_CODEC_ID_ON2AVC,
-+ AV_CODEC_ID_DSS_SP,
-+ AV_CODEC_ID_CODEC2,
-+
-+ AV_CODEC_ID_FFWAVESYNTH = 0x15800,
-+ AV_CODEC_ID_SONIC,
-+ AV_CODEC_ID_SONIC_LS,
-+ AV_CODEC_ID_EVRC,
-+ AV_CODEC_ID_SMV,
-+ AV_CODEC_ID_DSD_LSBF,
-+ AV_CODEC_ID_DSD_MSBF,
-+ AV_CODEC_ID_DSD_LSBF_PLANAR,
-+ AV_CODEC_ID_DSD_MSBF_PLANAR,
-+ AV_CODEC_ID_4GV,
-+ AV_CODEC_ID_INTERPLAY_ACM,
-+ AV_CODEC_ID_XMA1,
-+ AV_CODEC_ID_XMA2,
-+ AV_CODEC_ID_DST,
-+ AV_CODEC_ID_ATRAC3AL,
-+ AV_CODEC_ID_ATRAC3PAL,
-+ AV_CODEC_ID_DOLBY_E,
-+ AV_CODEC_ID_APTX,
-+ AV_CODEC_ID_APTX_HD,
-+ AV_CODEC_ID_SBC,
-+
-+ /* subtitle codecs */
-+ AV_CODEC_ID_FIRST_SUBTITLE = 0x17000, ///< A dummy ID pointing at the start of subtitle codecs.
-+ AV_CODEC_ID_DVD_SUBTITLE = 0x17000,
-+ AV_CODEC_ID_DVB_SUBTITLE,
-+ AV_CODEC_ID_TEXT, ///< raw UTF-8 text
-+ AV_CODEC_ID_XSUB,
-+ AV_CODEC_ID_SSA,
-+ AV_CODEC_ID_MOV_TEXT,
-+ AV_CODEC_ID_HDMV_PGS_SUBTITLE,
-+ AV_CODEC_ID_DVB_TELETEXT,
-+ AV_CODEC_ID_SRT,
-+
-+ AV_CODEC_ID_MICRODVD = 0x17800,
-+ AV_CODEC_ID_EIA_608,
-+ AV_CODEC_ID_JACOSUB,
-+ AV_CODEC_ID_SAMI,
-+ AV_CODEC_ID_REALTEXT,
-+ AV_CODEC_ID_STL,
-+ AV_CODEC_ID_SUBVIEWER1,
-+ AV_CODEC_ID_SUBVIEWER,
-+ AV_CODEC_ID_SUBRIP,
-+ AV_CODEC_ID_WEBVTT,
-+ AV_CODEC_ID_MPL2,
-+ AV_CODEC_ID_VPLAYER,
-+ AV_CODEC_ID_PJS,
-+ AV_CODEC_ID_ASS,
-+ AV_CODEC_ID_HDMV_TEXT_SUBTITLE,
-+
-+ /* other specific kind of codecs (generally used for attachments) */
-+ AV_CODEC_ID_FIRST_UNKNOWN = 0x18000, ///< A dummy ID pointing at the start of various fake codecs.
-+ AV_CODEC_ID_TTF = 0x18000,
-+
-+ AV_CODEC_ID_SCTE_35, ///< Contain timestamp estimated through PCR of program stream.
-+ AV_CODEC_ID_BINTEXT = 0x18800,
-+ AV_CODEC_ID_XBIN,
-+ AV_CODEC_ID_IDF,
-+ AV_CODEC_ID_OTF,
-+ AV_CODEC_ID_SMPTE_KLV,
-+ AV_CODEC_ID_DVD_NAV,
-+ AV_CODEC_ID_TIMED_ID3,
-+ AV_CODEC_ID_BIN_DATA,
-+
-+
-+ AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it
-+
-+ AV_CODEC_ID_MPEG2TS = 0x20000, /**< _FAKE_ codec to indicate a raw MPEG-2 TS
-+ * stream (only used by libavformat) */
-+ AV_CODEC_ID_MPEG4SYSTEMS = 0x20001, /**< _FAKE_ codec to indicate a MPEG-4 Systems
-+ * stream (only used by libavformat) */
-+ AV_CODEC_ID_FFMETADATA = 0x21000, ///< Dummy codec for streams containing only metadata information.
-+ AV_CODEC_ID_WRAPPED_AVFRAME = 0x21001, ///< Passthrough codec, AVFrames wrapped in AVPacket
-+};
-+
-+/**
-+ * This struct describes the properties of a single codec described by an
-+ * AVCodecID.
-+ * @see avcodec_descriptor_get()
-+ */
-+typedef struct AVCodecDescriptor {
-+ enum AVCodecID id;
-+ enum AVMediaType type;
-+ /**
-+ * Name of the codec described by this descriptor. It is non-empty and
-+ * unique for each codec descriptor. It should contain alphanumeric
-+ * characters and '_' only.
-+ */
-+ const char *name;
-+ /**
-+ * A more descriptive name for this codec. May be NULL.
-+ */
-+ const char *long_name;
-+ /**
-+ * Codec properties, a combination of AV_CODEC_PROP_* flags.
-+ */
-+ int props;
-+ /**
-+ * MIME type(s) associated with the codec.
-+ * May be NULL; if not, a NULL-terminated array of MIME types.
-+ * The first item is always non-NULL and is the preferred MIME type.
-+ */
-+ const char *const *mime_types;
-+ /**
-+ * If non-NULL, an array of profiles recognized for this codec.
-+ * Terminated with FF_PROFILE_UNKNOWN.
-+ */
-+ const struct AVProfile *profiles;
-+} AVCodecDescriptor;
-+
-+/**
-+ * Codec uses only intra compression.
-+ * Video and audio codecs only.
-+ */
-+#define AV_CODEC_PROP_INTRA_ONLY (1 << 0)
-+/**
-+ * Codec supports lossy compression. Audio and video codecs only.
-+ * @note a codec may support both lossy and lossless
-+ * compression modes
-+ */
-+#define AV_CODEC_PROP_LOSSY (1 << 1)
-+/**
-+ * Codec supports lossless compression. Audio and video codecs only.
-+ */
-+#define AV_CODEC_PROP_LOSSLESS (1 << 2)
-+/**
-+ * Codec supports frame reordering. That is, the coded order (the order in which
-+ * the encoded packets are output by the encoders / stored / input to the
-+ * decoders) may be different from the presentation order of the corresponding
-+ * frames.
-+ *
-+ * For codecs that do not have this property set, PTS and DTS should always be
-+ * equal.
-+ */
-+#define AV_CODEC_PROP_REORDER (1 << 3)
-+/**
-+ * Subtitle codec is bitmap based
-+ * Decoded AVSubtitle data can be read from the AVSubtitleRect->pict field.
-+ */
-+#define AV_CODEC_PROP_BITMAP_SUB (1 << 16)
-+/**
-+ * Subtitle codec is text based.
-+ * Decoded AVSubtitle data can be read from the AVSubtitleRect->ass field.
-+ */
-+#define AV_CODEC_PROP_TEXT_SUB (1 << 17)
-+
-+/**
-+ * @ingroup lavc_decoding
-+ * Required number of additionally allocated bytes at the end of the input bitstream for decoding.
-+ * This is mainly needed because some optimized bitstream readers read
-+ * 32 or 64 bit at once and could read over the end.<br>
-+ * Note: If the first 23 bits of the additional bytes are not 0, then damaged
-+ * MPEG bitstreams could cause overread and segfault.
-+ */
-+#define AV_INPUT_BUFFER_PADDING_SIZE 64
-+
-+/**
-+ * @ingroup lavc_encoding
-+ * minimum encoding buffer size
-+ * Used to avoid some checks during header writing.
-+ */
-+#define AV_INPUT_BUFFER_MIN_SIZE 16384
-+
-+/**
-+ * @ingroup lavc_decoding
-+ */
-+enum AVDiscard{
-+ /* We leave some space between them for extensions (drop some
-+ * keyframes for intra-only or drop just some bidir frames). */
-+ AVDISCARD_NONE =-16, ///< discard nothing
-+ AVDISCARD_DEFAULT = 0, ///< discard useless packets like 0 size packets in avi
-+ AVDISCARD_NONREF = 8, ///< discard all non reference
-+ AVDISCARD_BIDIR = 16, ///< discard all bidirectional frames
-+ AVDISCARD_NONINTRA= 24, ///< discard all non intra frames
-+ AVDISCARD_NONKEY = 32, ///< discard all frames except keyframes
-+ AVDISCARD_ALL = 48, ///< discard all
-+};
-+
-+enum AVAudioServiceType {
-+ AV_AUDIO_SERVICE_TYPE_MAIN = 0,
-+ AV_AUDIO_SERVICE_TYPE_EFFECTS = 1,
-+ AV_AUDIO_SERVICE_TYPE_VISUALLY_IMPAIRED = 2,
-+ AV_AUDIO_SERVICE_TYPE_HEARING_IMPAIRED = 3,
-+ AV_AUDIO_SERVICE_TYPE_DIALOGUE = 4,
-+ AV_AUDIO_SERVICE_TYPE_COMMENTARY = 5,
-+ AV_AUDIO_SERVICE_TYPE_EMERGENCY = 6,
-+ AV_AUDIO_SERVICE_TYPE_VOICE_OVER = 7,
-+ AV_AUDIO_SERVICE_TYPE_KARAOKE = 8,
-+ AV_AUDIO_SERVICE_TYPE_NB , ///< Not part of ABI
-+};
-+
-+/**
-+ * @ingroup lavc_encoding
-+ */
-+typedef struct RcOverride{
-+ int start_frame;
-+ int end_frame;
-+ int qscale; // If this is 0 then quality_factor will be used instead.
-+ float quality_factor;
-+} RcOverride;
-+
-+/* encoding support
-+ These flags can be passed in AVCodecContext.flags before initialization.
-+ Note: Not everything is supported yet.
-+*/
-+
-+/**
-+ * Allow decoders to produce frames with data planes that are not aligned
-+ * to CPU requirements (e.g. due to cropping).
-+ */
-+#define AV_CODEC_FLAG_UNALIGNED (1 << 0)
-+/**
-+ * Use fixed qscale.
-+ */
-+#define AV_CODEC_FLAG_QSCALE (1 << 1)
-+/**
-+ * 4 MV per MB allowed / advanced prediction for H.263.
-+ */
-+#define AV_CODEC_FLAG_4MV (1 << 2)
-+/**
-+ * Output even those frames that might be corrupted.
-+ */
-+#define AV_CODEC_FLAG_OUTPUT_CORRUPT (1 << 3)
-+/**
-+ * Use qpel MC.
-+ */
-+#define AV_CODEC_FLAG_QPEL (1 << 4)
-+/**
-+ * Use internal 2pass ratecontrol in first pass mode.
-+ */
-+#define AV_CODEC_FLAG_PASS1 (1 << 9)
-+/**
-+ * Use internal 2pass ratecontrol in second pass mode.
-+ */
-+#define AV_CODEC_FLAG_PASS2 (1 << 10)
-+/**
-+ * loop filter.
-+ */
-+#define AV_CODEC_FLAG_LOOP_FILTER (1 << 11)
-+/**
-+ * Only decode/encode grayscale.
-+ */
-+#define AV_CODEC_FLAG_GRAY (1 << 13)
-+/**
-+ * error[?] variables will be set during encoding.
-+ */
-+#define AV_CODEC_FLAG_PSNR (1 << 15)
-+/**
-+ * Input bitstream might be truncated at a random location
-+ * instead of only at frame boundaries.
-+ */
-+#define AV_CODEC_FLAG_TRUNCATED (1 << 16)
-+/**
-+ * Use interlaced DCT.
-+ */
-+#define AV_CODEC_FLAG_INTERLACED_DCT (1 << 18)
-+/**
-+ * Force low delay.
-+ */
-+#define AV_CODEC_FLAG_LOW_DELAY (1 << 19)
-+/**
-+ * Place global headers in extradata instead of every keyframe.
-+ */
-+#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
-+/**
-+ * Use only bitexact stuff (except (I)DCT).
-+ */
-+#define AV_CODEC_FLAG_BITEXACT (1 << 23)
-+/* Fx : Flag for H.263+ extra options */
-+/**
-+ * H.263 advanced intra coding / MPEG-4 AC prediction
-+ */
-+#define AV_CODEC_FLAG_AC_PRED (1 << 24)
-+/**
-+ * interlaced motion estimation
-+ */
-+#define AV_CODEC_FLAG_INTERLACED_ME (1 << 29)
-+#define AV_CODEC_FLAG_CLOSED_GOP (1U << 31)
-+
-+/**
-+ * Allow non spec compliant speedup tricks.
-+ */
-+#define AV_CODEC_FLAG2_FAST (1 << 0)
-+/**
-+ * Skip bitstream encoding.
-+ */
-+#define AV_CODEC_FLAG2_NO_OUTPUT (1 << 2)
-+/**
-+ * Place global headers at every keyframe instead of in extradata.
-+ */
-+#define AV_CODEC_FLAG2_LOCAL_HEADER (1 << 3)
-+
-+/**
-+ * timecode is in drop frame format. DEPRECATED!!!!
-+ */
-+#define AV_CODEC_FLAG2_DROP_FRAME_TIMECODE (1 << 13)
-+
-+/**
-+ * Input bitstream might be truncated at a packet boundaries
-+ * instead of only at frame boundaries.
-+ */
-+#define AV_CODEC_FLAG2_CHUNKS (1 << 15)
-+/**
-+ * Discard cropping information from SPS.
-+ */
-+#define AV_CODEC_FLAG2_IGNORE_CROP (1 << 16)
-+
-+/**
-+ * Show all frames before the first keyframe
-+ */
-+#define AV_CODEC_FLAG2_SHOW_ALL (1 << 22)
-+/**
-+ * Export motion vectors through frame side data
-+ */
-+#define AV_CODEC_FLAG2_EXPORT_MVS (1 << 28)
-+/**
-+ * Do not skip samples and export skip information as frame side data
-+ */
-+#define AV_CODEC_FLAG2_SKIP_MANUAL (1 << 29)
-+/**
-+ * Do not reset ASS ReadOrder field on flush (subtitles decoding)
-+ */
-+#define AV_CODEC_FLAG2_RO_FLUSH_NOOP (1 << 30)
-+
-+/* Unsupported options :
-+ * Syntax Arithmetic coding (SAC)
-+ * Reference Picture Selection
-+ * Independent Segment Decoding */
-+/* /Fx */
-+/* codec capabilities */
-+
-+/**
-+ * Decoder can use draw_horiz_band callback.
-+ */
-+#define AV_CODEC_CAP_DRAW_HORIZ_BAND (1 << 0)
-+/**
-+ * Codec uses get_buffer() for allocating buffers and supports custom allocators.
-+ * If not set, it might not use get_buffer() at all or use operations that
-+ * assume the buffer was allocated by avcodec_default_get_buffer.
-+ */
-+#define AV_CODEC_CAP_DR1 (1 << 1)
-+#define AV_CODEC_CAP_TRUNCATED (1 << 3)
-+/**
-+ * Encoder or decoder requires flushing with NULL input at the end in order to
-+ * give the complete and correct output.
-+ *
-+ * NOTE: If this flag is not set, the codec is guaranteed to never be fed with
-+ * with NULL data. The user can still send NULL data to the public encode
-+ * or decode function, but libavcodec will not pass it along to the codec
-+ * unless this flag is set.
-+ *
-+ * Decoders:
-+ * The decoder has a non-zero delay and needs to be fed with avpkt->data=NULL,
-+ * avpkt->size=0 at the end to get the delayed data until the decoder no longer
-+ * returns frames.
-+ *
-+ * Encoders:
-+ * The encoder needs to be fed with NULL data at the end of encoding until the
-+ * encoder no longer returns data.
-+ *
-+ * NOTE: For encoders implementing the AVCodec.encode2() function, setting this
-+ * flag also means that the encoder must set the pts and duration for
-+ * each output packet. If this flag is not set, the pts and duration will
-+ * be determined by libavcodec from the input frame.
-+ */
-+#define AV_CODEC_CAP_DELAY (1 << 5)
-+/**
-+ * Codec can be fed a final frame with a smaller size.
-+ * This can be used to prevent truncation of the last audio samples.
-+ */
-+#define AV_CODEC_CAP_SMALL_LAST_FRAME (1 << 6)
-+
-+/**
-+ * Codec can output multiple frames per AVPacket
-+ * Normally demuxers return one frame at a time, demuxers which do not do
-+ * are connected to a parser to split what they return into proper frames.
-+ * This flag is reserved to the very rare category of codecs which have a
-+ * bitstream that cannot be split into frames without timeconsuming
-+ * operations like full decoding. Demuxers carrying such bitstreams thus
-+ * may return multiple frames in a packet. This has many disadvantages like
-+ * prohibiting stream copy in many cases thus it should only be considered
-+ * as a last resort.
-+ */
-+#define AV_CODEC_CAP_SUBFRAMES (1 << 8)
-+/**
-+ * Codec is experimental and is thus avoided in favor of non experimental
-+ * encoders
-+ */
-+#define AV_CODEC_CAP_EXPERIMENTAL (1 << 9)
-+/**
-+ * Codec should fill in channel configuration and samplerate instead of container
-+ */
-+#define AV_CODEC_CAP_CHANNEL_CONF (1 << 10)
-+/**
-+ * Codec supports frame-level multithreading.
-+ */
-+#define AV_CODEC_CAP_FRAME_THREADS (1 << 12)
-+/**
-+ * Codec supports slice-based (or partition-based) multithreading.
-+ */
-+#define AV_CODEC_CAP_SLICE_THREADS (1 << 13)
-+/**
-+ * Codec supports changed parameters at any point.
-+ */
-+#define AV_CODEC_CAP_PARAM_CHANGE (1 << 14)
-+/**
-+ * Codec supports avctx->thread_count == 0 (auto).
-+ */
-+#define AV_CODEC_CAP_AUTO_THREADS (1 << 15)
-+/**
-+ * Audio encoder supports receiving a different number of samples in each call.
-+ */
-+#define AV_CODEC_CAP_VARIABLE_FRAME_SIZE (1 << 16)
-+/**
-+ * Decoder is not a preferred choice for probing.
-+ * This indicates that the decoder is not a good choice for probing.
-+ * It could for example be an expensive to spin up hardware decoder,
-+ * or it could simply not provide a lot of useful information about
-+ * the stream.
-+ * A decoder marked with this flag should only be used as last resort
-+ * choice for probing.
-+ */
-+#define AV_CODEC_CAP_AVOID_PROBING (1 << 17)
-+/**
-+ * Codec is intra only.
-+ */
-+#define AV_CODEC_CAP_INTRA_ONLY 0x40000000
-+/**
-+ * Codec is lossless.
-+ */
-+#define AV_CODEC_CAP_LOSSLESS 0x80000000
-+
-+/**
-+ * Codec is backed by a hardware implementation. Typically used to
-+ * identify a non-hwaccel hardware decoder. For information about hwaccels, use
-+ * avcodec_get_hw_config() instead.
-+ */
-+#define AV_CODEC_CAP_HARDWARE (1 << 18)
-+
-+/**
-+ * Codec is potentially backed by a hardware implementation, but not
-+ * necessarily. This is used instead of AV_CODEC_CAP_HARDWARE, if the
-+ * implementation provides some sort of internal fallback.
-+ */
-+#define AV_CODEC_CAP_HYBRID (1 << 19)
-+
-+/**
-+ * Pan Scan area.
-+ * This specifies the area which should be displayed.
-+ * Note there may be multiple such areas for one frame.
-+ */
-+typedef struct AVPanScan {
-+ /**
-+ * id
-+ * - encoding: Set by user.
-+ * - decoding: Set by libavcodec.
-+ */
-+ int id;
-+
-+ /**
-+ * width and height in 1/16 pel
-+ * - encoding: Set by user.
-+ * - decoding: Set by libavcodec.
-+ */
-+ int width;
-+ int height;
-+
-+ /**
-+ * position of the top left corner in 1/16 pel for up to 3 fields/frames
-+ * - encoding: Set by user.
-+ * - decoding: Set by libavcodec.
-+ */
-+ int16_t position[3][2];
-+} AVPanScan;
-+
-+/**
-+ * This structure describes the bitrate properties of an encoded bitstream. It
-+ * roughly corresponds to a subset the VBV parameters for MPEG-2 or HRD
-+ * parameters for H.264/HEVC.
-+ */
-+typedef struct AVCPBProperties {
-+ /**
-+ * Maximum bitrate of the stream, in bits per second.
-+ * Zero if unknown or unspecified.
-+ */
-+ int max_bitrate;
-+ /**
-+ * Minimum bitrate of the stream, in bits per second.
-+ * Zero if unknown or unspecified.
-+ */
-+ int min_bitrate;
-+ /**
-+ * Average bitrate of the stream, in bits per second.
-+ * Zero if unknown or unspecified.
-+ */
-+ int avg_bitrate;
-+
-+ /**
-+ * The size of the buffer to which the ratecontrol is applied, in bits.
-+ * Zero if unknown or unspecified.
-+ */
-+ int buffer_size;
-+
-+ /**
-+ * The delay between the time the packet this structure is associated with
-+ * is received and the time when it should be decoded, in periods of a 27MHz
-+ * clock.
-+ *
-+ * UINT64_MAX when unknown or unspecified.
-+ */
-+ uint64_t vbv_delay;
-+} AVCPBProperties;
-+
-+/**
-+ * The decoder will keep a reference to the frame and may reuse it later.
-+ */
-+#define AV_GET_BUFFER_FLAG_REF (1 << 0)
-+
-+/**
-+ * @defgroup lavc_packet AVPacket
-+ *
-+ * Types and functions for working with AVPacket.
-+ * @{
-+ */
-+enum AVPacketSideDataType {
-+ /**
-+ * An AV_PKT_DATA_PALETTE side data packet contains exactly AVPALETTE_SIZE
-+ * bytes worth of palette. This side data signals that a new palette is
-+ * present.
-+ */
-+ AV_PKT_DATA_PALETTE,
-+
-+ /**
-+ * The AV_PKT_DATA_NEW_EXTRADATA is used to notify the codec or the format
-+ * that the extradata buffer was changed and the receiving side should
-+ * act upon it appropriately. The new extradata is embedded in the side
-+ * data buffer and should be immediately used for processing the current
-+ * frame or packet.
-+ */
-+ AV_PKT_DATA_NEW_EXTRADATA,
-+
-+ /**
-+ * An AV_PKT_DATA_PARAM_CHANGE side data packet is laid out as follows:
-+ * @code
-+ * u32le param_flags
-+ * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT)
-+ * s32le channel_count
-+ * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT)
-+ * u64le channel_layout
-+ * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE)
-+ * s32le sample_rate
-+ * if (param_flags & AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS)
-+ * s32le width
-+ * s32le height
-+ * @endcode
-+ */
-+ AV_PKT_DATA_PARAM_CHANGE,
-+
-+ /**
-+ * An AV_PKT_DATA_H263_MB_INFO side data packet contains a number of
-+ * structures with info about macroblocks relevant to splitting the
-+ * packet into smaller packets on macroblock edges (e.g. as for RFC 2190).
-+ * That is, it does not necessarily contain info about all macroblocks,
-+ * as long as the distance between macroblocks in the info is smaller
-+ * than the target payload size.
-+ * Each MB info structure is 12 bytes, and is laid out as follows:
-+ * @code
-+ * u32le bit offset from the start of the packet
-+ * u8 current quantizer at the start of the macroblock
-+ * u8 GOB number
-+ * u16le macroblock address within the GOB
-+ * u8 horizontal MV predictor
-+ * u8 vertical MV predictor
-+ * u8 horizontal MV predictor for block number 3
-+ * u8 vertical MV predictor for block number 3
-+ * @endcode
-+ */
-+ AV_PKT_DATA_H263_MB_INFO,
-+
-+ /**
-+ * This side data should be associated with an audio stream and contains
-+ * ReplayGain information in form of the AVReplayGain struct.
-+ */
-+ AV_PKT_DATA_REPLAYGAIN,
-+
-+ /**
-+ * This side data contains a 3x3 transformation matrix describing an affine
-+ * transformation that needs to be applied to the decoded video frames for
-+ * correct presentation.
-+ *
-+ * See libavutil/display.h for a detailed description of the data.
-+ */
-+ AV_PKT_DATA_DISPLAYMATRIX,
-+
-+ /**
-+ * This side data should be associated with a video stream and contains
-+ * Stereoscopic 3D information in form of the AVStereo3D struct.
-+ */
-+ AV_PKT_DATA_STEREO3D,
-+
-+ /**
-+ * This side data should be associated with an audio stream and corresponds
-+ * to enum AVAudioServiceType.
-+ */
-+ AV_PKT_DATA_AUDIO_SERVICE_TYPE,
-+
-+ /**
-+ * This side data contains quality related information from the encoder.
-+ * @code
-+ * u32le quality factor of the compressed frame. Allowed range is between 1 (good) and FF_LAMBDA_MAX (bad).
-+ * u8 picture type
-+ * u8 error count
-+ * u16 reserved
-+ * u64le[error count] sum of squared differences between encoder in and output
-+ * @endcode
-+ */
-+ AV_PKT_DATA_QUALITY_STATS,
-+
-+ /**
-+ * This side data contains an integer value representing the stream index
-+ * of a "fallback" track. A fallback track indicates an alternate
-+ * track to use when the current track can not be decoded for some reason.
-+ * e.g. no decoder available for codec.
-+ */
-+ AV_PKT_DATA_FALLBACK_TRACK,
-+
-+ /**
-+ * This side data corresponds to the AVCPBProperties struct.
-+ */
-+ AV_PKT_DATA_CPB_PROPERTIES,
-+
-+ /**
-+ * Recommmends skipping the specified number of samples
-+ * @code
-+ * u32le number of samples to skip from start of this packet
-+ * u32le number of samples to skip from end of this packet
-+ * u8 reason for start skip
-+ * u8 reason for end skip (0=padding silence, 1=convergence)
-+ * @endcode
-+ */
-+ AV_PKT_DATA_SKIP_SAMPLES,
-+
-+ /**
-+ * An AV_PKT_DATA_JP_DUALMONO side data packet indicates that
-+ * the packet may contain "dual mono" audio specific to Japanese DTV
-+ * and if it is true, recommends only the selected channel to be used.
-+ * @code
-+ * u8 selected channels (0=mail/left, 1=sub/right, 2=both)
-+ * @endcode
-+ */
-+ AV_PKT_DATA_JP_DUALMONO,
-+
-+ /**
-+ * A list of zero terminated key/value strings. There is no end marker for
-+ * the list, so it is required to rely on the side data size to stop.
-+ */
-+ AV_PKT_DATA_STRINGS_METADATA,
-+
-+ /**
-+ * Subtitle event position
-+ * @code
-+ * u32le x1
-+ * u32le y1
-+ * u32le x2
-+ * u32le y2
-+ * @endcode
-+ */
-+ AV_PKT_DATA_SUBTITLE_POSITION,
-+
-+ /**
-+ * Data found in BlockAdditional element of matroska container. There is
-+ * no end marker for the data, so it is required to rely on the side data
-+ * size to recognize the end. 8 byte id (as found in BlockAddId) followed
-+ * by data.
-+ */
-+ AV_PKT_DATA_MATROSKA_BLOCKADDITIONAL,
-+
-+ /**
-+ * The optional first identifier line of a WebVTT cue.
-+ */
-+ AV_PKT_DATA_WEBVTT_IDENTIFIER,
-+
-+ /**
-+ * The optional settings (rendering instructions) that immediately
-+ * follow the timestamp specifier of a WebVTT cue.
-+ */
-+ AV_PKT_DATA_WEBVTT_SETTINGS,
-+
-+ /**
-+ * A list of zero terminated key/value strings. There is no end marker for
-+ * the list, so it is required to rely on the side data size to stop. This
-+ * side data includes updated metadata which appeared in the stream.
-+ */
-+ AV_PKT_DATA_METADATA_UPDATE,
-+
-+ /**
-+ * MPEGTS stream ID, this is required to pass the stream ID
-+ * information from the demuxer to the corresponding muxer.
-+ */
-+ AV_PKT_DATA_MPEGTS_STREAM_ID,
-+
-+ /**
-+ * Mastering display metadata (based on SMPTE-2086:2014). This metadata
-+ * should be associated with a video stream and contains data in the form
-+ * of the AVMasteringDisplayMetadata struct.
-+ */
-+ AV_PKT_DATA_MASTERING_DISPLAY_METADATA,
-+
-+ /**
-+ * This side data should be associated with a video stream and corresponds
-+ * to the AVSphericalMapping structure.
-+ */
-+ AV_PKT_DATA_SPHERICAL,
-+
-+ /**
-+ * Content light level (based on CTA-861.3). This metadata should be
-+ * associated with a video stream and contains data in the form of the
-+ * AVContentLightMetadata struct.
-+ */
-+ AV_PKT_DATA_CONTENT_LIGHT_LEVEL,
-+
-+ /**
-+ * ATSC A53 Part 4 Closed Captions. This metadata should be associated with
-+ * a video stream. A53 CC bitstream is stored as uint8_t in AVPacketSideData.data.
-+ * The number of bytes of CC data is AVPacketSideData.size.
-+ */
-+ AV_PKT_DATA_A53_CC,
-+
-+ /**
-+ * This side data is encryption initialization data.
-+ * The format is not part of ABI, use av_encryption_init_info_* methods to
-+ * access.
-+ */
-+ AV_PKT_DATA_ENCRYPTION_INIT_INFO,
-+
-+ /**
-+ * This side data contains encryption info for how to decrypt the packet.
-+ * The format is not part of ABI, use av_encryption_info_* methods to access.
-+ */
-+ AV_PKT_DATA_ENCRYPTION_INFO,
-+
-+ /**
-+ * The number of side data types.
-+ * This is not part of the public API/ABI in the sense that it may
-+ * change when new side data types are added.
-+ * This must stay the last enum value.
-+ * If its value becomes huge, some code using it
-+ * needs to be updated as it assumes it to be smaller than other limits.
-+ */
-+ AV_PKT_DATA_NB
-+};
-+
-+#define AV_PKT_DATA_QUALITY_FACTOR AV_PKT_DATA_QUALITY_STATS //DEPRECATED
-+
-+typedef struct AVPacketSideData {
-+ uint8_t *data;
-+ int size;
-+ enum AVPacketSideDataType type;
-+} AVPacketSideData;
-+
-+/**
-+ * This structure stores compressed data. It is typically exported by demuxers
-+ * and then passed as input to decoders, or received as output from encoders and
-+ * then passed to muxers.
-+ *
-+ * For video, it should typically contain one compressed frame. For audio it may
-+ * contain several compressed frames. Encoders are allowed to output empty
-+ * packets, with no compressed data, containing only side data
-+ * (e.g. to update some stream parameters at the end of encoding).
-+ *
-+ * AVPacket is one of the few structs in FFmpeg, whose size is a part of public
-+ * ABI. Thus it may be allocated on stack and no new fields can be added to it
-+ * without libavcodec and libavformat major bump.
-+ *
-+ * The semantics of data ownership depends on the buf field.
-+ * If it is set, the packet data is dynamically allocated and is
-+ * valid indefinitely until a call to av_packet_unref() reduces the
-+ * reference count to 0.
-+ *
-+ * If the buf field is not set av_packet_ref() would make a copy instead
-+ * of increasing the reference count.
-+ *
-+ * The side data is always allocated with av_malloc(), copied by
-+ * av_packet_ref() and freed by av_packet_unref().
-+ *
-+ * @see av_packet_ref
-+ * @see av_packet_unref
-+ */
-+typedef struct AVPacket {
-+ /**
-+ * A reference to the reference-counted buffer where the packet data is
-+ * stored.
-+ * May be NULL, then the packet data is not reference-counted.
-+ */
-+ AVBufferRef *buf;
-+ /**
-+ * Presentation timestamp in AVStream->time_base units; the time at which
-+ * the decompressed packet will be presented to the user.
-+ * Can be AV_NOPTS_VALUE if it is not stored in the file.
-+ * pts MUST be larger or equal to dts as presentation cannot happen before
-+ * decompression, unless one wants to view hex dumps. Some formats misuse
-+ * the terms dts and pts/cts to mean something different. Such timestamps
-+ * must be converted to true pts/dts before they are stored in AVPacket.
-+ */
-+ int64_t pts;
-+ /**
-+ * Decompression timestamp in AVStream->time_base units; the time at which
-+ * the packet is decompressed.
-+ * Can be AV_NOPTS_VALUE if it is not stored in the file.
-+ */
-+ int64_t dts;
-+ uint8_t *data;
-+ int size;
-+ int stream_index;
-+ /**
-+ * A combination of AV_PKT_FLAG values
-+ */
-+ int flags;
-+ /**
-+ * Additional packet data that can be provided by the container.
-+ * Packet can contain several types of side information.
-+ */
-+ AVPacketSideData *side_data;
-+ int side_data_elems;
-+
-+ /**
-+ * Duration of this packet in AVStream->time_base units, 0 if unknown.
-+ * Equals next_pts - this_pts in presentation order.
-+ */
-+ int64_t duration;
-+
-+ int64_t pos; ///< byte position in stream, -1 if unknown
-+
-+#if FF_API_CONVERGENCE_DURATION
-+ /**
-+ * @deprecated Same as the duration field, but as int64_t. This was required
-+ * for Matroska subtitles, whose duration values could overflow when the
-+ * duration field was still an int.
-+ */
-+ attribute_deprecated
-+ int64_t convergence_duration;
-+#endif
-+} AVPacket;
-+#define AV_PKT_FLAG_KEY 0x0001 ///< The packet contains a keyframe
-+#define AV_PKT_FLAG_CORRUPT 0x0002 ///< The packet content is corrupted
-+/**
-+ * Flag is used to discard packets which are required to maintain valid
-+ * decoder state but are not required for output and should be dropped
-+ * after decoding.
-+ **/
-+#define AV_PKT_FLAG_DISCARD 0x0004
-+/**
-+ * The packet comes from a trusted source.
-+ *
-+ * Otherwise-unsafe constructs such as arbitrary pointers to data
-+ * outside the packet may be followed.
-+ */
-+#define AV_PKT_FLAG_TRUSTED 0x0008
-+/**
-+ * Flag is used to indicate packets that contain frames that can
-+ * be discarded by the decoder. I.e. Non-reference frames.
-+ */
-+#define AV_PKT_FLAG_DISPOSABLE 0x0010
-+
-+
-+enum AVSideDataParamChangeFlags {
-+ AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_COUNT = 0x0001,
-+ AV_SIDE_DATA_PARAM_CHANGE_CHANNEL_LAYOUT = 0x0002,
-+ AV_SIDE_DATA_PARAM_CHANGE_SAMPLE_RATE = 0x0004,
-+ AV_SIDE_DATA_PARAM_CHANGE_DIMENSIONS = 0x0008,
-+};
-+/**
-+ * @}
-+ */
-+
-+struct AVCodecInternal;
-+
-+enum AVFieldOrder {
-+ AV_FIELD_UNKNOWN,
-+ AV_FIELD_PROGRESSIVE,
-+ AV_FIELD_TT, //< Top coded_first, top displayed first
-+ AV_FIELD_BB, //< Bottom coded first, bottom displayed first
-+ AV_FIELD_TB, //< Top coded first, bottom displayed first
-+ AV_FIELD_BT, //< Bottom coded first, top displayed first
-+};
-+
-+/**
-+ * main external API structure.
-+ * New fields can be added to the end with minor version bumps.
-+ * Removal, reordering and changes to existing fields require a major
-+ * version bump.
-+ * You can use AVOptions (av_opt* / av_set/get*()) to access these fields from user
-+ * applications.
-+ * The name string for AVOptions options matches the associated command line
-+ * parameter name and can be found in libavcodec/options_table.h
-+ * The AVOption/command line parameter names differ in some cases from the C
-+ * structure field names for historic reasons or brevity.
-+ * sizeof(AVCodecContext) must not be used outside libav*.
-+ */
-+typedef struct AVCodecContext {
-+ /**
-+ * information on struct for av_log
-+ * - set by avcodec_alloc_context3
-+ */
-+ const AVClass *av_class;
-+ int log_level_offset;
-+
-+ enum AVMediaType codec_type; /* see AVMEDIA_TYPE_xxx */
-+ const struct AVCodec *codec;
-+ enum AVCodecID codec_id; /* see AV_CODEC_ID_xxx */
-+
-+ /**
-+ * fourcc (LSB first, so "ABCD" -> ('D'<<24) + ('C'<<16) + ('B'<<8) + 'A').
-+ * This is used to work around some encoder bugs.
-+ * A demuxer should set this to what is stored in the field used to identify the codec.
-+ * If there are multiple such fields in a container then the demuxer should choose the one
-+ * which maximizes the information about the used codec.
-+ * If the codec tag field in a container is larger than 32 bits then the demuxer should
-+ * remap the longer ID to 32 bits with a table or other structure. Alternatively a new
-+ * extra_codec_tag + size could be added but for this a clear advantage must be demonstrated
-+ * first.
-+ * - encoding: Set by user, if not then the default based on codec_id will be used.
-+ * - decoding: Set by user, will be converted to uppercase by libavcodec during init.
-+ */
-+ unsigned int codec_tag;
-+
-+ void *priv_data;
-+
-+ /**
-+ * Private context used for internal data.
-+ *
-+ * Unlike priv_data, this is not codec-specific. It is used in general
-+ * libavcodec functions.
-+ */
-+ struct AVCodecInternal *internal;
-+
-+ /**
-+ * Private data of the user, can be used to carry app specific stuff.
-+ * - encoding: Set by user.
-+ * - decoding: Set by user.
-+ */
-+ void *opaque;
-+
-+ /**
-+ * the average bitrate
-+ * - encoding: Set by user; unused for constant quantizer encoding.
-+ * - decoding: Set by user, may be overwritten by libavcodec
-+ * if this info is available in the stream
-+ */
-+ int64_t bit_rate;
-+
-+ /**
-+ * number of bits the bitstream is allowed to diverge from the reference.
-+ * the reference can be CBR (for CBR pass1) or VBR (for pass2)
-+ * - encoding: Set by user; unused for constant quantizer encoding.
-+ * - decoding: unused
-+ */
-+ int bit_rate_tolerance;
-+
-+ /**
-+ * Global quality for codecs which cannot change it per frame.
-+ * This should be proportional to MPEG-1/2/4 qscale.
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int global_quality;
-+
-+ /**
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int compression_level;
-+#define FF_COMPRESSION_DEFAULT -1
-+
-+ /**
-+ * AV_CODEC_FLAG_*.
-+ * - encoding: Set by user.
-+ * - decoding: Set by user.
-+ */
-+ int flags;
-+
-+ /**
-+ * AV_CODEC_FLAG2_*
-+ * - encoding: Set by user.
-+ * - decoding: Set by user.
-+ */
-+ int flags2;
-+
-+ /**
-+ * some codecs need / can use extradata like Huffman tables.
-+ * MJPEG: Huffman tables
-+ * rv10: additional flags
-+ * MPEG-4: global headers (they can be in the bitstream or here)
-+ * The allocated memory should be AV_INPUT_BUFFER_PADDING_SIZE bytes larger
-+ * than extradata_size to avoid problems if it is read with the bitstream reader.
-+ * The bytewise contents of extradata must not depend on the architecture or CPU endianness.
-+ * - encoding: Set/allocated/freed by libavcodec.
-+ * - decoding: Set/allocated/freed by user.
-+ */
-+ uint8_t *extradata;
-+ int extradata_size;
-+
-+ /**
-+ * This is the fundamental unit of time (in seconds) in terms
-+ * of which frame timestamps are represented. For fixed-fps content,
-+ * timebase should be 1/framerate and timestamp increments should be
-+ * identically 1.
-+ * This often, but not always is the inverse of the frame rate or field rate
-+ * for video. 1/time_base is not the average frame rate if the frame rate is not
-+ * constant.
-+ *
-+ * Like containers, elementary streams also can store timestamps, 1/time_base
-+ * is the unit in which these timestamps are specified.
-+ * As example of such codec time base see ISO/IEC 14496-2:2001(E)
-+ * vop_time_increment_resolution and fixed_vop_rate
-+ * (fixed_vop_rate == 0 implies that it is different from the framerate)
-+ *
-+ * - encoding: MUST be set by user.
-+ * - decoding: the use of this field for decoding is deprecated.
-+ * Use framerate instead.
-+ */
-+ AVRational time_base;
-+
-+ /**
-+ * For some codecs, the time base is closer to the field rate than the frame rate.
-+ * Most notably, H.264 and MPEG-2 specify time_base as half of frame duration
-+ * if no telecine is used ...
-+ *
-+ * Set to time_base ticks per frame. Default 1, e.g., H.264/MPEG-2 set it to 2.
-+ */
-+ int ticks_per_frame;
-+
-+ /**
-+ * Codec delay.
-+ *
-+ * Encoding: Number of frames delay there will be from the encoder input to
-+ * the decoder output. (we assume the decoder matches the spec)
-+ * Decoding: Number of frames delay in addition to what a standard decoder
-+ * as specified in the spec would produce.
-+ *
-+ * Video:
-+ * Number of frames the decoded output will be delayed relative to the
-+ * encoded input.
-+ *
-+ * Audio:
-+ * For encoding, this field is unused (see initial_padding).
-+ *
-+ * For decoding, this is the number of samples the decoder needs to
-+ * output before the decoder's output is valid. When seeking, you should
-+ * start decoding this many samples prior to your desired seek point.
-+ *
-+ * - encoding: Set by libavcodec.
-+ * - decoding: Set by libavcodec.
-+ */
-+ int delay;
-+
-+
-+ /* video only */
-+ /**
-+ * picture width / height.
-+ *
-+ * @note Those fields may not match the values of the last
-+ * AVFrame output by avcodec_decode_video2 due frame
-+ * reordering.
-+ *
-+ * - encoding: MUST be set by user.
-+ * - decoding: May be set by the user before opening the decoder if known e.g.
-+ * from the container. Some decoders will require the dimensions
-+ * to be set by the caller. During decoding, the decoder may
-+ * overwrite those values as required while parsing the data.
-+ */
-+ int width, height;
-+
-+ /**
-+ * Bitstream width / height, may be different from width/height e.g. when
-+ * the decoded frame is cropped before being output or lowres is enabled.
-+ *
-+ * @note Those field may not match the value of the last
-+ * AVFrame output by avcodec_receive_frame() due frame
-+ * reordering.
-+ *
-+ * - encoding: unused
-+ * - decoding: May be set by the user before opening the decoder if known
-+ * e.g. from the container. During decoding, the decoder may
-+ * overwrite those values as required while parsing the data.
-+ */
-+ int coded_width, coded_height;
-+
-+ /**
-+ * the number of pictures in a group of pictures, or 0 for intra_only
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int gop_size;
-+
-+ /**
-+ * Pixel format, see AV_PIX_FMT_xxx.
-+ * May be set by the demuxer if known from headers.
-+ * May be overridden by the decoder if it knows better.
-+ *
-+ * @note This field may not match the value of the last
-+ * AVFrame output by avcodec_receive_frame() due frame
-+ * reordering.
-+ *
-+ * - encoding: Set by user.
-+ * - decoding: Set by user if known, overridden by libavcodec while
-+ * parsing the data.
-+ */
-+ enum AVPixelFormat pix_fmt;
-+
-+ /**
-+ * If non NULL, 'draw_horiz_band' is called by the libavcodec
-+ * decoder to draw a horizontal band. It improves cache usage. Not
-+ * all codecs can do that. You must check the codec capabilities
-+ * beforehand.
-+ * When multithreading is used, it may be called from multiple threads
-+ * at the same time; threads might draw different parts of the same AVFrame,
-+ * or multiple AVFrames, and there is no guarantee that slices will be drawn
-+ * in order.
-+ * The function is also used by hardware acceleration APIs.
-+ * It is called at least once during frame decoding to pass
-+ * the data needed for hardware render.
-+ * In that mode instead of pixel data, AVFrame points to
-+ * a structure specific to the acceleration API. The application
-+ * reads the structure and can change some fields to indicate progress
-+ * or mark state.
-+ * - encoding: unused
-+ * - decoding: Set by user.
-+ * @param height the height of the slice
-+ * @param y the y position of the slice
-+ * @param type 1->top field, 2->bottom field, 3->frame
-+ * @param offset offset into the AVFrame.data from which the slice should be read
-+ */
-+ void (*draw_horiz_band)(struct AVCodecContext *s,
-+ const AVFrame *src, int offset[AV_NUM_DATA_POINTERS],
-+ int y, int type, int height);
-+
-+ /**
-+ * callback to negotiate the pixelFormat
-+ * @param fmt is the list of formats which are supported by the codec,
-+ * it is terminated by -1 as 0 is a valid format, the formats are ordered by quality.
-+ * The first is always the native one.
-+ * @note The callback may be called again immediately if initialization for
-+ * the selected (hardware-accelerated) pixel format failed.
-+ * @warning Behavior is undefined if the callback returns a value not
-+ * in the fmt list of formats.
-+ * @return the chosen format
-+ * - encoding: unused
-+ * - decoding: Set by user, if not set the native format will be chosen.
-+ */
-+ enum AVPixelFormat (*get_format)(struct AVCodecContext *s, const enum AVPixelFormat * fmt);
-+
-+ /**
-+ * maximum number of B-frames between non-B-frames
-+ * Note: The output will be delayed by max_b_frames+1 relative to the input.
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int max_b_frames;
-+
-+ /**
-+ * qscale factor between IP and B-frames
-+ * If > 0 then the last P-frame quantizer will be used (q= lastp_q*factor+offset).
-+ * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset).
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ float b_quant_factor;
-+
-+#if FF_API_PRIVATE_OPT
-+ /** @deprecated use encoder private options instead */
-+ attribute_deprecated
-+ int b_frame_strategy;
-+#endif
-+
-+ /**
-+ * qscale offset between IP and B-frames
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ float b_quant_offset;
-+
-+ /**
-+ * Size of the frame reordering buffer in the decoder.
-+ * For MPEG-2 it is 1 IPB or 0 low delay IP.
-+ * - encoding: Set by libavcodec.
-+ * - decoding: Set by libavcodec.
-+ */
-+ int has_b_frames;
-+
-+#if FF_API_PRIVATE_OPT
-+ /** @deprecated use encoder private options instead */
-+ attribute_deprecated
-+ int mpeg_quant;
-+#endif
-+
-+ /**
-+ * qscale factor between P- and I-frames
-+ * If > 0 then the last P-frame quantizer will be used (q = lastp_q * factor + offset).
-+ * If < 0 then normal ratecontrol will be done (q= -normal_q*factor+offset).
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ float i_quant_factor;
-+
-+ /**
-+ * qscale offset between P and I-frames
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ float i_quant_offset;
-+
-+ /**
-+ * luminance masking (0-> disabled)
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ float lumi_masking;
-+
-+ /**
-+ * temporary complexity masking (0-> disabled)
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ float temporal_cplx_masking;
-+
-+ /**
-+ * spatial complexity masking (0-> disabled)
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ float spatial_cplx_masking;
-+
-+ /**
-+ * p block masking (0-> disabled)
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ float p_masking;
-+
-+ /**
-+ * darkness masking (0-> disabled)
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ float dark_masking;
-+
-+ /**
-+ * slice count
-+ * - encoding: Set by libavcodec.
-+ * - decoding: Set by user (or 0).
-+ */
-+ int slice_count;
-+
-+#if FF_API_PRIVATE_OPT
-+ /** @deprecated use encoder private options instead */
-+ attribute_deprecated
-+ int prediction_method;
-+#define FF_PRED_LEFT 0
-+#define FF_PRED_PLANE 1
-+#define FF_PRED_MEDIAN 2
-+#endif
-+
-+ /**
-+ * slice offsets in the frame in bytes
-+ * - encoding: Set/allocated by libavcodec.
-+ * - decoding: Set/allocated by user (or NULL).
-+ */
-+ int *slice_offset;
-+
-+ /**
-+ * sample aspect ratio (0 if unknown)
-+ * That is the width of a pixel divided by the height of the pixel.
-+ * Numerator and denominator must be relatively prime and smaller than 256 for some video standards.
-+ * - encoding: Set by user.
-+ * - decoding: Set by libavcodec.
-+ */
-+ AVRational sample_aspect_ratio;
-+
-+ /**
-+ * motion estimation comparison function
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int me_cmp;
-+ /**
-+ * subpixel motion estimation comparison function
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int me_sub_cmp;
-+ /**
-+ * macroblock comparison function (not supported yet)
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int mb_cmp;
-+ /**
-+ * interlaced DCT comparison function
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int ildct_cmp;
-+#define FF_CMP_SAD 0
-+#define FF_CMP_SSE 1
-+#define FF_CMP_SATD 2
-+#define FF_CMP_DCT 3
-+#define FF_CMP_PSNR 4
-+#define FF_CMP_BIT 5
-+#define FF_CMP_RD 6
-+#define FF_CMP_ZERO 7
-+#define FF_CMP_VSAD 8
-+#define FF_CMP_VSSE 9
-+#define FF_CMP_NSSE 10
-+#define FF_CMP_W53 11
-+#define FF_CMP_W97 12
-+#define FF_CMP_DCTMAX 13
-+#define FF_CMP_DCT264 14
-+#define FF_CMP_MEDIAN_SAD 15
-+#define FF_CMP_CHROMA 256
-+
-+ /**
-+ * ME diamond size & shape
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int dia_size;
-+
-+ /**
-+ * amount of previous MV predictors (2a+1 x 2a+1 square)
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int last_predictor_count;
-+
-+#if FF_API_PRIVATE_OPT
-+ /** @deprecated use encoder private options instead */
-+ attribute_deprecated
-+ int pre_me;
-+#endif
-+
-+ /**
-+ * motion estimation prepass comparison function
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int me_pre_cmp;
-+
-+ /**
-+ * ME prepass diamond size & shape
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int pre_dia_size;
-+
-+ /**
-+ * subpel ME quality
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int me_subpel_quality;
-+
-+ /**
-+ * maximum motion estimation search range in subpel units
-+ * If 0 then no limit.
-+ *
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int me_range;
-+
-+ /**
-+ * slice flags
-+ * - encoding: unused
-+ * - decoding: Set by user.
-+ */
-+ int slice_flags;
-+#define SLICE_FLAG_CODED_ORDER 0x0001 ///< draw_horiz_band() is called in coded order instead of display
-+#define SLICE_FLAG_ALLOW_FIELD 0x0002 ///< allow draw_horiz_band() with field slices (MPEG-2 field pics)
-+#define SLICE_FLAG_ALLOW_PLANE 0x0004 ///< allow draw_horiz_band() with 1 component at a time (SVQ1)
-+
-+ /**
-+ * macroblock decision mode
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int mb_decision;
-+#define FF_MB_DECISION_SIMPLE 0 ///< uses mb_cmp
-+#define FF_MB_DECISION_BITS 1 ///< chooses the one which needs the fewest bits
-+#define FF_MB_DECISION_RD 2 ///< rate distortion
-+
-+ /**
-+ * custom intra quantization matrix
-+ * - encoding: Set by user, can be NULL.
-+ * - decoding: Set by libavcodec.
-+ */
-+ uint16_t *intra_matrix;
-+
-+ /**
-+ * custom inter quantization matrix
-+ * - encoding: Set by user, can be NULL.
-+ * - decoding: Set by libavcodec.
-+ */
-+ uint16_t *inter_matrix;
-+
-+#if FF_API_PRIVATE_OPT
-+ /** @deprecated use encoder private options instead */
-+ attribute_deprecated
-+ int scenechange_threshold;
-+
-+ /** @deprecated use encoder private options instead */
-+ attribute_deprecated
-+ int noise_reduction;
-+#endif
-+
-+ /**
-+ * precision of the intra DC coefficient - 8
-+ * - encoding: Set by user.
-+ * - decoding: Set by libavcodec
-+ */
-+ int intra_dc_precision;
-+
-+ /**
-+ * Number of macroblock rows at the top which are skipped.
-+ * - encoding: unused
-+ * - decoding: Set by user.
-+ */
-+ int skip_top;
-+
-+ /**
-+ * Number of macroblock rows at the bottom which are skipped.
-+ * - encoding: unused
-+ * - decoding: Set by user.
-+ */
-+ int skip_bottom;
-+
-+ /**
-+ * minimum MB Lagrange multiplier
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int mb_lmin;
-+
-+ /**
-+ * maximum MB Lagrange multiplier
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int mb_lmax;
-+
-+#if FF_API_PRIVATE_OPT
-+ /**
-+ * @deprecated use encoder private options instead
-+ */
-+ attribute_deprecated
-+ int me_penalty_compensation;
-+#endif
-+
-+ /**
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int bidir_refine;
-+
-+#if FF_API_PRIVATE_OPT
-+ /** @deprecated use encoder private options instead */
-+ attribute_deprecated
-+ int brd_scale;
-+#endif
-+
-+ /**
-+ * minimum GOP size
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int keyint_min;
-+
-+ /**
-+ * number of reference frames
-+ * - encoding: Set by user.
-+ * - decoding: Set by lavc.
-+ */
-+ int refs;
-+
-+#if FF_API_PRIVATE_OPT
-+ /** @deprecated use encoder private options instead */
-+ attribute_deprecated
-+ int chromaoffset;
-+#endif
-+
-+ /**
-+ * Note: Value depends upon the compare function used for fullpel ME.
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int mv0_threshold;
-+
-+#if FF_API_PRIVATE_OPT
-+ /** @deprecated use encoder private options instead */
-+ attribute_deprecated
-+ int b_sensitivity;
-+#endif
-+
-+ /**
-+ * Chromaticity coordinates of the source primaries.
-+ * - encoding: Set by user
-+ * - decoding: Set by libavcodec
-+ */
-+ enum AVColorPrimaries color_primaries;
-+
-+ /**
-+ * Color Transfer Characteristic.
-+ * - encoding: Set by user
-+ * - decoding: Set by libavcodec
-+ */
-+ enum AVColorTransferCharacteristic color_trc;
-+
-+ /**
-+ * YUV colorspace type.
-+ * - encoding: Set by user
-+ * - decoding: Set by libavcodec
-+ */
-+ enum AVColorSpace colorspace;
-+
-+ /**
-+ * MPEG vs JPEG YUV range.
-+ * - encoding: Set by user
-+ * - decoding: Set by libavcodec
-+ */
-+ enum AVColorRange color_range;
-+
-+ /**
-+ * This defines the location of chroma samples.
-+ * - encoding: Set by user
-+ * - decoding: Set by libavcodec
-+ */
-+ enum AVChromaLocation chroma_sample_location;
-+
-+ /**
-+ * Number of slices.
-+ * Indicates number of picture subdivisions. Used for parallelized
-+ * decoding.
-+ * - encoding: Set by user
-+ * - decoding: unused
-+ */
-+ int slices;
-+
-+ /** Field order
-+ * - encoding: set by libavcodec
-+ * - decoding: Set by user.
-+ */
-+ enum AVFieldOrder field_order;
-+
-+ /* audio only */
-+ int sample_rate; ///< samples per second
-+ int channels; ///< number of audio channels
-+
-+ /**
-+ * audio sample format
-+ * - encoding: Set by user.
-+ * - decoding: Set by libavcodec.
-+ */
-+ enum AVSampleFormat sample_fmt; ///< sample format
-+
-+ /* The following data should not be initialized. */
-+ /**
-+ * Number of samples per channel in an audio frame.
-+ *
-+ * - encoding: set by libavcodec in avcodec_open2(). Each submitted frame
-+ * except the last must contain exactly frame_size samples per channel.
-+ * May be 0 when the codec has AV_CODEC_CAP_VARIABLE_FRAME_SIZE set, then the
-+ * frame size is not restricted.
-+ * - decoding: may be set by some decoders to indicate constant frame size
-+ */
-+ int frame_size;
-+
-+ /**
-+ * Frame counter, set by libavcodec.
-+ *
-+ * - decoding: total number of frames returned from the decoder so far.
-+ * - encoding: total number of frames passed to the encoder so far.
-+ *
-+ * @note the counter is not incremented if encoding/decoding resulted in
-+ * an error.
-+ */
-+ int frame_number;
-+
-+ /**
-+ * number of bytes per packet if constant and known or 0
-+ * Used by some WAV based audio codecs.
-+ */
-+ int block_align;
-+
-+ /**
-+ * Audio cutoff bandwidth (0 means "automatic")
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int cutoff;
-+
-+ /**
-+ * Audio channel layout.
-+ * - encoding: set by user.
-+ * - decoding: set by user, may be overwritten by libavcodec.
-+ */
-+ uint64_t channel_layout;
-+
-+ /**
-+ * Request decoder to use this channel layout if it can (0 for default)
-+ * - encoding: unused
-+ * - decoding: Set by user.
-+ */
-+ uint64_t request_channel_layout;
-+
-+ /**
-+ * Type of service that the audio stream conveys.
-+ * - encoding: Set by user.
-+ * - decoding: Set by libavcodec.
-+ */
-+ enum AVAudioServiceType audio_service_type;
-+
-+ /**
-+ * desired sample format
-+ * - encoding: Not used.
-+ * - decoding: Set by user.
-+ * Decoder will decode to this format if it can.
-+ */
-+ enum AVSampleFormat request_sample_fmt;
-+
-+ /**
-+ * This callback is called at the beginning of each frame to get data
-+ * buffer(s) for it. There may be one contiguous buffer for all the data or
-+ * there may be a buffer per each data plane or anything in between. What
-+ * this means is, you may set however many entries in buf[] you feel necessary.
-+ * Each buffer must be reference-counted using the AVBuffer API (see description
-+ * of buf[] below).
-+ *
-+ * The following fields will be set in the frame before this callback is
-+ * called:
-+ * - format
-+ * - width, height (video only)
-+ * - sample_rate, channel_layout, nb_samples (audio only)
-+ * Their values may differ from the corresponding values in
-+ * AVCodecContext. This callback must use the frame values, not the codec
-+ * context values, to calculate the required buffer size.
-+ *
-+ * This callback must fill the following fields in the frame:
-+ * - data[]
-+ * - linesize[]
-+ * - extended_data:
-+ * * if the data is planar audio with more than 8 channels, then this
-+ * callback must allocate and fill extended_data to contain all pointers
-+ * to all data planes. data[] must hold as many pointers as it can.
-+ * extended_data must be allocated with av_malloc() and will be freed in
-+ * av_frame_unref().
-+ * * otherwise extended_data must point to data
-+ * - buf[] must contain one or more pointers to AVBufferRef structures. Each of
-+ * the frame's data and extended_data pointers must be contained in these. That
-+ * is, one AVBufferRef for each allocated chunk of memory, not necessarily one
-+ * AVBufferRef per data[] entry. See: av_buffer_create(), av_buffer_alloc(),
-+ * and av_buffer_ref().
-+ * - extended_buf and nb_extended_buf must be allocated with av_malloc() by
-+ * this callback and filled with the extra buffers if there are more
-+ * buffers than buf[] can hold. extended_buf will be freed in
-+ * av_frame_unref().
-+ *
-+ * If AV_CODEC_CAP_DR1 is not set then get_buffer2() must call
-+ * avcodec_default_get_buffer2() instead of providing buffers allocated by
-+ * some other means.
-+ *
-+ * Each data plane must be aligned to the maximum required by the target
-+ * CPU.
-+ *
-+ * @see avcodec_default_get_buffer2()
-+ *
-+ * Video:
-+ *
-+ * If AV_GET_BUFFER_FLAG_REF is set in flags then the frame may be reused
-+ * (read and/or written to if it is writable) later by libavcodec.
-+ *
-+ * avcodec_align_dimensions2() should be used to find the required width and
-+ * height, as they normally need to be rounded up to the next multiple of 16.
-+ *
-+ * Some decoders do not support linesizes changing between frames.
-+ *
-+ * If frame multithreading is used and thread_safe_callbacks is set,
-+ * this callback may be called from a different thread, but not from more
-+ * than one at once. Does not need to be reentrant.
-+ *
-+ * @see avcodec_align_dimensions2()
-+ *
-+ * Audio:
-+ *
-+ * Decoders request a buffer of a particular size by setting
-+ * AVFrame.nb_samples prior to calling get_buffer2(). The decoder may,
-+ * however, utilize only part of the buffer by setting AVFrame.nb_samples
-+ * to a smaller value in the output frame.
-+ *
-+ * As a convenience, av_samples_get_buffer_size() and
-+ * av_samples_fill_arrays() in libavutil may be used by custom get_buffer2()
-+ * functions to find the required data size and to fill data pointers and
-+ * linesize. In AVFrame.linesize, only linesize[0] may be set for audio
-+ * since all planes must be the same size.
-+ *
-+ * @see av_samples_get_buffer_size(), av_samples_fill_arrays()
-+ *
-+ * - encoding: unused
-+ * - decoding: Set by libavcodec, user can override.
-+ */
-+ int (*get_buffer2)(struct AVCodecContext *s, AVFrame *frame, int flags);
-+
-+ /**
-+ * If non-zero, the decoded audio and video frames returned from
-+ * avcodec_decode_video2() and avcodec_decode_audio4() are reference-counted
-+ * and are valid indefinitely. The caller must free them with
-+ * av_frame_unref() when they are not needed anymore.
-+ * Otherwise, the decoded frames must not be freed by the caller and are
-+ * only valid until the next decode call.
-+ *
-+ * This is always automatically enabled if avcodec_receive_frame() is used.
-+ *
-+ * - encoding: unused
-+ * - decoding: set by the caller before avcodec_open2().
-+ */
-+ attribute_deprecated
-+ int refcounted_frames;
-+
-+ /* - encoding parameters */
-+ float qcompress; ///< amount of qscale change between easy & hard scenes (0.0-1.0)
-+ float qblur; ///< amount of qscale smoothing over time (0.0-1.0)
-+
-+ /**
-+ * minimum quantizer
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int qmin;
-+
-+ /**
-+ * maximum quantizer
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int qmax;
-+
-+ /**
-+ * maximum quantizer difference between frames
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int max_qdiff;
-+
-+ /**
-+ * decoder bitstream buffer size
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int rc_buffer_size;
-+
-+ /**
-+ * ratecontrol override, see RcOverride
-+ * - encoding: Allocated/set/freed by user.
-+ * - decoding: unused
-+ */
-+ int rc_override_count;
-+ RcOverride *rc_override;
-+
-+ /**
-+ * maximum bitrate
-+ * - encoding: Set by user.
-+ * - decoding: Set by user, may be overwritten by libavcodec.
-+ */
-+ int64_t rc_max_rate;
-+
-+ /**
-+ * minimum bitrate
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int64_t rc_min_rate;
-+
-+ /**
-+ * Ratecontrol attempt to use, at maximum, <value> of what can be used without an underflow.
-+ * - encoding: Set by user.
-+ * - decoding: unused.
-+ */
-+ float rc_max_available_vbv_use;
-+
-+ /**
-+ * Ratecontrol attempt to use, at least, <value> times the amount needed to prevent a vbv overflow.
-+ * - encoding: Set by user.
-+ * - decoding: unused.
-+ */
-+ float rc_min_vbv_overflow_use;
-+
-+ /**
-+ * Number of bits which should be loaded into the rc buffer before decoding starts.
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int rc_initial_buffer_occupancy;
-+
-+#if FF_API_CODER_TYPE
-+#define FF_CODER_TYPE_VLC 0
-+#define FF_CODER_TYPE_AC 1
-+#define FF_CODER_TYPE_RAW 2
-+#define FF_CODER_TYPE_RLE 3
-+ /**
-+ * @deprecated use encoder private options instead
-+ */
-+ attribute_deprecated
-+ int coder_type;
-+#endif /* FF_API_CODER_TYPE */
-+
-+#if FF_API_PRIVATE_OPT
-+ /** @deprecated use encoder private options instead */
-+ attribute_deprecated
-+ int context_model;
-+#endif
-+
-+#if FF_API_PRIVATE_OPT
-+ /** @deprecated use encoder private options instead */
-+ attribute_deprecated
-+ int frame_skip_threshold;
-+
-+ /** @deprecated use encoder private options instead */
-+ attribute_deprecated
-+ int frame_skip_factor;
-+
-+ /** @deprecated use encoder private options instead */
-+ attribute_deprecated
-+ int frame_skip_exp;
-+
-+ /** @deprecated use encoder private options instead */
-+ attribute_deprecated
-+ int frame_skip_cmp;
-+#endif /* FF_API_PRIVATE_OPT */
-+
-+ /**
-+ * trellis RD quantization
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int trellis;
-+
-+#if FF_API_PRIVATE_OPT
-+ /** @deprecated use encoder private options instead */
-+ attribute_deprecated
-+ int min_prediction_order;
-+
-+ /** @deprecated use encoder private options instead */
-+ attribute_deprecated
-+ int max_prediction_order;
-+
-+ /** @deprecated use encoder private options instead */
-+ attribute_deprecated
-+ int64_t timecode_frame_start;
-+#endif
-+
-+#if FF_API_RTP_CALLBACK
-+ /**
-+ * @deprecated unused
-+ */
-+ /* The RTP callback: This function is called */
-+ /* every time the encoder has a packet to send. */
-+ /* It depends on the encoder if the data starts */
-+ /* with a Start Code (it should). H.263 does. */
-+ /* mb_nb contains the number of macroblocks */
-+ /* encoded in the RTP payload. */
-+ attribute_deprecated
-+ void (*rtp_callback)(struct AVCodecContext *avctx, void *data, int size, int mb_nb);
-+#endif
-+
-+#if FF_API_PRIVATE_OPT
-+ /** @deprecated use encoder private options instead */
-+ attribute_deprecated
-+ int rtp_payload_size; /* The size of the RTP payload: the coder will */
-+ /* do its best to deliver a chunk with size */
-+ /* below rtp_payload_size, the chunk will start */
-+ /* with a start code on some codecs like H.263. */
-+ /* This doesn't take account of any particular */
-+ /* headers inside the transmitted RTP payload. */
-+#endif
-+
-+#if FF_API_STAT_BITS
-+ /* statistics, used for 2-pass encoding */
-+ attribute_deprecated
-+ int mv_bits;
-+ attribute_deprecated
-+ int header_bits;
-+ attribute_deprecated
-+ int i_tex_bits;
-+ attribute_deprecated
-+ int p_tex_bits;
-+ attribute_deprecated
-+ int i_count;
-+ attribute_deprecated
-+ int p_count;
-+ attribute_deprecated
-+ int skip_count;
-+ attribute_deprecated
-+ int misc_bits;
-+
-+ /** @deprecated this field is unused */
-+ attribute_deprecated
-+ int frame_bits;
-+#endif
-+
-+ /**
-+ * pass1 encoding statistics output buffer
-+ * - encoding: Set by libavcodec.
-+ * - decoding: unused
-+ */
-+ char *stats_out;
-+
-+ /**
-+ * pass2 encoding statistics input buffer
-+ * Concatenated stuff from stats_out of pass1 should be placed here.
-+ * - encoding: Allocated/set/freed by user.
-+ * - decoding: unused
-+ */
-+ char *stats_in;
-+
-+ /**
-+ * Work around bugs in encoders which sometimes cannot be detected automatically.
-+ * - encoding: Set by user
-+ * - decoding: Set by user
-+ */
-+ int workaround_bugs;
-+#define FF_BUG_AUTODETECT 1 ///< autodetection
-+#define FF_BUG_XVID_ILACE 4
-+#define FF_BUG_UMP4 8
-+#define FF_BUG_NO_PADDING 16
-+#define FF_BUG_AMV 32
-+#define FF_BUG_QPEL_CHROMA 64
-+#define FF_BUG_STD_QPEL 128
-+#define FF_BUG_QPEL_CHROMA2 256
-+#define FF_BUG_DIRECT_BLOCKSIZE 512
-+#define FF_BUG_EDGE 1024
-+#define FF_BUG_HPEL_CHROMA 2048
-+#define FF_BUG_DC_CLIP 4096
-+#define FF_BUG_MS 8192 ///< Work around various bugs in Microsoft's broken decoders.
-+#define FF_BUG_TRUNCATED 16384
-+#define FF_BUG_IEDGE 32768
-+
-+ /**
-+ * strictly follow the standard (MPEG-4, ...).
-+ * - encoding: Set by user.
-+ * - decoding: Set by user.
-+ * Setting this to STRICT or higher means the encoder and decoder will
-+ * generally do stupid things, whereas setting it to unofficial or lower
-+ * will mean the encoder might produce output that is not supported by all
-+ * spec-compliant decoders. Decoders don't differentiate between normal,
-+ * unofficial and experimental (that is, they always try to decode things
-+ * when they can) unless they are explicitly asked to behave stupidly
-+ * (=strictly conform to the specs)
-+ */
-+ int strict_std_compliance;
-+#define FF_COMPLIANCE_VERY_STRICT 2 ///< Strictly conform to an older more strict version of the spec or reference software.
-+#define FF_COMPLIANCE_STRICT 1 ///< Strictly conform to all the things in the spec no matter what consequences.
-+#define FF_COMPLIANCE_NORMAL 0
-+#define FF_COMPLIANCE_UNOFFICIAL -1 ///< Allow unofficial extensions
-+#define FF_COMPLIANCE_EXPERIMENTAL -2 ///< Allow nonstandardized experimental things.
-+
-+ /**
-+ * error concealment flags
-+ * - encoding: unused
-+ * - decoding: Set by user.
-+ */
-+ int error_concealment;
-+#define FF_EC_GUESS_MVS 1
-+#define FF_EC_DEBLOCK 2
-+#define FF_EC_FAVOR_INTER 256
-+
-+ /**
-+ * debug
-+ * - encoding: Set by user.
-+ * - decoding: Set by user.
-+ */
-+ int debug;
-+#define FF_DEBUG_PICT_INFO 1
-+#define FF_DEBUG_RC 2
-+#define FF_DEBUG_BITSTREAM 4
-+#define FF_DEBUG_MB_TYPE 8
-+#define FF_DEBUG_QP 16
-+#if FF_API_DEBUG_MV
-+/**
-+ * @deprecated this option does nothing
-+ */
-+#define FF_DEBUG_MV 32
-+#endif
-+#define FF_DEBUG_DCT_COEFF 0x00000040
-+#define FF_DEBUG_SKIP 0x00000080
-+#define FF_DEBUG_STARTCODE 0x00000100
-+#define FF_DEBUG_ER 0x00000400
-+#define FF_DEBUG_MMCO 0x00000800
-+#define FF_DEBUG_BUGS 0x00001000
-+#if FF_API_DEBUG_MV
-+#define FF_DEBUG_VIS_QP 0x00002000
-+#define FF_DEBUG_VIS_MB_TYPE 0x00004000
-+#endif
-+#define FF_DEBUG_BUFFERS 0x00008000
-+#define FF_DEBUG_THREADS 0x00010000
-+#define FF_DEBUG_GREEN_MD 0x00800000
-+#define FF_DEBUG_NOMC 0x01000000
-+
-+#if FF_API_DEBUG_MV
-+ /**
-+ * debug
-+ * - encoding: Set by user.
-+ * - decoding: Set by user.
-+ */
-+ int debug_mv;
-+#define FF_DEBUG_VIS_MV_P_FOR 0x00000001 // visualize forward predicted MVs of P-frames
-+#define FF_DEBUG_VIS_MV_B_FOR 0x00000002 // visualize forward predicted MVs of B-frames
-+#define FF_DEBUG_VIS_MV_B_BACK 0x00000004 // visualize backward predicted MVs of B-frames
-+#endif
-+
-+ /**
-+ * Error recognition; may misdetect some more or less valid parts as errors.
-+ * - encoding: unused
-+ * - decoding: Set by user.
-+ */
-+ int err_recognition;
-+
-+/**
-+ * Verify checksums embedded in the bitstream (could be of either encoded or
-+ * decoded data, depending on the codec) and print an error message on mismatch.
-+ * If AV_EF_EXPLODE is also set, a mismatching checksum will result in the
-+ * decoder returning an error.
-+ */
-+#define AV_EF_CRCCHECK (1<<0)
-+#define AV_EF_BITSTREAM (1<<1) ///< detect bitstream specification deviations
-+#define AV_EF_BUFFER (1<<2) ///< detect improper bitstream length
-+#define AV_EF_EXPLODE (1<<3) ///< abort decoding on minor error detection
-+
-+#define AV_EF_IGNORE_ERR (1<<15) ///< ignore errors and continue
-+#define AV_EF_CAREFUL (1<<16) ///< consider things that violate the spec, are fast to calculate and have not been seen in the wild as errors
-+#define AV_EF_COMPLIANT (1<<17) ///< consider all spec non compliances as errors
-+#define AV_EF_AGGRESSIVE (1<<18) ///< consider things that a sane encoder should not do as an error
-+
-+
-+ /**
-+ * opaque 64-bit number (generally a PTS) that will be reordered and
-+ * output in AVFrame.reordered_opaque
-+ * - encoding: unused
-+ * - decoding: Set by user.
-+ */
-+ int64_t reordered_opaque;
-+
-+ /**
-+ * Hardware accelerator in use
-+ * - encoding: unused.
-+ * - decoding: Set by libavcodec
-+ */
-+ const struct AVHWAccel *hwaccel;
-+
-+ /**
-+ * Hardware accelerator context.
-+ * For some hardware accelerators, a global context needs to be
-+ * provided by the user. In that case, this holds display-dependent
-+ * data FFmpeg cannot instantiate itself. Please refer to the
-+ * FFmpeg HW accelerator documentation to know how to fill this
-+ * is. e.g. for VA API, this is a struct vaapi_context.
-+ * - encoding: unused
-+ * - decoding: Set by user
-+ */
-+ void *hwaccel_context;
-+
-+ /**
-+ * error
-+ * - encoding: Set by libavcodec if flags & AV_CODEC_FLAG_PSNR.
-+ * - decoding: unused
-+ */
-+ uint64_t error[AV_NUM_DATA_POINTERS];
-+
-+ /**
-+ * DCT algorithm, see FF_DCT_* below
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int dct_algo;
-+#define FF_DCT_AUTO 0
-+#define FF_DCT_FASTINT 1
-+#define FF_DCT_INT 2
-+#define FF_DCT_MMX 3
-+#define FF_DCT_ALTIVEC 5
-+#define FF_DCT_FAAN 6
-+
-+ /**
-+ * IDCT algorithm, see FF_IDCT_* below.
-+ * - encoding: Set by user.
-+ * - decoding: Set by user.
-+ */
-+ int idct_algo;
-+#define FF_IDCT_AUTO 0
-+#define FF_IDCT_INT 1
-+#define FF_IDCT_SIMPLE 2
-+#define FF_IDCT_SIMPLEMMX 3
-+#define FF_IDCT_ARM 7
-+#define FF_IDCT_ALTIVEC 8
-+#define FF_IDCT_SIMPLEARM 10
-+#define FF_IDCT_XVID 14
-+#define FF_IDCT_SIMPLEARMV5TE 16
-+#define FF_IDCT_SIMPLEARMV6 17
-+#define FF_IDCT_FAAN 20
-+#define FF_IDCT_SIMPLENEON 22
-+#define FF_IDCT_NONE 24 /* Used by XvMC to extract IDCT coefficients with FF_IDCT_PERM_NONE */
-+#define FF_IDCT_SIMPLEAUTO 128
-+
-+ /**
-+ * bits per sample/pixel from the demuxer (needed for huffyuv).
-+ * - encoding: Set by libavcodec.
-+ * - decoding: Set by user.
-+ */
-+ int bits_per_coded_sample;
-+
-+ /**
-+ * Bits per sample/pixel of internal libavcodec pixel/sample format.
-+ * - encoding: set by user.
-+ * - decoding: set by libavcodec.
-+ */
-+ int bits_per_raw_sample;
-+
-+#if FF_API_LOWRES
-+ /**
-+ * low resolution decoding, 1-> 1/2 size, 2->1/4 size
-+ * - encoding: unused
-+ * - decoding: Set by user.
-+ */
-+ int lowres;
-+#endif
-+
-+#if FF_API_CODED_FRAME
-+ /**
-+ * the picture in the bitstream
-+ * - encoding: Set by libavcodec.
-+ * - decoding: unused
-+ *
-+ * @deprecated use the quality factor packet side data instead
-+ */
-+ attribute_deprecated AVFrame *coded_frame;
-+#endif
-+
-+ /**
-+ * thread count
-+ * is used to decide how many independent tasks should be passed to execute()
-+ * - encoding: Set by user.
-+ * - decoding: Set by user.
-+ */
-+ int thread_count;
-+
-+ /**
-+ * Which multithreading methods to use.
-+ * Use of FF_THREAD_FRAME will increase decoding delay by one frame per thread,
-+ * so clients which cannot provide future frames should not use it.
-+ *
-+ * - encoding: Set by user, otherwise the default is used.
-+ * - decoding: Set by user, otherwise the default is used.
-+ */
-+ int thread_type;
-+#define FF_THREAD_FRAME 1 ///< Decode more than one frame at once
-+#define FF_THREAD_SLICE 2 ///< Decode more than one part of a single frame at once
-+
-+ /**
-+ * Which multithreading methods are in use by the codec.
-+ * - encoding: Set by libavcodec.
-+ * - decoding: Set by libavcodec.
-+ */
-+ int active_thread_type;
-+
-+ /**
-+ * Set by the client if its custom get_buffer() callback can be called
-+ * synchronously from another thread, which allows faster multithreaded decoding.
-+ * draw_horiz_band() will be called from other threads regardless of this setting.
-+ * Ignored if the default get_buffer() is used.
-+ * - encoding: Set by user.
-+ * - decoding: Set by user.
-+ */
-+ int thread_safe_callbacks;
-+
-+ /**
-+ * The codec may call this to execute several independent things.
-+ * It will return only after finishing all tasks.
-+ * The user may replace this with some multithreaded implementation,
-+ * the default implementation will execute the parts serially.
-+ * @param count the number of things to execute
-+ * - encoding: Set by libavcodec, user can override.
-+ * - decoding: Set by libavcodec, user can override.
-+ */
-+ int (*execute)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg), void *arg2, int *ret, int count, int size);
-+
-+ /**
-+ * The codec may call this to execute several independent things.
-+ * It will return only after finishing all tasks.
-+ * The user may replace this with some multithreaded implementation,
-+ * the default implementation will execute the parts serially.
-+ * Also see avcodec_thread_init and e.g. the --enable-pthread configure option.
-+ * @param c context passed also to func
-+ * @param count the number of things to execute
-+ * @param arg2 argument passed unchanged to func
-+ * @param ret return values of executed functions, must have space for "count" values. May be NULL.
-+ * @param func function that will be called count times, with jobnr from 0 to count-1.
-+ * threadnr will be in the range 0 to c->thread_count-1 < MAX_THREADS and so that no
-+ * two instances of func executing at the same time will have the same threadnr.
-+ * @return always 0 currently, but code should handle a future improvement where when any call to func
-+ * returns < 0 no further calls to func may be done and < 0 is returned.
-+ * - encoding: Set by libavcodec, user can override.
-+ * - decoding: Set by libavcodec, user can override.
-+ */
-+ int (*execute2)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count);
-+
-+ /**
-+ * noise vs. sse weight for the nsse comparison function
-+ * - encoding: Set by user.
-+ * - decoding: unused
-+ */
-+ int nsse_weight;
-+
-+ /**
-+ * profile
-+ * - encoding: Set by user.
-+ * - decoding: Set by libavcodec.
-+ */
-+ int profile;
-+#define FF_PROFILE_UNKNOWN -99
-+#define FF_PROFILE_RESERVED -100
-+
-+#define FF_PROFILE_AAC_MAIN 0
-+#define FF_PROFILE_AAC_LOW 1
-+#define FF_PROFILE_AAC_SSR 2
-+#define FF_PROFILE_AAC_LTP 3
-+#define FF_PROFILE_AAC_HE 4
-+#define FF_PROFILE_AAC_HE_V2 28
-+#define FF_PROFILE_AAC_LD 22
-+#define FF_PROFILE_AAC_ELD 38
-+#define FF_PROFILE_MPEG2_AAC_LOW 128
-+#define FF_PROFILE_MPEG2_AAC_HE 131
-+
-+#define FF_PROFILE_DNXHD 0
-+#define FF_PROFILE_DNXHR_LB 1
-+#define FF_PROFILE_DNXHR_SQ 2
-+#define FF_PROFILE_DNXHR_HQ 3
-+#define FF_PROFILE_DNXHR_HQX 4
-+#define FF_PROFILE_DNXHR_444 5
-+
-+#define FF_PROFILE_DTS 20
-+#define FF_PROFILE_DTS_ES 30
-+#define FF_PROFILE_DTS_96_24 40
-+#define FF_PROFILE_DTS_HD_HRA 50
-+#define FF_PROFILE_DTS_HD_MA 60
-+#define FF_PROFILE_DTS_EXPRESS 70
-+
-+#define FF_PROFILE_MPEG2_422 0
-+#define FF_PROFILE_MPEG2_HIGH 1
-+#define FF_PROFILE_MPEG2_SS 2
-+#define FF_PROFILE_MPEG2_SNR_SCALABLE 3
-+#define FF_PROFILE_MPEG2_MAIN 4
-+#define FF_PROFILE_MPEG2_SIMPLE 5
-+
-+#define FF_PROFILE_H264_CONSTRAINED (1<<9) // 8+1; constraint_set1_flag
-+#define FF_PROFILE_H264_INTRA (1<<11) // 8+3; constraint_set3_flag
-+
-+#define FF_PROFILE_H264_BASELINE 66
-+#define FF_PROFILE_H264_CONSTRAINED_BASELINE (66|FF_PROFILE_H264_CONSTRAINED)
-+#define FF_PROFILE_H264_MAIN 77
-+#define FF_PROFILE_H264_EXTENDED 88
-+#define FF_PROFILE_H264_HIGH 100
-+#define FF_PROFILE_H264_HIGH_10 110
-+#define FF_PROFILE_H264_HIGH_10_INTRA (110|FF_PROFILE_H264_INTRA)
-+#define FF_PROFILE_H264_MULTIVIEW_HIGH 118
-+#define FF_PROFILE_H264_HIGH_422 122
-+#define FF_PROFILE_H264_HIGH_422_INTRA (122|FF_PROFILE_H264_INTRA)
-+#define FF_PROFILE_H264_STEREO_HIGH 128
-+#define FF_PROFILE_H264_HIGH_444 144
-+#define FF_PROFILE_H264_HIGH_444_PREDICTIVE 244
-+#define FF_PROFILE_H264_HIGH_444_INTRA (244|FF_PROFILE_H264_INTRA)
-+#define FF_PROFILE_H264_CAVLC_444 44
-+
-+#define FF_PROFILE_VC1_SIMPLE 0
-+#define FF_PROFILE_VC1_MAIN 1
-+#define FF_PROFILE_VC1_COMPLEX 2
-+#define FF_PROFILE_VC1_ADVANCED 3
-+
-+#define FF_PROFILE_MPEG4_SIMPLE 0
-+#define FF_PROFILE_MPEG4_SIMPLE_SCALABLE 1
-+#define FF_PROFILE_MPEG4_CORE 2
-+#define FF_PROFILE_MPEG4_MAIN 3
-+#define FF_PROFILE_MPEG4_N_BIT 4
-+#define FF_PROFILE_MPEG4_SCALABLE_TEXTURE 5
-+#define FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION 6
-+#define FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE 7
-+#define FF_PROFILE_MPEG4_HYBRID 8
-+#define FF_PROFILE_MPEG4_ADVANCED_REAL_TIME 9
-+#define FF_PROFILE_MPEG4_CORE_SCALABLE 10
-+#define FF_PROFILE_MPEG4_ADVANCED_CODING 11
-+#define FF_PROFILE_MPEG4_ADVANCED_CORE 12
-+#define FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE 13
-+#define FF_PROFILE_MPEG4_SIMPLE_STUDIO 14
-+#define FF_PROFILE_MPEG4_ADVANCED_SIMPLE 15
-+
-+#define FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_0 1
-+#define FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_1 2
-+#define FF_PROFILE_JPEG2000_CSTREAM_NO_RESTRICTION 32768
-+#define FF_PROFILE_JPEG2000_DCINEMA_2K 3
-+#define FF_PROFILE_JPEG2000_DCINEMA_4K 4
-+
-+#define FF_PROFILE_VP9_0 0
-+#define FF_PROFILE_VP9_1 1
-+#define FF_PROFILE_VP9_2 2
-+#define FF_PROFILE_VP9_3 3
-+
-+#define FF_PROFILE_HEVC_MAIN 1
-+#define FF_PROFILE_HEVC_MAIN_10 2
-+#define FF_PROFILE_HEVC_MAIN_STILL_PICTURE 3
-+#define FF_PROFILE_HEVC_REXT 4
-+
-+#define FF_PROFILE_AV1_MAIN 0
-+#define FF_PROFILE_AV1_HIGH 1
-+#define FF_PROFILE_AV1_PROFESSIONAL 2
-+
-+#define FF_PROFILE_MJPEG_HUFFMAN_BASELINE_DCT 0xc0
-+#define FF_PROFILE_MJPEG_HUFFMAN_EXTENDED_SEQUENTIAL_DCT 0xc1
-+#define FF_PROFILE_MJPEG_HUFFMAN_PROGRESSIVE_DCT 0xc2
-+#define FF_PROFILE_MJPEG_HUFFMAN_LOSSLESS 0xc3
-+#define FF_PROFILE_MJPEG_JPEG_LS 0xf7
-+
-+#define FF_PROFILE_SBC_MSBC 1
-+
-+ /**
-+ * level
-+ * - encoding: Set by user.
-+ * - decoding: Set by libavcodec.
-+ */
-+ int level;
-+#define FF_LEVEL_UNKNOWN -99
-+
-+ /**
-+ * Skip loop filtering for selected frames.
-+ * - encoding: unused
-+ * - decoding: Set by user.
-+ */
-+ enum AVDiscard skip_loop_filter;
-+
-+ /**
-+ * Skip IDCT/dequantization for selected frames.
-+ * - encoding: unused
-+ * - decoding: Set by user.
-+ */
-+ enum AVDiscard skip_idct;
-+
-+ /**
-+ * Skip decoding for selected frames.
-+ * - encoding: unused
-+ * - decoding: Set by user.
-+ */
-+ enum AVDiscard skip_frame;
-+
-+ /**
-+ * Header containing style information for text subtitles.
-+ * For SUBTITLE_ASS subtitle type, it should contain the whole ASS
-+ * [Script Info] and [V4+ Styles] section, plus the [Events] line and
-+ * the Format line following. It shouldn't include any Dialogue line.
-+ * - encoding: Set/allocated/freed by user (before avcodec_open2())
-+ * - decoding: Set/allocated/freed by libavcodec (by avcodec_open2())
-+ */
-+ uint8_t *subtitle_header;
-+ int subtitle_header_size;
-+
-+#if FF_API_VBV_DELAY
-+ /**
-+ * VBV delay coded in the last frame (in periods of a 27 MHz clock).
-+ * Used for compliant TS muxing.
-+ * - encoding: Set by libavcodec.
-+ * - decoding: unused.
-+ * @deprecated this value is now exported as a part of
-+ * AV_PKT_DATA_CPB_PROPERTIES packet side data
-+ */
-+ attribute_deprecated
-+ uint64_t vbv_delay;
-+#endif
-+
-+#if FF_API_SIDEDATA_ONLY_PKT
-+ /**
-+ * Encoding only and set by default. Allow encoders to output packets
-+ * that do not contain any encoded data, only side data.
-+ *
-+ * Some encoders need to output such packets, e.g. to update some stream
-+ * parameters at the end of encoding.
-+ *
-+ * @deprecated this field disables the default behaviour and
-+ * it is kept only for compatibility.
-+ */
-+ attribute_deprecated
-+ int side_data_only_packets;
-+#endif
-+
-+ /**
-+ * Audio only. The number of "priming" samples (padding) inserted by the
-+ * encoder at the beginning of the audio. I.e. this number of leading
-+ * decoded samples must be discarded by the caller to get the original audio
-+ * without leading padding.
-+ *
-+ * - decoding: unused
-+ * - encoding: Set by libavcodec. The timestamps on the output packets are
-+ * adjusted by the encoder so that they always refer to the
-+ * first sample of the data actually contained in the packet,
-+ * including any added padding. E.g. if the timebase is
-+ * 1/samplerate and the timestamp of the first input sample is
-+ * 0, the timestamp of the first output packet will be
-+ * -initial_padding.
-+ */
-+ int initial_padding;
-+
-+ /**
-+ * - decoding: For codecs that store a framerate value in the compressed
-+ * bitstream, the decoder may export it here. { 0, 1} when
-+ * unknown.
-+ * - encoding: May be used to signal the framerate of CFR content to an
-+ * encoder.
-+ */
-+ AVRational framerate;
-+
-+ /**
-+ * Nominal unaccelerated pixel format, see AV_PIX_FMT_xxx.
-+ * - encoding: unused.
-+ * - decoding: Set by libavcodec before calling get_format()
-+ */
-+ enum AVPixelFormat sw_pix_fmt;
-+
-+ /**
-+ * Timebase in which pkt_dts/pts and AVPacket.dts/pts are.
-+ * - encoding unused.
-+ * - decoding set by user.
-+ */
-+ AVRational pkt_timebase;
-+
-+ /**
-+ * AVCodecDescriptor
-+ * - encoding: unused.
-+ * - decoding: set by libavcodec.
-+ */
-+ const AVCodecDescriptor *codec_descriptor;
-+
-+#if !FF_API_LOWRES
-+ /**
-+ * low resolution decoding, 1-> 1/2 size, 2->1/4 size
-+ * - encoding: unused
-+ * - decoding: Set by user.
-+ */
-+ int lowres;
-+#endif
-+
-+ /**
-+ * Current statistics for PTS correction.
-+ * - decoding: maintained and used by libavcodec, not intended to be used by user apps
-+ * - encoding: unused
-+ */
-+ int64_t pts_correction_num_faulty_pts; /// Number of incorrect PTS values so far
-+ int64_t pts_correction_num_faulty_dts; /// Number of incorrect DTS values so far
-+ int64_t pts_correction_last_pts; /// PTS of the last frame
-+ int64_t pts_correction_last_dts; /// DTS of the last frame
-+
-+ /**
-+ * Character encoding of the input subtitles file.
-+ * - decoding: set by user
-+ * - encoding: unused
-+ */
-+ char *sub_charenc;
-+
-+ /**
-+ * Subtitles character encoding mode. Formats or codecs might be adjusting
-+ * this setting (if they are doing the conversion themselves for instance).
-+ * - decoding: set by libavcodec
-+ * - encoding: unused
-+ */
-+ int sub_charenc_mode;
-+#define FF_SUB_CHARENC_MODE_DO_NOTHING -1 ///< do nothing (demuxer outputs a stream supposed to be already in UTF-8, or the codec is bitmap for instance)
-+#define FF_SUB_CHARENC_MODE_AUTOMATIC 0 ///< libavcodec will select the mode itself
-+#define FF_SUB_CHARENC_MODE_PRE_DECODER 1 ///< the AVPacket data needs to be recoded to UTF-8 before being fed to the decoder, requires iconv
-+#define FF_SUB_CHARENC_MODE_IGNORE 2 ///< neither convert the subtitles, nor check them for valid UTF-8
-+
-+ /**
-+ * Skip processing alpha if supported by codec.
-+ * Note that if the format uses pre-multiplied alpha (common with VP6,
-+ * and recommended due to better video quality/compression)
-+ * the image will look as if alpha-blended onto a black background.
-+ * However for formats that do not use pre-multiplied alpha
-+ * there might be serious artefacts (though e.g. libswscale currently
-+ * assumes pre-multiplied alpha anyway).
-+ *
-+ * - decoding: set by user
-+ * - encoding: unused
-+ */
-+ int skip_alpha;
-+
-+ /**
-+ * Number of samples to skip after a discontinuity
-+ * - decoding: unused
-+ * - encoding: set by libavcodec
-+ */
-+ int seek_preroll;
-+
-+#if !FF_API_DEBUG_MV
-+ /**
-+ * debug motion vectors
-+ * - encoding: Set by user.
-+ * - decoding: Set by user.
-+ */
-+ int debug_mv;
-+#define FF_DEBUG_VIS_MV_P_FOR 0x00000001 //visualize forward predicted MVs of P frames
-+#define FF_DEBUG_VIS_MV_B_FOR 0x00000002 //visualize forward predicted MVs of B frames
-+#define FF_DEBUG_VIS_MV_B_BACK 0x00000004 //visualize backward predicted MVs of B frames
-+#endif
-+
-+ /**
-+ * custom intra quantization matrix
-+ * - encoding: Set by user, can be NULL.
-+ * - decoding: unused.
-+ */
-+ uint16_t *chroma_intra_matrix;
-+
-+ /**
-+ * dump format separator.
-+ * can be ", " or "\n " or anything else
-+ * - encoding: Set by user.
-+ * - decoding: Set by user.
-+ */
-+ uint8_t *dump_separator;
-+
-+ /**
-+ * ',' separated list of allowed decoders.
-+ * If NULL then all are allowed
-+ * - encoding: unused
-+ * - decoding: set by user
-+ */
-+ char *codec_whitelist;
-+
-+ /**
-+ * Properties of the stream that gets decoded
-+ * - encoding: unused
-+ * - decoding: set by libavcodec
-+ */
-+ unsigned properties;
-+#define FF_CODEC_PROPERTY_LOSSLESS 0x00000001
-+#define FF_CODEC_PROPERTY_CLOSED_CAPTIONS 0x00000002
-+
-+ /**
-+ * Additional data associated with the entire coded stream.
-+ *
-+ * - decoding: unused
-+ * - encoding: may be set by libavcodec after avcodec_open2().
-+ */
-+ AVPacketSideData *coded_side_data;
-+ int nb_coded_side_data;
-+
-+ /**
-+ * A reference to the AVHWFramesContext describing the input (for encoding)
-+ * or output (decoding) frames. The reference is set by the caller and
-+ * afterwards owned (and freed) by libavcodec - it should never be read by
-+ * the caller after being set.
-+ *
-+ * - decoding: This field should be set by the caller from the get_format()
-+ * callback. The previous reference (if any) will always be
-+ * unreffed by libavcodec before the get_format() call.
-+ *
-+ * If the default get_buffer2() is used with a hwaccel pixel
-+ * format, then this AVHWFramesContext will be used for
-+ * allocating the frame buffers.
-+ *
-+ * - encoding: For hardware encoders configured to use a hwaccel pixel
-+ * format, this field should be set by the caller to a reference
-+ * to the AVHWFramesContext describing input frames.
-+ * AVHWFramesContext.format must be equal to
-+ * AVCodecContext.pix_fmt.
-+ *
-+ * This field should be set before avcodec_open2() is called.
-+ */
-+ AVBufferRef *hw_frames_ctx;
-+
-+ /**
-+ * Control the form of AVSubtitle.rects[N]->ass
-+ * - decoding: set by user
-+ * - encoding: unused
-+ */
-+ int sub_text_format;
-+#define FF_SUB_TEXT_FMT_ASS 0
-+#if FF_API_ASS_TIMING
-+#define FF_SUB_TEXT_FMT_ASS_WITH_TIMINGS 1
-+#endif
-+
-+ /**
-+ * Audio only. The amount of padding (in samples) appended by the encoder to
-+ * the end of the audio. I.e. this number of decoded samples must be
-+ * discarded by the caller from the end of the stream to get the original
-+ * audio without any trailing padding.
-+ *
-+ * - decoding: unused
-+ * - encoding: unused
-+ */
-+ int trailing_padding;
-+
-+ /**
-+ * The number of pixels per image to maximally accept.
-+ *
-+ * - decoding: set by user
-+ * - encoding: set by user
-+ */
-+ int64_t max_pixels;
-+
-+ /**
-+ * A reference to the AVHWDeviceContext describing the device which will
-+ * be used by a hardware encoder/decoder. The reference is set by the
-+ * caller and afterwards owned (and freed) by libavcodec.
-+ *
-+ * This should be used if either the codec device does not require
-+ * hardware frames or any that are used are to be allocated internally by
-+ * libavcodec. If the user wishes to supply any of the frames used as
-+ * encoder input or decoder output then hw_frames_ctx should be used
-+ * instead. When hw_frames_ctx is set in get_format() for a decoder, this
-+ * field will be ignored while decoding the associated stream segment, but
-+ * may again be used on a following one after another get_format() call.
-+ *
-+ * For both encoders and decoders this field should be set before
-+ * avcodec_open2() is called and must not be written to thereafter.
-+ *
-+ * Note that some decoders may require this field to be set initially in
-+ * order to support hw_frames_ctx at all - in that case, all frames
-+ * contexts used must be created on the same device.
-+ */
-+ AVBufferRef *hw_device_ctx;
-+
-+ /**
-+ * Bit set of AV_HWACCEL_FLAG_* flags, which affect hardware accelerated
-+ * decoding (if active).
-+ * - encoding: unused
-+ * - decoding: Set by user (either before avcodec_open2(), or in the
-+ * AVCodecContext.get_format callback)
-+ */
-+ int hwaccel_flags;
-+
-+ /**
-+ * Video decoding only. Certain video codecs support cropping, meaning that
-+ * only a sub-rectangle of the decoded frame is intended for display. This
-+ * option controls how cropping is handled by libavcodec.
-+ *
-+ * When set to 1 (the default), libavcodec will apply cropping internally.
-+ * I.e. it will modify the output frame width/height fields and offset the
-+ * data pointers (only by as much as possible while preserving alignment, or
-+ * by the full amount if the AV_CODEC_FLAG_UNALIGNED flag is set) so that
-+ * the frames output by the decoder refer only to the cropped area. The
-+ * crop_* fields of the output frames will be zero.
-+ *
-+ * When set to 0, the width/height fields of the output frames will be set
-+ * to the coded dimensions and the crop_* fields will describe the cropping
-+ * rectangle. Applying the cropping is left to the caller.
-+ *
-+ * @warning When hardware acceleration with opaque output frames is used,
-+ * libavcodec is unable to apply cropping from the top/left border.
-+ *
-+ * @note when this option is set to zero, the width/height fields of the
-+ * AVCodecContext and output AVFrames have different meanings. The codec
-+ * context fields store display dimensions (with the coded dimensions in
-+ * coded_width/height), while the frame fields store the coded dimensions
-+ * (with the display dimensions being determined by the crop_* fields).
-+ */
-+ int apply_cropping;
-+
-+ /*
-+ * Video decoding only. Sets the number of extra hardware frames which
-+ * the decoder will allocate for use by the caller. This must be set
-+ * before avcodec_open2() is called.
-+ *
-+ * Some hardware decoders require all frames that they will use for
-+ * output to be defined in advance before decoding starts. For such
-+ * decoders, the hardware frame pool must therefore be of a fixed size.
-+ * The extra frames set here are on top of any number that the decoder
-+ * needs internally in order to operate normally (for example, frames
-+ * used as reference pictures).
-+ */
-+ int extra_hw_frames;
-+} AVCodecContext;
-+
-+#if FF_API_CODEC_GET_SET
-+/**
-+ * Accessors for some AVCodecContext fields. These used to be provided for ABI
-+ * compatibility, and do not need to be used anymore.
-+ */
-+attribute_deprecated
-+AVRational av_codec_get_pkt_timebase (const AVCodecContext *avctx);
-+attribute_deprecated
-+void av_codec_set_pkt_timebase (AVCodecContext *avctx, AVRational val);
-+
-+attribute_deprecated
-+const AVCodecDescriptor *av_codec_get_codec_descriptor(const AVCodecContext *avctx);
-+attribute_deprecated
-+void av_codec_set_codec_descriptor(AVCodecContext *avctx, const AVCodecDescriptor *desc);
-+
-+attribute_deprecated
-+unsigned av_codec_get_codec_properties(const AVCodecContext *avctx);
-+
-+#if FF_API_LOWRES
-+attribute_deprecated
-+int av_codec_get_lowres(const AVCodecContext *avctx);
-+attribute_deprecated
-+void av_codec_set_lowres(AVCodecContext *avctx, int val);
-+#endif
-+
-+attribute_deprecated
-+int av_codec_get_seek_preroll(const AVCodecContext *avctx);
-+attribute_deprecated
-+void av_codec_set_seek_preroll(AVCodecContext *avctx, int val);
-+
-+attribute_deprecated
-+uint16_t *av_codec_get_chroma_intra_matrix(const AVCodecContext *avctx);
-+attribute_deprecated
-+void av_codec_set_chroma_intra_matrix(AVCodecContext *avctx, uint16_t *val);
-+#endif
-+
-+/**
-+ * AVProfile.
-+ */
-+typedef struct AVProfile {
-+ int profile;
-+ const char *name; ///< short name for the profile
-+} AVProfile;
-+
-+enum {
-+ /**
-+ * The codec supports this format via the hw_device_ctx interface.
-+ *
-+ * When selecting this format, AVCodecContext.hw_device_ctx should
-+ * have been set to a device of the specified type before calling
-+ * avcodec_open2().
-+ */
-+ AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX = 0x01,
-+ /**
-+ * The codec supports this format via the hw_frames_ctx interface.
-+ *
-+ * When selecting this format for a decoder,
-+ * AVCodecContext.hw_frames_ctx should be set to a suitable frames
-+ * context inside the get_format() callback. The frames context
-+ * must have been created on a device of the specified type.
-+ */
-+ AV_CODEC_HW_CONFIG_METHOD_HW_FRAMES_CTX = 0x02,
-+ /**
-+ * The codec supports this format by some internal method.
-+ *
-+ * This format can be selected without any additional configuration -
-+ * no device or frames context is required.
-+ */
-+ AV_CODEC_HW_CONFIG_METHOD_INTERNAL = 0x04,
-+ /**
-+ * The codec supports this format by some ad-hoc method.
-+ *
-+ * Additional settings and/or function calls are required. See the
-+ * codec-specific documentation for details. (Methods requiring
-+ * this sort of configuration are deprecated and others should be
-+ * used in preference.)
-+ */
-+ AV_CODEC_HW_CONFIG_METHOD_AD_HOC = 0x08,
-+};
-+
-+typedef struct AVCodecHWConfig {
-+ /**
-+ * A hardware pixel format which the codec can use.
-+ */
-+ enum AVPixelFormat pix_fmt;
-+ /**
-+ * Bit set of AV_CODEC_HW_CONFIG_METHOD_* flags, describing the possible
-+ * setup methods which can be used with this configuration.
-+ */
-+ int methods;
-+ /**
-+ * The device type associated with the configuration.
-+ *
-+ * Must be set for AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX and
-+ * AV_CODEC_HW_CONFIG_METHOD_HW_FRAMES_CTX, otherwise unused.
-+ */
-+ enum AVHWDeviceType device_type;
-+} AVCodecHWConfig;
-+
-+typedef struct AVCodecDefault AVCodecDefault;
-+
-+struct AVSubtitle;
-+
-+/**
-+ * AVCodec.
-+ */
-+typedef struct AVCodec {
-+ /**
-+ * Name of the codec implementation.
-+ * The name is globally unique among encoders and among decoders (but an
-+ * encoder and a decoder can share the same name).
-+ * This is the primary way to find a codec from the user perspective.
-+ */
-+ const char *name;
-+ /**
-+ * Descriptive name for the codec, meant to be more human readable than name.
-+ * You should use the NULL_IF_CONFIG_SMALL() macro to define it.
-+ */
-+ const char *long_name;
-+ enum AVMediaType type;
-+ enum AVCodecID id;
-+ /**
-+ * Codec capabilities.
-+ * see AV_CODEC_CAP_*
-+ */
-+ int capabilities;
-+ const AVRational *supported_framerates; ///< array of supported framerates, or NULL if any, array is terminated by {0,0}
-+ const enum AVPixelFormat *pix_fmts; ///< array of supported pixel formats, or NULL if unknown, array is terminated by -1
-+ const int *supported_samplerates; ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0
-+ const enum AVSampleFormat *sample_fmts; ///< array of supported sample formats, or NULL if unknown, array is terminated by -1
-+ const uint64_t *channel_layouts; ///< array of support channel layouts, or NULL if unknown. array is terminated by 0
-+ uint8_t max_lowres; ///< maximum value for lowres supported by the decoder
-+ const AVClass *priv_class; ///< AVClass for the private context
-+ const AVProfile *profiles; ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN}
-+
-+ /**
-+ * Group name of the codec implementation.
-+ * This is a short symbolic name of the wrapper backing this codec. A
-+ * wrapper uses some kind of external implementation for the codec, such
-+ * as an external library, or a codec implementation provided by the OS or
-+ * the hardware.
-+ * If this field is NULL, this is a builtin, libavcodec native codec.
-+ * If non-NULL, this will be the suffix in AVCodec.name in most cases
-+ * (usually AVCodec.name will be of the form "<codec_name>_<wrapper_name>").
-+ */
-+ const char *wrapper_name;
-+
-+ /*****************************************************************
-+ * No fields below this line are part of the public API. They
-+ * may not be used outside of libavcodec and can be changed and
-+ * removed at will.
-+ * New public fields should be added right above.
-+ *****************************************************************
-+ */
-+ int priv_data_size;
-+ struct AVCodec *next;
-+ /**
-+ * @name Frame-level threading support functions
-+ * @{
-+ */
-+ /**
-+ * If defined, called on thread contexts when they are created.
-+ * If the codec allocates writable tables in init(), re-allocate them here.
-+ * priv_data will be set to a copy of the original.
-+ */
-+ int (*init_thread_copy)(AVCodecContext *);
-+ /**
-+ * Copy necessary context variables from a previous thread context to the current one.
-+ * If not defined, the next thread will start automatically; otherwise, the codec
-+ * must call ff_thread_finish_setup().
-+ *
-+ * dst and src will (rarely) point to the same context, in which case memcpy should be skipped.
-+ */
-+ int (*update_thread_context)(AVCodecContext *dst, const AVCodecContext *src);
-+ /** @} */
-+
-+ /**
-+ * Private codec-specific defaults.
-+ */
-+ const AVCodecDefault *defaults;
-+
-+ /**
-+ * Initialize codec static data, called from avcodec_register().
-+ *
-+ * This is not intended for time consuming operations as it is
-+ * run for every codec regardless of that codec being used.
-+ */
-+ void (*init_static_data)(struct AVCodec *codec);
-+
-+ int (*init)(AVCodecContext *);
-+ int (*encode_sub)(AVCodecContext *, uint8_t *buf, int buf_size,
-+ const struct AVSubtitle *sub);
-+ /**
-+ * Encode data to an AVPacket.
-+ *
-+ * @param avctx codec context
-+ * @param avpkt output AVPacket (may contain a user-provided buffer)
-+ * @param[in] frame AVFrame containing the raw data to be encoded
-+ * @param[out] got_packet_ptr encoder sets to 0 or 1 to indicate that a
-+ * non-empty packet was returned in avpkt.
-+ * @return 0 on success, negative error code on failure
-+ */
-+ int (*encode2)(AVCodecContext *avctx, AVPacket *avpkt, const AVFrame *frame,
-+ int *got_packet_ptr);
-+ int (*decode)(AVCodecContext *, void *outdata, int *outdata_size, AVPacket *avpkt);
-+ int (*close)(AVCodecContext *);
-+ /**
-+ * Encode API with decoupled packet/frame dataflow. The API is the
-+ * same as the avcodec_ prefixed APIs (avcodec_send_frame() etc.), except
-+ * that:
-+ * - never called if the codec is closed or the wrong type,
-+ * - if AV_CODEC_CAP_DELAY is not set, drain frames are never sent,
-+ * - only one drain frame is ever passed down,
-+ */
-+ int (*send_frame)(AVCodecContext *avctx, const AVFrame *frame);
-+ int (*receive_packet)(AVCodecContext *avctx, AVPacket *avpkt);
-+
-+ /**
-+ * Decode API with decoupled packet/frame dataflow. This function is called
-+ * to get one output frame. It should call ff_decode_get_packet() to obtain
-+ * input data.
-+ */
-+ int (*receive_frame)(AVCodecContext *avctx, AVFrame *frame);
-+ /**
-+ * Flush buffers.
-+ * Will be called when seeking
-+ */
-+ void (*flush)(AVCodecContext *);
-+ /**
-+ * Internal codec capabilities.
-+ * See FF_CODEC_CAP_* in internal.h
-+ */
-+ int caps_internal;
-+
-+ /**
-+ * Decoding only, a comma-separated list of bitstream filters to apply to
-+ * packets before decoding.
-+ */
-+ const char *bsfs;
-+
-+ /**
-+ * Array of pointers to hardware configurations supported by the codec,
-+ * or NULL if no hardware supported. The array is terminated by a NULL
-+ * pointer.
-+ *
-+ * The user can only access this field via avcodec_get_hw_config().
-+ */
-+ const struct AVCodecHWConfigInternal **hw_configs;
-+} AVCodec;
-+
-+#if FF_API_CODEC_GET_SET
-+attribute_deprecated
-+int av_codec_get_max_lowres(const AVCodec *codec);
-+#endif
-+
-+struct MpegEncContext;
-+
-+/**
-+ * Retrieve supported hardware configurations for a codec.
-+ *
-+ * Values of index from zero to some maximum return the indexed configuration
-+ * descriptor; all other values return NULL. If the codec does not support
-+ * any hardware configurations then it will always return NULL.
-+ */
-+const AVCodecHWConfig *avcodec_get_hw_config(const AVCodec *codec, int index);
-+
-+/**
-+ * @defgroup lavc_hwaccel AVHWAccel
-+ *
-+ * @note Nothing in this structure should be accessed by the user. At some
-+ * point in future it will not be externally visible at all.
-+ *
-+ * @{
-+ */
-+typedef struct AVHWAccel {
-+ /**
-+ * Name of the hardware accelerated codec.
-+ * The name is globally unique among encoders and among decoders (but an
-+ * encoder and a decoder can share the same name).
-+ */
-+ const char *name;
-+
-+ /**
-+ * Type of codec implemented by the hardware accelerator.
-+ *
-+ * See AVMEDIA_TYPE_xxx
-+ */
-+ enum AVMediaType type;
-+
-+ /**
-+ * Codec implemented by the hardware accelerator.
-+ *
-+ * See AV_CODEC_ID_xxx
-+ */
-+ enum AVCodecID id;
-+
-+ /**
-+ * Supported pixel format.
-+ *
-+ * Only hardware accelerated formats are supported here.
-+ */
-+ enum AVPixelFormat pix_fmt;
-+
-+ /**
-+ * Hardware accelerated codec capabilities.
-+ * see AV_HWACCEL_CODEC_CAP_*
-+ */
-+ int capabilities;
-+
-+ /*****************************************************************
-+ * No fields below this line are part of the public API. They
-+ * may not be used outside of libavcodec and can be changed and
-+ * removed at will.
-+ * New public fields should be added right above.
-+ *****************************************************************
-+ */
-+
-+ /**
-+ * Allocate a custom buffer
-+ */
-+ int (*alloc_frame)(AVCodecContext *avctx, AVFrame *frame);
-+
-+ /**
-+ * Called at the beginning of each frame or field picture.
-+ *
-+ * Meaningful frame information (codec specific) is guaranteed to
-+ * be parsed at this point. This function is mandatory.
-+ *
-+ * Note that buf can be NULL along with buf_size set to 0.
-+ * Otherwise, this means the whole frame is available at this point.
-+ *
-+ * @param avctx the codec context
-+ * @param buf the frame data buffer base
-+ * @param buf_size the size of the frame in bytes
-+ * @return zero if successful, a negative value otherwise
-+ */
-+ int (*start_frame)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size);
-+
-+ /**
-+ * Callback for parameter data (SPS/PPS/VPS etc).
-+ *
-+ * Useful for hardware decoders which keep persistent state about the
-+ * video parameters, and need to receive any changes to update that state.
-+ *
-+ * @param avctx the codec context
-+ * @param type the nal unit type
-+ * @param buf the nal unit data buffer
-+ * @param buf_size the size of the nal unit in bytes
-+ * @return zero if successful, a negative value otherwise
-+ */
-+ int (*decode_params)(AVCodecContext *avctx, int type, const uint8_t *buf, uint32_t buf_size);
-+
-+ /**
-+ * Callback for each slice.
-+ *
-+ * Meaningful slice information (codec specific) is guaranteed to
-+ * be parsed at this point. This function is mandatory.
-+ * The only exception is XvMC, that works on MB level.
-+ *
-+ * @param avctx the codec context
-+ * @param buf the slice data buffer base
-+ * @param buf_size the size of the slice in bytes
-+ * @return zero if successful, a negative value otherwise
-+ */
-+ int (*decode_slice)(AVCodecContext *avctx, const uint8_t *buf, uint32_t buf_size);
-+
-+ /**
-+ * Called at the end of each frame or field picture.
-+ *
-+ * The whole picture is parsed at this point and can now be sent
-+ * to the hardware accelerator. This function is mandatory.
-+ *
-+ * @param avctx the codec context
-+ * @return zero if successful, a negative value otherwise
-+ */
-+ int (*end_frame)(AVCodecContext *avctx);
-+
-+ /**
-+ * Size of per-frame hardware accelerator private data.
-+ *
-+ * Private data is allocated with av_mallocz() before
-+ * AVCodecContext.get_buffer() and deallocated after
-+ * AVCodecContext.release_buffer().
-+ */
-+ int frame_priv_data_size;
-+
-+ /**
-+ * Called for every Macroblock in a slice.
-+ *
-+ * XvMC uses it to replace the ff_mpv_reconstruct_mb().
-+ * Instead of decoding to raw picture, MB parameters are
-+ * stored in an array provided by the video driver.
-+ *
-+ * @param s the mpeg context
-+ */
-+ void (*decode_mb)(struct MpegEncContext *s);
-+
-+ /**
-+ * Initialize the hwaccel private data.
-+ *
-+ * This will be called from ff_get_format(), after hwaccel and
-+ * hwaccel_context are set and the hwaccel private data in AVCodecInternal
-+ * is allocated.
-+ */
-+ int (*init)(AVCodecContext *avctx);
-+
-+ /**
-+ * Uninitialize the hwaccel private data.
-+ *
-+ * This will be called from get_format() or avcodec_close(), after hwaccel
-+ * and hwaccel_context are already uninitialized.
-+ */
-+ int (*uninit)(AVCodecContext *avctx);
-+
-+ /**
-+ * Size of the private data to allocate in
-+ * AVCodecInternal.hwaccel_priv_data.
-+ */
-+ int priv_data_size;
-+
-+ /**
-+ * Internal hwaccel capabilities.
-+ */
-+ int caps_internal;
-+
-+ /**
-+ * Fill the given hw_frames context with current codec parameters. Called
-+ * from get_format. Refer to avcodec_get_hw_frames_parameters() for
-+ * details.
-+ *
-+ * This CAN be called before AVHWAccel.init is called, and you must assume
-+ * that avctx->hwaccel_priv_data is invalid.
-+ */
-+ int (*frame_params)(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx);
-+} AVHWAccel;
-+
-+/**
-+ * HWAccel is experimental and is thus avoided in favor of non experimental
-+ * codecs
-+ */
-+#define AV_HWACCEL_CODEC_CAP_EXPERIMENTAL 0x0200
-+
-+/**
-+ * Hardware acceleration should be used for decoding even if the codec level
-+ * used is unknown or higher than the maximum supported level reported by the
-+ * hardware driver.
-+ *
-+ * It's generally a good idea to pass this flag unless you have a specific
-+ * reason not to, as hardware tends to under-report supported levels.
-+ */
-+#define AV_HWACCEL_FLAG_IGNORE_LEVEL (1 << 0)
-+
-+/**
-+ * Hardware acceleration can output YUV pixel formats with a different chroma
-+ * sampling than 4:2:0 and/or other than 8 bits per component.
-+ */
-+#define AV_HWACCEL_FLAG_ALLOW_HIGH_DEPTH (1 << 1)
-+
-+/**
-+ * Hardware acceleration should still be attempted for decoding when the
-+ * codec profile does not match the reported capabilities of the hardware.
-+ *
-+ * For example, this can be used to try to decode baseline profile H.264
-+ * streams in hardware - it will often succeed, because many streams marked
-+ * as baseline profile actually conform to constrained baseline profile.
-+ *
-+ * @warning If the stream is actually not supported then the behaviour is
-+ * undefined, and may include returning entirely incorrect output
-+ * while indicating success.
-+ */
-+#define AV_HWACCEL_FLAG_ALLOW_PROFILE_MISMATCH (1 << 2)
-+
-+/**
-+ * @}
-+ */
-+
-+#if FF_API_AVPICTURE
-+/**
-+ * @defgroup lavc_picture AVPicture
-+ *
-+ * Functions for working with AVPicture
-+ * @{
-+ */
-+
-+/**
-+ * Picture data structure.
-+ *
-+ * Up to four components can be stored into it, the last component is
-+ * alpha.
-+ * @deprecated use AVFrame or imgutils functions instead
-+ */
-+typedef struct AVPicture {
-+ attribute_deprecated
-+ uint8_t *data[AV_NUM_DATA_POINTERS]; ///< pointers to the image data planes
-+ attribute_deprecated
-+ int linesize[AV_NUM_DATA_POINTERS]; ///< number of bytes per line
-+} AVPicture;
-+
-+/**
-+ * @}
-+ */
-+#endif
-+
-+enum AVSubtitleType {
-+ SUBTITLE_NONE,
-+
-+ SUBTITLE_BITMAP, ///< A bitmap, pict will be set
-+
-+ /**
-+ * Plain text, the text field must be set by the decoder and is
-+ * authoritative. ass and pict fields may contain approximations.
-+ */
-+ SUBTITLE_TEXT,
-+
-+ /**
-+ * Formatted text, the ass field must be set by the decoder and is
-+ * authoritative. pict and text fields may contain approximations.
-+ */
-+ SUBTITLE_ASS,
-+};
-+
-+#define AV_SUBTITLE_FLAG_FORCED 0x00000001
-+
-+typedef struct AVSubtitleRect {
-+ int x; ///< top left corner of pict, undefined when pict is not set
-+ int y; ///< top left corner of pict, undefined when pict is not set
-+ int w; ///< width of pict, undefined when pict is not set
-+ int h; ///< height of pict, undefined when pict is not set
-+ int nb_colors; ///< number of colors in pict, undefined when pict is not set
-+
-+#if FF_API_AVPICTURE
-+ /**
-+ * @deprecated unused
-+ */
-+ attribute_deprecated
-+ AVPicture pict;
-+#endif
-+ /**
-+ * data+linesize for the bitmap of this subtitle.
-+ * Can be set for text/ass as well once they are rendered.
-+ */
-+ uint8_t *data[4];
-+ int linesize[4];
-+
-+ enum AVSubtitleType type;
-+
-+ char *text; ///< 0 terminated plain UTF-8 text
-+
-+ /**
-+ * 0 terminated ASS/SSA compatible event line.
-+ * The presentation of this is unaffected by the other values in this
-+ * struct.
-+ */
-+ char *ass;
-+
-+ int flags;
-+} AVSubtitleRect;
-+
-+typedef struct AVSubtitle {
-+ uint16_t format; /* 0 = graphics */
-+ uint32_t start_display_time; /* relative to packet pts, in ms */
-+ uint32_t end_display_time; /* relative to packet pts, in ms */
-+ unsigned num_rects;
-+ AVSubtitleRect **rects;
-+ int64_t pts; ///< Same as packet pts, in AV_TIME_BASE
-+} AVSubtitle;
-+
-+/**
-+ * This struct describes the properties of an encoded stream.
-+ *
-+ * sizeof(AVCodecParameters) is not a part of the public ABI, this struct must
-+ * be allocated with avcodec_parameters_alloc() and freed with
-+ * avcodec_parameters_free().
-+ */
-+typedef struct AVCodecParameters {
-+ /**
-+ * General type of the encoded data.
-+ */
-+ enum AVMediaType codec_type;
-+ /**
-+ * Specific type of the encoded data (the codec used).
-+ */
-+ enum AVCodecID codec_id;
-+ /**
-+ * Additional information about the codec (corresponds to the AVI FOURCC).
-+ */
-+ uint32_t codec_tag;
-+
-+ /**
-+ * Extra binary data needed for initializing the decoder, codec-dependent.
-+ *
-+ * Must be allocated with av_malloc() and will be freed by
-+ * avcodec_parameters_free(). The allocated size of extradata must be at
-+ * least extradata_size + AV_INPUT_BUFFER_PADDING_SIZE, with the padding
-+ * bytes zeroed.
-+ */
-+ uint8_t *extradata;
-+ /**
-+ * Size of the extradata content in bytes.
-+ */
-+ int extradata_size;
-+
-+ /**
-+ * - video: the pixel format, the value corresponds to enum AVPixelFormat.
-+ * - audio: the sample format, the value corresponds to enum AVSampleFormat.
-+ */
-+ int format;
-+
-+ /**
-+ * The average bitrate of the encoded data (in bits per second).
-+ */
-+ int64_t bit_rate;
-+
-+ /**
-+ * The number of bits per sample in the codedwords.
-+ *
-+ * This is basically the bitrate per sample. It is mandatory for a bunch of
-+ * formats to actually decode them. It's the number of bits for one sample in
-+ * the actual coded bitstream.
-+ *
-+ * This could be for example 4 for ADPCM
-+ * For PCM formats this matches bits_per_raw_sample
-+ * Can be 0
-+ */
-+ int bits_per_coded_sample;
-+
-+ /**
-+ * This is the number of valid bits in each output sample. If the
-+ * sample format has more bits, the least significant bits are additional
-+ * padding bits, which are always 0. Use right shifts to reduce the sample
-+ * to its actual size. For example, audio formats with 24 bit samples will
-+ * have bits_per_raw_sample set to 24, and format set to AV_SAMPLE_FMT_S32.
-+ * To get the original sample use "(int32_t)sample >> 8"."
-+ *
-+ * For ADPCM this might be 12 or 16 or similar
-+ * Can be 0
-+ */
-+ int bits_per_raw_sample;
-+
-+ /**
-+ * Codec-specific bitstream restrictions that the stream conforms to.
-+ */
-+ int profile;
-+ int level;
-+
-+ /**
-+ * Video only. The dimensions of the video frame in pixels.
-+ */
-+ int width;
-+ int height;
-+
-+ /**
-+ * Video only. The aspect ratio (width / height) which a single pixel
-+ * should have when displayed.
-+ *
-+ * When the aspect ratio is unknown / undefined, the numerator should be
-+ * set to 0 (the denominator may have any value).
-+ */
-+ AVRational sample_aspect_ratio;
-+
-+ /**
-+ * Video only. The order of the fields in interlaced video.
-+ */
-+ enum AVFieldOrder field_order;
-+
-+ /**
-+ * Video only. Additional colorspace characteristics.
-+ */
-+ enum AVColorRange color_range;
-+ enum AVColorPrimaries color_primaries;
-+ enum AVColorTransferCharacteristic color_trc;
-+ enum AVColorSpace color_space;
-+ enum AVChromaLocation chroma_location;
-+
-+ /**
-+ * Video only. Number of delayed frames.
-+ */
-+ int video_delay;
-+
-+ /**
-+ * Audio only. The channel layout bitmask. May be 0 if the channel layout is
-+ * unknown or unspecified, otherwise the number of bits set must be equal to
-+ * the channels field.
-+ */
-+ uint64_t channel_layout;
-+ /**
-+ * Audio only. The number of audio channels.
-+ */
-+ int channels;
-+ /**
-+ * Audio only. The number of audio samples per second.
-+ */
-+ int sample_rate;
-+ /**
-+ * Audio only. The number of bytes per coded audio frame, required by some
-+ * formats.
-+ *
-+ * Corresponds to nBlockAlign in WAVEFORMATEX.
-+ */
-+ int block_align;
-+ /**
-+ * Audio only. Audio frame size, if known. Required by some formats to be static.
-+ */
-+ int frame_size;
-+
-+ /**
-+ * Audio only. The amount of padding (in samples) inserted by the encoder at
-+ * the beginning of the audio. I.e. this number of leading decoded samples
-+ * must be discarded by the caller to get the original audio without leading
-+ * padding.
-+ */
-+ int initial_padding;
-+ /**
-+ * Audio only. The amount of padding (in samples) appended by the encoder to
-+ * the end of the audio. I.e. this number of decoded samples must be
-+ * discarded by the caller from the end of the stream to get the original
-+ * audio without any trailing padding.
-+ */
-+ int trailing_padding;
-+ /**
-+ * Audio only. Number of samples to skip after a discontinuity.
-+ */
-+ int seek_preroll;
-+} AVCodecParameters;
-+
-+/**
-+ * Iterate over all registered codecs.
-+ *
-+ * @param opaque a pointer where libavcodec will store the iteration state. Must
-+ * point to NULL to start the iteration.
-+ *
-+ * @return the next registered codec or NULL when the iteration is
-+ * finished
-+ */
-+const AVCodec *av_codec_iterate(void **opaque);
-+
-+#if FF_API_NEXT
-+/**
-+ * If c is NULL, returns the first registered codec,
-+ * if c is non-NULL, returns the next registered codec after c,
-+ * or NULL if c is the last one.
-+ */
-+attribute_deprecated
-+AVCodec *av_codec_next(const AVCodec *c);
-+#endif
-+
-+/**
-+ * Return the LIBAVCODEC_VERSION_INT constant.
-+ */
-+unsigned avcodec_version(void);
-+
-+/**
-+ * Return the libavcodec build-time configuration.
-+ */
-+const char *avcodec_configuration(void);
-+
-+/**
-+ * Return the libavcodec license.
-+ */
-+const char *avcodec_license(void);
-+
-+#if FF_API_NEXT
-+/**
-+ * Register the codec codec and initialize libavcodec.
-+ *
-+ * @warning either this function or avcodec_register_all() must be called
-+ * before any other libavcodec functions.
-+ *
-+ * @see avcodec_register_all()
-+ */
-+attribute_deprecated
-+void avcodec_register(AVCodec *codec);
-+
-+/**
-+ * Register all the codecs, parsers and bitstream filters which were enabled at
-+ * configuration time. If you do not call this function you can select exactly
-+ * which formats you want to support, by using the individual registration
-+ * functions.
-+ *
-+ * @see avcodec_register
-+ * @see av_register_codec_parser
-+ * @see av_register_bitstream_filter
-+ */
-+attribute_deprecated
-+void avcodec_register_all(void);
-+#endif
-+
-+/**
-+ * Allocate an AVCodecContext and set its fields to default values. The
-+ * resulting struct should be freed with avcodec_free_context().
-+ *
-+ * @param codec if non-NULL, allocate private data and initialize defaults
-+ * for the given codec. It is illegal to then call avcodec_open2()
-+ * with a different codec.
-+ * If NULL, then the codec-specific defaults won't be initialized,
-+ * which may result in suboptimal default settings (this is
-+ * important mainly for encoders, e.g. libx264).
-+ *
-+ * @return An AVCodecContext filled with default values or NULL on failure.
-+ */
-+AVCodecContext *avcodec_alloc_context3(const AVCodec *codec);
-+
-+/**
-+ * Free the codec context and everything associated with it and write NULL to
-+ * the provided pointer.
-+ */
-+void avcodec_free_context(AVCodecContext **avctx);
-+
-+#if FF_API_GET_CONTEXT_DEFAULTS
-+/**
-+ * @deprecated This function should not be used, as closing and opening a codec
-+ * context multiple time is not supported. A new codec context should be
-+ * allocated for each new use.
-+ */
-+int avcodec_get_context_defaults3(AVCodecContext *s, const AVCodec *codec);
-+#endif
-+
-+/**
-+ * Get the AVClass for AVCodecContext. It can be used in combination with
-+ * AV_OPT_SEARCH_FAKE_OBJ for examining options.
-+ *
-+ * @see av_opt_find().
-+ */
-+const AVClass *avcodec_get_class(void);
-+
-+#if FF_API_COPY_CONTEXT
-+/**
-+ * Get the AVClass for AVFrame. It can be used in combination with
-+ * AV_OPT_SEARCH_FAKE_OBJ for examining options.
-+ *
-+ * @see av_opt_find().
-+ */
-+const AVClass *avcodec_get_frame_class(void);
-+
-+/**
-+ * Get the AVClass for AVSubtitleRect. It can be used in combination with
-+ * AV_OPT_SEARCH_FAKE_OBJ for examining options.
-+ *
-+ * @see av_opt_find().
-+ */
-+const AVClass *avcodec_get_subtitle_rect_class(void);
-+
-+/**
-+ * Copy the settings of the source AVCodecContext into the destination
-+ * AVCodecContext. The resulting destination codec context will be
-+ * unopened, i.e. you are required to call avcodec_open2() before you
-+ * can use this AVCodecContext to decode/encode video/audio data.
-+ *
-+ * @param dest target codec context, should be initialized with
-+ * avcodec_alloc_context3(NULL), but otherwise uninitialized
-+ * @param src source codec context
-+ * @return AVERROR() on error (e.g. memory allocation error), 0 on success
-+ *
-+ * @deprecated The semantics of this function are ill-defined and it should not
-+ * be used. If you need to transfer the stream parameters from one codec context
-+ * to another, use an intermediate AVCodecParameters instance and the
-+ * avcodec_parameters_from_context() / avcodec_parameters_to_context()
-+ * functions.
-+ */
-+attribute_deprecated
-+int avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src);
-+#endif
-+
-+/**
-+ * Allocate a new AVCodecParameters and set its fields to default values
-+ * (unknown/invalid/0). The returned struct must be freed with
-+ * avcodec_parameters_free().
-+ */
-+AVCodecParameters *avcodec_parameters_alloc(void);
-+
-+/**
-+ * Free an AVCodecParameters instance and everything associated with it and
-+ * write NULL to the supplied pointer.
-+ */
-+void avcodec_parameters_free(AVCodecParameters **par);
-+
-+/**
-+ * Copy the contents of src to dst. Any allocated fields in dst are freed and
-+ * replaced with newly allocated duplicates of the corresponding fields in src.
-+ *
-+ * @return >= 0 on success, a negative AVERROR code on failure.
-+ */
-+int avcodec_parameters_copy(AVCodecParameters *dst, const AVCodecParameters *src);
-+
-+/**
-+ * Fill the parameters struct based on the values from the supplied codec
-+ * context. Any allocated fields in par are freed and replaced with duplicates
-+ * of the corresponding fields in codec.
-+ *
-+ * @return >= 0 on success, a negative AVERROR code on failure
-+ */
-+int avcodec_parameters_from_context(AVCodecParameters *par,
-+ const AVCodecContext *codec);
-+
-+/**
-+ * Fill the codec context based on the values from the supplied codec
-+ * parameters. Any allocated fields in codec that have a corresponding field in
-+ * par are freed and replaced with duplicates of the corresponding field in par.
-+ * Fields in codec that do not have a counterpart in par are not touched.
-+ *
-+ * @return >= 0 on success, a negative AVERROR code on failure.
-+ */
-+int avcodec_parameters_to_context(AVCodecContext *codec,
-+ const AVCodecParameters *par);
-+
-+/**
-+ * Initialize the AVCodecContext to use the given AVCodec. Prior to using this
-+ * function the context has to be allocated with avcodec_alloc_context3().
-+ *
-+ * The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(),
-+ * avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for
-+ * retrieving a codec.
-+ *
-+ * @warning This function is not thread safe!
-+ *
-+ * @note Always call this function before using decoding routines (such as
-+ * @ref avcodec_receive_frame()).
-+ *
-+ * @code
-+ * avcodec_register_all();
-+ * av_dict_set(&opts, "b", "2.5M", 0);
-+ * codec = avcodec_find_decoder(AV_CODEC_ID_H264);
-+ * if (!codec)
-+ * exit(1);
-+ *
-+ * context = avcodec_alloc_context3(codec);
-+ *
-+ * if (avcodec_open2(context, codec, opts) < 0)
-+ * exit(1);
-+ * @endcode
-+ *
-+ * @param avctx The context to initialize.
-+ * @param codec The codec to open this context for. If a non-NULL codec has been
-+ * previously passed to avcodec_alloc_context3() or
-+ * for this context, then this parameter MUST be either NULL or
-+ * equal to the previously passed codec.
-+ * @param options A dictionary filled with AVCodecContext and codec-private options.
-+ * On return this object will be filled with options that were not found.
-+ *
-+ * @return zero on success, a negative value on error
-+ * @see avcodec_alloc_context3(), avcodec_find_decoder(), avcodec_find_encoder(),
-+ * av_dict_set(), av_opt_find().
-+ */
-+int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options);
-+
-+/**
-+ * Close a given AVCodecContext and free all the data associated with it
-+ * (but not the AVCodecContext itself).
-+ *
-+ * Calling this function on an AVCodecContext that hasn't been opened will free
-+ * the codec-specific data allocated in avcodec_alloc_context3() with a non-NULL
-+ * codec. Subsequent calls will do nothing.
-+ *
-+ * @note Do not use this function. Use avcodec_free_context() to destroy a
-+ * codec context (either open or closed). Opening and closing a codec context
-+ * multiple times is not supported anymore -- use multiple codec contexts
-+ * instead.
-+ */
-+int avcodec_close(AVCodecContext *avctx);
-+
-+/**
-+ * Free all allocated data in the given subtitle struct.
-+ *
-+ * @param sub AVSubtitle to free.
-+ */
-+void avsubtitle_free(AVSubtitle *sub);
-+
-+/**
-+ * @}
-+ */
-+
-+/**
-+ * @addtogroup lavc_packet
-+ * @{
-+ */
-+
-+/**
-+ * Allocate an AVPacket and set its fields to default values. The resulting
-+ * struct must be freed using av_packet_free().
-+ *
-+ * @return An AVPacket filled with default values or NULL on failure.
-+ *
-+ * @note this only allocates the AVPacket itself, not the data buffers. Those
-+ * must be allocated through other means such as av_new_packet.
-+ *
-+ * @see av_new_packet
-+ */
-+AVPacket *av_packet_alloc(void);
-+
-+/**
-+ * Create a new packet that references the same data as src.
-+ *
-+ * This is a shortcut for av_packet_alloc()+av_packet_ref().
-+ *
-+ * @return newly created AVPacket on success, NULL on error.
-+ *
-+ * @see av_packet_alloc
-+ * @see av_packet_ref
-+ */
-+AVPacket *av_packet_clone(const AVPacket *src);
-+
-+/**
-+ * Free the packet, if the packet is reference counted, it will be
-+ * unreferenced first.
-+ *
-+ * @param pkt packet to be freed. The pointer will be set to NULL.
-+ * @note passing NULL is a no-op.
-+ */
-+void av_packet_free(AVPacket **pkt);
-+
-+/**
-+ * Initialize optional fields of a packet with default values.
-+ *
-+ * Note, this does not touch the data and size members, which have to be
-+ * initialized separately.
-+ *
-+ * @param pkt packet
-+ */
-+void av_init_packet(AVPacket *pkt);
-+
-+/**
-+ * Allocate the payload of a packet and initialize its fields with
-+ * default values.
-+ *
-+ * @param pkt packet
-+ * @param size wanted payload size
-+ * @return 0 if OK, AVERROR_xxx otherwise
-+ */
-+int av_new_packet(AVPacket *pkt, int size);
-+
-+/**
-+ * Reduce packet size, correctly zeroing padding
-+ *
-+ * @param pkt packet
-+ * @param size new size
-+ */
-+void av_shrink_packet(AVPacket *pkt, int size);
-+
-+/**
-+ * Increase packet size, correctly zeroing padding
-+ *
-+ * @param pkt packet
-+ * @param grow_by number of bytes by which to increase the size of the packet
-+ */
-+int av_grow_packet(AVPacket *pkt, int grow_by);
-+
-+/**
-+ * Initialize a reference-counted packet from av_malloc()ed data.
-+ *
-+ * @param pkt packet to be initialized. This function will set the data, size,
-+ * buf and destruct fields, all others are left untouched.
-+ * @param data Data allocated by av_malloc() to be used as packet data. If this
-+ * function returns successfully, the data is owned by the underlying AVBuffer.
-+ * The caller may not access the data through other means.
-+ * @param size size of data in bytes, without the padding. I.e. the full buffer
-+ * size is assumed to be size + AV_INPUT_BUFFER_PADDING_SIZE.
-+ *
-+ * @return 0 on success, a negative AVERROR on error
-+ */
-+int av_packet_from_data(AVPacket *pkt, uint8_t *data, int size);
-+
-+#if FF_API_AVPACKET_OLD_API
-+/**
-+ * @warning This is a hack - the packet memory allocation stuff is broken. The
-+ * packet is allocated if it was not really allocated.
-+ *
-+ * @deprecated Use av_packet_ref or av_packet_make_refcounted
-+ */
-+attribute_deprecated
-+int av_dup_packet(AVPacket *pkt);
-+/**
-+ * Copy packet, including contents
-+ *
-+ * @return 0 on success, negative AVERROR on fail
-+ *
-+ * @deprecated Use av_packet_ref
-+ */
-+attribute_deprecated
-+int av_copy_packet(AVPacket *dst, const AVPacket *src);
-+
-+/**
-+ * Copy packet side data
-+ *
-+ * @return 0 on success, negative AVERROR on fail
-+ *
-+ * @deprecated Use av_packet_copy_props
-+ */
-+attribute_deprecated
-+int av_copy_packet_side_data(AVPacket *dst, const AVPacket *src);
-+
-+/**
-+ * Free a packet.
-+ *
-+ * @deprecated Use av_packet_unref
-+ *
-+ * @param pkt packet to free
-+ */
-+attribute_deprecated
-+void av_free_packet(AVPacket *pkt);
-+#endif
-+/**
-+ * Allocate new information of a packet.
-+ *
-+ * @param pkt packet
-+ * @param type side information type
-+ * @param size side information size
-+ * @return pointer to fresh allocated data or NULL otherwise
-+ */
-+uint8_t* av_packet_new_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
-+ int size);
-+
-+/**
-+ * Wrap an existing array as a packet side data.
-+ *
-+ * @param pkt packet
-+ * @param type side information type
-+ * @param data the side data array. It must be allocated with the av_malloc()
-+ * family of functions. The ownership of the data is transferred to
-+ * pkt.
-+ * @param size side information size
-+ * @return a non-negative number on success, a negative AVERROR code on
-+ * failure. On failure, the packet is unchanged and the data remains
-+ * owned by the caller.
-+ */
-+int av_packet_add_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
-+ uint8_t *data, size_t size);
-+
-+/**
-+ * Shrink the already allocated side data buffer
-+ *
-+ * @param pkt packet
-+ * @param type side information type
-+ * @param size new side information size
-+ * @return 0 on success, < 0 on failure
-+ */
-+int av_packet_shrink_side_data(AVPacket *pkt, enum AVPacketSideDataType type,
-+ int size);
-+
-+/**
-+ * Get side information from packet.
-+ *
-+ * @param pkt packet
-+ * @param type desired side information type
-+ * @param size pointer for side information size to store (optional)
-+ * @return pointer to data if present or NULL otherwise
-+ */
-+uint8_t* av_packet_get_side_data(const AVPacket *pkt, enum AVPacketSideDataType type,
-+ int *size);
-+
-+#if FF_API_MERGE_SD_API
-+attribute_deprecated
-+int av_packet_merge_side_data(AVPacket *pkt);
-+
-+attribute_deprecated
-+int av_packet_split_side_data(AVPacket *pkt);
-+#endif
-+
-+const char *av_packet_side_data_name(enum AVPacketSideDataType type);
-+
-+/**
-+ * Pack a dictionary for use in side_data.
-+ *
-+ * @param dict The dictionary to pack.
-+ * @param size pointer to store the size of the returned data
-+ * @return pointer to data if successful, NULL otherwise
-+ */
-+uint8_t *av_packet_pack_dictionary(AVDictionary *dict, int *size);
-+/**
-+ * Unpack a dictionary from side_data.
-+ *
-+ * @param data data from side_data
-+ * @param size size of the data
-+ * @param dict the metadata storage dictionary
-+ * @return 0 on success, < 0 on failure
-+ */
-+int av_packet_unpack_dictionary(const uint8_t *data, int size, AVDictionary **dict);
-+
-+
-+/**
-+ * Convenience function to free all the side data stored.
-+ * All the other fields stay untouched.
-+ *
-+ * @param pkt packet
-+ */
-+void av_packet_free_side_data(AVPacket *pkt);
-+
-+/**
-+ * Setup a new reference to the data described by a given packet
-+ *
-+ * If src is reference-counted, setup dst as a new reference to the
-+ * buffer in src. Otherwise allocate a new buffer in dst and copy the
-+ * data from src into it.
-+ *
-+ * All the other fields are copied from src.
-+ *
-+ * @see av_packet_unref
-+ *
-+ * @param dst Destination packet
-+ * @param src Source packet
-+ *
-+ * @return 0 on success, a negative AVERROR on error.
-+ */
-+int av_packet_ref(AVPacket *dst, const AVPacket *src);
-+
-+/**
-+ * Wipe the packet.
-+ *
-+ * Unreference the buffer referenced by the packet and reset the
-+ * remaining packet fields to their default values.
-+ *
-+ * @param pkt The packet to be unreferenced.
-+ */
-+void av_packet_unref(AVPacket *pkt);
-+
-+/**
-+ * Move every field in src to dst and reset src.
-+ *
-+ * @see av_packet_unref
-+ *
-+ * @param src Source packet, will be reset
-+ * @param dst Destination packet
-+ */
-+void av_packet_move_ref(AVPacket *dst, AVPacket *src);
-+
-+/**
-+ * Copy only "properties" fields from src to dst.
-+ *
-+ * Properties for the purpose of this function are all the fields
-+ * beside those related to the packet data (buf, data, size)
-+ *
-+ * @param dst Destination packet
-+ * @param src Source packet
-+ *
-+ * @return 0 on success AVERROR on failure.
-+ */
-+int av_packet_copy_props(AVPacket *dst, const AVPacket *src);
-+
-+/**
-+ * Ensure the data described by a given packet is reference counted.
-+ *
-+ * @note This function does not ensure that the reference will be writable.
-+ * Use av_packet_make_writable instead for that purpose.
-+ *
-+ * @see av_packet_ref
-+ * @see av_packet_make_writable
-+ *
-+ * @param pkt packet whose data should be made reference counted.
-+ *
-+ * @return 0 on success, a negative AVERROR on error. On failure, the
-+ * packet is unchanged.
-+ */
-+int av_packet_make_refcounted(AVPacket *pkt);
-+
-+/**
-+ * Create a writable reference for the data described by a given packet,
-+ * avoiding data copy if possible.
-+ *
-+ * @param pkt Packet whose data should be made writable.
-+ *
-+ * @return 0 on success, a negative AVERROR on failure. On failure, the
-+ * packet is unchanged.
-+ */
-+int av_packet_make_writable(AVPacket *pkt);
-+
-+/**
-+ * Convert valid timing fields (timestamps / durations) in a packet from one
-+ * timebase to another. Timestamps with unknown values (AV_NOPTS_VALUE) will be
-+ * ignored.
-+ *
-+ * @param pkt packet on which the conversion will be performed
-+ * @param tb_src source timebase, in which the timing fields in pkt are
-+ * expressed
-+ * @param tb_dst destination timebase, to which the timing fields will be
-+ * converted
-+ */
-+void av_packet_rescale_ts(AVPacket *pkt, AVRational tb_src, AVRational tb_dst);
-+
-+/**
-+ * @}
-+ */
-+
-+/**
-+ * @addtogroup lavc_decoding
-+ * @{
-+ */
-+
-+/**
-+ * Find a registered decoder with a matching codec ID.
-+ *
-+ * @param id AVCodecID of the requested decoder
-+ * @return A decoder if one was found, NULL otherwise.
-+ */
-+AVCodec *avcodec_find_decoder(enum AVCodecID id);
-+
-+/**
-+ * Find a registered decoder with the specified name.
-+ *
-+ * @param name name of the requested decoder
-+ * @return A decoder if one was found, NULL otherwise.
-+ */
-+AVCodec *avcodec_find_decoder_by_name(const char *name);
-+
-+/**
-+ * The default callback for AVCodecContext.get_buffer2(). It is made public so
-+ * it can be called by custom get_buffer2() implementations for decoders without
-+ * AV_CODEC_CAP_DR1 set.
-+ */
-+int avcodec_default_get_buffer2(AVCodecContext *s, AVFrame *frame, int flags);
-+
-+/**
-+ * Modify width and height values so that they will result in a memory
-+ * buffer that is acceptable for the codec if you do not use any horizontal
-+ * padding.
-+ *
-+ * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened.
-+ */
-+void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height);
-+
-+/**
-+ * Modify width and height values so that they will result in a memory
-+ * buffer that is acceptable for the codec if you also ensure that all
-+ * line sizes are a multiple of the respective linesize_align[i].
-+ *
-+ * May only be used if a codec with AV_CODEC_CAP_DR1 has been opened.
-+ */
-+void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height,
-+ int linesize_align[AV_NUM_DATA_POINTERS]);
-+
-+/**
-+ * Converts AVChromaLocation to swscale x/y chroma position.
-+ *
-+ * The positions represent the chroma (0,0) position in a coordinates system
-+ * with luma (0,0) representing the origin and luma(1,1) representing 256,256
-+ *
-+ * @param xpos horizontal chroma sample position
-+ * @param ypos vertical chroma sample position
-+ */
-+int avcodec_enum_to_chroma_pos(int *xpos, int *ypos, enum AVChromaLocation pos);
-+
-+/**
-+ * Converts swscale x/y chroma position to AVChromaLocation.
-+ *
-+ * The positions represent the chroma (0,0) position in a coordinates system
-+ * with luma (0,0) representing the origin and luma(1,1) representing 256,256
-+ *
-+ * @param xpos horizontal chroma sample position
-+ * @param ypos vertical chroma sample position
-+ */
-+enum AVChromaLocation avcodec_chroma_pos_to_enum(int xpos, int ypos);
-+
-+/**
-+ * Decode the audio frame of size avpkt->size from avpkt->data into frame.
-+ *
-+ * Some decoders may support multiple frames in a single AVPacket. Such
-+ * decoders would then just decode the first frame and the return value would be
-+ * less than the packet size. In this case, avcodec_decode_audio4 has to be
-+ * called again with an AVPacket containing the remaining data in order to
-+ * decode the second frame, etc... Even if no frames are returned, the packet
-+ * needs to be fed to the decoder with remaining data until it is completely
-+ * consumed or an error occurs.
-+ *
-+ * Some decoders (those marked with AV_CODEC_CAP_DELAY) have a delay between input
-+ * and output. This means that for some packets they will not immediately
-+ * produce decoded output and need to be flushed at the end of decoding to get
-+ * all the decoded data. Flushing is done by calling this function with packets
-+ * with avpkt->data set to NULL and avpkt->size set to 0 until it stops
-+ * returning samples. It is safe to flush even those decoders that are not
-+ * marked with AV_CODEC_CAP_DELAY, then no samples will be returned.
-+ *
-+ * @warning The input buffer, avpkt->data must be AV_INPUT_BUFFER_PADDING_SIZE
-+ * larger than the actual read bytes because some optimized bitstream
-+ * readers read 32 or 64 bits at once and could read over the end.
-+ *
-+ * @note The AVCodecContext MUST have been opened with @ref avcodec_open2()
-+ * before packets may be fed to the decoder.
-+ *
-+ * @param avctx the codec context
-+ * @param[out] frame The AVFrame in which to store decoded audio samples.
-+ * The decoder will allocate a buffer for the decoded frame by
-+ * calling the AVCodecContext.get_buffer2() callback.
-+ * When AVCodecContext.refcounted_frames is set to 1, the frame is
-+ * reference counted and the returned reference belongs to the
-+ * caller. The caller must release the frame using av_frame_unref()
-+ * when the frame is no longer needed. The caller may safely write
-+ * to the frame if av_frame_is_writable() returns 1.
-+ * When AVCodecContext.refcounted_frames is set to 0, the returned
-+ * reference belongs to the decoder and is valid only until the
-+ * next call to this function or until closing or flushing the
-+ * decoder. The caller may not write to it.
-+ * @param[out] got_frame_ptr Zero if no frame could be decoded, otherwise it is
-+ * non-zero. Note that this field being set to zero
-+ * does not mean that an error has occurred. For
-+ * decoders with AV_CODEC_CAP_DELAY set, no given decode
-+ * call is guaranteed to produce a frame.
-+ * @param[in] avpkt The input AVPacket containing the input buffer.
-+ * At least avpkt->data and avpkt->size should be set. Some
-+ * decoders might also require additional fields to be set.
-+ * @return A negative error code is returned if an error occurred during
-+ * decoding, otherwise the number of bytes consumed from the input
-+ * AVPacket is returned.
-+ *
-+* @deprecated Use avcodec_send_packet() and avcodec_receive_frame().
-+ */
-+attribute_deprecated
-+int avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame,
-+ int *got_frame_ptr, const AVPacket *avpkt);
-+
-+/**
-+ * Decode the video frame of size avpkt->size from avpkt->data into picture.
-+ * Some decoders may support multiple frames in a single AVPacket, such
-+ * decoders would then just decode the first frame.
-+ *
-+ * @warning The input buffer must be AV_INPUT_BUFFER_PADDING_SIZE larger than
-+ * the actual read bytes because some optimized bitstream readers read 32 or 64
-+ * bits at once and could read over the end.
-+ *
-+ * @warning The end of the input buffer buf should be set to 0 to ensure that
-+ * no overreading happens for damaged MPEG streams.
-+ *
-+ * @note Codecs which have the AV_CODEC_CAP_DELAY capability set have a delay
-+ * between input and output, these need to be fed with avpkt->data=NULL,
-+ * avpkt->size=0 at the end to return the remaining frames.
-+ *
-+ * @note The AVCodecContext MUST have been opened with @ref avcodec_open2()
-+ * before packets may be fed to the decoder.
-+ *
-+ * @param avctx the codec context
-+ * @param[out] picture The AVFrame in which the decoded video frame will be stored.
-+ * Use av_frame_alloc() to get an AVFrame. The codec will
-+ * allocate memory for the actual bitmap by calling the
-+ * AVCodecContext.get_buffer2() callback.
-+ * When AVCodecContext.refcounted_frames is set to 1, the frame is
-+ * reference counted and the returned reference belongs to the
-+ * caller. The caller must release the frame using av_frame_unref()
-+ * when the frame is no longer needed. The caller may safely write
-+ * to the frame if av_frame_is_writable() returns 1.
-+ * When AVCodecContext.refcounted_frames is set to 0, the returned
-+ * reference belongs to the decoder and is valid only until the
-+ * next call to this function or until closing or flushing the
-+ * decoder. The caller may not write to it.
-+ *
-+ * @param[in] avpkt The input AVPacket containing the input buffer.
-+ * You can create such packet with av_init_packet() and by then setting
-+ * data and size, some decoders might in addition need other fields like
-+ * flags&AV_PKT_FLAG_KEY. All decoders are designed to use the least
-+ * fields possible.
-+ * @param[in,out] got_picture_ptr Zero if no frame could be decompressed, otherwise, it is nonzero.
-+ * @return On error a negative value is returned, otherwise the number of bytes
-+ * used or zero if no frame could be decompressed.
-+ *
-+ * @deprecated Use avcodec_send_packet() and avcodec_receive_frame().
-+ */
-+attribute_deprecated
-+int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture,
-+ int *got_picture_ptr,
-+ const AVPacket *avpkt);
-+
-+/**
-+ * Decode a subtitle message.
-+ * Return a negative value on error, otherwise return the number of bytes used.
-+ * If no subtitle could be decompressed, got_sub_ptr is zero.
-+ * Otherwise, the subtitle is stored in *sub.
-+ * Note that AV_CODEC_CAP_DR1 is not available for subtitle codecs. This is for
-+ * simplicity, because the performance difference is expect to be negligible
-+ * and reusing a get_buffer written for video codecs would probably perform badly
-+ * due to a potentially very different allocation pattern.
-+ *
-+ * Some decoders (those marked with AV_CODEC_CAP_DELAY) have a delay between input
-+ * and output. This means that for some packets they will not immediately
-+ * produce decoded output and need to be flushed at the end of decoding to get
-+ * all the decoded data. Flushing is done by calling this function with packets
-+ * with avpkt->data set to NULL and avpkt->size set to 0 until it stops
-+ * returning subtitles. It is safe to flush even those decoders that are not
-+ * marked with AV_CODEC_CAP_DELAY, then no subtitles will be returned.
-+ *
-+ * @note The AVCodecContext MUST have been opened with @ref avcodec_open2()
-+ * before packets may be fed to the decoder.
-+ *
-+ * @param avctx the codec context
-+ * @param[out] sub The Preallocated AVSubtitle in which the decoded subtitle will be stored,
-+ * must be freed with avsubtitle_free if *got_sub_ptr is set.
-+ * @param[in,out] got_sub_ptr Zero if no subtitle could be decompressed, otherwise, it is nonzero.
-+ * @param[in] avpkt The input AVPacket containing the input buffer.
-+ */
-+int avcodec_decode_subtitle2(AVCodecContext *avctx, AVSubtitle *sub,
-+ int *got_sub_ptr,
-+ AVPacket *avpkt);
-+
-+/**
-+ * Supply raw packet data as input to a decoder.
-+ *
-+ * Internally, this call will copy relevant AVCodecContext fields, which can
-+ * influence decoding per-packet, and apply them when the packet is actually
-+ * decoded. (For example AVCodecContext.skip_frame, which might direct the
-+ * decoder to drop the frame contained by the packet sent with this function.)
-+ *
-+ * @warning The input buffer, avpkt->data must be AV_INPUT_BUFFER_PADDING_SIZE
-+ * larger than the actual read bytes because some optimized bitstream
-+ * readers read 32 or 64 bits at once and could read over the end.
-+ *
-+ * @warning Do not mix this API with the legacy API (like avcodec_decode_video2())
-+ * on the same AVCodecContext. It will return unexpected results now
-+ * or in future libavcodec versions.
-+ *
-+ * @note The AVCodecContext MUST have been opened with @ref avcodec_open2()
-+ * before packets may be fed to the decoder.
-+ *
-+ * @param avctx codec context
-+ * @param[in] avpkt The input AVPacket. Usually, this will be a single video
-+ * frame, or several complete audio frames.
-+ * Ownership of the packet remains with the caller, and the
-+ * decoder will not write to the packet. The decoder may create
-+ * a reference to the packet data (or copy it if the packet is
-+ * not reference-counted).
-+ * Unlike with older APIs, the packet is always fully consumed,
-+ * and if it contains multiple frames (e.g. some audio codecs),
-+ * will require you to call avcodec_receive_frame() multiple
-+ * times afterwards before you can send a new packet.
-+ * It can be NULL (or an AVPacket with data set to NULL and
-+ * size set to 0); in this case, it is considered a flush
-+ * packet, which signals the end of the stream. Sending the
-+ * first flush packet will return success. Subsequent ones are
-+ * unnecessary and will return AVERROR_EOF. If the decoder
-+ * still has frames buffered, it will return them after sending
-+ * a flush packet.
-+ *
-+ * @return 0 on success, otherwise negative error code:
-+ * AVERROR(EAGAIN): input is not accepted in the current state - user
-+ * must read output with avcodec_receive_frame() (once
-+ * all output is read, the packet should be resent, and
-+ * the call will not fail with EAGAIN).
-+ * AVERROR_EOF: the decoder has been flushed, and no new packets can
-+ * be sent to it (also returned if more than 1 flush
-+ * packet is sent)
-+ * AVERROR(EINVAL): codec not opened, it is an encoder, or requires flush
-+ * AVERROR(ENOMEM): failed to add packet to internal queue, or similar
-+ * other errors: legitimate decoding errors
-+ */
-+int avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt);
-+
-+/**
-+ * Return decoded output data from a decoder.
-+ *
-+ * @param avctx codec context
-+ * @param frame This will be set to a reference-counted video or audio
-+ * frame (depending on the decoder type) allocated by the
-+ * decoder. Note that the function will always call
-+ * av_frame_unref(frame) before doing anything else.
-+ *
-+ * @return
-+ * 0: success, a frame was returned
-+ * AVERROR(EAGAIN): output is not available in this state - user must try
-+ * to send new input
-+ * AVERROR_EOF: the decoder has been fully flushed, and there will be
-+ * no more output frames
-+ * AVERROR(EINVAL): codec not opened, or it is an encoder
-+ * other negative values: legitimate decoding errors
-+ */
-+int avcodec_receive_frame(AVCodecContext *avctx, AVFrame *frame);
-+
-+/**
-+ * Supply a raw video or audio frame to the encoder. Use avcodec_receive_packet()
-+ * to retrieve buffered output packets.
-+ *
-+ * @param avctx codec context
-+ * @param[in] frame AVFrame containing the raw audio or video frame to be encoded.
-+ * Ownership of the frame remains with the caller, and the
-+ * encoder will not write to the frame. The encoder may create
-+ * a reference to the frame data (or copy it if the frame is
-+ * not reference-counted).
-+ * It can be NULL, in which case it is considered a flush
-+ * packet. This signals the end of the stream. If the encoder
-+ * still has packets buffered, it will return them after this
-+ * call. Once flushing mode has been entered, additional flush
-+ * packets are ignored, and sending frames will return
-+ * AVERROR_EOF.
-+ *
-+ * For audio:
-+ * If AV_CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame
-+ * can have any number of samples.
-+ * If it is not set, frame->nb_samples must be equal to
-+ * avctx->frame_size for all frames except the last.
-+ * The final frame may be smaller than avctx->frame_size.
-+ * @return 0 on success, otherwise negative error code:
-+ * AVERROR(EAGAIN): input is not accepted in the current state - user
-+ * must read output with avcodec_receive_packet() (once
-+ * all output is read, the packet should be resent, and
-+ * the call will not fail with EAGAIN).
-+ * AVERROR_EOF: the encoder has been flushed, and no new frames can
-+ * be sent to it
-+ * AVERROR(EINVAL): codec not opened, refcounted_frames not set, it is a
-+ * decoder, or requires flush
-+ * AVERROR(ENOMEM): failed to add packet to internal queue, or similar
-+ * other errors: legitimate decoding errors
-+ */
-+int avcodec_send_frame(AVCodecContext *avctx, const AVFrame *frame);
-+
-+/**
-+ * Read encoded data from the encoder.
-+ *
-+ * @param avctx codec context
-+ * @param avpkt This will be set to a reference-counted packet allocated by the
-+ * encoder. Note that the function will always call
-+ * av_frame_unref(frame) before doing anything else.
-+ * @return 0 on success, otherwise negative error code:
-+ * AVERROR(EAGAIN): output is not available in the current state - user
-+ * must try to send input
-+ * AVERROR_EOF: the encoder has been fully flushed, and there will be
-+ * no more output packets
-+ * AVERROR(EINVAL): codec not opened, or it is an encoder
-+ * other errors: legitimate decoding errors
-+ */
-+int avcodec_receive_packet(AVCodecContext *avctx, AVPacket *avpkt);
-+
-+/**
-+ * Create and return a AVHWFramesContext with values adequate for hardware
-+ * decoding. This is meant to get called from the get_format callback, and is
-+ * a helper for preparing a AVHWFramesContext for AVCodecContext.hw_frames_ctx.
-+ * This API is for decoding with certain hardware acceleration modes/APIs only.
-+ *
-+ * The returned AVHWFramesContext is not initialized. The caller must do this
-+ * with av_hwframe_ctx_init().
-+ *
-+ * Calling this function is not a requirement, but makes it simpler to avoid
-+ * codec or hardware API specific details when manually allocating frames.
-+ *
-+ * Alternatively to this, an API user can set AVCodecContext.hw_device_ctx,
-+ * which sets up AVCodecContext.hw_frames_ctx fully automatically, and makes
-+ * it unnecessary to call this function or having to care about
-+ * AVHWFramesContext initialization at all.
-+ *
-+ * There are a number of requirements for calling this function:
-+ *
-+ * - It must be called from get_format with the same avctx parameter that was
-+ * passed to get_format. Calling it outside of get_format is not allowed, and
-+ * can trigger undefined behavior.
-+ * - The function is not always supported (see description of return values).
-+ * Even if this function returns successfully, hwaccel initialization could
-+ * fail later. (The degree to which implementations check whether the stream
-+ * is actually supported varies. Some do this check only after the user's
-+ * get_format callback returns.)
-+ * - The hw_pix_fmt must be one of the choices suggested by get_format. If the
-+ * user decides to use a AVHWFramesContext prepared with this API function,
-+ * the user must return the same hw_pix_fmt from get_format.
-+ * - The device_ref passed to this function must support the given hw_pix_fmt.
-+ * - After calling this API function, it is the user's responsibility to
-+ * initialize the AVHWFramesContext (returned by the out_frames_ref parameter),
-+ * and to set AVCodecContext.hw_frames_ctx to it. If done, this must be done
-+ * before returning from get_format (this is implied by the normal
-+ * AVCodecContext.hw_frames_ctx API rules).
-+ * - The AVHWFramesContext parameters may change every time time get_format is
-+ * called. Also, AVCodecContext.hw_frames_ctx is reset before get_format. So
-+ * you are inherently required to go through this process again on every
-+ * get_format call.
-+ * - It is perfectly possible to call this function without actually using
-+ * the resulting AVHWFramesContext. One use-case might be trying to reuse a
-+ * previously initialized AVHWFramesContext, and calling this API function
-+ * only to test whether the required frame parameters have changed.
-+ * - Fields that use dynamically allocated values of any kind must not be set
-+ * by the user unless setting them is explicitly allowed by the documentation.
-+ * If the user sets AVHWFramesContext.free and AVHWFramesContext.user_opaque,
-+ * the new free callback must call the potentially set previous free callback.
-+ * This API call may set any dynamically allocated fields, including the free
-+ * callback.
-+ *
-+ * The function will set at least the following fields on AVHWFramesContext
-+ * (potentially more, depending on hwaccel API):
-+ *
-+ * - All fields set by av_hwframe_ctx_alloc().
-+ * - Set the format field to hw_pix_fmt.
-+ * - Set the sw_format field to the most suited and most versatile format. (An
-+ * implication is that this will prefer generic formats over opaque formats
-+ * with arbitrary restrictions, if possible.)
-+ * - Set the width/height fields to the coded frame size, rounded up to the
-+ * API-specific minimum alignment.
-+ * - Only _if_ the hwaccel requires a pre-allocated pool: set the initial_pool_size
-+ * field to the number of maximum reference surfaces possible with the codec,
-+ * plus 1 surface for the user to work (meaning the user can safely reference
-+ * at most 1 decoded surface at a time), plus additional buffering introduced
-+ * by frame threading. If the hwaccel does not require pre-allocation, the
-+ * field is left to 0, and the decoder will allocate new surfaces on demand
-+ * during decoding.
-+ * - Possibly AVHWFramesContext.hwctx fields, depending on the underlying
-+ * hardware API.
-+ *
-+ * Essentially, out_frames_ref returns the same as av_hwframe_ctx_alloc(), but
-+ * with basic frame parameters set.
-+ *
-+ * The function is stateless, and does not change the AVCodecContext or the
-+ * device_ref AVHWDeviceContext.
-+ *
-+ * @param avctx The context which is currently calling get_format, and which
-+ * implicitly contains all state needed for filling the returned
-+ * AVHWFramesContext properly.
-+ * @param device_ref A reference to the AVHWDeviceContext describing the device
-+ * which will be used by the hardware decoder.
-+ * @param hw_pix_fmt The hwaccel format you are going to return from get_format.
-+ * @param out_frames_ref On success, set to a reference to an _uninitialized_
-+ * AVHWFramesContext, created from the given device_ref.
-+ * Fields will be set to values required for decoding.
-+ * Not changed if an error is returned.
-+ * @return zero on success, a negative value on error. The following error codes
-+ * have special semantics:
-+ * AVERROR(ENOENT): the decoder does not support this functionality. Setup
-+ * is always manual, or it is a decoder which does not
-+ * support setting AVCodecContext.hw_frames_ctx at all,
-+ * or it is a software format.
-+ * AVERROR(EINVAL): it is known that hardware decoding is not supported for
-+ * this configuration, or the device_ref is not supported
-+ * for the hwaccel referenced by hw_pix_fmt.
-+ */
-+int avcodec_get_hw_frames_parameters(AVCodecContext *avctx,
-+ AVBufferRef *device_ref,
-+ enum AVPixelFormat hw_pix_fmt,
-+ AVBufferRef **out_frames_ref);
-+
-+
-+
-+/**
-+ * @defgroup lavc_parsing Frame parsing
-+ * @{
-+ */
-+
-+enum AVPictureStructure {
-+ AV_PICTURE_STRUCTURE_UNKNOWN, //< unknown
-+ AV_PICTURE_STRUCTURE_TOP_FIELD, //< coded as top field
-+ AV_PICTURE_STRUCTURE_BOTTOM_FIELD, //< coded as bottom field
-+ AV_PICTURE_STRUCTURE_FRAME, //< coded as frame
-+};
-+
-+typedef struct AVCodecParserContext {
-+ void *priv_data;
-+ struct AVCodecParser *parser;
-+ int64_t frame_offset; /* offset of the current frame */
-+ int64_t cur_offset; /* current offset
-+ (incremented by each av_parser_parse()) */
-+ int64_t next_frame_offset; /* offset of the next frame */
-+ /* video info */
-+ int pict_type; /* XXX: Put it back in AVCodecContext. */
-+ /**
-+ * This field is used for proper frame duration computation in lavf.
-+ * It signals, how much longer the frame duration of the current frame
-+ * is compared to normal frame duration.
-+ *
-+ * frame_duration = (1 + repeat_pict) * time_base
-+ *
-+ * It is used by codecs like H.264 to display telecined material.
-+ */
-+ int repeat_pict; /* XXX: Put it back in AVCodecContext. */
-+ int64_t pts; /* pts of the current frame */
-+ int64_t dts; /* dts of the current frame */
-+
-+ /* private data */
-+ int64_t last_pts;
-+ int64_t last_dts;
-+ int fetch_timestamp;
-+
-+#define AV_PARSER_PTS_NB 4
-+ int cur_frame_start_index;
-+ int64_t cur_frame_offset[AV_PARSER_PTS_NB];
-+ int64_t cur_frame_pts[AV_PARSER_PTS_NB];
-+ int64_t cur_frame_dts[AV_PARSER_PTS_NB];
-+
-+ int flags;
-+#define PARSER_FLAG_COMPLETE_FRAMES 0x0001
-+#define PARSER_FLAG_ONCE 0x0002
-+/// Set if the parser has a valid file offset
-+#define PARSER_FLAG_FETCHED_OFFSET 0x0004
-+#define PARSER_FLAG_USE_CODEC_TS 0x1000
-+
-+ int64_t offset; ///< byte offset from starting packet start
-+ int64_t cur_frame_end[AV_PARSER_PTS_NB];
-+
-+ /**
-+ * Set by parser to 1 for key frames and 0 for non-key frames.
-+ * It is initialized to -1, so if the parser doesn't set this flag,
-+ * old-style fallback using AV_PICTURE_TYPE_I picture type as key frames
-+ * will be used.
-+ */
-+ int key_frame;
-+
-+#if FF_API_CONVERGENCE_DURATION
-+ /**
-+ * @deprecated unused
-+ */
-+ attribute_deprecated
-+ int64_t convergence_duration;
-+#endif
-+
-+ // Timestamp generation support:
-+ /**
-+ * Synchronization point for start of timestamp generation.
-+ *
-+ * Set to >0 for sync point, 0 for no sync point and <0 for undefined
-+ * (default).
-+ *
-+ * For example, this corresponds to presence of H.264 buffering period
-+ * SEI message.
-+ */
-+ int dts_sync_point;
-+
-+ /**
-+ * Offset of the current timestamp against last timestamp sync point in
-+ * units of AVCodecContext.time_base.
-+ *
-+ * Set to INT_MIN when dts_sync_point unused. Otherwise, it must
-+ * contain a valid timestamp offset.
-+ *
-+ * Note that the timestamp of sync point has usually a nonzero
-+ * dts_ref_dts_delta, which refers to the previous sync point. Offset of
-+ * the next frame after timestamp sync point will be usually 1.
-+ *
-+ * For example, this corresponds to H.264 cpb_removal_delay.
-+ */
-+ int dts_ref_dts_delta;
-+
-+ /**
-+ * Presentation delay of current frame in units of AVCodecContext.time_base.
-+ *
-+ * Set to INT_MIN when dts_sync_point unused. Otherwise, it must
-+ * contain valid non-negative timestamp delta (presentation time of a frame
-+ * must not lie in the past).
-+ *
-+ * This delay represents the difference between decoding and presentation
-+ * time of the frame.
-+ *
-+ * For example, this corresponds to H.264 dpb_output_delay.
-+ */
-+ int pts_dts_delta;
-+
-+ /**
-+ * Position of the packet in file.
-+ *
-+ * Analogous to cur_frame_pts/dts
-+ */
-+ int64_t cur_frame_pos[AV_PARSER_PTS_NB];
-+
-+ /**
-+ * Byte position of currently parsed frame in stream.
-+ */
-+ int64_t pos;
-+
-+ /**
-+ * Previous frame byte position.
-+ */
-+ int64_t last_pos;
-+
-+ /**
-+ * Duration of the current frame.
-+ * For audio, this is in units of 1 / AVCodecContext.sample_rate.
-+ * For all other types, this is in units of AVCodecContext.time_base.
-+ */
-+ int duration;
-+
-+ enum AVFieldOrder field_order;
-+
-+ /**
-+ * Indicate whether a picture is coded as a frame, top field or bottom field.
-+ *
-+ * For example, H.264 field_pic_flag equal to 0 corresponds to
-+ * AV_PICTURE_STRUCTURE_FRAME. An H.264 picture with field_pic_flag
-+ * equal to 1 and bottom_field_flag equal to 0 corresponds to
-+ * AV_PICTURE_STRUCTURE_TOP_FIELD.
-+ */
-+ enum AVPictureStructure picture_structure;
-+
-+ /**
-+ * Picture number incremented in presentation or output order.
-+ * This field may be reinitialized at the first picture of a new sequence.
-+ *
-+ * For example, this corresponds to H.264 PicOrderCnt.
-+ */
-+ int output_picture_number;
-+
-+ /**
-+ * Dimensions of the decoded video intended for presentation.
-+ */
-+ int width;
-+ int height;
-+
-+ /**
-+ * Dimensions of the coded video.
-+ */
-+ int coded_width;
-+ int coded_height;
-+
-+ /**
-+ * The format of the coded data, corresponds to enum AVPixelFormat for video
-+ * and for enum AVSampleFormat for audio.
-+ *
-+ * Note that a decoder can have considerable freedom in how exactly it
-+ * decodes the data, so the format reported here might be different from the
-+ * one returned by a decoder.
-+ */
-+ int format;
-+} AVCodecParserContext;
-+
-+typedef struct AVCodecParser {
-+ int codec_ids[5]; /* several codec IDs are permitted */
-+ int priv_data_size;
-+ int (*parser_init)(AVCodecParserContext *s);
-+ /* This callback never returns an error, a negative value means that
-+ * the frame start was in a previous packet. */
-+ int (*parser_parse)(AVCodecParserContext *s,
-+ AVCodecContext *avctx,
-+ const uint8_t **poutbuf, int *poutbuf_size,
-+ const uint8_t *buf, int buf_size);
-+ void (*parser_close)(AVCodecParserContext *s);
-+ int (*split)(AVCodecContext *avctx, const uint8_t *buf, int buf_size);
-+ struct AVCodecParser *next;
-+} AVCodecParser;
-+
-+/**
-+ * Iterate over all registered codec parsers.
-+ *
-+ * @param opaque a pointer where libavcodec will store the iteration state. Must
-+ * point to NULL to start the iteration.
-+ *
-+ * @return the next registered codec parser or NULL when the iteration is
-+ * finished
-+ */
-+const AVCodecParser *av_parser_iterate(void **opaque);
-+
-+attribute_deprecated
-+AVCodecParser *av_parser_next(const AVCodecParser *c);
-+
-+attribute_deprecated
-+void av_register_codec_parser(AVCodecParser *parser);
-+AVCodecParserContext *av_parser_init(int codec_id);
-+
-+/**
-+ * Parse a packet.
-+ *
-+ * @param s parser context.
-+ * @param avctx codec context.
-+ * @param poutbuf set to pointer to parsed buffer or NULL if not yet finished.
-+ * @param poutbuf_size set to size of parsed buffer or zero if not yet finished.
-+ * @param buf input buffer.
-+ * @param buf_size buffer size in bytes without the padding. I.e. the full buffer
-+ size is assumed to be buf_size + AV_INPUT_BUFFER_PADDING_SIZE.
-+ To signal EOF, this should be 0 (so that the last frame
-+ can be output).
-+ * @param pts input presentation timestamp.
-+ * @param dts input decoding timestamp.
-+ * @param pos input byte position in stream.
-+ * @return the number of bytes of the input bitstream used.
-+ *
-+ * Example:
-+ * @code
-+ * while(in_len){
-+ * len = av_parser_parse2(myparser, AVCodecContext, &data, &size,
-+ * in_data, in_len,
-+ * pts, dts, pos);
-+ * in_data += len;
-+ * in_len -= len;
-+ *
-+ * if(size)
-+ * decode_frame(data, size);
-+ * }
-+ * @endcode
-+ */
-+int av_parser_parse2(AVCodecParserContext *s,
-+ AVCodecContext *avctx,
-+ uint8_t **poutbuf, int *poutbuf_size,
-+ const uint8_t *buf, int buf_size,
-+ int64_t pts, int64_t dts,
-+ int64_t pos);
-+
-+/**
-+ * @return 0 if the output buffer is a subset of the input, 1 if it is allocated and must be freed
-+ * @deprecated use AVBitStreamFilter
-+ */
-+int av_parser_change(AVCodecParserContext *s,
-+ AVCodecContext *avctx,
-+ uint8_t **poutbuf, int *poutbuf_size,
-+ const uint8_t *buf, int buf_size, int keyframe);
-+void av_parser_close(AVCodecParserContext *s);
-+
-+/**
-+ * @}
-+ * @}
-+ */
-+
-+/**
-+ * @addtogroup lavc_encoding
-+ * @{
-+ */
-+
-+/**
-+ * Find a registered encoder with a matching codec ID.
-+ *
-+ * @param id AVCodecID of the requested encoder
-+ * @return An encoder if one was found, NULL otherwise.
-+ */
-+AVCodec *avcodec_find_encoder(enum AVCodecID id);
-+
-+/**
-+ * Find a registered encoder with the specified name.
-+ *
-+ * @param name name of the requested encoder
-+ * @return An encoder if one was found, NULL otherwise.
-+ */
-+AVCodec *avcodec_find_encoder_by_name(const char *name);
-+
-+/**
-+ * Encode a frame of audio.
-+ *
-+ * Takes input samples from frame and writes the next output packet, if
-+ * available, to avpkt. The output packet does not necessarily contain data for
-+ * the most recent frame, as encoders can delay, split, and combine input frames
-+ * internally as needed.
-+ *
-+ * @param avctx codec context
-+ * @param avpkt output AVPacket.
-+ * The user can supply an output buffer by setting
-+ * avpkt->data and avpkt->size prior to calling the
-+ * function, but if the size of the user-provided data is not
-+ * large enough, encoding will fail. If avpkt->data and
-+ * avpkt->size are set, avpkt->destruct must also be set. All
-+ * other AVPacket fields will be reset by the encoder using
-+ * av_init_packet(). If avpkt->data is NULL, the encoder will
-+ * allocate it. The encoder will set avpkt->size to the size
-+ * of the output packet.
-+ *
-+ * If this function fails or produces no output, avpkt will be
-+ * freed using av_packet_unref().
-+ * @param[in] frame AVFrame containing the raw audio data to be encoded.
-+ * May be NULL when flushing an encoder that has the
-+ * AV_CODEC_CAP_DELAY capability set.
-+ * If AV_CODEC_CAP_VARIABLE_FRAME_SIZE is set, then each frame
-+ * can have any number of samples.
-+ * If it is not set, frame->nb_samples must be equal to
-+ * avctx->frame_size for all frames except the last.
-+ * The final frame may be smaller than avctx->frame_size.
-+ * @param[out] got_packet_ptr This field is set to 1 by libavcodec if the
-+ * output packet is non-empty, and to 0 if it is
-+ * empty. If the function returns an error, the
-+ * packet can be assumed to be invalid, and the
-+ * value of got_packet_ptr is undefined and should
-+ * not be used.
-+ * @return 0 on success, negative error code on failure
-+ *
-+ * @deprecated use avcodec_send_frame()/avcodec_receive_packet() instead
-+ */
-+attribute_deprecated
-+int avcodec_encode_audio2(AVCodecContext *avctx, AVPacket *avpkt,
-+ const AVFrame *frame, int *got_packet_ptr);
-+
-+/**
-+ * Encode a frame of video.
-+ *
-+ * Takes input raw video data from frame and writes the next output packet, if
-+ * available, to avpkt. The output packet does not necessarily contain data for
-+ * the most recent frame, as encoders can delay and reorder input frames
-+ * internally as needed.
-+ *
-+ * @param avctx codec context
-+ * @param avpkt output AVPacket.
-+ * The user can supply an output buffer by setting
-+ * avpkt->data and avpkt->size prior to calling the
-+ * function, but if the size of the user-provided data is not
-+ * large enough, encoding will fail. All other AVPacket fields
-+ * will be reset by the encoder using av_init_packet(). If
-+ * avpkt->data is NULL, the encoder will allocate it.
-+ * The encoder will set avpkt->size to the size of the
-+ * output packet. The returned data (if any) belongs to the
-+ * caller, he is responsible for freeing it.
-+ *
-+ * If this function fails or produces no output, avpkt will be
-+ * freed using av_packet_unref().
-+ * @param[in] frame AVFrame containing the raw video data to be encoded.
-+ * May be NULL when flushing an encoder that has the
-+ * AV_CODEC_CAP_DELAY capability set.
-+ * @param[out] got_packet_ptr This field is set to 1 by libavcodec if the
-+ * output packet is non-empty, and to 0 if it is
-+ * empty. If the function returns an error, the
-+ * packet can be assumed to be invalid, and the
-+ * value of got_packet_ptr is undefined and should
-+ * not be used.
-+ * @return 0 on success, negative error code on failure
-+ *
-+ * @deprecated use avcodec_send_frame()/avcodec_receive_packet() instead
-+ */
-+attribute_deprecated
-+int avcodec_encode_video2(AVCodecContext *avctx, AVPacket *avpkt,
-+ const AVFrame *frame, int *got_packet_ptr);
-+
-+int avcodec_encode_subtitle(AVCodecContext *avctx, uint8_t *buf, int buf_size,
-+ const AVSubtitle *sub);
-+
-+
-+/**
-+ * @}
-+ */
-+
-+#if FF_API_AVPICTURE
-+/**
-+ * @addtogroup lavc_picture
-+ * @{
-+ */
-+
-+/**
-+ * @deprecated unused
-+ */
-+attribute_deprecated
-+int avpicture_alloc(AVPicture *picture, enum AVPixelFormat pix_fmt, int width, int height);
-+
-+/**
-+ * @deprecated unused
-+ */
-+attribute_deprecated
-+void avpicture_free(AVPicture *picture);
-+
-+/**
-+ * @deprecated use av_image_fill_arrays() instead.
-+ */
-+attribute_deprecated
-+int avpicture_fill(AVPicture *picture, const uint8_t *ptr,
-+ enum AVPixelFormat pix_fmt, int width, int height);
-+
-+/**
-+ * @deprecated use av_image_copy_to_buffer() instead.
-+ */
-+attribute_deprecated
-+int avpicture_layout(const AVPicture *src, enum AVPixelFormat pix_fmt,
-+ int width, int height,
-+ unsigned char *dest, int dest_size);
-+
-+/**
-+ * @deprecated use av_image_get_buffer_size() instead.
-+ */
-+attribute_deprecated
-+int avpicture_get_size(enum AVPixelFormat pix_fmt, int width, int height);
-+
-+/**
-+ * @deprecated av_image_copy() instead.
-+ */
-+attribute_deprecated
-+void av_picture_copy(AVPicture *dst, const AVPicture *src,
-+ enum AVPixelFormat pix_fmt, int width, int height);
-+
-+/**
-+ * @deprecated unused
-+ */
-+attribute_deprecated
-+int av_picture_crop(AVPicture *dst, const AVPicture *src,
-+ enum AVPixelFormat pix_fmt, int top_band, int left_band);
-+
-+/**
-+ * @deprecated unused
-+ */
-+attribute_deprecated
-+int av_picture_pad(AVPicture *dst, const AVPicture *src, int height, int width, enum AVPixelFormat pix_fmt,
-+ int padtop, int padbottom, int padleft, int padright, int *color);
-+
-+/**
-+ * @}
-+ */
-+#endif
-+
-+/**
-+ * @defgroup lavc_misc Utility functions
-+ * @ingroup libavc
-+ *
-+ * Miscellaneous utility functions related to both encoding and decoding
-+ * (or neither).
-+ * @{
-+ */
-+
-+/**
-+ * @defgroup lavc_misc_pixfmt Pixel formats
-+ *
-+ * Functions for working with pixel formats.
-+ * @{
-+ */
-+
-+#if FF_API_GETCHROMA
-+/**
-+ * @deprecated Use av_pix_fmt_get_chroma_sub_sample
-+ */
-+
-+attribute_deprecated
-+void avcodec_get_chroma_sub_sample(enum AVPixelFormat pix_fmt, int *h_shift, int *v_shift);
-+#endif
-+
-+/**
-+ * Return a value representing the fourCC code associated to the
-+ * pixel format pix_fmt, or 0 if no associated fourCC code can be
-+ * found.
-+ */
-+unsigned int avcodec_pix_fmt_to_codec_tag(enum AVPixelFormat pix_fmt);
-+
-+/**
-+ * @deprecated see av_get_pix_fmt_loss()
-+ */
-+int avcodec_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat src_pix_fmt,
-+ int has_alpha);
-+
-+/**
-+ * Find the best pixel format to convert to given a certain source pixel
-+ * format. When converting from one pixel format to another, information loss
-+ * may occur. For example, when converting from RGB24 to GRAY, the color
-+ * information will be lost. Similarly, other losses occur when converting from
-+ * some formats to other formats. avcodec_find_best_pix_fmt_of_2() searches which of
-+ * the given pixel formats should be used to suffer the least amount of loss.
-+ * The pixel formats from which it chooses one, are determined by the
-+ * pix_fmt_list parameter.
-+ *
-+ *
-+ * @param[in] pix_fmt_list AV_PIX_FMT_NONE terminated array of pixel formats to choose from
-+ * @param[in] src_pix_fmt source pixel format
-+ * @param[in] has_alpha Whether the source pixel format alpha channel is used.
-+ * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur.
-+ * @return The best pixel format to convert to or -1 if none was found.
-+ */
-+enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(const enum AVPixelFormat *pix_fmt_list,
-+ enum AVPixelFormat src_pix_fmt,
-+ int has_alpha, int *loss_ptr);
-+
-+/**
-+ * @deprecated see av_find_best_pix_fmt_of_2()
-+ */
-+enum AVPixelFormat avcodec_find_best_pix_fmt_of_2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2,
-+ enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr);
-+
-+attribute_deprecated
-+enum AVPixelFormat avcodec_find_best_pix_fmt2(enum AVPixelFormat dst_pix_fmt1, enum AVPixelFormat dst_pix_fmt2,
-+ enum AVPixelFormat src_pix_fmt, int has_alpha, int *loss_ptr);
-+
-+enum AVPixelFormat avcodec_default_get_format(struct AVCodecContext *s, const enum AVPixelFormat * fmt);
-+
-+/**
-+ * @}
-+ */
-+
-+#if FF_API_TAG_STRING
-+/**
-+ * Put a string representing the codec tag codec_tag in buf.
-+ *
-+ * @param buf buffer to place codec tag in
-+ * @param buf_size size in bytes of buf
-+ * @param codec_tag codec tag to assign
-+ * @return the length of the string that would have been generated if
-+ * enough space had been available, excluding the trailing null
-+ *
-+ * @deprecated see av_fourcc_make_string() and av_fourcc2str().
-+ */
-+attribute_deprecated
-+size_t av_get_codec_tag_string(char *buf, size_t buf_size, unsigned int codec_tag);
-+#endif
-+
-+void avcodec_string(char *buf, int buf_size, AVCodecContext *enc, int encode);
-+
-+/**
-+ * Return a name for the specified profile, if available.
-+ *
-+ * @param codec the codec that is searched for the given profile
-+ * @param profile the profile value for which a name is requested
-+ * @return A name for the profile if found, NULL otherwise.
-+ */
-+const char *av_get_profile_name(const AVCodec *codec, int profile);
-+
-+/**
-+ * Return a name for the specified profile, if available.
-+ *
-+ * @param codec_id the ID of the codec to which the requested profile belongs
-+ * @param profile the profile value for which a name is requested
-+ * @return A name for the profile if found, NULL otherwise.
-+ *
-+ * @note unlike av_get_profile_name(), which searches a list of profiles
-+ * supported by a specific decoder or encoder implementation, this
-+ * function searches the list of profiles from the AVCodecDescriptor
-+ */
-+const char *avcodec_profile_name(enum AVCodecID codec_id, int profile);
-+
-+int avcodec_default_execute(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2),void *arg, int *ret, int count, int size);
-+int avcodec_default_execute2(AVCodecContext *c, int (*func)(AVCodecContext *c2, void *arg2, int, int),void *arg, int *ret, int count);
-+//FIXME func typedef
-+
-+/**
-+ * Fill AVFrame audio data and linesize pointers.
-+ *
-+ * The buffer buf must be a preallocated buffer with a size big enough
-+ * to contain the specified samples amount. The filled AVFrame data
-+ * pointers will point to this buffer.
-+ *
-+ * AVFrame extended_data channel pointers are allocated if necessary for
-+ * planar audio.
-+ *
-+ * @param frame the AVFrame
-+ * frame->nb_samples must be set prior to calling the
-+ * function. This function fills in frame->data,
-+ * frame->extended_data, frame->linesize[0].
-+ * @param nb_channels channel count
-+ * @param sample_fmt sample format
-+ * @param buf buffer to use for frame data
-+ * @param buf_size size of buffer
-+ * @param align plane size sample alignment (0 = default)
-+ * @return >=0 on success, negative error code on failure
-+ * @todo return the size in bytes required to store the samples in
-+ * case of success, at the next libavutil bump
-+ */
-+int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels,
-+ enum AVSampleFormat sample_fmt, const uint8_t *buf,
-+ int buf_size, int align);
-+
-+/**
-+ * Reset the internal decoder state / flush internal buffers. Should be called
-+ * e.g. when seeking or when switching to a different stream.
-+ *
-+ * @note when refcounted frames are not used (i.e. avctx->refcounted_frames is 0),
-+ * this invalidates the frames previously returned from the decoder. When
-+ * refcounted frames are used, the decoder just releases any references it might
-+ * keep internally, but the caller's reference remains valid.
-+ */
-+void avcodec_flush_buffers(AVCodecContext *avctx);
-+
-+/**
-+ * Return codec bits per sample.
-+ *
-+ * @param[in] codec_id the codec
-+ * @return Number of bits per sample or zero if unknown for the given codec.
-+ */
-+int av_get_bits_per_sample(enum AVCodecID codec_id);
-+
-+/**
-+ * Return the PCM codec associated with a sample format.
-+ * @param be endianness, 0 for little, 1 for big,
-+ * -1 (or anything else) for native
-+ * @return AV_CODEC_ID_PCM_* or AV_CODEC_ID_NONE
-+ */
-+enum AVCodecID av_get_pcm_codec(enum AVSampleFormat fmt, int be);
-+
-+/**
-+ * Return codec bits per sample.
-+ * Only return non-zero if the bits per sample is exactly correct, not an
-+ * approximation.
-+ *
-+ * @param[in] codec_id the codec
-+ * @return Number of bits per sample or zero if unknown for the given codec.
-+ */
-+int av_get_exact_bits_per_sample(enum AVCodecID codec_id);
-+
-+/**
-+ * Return audio frame duration.
-+ *
-+ * @param avctx codec context
-+ * @param frame_bytes size of the frame, or 0 if unknown
-+ * @return frame duration, in samples, if known. 0 if not able to
-+ * determine.
-+ */
-+int av_get_audio_frame_duration(AVCodecContext *avctx, int frame_bytes);
-+
-+/**
-+ * This function is the same as av_get_audio_frame_duration(), except it works
-+ * with AVCodecParameters instead of an AVCodecContext.
-+ */
-+int av_get_audio_frame_duration2(AVCodecParameters *par, int frame_bytes);
-+
-+#if FF_API_OLD_BSF
-+typedef struct AVBitStreamFilterContext {
-+ void *priv_data;
-+ const struct AVBitStreamFilter *filter;
-+ AVCodecParserContext *parser;
-+ struct AVBitStreamFilterContext *next;
-+ /**
-+ * Internal default arguments, used if NULL is passed to av_bitstream_filter_filter().
-+ * Not for access by library users.
-+ */
-+ char *args;
-+} AVBitStreamFilterContext;
-+#endif
-+
-+typedef struct AVBSFInternal AVBSFInternal;
-+
-+/**
-+ * The bitstream filter state.
-+ *
-+ * This struct must be allocated with av_bsf_alloc() and freed with
-+ * av_bsf_free().
-+ *
-+ * The fields in the struct will only be changed (by the caller or by the
-+ * filter) as described in their documentation, and are to be considered
-+ * immutable otherwise.
-+ */
-+typedef struct AVBSFContext {
-+ /**
-+ * A class for logging and AVOptions
-+ */
-+ const AVClass *av_class;
-+
-+ /**
-+ * The bitstream filter this context is an instance of.
-+ */
-+ const struct AVBitStreamFilter *filter;
-+
-+ /**
-+ * Opaque libavcodec internal data. Must not be touched by the caller in any
-+ * way.
-+ */
-+ AVBSFInternal *internal;
-+
-+ /**
-+ * Opaque filter-specific private data. If filter->priv_class is non-NULL,
-+ * this is an AVOptions-enabled struct.
-+ */
-+ void *priv_data;
-+
-+ /**
-+ * Parameters of the input stream. This field is allocated in
-+ * av_bsf_alloc(), it needs to be filled by the caller before
-+ * av_bsf_init().
-+ */
-+ AVCodecParameters *par_in;
-+
-+ /**
-+ * Parameters of the output stream. This field is allocated in
-+ * av_bsf_alloc(), it is set by the filter in av_bsf_init().
-+ */
-+ AVCodecParameters *par_out;
-+
-+ /**
-+ * The timebase used for the timestamps of the input packets. Set by the
-+ * caller before av_bsf_init().
-+ */
-+ AVRational time_base_in;
-+
-+ /**
-+ * The timebase used for the timestamps of the output packets. Set by the
-+ * filter in av_bsf_init().
-+ */
-+ AVRational time_base_out;
-+} AVBSFContext;
-+
-+typedef struct AVBitStreamFilter {
-+ const char *name;
-+
-+ /**
-+ * A list of codec ids supported by the filter, terminated by
-+ * AV_CODEC_ID_NONE.
-+ * May be NULL, in that case the bitstream filter works with any codec id.
-+ */
-+ const enum AVCodecID *codec_ids;
-+
-+ /**
-+ * A class for the private data, used to declare bitstream filter private
-+ * AVOptions. This field is NULL for bitstream filters that do not declare
-+ * any options.
-+ *
-+ * If this field is non-NULL, the first member of the filter private data
-+ * must be a pointer to AVClass, which will be set by libavcodec generic
-+ * code to this class.
-+ */
-+ const AVClass *priv_class;
-+
-+ /*****************************************************************
-+ * No fields below this line are part of the public API. They
-+ * may not be used outside of libavcodec and can be changed and
-+ * removed at will.
-+ * New public fields should be added right above.
-+ *****************************************************************
-+ */
-+
-+ int priv_data_size;
-+ int (*init)(AVBSFContext *ctx);
-+ int (*filter)(AVBSFContext *ctx, AVPacket *pkt);
-+ void (*close)(AVBSFContext *ctx);
-+} AVBitStreamFilter;
-+
-+#if FF_API_OLD_BSF
-+/**
-+ * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext)
-+ * is deprecated. Use the new bitstream filtering API (using AVBSFContext).
-+ */
-+attribute_deprecated
-+void av_register_bitstream_filter(AVBitStreamFilter *bsf);
-+/**
-+ * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext)
-+ * is deprecated. Use av_bsf_get_by_name(), av_bsf_alloc(), and av_bsf_init()
-+ * from the new bitstream filtering API (using AVBSFContext).
-+ */
-+attribute_deprecated
-+AVBitStreamFilterContext *av_bitstream_filter_init(const char *name);
-+/**
-+ * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext)
-+ * is deprecated. Use av_bsf_send_packet() and av_bsf_receive_packet() from the
-+ * new bitstream filtering API (using AVBSFContext).
-+ */
-+attribute_deprecated
-+int av_bitstream_filter_filter(AVBitStreamFilterContext *bsfc,
-+ AVCodecContext *avctx, const char *args,
-+ uint8_t **poutbuf, int *poutbuf_size,
-+ const uint8_t *buf, int buf_size, int keyframe);
-+/**
-+ * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext)
-+ * is deprecated. Use av_bsf_free() from the new bitstream filtering API (using
-+ * AVBSFContext).
-+ */
-+attribute_deprecated
-+void av_bitstream_filter_close(AVBitStreamFilterContext *bsf);
-+/**
-+ * @deprecated the old bitstream filtering API (using AVBitStreamFilterContext)
-+ * is deprecated. Use av_bsf_iterate() from the new bitstream filtering API (using
-+ * AVBSFContext).
-+ */
-+attribute_deprecated
-+const AVBitStreamFilter *av_bitstream_filter_next(const AVBitStreamFilter *f);
-+#endif
-+
-+/**
-+ * @return a bitstream filter with the specified name or NULL if no such
-+ * bitstream filter exists.
-+ */
-+const AVBitStreamFilter *av_bsf_get_by_name(const char *name);
-+
-+/**
-+ * Iterate over all registered bitstream filters.
-+ *
-+ * @param opaque a pointer where libavcodec will store the iteration state. Must
-+ * point to NULL to start the iteration.
-+ *
-+ * @return the next registered bitstream filter or NULL when the iteration is
-+ * finished
-+ */
-+const AVBitStreamFilter *av_bsf_iterate(void **opaque);
-+#if FF_API_NEXT
-+attribute_deprecated
-+const AVBitStreamFilter *av_bsf_next(void **opaque);
-+#endif
-+
-+/**
-+ * Allocate a context for a given bitstream filter. The caller must fill in the
-+ * context parameters as described in the documentation and then call
-+ * av_bsf_init() before sending any data to the filter.
-+ *
-+ * @param filter the filter for which to allocate an instance.
-+ * @param ctx a pointer into which the pointer to the newly-allocated context
-+ * will be written. It must be freed with av_bsf_free() after the
-+ * filtering is done.
-+ *
-+ * @return 0 on success, a negative AVERROR code on failure
-+ */
-+int av_bsf_alloc(const AVBitStreamFilter *filter, AVBSFContext **ctx);
-+
-+/**
-+ * Prepare the filter for use, after all the parameters and options have been
-+ * set.
-+ */
-+int av_bsf_init(AVBSFContext *ctx);
-+
-+/**
-+ * Submit a packet for filtering.
-+ *
-+ * After sending each packet, the filter must be completely drained by calling
-+ * av_bsf_receive_packet() repeatedly until it returns AVERROR(EAGAIN) or
-+ * AVERROR_EOF.
-+ *
-+ * @param pkt the packet to filter. The bitstream filter will take ownership of
-+ * the packet and reset the contents of pkt. pkt is not touched if an error occurs.
-+ * This parameter may be NULL, which signals the end of the stream (i.e. no more
-+ * packets will be sent). That will cause the filter to output any packets it
-+ * may have buffered internally.
-+ *
-+ * @return 0 on success, a negative AVERROR on error.
-+ */
-+int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt);
-+
-+/**
-+ * Retrieve a filtered packet.
-+ *
-+ * @param[out] pkt this struct will be filled with the contents of the filtered
-+ * packet. It is owned by the caller and must be freed using
-+ * av_packet_unref() when it is no longer needed.
-+ * This parameter should be "clean" (i.e. freshly allocated
-+ * with av_packet_alloc() or unreffed with av_packet_unref())
-+ * when this function is called. If this function returns
-+ * successfully, the contents of pkt will be completely
-+ * overwritten by the returned data. On failure, pkt is not
-+ * touched.
-+ *
-+ * @return 0 on success. AVERROR(EAGAIN) if more packets need to be sent to the
-+ * filter (using av_bsf_send_packet()) to get more output. AVERROR_EOF if there
-+ * will be no further output from the filter. Another negative AVERROR value if
-+ * an error occurs.
-+ *
-+ * @note one input packet may result in several output packets, so after sending
-+ * a packet with av_bsf_send_packet(), this function needs to be called
-+ * repeatedly until it stops returning 0. It is also possible for a filter to
-+ * output fewer packets than were sent to it, so this function may return
-+ * AVERROR(EAGAIN) immediately after a successful av_bsf_send_packet() call.
-+ */
-+int av_bsf_receive_packet(AVBSFContext *ctx, AVPacket *pkt);
-+
-+/**
-+ * Free a bitstream filter context and everything associated with it; write NULL
-+ * into the supplied pointer.
-+ */
-+void av_bsf_free(AVBSFContext **ctx);
-+
-+/**
-+ * Get the AVClass for AVBSFContext. It can be used in combination with
-+ * AV_OPT_SEARCH_FAKE_OBJ for examining options.
-+ *
-+ * @see av_opt_find().
-+ */
-+const AVClass *av_bsf_get_class(void);
-+
-+/**
-+ * Structure for chain/list of bitstream filters.
-+ * Empty list can be allocated by av_bsf_list_alloc().
-+ */
-+typedef struct AVBSFList AVBSFList;
-+
-+/**
-+ * Allocate empty list of bitstream filters.
-+ * The list must be later freed by av_bsf_list_free()
-+ * or finalized by av_bsf_list_finalize().
-+ *
-+ * @return Pointer to @ref AVBSFList on success, NULL in case of failure
-+ */
-+AVBSFList *av_bsf_list_alloc(void);
-+
-+/**
-+ * Free list of bitstream filters.
-+ *
-+ * @param lst Pointer to pointer returned by av_bsf_list_alloc()
-+ */
-+void av_bsf_list_free(AVBSFList **lst);
-+
-+/**
-+ * Append bitstream filter to the list of bitstream filters.
-+ *
-+ * @param lst List to append to
-+ * @param bsf Filter context to be appended
-+ *
-+ * @return >=0 on success, negative AVERROR in case of failure
-+ */
-+int av_bsf_list_append(AVBSFList *lst, AVBSFContext *bsf);
-+
-+/**
-+ * Construct new bitstream filter context given it's name and options
-+ * and append it to the list of bitstream filters.
-+ *
-+ * @param lst List to append to
-+ * @param bsf_name Name of the bitstream filter
-+ * @param options Options for the bitstream filter, can be set to NULL
-+ *
-+ * @return >=0 on success, negative AVERROR in case of failure
-+ */
-+int av_bsf_list_append2(AVBSFList *lst, const char * bsf_name, AVDictionary **options);
-+/**
-+ * Finalize list of bitstream filters.
-+ *
-+ * This function will transform @ref AVBSFList to single @ref AVBSFContext,
-+ * so the whole chain of bitstream filters can be treated as single filter
-+ * freshly allocated by av_bsf_alloc().
-+ * If the call is successful, @ref AVBSFList structure is freed and lst
-+ * will be set to NULL. In case of failure, caller is responsible for
-+ * freeing the structure by av_bsf_list_free()
-+ *
-+ * @param lst Filter list structure to be transformed
-+ * @param[out] bsf Pointer to be set to newly created @ref AVBSFContext structure
-+ * representing the chain of bitstream filters
-+ *
-+ * @return >=0 on success, negative AVERROR in case of failure
-+ */
-+int av_bsf_list_finalize(AVBSFList **lst, AVBSFContext **bsf);
-+
-+/**
-+ * Parse string describing list of bitstream filters and create single
-+ * @ref AVBSFContext describing the whole chain of bitstream filters.
-+ * Resulting @ref AVBSFContext can be treated as any other @ref AVBSFContext freshly
-+ * allocated by av_bsf_alloc().
-+ *
-+ * @param str String describing chain of bitstream filters in format
-+ * `bsf1[=opt1=val1:opt2=val2][,bsf2]`
-+ * @param[out] bsf Pointer to be set to newly created @ref AVBSFContext structure
-+ * representing the chain of bitstream filters
-+ *
-+ * @return >=0 on success, negative AVERROR in case of failure
-+ */
-+int av_bsf_list_parse_str(const char *str, AVBSFContext **bsf);
-+
-+/**
-+ * Get null/pass-through bitstream filter.
-+ *
-+ * @param[out] bsf Pointer to be set to new instance of pass-through bitstream filter
-+ *
-+ * @return
-+ */
-+int av_bsf_get_null_filter(AVBSFContext **bsf);
-+
-+/* memory */
-+
-+/**
-+ * Same behaviour av_fast_malloc but the buffer has additional
-+ * AV_INPUT_BUFFER_PADDING_SIZE at the end which will always be 0.
-+ *
-+ * In addition the whole buffer will initially and after resizes
-+ * be 0-initialized so that no uninitialized data will ever appear.
-+ */
-+void av_fast_padded_malloc(void *ptr, unsigned int *size, size_t min_size);
-+
-+/**
-+ * Same behaviour av_fast_padded_malloc except that buffer will always
-+ * be 0-initialized after call.
-+ */
-+void av_fast_padded_mallocz(void *ptr, unsigned int *size, size_t min_size);
-+
-+/**
-+ * Encode extradata length to a buffer. Used by xiph codecs.
-+ *
-+ * @param s buffer to write to; must be at least (v/255+1) bytes long
-+ * @param v size of extradata in bytes
-+ * @return number of bytes written to the buffer.
-+ */
-+unsigned int av_xiphlacing(unsigned char *s, unsigned int v);
-+
-+#if FF_API_USER_VISIBLE_AVHWACCEL
-+/**
-+ * Register the hardware accelerator hwaccel.
-+ *
-+ * @deprecated This function doesn't do anything.
-+ */
-+attribute_deprecated
-+void av_register_hwaccel(AVHWAccel *hwaccel);
-+
-+/**
-+ * If hwaccel is NULL, returns the first registered hardware accelerator,
-+ * if hwaccel is non-NULL, returns the next registered hardware accelerator
-+ * after hwaccel, or NULL if hwaccel is the last one.
-+ *
-+ * @deprecated AVHWaccel structures contain no user-serviceable parts, so
-+ * this function should not be used.
-+ */
-+attribute_deprecated
-+AVHWAccel *av_hwaccel_next(const AVHWAccel *hwaccel);
-+#endif
-+
-+#if FF_API_LOCKMGR
-+/**
-+ * Lock operation used by lockmgr
-+ *
-+ * @deprecated Deprecated together with av_lockmgr_register().
-+ */
-+enum AVLockOp {
-+ AV_LOCK_CREATE, ///< Create a mutex
-+ AV_LOCK_OBTAIN, ///< Lock the mutex
-+ AV_LOCK_RELEASE, ///< Unlock the mutex
-+ AV_LOCK_DESTROY, ///< Free mutex resources
-+};
-+
-+/**
-+ * Register a user provided lock manager supporting the operations
-+ * specified by AVLockOp. The "mutex" argument to the function points
-+ * to a (void *) where the lockmgr should store/get a pointer to a user
-+ * allocated mutex. It is NULL upon AV_LOCK_CREATE and equal to the
-+ * value left by the last call for all other ops. If the lock manager is
-+ * unable to perform the op then it should leave the mutex in the same
-+ * state as when it was called and return a non-zero value. However,
-+ * when called with AV_LOCK_DESTROY the mutex will always be assumed to
-+ * have been successfully destroyed. If av_lockmgr_register succeeds
-+ * it will return a non-negative value, if it fails it will return a
-+ * negative value and destroy all mutex and unregister all callbacks.
-+ * av_lockmgr_register is not thread-safe, it must be called from a
-+ * single thread before any calls which make use of locking are used.
-+ *
-+ * @param cb User defined callback. av_lockmgr_register invokes calls
-+ * to this callback and the previously registered callback.
-+ * The callback will be used to create more than one mutex
-+ * each of which must be backed by its own underlying locking
-+ * mechanism (i.e. do not use a single static object to
-+ * implement your lock manager). If cb is set to NULL the
-+ * lockmgr will be unregistered.
-+ *
-+ * @deprecated This function does nothing, and always returns 0. Be sure to
-+ * build with thread support to get basic thread safety.
-+ */
-+attribute_deprecated
-+int av_lockmgr_register(int (*cb)(void **mutex, enum AVLockOp op));
-+#endif
-+
-+/**
-+ * Get the type of the given codec.
-+ */
-+enum AVMediaType avcodec_get_type(enum AVCodecID codec_id);
-+
-+/**
-+ * Get the name of a codec.
-+ * @return a static string identifying the codec; never NULL
-+ */
-+const char *avcodec_get_name(enum AVCodecID id);
-+
-+/**
-+ * @return a positive value if s is open (i.e. avcodec_open2() was called on it
-+ * with no corresponding avcodec_close()), 0 otherwise.
-+ */
-+int avcodec_is_open(AVCodecContext *s);
-+
-+/**
-+ * @return a non-zero number if codec is an encoder, zero otherwise
-+ */
-+int av_codec_is_encoder(const AVCodec *codec);
-+
-+/**
-+ * @return a non-zero number if codec is a decoder, zero otherwise
-+ */
-+int av_codec_is_decoder(const AVCodec *codec);
-+
-+/**
-+ * @return descriptor for given codec ID or NULL if no descriptor exists.
-+ */
-+const AVCodecDescriptor *avcodec_descriptor_get(enum AVCodecID id);
-+
-+/**
-+ * Iterate over all codec descriptors known to libavcodec.
-+ *
-+ * @param prev previous descriptor. NULL to get the first descriptor.
-+ *
-+ * @return next descriptor or NULL after the last descriptor
-+ */
-+const AVCodecDescriptor *avcodec_descriptor_next(const AVCodecDescriptor *prev);
-+
-+/**
-+ * @return codec descriptor with the given name or NULL if no such descriptor
-+ * exists.
-+ */
-+const AVCodecDescriptor *avcodec_descriptor_get_by_name(const char *name);
-+
-+/**
-+ * Allocate a CPB properties structure and initialize its fields to default
-+ * values.
-+ *
-+ * @param size if non-NULL, the size of the allocated struct will be written
-+ * here. This is useful for embedding it in side data.
-+ *
-+ * @return the newly allocated struct or NULL on failure
-+ */
-+AVCPBProperties *av_cpb_properties_alloc(size_t *size);
-+
-+/**
-+ * @}
-+ */
-+
-+#endif /* AVCODEC_AVCODEC_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavcodec/avfft.h
-@@ -0,0 +1,118 @@
-+/*
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+#ifndef AVCODEC_AVFFT_H
-+#define AVCODEC_AVFFT_H
-+
-+/**
-+ * @file
-+ * @ingroup lavc_fft
-+ * FFT functions
-+ */
-+
-+/**
-+ * @defgroup lavc_fft FFT functions
-+ * @ingroup lavc_misc
-+ *
-+ * @{
-+ */
-+
-+typedef float FFTSample;
-+
-+typedef struct FFTComplex {
-+ FFTSample re, im;
-+} FFTComplex;
-+
-+typedef struct FFTContext FFTContext;
-+
-+/**
-+ * Set up a complex FFT.
-+ * @param nbits log2 of the length of the input array
-+ * @param inverse if 0 perform the forward transform, if 1 perform the inverse
-+ */
-+FFTContext *av_fft_init(int nbits, int inverse);
-+
-+/**
-+ * Do the permutation needed BEFORE calling ff_fft_calc().
-+ */
-+void av_fft_permute(FFTContext *s, FFTComplex *z);
-+
-+/**
-+ * Do a complex FFT with the parameters defined in av_fft_init(). The
-+ * input data must be permuted before. No 1.0/sqrt(n) normalization is done.
-+ */
-+void av_fft_calc(FFTContext *s, FFTComplex *z);
-+
-+void av_fft_end(FFTContext *s);
-+
-+FFTContext *av_mdct_init(int nbits, int inverse, double scale);
-+void av_imdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input);
-+void av_imdct_half(FFTContext *s, FFTSample *output, const FFTSample *input);
-+void av_mdct_calc(FFTContext *s, FFTSample *output, const FFTSample *input);
-+void av_mdct_end(FFTContext *s);
-+
-+/* Real Discrete Fourier Transform */
-+
-+enum RDFTransformType {
-+ DFT_R2C,
-+ IDFT_C2R,
-+ IDFT_R2C,
-+ DFT_C2R,
-+};
-+
-+typedef struct RDFTContext RDFTContext;
-+
-+/**
-+ * Set up a real FFT.
-+ * @param nbits log2 of the length of the input array
-+ * @param trans the type of transform
-+ */
-+RDFTContext *av_rdft_init(int nbits, enum RDFTransformType trans);
-+void av_rdft_calc(RDFTContext *s, FFTSample *data);
-+void av_rdft_end(RDFTContext *s);
-+
-+/* Discrete Cosine Transform */
-+
-+typedef struct DCTContext DCTContext;
-+
-+enum DCTTransformType {
-+ DCT_II = 0,
-+ DCT_III,
-+ DCT_I,
-+ DST_I,
-+};
-+
-+/**
-+ * Set up DCT.
-+ *
-+ * @param nbits size of the input array:
-+ * (1 << nbits) for DCT-II, DCT-III and DST-I
-+ * (1 << nbits) + 1 for DCT-I
-+ * @param type the type of transform
-+ *
-+ * @note the first element of the input of DST-I is ignored
-+ */
-+DCTContext *av_dct_init(int nbits, enum DCTTransformType type);
-+void av_dct_calc(DCTContext *s, FFTSample *data);
-+void av_dct_end (DCTContext *s);
-+
-+/**
-+ * @}
-+ */
-+
-+#endif /* AVCODEC_AVFFT_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavcodec/vaapi.h
-@@ -0,0 +1,86 @@
-+/*
-+ * Video Acceleration API (shared data between FFmpeg and the video player)
-+ * HW decode acceleration for MPEG-2, MPEG-4, H.264 and VC-1
-+ *
-+ * Copyright (C) 2008-2009 Splitted-Desktop Systems
-+ *
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+#ifndef AVCODEC_VAAPI_H
-+#define AVCODEC_VAAPI_H
-+
-+/**
-+ * @file
-+ * @ingroup lavc_codec_hwaccel_vaapi
-+ * Public libavcodec VA API header.
-+ */
-+
-+#include <stdint.h>
-+#include "libavutil/attributes.h"
-+#include "version.h"
-+
-+#if FF_API_STRUCT_VAAPI_CONTEXT
-+
-+/**
-+ * @defgroup lavc_codec_hwaccel_vaapi VA API Decoding
-+ * @ingroup lavc_codec_hwaccel
-+ * @{
-+ */
-+
-+/**
-+ * This structure is used to share data between the FFmpeg library and
-+ * the client video application.
-+ * This shall be zero-allocated and available as
-+ * AVCodecContext.hwaccel_context. All user members can be set once
-+ * during initialization or through each AVCodecContext.get_buffer()
-+ * function call. In any case, they must be valid prior to calling
-+ * decoding functions.
-+ *
-+ * Deprecated: use AVCodecContext.hw_frames_ctx instead.
-+ */
-+struct attribute_deprecated vaapi_context {
-+ /**
-+ * Window system dependent data
-+ *
-+ * - encoding: unused
-+ * - decoding: Set by user
-+ */
-+ void *display;
-+
-+ /**
-+ * Configuration ID
-+ *
-+ * - encoding: unused
-+ * - decoding: Set by user
-+ */
-+ uint32_t config_id;
-+
-+ /**
-+ * Context ID (video decode pipeline)
-+ *
-+ * - encoding: unused
-+ * - decoding: Set by user
-+ */
-+ uint32_t context_id;
-+};
-+
-+/* @} */
-+
-+#endif /* FF_API_STRUCT_VAAPI_CONTEXT */
-+
-+#endif /* AVCODEC_VAAPI_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavcodec/vdpau.h
-@@ -0,0 +1,176 @@
-+/*
-+ * The Video Decode and Presentation API for UNIX (VDPAU) is used for
-+ * hardware-accelerated decoding of MPEG-1/2, H.264 and VC-1.
-+ *
-+ * Copyright (C) 2008 NVIDIA
-+ *
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+#ifndef AVCODEC_VDPAU_H
-+#define AVCODEC_VDPAU_H
-+
-+/**
-+ * @file
-+ * @ingroup lavc_codec_hwaccel_vdpau
-+ * Public libavcodec VDPAU header.
-+ */
-+
-+
-+/**
-+ * @defgroup lavc_codec_hwaccel_vdpau VDPAU Decoder and Renderer
-+ * @ingroup lavc_codec_hwaccel
-+ *
-+ * VDPAU hardware acceleration has two modules
-+ * - VDPAU decoding
-+ * - VDPAU presentation
-+ *
-+ * The VDPAU decoding module parses all headers using FFmpeg
-+ * parsing mechanisms and uses VDPAU for the actual decoding.
-+ *
-+ * As per the current implementation, the actual decoding
-+ * and rendering (API calls) are done as part of the VDPAU
-+ * presentation (vo_vdpau.c) module.
-+ *
-+ * @{
-+ */
-+
-+#include <vdpau/vdpau.h>
-+
-+#include "libavutil/avconfig.h"
-+#include "libavutil/attributes.h"
-+
-+#include "avcodec.h"
-+#include "version.h"
-+
-+struct AVCodecContext;
-+struct AVFrame;
-+
-+typedef int (*AVVDPAU_Render2)(struct AVCodecContext *, struct AVFrame *,
-+ const VdpPictureInfo *, uint32_t,
-+ const VdpBitstreamBuffer *);
-+
-+/**
-+ * This structure is used to share data between the libavcodec library and
-+ * the client video application.
-+ * The user shall allocate the structure via the av_alloc_vdpau_hwaccel
-+ * function and make it available as
-+ * AVCodecContext.hwaccel_context. Members can be set by the user once
-+ * during initialization or through each AVCodecContext.get_buffer()
-+ * function call. In any case, they must be valid prior to calling
-+ * decoding functions.
-+ *
-+ * The size of this structure is not a part of the public ABI and must not
-+ * be used outside of libavcodec. Use av_vdpau_alloc_context() to allocate an
-+ * AVVDPAUContext.
-+ */
-+typedef struct AVVDPAUContext {
-+ /**
-+ * VDPAU decoder handle
-+ *
-+ * Set by user.
-+ */
-+ VdpDecoder decoder;
-+
-+ /**
-+ * VDPAU decoder render callback
-+ *
-+ * Set by the user.
-+ */
-+ VdpDecoderRender *render;
-+
-+ AVVDPAU_Render2 render2;
-+} AVVDPAUContext;
-+
-+/**
-+ * @brief allocation function for AVVDPAUContext
-+ *
-+ * Allows extending the struct without breaking API/ABI
-+ */
-+AVVDPAUContext *av_alloc_vdpaucontext(void);
-+
-+AVVDPAU_Render2 av_vdpau_hwaccel_get_render2(const AVVDPAUContext *);
-+void av_vdpau_hwaccel_set_render2(AVVDPAUContext *, AVVDPAU_Render2);
-+
-+/**
-+ * Associate a VDPAU device with a codec context for hardware acceleration.
-+ * This function is meant to be called from the get_format() codec callback,
-+ * or earlier. It can also be called after avcodec_flush_buffers() to change
-+ * the underlying VDPAU device mid-stream (e.g. to recover from non-transparent
-+ * display preemption).
-+ *
-+ * @note get_format() must return AV_PIX_FMT_VDPAU if this function completes
-+ * successfully.
-+ *
-+ * @param avctx decoding context whose get_format() callback is invoked
-+ * @param device VDPAU device handle to use for hardware acceleration
-+ * @param get_proc_address VDPAU device driver
-+ * @param flags zero of more OR'd AV_HWACCEL_FLAG_* flags
-+ *
-+ * @return 0 on success, an AVERROR code on failure.
-+ */
-+int av_vdpau_bind_context(AVCodecContext *avctx, VdpDevice device,
-+ VdpGetProcAddress *get_proc_address, unsigned flags);
-+
-+/**
-+ * Gets the parameters to create an adequate VDPAU video surface for the codec
-+ * context using VDPAU hardware decoding acceleration.
-+ *
-+ * @note Behavior is undefined if the context was not successfully bound to a
-+ * VDPAU device using av_vdpau_bind_context().
-+ *
-+ * @param avctx the codec context being used for decoding the stream
-+ * @param type storage space for the VDPAU video surface chroma type
-+ * (or NULL to ignore)
-+ * @param width storage space for the VDPAU video surface pixel width
-+ * (or NULL to ignore)
-+ * @param height storage space for the VDPAU video surface pixel height
-+ * (or NULL to ignore)
-+ *
-+ * @return 0 on success, a negative AVERROR code on failure.
-+ */
-+int av_vdpau_get_surface_parameters(AVCodecContext *avctx, VdpChromaType *type,
-+ uint32_t *width, uint32_t *height);
-+
-+/**
-+ * Allocate an AVVDPAUContext.
-+ *
-+ * @return Newly-allocated AVVDPAUContext or NULL on failure.
-+ */
-+AVVDPAUContext *av_vdpau_alloc_context(void);
-+
-+#if FF_API_VDPAU_PROFILE
-+/**
-+ * Get a decoder profile that should be used for initializing a VDPAU decoder.
-+ * Should be called from the AVCodecContext.get_format() callback.
-+ *
-+ * @deprecated Use av_vdpau_bind_context() instead.
-+ *
-+ * @param avctx the codec context being used for decoding the stream
-+ * @param profile a pointer into which the result will be written on success.
-+ * The contents of profile are undefined if this function returns
-+ * an error.
-+ *
-+ * @return 0 on success (non-negative), a negative AVERROR on failure.
-+ */
-+attribute_deprecated
-+int av_vdpau_get_profile(AVCodecContext *avctx, VdpDecoderProfile *profile);
-+#endif
-+
-+/* @}*/
-+
-+#endif /* AVCODEC_VDPAU_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavcodec/version.h
-@@ -0,0 +1,137 @@
-+/*
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+#ifndef AVCODEC_VERSION_H
-+#define AVCODEC_VERSION_H
-+
-+/**
-+ * @file
-+ * @ingroup libavc
-+ * Libavcodec version macros.
-+ */
-+
-+#include "libavutil/version.h"
-+
-+#define LIBAVCODEC_VERSION_MAJOR 58
-+#define LIBAVCODEC_VERSION_MINOR 18
-+#define LIBAVCODEC_VERSION_MICRO 100
-+
-+#define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
-+ LIBAVCODEC_VERSION_MINOR, \
-+ LIBAVCODEC_VERSION_MICRO)
-+#define LIBAVCODEC_VERSION AV_VERSION(LIBAVCODEC_VERSION_MAJOR, \
-+ LIBAVCODEC_VERSION_MINOR, \
-+ LIBAVCODEC_VERSION_MICRO)
-+#define LIBAVCODEC_BUILD LIBAVCODEC_VERSION_INT
-+
-+#define LIBAVCODEC_IDENT "Lavc" AV_STRINGIFY(LIBAVCODEC_VERSION)
-+
-+/**
-+ * FF_API_* defines may be placed below to indicate public API that will be
-+ * dropped at a future version bump. The defines themselves are not part of
-+ * the public API and may change, break or disappear at any time.
-+ *
-+ * @note, when bumping the major version it is recommended to manually
-+ * disable each FF_API_* in its own commit instead of disabling them all
-+ * at once through the bump. This improves the git bisect-ability of the change.
-+ */
-+
-+#ifndef FF_API_LOWRES
-+#define FF_API_LOWRES (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_DEBUG_MV
-+#define FF_API_DEBUG_MV (LIBAVCODEC_VERSION_MAJOR < 58)
-+#endif
-+#ifndef FF_API_AVCTX_TIMEBASE
-+#define FF_API_AVCTX_TIMEBASE (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_CODED_FRAME
-+#define FF_API_CODED_FRAME (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_SIDEDATA_ONLY_PKT
-+#define FF_API_SIDEDATA_ONLY_PKT (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_VDPAU_PROFILE
-+#define FF_API_VDPAU_PROFILE (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_CONVERGENCE_DURATION
-+#define FF_API_CONVERGENCE_DURATION (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_AVPICTURE
-+#define FF_API_AVPICTURE (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_AVPACKET_OLD_API
-+#define FF_API_AVPACKET_OLD_API (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_RTP_CALLBACK
-+#define FF_API_RTP_CALLBACK (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_VBV_DELAY
-+#define FF_API_VBV_DELAY (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_CODER_TYPE
-+#define FF_API_CODER_TYPE (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_STAT_BITS
-+#define FF_API_STAT_BITS (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_PRIVATE_OPT
-+#define FF_API_PRIVATE_OPT (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_ASS_TIMING
-+#define FF_API_ASS_TIMING (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_OLD_BSF
-+#define FF_API_OLD_BSF (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_COPY_CONTEXT
-+#define FF_API_COPY_CONTEXT (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_GET_CONTEXT_DEFAULTS
-+#define FF_API_GET_CONTEXT_DEFAULTS (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_NVENC_OLD_NAME
-+#define FF_API_NVENC_OLD_NAME (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_STRUCT_VAAPI_CONTEXT
-+#define FF_API_STRUCT_VAAPI_CONTEXT (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_MERGE_SD_API
-+#define FF_API_MERGE_SD_API (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_TAG_STRING
-+#define FF_API_TAG_STRING (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_GETCHROMA
-+#define FF_API_GETCHROMA (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_CODEC_GET_SET
-+#define FF_API_CODEC_GET_SET (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_USER_VISIBLE_AVHWACCEL
-+#define FF_API_USER_VISIBLE_AVHWACCEL (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_LOCKMGR
-+#define FF_API_LOCKMGR (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+#ifndef FF_API_NEXT
-+#define FF_API_NEXT (LIBAVCODEC_VERSION_MAJOR < 59)
-+#endif
-+
-+
-+#endif /* AVCODEC_VERSION_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/attributes.h
-@@ -0,0 +1,167 @@
-+/*
-+ * copyright (c) 2006 Michael Niedermayer <michaelni(a)gmx.at>
-+ *
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+/**
-+ * @file
-+ * Macro definitions for various function/variable attributes
-+ */
-+
-+#ifndef AVUTIL_ATTRIBUTES_H
-+#define AVUTIL_ATTRIBUTES_H
-+
-+#ifdef __GNUC__
-+# define AV_GCC_VERSION_AT_LEAST(x,y) (__GNUC__ > (x) || __GNUC__ == (x) && __GNUC_MINOR__ >= (y))
-+# define AV_GCC_VERSION_AT_MOST(x,y) (__GNUC__ < (x) || __GNUC__ == (x) && __GNUC_MINOR__ <= (y))
-+#else
-+# define AV_GCC_VERSION_AT_LEAST(x,y) 0
-+# define AV_GCC_VERSION_AT_MOST(x,y) 0
-+#endif
-+
-+#ifndef av_always_inline
-+#if AV_GCC_VERSION_AT_LEAST(3,1)
-+# define av_always_inline __attribute__((always_inline)) inline
-+#elif defined(_MSC_VER)
-+# define av_always_inline __forceinline
-+#else
-+# define av_always_inline inline
-+#endif
-+#endif
-+
-+#ifndef av_extern_inline
-+#if defined(__ICL) && __ICL >= 1210 || defined(__GNUC_STDC_INLINE__)
-+# define av_extern_inline extern inline
-+#else
-+# define av_extern_inline inline
-+#endif
-+#endif
-+
-+#if AV_GCC_VERSION_AT_LEAST(3,4)
-+# define av_warn_unused_result __attribute__((warn_unused_result))
-+#else
-+# define av_warn_unused_result
-+#endif
-+
-+#if AV_GCC_VERSION_AT_LEAST(3,1)
-+# define av_noinline __attribute__((noinline))
-+#elif defined(_MSC_VER)
-+# define av_noinline __declspec(noinline)
-+#else
-+# define av_noinline
-+#endif
-+
-+#if AV_GCC_VERSION_AT_LEAST(3,1) || defined(__clang__)
-+# define av_pure __attribute__((pure))
-+#else
-+# define av_pure
-+#endif
-+
-+#if AV_GCC_VERSION_AT_LEAST(2,6) || defined(__clang__)
-+# define av_const __attribute__((const))
-+#else
-+# define av_const
-+#endif
-+
-+#if AV_GCC_VERSION_AT_LEAST(4,3) || defined(__clang__)
-+# define av_cold __attribute__((cold))
-+#else
-+# define av_cold
-+#endif
-+
-+#if AV_GCC_VERSION_AT_LEAST(4,1) && !defined(__llvm__)
-+# define av_flatten __attribute__((flatten))
-+#else
-+# define av_flatten
-+#endif
-+
-+#if AV_GCC_VERSION_AT_LEAST(3,1)
-+# define attribute_deprecated __attribute__((deprecated))
-+#elif defined(_MSC_VER)
-+# define attribute_deprecated __declspec(deprecated)
-+#else
-+# define attribute_deprecated
-+#endif
-+
-+/**
-+ * Disable warnings about deprecated features
-+ * This is useful for sections of code kept for backward compatibility and
-+ * scheduled for removal.
-+ */
-+#ifndef AV_NOWARN_DEPRECATED
-+#if AV_GCC_VERSION_AT_LEAST(4,6)
-+# define AV_NOWARN_DEPRECATED(code) \
-+ _Pragma("GCC diagnostic push") \
-+ _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \
-+ code \
-+ _Pragma("GCC diagnostic pop")
-+#elif defined(_MSC_VER)
-+# define AV_NOWARN_DEPRECATED(code) \
-+ __pragma(warning(push)) \
-+ __pragma(warning(disable : 4996)) \
-+ code; \
-+ __pragma(warning(pop))
-+#else
-+# define AV_NOWARN_DEPRECATED(code) code
-+#endif
-+#endif
-+
-+#if defined(__GNUC__) || defined(__clang__)
-+# define av_unused __attribute__((unused))
-+#else
-+# define av_unused
-+#endif
-+
-+/**
-+ * Mark a variable as used and prevent the compiler from optimizing it
-+ * away. This is useful for variables accessed only from inline
-+ * assembler without the compiler being aware.
-+ */
-+#if AV_GCC_VERSION_AT_LEAST(3,1) || defined(__clang__)
-+# define av_used __attribute__((used))
-+#else
-+# define av_used
-+#endif
-+
-+#if AV_GCC_VERSION_AT_LEAST(3,3) || defined(__clang__)
-+# define av_alias __attribute__((may_alias))
-+#else
-+# define av_alias
-+#endif
-+
-+#if (defined(__GNUC__) || defined(__clang__)) && !defined(__INTEL_COMPILER)
-+# define av_uninit(x) x=x
-+#else
-+# define av_uninit(x) x
-+#endif
-+
-+#if defined(__GNUC__) || defined(__clang__)
-+# define av_builtin_constant_p __builtin_constant_p
-+# define av_printf_format(fmtpos, attrpos) __attribute__((__format__(__printf__, fmtpos, attrpos)))
-+#else
-+# define av_builtin_constant_p(x) 0
-+# define av_printf_format(fmtpos, attrpos)
-+#endif
-+
-+#if AV_GCC_VERSION_AT_LEAST(2,5) || defined(__clang__)
-+# define av_noreturn __attribute__((noreturn))
-+#else
-+# define av_noreturn
-+#endif
-+
-+#endif /* AVUTIL_ATTRIBUTES_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/avconfig.h
-@@ -0,0 +1,6 @@
-+/* Generated by ffmpeg configure */
-+#ifndef AVUTIL_AVCONFIG_H
-+#define AVUTIL_AVCONFIG_H
-+#define AV_HAVE_BIGENDIAN 0
-+#define AV_HAVE_FAST_UNALIGNED 1
-+#endif /* AVUTIL_AVCONFIG_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/avutil.h
-@@ -0,0 +1,365 @@
-+/*
-+ * copyright (c) 2006 Michael Niedermayer <michaelni(a)gmx.at>
-+ *
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+#ifndef AVUTIL_AVUTIL_H
-+#define AVUTIL_AVUTIL_H
-+
-+/**
-+ * @file
-+ * @ingroup lavu
-+ * Convenience header that includes @ref lavu "libavutil"'s core.
-+ */
-+
-+/**
-+ * @mainpage
-+ *
-+ * @section ffmpeg_intro Introduction
-+ *
-+ * This document describes the usage of the different libraries
-+ * provided by FFmpeg.
-+ *
-+ * @li @ref libavc "libavcodec" encoding/decoding library
-+ * @li @ref lavfi "libavfilter" graph-based frame editing library
-+ * @li @ref libavf "libavformat" I/O and muxing/demuxing library
-+ * @li @ref lavd "libavdevice" special devices muxing/demuxing library
-+ * @li @ref lavu "libavutil" common utility library
-+ * @li @ref lswr "libswresample" audio resampling, format conversion and mixing
-+ * @li @ref lpp "libpostproc" post processing library
-+ * @li @ref libsws "libswscale" color conversion and scaling library
-+ *
-+ * @section ffmpeg_versioning Versioning and compatibility
-+ *
-+ * Each of the FFmpeg libraries contains a version.h header, which defines a
-+ * major, minor and micro version number with the
-+ * <em>LIBRARYNAME_VERSION_{MAJOR,MINOR,MICRO}</em> macros. The major version
-+ * number is incremented with backward incompatible changes - e.g. removing
-+ * parts of the public API, reordering public struct members, etc. The minor
-+ * version number is incremented for backward compatible API changes or major
-+ * new features - e.g. adding a new public function or a new decoder. The micro
-+ * version number is incremented for smaller changes that a calling program
-+ * might still want to check for - e.g. changing behavior in a previously
-+ * unspecified situation.
-+ *
-+ * FFmpeg guarantees backward API and ABI compatibility for each library as long
-+ * as its major version number is unchanged. This means that no public symbols
-+ * will be removed or renamed. Types and names of the public struct members and
-+ * values of public macros and enums will remain the same (unless they were
-+ * explicitly declared as not part of the public API). Documented behavior will
-+ * not change.
-+ *
-+ * In other words, any correct program that works with a given FFmpeg snapshot
-+ * should work just as well without any changes with any later snapshot with the
-+ * same major versions. This applies to both rebuilding the program against new
-+ * FFmpeg versions or to replacing the dynamic FFmpeg libraries that a program
-+ * links against.
-+ *
-+ * However, new public symbols may be added and new members may be appended to
-+ * public structs whose size is not part of public ABI (most public structs in
-+ * FFmpeg). New macros and enum values may be added. Behavior in undocumented
-+ * situations may change slightly (and be documented). All those are accompanied
-+ * by an entry in doc/APIchanges and incrementing either the minor or micro
-+ * version number.
-+ */
-+
-+/**
-+ * @defgroup lavu libavutil
-+ * Common code shared across all FFmpeg libraries.
-+ *
-+ * @note
-+ * libavutil is designed to be modular. In most cases, in order to use the
-+ * functions provided by one component of libavutil you must explicitly include
-+ * the specific header containing that feature. If you are only using
-+ * media-related components, you could simply include libavutil/avutil.h, which
-+ * brings in most of the "core" components.
-+ *
-+ * @{
-+ *
-+ * @defgroup lavu_crypto Crypto and Hashing
-+ *
-+ * @{
-+ * @}
-+ *
-+ * @defgroup lavu_math Mathematics
-+ * @{
-+ *
-+ * @}
-+ *
-+ * @defgroup lavu_string String Manipulation
-+ *
-+ * @{
-+ *
-+ * @}
-+ *
-+ * @defgroup lavu_mem Memory Management
-+ *
-+ * @{
-+ *
-+ * @}
-+ *
-+ * @defgroup lavu_data Data Structures
-+ * @{
-+ *
-+ * @}
-+ *
-+ * @defgroup lavu_video Video related
-+ *
-+ * @{
-+ *
-+ * @}
-+ *
-+ * @defgroup lavu_audio Audio related
-+ *
-+ * @{
-+ *
-+ * @}
-+ *
-+ * @defgroup lavu_error Error Codes
-+ *
-+ * @{
-+ *
-+ * @}
-+ *
-+ * @defgroup lavu_log Logging Facility
-+ *
-+ * @{
-+ *
-+ * @}
-+ *
-+ * @defgroup lavu_misc Other
-+ *
-+ * @{
-+ *
-+ * @defgroup preproc_misc Preprocessor String Macros
-+ *
-+ * @{
-+ *
-+ * @}
-+ *
-+ * @defgroup version_utils Library Version Macros
-+ *
-+ * @{
-+ *
-+ * @}
-+ */
-+
-+
-+/**
-+ * @addtogroup lavu_ver
-+ * @{
-+ */
-+
-+/**
-+ * Return the LIBAVUTIL_VERSION_INT constant.
-+ */
-+unsigned avutil_version(void);
-+
-+/**
-+ * Return an informative version string. This usually is the actual release
-+ * version number or a git commit description. This string has no fixed format
-+ * and can change any time. It should never be parsed by code.
-+ */
-+const char *av_version_info(void);
-+
-+/**
-+ * Return the libavutil build-time configuration.
-+ */
-+const char *avutil_configuration(void);
-+
-+/**
-+ * Return the libavutil license.
-+ */
-+const char *avutil_license(void);
-+
-+/**
-+ * @}
-+ */
-+
-+/**
-+ * @addtogroup lavu_media Media Type
-+ * @brief Media Type
-+ */
-+
-+enum AVMediaType {
-+ AVMEDIA_TYPE_UNKNOWN = -1, ///< Usually treated as AVMEDIA_TYPE_DATA
-+ AVMEDIA_TYPE_VIDEO,
-+ AVMEDIA_TYPE_AUDIO,
-+ AVMEDIA_TYPE_DATA, ///< Opaque data information usually continuous
-+ AVMEDIA_TYPE_SUBTITLE,
-+ AVMEDIA_TYPE_ATTACHMENT, ///< Opaque data information usually sparse
-+ AVMEDIA_TYPE_NB
-+};
-+
-+/**
-+ * Return a string describing the media_type enum, NULL if media_type
-+ * is unknown.
-+ */
-+const char *av_get_media_type_string(enum AVMediaType media_type);
-+
-+/**
-+ * @defgroup lavu_const Constants
-+ * @{
-+ *
-+ * @defgroup lavu_enc Encoding specific
-+ *
-+ * @note those definition should move to avcodec
-+ * @{
-+ */
-+
-+#define FF_LAMBDA_SHIFT 7
-+#define FF_LAMBDA_SCALE (1<<FF_LAMBDA_SHIFT)
-+#define FF_QP2LAMBDA 118 ///< factor to convert from H.263 QP to lambda
-+#define FF_LAMBDA_MAX (256*128-1)
-+
-+#define FF_QUALITY_SCALE FF_LAMBDA_SCALE //FIXME maybe remove
-+
-+/**
-+ * @}
-+ * @defgroup lavu_time Timestamp specific
-+ *
-+ * FFmpeg internal timebase and timestamp definitions
-+ *
-+ * @{
-+ */
-+
-+/**
-+ * @brief Undefined timestamp value
-+ *
-+ * Usually reported by demuxer that work on containers that do not provide
-+ * either pts or dts.
-+ */
-+
-+#define AV_NOPTS_VALUE ((int64_t)UINT64_C(0x8000000000000000))
-+
-+/**
-+ * Internal time base represented as integer
-+ */
-+
-+#define AV_TIME_BASE 1000000
-+
-+/**
-+ * Internal time base represented as fractional value
-+ */
-+
-+#define AV_TIME_BASE_Q (AVRational){1, AV_TIME_BASE}
-+
-+/**
-+ * @}
-+ * @}
-+ * @defgroup lavu_picture Image related
-+ *
-+ * AVPicture types, pixel formats and basic image planes manipulation.
-+ *
-+ * @{
-+ */
-+
-+enum AVPictureType {
-+ AV_PICTURE_TYPE_NONE = 0, ///< Undefined
-+ AV_PICTURE_TYPE_I, ///< Intra
-+ AV_PICTURE_TYPE_P, ///< Predicted
-+ AV_PICTURE_TYPE_B, ///< Bi-dir predicted
-+ AV_PICTURE_TYPE_S, ///< S(GMC)-VOP MPEG-4
-+ AV_PICTURE_TYPE_SI, ///< Switching Intra
-+ AV_PICTURE_TYPE_SP, ///< Switching Predicted
-+ AV_PICTURE_TYPE_BI, ///< BI type
-+};
-+
-+/**
-+ * Return a single letter to describe the given picture type
-+ * pict_type.
-+ *
-+ * @param[in] pict_type the picture type @return a single character
-+ * representing the picture type, '?' if pict_type is unknown
-+ */
-+char av_get_picture_type_char(enum AVPictureType pict_type);
-+
-+/**
-+ * @}
-+ */
-+
-+#include "common.h"
-+#include "error.h"
-+#include "rational.h"
-+#include "version.h"
-+#include "macros.h"
-+#include "mathematics.h"
-+#include "log.h"
-+#include "pixfmt.h"
-+
-+/**
-+ * Return x default pointer in case p is NULL.
-+ */
-+static inline void *av_x_if_null(const void *p, const void *x)
-+{
-+ return (void *)(intptr_t)(p ? p : x);
-+}
-+
-+/**
-+ * Compute the length of an integer list.
-+ *
-+ * @param elsize size in bytes of each list element (only 1, 2, 4 or 8)
-+ * @param term list terminator (usually 0 or -1)
-+ * @param list pointer to the list
-+ * @return length of the list, in elements, not counting the terminator
-+ */
-+unsigned av_int_list_length_for_size(unsigned elsize,
-+ const void *list, uint64_t term) av_pure;
-+
-+/**
-+ * Compute the length of an integer list.
-+ *
-+ * @param term list terminator (usually 0 or -1)
-+ * @param list pointer to the list
-+ * @return length of the list, in elements, not counting the terminator
-+ */
-+#define av_int_list_length(list, term) \
-+ av_int_list_length_for_size(sizeof(*(list)), list, term)
-+
-+/**
-+ * Open a file using a UTF-8 filename.
-+ * The API of this function matches POSIX fopen(), errors are returned through
-+ * errno.
-+ */
-+FILE *av_fopen_utf8(const char *path, const char *mode);
-+
-+/**
-+ * Return the fractional representation of the internal time base.
-+ */
-+AVRational av_get_time_base_q(void);
-+
-+#define AV_FOURCC_MAX_STRING_SIZE 32
-+
-+#define av_fourcc2str(fourcc) av_fourcc_make_string((char[AV_FOURCC_MAX_STRING_SIZE]){0}, fourcc)
-+
-+/**
-+ * Fill the provided buffer with a string containing a FourCC (four-character
-+ * code) representation.
-+ *
-+ * @param buf a buffer with size in bytes of at least AV_FOURCC_MAX_STRING_SIZE
-+ * @param fourcc the fourcc to represent
-+ * @return the buffer in input
-+ */
-+char *av_fourcc_make_string(char *buf, uint32_t fourcc);
-+
-+/**
-+ * @}
-+ * @}
-+ */
-+
-+#endif /* AVUTIL_AVUTIL_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/buffer.h
-@@ -0,0 +1,291 @@
-+/*
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+/**
-+ * @file
-+ * @ingroup lavu_buffer
-+ * refcounted data buffer API
-+ */
-+
-+#ifndef AVUTIL_BUFFER_H
-+#define AVUTIL_BUFFER_H
-+
-+#include <stdint.h>
-+
-+/**
-+ * @defgroup lavu_buffer AVBuffer
-+ * @ingroup lavu_data
-+ *
-+ * @{
-+ * AVBuffer is an API for reference-counted data buffers.
-+ *
-+ * There are two core objects in this API -- AVBuffer and AVBufferRef. AVBuffer
-+ * represents the data buffer itself; it is opaque and not meant to be accessed
-+ * by the caller directly, but only through AVBufferRef. However, the caller may
-+ * e.g. compare two AVBuffer pointers to check whether two different references
-+ * are describing the same data buffer. AVBufferRef represents a single
-+ * reference to an AVBuffer and it is the object that may be manipulated by the
-+ * caller directly.
-+ *
-+ * There are two functions provided for creating a new AVBuffer with a single
-+ * reference -- av_buffer_alloc() to just allocate a new buffer, and
-+ * av_buffer_create() to wrap an existing array in an AVBuffer. From an existing
-+ * reference, additional references may be created with av_buffer_ref().
-+ * Use av_buffer_unref() to free a reference (this will automatically free the
-+ * data once all the references are freed).
-+ *
-+ * The convention throughout this API and the rest of FFmpeg is such that the
-+ * buffer is considered writable if there exists only one reference to it (and
-+ * it has not been marked as read-only). The av_buffer_is_writable() function is
-+ * provided to check whether this is true and av_buffer_make_writable() will
-+ * automatically create a new writable buffer when necessary.
-+ * Of course nothing prevents the calling code from violating this convention,
-+ * however that is safe only when all the existing references are under its
-+ * control.
-+ *
-+ * @note Referencing and unreferencing the buffers is thread-safe and thus
-+ * may be done from multiple threads simultaneously without any need for
-+ * additional locking.
-+ *
-+ * @note Two different references to the same buffer can point to different
-+ * parts of the buffer (i.e. their AVBufferRef.data will not be equal).
-+ */
-+
-+/**
-+ * A reference counted buffer type. It is opaque and is meant to be used through
-+ * references (AVBufferRef).
-+ */
-+typedef struct AVBuffer AVBuffer;
-+
-+/**
-+ * A reference to a data buffer.
-+ *
-+ * The size of this struct is not a part of the public ABI and it is not meant
-+ * to be allocated directly.
-+ */
-+typedef struct AVBufferRef {
-+ AVBuffer *buffer;
-+
-+ /**
-+ * The data buffer. It is considered writable if and only if
-+ * this is the only reference to the buffer, in which case
-+ * av_buffer_is_writable() returns 1.
-+ */
-+ uint8_t *data;
-+ /**
-+ * Size of data in bytes.
-+ */
-+ int size;
-+} AVBufferRef;
-+
-+/**
-+ * Allocate an AVBuffer of the given size using av_malloc().
-+ *
-+ * @return an AVBufferRef of given size or NULL when out of memory
-+ */
-+AVBufferRef *av_buffer_alloc(int size);
-+
-+/**
-+ * Same as av_buffer_alloc(), except the returned buffer will be initialized
-+ * to zero.
-+ */
-+AVBufferRef *av_buffer_allocz(int size);
-+
-+/**
-+ * Always treat the buffer as read-only, even when it has only one
-+ * reference.
-+ */
-+#define AV_BUFFER_FLAG_READONLY (1 << 0)
-+
-+/**
-+ * Create an AVBuffer from an existing array.
-+ *
-+ * If this function is successful, data is owned by the AVBuffer. The caller may
-+ * only access data through the returned AVBufferRef and references derived from
-+ * it.
-+ * If this function fails, data is left untouched.
-+ * @param data data array
-+ * @param size size of data in bytes
-+ * @param free a callback for freeing this buffer's data
-+ * @param opaque parameter to be got for processing or passed to free
-+ * @param flags a combination of AV_BUFFER_FLAG_*
-+ *
-+ * @return an AVBufferRef referring to data on success, NULL on failure.
-+ */
-+AVBufferRef *av_buffer_create(uint8_t *data, int size,
-+ void (*free)(void *opaque, uint8_t *data),
-+ void *opaque, int flags);
-+
-+/**
-+ * Default free callback, which calls av_free() on the buffer data.
-+ * This function is meant to be passed to av_buffer_create(), not called
-+ * directly.
-+ */
-+void av_buffer_default_free(void *opaque, uint8_t *data);
-+
-+/**
-+ * Create a new reference to an AVBuffer.
-+ *
-+ * @return a new AVBufferRef referring to the same AVBuffer as buf or NULL on
-+ * failure.
-+ */
-+AVBufferRef *av_buffer_ref(AVBufferRef *buf);
-+
-+/**
-+ * Free a given reference and automatically free the buffer if there are no more
-+ * references to it.
-+ *
-+ * @param buf the reference to be freed. The pointer is set to NULL on return.
-+ */
-+void av_buffer_unref(AVBufferRef **buf);
-+
-+/**
-+ * @return 1 if the caller may write to the data referred to by buf (which is
-+ * true if and only if buf is the only reference to the underlying AVBuffer).
-+ * Return 0 otherwise.
-+ * A positive answer is valid until av_buffer_ref() is called on buf.
-+ */
-+int av_buffer_is_writable(const AVBufferRef *buf);
-+
-+/**
-+ * @return the opaque parameter set by av_buffer_create.
-+ */
-+void *av_buffer_get_opaque(const AVBufferRef *buf);
-+
-+int av_buffer_get_ref_count(const AVBufferRef *buf);
-+
-+/**
-+ * Create a writable reference from a given buffer reference, avoiding data copy
-+ * if possible.
-+ *
-+ * @param buf buffer reference to make writable. On success, buf is either left
-+ * untouched, or it is unreferenced and a new writable AVBufferRef is
-+ * written in its place. On failure, buf is left untouched.
-+ * @return 0 on success, a negative AVERROR on failure.
-+ */
-+int av_buffer_make_writable(AVBufferRef **buf);
-+
-+/**
-+ * Reallocate a given buffer.
-+ *
-+ * @param buf a buffer reference to reallocate. On success, buf will be
-+ * unreferenced and a new reference with the required size will be
-+ * written in its place. On failure buf will be left untouched. *buf
-+ * may be NULL, then a new buffer is allocated.
-+ * @param size required new buffer size.
-+ * @return 0 on success, a negative AVERROR on failure.
-+ *
-+ * @note the buffer is actually reallocated with av_realloc() only if it was
-+ * initially allocated through av_buffer_realloc(NULL) and there is only one
-+ * reference to it (i.e. the one passed to this function). In all other cases
-+ * a new buffer is allocated and the data is copied.
-+ */
-+int av_buffer_realloc(AVBufferRef **buf, int size);
-+
-+/**
-+ * @}
-+ */
-+
-+/**
-+ * @defgroup lavu_bufferpool AVBufferPool
-+ * @ingroup lavu_data
-+ *
-+ * @{
-+ * AVBufferPool is an API for a lock-free thread-safe pool of AVBuffers.
-+ *
-+ * Frequently allocating and freeing large buffers may be slow. AVBufferPool is
-+ * meant to solve this in cases when the caller needs a set of buffers of the
-+ * same size (the most obvious use case being buffers for raw video or audio
-+ * frames).
-+ *
-+ * At the beginning, the user must call av_buffer_pool_init() to create the
-+ * buffer pool. Then whenever a buffer is needed, call av_buffer_pool_get() to
-+ * get a reference to a new buffer, similar to av_buffer_alloc(). This new
-+ * reference works in all aspects the same way as the one created by
-+ * av_buffer_alloc(). However, when the last reference to this buffer is
-+ * unreferenced, it is returned to the pool instead of being freed and will be
-+ * reused for subsequent av_buffer_pool_get() calls.
-+ *
-+ * When the caller is done with the pool and no longer needs to allocate any new
-+ * buffers, av_buffer_pool_uninit() must be called to mark the pool as freeable.
-+ * Once all the buffers are released, it will automatically be freed.
-+ *
-+ * Allocating and releasing buffers with this API is thread-safe as long as
-+ * either the default alloc callback is used, or the user-supplied one is
-+ * thread-safe.
-+ */
-+
-+/**
-+ * The buffer pool. This structure is opaque and not meant to be accessed
-+ * directly. It is allocated with av_buffer_pool_init() and freed with
-+ * av_buffer_pool_uninit().
-+ */
-+typedef struct AVBufferPool AVBufferPool;
-+
-+/**
-+ * Allocate and initialize a buffer pool.
-+ *
-+ * @param size size of each buffer in this pool
-+ * @param alloc a function that will be used to allocate new buffers when the
-+ * pool is empty. May be NULL, then the default allocator will be used
-+ * (av_buffer_alloc()).
-+ * @return newly created buffer pool on success, NULL on error.
-+ */
-+AVBufferPool *av_buffer_pool_init(int size, AVBufferRef* (*alloc)(int size));
-+
-+/**
-+ * Allocate and initialize a buffer pool with a more complex allocator.
-+ *
-+ * @param size size of each buffer in this pool
-+ * @param opaque arbitrary user data used by the allocator
-+ * @param alloc a function that will be used to allocate new buffers when the
-+ * pool is empty.
-+ * @param pool_free a function that will be called immediately before the pool
-+ * is freed. I.e. after av_buffer_pool_uninit() is called
-+ * by the caller and all the frames are returned to the pool
-+ * and freed. It is intended to uninitialize the user opaque
-+ * data.
-+ * @return newly created buffer pool on success, NULL on error.
-+ */
-+AVBufferPool *av_buffer_pool_init2(int size, void *opaque,
-+ AVBufferRef* (*alloc)(void *opaque, int size),
-+ void (*pool_free)(void *opaque));
-+
-+/**
-+ * Mark the pool as being available for freeing. It will actually be freed only
-+ * once all the allocated buffers associated with the pool are released. Thus it
-+ * is safe to call this function while some of the allocated buffers are still
-+ * in use.
-+ *
-+ * @param pool pointer to the pool to be freed. It will be set to NULL.
-+ */
-+void av_buffer_pool_uninit(AVBufferPool **pool);
-+
-+/**
-+ * Allocate a new AVBuffer, reusing an old buffer from the pool when available.
-+ * This function may be called simultaneously from multiple threads.
-+ *
-+ * @return a reference to the new buffer on success, NULL on error.
-+ */
-+AVBufferRef *av_buffer_pool_get(AVBufferPool *pool);
-+
-+/**
-+ * @}
-+ */
-+
-+#endif /* AVUTIL_BUFFER_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/channel_layout.h
-@@ -0,0 +1,232 @@
-+/*
-+ * Copyright (c) 2006 Michael Niedermayer <michaelni(a)gmx.at>
-+ * Copyright (c) 2008 Peter Ross
-+ *
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+#ifndef AVUTIL_CHANNEL_LAYOUT_H
-+#define AVUTIL_CHANNEL_LAYOUT_H
-+
-+#include <stdint.h>
-+
-+/**
-+ * @file
-+ * audio channel layout utility functions
-+ */
-+
-+/**
-+ * @addtogroup lavu_audio
-+ * @{
-+ */
-+
-+/**
-+ * @defgroup channel_masks Audio channel masks
-+ *
-+ * A channel layout is a 64-bits integer with a bit set for every channel.
-+ * The number of bits set must be equal to the number of channels.
-+ * The value 0 means that the channel layout is not known.
-+ * @note this data structure is not powerful enough to handle channels
-+ * combinations that have the same channel multiple times, such as
-+ * dual-mono.
-+ *
-+ * @{
-+ */
-+#define AV_CH_FRONT_LEFT 0x00000001
-+#define AV_CH_FRONT_RIGHT 0x00000002
-+#define AV_CH_FRONT_CENTER 0x00000004
-+#define AV_CH_LOW_FREQUENCY 0x00000008
-+#define AV_CH_BACK_LEFT 0x00000010
-+#define AV_CH_BACK_RIGHT 0x00000020
-+#define AV_CH_FRONT_LEFT_OF_CENTER 0x00000040
-+#define AV_CH_FRONT_RIGHT_OF_CENTER 0x00000080
-+#define AV_CH_BACK_CENTER 0x00000100
-+#define AV_CH_SIDE_LEFT 0x00000200
-+#define AV_CH_SIDE_RIGHT 0x00000400
-+#define AV_CH_TOP_CENTER 0x00000800
-+#define AV_CH_TOP_FRONT_LEFT 0x00001000
-+#define AV_CH_TOP_FRONT_CENTER 0x00002000
-+#define AV_CH_TOP_FRONT_RIGHT 0x00004000
-+#define AV_CH_TOP_BACK_LEFT 0x00008000
-+#define AV_CH_TOP_BACK_CENTER 0x00010000
-+#define AV_CH_TOP_BACK_RIGHT 0x00020000
-+#define AV_CH_STEREO_LEFT 0x20000000 ///< Stereo downmix.
-+#define AV_CH_STEREO_RIGHT 0x40000000 ///< See AV_CH_STEREO_LEFT.
-+#define AV_CH_WIDE_LEFT 0x0000000080000000ULL
-+#define AV_CH_WIDE_RIGHT 0x0000000100000000ULL
-+#define AV_CH_SURROUND_DIRECT_LEFT 0x0000000200000000ULL
-+#define AV_CH_SURROUND_DIRECT_RIGHT 0x0000000400000000ULL
-+#define AV_CH_LOW_FREQUENCY_2 0x0000000800000000ULL
-+
-+/** Channel mask value used for AVCodecContext.request_channel_layout
-+ to indicate that the user requests the channel order of the decoder output
-+ to be the native codec channel order. */
-+#define AV_CH_LAYOUT_NATIVE 0x8000000000000000ULL
-+
-+/**
-+ * @}
-+ * @defgroup channel_mask_c Audio channel layouts
-+ * @{
-+ * */
-+#define AV_CH_LAYOUT_MONO (AV_CH_FRONT_CENTER)
-+#define AV_CH_LAYOUT_STEREO (AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT)
-+#define AV_CH_LAYOUT_2POINT1 (AV_CH_LAYOUT_STEREO|AV_CH_LOW_FREQUENCY)
-+#define AV_CH_LAYOUT_2_1 (AV_CH_LAYOUT_STEREO|AV_CH_BACK_CENTER)
-+#define AV_CH_LAYOUT_SURROUND (AV_CH_LAYOUT_STEREO|AV_CH_FRONT_CENTER)
-+#define AV_CH_LAYOUT_3POINT1 (AV_CH_LAYOUT_SURROUND|AV_CH_LOW_FREQUENCY)
-+#define AV_CH_LAYOUT_4POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_CENTER)
-+#define AV_CH_LAYOUT_4POINT1 (AV_CH_LAYOUT_4POINT0|AV_CH_LOW_FREQUENCY)
-+#define AV_CH_LAYOUT_2_2 (AV_CH_LAYOUT_STEREO|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT)
-+#define AV_CH_LAYOUT_QUAD (AV_CH_LAYOUT_STEREO|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT)
-+#define AV_CH_LAYOUT_5POINT0 (AV_CH_LAYOUT_SURROUND|AV_CH_SIDE_LEFT|AV_CH_SIDE_RIGHT)
-+#define AV_CH_LAYOUT_5POINT1 (AV_CH_LAYOUT_5POINT0|AV_CH_LOW_FREQUENCY)
-+#define AV_CH_LAYOUT_5POINT0_BACK (AV_CH_LAYOUT_SURROUND|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT)
-+#define AV_CH_LAYOUT_5POINT1_BACK (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_LOW_FREQUENCY)
-+#define AV_CH_LAYOUT_6POINT0 (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_CENTER)
-+#define AV_CH_LAYOUT_6POINT0_FRONT (AV_CH_LAYOUT_2_2|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER)
-+#define AV_CH_LAYOUT_HEXAGONAL (AV_CH_LAYOUT_5POINT0_BACK|AV_CH_BACK_CENTER)
-+#define AV_CH_LAYOUT_6POINT1 (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_CENTER)
-+#define AV_CH_LAYOUT_6POINT1_BACK (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_BACK_CENTER)
-+#define AV_CH_LAYOUT_6POINT1_FRONT (AV_CH_LAYOUT_6POINT0_FRONT|AV_CH_LOW_FREQUENCY)
-+#define AV_CH_LAYOUT_7POINT0 (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT)
-+#define AV_CH_LAYOUT_7POINT0_FRONT (AV_CH_LAYOUT_5POINT0|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER)
-+#define AV_CH_LAYOUT_7POINT1 (AV_CH_LAYOUT_5POINT1|AV_CH_BACK_LEFT|AV_CH_BACK_RIGHT)
-+#define AV_CH_LAYOUT_7POINT1_WIDE (AV_CH_LAYOUT_5POINT1|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER)
-+#define AV_CH_LAYOUT_7POINT1_WIDE_BACK (AV_CH_LAYOUT_5POINT1_BACK|AV_CH_FRONT_LEFT_OF_CENTER|AV_CH_FRONT_RIGHT_OF_CENTER)
-+#define AV_CH_LAYOUT_OCTAGONAL (AV_CH_LAYOUT_5POINT0|AV_CH_BACK_LEFT|AV_CH_BACK_CENTER|AV_CH_BACK_RIGHT)
-+#define AV_CH_LAYOUT_HEXADECAGONAL (AV_CH_LAYOUT_OCTAGONAL|AV_CH_WIDE_LEFT|AV_CH_WIDE_RIGHT|AV_CH_TOP_BACK_LEFT|AV_CH_TOP_BACK_RIGHT|AV_CH_TOP_BACK_CENTER|AV_CH_TOP_FRONT_CENTER|AV_CH_TOP_FRONT_LEFT|AV_CH_TOP_FRONT_RIGHT)
-+#define AV_CH_LAYOUT_STEREO_DOWNMIX (AV_CH_STEREO_LEFT|AV_CH_STEREO_RIGHT)
-+
-+enum AVMatrixEncoding {
-+ AV_MATRIX_ENCODING_NONE,
-+ AV_MATRIX_ENCODING_DOLBY,
-+ AV_MATRIX_ENCODING_DPLII,
-+ AV_MATRIX_ENCODING_DPLIIX,
-+ AV_MATRIX_ENCODING_DPLIIZ,
-+ AV_MATRIX_ENCODING_DOLBYEX,
-+ AV_MATRIX_ENCODING_DOLBYHEADPHONE,
-+ AV_MATRIX_ENCODING_NB
-+};
-+
-+/**
-+ * Return a channel layout id that matches name, or 0 if no match is found.
-+ *
-+ * name can be one or several of the following notations,
-+ * separated by '+' or '|':
-+ * - the name of an usual channel layout (mono, stereo, 4.0, quad, 5.0,
-+ * 5.0(side), 5.1, 5.1(side), 7.1, 7.1(wide), downmix);
-+ * - the name of a single channel (FL, FR, FC, LFE, BL, BR, FLC, FRC, BC,
-+ * SL, SR, TC, TFL, TFC, TFR, TBL, TBC, TBR, DL, DR);
-+ * - a number of channels, in decimal, followed by 'c', yielding
-+ * the default channel layout for that number of channels (@see
-+ * av_get_default_channel_layout);
-+ * - a channel layout mask, in hexadecimal starting with "0x" (see the
-+ * AV_CH_* macros).
-+ *
-+ * Example: "stereo+FC" = "2c+FC" = "2c+1c" = "0x7"
-+ */
-+uint64_t av_get_channel_layout(const char *name);
-+
-+/**
-+ * Return a channel layout and the number of channels based on the specified name.
-+ *
-+ * This function is similar to (@see av_get_channel_layout), but can also parse
-+ * unknown channel layout specifications.
-+ *
-+ * @param[in] name channel layout specification string
-+ * @param[out] channel_layout parsed channel layout (0 if unknown)
-+ * @param[out] nb_channels number of channels
-+ *
-+ * @return 0 on success, AVERROR(EINVAL) if the parsing fails.
-+ */
-+int av_get_extended_channel_layout(const char *name, uint64_t* channel_layout, int* nb_channels);
-+
-+/**
-+ * Return a description of a channel layout.
-+ * If nb_channels is <= 0, it is guessed from the channel_layout.
-+ *
-+ * @param buf put here the string containing the channel layout
-+ * @param buf_size size in bytes of the buffer
-+ */
-+void av_get_channel_layout_string(char *buf, int buf_size, int nb_channels, uint64_t channel_layout);
-+
-+struct AVBPrint;
-+/**
-+ * Append a description of a channel layout to a bprint buffer.
-+ */
-+void av_bprint_channel_layout(struct AVBPrint *bp, int nb_channels, uint64_t channel_layout);
-+
-+/**
-+ * Return the number of channels in the channel layout.
-+ */
-+int av_get_channel_layout_nb_channels(uint64_t channel_layout);
-+
-+/**
-+ * Return default channel layout for a given number of channels.
-+ */
-+int64_t av_get_default_channel_layout(int nb_channels);
-+
-+/**
-+ * Get the index of a channel in channel_layout.
-+ *
-+ * @param channel a channel layout describing exactly one channel which must be
-+ * present in channel_layout.
-+ *
-+ * @return index of channel in channel_layout on success, a negative AVERROR
-+ * on error.
-+ */
-+int av_get_channel_layout_channel_index(uint64_t channel_layout,
-+ uint64_t channel);
-+
-+/**
-+ * Get the channel with the given index in channel_layout.
-+ */
-+uint64_t av_channel_layout_extract_channel(uint64_t channel_layout, int index);
-+
-+/**
-+ * Get the name of a given channel.
-+ *
-+ * @return channel name on success, NULL on error.
-+ */
-+const char *av_get_channel_name(uint64_t channel);
-+
-+/**
-+ * Get the description of a given channel.
-+ *
-+ * @param channel a channel layout with a single channel
-+ * @return channel description on success, NULL on error
-+ */
-+const char *av_get_channel_description(uint64_t channel);
-+
-+/**
-+ * Get the value and name of a standard channel layout.
-+ *
-+ * @param[in] index index in an internal list, starting at 0
-+ * @param[out] layout channel layout mask
-+ * @param[out] name name of the layout
-+ * @return 0 if the layout exists,
-+ * <0 if index is beyond the limits
-+ */
-+int av_get_standard_channel_layout(unsigned index, uint64_t *layout,
-+ const char **name);
-+
-+/**
-+ * @}
-+ * @}
-+ */
-+
-+#endif /* AVUTIL_CHANNEL_LAYOUT_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/common.h
-@@ -0,0 +1,560 @@
-+/*
-+ * copyright (c) 2006 Michael Niedermayer <michaelni(a)gmx.at>
-+ *
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+/**
-+ * @file
-+ * common internal and external API header
-+ */
-+
-+#ifndef AVUTIL_COMMON_H
-+#define AVUTIL_COMMON_H
-+
-+#if defined(__cplusplus) && !defined(__STDC_CONSTANT_MACROS) && !defined(UINT64_C)
-+#error missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS
-+#endif
-+
-+#include <errno.h>
-+#include <inttypes.h>
-+#include <limits.h>
-+#include <math.h>
-+#include <stdint.h>
-+#include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
-+
-+#include "attributes.h"
-+#include "macros.h"
-+#include "version.h"
-+#include "libavutil/avconfig.h"
-+
-+#if AV_HAVE_BIGENDIAN
-+# define AV_NE(be, le) (be)
-+#else
-+# define AV_NE(be, le) (le)
-+#endif
-+
-+//rounded division & shift
-+#define RSHIFT(a,b) ((a) > 0 ? ((a) + ((1<<(b))>>1))>>(b) : ((a) + ((1<<(b))>>1)-1)>>(b))
-+/* assume b>0 */
-+#define ROUNDED_DIV(a,b) (((a)>0 ? (a) + ((b)>>1) : (a) - ((b)>>1))/(b))
-+/* Fast a/(1<<b) rounded toward +inf. Assume a>=0 and b>=0 */
-+#define AV_CEIL_RSHIFT(a,b) (!av_builtin_constant_p(b) ? -((-(a)) >> (b)) \
-+ : ((a) + (1<<(b)) - 1) >> (b))
-+/* Backwards compat. */
-+#define FF_CEIL_RSHIFT AV_CEIL_RSHIFT
-+
-+#define FFUDIV(a,b) (((a)>0 ?(a):(a)-(b)+1) / (b))
-+#define FFUMOD(a,b) ((a)-(b)*FFUDIV(a,b))
-+
-+/**
-+ * Absolute value, Note, INT_MIN / INT64_MIN result in undefined behavior as they
-+ * are not representable as absolute values of their type. This is the same
-+ * as with *abs()
-+ * @see FFNABS()
-+ */
-+#define FFABS(a) ((a) >= 0 ? (a) : (-(a)))
-+#define FFSIGN(a) ((a) > 0 ? 1 : -1)
-+
-+/**
-+ * Negative Absolute value.
-+ * this works for all integers of all types.
-+ * As with many macros, this evaluates its argument twice, it thus must not have
-+ * a sideeffect, that is FFNABS(x++) has undefined behavior.
-+ */
-+#define FFNABS(a) ((a) <= 0 ? (a) : (-(a)))
-+
-+/**
-+ * Comparator.
-+ * For two numerical expressions x and y, gives 1 if x > y, -1 if x < y, and 0
-+ * if x == y. This is useful for instance in a qsort comparator callback.
-+ * Furthermore, compilers are able to optimize this to branchless code, and
-+ * there is no risk of overflow with signed types.
-+ * As with many macros, this evaluates its argument multiple times, it thus
-+ * must not have a side-effect.
-+ */
-+#define FFDIFFSIGN(x,y) (((x)>(y)) - ((x)<(y)))
-+
-+#define FFMAX(a,b) ((a) > (b) ? (a) : (b))
-+#define FFMAX3(a,b,c) FFMAX(FFMAX(a,b),c)
-+#define FFMIN(a,b) ((a) > (b) ? (b) : (a))
-+#define FFMIN3(a,b,c) FFMIN(FFMIN(a,b),c)
-+
-+#define FFSWAP(type,a,b) do{type SWAP_tmp= b; b= a; a= SWAP_tmp;}while(0)
-+#define FF_ARRAY_ELEMS(a) (sizeof(a) / sizeof((a)[0]))
-+
-+/* misc math functions */
-+
-+#ifdef HAVE_AV_CONFIG_H
-+# include "config.h"
-+# include "intmath.h"
-+#endif
-+
-+/* Pull in unguarded fallback defines at the end of this file. */
-+#include "common.h"
-+
-+#ifndef av_log2
-+av_const int av_log2(unsigned v);
-+#endif
-+
-+#ifndef av_log2_16bit
-+av_const int av_log2_16bit(unsigned v);
-+#endif
-+
-+/**
-+ * Clip a signed integer value into the amin-amax range.
-+ * @param a value to clip
-+ * @param amin minimum value of the clip range
-+ * @param amax maximum value of the clip range
-+ * @return clipped value
-+ */
-+static av_always_inline av_const int av_clip_c(int a, int amin, int amax)
-+{
-+#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2
-+ if (amin > amax) abort();
-+#endif
-+ if (a < amin) return amin;
-+ else if (a > amax) return amax;
-+ else return a;
-+}
-+
-+/**
-+ * Clip a signed 64bit integer value into the amin-amax range.
-+ * @param a value to clip
-+ * @param amin minimum value of the clip range
-+ * @param amax maximum value of the clip range
-+ * @return clipped value
-+ */
-+static av_always_inline av_const int64_t av_clip64_c(int64_t a, int64_t amin, int64_t amax)
-+{
-+#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2
-+ if (amin > amax) abort();
-+#endif
-+ if (a < amin) return amin;
-+ else if (a > amax) return amax;
-+ else return a;
-+}
-+
-+/**
-+ * Clip a signed integer value into the 0-255 range.
-+ * @param a value to clip
-+ * @return clipped value
-+ */
-+static av_always_inline av_const uint8_t av_clip_uint8_c(int a)
-+{
-+ if (a&(~0xFF)) return (~a)>>31;
-+ else return a;
-+}
-+
-+/**
-+ * Clip a signed integer value into the -128,127 range.
-+ * @param a value to clip
-+ * @return clipped value
-+ */
-+static av_always_inline av_const int8_t av_clip_int8_c(int a)
-+{
-+ if ((a+0x80U) & ~0xFF) return (a>>31) ^ 0x7F;
-+ else return a;
-+}
-+
-+/**
-+ * Clip a signed integer value into the 0-65535 range.
-+ * @param a value to clip
-+ * @return clipped value
-+ */
-+static av_always_inline av_const uint16_t av_clip_uint16_c(int a)
-+{
-+ if (a&(~0xFFFF)) return (~a)>>31;
-+ else return a;
-+}
-+
-+/**
-+ * Clip a signed integer value into the -32768,32767 range.
-+ * @param a value to clip
-+ * @return clipped value
-+ */
-+static av_always_inline av_const int16_t av_clip_int16_c(int a)
-+{
-+ if ((a+0x8000U) & ~0xFFFF) return (a>>31) ^ 0x7FFF;
-+ else return a;
-+}
-+
-+/**
-+ * Clip a signed 64-bit integer value into the -2147483648,2147483647 range.
-+ * @param a value to clip
-+ * @return clipped value
-+ */
-+static av_always_inline av_const int32_t av_clipl_int32_c(int64_t a)
-+{
-+ if ((a+0x80000000u) & ~UINT64_C(0xFFFFFFFF)) return (int32_t)((a>>63) ^ 0x7FFFFFFF);
-+ else return (int32_t)a;
-+}
-+
-+/**
-+ * Clip a signed integer into the -(2^p),(2^p-1) range.
-+ * @param a value to clip
-+ * @param p bit position to clip at
-+ * @return clipped value
-+ */
-+static av_always_inline av_const int av_clip_intp2_c(int a, int p)
-+{
-+ if (((unsigned)a + (1 << p)) & ~((2 << p) - 1))
-+ return (a >> 31) ^ ((1 << p) - 1);
-+ else
-+ return a;
-+}
-+
-+/**
-+ * Clip a signed integer to an unsigned power of two range.
-+ * @param a value to clip
-+ * @param p bit position to clip at
-+ * @return clipped value
-+ */
-+static av_always_inline av_const unsigned av_clip_uintp2_c(int a, int p)
-+{
-+ if (a & ~((1<<p) - 1)) return -a >> 31 & ((1<<p) - 1);
-+ else return a;
-+}
-+
-+/**
-+ * Clear high bits from an unsigned integer starting with specific bit position
-+ * @param a value to clip
-+ * @param p bit position to clip at
-+ * @return clipped value
-+ */
-+static av_always_inline av_const unsigned av_mod_uintp2_c(unsigned a, unsigned p)
-+{
-+ return a & ((1 << p) - 1);
-+}
-+
-+/**
-+ * Add two signed 32-bit values with saturation.
-+ *
-+ * @param a one value
-+ * @param b another value
-+ * @return sum with signed saturation
-+ */
-+static av_always_inline int av_sat_add32_c(int a, int b)
-+{
-+ return av_clipl_int32((int64_t)a + b);
-+}
-+
-+/**
-+ * Add a doubled value to another value with saturation at both stages.
-+ *
-+ * @param a first value
-+ * @param b value doubled and added to a
-+ * @return sum sat(a + sat(2*b)) with signed saturation
-+ */
-+static av_always_inline int av_sat_dadd32_c(int a, int b)
-+{
-+ return av_sat_add32(a, av_sat_add32(b, b));
-+}
-+
-+/**
-+ * Subtract two signed 32-bit values with saturation.
-+ *
-+ * @param a one value
-+ * @param b another value
-+ * @return difference with signed saturation
-+ */
-+static av_always_inline int av_sat_sub32_c(int a, int b)
-+{
-+ return av_clipl_int32((int64_t)a - b);
-+}
-+
-+/**
-+ * Subtract a doubled value from another value with saturation at both stages.
-+ *
-+ * @param a first value
-+ * @param b value doubled and subtracted from a
-+ * @return difference sat(a - sat(2*b)) with signed saturation
-+ */
-+static av_always_inline int av_sat_dsub32_c(int a, int b)
-+{
-+ return av_sat_sub32(a, av_sat_add32(b, b));
-+}
-+
-+/**
-+ * Clip a float value into the amin-amax range.
-+ * @param a value to clip
-+ * @param amin minimum value of the clip range
-+ * @param amax maximum value of the clip range
-+ * @return clipped value
-+ */
-+static av_always_inline av_const float av_clipf_c(float a, float amin, float amax)
-+{
-+#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2
-+ if (amin > amax) abort();
-+#endif
-+ if (a < amin) return amin;
-+ else if (a > amax) return amax;
-+ else return a;
-+}
-+
-+/**
-+ * Clip a double value into the amin-amax range.
-+ * @param a value to clip
-+ * @param amin minimum value of the clip range
-+ * @param amax maximum value of the clip range
-+ * @return clipped value
-+ */
-+static av_always_inline av_const double av_clipd_c(double a, double amin, double amax)
-+{
-+#if defined(HAVE_AV_CONFIG_H) && defined(ASSERT_LEVEL) && ASSERT_LEVEL >= 2
-+ if (amin > amax) abort();
-+#endif
-+ if (a < amin) return amin;
-+ else if (a > amax) return amax;
-+ else return a;
-+}
-+
-+/** Compute ceil(log2(x)).
-+ * @param x value used to compute ceil(log2(x))
-+ * @return computed ceiling of log2(x)
-+ */
-+static av_always_inline av_const int av_ceil_log2_c(int x)
-+{
-+ return av_log2((x - 1) << 1);
-+}
-+
-+/**
-+ * Count number of bits set to one in x
-+ * @param x value to count bits of
-+ * @return the number of bits set to one in x
-+ */
-+static av_always_inline av_const int av_popcount_c(uint32_t x)
-+{
-+ x -= (x >> 1) & 0x55555555;
-+ x = (x & 0x33333333) + ((x >> 2) & 0x33333333);
-+ x = (x + (x >> 4)) & 0x0F0F0F0F;
-+ x += x >> 8;
-+ return (x + (x >> 16)) & 0x3F;
-+}
-+
-+/**
-+ * Count number of bits set to one in x
-+ * @param x value to count bits of
-+ * @return the number of bits set to one in x
-+ */
-+static av_always_inline av_const int av_popcount64_c(uint64_t x)
-+{
-+ return av_popcount((uint32_t)x) + av_popcount((uint32_t)(x >> 32));
-+}
-+
-+static av_always_inline av_const int av_parity_c(uint32_t v)
-+{
-+ return av_popcount(v) & 1;
-+}
-+
-+#define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24))
-+#define MKBETAG(a,b,c,d) ((d) | ((c) << 8) | ((b) << 16) | ((unsigned)(a) << 24))
-+
-+/**
-+ * Convert a UTF-8 character (up to 4 bytes) to its 32-bit UCS-4 encoded form.
-+ *
-+ * @param val Output value, must be an lvalue of type uint32_t.
-+ * @param GET_BYTE Expression reading one byte from the input.
-+ * Evaluated up to 7 times (4 for the currently
-+ * assigned Unicode range). With a memory buffer
-+ * input, this could be *ptr++.
-+ * @param ERROR Expression to be evaluated on invalid input,
-+ * typically a goto statement.
-+ *
-+ * @warning ERROR should not contain a loop control statement which
-+ * could interact with the internal while loop, and should force an
-+ * exit from the macro code (e.g. through a goto or a return) in order
-+ * to prevent undefined results.
-+ */
-+#define GET_UTF8(val, GET_BYTE, ERROR)\
-+ val= (GET_BYTE);\
-+ {\
-+ uint32_t top = (val & 128) >> 1;\
-+ if ((val & 0xc0) == 0x80 || val >= 0xFE)\
-+ ERROR\
-+ while (val & top) {\
-+ int tmp= (GET_BYTE) - 128;\
-+ if(tmp>>6)\
-+ ERROR\
-+ val= (val<<6) + tmp;\
-+ top <<= 5;\
-+ }\
-+ val &= (top << 1) - 1;\
-+ }
-+
-+/**
-+ * Convert a UTF-16 character (2 or 4 bytes) to its 32-bit UCS-4 encoded form.
-+ *
-+ * @param val Output value, must be an lvalue of type uint32_t.
-+ * @param GET_16BIT Expression returning two bytes of UTF-16 data converted
-+ * to native byte order. Evaluated one or two times.
-+ * @param ERROR Expression to be evaluated on invalid input,
-+ * typically a goto statement.
-+ */
-+#define GET_UTF16(val, GET_16BIT, ERROR)\
-+ val = GET_16BIT;\
-+ {\
-+ unsigned int hi = val - 0xD800;\
-+ if (hi < 0x800) {\
-+ val = GET_16BIT - 0xDC00;\
-+ if (val > 0x3FFU || hi > 0x3FFU)\
-+ ERROR\
-+ val += (hi<<10) + 0x10000;\
-+ }\
-+ }\
-+
-+/**
-+ * @def PUT_UTF8(val, tmp, PUT_BYTE)
-+ * Convert a 32-bit Unicode character to its UTF-8 encoded form (up to 4 bytes long).
-+ * @param val is an input-only argument and should be of type uint32_t. It holds
-+ * a UCS-4 encoded Unicode character that is to be converted to UTF-8. If
-+ * val is given as a function it is executed only once.
-+ * @param tmp is a temporary variable and should be of type uint8_t. It
-+ * represents an intermediate value during conversion that is to be
-+ * output by PUT_BYTE.
-+ * @param PUT_BYTE writes the converted UTF-8 bytes to any proper destination.
-+ * It could be a function or a statement, and uses tmp as the input byte.
-+ * For example, PUT_BYTE could be "*output++ = tmp;" PUT_BYTE will be
-+ * executed up to 4 times for values in the valid UTF-8 range and up to
-+ * 7 times in the general case, depending on the length of the converted
-+ * Unicode character.
-+ */
-+#define PUT_UTF8(val, tmp, PUT_BYTE)\
-+ {\
-+ int bytes, shift;\
-+ uint32_t in = val;\
-+ if (in < 0x80) {\
-+ tmp = in;\
-+ PUT_BYTE\
-+ } else {\
-+ bytes = (av_log2(in) + 4) / 5;\
-+ shift = (bytes - 1) * 6;\
-+ tmp = (256 - (256 >> bytes)) | (in >> shift);\
-+ PUT_BYTE\
-+ while (shift >= 6) {\
-+ shift -= 6;\
-+ tmp = 0x80 | ((in >> shift) & 0x3f);\
-+ PUT_BYTE\
-+ }\
-+ }\
-+ }
-+
-+/**
-+ * @def PUT_UTF16(val, tmp, PUT_16BIT)
-+ * Convert a 32-bit Unicode character to its UTF-16 encoded form (2 or 4 bytes).
-+ * @param val is an input-only argument and should be of type uint32_t. It holds
-+ * a UCS-4 encoded Unicode character that is to be converted to UTF-16. If
-+ * val is given as a function it is executed only once.
-+ * @param tmp is a temporary variable and should be of type uint16_t. It
-+ * represents an intermediate value during conversion that is to be
-+ * output by PUT_16BIT.
-+ * @param PUT_16BIT writes the converted UTF-16 data to any proper destination
-+ * in desired endianness. It could be a function or a statement, and uses tmp
-+ * as the input byte. For example, PUT_BYTE could be "*output++ = tmp;"
-+ * PUT_BYTE will be executed 1 or 2 times depending on input character.
-+ */
-+#define PUT_UTF16(val, tmp, PUT_16BIT)\
-+ {\
-+ uint32_t in = val;\
-+ if (in < 0x10000) {\
-+ tmp = in;\
-+ PUT_16BIT\
-+ } else {\
-+ tmp = 0xD800 | ((in - 0x10000) >> 10);\
-+ PUT_16BIT\
-+ tmp = 0xDC00 | ((in - 0x10000) & 0x3FF);\
-+ PUT_16BIT\
-+ }\
-+ }\
-+
-+
-+
-+#include "mem.h"
-+
-+#ifdef HAVE_AV_CONFIG_H
-+# include "internal.h"
-+#endif /* HAVE_AV_CONFIG_H */
-+
-+#endif /* AVUTIL_COMMON_H */
-+
-+/*
-+ * The following definitions are outside the multiple inclusion guard
-+ * to ensure they are immediately available in intmath.h.
-+ */
-+
-+#ifndef av_ceil_log2
-+# define av_ceil_log2 av_ceil_log2_c
-+#endif
-+#ifndef av_clip
-+# define av_clip av_clip_c
-+#endif
-+#ifndef av_clip64
-+# define av_clip64 av_clip64_c
-+#endif
-+#ifndef av_clip_uint8
-+# define av_clip_uint8 av_clip_uint8_c
-+#endif
-+#ifndef av_clip_int8
-+# define av_clip_int8 av_clip_int8_c
-+#endif
-+#ifndef av_clip_uint16
-+# define av_clip_uint16 av_clip_uint16_c
-+#endif
-+#ifndef av_clip_int16
-+# define av_clip_int16 av_clip_int16_c
-+#endif
-+#ifndef av_clipl_int32
-+# define av_clipl_int32 av_clipl_int32_c
-+#endif
-+#ifndef av_clip_intp2
-+# define av_clip_intp2 av_clip_intp2_c
-+#endif
-+#ifndef av_clip_uintp2
-+# define av_clip_uintp2 av_clip_uintp2_c
-+#endif
-+#ifndef av_mod_uintp2
-+# define av_mod_uintp2 av_mod_uintp2_c
-+#endif
-+#ifndef av_sat_add32
-+# define av_sat_add32 av_sat_add32_c
-+#endif
-+#ifndef av_sat_dadd32
-+# define av_sat_dadd32 av_sat_dadd32_c
-+#endif
-+#ifndef av_sat_sub32
-+# define av_sat_sub32 av_sat_sub32_c
-+#endif
-+#ifndef av_sat_dsub32
-+# define av_sat_dsub32 av_sat_dsub32_c
-+#endif
-+#ifndef av_clipf
-+# define av_clipf av_clipf_c
-+#endif
-+#ifndef av_clipd
-+# define av_clipd av_clipd_c
-+#endif
-+#ifndef av_popcount
-+# define av_popcount av_popcount_c
-+#endif
-+#ifndef av_popcount64
-+# define av_popcount64 av_popcount64_c
-+#endif
-+#ifndef av_parity
-+# define av_parity av_parity_c
-+#endif
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/cpu.h
-@@ -0,0 +1,130 @@
-+/*
-+ * Copyright (c) 2000, 2001, 2002 Fabrice Bellard
-+ *
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+#ifndef AVUTIL_CPU_H
-+#define AVUTIL_CPU_H
-+
-+#include <stddef.h>
-+
-+#include "attributes.h"
-+
-+#define AV_CPU_FLAG_FORCE 0x80000000 /* force usage of selected flags (OR) */
-+
-+ /* lower 16 bits - CPU features */
-+#define AV_CPU_FLAG_MMX 0x0001 ///< standard MMX
-+#define AV_CPU_FLAG_MMXEXT 0x0002 ///< SSE integer functions or AMD MMX ext
-+#define AV_CPU_FLAG_MMX2 0x0002 ///< SSE integer functions or AMD MMX ext
-+#define AV_CPU_FLAG_3DNOW 0x0004 ///< AMD 3DNOW
-+#define AV_CPU_FLAG_SSE 0x0008 ///< SSE functions
-+#define AV_CPU_FLAG_SSE2 0x0010 ///< PIV SSE2 functions
-+#define AV_CPU_FLAG_SSE2SLOW 0x40000000 ///< SSE2 supported, but usually not faster
-+ ///< than regular MMX/SSE (e.g. Core1)
-+#define AV_CPU_FLAG_3DNOWEXT 0x0020 ///< AMD 3DNowExt
-+#define AV_CPU_FLAG_SSE3 0x0040 ///< Prescott SSE3 functions
-+#define AV_CPU_FLAG_SSE3SLOW 0x20000000 ///< SSE3 supported, but usually not faster
-+ ///< than regular MMX/SSE (e.g. Core1)
-+#define AV_CPU_FLAG_SSSE3 0x0080 ///< Conroe SSSE3 functions
-+#define AV_CPU_FLAG_SSSE3SLOW 0x4000000 ///< SSSE3 supported, but usually not faster
-+#define AV_CPU_FLAG_ATOM 0x10000000 ///< Atom processor, some SSSE3 instructions are slower
-+#define AV_CPU_FLAG_SSE4 0x0100 ///< Penryn SSE4.1 functions
-+#define AV_CPU_FLAG_SSE42 0x0200 ///< Nehalem SSE4.2 functions
-+#define AV_CPU_FLAG_AESNI 0x80000 ///< Advanced Encryption Standard functions
-+#define AV_CPU_FLAG_AVX 0x4000 ///< AVX functions: requires OS support even if YMM registers aren't used
-+#define AV_CPU_FLAG_AVXSLOW 0x8000000 ///< AVX supported, but slow when using YMM registers (e.g. Bulldozer)
-+#define AV_CPU_FLAG_XOP 0x0400 ///< Bulldozer XOP functions
-+#define AV_CPU_FLAG_FMA4 0x0800 ///< Bulldozer FMA4 functions
-+#define AV_CPU_FLAG_CMOV 0x1000 ///< supports cmov instruction
-+#define AV_CPU_FLAG_AVX2 0x8000 ///< AVX2 functions: requires OS support even if YMM registers aren't used
-+#define AV_CPU_FLAG_FMA3 0x10000 ///< Haswell FMA3 functions
-+#define AV_CPU_FLAG_BMI1 0x20000 ///< Bit Manipulation Instruction Set 1
-+#define AV_CPU_FLAG_BMI2 0x40000 ///< Bit Manipulation Instruction Set 2
-+#define AV_CPU_FLAG_AVX512 0x100000 ///< AVX-512 functions: requires OS support even if YMM/ZMM registers aren't used
-+
-+#define AV_CPU_FLAG_ALTIVEC 0x0001 ///< standard
-+#define AV_CPU_FLAG_VSX 0x0002 ///< ISA 2.06
-+#define AV_CPU_FLAG_POWER8 0x0004 ///< ISA 2.07
-+
-+#define AV_CPU_FLAG_ARMV5TE (1 << 0)
-+#define AV_CPU_FLAG_ARMV6 (1 << 1)
-+#define AV_CPU_FLAG_ARMV6T2 (1 << 2)
-+#define AV_CPU_FLAG_VFP (1 << 3)
-+#define AV_CPU_FLAG_VFPV3 (1 << 4)
-+#define AV_CPU_FLAG_NEON (1 << 5)
-+#define AV_CPU_FLAG_ARMV8 (1 << 6)
-+#define AV_CPU_FLAG_VFP_VM (1 << 7) ///< VFPv2 vector mode, deprecated in ARMv7-A and unavailable in various CPUs implementations
-+#define AV_CPU_FLAG_SETEND (1 <<16)
-+
-+/**
-+ * Return the flags which specify extensions supported by the CPU.
-+ * The returned value is affected by av_force_cpu_flags() if that was used
-+ * before. So av_get_cpu_flags() can easily be used in an application to
-+ * detect the enabled cpu flags.
-+ */
-+int av_get_cpu_flags(void);
-+
-+/**
-+ * Disables cpu detection and forces the specified flags.
-+ * -1 is a special case that disables forcing of specific flags.
-+ */
-+void av_force_cpu_flags(int flags);
-+
-+/**
-+ * Set a mask on flags returned by av_get_cpu_flags().
-+ * This function is mainly useful for testing.
-+ * Please use av_force_cpu_flags() and av_get_cpu_flags() instead which are more flexible
-+ */
-+attribute_deprecated void av_set_cpu_flags_mask(int mask);
-+
-+/**
-+ * Parse CPU flags from a string.
-+ *
-+ * The returned flags contain the specified flags as well as related unspecified flags.
-+ *
-+ * This function exists only for compatibility with libav.
-+ * Please use av_parse_cpu_caps() when possible.
-+ * @return a combination of AV_CPU_* flags, negative on error.
-+ */
-+attribute_deprecated
-+int av_parse_cpu_flags(const char *s);
-+
-+/**
-+ * Parse CPU caps from a string and update the given AV_CPU_* flags based on that.
-+ *
-+ * @return negative on error.
-+ */
-+int av_parse_cpu_caps(unsigned *flags, const char *s);
-+
-+/**
-+ * @return the number of logical CPU cores present.
-+ */
-+int av_cpu_count(void);
-+
-+/**
-+ * Get the maximum data alignment that may be required by FFmpeg.
-+ *
-+ * Note that this is affected by the build configuration and the CPU flags mask,
-+ * so e.g. if the CPU supports AVX, but libavutil has been built with
-+ * --disable-avx or the AV_CPU_FLAG_AVX flag has been disabled through
-+ * av_set_cpu_flags_mask(), then this function will behave as if AVX is not
-+ * present.
-+ */
-+size_t av_cpu_max_align(void);
-+
-+#endif /* AVUTIL_CPU_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/dict.h
-@@ -0,0 +1,200 @@
-+/*
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+/**
-+ * @file
-+ * Public dictionary API.
-+ * @deprecated
-+ * AVDictionary is provided for compatibility with libav. It is both in
-+ * implementation as well as API inefficient. It does not scale and is
-+ * extremely slow with large dictionaries.
-+ * It is recommended that new code uses our tree container from tree.c/h
-+ * where applicable, which uses AVL trees to achieve O(log n) performance.
-+ */
-+
-+#ifndef AVUTIL_DICT_H
-+#define AVUTIL_DICT_H
-+
-+#include <stdint.h>
-+
-+#include "version.h"
-+
-+/**
-+ * @addtogroup lavu_dict AVDictionary
-+ * @ingroup lavu_data
-+ *
-+ * @brief Simple key:value store
-+ *
-+ * @{
-+ * Dictionaries are used for storing key:value pairs. To create
-+ * an AVDictionary, simply pass an address of a NULL pointer to
-+ * av_dict_set(). NULL can be used as an empty dictionary wherever
-+ * a pointer to an AVDictionary is required.
-+ * Use av_dict_get() to retrieve an entry or iterate over all
-+ * entries and finally av_dict_free() to free the dictionary
-+ * and all its contents.
-+ *
-+ @code
-+ AVDictionary *d = NULL; // "create" an empty dictionary
-+ AVDictionaryEntry *t = NULL;
-+
-+ av_dict_set(&d, "foo", "bar", 0); // add an entry
-+
-+ char *k = av_strdup("key"); // if your strings are already allocated,
-+ char *v = av_strdup("value"); // you can avoid copying them like this
-+ av_dict_set(&d, k, v, AV_DICT_DONT_STRDUP_KEY | AV_DICT_DONT_STRDUP_VAL);
-+
-+ while (t = av_dict_get(d, "", t, AV_DICT_IGNORE_SUFFIX)) {
-+ <....> // iterate over all entries in d
-+ }
-+ av_dict_free(&d);
-+ @endcode
-+ */
-+
-+#define AV_DICT_MATCH_CASE 1 /**< Only get an entry with exact-case key match. Only relevant in av_dict_get(). */
-+#define AV_DICT_IGNORE_SUFFIX 2 /**< Return first entry in a dictionary whose first part corresponds to the search key,
-+ ignoring the suffix of the found key string. Only relevant in av_dict_get(). */
-+#define AV_DICT_DONT_STRDUP_KEY 4 /**< Take ownership of a key that's been
-+ allocated with av_malloc() or another memory allocation function. */
-+#define AV_DICT_DONT_STRDUP_VAL 8 /**< Take ownership of a value that's been
-+ allocated with av_malloc() or another memory allocation function. */
-+#define AV_DICT_DONT_OVERWRITE 16 ///< Don't overwrite existing entries.
-+#define AV_DICT_APPEND 32 /**< If the entry already exists, append to it. Note that no
-+ delimiter is added, the strings are simply concatenated. */
-+#define AV_DICT_MULTIKEY 64 /**< Allow to store several equal keys in the dictionary */
-+
-+typedef struct AVDictionaryEntry {
-+ char *key;
-+ char *value;
-+} AVDictionaryEntry;
-+
-+typedef struct AVDictionary AVDictionary;
-+
-+/**
-+ * Get a dictionary entry with matching key.
-+ *
-+ * The returned entry key or value must not be changed, or it will
-+ * cause undefined behavior.
-+ *
-+ * To iterate through all the dictionary entries, you can set the matching key
-+ * to the null string "" and set the AV_DICT_IGNORE_SUFFIX flag.
-+ *
-+ * @param prev Set to the previous matching element to find the next.
-+ * If set to NULL the first matching element is returned.
-+ * @param key matching key
-+ * @param flags a collection of AV_DICT_* flags controlling how the entry is retrieved
-+ * @return found entry or NULL in case no matching entry was found in the dictionary
-+ */
-+AVDictionaryEntry *av_dict_get(const AVDictionary *m, const char *key,
-+ const AVDictionaryEntry *prev, int flags);
-+
-+/**
-+ * Get number of entries in dictionary.
-+ *
-+ * @param m dictionary
-+ * @return number of entries in dictionary
-+ */
-+int av_dict_count(const AVDictionary *m);
-+
-+/**
-+ * Set the given entry in *pm, overwriting an existing entry.
-+ *
-+ * Note: If AV_DICT_DONT_STRDUP_KEY or AV_DICT_DONT_STRDUP_VAL is set,
-+ * these arguments will be freed on error.
-+ *
-+ * Warning: Adding a new entry to a dictionary invalidates all existing entries
-+ * previously returned with av_dict_get.
-+ *
-+ * @param pm pointer to a pointer to a dictionary struct. If *pm is NULL
-+ * a dictionary struct is allocated and put in *pm.
-+ * @param key entry key to add to *pm (will either be av_strduped or added as a new key depending on flags)
-+ * @param value entry value to add to *pm (will be av_strduped or added as a new key depending on flags).
-+ * Passing a NULL value will cause an existing entry to be deleted.
-+ * @return >= 0 on success otherwise an error code <0
-+ */
-+int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags);
-+
-+/**
-+ * Convenience wrapper for av_dict_set that converts the value to a string
-+ * and stores it.
-+ *
-+ * Note: If AV_DICT_DONT_STRDUP_KEY is set, key will be freed on error.
-+ */
-+int av_dict_set_int(AVDictionary **pm, const char *key, int64_t value, int flags);
-+
-+/**
-+ * Parse the key/value pairs list and add the parsed entries to a dictionary.
-+ *
-+ * In case of failure, all the successfully set entries are stored in
-+ * *pm. You may need to manually free the created dictionary.
-+ *
-+ * @param key_val_sep a 0-terminated list of characters used to separate
-+ * key from value
-+ * @param pairs_sep a 0-terminated list of characters used to separate
-+ * two pairs from each other
-+ * @param flags flags to use when adding to dictionary.
-+ * AV_DICT_DONT_STRDUP_KEY and AV_DICT_DONT_STRDUP_VAL
-+ * are ignored since the key/value tokens will always
-+ * be duplicated.
-+ * @return 0 on success, negative AVERROR code on failure
-+ */
-+int av_dict_parse_string(AVDictionary **pm, const char *str,
-+ const char *key_val_sep, const char *pairs_sep,
-+ int flags);
-+
-+/**
-+ * Copy entries from one AVDictionary struct into another.
-+ * @param dst pointer to a pointer to a AVDictionary struct. If *dst is NULL,
-+ * this function will allocate a struct for you and put it in *dst
-+ * @param src pointer to source AVDictionary struct
-+ * @param flags flags to use when setting entries in *dst
-+ * @note metadata is read using the AV_DICT_IGNORE_SUFFIX flag
-+ * @return 0 on success, negative AVERROR code on failure. If dst was allocated
-+ * by this function, callers should free the associated memory.
-+ */
-+int av_dict_copy(AVDictionary **dst, const AVDictionary *src, int flags);
-+
-+/**
-+ * Free all the memory allocated for an AVDictionary struct
-+ * and all keys and values.
-+ */
-+void av_dict_free(AVDictionary **m);
-+
-+/**
-+ * Get dictionary entries as a string.
-+ *
-+ * Create a string containing dictionary's entries.
-+ * Such string may be passed back to av_dict_parse_string().
-+ * @note String is escaped with backslashes ('\').
-+ *
-+ * @param[in] m dictionary
-+ * @param[out] buffer Pointer to buffer that will be allocated with string containg entries.
-+ * Buffer must be freed by the caller when is no longer needed.
-+ * @param[in] key_val_sep character used to separate key from value
-+ * @param[in] pairs_sep character used to separate two pairs from each other
-+ * @return >= 0 on success, negative on error
-+ * @warning Separators cannot be neither '\\' nor '\0'. They also cannot be the same.
-+ */
-+int av_dict_get_string(const AVDictionary *m, char **buffer,
-+ const char key_val_sep, const char pairs_sep);
-+
-+/**
-+ * @}
-+ */
-+
-+#endif /* AVUTIL_DICT_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/error.h
-@@ -0,0 +1,126 @@
-+/*
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+/**
-+ * @file
-+ * error code definitions
-+ */
-+
-+#ifndef AVUTIL_ERROR_H
-+#define AVUTIL_ERROR_H
-+
-+#include <errno.h>
-+#include <stddef.h>
-+
-+/**
-+ * @addtogroup lavu_error
-+ *
-+ * @{
-+ */
-+
-+
-+/* error handling */
-+#if EDOM > 0
-+#define AVERROR(e) (-(e)) ///< Returns a negative error code from a POSIX error code, to return from library functions.
-+#define AVUNERROR(e) (-(e)) ///< Returns a POSIX error code from a library function error return value.
-+#else
-+/* Some platforms have E* and errno already negated. */
-+#define AVERROR(e) (e)
-+#define AVUNERROR(e) (e)
-+#endif
-+
-+#define FFERRTAG(a, b, c, d) (-(int)MKTAG(a, b, c, d))
-+
-+#define AVERROR_BSF_NOT_FOUND FFERRTAG(0xF8,'B','S','F') ///< Bitstream filter not found
-+#define AVERROR_BUG FFERRTAG( 'B','U','G','!') ///< Internal bug, also see AVERROR_BUG2
-+#define AVERROR_BUFFER_TOO_SMALL FFERRTAG( 'B','U','F','S') ///< Buffer too small
-+#define AVERROR_DECODER_NOT_FOUND FFERRTAG(0xF8,'D','E','C') ///< Decoder not found
-+#define AVERROR_DEMUXER_NOT_FOUND FFERRTAG(0xF8,'D','E','M') ///< Demuxer not found
-+#define AVERROR_ENCODER_NOT_FOUND FFERRTAG(0xF8,'E','N','C') ///< Encoder not found
-+#define AVERROR_EOF FFERRTAG( 'E','O','F',' ') ///< End of file
-+#define AVERROR_EXIT FFERRTAG( 'E','X','I','T') ///< Immediate exit was requested; the called function should not be restarted
-+#define AVERROR_EXTERNAL FFERRTAG( 'E','X','T',' ') ///< Generic error in an external library
-+#define AVERROR_FILTER_NOT_FOUND FFERRTAG(0xF8,'F','I','L') ///< Filter not found
-+#define AVERROR_INVALIDDATA FFERRTAG( 'I','N','D','A') ///< Invalid data found when processing input
-+#define AVERROR_MUXER_NOT_FOUND FFERRTAG(0xF8,'M','U','X') ///< Muxer not found
-+#define AVERROR_OPTION_NOT_FOUND FFERRTAG(0xF8,'O','P','T') ///< Option not found
-+#define AVERROR_PATCHWELCOME FFERRTAG( 'P','A','W','E') ///< Not yet implemented in FFmpeg, patches welcome
-+#define AVERROR_PROTOCOL_NOT_FOUND FFERRTAG(0xF8,'P','R','O') ///< Protocol not found
-+
-+#define AVERROR_STREAM_NOT_FOUND FFERRTAG(0xF8,'S','T','R') ///< Stream not found
-+/**
-+ * This is semantically identical to AVERROR_BUG
-+ * it has been introduced in Libav after our AVERROR_BUG and with a modified value.
-+ */
-+#define AVERROR_BUG2 FFERRTAG( 'B','U','G',' ')
-+#define AVERROR_UNKNOWN FFERRTAG( 'U','N','K','N') ///< Unknown error, typically from an external library
-+#define AVERROR_EXPERIMENTAL (-0x2bb2afa8) ///< Requested feature is flagged experimental. Set strict_std_compliance if you really want to use it.
-+#define AVERROR_INPUT_CHANGED (-0x636e6701) ///< Input changed between calls. Reconfiguration is required. (can be OR-ed with AVERROR_OUTPUT_CHANGED)
-+#define AVERROR_OUTPUT_CHANGED (-0x636e6702) ///< Output changed between calls. Reconfiguration is required. (can be OR-ed with AVERROR_INPUT_CHANGED)
-+/* HTTP & RTSP errors */
-+#define AVERROR_HTTP_BAD_REQUEST FFERRTAG(0xF8,'4','0','0')
-+#define AVERROR_HTTP_UNAUTHORIZED FFERRTAG(0xF8,'4','0','1')
-+#define AVERROR_HTTP_FORBIDDEN FFERRTAG(0xF8,'4','0','3')
-+#define AVERROR_HTTP_NOT_FOUND FFERRTAG(0xF8,'4','0','4')
-+#define AVERROR_HTTP_OTHER_4XX FFERRTAG(0xF8,'4','X','X')
-+#define AVERROR_HTTP_SERVER_ERROR FFERRTAG(0xF8,'5','X','X')
-+
-+#define AV_ERROR_MAX_STRING_SIZE 64
-+
-+/**
-+ * Put a description of the AVERROR code errnum in errbuf.
-+ * In case of failure the global variable errno is set to indicate the
-+ * error. Even in case of failure av_strerror() will print a generic
-+ * error message indicating the errnum provided to errbuf.
-+ *
-+ * @param errnum error code to describe
-+ * @param errbuf buffer to which description is written
-+ * @param errbuf_size the size in bytes of errbuf
-+ * @return 0 on success, a negative value if a description for errnum
-+ * cannot be found
-+ */
-+int av_strerror(int errnum, char *errbuf, size_t errbuf_size);
-+
-+/**
-+ * Fill the provided buffer with a string containing an error string
-+ * corresponding to the AVERROR code errnum.
-+ *
-+ * @param errbuf a buffer
-+ * @param errbuf_size size in bytes of errbuf
-+ * @param errnum error code to describe
-+ * @return the buffer in input, filled with the error description
-+ * @see av_strerror()
-+ */
-+static inline char *av_make_error_string(char *errbuf, size_t errbuf_size, int errnum)
-+{
-+ av_strerror(errnum, errbuf, errbuf_size);
-+ return errbuf;
-+}
-+
-+/**
-+ * Convenience macro, the return value should be used only directly in
-+ * function arguments but never stand-alone.
-+ */
-+#define av_err2str(errnum) \
-+ av_make_error_string((char[AV_ERROR_MAX_STRING_SIZE]){0}, AV_ERROR_MAX_STRING_SIZE, errnum)
-+
-+/**
-+ * @}
-+ */
-+
-+#endif /* AVUTIL_ERROR_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/frame.h
-@@ -0,0 +1,893 @@
-+/*
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+/**
-+ * @file
-+ * @ingroup lavu_frame
-+ * reference-counted frame API
-+ */
-+
-+#ifndef AVUTIL_FRAME_H
-+#define AVUTIL_FRAME_H
-+
-+#include <stddef.h>
-+#include <stdint.h>
-+
-+#include "avutil.h"
-+#include "buffer.h"
-+#include "dict.h"
-+#include "rational.h"
-+#include "samplefmt.h"
-+#include "pixfmt.h"
-+#include "version.h"
-+
-+
-+/**
-+ * @defgroup lavu_frame AVFrame
-+ * @ingroup lavu_data
-+ *
-+ * @{
-+ * AVFrame is an abstraction for reference-counted raw multimedia data.
-+ */
-+
-+enum AVFrameSideDataType {
-+ /**
-+ * The data is the AVPanScan struct defined in libavcodec.
-+ */
-+ AV_FRAME_DATA_PANSCAN,
-+ /**
-+ * ATSC A53 Part 4 Closed Captions.
-+ * A53 CC bitstream is stored as uint8_t in AVFrameSideData.data.
-+ * The number of bytes of CC data is AVFrameSideData.size.
-+ */
-+ AV_FRAME_DATA_A53_CC,
-+ /**
-+ * Stereoscopic 3d metadata.
-+ * The data is the AVStereo3D struct defined in libavutil/stereo3d.h.
-+ */
-+ AV_FRAME_DATA_STEREO3D,
-+ /**
-+ * The data is the AVMatrixEncoding enum defined in libavutil/channel_layout.h.
-+ */
-+ AV_FRAME_DATA_MATRIXENCODING,
-+ /**
-+ * Metadata relevant to a downmix procedure.
-+ * The data is the AVDownmixInfo struct defined in libavutil/downmix_info.h.
-+ */
-+ AV_FRAME_DATA_DOWNMIX_INFO,
-+ /**
-+ * ReplayGain information in the form of the AVReplayGain struct.
-+ */
-+ AV_FRAME_DATA_REPLAYGAIN,
-+ /**
-+ * This side data contains a 3x3 transformation matrix describing an affine
-+ * transformation that needs to be applied to the frame for correct
-+ * presentation.
-+ *
-+ * See libavutil/display.h for a detailed description of the data.
-+ */
-+ AV_FRAME_DATA_DISPLAYMATRIX,
-+ /**
-+ * Active Format Description data consisting of a single byte as specified
-+ * in ETSI TS 101 154 using AVActiveFormatDescription enum.
-+ */
-+ AV_FRAME_DATA_AFD,
-+ /**
-+ * Motion vectors exported by some codecs (on demand through the export_mvs
-+ * flag set in the libavcodec AVCodecContext flags2 option).
-+ * The data is the AVMotionVector struct defined in
-+ * libavutil/motion_vector.h.
-+ */
-+ AV_FRAME_DATA_MOTION_VECTORS,
-+ /**
-+ * Recommmends skipping the specified number of samples. This is exported
-+ * only if the "skip_manual" AVOption is set in libavcodec.
-+ * This has the same format as AV_PKT_DATA_SKIP_SAMPLES.
-+ * @code
-+ * u32le number of samples to skip from start of this packet
-+ * u32le number of samples to skip from end of this packet
-+ * u8 reason for start skip
-+ * u8 reason for end skip (0=padding silence, 1=convergence)
-+ * @endcode
-+ */
-+ AV_FRAME_DATA_SKIP_SAMPLES,
-+ /**
-+ * This side data must be associated with an audio frame and corresponds to
-+ * enum AVAudioServiceType defined in avcodec.h.
-+ */
-+ AV_FRAME_DATA_AUDIO_SERVICE_TYPE,
-+ /**
-+ * Mastering display metadata associated with a video frame. The payload is
-+ * an AVMasteringDisplayMetadata type and contains information about the
-+ * mastering display color volume.
-+ */
-+ AV_FRAME_DATA_MASTERING_DISPLAY_METADATA,
-+ /**
-+ * The GOP timecode in 25 bit timecode format. Data format is 64-bit integer.
-+ * This is set on the first frame of a GOP that has a temporal reference of 0.
-+ */
-+ AV_FRAME_DATA_GOP_TIMECODE,
-+
-+ /**
-+ * The data represents the AVSphericalMapping structure defined in
-+ * libavutil/spherical.h.
-+ */
-+ AV_FRAME_DATA_SPHERICAL,
-+
-+ /**
-+ * Content light level (based on CTA-861.3). This payload contains data in
-+ * the form of the AVContentLightMetadata struct.
-+ */
-+ AV_FRAME_DATA_CONTENT_LIGHT_LEVEL,
-+
-+ /**
-+ * The data contains an ICC profile as an opaque octet buffer following the
-+ * format described by ISO 15076-1 with an optional name defined in the
-+ * metadata key entry "name".
-+ */
-+ AV_FRAME_DATA_ICC_PROFILE,
-+
-+#if FF_API_FRAME_QP
-+ /**
-+ * Implementation-specific description of the format of AV_FRAME_QP_TABLE_DATA.
-+ * The contents of this side data are undocumented and internal; use
-+ * av_frame_set_qp_table() and av_frame_get_qp_table() to access this in a
-+ * meaningful way instead.
-+ */
-+ AV_FRAME_DATA_QP_TABLE_PROPERTIES,
-+
-+ /**
-+ * Raw QP table data. Its format is described by
-+ * AV_FRAME_DATA_QP_TABLE_PROPERTIES. Use av_frame_set_qp_table() and
-+ * av_frame_get_qp_table() to access this instead.
-+ */
-+ AV_FRAME_DATA_QP_TABLE_DATA,
-+#endif
-+};
-+
-+enum AVActiveFormatDescription {
-+ AV_AFD_SAME = 8,
-+ AV_AFD_4_3 = 9,
-+ AV_AFD_16_9 = 10,
-+ AV_AFD_14_9 = 11,
-+ AV_AFD_4_3_SP_14_9 = 13,
-+ AV_AFD_16_9_SP_14_9 = 14,
-+ AV_AFD_SP_4_3 = 15,
-+};
-+
-+
-+/**
-+ * Structure to hold side data for an AVFrame.
-+ *
-+ * sizeof(AVFrameSideData) is not a part of the public ABI, so new fields may be added
-+ * to the end with a minor bump.
-+ */
-+typedef struct AVFrameSideData {
-+ enum AVFrameSideDataType type;
-+ uint8_t *data;
-+ int size;
-+ AVDictionary *metadata;
-+ AVBufferRef *buf;
-+} AVFrameSideData;
-+
-+/**
-+ * This structure describes decoded (raw) audio or video data.
-+ *
-+ * AVFrame must be allocated using av_frame_alloc(). Note that this only
-+ * allocates the AVFrame itself, the buffers for the data must be managed
-+ * through other means (see below).
-+ * AVFrame must be freed with av_frame_free().
-+ *
-+ * AVFrame is typically allocated once and then reused multiple times to hold
-+ * different data (e.g. a single AVFrame to hold frames received from a
-+ * decoder). In such a case, av_frame_unref() will free any references held by
-+ * the frame and reset it to its original clean state before it
-+ * is reused again.
-+ *
-+ * The data described by an AVFrame is usually reference counted through the
-+ * AVBuffer API. The underlying buffer references are stored in AVFrame.buf /
-+ * AVFrame.extended_buf. An AVFrame is considered to be reference counted if at
-+ * least one reference is set, i.e. if AVFrame.buf[0] != NULL. In such a case,
-+ * every single data plane must be contained in one of the buffers in
-+ * AVFrame.buf or AVFrame.extended_buf.
-+ * There may be a single buffer for all the data, or one separate buffer for
-+ * each plane, or anything in between.
-+ *
-+ * sizeof(AVFrame) is not a part of the public ABI, so new fields may be added
-+ * to the end with a minor bump.
-+ *
-+ * Fields can be accessed through AVOptions, the name string used, matches the
-+ * C structure field name for fields accessible through AVOptions. The AVClass
-+ * for AVFrame can be obtained from avcodec_get_frame_class()
-+ */
-+typedef struct AVFrame {
-+#define AV_NUM_DATA_POINTERS 8
-+ /**
-+ * pointer to the picture/channel planes.
-+ * This might be different from the first allocated byte
-+ *
-+ * Some decoders access areas outside 0,0 - width,height, please
-+ * see avcodec_align_dimensions2(). Some filters and swscale can read
-+ * up to 16 bytes beyond the planes, if these filters are to be used,
-+ * then 16 extra bytes must be allocated.
-+ *
-+ * NOTE: Except for hwaccel formats, pointers not needed by the format
-+ * MUST be set to NULL.
-+ */
-+ uint8_t *data[AV_NUM_DATA_POINTERS];
-+
-+ /**
-+ * For video, size in bytes of each picture line.
-+ * For audio, size in bytes of each plane.
-+ *
-+ * For audio, only linesize[0] may be set. For planar audio, each channel
-+ * plane must be the same size.
-+ *
-+ * For video the linesizes should be multiples of the CPUs alignment
-+ * preference, this is 16 or 32 for modern desktop CPUs.
-+ * Some code requires such alignment other code can be slower without
-+ * correct alignment, for yet other it makes no difference.
-+ *
-+ * @note The linesize may be larger than the size of usable data -- there
-+ * may be extra padding present for performance reasons.
-+ */
-+ int linesize[AV_NUM_DATA_POINTERS];
-+
-+ /**
-+ * pointers to the data planes/channels.
-+ *
-+ * For video, this should simply point to data[].
-+ *
-+ * For planar audio, each channel has a separate data pointer, and
-+ * linesize[0] contains the size of each channel buffer.
-+ * For packed audio, there is just one data pointer, and linesize[0]
-+ * contains the total size of the buffer for all channels.
-+ *
-+ * Note: Both data and extended_data should always be set in a valid frame,
-+ * but for planar audio with more channels that can fit in data,
-+ * extended_data must be used in order to access all channels.
-+ */
-+ uint8_t **extended_data;
-+
-+ /**
-+ * @name Video dimensions
-+ * Video frames only. The coded dimensions (in pixels) of the video frame,
-+ * i.e. the size of the rectangle that contains some well-defined values.
-+ *
-+ * @note The part of the frame intended for display/presentation is further
-+ * restricted by the @ref cropping "Cropping rectangle".
-+ * @{
-+ */
-+ int width, height;
-+ /**
-+ * @}
-+ */
-+
-+ /**
-+ * number of audio samples (per channel) described by this frame
-+ */
-+ int nb_samples;
-+
-+ /**
-+ * format of the frame, -1 if unknown or unset
-+ * Values correspond to enum AVPixelFormat for video frames,
-+ * enum AVSampleFormat for audio)
-+ */
-+ int format;
-+
-+ /**
-+ * 1 -> keyframe, 0-> not
-+ */
-+ int key_frame;
-+
-+ /**
-+ * Picture type of the frame.
-+ */
-+ enum AVPictureType pict_type;
-+
-+ /**
-+ * Sample aspect ratio for the video frame, 0/1 if unknown/unspecified.
-+ */
-+ AVRational sample_aspect_ratio;
-+
-+ /**
-+ * Presentation timestamp in time_base units (time when frame should be shown to user).
-+ */
-+ int64_t pts;
-+
-+#if FF_API_PKT_PTS
-+ /**
-+ * PTS copied from the AVPacket that was decoded to produce this frame.
-+ * @deprecated use the pts field instead
-+ */
-+ attribute_deprecated
-+ int64_t pkt_pts;
-+#endif
-+
-+ /**
-+ * DTS copied from the AVPacket that triggered returning this frame. (if frame threading isn't used)
-+ * This is also the Presentation time of this AVFrame calculated from
-+ * only AVPacket.dts values without pts values.
-+ */
-+ int64_t pkt_dts;
-+
-+ /**
-+ * picture number in bitstream order
-+ */
-+ int coded_picture_number;
-+ /**
-+ * picture number in display order
-+ */
-+ int display_picture_number;
-+
-+ /**
-+ * quality (between 1 (good) and FF_LAMBDA_MAX (bad))
-+ */
-+ int quality;
-+
-+ /**
-+ * for some private data of the user
-+ */
-+ void *opaque;
-+
-+#if FF_API_ERROR_FRAME
-+ /**
-+ * @deprecated unused
-+ */
-+ attribute_deprecated
-+ uint64_t error[AV_NUM_DATA_POINTERS];
-+#endif
-+
-+ /**
-+ * When decoding, this signals how much the picture must be delayed.
-+ * extra_delay = repeat_pict / (2*fps)
-+ */
-+ int repeat_pict;
-+
-+ /**
-+ * The content of the picture is interlaced.
-+ */
-+ int interlaced_frame;
-+
-+ /**
-+ * If the content is interlaced, is top field displayed first.
-+ */
-+ int top_field_first;
-+
-+ /**
-+ * Tell user application that palette has changed from previous frame.
-+ */
-+ int palette_has_changed;
-+
-+ /**
-+ * reordered opaque 64 bits (generally an integer or a double precision float
-+ * PTS but can be anything).
-+ * The user sets AVCodecContext.reordered_opaque to represent the input at
-+ * that time,
-+ * the decoder reorders values as needed and sets AVFrame.reordered_opaque
-+ * to exactly one of the values provided by the user through AVCodecContext.reordered_opaque
-+ * @deprecated in favor of pkt_pts
-+ */
-+ int64_t reordered_opaque;
-+
-+ /**
-+ * Sample rate of the audio data.
-+ */
-+ int sample_rate;
-+
-+ /**
-+ * Channel layout of the audio data.
-+ */
-+ uint64_t channel_layout;
-+
-+ /**
-+ * AVBuffer references backing the data for this frame. If all elements of
-+ * this array are NULL, then this frame is not reference counted. This array
-+ * must be filled contiguously -- if buf[i] is non-NULL then buf[j] must
-+ * also be non-NULL for all j < i.
-+ *
-+ * There may be at most one AVBuffer per data plane, so for video this array
-+ * always contains all the references. For planar audio with more than
-+ * AV_NUM_DATA_POINTERS channels, there may be more buffers than can fit in
-+ * this array. Then the extra AVBufferRef pointers are stored in the
-+ * extended_buf array.
-+ */
-+ AVBufferRef *buf[AV_NUM_DATA_POINTERS];
-+
-+ /**
-+ * For planar audio which requires more than AV_NUM_DATA_POINTERS
-+ * AVBufferRef pointers, this array will hold all the references which
-+ * cannot fit into AVFrame.buf.
-+ *
-+ * Note that this is different from AVFrame.extended_data, which always
-+ * contains all the pointers. This array only contains the extra pointers,
-+ * which cannot fit into AVFrame.buf.
-+ *
-+ * This array is always allocated using av_malloc() by whoever constructs
-+ * the frame. It is freed in av_frame_unref().
-+ */
-+ AVBufferRef **extended_buf;
-+ /**
-+ * Number of elements in extended_buf.
-+ */
-+ int nb_extended_buf;
-+
-+ AVFrameSideData **side_data;
-+ int nb_side_data;
-+
-+/**
-+ * @defgroup lavu_frame_flags AV_FRAME_FLAGS
-+ * @ingroup lavu_frame
-+ * Flags describing additional frame properties.
-+ *
-+ * @{
-+ */
-+
-+/**
-+ * The frame data may be corrupted, e.g. due to decoding errors.
-+ */
-+#define AV_FRAME_FLAG_CORRUPT (1 << 0)
-+/**
-+ * A flag to mark the frames which need to be decoded, but shouldn't be output.
-+ */
-+#define AV_FRAME_FLAG_DISCARD (1 << 2)
-+/**
-+ * @}
-+ */
-+
-+ /**
-+ * Frame flags, a combination of @ref lavu_frame_flags
-+ */
-+ int flags;
-+
-+ /**
-+ * MPEG vs JPEG YUV range.
-+ * - encoding: Set by user
-+ * - decoding: Set by libavcodec
-+ */
-+ enum AVColorRange color_range;
-+
-+ enum AVColorPrimaries color_primaries;
-+
-+ enum AVColorTransferCharacteristic color_trc;
-+
-+ /**
-+ * YUV colorspace type.
-+ * - encoding: Set by user
-+ * - decoding: Set by libavcodec
-+ */
-+ enum AVColorSpace colorspace;
-+
-+ enum AVChromaLocation chroma_location;
-+
-+ /**
-+ * frame timestamp estimated using various heuristics, in stream time base
-+ * - encoding: unused
-+ * - decoding: set by libavcodec, read by user.
-+ */
-+ int64_t best_effort_timestamp;
-+
-+ /**
-+ * reordered pos from the last AVPacket that has been input into the decoder
-+ * - encoding: unused
-+ * - decoding: Read by user.
-+ */
-+ int64_t pkt_pos;
-+
-+ /**
-+ * duration of the corresponding packet, expressed in
-+ * AVStream->time_base units, 0 if unknown.
-+ * - encoding: unused
-+ * - decoding: Read by user.
-+ */
-+ int64_t pkt_duration;
-+
-+ /**
-+ * metadata.
-+ * - encoding: Set by user.
-+ * - decoding: Set by libavcodec.
-+ */
-+ AVDictionary *metadata;
-+
-+ /**
-+ * decode error flags of the frame, set to a combination of
-+ * FF_DECODE_ERROR_xxx flags if the decoder produced a frame, but there
-+ * were errors during the decoding.
-+ * - encoding: unused
-+ * - decoding: set by libavcodec, read by user.
-+ */
-+ int decode_error_flags;
-+#define FF_DECODE_ERROR_INVALID_BITSTREAM 1
-+#define FF_DECODE_ERROR_MISSING_REFERENCE 2
-+
-+ /**
-+ * number of audio channels, only used for audio.
-+ * - encoding: unused
-+ * - decoding: Read by user.
-+ */
-+ int channels;
-+
-+ /**
-+ * size of the corresponding packet containing the compressed
-+ * frame.
-+ * It is set to a negative value if unknown.
-+ * - encoding: unused
-+ * - decoding: set by libavcodec, read by user.
-+ */
-+ int pkt_size;
-+
-+#if FF_API_FRAME_QP
-+ /**
-+ * QP table
-+ */
-+ attribute_deprecated
-+ int8_t *qscale_table;
-+ /**
-+ * QP store stride
-+ */
-+ attribute_deprecated
-+ int qstride;
-+
-+ attribute_deprecated
-+ int qscale_type;
-+
-+ attribute_deprecated
-+ AVBufferRef *qp_table_buf;
-+#endif
-+ /**
-+ * For hwaccel-format frames, this should be a reference to the
-+ * AVHWFramesContext describing the frame.
-+ */
-+ AVBufferRef *hw_frames_ctx;
-+
-+ /**
-+ * AVBufferRef for free use by the API user. FFmpeg will never check the
-+ * contents of the buffer ref. FFmpeg calls av_buffer_unref() on it when
-+ * the frame is unreferenced. av_frame_copy_props() calls create a new
-+ * reference with av_buffer_ref() for the target frame's opaque_ref field.
-+ *
-+ * This is unrelated to the opaque field, although it serves a similar
-+ * purpose.
-+ */
-+ AVBufferRef *opaque_ref;
-+
-+ /**
-+ * @anchor cropping
-+ * @name Cropping
-+ * Video frames only. The number of pixels to discard from the the
-+ * top/bottom/left/right border of the frame to obtain the sub-rectangle of
-+ * the frame intended for presentation.
-+ * @{
-+ */
-+ size_t crop_top;
-+ size_t crop_bottom;
-+ size_t crop_left;
-+ size_t crop_right;
-+ /**
-+ * @}
-+ */
-+
-+ /**
-+ * AVBufferRef for internal use by a single libav* library.
-+ * Must not be used to transfer data between libraries.
-+ * Has to be NULL when ownership of the frame leaves the respective library.
-+ *
-+ * Code outside the FFmpeg libs should never check or change the contents of the buffer ref.
-+ *
-+ * FFmpeg calls av_buffer_unref() on it when the frame is unreferenced.
-+ * av_frame_copy_props() calls create a new reference with av_buffer_ref()
-+ * for the target frame's private_ref field.
-+ */
-+ AVBufferRef *private_ref;
-+} AVFrame;
-+
-+#if FF_API_FRAME_GET_SET
-+/**
-+ * Accessors for some AVFrame fields. These used to be provided for ABI
-+ * compatibility, and do not need to be used anymore.
-+ */
-+attribute_deprecated
-+int64_t av_frame_get_best_effort_timestamp(const AVFrame *frame);
-+attribute_deprecated
-+void av_frame_set_best_effort_timestamp(AVFrame *frame, int64_t val);
-+attribute_deprecated
-+int64_t av_frame_get_pkt_duration (const AVFrame *frame);
-+attribute_deprecated
-+void av_frame_set_pkt_duration (AVFrame *frame, int64_t val);
-+attribute_deprecated
-+int64_t av_frame_get_pkt_pos (const AVFrame *frame);
-+attribute_deprecated
-+void av_frame_set_pkt_pos (AVFrame *frame, int64_t val);
-+attribute_deprecated
-+int64_t av_frame_get_channel_layout (const AVFrame *frame);
-+attribute_deprecated
-+void av_frame_set_channel_layout (AVFrame *frame, int64_t val);
-+attribute_deprecated
-+int av_frame_get_channels (const AVFrame *frame);
-+attribute_deprecated
-+void av_frame_set_channels (AVFrame *frame, int val);
-+attribute_deprecated
-+int av_frame_get_sample_rate (const AVFrame *frame);
-+attribute_deprecated
-+void av_frame_set_sample_rate (AVFrame *frame, int val);
-+attribute_deprecated
-+AVDictionary *av_frame_get_metadata (const AVFrame *frame);
-+attribute_deprecated
-+void av_frame_set_metadata (AVFrame *frame, AVDictionary *val);
-+attribute_deprecated
-+int av_frame_get_decode_error_flags (const AVFrame *frame);
-+attribute_deprecated
-+void av_frame_set_decode_error_flags (AVFrame *frame, int val);
-+attribute_deprecated
-+int av_frame_get_pkt_size(const AVFrame *frame);
-+attribute_deprecated
-+void av_frame_set_pkt_size(AVFrame *frame, int val);
-+#if FF_API_FRAME_QP
-+attribute_deprecated
-+int8_t *av_frame_get_qp_table(AVFrame *f, int *stride, int *type);
-+attribute_deprecated
-+int av_frame_set_qp_table(AVFrame *f, AVBufferRef *buf, int stride, int type);
-+#endif
-+attribute_deprecated
-+enum AVColorSpace av_frame_get_colorspace(const AVFrame *frame);
-+attribute_deprecated
-+void av_frame_set_colorspace(AVFrame *frame, enum AVColorSpace val);
-+attribute_deprecated
-+enum AVColorRange av_frame_get_color_range(const AVFrame *frame);
-+attribute_deprecated
-+void av_frame_set_color_range(AVFrame *frame, enum AVColorRange val);
-+#endif
-+
-+/**
-+ * Get the name of a colorspace.
-+ * @return a static string identifying the colorspace; can be NULL.
-+ */
-+const char *av_get_colorspace_name(enum AVColorSpace val);
-+
-+/**
-+ * Allocate an AVFrame and set its fields to default values. The resulting
-+ * struct must be freed using av_frame_free().
-+ *
-+ * @return An AVFrame filled with default values or NULL on failure.
-+ *
-+ * @note this only allocates the AVFrame itself, not the data buffers. Those
-+ * must be allocated through other means, e.g. with av_frame_get_buffer() or
-+ * manually.
-+ */
-+AVFrame *av_frame_alloc(void);
-+
-+/**
-+ * Free the frame and any dynamically allocated objects in it,
-+ * e.g. extended_data. If the frame is reference counted, it will be
-+ * unreferenced first.
-+ *
-+ * @param frame frame to be freed. The pointer will be set to NULL.
-+ */
-+void av_frame_free(AVFrame **frame);
-+
-+/**
-+ * Set up a new reference to the data described by the source frame.
-+ *
-+ * Copy frame properties from src to dst and create a new reference for each
-+ * AVBufferRef from src.
-+ *
-+ * If src is not reference counted, new buffers are allocated and the data is
-+ * copied.
-+ *
-+ * @warning: dst MUST have been either unreferenced with av_frame_unref(dst),
-+ * or newly allocated with av_frame_alloc() before calling this
-+ * function, or undefined behavior will occur.
-+ *
-+ * @return 0 on success, a negative AVERROR on error
-+ */
-+int av_frame_ref(AVFrame *dst, const AVFrame *src);
-+
-+/**
-+ * Create a new frame that references the same data as src.
-+ *
-+ * This is a shortcut for av_frame_alloc()+av_frame_ref().
-+ *
-+ * @return newly created AVFrame on success, NULL on error.
-+ */
-+AVFrame *av_frame_clone(const AVFrame *src);
-+
-+/**
-+ * Unreference all the buffers referenced by frame and reset the frame fields.
-+ */
-+void av_frame_unref(AVFrame *frame);
-+
-+/**
-+ * Move everything contained in src to dst and reset src.
-+ *
-+ * @warning: dst is not unreferenced, but directly overwritten without reading
-+ * or deallocating its contents. Call av_frame_unref(dst) manually
-+ * before calling this function to ensure that no memory is leaked.
-+ */
-+void av_frame_move_ref(AVFrame *dst, AVFrame *src);
-+
-+/**
-+ * Allocate new buffer(s) for audio or video data.
-+ *
-+ * The following fields must be set on frame before calling this function:
-+ * - format (pixel format for video, sample format for audio)
-+ * - width and height for video
-+ * - nb_samples and channel_layout for audio
-+ *
-+ * This function will fill AVFrame.data and AVFrame.buf arrays and, if
-+ * necessary, allocate and fill AVFrame.extended_data and AVFrame.extended_buf.
-+ * For planar formats, one buffer will be allocated for each plane.
-+ *
-+ * @warning: if frame already has been allocated, calling this function will
-+ * leak memory. In addition, undefined behavior can occur in certain
-+ * cases.
-+ *
-+ * @param frame frame in which to store the new buffers.
-+ * @param align Required buffer size alignment. If equal to 0, alignment will be
-+ * chosen automatically for the current CPU. It is highly
-+ * recommended to pass 0 here unless you know what you are doing.
-+ *
-+ * @return 0 on success, a negative AVERROR on error.
-+ */
-+int av_frame_get_buffer(AVFrame *frame, int align);
-+
-+/**
-+ * Check if the frame data is writable.
-+ *
-+ * @return A positive value if the frame data is writable (which is true if and
-+ * only if each of the underlying buffers has only one reference, namely the one
-+ * stored in this frame). Return 0 otherwise.
-+ *
-+ * If 1 is returned the answer is valid until av_buffer_ref() is called on any
-+ * of the underlying AVBufferRefs (e.g. through av_frame_ref() or directly).
-+ *
-+ * @see av_frame_make_writable(), av_buffer_is_writable()
-+ */
-+int av_frame_is_writable(AVFrame *frame);
-+
-+/**
-+ * Ensure that the frame data is writable, avoiding data copy if possible.
-+ *
-+ * Do nothing if the frame is writable, allocate new buffers and copy the data
-+ * if it is not.
-+ *
-+ * @return 0 on success, a negative AVERROR on error.
-+ *
-+ * @see av_frame_is_writable(), av_buffer_is_writable(),
-+ * av_buffer_make_writable()
-+ */
-+int av_frame_make_writable(AVFrame *frame);
-+
-+/**
-+ * Copy the frame data from src to dst.
-+ *
-+ * This function does not allocate anything, dst must be already initialized and
-+ * allocated with the same parameters as src.
-+ *
-+ * This function only copies the frame data (i.e. the contents of the data /
-+ * extended data arrays), not any other properties.
-+ *
-+ * @return >= 0 on success, a negative AVERROR on error.
-+ */
-+int av_frame_copy(AVFrame *dst, const AVFrame *src);
-+
-+/**
-+ * Copy only "metadata" fields from src to dst.
-+ *
-+ * Metadata for the purpose of this function are those fields that do not affect
-+ * the data layout in the buffers. E.g. pts, sample rate (for audio) or sample
-+ * aspect ratio (for video), but not width/height or channel layout.
-+ * Side data is also copied.
-+ */
-+int av_frame_copy_props(AVFrame *dst, const AVFrame *src);
-+
-+/**
-+ * Get the buffer reference a given data plane is stored in.
-+ *
-+ * @param plane index of the data plane of interest in frame->extended_data.
-+ *
-+ * @return the buffer reference that contains the plane or NULL if the input
-+ * frame is not valid.
-+ */
-+AVBufferRef *av_frame_get_plane_buffer(AVFrame *frame, int plane);
-+
-+/**
-+ * Add a new side data to a frame.
-+ *
-+ * @param frame a frame to which the side data should be added
-+ * @param type type of the added side data
-+ * @param size size of the side data
-+ *
-+ * @return newly added side data on success, NULL on error
-+ */
-+AVFrameSideData *av_frame_new_side_data(AVFrame *frame,
-+ enum AVFrameSideDataType type,
-+ int size);
-+
-+/**
-+ * Add a new side data to a frame from an existing AVBufferRef
-+ *
-+ * @param frame a frame to which the side data should be added
-+ * @param type the type of the added side data
-+ * @param buf an AVBufferRef to add as side data. The ownership of
-+ * the reference is transferred to the frame.
-+ *
-+ * @return newly added side data on success, NULL on error. On failure
-+ * the frame is unchanged and the AVBufferRef remains owned by
-+ * the caller.
-+ */
-+AVFrameSideData *av_frame_new_side_data_from_buf(AVFrame *frame,
-+ enum AVFrameSideDataType type,
-+ AVBufferRef *buf);
-+
-+/**
-+ * @return a pointer to the side data of a given type on success, NULL if there
-+ * is no side data with such type in this frame.
-+ */
-+AVFrameSideData *av_frame_get_side_data(const AVFrame *frame,
-+ enum AVFrameSideDataType type);
-+
-+/**
-+ * If side data of the supplied type exists in the frame, free it and remove it
-+ * from the frame.
-+ */
-+void av_frame_remove_side_data(AVFrame *frame, enum AVFrameSideDataType type);
-+
-+
-+/**
-+ * Flags for frame cropping.
-+ */
-+enum {
-+ /**
-+ * Apply the maximum possible cropping, even if it requires setting the
-+ * AVFrame.data[] entries to unaligned pointers. Passing unaligned data
-+ * to FFmpeg API is generally not allowed, and causes undefined behavior
-+ * (such as crashes). You can pass unaligned data only to FFmpeg APIs that
-+ * are explicitly documented to accept it. Use this flag only if you
-+ * absolutely know what you are doing.
-+ */
-+ AV_FRAME_CROP_UNALIGNED = 1 << 0,
-+};
-+
-+/**
-+ * Crop the given video AVFrame according to its crop_left/crop_top/crop_right/
-+ * crop_bottom fields. If cropping is successful, the function will adjust the
-+ * data pointers and the width/height fields, and set the crop fields to 0.
-+ *
-+ * In all cases, the cropping boundaries will be rounded to the inherent
-+ * alignment of the pixel format. In some cases, such as for opaque hwaccel
-+ * formats, the left/top cropping is ignored. The crop fields are set to 0 even
-+ * if the cropping was rounded or ignored.
-+ *
-+ * @param frame the frame which should be cropped
-+ * @param flags Some combination of AV_FRAME_CROP_* flags, or 0.
-+ *
-+ * @return >= 0 on success, a negative AVERROR on error. If the cropping fields
-+ * were invalid, AVERROR(ERANGE) is returned, and nothing is changed.
-+ */
-+int av_frame_apply_cropping(AVFrame *frame, int flags);
-+
-+/**
-+ * @return a string identifying the side data type
-+ */
-+const char *av_frame_side_data_name(enum AVFrameSideDataType type);
-+
-+/**
-+ * @}
-+ */
-+
-+#endif /* AVUTIL_FRAME_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/hwcontext.h
-@@ -0,0 +1,584 @@
-+/*
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+#ifndef AVUTIL_HWCONTEXT_H
-+#define AVUTIL_HWCONTEXT_H
-+
-+#include "buffer.h"
-+#include "frame.h"
-+#include "log.h"
-+#include "pixfmt.h"
-+
-+enum AVHWDeviceType {
-+ AV_HWDEVICE_TYPE_NONE,
-+ AV_HWDEVICE_TYPE_VDPAU,
-+ AV_HWDEVICE_TYPE_CUDA,
-+ AV_HWDEVICE_TYPE_VAAPI,
-+ AV_HWDEVICE_TYPE_DXVA2,
-+ AV_HWDEVICE_TYPE_QSV,
-+ AV_HWDEVICE_TYPE_VIDEOTOOLBOX,
-+ AV_HWDEVICE_TYPE_D3D11VA,
-+ AV_HWDEVICE_TYPE_DRM,
-+ AV_HWDEVICE_TYPE_OPENCL,
-+ AV_HWDEVICE_TYPE_MEDIACODEC,
-+};
-+
-+typedef struct AVHWDeviceInternal AVHWDeviceInternal;
-+
-+/**
-+ * This struct aggregates all the (hardware/vendor-specific) "high-level" state,
-+ * i.e. state that is not tied to a concrete processing configuration.
-+ * E.g., in an API that supports hardware-accelerated encoding and decoding,
-+ * this struct will (if possible) wrap the state that is common to both encoding
-+ * and decoding and from which specific instances of encoders or decoders can be
-+ * derived.
-+ *
-+ * This struct is reference-counted with the AVBuffer mechanism. The
-+ * av_hwdevice_ctx_alloc() constructor yields a reference, whose data field
-+ * points to the actual AVHWDeviceContext. Further objects derived from
-+ * AVHWDeviceContext (such as AVHWFramesContext, describing a frame pool with
-+ * specific properties) will hold an internal reference to it. After all the
-+ * references are released, the AVHWDeviceContext itself will be freed,
-+ * optionally invoking a user-specified callback for uninitializing the hardware
-+ * state.
-+ */
-+typedef struct AVHWDeviceContext {
-+ /**
-+ * A class for logging. Set by av_hwdevice_ctx_alloc().
-+ */
-+ const AVClass *av_class;
-+
-+ /**
-+ * Private data used internally by libavutil. Must not be accessed in any
-+ * way by the caller.
-+ */
-+ AVHWDeviceInternal *internal;
-+
-+ /**
-+ * This field identifies the underlying API used for hardware access.
-+ *
-+ * This field is set when this struct is allocated and never changed
-+ * afterwards.
-+ */
-+ enum AVHWDeviceType type;
-+
-+ /**
-+ * The format-specific data, allocated and freed by libavutil along with
-+ * this context.
-+ *
-+ * Should be cast by the user to the format-specific context defined in the
-+ * corresponding header (hwcontext_*.h) and filled as described in the
-+ * documentation before calling av_hwdevice_ctx_init().
-+ *
-+ * After calling av_hwdevice_ctx_init() this struct should not be modified
-+ * by the caller.
-+ */
-+ void *hwctx;
-+
-+ /**
-+ * This field may be set by the caller before calling av_hwdevice_ctx_init().
-+ *
-+ * If non-NULL, this callback will be called when the last reference to
-+ * this context is unreferenced, immediately before it is freed.
-+ *
-+ * @note when other objects (e.g an AVHWFramesContext) are derived from this
-+ * struct, this callback will be invoked after all such child objects
-+ * are fully uninitialized and their respective destructors invoked.
-+ */
-+ void (*free)(struct AVHWDeviceContext *ctx);
-+
-+ /**
-+ * Arbitrary user data, to be used e.g. by the free() callback.
-+ */
-+ void *user_opaque;
-+} AVHWDeviceContext;
-+
-+typedef struct AVHWFramesInternal AVHWFramesInternal;
-+
-+/**
-+ * This struct describes a set or pool of "hardware" frames (i.e. those with
-+ * data not located in normal system memory). All the frames in the pool are
-+ * assumed to be allocated in the same way and interchangeable.
-+ *
-+ * This struct is reference-counted with the AVBuffer mechanism and tied to a
-+ * given AVHWDeviceContext instance. The av_hwframe_ctx_alloc() constructor
-+ * yields a reference, whose data field points to the actual AVHWFramesContext
-+ * struct.
-+ */
-+typedef struct AVHWFramesContext {
-+ /**
-+ * A class for logging.
-+ */
-+ const AVClass *av_class;
-+
-+ /**
-+ * Private data used internally by libavutil. Must not be accessed in any
-+ * way by the caller.
-+ */
-+ AVHWFramesInternal *internal;
-+
-+ /**
-+ * A reference to the parent AVHWDeviceContext. This reference is owned and
-+ * managed by the enclosing AVHWFramesContext, but the caller may derive
-+ * additional references from it.
-+ */
-+ AVBufferRef *device_ref;
-+
-+ /**
-+ * The parent AVHWDeviceContext. This is simply a pointer to
-+ * device_ref->data provided for convenience.
-+ *
-+ * Set by libavutil in av_hwframe_ctx_init().
-+ */
-+ AVHWDeviceContext *device_ctx;
-+
-+ /**
-+ * The format-specific data, allocated and freed automatically along with
-+ * this context.
-+ *
-+ * Should be cast by the user to the format-specific context defined in the
-+ * corresponding header (hwframe_*.h) and filled as described in the
-+ * documentation before calling av_hwframe_ctx_init().
-+ *
-+ * After any frames using this context are created, the contents of this
-+ * struct should not be modified by the caller.
-+ */
-+ void *hwctx;
-+
-+ /**
-+ * This field may be set by the caller before calling av_hwframe_ctx_init().
-+ *
-+ * If non-NULL, this callback will be called when the last reference to
-+ * this context is unreferenced, immediately before it is freed.
-+ */
-+ void (*free)(struct AVHWFramesContext *ctx);
-+
-+ /**
-+ * Arbitrary user data, to be used e.g. by the free() callback.
-+ */
-+ void *user_opaque;
-+
-+ /**
-+ * A pool from which the frames are allocated by av_hwframe_get_buffer().
-+ * This field may be set by the caller before calling av_hwframe_ctx_init().
-+ * The buffers returned by calling av_buffer_pool_get() on this pool must
-+ * have the properties described in the documentation in the corresponding hw
-+ * type's header (hwcontext_*.h). The pool will be freed strictly before
-+ * this struct's free() callback is invoked.
-+ *
-+ * This field may be NULL, then libavutil will attempt to allocate a pool
-+ * internally. Note that certain device types enforce pools allocated at
-+ * fixed size (frame count), which cannot be extended dynamically. In such a
-+ * case, initial_pool_size must be set appropriately.
-+ */
-+ AVBufferPool *pool;
-+
-+ /**
-+ * Initial size of the frame pool. If a device type does not support
-+ * dynamically resizing the pool, then this is also the maximum pool size.
-+ *
-+ * May be set by the caller before calling av_hwframe_ctx_init(). Must be
-+ * set if pool is NULL and the device type does not support dynamic pools.
-+ */
-+ int initial_pool_size;
-+
-+ /**
-+ * The pixel format identifying the underlying HW surface type.
-+ *
-+ * Must be a hwaccel format, i.e. the corresponding descriptor must have the
-+ * AV_PIX_FMT_FLAG_HWACCEL flag set.
-+ *
-+ * Must be set by the user before calling av_hwframe_ctx_init().
-+ */
-+ enum AVPixelFormat format;
-+
-+ /**
-+ * The pixel format identifying the actual data layout of the hardware
-+ * frames.
-+ *
-+ * Must be set by the caller before calling av_hwframe_ctx_init().
-+ *
-+ * @note when the underlying API does not provide the exact data layout, but
-+ * only the colorspace/bit depth, this field should be set to the fully
-+ * planar version of that format (e.g. for 8-bit 420 YUV it should be
-+ * AV_PIX_FMT_YUV420P, not AV_PIX_FMT_NV12 or anything else).
-+ */
-+ enum AVPixelFormat sw_format;
-+
-+ /**
-+ * The allocated dimensions of the frames in this pool.
-+ *
-+ * Must be set by the user before calling av_hwframe_ctx_init().
-+ */
-+ int width, height;
-+} AVHWFramesContext;
-+
-+/**
-+ * Look up an AVHWDeviceType by name.
-+ *
-+ * @param name String name of the device type (case-insensitive).
-+ * @return The type from enum AVHWDeviceType, or AV_HWDEVICE_TYPE_NONE if
-+ * not found.
-+ */
-+enum AVHWDeviceType av_hwdevice_find_type_by_name(const char *name);
-+
-+/** Get the string name of an AVHWDeviceType.
-+ *
-+ * @param type Type from enum AVHWDeviceType.
-+ * @return Pointer to a static string containing the name, or NULL if the type
-+ * is not valid.
-+ */
-+const char *av_hwdevice_get_type_name(enum AVHWDeviceType type);
-+
-+/**
-+ * Iterate over supported device types.
-+ *
-+ * @param type AV_HWDEVICE_TYPE_NONE initially, then the previous type
-+ * returned by this function in subsequent iterations.
-+ * @return The next usable device type from enum AVHWDeviceType, or
-+ * AV_HWDEVICE_TYPE_NONE if there are no more.
-+ */
-+enum AVHWDeviceType av_hwdevice_iterate_types(enum AVHWDeviceType prev);
-+
-+/**
-+ * Allocate an AVHWDeviceContext for a given hardware type.
-+ *
-+ * @param type the type of the hardware device to allocate.
-+ * @return a reference to the newly created AVHWDeviceContext on success or NULL
-+ * on failure.
-+ */
-+AVBufferRef *av_hwdevice_ctx_alloc(enum AVHWDeviceType type);
-+
-+/**
-+ * Finalize the device context before use. This function must be called after
-+ * the context is filled with all the required information and before it is
-+ * used in any way.
-+ *
-+ * @param ref a reference to the AVHWDeviceContext
-+ * @return 0 on success, a negative AVERROR code on failure
-+ */
-+int av_hwdevice_ctx_init(AVBufferRef *ref);
-+
-+/**
-+ * Open a device of the specified type and create an AVHWDeviceContext for it.
-+ *
-+ * This is a convenience function intended to cover the simple cases. Callers
-+ * who need to fine-tune device creation/management should open the device
-+ * manually and then wrap it in an AVHWDeviceContext using
-+ * av_hwdevice_ctx_alloc()/av_hwdevice_ctx_init().
-+ *
-+ * The returned context is already initialized and ready for use, the caller
-+ * should not call av_hwdevice_ctx_init() on it. The user_opaque/free fields of
-+ * the created AVHWDeviceContext are set by this function and should not be
-+ * touched by the caller.
-+ *
-+ * @param device_ctx On success, a reference to the newly-created device context
-+ * will be written here. The reference is owned by the caller
-+ * and must be released with av_buffer_unref() when no longer
-+ * needed. On failure, NULL will be written to this pointer.
-+ * @param type The type of the device to create.
-+ * @param device A type-specific string identifying the device to open.
-+ * @param opts A dictionary of additional (type-specific) options to use in
-+ * opening the device. The dictionary remains owned by the caller.
-+ * @param flags currently unused
-+ *
-+ * @return 0 on success, a negative AVERROR code on failure.
-+ */
-+int av_hwdevice_ctx_create(AVBufferRef **device_ctx, enum AVHWDeviceType type,
-+ const char *device, AVDictionary *opts, int flags);
-+
-+/**
-+ * Create a new device of the specified type from an existing device.
-+ *
-+ * If the source device is a device of the target type or was originally
-+ * derived from such a device (possibly through one or more intermediate
-+ * devices of other types), then this will return a reference to the
-+ * existing device of the same type as is requested.
-+ *
-+ * Otherwise, it will attempt to derive a new device from the given source
-+ * device. If direct derivation to the new type is not implemented, it will
-+ * attempt the same derivation from each ancestor of the source device in
-+ * turn looking for an implemented derivation method.
-+ *
-+ * @param dst_ctx On success, a reference to the newly-created
-+ * AVHWDeviceContext.
-+ * @param type The type of the new device to create.
-+ * @param src_ctx A reference to an existing AVHWDeviceContext which will be
-+ * used to create the new device.
-+ * @param flags Currently unused; should be set to zero.
-+ * @return Zero on success, a negative AVERROR code on failure.
-+ */
-+int av_hwdevice_ctx_create_derived(AVBufferRef **dst_ctx,
-+ enum AVHWDeviceType type,
-+ AVBufferRef *src_ctx, int flags);
-+
-+
-+/**
-+ * Allocate an AVHWFramesContext tied to a given device context.
-+ *
-+ * @param device_ctx a reference to a AVHWDeviceContext. This function will make
-+ * a new reference for internal use, the one passed to the
-+ * function remains owned by the caller.
-+ * @return a reference to the newly created AVHWFramesContext on success or NULL
-+ * on failure.
-+ */
-+AVBufferRef *av_hwframe_ctx_alloc(AVBufferRef *device_ctx);
-+
-+/**
-+ * Finalize the context before use. This function must be called after the
-+ * context is filled with all the required information and before it is attached
-+ * to any frames.
-+ *
-+ * @param ref a reference to the AVHWFramesContext
-+ * @return 0 on success, a negative AVERROR code on failure
-+ */
-+int av_hwframe_ctx_init(AVBufferRef *ref);
-+
-+/**
-+ * Allocate a new frame attached to the given AVHWFramesContext.
-+ *
-+ * @param hwframe_ctx a reference to an AVHWFramesContext
-+ * @param frame an empty (freshly allocated or unreffed) frame to be filled with
-+ * newly allocated buffers.
-+ * @param flags currently unused, should be set to zero
-+ * @return 0 on success, a negative AVERROR code on failure
-+ */
-+int av_hwframe_get_buffer(AVBufferRef *hwframe_ctx, AVFrame *frame, int flags);
-+
-+/**
-+ * Copy data to or from a hw surface. At least one of dst/src must have an
-+ * AVHWFramesContext attached.
-+ *
-+ * If src has an AVHWFramesContext attached, then the format of dst (if set)
-+ * must use one of the formats returned by av_hwframe_transfer_get_formats(src,
-+ * AV_HWFRAME_TRANSFER_DIRECTION_FROM).
-+ * If dst has an AVHWFramesContext attached, then the format of src must use one
-+ * of the formats returned by av_hwframe_transfer_get_formats(dst,
-+ * AV_HWFRAME_TRANSFER_DIRECTION_TO)
-+ *
-+ * dst may be "clean" (i.e. with data/buf pointers unset), in which case the
-+ * data buffers will be allocated by this function using av_frame_get_buffer().
-+ * If dst->format is set, then this format will be used, otherwise (when
-+ * dst->format is AV_PIX_FMT_NONE) the first acceptable format will be chosen.
-+ *
-+ * The two frames must have matching allocated dimensions (i.e. equal to
-+ * AVHWFramesContext.width/height), since not all device types support
-+ * transferring a sub-rectangle of the whole surface. The display dimensions
-+ * (i.e. AVFrame.width/height) may be smaller than the allocated dimensions, but
-+ * also have to be equal for both frames. When the display dimensions are
-+ * smaller than the allocated dimensions, the content of the padding in the
-+ * destination frame is unspecified.
-+ *
-+ * @param dst the destination frame. dst is not touched on failure.
-+ * @param src the source frame.
-+ * @param flags currently unused, should be set to zero
-+ * @return 0 on success, a negative AVERROR error code on failure.
-+ */
-+int av_hwframe_transfer_data(AVFrame *dst, const AVFrame *src, int flags);
-+
-+enum AVHWFrameTransferDirection {
-+ /**
-+ * Transfer the data from the queried hw frame.
-+ */
-+ AV_HWFRAME_TRANSFER_DIRECTION_FROM,
-+
-+ /**
-+ * Transfer the data to the queried hw frame.
-+ */
-+ AV_HWFRAME_TRANSFER_DIRECTION_TO,
-+};
-+
-+/**
-+ * Get a list of possible source or target formats usable in
-+ * av_hwframe_transfer_data().
-+ *
-+ * @param hwframe_ctx the frame context to obtain the information for
-+ * @param dir the direction of the transfer
-+ * @param formats the pointer to the output format list will be written here.
-+ * The list is terminated with AV_PIX_FMT_NONE and must be freed
-+ * by the caller when no longer needed using av_free().
-+ * If this function returns successfully, the format list will
-+ * have at least one item (not counting the terminator).
-+ * On failure, the contents of this pointer are unspecified.
-+ * @param flags currently unused, should be set to zero
-+ * @return 0 on success, a negative AVERROR code on failure.
-+ */
-+int av_hwframe_transfer_get_formats(AVBufferRef *hwframe_ctx,
-+ enum AVHWFrameTransferDirection dir,
-+ enum AVPixelFormat **formats, int flags);
-+
-+
-+/**
-+ * This struct describes the constraints on hardware frames attached to
-+ * a given device with a hardware-specific configuration. This is returned
-+ * by av_hwdevice_get_hwframe_constraints() and must be freed by
-+ * av_hwframe_constraints_free() after use.
-+ */
-+typedef struct AVHWFramesConstraints {
-+ /**
-+ * A list of possible values for format in the hw_frames_ctx,
-+ * terminated by AV_PIX_FMT_NONE. This member will always be filled.
-+ */
-+ enum AVPixelFormat *valid_hw_formats;
-+
-+ /**
-+ * A list of possible values for sw_format in the hw_frames_ctx,
-+ * terminated by AV_PIX_FMT_NONE. Can be NULL if this information is
-+ * not known.
-+ */
-+ enum AVPixelFormat *valid_sw_formats;
-+
-+ /**
-+ * The minimum size of frames in this hw_frames_ctx.
-+ * (Zero if not known.)
-+ */
-+ int min_width;
-+ int min_height;
-+
-+ /**
-+ * The maximum size of frames in this hw_frames_ctx.
-+ * (INT_MAX if not known / no limit.)
-+ */
-+ int max_width;
-+ int max_height;
-+} AVHWFramesConstraints;
-+
-+/**
-+ * Allocate a HW-specific configuration structure for a given HW device.
-+ * After use, the user must free all members as required by the specific
-+ * hardware structure being used, then free the structure itself with
-+ * av_free().
-+ *
-+ * @param device_ctx a reference to the associated AVHWDeviceContext.
-+ * @return The newly created HW-specific configuration structure on
-+ * success or NULL on failure.
-+ */
-+void *av_hwdevice_hwconfig_alloc(AVBufferRef *device_ctx);
-+
-+/**
-+ * Get the constraints on HW frames given a device and the HW-specific
-+ * configuration to be used with that device. If no HW-specific
-+ * configuration is provided, returns the maximum possible capabilities
-+ * of the device.
-+ *
-+ * @param ref a reference to the associated AVHWDeviceContext.
-+ * @param hwconfig a filled HW-specific configuration structure, or NULL
-+ * to return the maximum possible capabilities of the device.
-+ * @return AVHWFramesConstraints structure describing the constraints
-+ * on the device, or NULL if not available.
-+ */
-+AVHWFramesConstraints *av_hwdevice_get_hwframe_constraints(AVBufferRef *ref,
-+ const void *hwconfig);
-+
-+/**
-+ * Free an AVHWFrameConstraints structure.
-+ *
-+ * @param constraints The (filled or unfilled) AVHWFrameConstraints structure.
-+ */
-+void av_hwframe_constraints_free(AVHWFramesConstraints **constraints);
-+
-+
-+/**
-+ * Flags to apply to frame mappings.
-+ */
-+enum {
-+ /**
-+ * The mapping must be readable.
-+ */
-+ AV_HWFRAME_MAP_READ = 1 << 0,
-+ /**
-+ * The mapping must be writeable.
-+ */
-+ AV_HWFRAME_MAP_WRITE = 1 << 1,
-+ /**
-+ * The mapped frame will be overwritten completely in subsequent
-+ * operations, so the current frame data need not be loaded. Any values
-+ * which are not overwritten are unspecified.
-+ */
-+ AV_HWFRAME_MAP_OVERWRITE = 1 << 2,
-+ /**
-+ * The mapping must be direct. That is, there must not be any copying in
-+ * the map or unmap steps. Note that performance of direct mappings may
-+ * be much lower than normal memory.
-+ */
-+ AV_HWFRAME_MAP_DIRECT = 1 << 3,
-+};
-+
-+/**
-+ * Map a hardware frame.
-+ *
-+ * This has a number of different possible effects, depending on the format
-+ * and origin of the src and dst frames. On input, src should be a usable
-+ * frame with valid buffers and dst should be blank (typically as just created
-+ * by av_frame_alloc()). src should have an associated hwframe context, and
-+ * dst may optionally have a format and associated hwframe context.
-+ *
-+ * If src was created by mapping a frame from the hwframe context of dst,
-+ * then this function undoes the mapping - dst is replaced by a reference to
-+ * the frame that src was originally mapped from.
-+ *
-+ * If both src and dst have an associated hwframe context, then this function
-+ * attempts to map the src frame from its hardware context to that of dst and
-+ * then fill dst with appropriate data to be usable there. This will only be
-+ * possible if the hwframe contexts and associated devices are compatible -
-+ * given compatible devices, av_hwframe_ctx_create_derived() can be used to
-+ * create a hwframe context for dst in which mapping should be possible.
-+ *
-+ * If src has a hwframe context but dst does not, then the src frame is
-+ * mapped to normal memory and should thereafter be usable as a normal frame.
-+ * If the format is set on dst, then the mapping will attempt to create dst
-+ * with that format and fail if it is not possible. If format is unset (is
-+ * AV_PIX_FMT_NONE) then dst will be mapped with whatever the most appropriate
-+ * format to use is (probably the sw_format of the src hwframe context).
-+ *
-+ * A return value of AVERROR(ENOSYS) indicates that the mapping is not
-+ * possible with the given arguments and hwframe setup, while other return
-+ * values indicate that it failed somehow.
-+ *
-+ * @param dst Destination frame, to contain the mapping.
-+ * @param src Source frame, to be mapped.
-+ * @param flags Some combination of AV_HWFRAME_MAP_* flags.
-+ * @return Zero on success, negative AVERROR code on failure.
-+ */
-+int av_hwframe_map(AVFrame *dst, const AVFrame *src, int flags);
-+
-+
-+/**
-+ * Create and initialise an AVHWFramesContext as a mapping of another existing
-+ * AVHWFramesContext on a different device.
-+ *
-+ * av_hwframe_ctx_init() should not be called after this.
-+ *
-+ * @param derived_frame_ctx On success, a reference to the newly created
-+ * AVHWFramesContext.
-+ * @param derived_device_ctx A reference to the device to create the new
-+ * AVHWFramesContext on.
-+ * @param source_frame_ctx A reference to an existing AVHWFramesContext
-+ * which will be mapped to the derived context.
-+ * @param flags Some combination of AV_HWFRAME_MAP_* flags, defining the
-+ * mapping parameters to apply to frames which are allocated
-+ * in the derived device.
-+ * @return Zero on success, negative AVERROR code on failure.
-+ */
-+int av_hwframe_ctx_create_derived(AVBufferRef **derived_frame_ctx,
-+ enum AVPixelFormat format,
-+ AVBufferRef *derived_device_ctx,
-+ AVBufferRef *source_frame_ctx,
-+ int flags);
-+
-+#endif /* AVUTIL_HWCONTEXT_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/intfloat.h
-@@ -0,0 +1,77 @@
-+/*
-+ * Copyright (c) 2011 Mans Rullgard
-+ *
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+#ifndef AVUTIL_INTFLOAT_H
-+#define AVUTIL_INTFLOAT_H
-+
-+#include <stdint.h>
-+#include "attributes.h"
-+
-+union av_intfloat32 {
-+ uint32_t i;
-+ float f;
-+};
-+
-+union av_intfloat64 {
-+ uint64_t i;
-+ double f;
-+};
-+
-+/**
-+ * Reinterpret a 32-bit integer as a float.
-+ */
-+static av_always_inline float av_int2float(uint32_t i)
-+{
-+ union av_intfloat32 v;
-+ v.i = i;
-+ return v.f;
-+}
-+
-+/**
-+ * Reinterpret a float as a 32-bit integer.
-+ */
-+static av_always_inline uint32_t av_float2int(float f)
-+{
-+ union av_intfloat32 v;
-+ v.f = f;
-+ return v.i;
-+}
-+
-+/**
-+ * Reinterpret a 64-bit integer as a double.
-+ */
-+static av_always_inline double av_int2double(uint64_t i)
-+{
-+ union av_intfloat64 v;
-+ v.i = i;
-+ return v.f;
-+}
-+
-+/**
-+ * Reinterpret a double as a 64-bit integer.
-+ */
-+static av_always_inline uint64_t av_double2int(double f)
-+{
-+ union av_intfloat64 v;
-+ v.f = f;
-+ return v.i;
-+}
-+
-+#endif /* AVUTIL_INTFLOAT_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/log.h
-@@ -0,0 +1,362 @@
-+/*
-+ * copyright (c) 2006 Michael Niedermayer <michaelni(a)gmx.at>
-+ *
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+#ifndef AVUTIL_LOG_H
-+#define AVUTIL_LOG_H
-+
-+#include <stdarg.h>
-+#include "avutil.h"
-+#include "attributes.h"
-+#include "version.h"
-+
-+typedef enum {
-+ AV_CLASS_CATEGORY_NA = 0,
-+ AV_CLASS_CATEGORY_INPUT,
-+ AV_CLASS_CATEGORY_OUTPUT,
-+ AV_CLASS_CATEGORY_MUXER,
-+ AV_CLASS_CATEGORY_DEMUXER,
-+ AV_CLASS_CATEGORY_ENCODER,
-+ AV_CLASS_CATEGORY_DECODER,
-+ AV_CLASS_CATEGORY_FILTER,
-+ AV_CLASS_CATEGORY_BITSTREAM_FILTER,
-+ AV_CLASS_CATEGORY_SWSCALER,
-+ AV_CLASS_CATEGORY_SWRESAMPLER,
-+ AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT = 40,
-+ AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT,
-+ AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT,
-+ AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT,
-+ AV_CLASS_CATEGORY_DEVICE_OUTPUT,
-+ AV_CLASS_CATEGORY_DEVICE_INPUT,
-+ AV_CLASS_CATEGORY_NB ///< not part of ABI/API
-+}AVClassCategory;
-+
-+#define AV_IS_INPUT_DEVICE(category) \
-+ (((category) == AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT) || \
-+ ((category) == AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT) || \
-+ ((category) == AV_CLASS_CATEGORY_DEVICE_INPUT))
-+
-+#define AV_IS_OUTPUT_DEVICE(category) \
-+ (((category) == AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT) || \
-+ ((category) == AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT) || \
-+ ((category) == AV_CLASS_CATEGORY_DEVICE_OUTPUT))
-+
-+struct AVOptionRanges;
-+
-+/**
-+ * Describe the class of an AVClass context structure. That is an
-+ * arbitrary struct of which the first field is a pointer to an
-+ * AVClass struct (e.g. AVCodecContext, AVFormatContext etc.).
-+ */
-+typedef struct AVClass {
-+ /**
-+ * The name of the class; usually it is the same name as the
-+ * context structure type to which the AVClass is associated.
-+ */
-+ const char* class_name;
-+
-+ /**
-+ * A pointer to a function which returns the name of a context
-+ * instance ctx associated with the class.
-+ */
-+ const char* (*item_name)(void* ctx);
-+
-+ /**
-+ * a pointer to the first option specified in the class if any or NULL
-+ *
-+ * @see av_set_default_options()
-+ */
-+ const struct AVOption *option;
-+
-+ /**
-+ * LIBAVUTIL_VERSION with which this structure was created.
-+ * This is used to allow fields to be added without requiring major
-+ * version bumps everywhere.
-+ */
-+
-+ int version;
-+
-+ /**
-+ * Offset in the structure where log_level_offset is stored.
-+ * 0 means there is no such variable
-+ */
-+ int log_level_offset_offset;
-+
-+ /**
-+ * Offset in the structure where a pointer to the parent context for
-+ * logging is stored. For example a decoder could pass its AVCodecContext
-+ * to eval as such a parent context, which an av_log() implementation
-+ * could then leverage to display the parent context.
-+ * The offset can be NULL.
-+ */
-+ int parent_log_context_offset;
-+
-+ /**
-+ * Return next AVOptions-enabled child or NULL
-+ */
-+ void* (*child_next)(void *obj, void *prev);
-+
-+ /**
-+ * Return an AVClass corresponding to the next potential
-+ * AVOptions-enabled child.
-+ *
-+ * The difference between child_next and this is that
-+ * child_next iterates over _already existing_ objects, while
-+ * child_class_next iterates over _all possible_ children.
-+ */
-+ const struct AVClass* (*child_class_next)(const struct AVClass *prev);
-+
-+ /**
-+ * Category used for visualization (like color)
-+ * This is only set if the category is equal for all objects using this class.
-+ * available since version (51 << 16 | 56 << 8 | 100)
-+ */
-+ AVClassCategory category;
-+
-+ /**
-+ * Callback to return the category.
-+ * available since version (51 << 16 | 59 << 8 | 100)
-+ */
-+ AVClassCategory (*get_category)(void* ctx);
-+
-+ /**
-+ * Callback to return the supported/allowed ranges.
-+ * available since version (52.12)
-+ */
-+ int (*query_ranges)(struct AVOptionRanges **, void *obj, const char *key, int flags);
-+} AVClass;
-+
-+/**
-+ * @addtogroup lavu_log
-+ *
-+ * @{
-+ *
-+ * @defgroup lavu_log_constants Logging Constants
-+ *
-+ * @{
-+ */
-+
-+/**
-+ * Print no output.
-+ */
-+#define AV_LOG_QUIET -8
-+
-+/**
-+ * Something went really wrong and we will crash now.
-+ */
-+#define AV_LOG_PANIC 0
-+
-+/**
-+ * Something went wrong and recovery is not possible.
-+ * For example, no header was found for a format which depends
-+ * on headers or an illegal combination of parameters is used.
-+ */
-+#define AV_LOG_FATAL 8
-+
-+/**
-+ * Something went wrong and cannot losslessly be recovered.
-+ * However, not all future data is affected.
-+ */
-+#define AV_LOG_ERROR 16
-+
-+/**
-+ * Something somehow does not look correct. This may or may not
-+ * lead to problems. An example would be the use of '-vstrict -2'.
-+ */
-+#define AV_LOG_WARNING 24
-+
-+/**
-+ * Standard information.
-+ */
-+#define AV_LOG_INFO 32
-+
-+/**
-+ * Detailed information.
-+ */
-+#define AV_LOG_VERBOSE 40
-+
-+/**
-+ * Stuff which is only useful for libav* developers.
-+ */
-+#define AV_LOG_DEBUG 48
-+
-+/**
-+ * Extremely verbose debugging, useful for libav* development.
-+ */
-+#define AV_LOG_TRACE 56
-+
-+#define AV_LOG_MAX_OFFSET (AV_LOG_TRACE - AV_LOG_QUIET)
-+
-+/**
-+ * @}
-+ */
-+
-+/**
-+ * Sets additional colors for extended debugging sessions.
-+ * @code
-+ av_log(ctx, AV_LOG_DEBUG|AV_LOG_C(134), "Message in purple\n");
-+ @endcode
-+ * Requires 256color terminal support. Uses outside debugging is not
-+ * recommended.
-+ */
-+#define AV_LOG_C(x) ((x) << 8)
-+
-+/**
-+ * Send the specified message to the log if the level is less than or equal
-+ * to the current av_log_level. By default, all logging messages are sent to
-+ * stderr. This behavior can be altered by setting a different logging callback
-+ * function.
-+ * @see av_log_set_callback
-+ *
-+ * @param avcl A pointer to an arbitrary struct of which the first field is a
-+ * pointer to an AVClass struct or NULL if general log.
-+ * @param level The importance level of the message expressed using a @ref
-+ * lavu_log_constants "Logging Constant".
-+ * @param fmt The format string (printf-compatible) that specifies how
-+ * subsequent arguments are converted to output.
-+ */
-+void av_log(void *avcl, int level, const char *fmt, ...) av_printf_format(3, 4);
-+
-+
-+/**
-+ * Send the specified message to the log if the level is less than or equal
-+ * to the current av_log_level. By default, all logging messages are sent to
-+ * stderr. This behavior can be altered by setting a different logging callback
-+ * function.
-+ * @see av_log_set_callback
-+ *
-+ * @param avcl A pointer to an arbitrary struct of which the first field is a
-+ * pointer to an AVClass struct.
-+ * @param level The importance level of the message expressed using a @ref
-+ * lavu_log_constants "Logging Constant".
-+ * @param fmt The format string (printf-compatible) that specifies how
-+ * subsequent arguments are converted to output.
-+ * @param vl The arguments referenced by the format string.
-+ */
-+void av_vlog(void *avcl, int level, const char *fmt, va_list vl);
-+
-+/**
-+ * Get the current log level
-+ *
-+ * @see lavu_log_constants
-+ *
-+ * @return Current log level
-+ */
-+int av_log_get_level(void);
-+
-+/**
-+ * Set the log level
-+ *
-+ * @see lavu_log_constants
-+ *
-+ * @param level Logging level
-+ */
-+void av_log_set_level(int level);
-+
-+/**
-+ * Set the logging callback
-+ *
-+ * @note The callback must be thread safe, even if the application does not use
-+ * threads itself as some codecs are multithreaded.
-+ *
-+ * @see av_log_default_callback
-+ *
-+ * @param callback A logging function with a compatible signature.
-+ */
-+void av_log_set_callback(void (*callback)(void*, int, const char*, va_list));
-+
-+/**
-+ * Default logging callback
-+ *
-+ * It prints the message to stderr, optionally colorizing it.
-+ *
-+ * @param avcl A pointer to an arbitrary struct of which the first field is a
-+ * pointer to an AVClass struct.
-+ * @param level The importance level of the message expressed using a @ref
-+ * lavu_log_constants "Logging Constant".
-+ * @param fmt The format string (printf-compatible) that specifies how
-+ * subsequent arguments are converted to output.
-+ * @param vl The arguments referenced by the format string.
-+ */
-+void av_log_default_callback(void *avcl, int level, const char *fmt,
-+ va_list vl);
-+
-+/**
-+ * Return the context name
-+ *
-+ * @param ctx The AVClass context
-+ *
-+ * @return The AVClass class_name
-+ */
-+const char* av_default_item_name(void* ctx);
-+AVClassCategory av_default_get_category(void *ptr);
-+
-+/**
-+ * Format a line of log the same way as the default callback.
-+ * @param line buffer to receive the formatted line
-+ * @param line_size size of the buffer
-+ * @param print_prefix used to store whether the prefix must be printed;
-+ * must point to a persistent integer initially set to 1
-+ */
-+void av_log_format_line(void *ptr, int level, const char *fmt, va_list vl,
-+ char *line, int line_size, int *print_prefix);
-+
-+/**
-+ * Format a line of log the same way as the default callback.
-+ * @param line buffer to receive the formatted line;
-+ * may be NULL if line_size is 0
-+ * @param line_size size of the buffer; at most line_size-1 characters will
-+ * be written to the buffer, plus one null terminator
-+ * @param print_prefix used to store whether the prefix must be printed;
-+ * must point to a persistent integer initially set to 1
-+ * @return Returns a negative value if an error occurred, otherwise returns
-+ * the number of characters that would have been written for a
-+ * sufficiently large buffer, not including the terminating null
-+ * character. If the return value is not less than line_size, it means
-+ * that the log message was truncated to fit the buffer.
-+ */
-+int av_log_format_line2(void *ptr, int level, const char *fmt, va_list vl,
-+ char *line, int line_size, int *print_prefix);
-+
-+/**
-+ * Skip repeated messages, this requires the user app to use av_log() instead of
-+ * (f)printf as the 2 would otherwise interfere and lead to
-+ * "Last message repeated x times" messages below (f)printf messages with some
-+ * bad luck.
-+ * Also to receive the last, "last repeated" line if any, the user app must
-+ * call av_log(NULL, AV_LOG_QUIET, "%s", ""); at the end
-+ */
-+#define AV_LOG_SKIP_REPEATED 1
-+
-+/**
-+ * Include the log severity in messages originating from codecs.
-+ *
-+ * Results in messages such as:
-+ * [rawvideo @ 0xDEADBEEF] [error] encode did not produce valid pts
-+ */
-+#define AV_LOG_PRINT_LEVEL 2
-+
-+void av_log_set_flags(int arg);
-+int av_log_get_flags(void);
-+
-+/**
-+ * @}
-+ */
-+
-+#endif /* AVUTIL_LOG_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/macros.h
-@@ -0,0 +1,50 @@
-+/*
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+/**
-+ * @file
-+ * @ingroup lavu
-+ * Utility Preprocessor macros
-+ */
-+
-+#ifndef AVUTIL_MACROS_H
-+#define AVUTIL_MACROS_H
-+
-+/**
-+ * @addtogroup preproc_misc Preprocessor String Macros
-+ *
-+ * String manipulation macros
-+ *
-+ * @{
-+ */
-+
-+#define AV_STRINGIFY(s) AV_TOSTRING(s)
-+#define AV_TOSTRING(s) #s
-+
-+#define AV_GLUE(a, b) a ## b
-+#define AV_JOIN(a, b) AV_GLUE(a, b)
-+
-+/**
-+ * @}
-+ */
-+
-+#define AV_PRAGMA(s) _Pragma(#s)
-+
-+#define FFALIGN(x, a) (((x)+(a)-1)&~((a)-1))
-+
-+#endif /* AVUTIL_MACROS_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/mathematics.h
-@@ -0,0 +1,242 @@
-+/*
-+ * copyright (c) 2005-2012 Michael Niedermayer <michaelni(a)gmx.at>
-+ *
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+/**
-+ * @file
-+ * @addtogroup lavu_math
-+ * Mathematical utilities for working with timestamp and time base.
-+ */
-+
-+#ifndef AVUTIL_MATHEMATICS_H
-+#define AVUTIL_MATHEMATICS_H
-+
-+#include <stdint.h>
-+#include <math.h>
-+#include "attributes.h"
-+#include "rational.h"
-+#include "intfloat.h"
-+
-+#ifndef M_E
-+#define M_E 2.7182818284590452354 /* e */
-+#endif
-+#ifndef M_LN2
-+#define M_LN2 0.69314718055994530942 /* log_e 2 */
-+#endif
-+#ifndef M_LN10
-+#define M_LN10 2.30258509299404568402 /* log_e 10 */
-+#endif
-+#ifndef M_LOG2_10
-+#define M_LOG2_10 3.32192809488736234787 /* log_2 10 */
-+#endif
-+#ifndef M_PHI
-+#define M_PHI 1.61803398874989484820 /* phi / golden ratio */
-+#endif
-+#ifndef M_PI
-+#define M_PI 3.14159265358979323846 /* pi */
-+#endif
-+#ifndef M_PI_2
-+#define M_PI_2 1.57079632679489661923 /* pi/2 */
-+#endif
-+#ifndef M_SQRT1_2
-+#define M_SQRT1_2 0.70710678118654752440 /* 1/sqrt(2) */
-+#endif
-+#ifndef M_SQRT2
-+#define M_SQRT2 1.41421356237309504880 /* sqrt(2) */
-+#endif
-+#ifndef NAN
-+#define NAN av_int2float(0x7fc00000)
-+#endif
-+#ifndef INFINITY
-+#define INFINITY av_int2float(0x7f800000)
-+#endif
-+
-+/**
-+ * @addtogroup lavu_math
-+ *
-+ * @{
-+ */
-+
-+/**
-+ * Rounding methods.
-+ */
-+enum AVRounding {
-+ AV_ROUND_ZERO = 0, ///< Round toward zero.
-+ AV_ROUND_INF = 1, ///< Round away from zero.
-+ AV_ROUND_DOWN = 2, ///< Round toward -infinity.
-+ AV_ROUND_UP = 3, ///< Round toward +infinity.
-+ AV_ROUND_NEAR_INF = 5, ///< Round to nearest and halfway cases away from zero.
-+ /**
-+ * Flag telling rescaling functions to pass `INT64_MIN`/`MAX` through
-+ * unchanged, avoiding special cases for #AV_NOPTS_VALUE.
-+ *
-+ * Unlike other values of the enumeration AVRounding, this value is a
-+ * bitmask that must be used in conjunction with another value of the
-+ * enumeration through a bitwise OR, in order to set behavior for normal
-+ * cases.
-+ *
-+ * @code{.c}
-+ * av_rescale_rnd(3, 1, 2, AV_ROUND_UP | AV_ROUND_PASS_MINMAX);
-+ * // Rescaling 3:
-+ * // Calculating 3 * 1 / 2
-+ * // 3 / 2 is rounded up to 2
-+ * // => 2
-+ *
-+ * av_rescale_rnd(AV_NOPTS_VALUE, 1, 2, AV_ROUND_UP | AV_ROUND_PASS_MINMAX);
-+ * // Rescaling AV_NOPTS_VALUE:
-+ * // AV_NOPTS_VALUE == INT64_MIN
-+ * // AV_NOPTS_VALUE is passed through
-+ * // => AV_NOPTS_VALUE
-+ * @endcode
-+ */
-+ AV_ROUND_PASS_MINMAX = 8192,
-+};
-+
-+/**
-+ * Compute the greatest common divisor of two integer operands.
-+ *
-+ * @param a,b Operands
-+ * @return GCD of a and b up to sign; if a >= 0 and b >= 0, return value is >= 0;
-+ * if a == 0 and b == 0, returns 0.
-+ */
-+int64_t av_const av_gcd(int64_t a, int64_t b);
-+
-+/**
-+ * Rescale a 64-bit integer with rounding to nearest.
-+ *
-+ * The operation is mathematically equivalent to `a * b / c`, but writing that
-+ * directly can overflow.
-+ *
-+ * This function is equivalent to av_rescale_rnd() with #AV_ROUND_NEAR_INF.
-+ *
-+ * @see av_rescale_rnd(), av_rescale_q(), av_rescale_q_rnd()
-+ */
-+int64_t av_rescale(int64_t a, int64_t b, int64_t c) av_const;
-+
-+/**
-+ * Rescale a 64-bit integer with specified rounding.
-+ *
-+ * The operation is mathematically equivalent to `a * b / c`, but writing that
-+ * directly can overflow, and does not support different rounding methods.
-+ *
-+ * @see av_rescale(), av_rescale_q(), av_rescale_q_rnd()
-+ */
-+int64_t av_rescale_rnd(int64_t a, int64_t b, int64_t c, enum AVRounding rnd) av_const;
-+
-+/**
-+ * Rescale a 64-bit integer by 2 rational numbers.
-+ *
-+ * The operation is mathematically equivalent to `a * bq / cq`.
-+ *
-+ * This function is equivalent to av_rescale_q_rnd() with #AV_ROUND_NEAR_INF.
-+ *
-+ * @see av_rescale(), av_rescale_rnd(), av_rescale_q_rnd()
-+ */
-+int64_t av_rescale_q(int64_t a, AVRational bq, AVRational cq) av_const;
-+
-+/**
-+ * Rescale a 64-bit integer by 2 rational numbers with specified rounding.
-+ *
-+ * The operation is mathematically equivalent to `a * bq / cq`.
-+ *
-+ * @see av_rescale(), av_rescale_rnd(), av_rescale_q()
-+ */
-+int64_t av_rescale_q_rnd(int64_t a, AVRational bq, AVRational cq,
-+ enum AVRounding rnd) av_const;
-+
-+/**
-+ * Compare two timestamps each in its own time base.
-+ *
-+ * @return One of the following values:
-+ * - -1 if `ts_a` is before `ts_b`
-+ * - 1 if `ts_a` is after `ts_b`
-+ * - 0 if they represent the same position
-+ *
-+ * @warning
-+ * The result of the function is undefined if one of the timestamps is outside
-+ * the `int64_t` range when represented in the other's timebase.
-+ */
-+int av_compare_ts(int64_t ts_a, AVRational tb_a, int64_t ts_b, AVRational tb_b);
-+
-+/**
-+ * Compare the remainders of two integer operands divided by a common divisor.
-+ *
-+ * In other words, compare the least significant `log2(mod)` bits of integers
-+ * `a` and `b`.
-+ *
-+ * @code{.c}
-+ * av_compare_mod(0x11, 0x02, 0x10) < 0 // since 0x11 % 0x10 (0x1) < 0x02 % 0x10 (0x2)
-+ * av_compare_mod(0x11, 0x02, 0x20) > 0 // since 0x11 % 0x20 (0x11) > 0x02 % 0x20 (0x02)
-+ * @endcode
-+ *
-+ * @param a,b Operands
-+ * @param mod Divisor; must be a power of 2
-+ * @return
-+ * - a negative value if `a % mod < b % mod`
-+ * - a positive value if `a % mod > b % mod`
-+ * - zero if `a % mod == b % mod`
-+ */
-+int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod);
-+
-+/**
-+ * Rescale a timestamp while preserving known durations.
-+ *
-+ * This function is designed to be called per audio packet to scale the input
-+ * timestamp to a different time base. Compared to a simple av_rescale_q()
-+ * call, this function is robust against possible inconsistent frame durations.
-+ *
-+ * The `last` parameter is a state variable that must be preserved for all
-+ * subsequent calls for the same stream. For the first call, `*last` should be
-+ * initialized to #AV_NOPTS_VALUE.
-+ *
-+ * @param[in] in_tb Input time base
-+ * @param[in] in_ts Input timestamp
-+ * @param[in] fs_tb Duration time base; typically this is finer-grained
-+ * (greater) than `in_tb` and `out_tb`
-+ * @param[in] duration Duration till the next call to this function (i.e.
-+ * duration of the current packet/frame)
-+ * @param[in,out] last Pointer to a timestamp expressed in terms of
-+ * `fs_tb`, acting as a state variable
-+ * @param[in] out_tb Output timebase
-+ * @return Timestamp expressed in terms of `out_tb`
-+ *
-+ * @note In the context of this function, "duration" is in term of samples, not
-+ * seconds.
-+ */
-+int64_t av_rescale_delta(AVRational in_tb, int64_t in_ts, AVRational fs_tb, int duration, int64_t *last, AVRational out_tb);
-+
-+/**
-+ * Add a value to a timestamp.
-+ *
-+ * This function guarantees that when the same value is repeatly added that
-+ * no accumulation of rounding errors occurs.
-+ *
-+ * @param[in] ts Input timestamp
-+ * @param[in] ts_tb Input timestamp time base
-+ * @param[in] inc Value to be added
-+ * @param[in] inc_tb Time base of `inc`
-+ */
-+int64_t av_add_stable(AVRational ts_tb, int64_t ts, AVRational inc_tb, int64_t inc);
-+
-+
-+/**
-+ * @}
-+ */
-+
-+#endif /* AVUTIL_MATHEMATICS_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/mem.h
-@@ -0,0 +1,700 @@
-+/*
-+ * copyright (c) 2006 Michael Niedermayer <michaelni(a)gmx.at>
-+ *
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+/**
-+ * @file
-+ * @ingroup lavu_mem
-+ * Memory handling functions
-+ */
-+
-+#ifndef AVUTIL_MEM_H
-+#define AVUTIL_MEM_H
-+
-+#include <limits.h>
-+#include <stdint.h>
-+
-+#include "attributes.h"
-+#include "error.h"
-+#include "avutil.h"
-+
-+/**
-+ * @addtogroup lavu_mem
-+ * Utilities for manipulating memory.
-+ *
-+ * FFmpeg has several applications of memory that are not required of a typical
-+ * program. For example, the computing-heavy components like video decoding and
-+ * encoding can be sped up significantly through the use of aligned memory.
-+ *
-+ * However, for each of FFmpeg's applications of memory, there might not be a
-+ * recognized or standardized API for that specific use. Memory alignment, for
-+ * instance, varies wildly depending on operating systems, architectures, and
-+ * compilers. Hence, this component of @ref libavutil is created to make
-+ * dealing with memory consistently possible on all platforms.
-+ *
-+ * @{
-+ *
-+ * @defgroup lavu_mem_macros Alignment Macros
-+ * Helper macros for declaring aligned variables.
-+ * @{
-+ */
-+
-+/**
-+ * @def DECLARE_ALIGNED(n,t,v)
-+ * Declare a variable that is aligned in memory.
-+ *
-+ * @code{.c}
-+ * DECLARE_ALIGNED(16, uint16_t, aligned_int) = 42;
-+ * DECLARE_ALIGNED(32, uint8_t, aligned_array)[128];
-+ *
-+ * // The default-alignment equivalent would be
-+ * uint16_t aligned_int = 42;
-+ * uint8_t aligned_array[128];
-+ * @endcode
-+ *
-+ * @param n Minimum alignment in bytes
-+ * @param t Type of the variable (or array element)
-+ * @param v Name of the variable
-+ */
-+
-+/**
-+ * @def DECLARE_ASM_ALIGNED(n,t,v)
-+ * Declare an aligned variable appropriate for use in inline assembly code.
-+ *
-+ * @code{.c}
-+ * DECLARE_ASM_ALIGNED(16, uint64_t, pw_08) = UINT64_C(0x0008000800080008);
-+ * @endcode
-+ *
-+ * @param n Minimum alignment in bytes
-+ * @param t Type of the variable (or array element)
-+ * @param v Name of the variable
-+ */
-+
-+/**
-+ * @def DECLARE_ASM_CONST(n,t,v)
-+ * Declare a static constant aligned variable appropriate for use in inline
-+ * assembly code.
-+ *
-+ * @code{.c}
-+ * DECLARE_ASM_CONST(16, uint64_t, pw_08) = UINT64_C(0x0008000800080008);
-+ * @endcode
-+ *
-+ * @param n Minimum alignment in bytes
-+ * @param t Type of the variable (or array element)
-+ * @param v Name of the variable
-+ */
-+
-+#if defined(__INTEL_COMPILER) && __INTEL_COMPILER < 1110 || defined(__SUNPRO_C)
-+ #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v
-+ #define DECLARE_ASM_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v
-+ #define DECLARE_ASM_CONST(n,t,v) const t __attribute__ ((aligned (n))) v
-+#elif defined(__DJGPP__)
-+ #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (FFMIN(n, 16)))) v
-+ #define DECLARE_ASM_ALIGNED(n,t,v) t av_used __attribute__ ((aligned (FFMIN(n, 16)))) v
-+ #define DECLARE_ASM_CONST(n,t,v) static const t av_used __attribute__ ((aligned (FFMIN(n, 16)))) v
-+#elif defined(__GNUC__) || defined(__clang__)
-+ #define DECLARE_ALIGNED(n,t,v) t __attribute__ ((aligned (n))) v
-+ #define DECLARE_ASM_ALIGNED(n,t,v) t av_used __attribute__ ((aligned (n))) v
-+ #define DECLARE_ASM_CONST(n,t,v) static const t av_used __attribute__ ((aligned (n))) v
-+#elif defined(_MSC_VER)
-+ #define DECLARE_ALIGNED(n,t,v) __declspec(align(n)) t v
-+ #define DECLARE_ASM_ALIGNED(n,t,v) __declspec(align(n)) t v
-+ #define DECLARE_ASM_CONST(n,t,v) __declspec(align(n)) static const t v
-+#else
-+ #define DECLARE_ALIGNED(n,t,v) t v
-+ #define DECLARE_ASM_ALIGNED(n,t,v) t v
-+ #define DECLARE_ASM_CONST(n,t,v) static const t v
-+#endif
-+
-+/**
-+ * @}
-+ */
-+
-+/**
-+ * @defgroup lavu_mem_attrs Function Attributes
-+ * Function attributes applicable to memory handling functions.
-+ *
-+ * These function attributes can help compilers emit more useful warnings, or
-+ * generate better code.
-+ * @{
-+ */
-+
-+/**
-+ * @def av_malloc_attrib
-+ * Function attribute denoting a malloc-like function.
-+ *
-+ * @see <a href="https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-g_t_0040code_007bmalloc_007d-function-attribute-3251">Function attribute `malloc` in GCC's documentation</a>
-+ */
-+
-+#if AV_GCC_VERSION_AT_LEAST(3,1)
-+ #define av_malloc_attrib __attribute__((__malloc__))
-+#else
-+ #define av_malloc_attrib
-+#endif
-+
-+/**
-+ * @def av_alloc_size(...)
-+ * Function attribute used on a function that allocates memory, whose size is
-+ * given by the specified parameter(s).
-+ *
-+ * @code{.c}
-+ * void *av_malloc(size_t size) av_alloc_size(1);
-+ * void *av_calloc(size_t nmemb, size_t size) av_alloc_size(1, 2);
-+ * @endcode
-+ *
-+ * @param ... One or two parameter indexes, separated by a comma
-+ *
-+ * @see <a href="https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-g_t_0040code_007balloc_005fsize_007d-function-attribute-3220">Function attribute `alloc_size` in GCC's documentation</a>
-+ */
-+
-+#if AV_GCC_VERSION_AT_LEAST(4,3)
-+ #define av_alloc_size(...) __attribute__((alloc_size(__VA_ARGS__)))
-+#else
-+ #define av_alloc_size(...)
-+#endif
-+
-+/**
-+ * @}
-+ */
-+
-+/**
-+ * @defgroup lavu_mem_funcs Heap Management
-+ * Functions responsible for allocating, freeing, and copying memory.
-+ *
-+ * All memory allocation functions have a built-in upper limit of `INT_MAX`
-+ * bytes. This may be changed with av_max_alloc(), although exercise extreme
-+ * caution when doing so.
-+ *
-+ * @{
-+ */
-+
-+/**
-+ * Allocate a memory block with alignment suitable for all memory accesses
-+ * (including vectors if available on the CPU).
-+ *
-+ * @param size Size in bytes for the memory block to be allocated
-+ * @return Pointer to the allocated block, or `NULL` if the block cannot
-+ * be allocated
-+ * @see av_mallocz()
-+ */
-+void *av_malloc(size_t size) av_malloc_attrib av_alloc_size(1);
-+
-+/**
-+ * Allocate a memory block with alignment suitable for all memory accesses
-+ * (including vectors if available on the CPU) and zero all the bytes of the
-+ * block.
-+ *
-+ * @param size Size in bytes for the memory block to be allocated
-+ * @return Pointer to the allocated block, or `NULL` if it cannot be allocated
-+ * @see av_malloc()
-+ */
-+void *av_mallocz(size_t size) av_malloc_attrib av_alloc_size(1);
-+
-+/**
-+ * Allocate a memory block for an array with av_malloc().
-+ *
-+ * The allocated memory will have size `size * nmemb` bytes.
-+ *
-+ * @param nmemb Number of element
-+ * @param size Size of a single element
-+ * @return Pointer to the allocated block, or `NULL` if the block cannot
-+ * be allocated
-+ * @see av_malloc()
-+ */
-+av_alloc_size(1, 2) void *av_malloc_array(size_t nmemb, size_t size);
-+
-+/**
-+ * Allocate a memory block for an array with av_mallocz().
-+ *
-+ * The allocated memory will have size `size * nmemb` bytes.
-+ *
-+ * @param nmemb Number of elements
-+ * @param size Size of the single element
-+ * @return Pointer to the allocated block, or `NULL` if the block cannot
-+ * be allocated
-+ *
-+ * @see av_mallocz()
-+ * @see av_malloc_array()
-+ */
-+av_alloc_size(1, 2) void *av_mallocz_array(size_t nmemb, size_t size);
-+
-+/**
-+ * Non-inlined equivalent of av_mallocz_array().
-+ *
-+ * Created for symmetry with the calloc() C function.
-+ */
-+void *av_calloc(size_t nmemb, size_t size) av_malloc_attrib;
-+
-+/**
-+ * Allocate, reallocate, or free a block of memory.
-+ *
-+ * If `ptr` is `NULL` and `size` > 0, allocate a new block. If `size` is
-+ * zero, free the memory block pointed to by `ptr`. Otherwise, expand or
-+ * shrink that block of memory according to `size`.
-+ *
-+ * @param ptr Pointer to a memory block already allocated with
-+ * av_realloc() or `NULL`
-+ * @param size Size in bytes of the memory block to be allocated or
-+ * reallocated
-+ *
-+ * @return Pointer to a newly-reallocated block or `NULL` if the block
-+ * cannot be reallocated or the function is used to free the memory block
-+ *
-+ * @warning Unlike av_malloc(), the returned pointer is not guaranteed to be
-+ * correctly aligned.
-+ * @see av_fast_realloc()
-+ * @see av_reallocp()
-+ */
-+void *av_realloc(void *ptr, size_t size) av_alloc_size(2);
-+
-+/**
-+ * Allocate, reallocate, or free a block of memory through a pointer to a
-+ * pointer.
-+ *
-+ * If `*ptr` is `NULL` and `size` > 0, allocate a new block. If `size` is
-+ * zero, free the memory block pointed to by `*ptr`. Otherwise, expand or
-+ * shrink that block of memory according to `size`.
-+ *
-+ * @param[in,out] ptr Pointer to a pointer to a memory block already allocated
-+ * with av_realloc(), or a pointer to `NULL`. The pointer
-+ * is updated on success, or freed on failure.
-+ * @param[in] size Size in bytes for the memory block to be allocated or
-+ * reallocated
-+ *
-+ * @return Zero on success, an AVERROR error code on failure
-+ *
-+ * @warning Unlike av_malloc(), the allocated memory is not guaranteed to be
-+ * correctly aligned.
-+ */
-+av_warn_unused_result
-+int av_reallocp(void *ptr, size_t size);
-+
-+/**
-+ * Allocate, reallocate, or free a block of memory.
-+ *
-+ * This function does the same thing as av_realloc(), except:
-+ * - It takes two size arguments and allocates `nelem * elsize` bytes,
-+ * after checking the result of the multiplication for integer overflow.
-+ * - It frees the input block in case of failure, thus avoiding the memory
-+ * leak with the classic
-+ * @code{.c}
-+ * buf = realloc(buf);
-+ * if (!buf)
-+ * return -1;
-+ * @endcode
-+ * pattern.
-+ */
-+void *av_realloc_f(void *ptr, size_t nelem, size_t elsize);
-+
-+/**
-+ * Allocate, reallocate, or free an array.
-+ *
-+ * If `ptr` is `NULL` and `nmemb` > 0, allocate a new block. If
-+ * `nmemb` is zero, free the memory block pointed to by `ptr`.
-+ *
-+ * @param ptr Pointer to a memory block already allocated with
-+ * av_realloc() or `NULL`
-+ * @param nmemb Number of elements in the array
-+ * @param size Size of the single element of the array
-+ *
-+ * @return Pointer to a newly-reallocated block or NULL if the block
-+ * cannot be reallocated or the function is used to free the memory block
-+ *
-+ * @warning Unlike av_malloc(), the allocated memory is not guaranteed to be
-+ * correctly aligned.
-+ * @see av_reallocp_array()
-+ */
-+av_alloc_size(2, 3) void *av_realloc_array(void *ptr, size_t nmemb, size_t size);
-+
-+/**
-+ * Allocate, reallocate, or free an array through a pointer to a pointer.
-+ *
-+ * If `*ptr` is `NULL` and `nmemb` > 0, allocate a new block. If `nmemb` is
-+ * zero, free the memory block pointed to by `*ptr`.
-+ *
-+ * @param[in,out] ptr Pointer to a pointer to a memory block already
-+ * allocated with av_realloc(), or a pointer to `NULL`.
-+ * The pointer is updated on success, or freed on failure.
-+ * @param[in] nmemb Number of elements
-+ * @param[in] size Size of the single element
-+ *
-+ * @return Zero on success, an AVERROR error code on failure
-+ *
-+ * @warning Unlike av_malloc(), the allocated memory is not guaranteed to be
-+ * correctly aligned.
-+ */
-+av_alloc_size(2, 3) int av_reallocp_array(void *ptr, size_t nmemb, size_t size);
-+
-+/**
-+ * Reallocate the given buffer if it is not large enough, otherwise do nothing.
-+ *
-+ * If the given buffer is `NULL`, then a new uninitialized buffer is allocated.
-+ *
-+ * If the given buffer is not large enough, and reallocation fails, `NULL` is
-+ * returned and `*size` is set to 0, but the original buffer is not changed or
-+ * freed.
-+ *
-+ * A typical use pattern follows:
-+ *
-+ * @code{.c}
-+ * uint8_t *buf = ...;
-+ * uint8_t *new_buf = av_fast_realloc(buf, &current_size, size_needed);
-+ * if (!new_buf) {
-+ * // Allocation failed; clean up original buffer
-+ * av_freep(&buf);
-+ * return AVERROR(ENOMEM);
-+ * }
-+ * @endcode
-+ *
-+ * @param[in,out] ptr Already allocated buffer, or `NULL`
-+ * @param[in,out] size Pointer to current size of buffer `ptr`. `*size` is
-+ * changed to `min_size` in case of success or 0 in
-+ * case of failure
-+ * @param[in] min_size New size of buffer `ptr`
-+ * @return `ptr` if the buffer is large enough, a pointer to newly reallocated
-+ * buffer if the buffer was not large enough, or `NULL` in case of
-+ * error
-+ * @see av_realloc()
-+ * @see av_fast_malloc()
-+ */
-+void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size);
-+
-+/**
-+ * Allocate a buffer, reusing the given one if large enough.
-+ *
-+ * Contrary to av_fast_realloc(), the current buffer contents might not be
-+ * preserved and on error the old buffer is freed, thus no special handling to
-+ * avoid memleaks is necessary.
-+ *
-+ * `*ptr` is allowed to be `NULL`, in which case allocation always happens if
-+ * `size_needed` is greater than 0.
-+ *
-+ * @code{.c}
-+ * uint8_t *buf = ...;
-+ * av_fast_malloc(&buf, &current_size, size_needed);
-+ * if (!buf) {
-+ * // Allocation failed; buf already freed
-+ * return AVERROR(ENOMEM);
-+ * }
-+ * @endcode
-+ *
-+ * @param[in,out] ptr Pointer to pointer to an already allocated buffer.
-+ * `*ptr` will be overwritten with pointer to new
-+ * buffer on success or `NULL` on failure
-+ * @param[in,out] size Pointer to current size of buffer `*ptr`. `*size` is
-+ * changed to `min_size` in case of success or 0 in
-+ * case of failure
-+ * @param[in] min_size New size of buffer `*ptr`
-+ * @see av_realloc()
-+ * @see av_fast_mallocz()
-+ */
-+void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size);
-+
-+/**
-+ * Allocate and clear a buffer, reusing the given one if large enough.
-+ *
-+ * Like av_fast_malloc(), but all newly allocated space is initially cleared.
-+ * Reused buffer is not cleared.
-+ *
-+ * `*ptr` is allowed to be `NULL`, in which case allocation always happens if
-+ * `size_needed` is greater than 0.
-+ *
-+ * @param[in,out] ptr Pointer to pointer to an already allocated buffer.
-+ * `*ptr` will be overwritten with pointer to new
-+ * buffer on success or `NULL` on failure
-+ * @param[in,out] size Pointer to current size of buffer `*ptr`. `*size` is
-+ * changed to `min_size` in case of success or 0 in
-+ * case of failure
-+ * @param[in] min_size New size of buffer `*ptr`
-+ * @see av_fast_malloc()
-+ */
-+void av_fast_mallocz(void *ptr, unsigned int *size, size_t min_size);
-+
-+/**
-+ * Free a memory block which has been allocated with a function of av_malloc()
-+ * or av_realloc() family.
-+ *
-+ * @param ptr Pointer to the memory block which should be freed.
-+ *
-+ * @note `ptr = NULL` is explicitly allowed.
-+ * @note It is recommended that you use av_freep() instead, to prevent leaving
-+ * behind dangling pointers.
-+ * @see av_freep()
-+ */
-+void av_free(void *ptr);
-+
-+/**
-+ * Free a memory block which has been allocated with a function of av_malloc()
-+ * or av_realloc() family, and set the pointer pointing to it to `NULL`.
-+ *
-+ * @code{.c}
-+ * uint8_t *buf = av_malloc(16);
-+ * av_free(buf);
-+ * // buf now contains a dangling pointer to freed memory, and accidental
-+ * // dereference of buf will result in a use-after-free, which may be a
-+ * // security risk.
-+ *
-+ * uint8_t *buf = av_malloc(16);
-+ * av_freep(&buf);
-+ * // buf is now NULL, and accidental dereference will only result in a
-+ * // NULL-pointer dereference.
-+ * @endcode
-+ *
-+ * @param ptr Pointer to the pointer to the memory block which should be freed
-+ * @note `*ptr = NULL` is safe and leads to no action.
-+ * @see av_free()
-+ */
-+void av_freep(void *ptr);
-+
-+/**
-+ * Duplicate a string.
-+ *
-+ * @param s String to be duplicated
-+ * @return Pointer to a newly-allocated string containing a
-+ * copy of `s` or `NULL` if the string cannot be allocated
-+ * @see av_strndup()
-+ */
-+char *av_strdup(const char *s) av_malloc_attrib;
-+
-+/**
-+ * Duplicate a substring of a string.
-+ *
-+ * @param s String to be duplicated
-+ * @param len Maximum length of the resulting string (not counting the
-+ * terminating byte)
-+ * @return Pointer to a newly-allocated string containing a
-+ * substring of `s` or `NULL` if the string cannot be allocated
-+ */
-+char *av_strndup(const char *s, size_t len) av_malloc_attrib;
-+
-+/**
-+ * Duplicate a buffer with av_malloc().
-+ *
-+ * @param p Buffer to be duplicated
-+ * @param size Size in bytes of the buffer copied
-+ * @return Pointer to a newly allocated buffer containing a
-+ * copy of `p` or `NULL` if the buffer cannot be allocated
-+ */
-+void *av_memdup(const void *p, size_t size);
-+
-+/**
-+ * Overlapping memcpy() implementation.
-+ *
-+ * @param dst Destination buffer
-+ * @param back Number of bytes back to start copying (i.e. the initial size of
-+ * the overlapping window); must be > 0
-+ * @param cnt Number of bytes to copy; must be >= 0
-+ *
-+ * @note `cnt > back` is valid, this will copy the bytes we just copied,
-+ * thus creating a repeating pattern with a period length of `back`.
-+ */
-+void av_memcpy_backptr(uint8_t *dst, int back, int cnt);
-+
-+/**
-+ * @}
-+ */
-+
-+/**
-+ * @defgroup lavu_mem_dynarray Dynamic Array
-+ *
-+ * Utilities to make an array grow when needed.
-+ *
-+ * Sometimes, the programmer would want to have an array that can grow when
-+ * needed. The libavutil dynamic array utilities fill that need.
-+ *
-+ * libavutil supports two systems of appending elements onto a dynamically
-+ * allocated array, the first one storing the pointer to the value in the
-+ * array, and the second storing the value directly. In both systems, the
-+ * caller is responsible for maintaining a variable containing the length of
-+ * the array, as well as freeing of the array after use.
-+ *
-+ * The first system stores pointers to values in a block of dynamically
-+ * allocated memory. Since only pointers are stored, the function does not need
-+ * to know the size of the type. Both av_dynarray_add() and
-+ * av_dynarray_add_nofree() implement this system.
-+ *
-+ * @code
-+ * type **array = NULL; //< an array of pointers to values
-+ * int nb = 0; //< a variable to keep track of the length of the array
-+ *
-+ * type to_be_added = ...;
-+ * type to_be_added2 = ...;
-+ *
-+ * av_dynarray_add(&array, &nb, &to_be_added);
-+ * if (nb == 0)
-+ * return AVERROR(ENOMEM);
-+ *
-+ * av_dynarray_add(&array, &nb, &to_be_added2);
-+ * if (nb == 0)
-+ * return AVERROR(ENOMEM);
-+ *
-+ * // Now:
-+ * // nb == 2
-+ * // &to_be_added == array[0]
-+ * // &to_be_added2 == array[1]
-+ *
-+ * av_freep(&array);
-+ * @endcode
-+ *
-+ * The second system stores the value directly in a block of memory. As a
-+ * result, the function has to know the size of the type. av_dynarray2_add()
-+ * implements this mechanism.
-+ *
-+ * @code
-+ * type *array = NULL; //< an array of values
-+ * int nb = 0; //< a variable to keep track of the length of the array
-+ *
-+ * type to_be_added = ...;
-+ * type to_be_added2 = ...;
-+ *
-+ * type *addr = av_dynarray2_add((void **)&array, &nb, sizeof(*array), NULL);
-+ * if (!addr)
-+ * return AVERROR(ENOMEM);
-+ * memcpy(addr, &to_be_added, sizeof(to_be_added));
-+ *
-+ * // Shortcut of the above.
-+ * type *addr = av_dynarray2_add((void **)&array, &nb, sizeof(*array),
-+ * (const void *)&to_be_added2);
-+ * if (!addr)
-+ * return AVERROR(ENOMEM);
-+ *
-+ * // Now:
-+ * // nb == 2
-+ * // to_be_added == array[0]
-+ * // to_be_added2 == array[1]
-+ *
-+ * av_freep(&array);
-+ * @endcode
-+ *
-+ * @{
-+ */
-+
-+/**
-+ * Add the pointer to an element to a dynamic array.
-+ *
-+ * The array to grow is supposed to be an array of pointers to
-+ * structures, and the element to add must be a pointer to an already
-+ * allocated structure.
-+ *
-+ * The array is reallocated when its size reaches powers of 2.
-+ * Therefore, the amortized cost of adding an element is constant.
-+ *
-+ * In case of success, the pointer to the array is updated in order to
-+ * point to the new grown array, and the number pointed to by `nb_ptr`
-+ * is incremented.
-+ * In case of failure, the array is freed, `*tab_ptr` is set to `NULL` and
-+ * `*nb_ptr` is set to 0.
-+ *
-+ * @param[in,out] tab_ptr Pointer to the array to grow
-+ * @param[in,out] nb_ptr Pointer to the number of elements in the array
-+ * @param[in] elem Element to add
-+ * @see av_dynarray_add_nofree(), av_dynarray2_add()
-+ */
-+void av_dynarray_add(void *tab_ptr, int *nb_ptr, void *elem);
-+
-+/**
-+ * Add an element to a dynamic array.
-+ *
-+ * Function has the same functionality as av_dynarray_add(),
-+ * but it doesn't free memory on fails. It returns error code
-+ * instead and leave current buffer untouched.
-+ *
-+ * @return >=0 on success, negative otherwise
-+ * @see av_dynarray_add(), av_dynarray2_add()
-+ */
-+av_warn_unused_result
-+int av_dynarray_add_nofree(void *tab_ptr, int *nb_ptr, void *elem);
-+
-+/**
-+ * Add an element of size `elem_size` to a dynamic array.
-+ *
-+ * The array is reallocated when its number of elements reaches powers of 2.
-+ * Therefore, the amortized cost of adding an element is constant.
-+ *
-+ * In case of success, the pointer to the array is updated in order to
-+ * point to the new grown array, and the number pointed to by `nb_ptr`
-+ * is incremented.
-+ * In case of failure, the array is freed, `*tab_ptr` is set to `NULL` and
-+ * `*nb_ptr` is set to 0.
-+ *
-+ * @param[in,out] tab_ptr Pointer to the array to grow
-+ * @param[in,out] nb_ptr Pointer to the number of elements in the array
-+ * @param[in] elem_size Size in bytes of an element in the array
-+ * @param[in] elem_data Pointer to the data of the element to add. If
-+ * `NULL`, the space of the newly added element is
-+ * allocated but left uninitialized.
-+ *
-+ * @return Pointer to the data of the element to copy in the newly allocated
-+ * space
-+ * @see av_dynarray_add(), av_dynarray_add_nofree()
-+ */
-+void *av_dynarray2_add(void **tab_ptr, int *nb_ptr, size_t elem_size,
-+ const uint8_t *elem_data);
-+
-+/**
-+ * @}
-+ */
-+
-+/**
-+ * @defgroup lavu_mem_misc Miscellaneous Functions
-+ *
-+ * Other functions related to memory allocation.
-+ *
-+ * @{
-+ */
-+
-+/**
-+ * Multiply two `size_t` values checking for overflow.
-+ *
-+ * @param[in] a,b Operands of multiplication
-+ * @param[out] r Pointer to the result of the operation
-+ * @return 0 on success, AVERROR(EINVAL) on overflow
-+ */
-+static inline int av_size_mult(size_t a, size_t b, size_t *r)
-+{
-+ size_t t = a * b;
-+ /* Hack inspired from glibc: don't try the division if nelem and elsize
-+ * are both less than sqrt(SIZE_MAX). */
-+ if ((a | b) >= ((size_t)1 << (sizeof(size_t) * 4)) && a && t / a != b)
-+ return AVERROR(EINVAL);
-+ *r = t;
-+ return 0;
-+}
-+
-+/**
-+ * Set the maximum size that may be allocated in one block.
-+ *
-+ * The value specified with this function is effective for all libavutil's @ref
-+ * lavu_mem_funcs "heap management functions."
-+ *
-+ * By default, the max value is defined as `INT_MAX`.
-+ *
-+ * @param max Value to be set as the new maximum size
-+ *
-+ * @warning Exercise extreme caution when using this function. Don't touch
-+ * this if you do not understand the full consequence of doing so.
-+ */
-+void av_max_alloc(size_t max);
-+
-+/**
-+ * @}
-+ * @}
-+ */
-+
-+#endif /* AVUTIL_MEM_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/pixfmt.h
-@@ -0,0 +1,529 @@
-+/*
-+ * copyright (c) 2006 Michael Niedermayer <michaelni(a)gmx.at>
-+ *
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+#ifndef AVUTIL_PIXFMT_H
-+#define AVUTIL_PIXFMT_H
-+
-+/**
-+ * @file
-+ * pixel format definitions
-+ */
-+
-+#include "libavutil/avconfig.h"
-+#include "version.h"
-+
-+#define AVPALETTE_SIZE 1024
-+#define AVPALETTE_COUNT 256
-+
-+/**
-+ * Pixel format.
-+ *
-+ * @note
-+ * AV_PIX_FMT_RGB32 is handled in an endian-specific manner. An RGBA
-+ * color is put together as:
-+ * (A << 24) | (R << 16) | (G << 8) | B
-+ * This is stored as BGRA on little-endian CPU architectures and ARGB on
-+ * big-endian CPUs.
-+ *
-+ * @par
-+ * When the pixel format is palettized RGB32 (AV_PIX_FMT_PAL8), the palettized
-+ * image data is stored in AVFrame.data[0]. The palette is transported in
-+ * AVFrame.data[1], is 1024 bytes long (256 4-byte entries) and is
-+ * formatted the same as in AV_PIX_FMT_RGB32 described above (i.e., it is
-+ * also endian-specific). Note also that the individual RGB32 palette
-+ * components stored in AVFrame.data[1] should be in the range 0..255.
-+ * This is important as many custom PAL8 video codecs that were designed
-+ * to run on the IBM VGA graphics adapter use 6-bit palette components.
-+ *
-+ * @par
-+ * For all the 8 bits per pixel formats, an RGB32 palette is in data[1] like
-+ * for pal8. This palette is filled in automatically by the function
-+ * allocating the picture.
-+ */
-+enum AVPixelFormat {
-+ AV_PIX_FMT_NONE = -1,
-+ AV_PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
-+ AV_PIX_FMT_YUYV422, ///< packed YUV 4:2:2, 16bpp, Y0 Cb Y1 Cr
-+ AV_PIX_FMT_RGB24, ///< packed RGB 8:8:8, 24bpp, RGBRGB...
-+ AV_PIX_FMT_BGR24, ///< packed RGB 8:8:8, 24bpp, BGRBGR...
-+ AV_PIX_FMT_YUV422P, ///< planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
-+ AV_PIX_FMT_YUV444P, ///< planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
-+ AV_PIX_FMT_YUV410P, ///< planar YUV 4:1:0, 9bpp, (1 Cr & Cb sample per 4x4 Y samples)
-+ AV_PIX_FMT_YUV411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples)
-+ AV_PIX_FMT_GRAY8, ///< Y , 8bpp
-+ AV_PIX_FMT_MONOWHITE, ///< Y , 1bpp, 0 is white, 1 is black, in each byte pixels are ordered from the msb to the lsb
-+ AV_PIX_FMT_MONOBLACK, ///< Y , 1bpp, 0 is black, 1 is white, in each byte pixels are ordered from the msb to the lsb
-+ AV_PIX_FMT_PAL8, ///< 8 bits with AV_PIX_FMT_RGB32 palette
-+ AV_PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting color_range
-+ AV_PIX_FMT_YUVJ422P, ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV422P and setting color_range
-+ AV_PIX_FMT_YUVJ444P, ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV444P and setting color_range
-+ AV_PIX_FMT_UYVY422, ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1
-+ AV_PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3
-+ AV_PIX_FMT_BGR8, ///< packed RGB 3:3:2, 8bpp, (msb)2B 3G 3R(lsb)
-+ AV_PIX_FMT_BGR4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1B 2G 1R(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits
-+ AV_PIX_FMT_BGR4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1B 2G 1R(lsb)
-+ AV_PIX_FMT_RGB8, ///< packed RGB 3:3:2, 8bpp, (msb)2R 3G 3B(lsb)
-+ AV_PIX_FMT_RGB4, ///< packed RGB 1:2:1 bitstream, 4bpp, (msb)1R 2G 1B(lsb), a byte contains two pixels, the first pixel in the byte is the one composed by the 4 msb bits
-+ AV_PIX_FMT_RGB4_BYTE, ///< packed RGB 1:2:1, 8bpp, (msb)1R 2G 1B(lsb)
-+ AV_PIX_FMT_NV12, ///< planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V)
-+ AV_PIX_FMT_NV21, ///< as above, but U and V bytes are swapped
-+
-+ AV_PIX_FMT_ARGB, ///< packed ARGB 8:8:8:8, 32bpp, ARGBARGB...
-+ AV_PIX_FMT_RGBA, ///< packed RGBA 8:8:8:8, 32bpp, RGBARGBA...
-+ AV_PIX_FMT_ABGR, ///< packed ABGR 8:8:8:8, 32bpp, ABGRABGR...
-+ AV_PIX_FMT_BGRA, ///< packed BGRA 8:8:8:8, 32bpp, BGRABGRA...
-+
-+ AV_PIX_FMT_GRAY16BE, ///< Y , 16bpp, big-endian
-+ AV_PIX_FMT_GRAY16LE, ///< Y , 16bpp, little-endian
-+ AV_PIX_FMT_YUV440P, ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples)
-+ AV_PIX_FMT_YUVJ440P, ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV440P and setting color_range
-+ AV_PIX_FMT_YUVA420P, ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples)
-+ AV_PIX_FMT_RGB48BE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian
-+ AV_PIX_FMT_RGB48LE, ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian
-+
-+ AV_PIX_FMT_RGB565BE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), big-endian
-+ AV_PIX_FMT_RGB565LE, ///< packed RGB 5:6:5, 16bpp, (msb) 5R 6G 5B(lsb), little-endian
-+ AV_PIX_FMT_RGB555BE, ///< packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), big-endian , X=unused/undefined
-+ AV_PIX_FMT_RGB555LE, ///< packed RGB 5:5:5, 16bpp, (msb)1X 5R 5G 5B(lsb), little-endian, X=unused/undefined
-+
-+ AV_PIX_FMT_BGR565BE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), big-endian
-+ AV_PIX_FMT_BGR565LE, ///< packed BGR 5:6:5, 16bpp, (msb) 5B 6G 5R(lsb), little-endian
-+ AV_PIX_FMT_BGR555BE, ///< packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), big-endian , X=unused/undefined
-+ AV_PIX_FMT_BGR555LE, ///< packed BGR 5:5:5, 16bpp, (msb)1X 5B 5G 5R(lsb), little-endian, X=unused/undefined
-+
-+#if FF_API_VAAPI
-+ /** @name Deprecated pixel formats */
-+ /**@{*/
-+ AV_PIX_FMT_VAAPI_MOCO, ///< HW acceleration through VA API at motion compensation entry-point, Picture.data[3] contains a vaapi_render_state struct which contains macroblocks as well as various fields extracted from headers
-+ AV_PIX_FMT_VAAPI_IDCT, ///< HW acceleration through VA API at IDCT entry-point, Picture.data[3] contains a vaapi_render_state struct which contains fields extracted from headers
-+ AV_PIX_FMT_VAAPI_VLD, ///< HW decoding through VA API, Picture.data[3] contains a VASurfaceID
-+ /**@}*/
-+ AV_PIX_FMT_VAAPI = AV_PIX_FMT_VAAPI_VLD,
-+#else
-+ /**
-+ * Hardware acceleration through VA-API, data[3] contains a
-+ * VASurfaceID.
-+ */
-+ AV_PIX_FMT_VAAPI,
-+#endif
-+
-+ AV_PIX_FMT_YUV420P16LE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
-+ AV_PIX_FMT_YUV420P16BE, ///< planar YUV 4:2:0, 24bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
-+ AV_PIX_FMT_YUV422P16LE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
-+ AV_PIX_FMT_YUV422P16BE, ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
-+ AV_PIX_FMT_YUV444P16LE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
-+ AV_PIX_FMT_YUV444P16BE, ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
-+ AV_PIX_FMT_DXVA2_VLD, ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer
-+
-+ AV_PIX_FMT_RGB444LE, ///< packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), little-endian, X=unused/undefined
-+ AV_PIX_FMT_RGB444BE, ///< packed RGB 4:4:4, 16bpp, (msb)4X 4R 4G 4B(lsb), big-endian, X=unused/undefined
-+ AV_PIX_FMT_BGR444LE, ///< packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), little-endian, X=unused/undefined
-+ AV_PIX_FMT_BGR444BE, ///< packed BGR 4:4:4, 16bpp, (msb)4X 4B 4G 4R(lsb), big-endian, X=unused/undefined
-+ AV_PIX_FMT_YA8, ///< 8 bits gray, 8 bits alpha
-+
-+ AV_PIX_FMT_Y400A = AV_PIX_FMT_YA8, ///< alias for AV_PIX_FMT_YA8
-+ AV_PIX_FMT_GRAY8A= AV_PIX_FMT_YA8, ///< alias for AV_PIX_FMT_YA8
-+
-+ AV_PIX_FMT_BGR48BE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian
-+ AV_PIX_FMT_BGR48LE, ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian
-+
-+ /**
-+ * The following 12 formats have the disadvantage of needing 1 format for each bit depth.
-+ * Notice that each 9/10 bits sample is stored in 16 bits with extra padding.
-+ * If you want to support multiple bit depths, then using AV_PIX_FMT_YUV420P16* with the bpp stored separately is better.
-+ */
-+ AV_PIX_FMT_YUV420P9BE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
-+ AV_PIX_FMT_YUV420P9LE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
-+ AV_PIX_FMT_YUV420P10BE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
-+ AV_PIX_FMT_YUV420P10LE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
-+ AV_PIX_FMT_YUV422P10BE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
-+ AV_PIX_FMT_YUV422P10LE,///< planar YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
-+ AV_PIX_FMT_YUV444P9BE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
-+ AV_PIX_FMT_YUV444P9LE, ///< planar YUV 4:4:4, 27bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
-+ AV_PIX_FMT_YUV444P10BE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
-+ AV_PIX_FMT_YUV444P10LE,///< planar YUV 4:4:4, 30bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
-+ AV_PIX_FMT_YUV422P9BE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
-+ AV_PIX_FMT_YUV422P9LE, ///< planar YUV 4:2:2, 18bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
-+ AV_PIX_FMT_GBRP, ///< planar GBR 4:4:4 24bpp
-+ AV_PIX_FMT_GBR24P = AV_PIX_FMT_GBRP, // alias for #AV_PIX_FMT_GBRP
-+ AV_PIX_FMT_GBRP9BE, ///< planar GBR 4:4:4 27bpp, big-endian
-+ AV_PIX_FMT_GBRP9LE, ///< planar GBR 4:4:4 27bpp, little-endian
-+ AV_PIX_FMT_GBRP10BE, ///< planar GBR 4:4:4 30bpp, big-endian
-+ AV_PIX_FMT_GBRP10LE, ///< planar GBR 4:4:4 30bpp, little-endian
-+ AV_PIX_FMT_GBRP16BE, ///< planar GBR 4:4:4 48bpp, big-endian
-+ AV_PIX_FMT_GBRP16LE, ///< planar GBR 4:4:4 48bpp, little-endian
-+ AV_PIX_FMT_YUVA422P, ///< planar YUV 4:2:2 24bpp, (1 Cr & Cb sample per 2x1 Y & A samples)
-+ AV_PIX_FMT_YUVA444P, ///< planar YUV 4:4:4 32bpp, (1 Cr & Cb sample per 1x1 Y & A samples)
-+ AV_PIX_FMT_YUVA420P9BE, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), big-endian
-+ AV_PIX_FMT_YUVA420P9LE, ///< planar YUV 4:2:0 22.5bpp, (1 Cr & Cb sample per 2x2 Y & A samples), little-endian
-+ AV_PIX_FMT_YUVA422P9BE, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), big-endian
-+ AV_PIX_FMT_YUVA422P9LE, ///< planar YUV 4:2:2 27bpp, (1 Cr & Cb sample per 2x1 Y & A samples), little-endian
-+ AV_PIX_FMT_YUVA444P9BE, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), big-endian
-+ AV_PIX_FMT_YUVA444P9LE, ///< planar YUV 4:4:4 36bpp, (1 Cr & Cb sample per 1x1 Y & A samples), little-endian
-+ AV_PIX_FMT_YUVA420P10BE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian)
-+ AV_PIX_FMT_YUVA420P10LE, ///< planar YUV 4:2:0 25bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian)
-+ AV_PIX_FMT_YUVA422P10BE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian)
-+ AV_PIX_FMT_YUVA422P10LE, ///< planar YUV 4:2:2 30bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian)
-+ AV_PIX_FMT_YUVA444P10BE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian)
-+ AV_PIX_FMT_YUVA444P10LE, ///< planar YUV 4:4:4 40bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian)
-+ AV_PIX_FMT_YUVA420P16BE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, big-endian)
-+ AV_PIX_FMT_YUVA420P16LE, ///< planar YUV 4:2:0 40bpp, (1 Cr & Cb sample per 2x2 Y & A samples, little-endian)
-+ AV_PIX_FMT_YUVA422P16BE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, big-endian)
-+ AV_PIX_FMT_YUVA422P16LE, ///< planar YUV 4:2:2 48bpp, (1 Cr & Cb sample per 2x1 Y & A samples, little-endian)
-+ AV_PIX_FMT_YUVA444P16BE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, big-endian)
-+ AV_PIX_FMT_YUVA444P16LE, ///< planar YUV 4:4:4 64bpp, (1 Cr & Cb sample per 1x1 Y & A samples, little-endian)
-+
-+ AV_PIX_FMT_VDPAU, ///< HW acceleration through VDPAU, Picture.data[3] contains a VdpVideoSurface
-+
-+ AV_PIX_FMT_XYZ12LE, ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as little-endian, the 4 lower bits are set to 0
-+ AV_PIX_FMT_XYZ12BE, ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as big-endian, the 4 lower bits are set to 0
-+ AV_PIX_FMT_NV16, ///< interleaved chroma YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
-+ AV_PIX_FMT_NV20LE, ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
-+ AV_PIX_FMT_NV20BE, ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
-+
-+ AV_PIX_FMT_RGBA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian
-+ AV_PIX_FMT_RGBA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian
-+ AV_PIX_FMT_BGRA64BE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian
-+ AV_PIX_FMT_BGRA64LE, ///< packed RGBA 16:16:16:16, 64bpp, 16B, 16G, 16R, 16A, the 2-byte value for each R/G/B/A component is stored as little-endian
-+
-+ AV_PIX_FMT_YVYU422, ///< packed YUV 4:2:2, 16bpp, Y0 Cr Y1 Cb
-+
-+ AV_PIX_FMT_YA16BE, ///< 16 bits gray, 16 bits alpha (big-endian)
-+ AV_PIX_FMT_YA16LE, ///< 16 bits gray, 16 bits alpha (little-endian)
-+
-+ AV_PIX_FMT_GBRAP, ///< planar GBRA 4:4:4:4 32bpp
-+ AV_PIX_FMT_GBRAP16BE, ///< planar GBRA 4:4:4:4 64bpp, big-endian
-+ AV_PIX_FMT_GBRAP16LE, ///< planar GBRA 4:4:4:4 64bpp, little-endian
-+ /**
-+ * HW acceleration through QSV, data[3] contains a pointer to the
-+ * mfxFrameSurface1 structure.
-+ */
-+ AV_PIX_FMT_QSV,
-+ /**
-+ * HW acceleration though MMAL, data[3] contains a pointer to the
-+ * MMAL_BUFFER_HEADER_T structure.
-+ */
-+ AV_PIX_FMT_MMAL,
-+
-+ AV_PIX_FMT_D3D11VA_VLD, ///< HW decoding through Direct3D11 via old API, Picture.data[3] contains a ID3D11VideoDecoderOutputView pointer
-+
-+ /**
-+ * HW acceleration through CUDA. data[i] contain CUdeviceptr pointers
-+ * exactly as for system memory frames.
-+ */
-+ AV_PIX_FMT_CUDA,
-+
-+ AV_PIX_FMT_0RGB, ///< packed RGB 8:8:8, 32bpp, XRGBXRGB... X=unused/undefined
-+ AV_PIX_FMT_RGB0, ///< packed RGB 8:8:8, 32bpp, RGBXRGBX... X=unused/undefined
-+ AV_PIX_FMT_0BGR, ///< packed BGR 8:8:8, 32bpp, XBGRXBGR... X=unused/undefined
-+ AV_PIX_FMT_BGR0, ///< packed BGR 8:8:8, 32bpp, BGRXBGRX... X=unused/undefined
-+
-+ AV_PIX_FMT_YUV420P12BE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
-+ AV_PIX_FMT_YUV420P12LE, ///< planar YUV 4:2:0,18bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
-+ AV_PIX_FMT_YUV420P14BE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
-+ AV_PIX_FMT_YUV420P14LE, ///< planar YUV 4:2:0,21bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
-+ AV_PIX_FMT_YUV422P12BE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
-+ AV_PIX_FMT_YUV422P12LE, ///< planar YUV 4:2:2,24bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
-+ AV_PIX_FMT_YUV422P14BE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
-+ AV_PIX_FMT_YUV422P14LE, ///< planar YUV 4:2:2,28bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
-+ AV_PIX_FMT_YUV444P12BE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
-+ AV_PIX_FMT_YUV444P12LE, ///< planar YUV 4:4:4,36bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
-+ AV_PIX_FMT_YUV444P14BE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
-+ AV_PIX_FMT_YUV444P14LE, ///< planar YUV 4:4:4,42bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
-+ AV_PIX_FMT_GBRP12BE, ///< planar GBR 4:4:4 36bpp, big-endian
-+ AV_PIX_FMT_GBRP12LE, ///< planar GBR 4:4:4 36bpp, little-endian
-+ AV_PIX_FMT_GBRP14BE, ///< planar GBR 4:4:4 42bpp, big-endian
-+ AV_PIX_FMT_GBRP14LE, ///< planar GBR 4:4:4 42bpp, little-endian
-+ AV_PIX_FMT_YUVJ411P, ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV411P and setting color_range
-+
-+ AV_PIX_FMT_BAYER_BGGR8, ///< bayer, BGBG..(odd line), GRGR..(even line), 8-bit samples */
-+ AV_PIX_FMT_BAYER_RGGB8, ///< bayer, RGRG..(odd line), GBGB..(even line), 8-bit samples */
-+ AV_PIX_FMT_BAYER_GBRG8, ///< bayer, GBGB..(odd line), RGRG..(even line), 8-bit samples */
-+ AV_PIX_FMT_BAYER_GRBG8, ///< bayer, GRGR..(odd line), BGBG..(even line), 8-bit samples */
-+ AV_PIX_FMT_BAYER_BGGR16LE, ///< bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, little-endian */
-+ AV_PIX_FMT_BAYER_BGGR16BE, ///< bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, big-endian */
-+ AV_PIX_FMT_BAYER_RGGB16LE, ///< bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, little-endian */
-+ AV_PIX_FMT_BAYER_RGGB16BE, ///< bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, big-endian */
-+ AV_PIX_FMT_BAYER_GBRG16LE, ///< bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, little-endian */
-+ AV_PIX_FMT_BAYER_GBRG16BE, ///< bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, big-endian */
-+ AV_PIX_FMT_BAYER_GRBG16LE, ///< bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, little-endian */
-+ AV_PIX_FMT_BAYER_GRBG16BE, ///< bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, big-endian */
-+
-+ AV_PIX_FMT_XVMC,///< XVideo Motion Acceleration via common packet passing
-+
-+ AV_PIX_FMT_YUV440P10LE, ///< planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian
-+ AV_PIX_FMT_YUV440P10BE, ///< planar YUV 4:4:0,20bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian
-+ AV_PIX_FMT_YUV440P12LE, ///< planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), little-endian
-+ AV_PIX_FMT_YUV440P12BE, ///< planar YUV 4:4:0,24bpp, (1 Cr & Cb sample per 1x2 Y samples), big-endian
-+ AV_PIX_FMT_AYUV64LE, ///< packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), little-endian
-+ AV_PIX_FMT_AYUV64BE, ///< packed AYUV 4:4:4,64bpp (1 Cr & Cb sample per 1x1 Y & A samples), big-endian
-+
-+ AV_PIX_FMT_VIDEOTOOLBOX, ///< hardware decoding through Videotoolbox
-+
-+ AV_PIX_FMT_P010LE, ///< like NV12, with 10bpp per component, data in the high bits, zeros in the low bits, little-endian
-+ AV_PIX_FMT_P010BE, ///< like NV12, with 10bpp per component, data in the high bits, zeros in the low bits, big-endian
-+
-+ AV_PIX_FMT_GBRAP12BE, ///< planar GBR 4:4:4:4 48bpp, big-endian
-+ AV_PIX_FMT_GBRAP12LE, ///< planar GBR 4:4:4:4 48bpp, little-endian
-+
-+ AV_PIX_FMT_GBRAP10BE, ///< planar GBR 4:4:4:4 40bpp, big-endian
-+ AV_PIX_FMT_GBRAP10LE, ///< planar GBR 4:4:4:4 40bpp, little-endian
-+
-+ AV_PIX_FMT_MEDIACODEC, ///< hardware decoding through MediaCodec
-+
-+ AV_PIX_FMT_GRAY12BE, ///< Y , 12bpp, big-endian
-+ AV_PIX_FMT_GRAY12LE, ///< Y , 12bpp, little-endian
-+ AV_PIX_FMT_GRAY10BE, ///< Y , 10bpp, big-endian
-+ AV_PIX_FMT_GRAY10LE, ///< Y , 10bpp, little-endian
-+
-+ AV_PIX_FMT_P016LE, ///< like NV12, with 16bpp per component, little-endian
-+ AV_PIX_FMT_P016BE, ///< like NV12, with 16bpp per component, big-endian
-+
-+ /**
-+ * Hardware surfaces for Direct3D11.
-+ *
-+ * This is preferred over the legacy AV_PIX_FMT_D3D11VA_VLD. The new D3D11
-+ * hwaccel API and filtering support AV_PIX_FMT_D3D11 only.
-+ *
-+ * data[0] contains a ID3D11Texture2D pointer, and data[1] contains the
-+ * texture array index of the frame as intptr_t if the ID3D11Texture2D is
-+ * an array texture (or always 0 if it's a normal texture).
-+ */
-+ AV_PIX_FMT_D3D11,
-+
-+ AV_PIX_FMT_GRAY9BE, ///< Y , 9bpp, big-endian
-+ AV_PIX_FMT_GRAY9LE, ///< Y , 9bpp, little-endian
-+
-+ AV_PIX_FMT_GBRPF32BE, ///< IEEE-754 single precision planar GBR 4:4:4, 96bpp, big-endian
-+ AV_PIX_FMT_GBRPF32LE, ///< IEEE-754 single precision planar GBR 4:4:4, 96bpp, little-endian
-+ AV_PIX_FMT_GBRAPF32BE, ///< IEEE-754 single precision planar GBRA 4:4:4:4, 128bpp, big-endian
-+ AV_PIX_FMT_GBRAPF32LE, ///< IEEE-754 single precision planar GBRA 4:4:4:4, 128bpp, little-endian
-+
-+ /**
-+ * DRM-managed buffers exposed through PRIME buffer sharing.
-+ *
-+ * data[0] points to an AVDRMFrameDescriptor.
-+ */
-+ AV_PIX_FMT_DRM_PRIME,
-+ /**
-+ * Hardware surfaces for OpenCL.
-+ *
-+ * data[i] contain 2D image objects (typed in C as cl_mem, used
-+ * in OpenCL as image2d_t) for each plane of the surface.
-+ */
-+ AV_PIX_FMT_OPENCL,
-+
-+ AV_PIX_FMT_NB ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions
-+};
-+
-+#if AV_HAVE_BIGENDIAN
-+# define AV_PIX_FMT_NE(be, le) AV_PIX_FMT_##be
-+#else
-+# define AV_PIX_FMT_NE(be, le) AV_PIX_FMT_##le
-+#endif
-+
-+#define AV_PIX_FMT_RGB32 AV_PIX_FMT_NE(ARGB, BGRA)
-+#define AV_PIX_FMT_RGB32_1 AV_PIX_FMT_NE(RGBA, ABGR)
-+#define AV_PIX_FMT_BGR32 AV_PIX_FMT_NE(ABGR, RGBA)
-+#define AV_PIX_FMT_BGR32_1 AV_PIX_FMT_NE(BGRA, ARGB)
-+#define AV_PIX_FMT_0RGB32 AV_PIX_FMT_NE(0RGB, BGR0)
-+#define AV_PIX_FMT_0BGR32 AV_PIX_FMT_NE(0BGR, RGB0)
-+
-+#define AV_PIX_FMT_GRAY9 AV_PIX_FMT_NE(GRAY9BE, GRAY9LE)
-+#define AV_PIX_FMT_GRAY10 AV_PIX_FMT_NE(GRAY10BE, GRAY10LE)
-+#define AV_PIX_FMT_GRAY12 AV_PIX_FMT_NE(GRAY12BE, GRAY12LE)
-+#define AV_PIX_FMT_GRAY16 AV_PIX_FMT_NE(GRAY16BE, GRAY16LE)
-+#define AV_PIX_FMT_YA16 AV_PIX_FMT_NE(YA16BE, YA16LE)
-+#define AV_PIX_FMT_RGB48 AV_PIX_FMT_NE(RGB48BE, RGB48LE)
-+#define AV_PIX_FMT_RGB565 AV_PIX_FMT_NE(RGB565BE, RGB565LE)
-+#define AV_PIX_FMT_RGB555 AV_PIX_FMT_NE(RGB555BE, RGB555LE)
-+#define AV_PIX_FMT_RGB444 AV_PIX_FMT_NE(RGB444BE, RGB444LE)
-+#define AV_PIX_FMT_RGBA64 AV_PIX_FMT_NE(RGBA64BE, RGBA64LE)
-+#define AV_PIX_FMT_BGR48 AV_PIX_FMT_NE(BGR48BE, BGR48LE)
-+#define AV_PIX_FMT_BGR565 AV_PIX_FMT_NE(BGR565BE, BGR565LE)
-+#define AV_PIX_FMT_BGR555 AV_PIX_FMT_NE(BGR555BE, BGR555LE)
-+#define AV_PIX_FMT_BGR444 AV_PIX_FMT_NE(BGR444BE, BGR444LE)
-+#define AV_PIX_FMT_BGRA64 AV_PIX_FMT_NE(BGRA64BE, BGRA64LE)
-+
-+#define AV_PIX_FMT_YUV420P9 AV_PIX_FMT_NE(YUV420P9BE , YUV420P9LE)
-+#define AV_PIX_FMT_YUV422P9 AV_PIX_FMT_NE(YUV422P9BE , YUV422P9LE)
-+#define AV_PIX_FMT_YUV444P9 AV_PIX_FMT_NE(YUV444P9BE , YUV444P9LE)
-+#define AV_PIX_FMT_YUV420P10 AV_PIX_FMT_NE(YUV420P10BE, YUV420P10LE)
-+#define AV_PIX_FMT_YUV422P10 AV_PIX_FMT_NE(YUV422P10BE, YUV422P10LE)
-+#define AV_PIX_FMT_YUV440P10 AV_PIX_FMT_NE(YUV440P10BE, YUV440P10LE)
-+#define AV_PIX_FMT_YUV444P10 AV_PIX_FMT_NE(YUV444P10BE, YUV444P10LE)
-+#define AV_PIX_FMT_YUV420P12 AV_PIX_FMT_NE(YUV420P12BE, YUV420P12LE)
-+#define AV_PIX_FMT_YUV422P12 AV_PIX_FMT_NE(YUV422P12BE, YUV422P12LE)
-+#define AV_PIX_FMT_YUV440P12 AV_PIX_FMT_NE(YUV440P12BE, YUV440P12LE)
-+#define AV_PIX_FMT_YUV444P12 AV_PIX_FMT_NE(YUV444P12BE, YUV444P12LE)
-+#define AV_PIX_FMT_YUV420P14 AV_PIX_FMT_NE(YUV420P14BE, YUV420P14LE)
-+#define AV_PIX_FMT_YUV422P14 AV_PIX_FMT_NE(YUV422P14BE, YUV422P14LE)
-+#define AV_PIX_FMT_YUV444P14 AV_PIX_FMT_NE(YUV444P14BE, YUV444P14LE)
-+#define AV_PIX_FMT_YUV420P16 AV_PIX_FMT_NE(YUV420P16BE, YUV420P16LE)
-+#define AV_PIX_FMT_YUV422P16 AV_PIX_FMT_NE(YUV422P16BE, YUV422P16LE)
-+#define AV_PIX_FMT_YUV444P16 AV_PIX_FMT_NE(YUV444P16BE, YUV444P16LE)
-+
-+#define AV_PIX_FMT_GBRP9 AV_PIX_FMT_NE(GBRP9BE , GBRP9LE)
-+#define AV_PIX_FMT_GBRP10 AV_PIX_FMT_NE(GBRP10BE, GBRP10LE)
-+#define AV_PIX_FMT_GBRP12 AV_PIX_FMT_NE(GBRP12BE, GBRP12LE)
-+#define AV_PIX_FMT_GBRP14 AV_PIX_FMT_NE(GBRP14BE, GBRP14LE)
-+#define AV_PIX_FMT_GBRP16 AV_PIX_FMT_NE(GBRP16BE, GBRP16LE)
-+#define AV_PIX_FMT_GBRAP10 AV_PIX_FMT_NE(GBRAP10BE, GBRAP10LE)
-+#define AV_PIX_FMT_GBRAP12 AV_PIX_FMT_NE(GBRAP12BE, GBRAP12LE)
-+#define AV_PIX_FMT_GBRAP16 AV_PIX_FMT_NE(GBRAP16BE, GBRAP16LE)
-+
-+#define AV_PIX_FMT_BAYER_BGGR16 AV_PIX_FMT_NE(BAYER_BGGR16BE, BAYER_BGGR16LE)
-+#define AV_PIX_FMT_BAYER_RGGB16 AV_PIX_FMT_NE(BAYER_RGGB16BE, BAYER_RGGB16LE)
-+#define AV_PIX_FMT_BAYER_GBRG16 AV_PIX_FMT_NE(BAYER_GBRG16BE, BAYER_GBRG16LE)
-+#define AV_PIX_FMT_BAYER_GRBG16 AV_PIX_FMT_NE(BAYER_GRBG16BE, BAYER_GRBG16LE)
-+
-+#define AV_PIX_FMT_GBRPF32 AV_PIX_FMT_NE(GBRPF32BE, GBRPF32LE)
-+#define AV_PIX_FMT_GBRAPF32 AV_PIX_FMT_NE(GBRAPF32BE, GBRAPF32LE)
-+
-+#define AV_PIX_FMT_YUVA420P9 AV_PIX_FMT_NE(YUVA420P9BE , YUVA420P9LE)
-+#define AV_PIX_FMT_YUVA422P9 AV_PIX_FMT_NE(YUVA422P9BE , YUVA422P9LE)
-+#define AV_PIX_FMT_YUVA444P9 AV_PIX_FMT_NE(YUVA444P9BE , YUVA444P9LE)
-+#define AV_PIX_FMT_YUVA420P10 AV_PIX_FMT_NE(YUVA420P10BE, YUVA420P10LE)
-+#define AV_PIX_FMT_YUVA422P10 AV_PIX_FMT_NE(YUVA422P10BE, YUVA422P10LE)
-+#define AV_PIX_FMT_YUVA444P10 AV_PIX_FMT_NE(YUVA444P10BE, YUVA444P10LE)
-+#define AV_PIX_FMT_YUVA420P16 AV_PIX_FMT_NE(YUVA420P16BE, YUVA420P16LE)
-+#define AV_PIX_FMT_YUVA422P16 AV_PIX_FMT_NE(YUVA422P16BE, YUVA422P16LE)
-+#define AV_PIX_FMT_YUVA444P16 AV_PIX_FMT_NE(YUVA444P16BE, YUVA444P16LE)
-+
-+#define AV_PIX_FMT_XYZ12 AV_PIX_FMT_NE(XYZ12BE, XYZ12LE)
-+#define AV_PIX_FMT_NV20 AV_PIX_FMT_NE(NV20BE, NV20LE)
-+#define AV_PIX_FMT_AYUV64 AV_PIX_FMT_NE(AYUV64BE, AYUV64LE)
-+#define AV_PIX_FMT_P010 AV_PIX_FMT_NE(P010BE, P010LE)
-+#define AV_PIX_FMT_P016 AV_PIX_FMT_NE(P016BE, P016LE)
-+
-+/**
-+ * Chromaticity coordinates of the source primaries.
-+ * These values match the ones defined by ISO/IEC 23001-8_2013 § 7.1.
-+ */
-+enum AVColorPrimaries {
-+ AVCOL_PRI_RESERVED0 = 0,
-+ AVCOL_PRI_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 / SMPTE RP177 Annex B
-+ AVCOL_PRI_UNSPECIFIED = 2,
-+ AVCOL_PRI_RESERVED = 3,
-+ AVCOL_PRI_BT470M = 4, ///< also FCC Title 47 Code of Federal Regulations 73.682 (a)(20)
-+
-+ AVCOL_PRI_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM
-+ AVCOL_PRI_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
-+ AVCOL_PRI_SMPTE240M = 7, ///< functionally identical to above
-+ AVCOL_PRI_FILM = 8, ///< colour filters using Illuminant C
-+ AVCOL_PRI_BT2020 = 9, ///< ITU-R BT2020
-+ AVCOL_PRI_SMPTE428 = 10, ///< SMPTE ST 428-1 (CIE 1931 XYZ)
-+ AVCOL_PRI_SMPTEST428_1 = AVCOL_PRI_SMPTE428,
-+ AVCOL_PRI_SMPTE431 = 11, ///< SMPTE ST 431-2 (2011) / DCI P3
-+ AVCOL_PRI_SMPTE432 = 12, ///< SMPTE ST 432-1 (2010) / P3 D65 / Display P3
-+ AVCOL_PRI_JEDEC_P22 = 22, ///< JEDEC P22 phosphors
-+ AVCOL_PRI_NB ///< Not part of ABI
-+};
-+
-+/**
-+ * Color Transfer Characteristic.
-+ * These values match the ones defined by ISO/IEC 23001-8_2013 § 7.2.
-+ */
-+enum AVColorTransferCharacteristic {
-+ AVCOL_TRC_RESERVED0 = 0,
-+ AVCOL_TRC_BT709 = 1, ///< also ITU-R BT1361
-+ AVCOL_TRC_UNSPECIFIED = 2,
-+ AVCOL_TRC_RESERVED = 3,
-+ AVCOL_TRC_GAMMA22 = 4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM
-+ AVCOL_TRC_GAMMA28 = 5, ///< also ITU-R BT470BG
-+ AVCOL_TRC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 or 625 / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC
-+ AVCOL_TRC_SMPTE240M = 7,
-+ AVCOL_TRC_LINEAR = 8, ///< "Linear transfer characteristics"
-+ AVCOL_TRC_LOG = 9, ///< "Logarithmic transfer characteristic (100:1 range)"
-+ AVCOL_TRC_LOG_SQRT = 10, ///< "Logarithmic transfer characteristic (100 * Sqrt(10) : 1 range)"
-+ AVCOL_TRC_IEC61966_2_4 = 11, ///< IEC 61966-2-4
-+ AVCOL_TRC_BT1361_ECG = 12, ///< ITU-R BT1361 Extended Colour Gamut
-+ AVCOL_TRC_IEC61966_2_1 = 13, ///< IEC 61966-2-1 (sRGB or sYCC)
-+ AVCOL_TRC_BT2020_10 = 14, ///< ITU-R BT2020 for 10-bit system
-+ AVCOL_TRC_BT2020_12 = 15, ///< ITU-R BT2020 for 12-bit system
-+ AVCOL_TRC_SMPTE2084 = 16, ///< SMPTE ST 2084 for 10-, 12-, 14- and 16-bit systems
-+ AVCOL_TRC_SMPTEST2084 = AVCOL_TRC_SMPTE2084,
-+ AVCOL_TRC_SMPTE428 = 17, ///< SMPTE ST 428-1
-+ AVCOL_TRC_SMPTEST428_1 = AVCOL_TRC_SMPTE428,
-+ AVCOL_TRC_ARIB_STD_B67 = 18, ///< ARIB STD-B67, known as "Hybrid log-gamma"
-+ AVCOL_TRC_NB ///< Not part of ABI
-+};
-+
-+/**
-+ * YUV colorspace type.
-+ * These values match the ones defined by ISO/IEC 23001-8_2013 § 7.3.
-+ */
-+enum AVColorSpace {
-+ AVCOL_SPC_RGB = 0, ///< order of coefficients is actually GBR, also IEC 61966-2-1 (sRGB)
-+ AVCOL_SPC_BT709 = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B
-+ AVCOL_SPC_UNSPECIFIED = 2,
-+ AVCOL_SPC_RESERVED = 3,
-+ AVCOL_SPC_FCC = 4, ///< FCC Title 47 Code of Federal Regulations 73.682 (a)(20)
-+ AVCOL_SPC_BT470BG = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601
-+ AVCOL_SPC_SMPTE170M = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
-+ AVCOL_SPC_SMPTE240M = 7, ///< functionally identical to above
-+ AVCOL_SPC_YCGCO = 8, ///< Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16
-+ AVCOL_SPC_YCOCG = AVCOL_SPC_YCGCO,
-+ AVCOL_SPC_BT2020_NCL = 9, ///< ITU-R BT2020 non-constant luminance system
-+ AVCOL_SPC_BT2020_CL = 10, ///< ITU-R BT2020 constant luminance system
-+ AVCOL_SPC_SMPTE2085 = 11, ///< SMPTE 2085, Y'D'zD'x
-+ AVCOL_SPC_CHROMA_DERIVED_NCL = 12, ///< Chromaticity-derived non-constant luminance system
-+ AVCOL_SPC_CHROMA_DERIVED_CL = 13, ///< Chromaticity-derived constant luminance system
-+ AVCOL_SPC_ICTCP = 14, ///< ITU-R BT.2100-0, ICtCp
-+ AVCOL_SPC_NB ///< Not part of ABI
-+};
-+
-+/**
-+ * MPEG vs JPEG YUV range.
-+ */
-+enum AVColorRange {
-+ AVCOL_RANGE_UNSPECIFIED = 0,
-+ AVCOL_RANGE_MPEG = 1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges
-+ AVCOL_RANGE_JPEG = 2, ///< the normal 2^n-1 "JPEG" YUV ranges
-+ AVCOL_RANGE_NB ///< Not part of ABI
-+};
-+
-+/**
-+ * Location of chroma samples.
-+ *
-+ * Illustration showing the location of the first (top left) chroma sample of the
-+ * image, the left shows only luma, the right
-+ * shows the location of the chroma sample, the 2 could be imagined to overlay
-+ * each other but are drawn separately due to limitations of ASCII
-+ *
-+ * 1st 2nd 1st 2nd horizontal luma sample positions
-+ * v v v v
-+ * ______ ______
-+ *1st luma line > |X X ... |3 4 X ... X are luma samples,
-+ * | |1 2 1-6 are possible chroma positions
-+ *2nd luma line > |X X ... |5 6 X ... 0 is undefined/unknown position
-+ */
-+enum AVChromaLocation {
-+ AVCHROMA_LOC_UNSPECIFIED = 0,
-+ AVCHROMA_LOC_LEFT = 1, ///< MPEG-2/4 4:2:0, H.264 default for 4:2:0
-+ AVCHROMA_LOC_CENTER = 2, ///< MPEG-1 4:2:0, JPEG 4:2:0, H.263 4:2:0
-+ AVCHROMA_LOC_TOPLEFT = 3, ///< ITU-R 601, SMPTE 274M 296M S314M(DV 4:1:1), mpeg2 4:2:2
-+ AVCHROMA_LOC_TOP = 4,
-+ AVCHROMA_LOC_BOTTOMLEFT = 5,
-+ AVCHROMA_LOC_BOTTOM = 6,
-+ AVCHROMA_LOC_NB ///< Not part of ABI
-+};
-+
-+#endif /* AVUTIL_PIXFMT_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/rational.h
-@@ -0,0 +1,214 @@
-+/*
-+ * rational numbers
-+ * Copyright (c) 2003 Michael Niedermayer <michaelni(a)gmx.at>
-+ *
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+/**
-+ * @file
-+ * @ingroup lavu_math_rational
-+ * Utilties for rational number calculation.
-+ * @author Michael Niedermayer <michaelni(a)gmx.at>
-+ */
-+
-+#ifndef AVUTIL_RATIONAL_H
-+#define AVUTIL_RATIONAL_H
-+
-+#include <stdint.h>
-+#include <limits.h>
-+#include "attributes.h"
-+
-+/**
-+ * @defgroup lavu_math_rational AVRational
-+ * @ingroup lavu_math
-+ * Rational number calculation.
-+ *
-+ * While rational numbers can be expressed as floating-point numbers, the
-+ * conversion process is a lossy one, so are floating-point operations. On the
-+ * other hand, the nature of FFmpeg demands highly accurate calculation of
-+ * timestamps. This set of rational number utilities serves as a generic
-+ * interface for manipulating rational numbers as pairs of numerators and
-+ * denominators.
-+ *
-+ * Many of the functions that operate on AVRational's have the suffix `_q`, in
-+ * reference to the mathematical symbol "ℚ" (Q) which denotes the set of all
-+ * rational numbers.
-+ *
-+ * @{
-+ */
-+
-+/**
-+ * Rational number (pair of numerator and denominator).
-+ */
-+typedef struct AVRational{
-+ int num; ///< Numerator
-+ int den; ///< Denominator
-+} AVRational;
-+
-+/**
-+ * Create an AVRational.
-+ *
-+ * Useful for compilers that do not support compound literals.
-+ *
-+ * @note The return value is not reduced.
-+ * @see av_reduce()
-+ */
-+static inline AVRational av_make_q(int num, int den)
-+{
-+ AVRational r = { num, den };
-+ return r;
-+}
-+
-+/**
-+ * Compare two rationals.
-+ *
-+ * @param a First rational
-+ * @param b Second rational
-+ *
-+ * @return One of the following values:
-+ * - 0 if `a == b`
-+ * - 1 if `a > b`
-+ * - -1 if `a < b`
-+ * - `INT_MIN` if one of the values is of the form `0 / 0`
-+ */
-+static inline int av_cmp_q(AVRational a, AVRational b){
-+ const int64_t tmp= a.num * (int64_t)b.den - b.num * (int64_t)a.den;
-+
-+ if(tmp) return (int)((tmp ^ a.den ^ b.den)>>63)|1;
-+ else if(b.den && a.den) return 0;
-+ else if(a.num && b.num) return (a.num>>31) - (b.num>>31);
-+ else return INT_MIN;
-+}
-+
-+/**
-+ * Convert an AVRational to a `double`.
-+ * @param a AVRational to convert
-+ * @return `a` in floating-point form
-+ * @see av_d2q()
-+ */
-+static inline double av_q2d(AVRational a){
-+ return a.num / (double) a.den;
-+}
-+
-+/**
-+ * Reduce a fraction.
-+ *
-+ * This is useful for framerate calculations.
-+ *
-+ * @param[out] dst_num Destination numerator
-+ * @param[out] dst_den Destination denominator
-+ * @param[in] num Source numerator
-+ * @param[in] den Source denominator
-+ * @param[in] max Maximum allowed values for `dst_num` & `dst_den`
-+ * @return 1 if the operation is exact, 0 otherwise
-+ */
-+int av_reduce(int *dst_num, int *dst_den, int64_t num, int64_t den, int64_t max);
-+
-+/**
-+ * Multiply two rationals.
-+ * @param b First rational
-+ * @param c Second rational
-+ * @return b*c
-+ */
-+AVRational av_mul_q(AVRational b, AVRational c) av_const;
-+
-+/**
-+ * Divide one rational by another.
-+ * @param b First rational
-+ * @param c Second rational
-+ * @return b/c
-+ */
-+AVRational av_div_q(AVRational b, AVRational c) av_const;
-+
-+/**
-+ * Add two rationals.
-+ * @param b First rational
-+ * @param c Second rational
-+ * @return b+c
-+ */
-+AVRational av_add_q(AVRational b, AVRational c) av_const;
-+
-+/**
-+ * Subtract one rational from another.
-+ * @param b First rational
-+ * @param c Second rational
-+ * @return b-c
-+ */
-+AVRational av_sub_q(AVRational b, AVRational c) av_const;
-+
-+/**
-+ * Invert a rational.
-+ * @param q value
-+ * @return 1 / q
-+ */
-+static av_always_inline AVRational av_inv_q(AVRational q)
-+{
-+ AVRational r = { q.den, q.num };
-+ return r;
-+}
-+
-+/**
-+ * Convert a double precision floating point number to a rational.
-+ *
-+ * In case of infinity, the returned value is expressed as `{1, 0}` or
-+ * `{-1, 0}` depending on the sign.
-+ *
-+ * @param d `double` to convert
-+ * @param max Maximum allowed numerator and denominator
-+ * @return `d` in AVRational form
-+ * @see av_q2d()
-+ */
-+AVRational av_d2q(double d, int max) av_const;
-+
-+/**
-+ * Find which of the two rationals is closer to another rational.
-+ *
-+ * @param q Rational to be compared against
-+ * @param q1,q2 Rationals to be tested
-+ * @return One of the following values:
-+ * - 1 if `q1` is nearer to `q` than `q2`
-+ * - -1 if `q2` is nearer to `q` than `q1`
-+ * - 0 if they have the same distance
-+ */
-+int av_nearer_q(AVRational q, AVRational q1, AVRational q2);
-+
-+/**
-+ * Find the value in a list of rationals nearest a given reference rational.
-+ *
-+ * @param q Reference rational
-+ * @param q_list Array of rationals terminated by `{0, 0}`
-+ * @return Index of the nearest value found in the array
-+ */
-+int av_find_nearest_q_idx(AVRational q, const AVRational* q_list);
-+
-+/**
-+ * Convert an AVRational to a IEEE 32-bit `float` expressed in fixed-point
-+ * format.
-+ *
-+ * @param q Rational to be converted
-+ * @return Equivalent floating-point value, expressed as an unsigned 32-bit
-+ * integer.
-+ * @note The returned value is platform-indepedant.
-+ */
-+uint32_t av_q2intfloat(AVRational q);
-+
-+/**
-+ * @}
-+ */
-+
-+#endif /* AVUTIL_RATIONAL_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/samplefmt.h
-@@ -0,0 +1,272 @@
-+/*
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+#ifndef AVUTIL_SAMPLEFMT_H
-+#define AVUTIL_SAMPLEFMT_H
-+
-+#include <stdint.h>
-+
-+#include "avutil.h"
-+#include "attributes.h"
-+
-+/**
-+ * @addtogroup lavu_audio
-+ * @{
-+ *
-+ * @defgroup lavu_sampfmts Audio sample formats
-+ *
-+ * Audio sample format enumeration and related convenience functions.
-+ * @{
-+ */
-+
-+/**
-+ * Audio sample formats
-+ *
-+ * - The data described by the sample format is always in native-endian order.
-+ * Sample values can be expressed by native C types, hence the lack of a signed
-+ * 24-bit sample format even though it is a common raw audio data format.
-+ *
-+ * - The floating-point formats are based on full volume being in the range
-+ * [-1.0, 1.0]. Any values outside this range are beyond full volume level.
-+ *
-+ * - The data layout as used in av_samples_fill_arrays() and elsewhere in FFmpeg
-+ * (such as AVFrame in libavcodec) is as follows:
-+ *
-+ * @par
-+ * For planar sample formats, each audio channel is in a separate data plane,
-+ * and linesize is the buffer size, in bytes, for a single plane. All data
-+ * planes must be the same size. For packed sample formats, only the first data
-+ * plane is used, and samples for each channel are interleaved. In this case,
-+ * linesize is the buffer size, in bytes, for the 1 plane.
-+ *
-+ */
-+enum AVSampleFormat {
-+ AV_SAMPLE_FMT_NONE = -1,
-+ AV_SAMPLE_FMT_U8, ///< unsigned 8 bits
-+ AV_SAMPLE_FMT_S16, ///< signed 16 bits
-+ AV_SAMPLE_FMT_S32, ///< signed 32 bits
-+ AV_SAMPLE_FMT_FLT, ///< float
-+ AV_SAMPLE_FMT_DBL, ///< double
-+
-+ AV_SAMPLE_FMT_U8P, ///< unsigned 8 bits, planar
-+ AV_SAMPLE_FMT_S16P, ///< signed 16 bits, planar
-+ AV_SAMPLE_FMT_S32P, ///< signed 32 bits, planar
-+ AV_SAMPLE_FMT_FLTP, ///< float, planar
-+ AV_SAMPLE_FMT_DBLP, ///< double, planar
-+ AV_SAMPLE_FMT_S64, ///< signed 64 bits
-+ AV_SAMPLE_FMT_S64P, ///< signed 64 bits, planar
-+
-+ AV_SAMPLE_FMT_NB ///< Number of sample formats. DO NOT USE if linking dynamically
-+};
-+
-+/**
-+ * Return the name of sample_fmt, or NULL if sample_fmt is not
-+ * recognized.
-+ */
-+const char *av_get_sample_fmt_name(enum AVSampleFormat sample_fmt);
-+
-+/**
-+ * Return a sample format corresponding to name, or AV_SAMPLE_FMT_NONE
-+ * on error.
-+ */
-+enum AVSampleFormat av_get_sample_fmt(const char *name);
-+
-+/**
-+ * Return the planar<->packed alternative form of the given sample format, or
-+ * AV_SAMPLE_FMT_NONE on error. If the passed sample_fmt is already in the
-+ * requested planar/packed format, the format returned is the same as the
-+ * input.
-+ */
-+enum AVSampleFormat av_get_alt_sample_fmt(enum AVSampleFormat sample_fmt, int planar);
-+
-+/**
-+ * Get the packed alternative form of the given sample format.
-+ *
-+ * If the passed sample_fmt is already in packed format, the format returned is
-+ * the same as the input.
-+ *
-+ * @return the packed alternative form of the given sample format or
-+ AV_SAMPLE_FMT_NONE on error.
-+ */
-+enum AVSampleFormat av_get_packed_sample_fmt(enum AVSampleFormat sample_fmt);
-+
-+/**
-+ * Get the planar alternative form of the given sample format.
-+ *
-+ * If the passed sample_fmt is already in planar format, the format returned is
-+ * the same as the input.
-+ *
-+ * @return the planar alternative form of the given sample format or
-+ AV_SAMPLE_FMT_NONE on error.
-+ */
-+enum AVSampleFormat av_get_planar_sample_fmt(enum AVSampleFormat sample_fmt);
-+
-+/**
-+ * Generate a string corresponding to the sample format with
-+ * sample_fmt, or a header if sample_fmt is negative.
-+ *
-+ * @param buf the buffer where to write the string
-+ * @param buf_size the size of buf
-+ * @param sample_fmt the number of the sample format to print the
-+ * corresponding info string, or a negative value to print the
-+ * corresponding header.
-+ * @return the pointer to the filled buffer or NULL if sample_fmt is
-+ * unknown or in case of other errors
-+ */
-+char *av_get_sample_fmt_string(char *buf, int buf_size, enum AVSampleFormat sample_fmt);
-+
-+/**
-+ * Return number of bytes per sample.
-+ *
-+ * @param sample_fmt the sample format
-+ * @return number of bytes per sample or zero if unknown for the given
-+ * sample format
-+ */
-+int av_get_bytes_per_sample(enum AVSampleFormat sample_fmt);
-+
-+/**
-+ * Check if the sample format is planar.
-+ *
-+ * @param sample_fmt the sample format to inspect
-+ * @return 1 if the sample format is planar, 0 if it is interleaved
-+ */
-+int av_sample_fmt_is_planar(enum AVSampleFormat sample_fmt);
-+
-+/**
-+ * Get the required buffer size for the given audio parameters.
-+ *
-+ * @param[out] linesize calculated linesize, may be NULL
-+ * @param nb_channels the number of channels
-+ * @param nb_samples the number of samples in a single channel
-+ * @param sample_fmt the sample format
-+ * @param align buffer size alignment (0 = default, 1 = no alignment)
-+ * @return required buffer size, or negative error code on failure
-+ */
-+int av_samples_get_buffer_size(int *linesize, int nb_channels, int nb_samples,
-+ enum AVSampleFormat sample_fmt, int align);
-+
-+/**
-+ * @}
-+ *
-+ * @defgroup lavu_sampmanip Samples manipulation
-+ *
-+ * Functions that manipulate audio samples
-+ * @{
-+ */
-+
-+/**
-+ * Fill plane data pointers and linesize for samples with sample
-+ * format sample_fmt.
-+ *
-+ * The audio_data array is filled with the pointers to the samples data planes:
-+ * for planar, set the start point of each channel's data within the buffer,
-+ * for packed, set the start point of the entire buffer only.
-+ *
-+ * The value pointed to by linesize is set to the aligned size of each
-+ * channel's data buffer for planar layout, or to the aligned size of the
-+ * buffer for all channels for packed layout.
-+ *
-+ * The buffer in buf must be big enough to contain all the samples
-+ * (use av_samples_get_buffer_size() to compute its minimum size),
-+ * otherwise the audio_data pointers will point to invalid data.
-+ *
-+ * @see enum AVSampleFormat
-+ * The documentation for AVSampleFormat describes the data layout.
-+ *
-+ * @param[out] audio_data array to be filled with the pointer for each channel
-+ * @param[out] linesize calculated linesize, may be NULL
-+ * @param buf the pointer to a buffer containing the samples
-+ * @param nb_channels the number of channels
-+ * @param nb_samples the number of samples in a single channel
-+ * @param sample_fmt the sample format
-+ * @param align buffer size alignment (0 = default, 1 = no alignment)
-+ * @return >=0 on success or a negative error code on failure
-+ * @todo return minimum size in bytes required for the buffer in case
-+ * of success at the next bump
-+ */
-+int av_samples_fill_arrays(uint8_t **audio_data, int *linesize,
-+ const uint8_t *buf,
-+ int nb_channels, int nb_samples,
-+ enum AVSampleFormat sample_fmt, int align);
-+
-+/**
-+ * Allocate a samples buffer for nb_samples samples, and fill data pointers and
-+ * linesize accordingly.
-+ * The allocated samples buffer can be freed by using av_freep(&audio_data[0])
-+ * Allocated data will be initialized to silence.
-+ *
-+ * @see enum AVSampleFormat
-+ * The documentation for AVSampleFormat describes the data layout.
-+ *
-+ * @param[out] audio_data array to be filled with the pointer for each channel
-+ * @param[out] linesize aligned size for audio buffer(s), may be NULL
-+ * @param nb_channels number of audio channels
-+ * @param nb_samples number of samples per channel
-+ * @param align buffer size alignment (0 = default, 1 = no alignment)
-+ * @return >=0 on success or a negative error code on failure
-+ * @todo return the size of the allocated buffer in case of success at the next bump
-+ * @see av_samples_fill_arrays()
-+ * @see av_samples_alloc_array_and_samples()
-+ */
-+int av_samples_alloc(uint8_t **audio_data, int *linesize, int nb_channels,
-+ int nb_samples, enum AVSampleFormat sample_fmt, int align);
-+
-+/**
-+ * Allocate a data pointers array, samples buffer for nb_samples
-+ * samples, and fill data pointers and linesize accordingly.
-+ *
-+ * This is the same as av_samples_alloc(), but also allocates the data
-+ * pointers array.
-+ *
-+ * @see av_samples_alloc()
-+ */
-+int av_samples_alloc_array_and_samples(uint8_t ***audio_data, int *linesize, int nb_channels,
-+ int nb_samples, enum AVSampleFormat sample_fmt, int align);
-+
-+/**
-+ * Copy samples from src to dst.
-+ *
-+ * @param dst destination array of pointers to data planes
-+ * @param src source array of pointers to data planes
-+ * @param dst_offset offset in samples at which the data will be written to dst
-+ * @param src_offset offset in samples at which the data will be read from src
-+ * @param nb_samples number of samples to be copied
-+ * @param nb_channels number of audio channels
-+ * @param sample_fmt audio sample format
-+ */
-+int av_samples_copy(uint8_t **dst, uint8_t * const *src, int dst_offset,
-+ int src_offset, int nb_samples, int nb_channels,
-+ enum AVSampleFormat sample_fmt);
-+
-+/**
-+ * Fill an audio buffer with silence.
-+ *
-+ * @param audio_data array of pointers to data planes
-+ * @param offset offset in samples at which to start filling
-+ * @param nb_samples number of samples to fill
-+ * @param nb_channels number of audio channels
-+ * @param sample_fmt audio sample format
-+ */
-+int av_samples_set_silence(uint8_t **audio_data, int offset, int nb_samples,
-+ int nb_channels, enum AVSampleFormat sample_fmt);
-+
-+/**
-+ * @}
-+ * @}
-+ */
-+#endif /* AVUTIL_SAMPLEFMT_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/include/libavutil/version.h
-@@ -0,0 +1,139 @@
-+/*
-+ * copyright (c) 2003 Fabrice Bellard
-+ *
-+ * This file is part of FFmpeg.
-+ *
-+ * FFmpeg is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2.1 of the License, or (at your option) any later version.
-+ *
-+ * FFmpeg 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
-+ * Lesser General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Lesser General Public
-+ * License along with FFmpeg; if not, write to the Free Software
-+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-+ */
-+
-+/**
-+ * @file
-+ * @ingroup lavu
-+ * Libavutil version macros
-+ */
-+
-+#ifndef AVUTIL_VERSION_H
-+#define AVUTIL_VERSION_H
-+
-+#include "macros.h"
-+
-+/**
-+ * @addtogroup version_utils
-+ *
-+ * Useful to check and match library version in order to maintain
-+ * backward compatibility.
-+ *
-+ * The FFmpeg libraries follow a versioning sheme very similar to
-+ * Semantic Versioning (http://semver.org/)
-+ * The difference is that the component called PATCH is called MICRO in FFmpeg
-+ * and its value is reset to 100 instead of 0 to keep it above or equal to 100.
-+ * Also we do not increase MICRO for every bugfix or change in git master.
-+ *
-+ * Prior to FFmpeg 3.2 point releases did not change any lib version number to
-+ * avoid aliassing different git master checkouts.
-+ * Starting with FFmpeg 3.2, the released library versions will occupy
-+ * a separate MAJOR.MINOR that is not used on the master development branch.
-+ * That is if we branch a release of master 55.10.123 we will bump to 55.11.100
-+ * for the release and master will continue at 55.12.100 after it. Each new
-+ * point release will then bump the MICRO improving the usefulness of the lib
-+ * versions.
-+ *
-+ * @{
-+ */
-+
-+#define AV_VERSION_INT(a, b, c) ((a)<<16 | (b)<<8 | (c))
-+#define AV_VERSION_DOT(a, b, c) a ##.## b ##.## c
-+#define AV_VERSION(a, b, c) AV_VERSION_DOT(a, b, c)
-+
-+/**
-+ * Extract version components from the full ::AV_VERSION_INT int as returned
-+ * by functions like ::avformat_version() and ::avcodec_version()
-+ */
-+#define AV_VERSION_MAJOR(a) ((a) >> 16)
-+#define AV_VERSION_MINOR(a) (((a) & 0x00FF00) >> 8)
-+#define AV_VERSION_MICRO(a) ((a) & 0xFF)
-+
-+/**
-+ * @}
-+ */
-+
-+/**
-+ * @defgroup lavu_ver Version and Build diagnostics
-+ *
-+ * Macros and function useful to check at compiletime and at runtime
-+ * which version of libavutil is in use.
-+ *
-+ * @{
-+ */
-+
-+#define LIBAVUTIL_VERSION_MAJOR 56
-+#define LIBAVUTIL_VERSION_MINOR 14
-+#define LIBAVUTIL_VERSION_MICRO 100
-+
-+#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
-+ LIBAVUTIL_VERSION_MINOR, \
-+ LIBAVUTIL_VERSION_MICRO)
-+#define LIBAVUTIL_VERSION AV_VERSION(LIBAVUTIL_VERSION_MAJOR, \
-+ LIBAVUTIL_VERSION_MINOR, \
-+ LIBAVUTIL_VERSION_MICRO)
-+#define LIBAVUTIL_BUILD LIBAVUTIL_VERSION_INT
-+
-+#define LIBAVUTIL_IDENT "Lavu" AV_STRINGIFY(LIBAVUTIL_VERSION)
-+
-+/**
-+ * @defgroup lavu_depr_guards Deprecation Guards
-+ * FF_API_* defines may be placed below to indicate public API that will be
-+ * dropped at a future version bump. The defines themselves are not part of
-+ * the public API and may change, break or disappear at any time.
-+ *
-+ * @note, when bumping the major version it is recommended to manually
-+ * disable each FF_API_* in its own commit instead of disabling them all
-+ * at once through the bump. This improves the git bisect-ability of the change.
-+ *
-+ * @{
-+ */
-+
-+#ifndef FF_API_VAAPI
-+#define FF_API_VAAPI (LIBAVUTIL_VERSION_MAJOR < 57)
-+#endif
-+#ifndef FF_API_FRAME_QP
-+#define FF_API_FRAME_QP (LIBAVUTIL_VERSION_MAJOR < 57)
-+#endif
-+#ifndef FF_API_PLUS1_MINUS1
-+#define FF_API_PLUS1_MINUS1 (LIBAVUTIL_VERSION_MAJOR < 57)
-+#endif
-+#ifndef FF_API_ERROR_FRAME
-+#define FF_API_ERROR_FRAME (LIBAVUTIL_VERSION_MAJOR < 57)
-+#endif
-+#ifndef FF_API_PKT_PTS
-+#define FF_API_PKT_PTS (LIBAVUTIL_VERSION_MAJOR < 57)
-+#endif
-+#ifndef FF_API_CRYPTO_SIZE_T
-+#define FF_API_CRYPTO_SIZE_T (LIBAVUTIL_VERSION_MAJOR < 57)
-+#endif
-+#ifndef FF_API_FRAME_GET_SET
-+#define FF_API_FRAME_GET_SET (LIBAVUTIL_VERSION_MAJOR < 57)
-+#endif
-+#ifndef FF_API_PSEUDOPAL
-+#define FF_API_PSEUDOPAL (LIBAVUTIL_VERSION_MAJOR < 57)
-+#endif
-+
-+
-+/**
-+ * @}
-+ * @}
-+ */
-+
-+#endif /* AVUTIL_VERSION_H */
---- /dev/null
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/ffmpeg58/moz.build
-@@ -0,0 +1,25 @@
-+# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*-
-+# vim: set filetype=python:
-+# This Source Code Form is subject to the terms of the Mozilla Public
-+# License, v. 2.0. If a copy of the MPL was not distributed with this
-+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-+
-+UNIFIED_SOURCES += [
-+ '../FFmpegAudioDecoder.cpp',
-+ '../FFmpegDataDecoder.cpp',
-+ '../FFmpegDecoderModule.cpp',
-+ '../FFmpegVideoDecoder.cpp',
-+]
-+LOCAL_INCLUDES += [
-+ '..',
-+ 'include',
-+]
-+
-+if CONFIG['CC_TYPE'] in ('clang', 'gcc'):
-+ CXXFLAGS += [ '-Wno-deprecated-declarations' ]
-+if CONFIG['CC_TYPE'] == 'clang':
-+ CXXFLAGS += [
-+ '-Wno-unknown-attributes',
-+ ]
-+
-+FINAL_LIBRARY = 'xul'
---- firefox-52.9.0esr/dom/media/platforms/ffmpeg/moz.build
-+++ firefox-52.9.0esr/dom/media/platforms/ffmpeg/moz.build
-@@ -8,15 +8,16 @@ EXPORTS += [
- 'FFmpegRuntimeLinker.h',
- ]
-
- DIRS += [
- 'libav53',
- 'libav54',
- 'libav55',
- 'ffmpeg57',
-+ 'ffmpeg58',
- ]
-
- UNIFIED_SOURCES += [
- 'FFmpegRuntimeLinker.cpp',
- ]
-
- FINAL_LIBRARY = 'xul'
-
diff --git a/user/firefox-esr/fix-arm-atomics-grsec.patch b/user/firefox-esr/fix-arm-atomics-grsec.patch
deleted file mode 100644
index 0eb58f093..000000000
--- a/user/firefox-esr/fix-arm-atomics-grsec.patch
+++ /dev/null
@@ -1,306 +0,0 @@
---- mozilla-release/ipc/chromium/src/base/atomicops_internals_arm_gcc.h.orig
-+++ mozilla-release/ipc/chromium/src/base/atomicops_internals_arm_gcc.h
-@@ -12,43 +35,194 @@
- namespace base {
- namespace subtle {
-
--// 0xffff0fc0 is the hard coded address of a function provided by
--// the kernel which implements an atomic compare-exchange. On older
--// ARM architecture revisions (pre-v6) this may be implemented using
--// a syscall. This address is stable, and in active use (hard coded)
--// by at least glibc-2.7 and the Android C library.
--typedef Atomic32 (*LinuxKernelCmpxchgFunc)(Atomic32 old_value,
-- Atomic32 new_value,
-- volatile Atomic32* ptr);
--LinuxKernelCmpxchgFunc pLinuxKernelCmpxchg __attribute__((weak)) =
-- (LinuxKernelCmpxchgFunc) 0xffff0fc0;
-+// Memory barriers on ARM are funky, but the kernel is here to help:
-+//
-+// * ARMv5 didn't support SMP, there is no memory barrier instruction at
-+// all on this architecture, or when targeting its machine code.
-+//
-+// * Some ARMv6 CPUs support SMP. A full memory barrier can be produced by
-+// writing a random value to a very specific coprocessor register.
-+//
-+// * On ARMv7, the "dmb" instruction is used to perform a full memory
-+// barrier (though writing to the co-processor will still work).
-+// However, on single core devices (e.g. Nexus One, or Nexus S),
-+// this instruction will take up to 200 ns, which is huge, even though
-+// it's completely un-needed on these devices.
-+//
-+// * There is no easy way to determine at runtime if the device is
-+// single or multi-core. However, the kernel provides a useful helper
-+// function at a fixed memory address (0xffff0fa0), which will always
-+// perform a memory barrier in the most efficient way. I.e. on single
-+// core devices, this is an empty function that exits immediately.
-+// On multi-core devices, it implements a full memory barrier.
-+//
-+// * This source could be compiled to ARMv5 machine code that runs on a
-+// multi-core ARMv6 or ARMv7 device. In this case, memory barriers
-+// are needed for correct execution. Always call the kernel helper, even
-+// when targeting ARMv5TE.
-+//
-
--typedef void (*LinuxKernelMemoryBarrierFunc)(void);
--LinuxKernelMemoryBarrierFunc pLinuxKernelMemoryBarrier __attribute__((weak)) =
-- (LinuxKernelMemoryBarrierFunc) 0xffff0fa0;
-+inline void MemoryBarrier() {
-+#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \
-+ defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__)
-+ __asm__ __volatile__("dmb ish" ::: "memory");
-+#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || \
-+ defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \
-+ defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__)
-+ __asm__ __volatile__("mcr p15,0,r0,c7,c10,5" ::: "memory");
-+#elif defined(__linux__) || defined(__ANDROID__)
-+ // Note: This is a function call, which is also an implicit compiler barrier.
-+ typedef void (*KernelMemoryBarrierFunc)();
-+ ((KernelMemoryBarrierFunc)0xffff0fa0)();
-+#error MemoryBarrier() is not implemented on this platform.
-+#endif
-+}
-
-+// An ARM toolchain would only define one of these depending on which
-+// variant of the target architecture is being used. This tests against
-+// any known ARMv6 or ARMv7 variant, where it is possible to directly
-+// use ldrex/strex instructions to implement fast atomic operations.
-+#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \
-+ defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || \
-+ defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || \
-+ defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \
-+ defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__)
-
- inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr,
- Atomic32 old_value,
- Atomic32 new_value) {
-- Atomic32 prev_value = *ptr;
-+ Atomic32 prev_value;
-+ int reloop;
- do {
-- if (!pLinuxKernelCmpxchg(old_value, new_value,
-- const_cast<Atomic32*>(ptr))) {
-- return old_value;
-- }
-- prev_value = *ptr;
-- } while (prev_value == old_value);
-+ // The following is equivalent to:
-+ //
-+ // prev_value = LDREX(ptr)
-+ // reloop = 0
-+ // if (prev_value != old_value)
-+ // reloop = STREX(ptr, new_value)
-+ __asm__ __volatile__(" ldrex %0, [%3]\n"
-+ " mov %1, #0\n"
-+ " cmp %0, %4\n"
-+#ifdef __thumb2__
-+ " it eq\n"
-+#endif
-+ " strexeq %1, %5, [%3]\n"
-+ : "=&r"(prev_value), "=&r"(reloop), "+m"(*ptr)
-+ : "r"(ptr), "r"(old_value), "r"(new_value)
-+ : "cc", "memory");
-+ } while (reloop != 0);
- return prev_value;
- }
-
-+inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr,
-+ Atomic32 old_value,
-+ Atomic32 new_value) {
-+ Atomic32 result = NoBarrier_CompareAndSwap(ptr, old_value, new_value);
-+ MemoryBarrier();
-+ return result;
-+}
-+
-+inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr,
-+ Atomic32 old_value,
-+ Atomic32 new_value) {
-+ MemoryBarrier();
-+ return NoBarrier_CompareAndSwap(ptr, old_value, new_value);
-+}
-+
-+inline Atomic32 NoBarrier_AtomicIncrement(volatile Atomic32* ptr,
-+ Atomic32 increment) {
-+ Atomic32 value;
-+ int reloop;
-+ do {
-+ // Equivalent to:
-+ //
-+ // value = LDREX(ptr)
-+ // value += increment
-+ // reloop = STREX(ptr, value)
-+ //
-+ __asm__ __volatile__(" ldrex %0, [%3]\n"
-+ " add %0, %0, %4\n"
-+ " strex %1, %0, [%3]\n"
-+ : "=&r"(value), "=&r"(reloop), "+m"(*ptr)
-+ : "r"(ptr), "r"(increment)
-+ : "cc", "memory");
-+ } while (reloop);
-+ return value;
-+}
-+
-+inline Atomic32 Barrier_AtomicIncrement(volatile Atomic32* ptr,
-+ Atomic32 increment) {
-+ // TODO(digit): Investigate if it's possible to implement this with
-+ // a single MemoryBarrier() operation between the LDREX and STREX.
-+ // See http://crbug.com/246514
-+ MemoryBarrier();
-+ Atomic32 result = NoBarrier_AtomicIncrement(ptr, increment);
-+ MemoryBarrier();
-+ return result;
-+}
-+
- inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr,
- Atomic32 new_value) {
- Atomic32 old_value;
-+ int reloop;
- do {
-+ // old_value = LDREX(ptr)
-+ // reloop = STREX(ptr, new_value)
-+ __asm__ __volatile__(" ldrex %0, [%3]\n"
-+ " strex %1, %4, [%3]\n"
-+ : "=&r"(old_value), "=&r"(reloop), "+m"(*ptr)
-+ : "r"(ptr), "r"(new_value)
-+ : "cc", "memory");
-+ } while (reloop != 0);
-+ return old_value;
-+}
-+
-+// This tests against any known ARMv5 variant.
-+#elif defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || \
-+ defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__)
-+
-+// The kernel also provides a helper function to perform an atomic
-+// compare-and-swap operation at the hard-wired address 0xffff0fc0.
-+// On ARMv5, this is implemented by a special code path that the kernel
-+// detects and treats specially when thread pre-emption happens.
-+// On ARMv6 and higher, it uses LDREX/STREX instructions instead.
-+//
-+// Note that this always perform a full memory barrier, there is no
-+// need to add calls MemoryBarrier() before or after it. It also
-+// returns 0 on success, and 1 on exit.
-+//
-+// Available and reliable since Linux 2.6.24. Both Android and ChromeOS
-+// use newer kernel revisions, so this should not be a concern.
-+namespace {
-+
-+inline int LinuxKernelCmpxchg(Atomic32 old_value,
-+ Atomic32 new_value,
-+ volatile Atomic32* ptr) {
-+ typedef int (*KernelCmpxchgFunc)(Atomic32, Atomic32, volatile Atomic32*);
-+ return ((KernelCmpxchgFunc)0xffff0fc0)(old_value, new_value, ptr);
-+}
-+
-+} // namespace
-+
-+inline Atomic32 NoBarrier_CompareAndSwap(volatile Atomic32* ptr,
-+ Atomic32 old_value,
-+ Atomic32 new_value) {
-+ Atomic32 prev_value;
-+ for (;;) {
-+ prev_value = *ptr;
-+ if (prev_value != old_value)
-+ return prev_value;
-+ if (!LinuxKernelCmpxchg(old_value, new_value, ptr))
-+ return old_value;
-+ }
-+}
-+
-+inline Atomic32 NoBarrier_AtomicExchange(volatile Atomic32* ptr,
-+ Atomic32 new_value) {
-+ Atomic32 old_value;
-+ do {
- old_value = *ptr;
-- } while (pLinuxKernelCmpxchg(old_value, new_value,
-- const_cast<Atomic32*>(ptr)));
-+ } while (LinuxKernelCmpxchg(old_value, new_value, ptr));
- return old_value;
- }
-
-@@ -63,36 +237,57 @@
- // Atomic exchange the old value with an incremented one.
- Atomic32 old_value = *ptr;
- Atomic32 new_value = old_value + increment;
-- if (pLinuxKernelCmpxchg(old_value, new_value,
-- const_cast<Atomic32*>(ptr)) == 0) {
-+ if (!LinuxKernelCmpxchg(old_value, new_value, ptr)) {
- // The exchange took place as expected.
- return new_value;
- }
- // Otherwise, *ptr changed mid-loop and we need to retry.
- }
--
- }
-
- inline Atomic32 Acquire_CompareAndSwap(volatile Atomic32* ptr,
- Atomic32 old_value,
- Atomic32 new_value) {
-- return NoBarrier_CompareAndSwap(ptr, old_value, new_value);
-+ Atomic32 prev_value;
-+ for (;;) {
-+ prev_value = *ptr;
-+ if (prev_value != old_value) {
-+ // Always ensure acquire semantics.
-+ MemoryBarrier();
-+ return prev_value;
-+ }
-+ if (!LinuxKernelCmpxchg(old_value, new_value, ptr))
-+ return old_value;
-+ }
- }
-
- inline Atomic32 Release_CompareAndSwap(volatile Atomic32* ptr,
- Atomic32 old_value,
- Atomic32 new_value) {
-- return NoBarrier_CompareAndSwap(ptr, old_value, new_value);
-+ // This could be implemented as:
-+ // MemoryBarrier();
-+ // return NoBarrier_CompareAndSwap();
-+ //
-+ // But would use 3 barriers per succesful CAS. To save performance,
-+ // use Acquire_CompareAndSwap(). Its implementation guarantees that:
-+ // - A succesful swap uses only 2 barriers (in the kernel helper).
-+ // - An early return due to (prev_value != old_value) performs
-+ // a memory barrier with no store, which is equivalent to the
-+ // generic implementation above.
-+ return Acquire_CompareAndSwap(ptr, old_value, new_value);
- }
-
-+#else
-+# error "Your CPU's ARM architecture is not supported yet"
-+#endif
-+
-+// NOTE: Atomicity of the following load and store operations is only
-+// guaranteed in case of 32-bit alignement of |ptr| values.
-+
- inline void NoBarrier_Store(volatile Atomic32* ptr, Atomic32 value) {
- *ptr = value;
- }
-
--inline void MemoryBarrier() {
-- pLinuxKernelMemoryBarrier();
--}
--
- inline void Acquire_Store(volatile Atomic32* ptr, Atomic32 value) {
- *ptr = value;
- MemoryBarrier();
-@@ -103,9 +298,7 @@
- *ptr = value;
- }
-
--inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) {
-- return *ptr;
--}
-+inline Atomic32 NoBarrier_Load(volatile const Atomic32* ptr) { return *ptr; }
-
- inline Atomic32 Acquire_Load(volatile const Atomic32* ptr) {
- Atomic32 value = *ptr;
-@@ -118,7 +311,6 @@
- return *ptr;
- }
-
--} // namespace base::subtle
--} // namespace base
-+} } // namespace base::subtle
-
- #endif // BASE_ATOMICOPS_INTERNALS_ARM_GCC_H_
diff --git a/user/firefox-esr/fix-arm-version-detect.patch b/user/firefox-esr/fix-arm-version-detect.patch
deleted file mode 100644
index c0c2a2e83..000000000
--- a/user/firefox-esr/fix-arm-version-detect.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/build/autoconf/arch.m4 b/build/autoconf/arch.m4
-index b62ea71..53179a7 100644
---- a/build/autoconf/arch.m4
-+++ b/build/autoconf/arch.m4
-@@ -215,7 +215,7 @@ if test "$CPU_ARCH" = "arm"; then
-
- AC_MSG_CHECKING(ARM version support in compiler)
- dnl Determine the target ARM architecture (5 for ARMv5, v5T, v5E, etc.; 6 for ARMv6, v6K, etc.)
-- ARM_ARCH=`${CC-cc} ${CFLAGS} -dM -E - < /dev/null | sed -n 's/.*__ARM_ARCH_\([[0-9]][[0-9]]*\).*/\1/p'`
-+ ARM_ARCH=`${CC-cc} ${CFLAGS} -dM -E - < /dev/null | sed -n 's/.*__ARM_ARCH_\([[0-9]][[0-9]]*\).*/\1/p' | head -n 1`
- AC_MSG_RESULT("$ARM_ARCH")
-
- AC_MSG_CHECKING(for ARM NEON support in compiler)
diff --git a/user/firefox-esr/fix-fortify-inline.patch b/user/firefox-esr/fix-fortify-inline.patch
deleted file mode 100644
index 2498c57fc..000000000
--- a/user/firefox-esr/fix-fortify-inline.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/media/webrtc/signaling/src/sdp/sipcc/sdp_os_defs.h
-+++ b/media/webrtc/signaling/src/sdp/sipcc/sdp_os_defs.h
-@@ -27,8 +27,5 @@
- typedef int16_t int16;
- typedef unsigned short ushort;
- typedef unsigned long ulong;
--#ifndef __GNUC_STDC_INLINE__
--#define inline
--#endif
-
- #endif /* _SDP_OS_DEFS_H_ */
diff --git a/user/firefox-esr/fix-fortify-system-wrappers.patch b/user/firefox-esr/fix-fortify-system-wrappers.patch
deleted file mode 100644
index c966f31f9..000000000
--- a/user/firefox-esr/fix-fortify-system-wrappers.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-The wrapper features.h gets pulled in by system headers causing thigns to
-break. We work around it by simply not wrap features.h
-
---- ./config/system-headers.orig
-+++ ./config/system-headers
-@@ -422,7 +422,6 @@
- extras.h
- fabdef.h
- fcntl.h
--features.h
- fibdef.h
- File.h
- filehdr.h
diff --git a/user/firefox-esr/fix-mutex-build.patch b/user/firefox-esr/fix-mutex-build.patch
new file mode 100644
index 000000000..1d1d0772b
--- /dev/null
+++ b/user/firefox-esr/fix-mutex-build.patch
@@ -0,0 +1,20 @@
+--- firefox-60.3.0/memory/build/Mutex.h.old 2018-10-17 20:39:32.000000000 +0000
++++ firefox-60.3.0/memory/build/Mutex.h 2018-10-26 05:22:54.980000000 +0000
+@@ -57,7 +57,7 @@
+ }
+ #elif defined(XP_DARWIN)
+ mMutex = OS_UNFAIR_LOCK_INIT;
+-#elif defined(XP_LINUX) && !defined(ANDROID)
++#elif defined(XP_LINUX) && defined(__GLIBC__)
+ pthread_mutexattr_t attr;
+ if (pthread_mutexattr_init(&attr) != 0) {
+ return false;
+@@ -142,7 +142,7 @@
+
+ # if defined(XP_DARWIN)
+ # define STATIC_MUTEX_INIT OS_UNFAIR_LOCK_INIT
+-# elif defined(XP_LINUX) && !defined(ANDROID)
++# elif defined(XP_LINUX) && defined(__GLIBC__)
+ # define STATIC_MUTEX_INIT PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
+ # else
+ # define STATIC_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER
diff --git a/user/firefox-esr/fix-seccomp-bpf.patch b/user/firefox-esr/fix-seccomp-bpf.patch
index 47cde56c7..08068b5f5 100644
--- a/user/firefox-esr/fix-seccomp-bpf.patch
+++ b/user/firefox-esr/fix-seccomp-bpf.patch
@@ -1,8 +1,8 @@
--- a/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc.orig 2015-09-23 09:10:08.812740571 +0200
+++ b/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc 2015-09-23 09:11:38.404746155 +0200
-@@ -23,6 +23,11 @@
- #include "sandbox/linux/services/android_ucontext.h"
- #endif
+@@ -25,6 +25,11 @@
+ #include "sandbox/linux/system_headers/linux_seccomp.h"
+ #include "sandbox/linux/system_headers/linux_signal.h"
+// musl libc defines siginfo_t __si_fields instead of _sifields
+#if defined(OS_LINUX) && !defined(__GLIBC__)
diff --git a/user/firefox-esr/fix-stack-overflow.patch b/user/firefox-esr/fix-stack-overflow.patch
deleted file mode 100644
index e164fc69b..000000000
--- a/user/firefox-esr/fix-stack-overflow.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-https://bugs.alpinelinux.org/issues/5559
-https://bugzilla.mozilla.org/show_bug.cgi?id=1274732
-
-diff --git a/netwerk/streamconv/converters/nsHTTPCompressConv.cpp b/netwerk/streamconv/converters/nsHTTPCompressConv.cpp
-index 1193529..aeb96b5 100644
---- a/netwerk/streamconv/converters/nsHTTPCompressConv.cpp
-+++ b/netwerk/streamconv/converters/nsHTTPCompressConv.cpp
-@@ -165,9 +165,8 @@ nsHTTPCompressConv::BrotliHandler(nsIInputStream *stream, void *closure, const c
- nsHTTPCompressConv *self = static_cast<nsHTTPCompressConv *>(closure);
- *countRead = 0;
-
-- const uint32_t kOutSize = 128 * 1024; // just a chunk size, we call in a loop
-- unsigned char outBuffer[kOutSize];
-- unsigned char *outPtr;
-+ const size_t kOutSize = 128 * 1024; // just a chunk size, we call in a loop
-+ uint8_t *outPtr;
- size_t outSize;
- size_t avail = aAvail;
- BrotliResult res;
-@@ -177,9 +176,15 @@ nsHTTPCompressConv::BrotliHandler(nsIInputStream *stream, void *closure, const c
- return NS_OK;
- }
-
-+ auto outBuffer = MakeUniqueFallible<uint8_t[]>(kOutSize);
-+ if (outBuffer == nullptr) {
-+ self->mBrotli->mStatus = NS_ERROR_OUT_OF_MEMORY;
-+ return self->mBrotli->mStatus;
-+ }
-+
- do {
- outSize = kOutSize;
-- outPtr = outBuffer;
-+ outPtr = outBuffer.get();
-
- // brotli api is documented in brotli/dec/decode.h and brotli/dec/decode.c
- LOG(("nsHttpCompresssConv %p brotlihandler decompress %d\n", self, avail));
-@@ -210,7 +215,7 @@ nsHTTPCompressConv::BrotliHandler(nsIInputStream *stream, void *closure, const c
- nsresult rv = self->do_OnDataAvailable(self->mBrotli->mRequest,
- self->mBrotli->mContext,
- self->mBrotli->mSourceOffset,
-- reinterpret_cast<const char *>(outBuffer),
-+ reinterpret_cast<const char *>(outBuffer.get()),
- outSize);
- LOG(("nsHttpCompressConv %p BrotliHandler ODA rv=%x", self, rv));
- if (NS_FAILED(rv)) {
diff --git a/user/firefox-esr/fix-toolkit.patch b/user/firefox-esr/fix-toolkit.patch
deleted file mode 100644
index 58fe5a3a9..000000000
--- a/user/firefox-esr/fix-toolkit.patch
+++ /dev/null
@@ -1,90 +0,0 @@
-diff --git a/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc b/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc
-index 4222ce3..4d40c6a 100644
---- a/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc
-+++ b/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc
-@@ -45,6 +45,7 @@
- #include <sys/mman.h>
- #include <sys/stat.h>
- #include <unistd.h>
-+#include <libgen.h>
-
- #include <iostream>
- #include <set>
-diff --git a/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc b/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc
-index 6019fc7..5953e32 100644
---- a/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc
-+++ b/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc
-@@ -41,6 +41,10 @@
-
- #include "common/using_std_string.h"
-
-+#ifndef N_UNDF
-+#define N_UNDF 0
-+#endif
-+
- using std::vector;
-
- namespace google_breakpad {
-diff --git a/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h b/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h
-index 98ee2dd..d57aa68 100644
---- a/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h
-+++ b/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h
-@@ -55,7 +55,7 @@
-
- #ifdef HAVE_MACH_O_NLIST_H
- #include <mach-o/nlist.h>
--#elif defined(HAVE_A_OUT_H)
-+#elif 0
- #include <a.out.h>
- #endif
-
-diff --git a/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h b/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h
-index 93fdad7..f34e5e0 100644
---- a/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h
-+++ b/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h
-@@ -1134,6 +1134,12 @@ struct kernel_statfs {
- #ifndef __NR_fallocate
- #define __NR_fallocate 285
- #endif
-+
-+#undef __NR_pread
-+#define __NR_pread __NR_pread64
-+#undef __NR_pwrite
-+#define __NR_pwrite __NR_pwrite64
-+
- /* End of x86-64 definitions */
- #elif defined(__mips__)
- #if _MIPS_SIM == _MIPS_SIM_ABI32
-diff --git a/toolkit/mozapps/update/common/updatedefines.h b/toolkit/mozapps/update/common/updatedefines.h
-index 026e7ed..0801f14 100644
---- a/toolkit/mozapps/update/common/updatedefines.h
-+++ b/toolkit/mozapps/update/common/updatedefines.h
-@@ -117,7 +117,7 @@ static inline int mywcsprintf(WCHAR* dest, size_t count, const WCHAR* fmt, ...)
-
- #ifdef SOLARIS
- # include <sys/stat.h>
--#else
-+#elif !defined(__linux__) || defined(__GLIBC__)
- # include <fts.h>
- #endif
- # include <dirent.h>
-diff --git a/toolkit/mozapps/update/updater/updater.cpp b/toolkit/mozapps/update/updater/updater.cpp
-index 257ccb4..01314e4 100644
---- a/toolkit/mozapps/update/updater/updater.cpp
-+++ b/toolkit/mozapps/update/updater/updater.cpp
-@@ -3737,6 +3737,7 @@ int add_dir_entries(const NS_tchar *dirpath, ActionList *list)
- int add_dir_entries(const NS_tchar *dirpath, ActionList *list)
- {
- int rv = OK;
-+#if !defined(__linux__) || defined(__GLIBC__)
- FTS *ftsdir;
- FTSENT *ftsdirEntry;
- NS_tchar searchpath[MAXPATHLEN];
-@@ -3840,6 +3841,7 @@ int add_dir_entries(const NS_tchar *dirpath, ActionList *list)
- }
-
- fts_close(ftsdir);
-+#endif
-
- return rv;
- }
diff --git a/user/firefox-esr/fix-tools.patch b/user/firefox-esr/fix-tools.patch
deleted file mode 100644
index ea5a2cd78..000000000
--- a/user/firefox-esr/fix-tools.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-diff --git a/tools/profiler/core/platform-linux.cc b/tools/profiler/core/platform-linux.cc
-index 0df1e8f..d868895 100644
---- a/tools/profiler/core/platform-linux.cc
-+++ b/tools/profiler/core/platform-linux.cc
-@@ -711,11 +711,13 @@ void OS::Startup() {
- void TickSample::PopulateContext(void* aContext)
- {
- MOZ_ASSERT(aContext);
-+#if defined(__GLIBC__)
- ucontext_t* pContext = reinterpret_cast<ucontext_t*>(aContext);
- if (!getcontext(pContext)) {
- context = pContext;
- SetSampleContext(this, aContext);
- }
-+#endif
- }
-
- void OS::SleepMicro(int microseconds)
-diff --git a/tools/profiler/core/platform.h b/tools/profiler/core/platform.h
-index a38b3b5..170bd75 100644
---- a/tools/profiler/core/platform.h
-+++ b/tools/profiler/core/platform.h
-@@ -34,6 +34,8 @@
- #define MOZ_COUNT_DTOR(name)
- #endif
-
-+#include <sys/types.h>
-+
- #ifdef ANDROID
- #include <android/log.h>
- #else
-diff --git a/tools/profiler/lul/LulElf.cpp b/tools/profiler/lul/LulElf.cpp
-index a922137..d01dde1 100644
---- a/tools/profiler/lul/LulElf.cpp
-+++ b/tools/profiler/lul/LulElf.cpp
-@@ -483,10 +483,10 @@ string FormatIdentifier(unsigned char identifier[16]) {
- // Return the non-directory portion of FILENAME: the portion after the
- // last slash, or the whole filename if there are no slashes.
- string BaseFileName(const string &filename) {
-- // Lots of copies! basename's behavior is less than ideal.
-- char *c_filename = strdup(filename.c_str());
-- string base = basename(c_filename);
-- free(c_filename);
-+ // basename's behavior is less than ideal so avoid it
-+ const char *c_filename = filename.c_str();
-+ const char *p = strrchr(c_filename, '/');
-+ string base = p ? p+1 : c_filename;
- return base;
- }
-
diff --git a/user/firefox-esr/icu-75.patch b/user/firefox-esr/icu-75.patch
new file mode 100644
index 000000000..617dd76a9
--- /dev/null
+++ b/user/firefox-esr/icu-75.patch
@@ -0,0 +1,41 @@
+https://bugs.gentoo.org/917599
+https://bugzilla.mozilla.org/show_bug.cgi?id=1862601
+https://hg.mozilla.org/try/rev/d5f3b0c4f08a426ce00a153c04e177eecb6820e2
+
+# HG changeset patch
+# User André Bargull <andre.bargull@gmail.com>
+# Date 1697435923 -7200
+# Node ID d5f3b0c4f08a426ce00a153c04e177eecb6820e2
+# Parent c63994f8259efdf6e745c960aa9e1409d5477049
+Bug xxx - Part 12: Add new line break classes. r?
+
+diff --git a/intl/lwbrk/LineBreaker.cpp b/intl/lwbrk/LineBreaker.cpp
+--- a/intl/lwbrk/LineBreaker.cpp
++++ b/intl/lwbrk/LineBreaker.cpp
+@@ -443,17 +443,23 @@ static int8_t GetClass(uint32_t u, LineB
+ /* JT = 34, [JT] */ CLASS_CHARACTER,
+ /* JV = 35, [JV] */ CLASS_CHARACTER,
+ /* CLOSE_PARENTHESIS = 36, [CP] */ CLASS_CLOSE_LIKE_CHARACTER,
+ /* CONDITIONAL_JAPANESE_STARTER = 37, [CJ] */ CLASS_CLOSE,
+ /* HEBREW_LETTER = 38, [HL] */ CLASS_CHARACTER,
+ /* REGIONAL_INDICATOR = 39, [RI] */ CLASS_CHARACTER,
+ /* E_BASE = 40, [EB] */ CLASS_BREAKABLE,
+ /* E_MODIFIER = 41, [EM] */ CLASS_CHARACTER,
+- /* ZWJ = 42, [ZWJ]*/ CLASS_CHARACTER};
++ /* ZWJ = 42, [ZWJ]*/ CLASS_CHARACTER,
++ /* AKSARA = 43, [AK] */ CLASS_CHARACTER,
++ /* AKSARA_PREBASE = 44, [AP] */ CLASS_CHARACTER,
++ /* AKSARA_START = 45, [AS] */ CLASS_CHARACTER,
++ /* VIRAMA_FINAL = 46, [VF] */ CLASS_CHARACTER,
++ /* VIRAMA = 47, [VI] */ CLASS_CHARACTER,
++ };
+
+ static_assert(U_LB_COUNT == mozilla::ArrayLength(sUnicodeLineBreakToClass),
+ "Gecko vs ICU LineBreak class mismatch");
+
+ auto cls = GetLineBreakClass(u);
+ MOZ_ASSERT(cls < mozilla::ArrayLength(sUnicodeLineBreakToClass));
+
+ // Overrides based on rules for the different line-break values given in
+
+
diff --git a/user/firefox-esr/jpeg-link.patch b/user/firefox-esr/jpeg-link.patch
new file mode 100644
index 000000000..724bc76fb
--- /dev/null
+++ b/user/firefox-esr/jpeg-link.patch
@@ -0,0 +1,25 @@
+--- firefox-91.13.0/toolkit/moz.configure.old 2022-08-15 13:05:59.000000000 -0500
++++ firefox-91.13.0/toolkit/moz.configure 2022-11-15 01:26:57.874201494 -0600
+@@ -2274,14 +2274,14 @@
+ )
+
+ with only_when("--with-system-jpeg"):
+- check_symbol(
+- "jpeg_destroy_compress",
+- flags=jpeg_flags.ldflags,
+- onerror=lambda: die(
+- "--with-system-jpeg requested but symbol "
+- "jpeg_destroy_compress not found."
+- ),
+- )
++ #check_symbol(
++ # "jpeg_destroy_compress",
++ # flags=jpeg_flags.ldflags,
++ # onerror=lambda: die(
++ # "--with-system-jpeg requested but symbol "
++ # "jpeg_destroy_compress not found."
++ # ),
++ #)
+
+ c_compiler.try_compile(
+ includes=[
diff --git a/user/firefox-esr/js-endian.patch b/user/firefox-esr/js-endian.patch
new file mode 100644
index 000000000..44f21d2d1
--- /dev/null
+++ b/user/firefox-esr/js-endian.patch
@@ -0,0 +1,33 @@
+# HG changeset patch
+# User A. Wilcox <AWilcox@Wilcox-Tech.com>
+# Date 1729710191 18000
+# Wed Oct 23 14:03:11 2024 -0500
+# Node ID 6102585e0d752de1729135d4c7d917e751b268c5
+# Parent 61f7d9c0998e2ce8008cd15b187f86dfdba21a26
+Bug 1926667 - Ensure JSStructuredCloneReader::readTransferMap respects endianness r?sfink
+
+Differential Revision: https://phabricator.services.mozilla.com/D226707
+
+diff --git a/js/src/vm/StructuredClone.cpp b/js/src/vm/StructuredClone.cpp
+--- a/js/src/vm/StructuredClone.cpp
++++ b/js/src/vm/StructuredClone.cpp
+@@ -3387,7 +3387,8 @@ bool JSStructuredCloneReader::readTransf
+ }
+
+ headerPos.write(
+- PairToUInt64(SCTAG_TRANSFER_MAP_HEADER, SCTAG_TM_TRANSFERRING));
++ NativeEndian::swapToLittleEndian(
++ PairToUInt64(SCTAG_TRANSFER_MAP_HEADER, SCTAG_TM_TRANSFERRING)));
+
+ uint64_t numTransferables;
+ MOZ_ALWAYS_TRUE(in.readPair(&tag, &data));
+@@ -3512,7 +3513,8 @@ bool JSStructuredCloneReader::readTransf
+ MOZ_ASSERT(TransferableMapHeader(data) == SCTAG_TM_TRANSFERRING);
+ #endif
+ headerPos.write(
+- PairToUInt64(SCTAG_TRANSFER_MAP_HEADER, SCTAG_TM_TRANSFERRED));
++ NativeEndian::swapToLittleEndian(
++ PairToUInt64(SCTAG_TRANSFER_MAP_HEADER, SCTAG_TM_TRANSFERRED)));
+
+ return true;
+ }
diff --git a/user/firefox-esr/mallinfo.patch b/user/firefox-esr/mallinfo.patch
deleted file mode 100644
index 9959b52a4..000000000
--- a/user/firefox-esr/mallinfo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-diff --git a/xpcom/base/nsMemoryReporterManager.cpp b/xpcom/base/nsMemoryReporterManager.cpp
-index 89ee563..eab8cd7 100644
---- a/xpcom/base/nsMemoryReporterManager.cpp
-+++ b/xpcom/base/nsMemoryReporterManager.cpp
-@@ -153,6 +153,7 @@ ResidentUniqueDistinguishedAmount(int64_t* aN)
- return GetProcSelfSmapsPrivate(aN);
- }
-
-+#ifdef __GLIBC__
- #define HAVE_SYSTEM_HEAP_REPORTER 1
- nsresult
- SystemHeapSize(int64_t* aSizeOut)
-@@ -172,6 +173,7 @@ SystemHeapSize(int64_t* aSizeOut)
- *aSizeOut = size_t(info.hblkhd) + size_t(info.uordblks);
- return NS_OK;
- }
-+#endif
-
- #elif defined(__DragonFly__) || defined(__FreeBSD__) \
- || defined(__NetBSD__) || defined(__OpenBSD__) \
diff --git a/user/firefox-esr/missing-header-s390x.patch b/user/firefox-esr/missing-header-s390x.patch
deleted file mode 100644
index 39f4e2bc0..000000000
--- a/user/firefox-esr/missing-header-s390x.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/dom/filesystem/compat/FileSystemDirectoryReader.h b/dom/filesystem/compat/FileSystemDirectoryReader.h
-index d568990..12265f9 100644
---- a/dom/filesystem/compat/FileSystemDirectoryReader.h
-+++ b/dom/filesystem/compat/FileSystemDirectoryReader.h
-@@ -11,6 +11,7 @@
- #include "mozilla/ErrorResult.h"
- #include "mozilla/dom/BindingDeclarations.h"
- #include "nsCycleCollectionParticipant.h"
-+#include "mozilla/dom/FileSystemDirectoryEntry.h"
- #include "nsWrapperCache.h"
-
- namespace mozilla {
diff --git a/user/firefox-esr/mozconfig b/user/firefox-esr/mozconfig
new file mode 100644
index 000000000..b49d3be3f
--- /dev/null
+++ b/user/firefox-esr/mozconfig
@@ -0,0 +1,26 @@
+ac_add_options --prefix=/usr
+ac_add_options --libdir=/usr/lib
+ac_add_options --disable-crashreporter
+ac_add_options --disable-install-strip
+ac_add_options --disable-jemalloc
+ac_add_options --disable-profiling
+ac_add_options --disable-strip
+ac_add_options --disable-tests
+ac_add_options --disable-updater
+ac_add_options --disable-webrtc
+ac_add_options --enable-alsa
+ac_add_options --enable-application=browser
+ac_add_options --enable-dbus
+ac_add_options --enable-default-toolkit=cairo-gtk3
+ac_add_options --enable-official-branding
+ac_add_options --enable-pulseaudio
+ac_add_options --enable-system-ffi
+ac_add_options --with-system-icu
+ac_add_options --with-system-jpeg
+ac_add_options --with-system-libevent
+ac_add_options --with-system-nspr
+ac_add_options --with-system-nss
+ac_add_options --with-system-pixman
+ac_add_options --with-system-png
+ac_add_options --with-system-zlib
+ac_add_options --without-wasm-sandboxed-libraries
diff --git a/user/firefox-esr/mozilla-build-arm.patch b/user/firefox-esr/mozilla-build-arm.patch
index dcf2f6d8a..17c95d01d 100644
--- a/user/firefox-esr/mozilla-build-arm.patch
+++ b/user/firefox-esr/mozilla-build-arm.patch
@@ -1,10 +1,10 @@
--- ./gfx/ycbcr/moz.build.orig 2014-04-03 13:50:38.990296661 +0000
+++ ./gfx/ycbcr/moz.build 2014-04-03 13:52:26.878268547 +0000
-@@ -59,7 +59,7 @@
+@@ -53,7 +53,7 @@
'yuv_row_other.cpp',
]
--if CONFIG['CPU_ARCH'] == 'arm' and CONFIG['HAVE_ARM_NEON']:
+-if CONFIG['TARGET_CPU'] == 'arm' and CONFIG['HAVE_ARM_NEON']:
+if CONFIG['HAVE_ARM_NEON']:
SOURCES += [
'yuv_row_arm.s',
diff --git a/user/firefox-esr/musl-pthread-setname.patch b/user/firefox-esr/musl-pthread-setname.patch
deleted file mode 100644
index 3bf620219..000000000
--- a/user/firefox-esr/musl-pthread-setname.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- a/js/src/threading/posix/Thread.cpp.orig 2016-09-20 22:19:46.368622126 +0200
-+++ b/js/src/threading/posix/Thread.cpp 2016-09-20 22:23:35.495823534 +0200
-@@ -153,8 +153,10 @@
- rv = 0;
- #elif defined(__NetBSD__)
- rv = pthread_setname_np(pthread_self(), "%s", (void*)name);
--#else
-+#elif defined(__GLIBC__)
- rv = pthread_setname_np(pthread_self(), name);
-+#else
-+ rv = 0;
- #endif
- MOZ_RELEASE_ASSERT(!rv);
- }
diff --git a/user/firefox-esr/pmmx-double-format.patch b/user/firefox-esr/pmmx-double-format.patch
new file mode 100644
index 000000000..e520987b3
--- /dev/null
+++ b/user/firefox-esr/pmmx-double-format.patch
@@ -0,0 +1,16 @@
+diff --git a/modules/fdlibm/src/math_private.h b/modules/fdlibm/src/math_private.h
+index 51d79f9c2ec59..fafd7d6fc1e0d 100644
+--- a/modules/fdlibm/src/math_private.h
++++ b/modules/fdlibm/src/math_private.h
+@@ -30,7 +30,11 @@
+ * Adapted from https://github.com/freebsd/freebsd-src/search?q=__double_t
+ */
+
++#if defined __FLT_EVAL_METHOD__ && (__FLT_EVAL_METHOD__ == 2)
++typedef long double __double_t;
++#else
+ typedef double __double_t;
++#endif
+ typedef __double_t double_t;
+ typedef float __float_t;
+
diff --git a/user/firefox-esr/ppc32-fix.patch b/user/firefox-esr/ppc32-fix.patch
new file mode 100644
index 000000000..b4103c65f
--- /dev/null
+++ b/user/firefox-esr/ppc32-fix.patch
@@ -0,0 +1,43 @@
+--- firefox-68.1.0/xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_linux.cpp
++++ firefox-68.1.0/xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_linux.cpp
+@@ -45,11 +45,8 @@ invoke_copy_to_stack(uint32_t* d,
+ uint64_t tempu64;
+
+ for(uint32_t i = 0; i < paramCount; i++, s++) {
+- if(s->IsPtrData()) {
+- if(s->type == nsXPTType::T_JSVAL)
+- tempu32 = (uint32_t) &s->ptr;
+- else
+- tempu32 = (uint32_t) s->ptr;
++ if(s->IsIndirect()) {
++ tempu32 = (uint32_t) &s->val;
+ }
+ else {
+ switch(s->type) {
+@@ -70,7 +67,7 @@ invoke_copy_to_stack(uint32_t* d,
+ }
+ }
+
+- if (!s->IsPtrData() && s->type == nsXPTType::T_DOUBLE) {
++ if (!s->IsIndirect() && s->type == nsXPTType::T_DOUBLE) {
+ #ifndef __NO_FPRS__
+ if (fpr < FPR_COUNT)
+ fpregs[fpr++] = s->val.d;
+@@ -88,7 +85,7 @@ invoke_copy_to_stack(uint32_t* d,
+ d += 2;
+ }
+ }
+- else if (!s->IsPtrData() && s->type == nsXPTType::T_FLOAT) {
++ else if (!s->IsIndirect() && s->type == nsXPTType::T_FLOAT) {
+ #ifndef __NO_FPRS__
+ if (fpr < FPR_COUNT)
+ fpregs[fpr++] = s->val.f; // if passed in registers, floats are promoted to doubles
+@@ -99,7 +96,7 @@ invoke_copy_to_stack(uint32_t* d,
+ else
+ *((float*) d++) = s->val.f;
+ }
+- else if (!s->IsPtrData() && (s->type == nsXPTType::T_I64
++ else if (!s->IsIndirect() && (s->type == nsXPTType::T_I64
+ || s->type == nsXPTType::T_U64)) {
+ if (gpr & 1) gpr++; // longlongs are aligned in odd/even register pairs, eg. r5/r6
+ if ((gpr + 1) < GPR_COUNT) {
diff --git a/user/firefox-esr/python3.patch b/user/firefox-esr/python3.patch
deleted file mode 100644
index b13be2229..000000000
--- a/user/firefox-esr/python3.patch
+++ /dev/null
@@ -1,10397 +0,0 @@
---- firefox-52.9.0esr/python/mozbuild/dumbmake/dumbmake.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/dumbmake/dumbmake.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- from collections import OrderedDict
- from itertools import groupby
-@@ -36,7 +36,7 @@
- deps = {}
-
- for i, (indent, target) in enumerate(pairs):
-- if not deps.has_key(target):
-+ if target not in deps:
- deps[target] = []
-
- for j in range(i+1, len(pairs)):
-@@ -68,7 +68,7 @@
- del all_targets[dependency]
- all_targets[dependency] = True
-
-- return all_targets.keys()
-+ return list(all_targets.keys())
-
- def get_components(path):
- """Take a path and return all the components of the path."""
-@@ -114,7 +114,7 @@
- make_dirs[make_dir] = True
-
- all_components = []
-- for make_dir in make_dirs.iterkeys():
-+ for make_dir in make_dirs.keys():
- all_components.extend(get_components(make_dir))
-
- for i in all_dependencies(*all_components, dependency_map=dependency_map):
---- firefox-52.9.0esr/python/mozbuild/dumbmake/test/test_dumbmake.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/dumbmake/test/test_dumbmake.py (refactored)
-@@ -1,7 +1,7 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this file,
- # You can obtain one at http://mozilla.org/MPL/2.0/.
--from __future__ import unicode_literals
-+
-
- import unittest
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/android_version_code.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/android_version_code.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function
-+
-
- import argparse
- import math
---- firefox-52.9.0esr/python/mozbuild/mozbuild/artifacts.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/artifacts.py (refactored)
-@@ -40,7 +40,7 @@
- '''
-
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import collections
- import functools
-@@ -57,7 +57,7 @@
- import subprocess
- import tarfile
- import tempfile
--import urlparse
-+import urllib.parse
- import zipfile
-
- import pylru
-@@ -183,7 +183,7 @@
-
- with JarWriter(file=processed_filename, optimize=False, compress_level=5) as writer:
- reader = JarReader(filename)
-- for filename, entry in reader.entries.iteritems():
-+ for filename, entry in reader.entries.items():
- for pattern, (src_prefix, dest_prefix) in self.test_artifact_patterns:
- if not mozpath.match(filename, pattern):
- continue
-@@ -552,7 +552,7 @@
-
- def print_cache(self):
- with self:
-- for item in self._cache.items():
-+ for item in list(self._cache.items()):
- self.log(logging.INFO, 'artifact',
- {'item': item},
- '{item}')
-@@ -565,7 +565,7 @@
- # We use the persisted LRU caches to our advantage. The first item is
- # most recent.
- with self:
-- item = next(self._cache.items(), None)
-+ item = next(list(self._cache.items()), None)
- if item is not None:
- (name, args, sorted_kwargs), result = item
- self.print_last_item(args, sorted_kwargs, result)
-@@ -593,10 +593,10 @@
- 'changeset={changeset}&version=2&tipsonly=1')
- req = requests.get(cset_url_tmpl.format(tree=tree, changeset=revision),
- headers={'Accept': 'application/json'})
-- if req.status_code not in range(200, 300):
-+ if req.status_code not in list(range(200, 300)):
- raise ValueError
- result = req.json()
-- [found_pushid] = result['pushes'].keys()
-+ [found_pushid] = list(result['pushes'].keys())
- return int(found_pushid)
-
- @cachedmethod(operator.attrgetter('_cache'))
-@@ -609,7 +609,7 @@
- headers={'Accept': 'application/json'})
- result = req.json()
- return [
-- p['changesets'][-1] for p in result['pushes'].values()
-+ p['changesets'][-1] for p in list(result['pushes'].values())
- ]
-
- class TaskCache(CacheManager):
-@@ -847,7 +847,7 @@
-
- candidate_pushheads = collections.defaultdict(list)
-
-- for tree, pushid in found_pushids.iteritems():
-+ for tree, pushid in found_pushids.items():
- end = pushid
- start = pushid - NUM_PUSHHEADS_TO_QUERY_PER_PARENT
-
-@@ -1052,7 +1052,7 @@
- """
- if source and os.path.isfile(source):
- return self.install_from_file(source, distdir)
-- elif source and urlparse.urlparse(source).scheme:
-+ elif source and urllib.parse.urlparse(source).scheme:
- return self.install_from_url(source, distdir)
- else:
- if source is None and 'MOZ_ARTIFACT_REVISION' in os.environ:
---- firefox-52.9.0esr/python/mozbuild/mozbuild/base.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/base.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import json
- import logging
-@@ -482,7 +482,7 @@
- for flag in flags:
- if flag == '-j':
- try:
-- flag = flags.next()
-+ flag = next(flags)
- except StopIteration:
- break
- try:
---- firefox-52.9.0esr/python/mozbuild/mozbuild/config_status.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/config_status.py (refactored)
-@@ -6,7 +6,7 @@
- # drop-in replacement for autoconf 2.13's config.status, with features
- # borrowed from autoconf > 2.5, and additional features.
-
--from __future__ import absolute_import, print_function
-+
-
- import logging
- import os
---- firefox-52.9.0esr/python/mozbuild/mozbuild/doctor.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/doctor.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, # You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import os
- import subprocess
-@@ -83,7 +83,7 @@
- valid = False
- while not valid and limit > 0:
- try:
-- choice = strtobool(raw_input(prompt + '[Y/N]\n'))
-+ choice = strtobool(input(prompt + '[Y/N]\n'))
- valid = True
- except ValueError:
- print("ERROR! Please enter a valid option!")
-@@ -103,11 +103,11 @@
- if status == 'SKIPPED':
- continue
- self.results.append(result)
-- print('%s...\t%s\n' % (
-+ print(('%s...\t%s\n' % (
- result.get('desc', ''),
- status
- )
-- ).expandtabs(40)
-+ ).expandtabs(40))
-
- @property
- def platform(self):
-@@ -212,7 +212,7 @@
- fsutil_output = subprocess.check_output(command)
- status = 'GOOD, FIXED'
- desc = 'lastaccess disabled systemwide'
-- except subprocess.CalledProcessError, e:
-+ except subprocess.CalledProcessError as e:
- desc = 'lastaccess enabled systemwide'
- if e.output.find('denied') != -1:
- status = 'BAD, FIX DENIED'
---- firefox-52.9.0esr/python/mozbuild/mozbuild/dotproperties.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/dotproperties.py (refactored)
-@@ -5,7 +5,7 @@
- # This file contains utility functions for reading .properties files, like
- # region.properties.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import codecs
- import re
-@@ -14,7 +14,7 @@
- if sys.version_info[0] == 3:
- str_type = str
- else:
-- str_type = basestring
-+ str_type = str
-
- class DotProperties:
- r'''A thin representation of a key=value .properties file.'''
-@@ -52,7 +52,7 @@
- if not prefix.endswith('.'):
- prefix = prefix + '.'
- indexes = []
-- for k, v in self._properties.iteritems():
-+ for k, v in self._properties.items():
- if not k.startswith(prefix):
- continue
- key = k[len(prefix):]
-@@ -73,7 +73,7 @@
- if not prefix.endswith('.'):
- prefix = prefix + '.'
-
-- D = dict((k[len(prefix):], v) for k, v in self._properties.iteritems()
-+ D = dict((k[len(prefix):], v) for k, v in self._properties.items()
- if k.startswith(prefix) and '.' not in k[len(prefix):])
-
- for required_key in required_keys:
---- firefox-52.9.0esr/python/mozbuild/mozbuild/html_build_viewer.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/html_build_viewer.py (refactored)
-@@ -4,16 +4,16 @@
-
- # This module contains code for running an HTTP server to view build info.
-
--from __future__ import absolute_import, unicode_literals
-
--import BaseHTTPServer
-+
-+import http.server
- import json
- import os
-
- import requests
-
-
--class HTTPHandler(BaseHTTPServer.BaseHTTPRequestHandler):
-+class HTTPHandler(http.server.BaseHTTPRequestHandler):
- def do_GET(self):
- s = self.server.wrapper
- p = self.path
-@@ -92,7 +92,7 @@
- self.doc_root = doc_root
- self.json_files = {}
-
-- self.server = BaseHTTPServer.HTTPServer((address, port), HTTPHandler)
-+ self.server = http.server.HTTPServer((address, port), HTTPHandler)
- self.server.wrapper = self
- self.do_shutdown = False
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/jar.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/jar.py (refactored)
-@@ -8,7 +8,7 @@
- See the documentation for jar.mn on MDC for further details on the format.
- '''
-
--from __future__ import absolute_import
-+
-
- import sys
- import os
-@@ -17,7 +17,7 @@
- import logging
- from time import localtime
- from MozZipFile import ZipFile
--from cStringIO import StringIO
-+from io import StringIO
- from collections import defaultdict
-
- from mozbuild.preprocessor import Preprocessor
-@@ -302,9 +302,9 @@
- '''updateManifest replaces the % in the chrome registration entries
- with the given chrome base path, and updates the given manifest file.
- '''
-- myregister = dict.fromkeys(map(lambda s: s.replace('%',
-- chromebasepath), register))
-- addEntriesToListFile(manifestPath, myregister.iterkeys())
-+ myregister = dict.fromkeys([s.replace('%',
-+ chromebasepath) for s in register])
-+ addEntriesToListFile(manifestPath, iter(myregister.keys()))
-
- def makeJar(self, infile, jardir):
- '''makeJar is the main entry point to JarMaker.
-@@ -322,7 +322,7 @@
- elif self.relativesrcdir:
- self.localedirs = \
- self.generateLocaleDirs(self.relativesrcdir)
-- if isinstance(infile, basestring):
-+ if isinstance(infile, str):
- logging.info('processing ' + infile)
- self.sourcedirs.append(_normpath(os.path.dirname(infile)))
- pp = self.pp.clone()
-@@ -372,7 +372,7 @@
- jarfilepath = jarfile + '.jar'
- try:
- os.makedirs(os.path.dirname(jarfilepath))
-- except OSError, error:
-+ except OSError as error:
- if error.errno != errno.EEXIST:
- raise
- jf = ZipFile(jarfilepath, 'a', lock=True)
-@@ -514,7 +514,7 @@
- # remove previous link or file
- try:
- os.remove(out)
-- except OSError, e:
-+ except OSError as e:
- if e.errno != errno.ENOENT:
- raise
- return open(out, 'wb')
-@@ -525,7 +525,7 @@
- if not os.path.isdir(outdir):
- try:
- os.makedirs(outdir)
-- except OSError, error:
-+ except OSError as error:
- if error.errno != errno.EEXIST:
- raise
- return out
-@@ -541,7 +541,7 @@
- # remove previous link or file
- try:
- os.remove(out)
-- except OSError, e:
-+ except OSError as e:
- if e.errno != errno.ENOENT:
- raise
- if sys.platform != 'win32':
---- firefox-52.9.0esr/python/mozbuild/mozbuild/mach_commands.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/mach_commands.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, # You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import errno
-@@ -136,7 +136,7 @@
- # terminal is a blessings.Terminal.
- self._t = terminal
- self._fh = sys.stdout
-- self.tiers = monitor.tiers.tier_status.viewitems()
-+ self.tiers = monitor.tiers.tier_status.items()
-
- def clear(self):
- """Removes the footer from the current terminal."""
-@@ -802,7 +802,7 @@
- dirpath = None
-
- type_counts = database.type_counts(dirpath)
-- sorted_counts = sorted(type_counts.iteritems(),
-+ sorted_counts = sorted(iter(type_counts.items()),
- key=operator.itemgetter(1))
-
- total = 0
-@@ -957,7 +957,7 @@
- processes[i].run()
-
- exit_code = 0
-- for process in processes.values():
-+ for process in list(processes.values()):
- status = process.wait()
- if status:
- exit_code = status
---- firefox-52.9.0esr/python/mozbuild/mozbuild/makeutil.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/makeutil.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import os
- import re
-@@ -66,7 +66,7 @@
- self._list = []
- self._set = set()
-
-- def __nonzero__(self):
-+ def __bool__(self):
- return bool(self._set)
-
- def __iter__(self):
---- firefox-52.9.0esr/python/mozbuild/mozbuild/milestone.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/milestone.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import os
---- firefox-52.9.0esr/python/mozbuild/mozbuild/mozconfig.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/mozconfig.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import filecmp
- import os
-@@ -306,7 +306,7 @@
-
- # Environment variables also appear as shell variables, but that's
- # uninteresting duplication of information. Filter them out.
-- filt = lambda x, y: {k: v for k, v in x.items() if k not in y}
-+ filt = lambda x, y: {k: v for k, v in list(x.items()) if k not in y}
- result['vars'] = diff_vars(
- filt(parsed['vars_before'], parsed['env_before']),
- filt(parsed['vars_after'], parsed['env_after'])
---- firefox-52.9.0esr/python/mozbuild/mozbuild/mozinfo.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/mozinfo.py (refactored)
-@@ -5,7 +5,7 @@
- # This module produces a JSON file that provides basic build info and
- # configuration metadata.
-
--from __future__ import absolute_import
-+
-
- import os
- import re
-@@ -154,7 +154,7 @@
- and what keys are produced.
- """
- build_conf = build_dict(config, env)
-- if isinstance(file, basestring):
-+ if isinstance(file, str):
- file = open(file, 'wb')
-
- json.dump(build_conf, file, sort_keys=True, indent=4)
---- firefox-52.9.0esr/python/mozbuild/mozbuild/preprocessor.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/preprocessor.py (refactored)
-@@ -27,7 +27,8 @@
- import re
- from optparse import OptionParser
- import errno
--from makeutil import Makefile
-+from .makeutil import Makefile
-+from functools import reduce
-
- # hack around win32 mangling our line endings
- # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65443
-@@ -56,7 +57,7 @@
- self.__ignore_whitespace()
- self.e = self.__get_logical_or()
- if self.content:
-- raise Expression.ParseError, self
-+ raise Expression.ParseError(self)
-
- def __get_logical_or(self):
- """
-@@ -157,7 +158,7 @@
- if word_len:
- rv = Expression.__ASTLeaf('string', self.content[:word_len])
- else:
-- raise Expression.ParseError, self
-+ raise Expression.ParseError(self)
- self.__strip(word_len)
- self.__ignore_whitespace()
- return rv
-@@ -196,7 +197,7 @@
- return left and right
- elif tok[1].value == '||':
- return left or right
-- raise Expression.ParseError, self
-+ raise Expression.ParseError(self)
-
- # Mapping from token types to evaluator functions
- # Apart from (non-)equality, all these can be simple lambda forms.
-@@ -230,7 +231,7 @@
- def __repr__(self):
- return self.value.__repr__()
-
-- class ParseError(StandardError):
-+ class ParseError(Exception):
- """
- Error raised when parsing fails.
- It has two members, offset and content, which give the offset of the
-@@ -278,7 +279,7 @@
- self.context = Context()
- for k,v in {'FILE': '',
- 'LINE': 0,
-- 'DIRECTORY': os.path.abspath('.')}.iteritems():
-+ 'DIRECTORY': os.path.abspath('.')}.items():
- self.context[k] = v
- self.actionLevel = 0
- self.disableLevel = 0
-@@ -292,21 +293,21 @@
- self.cmds = {}
- for cmd, level in {'define': 0,
- 'undef': 0,
-- 'if': sys.maxint,
-- 'ifdef': sys.maxint,
-- 'ifndef': sys.maxint,
-+ 'if': sys.maxsize,
-+ 'ifdef': sys.maxsize,
-+ 'ifndef': sys.maxsize,
- 'else': 1,
- 'elif': 1,
- 'elifdef': 1,
- 'elifndef': 1,
-- 'endif': sys.maxint,
-+ 'endif': sys.maxsize,
- 'expand': 0,
- 'literal': 0,
- 'filter': 0,
- 'unfilter': 0,
- 'include': 0,
- 'includesubst': 0,
-- 'error': 0}.iteritems():
-+ 'error': 0}.items():
- self.cmds[cmd] = (level, getattr(self, 'do_' + cmd))
- self.out = sys.stdout
- self.setMarker(marker)
-@@ -469,7 +470,7 @@
- raise Preprocessor.Error(self, "--depend doesn't work with stdout",
- None)
- try:
-- from makeutil import Makefile
-+ from .makeutil import Makefile
- except:
- raise Preprocessor.Error(self, "--depend requires the "
- "mozbuild.makeutil module", None)
-@@ -684,7 +685,7 @@
- current = dict(self.filters)
- for f in filters:
- current[f] = getattr(self, 'filter_' + f)
-- filterNames = current.keys()
-+ filterNames = list(current.keys())
- filterNames.sort()
- self.filters = [(fn, current[fn]) for fn in filterNames]
- return
-@@ -694,7 +695,7 @@
- for f in filters:
- if f in current:
- del current[f]
-- filterNames = current.keys()
-+ filterNames = list(current.keys())
- filterNames.sort()
- self.filters = [(fn, current[fn]) for fn in filterNames]
- return
-@@ -739,7 +740,7 @@
- args can either be a file name, or a file-like object.
- Files should be opened, and will be closed after processing.
- """
-- isName = type(args) == str or type(args) == unicode
-+ isName = type(args) == str or type(args) == str
- oldCheckLineNumbers = self.checkLineNumbers
- self.checkLineNumbers = False
- if isName:
---- firefox-52.9.0esr/python/mozbuild/mozbuild/pythonutil.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/pythonutil.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import os
- import sys
-@@ -11,7 +11,7 @@
- def iter_modules_in_path(*paths):
- paths = [os.path.abspath(os.path.normcase(p)) + os.sep
- for p in paths]
-- for name, module in sys.modules.items():
-+ for name, module in list(sys.modules.items()):
- if not hasattr(module, '__file__'):
- continue
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/shellutil.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/shellutil.py (refactored)
-@@ -15,7 +15,7 @@
- # which matches the pattern and captures it in a named match group.
- # The group names and patterns are given as arguments.
- all_tokens = '|'.join('(?P<%s>%s)' % (name, value)
-- for name, value in tokens.iteritems())
-+ for name, value in tokens.items())
- nonescaped = r'(?<!\\)(?:%s)' % all_tokens
-
- # The final pattern matches either the above pattern, or an escaped
-@@ -96,7 +96,7 @@
- self.cline = self.cline[m.end():]
-
- match = {name: value
-- for name, value in m.groupdict().items() if value}
-+ for name, value in list(m.groupdict().items()) if value}
- if 'quote' in match:
- # " or ' start a quoted string
- if match['quote'] == '"':
-@@ -144,7 +144,7 @@
- self._push(self.cline[:m.start()])
- self.cline = self.cline[m.end():]
- match = {name: value
-- for name, value in m.groupdict().items() if value}
-+ for name, value in list(m.groupdict().items()) if value}
- if 'quote' in match:
- # a double quote ends the quoted string, so go back to
- # unquoted parsing
---- firefox-52.9.0esr/python/mozbuild/mozbuild/sphinx.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/sphinx.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import importlib
- import os
---- firefox-52.9.0esr/python/mozbuild/mozbuild/testing.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/testing.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
--
--import cPickle as pickle
-+
-+
-+import pickle as pickle
- import os
- import sys
-
-@@ -62,7 +62,7 @@
- if test_defaults:
- with open(test_defaults, 'rb') as fh:
- defaults = pickle.load(fh)
-- for path, tests in test_data.items():
-+ for path, tests in list(test_data.items()):
- for metadata in tests:
- if defaults:
- manifest = metadata['manifest']
-@@ -303,7 +303,7 @@
- WEB_PLATFORM_TESTS_FLAVORS = ('web-platform-tests',)
-
- def all_test_flavors():
-- return ([v[0] for v in TEST_MANIFESTS.values()] +
-+ return ([v[0] for v in list(TEST_MANIFESTS.values())] +
- list(REFTEST_FLAVORS) +
- list(WEB_PLATFORM_TESTS_FLAVORS) +
- ['python'])
-@@ -445,7 +445,7 @@
- only a few tests need to be run.
- """
- flavor_info = {flavor: (root, prefix, install)
-- for (flavor, root, prefix, install) in TEST_MANIFESTS.values()}
-+ for (flavor, root, prefix, install) in list(TEST_MANIFESTS.values())}
- objdir_dest = mozpath.join(topobjdir, tests_root)
-
- converter = SupportFilesConverter()
-@@ -527,7 +527,7 @@
- paths_file = os.path.join(context.config.topsrcdir, "testing",
- "web-platform", "tests", "tools", "localpaths.py")
- _globals = {"__file__": paths_file}
-- execfile(paths_file, _globals)
-+ exec(compile(open(paths_file).read(), paths_file, 'exec'), _globals)
- import manifest as wptmanifest
- finally:
- sys.path = old_path
---- firefox-52.9.0esr/python/mozbuild/mozbuild/util.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/util.py (refactored)
-@@ -5,7 +5,7 @@
- # This file contains miscellaneous utility functions that don't belong anywhere
- # in particular.
-
--from __future__ import absolute_import, unicode_literals, print_function
-+
-
- import argparse
- import collections
-@@ -36,7 +36,7 @@
- if sys.version_info[0] == 3:
- str_type = str
- else:
-- str_type = basestring
-+ str_type = str
-
- if sys.platform == 'win32':
- _kernel32 = ctypes.windll.kernel32
-@@ -78,7 +78,7 @@
- return h.hexdigest()
-
-
--class EmptyValue(unicode):
-+class EmptyValue(str):
- """A dummy type that behaves like an empty string and sequence.
-
- This type exists in order to support
-@@ -92,7 +92,7 @@
- class ReadOnlyNamespace(object):
- """A class for objects with immutable attributes set at initialization."""
- def __init__(self, **kwargs):
-- for k, v in kwargs.iteritems():
-+ for k, v in kwargs.items():
- super(ReadOnlyNamespace, self).__setattr__(k, v)
-
- def __delattr__(self, key):
-@@ -152,7 +152,7 @@
- if d and not os.path.exists(path):
- try:
- os.makedirs(d)
-- except OSError, error:
-+ except OSError as error:
- if error.errno != errno.EEXIST:
- raise
-
-@@ -224,7 +224,7 @@
- self.mode = mode
-
- def write(self, buf):
-- if isinstance(buf, unicode):
-+ if isinstance(buf, str):
- buf = buf.encode('utf-8')
- BytesIO.write(self, buf)
-
-@@ -381,7 +381,7 @@
- def __add__(self, other):
- # Allow None and EmptyValue is a special case because it makes undefined
- # variable references in moz.build behave better.
-- other = [] if isinstance(other, (types.NoneType, EmptyValue)) else other
-+ other = [] if isinstance(other, (type(None), EmptyValue)) else other
- if not isinstance(other, list):
- raise ValueError('Only lists can be appended to lists.')
-
-@@ -390,7 +390,7 @@
- return new_list
-
- def __iadd__(self, other):
-- other = [] if isinstance(other, (types.NoneType, EmptyValue)) else other
-+ other = [] if isinstance(other, (type(None), EmptyValue)) else other
- if not isinstance(other, list):
- raise ValueError('Only lists can be appended to lists.')
-
-@@ -542,14 +542,14 @@
- functions below.
- """
- assert isinstance(flags, dict)
-- assert all(isinstance(v, type) for v in flags.values())
-+ assert all(isinstance(v, type) for v in list(flags.values()))
-
- class Flags(object):
-- __slots__ = flags.keys()
-+ __slots__ = list(flags.keys())
- _flags = flags
-
- def update(self, **kwargs):
-- for k, v in kwargs.iteritems():
-+ for k, v in kwargs.items():
- setattr(self, k, v)
-
- def __getattr__(self, name):
-@@ -1080,14 +1080,14 @@
- # issue. So we do a little dance to filter it out ourselves.
- dummy_fill_value = ("dummy",)
- def filter_out_dummy(iterable):
-- return itertools.ifilter(lambda x: x != dummy_fill_value,
-+ return filter(lambda x: x != dummy_fill_value,
- iterable)
-
- # From the itertools documentation, slightly modified:
- def grouper(n, iterable):
- "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
- args = [iter(iterable)] * n
-- return itertools.izip_longest(fillvalue=dummy_fill_value, *args)
-+ return itertools.zip_longest(fillvalue=dummy_fill_value, *args)
-
- for i, unified_group in enumerate(grouper(files_per_unified_file,
- files)):
-@@ -1104,7 +1104,7 @@
- [(1,2), (3,4), (5,6)]
- '''
- i = iter(iterable)
-- return itertools.izip_longest(i, i)
-+ return itertools.zip_longest(i, i)
-
-
- VARIABLES_RE = re.compile('\$\((\w+)\)')
-@@ -1122,7 +1122,7 @@
- value = variables.get(name)
- if not value:
- continue
-- if not isinstance(value, types.StringTypes):
-+ if not isinstance(value, (str,)):
- value = ' '.join(value)
- result += value
- return result
-@@ -1149,7 +1149,7 @@
- pass
-
-
--class EnumString(unicode):
-+class EnumString(str):
- '''A string type that only can have a limited set of values, similarly to
- an Enum, and can only be compared against that set of values.
-
-@@ -1185,19 +1185,18 @@
- # quoting could be done with either ' or ".
- if c == "'":
- return "\\'"
-- return unicode(c.encode('unicode_escape'))
-+ return str(c.encode('unicode_escape'))
-
- # Mapping table between raw characters below \x80 and their escaped
- # counterpart, when they differ
- _INDENTED_REPR_TABLE = {
- c: e
-- for c, e in map(lambda x: (x, _escape_char(x)),
-- map(unichr, range(128)))
-+ for c, e in [(x, _escape_char(x)) for x in list(map(chr, list(range(128))))]
- if c != e
- }
- # Regexp matching all characters to escape.
- _INDENTED_REPR_RE = re.compile(
-- '([' + ''.join(_INDENTED_REPR_TABLE.values()) + ']+)')
-+ '([' + ''.join(list(_INDENTED_REPR_TABLE.values())) + ']+)')
-
-
- def indented_repr(o, indent=4):
-@@ -1223,7 +1222,7 @@
- elif isinstance(o, bytes):
- yield 'b'
- yield repr(o)
-- elif isinstance(o, unicode):
-+ elif isinstance(o, str):
- yield "'"
- # We want a readable string (non escaped unicode), but some
- # special characters need escaping (e.g. \n, \t, etc.)
-@@ -1253,11 +1252,11 @@
- if isinstance(obj, dict):
- return {
- encode(k, encoding): encode(v, encoding)
-- for k, v in obj.iteritems()
-+ for k, v in obj.items()
- }
- if isinstance(obj, bytes):
- return obj
-- if isinstance(obj, unicode):
-+ if isinstance(obj, str):
- return obj.encode(encoding)
- if isinstance(obj, Iterable):
- return [encode(i, encoding) for i in obj]
---- firefox-52.9.0esr/python/mozbuild/mozbuild/vendor_rust.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/vendor_rust.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, # You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- from distutils.version import LooseVersion
- import logging
---- firefox-52.9.0esr/python/mozbuild/mozbuild/virtualenv.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/virtualenv.py (refactored)
-@@ -5,7 +5,7 @@
- # This file contains code for populating the virtualenv environment for
- # Mozilla's build system. It is typically called as part of configure.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import distutils.sysconfig
- import os
-@@ -461,8 +461,8 @@
- and call .ensure() and .activate() to make the virtualenv active.
- """
-
-- execfile(self.activate_path, dict(__file__=self.activate_path))
-- if isinstance(os.environ['PATH'], unicode):
-+ exec(compile(open(self.activate_path).read(), self.activate_path, 'exec'), dict(__file__=self.activate_path))
-+ if isinstance(os.environ['PATH'], str):
- os.environ['PATH'] = os.environ['PATH'].encode('utf-8')
-
- def install_pip_package(self, package):
---- firefox-52.9.0esr/python/mozbuild/mozbuild/action/buildlist.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/action/buildlist.py (refactored)
-@@ -7,7 +7,7 @@
-
- Usage: buildlist.py <filename> <entry> [<entry> ...]
- '''
--from __future__ import absolute_import, print_function
-+
-
- import sys
- import os
---- firefox-52.9.0esr/python/mozbuild/mozbuild/action/cl.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/action/cl.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import ctypes
- import os
-@@ -55,7 +55,7 @@
- break
-
- if target is None:
-- print >>sys.stderr, "No target set"
-+ print("No target set", file=sys.stderr)
- return 1
-
- # Assume the source file is the last argument
---- firefox-52.9.0esr/python/mozbuild/mozbuild/action/dump_env.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/action/dump_env.py (refactored)
-@@ -6,5 +6,5 @@
- # native paths printed on Windows so that these paths can be incorporated
- # into Python configure's environment.
- import os
--for key, value in os.environ.items():
-- print('%s=%s' % (key, value))
-+for key, value in list(os.environ.items()):
-+ print(('%s=%s' % (key, value)))
---- firefox-52.9.0esr/python/mozbuild/mozbuild/action/explode_aar.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/action/explode_aar.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import errno
-@@ -44,7 +44,7 @@
- assets = mozpath.join(destdir, 'assets')
- try:
- os.rmdir(assets)
-- except OSError, e:
-+ except OSError as e:
- if e.errno in (errno.ENOTEMPTY, errno.ENOENT):
- pass
- else:
---- firefox-52.9.0esr/python/mozbuild/mozbuild/action/file_generate.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/action/file_generate.py (refactored)
-@@ -6,7 +6,7 @@
- # the arguments that can be used to generate the output file, call the
- # script's |main| method with appropriate arguments.
-
--from __future__ import absolute_import, print_function
-+
-
- import argparse
- import imp
---- firefox-52.9.0esr/python/mozbuild/mozbuild/action/generate_suggestedsites.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/action/generate_suggestedsites.py (refactored)
-@@ -26,7 +26,7 @@
- directory e.g. raw/suggestedsites.json, raw-pt-rBR/suggestedsites.json.
- '''
-
--from __future__ import absolute_import, print_function
-+
-
- import argparse
- import copy
---- firefox-52.9.0esr/python/mozbuild/mozbuild/action/generate_symbols_file.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/action/generate_symbols_file.py (refactored)
-@@ -2,12 +2,12 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import buildconfig
- import os
--from StringIO import StringIO
-+from io import StringIO
- from mozbuild.preprocessor import Preprocessor
- from mozbuild.util import DefinesAction
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/action/jar_maker.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/action/jar_maker.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import sys
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/action/make_dmg.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/action/make_dmg.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import print_function
-+
-
- from mozbuild.base import MozbuildObject
- from mozpack import dmg
---- firefox-52.9.0esr/python/mozbuild/mozbuild/action/output_searchplugins_list.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/action/output_searchplugins_list.py (refactored)
-@@ -18,4 +18,4 @@
- else:
- engines = searchinfo["default"]["visibleDefaultEngines"]
-
--print '\n'.join(engines)
-+print('\n'.join(engines))
---- firefox-52.9.0esr/python/mozbuild/mozbuild/action/package_fennec_apk.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/action/package_fennec_apk.py (refactored)
-@@ -6,7 +6,7 @@
- Script to produce an Android package (.apk) for Fennec.
- '''
-
--from __future__ import absolute_import, print_function
-+
-
- import argparse
- import buildconfig
---- firefox-52.9.0esr/python/mozbuild/mozbuild/action/preprocessor.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/action/preprocessor.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import sys
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/action/process_define_files.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/action/process_define_files.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import os
-@@ -55,7 +55,7 @@
- 'CONFIGURE_DEFINE_FILE')
- defines = '\n'.join(sorted(
- '#define %s %s' % (name, val)
-- for name, val in config.defines.iteritems()
-+ for name, val in config.defines.items()
- if name not in config.non_global_defines))
- l = l[:m.start('cmd') - 1] \
- + defines + l[m.end('name'):]
---- firefox-52.9.0esr/python/mozbuild/mozbuild/action/process_install_manifest.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/action/process_install_manifest.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import os
---- firefox-52.9.0esr/python/mozbuild/mozbuild/action/test_archive.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/action/test_archive.py (refactored)
-@@ -8,7 +8,7 @@
- # It is defined inline because this was easiest to make test archive
- # generation faster.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import itertools
-@@ -433,7 +433,7 @@
- # "common" is our catch all archive and it ignores things from other archives.
- # Verify nothing sneaks into ARCHIVE_FILES without a corresponding exclusion
- # rule in the "common" archive.
--for k, v in ARCHIVE_FILES.items():
-+for k, v in list(ARCHIVE_FILES.items()):
- # Skip mozharness because it isn't staged.
- if k in ('common', 'mozharness'):
- continue
---- firefox-52.9.0esr/python/mozbuild/mozbuild/action/webidl.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/action/webidl.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import sys
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/action/xpccheck.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/action/xpccheck.py (refactored)
-@@ -8,7 +8,7 @@
- Usage: xpccheck.py <directory> [<directory> ...]
- '''
-
--from __future__ import absolute_import
-+
-
- import sys
- import os
-@@ -40,7 +40,7 @@
- break
-
- if not found:
-- print >>sys.stderr, "TEST-UNEXPECTED-FAIL | xpccheck | test %s is missing from test manifest %s!" % (name, os.path.join(directory, 'xpcshell.ini'))
-+ print("TEST-UNEXPECTED-FAIL | xpccheck | test %s is missing from test manifest %s!" % (name, os.path.join(directory, 'xpcshell.ini')), file=sys.stderr)
- sys.exit(1)
-
- def verifyIniFile(initests, directory):
-@@ -60,12 +60,12 @@
- break
-
- if not found:
-- print >>sys.stderr, "TEST-UNEXPECTED-FAIL | xpccheck | found %s in xpcshell.ini and not in directory '%s'" % (name, directory)
-+ print("TEST-UNEXPECTED-FAIL | xpccheck | found %s in xpcshell.ini and not in directory '%s'" % (name, directory), file=sys.stderr)
- sys.exit(1)
-
- def main(argv):
- if len(argv) < 2:
-- print >>sys.stderr, "Usage: xpccheck.py <topsrcdir> <directory> [<directory> ...]"
-+ print("Usage: xpccheck.py <topsrcdir> <directory> [<directory> ...]", file=sys.stderr)
- sys.exit(1)
-
- topsrcdir = argv[0]
---- firefox-52.9.0esr/python/mozbuild/mozbuild/action/xpidl-process.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/action/xpidl-process.py (refactored)
-@@ -7,7 +7,7 @@
- # input IDL file(s). It's purpose is to directly support the build
- # system. The API will change to meet the needs of the build system.
-
--from __future__ import absolute_import
-+
-
- import argparse
- import os
-@@ -58,7 +58,7 @@
-
- # TODO use FileAvoidWrite once it supports binary mode.
- xpt_path = os.path.join(xpt_dir, '%s.xpt' % module)
-- xpt_link(xpts.values()).write(xpt_path)
-+ xpt_link(list(xpts.values())).write(xpt_path)
-
- rule.add_targets([xpt_path])
- if deps_dir:
---- firefox-52.9.0esr/python/mozbuild/mozbuild/action/zip.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/action/zip.py (refactored)
-@@ -5,7 +5,7 @@
- # This script creates a zip file, but will also strip any binaries
- # it finds before adding them to the zip.
-
--from __future__ import absolute_import
-+
-
- from mozpack.files import FileFinder
- from mozpack.copier import Jarrer
---- firefox-52.9.0esr/python/mozbuild/mozbuild/backend/android_eclipse.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/backend/android_eclipse.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import itertools
- import os
---- firefox-52.9.0esr/python/mozbuild/mozbuild/backend/base.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/backend/base.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- from abc import (
- ABCMeta,
-@@ -30,15 +30,13 @@
- from mozbuild.base import ExecutionSummary
-
-
--class BuildBackend(LoggingMixin):
-+class BuildBackend(LoggingMixin, metaclass=ABCMeta):
- """Abstract base class for build backends.
-
- A build backend is merely a consumer of the build configuration (the output
- of the frontend processing). It does something with said data. What exactly
- is the discretion of the specific implementation.
- """
--
-- __metaclass__ = ABCMeta
-
- def __init__(self, environment):
- assert isinstance(environment, ConfigEnvironment)
-@@ -252,7 +250,7 @@
- srcdir = mozpath.dirname(obj.input_path)
- pp.context.update({
- k: ' '.join(v) if isinstance(v, list) else v
-- for k, v in obj.config.substs.iteritems()
-+ for k, v in obj.config.substs.items()
- })
- pp.context.update(
- top_srcdir=obj.topsrcdir,
---- firefox-52.9.0esr/python/mozbuild/mozbuild/backend/common.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/backend/common.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
--
--import cPickle as pickle
-+
-+
-+import pickle as pickle
- import itertools
- import json
- import os
-@@ -194,11 +194,11 @@
- def add_defaults(self, manifest):
- if not hasattr(manifest, 'manifest_defaults'):
- return
-- for sub_manifest, defaults in manifest.manifest_defaults.items():
-+ for sub_manifest, defaults in list(manifest.manifest_defaults.items()):
- self.manifest_defaults[sub_manifest] = defaults
-
- def add_installs(self, obj, topsrcdir):
-- for src, (dest, _) in obj.installs.iteritems():
-+ for src, (dest, _) in obj.installs.items():
- key = src[len(topsrcdir)+1:]
- self.installs_by_path[key].append((src, dest))
- for src, pat, dest in obj.pattern_installs:
-@@ -379,7 +379,7 @@
-
- path = mozpath.join(self.environment.topobjdir, 'test-installs.pkl')
- with self._write_file(path, mode='rb') as fh:
-- pickle.dump({k: v for k, v in self._test_manager.installs_by_path.items()
-+ pickle.dump({k: v for k, v in list(self._test_manager.installs_by_path.items())
- if k in self._test_manager.deferred_installs},
- fh,
- protocol=2)
---- firefox-52.9.0esr/python/mozbuild/mozbuild/backend/configenvironment.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/backend/configenvironment.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import os
- import sys
-@@ -17,7 +17,7 @@
-
-
- if sys.version_info.major == 2:
-- text_type = unicode
-+ text_type = str
- else:
- text_type = str
-
-@@ -176,7 +176,7 @@
- except UnicodeDecodeError:
- return v.decode('utf-8', 'replace')
-
-- for k, v in self.substs.items():
-+ for k, v in list(self.substs.items()):
- if not isinstance(v, StringTypes):
- if isinstance(v, Iterable):
- type(v)(decode(i) for i in v)
---- firefox-52.9.0esr/python/mozbuild/mozbuild/backend/cpp_eclipse.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/backend/cpp_eclipse.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import errno
- import random
-@@ -218,12 +218,12 @@
- cproject_header = cproject_header.replace('@MACH_COMMAND@', os.path.join(self.environment.topsrcdir, 'mach'))
- fh.write(cproject_header)
-
-- for path, defines in self._paths_to_defines.items():
-+ for path, defines in list(self._paths_to_defines.items()):
- folderinfo = CPROJECT_TEMPLATE_FOLDER_INFO_HEADER
- folderinfo = folderinfo.replace('@FOLDER_ID@', str(random.randint(1000000, 99999999999)))
- folderinfo = folderinfo.replace('@FOLDER_NAME@', 'tree/' + path)
- fh.write(folderinfo)
-- for k, v in defines.items():
-+ for k, v in list(defines.items()):
- define = ET.Element('listOptionValue')
- define.set('builtIn', 'false')
- define.set('value', str(k) + "=" + str(v))
---- firefox-52.9.0esr/python/mozbuild/mozbuild/backend/fastermake.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/backend/fastermake.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals, print_function
-+
-
- from mozbuild.backend.base import PartialBackend
- from mozbuild.backend.common import CommonBackend
-@@ -130,12 +130,12 @@
- if value is not None:
- mk.add_statement('%s = %s' % (var, value))
-
-- install_manifests_bases = self._install_manifests.keys()
-+ install_manifests_bases = list(self._install_manifests.keys())
-
- # Add information for chrome manifest generation
- manifest_targets = []
-
-- for target, entries in self._manifest_entries.iteritems():
-+ for target, entries in self._manifest_entries.items():
- manifest_targets.append(target)
- install_target = mozpath.basedir(target, install_manifests_bases)
- self._install_manifests[install_target].add_content(
-@@ -144,16 +144,16 @@
-
- # Add information for install manifests.
- mk.add_statement('INSTALL_MANIFESTS = %s'
-- % ' '.join(self._install_manifests.keys()))
-+ % ' '.join(list(self._install_manifests.keys())))
-
- # Add dependencies we infered:
-- for target, deps in self._dependencies.iteritems():
-+ for target, deps in self._dependencies.items():
- mk.create_rule([target]).add_dependencies(
- '$(TOPOBJDIR)/%s' % d for d in deps)
-
- mk.add_statement('include $(TOPSRCDIR)/config/faster/rules.mk')
-
-- for base, install_manifest in self._install_manifests.iteritems():
-+ for base, install_manifest in self._install_manifests.items():
- with self._write_file(
- mozpath.join(self.environment.topobjdir, 'faster',
- 'install_%s' % base.replace('/', '_'))) as fh:
---- firefox-52.9.0esr/python/mozbuild/mozbuild/backend/mach_commands.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/backend/mach_commands.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import os
---- firefox-52.9.0esr/python/mozbuild/mozbuild/backend/recursivemake.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/backend/recursivemake.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import logging
- import os
-@@ -12,7 +12,7 @@
- defaultdict,
- namedtuple,
- )
--from StringIO import StringIO
-+from io import StringIO
- from itertools import chain
-
- from mozpack.manifests import (
-@@ -74,6 +74,7 @@
- )
- from ..makeutil import Makefile
- from mozbuild.shellutil import quote as shell_quote
-+from functools import reduce
-
- MOZBUILD_VARIABLES = [
- b'ANDROID_APK_NAME',
-@@ -214,7 +215,7 @@
- self.fh.write(buf)
-
- def write_once(self, buf):
-- if isinstance(buf, unicode):
-+ if isinstance(buf, str):
- buf = buf.encode('utf-8')
- if b'\n' + buf not in self.fh.getvalue():
- self.write(buf)
-@@ -283,8 +284,8 @@
- Helper function to call a filter from compute_dependencies and
- traverse.
- """
-- return filter(current, self._traversal.get(current,
-- self.SubDirectories()))
-+ return list(filter(current, self._traversal.get(current,
-+ self.SubDirectories())))
-
- def compute_dependencies(self, filter=None):
- """
-@@ -638,7 +639,7 @@
- convenience variables, and the other dependency definitions for a
- hopefully proper directory traversal.
- """
-- for tier, no_skip in self._no_skip.items():
-+ for tier, no_skip in list(self._no_skip.items()):
- self.log(logging.DEBUG, 'fill_root_mk', {
- 'number': len(no_skip), 'tier': tier
- }, 'Using {number} directories during {tier}')
-@@ -684,7 +685,7 @@
- for tier, filter in filters:
- main, all_deps = \
- self._traversal.compute_dependencies(filter)
-- for dir, deps in all_deps.items():
-+ for dir, deps in list(all_deps.items()):
- if deps is not None or (dir in self._idl_dirs \
- and tier == 'export'):
- rule = root_deps_mk.create_rule(['%s/%s' % (dir, tier)])
-@@ -697,7 +698,7 @@
- rule.add_dependencies('%s/%s' % (d, tier) for d in main)
-
- all_compile_deps = reduce(lambda x,y: x|y,
-- self._compile_graph.values()) if self._compile_graph else set()
-+ list(self._compile_graph.values())) if self._compile_graph else set()
- compile_roots = set(self._compile_graph.keys()) - all_compile_deps
-
- rule = root_deps_mk.create_rule(['recurse_compile'])
-@@ -839,7 +840,7 @@
- self._fill_root_mk()
-
- # Make the master test manifest files.
-- for flavor, t in self._test_manifests.items():
-+ for flavor, t in list(self._test_manifests.items()):
- install_prefix, manifests = t
- manifest_stem = mozpath.join(install_prefix, '%s.ini' % flavor)
- self._write_master_test_manifest(mozpath.join(
-@@ -945,7 +946,7 @@
- for p in ('Makefile', 'backend.mk', '.deps/.mkdir.done'):
- build_files.add_optional_exists(p)
-
-- for idl in manager.idls.values():
-+ for idl in list(manager.idls.values()):
- self._install_manifests['dist_idl'].add_symlink(idl['source'],
- idl['basename'])
- self._install_manifests['dist_include'].add_optional_exists('%s.h'
-@@ -992,7 +993,7 @@
-
- interfaces_manifests = []
- dist_dir = mozpath.join(self.environment.topobjdir, 'dist')
-- for manifest, entries in manager.interface_manifests.items():
-+ for manifest, entries in list(manager.interface_manifests.items()):
- interfaces_manifests.append(mozpath.join('$(DEPTH)', manifest))
- for xpt in sorted(entries):
- registered_xpt_files.add(mozpath.join(
-@@ -1052,7 +1053,7 @@
- # Don't allow files to be defined multiple times unless it is allowed.
- # We currently allow duplicates for non-test files or test files if
- # the manifest is listed as a duplicate.
-- for source, (dest, is_test) in obj.installs.items():
-+ for source, (dest, is_test) in list(obj.installs.items()):
- try:
- self._install_manifests['_test_files'].add_symlink(source, dest)
- except ValueError:
-@@ -1386,7 +1387,7 @@
- man_dir = mozpath.join(self.environment.topobjdir, '_build_manifests',
- dest)
-
-- for k, manifest in manifests.items():
-+ for k, manifest in list(manifests.items()):
- with self._write_file(mozpath.join(man_dir, k)) as fh:
- manifest.write(fileobj=fh)
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/backend/tup.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/backend/tup.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import os
-
-@@ -253,7 +253,7 @@
- backend_file = self._get_backend_file('xpcom/xpidl')
- backend_file.export_shell()
-
-- for module, data in sorted(manager.modules.iteritems()):
-+ for module, data in sorted(manager.modules.items()):
- dest, idls = data
- cmd = [
- '$(PYTHON_PATH)',
---- firefox-52.9.0esr/python/mozbuild/mozbuild/backend/visualstudio.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/backend/visualstudio.py (refactored)
-@@ -5,7 +5,7 @@
- # This file contains a build backend for generating Visual Studio project
- # files.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import errno
- import os
-@@ -218,7 +218,7 @@
- includes = [os.path.normpath(i) for i in includes]
-
- defines = []
-- for k, v in self._paths_to_defines.get(path, {}).items():
-+ for k, v in list(self._paths_to_defines.get(path, {}).items()):
- if v is True:
- defines.append(k)
- else:
---- firefox-52.9.0esr/python/mozbuild/mozbuild/codecoverage/chrome_map.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/codecoverage/chrome_map.py (refactored)
-@@ -5,7 +5,7 @@
- from collections import defaultdict
- import json
- import os
--import urlparse
-+import urllib.parse
-
- from mach.config import ConfigSettings
- from mach.logging import LoggingManager
-@@ -42,7 +42,7 @@
- if isinstance(entry, (ManifestChrome, ManifestResource)):
- if isinstance(entry, ManifestResource):
- dest = entry.target
-- url = urlparse.urlparse(dest)
-+ url = urllib.parse.urlparse(dest)
- if not url.scheme:
- dest = mozpath.normpath(mozpath.join(entry.base, dest))
- if url.scheme == 'file':
-@@ -99,7 +99,7 @@
- chrome_mapping = self.manifest_handler.chrome_mapping
- overrides = self.manifest_handler.overrides
- json.dump([
-- {k: list(v) for k, v in chrome_mapping.iteritems()},
-+ {k: list(v) for k, v in chrome_mapping.items()},
- overrides,
- self._install_mapping,
- ], fh, sort_keys=True, indent=2)
---- firefox-52.9.0esr/python/mozbuild/mozbuild/codecoverage/packager.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/codecoverage/packager.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function
-+
-
- import argparse
- import sys
-@@ -12,7 +12,7 @@
-
- def package_gcno_tree(root, output_file):
- # XXX JarWriter doesn't support unicode strings, see bug 1056859
-- if isinstance(root, unicode):
-+ if isinstance(root, str):
- root = root.encode('utf-8')
-
- finder = FileFinder(root)
---- firefox-52.9.0esr/python/mozbuild/mozbuild/compilation/codecomplete.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/compilation/codecomplete.py (refactored)
-@@ -4,7 +4,7 @@
-
- # This modules provides functionality for dealing with code completion.
-
--from __future__ import absolute_import
-+
-
- import os
-
-@@ -59,5 +59,5 @@
- # Drop the first flag since that is the pathname of the compiler.
- flags = (shell_split(build_vars[cc]) + shell_split(build_vars[name]))[1:]
-
-- print(' '.join(shell_quote(arg)
-- for arg in util.sanitize_cflags(flags)))
-+ print((' '.join(shell_quote(arg)
-+ for arg in util.sanitize_cflags(flags))))
---- firefox-52.9.0esr/python/mozbuild/mozbuild/compilation/database.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/compilation/database.py (refactored)
-@@ -118,7 +118,7 @@
-
- db = []
-
-- for (directory, filename), cmd in self._db.iteritems():
-+ for (directory, filename), cmd in self._db.items():
- env = self._envs[directory]
- cmd = list(cmd)
- cmd.append(filename)
-@@ -151,7 +151,7 @@
- a = expand_variables(a, variables).split()
- if not a:
- continue
-- if isinstance(a, types.StringTypes):
-+ if isinstance(a, (str,)):
- c.append(a)
- else:
- c.extend(a)
-@@ -216,7 +216,7 @@
- value = cenv.substs.get(name)
- if not value:
- return
-- if isinstance(value, types.StringTypes):
-+ if isinstance(value, (str,)):
- value = value.split()
- db.extend(value)
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/compilation/warnings.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/compilation/warnings.py (refactored)
-@@ -4,7 +4,7 @@
-
- # This modules provides functionality for dealing with compiler warnings.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import errno
- import json
-@@ -123,18 +123,18 @@
-
- def __len__(self):
- i = 0
-- for value in self._files.values():
-+ for value in list(self._files.values()):
- i += len(value['warnings'])
-
- return i
-
- def __iter__(self):
-- for value in self._files.values():
-+ for value in list(self._files.values()):
- for warning in value['warnings']:
- yield warning
-
- def __contains__(self, item):
-- for value in self._files.values():
-+ for value in list(self._files.values()):
- for warning in value['warnings']:
- if warning == item:
- return True
-@@ -144,7 +144,7 @@
- @property
- def warnings(self):
- """All the CompilerWarning instances in this database."""
-- for value in self._files.values():
-+ for value in list(self._files.values()):
- for w in value['warnings']:
- yield w
-
-@@ -152,7 +152,7 @@
- """Returns a mapping of warning types to their counts."""
-
- types = {}
-- for value in self._files.values():
-+ for value in list(self._files.values()):
- for warning in value['warnings']:
- if dirpath and not mozpath.normsep(warning['filename']).startswith(dirpath):
- continue
-@@ -210,7 +210,7 @@
- """
-
- # Need to calculate up front since we are mutating original object.
-- filenames = self._files.keys()
-+ filenames = list(self._files.keys())
- for filename in filenames:
- if not os.path.exists(filename):
- del self._files[filename]
-@@ -229,10 +229,10 @@
- obj = {'files': {}}
-
- # All this hackery because JSON can't handle sets.
-- for k, v in self._files.iteritems():
-+ for k, v in self._files.items():
- obj['files'][k] = {}
-
-- for k2, v2 in v.iteritems():
-+ for k2, v2 in v.items():
- normalized = v2
-
- if k2 == 'warnings':
-@@ -249,8 +249,8 @@
- self._files = obj['files']
-
- # Normalize data types.
-- for filename, value in self._files.iteritems():
-- for k, v in value.iteritems():
-+ for filename, value in self._files.items():
-+ for k, v in value.items():
- if k != 'warnings':
- continue
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/configure/__init__.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/configure/__init__.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import inspect
- import logging
-@@ -193,7 +193,7 @@
- for b in ('None', 'False', 'True', 'int', 'bool', 'any', 'all', 'len',
- 'list', 'tuple', 'set', 'dict', 'isinstance', 'getattr',
- 'hasattr', 'enumerate', 'range', 'zip')
-- }, __import__=forbidden_import, str=unicode)
-+ }, __import__=forbidden_import, str=str)
-
- # Expose a limited set of functions from os.path
- OS = ReadOnlyNamespace(path=ReadOnlyNamespace(**{
-@@ -333,7 +333,7 @@
- if path:
- self.include_file(path)
-
-- for option in self._options.itervalues():
-+ for option in self._options.values():
- # All options must be referenced by some @depends function
- if option not in self._seen:
- raise ConfigureError(
-@@ -437,7 +437,7 @@
- value = PositiveOptionValue()
- elif value is False or value == ():
- value = NegativeOptionValue()
-- elif isinstance(value, types.StringTypes):
-+ elif isinstance(value, (str,)):
- value = PositiveOptionValue((value,))
- elif isinstance(value, tuple):
- value = PositiveOptionValue(value)
-@@ -477,7 +477,7 @@
- return value
-
- def _dependency(self, arg, callee_name, arg_name=None):
-- if isinstance(arg, types.StringTypes):
-+ if isinstance(arg, (str,)):
- prefix, name, values = Option.split_option(arg)
- if values != ():
- raise ConfigureError("Option must not contain an '='")
-@@ -541,7 +541,7 @@
- '''
- when = self._normalize_when(kwargs.get('when'), 'option')
- args = [self._resolve(arg) for arg in args]
-- kwargs = {k: self._resolve(v) for k, v in kwargs.iteritems()
-+ kwargs = {k: self._resolve(v) for k, v in kwargs.items()
- if k != 'when'}
- option = Option(*args, **kwargs)
- if when:
-@@ -622,7 +622,7 @@
- with self.only_when_impl(when):
- what = self._resolve(what)
- if what:
-- if not isinstance(what, types.StringTypes):
-+ if not isinstance(what, (str,)):
- raise TypeError("Unexpected type: '%s'" % type(what).__name__)
- self.include_file(what)
-
-@@ -640,7 +640,7 @@
- (k[:-len('_impl')], getattr(self, k))
- for k in dir(self) if k.endswith('_impl') and k != 'template_impl'
- )
-- glob.update((k, v) for k, v in self.iteritems() if k not in glob)
-+ glob.update((k, v) for k, v in self.items() if k not in glob)
-
- # Any function argument to the template must be prepared to be sandboxed.
- # If the template itself returns a function (in which case, it's very
-@@ -664,7 +664,7 @@
- def wrapper(*args, **kwargs):
- args = [maybe_prepare_function(arg) for arg in args]
- kwargs = {k: maybe_prepare_function(v)
-- for k, v in kwargs.iteritems()}
-+ for k, v in kwargs.items()}
- ret = template(*args, **kwargs)
- if isfunction(ret):
- # We can't expect the sandboxed code to think about all the
-@@ -696,7 +696,7 @@
- for value, required in (
- (_import, True), (_from, False), (_as, False)):
-
-- if not isinstance(value, types.StringTypes) and (
-+ if not isinstance(value, (str,)) and (
- required or value is not None):
- raise TypeError("Unexpected type: '%s'" % type(value).__name__)
- if value is not None and not self.RE_MODULE.match(value):
-@@ -759,7 +759,7 @@
- name = self._resolve(name, need_help_dependency=False)
- if name is None:
- return
-- if not isinstance(name, types.StringTypes):
-+ if not isinstance(name, (str,)):
- raise TypeError("Unexpected type: '%s'" % type(name).__name__)
- if name in data:
- raise ConfigureError(
-@@ -849,7 +849,7 @@
- if isinstance(possible_reasons[0], Option):
- reason = possible_reasons[0]
- if not reason and (isinstance(value, (bool, tuple)) or
-- isinstance(value, types.StringTypes)):
-+ isinstance(value, (str,))):
- # A reason can be provided automatically when imply_option
- # is called with an immediate value.
- _, filename, line, _, _, _ = inspect.stack()[1]
-@@ -884,10 +884,10 @@
- if not inspect.isfunction(func):
- raise TypeError("Unexpected type: '%s'" % type(func).__name__)
- if func in self._prepared_functions:
-- return func, func.func_globals
-+ return func, func.__globals__
-
- glob = SandboxedGlobal(
-- (k, v) for k, v in func.func_globals.iteritems()
-+ (k, v) for k, v in func.__globals__.items()
- if (inspect.isfunction(v) and v not in self._templates) or (
- inspect.isclass(v) and issubclass(v, Exception))
- )
-@@ -908,20 +908,20 @@
- # Note this is not entirely bullet proof (if the value is e.g. a list,
- # the list contents could have changed), but covers the bases.
- closure = None
-- if func.func_closure:
-+ if func.__closure__:
- def makecell(content):
- def f():
- content
-- return f.func_closure[0]
-+ return f.__closure__[0]
-
- closure = tuple(makecell(cell.cell_contents)
-- for cell in func.func_closure)
-+ for cell in func.__closure__)
-
- new_func = wraps(func)(types.FunctionType(
-- func.func_code,
-+ func.__code__,
- glob,
- func.__name__,
-- func.func_defaults,
-+ func.__defaults__,
- closure
- ))
- @wraps(new_func)
---- firefox-52.9.0esr/python/mozbuild/mozbuild/configure/check_debug_ranges.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/configure/check_debug_ranges.py (refactored)
-@@ -6,7 +6,7 @@
- # to a given compilation unit. This is used as a helper to find a bug in some
- # versions of GNU ld.
-
--from __future__ import absolute_import
-+
-
- import subprocess
- import sys
-@@ -59,4 +59,4 @@
-
-
- if __name__ == '__main__':
-- print main(*sys.argv[1:])
-+ print(main(*sys.argv[1:]))
---- firefox-52.9.0esr/python/mozbuild/mozbuild/configure/constants.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/configure/constants.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- from mozbuild.util import EnumString
- from collections import OrderedDict
-@@ -56,7 +56,7 @@
- 'x86_64': 64,
- }
-
--CPU = EnumString.subclass(*CPU_bitness.keys())
-+CPU = EnumString.subclass(*list(CPU_bitness.keys()))
-
- Endianness = EnumString.subclass(
- 'big',
---- firefox-52.9.0esr/python/mozbuild/mozbuild/configure/help.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/configure/help.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import os
- from mozbuild.configure.options import Option
---- firefox-52.9.0esr/python/mozbuild/mozbuild/configure/libstdcxx.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/configure/libstdcxx.py (refactored)
-@@ -13,7 +13,7 @@
- # will be used from shell, we just print the two assignments and evaluate
- # them from shell.
-
--from __future__ import absolute_import
-+
-
- import os
- import subprocess
-@@ -76,6 +76,6 @@
-
- if __name__ == '__main__':
- cxx_env = os.environ['CXX']
-- print 'MOZ_LIBSTDCXX_TARGET_VERSION=%s' % find_version(cxx_env)
-+ print('MOZ_LIBSTDCXX_TARGET_VERSION=%s' % find_version(cxx_env))
- host_cxx_env = os.environ.get('HOST_CXX', cxx_env)
-- print 'MOZ_LIBSTDCXX_HOST_VERSION=%s' % find_version(host_cxx_env)
-+ print('MOZ_LIBSTDCXX_HOST_VERSION=%s' % find_version(host_cxx_env))
---- firefox-52.9.0esr/python/mozbuild/mozbuild/configure/lint.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/configure/lint.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-
--from StringIO import StringIO
-+
-+from io import StringIO
- from . import (
- CombinedDependsFunction,
- ConfigureError,
-@@ -42,7 +42,7 @@
- # - don't use @imports
- # - don't have a closure
- # - don't use global variables
-- if func in self._imports or func.func_closure:
-+ if func in self._imports or func.__closure__:
- return True
- for op, arg in disassemble_as_iter(func):
- if op in ('LOAD_GLOBAL', 'STORE_GLOBAL'):
---- firefox-52.9.0esr/python/mozbuild/mozbuild/configure/lint_util.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/configure/lint_util.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import dis
- import inspect
-@@ -12,9 +12,9 @@
- # returns an iterator.
- def disassemble_as_iter(co):
- if inspect.ismethod(co):
-- co = co.im_func
-+ co = co.__func__
- if inspect.isfunction(co):
-- co = co.func_code
-+ co = co.__code__
- code = co.co_code
- n = len(code)
- i = 0
-@@ -30,7 +30,7 @@
- extended_arg = 0
- i += 2
- if op == dis.EXTENDED_ARG:
-- extended_arg = arg * 65536L
-+ extended_arg = arg * 65536
- continue
- if op in dis.hasconst:
- yield opname, co.co_consts[arg]
---- firefox-52.9.0esr/python/mozbuild/mozbuild/configure/options.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/configure/options.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import os
- import sys
-@@ -12,7 +12,7 @@
-
- def istupleofstrings(obj):
- return isinstance(obj, tuple) and len(obj) and all(
-- isinstance(o, types.StringTypes) for o in obj)
-+ isinstance(o, (str,)) for o in obj)
-
-
- class OptionValue(tuple):
-@@ -71,7 +71,7 @@
- in the form of a tuple for when values are given to the option (in the form
- --option=value[,value2...].
- '''
-- def __nonzero__(self):
-+ def __bool__(self):
- return True
-
-
-@@ -96,7 +96,7 @@
- if format_data:
- message = message.format(**format_data)
- super(ConflictingOptionError, self).__init__(message)
-- for k, v in format_data.iteritems():
-+ for k, v in format_data.items():
- setattr(self, k, v)
-
-
-@@ -132,7 +132,7 @@
- 'At least an option name or an environment variable name must '
- 'be given')
- if name:
-- if not isinstance(name, types.StringTypes):
-+ if not isinstance(name, (str,)):
- raise InvalidOptionError('Option must be a string')
- if not name.startswith('--'):
- raise InvalidOptionError('Option must start with `--`')
-@@ -141,7 +141,7 @@
- if not name.islower():
- raise InvalidOptionError('Option must be all lowercase')
- if env:
-- if not isinstance(env, types.StringTypes):
-+ if not isinstance(env, (str,)):
- raise InvalidOptionError(
- 'Environment variable name must be a string')
- if not env.isupper():
-@@ -151,8 +151,8 @@
- isinstance(nargs, int) and nargs >= 0):
- raise InvalidOptionError(
- "nargs must be a positive integer, '?', '*' or '+'")
-- if (not isinstance(default, types.StringTypes) and
-- not isinstance(default, (bool, types.NoneType)) and
-+ if (not isinstance(default, (str,)) and
-+ not isinstance(default, (bool, type(None))) and
- not istupleofstrings(default)):
- raise InvalidOptionError(
- 'default must be a bool, a string or a tuple of strings')
-@@ -224,7 +224,7 @@
- ', '.join("'%s'" % c for c in choices))
- elif has_choices:
- maxargs = self.maxargs
-- if len(choices) < maxargs and maxargs != sys.maxint:
-+ if len(choices) < maxargs and maxargs != sys.maxsize:
- raise InvalidOptionError('Not enough `choices` for `nargs`')
- self.choices = choices
- self.help = help
-@@ -238,7 +238,7 @@
- where prefix is one of 'with', 'without', 'enable' or 'disable'.
- The '=values' part is optional. Values are separated with commas.
- '''
-- if not isinstance(option, types.StringTypes):
-+ if not isinstance(option, (str,)):
- raise InvalidOptionError('Option must be a string')
-
- elements = option.split('=', 1)
-@@ -291,7 +291,7 @@
- def maxargs(self):
- if isinstance(self.nargs, int):
- return self.nargs
-- return 1 if self.nargs == '?' else sys.maxint
-+ return 1 if self.nargs == '?' else sys.maxsize
-
- def _validate_nargs(self, num):
- minargs, maxargs = self.minargs, self.maxargs
-@@ -485,5 +485,5 @@
-
- def __iter__(self):
- for d in (self._args, self._extra_args):
-- for arg, pos in d.itervalues():
-+ for arg, pos in d.values():
- yield arg
---- firefox-52.9.0esr/python/mozbuild/mozbuild/configure/util.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/configure/util.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import codecs
- import itertools
-@@ -52,7 +52,7 @@
-
- def __cmp__(self, other):
- # LooseVersion checks isinstance(StringType), so work around it.
-- if isinstance(other, unicode):
-+ if isinstance(other, str):
- other = other.encode('ascii')
- return LooseVersion.__cmp__(self, other)
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/controller/building.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/controller/building.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import getpass
- import json
-@@ -108,7 +108,7 @@
- """
- o = []
-
-- for tier, state in self.tiers.items():
-+ for tier, state in list(self.tiers.items()):
- t_entry = dict(
- name=tier,
- start=state['begin_time'],
-@@ -643,8 +643,8 @@
-
- return '\n'.join(lines)
-
-- def __nonzero__(self):
-- relative_values = [v for k, v in self._values.items()
-+ def __bool__(self):
-+ relative_values = [v for k, v in list(self._values.items())
- if k not in self.ABSOLUTE_KEYS]
- return (all(v >= 0 for v in relative_values) and
- any(v > 0 for v in relative_values))
-@@ -666,8 +666,8 @@
- """Install test files."""
-
- if self.is_clobber_needed():
-- print(INSTALL_TESTS_CLOBBER.format(
-- clobber_file=os.path.join(self.topobjdir, 'CLOBBER')))
-+ print((INSTALL_TESTS_CLOBBER.format(
-+ clobber_file=os.path.join(self.topobjdir, 'CLOBBER'))))
- sys.exit(1)
-
- if not test_objs:
---- firefox-52.9.0esr/python/mozbuild/mozbuild/controller/clobber.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/controller/clobber.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function
-+
-
- r'''This module contains code for managing clobbering of the tree.'''
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/context.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/context.py (refactored)
-@@ -14,7 +14,7 @@
- contain, you've come to the right place.
- """
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import os
-
-@@ -234,15 +234,15 @@
- This function is transactional: if setitem fails for one of the values,
- the context is not updated at all."""
- if isinstance(iterable, dict):
-- iterable = iterable.items()
-+ iterable = list(iterable.items())
-
- update = {}
-- for key, value in itertools.chain(iterable, kwargs.items()):
-+ for key, value in itertools.chain(iterable, list(kwargs.items())):
- stored_type = self._validate(key, value)
- # Don't create an instance of stored_type if coercion is needed,
- # until all values are validated.
- update[key] = (value, stored_type)
-- for key, (value, stored_type) in update.items():
-+ for key, (value, stored_type) in list(update.items()):
- if not isinstance(value, stored_type):
- update[key] = stored_type(value)
- else:
-@@ -297,7 +297,7 @@
- self.update(value)
-
-
--class FinalTargetValue(ContextDerivedValue, unicode):
-+class FinalTargetValue(ContextDerivedValue, str):
- def __new__(cls, context, value=""):
- if not value:
- value = 'dist/'
-@@ -307,7 +307,7 @@
- value += 'bin'
- if context['DIST_SUBDIR']:
- value += '/' + context['DIST_SUBDIR']
-- return unicode.__new__(cls, value)
-+ return str.__new__(cls, value)
-
-
- def Enum(*values):
-@@ -355,7 +355,7 @@
- cls = SourcePath
- return super(PathMeta, cls).__call__(context, value)
-
--class Path(ContextDerivedValue, unicode):
-+class Path(ContextDerivedValue, str, metaclass=PathMeta):
- """Stores and resolves a source path relative to a given context
-
- This class is used as a backing type for some of the sandbox variables.
-@@ -366,7 +366,6 @@
- - '!objdir/relative/paths'
- - '%/filesystem/absolute/paths'
- """
-- __metaclass__ = PathMeta
-
- def __new__(cls, context, value=None):
- return super(Path, cls).__new__(cls, value)
-@@ -386,7 +385,7 @@
- def __cmp__(self, other):
- if isinstance(other, Path) and self.srcdir != other.srcdir:
- return cmp(self.full_path, other.full_path)
-- return cmp(unicode(self), other)
-+ return cmp(str(self), other)
-
- # __cmp__ is not enough because unicode has __eq__, __ne__, etc. defined
- # and __cmp__ is only used for those when they don't exist.
-@@ -544,7 +543,7 @@
- __slots__ = tuple([name for name, _ in fields])
-
- def __init__(self, context):
-- for fname, ftype in self._fields.items():
-+ for fname, ftype in list(self._fields.items()):
- if issubclass(ftype, ContextDerivedValue):
- setattr(self, fname, self._fields[fname](context))
- else:
-@@ -614,8 +613,8 @@
- return _TypedListWithAction
-
- WebPlatformTestManifest = TypedNamedTuple("WebPlatformTestManifest",
-- [("manifest_path", unicode),
-- ("test_root", unicode)])
-+ [("manifest_path", str),
-+ ("test_root", str)])
- ManifestparserManifestList = OrderedListWithAction(read_manifestparser_manifest)
- ReftestManifestList = OrderedListWithAction(read_reftest_manifest)
- WptManifestList = TypedListWithAction(WebPlatformTestManifest, read_wpt_manifest)
-@@ -623,12 +622,12 @@
- OrderedSourceList = ContextDerivedTypedList(SourcePath, StrictOrderingOnAppendList)
- OrderedTestFlavorList = TypedList(Enum(*all_test_flavors()),
- StrictOrderingOnAppendList)
--OrderedStringList = TypedList(unicode, StrictOrderingOnAppendList)
-+OrderedStringList = TypedList(str, StrictOrderingOnAppendList)
- DependentTestsEntry = ContextDerivedTypedRecord(('files', OrderedSourceList),
- ('tags', OrderedStringList),
- ('flavors', OrderedTestFlavorList))
- BugzillaComponent = TypedNamedTuple('BugzillaComponent',
-- [('product', unicode), ('component', unicode)])
-+ [('product', str), ('component', str)])
-
-
- class Files(SubContext):
-@@ -764,7 +763,7 @@
- self.test_tags |= other.test_tags
- self.test_flavors |= other.test_flavors
-
-- for k, v in other.items():
-+ for k, v in list(other.items()):
- if k == 'IMPACTED_TESTS':
- self.test_files |= set(mozpath.relpath(e.full_path, e.context.config.topsrcdir)
- for e in v.files)
-@@ -818,7 +817,7 @@
-
- bug_components = Counter()
-
-- for f in files.values():
-+ for f in list(files.values()):
- bug_component = f.get('BUG_COMPONENT')
- if bug_component:
- bug_components[bug_component] += 1
-@@ -889,11 +888,11 @@
- file.
- """),
-
-- 'ANDROID_APK_NAME': (unicode, unicode,
-+ 'ANDROID_APK_NAME': (str, str,
- """The name of an Android APK file to generate.
- """),
-
-- 'ANDROID_APK_PACKAGE': (unicode, unicode,
-+ 'ANDROID_APK_PACKAGE': (str, str,
- """The name of the Android package to generate R.java for, like org.mozilla.gecko.
- """),
-
-@@ -962,7 +961,7 @@
- """),
-
- 'GENERATED_FILES': (StrictOrderingOnAppendListWithFlagsFactory({
-- 'script': unicode,
-+ 'script': str,
- 'inputs': list }), list,
- """Generic generated files.
-
-@@ -1107,7 +1106,7 @@
- """Like ``OBJDIR_FILES``, with preprocessing. Use sparingly.
- """),
-
-- 'FINAL_LIBRARY': (unicode, unicode,
-+ 'FINAL_LIBRARY': (str, str,
- """Library in which the objects of the current directory will be linked.
-
- This variable contains the name of a library, defined elsewhere with
-@@ -1158,7 +1157,7 @@
- """A list of python unit tests.
- """),
-
-- 'HOST_LIBRARY_NAME': (unicode, unicode,
-+ 'HOST_LIBRARY_NAME': (str, str,
- """Name of target library generated when cross compiling.
- """),
-
-@@ -1176,7 +1175,7 @@
- libraries that link into this library via FINAL_LIBRARY.
- """),
-
-- 'LIBRARY_NAME': (unicode, unicode,
-+ 'LIBRARY_NAME': (str, str,
- """The code name of the library generated for a directory.
-
- By default STATIC_LIBRARY_NAME and SHARED_LIBRARY_NAME take this name.
-@@ -1188,7 +1187,7 @@
- ``example/components/xpcomsample.lib`` on Windows.
- """),
-
-- 'SHARED_LIBRARY_NAME': (unicode, unicode,
-+ 'SHARED_LIBRARY_NAME': (str, str,
- """The name of the static library generated for a directory, if it needs to
- differ from the library code name.
-
-@@ -1202,7 +1201,7 @@
- Implies FORCE_SHARED_LIB.
- """),
-
-- 'STATIC_LIBRARY_NAME': (unicode, unicode,
-+ 'STATIC_LIBRARY_NAME': (str, str,
- """The name of the static library generated for a directory, if it needs to
- differ from the library code name.
-
-@@ -1238,37 +1237,37 @@
-
- This variable contains a list of system libaries to link against.
- """),
-- 'RCFILE': (unicode, unicode,
-+ 'RCFILE': (str, str,
- """The program .rc file.
-
- This variable can only be used on Windows.
- """),
-
-- 'RESFILE': (unicode, unicode,
-+ 'RESFILE': (str, str,
- """The program .res file.
-
- This variable can only be used on Windows.
- """),
-
-- 'RCINCLUDE': (unicode, unicode,
-+ 'RCINCLUDE': (str, str,
- """The resource script file to be included in the default .res file.
-
- This variable can only be used on Windows.
- """),
-
-- 'DEFFILE': (unicode, unicode,
-+ 'DEFFILE': (str, str,
- """The program .def (module definition) file.
-
- This variable can only be used on Windows.
- """),
-
-- 'LD_VERSION_SCRIPT': (unicode, unicode,
-+ 'LD_VERSION_SCRIPT': (str, str,
- """The linker version script for shared libraries.
-
- This variable can only be used on Linux.
- """),
-
-- 'SYMBOLS_FILE': (Path, unicode,
-+ 'SYMBOLS_FILE': (Path, str,
- """A file containing a list of symbols to export from a shared library.
-
- The given file contains a list of symbols to be exported, and is
-@@ -1323,7 +1322,7 @@
- ``BIN_SUFFIX``, the name will remain unchanged.
- """),
-
-- 'SONAME': (unicode, unicode,
-+ 'SONAME': (str, str,
- """The soname of the shared object currently being linked
-
- soname is the "logical name" of a shared object, often used to provide
-@@ -1379,7 +1378,7 @@
- ``GENERATED_FILES``.
- """),
-
-- 'PROGRAM' : (unicode, unicode,
-+ 'PROGRAM' : (str, str,
- """Compiled executable name.
-
- If the configuration token ``BIN_SUFFIX`` is set, its value will be
-@@ -1387,7 +1386,7 @@
- ``BIN_SUFFIX``, ``PROGRAM`` will remain unchanged.
- """),
-
-- 'HOST_PROGRAM' : (unicode, unicode,
-+ 'HOST_PROGRAM' : (str, str,
- """Compiled host executable name.
-
- If the configuration token ``HOST_BIN_SUFFIX`` is set, its value will be
-@@ -1425,7 +1424,7 @@
- files.
- """),
-
-- 'XPIDL_MODULE': (unicode, unicode,
-+ 'XPIDL_MODULE': (str, str,
- """XPCOM Interface Definition Module Name.
-
- This is the name of the ``.xpt`` file that is created by linking
-@@ -1576,14 +1575,14 @@
- """),
-
- # The following variables are used to control the target of installed files.
-- 'XPI_NAME': (unicode, unicode,
-+ 'XPI_NAME': (str, str,
- """The name of an extension XPI to generate.
-
- When this variable is present, the results of this directory will end up
- being packaged into an extension instead of the main dist/bin results.
- """),
-
-- 'DIST_SUBDIR': (unicode, unicode,
-+ 'DIST_SUBDIR': (str, str,
- """The name of an alternate directory to install files to.
-
- When this variable is present, the results of this directory will end up
-@@ -1591,7 +1590,7 @@
- otherwise be placed.
- """),
-
-- 'FINAL_TARGET': (FinalTargetValue, unicode,
-+ 'FINAL_TARGET': (FinalTargetValue, str,
- """The name of the directory to install targets to.
-
- The directory is relative to the top of the object directory. The
-@@ -1622,7 +1621,7 @@
-
- 'GYP_DIRS': (StrictOrderingOnAppendListWithFlagsFactory({
- 'variables': dict,
-- 'input': unicode,
-+ 'input': str,
- 'sandbox_vars': dict,
- 'non_unified_sources': StrictOrderingOnAppendList,
- }), list,
-@@ -1799,7 +1798,7 @@
- }
-
- # Sanity check: we don't want any variable above to have a list as storage type.
--for name, (storage_type, input_types, docs) in VARIABLES.items():
-+for name, (storage_type, input_types, docs) in list(VARIABLES.items()):
- if storage_type == list:
- raise RuntimeError('%s has a "list" storage type. Use "List" instead.'
- % name)
---- firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/data.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/data.py (refactored)
-@@ -15,7 +15,7 @@
- structures.
- """
-
--from __future__ import absolute_import, unicode_literals
-+
-
- from mozbuild.util import StrictOrderingOnAppendList
- from mozpack.chrome.manifest import ManifestEntry
-@@ -186,7 +186,7 @@
- self.defines = defines
-
- def get_defines(self):
-- for define, value in self.defines.iteritems():
-+ for define, value in self.defines.items():
- if value is True:
- yield('-D%s' % define)
- elif value is False:
---- firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/emitter.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/emitter.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import itertools
- import logging
-@@ -120,8 +120,8 @@
- # arguments. This gross hack works around the problem until we
- # rid ourselves of 2.6.
- self.info = {}
-- for k, v in mozinfo.info.items():
-- if isinstance(k, unicode):
-+ for k, v in list(mozinfo.info.items()):
-+ if isinstance(k, str):
- k = k.encode('ascii')
- self.info[k] = v
-
-@@ -197,7 +197,7 @@
-
- def _emit_libs_derived(self, contexts):
- # First do FINAL_LIBRARY linkage.
-- for lib in (l for libs in self._libs.values() for l in libs):
-+ for lib in (l for libs in list(self._libs.values()) for l in libs):
- if not isinstance(lib, (StaticLibrary, RustLibrary)) or not lib.link_into:
- continue
- if lib.link_into not in self._libs:
-@@ -257,12 +257,12 @@
- lib.link_into == outerlib.basename):
- propagate_defines(lib, defines)
-
-- for lib in (l for libs in self._libs.values() for l in libs):
-+ for lib in (l for libs in list(self._libs.values()) for l in libs):
- if isinstance(lib, Library):
- propagate_defines(lib, lib.lib_defines)
- yield lib
-
-- for obj in self._binaries.values():
-+ for obj in list(self._binaries.values()):
- yield obj
-
- LIBRARY_NAME_VAR = {
-@@ -321,7 +321,7 @@
- libs[key] = l
- if key not in libs:
- libs[key] = l
-- candidates = libs.values()
-+ candidates = list(libs.values())
- if force_static and not candidates:
- if dir:
- raise SandboxValidationError(
-@@ -383,9 +383,9 @@
-
- def _verify_deps(self, context, crate_dir, crate_name, dependencies, description='Dependency'):
- """Verify that a crate's dependencies all specify local paths."""
-- for dep_crate_name, values in dependencies.iteritems():
-+ for dep_crate_name, values in dependencies.items():
- # A simple version number.
-- if isinstance(values, (str, unicode)):
-+ if isinstance(values, str):
- raise SandboxValidationError(
- '%s %s of crate %s does not list a path' % (description, dep_crate_name, crate_name),
- context)
-@@ -463,7 +463,7 @@
- ' in [profile.%s] section') % (libname, profile_name),
- context)
-
-- dependencies = set(config.get('dependencies', {}).iterkeys())
-+ dependencies = set(config.get('dependencies', {}).keys())
-
- return RustLibrary(context, libname, cargo_file, crate_type,
- dependencies, **static_args)
-@@ -738,7 +738,7 @@
- assert not gen_sources['UNIFIED_SOURCES']
-
- no_pgo = context.get('NO_PGO')
-- no_pgo_sources = [f for f, flags in all_flags.iteritems()
-+ no_pgo_sources = [f for f, flags in all_flags.items()
- if flags.no_pgo]
- if no_pgo:
- if no_pgo_sources:
-@@ -765,7 +765,7 @@
-
- # The inverse of the above, mapping suffixes to their canonical suffix.
- canonicalized_suffix_map = {}
-- for suffix, alternatives in suffix_map.iteritems():
-+ for suffix, alternatives in suffix_map.items():
- alternatives.add(suffix)
- for a in alternatives:
- canonicalized_suffix_map[a] = suffix
-@@ -786,7 +786,7 @@
- # a directory with mixed C and C++ source, but it's not that important.
- cxx_sources = defaultdict(bool)
-
-- for variable, (klass, gen_klass, suffixes) in varmap.items():
-+ for variable, (klass, gen_klass, suffixes) in list(varmap.items()):
- allowed_suffixes = set().union(*[suffix_map[s] for s in suffixes])
-
- # First ensure that we haven't been given filetypes that we don't
-@@ -812,7 +812,7 @@
- obj = cls(*arglist)
- yield obj
-
-- for f, flags in all_flags.iteritems():
-+ for f, flags in all_flags.items():
- if flags.flags:
- ext = mozpath.splitext(f)[1]
- yield PerSourceFlag(context, f, flags.flags)
-@@ -958,7 +958,7 @@
- for obj in self._handle_linkables(context, passthru, generated_files):
- yield obj
-
-- generated_files.update(['%s%s' % (k, self.config.substs.get('BIN_SUFFIX', '')) for k in self._binaries.keys()])
-+ generated_files.update(['%s%s' % (k, self.config.substs.get('BIN_SUFFIX', '')) for k in list(self._binaries.keys())])
-
- components = []
- for var, cls in (
-@@ -1055,10 +1055,10 @@
- for obj in self._process_jar_manifests(context):
- yield obj
-
-- for name, jar in context.get('JAVA_JAR_TARGETS', {}).items():
-+ for name, jar in list(context.get('JAVA_JAR_TARGETS', {}).items()):
- yield ContextWrapped(context, jar)
-
-- for name, data in context.get('ANDROID_ECLIPSE_PROJECT_TARGETS', {}).items():
-+ for name, data in list(context.get('ANDROID_ECLIPSE_PROJECT_TARGETS', {}).items()):
- yield ContextWrapped(context, data)
-
- if context.get('USE_YASM') is True:
-@@ -1127,7 +1127,7 @@
- script = mozpath.join(mozpath.dirname(mozpath.dirname(__file__)),
- 'action', 'process_define_files.py')
- yield GeneratedFile(context, script, 'process_define_file',
-- unicode(path),
-+ str(path),
- [Path(context, path + '.in')])
-
- generated_files = context.get('GENERATED_FILES')
-@@ -1170,7 +1170,7 @@
- yield GeneratedFile(context, script, method, outputs, inputs)
-
- def _process_test_manifests(self, context):
-- for prefix, info in TEST_MANIFESTS.items():
-+ for prefix, info in list(TEST_MANIFESTS.items()):
- for path, manifest in context.get('%s_MANIFESTS' % prefix, []):
- for obj in self._process_test_manifest(context, info, path, manifest):
- yield obj
-@@ -1261,7 +1261,7 @@
-
- process_support_files(test)
-
-- for path, m_defaults in mpmanifest.manifest_defaults.items():
-+ for path, m_defaults in list(mpmanifest.manifest_defaults.items()):
- process_support_files(m_defaults)
-
- # We also copy manifests into the output directory,
---- firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/gyp_reader.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/gyp_reader.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import gyp
- import sys
-@@ -69,7 +69,7 @@
-
-
- def encode(value):
-- if isinstance(value, unicode):
-+ if isinstance(value, str):
- return value.encode('utf-8')
- return value
-
-@@ -87,7 +87,7 @@
- # gyp expects plain str instead of unicode. The frontend code gives us
- # unicode strings, so convert them.
- path = encode(path)
-- str_vars = dict((name, encode(value)) for name, value in vars.items())
-+ str_vars = dict((name, encode(value)) for name, value in list(vars.items()))
-
- params = {
- b'parallel': False,
-@@ -222,7 +222,7 @@
- if not f:
- continue
- # the result may be a string or a list.
-- if isinstance(f, types.StringTypes):
-+ if isinstance(f, (str,)):
- context[var].append(f)
- else:
- context[var].extend(f)
---- firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/mach_commands.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/mach_commands.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- from collections import defaultdict
- import os
-@@ -105,13 +105,13 @@
- """
- components = defaultdict(set)
- try:
-- for p, m in self._get_files_info(paths, rev=rev).items():
-+ for p, m in list(self._get_files_info(paths, rev=rev).items()):
- components[m.get('BUG_COMPONENT')].add(p)
- except InvalidPathException as e:
- print(e.message)
- return 1
-
-- for component, files in sorted(components.items(), key=lambda x: (x is None, x)):
-+ for component, files in sorted(list(components.items()), key=lambda x: (x is None, x)):
- print('%s :: %s' % (component.product, component.component) if component else 'UNKNOWN')
- for f in sorted(files):
- print(' %s' % f)
-@@ -139,7 +139,7 @@
- help='Paths whose data to query')
- def file_info_test_deps(self, paths, rev=None):
- try:
-- for p, m in self._get_files_info(paths, rev=rev).items():
-+ for p, m in list(self._get_files_info(paths, rev=rev).items()):
- print('%s:' % mozpath.relpath(p, self.topsrcdir))
- if m.test_files:
- print('\tTest file patterns:')
---- firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/reader.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/reader.py (refactored)
-@@ -16,7 +16,7 @@
- It does this by examining specific variables populated during execution.
- """
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import ast
- import inspect
-@@ -80,11 +80,12 @@
- )
-
- from mozbuild.base import ExecutionSummary
-+from functools import reduce
-
-
- if sys.version_info.major == 2:
-- text_type = unicode
-- type_type = types.TypeType
-+ text_type = str
-+ type_type = type
- else:
- text_type = str
- type_type = type
-@@ -126,7 +127,7 @@
- b'JS_STANDALONE': b'1',
- })
- udict = {}
-- for k, v in self.substs.items():
-+ for k, v in list(self.substs.items()):
- if isinstance(v, str):
- udict[k.decode('utf-8')] = v.decode('utf-8')
- else:
-@@ -338,7 +339,7 @@
- raise Exception('`template` is a function decorator. You must '
- 'use it as `@template` preceding a function declaration.')
-
-- name = func.func_name
-+ name = func.__name__
-
- if name in self.templates:
- raise KeyError(
-@@ -417,7 +418,7 @@
- klass = self._context.__class__
- self._context.__class__ = TemplateContext
- # The sandbox will do all the necessary checks for these merges.
-- for key, value in context.items():
-+ for key, value in list(context.items()):
- if isinstance(value, dict):
- self[key].update(value)
- elif isinstance(value, (list, HierarchicalStringList)):
-@@ -434,10 +435,10 @@
-
- class TemplateFunction(object):
- def __init__(self, func, sandbox):
-- self.path = func.func_code.co_filename
-- self.name = func.func_name
--
-- code = func.func_code
-+ self.path = func.__code__.co_filename
-+ self.name = func.__name__
-+
-+ code = func.__code__
- firstlineno = code.co_firstlineno
- lines = sandbox._current_source.splitlines(True)
- lines = inspect.getblock(lines[firstlineno - 1:])
-@@ -476,8 +477,8 @@
- compile(func_ast, self.path, 'exec'),
- glob,
- self.name,
-- func.func_defaults,
-- func.func_closure,
-+ func.__defaults__,
-+ func.__closure__,
- )
- func()
-
-@@ -491,11 +492,11 @@
- '__builtins__': sandbox._builtins
- }
- func = types.FunctionType(
-- self._func.func_code,
-+ self._func.__code__,
- glob,
- self.name,
-- self._func.func_defaults,
-- self._func.func_closure
-+ self._func.__defaults__,
-+ self._func.__closure__
- )
- sandbox.exec_function(func, args, kwargs, self.path,
- becomes_current_path=False)
-@@ -511,7 +512,7 @@
- def visit_Str(self, node):
- # String nodes we got from the AST parser are str, but we want
- # unicode literals everywhere, so transform them.
-- node.s = unicode(node.s)
-+ node.s = str(node.s)
- return node
-
- def visit_Name(self, node):
-@@ -644,7 +645,7 @@
-
- for l in traceback.format_exception(type(self.other), self.other,
- self.trace):
-- s.write(unicode(l))
-+ s.write(str(l))
-
- return s.getvalue()
-
-@@ -794,7 +795,7 @@
- s.write(' %s\n' % inner.args[2])
- s.write('\n')
- close_matches = difflib.get_close_matches(inner.args[2],
-- VARIABLES.keys(), 2)
-+ list(VARIABLES.keys()), 2)
- if close_matches:
- s.write('Maybe you meant %s?\n' % ' or '.join(close_matches))
- s.write('\n')
-@@ -1196,7 +1197,7 @@
-
- recurse_info[d][key] = dict(sandbox.metadata[key])
-
-- for path, child_metadata in recurse_info.items():
-+ for path, child_metadata in list(recurse_info.items()):
- child_path = path.join('moz.build').full_path
-
- # Ensure we don't break out of the topsrcdir. We don't do realpath
-@@ -1288,7 +1289,7 @@
- # There is room to improve this code (and the code in
- # _find_relevant_mozbuilds) to better handle multiple files in the same
- # directory. Bug 1136966 tracks.
-- for path, mbpaths in relevants.items():
-+ for path, mbpaths in list(relevants.items()):
- path_mozbuilds[path] = [mozpath.join(topsrcdir, p) for p in mbpaths]
-
- for i, mbpath in enumerate(mbpaths[0:-1]):
-@@ -1325,7 +1326,7 @@
- all_contexts.append(context)
-
- result = {}
-- for path, paths in path_mozbuilds.items():
-+ for path, paths in list(path_mozbuilds.items()):
- result[path] = reduce(lambda x, y: x + y, (contexts[p] for p in paths), [])
-
- return result, all_contexts
-@@ -1352,7 +1353,7 @@
-
- r = {}
-
-- for path, ctxs in paths.items():
-+ for path, ctxs in list(paths.items()):
- flags = Files(Context())
-
- for ctx in ctxs:
---- firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/sandbox.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/sandbox.py (refactored)
-@@ -17,7 +17,7 @@
- user-friendly error messages in the case of errors.
- """
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import os
- import sys
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/common.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/common.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- from mach.logging import LoggingManager
-
-@@ -36,7 +36,7 @@
- }, **extra_substs)
-
- self.substs_unicode = ReadOnlyDict({k.decode('utf-8'): v.decode('utf-8',
-- 'replace') for k, v in self.substs.items()})
-+ 'replace') for k, v in list(self.substs.items())})
-
- self.defines = self.substs
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_base.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_base.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import json
- import os
-@@ -12,7 +12,7 @@
- import tempfile
- import unittest
-
--from cStringIO import StringIO
-+from io import StringIO
- from mozfile.mozfile import NamedTemporaryFile
-
- from mozunit import main
-@@ -93,7 +93,7 @@
- mozconfig = os.path.join(d, 'mozconfig')
- with open(mozconfig, 'wt') as fh:
- fh.write('mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/foo/@CONFIG_GUESS@')
-- print('Wrote mozconfig %s' % mozconfig)
-+ print(('Wrote mozconfig %s' % mozconfig))
-
- topobjdir = os.path.join(d, 'foo', guess)
- os.makedirs(topobjdir)
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_containers.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_containers.py (refactored)
-@@ -152,7 +152,7 @@
-
- self.assertEqual(test['foo'], 1)
-
-- self.assertEqual(test.keys(), ['foo', 'bar' ])
-+ self.assertEqual(list(test.keys()), ['foo', 'bar' ])
-
- def test_defaults(self):
- test = OrderedDefaultDict(bool, {'foo': 1 })
-@@ -161,7 +161,7 @@
-
- self.assertEqual(test['qux'], False)
-
-- self.assertEqual(test.keys(), ['foo', 'qux' ])
-+ self.assertEqual(list(test.keys()), ['foo', 'qux' ])
-
-
- class TestKeyedDefaultDict(unittest.TestCase):
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_dotproperties.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_dotproperties.py (refactored)
-@@ -1,11 +1,11 @@
- # -*- coding: utf-8 -*-
-
--from __future__ import unicode_literals
-+
-
- import os
- import unittest
-
--from StringIO import StringIO
-+from io import StringIO
-
- import mozpack.path as mozpath
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_expression.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_expression.py (refactored)
-@@ -25,8 +25,8 @@
-
- def test_in(self):
- """test 'var in context' to not fall for fallback"""
-- self.assert_('FAIL' in self.c)
-- self.assert_('PASS' not in self.c)
-+ self.assertTrue('FAIL' in self.c)
-+ self.assertTrue('PASS' not in self.c)
-
- class TestExpression(unittest.TestCase):
- """
-@@ -48,16 +48,16 @@
-
- def test_not(self):
- """Test for the ! operator"""
-- self.assert_(Expression('!0').evaluate(self.c))
-- self.assert_(not Expression('!1').evaluate(self.c))
-+ self.assertTrue(Expression('!0').evaluate(self.c))
-+ self.assertTrue(not Expression('!1').evaluate(self.c))
-
- def test_equals(self):
- """ Test for the == operator"""
-- self.assert_(Expression('FAIL == PASS').evaluate(self.c))
-+ self.assertTrue(Expression('FAIL == PASS').evaluate(self.c))
-
- def test_notequals(self):
- """ Test for the != operator"""
-- self.assert_(Expression('FAIL != 1').evaluate(self.c))
-+ self.assertTrue(Expression('FAIL != 1').evaluate(self.c))
-
- def test_logical_and(self):
- """ Test for the && operator"""
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_jarmaker.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_jarmaker.py (refactored)
-@@ -2,14 +2,14 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import print_function
-+
- import unittest
-
- import os, sys, os.path, time, inspect
- from filecmp import dircmp
- from tempfile import mkdtemp
- from shutil import rmtree, copy2
--from StringIO import StringIO
-+from io import StringIO
- from zipfile import ZipFile
- import mozunit
-
-@@ -117,12 +117,12 @@
- """Helper to report rich results on difference between two directories.
- """
- def _fillDiff(self, dc, rv, basepath="{0}"):
-- rv['right_only'] += map(lambda l: basepath.format(l), dc.right_only)
-- rv['left_only'] += map(lambda l: basepath.format(l), dc.left_only)
-- rv['diff_files'] += map(lambda l: basepath.format(l), dc.diff_files)
-- rv['funny'] += map(lambda l: basepath.format(l), dc.common_funny)
-- rv['funny'] += map(lambda l: basepath.format(l), dc.funny_files)
-- for subdir, _dc in dc.subdirs.iteritems():
-+ rv['right_only'] += [basepath.format(l) for l in dc.right_only]
-+ rv['left_only'] += [basepath.format(l) for l in dc.left_only]
-+ rv['diff_files'] += [basepath.format(l) for l in dc.diff_files]
-+ rv['funny'] += [basepath.format(l) for l in dc.common_funny]
-+ rv['funny'] += [basepath.format(l) for l in dc.funny_files]
-+ for subdir, _dc in dc.subdirs.items():
- self._fillDiff(_dc, rv, basepath.format(subdir + "/{0}"))
- def allResults(self, left, right):
- rv = {'right_only':[], 'left_only':[],
-@@ -295,7 +295,7 @@
- ('hoge', 'foo', '2'): ('qux', 'foo', '2'),
- ('hoge', 'baz'): ('qux', 'baz'),
- }
-- for dest, src in expected_symlinks.iteritems():
-+ for dest, src in expected_symlinks.items():
- srcpath = os.path.join(self.srcdir, *src)
- destpath = os.path.join(self.builddir, 'chrome', 'test', 'dir',
- *dest)
-@@ -317,7 +317,7 @@
- def test_en_US(self):
- jm = self.jm
- jm.makeJar(self.fake_empty_file, '/NO_OUTPUT_REQUIRED')
-- self.assertEquals(jm.localedirs,
-+ self.assertEqual(jm.localedirs,
- [
- os.path.join(os.path.abspath('/TOPSOURCEDIR'),
- 'browser/locales', 'en-US')
-@@ -326,13 +326,13 @@
- jm = self.jm
- jm.l10nbase = '/L10N_BASE'
- jm.makeJar(self.fake_empty_file, '/NO_OUTPUT_REQUIRED')
-- self.assertEquals(jm.localedirs, [os.path.join('/L10N_BASE', 'browser')])
-+ self.assertEqual(jm.localedirs, [os.path.join('/L10N_BASE', 'browser')])
- def test_l10n_merge(self):
- jm = self.jm
- jm.l10nbase = '/L10N_BASE'
- jm.l10nmerge = '/L10N_MERGE'
- jm.makeJar(self.fake_empty_file, '/NO_OUTPUT_REQUIRED')
-- self.assertEquals(jm.localedirs,
-+ self.assertEqual(jm.localedirs,
- [os.path.join('/L10N_MERGE', 'browser'),
- os.path.join('/L10N_BASE', 'browser'),
- os.path.join(os.path.abspath('/TOPSOURCEDIR'),
-@@ -346,7 +346,7 @@
- ''')
- jarcontents.name = 'override.mn'
- jm.makeJar(jarcontents, '/NO_OUTPUT_REQUIRED')
-- self.assertEquals(jm.localedirs,
-+ self.assertEqual(jm.localedirs,
- [
- os.path.join(os.path.abspath('/TOPSOURCEDIR'),
- 'dom/locales', 'en-US')
-@@ -360,7 +360,7 @@
- ''')
- jarcontents.name = 'override.mn'
- jm.makeJar(jarcontents, '/NO_OUTPUT_REQUIRED')
-- self.assertEquals(jm.localedirs, [os.path.join('/L10N_BASE', 'dom')])
-+ self.assertEqual(jm.localedirs, [os.path.join('/L10N_BASE', 'dom')])
-
-
- if __name__ == '__main__':
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_line_endings.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_line_endings.py (refactored)
-@@ -1,6 +1,6 @@
- import unittest
-
--from StringIO import StringIO
-+from io import StringIO
- import os
- import sys
- import os.path
-@@ -30,17 +30,17 @@
- def testMac(self):
- self.createFile(['\x0D']*3)
- self.pp.do_include(self.tempnam)
-- self.assertEquals(self.pp.out.getvalue(), 'a\nb\nc\n')
-+ self.assertEqual(self.pp.out.getvalue(), 'a\nb\nc\n')
-
- def testUnix(self):
- self.createFile(['\x0A']*3)
- self.pp.do_include(self.tempnam)
-- self.assertEquals(self.pp.out.getvalue(), 'a\nb\nc\n')
-+ self.assertEqual(self.pp.out.getvalue(), 'a\nb\nc\n')
-
- def testWindows(self):
- self.createFile(['\x0D\x0A']*3)
- self.pp.do_include(self.tempnam)
-- self.assertEquals(self.pp.out.getvalue(), 'a\nb\nc\n')
-+ self.assertEqual(self.pp.out.getvalue(), 'a\nb\nc\n')
-
- if __name__ == '__main__':
- mozunit.main()
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_makeutil.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_makeutil.py (refactored)
-@@ -11,7 +11,7 @@
- from mozunit import main
- import os
- import unittest
--from StringIO import StringIO
-+from io import StringIO
-
-
- class TestMakefile(unittest.TestCase):
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_mozconfig.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_mozconfig.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
- import unittest
-@@ -480,9 +480,9 @@
-
- self.assertTrue(e.exception.message.startswith(
- 'Evaluation of your mozconfig exited with an error'))
-- self.assertEquals(e.exception.path,
-+ self.assertEqual(e.exception.path,
- mozconfig.name.replace(os.sep, '/'))
-- self.assertEquals(e.exception.output, ['hello world'])
-+ self.assertEqual(e.exception.output, ['hello world'])
-
-
- if __name__ == '__main__':
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_mozinfo.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_mozinfo.py (refactored)
-@@ -8,7 +8,7 @@
- import tempfile
- import unittest
-
--from StringIO import StringIO
-+from io import StringIO
-
- import mozunit
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_preprocessor.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_preprocessor.py (refactored)
-@@ -4,7 +4,7 @@
-
- import unittest
-
--from StringIO import StringIO
-+from io import StringIO
- import os
- import shutil
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_pythonutil.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_pythonutil.py (refactored)
-@@ -12,7 +12,7 @@
- def test_iter_modules_in_path(self):
- mozbuild_path = os.path.normcase(os.path.dirname(os.path.dirname(__file__)))
- paths = list(iter_modules_in_path(mozbuild_path))
-- self.assertEquals(sorted(paths), [
-+ self.assertEqual(sorted(paths), [
- os.path.join(os.path.abspath(mozbuild_path), '__init__.py'),
- os.path.join(os.path.abspath(mozbuild_path), 'pythonutil.py'),
- os.path.join(os.path.abspath(mozbuild_path), 'test', 'test_pythonutil.py'),
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_testing.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_testing.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
--
--import cPickle as pickle
-+
-+
-+import pickle as pickle
- import os
- import shutil
- import tempfile
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_util.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/test_util.py (refactored)
-@@ -3,7 +3,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import itertools
- import hashlib
-@@ -110,7 +110,7 @@
- '''
- def __call__(self, name, mode):
- if 'w' in mode:
-- raise Exception, 'Unexpected open with write mode'
-+ raise Exception('Unexpected open with write mode')
- return MockedOpen.__call__(self, name, mode)
-
- with MyMockedOpen({'file': 'content'}):
-@@ -432,7 +432,7 @@
- self.assertEqual(len(l), 0)
- original = ['a', 'b', 'c']
- l = ListWithAction(['a', 'b', 'c'], action=self.action)
-- expected = map(self.action, original)
-+ expected = list(map(self.action, original))
- self.assertSameList(expected, l)
-
- with self.assertRaises(ValueError):
-@@ -445,7 +445,7 @@
- l = ListWithAction(action=self.action)
- original = ['a', 'b']
- l.extend(original)
-- expected = map(self.action, original)
-+ expected = list(map(self.action, original))
- self.assertSameList(expected, l)
-
- with self.assertRaises(ValueError):
-@@ -455,7 +455,7 @@
- l = ListWithAction(action=self.action)
- original = ['a', 'b']
- l[:] = original
-- expected = map(self.action, original)
-+ expected = list(map(self.action, original))
- self.assertSameList(expected, l)
-
- with self.assertRaises(ValueError):
-@@ -465,7 +465,7 @@
- l = ListWithAction(action=self.action)
- original = ['a', 'b']
- l2 = l + original
-- expected = map(self.action, original)
-+ expected = list(map(self.action, original))
- self.assertSameList(expected, l2)
-
- with self.assertRaises(ValueError):
-@@ -475,7 +475,7 @@
- l = ListWithAction(action=self.action)
- original = ['a', 'b']
- l += original
-- expected = map(self.action, original)
-+ expected = list(map(self.action, original))
- self.assertSameList(expected, l)
-
- with self.assertRaises(ValueError):
-@@ -524,7 +524,7 @@
-
- def test_strict_ordering_on_append_list_with_flags_factory_extend(self):
- FooList = StrictOrderingOnAppendListWithFlagsFactory({
-- 'foo': bool, 'bar': unicode
-+ 'foo': bool, 'bar': str
- })
- foo = FooList(['a', 'b', 'c'])
- foo['a'].foo = True
-@@ -532,7 +532,7 @@
-
- # Don't allow extending lists with different flag definitions.
- BarList = StrictOrderingOnAppendListWithFlagsFactory({
-- 'foo': unicode, 'baz': bool
-+ 'foo': str, 'baz': bool
- })
- bar = BarList(['d', 'e', 'f'])
- bar['d'].foo = 'foo'
-@@ -752,9 +752,9 @@
-
- class TypedTestStrictOrderingOnAppendList(unittest.TestCase):
- def test_init(self):
-- class Unicode(unicode):
-+ class Unicode(str):
- def __init__(self, other):
-- if not isinstance(other, unicode):
-+ if not isinstance(other, str):
- raise ValueError()
- super(Unicode, self).__init__(other)
-
-@@ -776,14 +776,14 @@
-
- class TestTypedNamedTuple(unittest.TestCase):
- def test_simple(self):
-- FooBar = TypedNamedTuple('FooBar', [('foo', unicode), ('bar', int)])
-+ FooBar = TypedNamedTuple('FooBar', [('foo', str), ('bar', int)])
-
- t = FooBar(foo='foo', bar=2)
-- self.assertEquals(type(t), FooBar)
-- self.assertEquals(t.foo, 'foo')
-- self.assertEquals(t.bar, 2)
-- self.assertEquals(t[0], 'foo')
-- self.assertEquals(t[1], 2)
-+ self.assertEqual(type(t), FooBar)
-+ self.assertEqual(t.foo, 'foo')
-+ self.assertEqual(t.bar, 2)
-+ self.assertEqual(t[0], 'foo')
-+ self.assertEqual(t[1], 2)
-
- FooBar('foo', 2)
-
-@@ -796,7 +796,7 @@
- # arguments.
- t1 = ('foo', 3)
- t2 = FooBar(t1)
-- self.assertEquals(type(t2), FooBar)
-+ self.assertEqual(type(t2), FooBar)
- self.assertEqual(FooBar(t1), FooBar('foo', 3))
-
-
-@@ -871,18 +871,18 @@
- CompilerType = EnumString.subclass('msvc', 'gcc', 'clang', 'clang-cl')
-
- type = CompilerType('msvc')
-- self.assertEquals(type, 'msvc')
-- self.assertNotEquals(type, 'gcc')
-- self.assertNotEquals(type, 'clang')
-- self.assertNotEquals(type, 'clang-cl')
-+ self.assertEqual(type, 'msvc')
-+ self.assertNotEqual(type, 'gcc')
-+ self.assertNotEqual(type, 'clang')
-+ self.assertNotEqual(type, 'clang-cl')
- self.assertIn(type, ('msvc', 'clang-cl'))
- self.assertNotIn(type, ('gcc', 'clang'))
-
- with self.assertRaises(EnumStringComparisonError):
-- self.assertEquals(type, 'foo')
-+ self.assertEqual(type, 'foo')
-
- with self.assertRaises(EnumStringComparisonError):
-- self.assertNotEquals(type, 'foo')
-+ self.assertNotEqual(type, 'foo')
-
- with self.assertRaises(EnumStringComparisonError):
- self.assertIn(type, ('foo', 'gcc'))
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/action/test_buildlist.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/action/test_buildlist.py (refactored)
-@@ -38,11 +38,11 @@
- lines = [line.rstrip() for line in f.readlines()]
- f.close()
- for line in lines:
-- self.assert_(len(l) > 0,
-+ self.assertTrue(len(l) > 0,
- "ran out of expected lines! (expected '{0}', got '{1}')"
- .format(l, lines))
- self.assertEqual(line, l.pop(0))
-- self.assert_(len(l) == 0,
-+ self.assertTrue(len(l) == 0,
- "not enough lines in file! (expected '{0}',"
- " got '{1}'".format(l, lines))
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/action/test_generate_browsersearch.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/action/test_generate_browsersearch.py (refactored)
-@@ -3,7 +3,7 @@
- # Any copyright is dedicated to the Public Domain.
- # http://creativecommons.org/publicdomain/zero/1.0/
-
--from __future__ import unicode_literals
-+
-
- import json
- import os
-@@ -43,8 +43,8 @@
-
- def test_valid_unicode(self):
- o = self._test_one('valid-zh-CN')
-- self.assertEquals(o['default'], '百度')
-- self.assertEquals(o['engines'], ['百度', 'Google'])
-+ self.assertEqual(o['default'], '百度')
-+ self.assertEqual(o['engines'], ['百度', 'Google'])
-
- def test_invalid_unicode(self):
- with self.assertRaises(UnicodeDecodeError):
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/action/test_package_fennec_apk.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/action/test_package_fennec_apk.py (refactored)
-@@ -3,7 +3,7 @@
- # Any copyright is dedicated to the Public Domain.
- # http://creativecommons.org/publicdomain/zero/1.0/
-
--from __future__ import unicode_literals
-+
-
- import os
- import unittest
-@@ -41,14 +41,14 @@
- root_files=[data('root_file.txt')])
-
- # omni.ja ends up in assets/omni.ja.
-- self.assertEquals(jarrer['assets/omni.ja'].open().read().strip(), 'omni.ja')
-+ self.assertEqual(jarrer['assets/omni.ja'].open().read().strip(), 'omni.ja')
-
- # Everything else is in place.
- for name in ('classes.dex',
- 'assets/asset.txt',
- 'lib/lib.txt',
- 'root_file.txt'):
-- self.assertEquals(jarrer[name].open().read().strip(), name)
-+ self.assertEqual(jarrer[name].open().read().strip(), name)
-
- def test_inputs(self):
- # Language repacks take updated resources from an ap_ and pack them
-@@ -57,8 +57,8 @@
- # overrides the first.
- jarrer = package(inputs=[data('input2.apk'), data('input1.ap_')])
-
-- files1 = JarReader(data('input1.ap_')).entries.keys()
-- files2 = JarReader(data('input2.apk')).entries.keys()
-+ files1 = list(JarReader(data('input1.ap_')).entries.keys())
-+ files2 = list(JarReader(data('input2.apk')).entries.keys())
- for name in files2:
- self.assertTrue(name in files1 or
- jarrer[name].open().read().startswith('input2/'))
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/backend/common.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/backend/common.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
- import unittest
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/backend/test_android_eclipse.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/backend/test_android_eclipse.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import json
- import os
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/backend/test_build.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/backend/test_build.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals, print_function
-+
-
- import buildconfig
- import os
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/backend/test_configenvironment.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/backend/test_configenvironment.py (refactored)
-@@ -3,7 +3,7 @@
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
- import os, posixpath
--from StringIO import StringIO
-+from io import StringIO
- import unittest
- from mozunit import main, MockedOpen
-
-@@ -29,7 +29,7 @@
- self.substs = ReadOnlyDict(d)
-
- d = dict(self.substs_unicode)
-- d[u'top_srcdir'] = top_srcdir.decode('utf-8')
-+ d['top_srcdir'] = top_srcdir.decode('utf-8')
- self.substs_unicode = ReadOnlyDict(d)
-
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/backend/test_recursivemake.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/backend/test_recursivemake.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
--
--import cPickle as pickle
-+
-+
-+import pickle as pickle
- import json
- import os
- import unittest
-@@ -331,7 +331,7 @@
- ],
- }
-
-- for var, val in expected.items():
-+ for var, val in list(expected.items()):
- # print("test_variable_passthru[%s]" % (var))
- found = [str for str in lines if str.startswith(var)]
- self.assertEqual(found, val)
-@@ -370,7 +370,7 @@
- ],
- }
-
-- for var, val in expected.items():
-+ for var, val in list(expected.items()):
- found = [str for str in lines if str.startswith(var)]
- self.assertEqual(found, val)
-
-@@ -544,7 +544,7 @@
-
- # This is not the most robust test in the world, but it gets the job
- # done.
-- entries = [e for e in m._dests.keys() if '**' in e]
-+ entries = [e for e in list(m._dests.keys()) if '**' in e]
- self.assertEqual(len(entries), 1)
- self.assertIn('support/**', entries[0])
-
-@@ -562,7 +562,7 @@
- set(['child/test_sub.js',
- 'child/data/**',
- 'child/another-file.sjs']))
-- for key in test_installs.keys():
-+ for key in list(test_installs.keys()):
- self.assertIn(key, test_installs)
-
- test_files_manifest = mozpath.join(env.topobjdir,
-@@ -576,7 +576,7 @@
- # Then, synthesize one from the test-installs.pkl file. This should
- # allow us to re-create a subset of the above.
- synthesized_manifest = InstallManifest()
-- for item, installs in test_installs.items():
-+ for item, installs in list(test_installs.items()):
- for install_info in installs:
- if len(install_info) == 3:
- synthesized_manifest.add_pattern_symlink(*install_info)
-@@ -584,7 +584,7 @@
- synthesized_manifest.add_symlink(*install_info)
-
- self.assertEqual(len(synthesized_manifest), 3)
-- for item, info in synthesized_manifest._dests.items():
-+ for item, info in list(synthesized_manifest._dests.items()):
- self.assertIn(item, m)
- self.assertEqual(info, m._dests[item])
-
-@@ -758,7 +758,7 @@
- expected[mozpath.join(env.topobjdir, 'final-target')] = [
- 'FINAL_TARGET = $(DEPTH)/random-final-target'
- ]
-- for key, expected_rules in expected.iteritems():
-+ for key, expected_rules in expected.items():
- backend_path = mozpath.join(key, 'backend.mk')
- lines = [l.strip() for l in open(backend_path, 'rt').readlines()[2:]]
- found = [str for str in lines if
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/backend/test_visualstudio.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/backend/test_visualstudio.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- from xml.dom.minidom import parse
- import os
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/common.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/common.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import copy
- import errno
-@@ -16,7 +16,7 @@
- from mozbuild.util import ReadOnlyNamespace
- from mozpack import path as mozpath
-
--from StringIO import StringIO
-+from io import StringIO
- from which import WhichError
-
- from buildconfig import (
-@@ -78,10 +78,10 @@
- self._search_path = environ.get('PATH', '').split(os.pathsep)
-
- self._subprocess_paths = {
-- mozpath.abspath(k): v for k, v in paths.iteritems() if v
-+ mozpath.abspath(k): v for k, v in paths.items() if v
- }
-
-- paths = paths.keys()
-+ paths = list(paths.keys())
-
- environ = dict(environ)
- if 'CONFIG_SHELL' not in environ:
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/lint.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/lint.py (refactored)
-@@ -2,11 +2,11 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import os
- import unittest
--from StringIO import StringIO
-+from io import StringIO
- from mozunit import main
- from buildconfig import (
- topobjdir,
-@@ -42,9 +42,7 @@
- return type.__new__(mcs, name, bases, attrs)
-
-
--class Lint(unittest.TestCase):
-- __metaclass__ = LintMeta
--
-+class Lint(unittest.TestCase, metaclass=LintMeta):
- def setUp(self):
- self._curdir = os.getcwd()
- os.chdir(topobjdir)
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_checks_configure.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_checks_configure.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
--
--from StringIO import StringIO
-+
-+
-+from io import StringIO
- import os
- import sys
- import textwrap
-@@ -447,7 +447,7 @@
- checking for a... %s
- ''' % self.OTHER_A))
-
-- dirs = map(mozpath.dirname, (self.OTHER_A, self.KNOWN_A))
-+ dirs = list(map(mozpath.dirname, (self.OTHER_A, self.KNOWN_A)))
- config, out, status = self.get_result(textwrap.dedent('''\
- check_prog("A", ("known-a",), paths=["%s"])
- ''' % os.pathsep.join(dirs)))
-@@ -457,7 +457,7 @@
- checking for a... %s
- ''' % self.OTHER_A))
-
-- dirs = map(mozpath.dirname, (self.KNOWN_A, self.KNOWN_B))
-+ dirs = list(map(mozpath.dirname, (self.KNOWN_A, self.KNOWN_B)))
- config, out, status = self.get_result(textwrap.dedent('''\
- check_prog("A", ("known-a",), paths=["%s", "%s"])
- ''' % (os.pathsep.join(dirs), self.OTHER_A)))
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_compile_checks.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_compile_checks.py (refactored)
-@@ -2,14 +2,14 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import os
- import textwrap
- import unittest
- import mozpack.path as mozpath
-
--from StringIO import StringIO
-+from io import StringIO
-
- from buildconfig import topsrcdir
- from common import ConfigureTestSandbox
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_configure.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_configure.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
--
--from StringIO import StringIO
-+
-+
-+from io import StringIO
- import os
- import sys
- import textwrap
-@@ -43,7 +43,7 @@
-
- if '--help' in options:
- return out.getvalue(), config
-- self.assertEquals('', out.getvalue())
-+ self.assertEqual('', out.getvalue())
- return config
-
- def moz_configure(self, source):
-@@ -55,7 +55,7 @@
- def test_defaults(self):
- config = self.get_config()
- self.maxDiff = None
-- self.assertEquals({
-+ self.assertEqual({
- 'CHOICES': NegativeOptionValue(),
- 'DEFAULTED': PositiveOptionValue(('not-simple',)),
- 'IS_GCC': NegativeOptionValue(),
-@@ -71,9 +71,9 @@
- def test_help(self):
- help, config = self.get_config(['--help'], prog='configure')
-
-- self.assertEquals({}, config)
-+ self.assertEqual({}, config)
- self.maxDiff = None
-- self.assertEquals(
-+ self.assertEqual(
- 'Usage: configure [options]\n'
- '\n'
- 'Options: [defaults in brackets after descriptions]\n'
-@@ -109,7 +109,7 @@
- ):
- self.assertNotIn('ENABLED_SIMPLE', config)
- self.assertIn('SIMPLE', config)
-- self.assertEquals(NegativeOptionValue(), config['SIMPLE'])
-+ self.assertEqual(NegativeOptionValue(), config['SIMPLE'])
-
- for config in (
- self.get_config(['--enable-simple']),
-@@ -117,7 +117,7 @@
- ):
- self.assertIn('ENABLED_SIMPLE', config)
- self.assertIn('SIMPLE', config)
-- self.assertEquals(PositiveOptionValue(), config['SIMPLE'])
-+ self.assertEqual(PositiveOptionValue(), config['SIMPLE'])
- self.assertIs(config['SIMPLE'], config['ENABLED_SIMPLE'])
-
- # --enable-simple doesn't take values.
-@@ -135,7 +135,7 @@
- env={'MOZ_WITH_ENV': '1'}),
- ):
- self.assertIn('WITH_ENV', config)
-- self.assertEquals(NegativeOptionValue(), config['WITH_ENV'])
-+ self.assertEqual(NegativeOptionValue(), config['WITH_ENV'])
-
- for config in (
- self.get_config(['--enable-with-env']),
-@@ -145,7 +145,7 @@
- env={'MOZ_WITH_ENV': ''}),
- ):
- self.assertIn('WITH_ENV', config)
-- self.assertEquals(PositiveOptionValue(), config['WITH_ENV'])
-+ self.assertEqual(PositiveOptionValue(), config['WITH_ENV'])
-
- with self.assertRaises(InvalidOptionError):
- self.get_config(['--enable-with-env=value'])
-@@ -160,23 +160,23 @@
- self.get_config(['--enable-values', '--disable-values']),
- ):
- self.assertIn(name, config)
-- self.assertEquals(NegativeOptionValue(), config[name])
-+ self.assertEqual(NegativeOptionValue(), config[name])
-
- for config in (
- self.get_config(['--enable-values']),
- self.get_config(['--disable-values', '--enable-values']),
- ):
- self.assertIn(name, config)
-- self.assertEquals(PositiveOptionValue(), config[name])
-+ self.assertEqual(PositiveOptionValue(), config[name])
-
- config = self.get_config(['--enable-values=foo'])
- self.assertIn(name, config)
-- self.assertEquals(PositiveOptionValue(('foo',)), config[name])
-+ self.assertEqual(PositiveOptionValue(('foo',)), config[name])
-
- config = self.get_config(['--enable-values=foo,bar'])
- self.assertIn(name, config)
- self.assertTrue(config[name])
-- self.assertEquals(PositiveOptionValue(('foo', 'bar')), config[name])
-+ self.assertEqual(PositiveOptionValue(('foo', 'bar')), config[name])
-
- def test_values2(self):
- self.test_values('VALUES2')
-@@ -187,12 +187,12 @@
- def test_returned_default(self):
- config = self.get_config(['--enable-simple'])
- self.assertIn('DEFAULTED', config)
-- self.assertEquals(
-+ self.assertEqual(
- PositiveOptionValue(('simple',)), config['DEFAULTED'])
-
- config = self.get_config(['--disable-simple'])
- self.assertIn('DEFAULTED', config)
-- self.assertEquals(
-+ self.assertEqual(
- PositiveOptionValue(('not-simple',)), config['DEFAULTED'])
-
- def test_returned_choices(self):
-@@ -200,13 +200,13 @@
- config = self.get_config(
- ['--enable-values=alpha', '--returned-choices=%s' % val])
- self.assertIn('CHOICES', config)
-- self.assertEquals(PositiveOptionValue((val,)), config['CHOICES'])
-+ self.assertEqual(PositiveOptionValue((val,)), config['CHOICES'])
-
- for val in ('0', '1', '2'):
- config = self.get_config(
- ['--enable-values=numeric', '--returned-choices=%s' % val])
- self.assertIn('CHOICES', config)
-- self.assertEquals(PositiveOptionValue((val,)), config['CHOICES'])
-+ self.assertEqual(PositiveOptionValue((val,)), config['CHOICES'])
-
- with self.assertRaises(InvalidOptionError):
- self.get_config(['--enable-values=numeric',
-@@ -218,12 +218,12 @@
- def test_included(self):
- config = self.get_config(env={'CC': 'gcc'})
- self.assertIn('IS_GCC', config)
-- self.assertEquals(config['IS_GCC'], True)
-+ self.assertEqual(config['IS_GCC'], True)
-
- config = self.get_config(
- ['--enable-include=extra.configure', '--extra'])
- self.assertIn('EXTRA', config)
-- self.assertEquals(PositiveOptionValue(), config['EXTRA'])
-+ self.assertEqual(PositiveOptionValue(), config['EXTRA'])
-
- with self.assertRaises(InvalidOptionError):
- self.get_config(['--extra'])
-@@ -231,7 +231,7 @@
- def test_template(self):
- config = self.get_config(env={'CC': 'gcc'})
- self.assertIn('CFLAGS', config)
-- self.assertEquals(config['CFLAGS'], ['-Werror=foobar'])
-+ self.assertEqual(config['CFLAGS'], ['-Werror=foobar'])
-
- config = self.get_config(env={'CC': 'clang'})
- self.assertNotIn('CFLAGS', config)
-@@ -288,7 +288,7 @@
- sandbox
- )
-
-- import __builtin__
-+ import builtins
- self.assertIs(sandbox['foo'](), __builtin__)
-
- exec_(textwrap.dedent('''
-@@ -300,7 +300,7 @@
- )
-
- f = sandbox['foo']()
-- self.assertEquals(f.name, os.devnull)
-+ self.assertEqual(f.name, os.devnull)
- f.close()
-
- # This unlocks the sandbox
-@@ -336,8 +336,8 @@
- self.assertIs(sandbox['foo'](), sandbox)
-
- # Nothing leaked from the function being executed
-- self.assertEquals(sandbox.keys(), ['__builtins__', 'foo'])
-- self.assertEquals(sandbox['__builtins__'], ConfigureSandbox.BUILTINS)
-+ self.assertEqual(list(sandbox.keys()), ['__builtins__', 'foo'])
-+ self.assertEqual(sandbox['__builtins__'], ConfigureSandbox.BUILTINS)
-
- exec_(textwrap.dedent('''
- @template
-@@ -354,7 +354,7 @@
- with self.assertRaises(NameError) as e:
- sandbox._depends[sandbox['bar']].result
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "global name 'sys' is not defined")
-
- def test_apply_imports(self):
-@@ -380,28 +380,28 @@
- sandbox
- )
-
-- self.assertEquals(len(imports), 1)
-+ self.assertEqual(len(imports), 1)
-
- def test_os_path(self):
- config = self.get_config(['--with-imports=%s' % __file__])
- self.assertIn('HAS_ABSPATH', config)
-- self.assertEquals(config['HAS_ABSPATH'], True)
-+ self.assertEqual(config['HAS_ABSPATH'], True)
- self.assertIn('HAS_GETATIME', config)
-- self.assertEquals(config['HAS_GETATIME'], True)
-+ self.assertEqual(config['HAS_GETATIME'], True)
- self.assertIn('HAS_GETATIME2', config)
-- self.assertEquals(config['HAS_GETATIME2'], False)
-+ self.assertEqual(config['HAS_GETATIME2'], False)
-
- def test_template_call(self):
- config = self.get_config(env={'CC': 'gcc'})
- self.assertIn('TEMPLATE_VALUE', config)
-- self.assertEquals(config['TEMPLATE_VALUE'], 42)
-+ self.assertEqual(config['TEMPLATE_VALUE'], 42)
- self.assertIn('TEMPLATE_VALUE_2', config)
-- self.assertEquals(config['TEMPLATE_VALUE_2'], 21)
-+ self.assertEqual(config['TEMPLATE_VALUE_2'], 21)
-
- def test_template_imports(self):
- config = self.get_config(['--enable-imports-in-template'])
- self.assertIn('PLATFORM', config)
-- self.assertEquals(config['PLATFORM'], sys.platform)
-+ self.assertEqual(config['PLATFORM'], sys.platform)
-
- def test_decorators(self):
- config = {}
-@@ -419,27 +419,27 @@
- return self.get_config(*args, configure='set_config.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config(['--set-foo'])
- self.assertIn('FOO', config)
-- self.assertEquals(config['FOO'], True)
-+ self.assertEqual(config['FOO'], True)
-
- config = get_config(['--set-bar'])
- self.assertNotIn('FOO', config)
- self.assertIn('BAR', config)
-- self.assertEquals(config['BAR'], True)
-+ self.assertEqual(config['BAR'], True)
-
- config = get_config(['--set-value=qux'])
- self.assertIn('VALUE', config)
-- self.assertEquals(config['VALUE'], 'qux')
-+ self.assertEqual(config['VALUE'], 'qux')
-
- config = get_config(['--set-name=hoge'])
- self.assertIn('hoge', config)
-- self.assertEquals(config['hoge'], True)
-+ self.assertEqual(config['hoge'], True)
-
- config = get_config([])
-- self.assertEquals(config, {'BAR': False})
-+ self.assertEqual(config, {'BAR': False})
-
- with self.assertRaises(ConfigureError):
- # Both --set-foo and --set-name=FOO are going to try to
-@@ -454,11 +454,11 @@
- set_config('QUX', 'qux', when='--with-qux')
- '''):
- config = self.get_config()
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': 'foo',
- })
- config = self.get_config(['--with-qux'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': 'foo',
- 'QUX': 'qux',
- })
-@@ -468,27 +468,27 @@
- return self.get_config(*args, configure='set_define.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {'DEFINES': {}})
-+ self.assertEqual(config, {'DEFINES': {}})
-
- config = get_config(['--set-foo'])
- self.assertIn('FOO', config['DEFINES'])
-- self.assertEquals(config['DEFINES']['FOO'], True)
-+ self.assertEqual(config['DEFINES']['FOO'], True)
-
- config = get_config(['--set-bar'])
- self.assertNotIn('FOO', config['DEFINES'])
- self.assertIn('BAR', config['DEFINES'])
-- self.assertEquals(config['DEFINES']['BAR'], True)
-+ self.assertEqual(config['DEFINES']['BAR'], True)
-
- config = get_config(['--set-value=qux'])
- self.assertIn('VALUE', config['DEFINES'])
-- self.assertEquals(config['DEFINES']['VALUE'], 'qux')
-+ self.assertEqual(config['DEFINES']['VALUE'], 'qux')
-
- config = get_config(['--set-name=hoge'])
- self.assertIn('hoge', config['DEFINES'])
-- self.assertEquals(config['DEFINES']['hoge'], True)
-+ self.assertEqual(config['DEFINES']['hoge'], True)
-
- config = get_config([])
-- self.assertEquals(config['DEFINES'], {'BAR': False})
-+ self.assertEqual(config['DEFINES'], {'BAR': False})
-
- with self.assertRaises(ConfigureError):
- # Both --set-foo and --set-name=FOO are going to try to
-@@ -503,11 +503,11 @@
- set_define('QUX', 'qux', when='--with-qux')
- '''):
- config = self.get_config()
-- self.assertEquals(config['DEFINES'], {
-+ self.assertEqual(config['DEFINES'], {
- 'FOO': 'foo',
- })
- config = self.get_config(['--with-qux'])
-- self.assertEquals(config['DEFINES'], {
-+ self.assertEqual(config['DEFINES'], {
- 'FOO': 'foo',
- 'QUX': 'qux',
- })
-@@ -518,19 +518,19 @@
- *args, configure='imply_option/simple.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config([])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config(['--enable-foo'])
- self.assertIn('BAR', config)
-- self.assertEquals(config['BAR'], PositiveOptionValue())
-+ self.assertEqual(config['BAR'], PositiveOptionValue())
-
- with self.assertRaises(InvalidOptionError) as e:
- get_config(['--enable-foo', '--disable-bar'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- "'--enable-bar' implied by '--enable-foo' conflicts with "
- "'--disable-bar' from the command-line")
-@@ -541,31 +541,31 @@
- *args, configure='imply_option/negative.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config([])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config(['--enable-foo'])
- self.assertIn('BAR', config)
-- self.assertEquals(config['BAR'], NegativeOptionValue())
-+ self.assertEqual(config['BAR'], NegativeOptionValue())
-
- with self.assertRaises(InvalidOptionError) as e:
- get_config(['--enable-foo', '--enable-bar'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- "'--disable-bar' implied by '--enable-foo' conflicts with "
- "'--enable-bar' from the command-line")
-
- config = get_config(['--disable-hoge'])
- self.assertIn('BAR', config)
-- self.assertEquals(config['BAR'], NegativeOptionValue())
-+ self.assertEqual(config['BAR'], NegativeOptionValue())
-
- with self.assertRaises(InvalidOptionError) as e:
- get_config(['--disable-hoge', '--enable-bar'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- "'--disable-bar' implied by '--disable-hoge' conflicts with "
- "'--enable-bar' from the command-line")
-@@ -576,23 +576,23 @@
- *args, configure='imply_option/values.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config([])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config(['--enable-foo=a'])
- self.assertIn('BAR', config)
-- self.assertEquals(config['BAR'], PositiveOptionValue(('a',)))
-+ self.assertEqual(config['BAR'], PositiveOptionValue(('a',)))
-
- config = get_config(['--enable-foo=a,b'])
- self.assertIn('BAR', config)
-- self.assertEquals(config['BAR'], PositiveOptionValue(('a','b')))
-+ self.assertEqual(config['BAR'], PositiveOptionValue(('a','b')))
-
- with self.assertRaises(InvalidOptionError) as e:
- get_config(['--enable-foo=a,b', '--disable-bar'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- "'--enable-bar=a,b' implied by '--enable-foo' conflicts with "
- "'--disable-bar' from the command-line")
-@@ -603,15 +603,15 @@
- *args, configure='imply_option/infer.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config([])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- with self.assertRaises(InvalidOptionError) as e:
- get_config(['--enable-foo', '--disable-bar'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- "'--enable-bar' implied by '--enable-foo' conflicts with "
- "'--disable-bar' from the command-line")
-@@ -619,7 +619,7 @@
- with self.assertRaises(ConfigureError) as e:
- self.get_config([], configure='imply_option/infer_ko.configure')
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- "Cannot infer what implies '--enable-bar'. Please add a `reason` "
- "to the `imply_option` call.")
-@@ -630,25 +630,25 @@
- *args, configure='imply_option/imm.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config([])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config_path = mozpath.abspath(
- mozpath.join(test_data_path, 'imply_option', 'imm.configure'))
-
-- with self.assertRaisesRegexp(InvalidOptionError,
-+ with self.assertRaisesRegex(InvalidOptionError,
- "--enable-foo' implied by 'imply_option at %s:7' conflicts with "
- "'--disable-foo' from the command-line" % config_path):
- get_config(['--disable-foo'])
-
-- with self.assertRaisesRegexp(InvalidOptionError,
-+ with self.assertRaisesRegex(InvalidOptionError,
- "--enable-bar=foo,bar' implied by 'imply_option at %s:16' conflicts"
- " with '--enable-bar=a,b,c' from the command-line" % config_path):
- get_config(['--enable-bar=a,b,c'])
-
-- with self.assertRaisesRegexp(InvalidOptionError,
-+ with self.assertRaisesRegex(InvalidOptionError,
- "--enable-baz=BAZ' implied by 'imply_option at %s:25' conflicts"
- " with '--enable-baz=QUUX' from the command-line" % config_path):
- get_config(['--enable-baz=QUUX'])
-@@ -660,7 +660,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "`--with-foo`, emitted from `%s` line 2, is unknown."
- % mozpath.join(test_data_path, 'moz.configure'))
-
-@@ -675,7 +675,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Unexpected type: 'int'")
-
- def test_imply_option_when(self):
-@@ -686,12 +686,12 @@
- set_config('QUX', depends('--with-qux')(lambda x: x))
- '''):
- config = self.get_config()
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'QUX': NegativeOptionValue(),
- })
-
- config = self.get_config(['--with-foo'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'QUX': PositiveOptionValue(),
- })
-
-@@ -700,7 +700,7 @@
- with self.moz_configure('option("--with-foo", help="foo")'):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Option `--with-foo` is not handled ; reference it with a @depends'
- )
-@@ -712,7 +712,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Option `--with-foo` already defined'
- )
-@@ -724,7 +724,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Option `MOZ_FOO` already defined'
- )
-@@ -736,7 +736,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Option `MOZ_FOO` already defined'
- )
-@@ -748,7 +748,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Option `MOZ_FOO` already defined'
- )
-@@ -760,7 +760,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Option `--with-foo` already defined'
- )
-@@ -776,18 +776,18 @@
- set_config('QUX', depends('--with-qux', when='--with-foo')(lambda x: x))
- '''):
- config = self.get_config()
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': NegativeOptionValue(),
- })
-
- config = self.get_config(['--with-foo'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': PositiveOptionValue(),
- 'QUX': NegativeOptionValue(),
- })
-
- config = self.get_config(['--with-foo', '--with-qux'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': PositiveOptionValue(),
- 'QUX': PositiveOptionValue(),
- })
-@@ -795,7 +795,7 @@
- with self.assertRaises(InvalidOptionError) as e:
- self.get_config(['--with-bar'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- '--with-bar is not available in this configuration'
- )
-@@ -803,7 +803,7 @@
- with self.assertRaises(InvalidOptionError) as e:
- self.get_config(['--with-qux'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- '--with-qux is not available in this configuration'
- )
-@@ -811,18 +811,18 @@
- with self.assertRaises(InvalidOptionError) as e:
- self.get_config(['QUX=1'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'QUX is not available in this configuration'
- )
-
- config = self.get_config(env={'QUX': '1'})
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': NegativeOptionValue(),
- })
-
- help, config = self.get_config(['--help'])
-- self.assertEquals(help, textwrap.dedent('''\
-+ self.assertEqual(help, textwrap.dedent('''\
- Usage: configure [options]
-
- Options: [defaults in brackets after descriptions]
-@@ -833,7 +833,7 @@
- '''))
-
- help, config = self.get_config(['--help', '--with-foo'])
-- self.assertEquals(help, textwrap.dedent('''\
-+ self.assertEqual(help, textwrap.dedent('''\
- Usage: configure [options]
-
- Options: [defaults in brackets after descriptions]
-@@ -851,7 +851,7 @@
- with self.assertRaises(ConfigureError) as e:
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '@depends function needs the same `when` as '
- 'options it depends on')
-
-@@ -868,7 +868,7 @@
- with self.assertRaises(ConfigureError) as e:
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '@depends function needs the same `when` as '
- 'options it depends on')
-
-@@ -877,7 +877,7 @@
- with self.moz_configure('include("../foo.configure")'):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Cannot include `%s` because it is not in a subdirectory of `%s`'
- % (mozpath.normpath(mozpath.join(test_data_path, '..',
-@@ -892,7 +892,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Cannot include `%s` because it was included already.'
- % mozpath.normpath(mozpath.join(test_data_path,
-@@ -905,7 +905,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message, "Unexpected type: 'int'")
-+ self.assertEqual(e.exception.message, "Unexpected type: 'int'")
-
- def test_include_when(self):
- with MockedOpen({
-@@ -948,26 +948,26 @@
- '''),
- }):
- config = self.get_config()
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = self.get_config(['--with-foo'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = self.get_config(['--with-bar'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'BAR': 'bar',
- })
-
- with self.assertRaises(InvalidOptionError) as e:
- self.get_config(['--with-qux'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- '--with-qux is not available in this configuration'
- )
-
- config = self.get_config(['--with-foo', '--with-foo-really'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': 'foo',
- 'FOO2': True,
- })
-@@ -979,7 +979,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message, 'Cannot reassign builtins')
-+ self.assertEqual(e.exception.message, 'Cannot reassign builtins')
-
- with self.assertRaises(KeyError) as e:
- with self.moz_configure('''
-@@ -987,7 +987,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Cannot assign `foo` because it is neither a '
- '@depends nor a @template')
-
-@@ -1000,7 +1000,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "@depends needs at least one argument")
-
- with self.assertRaises(ConfigureError) as e:
-@@ -1011,7 +1011,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "'--with-foo' is not a known option. Maybe it's "
- "declared too late?")
-
-@@ -1023,7 +1023,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Option must not contain an '='")
-
- with self.assertRaises(TypeError) as e:
-@@ -1034,7 +1034,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Cannot use object of type 'int' as argument "
- "to @depends")
-
-@@ -1046,7 +1046,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Cannot decorate generator functions with @depends")
-
- with self.assertRaises(TypeError) as e:
-@@ -1055,7 +1055,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Unexpected type: 'int'")
-
- with self.assertRaises(ConfigureError) as e:
-@@ -1069,7 +1069,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The `foo` function may not be called")
-
- with self.assertRaises(TypeError) as e:
-@@ -1080,7 +1080,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "depends_impl() got an unexpected keyword argument 'foo'")
-
- def test_depends_when(self):
-@@ -1105,12 +1105,12 @@
- set_config('QUX', qux)
- '''):
- config = self.get_config()
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': 'foo',
- })
-
- config = self.get_config(['--with-qux'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': 'foo',
- 'QUX': 'qux',
- })
-@@ -1125,7 +1125,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '@imports must appear after @template')
-
- with self.assertRaises(ConfigureError) as e:
-@@ -1138,7 +1138,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '@imports must appear after @depends')
-
- for import_ in (
-@@ -1155,7 +1155,7 @@
- ''' % import_):
- self.get_config()
-
-- self.assertEquals(e.exception.message, "Unexpected type: 'int'")
-+ self.assertEqual(e.exception.message, "Unexpected type: 'int'")
-
- with self.assertRaises(TypeError) as e:
- with self.moz_configure('''
-@@ -1166,7 +1166,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message, "Unexpected type: 'int'")
-+ self.assertEqual(e.exception.message, "Unexpected type: 'int'")
-
- with self.assertRaises(ValueError) as e:
- with self.moz_configure('''
-@@ -1176,7 +1176,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Invalid argument to @imports: 'os*'")
-
- def test_only_when(self):
-@@ -1231,7 +1231,7 @@
- with self.assertRaises(InvalidOptionError) as e:
- self.get_config(['--foo'])
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--foo is not available in this configuration')
-
- # Cannot depend on an option defined in a only_when block, because we
-@@ -1242,7 +1242,7 @@
- with self.assertRaises(ConfigureError) as e:
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '@depends function needs the same `when` as '
- 'options it depends on')
-
-@@ -1259,7 +1259,7 @@
- with self.assertRaises(InvalidOptionError) as e:
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--foo is not available in this configuration')
-
- # And similarly doesn't fail when the condition is true.
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_lint.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_lint.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-
--from StringIO import StringIO
-+
-+from io import StringIO
- import os
- import textwrap
- import unittest
-@@ -62,7 +62,7 @@
- '''):
- self.lint_test()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "`bar` depends on '--help' and `foo`. "
- "`foo` must depend on '--help'")
-
-@@ -85,7 +85,7 @@
- '''):
- self.lint_test()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "`bar` depends on '--help' and `foo`. "
- "`foo` must depend on '--help'")
-
-@@ -111,7 +111,7 @@
- '''):
- self.lint_test()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Missing @depends for `foo`: '--help'")
-
- # There is a default restricted `os` module when there is no explicit
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_moz_configure.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_moz_configure.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- from mozunit import main
- from mozpack import path as mozpath
-@@ -23,10 +23,10 @@
- shell = mozpath.abspath('/bin/sh')
- return result.replace('CONFIG_SHELL=%s ' % shell, '')
-
-- self.assertEquals('--enable-application=browser',
-+ self.assertEqual('--enable-application=browser',
- get_value_for(['--enable-application=browser']))
-
-- self.assertEquals('--enable-application=browser '
-+ self.assertEqual('--enable-application=browser '
- 'MOZ_PROFILING=1',
- get_value_for(['--enable-application=browser',
- 'MOZ_PROFILING=1']))
-@@ -35,25 +35,25 @@
- environ={'MOZ_PROFILING': '1'},
- mozconfig='ac_add_options --enable-project=js')
-
-- self.assertEquals('--enable-project=js MOZ_PROFILING=1',
-+ self.assertEqual('--enable-project=js MOZ_PROFILING=1',
- value)
-
- # --disable-js-shell is the default, so it's filtered out.
-- self.assertEquals('--enable-application=browser',
-+ self.assertEqual('--enable-application=browser',
- get_value_for(['--enable-application=browser',
- '--disable-js-shell']))
-
- # Normally, --without-foo would be filtered out because that's the
- # default, but since it is a (fake) old-configure option, it always
- # appears.
-- self.assertEquals('--enable-application=browser --without-foo',
-+ self.assertEqual('--enable-application=browser --without-foo',
- get_value_for(['--enable-application=browser',
- '--without-foo']))
-- self.assertEquals('--enable-application=browser --with-foo',
-+ self.assertEqual('--enable-application=browser --with-foo',
- get_value_for(['--enable-application=browser',
- '--with-foo']))
-
-- self.assertEquals("--enable-application=browser '--with-foo=foo bar'",
-+ self.assertEqual("--enable-application=browser '--with-foo=foo bar'",
- get_value_for(['--enable-application=browser',
- '--with-foo=foo bar']))
-
-@@ -65,7 +65,7 @@
- self.version = version
-
- def __call__(self, stdin, args):
-- this.assertEquals(args, ('-version',))
-+ this.assertEqual(args, ('-version',))
- return 0, self.version, ''
-
- def check_nsis_version(version):
-@@ -80,13 +80,13 @@
- with self.assertRaises(SystemExit) as e:
- check_nsis_version('v3.0a2')
-
-- self.assertEquals(check_nsis_version('v3.0b1'), '3.0b1')
-- self.assertEquals(check_nsis_version('v3.0b2'), '3.0b2')
-- self.assertEquals(check_nsis_version('v3.0rc1'), '3.0rc1')
-- self.assertEquals(check_nsis_version('v3.0'), '3.0')
-- self.assertEquals(check_nsis_version('v3.0-2'), '3.0')
-- self.assertEquals(check_nsis_version('v3.0.1'), '3.0')
-- self.assertEquals(check_nsis_version('v3.1'), '3.1')
-+ self.assertEqual(check_nsis_version('v3.0b1'), '3.0b1')
-+ self.assertEqual(check_nsis_version('v3.0b2'), '3.0b2')
-+ self.assertEqual(check_nsis_version('v3.0rc1'), '3.0rc1')
-+ self.assertEqual(check_nsis_version('v3.0'), '3.0')
-+ self.assertEqual(check_nsis_version('v3.0-2'), '3.0')
-+ self.assertEqual(check_nsis_version('v3.0.1'), '3.0')
-+ self.assertEqual(check_nsis_version('v3.1'), '3.1')
-
-
- if __name__ == '__main__':
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_options.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_options.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import unittest
-
-@@ -27,139 +27,139 @@
- class TestOption(unittest.TestCase):
- def test_option(self):
- option = Option('--option')
-- self.assertEquals(option.prefix, '')
-- self.assertEquals(option.name, 'option')
-- self.assertEquals(option.env, None)
-+ self.assertEqual(option.prefix, '')
-+ self.assertEqual(option.name, 'option')
-+ self.assertEqual(option.env, None)
- self.assertFalse(option.default)
-
- option = Option('--enable-option')
-- self.assertEquals(option.prefix, 'enable')
-- self.assertEquals(option.name, 'option')
-- self.assertEquals(option.env, None)
-+ self.assertEqual(option.prefix, 'enable')
-+ self.assertEqual(option.name, 'option')
-+ self.assertEqual(option.env, None)
- self.assertFalse(option.default)
-
- option = Option('--disable-option')
-- self.assertEquals(option.prefix, 'disable')
-- self.assertEquals(option.name, 'option')
-- self.assertEquals(option.env, None)
-+ self.assertEqual(option.prefix, 'disable')
-+ self.assertEqual(option.name, 'option')
-+ self.assertEqual(option.env, None)
- self.assertTrue(option.default)
-
- option = Option('--with-option')
-- self.assertEquals(option.prefix, 'with')
-- self.assertEquals(option.name, 'option')
-- self.assertEquals(option.env, None)
-+ self.assertEqual(option.prefix, 'with')
-+ self.assertEqual(option.name, 'option')
-+ self.assertEqual(option.env, None)
- self.assertFalse(option.default)
-
- option = Option('--without-option')
-- self.assertEquals(option.prefix, 'without')
-- self.assertEquals(option.name, 'option')
-- self.assertEquals(option.env, None)
-+ self.assertEqual(option.prefix, 'without')
-+ self.assertEqual(option.name, 'option')
-+ self.assertEqual(option.env, None)
- self.assertTrue(option.default)
-
- option = Option('--without-option-foo', env='MOZ_OPTION')
-- self.assertEquals(option.env, 'MOZ_OPTION')
-+ self.assertEqual(option.env, 'MOZ_OPTION')
-
- option = Option(env='MOZ_OPTION')
-- self.assertEquals(option.prefix, '')
-- self.assertEquals(option.name, None)
-- self.assertEquals(option.env, 'MOZ_OPTION')
-+ self.assertEqual(option.prefix, '')
-+ self.assertEqual(option.name, None)
-+ self.assertEqual(option.env, 'MOZ_OPTION')
- self.assertFalse(option.default)
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=0, default=('a',))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=1, default=())
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'default must be a bool, a string or a tuple of strings')
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=1, default=True)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=1, default=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=2, default=())
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'default must be a bool, a string or a tuple of strings')
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=2, default=True)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=2, default=('a',))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs='?', default=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs='+', default=())
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'default must be a bool, a string or a tuple of strings')
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs='+', default=True)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- # --disable options with a nargs value that requires at least one
- # argument need to be given a default.
- with self.assertRaises(InvalidOptionError) as e:
- Option('--disable-option', nargs=1)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--disable-option', nargs='+')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- # Test nargs inference from default value
- option = Option('--with-foo', default=True)
-- self.assertEquals(option.nargs, 0)
-+ self.assertEqual(option.nargs, 0)
-
- option = Option('--with-foo', default=False)
-- self.assertEquals(option.nargs, 0)
-+ self.assertEqual(option.nargs, 0)
-
- option = Option('--with-foo', default='a')
-- self.assertEquals(option.nargs, '?')
-+ self.assertEqual(option.nargs, '?')
-
- option = Option('--with-foo', default=('a',))
-- self.assertEquals(option.nargs, '?')
-+ self.assertEqual(option.nargs, '?')
-
- option = Option('--with-foo', default=('a', 'b'))
-- self.assertEquals(option.nargs, '*')
-+ self.assertEqual(option.nargs, '*')
-
- option = Option(env='FOO', default=True)
-- self.assertEquals(option.nargs, 0)
-+ self.assertEqual(option.nargs, 0)
-
- option = Option(env='FOO', default=False)
-- self.assertEquals(option.nargs, 0)
-+ self.assertEqual(option.nargs, 0)
-
- option = Option(env='FOO', default='a')
-- self.assertEquals(option.nargs, '?')
-+ self.assertEqual(option.nargs, '?')
-
- option = Option(env='FOO', default=('a',))
-- self.assertEquals(option.nargs, '?')
-+ self.assertEqual(option.nargs, '?')
-
- option = Option(env='FOO', default=('a', 'b'))
-- self.assertEquals(option.nargs, '*')
-+ self.assertEqual(option.nargs, '*')
-
- def test_option_option(self):
- for option in (
-@@ -169,70 +169,70 @@
- '--with-option',
- '--without-option',
- ):
-- self.assertEquals(Option(option).option, option)
-- self.assertEquals(Option(option, env='FOO').option, option)
-+ self.assertEqual(Option(option).option, option)
-+ self.assertEqual(Option(option, env='FOO').option, option)
-
- opt = Option(option, default=False)
-- self.assertEquals(opt.option,
-+ self.assertEqual(opt.option,
- option.replace('-disable-', '-enable-')
- .replace('-without-', '-with-'))
-
- opt = Option(option, default=True)
-- self.assertEquals(opt.option,
-+ self.assertEqual(opt.option,
- option.replace('-enable-', '-disable-')
- .replace('-with-', '-without-'))
-
-- self.assertEquals(Option(env='FOO').option, 'FOO')
-+ self.assertEqual(Option(env='FOO').option, 'FOO')
-
- def test_option_choices(self):
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=3, choices=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Not enough `choices` for `nargs`')
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--without-option', nargs=1, choices=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'A `default` must be given along with `choices`')
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--without-option', nargs='+', choices=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'A `default` must be given along with `choices`')
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--without-option', default='c', choices=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The `default` value must be one of 'a', 'b'")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--without-option', default=('a', 'c',), choices=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The `default` value must be one of 'a', 'b'")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--without-option', default=('c',), choices=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The `default` value must be one of 'a', 'b'")
-
- option = Option('--with-option', nargs='+', choices=('a', 'b'))
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--with-option=c')
-- self.assertEquals(e.exception.message, "'c' is not one of 'a', 'b'")
-+ self.assertEqual(e.exception.message, "'c' is not one of 'a', 'b'")
-
- value = option.get_value('--with-option=b,a')
- self.assertTrue(value)
-- self.assertEquals(PositiveOptionValue(('b', 'a')), value)
-+ self.assertEqual(PositiveOptionValue(('b', 'a')), value)
-
- option = Option('--without-option', nargs='*', default='a',
- choices=('a', 'b'))
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--with-option=c')
-- self.assertEquals(e.exception.message, "'c' is not one of 'a', 'b'")
-+ self.assertEqual(e.exception.message, "'c' is not one of 'a', 'b'")
-
- value = option.get_value('--with-option=b,a')
- self.assertTrue(value)
-- self.assertEquals(PositiveOptionValue(('b', 'a')), value)
-+ self.assertEqual(PositiveOptionValue(('b', 'a')), value)
-
- # Test nargs inference from choices
- option = Option('--with-option', choices=('a', 'b'))
-@@ -243,71 +243,71 @@
- choices=('a', 'b', 'c', 'd'))
-
- value = option.get_value('--with-option=+d')
-- self.assertEquals(PositiveOptionValue(('b', 'c', 'd')), value)
-+ self.assertEqual(PositiveOptionValue(('b', 'c', 'd')), value)
-
- value = option.get_value('--with-option=-b')
-- self.assertEquals(PositiveOptionValue(('c',)), value)
-+ self.assertEqual(PositiveOptionValue(('c',)), value)
-
- value = option.get_value('--with-option=-b,+d')
-- self.assertEquals(PositiveOptionValue(('c','d')), value)
-+ self.assertEqual(PositiveOptionValue(('c','d')), value)
-
- # Adding something that is in the default is fine
- value = option.get_value('--with-option=+b')
-- self.assertEquals(PositiveOptionValue(('b', 'c')), value)
-+ self.assertEqual(PositiveOptionValue(('b', 'c')), value)
-
- # Removing something that is not in the default is fine, as long as it
- # is one of the choices
- value = option.get_value('--with-option=-a')
-- self.assertEquals(PositiveOptionValue(('b', 'c')), value)
-+ self.assertEqual(PositiveOptionValue(('b', 'c')), value)
-
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--with-option=-e')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "'e' is not one of 'a', 'b', 'c', 'd'")
-
- # Other "not a choice" errors.
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--with-option=+e')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "'e' is not one of 'a', 'b', 'c', 'd'")
-
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--with-option=e')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "'e' is not one of 'a', 'b', 'c', 'd'")
-
- def test_option_value_format(self):
- val = PositiveOptionValue()
-- self.assertEquals('--with-value', val.format('--with-value'))
-- self.assertEquals('--with-value', val.format('--without-value'))
-- self.assertEquals('--enable-value', val.format('--enable-value'))
-- self.assertEquals('--enable-value', val.format('--disable-value'))
-- self.assertEquals('--value', val.format('--value'))
-- self.assertEquals('VALUE=1', val.format('VALUE'))
-+ self.assertEqual('--with-value', val.format('--with-value'))
-+ self.assertEqual('--with-value', val.format('--without-value'))
-+ self.assertEqual('--enable-value', val.format('--enable-value'))
-+ self.assertEqual('--enable-value', val.format('--disable-value'))
-+ self.assertEqual('--value', val.format('--value'))
-+ self.assertEqual('VALUE=1', val.format('VALUE'))
-
- val = PositiveOptionValue(('a',))
-- self.assertEquals('--with-value=a', val.format('--with-value'))
-- self.assertEquals('--with-value=a', val.format('--without-value'))
-- self.assertEquals('--enable-value=a', val.format('--enable-value'))
-- self.assertEquals('--enable-value=a', val.format('--disable-value'))
-- self.assertEquals('--value=a', val.format('--value'))
-- self.assertEquals('VALUE=a', val.format('VALUE'))
-+ self.assertEqual('--with-value=a', val.format('--with-value'))
-+ self.assertEqual('--with-value=a', val.format('--without-value'))
-+ self.assertEqual('--enable-value=a', val.format('--enable-value'))
-+ self.assertEqual('--enable-value=a', val.format('--disable-value'))
-+ self.assertEqual('--value=a', val.format('--value'))
-+ self.assertEqual('VALUE=a', val.format('VALUE'))
-
- val = PositiveOptionValue(('a', 'b'))
-- self.assertEquals('--with-value=a,b', val.format('--with-value'))
-- self.assertEquals('--with-value=a,b', val.format('--without-value'))
-- self.assertEquals('--enable-value=a,b', val.format('--enable-value'))
-- self.assertEquals('--enable-value=a,b', val.format('--disable-value'))
-- self.assertEquals('--value=a,b', val.format('--value'))
-- self.assertEquals('VALUE=a,b', val.format('VALUE'))
-+ self.assertEqual('--with-value=a,b', val.format('--with-value'))
-+ self.assertEqual('--with-value=a,b', val.format('--without-value'))
-+ self.assertEqual('--enable-value=a,b', val.format('--enable-value'))
-+ self.assertEqual('--enable-value=a,b', val.format('--disable-value'))
-+ self.assertEqual('--value=a,b', val.format('--value'))
-+ self.assertEqual('VALUE=a,b', val.format('VALUE'))
-
- val = NegativeOptionValue()
-- self.assertEquals('--without-value', val.format('--with-value'))
-- self.assertEquals('--without-value', val.format('--without-value'))
-- self.assertEquals('--disable-value', val.format('--enable-value'))
-- self.assertEquals('--disable-value', val.format('--disable-value'))
-- self.assertEquals('', val.format('--value'))
-- self.assertEquals('VALUE=', val.format('VALUE'))
-+ self.assertEqual('--without-value', val.format('--with-value'))
-+ self.assertEqual('--without-value', val.format('--without-value'))
-+ self.assertEqual('--disable-value', val.format('--enable-value'))
-+ self.assertEqual('--disable-value', val.format('--disable-value'))
-+ self.assertEqual('', val.format('--value'))
-+ self.assertEqual('VALUE=', val.format('VALUE'))
-
- def test_option_value(self, name='option', nargs=0, default=None):
- disabled = name.startswith(('disable-', 'without-'))
-@@ -324,28 +324,28 @@
-
- if nargs in (0, '?', '*') or disabled:
- value = option.get_value('--%s' % name, 'option')
-- self.assertEquals(value, posOptionValue())
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, posOptionValue())
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s' % name)
- if nargs == 1:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes 1 value' % name)
- elif nargs == '+':
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes 1 or more values' % name)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes 2 values' % name)
-
- value = option.get_value('')
-- self.assertEquals(value, defaultValue)
-- self.assertEquals(value.origin, 'default')
-+ self.assertEqual(value, defaultValue)
-+ self.assertEqual(value.origin, 'default')
-
- value = option.get_value(None)
-- self.assertEquals(value, defaultValue)
-- self.assertEquals(value.origin, 'default')
-+ self.assertEqual(value, defaultValue)
-+ self.assertEqual(value.origin, 'default')
-
- with self.assertRaises(AssertionError):
- value = option.get_value('MOZ_OPTION=', 'environment')
-@@ -358,47 +358,47 @@
-
- if nargs in (1, '?', '*', '+') and not disabled:
- value = option.get_value('--%s=' % name, 'option')
-- self.assertEquals(value, PositiveOptionValue(('',)))
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, PositiveOptionValue(('',)))
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s=' % name)
- if disabled:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Cannot pass a value to --%s' % name)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes %d values' % (name, nargs))
-
- if nargs in (1, '?', '*', '+') and not disabled:
- value = option.get_value('--%s=foo' % name, 'option')
-- self.assertEquals(value, PositiveOptionValue(('foo',)))
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, PositiveOptionValue(('foo',)))
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s=foo' % name)
- if disabled:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Cannot pass a value to --%s' % name)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes %d values' % (name, nargs))
-
- if nargs in (2, '*', '+') and not disabled:
- value = option.get_value('--%s=foo,bar' % name, 'option')
-- self.assertEquals(value, PositiveOptionValue(('foo', 'bar')))
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, PositiveOptionValue(('foo', 'bar')))
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s=foo,bar' % name, 'option')
- if disabled:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Cannot pass a value to --%s' % name)
- elif nargs == '?':
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes 0 or 1 values' % name)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes %d value%s'
- % (name, nargs, 's' if nargs != 1 else ''))
-
-@@ -406,59 +406,59 @@
- default=default)
- if nargs in (0, '?', '*') or disabled:
- value = option.get_value('--%s' % name, 'option')
-- self.assertEquals(value, posOptionValue())
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, posOptionValue())
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s' % name)
- if disabled:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Cannot pass a value to --%s' % name)
- elif nargs == '+':
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes 1 or more values' % name)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes %d value%s'
- % (name, nargs, 's' if nargs != 1 else ''))
-
- value = option.get_value('')
-- self.assertEquals(value, defaultValue)
-- self.assertEquals(value.origin, 'default')
-+ self.assertEqual(value, defaultValue)
-+ self.assertEqual(value.origin, 'default')
-
- value = option.get_value(None)
-- self.assertEquals(value, defaultValue)
-- self.assertEquals(value.origin, 'default')
-+ self.assertEqual(value, defaultValue)
-+ self.assertEqual(value.origin, 'default')
-
- value = option.get_value('MOZ_OPTION=', 'environment')
-- self.assertEquals(value, NegativeOptionValue())
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, NegativeOptionValue())
-+ self.assertEqual(value.origin, 'environment')
-
- if nargs in (0, '?', '*'):
- value = option.get_value('MOZ_OPTION=1', 'environment')
-- self.assertEquals(value, PositiveOptionValue())
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue())
-+ self.assertEqual(value.origin, 'environment')
- elif nargs in (1, '+'):
- value = option.get_value('MOZ_OPTION=1', 'environment')
-- self.assertEquals(value, PositiveOptionValue(('1',)))
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue(('1',)))
-+ self.assertEqual(value.origin, 'environment')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('MOZ_OPTION=1', 'environment')
-- self.assertEquals(e.exception.message, 'MOZ_OPTION takes 2 values')
-+ self.assertEqual(e.exception.message, 'MOZ_OPTION takes 2 values')
-
- if nargs in (1, '?', '*', '+') and not disabled:
- value = option.get_value('--%s=' % name, 'option')
-- self.assertEquals(value, PositiveOptionValue(('',)))
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, PositiveOptionValue(('',)))
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s=' % name, 'option')
- if disabled:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Cannot pass a value to --%s' % name)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes %d values' % (name, nargs))
-
- with self.assertRaises(AssertionError):
-@@ -466,26 +466,26 @@
-
- if nargs in (1, '?', '*', '+'):
- value = option.get_value('MOZ_OPTION=foo', 'environment')
-- self.assertEquals(value, PositiveOptionValue(('foo',)))
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue(('foo',)))
-+ self.assertEqual(value.origin, 'environment')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('MOZ_OPTION=foo', 'environment')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'MOZ_OPTION takes %d values' % nargs)
-
- if nargs in (2, '*', '+'):
- value = option.get_value('MOZ_OPTION=foo,bar', 'environment')
-- self.assertEquals(value, PositiveOptionValue(('foo', 'bar')))
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue(('foo', 'bar')))
-+ self.assertEqual(value.origin, 'environment')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('MOZ_OPTION=foo,bar', 'environment')
- if nargs == '?':
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'MOZ_OPTION takes 0 or 1 values')
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'MOZ_OPTION takes %d value%s'
- % (nargs, 's' if nargs != 1 else ''))
-
-@@ -497,26 +497,26 @@
- env_option.get_value('--%s' % name)
-
- value = env_option.get_value('')
-- self.assertEquals(value, defaultValue)
-- self.assertEquals(value.origin, 'default')
-+ self.assertEqual(value, defaultValue)
-+ self.assertEqual(value.origin, 'default')
-
- value = env_option.get_value('MOZ_OPTION=', 'environment')
-- self.assertEquals(value, negOptionValue())
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, negOptionValue())
-+ self.assertEqual(value.origin, 'environment')
-
- if nargs in (0, '?', '*'):
- value = env_option.get_value('MOZ_OPTION=1', 'environment')
-- self.assertEquals(value, posOptionValue())
-+ self.assertEqual(value, posOptionValue())
- self.assertTrue(value)
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value.origin, 'environment')
- elif nargs in (1, '+'):
- value = env_option.get_value('MOZ_OPTION=1', 'environment')
-- self.assertEquals(value, PositiveOptionValue(('1',)))
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue(('1',)))
-+ self.assertEqual(value.origin, 'environment')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- env_option.get_value('MOZ_OPTION=1', 'environment')
-- self.assertEquals(e.exception.message, 'MOZ_OPTION takes 2 values')
-+ self.assertEqual(e.exception.message, 'MOZ_OPTION takes 2 values')
-
- with self.assertRaises(AssertionError) as e:
- env_option.get_value('--%s' % name)
-@@ -526,26 +526,26 @@
-
- if nargs in (1, '?', '*', '+'):
- value = env_option.get_value('MOZ_OPTION=foo', 'environment')
-- self.assertEquals(value, PositiveOptionValue(('foo',)))
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue(('foo',)))
-+ self.assertEqual(value.origin, 'environment')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- env_option.get_value('MOZ_OPTION=foo', 'environment')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'MOZ_OPTION takes %d values' % nargs)
-
- if nargs in (2, '*', '+'):
- value = env_option.get_value('MOZ_OPTION=foo,bar', 'environment')
-- self.assertEquals(value, PositiveOptionValue(('foo', 'bar')))
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue(('foo', 'bar')))
-+ self.assertEqual(value.origin, 'environment')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- env_option.get_value('MOZ_OPTION=foo,bar', 'environment')
- if nargs == '?':
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'MOZ_OPTION takes 0 or 1 values')
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'MOZ_OPTION takes %d value%s'
- % (nargs, 's' if nargs != 1 else ''))
-
-@@ -557,28 +557,28 @@
- default=default)
-
- value = option.get_value('--%s-option' % disable, 'option')
-- self.assertEquals(value, NegativeOptionValue())
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, NegativeOptionValue())
-+ self.assertEqual(value.origin, 'option')
-
- option = self.test_option_value('%s-option' % disable, nargs=nargs,
- default=default)
-
- if nargs in (0, '?', '*'):
- value = option.get_value('--%s-option' % enable, 'option')
-- self.assertEquals(value, PositiveOptionValue())
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, PositiveOptionValue())
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s-option' % enable, 'option')
- if nargs == 1:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s-option takes 1 value' % enable)
- elif nargs == '+':
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s-option takes 1 or more values'
- % enable)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s-option takes 2 values' % enable)
-
- def test_option_value_with(self):
-@@ -587,12 +587,12 @@
- def test_option_value_invalid_nargs(self):
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs='foo')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "nargs must be a positive integer, '?', '*' or '+'")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=-2)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "nargs must be a positive integer, '?', '*' or '+'")
-
- def test_option_value_nargs_1(self):
-@@ -603,7 +603,7 @@
- # A default is required
- with self.assertRaises(InvalidOptionError) as e:
- Option('--disable-option', nargs=1)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- def test_option_value_nargs_2(self):
-@@ -614,7 +614,7 @@
- # A default is required
- with self.assertRaises(InvalidOptionError) as e:
- Option('--disable-option', nargs=2)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- def test_option_value_nargs_0_or_1(self):
-@@ -641,7 +641,7 @@
- # A default is required
- with self.assertRaises(InvalidOptionError) as e:
- Option('--disable-option', nargs='+')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
-
-@@ -649,109 +649,109 @@
- def test_basic(self):
- helper = CommandLineHelper({}, ['cmd', '--foo', '--bar'])
-
-- self.assertEquals(['--foo', '--bar'], list(helper))
-+ self.assertEqual(['--foo', '--bar'], list(helper))
-
- helper.add('--enable-qux')
-
-- self.assertEquals(['--foo', '--bar', '--enable-qux'], list(helper))
-+ self.assertEqual(['--foo', '--bar', '--enable-qux'], list(helper))
-
- value, option = helper.handle(Option('--bar'))
-- self.assertEquals(['--foo', '--enable-qux'], list(helper))
-- self.assertEquals(PositiveOptionValue(), value)
-- self.assertEquals('--bar', option)
-+ self.assertEqual(['--foo', '--enable-qux'], list(helper))
-+ self.assertEqual(PositiveOptionValue(), value)
-+ self.assertEqual('--bar', option)
-
- value, option = helper.handle(Option('--baz'))
-- self.assertEquals(['--foo', '--enable-qux'], list(helper))
-- self.assertEquals(NegativeOptionValue(), value)
-- self.assertEquals(None, option)
-+ self.assertEqual(['--foo', '--enable-qux'], list(helper))
-+ self.assertEqual(NegativeOptionValue(), value)
-+ self.assertEqual(None, option)
-
- def test_precedence(self):
- foo = Option('--with-foo', nargs='*')
- helper = CommandLineHelper({}, ['cmd', '--with-foo=a,b'])
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--with-foo=a,b', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--with-foo=a,b', option)
-
- helper = CommandLineHelper({}, ['cmd', '--with-foo=a,b',
- '--without-foo'])
- value, option = helper.handle(foo)
-- self.assertEquals(NegativeOptionValue(), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--without-foo', option)
-+ self.assertEqual(NegativeOptionValue(), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--without-foo', option)
-
- helper = CommandLineHelper({}, ['cmd', '--without-foo',
- '--with-foo=a,b'])
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--with-foo=a,b', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--with-foo=a,b', option)
-
- foo = Option('--with-foo', env='FOO', nargs='*')
- helper = CommandLineHelper({'FOO': ''}, ['cmd', '--with-foo=a,b'])
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--with-foo=a,b', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--with-foo=a,b', option)
-
- helper = CommandLineHelper({'FOO': 'a,b'}, ['cmd', '--without-foo'])
- value, option = helper.handle(foo)
-- self.assertEquals(NegativeOptionValue(), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--without-foo', option)
-+ self.assertEqual(NegativeOptionValue(), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--without-foo', option)
-
- helper = CommandLineHelper({'FOO': ''}, ['cmd', '--with-bar=a,b'])
- value, option = helper.handle(foo)
-- self.assertEquals(NegativeOptionValue(), value)
-- self.assertEquals('environment', value.origin)
-- self.assertEquals('FOO=', option)
-+ self.assertEqual(NegativeOptionValue(), value)
-+ self.assertEqual('environment', value.origin)
-+ self.assertEqual('FOO=', option)
-
- helper = CommandLineHelper({'FOO': 'a,b'}, ['cmd', '--without-bar'])
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
-- self.assertEquals('environment', value.origin)
-- self.assertEquals('FOO=a,b', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+ self.assertEqual('environment', value.origin)
-+ self.assertEqual('FOO=a,b', option)
-
- helper = CommandLineHelper({}, ['cmd', '--with-foo=a,b', 'FOO='])
- value, option = helper.handle(foo)
-- self.assertEquals(NegativeOptionValue(), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('FOO=', option)
-+ self.assertEqual(NegativeOptionValue(), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('FOO=', option)
-
- helper = CommandLineHelper({}, ['cmd', '--without-foo', 'FOO=a,b'])
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('FOO=a,b', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('FOO=a,b', option)
-
- helper = CommandLineHelper({}, ['cmd', 'FOO=', '--with-foo=a,b'])
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--with-foo=a,b', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--with-foo=a,b', option)
-
- helper = CommandLineHelper({}, ['cmd', 'FOO=a,b', '--without-foo'])
- value, option = helper.handle(foo)
-- self.assertEquals(NegativeOptionValue(), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--without-foo', option)
-+ self.assertEqual(NegativeOptionValue(), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--without-foo', option)
-
- def test_extra_args(self):
- foo = Option('--with-foo', env='FOO', nargs='*')
- helper = CommandLineHelper({}, ['cmd'])
- helper.add('FOO=a,b,c', 'other-origin')
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
-- self.assertEquals('other-origin', value.origin)
-- self.assertEquals('FOO=a,b,c', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
-+ self.assertEqual('other-origin', value.origin)
-+ self.assertEqual('FOO=a,b,c', option)
-
- helper = CommandLineHelper({}, ['cmd'])
- helper.add('FOO=a,b,c', 'other-origin')
- helper.add('--with-foo=a,b,c', 'other-origin')
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
-- self.assertEquals('other-origin', value.origin)
-- self.assertEquals('--with-foo=a,b,c', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
-+ self.assertEqual('other-origin', value.origin)
-+ self.assertEqual('--with-foo=a,b,c', option)
-
- # Adding conflicting options is not allowed.
- helper = CommandLineHelper({}, ['cmd'])
-@@ -771,9 +771,9 @@
- # But adding the same is allowed.
- helper.add('FOO=a,b,c', 'other-origin')
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
-- self.assertEquals('other-origin', value.origin)
-- self.assertEquals('FOO=a,b,c', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
-+ self.assertEqual('other-origin', value.origin)
-+ self.assertEqual('FOO=a,b,c', option)
-
- # The same rule as above applies when using the option form vs. the
- # variable form. But we can't detect it when .add is called.
-@@ -799,9 +799,9 @@
- helper.add('FOO=a,b,c', 'other-origin')
- helper.add('--with-foo=a,b,c', 'other-origin')
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
-- self.assertEquals('other-origin', value.origin)
-- self.assertEquals('--with-foo=a,b,c', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
-+ self.assertEqual('other-origin', value.origin)
-+ self.assertEqual('--with-foo=a,b,c', option)
-
- # Conflicts are also not allowed against what is in the
- # environment/on the command line.
-@@ -831,19 +831,19 @@
- foo = Option('--foo',
- possible_origins=('command-line',))
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--foo', option)
-+ self.assertEqual(PositiveOptionValue(), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--foo', option)
-
- bar = Option('--bar',
- possible_origins=('mozconfig',))
-- with self.assertRaisesRegexp(InvalidOptionError,
-+ with self.assertRaisesRegex(InvalidOptionError,
- "--bar can not be set by command-line. Values are accepted from: mozconfig"):
- helper.handle(bar)
-
- baz = Option(env='BAZ',
- possible_origins=('implied',))
-- with self.assertRaisesRegexp(InvalidOptionError,
-+ with self.assertRaisesRegex(InvalidOptionError,
- "BAZ=1 can not be set by environment. Values are accepted from: implied"):
- helper.handle(baz)
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py (refactored)
-@@ -2,12 +2,12 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import logging
- import os
-
--from StringIO import StringIO
-+from io import StringIO
-
- from mozunit import main
-
-@@ -291,9 +291,9 @@
- compiler = sandbox._value_for(sandbox[var])
- # Add var on both ends to make it clear which of the
- # variables is failing the test when that happens.
-- self.assertEquals((var, compiler), (var, result))
-+ self.assertEqual((var, compiler), (var, result))
- except SystemExit:
-- self.assertEquals((var, result),
-+ self.assertEqual((var, result),
- (var, self.out.getvalue().strip()))
- return
-
-@@ -471,7 +471,7 @@
- # We'll try gcc and clang, but since there is no gcc (gcc-x.y doesn't
- # count), find clang.
- paths = {
-- k: v for k, v in self.PATHS.iteritems()
-+ k: v for k, v in self.PATHS.items()
- if os.path.basename(k) not in ('gcc', 'g++')
- }
- self.do_toolchain_test(paths, {
-@@ -506,7 +506,7 @@
- # Even if there are gcc-x.y or clang-x.y compilers available, we
- # don't try them. This could be considered something to improve.
- paths = {
-- k: v for k, v in self.PATHS.iteritems()
-+ k: v for k, v in self.PATHS.items()
- if os.path.basename(k) not in ('gcc', 'g++', 'clang', 'clang++')
- }
- self.do_toolchain_test(paths, {
-@@ -687,7 +687,7 @@
- def test_not_gcc(self):
- # We won't pick GCC if it's the only thing available.
- paths = {
-- k: v for k, v in self.PATHS.iteritems()
-+ k: v for k, v in self.PATHS.items()
- if os.path.basename(k) not in ('clang', 'clang++')
- }
- self.do_toolchain_test(paths, {
-@@ -851,7 +851,7 @@
- def test_clang_cl(self):
- # We'll pick clang-cl if msvc can't be found.
- paths = {
-- k: v for k, v in self.PATHS.iteritems()
-+ k: v for k, v in self.PATHS.items()
- if os.path.basename(k) != 'cl'
- }
- self.do_toolchain_test(paths, {
-@@ -862,7 +862,7 @@
- def test_gcc(self):
- # We'll pick GCC if msvc and clang-cl can't be found.
- paths = {
-- k: v for k, v in self.PATHS.iteritems()
-+ k: v for k, v in self.PATHS.items()
- if os.path.basename(k) not in ('cl', 'clang-cl')
- }
- self.do_toolchain_test(paths, {
-@@ -881,7 +881,7 @@
- def test_clang(self):
- # We'll pick clang if nothing else is found.
- paths = {
-- k: v for k, v in self.PATHS.iteritems()
-+ k: v for k, v in self.PATHS.items()
- if os.path.basename(k) not in ('cl', 'clang-cl', 'gcc')
- }
- self.do_toolchain_test(paths, {
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_toolchain_helpers.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_toolchain_helpers.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import copy
- import re
-@@ -10,7 +10,7 @@
- import unittest
-
- from fnmatch import fnmatch
--from StringIO import StringIO
-+from io import StringIO
- from textwrap import dedent
-
- from mozunit import (
-@@ -43,7 +43,7 @@
- # Hack around it enough that the configure tests work properly.
- context = self.context
- def normalize_numbers(value):
-- if isinstance(value, types.StringTypes):
-+ if isinstance(value, (str,)):
- if value[-1:] == 'L' and value[:-1].isdigit():
- value = int(value[:-1])
- return value
-@@ -53,7 +53,7 @@
- return self.HAS_FEATURE.sub(r'\1\2', expr)
- self.context = self.Context(
- (normalize_has_feature(k), normalize_numbers(v))
-- for k, v in context.iteritems()
-+ for k, v in context.items()
- )
- try:
- return Preprocessor.do_if(self, normalize_has_feature(expression),
-@@ -95,7 +95,7 @@
- input.name = 'foo'
- pp.do_include(input)
-
-- self.assertEquals(pp.out.getvalue(), '1 . 2 . c "D"')
-+ self.assertEqual(pp.out.getvalue(), '1 . 2 . c "D"')
-
- def test_condition(self):
- pp = CompilerPreprocessor({
-@@ -125,7 +125,7 @@
- input.name = 'foo'
- pp.do_include(input)
-
-- self.assertEquals('IFDEF_A\nIF_A\nIF_B\nIF_NOT_C\n', pp.out.getvalue())
-+ self.assertEqual('IFDEF_A\nIF_A\nIF_B\nIF_NOT_C\n', pp.out.getvalue())
-
-
- class FakeCompiler(dict):
-@@ -164,9 +164,9 @@
- '''
- def __init__(self, *definitions):
- for definition in definitions:
-- if all(not isinstance(d, dict) for d in definition.itervalues()):
-+ if all(not isinstance(d, dict) for d in definition.values()):
- definition = {None: definition}
-- for key, value in definition.iteritems():
-+ for key, value in definition.items():
- self.setdefault(key, {}).update(value)
-
- def __call__(self, stdin, args):
-@@ -178,14 +178,14 @@
- pp = CompilerPreprocessor(self[None])
-
- def apply_defn(defn):
-- for k, v in defn.iteritems():
-+ for k, v in defn.items():
- if v is False:
- if k in pp.context:
- del pp.context[k]
- else:
- pp.context[k] = v
-
-- for glob, defn in self.iteritems():
-+ for glob, defn in self.items():
- if glob and not glob.startswith('-') and fnmatch(file, glob):
- apply_defn(defn)
-
-@@ -216,7 +216,7 @@
- 'A': '1',
- 'B': '2',
- })
-- self.assertEquals(compiler(None, ['-E', 'file']),
-+ self.assertEqual(compiler(None, ['-E', 'file']),
- (0, '1 2 C', ''))
-
- compiler = FakeCompiler({
-@@ -238,25 +238,25 @@
- 'B': '42',
- },
- })
-- self.assertEquals(compiler(None, ['-E', 'file']),
-+ self.assertEqual(compiler(None, ['-E', 'file']),
- (0, '1 2 C', ''))
-- self.assertEquals(compiler(None, ['-E', '-foo', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-foo', 'file']),
- (0, '1 2 foo', ''))
-- self.assertEquals(compiler(None, ['-E', '-bar', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-bar', 'file']),
- (0, '1 bar bar', ''))
-- self.assertEquals(compiler(None, ['-E', '-qux', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-qux', 'file']),
- (0, '1 B C', ''))
-- self.assertEquals(compiler(None, ['-E', '-foo', '-bar', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-foo', '-bar', 'file']),
- (0, '1 bar bar', ''))
-- self.assertEquals(compiler(None, ['-E', '-bar', '-foo', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-bar', '-foo', 'file']),
- (0, '1 bar foo', ''))
-- self.assertEquals(compiler(None, ['-E', '-bar', '-qux', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-bar', '-qux', 'file']),
- (0, '1 B bar', ''))
-- self.assertEquals(compiler(None, ['-E', '-qux', '-bar', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-qux', '-bar', 'file']),
- (0, '1 bar bar', ''))
-- self.assertEquals(compiler(None, ['-E', 'file.c']),
-+ self.assertEqual(compiler(None, ['-E', 'file.c']),
- (0, '1 42 C', ''))
-- self.assertEquals(compiler(None, ['-E', '-bar', 'file.c']),
-+ self.assertEqual(compiler(None, ['-E', '-bar', 'file.c']),
- (0, '1 bar bar', ''))
-
- def test_multiple_definitions(self):
-@@ -267,7 +267,7 @@
- 'C': 3,
- })
-
-- self.assertEquals(compiler, {
-+ self.assertEqual(compiler, {
- None: {
- 'A': 1,
- 'B': 2,
-@@ -282,7 +282,7 @@
- 'C': 3,
- })
-
-- self.assertEquals(compiler, {
-+ self.assertEqual(compiler, {
- None: {
- 'A': 1,
- 'B': 4,
-@@ -302,7 +302,7 @@
- },
- })
-
-- self.assertEquals(compiler, {
-+ self.assertEqual(compiler, {
- None: {
- 'A': 1,
- 'B': 4,
-@@ -330,7 +330,7 @@
- },
- })
-
-- self.assertEquals(compiler, {
-+ self.assertEqual(compiler, {
- None: {
- 'A': 1,
- 'B': 2,
-@@ -370,7 +370,7 @@
- def __add__(self, other):
- assert isinstance(other, dict)
- result = copy.deepcopy(self.__dict__)
-- for k, v in other.iteritems():
-+ for k, v in other.items():
- if k == 'flags':
- result.setdefault(k, []).extend(v)
- else:
-@@ -381,7 +381,7 @@
- class TestCompilerResult(unittest.TestCase):
- def test_compiler_result(self):
- result = CompilerResult()
-- self.assertEquals(result.__dict__, {
-+ self.assertEqual(result.__dict__, {
- 'wrapper': [],
- 'compiler': mozpath.abspath(''),
- 'version': '',
-@@ -397,7 +397,7 @@
- language='C',
- flags=['-std=gnu99'],
- )
-- self.assertEquals(result.__dict__, {
-+ self.assertEqual(result.__dict__, {
- 'wrapper': [],
- 'compiler': mozpath.abspath('/usr/bin/gcc'),
- 'version': '4.2.1',
-@@ -407,7 +407,7 @@
- })
-
- result2 = result + {'flags': ['-m32']}
-- self.assertEquals(result2.__dict__, {
-+ self.assertEqual(result2.__dict__, {
- 'wrapper': [],
- 'compiler': mozpath.abspath('/usr/bin/gcc'),
- 'version': '4.2.1',
-@@ -416,14 +416,14 @@
- 'flags': ['-std=gnu99', '-m32'],
- })
- # Original flags are untouched.
-- self.assertEquals(result.flags, ['-std=gnu99'])
-+ self.assertEqual(result.flags, ['-std=gnu99'])
-
- result3 = result + {
- 'compiler': '/usr/bin/gcc-4.7',
- 'version': '4.7.3',
- 'flags': ['-m32'],
- }
-- self.assertEquals(result3.__dict__, {
-+ self.assertEqual(result3.__dict__, {
- 'wrapper': [],
- 'compiler': mozpath.abspath('/usr/bin/gcc-4.7'),
- 'version': '4.7.3',
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import os
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_util.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/configure/test_util.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import logging
- import os
-@@ -11,7 +11,7 @@
- import unittest
- import sys
-
--from StringIO import StringIO
-+from io import StringIO
-
- from mozunit import main
- from mozpack import path as mozpath
-@@ -434,11 +434,11 @@
- except SystemExit as e:
- status = e.code
-
-- self.assertEquals(status, 0)
-+ self.assertEqual(status, 0)
- quote_char = "'"
- if getpreferredencoding().lower() == 'utf-8':
- quote_char = '\u00B4'.encode('utf-8')
-- self.assertEquals(out.getvalue().strip(), quote_char)
-+ self.assertEqual(out.getvalue().strip(), quote_char)
-
-
- class TestVersion(unittest.TestCase):
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/controller/test_ccachestats.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/controller/test_ccachestats.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import unittest
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/controller/test_clobber.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/controller/test_clobber.py (refactored)
-@@ -2,14 +2,14 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
- import shutil
- import tempfile
- import unittest
-
--from StringIO import StringIO
-+from io import StringIO
-
- from mozunit import main
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/frontend/test_context.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/frontend/test_context.py (refactored)
-@@ -36,7 +36,7 @@
- 'baz': (dict, dict, ''),
- })
-
-- self.assertEqual(test.keys(), [])
-+ self.assertEqual(list(test.keys()), [])
-
- self.assertEqual(test['foo'], 0)
-
-@@ -84,12 +84,12 @@
- 'baz': (dict, list, ''),
- })
-
-- self.assertEqual(test.keys(), [])
-+ self.assertEqual(list(test.keys()), [])
-
- with self.assertRaises(ValueError):
- test.update(bar=True, foo={})
-
-- self.assertEqual(test.keys(), [])
-+ self.assertEqual(list(test.keys()), [])
-
- test.update(bar=True, foo=1)
-
-@@ -258,19 +258,19 @@
- self.assertEqual(lines[-1].strip(), '')
-
- def test_documentation_formatting(self):
-- for typ, inp, doc in VARIABLES.values():
-+ for typ, inp, doc in list(VARIABLES.values()):
- self._verify_doc(doc)
-
-- for attr, args, doc in FUNCTIONS.values():
-+ for attr, args, doc in list(FUNCTIONS.values()):
- self._verify_doc(doc)
-
-- for func, typ, doc in SPECIAL_VARIABLES.values():
-+ for func, typ, doc in list(SPECIAL_VARIABLES.values()):
- self._verify_doc(doc)
-
-- for name, cls in SUBCONTEXTS.items():
-+ for name, cls in list(SUBCONTEXTS.items()):
- self._verify_doc(cls.__doc__)
-
-- for name, v in cls.VARIABLES.items():
-+ for name, v in list(cls.VARIABLES.items()):
- self._verify_doc(v[2])
-
-
-@@ -631,7 +631,7 @@
- class TestTypedRecord(unittest.TestCase):
-
- def test_fields(self):
-- T = ContextDerivedTypedRecord(('field1', unicode),
-+ T = ContextDerivedTypedRecord(('field1', str),
- ('field2', list))
- inst = T(None)
- self.assertEqual(inst.field1, '')
-@@ -647,7 +647,7 @@
- inst.field3 = []
-
- def test_coercion(self):
-- T = ContextDerivedTypedRecord(('field1', unicode),
-+ T = ContextDerivedTypedRecord(('field1', str),
- ('field2', list))
- inst = T(None)
- inst.field1 = 3
-@@ -673,45 +673,45 @@
- def test_single_bug_component(self):
- c = Context({})
- f = Files(c, pattern='**')
-- f['BUG_COMPONENT'] = (u'Product1', u'Component1')
-+ f['BUG_COMPONENT'] = ('Product1', 'Component1')
-
- files = {'moz.build': f}
- self.assertEqual(Files.aggregate(files), {
-- 'bug_component_counts': [((u'Product1', u'Component1'), 1)],
-- 'recommended_bug_component': (u'Product1', u'Component1'),
-+ 'bug_component_counts': [(('Product1', 'Component1'), 1)],
-+ 'recommended_bug_component': ('Product1', 'Component1'),
- })
-
- def test_multiple_bug_components(self):
- c = Context({})
- f1 = Files(c, pattern='**')
-- f1['BUG_COMPONENT'] = (u'Product1', u'Component1')
-+ f1['BUG_COMPONENT'] = ('Product1', 'Component1')
-
- f2 = Files(c, pattern='**')
-- f2['BUG_COMPONENT'] = (u'Product2', u'Component2')
-+ f2['BUG_COMPONENT'] = ('Product2', 'Component2')
-
- files = {'a': f1, 'b': f2, 'c': f1}
- self.assertEqual(Files.aggregate(files), {
- 'bug_component_counts': [
-- ((u'Product1', u'Component1'), 2),
-- ((u'Product2', u'Component2'), 1),
-+ (('Product1', 'Component1'), 2),
-+ (('Product2', 'Component2'), 1),
- ],
-- 'recommended_bug_component': (u'Product1', u'Component1'),
-+ 'recommended_bug_component': ('Product1', 'Component1'),
- })
-
- def test_no_recommended_bug_component(self):
- """If there is no clear count winner, we don't recommend a bug component."""
- c = Context({})
- f1 = Files(c, pattern='**')
-- f1['BUG_COMPONENT'] = (u'Product1', u'Component1')
-+ f1['BUG_COMPONENT'] = ('Product1', 'Component1')
-
- f2 = Files(c, pattern='**')
-- f2['BUG_COMPONENT'] = (u'Product2', u'Component2')
-+ f2['BUG_COMPONENT'] = ('Product2', 'Component2')
-
- files = {'a': f1, 'b': f2}
- self.assertEqual(Files.aggregate(files), {
- 'bug_component_counts': [
-- ((u'Product1', u'Component1'), 1),
-- ((u'Product2', u'Component2'), 1),
-+ (('Product1', 'Component1'), 1),
-+ (('Product2', 'Component2'), 1),
- ],
- 'recommended_bug_component': None,
- })
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/frontend/test_emitter.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/frontend/test_emitter.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
- import unittest
-@@ -204,7 +204,7 @@
- def test_use_yasm(self):
- # When yasm is not available, this should raise.
- reader = self.reader('use-yasm')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'yasm is not available'):
- self.read_topsrcdir(reader)
-
-@@ -267,25 +267,25 @@
- o = objs[0]
- self.assertIsInstance(o, GeneratedFile)
- self.assertEqual(o.outputs, ('bar.c',))
-- self.assertRegexpMatches(o.script, 'script.py$')
-+ self.assertRegex(o.script, 'script.py$')
- self.assertEqual(o.method, 'make_bar')
- self.assertEqual(o.inputs, [])
-
- def test_generated_files_no_script(self):
- reader = self.reader('generated-files-no-script')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Script for generating bar.c does not exist'):
- self.read_topsrcdir(reader)
-
- def test_generated_files_no_inputs(self):
- reader = self.reader('generated-files-no-inputs')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Input for generating foo.c does not exist'):
- self.read_topsrcdir(reader)
-
- def test_generated_files_no_python_script(self):
- reader = self.reader('generated-files-no-python-script')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Script for generating bar.c does not end in .py'):
- self.read_topsrcdir(reader)
-
-@@ -314,7 +314,7 @@
- Missing files in EXPORTS is an error.
- '''
- reader = self.reader('exports-missing')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'File listed in EXPORTS does not exist:'):
- self.read_topsrcdir(reader)
-
-@@ -323,7 +323,7 @@
- An objdir file in EXPORTS that is not in GENERATED_FILES is an error.
- '''
- reader = self.reader('exports-missing-generated')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Objdir file listed in EXPORTS not in GENERATED_FILES:'):
- self.read_topsrcdir(reader)
-
-@@ -360,7 +360,7 @@
-
- def test_test_harness_files_root(self):
- reader = self.reader('test-harness-files-root')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Cannot install files to the root of TEST_HARNESS_FILES'):
- self.read_topsrcdir(reader)
-
-@@ -413,14 +413,14 @@
- """A missing manifest file should result in an error."""
- reader = self.reader('test-manifest-missing-manifest')
-
-- with self.assertRaisesRegexp(BuildReaderError, 'IOError: Missing files'):
-+ with self.assertRaisesRegex(BuildReaderError, 'IOError: Missing files'):
- self.read_topsrcdir(reader)
-
- def test_empty_test_manifest_rejected(self):
- """A test manifest without any entries is rejected."""
- reader = self.reader('test-manifest-empty')
-
-- with self.assertRaisesRegexp(SandboxValidationError, 'Empty test manifest'):
-+ with self.assertRaisesRegex(SandboxValidationError, 'Empty test manifest'):
- self.read_topsrcdir(reader)
-
-
-@@ -428,7 +428,7 @@
- """A test manifest with no tests but support-files is not supported."""
- reader = self.reader('test-manifest-just-support')
-
-- with self.assertRaisesRegexp(SandboxValidationError, 'Empty test manifest'):
-+ with self.assertRaisesRegex(SandboxValidationError, 'Empty test manifest'):
- self.read_topsrcdir(reader)
-
- def test_test_manifest_dupe_support_files(self):
-@@ -437,7 +437,7 @@
- """
- reader = self.reader('test-manifest-dupes')
-
-- with self.assertRaisesRegexp(SandboxValidationError, 'bar.js appears multiple times '
-+ with self.assertRaisesRegex(SandboxValidationError, 'bar.js appears multiple times '
- 'in a test manifest under a support-files field, please omit the duplicate entry.'):
- self.read_topsrcdir(reader)
-
-@@ -454,7 +454,7 @@
- mozpath.join(o.install_prefix, "absolute-support.ini"),
- mozpath.join(o.install_prefix, "test_file.js"),
- ]
-- paths = sorted([v[0] for v in o.installs.values()])
-+ paths = sorted([v[0] for v in list(o.installs.values())])
- self.assertEqual(paths, expected)
-
- @unittest.skip('Bug 1304316 - Items in the second set but not the first')
-@@ -481,7 +481,7 @@
- """A non-existent shared support file reference produces an error."""
- reader = self.reader('test-manifest-shared-missing')
-
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'entry in support-files not present in the srcdir'):
- self.read_topsrcdir(reader)
-
-@@ -500,7 +500,7 @@
- mozpath.normpath(mozpath.join(o.install_prefix, "subdir/support.txt")),
- mozpath.normpath(mozpath.join(o.install_prefix, "subdir/test_foo.html")),
- ]
-- paths = sorted([v[0] for v in o.installs.values()])
-+ paths = sorted([v[0] for v in list(o.installs.values())])
- self.assertEqual(paths, expected)
-
- def test_test_manifest_install_includes(self):
-@@ -518,7 +518,7 @@
- mozpath.normpath(mozpath.join(o.install_prefix, "subdir/mochitest.ini")),
- mozpath.normpath(mozpath.join(o.install_prefix, "subdir/test_foo.html")),
- ]
-- paths = sorted([v[0] for v in o.installs.values()])
-+ paths = sorted([v[0] for v in list(o.installs.values())])
- self.assertEqual(paths, expected)
-
- def test_test_manifest_includes(self):
-@@ -541,7 +541,7 @@
- def test_python_unit_test_missing(self):
- """Missing files in PYTHON_UNIT_TESTS should raise."""
- reader = self.reader('test-python-unit-test-missing')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Path specified in PYTHON_UNIT_TESTS does not exist:'):
- self.read_topsrcdir(reader)
-
-@@ -635,7 +635,7 @@
- self.assertEqual(external_normalized, m.get('external', set()))
-
- self.assertEqual(len(o.installs), len(m['installs']))
-- for path in o.installs.keys():
-+ for path in list(o.installs.keys()):
- self.assertTrue(path.startswith(o.directory))
- relpath = path[len(o.directory)+1:]
-
-@@ -648,7 +648,7 @@
- def test_test_manifest_unmatched_generated(self):
- reader = self.reader('test-manifest-unmatched-generated')
-
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'entry in generated-files not present elsewhere'):
- self.read_topsrcdir(reader),
-
-@@ -672,7 +672,7 @@
- """Missing test files should result in error."""
- reader = self.reader('test-manifest-missing-test-file')
-
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'lists test that does not exist: test_missing.html'):
- self.read_topsrcdir(reader)
-
-@@ -680,7 +680,7 @@
- """Missing test files should result in error, even when the test list is not filtered."""
- reader = self.reader('test-manifest-missing-test-file-unfiltered')
-
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'lists test that does not exist: missing.js'):
- self.read_topsrcdir(reader)
-
-@@ -794,20 +794,20 @@
- self.assertIsInstance(obj.path, Path)
-
- def test_jar_manifests_multiple_files(self):
-- with self.assertRaisesRegexp(SandboxValidationError, 'limited to one value'):
-+ with self.assertRaisesRegex(SandboxValidationError, 'limited to one value'):
- reader = self.reader('jar-manifests-multiple-files')
- self.read_topsrcdir(reader)
-
- def test_xpidl_module_no_sources(self):
- """XPIDL_MODULE without XPIDL_SOURCES should be rejected."""
-- with self.assertRaisesRegexp(SandboxValidationError, 'XPIDL_MODULE '
-+ with self.assertRaisesRegex(SandboxValidationError, 'XPIDL_MODULE '
- 'cannot be defined'):
- reader = self.reader('xpidl-module-no-sources')
- self.read_topsrcdir(reader)
-
- def test_missing_local_includes(self):
- """LOCAL_INCLUDES containing non-existent directories should be rejected."""
-- with self.assertRaisesRegexp(SandboxValidationError, 'Path specified in '
-+ with self.assertRaisesRegex(SandboxValidationError, 'Path specified in '
- 'LOCAL_INCLUDES does not exist'):
- reader = self.reader('missing-local-includes')
- self.read_topsrcdir(reader)
-@@ -852,7 +852,7 @@
- '.S': ['g.S'],
- '.s': ['h.s', 'i.asm'],
- }
-- for suffix, files in expected.items():
-+ for suffix, files in list(expected.items()):
- sources = suffix_map[suffix]
- self.assertEqual(
- sources.files,
-@@ -905,7 +905,7 @@
- '.S': ['g.S'],
- '.s': ['h.s', 'i.asm'],
- }
-- for suffix, files in expected.items():
-+ for suffix, files in list(expected.items()):
- sources = suffix_map[suffix]
- self.assertEqual(
- sources.files,
-@@ -931,7 +931,7 @@
- '.c': ['d.c'],
- '.mm': ['e.mm', 'f.mm'],
- }
-- for suffix, files in expected.items():
-+ for suffix, files in list(expected.items()):
- sources = suffix_map[suffix]
- self.assertEqual(
- sources.files,
-@@ -956,7 +956,7 @@
- '.mm': ['objc1.mm', 'objc2.mm'],
- '.c': ['c1.c', 'c2.c'],
- }
-- for suffix, files in expected.items():
-+ for suffix, files in list(expected.items()):
- sources = suffix_map[suffix]
- self.assertEqual(
- sources.files,
-@@ -982,7 +982,7 @@
- '.mm': ['objc1.mm', 'objc2.mm'],
- '.c': ['c1.c', 'c2.c'],
- }
-- for suffix, files in expected.items():
-+ for suffix, files in list(expected.items()):
- sources = suffix_map[suffix]
- self.assertEqual(
- sources.files,
-@@ -1005,11 +1005,11 @@
-
- expected = {'install.rdf', 'main.js'}
- for f in files:
-- self.assertTrue(unicode(f) in expected)
-+ self.assertTrue(str(f) in expected)
-
- def test_missing_final_target_pp_files(self):
- """Test that FINAL_TARGET_PP_FILES with missing files throws errors."""
-- with self.assertRaisesRegexp(SandboxValidationError, 'File listed in '
-+ with self.assertRaisesRegex(SandboxValidationError, 'File listed in '
- 'FINAL_TARGET_PP_FILES does not exist'):
- reader = self.reader('dist-files-missing')
- self.read_topsrcdir(reader)
-@@ -1017,49 +1017,49 @@
- def test_final_target_pp_files_non_srcdir(self):
- '''Test that non-srcdir paths in FINAL_TARGET_PP_FILES throws errors.'''
- reader = self.reader('final-target-pp-files-non-srcdir')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Only source directory paths allowed in FINAL_TARGET_PP_FILES:'):
- self.read_topsrcdir(reader)
-
- def test_rust_library_no_cargo_toml(self):
- '''Test that defining a RustLibrary without a Cargo.toml fails.'''
- reader = self.reader('rust-library-no-cargo-toml')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'No Cargo.toml file found'):
- self.read_topsrcdir(reader)
-
- def test_rust_library_name_mismatch(self):
- '''Test that defining a RustLibrary that doesn't match Cargo.toml fails.'''
- reader = self.reader('rust-library-name-mismatch')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'library.*does not match Cargo.toml-defined package'):
- self.read_topsrcdir(reader)
-
- def test_rust_library_no_lib_section(self):
- '''Test that a RustLibrary Cargo.toml with no [lib] section fails.'''
- reader = self.reader('rust-library-no-lib-section')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Cargo.toml for.* has no \\[lib\\] section'):
- self.read_topsrcdir(reader)
-
- def test_rust_library_no_profile_section(self):
- '''Test that a RustLibrary Cargo.toml with no [profile] section fails.'''
- reader = self.reader('rust-library-no-profile-section')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Cargo.toml for.* has no \\[profile\\.dev\\] section'):
- self.read_topsrcdir(reader)
-
- def test_rust_library_invalid_crate_type(self):
- '''Test that a RustLibrary Cargo.toml has a permitted crate-type.'''
- reader = self.reader('rust-library-invalid-crate-type')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'crate-type.* is not permitted'):
- self.read_topsrcdir(reader)
-
- def test_rust_library_non_abort_panic(self):
- '''Test that a RustLibrary Cargo.toml has `panic = "abort" set'''
- reader = self.reader('rust-library-non-abort-panic')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'does not specify `panic = "abort"`'):
- self.read_topsrcdir(reader)
-
-@@ -1072,15 +1072,15 @@
- self.assertEqual(len(objs), 1)
- lib = objs[0]
- self.assertIsInstance(lib, RustLibrary)
-- self.assertRegexpMatches(lib.lib_name, "random_crate")
-- self.assertRegexpMatches(lib.import_name, "random_crate")
-- self.assertRegexpMatches(lib.basename, "random-crate")
-+ self.assertRegex(lib.lib_name, "random_crate")
-+ self.assertRegex(lib.import_name, "random_crate")
-+ self.assertRegex(lib.basename, "random-crate")
-
- def test_multiple_rust_libraries(self):
- '''Test that linking multiple Rust libraries throws an error'''
- reader = self.reader('multiple-rust-libraries',
- extra_substs=dict(RUST_TARGET='i686-pc-windows-msvc'))
-- with self.assertRaisesRegexp(LinkageMultipleRustLibrariesError,
-+ with self.assertRaisesRegex(LinkageMultipleRustLibrariesError,
- 'Cannot link multiple Rust libraries'):
- self.read_topsrcdir(reader)
-
-@@ -1107,7 +1107,7 @@
- mozpath.join(reader.config.topobjdir, 'dir2'),
- '/dir3',
- ]
-- self.assertEquals([p.full_path for p in objs[0].paths], expected)
-+ self.assertEqual([p.full_path for p in objs[0].paths], expected)
-
- def test_binary_components(self):
- """Test that IS_COMPONENT/NO_COMPONENTS_MANIFEST work properly."""
-@@ -1163,7 +1163,7 @@
- from GENERATED_FILES is an error.
- """
- reader = self.reader('test-symbols-file-objdir-missing-generated')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Objdir file specified in SYMBOLS_FILE not in GENERATED_FILES:'):
- self.read_topsrcdir(reader)
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/frontend/test_namespaces.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/frontend/test_namespaces.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import unittest
-
-@@ -29,7 +29,7 @@
-
- class Piyo(ContextDerivedValue):
- def __init__(self, context, value):
-- if not isinstance(value, unicode):
-+ if not isinstance(value, str):
- raise ValueError
- self.context = context
- self.value = value
-@@ -48,9 +48,9 @@
-
-
- VARIABLES = {
-- 'HOGE': (unicode, unicode, None),
-- 'FUGA': (Fuga, unicode, None),
-- 'PIYO': (Piyo, unicode, None),
-+ 'HOGE': (str, str, None),
-+ 'FUGA': (Fuga, str, None),
-+ 'PIYO': (Piyo, str, None),
- 'HOGERA': (ContextDerivedTypedList(Piyo, StrictOrderingOnAppendList),
- list, None),
- 'HOGEHOGE': (ContextDerivedTypedListWithItems(
-@@ -104,7 +104,7 @@
- self.assertEqual(e[1], 'set_type')
- self.assertEqual(e[2], 'HOGE')
- self.assertEqual(e[3], True)
-- self.assertEqual(e[4], unicode)
-+ self.assertEqual(e[4], str)
-
- def test_key_checking(self):
- # Checking for existence of a key should not populate the key if it
-@@ -127,7 +127,7 @@
- self.assertEqual(e[1], 'set_type')
- self.assertEqual(e[2], 'FUGA')
- self.assertEqual(e[3], False)
-- self.assertEqual(e[4], unicode)
-+ self.assertEqual(e[4], str)
-
- ns['FUGA'] = 'fuga'
- self.assertIsInstance(ns['FUGA'], Fuga)
-@@ -150,7 +150,7 @@
- self.assertEqual(e[1], 'set_type')
- self.assertEqual(e[2], 'PIYO')
- self.assertEqual(e[3], False)
-- self.assertEqual(e[4], unicode)
-+ self.assertEqual(e[4], str)
-
- ns['PIYO'] = 'piyo'
- self.assertIsInstance(ns['PIYO'], Piyo)
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/frontend/test_reader.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/frontend/test_reader.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
- import sys
-@@ -423,7 +423,7 @@
- 'simple/base.cpp',
- ])
-
-- for path, pattern_set in expected.items():
-+ for path, pattern_set in list(expected.items()):
- self.assertEqual(v[path].test_files,
- expected[path])
-
-@@ -438,7 +438,7 @@
- 'default/tests/reftests/**']),
- }
-
-- for path, pattern_set in expected.items():
-+ for path, pattern_set in list(expected.items()):
- self.assertEqual(v[path].test_files,
- expected[path])
-
-@@ -454,7 +454,7 @@
- 'tagged/src/bar.jsm': set(['tagged/**.js']),
- }
-
-- for path, pattern_set in expected_patterns.items():
-+ for path, pattern_set in list(expected_patterns.items()):
- self.assertEqual(v[path].test_files,
- expected_patterns[path])
-
-@@ -462,7 +462,7 @@
- 'tagged/src/submodule/foo.js': set(['submodule']),
- 'tagged/src/bar.jsm': set([]),
- }
-- for path, pattern_set in expected_tags.items():
-+ for path, pattern_set in list(expected_tags.items()):
- self.assertEqual(v[path].test_tags,
- expected_tags[path])
-
-@@ -470,7 +470,7 @@
- 'tagged/src/bar.jsm': set(['browser-chrome']),
- 'tagged/src/submodule/foo.js': set([]),
- }
-- for path, pattern_set in expected_flavors.items():
-+ for path, pattern_set in list(expected_flavors.items()):
- self.assertEqual(v[path].test_flavors,
- expected_flavors[path])
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/test/frontend/test_sandbox.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/test/frontend/test_sandbox.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
- import shutil
-@@ -345,7 +345,7 @@
- sandbox = MozbuildSandbox(Context(VARIABLES, config))
-
- self.assertEqual(sandbox['CONFIG']['BAD_UTF8'],
-- u'\ufffd\ufffd\ufffd\ufffd:')
-+ '\ufffd\ufffd\ufffd\ufffd:')
-
- def test_invalid_exports_set_base(self):
- sandbox = self.sandbox()
-@@ -525,7 +525,7 @@
- source = 'a = foo(1, 2)'
- sandbox.exec_source(source, 'foo.mozbuild')
-
-- self.assertEquals(sandbox['a'], (Foo, int))
-+ self.assertEqual(sandbox['a'], (Foo, int))
- finally:
- del FUNCTIONS['foo']
-
---- firefox-52.9.0esr/python/mozbuild/mozpack/archive.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/archive.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import bz2
- import gzip
---- firefox-52.9.0esr/python/mozbuild/mozpack/copier.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/copier.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import os
- import stat
-@@ -109,7 +109,7 @@
- '''
- Return all paths stored in the container, in the order they were added.
- '''
-- return self._files.keys()
-+ return list(self._files.keys())
-
- def __len__(self):
- '''
-@@ -142,7 +142,7 @@
- for path, file in registry:
- (...)
- '''
-- return self._files.iteritems()
-+ return iter(self._files.items())
-
- def required_directories(self):
- '''
-@@ -151,7 +151,7 @@
- unspecified (virtual) root directory (and do not include said root
- directory).
- '''
-- return set(k for k, v in self._required_directories.items() if v > 0)
-+ return set(k for k, v in list(self._required_directories.items()) if v > 0)
-
-
- class FileRegistrySubtree(object):
-@@ -263,7 +263,7 @@
-
- Returns a FileCopyResult that details what changed.
- '''
-- assert isinstance(destination, basestring)
-+ assert isinstance(destination, str)
- assert not os.path.exists(destination) or os.path.isdir(destination)
-
- result = FileCopyResult()
-@@ -531,7 +531,7 @@
- def exists(self):
- return self.deflater is not None
-
-- if isinstance(dest, basestring):
-+ if isinstance(dest, str):
- dest = Dest(dest)
- assert isinstance(dest, Dest)
-
---- firefox-52.9.0esr/python/mozbuild/mozpack/errors.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/errors.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import sys
- from contextlib import contextmanager
-@@ -97,7 +97,7 @@
- if self._count is None:
- raise ErrorMessage(msg)
- self._count += 1
-- print >>self.out, msg
-+ print(msg, file=self.out)
-
- def fatal(self, msg):
- self._handle(self.FATAL, msg)
---- firefox-52.9.0esr/python/mozbuild/mozpack/executables.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/executables.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import os
- import struct
---- firefox-52.9.0esr/python/mozbuild/mozpack/files.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/files.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import errno
- import os
-@@ -57,7 +57,7 @@
-
- def _copyfile(src, dest):
- # False indicates `dest` should be overwritten if it exists already.
-- if isinstance(src, unicode) and isinstance(dest, unicode):
-+ if isinstance(src, str) and isinstance(dest, str):
- _CopyFileW(src, dest, False)
- elif isinstance(src, str) and isinstance(dest, str):
- _CopyFileA(src, dest, False)
-@@ -145,13 +145,13 @@
- # - keep file type (e.g. S_IFREG)
- ret = stat.S_IFMT(mode)
- # - expand user read and execute permissions to everyone
-- if mode & 0400:
-- ret |= 0444
-- if mode & 0100:
-- ret |= 0111
-+ if mode & 0o400:
-+ ret |= 0o444
-+ if mode & 0o100:
-+ ret |= 0o111
- # - keep user write permissions
-- if mode & 0200:
-- ret |= 0200
-+ if mode & 0o200:
-+ ret |= 0o200
- # - leave away sticky bit, setuid, setgid
- return ret
-
-@@ -164,7 +164,7 @@
- disabled when skip_if_older is False.
- Returns whether a copy was actually performed (True) or not (False).
- '''
-- if isinstance(dest, basestring):
-+ if isinstance(dest, str):
- dest = Dest(dest)
- else:
- assert isinstance(dest, Dest)
-@@ -258,11 +258,11 @@
- '''
- def copy(self, dest, skip_if_older=True):
- real_dest = dest
-- if not isinstance(dest, basestring):
-+ if not isinstance(dest, str):
- fd, dest = mkstemp()
- os.close(fd)
- os.remove(dest)
-- assert isinstance(dest, basestring)
-+ assert isinstance(dest, str)
- # If File.copy didn't actually copy because dest is newer, check the
- # file sizes. If dest is smaller, it means it is already stripped and
- # elfhacked, so we can skip.
-@@ -299,7 +299,7 @@
- File.__init__(self, path)
-
- def copy(self, dest, skip_if_older=True):
-- assert isinstance(dest, basestring)
-+ assert isinstance(dest, str)
-
- # The logic in this function is complicated by the fact that symlinks
- # aren't universally supported. So, where symlinks aren't supported, we
-@@ -400,7 +400,7 @@
- self.required = required
-
- def copy(self, dest, skip_if_older=True):
-- if isinstance(dest, basestring):
-+ if isinstance(dest, str):
- dest = Dest(dest)
- else:
- assert isinstance(dest, Dest)
-@@ -432,7 +432,7 @@
- '''
- Invokes the preprocessor to create the destination file.
- '''
-- if isinstance(dest, basestring):
-+ if isinstance(dest, str):
- dest = Dest(dest)
- else:
- assert isinstance(dest, Dest)
-@@ -563,7 +563,7 @@
- the individual XPTs to link.
- skip_if_older is ignored.
- '''
-- if isinstance(dest, basestring):
-+ if isinstance(dest, str):
- dest = Dest(dest)
- assert isinstance(dest, Dest)
-
-@@ -1014,7 +1014,7 @@
- from mozpack.copier import FileRegistry
- self.files = FileRegistry()
-
-- for base, finder in sorted(finders.iteritems()):
-+ for base, finder in sorted(finders.items()):
- if self.files.contains(base):
- self.files.remove(base)
- for p, f in finder.find(''):
---- firefox-52.9.0esr/python/mozbuild/mozpack/hg.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/hg.py (refactored)
-@@ -27,7 +27,7 @@
- # do not wish to do so, delete this exception statement from your
- # version.
-
--from __future__ import absolute_import
-+
-
- import mercurial.error as error
- import mercurial.hg as hg
-@@ -56,7 +56,7 @@
-
- Accepts a Mercurial localrepo and changectx instance.
- """
-- if isinstance(repo, (str, unicode)):
-+ if isinstance(repo, str):
- path = repo
- repo = hg.repository(hgui.ui(), repo)
- else:
-@@ -85,7 +85,7 @@
- return self._get(path)
-
- def _get(self, path):
-- if isinstance(path, unicode):
-+ if isinstance(path, str):
- path = path.encode('utf-8', 'replace')
-
- try:
---- firefox-52.9.0esr/python/mozbuild/mozpack/manifests.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/manifests.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- from contextlib import contextmanager
- import json
---- firefox-52.9.0esr/python/mozbuild/mozpack/mozjar.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/mozjar.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- from io import BytesIO
- import struct
-@@ -13,8 +13,9 @@
- ZIP_DEFLATED,
- )
- from collections import OrderedDict
--from urlparse import urlparse, ParseResult
-+from urllib.parse import urlparse, ParseResult
- import mozpack.path as mozpath
-+from functools import reduce
-
- JAR_STORED = ZIP_STORED
- JAR_DEFLATED = ZIP_DEFLATED
-@@ -68,7 +69,7 @@
- an instance with empty fields.
- '''
- assert self.MAGIC and isinstance(self.STRUCT, OrderedDict)
-- self.size_fields = set(t for t in self.STRUCT.itervalues()
-+ self.size_fields = set(t for t in self.STRUCT.values()
- if not t in JarStruct.TYPE_MAPPING)
- self._values = {}
- if data:
-@@ -90,7 +91,7 @@
- # For all fields used as other fields sizes, keep track of their value
- # separately.
- sizes = dict((t, 0) for t in self.size_fields)
-- for name, t in self.STRUCT.iteritems():
-+ for name, t in self.STRUCT.items():
- if t in JarStruct.TYPE_MAPPING:
- value, size = JarStruct.get_data(t, data[offset:])
- else:
-@@ -109,7 +110,7 @@
- Initialize an instance with empty fields.
- '''
- self.signature = self.MAGIC
-- for name, t in self.STRUCT.iteritems():
-+ for name, t in self.STRUCT.items():
- if name in self.size_fields:
- continue
- self._values[name] = 0 if t in JarStruct.TYPE_MAPPING else ''
-@@ -134,9 +135,9 @@
- from self.STRUCT.
- '''
- serialized = struct.pack('<I', self.signature)
-- sizes = dict((t, name) for name, t in self.STRUCT.iteritems()
-+ sizes = dict((t, name) for name, t in self.STRUCT.items()
- if not t in JarStruct.TYPE_MAPPING)
-- for name, t in self.STRUCT.iteritems():
-+ for name, t in self.STRUCT.items():
- if t in JarStruct.TYPE_MAPPING:
- format, size = JarStruct.TYPE_MAPPING[t]
- if name in sizes:
-@@ -155,7 +156,7 @@
- variable length fields.
- '''
- size = JarStruct.TYPE_MAPPING['uint32'][1]
-- for name, type in self.STRUCT.iteritems():
-+ for name, type in self.STRUCT.items():
- if type in JarStruct.TYPE_MAPPING:
- size += JarStruct.TYPE_MAPPING[type][1]
- else:
-@@ -176,7 +177,7 @@
- return key in self._values
-
- def __iter__(self):
-- return self._values.iteritems()
-+ return iter(self._values.items())
-
- def __repr__(self):
- return "<%s %s>" % (self.__class__.__name__,
-@@ -374,7 +375,7 @@
- preload = JarStruct.get_data('uint32', self._data)[0]
- entries = OrderedDict()
- offset = self._cdir_end['cdir_offset']
-- for e in xrange(self._cdir_end['cdir_entries']):
-+ for e in range(self._cdir_end['cdir_entries']):
- entry = JarCdirEntry(self._data[offset:])
- offset += entry.size
- # Creator host system. 0 is MSDOS, 3 is Unix
-@@ -385,7 +386,7 @@
- xattr = entry['external_attr']
- # Skip directories
- if (host == 0 and xattr & 0x10) or (host == 3 and
-- xattr & (040000 << 16)):
-+ xattr & (0o40000 << 16)):
- continue
- entries[entry['filename']] = entry
- if entry['offset'] < preload:
-@@ -436,7 +437,7 @@
- for file in jarReader:
- ...
- '''
-- for entry in self.entries.itervalues():
-+ for entry in self.entries.values():
- yield self._getreader(entry)
-
- def __getitem__(self, name):
-@@ -529,7 +530,7 @@
- headers = {}
- preload_size = 0
- # Prepare central directory entries
-- for entry, content in self._contents.itervalues():
-+ for entry, content in self._contents.values():
- header = JarLocalFileHeader()
- for name in entry.STRUCT:
- if name in header:
-@@ -544,7 +545,7 @@
- end['disk_entries'] = len(self._contents)
- end['cdir_entries'] = end['disk_entries']
- end['cdir_size'] = reduce(lambda x, y: x + y[0].size,
-- self._contents.values(), 0)
-+ list(self._contents.values()), 0)
- # On optimized archives, store the preloaded size and the central
- # directory entries, followed by the first end of central directory.
- if self._optimize:
-@@ -553,18 +554,18 @@
- if preload_size:
- preload_size += offset
- self._data.write(struct.pack('<I', preload_size))
-- for entry, _ in self._contents.itervalues():
-+ for entry, _ in self._contents.values():
- entry['offset'] += offset
- self._data.write(entry.serialize())
- self._data.write(end.serialize())
- # Store local file entries followed by compressed data
-- for entry, content in self._contents.itervalues():
-+ for entry, content in self._contents.values():
- self._data.write(headers[entry].serialize())
- self._data.write(content)
- # On non optimized archives, store the central directory entries.
- if not self._optimize:
- end['cdir_offset'] = offset
-- for entry, _ in self._contents.itervalues():
-+ for entry, _ in self._contents.values():
- self._data.write(entry.serialize())
- # Store the end of central directory.
- self._data.write(end.serialize())
-@@ -599,7 +600,7 @@
- deflater = data
- else:
- deflater = Deflater(compress, compress_level=self._compress_level)
-- if isinstance(data, basestring):
-+ if isinstance(data, str):
- deflater.write(data)
- elif hasattr(data, 'read'):
- if hasattr(data, 'seek'):
-@@ -615,7 +616,7 @@
- # Set creator host system (upper byte of creator_version)
- # to 3 (Unix) so mode is honored when there is one.
- entry['creator_version'] |= 3 << 8
-- entry['external_attr'] = (mode & 0xFFFF) << 16L
-+ entry['external_attr'] = (mode & 0xFFFF) << 16
- if deflater.compressed:
- entry['min_version'] = 20 # Version 2.0 supports deflated streams
- entry['general_flag'] = 2 # Max compression
---- firefox-52.9.0esr/python/mozbuild/mozpack/path.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/path.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import posixpath
- import os
---- firefox-52.9.0esr/python/mozbuild/mozpack/unify.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/unify.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- from mozpack.files import (
- BaseFinder,
-@@ -73,7 +73,7 @@
- creating the instance.
- skip_if_older is ignored.
- '''
-- assert isinstance(dest, basestring)
-+ assert isinstance(dest, str)
- tmpfiles = []
- try:
- for e in self._executables:
---- firefox-52.9.0esr/python/mozbuild/mozpack/chrome/flags.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/chrome/flags.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import re
- from distutils.version import LooseVersion
-@@ -250,7 +250,7 @@
- flags.match(application='foo', appversion='3.5') returns True
- flags.match(application='foo', appversion='3.0') returns False
- '''
-- for name, value in filter.iteritems():
-+ for name, value in filter.items():
- if not name in self:
- continue
- if not self[name].matches(value):
---- firefox-52.9.0esr/python/mozbuild/mozpack/chrome/manifest.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/chrome/manifest.py (refactored)
-@@ -2,11 +2,11 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import re
- import os
--from urlparse import urlparse
-+from urllib.parse import urlparse
- import mozpack.path as mozpath
- from mozpack.chrome.flags import Flags
- from mozpack.errors import errors
-@@ -321,7 +321,7 @@
- return self.serialize(self.contractID, self.cid)
-
- # All manifest classes by their type name.
--MANIFESTS_TYPES = dict([(c.type, c) for c in globals().values()
-+MANIFESTS_TYPES = dict([(c.type, c) for c in list(globals().values())
- if type(c) == type and issubclass(c, ManifestEntry)
- and hasattr(c, 'type') and c.type])
-
---- firefox-52.9.0esr/python/mozbuild/mozpack/packager/__init__.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/packager/__init__.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- from mozbuild.preprocessor import Preprocessor
- import re
-@@ -50,7 +50,7 @@
- '''
- Split [1, 2, 3, 4, 5, 6, 7] into [(1, 2, 3), (4, 5, 6)].
- '''
-- return zip(*[iter(lst)] * 3)
-+ return list(zip(*[iter(lst)] * 3))
-
- KEY_VALUE_RE = re.compile(r'''
- \s* # optional whitespace.
-@@ -118,7 +118,7 @@
- destdir = options.pop('destdir', '')
- if options:
- errors.fatal('Malformed manifest: options %s not recognized'
-- % options.keys())
-+ % list(options.keys()))
- return Component(name, destdir=destdir)
-
-
-@@ -328,7 +328,7 @@
-
- bases = self.get_bases()
- broken_bases = sorted(
-- m for m, includer in self._included_manifests.iteritems()
-+ m for m, includer in self._included_manifests.items()
- if mozpath.basedir(m, bases) != mozpath.basedir(includer, bases))
- for m in broken_bases:
- errors.fatal('"%s" is included from "%s", which is outside "%s"' %
---- firefox-52.9.0esr/python/mozbuild/mozpack/packager/formats.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/packager/formats.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- from mozpack.chrome.manifest import (
- Manifest,
-@@ -11,7 +11,7 @@
- ManifestBinaryComponent,
- ManifestResource,
- )
--from urlparse import urlparse
-+from urllib.parse import urlparse
- import mozpack.path as mozpath
- from mozpack.files import (
- ManifestFile,
-@@ -89,7 +89,7 @@
- Return the deepest base directory containing the given path.
- '''
- self._frozen_bases = True
-- base = mozpath.basedir(path, self._sub_formatter.keys())
-+ base = mozpath.basedir(path, list(self._sub_formatter.keys()))
- relpath = mozpath.relpath(path, base) if base else path
- return base, relpath
-
---- firefox-52.9.0esr/python/mozbuild/mozpack/packager/l10n.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/packager/l10n.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- '''
- Replace localized parts of a packaged directory with data from a langpack
-@@ -162,7 +162,7 @@
- if not path:
- continue
- else:
-- base = mozpath.basedir(p, paths.keys())
-+ base = mozpath.basedir(p, list(paths.keys()))
- if base:
- subpath = mozpath.relpath(p, base)
- path = mozpath.normpath(mozpath.join(paths[base],
-@@ -206,7 +206,7 @@
- formatter.add(p, f)
-
- # Transplant jar preloading information.
-- for path, log in app_finder.jarlogs.iteritems():
-+ for path, log in app_finder.jarlogs.items():
- assert isinstance(copier[path], Jarrer)
- copier[path].preload([l.replace(locale, l10n_locale) for l in log])
-
-@@ -237,7 +237,7 @@
- finders = {
- '': l10n_finder,
- }
-- for base, path in extra_l10n.iteritems():
-+ for base, path in extra_l10n.items():
- finders[base] = UnpackFinder(path)
- l10n_finder = ComposedFinder(finders)
- copier = FileCopier()
---- firefox-52.9.0esr/python/mozbuild/mozpack/packager/unpack.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/packager/unpack.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import mozpack.path as mozpath
- from mozpack.files import (
-@@ -27,7 +27,7 @@
- FlatFormatter,
- STARTUP_CACHE_PATHS,
- )
--from urlparse import urlparse
-+from urllib.parse import urlparse
-
-
- class UnpackFinder(BaseFinder):
-@@ -149,7 +149,7 @@
- if not any(f.compressed for f in jar):
- self.compressed = False
- if jar.last_preloaded:
-- jarlog = jar.entries.keys()
-+ jarlog = list(jar.entries.keys())
- self.jarlogs[path] = jarlog[:jarlog.index(jar.last_preloaded) + 1]
- return jar
-
---- firefox-52.9.0esr/python/mozbuild/mozpack/test/test_archive.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/test/test_archive.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import hashlib
- import os
-@@ -69,7 +69,7 @@
- try:
- tp = os.path.join(d, 'test.tar')
- with open(tp, 'wb') as fh:
-- with self.assertRaisesRegexp(ValueError, 'not a regular'):
-+ with self.assertRaisesRegex(ValueError, 'not a regular'):
- create_tar_from_files(fh, {'test': d})
- finally:
- shutil.rmtree(d)
-@@ -89,9 +89,9 @@
-
- tp = os.path.join(d, 'test.tar')
- with open(tp, 'wb') as fh:
-- with self.assertRaisesRegexp(ValueError, 'cannot add file with setuid'):
-+ with self.assertRaisesRegex(ValueError, 'cannot add file with setuid'):
- create_tar_from_files(fh, {'test': uid})
-- with self.assertRaisesRegexp(ValueError, 'cannot add file with setuid'):
-+ with self.assertRaisesRegex(ValueError, 'cannot add file with setuid'):
- create_tar_from_files(fh, {'test': gid})
- finally:
- shutil.rmtree(d)
---- firefox-52.9.0esr/python/mozbuild/mozpack/test/test_chrome_manifest.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/test/test_chrome_manifest.py (refactored)
-@@ -24,7 +24,7 @@
- parse_manifest_line,
- )
- from mozpack.errors import errors, AccumulatedErrors
--from test_errors import TestErrors
-+from .test_errors import TestErrors
-
-
- class TestManifest(unittest.TestCase):
---- firefox-52.9.0esr/python/mozbuild/mozpack/test/test_copier.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/test/test_copier.py (refactored)
-@@ -127,7 +127,7 @@
- 'bar': [],
- }
- reg = FileRegistry()
-- for path, parts in cases.iteritems():
-+ for path, parts in cases.items():
- self.assertEqual(reg._partial_paths(path), parts)
-
- def test_file_registry(self):
-@@ -414,7 +414,7 @@
- self.assertTrue(stat.S_ISDIR(st.st_mode))
-
- # What's worse, we have no record that dest was created.
-- self.assertEquals(len(result.updated_files), 0)
-+ self.assertEqual(len(result.updated_files), 0)
-
- # But we do have an erroneous record of an optional file
- # existing when it does not.
---- firefox-52.9.0esr/python/mozbuild/mozpack/test/test_errors.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/test/test_errors.py (refactored)
-@@ -10,7 +10,7 @@
- import unittest
- import mozunit
- import sys
--from cStringIO import StringIO
-+from io import StringIO
-
-
- class TestErrors(object):
-@@ -30,14 +30,14 @@
- errors.warn('foo')
- self.assertRaises(ErrorMessage, errors.error, 'foo')
- self.assertRaises(ErrorMessage, errors.fatal, 'foo')
-- self.assertEquals(self.get_output(), ['Warning: foo'])
-+ self.assertEqual(self.get_output(), ['Warning: foo'])
-
- def test_ignore_errors(self):
- errors.ignore_errors()
- errors.warn('foo')
- errors.error('bar')
- self.assertRaises(ErrorMessage, errors.fatal, 'foo')
-- self.assertEquals(self.get_output(), ['Warning: foo', 'Warning: bar'])
-+ self.assertEqual(self.get_output(), ['Warning: foo', 'Warning: bar'])
-
- def test_no_error(self):
- with errors.accumulate():
-@@ -47,14 +47,14 @@
- with self.assertRaises(AccumulatedErrors):
- with errors.accumulate():
- errors.error('1')
-- self.assertEquals(self.get_output(), ['Error: 1'])
-+ self.assertEqual(self.get_output(), ['Error: 1'])
-
- def test_error_loop(self):
- with self.assertRaises(AccumulatedErrors):
- with errors.accumulate():
- for i in range(3):
- errors.error('%d' % i)
-- self.assertEquals(self.get_output(),
-+ self.assertEqual(self.get_output(),
- ['Error: 0', 'Error: 1', 'Error: 2'])
-
- def test_multiple_errors(self):
-@@ -67,7 +67,7 @@
- else:
- errors.error('%d' % i)
- errors.error('bar')
-- self.assertEquals(self.get_output(),
-+ self.assertEqual(self.get_output(),
- ['Error: foo', 'Error: 0', 'Error: 1',
- 'Warning: 2', 'Error: bar'])
-
---- firefox-52.9.0esr/python/mozbuild/mozpack/test/test_files.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/test/test_files.py (refactored)
-@@ -61,7 +61,7 @@
- import mozpack.path as mozpath
- from tempfile import mkdtemp
- from io import BytesIO
--from StringIO import StringIO
-+from io import StringIO
- from xpt import Typelib
-
-
-@@ -146,7 +146,7 @@
- dest.write('qux')
- self.assertEqual(dest.read(), 'qux')
-
--rand = ''.join(random.choice(string.letters) for i in xrange(131597))
-+rand = ''.join(random.choice(string.letters) for i in range(131597))
- samples = [
- '',
- 'test',
-@@ -268,7 +268,7 @@
- def test_absolute_relative(self):
- AbsoluteSymlinkFile('/foo')
-
-- with self.assertRaisesRegexp(ValueError, 'Symlink target not absolute'):
-+ with self.assertRaisesRegex(ValueError, 'Symlink target not absolute'):
- AbsoluteSymlinkFile('./foo')
-
- def test_symlink_file(self):
-@@ -477,7 +477,7 @@
-
- class TestExistingFile(TestWithTmpDir):
- def test_required_missing_dest(self):
-- with self.assertRaisesRegexp(ErrorMessage, 'Required existing file'):
-+ with self.assertRaisesRegex(ErrorMessage, 'Required existing file'):
- f = ExistingFile(required=True)
- f.copy(self.tmppath('dest'))
-
-@@ -566,7 +566,7 @@
- with JarWriter(src) as jar:
- for content in samples:
- name = ''.join(random.choice(string.letters)
-- for i in xrange(8))
-+ for i in range(8))
- jar.add(name, content, compress=True)
- contents[name] = content
-
---- firefox-52.9.0esr/python/mozbuild/mozpack/test/test_manifests.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/test/test_manifests.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
-
---- firefox-52.9.0esr/python/mozbuild/mozpack/test/test_mozjar.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/test/test_mozjar.py (refactored)
-@@ -16,8 +16,8 @@
- from mozpack.test.test_files import MockDest
- import unittest
- import mozunit
--from cStringIO import StringIO
--from urllib import pathname2url
-+from io import StringIO
-+from urllib.request import pathname2url
- import mozpack.path as mozpath
- import os
-
---- firefox-52.9.0esr/python/mozbuild/mozpack/test/test_packager_formats.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/test/test_packager_formats.py (refactored)
-@@ -128,7 +128,7 @@
- 'foo': read_interfaces(foo2_xpt.open())['foo'],
- 'bar': read_interfaces(bar_xpt.open())['bar'],
- },
-- }.iteritems()
-+ }.items()
- })
-
- RESULT_JAR = {
-@@ -174,7 +174,7 @@
- },
- 'addon1.xpi': {
- mozpath.relpath(p, 'addon1'): f
-- for p, f in RESULT_FLAT.iteritems()
-+ for p, f in RESULT_FLAT.items()
- if p.startswith('addon1/')
- },
- })
-@@ -234,7 +234,7 @@
- CONTENTS_WITH_BASE = {
- 'bases': {
- mozpath.join('base/root', b) if b else 'base/root': a
-- for b, a in CONTENTS['bases'].iteritems()
-+ for b, a in CONTENTS['bases'].items()
- },
- 'manifests': [
- m.move(mozpath.join('base/root', m.base))
-@@ -242,7 +242,7 @@
- ],
- 'files': {
- mozpath.join('base/root', p): f
-- for p, f in CONTENTS['files'].iteritems()
-+ for p, f in CONTENTS['files'].items()
- },
- }
-
-@@ -255,7 +255,7 @@
- def result_with_base(results):
- result = {
- mozpath.join('base/root', p): v
-- for p, v in results.iteritems()
-+ for p, v in results.items()
- }
- result.update(EXTRA_CONTENTS)
- return result
-@@ -271,13 +271,13 @@
-
-
- def fill_formatter(formatter, contents):
-- for base, is_addon in contents['bases'].items():
-+ for base, is_addon in list(contents['bases'].items()):
- formatter.add_base(base, is_addon)
-
- for manifest in contents['manifests']:
- formatter.add_manifest(manifest)
-
-- for k, v in contents['files'].iteritems():
-+ for k, v in contents['files'].items():
- if k.endswith('.xpt'):
- formatter.add_interfaces(k, v)
- else:
---- firefox-52.9.0esr/python/mozbuild/mozpack/test/test_packager_l10n.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/test/test_packager_l10n.py (refactored)
-@@ -4,7 +4,7 @@
-
- import unittest
- import mozunit
--from test_packager import MockFinder
-+from .test_packager import MockFinder
- from mozpack.packager import l10n
- from mozpack.files import (
- GeneratedFile,
-@@ -118,7 +118,7 @@
-
- self.assertEqual(
- dict((p, f.open().read()) for p, f in copier),
-- dict((p, f.open().read()) for p, f in repacked.iteritems())
-+ dict((p, f.open().read()) for p, f in repacked.items())
- )
-
-
---- firefox-52.9.0esr/python/mozbuild/mozpack/test/test_unify.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/test/test_unify.py (refactored)
-@@ -13,7 +13,7 @@
- from mozpack.files import FileFinder
- from mozpack.mozjar import JarWriter
- from mozpack.test.test_files import MockDest
--from cStringIO import StringIO
-+from io import StringIO
- import os
- import sys
- from mozpack.errors import (
---- firefox-52.9.0esr/python/mozbuild/mozpack/test/support/minify_js_verify.py (original)
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/test/support/minify_js_verify.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import print_function
-+
- import sys
-
-
---- firefox-52.9.0esr/build/moz.configure/keyfiles.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ firefox-52.9.0esr/build/moz.configure/keyfiles.configure 2018-07-10 07:57:16.030000000 +0000
-@@ -16,8 +16,8 @@
-
- @depends('--with-%s-keyfile' % name)
- @checking('for the %s key' % desc, lambda x: x and x is not no_key)
-- @imports(_from='__builtin__', _import='open')
-- @imports(_from='__builtin__', _import='IOError')
-+ @imports(_from='builtins', _import='open')
-+ @imports(_from='builtins', _import='IOError')
- def keyfile(value):
- if value:
- try:
---- firefox-52.9.0esr/build/moz.configure/windows.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ firefox-52.9.0esr/build/moz.configure/windows.configure 2018-07-10 07:57:25.210000000 +0000
-@@ -19,7 +19,7 @@
-
-
- @depends_win('--with-windows-version')
--@imports(_from='__builtin__', _import='ValueError')
-+@imports(_from='builtins', _import='ValueError')
- def valid_windows_version(value):
- if not value:
- die('Cannot build with --without-windows-version')
-@@ -56,8 +56,8 @@
- # 8.1.
- @imports('os')
- @imports('re')
--@imports(_from='__builtin__', _import='sorted')
--@imports(_from='__builtin__', _import='WindowsError')
-+@imports(_from='builtins', _import='sorted')
-+@imports(_from='builtins', _import='WindowsError')
- def get_sdk_dirs(sdk, subdir):
- def get_dirs_containing(sdk, stem, subdir):
- base = os.path.join(sdk, stem)
-@@ -102,7 +102,7 @@
- @depends_win(c_compiler, windows_sdk_dir, valid_windows_version,
- 'WINDOWSSDKDIR')
- @checking('for Windows SDK', valid_windows_sdk_dir_result)
--@imports(_from='__builtin__', _import='sorted')
-+@imports(_from='builtins', _import='sorted')
- @imports(_from='textwrap', _import='dedent')
- def valid_windows_sdk_dir(compiler, windows_sdk_dir, target_version,
- windows_sdk_dir_env):
-@@ -179,7 +179,7 @@
- @depends_win(windows_sdk_dir, 'WINDOWSSDKDIR')
- @checking('for Universal CRT SDK', valid_ucrt_sdk_dir_result)
- @imports('os')
--@imports(_from='__builtin__', _import='sorted')
-+@imports(_from='builtins', _import='sorted')
- @imports(_import='mozpack.path', _as='mozpath')
- def valid_ucrt_sdk_dir(windows_sdk_dir, windows_sdk_dir_env):
- if windows_sdk_dir_env:
---- firefox-52.9.0esr/build/moz.configure/toolchain.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ firefox-52.9.0esr/build/moz.configure/toolchain.configure 2018-07-10 07:57:28.830000000 +0000
-@@ -395,7 +395,7 @@
-
-
- @imports(_from='collections', _import='defaultdict')
--@imports(_from='__builtin__', _import='sorted')
-+@imports(_from='builtins', _import='sorted')
- def get_vc_paths(base):
- vc = defaultdict(lambda: defaultdict(dict))
- subkey = r'Microsoft\VisualStudio\VC\*\*\*\Compiler'
---- firefox-52.9.0esr/build/moz.configure/util.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ firefox-52.9.0esr/build/moz.configure/util.configure 2018-07-10 07:57:31.540000000 +0000
-@@ -234,7 +234,7 @@
- # ('19.0', 'x64', r'C:\...\amd64\cl.exe')
- # ('19.0', 'x86', r'C:\...\amd64_x86\cl.exe')
- @imports(_import='_winreg', _as='winreg')
--@imports(_from='__builtin__', _import='WindowsError')
-+@imports(_from='builtins', _import='WindowsError')
- @imports(_from='fnmatch', _import='fnmatch')
- def get_registry_values(pattern):
- def enum_helper(func, key):
---- firefox-52.9.0esr/build/moz.configure/checks.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ firefox-52.9.0esr/build/moz.configure/checks.configure 2018-07-10 07:57:35.630000000 +0000
-@@ -12,7 +12,7 @@
- # _declare_exceptions template, and add it to the return statement. Then
- # destructure in the assignment below the function declaration.
- @template
--@imports(_from='__builtin__', _import='Exception')
-+@imports(_from='builtins', _import='Exception')
- def _declare_exceptions():
- class FatalCheckError(Exception):
- '''An exception to throw from a function decorated with @checking.
---- firefox-52.9.0esr/build/moz.configure/old.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ firefox-52.9.0esr/build/moz.configure/old.configure 2018-07-10 07:57:38.970000000 +0000
-@@ -61,8 +61,8 @@
-
- @depends('OLD_CONFIGURE', mozconfig, autoconf, check_build_environment, shell,
- old_configure_assignments, build_project)
--@imports(_from='__builtin__', _import='open')
--@imports(_from='__builtin__', _import='print')
-+@imports(_from='builtins', _import='open')
-+@imports(_from='builtins', _import='print')
- @imports('glob')
- @imports('itertools')
- @imports('subprocess')
-@@ -302,8 +302,8 @@
- '--enable-calendar',
- '--enable-incomplete-external-linkage',
- )
--@imports(_from='__builtin__', _import='compile')
--@imports(_from='__builtin__', _import='open')
-+@imports(_from='builtins', _import='compile')
-+@imports(_from='builtins', _import='open')
- @imports('logging')
- @imports('os')
- @imports('subprocess')
---- firefox-52.9.0esr/build/moz.configure/android-ndk.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ firefox-52.9.0esr/build/moz.configure/android-ndk.configure 2018-07-10 07:57:41.120000000 +0000
-@@ -22,7 +22,7 @@
- default=min_android_version)
-
- @depends('--with-android-version', min_android_version)
--@imports(_from='__builtin__', _import='ValueError')
-+@imports(_from='builtins', _import='ValueError')
- def android_version(value, min_version):
- if not value:
- # Someone has passed --without-android-version.
---- firefox-52.9.0esr/build/moz.configure/init.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ firefox-52.9.0esr/build/moz.configure/init.configure 2018-07-10 07:57:44.330000000 +0000
-@@ -636,7 +636,7 @@
- # - otherwise, if we have "a" in GRE_MILESTONE, we're building Nightly or Aurora
- # - otherwise, we're building Release/Beta (define RELEASE_OR_BETA)
- @depends(check_build_environment, '--help')
--@imports(_from='__builtin__', _import='open')
-+@imports(_from='builtins', _import='open')
- def milestone(build_env, _):
- milestone_path = os.path.join(build_env.topsrcdir,
- 'config',
-diff -aur firefox-52.9.0esr/config/mozunit.py mozjs-fixed/config/mozunit.py
---- firefox-52.9.0esr/config/mozunit.py 2017-04-11 02:13:09.000000000 +0000
-+++ mozjs-fixed/config/mozunit.py 2018-07-10 08:19:37.770000000 +0000
-@@ -5,7 +5,7 @@
- from unittest import TextTestRunner as _TestRunner, TestResult as _TestResult
- import unittest
- import inspect
--from StringIO import StringIO
-+from io import StringIO
- import os
- import sys
-
-@@ -74,7 +74,7 @@
-
- def printFail(self, test, err):
- exctype, value, tb = err
-- message = value.message.splitlines()[0] if value.message else 'NO MESSAGE'
-+ message = str(value).splitlines()[0] if str(value) else 'NO MESSAGE'
- # Skip test runner traceback levels
- while tb and self._is_relevant_tb_level(tb):
- tb = tb.tb_next
-diff -aur firefox-52.9.0esr/python/mozbuild/mozbuild/backend/configenvironment.py mozjs-fixed/python/mozbuild/mozbuild/backend/configenvironment.py
---- firefox-52.9.0esr/python/mozbuild/mozbuild/backend/configenvironment.py 2018-07-10 08:24:43.150000000 +0000
-+++ mozjs-fixed/python/mozbuild/mozbuild/backend/configenvironment.py 2018-07-10 08:15:12.650000000 +0000
-@@ -8,7 +8,8 @@
- import sys
-
- from collections import Iterable
--from types import StringTypes, ModuleType
-+from types import ModuleType
-+StringTypes = (str,)
-
- import mozpack.path as mozpath
-
-diff -aur firefox-52.9.0esr/python/mozbuild/mozbuild/makeutil.py mozjs-fixed/python/mozbuild/mozbuild/makeutil.py
---- firefox-52.9.0esr/python/mozbuild/mozbuild/makeutil.py 2018-07-10 08:24:43.150000000 +0000
-+++ mozjs-fixed/python/mozbuild/mozbuild/makeutil.py 2018-07-10 08:20:05.230000000 +0000
-@@ -6,7 +6,6 @@
-
- import os
- import re
--from types import StringTypes
- from collections import Iterable
-
-
-@@ -103,19 +102,19 @@
-
- def add_targets(self, targets):
- '''Add additional targets to the rule.'''
-- assert isinstance(targets, Iterable) and not isinstance(targets, StringTypes)
-+ assert isinstance(targets, Iterable) and not isinstance(targets, str)
- self._targets.update(targets)
- return self
-
- def add_dependencies(self, deps):
- '''Add dependencies to the rule.'''
-- assert isinstance(deps, Iterable) and not isinstance(deps, StringTypes)
-+ assert isinstance(deps, Iterable) and not isinstance(deps, str)
- self._dependencies.update(deps)
- return self
-
- def add_commands(self, commands):
- '''Add commands to the rule.'''
-- assert isinstance(commands, Iterable) and not isinstance(commands, StringTypes)
-+ assert isinstance(commands, Iterable) and not isinstance(commands, str)
- self._commands.extend(commands)
- return self
-
-diff -aur firefox-52.9.0esr/python/which/which.py mozjs-fixed/python/which/which.py
---- firefox-52.9.0esr/python/which/which.py 2017-04-11 02:13:24.000000000 +0000
-+++ mozjs-fixed/python/which/which.py 2018-07-10 08:11:01.570000000 +0000
-@@ -280,17 +280,17 @@
- try:
- optlist, args = getopt.getopt(argv[1:], 'haVvqp:e:',
- ['help', 'all', 'version', 'verbose', 'quiet', 'path=', 'exts='])
-- except getopt.GetoptError, msg:
-+ except getopt.GetoptError as msg:
- sys.stderr.write("which: error: %s. Your invocation was: %s\n"\
- % (msg, argv))
- sys.stderr.write("Try 'which --help'.\n")
- return 1
- for opt, optarg in optlist:
- if opt in ('-h', '--help'):
-- print _cmdlnUsage
-+ print(_cmdlnUsage)
- return 0
- elif opt in ('-V', '--version'):
-- print "which %s" % __version__
-+ print("which %s" % __version__)
- return 0
- elif opt in ('-a', '--all'):
- all = 1
-@@ -318,9 +318,9 @@
- nmatches = 0
- for match in whichgen(arg, path=altpath, verbose=verbose, exts=exts):
- if verbose:
-- print "%s (%s)" % match
-+ print("%s (%s)" % match)
- else:
-- print match
-+ print(match)
- nmatches += 1
- if not all:
- break
-diff -aur firefox-52.9.0esr/testing/mozbase/mozprocess/mozprocess/processhandler.py mozjs-fixed/testing/mozbase/mozprocess/mozprocess/processhandler.py
---- firefox-52.9.0esr/testing/mozbase/mozprocess/mozprocess/processhandler.py 2017-04-11 02:13:06.000000000 +0000
-+++ mozjs-fixed/testing/mozbase/mozprocess/mozprocess/processhandler.py 2018-07-10 08:13:15.440000000 +0000
-@@ -11,7 +11,7 @@
- import threading
- import time
- import traceback
--from Queue import Queue, Empty
-+from queue import Queue, Empty
- from datetime import datetime
-
- __all__ = ['ProcessHandlerMixin', 'ProcessHandler', 'LogOutput',
-@@ -121,14 +121,14 @@
- thread = threading.current_thread().name
- print("DBG::MOZPROC PID:{} ({}) | {}".format(self.pid, thread, msg))
-
-- def __del__(self, _maxint=sys.maxint):
-+ def __del__(self, _maxint=sys.maxsize):
- if isWin:
- handle = getattr(self, '_handle', None)
- if handle:
- if hasattr(self, '_internal_poll'):
- self._internal_poll(_deadstate=_maxint)
- else:
-- self.poll(_deadstate=sys.maxint)
-+ self.poll(_deadstate=sys.maxsize)
- if handle or self._job or self._io_port:
- self._cleanup()
- else:
-@@ -267,7 +267,7 @@
- if not (can_create_job or can_nest_jobs):
- # Since we've warned, we just log info here to inform you
- # of the consequence of setting ignore_children = True
-- print "ProcessManager NOT managing child processes"
-+ print("ProcessManager NOT managing child processes")
-
- # create the process
- hp, ht, pid, tid = winprocess.CreateProcess(
-@@ -534,11 +534,11 @@
-
- if rc == winprocess.WAIT_TIMEOUT:
- # The process isn't dead, so kill it
-- print "Timed out waiting for process to close, attempting TerminateProcess"
-+ print("Timed out waiting for process to close, attempting TerminateProcess")
- self.kill()
- elif rc == winprocess.WAIT_OBJECT_0:
- # We caught WAIT_OBJECT_0, which indicates all is well
-- print "Single process terminated successfully"
-+ print("Single process terminated successfully")
- self.returncode = winprocess.GetExitCodeProcess(self._handle)
- else:
- # An error occured we should probably throw
-diff -aur firefox-52.9.0esr/build/moz.configure/checks.configure mozjs-fixed/build/moz.configure/checks.configure
---- firefox-52.9.0esr/build/moz.configure/checks.configure 2018-07-10 10:29:50.380000000 +0000
-+++ mozjs-fixed/build/moz.configure/checks.configure 2018-07-10 10:27:45.350000000 +0000
-@@ -52,7 +52,7 @@
- try:
- ret = func(*args, **kwargs)
- except FatalCheckError as e:
-- error = e.message
-+ error = str(e)
- display_ret = callback(ret) if callback else ret
- if display_ret is True:
- log.info('yes')
-diff -aur firefox-52.9.0esr/build/moz.configure/init.configure mozjs-fixed/build/moz.configure/init.configure
---- firefox-52.9.0esr/build/moz.configure/init.configure 2018-07-10 10:29:50.380000000 +0000
-+++ mozjs-fixed/build/moz.configure/init.configure 2018-07-10 10:23:19.960000000 +0000
-@@ -213,7 +213,7 @@
- def early_options():
- return set(
- option.env
-- for option in __sandbox__._options.itervalues()
-+ for option in list(__sandbox__._options.values())
- if option.env
- )
- return early_options
-@@ -297,7 +297,7 @@
- # There is also a quartet form:
- # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
- # But we can consider the "KERNEL-OPERATING_SYSTEM" as one.
-- cpu, manufacturer, os = triplet.split('-', 2)
-+ cpu, manufacturer, os = triplet.decode('utf-8').split('-', 2)
-
- # Autoconf uses config.sub to validate and canonicalize those triplets,
- # but the granularity of its results has never been satisfying to our
-@@ -727,7 +727,7 @@
- def all_configure_options(_):
- result = []
- previous = None
-- for option in __sandbox__._options.itervalues():
-+ for option in list(__sandbox__._options.values()):
- # __sandbox__._options contains items for both option.name and
- # option.env. But it's also an OrderedDict, meaning both are
- # consecutive.
-diff -aur firefox-52.9.0esr/build/moz.configure/old.configure mozjs-fixed/build/moz.configure/old.configure
---- firefox-52.9.0esr/build/moz.configure/old.configure 2018-07-10 10:29:50.380000000 +0000
-+++ mozjs-fixed/build/moz.configure/old.configure 2018-07-10 10:19:19.880000000 +0000
-@@ -360,7 +360,7 @@
- # Every variation of the exec() function I tried led to:
- # SyntaxError: unqualified exec is not allowed in function 'main' it
- # contains a nested function with free variables
-- exec code in raw_config
-+ exec(code, raw_config)
-
- # Ensure all the flags known to old-configure appear in the
- # @old_configure_options above.
-diff -aur firefox-52.9.0esr/build/moz.configure/toolchain.configure mozjs-fixed/build/moz.configure/toolchain.configure
---- firefox-52.9.0esr/build/moz.configure/toolchain.configure 2018-07-10 10:29:50.380000000 +0000
-+++ mozjs-fixed/build/moz.configure/toolchain.configure 2018-07-10 10:28:13.020000000 +0000
-@@ -244,7 +244,7 @@
- ('CPU', CPU_preprocessor_checks),
- ('KERNEL', kernel_preprocessor_checks),
- ):
-- for n, (value, condition) in enumerate(preprocessor_checks.iteritems()):
-+ for n, (value, condition) in enumerate(preprocessor_checks.items()):
- check += dedent('''\
- #%(if)s %(condition)s
- %%%(name)s "%(value)s"
-@@ -278,9 +278,9 @@
- data = {}
- for line in result.splitlines():
- if line.startswith(b'%'):
-- k, _, v = line.partition(' ')
-- k = k.lstrip('%')
-- data[k] = v.replace(' ', '').lstrip('"').rstrip('"')
-+ k, _, v = line.partition(b' ')
-+ k = k.lstrip(b'%').decode('utf-8')
-+ data[k] = v.replace(b' ', b'').lstrip(b'"').rstrip(b'"').decode('utf-8')
- log.debug('%s = %s', k, data[k])
-
- try:
-diff -aur firefox-52.9.0esr/build/moz.configure/util.configure mozjs-fixed/build/moz.configure/util.configure
---- firefox-52.9.0esr/build/moz.configure/util.configure 2018-07-10 10:29:50.380000000 +0000
-+++ mozjs-fixed/build/moz.configure/util.configure 2018-07-10 10:23:54.980000000 +0000
-@@ -299,6 +299,8 @@
- @imports(_from='mozbuild.configure.util', _import='Version', _as='_Version')
- def Version(v):
- 'A version number that can be compared usefully.'
-+ if isinstance(v, bytes):
-+ v = v.decode('utf-8')
- return _Version(v)
-
- # Denotes a deprecated option. Combines option() and @depends:
-diff -aur firefox-52.9.0esr/python/mozbuild/mozbuild/configure/__init__.py mozjs-fixed/python/mozbuild/mozbuild/configure/__init__.py
---- firefox-52.9.0esr/python/mozbuild/mozbuild/configure/__init__.py 2018-07-10 10:29:50.350000000 +0000
-+++ mozjs-fixed/python/mozbuild/mozbuild/configure/__init__.py 2018-07-10 10:24:33.200000000 +0000
-@@ -97,6 +97,9 @@
- ', '.join(repr(d) for d in self.dependencies),
- )
-
-+ def __hash__(self):
-+ return hash((str(self.func), tuple(self.dependencies), self.when))
-+
-
- class CombinedDependsFunction(DependsFunction):
- def __init__(self, sandbox, func, dependencies):
-@@ -142,6 +145,9 @@
- def __ne__(self, other):
- return not self == other
-
-+ def __hash__(self):
-+ return hash((str(self.func), tuple(self.dependencies)))
-+
- class SandboxedGlobal(dict):
- '''Identifiable dict type for use as function global'''
-
-@@ -192,7 +198,8 @@
- b: __builtins__[b]
- for b in ('None', 'False', 'True', 'int', 'bool', 'any', 'all', 'len',
- 'list', 'tuple', 'set', 'dict', 'isinstance', 'getattr',
-- 'hasattr', 'enumerate', 'range', 'zip')
-+ 'hasattr', 'enumerate', 'range', 'zip', '__build_class__',
-+ 'bytes', 'exec')
- }, __import__=forbidden_import, str=str)
-
- # Expose a limited set of functions from os.path
-@@ -267,7 +274,7 @@
- return method
- def wrapped(*args, **kwargs):
- out_args = [
-- arg.decode(encoding) if isinstance(arg, str) else arg
-+ arg.decode(encoding) if isinstance(arg, bytes) else arg
- for arg in args
- ]
- return method(*out_args, **kwargs)
-diff -aur firefox-52.9.0esr/python/mozbuild/mozbuild/configure/options.py mozjs-fixed/python/mozbuild/mozbuild/configure/options.py
---- firefox-52.9.0esr/python/mozbuild/mozbuild/configure/options.py 2018-07-10 10:29:50.350000000 +0000
-+++ mozjs-fixed/python/mozbuild/mozbuild/configure/options.py 2018-07-10 10:15:41.760000000 +0000
-@@ -65,6 +65,9 @@
- return '%s%s' % (self.__class__.__name__,
- super(OptionValue, self).__repr__())
-
-+ def __hash__(self):
-+ return hash(str(self))
-+
-
- class PositiveOptionValue(OptionValue):
- '''Represents the value for a positive option (--enable/--with/--foo)
-diff -aur firefox-52.9.0esr/python/mozbuild/mozbuild/configure/util.py mozjs-fixed/python/mozbuild/mozbuild/configure/util.py
---- firefox-52.9.0esr/python/mozbuild/mozbuild/configure/util.py 2018-07-10 10:29:50.350000000 +0000
-+++ mozjs-fixed/python/mozbuild/mozbuild/configure/util.py 2018-07-10 09:04:28.150000000 +0000
-@@ -200,7 +200,7 @@
- self._encoding = getpreferredencoding()
-
- def write(self, buf):
-- if self._encoding and isinstance(buf, str):
-+ if self._encoding and isinstance(buf, bytes):
- buf = buf.decode(self._encoding)
- lines = buf.splitlines()
- if not lines:
-diff -aur firefox-52.9.0esr/python/mozbuild/mozbuild/virtualenv.py mozjs-fixed/python/mozbuild/mozbuild/virtualenv.py
---- firefox-52.9.0esr/python/mozbuild/mozbuild/virtualenv.py 2018-07-10 10:29:50.350000000 +0000
-+++ mozjs-fixed/python/mozbuild/mozbuild/virtualenv.py 2018-07-10 10:11:47.710000000 +0000
-@@ -108,7 +108,7 @@
- """
- ver = subprocess.check_output([python, '-c', 'import sys; print(sys.hexversion)']).rstrip()
- with open(self.exe_info_path, 'w') as fh:
-- fh.write("%s\n" % ver)
-+ fh.write("%s\n" % ver.decode('utf-8'))
- fh.write("%s\n" % os.path.getsize(python))
-
- def up_to_date(self, python=sys.executable):
-@@ -207,7 +207,7 @@
- return self.virtualenv_root
-
- def packages(self):
-- with file(self.manifest_path, 'rU') as fh:
-+ with open(self.manifest_path, 'rU') as fh:
- packages = [line.rstrip().split(':')
- for line in fh]
- return packages
-@@ -530,9 +530,9 @@
-
- our = LooseVersion('%d.%d.%d' % (major, minor, micro))
-
-- if major != MINIMUM_PYTHON_MAJOR or our < MINIMUM_PYTHON_VERSION:
-- log_handle.write('Python %s or greater (but not Python 3) is '
-- 'required to build. ' % MINIMUM_PYTHON_VERSION)
-+ if our < MINIMUM_PYTHON_VERSION:
-+ log_handle.write('Python %s or greater is required to build. '
-+ % MINIMUM_PYTHON_VERSION)
- log_handle.write('You are running Python %s.\n' % our)
-
- if os.name in ('nt', 'ce'):
-diff -aur firefox-52.9.0esr/python/which/which.py mozjs-fixed/python/which/which.py
---- firefox-52.9.0esr/python/which/which.py 2018-07-10 10:29:50.380000000 +0000
-+++ mozjs-fixed/python/which/which.py 2018-07-10 10:20:16.770000000 +0000
-@@ -243,7 +243,7 @@
- If no match is found for the command, a WhichError is raised.
- """
- try:
-- match = whichgen(command, path, verbose, exts).next()
-+ match = next(whichgen(command, path, verbose, exts))
- except StopIteration:
- raise WhichError("Could not find '%s' on the path." % command)
- return match
---- firefox-52.9.0esr/build/moz.configure/old.configure.old 2018-07-10 10:32:48.550000000 +0000
-+++ firefox-52.9.0esr/build/moz.configure/old.configure 2018-07-10 10:35:32.440000000 +0000
-@@ -107,7 +107,7 @@
-
- # Make old-configure append to config.log, where we put our own log.
- # This could be done with a m4 macro, but it's way easier this way
-- script = script.replace('>./config.log', '>>./config.log')
-+ script = script.replace(b'>./config.log', b'>>./config.log')
-
- with open(old_configure, 'wb') as fh:
- fh.write(script)
---- firefox-52.9.0esr/build/subconfigure.py.old 2017-04-11 02:13:09.000000000 +0000
-+++ firefox-52.9.0esr/build/subconfigure.py 2018-07-10 10:38:08.910000000 +0000
-@@ -27,7 +27,7 @@
- return super(Pool, cls).__new__(cls)
-
- def imap_unordered(self, fn, iterable):
-- return itertools.imap(fn, iterable)
-+ return map(fn, iterable)
-
- def close(self):
- pass
-@@ -131,11 +131,11 @@
- is_set = cache.get('ac_cv_env_%s_set' % precious) == 'set'
- value = cache.get('ac_cv_env_%s_value' % precious) if is_set else None
- if value != env.get(precious):
-- print 'Removing %s because of %s value change from:' \
-- % (data['cache-file'], precious)
-- print ' %s' % (value if value is not None else 'undefined')
-- print 'to:'
-- print ' %s' % env.get(precious, 'undefined')
-+ print('Removing %s because of %s value change from:' \
-+ % (data['cache-file'], precious))
-+ print(' %s' % (value if value is not None else 'undefined'))
-+ print('to:')
-+ print(' %s' % env.get(precious, 'undefined'))
- os.remove(data['cache-file'])
- return True
- return False
-@@ -333,8 +333,8 @@
- # We're going to run it ourselves.
- command += ['--no-create']
-
-- print prefix_lines('configuring', relobjdir)
-- print prefix_lines('running %s' % ' '.join(command[:-1]), relobjdir)
-+ print(prefix_lines('configuring', relobjdir))
-+ print(prefix_lines('running %s' % ' '.join(command[:-1]), relobjdir))
- sys.stdout.flush()
- try:
- output += subprocess.check_output(command,
-@@ -368,7 +368,7 @@
-
- if not skip_config_status:
- if skip_configure:
-- print prefix_lines('running config.status', relobjdir)
-+ print(prefix_lines('running config.status', relobjdir))
- sys.stdout.flush()
- try:
- output += subprocess.check_output([data['shell'], '-c',
-@@ -410,7 +410,7 @@
- pool = Pool(len(subconfigures))
- for relobjdir, returncode, output in \
- pool.imap_unordered(run, subconfigures):
-- print prefix_lines(output, relobjdir)
-+ print(prefix_lines(output, relobjdir))
- sys.stdout.flush()
- ret = max(returncode, ret)
- if ret:
---- firefox-52.9.0esr/build/moz.configure/old.configure.old 2018-07-10 10:38:53.530000000 +0000
-+++ firefox-52.9.0esr/build/moz.configure/old.configure 2018-07-10 10:41:32.560000000 +0000
-@@ -394,7 +394,7 @@
- def post_old_configure(raw_config):
- for k, v in raw_config['substs']:
- set_old_configure_config(
-- k[1:-1], v[1:-1] if isinstance(v, types.StringTypes) else v)
-+ k[1:-1], v[1:-1] if isinstance(v, str) else v)
-
-- for k, v in dict(raw_config['defines']).iteritems():
-+ for k, v in dict(raw_config['defines']).items():
- set_old_configure_define(k[1:-1], v[1:-1])
---- firefox-52.9.0esr/configure.py (original)
-+++ firefox-52.9.0esr/configure.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import print_function, unicode_literals
-+
-
- import codecs
- import os
-@@ -45,11 +45,11 @@
-
- sanitized_config = {}
- sanitized_config['substs'] = {
-- k: sanitized_bools(v) for k, v in config.iteritems()
-+ k: sanitized_bools(v) for k, v in config.items()
- if k not in ('DEFINES', 'non_global_defines', 'TOPSRCDIR', 'TOPOBJDIR')
- }
- sanitized_config['defines'] = {
-- k: sanitized_bools(v) for k, v in config['DEFINES'].iteritems()
-+ k: sanitized_bools(v) for k, v in config['DEFINES'].items()
- }
- sanitized_config['non_global_defines'] = config['non_global_defines']
- sanitized_config['topsrcdir'] = config['TOPSRCDIR']
-@@ -71,7 +71,7 @@
- ''') % {'python': config['PYTHON'], 'encoding': encoding})
- # A lot of the build backend code is currently expecting byte
- # strings and breaks in subtle ways with unicode strings. (bug 1296508)
-- for k, v in sanitized_config.iteritems():
-+ for k, v in sanitized_config.items():
- fh.write('%s = encode(%s, encoding)\n' % (k, indented_repr(v)))
- fh.write("__all__ = ['topobjdir', 'topsrcdir', 'defines', "
- "'non_global_defines', 'substs', 'mozconfig']")
-@@ -88,7 +88,7 @@
- # executable permissions.
- os.chmod('config.status', 0o755)
- if config.get('MOZ_BUILD_APP') != 'js' or config.get('JS_STANDALONE'):
-- os.environ[b'WRITE_MOZINFO'] = b'1'
-+ os.environ['WRITE_MOZINFO'] = '1'
- from mozbuild.config_status import config_status
-
- # Some values in sanitized_config also have more complex types, such as
---- firefox-52.9.0esr/python/blessings/blessings/__init__.py.old 2017-04-11 02:13:23.000000000 +0000
-+++ firefox-52.9.0esr/python/blessings/blessings/__init__.py 2018-07-10 10:56:52.820000000 +0000
-@@ -333,7 +333,7 @@
- 'shadow', 'standout', 'subscript', 'superscript']))
-
-
--class ParametrizingString(unicode):
-+class ParametrizingString(str):
- """A Unicode string which can be called to parametrize it as a terminal capability"""
- def __new__(cls, formatting, normal=None):
- """Instantiate.
-@@ -343,7 +343,7 @@
- "normal" capability.
-
- """
-- new = unicode.__new__(cls, formatting)
-+ new = str.__new__(cls, formatting)
- new._normal = normal
- return new
-
-@@ -375,10 +375,10 @@
- raise
-
-
--class FormattingString(unicode):
-+class FormattingString(str):
- """A Unicode string which can be called upon a piece of text to wrap it in formatting"""
- def __new__(cls, formatting, normal):
-- new = unicode.__new__(cls, formatting)
-+ new = str.__new__(cls, formatting)
- new._normal = normal
- return new
-
-@@ -393,7 +393,7 @@
- return self + text + self._normal
-
-
--class NullCallableString(unicode):
-+class NullCallableString(str):
- """A dummy class to stand in for ``FormattingString`` and ``ParametrizingString``
-
- A callable bytestring that returns an empty Unicode when called with an int
-@@ -402,7 +402,7 @@
-
- """
- def __new__(cls):
-- new = unicode.__new__(cls, u'')
-+ new = str.__new__(cls, u'')
- return new
-
- def __call__(self, arg):
---- firefox-52.9.0esr/testing/mozbase/mozfile/mozfile/mozfile.py (original)
-+++ firefox-52.9.0esr/testing/mozbase/mozfile/mozfile/mozfile.py (refactored)
-@@ -6,7 +6,7 @@
-
- # We don't import all modules at the top for performance reasons. See Bug 1008943
-
--from __future__ import absolute_import
-+
-
- from contextlib import contextmanager
- import errno
-@@ -55,7 +55,7 @@
- try:
- bundle = zipfile.ZipFile(src)
- except Exception:
-- print "src: %s" % src
-+ print("src: %s" % src)
- raise
-
- namelist = bundle.namelist()
-@@ -161,8 +161,8 @@
-
- retry_count += 1
-
-- print '%s() failed for "%s". Reason: %s (%s). Retrying...' % \
-- (func.__name__, args, e.strerror, e.errno)
-+ print('%s() failed for "%s". Reason: %s (%s). Retrying...' % \
-+ (func.__name__, args, e.strerror, e.errno))
- time.sleep(retry_count * retry_delay)
- else:
- # If no exception has been thrown it should be done
-@@ -420,9 +420,9 @@
- Return True if thing looks like a URL.
- """
-
-- import urlparse
--
-- parsed = urlparse.urlparse(thing)
-+ import urllib.parse
-+
-+ parsed = urllib.parse.urlparse(thing)
- if 'scheme' in parsed:
- return len(parsed.scheme) >= 2
- else:
-@@ -436,7 +436,7 @@
- result of urllib2.urlopen()
- """
-
-- import urllib2
-+ import urllib.request, urllib.error, urllib.parse
-
- # handle file URLs separately due to python stdlib limitations
- if resource.startswith('file://'):
-@@ -446,4 +446,4 @@
- # if no scheme is given, it is a file path
-- return file(resource)
-+ return open(resource)
-
-- return urllib2.urlopen(resource)
-+ return urllib.request.urlopen(resource)
---- firefox-52.9.0esr/testing/mozbase/mozinfo/mozinfo/mozinfo.py (original)
-+++ firefox-52.9.0esr/testing/mozbase/mozinfo/mozinfo/mozinfo.py (refactored)
-@@ -8,7 +8,7 @@
- # linux) to the information; I certainly wouldn't want anyone parsing this
- # information and having behaviour depend on it
-
--from __future__ import absolute_import
-+
-
- import os
- import platform
-@@ -24,7 +24,7 @@
- class unknown(object):
- """marker class for unknown information"""
-
-- def __nonzero__(self):
-+ def __bool__(self):
- return False
-
- def __str__(self):
-@@ -184,7 +184,7 @@
- to a json file containing the new info.
- """
-
-- if isinstance(new_info, basestring):
-+ if isinstance(new_info, str):
- # lazy import
- import mozfile
- import json
-@@ -246,7 +246,7 @@
- update({})
-
- # exports
--__all__ = info.keys()
-+__all__ = list(info.keys())
- __all__ += ['is' + os_name.title() for os_name in choices['os']]
- __all__ += [
- 'info',
-@@ -284,17 +284,17 @@
-
- # print out choices if requested
- flag = False
-- for key, value in options.__dict__.items():
-+ for key, value in list(options.__dict__.items()):
- if value is True:
-- print '%s choices: %s' % (key, ' '.join([str(choice)
-- for choice in choices[key]]))
-+ print('%s choices: %s' % (key, ' '.join([str(choice)
-+ for choice in choices[key]])))
- flag = True
- if flag:
- return
-
- # otherwise, print out all info
-- for key, value in info.items():
-- print '%s: %s' % (key, value)
-+ for key, value in list(info.items()):
-+ print('%s: %s' % (key, value))
-
- if __name__ == '__main__':
- main()
---- firefox-52.9.0esr/testing/mozbase/mozinfo/mozinfo/string_version.py.old 2017-04-11 02:13:06.000000000 +0000
-+++ firefox-52.9.0esr/testing/mozbase/mozinfo/mozinfo/string_version.py 2018-07-10 11:10:56.140000000 +0000
-@@ -10,8 +10,10 @@
- A string version that can be compared with comparison operators.
- """
-
-+ def __new__(cls, value):
-+ return str.__new__(cls, value)
-+
- def __init__(self, vstring):
-- str.__init__(self, vstring)
- self.version = LooseVersion(vstring)
-
- def __repr__(self):
---- firefox-52.9.0esr/testing/mozbase/manifestparser/manifestparser/manifestparser.py (original)
-+++ firefox-52.9.0esr/testing/mozbase/manifestparser/manifestparser/manifestparser.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this file,
- # You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from StringIO import StringIO
-+from io import StringIO
- import json
- import fnmatch
- import os
-@@ -21,7 +21,7 @@
- __all__ = ['ManifestParser', 'TestManifest', 'convert']
-
- relpath = os.path.relpath
--string = (basestring,)
-+string = (str,)
-
-
- # path normalization
-@@ -178,7 +178,7 @@
-
- # otherwise an item
- # apply ancestor defaults, while maintaining current file priority
-- data = dict(self._ancestor_defaults.items() + data.items())
-+ data = dict(list(self._ancestor_defaults.items()) + list(data.items()))
-
- test = data
- test['name'] = section
-@@ -306,19 +306,19 @@
- # make some check functions
- if inverse:
- def has_tags(test):
-- return not tags.intersection(test.keys())
-+ return not tags.intersection(list(test.keys()))
-
- def dict_query(test):
-- for key, value in kwargs.items():
-+ for key, value in list(kwargs.items()):
- if test.get(key) == value:
- return False
- return True
- else:
- def has_tags(test):
-- return tags.issubset(test.keys())
-+ return tags.issubset(list(test.keys()))
-
- def dict_query(test):
-- for key, value in kwargs.items():
-+ for key, value in list(kwargs.items()):
- if test.get(key) != value:
- return False
- return True
-@@ -340,7 +340,7 @@
- """
- if tests is None:
- # Make sure to return all the manifests, even ones without tests.
-- return self.manifest_defaults.keys()
-+ return list(self.manifest_defaults.keys())
-
- manifests = []
- for test in tests:
-@@ -373,8 +373,8 @@
- raise IOError("Strict mode enabled, test paths must exist. "
- "The following test(s) are missing: %s" %
- json.dumps(missing_paths, indent=2))
-- print >> sys.stderr, "Warning: The following test(s) are missing: %s" % \
-- json.dumps(missing_paths, indent=2)
-+ print("Warning: The following test(s) are missing: %s" % \
-+ json.dumps(missing_paths, indent=2), file=sys.stderr)
- return missing
-
- def verifyDirectory(self, directories, pattern=None, extensions=None):
-@@ -385,7 +385,7 @@
- """
-
- files = set([])
-- if isinstance(directories, basestring):
-+ if isinstance(directories, str):
- directories = [directories]
-
- # get files in directories
-@@ -449,12 +449,12 @@
-
- # print the .ini manifest
- if global_tags or global_kwargs:
-- print >> fp, '[DEFAULT]'
-+ print('[DEFAULT]', file=fp)
- for tag in global_tags:
-- print >> fp, '%s =' % tag
-- for key, value in global_kwargs.items():
-- print >> fp, '%s = %s' % (key, value)
-- print >> fp
-+ print('%s =' % tag, file=fp)
-+ for key, value in list(global_kwargs.items()):
-+ print('%s = %s' % (key, value), file=fp)
-+ print(file=fp)
-
- for test in tests:
- test = test.copy() # don't overwrite
-@@ -465,7 +465,7 @@
- if self.rootdir:
- path = relpath(test['path'], self.rootdir)
- path = denormalize_path(path)
-- print >> fp, '[%s]' % path
-+ print('[%s]' % path, file=fp)
-
- # reserved keywords:
- reserved = ['path', 'name', 'here', 'manifest', 'relpath', 'ancestor-manifest']
-@@ -476,8 +476,8 @@
- continue
- if key in global_tags and not test[key]:
- continue
-- print >> fp, '%s = %s' % (key, test[key])
-- print >> fp
-+ print('%s = %s' % (key, test[key]), file=fp)
-+ print(file=fp)
-
- if close:
- # close the created file
-@@ -565,7 +565,7 @@
- message = "Missing test: '%s' does not exist!"
- if self.strict:
- raise IOError(message)
-- print >> sys.stderr, message + " Skipping."
-+ print(message + " Skipping.", file=sys.stderr)
- continue
- destination = os.path.join(rootdir, _relpath)
- shutil.copy(source, destination)
-@@ -578,7 +578,7 @@
- internal function to import directories
- """
-
-- if isinstance(pattern, basestring):
-+ if isinstance(pattern, str):
- patterns = [pattern]
- else:
- patterns = pattern
-@@ -670,9 +670,9 @@
- if (dirnames or filenames) and not (os.path.exists(manifest_path) and overwrite):
- with file(manifest_path, 'w') as manifest:
- for dirname in dirnames:
-- print >> manifest, '[include:%s]' % os.path.join(dirname, filename)
-+ print('[include:%s]' % os.path.join(dirname, filename), file=manifest)
- for _filename in filenames:
-- print >> manifest, '[%s]' % _filename
-+ print('[%s]' % _filename, file=manifest)
-
- # add to list of manifests
- manifest_dict.setdefault(directory, manifest_path)
-@@ -722,8 +722,8 @@
- for filename in filenames]
-
- # write to manifest
-- print >> write, '\n'.join(['[%s]' % denormalize_path(filename)
-- for filename in filenames])
-+ print('\n'.join(['[%s]' % denormalize_path(filename)
-+ for filename in filenames]), file=write)
-
- cls._walk_directories(directories, callback, pattern=pattern, ignore=ignore)
-
---- firefox-52.9.0esr/testing/mozbase/manifestparser/manifestparser/cli.py (original)
-+++ firefox-52.9.0esr/testing/mozbase/manifestparser/manifestparser/cli.py (refactored)
-@@ -81,7 +81,7 @@
- # parse the arguments
- try:
- kwargs, tags, args = parse_args(args)
-- except ParserError, e:
-+ except ParserError as e:
- self._parser.error(e.message)
-
- # make sure we have some manifests, otherwise it will
-@@ -132,7 +132,7 @@
- manifest = convert(args, pattern=options.pattern, ignore=options.ignore,
- write=options.in_place)
- if manifest:
-- print manifest
-+ print(manifest)
-
-
- class WriteCLI(CLICommand):
-@@ -146,7 +146,7 @@
- # parse the arguments
- try:
- kwargs, tags, args = parse_args(args)
-- except ParserError, e:
-+ except ParserError as e:
- self._parser.error(e.message)
-
- # make sure we have some manifests, otherwise it will
-@@ -175,9 +175,9 @@
- commands[args[0]](self._parser).parser().print_help()
- else:
- self._parser.print_help()
-- print '\nCommands:'
-+ print('\nCommands:')
- for command in sorted(commands):
-- print ' %s : %s' % (command, commands[command].__doc__.strip())
-+ print(' %s : %s' % (command, commands[command].__doc__.strip()))
-
-
- class UpdateCLI(CLICommand):
-@@ -190,7 +190,7 @@
- # parse the arguments
- try:
- kwargs, tags, args = parse_args(args)
-- except ParserError, e:
-+ except ParserError as e:
- self._parser.error(e.message)
-
- # make sure we have some manifests, otherwise it will
---- firefox-52.9.0esr/testing/mozbase/manifestparser/manifestparser/expression.py (original)
-+++ firefox-52.9.0esr/testing/mozbase/manifestparser/manifestparser/expression.py (refactored)
-@@ -275,7 +275,7 @@
- """
- if not isinstance(self.token, expected):
- raise Exception("Unexpected token!")
-- self.token = self.iter.next()
-+ self.token = next(self.iter)
-
- def expression(self, rbp=0):
- """
-@@ -283,11 +283,11 @@
- right binding power greater than rbp is encountered.
- """
- t = self.token
-- self.token = self.iter.next()
-+ self.token = next(self.iter)
- left = t.nud(self)
- while rbp < self.token.lbp:
- t = self.token
-- self.token = self.iter.next()
-+ self.token = next(self.iter)
- left = t.led(self, left)
- return left
-
-@@ -299,7 +299,7 @@
- """
- try:
- self.iter = self._tokenize()
-- self.token = self.iter.next()
-+ self.token = next(self.iter)
- return self.expression()
- except:
- extype, ex, tb = sys.exc_info()
-@@ -307,7 +307,7 @@
- raise ParseError("could not parse: "
- "%s\nexception: %svariables: %s" % (self.text,
- formatted,
-- self.valuemapping)), None, tb
-+ self.valuemapping)).with_traceback(tb)
-
- __call__ = parse
-
---- firefox-52.9.0esr/testing/mozbase/manifestparser/manifestparser/filters.py (original)
-+++ firefox-52.9.0esr/testing/mozbase/manifestparser/manifestparser/filters.py (refactored)
-@@ -92,7 +92,7 @@
- def __init__(self, *args, **kwargs):
- self.fmt_args = ', '.join(itertools.chain(
- [str(a) for a in args],
-- ['{}={}'.format(k, v) for k, v in kwargs.iteritems()]))
-+ ['{}={}'.format(k, v) for k, v in kwargs.items()]))
-
- def __eq__(self, other):
- if self.unique:
-@@ -249,7 +249,7 @@
- # be yielded for reporting purposes. Put them all in chunk 1 for
- # simplicity.
- if self.this_chunk == 1:
-- disabled_dirs = [v for k, v in tests_by_dir.iteritems()
-+ disabled_dirs = [v for k, v in tests_by_dir.items()
- if k not in ordered_dirs]
- for disabled_test in itertools.chain(*disabled_dirs):
- yield disabled_test
-@@ -326,7 +326,7 @@
-
- def __init__(self, tags):
- InstanceFilter.__init__(self, tags)
-- if isinstance(tags, basestring):
-+ if isinstance(tags, str):
- tags = [tags]
- self.tags = tags
-
-@@ -349,7 +349,7 @@
-
- def __init__(self, paths):
- InstanceFilter.__init__(self, paths)
-- if isinstance(paths, basestring):
-+ if isinstance(paths, str):
- paths = [paths]
- self.paths = paths
-
---- firefox-52.9.0esr/testing/mozbase/manifestparser/manifestparser/ini.py (original)
-+++ firefox-52.9.0esr/testing/mozbase/manifestparser/manifestparser/ini.py (refactored)
-@@ -27,7 +27,7 @@
- sections = []
- key = value = None
- section_names = set()
-- if isinstance(fp, basestring):
-- fp = file(fp)
-+ if isinstance(fp, str):
-+ fp = open(fp)
-
- # read the lines
-@@ -131,7 +131,7 @@
- 'support-files': '%s %s',
- }
- final_mapping = global_vars.copy()
-- for field_name, value in local_vars.items():
-+ for field_name, value in list(local_vars.items()):
- if field_name not in field_patterns or field_name not in global_vars:
- final_mapping[field_name] = value
- continue
---- firefox-52.9.0esr/python/mozbuild/mozbuild/util.py.old 2018-07-10 11:16:10.690000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/util.py 2018-07-10 23:36:02.250000000 +0000
-@@ -1254,10 +1254,10 @@
- encode(k, encoding): encode(v, encoding)
- for k, v in obj.items()
- }
-- if isinstance(obj, bytes):
-- return obj
- if isinstance(obj, str):
-- return obj.encode(encoding)
-+ return obj
-+ if isinstance(obj, bytes):
-+ return obj.decode(encoding)
- if isinstance(obj, Iterable):
- return [encode(i, encoding) for i in obj]
- return obj
---- firefox-52.9.0esr/python/mozbuild/mozbuild/util.py.old 2018-07-10 23:36:33.980000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/util.py 2018-07-10 23:41:51.900000000 +0000
-@@ -1179,6 +1179,9 @@
- POSSIBLE_VALUES = possible_values
- return EnumStringSubclass
-
-+ def __hash__(self):
-+ return hash(str(self))
-+
-
- def _escape_char(c):
- # str.encode('unicode_espace') doesn't escape quotes, presumably because
---- firefox-52.9.0esr/python/mozbuild/mozbuild/mozinfo.py.old 2018-07-10 23:42:19.390000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/mozinfo.py 2018-07-11 01:45:57.930000000 +0000
-@@ -155,6 +155,6 @@
- """
- build_conf = build_dict(config, env)
- if isinstance(file, str):
-- file = open(file, 'wb')
-+ file = open(file, 'w')
-
- json.dump(build_conf, file, sort_keys=True, indent=4)
---- firefox-52.9.0esr/python/mozbuild/mozbuild/jar.py.old 2018-07-11 01:46:26.540000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/jar.py 2018-07-11 02:02:36.010000000 +0000
-@@ -16,7 +16,7 @@
- import re
- import logging
- from time import localtime
--from MozZipFile import ZipFile
-+from zipfile import ZipFile
- from io import StringIO
- from collections import defaultdict
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/util.py.old 2018-07-11 02:05:38.530000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/util.py 2018-07-11 02:08:21.020000000 +0000
-@@ -987,8 +987,6 @@
- 'got %s, expected %s' % (fname,
- type(value), ftype))
-
-- super(TypedTuple, self).__init__(*args, **kwargs)
--
- TypedTuple._fields = fields
-
- return TypedTuple
---- firefox-52.9.0esr/build/moz.configure/init.configure.old 2018-07-11 02:08:50.000000000 +0000
-+++ firefox-52.9.0esr/build/moz.configure/init.configure 2018-07-11 04:04:26.600000000 +0000
-@@ -297,7 +297,9 @@
- # There is also a quartet form:
- # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
- # But we can consider the "KERNEL-OPERATING_SYSTEM" as one.
-- cpu, manufacturer, os = triplet.decode('utf-8').split('-', 2)
-+ if isinstance(triplet, bytes):
-+ triplet = triplet.decode('utf-8')
-+ cpu, manufacturer, os = triplet.split('-', 2)
-
- # Autoconf uses config.sub to validate and canonicalize those triplets,
- # but the granularity of its results has never been satisfying to our
---- firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/reader.py.old 2018-07-11 04:25:33.980000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/reader.py 2018-07-11 04:24:50.630000000 +0000
-@@ -441,6 +441,8 @@
- code = func.__code__
- firstlineno = code.co_firstlineno
- lines = sandbox._current_source.splitlines(True)
-+ if len(lines) and isinstance(lines[0], bytes):
-+ lines = [l.decode('utf-8') for l in lines]
- lines = inspect.getblock(lines[firstlineno - 1:])
-
- # The code lines we get out of inspect.getsourcelines look like
---- firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/reader.py.old 2018-07-11 04:25:57.090000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/reader.py 2018-07-11 04:29:46.140000000 +0000
-@@ -460,7 +460,7 @@
- # actually never calls __getitem__ and __setitem__, so we need to
- # modify the AST so that accesses to globals are properly directed
- # to a dict.
-- self._global_name = b'_data' # AST wants str for this, not unicode
-+ self._global_name = '_data' # AST wants str for this, not unicode
- # In case '_data' is a name used for a variable in the function code,
- # prepend more underscores until we find an unused name.
- while (self._global_name in code.co_names or
---- firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/context.py.old 2018-07-11 04:30:06.590000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/context.py 2018-07-11 04:35:38.670000000 +0000
-@@ -384,8 +384,8 @@
-
- def __cmp__(self, other):
- if isinstance(other, Path) and self.srcdir != other.srcdir:
-- return cmp(self.full_path, other.full_path)
-- return cmp(str(self), other)
-+ return self.full_path == other.full_path
-+ return str(self) == other
-
- # __cmp__ is not enough because unicode has __eq__, __ne__, etc. defined
- # and __cmp__ is only used for those when they don't exist.
---- firefox-52.9.0esr/mozglue/build/moz.build.old 2018-07-11 04:40:17.930000000 +0000
-+++ firefox-52.9.0esr/mozglue/build/moz.build 2018-07-11 04:42:00.830000000 +0000
-@@ -4,20 +4,15 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--# Build mozglue as a shared lib on Windows, OSX and Android.
-+# Build mozglue as a shared lib on Windows and OSX.
- # If this is ever changed, update MOZ_SHARED_MOZGLUE in browser/installer/Makefile.in
--if CONFIG['OS_TARGET'] in ('WINNT', 'Darwin', 'Android'):
-+if CONFIG['OS_TARGET'] in ('WINNT', 'Darwin'):
- SharedLibrary('mozglue')
- else:
- Library('mozglue')
-
- SDK_LIBRARY = True
-
--if CONFIG['OS_TARGET'] == 'Android':
-- SOURCES += [
-- 'BionicGlue.cpp',
-- ]
--
- if CONFIG['MOZ_ASAN']:
- SOURCES += [
- 'AsanOptions.cpp',
---- firefox-52.9.0esr/js/src/moz.build.old 2017-04-11 02:13:16.000000000 +0000
-+++ firefox-52.9.0esr/js/src/moz.build 2018-07-11 04:43:59.920000000 +0000
-@@ -707,7 +707,7 @@
- CXXFLAGS += ['-wd4577']
- CXXFLAGS += ['-wd4312']
-
--if CONFIG['OS_ARCH'] not in ('WINNT', 'HP-UX'):
-+if CONFIG['OS_ARCH'] != 'WINNT':
- OS_LIBS += [
- 'm',
- ]
-@@ -722,13 +722,13 @@
- 'dl',
- ]
-
--if CONFIG['OS_ARCH'] == 'SunOS':
-- OS_LIBS += [
-- 'posix4',
-- 'dl',
-- 'nsl',
-- 'socket',
-- ]
-+#if CONFIG['OS_ARCH'] == 'SunOS':
-+# OS_LIBS += [
-+# 'posix4',
-+# 'dl',
-+# 'nsl',
-+# 'socket',
-+# ]
-
- OS_LIBS += CONFIG['REALTIME_LIBS']
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/util.py.old 2018-07-11 04:44:24.900000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/util.py 2018-07-11 04:46:47.310000000 +0000
-@@ -267,6 +267,10 @@
- if 'b' in self.mode:
- writemode += 'b'
- with open(self.name, writemode) as file:
-+ if 'b' in self.mode and isinstance(buf, str):
-+ buf = buf.encode('utf-8')
-+ elif 'b' not in self.mode and isinstance(buf, bytes):
-+ buf = buf.decode('utf-8')
- file.write(buf)
-
- if self._capture_diff:
---- firefox-52.9.0esr/python/mozbuild/mozbuild/backend/recursivemake.py.old 2018-07-11 04:47:15.020000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/backend/recursivemake.py 2018-07-11 04:53:51.750000000 +0000
-@@ -77,86 +77,86 @@
- from functools import reduce
-
- MOZBUILD_VARIABLES = [
-- b'ANDROID_APK_NAME',
-- b'ANDROID_APK_PACKAGE',
-- b'ANDROID_ASSETS_DIRS',
-- b'ANDROID_EXTRA_PACKAGES',
-- b'ANDROID_EXTRA_RES_DIRS',
-- b'ANDROID_GENERATED_RESFILES',
-- b'ANDROID_RES_DIRS',
-- b'ASFLAGS',
-- b'CMSRCS',
-- b'CMMSRCS',
-- b'CPP_UNIT_TESTS',
-- b'DIRS',
-- b'DIST_INSTALL',
-- b'EXTRA_DSO_LDOPTS',
-- b'EXTRA_JS_MODULES',
-- b'EXTRA_PP_COMPONENTS',
-- b'EXTRA_PP_JS_MODULES',
-- b'FORCE_SHARED_LIB',
-- b'FORCE_STATIC_LIB',
-- b'FINAL_LIBRARY',
-- b'HOST_CFLAGS',
-- b'HOST_CSRCS',
-- b'HOST_CMMSRCS',
-- b'HOST_CXXFLAGS',
-- b'HOST_EXTRA_LIBS',
-- b'HOST_LIBRARY_NAME',
-- b'HOST_PROGRAM',
-- b'HOST_SIMPLE_PROGRAMS',
-- b'IS_COMPONENT',
-- b'JAR_MANIFEST',
-- b'JAVA_JAR_TARGETS',
-- b'LD_VERSION_SCRIPT',
-- b'LIBRARY_NAME',
-- b'LIBS',
-- b'MAKE_FRAMEWORK',
-- b'MODULE',
-- b'NO_DIST_INSTALL',
-- b'NO_EXPAND_LIBS',
-- b'NO_INTERFACES_MANIFEST',
-- b'NO_JS_MANIFEST',
-- b'OS_LIBS',
-- b'PARALLEL_DIRS',
-- b'PREF_JS_EXPORTS',
-- b'PROGRAM',
-- b'PYTHON_UNIT_TESTS',
-- b'RESOURCE_FILES',
-- b'SDK_HEADERS',
-- b'SDK_LIBRARY',
-- b'SHARED_LIBRARY_LIBS',
-- b'SHARED_LIBRARY_NAME',
-- b'SIMPLE_PROGRAMS',
-- b'SONAME',
-- b'STATIC_LIBRARY_NAME',
-- b'TEST_DIRS',
-- b'TOOL_DIRS',
-+ 'ANDROID_APK_NAME',
-+ 'ANDROID_APK_PACKAGE',
-+ 'ANDROID_ASSETS_DIRS',
-+ 'ANDROID_EXTRA_PACKAGES',
-+ 'ANDROID_EXTRA_RES_DIRS',
-+ 'ANDROID_GENERATED_RESFILES',
-+ 'ANDROID_RES_DIRS',
-+ 'ASFLAGS',
-+ 'CMSRCS',
-+ 'CMMSRCS',
-+ 'CPP_UNIT_TESTS',
-+ 'DIRS',
-+ 'DIST_INSTALL',
-+ 'EXTRA_DSO_LDOPTS',
-+ 'EXTRA_JS_MODULES',
-+ 'EXTRA_PP_COMPONENTS',
-+ 'EXTRA_PP_JS_MODULES',
-+ 'FORCE_SHARED_LIB',
-+ 'FORCE_STATIC_LIB',
-+ 'FINAL_LIBRARY',
-+ 'HOST_CFLAGS',
-+ 'HOST_CSRCS',
-+ 'HOST_CMMSRCS',
-+ 'HOST_CXXFLAGS',
-+ 'HOST_EXTRA_LIBS',
-+ 'HOST_LIBRARY_NAME',
-+ 'HOST_PROGRAM',
-+ 'HOST_SIMPLE_PROGRAMS',
-+ 'IS_COMPONENT',
-+ 'JAR_MANIFEST',
-+ 'JAVA_JAR_TARGETS',
-+ 'LD_VERSION_SCRIPT',
-+ 'LIBRARY_NAME',
-+ 'LIBS',
-+ 'MAKE_FRAMEWORK',
-+ 'MODULE',
-+ 'NO_DIST_INSTALL',
-+ 'NO_EXPAND_LIBS',
-+ 'NO_INTERFACES_MANIFEST',
-+ 'NO_JS_MANIFEST',
-+ 'OS_LIBS',
-+ 'PARALLEL_DIRS',
-+ 'PREF_JS_EXPORTS',
-+ 'PROGRAM',
-+ 'PYTHON_UNIT_TESTS',
-+ 'RESOURCE_FILES',
-+ 'SDK_HEADERS',
-+ 'SDK_LIBRARY',
-+ 'SHARED_LIBRARY_LIBS',
-+ 'SHARED_LIBRARY_NAME',
-+ 'SIMPLE_PROGRAMS',
-+ 'SONAME',
-+ 'STATIC_LIBRARY_NAME',
-+ 'TEST_DIRS',
-+ 'TOOL_DIRS',
- # XXX config/Makefile.in specifies this in a make invocation
- #'USE_EXTENSION_MANIFEST',
-- b'XPCSHELL_TESTS',
-- b'XPIDL_MODULE',
-+ 'XPCSHELL_TESTS',
-+ 'XPIDL_MODULE',
- ]
-
- DEPRECATED_VARIABLES = [
-- b'ANDROID_RESFILES',
-- b'EXPORT_LIBRARY',
-- b'EXTRA_LIBS',
-- b'HOST_LIBS',
-- b'LIBXUL_LIBRARY',
-- b'MOCHITEST_A11Y_FILES',
-- b'MOCHITEST_BROWSER_FILES',
-- b'MOCHITEST_BROWSER_FILES_PARTS',
-- b'MOCHITEST_CHROME_FILES',
-- b'MOCHITEST_FILES',
-- b'MOCHITEST_FILES_PARTS',
-- b'MOCHITEST_METRO_FILES',
-- b'MOCHITEST_ROBOCOP_FILES',
-- b'MODULE_OPTIMIZE_FLAGS',
-- b'MOZ_CHROME_FILE_FORMAT',
-- b'SHORT_LIBNAME',
-- b'TESTING_JS_MODULES',
-- b'TESTING_JS_MODULE_DIR',
-+ 'ANDROID_RESFILES',
-+ 'EXPORT_LIBRARY',
-+ 'EXTRA_LIBS',
-+ 'HOST_LIBS',
-+ 'LIBXUL_LIBRARY',
-+ 'MOCHITEST_A11Y_FILES',
-+ 'MOCHITEST_BROWSER_FILES',
-+ 'MOCHITEST_BROWSER_FILES_PARTS',
-+ 'MOCHITEST_CHROME_FILES',
-+ 'MOCHITEST_FILES',
-+ 'MOCHITEST_FILES_PARTS',
-+ 'MOCHITEST_METRO_FILES',
-+ 'MOCHITEST_ROBOCOP_FILES',
-+ 'MODULE_OPTIMIZE_FLAGS',
-+ 'MOZ_CHROME_FILE_FORMAT',
-+ 'SHORT_LIBNAME',
-+ 'TESTING_JS_MODULES',
-+ 'TESTING_JS_MODULE_DIR',
- ]
-
- MOZBUILD_VARIABLES_MESSAGE = 'It should only be defined in moz.build files.'
-@@ -758,7 +758,7 @@
- rule.add_dependencies(['$(CURDIR)/%: %'])
-
- def _check_blacklisted_variables(self, makefile_in, makefile_content):
-- if b'EXTERNALLY_MANAGED_MAKE_FILE' in makefile_content:
-+ if 'EXTERNALLY_MANAGED_MAKE_FILE' in makefile_content:
- # Bypass the variable restrictions for externally managed makefiles.
- return
-
-@@ -765,7 +765,7 @@
- for l in makefile_content.splitlines():
- l = l.strip()
- # Don't check comments
-- if l.startswith(b'#'):
-+ if l.startswith('#'):
- continue
- for x in chain(MOZBUILD_VARIABLES, DEPRECATED_VARIABLES):
- if x not in l:
-@@ -822,11 +822,11 @@
- # Skip every directory but those with a Makefile
- # containing a tools target, or XPI_PKGNAME or
- # INSTALL_EXTENSION_ID.
-- for t in (b'XPI_PKGNAME', b'INSTALL_EXTENSION_ID',
-- b'tools'):
-+ for t in ('XPI_PKGNAME', 'INSTALL_EXTENSION_ID',
-+ 'tools'):
- if t not in content:
- continue
-- if t == b'tools' and not re.search('(?:^|\s)tools.*::', content, re.M):
-+ if t == 'tools' and not re.search('(?:^|\s)tools.*::', content, re.M):
- continue
- if objdir == self.environment.topobjdir:
- continue
-@@ -1422,20 +1422,20 @@
- pp.context.update(extra)
- if not pp.context.get('autoconfmk', ''):
- pp.context['autoconfmk'] = 'autoconf.mk'
-- pp.handleLine(b'# THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT MODIFY BY HAND.\n');
-- pp.handleLine(b'DEPTH := @DEPTH@\n')
-- pp.handleLine(b'topobjdir := @topobjdir@\n')
-- pp.handleLine(b'topsrcdir := @top_srcdir@\n')
-- pp.handleLine(b'srcdir := @srcdir@\n')
-- pp.handleLine(b'VPATH := @srcdir@\n')
-- pp.handleLine(b'relativesrcdir := @relativesrcdir@\n')
-- pp.handleLine(b'include $(DEPTH)/config/@autoconfmk@\n')
-+ pp.handleLine('# THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT MODIFY BY HAND.\n');
-+ pp.handleLine('DEPTH := @DEPTH@\n')
-+ pp.handleLine('topobjdir := @topobjdir@\n')
-+ pp.handleLine('topsrcdir := @top_srcdir@\n')
-+ pp.handleLine('srcdir := @srcdir@\n')
-+ pp.handleLine('VPATH := @srcdir@\n')
-+ pp.handleLine('relativesrcdir := @relativesrcdir@\n')
-+ pp.handleLine('include $(DEPTH)/config/@autoconfmk@\n')
- if not stub:
- pp.do_include(obj.input_path)
- # Empty line to avoid failures when last line in Makefile.in ends
- # with a backslash.
-- pp.handleLine(b'\n')
-- pp.handleLine(b'include $(topsrcdir)/config/recurse.mk\n')
-+ pp.handleLine('\n')
-+ pp.handleLine('include $(topsrcdir)/config/recurse.mk\n')
- if not stub:
- # Adding the Makefile.in here has the desired side-effect
- # that if the Makefile.in disappears, this will force
---- firefox-52.9.0esr/python/mozbuild/mozpack/manifests.py.old 2018-07-11 04:54:39.260000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozpack/manifests.py 2018-07-11 04:57:31.710000000 +0000
-@@ -115,7 +115,7 @@
- self._source_files = set()
-
- if path or fileobj:
-- with _auto_fileobj(path, fileobj, 'rb') as fh:
-+ with _auto_fileobj(path, fileobj, 'r') as fh:
- self._source_files.add(fh.name)
- self._load_from_fileobj(fh)
-
-@@ -174,7 +174,7 @@
- dest, content = fields[1:]
-
- self.add_content(
-- self._decode_field_entry(content).encode('utf-8'), dest)
-+ self._decode_field_entry(content), dest)
- continue
-
- # Don't fail for non-actionable items, allowing
-@@ -236,7 +236,7 @@
-
- It is an error if both are specified.
- """
-- with _auto_fileobj(path, fileobj, 'wb') as fh:
-+ with _auto_fileobj(path, fileobj, 'w') as fh:
- fh.write('%d\n' % self.CURRENT_VERSION)
-
- for dest in sorted(self._dests):
-@@ -244,8 +244,7 @@
-
- parts = ['%d' % entry[0], dest]
- parts.extend(entry[1:])
-- fh.write('%s\n' % self.FIELD_SEPARATOR.join(
-- p.encode('utf-8') for p in parts))
-+ fh.write('%s\n' % self.FIELD_SEPARATOR.join(parts))
-
- def add_symlink(self, source, dest):
- """Add a symlink to this manifest.
-@@ -391,7 +390,7 @@
- if install_type == self.CONTENT:
- # GeneratedFile expect the buffer interface, which the unicode
- # type doesn't have, so encode to a str.
-- content = self._decode_field_entry(entry[1]).encode('utf-8')
-+ content = self._decode_field_entry(entry[1])
- registry.add(dest, GeneratedFile(content))
- continue
-
---- firefox-52.9.0esr/config/MozZipFile.py (original)
-+++ firefox-52.9.0esr/config/MozZipFile.py (refactored)
-@@ -18,7 +18,7 @@
- def __init__(self, file, mode="r", compression=zipfile.ZIP_STORED,
- lock = False):
- if lock:
-- assert isinstance(file, basestring)
-+ assert isinstance(file, str)
- self.lockfile = lock_file(file + '.lck')
- else:
- self.lockfile = None
-@@ -46,7 +46,7 @@
- date_time=time.localtime(time.time()))
- zinfo.compress_type = self.compression
- # Add some standard UNIX file access permissions (-rw-r--r--).
-- zinfo.external_attr = (0x81a4 & 0xFFFF) << 16L
-+ zinfo.external_attr = (0x81a4 & 0xFFFF) << 16
- else:
- zinfo = zinfo_or_arcname
-
-@@ -58,7 +58,7 @@
- # as the old, reuse the existing entry.
-
- doSeek = False # store if we need to seek to the eof after overwriting
-- if self.NameToInfo.has_key(zinfo.filename):
-+ if zinfo.filename in self.NameToInfo:
- # Find the last ZipInfo with our name.
- # Last, because that's catching multiple overwrites
- i = len(self.filelist)
-@@ -109,14 +109,14 @@
- # adjust file mode if we originally just wrote, now we rewrite
- self.fp.close()
- self.fp = open(self.filename, 'r+b')
-- all = map(lambda zi: (zi, True), self.filelist) + \
-- map(lambda zi: (zi, False), self._remove)
-+ all = [(zi, True) for zi in self.filelist] + \
-+ [(zi, False) for zi in self._remove]
- all.sort(lambda l, r: cmp(l[0].header_offset, r[0].header_offset))
- # empty _remove for multiple closes
- self._remove = []
-
- lengths = [all[i+1][0].header_offset - all[i][0].header_offset
-- for i in xrange(len(all)-1)]
-+ for i in range(len(all)-1)]
- lengths.append(self.end - all[-1][0].header_offset)
- to_pos = 0
- for (zi, keep), length in zip(all, lengths):
---- firefox-52.9.0esr/config/check_spidermonkey_style.py (original)
-+++ firefox-52.9.0esr/config/check_spidermonkey_style.py (refactored)
-@@ -35,7 +35,7 @@
- # isolation, but don't try to do any order checking between such blocks.
- #----------------------------------------------------------------------------
-
--from __future__ import print_function
-+
-
- import difflib
- import os
-@@ -270,7 +270,7 @@
- edges[inclname] = set()
-
- # Process all the JS files.
-- for filename in js_names.keys():
-+ for filename in list(js_names.keys()):
- inclname = js_names[filename]
- file_kind = FileKind.get(filename)
- if file_kind == FileKind.C or file_kind == FileKind.CPP or \
---- firefox-52.9.0esr/config/expandlibs.py (original)
-+++ firefox-52.9.0esr/config/expandlibs.py (refactored)
-@@ -26,7 +26,7 @@
- descriptor contains. And for each of these LIBS, also apply the same
- rules.
- '''
--from __future__ import with_statement
-+
- import sys, os, errno
- import expandlibs_config as conf
-
-@@ -36,7 +36,7 @@
- if dir and not os.path.exists(dir):
- try:
- os.makedirs(dir)
-- except OSError, error:
-+ except OSError as error:
- if error.errno != errno.EEXIST:
- raise
-
-@@ -140,4 +140,4 @@
- return [relativize(arg)]
-
- if __name__ == '__main__':
-- print " ".join(ExpandArgs(sys.argv[1:]))
-+ print(" ".join(ExpandArgs(sys.argv[1:])))
---- firefox-52.9.0esr/config/expandlibs_exec.py (original)
-+++ firefox-52.9.0esr/config/expandlibs_exec.py (refactored)
-@@ -20,7 +20,7 @@
- relevant linker options to change the order in which the linker puts the
- symbols appear in the resulting binary. Only works for ELF targets.
- '''
--from __future__ import with_statement
-+
- import sys
- import os
- from expandlibs import (
-@@ -304,11 +304,11 @@
- return syms
-
- def print_command(out, args):
-- print >>out, "Executing: " + " ".join(args)
-+ print("Executing: " + " ".join(args), file=out)
- for tmp in [f for f in args.tmp if os.path.isfile(f)]:
-- print >>out, tmp + ":"
-+ print(tmp + ":", file=out)
- with open(tmp) as file:
-- print >>out, "".join([" " + l for l in file.readlines()])
-+ print("".join([" " + l for l in file.readlines()]), file=out)
- out.flush()
-
- def main(args, proc_callback=None):
-@@ -338,8 +338,8 @@
- proc = subprocess.Popen(args, stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
- if proc_callback:
- proc_callback(proc)
-- except Exception, e:
-- print >>sys.stderr, 'error: Launching', args, ':', e
-+ except Exception as e:
-+ print('error: Launching', args, ':', e, file=sys.stderr)
- raise e
- (stdout, stderr) = proc.communicate()
- if proc.returncode and not options.verbose:
---- firefox-52.9.0esr/config/expandlibs_gen.py (original)
-+++ firefox-52.9.0esr/config/expandlibs_gen.py (refactored)
-@@ -5,7 +5,7 @@
- '''Given a list of object files and library names, prints a library
- descriptor to standard output'''
-
--from __future__ import with_statement
-+
- import sys
- import os
- import expandlibs_config as conf
-@@ -38,4 +38,4 @@
-
- ensureParentDir(options.output)
- with open(options.output, 'w') as outfile:
-- print >>outfile, generate(args)
-+ print(generate(args), file=outfile)
---- firefox-52.9.0esr/config/find_OOM_errors.py (original)
-+++ firefox-52.9.0esr/config/find_OOM_errors.py (refactored)
-@@ -2,7 +2,7 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
--from __future__ import print_function
-+
-
- usage = """%prog: A test for OOM conditions in the shell.
-
-@@ -95,12 +95,12 @@
- """Keep track of the amount of times individual lines occur, in order to
- prioritize the errors which occur most frequently."""
- counts = {}
-- for string,count in blacklist.items():
-+ for string,count in list(blacklist.items()):
- for line in string.split("\n"):
- counts[line] = counts.get(line, 0) + count
-
- lines = []
-- for k,v in counts.items():
-+ for k,v in list(counts.items()):
- lines.append("{0:6}: {1}".format(v, k))
-
- lines.sort()
---- firefox-52.9.0esr/config/link.py (original)
-+++ firefox-52.9.0esr/config/link.py (refactored)
-@@ -18,7 +18,7 @@
- time.sleep(0.5)
- idleTime += 0.5
- if idleTime > 20 * 60:
-- print "Still linking, 20 minutes passed..."
-+ print("Still linking, 20 minutes passed...")
- sys.stdout.flush()
- idleTime = 0
-
-@@ -42,6 +42,6 @@
-
- if __name__ == "__main__":
- if len(sys.argv) < 2:
-- print >>sys.stderr, "Usage: link.py <commandline>"
-+ print("Usage: link.py <commandline>", file=sys.stderr)
- sys.exit(1)
- sys.exit(wrap_linker(sys.argv[1:]))
---- firefox-52.9.0esr/config/mozunit.py (original)
-+++ firefox-52.9.0esr/config/mozunit.py (refactored)
-@@ -140,7 +140,7 @@
- '''
- def __init__(self, files = {}):
- self.files = {}
-- for name, content in files.iteritems():
-+ for name, content in files.items():
- self.files[normcase(os.path.abspath(name))] = content
-
- def __call__(self, name, mode = 'r'):
-@@ -158,19 +158,19 @@
- return file
-
- def __enter__(self):
-- import __builtin__
-- self.open = __builtin__.open
-+ import builtins
-+ self.open = builtins.open
- self._orig_path_exists = os.path.exists
- self._orig_path_isdir = os.path.isdir
- self._orig_path_isfile = os.path.isfile
-- __builtin__.open = self
-+ builtins.open = self
- os.path.exists = self._wrapped_exists
- os.path.isdir = self._wrapped_isdir
- os.path.isfile = self._wrapped_isfile
-
- def __exit__(self, type, value, traceback):
-- import __builtin__
-- __builtin__.open = self.open
-+ import builtins
-+ builtins.open = self.open
- os.path.exists = self._orig_path_exists
- os.path.isdir = self._orig_path_isdir
- os.path.isfile = self._orig_path_isfile
---- firefox-52.9.0esr/config/nsinstall.py (original)
-+++ firefox-52.9.0esr/config/nsinstall.py (refactored)
-@@ -9,7 +9,7 @@
- # a full build environment set up.
- # The basic limitation is, it doesn't even try to link and ignores
- # all related options.
--from __future__ import print_function
-+
- from optparse import OptionParser
- import mozfile
- import os
-@@ -149,7 +149,7 @@
-
- # nsinstall as a native command is always UTF-8
- def nsinstall(argv):
-- return _nsinstall_internal([unicode(arg, "utf-8") for arg in argv])
-+ return _nsinstall_internal([str(arg, "utf-8") for arg in argv])
-
- if __name__ == '__main__':
- # sys.argv corrupts characters outside the system code page on Windows
-@@ -175,8 +175,8 @@
- else:
- # For consistency, do it on Unix as well
- if sys.stdin.encoding is not None:
-- argv = [unicode(arg, sys.stdin.encoding) for arg in sys.argv]
-+ argv = [str(arg, sys.stdin.encoding) for arg in sys.argv]
- else:
-- argv = [unicode(arg) for arg in sys.argv]
-+ argv = [str(arg) for arg in sys.argv]
-
- sys.exit(_nsinstall_internal(argv[1:]))
---- firefox-52.9.0esr/config/printconfigsetting.py (original)
-+++ firefox-52.9.0esr/config/printconfigsetting.py (refactored)
-@@ -5,12 +5,12 @@
- import configobj
- import sys
- import re
--from StringIO import StringIO
-+from io import StringIO
-
- try:
- (file, section, key) = sys.argv[1:]
- except ValueError:
-- print "Usage: printconfigsetting.py <file> <section> <setting>"
-+ print("Usage: printconfigsetting.py <file> <section> <setting>")
- sys.exit(1)
-
- with open(file) as fh:
-@@ -21,11 +21,11 @@
- try:
- s = c[section]
- except KeyError:
-- print >>sys.stderr, "Section [%s] not found." % section
-+ print("Section [%s] not found." % section, file=sys.stderr)
- sys.exit(1)
-
- try:
-- print s[key]
-+ print(s[key])
- except KeyError:
-- print >>sys.stderr, "Key %s not found." % key
-+ print("Key %s not found." % key, file=sys.stderr)
- sys.exit(1)
---- firefox-52.9.0esr/config/pythonpath.py (original)
-+++ firefox-52.9.0esr/config/pythonpath.py (refactored)
-@@ -9,7 +9,7 @@
-
- def main(args):
- def usage():
-- print >>sys.stderr, "pythonpath.py -I directory script.py [args...]"
-+ print("pythonpath.py -I directory script.py [args...]", file=sys.stderr)
- sys.exit(150)
-
- paths = []
-@@ -45,7 +45,7 @@
- frozenglobals['__name__'] = '__main__'
- frozenglobals['__file__'] = script
-
-- execfile(script, frozenglobals)
-+ exec(compile(open(script).read(), script, 'exec'), frozenglobals)
-
- # Freeze scope here ... why this makes things work I have no idea ...
- frozenglobals = globals()
---- firefox-52.9.0esr/config/rebuild_check.py (original)
-+++ firefox-52.9.0esr/config/rebuild_check.py (refactored)
-@@ -18,7 +18,7 @@
- deps = args[1:]
- t = mtime(target)
- if t < 0:
-- print target
-+ print(target)
- return
-
- newer = []
-@@ -31,13 +31,13 @@
- newer.append(dep)
-
- if newer and removed:
-- print 'Rebuilding %s because %s changed and %s was removed' % (target, ', '.join(newer), ', '.join(removed))
-+ print('Rebuilding %s because %s changed and %s was removed' % (target, ', '.join(newer), ', '.join(removed)))
- elif newer:
-- print 'Rebuilding %s because %s changed' % (target, ', '.join(newer))
-+ print('Rebuilding %s because %s changed' % (target, ', '.join(newer)))
- elif removed:
-- print 'Rebuilding %s because %s was removed' % (target, ', '.join(removed))
-+ print('Rebuilding %s because %s was removed' % (target, ', '.join(removed)))
- else:
-- print 'Rebuilding %s for an unknown reason' % target
-+ print('Rebuilding %s for an unknown reason' % target)
-
- if __name__ == '__main__':
- import sys
---- firefox-52.9.0esr/config/tests/unit-expandlibs.py (original)
-+++ firefox-52.9.0esr/config/tests/unit-expandlibs.py (refactored)
-@@ -7,7 +7,7 @@
- from shutil import rmtree
- import mozunit
-
--from UserString import UserString
-+from collections import UserString
- # Create a controlled configuration for use by expandlibs
- config_win = {
- 'AR': 'lib',
-@@ -120,8 +120,7 @@
- del dict[name]
- return type.__new__(cls, clsName, bases, dict)
-
--class TestCaseWithTmpDir(unittest.TestCase):
-- __metaclass__ = ReplicateTests
-+class TestCaseWithTmpDir(unittest.TestCase, metaclass=ReplicateTests):
- def init(self):
- self.tmpdir = os.path.abspath(mkdtemp(dir=os.curdir))
-
---- firefox-52.9.0esr/config/tests/unit-nsinstall.py (original)
-+++ firefox-52.9.0esr/config/tests/unit-nsinstall.py (refactored)
-@@ -28,9 +28,9 @@
- # Unicode strings means non-ASCII children can be deleted properly on
- # Windows
- if sys.stdin.encoding is None:
-- tmpdir = unicode(self.tmpdir)
-+ tmpdir = str(self.tmpdir)
- else:
-- tmpdir = unicode(self.tmpdir, sys.stdin.encoding)
-+ tmpdir = str(self.tmpdir, sys.stdin.encoding)
- rmtree(tmpdir)
-
- # utility methods for tests
-@@ -50,14 +50,14 @@
- "Test nsinstall -D <dir>"
- testdir = os.path.join(self.tmpdir, "test")
- self.assertEqual(nsinstall(["-D", testdir]), 0)
-- self.assert_(os.path.isdir(testdir))
-+ self.assertTrue(os.path.isdir(testdir))
-
- def test_nsinstall_basic(self):
- "Test nsinstall <file> <dir>"
- testfile = self.touch("testfile")
- testdir = self.mkdirs("testdir")
- self.assertEqual(nsinstall([testfile, testdir]), 0)
-- self.assert_(os.path.isfile(os.path.join(testdir, "testfile")))
-+ self.assertTrue(os.path.isfile(os.path.join(testdir, "testfile")))
-
- def test_nsinstall_basic_recursive(self):
- "Test nsinstall <dir> <dest dir>"
-@@ -76,12 +76,12 @@
- '-X', Xdir]), 0)
-
- testdir = os.path.join(destdir, "sourcedir")
-- self.assert_(os.path.isdir(testdir))
-- self.assert_(os.path.isfile(os.path.join(testdir, "testfile")))
-- self.assert_(not os.path.exists(os.path.join(testdir, "Xfile")))
-- self.assert_(os.path.isdir(os.path.join(testdir, "copieddir")))
-- self.assert_(os.path.isfile(os.path.join(testdir, "copieddir", "testfile2")))
-- self.assert_(not os.path.exists(os.path.join(testdir, "Xdir")))
-+ self.assertTrue(os.path.isdir(testdir))
-+ self.assertTrue(os.path.isfile(os.path.join(testdir, "testfile")))
-+ self.assertTrue(not os.path.exists(os.path.join(testdir, "Xfile")))
-+ self.assertTrue(os.path.isdir(os.path.join(testdir, "copieddir")))
-+ self.assertTrue(os.path.isfile(os.path.join(testdir, "copieddir", "testfile2")))
-+ self.assertTrue(not os.path.exists(os.path.join(testdir, "Xdir")))
-
- def test_nsinstall_multiple(self):
- "Test nsinstall <three files> <dest dir>"
-@@ -91,7 +91,7 @@
- testdir = self.mkdirs("testdir")
- self.assertEqual(nsinstall(testfiles + [testdir]), 0)
- for f in testfiles:
-- self.assert_(os.path.isfile(os.path.join(testdir,
-+ self.assertTrue(os.path.isfile(os.path.join(testdir,
- os.path.basename(f))))
-
- def test_nsinstall_dir_exists(self):
-@@ -99,7 +99,7 @@
- srcdir = self.mkdirs("test")
- destdir = self.mkdirs("testdir/test")
- self.assertEqual(nsinstall([srcdir, os.path.dirname(destdir)]), 0)
-- self.assert_(os.path.isdir(destdir))
-+ self.assertTrue(os.path.isdir(destdir))
-
- def test_nsinstall_t(self):
- "Test that nsinstall -t works (preserve timestamp)"
-@@ -110,7 +110,7 @@
- os.utime(testfile, (t, t))
- self.assertEqual(nsinstall(["-t", testfile, testdir]), 0)
- destfile = os.path.join(testdir, "testfile")
-- self.assert_(os.path.isfile(destfile))
-+ self.assertTrue(os.path.isfile(destfile))
- self.assertEqual(os.stat(testfile).st_mtime,
- os.stat(destfile).st_mtime)
-
-@@ -125,7 +125,7 @@
- self.assertEqual(nsinstall(["-m", "{0:04o}"
- .format(mode), testfile, testdir]), 0)
- destfile = os.path.join(testdir, "testfile")
-- self.assert_(os.path.isfile(destfile))
-+ self.assertTrue(os.path.isfile(destfile))
- self.assertEqual(os.stat(testfile).st_mode,
- os.stat(destfile).st_mode)
-
-@@ -136,25 +136,25 @@
- testdir = self.mkdirs("testdir")
- destdir = os.path.join(testdir, "subdir")
- self.assertEqual(nsinstall(["-d", testfile, destdir]), 0)
-- self.assert_(os.path.isdir(os.path.join(destdir, "testfile")))
-+ self.assertTrue(os.path.isdir(os.path.join(destdir, "testfile")))
-
- if RUN_NON_ASCII_TESTS:
- def test_nsinstall_non_ascii(self):
- "Test that nsinstall handles non-ASCII files"
-- filename = u"\u2325\u3452\u2415\u5081"
-+ filename = "\u2325\u3452\u2415\u5081"
- testfile = self.touch(filename)
-- testdir = self.mkdirs(u"\u4241\u1D04\u1414")
-+ testdir = self.mkdirs("\u4241\u1D04\u1414")
- self.assertEqual(nsinstall([testfile.encode("utf-8"),
- testdir.encode("utf-8")]), 0)
-
- destfile = os.path.join(testdir, filename)
-- self.assert_(os.path.isfile(destfile))
-+ self.assertTrue(os.path.isfile(destfile))
-
- def test_nsinstall_non_ascii_subprocess(self):
- "Test that nsinstall as a subprocess handles non-ASCII files"
-- filename = u"\u2325\u3452\u2415\u5081"
-+ filename = "\u2325\u3452\u2415\u5081"
- testfile = self.touch(filename)
-- testdir = self.mkdirs(u"\u4241\u1D04\u1414")
-+ testdir = self.mkdirs("\u4241\u1D04\u1414")
- # We don't use subprocess because it can't handle Unicode on
- # Windows <http://bugs.python.org/issue1759845>. mozprocess calls
- # CreateProcessW directly so it's perfect.
-@@ -166,7 +166,7 @@
-
- self.assertEqual(rv, 0)
- destfile = os.path.join(testdir, filename)
-- self.assert_(os.path.isfile(destfile))
-+ self.assertTrue(os.path.isfile(destfile))
-
- #TODO: implement -R, -l, -L and test them!
-
---- firefox-52.9.0esr/config/tests/unitMozZipFile.py (original)
-+++ firefox-52.9.0esr/config/tests/unitMozZipFile.py (refactored)
-@@ -11,6 +11,7 @@
- import random
- import copy
- from string import letters
-+from functools import reduce
-
- '''
- Test case infrastructure for MozZipFile.
-@@ -38,7 +39,7 @@
- 'firstdir/oneleaf',
- 'seconddir/twoleaf',
- 'thirddir/with/sub/threeleaf')
--_lengths = map(lambda n: n * 64, [16, 64, 80])
-+_lengths = [n * 64 for n in [16, 64, 80]]
- lengths = 3
- writes = 5
-
-@@ -71,7 +72,7 @@
- def getContent(length):
- 'Get pseudo random content of given length.'
- rv = [None] * length
-- for i in xrange(length):
-+ for i in range(length):
- rv[i] = random.choice(letters)
- return ''.join(rv)
-
-@@ -133,13 +134,13 @@
- def _verifyZip(self):
- zf = zipfile.ZipFile(self.f)
- badEntry = zf.testzip()
-- self.failIf(badEntry, badEntry)
-+ self.assertFalse(badEntry, badEntry)
- zlist = zf.namelist()
- zlist.sort()
-- vlist = self.ref.keys()
-+ vlist = list(self.ref.keys())
- vlist.sort()
- self.assertEqual(zlist, vlist)
-- for leaf, content in self.ref.iteritems():
-+ for leaf, content in self.ref.items():
- zcontent = zf.read(leaf)
- self.assertEqual(content, zcontent)
-
-@@ -158,16 +159,16 @@
- open(self.leaf('stage', leaf), 'w').write(content)
-
- # all leafs in all lengths
--atomics = list(prod(xrange(len(leafs)), xrange(lengths)))
-+atomics = list(prod(range(len(leafs)), range(lengths)))
-
- # populate TestExtensiveStore with testcases
--for w in xrange(writes):
-+for w in range(writes):
- # Don't iterate over all files for the the first n passes,
- # those are redundant as long as w < lengths.
- # There are symmetries in the trailing end, too, but I don't know
- # how to reduce those out right now.
-- nonatomics = [list(prod(range(min(i,len(leafs))), xrange(lengths)))
-- for i in xrange(1, w+1)] + [atomics]
-+ nonatomics = [list(prod(list(range(min(i,len(leafs)))), range(lengths)))
-+ for i in range(1, w+1)] + [atomics]
- for descs in prod(*nonatomics):
- suffix = getid(descs)
- dicts = [dict(leaf=leaf, length=length) for leaf, length in descs]
-@@ -181,9 +182,9 @@
- # and then write all atomics again.
- # This should catch more or less all artifacts generated
- # by the final ordering step when closing the jar.
--files = [list(prod([i], xrange(lengths))) for i in xrange(len(leafs))]
-+files = [list(prod([i], range(lengths))) for i in range(len(leafs))]
- allfiles = reduce(lambda l,r:l+r,
-- [list(prod(*files[:(i+1)])) for i in xrange(len(leafs))])
-+ [list(prod(*files[:(i+1)])) for i in range(len(leafs))])
-
- for first in allfiles:
- testbasename = 'test{0}_'.format(getid(first))
---- firefox-52.9.0esr/config/expandlibs_exec.py.old 2018-07-11 05:07:18.280000000 +0000
-+++ firefox-52.9.0esr/config/expandlibs_exec.py 2018-07-11 05:08:45.670000000 +0000
-@@ -344,7 +344,7 @@
- (stdout, stderr) = proc.communicate()
- if proc.returncode and not options.verbose:
- print_command(sys.stderr, args)
-- sys.stderr.write(stdout)
-+ sys.stderr.write(stdout.decode('utf-8'))
- sys.stderr.flush()
- if proc.returncode:
- return proc.returncode
---- firefox-52.9.0esr/js/src/jsautokw.py.old 2017-04-11 02:13:16.000000000 +0000
-+++ firefox-52.9.0esr/js/src/jsautokw.py 2018-07-11 05:11:27.080000000 +0000
-@@ -80,14 +80,14 @@
- per_column = column_dict.setdefault(keyword[column], [])
- per_column.append(item)
-
-- return sorted(column_dict.items(), key=lambda (char, keyword): ord(char))
-+ return sorted(list(column_dict.items()), key=lambda char_keyword: ord(char_keyword[0]))
-
- def generate_letter_switch(opt, unprocessed_columns, keyword_list,
- columns=None):
- assert(len(keyword_list) != 0);
-
- if not columns:
-- columns = range(0, unprocessed_columns)
-+ columns = list(range(0, unprocessed_columns))
-
- if len(keyword_list) == 1:
- index, keyword = keyword_list[0]
-@@ -161,7 +161,7 @@
- per_length = length_dict.setdefault(len(keyword), [])
- per_length.append(item)
-
-- return sorted(length_dict.items(), key=lambda (length, keyword): length)
-+ return sorted(list(length_dict.items()), key=lambda length_keyword: length_keyword[0])
-
- def generate_switch(opt, keyword_list):
- assert(len(keyword_list) != 0);
---- firefox-52.9.0esr/js/src/builtin/embedjs.py (original)
-+++ firefox-52.9.0esr/js/src/builtin/embedjs.py (refactored)
-@@ -36,7 +36,7 @@
- #
- # It uses the C preprocessor to process its inputs.
-
--from __future__ import with_statement
-+
- import re, sys, os, subprocess
- import shlex
- import which
-@@ -109,7 +109,7 @@
-
- with open(tmpIn, 'wb') as input:
- input.write(source)
-- print(' '.join(cxx + outputArg + args + [tmpIn]))
-+ print((' '.join(cxx + outputArg + args + [tmpIn])))
- result = subprocess.Popen(cxx + outputArg + args + [tmpIn]).wait()
- if (result != 0):
- sys.exit(result);
-@@ -132,7 +132,7 @@
-
- def get_config_defines(buildconfig):
- # Collect defines equivalent to ACDEFINES and add MOZ_DEBUG_DEFINES.
-- env = {key: value for key, value in buildconfig.defines.iteritems()
-+ env = {key: value for key, value in buildconfig.defines.items()
- if key not in buildconfig.non_global_defines}
- for define in buildconfig.substs['MOZ_DEBUG_DEFINES']:
- env[define] = 1
---- firefox-52.9.0esr/js/src/builtin/embedjs.py.old 2018-07-11 05:13:28.920000000 +0000
-+++ firefox-52.9.0esr/js/src/builtin/embedjs.py 2018-07-11 05:15:15.390000000 +0000
-@@ -107,7 +107,7 @@
- tmpOut = 'self-hosting-preprocessed.pp';
- outputArg = shlex.split(preprocessorOption + tmpOut)
-
-- with open(tmpIn, 'wb') as input:
-+ with open(tmpIn, 'w') as input:
- input.write(source)
- print((' '.join(cxx + outputArg + args + [tmpIn])))
- result = subprocess.Popen(cxx + outputArg + args + [tmpIn]).wait()
---- firefox-52.9.0esr/python/mozbuild/mozbuild/preprocessor.py.old 2018-07-11 05:15:42.900000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/preprocessor.py 2018-07-11 05:23:10.870000000 +0000
-@@ -451,7 +451,7 @@
- except OSError as error:
- if error.errno != errno.EEXIST:
- raise
-- return open(path, 'wb')
-+ return open(path, 'w')
-
- p = self.getCommandLineParser()
- options, args = p.parse_args(args=args)
---- firefox-52.9.0esr/js/src/builtin/embedjs.py.old 2018-07-11 05:15:42.950000000 +0000
-+++ firefox-52.9.0esr/js/src/builtin/embedjs.py 2018-07-11 05:20:14.280000000 +0000
-@@ -53,7 +53,7 @@
- def ToCArray(lines):
- result = []
- for chr in lines:
-- result.append(str(ord(chr)))
-+ result.append(str(chr))
- return ", ".join(result)
-
- HEADER_TEMPLATE = """\
-@@ -87,7 +87,7 @@
-
- js_out.write(processed)
- import zlib
-- compressed = zlib.compress(processed)
-+ compressed = zlib.compress(processed.encode('utf-8'))
- data = ToCArray(compressed)
- c_out.write(HEADER_TEMPLATE % {
- 'sources_type': 'unsigned char',
---- firefox-52.9.0esr/build/mach_bootstrap.py.old 2018-06-29 23:00:39.000000000 +0000
-+++ firefox-52.9.0esr/build/mach_bootstrap.py 2018-07-26 00:41:17.740000000 +0000
-@@ -12,7 +12,7 @@
- import subprocess
- import sys
- import uuid
--import __builtin__
-+import builtins
-
- from types import ModuleType
-
-@@ -187,10 +187,10 @@
- # Ensure we are running Python 2.7+. We put this check here so we generate a
- # user-friendly error message rather than a cryptic stack trace on module
- # import.
-- if sys.version_info[0] != 2 or sys.version_info[1] < 7:
-- print('Python 2.7 or above (but not Python 3) is required to run mach.')
-- print('You are running Python', platform.python_version())
-- sys.exit(1)
-+ #if sys.version_info[0] != 2 or sys.version_info[1] < 7:
-+ # print('Python 2.7 or above (but not Python 3) is required to run mach.')
-+ # print('You are running Python', platform.python_version())
-+ # sys.exit(1)
-
- # Global build system and mach state is stored in a central directory. By
- # default, this is ~/.mozbuild. However, it can be defined via an
-@@ -410,4 +410,4 @@
-
-
- # Install our hook
--__builtin__.__import__ = ImportHook(__builtin__.__import__)
-+builtins.__import__ = ImportHook(builtins.__import__)
---- firefox-52.9.0esr/python/mach/mach/config.py (original)
-+++ firefox-52.9.0esr/python/mach/mach/config.py (refactored)
-@@ -163,7 +163,7 @@
- return func(*args, **kwargs)
- except KeyError:
- exc_class, exc, tb = sys.exc_info()
-- raise AttributeError().__class__, exc, tb
-+ raise AttributeError().__class__(exc).with_traceback(tb)
- return _
-
-
-@@ -357,7 +357,7 @@
- extra -- A dict of additional key/value pairs to add to the
- setting metadata.
- """
-- if isinstance(type_cls, basestring):
-+ if isinstance(type_cls, str_type):
- type_cls = TYPE_CLASSES[type_cls]
-
- meta = {
-@@ -397,10 +397,10 @@
- meta = self._format_metadata(provider, section, option, *setting[1:])
- config_settings[section][option] = meta
-
-- for section_name, settings in config_settings.items():
-+ for section_name, settings in list(config_settings.items()):
- section = self._settings.get(section_name, {})
-
-- for k, v in settings.items():
-+ for k, v in list(settings.items()):
- if k in section:
- raise ConfigException('Setting already registered: %s.%s' %
- section_name, k)
-@@ -432,7 +432,7 @@
- if self._finalized:
- return
-
-- for section, settings in self._settings.items():
-+ for section, settings in list(self._settings.items()):
- s = ConfigSettings.ConfigSection(self._config, section, settings)
- self._sections[section] = s
-
-@@ -445,7 +445,7 @@
- def __iter__(self):
- self._finalize()
-
-- return iter(self._sections.keys())
-+ return iter(list(self._sections.keys()))
-
- def __contains__(self, k):
- return k in self._settings
---- firefox-52.9.0esr/python/mach/mach/dispatcher.py (original)
-+++ firefox-52.9.0esr/python/mach/mach/dispatcher.py (refactored)
-@@ -243,7 +243,7 @@
- r = self._mach_registrar
- disabled_commands = []
-
-- cats = [(k, v[2]) for k, v in r.categories.items()]
-+ cats = [(k, v[2]) for k, v in list(r.categories.items())]
- sorted_cats = sorted(cats, key=itemgetter(1), reverse=True)
- for category, priority in sorted_cats:
- group = None
-@@ -375,7 +375,7 @@
- ' subcommand [subcommand arguments]'
- group = parser.add_argument_group('Sub Commands')
-
-- for subcommand, subhandler in sorted(handler.subcommand_handlers.iteritems()):
-+ for subcommand, subhandler in sorted(handler.subcommand_handlers.items()):
- group.add_argument(subcommand, help=subhandler.description,
- action='store_true')
-
-@@ -406,7 +406,7 @@
-
- def _suggest_command(self, command):
- # Make sure we don't suggest any deprecated commands.
-- names = [h.name for h in self._mach_registrar.command_handlers.values()
-+ names = [h.name for h in list(self._mach_registrar.command_handlers.values())
- if h.cls.__name__ != 'DeprecatedCommands']
- # We first try to look for a valid command that is very similar to the given command.
- suggested_commands = difflib.get_close_matches(command, names, cutoff=0.8)
-@@ -437,13 +437,13 @@
- if not docstring:
- return ''
- lines = docstring.expandtabs().splitlines()
-- indent = sys.maxint
-+ indent = sys.maxsize
- for line in lines[1:]:
- stripped = line.lstrip()
- if stripped:
- indent = min(indent, len(line) - len(stripped))
- trimmed = [lines[0].strip()]
-- if indent < sys.maxint:
-+ if indent < sys.maxsize:
- for line in lines[1:]:
- trimmed.append(line[indent:].rstrip())
- while trimmed and not trimmed[-1]:
---- firefox-52.9.0esr/python/mach/mach/main.py (original)
-+++ firefox-52.9.0esr/python/mach/mach/main.py (refactored)
-@@ -528,7 +528,7 @@
-
- machrc, .machrc
- """
-- if isinstance(paths, basestring):
-+ if isinstance(paths, str):
- paths = [paths]
-
- valid_names = ('machrc', '.machrc')
-@@ -541,8 +541,8 @@
- if os.path.isfile(path):
- return path
-
-- files = map(find_in_dir, self.settings_paths)
-- files = filter(bool, files)
-+ files = list(map(find_in_dir, self.settings_paths))
-+ files = list(filter(bool, files))
-
- self.settings.load_files(files)
-
---- firefox-52.9.0esr/python/mach/mach/registrar.py (original)
-+++ firefox-52.9.0esr/python/mach/mach/registrar.py (refactored)
-@@ -90,7 +90,7 @@
- result = fn(**kwargs)
-
- result = result or 0
-- assert isinstance(result, (int, long))
-+ assert isinstance(result, int)
-
- if context:
- postrun = getattr(context, 'post_dispatch_handler', None)
---- firefox-52.9.0esr/python/mach/mach/terminal.py (original)
-+++ firefox-52.9.0esr/python/mach/mach/terminal.py (refactored)
-@@ -59,7 +59,7 @@
- self.fh = sys.stdout
-
- def _clear_lines(self, n):
-- for i in xrange(n):
-+ for i in range(n):
- self.fh.write(self.t.move_x(0))
- self.fh.write(self.t.clear_eol())
- self.fh.write(self.t.move_up())
---- firefox-52.9.0esr/python/mach/mach/main.py.old 2018-07-26 00:55:29.330000000 +0000
-+++ firefox-52.9.0esr/python/mach/mach/main.py 2018-07-26 00:57:01.260000000 +0000
-@@ -256,9 +256,9 @@
- if module_name is None:
- # Ensure parent module is present otherwise we'll (likely) get
- # an error due to unknown parent.
-- if b'mach.commands' not in sys.modules:
-- mod = imp.new_module(b'mach.commands')
-- sys.modules[b'mach.commands'] = mod
-+ if 'mach.commands' not in sys.modules:
-+ mod = imp.new_module('mach.commands')
-+ sys.modules['mach.commands'] = mod
-
- module_name = 'mach.commands.%s' % uuid.uuid1().get_hex()
-
-@@ -347,7 +347,7 @@
- # is a TTY. This provides a mechanism to allow said processes to
- # enable emitting code codes, for example.
- if os.isatty(orig_stdout.fileno()):
-- os.environ[b'MACH_STDOUT_ISATTY'] = b'1'
-+ os.environ['MACH_STDOUT_ISATTY'] = '1'
-
- return self._run(argv)
- except KeyboardInterrupt:
---- firefox-52.9.0esr/toolkit/moz.configure.old 2017-04-11 02:13:23.000000000 +0000
-+++ firefox-52.9.0esr/toolkit/moz.configure 2018-07-26 05:32:08.590000000 +0000
-@@ -690,7 +690,7 @@
- # ==============================================================
- @depends(check_build_environment, '--help')
- @imports('os')
--@imports(_from='__builtin__', _import='sorted')
-+@imports(_from='builtins', _import='sorted')
- def all_necko_protocols(build_env, _):
- basedir = os.path.join(build_env.topsrcdir, 'netwerk', 'protocol')
- return tuple(sorted(p for p in os.listdir(basedir)
-@@ -744,7 +744,7 @@
- __sandbox__.set_define_impl(p, True)
-
- @depends('--enable-network-protocols')
--@imports(_from='__builtin__', _import='sorted')
-+@imports(_from='builtins', _import='sorted')
- def necko_protocols(protocols):
- return tuple(sorted(protocols))
-
---- firefox-52.9.0esr/build/moz.configure/pkg.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ firefox-52.9.0esr/build/moz.configure/pkg.configure 2018-07-26 05:36:10.990000000 +0000
-@@ -84,6 +84,8 @@
- @checking('%s_LIBS' % var, callback=lambda t: ' '.join(t))
- def pkg_libs(pkg_config, package_desc):
- libs = check_cmd_output(pkg_config, '--libs', package_desc)
-+ if isinstance(libs, bytes):
-+ libs = libs.decode('utf-8')
- # Remove evil flags like -Wl,--export-dynamic
- return tuple(libs.replace('-Wl,--export-dynamic', '').split())
-
---- firefox-52.9.0esr/build/moz.configure/pkg.configure.old 2018-07-26 05:37:14.580000000 +0000
-+++ firefox-52.9.0esr/build/moz.configure/pkg.configure 2018-07-26 05:38:48.750000000 +0000
-@@ -78,6 +78,8 @@
- @checking('%s_CFLAGS' % var, callback=lambda t: ' '.join(t))
- def pkg_cflags(pkg_config, package_desc):
- flags = check_cmd_output(pkg_config, '--cflags', package_desc)
-+ if isinstance(flags, bytes):
-+ flags = flags.decode('utf-8')
- return tuple(flags.split())
-
- @depends_when(pkg_config, package_desc, when=package)
---- firefox-52.9.0esr/build/subconfigure.py.old 2018-07-26 05:39:27.360000000 +0000
-+++ firefox-52.9.0esr/build/subconfigure.py 2018-07-26 09:58:41.110000000 +0000
-@@ -39,7 +39,7 @@
- class File(object):
- def __init__(self, path):
- self._path = path
-- self._content = open(path, 'rb').read()
-+ self._content = open(path, 'r').read()
- stat = os.stat(path)
- self._times = (stat.st_atime, stat.st_mtime)
-
-@@ -60,7 +60,7 @@
-
- modified = True
- if os.path.exists(self._path):
-- if open(self._path, 'rb').read() == self._content:
-+ if open(self._path, 'r').read() == self._content:
- modified = False
- self._modified = modified
- return modified
-@@ -221,7 +221,7 @@
- environ[var] = os.environ[var]
- args = data['args']
- else:
-- environ = os.environ
-+ environ = dict(os.environ)
-
- args, others = parser.parse_known_args(args)
-
-@@ -260,7 +260,7 @@
-
- def run(objdir):
- ret = 0
-- output = ''
-+ output = b''
-
- with open(os.path.join(objdir, CONFIGURE_DATA), 'rb') as f:
- data = pickle.load(f)
-@@ -381,7 +381,7 @@
- for f in contents:
- f.update_time()
-
-- return relobjdir, ret, output
-+ return relobjdir, ret, output.decode('utf-8')
-
-
- def subconfigure(args):
-@@ -395,9 +395,9 @@
- args, others = parser.parse_known_args(args)
- subconfigures = args.subconfigures
- if args.list:
-- subconfigures.extend(open(args.list, 'rb').read().splitlines())
-+ subconfigures.extend(open(args.list, 'r').read().splitlines())
- if args.skip:
-- skips = set(open(args.skip, 'rb').read().splitlines())
-+ skips = set(open(args.skip, 'r').read().splitlines())
- subconfigures = [s for s in subconfigures if s not in skips]
-
- if not subconfigures:
---- firefox-52.9.0esr/python/mozbuild/mozbuild/util.py.old 2018-07-26 10:43:58.540000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/util.py 2018-07-26 10:57:09.100000000 +0000
-@@ -1228,7 +1228,7 @@
- yield 'b'
- yield repr(o)
- elif isinstance(o, str):
-- yield "'"
-+ yield "'''"
- # We want a readable string (non escaped unicode), but some
- # special characters need escaping (e.g. \n, \t, etc.)
- for i, s in enumerate(_INDENTED_REPR_RE.split(o)):
-@@ -1237,7 +1237,7 @@
- yield _INDENTED_REPR_TABLE[c]
- else:
- yield s
-- yield "'"
-+ yield "'''"
- elif hasattr(o, '__iter__'):
- yield '[\n'
- for i in o:
---- firefox-52.9.0esr/python/mozbuild/mozbuild/configure/util.py.old 2018-07-26 10:43:58.540000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/configure/util.py 2018-07-26 10:49:10.780000000 +0000
-@@ -148,6 +148,8 @@
- self._stdout.flush()
- stream = self._stderr
- msg = '%s\n' % self.format(record)
-+ if isinstance(msg, bytes):
-+ msg = msg.decode('utf-8')
- stream.write(msg)
- stream.flush()
- except (KeyboardInterrupt, SystemExit):
---- firefox-52.9.0esr/python/mozbuild/mozbuild/configure/util.py.old 2018-07-26 10:58:24.910000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/configure/util.py 2018-07-26 11:08:15.430000000 +0000
-@@ -89,8 +89,8 @@
- return codecs.getwriter(encoding)(fh)
- return fh
-
-- self._stdout = fix_encoding(stdout)
-- self._stderr = fix_encoding(stderr) if stdout != stderr else self._stdout
-+ self._stdout = stdout
-+ self._stderr = stderr if stdout != stderr else self._stdout
- try:
- fd1 = self._stdout.fileno()
- fd2 = self._stderr.fileno()
-@@ -148,8 +148,6 @@
- self._stdout.flush()
- stream = self._stderr
- msg = '%s\n' % self.format(record)
-- if isinstance(msg, bytes):
-- msg = msg.decode('utf-8')
- stream.write(msg)
- stream.flush()
- except (KeyboardInterrupt, SystemExit):
---- firefox-52.9.0esr/build/mach_bootstrap.py.old 2018-07-26 10:58:24.910000000 +0000
-+++ firefox-52.9.0esr/build/mach_bootstrap.py 2018-07-26 11:09:30.620000000 +0000
-@@ -361,7 +361,7 @@
- self._modules = set()
-
- def __call__(self, name, globals=None, locals=None, fromlist=None,
-- level=-1):
-+ level=0):
- # name might be a relative import. Instead of figuring out what that
- # resolves to, which is complex, just rely on the real import.
- # Since we don't know the full module name, we can't check sys.modules,
---- firefox-52.9.0esr/python/mozbuild/mozbuild/configure/check_debug_ranges.py.old 2018-07-26 11:10:15.820000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/configure/check_debug_ranges.py 2018-07-26 11:14:51.180000000 +0000
-@@ -45,6 +45,7 @@
- def main(bin, compilation_unit):
- p = subprocess.Popen(['objdump', '-W', bin], stdout = subprocess.PIPE, stderr = subprocess.PIPE)
- (out, err) = p.communicate()
-+ out = out.decode('utf-8')
- sections = re.split('\n(Contents of the|The section) ', out)
- debug_info = [s for s in sections if s.startswith('.debug_info')]
- debug_ranges = [s for s in sections if s.startswith('.debug_ranges')]
---- firefox-52.9.0esr/python/mozbuild/mozbuild/configure/constants.py.old 2018-07-26 11:10:15.820000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/configure/constants.py 2018-07-26 11:18:03.750000000 +0000
-@@ -28,6 +28,7 @@
- )
-
- Kernel = EnumString.subclass(
-+ 'Android',
- 'Darwin',
- 'DragonFly',
- 'FreeBSD',
-@@ -90,6 +91,7 @@
- assert sorted(CPU_preprocessor_checks.keys()) == sorted(CPU.POSSIBLE_VALUES)
-
- kernel_preprocessor_checks = {
-+ 'Android': '__BIONIC__',
- 'Darwin': '__APPLE__',
- 'DragonFly': '__DragonFly__',
- 'FreeBSD': '__FreeBSD__',
---- firefox-52.9.0esr/python/mozbuild/mozbuild/configure/constants.py.old 2018-07-26 11:18:54.630000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/configure/constants.py 2018-07-26 23:46:48.880000000 +0000
-@@ -28,6 +28,7 @@
- )
-
- Kernel = EnumString.subclass(
-+ 'AIX',
- 'Android',
- 'Darwin',
- 'DragonFly',
-@@ -91,6 +92,7 @@
- assert sorted(CPU_preprocessor_checks.keys()) == sorted(CPU.POSSIBLE_VALUES)
-
- kernel_preprocessor_checks = {
-+ 'AIX': '_AIX',
- 'Android': '__BIONIC__',
- 'Darwin': '__APPLE__',
- 'DragonFly': '__DragonFly__',
---- firefox-52.9.0esr/python/mozbuild/mozbuild/configure/constants.py.old 2018-07-26 23:47:39.060000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/configure/constants.py 2018-07-26 23:53:25.260000000 +0000
-@@ -37,6 +37,8 @@
- 'Linux',
- 'NetBSD',
- 'OpenBSD',
-+ 'SunOS',
-+ 'HP-UX',
- 'WINNT',
- )
-
-@@ -93,14 +94,16 @@
-
- kernel_preprocessor_checks = {
- 'AIX': '_AIX',
-- 'Android': '__BIONIC__',
-+ 'Android': '__ANDROID__',
- 'Darwin': '__APPLE__',
- 'DragonFly': '__DragonFly__',
- 'FreeBSD': '__FreeBSD__',
-+ 'HP-UX': '_hpux',
- 'kFreeBSD': '__FreeBSD_kernel__',
- 'Linux': '__linux__',
- 'NetBSD': '__NetBSD__',
- 'OpenBSD': '__OpenBSD__',
-+ 'SunOS': '__sun || sun',
- 'WINNT': '_WIN32 || __CYGWIN__',
- }
-
---- firefox-52.9.0esr/python/mozbuild/mozbuild/configure/constants.py.old 2018-07-26 23:55:19.000000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/configure/constants.py 2018-07-26 23:58:36.750000000 +0000
-@@ -33,12 +33,15 @@
- 'Darwin',
- 'DragonFly',
- 'FreeBSD',
-+ 'GNU',
-+ 'GNU/kFreeBSD',
-+ 'GNU_kFreeBSD',
-+ 'HP-UX',
- 'kFreeBSD',
- 'Linux',
- 'NetBSD',
- 'OpenBSD',
- 'SunOS',
-- 'HP-UX',
- 'WINNT',
- )
-
-@@ -99,6 +102,9 @@
- 'Darwin': '__APPLE__',
- 'DragonFly': '__DragonFly__',
- 'FreeBSD': '__FreeBSD__',
-+ 'GNU': '__gnu_hurd__',
-+ 'GNU/kFreeBSD': '__FreeBSD_kernel_ && __GLIBC__',
-+ 'GNU_kFreeBSD': '__FreeBSD_kernel_ && __GLIBC__',
- 'HP-UX': '_hpux',
- 'kFreeBSD': '__FreeBSD_kernel__',
- 'Linux': '__linux__',
---- firefox-52.9.0esr/testing/mozbase/manifestparser/manifestparser/ini.py.old 2018-07-26 23:55:18.990000000 +0000
-+++ firefox-52.9.0esr/testing/mozbase/manifestparser/manifestparser/ini.py 2018-07-27 00:04:47.460000000 +0000
-@@ -33,7 +33,7 @@
- # read the lines
- for (linenum, line) in enumerate(fp.read().splitlines(), start=1):
-
-- stripped = line.strip()
-+ stripped = line.strip().decode('utf-8')
-
- # ignore blank lines
- if not stripped:
---- firefox-52.9.0esr/testing/mozbase/manifestparser/manifestparser/ini.py.old 2018-07-27 00:09:00.850000000 +0000
-+++ firefox-52.9.0esr/testing/mozbase/manifestparser/manifestparser/ini.py 2018-07-27 00:12:03.920000000 +0000
-@@ -31,9 +31,9 @@
- fp = open(fp)
-
- # read the lines
-- for (linenum, line) in enumerate(fp.read().splitlines(), start=1):
-+ for (linenum, line) in enumerate(fp.read().decode('utf-8').splitlines(), start=1):
-
-- stripped = line.strip().decode('utf-8')
-+ stripped = line.strip()
-
- # ignore blank lines
- if not stripped:
---- firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/sandbox.py.old 2018-07-27 00:12:52.240000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/sandbox.py 2018-07-27 00:18:00.010000000 +0000
-@@ -39,7 +39,8 @@
- """sorted() replacement for the sandbox, ordering alphabetically by
- default.
- """
-- return sorted(iterable, cmp, key, reverse)
-+ ### XXX what do we do with cmp?
-+ return sorted(iterable, key=key, reverse=reverse)
-
-
- class SandboxError(Exception):
---- firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/emitter.py.old 2018-07-27 00:32:50.870000000 +0000
-+++ firefox-52.9.0esr/python/mozbuild/mozbuild/frontend/emitter.py 2018-07-27 00:32:28.770000000 +0000
-@@ -1399,7 +1399,8 @@
- # declared anywhere (they were discovered). This will detect people
- # relying on the old behavior.
- if os.path.exists(os.path.join(context.srcdir, 'jar.mn')):
-- if 'jar.mn' not in jar_manifests:
-+ if 'jar.mn' not in jar_manifests and \
-+ SourcePath(context, 'jar.mn') not in jar_manifests:
- raise SandboxValidationError('A jar.mn exists but it '
- 'is not referenced in the moz.build file. '
- 'Please define JAR_MANIFESTS.', context)
diff --git a/user/firefox-esr/rust-32bit.patch b/user/firefox-esr/rust-32bit.patch
new file mode 100644
index 000000000..4829e44bf
--- /dev/null
+++ b/user/firefox-esr/rust-32bit.patch
@@ -0,0 +1,30 @@
+LTO kills the build on 32-bit architectures.
+
+--- firefox-128.0/config/makefiles/rust.mk.old 2024-07-04 11:20:25.000000000 -0500
++++ firefox-128.0/config/makefiles/rust.mk 2024-08-04 03:20:25.375459833 -0500
+@@ -82,25 +82,6 @@
+ # These flags are passed via `cargo rustc` and only apply to the final rustc
+ # invocation (i.e., only the top-level crate, not its dependencies).
+ cargo_rustc_flags = $(CARGO_RUSTCFLAGS)
+-ifndef DEVELOPER_OPTIONS
+-ifndef MOZ_DEBUG_RUST
+-# Enable link-time optimization for release builds, but not when linking
+-# gkrust_gtest. And not when doing cross-language LTO.
+-ifndef MOZ_LTO_RUST_CROSS
+-# Never enable when sancov is enabled to work around https://github.com/rust-lang/rust/issues/90300.
+-ifndef rustflags_sancov
+-# Never enable when coverage is enabled to work around https://github.com/rust-lang/rust/issues/90045.
+-ifndef MOZ_CODE_COVERAGE
+-ifeq (,$(findstring gkrust_gtest,$(RUST_LIBRARY_FILE)))
+-cargo_rustc_flags += -Clto$(if $(filter full,$(MOZ_LTO_RUST_CROSS)),=fat)
+-endif
+-# We need -Cembed-bitcode=yes for all crates when using -Clto.
+-RUSTFLAGS += -Cembed-bitcode=yes
+-endif
+-endif
+-endif
+-endif
+-endif
+
+ ifdef CARGO_INCREMENTAL
+ export CARGO_INCREMENTAL
diff --git a/user/firefox-esr/shut-up-warning.patch b/user/firefox-esr/shut-up-warning.patch
index ffba50436..bc90b6e2b 100644
--- a/user/firefox-esr/shut-up-warning.patch
+++ b/user/firefox-esr/shut-up-warning.patch
@@ -1,6 +1,6 @@
---- firefox-52.9.0esr/gfx/2d/HelpersCairo.h.old 2017-04-11 02:13:04.000000000 +0000
-+++ firefox-52.9.0esr/gfx/2d/HelpersCairo.h 2018-12-08 18:45:01.880000000 +0000
-@@ -160,7 +160,7 @@
+--- firefox-68.0.1/gfx/2d/HelpersCairo.h.old 2019-07-17 20:51:26.000000000 +0000
++++ firefox-68.0.1/gfx/2d/HelpersCairo.h 2019-08-10 11:38:36.047380153 +0000
+@@ -149,7 +149,7 @@
case SurfaceFormat::R5G6B5_UINT16:
return CAIRO_FORMAT_RGB16_565;
default:
diff --git a/user/firefox-esr/skia-endian.patch b/user/firefox-esr/skia-endian.patch
new file mode 100644
index 000000000..7a88b0869
--- /dev/null
+++ b/user/firefox-esr/skia-endian.patch
@@ -0,0 +1,112 @@
+https://bugzilla.mozilla.org/show_bug.cgi?id=1888396
+
+--- firefox-128.0/gfx/skia/skia/include/private/SkColorData.h
++++ firefox-128.0/gfx/skia/skia/include/private/SkColorData.h
+@@ -12,6 +12,13 @@ #include "include/core/SkColor.h"
+ #include "include/core/SkColorPriv.h"
+ #include "include/private/base/SkTo.h"
+
++/* Macro to covert between big endian and little endian memory order. */
++#ifdef SK_CPU_BENDIAN
++#define BE_CONVERT(c) ((((c) & 0xff)<<24) | (((c) & 0xff00)<<8) | (((c) & 0xff0000)>>8) | (((c) & 0xff000000)>>24))
++#else
++#define BE_CONVERT(c) c
++#endif
++
+ ////////////////////////////////////////////////////////////////////////////////////////////
+ // Convert a 16bit pixel to a 32bit pixel
+
+--- firefox-128.0/gfx/skia/skia/src/core/SkBlitRow_D32.cpp
++++ firefox-128.0/gfx/skia/skia/src/core/SkBlitRow_D32.cpp
+@@ -555,7 +555,7 @@ }
+ void SkBlitRow::Color32(SkPMColor dst[], int count, SkPMColor color) {
+ switch (SkGetPackedA32(color)) {
+ case 0: /* Nothing to do */ return;
+- case 255: SkOpts::memset32(dst, color, count); return;
++ case 255: SkOpts::memset32(dst, BE_CONVERT(color), count); return;
+ }
+- return SkOpts::blit_row_color32(dst, count, color);
++ return SkOpts::blit_row_color32(dst, count, BE_CONVERT(color));
+ }
+--- firefox-128.0/gfx/skia/skia/src/core/SkBlitter_ARGB32.cpp
++++ firefox-128.0/gfx/skia/skia/src/core/SkBlitter_ARGB32.cpp
+@@ -1487,7 +1487,7 @@ }
+ unsigned aa = antialias[0];
+ if (aa) {
+ if ((opaqueMask & aa) == 255) {
+- SkOpts::memset32(device, color, count);
++ SkOpts::memset32(device, BE_CONVERT(color), count);
+ } else {
+ uint32_t sc = SkAlphaMulQ(color, SkAlpha255To256(aa));
+ SkBlitRow::Color32(device, count, sc);
+@@ -1503,17 +1503,17 @@ void SkARGB32_Blitter::blitAntiH2(int x,
+ uint32_t* device = fDevice.writable_addr32(x, y);
+ SkDEBUGCODE((void)fDevice.writable_addr32(x + 1, y);)
+
+- device[0] = SkBlendARGB32(fPMColor, device[0], a0);
+- device[1] = SkBlendARGB32(fPMColor, device[1], a1);
++ device[0] = BE_CONVERT(SkBlendARGB32(fPMColor, BE_CONVERT(device[0]), a0));
++ device[1] = BE_CONVERT(SkBlendARGB32(fPMColor, BE_CONVERT(device[1]), a1));
+ }
+
+ void SkARGB32_Blitter::blitAntiV2(int x, int y, U8CPU a0, U8CPU a1) {
+ uint32_t* device = fDevice.writable_addr32(x, y);
+ SkDEBUGCODE((void)fDevice.writable_addr32(x, y + 1);)
+
+- device[0] = SkBlendARGB32(fPMColor, device[0], a0);
++ device[0] = BE_CONVERT(SkBlendARGB32(fPMColor, BE_CONVERT(device[0]), a0));
+ device = (uint32_t*)((char*)device + fDevice.rowBytes());
+- device[0] = SkBlendARGB32(fPMColor, device[0], a1);
++ device[0] = BE_CONVERT(SkBlendARGB32(fPMColor, BE_CONVERT(device[0]), a1));
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////
+@@ -1604,17 +1604,17 @@ void SkARGB32_Opaque_Blitter::blitAntiH2
+ uint32_t* device = fDevice.writable_addr32(x, y);
+ SkDEBUGCODE((void)fDevice.writable_addr32(x + 1, y);)
+
+- device[0] = SkFastFourByteInterp(fPMColor, device[0], a0);
+- device[1] = SkFastFourByteInterp(fPMColor, device[1], a1);
++ device[0] = BE_CONVERT(SkFastFourByteInterp(fPMColor, BE_CONVERT(device[0]), a0));
++ device[1] = BE_CONVERT(SkFastFourByteInterp(fPMColor, BE_CONVERT(device[1]), a1));
+ }
+
+ void SkARGB32_Opaque_Blitter::blitAntiV2(int x, int y, U8CPU a0, U8CPU a1) {
+ uint32_t* device = fDevice.writable_addr32(x, y);
+ SkDEBUGCODE((void)fDevice.writable_addr32(x, y + 1);)
+
+- device[0] = SkFastFourByteInterp(fPMColor, device[0], a0);
++ device[0] = BE_CONVERT(SkFastFourByteInterp(fPMColor, BE_CONVERT(device[0]), a0));
+ device = (uint32_t*)((char*)device + fDevice.rowBytes());
+- device[0] = SkFastFourByteInterp(fPMColor, device[0], a1);
++ device[0] = BE_CONVERT(SkFastFourByteInterp(fPMColor, BE_CONVERT(device[0]), a1));
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////
+@@ -1634,7 +1634,7 @@ }
+ unsigned dst_scale = SkAlpha255To256(255 - SkGetPackedA32(color));
+ size_t rowBytes = fDevice.rowBytes();
+ while (--height >= 0) {
+- device[0] = color + SkAlphaMulQ(device[0], dst_scale);
++ device[0] = BE_CONVERT(color + SkAlphaMulQ(BE_CONVERT(device[0]), dst_scale));
+ device = (uint32_t*)((char*)device + rowBytes);
+ }
+ }
+@@ -1651,7 +1651,7 @@ uint32_t color = fPMColor;
+ size_t rowBytes = fDevice.rowBytes();
+
+ if (SkGetPackedA32(fPMColor) == 0xFF) {
+- SkOpts::rect_memset32(device, color, width, rowBytes, height);
++ SkOpts::rect_memset32(device, BE_CONVERT(color), width, rowBytes, height);
+ } else {
+ while (height --> 0) {
+ SkBlitRow::Color32(device, width, color);
+@@ -1680,7 +1680,7 @@ }
+ unsigned aa = antialias[0];
+ if (aa) {
+ if (aa == 255) {
+- SkOpts::memset32(device, black, count);
++ SkOpts::memset32(device, BE_CONVERT(black), count);
+ } else {
+ SkPMColor src = aa << SK_A32_SHIFT;
+ unsigned dst_scale = 256 - aa;
diff --git a/user/firefox-esr/skia-unified.patch b/user/firefox-esr/skia-unified.patch
new file mode 100644
index 000000000..cacfe3451
--- /dev/null
+++ b/user/firefox-esr/skia-unified.patch
@@ -0,0 +1,786 @@
+This patch is not complete.
+
+It attempts to completely remove endian-specific surface formats from the
+entire tree, then replace it with a single swizzle in Skia.
+
+Most things are working, including most Web sites and graphics. However,
+notably, native widgets (like menus, or 'Remember password?' popups) cause
+an assertion failure.
+
+We need to ship beta6 and this gets people a browser with many unfortunate
+caveats, which is better than no browser at all.
+
+I intend to remain working with upstream on finding a way forward with the
+overall idea of this patch and hope to land something eventually.
+
+diff --git a/dom/canvas/CanvasRenderingContext2D.cpp b/dom/canvas/CanvasRenderingContext2D.cpp
+--- a/dom/canvas/CanvasRenderingContext2D.cpp
++++ b/dom/canvas/CanvasRenderingContext2D.cpp
+@@ -383,7 +383,7 @@ class AdjustedTargetForFilter {
+ }
+
+ if (!mFinalTarget->CanCreateSimilarDrawTarget(mSourceGraphicRect.Size(),
+- SurfaceFormat::B8G8R8A8)) {
++ SurfaceFormat::OS_RGBA)) {
+ mTarget = mFinalTarget;
+ mCtx = nullptr;
+ mFinalTarget = nullptr;
+@@ -391,7 +391,7 @@ class AdjustedTargetForFilter {
+ }
+
+ mTarget = mFinalTarget->CreateSimilarDrawTarget(mSourceGraphicRect.Size(),
+- SurfaceFormat::B8G8R8A8);
++ SurfaceFormat::OS_RGBA);
+
+ if (mTarget) {
+ // See bug 1524554.
+@@ -419,7 +419,7 @@ class AdjustedTargetForFilter {
+ }
+
+ RefPtr<DrawTarget> dt = mFinalTarget->CreateSimilarDrawTarget(
+- aRect.Size(), SurfaceFormat::B8G8R8A8);
++ aRect.Size(), SurfaceFormat::OS_RGBA);
+
+ if (dt) {
+ // See bug 1524554.
+@@ -516,7 +516,7 @@ class AdjustedTargetForShadow {
+ bounds.RoundOut();
+ if (!bounds.ToIntRect(&mTempRect) ||
+ !mFinalTarget->CanCreateSimilarDrawTarget(mTempRect.Size(),
+- SurfaceFormat::B8G8R8A8)) {
++ SurfaceFormat::OS_RGBA)) {
+ mTarget = mFinalTarget;
+ mCtx = nullptr;
+ mFinalTarget = nullptr;
+@@ -524,7 +524,7 @@ class AdjustedTargetForShadow {
+ }
+
+ mTarget = mFinalTarget->CreateShadowDrawTarget(
+- mTempRect.Size(), SurfaceFormat::B8G8R8A8, mSigma);
++ mTempRect.Size(), SurfaceFormat::OS_RGBA, mSigma);
+
+ if (mTarget) {
+ // See bug 1524554.
+@@ -2117,7 +2117,7 @@ CanvasRenderingContext2D::GetOptimizedSn
+ }
+
+ SurfaceFormat CanvasRenderingContext2D::GetSurfaceFormat() const {
+- return mOpaque ? SurfaceFormat::B8G8R8X8 : SurfaceFormat::B8G8R8A8;
++ return mOpaque ? SurfaceFormat::OS_RGBX : SurfaceFormat::OS_RGBA;
+ }
+
+ //
+@@ -5295,7 +5295,7 @@ static already_AddRefed<SourceSurface> E
+ }
+
+ RefPtr<DrawTarget> subrectDT = aTargetDT->CreateSimilarDrawTarget(
+- roundedOutSourceRectInt.Size(), SurfaceFormat::B8G8R8A8);
++ roundedOutSourceRectInt.Size(), SurfaceFormat::OS_RGBA);
+
+ if (subrectDT) {
+ // See bug 1524554.
+@@ -6061,7 +6061,7 @@ void CanvasRenderingContext2D::DrawWindo
+ }
+ }
+ drawDT = gfxPlatform::GetPlatform()->CreateOffscreenContentDrawTarget(
+- dtSize, SurfaceFormat::B8G8R8A8);
++ dtSize, SurfaceFormat::OS_RGBA);
+ if (!drawDT || !drawDT->IsValid()) {
+ aError.Throw(NS_ERROR_FAILURE);
+ return;
+@@ -6315,7 +6315,7 @@ void CanvasRenderingContext2D::EnsureErr
+
+ RefPtr<DrawTarget> errorTarget =
+ gfxPlatform::GetPlatform()->CreateOffscreenCanvasDrawTarget(
+- IntSize(1, 1), SurfaceFormat::B8G8R8A8);
++ IntSize(1, 1), SurfaceFormat::OS_RGBA);
+ MOZ_ASSERT(errorTarget, "Failed to allocate the error target!");
+
+ sErrorTarget.set(errorTarget.forget().take());
+@@ -6437,7 +6437,7 @@ void CanvasRenderingContext2D::PutImageD
+ dstData = lockedBits + dirtyRect.y * dstStride + dirtyRect.x * 4;
+ } else {
+ sourceSurface = Factory::CreateDataSourceSurface(
+- dirtyRect.Size(), SurfaceFormat::B8G8R8A8, false);
++ dirtyRect.Size(), SurfaceFormat::OS_RGBA, false);
+
+ // In certain scenarios, requesting larger than 8k image fails. Bug
+ // 803568 covers the details of how to run into it, but the full
+diff --git a/dom/canvas/ImageBitmap.cpp b/dom/canvas/ImageBitmap.cpp
+--- a/dom/canvas/ImageBitmap.cpp
++++ b/dom/canvas/ImageBitmap.cpp
+@@ -227,7 +227,7 @@ static already_AddRefed<DataSourceSurfac
+ // this rectangle are outside the area where the input bitmap was placed, then
+ // they will be transparent black in output."
+ // So, instead, we force the output format to be SurfaceFormat::B8G8R8A8.
+- const SurfaceFormat format = SurfaceFormat::B8G8R8A8;
++ const SurfaceFormat format = SurfaceFormat::OS_RGBA;
+ const int bytesPerPixel = BytesPerPixel(format);
+ const IntSize dstSize =
+ IntSize(positiveCropRect.width, positiveCropRect.height);
+@@ -500,6 +500,11 @@ static already_AddRefed<layers::Image> C
+
+ // Convert RGBA to BGRA
+ RefPtr<DataSourceSurface> rgbaDataSurface = rgbaSurface->GetDataSurface();
++
++ if (SurfaceFormat::OS_RGBA == SurfaceFormat::R8G8B8A8) {
++ return CreateImageFromSurface(rgbaDataSurface);
++ }
++
+ DataSourceSurface::ScopedMap rgbaMap(rgbaDataSurface,
+ DataSourceSurface::READ);
+ if (NS_WARN_IF(!rgbaMap.IsMapped())) {
+@@ -724,7 +729,7 @@ SurfaceFromElementResult ImageBitmap::Su
+ bool requiresCrop = !allowUncropped && hasCropRect;
+ if (wantExactSize || requiresPremult || requiresCrop || mSurface) {
+ RefPtr<DrawTarget> dt = Factory::CreateDrawTarget(
+- BackendType::SKIA, IntSize(1, 1), SurfaceFormat::B8G8R8A8);
++ BackendType::SKIA, IntSize(1, 1), SurfaceFormat::OS_RGBA);
+ sfer.mSourceSurface = PrepareForDrawTarget(dt);
+
+ if (!sfer.mSourceSurface) {
+@@ -831,7 +836,7 @@ already_AddRefed<SourceSurface> ImageBit
+ // black, even if the surface is opaque, so force to an alpha format in
+ // that case.
+ if (!surfPortion.IsEqualEdges(mPictureRect) && isOpaque) {
+- format = SurfaceFormat::B8G8R8A8;
++ format = SurfaceFormat::OS_RGBA;
+ }
+
+ // If we need to pre-multiply the alpha, then we need to be able to
+diff --git a/dom/canvas/OffscreenCanvasDisplayHelper.cpp b/dom/canvas/OffscreenCanvasDisplayHelper.cpp
+--- a/dom/canvas/OffscreenCanvasDisplayHelper.cpp
++++ b/dom/canvas/OffscreenCanvasDisplayHelper.cpp
+@@ -181,7 +181,7 @@ bool OffscreenCanvasDisplayHelper::Commi
+
+ MutexAutoLock lock(mMutex);
+
+- gfx::SurfaceFormat format = gfx::SurfaceFormat::B8G8R8A8;
++ gfx::SurfaceFormat format = gfx::SurfaceFormat::OS_RGBA;
+ layers::TextureFlags flags = layers::TextureFlags::IMMUTABLE;
+
+ if (!mCanvasElement) {
+@@ -207,7 +207,7 @@ bool OffscreenCanvasDisplayHelper::Commi
+
+ if (mData.mIsOpaque) {
+ flags |= layers::TextureFlags::IS_OPAQUE;
+- format = gfx::SurfaceFormat::B8G8R8X8;
++ format = gfx::SurfaceFormat::OS_RGBX;
+ } else if (!mData.mIsAlphaPremult) {
+ flags |= layers::TextureFlags::NON_PREMULTIPLIED;
+ }
+diff --git a/gfx/2d/HelpersSkia.h b/gfx/2d/HelpersSkia.h
+--- a/gfx/2d/HelpersSkia.h
++++ b/gfx/2d/HelpersSkia.h
+@@ -26,6 +26,9 @@ namespace gfx {
+ static inline SkColorType GfxFormatToSkiaColorType(SurfaceFormat format) {
+ switch (format) {
+ case SurfaceFormat::B8G8R8A8:
++#if MOZ_BIG_ENDIAN()
++ //MOZ_DIAGNOSTIC_ASSERT(false, "wrong way unsupported by Skia");
++#endif
+ return kBGRA_8888_SkColorType;
+ case SurfaceFormat::B8G8R8X8:
+ // We probably need to do something here.
+@@ -37,7 +40,9 @@ static inline SkColorType GfxFormatToSki
+ case SurfaceFormat::R8G8B8A8:
+ return kRGBA_8888_SkColorType;
+ case SurfaceFormat::A8R8G8B8:
++#if MOZ_LITTLE_ENDIAN()
+ MOZ_DIAGNOSTIC_ASSERT(false, "A8R8G8B8 unsupported by Skia");
++#endif
+ return kRGBA_8888_SkColorType;
+ default:
+ MOZ_DIAGNOSTIC_ASSERT(false, "Unknown surface format");
+@@ -49,20 +54,20 @@ static inline SurfaceFormat SkiaColorTyp
+ SkColorType aColorType, SkAlphaType aAlphaType = kPremul_SkAlphaType) {
+ switch (aColorType) {
+ case kBGRA_8888_SkColorType:
+- return aAlphaType == kOpaque_SkAlphaType ? SurfaceFormat::B8G8R8X8
+- : SurfaceFormat::B8G8R8A8;
++ return aAlphaType == kOpaque_SkAlphaType ? SurfaceFormat::OS_RGBX
++ : SurfaceFormat::OS_RGBA;
+ case kRGB_565_SkColorType:
+ return SurfaceFormat::R5G6B5_UINT16;
+ case kAlpha_8_SkColorType:
+ return SurfaceFormat::A8;
+ default:
+- return SurfaceFormat::B8G8R8A8;
++ return SurfaceFormat::OS_RGBA;
+ }
+ }
+
+ static inline SkAlphaType GfxFormatToSkiaAlphaType(SurfaceFormat format) {
+ switch (format) {
+- case SurfaceFormat::B8G8R8X8:
++ case SurfaceFormat::OS_RGBX:
+ case SurfaceFormat::R5G6B5_UINT16:
+ return kOpaque_SkAlphaType;
+ default:
+diff --git a/gfx/ipc/CrossProcessPaint.cpp b/gfx/ipc/CrossProcessPaint.cpp
+--- a/gfx/ipc/CrossProcessPaint.cpp
++++ b/gfx/ipc/CrossProcessPaint.cpp
+@@ -107,7 +107,7 @@ PaintFragment PaintFragment::Record(dom:
+ nsContentUtils::FlushLayoutForTree(ds->GetWindow());
+
+ // Initialize the recorder
+- SurfaceFormat format = SurfaceFormat::B8G8R8A8;
++ SurfaceFormat format = SurfaceFormat::OS_RGBA;
+ RefPtr<DrawTarget> referenceDt = Factory::CreateDrawTarget(
+ gfxPlatform::GetPlatform()->GetSoftwareBackend(), IntSize(1, 1), format);
+
+@@ -254,7 +254,7 @@ bool CrossProcessPaint::Start(dom::Windo
+ // Create the destination draw target
+ RefPtr<DrawTarget> drawTarget =
+ gfxPlatform::GetPlatform()->CreateOffscreenContentDrawTarget(
+- root->mSize, SurfaceFormat::B8G8R8A8);
++ root->mSize, SurfaceFormat::OS_RGBA);
+ if (!drawTarget || !drawTarget->IsValid()) {
+ CPP_LOG("Couldn't create (%d x %d) surface for fragment %" PRIu64
+ ".\n",
+diff --git a/gfx/ipc/GfxMessageUtils.h b/gfx/ipc/GfxMessageUtils.h
+--- a/gfx/ipc/GfxMessageUtils.h
++++ b/gfx/ipc/GfxMessageUtils.h
+@@ -677,7 +677,7 @@ struct ParamTraits<GeckoProcessType>
+ template <>
+ struct ParamTraits<mozilla::gfx::SurfaceFormat>
+ : public ContiguousEnumSerializer<mozilla::gfx::SurfaceFormat,
+- mozilla::gfx::SurfaceFormat::B8G8R8A8,
++ mozilla::gfx::SurfaceFormat::OS_RGBA,
+ mozilla::gfx::SurfaceFormat::UNKNOWN> {};
+
+ template <>
+diff --git a/gfx/layers/Compositor.cpp b/gfx/layers/Compositor.cpp
+--- a/gfx/layers/Compositor.cpp
++++ b/gfx/layers/Compositor.cpp
+@@ -36,7 +36,7 @@ class CompositorRecordedFrame final : pu
+ gfx::IntSize size = mBuffer->GetSize();
+
+ mSurface = gfx::Factory::CreateDataSourceSurface(
+- size, gfx::SurfaceFormat::B8G8R8A8,
++ size, gfx::SurfaceFormat::OS_RGBA,
+ /* aZero = */ false);
+
+ if (!mBuffer->MapAndCopyInto(mSurface, size)) {
+diff --git a/gfx/layers/ImageDataSerializer.cpp b/gfx/layers/ImageDataSerializer.cpp
+--- a/gfx/layers/ImageDataSerializer.cpp
++++ b/gfx/layers/ImageDataSerializer.cpp
+@@ -288,16 +288,16 @@ already_AddRefed<DataSourceSurface> Data
+ RefPtr<DataSourceSurface> result;
+ if (aSurface) {
+ MOZ_ASSERT(aSurface->GetSize() == size);
+- MOZ_ASSERT(aSurface->GetFormat() == gfx::SurfaceFormat::B8G8R8X8);
++ MOZ_ASSERT(aSurface->GetFormat() == gfx::SurfaceFormat::OS_RGBX);
+ if (aSurface->GetSize() == size &&
+- aSurface->GetFormat() == gfx::SurfaceFormat::B8G8R8X8) {
++ aSurface->GetFormat() == gfx::SurfaceFormat::OS_RGBX) {
+ result = aSurface;
+ }
+ }
+
+ if (!result) {
+ result =
+- Factory::CreateDataSourceSurface(size, gfx::SurfaceFormat::B8G8R8X8);
++ Factory::CreateDataSourceSurface(size, gfx::SurfaceFormat::OS_RGBX);
+ }
+ if (NS_WARN_IF(!result)) {
+ return nullptr;
+@@ -320,7 +320,7 @@ already_AddRefed<DataSourceSurface> Data
+ ycbcrData.mChromaSubsampling = aDescriptor.chromaSubsampling();
+
+- gfx::ConvertYCbCrToRGB(ycbcrData, gfx::SurfaceFormat::B8G8R8X8, size,
++ gfx::ConvertYCbCrToRGB(ycbcrData, gfx::SurfaceFormat::OS_RGBX, size,
+ map.mData, map.mStride);
+
+ result->Unmap();
+ return result.forget();
+diff --git a/gfx/layers/composite/TextureHost.cpp b/gfx/layers/composite/TextureHost.cpp
+--- a/gfx/layers/composite/TextureHost.cpp
++++ b/gfx/layers/composite/TextureHost.cpp
+@@ -182,7 +182,7 @@ already_AddRefed<TextureHost> CreateDumm
+ aFlags &= ~TextureFlags::DEALLOCATE_CLIENT;
+ aFlags |= TextureFlags::DUMMY_TEXTURE;
+ UniquePtr<TextureData> textureData(BufferTextureData::Create(
+- gfx::IntSize(1, 1), gfx::SurfaceFormat::B8G8R8A8, gfx::BackendType::SKIA,
++ gfx::IntSize(1, 1), gfx::SurfaceFormat::OS_RGBA, gfx::BackendType::SKIA,
+ aBackend, aFlags, TextureAllocationFlags::ALLOC_DEFAULT, nullptr));
+ SurfaceDescriptor surfDesc;
+ textureData->Serialize(surfDesc);
+diff --git a/gfx/layers/ipc/SharedSurfacesChild.cpp b/gfx/layers/ipc/SharedSurfacesChild.cpp
+--- a/gfx/layers/ipc/SharedSurfacesChild.cpp
++++ b/gfx/layers/ipc/SharedSurfacesChild.cpp
+@@ -241,7 +241,7 @@ nsresult SharedSurfacesChild::ShareInter
+
+ SurfaceFormat format = aSurface->GetFormat();
+ MOZ_RELEASE_ASSERT(
+- format == SurfaceFormat::B8G8R8X8 || format == SurfaceFormat::B8G8R8A8,
++ format == SurfaceFormat::OS_RGBX || format == SurfaceFormat::OS_RGBA,
+ "bad format");
+
+ data->MarkShared(manager->GetNextExternalImageId());
+diff --git a/gfx/layers/wr/WebRenderLayerManager.cpp b/gfx/layers/wr/WebRenderLayerManager.cpp
+--- a/gfx/layers/wr/WebRenderLayerManager.cpp
++++ b/gfx/layers/wr/WebRenderLayerManager.cpp
+@@ -512,7 +512,7 @@ void WebRenderLayerManager::MakeSnapshot
+ #ifdef MOZ_WIDGET_ANDROID
+ SurfaceFormat::R8G8B8A8;
+ #else
+- SurfaceFormat::B8G8R8A8;
++ SurfaceFormat::OS_RGBA;
+ #endif
+ RefPtr<TextureClient> texture = TextureClient::CreateForRawBufferAccess(
+ WrBridge(), format, aSize.ToUnknownSize(), BackendType::SKIA,
+diff --git a/gfx/layers/wr/WebRenderTextureHost.cpp b/gfx/layers/wr/WebRenderTextureHost.cpp
+--- a/gfx/layers/wr/WebRenderTextureHost.cpp
++++ b/gfx/layers/wr/WebRenderTextureHost.cpp
+@@ -159,7 +159,7 @@ int32_t WebRenderTextureHost::GetRGBStri
+ // XXX this stride is used until yuv image rendering by webrender is used.
+ // Software converted RGB buffers strides are aliened to 16
+ return gfx::GetAlignedStride<16>(
+- GetSize().width, BytesPerPixel(gfx::SurfaceFormat::B8G8R8A8));
++ GetSize().width, BytesPerPixel(gfx::SurfaceFormat::OS_RGBA));
+ }
+ return ImageDataSerializer::ComputeRGBStride(format, GetSize().width);
+ }
+diff --git a/gfx/thebes/gfx2DGlue.h b/gfx/thebes/gfx2DGlue.h
+--- a/gfx/thebes/gfx2DGlue.h
++++ b/gfx/thebes/gfx2DGlue.h
+@@ -68,9 +68,9 @@ inline gfxRect ThebesRect(const RectDoub
+
+ inline gfxImageFormat SurfaceFormatToImageFormat(SurfaceFormat aFormat) {
+ switch (aFormat) {
+- case SurfaceFormat::B8G8R8A8:
++ case SurfaceFormat::OS_RGBA:
+ return SurfaceFormat::A8R8G8B8_UINT32;
+- case SurfaceFormat::B8G8R8X8:
++ case SurfaceFormat::OS_RGBX:
+ return SurfaceFormat::X8R8G8B8_UINT32;
+ case SurfaceFormat::R5G6B5_UINT16:
+ return SurfaceFormat::R5G6B5_UINT16;
+@@ -84,16 +84,16 @@ inline gfxImageFormat SurfaceFormatToIma
+ inline SurfaceFormat ImageFormatToSurfaceFormat(gfxImageFormat aFormat) {
+ switch (aFormat) {
+ case SurfaceFormat::A8R8G8B8_UINT32:
+- return SurfaceFormat::B8G8R8A8;
++ return SurfaceFormat::OS_RGBA;
+ case SurfaceFormat::X8R8G8B8_UINT32:
+- return SurfaceFormat::B8G8R8X8;
++ return SurfaceFormat::OS_RGBX;
+ case SurfaceFormat::R5G6B5_UINT16:
+ return SurfaceFormat::R5G6B5_UINT16;
+ case SurfaceFormat::A8:
+ return SurfaceFormat::A8;
+ default:
+ case SurfaceFormat::UNKNOWN:
+- return SurfaceFormat::B8G8R8A8;
++ return SurfaceFormat::OS_RGBA;
+ }
+ }
+
+@@ -102,9 +102,11 @@ inline gfxContentType ContentForFormat(c
+ case SurfaceFormat::R5G6B5_UINT16:
+ case SurfaceFormat::B8G8R8X8:
+ case SurfaceFormat::R8G8B8X8:
++ case SurfaceFormat::X8R8G8B8:
+ return gfxContentType::COLOR;
+ case SurfaceFormat::A8:
+ return gfxContentType::ALPHA;
++ case SurfaceFormat::A8R8G8B8:
+ case SurfaceFormat::B8G8R8A8:
+ case SurfaceFormat::R8G8B8A8:
+ default:
+diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp
+--- a/gfx/thebes/gfxPlatform.cpp
++++ b/gfx/thebes/gfxPlatform.cpp
+@@ -987,7 +987,7 @@ void gfxPlatform::Init() {
+
+ gPlatform->mScreenReferenceDrawTarget =
+ gPlatform->CreateOffscreenContentDrawTarget(IntSize(1, 1),
+- SurfaceFormat::B8G8R8A8);
++ SurfaceFormat::OS_RGBA);
+ if (!gPlatform->mScreenReferenceDrawTarget ||
+ !gPlatform->mScreenReferenceDrawTarget->IsValid()) {
+ // If TDR is detected, create a draw target with software backend
+diff --git a/gfx/thebes/gfxPlatformWorker.cpp b/gfx/thebes/gfxPlatformWorker.cpp
+--- a/gfx/thebes/gfxPlatformWorker.cpp
++++ b/gfx/thebes/gfxPlatformWorker.cpp
+@@ -64,7 +64,7 @@ RefPtr<mozilla::gfx::DrawTarget>
+ gfxPlatformWorker::ScreenReferenceDrawTarget() {
+ if (!mScreenReferenceDrawTarget) {
+ mScreenReferenceDrawTarget = Factory::CreateDrawTarget(
+- BackendType::SKIA, IntSize(1, 1), SurfaceFormat::B8G8R8A8);
++ BackendType::SKIA, IntSize(1, 1), SurfaceFormat::OS_RGBA);
+ }
+ return mScreenReferenceDrawTarget;
+ }
+diff --git a/gfx/thebes/gfxUtils.cpp b/gfx/thebes/gfxUtils.cpp
+--- a/gfx/thebes/gfxUtils.cpp
++++ b/gfx/thebes/gfxUtils.cpp
+@@ -1082,10 +1082,10 @@ nsresult gfxUtils::EncodeSourceSurfaceAs
+ }
+
+ RefPtr<DataSourceSurface> dataSurface;
+- if (aSurface->GetFormat() != SurfaceFormat::B8G8R8A8) {
++ if (aSurface->GetFormat() != SurfaceFormat::OS_RGBA) {
+ // FIXME bug 995807 (B8G8R8X8), bug 831898 (R5G6B5)
+ dataSurface = gfxUtils::CopySurfaceToDataSourceSurfaceWithFormat(
+- aSurface, SurfaceFormat::B8G8R8A8);
++ aSurface, SurfaceFormat::OS_RGBA);
+ } else {
+ dataSurface = aSurface->GetDataSurface();
+ }
+diff --git a/gfx/webrender_bindings/RenderCompositorSWGL.cpp b/gfx/webrender_bindings/RenderCompositorSWGL.cpp
+--- a/gfx/webrender_bindings/RenderCompositorSWGL.cpp
++++ b/gfx/webrender_bindings/RenderCompositorSWGL.cpp
+@@ -7,6 +7,7 @@
+ #include "RenderCompositorSWGL.h"
+
+ #include "mozilla/gfx/Logging.h"
++#include "mozilla/gfx/Swizzle.h"
+ #include "mozilla/widget/CompositorWidget.h"
+
+ #ifdef MOZ_WIDGET_GTK
+@@ -92,8 +93,8 @@ bool RenderCompositorSWGL::AllocateMappe
+ gfx::SurfaceFormat format = gfx::SurfaceFormat::UNKNOWN;
+ if (bufferMode != layers::BufferMode::BUFFERED && !mSurface &&
+ mDT->LockBits(&data, &size, &stride, &format) &&
+- (format != gfx::SurfaceFormat::B8G8R8A8 &&
+- format != gfx::SurfaceFormat::B8G8R8X8)) {
++ (format != gfx::SurfaceFormat::OS_RGBA &&
++ format != gfx::SurfaceFormat::OS_RGBX)) {
+ // We tried to lock the DT and it succeeded, but the size or format
+ // of the data is not compatible, so just release it and fall back below...
+ mDT->ReleaseBits(data);
+@@ -127,7 +128,7 @@ bool RenderCompositorSWGL::AllocateMappe
+ size = bounds.Size().ToUnknownSize();
+ if (!mSurface || mSurface->GetSize() != size) {
+ mSurface = gfx::Factory::CreateDataSourceSurface(
+- size, gfx::SurfaceFormat::B8G8R8A8);
++ size, gfx::SurfaceFormat::OS_RGBA);
+ }
+ gfx::DataSourceSurface::MappedSurface map = {nullptr, 0};
+ if (!mSurface || !mSurface->Map(gfx::DataSourceSurface::READ_WRITE, &map)) {
+@@ -242,6 +243,12 @@ void RenderCompositorSWGL::CommitMappedB
+ }
+ mDT->Flush();
+
++#if MOZ_BIG_ENDIAN()
++ gfx::SwizzleData(mMappedData, mMappedStride, gfx::SurfaceFormat::B8G8R8A8,
++ mMappedData, mMappedStride, gfx::SurfaceFormat::A8R8G8B8,
++ mDT->GetSize());
++#endif
++
+ // Done with the DT. Hand it back to the widget and clear out any trace of it.
+ mWidget->EndRemoteDrawingInRegion(mDT, mDirtyRegion);
+ mDirtyRegion.SetEmpty();
+diff --git a/gfx/webrender_bindings/RenderTextureHostSWGL.cpp b/gfx/webrender_bindings/RenderTextureHostSWGL.cpp
+--- a/gfx/webrender_bindings/RenderTextureHostSWGL.cpp
++++ b/gfx/webrender_bindings/RenderTextureHostSWGL.cpp
+@@ -36,8 +36,8 @@ bool RenderTextureHostSWGL::UpdatePlanes
+ }
+ GLenum internalFormat = 0;
+ switch (format) {
+- case gfx::SurfaceFormat::B8G8R8A8:
+- case gfx::SurfaceFormat::B8G8R8X8:
++ case gfx::SurfaceFormat::OS_RGBA:
++ case gfx::SurfaceFormat::OS_RGBX:
+ MOZ_ASSERT(colorDepth == gfx::ColorDepth::COLOR_8);
+ internalFormat = LOCAL_GL_RGBA8;
+ break;
+diff --git a/gfx/webrender_bindings/WebRenderTypes.h b/gfx/webrender_bindings/WebRenderTypes.h
+--- a/gfx/webrender_bindings/WebRenderTypes.h
++++ b/gfx/webrender_bindings/WebRenderTypes.h
+@@ -105,7 +105,7 @@ inline Maybe<wr::ImageFormat> SurfaceFor
+ inline gfx::SurfaceFormat ImageFormatToSurfaceFormat(ImageFormat aFormat) {
+ switch (aFormat) {
+ case ImageFormat::BGRA8:
+- return gfx::SurfaceFormat::B8G8R8A8;
++ return gfx::SurfaceFormat::OS_RGBA;
+ case ImageFormat::R8:
+ return gfx::SurfaceFormat::A8;
+ case ImageFormat::R16:
+diff --git a/image/imgTools.cpp b/image/imgTools.cpp
+--- a/image/imgTools.cpp
++++ b/image/imgTools.cpp
+@@ -425,8 +425,8 @@ static nsresult EncodeImageData(DataSour
+ const nsACString& aMimeType,
+ const nsAString& aOutputOptions,
+ nsIInputStream** aStream) {
+- MOZ_ASSERT(aDataSurface->GetFormat() == SurfaceFormat::B8G8R8A8 ||
+- aDataSurface->GetFormat() == SurfaceFormat::B8G8R8X8,
++ MOZ_ASSERT(aDataSurface->GetFormat() == SurfaceFormat::OS_RGBA ||
++ aDataSurface->GetFormat() == SurfaceFormat::OS_RGBX,
+ "We're assuming B8G8R8A8/X8");
+
+ // Get an image encoder for the media type
+@@ -474,13 +474,13 @@ imgTools::EncodeImage(imgIContainer* aCo
+
+ RefPtr<DataSourceSurface> dataSurface;
+
+- if (frame->GetFormat() == SurfaceFormat::B8G8R8A8 ||
+- frame->GetFormat() == SurfaceFormat::B8G8R8X8) {
++ if (frame->GetFormat() == SurfaceFormat::OS_RGBA ||
++ frame->GetFormat() == SurfaceFormat::OS_RGBX) {
+ dataSurface = frame->GetDataSurface();
+ } else {
+ // Convert format to SurfaceFormat::B8G8R8A8
+ dataSurface = gfxUtils::CopySurfaceToDataSourceSurfaceWithFormat(
+- frame, SurfaceFormat::B8G8R8A8);
++ frame, SurfaceFormat::OS_RGBA);
+ }
+
+ NS_ENSURE_TRUE(dataSurface, NS_ERROR_FAILURE);
+@@ -522,8 +522,8 @@ imgTools::EncodeScaledImage(imgIContaine
+
+ // If the given surface is the right size/format, we can encode it directly.
+ if (scaledSize == frame->GetSize() &&
+- (frame->GetFormat() == SurfaceFormat::B8G8R8A8 ||
+- frame->GetFormat() == SurfaceFormat::B8G8R8X8)) {
++ (frame->GetFormat() == SurfaceFormat::OS_RGBA ||
++ frame->GetFormat() == SurfaceFormat::OS_RGBX)) {
+ RefPtr<DataSourceSurface> dataSurface = frame->GetDataSurface();
+ if (dataSurface) {
+ return EncodeImageData(dataSurface, aMimeType, aOutputOptions, aStream);
+@@ -533,7 +533,7 @@ imgTools::EncodeScaledImage(imgIContaine
+ // Otherwise we need to scale it using a draw target.
+ // Ensure the surface is initialized to clear in case we need to blend to it.
+ RefPtr<DataSourceSurface> dataSurface = Factory::CreateDataSourceSurface(
+- scaledSize, SurfaceFormat::B8G8R8A8, true);
++ scaledSize, SurfaceFormat::OS_RGBA, true);
+ if (NS_WARN_IF(!dataSurface)) {
+ return NS_ERROR_FAILURE;
+ }
+@@ -545,7 +545,7 @@ imgTools::EncodeScaledImage(imgIContaine
+
+ RefPtr<DrawTarget> dt = Factory::CreateDrawTargetForData(
+ BackendType::SKIA, map.GetData(), dataSurface->GetSize(), map.GetStride(),
+- SurfaceFormat::B8G8R8A8);
++ SurfaceFormat::OS_RGBA);
+ if (!dt) {
+ gfxWarning() << "imgTools::EncodeImage failed in CreateDrawTargetForData";
+ return NS_ERROR_OUT_OF_MEMORY;
+@@ -603,7 +603,7 @@ imgTools::EncodeCroppedImage(imgIContain
+ frameHeight >= aOffsetY + aHeight);
+
+ RefPtr<DataSourceSurface> dataSurface = Factory::CreateDataSourceSurface(
+- IntSize(aWidth, aHeight), SurfaceFormat::B8G8R8A8,
++ IntSize(aWidth, aHeight), SurfaceFormat::OS_RGBA,
+ /* aZero = */ true);
+ if (NS_WARN_IF(!dataSurface)) {
+ return NS_ERROR_FAILURE;
+@@ -616,7 +616,7 @@ imgTools::EncodeCroppedImage(imgIContain
+
+ RefPtr<DrawTarget> dt = Factory::CreateDrawTargetForData(
+ BackendType::SKIA, map.GetData(), dataSurface->GetSize(), map.GetStride(),
+- SurfaceFormat::B8G8R8A8);
++ SurfaceFormat::OS_RGBA);
+ if (!dt) {
+ gfxWarning()
+ << "imgTools::EncodeCroppedImage failed in CreateDrawTargetForData";
+diff --git a/layout/base/PresShell.cpp b/layout/base/PresShell.cpp
+--- a/layout/base/PresShell.cpp
++++ b/layout/base/PresShell.cpp
+@@ -5124,7 +5124,7 @@ already_AddRefed<SourceSurface> PresShel
+
+ RefPtr<DrawTarget> dt =
+ gfxPlatform::GetPlatform()->CreateOffscreenContentDrawTarget(
+- IntSize(pixelArea.width, pixelArea.height), SurfaceFormat::B8G8R8A8);
++ IntSize(pixelArea.width, pixelArea.height), SurfaceFormat::OS_RGBA);
+ if (!dt || !dt->IsValid()) {
+ return nullptr;
+ }
+diff --git a/layout/base/nsLayoutUtils.cpp b/layout/base/nsLayoutUtils.cpp
+--- a/layout/base/nsLayoutUtils.cpp
++++ b/layout/base/nsLayoutUtils.cpp
+@@ -7022,9 +7022,9 @@ SurfaceFromElementResult nsLayoutUtils::
+ result.mAlphaType = gfxAlphaType::Opaque;
+ RefPtr<DrawTarget> ref =
+ aTarget ? aTarget : gfxPlatform::ThreadLocalScreenReferenceDrawTarget();
+- if (ref->CanCreateSimilarDrawTarget(size, SurfaceFormat::B8G8R8A8)) {
++ if (ref->CanCreateSimilarDrawTarget(size, SurfaceFormat::OS_RGBA)) {
+ RefPtr<DrawTarget> dt =
+- ref->CreateSimilarDrawTarget(size, SurfaceFormat::B8G8R8A8);
++ ref->CreateSimilarDrawTarget(size, SurfaceFormat::OS_RGBA);
+ if (dt) {
+ result.mSourceSurface = dt->Snapshot();
+ }
+@@ -7102,12 +7102,12 @@ SurfaceFromElementResult nsLayoutUtils::
+ : gfxPlatform::GetPlatform()
+ ->ThreadLocalScreenReferenceDrawTarget();
+ if (!ref->CanCreateSimilarDrawTarget(displaySize,
+- SurfaceFormat::B8G8R8A8)) {
++ SurfaceFormat::OS_RGBA)) {
+ return result;
+ }
+
+ RefPtr<DrawTarget> dt =
+- ref->CreateSimilarDrawTarget(displaySize, SurfaceFormat::B8G8R8A8);
++ ref->CreateSimilarDrawTarget(displaySize, SurfaceFormat::OS_RGBA);
+ if (!dt) {
+ return result;
+ }
+@@ -7380,9 +7380,9 @@ SurfaceFromElementResult nsLayoutUtils::
+ RefPtr<DrawTarget> ref =
+ aTarget ? aTarget
+ : gfxPlatform::GetPlatform()->ScreenReferenceDrawTarget();
+- if (ref->CanCreateSimilarDrawTarget(size, SurfaceFormat::B8G8R8A8)) {
++ if (ref->CanCreateSimilarDrawTarget(size, SurfaceFormat::OS_RGBA)) {
+ RefPtr<DrawTarget> dt =
+- ref->CreateSimilarDrawTarget(size, SurfaceFormat::B8G8R8A8);
++ ref->CreateSimilarDrawTarget(size, SurfaceFormat::OS_RGBA);
+ if (dt) {
+ result.mSourceSurface = dt->Snapshot();
+ }
+diff --git a/layout/painting/nsCSSRenderingGradients.cpp b/layout/painting/nsCSSRenderingGradients.cpp
+--- a/layout/painting/nsCSSRenderingGradients.cpp
++++ b/layout/painting/nsCSSRenderingGradients.cpp
+@@ -1160,7 +1160,7 @@ bool nsCSSGradientRenderer::TryPaintTile
+ {
+ RefPtr<gfx::DrawTarget> tileTarget =
+ aContext.GetDrawTarget()->CreateSimilarDrawTarget(
+- tileSize, gfx::SurfaceFormat::B8G8R8A8);
++ tileSize, gfx::SurfaceFormat::OS_RGBA);
+ if (!tileTarget || !tileTarget->IsValid()) {
+ return false;
+ }
+diff --git a/layout/painting/nsDisplayList.cpp b/layout/painting/nsDisplayList.cpp
+--- a/layout/painting/nsDisplayList.cpp
++++ b/layout/painting/nsDisplayList.cpp
+@@ -5043,7 +5043,7 @@ void nsDisplayBlendMode::Paint(nsDisplay
+ // we're going to draw to. This will include the same transform as
+ // is currently on |dt|.
+ RefPtr<DrawTarget> temp =
+- dt->CreateClippedDrawTarget(rect, SurfaceFormat::B8G8R8A8);
++ dt->CreateClippedDrawTarget(rect, SurfaceFormat::OS_RGBA);
+ if (!temp) {
+ return;
+ }
+@@ -6870,7 +6870,7 @@ void nsDisplayTransform::Paint(nsDisplay
+ RefPtr<DrawTarget> untransformedDT =
+ gfxPlatform::GetPlatform()->CreateOffscreenContentDrawTarget(
+ IntSize(pixelBounds.Width(), pixelBounds.Height()),
+- SurfaceFormat::B8G8R8A8, true);
++ SurfaceFormat::OS_RGBA, true);
+ if (!untransformedDT || !untransformedDT->IsValid()) {
+ return;
+ }
+diff --git a/layout/painting/nsImageRenderer.cpp b/layout/painting/nsImageRenderer.cpp
+--- a/layout/painting/nsImageRenderer.cpp
++++ b/layout/painting/nsImageRenderer.cpp
+@@ -469,7 +469,7 @@ ImgDrawResult nsImageRenderer::Draw(nsPr
+ return ImgDrawResult::SUCCESS;
+ }
+ RefPtr<DrawTarget> tempDT = ctx->GetDrawTarget()->CreateSimilarDrawTarget(
+- tmpDTRect.Size(), SurfaceFormat::B8G8R8A8);
++ tmpDTRect.Size(), SurfaceFormat::OS_RGBA);
+ if (!tempDT || !tempDT->IsValid()) {
+ gfxDevCrash(LogReason::InvalidContext)
+ << "ImageRenderer::Draw problem " << gfx::hexa(tempDT);
+diff --git a/layout/svg/FilterInstance.cpp b/layout/svg/FilterInstance.cpp
+--- a/layout/svg/FilterInstance.cpp
++++ b/layout/svg/FilterInstance.cpp
+@@ -666,7 +666,7 @@ void FilterInstance::BuildSourcePaint(So
+
+ RefPtr<DrawTarget> offscreenDT =
+ gfxPlatform::GetPlatform()->CreateOffscreenContentDrawTarget(
+- neededRect.Size(), SurfaceFormat::B8G8R8A8);
++ neededRect.Size(), SurfaceFormat::OS_RGBA);
+ if (!offscreenDT || !offscreenDT->IsValid()) {
+ return;
+ }
+@@ -714,7 +714,7 @@ void FilterInstance::BuildSourceImage(Dr
+ }
+
+ RefPtr<DrawTarget> offscreenDT;
+- SurfaceFormat format = SurfaceFormat::B8G8R8A8;
++ SurfaceFormat format = SurfaceFormat::OS_RGBA;
+ if (aDest->CanCreateSimilarDrawTarget(neededRect.Size(), format)) {
+ offscreenDT = aDest->CreateSimilarDrawTargetForFilter(
+ neededRect.Size(), format, aFilter, aSource, aSourceRect, Point(0, 0));
+diff --git a/layout/svg/SVGMaskFrame.cpp b/layout/svg/SVGMaskFrame.cpp
+--- a/layout/svg/SVGMaskFrame.cpp
++++ b/layout/svg/SVGMaskFrame.cpp
+@@ -68,7 +68,7 @@ already_AddRefed<SourceSurface> SVGMaskF
+ RefPtr<DrawTarget> maskDT;
+ if (maskType == StyleMaskType::Luminance) {
+ maskDT = aParams.dt->CreateClippedDrawTarget(maskSurfaceRect,
+- SurfaceFormat::B8G8R8A8);
++ SurfaceFormat::OS_RGBA);
+ } else {
+ maskDT =
+ aParams.dt->CreateClippedDrawTarget(maskSurfaceRect, SurfaceFormat::A8);
+diff --git a/layout/svg/SVGPatternFrame.cpp b/layout/svg/SVGPatternFrame.cpp
+--- a/layout/svg/SVGPatternFrame.cpp
++++ b/layout/svg/SVGPatternFrame.cpp
+@@ -370,7 +370,7 @@ already_AddRefed<SourceSurface> SVGPatte
+ }
+
+ RefPtr<DrawTarget> dt = aDrawTarget->CreateSimilarDrawTargetWithBacking(
+- surfaceSize, SurfaceFormat::B8G8R8A8);
++ surfaceSize, SurfaceFormat::OS_RGBA);
+ if (!dt || !dt->IsValid()) {
+ return nullptr;
+ }
+diff --git a/layout/svg/SVGUtils.cpp b/layout/svg/SVGUtils.cpp
+--- a/layout/svg/SVGUtils.cpp
++++ b/layout/svg/SVGUtils.cpp
+@@ -488,7 +488,7 @@ class MixModeBlender {
+
+ RefPtr<DrawTarget> targetDT =
+ mSourceCtx->GetDrawTarget()->CreateSimilarDrawTarget(
+- drawRect.Size(), SurfaceFormat::B8G8R8A8);
++ drawRect.Size(), SurfaceFormat::OS_RGBA);
+ if (!targetDT || !targetDT->IsValid()) {
+ return nullptr;
+ }
+diff --git a/widget/gtk/DMABufSurface.cpp b/widget/gtk/DMABufSurface.cpp
+--- a/widget/gtk/DMABufSurface.cpp
++++ b/widget/gtk/DMABufSurface.cpp
+@@ -948,8 +948,8 @@ bool DMABufSurfaceRGBA::HasAlpha() {
+ }
+
+ gfx::SurfaceFormat DMABufSurfaceRGBA::GetFormat() {
+- return HasAlpha() ? gfx::SurfaceFormat::B8G8R8A8
+- : gfx::SurfaceFormat::B8G8R8X8;
++ return HasAlpha() ? gfx::SurfaceFormat::OS_RGBA
++ : gfx::SurfaceFormat::OS_RGBX;
+ }
+
+ // GL uses swapped R and B components so report accordingly.
+@@ -1662,7 +1662,7 @@ DMABufSurfaceYUV::GetAsSourceSurface() {
+ LOGDMABUF(("DMABufSurfaceYUV::GetAsSourceSurface UID %d", mUID));
+
+ gfx::IntSize size(GetWidth(), GetHeight());
+- const auto format = gfx::SurfaceFormat::B8G8R8A8;
++ const auto format = gfx::SurfaceFormat::OS_RGBA;
+ RefPtr<gfx::DataSourceSurface> source =
+ gfx::Factory::CreateDataSourceSurface(size, format);
+ if (NS_WARN_IF(!source)) {
+@@ -1692,7 +1692,7 @@ nsresult DMABufSurfaceYUV::BuildSurfaceD
+ LOGDMABUF(("DMABufSurfaceYUV::BuildSurfaceDescriptorBuffer UID %d", mUID));
+
+ gfx::IntSize size(GetWidth(), GetHeight());
+- const auto format = gfx::SurfaceFormat::B8G8R8A8;
++ const auto format = gfx::SurfaceFormat::OS_RGBA;
+
+ uint8_t* buffer = nullptr;
+ int32_t stride = 0;
+diff --git a/widget/gtk/WindowSurfaceX11.cpp b/widget/gtk/WindowSurfaceX11.cpp
+--- a/widget/gtk/WindowSurfaceX11.cpp
++++ b/widget/gtk/WindowSurfaceX11.cpp
+@@ -24,13 +24,13 @@ gfx::SurfaceFormat WindowSurfaceX11::Get
+ case 32:
+ if (aVisual->red_mask == 0xff0000 && aVisual->green_mask == 0xff00 &&
+ aVisual->blue_mask == 0xff) {
+- return gfx::SurfaceFormat::B8G8R8A8;
++ return gfx::SurfaceFormat::OS_RGBA;
+ }
+ break;
+ case 24:
+ if (aVisual->red_mask == 0xff0000 && aVisual->green_mask == 0xff00 &&
+ aVisual->blue_mask == 0xff) {
+- return gfx::SurfaceFormat::B8G8R8X8;
++ return gfx::SurfaceFormat::OS_RGBX;
+ }
+ break;
+ case 16:
diff --git a/user/firefox-esr/stab.h b/user/firefox-esr/stab.h
deleted file mode 100644
index 6f70af398..000000000
--- a/user/firefox-esr/stab.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* $OpenBSD: stab.h,v 1.3 2003/06/02 19:34:12 millert Exp $ */
-/* $NetBSD: stab.h,v 1.4 1994/10/26 00:56:25 cgd Exp $ */
-
-/*-
- * Copyright (c) 1991 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)stab.h 5.2 (Berkeley) 4/4/91
- */
-
-#ifndef _STAB_H_
-#define _STAB_H_
-
-/*
- * The following are symbols used by various debuggers and by the Pascal
- * compiler. Each of them must have one (or more) of the bits defined by
- * the N_STAB mask set.
- */
-
-#define N_GSYM 0x20 /* global symbol */
-#define N_FNAME 0x22 /* F77 function name */
-#define N_FUN 0x24 /* procedure name */
-#define N_STSYM 0x26 /* data segment variable */
-#define N_LCSYM 0x28 /* bss segment variable */
-#define N_MAIN 0x2a /* main function name */
-#define N_PC 0x30 /* global Pascal symbol */
-#define N_RSYM 0x40 /* register variable */
-#define N_SLINE 0x44 /* text segment line number */
-#define N_DSLINE 0x46 /* data segment line number */
-#define N_BSLINE 0x48 /* bss segment line number */
-#define N_SSYM 0x60 /* structure/union element */
-#define N_SO 0x64 /* main source file name */
-#define N_LSYM 0x80 /* stack variable */
-#define N_BINCL 0x82 /* include file beginning */
-#define N_SOL 0x84 /* included source file name */
-#define N_PSYM 0xa0 /* parameter variable */
-#define N_EINCL 0xa2 /* include file end */
-#define N_ENTRY 0xa4 /* alternate entry point */
-#define N_LBRAC 0xc0 /* left bracket */
-#define N_EXCL 0xc2 /* deleted include file */
-#define N_RBRAC 0xe0 /* right bracket */
-#define N_BCOMM 0xe2 /* begin common */
-#define N_ECOMM 0xe4 /* end common */
-#define N_ECOML 0xe8 /* end common (local name) */
-#define N_LENG 0xfe /* length of preceding entry */
-
-#endif /* !_STAB_H_ */
diff --git a/user/firefox-esr/stackwalk-x86-ppc.patch b/user/firefox-esr/stackwalk-x86-ppc.patch
new file mode 100644
index 000000000..df9ebfd94
--- /dev/null
+++ b/user/firefox-esr/stackwalk-x86-ppc.patch
@@ -0,0 +1,16 @@
+--- thunderbird-52.6.0/mozglue/misc/StackWalk.cpp
++++ thunderbird-52.6.0/mozglue/misc/StackWalk.cpp
+@@ -50,13 +50,6 @@ static CriticalAddress gCriticalAddress;
+ # define HAVE___LIBC_STACK_END 0
+ #endif
+
+-#if (defined(linux) && \
+- ((defined(__GNUC__) && (defined(__i386) || defined(PPC))) || \
+- defined(HAVE__UNWIND_BACKTRACE)) && \
+- (HAVE___LIBC_STACK_END || ANDROID))
+-# define MOZ_STACKWALK_SUPPORTS_LINUX 1
+-#else
+ # define MOZ_STACKWALK_SUPPORTS_LINUX 0
+-#endif
+
+ #if HAVE___LIBC_STACK_END
diff --git a/user/firefox-esr/webrender.patch b/user/firefox-esr/webrender.patch
new file mode 100644
index 000000000..cfc920cfd
--- /dev/null
+++ b/user/firefox-esr/webrender.patch
@@ -0,0 +1,28 @@
+# HG changeset patch
+# User Petr Sumbera <petr.sumbera@oracle.com>
+# Date 1648114576 25200
+# Thu Mar 24 02:36:16 2022 -0700
+# Node ID 903e5f164c0ed424492eec6f388c03cbbcf99913
+# Parent 20d81e68da033746bf81acbb08490f16679853da
+Bug 1716707 [s390x] Software WebRender does not support big endian
+
+--- firefox-128.0/image/imgFrame.cpp
++++ firefox-128.0/image/imgFrame.cpp
+@@ -382,6 +382,17 @@ mAborted = true;
+ return NS_ERROR_OUT_OF_MEMORY;
+ }
+
++#if MOZ_BIG_ENDIAN()
++ if (aBackend == gfx::BackendType::SKIA && canUseDataSurface) {
++ // SKIA is lying about what format it returns on big endian
++ for (int ii=0; ii < mRawSurface->GetSize().Height()*mRawSurface->Stride() / 4; ++ii) {
++ uint32_t *vals = (uint32_t*)(mRawSurface->GetData());
++ uint32_t val = ((vals[ii] << 8) & 0xFF00FF00 ) | ((vals[ii] >> 8) & 0xFF00FF );
++ vals[ii] = (val << 16) | (val >> 16);
++ }
++ }
++#endif
++
+ if (!canUseDataSurface) {
+ // We used an offscreen surface, which is an "optimized" surface from
+ // imgFrame's perspective.
diff --git a/user/firefox-esr/without-jit.patch b/user/firefox-esr/without-jit.patch
new file mode 100644
index 000000000..dff372ec0
--- /dev/null
+++ b/user/firefox-esr/without-jit.patch
@@ -0,0 +1,28 @@
+diff -r 81fc811c3c39 toolkit/components/translations/actors/TranslationsParent.sys.mjs
+--- a/toolkit/components/translations/actors/TranslationsParent.sys.mjs Thu Aug 08 21:26:29 2024 -0700
++++ b/toolkit/components/translations/actors/TranslationsParent.sys.mjs Sat Aug 10 16:45:13 2024 -0700
+@@ -618,16 +618,25 @@
+ * Detect if Wasm SIMD is supported, and cache the value. It's better to check
+ * for support before downloading large binary blobs to a user who can't even
+ * use the feature. This function also respects mocks and simulating unsupported
+ * engines.
+ *
+ * @type {boolean}
+ */
+ static getIsTranslationsEngineSupported() {
++ try {
++ // Ensure WebAssembly is supported and enabled (may not be on tier-3).
++ if (!WebAssembly) {
++ return false;
++ }
++ } catch(e) {
++ return false;
++ }
++
+ if (lazy.simulateUnsupportedEnginePref) {
+ // Use the non-lazy console.log so that the user is always informed as to why
+ // the translations engine is not working.
+ console.log(
+ "Translations: The translations engine is disabled through the pref " +
+ '"browser.translations.simulateUnsupportedEngine".'
+ );
diff --git a/user/fish/APKBUILD b/user/fish/APKBUILD
index 8c0ff4bc6..0544bd24b 100644
--- a/user/fish/APKBUILD
+++ b/user/fish/APKBUILD
@@ -1,34 +1,40 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=fish
-pkgver=3.0.2
+pkgver=3.7.1
pkgrel=0
pkgdesc="Modern interactive commandline shell"
url="http://www.fishshell.com"
arch="all"
-options="!check" # no tests
license="BSD-3-Clause AND BSD-2-Clause AND GPL-2.0+ AND GPL-2.0-only AND ISC"
-depends="bc"
+depends="bc groff"
depends_dev="$pkgname-tools"
-makedepends="libtool doxygen ncurses-dev pcre2-dev"
+checkdepends="py3-pexpect"
+makedepends="cmake doxygen ncurses-dev pcre2-dev"
install="$pkgname.post-install $pkgname.post-upgrade $pkgname.pre-deinstall"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-tools::noarch"
-source="https://github.com/fish-shell/fish-shell/releases/download/$pkgver/$pkgname-$pkgver.tar.gz"
+source="https://github.com/fish-shell/fish-shell/releases/download/$pkgver/$pkgname-$pkgver.tar.xz"
+
+prepare() {
+ default_prepare
+ rm tests/checks/check-completions.fish
+}
build() {
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_SYSCONFDIR=/etc \
+ -DCURSES_NEED_NCURSES=ON \
+ -Bbuild .
+ make -C build
+}
+
+check() {
+ make -C build test
}
package() {
- make install DESTDIR="$pkgdir"
- rm -fr "$pkgdir"/usr/share/$pkgname/groff
+ make -C build install DESTDIR="$pkgdir"
}
dev() {
@@ -53,4 +59,4 @@ tools() {
mv "$pkgdir"/usr/share/$pkgname/tools "$subpkgdir"/usr/share/$pkgname
}
-sha512sums="cd4a8e6a0d7770ef17e92d3d20ea23e754b9fa53e5ee5459ab5838fcbbcac69544ca2f83551e93a004b140cc14ec556860a711ce216197753c1704901518c9c3 fish-3.0.2.tar.gz"
+sha512sums="f1605c400c5d5494f37b92dd386963dba7a3f3c401c369aaf3ff616d9d94836a0138d26074be24c92d94d9d7b625513800899c9431f5e21be0757eb0a0bfd3fe fish-3.7.1.tar.xz"
diff --git a/user/flac/APKBUILD b/user/flac/APKBUILD
index 0588e8fc2..1bbe98ccd 100644
--- a/user/flac/APKBUILD
+++ b/user/flac/APKBUILD
@@ -1,24 +1,24 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=flac
-pkgver=1.3.2
-pkgrel=2
+pkgver=1.3.3
+pkgrel=0
pkgdesc="Free Lossless Audio Codec"
url="https://xiph.org/flac/"
arch="all"
-options="!checkroot"
license="BSD-3-Clause AND GPL-2.0+"
-subpackages="$pkgname-dev $pkgname-doc"
-depends=
+depends=""
makedepends="libogg-dev"
-source="https://downloads.xiph.org/releases/flac/flac-${pkgver}.tar.xz
- "
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://downloads.xiph.org/releases/flac/flac-${pkgver}.tar.xz"
-build() {
- cd "$builddir"
+# secfixes:
+# 1.3.2-r3:
+# - CVE-2017-6888
+build() {
local _arch_conf
case "${CARCH}" in
- ppc*) _arch_conf="--enable-altivec" ;;
+ ppc*) _arch_conf="--enable-altivec --disable-vsx" ;;
x86_64) _arch_conf="--enable-sse" ;;
x86) _arch_conf="--disable-sse" ;;
esac
@@ -37,16 +37,14 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -Dm0644 COPYING.Xiph \
"$pkgdir"/usr/share/licenses/$pkgname/COPYING.Xiph
}
-sha512sums="63910e8ebbe508316d446ffc9eb6d02efbd5f47d29d2ea7864da9371843c8e671854db6e89ba043fe08aef1845b8ece70db80f1cce853f591ca30d56ef7c3a15 flac-1.3.2.tar.xz"
+sha512sums="d6417e14fab0c41b2df369e5e39ce62a5f588e491af4d465b0162f74e171e5549b2f061867f344bfbf8aaccd246bf5f2acd697e532a2c7901c920c69429b1a28 flac-1.3.3.tar.xz"
diff --git a/user/flameshot/APKBUILD b/user/flameshot/APKBUILD
new file mode 100644
index 000000000..3ac292020
--- /dev/null
+++ b/user/flameshot/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=flameshot
+pkgver=12.1.0
+pkgrel=0
+pkgdesc="Simple, powerful screenshot utility"
+url="https://flameshot.org/"
+arch="all"
+license="GPL-3.0+ AND LGPL-3.0+ AND MIT AND (GPL-3.0+ AND GPL-2.0-only) AND Apache-2.0 AND CC0-1.0 AND FAL-1.3"
+depends=""
+makedepends="cmake qt5-qtbase-dev qt5-qtsvg-dev qt5-qttools-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="flameshot-$pkgver.tar.gz::https://github.com/flameshot-org/flameshot/archive/refs/tags/v$pkgver.tar.gz"
+langdir="/usr/share/flameshot/translations"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="159bf3a8ff406b3881dcc77fc48d9e7cc0d595bd47ee2363396d7efc95f69160cf25ccf99cd1b2c2b527baeadf91c209784a7bca23ed5f17caacc385e161c83c flameshot-12.1.0.tar.gz"
diff --git a/user/flite/APKBUILD b/user/flite/APKBUILD
index 5ae3ea67a..ae7753595 100644
--- a/user/flite/APKBUILD
+++ b/user/flite/APKBUILD
@@ -1,39 +1,38 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=flite
-pkgver=2.1
-pkgrel=0
+pkgver=2.2
+pkgrel=1
pkgdesc="Small, fast text-to-speech synthesizer based on Festival"
url="http://www.festvox.org/flite/"
arch="all"
-options="!check" # testsuite refuses to cooperate
+options="!check" # Test suite refuses to cooperate.
license="MIT AND Apache-2.0 AND BSD-3-Clause AND Public-Domain AND BSD-2-Clause"
depends=""
-makedepends="alsa-lib-dev"
+depends_dev="alsa-lib-dev"
+makedepends="$depends_dev"
subpackages="$pkgname-dev"
-source="http://www.festvox.org/flite/packed/flite-$pkgver/flite-$pkgver-release.tar.bz2"
-builddir="$srcdir/flite-$pkgver-release"
+source="$pkgname-$pkgver.tar.gz::https://github.com/festvox/flite/archive/v$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var
+ --localstatedir=/var \
+ --with-pic \
+ --enable-shared
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e9ef9ca4b6920178634d94bbe6e21a8b0ec471b010b07e6cc961ed2d120acb944c8e1d268fe26188f7dfe43fb7bd4bdff7fa53b2d2f12029d37e08d0316620d2 flite-2.1-release.tar.bz2"
+sha512sums="1ca2f4145651490ef8405fdb830a3b42e885020a7603d965f6a5581b01bed41047d396b38c2ceab138fc0b28d28078db17acd2b5a84c6444cb99d65c581afa72 flite-2.2.tar.gz"
diff --git a/user/fltk/APKBUILD b/user/fltk/APKBUILD
index fe5c3d55f..c1842602f 100644
--- a/user/fltk/APKBUILD
+++ b/user/fltk/APKBUILD
@@ -1,23 +1,22 @@
# Contributor: ScrumpyJack <scrumpyjack@st.ilet.to>
# Maintainer:
pkgname=fltk
-pkgver=1.3.4.2
-_realver=1.3.4-2
-pkgrel=0
+pkgver=1.3.5
+_realver=1.3.5
+pkgrel=1
pkgdesc="Cross-platform C++ GUI toolkit"
url="https://www.fltk.org/"
arch="all"
options="!check" # No test suite.
license="LGPL-2.0-only WITH FLTK-exception"
depends=""
-depends_dev="libx11-dev libxext-dev libxft-dev mesa-dev"
+depends_dev="libglvnd-dev libx11-dev libxext-dev libxft-dev"
makedepends="$depends_dev libjpeg-turbo-dev libpng-dev libxinerama-dev"
subpackages="$pkgname-doc $pkgname-dev $pkgname-fluid"
-source="https://fltk.org/pub/fltk/1.3.4/$pkgname-$_realver-source.tar.gz"
+source="https://www.fltk.org/pub/fltk/1.3.5/$pkgname-$_realver-source.tar.gz"
builddir="$srcdir"/$pkgname-$_realver
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -30,7 +29,6 @@ build() {
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
# remove static libs
rm "$pkgdir"/usr/lib/*.a
@@ -38,9 +36,9 @@ package() {
fluid() {
pkgdesc="Fast Light User Interface Designer"
- depends=
+ depends=""
mkdir -p "$subpkgdir"/usr/
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}
-sha512sums="cc169449b71ca966b2043ceedc55e92220ccb6be07b0ac54eeec36bbed5d60e2f59c6faba2403b5292b9120f5255227880a066d98ac82e57d502522bc627fd4d fltk-1.3.4-2-source.tar.gz"
+sha512sums="db7ea7c5f3489195a48216037b9371a50f1119ae7692d66f71b6711e5ccf78814670581bae015e408dee15c4bba921728309372c1cffc90113cdc092e8540821 fltk-1.3.5-source.tar.gz"
diff --git a/user/fluidsynth/APKBUILD b/user/fluidsynth/APKBUILD
index dab03f8e1..a81f63c41 100644
--- a/user/fluidsynth/APKBUILD
+++ b/user/fluidsynth/APKBUILD
@@ -1,14 +1,14 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=fluidsynth
-pkgver=2.0.4
+pkgver=2.1.5
pkgrel=0
pkgdesc="Real-time, software synthesiser based on SoundFont 2"
url="http://www.fluidsynth.org/"
arch="all"
license="LGPL-2.1+"
depends=""
-makedepends="alsa-lib-dev dbus-dev glib-dev libsndfile-dev"
+makedepends="alsa-lib-dev cmake dbus-dev glib-dev libsndfile-dev pulseaudio-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
source="fluidsynth-$pkgver.tar.gz::https://github.com/FluidSynth/fluidsynth/archive/v$pkgver.tar.gz"
@@ -22,7 +22,7 @@ build() {
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
@@ -34,4 +34,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="d58ddc5f4da9bb5954a82749617548ef32edd25f6ca5c6d5c2b06d23090784ec175d2422553a66776f543c6b253f037a6cf1e717a853344ffb899fa53752eec0 fluidsynth-2.0.4.tar.gz"
+sha512sums="171ee6b1983ab9636086fb414ae464508f7a9a412cd2c1e7800a19a84d3dff21bbd86d1971f9bb5985e977f808b60e0d0cfbde4551b85fcc4aae4928a1abadbc fluidsynth-2.1.5.tar.gz"
diff --git a/user/fluxbox/APKBUILD b/user/fluxbox/APKBUILD
index 73c076d15..bc5882b50 100644
--- a/user/fluxbox/APKBUILD
+++ b/user/fluxbox/APKBUILD
@@ -2,20 +2,21 @@
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=fluxbox
pkgver=1.3.7
-pkgrel=1
+pkgrel=2
pkgdesc="A lightweight and highly-configurable window manager"
url="http://www.fluxbox.org"
arch="all"
+options="!check" # This package has a broken test suite.
license="MIT"
-options="!check" # This package has a broken testsuite
depends="gxmessage"
makedepends="libxinerama-dev libxpm-dev libxrandr imlib2-dev libxrender-dev
libxrandr-dev libxinerama-dev freetype-dev libxft-dev xorgproto"
subpackages="$pkgname-doc"
-source="http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.bz2"
+source="https://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.bz2
+ modern-c.patch
+ "
build() {
- cd "$builddir"
# TODO: Enable NLS when we get 'gencat'
./configure \
--build=$CBUILD \
@@ -27,8 +28,8 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="c40cc765f5d542210e18dca21b98b97a048c6685b605a68e2c64f4e886329f4e6d3a3a7e76b3ca0ce488242f38d0ee2a4d6dfebc9ce97d37c68f84c3948aac8c fluxbox-1.3.7.tar.bz2"
+sha512sums="c40cc765f5d542210e18dca21b98b97a048c6685b605a68e2c64f4e886329f4e6d3a3a7e76b3ca0ce488242f38d0ee2a4d6dfebc9ce97d37c68f84c3948aac8c fluxbox-1.3.7.tar.bz2
+5b06cb617ff7ef9a2b605e4b590d35ed5cab95ded91f56e3a7ad75a1ec1caa0e5543624c4a5f7a5924b60c4568c7b3d7d11811c54ab55c40df7ccd0ef6c45bd1 modern-c.patch"
diff --git a/user/fluxbox/modern-c.patch b/user/fluxbox/modern-c.patch
new file mode 100644
index 000000000..c8890c71f
--- /dev/null
+++ b/user/fluxbox/modern-c.patch
@@ -0,0 +1,25 @@
+From 22866c4d30f5b289c429c5ca88d800200db4fc4f Mon Sep 17 00:00:00 2001
+From: John Sennesael <john@aminking.com>
+Date: Mon, 2 Nov 2015 15:14:32 -0600
+Subject: fixes bug #1138
+
+---
+ util/fluxbox-remote.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/util/fluxbox-remote.cc b/util/fluxbox-remote.cc
+index 59852e6..504015b 100644
+--- a/util/fluxbox-remote.cc
++++ b/util/fluxbox-remote.cc
+@@ -73,7 +73,7 @@ int main(int argc, char **argv) {
+ if (strcmp(cmd, "result") == 0) {
+ XTextProperty text_prop;
+ if (XGetTextProperty(disp, root, &text_prop, atom_result) != 0
+- && text_prop.value > 0
++ && text_prop.value != 0
+ && text_prop.nitems > 0) {
+
+ printf("%s", text_prop.value);
+--
+cgit v0.11.2
+
diff --git a/user/font-adobe-100dpi/APKBUILD b/user/font-adobe-100dpi/APKBUILD
index 4547cee87..f3fc23252 100644
--- a/user/font-adobe-100dpi/APKBUILD
+++ b/user/font-adobe-100dpi/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-adobe-100dpi
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="100dpi X11 fonts from Adobe"
url="https://www.X.Org/"
arch="noarch"
license="MIT"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf font-util-dev util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-adobe-100dpi-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-adobe-100dpi-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="27ed98dcdbb9c174c7090cdd8fe230f7471d10b5dfc63e092640b5d0fc6ab351bc8ffa9a92bec1755f2780b3d9c1de3ad298c64b70a68b5e6879a8592ef32987 font-adobe-100dpi-1.0.3.tar.bz2"
+sha512sums="fedb86672c3b9cb624ee5d74d1d710f21d92c2d48a1fcf0a45b54b3f992f6f5599fc271d38a7e25ef123b64d405fa60a3d46883fe7a9d71ebad83c9b418f8383 font-adobe-100dpi-1.0.4.tar.xz"
diff --git a/user/font-adobe-75dpi/APKBUILD b/user/font-adobe-75dpi/APKBUILD
index 8f3f7ac0c..3ac3fb6b1 100644
--- a/user/font-adobe-75dpi/APKBUILD
+++ b/user/font-adobe-75dpi/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-adobe-75dpi
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="75dpi X11 fonts from Adobe"
url="https://www.X.Org/"
arch="noarch"
license="MIT"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf font-util-dev util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-adobe-75dpi-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-adobe-75dpi-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="c0d851df5732e81027e265370751a606c6e4f5eea546d802608988dde02de35fa28238f709f48567191090bf18814f671b1a7f9f0b528d54949b0aa9403f266d font-adobe-75dpi-1.0.3.tar.bz2"
+sha512sums="4e63c268525f21c03525870129c8d42cbd17a03d86d9c88bebdccb5094a1093acef1d2b6d4dde221559cb19f047b86baf58fa8ad65d28d4cb6c3064ec164836a font-adobe-75dpi-1.0.4.tar.xz"
diff --git a/user/font-adobe-utopia-100dpi/APKBUILD b/user/font-adobe-utopia-100dpi/APKBUILD
index ffd9eb443..60ff800dc 100644
--- a/user/font-adobe-utopia-100dpi/APKBUILD
+++ b/user/font-adobe-utopia-100dpi/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-adobe-utopia-100dpi
-pkgver=1.0.4
+pkgver=1.0.5
pkgrel=0
pkgdesc="100dpi Utopia X11 font from Adobe"
url="https://www.X.Org/"
@@ -13,19 +13,17 @@ arch="noarch"
# [1]: https://fedoraproject.org/wiki/Legal_considerations_for_fonts
# [2]: https://src.fedoraproject.org/cgit/rpms/xorg-x11-fonts.git/tree/xorg-x11-fonts.spec
license="Utopia"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf font-util-dev util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-adobe-utopia-100dpi-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-adobe-utopia-100dpi-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -37,14 +35,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="fecb9a9bde99a82787d12779ea579c8696dcce168acd74b478a879ae24d421d5978d5f69da651e8ff3b25dca355960aaa19f69f2bf61e540464887e546a7b94b font-adobe-utopia-100dpi-1.0.4.tar.bz2"
+sha512sums="9685d66de107ab3142aa9322bbded20f4f538d7bcd8c97bfb4db8eb1fc440724b0c7574ee8b4b5e96c81044c8ee4da175dd638f03dc3e1e650200fdf7b8a169b font-adobe-utopia-100dpi-1.0.5.tar.xz"
diff --git a/user/font-adobe-utopia-75dpi/APKBUILD b/user/font-adobe-utopia-75dpi/APKBUILD
index da04ba89e..86e02adb1 100644
--- a/user/font-adobe-utopia-75dpi/APKBUILD
+++ b/user/font-adobe-utopia-75dpi/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-adobe-utopia-75dpi
-pkgver=1.0.4
+pkgver=1.0.5
pkgrel=0
pkgdesc="75dpi Utopia X11 font from Adobe"
url="https://www.X.Org/"
@@ -13,19 +13,17 @@ arch="noarch"
# [1]: https://fedoraproject.org/wiki/Legal_considerations_for_fonts
# [2]: https://src.fedoraproject.org/cgit/rpms/xorg-x11-fonts.git/tree/xorg-x11-fonts.spec
license="Utopia"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf font-util-dev util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-adobe-utopia-75dpi-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-adobe-utopia-75dpi-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -37,14 +35,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="c569af760a62b00738be65546364587638e8c46e4a0765013747e9595d51bc0633908c72359e42e7ebf6240fdc6294b51512c0a096a5fe64b2bd300ccbff7b92 font-adobe-utopia-75dpi-1.0.4.tar.bz2"
+sha512sums="9608698288fca47bf61cff911b8f081593807eed9f138ea22f05a7b6c26c481ec5144d79665cf509ba889df35ef5406e0de71710362bcf6de6b602c12158e22a font-adobe-utopia-75dpi-1.0.5.tar.xz"
diff --git a/user/font-adobe-utopia-type1/APKBUILD b/user/font-adobe-utopia-type1/APKBUILD
index 12443931b..a48e51517 100644
--- a/user/font-adobe-utopia-type1/APKBUILD
+++ b/user/font-adobe-utopia-type1/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-adobe-utopia-type1
-pkgver=1.0.4
+pkgver=1.0.5
pkgrel=0
pkgdesc="Type 1 Utopia X11 font from Adobe"
url="https://www.X.Org/"
@@ -13,19 +13,17 @@ arch="noarch"
# [1]: https://fedoraproject.org/wiki/Legal_considerations_for_fonts
# [2]: https://src.fedoraproject.org/cgit/rpms/xorg-x11-fonts.git/tree/xorg-x11-fonts.spec
license="Utopia"
-depends="encodings font-alias fontconfig mkfontdir mkfontscale"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-adobe-utopia-type1-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-adobe-utopia-type1-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -37,15 +35,13 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
find "$pkgdir" -name fonts.scale -exec rm {} +
}
-sha512sums="53ff2ce7b17824a0eed1be6c3e3386e51983389f5623e732ac898c4e08769c8720f6d6b7c75b6455e050ec5dc390376747ca4cdb9f831a218f9dd5ee5edcd0d6 font-adobe-utopia-type1-1.0.4.tar.bz2"
+sha512sums="e30f4c7702f47a3a42206975fbcfec058317681956d246411e50e372b669bdc875c5d7fe28bad7d298bc61b71a997c7836fb6ac16effd223a96723a6e9ece649 font-adobe-utopia-type1-1.0.5.tar.xz"
diff --git a/user/font-alias/APKBUILD b/user/font-alias/APKBUILD
index dee7f9487..d09841afe 100644
--- a/user/font-alias/APKBUILD
+++ b/user/font-alias/APKBUILD
@@ -1,23 +1,17 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-alias
-pkgver=1.0.3
-pkgrel=3
+pkgver=1.0.5
+pkgrel=0
pkgdesc="Font alias definitions from X.Org"
url="https://www.X.Org/"
arch="noarch"
license="MIT"
depends=""
makedepends="util-macros"
-source="https://www.X.Org/releases/individual/font/$pkgname-$pkgver.tar.bz2"
-
-prepare() {
- cd "$builddir"
- default_prepare
- update_config_sub
-}
+subpackages=""
+source="https://www.X.Org/releases/individual/font/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +20,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="05abfef4615722d8cf3f21ab1118494522553a75427140d9753b3d312f404735c20766ceacc1b53f9e783ea25ec8f2f6bdb8696525a4962afe29f524ed8b6552 font-alias-1.0.3.tar.bz2"
+sha512sums="86bffa6b9ff789eeba715c079965157806ed633d44cd3dbf5e2a4bba2b390a0f48db65edc8e3264acbc2368d78a8d7e05bc2e2e3a86ddbf6b08bfe7f5e862bcc font-alias-1.0.5.tar.xz"
diff --git a/user/font-arabic-misc/APKBUILD b/user/font-arabic-misc/APKBUILD
index e36be36a0..858091f83 100644
--- a/user/font-arabic-misc/APKBUILD
+++ b/user/font-arabic-misc/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-arabic-misc
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="Arabic X11 fonts"
url="https://www.X.Org/"
arch="noarch"
license="MIT"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-arabic-misc-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-arabic-misc-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="46a416bf888afdb54f5dda6c9a7207dc069d14089ba14b262c60cb9ad427784c46e2a61b32a79f1d745e73ea657bbc36b48aa5d4bbd79f73a2d997b027ddfbc0 font-arabic-misc-1.0.3.tar.bz2"
+sha512sums="afd5fae32440b133c5ee0195af44ad1462d35c2f451dcf4b1c93e0ce245d009b120d39eb5f780b003ae2f572408965e6d149437e9ebbf5738cb69193aaa4d488 font-arabic-misc-1.0.4.tar.xz"
diff --git a/user/font-bh-100dpi/APKBUILD b/user/font-bh-100dpi/APKBUILD
index 507bd19cc..344e7567f 100644
--- a/user/font-bh-100dpi/APKBUILD
+++ b/user/font-bh-100dpi/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-bh-100dpi
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="100dpi X11 fonts from Bigelow & Holmes"
url="https://www.X.Org/"
arch="noarch"
license="Lucida"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf font-util-dev util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-bh-100dpi-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-bh-100dpi-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="60532fb3bd25bad08b1db65f96fdd1cdb2ae5fd580729d7851f5b619f1ed6bdef4fec30111ec408cec9ae5e94f92ad9cf214214c01ac684f3a4bd8d43bafd8a2 font-bh-100dpi-1.0.3.tar.bz2"
+sha512sums="5fe2a24df0d0e9109f1c1cb2556f4cdbf07cc16441e565333f01a00815dd4555b6ef0dd689ef3196ddb76db7480bca8f0b501d4244262d6c64d4751d75503b44 font-bh-100dpi-1.0.4.tar.xz"
diff --git a/user/font-bh-75dpi/APKBUILD b/user/font-bh-75dpi/APKBUILD
index 6a1287b10..c8edcddd6 100644
--- a/user/font-bh-75dpi/APKBUILD
+++ b/user/font-bh-75dpi/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-bh-75dpi
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="75dpi X11 fonts from Bigelow & Holmes"
url="https://www.X.Org/"
arch="noarch"
license="Lucida"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf font-util-dev util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-bh-75dpi-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-bh-75dpi-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="fb19c7fe91b6cc0670b01d5b8165075866ad08796293650d6037d79211ca668decdcc1b3684774907c06073145919655690d78ccdcf2511db38b5879328a9f50 font-bh-75dpi-1.0.3.tar.bz2"
+sha512sums="8ccc5accdd43b4e1b8007c94e7916c6ee947ff0d57e3b0ce92154b718ef0ac2579659719738a50ef3ab0998a8bcea5b055e6a2e4d72b9fa5755b786143303955 font-bh-75dpi-1.0.4.tar.xz"
diff --git a/user/font-bh-lucidatypewriter-100dpi/APKBUILD b/user/font-bh-lucidatypewriter-100dpi/APKBUILD
index afa5b8a83..275072468 100644
--- a/user/font-bh-lucidatypewriter-100dpi/APKBUILD
+++ b/user/font-bh-lucidatypewriter-100dpi/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-bh-lucidatypewriter-100dpi
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="100dpi Lucida Typewriter X11 font from Bigelow & Holmes"
url="https://www.X.Org/"
arch="noarch"
license="Lucida"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf font-util-dev util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-bh-lucidatypewriter-100dpi-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-bh-lucidatypewriter-100dpi-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="1862003c20aa7709ea07487a4326c619e2beb33b7069d644f438d64182b41a06039c69e2867921b4d12939612a4b8e1e1727fd15851aeab9a0361060183e3b0f font-bh-lucidatypewriter-100dpi-1.0.3.tar.bz2"
+sha512sums="31a4d061430089c5523815dde7d7cf73c9cba768ab79004eb65af8a1684fdd57d0829d9f4249c8e542e733266cc5f83e38eff403423a77a06af15008ce95d2ab font-bh-lucidatypewriter-100dpi-1.0.4.tar.xz"
diff --git a/user/font-bh-lucidatypewriter-75dpi/APKBUILD b/user/font-bh-lucidatypewriter-75dpi/APKBUILD
index e1e9508dc..9a2d26282 100644
--- a/user/font-bh-lucidatypewriter-75dpi/APKBUILD
+++ b/user/font-bh-lucidatypewriter-75dpi/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-bh-lucidatypewriter-75dpi
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="75dpi Lucida Typewriter X11 font from Bigelow & Holmes"
url="https://www.X.Org/"
arch="noarch"
license="Lucida"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf font-util-dev util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-bh-lucidatypewriter-75dpi-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-bh-lucidatypewriter-75dpi-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="2bba19c10df8e95f95d59d5fc7c15380c91a5140b0fa490497dbdf78a5574adae06a5566941c8c61e4a9850712fc9ca16974173aeee771f41976f472f0a2de13 font-bh-lucidatypewriter-75dpi-1.0.3.tar.bz2"
+sha512sums="bfe2776b84533dd23648df42b2c74fb7f49e665e4f2128c6af529425a1569051c9ddadb696dfa7a6bd959a4929f8a75f7e4fbd7da7767d272a0a8a5424a879cf font-bh-lucidatypewriter-75dpi-1.0.4.tar.xz"
diff --git a/user/font-bitstream-100dpi/APKBUILD b/user/font-bitstream-100dpi/APKBUILD
index 27c9f4848..8ddf0edc8 100644
--- a/user/font-bitstream-100dpi/APKBUILD
+++ b/user/font-bitstream-100dpi/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-bitstream-100dpi
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="100dpi X11 fonts from Bitstream"
url="https://www.X.Org/"
arch="noarch"
license="MIT"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf font-util-dev util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-bitstream-100dpi-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-bitstream-100dpi-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="10fd920d46d2cb1b314e8c2f05c202e9ffa74a4e5315f34790eba8bd8fcda865a6932eb712a7538624e69367647bcd6891e7015099e65463aeef772d0ba58bfd font-bitstream-100dpi-1.0.3.tar.bz2"
+sha512sums="1389681eee8b9e2bbfe0293b0aa1add7c6fa86149ff3cb779195ddcc548b1a519336c2d43b6988c899dc09d44ca30de9ffb5daca24fc3906694ab0fd391eb437 font-bitstream-100dpi-1.0.4.tar.xz"
diff --git a/user/font-bitstream-75dpi/APKBUILD b/user/font-bitstream-75dpi/APKBUILD
index a456b9bd6..0c9bf3e4b 100644
--- a/user/font-bitstream-75dpi/APKBUILD
+++ b/user/font-bitstream-75dpi/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-bitstream-75dpi
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="75dpi X11 fonts from Bitstream"
url="https://www.X.Org/"
arch="noarch"
license="MIT"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf font-util-dev util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-bitstream-75dpi-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-bitstream-75dpi-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="9311a5b0cbe1613aca87fdf7fd9ab263eb1129e3c3eacbce54547f2185e151fb1237128b1b6d39f716f28694a486909564ecc9a0aef061438622d11b5661d650 font-bitstream-75dpi-1.0.3.tar.bz2"
+sha512sums="d678c58493696b3a744878991838b329243e5ba7985b1a435b62e9b1a05b5609d0b66d5943d840479ce2c5fc1da1b0633c33f28e3613712d26802fc41ee22c22 font-bitstream-75dpi-1.0.4.tar.xz"
diff --git a/user/font-bitstream-speedo/APKBUILD b/user/font-bitstream-speedo/APKBUILD
index dcee83640..a9e76bed9 100644
--- a/user/font-bitstream-speedo/APKBUILD
+++ b/user/font-bitstream-speedo/APKBUILD
@@ -7,19 +7,17 @@ pkgdesc="Speedo X11 fonts from Bitstream"
url="https://www.X.Org/"
arch="noarch"
license="MIT"
-depends="encodings font-alias fontconfig mkfontdir mkfontscale"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="util-macros"
subpackages=""
source="https://www.x.org/releases/individual/font/font-bitstream-speedo-$pkgver.tar.bz2"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,12 +29,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
find "$pkgdir" -name fonts.scale -exec rm {} +
diff --git a/user/font-bitstream-type1/APKBUILD b/user/font-bitstream-type1/APKBUILD
index 328b0f874..2cb1696f1 100644
--- a/user/font-bitstream-type1/APKBUILD
+++ b/user/font-bitstream-type1/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-bitstream-type1
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="Type 1 X11 fonts from Bitstream"
url="https://www.X.Org/"
arch="noarch"
license="MIT"
-depends="fontconfig mkfontdir mkfontscale"
+depends="fontconfig mkfontscale"
makedepends="util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-bitstream-type1-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-bitstream-type1-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,15 +29,13 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
find "$pkgdir" -name fonts.scale -exec rm {} +
}
-sha512sums="71883f7fc0a68b4fb8ef30b8b8bdfd73ae1194b6d6495abde6c819eef7a91d6365ef1b4cae026d6c3fa7fddecc643b46b7ba1232cec404fcada49a92aaf1af61 font-bitstream-type1-1.0.3.tar.bz2"
+sha512sums="f09d60abb88c9be6227c57f5519f08e5e3c59c916183d32a512d3c2ace0047eaad2b377c3725c8987e8b4c55468eb7821322ff5447f000d4c2be6cb909f6219b font-bitstream-type1-1.0.4.tar.xz"
diff --git a/user/font-cronyx-cyrillic/APKBUILD b/user/font-cronyx-cyrillic/APKBUILD
index ee537b55b..8b6582f67 100644
--- a/user/font-cronyx-cyrillic/APKBUILD
+++ b/user/font-cronyx-cyrillic/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-cronyx-cyrillic
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="Cyrillic X11 fonts from Cronyx"
url="https://www.X.Org/"
arch="noarch"
license="MIT"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-cronyx-cyrillic-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-cronyx-cyrillic-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="b926c425644f94548ad831c38573009ae97d207a05c9d8a917018c2518911960280eb3861ae11d99bc8d001fb0dca1967712fb70ba4f413bc9d6ac8ef904b456 font-cronyx-cyrillic-1.0.3.tar.bz2"
+sha512sums="39c0bfc08ac746fd98a668d7545da503e8413d5d66cdb1884489ed7221fa4f09dad8dc997ca39595113e2f12fd65de6d2bfd8eaf1480aa93d5eb961d2e2f7cff font-cronyx-cyrillic-1.0.4.tar.xz"
diff --git a/user/font-cursor-misc/APKBUILD b/user/font-cursor-misc/APKBUILD
index fe6d4610b..56ffa3838 100644
--- a/user/font-cursor-misc/APKBUILD
+++ b/user/font-cursor-misc/APKBUILD
@@ -1,24 +1,22 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-cursor-misc
-pkgver=1.0.3
-pkgrel=3
+pkgver=1.0.4
+pkgrel=0
pkgdesc="X11 cursor fonts"
url="https://www.X.Org/"
arch="noarch"
license="Public-Domain"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf font-util-dev util-macros"
subpackages=""
-source="https://www.X.Org/releases/individual/font/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/font/$pkgname-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,14 +25,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="7ecb7f1c3c11da8b81fc0ff121fa6c1026b11f6c7878ffd0e4959df036511bc579d6b0552422ce13e26a8d188e3406631d2de55cab6b29bc7fce0416a8cffc83 font-cursor-misc-1.0.3.tar.bz2"
+sha512sums="22bd86a81cdfb1e17f885dc3961071c08920171a6f0736ae52d95c8e576b1debc7570aa3b7e1007f474b50435fba411f0eb1847894e8b52f6e6268d91cf9f2db font-cursor-misc-1.0.4.tar.xz"
diff --git a/user/font-daewoo-misc/APKBUILD b/user/font-daewoo-misc/APKBUILD
index a71dba0aa..44f2c7c79 100644
--- a/user/font-daewoo-misc/APKBUILD
+++ b/user/font-daewoo-misc/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-daewoo-misc
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="X11 fonts from Daewoo"
url="https://www.X.Org/"
arch="noarch"
license="X11"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-daewoo-misc-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-daewoo-misc-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="7e97bc580f66a1316e366617d34e1dbefd576b47b9373ef34833aaaf2fdefc50befc2add5f038915db0b45fbdd56b77304a8a980bb72726479d429085c406f06 font-daewoo-misc-1.0.3.tar.bz2"
+sha512sums="be9f550e8cb84f9e24afb6b739c357cb159da8a06f8bc2c26c9fbb62320427dd7522e04d10492cec91ab559b2e5dd5067012ff3225695a8337f1cd7db9801f57 font-daewoo-misc-1.0.4.tar.xz"
diff --git a/user/font-dec-misc/APKBUILD b/user/font-dec-misc/APKBUILD
index 36045bbca..003b51a98 100644
--- a/user/font-dec-misc/APKBUILD
+++ b/user/font-dec-misc/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-dec-misc
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="X11 fonts from Digital"
url="https://www.X.Org/"
arch="noarch"
license="X11"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-dec-misc-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-dec-misc-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="af755d51c4c59cdbe5d3dccf37990bc787373958feb984bb037c8d8aba8a0eb410965a3600886b5123d89e85e1ea0498b84dfa384fccbbcbcaf3549b83c839c6 font-dec-misc-1.0.3.tar.bz2"
+sha512sums="bf6c0e4924835346f1f7913a04fa3903a7c55d292317526dd8eaa799dfb3b52eb2157c34692d659b41a18123af8389785dcb4aa0c31fc387cb368642801c3335 font-dec-misc-1.0.4.tar.xz"
diff --git a/user/font-isas-misc/APKBUILD b/user/font-isas-misc/APKBUILD
index 6dd2a8b08..7bf811639 100644
--- a/user/font-isas-misc/APKBUILD
+++ b/user/font-isas-misc/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-isas-misc
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="Chinese X11 fonts from Academia Sinica"
url="https://www.X.Org/"
arch="noarch"
license="MIT"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-isas-misc-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-isas-misc-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="be6fb1d2c53550a462d1ab010fa7ac913990e83a22d4580c93b8f1f087aa6caa0e46bc87debca2b13b10e5611bd2fe7f6b4240367fb24f59b37f68ffb0e2586b font-isas-misc-1.0.3.tar.bz2"
+sha512sums="7c8cc9083600949fff4a0373f9f22df80f6a2c97d8d56bc2c4d03b102d16ad071b984b1ecf547d2d17ede9335e5c3a418512631a18938b7728c66b4339dcedd5 font-isas-misc-1.0.4.tar.xz"
diff --git a/user/font-jis-misc/APKBUILD b/user/font-jis-misc/APKBUILD
index 67cad5057..bac5e655a 100644
--- a/user/font-jis-misc/APKBUILD
+++ b/user/font-jis-misc/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-jis-misc
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="Japanese Industrial Standard X11 fonts"
url="https://www.X.Org/"
arch="noarch"
license="Public-Domain"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-jis-misc-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-jis-misc-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="3ce4c96d54440045e84f54f7d790e350c05b0c56a72491941f2cd9ed7e2d1735ff4b41667501cf08d5d81ee19c9de6d43f88a8b59a3c5c55de9fb1696cae208c font-jis-misc-1.0.3.tar.bz2"
+sha512sums="c54034205e7bd7a01b311c25c890f9fd1abc25f842315812d5c83d4e4091e5e6c2125a43d4d532b88c79d51cb812b86cfa8e7e4c1a87175746f1bd4e38129440 font-jis-misc-1.0.4.tar.xz"
diff --git a/user/font-micro-misc/APKBUILD b/user/font-micro-misc/APKBUILD
index 7c72642fe..8bf9bd49b 100644
--- a/user/font-micro-misc/APKBUILD
+++ b/user/font-micro-misc/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-micro-misc
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="Smol X11 font"
url="https://www.X.Org/"
arch="noarch"
license="Public-Domain"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-micro-misc-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-micro-misc-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="7a546432225c22ae0aacf9ce88b617a7d1d6678ee1f5eb4b3a93e33764fb752f27bca3feda1312182517bbf7babd5f3700bb9b8de0ef6c35b1ae6e2ce7ab0b69 font-micro-misc-1.0.3.tar.bz2"
+sha512sums="e9a402a5042eef0b618bc30b319256cae9f71f546c167c8b638a780f93cbdc2d61c472203efaee7077acedfac3b3981feefbc1017cfee8512077e61deff42ed3 font-micro-misc-1.0.4.tar.xz"
diff --git a/user/font-misc-cyrillic/APKBUILD b/user/font-misc-cyrillic/APKBUILD
index e66c9ccd8..fb93e953b 100644
--- a/user/font-misc-cyrillic/APKBUILD
+++ b/user/font-misc-cyrillic/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-misc-cyrillic
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="Cyrillic X11 fonts"
url="https://www.X.Org/"
arch="noarch"
license="MIT AND Public-Domain"
-depends="encodings font-alias fontconfig mkfontdir"
-makedepends="bdftopcf mkfontdir util-macros"
+depends="encodings font-alias fontconfig mkfontscale"
+makedepends="bdftopcf util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-misc-cyrillic-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-misc-cyrillic-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="75e49cdb633f7ce5b9612d5adb0a85471c8fde5d55e8ccd9302f79f01e99e78b02449642c2cf785289f58d833bfa62042fce4253093fb17c87471559d1f9bdbf font-misc-cyrillic-1.0.3.tar.bz2"
+sha512sums="fb2102805fedbd04b1533b85abcde79f432b97b72822bcfcdc09f525488d0d0c63815c8c25b79bab864bbe11fa1b72e2c34f5ba7b96eee1b6c84b841bb333353 font-misc-cyrillic-1.0.4.tar.xz"
diff --git a/user/font-misc-ethiopic/APKBUILD b/user/font-misc-ethiopic/APKBUILD
index e04621e66..534dc3937 100644
--- a/user/font-misc-ethiopic/APKBUILD
+++ b/user/font-misc-ethiopic/APKBUILD
@@ -1,25 +1,18 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-misc-ethiopic
-pkgver=1.0.3
+pkgver=1.0.5
pkgrel=0
pkgdesc="Ethiopic X11 fonts"
url="https://www.X.Org/"
arch="noarch"
license="MIT"
-depends="encodings font-alias fontconfig mkfontdir mkfontscale"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-misc-ethiopic-$pkgver.tar.bz2"
-
-prepare() {
- cd "$builddir"
- default_prepare
- update_config_sub
-}
+source="https://www.x.org/releases/individual/font/font-misc-ethiopic-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,15 +24,13 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
find "$pkgdir" -name fonts.scale -exec rm {} +
}
-sha512sums="b3e3f7462f37216796730a894761c7d60d5ede0f51351997e6c3c92e3136c788a2710690f482d05ed1396a4b6be452e1f871febc7e5b7a1a67e43bcc1ec7c77d font-misc-ethiopic-1.0.3.tar.bz2"
+sha512sums="7732a828c005e3762b6383729134c5656fd575ac59288504d047fbe26e9965a80519a37b0cc4c6b89379a85a62160c5ea76017f790447a230c015aa7a9143ba0 font-misc-ethiopic-1.0.5.tar.xz"
diff --git a/user/font-misc-misc/APKBUILD b/user/font-misc-misc/APKBUILD
index 1a7cf7b53..e731c9de6 100644
--- a/user/font-misc-misc/APKBUILD
+++ b/user/font-misc-misc/APKBUILD
@@ -1,24 +1,22 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-misc-misc
-pkgver=1.1.2
-pkgrel=3
+pkgver=1.1.3
+pkgrel=0
pkgdesc="Miscellaneous X11 fonts included with X.Org"
url="https://www.X.Org/"
arch="noarch"
license="Public-Domain"
-depends="encodings font-alias fontconfig mkfontdir mkfontscale"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf font-util-dev util-macros"
subpackages=""
-source="https://www.X.Org/releases/individual/font/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/font/$pkgname-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
}
build() {
- cd "$_builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,14 +25,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="d0bf74142f9621746846ea7a6fe9ae298a303a09c65e05c7decb4f37b2f513a88d727bf3dc5a3566c30de83b83493f164be0118b41d704464f75700b55018c74 font-misc-misc-1.1.2.tar.bz2"
+sha512sums="fac4bfda0e4189d1a9999abc47bdd404f2beeec5301da190d92afc2176cd344789b7223c1b2f4748bd0efe1b9a81fa7f13f7037015d5d800480fa2236f369b48 font-misc-misc-1.1.3.tar.xz"
diff --git a/user/font-mutt-misc/APKBUILD b/user/font-mutt-misc/APKBUILD
index 62a4437ff..2520a4138 100644
--- a/user/font-mutt-misc/APKBUILD
+++ b/user/font-mutt-misc/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-mutt-misc
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="MUTT X11 font family"
url="https://www.X.Org/"
arch="noarch"
license="MIT"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-mutt-misc-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-mutt-misc-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="7b152f6c1464d806b1f76664d9b619858c3cb3ea63027b6be1f69897e939e3a0b5312ddf230e0a42a8f3e3701e50f41917cac6ce566c05bc74dfa49bdf2ed4db font-mutt-misc-1.0.3.tar.bz2"
+sha512sums="9cbc82e6a519572576cb60f4d6b9795468666d53ac7df17d6736ab04190cb5f58c8b57be61ab509fc9372e1114c6aaa5e0d098ec1fa63dc5d8638916614f7046 font-mutt-misc-1.0.4.tar.xz"
diff --git a/user/font-schumacher-misc/APKBUILD b/user/font-schumacher-misc/APKBUILD
index 4b3008fe5..cf288951a 100644
--- a/user/font-schumacher-misc/APKBUILD
+++ b/user/font-schumacher-misc/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-schumacher-misc
-pkgver=1.1.2
+pkgver=1.1.3
pkgrel=0
pkgdesc="X11 fonts from Dale Schumacher"
url="https://www.X.Org/"
arch="noarch"
license="MIT"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf font-util-dev util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-schumacher-misc-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-schumacher-misc-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="f37a2bfce95458b11376c89767b5adaea03dcecd7ed5b99a19a3d263f48e70b15bf679826a794c55da26b5f1635ea5fa5772ffe44c9f77a1daab0744ed92300a font-schumacher-misc-1.1.2.tar.bz2"
+sha512sums="83b25495535176a5e348269358ac34af8223023a55e2c5c599725ee90ec9ff3ea9ff19cca46b93eeae7ef985da325f9065c83d829a4a8c72d0c3c197242a1b64 font-schumacher-misc-1.1.3.tar.xz"
diff --git a/user/font-screen-cyrillic/APKBUILD b/user/font-screen-cyrillic/APKBUILD
index 8dc59ebe6..b52c8978f 100644
--- a/user/font-screen-cyrillic/APKBUILD
+++ b/user/font-screen-cyrillic/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-screen-cyrillic
-pkgver=1.0.4
+pkgver=1.0.5
pkgrel=0
pkgdesc="Cyrillic X11 fonts"
url="https://www.X.Org/"
arch="noarch"
license="MIT"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-screen-cyrillic-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-screen-cyrillic-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="58f12a4cbd18e323daad75b32a01ab3980dca0046f8dd94ff4452606ab9316b8a208dda3bc8e9346c02993bd2b8bb2b3dfe3413ccf9fc6a907fc1ea5d236fa51 font-screen-cyrillic-1.0.4.tar.bz2"
+sha512sums="9f136fc6f6a3621c4b38302af5396789b1e6558b9b4b1b991624945eb9aac8497a6cd415460abc7dbcbaad1ef8ebd23cacfb3448c6e34cc9ba0726e7973c1a99 font-screen-cyrillic-1.0.5.tar.xz"
diff --git a/user/font-sony-misc/APKBUILD b/user/font-sony-misc/APKBUILD
index 7ce54a805..ff55dc5b4 100644
--- a/user/font-sony-misc/APKBUILD
+++ b/user/font-sony-misc/APKBUILD
@@ -1,24 +1,22 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-sony-misc
-pkgver=1.0.3
-pkgrel=3
+pkgver=1.0.4
+pkgrel=0
pkgdesc="X11 fonts from Sony"
url="https://www.X.Org/"
arch="noarch"
license="MIT"
-depends="encodings font-alias fontconfig mkfontdir mkfontscale"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf font-util-dev util-macros"
subpackages=""
-source="https://www.X.Org/releases/individual/font/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/font/$pkgname-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,14 +25,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="c397b4e5081b2946799d701b8c48fca9fd2d55b8fa1dd96d2b29c5cd9996bb7356ae12671bf3bd964e6313bdc154020ed6377534e59ce53067e955e4b37aee1d font-sony-misc-1.0.3.tar.bz2"
+sha512sums="f361fca66db2ec80b1467fb6bff57bd2cfc6722473bd7ad119026a97552eef07ff77552c01eb8f98f3299d7fd40c8c2cb3e0d0b01adca2f81c2c2f75581dc113 font-sony-misc-1.0.4.tar.xz"
diff --git a/user/font-sun-misc/APKBUILD b/user/font-sun-misc/APKBUILD
index e004d9738..578c8c3b2 100644
--- a/user/font-sun-misc/APKBUILD
+++ b/user/font-sun-misc/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-sun-misc
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="X11 fonts from Sun Microsystems"
url="https://www.X.Org/"
arch="noarch"
license="X11"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-sun-misc-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-sun-misc-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="52c4a38e49a94831999652d9830da841949c319083ea40492e83690e1e5c2d31ea1979046a420af0e51bc105b8697bb06b4a438485e82b130d7469ad4519e275 font-sun-misc-1.0.3.tar.bz2"
+sha512sums="9eeb330c1190557479636119af8aeb49917f1faeaa42d3a93e35d318348ee4247405544107ce9f5a244dbe2c0001c8d34b604b961bd9d92431f84b992fe9739e font-sun-misc-1.0.4.tar.xz"
diff --git a/user/font-util/APKBUILD b/user/font-util/APKBUILD
index a02cd6232..76a35ee3d 100644
--- a/user/font-util/APKBUILD
+++ b/user/font-util/APKBUILD
@@ -1,19 +1,18 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-util
-pkgver=1.3.1
-pkgrel=3
+pkgver=1.4.1
+pkgrel=0
pkgdesc="X.org font utilities"
url="https://www.X.Org/"
arch="all"
-license="custom"
+license="MIT AND X11 AND BSD-2-Clause"
depends="perl"
depends_dev="font-util"
makedepends="$depends_dev util-macros"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/font/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/font/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -23,13 +22,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
}
-sha512sums="9fd6dd4c0a01ede5f0b09ec0f9d316267ca086e2ee9526a43a4e4d6ce3cd67c977293bd3cf440328ca417292fcae1579888b24b7259eaf012230890210d74889 font-util-1.3.1.tar.bz2"
+sha512sums="cec7fc38ba64ca9c81c59a8395da94d71c75e14f19faf6457da0a1a8c3c1cf51bcaab227834f6f5a6d274ba2557555e542dbe2bd88e527c45ea196318bbc38d0 font-util-1.4.1.tar.xz"
diff --git a/user/font-winitzki-cyrillic/APKBUILD b/user/font-winitzki-cyrillic/APKBUILD
index 03e93b01f..29d904d94 100644
--- a/user/font-winitzki-cyrillic/APKBUILD
+++ b/user/font-winitzki-cyrillic/APKBUILD
@@ -1,25 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-winitzki-cyrillic
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="Cyrillic X11 fonts from Serge Winitzki"
url="https://www.X.Org/"
arch="noarch"
license="Public-Domain"
-depends="encodings font-alias fontconfig mkfontdir"
+depends="encodings font-alias fontconfig mkfontscale"
makedepends="bdftopcf util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-winitzki-cyrillic-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-winitzki-cyrillic-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
}
-sha512sums="f98fa99c1b0e60160b362310a7fe5fd5798aaa686751a6784a697c546ed754e885537eeed39a1f973dbceabc962cb65b39af1d336649381a49feb6df9f23e2b7 font-winitzki-cyrillic-1.0.3.tar.bz2"
+sha512sums="11e366f96abe65aed9fb6fd087b2bd90af9f60548de0cebfeb348262860957a63a997616e00092d312b8ae9c262a7bb52da69c704a27d34018a45b98a87eb158 font-winitzki-cyrillic-1.0.4.tar.xz"
diff --git a/user/font-xfree86-type1/APKBUILD b/user/font-xfree86-type1/APKBUILD
index f82b76bcf..66521e717 100644
--- a/user/font-xfree86-type1/APKBUILD
+++ b/user/font-xfree86-type1/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=font-xfree86-type1
-pkgver=1.0.4
+pkgver=1.0.5
pkgrel=0
pkgdesc="Type 1 X11 fonts from the XFree86 project"
url="https://www.X.Org/"
@@ -10,16 +10,14 @@ license="X11"
depends="fontconfig mkfontdir mkfontscale"
makedepends="util-macros"
subpackages=""
-source="https://www.x.org/releases/individual/font/font-xfree86-type1-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/font/font-xfree86-type1-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,15 +29,13 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" -name fonts.dir -exec rm {} +
find "$pkgdir" -name fonts.scale -exec rm {} +
}
-sha512sums="2b4afc6cbb7953f8ba4aab7862d16b7b988ea6a4df6de8d41c8340d35a1cd53d6fcc26479ff88189d1de9f42804e4f56d70e9dbd7e75820eab4ac6ae3a96840c font-xfree86-type1-1.0.4.tar.bz2"
+sha512sums="0a92d911269c5c4d815dfb617bfcc57c3bd54e4cd308eba87f9ec49851369d99dea61950dbd6cdc0f85db92c0c24055da88063b083b4b0cafb3315051bb650ed font-xfree86-type1-1.0.5.tar.xz"
diff --git a/user/fontawesome/APKBUILD b/user/fontawesome/APKBUILD
index a98397685..26d9692e1 100644
--- a/user/fontawesome/APKBUILD
+++ b/user/fontawesome/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=fontawesome
-pkgver=5.8.1
+pkgver=5.14.0
pkgrel=0
pkgdesc="Typeface for iconography"
url="https://fontawesome.com"
@@ -15,8 +15,7 @@ source="https://use.fontawesome.com/releases/v$pkgver/fontawesome-free-$pkgver-d
builddir="$srcdir/fontawesome-free-$pkgver-desktop/otfs"
package() {
- cd "$builddir"
install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF/ *.otf
}
-sha512sums="078b67e41d5161651e6571ca7cd92fe78a400c9e92108fe0ebc71b0339a1b758fed5f255d666f29c5f59934a949df209ba9159b0232822c7caee404714311135 fontawesome-free-5.8.1-desktop.zip"
+sha512sums="7f53e514b88d6ae952cee085ea811f83d1cbec8521996abd575508a1a2bea692039d7cbb0afbb9f336ea46453eb1f93241c57aac66be159f59c603e897ccb4d2 fontawesome-free-5.14.0-desktop.zip"
diff --git a/user/fontconfig/APKBUILD b/user/fontconfig/APKBUILD
index c07bf8073..415f0c925 100644
--- a/user/fontconfig/APKBUILD
+++ b/user/fontconfig/APKBUILD
@@ -1,45 +1,41 @@
# Contributor: Mika Havela <mika.havela@gmail.com>
-# Maintainer:
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=fontconfig
-pkgver=2.13.1
+pkgver=2.15.0
pkgrel=0
pkgdesc="Library for configuring and customizing font access"
url="https://www.freedesktop.org/wiki/Software/fontconfig/"
arch="all"
-options="!check" # Fails test with fixed fonts
license="MIT"
depends=""
-makedepends="freetype-dev expat-dev python3-dev gperf util-linux-dev"
+makedepends="expat-dev freetype-dev gperf meson python3-dev util-linux-dev"
triggers="$pkgname.trigger=/usr/share/fonts/*"
-subpackages="$pkgname-doc $pkgname-dev $pkgname-lang"
-source="https://www.freedesktop.org/software/fontconfig/release/${pkgname}-${pkgver}.tar.gz"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://www.freedesktop.org/software/fontconfig/release/${pkgname}-${pkgver}.tar.xz
+ disable-crbug.patch
+ "
build() {
- cd "$builddir"
- # regenerate hash functions
- rm -f src/fcobjshash.h
-
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
+ meson setup \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
- --enable-static \
- --disable-docs
- make
+ --wrap-mode=nofallback \
+ -Dnls=enabled \
+ -Dtests=enabled \
+ -Dtools=enabled \
+ build
+
+ meson compile -C build
}
check() {
- cd "$builddir"
- make check
+ meson test -C build
}
package() {
- cd "$builddir"
- make -j1 DESTDIR="$pkgdir" install
-
- install -m644 -D COPYING "$pkgdir"/usr/share/licenses/"${pkgname}"/COPYING
+ DESTDIR="$pkgdir" meson install -C build
}
-sha512sums="830df32e944ee21ad02a9df04787b9902af36ffc13913524acef6e38799a38c5df7a6e407cc0ff9c24455520549d53b3d85d22642a229ac654dc9269926f130b fontconfig-2.13.1.tar.gz"
+sha512sums="754cd5fffa198fc07a39cf7df683e9adfa7f54ab41fdff8c0eacc078fd35d3e01069ba343f2b045e0b40df88d9f1fc1ee0f7565799f9cb194a59cf95b64c4417 fontconfig-2.15.0.tar.xz
+4295ce39520f0b24348ee0ad742de627a7f46084744022d8920da6a67a15e529fd89d31e7cfa33c2b7e613186bf9c20ad03a090f18dab63a66fbf9f50bbe6bfb disable-crbug.patch"
diff --git a/user/fontconfig/disable-crbug.patch b/user/fontconfig/disable-crbug.patch
new file mode 100644
index 000000000..2c2720ac6
--- /dev/null
+++ b/user/fontconfig/disable-crbug.patch
@@ -0,0 +1,13 @@
+i.e. the comment.
+
+--- fontconfig-2.15.0/test/meson.build.old 2020-12-16 23:27:27.000000000 -0600
++++ fontconfig-2.15.0/test/meson.build 2025-05-09 20:36:03.552602973 -0500
+@@ -14,8 +14,6 @@
+ # FIXME: ['test-migration.c'],
+ ['test-bz106632.c', {'c_args': ['-DFONTFILE="@0@"'.format(join_paths(meson.current_source_dir(), '4x6.pcf'))]}],
+ ['test-issue107.c'], # FIXME: fails on mingw
+- # FIXME: this needs NotoSans-hinted.zip font downloaded and unpacked into test build directory! see run-test.sh
+- ['test-crbug1004254.c', {'dependencies': dependency('threads')}], # for pthread
+ ]
+
+ if get_option('default_library') == 'static'
diff --git a/user/fontforge/APKBUILD b/user/fontforge/APKBUILD
index 949fb702c..87892b38b 100644
--- a/user/fontforge/APKBUILD
+++ b/user/fontforge/APKBUILD
@@ -1,43 +1,50 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=fontforge
-pkgver=2.0.20170731
-pkgrel=1
+pkgver=20220308
+pkgrel=0
pkgdesc="Open source font editor"
url="https://fontforge.github.io/en-US/"
arch="all"
license="GPL-3.0+ AND BSD-3-Clause"
depends="desktop-file-utils shared-mime-info"
-makedepends="freetype-dev giflib-dev glib-dev libjpeg-turbo-dev
- libuninameslist-dev libpng-dev libx11-dev libxml2-dev pango-dev
- python3-dev tiff-dev zlib-dev"
+makedepends="cmake freetype-dev giflib-dev glib-dev libjpeg-turbo-dev
+ libuninameslist-dev libpng-dev libspiro-dev libx11-dev libxi-dev
+ libxml2-dev pango-dev python3-dev tiff-dev zlib-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://github.com/fontforge/fontforge/releases/download/${pkgver/2.0./}/fontforge-dist-${pkgver/2.0./}.tar.xz
- python3.patch
- "
+source="https://github.com/fontforge/fontforge/releases/download/$pkgver/fontforge-$pkgver.tar.xz"
build() {
- cd "$builddir"
- PYTHON=python3 ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake -B build \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DENABLE_GUI=ON \
+ -DENABLE_X11=ON \
+ -DENABLE_PYTHON_SCRIPTING=ON \
+ -DENABLE_PYTHON_EXTENSION=ON \
+ -DENABLE_LIBGIF=ON \
+ -DENABLE_LIBJPEG=ON \
+ -DENABLE_LIBPNG=ON \
+ -DENABLE_LIBTIFF=ON \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make -C build
}
check() {
- cd "$builddir"
- # skip test 53; it doesn't work.
- make check TESTSUITEFLAGS="1-52 54"
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" make -C build install
}
-sha512sums="26f7a40714460716a24dd0229fdb027f3766bcc48db64b8993436ddcb6277898f9f3b67ad4fc0be515b2b38e01370d1c7d9ee3c6ece1be862b7d8c9882411f11 fontforge-dist-20170731.tar.xz
-0ca2f3d10a54e4ccb0737ba8e4e768a75e536f70f8892bfe8c23daa5d542d58a1dd4991a982748dcb2c24ed5ae4cb336278a1c01eb434a0463b8b36133b0bb33 python3.patch"
+sha512sums="9975cffec8aa47bcb8c22405bea544cd263dc939b253e8fba2fbaa3b90a60e05b98eaf58365db8ae854d1fff8e641866a7e2e027003ae03a77104d6650dafb6c fontforge-20220308.tar.xz"
diff --git a/user/fontforge/python3.patch b/user/fontforge/python3.patch
deleted file mode 100644
index 25bae415e..000000000
--- a/user/fontforge/python3.patch
+++ /dev/null
@@ -1,197 +0,0 @@
-From b6089f11bd7534c9aa38b875ef1e830fc3b898b4 Mon Sep 17 00:00:00 2001
-From: Jeremy Tan <jtanx@outlook.com>
-Date: Wed, 13 Sep 2017 17:22:18 +0800
-Subject: [PATCH] python: Use PyMem_Free wherever PyArg_ParseTuple+es is used
-
-https://docs.python.org/2.0/ext/parseTuple.html
----
- fontforge/python.c | 62 +++++++++++++++++++++++++++-------------------
- 1 file changed, 38 insertions(+), 27 deletions(-)
-
-diff --git a/fontforge/python.c b/fontforge/python.c
-index 5d6820c40..c6d7aca2b 100644
---- a/fontforge/python.c
-+++ b/fontforge/python.c
-@@ -607,7 +607,13 @@ return( NULL );
- }
- }
-
-- if ( !SetPrefs((char *) prefname,&val,NULL)) {
-+ bool succeeded = SetPrefs((char *) prefname,&val,NULL);
-+ if (val.type == v_str && val.u.sval) {
-+ PyMem_Free(val.u.sval);
-+ val.u.sval = NULL;
-+ }
-+
-+ if (!succeeded) {
- PyErr_Format(PyExc_NameError, "Unknown preference item in SetPrefs: %s", prefname );
- return( NULL );
- }
-@@ -728,7 +734,7 @@ static PyObject *PyFF_UnicodeFromName(PyObject *UNUSED(self), PyObject *args) {
- return( NULL );
-
- ret = Py_BuildValue("i", UniFromName((char *) name, ui_none,&custom));
-- free(name);
-+ PyMem_Free(name);
- return( ret );
- }
-
-@@ -1361,12 +1367,14 @@ Py_RETURN_NONE; /* Well, that was pointless */
- if ( import==Py_None )
- import=NULL;
- else if ( !PyCallable_Check(import) ) {
-+ PyMem_Free(name);
- PyErr_Format(PyExc_TypeError, "First argument is not callable" );
- return( NULL );
- }
- if ( export==Py_None )
- export=NULL;
- else if ( !PyCallable_Check(export) ) {
-+ PyMem_Free(name);
- PyErr_Format(PyExc_TypeError, "Second argument is not callable" );
- return( NULL );
- }
-@@ -1472,7 +1480,7 @@ static PyObject *PyFF_logError(PyObject *UNUSED(self), PyObject *args) {
- if ( !PyArg_ParseTuple(args,"es","UTF-8", &msg) )
- return( NULL );
- LogError(msg);
-- free(msg);
-+ PyMem_Free(msg);
- Py_RETURN_NONE;
- }
-
-@@ -1486,6 +1494,8 @@ static PyObject *PyFF_postError(PyObject *UNUSED(self), PyObject *args) {
- return( NULL );
- if( showPythonErrors )
- ff_post_error(title,msg); /* Prints to stderr if no ui */
-+ PyMem_Free(title);
-+ PyMem_Free(msg);
- Py_RETURN_NONE;
- }
-
-@@ -1494,6 +1504,8 @@ static PyObject *PyFF_postNotice(PyObject *UNUSED(self), PyObject *args) {
- if ( !PyArg_ParseTuple(args,"eses","UTF-8", &title, "UTF-8", &msg) )
- return( NULL );
- ff_post_notice(title,msg); /* Prints to stderr if no ui */
-+ PyMem_Free(title);
-+ PyMem_Free(msg);
- Py_RETURN_NONE;
- }
-
-@@ -1511,8 +1523,8 @@ return( NULL );
- return( NULL );
-
- ret = ff_open_filename(title,def,filter);
-- free(title);
-- free(def);
-+ PyMem_Free(title);
-+ PyMem_Free(def);
- if ( ret==NULL )
- Py_RETURN_NONE;
- reto = DECODE_UTF8(ret,strlen(ret),NULL);
-@@ -1534,8 +1546,8 @@ return( NULL );
- return( NULL );
-
- ret = ff_save_filename(title,def,filter);
-- free(title);
-- free(def);
-+ PyMem_Free(title);
-+ PyMem_Free(def);
- if ( ret==NULL )
- Py_RETURN_NONE;
- reto = DECODE_UTF8(ret,strlen(ret),NULL);
-@@ -1558,8 +1570,8 @@ return( NULL );
- return( NULL );
- if ( !PySequence_Check(answero) || STRING_CHECK(answero)) {
- PyErr_Format(PyExc_TypeError, "Expected a tuple of strings for the third argument");
-- free(title);
-- free(quest);
-+ PyMem_Free(title);
-+ PyMem_Free(quest);
- return( NULL );
- }
- cnt = PySequence_Size(answero);
-@@ -1568,16 +1580,16 @@ return( NULL );
- cancel = cnt-1;
- if ( cancel<0 || cancel>=cnt || def<0 || def>=cnt ) {
- PyErr_Format(PyExc_ValueError, "Value out of bounds for 4th or 5th argument");
-- free(title);
-- free(quest);
-+ PyMem_Free(title);
-+ PyMem_Free(quest);
- free(answers);
- return( NULL );
- }
- for ( i=0; i<cnt; ++i ) {
- PyObject *utf8_name = PYBYTES_UTF8(PySequence_GetItem(answero,i));
- if ( utf8_name==NULL ) {
-- free(title);
-- free(quest);
-+ PyMem_Free(title);
-+ PyMem_Free(quest);
- FreeStringArray( i, answers );
- return( NULL );
- }
-@@ -1587,8 +1599,8 @@ return( NULL );
- answers[cnt] = NULL;
-
- ret = ff_ask(title,(const char **) answers,def,cancel,quest);
-- free(title);
-- free(quest);
-+ PyMem_Free(title);
-+ PyMem_Free(quest);
- FreeStringArray( cnt, answers );
- return( Py_BuildValue("i",ret));
- }
-@@ -1608,23 +1620,23 @@ return( NULL );
- return( NULL );
- if ( !PySequence_Check(answero) || STRING_CHECK(answero)) {
- PyErr_Format(PyExc_TypeError, "Expected a tuple of strings for the third argument");
-- free(title);
-- free(quest);
-+ PyMem_Free(title);
-+ PyMem_Free(quest);
- return( NULL );
- }
- cnt = PySequence_Size(answero);
- answers = calloc(cnt+1, sizeof(char *));
- if ( def<0 || def>=cnt ) {
- PyErr_Format(PyExc_ValueError, "Value out of bounds for 4th argument");
-- free(title);
-- free(quest);
-+ PyMem_Free(title);
-+ PyMem_Free(quest);
- return( NULL );
- }
- for ( i=0; i<cnt; ++i ) {
- PyObject *utf8_name = PYBYTES_UTF8(PySequence_GetItem(answero,i));
- if ( utf8_name==NULL ) {
-- free(title);
-- free(quest);
-+ PyMem_Free(title);
-+ PyMem_Free(quest);
- FreeStringArray( i, answers );
- return( NULL );
- }
-@@ -1634,8 +1646,8 @@ return( NULL );
- answers[cnt] = NULL;
-
- ret = ff_choose(title,(const char **) answers,cnt,def,quest);
-- free(title);
-- free(quest);
-+ PyMem_Free(title);
-+ PyMem_Free(quest);
- FreeStringArray( cnt, answers );
- return( Py_BuildValue("i",ret));
- }
-@@ -1654,8 +1666,8 @@ return( NULL );
- return( NULL );
-
- ret = ff_ask_string(title,def,quest);
-- free(title);
-- free(quest);
-+ PyMem_Free(title);
-+ PyMem_Free(quest);
- free(def);
- if ( ret==NULL )
- Py_RETURN_NONE;
diff --git a/user/fonttosfnt/APKBUILD b/user/fonttosfnt/APKBUILD
index 62d1ddcae..bdb4e1cfa 100644
--- a/user/fonttosfnt/APKBUILD
+++ b/user/fonttosfnt/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=fonttosfnt
-pkgver=1.0.5
+pkgver=1.2.3
pkgrel=0
pkgdesc="Wrap X11 bitmap fonts in TrueType containers"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="freetype-dev libfontenc-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/fonttosfnt-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="dba990098c95b07bc7240699a5c9ea11f056fbfddd70f669ae283548cbf20d756b28d817a99548c23ba81de9792877296ab6f35ee3c630e5c3cd8f14650ce297 fonttosfnt-1.0.5.tar.bz2"
+sha512sums="9464ef05f3ff7dddfd7a4f0d46a6cc5bb79cf8e019824c2d40164cd18025cd9ed33b31d7b808b4c289af58f09be0be7591f6dfab5624aab1931e4c6a7da68463 fonttosfnt-1.2.3.tar.xz"
diff --git a/user/fortune-mod/APKBUILD b/user/fortune-mod/APKBUILD
index 2a4e1c873..7d3ba823c 100644
--- a/user/fortune-mod/APKBUILD
+++ b/user/fortune-mod/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=fortune-mod
-pkgver=2.6.2
+pkgver=2.12.0
pkgrel=0
pkgdesc="Display random messages or quotations"
url="https://www.shlomifish.org/humour/fortunes/"
@@ -11,44 +11,34 @@ license="BSD-4-Clause"
depends=""
checkdepends="perl-file-find-object perl-io-all perl-test-differences
perl-test-runvalgrind valgrind"
-makedepends="cmake recode-dev"
+makedepends="cmake recode-dev rinutils"
subpackages="$pkgname-doc"
source="https://github.com/shlomif/fortune-mod/archive/$pkgname-$pkgver.tar.gz"
builddir="$srcdir/fortune-mod-fortune-mod-$pkgver/$pkgname"
-prepare() {
- cd "$builddir"
- default_prepare
- mkdir build
-}
-
build() {
- cd "$builddir"/build
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_INSTALL_LIBDIR=lib \
- -DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DNO_OFFENSIVE=True \
-DLOCALDIR=/usr/share/games/fortunes \
${CMAKE_CROSSOPTS} \
- ..
- make
+ -Bbuild \
+ .
+ make -C build
}
check() {
- cd "$builddir"/build
- make check
+ make -C build check
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="e3a9cd949bc38ab3044d2b32e0a6d946d4e8e2824218927c5350c212053ba47372b9f65251cf7a9ffa263c7990aeff6929bc4273b6d57ff1c9e1ff0d6dd80aa8 fortune-mod-2.6.2.tar.gz"
+sha512sums="e3feca02b33bcae3c7113432af5d200d7c8701338c1d778c5dd893e4541969146185393c952f19f1b2f17077c4f171cdacbd9b6ba3cb0581117b8aa569cc652f fortune-mod-2.12.0.tar.gz"
diff --git a/user/frameworkintegration/APKBUILD b/user/frameworkintegration/APKBUILD
index abaeb67b4..8a6ad042f 100644
--- a/user/frameworkintegration/APKBUILD
+++ b/user/frameworkintegration/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=frameworkintegration
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework providing components to allow applications to integrate with a KDE Workspace"
url="https://www.kde.org/"
@@ -17,7 +17,6 @@ subpackages="$pkgname-dev"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/frameworkintegration-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="9bb0c8a10b342976c21f8840e04f4b9ac60931c804fc0debbddf24b710e97804a2b8d357019840534c4fb4b4b816565a49682b0b09b4fb4d82d7d3467af1bb1f frameworkintegration-5.54.0.tar.xz"
+sha512sums="3900fe970d459707b634df90515e49593632e7fe1dc9ba2a54b45d5042a768997f11b0875fe5419912673d8c9166e244d27b943b83c2d4a8936b8d6e30e17eb1 frameworkintegration-5.94.0.tar.xz"
diff --git a/user/free42/APKBUILD b/user/free42/APKBUILD
index c0f490ea0..221e2275f 100644
--- a/user/free42/APKBUILD
+++ b/user/free42/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=free42
pkgver=2.0.22
-pkgrel=2
+pkgrel=3
pkgdesc="Scientific programmable calculator"
url="https://thomasokken.com/free42/"
arch="all"
@@ -38,5 +38,5 @@ package() {
sha512sums="865e8cce86a882aba10e7e756308e195a6675f0b6db4b881e7b7df67de95f5169ca801005e25dd0e61a70a5a0cd6a374b0cf58003251cdc9dc526a2506e18e1d free42-nologo-2.0.22.tgz
f52700d234719f4ee7cdd369fc5f28ade190ff77ed1a824cd2cdaeef62419700de3d85a28fd6ae378f904e018813dc4145ca4cc9f2669fdf50f3e13baa7ec634 free42.desktop
470eb88936c65a053860af94955bf979973bad48c4b1f593598818f8ff0c39c4869613a05ad0e82b7a3fc6ce19fa7b8642a38e726d4a48e3fe63a9cbac8a45d6 libx11.patch
-33afc0d0deb88143b3ec0a09fd2ba3de14d6ad269c9ecff55c9e89348d7bf76e2bbf880e0eef9a2c71eedb1da9136051a471d4aaaf9aa5acd4e992964a69692b patch.patch
+0d2a7dc7e7376ef99b43d307fa680a5e87ad3d4662194866721302c280b8d072afbb24e0b882cee5e2c0ba25191fe01b3c9737e628734e64a83b871a6ded794d patch.patch
2e2e6c5a00de96f2ca1c61a0039a945bf0416c889b9131abf89c6eca4d8816ff0144c32634ac7c7b112fc1bd8cd6d816f22f2aed31bde59b96a79b9588235a02 unsigned-char.patch"
diff --git a/user/free42/patch.patch b/user/free42/patch.patch
index f79bb6c8e..a56b426b3 100644
--- a/user/free42/patch.patch
+++ b/user/free42/patch.patch
@@ -11,7 +11,7 @@
+ # ==============================================================================
+
+-__INDICES__ = 1 2 3 4 5 6 7 8 9 10 11
-++__INDICES__ = 1 2 3 4 5 6 7 8 9 10 11 12 13
+++__INDICES__ = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
+
+ GetIndex = $(strip $(word 1,$(if $(word $(words $(__INDICES__)),$2), \
+ $(error "List too large. Adjust __INDICES__"), \
@@ -22,9 +22,9 @@
+-ARCH_ALIAS := x86 ia64 EM64T x86_64 i686 amd64 Intel64 sun4u
+-ARCH_LIST := IA32 IA64 EFI2 EFI2 IA32 EFI2 EFI2 EFI2
+-ARCH_TYPE := IA32 IA64 EFI2 EFI2 IA32 EFI2 EFI2 EFI2
-++ARCH_ALIAS := x86 ia64 EM64T x86_64 i686 amd64 Intel64 sun4u ppc64 ppc armel aarch64
-++ARCH_LIST := IA32 IA64 EFI2 EFI2 IA32 EFI2 EFI2 EFI2 EFI2 EFI2 EFI2 EFI2
-++ARCH_TYPE := IA32 IA64 EFI2 EFI2 IA32 EFI2 EFI2 EFI2 EFI2 EFI2 EFI2 EFI2
+++ARCH_ALIAS := x86 ia64 EM64T x86_64 i686 amd64 Intel64 sun4u ppc64 ppc armel aarch64 armv7l i586
+++ARCH_LIST := IA32 IA64 EFI2 EFI2 IA32 EFI2 EFI2 EFI2 EFI2 EFI2 EFI2 EFI2 EFI2 IA32
+++ARCH_TYPE := IA32 IA64 EFI2 EFI2 IA32 EFI2 EFI2 EFI2 EFI2 EFI2 EFI2 EFI2 EFI2 IA32
+ ARCH_TYPES := IA32 IA64 EFI2
+
+ UARCH_LIST := SSE GSSE LRB LRB2
diff --git a/user/freealut/APKBUILD b/user/freealut/APKBUILD
index c249d9d21..035d254fe 100644
--- a/user/freealut/APKBUILD
+++ b/user/freealut/APKBUILD
@@ -6,20 +6,14 @@ pkgrel=0
pkgdesc="Free software implementation of OpenAL ALUT"
url="https://github.com/vancegroup/freealut"
arch="all"
+options="!check" # No test suite.
license="LGPL-2.0-only"
depends=""
-makedepends="openal-soft-dev"
+makedepends="cmake openal-soft-dev"
subpackages="$pkgname-dev"
source="https://distfiles.adelielinux.org/source/freealut-$pkgver.tar.xz"
-prepare() {
- cd "$builddir"
- default_prepare
- mkdir build
-}
-
build() {
- cd "$builddir"/build
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,18 +23,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_C_FLAGS="$CFLAGS" \
${CMAKE_CROSSOPTS} \
- ..
- make
+ -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
sha512sums="218f52ddc5f26aa6744d4209bb2ec6963e423dccec642ba96f9b6d0c1ee0972b9b86cd2fc4c81e21ba2fce7b6ff5e5150d23083b76602d0704a7e65b52f2cc45 freealut-1.1.0_git20140626.tar.xz"
diff --git a/user/freecell-solver/APKBUILD b/user/freecell-solver/APKBUILD
index 78c1eadb5..e42dbc819 100644
--- a/user/freecell-solver/APKBUILD
+++ b/user/freecell-solver/APKBUILD
@@ -2,21 +2,27 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=freecell-solver
pkgver=4.20.0
-pkgrel=0
+pkgrel=1
pkgdesc="Library for solving card games"
url="https://fc-solve.shlomifish.org/"
arch="all"
license="MIT"
depends="python3"
-makedepends="gperf perl perl-task-freecellsolver-testing python3 py3-random2
- py3-six"
checkdepends="gmp-dev libtap-dev perl-dev py3-cffi py3-pycotap the_silver_searcher
valgrind"
+makedepends="cmake gperf perl perl-task-freecellsolver-testing python3
+ py3-random2 py3-six"
subpackages="$pkgname-dev $pkgname-doc"
source="https://fc-solve.shlomifish.org/downloads/fc-solve/freecell-solver-$pkgver.tar.xz"
build() {
- cd "$builddir"
+ rm t/t/perltidy.t
+ case $CTARGET_ARCH in
+ ppc)
+ ARCH_OPTS="-DSKIP_VALGRIND=True" # #876
+ ;;
+ esac
+
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,19 +32,18 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${ARCH_OPTS} \
+ ${CMAKE_CROSSOPTS} .
# The build system generates header files; jobs >1 may cause failures
# because .h don't exist yet.
make -j1
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/freeglut/APKBUILD b/user/freeglut/APKBUILD
index f89c0cac6..084885517 100644
--- a/user/freeglut/APKBUILD
+++ b/user/freeglut/APKBUILD
@@ -1,33 +1,35 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=freeglut
-pkgver=3.0.0
-pkgrel=0
-pkgdesc="free reimplementation of OpenGL Utility Toolkit (GLUT) library"
-url="http://freeglut.sourceforge.net/"
+pkgver=3.2.2
+pkgrel=1
+pkgdesc="Free reimplementation of OpenGL Utility Toolkit (GLUT) library"
+url="https://freeglut.sourceforge.net/"
arch="all"
options="!check" # No test suite.
license="X11"
-depends_dev="mesa-dev libx11-dev libice-dev libxxf86vm-dev libxi-dev glu-dev"
+depends_dev="glu-dev libglvnd-dev libice-dev libx11-dev libxi-dev
+ libxxf86vm-dev"
makedepends="$depends_dev cmake"
-subpackages="$pkgname-dev $pkgname-doc"
-source="http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz"
+subpackages="$pkgname-dev"
+source="https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz
+ glvnd.patch
+ "
build() {
- cd "$builddir"
cmake . \
- -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
- -DFREEGLUT_BUILD_STATIC_LIBS=0
+ -DFREEGLUT_BUILD_STATIC_LIBS=0 \
+ -DOpenGL_GL_PREFERENCE=GLVND \
+ .
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
-
- install -m644 -D COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="9c45d5b203b26a7ff92331b3e080a48e806c92fbbe7c65d9262dd18c39cd6efdad8a795a80f499a2d23df84b4909dbd7c1bab20d7dd3555d3d88782ce9dd15b0 freeglut-3.0.0.tar.gz"
+sha512sums="190231951d314f854c244bd27f7c20488403bd0eecffc342097a2e3d1621cec87f6c209a77b4c153aabcf44697b4070227930e295ab74fb88953cbbf94fc81d9 freeglut-3.2.2.tar.gz
+ae99d5d749b0ed8a7c822651060cdf0d0d1d33610a16ddd6bd16dcf84c67ad475be6dd1278edf1ab4fdfbcb784217f0d05eab4503f1de63a3d6979edff12e8b9 glvnd.patch"
diff --git a/user/freeglut/glvnd.patch b/user/freeglut/glvnd.patch
new file mode 100644
index 000000000..123e943b7
--- /dev/null
+++ b/user/freeglut/glvnd.patch
@@ -0,0 +1,13 @@
+This allows us to link to the new GLVND libraries. Otherwise, there will be linker errors.
+
+--- freeglut-3.2.2/CMakeLists.txt.old 2022-02-06 10:50:52.000000000 +0000
++++ freeglut-3.2.2/CMakeLists.txt 2024-11-26 12:50:25.436599428 +0000
+@@ -264,7 +264,7 @@
+ LIST(APPEND LIBS GLESv2 GLESv1_CM EGL)
+ ELSE()
+ FIND_PACKAGE(OpenGL REQUIRED)
+- LIST(APPEND LIBS ${OPENGL_gl_LIBRARY})
++ LIST(APPEND LIBS ${OPENGL_opengl_LIBRARY} ${OPENGL_glx_LIBRARY})
+ INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
+ ENDIF()
+
diff --git a/user/freetds/APKBUILD b/user/freetds/APKBUILD
index ec1d26e66..d1827f3e4 100644
--- a/user/freetds/APKBUILD
+++ b/user/freetds/APKBUILD
@@ -1,21 +1,23 @@
# Contributor: Michael Mason <ms13sp@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=freetds
-pkgver=1.00.109
+pkgver=1.1.42
pkgrel=0
-pkgdesc="Tabular Datastream Library"
-url="http://www.freetds.org/"
+pkgdesc="Library for accessing Sybase and MS SQL Server databases"
+url="https://www.freetds.org/"
arch="all"
license="LGPL-2.0+"
-depends=
+depends=""
makedepends="linux-headers openssl-dev unixodbc-dev"
-install=
subpackages="$pkgname-doc $pkgname-dev"
source="ftp://ftp.freetds.org/pub/freetds/stable/$pkgname-$pkgver.tar.gz
fix-includes.patch"
+# secfixes:
+# 1.1.40-r0:
+# - CVE-2019-13508
+
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,14 +33,12 @@ build() {
}
check() {
- cd "$builddir"
make -C "src/replacements" check
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
}
-sha512sums="0c0742414aea533635a9d9b550d0cde10c14226a48d5ec9d353dfa07199d6788ae505e8e671945003a824a4049f11ddac1e4229eed51ac795c91dbf16ed6a4ef freetds-1.00.109.tar.gz
+sha512sums="af00e73e761efdd54511bbf98a4d4bd3929658eb56a5749f6266c55dd0ae1036e371ada95eee10705786de1c710e38f7550e9df0e45f50c086945a0df21121d7 freetds-1.1.42.tar.gz
d75d1aab6687586697f3e430db1e82f21208f10076b45996542eea682e36cbbbb344f479a9336fcfd294b5b87d7acb2ec5fb8ddd1914e990e23dd5e7ae93a0b6 fix-includes.patch"
diff --git a/user/freetype/APKBUILD b/user/freetype/APKBUILD
index b2f5cd66e..a15a9a1a7 100644
--- a/user/freetype/APKBUILD
+++ b/user/freetype/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=freetype
-pkgver=2.10.0
+pkgver=2.13.2
pkgrel=0
pkgdesc="TrueType font rendering library"
url="https://www.freetype.org/"
@@ -11,9 +11,15 @@ options="!check"
depends=""
makedepends="zlib-dev libpng-dev bzip2-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="http://download.savannah.gnu.org/releases/freetype/freetype-$pkgver.tar.bz2"
+source="http://download.savannah.gnu.org/releases/freetype/freetype-$pkgver.tar.xz"
# secfixes:
+# 2.13.2:
+# - CVE-2022-27406
+# - CVE-2022-27405
+# - CVE-2022-27404
+# 2.10.4-r0:
+# - CVE-2020-15999
# 2.9.1-r0:
# - CVE-2018-6942
# 2.7.1-r1:
@@ -37,9 +43,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-doc() {
- gzip "$pkgdir/usr/share/man/man1/freetype-config.1"
- default_doc
-}
-
-sha512sums="dfad66f419ea9577f09932e0730c0c887bdcbdbc8152fa7477a0c39d69a5b68476761deed6864ddcc5cf18d100a7a3f728049768e24afcb04b1a74b25b6acf7e freetype-2.10.0.tar.bz2"
+sha512sums="a5917edaa45cb9f75786f8a4f9d12fdf07529247e09dfdb6c0cf7feb08f7588bb24f7b5b11425fb47f8fd62fcb426e731c944658f6d5a59ce4458ad5b0a50194 freetype-2.13.2.tar.xz"
diff --git a/user/frei0r-plugins/APKBUILD b/user/frei0r-plugins/APKBUILD
index bbfd1c2ca..989dcc871 100644
--- a/user/frei0r-plugins/APKBUILD
+++ b/user/frei0r-plugins/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=frei0r-plugins
-pkgver=1.6.1
+pkgver=1.7.0
pkgrel=0
pkgdesc="A minimalistic plugin API for video sources and filters"
url=" "
@@ -12,19 +12,15 @@ depends=""
makedepends="opencv-dev gavl-dev file cairo-dev doxygen
automake autoconf libtool"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://files.dyne.org/frei0r/releases/frei0r-plugins-$pkgver.tar.gz
- facebl0r-opencv-3.4.3.patch
- "
+source="https://files.dyne.org/frei0r/releases/frei0r-plugins-$pkgver.tar.gz"
prepare() {
default_prepare
- cd "$builddir"
- touch README AUTHORS ChangeLog TODO
+ touch README.md AUTHORS ChangeLog TODO
autoreconf -i
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,9 +29,7 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="843790389e6de83817d1c3744a91d3365864bb0c22cf6598707ccba5ec8933f6209434011cde1303e16edd89f6cde2f22aa1fb6eca3548d892a2c77332c44aac frei0r-plugins-1.6.1.tar.gz
-785ff3459f371620780f274b82702c8f6625d78fcd6000fddca0585e3aeaa0af57fd9d9444c4d0f1ca47e84b47b8a2fca4b86fa44ebe93487948eb8f4a193503 facebl0r-opencv-3.4.3.patch"
+sha512sums="8c80e8e0ce8c302e633ea1f6ff4e2a141fd7a8bcb7fce25dc7f1f6521be11258a3efa1074c224c7323e6a17bc405413385be193a5c787e2f276252b50477ebce frei0r-plugins-1.7.0.tar.gz"
diff --git a/user/frei0r-plugins/facebl0r-opencv-3.4.3.patch b/user/frei0r-plugins/facebl0r-opencv-3.4.3.patch
deleted file mode 100644
index f3d4f46bb..000000000
--- a/user/frei0r-plugins/facebl0r-opencv-3.4.3.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From b0a06d52e39438fae2afbf98bafe6c794d13b83e Mon Sep 17 00:00:00 2001
-From: Christoph Willing <chris.willing@linux.com>
-Date: Sat, 14 Jul 2018 21:34:03 +1000
-Subject: [PATCH] Include opencv2/imgproc.hpp for CV_RGB()
-
-Signed-off-by: Christoph Willing <chris.willing@linux.com>
----
- src/filter/facebl0r/facebl0r.cpp | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/src/filter/facebl0r/facebl0r.cpp b/src/filter/facebl0r/facebl0r.cpp
-index 6d6e8f2..823462a 100644
---- a/src/filter/facebl0r/facebl0r.cpp
-+++ b/src/filter/facebl0r/facebl0r.cpp
-@@ -19,6 +19,7 @@
- #include <stdlib.h>
- #include <opencv/cv.h>
- #include <opencv/highgui.h>
-+#include <opencv2/imgproc.hpp>
-
- #include <frei0r.hpp>
- #include <frei0r_math.h>
diff --git a/user/fribidi/APKBUILD b/user/fribidi/APKBUILD
index d729be4a2..224dfca76 100644
--- a/user/fribidi/APKBUILD
+++ b/user/fribidi/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=fribidi
-pkgver=1.0.5
+pkgver=1.0.10
pkgrel=0
pkgdesc="Free Implementation of the Unicode Bidirectional algorithm"
url="http://fribidi.org"
@@ -9,10 +9,9 @@ license="LGPL-2.1+"
depends=""
makedepends=""
subpackages="$pkgname-dev $pkgname-doc"
-source="https://github.com/fribidi/fribidi/releases/download/v$pkgver/fribidi-$pkgver.tar.bz2"
+source="https://github.com/fribidi/fribidi/releases/download/v$pkgver/fribidi-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -22,13 +21,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="c8fb32468be4c461832d586d6c6af65fad1cfe9d5b2fed405f247d6974425ccedeb21ad11609fbcabc3ae5d635d78d88c12d201a4d19ef997e9497054afcdeb2 fribidi-1.0.5.tar.bz2"
+sha512sums="cb51920012c3c7507c17e2beb1dbbcfb8d7c6404e4cb54b260a332754a0d5b103d8834d77e8795651b3f38069c9bd2e9914c21b001411a72f9ffe1ec1ef2f360 fribidi-1.0.10.tar.xz"
diff --git a/user/fslsfonts/APKBUILD b/user/fslsfonts/APKBUILD
index 5734d3301..5364cb325 100644
--- a/user/fslsfonts/APKBUILD
+++ b/user/fslsfonts/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=fslsfonts
-pkgver=1.0.5
+pkgver=1.0.6
pkgrel=0
pkgdesc="List fonts offered by an X font server"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="libfs-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/fslsfonts-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3a30598ace981c7396bfe44f0d8f76d40fca3f77158dceb3914a524594a12187dcad0b0f225fa81f251f0b7896bf046cec4ba610b4676da9be311eec5d8c6cc2 fslsfonts-1.0.5.tar.bz2"
+sha512sums="1181a8e6cc820410d1deac98b3e5097506e4168c6515307b6b9aaf705cb57193a009cb331a51d46ce68e9548712f122b5c942d5a1bc1e01bdd191b7b1beab09e fslsfonts-1.0.6.tar.xz"
diff --git a/user/fstobdf/APKBUILD b/user/fstobdf/APKBUILD
index 0c39dcfba..13bbac5eb 100644
--- a/user/fstobdf/APKBUILD
+++ b/user/fstobdf/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=fstobdf
-pkgver=1.0.6
+pkgver=1.0.7
pkgrel=0
pkgdesc="Create X11 bitmap font from font server font"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="libfs-dev util-macros libx11-dev xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/fstobdf-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="ec5b8f62019ba51725bb47241d4fc244412f354e7c12094ed884109a88e3db9d25d41a6142fd002e6c49877b4c7f2c5dde549682dcc05f7ce102621d2c71671f fstobdf-1.0.6.tar.bz2"
+sha512sums="b303cc2060e8ccaa139e855a7d377d28877158efa1087eeeebf9f30f7c9962764eceab5c4044b4b508890413cf38546da9b26756dd27a142b806dcd6fdb6ba59 fstobdf-1.0.7.tar.xz"
diff --git a/user/ftmenu/APKBUILD b/user/ftmenu/APKBUILD
index 3f8e2d157..fb004f0aa 100644
--- a/user/ftmenu/APKBUILD
+++ b/user/ftmenu/APKBUILD
@@ -9,13 +9,17 @@ arch="all"
options="!check" # there is currently no testsuite to run
license="GPL-3.0-only"
depends=""
-makedepends="gtk+2.0-dev"
-source="https://downloads.sourceforge.net/project/ftmenu/ftmenu/ftmenu-0.4/ftmenu-$pkgver.tar.gz
- include-stdlib.patch"
+makedepends="autoconf automake gtk+2.0-dev libtool"
+source="https://downloads.sourceforge.net/project/$pkgname/$pkgname/$pkgname-${pkgver%.*}/$pkgname-$pkgver.tar.gz
+ include-stdlib.patch
+ "
-build() {
- cd "$builddir"
+prepare() {
+ default_prepare
autoreconf -if
+}
+
+build() {
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,12 +31,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/fts/00-static-and-shared-libs.patch b/user/fts/00-static-and-shared-libs.patch
deleted file mode 100644
index b65b1d0d6..000000000
--- a/user/fts/00-static-and-shared-libs.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-diff --git a/.gitignore b/.gitignore
-index 528fe32..663e6bb 100644
---- a/.gitignore
-+++ b/.gitignore
-@@ -10,4 +10,5 @@ config.status
- configure
- depcomp
- install-sh
-+ltmain.sh
- missing
-diff --git a/Makefile.am b/Makefile.am
-index aa93562..f09994e 100644
---- a/Makefile.am
-+++ b/Makefile.am
-@@ -1,5 +1,5 @@
- ## Makefile.am - procress this file with automake to produce Makefile.in
--lib_LIBRARIES = libfts.a
--libfts_a_SOURCES = fts.c
--libfts_a_HEADERS = fts.h
--libfts_adir = $(includedir)
-+lib_LTLIBRARIES = libfts.la
-+libfts_la_SOURCES = fts.c
-+libfts_la_HEADERS = fts.h
-+libfts_ladir = $(includedir)
-diff --git a/bootstrap.sh b/bootstrap.sh
-index 9e026b5..cd4a585 100755
---- a/bootstrap.sh
-+++ b/bootstrap.sh
-@@ -1,4 +1,5 @@
- #!/bin/sh
-+libtoolize
- aclocal
- autoconf
- automake --add-missing
-diff --git a/configure.ac b/configure.ac
-index 28dd6c6..6f12859 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -7,7 +7,9 @@ AC_INIT([fts], [1.1], [Jürgen Buchmüller <pullmoll@t-online.de>])
- AM_INIT_AUTOMAKE([1.15])
-
- AC_PROG_CC
--AC_PROG_RANLIB
-+AC_PROG_LIBTOOL
-+
-+LT_INIT
-
- AC_CHECK_HEADERS(assert.h dirent.h errno.h fcntl.h stdlib.h string.h unistd.h sys/param.h sys/stat.h)
-
diff --git a/user/fts/APKBUILD b/user/fts/APKBUILD
deleted file mode 100644
index 2864ee250..000000000
--- a/user/fts/APKBUILD
+++ /dev/null
@@ -1,46 +0,0 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=fts
-pkgver=1.2.7
-pkgrel=1
-pkgdesc="Provides the fts(3) functions, which are missing in musl libc"
-url="https://github.com/pullmoll/musl-fts/"
-arch="all"
-license="BSD-3-Clause"
-makedepends="automake autoconf libtool"
-subpackages="$pkgname-dev"
-source="$pkgname-$pkgver.zip::https://github.com/pullmoll/musl-fts/archive/v$pkgver.zip"
-builddir="$srcdir/musl-$pkgname-$pkgver"
-
-prepare() {
- default_prepare
- cd "$builddir"
- ./bootstrap.sh
-}
-
-build() {
- cd "$builddir"
- CFLAGS=-fPIC ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
-}
-
-check() {
- cd "$builddir"
- make check
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
-
- mkdir -p "$pkgdir"/usr/lib/pkgconfig
- cp "$builddir"/musl-fts.pc "$pkgdir"/usr/lib/pkgconfig/libfts.pc
-}
-
-sha512sums="69aceaa7a8dc7ab5845d3288e315357f92ac32fac55c3d670186f2c5756f665a11471fc81f67126755a707058a8d293ba926d906f542c1360a49ca3c9b357976 fts-1.2.7.zip"
diff --git a/user/fuse-exfat/APKBUILD b/user/fuse-exfat/APKBUILD
index 21848f057..66a02e572 100644
--- a/user/fuse-exfat/APKBUILD
+++ b/user/fuse-exfat/APKBUILD
@@ -13,7 +13,6 @@ subpackages="$pkgname-doc"
source="https://github.com/relan/exfat/releases/download/v$pkgver/fuse-exfat-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,12 +24,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/fuse/APKBUILD b/user/fuse/APKBUILD
index 92840ed41..690b69d51 100644
--- a/user/fuse/APKBUILD
+++ b/user/fuse/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=fuse
-pkgver=2.9.8
-pkgrel=2
+pkgver=2.9.9
+pkgrel=0
pkgdesc="Linux Filesystem in Userspace (legacy version)"
url="https://github.com/libfuse/libfuse"
arch="all"
@@ -20,7 +20,6 @@ source="https://github.com/libfuse/libfuse/releases/download/$pkgname-$pkgver/$p
# - CVE-2018-10906
build() {
- cd "$builddir"
UDEV_RULES_PATH='/lib/udev/rules.d' ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -36,10 +35,9 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
rm -r "$pkgdir"/dev "$pkgdir"/etc/init.d
}
-sha512sums="0a9b14d96c6f98f5c903baf00114bfff72f9aeb97224702bbed370516b2b582401d5b436fcef979918ffd85d69ba4a82c8f722c0b35ebd50f7aa5f4ddfdcf8ad fuse-2.9.8.tar.gz
+sha512sums="3d82fafd04f2924299bb09d2bb144935fa004a43fb9a6568e2e1cc5a60fded2efa1711029a0d7f12b3e6e4501f7217f2ee3545646d89da8dece083cb390f23e2 fuse-2.9.9.tar.gz
5672ceb35acabb4bd97b6efc30614f22def62882fe198e2a8598a074d45b6b5337c082a5e09b5e399b6e5212dc1fbde9071c2a5051534c32091444c350b9c657 fix-realpath.patch"
diff --git a/user/fuse3/APKBUILD b/user/fuse3/APKBUILD
index dc049071d..f4835ca18 100644
--- a/user/fuse3/APKBUILD
+++ b/user/fuse3/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=fuse3
_pkgname=fuse
-pkgver=3.2.6
+pkgver=3.16.2
pkgrel=0
pkgdesc="The reference implementation of the Linux FUSE (Filesystem in Userspace) interface"
url="https://github.com/libfuse/libfuse"
@@ -10,14 +10,15 @@ arch="all"
options="suid !check" # Requires fuse kernel module to be loaded
license="GPL-2.0-only AND LGPL-2.1-only AND BSD-2-Clause"
depends="fuse-common"
+#checkdepends="py3-pytest cmd:which"
makedepends="linux-headers meson eudev-dev python3 py3-six py3-pluggy
py3-attrs py3-py"
-#checkdepends="py3-pytest cmd:which"
subpackages="$pkgname-dev $pkgname-doc
$_pkgname-common:common:noarch $_pkgname-openrc:openrc:noarch"
-source="https://github.com/libfuse/libfuse/releases/download/fuse-$pkgver/fuse-$pkgver.tar.xz
+source="https://github.com/libfuse/libfuse/releases/download/fuse-$pkgver/fuse-$pkgver.tar.gz
fix-realpath.patch
- fuse.initd"
+ fuse.initd
+ "
builddir="$srcdir/$_pkgname-$pkgver"
# secfixes:
@@ -25,24 +26,31 @@ builddir="$srcdir/$_pkgname-$pkgver"
# - CVE-2018-10906
build() {
- cd "$builddir"
+ # The examples are required for the tests to work, and aren't
+ # otherwise installed
+
meson \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
--localstatedir=/var \
--buildtype=release \
+ -Dexamples=true \
. output
ninja -C output
}
check() {
+ # Recommended procedure:
+ # 1. modprobe fuse
+ # 2. chown root and chmod u+s $builddir/output/util/fusermount3
+ # 3. abuild check
+
cd "$builddir"/output
python3 -m pytest test/
}
package() {
- cd "$builddir"
DESTDIR="$pkgdir" ninja -C output install
rm -r "$pkgdir"/dev "$pkgdir"/etc/init.d
@@ -72,6 +80,6 @@ openrc() {
install_if="openrc fuse-common=$pkgver-r$pkgrel"
}
-sha512sums="3a1ef77ab4c79a24aad0b259e17f568a30a5faf53ac17eb25d05f30dc7423f0081583f5b3c284ca9196a01885843e97c323a84231272b7e2b55c8e73848a61b8 fuse-3.2.6.tar.xz
+sha512sums="3e8889863cd67dada67271f095f694dc9e5aaf2561fd1e2285aee95b5a54e692bb195ab8fce57fc2bdf08d0ea17b6d56ca4967b4e4371d639d6133907b2370d3 fuse-3.16.2.tar.gz
1a9e1d1e8a7b0778ffde328e4322c73b5d57ec98d52767c846d755cce861ab27989823a75b6c5f994432ddb77fa351dfa4a8f948c9467c5f7d5f471e4608358b fix-realpath.patch
7f6a503ef23cfa8b809c544375c2d83ad56525269b48ad1a7dff0ce36f4bf2f2a3fafed9dc70a71ff6281b261db5f01829e16c06f041921a5d8c8d715a04a8c1 fuse.initd"
diff --git a/user/gambit-c/APKBUILD b/user/gambit-c/APKBUILD
new file mode 100644
index 000000000..225984528
--- /dev/null
+++ b/user/gambit-c/APKBUILD
@@ -0,0 +1,85 @@
+# Contributor: Zach van Rijn <me@zv.io>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=gambit-c
+pkgver=4.9.5
+_pkgver=$(printf "%s" "${pkgver}" | tr . _)
+pkgrel=0
+pkgdesc="An efficient implementation of the Scheme programming language."
+url="https://gambitscheme.org/"
+arch="all"
+license="Apache-2.0"
+depends=""
+makedepends="openssl-dev texinfo gnu-ghostscript"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://gambitscheme.org/$pkgver/gambit-v${_pkgver}.tgz
+ fix-incompatible-stat-usage.patch
+ reproducibility.patch
+ "
+builddir="$srcdir/gambit-v$_pkgver"
+
+prepare() {
+ default_prepare
+
+ #934
+ for srfi in 179 231; do
+ sed -i lib/srfi/makefile -e "s/\b${srfi}\b//g";
+ done
+}
+
+build() {
+ # https://github.com/gambit/gambit/issues/249
+ export CFLAGS="${CFLAGS} --param max-gcse-memory=600000000";
+
+ # We need to bootstrap if we patch .scm files that are
+ # used to generate .c files; using unpatched official
+ # releases should be OK if the patches are upstream.
+ #
+ # Disable versioned shlibs b/c buggy build scripts.
+ #
+ # There is no 'makefile' without an initial 'configure'.
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --enable-single-host \
+ --enable-c-opt \
+ --enable-dynamic-clib \
+ --enable-debug-c-backtrace \
+ --enable-gcc-opts \
+ ;
+ make bootstrap
+ make bootclean
+
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --enable-compiler-name=gsc${pkgver%%.*} \
+ --enable-interpreter-name=gsi${pkgver%%.*} \
+ --enable-single-host \
+ --enable-c-opt \
+ --enable-dynamic-clib \
+ --enable-debug-c-backtrace \
+ --enable-gcc-opts \
+ --enable-shared \
+ --enable-versioned-shared-libs \
+ --disable-absolute-shared-libs \
+ --enable-openssl \
+ ;
+ make
+ make modules
+}
+
+check() {
+ make check
+}
+
+package() {
+ make -j1 DESTDIR="$pkgdir" install
+}
+
+sha512sums="5b5a6fc783851eac140590ef81e017de8301490095d56afa9e670d1a00ed0a31c621b6d48215af8ace9682ca21cd317200167cb95bfdc01a7312394c944597ff gambit-v4_9_5.tgz
+a878994ea7c40b301d30b4d05879c335ad42e1ca8c25387556691192b6945276d6d6ff017ff568302558b23c42c61f223bddb3596b8203fbee8edbf4fdd9b813 fix-incompatible-stat-usage.patch
+133ef5442c1bfe51e57caecd509c12cdecd86cfb941114a5038fad2c3e2bda1770fde7e367561039d523db5ea9cba5cebae7a9ed9daca699863267e7224f1ad6 reproducibility.patch"
diff --git a/user/gambit-c/fix-incompatible-stat-usage.patch b/user/gambit-c/fix-incompatible-stat-usage.patch
new file mode 100644
index 000000000..ed046a88c
--- /dev/null
+++ b/user/gambit-c/fix-incompatible-stat-usage.patch
@@ -0,0 +1,21 @@
+Illegal option 's'.
+
+diff -ur a/doc/makefile.in b/doc/makefile.in
+--- a/doc/makefile.in 2022-12-01 12:16:24.110528979 -0600
++++ b/doc/makefile.in 2022-12-01 12:41:45.384526329 -0600
+@@ -129,14 +129,7 @@
+ version.txi: stamp.vti
+
+ stamp.vti: gambit.txi $(rootfromhere)/configure.ac
+- # we need this mess because "date" and "stat"
+- # don't behave the same on Linux and BSD
+- st_mtime="`stat -s gambit.txi | sed -e 's/.*st_mtime=//g' -e 's/ .*//g'`"; \
+- if [ "$$st_mtime" = "" ]; then \
+- mtime="`date -r gambit.txi '+%B %d, %Y'`"; \
+- else \
+- mtime="`date -r $$st_mtime '+%B %d, %Y'`"; \
+- fi; \
++ mtime="`date -r gambit.txi '+%B %d, %Y'`";
+ echo "@set EDITION $(PACKAGE_VERSION)" > version.tmp; \
+ echo "@set UPDATED $$mtime" >> version.tmp; \
+ echo "@set VERSION $(PACKAGE_VERSION)" >> version.tmp
diff --git a/user/gambit-c/reproducibility.patch b/user/gambit-c/reproducibility.patch
new file mode 100644
index 000000000..1fa480e78
--- /dev/null
+++ b/user/gambit-c/reproducibility.patch
@@ -0,0 +1,52 @@
+https://salsa.debian.org/abdelq/gambc/-/blob/ca233c8bd3c8279e755e34287417aafe3c649629/debian/patches/reproducibility.patch
+
+Workaround for reproducibility issues
+--- a/doc/makefile.in
++++ b/doc/makefile.in
+@@ -70,7 +70,7 @@
+
+ MAKEINFO = makeinfo
+ TEXI2DVI = texi2dvi
+-TEXI2HTML = ./texi2html
++TEXI2HTML = PERL_HASH_SEED=0 ./texi2html
+ PDF2PS = pdf2ps
+
+ .SUFFIXES:
+--- a/doc/texi2html
++++ b/doc/texi2html
+@@ -2520,7 +2520,7 @@
+ print $fh <<EOT;
+ $DOCTYPE
+ <html>
+-$Texi2HTML::THISDOC{'copying_comment'}<!-- Created on $Texi2HTML::THISDOC{today} by $Texi2HTML::THISDOC{program}
++$Texi2HTML::THISDOC{'copying_comment'}<!-- Created by $Texi2HTML::THISDOC{program}
+ $Texi2HTML::THISDOC{program_authors}-->
+ <head>
+ <title>$longtitle</title>
+@@ -2543,7 +2543,7 @@
+ sub T2H_DEFAULT_program_string()
+ {
+ my $user = $Texi2HTML::THISDOC{'user'};
+- my $date = $Texi2HTML::THISDOC{'today'};
++ #my $date = $Texi2HTML::THISDOC{'today'};
+ $user = '' if (!defined($user));
+ $date = '' if (!defined($date));
+ if (($user ne '') and ($date ne ''))
+@@ -3137,7 +3137,7 @@
+ print $fh <<EOT;
+ $DOCTYPE
+ <html>
+-<!-- Created on $Texi2HTML::THISDOC{'today'} by $Texi2HTML::THISDOC{'program'} -->
++<!-- Created by $Texi2HTML::THISDOC{'program'} -->
+ <!--
+ $Texi2HTML::THISDOC{'program_authors'}
+ -->
+@@ -7403,7 +7403,7 @@
+ sub t2h_default_address($$)
+ {
+ my $user = shift;
+- my $date = shift;
++ #my $date = shift;
+ $user = '' if (!defined($user));
+ $date = '' if (!defined($date));
+ if (($user ne '') and ($date ne ''))
diff --git a/user/gamin/APKBUILD b/user/gamin/APKBUILD
index a53174220..8fa896a58 100644
--- a/user/gamin/APKBUILD
+++ b/user/gamin/APKBUILD
@@ -1,26 +1,26 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=gamin
pkgver=0.1.10
-pkgrel=12
+pkgrel=13
pkgdesc="Library for file and directory monitoring"
url="http://www.gnome.org/~veillard/gamin"
arch="all"
license="LGPL-2.0+"
-subpackages="$pkgname-dev"
depends=""
makedepends="glib-dev"
-source="http://www.gnome.org/~veillard/$pkgname/sources/$pkgname-$pkgver.tar.gz
+subpackages="$pkgname-dev"
+source="https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.gz
fix-deprecated-const.patch
- fix-pthread-mutex.patch"
+ fix-pthread-mutex.patch
+ deadlock.patch
+ "
prepare() {
- cd "$builddir"
update_config_sub
default_prepare
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -35,16 +35,15 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
export MKDIRPROG="mkdir -p"
make DESTDIR="$pkgdir" install
}
sha512sums="21bfe6fcf8fb3117cd5a08c8ce3b8d0d1dd23e478e60a95b76c20d02cc29b050dde086578d81037990484ff891c3e104d2cbbf3d294b4a79346b14a0cae075bb gamin-0.1.10.tar.gz
c4c10bee70c7231db395cbfe5bdf513ade6be599a11a9d35888ddfaca42d619fe2b5e87c2b2bab469ea98ba718bc01711252313ba5f53c392379b669f5b2902b fix-deprecated-const.patch
-70628fc39521ea8bc4a40b009d0881f6ee540334a31b2f0cb67dde0f75808c69feb78088ad24c3c4a0dec9fa59e87960fd81d1a2e56963ce9268d0a5e14f88e8 fix-pthread-mutex.patch"
+70628fc39521ea8bc4a40b009d0881f6ee540334a31b2f0cb67dde0f75808c69feb78088ad24c3c4a0dec9fa59e87960fd81d1a2e56963ce9268d0a5e14f88e8 fix-pthread-mutex.patch
+183bb2188fadc32c47ceab8c7fe339e7485c9a57f892b011179ae2be64a16f92e031fcdf2a55959a08c482a82adbad0f3270d1df7441532d0bdffa786ba1de94 deadlock.patch"
diff --git a/user/gamin/deadlock.patch b/user/gamin/deadlock.patch
new file mode 100644
index 000000000..8bc6e40bf
--- /dev/null
+++ b/user/gamin/deadlock.patch
@@ -0,0 +1,65 @@
+From f9c67a13af33f389429e4e760f2023a23a9ac19f Mon Sep 17 00:00:00 2001
+From: Anssi Hannula <anssi@mageia.org>
+Date: Wed, 4 Jan 2012 00:23:55 +0200
+Subject: [PATCH 4/4] fix possible server deadlock in ih_sub_cancel
+
+ih_sub_foreach() calls ih_sub_cancel() while inotify_lock is locked.
+However, ih_sub_cancel() locks it again, and locking GMutex recursively
+causes undefined behaviour.
+
+Fix that by removing locking from ih_sub_cancel() as ih_sub_foreach()
+is its only user. Also make the function static so that it won't
+accidentally get used by other files without locking (inotify-helper.h
+is an internal server header).
+
+This should fix the intermittent deadlocks I've been experiencing
+causing KDE applications to no longer start, and probably also
+http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=542361
+---
+ server/inotify-helper.c | 7 ++-----
+ server/inotify-helper.h | 1 -
+ 2 files changed, 2 insertions(+), 6 deletions(-)
+
+diff --git a/server/inotify-helper.c b/server/inotify-helper.c
+index d77203e..0789fa4 100644
+--- a/server/inotify-helper.c
++++ b/server/inotify-helper.c
+@@ -123,13 +123,11 @@ ih_sub_add (ih_sub_t * sub)
+
+ /**
+ * Cancels a subscription which was being monitored.
++ * inotify_lock must be held when calling.
+ */
+-gboolean
++static gboolean
+ ih_sub_cancel (ih_sub_t * sub)
+ {
+- G_LOCK(inotify_lock);
+-
+-
+ if (!sub->cancelled)
+ {
+ IH_W("cancelling %s\n", sub->pathname);
+@@ -140,7 +138,6 @@ ih_sub_cancel (ih_sub_t * sub)
+ sub_list = g_list_remove (sub_list, sub);
+ }
+
+- G_UNLOCK(inotify_lock);
+ return TRUE;
+ }
+
+diff --git a/server/inotify-helper.h b/server/inotify-helper.h
+index 5d3b6d0..d36b5fd 100644
+--- a/server/inotify-helper.h
++++ b/server/inotify-helper.h
+@@ -34,7 +34,6 @@ gboolean ih_startup (event_callback_t ecb,
+ found_callback_t fcb);
+ gboolean ih_running (void);
+ gboolean ih_sub_add (ih_sub_t *sub);
+-gboolean ih_sub_cancel (ih_sub_t *sub);
+
+ /* Return FALSE from 'f' if the subscription should be cancelled */
+ void ih_sub_foreach (void *callerdata, gboolean (*f)(ih_sub_t *sub, void *callerdata));
+--
+2.5.0
+
diff --git a/user/garcon/APKBUILD b/user/garcon/APKBUILD
index 953bb230e..a3e99e3b6 100644
--- a/user/garcon/APKBUILD
+++ b/user/garcon/APKBUILD
@@ -1,21 +1,20 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=garcon
-pkgver=0.6.2
+pkgver=4.20.0
pkgrel=0
pkgdesc="freedesktop.org menu library for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="LGPL-2.0+"
-makedepends="intltool glib-dev libxfce4util-dev gtk+3.0-dev libxfce4util-dev
- libxfce4ui-dev"
+depends=""
+makedepends="intltool glib-dev libxfce4util-dev>=${pkgver%.*} gtk+3.0-dev
+ libxfce4ui-dev>=${pkgver%.*} wayland-protocols"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/xfce/garcon/0.6/garcon-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/xfce/garcon/${pkgver%.*}/garcon-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="7a96c33b47302fa989862098bc5b8ed64515a60e19a4b8dbb049398cf847d64584f93f85b1f6e1327653b22f0b44a805b737258bbc9ac69197639ef7f13f20b1 garcon-0.6.2.tar.bz2"
+sha512sums="5ed8b031cceb5943af56d006b05dc9f8ac28695a35d17a8f27f8bde1a0a75067fc4d307c87250a436d1b317f92d501f01ce4078b5c961e4e9daccd175f2f261a garcon-4.20.0.tar.bz2"
diff --git a/user/gavl/APKBUILD b/user/gavl/APKBUILD
index bc81e1a5b..8e97e7407 100644
--- a/user/gavl/APKBUILD
+++ b/user/gavl/APKBUILD
@@ -12,7 +12,8 @@ depends=""
makedepends="doxygen"
subpackages="$pkgname-dev $pkgname-doc"
source="https://downloads.sourceforge.net/sourceforge/gmerlin/gavl-$pkgver.tar.gz
- musl-sched_h.patch"
+ musl-sched_h.patch
+ "
prepare() {
default_prepare
@@ -20,7 +21,6 @@ prepare() {
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,7 +32,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/gc/APKBUILD b/user/gc/APKBUILD
index 39e3cbdfd..0803f369d 100644
--- a/user/gc/APKBUILD
+++ b/user/gc/APKBUILD
@@ -1,19 +1,17 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gc
-pkgver=8.0.4
+pkgver=8.2.4
pkgrel=0
pkgdesc="A garbage collector for C and C++"
-url="http://hboehm.info/gc/"
+url="https://hboehm.info/gc/"
arch="all"
license="MIT"
+depends=""
makedepends="libatomic_ops-dev linux-headers"
subpackages="$pkgname-dev $pkgname-doc libgc++:libgccpp"
source="https://github.com/ivmai/bdwgc/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz"
build() {
- if [ "$CLIBC" = "musl" ]; then
- export CFLAGS="$CFLAGS -D_GNU_SOURCE -DNO_GETCONTEXT -DUSE_MMAP -DHAVE_DL_ITERATE_PHDR"
- fi
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -37,7 +35,7 @@ package() {
libgccpp() {
install -d "$subpkgdir"/usr/lib
- mv "$pkgdir"/usr/lib/libgccpp.* "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/lib/libgccpp.* "$pkgdir"/usr/lib/libgctba.* "$subpkgdir"/usr/lib/
}
-sha512sums="57ccca15c6e50048d306a30de06c1a844f36103a84c2d1c17cbccbbc0001e17915488baec79737449982da99ce5d14ce527176afae9ae153cbbb5a19d986366e gc-8.0.4.tar.gz"
+sha512sums="27d014378000f25fb2f5598904be85604822d5ed4553f8b3d1c279122300d3958b4432ec08f951cfd842d92121ea8a030dda34bf2475ec53d4fded551fdd3a98 gc-8.2.4.tar.gz"
diff --git a/user/gcompat/APKBUILD b/user/gcompat/APKBUILD
index f5cde0815..ea2f13e15 100644
--- a/user/gcompat/APKBUILD
+++ b/user/gcompat/APKBUILD
@@ -1,18 +1,16 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gcompat
-pkgver=0.3.0
+pkgver=1.0.0
pkgrel=0
pkgdesc="The GNU C Library compatibility layer for musl"
-url="https://code.foxkit.us/adelie/gcompat"
+url="https://git.adelielinux.org/adelie/gcompat"
arch="all"
options="!check" # No test suite.
license="UoI-NCSA"
depends=""
-makedepends="libucontext-dev"
+makedepends="libucontext-dev utmps-dev"
replaces="libc6-compat"
-source="https://distfiles.adelielinux.org/source/gcompat/$pkgname-$pkgver.tar.xz
- no-utmp.patch
- "
+source="https://distfiles.adelielinux.org/source/gcompat/$pkgname-$pkgver.tar.xz"
_link_arch=$CARCH
case "$CARCH" in
@@ -23,19 +21,15 @@ x86) _ld="ld-linux.so.2" ;;
pmmx) _ld="ld-linux.so.2" _link_arch=i386;;
x86_64) _ld="ld-linux-x86-64.so.2" ;;
mips* | ppc | s390*) _ld="ld.so.1" ;;
-ppc64le) _ld="ld64.so.2" ;;
-ppc64) _ld="ld64.so.1" ;;
+ppc64*) _ld="ld64.so.2" ;;
esac
build() {
- cd "$builddir"
make LINKER_PATH="/lib/ld-musl-${_link_arch}.so.1" LOADER_NAME="$_ld" WITH_LIBUCONTEXT=YesPlease
}
package() {
- cd "$builddir"
make LINKER_PATH="/lib/ld-musl-${_link_arch}.so.1" LOADER_NAME="$_ld" WITH_LIBUCONTEXT=YesPlease DESTDIR="$pkgdir" install
}
-sha512sums="1f7dd73efd556b7e0f7f1c80751185583de24daf4ab235b488ea1ab98cea2d3a94abed341b922be0bd43c8d539a00176b892c78acf09f2adacb279c09648b3be gcompat-0.3.0.tar.xz
-34fbf97cfbad2bae219e238f5edcb55425c6d7c9be7dde02aa0e8223dbf163ff20f535539de2232a1ef3c6f47a92eac6e00484af99dc8beb192c761b15389b82 no-utmp.patch"
+sha512sums="61e355445571760b7cb8c8a828e7182544fefb403dca602f0b3756f39430974b5161517b0fdf4636a8a513be8e64d4dcb13553b28e9c7833f15c3b9871c94455 gcompat-1.0.0.tar.xz"
diff --git a/user/gcompat/no-utmp.patch b/user/gcompat/no-utmp.patch
deleted file mode 100644
index c5d2251b1..000000000
--- a/user/gcompat/no-utmp.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- gcompat-0.3.0/libgcompat/utmp.c.old 2018-09-05 02:26:02.850000000 +0000
-+++ gcompat-0.3.0/libgcompat/utmp.c 2018-09-21 21:39:17.350000000 +0000
-@@ -1,12 +1,11 @@
- #include <stddef.h> /* NULL */
--#include <utmp.h> /* struct utmp */
-
- /**
- * Get user accounting database entries.
- *
- * LSB 5.0: LSB-Core-generic/baselib-getutent-r-3.html
- */
--int getutent_r(struct utmp *buffer, struct utmp **result)
-+int getutent_r(void *buffer, void **result)
- {
- /* musl does not implement getutent(). */
- *result = NULL;
diff --git a/user/gcompris-qt/APKBUILD b/user/gcompris-qt/APKBUILD
index 9240e9af7..6b53bd372 100644
--- a/user/gcompris-qt/APKBUILD
+++ b/user/gcompris-qt/APKBUILD
@@ -17,9 +17,6 @@ subpackages="$pkgname-doc $pkgname-lang"
source="http://gcompris.net/download/qt/src/gcompris-qt-$pkgver.tar.xz"
build() {
- cd "$builddir"
- mkdir build
- cd build
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -31,13 +28,12 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
${CMAKE_CROSSOPTS} \
- ..
- make
+ -Bbuild
+ make -C build
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
sha512sums="bc4515acc5c58869997e44c0c3c38d2904f34a7a5efede1ee7aefcbd1ae5907fe00b29a3ecf8e5e46396031736d10df64523e280dfffe3bac2df7e34fe9a8eda gcompris-qt-0.91.tar.xz"
diff --git a/user/gconf/APKBUILD b/user/gconf/APKBUILD
index 1e9b30856..5fcad4f29 100644
--- a/user/gconf/APKBUILD
+++ b/user/gconf/APKBUILD
@@ -1,8 +1,8 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
-# Maintainer:
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=gconf
pkgver=3.2.6
-pkgrel=4
+pkgrel=5
pkgdesc="GNOME configuration system"
url="http://projects.gnome.org/gconf"
arch="all"
@@ -12,14 +12,11 @@ depends_dev="gtk+3.0-dev libxml2-dev polkit-dev"
makedepends="$depends_dev dbus-glib-dev glib-dev gobject-introspection-dev
intltool orbit2-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
source="https://download.gnome.org/sources/GConf/${pkgver%.*}/GConf-${pkgver}.tar.xz"
-
builddir="$srcdir"/GConf-"$pkgver"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -28,12 +25,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/gcr3/APKBUILD b/user/gcr3/APKBUILD
new file mode 100644
index 000000000..96adcf4d3
--- /dev/null
+++ b/user/gcr3/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=gcr3
+pkgver=3.41.1
+pkgrel=0
+pkgdesc="Gnome cryptography user interface library"
+url="https://gnome.pages.gitlab.gnome.org/gcr/gcr-3/"
+arch="all"
+options="!check" # https://gitlab.gnome.org/GNOME/gcr/-/issues/114
+license="LGPL-2.1+ AND LGPL-2.0+ AND LGPL-2.1-only AND GPL-2.0+ AND (GPL-2.0+ OR LGPL-2.1+ OR MPL-1.1) AND (LGPL-2.0+ OR LGPL-2.1+)"
+depends=""
+checkdepends="dbus-x11"
+makedepends="meson ninja gi-docgen glib-dev gnupg gobject-introspection-dev
+ gtk+3.0-dev libgcrypt-dev libsecret-dev p11-kit-dev vala-dev openssh-client"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://download.gnome.org/sources/gcr/${pkgver%.*}/gcr-$pkgver.tar.xz"
+builddir="$srcdir"/gcr-$pkgver
+
+build() {
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ . output
+ meson compile -C output
+}
+
+check() {
+ dbus-run-session meson test -C output
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C output
+}
+
+sha512sums="dd70d41636ede863d05824b26823a8f572902f7a9b6f09b0c70586ef0d4c046864e6956130b9231850a515a9fbfcd56faf20354c1cf8f697f005827c048a2325 gcr-3.41.1.tar.xz"
diff --git a/user/gdbm/APKBUILD b/user/gdbm/APKBUILD
index 230f62e28..b52d44fce 100644
--- a/user/gdbm/APKBUILD
+++ b/user/gdbm/APKBUILD
@@ -2,7 +2,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer:
pkgname=gdbm
-pkgver=1.18.1
+pkgver=1.23
pkgrel=0
pkgdesc="Set of database routines that use extensible hashing"
url="https://www.gnu.org/software/gdbm/"
@@ -11,10 +11,9 @@ license="GPL-2.0+ AND GPL-3.0+"
depends=""
makedepends=""
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="ftp://ftp.gnu.org/gnu/gdbm/$pkgname-$pkgver.tar.gz"
+source="https://ftp.gnu.org/gnu/gdbm/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="adf9d6c5bc843ff0d7f88c2a1667d509973b2d63378d0001d7e74cc10aee6ea498a4513cc88ddf78c32ba4db5cb040b2794f4f1b3338c65d9894058850e2f5ef gdbm-1.18.1.tar.gz"
+sha512sums="918080cb0225b221c11eb7339634a95e00c526072395f7a3d46ccf42ef020dea7c4c5bec34aff2c4f16033e1fff6583252b7e978f68b8d7f8736b0e025838e10 gdbm-1.23.tar.gz"
diff --git a/user/gdk-pixbuf/APKBUILD b/user/gdk-pixbuf/APKBUILD
index 52876cc19..cd1ac322d 100644
--- a/user/gdk-pixbuf/APKBUILD
+++ b/user/gdk-pixbuf/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gdk-pixbuf
-pkgver=2.38.0
+pkgver=2.42.12
pkgrel=0
pkgdesc="GTK+ image loading library"
url="https://www.gtk.org/"
@@ -9,13 +9,13 @@ options="!check" # bug753605-atsize.jpg is missing from tarball.
license="LGPL-2.0+"
depends="shared-mime-info"
makedepends="glib-dev gobject-introspection-dev libjpeg-turbo-dev libpng-dev
- meson ninja python3 tiff-dev xmlto"
+ meson python3 py3-docutils tiff-dev xmlto"
install="$pkgname.pre-deinstall"
triggers="$pkgname.trigger=/usr/lib/gdk-pixbuf-2.0/*/loaders"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.gnome.org/sources/gdk-pixbuf/${pkgver%.*}/gdk-pixbuf-$pkgver.tar.xz
+ fix-pkgconfig.patch
"
-replaces="gtk+"
# secfixes:
# 2.36.6-r1:
@@ -24,21 +24,20 @@ replaces="gtk+"
# - CVE-2017-6314
build() {
- cd "$builddir"
- mkdir build
- cd build
- meson -Dprefix=/usr -Dinstalled_tests=false
- ninja
+ meson setup \
+ -Dprefix=/usr \
+ -Dinstalled_tests=false \
+ build
+ meson compile -C build
}
check() {
- cd "$builddir"/build
- ninja test
+ meson test -C build
}
package() {
- cd "$builddir"/build
- DESTDIR="$pkgdir" ninja install
+ DESTDIR="$pkgdir" meson install -C build
}
-sha512sums="10fcd7999dcff48d6e965306e208cc8ca324ba98f3f4f56755d015e96938bcfbfaadc56ed75142c037e3df34b04283cd4fdf043b32e3e091b32115fccde229f4 gdk-pixbuf-2.38.0.tar.xz"
+sha512sums="ae9fcc9b4e8fd10a4c9bf34c3a755205dae7bbfe13fbc93ec4e63323dad10cc862df6a9e2e2e63c84ffa01c5e120a3be06ac9fad2a7c5e58d3dc6ba14d1766e8 gdk-pixbuf-2.42.12.tar.xz
+24d461273c262e52299b9a70bc89e6fd4bd4425c1aef9575f5fcd6f3fb6d0ee0d05c4151f6bb9a28708f189ad26764b3c9b76a9d1e5094405a679abdf3905663 fix-pkgconfig.patch"
diff --git a/user/gdk-pixbuf/fix-pkgconfig.patch b/user/gdk-pixbuf/fix-pkgconfig.patch
new file mode 100644
index 000000000..a15c2c29c
--- /dev/null
+++ b/user/gdk-pixbuf/fix-pkgconfig.patch
@@ -0,0 +1,11 @@
+diff '--color=auto' -Nurd gdk-pixbuf-2.42.12/gdk-pixbuf/meson.build gdk-pixbuf-2.42.12.new/gdk-pixbuf/meson.build
+--- gdk-pixbuf-2.42.12/gdk-pixbuf/meson.build 2025-07-01 18:58:08.263906972 -0700
++++ gdk-pixbuf-2.42.12.new/gdk-pixbuf/meson.build 2025-07-01 18:54:50.384849537 -0700
+@@ -383,6 +383,7 @@
+ 'gdk_pixbuf_query_loaders=${bindir}/gdk-pixbuf-query-loaders',
+ ],
+ requires: 'gobject-2.0',
++ requires_private: 'libpng',
+ subdirs: gdk_pixbuf_api_name,
+ filebase: gdk_pixbuf_api_name,
+ )
diff --git a/user/genext2fs/APKBUILD b/user/genext2fs/APKBUILD
new file mode 100644
index 000000000..9d16a2792
--- /dev/null
+++ b/user/genext2fs/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Nathan <ndowens@artixlinux.org>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=genext2fs
+pkgver=1.5.0
+pkgrel=0
+pkgdesc="ext2 filesystem generator for embedded systems"
+url="https://github.com/bestouff/genext2fs"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="autoconf automake libarchive-dev"
+subpackages="$pkgname-doc"
+source=""$pkgname-$pkgver.tar.gz::https://github.com/bestouff/genext2fs/archive/v$pkgver.tar.gz
+
+prepare() {
+ NOCONFIGURE=1 ./autogen.sh
+}
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --enable-libarchive
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="628994f4f5f6d534a42e16db5322e36addb227d0e0ee589ebebbbb6beda9c53774186a932d04fcb978fde1cbe534b8335fdbfea256aecd2d873c03bc5892a8ce genext2fs-1.5.0.tar.gz"
diff --git a/user/genmenu/APKBUILD b/user/genmenu/APKBUILD
index 2e34c5192..098f47e30 100644
--- a/user/genmenu/APKBUILD
+++ b/user/genmenu/APKBUILD
@@ -6,7 +6,7 @@ pkgrel=0
pkgdesc="Menu generator for Enlightenment, Blackbox, Openbox, Fluxbox, and WindowMaker"
url="https://f00l.de/genmenu/"
arch="noarch"
-options="!check" # this is just a bash script, no tests
+options="!check" # This is just a bash script, no tests
license="GPL-2.0+"
depends="bash"
makedepends=""
@@ -14,8 +14,7 @@ subpackages=""
source="https://f00l.de/$pkgname/$pkgname-$pkgver.tar.bz2"
package() {
- cd "$builddir"
- install -D -m755 -t $pkgdir/usr/bin/ genmenu
+ install -D -m755 -t $pkgdir/usr/bin/ "$builddir"/genmenu
}
sha512sums="eb87db30f6787570ffe844c7b9b25542652e485296ec061ab1da8f2b1bae40942630c9ca141cf8c7b55ce4d99d1b173511850247a5e07243256eb71588515e54 genmenu-1.1.0.tar.bz2"
diff --git a/user/gi-docgen/APKBUILD b/user/gi-docgen/APKBUILD
new file mode 100644
index 000000000..c4afc7f0c
--- /dev/null
+++ b/user/gi-docgen/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=gi-docgen
+pkgver=2022.1
+pkgrel=0
+pkgdesc="Documentation tool for GObject-based libraries"
+url="https://pypi.org/project/gi-docgen/"
+arch="noarch"
+license="Apache-2.0 OR GPL-3.0+"
+depends="python3 py3-jinja2 py3-markdown py3-markupsafe py3-pygments py3-toml
+ py3-typogrify"
+makedepends="meson"
+subpackages=""
+source="https://download.gnome.org/sources/gi-docgen/2022/gi-docgen-$pkgver.tar.xz"
+
+build() {
+ meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ build
+ ninja -C build
+}
+
+check() {
+ ninja -C build test
+}
+
+package() {
+ DESTDIR="$pkgdir" ninja -C build install
+}
+
+sha512sums="f65fd2168e8eaa14fde78333ed5dc8705b7476bf5c1d7ae565ddca85983e6bad1fa9f7263259426cecd0aafc3c06151641830e4c5dc2561a76eaf441d60ce6c6 gi-docgen-2022.1.tar.xz"
diff --git a/user/giblib/APKBUILD b/user/giblib/APKBUILD
index 22f125ef3..b6bc48c99 100644
--- a/user/giblib/APKBUILD
+++ b/user/giblib/APKBUILD
@@ -1,25 +1,23 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=giblib
pkgver=1.2.4
-pkgrel=10
+pkgrel=12
pkgdesc="Graphics library built atop Imlib2"
url="http://linuxbrit.co.uk/details.html"
arch="all"
license="MIT-feh"
-subpackages="$pkgname-doc $pkgname-dev"
depends=""
depends_dev="freetype-dev imlib2-dev libx11-dev libxext-dev zlib-dev"
makedepends="$depends_dev"
+subpackages="$pkgname-doc $pkgname-dev"
source="http://distfiles.gentoo.org/distfiles/$pkgname-$pkgver.tar.gz"
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,12 +26,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" docsdir=/usr/share/doc/giblib install
install -Dm644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING
}
diff --git a/user/gidole/APKBUILD b/user/gidole/APKBUILD
index f20bf594f..2cfa018ec 100644
--- a/user/gidole/APKBUILD
+++ b/user/gidole/APKBUILD
@@ -15,8 +15,7 @@ source="https://dev.gentoo.org/~jstein/dist/gidole-$pkgver.zip"
builddir="$srcdir/GidoleFont"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF *.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF "$builddir"/*.ttf
}
sha512sums="adc58657a4ea0331cda6261de293ab997c8d862fd23824f92860710e4a017267835d5c1fbfc6accace20ce172d5586d5f9568de08adf0266a07a191d9499e727 gidole-2.0.2.zip"
diff --git a/user/giflib/APKBUILD b/user/giflib/APKBUILD
index c8f01adce..0d321f2b9 100644
--- a/user/giflib/APKBUILD
+++ b/user/giflib/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=giflib
-pkgver=5.1.4
-pkgrel=3
+pkgver=5.2.1
+pkgrel=0
pkgdesc="Library for reading and writing GIF images"
url="https://sourceforge.net/projects/giflib/"
arch="all"
@@ -10,27 +10,21 @@ depends=""
makedepends="libsm-dev libx11-dev util-linux-dev xmlto"
checkdepends="coreutils"
subpackages="$pkgname-dev $pkgname-doc $pkgname-utils"
-source="http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.bz2
- xmlto-skip-validation.patch"
+source="https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --disable-static
- make
+ sed -i '/^PREFIX =/d
+ /^OFLAGS/d' \
+ Makefile
+ make PREFIX=/usr OFLAGS="$CFLAGS"
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make PREFIX=/usr DESTDIR="$pkgdir" install
install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
@@ -40,5 +34,4 @@ utils() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}
-sha512sums="32b5e342056c210e6478e9cb3b6ceec9594dcfaf34feea1eb4dad633a081ed4465bceee578c19165907cb47cb83912ac359ceea666a8e07dbbb5420f9928f96d giflib-5.1.4.tar.bz2
-36f92cb092ee9dc463aa1b6b9857d1a1591fa5ed6bf973b02385a979a7178cf2c1f7fc75d6474c2fa90c090e9659178ab8cfe6bb3e147425828a1b5a59ca6f06 xmlto-skip-validation.patch"
+sha512sums="4550e53c21cb1191a4581e363fc9d0610da53f7898ca8320f0d3ef6711e76bdda2609c2df15dc94c45e28bff8de441f1227ec2da7ea827cb3c0405af4faa4736 giflib-5.2.1.tar.gz"
diff --git a/user/giflib/xmlto-skip-validation.patch b/user/giflib/xmlto-skip-validation.patch
deleted file mode 100644
index 96573ad6c..000000000
--- a/user/giflib/xmlto-skip-validation.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- ./doc/Makefile.in.orig 2013-07-15 14:59:04.840695596 +0000
-+++ ./doc/Makefile.in 2013-07-15 14:59:30.667643646 +0000
-@@ -379,13 +379,13 @@
-
-
- .xml.html:
-- xmlto xhtml-nochunks $<
-+ xmlto --skip-validation xhtml-nochunks $<
-
- .xml.1:
-- xmlto man $<
-+ xmlto --skip-validation man $<
-
- .xml.txt:
-- xmlto txt $<
-+ xmlto --skip-validation txt $<
-
- all: allhtml manpages
-
diff --git a/user/gigolo/APKBUILD b/user/gigolo/APKBUILD
new file mode 100644
index 000000000..2c472eaf8
--- /dev/null
+++ b/user/gigolo/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=gigolo
+pkgver=0.5.3
+pkgrel=0
+pkgdesc="Frontend for managing remote filesystems"
+url="https://www.xfce.org"
+arch="all"
+license="GPL-2.0-only AND GPL-2.0+"
+depends=""
+makedepends="gtk+3.0-dev intltool"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://archive.xfce.org/src/apps/gigolo/0.5/gigolo-$pkgver.tar.bz2"
+
+build() {
+ LIBS="-lintl" ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="46d93d4c2654a91724208f144098f0a870465823a516339c8455345b5d32be6efe2b7fb13d3e5c89daf2cd919e07e5fcbdc8c8e93bce03c78dbe1907ea5edfcd gigolo-0.5.3.tar.bz2"
diff --git a/user/gitlab-runner/APKBUILD b/user/gitlab-runner/APKBUILD
new file mode 100644
index 000000000..c5b01bd3b
--- /dev/null
+++ b/user/gitlab-runner/APKBUILD
@@ -0,0 +1,86 @@
+# Contributor: Max Rees <maxcrees@me.com>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=gitlab-runner
+pkgver=15.0.0
+pkgrel=0
+_testver=91956efe
+_branch="${pkgver%.*}"
+_branch="${pkgver%%.*}-${_branch#*.}-stable"
+pkgdesc="GitLab runner for CI/CD jobs"
+url="https://docs.gitlab.com/runner/"
+# golang.org packages do not support ppc32
+arch="all !ppc"
+pkgusers="gitlab-runner"
+pkggroups="gitlab-runner"
+options="!check" # Tests require network (git cloning)
+license="MIT"
+depends=""
+makedepends="gcc-go"
+subpackages="$pkgname-openrc"
+install="$pkgname.pre-install"
+source="https://gitlab.com/gitlab-org/gitlab-runner/-/archive/v$pkgver/gitlab-runner-v$pkgver.tar.gz
+ https://dev.sick.bike/dist/gitlab-test-$_testver.tar.gz
+ $pkgname.confd
+ $pkgname.initd
+ disable-crap.patch
+ gccgo.patch
+ tests.patch
+ "
+builddir="$srcdir/$pkgname-v$pkgver"
+
+unpack() {
+ default_unpack
+ mv gitlab-test "$builddir"/tmp
+}
+
+_make() {
+ make "$@" VERSION="$pkgver" REVISION="v$pkgver" BRANCH="$_branch"
+}
+
+build() {
+ export GO111MODULE=on
+ export GOCACHE="$builddir"/tmp/go-build
+ export GOMODCACHE="$builddir"/go-mod
+ export GOFLAGS="-buildvcs=false -p=$JOBS -v -mod=readonly -modcacherw"
+ go build -o gitlab-runner .
+}
+
+check() {
+ # Even with network access and a clean chroot, there are some
+ # tests that fail:
+ #
+ # gitlab.com/gitlab-org/gitlab-runner/commands/helpers :
+ # TestCacheArchiverAddingUntrackedFiles
+ # TestCacheArchiverAddingUntrackedUnicodeFiles
+
+ # gitlab.com/gitlab-org/gitlab-runner/executors/shell :
+ # TestBuildWithGitStrategyFetchWithLFS
+ # TestBuildWithGitStrategyCloneWithLFS
+ # TestBuildWithSubmoduleLFSPullsLFSObject
+ #
+ # gitlab.com/gitlab-org/gitlab-runner/network (error: use of
+ # undefined type ‘RegisterRunnerParameters’)
+ _make test
+}
+
+package() {
+ install -Dm755 gitlab-runner \
+ "$pkgdir"/usr/bin/gitlab-runner
+ install -dm750 -g gitlab-runner \
+ "$pkgdir"/etc/gitlab-runner
+ install -dm750 -o gitlab-runner -g gitlab-runner \
+ "$pkgdir"/var/lib/gitlab-runner
+
+ install -Dm644 "$srcdir"/$pkgname.confd \
+ "$pkgdir"/etc/conf.d/$pkgname
+ install -Dm755 "$srcdir"/$pkgname.initd \
+ "$pkgdir"/etc/init.d/$pkgname
+}
+
+sha512sums="8ba54e690fc45c1e22d174b649fbe3cf78707fd5a146c738c73cba045e6ac00499ddedd7a5f905c0c7e4e804a533d3fc718f8f7ac3c9ec5581de4dd9b3599c80 gitlab-runner-v15.0.0.tar.gz
+7bccab81aa1cb88c6a0f83a6d3dfc509e6f9ecb4d0168a5b30cc4e8fdd823294b95fe3633e09757905466f83bb3bf73b1d28fac475dff2dc3164604db4b5b995 gitlab-test-91956efe.tar.gz
+f8a0c7e77cd563d7e5b4fb2319181ceab8de44c555cefa4803e985ad3ac6a9fea7bca469d80b28974edcfb65f2095d019bfdf0abd8a3221464276a8d89debc0d gitlab-runner.confd
+7f785a65b46919f6a6695e25fdc414ee3204eb9aa1a3735e7884575434af94b20a48f2fe7a1fb787473de23a7bd2d56bc1e9c1fc6b522c6f0c05c47b3d37ab1c gitlab-runner.initd
+020a388f63758ecbcdd19ce3a290d2fd044e852174b6b7e1c79dc39d8d83ac161be5b63df8a9c60da315895e5385e9ac02bd3a46e02d45b96b8f939c90c444cd disable-crap.patch
+6bb477d2f40e651cb59f18ea18cfb051dd06cdfa3f976c6e17b72ee35733e9520a6323cec1f6b34d85fa46050b97bd20d4bb0f08a44f2cbfd4eb6914cfd5d604 gccgo.patch
+9b64665ec4c7f0edb7151b146666ea22283ac109193ff354510da018f14f1442c99707c753e5185caed2eb034600aa93ef5c95d960443339db89696acef96c3c tests.patch"
diff --git a/user/gitlab-runner/disable-crap.patch b/user/gitlab-runner/disable-crap.patch
new file mode 100644
index 000000000..aab6a98b1
--- /dev/null
+++ b/user/gitlab-runner/disable-crap.patch
@@ -0,0 +1,22 @@
+--- gitlab-runner-v12.1.0/main.go 2019-07-19 12:13:32.000000000 +0000
++++ gitlab-runner-v12.1.0/main.go 2020-03-04 22:28:31.741878923 +0000
+@@ -12,19 +12,11 @@ import (
+ cli_helpers "gitlab.com/gitlab-org/gitlab-runner/helpers/cli"
+ "gitlab.com/gitlab-org/gitlab-runner/log"
+
+- _ "gitlab.com/gitlab-org/gitlab-runner/cache/azure"
+- _ "gitlab.com/gitlab-org/gitlab-runner/cache/gcs"
+- _ "gitlab.com/gitlab-org/gitlab-runner/cache/s3"
+ _ "gitlab.com/gitlab-org/gitlab-runner/commands"
+ _ "gitlab.com/gitlab-org/gitlab-runner/commands/helpers"
+ _ "gitlab.com/gitlab-org/gitlab-runner/executors/custom"
+- _ "gitlab.com/gitlab-org/gitlab-runner/executors/docker"
+- _ "gitlab.com/gitlab-org/gitlab-runner/executors/docker/machine"
+- _ "gitlab.com/gitlab-org/gitlab-runner/executors/kubernetes"
+- _ "gitlab.com/gitlab-org/gitlab-runner/executors/parallels"
+ _ "gitlab.com/gitlab-org/gitlab-runner/executors/shell"
+ _ "gitlab.com/gitlab-org/gitlab-runner/executors/ssh"
+- _ "gitlab.com/gitlab-org/gitlab-runner/executors/virtualbox"
+ _ "gitlab.com/gitlab-org/gitlab-runner/helpers/secrets/resolvers/vault"
+ _ "gitlab.com/gitlab-org/gitlab-runner/shells"
+ )
diff --git a/user/gitlab-runner/gccgo.patch b/user/gitlab-runner/gccgo.patch
new file mode 100644
index 000000000..c8704280c
--- /dev/null
+++ b/user/gitlab-runner/gccgo.patch
@@ -0,0 +1,68 @@
+* does not support -X ldflag: https://github.com/golang/go/issues/25183
+* does not support -cover testflag
+* needs CGO to be enabled to build syscall module
+* wants -gccgoflags, not -ldflags
+* don't test stuff we've disabled
+
+--- gitlab-runner-v12.1.0/Makefile 2019-07-19 12:13:32.000000000 +0000
++++ gitlab-runner-v12.1.0/Makefile 2020-04-26 23:58:20.823352305 +0000
+@@ -4,7 +4,6 @@ export VERSION := $(shell ./ci/version)
+ REVISION := $(shell git rev-parse --short=8 HEAD || echo unknown)
+ BRANCH := $(shell git show-ref | grep "$(REVISION)" | grep -v HEAD | awk '{print $$2}' | sed 's|refs/remotes/origin/||' | sed 's|refs/heads/||' | sort | head -n 1)
+ BUILT := $(shell date -u +%Y-%m-%dT%H:%M:%S%z)
+-export TESTFLAGS ?= -cover
+
+ LATEST_STABLE_TAG := $(shell git -c versionsort.prereleaseSuffix="-rc" -c versionsort.prereleaseSuffix="-RC" tag -l "v*.*.*" | sort -rV | awk '!/rc/' | head -n 1)
+ export IS_LATEST :=
+@@ -36,14 +35,11 @@ export PATH := $(GOPATH_BIN):$(PATH)
+ BUILD_DIR := $(CURDIR)
+ TARGET_DIR := $(BUILD_DIR)/out
+
+ export MAIN_PACKAGE ?= gitlab.com/gitlab-org/gitlab-runner
+
+-GO_LDFLAGS ?= -X $(COMMON_PACKAGE_NAMESPACE).NAME=$(PACKAGE_NAME) -X $(COMMON_PACKAGE_NAMESPACE).VERSION=$(VERSION) \
+- -X $(COMMON_PACKAGE_NAMESPACE).REVISION=$(REVISION) -X $(COMMON_PACKAGE_NAMESPACE).BUILT=$(BUILT) \
+- -X $(COMMON_PACKAGE_NAMESPACE).BRANCH=$(BRANCH) \
+- -w
++GO_LDFLAGS ?= -w
+ GO_FILES ?= $(shell find . -name '*.go')
+-export CGO_ENABLED ?= 0
++export CGO_ENABLED ?= 1
+
+
+ # Development Tools
+@@ -137,7 +133,7 @@ build_current: helper-docker build_simpl
+ simple-test: TEST_PKG ?= $(shell go list ./...)
+ simple-test:
+ # use env -i to clear parent environment variables for go test
+- ./scripts/go_test_no_env $(TEST_PKG) $(TESTFLAGS) -ldflags "$(GO_LDFLAGS)"
++ ./scripts/go_test_no_env $(TEST_PKG) $(TESTFLAGS) -gccgoflags "$(GO_LDFLAGS)"
+
+ git1.8-test: export TEST_PKG = gitlab.com/gitlab-org/gitlab-runner/executors/shell gitlab.com/gitlab-org/gitlab-runner/shells
+ git1.8-test:
+--- gitlab-runner-v13.0.0/Makefile.build.mk.old 2020-05-20 03:10:39.000000000 -0500
++++ gitlab-runner-v13.0.0/Makefile.build.mk 2024-05-30 22:18:11.590776424 -0500
+@@ -1,6 +1,5 @@
+ runner-bin: $(GOX)
+ # Building $(NAME) in version $(VERSION) for $(BUILD_PLATFORMS)
+- $(GOX) $(BUILD_PLATFORMS) \
+- -ldflags "$(GO_LDFLAGS)" \
+- -output="out/binaries/$(NAME)-{{.OS}}-{{.Arch}}" \
++ go build -v \
++ -gccgoflags "$(GO_LDFLAGS)" \
+ $(PKG)
+--- gitlab-runner-v12.1.0/common/version.go 2019-07-19 12:13:32.000000000 +0000
++++ gitlab-runner-v12.1.0/common/version.go 2020-04-27 00:57:04.923408027 +0000
+@@ -9,9 +9,9 @@ import (
+ )
+
+ var NAME = "gitlab-runner"
+-var VERSION = "development version"
+-var REVISION = "HEAD"
+-var BRANCH = "HEAD"
++var VERSION = "15.0.0"
++var REVISION = "v15.0.0"
++var BRANCH = "15-0-stable"
+ var BUILT = "unknown"
+
+ var AppVersion AppVersionInfo
diff --git a/user/gitlab-runner/gitlab-runner.confd b/user/gitlab-runner/gitlab-runner.confd
new file mode 100644
index 000000000..05a3ac1bb
--- /dev/null
+++ b/user/gitlab-runner/gitlab-runner.confd
@@ -0,0 +1,17 @@
+#export CONFIG_FILE="/etc/gitlab-runner/config.toml"
+#command_args="--working-directory /var/lib/gitlab-runner"
+#logfile="/var/log/gitlab-runner.log"
+
+# Time to wait (in seconds) when gracefully stopping before forcefully
+# stopping.
+#timeout="300"
+
+# Time to wait (in seconds) when forcefully stopping the server before
+# giving up. The runner can be a little slower than the OpenRC default
+# of 5 seconds to stop when jobs are running.
+#retry="60"
+
+# Run user service (default):
+#command_user="gitlab-runner:gitlab-runner"
+# Run system service:
+#command_user="root:root"
diff --git a/user/gitlab-runner/gitlab-runner.initd b/user/gitlab-runner/gitlab-runner.initd
new file mode 100644
index 000000000..a5f65dacb
--- /dev/null
+++ b/user/gitlab-runner/gitlab-runner.initd
@@ -0,0 +1,46 @@
+#!/sbin/openrc-run
+
+: "${CONFIG_FILE:=/etc/gitlab-runner/config.toml}"
+: "${command_args:=--working-directory /var/lib/gitlab-runner}"
+: "${logfile:=/var/log/gitlab-runner.log}"
+: "${timeout:=300}"
+: "${retry:=60}"
+: "${command_user:=gitlab-runner:gitlab-runner}"
+export CONFIG_FILE
+
+command="/usr/bin/gitlab-runner"
+command_args="run --service ${RC_SVCNAME} ${command_args}"
+command_background="true"
+start_stop_daemon_args="--stdout ${logfile} --stderr ${logfile}"
+pidfile="/run/${RC_SVCNAME}.pid"
+
+extra_started_commands="reload gracefulstop"
+description_reload="Reload configuration"
+description_gracefulstop="Finish current jobs, then stop"
+
+start_pre() {
+ checkpath -f -m 640 -o "${command_user}" "${logfile}"
+}
+
+reload() {
+ ebegin "Reloading ${RC_SVCNAME} configuration"
+ start-stop-daemon --quiet --signal HUP --pidfile "${pidfile}"
+ eend $?
+}
+
+gracefulstop() {
+ ebegin "Gracefully stopping ${RC_SVCNAME}"
+ mark_service_stopping "${RC_SERVICE}"
+ start-stop-daemon --quiet --progress --stop --pidfile "${pidfile}" \
+ --signal QUIT --retry "${timeout}"
+ if eend $?; then
+ mark_service_stopped "${RC_SVCNAME}"
+ else
+ eerror "${RC_SVCNAME} timed out, forcefully stopping"
+ if stop; then
+ mark_service_stopped "${RC_SVCNAME}"
+ else
+ return 1
+ fi
+ fi
+}
diff --git a/user/gitlab-runner/gitlab-runner.pre-install b/user/gitlab-runner/gitlab-runner.pre-install
new file mode 100644
index 000000000..9ef046f29
--- /dev/null
+++ b/user/gitlab-runner/gitlab-runner.pre-install
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+groupadd -r gitlab-runner 2>/dev/null
+useradd -c gitlab-runner -s /sbin/nologin -g gitlab-runner \
+ -d /var/lib/gitlab-runner -r gitlab-runner 2>/dev/null
+
+exit 0
diff --git a/user/gitlab-runner/tests.patch b/user/gitlab-runner/tests.patch
new file mode 100644
index 000000000..0762b6b13
--- /dev/null
+++ b/user/gitlab-runner/tests.patch
@@ -0,0 +1,28 @@
+--- gitlab-runner-v12.1.0/shells/bash_test.go 2019-07-19 12:13:32.000000000 +0000
++++ gitlab-runner-v12.1.0/shells/bash_test.go 2020-04-27 00:07:06.763360621 +0000
+@@ -16,12 +16,12 @@ func TestBash_CommandShellEscapes(t *tes
+ writer := &BashWriter{useNewEscape: false}
+ writer.Command("foo", "x&(y)")
+
+- assert.Equal(t, `$'foo' "x&(y)"`+"\n", writer.String())
++ assert.Equal(t, `'foo' "x&(y)"`+"\n", writer.String())
+ }
+
+ func TestBash_IfCmdShellEscapesLegacy(t *testing.T) {
+ writer := &BashWriter{useNewEscape: false}
+ writer.IfCmd("foo", "x&(y)")
+
+- assert.Equal(t, `if $'foo' "x&(y)" >/dev/null 2>&1; then`+"\n", writer.String())
++ assert.Equal(t, `if 'foo' "x&(y)" >/dev/null 2>/dev/null; then`+"\n", writer.String())
+ }
+--- gitlab-runner-v12.1.0/common/build_test.go 2019-07-19 12:13:32.000000000 +0000
++++ gitlab-runner-v12.1.0/common/build_test.go 2020-04-27 00:23:35.173376249 +0000
+@@ -1255,7 +1255,7 @@ func TestWaitForTerminal(t *testing.T) {
+ },
+ jobTimeout: 3600,
+ waitForTerminalTimeout: time.Hour,
+- expectedErr: "terminal disconnected by system signal: interrupt",
++ expectedErr: "terminal disconnected by system signal: Interrupt",
+ },
+ {
+ name: "Terminal Disconnect",
diff --git a/user/glass-tty-vt220/APKBUILD b/user/glass-tty-vt220/APKBUILD
index 54b89f38c..deb15ba76 100644
--- a/user/glass-tty-vt220/APKBUILD
+++ b/user/glass-tty-vt220/APKBUILD
@@ -11,12 +11,11 @@ license="Public-Domain"
depends="fontconfig"
makedepends=""
subpackages=""
-source="http://sensi.org/~svo/glasstty/Glass_TTY_VT220.ttf"
-builddir="$srcdir"
+#source="http://sensi.org/~svo/glasstty/Glass_TTY_VT220.ttf"
+source="https://distfiles.adelielinux.org/source/archive/$pkgname-$pkgver/Glass_TTY_VT220.ttf"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF Glass_TTY_VT220.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF "$srcdir"/Glass_TTY_VT220.ttf
}
sha512sums="0b3b598bbdcc8f1177b48a7cedd2ad035a8a95d17d162d868e7c988a9d918f2756a8fe674bef3f30357225a87ea4e3adde01889502540d6920210161edc37023 Glass_TTY_VT220.ttf"
diff --git a/user/gleam/APKBUILD b/user/gleam/APKBUILD
new file mode 100644
index 000000000..2e5b8f66d
--- /dev/null
+++ b/user/gleam/APKBUILD
@@ -0,0 +1,562 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=gleam
+pkgver=0.22.1
+pkgrel=0
+pkgdesc="Compiler for the Gleam language"
+url="https://gleam.run"
+arch="all !ppc !ppc64" #806
+license="Apache-2.0"
+depends="erl-rebar3"
+makedepends="cargo erlang-dev openssl-dev rust"
+source="$pkgname-$pkgver.tar.gz::https://github.com/gleam-lang/gleam/archive/v$pkgver.tar.gz"
+
+# dependencies taken from Cargo.lock
+cargo_deps="
+adler 1.0.2
+aho-corasick 0.7.18
+ansi_term 0.12.1
+arrayvec 0.5.2
+askama 0.10.5
+askama_derive 0.10.5
+askama_escape 0.10.3
+askama_shared 0.11.2
+async-trait 0.1.53
+atty 0.2.14
+autocfg 1.1.0
+base16 0.2.1
+base64 0.13.0
+bitflags 1.3.2
+bitmaps 2.1.0
+bitvec 0.19.6
+block-buffer 0.9.0
+bstr 0.2.17
+bumpalo 3.9.1
+bytes 1.1.0
+capnp 0.14.6
+capnpc 0.14.7
+cc 1.0.72
+cfg-if 1.0.0
+chrono 0.4.19
+clap 3.1.9
+clap_derive 3.1.7
+clap_lex 0.1.1
+codespan-reporting 0.11.1
+combine 4.6.3
+console 0.15.0
+console_error_panic_hook 0.1.7
+core-foundation 0.9.3
+core-foundation-sys 0.8.3
+cpufeatures 0.2.2
+crc32fast 1.3.2
+crossbeam-channel 0.5.4
+crossbeam-utils 0.8.8
+ctor 0.1.22
+ctrlc 3.2.1
+data-encoding 2.3.2
+debug-ignore 1.0.2
+der-oid-macro 0.4.0
+der-parser 5.1.2
+diff 0.1.12
+digest 0.9.0
+dirs 4.0.0
+dirs-sys 0.3.7
+either 1.6.1
+encode_unicode 0.3.6
+encoding_rs 0.8.31
+fastrand 1.7.0
+filetime 0.2.16
+fixedbitset 0.4.1
+flate2 1.0.23
+fnv 1.0.7
+foreign-types 0.3.2
+foreign-types-shared 0.1.1
+form_urlencoded 1.0.1
+fs_extra 1.2.0
+fslock 0.2.1
+funty 1.1.0
+futures 0.3.21
+futures-channel 0.3.21
+futures-core 0.3.21
+futures-executor 0.3.21
+futures-io 0.3.21
+futures-macro 0.3.21
+futures-sink 0.3.21
+futures-task 0.3.21
+futures-util 0.3.21
+generic-array 0.14.5
+getrandom 0.2.6
+globset 0.4.8
+h2 0.3.13
+hashbrown 0.11.2
+heck 0.4.0
+hermit-abi 0.1.19
+hexpm 2.0.0
+hostname 0.3.1
+http 0.2.6
+http-auth-basic 0.3.3
+http-body 0.4.4
+httparse 1.7.0
+httpdate 1.0.2
+humansize 1.1.1
+hyper 0.14.18
+hyper-tls 0.5.0
+idna 0.2.3
+ignore 0.4.18
+im 15.1.0
+indexmap 1.8.1
+insta 1.14.0
+instant 0.1.12
+ipnet 2.5.0
+itertools 0.10.3
+itoa 1.0.1
+js-sys 0.3.57
+kstring 1.0.6
+lazy_static 1.4.0
+lexical-core 0.7.6
+libc 0.2.123
+linked-hash-map 0.5.4
+log 0.4.16
+lsp-server 0.5.2
+lsp-types 0.92.1
+match_cfg 0.1.0
+matchers 0.1.0
+matches 0.1.9
+memchr 2.4.1
+memoffset 0.6.5
+mime 0.3.16
+miniz_oxide 0.5.1
+mio 0.7.14
+miow 0.3.7
+native-tls 0.2.10
+nix 0.23.1
+nom 6.1.2
+ntapi 0.3.7
+num_cpus 1.13.1
+num-bigint 0.4.3
+num-integer 0.1.44
+num-traits 0.2.14
+oid-registry 0.1.5
+once_cell 1.10.0
+opaque-debug 0.3.0
+openssl 0.10.38
+openssl-probe 0.1.5
+openssl-sys 0.9.72
+os_str_bytes 6.0.0
+output_vt100 0.1.3
+percent-encoding 2.1.0
+petgraph 0.6.0
+pin-project-lite 0.2.8
+pin-utils 0.1.0
+pkg-config 0.3.25
+pretty_assertions 1.2.1
+proc-macro-error 1.0.4
+proc-macro-error-attr 1.0.4
+proc-macro2 1.0.37
+protobuf 2.27.1
+protobuf-codegen 2.27.1
+protobuf-codegen-pure 2.27.1
+pubgrub 0.2.1
+pulldown-cmark 0.8.0
+quote 1.0.18
+radium 0.5.3
+rand_core 0.6.3
+rand_xoshiro 0.6.0
+redox_syscall 0.2.13
+redox_users 0.4.3
+regex 1.5.5
+regex-automata 0.1.10
+regex-syntax 0.6.25
+remove_dir_all 0.5.3
+reqwest 0.11.10
+ring 0.16.20
+rpassword 5.0.1
+rustc-hash 1.1.0
+rusticata-macros 3.2.0
+rustversion 1.0.6
+ryu 1.0.9
+same-file 1.0.6
+schannel 0.1.19
+scoped-tls 1.0.0
+security-framework 2.6.1
+security-framework-sys 2.6.1
+serde 1.0.136
+serde_derive 1.0.136
+serde_json 1.0.79
+serde_repr 0.1.7
+serde_urlencoded 0.7.1
+serde_yaml 0.8.23
+sha2 0.9.9
+sharded-slab 0.1.4
+similar 2.1.0
+sized-chunks 0.6.5
+slab 0.4.6
+smallvec 1.8.0
+smawk 0.3.1
+socket2 0.4.2
+spdx 0.8.1
+spin 0.5.2
+static_assertions 1.1.0
+strsim 0.10.0
+strum 0.24.0
+strum_macros 0.24.0
+symlink 0.1.0
+syn 1.0.91
+tap 1.0.1
+tar 0.4.38
+tempfile 3.3.0
+termcolor 1.1.3
+terminal_size 0.1.17
+textwrap 0.15.0
+thiserror 1.0.30
+thiserror-impl 1.0.30
+thread_local 1.1.4
+tinyvec 1.5.1
+tinyvec_macros 0.1.0
+tokio 1.16.1
+tokio-native-tls 0.3.0
+tokio-util 0.7.1
+toml 0.5.9
+toml_edit 0.9.1
+tower-service 0.3.1
+tracing 0.1.34
+tracing-attributes 0.1.20
+tracing-core 0.1.26
+tracing-log 0.1.2
+tracing-subscriber 0.3.11
+tracing-wasm 0.2.1
+try-lock 0.2.3
+typenum 1.15.0
+unicase 2.6.0
+unicode-bidi 0.3.7
+unicode-linebreak 0.1.2
+unicode-normalization 0.1.19
+unicode-width 0.1.9
+unicode-xid 0.2.2
+untrusted 0.7.1
+url 2.2.2
+urlencoding 2.1.0
+valuable 0.1.0
+vcpkg 0.2.15
+vec1 1.8.0
+version_check 0.9.4
+walkdir 2.3.2
+want 0.3.0
+wasi 0.10.2+wasi-snapshot-preview1
+wasm-bindgen 0.2.80
+wasm-bindgen-backend 0.2.80
+wasm-bindgen-futures 0.4.30
+wasm-bindgen-macro 0.2.80
+wasm-bindgen-macro-support 0.2.80
+wasm-bindgen-shared 0.2.80
+wasm-bindgen-test 0.3.30
+wasm-bindgen-test-macro 0.3.30
+web-sys 0.3.57
+winapi 0.3.9
+winapi-i686-pc-windows-gnu 0.4.0
+winapi-util 0.1.5
+winapi-x86_64-pc-windows-gnu 0.4.0
+winreg 0.10.1
+wyz 0.2.0
+x509-parser 0.9.2
+xattr 0.2.2
+yaml-rust 0.4.5
+"
+
+source="$source $(echo "$cargo_deps" | sed -E 's#^([^ ]+) ([^ ]+)$#\1-\2.tar.gz::https://crates.io/api/v1/crates/\1/\2/download#g')"
+
+prepare() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ export CARGO_VENDOR="$CARGO_HOME/adelie"
+
+ (builddir=$srcdir; default_prepare)
+
+ mkdir -p "$CARGO_VENDOR"
+ cat <<- EOF > "$CARGO_HOME/config"
+ [source.adelie]
+ directory = "${CARGO_VENDOR}"
+
+ [source.crates-io]
+ replace-with = "adelie"
+ local-registry = "/nonexistant"
+ EOF
+
+ echo "$cargo_deps" | while read -r _dep _ver; do
+ [ -n "$_dep" ] || continue
+ _dep="$_dep-$_ver"
+ ln -s "$srcdir/$_dep" "$CARGO_VENDOR/$_dep"
+ _sum=$(sha256sum "$srcdir/$_dep.tar.gz" | cut -d' ' -f1)
+ cat <<- EOF > "$CARGO_VENDOR/$_dep/.cargo-checksum.json"
+ {
+ "package":"$_sum",
+ "files":{}
+ }
+ EOF
+ done
+}
+
+build() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ cargo build --release -j $JOBS
+}
+
+check() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ export PATH="$PATH:$srcdir/$pkgname-$pkgver/gleam/target/release"
+ cargo test -j $JOBS --release
+}
+
+package() {
+ install -Dm755 target/release/gleam -t "$pkgdir"/usr/bin/ #805
+}
+
+
+sha512sums="ef1477aca23bb45e6b308578c79930d9d591574a76f23b25f96b5bc6185a2dbe2229ffda73ede19545d130802073bec44de35c6e941b89a81eb3b08bf93dcc03 gleam-0.22.1.tar.gz
+7ab190d31890fc05b0b55d8e2c6527a505e06793d5496be0b3831e0513412f9ba97f8148f6f68ed0770fa9cd980a5092d885e058becf1d5506b7c74b82674aa1 adler-1.0.2.tar.gz
+7a23b16231a90d23ee60ad4c81bc225410599a4560d33d3a203138fc540c39cf1000100fed3aed40dcc371c3635656a3792545dca5dd1aefbde00d8774eebd00 aho-corasick-0.7.18.tar.gz
+b840e28b3e7700689a69a39659b1e066560078dd4a58326b91a028915819e7af883399ee53e920db68fd974c58d35bb1ddf8d427af5937d5f696f57c4376b671 ansi_term-0.12.1.tar.gz
+1896b5f64b4dbdcff8ad234bda4ea8129bcacf87839347304717e94ee9f369cf5f4371755e453ff7d72817edb8f7fdbc726d77cc4f28ed05148dc89c7714b004 arrayvec-0.5.2.tar.gz
+c54ee508313e1d9a40c729df52329c787e2512798b148cdf49a1d431179a82fc4f0748572c6fa35cbf3e068f04adce4e020c0c07cdfefa5f5fe41a009c914d2e askama-0.10.5.tar.gz
+9c4d0115206c69c27151849010057eac60acf159c965af9e5ef0bb023730e17a37295706b717bdd34b2be4571d0a1dbb3bbb1bbe63bfc8b56e14f7d79c37758c askama_derive-0.10.5.tar.gz
+1978add567021fac7f086b6091c97de81919877726455828164642c55607d5b5f6f01c0187f8a8a3371c9b3a1ef41f4c3c9e14d9068826c38ee8a6efe2eeb5a2 askama_escape-0.10.3.tar.gz
+1010b6cdd29e82a4585581b69b730b05f478e9c65acd6d9838637b323309827f013ca2604b08ff93e42e57a0a11ced83e12c209985a87929b3d7e9a4a83779a7 askama_shared-0.11.2.tar.gz
+33fac59f2329997b3b17b076f816e32cd667f3317b324b74e1bf4ea28ef1d3ed53572316f9e034d1149cb8456dcb29e78474426aa04c42fa8bcb0dcf1da53763 async-trait-0.1.53.tar.gz
+d7b6c4b9a0f898d91ddbc41a5ee45bbf45d1d269508c8cc87ee3e3990500e41e0ec387afb1f3bc7db55bedac396dd86c6509f4bf9e5148d809c3802edcc5e1d9 atty-0.2.14.tar.gz
+df972c09abbdc0b6cb6bb55b1e29c7fed706ece38a62613d9e275bac46a19574a7f96f0152cccb0239efea04ee90083a146b58b15307696c4c81878cd12de28f autocfg-1.1.0.tar.gz
+673ca1e01af6d168836e43b6b1542f53f2fa96ac88fad4758ef85dbc72cc629d2968b472ff36ff0cb59cd5d896839da6e08564716faed93878b63c52d2036749 base16-0.2.1.tar.gz
+991a72999839daa232f508c5b24e7d3225e8a26db8d1d0e747881b115af9e408b92374e163b31e0b0d324c1c2e57e8e38d66861b61eb0a1dba87bb5871940151 base64-0.13.0.tar.gz
+3c698f757b5cc62f815f9a1cce365c3d2dd88e4db71f331dff8bba86c2865f755b81cb4c9bfc59bd86b7643b0943f9e09a7c4f8ad75eb2ab0e714803d0129f62 bitflags-1.3.2.tar.gz
+a423ea009bf61629e6dd7cb954f2781dd3c578d2216cd843957e0db05abc8f8c5971d2cca1915929b2b3c7b712450c817bb1de8d08715a1ca2641ace015a1dc7 bitmaps-2.1.0.tar.gz
+b0ff49814a0197e7be7dda7b0781fecf9b02e7ba0301769a89cf236c981736236263bdb5872afc711731d2c84cf8fe696b0dc4e284d24d399675f4ecc6ab7ea4 bitvec-0.19.6.tar.gz
+2d0f8908f59d4b1cccd1fbca0c1fa3cc4b224f09549669b28a16af5acfd4369b66851e9be8d65e1df71be998fbc42fc130ad32b71e035d6055724e8fa31fbf98 block-buffer-0.9.0.tar.gz
+883eac8210d14f89517b4dd5e25d02c97cf31602ec74498b5e186112ba0f154d47de8d1c41a8f4e5503f3b53c064e2c976b60bbfd63fc28b186bc006e00f20c2 bstr-0.2.17.tar.gz
+40bf3f0d261aaff1f7c30a539953b9c14f4526f05586af0dbe2e4df4cc042cbe6180e3dcc2fbc6f1802e694066f72e629e74de40bc2951c5527edaf551722a52 bumpalo-3.9.1.tar.gz
+d34441ea146ccaf55da4d5c645f8ffbd008eeb3204dafd5961771abc85df52751dfd1af3975fb5c91eb83d9a43da4f3589bc3aa07c8d715906d8158f3092af2d bytes-1.1.0.tar.gz
+978ca1dfc14a67b09b033b4a2b1a0b6f3fbd1cfac86a3a08b9fead4613a01e9c153caf89858aef89303753192c62c99e4db754d128e1779968b1f3574a289049 capnp-0.14.6.tar.gz
+e52ab76dd7ef71cdd1fc26bf1fd3005271151cec6f7312bd611a0466428e049968689cbe65f4c41f86295d6e0029a34a385de5c84b2addcd8b13fd6de91571ab capnpc-0.14.7.tar.gz
+e9a5b283b2a1fee1030009068c1f87291ec1dab7584a0892f27cc7e523c8fdfd5d986281d9aec1a00af706af1e61d7e64c245c74be7b39c8c022ae2d4f87de8d cc-1.0.72.tar.gz
+0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff cfg-if-1.0.0.tar.gz
+a119349bfc2243a249f1d18b1ae548a04b30fecb75913a56f26d1ff8c0eb53097a2674d9141e2094018191cbbc1620843fbddaf52999824e077c1157f0907980 chrono-0.4.19.tar.gz
+125da7c3a7471e2fee0877e3a1bbce67d2d2c4459bf11633fa825e701b84e016d46497ebef7500686c42e64cbd1f7229f2a27f7d75c82abc06d2a4e768f60f90 clap-3.1.9.tar.gz
+7f34c1b7c67bddbdbc1b159fcde366babe37f355637cc1f12748a51d0ecf89ce3e6aaf5ed140aae6539f12182ac8e2ca93c2790ea2dc84657487066c9d77a869 clap_derive-3.1.7.tar.gz
+4d7667fb4cc86fd820262c4642c37a073e558ac5c05e1a8efc2813f54c364e2c4e980a8ddd81e72b11b02f494b20ad89c77e9649d1a6c0ed418194db808f1383 clap_lex-0.1.1.tar.gz
+0869789f5c50d3523d3ee16a8fe64756498a13704efbe82bb0845eaa87c7b6b1d075b3b6b80567cd9fce6cb09c5179e9c07e485fd17ce56c8139ade0f8bc6844 codespan-reporting-0.11.1.tar.gz
+495f9703efc2b9271dad2fdd2626aa9a1843fd3e10e63d0c8b9e42d4c7e3137a4740aa476c0206ad8dbf2683d0eeafde36f70581bdeb30299fa08e077f9183f3 combine-4.6.3.tar.gz
+70bd6abfafa533903f273ec3b34da6783856bd1abedaf139fddafac0dbb03fa9154f8e1e1bef01fd8de3c53100bbaa93313518c42f8ce51217c23ef34d3f9d62 console-0.15.0.tar.gz
+49f4fb2175c0068981678f291422ace3737dab7033b1a49d78fd821512c92fdd023c3fe28c7daed88c8f338c30a9c7f82f18bb4583c3fe7839ad8dcd0addd6b9 console_error_panic_hook-0.1.7.tar.gz
+de07967c4f5e2d2e730b6f21984c228dad2cb2f55187f13074a2200f4ce9f906763ee818267a9c67ea560229db7363473b230670a6dbd224fc335f32ba03d072 core-foundation-0.9.3.tar.gz
+a3ba3184cef65dafe8318c4db7e59eb2749dcde7b2370ad20272b0735ded0032daf2de3fd0cf55eb48448a335f5b81e8e745f2a647f9a43bb85946ce714bfd82 core-foundation-sys-0.8.3.tar.gz
+a771a86e2fa26033b27d22fe250968cd80cc64031838d1c111ad5c69951d5f29de0cad375965c7c2cbceda2a005dedaf6df15c699041c9d0cf65a1c2033f69c5 cpufeatures-0.2.2.tar.gz
+a683943e252afdb1b9d626a07533ed11cf7a63af603c19640056c5d2b9c884ad9aff33ac54c0853ffca2f6cf94b0730eae6c05abf3e53e55e709d180c8152357 crc32fast-1.3.2.tar.gz
+39b17dbaefc15d7faafca4ae6b060665471d384956aca7439fc407ed2632bd458e473efb62b74629b42a5f3d237e13503d2084cac6f6b3f42b9e03aa1fde0982 crossbeam-channel-0.5.4.tar.gz
+ab960afdb82863160a3fa1c21c64b35b3112725bd72fc8e0724175937f4b23d0628253032229501938cd86a8e406a59c06cb44e8bdf34619de781a84ebb46ea0 crossbeam-utils-0.8.8.tar.gz
+cd7c60dae8fb19c3b10e0bf1ffbcedac90cbbd147d564335e4da2d5483f64ea3dc10ad17d7573b00958db0a72cce45f8b7bc10c32864dd943fe64df8d22aaaab ctor-0.1.22.tar.gz
+7305e97a3f161db942ddc194d14f670087f88e3ccb5b94114fbd6afba04b4ac1cb063cf87ccf6fdf4678bb667b02f3cb2e6fc1ca8bc47b6ed8e36620cc4a1a8b ctrlc-3.2.1.tar.gz
+b62d0c9a937df59f3c84d4c27bafdac9088370a250d3b85e259258cb0843ee32ccd0a9fb1a01ecc5929dcb22e36bf82f7c1edbc9981acec70f5a1a01f00731c4 data-encoding-2.3.2.tar.gz
+abbfb428e31e6665755566db36d76d4fd065c41d4f7abcf9290a17d3274a0706683a89aa9b5db03c889b3611a0063a88786f91245c15a39c28a11fc07cf9e9d3 debug-ignore-1.0.2.tar.gz
+2ff5466fb641aa4585be0f600d97a5fd9ab5c9a1a7ba001ccd7bbb29f48d82da44e74b4a5104f9cf5add249d3e3094b8b1801d91f05beadd6b28fb3a8f548106 der-oid-macro-0.4.0.tar.gz
+b9ae53209d81c9df5d55e01ce16df06d9a2e543c47f44e3797d09412cfc00910b37e82649640f6eda38dd354f9ed91185667ca0ed90c501f14715ab9fa52773f der-parser-5.1.2.tar.gz
+0e81331c0424e9369963e23894a6412b65a3ed4f3154ccc184fc84cf1c5985b81c586a6b34e8c6c0e5c3afba38fb15277cfd89e7f50c85bd5d8d4d24ba670d16 diff-0.1.12.tar.gz
+8637a322c429f51ecb0fa4c3b58fabef01368c1a093492fad65f48eeeec2366fd1b7876e6e47723e089ec5ce11f881bfe4dcebdc605811252b797db027746a45 digest-0.9.0.tar.gz
+be582e5045f1916fb6b918c8e8c5907b4b663534025e4227ea4828e2aa9fe7fbcb3c48f1f0d08d163ba684aa4404076ac210e7f14766a09b9ed89a2825121b3b dirs-4.0.0.tar.gz
+e630964e4c452950a475c10a490b49b2979dd7dfda48172b905cc789153ae4a0ba2d7d91f690705cbfff23737c4b4a339eb0c49e922efd7d68a92fe6368a929f dirs-sys-0.3.7.tar.gz
+4bfe56920e30cbc8eb4f90162db618f7dca653b42db35ab6a7045d3fd9a24ceb1778b1f79613850bdb1a87ad3794fa0d73015e46c48d513f368d8c3776fc9ddf either-1.6.1.tar.gz
+64193d6ac75f66d58ed864169b5d6228ede36dcf100614395e086bc8e847a3ddd287734d88e8ed50f38c679a99c80ec68449175a67d8ee03b02ec1cfa9d55e77 encode_unicode-0.3.6.tar.gz
+a9e582ab63d00bfd17c9f813f886c5908279fe4d23cdd70f79580931f3a0479162b78210a27b113a7bf6fbc4f8d62bbf098ef645d598fe0eaa428639c35cec31 encoding_rs-0.8.31.tar.gz
+6a1a8cd4f6f9bfff07a4ca18ef84839e4427ca9bf9b6733bb15b1b70cf2439820d6a770ae9f3e5e10166a6144449e37e6f3f6ed9acb761688207fd7c53d2c673 fastrand-1.7.0.tar.gz
+4c6277f43b2de6432769353615406af824295742e5604b40c2673acc2010b349fcbba201e7273756857938256f1693a515f3b9145f34405a56cd23af4dd30222 filetime-0.2.16.tar.gz
+8c53515f1a372a2626e83bc6999adaa00be6451f68627a63e0207ce6a8967e9cab6061adde3e33305c700c472be750903eb36b6f5ce071248db461c0af450b33 fixedbitset-0.4.1.tar.gz
+01f84f0d4d0c06aa0c807e5ccb418a5675d88d568694f74aabec8ee06c74e6b75c9c28fbeba2a99fe74b00bd29e71b9aa2df0d96da85beec76b3a30b4d044fe9 flate2-1.0.23.tar.gz
+2195a4b34a78e2dd9838caf0ee556bf87cbb4a8ef5505aac663b614eb59dcfc0c40f432463ede41ecca57bfe7711f72673d39a85fe03d426f1324097d5628334 fnv-1.0.7.tar.gz
+bf27b8243ed482c202d120383374f19ff09422535e24b9c1aebccc66529bf300ca17b8bbc76d67f98ac092e614497afe3add9dc68aa69c93074df05762f91232 foreign-types-0.3.2.tar.gz
+bafdb2143e136fb0818e2ffd90b5c862b7181647d6568947d4e4531012bbf7a57b597221ec7056c1b562dfc0c3b5dead26d1a4111ebc15e7863737a873518a4a foreign-types-shared-0.1.1.tar.gz
+3ab371c223561a27ffbd35cf648ef4a9145d47bba9d71900a7c54cfc2f089175e9361f6352331a9a7fa018923b15e7a3553c8f9ff9fae80e1626e641a5faff68 form_urlencoded-1.0.1.tar.gz
+66670d624394874d7f786f8d362438c53f5b18008909ab8e7a74e82518dbc189e37588836f05f19dcd4718f4c1a5296fdf274380d574b1f475e28891ecdd6c91 fs_extra-1.2.0.tar.gz
+89f69658457994697f090c5ea090fed0699d032e2fa66fdafaab12d545ad6d21a324912e7132dab02e2bb1a09fc7b72d6562004c0321988a0b34332542f061f4 fslock-0.2.1.tar.gz
+771f42f601a0349a8e9344c8df552491c64af350b18eacc99463e972335d4a4c95416704ebf49e904503fb2d6f78bf201c8cb82fa20bfbf460ab1e7ed9f94a9e funty-1.1.0.tar.gz
+723fc190e4480fd812a852656fa6509a188f0d06adaa1c22ef24ec4afa7688a1c5d3961e5747f0812d073fc672b0e084af6ad5e5c3fac3ea5829466f993ad865 futures-0.3.21.tar.gz
+1c10398657949b53b6df196cc44d8e4b3acf53b4d216be6f5f631d8d4b500f5c344e2cc7d5a5642ced6c5480511884611be6d429f56a0ede4a716b9c5770cb76 futures-channel-0.3.21.tar.gz
+b60e7892436ae28fd2240f17816f934f6caeac663d67b8efc7d519ebb4b0bd921f0b732b6176bd4b472d2fbe346d39a37ba394401e15afa93af8294ceea90976 futures-core-0.3.21.tar.gz
+597732f96b45ce21f7a0b149f62cbdc54a80010bfa5421ab0ef7345c501c197e1c8fe109fa2d1c813d5c2e872b4670e0fbd96e2572cc3e9d2646b68f41c78147 futures-executor-0.3.21.tar.gz
+dde0b79c4ba208b4c92c699457efbd515d331ab612e7b7df735b3b8f2ab79c012b1ba329ddaf488d68c69dbd119aa231b833b81cbcc0cc2f55c656f68dc22bd8 futures-io-0.3.21.tar.gz
+a79d4d3e487d05554e05e04f3a631fc9f0b5c525126eed550ee30eed16d4c457dc39274efac53558a3e33a119b8ff9d3552ce367359eec9d05105b278f7677c0 futures-macro-0.3.21.tar.gz
+9bc0198495b5a1b3ed25fcf7b053a235bba0a43a4226bf085d9027537a57add1686ef61179bf2a2d4189945cb5a05a8d64ba6e6e647c56245666d51e138d113f futures-sink-0.3.21.tar.gz
+8f3b27865d8c7a290471903297e3c0b52caebfaa55550a4738d7915008b893fce67c7d9ae5c5bd03f2a42ee72a96aa0245c4bee70fc06977b3493eb81bca2033 futures-task-0.3.21.tar.gz
+ff952fb74a54e793de943e3aee2ac771357bf9f1aa5de89af128868c46a6b44e414fc4ea97f2d9b201ff7ff41023e119f1adf90d314343ff53ab987c3e07f5d4 futures-util-0.3.21.tar.gz
+30c86b24222503245b494c5f88cdf8115ba08c73df55930bb01bafcea22560f4d20e38c348c3896d6e1ef03209cc1571745881b4a77fd28f66b0cc435f5249a2 generic-array-0.14.5.tar.gz
+3fca26198bbab1a9e189fb45ad6cc7c7a18969eed6f68ca43407a2d463fe004955b1d199c1794a23a53ba21fedb61eff86d380d2bf49bfdb6c7055c11d543096 getrandom-0.2.6.tar.gz
+1a1fb9731d310ced63742b2c6f7ef7f414c89780751d9881859a6e6fbc512e91bc23c91e3743bb36114dcef6dc1962fd376d67bc536752ba6a8a2fda7aa80bec globset-0.4.8.tar.gz
+480484b75b22060146fe373a61136585bb71fade1a99231de4bdd123ecd11e4a3237e7d8da1b952556b7e832f1d6299bf4b833361368a243cce4c23c53ea26dc h2-0.3.13.tar.gz
+c21ca68fd49bbb741901f59fed04cc124b8da99e2a4dfc26e2e5e1140637872b344612a01691bd30cc771575c571be15f756c84dde225441699cd2322af2ad6c hashbrown-0.11.2.tar.gz
+33bdbf4ff9ecc4f4d74cf06590e056f4d96bf0d990d5381b9da5b65682b2495ed74e27b45419c2afa986c1f6200909d5175b137ae73ced5cc8ac869e4e1bce8f heck-0.4.0.tar.gz
+1c877fcd562b15d2de9c151fd6c5f3ea4bf48abcb799e6139a180ffad5d64b632f0000d5707bbd92ff23a0e5f349157b9e0f5be8b50f03680b0fa47315dbb78a hermit-abi-0.1.19.tar.gz
+812419b6d0be7aa8a21c51db687be87a77a4b3765970e6bc4a64f4ada63f99b3026a09707e3613bfc63567f2a7d060d173034af7bf022ed3ec5a6ffdc666c3a7 hexpm-2.0.0.tar.gz
+a90407996353c9bcf5b76be03713e3a0455ac80a50892e77a508744cf436a938ddb87ef97d8cc91ec7dc4353cfb7bca0fd28c90a72f8a9ecd4f29220d174edf2 hostname-0.3.1.tar.gz
+ffafa748077a1122d3f7f1b9f34da43f5923dc8cf09b7b492d286d8a924b3fc9949c3df5bebe358b11801adcea8f20d8e8986eeda1e63a2ab92d4ed1fe0e6746 http-0.2.6.tar.gz
+a08db96170cc8683e8bb72a80b0872e5b8017599b5215b5c1c32b957de1d58fe838e445fdd9fdee0c70159ef0b3f8a7820294d2b6ea89298481d1cc2a768eb26 http-auth-basic-0.3.3.tar.gz
+cbfa91e31e91807f004df77a9d8999b1224f862d4765ba92ad4d34d288fcab67372734295f30760a96eb32454d78fc527c6519eb45b484e341617686e743381c http-body-0.4.4.tar.gz
+eb24d0ebbd78c1d76a8b8b46fdf0876b8893cf1977adc73038e6a4b4d7ad6280f97fbbe8c92465fa34d6696d0a40288f41795df7cf15733588d1bfa8dfed8584 httparse-1.7.0.tar.gz
+4d650dbe7ec1d0f457bab71cd009fd92ee296fbe0a6b0c0ce4d71aa3bee720094a03968c08e542be60869350e05b4a1739542c6415e401407345f5643e15f8fd httpdate-1.0.2.tar.gz
+90b25500014d7ff541b6feb496ebb25ffbf0bbdfc3ea80ce3b3a1597d08c2cea9b967c674e261d3c8c3587d3481da8d899cc5e3fb05b22c55f90e178508ebeff humansize-1.1.1.tar.gz
+9415eebfdbe3795488f57e6628ccfee4195f7b04ab3beb3fb5a0768f546322c2528f482838107cd32e2d71d1f562c8b2e6b34d94a6e7f1bbd049b44ae5cc41b9 hyper-0.14.18.tar.gz
+45dc16cc9ce48706e0b3575dca35ba1b6b3084dda8c2cc489d126e1c4f0bb96a9b2baa860d09f68c5e0a48c2a69e3eaf62f4f0406fffc4efefcd79d26c82896e hyper-tls-0.5.0.tar.gz
+1278bd561ce329e1dc7a6f24a10f83d9a068af5d15a088414f3921c6728b0d54f4d60d6f4d0d5a786596ad226263e1e50c3842f192d5758aa4665ba4ed5c269f idna-0.2.3.tar.gz
+5d11a2415f015cce6ce72aa3d08a7cfb645ee7f1845b3445a924a92144438f209c992cc15d4ede3099d1eebe3fa28bde4e0eef1a3fbcb9dbced19a42051d21be ignore-0.4.18.tar.gz
+4828019927645e15190347ca79566452fa910a96f4a9f20cb7f2dbec2ad71a820a906ee5078810bc71355b9e7e0c2a42108b96aa7451a81b5caa74e476e99750 im-15.1.0.tar.gz
+919372d9bbe791092ca78026ea6f7f6b6560b5c011682b21afcfbbc76684a18844602545a527e3342e2b787643b1c07c8f18f2279535b7afdf395361c9a8749b indexmap-1.8.1.tar.gz
+1c9e683baca90b3a238204ae46bde28d1f32cffef84a2f4793e82285955e8412496502bcf165c45fac5b64d22b1e2f843d9f57294d615703101b147e8ba5028e insta-1.14.0.tar.gz
+fae494c00111c51c840f9dd6a10febe403e27ebb933dd16633a213e9c20f2bc11adeb431c71f8a6713bf88f270a010941e15d83df294e658791934f83a5d2407 instant-0.1.12.tar.gz
+40c841c71694d47f77757860c62a1b109bfb2e2d490e9b6d441d39116f7bda57e7be866d25348c1afb522f4b1caa75122fef79dfe9e3fec824345f3cc54376f9 ipnet-2.5.0.tar.gz
+9d17357eb68159edf4f4ccd2eb9895672c7fb633803166d5e24ee12350639eaf66f1c822910518185cd1f1ca5d9c3e228dd37525e6c337ba3fc7ce967f9bfc85 itertools-0.10.3.tar.gz
+8e7bc1e9bf4fc06871b9fe20caad4e0af965477d724f4c8d0e2a3a4d87aedf99f92e4e583a6440ce574d0fb43fc9d6a2e80add52a2f64210c6aa3b402e424295 itoa-1.0.1.tar.gz
+797865ba4c40bdd338ea3b980d6f7139b580a12057437319d3427da6c5045455e0612461289ecbd6ed445e8b675369a8ce77ec8ac0383c8a800a7fc84606ac2b js-sys-0.3.57.tar.gz
+e1920ab6da39e414e0f89e0728a1993a516d201149a922e58a326c5392891919746891a61847f0c56b67d9ef5d3bc346cb00b2da1325191dff7d9661a5a12ba4 kstring-1.0.6.tar.gz
+e124c0521ec7c950f3c4a066821918da7a9c6e711115d98009ae7c351928fdddead852e7596fea5937a9c30e4e4ce8eee7099b20248b5d6e3b2494b6a6d88cb8 lazy_static-1.4.0.tar.gz
+fcd7e4e073e6440183284f20a6305bbe4aafb5513a20b8ed793439e4b5a5519532a0605f31e42539f3e6236003254812b459a9b9c47b3c449f5c582dd62c3172 lexical-core-0.7.6.tar.gz
+527c89b84d9839a240653fd2e66941f8fdd82f01ed70aa5451073d3480a56e6daf53e3ddc077a9884bfbbbc69510cea672c74c9c818e914d4414cbc7ec0e3f9c libc-0.2.123.tar.gz
+2938883357ec0e7d9c9fc5746063ae419c97250ddceeb8de3480c89e97e0a29d175cc9199bdb3ddf81cd5d6a2a1e319ee1644a7309eea96058221074cf87c0b6 linked-hash-map-0.5.4.tar.gz
+b12dfcd8bec2f44864b8174776d3151ddf1fa1d82bc8a54fb155d5af3b2af959aab4899d72835a3c25cf58d6c41cd7f1b16c2accbdc20a0eba7e8be3d1883ee1 log-0.4.16.tar.gz
+deac4de563a8f1fd4bf475f62b6597946ff287a4000b17f6e7736b2d30b5837c17c6dee0f41c0b0f9b4f6f76ac56dd587471168663f38711bbb95cdc1c5e6129 lsp-server-0.5.2.tar.gz
+8ceba6ef2fbeb22deb1838e6f642580cff5438916bd2d9ac5fbd2383a62b0b6a8ff8ebace73f07502a15b6b834c2acb916bed7ba7fe23a7058baacf5b22631df lsp-types-0.92.1.tar.gz
+fd36f2b128d70a0f278e708bcb3274d90380229f754aed7ce9b808138b0189d5e1a07e0ba732216f788a530cecddcdd980559b3f71efa371d8805a213ff8f2d6 match_cfg-0.1.0.tar.gz
+84214c1a84952d85631aa1ab5115df7cda223ac64e2acf055b6129ba1aa26ddc87615a8b51ca890ce3fee0419053fa7fe1599ae128f1d211b58c07b0c4af3b19 matchers-0.1.0.tar.gz
+6a2809687d30ff04ea97bf9d1610d746e097699a4c3625ffd1b7b1e4a9673ece9d559058c9f760b99d6ab509024f7b338e7cfa6fe767499c983efa98bfb98305 matches-0.1.9.tar.gz
+d8912e3902a2126f86159bdc998532a2890b882cbb7d59b5a470fffcad4c32281e045f2fff48a235aa4189f1928866bf3d33b699d50866ad6b6c272bba7adb11 memchr-2.4.1.tar.gz
+11bdd9185b99dfee8e659e051b09ee301c7142a372a8117864745a5085c015436d2efbb1478192886f09cbc562529e209d2e3325d94938a64bc75b1d91d2bf3f memoffset-0.6.5.tar.gz
+cb1d691610cb82720e553247336fc5eab63407ad37febf2eb50aaa4e329cca70959ecd8bb8c7af5753acec2c8e86fc9a0f8ad9ad2de93fe9295ce84033d6054c mime-0.3.16.tar.gz
+7fd2c28f3afcb993d48452eac55d0d6037f4eab5c05d6d9abbaab76145d5ea9c6163af9b6461f91d4940c91b9b7734a351096a313311c07cc53518559d578c01 miniz_oxide-0.5.1.tar.gz
+2349691ea87a086f9bd8df5738705e9d7b59399089948f810b6a7124beffd44dee348703c89b4b1af8d84821dcb932960dc4bd9ec9543558f59a40c4806fbfd9 mio-0.7.14.tar.gz
+451073e8913148889493de0373bc0450c8b23e136e151b48b9976292e4e03b7c3f3279ecf49dda5196badfe662a661a998cfa456d2ec340a495d54a4d2382699 miow-0.3.7.tar.gz
+1cc30c3e16e103e49d585d017fb09962798d33dc4186a5dd3a28f224d3645e8301d4f5cab9b667a27dee88a49233b69974b41ee4aec2bb32ae0745e27b92b352 native-tls-0.2.10.tar.gz
+23431030b094ebb027200d8cdc05d0ac1730fbb86ee088795a2314f1ba19b76ed5f24373c1aba8125575bf69f8e7d4d9c08344b9cb49a4ae3d8f7987b5f4e6b6 nix-0.23.1.tar.gz
+f9a12a6c523c1c3202f3c45a514d02c40c600c835b83a1f94fd8e51ab462fdb89de3b32ad11630813d8e3cf4c8bc76acc620781568dbf2eb12469dcd9d3d0b19 nom-6.1.2.tar.gz
+6f5fc3b3629f028e03e878681a5a426945e471578c5dc78e121560887a9af285fe432f7401b19b7422e65c3b762651afb9a57a2f7605884c851ddf41b741585c ntapi-0.3.7.tar.gz
+91ffe0ec792228621d6c2d5cc544ef4744203d19fc9c86e0aad2610038c43aca0448b6c27d82979417a0f6c939ea73523303a44c28df0d1c1b8d09814d5306d9 num_cpus-1.13.1.tar.gz
+4b38eaa8b51119dbc7cd8a1e177f37ec935ee348b693a93378742e9bfa68fe5f7e5062b7f34638283c23f04d2127451d796d310cd8adb64dc8e865b28708374f num-bigint-0.4.3.tar.gz
+d07e27ede02a1d007373935fd91e57a26e0e84ae14bbe24be66763baae6850788bd64ad2598d2bde4f4fad6c8a4675c40bfe0927164b16b9b69de5e9a83d9771 num-integer-0.1.44.tar.gz
+c3028eca9f7b718de0db3a36cf3e462bdba43562d52c9b809ed4cc0aa6af403aea542d6d4da743cd1dd541397815a3c5a84cef4d6e40122994e4be6a62319b2e num-traits-0.2.14.tar.gz
+fc3aa9d25f06d83625f59aa0f33424a978bb9dd4fd1c802b69cde5ca5794e236fc6ee28f8f39f68905d1e20a4e65051c455be606619a14e6f2a67f4c77dfe7e4 oid-registry-0.1.5.tar.gz
+f6b5ce5e68923296d2041f83ac037f10ad7b9e94fc607c71332e8ee942a02c29534c2073cecdb132c7e1d91428e9d9687fbf05393ca0abbf7e15db50bb3b74ab once_cell-1.10.0.tar.gz
+9909b06668a4f97b4d0e916de3e1d0a922a5a0b911a7ce190de786f62ceaccd382cbd0dbe01ab0f15e5472c10848482da2307a6d897928b6b7d5365bc0321cae opaque-debug-0.3.0.tar.gz
+3cdd25b722b036779187a8906c11abefe69ead198204ecb8cd71aab549c910c3992761439336baf82c61dd6eb3258a365fad7eae4e4b7bd1959a979ac6c3faaa openssl-0.10.38.tar.gz
+7e560314150709a34520472698060c4f29689d4e608dc4dde146140aa690350d3603279c693367deeb0f21ab34ef61956143a3447827a2b7a3d578b9ccd6552c openssl-probe-0.1.5.tar.gz
+c1a6a50c4ea30b2bd7da520bc98bbd22a22ebc327d71c12f807f518cdeb10d81117b65df9294ba9391513a60577709723b93e75fc75423e970e9fa552edad32d openssl-sys-0.9.72.tar.gz
+d2d3741a1190092cf251e035d2c55a7d022d99512160ed4ddccccb44ca85f664f94f8a937a76eff88581b593e2ebaddab6e753009f3046a8a2ebf451418e41d8 os_str_bytes-6.0.0.tar.gz
+ccca3b4c582e860b0643dea78302fbcb96f8f86b356041ae9c685e7c48f1721fd3366dd1bea39afc1bcef03b298d0f6c87918a1ba92a56e6b06bc8b4123c0d89 output_vt100-0.1.3.tar.gz
+98af4dfa7c6a3cf0d5aa929c436f9eb1ba1b576a944513f1284e6df2ad06be7cab9eba145d888d50af88f8c970bacc702b323041bec6d4fa1dc34095186c628a percent-encoding-2.1.0.tar.gz
+d71e014b25cf6008a35d425794f69b4361de7c5e8b8fb255c35758bf5631f375a5646431ab1cb59f1fceef93762a169d0408301a5baebbd3a0886a60f688e8d0 petgraph-0.6.0.tar.gz
+9ecb86d550f4440e19eb16c6a9a418b5c4ad859ed2449b02f77d4b07b1e3e3e6b6b7ffba44a358958679342eb21222992fe6fdfe6d9bcb7a699a3e5816f1bfa8 pin-project-lite-0.2.8.tar.gz
+828422b8440cc82ac6b0743e0112fa7540d437aed457564999092b1462cd7672cd6b1f0201b67075431aeedd3d9c5127468a3dd028744109944f7f023c82fd70 pin-utils-0.1.0.tar.gz
+46658794f0a7446354041c1cc08cf637970f7651c0c506e2b90c9d4e284347cb82f05ce282cc55c8087bed58a5b961424a56574f4500de9f3ba9cb9e71667aa8 pkg-config-0.3.25.tar.gz
+6e6cb21bf03f34effe3c38ab9b31d768c7a7c02dfb385efb5c1dade7547a367276c5b00c4eae11aa85d90b6f2dbe5033acdf109200196e225e335e73bf5e0ad4 pretty_assertions-1.2.1.tar.gz
+8a47bc9d3e24e9561d1e384d8f5a633284c2cf9b5e6733c5f9d1dbfe1870ccc8e2152482852e50b551cecb68e009148585b910ffb0508a7b4875598eaf8657db proc-macro-error-1.0.4.tar.gz
+2606afa9ec78d7dad4500c98d3a5ecbd02c6b53ab829c742bed7f57b322a95238ab4e01cf268746815f1424fd9b02eddfa30e72f98c66106f57765f3d3116495 proc-macro-error-attr-1.0.4.tar.gz
+cedb3433c6dfff39b404f8939c67e98303bb89a47e2cfb9659eeda1ca3e3d167800dca482374501632ab6d2283105dbd7560a157b48a351b2d3da059f946be55 proc-macro2-1.0.37.tar.gz
+2c694e67e93ec07b426a56733b32f6d946b492036f8cd6e368ab85f48067a8f5d35788980f821adc515e3fd318dbd8e2fdea60275391abb9bc52aa27971290bc protobuf-2.27.1.tar.gz
+a573c449abc227fd2454229240fd6c88b353f69dc38caf837cc3420dc9de388c7dd0a0fcb98d7cb993a0a83f4896f7dcc98e7cd81756427bcb84ea485ceda57f protobuf-codegen-2.27.1.tar.gz
+0ab617e7aaddcc0df1377da8f396e138e5f75fb196fbbb5c09ff29213b83f9500ddaf8ca28f147b43d413de6579aca669228038e5fee70eeefba06d0ef016e42 protobuf-codegen-pure-2.27.1.tar.gz
+19753ebc78390f5ac7695fee7a9b4267f811f066e80fcfbdf1c2b1ccd4f24b0e8e3a38634b573852dd7ad10aa0bb73824b2153b4f138c55821a37f459f6cb065 pubgrub-0.2.1.tar.gz
+396ade131c0a74cdfb8454e137e41c21f0b81b7cce654ba6ae9ceb132ba0fa0a467a190e6dd69cd7d59a267efbe83f008c9c8a5c9db47665aabc31a4bb9cb967 pulldown-cmark-0.8.0.tar.gz
+3fa537aa96a8970104411471b0e4b7b9339583d552c1d9297737a59ef5301af41da105b92aeace87376e1395e379153f6551bfcfe9c740e6945064426f5f6f84 quote-1.0.18.tar.gz
+f4af86cddec991b11d86b1d976e212bb19da8d7e5ae1d40ee812391c21d3fc855bdb2770395baf7efcfdb5b2029a99c9038702a28f8c9e925e1b23f03c0e717a radium-0.5.3.tar.gz
+0fc31f96ca8ebba8c179367de01458e909265e1d627ec0c5620be7c8e83d2f9570471d6ec2cb2bc4bc531505b02fc31f1165708cc1357906791c87123b06ee87 rand_core-0.6.3.tar.gz
+dfdfc6bbeb222f6badc186773f3f3ac7c899d76f7274c33fa7bddf00a1a02b9eb6990f7f37fd37097085cae7a86d21e0819f8dd0d254aebda66fe367b8867b34 rand_xoshiro-0.6.0.tar.gz
+6551f503ba52c4edc0cb4a418ff212188ddc7be80dcb39eaf3bfb82faa9a76cdf359f604d6b32be6c6a335b54180c9399a0e32670333a5a08351957308486100 redox_syscall-0.2.13.tar.gz
+0d3366e23cf93e1b0e025a29025eaebfcd1145bd158e2663b94fd952dc2d8a25566819e3a03c4136ca16a6408d37396e2ead0814c3f0c2bb10334dfd0b838fda redox_users-0.4.3.tar.gz
+a5873edc75a64f03be77151c318bc90c7dff565f838d811f5973ebca2e86247efd58830b0a8ba41e372f5a72f5402d93873f8d34c36481fa4359874b2fa5d571 regex-1.5.5.tar.gz
+56d64da361afce82c6cb49e70b99ce1fca3e1969c54bba5f9971db135f8544c65f49feb8827789947b3d1dcefc9c49a7a434a7ffe0d09c5900345a1733723c5f regex-automata-0.1.10.tar.gz
+a3d31f82aadc6be1796f76c03152ff24f37fe42d6ce27fb98e2f55ab102f86502bc37ccd563f6e0eba61aab20d002184c618517b678b3b93cb8f0497cc046ca5 regex-syntax-0.6.25.tar.gz
+50417d6d8a33912193a1ed37eb72b47431b12ae65d2780cdb7080c3d141e63819da13751c3fb737685cea322f70b36d413389c3dc01aa12b4dce615aefed0e2c remove_dir_all-0.5.3.tar.gz
+17727bd585b244c65ec5857899e2cddab7a4284cd17f8fe0066f203bc2f57a2aedc33bf734e02d06a059983e1eecf7c689f2b0a40b7ffd0225302b7ef72a8daa reqwest-0.11.10.tar.gz
+d97d1b08eb796d4c107426ff2c015ab1f221612500c8a57fca8e3f064e8c0f5ae2a5e6071d013313cd9f4be8fed4ba03beae84bd446f56b2b2ca5d483c328191 ring-0.16.20.tar.gz
+bcd20c2920734a2f281b9ff924138605ea409d0bea9721ee96100f45eed14dffe65a8bdc8feed7c36d3564c8d902e78e0d2306b3736d03b8f195a9d212792feb rpassword-5.0.1.tar.gz
+84e673ea9b046f7b989d47f2c4505557fbd5de991e6fc9f56a03605d40e0b4ba5427cd566954890153cc033ccbec6c984306634571935bfe0d4cdfbe56f39544 rustc-hash-1.1.0.tar.gz
+5f2ca68df628d16e897b4c0a646b5c497d175e85d4901cc09ca44d939ead1771f31c9027e77766b5b99ed02c0313b1de09dbb54405f7ddf4a35ef0ce3a6ef179 rusticata-macros-3.2.0.tar.gz
+fa9efca7e49eff6c510d062d02fc73d15341b1fe16d24dada86108202a4295d2e0519aecf3f1701540cd4d49a513c05e74d3d27e21e5eb3cb1aba46c70a992cc rustversion-1.0.6.tar.gz
+4e7c2c7ec73da1ddb32e18d36b8159cb4047b9f4feeb975361e7ba68135e671e11419bb7786df789f5d08e5895231d2c98e36035b515f2c64ac40474d08905cb ryu-1.0.9.tar.gz
+3ba35309742c8db63210d9ea78bff4ecd80471d69e6238eb96c7bf0673814f221e2d838fe6311bfc5a0e71b4a7ccba33e07859c0b9cff2171969ff08a4214a7c same-file-1.0.6.tar.gz
+319d9931cdeaa0f6b50c46e413fed2b6e97b28fe8c4825d4e5ed0fe22083e686e124117bfab7c89bcce815a31a3478f8c230cdedae6a852a31719a0df34645b0 schannel-0.1.19.tar.gz
+f09dd404bb45349ef444e7274a2aabfeaeda7c3c9f964bf5c52c39984c137f63bdf9fb3e33df8e312e52872f7721de25951a7f3b8333a670626c51afd36d314c scoped-tls-1.0.0.tar.gz
+e4690acf5609f52c89cbe0b577c68a22caf0763d8dc781817010e695824dae44dc27f58c9ffec4254a8461e88040892b89f9628d6a71102d06ab5441b84800a4 security-framework-2.6.1.tar.gz
+7315c0d67d2e792932cd6634cbb9da5021c8d9a1a1e96b9d92c6718d73be3aafbc5613cb355fa1a3d1860f13c62e829bc220b43ad18d739ea1b5aece0cab470a security-framework-sys-2.6.1.tar.gz
+d043ccfd6a1dc9a114a1a95530a63ed9342688d31d3aadeec600a9a9d47aad328be35b6f80080400ea4bb3f820ddd18cc5ce1e6ea1db28e02752962061e71019 serde-1.0.136.tar.gz
+92c99455a5a9ac0fe45eb6ff1ad3ea55db860031fb912ace3755d1d2aad0dd880b2d83add4d41872823bd60557ebe1cb36e898bf0ac975b1093caa9819f7c289 serde_derive-1.0.136.tar.gz
+83987c1a7eddc6adf8ae359c30e2db1fea98edabd6dc49bde840c37a56258fa845612e8ae270a7dca4cfbe9a3532dc55028091e14cdf1dd3b1ceea4bb86a2dd7 serde_json-1.0.79.tar.gz
+4e3e87b1c97ee587e88be56d67f287e43252de474a3becdefb4b768eda661db5d78f665d7d93720a40d9f5bd27fd9ab6213d66713ec89bcc2063092b16625a18 serde_repr-0.1.7.tar.gz
+b209ad01b6565e95c1d5b431a3f4f8a0df3d11c2a06a44123048bfa4b34ebb6807eec593f0c1c89de3a06ac3786a14747df9c70b4f4d5e4b72b4feb53084eb60 serde_urlencoded-0.7.1.tar.gz
+7831299cedf0fa9155a76b61436ec1cbc06adfe672a102973e8cffc8b277d99b4104d70951ed16b18283f3291c8047d6af413e0438da3e6bc6745bfb6816628a serde_yaml-0.8.23.tar.gz
+bc267467089ed546edc1caaa7a00f3f769fd1d5deeb655c1968985d284bd32e4fcee4e721cf89c30e8c3cadd2f88ac557b91f90183cab112702c587f753e5877 sha2-0.9.9.tar.gz
+123a9ddb126d1adf41a30a632604264d66a06bacc497db6373e9dd36164197f8321f2fc826a16247674f0f69d9f6e30aca37810f787693c4a5c2cee8c5887c55 sharded-slab-0.1.4.tar.gz
+5e19ea40e22fef17b08651ddcbe7cc2a9763c5ed104a1f3bb7a288e061df56f56248b5e82f65e697defccbe9ca4d338752cecceb2d0f3e7712fe7318ba299604 similar-2.1.0.tar.gz
+c7496094a6ac45003b31d55c61aa42e649eca40a2540e1acc507d541d3c02e5a1801fb517e2685752b81ef5a8c0ee6efdcc93dae9268f22ac8c6eaf1056e9656 sized-chunks-0.6.5.tar.gz
+788837db210be63579eccf12d96fcaa3280c7515bedebe3040a71ed27d013430815ebc74acc06280daf22c0b16871bad210981d32615c26cb1da344b4b0d9488 slab-0.4.6.tar.gz
+17687cfa6aaf95a1df063adc3a412a7c41918a0d003eaac90f7d9e859fb8fa1d652eedee17a4cb3aaae9b33a2043f89e796519e3a7a3992b292f04049bf80b0c smallvec-1.8.0.tar.gz
+d6a050e873da5c90de3ff9fd02166de3be4c03931de9cac5307e6c16a71b8db1db6e8309eaa38ad408b20e0cc98eb4133595ad7aea96f62ebdcea579a643b65f smawk-0.3.1.tar.gz
+af4641d98737bbc4d14e82d91791af4705f9dbbec4d8b3a25e7e990a5c7ac25b48eea6c4a743b09db52a037c67a7b676147087688f4e29d6541dd1ad7ff9688b socket2-0.4.2.tar.gz
+a94f8e4128d744768ffc3801bdd4f52f9030035304feff0a05ae939107820acfa7ee933237927ba26b60bce4ed2444b5042acc44fa1142da146a1cbeb9184d5c spdx-0.8.1.tar.gz
+fc57f7906da2b7a298c5f89215e881e8827b4d9f934dbf138338e0ee30122d8459483be566268fa374b41d63d8dbf65d42e0b322535ba35c827d7edb2176f267 spin-0.5.2.tar.gz
+46d0e35f77941dee6f60f574c130472248063dc38494c1c4f84f7c048244cc2a58a86fe17c0990e3f0f01406b75ed385a13d00058612b27cf0e867c8d31c92ee static_assertions-1.1.0.tar.gz
+78b318532addfcf5c1ccc1e14539e258aab9d3cd893cc45d82342549bde838c177d90f13c560671f8f32929af47d0b467db35e6876bd7697d8b3f9e055aeeac1 strsim-0.10.0.tar.gz
+9136deb6bc6c4d48123b2df0f0bb4a46212622ed7bf92f6080a6520e7ce8610f7b55102357cd50d635977d7cde13581f80ce372d8473733b66070e4945166dd0 strum-0.24.0.tar.gz
+3a6a13d8c705b71dfa69857b04e821e63df21109d4469363e5eac51299a135f98865b6eaec5826949c4d8606d7b5242393ce57de16bb0318e40f73de284ba65a strum_macros-0.24.0.tar.gz
+d5e5358678b9fc769cc1669a63163cb8000df4d73876a8a822a03a49ccf7c4171c10e5abf339b067f25d7f2fcf13d8e51dc648b11a76311950009f6fba122a21 symlink-0.1.0.tar.gz
+28fe28a9d4e9ab3610850c1704be6f384e9fff191b1a5e11f9766bdada81a3e7426cbc776bbd63ea6710320c7416a622506d4a8d607d978af506d381658d4bff syn-1.0.91.tar.gz
+d69ff11a46e2fbc276212511878f48eb93640c0b147df6578ea057b23625f9366a7fc3926693fc3809688537af5ca919c91605beed364decf83c35a032310995 tap-1.0.1.tar.gz
+4b6458734811e1913cb7e348f32db16f9402fd0e0027ae867db81aecac250b35d07d9478cdae4e27a609ce0f29c9d61683934296cfc3b371119df9f2c380a84f tar-0.4.38.tar.gz
+ba6faafb2dd56d694efe424752099a2efb50316afc0a4db9fdb7620ae3f1a31dfbb2a7b41724878cb977fa11f7568a406bd3b6a4f7cfc0b88b86b2cc616b953e tempfile-3.3.0.tar.gz
+5838fcbfd70f300cb4b62aab50565db52074c56b152ccc8ac1173e4676c0d5a636271bf5a645a77da6e1d4edbf0091af2cd4dd6d73b85c3d198c760898c06f3a termcolor-1.1.3.tar.gz
+96ec1bc8abd597f01ae59da567036d5d40b422764a4da662e2030c3ef4ce80a983c8b6a4ef1f34d88e649e0b1ea27b206d56a31924bcd2d31ff7e5a2e96d4201 terminal_size-0.1.17.tar.gz
+f44271c542c22f17a4e3a459255f95e6c02d999f7d6bc8414d3973fd4ac9353aa4ef436932a45340738126905463d776902715feaa9329371f8a14f14b5a7bfd textwrap-0.15.0.tar.gz
+0e6cbc160ee1b6236a9073dec225a4290e7a82632ee7cec00bf02797b04851adb2d3071fa268b54f7fa9fe22eeada55a83d44fbddf824520023608eda8ea2e99 thiserror-1.0.30.tar.gz
+465b1d4eb79075d8abb11f5c260d68847ea52806a2f519515705b03da376fffb3686bebb23c11462b1c59e1ae5b3ee96d834c62cac69862c491001b1ff7cbb46 thiserror-impl-1.0.30.tar.gz
+db7ff3eb88a73d9313dd58d72397614c5aae6be1d64ead7f16535cae2857be3b27d189e7955308591ec64a0d67777fd2a62a2b124ca73facb9a2d8e0458bdbb5 thread_local-1.1.4.tar.gz
+80b68058e3264b3fbc537debf01b6b60d438bf5cba6ad366083cb440ed6b45587f367d3a134ec6fab769495b94413d0eca47544b26959a2c35b1a997423eb849 tinyvec-1.5.1.tar.gz
+d6afc83a3c70cde916a6ff599e2772588e4bbfa7a5b1c7e5c8aa0f4a8a5c9426182497a644e4a88194ece986d38fa64b6c8eda9eb1630441c8e65a8741a45873 tinyvec_macros-0.1.0.tar.gz
+ae0d1ecb2fd733380cc9edcb7ed3c0fa2ed35e0ef9fd6e239f0eb2925cc82b5c01e0e65cc5e1c2a4274da5040d27a9e6d4a537d7530295bc9abcd08259ece0ea tokio-1.16.1.tar.gz
+a8aa7586f15a3347ba9152497db84a098e751797c06df1a75d9b108689e14d6692b4efc6e5b49b5bf8f8fdb3bfc4f1157f56b3b0c9d9e753a8b31a61e65dfc4d tokio-native-tls-0.3.0.tar.gz
+738e206a107d721dbbaa6cebbf24153af317338416a7fee632e3a895f7702df9538629d2016cb0e7cd28338e7e38e9d6ac5e289dedce2d0230f3d852b4814f20 tokio-util-0.7.1.tar.gz
+7151bcafbe2bdb1d2bb91562daebd357c884819af047843f1b4a56bc3812d4153eaf70683d0f9bff51bd1048700920322d64d41da13ebb4cbf34f0f7822d7ce7 toml-0.5.9.tar.gz
+7a1de36d40894c22671e354d409fc0507ef1f9951b081c25ed72e4d900cf0fb5ee739b53a4084650ba932d74c9cba13457c6c87137c9aefdb9b1d19c32c3ecdf toml_edit-0.9.1.tar.gz
+d23f9db2d6632f561970b55eaeaac22a20c8b9af18931cd564db193688eb2a2973127b440e175cfd7358f3d0ead53f7a759e34b7b86c293751079af9c2181ba7 tower-service-0.3.1.tar.gz
+d4641f3f239d158547d7c811a80cbd2d1d7df366122dcc678d01844988ef3c5f5db637707e7e91bfb2ea16bef5463d52f8a481d1a9804bac197157453b5877d8 tracing-0.1.34.tar.gz
+8ae65a131ba700a03a2e35646a1bdaf043f04b4d5de00f5c58022caf06346b50cd88e1917bcad3a3ad591921fbf2dcef3b49793b8569604eddeea2470627a0c6 tracing-attributes-0.1.20.tar.gz
+b9d44c307d0fee51675bef07ed7f7d2eb8de8a6ffb37256994f3485f7f80e40f1fa9de1663e5360f945270f10d22e42cd9af60193449bd0a0d323895e994bdbb tracing-core-0.1.26.tar.gz
+c4e146026ea7b27e79c630da9994dfafb90f9bdd581f51cbd5a5f985b0e60b2412937214e0365203148eb91f0a5ef3644e64757dadaa10287a097ad85989b620 tracing-log-0.1.2.tar.gz
+5d45d5108742aece42bfe7d6f6ed71b0bee81c3e3e3a3117489ec5d4d4ee9c23c157077ad5020b74b019d212fb2a46623e93dc57a7f6bc0a1a853981ea097493 tracing-subscriber-0.3.11.tar.gz
+9ac4db2c9bd3f19351e5ad40a03da2ec9cf4b7d78c1d6ffd5fe55a4f94524adf90a0acdc9d97ef6e4399b90c70b90c413f2726e5cab9e9c79877105b5d00f342 tracing-wasm-0.2.1.tar.gz
+ebae7ba9227e6fc20499b48ab85169943765342d4790bb4a31ac33a2be0af9401e2854c8e00b9d3b7e225d16875c90700b1c3fa99af07833d3b7a91b7a414fc3 try-lock-0.2.3.tar.gz
+a3c1ceac85e1aed98d0829449c35f4f36db860218b955b4e5f8f01da1d27ee6213f3c60e2b25c3745dcd67369049da5de737a9473fa9402db99cf7cddeb42288 typenum-1.15.0.tar.gz
+7e76a5f344e32c56cf87223585d87a56c79627b52bba0b29eb6de82de874b2964accededa8e9b5741f57944b6750fba5c61e679a50d4fd5a5646f431e2f4f188 unicase-2.6.0.tar.gz
+6eeafec87a504ac968b59dd3168714e555b5b374cfbb5a6a9c962445c423f82b68ee54d1b732c5939eb17fdbb804f9b3affe828745bf4ff34e8a1587df2bc8bf unicode-bidi-0.3.7.tar.gz
+170db67d6d74df913dffc921986b92df8a2ba68776ddb17c8ffca51d0d4bee597a5460591e7ba593c1eaec8b6227956f4e0f9b11d217aed4ee85cf46f1be5277 unicode-linebreak-0.1.2.tar.gz
+7459e9d2867308cac80a98d8dd0b0cce797e2830ea5ff55b878f7a37a6f5e1f0bc14340e1a29955298d660ba2be57754a1478d74851b1b90576dd5bc4231729f unicode-normalization-0.1.19.tar.gz
+0f5ec46c57e3b5e50cb8430c89db8d9c129e80ca11a9c398b5312bfe95001e19ca3efbfeb01c3ac09c4ce7e26c6ee1f352f7e114ecef78cefd68c54d2d50f5f4 unicode-width-0.1.9.tar.gz
+92ffd0dd34e3ca235ecf110b38c447d3ec1faa23d76c112457f28d432f92fa6b5f428bc5e1bfd278f361f55426dd96e19ecb0d3eff6cf250892f069c52bd89a8 unicode-xid-0.2.2.tar.gz
+5ebe3266912e4e78fdfdd13f9fcc07e9cf489d19d5e9ff346486f47aa58a0aca35278d561612c49eb3cab5a6759ac974d3b92bfabc399e1bc0808428dc347be0 untrusted-0.7.1.tar.gz
+f9b6ad99d69ff303283b3fd9e98945fbd6cb411a3d141badcbb3a0566723a451375e6dd5d5357e3eb7a1b5b1ee5756a2347c43817db2de6fe35b9004b090e077 url-2.2.2.tar.gz
+1eb1a6de1962d1e9c34b3f8708434ba7a1c111ccfac598ab58bc7da3571c571618925adb5048d9f909e7a10b8b16e7a18ffe018bd9844cb7f2ca2c5d31fec94b urlencoding-2.1.0.tar.gz
+a97f65db1f1c5049a276dbb0e45e25c6fc6ce9d27ac1fcd77c945324cd8216ef60344065c79799ca04e338455e4f7422c44078eea32d5fc359dd0211ee7eb387 valuable-0.1.0.tar.gz
+7322a21e8811b2fe4e79e09dc321458068ecdf1953f05d36233f3278ecc0b1dfc64194db7010dd46fcf692285f42475beb090c6c6cac0c8f9fe0eb5c770e3172 vcpkg-0.2.15.tar.gz
+9f915d620abc17e14a20e11ff6663ee9ac17ba6df52c79cbd86817c4509c0da64efe6575a930aea10006a3d408c68eee37110bda7c0f34c70fd8b7ef67127f0f vec1-1.8.0.tar.gz
+b172dc9a3759a4a683ffc39b9a40b03b9974b626a088217de87090466cef695226557c226cf3e469b2b25ee7297b7eb0d7719878cab42457f80146a81943c0c8 version_check-0.9.4.tar.gz
+6c44071354faf37720ec4117ded34c8d530489542ee107ac26a7a56ef4a882b9003e22e84f1d61f6078643521343e35aa1f7b57c838779e78e5937a667bf82da walkdir-2.3.2.tar.gz
+7e7af8ddcc6faed3e3d18384a000339617187b74b0adf111a02bc15fdb152c88007844d6fe6f35a47a13f3384a19ee4723b884623de7d45c6619d76aa6699404 want-0.3.0.tar.gz
+06977a294d76369a3867c45abdd8a87ea5c84e5a3681075ba0d14af1aee3114ff24495c7e7f7fe1e6e42230e65fba0e062898e69bc89e0209af62c2d14094ec7 wasi-0.10.2+wasi-snapshot-preview1.tar.gz
+928fd6575217909a46f23ea8147caa438efed8eef31d1e0d75610fc380c18d7cf51cb74c7d5c83136d36433fd19bc9256b6566c2624a4008daca1b3e155aacf1 wasm-bindgen-0.2.80.tar.gz
+20c33664f194dbc5998093831d8ed0eae82cfa6c90b8c3b9338c4f32104594a8864c68a51ee3e39fca1eba166b241a9a8e508d5f942791d727deb2decd9056d2 wasm-bindgen-backend-0.2.80.tar.gz
+71248ac2ed1711650f4dba1b51d5b4d48c8f2f3c39eec2d55fa95b91c017ca2cf3c50c13cf654d0541c309683b502d5f518dc11f10c4e3b8d6b3e46d52a77ed9 wasm-bindgen-futures-0.4.30.tar.gz
+816922762591e7ccd07d9bab1f089d1d0484c04ca4d8b9060d432fabe4ca28a6b6f0e701129f6d0a3fc341b845115c2dd1bea3bb67493234a73f7cd2bc0c66db wasm-bindgen-macro-0.2.80.tar.gz
+8d4a68c363dde93d9644f30ab69ef28879e8c354e41e6ed1d1598beeeaba5bb6c8e6769fac5404faf438a90d87fbdaf9bc9b4d082dd7b1986f789d739f7b5108 wasm-bindgen-macro-support-0.2.80.tar.gz
+c170759d46e12edd41dcafc908caa887756a811006a178b3bf5ae73f73556d51fa13fc4a0844e28071d21c177a1d98e1e2f6dcac41dc240b972b697d36d74203 wasm-bindgen-shared-0.2.80.tar.gz
+3f0ba56c73faa3632e74b558a692e56493db7756fcaecefc737549a8c5142d7d1e4ef385c1090d506933f4e4a8b43bea12ba34961f84237d35046fa608696e34 wasm-bindgen-test-0.3.30.tar.gz
+226b39584789c8aa73c1ee69b5bf14f388928f2284baedec1fcb7fc4efb2f123ed4c4bb09f40dc8a06529aa0093ce8343ca8837aaad45b9e28e9f4fdc513ecbd wasm-bindgen-test-macro-0.3.30.tar.gz
+144a481ff7562ff5f96145c7db64ecc704863e2fd6c0c9afc87fe87513e5be660fcadec6b1114ed2c86da36ccd97024ce601b843c8768dd8b5c53c71daae9800 web-sys-0.3.57.tar.gz
+ff8b7b78065f3d8999ec03c725a0460ebc059771bf071c7a3df3f0ecd733edf3b0a2450024d4e24e1aedddaecd9038ce1376c0d8bbf45132068cf45cf4a53a97 winapi-0.3.9.tar.gz
+a672ccefd0730a8166fef1d4e39f9034d9ae426a3f5e28d1f4169fa5c5790767693f281d890e7804773b34acdb0ae1febac33cde8c50c0044a5a6152c7209ec2 winapi-i686-pc-windows-gnu-0.4.0.tar.gz
+7baeb661f397c4693dfa001fdc774b323c51a7c55caad40f2de5112a1cefd1d6151e3df41fa4ee193460a5905917c83d2b1de5fa10b4bd014ad96690af95c0fd winapi-util-0.1.5.tar.gz
+4a654af6a5d649dc87e00497245096b35a2894ae66f155cb62389902c3b93ddcc5cf7d0d8b9dd97b291d2d80bc686af2298e80abef6ac69883f4a54e79712513 winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz
+09f2d18f62c3c427ebed40d667b672bb778629502ad3c39541f324b2d5ac41f0822c98b7e5320314144130580da46f1e8e51928941850e7d4af28455a564360c winreg-0.10.1.tar.gz
+3a16c3e81d3595ddf1e7816e698eb4d07c7455dec579fd5e97b5d8b77e626cda52f3cdaee71e234e5e500a7ac58b9d1d5f12b17264686f3f225d5e5b0d315de7 wyz-0.2.0.tar.gz
+338a654cfc99e181553db165d27dda338c1f446c2a6bcbc5f551c5ff2c18be0fcb74e399a5152a595343a230f2f8008420010a094189994e7f174ffb97933e5e x509-parser-0.9.2.tar.gz
+a89d34313c35ab02d6ea25675c99f9c9650dee40a76223d62941edda43b3d2db83ed223bada129625b3cf8487c293646ce9980afc6dba8888fa078d5aa035cab xattr-0.2.2.tar.gz
+7621dc8dfd5e7d4a7a8805b2a7e8319b63b852367655f2359d4e3e8fec6c4fad52d75c46ce1161e4c674eac0780b757ce9d34e664e304d8d2beec7afa0363ea0 yaml-rust-0.4.5.tar.gz"
diff --git a/user/glew/APKBUILD b/user/glew/APKBUILD
index e5f6c1b18..ae313c711 100644
--- a/user/glew/APKBUILD
+++ b/user/glew/APKBUILD
@@ -1,20 +1,18 @@
-# Contributor: Carlo Landmeter
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=glew
-pkgver=2.1.0
-pkgrel=2
+pkgver=2.2.0
+pkgrel=1
pkgdesc="Cross-platform C/C++ extension loading library"
url="http://glew.sourceforge.net"
arch="all"
options="!check" # No test suite.
license="BSD-3-Clause AND MIT"
depends=""
-depends_dev="libxi-dev libxmu-dev mesa-dev"
-makedepends="$depends_dev glu-dev"
+depends_dev="libglvnd-dev libxi-dev libxmu-dev"
+makedepends="$depends_dev glu-dev mesa-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tgz
- mesa-compat.patch
- "
+source="https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tgz"
prepare() {
default_prepare
@@ -30,5 +28,4 @@ package() {
install -D -m644 LICENSE.txt "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
-sha512sums="9a9b4d81482ccaac4b476c34ed537585ae754a82ebb51c3efa16d953c25cc3931be46ed2e49e79c730cd8afc6a1b78c97d52cd714044a339c3bc29734cd4d2ab glew-2.1.0.tgz
-6598a3d8263b8e49ca45cea00fed6b6921b6e75ff120d7f4f86b6e181dd9c8d56d52d1664a1693cf807dda130cfebd1a9a0bf8b2edc02552c1831486378adf1a mesa-compat.patch"
+sha512sums="57453646635609d54f62fb32a080b82b601fd471fcfd26e109f479b3fef6dfbc24b83f4ba62916d07d62cd06d1409ad7aa19bc1cd7cf3639c103c815b8be31d1 glew-2.2.0.tgz"
diff --git a/user/glew/mesa-compat.patch b/user/glew/mesa-compat.patch
deleted file mode 100644
index 14404ed30..000000000
--- a/user/glew/mesa-compat.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From d6c2c3b9ca52af697088f280c30fe5b27f7a694f Mon Sep 17 00:00:00 2001
-From: Deve <deveee@gmail.com>
-Date: Wed, 14 Nov 2018 21:07:29 +0100
-Subject: [PATCH] Fixed compilation with current mesa versions.
-
-As you can see in
-https://cgit.freedesktop.org/mesa/mesa/tree/include/GL/glext.h
-now the file uses __gl_glext_h_ instead of __glext_h_
-It's precisely caused by commit f7d42ee7d319256608ad60778f6787c140badada
----
- auto/src/glew_head.h | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/auto/src/glew_head.h b/auto/src/glew_head.h
-index 41e5a262..742f27f5 100644
---- a/auto/src/glew_head.h
-+++ b/auto/src/glew_head.h
-@@ -14,7 +14,7 @@
- #if defined(__REGAL_H__)
- #error Regal.h included before glew.h
- #endif
--#if defined(__glext_h_) || defined(__GLEXT_H_)
-+#if defined(__glext_h_) || defined(__GLEXT_H_) || defined(__gl_glext_h_)
- #error glext.h included before glew.h
- #endif
- #if defined(__gl_ATI_h_)
-@@ -30,6 +30,7 @@
- #define __X_GL_H
- #define __glext_h_
- #define __GLEXT_H_
-+#define __gl_glext_h_
- #define __gl_ATI_h_
-
- #if defined(_WIN32)
---- glew-2.1.0/include/GL/glew.h.old 2017-07-31 11:25:39.000000000 +0000
-+++ glew-2.1.0/include/GL/glew.h 2019-03-20 19:05:46.240000000 +0000
-@@ -93,7 +93,7 @@
- #if defined(__REGAL_H__)
- #error Regal.h included before glew.h
- #endif
--#if defined(__glext_h_) || defined(__GLEXT_H_)
-+#if defined(__glext_h_) || defined(__GLEXT_H_) || defined(__gl_glext_h_)
- #error glext.h included before glew.h
- #endif
- #if defined(__gl_ATI_h_)
-@@ -109,6 +109,7 @@
- #define __X_GL_H
- #define __glext_h_
- #define __GLEXT_H_
-+#define __gl_glext_h_
- #define __gl_ATI_h_
-
- #if defined(_WIN32)
diff --git a/user/glfw/APKBUILD b/user/glfw/APKBUILD
new file mode 100644
index 000000000..3da47f557
--- /dev/null
+++ b/user/glfw/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=glfw
+pkgver=3.3.2
+pkgrel=1
+pkgdesc="OpenGL desktop development library"
+url="https://www.glfw.org/"
+arch="all"
+options="!check" # Tests require X11, GL, and manual intervention.
+license="Zlib"
+depends=""
+depends_dev="libglvnd-dev"
+makedepends="$depends_dev cmake doxygen libx11-dev libxrandr-dev libxcursor-dev
+ libxi-dev libxinerama-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/glfw/glfw/releases/download/$pkgver/glfw-$pkgver.zip"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DBUILD_SHARED_LIBS=ON \
+ -DGLFW_BUILD_TESTS=OFF \
+ -DGLFW_BUILD_EXAMPLES=OFF \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ install -D -d "$builddir"/docs/html "$pkgdir"/usr/share/doc/$pkgname/
+}
+
+sha512sums="3084f405f6ecfa182df0841ffb44248b716fc03282afd8e6dc9a1361897fe62a1ce049b95f662d79aaae45aa52208bb552b8c649284f7f6d9c12623ac3728e60 glfw-3.3.2.zip"
diff --git a/user/glib-networking/APKBUILD b/user/glib-networking/APKBUILD
index 83ee6af4a..60e7a44f1 100644
--- a/user/glib-networking/APKBUILD
+++ b/user/glib-networking/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=glib-networking
-pkgver=2.60.1
+pkgver=2.70.1
_ver=${pkgver%.*}
pkgrel=0
pkgdesc="Networking support for GLib"
@@ -13,30 +13,24 @@ makedepends="bash glib-dev gnutls-dev gsettings-desktop-schemas-dev intltool
libgcrypt-dev libproxy-dev meson ninja p11-kit-dev"
subpackages="$pkgname-lang"
source="https://download.gnome.org/sources/glib-networking/$_ver/glib-networking-$pkgver.tar.xz
- glib-networking-2.60-new-gnutls-cert-error-fix.patch"
-
-prepare() {
- cd "$builddir"
- default_prepare
- mkdir -p _build
-}
+ tls13.patch
+ disable-gnome-test.patch
+ "
build() {
- cd "$builddir"/_build
- meson -Dprefix=/usr
- ninja
+ meson -Dprefix=/usr _build
+ ninja -C _build
}
check() {
- cd "$builddir"/_build
- ninja test
+ ninja -C _build test
}
package() {
- cd "$builddir"/_build
- DESTDIR="$pkgdir" ninja install
+ DESTDIR="$pkgdir" ninja -C _build install
rm -f "$pkgdir"/usr/lib/gio/modules/*.a
}
-sha512sums="a40a7e9678076db1a469f0d8ffdcb0c6658ef96ff1d9637299fbb07985f4c42bae3f1415f8df15242718420d20eb90de93253a00d1f6a347110b3f8a74bcc717 glib-networking-2.60.1.tar.xz
-b9d3d744aec5337553e228ff1ee0616b1d79d1766ef9d87e644706a154f8e6151b15651b73a7073482e5cbe20b54ac78bd34f7ad77ebf0d34c42d969b4315241 glib-networking-2.60-new-gnutls-cert-error-fix.patch"
+sha512sums="a06b4df4481f95193f9ed4be6d39bbe9ecaf4de8e11a48750f7110d4cfa71aa56b7ec5b36af70b7128150447f1a39ce3aeadf71e2ac516f61708f1212f8f855d glib-networking-2.70.1.tar.xz
+b859a3053013b54e62139e6bdd4e5c0d318ff9fcbc71533d35a3fd9efccfc0cefa8b070cc1047c67549efc01623829a07d47ad73d1fb8aeb106cf57c975034ab tls13.patch
+ebd90e59cfe12b993792855f6059918f13d5f7847c7db2b1b52aad868c1ba119941f319ed1b76b8fffd221734d8169356c682013c588452ee2ce0c02c3c5cbab disable-gnome-test.patch"
diff --git a/user/glib-networking/disable-gnome-test.patch b/user/glib-networking/disable-gnome-test.patch
new file mode 100644
index 000000000..0f7686290
--- /dev/null
+++ b/user/glib-networking/disable-gnome-test.patch
@@ -0,0 +1,14 @@
+diff -ur a/meson.build b/meson.build
+--- a/meson.build 2022-02-01 17:05:12.520000000 +0000
++++ b/meson.build 2022-02-01 17:05:45.080000000 +0000
+@@ -176,10 +176,6 @@
+ subdir('proxy/libproxy')
+ endif
+
+- if gsettings_desktop_schemas_dep.found()
+- subdir('proxy/gnome')
+- endif
+-
+ subdir('proxy/tests')
+ endif
+
diff --git a/user/glib-networking/glib-networking-2.60-new-gnutls-cert-error-fix.patch b/user/glib-networking/glib-networking-2.60-new-gnutls-cert-error-fix.patch
deleted file mode 100644
index ab04dae3e..000000000
--- a/user/glib-networking/glib-networking-2.60-new-gnutls-cert-error-fix.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From 1ce6b40da8ecbf997c5522a592a122e805aa81c4 Mon Sep 17 00:00:00 2001
-From: Michael Catanzaro <mcatanzaro@igalia.com>
-Date: Wed, 3 Apr 2019 18:00:55 -0500
-Subject: [PATCH] gnutls: Handle new GNUTLS_E_CERTIFICATE_REQUIRED
-
-This new error in GnuTLS 3.6.7 should correspond to
-G_TLS_ERROR_CERTIFICATE_REQUIRED. This fixes our client auth tests when
-run with GnuTLS 3.6.7.
-
-Fixes #70
----
- tls/gnutls/gtlsconnection-gnutls.c | 6 +++++-
- 1 file changed, 5 insertions(+), 1 deletion(-)
-
-diff --git a/tls/gnutls/gtlsconnection-gnutls.c b/tls/gnutls/gtlsconnection-gnutls.c
-index 27bbbcd..774d668 100644
---- a/tls/gnutls/gtlsconnection-gnutls.c
-+++ b/tls/gnutls/gtlsconnection-gnutls.c
-@@ -1062,7 +1062,11 @@ end_gnutls_io (GTlsConnectionGnutls *gnutls,
- else
- return 0;
- }
-- else if (status == GNUTLS_E_NO_CERTIFICATE_FOUND)
-+ else if (status == GNUTLS_E_NO_CERTIFICATE_FOUND
-+#ifdef GNUTLS_E_CERTIFICATE_REQUIRED
-+ || status == GNUTLS_E_CERTIFICATE_REQUIRED /* Added in GnuTLS 3.6.7 */
-+#endif
-+ )
- {
- g_set_error_literal (error, G_TLS_ERROR, G_TLS_ERROR_CERTIFICATE_REQUIRED,
- _("TLS connection peer did not send a certificate"));
diff --git a/user/glib-networking/proxy-test.patch b/user/glib-networking/proxy-test.patch
deleted file mode 100644
index 2cab5d9f6..000000000
--- a/user/glib-networking/proxy-test.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- ./Makefile.am.orig
-+++ ./Makefile.am
-@@ -11,9 +11,9 @@
-
- if HAVE_GNOME_PROXY
- SUBDIRS += proxy/gnome
-+SUBDIRS += proxy/tests
- endif
-
--SUBDIRS += proxy/tests
-
- if HAVE_GNUTLS
- SUBDIRS += tls/gnutls
diff --git a/user/glib-networking/tls13.patch b/user/glib-networking/tls13.patch
new file mode 100644
index 000000000..802a692cd
--- /dev/null
+++ b/user/glib-networking/tls13.patch
@@ -0,0 +1,87 @@
+From 72d82ee1f738355d5f76374d487d1623da57384e Mon Sep 17 00:00:00 2001
+From: "Ruslan N. Marchenko" <me@ruff.mobi>
+Date: Fri, 17 Dec 2021 08:58:37 +0100
+Subject: [PATCH] Cleanup some code around tls-unique binding in TLSv1.3
+
+ * The binding call should fail first of all, as tls-unique binding type
+ is not defined under TLSv1.3. The test unit is updated accordingly.
+ * New GnuTLS backend is handling it properly but old returns success/empty
+ data - handle empty data and return error.
+ * OpenSSL returns success (or rather Finished packet, as it is asked for)
+ hence catch this condition before the call and return error.
+---
+ tls/gnutls/gtlsconnection-gnutls.c | 10 ++++++++++
+ tls/openssl/gtlsconnection-openssl.c | 9 +++++++++
+ tls/tests/connection.c | 8 +++++++-
+ 3 files changed, 26 insertions(+), 1 deletion(-)
+
+diff --git a/tls/gnutls/gtlsconnection-gnutls.c b/tls/gnutls/gtlsconnection-gnutls.c
+index 1b607408..387f14d3 100644
+--- a/tls/gnutls/gtlsconnection-gnutls.c
++++ b/tls/gnutls/gtlsconnection-gnutls.c
+@@ -1172,6 +1172,16 @@ gnutls_get_binding (GTlsConnectionGnutls *gnutls,
+
+ if (ret == GNUTLS_E_SUCCESS)
+ {
++ /* Older GnuTLS versions are known to return SUCCESS and empty data for TLSv1.3 tls-unique binding.
++ * While it may look prudent to catch here that specific corner case, the empty binding data is
++ * definitely not a SUCCESS, regardless of the version and type. */
++ if (cb.size == 0)
++ {
++ g_set_error (error, G_TLS_CHANNEL_BINDING_ERROR, G_TLS_CHANNEL_BINDING_ERROR_GENERAL_ERROR,
++ _("Empty channel binding data indicates a bug in the TLS library implementation"));
++ return FALSE;
++ }
++
+ if (data != NULL)
+ {
+ g_tls_log_debug (gnutls, "binding size %d", cb.size);
+diff --git a/tls/openssl/gtlsconnection-openssl.c b/tls/openssl/gtlsconnection-openssl.c
+index 9cf6ad74..265845ee 100644
+--- a/tls/openssl/gtlsconnection-openssl.c
++++ b/tls/openssl/gtlsconnection-openssl.c
+@@ -653,6 +653,15 @@ openssl_get_binding_tls_unique (GTlsConnectionOpenssl *tls,
+ gboolean resumed = SSL_session_reused (ssl);
+ size_t len = 64;
+
++#if OPENSSL_VERSION_NUMBER >= 0x10101000L
++ if (SSL_version (ssl) >= TLS1_3_VERSION)
++ {
++ g_set_error (error, G_TLS_CHANNEL_BINDING_ERROR, G_TLS_CHANNEL_BINDING_ERROR_GENERAL_ERROR,
++ _("The request is invalid."));
++ return FALSE;
++ }
++#endif
++
+ /* This is a drill */
+ if (!data)
+ return TRUE;
+diff --git a/tls/tests/connection.c b/tls/tests/connection.c
+index f9940986..f6f1cf87 100644
+--- a/tls/tests/connection.c
++++ b/tls/tests/connection.c
+@@ -2605,6 +2605,8 @@ test_connection_binding_match_tls_unique (TestConnection *test,
+ /* Real test: retrieve bindings and compare */
+ if (client_supports_tls_unique)
+ {
++ g_assert_false (g_tls_connection_get_protocol_version (
++ G_TLS_CONNECTION (test->client_connection)) == G_TLS_PROTOCOL_VERSION_TLS_1_3);
+ client_cb = g_byte_array_new ();
+ server_cb = g_byte_array_new ();
+ g_assert_true (g_tls_connection_get_channel_binding_data (G_TLS_CONNECTION (test->client_connection),
+@@ -2624,7 +2626,11 @@ test_connection_binding_match_tls_unique (TestConnection *test,
+ g_byte_array_unref (server_cb);
+ }
+ else
+- g_test_skip ("tls-unique is not supported");
++ {
++ g_assert_true (g_tls_connection_get_protocol_version (
++ G_TLS_CONNECTION (test->client_connection)) == G_TLS_PROTOCOL_VERSION_TLS_1_3);
++ g_test_skip ("tls-unique is not supported");
++ }
+
+ /* drop the mic */
+ close_server_connection (test);
+--
+GitLab
+
diff --git a/user/glib/0001-gquark-fix-initialization-with-c-constructors.patch b/user/glib/0001-gquark-fix-initialization-with-c-constructors.patch
index 50a9a8c28..ba4c03906 100644
--- a/user/glib/0001-gquark-fix-initialization-with-c-constructors.patch
+++ b/user/glib/0001-gquark-fix-initialization-with-c-constructors.patch
@@ -20,7 +20,7 @@ diff --git a/glib/gquark.c b/glib/gquark.c
index 9e51a92..17ecd7f 100644
--- a/glib/gquark.c
+++ b/glib/gquark.c
-@@ -57,6 +57,11 @@ static gint quark_block_offset = 0;
+@@ -60,6 +60,11 @@ static gint quark_block_offset = 0;
void
g_quark_init (void)
{
diff --git a/user/glib/APKBUILD b/user/glib/APKBUILD
index fe75d5aa8..1de391541 100644
--- a/user/glib/APKBUILD
+++ b/user/glib/APKBUILD
@@ -1,53 +1,50 @@
# Contributor: Valery Kartel <valery.kartel@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=glib
-pkgver=2.60.0
+pkgver=2.84.0
pkgrel=0
pkgdesc="Common C routines used by Gtk+ and other libs"
url="https://developer.gnome.org/glib/"
arch="all"
-options="!check" # Now requires D-Bus running.
license="LGPL-2.1+"
-depends=""
+depends="dbus"
depends_dev="perl python3 attr-dev bzip2-dev libffi-dev util-linux-dev"
-checkdepends="tzdata shared-mime-info"
-makedepends="$depends_dev meson ninja pcre-dev xmlto zlib-dev"
+checkdepends="dbus-x11 tzdata shared-mime-info"
+makedepends="$depends_dev dbus-dev meson pcre2-dev py3-docutils xmlto zlib-dev"
triggers="$pkgname.trigger=/usr/share/glib-2.0/schemas:/usr/lib/gio/modules"
+subpackages="$pkgname-dbg $pkgname-doc $pkgname-static $pkgname-dev
+ $pkgname-lang $pkgname-bash-completion:bashcomp:noarch"
source="https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz
0001-gquark-fix-initialization-with-c-constructors.patch
broken-gio-tests.patch
- fix-spawn.patch
i386-fpu-test.patch
musl-no-locale.patch
ridiculous-strerror-nonconformance.patch
- meson-sucks-and-i-hate-you-so-much-right-now.patch
+ sigstksz.patch
"
-subpackages="$pkgname-dbg $pkgname-doc $pkgname-static $pkgname-dev $pkgname-lang $pkgname-bash-completion:bashcomp:noarch"
-prepare() {
- default_prepare
-
- mkdir -p dumb_meson
-}
+# secfixes:
+# 2.60.4-r0:
+# - CVE-2019-12450
build() {
- cd "$builddir"/dumb_meson
- meson --default-library=both \
+ meson setup \
+ --default-library=both \
-Dprefix=/usr \
-Dselinux=disabled \
- -Dman=true ..
- ninja
+ -Dman-pages=enabled \
+ --wrap-mode=nofallback \
+ build
+ meson compile -C build
}
check() {
- cd "$builddir"/dumb_meson
# workaround if a user builds it on a computer running X11
- DISPLAY= ninja test
+ DISPLAY= dbus-run-session meson test -C build
}
package() {
- cd "$builddir"/dumb_meson
- DESTDIR="$pkgdir" ninja install
+ DESTDIR="$pkgdir" meson install -C build
rm -rf "$pkgdir"/usr/lib/charset.alias
}
@@ -80,11 +77,10 @@ bashcomp() {
[ "$(ls -A "$pkgdir"/usr/share)" ] || rmdir "$pkgdir"/usr/share
}
-sha512sums="8184371aa5a8936ef86e578ee66307dadc351203ad0773c7669ab6d3f6bca49e7391ccafeb624d7bfe67f0d9aafe72799defee4660f254c3a3013c752e897e6c glib-2.60.0.tar.xz
-32e5aca9a315fb985fafa0b4355e4498c1f877fc1f0b58ad4ac261fb9fbced9f026c7756a5f2af7d61ce756b55c8cd02811bb08df397040e93510056f073756b 0001-gquark-fix-initialization-with-c-constructors.patch
-657d3fdf7f8ac7edd5bae572d00497f2236fbe5a91a577f3cb7ceb2ccf067f2944918b2b90308fc1061f45daf3d4910067b98642383ce8761da2a1faff6e9b4f broken-gio-tests.patch
-0f0a98784aeed92f33cd9239d2f668bdc6c09b84ed020825ae88f6aacf6a922152dc3e1384c40d9f30f54c5ab78fe17e0ee5c42b268b297b595d2a6cde5b8998 fix-spawn.patch
-aa7444bbdf7b88798adc67c15cdb8b7459450c0b7357caea16b74462c5c9179ba80d4018b1e656e90a5e3be5b2e3c14e9b8c0ccbb2ee4d8c92dc8fa627518b84 i386-fpu-test.patch
-34129be883011d266074783b7283af5c6a45055b85026b5aab47a3a0dfa1316a0a6502aaf78ab172356f67493ea7c4867b53279c25967a8cc5bee9320dbff96a musl-no-locale.patch
-56c10a0f64cbd8ce584d428f818e7e678fdeb40a32df792843208ddfa3135d362cc2077bc9fe3bfebe13ee6af0ecf6403a593ad727e0a92276074a17a9c7029c ridiculous-strerror-nonconformance.patch
-d788005bc92ed1510235b77a9a26eecd78840a3e915a64e53e1e93cd1efaaeb1b9b5edb115f41352fcbdab10006b91b4aae7af20184c904e869a0d6893080368 meson-sucks-and-i-hate-you-so-much-right-now.patch"
+sha512sums="72b85e30c535c5da7d8598d1cec02b1b481c467e612dbb396a0a64ad1d37cf2f1802c6fa576885c99cf8a22f4f0fc7dfdf42a3f32f7f40394f72db588fdbebb7 glib-2.84.0.tar.xz
+ee128ea2f1b4d1b3179bbc4af56ebb671e1e6a1d0c4d9b279ecf77bc33dc6ab34d5dcbe35af7f5fd703c4eda3cc06cfabe1ee39ead059401ff7902500f2eefe6 0001-gquark-fix-initialization-with-c-constructors.patch
+348fa10b38c8d7ea4181dbfd321c33d62475fc83461235e33ff5fb5170f2af44e587bd2f4805c49004ef6e33ed89252a493cf88687a246c4e34c1c09e14cb047 broken-gio-tests.patch
+69e23d20b2682eb6adc013f78160902ad9a9703e06904b98725541b6d20f6bf5ce8958a5b43831485c87f6d8116768f591a5d5ee6c2c6ce6843581d6d05b8599 i386-fpu-test.patch
+0b5515a9fd4bfe566d2d236374a8cdbec49191030aa74c56e0fe1b297daf65b172ce5e02477d3bc1e67a2c07bc979fd9de4ce2fb7a00a9754f88b5e76d2dddf2 musl-no-locale.patch
+06af1c22004c34ae896bb5eaeb94599b42e46769408ac4c2575d809307922005d65d0053b9aeccb2049b85303cc1ba5d26cac733608aa2d407ad9ae39210beb0 ridiculous-strerror-nonconformance.patch
+893a61dac6b4da6330bab9d5b9a9f7b3ae6643f4681895e24cc4a55518bdf16996af6175149299fbf782e633f7a37e308e7c3b52f9eb58d24f7fcf0c015e947b sigstksz.patch"
diff --git a/user/glib/broken-gio-tests.patch b/user/glib/broken-gio-tests.patch
index 0c1e3acb5..bb5b32418 100644
--- a/user/glib/broken-gio-tests.patch
+++ b/user/glib/broken-gio-tests.patch
@@ -1,7 +1,7 @@
Requires update-desktop-database
--- glib-2.52.1/gio/tests/appinfo.c.old 2016-10-22 00:17:49.000000000 -0500
+++ glib-2.52.1/gio/tests/appinfo.c 2017-08-20 23:23:32.581229536 -0500
-@@ -486,7 +486,7 @@
+@@ -637,7 +637,7 @@
g_test_add_func ("/appinfo/launch-context", test_launch_context);
g_test_add_func ("/appinfo/launch-context-signals", test_launch_context_signals);
g_test_add_func ("/appinfo/tryexec", test_tryexec);
@@ -15,7 +15,7 @@ Requires update-desktop-database
Requires working iconv
--- glib-2.52.1/gio/tests/converter-stream.c.old 2016-10-22 00:18:11.000000000 -0500
+++ glib-2.52.1/gio/tests/converter-stream.c 2017-08-20 23:21:31.711358101 -0500
-@@ -1203,7 +1203,7 @@
+@@ -1208,7 +1208,7 @@
};
CharsetTest charset_tests[] = {
{ "/converter-input-stream/charset/utf8->latin1", "UTF-8", "\303\205rr Sant\303\251", "ISO-8859-1", "\305rr Sant\351", 0 },
@@ -27,35 +27,24 @@ Requires working iconv
-Requires dconf
---- glib-2.52.1/gio/tests/gsettings.c.old 2017-08-20 23:26:31.284378974 -0500
-+++ glib-2.52.1/gio/tests/gsettings.c 2017-08-20 23:26:46.637699607 -0500
-@@ -2603,6 +2603,8 @@
- gchar *schema_text;
- gchar *enums;
- gint result;
-+ printf("1..0\n");
-+ return 0;
-
- setlocale (LC_ALL, "");
-
-
Requires update-desktop-database
--- glib-2.52.1/gio/tests/resources.c.old 2016-10-22 00:18:12.000000000 -0500
+++ glib-2.52.1/gio/tests/resources.c 2017-08-20 23:39:47.127025718 -0500
-@@ -426,6 +426,7 @@
+@@ -819,6 +819,7 @@
g_assert_cmpstr (g_bytes_get_data (data, NULL), ==, "test1\n");
g_bytes_unref (data);
+#if 0 // dlclose is noop on musl
g_type_module_unuse (G_TYPE_MODULE (module));
- found = g_resources_get_info ("/resourceplugin/test1.txt",
-@@ -434,6 +435,7 @@
- g_assert (!found);
+ found = g_resources_get_info ("/resourceplugin/test1.txt",
+--- a/gio/tests/resources.c
++++ b/gio/tests/resources.c
+@@ -828,6 +828,7 @@
+ g_assert_false (found);
g_assert_error (error, G_RESOURCE_ERROR, G_RESOURCE_ERROR_NOT_FOUND);
g_clear_error (&error);
+#endif
- }
- }
+ g_clear_object (&module);
+ }
diff --git a/user/glib/fix-spawn.patch b/user/glib/fix-spawn.patch
deleted file mode 100644
index df352fdc3..000000000
--- a/user/glib/fix-spawn.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- glib-2.52.1/glib/tests/spawn-singlethread.c.old 2016-10-22 00:21:35.000000000 -0500
-+++ glib-2.52.1/glib/tests/spawn-singlethread.c 2017-08-20 22:31:52.548311424 -0500
-@@ -210,7 +210,7 @@
- g_test_init (&argc, &argv, NULL);
-
- dirname = g_path_get_dirname (argv[0]);
-- echo_prog_path = g_build_filename (dirname, "test-spawn-echo" EXEEXT, NULL);
-+ echo_prog_path = g_build_filename (dirname, "../test-spawn-echo" EXEEXT, NULL);
- if (!g_file_test (echo_prog_path, G_FILE_TEST_EXISTS))
- {
- g_free (echo_prog_path);
---- glib-2.52.1/glib/tests/spawn-multithreaded.c.old 2016-10-22 00:21:44.000000000 -0500
-+++ glib-2.52.1/glib/tests/spawn-multithreaded.c 2017-08-20 22:32:15.981614460 -0500
-@@ -222,7 +222,7 @@
- g_test_init (&argc, &argv, NULL);
-
- dirname = g_path_get_dirname (argv[0]);
-- echo_prog_path = g_build_filename (dirname, "test-spawn-echo" EXEEXT, NULL);
-+ echo_prog_path = g_build_filename (dirname, "../test-spawn-echo" EXEEXT, NULL);
- if (!g_file_test (echo_prog_path, G_FILE_TEST_EXISTS))
- {
- g_free (echo_prog_path);
diff --git a/user/glib/i386-fpu-test.patch b/user/glib/i386-fpu-test.patch
index 986c33164..f400a10d6 100644
--- a/user/glib/i386-fpu-test.patch
+++ b/user/glib/i386-fpu-test.patch
@@ -1,6 +1,6 @@
--- glib-2.54.2/glib/tests/timer.c.old 2016-10-22 00:21:30.000000000 -0500
+++ glib-2.54.2/glib/tests/timer.c 2018-03-03 18:39:40.424741042 -0600
-@@ -203,7 +203,10 @@
+@@ -386,7 +386,10 @@
{
g_test_init (&argc, &argv, NULL);
diff --git a/user/glib/meson-sucks-and-i-hate-you-so-much-right-now.patch b/user/glib/meson-sucks-and-i-hate-you-so-much-right-now.patch
deleted file mode 100644
index ba38bdec2..000000000
--- a/user/glib/meson-sucks-and-i-hate-you-so-much-right-now.patch
+++ /dev/null
@@ -1,8 +0,0 @@
---- glib-2.58.0/glib/libcharset/meson.build.old 2018-08-30 17:12:09.000000000 +0000
-+++ glib-2.58.0/glib/libcharset/meson.build 2018-09-10 03:42:01.930000000 +0000
-@@ -6,4 +6,5 @@
- charset_lib = static_library('charset', 'localcharset.c',
- include_directories : configinc,
- pic : true,
-+ install : true,
- c_args : [ '-DGLIB_CHARSETALIAS_DIR="@0@"'.format(charsetalias_dir) ] + glib_hidden_visibility_args)
diff --git a/user/glib/musl-no-locale.patch b/user/glib/musl-no-locale.patch
index 33b3c32df..461454fc0 100644
--- a/user/glib/musl-no-locale.patch
+++ b/user/glib/musl-no-locale.patch
@@ -1,6 +1,6 @@
--- glib-2.52.1/glib/tests/option-context.c.old 2016-10-22 05:21:34.000000000 +0000
+++ glib-2.52.1/glib/tests/option-context.c 2017-08-20 23:14:46.364133517 +0000
-@@ -638,7 +638,7 @@
+@@ -641,7 +641,7 @@
old_locale = g_strdup (setlocale (LC_NUMERIC, locale));
current_locale = setlocale (LC_NUMERIC, NULL);
@@ -9,20 +9,9 @@
{
fprintf (stderr, "Cannot set locale to %s, skipping\n", locale);
goto cleanup;
---- glib-2.52.1/glib/tests/gdatetime.c.old 2017-03-16 20:12:05.000000000 -0500
-+++ glib-2.52.1/glib/tests/gdatetime.c 2017-08-20 22:20:37.805908983 -0500
-@@ -1068,7 +1068,7 @@
-
- oldlocale = g_strdup (setlocale (LC_ALL, NULL));
- setlocale (LC_ALL, "fa_IR.utf-8");
-- if (strstr (setlocale (LC_ALL, NULL), "fa_IR") != NULL)
-+ if ((1 == 0) && strstr (setlocale (LC_ALL, NULL), "fa_IR") != NULL)
- {
- TEST_PRINTF_TIME (23, 0, 0, "%OH", "\333\262\333\263"); /* '23' */
- TEST_PRINTF_TIME (23, 0, 0, "%OI", "\333\261\333\261"); /* '11' */
--- glib-2.52.1/glib/tests/convert.c.old 2016-10-22 00:21:34.000000000 -0500
+++ glib-2.52.1/glib/tests/convert.c 2017-08-20 22:51:48.363430954 -0500
-@@ -707,7 +707,7 @@
+@@ -995,7 +995,7 @@
g_test_add_func ("/conversion/no-conv", test_no_conv);
g_test_add_func ("/conversion/iconv-state", test_iconv_state);
@@ -32,30 +21,9 @@
+ //g_test_add_func ("/conversion/byte-order", test_byte_order);
g_test_add_func ("/conversion/unicode", test_unicode_conversions);
g_test_add_func ("/conversion/filename-utf8", test_filename_utf8);
---- glib-2.54.2/glib/tests/collate.c.old 2017-03-08 21:37:21.000000000 -0600
-+++ glib-2.54.2/glib/tests/collate.c 2018-03-01 01:07:56.957714447 -0600
-@@ -279,7 +279,7 @@
-
- g_setenv ("LC_ALL", "en_US", TRUE);
- locale = setlocale (LC_ALL, "");
-- if (locale == NULL || strcmp (locale, "en_US") != 0)
-+ //if (locale == NULL || strcmp (locale, "en_US") != 0)
- {
- g_test_message ("No suitable locale, skipping tests");
- missing_locale = TRUE;
---- glib-2.54.2/tests/run-collate-tests.sh.old 2016-10-22 00:17:10.000000000 -0500
-+++ glib-2.54.2/tests/run-collate-tests.sh 2018-03-01 01:22:01.107722429 -0600
-@@ -1,5 +1,7 @@
- #! /bin/sh
-
-+exit 77
-+
- fail ()
- {
- echo "Test failed: $*"
--- glib-2.56.1/glib/tests/gdatetime.c.old 2018-07-02 21:11:49.890000000 -0500
+++ glib-2.56.1/glib/tests/gdatetime.c 2018-07-02 21:19:30.340000000 -0500
-@@ -2329,7 +2329,6 @@
+@@ -3547,7 +3547,6 @@
g_test_add_func ("/GDateTime/printf", test_GDateTime_printf);
g_test_add_func ("/GDateTime/non_utf8_printf", test_non_utf8_printf);
g_test_add_func ("/GDateTime/strftime", test_strftime);
diff --git a/user/glib/ridiculous-strerror-nonconformance.patch b/user/glib/ridiculous-strerror-nonconformance.patch
index 3ffc0aafa..b900672a8 100644
--- a/user/glib/ridiculous-strerror-nonconformance.patch
+++ b/user/glib/ridiculous-strerror-nonconformance.patch
@@ -1,6 +1,6 @@
--- glib-2.52.1/glib/tests/strfuncs.c.old 2016-10-22 00:21:44.000000000 -0500
+++ glib-2.52.1/glib/tests/strfuncs.c 2017-08-20 22:48:18.233702952 -0500
-@@ -1335,7 +1335,7 @@
+@@ -2067,7 +2067,7 @@
setlocale (LC_ALL, "C");
strs = g_hash_table_new (g_str_hash, g_str_equal);
diff --git a/user/glib/sigstksz.patch b/user/glib/sigstksz.patch
new file mode 100644
index 000000000..b0de031f1
--- /dev/null
+++ b/user/glib/sigstksz.patch
@@ -0,0 +1,20 @@
+See-also: https://inbox.vuxu.org/musl/D3S38EL8UO9V.U731IQFLR32X@ayaya.dev/
+
+--- glib-2.84.0/glib/tests/unix.c.old 2025-03-06 07:09:13.000000000 -0600
++++ glib-2.84.0/glib/tests/unix.c 2025-05-04 21:55:45.796547202 -0500
+@@ -588,13 +588,13 @@
+ #ifndef SA_ONSTACK
+ g_test_skip ("alternate stack is not supported");
+ #else
+- size_t minsigstksz = MINSIGSTKSZ;
++ size_t minsigstksz = 32768;
+ guint8 *stack_memory = NULL;
+ guint8 *zero_mem = NULL;
+ stack_t stack = { 0 };
+ stack_t old_stack = { 0 };
+
+-#ifdef _SC_MINSIGSTKSZ
++#if 0
+ /* Use the kernel-provided minimum stack size, if available. Otherwise default
+ * to MINSIGSTKSZ. Unfortunately that might not be big enough for huge
+ * register files for big CPU instruction set extensions. */
diff --git a/user/glibmm/APKBUILD b/user/glibmm/APKBUILD
index 9ceb52bb2..a3a74e1c5 100644
--- a/user/glibmm/APKBUILD
+++ b/user/glibmm/APKBUILD
@@ -1,37 +1,38 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=glibmm
-pkgver=2.60.0
+pkgver=2.66.5
pkgrel=0
pkgdesc="C++ interfaces for glib"
url="https://gnome.org"
arch="all"
+options="!check"
license="GPL-2.0+ AND LGPL-2.1+"
depends="glib-networking"
-makedepends="glib-dev>=2.60.0 libsigc++-dev"
+makedepends="doxygen glib-dev>=2.60.0 graphviz libsigc++-dev meson ninja
+ libxslt"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.gnome.org/sources/glibmm/${pkgver%.*}/glibmm-$pkgver.tar.xz"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
+ meson \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var
- make
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ -Dbuild-documentation=true \
+ . output
+ ninja -C output
}
check() {
- cd "$builddir"
- make check
+ ninja -C output test
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" ninja -C output install
}
-sha512sums="ea0477d5cb6e59019e87f929630ff32ac38dd5e4fb53fe84ef64b5b41c1090c8e10a0a67b26c786ab4d9ebf64b993fa0044333b4aa8554c331a0a6d02039c5ad glibmm-2.60.0.tar.xz"
+sha512sums="3c1f91a1d91c23c5975254f5bf499f6752b6e3f1b056511133722cdfc853ffd2a94c375c0441dbb3f0933e7a257449ca4e365355ed580bd72d88c08d99a76684 glibmm-2.66.5.tar.xz"
diff --git a/user/glm/APKBUILD b/user/glm/APKBUILD
index e841b0947..17f12e864 100644
--- a/user/glm/APKBUILD
+++ b/user/glm/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=glm
-pkgver=0.9.9.3
-pkgrel=0
+pkgver=0.9.9.5
+pkgrel=1
pkgdesc="C++ header-only mathematics library for graphics programming"
url="https://glm.g-truc.net/"
arch="noarch"
@@ -14,26 +14,26 @@ builddir="$srcdir/$pkgname"
replaces="glm-dev"
build() {
- mkdir build
- cd build
+ mkdir -p build
- cmake .. \
+ # See #1170, and upstream#1087
+ export CXXFLAGS="$CXXFLAGS -fno-ipa-modref -fno-stack-protector"
+ cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_LIBDIR=lib \
- -DGLM_TEST_ENABLE=bool:ON
- make
+ -DGLM_TEST_ENABLE=bool:ON \
+ -Bbuild
+ make -C build
}
check() {
- cd build
- make test
+ make -C build test
}
package() {
- cd build
- make install DESTDIR="$pkgdir"
+ make -C build install DESTDIR="$pkgdir"
}
-sha512sums="eb7589345eb627d9fda84771bd2cf3eb0e4e9e48bf6bb7490bd8844b66558717de5dc96cde9d66e81f7ba4e54090f18dbe1bbccb2452ed0ed8c17cdf7b6e4aa2 glm-0.9.9.3.zip
+sha512sums="ea4f03d31596e27bd8c3d8d0a82a3ae0050ec0df5a747f3d92e467eacab579bb8b191499cb63bf8574da7a1085b9fe6dd7cd0ce93b758d8d7978b2389cc58b94 glm-0.9.9.5.zip
954495cc875b9e70f1957f54cdaa44738268a5a1104036edcdfd74736f8a3385725f29032a533f2a5acbdbfa19d2fe4bc80ef9fdb49d3e8bdc5dc00db86c813a be.patch"
diff --git a/user/glpk/APKBUILD b/user/glpk/APKBUILD
new file mode 100644
index 000000000..d3261d526
--- /dev/null
+++ b/user/glpk/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: Zach van Rijn <me@zv.io>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=glpk
+pkgver=5.0
+pkgrel=0
+pkgdesc="Multiple-precision floating-point library"
+url="https://www.gnu.org/software/glpk/"
+arch="all"
+license="GPL-3.0+"
+depends=""
+makedepends="gmp-dev"
+subpackages="$pkgname-dev"
+source="https://ftp.gnu.org/gnu/glpk/${pkgname}-${pkgver}.tar.gz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --with-gmp
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="4e92195fa058c707146f2690f3a38b46c33add948c852f67659ca005a6aa980bbf97be96528b0f8391690facb880ac2126cd60198c6c175e7f3f06cca7e29f9d glpk-5.0.tar.gz"
diff --git a/user/glslang/APKBUILD b/user/glslang/APKBUILD
new file mode 100644
index 000000000..afe29113f
--- /dev/null
+++ b/user/glslang/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=glslang
+pkgver=14.3.0
+pkgrel=0
+pkgdesc="OpenGL and OpenGL ES reference compiler for shading languages"
+url="https://github.com/KhronosGroup/glslang"
+arch="all"
+license="BSD-3-Clause AND MIT AND BSD-2-Clause AND GPL-3.0+ WITH Bison-2.2-exception"
+depends="spirv-tools"
+makedepends="cmake python3 spirv-tools-dev"
+subpackages="$pkgname-dev"
+source="glslang-$pkgver.tar.gz::https://github.com/KhronosGroup/glslang/archive/$pkgver.tar.gz
+ remap-endian.patch
+ "
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DALLOW_EXTERNAL_SPIRV_TOOLS=YES \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="ce6d09cc4d98b01d162ec5a196eec017c4a5f25eaf98c6612695d911f8d136c2f7193ff8f2c07931b2e94182d2c654833adc3b645f0c225e1d07c4e6e7abfd76 glslang-14.3.0.tar.gz
+4745982dac709fc106f50e4f51800cefef07f11f609dfdaa234c3d61fab5f7bd2350720a294a686e88eb92916d1ccdfa203993419d697eb780ee741395bde8c2 remap-endian.patch"
diff --git a/user/glslang/remap-endian.patch b/user/glslang/remap-endian.patch
new file mode 100644
index 000000000..4c1fc78ff
--- /dev/null
+++ b/user/glslang/remap-endian.patch
@@ -0,0 +1,46 @@
+Issue: https://github.com/KhronosGroup/glslang/issues/3799
+
+--- glslang-14.3.0/StandAlone/spirv-remap.cpp.old 2024-06-25 17:42:43.000000000 -0500
++++ glslang-14.3.0/StandAlone/spirv-remap.cpp 2024-11-22 15:27:02.655869572 -0600
+@@ -38,6 +38,7 @@
+ #include <cstring>
+ #include <stdexcept>
+ #include <filesystem>
++#include <byteswap.h>
+
+ //
+ // Include remapper
+@@ -48,6 +49,8 @@
+
+ typedef unsigned int SpvWord;
+
++ static const SpvWord MagicNumber = 0x07230203;
++
+ // Poor man's basename: given a complete path, return file portion.
+ // E.g:
+ // Linux: /foo/bar/test -> test
+@@ -82,6 +85,7 @@
+ void read(std::vector<SpvWord>& spv, const std::string& inFilename, int verbosity)
+ {
+ std::ifstream fp;
++ bool isNativeEndian = true;
+
+ if (verbosity > 0)
+ logHandler(std::string(" reading: ") + inFilename);
+@@ -97,11 +101,16 @@
+ spv.reserve(size_t(fp.tellg()) / sizeof(SpvWord));
+ fp.seekg(0, fp.beg);
+
++ char begin = fp.peek();
++ char native_begin = reinterpret_cast<const char*>(&MagicNumber)[0];
++ if (begin != native_begin) isNativeEndian = false;
++
+ while (!fp.eof()) {
+ SpvWord inWord;
+ fp.read((char *)&inWord, sizeof(inWord));
+
+ if (!fp.eof()) {
++ if (!isNativeEndian) inWord = __bswap_32(inWord);
+ spv.push_back(inWord);
+ if (fp.fail())
+ errHandler(std::string("error reading file: ") + inFilename);
diff --git a/user/glu/APKBUILD b/user/glu/APKBUILD
index 7681c58ae..1047e2666 100644
--- a/user/glu/APKBUILD
+++ b/user/glu/APKBUILD
@@ -1,26 +1,19 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=glu
-pkgver=9.0.0
-pkgrel=5
+pkgver=9.0.1
+pkgrel=1
pkgdesc="Mesa OpenGL Utility library"
url="https://cgit.freedesktop.org/mesa/glu/"
arch="all"
options="!check" # No test suite.
license="SGI-B-1.1 AND SGI-B-2.0"
depends=""
-depends_dev="mesa-dev"
+depends_dev="libglvnd-dev"
makedepends="$depends_dev"
subpackages="$pkgname-dev"
-source="ftp://ftp.freedesktop.org/pub/mesa/glu/glu-$pkgver.tar.bz2"
-
-prepare() {
- cd "$builddir"
- update_config_sub
- default_prepare
-}
+source="ftp://ftp.freedesktop.org/pub/mesa/glu/glu-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -30,8 +23,7 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="ff920e3fbca739794e1432a92fdd8517aa732110fea71ed724185425042f83ce18e9866c16f95c6e10f6993f0814a90fac9636e2b3d8ca2084d1ac0a860f61c8 glu-9.0.0.tar.bz2"
+sha512sums="31d5ae196a42df61a6b161f6107049dbcb59c1517d18dd106324297543b90cff5f0a0720328364f9befaeb7f36d8425ec37b05dfa33f1b750cbcda423888f71e glu-9.0.1.tar.gz"
diff --git a/user/gmime/3.2.3-broken-tests.patch b/user/gmime/3.2.3-broken-tests.patch
index 219580761..878873d7e 100644
--- a/user/gmime/3.2.3-broken-tests.patch
+++ b/user/gmime/3.2.3-broken-tests.patch
@@ -1,5 +1,5 @@
From e62f2a250092fc30ebe242c6acbf46320c1d0891 Mon Sep 17 00:00:00 2001
-From: Luis Ressel <aranea@aixah.de>
+From: Mira Ressel <aranea@aixah.de>
Date: Mon, 25 Feb 2019 07:34:54 +0100
Subject: [PATCH] Disable broken tests
diff --git a/user/gmime/APKBUILD b/user/gmime/APKBUILD
index 37f1bc7ee..a6380966c 100644
--- a/user/gmime/APKBUILD
+++ b/user/gmime/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Luis Ressel <aranea@aixah.de>
-# Maintainer: Luis Ressel <aranea@aixah.de>
+# Contributor: Mira Ressel <aranea@aixah.de>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gmime
-pkgver=3.2.3
+pkgver=3.2.7
pkgrel=0
pkgdesc="MIME utility library"
url="https://developer.gnome.org/gmime/"
@@ -9,14 +9,19 @@ arch="all"
license="LGPL-2.1+"
depends=""
depends_dev="gpgme-dev libidn2-dev zlib-dev"
-makedepends="$depends_dev"
checkdepends="gnupg"
+makedepends="$depends_dev autoconf automake libtool gtk-doc"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz
- 3.2.3-broken-tests.patch"
+ 3.2.3-broken-tests.patch
+ "
+
+prepare() {
+ default_prepare
+ autoreconf -vif
+}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,20 +34,13 @@ build() {
make
}
-prepare() {
- default_prepare
- autoreconf -vif
-}
-
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="abaf9059baf0c045d5b62757953ee2fa0779462eb32142bb41be40c376fc7ac2b3e4a56fd66177fbbe1dca35c6168a251542b14a844125c2cfcc9a99888179b4 gmime-3.2.3.tar.xz
-443e768e15eb25116368739957ac31a30cd10a921c113b76af1a0baf0c690ca1346463577289d24ce8f46deb014dd014040033bc1f3d02d8a2190c70dd4c2a74 3.2.3-broken-tests.patch"
+sha512sums="2c8fecd6eb74c9e956c419ce111bef6280916ea3756a534b6b800a273f0fff260717cda7fefd4bd4c6ddb27973112ec6e73fa971fa74bb9aa04cfe587d45f10b gmime-3.2.7.tar.xz
+19395defdb4287cb0f605676b1431db4d218258e9c6183cc0bec49ceaf75e7966fb2a7e41529e80595d71306870d20424454ef4e9fb836a364f9d44df78fa96a 3.2.3-broken-tests.patch"
diff --git a/user/gnu-ghostscript/APKBUILD b/user/gnu-ghostscript/APKBUILD
index 14ce2c5f6..ca146ecb8 100644
--- a/user/gnu-ghostscript/APKBUILD
+++ b/user/gnu-ghostscript/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gnu-ghostscript
pkgver=9.14.1
-pkgrel=2
+pkgrel=4
pkgdesc="PostScript utilities"
url="https://www.gnu.org/software/ghostscript/"
arch="all"
@@ -14,10 +14,11 @@ makedepends="cups-dev dbus-dev fontconfig-dev freetype-dev lcms2-dev libice-dev
subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
source="ftp://ftp.gnu.org/gnu/ghostscript/gnu-ghostscript-$pkgver.tar.xz
do-not-use-sprintf.patch
+ locksafe.patch
+ ft-callback-def.patch
"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,16 +33,16 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
make DESTDIR="$pkgdir" soinstall
install -D -m644 base/*.h "$pkgdir"/usr/include/ghostscript
}
sha512sums="658f6ae14b29965c7959b9bd1463760d7fb03b35251446fc37101dbe7ee2866c74a0803e22b2f4488be3221d026578be1d6be7b562ff240036134fbf83edabf9 gnu-ghostscript-9.14.1.tar.xz
-1c4d79633ecece9f4de7a672f2888939be7d1e0ba24f3a66500fdfbb37e081e0f323a5efa0d1547fed51206e5a95d3b0659c0ea845d0bc333f281dfb88fcc040 do-not-use-sprintf.patch"
+1c4d79633ecece9f4de7a672f2888939be7d1e0ba24f3a66500fdfbb37e081e0f323a5efa0d1547fed51206e5a95d3b0659c0ea845d0bc333f281dfb88fcc040 do-not-use-sprintf.patch
+ee06c1753147bcce85e3cdc6c254ef2c75b7f1dfdc0a9bce82bc24bb8d814470ba81be5372fb4bec3a999190f53c4615226fd3dbf05969c436b480eb2ec14f37 locksafe.patch
+c404dacba3e1739933b296c9ecd305f8df48e586c1d593750c5e1ca490232c8897eb20596e96262d5ae59683a5f70717ad99f4a7f5537a7b3ae9bb24f6013385 ft-callback-def.patch"
diff --git a/user/gnu-ghostscript/ft-callback-def.patch b/user/gnu-ghostscript/ft-callback-def.patch
new file mode 100644
index 000000000..0bec225c9
--- /dev/null
+++ b/user/gnu-ghostscript/ft-callback-def.patch
@@ -0,0 +1,19 @@
+https://gitlab.kitware.com/vtk/vtk/-/issues/18033
+
+diff -ur a/base/fapi_ft.c b/base/fapi_ft.c
+--- a/base/fapi_ft.c 2022-02-05 02:01:29.370000000 +0000
++++ b/base/fapi_ft.c 2022-02-05 02:03:31.520000000 +0000
+@@ -1,3 +1,13 @@
++/* FT_CALLBACK_DEF no longer exported since freetype-2.10.3 */
++/* has been moved to <freetype/internal/compiler-macros.h> */
++# ifndef FT_CALLBACK_DEF
++# ifdef __cplusplus
++# define FT_CALLBACK_DEF( x ) extern "C" x
++# else
++# define FT_CALLBACK_DEF( x ) static x
++# endif
++# endif /* FT_CALLBACK_DEF */
++
+ /* Copyright (C) 2001-2012 Artifex Software, Inc.
+ All Rights Reserved.
+
diff --git a/user/gnu-ghostscript/locksafe.patch b/user/gnu-ghostscript/locksafe.patch
new file mode 100644
index 000000000..cc4bad2b5
--- /dev/null
+++ b/user/gnu-ghostscript/locksafe.patch
@@ -0,0 +1,25 @@
+Bug report: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=840691
+Symptom: 'invalidaccess -7' opening PostScript files in Evince, Okular, etc
+
+--- gnu-ghostscript-9.14.1/Resource/Init/gs_init.ps.old 2016-11-06 17:40:19.000000000 +0000
++++ gnu-ghostscript-9.14.1/Resource/Init/gs_init.ps 2019-06-26 02:22:56.825331976 +0000
+@@ -2018,7 +2018,7 @@
+
+ /.locksafe {
+ .locksafe_userparams
+- systemdict /getenv {pop //false} put
++ systemdict /getenv {pop //false} .forceput
+ % setpagedevice has the side effect of clearing the page, but
+ % we will just document that. Using setpagedevice keeps the device
+ % properties and pagedevice .LockSafetyParams in agreement even
+--- gnu-ghostscript-9.14.1/Resource/Init/gs_init.ps.in.old 2016-11-06 16:53:19.000000000 +0000
++++ gnu-ghostscript-9.14.1/Resource/Init/gs_init.ps.in 2019-06-26 03:07:59.256491684 +0000
+@@ -2018,7 +2018,7 @@
+
+ /.locksafe {
+ .locksafe_userparams
+- systemdict /getenv {pop //false} put
++ systemdict /getenv {pop //false} .forceput
+ % setpagedevice has the side effect of clearing the page, but
+ % we will just document that. Using setpagedevice keeps the device
+ % properties and pagedevice .LockSafetyParams in agreement even
diff --git a/user/gnu-netcat/APKBUILD b/user/gnu-netcat/APKBUILD
new file mode 100644
index 000000000..6123aee0e
--- /dev/null
+++ b/user/gnu-netcat/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Nathan <ndowens@artixlinux.org>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=gnu-netcat
+pkgver=0.7.1
+pkgrel=0
+pkgdesc="GNU rewrite of netcat"
+url="http://netcat.sourceforge.net" # No HTTPS
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="texinfo"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://downloads.sourceforge.net/sourceforge/netcat/netcat-$pkgver.tar.bz2"
+builddir="$srcdir/netcat-$pkgver"
+
+prepare() {
+ update_config_guess
+ default_prepare
+}
+
+build() {
+ ./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="283c02f849c3bb62615a5ccb7796192804dafcecb34f3c6b553cbc12c715654963b81e253762923c6069be9768b93dde576a392b89b167912c323354f1376e83 netcat-0.7.1.tar.bz2"
diff --git a/user/gnucobol/0001-move-packed-decimal.patch b/user/gnucobol/0001-move-packed-decimal.patch
new file mode 100644
index 000000000..d5251172a
--- /dev/null
+++ b/user/gnucobol/0001-move-packed-decimal.patch
@@ -0,0 +1,30 @@
+See also:
+
+* https://sourceforge.net/p/gnucobol/bugs/904/
+
+diff -ur a/gnucobol-3.2/libcob/numeric.c b/gnucobol-3.2/libcob/numeric.c
+--- a/libcob/numeric.c 2023-08-18 01:07:41.324059298 +0000
++++ b/libcob/numeric.c 2023-08-18 01:31:31.294137417 +0000
+@@ -2739,17 +2739,12 @@
+ }
+ } else {
+ unsigned char *pos = fld2 + fld2_size - 1;
+- if (COB_FIELD_HAVE_SIGN (f2)) {
+- if (!fld1_sign) {
+- *pos &= 0xF0;
+- *pos |= 0x0C;
+- } else {
+- *pos &= 0xF0;
+- *pos |= fld1_sign;
+- }
+- } else {
+- *pos &= 0xF0;
++ if (!COB_FIELD_HAVE_SIGN (f2)) {
+ *pos |= 0x0F;
++ } else if (fld1_sign == 0x0D) {
++ *pos = (*pos & 0xF0) | 0x0D;
++ } else {
++ *pos = (*pos & 0xF0) | 0x0C;
+ }
+ if (!(COB_FIELD_DIGITS (f2) & 1) /* -> digits % 2 == 0 */) {
+ *fld2 &= 0x0F;
diff --git a/user/gnucobol/0002-errno.patch b/user/gnucobol/0002-errno.patch
new file mode 100644
index 000000000..968190733
--- /dev/null
+++ b/user/gnucobol/0002-errno.patch
@@ -0,0 +1,26 @@
+See also:
+
+* https://git.adelielinux.org/adelie/packages/-/issues/1045#note_13472
+
+--- a/cobc/cobc.c.gc32 Sat Jul 22 17:01:52 2023
++++ b/cobc/cobc.c Thu Aug 17 23:01:33 2023
+@@ -2358,6 +2358,10 @@
+ DECLNORET static void COB_A_NORETURN
+ cobc_terminate (const char *str)
+ {
++ /* must be executed before anything that may adjust errno, ...
++ like the listing code below. */
++ const char *errno_str = cb_get_strerror ();
++
+ if (cb_src_list_file) {
+ set_listing_date ();
+ set_standard_title ();
+@@ -2365,7 +2369,7 @@
+ cobc_elided_strcpy (cb_listing_filename, str, sizeof (cb_listing_filename), 0);
+ print_program_header ();
+ }
+- cb_perror (0, "cobc: %s: %s", str, cb_get_strerror ());
++ cb_perror (0, "cobc: %s: %s", str, errno_str);
+ if (cb_src_list_file) {
+ print_program_trailer ();
+ }
diff --git a/user/gnucobol/APKBUILD b/user/gnucobol/APKBUILD
new file mode 100644
index 000000000..f0807703b
--- /dev/null
+++ b/user/gnucobol/APKBUILD
@@ -0,0 +1,58 @@
+# Contributor: Max Rees <maxcrees@me.com>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=gnucobol
+pkgver=3.2
+pkgrel=0
+pkgdesc="Free COBOL compiler"
+url="https://www.gnu.org/software/gnucobol/"
+arch="all"
+license="GPL-3.0+ AND LGPL-3.0+ AND GFDL-1.3"
+# Since it compiles to C as an intermediate, the headers / libraries must
+# always be present and thus there is no -dev subpackage.
+depends="db-dev gmp-dev json-c-dev libxml2-dev ncurses-dev"
+makedepends="autoconf automake help2man libtool texinfo"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://ftp.gnu.org/gnu/gnucobol/gnucobol-$pkgver.tar.xz
+ https://distfiles.adelielinux.org/source/archive/$pkgname-$pkgver/newcob.val.Z
+
+ 0001-move-packed-decimal.patch
+ 0002-errno.patch
+ "
+
+prepare() {
+ default_prepare
+ autoreconf -vif
+ # For "make test"
+ cp "$srcdir/newcob.val.Z" "$builddir/tests/cobol85"
+}
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --enable-debug
+ make
+}
+
+check() {
+ #1045
+ for k in 774 775 818 887 1139 1140 1203 1215; do
+ sed -i tests/testsuite -e "/^$k;/d";
+ done
+
+ make test
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="1aef3c1bf7283219a7cb1e7b38ba5c5e299c0a83666ab6afdbb5713f1f791b23575ca51d546c4f2f036217060269028bbce4b5babbeb4f721b57495d5f258ff7 gnucobol-3.2.tar.xz
+eb784866d1a335834074fbe103b5c5f5da810d847ae14a64316ecbb2c0f95ef751d2f2ec609b8fa21ef0b775817dc61115a574608ec89750d779ae0afbb95379 newcob.val.Z
+d913d314172b4476ac7488010a03d52aac4c25502333a146725d459655f128026b74b938a2224d15fbfbd91f91dad7202d1546e7f77c01e16e242341bbada62c 0001-move-packed-decimal.patch
+caaaca806c04db9e89f535c31444c647da926b76bed421c44ed1ea199d75d2fc4e1a5141eeff9c0985c2430513d416756443e8ca807bda9c3a496171e22026f0 0002-errno.patch"
diff --git a/user/gnumeric/APKBUILD b/user/gnumeric/APKBUILD
index 07c02e4ef..551d4d6c3 100644
--- a/user/gnumeric/APKBUILD
+++ b/user/gnumeric/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gnumeric
-pkgver=1.12.44
-pkgrel=1
+pkgver=1.12.50
+pkgrel=0
pkgdesc="GNOME spreadsheet software"
url="http://www.gnumeric.org/"
arch="all"
@@ -12,16 +12,12 @@ options="!check" # Fails with:
license="GPL-2.0-only OR GPL-3.0-only"
depends=""
makedepends="byacc gobject-introspection-dev goffice-dev gtk+3.0-dev intltool
- itstool libgda-dev libxml2-utils perl-dev zlib-dev"
+ itstool libgda-dev libxml2-utils perl-dev zlib-dev wayland-protocols"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="https://ftp.gnome.org/pub/GNOME/sources/gnumeric/1.12/gnumeric-$pkgver.tar.xz
- cs.patch
- "
+source="https://ftp.gnome.org/pub/GNOME/sources/gnumeric/1.12/gnumeric-$pkgver.tar.xz"
build() {
- cd "$builddir"
- YACC=yacc ./configure \
+ LIBS="-lintl" YACC=yacc ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -33,14 +29,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="ea21dcdf5fdf4e02bb9d83671675f2409f12ee928611604d7589e0047ce5d75bf6ac51e6a5322c4af520428acdccf4c2b3b8e3fc6530030e162268aea94a503f gnumeric-1.12.44.tar.xz
-24d74cec5a19f3f79a049b02b43369324fbb1432be4945988034a38d813cceeab54da67d3d9eb2eff49d248e449212d0877b20b593a8c1f70cecbdbd635cb517 cs.patch"
+sha512sums="d5896cb8390c99fb3871c722116cc085b93b788fab91bf44d24f20228b8290170a0adc906160a6aa46431ae43b04079621c370dcda42658fa9ae3c1d8baf1730 gnumeric-1.12.50.tar.xz"
diff --git a/user/gnumeric/cs.patch b/user/gnumeric/cs.patch
deleted file mode 100644
index b61f242c2..000000000
--- a/user/gnumeric/cs.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- gnumeric-1.12.44/doc/cs/cs.po.old 2018-11-03 17:22:50.000000000 +0000
-+++ gnumeric-1.12.44/doc/cs/cs.po 2019-01-10 01:35:07.770000000 +0000
-@@ -24824,7 +24824,7 @@
- msgstr ""
- "Můžete nastavit i několik doplňujících voleb. Jestli chcete omezit počet "
- "iterací optimalizačního algoritmu, tak to můžete udělat v poli "
--"<guilabel>Max. iterací<guilabel> na kartě <guilabel>Volby</guilabel>. "
-+"<guilabel>Max. iterací</guilabel> na kartě <guilabel>Volby</guilabel>. "
- "Obdobně můžete omezit maximální dobu běhu optimalizace v poli <guilabel>Max. "
- "čas (sekundy)</guilabel>. Pokud je některé z těchto nastavení při "
- "optimalizaci překročeno, optimalizace se přeruší a zobrazí se chybové "
diff --git a/user/gnupg/APKBUILD b/user/gnupg/APKBUILD
index baf95d212..da778b135 100644
--- a/user/gnupg/APKBUILD
+++ b/user/gnupg/APKBUILD
@@ -1,25 +1,34 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gnupg
-pkgver=2.2.11
-pkgrel=1
-pkgdesc="GNU Privacy Guard 2 - PGP replacement"
+pkgver=2.2.39
+pkgrel=0
+pkgdesc="Complete and free implementation of the OpenPGP standard"
url="https://www.gnupg.org/"
arch="all"
license="GPL-3.0+ AND GPL-2.0+ AND LGPL-2.1+ AND LGPL-3.0+ AND MIT AND BSD-3-Clause AND Public-Domain"
depends="pinentry"
-pkggroups="gnupg"
makedepends="bzip2-dev gnutls-dev libassuan-dev libgcrypt-dev libgpg-error-dev
libksba-dev libusb-dev npth-dev openldap-dev sqlite-dev zlib-dev"
+pkggroups="gnupg"
+install="$pkgname.pre-install $pkgname.pre-upgrade"
subpackages="$pkgname-doc $pkgname-lang"
source="https://gnupg.org/ftp/gcrypt/$pkgname/$pkgname-$pkgver.tar.bz2
0001-Include-sys-select.h-for-FD_SETSIZE.patch
- fix-i18n.patch
- 60-scdaemon.rules"
-install="$pkgname.pre-install $pkgname.pre-upgrade"
+ t5993-d556-disallow-compressed.patch
+
+ 60-scdaemon.rules
+ "
+
+# secfixes:
+# 2.2.23-r0:
+# - CVE-2020-25125
+# 2.2.19-r0:
+# - CVE-2019-14855
+# 2.2.17-r0:
+# - CVE-2019-13050
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -37,19 +46,17 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
mkdir -p "$pkgdir"/lib/udev/rules.d
install -Dm644 "$srcdir"/60-scdaemon.rules "$pkgdir"/lib/udev/rules.d
}
-sha512sums="8aa8beea877993b6eef155e1a503ffdde9963ff04a24e6a3dea7979efeeeeeab57e942a80ad46ef254d27a83e8cb2e3008da7749afa8e39eade190c0499f95d9 gnupg-2.2.11.tar.bz2
+sha512sums="73f881c12c82010aeaada500517ff39ab22b27ff21b1248bc2228b60a2d75385a44a53c5cfadb8f6b84ef22ad9db0105096b6620fb689560809b324019713940 gnupg-2.2.39.tar.bz2
c6cc4595081c5b025913fa3ebecf0dff87a84f3c669e3fef106e4fa040f1d4314ee52dd4c0e0002b213034fb0810221cfdd0033eae5349b6e3978f05d08bcac7 0001-Include-sys-select.h-for-FD_SETSIZE.patch
-b19a44dacf061dd02b439ab8bd820e3c721aab77168f705f5ce65661f26527b03ea88eec16d78486a633c474120589ec8736692ebff57ab9b95f52f57190ba6b fix-i18n.patch
+47c61274650cebe55ffbd42fd5346afd04c6681a09cd9f51ccb0d253780eb23fd9424afa109426da49d6ea83cd911f6bc50d1f72abd887473ab41c88c25189df t5993-d556-disallow-compressed.patch
4bfb9742279c2d1c872d63cd4bcb01f6a2a13d94618eff954d3a37451fa870a9bb29687330854ee47e8876d6e60dc81cb2569c3931beaefacda33db23c464402 60-scdaemon.rules"
diff --git a/user/gnupg/fix-i18n.patch b/user/gnupg/fix-i18n.patch
deleted file mode 100644
index 00d71dd5c..000000000
--- a/user/gnupg/fix-i18n.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- gnupg-2.1.7/common/i18n.c.orig 2015-08-31 20:40:18.752742866 +0300
-+++ gnupg-2.1.7/common/i18n.c 2015-08-31 20:40:41.806336224 +0300
-@@ -85,8 +85,8 @@
- bindtextdomain (PACKAGE_GT, gnupg_localedir ());
- textdomain (PACKAGE_GT);
- #else
--# ifdef ENABLE_NLS
- setlocale (LC_ALL, "" );
-+# ifdef ENABLE_NLS
- bindtextdomain (PACKAGE_GT, LOCALEDIR);
- textdomain (PACKAGE_GT);
- # endif
diff --git a/user/gnupg/t5993-d556-disallow-compressed.patch b/user/gnupg/t5993-d556-disallow-compressed.patch
new file mode 100644
index 000000000..e11dc6484
--- /dev/null
+++ b/user/gnupg/t5993-d556-disallow-compressed.patch
@@ -0,0 +1,171 @@
+diff --git a/g10/import.c b/g10/import.c
+--- a/g10/import.c
++++ b/g10/import.c
+@@ -1042,22 +1042,8 @@
+ switch (pkt->pkttype)
+ {
+ case PKT_COMPRESSED:
+- if (check_compress_algo (pkt->pkt.compressed->algorithm))
+- {
+- rc = GPG_ERR_COMPR_ALGO;
+- goto ready;
+- }
+- else
+- {
+- compress_filter_context_t *cfx = xmalloc_clear( sizeof *cfx );
+- pkt->pkt.compressed->buf = NULL;
+- if (push_compress_filter2 (a, cfx,
+- pkt->pkt.compressed->algorithm, 1))
+- xfree (cfx); /* e.g. in case of compression_algo NONE. */
+- }
+- free_packet (pkt, &parsectx);
+- init_packet(pkt);
+- break;
++ rc = GPG_ERR_UNEXPECTED;
++ goto ready;
+
+ case PKT_RING_TRUST:
+ /* Skip those packets unless we are in restore mode. */
+diff --git a/g10/mainproc.c b/g10/mainproc.c
+--- a/g10/mainproc.c
++++ b/g10/mainproc.c
+@@ -152,6 +152,7 @@
+ {
+ kbnode_t node;
+
++ log_assert(!(c->sigs_only && c->signed_data.used));
+ if (c->list) /* Add another packet. */
+ add_kbnode (c->list, new_kbnode (pkt));
+ else /* Insert the first one. */
+@@ -1077,7 +1078,10 @@
+
+ /*printf("zip: compressed data packet\n");*/
+ if (c->sigs_only)
+- rc = handle_compressed (c->ctrl, c, zd, proc_compressed_cb, c);
++ {
++ log_assert(!c->signed_data.used);
++ rc = handle_compressed (c->ctrl, c, zd, proc_compressed_cb, c);
++ }
+ else if( c->encrypt_only )
+ rc = handle_compressed (c->ctrl, c, zd, proc_encrypt_cb, c);
+ else
+@@ -1596,6 +1600,7 @@
+ c->iobuf = a;
+ init_packet(pkt);
+ init_parse_packet (&parsectx, a);
++ parsectx.sigs_only = c->sigs_only && c->signed_data.used;
+ while ((rc=parse_packet (&parsectx, pkt)) != -1)
+ {
+ any_data = 1;
+@@ -1607,6 +1612,12 @@
+ if (gpg_err_code (rc) == GPG_ERR_INV_PACKET
+ && opt.list_packets == 0)
+ break;
++
++ if (gpg_err_code (rc) == GPG_ERR_UNEXPECTED)
++ {
++ write_status_text( STATUS_UNEXPECTED, "0" );
++ goto leave;
++ }
+ continue;
+ }
+ newpkt = -1;
+@@ -1644,7 +1655,9 @@
+ case PKT_COMPRESSED: rc = proc_compressed (c, pkt); break;
+ case PKT_ONEPASS_SIG: newpkt = add_onepass_sig (c, pkt); break;
+ case PKT_GPG_CONTROL: newpkt = add_gpg_control (c, pkt); break;
+- default: newpkt = 0; break;
++ default:
++ log_assert(!c->signed_data.used);
++ newpkt = 0; break;
+ }
+ }
+ else if (c->encrypt_only)
+diff --git a/g10/packet.h b/g10/packet.h
+--- a/g10/packet.h
++++ b/g10/packet.h
+@@ -657,6 +657,7 @@
+ int free_last_pkt; /* Indicates that LAST_PKT must be freed. */
+ int skip_meta; /* Skip ring trust packets. */
+ unsigned int n_parsed_packets; /* Number of parsed packets. */
++ int sigs_only; /* Only accept detached signature packets */
+ };
+ typedef struct parse_packet_ctx_s *parse_packet_ctx_t;
+
+@@ -667,6 +668,7 @@
+ (a)->free_last_pkt = 0; \
+ (a)->skip_meta = 0; \
+ (a)->n_parsed_packets = 0; \
++ (a)->sigs_only = 0; \
+ } while (0)
+
+ #define deinit_parse_packet(a) do { \
+diff --git a/g10/parse-packet.c b/g10/parse-packet.c
+--- a/g10/parse-packet.c
++++ b/g10/parse-packet.c
+@@ -738,6 +738,20 @@
+ case PKT_ENCRYPTED_MDC:
+ case PKT_ENCRYPTED_AEAD:
+ case PKT_COMPRESSED:
++ if (ctx->sigs_only)
++ {
++ log_error (_("partial length packet of type %d in detached"
++ " signature\n"), pkttype);
++ rc = gpg_error (GPG_ERR_UNEXPECTED);
++ goto leave;
++ }
++ if (onlykeypkts)
++ {
++ log_error (_("partial length packet of type %d in keyring\n"),
++ pkttype);
++ rc = gpg_error (GPG_ERR_UNEXPECTED);
++ goto leave;
++ }
+ iobuf_set_partial_body_length_mode (inp, c & 0xff);
+ pktlen = 0; /* To indicate partial length. */
+ partial = 1;
+@@ -775,6 +789,20 @@
+ rc = gpg_error (GPG_ERR_INV_PACKET);
+ goto leave;
+ }
++ else if (ctx->sigs_only)
++ {
++ log_error (_("indeterminate length packet of type %d in detached"
++ " signature\n"), pkttype);
++ rc = gpg_error (GPG_ERR_UNEXPECTED);
++ goto leave;
++ }
++ else if (onlykeypkts)
++ {
++ log_error (_("indeterminate length packet of type %d in"
++ " keyring\n"), pkttype);
++ rc = gpg_error (GPG_ERR_UNEXPECTED);
++ goto leave;
++ }
+ }
+ else
+ {
+@@ -828,7 +856,21 @@
+ goto leave;
+ }
+
+- if (with_uid && pkttype == PKT_USER_ID)
++ if (ctx->sigs_only)
++ switch (pkttype)
++ {
++ case PKT_SIGNATURE:
++ case PKT_MARKER:
++ break;
++ default:
++ log_error(_("Packet type %d not allowed in detached signature\n"),
++ pkttype);
++ iobuf_skip_rest (inp, pktlen, partial);
++ *skip = 1;
++ rc = GPG_ERR_UNEXPECTED;
++ goto leave;
++ }
++ else if (with_uid && pkttype == PKT_USER_ID)
+ /* If ONLYKEYPKTS is set to 2, then we never skip user id packets,
+ even if DO_SKIP is set. */
+ ;
+
diff --git a/user/gnutls/APKBUILD b/user/gnutls/APKBUILD
index 72e454003..0afc05196 100644
--- a/user/gnutls/APKBUILD
+++ b/user/gnutls/APKBUILD
@@ -1,19 +1,18 @@
# Contriburo: Łukasz Jendrysik <scadu@yandex.com>
# Contributor: Michael Mason <ms13sp@gmail.com>
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=gnutls
-pkgver=3.6.7.1
+pkgver=3.7.4
pkgrel=0
pkgdesc="A TLS protocol implementation"
-url="http://www.gnutls.org/"
+url="https://www.gnutls.org/"
arch="all"
-options="!check" # https://gitlab.com/gnutls/gnutls/issues/560
license="LGPL-2.1+"
makedepends="libtasn1-dev libunistring-dev nettle-dev p11-kit-dev texinfo
- zlib-dev"
+ unbound-dev cmd:which zlib-dev"
checkdepends="diffutils"
-subpackages="$pkgname-dbg $pkgname-doc $pkgname-dev $pkgname-lang $pkgname-utils
- $pkgname-c++:xx"
+subpackages="$pkgname-dbg $pkgname-doc $pkgname-dev $pkgname-lang
+ $pkgname-c++:xx $pkgname-dane $pkgname-utils"
_v=${pkgver%.*}
_v2=$pkgver
case $pkgver in
@@ -23,15 +22,19 @@ case $pkgver in
;;
esac
source="https://www.gnupg.org/ftp/gcrypt/gnutls/v${_v}/$pkgname-$pkgver.tar.xz
- gnulib-tests-dont-require-gpg-passphrase.patch"
-builddir="$srcdir/$pkgname-$_v2"
+ disable-certtool-test.patch
+ "
# secfixes:
# 3.5.13-r0:
# - CVE-2017-7507
+# 3.6.14-r0:
+# - CVE-2020-11501
+# - CVE-2020-13777
+# 3.6.15-r0:
+# - CVE-2020-24659
build() {
- cd "$builddir"
LIBS="-lgmp" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -49,22 +52,26 @@ build() {
--enable-manpages \
--enable-tests \
--disable-full-test-suite \
- --disable-sslv2-support \
- --with-zlib \
--with-p11-kit
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
}
+dane() {
+ pkgdesc="$pkgdesc (DNS DANE support library)"
+ mkdir -p "$subpkgdir"/usr/bin
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/bin/danetool "$subpkgdir"/usr/bin/
+ mv "$pkgdir"/usr/lib/libgnutls-dane* "$subpkgdir"/usr/lib/
+}
+
utils() {
pkgdesc="Command line tools for TLS protocol"
mkdir -p "$subpkgdir"/usr/
@@ -77,5 +84,5 @@ xx() {
mv "$pkgdir"/usr/lib/lib*xx.so.* "$subpkgdir"/usr/lib/
}
-sha512sums="c3c4178c8663e3d1207aaf771ceb43e7e75a9f11b4ea3a26fde9d04a23762b05bac8fe290b74d63b815a354b79fc3557cfc218c196e1f80eb1fbce762948a926 gnutls-3.6.7.1.tar.xz
-abc24ee59cc67805fe953535b0bae33080fc8b0bf788304377f6d10ec8c162c4cf203a69c98a4ba3483b4c60ed7a204433cc7db9b8190eddb0d68f6fb6dad52d gnulib-tests-dont-require-gpg-passphrase.patch"
+sha512sums="38b488ca1223d9aa8fc25756df08db6f29aaf76fb5816fdeaa14bd89fb431a2e1c495fefc64094f726337d5b89e198146ec7dc22e9a1bca6841a9d881b0d99e6 gnutls-3.7.4.tar.xz
+510b0fd3464592cfffefa6cbfd09935aa26ab057b9dab7e588527efa2373a6f1ff8344270b4c143c669697e1bfa14218da29730dbc14e27daa21f770a519af1b disable-certtool-test.patch"
diff --git a/user/gnutls/disable-certtool-test.patch b/user/gnutls/disable-certtool-test.patch
new file mode 100644
index 000000000..39cba942b
--- /dev/null
+++ b/user/gnutls/disable-certtool-test.patch
@@ -0,0 +1,34 @@
+If GNUTLS_PIN is not available in the environment, the test will fail
+because it cannot ask for the password:
+
+Generating a self signed certificate...
+No PIN given.
+note: when operating in batch mode, set the GNUTLS_PIN or GNUTLS_SO_PIN environment variables
+cert generation failed
+FAIL certtool (exit status: 1)
+
+The comment above this line says "some CI runners need GNUTLS_PIN
+(GNUTLS_PIN=${PASS})" (i.e. GNUTLS_PIN=1234). When this is passed
+instead, the test fails again because "No password was asked" (it greps
+for "Enter password" in the output, but this won't happen because
+GNUTLS_PIN is set).
+
+The folks at Nix believe this is an incompatibility due to musl's
+getpass not falling back to stdin/stderr if it cannot connect to a tty,
+as glibc does. Upstream believes this test should only be run on glibc
+systems, so we skip it.
+
+https://gitlab.com/gnutls/gnutls/-/issues/945
+
+--- gnutls-3.6.13/tests/cert-tests/certtool.sh 2020-01-01 14:10:19.000000000 -0600
++++ gnutls-3.6.13/tests/cert-tests/certtool.sh 2020-06-02 20:36:20.380039844 -0500
+@@ -20,6 +20,9 @@
+
+ #set -e
+
++echo 'this test is not compatible with musl'
++exit 77
++
+ : ${srcdir=.}
+ : ${CERTTOOL=../../src/certtool${EXEEXT}}
+ : ${DIFF=diff -b -B}
diff --git a/user/gnutls/gnulib-tests-dont-require-gpg-passphrase.patch b/user/gnutls/gnulib-tests-dont-require-gpg-passphrase.patch
deleted file mode 100644
index 2c9276cbc..000000000
--- a/user/gnutls/gnulib-tests-dont-require-gpg-passphrase.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- gnutls-3.6.2/gl/tests/test-vc-list-files-git.sh 2018-01-03 18:36:29.000000000 -0600
-+++ gnutls-3.6.2/gl/tests/test-vc-list-files-git.sh 2018-06-18 21:57:08.305562148 -0500
-@@ -32,6 +32,7 @@
- touch d/a b c &&
- git config user.email "you@example.com" &&
- git config user.name "Your Name" &&
-+ git config commit.gpgsign false &&
- git add . > /dev/null &&
- git commit -q -a -m log &&
- printf '%s\n' b c d/a > expected &&
diff --git a/user/gobject-introspection/APKBUILD b/user/gobject-introspection/APKBUILD
index 841a87d05..df8490dc9 100644
--- a/user/gobject-introspection/APKBUILD
+++ b/user/gobject-introspection/APKBUILD
@@ -1,6 +1,6 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=gobject-introspection
-pkgver=1.60.1
+pkgver=1.72.0
pkgrel=0
pkgdesc="Introspection system for GObject-based libraries"
url="https://wiki.gnome.org/action/show/Projects/GObjectIntrospection"
@@ -13,28 +13,22 @@ makedepends="$depends_dev bison flex glib-dev libffi-dev meson ninja python3-dev
checkdepends="sed"
subpackages="$pkgname-doc $pkgname-dev"
replaces="libgirepository"
-source="https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz"
-
-prepare() {
- cd "$builddir"
- default_prepare
- mkdir -p build
-}
+source="https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz
+ musl-time64.patch
+ support-cross-filesystem-move.patch
+ "
build() {
- cd "$builddir"/build
- meson -Dprefix=/usr
- ninja
+ meson -Dprefix=/usr build
+ ninja -C build
}
check() {
- cd "$builddir"/build
- ninja test
+ ninja -C build test -j1
}
package() {
- cd "$builddir"/build
- DESTDIR="$pkgdir" ninja install
+ DESTDIR="$pkgdir" ninja -C build install
}
dev() {
@@ -46,4 +40,6 @@ dev() {
replaces="gobject-introspection"
}
-sha512sums="01adbeffee08ff6487f11a303fd7a59a99c36714dce21be9bbae7fd2bf8f080665e830bc3a47566140a6081dc74f6c2f8d8232286759b761f70493545a9d90ea gobject-introspection-1.60.1.tar.xz"
+sha512sums="b8fba2bd12e93776c55228acf3487bef36ee40b1abdc7f681b827780ac94a8bfa1f59b0c30d60fa5a1fea2f610de78b9e52029f411128067808f17eb6374cdc5 gobject-introspection-1.72.0.tar.xz
+784acecd0e139685664ba1af6f1df69aeeb2da11a2b7ef9b42f46f42699e087aa90f0a2d95c1ff7aa1c04a3f2505d6006015b5a0f1ba1b125d6b1311474736c2 musl-time64.patch
+ce07017598d55a7a0b2a0cad18664a004d4f0425b57c29fd7d6c1d0d340e82db83c2a876cd60f3fb0fbc9e79d83badea4fc7c547f854d44b51bb980df8afa95a support-cross-filesystem-move.patch"
diff --git a/user/gobject-introspection/musl-time64.patch b/user/gobject-introspection/musl-time64.patch
new file mode 100644
index 000000000..53066bebb
--- /dev/null
+++ b/user/gobject-introspection/musl-time64.patch
@@ -0,0 +1,37 @@
+--- a/giscanner/ast.py
++++ b/giscanner/ast.py
+@@ -346,7 +346,8 @@
+ type_names['ssize_t'] = type_names['gssize']
+ type_names['uintptr_t'] = type_names['guintptr']
+ type_names['intptr_t'] = type_names['gintptr']
+-type_names['time_t'] = TYPE_LONG
++# musl libc 1.2 and newer uses 64 time_t for all arches
++type_names['time_t'] = TYPE_INT64
+ type_names['off_t'] = type_names['gsize']
+ type_names['pid_t'] = TYPE_INT
+ type_names['uid_t'] = TYPE_UINT
+--- a/tests/scanner/Regress-1.0-expected.gir
++++ b/tests/scanner/Regress-1.0-expected.gir
+@@ -2003,7 +2003,7 @@ uses a C sugar return type.</doc>
+ <type name="FooObject" c:type="RegressFooObject*"/>
+ </instance-parameter>
+ <parameter name="time" transfer-ownership="none">
+- <type name="glong" c:type="time_t"/>
++ <type name="gint64" c:type="time_t"/>
+ </parameter>
+ </parameters>
+ </method>
+@@ -8381,11 +8381,11 @@ https://bugzilla.gnome.org/show_bug.cgi?id=685399</doc>
+ <function name="test_timet" c:identifier="regress_test_timet">
+ <source-position filename="regress.h" line="94"/>
+ <return-value transfer-ownership="none">
+- <type name="glong" c:type="time_t"/>
++ <type name="gint64" c:type="time_t"/>
+ </return-value>
+ <parameters>
+ <parameter name="in" transfer-ownership="none">
+- <type name="glong" c:type="time_t"/>
++ <type name="gint64" c:type="time_t"/>
+ </parameter>
+ </parameters>
+ </function>
diff --git a/user/gobject-introspection/support-cross-filesystem-move.patch b/user/gobject-introspection/support-cross-filesystem-move.patch
new file mode 100644
index 000000000..80fc80baa
--- /dev/null
+++ b/user/gobject-introspection/support-cross-filesystem-move.patch
@@ -0,0 +1,11 @@
+--- a/misc/update-glib-annotations.py
++++ b/misc/update-glib-annotations.py
+@@ -57,7 +57,7 @@
+ extract_annotations(module_name, glib_src_dir, target)
+ if os.path.isfile(target_path):
+ os.unlink(target_path)
+- os.rename(tmpname, target_path)
++ shutil.move(tmpname, target_path)
+
+ print("Updated '%s'" % (target_path, ))
+
diff --git a/user/gobject-introspection/we-are-in-a-pickle.patch b/user/gobject-introspection/we-are-in-a-pickle.patch
deleted file mode 100644
index 5262e2887..000000000
--- a/user/gobject-introspection/we-are-in-a-pickle.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 945438608433a554b8d7077af648d60a9daf59f9 Mon Sep 17 00:00:00 2001
-From: Christoph Reiter <reiter.christoph@gmail.com>
-Date: Sat, 8 Dec 2018 18:44:31 +0100
-Subject: [PATCH] cachestore: don't try to catch nonexisting
- pickle.BadPickleGet. Fixes #159
-
-pickle.loads() can pretty much throw any kind of exception and we can't
-handle it besides ignoring it, so just catch all.
----
- giscanner/cachestore.py | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/giscanner/cachestore.py b/giscanner/cachestore.py
-index 58b3193c..857dc725 100644
---- a/giscanner/cachestore.py
-+++ b/giscanner/cachestore.py
-@@ -178,7 +178,7 @@ class CacheStore(object):
- return None
- try:
- data = pickle.load(fd)
-- except (AttributeError, EOFError, ValueError, pickle.BadPickleGet):
-+ except Exception:
- # Broken cache entry, remove it
- self._remove_filename(store_filename)
- data = None
---
-2.18.1
-
diff --git a/user/goffice/APKBUILD b/user/goffice/APKBUILD
index 0b5fc833b..0dc77b4f4 100644
--- a/user/goffice/APKBUILD
+++ b/user/goffice/APKBUILD
@@ -1,20 +1,20 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer: multiplexd <multi@in-addr.xyz>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=goffice
-pkgver=0.10.44
+pkgver=0.10.50
pkgrel=0
pkgdesc="Library of document-centric objects and utilities built on top of GLib and Gtk+"
url="https://www.gnome.org"
arch="all"
license="(GPL-2.0-only OR GPL-3.0-only) AND GPL-2.0+ AND MIT"
+depends=""
makedepends="librsvg-dev intltool gtk+2.0-dev libtool gtk-doc
libxslt-dev gobject-introspection-dev glib-dev libgsf-dev cairo-dev
- libxml2-dev gtk+3.0-dev"
+ libxml2-dev gtk+3.0-dev wayland-protocols"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,13 +27,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="9e86440afaee4d6eadd31c328a13dc54fb4056dfc70ef0196d83bada5f05eb4fc12daf35fc4e79ea6ebfe8a97dc6ed74b50e514f9d27f08bff776ab898f1c71d goffice-0.10.44.tar.xz"
+sha512sums="1117540d9162d45059150281b03941ff9b6df1929dcbd7e5aa6e28010d3bb5a46902c30b6f1d35fd5b60f9afe73b58f132aa686aa1712332ea18635d5a79bd0c goffice-0.10.50.tar.xz"
diff --git a/user/gperf/APKBUILD b/user/gperf/APKBUILD
index b11af06da..84297a740 100644
--- a/user/gperf/APKBUILD
+++ b/user/gperf/APKBUILD
@@ -12,9 +12,7 @@ depends=""
makedepends=""
source="ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz"
-build ()
-{
- cd "$builddir"
+build() {
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -23,12 +21,11 @@ build ()
}
check() {
- cd "$builddir"
make -j1 check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
+
sha512sums="855ebce5ff36753238a44f14c95be7afdc3990b085960345ca2caf1a2db884f7db74d406ce9eec2f4a52abb8a063d4ed000a36b317c9a353ef4e25e2cca9a3f4 gperf-3.1.tar.gz"
diff --git a/user/gpgme/1.12.0-fix-t-tofuinfo.patch b/user/gpgme/1.12.0-fix-t-tofuinfo.patch
deleted file mode 100644
index 74ba11050..000000000
--- a/user/gpgme/1.12.0-fix-t-tofuinfo.patch
+++ /dev/null
@@ -1,100 +0,0 @@
-From 66376f3e206a1aa791d712fb8577bb3490268f60 Mon Sep 17 00:00:00 2001
-From: Andre Heinecke <aheinecke@gnupg.org>
-Date: Wed, 9 Jan 2019 08:25:21 +0100
-Subject: [PATCH] qt: Use tofu conflict test keys without expiry
-
-* lang/qt/tests/t-tofuinfo.cpp: Use new test keys without
-expiry.
-
---
-The old keys expired on 2019-01-06.
-
-GnuPG-Bug-Id: T3815
----
- lang/qt/tests/t-tofuinfo.cpp | 58 +++++++++++++++++++-----------------
- 1 file changed, 30 insertions(+), 28 deletions(-)
-
-diff --git a/lang/qt/tests/t-tofuinfo.cpp b/lang/qt/tests/t-tofuinfo.cpp
-index b7161028..2d881069 100644
---- a/lang/qt/tests/t-tofuinfo.cpp
-+++ b/lang/qt/tests/t-tofuinfo.cpp
-@@ -69,46 +69,48 @@ static const char testMsg1[] =
-
- static const char conflictKey1[] = "-----BEGIN PGP PUBLIC KEY BLOCK-----\n"
- "\n"
--"mDMEWG+w/hYJKwYBBAHaRw8BAQdAiq1oStvDYg8ZfFs5DgisYJo8dJxD+C/AA21O\n"
--"K/aif0O0GXRvZnVfY29uZmxpY3RAZXhhbXBsZS5jb22IlgQTFggAPhYhBHoJBLaV\n"
--"DamYAgoa1L5BwMOl/x88BQJYb7D+AhsDBQkDwmcABQsJCAcCBhUICQoLAgQWAgMB\n"
--"Ah4BAheAAAoJEL5BwMOl/x88GvwA/0SxkbLyAcshGm2PRrPsFQsSVAfwaSYFVmS2\n"
--"cMVIw1PfAQDclRH1Z4MpufK07ju4qI33o4s0UFpVRBuSxt7A4P2ZD7g4BFhvsP4S\n"
--"CisGAQQBl1UBBQEBB0AmVrgaDNJ7K2BSalsRo2EkRJjHGqnp5bBB0tapnF81CQMB\n"
--"CAeIeAQYFggAIBYhBHoJBLaVDamYAgoa1L5BwMOl/x88BQJYb7D+AhsMAAoJEL5B\n"
--"wMOl/x88OR0BAMq4/vmJUORRTmzjHcv/DDrQB030DSq666rlckGIKTShAPoDXM9N\n"
--"0gZK+YzvrinSKZXHmn0aSwmC1/hyPybJPEljBw==\n"
--"=p2Oj\n"
-+"mDMEXDWgpxYJKwYBBAHaRw8BAQdAguVu4qkx8iw4eU+TQ4vvcKG7IdcZvbMhw3Zc\n"
-+"npGf0+u0GXRvZnVfY29uZmxpY3RAZXhhbXBsZS5jb22IkAQTFggAOBYhBO6ovNDG\n"
-+"nLzbR1TlMJYJ0fjlWbUrBQJcNaCnAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA\n"
-+"AAoJEJYJ0fjlWbUrLaMBALegwkv2+sEcmKZqxt8JscYvFiEuycv2+rKHaZA0eDoN\n"
-+"AP97W4XrJb5x49J5jDDdeko8k00uGqiiuAXJo27/i/phA7g4BFw1oKcSCisGAQQB\n"
-+"l1UBBQEBB0Crhw24E2lPBhd/y+ZFotQ/2TrYqkUQqGPmff8ofLziNgMBCAeIeAQY\n"
-+"FggAIBYhBO6ovNDGnLzbR1TlMJYJ0fjlWbUrBQJcNaCnAhsMAAoJEJYJ0fjlWbUr\n"
-+"/K8BAJWsa+tOZsJw7w5fz6O0We6Xx4Rt17jHf563G6wMcz9+AQDRsedJ7w4zYzS9\n"
-+"MFiJQ5aN0NDHMRtDFWAgCunVnJ3OBw==\n"
-+"=fZa5\n"
- "-----END PGP PUBLIC KEY BLOCK-----\n";
-
- static const char conflictKey2[] = "-----BEGIN PGP PUBLIC KEY BLOCK-----\n"
- "\n"
--"mDMEWG+xShYJKwYBBAHaRw8BAQdA567gPEPJRpqKnZjlFJMRNUqruRviYMyygfF6\n"
--"6Ok+ygu0GXRvZnVfY29uZmxpY3RAZXhhbXBsZS5jb22IlgQTFggAPhYhBJ5kRh7E\n"
--"I98w8kgUcmkAfYFvqqHsBQJYb7FKAhsDBQkDwmcABQsJCAcCBhUICQoLAgQWAgMB\n"
--"Ah4BAheAAAoJEGkAfYFvqqHsYR0BAOz8JjYB4VvGkt6noLS3F5TLfsedGwQkBCw5\n"
--"znw/vGZsAQD9DSX+ekwdrN56mNO8ISt5uVS7B1ZQtouNBF+nzcwbDbg4BFhvsUoS\n"
--"CisGAQQBl1UBBQEBB0BFupW8+Xc1ikab8TJqANjQhvFVh6uLsgcK4g9lZgbGXAMB\n"
--"CAeIeAQYFggAIBYhBJ5kRh7EI98w8kgUcmkAfYFvqqHsBQJYb7FKAhsMAAoJEGkA\n"
--"fYFvqqHs15ABALdN3uiV/07cJ3RkNb3WPcijGsto+lECDS11dKEwTMFeAQDx+V36\n"
--"ocbYC/xEuwi3w45oNqGieazzcD/GBbt8OBk3BA==\n"
--"=45IR\n"
-+"mDMEXDWgixYJKwYBBAHaRw8BAQdAMWOhumYspcvEOTuesOSN4rvnJVOj/6qOWFTu\n"
-+"x+wPRra0GXRvZnVfY29uZmxpY3RAZXhhbXBsZS5jb22IkAQTFggAOBYhBA64G88Q\n"
-+"NPXztj8ID/FhC7tiGbeRBQJcNaCLAhsDBQsJCAcCBhUKCQgLAgQWAgMBAh4BAheA\n"
-+"AAoJEPFhC7tiGbeRUt4A/2hf4Zgz+TYyfeH/4/ZtyL1JuZggqR1s5UopEx2Aiw10\n"
-+"AP405KiTd31TJQN8Ru+7bskPu0/mzLZMNkRvBNEdc5kbDLg4BFw1oIsSCisGAQQB\n"
-+"l1UBBQEBB0B5NtSrx7wDDKgwUe5Rxz0vRkaWLtyE0KbfE77oPy5DGAMBCAeIeAQY\n"
-+"FggAIBYhBA64G88QNPXztj8ID/FhC7tiGbeRBQJcNaCLAhsMAAoJEPFhC7tiGbeR\n"
-+"km0BAP8TQwraipqb1pJlLsEgDXeM5Jocz4fuePD78BsOBtORAP9gpCyKXdyJYGlA\n"
-+"qjmG356yG6pCK9aPckTZ9IViPiHWCw==\n"
-+"=tn3Q\n"
- "-----END PGP PUBLIC KEY BLOCK-----\n";
-
- static const char conflictMsg1[] = "-----BEGIN PGP MESSAGE-----\n"
- "\n"
--"owGbwMvMwCG2z/HA4aX/5W0YT3MlMUTkb2xPSizi6ihlYRDjYJAVU2Sp4mTZNpV3\n"
--"5QwmLqkrMLWsTCCFDFycAjCR1vcMf4U0Qrs6qzqfHJ9puGOFduLN2nVmhsumxjBE\n"
--"mdw4lr1ehIWR4QdLuNBpe86PGx1PtNXfVAzm/hu+vfjCp5BVNjPTM9L0eAA=\n"
--"=MfBD\n"
-+"owGbwMvMwCE2jfPij6eRW7UZTwsnMcSYLnT0Ki0uUXD3C1XILFHk6ihlYRDjYJAV\n"
-+"U2R5t2LPhWNz9tx2D3lqANPEygTSwcDFKQAT+RjG8M9of873hQrMpinBVwKYv+rq\n"
-+"XGmYW+ZcZJ+133KDq+itzlxGhg3L2X/6Khj+2Hd+He+KnXtunF2wNWxl7849e/Sy\n"
-+"v6tc+8MBAA==\n"
-+"=fZLe\n"
- "-----END PGP MESSAGE-----\n";
-
- static const char conflictMsg2[] = "-----BEGIN PGP MESSAGE-----\n"
- "\n"
--"owGbwMvMwCGWyVDbmL9q4RvG01xJDBH5GyvS8vO5OkpZGMQ4GGTFFFnmpbjJHVG+\n"
--"b/DJQ6QIppaVCaSQgYtTACaySZHhr/SOPrdFJ89KrcwKY5i1XnflXYf2PK76SafK\n"
--"tkxXuXzvJAvDX4kCybuqFk3HXCexz2+IrnZ+5X5EqOnuo3ens2cte+uzlhMA\n"
--"=BIAi\n"
-+"owGbwMvMwCH2MZF7d5Lk9omMp4WTGGJMFwZ4lRaXKLj7hSpklihydZSyMIhxMMiK\n"
-+"KbLw7ZA+L2Dy9fM2ew5+mCZWJpAOBi5OAZhIUhIjw7bV+xS+cR0quqhmcY2Dl3WW\n"
-+"8Ufr+rRNufOPyIdoO6nEXGH47/B+E1+oxS6e5f5n7MJ3aHBO+s345sipGV/4f665\n"
-+"9mmiGjsA\n"
-+"=8oJA\n"
- "-----END PGP MESSAGE-----\n";
-
- class TofuInfoTest: public QGpgMETest
---
-2.19.2
-
diff --git a/user/gpgme/APKBUILD b/user/gpgme/APKBUILD
index c541b7af7..66edf3974 100644
--- a/user/gpgme/APKBUILD
+++ b/user/gpgme/APKBUILD
@@ -1,24 +1,23 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gpgme
-pkgver=1.12.0
-pkgrel=2
+pkgver=1.19.0
+pkgrel=0
pkgdesc="GnuPG Made Easy"
url="https://www.gnupg.org/related_software/gpgme/"
arch="all"
# gpgme-tool: GPL3; lib is mixture of the rest
license="(LGPL-3.0+ OR GPL-2.0+) AND LGPL-2.1+ AND MIT AND GPL-3.0+"
depends="gnupg"
-depends_dev="libgpg-error-dev libassuan-dev qt5-qtbase-dev"
-makedepends="$depends_dev doxygen python3-dev swig cmd:which"
+depends_dev="qt5-qtbase-dev"
+makedepends="$depends_dev doxygen libassuan-dev libgpg-error-dev python3-dev
+ swig cmd:which"
subpackages="$pkgname-dev $pkgname-doc gpgmepp qgpgme py3-gpg:_py"
source="https://gnupg.org/ftp/gcrypt/$pkgname/$pkgname-$pkgver.tar.bz2
- 1.12.0-fix-t-tofuinfo.patch
- test32bit.patch
+ initialize-err-variable.patch
"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,23 +26,21 @@ build() {
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--localstatedir=/var \
- --enable-languages=cl,cpp,python3,qt
+ --enable-languages=cl,cpp,python,qt
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
qgpgme() {
pkgdesc="$pkgdesc (Qt 5 library)"
- mkdir -p "$subpkgdir"/usr/lib/
+ mkdir -p "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libqgpgme.so* "$subpkgdir"/usr/lib/
}
@@ -57,10 +54,9 @@ _py() {
pkgdesc="$pkgdesc (Python bindings)"
depends="$pkgname=$pkgver-r$pkgrel python3"
- mkdir -p "$subpkgdir/usr/lib/"
- mv "$pkgdir/usr/lib/python"* "$subpkgdir/usr/lib/"
+ mkdir -p "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/lib/python* "$subpkgdir"/usr/lib/
}
-sha512sums="c228b3df28377df882be536ada56dc9c73150048a58e591aa4495f89c854af95820152cd60139840f994c249e9c7df50d8b89eb9d6dc4ce02aa80bbfebcdd014 gpgme-1.12.0.tar.bz2
-c8748651021a6ea670329cffb9565b905272b092315e77dc6fa9fa23890f8a55c2159edbfa026e8af961f2ff0c0d524dc8332a2e9a24fce2b37ac7cc4bb88cb3 1.12.0-fix-t-tofuinfo.patch
-26bb302f462d7164842acea38080b3937b0b7b11d12fcfe1a61d656a41c993474dc7d9ca2298f936b030874a2f59f85b2189b11087f8b39d4c685a9a4e5d9450 test32bit.patch"
+sha512sums="c6f01ad9432abe33f407e81083dd2f299375ad13b0517429ea1c55fb8cffa05e470dd26f5910a78b8d0f4c8c1e620788a9f369d983c191a3dac681714054fe84 gpgme-1.19.0.tar.bz2
+ea49e300ed5e470098d2de80c0c440ef8dd8f74363888d14527e0a5063bb85ed9f69a732f6bd9ef4013f36b4f69128035b5cf68deece10a7f9f8108c94d085f8 initialize-err-variable.patch"
diff --git a/user/gpgme/initialize-err-variable.patch b/user/gpgme/initialize-err-variable.patch
new file mode 100644
index 000000000..7a8d95047
--- /dev/null
+++ b/user/gpgme/initialize-err-variable.patch
@@ -0,0 +1,26 @@
+From b608c084b9220d8ed288eb916e88a236abac0707 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Ingo=20Kl=C3=B6cker?= <dev@ingo-kloecker.de>
+Date: Mon, 27 Mar 2023 16:49:03 +0200
+Subject: [PATCH] core: Initialize error variable
+
+* src/engine-gpg.c (build_argv): Initialize err.
+--
+
+Fixes-commit: fbce7deb3b68af900f692591d5d05fa5c1a83f5f
+---
+ src/engine-gpg.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/engine-gpg.c b/src/engine-gpg.c
+index 9419f089..50497987 100644
+--- a/src/engine-gpg.c
++++ b/src/engine-gpg.c
+@@ -874,7 +874,7 @@ gpg_set_command_handler (void *engine, engine_command_handler_t fnc,
+ static gpgme_error_t
+ build_argv (engine_gpg_t gpg, const char *pgmname)
+ {
+- gpgme_error_t err;
++ gpgme_error_t err = 0;
+ struct arg_and_data_s *a;
+ struct fd_data_map_s *fd_data_map = NULL;
+ size_t datac=0, argc=0, allocated_argc=0;
diff --git a/user/gpgme/test32bit.patch b/user/gpgme/test32bit.patch
deleted file mode 100644
index 49dafdddb..000000000
--- a/user/gpgme/test32bit.patch
+++ /dev/null
@@ -1,93 +0,0 @@
-From 651a1afe80bcc421da26f38015e8a322e140f130 Mon Sep 17 00:00:00 2001
-From: Ben McGinnes <ben@adversary.org>
-Date: Sat, 20 Oct 2018 11:07:55 +1100
-Subject: [PATCH] python bindings: callback test
-
-* lang/python/tests/t-callbacks.py: Updated test logic to try
- generating a key which expires in 2099 and if that fails then
- fallback to an expiration in 2037 in an attempt to catch the 32-bit
- systems.
----
- lang/python/tests/t-callbacks.py | 32 ++++++++++++++++++++++++++++++--
- 1 file changed, 30 insertions(+), 2 deletions(-)
-
-diff --git a/lang/python/tests/t-callbacks.py b/lang/python/tests/t-callbacks.py
-index 5bcac237..3a210dd0 100755
---- a/lang/python/tests/t-callbacks.py
-+++ b/lang/python/tests/t-callbacks.py
-@@ -20,12 +20,14 @@
- from __future__ import absolute_import, print_function, unicode_literals
-
- import os
-+import platform
- import gpg
- import support
- _ = support # to appease pyflakes.
-
- del absolute_import, print_function, unicode_literals
-
-+oops = None
- c = gpg.Context()
- c.set_pinentry_mode(gpg.constants.PINENTRY_MODE_LOOPBACK)
-
-@@ -99,6 +101,17 @@ Expire-Date: 2099-12-31
- </GnupgKeyParms>
- """
-
-+prams = """<GnupgKeyParms format="internal">
-+Key-Type: RSA
-+Key-Length: 1024
-+Name-Real: Joe Tester
-+Name-Comment: with stupid passphrase
-+Name-Email: joe+gpg@example.org
-+Passphrase: Crypt0R0cks
-+Expire-Date: 2037-12-31
-+</GnupgKeyParms>
-+"""
-+
- messages = []
-
-
-@@ -111,7 +124,10 @@ def progress_cb(what, typ, current, total, hook=None):
-
- c = gpg.Context()
- c.set_progress_cb(progress_cb, messages)
--c.op_genkey(parms, None, None)
-+try:
-+ c.op_genkey(parms, None, None)
-+except Exception as oops:
-+ c.op_genkey(prams, None, None)
- assert len(messages) > 0
-
-
-@@ -123,7 +139,10 @@ def progress_cb(what, typ, current, total, hook=None):
- c = gpg.Context()
- c.set_progress_cb(progress_cb, None)
- try:
-- c.op_genkey(parms, None, None)
-+ try:
-+ c.op_genkey(parms, None, None)
-+ except Exception as oops:
-+ c.op_genkey(prams, None, None)
- except Exception as e:
- assert e == myException
- else:
-@@ -139,6 +158,15 @@ alpha = c.get_key("A0FF4590BB6122EDEF6E3C542D727CC768697734", False)
- cookie = object()
- edit_cb_called = False
-
-+def oops_check():
-+ if oops is not None and platform.architecture()[0] != "64bit":
-+ y2k38_msg = "System appears to be 32-bit and vulnerable to EOL in 2038."
-+ elif oops is not None and platform.architecture()[0] == "64bit":
-+ y2k38_msg = "System appears to be 64-bit, but may use 32-bit time."
-+ else:
-+ y2k38_msg = "System is 64-bit and/or not susceptible to 2038 EOL."
-+ return y2k38_msg
-+
-
- def edit_cb(status, args, hook):
- global edit_cb_called
---
-2.11.0
-
diff --git a/user/gprbuild/APKBUILD b/user/gprbuild/APKBUILD
new file mode 100644
index 000000000..da94aa56d
--- /dev/null
+++ b/user/gprbuild/APKBUILD
@@ -0,0 +1,55 @@
+# Maintainer: Samuel Holland <samuel@sholland.org>
+pkgname=gprbuild
+pkgver=24.0.0
+pkgrel=0
+pkgdesc="An advanced build system for multi-language systems"
+url="https://github.com/AdaCore/gprbuild"
+arch="all"
+options="!check" # No test suite.
+license="GPL-3.0+"
+depends=""
+makedepends="gcc-gnat"
+source="https://github.com/AdaCore/gprbuild/archive/v$pkgver/$pkgname-$pkgver.tar.gz
+ https://github.com/AdaCore/xmlada/archive/v$pkgver/xmlada-$pkgver.tar.gz
+ foxkit.xml
+ "
+
+prepare() {
+ default_prepare
+ ln -s gpr-util-put_resource_usage__unix.adb \
+ "$builddir"/gpr/src/gpr-util-put_resource_usage.adb
+}
+
+build() {
+ xmlada="../xmlada-$pkgver"
+ incflags="-Isrc -Igpr/src -I$xmlada/dom -I$xmlada/input_sources \
+ -I$xmlada/sax -I$xmlada/schema -I$xmlada/unicode"
+ gcc -c ${CFLAGS} gpr/src/gpr_imports.c -o gpr_imports.o
+ for bin in gprbuild gprconfig gprclean gprinstall gprls gprname; do
+ gnatmake -j$JOBS $incflags $ADAFLAGS $bin-main \
+ -o $bin -cargs $CFLAGS -largs $LDFLAGS gpr_imports.o
+ done
+ for lib in gprlib gprbind; do
+ gnatmake -j$JOBS $incflags $ADAFLAGS $lib \
+ -cargs $CFLAGS -largs $LDFLAGS gpr_imports.o
+ done
+}
+
+package() {
+ mkdir -p "$pkgdir"/usr/bin
+ cp gprbuild gprconfig gprclean gprinstall gprls gprname \
+ "$pkgdir"/usr/bin
+ mkdir -p "$pkgdir"/usr/libexec/gprbuild
+ cp gprlib gprbind \
+ "$pkgdir"/usr/libexec/gprbuild
+ mkdir -p "$pkgdir"/usr/share/gpr
+ cp share/_default.gpr share/share.gpr \
+ "$pkgdir"/usr/share/gpr
+ mkdir -p "$pkgdir"/usr/share/gprconfig
+ cp "$srcdir"/foxkit.xml \
+ "$pkgdir"/usr/share/gprconfig
+}
+
+sha512sums="09da4d54f2f151e9f9453e1a459533e2373eb5d4c51831be2bf90964ebcf653752de2f8b271c77f7b599f62146516fc60258ec3c96779fa2b52cd52979c6bd03 gprbuild-24.0.0.tar.gz
+4e6773a5fdf9b6ebb5afca913d77aba9f697768f28ef9b23b9277aa4ea4ce09de4e53655dd5559e2326ff847327adb53fa6b776775aa923100a2624df415c97d xmlada-24.0.0.tar.gz
+e369c094963d3dcfb03d7ac0949825531bae6410ef9c4bec774cb0da70d2bd4a784bdec37db5151c0371ce769712ee02fc04f36896ccc8bddcdb585c1ee8dbbc foxkit.xml"
diff --git a/user/gprbuild/foxkit.xml b/user/gprbuild/foxkit.xml
new file mode 100644
index 000000000..d33cb33c2
--- /dev/null
+++ b/user/gprbuild/foxkit.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" ?>
+<gprconfig>
+ <configuration>
+ <targets>
+ <target name=".*foxkit-linux.*" />
+ </targets>
+ <hosts>
+ <host name=".*foxkit-linux.*" />
+ </hosts>
+ <config>
+ for Archive_Builder use ("ar", "cr");
+ for Archive_Builder_Append_Option use ("q");
+ for Archive_Indexer use ("ranlib");
+ for Archive_Suffix use ".a";
+ </config>
+ </configuration>
+</gprconfig>
diff --git a/user/gptfdisk/APKBUILD b/user/gptfdisk/APKBUILD
index 265d5f8c3..1021cbd57 100644
--- a/user/gptfdisk/APKBUILD
+++ b/user/gptfdisk/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gptfdisk
-pkgver=1.0.4
-pkgrel=0
+pkgver=1.0.5
+pkgrel=1
pkgdesc="Utility for manipulating GUID Partition Tables (GPT)"
url="https://www.rodsbooks.com/gdisk/index.html"
arch="all"
@@ -11,20 +11,20 @@ license="GPL-2.0-only"
depends=""
makedepends="icu-dev ncurses-dev popt-dev util-linux-dev"
subpackages="$pkgname-doc"
-source="https://www.rodsbooks.com/gdisk/gptfdisk-$pkgver.tar.gz"
+source="https://sourceforge.net/projects/gptfdisk/files/gptfdisk/$pkgver/gptfdisk-$pkgver.tar.gz
+ ncurses.patch
+ "
build() {
- cd "$builddir"
make LDFLAGS="$LDFLAGS -ltinfo"
}
package() {
- cd "$builddir"
- local _app
for _app in cgdisk fixparts gdisk sgdisk; do
install -D -m755 $_app "$pkgdir"/usr/sbin/$_app
install -D -m644 $_app.8 "$pkgdir"/usr/share/man/man8/$_app.8
done
}
-sha512sums="2df6db6974c06a6677a155d32566b8b46dad0df7781131e9018072db9acce5e41f6c4e7024b0e5f236dd43350a63572be34fb4b6fdb580cd9b946619a7a683bf gptfdisk-1.0.4.tar.gz"
+sha512sums="3d3a59e3488dd3d6bda5d103b9ad8b7936752210346b9787ddc936681498fba90577b6ae950c471d09a01bf6405fce32038ff1777c52db0b21e5277737fe3703 gptfdisk-1.0.5.tar.gz
+052dab1640dcceceace0a147af4853ba3f1210880bdd9519b151d9c8f17b6dbc339828fa83d73314af022aa27b9e2b8eabfd81460b0a7e3d3485697323c62760 ncurses.patch"
diff --git a/user/gptfdisk/ncurses.patch b/user/gptfdisk/ncurses.patch
new file mode 100644
index 000000000..6d8589309
--- /dev/null
+++ b/user/gptfdisk/ncurses.patch
@@ -0,0 +1,14 @@
+--- gptfdisk-1.0.5/gptcurses.cc.old 2020-02-17 22:34:11.000000000 +0000
++++ gptfdisk-1.0.5/gptcurses.cc 2020-02-26 02:16:16.836739330 +0000
+@@ -23,11 +23,7 @@
+ #include <iostream>
+ #include <string>
+ #include <sstream>
+-#ifdef __APPLE__
+ #include <ncurses.h>
+-#else
+-#include <ncursesw/ncurses.h>
+-#endif
+ #include "gptcurses.h"
+ #include "support.h"
+
diff --git a/user/granatier/APKBUILD b/user/granatier/APKBUILD
index f2504c535..eca4c9a4f 100644
--- a/user/granatier/APKBUILD
+++ b/user/granatier/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=granatier
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Clone of the classic Bomberman game"
url="https://www.kde.org/applications/games/granatier/"
@@ -13,10 +13,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
kconfigwidgets-dev kxmlgui-dev knewstuff-dev kdoctools-dev
libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/granatier-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/granatier-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="af4a4201cede2d01a848b6d6c889f6019eb9298373f4e3c4faa2d9d514a8127a5b910bb701ecaada7559a91c887cca1a895c2e18cdd47c02b2569d781f5574c3 granatier-18.12.3.tar.xz"
+sha512sums="ad3d1724047d6337534428673c8b16dd01f27be8afb4441ee176b16ea1db6af5bfb902f085358d748a01988f5f07df3283ba857294ef4dc609023b73bb91bba9 granatier-22.04.2.tar.xz"
diff --git a/user/grantlee/APKBUILD b/user/grantlee/APKBUILD
index ddf639728..6a2412025 100644
--- a/user/grantlee/APKBUILD
+++ b/user/grantlee/APKBUILD
@@ -1,20 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=grantlee
-pkgver=5.1.0
-pkgrel=1
-pkgdesc="Libraries for text templating with Qt"
+pkgver=5.3.1
+pkgrel=0
+pkgdesc="Qt string template engine based on the Django template system"
url="https://github.com/steveire/grantlee/"
arch="all"
license="LGPL-2.1+"
depends=""
depends_dev="qt5-qtbase-dev"
-makedepends="cmake $depends_dev qt5-qtscript-dev doxygen graphviz"
+makedepends="cmake $depends_dev qt5-qtscript-dev doxygen graphviz
+ qt5-qtdeclarative-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="grantlee-$pkgver.tar.gz::https://github.com/steveire/grantlee/archive/v$pkgver.tar.gz"
+source="https://github.com/steveire/$pkgname/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz
+ x87fpu.patch
+ enum-comparators.patch
+ "
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -24,21 +27,21 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make all docs
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E buildertest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
mkdir -p "$pkgdir"/usr/share/doc/grantlee
mv "$builddir"/apidox "$pkgdir"/usr/share/doc/grantlee/
}
-sha512sums="8a4906979f160abf21481d364f0318789c8b5340c62bff06cc62e6714dbf2c52cbfe577a24490052ac25d94f4cc59e11764204236bc7532bd7f1fd5188baa41a grantlee-5.1.0.tar.gz"
+sha512sums="dc7192fe0553954fffc3e2c584e4fdd80fc1f22d25846cacc5f2dcd1db2673ca62464c8492a4ed3bfc9dfc3e62ef13322809dd29bd56fa4a3a153a8d373ddde5 grantlee-5.3.1.tar.gz
+b515403727416ef91037e5774a78e4b477e4e99da0c58e53f3099a6f8558c25244416acabd2bde529aafa509c4a61c54761d39fdaceb756bc4b638ccc3285607 x87fpu.patch
+b5c57a73786978a61c1a1164aefa171a23fbb033a9fc980cceb9ab6cc48f90cc86be15a367cbc39e6234c261a3113d72189a02e16affac428ec4a8de67377fc9 enum-comparators.patch"
diff --git a/user/grantlee/enum-comparators.patch b/user/grantlee/enum-comparators.patch
new file mode 100644
index 000000000..94ee57e66
--- /dev/null
+++ b/user/grantlee/enum-comparators.patch
@@ -0,0 +1,14 @@
+Upstream-URL: https://github.com/steveire/grantlee/issues/89
+
+diff --git a/templates/tests/testbuiltins.cpp b/templates/tests/testbuiltins.cpp
+index fe7e4ed..82a065d 100644
+--- a/templates/tests/testbuiltins.cpp
++++ b/templates/tests/testbuiltins.cpp
+@@ -298,6 +298,7 @@ void TestBuiltinSyntax::testObjects()
+ Q_UNUSED(s3);
+
+ QMetaType{qMetaTypeId<MetaEnumVariable>()}.create(nullptr);
++ QMetaType::registerComparators<MetaEnumVariable>();
+ }
+
+ void TestBuiltinSyntax::testTruthiness_data()
diff --git a/user/grantlee/x87fpu.patch b/user/grantlee/x87fpu.patch
new file mode 100644
index 000000000..f439bf1f1
--- /dev/null
+++ b/user/grantlee/x87fpu.patch
@@ -0,0 +1,42 @@
+Upstream-URL: https://github.com/steveire/grantlee/pull/86
+
+From 7e34ffaff40fc085a15bb0ffabb5f247795581fd Mon Sep 17 00:00:00 2001
+From: Fabian Vogt <fabian@ritter-vogt.de>
+Date: Sun, 13 Nov 2022 14:01:21 +0100
+Subject: [PATCH] Fix formatting of some larger file sizes on 32bit x86
+
+With the x87 FPU available, GCC uses long double precision for some variables.
+Due to the function call passing a double, some comparisons break down.
+That resulted in "1.00 YB" being printed as "1000.00 ZB" instead.
+
+Fixes #85
+---
+ templates/lib/util.cpp | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/templates/lib/util.cpp b/templates/lib/util.cpp
+index 504674a7..5924cdf5 100644
+--- a/templates/lib/util.cpp
++++ b/templates/lib/util.cpp
+@@ -23,6 +23,7 @@
+ #include "metaenumvariable_p.h"
+ #include "metatype.h"
+
++#include <cfloat>
+ #include <QtCore/QStringList>
+
+ QString Grantlee::unescapeStringLiteral(const QString &input)
+@@ -212,7 +213,13 @@ std::pair<qreal, QString> Grantlee::calcFileSize(qreal size, int unitSystem,
+ bool found = false;
+ int count = 0;
+ const qreal baseVal = (_unitSystem == 10) ? 1000.0F : 1024.0F;
++#if FLT_EVAL_METHOD == 2
++ // Avoid that this is treated as long double, as the increased
++ // precision breaks the comparison below.
++ volatile qreal current = 1.0F;
++#else
+ qreal current = 1.0F;
++#endif
+ int units = decimalUnits.size();
+ while (!found && (count < units)) {
+ current *= baseVal;
diff --git a/user/grantleetheme/APKBUILD b/user/grantleetheme/APKBUILD
new file mode 100644
index 000000000..3f063fee1
--- /dev/null
+++ b/user/grantleetheme/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=grantleetheme
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="KDE Grantlee theme support library"
+url="https://kde.org/"
+arch="all"
+license="LGPL-2.1+"
+depends=""
+depends_dev="grantlee-dev"
+makedepends="$depends_dev qt5-qtbase-dev cmake extra-cmake-modules kauth-dev
+ kcodecs-dev kconfigwidgets-dev kcoreaddons-dev kguiaddons-dev ki18n-dev
+ kiconthemes-dev knewstuff-dev kservice-dev kwidgetsaddons-dev
+ kxmlgui-dev attica-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/grantleetheme-$pkgver.tar.xz
+ colour.patch
+ "
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ QT_QPA_PLATFORM=offscreen CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="431d8ab311f3257ca45786f09f058b5f69842058a4d17ea461935ffaeacb9f9f1ec0453117bae298536561e4eb346c70e9c41ce36269f8b6ee24c8e6e4cadec9 grantleetheme-22.04.2.tar.xz
+4b204647d7e98812971ad9aabf9f719871ad02be50f6717d24d6ffc5ae982c307223acd0b4893c3a6534d52002870dc9a5f9b0fb1b9875b5699e2f85c98ae257 colour.patch"
diff --git a/user/grantleetheme/colour.patch b/user/grantleetheme/colour.patch
new file mode 100644
index 000000000..2fe5971d0
--- /dev/null
+++ b/user/grantleetheme/colour.patch
@@ -0,0 +1,16 @@
+Upstream-URL: https://invent.kde.org/pim/grantleetheme/-/merge_requests/8
+--- grantleetheme-22.04.2/autotest/data/themes/color/color_expected.html.old 2022-05-11 23:53:25.000000000 -0500
++++ grantleetheme-22.04.2/autotest/data/themes/color/color_expected.html 2022-06-10 01:57:18.560153799 -0500
+@@ -24,9 +24,9 @@
+ Mix filtered: rgba(64, 0, 64, 1)
+
+ ## Color scheme
+-Normal background: #fcfcfc
+-Link background: #e4eef7
+-Normal text: #232627
++Normal background: #ffffff
++Link background: #e8f0f8
++Normal text: #232629
+ Link text: #2980b9
+ Hover color: #93cee9
+ Focus color: #3daee9
diff --git a/user/graphene/APKBUILD b/user/graphene/APKBUILD
new file mode 100644
index 000000000..9fcbb6154
--- /dev/null
+++ b/user/graphene/APKBUILD
@@ -0,0 +1,34 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=graphene
+pkgver=1.10.8
+pkgrel=0
+pkgdesc="Thin layer of graphic data types"
+url="https://ebassi.github.io/graphene/"
+arch="all"
+license="MIT"
+depends=""
+makedepends="glib-dev gobject-introspection-dev meson"
+subpackages="$pkgname-dev"
+source="graphene-$pkgver.tar.gz::https://github.com/ebassi/graphene/archive/refs/tags/$pkgver.tar.gz
+ installed-tests.patch
+ "
+
+build() {
+ meson \
+ -Dprefix=/usr \
+ -Dintrospection=enabled \
+ -Dinstalled_tests=false \
+ _build
+ ninja -C _build
+}
+
+check() {
+ ninja -C _build test
+}
+
+package() {
+ DESTDIR="$pkgdir" ninja -C _build install
+}
+
+sha512sums="526b0c17049459b687ceb7f6c26c9d982535e4048e74a0b6282704f9811d3c2e7e0e6cfef166aa953306b6cf77add6677bc600ae0c66cc052dc04c3d0345bd68 graphene-1.10.8.tar.gz
+862c77a54878706adcc5ec438a8aa24b43fdb1e8548942913bfd432411ea69d6541b9a04e99716162fc23354ec7664015ef3157869769a904ad0b281332bdb5d installed-tests.patch"
diff --git a/user/graphene/installed-tests.patch b/user/graphene/installed-tests.patch
new file mode 100644
index 000000000..5a097d996
--- /dev/null
+++ b/user/graphene/installed-tests.patch
@@ -0,0 +1,28 @@
+Upstream-URL: https://github.com/ebassi/graphene/issues/247
+
+From 85289fa63b1a5e4e5a03a79b947d1db5b9ec4778 Mon Sep 17 00:00:00 2001
+From: psykose <alice@ayaya.dev>
+Date: Thu, 7 Apr 2022 19:01:49 +0000
+Subject: [PATCH] meson: don't install introspection file with
+ installed_tests=false
+
+fixes #247
+---
+ tests/meson.build | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/tests/meson.build b/tests/meson.build
+index 0a6a355..0120c29 100644
+--- a/tests/meson.build
++++ b/tests/meson.build
+@@ -67,7 +67,9 @@ src_build_path = meson.current_build_dir() / '../src'
+
+ if build_gir and host_system == 'linux' and not meson.is_cross_build()
+ foreach unit: ['introspection.py']
+- install_data(unit, install_dir: installed_test_bindir)
++ if get_option('installed_tests')
++ install_data(unit, install_dir: installed_test_bindir)
++ endif
+
+ wrapper = '@0@.test'.format(unit)
+ custom_target(wrapper,
diff --git a/user/graphite2/APKBUILD b/user/graphite2/APKBUILD
index 33ff919e7..3b02c91e9 100644
--- a/user/graphite2/APKBUILD
+++ b/user/graphite2/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=graphite2
-_realname=${pkgname/2/}
-pkgver=1.3.13
+_realname=${pkgname%2}
+pkgver=1.3.14
pkgrel=0
pkgdesc="Text processing engine for complex languages"
url="http://graphite.sil.org/"
@@ -12,16 +12,13 @@ license="LGPL-2.1+ OR MPL-2.0+ OR GPL-2.0+"
depends=""
depends_dev="freetype-dev"
makedepends="$depends_dev cmake"
-install=""
subpackages="$pkgname-dev"
source="$pkgname-$pkgver.tar.gz::https://github.com/silnrsi/$_realname/archive/$pkgver.tar.gz
graphite2-1.2.0-cmakepath.patch
"
-builddir="$srcdir"/$_realname-$pkgver
+builddir="$srcdir/$_realname-$pkgver"
build() {
- cd "$builddir"
-
# Fix linking error on 32-bit platforms
sed -i -e 's/\-nodefaultlibs//g' src/CMakeLists.txt
@@ -31,8 +28,7 @@ build() {
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo \
-DGRAPHITE2_COMPARE_RENDERER=OFF \
- -DGRAPHITE2_NFILEFACE=ON \
- -DGRAPHITE2_NSEGCACHE=ON
+ -DGRAPHITE2_NFILEFACE=ON
# fix unwanted -O3 cflag (taken from Debian)
find . -type f ! -name "rules" ! -name "changelog" -exec sed -i -e 's/\-O3//g' {} \;
@@ -40,9 +36,8 @@ build() {
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir/" install
+ make DESTDIR="$pkgdir/" -C build install
}
-sha512sums="8e2c6047a66b4d8873842de6b9b1909d326512b47a04f483b3a6113b97fd0d47e0da7cf9ecf96e060ca06e5288b49f1300e2fd7165d2d82d6a8eb8cb7d53d33f graphite2-1.3.13.tar.gz
+sha512sums="49d127964d3f5c9403c7aecbfb5b18f32f25fe4919a81c49e0534e7123fe845423e16b0b8c8baaae21162b1150ab3e0f1c22c344e07d4364b6b8473c40a0822c graphite2-1.3.14.tar.gz
4ef5414e6d554bb8d6ead435e38d061a073f350c313b7141158bb68332f5f57ca5250385875a387b828bb657964588e974143b96b5e11c2cd314871e7baddb88 graphite2-1.2.0-cmakepath.patch"
diff --git a/user/graphviz/0001-clone-nameclash.patch b/user/graphviz/0001-clone-nameclash.patch
index 6222238d8..f65785181 100644
--- a/user/graphviz/0001-clone-nameclash.patch
+++ b/user/graphviz/0001-clone-nameclash.patch
@@ -14,7 +14,7 @@ diff --git a/lib/gvpr/actions.c b/lib/gvpr/actions.c
index 05bfcd1..b3b4a60 100644
--- a/lib/gvpr/actions.c
+++ b/lib/gvpr/actions.c
-@@ -380,7 +380,7 @@ Agraph_t *cloneG(Agraph_t * g, char* name)
+@@ -367,7 +367,7 @@ Agraph_t *cloneG(Agraph_t * g, char* name)
* graph. Otherwise, create a clone subgraph of g.
* Assume obj != NULL.
*/
@@ -23,7 +23,7 @@ index 05bfcd1..b3b4a60 100644
{
Agobj_t *nobj = 0;
Agedge_t *e;
-@@ -415,8 +415,8 @@ Agobj_t *clone(Agraph_t * g, Agobj_t * obj)
+@@ -402,8 +402,8 @@ Agobj_t *clone(Agraph_t * g, Agobj_t * obj)
case AGINEDGE:
case AGOUTEDGE:
e = (Agedge_t *) obj;
@@ -38,7 +38,7 @@ diff --git a/lib/gvpr/actions.h b/lib/gvpr/actions.h
index 5c62a3b..4223c52 100644
--- a/lib/gvpr/actions.h
+++ b/lib/gvpr/actions.h
-@@ -22,7 +22,7 @@ extern "C" {
+@@ -18,7 +18,7 @@ extern "C" {
#include "expr.h"
extern void nodeInduce(Agraph_t * selected);
@@ -51,20 +51,20 @@ diff --git a/lib/gvpr/compile.c b/lib/gvpr/compile.c
index c157572..0914210 100644
--- a/lib/gvpr/compile.c
+++ b/lib/gvpr/compile.c
-@@ -1087,7 +1087,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
+@@ -1145,7 +1145,7 @@ getval(Expr_t * pgm, Exnode_t * node, Exid_t * sym, Exref_t * ref,
error(ERROR_WARNING, "NULL object passed to clone()");
v.integer = 0;
} else
-- v.integer = PTR2INT(clone(gp, objp));
-+ v.integer = PTR2INT(cloneO(gp, objp));
+- v.integer = ptr2int(clone(gp, objp));
++ v.integer = ptr2int(cloneO(gp, objp));
break;
case F_cloneG:
- gp = INT2PTR(Agraph_t *, args[0].integer);
+ gp = int2ptr(args[0].integer);
diff --git a/lib/gvpr/gvpr.c b/lib/gvpr/gvpr.c
index 0d47d70..9a1bfd1 100644
--- a/lib/gvpr/gvpr.c
+++ b/lib/gvpr/gvpr.c
-@@ -803,7 +803,7 @@ addOutputGraph (Gpr_t* state, gvpropts* uopts)
+@@ -837,7 +837,7 @@ addOutputGraph (Gpr_t* state, gvpropts* uopts)
Agraph_t* g = state->outgraph;
if ((agroot(g) == state->curgraph) && !uopts->ingraphs)
@@ -73,7 +73,7 @@ index 0d47d70..9a1bfd1 100644
uopts->n_outgraphs++;
uopts->outgraphs = oldof(uopts->outgraphs,Agraph_t*,uopts->n_outgraphs,0);
-@@ -988,7 +988,7 @@ int gvpr (int argc, char *argv[], gvpropts * uopts)
+@@ -1031,7 +1031,7 @@ int gvpr (int argc, char *argv[], gvpropts * uopts)
/* begin graph */
if (incoreGraphs && (opts->compflags & CLONE))
diff --git a/user/graphviz/APKBUILD b/user/graphviz/APKBUILD
index 73aebef87..759243a27 100644
--- a/user/graphviz/APKBUILD
+++ b/user/graphviz/APKBUILD
@@ -1,9 +1,9 @@
-# Contributor: Sören Tempel <soeren/alpine@soeren-tempel.net>
+# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=graphviz
-pkgver=2.40.1
-pkgrel=2
+pkgver=2.50.0
+pkgrel=0
pkgdesc="Graph visualization software"
url="http://www.graphviz.org/"
arch="all"
@@ -13,27 +13,18 @@ depends=""
depends_dev="zlib-dev libpng-dev libjpeg-turbo-dev expat-dev
fontconfig-dev libsm-dev libxext-dev cairo-dev pango-dev
librsvg-dev gmp-dev freetype-dev"
-makedepends="$depends_dev flex swig guile-dev m4 libtool
- bison gtk+2.0-dev libltdl tcl tcl-dev"
+makedepends="$depends_dev flex swig m4 libtool guile-dev
+ bison gtk+2.0-dev libltdl perl-dev python3-dev tcl tcl-dev"
install="$pkgname.pre-deinstall"
triggers="$pkgname.trigger=/usr/lib/graphviz"
-subpackages="$pkgname-dev $pkgname-doc
- $pkgname-gtk $pkgname-graphs guile-$pkgname:guile"
-source="$pkgname-$pkgver.tar.gz::https://graphviz.gitlab.io/pub/graphviz/stable/SOURCES/graphviz.tar.gz
+subpackages="$pkgname-dev $pkgname-doc guile-$pkgname:guile
+ $pkgname-gtk $pkgname-graphs perl-gv:_pl py3-gv:_py3 tcl-$pkgname:_tcl"
+source="https://gitlab.com/api/v4/projects/4207231/packages/generic/$pkgname-releases/$pkgver/$pkgname-$pkgver.tar.xz
$pkgname.trigger
0001-clone-nameclash.patch
"
-prepare() {
- default_prepare
-
- cd "$builddir"
- ./autogen.sh NOCONFIG
-}
-
build() {
- cd "$builddir"
-
LIBPOSTFIX=/ \
./configure \
--build=$CBUILD \
@@ -66,7 +57,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" \
pkgconfigdir=/usr/lib/pkgconfig \
install
@@ -76,11 +66,17 @@ package() {
"$pkgdir"/usr/share/doc/graphviz
}
-guile() {
- pkgdesc="Guile bindings for graphviz"
+_lang() {
+ pkgdesc="$2 bindings for graphviz"
+ depends="$3"
mkdir -p "$subpkgdir"/usr/lib/graphviz
- mv "$pkgdir"/usr/lib/graphviz/guile* \
+ mv "$pkgdir"/usr/lib/graphviz/$1* \
"$subpkgdir"/usr/lib/graphviz/
+ mv "$pkgdir"/usr/lib/$1* "$subpkgdir"/usr/lib/ || true
+}
+
+guile() {
+ _lang guile Guile guile
}
gtk() {
@@ -98,6 +94,18 @@ graphs() {
"$subpkgdir"/usr/share/graphviz/
}
-sha512sums="a3f358a7050523a39b91a259563a95925b37853ffec799e571211af5b686d3af42457c937882954482785745d90416b1abd945caf05f8abb52b3876e07aa70f5 graphviz-2.40.1.tar.gz
+_pl() {
+ _lang perl Perl
+}
+
+_py3() {
+ _lang python3 "Python 3"
+}
+
+_tcl() {
+ _lang tcl "Tcl/Tk"
+}
+
+sha512sums="2b035559da20bad35e046bfa1b2c8ce1b395ff9b812f33bcf612d7f7c65ff9a226c9b209553b4283825330683fb925516563943de7922c2f6434baaf3c3b5ee2 graphviz-2.50.0.tar.xz
50947e6a11929f724759266f7716d52d10923eba6d59704ab39e4bdf18f8471d548c2b11ab051dd4b67cb82742aaf54d6358890d049d5b5982f3383b65f7ae8c graphviz.trigger
-aa4cbc341906a949a6bf78cadd96c437d6bcc90369941fe03519aa4447731ecbf6063a0dd0366d3e7aaadf22b69e4bcab3f8632a7da7a01f8e08a3be05c2bc5d 0001-clone-nameclash.patch"
+6c749a15fb7e52107d74bd49dc49f11b7187bf088f0d73c57f08777032c2a55f49b6021aa40fdf89fd9dbd3c9d02ca45723b225d001117fd462b1e148cb3f44a 0001-clone-nameclash.patch"
diff --git a/user/grfcodec/APKBUILD b/user/grfcodec/APKBUILD
index 7ca60e872..5afe9c229 100644
--- a/user/grfcodec/APKBUILD
+++ b/user/grfcodec/APKBUILD
@@ -1,29 +1,33 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=grfcodec
-pkgver=6.0.6
+pkgver=6.1.0
pkgrel=0
pkgdesc="Tool for manipulating OpenTTD GRF files"
-url="https://dev.openttdcoop.org/projects/grfcodec"
+url=" "
arch="all"
options="!check" # No test suite.
license="GPL-2.0-only"
depends=""
-makedepends="boost-dev"
+makedepends="boost-dev cmake libpng-dev"
subpackages="$pkgname-doc"
-source="https://binaries.openttd.org/extra/grfcodec/$pkgver/grfcodec-$pkgver-source.tar.xz
- va_copy.patch
- "
+source="https://github.com/OpenTTD/$pkgname/releases/download/$pkgver/$pkgname-$pkgver-source.tar.xz"
build() {
- cd "$builddir"
- make
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
package() {
- cd "$builddir"
- make prefix=/usr DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" make -C build install
}
-sha512sums="543123c794bfdb5b6556f7a897bcd2f3bdd09be8ad6a4ff07b138e0cac62621a4801c732bb20099c1bb383ad5822fc4ade276d49acf2744c811edd10d7699480 grfcodec-6.0.6-source.tar.xz
-4e7034132f889ac62b82d08dae8c928c8a7efd5a0c3dc0d3f35d6c394fb78082a37a22678c5a428489bd26608d868054131a14fb10201d5ce478d46eb9c96890 va_copy.patch"
+sha512sums="9129e0f38b151e11c90585e0fe966e042ad08ec90f800ee80f749865aed6c72c733639b8d02ecd613409f2a0ae6d1f72fa1d3524f7c450a0f06ff42ee170f16f grfcodec-6.1.0-source.tar.xz"
diff --git a/user/grfcodec/va_copy.patch b/user/grfcodec/va_copy.patch
deleted file mode 100644
index 04a549d60..000000000
--- a/user/grfcodec/va_copy.patch
+++ /dev/null
@@ -1,16 +0,0 @@
---- grfcodec-6.0.6/src/sanity_defines.h.old 2015-05-09 10:59:46.000000000 +0000
-+++ grfcodec-6.0.6/src/sanity_defines.h 2019-01-14 19:17:36.690000000 +0000
-@@ -77,10 +77,10 @@
- ~apWrapper(){va_end(_ap);}
- operator va_list&(){return _ap;}
- operator const va_list&()const{return _ap;}
--#ifdef __va_copy
-+#ifdef va_copy
- va_list&operator=(va_list&ap){
-- __va_copy(_ap,ap);
-- return _ap;
-+ va_copy(_ap,ap);
-+ return _ap;
- }
- #else
- va_list const&operator=(va_list const&ap){
diff --git a/user/groff/APKBUILD b/user/groff/APKBUILD
new file mode 100644
index 000000000..f183b51a6
--- /dev/null
+++ b/user/groff/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=groff
+pkgver=1.22.4
+pkgrel=1
+pkgdesc="GNU troff text-formatting system"
+url="https://www.gnu.org/software/groff/groff.html"
+arch="all"
+license="GPL-3.0+"
+depends=""
+makedepends="perl texinfo"
+subpackages="$pkgname-doc"
+source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz"
+
+build () {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --without-x
+ # work around parallel build issue
+ make arch/misc && make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ rm -rf "$pkgdir"/usr/lib/charset.alias
+ rmdir -p "$pkgdir"/usr/lib 2>/dev/null || true
+
+ #1086
+ rm -v "$pkgdir"/usr/share/man/man7/roff.7
+}
+
+sha512sums="1c42d3cd71efaf067b5850945d9097fa1f0fadd5e2b6ba7446bd9d4f439fe1ad058e4ddb0d4e0f503682137dfc7c822944ce1e3e5cf981673f8ba197ea77126d groff-1.22.4.tar.gz"
diff --git a/user/grub/0002-revert-gawk.patch b/user/grub/0002-revert-gawk.patch
new file mode 100644
index 000000000..93ed3448d
--- /dev/null
+++ b/user/grub/0002-revert-gawk.patch
@@ -0,0 +1,19 @@
+Revert "grub-core/genmoddep.awk: Ensure output is deterministic"
+
+This reverts commit 87648e9c12a32bddb005b899edc44c2c9c63df82.
+
+We don't ship gawk, so we can't use asorti. The old way worked fine enough.
+
+--- grub-2.12-rc1/grub-core/genmoddep.awk.old 2023-07-10 15:43:48.000000000 +0000
++++ grub-2.12-rc1/grub-core/genmoddep.awk 2023-10-01 07:52:03.407286373 +0000
+@@ -63,9 +63,7 @@
+ }
+ modlist = ""
+ depcount[mod] = 0
+- n = asorti(uniqmods, w)
+- for (i = 1; i <= n; i++) {
+- depmod = w[i]
++ for (depmod in uniqmods) {
+ modlist = modlist " " depmod;
+ inverse_dependencies[depmod] = inverse_dependencies[depmod] " " mod
+ depcount[mod]++
diff --git a/user/grub/fix-gcc-no-pie-specs.patch b/user/grub/0010-fix-gcc-no-pie-specs.patch
index 273c9dbe3..74b76f29e 100644
--- a/user/grub/fix-gcc-no-pie-specs.patch
+++ b/user/grub/0010-fix-gcc-no-pie-specs.patch
@@ -1,6 +1,7 @@
---- ./configure.ac.orig
-+++ ./configure.ac
-@@ -1100,7 +1100,7 @@
+diff -ur a/configure b/configure
+--- a/configure 2023-10-03 12:10:39.434444137 -0500
++++ b/configure 2023-10-03 12:10:58.731025605 -0500
+@@ -37656,7 +37656,7 @@
if test x"$grub_cv_target_cc_efiemu64_link_format" = xunknown; then
efiemu_excuse="no suitable link format for efiemu64 found"
else
diff --git a/user/grub/2.02_beta3-mkconfig-alpine.patch b/user/grub/2.02_beta3-mkconfig-alpine.patch
deleted file mode 100644
index 606540fff..000000000
--- a/user/grub/2.02_beta3-mkconfig-alpine.patch
+++ /dev/null
@@ -1,30 +0,0 @@
---- a/util/grub.d/10_linux.in
-+++ b/util/grub.d/10_linux.in
-@@ -21,8 +21,11 @@
- exec_prefix="@exec_prefix@"
- datarootdir="@datarootdir@"
-
-+. /etc/update-extlinux.conf
- . "$pkgdatadir/grub-mkconfig_lib"
-
-+GRUB_CMDLINE_LINUX_DEFAULT="modules=${modules} ${default_kernel_opts} ${GRUB_CMDLINE_LINUX_DEFAULT}"
-+
- export TEXTDOMAIN=@PACKAGE@
- export TEXTDOMAINDIR="@localedir@"
-
-@@ -75,6 +78,7 @@
- version="$2"
- type="$3"
- args="$4"
-+ tag="$(basename ${rel_dirname}/${basename} | cut -b9-)"
-
- if [ -z "$boot_device_id" ]; then
- boot_device_id="$(grub_get_device_id "${GRUB_DEVICE}")"
-@@ -133,6 +137,7 @@
- echo '$(echo "$message" | grub_quote)'
- linux ${rel_dirname}/${basename} root=${linux_root_device_thisversion} ro ${args}
- EOF
-+ [ -f "/boot/initramfs-${tag}" ] && initrd="initramfs-${tag}"
- if test -n "${initrd}" ; then
- # TRANSLATORS: ramdisk isn't identifier. Should be translated.
- message="$(gettext_printf "Loading initial ramdisk ...")"
diff --git a/user/grub/APKBUILD b/user/grub/APKBUILD
index efcfda2af..ecc2b60bb 100644
--- a/user/grub/APKBUILD
+++ b/user/grub/APKBUILD
@@ -1,48 +1,60 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=grub
-pkgver=2.02
-pkgrel=4
-pkgdesc="Bootloader with support for Linux, Multiboot and more"
+pkgver=2.12
+_pkgver=$(printf '%s' "$pkgver" | tr _ \~)
+pkgrel=0
+pkgdesc="Boot loader with support for Linux, Multiboot and more"
url="https://www.gnu.org/software/grub/"
-arch="all !s390x"
+arch="all"
# strip handled by grub Makefiles, abuild strip breaks xen pv-grub
options="!check !strip" # Cannot test boot loader.
license="GPL-3.0+"
depends=""
-makedepends="bison flex freetype-dev linux-headers lvm2-dev python3 xz unifont
- automake autoconf libtool"
-subpackages="$pkgname-dev $pkgname-doc"
+makedepends="bison flex freetype-dev fuse-dev linux-headers lvm2-dev python3
+ unifont xz"
+# [22:02] <@awilfox> [[sroracle]]: grub breaks without its locale files present
+# [22:02] <@awilfox> it cannot be split
+subpackages="$pkgname-dev $pkgname-doc $pkgname-mount"
-# currently grub only builds on x86*, aarch64 and ppc* systems
flavors=""
case "$CARCH" in
-x86 | pmmx) flavors="efi bios";;
+x86|pmmx) flavors="efi bios";;
x86_64) flavors="efi bios xenhost";;
-aarch64|arm*) flavors="efi";;
+aarch64) flavors="efi";;
+arm*) flavors="efi uboot";;
ppc*) flavors="ieee1275"; makedepends="$makedepends powerpc-utils" ;;
-s390x) flavors="emu" ;;
+sparc*) flavors="ieee1275";;
+mips*) flavors="arc";;
+riscv*) flavors="efi";;
esac
for f in $flavors; do
subpackages="$subpackages $pkgname-$f"
done
-source="https://ftp.gnu.org/gnu/grub/grub-$pkgver.tar.xz
- fix-gcc-no-pie-specs.patch
+install="$pkgname.post-upgrade"
+
+source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$_pkgver.tar.xz
+ adelie-branding.patch
grub2-accept-empty-module.patch
+ 0002-revert-gawk.patch
+ 0010-fix-gcc-no-pie-specs.patch
+ xfs.patch
grub-xen-host_grub.cfg
- 2.02_beta3-mkconfig-alpine.patch
+ default-grub
+ update-grub
+ quirk-01_radeon_agpmode
"
-
-prepare() {
- default_prepare
- autoreconf -vif
-}
+builddir="$srcdir/$pkgname-$_pkgver"
_build_flavor() {
- local flavor="$1"
+ flavor="$1"
shift
- local _configure="$@"
+ _configure="$@"
+ CFLAGS="${CFLAGS} -fno-reorder-functions" # Workaround for image#403
+ case $CTARGET_ARCH in
+ ppc64) export CFLAGS="${CFLAGS} -mno-altivec";; # Workaround for http://savannah.gnu.org/bugs/?52629
+ esac
msg "Building grub for platform $flavor"
mkdir -p "$srcdir"/build-$flavor
@@ -62,7 +74,9 @@ _build_flavor() {
}
build() {
- local f
+ # missing from source tarball, will cause build error
+ printf "depends bli part_gpt\n" > "$builddir"/grub-core/extra_deps.lst
+ f=""
for f in $flavors; do
case "$f" in
bios) _build_flavor $f --with-platform=pc;;
@@ -97,7 +111,7 @@ _install_xen() {
}
_install_flavor() {
- local flavor="$1"
+ flavor="$1"
cd "$srcdir"/build-$flavor
case $flavor in
xenhost) _install_xen;;
@@ -113,46 +127,70 @@ package() {
done
rm -f "$pkgdir"/usr/lib/charset.alias
+ install -D -m644 "$srcdir"/default-grub "$pkgdir"/etc/default/grub
+ install -D -m755 "$srcdir"/update-grub "$pkgdir"/usr/sbin
# remove grub-install warning of missing directory
mkdir -p "$pkgdir"/usr/share/locale
+
+ for i in "$srcdir"/quirk-*; do
+ install -Dm755 "$i" \
+ "$pkgdir"/etc/grub-quirks.d/"${i##"$srcdir"/quirk-}"
+ done
+
+ mkdir -p "$pkgdir"/etc/easy-boot.d
+ ln -s ../../usr/sbin/update-grub \
+ "$pkgdir"/etc/easy-boot.d/50-grub
}
bios() {
pkgdesc="$pkgdesc (BIOS version)"
depends="$pkgname"
- mkdir -p $subpkgdir/usr/lib/grub
- mv $pkgdir/usr/lib/grub/*-pc $subpkgdir/usr/lib/grub/
+ mkdir -p "$subpkgdir"/usr/lib/grub
+ mv "$pkgdir"/usr/lib/grub/*-pc "$subpkgdir"/usr/lib/grub/
}
efi() {
pkgdesc="$pkgdesc (EFI version)"
- depends="$pkgname"
- mkdir -p $subpkgdir/usr/lib/grub
- mv $pkgdir/usr/lib/grub/*-efi $subpkgdir/usr/lib/grub/
+ depends="$pkgname efibootmgr efivar"
+ mkdir -p "$subpkgdir"/usr/lib/grub
+ mv "$pkgdir"/usr/lib/grub/*-efi "$subpkgdir"/usr/lib/grub/
}
xenhost() {
- pkgdesc="$pkgdesc (XEN host version)"
- mkdir -p $subpkgdir/usr/lib/grub-xen
- mv $pkgdir/*-xen.bin $subpkgdir/usr/lib/grub-xen/
+ pkgdesc="$pkgdesc (Xen host version)"
+ mkdir -p "$subpkgdir"/usr/lib/grub-xen
+ mv "$pkgdir"/*-xen.bin "$subpkgdir"/usr/lib/grub-xen/
}
ieee1275() {
- pkgdesc="$pkgdesc (IEEE1275 version)"
- depends="$pkgname powerpc-utils"
- mkdir -p $subpkgdir/usr/lib/grub
- mv $pkgdir/usr/lib/grub/*-ieee1275 $subpkgdir/usr/lib/grub/
+ pkgdesc="$pkgdesc (IEEE-1275 OpenFirmware version)"
+ case $CTARGET_ARCH in
+ ppc*) depends="$pkgname powerpc-utils"
+ esac
+ mkdir -p "$subpkgdir"/usr/lib/grub
+ mv "$pkgdir"/usr/lib/grub/*-ieee1275 "$subpkgdir"/usr/lib/grub/
+}
+
+uboot() {
+ pkgdesc="$pkgdesc (U-Boot version)"
+ mkdir -p "$subpkgdir"/usr/lib/grub
+ mv "$pkgdir"/usr/lib/grub/*-uboot "$subpkgdir"/usr/lib/grub/
}
-emu() {
- pkgdesc="$pkgdesc (EMU version)"
+mount() {
+ pkgdesc="Utility to mount filesystems using GRUB modules"
depends="$pkgname"
- mkdir -p $subpkgdir/usr/lib/grub
- mv $pkgdir/usr/lib/grub/*-emu $subpkgdir/usr/lib/grub/
+ mkdir -p "$subpkgdir"/usr/bin/
+ mv "$pkgdir"/usr/bin/grub-mount "$subpkgdir"/usr/bin/
}
-sha512sums="cc6eb0a42b5c8df2f671cc128ff725afb3ff1f8832a196022e433cf0d3b75decfca2316d0aa5fabea75747d55e88f3d021dd93508563f8ca80fd7b9e7fe1f088 grub-2.02.tar.xz
-f2a7d9ab6c445f4e402e790db56378cecd6631b5c367451aa6ce5c01cd95b95c83c3dd24d6d4b857f8f42601eba82c855607513eb6ce5b2af6bd6c71f046e288 fix-gcc-no-pie-specs.patch
-098a1742aef131c85d63b934a9815879b991f2e73030cb90ac4b5dcd07d249fa0dd0a281e52ada0e10f05d59223493bd416eb47543242bf0ba336a0ebc9b2a1a grub2-accept-empty-module.patch
+sha512sums="761c060a4c3da9c0e810b0ea967e3ebc66baa4ddd682a503ae3d30a83707626bccaf49359304a16b3a26fc4435fe6bea1ee90be910c84de3c2b5485a31a15be3 grub-2.12.tar.xz
+4a6c909a1150b057fb0563f7a0646db33e16f84d6a8c443ef7db4003efd56c211a52f87699c5c95a6ccde65f6db46a8711a5b784f38479db804938dfe3115439 adelie-branding.patch
+f1daae3015c84af94aeffce20de1068c3de272aff59f809e956a085cf289c371c61b64ad1d440765c98a4d674761ea67d2986cc4b1d0dfffcf71caaf94c6f600 grub2-accept-empty-module.patch
+18502c79128d88154885a6e595bb42d4167f4e08e89e5bd9471234d4e4ba0d6a6ab7dc50a324e9c71ee8a92f3dee8f1a800942adf62ac8bc4041c6a154b19beb 0002-revert-gawk.patch
+4b369af412a303464fb538f0f1d7c51dfba4481448409204290e7959397243cb544ecaa8bd9db096788e1eccae0c4c6fac1af9b7819c34f20d01a0eb6c5105ff 0010-fix-gcc-no-pie-specs.patch
+60f884595a713e52052eb1741bd2a9f42110736b689c045d9fb23d08970fb8475f25bfdf056552040a7b5559817289774f987c825ef006e556d79f718935376f xfs.patch
4e7394e0fff6772c89683039ccf81099ebbfe4f498e6df408977a1488fd59389b6e19afdbf0860ec271e2b2aea0df7216243dcc8235d1ca3af0e7f4d0a9d60a4 grub-xen-host_grub.cfg
-5de7c1cc11640a3892447f0daa1e3fd1f67b0c474c8aec555e4e6315b5e6c00491ba02c88b420cec221da0640c6961d639f148746df14a0b2c15bda7989cd25c 2.02_beta3-mkconfig-alpine.patch"
+1cb675fa0af9a1fd8d1a868e3e9de3bfef7eada66c5df0cfef23eca33e93e676eed6e1f67c679690f3e581565b350a9f3ba01aa9b89de66c970ea61ca21bcd65 default-grub
+8e5f1cf91da9fd956695438509bb26e45f38170ca90d99a996e859053d72c82b7e4b02cb8979f047fc53498036f47b5400bf54687c390793995a05ded4216d55 update-grub
+78b7ec141a364994c7de181e47fedca820add9960c56c7adf4c14ee11d5249a0887fd788ecd5d24b9bdd102b7c40395181e2f7c3fe5ab795dd7c0057ba1115c5 quirk-01_radeon_agpmode"
diff --git a/user/grub/adelie-branding.patch b/user/grub/adelie-branding.patch
new file mode 100644
index 000000000..463d4bcf5
--- /dev/null
+++ b/user/grub/adelie-branding.patch
@@ -0,0 +1,25 @@
+--- grub-2.04/util/grub.d/10_linux.in.old 2018-11-24 17:13:02.000000000 +0000
++++ grub-2.04/util/grub.d/10_linux.in 2019-10-03 01:22:34.593401423 +0000
+@@ -28,12 +28,16 @@
+
+ CLASS="--class gnu-linux --class gnu --class os"
+
+-if [ "x${GRUB_DISTRIBUTOR}" = "x" ] ; then
+- OS=GNU/Linux
+-else
+- OS="${GRUB_DISTRIBUTOR} GNU/Linux"
+- CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}"
+-fi
++case "x${GRUB_DISTRIBUTOR}" in
++ x)
++ OS=GNU/Linux;;
++ xAdélie|xAdelie|xadelie)
++ OS="Adélie Linux";
++ CLASS="--class adelie";;
++ *)
++ OS="${GRUB_DISTRIBUTOR} GNU/Linux";
++ CLASS="--class $(echo ${GRUB_DISTRIBUTOR} | tr 'A-Z' 'a-z' | cut -d' ' -f1|LC_ALL=C sed 's,[^[:alnum:]_],_,g') ${CLASS}";;
++esac
+
+ # loop-AES arranges things so that /dev/loop/X can be our root device, but
+ # the initrds that Linux uses don't like that.
diff --git a/user/grub/default-grub b/user/grub/default-grub
new file mode 100644
index 000000000..ca5656224
--- /dev/null
+++ b/user/grub/default-grub
@@ -0,0 +1,18 @@
+# Welcome to Adélie Linux.
+# This file contains configuration for the GRUB boot manager.
+# Changes to this file won't take effect unless you run `update-grub` as root.
+
+GRUB_DEFAULT="Adélie"
+GRUB_TIMEOUT=5
+GRUB_DISTRIBUTOR="Adélie"
+GRUB_CMDLINE_LINUX_DEFAULT="ro"
+GRUB_DISABLE_LINUX_PARTUUID=false
+
+# Uncomment the following line if you do *not* want /boot/grub/grub.cfg to be
+# automatically regenerated when easy-kernel is upgraded.
+#ADELIE_MANUAL_CONFIG=1
+
+for i in /etc/grub-quirks.d/[0-9][0-9]*; do
+ [ -x "$i" ] || continue
+ . "$i"
+done
diff --git a/user/grub/grub.post-upgrade b/user/grub/grub.post-upgrade
new file mode 100644
index 000000000..5b9cbb072
--- /dev/null
+++ b/user/grub/grub.post-upgrade
@@ -0,0 +1,38 @@
+#!/bin/sh -e
+ver_new="$1"
+ver_old="$2"
+
+if [ "$(apk version -t "$ver_old" "2.02-r8")" = "<" ]; then
+ cat >&2 <<-EOF
+ *
+ * Starting with grub=2.02-r8, /boot/grub/grub.cfg is now automatically
+ * regenerated when easy-kernel is upgraded.
+ *
+ EOF
+ if ! grep -Fqx '# DO NOT EDIT THIS FILE' /boot/grub/grub.cfg; then
+ cat >&2 <<-EOF
+ * It appears that you have a manual GRUB configuration.
+ * If this is incorrect, comment out ADELIE_MANUAL_CONFIG
+ * in /etc/default/grub. When this option is set, /boot/grub/grub.cfg
+ * will *not* be automatically regenerated.
+ *
+ EOF
+
+ cat >> /etc/default/grub <<-EOF
+ # Uncomment the following line if you do *not* want /boot/grub/grub.cfg to be
+ # automatically regenerated when easy-kernel is upgraded.
+ ADELIE_MANUAL_CONFIG=1
+ EOF
+ else
+ cat >&2 <<-EOF
+ * It appears that you have a default GRUB configuration.
+ * If this is incorrect, uncomment ADELIE_MANUAL_CONFIG=1
+ * in /etc/default/grub. When this option is set, /boot/grub/grub.cfg
+ * will *not* be automatically regenerated.
+ *
+ * A copy of the existing configuration will be saved as
+ * /boot/grub/grub.cfg.update-grub-old.
+ *
+ EOF
+ fi
+fi
diff --git a/user/grub/grub2-accept-empty-module.patch b/user/grub/grub2-accept-empty-module.patch
index d3d75457d..b6def4f94 100644
--- a/user/grub/grub2-accept-empty-module.patch
+++ b/user/grub/grub2-accept-empty-module.patch
@@ -10,13 +10,13 @@ also no relocations that's no problem (and that is checked
independendly).
--- grub-2.02~beta3/util/grub-module-verifierXX.c.mm 2016-02-11 10:57:41.000000000 +0000
+++ grub-2.02~beta3/util/grub-module-verifierXX.c 2016-08-31 15:26:36.000000000 +0000
-@@ -199,7 +199,8 @@ check_symbols (const struct grub_module_
- Elf_Shdr *s = find_section (arch, e, ".moddeps");
+@@ -305,7 +305,8 @@ check_symbols (const struct grub_module_
+ s = find_section (arch, e, ".moddeps");
if (!s)
-- grub_util_error ("no symbol table and no .moddeps section");
-+ /*grub_util_error ("no symbol table and no .moddeps section");*/
+- grub_util_error ("%s: no symbol table and no .moddeps section", modname);
++ /*grub_util_error ("%s: no symbol table and no .moddeps section", modname);*/
+ return; /* An empty module happens for all_video.module for Xen */
if (!s->sh_size)
- grub_util_error ("no symbol table and empty .moddeps section");
+ grub_util_error ("%s: no symbol table and empty .moddeps section", modname);
diff --git a/user/grub/quirk-01_radeon_agpmode b/user/grub/quirk-01_radeon_agpmode
new file mode 100644
index 000000000..879f1619e
--- /dev/null
+++ b/user/grub/quirk-01_radeon_agpmode
@@ -0,0 +1,28 @@
+#!/bin/sh
+# vi: noet:
+# Horst Burkhardt <horst@adelielinux.org> 2018
+# Max Rees <maxcrees@me.com> 2019
+#
+# AGP acceleration in the Radeon KMS driver has been broken on Apple PPC
+# since the 2.6 series, and most developers are in agreement that since
+# UniNorth is underdocumented, it probably won't ever be fixed. Disable
+# it on all Apple machines except ones where it is known not to apply.
+#
+# https://bts.adelielinux.org/show_bug.cgi?id=49
+set -e
+
+case "$(uname -m)" in
+ppc|ppc64)
+ if grep -q 'MacRISC[23]' /proc/cpuinfo; then
+ case "$(awk '$1 == "machine" { print $3 }' /proc/cpuinfo)" in
+ PowerBook1,1) ;;
+ PowerMac1,1) ;;
+ PowerMac1,2) ;;
+ PowerMac11,2) ;;
+ PowerMac12,1) ;;
+ RackMac3,1) ;;
+ iMac,1) ;;
+ *) export GRUB_CMDLINE_LINUX="radeon.agpmode=-1 $GRUB_CMDLINE_LINUX";;
+ esac
+ fi;;
+esac
diff --git a/user/grub/update-grub b/user/grub/update-grub
new file mode 100644
index 000000000..07b57a9c0
--- /dev/null
+++ b/user/grub/update-grub
@@ -0,0 +1,17 @@
+#!/bin/sh -e
+. /etc/default/grub
+if [ "$ADELIE_MANUAL_CONFIG" = 1 ]; then
+ cat >&2 <<-EOF
+ *
+ * You have specified that you are using a manual GRUB configuration.
+ * You must update it yourself.
+ *
+ EOF
+ exit 0
+fi
+
+mkdir -p /boot/grub
+if [ -e /boot/grub/grub.cfg ]; then
+ cp -p /boot/grub/grub.cfg /boot/grub/grub.cfg.update-grub-old
+fi
+exec grub-mkconfig -o /boot/grub/grub.cfg
diff --git a/user/grub/xfs.patch b/user/grub/xfs.patch
new file mode 100644
index 000000000..922c40923
--- /dev/null
+++ b/user/grub/xfs.patch
@@ -0,0 +1,56 @@
+From 68dd65cfdaad08b1f8ec01b84949b0bf88bc0d8c Mon Sep 17 00:00:00 2001
+From: Jon DeVree <nuxi@vault24.org>
+Date: Sun, 11 Feb 2024 10:34:58 -0500
+Subject: fs/xfs: Handle non-continuous data blocks in directory extents
+
+The directory extent list does not have to be a continuous list of data
+blocks. When GRUB tries to read a non-existant member of the list,
+grub_xfs_read_file() will return a block of zero'ed memory. Checking for
+a zero'ed magic number is sufficient to skip this non-existant data block.
+
+Prior to commit 07318ee7e (fs/xfs: Fix XFS directory extent parsing)
+this was handled as a subtle side effect of reading the (non-existant)
+tail data structure. Since the block was zero'ed the computation of the
+number of directory entries in the block would return 0 as well.
+
+Fixes: 07318ee7e (fs/xfs: Fix XFS directory extent parsing)
+Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2254370
+
+Signed-off-by: Jon DeVree <nuxi@vault24.org>
+Reviewed-By: Vladimir Serbinenko <phcoder@gmail.com>
+Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
+---
+ grub-core/fs/xfs.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+diff --git a/grub-core/fs/xfs.c b/grub-core/fs/xfs.c
+index bc2224dbb..8e02ab4a3 100644
+--- a/grub-core/fs/xfs.c
++++ b/grub-core/fs/xfs.c
+@@ -902,6 +902,7 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir,
+ grub_xfs_first_de(dir->data, dirblock);
+ int entries = -1;
+ char *end = dirblock + dirblk_size;
++ grub_uint32_t magic;
+
+ numread = grub_xfs_read_file (dir, 0, 0,
+ blk << dirblk_log2,
+@@ -912,6 +913,15 @@ grub_xfs_iterate_dir (grub_fshelp_node_t dir,
+ return 0;
+ }
+
++ /*
++ * If this data block isn't actually part of the extent list then
++ * grub_xfs_read_file() returns a block of zeros. So, if the magic
++ * number field is all zeros then this block should be skipped.
++ */
++ magic = *(grub_uint32_t *)(void *) dirblock;
++ if (!magic)
++ continue;
++
+ /*
+ * Leaf and tail information are only in the data block if the number
+ * of extents is 1.
+--
+cgit v1.2.3-70-g09d2
+
diff --git a/user/gsettings-desktop-schemas/APKBUILD b/user/gsettings-desktop-schemas/APKBUILD
index 185d15bdf..db896f6c0 100644
--- a/user/gsettings-desktop-schemas/APKBUILD
+++ b/user/gsettings-desktop-schemas/APKBUILD
@@ -1,45 +1,34 @@
-# Maintainer:
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=gsettings-desktop-schemas
-pkgver=3.32.0
+pkgver=3.38.0
pkgrel=0
pkgdesc="GSettings schemas shared by GNOME desktop components"
url="https://developer.gnome.org/gio/unstable/GSettings.html"
arch="noarch"
-license="LGPL-2.0-or-later"
+license="LGPL-2.0+"
+depends=""
makedepends="glib-dev gobject-introspection-dev intltool meson ninja"
subpackages="$pkgname-dev $pkgname-lang"
source="https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz"
prepare() {
default_prepare
- cd "$builddir"
sed -i -r 's:"(/system):"/org/gnome\1:g' schemas/*.in
+ # Correct pkgconfig install path
+ sed -i "/install_dir/s,datadir,libdir," meson.build
}
build() {
- cd "$builddir"
- mkdir -p build && cd build
- meson -Dprefix=/usr ..
- ninja
+ meson -Dprefix=/usr build
+ ninja -C build
}
check() {
- cd "$builddir"/build
- ninja test
+ ninja -C build test
}
package() {
- cd "$builddir"/build
- DESTDIR="$pkgdir" ninja install
+ DESTDIR="$pkgdir" ninja -C build install
}
-dev() {
- default_dev
- depends="$pkgname"
- cd "$builddir"
- mkdir -p "$subpkgdir"/usr/lib
- mv "$pkgdir"/usr/share/pkgconfig "$subpkgdir"/usr/lib
-}
-
-
-sha512sums="cf1d78a8f9f1697e20c995286b50d556c2ecc83bf4b28be19b3258a724494a2827fb9567cabf29cda1c590488fd2645e905072e08321766c8bdddd22ac3710dc gsettings-desktop-schemas-3.32.0.tar.xz"
+sha512sums="5af7da90b8e7eec1c98e9e44653955f2882961dd9b5e2bf00e4eeb9f4f1149ae5171c600d457c6ab9c7482471c1a0e98f92f645a7ee7298e1b843c608f660756 gsettings-desktop-schemas-3.38.0.tar.xz"
diff --git a/user/gsl/APKBUILD b/user/gsl/APKBUILD
index 4d2a5d929..8c694d429 100644
--- a/user/gsl/APKBUILD
+++ b/user/gsl/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gsl
-pkgver=2.5
-pkgrel=1
+pkgver=2.8
+pkgrel=0
pkgdesc="Modern numerical library for C and C++"
url="https://www.gnu.org/software/gsl/gsl.html"
arch="all"
@@ -11,17 +11,45 @@ depends=""
makedepends=""
subpackages="$pkgname-dev $pkgname-doc"
source="https://ftp.gnu.org/gnu/gsl/gsl-$pkgver.tar.gz
- dont-disable-deprecated.patch
- aarch64-test-failure.patch
gsl-2.4-portable.patch
+ static-inline.patch
"
-# dont-disable-deprecated.patch is workaround for:
-# https://github.com/SciRuby/rb-gsl/issues/40
+prepare() {
+ default_prepare
+
+ case "$CTARGET_ARCH" in
+ pmmx) #763 (applies to this entire block)
+ override="multifit_nlinear multilarge_nlinear specfunc";
+ for k in $override; do
+ sed -i $k/Makefile.in \
+ -e '/^CFLAGS = /s/$/ -O0/g' \
+ ;
+ done
+ skipthis="spmatrix";
+ for k in $skipthis; do
+ sed -i $k/Makefile.in \
+ -e '/^TESTS = /d' \
+ ;
+ done
+ ;;
+ ppc) #764 (applies to this entire block)
+ skipthis="complex";
+ for k in $skipthis; do
+ sed -i $k/Makefile.in \
+ -e '/^TESTS = /d' \
+ ;
+ done
+ ;;
+ esac
+}
build() {
- cd "$builddir"
- [ $CTARGET_ARCH != "ppc" ] || export ac_cv_c_ieee_interface=unknown
+ case "$CTARGET_ARCH" in
+ ppc) export ac_cv_c_ieee_interface=unknown;
+ ;;
+ esac
+
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -30,16 +58,13 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="5b4c5c023f9029ce220f4e09aa4d0234fed94d42ac224d58fda095fe0532d54237a7c33278f8b5d0ba051f6004486edb38d0adb4fcb49337a8c1d8a18cf4a24a gsl-2.5.tar.gz
-88d40e599a9e619d8968f9848a91c54492d99032734371ee23072c8dae9d9920da445c1f8a880baa613479facec4afca3d3dec1070c240e5dfd5a662a41c92e8 dont-disable-deprecated.patch
-68b685270a377341b3c3ce566ae6eff4ebfc27b75a73f3c7915c57446798bdcca7c1d9f0fa4ce8a50118b371bfe3e2947f9bf33590c86e85db8e807b3b0deae6 aarch64-test-failure.patch
-f6a22e82c8f4a1d5ea7b647cbd015cdb9d2e4e9d39728e8f2dba3fdefac64d3f7c8fbc5ec597e6ab315ec1bd49e0e3af4aba091b358a68d9d789884331f4be24 gsl-2.4-portable.patch"
+sha512sums="4427f6ce59dc14eabd6d31ef1fcac1849b4d7357faf48873aef642464ddf21cc9b500d516f08b410f02a2daa9a6ff30220f3995584b0a6ae2f73c522d1abb66b gsl-2.8.tar.gz
+f6a22e82c8f4a1d5ea7b647cbd015cdb9d2e4e9d39728e8f2dba3fdefac64d3f7c8fbc5ec597e6ab315ec1bd49e0e3af4aba091b358a68d9d789884331f4be24 gsl-2.4-portable.patch
+7aa882af7136b6948124885eec6b9bdb2703f581d1656488a6aab8c48f601690fa87f2d6d2566c3a8fa200a5c09310ee076aec847779490ff02e03a5bcd0a2a0 static-inline.patch"
diff --git a/user/gsl/aarch64-test-failure.patch b/user/gsl/aarch64-test-failure.patch
deleted file mode 100644
index 0b6e80380..000000000
--- a/user/gsl/aarch64-test-failure.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-https://lists.gnu.org/archive/html/help-gsl/2017-02/msg00002.html
-
---- gsl-2.4/linalg/test_cholesky.c.old 2017-06-19 10:00:43.000000000 +0000
-+++ gsl-2.4/linalg/test_cholesky.c 2018-05-30 07:37:04.835628069 +0000
-@@ -551,7 +551,7 @@
- if (N <= 4)
- {
- create_hilbert_matrix2(m);
-- test_mcholesky_invert_eps(m, 256.0 * N * GSL_DBL_EPSILON, "mcholesky_invert unscaled hilbert");
-+ test_mcholesky_invert_eps(m, 512.0 * N * GSL_DBL_EPSILON, "mcholesky_invert unscaled hilbert");
- }
-
- gsl_matrix_free(m);
diff --git a/user/gsl/dont-disable-deprecated.patch b/user/gsl/dont-disable-deprecated.patch
deleted file mode 100644
index 40a7c3bce..000000000
--- a/user/gsl/dont-disable-deprecated.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-diff -urp gsl-2.2.1/configure.ac patched/configure.ac
---- gsl-2.2.1/configure.ac 2016-08-31 15:54:07.000000000 +0100
-+++ patched/configure.ac 2017-01-31 14:52:10.000000000 +0000
-@@ -575,10 +575,6 @@ AH_BOTTOM([#if defined(GSL_RANGE_CHECK_O
- AH_BOTTOM([#define RETURN_IF_NULL(x) if (!x) { return ; }
- ])
-
--AH_VERBATIM([GSL_DISABLE_DEPRECATED],
--[/* Disable deprecated functions and enums while building */
--#define GSL_DISABLE_DEPRECATED 1])
--
- dnl
- AC_CONFIG_FILES([ \
- Makefile \
---- gsl-2.2.1/config.h.in 2016-08-31 15:54:51.000000000 +0100
-+++ patched/config.h.in 2017-01-31 16:01:17.000000000 +0000
-@@ -1,8 +1,5 @@
- /* config.h.in. Generated from configure.ac by autoheader. */
-
--/* Disable deprecated functions and enums while building */
--#define GSL_DISABLE_DEPRECATED 1
--
- /* Define if you have inline with C99 behavior */
- #undef HAVE_C99_INLINE
diff --git a/user/gsl/static-inline.patch b/user/gsl/static-inline.patch
new file mode 100644
index 000000000..4f89f30da
--- /dev/null
+++ b/user/gsl/static-inline.patch
@@ -0,0 +1,12 @@
+diff -ur a/gsl_inline.h b/gsl_inline.h
+--- a/gsl_inline.h 2024-06-05 08:59:43.655369544 -0500
++++ b/gsl_inline.h 2024-06-05 09:00:02.707862690 -0500
+@@ -49,7 +49,7 @@
+ #ifdef HAVE_INLINE
+ # if defined(__GNUC_STDC_INLINE__) || defined(GSL_C99_INLINE) || defined(HAVE_C99_INLINE)
+ # define INLINE_DECL inline /* use C99 inline */
+-# define INLINE_FUN inline
++# define INLINE_FUN static inline
+ # else
+ # define INLINE_DECL /* use GNU extern inline */
+ # define INLINE_FUN extern inline
diff --git a/user/gsm/APKBUILD b/user/gsm/APKBUILD
index 17ff21e6f..a11efa124 100644
--- a/user/gsm/APKBUILD
+++ b/user/gsm/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer:
pkgname=gsm
-pkgver=1.0.18
+pkgver=1.0.19
pkgrel=0
_soname=1.0.12
pkgdesc="Shared libraries for GSM speech compressor"
@@ -19,13 +19,11 @@ source="http://www.quut.com/gsm/gsm-$pkgver.tar.gz
builddir="$srcdir"/gsm-${pkgver%.*}-pl${pkgver##*.}
build() {
- cd "$builddir"
export RPM_OPT_FLAGS="$CFLAGS -fPIC"
make all
}
package() {
- cd "$builddir"
mkdir -p "$pkgdir"/usr/bin \
"$pkgdir"/usr/include/gsm \
"$pkgdir"/usr/lib \
@@ -50,6 +48,6 @@ tools() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="c5b597f68d4a270e1d588f480dcde66fda8302564c687d753f2bd4fc41d246109243e567568da61eddce170f5232d869984743ddf1eea7696d673014a1a453b7 gsm-1.0.18.tar.gz
+sha512sums="f69b4bf2d918b118b5de90b8ab88fd026008ac7432f07b872b81fe52cdc781f605dca8eedcdaebc8beb974cef388496c618f92a41961c62057009964159f8392 gsm-1.0.19.tar.gz
5b01f6d2fd3ee7cd859da70870463e2ccc6614c5fb1bd5efc88a223a0c5477271221557fef13ba46697e70cc5820c13efff738413f8990d5884b95cc89c30152 gsm-64bit.patch
1d92b7eacf52e5281c9f1a0f08313d10f15c35d22fb2292e5a885ceb3cb766557a5e3a08954db75fb13db59345ef9f6b08939881ba38c9d384e09a1c96b47bc5 gsm-makefile.patch"
diff --git a/user/gspell/APKBUILD b/user/gspell/APKBUILD
new file mode 100644
index 000000000..69599a5c1
--- /dev/null
+++ b/user/gspell/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=gspell
+pkgver=1.14.0
+pkgrel=0
+pkgdesc="Spelling checker library for GTK programs"
+url="https://gnome.org"
+arch="all"
+options="!check" # does not support enchant aspell backend; see
+ # https://bugzilla.gnome.org/show_bug.cgi?id=772406
+license="LGPL-2.1+"
+depends=""
+checkdepends="aspell aspell-dict-en"
+makedepends="enchant-dev glib-dev gobject-introspection-dev gtk-doc gtk+3.0-dev meson vala-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://download.gnome.org/sources/gspell/${pkgver%.*}/gspell-$pkgver.tar.xz"
+
+build() {
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ . output
+ meson compile -C output
+}
+
+check() {
+ LANG="en_US.UTF-8" meson test -C output
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C output
+}
+
+sha512sums="d2e9931f4c37170b483ece9ee50b0af8aa281cf1bde5ac009d2a0c7dd2dbfc90e591df13dd555465c04cccdc2864b788d372625be9f71d6541e6e6b0fd3c4370 gspell-1.14.0.tar.xz"
diff --git a/user/gst-plugins-bad/APKBUILD b/user/gst-plugins-bad/APKBUILD
new file mode 100644
index 000000000..4a6cef267
--- /dev/null
+++ b/user/gst-plugins-bad/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=gst-plugins-bad
+pkgver=1.26.1
+pkgrel=0
+pkgdesc="GStreamer multimedia framework - Lower-quality plugins"
+url="https://gstreamer.freedesktop.org/modules/gst-plugins-good.html"
+arch="all"
+options="!check" # nvidious
+license="LGPL-2.1+"
+# rtpmanagerbad depends on rtpmanager
+# symptom: tests 'rtpsrc' and 'rtpsink' will fail
+depends="gst-plugins-good"
+makedepends="gst-plugins-base-dev gstreamer-dev gobject-introspection-dev meson
+ libva-dev libxkbcommon-dev orc-compiler orc-dev bluez-dev cairo-dev
+ curl-dev fluidsynth-dev gtk+3.0-dev ladspa-dev libdrm-dev libgudev-dev
+ libsndfile-dev libqrencode-dev librsvg-dev libsoup-dev libusb-dev
+ mesa-dev neon-dev nettle-dev openal-soft-dev opus-dev pango-dev sbc-dev
+ wayland-dev wayland-protocols gsm-dev vulkan-loader-dev libglvnd-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+ldpath="/usr/lib/gstreamer-1.0"
+source="https://gstreamer.freedesktop.org/src/$pkgname/$pkgname-$pkgver.tar.xz
+ curlhttpsrc.patch
+ "
+
+build() {
+ meson \
+ -Dprefix=/usr \
+ -Dnls=enabled \
+ -Dpackage-name="GStreamer Bad Plugins (${DISTRO_NAME:-Adélie Linux})" \
+ -Dpackage-origin="${DISTRO_URL:-https://www.adelielinux.org/}" \
+ build
+ ninja -C build
+}
+
+check() {
+ ninja -C build test
+}
+
+package() {
+ DESTDIR="$pkgdir" ninja -C build install
+}
+
+sha512sums="69c78970f0396c08fbddbd44e080142688fcd1ecdc0fa88709b934f6c546754904338469ceecd0f16c6a6b8585bf5faec3230426272b7eb2b63a21b9034d94db gst-plugins-bad-1.26.1.tar.xz
+d4bf36560db0e6391cfca84f928d7147bb6b170431c521e78253b29f6bccf122309e1f92e241808855dfa112b9a06e17c1b6ed4363e011a0693f82e1bfe7ea3e curlhttpsrc.patch"
diff --git a/user/gst-plugins-bad/camerabin.patch b/user/gst-plugins-bad/camerabin.patch
new file mode 100644
index 000000000..cb3904296
--- /dev/null
+++ b/user/gst-plugins-bad/camerabin.patch
@@ -0,0 +1,13 @@
+Skip this test for now. It fails on Debian as well.
+
+--- gst-plugins-bad-1.20.2/tests/check/meson.build.old 2022-05-02 17:29:29.000000000 -0500
++++ gst-plugins-bad-1.20.2/tests/check/meson.build 2022-07-03 01:52:55.957461654 -0500
+@@ -28,7 +28,7 @@
+ [['elements/autoconvert.c']],
+ [['elements/autovideoconvert.c']],
+ [['elements/avwait.c']],
+- [['elements/camerabin.c']],
++ [['elements/camerabin.c'], true],
+ [['elements/ccconverter.c'], not closedcaption_dep.found(), [gstvideo_dep]],
+ [['elements/cccombiner.c'], not closedcaption_dep.found(), ],
+ [['elements/ccextractor.c'], not closedcaption_dep.found(), ],
diff --git a/user/gst-plugins-bad/curlhttpsrc.patch b/user/gst-plugins-bad/curlhttpsrc.patch
new file mode 100644
index 000000000..b0241735c
--- /dev/null
+++ b/user/gst-plugins-bad/curlhttpsrc.patch
@@ -0,0 +1,11 @@
+--- a/tests/check/meson.build
++++ b/tests/check/meson.build
+@@ -111,7 +111,7 @@
+ [['elements/avtpsrc.c'], not avtp_dep.found(), [avtp_dep]],
+ [['elements/clockselect.c']],
+ [['elements/curlhttpsink.c'], not curl_dep.found(), [curl_dep]],
+- [['elements/curlhttpsrc.c'], not curl_dep.found(), [curl_dep, gio_dep]],
++ [['elements/curlhttpsrc.c'], true],
+ [['elements/curlfilesink.c'],
+ not curl_dep.found() or not cdata.has('HAVE_UNISTD_H'), [curl_dep]],
+ [['elements/curlftpsink.c'], not curl_dep.found(), [curl_dep]],
diff --git a/user/gst-plugins-base/APKBUILD b/user/gst-plugins-base/APKBUILD
index 555fec878..9aa2afd80 100644
--- a/user/gst-plugins-base/APKBUILD
+++ b/user/gst-plugins-base/APKBUILD
@@ -1,53 +1,43 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gst-plugins-base
-pkgver=1.14.4
-pkgrel=1
+pkgver=1.26.1
+pkgrel=0
pkgdesc="GStreamer multimedia framework - Base plugins"
url="https://gstreamer.freedesktop.org/"
arch="all"
license="GPL LGPL"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
depends=""
-replaces="gst-plugins-base1"
-makedepends="alsa-lib-dev cdparanoia-dev expat-dev glib-dev
- gobject-introspection-dev gstreamer-dev libice-dev libogg-dev libsm-dev
- libtheora-dev libvorbis-dev libx11-dev libxt-dev libxv-dev mesa-dev
- opus-dev orc-dev pango-dev perl"
-checkdepends="orc-compiler"
-source="https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-$pkgver.tar.xz"
+makedepends="alsa-lib-dev cdparanoia-dev expat-dev glib-dev iso-codes-dev
+ gobject-introspection-dev graphene-dev gstreamer-dev libdrm-dev
+ libglvnd-dev libjpeg-turbo-dev libogg-dev libpng-dev libtheora-dev
+ libvorbis-dev libx11-dev libxt-dev libxv-dev mesa-dev meson opus-dev
+ orc-compiler orc-dev pango-dev wayland-dev wayland-protocols
+ !gst-plugins-base"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://gstreamer.freedesktop.org/src/gst-plugins-base/gst-plugins-base-$pkgver.tar.xz
+ endian.patch
+ "
ldpath="/usr/lib/gstreamer-1.0"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --disable-static \
- --disable-experimental \
- --disable-fatal-warnings \
- --with-default-audiosink=alsasink \
- --enable-introspection \
- --with-package-name="GStreamer Base Plugins (${DISTRO_NAME:-Adélie Linux})" \
- --with-package-origin="${DISTRO_URL:-https://www.adelielinux.org/}"
- make
+ meson setup \
+ --wrap-mode=nofallback \
+ -Dprefix=/usr \
+ -Dintrospection=enabled \
+ -Dnls=enabled \
+ -Dpackage-name="GStreamer Base Plugins (${DISTRO_NAME:-Adélie Linux})" \
+ -Dpackage-origin="${DISTRO_URL:-https://www.adelielinux.org/}" \
+ build
+ meson compile -C build
}
check() {
- cd "$builddir"
- make check
+ meson test -C build
}
package() {
- cd "$builddir"
- make -j1 DESTDIR="$pkgdir" install
-}
-
-doc() {
- default_doc
- replaces="${pkgname}1-doc"
+ DESTDIR="$pkgdir" meson install -C build
}
-sha512sums="42c59df9f2d848108f12afa0466acbcfa5ccda64e4d0d44608d4268abed20f2e036713de04e7d71feaed1868ad742c5bcb55ae0eef5dec8e19e053dc8541b8af gst-plugins-base-1.14.4.tar.xz"
+sha512sums="b0c491755856af37fd8416af57b782ba04cfdf4298947a521ece90b4723fcf331199f428c74fafb37b3094a8172a0d409d20079544f7424fd6c089574313e296 gst-plugins-base-1.26.1.tar.xz
+b44763d6b380bb51d246b64019078ee621a2d64a00f29f12039fd52aafd1c24e204350ea5c967c2fecb298075f6e45f62d16c3116d20aca8da557ace84ba0744 endian.patch"
diff --git a/user/gst-plugins-base/endian.patch b/user/gst-plugins-base/endian.patch
new file mode 100644
index 000000000..ed06e7c7f
--- /dev/null
+++ b/user/gst-plugins-base/endian.patch
@@ -0,0 +1,40 @@
+--- gst-plugins-base-1.26.1/gst/videoconvertscale/gstvideoconvertscale.c.old 2025-04-24 14:20:14.000000000 -0500
++++ gst-plugins-base-1.26.1/gst/videoconvertscale/gstvideoconvertscale.c 2025-05-11 14:05:05.042191384 -0500
+@@ -1407,8 +1407,13 @@
+ g_return_val_if_fail (gst_value_is_fixed (from_par), othercaps);
+
+ gst_video_convert_scale_get_fraction (from_par, &from_par_n, &from_par_d);
+- gst_structure_get (ins,
+- "width", G_TYPE_INT, &from_w, "height", G_TYPE_INT, &from_h, NULL);
++ {
++ gint wi = 0, hi = 0;
++ gst_structure_get (ins,
++ "width", G_TYPE_INT, &wi, "height", G_TYPE_INT, &hi, NULL);
++ from_w = wi;
++ from_h = hi;
++ }
+
+ {
+ gint wi = 0, hi = 0;
+--- gst-plugins-base-1.26.1/tests/check/elements/audiomixer.c.old 2025-04-24 14:20:14.000000000 -0500
++++ gst-plugins-base-1.26.1/tests/check/elements/audiomixer.c 2025-05-11 14:06:12.944933423 -0500
+@@ -2125,12 +2125,18 @@
+ gst_message_unref (msg);
+ }
+
++#if G_BYTE_ORDER == G_LITTLE_ENDIAN
++#define AUDIO_FMT "S16LE"
++#else
++#define AUDIO_FMT "S16BE"
++#endif
++
+ GST_START_TEST (test_qos_message_live)
+ {
+ GstBus *bus = gst_bus_new ();
+ GstHarness *h, *h2;
+ GstBuffer *b;
+- static const char *caps_str = "audio/x-raw, format=(string)S16LE, "
++ static const char *caps_str = "audio/x-raw, format=(string)" AUDIO_FMT ", "
+ "rate=(int)1000, channels=(int)1, layout=(string)interleaved";
+ GstMessage *msg;
+ GstPad *pad;
diff --git a/user/gst-plugins-good/APKBUILD b/user/gst-plugins-good/APKBUILD
index fb4d05277..2570bf9df 100644
--- a/user/gst-plugins-good/APKBUILD
+++ b/user/gst-plugins-good/APKBUILD
@@ -1,48 +1,43 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gst-plugins-good
-pkgver=1.14.4
+pkgver=1.26.1
pkgrel=0
pkgdesc="GStreamer multimedia framework - Free, well-written plugins"
url="https://gstreamer.freedesktop.org/modules/gst-plugins-good.html"
arch="all"
license="LGPL-2.1+"
depends=""
-checkdepends="orc-compiler cmd:which"
makedepends="gst-plugins-base-dev gstreamer-dev gobject-introspection-dev
orc-dev libgudev-dev v4l-utils-dev libx11-dev cairo-dev flac-dev
gdk-pixbuf-dev gtk+3.0-dev libjpeg-turbo-dev lame-dev libdv-dev
libpng-dev mpg123-dev pulseaudio-dev libraw1394-dev libiec61883-dev
libavc1394-dev libsoup-dev speex-dev taglib-dev wavpack-dev zlib-dev
- bzip2-dev"
-subpackages="$pkgname-doc $pkgname-gtk $pkgname-lang"
+ bzip2-dev libxdamage-dev libxext-dev libxfixes-dev meson orc-compiler
+ wayland-protocols"
+subpackages="$pkgname-gtk $pkgname-lang"
ldpath="/usr/lib/gstreamer-1.0"
source="https://gstreamer.freedesktop.org/src/gst-plugins-good/gst-plugins-good-$pkgver.tar.xz
- endian-test.patch
+ flvmux-disable-flaky-test.patch
"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var \
- --enable-introspection \
- --with-package-origin="${DISTRO_NAME:-Adélie Linux} (${DISTRO_URL:-https://www.adelielinux.org/})"
- make
+ meson setup \
+ -Dprefix=/usr \
+ -Dnls=enabled \
+ -Dorc=disabled \
+ -Dpackage-name="GStreamer Good Plugins (${DISTRO_NAME:-Adélie Linux})" \
+ -Dpackage-origin="${DISTRO_URL:-https://www.adelielinux.org/}" \
+ build
+ meson compile -C build
}
check() {
- cd "$builddir"
- make check
+ meson test -C build
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" meson install -C build
}
gtk() {
@@ -55,5 +50,5 @@ gtk() {
"$subpkgdir"/usr/lib/gstreamer-1.0/
}
-sha512sums="30aeb3bb74571287cad1598973da38e7a43a0128d35480ded6d280c1373dc4ecd4ea76caaa04a71cdfba2e1850aee5f1b72d96be86ae92d66633e7d32081c504 gst-plugins-good-1.14.4.tar.xz
-1cecf260cfeb19675a819f9858426aaed3b9627ed90b8facb6cb12dfc0b265232639b1888d7cc03edb87025e3eddab6e3606f16b5f7ca261a6b1c39b0dbdc6f7 endian-test.patch"
+sha512sums="ce096c912e6dfdec5c6e815b712e949296a18ea358cdb124997f256b1fbf8a68db9fc75c4e05a69a2cecd20de1a6bdb3fcfe4422f6d81b6f887ee484b5d1a556 gst-plugins-good-1.26.1.tar.xz
+d31d0f70703efb13fbe919f008e1029a08649d3220f5689c7aa105cbbfe3c8cda4a2ae0b01bad32cb295ea202a965cb719776bd86f463a7b78d5b091b00e0348 flvmux-disable-flaky-test.patch"
diff --git a/user/gst-plugins-good/endian-test.patch b/user/gst-plugins-good/endian-test.patch
deleted file mode 100644
index 52065bf34..000000000
--- a/user/gst-plugins-good/endian-test.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- gst-plugins-good-1.14.4/tests/check/elements/alpha.c.old 2018-03-23 20:44:48.000000000 +0000
-+++ gst-plugins-good-1.14.4/tests/check/elements/alpha.c 2019-01-10 15:47:17.410000000 +0000
-@@ -99,9 +99,17 @@
- int i;
-
- if (color == FILL_GREEN)
-+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
-+ rgba_col = 0x00ff00ff;
-+#else
- rgba_col = 0xff00ff00; /* GREEN */
-+#endif
- else
-+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
-+ rgba_col = 0x0000ffff;
-+#else
- rgba_col = 0xffff0000; /* BLUE */
-+#endif
-
- for (i = 0; i < HEIGHT * WIDTH; i++)
- rgba32[i] = rgba_col;
diff --git a/user/gst-plugins-good/flvmux-disable-flaky-test.patch b/user/gst-plugins-good/flvmux-disable-flaky-test.patch
new file mode 100644
index 000000000..ef2d3feb3
--- /dev/null
+++ b/user/gst-plugins-good/flvmux-disable-flaky-test.patch
@@ -0,0 +1,15 @@
+This test is known flaky and causes a timeout every time on ppc64.
+
+Upstream-URL: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2803
+
+--- gst-plugins-good-1.26.1/tests/check/elements/flvmux.c.old 2025-04-24 14:20:14.000000000 -0500
++++ gst-plugins-good-1.26.1/tests/check/elements/flvmux.c 2025-05-17 17:53:27.568081593 -0500
+@@ -1162,7 +1162,7 @@
+
+ tcase_add_test (tc_chain, test_speex_streamable);
+ tcase_add_test (tc_chain, test_increasing_timestamp_when_pts_none);
+- tcase_add_test (tc_chain, test_video_caps_late);
++ //tcase_add_test (tc_chain, test_video_caps_late);
+ tcase_add_test (tc_chain, test_audio_caps_change_streamable);
+ tcase_add_test (tc_chain, test_video_caps_change_streamable);
+ tcase_add_test (tc_chain, test_audio_caps_change_streamable_single);
diff --git a/user/gstreamer/APKBUILD b/user/gstreamer/APKBUILD
index a5adebbf5..7ee893c50 100644
--- a/user/gstreamer/APKBUILD
+++ b/user/gstreamer/APKBUILD
@@ -1,50 +1,54 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gstreamer
-pkgver=1.14.4
+pkgver=1.26.1
pkgrel=0
pkgdesc="GStreamer multimedia framework"
url="https://gstreamer.freedesktop.org/"
arch="all"
-options="!check"
license="LGPL-2.0+"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-tools $pkgname-lang"
-replaces="gstreamer1"
+depends=""
depends_dev="libxml2-dev"
-makedepends="$depends_dev bison flex gobject-introspection-dev glib-dev"
-source="https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-$pkgver.tar.xz
- "
+makedepends="$depends_dev bison flex gobject-introspection-dev glib-dev
+ meson"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-tools $pkgname-lang"
+source="https://gstreamer.freedesktop.org/src/gstreamer/gstreamer-$pkgver.tar.xz"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --localstatedir=/var \
- --enable-introspection \
- --with-package-name="GStreamer (${DISTRO_NAME:-Adélie Linux})" \
- --with-package-origin="${DISTRO_URL:-https://www.adelielinux.org/}" \
- --disable-fatal-warnings \
- --with-ptp-helper-permissions=none
- make
+ meson setup \
+ -Dprefix=/usr \
+ -Dintrospection=enabled \
+ -Dpackage-name="GStreamer (${DISTRO_NAME:-Adélie Linux})" \
+ -Dpackage-origin="${DISTRO_URL:-https://www.adelielinux.org/}" \
+ -Dglib-asserts=disabled \
+ -Dnls=enabled \
+ -Dptp-helper-permissions=none \
+ build
+ meson compile -C build
+}
+
+check() {
+ meson test -C build
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" meson install -C build
+}
+
+dev() {
+ default_dev
+ mkdir -p "$subpkgdir"/usr/share/gstreamer-1.0
+ mv "$pkgdir"/usr/share/gdb "$subpkgdir"/usr/share/
+ mv "$pkgdir"/usr/share/gstreamer-1.0/gdb \
+ "$subpkgdir"/usr/share/gstreamer-1.0/
}
tools() {
pkgdesc="Tools and files for GStreamer streaming media framework"
# gst-feedback needs this
- depends="pkgconfig"
- mkdir -p "$subpkgdir"/usr/
+ depends="cmd:pkg-config"
+ mkdir -p "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
+ mv "$pkgdir"/usr/lib/libgstcheck-1.0.so.* "$subpkgdir"/usr/lib/
}
-doc() {
- default_doc
- replaces="${pkgname}1-doc"
-}
-sha512sums="7ece9f01d40df7c8358482eac94536c5e15261e9568962008e2029e1ee1b3ebb220d2e4802ed1c81c40d897576fafe52234065e273724bfb4df3a3ddf2711abe gstreamer-1.14.4.tar.xz"
+sha512sums="7a5da377fbfb25cacc2d9613a57210c00ca70ee00f3ef4d108a3c98bd6a2cb703b773ca6fd6d9ac7b59b60d0bf0573cff69bdea18e07159ac56ee992613d0a78 gstreamer-1.26.1.tar.xz"
diff --git a/user/gtest/APKBUILD b/user/gtest/APKBUILD
index 14d16d8c9..7efd54f75 100644
--- a/user/gtest/APKBUILD
+++ b/user/gtest/APKBUILD
@@ -1,7 +1,7 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=gtest
-pkgver=1.8.1
-pkgrel=0
+pkgver=1.10.0
+pkgrel=1
pkgdesc="C++ testing framework based on xUnit (like JUnit)"
url="https://github.com/google/googletest"
arch="all"
@@ -15,7 +15,6 @@ source="https://github.com/google/googletest/archive/release-$pkgver.tar.gz"
builddir="$srcdir"/googletest-release-${pkgver}
build() {
- cd "$builddir"
rm -rf build
mkdir build
cd build
@@ -26,21 +25,22 @@ build() {
}
package() {
- cd "$builddir"
- for dir in usr/lib usr/include/gtest/internal/custom usr/share/licenses/gtest\
- usr/src/gtest/cmake usr/src/gtest/src; do
- install -d -m 0755 "$pkgdir"/"$dir"
- done
- install -m 0644 build/googlemock/gtest/libgtest*.so "$pkgdir"/usr/lib
+ for k in mock test; do
+ for dir in usr/lib usr/include/g${k}/internal/custom usr/share/licenses/g${k}\
+ usr/src/g${k}/cmake usr/src/g${k}/src; do
+ install -d -m 0755 "$pkgdir"/"$dir"
+ done
+ install -m 0644 build/lib/libg${k}*.so "$pkgdir"/usr/lib
- install -m 0644 googletest/include/gtest/*.h "$pkgdir"/usr/include/gtest
- install -m 0644 googletest/include/gtest/internal/*.h \
- "$pkgdir"/usr/include/gtest/internal/
- install -m 0644 googletest/include/gtest/internal/custom/*.h \
- "$pkgdir"/usr/include/gtest/internal/custom/
- install -m 0644 googletest/LICENSE "$pkgdir"/usr/share/licenses/$pkgname/
- install -m 0644 googletest/CMakeLists.txt "$pkgdir"/usr/src/gtest/
- install -m 0644 googletest/cmake/* "$pkgdir"/usr/src/gtest/cmake/
+ install -m 0644 google${k}/include/g${k}/*.h "$pkgdir"/usr/include/g${k}
+ install -m 0644 google${k}/include/g${k}/internal/*.h \
+ "$pkgdir"/usr/include/g${k}/internal/
+ install -m 0644 google${k}/include/g${k}/internal/custom/*.h \
+ "$pkgdir"/usr/include/g${k}/internal/custom/
+ install -m 0644 google${k}/LICENSE "$pkgdir"/usr/share/licenses/g${k}/
+ install -m 0644 google${k}/CMakeLists.txt "$pkgdir"/usr/src/g${k}/
+ install -m 0644 google${k}/cmake/* "$pkgdir"/usr/src/g${k}/cmake/
+ done
}
-sha512sums="e6283c667558e1fd6e49fa96e52af0e415a3c8037afe1d28b7ff1ec4c2ef8f49beb70a9327b7fc77eb4052a58c4ccad8b5260ec90e4bceeac7a46ff59c4369d7 release-1.8.1.tar.gz"
+sha512sums="bd52abe938c3722adc2347afad52ea3a17ecc76730d8d16b065e165bc7477d762bce0997a427131866a89f1001e3f3315198204ffa5d643a9355f1f4d0d7b1a9 release-1.10.0.tar.gz"
diff --git a/user/gtk+/APKBUILD b/user/gtk+/APKBUILD
deleted file mode 100644
index 157afe4e7..000000000
--- a/user/gtk+/APKBUILD
+++ /dev/null
@@ -1,23 +0,0 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
-# Maintainer:
-pkgname=gtk+
-pkgver=2.24.32
-pkgrel=0
-pkgdesc="Metapackage for GTK+ runtime and development"
-url="https://www.gtk.org/"
-arch="all"
-license="LGPL-2.0+"
-options="!check !dbg"
-depends="gtk+2.0>=$pkgver"
-makedepends="$depends_dev"
-subpackages="$pkgname-dev"
-
-dev() {
- depends="gtk+2.0-dev"
- mkdir -p "$subpkgdir"
-}
-
-package() {
- mkdir -p "$pkgdir"
-}
-
diff --git a/user/gtk+2.0/APKBUILD b/user/gtk+2.0/APKBUILD
index 962b80c4e..9fee775c2 100644
--- a/user/gtk+2.0/APKBUILD
+++ b/user/gtk+2.0/APKBUILD
@@ -1,58 +1,32 @@
-# Maintainer:
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gtk+2.0
pkgver=2.24.32
-pkgrel=1
-subpkg=gtk-update-icon-cache
+pkgrel=2
pkgdesc="The GTK+ Toolkit (v2)"
url="https://www.gtk.org/"
arch="all"
options="!check" # Requires xvfb, resulting in eventual circular dependency
license="LGPL-2.0+"
depends="shared-mime-info gtk-update-icon-cache"
-
-replaces="gtk+"
-replaces_dev="gtk+-dev"
-replaces_doc="gtk+-doc"
-
depends_dev="libxdamage-dev"
# we add hicolor-icon-theme because the subpackage gtk-update-icon-cache
# needs it. We need to force hicolor-icon-cache to be built before gtk+.2.0
-makedepends="
- autoconf automake libtool
- $depends_dev
- atk-dev
- cairo-dev
- cups-dev
- expat-dev
- gdk-pixbuf-dev
- glib-dev
- gnutls-dev
- gobject-introspection-dev
- gtk-doc
- hicolor-icon-theme
- libice-dev
- libx11-dev
- libxcomposite-dev
- libxcursor-dev
- libxext-dev
- libxfixes-dev
- libxrandr-dev
- libxi-dev
- pango-dev
- zlib-dev"
+makedepends="autoconf automake libtool $depends_dev
+ atk-dev cairo-dev cups-dev expat-dev gdk-pixbuf-dev glib-dev gnutls-dev
+ gobject-introspection-dev gtk-doc hicolor-icon-theme libice-dev
+ libx11-dev libxcomposite-dev libxcursor-dev libxext-dev libxfixes-dev
+ libxrandr-dev libxi-dev pango-dev zlib-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang
+ gtk-update-icon-cache:icon_cache"
+install="$pkgname.post-install $pkgname.post-upgrade $pkgname.post-deinstall"
+triggers="gtk-update-icon-cache.trigger=/usr/share/icons/*"
source="https://download.gnome.org/sources/gtk+/${pkgver%.*}/gtk+-$pkgver.tar.xz
xid-collision-debug.patch
gtk2-fixdso.patch
"
-
-install="$pkgname.post-install $pkgname.post-upgrade $pkgname.post-deinstall"
-triggers="$subpkg.trigger=/usr/share/icons/*"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $subpkg:icon_cache"
-langdir="/usr/lib/locale"
builddir="$srcdir"/gtk+-$pkgver
prepare() {
- cd "$builddir"
default_prepare
libtoolize --force \
&& aclocal -I m4 \
@@ -61,8 +35,7 @@ prepare() {
}
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -80,7 +53,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -98,7 +70,7 @@ icon_cache() {
depends="hicolor-icon-theme"
mkdir -p "$subpkgdir"/usr/bin
- mv "$pkgdir"/usr/bin/"$subpkg" "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/gtk-update-icon-cache "$subpkgdir"/usr/bin
}
sha512sums="8e8fd9ae32f1d6fb544da260f00599f0f05090d910d767b06ef086ab4f1f8373a29bb0da9767761c9b5f4cfd51b5c45d0fa5d39b0428c839ddf0a579df806696 gtk+-2.24.32.tar.xz
diff --git a/user/gtk+2.0/automake.patch b/user/gtk+2.0/automake.patch
deleted file mode 100644
index 106597974..000000000
--- a/user/gtk+2.0/automake.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- ./configure.in.orig 2012-12-31 14:40:30.297439517 +0000
-+++ ./configure.in 2012-12-31 14:40:51.587629835 +0000
-@@ -51,7 +51,7 @@
- cflags_set=${CFLAGS+set}
-
- AM_INIT_AUTOMAKE([no-define -Wno-portability dist-bzip2])
--AM_CONFIG_HEADER(config.h)
-+AC_CONFIG_HEADER(config.h)
-
- # Support silent build rules, requires at least automake-1.11. Enable
- # by either passing --enable-silent-rules to configure or passing V=0
-@@ -300,7 +300,6 @@
-
- # Checks for programs.
- AC_ISC_POSIX
--AM_PROG_CC_STDC
- AM_PROG_CC_C_O
- AC_PROG_INSTALL
- AC_PROG_MAKE_SET
diff --git a/user/gtk+3.0/APKBUILD b/user/gtk+3.0/APKBUILD
index 57cbe384b..e7b4686e7 100644
--- a/user/gtk+3.0/APKBUILD
+++ b/user/gtk+3.0/APKBUILD
@@ -1,35 +1,33 @@
# Maintainer:
pkgname=gtk+3.0
-pkgver=3.24.8
+pkgver=3.24.30
pkgrel=0
pkgdesc="The GTK+ Toolkit (v3)"
url="https://www.gtk.org/"
-install="$pkgname.post-install $pkgname.post-upgrade $pkgname.post-deinstall"
arch="all"
options="!check" # Test suite is known to fail upstream
license="LGPL-2.1+"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
depends="adwaita-icon-theme shared-mime-info gtk-update-icon-cache"
+depends_dev="wayland-protocols"
makedepends="at-spi2-atk-dev atk-dev cairo-dev cups-dev expat-dev
fontconfig-dev gdk-pixbuf-dev glib-dev gnutls-dev
gobject-introspection-dev libepoxy-dev libice-dev libx11-dev
libxcomposite-dev libxcursor-dev libxdamage-dev libxext-dev
libxfixes-dev libxi-dev libxinerama-dev libxrandr-dev pango-dev
- tiff-dev zlib-dev"
-replaces="gtk+"
-replaces_dev="gtk+-dev"
-replaces_doc="gtk+-doc"
+ tiff-dev wayland-dev libxkbcommon-dev zlib-dev $depends_dev"
+install="$pkgname.post-install $pkgname.post-upgrade $pkgname.post-deinstall"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.gnome.org/sources/gtk+/${pkgver%.*}/gtk+-$pkgver.tar.xz"
builddir="$srcdir"/gtk+-$pkgver
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
+ --enable-wayland-backend \
--enable-xkb \
--enable-xinerama \
--enable-xrandr \
@@ -45,7 +43,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
# use gtk-update-icon-cache from gtk+2.0 for now
@@ -53,4 +50,4 @@ package() {
rm -f "$pkgdir"/usr/share/man/man1/gtk-update-icon-cache.1
}
-sha512sums="a988ca2e25f0f32e55b2931f16c72f9649ed98405579d217e8a5e7f0ac10bcd1969090c622c5d9eb7d75235813ff7ccb90e30e252afd71ba283c6172ee459fe5 gtk+-3.24.8.tar.xz"
+sha512sums="4164559f3e14501b9f9330a76535ebf5e26961d436f65e65ea609998cb120fcbcc5d9591453a64e1d414248499857288e5758274d03a7f75e9ae76cbf8c68ff9 gtk+-3.24.30.tar.xz"
diff --git a/user/gtk+3.0/releng-what-releng.patch b/user/gtk+3.0/releng-what-releng.patch
deleted file mode 100644
index 5a1091de3..000000000
--- a/user/gtk+3.0/releng-what-releng.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nurd gtk+-3.24.2/docs/tools/shooter.c gtk+-3.24.2.new/docs/tools/shooter.c
---- gtk+-3.24.2/docs/tools/shooter.c 2018-12-12 11:46:09.000000000 -0600
-+++ gtk+-3.24.2.new/docs/tools/shooter.c 2019-01-10 20:55:41.402365069 -0600
-@@ -170,7 +170,7 @@
- y_orig = 0;
- }
-
-- if (x_orig + width > gdk_screen_get_width (gdk_screen_get_dfeault ()))
-+ if (x_orig + width > gdk_screen_get_width (gdk_screen_get_default ()))
- width = gdk_screen_width () - x_orig;
-
- if (y_orig + height > gdk_screen_get_height (gdk_screen_get_default ()))
diff --git a/user/gtk-doc/0001-tests-Label-parts-with-decimals-not-roman-numerals.patch b/user/gtk-doc/0001-tests-Label-parts-with-decimals-not-roman-numerals.patch
deleted file mode 100644
index f53d261db..000000000
--- a/user/gtk-doc/0001-tests-Label-parts-with-decimals-not-roman-numerals.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From a8475278880270a3bf682d9552e26651081330ce Mon Sep 17 00:00:00 2001
-From: "Jan Alexander Steffens (heftig)" <jan.steffens@gmail.com>
-Date: Fri, 11 Aug 2017 21:19:28 +0200
-Subject: [PATCH] tests: Label parts with decimals, not roman numerals
-
-dblatex (via gtkdoc-mkpdf) warns that labels must be integers:
-
- Warning: only an integer in @label can be processed: 'I'
- Warning: only an integer in @label can be processed: 'II'
- Warning: only an integer in @label can be processed: 'III'
-
-Make the labels decimal to placate dblatex. I'm not sure this is
-actually the best solution, though.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=786174
----
- tests/annotations/docs/tester-docs.xml | 4 ++--
- tests/gobject/docs/tester-docs.xml | 6 +++---
- 2 files changed, 5 insertions(+), 5 deletions(-)
-
-diff --git a/tests/annotations/docs/tester-docs.xml b/tests/annotations/docs/tester-docs.xml
-index e2abf74..7d80f9d 100644
---- a/tests/annotations/docs/tester-docs.xml
-+++ b/tests/annotations/docs/tester-docs.xml
-@@ -16,7 +16,7 @@
- </releaseinfo>
- </bookinfo>
-
-- <reference label="II">
-+ <reference label="2">
- <title>API Reference</title>
- <chapter id="main-api">
- <title>Tests</title>
-@@ -24,7 +24,7 @@
- </chapter>
- </reference>
-
-- <part label="III">
-+ <part label="3">
- <title>Appendix</title>
-
- <index id="api-index">
-diff --git a/tests/gobject/docs/tester-docs.xml b/tests/gobject/docs/tester-docs.xml
-index a534c55..05117ef 100644
---- a/tests/gobject/docs/tester-docs.xml
-+++ b/tests/gobject/docs/tester-docs.xml
-@@ -37,7 +37,7 @@
- </para>
- </preface>
-
-- <part label="I" id="part.i">
-+ <part label="1" id="part.i">
- <title>Overview</title>
- <chapter id="Overview-building">
- <title>How to build the library</title>
-@@ -45,7 +45,7 @@
- </chapter>
- </part>
-
-- <reference label="II" id="part.ii">
-+ <reference label="2" id="part.ii">
- <title>API Reference</title>
- <chapter id="main-api">
- <title>Tests</title>
-@@ -58,7 +58,7 @@
- </chapter>
- </reference>
-
-- <part label="III" id="part.iii">
-+ <part label="3" id="part.iii">
- <title>Appendix</title>
-
- <chapter id="object-tree">
---
-2.13.0
-
diff --git a/user/gtk-doc/APKBUILD b/user/gtk-doc/APKBUILD
index 193cd2f50..a85a6c2fc 100644
--- a/user/gtk-doc/APKBUILD
+++ b/user/gtk-doc/APKBUILD
@@ -1,28 +1,20 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=gtk-doc
-pkgver=1.29
-pkgrel=2
+pkgver=1.32
+pkgrel=1
pkgdesc="Documentation tool for public library API"
url="https://www.gtk.org/gtk-doc/"
arch="noarch"
-license="GFDL"
-depends="docbook-xsl perl python3 py3-six pkgconf glib-dev highlight"
-makedepends="rarian-dev py-libxml2 itstool autoconf automake libtool"
-checkdepends="bc"
-source="https://download.gnome.org/sources/$pkgname/$pkgver/$pkgname-$pkgver.tar.xz
- 0001-tests-Label-parts-with-decimals-not-roman-numerals.patch
- "
# it does not seem to be possible to disable tests of pdf which requires dblatex or fop
# disable checks for now
options="!check"
-
-prepare() {
- cd "$builddir"
- autoreconf -vif
-}
+license="GFDL"
+depends="docbook-xsl perl python3 py3-pygments py3-six pkgconf glib-dev highlight"
+checkdepends="bc"
+makedepends="rarian-dev py3-libxml2 itstool autoconf automake libtool"
+source="https://download.gnome.org/sources/$pkgname/$pkgver/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
export PYTHON="/usr/bin/python3"
./configure \
--build=$CBUILD \
@@ -33,14 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="97e17be2563c2c12a04394633feaf6591918968a794c38e945a65be9c2de2bed5ce586592a7fe396a1874b8e43e63d6380c6d1a3193ccb7f9bb3d3a331526421 gtk-doc-1.29.tar.xz
-a86438a9cbbf1bb60d2aea93f10a473f3fe7814cdbf0a454ff42bea88e79f21f9e748e063335aa6332878fa8f8a1c00ef288a44631b510471cc6bb806851b391 0001-tests-Label-parts-with-decimals-not-roman-numerals.patch"
+sha512sums="6d28395968c2951f1685570e5778b5add76d1b9cff8fcb8632b200b3ba251602a1ea59b1def84fc28560988b87fc0dbbc6947af88d268db6ff23e9c28aea3b28 gtk-doc-1.32.tar.xz"
diff --git a/user/gtk-layer-shell/APKBUILD b/user/gtk-layer-shell/APKBUILD
new file mode 100644
index 000000000..040c27cf4
--- /dev/null
+++ b/user/gtk-layer-shell/APKBUILD
@@ -0,0 +1,34 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=gtk-layer-shell
+pkgver=0.9.0
+pkgrel=0
+pkgdesc="A library to create panels and other desktop components for Wayland using the Layer Shell protocol"
+url=" "
+arch="all"
+license="LGPL-3.0+ AND MIT"
+depends=""
+checkdepends="ttf-liberation" # gtk needs fonts or gtklabel goes insane.
+makedepends="gobject-introspection-dev gtk+3.0-dev gtk-doc meson python3
+ vala-dev wayland-dev wayland-protocols"
+subpackages="$pkgname-dev $pkgname-doc"
+source="gtk-layer-shell-$pkgver.tar.gz::https://github.com/wmww/gtk-layer-shell/archive/refs/tags/v$pkgver.tar.gz"
+
+build() {
+ meson setup \
+ -Dprefix=/usr \
+ -Ddocs=true \
+ -Dtests=true \
+ -Dvapi=true \
+ build
+ meson compile -C build
+}
+
+check() {
+ meson test -C build
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C build
+}
+
+sha512sums="38179dd83a0828740ca8e2cc27fe3708f61107e88246644745da6c300da03ce04b17dd7117087946a68401a43176a599bdb98ed50936602d2b2540449c0e9066 gtk-layer-shell-0.9.0.tar.gz"
diff --git a/user/gtk4/APKBUILD b/user/gtk4/APKBUILD
new file mode 100644
index 000000000..1795d2107
--- /dev/null
+++ b/user/gtk4/APKBUILD
@@ -0,0 +1,51 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Sile Ekaterin Liszka <sheila@vulpine.house>
+pkgname=gtk4
+pkgver=4.18.5
+pkgrel=0
+pkgdesc="Version 4 of the GNOME graphics toolkit"
+url="https://www.gtk.org"
+arch="all"
+options="!check" # Requires Wayland environment running
+license="LGPL-2.0+ AND LGPL-2.1+ AND LGPL-2.0-only AND Expat"
+depends=""
+makedepends="cairo-dev cmake cups-dev ffmpeg-dev ffmpeg-libs gdk-pixbuf-dev
+ gi-docgen glib-dev gobject-introspection-dev graphene-dev gstreamer-dev
+ gst-plugins-bad-dev iso-codes-dev libepoxy-dev libexecinfo-dev
+ librsvg-dev libxcursor-dev libxdamage-dev libxi-dev libxinerama-dev
+ libxkbcommon-dev libxrandr-dev meson pango-dev py3-docutils py3-jinja2
+ py3-markdown py3-pygments py3-pygobject py3-toml py3-typogrify tiff-dev
+ wayland-dev wayland-protocols"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://download.gnome.org/sources/gtk/${pkgver%.*}/gtk-$pkgver.tar.xz
+ vulkan-nullref.patch
+ "
+builddir="$srcdir/gtk-$pkgver"
+
+build() {
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ -Dc_link_args='-lexecinfo' \
+ -Dman-pages=true \
+ -Dbuild-examples=false \
+ -Dvulkan=disabled \
+ build
+ meson compile -C build
+}
+
+check() {
+ meson test -C build
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C build
+}
+
+
+sha512sums="4a09188fdbeb532d8c2064199126eaf60d806118bb637d5182121f3d80d374acdf343568c3423effb9574c364279ded7d7cbd4e0331dc1fb647970f60c98bff0 gtk-4.18.5.tar.xz
+1dca0747e2f572354c0d47e443270d64f5855d9fba592621d570be5eed49213ce8303e7d028bbe4d493cceebea9b3c90d6dc4f0671b1cae153a15384aa35d63e vulkan-nullref.patch"
diff --git a/user/gtk4/vulkan-nullref.patch b/user/gtk4/vulkan-nullref.patch
new file mode 100644
index 000000000..464415901
--- /dev/null
+++ b/user/gtk4/vulkan-nullref.patch
@@ -0,0 +1,69 @@
+From d4350c0fe535a759abd7898c7f251738242d1408 Mon Sep 17 00:00:00 2001
+From: Benjamin Otte <otte@redhat.com>
+Date: Thu, 24 Apr 2025 03:36:15 +0200
+Subject: [PATCH] vulkan: Handle not being compiled against Vulkan
+
+The Vulkan renderer should work and just fail to realize.
+Currently it SEGVs with a NULL function call.
+
+Part-of: <https://gitlab.gnome.org/GNOME/gtk/-/merge_requests/8506>
+---
+ gsk/gpu/gskvulkanrenderer.c | 22 ++++++++++++++++++++--
+ 1 file changed, 20 insertions(+), 2 deletions(-)
+
+diff --git a/gsk/gpu/gskvulkanrenderer.c b/gsk/gpu/gskvulkanrenderer.c
+index a5f827df839..6282c0b51c1 100644
+--- a/gsk/gpu/gskvulkanrenderer.c
++++ b/gsk/gpu/gskvulkanrenderer.c
+@@ -4,6 +4,8 @@
+
+ #include "gskgpurendererprivate.h"
+
++#include <glib/gi18n-lib.h>
++
+ #ifdef GDK_RENDERING_VULKAN
+
+ #include "gskvulkandeviceprivate.h"
+@@ -143,14 +145,28 @@ gsk_vulkan_renderer_unrealize (GskRenderer *renderer)
+
+ GSK_RENDERER_CLASS (gsk_vulkan_renderer_parent_class)->unrealize (renderer);
+ }
+-#endif
++
++#else /* !GDK_RENDERING_VULKAN */
++
++static gboolean
++gsk_vulkan_renderer_realize (GskRenderer *renderer,
++ GdkDisplay *display,
++ GdkSurface *surface,
++ GError **error)
++{
++ g_set_error_literal (error, GDK_VULKAN_ERROR, GDK_VULKAN_ERROR_NOT_AVAILABLE,
++ _("Vulkan support disabled during GTK build"));
++
++ return FALSE;
++}
++#endif /* GDK_RENDERING_VULKAN */
+
+ static void
+ gsk_vulkan_renderer_class_init (GskVulkanRendererClass *klass)
+ {
++ GskRendererClass *renderer_class = GSK_RENDERER_CLASS (klass);
+ #ifdef GDK_RENDERING_VULKAN
+ GskGpuRendererClass *gpu_renderer_class = GSK_GPU_RENDERER_CLASS (klass);
+- GskRendererClass *renderer_class = GSK_RENDERER_CLASS (klass);
+
+ gpu_renderer_class->frame_type = GSK_TYPE_VULKAN_FRAME;
+
+@@ -162,6 +178,8 @@ gsk_vulkan_renderer_class_init (GskVulkanRendererClass *klass)
+ gpu_renderer_class->get_backbuffer = gsk_vulkan_renderer_get_backbuffer;
+
+ renderer_class->unrealize = gsk_vulkan_renderer_unrealize;
++#else
++ renderer_class->realize = gsk_vulkan_renderer_realize;
+ #endif
+ }
+
+--
+GitLab
+
diff --git a/user/gtkmm+3.0/APKBUILD b/user/gtkmm+3.0/APKBUILD
index f8a441882..659a58def 100644
--- a/user/gtkmm+3.0/APKBUILD
+++ b/user/gtkmm+3.0/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=gtkmm+3.0
-pkgver=3.24.0
+pkgver=3.24.7
pkgrel=0
pkgdesc="C++ interfaces for GTK+ 3"
url="https://gnome.org"
@@ -9,31 +9,33 @@ arch="all"
options="!check" # Tests require X
license="GPL-2.0+ AND LGPL-2.1+"
depends=""
-makedepends="glibmm-dev pangomm-dev atkmm-dev gtk+3.0-dev"
+makedepends="atkmm-dev cairomm-dev doxygen glibmm-dev graphviz gtk+3.0-dev
+ meson ninja pangomm-dev libxslt"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.gnome.org/sources/gtkmm/${pkgver%.*}/gtkmm-$pkgver.tar.xz"
builddir="$srcdir/gtkmm-$pkgver"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
+ meson \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var
- make
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ -Dbuild-documentation=true \
+ -Dbuild-x11-api=true \
+ -Dbuild-demos=false \
+ -Ddist-warnings=no \
+ . output
+ ninja -C output
}
check() {
- cd "$builddir"
- make check
+ ninja -C output test
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" ninja -C output install
}
-
-sha512sums="94658fbf7eebbac2a864d6c7d3cd0e6ffd4ac213fd1d9986d721d4906c7a43a45d8757df475879ee37ef54ec5e3fac7d9a8e4a194b97b2be72a10743bf2e13ac gtkmm-3.24.0.tar.xz"
+sha512sums="2ede6d77df5cbaa6ea3ee347d8b949e38512db7f5e9b36cb6f531eb259d5986f84ebfc6bb0cdaac1be4dc97e9d611515995184d245e2c0fab2cd8ebcae933a98 gtkmm-3.24.7.tar.xz"
diff --git a/user/gtksourceview-3.0/APKBUILD b/user/gtksourceview-3.0/APKBUILD
index 12ec22e9c..1383e86a0 100644
--- a/user/gtksourceview-3.0/APKBUILD
+++ b/user/gtksourceview-3.0/APKBUILD
@@ -1,21 +1,21 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=gtksourceview-3.0
-pkgver=3.24.10
+pkgver=3.24.11
pkgrel=0
pkgdesc="Source viewer widget for GTK+ 3.0"
url="https://gnome.org"
arch="all"
options="!check" # testsuite requires X
license="LGPL-2.1+"
-makedepends="gtk+3.0-dev libxml2-dev vala-dev gobject-introspection-dev"
+depends=""
checkdepends="libxml2-utils"
+makedepends="gtk+3.0-dev libxml2-dev vala-dev gobject-introspection-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.gnome.org/sources/gtksourceview/3.24/gtksourceview-$pkgver.tar.xz"
builddir="$srcdir/gtksourceview-$pkgver"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,13 +27,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="990935ed7c3b10a1659cf22bd36eb71e76088768f7b70234b50465f542592720bb6b206746e0606c96ab99ba0208535fc6073b4f6c0f3427acd0ab5a43420d46 gtksourceview-3.24.10.tar.xz"
+sha512sums="3490b34c6432a2e2ef292ad5bf982fdd22d33b1472434549b4ea8ddae0fc8808e128ef947e4d0dcb41e8de5e601b202f52532bbbbfa11d35050acfc42f9936b2 gtksourceview-3.24.11.tar.xz"
diff --git a/user/gtksourceview4/APKBUILD b/user/gtksourceview4/APKBUILD
new file mode 100644
index 000000000..52ef634a8
--- /dev/null
+++ b/user/gtksourceview4/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=gtksourceview4
+_pkgreal=${pkgname%4}
+pkgver=4.8.3
+pkgrel=0
+pkgdesc="GNOME library for syntax-highlighting code"
+url="https://www.gnome.org/"
+arch="all"
+options="!check" # majority of tests fail with SIGTRAP
+license="LGPL-2.1+ AND LGPL-2.0+ AND (Apache-2.0 or MIT~unspecified and/or LGPL-2.1+)"
+depends=""
+makedepends="glib-dev gobject-introspection-dev gtk-doc gtk+3.0-dev libxml2-dev meson ninja vala-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://download.gnome.org/sources/$_pkgreal/${pkgver%.*}/$_pkgreal-$pkgver.tar.xz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ -Dgtk_doc=true \
+ . output
+ ninja -C output
+}
+
+check() {
+ ninja -C output test
+}
+
+package() {
+ DESTDIR="$pkgdir" ninja -C output install
+}
+
+sha512sums="406fae70301336eb31a05474db28b792212fa82db5acc209322587838655416955f8a91a6e081a1d0a22330e199d1815b5dd9d3299bfc9894e127b38ed6be418 gtksourceview-4.8.3.tar.xz"
diff --git a/user/gtkspell/APKBUILD b/user/gtkspell/APKBUILD
index cd7b8f100..df4d65932 100644
--- a/user/gtkspell/APKBUILD
+++ b/user/gtkspell/APKBUILD
@@ -1,14 +1,14 @@
# Maintainer:
pkgname=gtkspell
pkgver=2.0.16
-pkgrel=10
+pkgrel=11
pkgdesc="Highlighting and replacement of misspelled words in Gtk software"
url="http://gtkspell.sourceforge.net/"
arch="all"
license="GPL-2.0-only"
-makedepends="gtk+2.0-dev enchant-dev intltool"
+depends=""
+makedepends="autoconf automake enchant-dev gtk+2.0-dev gtk-doc intltool libtool"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
source="http://$pkgname.sourceforge.net/download/$pkgname-$pkgver.tar.gz
enchant-2.patch
"
@@ -16,13 +16,15 @@ source="http://$pkgname.sourceforge.net/download/$pkgname-$pkgver.tar.gz
prepare() {
default_prepare
update_config_sub
+ autoreconf -vif
}
build() {
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
- --prefix=/usr
+ --prefix=/usr \
+ --disable-gtk-doc
make
}
diff --git a/user/gucharmap/APKBUILD b/user/gucharmap/APKBUILD
index 9a3d7bfcf..fff7df30b 100644
--- a/user/gucharmap/APKBUILD
+++ b/user/gucharmap/APKBUILD
@@ -1,40 +1,37 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=gucharmap
-pkgver=12.0.1
-_unicode=12.0.0
+pkgver=15.1.5
+_unicode=15.1.0
pkgrel=0
pkgdesc="Unicode utility for the Gnome desktop environment"
-url="https://gnome.org"
+url="https://live.gnome.org/Gucharmap"
arch="all"
license="GPL-3.0+"
depends=""
-makedepends="desktop-file-utils gobject-introspection-dev gtk+3.0-dev intltool
- itstool libxml2-utils unicode-data"
+makedepends="desktop-file-utils gobject-introspection-dev gtk+3.0-dev gtk-doc
+ intltool itstool libxml2-utils meson ninja pcre2-dev perl unicode-data
+ vala"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://download.gnome.org/sources/gucharmap/${pkgver%.*}/gucharmap-$pkgver.tar.xz"
+source="https://gitlab.gnome.org/GNOME/gucharmap/-/archive/$pkgver/gucharmap-$pkgver.tar.gz"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
+ meson \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
--localstatedir=/var \
- --with-unicode-data=/usr/share/unicode/$_unicode
- make
+ -Ducd_path=/usr/share/unicode/$_unicode \
+ . output
+ ninja -C output
}
check() {
- cd "$builddir"
- make check
+ ninja -C output test
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" ninja -C output install
}
-sha512sums="989034350c73c3f1857167f434aa4a5c140ef7574cb799b874e421a8d0c2bf520dfcee85bc0cf8e52f439fb7d30e0db5172a25c107c80b38ce6da4e703a3ffc2 gucharmap-12.0.1.tar.xz"
+sha512sums="941157982bd2097cdb34ae36373f42f564c9b5eb94bc1334dfa277070223114f0d0e99c68a72939d27e2a997ba015da7373337b921c9b583c3c3ef9ab9f7d79c gucharmap-15.1.5.tar.gz"
diff --git a/user/guile/APKBUILD b/user/guile/APKBUILD
index 6013fd375..871131af0 100644
--- a/user/guile/APKBUILD
+++ b/user/guile/APKBUILD
@@ -1,23 +1,30 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=guile
-pkgver=2.2.4
-pkgrel=0
+pkgver=2.2.7
+pkgrel=1
pkgdesc="Portable, embeddable Scheme implementation written in C"
url="https://www.gnu.org/software/guile/"
-arch="all !ppc" # https://debbugs.gnu.org/cgi/bugreport.cgi?bug=26854
-options="!check !dbg" # Requires actual LC_COLLATE and LC_MONETARY support.
+arch="all"
+options="!check !dbg !strip" # Requires actual LC_COLLATE and LC_MONETARY support.
license="LGPL-3.0+ AND GPL-3.0+"
subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
depends=""
depends_dev="guile gc-dev"
makedepends="gc-dev gmp-dev libffi-dev libtool libunistring-dev ncurses-dev
texinfo"
-source="ftp://ftp.gnu.org/pub/gnu/$pkgname/$pkgname-$pkgver.tar.gz
+source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz
0002-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch
"
+prepare() {
+ default_prepare
+
+ case "$CARCH" in
+ ppc) rm -fvr prebuilt/32-bit-big-endian; ;; #533
+ esac
+}
+
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,10 +35,9 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
rm "$pkgdir"/usr/lib/charset.alias
}
-sha512sums="a200b83a02ef23c8256d9bfb14a141bb6dbca01279a0587bfb672060429c49093088e4b765b7ee5c85cd587a1aeed77d9438d300d3e67cdd6cebbb794d88171e guile-2.2.4.tar.gz
+sha512sums="ad11885ffeb7655ef6c8543e67233992dc37bdcf91ed82188e6a144169c6b7d4e31cf7a6d01509c573d00904cb002719b851f71cdf1359a86de401daf613d773 guile-2.2.7.tar.gz
b1c309cc07830ff1741ef88857f8099187b449580e8d57862886abc367ef1accc5a35636d81eee09247f13d3a751cdc8909fdea05368d3d509bd2039ce06d078 0002-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch"
diff --git a/user/guile20/0002-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch b/user/guile20/0002-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch
deleted file mode 100644
index cbe194dfd..000000000
--- a/user/guile20/0002-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From be9d97e0eeb2423b86fad7094a462b142f5176f7 Mon Sep 17 00:00:00 2001
-From: Rob Browning <rlb@defaultvalue.org>
-Date: Sun, 18 Mar 2012 13:28:24 -0500
-Subject: Mark "mutex with owner not retained" threads test as unresolved.
-
-As per discussion with upstream, mark this test as unresolved since it
-may produce false negatives, depending on the behavior/timing of the
-garbage collector.
----
- test-suite/tests/threads.test | 6 ++++--
- 1 file changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/test-suite/tests/threads.test b/test-suite/tests/threads.test
-index 8178120..7d180de 100644
---- a/test-suite/tests/threads.test
-+++ b/test-suite/tests/threads.test
-@@ -412,8 +412,10 @@
-
- (gc) (gc)
- (let ((m (g)))
-- (and (mutex? m)
-- (eq? (mutex-owner m) (current-thread)))))))
-+ (or
-+ (and (mutex? m)
-+ (eq? (mutex-owner m) (current-thread)))
-+ (throw 'unresolved))))))
-
- ;;
- ;; mutex lock levels
diff --git a/user/guile20/APKBUILD b/user/guile20/APKBUILD
deleted file mode 100644
index ceafb8a28..000000000
--- a/user/guile20/APKBUILD
+++ /dev/null
@@ -1,37 +0,0 @@
-# Maintainer:
-pkgname=guile
-pkgver=2.0.14
-pkgrel=0
-pkgdesc="Portable, embeddable Scheme implementation written in C"
-url="https://www.gnu.org/software/guile/"
-arch="ppc" # https://debbugs.gnu.org/cgi/bugreport.cgi?bug=26854
-options="!check" # Requires actual LC_COLLATE and LC_MONETARY support.
-license="LGPL-3.0+ AND GPL-3.0+"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
-depends=""
-depends_dev="guile gc-dev"
-makedepends="gc-dev gmp-dev libffi-dev libtool libunistring-dev ncurses-dev
- texinfo"
-source="ftp://ftp.gnu.org/pub/gnu/$pkgname/$pkgname-$pkgver.tar.gz
- 0002-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch
- "
-
-build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --disable-error-on-warning \
- --disable-static
- make
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
- rm "$pkgdir"/usr/lib/charset.alias
-}
-
-sha512sums="d69c9bdf589fedcc227f3203012f6ed11c327cef3a0147d8e016fe276abecdb4272625efe1d0c7aa68219fe8f29bbced44089a4b479e4eafe01976c6b2b83633 guile-2.0.14.tar.gz
-b1c309cc07830ff1741ef88857f8099187b449580e8d57862886abc367ef1accc5a35636d81eee09247f13d3a751cdc8909fdea05368d3d509bd2039ce06d078 0002-Mark-mutex-with-owner-not-retained-threads-test-as-u.patch"
diff --git a/user/gutenprint/APKBUILD b/user/gutenprint/APKBUILD
index 56fbfacea..e3f0d111d 100644
--- a/user/gutenprint/APKBUILD
+++ b/user/gutenprint/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gutenprint
-pkgver=5.2.14
+pkgver=5.3.3
pkgrel=0
pkgdesc="Open source printer drivers"
url="http://gimp-print.sourceforge.net/"
@@ -9,14 +9,13 @@ arch="all"
options="!check" # Times out even on 64-thread POWER9.
license="GPL-2.0-only"
depends=""
-makedepends="cups-dev"
+makedepends="bash cups-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-libs"
install="$pkgname.post-install $pkgname.post-upgrade"
-source="https://downloads.sourceforge.net/gimp-print/gutenprint-$pkgver.tar.bz2"
+source="https://downloads.sourceforge.net/gimp-print/gutenprint-$pkgver.tar.xz"
build() {
- cd "$builddir"
- ./configure \
+ bash ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -28,13 +27,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="aeb06b4be45fcb67320b419b988ca59dbda51bb2c3ff4edd0f0757ac977565a6829f506ebea6872211c689a15925ad2119836424c3c9a97345a8cd506e9df9fd gutenprint-5.2.14.tar.bz2"
+sha512sums="d2c47eb4ccc3c46ccb2f1042682edf7443f5c57439ead72f49ecd10537cf967251bacf7ca7da29fb8dceecc7eebd55ed021f2594ff9fb6509bab543fab1dc8d6 gutenprint-5.3.3.tar.xz"
diff --git a/user/gvfs/APKBUILD b/user/gvfs/APKBUILD
new file mode 100644
index 000000000..c4422873d
--- /dev/null
+++ b/user/gvfs/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=gvfs
+pkgver=1.52.2
+pkgrel=0
+pkgdesc="GObject-based virtual filesystem library"
+url="https://www.gnome.org"
+arch="all"
+license="LGPL-2.0+ AND GPL-3.0-only AND BSD-3-Clause AND MPL-2.0"
+depends=""
+makedepends="meson ninja avahi-dev dbus-dev elogind-dev fuse3-dev gcr3-dev
+ glib-dev gobject-introspection-dev gsettings-desktop-schemas-dev
+ libarchive-dev libbluray-dev libcap-dev libcdio-paranoia-dev
+ libgcrypt-dev libgphoto2-dev libgudev-dev libimobiledevice-dev
+ libmtp-dev libnfs-dev libsecret-dev libsoup3-dev libusb-dev polkit-dev
+ udisks2-dev vala-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://download.gnome.org/sources/gvfs/${pkgver%.*}/gvfs-$pkgver.tar.xz"
+
+build() {
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ -Dsystemduserunitdir=no \
+ -Dtmpfilesdir=no \
+ -Dgoa=false \
+ -Dsmb=false \
+ -Dgoogle=false \
+ . output
+ meson compile -C output
+}
+
+check() {
+ meson test -C output
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C output
+}
+
+sha512sums="85684625822a1dcaa2258b7e8389ef53769850d05b7b2538a1335c9e16b882a08a5a33131779a132a2bf7ed23875f16791238fcdebc9cf3e543050d64aee8331 gvfs-1.52.2.tar.xz"
diff --git a/user/gvim/APKBUILD b/user/gvim/APKBUILD
index fdb3bb987..e1dcb3852 100644
--- a/user/gvim/APKBUILD
+++ b/user/gvim/APKBUILD
@@ -1,11 +1,11 @@
-# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
+# Contributor: Sergey Lukin <sergej.lukin@gmail.com>
# Contributor: Łukasz Jendrysik <scadu@yandex.com>
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=gvim
_pkgreal=vim
-pkgver=8.1.1177
+pkgver=9.1.0378
pkgrel=0
pkgdesc="advanced text editor"
url="http://www.vim.org"
@@ -19,20 +19,42 @@ source="$_pkgreal-$pkgver.tar.gz::https://github.com/$_pkgreal/$_pkgreal/archive
builddir="$srcdir/$_pkgreal-$pkgver"
# secfixes:
+# 9.1.0148-r0:
+# - CVE-2023-4752
+# - CVE-2023-4781
+# - CVE-2023-5344
+# - CVE-2023-5441
+# - CVE-2023-5535
+# - CVE-2023-46246
+# - CVE-2023-48231
+# - CVE-2023-48232
+# - CVE-2023-48233
+# - CVE-2023-48234
+# - CVE-2023-48235
+# - CVE-2023-48236
+# - CVE-2023-48237
+# - CVE-2023-48706
+# - CVE-2024-22667
+# 9.0.1385-r0:
+# - CVE-2023-0049
+# - CVE-2023-0051
+# - CVE-2023-0054
+# - CVE-2023-0288
+# - CVE-2023-0433
+# - CVE-2023-0512
# 8.0.0329-r0:
# - CVE-2017-5953
# 8.0.0056-r0:
# - CVE-2016-1248
prepare() {
- cd "$builddir"
+ default_prepare
# Read vimrc from /etc/vim
echo '#define SYS_VIMRC_FILE "/etc/vim/vimrc"' >> src/feature.h
}
build() {
local _onlynative
- cd "$builddir"
[ "$CBUILD" != "$CHOST" ] || _onlynative="--enable-perlinterp --enable-python3interp=dynamic"
./configure \
--build=$CBUILD \
@@ -58,13 +80,11 @@ build() {
}
package() {
- cd "$builddir"
-
install -Dm755 src/vim "$pkgdir"/usr/bin/gvim
install -Dm755 src/gvimtutor "$pkgdir"/usr/bin/gvimtutor
- install -Dm644 runtime/vim16x16.png "$pkgdir"/usr/share/locolor/16x16/apps/gvim.png
- install -Dm644 runtime/vim32x32.png "$pkgdir"/usr/share/locolor/32x32/apps/gvim.png
- install -Dm644 runtime/vim48x48.png "$pkgdir"/usr/share/hicolor/48x48/apps/gvim.png
+ install -Dm644 runtime/vim16x16.png "$pkgdir"/usr/share/icons/locolor/16x16/apps/gvim.png
+ install -Dm644 runtime/vim32x32.png "$pkgdir"/usr/share/icons/locolor/32x32/apps/gvim.png
+ install -Dm644 runtime/vim48x48.png "$pkgdir"/usr/share/icons/hicolor/48x48/apps/gvim.png
install -Dm644 runtime/gvim.desktop "$pkgdir"/usr/share/applications/gvim.desktop
cd "$pkgdir"/usr/bin
@@ -74,4 +94,4 @@ package() {
ln -s gvim rgvim
}
-sha512sums="b90d3f6b6727ea97a1e41154855c45f80a2e94a8e3cf1b912ec6812494c2658d66ba4bc796f5a9e7713544ecdd2f813512e4497293d0e362ae9281695dcee52f vim-8.1.1177.tar.gz"
+sha512sums="d1c31de1e39bd3504a462aa324b699bb81ff11717171529047e5518c9bb2aec651b0b40a18b66f4df92a1b2065abc68a523df61681f32228839e69ba0f383e6b vim-9.1.0378.tar.gz"
diff --git a/user/gwenview/APKBUILD b/user/gwenview/APKBUILD
index a190e69d8..9947713d7 100644
--- a/user/gwenview/APKBUILD
+++ b/user/gwenview/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gwenview
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Fast and easy image viewer by KDE"
url="https://www.kde.org/applications/graphics/gwenview/"
@@ -13,34 +13,31 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev phonon-dev
kio-dev kactivities-dev kitemmodels-dev ki18n-dev kdoctools-dev
kparts-dev kwindowsystem-dev kiconthemes-dev knotifications-dev
libkipi-dev libjpeg-turbo-dev libpng-dev lcms2-dev zlib-dev exiv2-dev
- baloo-dev libkdcraw-dev"
+ baloo-dev libkdcraw-dev purpose-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/gwenview-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/gwenview-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- cmake \
+ LDFLAGS="$LDFLAGS -Wl,-z,stack-size=1048576" cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="4105ef3529170e7c92cbbdca4bfb31f0fa4220979ce808f86d23aac0a2fdd9f59d927f87a7909e2d1641defd97bd31e1142075f30d526c7d1b29e8afe314fd51 gwenview-18.12.3.tar.xz"
+sha512sums="d2937930921b4d2e86906e9174bd2e4733295f86e9c1aa3f3b978efadc38d73a83ac6d19a8a7f575b006542b038fd8767b673e06c1fd5c7642a52f1903339f0c gwenview-22.04.2.tar.xz"
diff --git a/user/gxmessage/APKBUILD b/user/gxmessage/APKBUILD
index 70d3a9573..249864821 100644
--- a/user/gxmessage/APKBUILD
+++ b/user/gxmessage/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=gxmessage
pkgver=3.4.3
-pkgrel=0
+pkgrel=1
pkgdesc="Display simple messages using GTK+"
url=" "
arch="all"
@@ -10,12 +10,10 @@ license="GPL-3.0+"
depends=""
makedepends="gtk+3.0-dev intltool"
subpackages="$pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
source="https://downloads.sourceforge.net/gxmessage/gxmessage-$pkgver.tar.gz"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -26,12 +24,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/harfbuzz/APKBUILD b/user/harfbuzz/APKBUILD
index be2836574..be03db054 100644
--- a/user/harfbuzz/APKBUILD
+++ b/user/harfbuzz/APKBUILD
@@ -1,44 +1,44 @@
-# Contributor: Sören Tempel <soeren+alpinelinux@soeren-tempel.net>
-# Maintainer:
+# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=harfbuzz
-pkgver=2.4.0
+pkgver=11.2.0
pkgrel=0
pkgdesc="Text shaping library"
url="https://www.freedesktop.org/wiki/Software/HarfBuzz"
arch="all"
-options="!check" # tests depend on certain freetype behaviours
license="MIT"
depends=""
makedepends="cairo-dev freetype-dev glib-dev gobject-introspection-dev icu-dev
- graphite2-dev"
+ graphite2-dev gtk-doc meson"
checkdepends="python3"
-subpackages="$pkgname-dev $pkgname-icu"
-source="https://www.freedesktop.org/software/$pkgname/release/$pkgname-$pkgver.tar.bz2"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-icu"
+source="https://github.com/$pkgname/$pkgname/releases/download/$pkgver/$pkgname-$pkgver.tar.xz"
build() {
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
+ meson setup \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--localstatedir=/var \
- --disable-static \
- --with-glib \
- --with-gobject \
- --with-graphite2 \
- --with-icu \
- --with-truetype
- make
+ -Dcairo=enabled \
+ -Ddocs=enabled \
+ -Dfreetype=enabled \
+ -Dglib=enabled \
+ -Dgobject=enabled \
+ -Dgraphite2=enabled \
+ -Dicu=enabled \
+ build
+
+ meson compile -C build
}
check() {
- make check
+ meson test -C build
}
package() {
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" meson install -C build
}
dev() {
@@ -49,8 +49,9 @@ dev() {
icu() {
pkgdesc="Harfbuzz ICU support library"
replaces="harfbuzz"
+ install_if="harfbuzz=$pkgver-r$pkgrel icu-libs"
mkdir -p "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/lib*icu.so.* "$subpkgdir"/usr/lib/
}
-sha512sums="daeaf029bd5d0d0674f930a8d0dcdc4e0b1253b2369c732c7b4fd130ab9438d0d9526967224a583ee58974c3b492874acaccdac13c71b58c950f0b3f031e505c harfbuzz-2.4.0.tar.bz2"
+sha512sums="108a164e5277f76f535bbd1c3744b1f78897e714376c2f61c1171b95d5004a0ab99179efdd92063f7677b30d5c1ab4e0a40612bf60d672af9f03bdd24b1edefa harfbuzz-11.2.0.tar.xz"
diff --git a/user/haveged/APKBUILD b/user/haveged/APKBUILD
index 83dc7d866..16ba27bdc 100644
--- a/user/haveged/APKBUILD
+++ b/user/haveged/APKBUILD
@@ -1,24 +1,23 @@
-# Contributor: Bartłomiej Piotrowski <nospam@bpiotrowski.pl>
+# Contributor: Bartłomiej Piotrowski <bpiotrowski@alpinelinux.org>
# Contributor: Danilo Godec <danilo.godec@agenda.si>
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
-# Maintainer: multiplexd <multi@in-addr.xyz>
+# Maintainer:
pkgname=haveged
-pkgver=1.9.4
-pkgrel=1
+pkgver=1.9.13
+pkgrel=0
pkgdesc="Entropy harvesting daemon using CPU timings"
url="http://www.issihosts.com/haveged/"
arch="all"
license="GPL-3.0+"
-subpackages="$pkgname-doc $pkgname-openrc"
+depends=""
makedepends="linux-headers"
-source="$pkgname-$pkgver.tar.gz::https://github.com/jirka-h/haveged/archive/$pkgver.tar.gz
- fix-cpu-cache-size-detection.patch
+subpackages="$pkgname-dev $pkgname-doc $pkgname-openrc"
+source="$pkgname-$pkgver.tar.gz::https://github.com/jirka-h/haveged/archive/v$pkgver.tar.gz
haveged.initd
- haveged.confd"
+ haveged.confd
+ "
build() {
- cd "$builddir"
-
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,13 +27,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
-
make DESTDIR="$pkgdir" install
rm "$pkgdir"/usr/lib/libhavege.la
@@ -45,7 +41,6 @@ package() {
"$pkgdir"/etc/conf.d/haveged
}
-sha512sums="20017c7637779c0cfa414233bb67efb2976f92c08e4eb1b7ea41ccd483dad755629d8e05fb8560a2db811fc2ded7d05fa081ab10c59341cb4c206595a964641d haveged-1.9.4.tar.gz
-6279296b057f19daf25020ac14997268230af4b11510d6e5c4a86989c119d6b081d2501069af198772302d5cce1464514c749033a4928fb95671268825a84ba8 fix-cpu-cache-size-detection.patch
+sha512sums="dff0f4273643ed6b2fea26f1ba5c17be3d655d27ab0b96091bcd23e1cb984fc440cc81e694cc7bcc84a9a667d96f3c04a73675f79ecae525ee56390940cce576 haveged-1.9.13.tar.gz
5d1e4186580951d4e6e01193e9c8827ceddaf3c2e28a981fc9176cb446bed32b059304796a77d9db6fb761a21f8fd27dd3d31e06a0fb7a5985b4ea94978fcd64 haveged.initd
58fa2c513e26291047b60ea6d6355ad837c1cb07750a2dfb2a5ebf90cc504a4b6ebf3573869410a06cac85d9b634b3df988e8b033921394da8a5abeee574c822 haveged.confd"
diff --git a/user/haveged/fix-cpu-cache-size-detection.patch b/user/haveged/fix-cpu-cache-size-detection.patch
deleted file mode 100644
index 07da2b46d..000000000
--- a/user/haveged/fix-cpu-cache-size-detection.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Some ARM cpus does not report the cache size or say it is -1
-
-diff --git a/src/havegetune.c b/src/havegetune.c
-index f1a99f2..de39c53 100644
---- a/src/havegetune.c
-+++ b/src/havegetune.c
-@@ -795,6 +795,8 @@ static int vfs_configInfoCache(
- ctype = vfs_configFile(pAnchor, path, vfs_configType);
- strcpy(path+plen, "size");
- size = vfs_configFile(pAnchor, path, vfs_configInt);
-+ if (size == -1)
-+ size = ctype == 'I' ? GENERIC_ICACHE : GENERIC_DCACHE;
- cfg_cacheAdd(pAnchor, SRC_VFS_INDEX, pArgs[1], level, ctype, size);
- }
- }
diff --git a/user/hdparm/APKBUILD b/user/hdparm/APKBUILD
index f6e5a8f8e..423948de0 100644
--- a/user/hdparm/APKBUILD
+++ b/user/hdparm/APKBUILD
@@ -1,16 +1,17 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=hdparm
-pkgver=9.58
+pkgver=9.62
pkgrel=0
pkgdesc="Utility for manipulating IDE device parameters"
url="https://sourceforge.net/projects/hdparm"
arch="all"
+options="!check" # This application has no tests.
license="BSD-2-clause OR GPL-2.0-or-later"
+depends=""
makedepends="linux-headers"
-options="!check" # this application has no tests
subpackages="$pkgname-doc"
-source="http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz"
+source="https://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz"
prepare() {
default_prepare
@@ -18,17 +19,15 @@ prepare() {
}
build() {
- cd "$builddir"
export CFLAGS="$CFLAGS -D_GNU_SOURCE"
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -D -m755 contrib/idectl "$pkgdir"/sbin
install -D -m755 contrib/ultrabayd "$pkgdir"/sbin
install -D -m644 LICENSE.TXT "$pkgdir"/usr/share/licenses/hdparm/LICENSE.TXT
}
-sha512sums="42fb70f494aae4cc205ca68c3e883e1f4fc33e8ced1914e280e9f3faa7233d3f839e59178ec09ddb9d32e9d2bca122ce324645ecb5ac73defa284030ac7d3cea hdparm-9.58.tar.gz"
+sha512sums="ac6c4d285d081ecd8c7b231192a5a0fc268d934eeeb59794ae9a9db01ecbdd0afa0cade6ed42a1fd26ad543c52a3b380ac4f1b679992d167becb4ed6251fd369 hdparm-9.62.tar.gz"
diff --git a/user/hermit/APKBUILD b/user/hermit/APKBUILD
index e2b1002d4..d546772f5 100644
--- a/user/hermit/APKBUILD
+++ b/user/hermit/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Luis Ressel <aranea@aixah.de>
-# Maintainer: Luis Ressel <aranea@aixah.de>
+# Contributor: Mira Ressel <aranea@aixah.de>
+# Maintainer:
pkgname=hermit
pkgver=2.0
pkgrel=0
@@ -12,11 +12,9 @@ depends="fontconfig"
makedepends=""
subpackages=""
source="https://pcaro.es/d/otf-$pkgname-$pkgver.tar.gz"
-builddir="$srcdir"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF/ *.otf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF/ "$srcdir"/*.otf
}
sha512sums="ee41f8cbcdedfff568cd47ab7730c462ddd67d6170c05d35eaf64a7f954a4bb72d6ac99a383749f7032d9cf7b407b7a5ef3270b4209692c1572beb9744a21d42 otf-hermit-2.0.tar.gz"
diff --git a/user/heuristica-otf/APKBUILD b/user/heuristica-otf/APKBUILD
index 728909071..e0438bd67 100644
--- a/user/heuristica-otf/APKBUILD
+++ b/user/heuristica-otf/APKBUILD
@@ -12,11 +12,9 @@ depends="fontconfig"
makedepends=""
subpackages=""
source="https://downloads.sourceforge.net/heuristica/heuristica-otf-$pkgver.tar.xz"
-builddir="$srcdir"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF/ *.otf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF/ "$srcdir"/*.otf
}
sha512sums="d3336c6fcfd5ab5bfb041230659c41ecbaa9e2d2f92d5c1c8c0dc8dff89a777ac87d8713467c94b065febde30c131cd05376573308f69d698d63e18eee433783 heuristica-otf-1.0.2.tar.xz"
diff --git a/user/hexchat/APKBUILD b/user/hexchat/APKBUILD
new file mode 100644
index 000000000..1a310c13e
--- /dev/null
+++ b/user/hexchat/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=hexchat
+pkgver=2.16.2
+pkgrel=0
+pkgdesc="GTK-based IRC client"
+url="https://hexchat.org"
+arch="all"
+options="!check" # no tests
+license="GPL-2.0+ AND Custom:Expat AND LGPL-2.0+ AND LGPL-2.1+"
+depends="py3-cffi"
+makedepends="meson ninja
+ openssl-dev libproxy-dev libcanberra-dev dbus-glib-dev libnotify-dev
+ iso-codes-dev
+ lua5.3-dev perl-dev python3-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="$pkgname-$pkgver.tar.gz::https://github.com/hexchat/hexchat/archive/refs/tags/v$pkgver.tar.gz"
+builddir="$srcdir/hexchat-$pkgver"
+
+build() {
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ -Dwith-lua=lua \
+ . output
+ meson compile -C output
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C output
+}
+
+sha512sums="ed0015d369574207c762eb7340ed1db1541d627f8aa9f0b93aa9079e30097c63be45ce363e9b8cdd68fd7df53fc2ff1f719a0e1d615edd2d5596438d5e00a38d hexchat-2.16.2.tar.gz"
diff --git a/user/hfsutils/APKBUILD b/user/hfsutils/APKBUILD
new file mode 100644
index 000000000..a459530da
--- /dev/null
+++ b/user/hfsutils/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: Síle Ekaterin Liszka <sheila@adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@adelielinux.org>
+pkgname=hfsutils
+pkgver=3.2.6
+pkgrel=0
+pkgdesc="Utilities for working with HFS(+) filesystems"
+url="https://www.mars.org/home/rob/proj/hfs/"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends=""
+subpackages="$pkgname-doc"
+source="ftp://ftp.mars.org/pub/hfs/${pkgname}-${pkgver}.tar.gz
+ fix-missing-header.patch
+ "
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ for i in hattrib hcd hcopy hdel hdir hformat hfsutil hls hmkdir hmount hpwd hrename hrmdir humount hvol; do
+ install -Dm755 "$i" "$pkgdir/usr/bin/$i"
+ done
+ find doc/man -name '*.1' | while read i; do
+ install -Dm644 "$i" "$pkgdir/usr/share/man/1/$i"
+ done
+}
+
+sha512sums="0db3050e5969c4e4e6c6ddb10cbc221a5837eb1e12f9331e7129511d31a4ec8d38420ed0b948dadc85ed990f3b1085e930eb7f0c37b3883866d963e47cbbb173 hfsutils-3.2.6.tar.gz
+44e8304d469104c8400f88d392a4e7ffec82c41919a08514233dbe7c6509077a76920738deabd6bc2622c5c8b200a29d5ca4b4bc109dee01a63cb405674c8502 fix-missing-header.patch"
diff --git a/user/hfsutils/fix-missing-header.patch b/user/hfsutils/fix-missing-header.patch
new file mode 100644
index 000000000..eb71bd351
--- /dev/null
+++ b/user/hfsutils/fix-missing-header.patch
@@ -0,0 +1,11 @@
+diff -ur a/hpwd.c b/hpwd.c
+--- a/hpwd.c 2024-12-08 04:40:31.343764325 +0000
++++ b/hpwd.c 2024-12-08 04:40:45.768172918 +0000
+@@ -24,6 +24,7 @@
+ # endif
+
+ # include <stdio.h>
++# include <string.h>
+
+ # include "hfs.h"
+ # include "hcwd.h"
diff --git a/user/hicolor-icon-theme/APKBUILD b/user/hicolor-icon-theme/APKBUILD
index ffcc38651..fa6f71bd0 100644
--- a/user/hicolor-icon-theme/APKBUILD
+++ b/user/hicolor-icon-theme/APKBUILD
@@ -7,10 +7,11 @@ url="https://www.freedesktop.org/wiki/Software/icon-theme/"
arch="noarch"
options="!check" # Just icon set, no tests.
license="GPL-2.0-only"
+depends=""
+makedepends=""
source="https://icon-theme.freedesktop.org/releases/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -19,7 +20,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/highlight/APKBUILD b/user/highlight/APKBUILD
index cdce50580..024240aca 100644
--- a/user/highlight/APKBUILD
+++ b/user/highlight/APKBUILD
@@ -1,25 +1,24 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=highlight
-pkgver=3.50
+pkgver=3.58
pkgrel=0
pkgdesc="Fast and flexible source code highlighter"
url="http://www.andre-simon.de/doku/highlight/highlight.html"
arch="all"
options="!check" # No test suite.
license="GPL-3.0+"
+depends=""
makedepends="boost-dev lua5.3-dev"
subpackages="$pkgname-doc"
-source="http://www.andre-simon.de/zip/$pkgname-$pkgver.tar.bz2"
+source="http://www.andre-simon.de/zip/$pkgname-$pkgver.zip"
build() {
- cd "$builddir"
make cli
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="1911a29fea6a157ff237276673acf0ae2b5a931ad7beeacf26a67970fc5ec66abf6dc64ff1694bf0cf68414c29f597625700943da772823a025f7a139d606c3d highlight-3.50.tar.bz2"
+sha512sums="fed565a84daa62605e45ec83c8da187f32b50f720d4415e15647f0c80a7f1c0f5b42237c3321557593e072d85f49414bf0f6b714084b614e850f207e8bc6037e highlight-3.58.zip"
diff --git a/user/hiredis/APKBUILD b/user/hiredis/APKBUILD
new file mode 100644
index 000000000..0ff6a85df
--- /dev/null
+++ b/user/hiredis/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=hiredis
+pkgver=1.0.0
+pkgrel=0
+pkgdesc="A minimalistic C client library for the Redis database"
+url="https://github.com/redis/hiredis"
+arch="all"
+license="BSD-3-Clause"
+options="!check" # tests require a real redis server running
+depends=""
+makedepends="openssl-dev cmake"
+subpackages="$pkgname-dev"
+source="hiredis-$pkgver.tar.gz::https://github.com/redis/hiredis/archive/refs/tags/v$pkgver.tar.gz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="eb56201121eecdbfc8d42e8c2c141ae77bea248eeb36687ac6835c9b2404f5475beb351c4d8539d552db4d88e933bb2bd5b73f165e62b130bb11aeff39928e69 hiredis-1.0.0.tar.gz"
diff --git a/user/horizon/APKBUILD b/user/horizon/APKBUILD
new file mode 100644
index 000000000..25cfc4d63
--- /dev/null
+++ b/user/horizon/APKBUILD
@@ -0,0 +1,166 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=horizon
+pkgver=0.9.9.1
+pkgrel=1
+pkgdesc="Installation tools for Adélie Linux"
+url="https://horizon.adelielinux.org/"
+arch="all"
+options="!archcheck !check suid" # Unpackaged dependency ruby-aruba.
+license="AGPL-3.0+"
+depends=""
+checkdepends="ruby-aruba ruby-rspec valgrind"
+# Second group is the Qt5 UI deps.
+makedepends="bcnm-dev boost-dev cmake curl-dev eudev-dev libarchive-dev
+ linux-headers parted-dev skalibs-dev util-linux-dev
+
+ libcap libcap-dev libx11-dev libxkbfile-dev qt5-qtbase-dev"
+subpackages="$pkgname-image $pkgname-dbg $pkgname-dev $pkgname-doc $pkgname-qt5
+ $pkgname-tools $pkgname-wizard $pkgname-boot"
+source="https://distfiles.adelielinux.org/source/$pkgname-$pkgver.tar.xz
+ ppc32-apm.patch
+ "
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DBUILD_SHARED_LIBS=True \
+ -DBUILD_TOOLS=ON \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS -Wno-format-truncation -Wno-type-limits" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DUNSUPPORTED_NONFREE_FIRMWARE=ON \
+ -DINSTALL=ON \
+ ${CMAKE_CROSSOPTS} \
+ -Bbuild
+ make -C build
+
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DBUILD_SHARED_LIBS=False \
+ -DBUILD_TOOLS=OFF \
+ -DBUILD_UI=ON \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS -Wno-format-truncation" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DUNSUPPORTED_NONFREE_FIRMWARE=ON \
+ -DINSTALL=OFF \
+ ${CMAKE_CROSSOPTS} \
+ -Bbuild-wizard
+ make -C build-wizard
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
+}
+
+package() {
+ make DESTDIR="$pkgdir" -C build install
+}
+
+image() {
+ pkgdesc="Tools for generating images using HorizonScript"
+ depends="dracut mtools squashfs-tools xorriso"
+ mkdir -p "$subpkgdir"/usr/bin
+ mkdir -p "$subpkgdir"/usr/lib
+ mkdir -p "$subpkgdir"/usr/share/horizon
+
+ mv "$pkgdir"/usr/bin/hscript-image "$subpkgdir"/usr/bin/
+ mv "$pkgdir"/usr/lib/libhi-backends.so "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/share/horizon/iso "$subpkgdir"/usr/share/horizon/
+}
+
+qt5() {
+ pkgdesc="Qt 5 installation wizard for Adélie Linux"
+ depends="horizon"
+ mkdir -p "$subpkgdir"/etc/horizon
+ mkdir -p "$subpkgdir"/usr/bin
+ mkdir -p "$subpkgdir"/var/log/horizon
+
+ for _bin in horizon-ppc64-detect horizon-qt5 horizon-run-qt5; do
+ mv "$pkgdir"/usr/bin/$_bin "$subpkgdir"/usr/bin/
+ done
+
+ chmod 4755 "$subpkgdir"/usr/bin/horizon-run-qt5
+ chmod 1777 "$subpkgdir"/etc/horizon
+ /sbin/setcap cap_sys_time+ep "$subpkgdir"/usr/bin/horizon-qt5
+}
+
+tools() {
+ pkgdesc="Tools for authoring HorizonScript files"
+ mkdir -p "$subpkgdir"/usr/bin
+
+ for _bin in hscript-fromjson hscript-simulate hscript-validate; do
+ mv "$pkgdir"/usr/bin/$_bin "$subpkgdir"/usr/bin/
+ done
+}
+
+wizard() {
+ pkgdesc="Wizard to generate a HorizonScript for another computer"
+
+ make DESTDIR="$subpkgdir" -C "$builddir"/build-wizard install
+ rm -r "$subpkgdir"/usr/include
+ rm -r "$subpkgdir"/usr/lib
+ rm -r "$subpkgdir"/usr/share
+}
+
+boot() {
+ pkgdesc="Boot to Horizon"
+ depends="horizon-qt5 horizon kwin papirus-icons qt5ct sddm
+ netsurf partitionmanager xterm"
+
+ mkdir -p "$subpkgdir"/etc/init.d
+ mkdir -p "$subpkgdir"/etc/profile.d
+ mkdir -p "$subpkgdir"/etc/runlevels/graphical
+ mkdir -p "$subpkgdir"/etc/sddm.conf.d
+ mkdir -p "$subpkgdir"/etc/xdg/qt5ct
+ mkdir -p "$subpkgdir"/usr/bin
+ mkdir -p "$subpkgdir"/usr/share/qt5ct/qss
+ mkdir -p "$subpkgdir"/usr/share/xsessions
+
+ cat >"$subpkgdir"/etc/profile.d/horizon-qt5.sh <<PROFILE
+#!/bin/sh
+export QT_QUICK_BACKEND=software
+export QT_QPA_PLATFORMTHEME=qt5ct
+PROFILE
+ chmod 755 "$subpkgdir"/etc/profile.d/horizon-qt5.sh
+ cat >"$subpkgdir"/etc/xdg/kdeglobals <<GLOBALS
+[General]
+ColorScheme=Steel
+
+[Icons]
+Theme=Papirus
+
+[WM]
+activeBackground=104,0,0
+GLOBALS
+
+ install -D -m644 "$builddir"/boot/horizon.sddm.conf \
+ "$subpkgdir"/etc/sddm.conf.d/horizon.conf
+
+ install -D -m755 "$builddir"/boot/gfxdetect \
+ "$subpkgdir"/etc/init.d/gfxdetect
+
+ ln -s ../../init.d/gfxdetect \
+ "$subpkgdir"/etc/runlevels/graphical/gfxdetect
+
+ install -D -m755 "$builddir"/boot/start-horizon-qt5 \
+ "$subpkgdir"/usr/bin/start-horizon-qt5
+
+ install -D -m644 "$builddir"/boot/kwinrc \
+ "$subpkgdir"/etc/xdg/kwinrc
+
+ install -D -m644 "$builddir"/boot/qt5ct.conf \
+ "$subpkgdir"/etc/xdg/qt5ct/qt5ct.conf
+ install -D -m644 "$builddir"/boot/horizon.qss \
+ "$subpkgdir"/usr/share/qt5ct/qss/horizon.qss
+
+ install -D -m644 "$builddir"/boot/horizon-session.desktop \
+ "$subpkgdir"/usr/share/xsessions/horizon.desktop
+}
+
+sha512sums="270926f74450f3250ae168fd31fd897a0bf0e444d0fb9753ebdc571157c89e873e13ed80030d93f5b470cc1876d2f9f00527ad0df2a0d15798dc6fbd4fe0641d horizon-0.9.9.1.tar.xz
+f3977cf247436301a2f8975859f888ee24ac305f7389317a4642f07d3dd6e30cea7f9076392f35187d034c6fcb7d5c4575ba007b50fc5e24577c0debd3c4a410 ppc32-apm.patch"
diff --git a/user/horizon/ppc32-apm.patch b/user/horizon/ppc32-apm.patch
new file mode 100644
index 000000000..caa5d3189
--- /dev/null
+++ b/user/horizon/ppc32-apm.patch
@@ -0,0 +1,29 @@
+From 02bab111a473e6bc45c4c95e8f17634b42e0fba9 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Sat, 21 Dec 2024 19:18:53 -0600
+Subject: [PATCH] Qt UI: Count APM partitions correctly on PPC32
+
+The fix we did in 5df1abdb74 is not complete; we use APM on 32-bit
+PowerPC machines as well. We need to do the same workaround on PPC32
+that we do on PPC64 Power Macs.
+
+Fixes: 5df1abdb74 ("Qt UI: Fix partition count for APM disklabel")
+---
+ ui/qt5/horizonwizard.cc | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/ui/qt5/horizonwizard.cc b/ui/qt5/horizonwizard.cc
+index 81ddcdc..9cc0690 100644
+--- a/ui/qt5/horizonwizard.cc
++++ b/ui/qt5/horizonwizard.cc
+@@ -409,6 +409,7 @@ QStringList eraseDiskForArch(const std::string &raw_disk,
+ case HorizonWizard::x86_64: /* 64-bit Intel uses GPT */
+ return {QString{"disklabel %1 gpt"}.arg(disk)};
+ case HorizonWizard::ppc: /* 32-bit PowerPC: we only support Power Mac */
++ (*start)++;
+ return {QString{"disklabel %1 apm"}.arg(disk)};
+ case HorizonWizard::ppc64: /* Complicated */
+ switch(subarch) {
+--
+2.40.0
+
diff --git a/user/htop/APKBUILD b/user/htop/APKBUILD
index 2dc87cfa7..aba5d2c6b 100644
--- a/user/htop/APKBUILD
+++ b/user/htop/APKBUILD
@@ -1,37 +1,39 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=htop
-pkgver=2.2.0
+pkgver=3.4.0_git20240813
+_pkgcommit=59578afd5e5856e2b017d40e20ebe32102f123aa
pkgrel=0
pkgdesc="Interactive process viewer"
-url="http://hisham.hm/htop"
+url="https://htop.dev/"
arch="all"
options="!check" # No test suite.
license="GPL-2.0+"
depends=""
-makedepends="ncurses-dev python3"
+makedepends="autoconf automake libexecinfo-dev ncurses-dev python3"
subpackages="$pkgname-doc"
-source="http://hisham.hm/htop/releases/$pkgver/$pkgname-$pkgver.tar.gz
- fix-python-path.patch"
+#source="https://github.com/htop-dev/htop/releases/download/$pkgver/$pkgname-$pkgver.tar.xz"
+source="${pkgname}-${_pkgcommit}.tar.gz::https://github.com/htop-dev/${pkgname}/archive/${_pkgcommit}.tar.gz"
+builddir="$srcdir"/${pkgname}-${_pkgcommit}
+
+prepare() {
+ default_prepare
+ ./autogen.sh
+}
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lexecinfo" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var \
- --enable-cgroup \
- --enable-taskstats
+ --localstatedir=/var
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="ec1335bf0e3e0387e5e50acbc508d0effad19c4bc1ac312419dc97b82901f4819600d6f87a91668f39d429536d17304d4b14634426a06bec2ecd09df24adc62e htop-2.2.0.tar.gz
-16358bcd6d83181cc04dd8a7971f7cc0804dc49995208bad2042bcca7962f562bbd008c2185f24aa6186c58896e94e4ec02e2053dc46ed14789889d64836b679 fix-python-path.patch"
+sha512sums="0cca8d0947e45875d15a6a18b5959a37a76d4a14ff77ceb2840d446d2dd58814cc80bfa34da4f58949076980cd695a77ad9f12464964937b8f7bcc6328d3e551 htop-59578afd5e5856e2b017d40e20ebe32102f123aa.tar.gz"
diff --git a/user/htop/fix-python-path.patch b/user/htop/fix-python-path.patch
deleted file mode 100644
index 4d11bfb4a..000000000
--- a/user/htop/fix-python-path.patch
+++ /dev/null
@@ -1,8 +0,0 @@
---- a/scripts/MakeHeader.py
-+++ b/scripts/MakeHeader.py
-@@ -1,4 +1,4 @@
--#!/usr/bin/env python
-+#!/usr/bin/env python3
- import os, sys, string, io
- try:
- from StringIO import StringIO
diff --git a/user/http-parser/APKBUILD b/user/http-parser/APKBUILD
index fd3fb7da4..cc6281b98 100644
--- a/user/http-parser/APKBUILD
+++ b/user/http-parser/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=http-parser
-pkgver=2.9.1
+pkgver=2.9.4
pkgrel=0
pkgdesc="Library for parsing HTTP messages in C"
url=" "
@@ -11,21 +11,21 @@ depends=""
depends_dev=""
makedepends="$depends_dev"
subpackages="$pkgname-dev"
-source="http-parser-$pkgver.tar.gz::https://github.com/nodejs/http-parser/archive/v$pkgver.tar.gz"
+source="http-parser-$pkgver.tar.gz::https://github.com/nodejs/http-parser/archive/v$pkgver.tar.gz
+ remove-bogus-sizeof-test.patch
+ "
build() {
- cd "$builddir"
make
}
check() {
- cd "$builddir"
true # tested as part of build.
}
package() {
- cd "$builddir"
make PREFIX=/usr DESTDIR="$pkgdir" install
}
-sha512sums="110a1861666cdd45857c3ab0e9bf8a3eb9d98f86fe001f7c620009e13186377de805d295f7751921cd5c9d4c2781807b3ae00f939af04d7365a3a45aa20b5052 http-parser-2.9.1.tar.gz"
+sha512sums="b45df7b94d1c51079d44687d0a7f901f44faae51df4e84c7e3fe38f130c2d809d0e7c2a146c57b3723e60732aededc246bf44eadb10a95b710963d641f9fe7cd http-parser-2.9.4.tar.gz
+aaf666728ab860a19398a631276d7caaf696d29bfbce39408bbcd65775f23d452e477af481333631b8dd07eacb8ba44fb4c58d1216dc5fb0dfac88062c7f478b remove-bogus-sizeof-test.patch"
diff --git a/user/http-parser/remove-bogus-sizeof-test.patch b/user/http-parser/remove-bogus-sizeof-test.patch
new file mode 100644
index 000000000..5f912fb5b
--- /dev/null
+++ b/user/http-parser/remove-bogus-sizeof-test.patch
@@ -0,0 +1,14 @@
+Upstream issues:
+https://github.com/nodejs/http-parser/issues/507
+https://github.com/nodejs/http-parser/pull/510
+
+--- http-parser-2.9.4/test.c 2020-03-24 05:54:06.000000000 -0500
++++ http-parser-2.9.4/test.c 2020-06-15 22:54:06.020315073 -0500
+@@ -4221,7 +4221,6 @@ main (void)
+ printf("http_parser v%u.%u.%u (0x%06lx)\n", major, minor, patch, version);
+
+ printf("sizeof(http_parser) = %u\n", (unsigned int)sizeof(http_parser));
+- assert(sizeof(http_parser) == 4 + 4 + 8 + 2 + 2 + 4 + sizeof(void *));
+
+ //// API
+ test_preserve_data();
diff --git a/user/humor-sans/APKBUILD b/user/humor-sans/APKBUILD
index af9ba8484..476f85c72 100644
--- a/user/humor-sans/APKBUILD
+++ b/user/humor-sans/APKBUILD
@@ -12,11 +12,9 @@ depends="fontconfig"
makedepends=""
subpackages=""
source="http://antiyawn.com/uploads/Humor-Sans-$pkgver.ttf"
-builddir="$srcdir"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ Humor-Sans-$pkgver.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ "$srcdir"/Humor-Sans-$pkgver.ttf
}
sha512sums="f0ed2f61f5cedb93ff955d9d5562fd110db750b6d4d91a74346ff94c16c87cac294c061e6ded97ffea372970912f51ee0792a611a6224cd3a38585812971b3dd Humor-Sans-1.0.ttf"
diff --git a/user/hunkyfonts/APKBUILD b/user/hunkyfonts/APKBUILD
index c8c2411a5..714812e7b 100644
--- a/user/hunkyfonts/APKBUILD
+++ b/user/hunkyfonts/APKBUILD
@@ -14,8 +14,7 @@ subpackages=""
source="https://downloads.sourceforge.net/hunkyfonts/hunkyfonts-$pkgver.tar.bz2"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ TTF/*.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ "$builddir"/TTF/*.ttf
}
sha512sums="0e9a5cff20c467ae441c442f269d3b8a9ea5d2534cbabcf08f65a594121840727003bdb038981e983430602306147e5dca146503b310a742d3c6e44d36ae7375 hunkyfonts-0.3.1.tar.bz2"
diff --git a/user/hunspell/APKBUILD b/user/hunspell/APKBUILD
index 6222d58a5..ec63c5414 100644
--- a/user/hunspell/APKBUILD
+++ b/user/hunspell/APKBUILD
@@ -1,23 +1,27 @@
-# Maintainer:
+# Maintainer:
pkgname=hunspell
pkgver=1.7.0
-pkgrel=0
+pkgrel=1
pkgdesc="Spell checker and morphological analyzer library and program"
url="https://hunspell.github.io/"
arch="all"
license="GPL-2.0+ AND LGPL-2.0+ AND MPL-1.1"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+depends=""
makedepends="ncurses-dev autoconf automake libtool"
-source="$pkgname-$pkgver.tar.gz::https://github.com/hunspell/hunspell/archive/v$pkgver.tar.gz"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="$pkgname-$pkgver.tar.gz::https://github.com/hunspell/hunspell/archive/v$pkgver.tar.gz
+ CVE-2019-16707.patch"
+
+# secfixes:
+# 1.7.0-r1:
+# - CVE-2019-16707
prepare() {
- cd "$builddir"
default_prepare
autoreconf -vif
}
build() {
- cd "$builddir"
LIBS="-ltinfo" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,13 +33,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
}
-sha512sums="8149b2e8b703a0610c9ca5160c2dfad3cf3b85b16b3f0f5cfcb7ebb802473b2d499e8e2d0a637a97a37a24d62424e82d3880809210d3f043fa17a4970d47c903 hunspell-1.7.0.tar.gz"
+sha512sums="8149b2e8b703a0610c9ca5160c2dfad3cf3b85b16b3f0f5cfcb7ebb802473b2d499e8e2d0a637a97a37a24d62424e82d3880809210d3f043fa17a4970d47c903 hunspell-1.7.0.tar.gz
+e7674819a9da4c3d742d34338d68d137d8613f97be2d25bf20db5219d4dd626f59a63ed4757b92f34307f499f2d687014065cdea97b55c98db295a8290300d2d CVE-2019-16707.patch"
diff --git a/user/hunspell/CVE-2019-16707.patch b/user/hunspell/CVE-2019-16707.patch
new file mode 100644
index 000000000..649eef5b2
--- /dev/null
+++ b/user/hunspell/CVE-2019-16707.patch
@@ -0,0 +1,22 @@
+From ac938e2ecb48ab4dd21298126c7921689d60571b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
+Date: Tue, 12 Nov 2019 20:03:15 +0000
+Subject: [PATCH] invalid read memory access #624
+
+---
+ src/hunspell/suggestmgr.cxx | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/hunspell/suggestmgr.cxx b/src/hunspell/suggestmgr.cxx
+index dba084e9..c23f165a 100644
+--- a/src/hunspell/suggestmgr.cxx
++++ b/src/hunspell/suggestmgr.cxx
+@@ -2040,7 +2040,7 @@ int SuggestMgr::leftcommonsubstring(
+ int l2 = su2.size();
+ // decapitalize dictionary word
+ if (complexprefixes) {
+- if (su1[l1 - 1] == su2[l2 - 1])
++ if (l1 && l2 && su1[l1 - 1] == su2[l2 - 1])
+ return 1;
+ } else {
+ unsigned short idx = su2.empty() ? 0 : (su2[0].h << 8) + su2[0].l;
diff --git a/user/hwdata/APKBUILD b/user/hwdata/APKBUILD
new file mode 100644
index 000000000..3fe37795a
--- /dev/null
+++ b/user/hwdata/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=hwdata
+pkgver=0.385
+pkgrel=0
+pkgdesc="Databases of hardware identification and configuration data"
+url="https://github.com/vcrhonek/hwdata"
+arch="noarch"
+options="!check" # running tests creates dependency loop
+license="GPL-2.0-only"
+depends=""
+checkdepends="pciutils python3"
+makedepends=""
+subpackages=""
+source="hwdata-$pkgver.tar.gz::https://github.com/vcrhonek/hwdata/archive/refs/tags/v$pkgver.tar.gz"
+replaces="hwids hwids-net hwids-pci hwids-udev hwids-usb"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ ln -s /usr/bin/python3 python
+ PATH="$PATH:." make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="713274b6e938383bb27fa20dcc9f77a73b462366f6ae33eaa6f7d2e089a69f0d9c03b90a59c1302fdffa642da953435f1f13e3eb21b6521c2cf304c701aa83a6 hwdata-0.385.tar.gz"
diff --git a/user/hwids/APKBUILD b/user/hwids/APKBUILD
deleted file mode 100644
index 1fcbe079d..000000000
--- a/user/hwids/APKBUILD
+++ /dev/null
@@ -1,70 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=hwids
-pkgver=20190316
-pkgrel=0
-pkgdesc="Hardware identification databases"
-url="https://github.com/gentoo/hwids/"
-arch="noarch"
-options="!check" # No test suite, just databases.
-license="BSD-3-Clause OR GPL-2.0+"
-makedepends="eudev-dev"
-subpackages="$pkgname-net $pkgname-pci $pkgname-udev $pkgname-usb"
-depends="$subpackages"
-subpackages="$subpackages $pkgname-doc"
-source="https://github.com/gentoo/hwids/archive/hwids-$pkgver.tar.gz"
-builddir="$srcdir/hwids-hwids-$pkgver"
-
-build() {
- cd "$builddir"
- make UDEV=yes
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" DOCDIR="/usr/share/doc/$pkgname-$pkgver" \
- MISCDIR="/usr/share/hwdata" UDEV=yes install
-}
-
-_mv() {
- local _file
- pkgdesc="$pkgdesc ($1)"
- shift
- depends=""
- mkdir -p "$subpkgdir"/usr/share/hwdata
- for _file in $*; do
- mv "$pkgdir"/usr/share/hwdata/$_file "$subpkgdir"/usr/share/hwdata
- done
-}
-
-usb() {
- replaces="hwdata-usb"
- provides="hwdata-usb=$pkgver-r$pkgrel"
- _mv "USB IDs" usb.ids
-}
-
-pci() {
- replaces="hwdata-pci"
- provides="hwdata-pci=$pkgver-r$pkgrel"
- _mv "PCI IDs" pci.ids
-}
-
-net() {
- replaces="hwdata-oui"
- provides="hwdata-oui=$pkgver-r$pkgrel"
- license="Public-Domain"
- _mv "Networking OUIs" oui.txt iab.txt
-}
-
-udev() {
- install_if="hwids=$pkgver-r$pkgrel eudev"
- install_if="hwids-pci=$pkgver-r$pkgrel eudev"
- install_if="hwids-usb=$pkgver-r$pkgrel eudev"
- pkgdesc="$pkgdesc (udev integration)"
-
- mkdir -p "$subpkgdir"/
- mv "$pkgdir"/lib "$subpkgdir"/
- mv "$pkgdir"/etc "$subpkgdir"/
-}
-
-sha512sums="6db50577b5d29d73f1dc0a44d0b74320cb0df186b9850160b15a6e8f2bcbdbf8193bae4146f81a5afc6b0e05706b5286b4b5858eb028d6c58ea4582df61d232e hwids-20190316.tar.gz"
diff --git a/user/hyfetch/APKBUILD b/user/hyfetch/APKBUILD
new file mode 100644
index 000000000..990857b46
--- /dev/null
+++ b/user/hyfetch/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Zach van Rijn <me@zv.io>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=hyfetch
+pkgver=1.4.11
+pkgrel=0
+pkgdesc="Neofetch with LGBTQ+ pride flags!"
+url="https://github.com/hykilpikonna/hyfetch"
+arch="noarch"
+options="!check" # no test suite
+license="MIT"
+depends="bash python3"
+makedepends="python3"
+provides="neofetch"
+replaces="neofetch"
+subpackages="$pkgname-doc"
+source="$pkgname-$pkgver.tar.gz::https://github.com/hykilpikonna/hyfetch/archive/refs/tags/$pkgver.tar.gz
+ python3.patch
+ no-typing-extensions.patch
+ "
+
+build() {
+ # this builds hyfetch; neofetch does not need to be "built"
+ make
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+ make DESTDIR="$pkgdir" install-neofetch install-doc
+}
+
+sha512sums="13c757fed68c9aa1caa503553d6d29c0b68284029090b970b863dec3240dabb28a852ef0ec0f2742c6c268e30a15c48018a651e74ba0e6782b5aa14f2b1d1312 hyfetch-1.4.11.tar.gz
+059f8e8293ae82c209e67b059f13e277ce10cc6bf96e6bc1f1459a79f986f733c24ea2b7a5ac1d871432359d5d8154622562de506624be353f8aa7d8561179d7 python3.patch
+4a983329d3bd3165eca86ce8c907945178becba0fd7d4b6381adab64c92938d52225a349325931ff69e7fa87f9c529d6d9758f00170dcbb375ea4e44aeb0e403 no-typing-extensions.patch"
diff --git a/user/hyfetch/no-typing-extensions.patch b/user/hyfetch/no-typing-extensions.patch
new file mode 100644
index 000000000..196a30dba
--- /dev/null
+++ b/user/hyfetch/no-typing-extensions.patch
@@ -0,0 +1,21 @@
+diff -ur a/hyfetch/types.py b/hyfetch/types.py
+--- a/hyfetch/types.py 2023-12-04 14:12:43.498520221 -0600
++++ b/hyfetch/types.py 2023-12-04 14:14:58.530114564 -0600
+@@ -1,4 +1,4 @@
+-from typing_extensions import Literal
++from typing import Literal
+
+ AnsiMode = Literal['default', 'ansi', '8bit', 'rgb']
+ LightDark = Literal['light', 'dark']
+diff -ur a/setup.py b/setup.py
+--- a/setup.py 2023-12-04 14:12:43.498520221 -0600
++++ b/setup.py 2023-12-04 14:13:04.931087575 -0600
+@@ -37,7 +37,7 @@
+ include_package_data=True,
+ install_requires=[
+ # Universal dependencies
+- 'setuptools', 'typing_extensions',
++ 'setuptools',
+
+ # Windows dependencies
+ 'psutil ; platform_system=="Windows"',
diff --git a/user/hyfetch/python3.patch b/user/hyfetch/python3.patch
new file mode 100644
index 000000000..28256fdbe
--- /dev/null
+++ b/user/hyfetch/python3.patch
@@ -0,0 +1,16 @@
+diff -ur a/Makefile b/Makefile
+--- a/Makefile 2023-12-04 13:31:47.347258438 -0600
++++ b/Makefile 2023-12-04 13:31:56.611544557 -0600
+@@ -4,10 +4,10 @@
+ all: build
+
+ build:
+- python setup.py build
++ python3 setup.py build
+
+ install:
+- python setup.py install --prefix=${PREFIX}
++ python3 setup.py install --prefix=${PREFIX}
+
+ install-doc:
+ @mkdir -p $(DESTDIR)$(MANDIR)/man1
diff --git a/user/hyperfine/APKBUILD b/user/hyperfine/APKBUILD
new file mode 100644
index 000000000..ee21cbd2a
--- /dev/null
+++ b/user/hyperfine/APKBUILD
@@ -0,0 +1,376 @@
+# Contributor: Zach van Rijn <me@zv.io>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=hyperfine
+pkgver=1.19.0
+pkgrel=0
+pkgdesc="A command-line benchmarking tool"
+url="https://github.com/sharkdp/hyperfine"
+arch="all"
+license="Apache-2.0 OR MIT"
+depends=""
+makedepends="cargo"
+subpackages=""
+source="hyperfine-$pkgver.tar.gz::https://github.com/sharkdp/hyperfine/archive/refs/tags/v$pkgver.tar.gz"
+
+# dependencies taken from Cargo.lock
+cargo_deps="
+ahash 0.7.8
+aho-corasick 1.1.3
+anstream 0.6.18
+anstyle 1.0.10
+anstyle-parse 0.2.6
+anstyle-query 1.1.2
+anstyle-wincon 3.0.6
+anyhow 1.0.93
+approx 0.5.1
+arrayvec 0.7.6
+assert_cmd 2.0.16
+autocfg 0.1.8
+autocfg 1.4.0
+bitflags 1.3.2
+bitflags 2.6.0
+bitvec 1.0.1
+borsh 1.5.2
+borsh-derive 1.5.2
+bstr 1.10.0
+bytecheck 0.6.12
+bytecheck_derive 0.6.12
+byteorder 1.5.0
+bytes 1.8.0
+cfg-if 1.0.0
+cfg_aliases 0.2.1
+clap 4.5.20
+clap_builder 4.5.20
+clap_complete 4.5.37
+clap_lex 0.7.2
+cloudabi 0.0.3
+colorchoice 1.0.3
+colored 2.1.0
+console 0.15.8
+csv 1.3.1
+csv-core 0.1.11
+difflib 0.4.0
+doc-comment 0.3.3
+encode_unicode 0.3.6
+equivalent 1.0.1
+errno 0.3.9
+fastrand 2.2.0
+float-cmp 0.9.0
+fuchsia-cprng 0.1.1
+funty 2.0.0
+getrandom 0.2.15
+hashbrown 0.12.3
+hashbrown 0.15.1
+indexmap 2.6.0
+indicatif 0.17.4
+instant 0.1.13
+is_terminal_polyfill 1.70.1
+itoa 1.0.11
+lazy_static 1.5.0
+libc 0.2.162
+linux-raw-sys 0.4.14
+memchr 2.7.4
+nix 0.29.0
+normalize-line-endings 0.3.0
+num 0.2.1
+num-bigint 0.2.6
+num-complex 0.2.4
+num-integer 0.1.46
+num-iter 0.1.45
+num-rational 0.2.4
+num-traits 0.2.19
+number_prefix 0.4.0
+once_cell 1.20.2
+portable-atomic 1.9.0
+ppv-lite86 0.2.20
+predicates 3.1.2
+predicates-core 1.0.8
+predicates-tree 1.0.11
+proc-macro-crate 3.2.0
+proc-macro2 1.0.89
+ptr_meta 0.1.4
+ptr_meta_derive 0.1.4
+quote 1.0.37
+radium 0.7.0
+rand 0.6.5
+rand 0.8.5
+rand_chacha 0.1.1
+rand_chacha 0.3.1
+rand_core 0.3.1
+rand_core 0.4.2
+rand_core 0.6.4
+rand_hc 0.1.0
+rand_isaac 0.1.1
+rand_jitter 0.1.4
+rand_os 0.1.3
+rand_pcg 0.1.2
+rand_xorshift 0.1.1
+rdrand 0.4.0
+regex 1.11.1
+regex-automata 0.4.8
+regex-syntax 0.8.5
+rend 0.4.2
+rkyv 0.7.45
+rkyv_derive 0.7.45
+rust_decimal 1.36.0
+rustix 0.38.40
+ryu 1.0.18
+seahash 4.1.0
+serde 1.0.214
+serde_derive 1.0.214
+serde_json 1.0.132
+shell-words 1.1.0
+simdutf8 0.1.5
+statistical 1.0.0
+strsim 0.11.1
+syn 1.0.109
+syn 2.0.87
+tap 1.0.1
+tempfile 3.14.0
+terminal_size 0.4.0
+termtree 0.4.1
+thiserror 2.0.3
+thiserror-impl 2.0.3
+tinyvec 1.8.0
+tinyvec_macros 0.1.1
+toml_datetime 0.6.8
+toml_edit 0.22.22
+unicode-ident 1.0.13
+unicode-width 0.1.14
+utf8parse 0.2.2
+uuid 1.11.0
+version_check 0.9.5
+wait-timeout 0.2.0
+wasi 0.11.0+wasi-snapshot-preview1
+winapi 0.3.9
+winapi-i686-pc-windows-gnu 0.4.0
+winapi-x86_64-pc-windows-gnu 0.4.0
+windows-sys 0.48.0
+windows-sys 0.52.0
+windows-sys 0.59.0
+windows-targets 0.48.5
+windows-targets 0.52.6
+windows_aarch64_gnullvm 0.48.5
+windows_aarch64_gnullvm 0.52.6
+windows_aarch64_msvc 0.48.5
+windows_aarch64_msvc 0.52.6
+windows_i686_gnu 0.48.5
+windows_i686_gnu 0.52.6
+windows_i686_gnullvm 0.52.6
+windows_i686_msvc 0.48.5
+windows_i686_msvc 0.52.6
+windows_x86_64_gnu 0.48.5
+windows_x86_64_gnu 0.52.6
+windows_x86_64_gnullvm 0.48.5
+windows_x86_64_gnullvm 0.52.6
+windows_x86_64_msvc 0.48.5
+windows_x86_64_msvc 0.52.6
+winnow 0.6.20
+wyz 0.5.1
+zerocopy 0.7.35
+zerocopy-derive 0.7.35
+"
+
+source="$source $(echo "$cargo_deps" | sed -E 's#^([^ ]+) ([^ ]+)$#\1-\2.tar.gz::https://crates.io/api/v1/crates/\1/\2/download#g')"
+
+prepare() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ export CARGO_VENDOR="$CARGO_HOME/adelie"
+
+ (builddir=$srcdir; default_prepare)
+
+ mkdir -p "$CARGO_VENDOR"
+ cat <<- EOF > "$CARGO_HOME/config"
+ [source.adelie]
+ directory = "${CARGO_VENDOR}"
+
+ [source.crates-io]
+ replace-with = "adelie"
+ local-registry = "/nonexistant"
+ EOF
+
+ echo "$cargo_deps" | while read -r _dep _ver; do
+ [ -n "$_dep" ] || continue
+ _dep="$_dep-$_ver"
+ ln -s "$srcdir/$_dep" "$CARGO_VENDOR/$_dep"
+ _sum=$(sha256sum "$srcdir/$_dep.tar.gz" | cut -d' ' -f1)
+ cat <<- EOF > "$CARGO_VENDOR/$_dep/.cargo-checksum.json"
+ {
+ "package":"$_sum",
+ "files":{}
+ }
+ EOF
+ done
+}
+
+build() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ cargo build --release -j $JOBS
+}
+
+check() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ export PATH="$PATH:$srcdir/$pkgname-$pkgver/hyperfine/target/release"
+ cargo test -j $JOBS --release
+}
+
+package() {
+ install -Dm755 target/release/hyperfine -t "$pkgdir"/usr/bin/
+}
+
+sha512sums="91e3b497844944bc11afaba07488dac9803b145d69259064c9a510cf76039baa2e025751743bf3230d114b31d7eb46e017c99d38506f0b6fcf2b9a3623352e8e hyperfine-1.19.0.tar.gz
+63677b2001d633ecabb36c08bd92e00b5fa71f24aed1c4601d12d846ea06aeaf093c37cfe1f6642147800caa6c749e9a202aa21f9ab4799efa379ad0d952a2ee ahash-0.7.8.tar.gz
+ba422a54688c4678fcf16e34fdf3ed06c333e6e3fc8b75af9272a215add494d43ebaef319021134b61327fd5d3572aec0dc655b714ffb3bc71ba3c265c9ebb69 aho-corasick-1.1.3.tar.gz
+5149977d6f7b5e9cf6350f1ef130caa3ff46c7e78976358452a185ce196cdd77fee48a3a9838f434ae6ea9c15b19f6bfbab156edf819f81179d6774318f08963 anstream-0.6.18.tar.gz
+621e7a89fad13db985f07375d316cf8efba57fd44ae18628a8049a65aefbaef27949f99317872e91e0922bb089a00234055199ea3167f80ae03d00ada4f75dea anstyle-1.0.10.tar.gz
+e28c9818afcda0e9b84c205d9c6697ce64cb06c21df2c3666869c07d66893105d9c5e96a27fcf2410a09f6af00735252e22b5c7d8c6cb3f68c4a8f376c49d396 anstyle-parse-0.2.6.tar.gz
+26069d936c4b1fb09bc65cda0253fe9be8fa4e96c0821f980c772602b4e9230035ec8c9d092ef95e0a0354ac559f8d25f57a14c34086d4d241b5fba688951837 anstyle-query-1.1.2.tar.gz
+59ec6f5a53bd68b6344d82e923eb8c45ddac481dd0d270a7b452dc5b0540ee1656705697c1508942ecc131e7c075248c85d8f4159f27d97ea94f22469ce2eeb5 anstyle-wincon-3.0.6.tar.gz
+237b36bdefeaf8dd2f7d4c5c92d8f7627a5206ded5fa3dafd5710f2fbd3dd7d7187d4a8ae917ae03d0cf06bc8d101a7663bb7bb022507ac1ec88577a37475efc anyhow-1.0.93.tar.gz
+c6d768496c974b6ff4cf7ad8e65f3fc9faf29a1957da497968ee112c6a0b9d7a0ff9a2579206e864976c0f65ed2190bc9d2b63b31a09ced7b57879e207c46407 approx-0.5.1.tar.gz
+b1f320746018a7f32340a833420089446ec5cefb7f299b4506eab7423d5db49f00b72d8aa8c6600f9159b9480d5eb3ce69407d93f5c9934147860c83e4d6eca8 arrayvec-0.7.6.tar.gz
+0b9167282d75169b0b1fad0b1401b42884185976ae0dd690851671aedbc1a9af26dd33f3047400eb4a1b5070216acc293aade149aded7e4f86dd5c0ef0e9a6a9 assert_cmd-2.0.16.tar.gz
+d6156e0a8701f38c20b693380ed1ac5b15f84bc87c5ae0541483b9b387e6118d8673d8e5da5f4eee4d736c777e923d3fba7f61589a49c353170a708a709d8db5 autocfg-0.1.8.tar.gz
+3b5e7c30bc73e105e4bfcab584c24fc4016db41fac9c356c6649fd841051704bbe8848e09546eb50d7c1f18ea8ce1cb72fbc268a620d5c609b3472114b5be73c autocfg-1.4.0.tar.gz
+3c698f757b5cc62f815f9a1cce365c3d2dd88e4db71f331dff8bba86c2865f755b81cb4c9bfc59bd86b7643b0943f9e09a7c4f8ad75eb2ab0e714803d0129f62 bitflags-1.3.2.tar.gz
+f9bb3c48931ed7e7e05ec6d13305af5da6b6c18861ff307d7dc17c658f63972c87b70b0527287b3625c8592befc207cfe15550654995faf3862bb12a6d95bacf bitflags-2.6.0.tar.gz
+83d643c5aca020ebbe9094b5aaba6a796e7c3c509228a4348444e57a06bc3a5dd042eed57a2254d91661e73bdab2bc0d1bd02be376906acc6b6d75b5354a8d8e bitvec-1.0.1.tar.gz
+3500f00806cd26cd7431f9a3d097cb0f30fb4b0fe1bf0346978cfbdd07915e31cb8bc6721426bb365351a9e89ec8b7c6397c87c966852c8f4d00862fc7b4a7ce borsh-1.5.2.tar.gz
+f3a9b1d588eb7e6147a63560d71557622f6b947728b926a25aa85bd56c26a4648dc96bf60875531fffee23c13235b6b412f3386f0ab9e454f4915af7ce66773a borsh-derive-1.5.2.tar.gz
+823abdbda9b13802facc7d6b1ed9ad809ed3b0b827d26e418348ffb8481b5f5735f129c5a9a8c7b2ab010d7f32ca57cba69a1ee10a64225c54c6ceacd22c05d2 bstr-1.10.0.tar.gz
+49a85f9bbfe8bccceffcd94e3eac1f4407d93159358428ea07652714e06e97fbcb41f22f72d9d10318bc9a019be8afc99727764162f18e8de01ea4069f44dda6 bytecheck-0.6.12.tar.gz
+57f8480ddb76d8620095962acd203231fb7938c0caf9c216d89466f22464a6970f13adca5f4d5b10c9e1ec99d6e0b260ba7586c2bb895fad0380f8f9ac9a4fc8 bytecheck_derive-0.6.12.tar.gz
+96caf981177f6ded9f27f025922cb94eb0cd9de5303bd91680099912d922092e77b7361efa70011e84f1595e443193e4f1b354443b9980c123f6ae573b236f7f byteorder-1.5.0.tar.gz
+a721724e5cbfc73b79102a9c4a00fc9da520417819ca5c82b798c8cfb45af3d77b33f7035ad33d6187399c613cc2e83644236ac772aec934f521f87d4680059a bytes-1.8.0.tar.gz
+0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff cfg-if-1.0.0.tar.gz
+74969d12d5d24002a29e08d52e30fbce014dd481a7c35ee0162e69333c5f2d7755f3b02439b31522e12444cf1ac8e65880ce33fe6778dac03757e362cbf8a72c cfg_aliases-0.2.1.tar.gz
+e432a118a2ec15b273a404c3cb75bbe579b11034ba55def1823d4670c6553e3d8611074a24f50a0f4adc8bda184213b06106c44c68a19d267342c53e345351d4 clap-4.5.20.tar.gz
+e914c8b6592f9d230b4f4290cf4b4d73d0160c12a1fa3976c74bad21ff16da532d6af792f0a33fa472166f1cd551291b5d1d71fe8b359040040418694ec52000 clap_builder-4.5.20.tar.gz
+5c864ea85f0823ec91a1c9693720853dd5bc5804daee9a0607bf14e9f5fe40b536bdb3b935d1e96e535d896a272d7fa1f99eba6983ec94bb630ab0c36cefbabb clap_complete-4.5.37.tar.gz
+a8726397e5372fca3389748efdfdbd016b6baedad5b4bd95f33e4e820d4f40e0b94c88b1918ded3678aecf23911028e2261837e73d58ba7fd6f091eb47267380 clap_lex-0.7.2.tar.gz
+691ed793e9b35ba382f03897f4c0efc31a528394862a27b814ba8993ad30bbe0ebc9808484baf580e8b69d9c13ad1612776a1efd0f6981545b420139ff83592c cloudabi-0.0.3.tar.gz
+fc26696189d3935d5510a1237504339c1f354d03ffd3b4e830b7080335aa778bc72787ac5fa9a67a731b9bde2788da778d497f2ef97ec68bdec5145fedf4cd14 colorchoice-1.0.3.tar.gz
+fa70f18fb29f6870a727d8243808c96e9497f8302f5f2b1748f9d9e396031e9c53a025b8edc9c8c9a0f8cfca12e5da73250a71e382b3074e9415b85bc004769e colored-2.1.0.tar.gz
+b05e49ed145785e29631d481885788f0cc5574d4d7c4d90280dfedaee7f8c1515072c9c4cfe6bd2e017230cd228157222af7e7d41a9fce697cd1888095df4de9 console-0.15.8.tar.gz
+6b0be5e017b2b2cb926d11d7a36cdae1bf0ddb56165127f25f6fd55956f95a572ed7e054f863610e91c9c2329f5af0eee9678f9020644800587d6daa5a94755b csv-1.3.1.tar.gz
+0445c8a4d4d0f90f03e5d6507c26454aaeac0b355fb39d19e1676a7cb27b4372db3541367ce838d38151862b7bfbf19750cb550e24e74ab5e07ae9bb4edeedee csv-core-0.1.11.tar.gz
+fcb57859424fea6958a4407061c421599fbca111357b1fe72faa65d8fb0b74425c993a24484e8414f475fa146cd8368c4f82e1ceb4e8dd9f95741149345b37a9 difflib-0.4.0.tar.gz
+e98ff9646a3612bd41bb6f278e7b6e9a0c58747f8b82524da814cf51b7f06c76ad4d65b502ac5740e818744abb295f78f15f8262d0b50ced1523f6d1a26939ba doc-comment-0.3.3.tar.gz
+64193d6ac75f66d58ed864169b5d6228ede36dcf100614395e086bc8e847a3ddd287734d88e8ed50f38c679a99c80ec68449175a67d8ee03b02ec1cfa9d55e77 encode_unicode-0.3.6.tar.gz
+b2bc60e804c1b02c461dcefcfd60fc37145af710d183ebe65f9a4d63f2b2072d23193f98dc550a9213c7fdc6a2a837af23b04a89294ebbb681a4aaf5d5031140 equivalent-1.0.1.tar.gz
+777fbac5730d420d58275ef63b7579997d8e6c72106d483ee1e3b1f1ce3977f1f66c56870a05acaa4cfacacb820eaf963e9c763748759cff3668fa2e6f89f04a errno-0.3.9.tar.gz
+de2835aee8d5380a6e1c0f627a876594626e1379f2f7dbd3ad0f785d7c3f3f82162c9c20a68417324506f78264cb9dbcfb2d4d5dc9ca666996150979738822e4 fastrand-2.2.0.tar.gz
+f8dad12ecf8a278769054fd78794999dae8dedbcfde5e77bdf6cea12fdeaadeeb2f1f3ca62df9aadc1bc3f61457236c4854d6d6923ad6d03ae7f23af600572e8 float-cmp-0.9.0.tar.gz
+ea9f5beb0dfcb023c22cfc2b37ce52dfcf3a2cbbed0f79ffffc332878858386805c65dce8469a431002367562d857a6c064e075688540c27fcb4056a110059d2 fuchsia-cprng-0.1.1.tar.gz
+691e1c275b648110ef42c4adece8178cf037bad40d469780280eb2ebe07aa4b0406737c5ba02c9f9f63ee57a99fec27e5e51712e2113655f7522c8678f689155 funty-2.0.0.tar.gz
+04789a53d3f4a84862e1e8b2113641af67e471b468de1222470d5e6cef0015232463a2cf3c3518dc2a533b3983b175a7c8922da00665bcf71c1e4e279b67e6fb getrandom-0.2.15.tar.gz
+b3700fcd659a21a6b9b3777c18b37a83bf25542b4e8f2b963779a122f5d22e1742c064cfc03e649583e7dd5c6e90ca8407f8c51a0e8755f6a108682853022f76 hashbrown-0.12.3.tar.gz
+8bdd4966b336f5d5b184cf14d4a7e625d184d8f3f0782845c746f374f92425055def71e64087fb3a3770fd9b2d9ed40310fa45f60e56d298accaf9c500add841 hashbrown-0.15.1.tar.gz
+c870348691f5acf97e7bff25c805e60f2e9db9e3ee7b3b939b7be45b6bcfaadee9880e6ad27adbbe2545865193655b5fa9de18487b7a1d030017b2fca48616ca indexmap-2.6.0.tar.gz
+54c92f028dc5aded5e1a947afc09c33930f0439d7ee55e9dca66ccc2af6860e7b67cd8153bbdb33dff962ffd03dc0004eace2e69135c11a867331f0ef3e9bf6d indicatif-0.17.4.tar.gz
+b7839431e8920c4c0841d0974eede75fc50f2bb7a9475664bd2c4ff6c558a10084e1c025e5be977c3364ae9112c365c0a6f480cb9b35ee4130ca2beebcf650a9 instant-0.1.13.tar.gz
+4730fa09401cb4e69c92b38b2b43afd74699c61f5bd7b37605efbc0c08ca7a1318d43e4a844e46e0f84f83f42432f01e33771be2b18eb5977702ab9f894837e1 is_terminal_polyfill-1.70.1.tar.gz
+7e22dffac34c9c9f432daef395e0ec710ed658164bc9cd9fc6445c9f984c912a10bac556214a026bcddbe27a3197b35b0c87d6709fd605062637d086b2d20311 itoa-1.0.11.tar.gz
+6d2f9887cd7f34f019644e42f02f2bf0111accd73aeaa60973ba0b039b6774670debece1ea9a6978e923208ef5d3ab7326473ee3560c078817f0f7ab8ed0f65f lazy_static-1.5.0.tar.gz
+f43e294d587e7cd9c2da9b67be83fc70801ea66c318342cf1e11556566ecc1c8a612925770d85c75af1e887b425f326fac59229b78877d2377092243ea8e6a99 libc-0.2.162.tar.gz
+28149660bd975ede05624af3582d5c78f498239f5d89713c2c32f5372fc16f4ca024dec35f81ea973a2cf986098890395dbda06ac6cf4ee29df3f9a0e11eaea7 linux-raw-sys-0.4.14.tar.gz
+8d0e8b9c30208897d4b1b920f1bdcccd0c2b75d92a06abe4a1b2407938768abb6487d63de56c6a80419798fe69517210643dfaf11f5f5540185f0eccf220adb2 memchr-2.7.4.tar.gz
+86c05084aa0e6238f8d48df0f5ce6e6d7661b589f4f3fbdad43387c59c0d6afafea4badf25d31db1611615de19a0b9ef18ce614846b79a47cad4e2c9367dbe7f nix-0.29.0.tar.gz
+f8e2a6e333b0e8972febe8b9cf058c8d899c384fd177e0b6ef1c5f94e0fa18192963970cb1a2ba80e3135a8cca66cdae6796e4d84ac6b325bb369575bdfc6eea normalize-line-endings-0.3.0.tar.gz
+9d094e0a29b2bb42d382d5167150418bc2ed81e8deb3c6636c99c86ca14abf5f69b82a49f1678dd110119eeaec2f476fe7a5d57e60558473a6b7c710dec7f778 num-0.2.1.tar.gz
+19c1ff0ae6fdfc690ccfe4fe6008c102e50ab9bf6b1f4e4f04a348d217d4d9d538585945466b72b70713053bcfd73685d1a907e41d135265d330bde996709eb8 num-bigint-0.2.6.tar.gz
+53be64d6f67b1ff7d0a4e1723ae21035abfd300ab27bed0976e0c3903fe8e29f47ffe75040832ee2f81da5c2f4f671d3d845d308365b9a5a989ace99a7d463ea num-complex-0.2.4.tar.gz
+e27986d91f6c6dc3d5a0900defe28ab5f47905cde3f84d0914b7acee076dca8fec6fdb7b631ac94d3a31eb01ecbc5854e51afc3187cd1abfa21e1bfafdc700ae num-integer-0.1.46.tar.gz
+6195c7bd5f904e9f0aeee3ce17b42c0383d053f9d37954a9ce3b4ff0a048afa121c9a37aa9c74b9ace7353d7fd9f57a7d04c7a18e1456fc2c4c298d8ecfd0172 num-iter-0.1.45.tar.gz
+06e55f17a1ea58fd465a232ebd687686c922669f0b561f648717164f3fcc8fe2bb43213d1e6377158d2542f633ef2e1482a7c3cef8090328c34feacf7f9bdd93 num-rational-0.2.4.tar.gz
+180018a5eceb45085e4e8d103ff21bb4d5079cea874c42a0ad4c76c99d275d434bbc1cc289f0cdec172866daa89dbfe0871410b2cc3407233fe1129786905956 num-traits-0.2.19.tar.gz
+a43b668d7314218b86ca7451daa9dfef71f6c9f6616bc34c12d94ae6030f182bcca9da83905cb46f3d49d0aa81385a787e92e4f3ae239658067adc249f8174df number_prefix-0.4.0.tar.gz
+bc6005bdab7a154c01e2203fb553a68695727475a9a882cf906d49c054ce886ad92cb491d380b6b9fe71a81b2fd690ce91c9a6cf8dfa8508470ac9acfc8a31c8 once_cell-1.20.2.tar.gz
+1431a4c092f6a0cb50bcc78488d603c8ba8f4ee697f77fdcfcce7002fcb371f52a321089422c76564fbf3277c48e30f889565747951c60360d95a6917bb6adeb portable-atomic-1.9.0.tar.gz
+6d171f63b42296f7765732fce3af7ea05d0d81f1541ffb3ad86e81210715ef4afe5bc9e58926e97e757aea6ff96a8012c8411eac78be0fd080898318ed21d7d1 ppv-lite86-0.2.20.tar.gz
+50896189f39842ef424aebc12c2633112fda83eba1bdeaa3e6f398db1e28dca0cc7838948f25e67f6fceede1a91a1b0ede5d4dc4edac6da752e48c7a07bbe3ae predicates-3.1.2.tar.gz
+8cfd010b70aa694620d6c573bd8ddc50ea16ba08f6c737902ba6697307af4510b9298ffcc3068b45bdc6430103db6fb4499783c64044d87d023bea46d45d0f7c predicates-core-1.0.8.tar.gz
+e1b08010f9cab65c75d82cc44cfdf64d92127acf6a72ee0ce1533e5d7d8027ccab912e1c499b7b78508b5e3cb20dc03df94de3dd520ae13736906a5f374b10cd predicates-tree-1.0.11.tar.gz
+41479ec5e414a8b05dffaa0ece21122387d5165a54e60d8ee3502f8a3c0a2ac0247f56996f933d5d77f1efe41a56bffe16874e8c6a34b66100cf047e4b760863 proc-macro-crate-3.2.0.tar.gz
+488ab38a04df1d0330309382a7e4f667238cbc9b4d513da6a8f5718f8a762f76cc122af67fefe8f4b021a286b3d23e3ec83d781fe6ac823042a6daf14d147e2f proc-macro2-1.0.89.tar.gz
+9936264dd52ae40e6afc8cef8914dbdc5767f397b91ea965d65275fe547a2d9cde7ccdcf908f787e25f84fbc23a2e30df895793fca308e09f48f2adf2e30d2bf ptr_meta-0.1.4.tar.gz
+15a72b2c36e9d1761c4dd42cee1623c2d85c52eadc3c3102c8334c14c9c5db9a43d74dbbab1d14a2600d789917fcb5bc2652877b172aaa02c37a6868462ff20e ptr_meta_derive-0.1.4.tar.gz
+c4ed21428c1f89cf22b85d80720a7869831a9c129d694617b0ce8c258278114ab98846f3f653abf736d1c86bc9224bbd695e9a7b06aa3adf292d02e1ef14cc05 quote-1.0.37.tar.gz
+51e23cf52997b46c0018a94b0259b29d7bf33ddba19f6db406ca57ee5b1417d7e5f27dda3bb487d0099886011a97f238e8b3dd4d6c86e8464c0b471c1a7622a0 radium-0.7.0.tar.gz
+2eb84bed29708b8ba109f4329bf6f1cac6caed9d91b2aaf185d68dd2eda73d3fb7be2897d0596fb28352e799ccf92c161ee44599d5cb426ba9c3b8c747831904 rand-0.6.5.tar.gz
+8b33a8988906ba5e2057a9a84bdd11f867a5536c22f5056eec59ed4ec4e3a6da2fd773da4c0510d343762e5a4ea0f007db4c4a7cef87a47f90e36c1a84d86fb2 rand-0.8.5.tar.gz
+200d39362ffd6d91cfe80634e951c7323a5df8a382c91e3afcef1ecb143a16dc47a17db7f1a746b18e4ea8bfd36bc31ceaeff6d0116e166f8b34e4a8530b3c1b rand_chacha-0.1.1.tar.gz
+8198c580b1b9b0429758ffa49cd8138fa3ce724f0dcf73c767ea7e55611d6a2e4c7cad9950896510def500ce4062b594386c947ac3d89425b4e5c9b04d0b8075 rand_chacha-0.3.1.tar.gz
+5a7ae601124502bede760fd3179c2b28059ebc3b5983bfcb6b8fa62fb58df95cedc1aeb2734e792d894dfa4620801c13c29702f9cbee64243121575d4b6b9114 rand_core-0.3.1.tar.gz
+f7ae3b690e2cc1fbf2707ee04b752bc5472433f737ab581f9872f7c5660966bc6be45f0c5d2cd8771105df6d4a9d206c55f5cc6ffc1693b46e1ae03a2883b028 rand_core-0.4.2.tar.gz
+36c67eb845aa2ccca49d6d680f28d418229bbc5a050729e487fe6b9f9f384fdd7b8d67fc6508b90b79ffb3c26688e72feceb3ecae57d3d7f59338aeb62296f79 rand_core-0.6.4.tar.gz
+808d8c167daa66a2608884d5d3f1444cdb21f8ca1c61e59fc9bdfb506a634ebb22c0143cfc0574e15313f82559fd2d117a46910eba3b4eb7e0052ec280f5cd2f rand_hc-0.1.0.tar.gz
+9e8f6c79abc53352c971f8182dcaa7979904d5649eec9008262bb0aaf0585b4c4817351cd80ffa8d07f172ff4c82d85a09ef2642a08f608fc6be3e246ed7f82e rand_isaac-0.1.1.tar.gz
+fe3791612cf82bd0ad1a115c442b4a007141647eecd48f49dff9a5d326c374663d9bd2e511c8d292e1dba44665359b522cd5d57ccd3a18598e88e42ee1670e4a rand_jitter-0.1.4.tar.gz
+01e81a692b78df3b2bd65bc285e5052ccaf208c7d0ace414f251db4fcff7f9ae1502ee60ca5745c95e778d3d5efe15fa84153c17c422b6b6bfee829376c14575 rand_os-0.1.3.tar.gz
+6bc684778ba60c2e48793d4759b40cb0d35b0bc20ca0fc39fdff7c3f8fe9082dd7b5d5f26a7f17bafc6f3568924eac1bbe45820b1c2b09c91731ea5487d76d9c rand_pcg-0.1.2.tar.gz
+3205499ed2584467dedb4641a48f3ca8fedc263b1d9431d36a251af0bc4701d99ce4b5219d515b9b24210dd3ef2faace6efa886aa50f361e07f53dd0fb0841e5 rand_xorshift-0.1.1.tar.gz
+6476275d124bee28747191471e8d8f321a3b1c148c1f2a7ece4175f5244a7de90afe5f99d2eba5244d886b92e38232398864bf90e6d434b09494533942c8d894 rdrand-0.4.0.tar.gz
+d065f6dc405771518260425f39a5eaaf8cab62e78c91ceed3b3994a9a121674d2484cadaaf816bdad89c87a40550d57b66a3d9de6618a7119a658301ce7e67d8 regex-1.11.1.tar.gz
+278e3e2ab230ed5fa7d4837e8ea879fae68ebf35c2da5cc3a67f46b7d593abbcf71e6326a0cf34e38edc0f3f2166ff42a4fcc17a400d9604429aa5b4be075a3f regex-automata-0.4.8.tar.gz
+549d8d130fea9ec0d5806126f57f31d433f50e9328c5532ad417c44bb5488ec0d20acb0983dbe54dabaa0b453cbea4533cf7baac7144df119e8f78dfe55c5ab8 regex-syntax-0.8.5.tar.gz
+2df17191ce710e09927f6d17fa5e3432a154d605cf3b58bdd6a3037d69cc0b017007e23c16526a8879a89cc49e3a47d38ae5f6aca8b42cd05624fd15c9dc3529 rend-0.4.2.tar.gz
+bac10c6e7e7f797e505cc8103c55ae2fd4b04a76631e085fcf1c8f2b05e52c064cb14145479dadc292995b7ca5bbab5235d54d8e651bf47623a0228f936f73c9 rkyv-0.7.45.tar.gz
+ec48c62251a8c2b97de67da56cf6abff15cff1a329d7f8dd3e45e1175616f0dd1b32c2a9c0998086fc57d0084e7908cfd6000fff3eaa30a1776f8abd9cb00564 rkyv_derive-0.7.45.tar.gz
+9dc8dbca6249991e4b8b2179f41bb51f2513bcf6f29490351989f04aeb7f1d15b88a8f13f7cdb666761c585d5e86397150c660883a334b9d4fdd96a08fdb5526 rust_decimal-1.36.0.tar.gz
+a7482682e2f0321318c08cf17f69815779515c197815a2a9f228c728af4cff3684101b4a13656a1ff98933ee492e4a847a03b7f46d697f9c71552931734b2449 rustix-0.38.40.tar.gz
+a9b2beac778ec47e6be303148d7512ee681bd2361f6e4ac6db32c8b4baf86a8c5eb5b0d02eacd6131ae88c7b5105c57018c3050676e0b3dd1ed9c4d2fd650e84 ryu-1.0.18.tar.gz
+4d9111dd2e491c7f6d49e0b79a3c23628c02d6603ac46e88ed137ca737830003b549ccb38087679de2cf0b02a53065b89f8d79e0ac9ddb66844d970cc6383f8b seahash-4.1.0.tar.gz
+100eac65a39b9b9c32c1671d36fa9cf8aca84a2673e24c2521fdbdb3ed9f932c71548f3f1a26b1e73dd7c92a34ffa8ed1c76eb173fa20d6e85736cdf8dc9a8ee serde-1.0.214.tar.gz
+70bc0a31d344cfec8d30f2034beab25097ef76ab8d89947b21753f737759e5d4e60e5596e0c7994a7cc35993bae01148120f6cdf5239be25fb243056effa27f0 serde_derive-1.0.214.tar.gz
+9d157ce7d705fee8245569e7c577310782b69675a6e459f21904544b824a1ca5c9b445d17419fee438dfeb6fcc35343ba14e022043fffade0210b6d2c1b5795e serde_json-1.0.132.tar.gz
+05c280a8e1f65b205746560a82e397689a3b5ec934219b558ece3a25efbfdefe903f9172319240e96039b38fb2c4be6e070805aedbdfd10344d9144b9c93de00 shell-words-1.1.0.tar.gz
+139668c7232f533d3439986474da5036efa32d4e0d21fa72e1283e27dbd0670984283d91c238e445be61317426f67cdb8d3f13738b2fb657563f866c8b6d89d6 simdutf8-0.1.5.tar.gz
+00f58a7e1b8c818336fdf55def5a46b1347c5961b4fc27d156fc03f5c197af6f53f23485eea80b2b3ca6ce2acfb304fa4846904d85c6290d1750ad4b5a635c22 statistical-1.0.0.tar.gz
+0cebe0155a92640e56db9a599ae62078cbb32e1d2da8bfa67ed0e8f410a7558dfcf7b3c2720ff5913282e291ecf076aed9fe9bf84c8d44e814a642b1bed3335c strsim-0.11.1.tar.gz
+12816b9e8cf984024b2fbce9f0ae14cf94d4d2c06f08cc54fb793ce78770bb4cc1288eb7df0ba5e8e937756e1e8e295c53fe07a0c5dde1ea8ddba03b6203b37d syn-1.0.109.tar.gz
+bcfff545d6dfefd81e09f8f30a86bdd85759b3a7d4093ef3365ed02718e10dbd604c52b94c9d7fa955d339fdc5b6c079940c6f345b5a48c52b5c8607794ca6f2 syn-2.0.87.tar.gz
+d69ff11a46e2fbc276212511878f48eb93640c0b147df6578ea057b23625f9366a7fc3926693fc3809688537af5ca919c91605beed364decf83c35a032310995 tap-1.0.1.tar.gz
+98c1ab70eb3efd2d8b16ed58c8c83f8599663af7ef269304e908a04c38334f659a4d0b1647a13dc0d1eb90a293f1b37ec8ff0b9b45ef5b7ff1b4452bbfcdcb15 tempfile-3.14.0.tar.gz
+b1a66cdf4e94997b5291f3becfac1e2a838f6c3f6c068faa1ff1aa775b2a97d41be2aff5460d88928786cfd7dc8dac5e2d46a62b475d40343e1fd517c6299897 terminal_size-0.4.0.tar.gz
+ddbe0d3ddd79b182732359f47958ca32aa351d10b1e7d5f6456700b851aa2b5314ce005e1fd120a248b676f219fbd68039cefc071d92c5b5477d053bb6e29062 termtree-0.4.1.tar.gz
+f6a8e8e1bb6d6e10edc07c35f3141b4b3ecb46b943b4879dd8f8bef0306feaa5446d8e47b24cffeb4cd6c57b4715b86b2bc0716b4ef7dfdaeb080ecd29646c9a thiserror-2.0.3.tar.gz
+50bb722db6bff4f18975312be61fbf201b8edb29a2c6420d8a2a1f2817403aa09c6de1269e7f952c4d4583f0dd2ab1eec45b26e5391b6bd69c6450c8e42019c1 thiserror-impl-2.0.3.tar.gz
+b7b32e38229645965900f80f298685f13e6d13e58cfd6945409a6643ca9c9adc2621456956d5998ab9dd91c2db4ae79638b156ca0d9c7c5505023fd9b28414df tinyvec-1.8.0.tar.gz
+10008c7b3a3d50c94b9c370015b76ee082f5dfb6dcacf014dc2f2dbe92f903618d10d0202b21f48fcf98a94ae76fb712db55a5e8ad353645d378cf0e6ec74f7e tinyvec_macros-0.1.1.tar.gz
+d38b98db3b2d4eebd3001d88e2135b6fdbae63b200f7e900c6bb9c121dd3f170e557332bd26f237312c1cbef61666716b0cf550c2d730f86fa7cd9eb5f64a16f toml_datetime-0.6.8.tar.gz
+0f98b371f7e27ae7f435a207c0915f942af145cc5dfabfe6d57f2b797efa3e706025401e501fccc6df70c001ce27051381556b8e7824447edd23ea25d047da4d toml_edit-0.22.22.tar.gz
+5ba884f39debe9c8eb0b1d251ca713f7e2bc191d211707ed10cd81465487dbdca53914c19e131edfa1da15af132dc2c346260c3969c61e3747b63399ccb1cc51 unicode-ident-1.0.13.tar.gz
+3c58a18776aa82cc13c761789a47901616cd98a30356f93d7eb05ae457314209d0a66213e2bbfa5eb8b59be6beacf62438234ce8daafa31b128dbf7d5d6fcadb unicode-width-0.1.14.tar.gz
+f3dbf78fe924f1dc3cf9498b6e43fb10174699463f31091a7a8136d8f31ec84fc00e80e3d8551b7e86257e8b3573cfddb56fc0de797fdb2cde0e962a8f239266 utf8parse-0.2.2.tar.gz
+0cd1b95fc2247bf4e627de6abb41e332ebaf39e5720640e52b9f235f7a0e2d451e7a486efdabb616ce00e47832d21919611683d0e6a71c86a86f290940cfda32 uuid-1.11.0.tar.gz
+d11d5a2240ab0c67ea69db56561ce202201edeef9a8e5eda3d9ae7ab7bb5752d8f343fe7f6536d8383de8d55f9024efa84f66a0c21e69563b7a38c4a628014db version_check-0.9.5.tar.gz
+db3b7aa2acfd44e64451042b8ba98eecab77a82aa5c58ed08dadb119ab36dee4e26d62baad7978ed56d5ad03019c96be5021455362290f56043981137bac8066 wait-timeout-0.2.0.tar.gz
+043500ab28cd9cb779475255da5d109ebab7fccca72b64873dc28d77bc5a157ba8d96b9e8f05223b5b36c7089bb7b4ba87657fc69bac16b78972f897294a865f wasi-0.11.0+wasi-snapshot-preview1.tar.gz
+ff8b7b78065f3d8999ec03c725a0460ebc059771bf071c7a3df3f0ecd733edf3b0a2450024d4e24e1aedddaecd9038ce1376c0d8bbf45132068cf45cf4a53a97 winapi-0.3.9.tar.gz
+a672ccefd0730a8166fef1d4e39f9034d9ae426a3f5e28d1f4169fa5c5790767693f281d890e7804773b34acdb0ae1febac33cde8c50c0044a5a6152c7209ec2 winapi-i686-pc-windows-gnu-0.4.0.tar.gz
+4a654af6a5d649dc87e00497245096b35a2894ae66f155cb62389902c3b93ddcc5cf7d0d8b9dd97b291d2d80bc686af2298e80abef6ac69883f4a54e79712513 winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz
+bdf534bcf3face31e9ebe11427a911a53f89f4ff5eaea8cccd094e139bfe14b2aec602b1cab1df774794d999477439d9adc6b627a8e33c20334fc348ba2c47ed windows-sys-0.48.0.tar.gz
+24ee0df246c2b456a4987a9124786a28acd358768cc7d1305bccd81bc5bb8822b81a03fb18d35174a520b911c6d9b685f81a34ab319fee13da3b985273584f03 windows-sys-0.52.0.tar.gz
+d35e009e979633a1f3c8468cd038bd5c8c0381405165ce03497decd7d9edaaac485d704487e4a61d9aaf4e4d011b4248408912df6a0044d50e8457259867e061 windows-sys-0.59.0.tar.gz
+e079eeef255a046be7f8e6a31c14f7b230254ebcf05eed2944827bb3d2a0dc30940d87593cf544d5e7ef35f6312b99430efcfb01421d91b02bb9c4bef7d98709 windows-targets-0.48.5.tar.gz
+d6d2dbd96096c6c396dba141a9817e377c35877f3b2fe58b2553280c7cfcb1ed6ee75bd4d62c9b882662de67ddaf0c1049b91530d29c94dd709c230e08eb895f windows-targets-0.52.6.tar.gz
+20158d31454488f6053d3ad7b97d7fc6eae6cf37e4ba0e50c28bd29b368505eed64199ae31104d5f97b66846be54e5ed25c0ad31ea850819205c573a31ac0996 windows_aarch64_gnullvm-0.48.5.tar.gz
+f62b2d942bdb3a9353465b07d47b93de179bb706511aa497e4addd74cff95e689a9b633e7801ce786e73b5ae5f30b506b6faa199c5ab86eefdc1d94652df79c5 windows_aarch64_gnullvm-0.52.6.tar.gz
+223f016c6f1a44dbc5c8a8428b39438f75380ea06951b7c26ed0877b19d79410c6fde5e4c7f2c839b6e76159131f39a1230e0e3a208dfc425ba9117e3665c4ff windows_aarch64_msvc-0.48.5.tar.gz
+a3e21305ad0e6de38f5b5ed5d37ee5825b7521064163bcdf31d63341cd87983f54377865d2daf3bb480d2d0aa66d6f598fa09540ec1d71baea74569c86bd213b windows_aarch64_msvc-0.52.6.tar.gz
+931ba5c1e4eb8ae73248e00d9611298d1c4b4b0dae719fdeb9243930cd420a103a7bc2738e0a4887c42c8f25728d6c5d64ad141dc092bc3f1d0f35dbe37d303a windows_i686_gnu-0.48.5.tar.gz
+a1f6b5dd23d17ec3567bc9d11a4be6f35e196eee21ca342e9b88dbaa6a5f7c46e439c834b77e724f32ac22c0d81573746b3b513a6c944a221b92b2c76fe98822 windows_i686_gnu-0.52.6.tar.gz
+95f13af855d530acc0b856214478d4b11b8dbab3f8f79dd223d0b009790c0e46d096fc1773e0277997deb2d5b96c704f17f23c7df11411524629f75415dec99f windows_i686_gnullvm-0.52.6.tar.gz
+70e2fb4fdb006a4cbd43ab2c7e940b277a15fb1790dfa2d1fc1f1fd18bead4886f6dc046e44326603e4894d988578917b8932aba5d9a6a4cc8424911cad9dc7e windows_i686_msvc-0.48.5.tar.gz
+ca97913ce202d73266cf55947b868bea7e964a4516b6a096a81aeab6a60ee73867171032ced35e3afccff741ddfb2def7468343b6eceb95253e4d4f349efbf96 windows_i686_msvc-0.52.6.tar.gz
+1d6056fae430b3d042bdff3c6217c76be4b8b9f5dada9bad06beaac2db7d7ab9b0a82e44f498ec88e61afa73e99f56d84d445dc3847732b9ce5d947e08485f74 windows_x86_64_gnu-0.48.5.tar.gz
+c4086bb0280042f2bef9b556283b67f8a5cacddd209e1c5fabec63decec6d4fd2d6a7071407973981b98ae0c0cf7034fc612f9e70dc6d3eed9acdec771ae31cb windows_x86_64_gnu-0.52.6.tar.gz
+c016d5b5e73832b61ff67929d92fa8c16e154656294357266ad29ce1f44db4ca2d2935dba31a6b571187dc838b1d22f1e3b41fefffd1d719a338439adf1646aa windows_x86_64_gnullvm-0.48.5.tar.gz
+67681f5859e249c56b0183181811f6212cc7008d6471dad78aecc7ebe3d027686b19210b8aa9014c554410f69f913d21ce2aca928eea905eab779bea26464cbd windows_x86_64_gnullvm-0.52.6.tar.gz
+fa1c5cd14ca2ff0082e2504cf59d317dc4dc6f7138d35c12f95d4476a9c13d8b7f5537d0ee251eee7c99411ad31b22263171b7fbd391daa5d3ea3488ceaa61a0 windows_x86_64_msvc-0.48.5.tar.gz
+21944cd8e3a481b514509e73ae3f62722fe7ed380d37ea0c25f8fbdeba79174dd52ff65d898838da5df4197894b74e00f45d47489418e978753b4e55c7e623e7 windows_x86_64_msvc-0.52.6.tar.gz
+3347fdfb5b15ec73a40614ecd0cce60f41d3f2d083f49aaafceeaf5db52d5c677dc3eb39fcc2595999fc9f864d1fde81e180e09dc86a6f6124878e16e86e8bc8 winnow-0.6.20.tar.gz
+15d86c167145c90e3fbabcefd11754fb1cb835896e32d1bb7f4b027e5b2092f5fdbdca4062c129bc38e655cb87c6a3f4e181747ee25d89db5e01fb1fcac18fe9 wyz-0.5.1.tar.gz
+17fcb31c029ae89c01e5bae5fb2bb46bd434120199a3dc2c7fe0012dbbcfe2a0bb38934c4a7d3a4920e3fe47c097403beee554fefa54b66cb390f8b1de638d3c zerocopy-0.7.35.tar.gz
+dbe23573b62a6267d7bc8c744320b75b2fbda03b908c1d175211f7394374fe182bce58021e25485c10671d726b2007f250565dfe53134d51c89293bb607e9feb zerocopy-derive-0.7.35.tar.gz"
diff --git a/user/hyphen/APKBUILD b/user/hyphen/APKBUILD
index a4d891e72..ba0947e7c 100644
--- a/user/hyphen/APKBUILD
+++ b/user/hyphen/APKBUILD
@@ -12,10 +12,10 @@ depends=""
depends_dev="perl"
makedepends="$depends_dev"
source="https://downloads.sourceforge.net/hunspell/$pkgname-$pkgver.tar.gz
- mawk.patch"
+ mawk.patch
+ "
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,12 +27,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
# The en_US dictionary that comes with has an unacceptable license
# and it isn't really needed anyway since libreoffice has its own
diff --git a/user/i3lock/APKBUILD b/user/i3lock/APKBUILD
index 8080867c7..098767d75 100644
--- a/user/i3lock/APKBUILD
+++ b/user/i3lock/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Johannes Matheis <jomat+alpinebuild@jmt.gr>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=i3lock
-pkgver=2.11
+pkgver=2.15
pkgrel=0
pkgdesc="Simple X11 screen locker"
url="https://i3wm.org/i3lock/"
@@ -9,37 +9,18 @@ arch="all"
options="!check" # No test suite.
license="MIT"
depends="xkeyboard-config"
-makedepends="cairo-dev libev-dev libxkbcommon-dev linux-pam-dev cmd:which
+makedepends="cairo-dev libev-dev libxkbcommon-dev linux-pam-dev meson
xcb-util-image-dev xcb-util-xrm-dev"
subpackages="$pkgname-doc"
-source="$url/$pkgname-$pkgver.tar.bz2"
-
-prepare() {
- cd "$builddir"
- default_prepare
- # At present, this has no functional difference.
- # But when we start developing our PAM stack into something more
- # mature, this will be important, because i3lock runs unprivileged.
- sed -i -e 's:login:base-auth:g' pam/i3lock
-}
+source="$url/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
-
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
-
- make
+ meson setup -Dprefix=/usr build
+ meson compile -C build
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" meson install -C build
}
-sha512sums="c00741a66fdb5477a4b7e993d173f98fe95f0254fa74c50f83ddf8078a477d26a9fab126fbe31b509df2dbd35ed5ec64b95475621b8babf6f6c0f6db38160c8a i3lock-2.11.tar.bz2"
+sha512sums="6079f5233c0820c6e38f3cd8f3732d585e95e7d670408e4fb18ab580a2e1face8f3d6ea13eaaeedc8671f74def917183667e736b35306bf7c630d40625b41ac2 i3lock-2.15.tar.xz"
diff --git a/user/i3status/APKBUILD b/user/i3status/APKBUILD
index 554916af7..f143b6fc5 100644
--- a/user/i3status/APKBUILD
+++ b/user/i3status/APKBUILD
@@ -1,35 +1,43 @@
-# Contributor: Luis Ressel <aranea@aixah.de>
-# Maintainer: Luis Ressel <aranea@aixah.de>
+# Contributor: Mira Ressel <aranea@aixah.de>
+# Maintainer:
pkgname=i3status
-pkgver=2.12
-pkgrel=0
+pkgver=2.13
+pkgrel=2
pkgdesc="Status bar generator for dzen2, xmobar or similar"
url="https://i3wm.org/i3status/"
arch="all"
-options="!check" # No test suite
+options="!check" # No test suite
license="MIT"
depends=""
-makedepends="alsa-lib-dev confuse-dev libnl3-dev pkgconf pulseaudio-dev yajl-dev"
+makedepends="alsa-lib-dev asciidoctor confuse-dev libnl3-dev pkgconf
+ pulseaudio-dev yajl-dev autoconf automake"
subpackages="$pkgname-doc"
source="$url/$pkgname-$pkgver.tar.bz2
- glob_tilde.patch"
+ asciidoctor.patch
+ glob_tilde.patch
+ "
prepare() {
- cd "$builddir"
default_prepare
- # TODO: The setcap part can be dropped after the 2.13 release
- sed -i -e '/^CFLAGS+=-g$/d' -e '/setcap/d' Makefile
+ autoreconf -vif
}
build() {
- cd "$builddir"
- make i3status
+ mkdir build
+ cd build
+
+ PATH_ASCIIDOC=/usr/bin/asciidoctor ../configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make -C build DESTDIR="$pkgdir" install
}
-sha512sums="687a880a65cb8df46f5e9d2256b59724ba3424c502e9a0fb3ca71b070875df5f4008ee501c554bc716f2d728a5cf813a36d22d7377d42c3c46b14381d385bab3 i3status-2.12.tar.bz2
-2a0a85dba02b9e9962f13d4bc151fd1672f215292800d9eeff5a10bd363b74f422d3b320851f31b73062ceeded974f5b105aec914c84f78ba418312bed189aa4 glob_tilde.patch"
+sha512sums="6dadff19e53499d169ba4f491e1f821014b4f92fc3c93d7947c85cbbbdeaba538d02bd8ab98fe266a8f80756a287fd5803ec77a8cd874d50082b5cad309875c2 i3status-2.13.tar.bz2
+7677e5f13f0b0e369775449a4097057cd709630f010790fa8601840858ab31ebe0455ecbfa764e6e4861e5a669cdc39e434c2c72513d45eb9705a49cc03953e5 asciidoctor.patch
+765a5b64d79f61cd68280d77a7316e7f571a3c2e385d9a227885cde5fc057b1a892e92a65c0fc54832bfdda30743df6e9f82a847b55c9e7389575c7fbad9e0d4 glob_tilde.patch"
diff --git a/user/i3status/asciidoctor.patch b/user/i3status/asciidoctor.patch
new file mode 100644
index 000000000..175f03150
--- /dev/null
+++ b/user/i3status/asciidoctor.patch
@@ -0,0 +1,50 @@
+From 1821c7cd94e2424352f0fcb1f2933b368a4c381c Mon Sep 17 00:00:00 2001
+From: Mira Ressel <aranea@aixah.de>
+Date: Tue, 9 Jul 2019 13:18:43 +0200
+Subject: [PATCH] Build man pages with asciidoctor
+
+asciidoctor doesn't support the -f option. Furthermore, its docbook
+output appears to be unsuitable for xmlto, so make it generate a manpage
+directly.
+---
+ Makefile.am | 7 ++-----
+ configure.ac | 3 ---
+ 2 files changed, 2 insertions(+), 8 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index bb251f0..93ef552 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -11,13 +11,10 @@ dist_man1_MANS = \
+ asciidoc_MANS = \
+ man/i3status.1
+
+-$(asciidoc_MANS): man/%.1: man/%.xml man/$(dirstamp)
+- $(AM_V_GEN) out='$@'; @PATH_XMLTO@ man -o "$${out%/*}" $<
++$(asciidoc_MANS): man/%.1: man/%.man man/$(dirstamp)
++ $(AM_V_GEN) @PATH_ASCIIDOC@ -d manpage -b manpage -o $@ $<
+ @stamp='$@'; $(MKDIR_P) "$${stamp%/*}"
+
+-man/%.xml: man/%.man man/asciidoc.conf man/$(dirstamp)
+- $(AM_V_GEN) @PATH_ASCIIDOC@ -d manpage -b docbook -f $(top_builddir)/man/asciidoc.conf -o $@ $<
+-
+ AM_CPPFLAGS = \
+ -DSYSCONFDIR="\"$(sysconfdir)\"" \
+ -I$(top_srcdir)/include \
+diff --git a/configure.ac b/configure.ac
+index cf9e430..78c4aa5 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -104,9 +104,6 @@ AC_PROG_LN_S
+ AC_PATH_PROG([PATH_ASCIIDOC], [asciidoc], [no])
+ AS_IF([test x"$PATH_ASCIIDOC" = x"no"],
+ [AC_MSG_ERROR([asciidoc is required for generating man pages])])
+-AC_PATH_PROG([PATH_XMLTO], [xmlto], [no])
+-AS_IF([test x"$PATH_XMLTO" = x"no"],
+- [AC_MSG_ERROR([xmlto is required for generating man pages])])
+
+ AM_PROG_AR
+
+--
+2.22.0
+
diff --git a/user/i3status/glob_tilde.patch b/user/i3status/glob_tilde.patch
index b1f2ba667..87177d78e 100644
--- a/user/i3status/glob_tilde.patch
+++ b/user/i3status/glob_tilde.patch
@@ -1,8 +1,14 @@
-diff --git i/i3status.c w/i3status.c
-index 5088c96..3c18214 100644
---- i/i3status.c
-+++ w/i3status.c
-@@ -210,29 +210,19 @@ static int valid_color(const char *value) {
+diff --git a/i3status.c b/i3status.c
+index 0898da3..f4b10fd 100644
+--- a/i3status.c
++++ b/i3status.c
+@@ -207,35 +207,23 @@ static int valid_color(const char *value) {
+
+ /*
+ * This function resolves ~ in pathnames.
+- * It may resolve wildcards in the first part of the path, but if no match
+- * or multiple matches are found, it just returns a copy of path as given.
++ * The syntax '~user' is not supported.
*
*/
static char *resolve_tilde(const char *path) {
@@ -22,19 +28,19 @@ index 5088c96..3c18214 100644
- } else {
- head = globbuf.gl_pathv[0];
- result = scalloc(strlen(head) + (tail ? strlen(tail) : 0) + 1);
-- strncpy(result, head, strlen(head));
-- if (tail)
-- strncat(result, tail, strlen(tail));
+- strcpy(result, head);
+- if (tail) {
+- strcat(result, tail);
+ char *home, *result = NULL;
+
-+ if (strncmp(path, "~/", 2) == 0) {
++ if (path[0] == '~' && (path[1] == '/' || path[1] == '\0')) {
+ home = getenv("HOME");
+ if (home != NULL) {
+ result = scalloc(strlen(home) + strlen(path));
+ strcpy(result, home);
-+ strcat(result, path+1);
++ strcat(result, path + 1);
+ return result;
-+ }
+ }
}
- globfree(&globbuf);
@@ -43,11 +49,11 @@ index 5088c96..3c18214 100644
}
static char *get_config_path(void) {
-diff --git i/include/i3status.h w/include/i3status.h
-index 9ac471d..27ecae4 100644
---- i/include/i3status.h
-+++ w/include/i3status.h
-@@ -236,4 +236,9 @@ extern cfg_t *cfg, *cfg_general, *cfg_section;
+diff --git a/include/i3status.h b/include/i3status.h
+index 217376a..34e44a0 100644
+--- a/include/i3status.h
++++ b/include/i3status.h
+@@ -241,4 +241,9 @@ extern cfg_t *cfg, *cfg_general, *cfg_section;
extern void **cur_instance;
extern pthread_t main_thread;
diff --git a/user/i3wm/APKBUILD b/user/i3wm/APKBUILD
index 59c94e802..1f6414355 100644
--- a/user/i3wm/APKBUILD
+++ b/user/i3wm/APKBUILD
@@ -2,48 +2,43 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=i3wm
-pkgver=4.15
+pkgver=4.19.2
pkgrel=0
pkgdesc="Improved dynamic tiling window manager"
url="https://i3wm.org"
arch="all"
-license="BSD-3-Clause"
options="!check" # The test suite requires X
-makedepends="bison flex libxcb-dev xcb-util-cursor-dev xcb-util-keysyms-dev
- xcb-util-wm-dev libev-dev pango-dev cairo-dev yajl-dev
- startup-notification-dev pcre-dev libxkbcommon-dev xcb-util-xrm-dev"
+license="BSD-3-Clause"
+depends=""
checkdepends="perl-x11-xcb perl-anyevent perl-json-xs perl-ipc-run
perl-inline-c perl-dev libxcb-dev xcb-util-dev xorg-server-xephyr"
+makedepends="meson ninja bison flex libxcb-dev xcb-util-cursor-dev
+ xcb-util-keysyms-dev xcb-util-wm-dev libev-dev pango-dev cairo-dev
+ yajl-dev startup-notification-dev pcre-dev libxkbcommon-dev
+ xcb-util-xrm-dev"
subpackages="$pkgname-doc"
-source="https://i3wm.org/downloads/i3-$pkgver.tar.bz2
+source="https://i3wm.org/downloads/i3-$pkgver.tar.xz
i3wm-musl-glob-tilde.patch
- i3wm-test-fix-off_t.patch
- i3wm-test-disable-branch-check.patch"
+ i3wm-test-fix-off_t.patch"
builddir="$srcdir/i3-$pkgver"
build() {
- cd "$builddir"
- ./configure \
- --prefix="/usr" \
- --disable-builddir \
- --sysconfdir="/etc"
- make
+ # docs require asciidoc
+ meson -Dprefix=/usr -Ddocs=false -Dmans=false build
+ ninja -C build
}
check() {
- cd "$builddir"
- make check
+ ninja -C build test
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir/" install
+ DESTDIR="$pkgdir" ninja -C build install
install -d "$pkgdir/usr/share/man/man1"
install -m644 man/*.1 "$pkgdir"/usr/share/man/man1/
}
-sha512sums="60ab61b7e380342126bea12fb4371f98fcf18f6435f79a9519d3f59cfabdb170634366036e1aa20c5592da0832b03140ad1f0c72bad3cfaace0b7c57ad01dfc4 i3-4.15.tar.bz2
-8ce7d00371c43b93dabbe0dadf9caf7c58a68f4a0079f5a9b9552c15c55bfa0df16d7e87a281595af2ac5254632ba28ccf82a467cea16159b41490f6f2910299 i3wm-musl-glob-tilde.patch
-77224b994397b2e2487ae28dfd5781b3630654191813eb3c685f05ebf446e65c36e53a665ff3cc8323ea67e87f7cf977044025dade0a6ed22cbd84f0e6b4cbc7 i3wm-test-fix-off_t.patch
-a80384965dff62c51ce77e2baa3cf1b0b6db1df68994ce98383f96554bd296b4b59527fb5b1cb24b08c123699e294ba9b3baaa52afe88d87e7a76f0629194b1f i3wm-test-disable-branch-check.patch"
+sha512sums="58f08228d842cd3c2bc417b72f6279fcd7050879e5fd4064b2cb00edaf98b6605d5b2361608f9534991a0f8357d3294e881c7e314f33dc075241cc45ca5ed94d i3-4.19.2.tar.xz
+6378e3619076c03345b4faa1f9d54cab2e7173068bc4d5f2f2894af9cc0e5792fe45ce95cb06328f5040f0ba6d43f3e49c523968732ac2d2046b698042338caa i3wm-musl-glob-tilde.patch
+77224b994397b2e2487ae28dfd5781b3630654191813eb3c685f05ebf446e65c36e53a665ff3cc8323ea67e87f7cf977044025dade0a6ed22cbd84f0e6b4cbc7 i3wm-test-fix-off_t.patch"
diff --git a/user/i3wm/i3wm-musl-glob-tilde.patch b/user/i3wm/i3wm-musl-glob-tilde.patch
index 82ad6195b..d4c2d832e 100644
--- a/user/i3wm/i3wm-musl-glob-tilde.patch
+++ b/user/i3wm/i3wm-musl-glob-tilde.patch
@@ -4,7 +4,7 @@ diff -urp i3-4.11/i3bar/src/main.c i3-4.11.new/i3bar/src/main.c
@@ -45,14 +45,20 @@ void debuglog(char *fmt, ...) {
*
*/
- char *expand_path(char *path) {
+ static char *expand_path(char *path) {
- static glob_t globbuf;
- if (glob(path, GLOB_NOCHECK | GLOB_TILDE, NULL, &globbuf) < 0) {
- ELOG("glob() failed\n");
@@ -28,11 +28,11 @@ diff -urp i3-4.11/i3bar/src/main.c i3-4.11.new/i3bar/src/main.c
+ return sstrdup(path);
}
- void print_usage(char *elf_name) {
+ static void print_usage(char *elf_name) {
diff -urp i3-4.11/libi3/resolve_tilde.c i3-4.11.new/libi3/resolve_tilde.c
--- i3-4.11/libi3/resolve_tilde.c 2015-09-30 07:55:10.000000000 +0100
+++ i3-4.11.new/libi3/resolve_tilde.c 2016-02-08 20:03:47.849230953 +0000
-@@ -19,27 +19,18 @@
+@@ -19,28 +19,18 @@
*
*/
char *resolve_tilde(const char *path) {
@@ -53,9 +53,9 @@ diff -urp i3-4.11/libi3/resolve_tilde.c i3-4.11.new/libi3/resolve_tilde.c
- } else {
- head = globbuf.gl_pathv[0];
- result = scalloc(strlen(head) + (tail ? strlen(tail) : 0) + 1, 1);
-- strncpy(result, head, strlen(head));
-- if (tail)
-- strncat(result, tail, strlen(tail));
+- strcpy(result, head);
+- if (tail) {
+- strcat(result, tail);
+ if (strncmp(path, "~/", 2) == 0) {
+ home = getenv("HOME");
+ if (home != NULL) {
@@ -64,7 +64,7 @@ diff -urp i3-4.11/libi3/resolve_tilde.c i3-4.11.new/libi3/resolve_tilde.c
+ strcpy(expanded, home);
+ strcat(expanded, path+1);
+ return expanded;
-+ }
+ }
}
- globfree(&globbuf);
diff --git a/user/i3wm/i3wm-test-disable-branch-check.patch b/user/i3wm/i3wm-test-disable-branch-check.patch
deleted file mode 100644
index ac3572e9b..000000000
--- a/user/i3wm/i3wm-test-disable-branch-check.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- i3-4.15/testcases/t/193-ipc-version.t.old 2018-03-10 09:29:14.000000000 -0800
-+++ i3-4.15/testcases/t/193-ipc-version.t 2018-09-27 16:49:56.599257224 -0700
-@@ -32,6 +32,6 @@
-
- is(int($version->{minor}), $version->{minor}, 'minor version is an integer');
- is(int($version->{patch}), $version->{patch}, 'patch version is an integer');
--like($version->{human_readable}, qr/branch/, 'human readable version contains branch name');
-+#like($version->{human_readable}, qr/branch/, 'human readable version contains branch name');
-
- done_testing;
diff --git a/user/iceauth/APKBUILD b/user/iceauth/APKBUILD
index 5f59f51ce..b01bdbd92 100644
--- a/user/iceauth/APKBUILD
+++ b/user/iceauth/APKBUILD
@@ -1,18 +1,17 @@
-# Maintainer:
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=iceauth
-pkgver=1.0.8
+pkgver=1.0.10
pkgrel=0
pkgdesc="X.Org ICE authority file utility"
-url="http://xorg.freedesktop.org"
+url="https://www.X.org/"
arch="all"
license="MIT"
-subpackages="$pkgname-doc"
+depends=""
makedepends="libice-dev util-macros"
-source="http://www.x.org/releases/individual/app/iceauth-$pkgver.tar.bz2"
-
+subpackages="$pkgname-doc"
+source="http://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -22,13 +21,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="9d4520adf951b16a3e784349dbb70d5d8176b74b956f8adc63abf55d049745c113b03ccfa60a281fc39b487db3742302dc6287c9985ce83a0157bf4674df2af1 iceauth-1.0.8.tar.bz2"
+sha512sums="cfadac03a3f72f3c0bb58f67984a033847c76e7e3fdd9ebce583c0554d7f9484faf5053d878f5a82a543cdcc8e2ef8acecadb8830bd3c53584d7ec950cb51cc3 iceauth-1.0.10.tar.xz"
diff --git a/user/icewm/APKBUILD b/user/icewm/APKBUILD
index 78975e205..f7a848f42 100644
--- a/user/icewm/APKBUILD
+++ b/user/icewm/APKBUILD
@@ -1,29 +1,22 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=icewm
-pkgver=1.5.3
+pkgver=3.5.0
pkgrel=0
pkgdesc="A window manager designed for speed, usability, and consistency"
url="https://github.com/bbidulock/icewm"
arch="all"
-options="!check" # no tests
+options="!check" # No test suite.
license="LGPL-2.0-only AND MirOS"
depends=""
-makedepends="libxft-dev libxinerama-dev libxpm-dev libjpeg-turbo-dev
- libxrandr-dev glib-dev fribidi-dev gdk-pixbuf-dev librsvg-dev
- alsa-lib-dev libsndfile-dev libao-dev asciidoctor $depends_dev"
-install=""
+makedepends="alsa-lib-dev asciidoctor fribidi-dev glib-dev gdk-pixbuf-dev
+ imlib2-dev libao-dev libice-dev libjpeg-turbo-dev librsvg-dev libsm-dev
+ libsndfile-dev libxcomposite-dev libxft-dev libxinerama-dev libxpm-dev
+ libxrandr-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://github.com/ice-wm/icewm/releases/download/$pkgver/icewm-$pkgver.tar.xz"
-
-prepare() {
- default_prepare
- cd "$builddir"
- autoreconf -vif
-}
+source="https://github.com/ice-wm/icewm/releases/download/$pkgver/icewm-$pkgver.tar.lz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -35,13 +28,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3fb7bb3002687fc3105c61f062600015cf59173e054e3dc3dc1af4ec960991790bbb5b4ba842e9c67c8f73fb8189ae76772f3df58fd679884c85239e6d93a3cb icewm-1.5.3.tar.xz"
+sha512sums="946f622ec88c04756919a8dff1cc44154225a020f98e5fdd9a5c58fd81bb82b98f566930821a3965c0c1f99edfa4c75ef7f7c074f05cf0a71545b3ed2fc72659 icewm-3.5.0.tar.lz"
diff --git a/user/ico/APKBUILD b/user/ico/APKBUILD
index 8f6c2d7dd..4e197eac2 100644
--- a/user/ico/APKBUILD
+++ b/user/ico/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ico
-pkgver=1.0.5
+pkgver=1.0.6
pkgrel=0
pkgdesc="Example animation for testing X.Org"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="libx11-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/ico-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="93a94a66d4a41b39d4b3657050e58f8269d352dae5d5916c9ecdda1cb14f23b9d159d67c50fdfa654b4b1c2ad11434bed140ace70703c82b05d3fe8686aab8f6 ico-1.0.5.tar.bz2"
+sha512sums="0ada451b8026ea10d1a5633f847b7bf833292e4cd01e3f1079d82c91fd142c06c6c4005b7146900ee34ac7acc8fd981db37ada9052dff49c2cfce995b9146c8c ico-1.0.6.tar.xz"
diff --git a/user/icon-naming-utils/APKBUILD b/user/icon-naming-utils/APKBUILD
index e878b858c..863107041 100644
--- a/user/icon-naming-utils/APKBUILD
+++ b/user/icon-naming-utils/APKBUILD
@@ -4,7 +4,7 @@ pkgname=icon-naming-utils
pkgver=0.8.90
pkgrel=0
pkgdesc="Script for migrating to the Icon Naming Specification"
-url="http://tango.freedesktop.org/Tango_Icon_Library"
+url="http://tango-project.org/"
arch="noarch"
license="GPL-2.0-only"
depends="perl perl-xml-simple"
@@ -13,7 +13,6 @@ subpackages="$pkgname-dev"
source="http://tango.freedesktop.org/releases/icon-naming-utils-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,12 +24,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make pkgconfigdir="/usr/lib/pkgconfig" DESTDIR="$pkgdir" install
}
diff --git a/user/id3lib/APKBUILD b/user/id3lib/APKBUILD
index 724429e96..78b50ae07 100644
--- a/user/id3lib/APKBUILD
+++ b/user/id3lib/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=id3lib
pkgver=3.8.3
-pkgrel=1
+pkgrel=2
pkgdesc="Library for reading, writing, and manipulating ID3v2 tags"
url="http://id3lib.sourceforge.net"
arch="all"
@@ -15,15 +15,19 @@ source="https://downloads.sourceforge.net/project/id3lib/id3lib/$pkgver/id3lib-$
cstring.patch
modern-cpp.patch
test-expose-proper-stdlib-symbols.patch
+ CVE-2007-4460.patch
"
+# secfixes:
+# 3.8.3-r2:
+# - CVE-2007-4460
+
prepare() {
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
export CFLAGS="$CFLAGS -fPIC"
export CXXFLAGS="$CXXFLAGS -fPIC"
./configure \
@@ -37,16 +41,15 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
sha512sums="3787e261f86933c1c2f2bff2c4b349b42f5d8636e489e4f39f9d75e6dfbdc79b87009a0f4ce4b786f2fb3dbc01ca9d56c4112095b46244f897e6c9a28573adaf id3lib-3.8.3.tar.gz
e379e848788f7fda3a86b02b9865dfe5db69d66ffcfb81184c1cd92f2f1ed7b4d40f13cc77f9de294afc13ae61ab50c3aa13f9a4cc4eb85cb7a727d25268ee6a cstring.patch
334eed099c93ea279d877437a92f684bfb0df12774fd7fffb628b6e8c4b17b17952d6f7c0bf0dff03a87887f0f1233c70d98b69f23580dcf3bf64c8d4b93fc85 modern-cpp.patch
-cd79daddffbafc11e555f16be827ccedc03e419b7c24ab1da1852af294dc486a0836d612318eb9861691ef8462ca38be41cfa2c12849f022ebb187c6ef95a1b9 test-expose-proper-stdlib-symbols.patch"
+cd79daddffbafc11e555f16be827ccedc03e419b7c24ab1da1852af294dc486a0836d612318eb9861691ef8462ca38be41cfa2c12849f022ebb187c6ef95a1b9 test-expose-proper-stdlib-symbols.patch
+97b1686ca3b7feefe7c2cc5f90a31f42fb55fd7baf45b0abe07c6d879bdf752f21305a6a883241c18e20847c43175c3d2c911dce14aa5f382f46bf44c07759f1 CVE-2007-4460.patch"
diff --git a/user/id3lib/CVE-2007-4460.patch b/user/id3lib/CVE-2007-4460.patch
new file mode 100644
index 000000000..36c84179f
--- /dev/null
+++ b/user/id3lib/CVE-2007-4460.patch
@@ -0,0 +1,54 @@
+This patch fixes an issues where temporary files were created in an insecure
+way.
+
+It was first intruduced in version 3.8.3-7 and fixes
+http://bugs.debian.org/438540
+--- a/src/tag_file.cpp
++++ b/src/tag_file.cpp
+@@ -242,8 +242,8 @@
+ strcpy(sTempFile, filename.c_str());
+ strcat(sTempFile, sTmpSuffix.c_str());
+
+-#if ((defined(__GNUC__) && __GNUC__ >= 3 ) || !defined(HAVE_MKSTEMP))
+- // This section is for Windows folk && gcc 3.x folk
++#if !defined(HAVE_MKSTEMP)
++ // This section is for Windows folk
+ fstream tmpOut;
+ createFile(sTempFile, tmpOut);
+
+@@ -257,7 +257,7 @@
+ tmpOut.write((char *)tmpBuffer, nBytes);
+ }
+
+-#else //((defined(__GNUC__) && __GNUC__ >= 3 ) || !defined(HAVE_MKSTEMP))
++#else //!defined(HAVE_MKSTEMP)
+
+ // else we gotta make a temp file, copy the tag into it, copy the
+ // rest of the old file after the tag, delete the old file, rename
+@@ -270,7 +270,7 @@
+ //ID3_THROW_DESC(ID3E_NoFile, "couldn't open temp file");
+ }
+
+- ofstream tmpOut(fd);
++ ofstream tmpOut(sTempFile);
+ if (!tmpOut)
+ {
+ tmpOut.close();
+@@ -285,14 +285,14 @@
+ uchar tmpBuffer[BUFSIZ];
+ while (file)
+ {
+- file.read(tmpBuffer, BUFSIZ);
++ file.read((char *)tmpBuffer, BUFSIZ);
+ size_t nBytes = file.gcount();
+- tmpOut.write(tmpBuffer, nBytes);
++ tmpOut.write((char *)tmpBuffer, nBytes);
+ }
+
+ close(fd); //closes the file
+
+-#endif ////((defined(__GNUC__) && __GNUC__ >= 3 ) || !defined(HAVE_MKSTEMP))
++#endif ////!defined(HAVE_MKSTEMP)
+
+ tmpOut.close();
+ file.close();
diff --git a/user/ido/APKBUILD b/user/ido/APKBUILD
index 9f858605e..f85139e4b 100644
--- a/user/ido/APKBUILD
+++ b/user/ido/APKBUILD
@@ -1,43 +1,46 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=ido
-pkgver=12.10.2
+pkgver=13.10.0
pkgrel=0
pkgdesc="Library for indicator display objects"
url="https://launchpad.net/ido"
arch="all"
options="!check" # broken testsuite
license="(LGPL-2.1-only OR LGPL-3.0-only) AND GPL-3.0-only AND LGPL-2.0+"
-makedepends="gtk+3.0-dev"
+depends=""
+makedepends="gtk+3.0-dev autoconf automake libtool gobject-introspection-dev
+ gtk-doc vala xorg-gtest-dev"
subpackages="$pkgname-dev"
-source="https://launchpad.net/ido/12.10/$pkgver/+download/ido-$pkgver.tar.gz"
+source="http://archive.ubuntu.com/ubuntu/pool/universe/i/ido/ido_$pkgver+17.04.20161028.orig.tar.gz
+ ubuntu-private.patch
+ "
+builddir="$srcdir"
prepare() {
- cd "$builddir"
default_prepare
- update_config_sub
+ autoreconf -vif
}
build() {
- cd "$builddir"
CFLAGS="-Wno-error" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var
+ --localstatedir=/var \
+ --disable-ubuntu-private-api
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="f745380bbc8b97c739691ae4f0dc27d5903ff078e92aaa2280d2c830c77ea2ad29b3abb4a49ffc7cc928b32e3a60ad64de20087980e02e5d5233eeb22978d2dc ido-12.10.2.tar.gz"
+sha512sums="867157c9e316eb5ed69ebdf1017ed86990aabf7a885ba26acab36782f0f27e10b4621a7db15ac90335e808022490a98560d5ff443e6f697c578eed5868385ebd ido_13.10.0+17.04.20161028.orig.tar.gz
+1894f82bd8c2daa25cf41a0c401979941894ec2be165ddbe40eb5b2bc2a4272b22d19a1710e80c975c33bf4f1a6ff91920bf569e536851e65d702f1267fdc367 ubuntu-private.patch"
diff --git a/user/ido/ubuntu-private.patch b/user/ido/ubuntu-private.patch
new file mode 100644
index 000000000..04aa31ac7
--- /dev/null
+++ b/user/ido/ubuntu-private.patch
@@ -0,0 +1,70 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -140,6 +140,16 @@ dnl = GTK Doc Check ====================
+
+ GTK_DOC_CHECK([1.8])
+
++dnl = GTK+ Ubuntu Private API =================================================
++
++AC_ARG_ENABLE([ubuntu-private-api],
++ [AS_HELP_STRING([--enable-ubuntu-private-api=@<:@no/yes@:>@],
++ [Use Ubuntu GTK+ Private API @<:@default=yes@:>@])],
++ [enable_ubuntu_private_api="$enableval"],
++ [enable_ubuntu_private_api=yes])
++
++AM_CONDITIONAL([USE_UBUNTU_PRIVATE_API], [test "x$enable_ubuntu_private_api" != xno])
++
+ dnl ===========================================================================
+
+ AC_CONFIG_FILES([
+@@ -160,6 +170,7 @@ echo ""
+ echo " Prefix : ${prefix}"
+ echo " gcov : ${use_gcov}"
+ echo " introspection: ${enable_introspection}"
++echo " ubuntu gtk+ : ${enable_ubuntu_private_api}"
+ echo ""
+ echo " Documentation: ${enable_gtk_doc}"
+ echo ""
+--- a/src/idomenuitemfactory.c
++++ b/src/idomenuitemfactory.c
+@@ -17,6 +17,7 @@
+ * Lars Uebernickel <lars.uebernickel@canonical.com>
+ */
+
++#ifdef USE_UBUNTU_PRIVATE_API
+ #include <gtk/gtk.h>
+ #include <gtk/ubuntu-private.h>
+
+@@ -117,3 +118,4 @@ static void
+ ido_menu_item_factory_init (IdoMenuItemFactory *factory)
+ {
+ }
++#endif
+--- a/src/libido.c
++++ b/src/libido.c
+@@ -28,9 +28,11 @@
+ void
+ ido_init (void)
+ {
++#ifdef USE_UBUNTU_PRIVATE_API
+ GType ido_menu_item_factory_get_type (void);
+
+ /* make sure this extension point is registered so that gtk calls it
+ * when finding custom menu items */
+ g_type_ensure (ido_menu_item_factory_get_type ());
++#endif
+ }
+--- a/src/Makefile.am
++++ b/src/Makefile.am
+@@ -68,6 +68,10 @@ AM_CPPFLAGS = \
+ $(MAINTAINER_CFLAGS) \
+ -Wall -Werror -Wextra -Wno-unused-parameter -Wno-error=deprecated-declarations
+
++if USE_UBUNTU_PRIVATE_API
++AM_CPPFLAGS += -DUSE_UBUNTU_PRIVATE_API
++endif
++
+ AM_CFLAGS = \
+ $(COVERAGE_CFLAGS)
+
+
diff --git a/user/ifupdown-ng/APKBUILD b/user/ifupdown-ng/APKBUILD
new file mode 100644
index 000000000..8ac58f0e1
--- /dev/null
+++ b/user/ifupdown-ng/APKBUILD
@@ -0,0 +1,110 @@
+# Contributor: Ermine <mustela@erminea.space>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
+# Maintainer: Ermine <mustela@erminea.space>
+pkgname=ifupdown-ng
+pkgver=0.12.1
+pkgrel=0
+pkgdesc="Tools for managing network configuration"
+url="https://github.com/ifupdown-ng/ifupdown-ng"
+arch="all"
+license="ISC AND BSD-2-Clause"
+depends="kyua atf"
+makedepends="scdoc"
+subpackages="$pkgname-doc $pkgname-openrc $pkgname-iproute2 $pkgname-ppp
+ $pkgname-wireguard $pkgname-ethtool $pkgname-wifi"
+source="https://distfiles.ariadne.space/ifupdown-ng/ifupdown-ng-$pkgver.tar.xz
+ ifupdown-ng.initd
+ "
+
+# We only install the core executors right now. The other executors are
+# still being ported to run under ifupdown-ng natively, and so we will
+# use the ifupdown scripts for now for those cases. However, it is nice
+# to make the automatic dependency resolution work, and ifupdown-ng
+# provides some stubs to enable that.
+_executor_stubs="bridge bond"
+
+# These are optional executors which do not conflict with what we are
+# presently shipping. These executors require iproute2.
+_executor_iproute2="vrf gre vxlan mpls"
+
+# These are all optional executors we plan to use.
+_executor_opt="ppp wireguard wireguard-quick ethtool wifi $_executor_iproute2"
+
+build() {
+ make
+ make docs
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" EXECUTOR_SCRIPTS_OPT="$_executor_opt" \
+ EXECUTOR_SCRIPTS_STUB="$_executor_stubs" install install_docs
+ install -Dm755 "$srcdir"/ifupdown-ng.initd "$pkgdir"/etc/init.d/ifupdown-ng
+}
+
+iproute2() {
+ pkgdesc="ifupdown-ng integration for iproute2"
+ depends="iproute2"
+ install_if="$pkgname=$pkgver-r$pkgrel $depends"
+
+ mkdir -p "$subpkgdir"/usr/libexec/ifupdown-ng
+ for exec in $_executor_iproute2; do
+ mv "$pkgdir"/usr/libexec/ifupdown-ng/$exec \
+ "$subpkgdir"/usr/libexec/ifupdown-ng/$exec
+ done
+}
+
+ppp() {
+ pkgdesc="ifupdown-ng integration for ppp"
+ depends="ppp"
+ install_if="$pkgname=$pkgver-r$pkgrel $depends"
+
+ mkdir -p "$subpkgdir"/usr/libexec/ifupdown-ng
+ mv "$pkgdir"/usr/libexec/ifupdown-ng/ppp \
+ "$subpkgdir"/usr/libexec/ifupdown-ng/ppp
+}
+
+wireguard() {
+ pkgdesc="ifupdown-ng integration for wireguard"
+ depends="wireguard-tools"
+ install_if="$pkgname=$pkgver-r$pkgrel $depends"
+
+ mkdir -p "$subpkgdir"/usr/libexec/ifupdown-ng
+ mv "$pkgdir"/usr/libexec/ifupdown-ng/wireguard \
+ "$subpkgdir"/usr/libexec/ifupdown-ng/wireguard
+ mv "$pkgdir"/usr/libexec/ifupdown-ng/wireguard-quick \
+ "$subpkgdir"/usr/libexec/ifupdown-ng/wireguard-quick
+}
+
+ethtool() {
+ pkgdesc="ifupdown-ng integration for ethtool"
+ depends="ethtool"
+ install_if="$pkgname=$pkgver-r$pkgrel $depends"
+
+ mkdir -p "$subpkgdir"/usr/libexec/ifupdown-ng
+ mv "$pkgdir"/usr/libexec/ifupdown-ng/ethtool \
+ "$subpkgdir"/usr/libexec/ifupdown-ng/ethtool
+}
+
+wifi() {
+ pkgdesc="ifupdown-ng integration for wifi"
+ depends="wpa_supplicant"
+ install_if="$pkgname=$pkgver-r$pkgrel $depends"
+
+ mkdir -p "$subpkgdir"/usr/libexec/ifupdown-ng
+ mv "$pkgdir"/usr/libexec/ifupdown-ng/wifi \
+ "$subpkgdir"/usr/libexec/ifupdown-ng/wifi
+}
+
+doc() {
+ default_doc
+
+ mkdir -p "$subpkgdir"/etc/network
+ mv "$pkgdir"/etc/network/ifupdown-ng.conf.example \
+ "$subpkgdir"/etc/network/ifupdown-ng.conf.example
+}
+sha512sums="c2c1e27fbd53eeb4150e544a893352f13845b491850e982a5880160c3be03b628794f7989c802ff823ac3e8c6c34dc4ab97c0abcefdda85f06fcd64ced8ac60c ifupdown-ng-0.12.1.tar.xz
+aa1dd3d31872d7ec308b534044e490136de47a3e72575a96522f60c5740ee3b953a17e05013359d27985ac16b048ff8fff76e8ac1103802a4fb75a31d2185d45 ifupdown-ng.initd"
diff --git a/user/ifupdown-ng/ifupdown-ng.initd b/user/ifupdown-ng/ifupdown-ng.initd
new file mode 100644
index 000000000..adae1b66c
--- /dev/null
+++ b/user/ifupdown-ng/ifupdown-ng.initd
@@ -0,0 +1,91 @@
+#!/sbin/openrc-run
+
+# Copyright (c) Natanael Copa
+# This code is licensed under BSD-2-Clause
+#
+# note that the spoofprotect, syncoockies and ip_forward options are set in
+# /etc/sysctl.conf
+
+: ${cfgfile:="/etc/network/interfaces"}
+: ${ifquery:="ifquery"}
+: ${ifstate:="/run/ifstate"}
+
+single_iface="${RC_SVCNAME#*.}"
+if [ "$single_iface" = "$RC_SVCNAME" ]; then
+ single_iface=
+fi
+
+depend() {
+ need localmount hostname
+ want dev-settle
+ after bootmisc hwdrivers modules
+ provide net
+ keyword -jail -prefix -vserver -docker
+}
+
+# find interfaces we want to start
+find_ifaces() {
+ if [ -n "$single_iface" ]; then
+ echo $single_iface
+ return 0
+ fi
+
+ if command -v "$ifquery" >/dev/null; then
+ $ifquery -i "$cfgfile" --list -a
+ return
+ fi
+
+ # fallback in case ifquery does not exist
+ awk '$1 == "auto" {for (i = 2; i <= NF; i = i + 1) printf("%s ", $i)}' "$cfgfile"
+}
+
+# return the list of interfaces we should try stop
+find_running_ifaces() {
+ if [ -n "$single_iface" ]; then
+ echo $single_iface
+ return 0
+ fi
+
+ if command -v "$ifquery" >/dev/null; then
+ $ifquery --state-file $ifstate -i "$cfgfile" --running
+ return
+ fi
+
+ # fallback
+ awk -F= '{print $2}' $ifstate
+}
+
+start() {
+ local iface= ret=1
+ ebegin "Starting networking"
+ eindent
+ for iface in $(find_ifaces); do
+ local r=0
+ ebegin "$iface"
+ if ! ifup -i "$cfgfile" $iface >/dev/null; then
+ ifdown -i "$cfgfile" $iface >/dev/null 2>&1
+ r=1
+ fi
+ # atleast one interface needs to be started for action
+ # to be success
+ eend $r && ret=0
+ done
+ eoutdent
+ return $ret
+}
+
+stop() {
+ local iface=
+ # Don't stop the network at shutdown.
+ yesno ${keep_network:-YES} && yesno $RC_GOINGDOWN && return 0
+
+ ebegin "Stopping networking"
+ eindent
+ for iface in $(find_running_ifaces); do
+ ebegin "$iface"
+ ifdown -i "$cfgfile" -f $iface >/dev/null
+ eend $?
+ done
+ eoutdent
+ return 0
+}
diff --git a/user/imagemagick/APKBUILD b/user/imagemagick/APKBUILD
index 00f6b907d..dbadfaf9d 100644
--- a/user/imagemagick/APKBUILD
+++ b/user/imagemagick/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Łukasz Jendrysik <scadu@yandex.com>
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=imagemagick
-pkgver=7.0.8.40
+pkgver=7.1.0.56
_abiver=7
_pkgver=${pkgver%.*}-${pkgver##*.}
pkgrel=0
@@ -16,11 +16,14 @@ makedepends="zlib-dev libpng-dev libjpeg-turbo-dev freetype-dev fontconfig-dev
libxml2-dev librsvg-dev libraw-dev"
checkdepends="freetype fontconfig lcms2 graphviz"
subpackages="$pkgname-doc $pkgname-dev $pkgname-c++:_cxx $pkgname-libs"
-source="http://www.imagemagick.org/download/releases/ImageMagick-$_pkgver.tar.xz"
+source="https://imagemagick.org/archive/releases/ImageMagick-$_pkgver.tar.xz"
builddir="$srcdir/ImageMagick-${_pkgver}"
+# secfixes:
+# 7.0.8.59-r0:
+# - CVE-2019-13454
+
build() {
- cd "$builddir"
# fix doc dir, Gentoo bug 91911
sed -i -e \
's:DOCUMENTATION_PATH="${DATA_DIR}/doc/${DOCUMENTATION_RELATIVE_PATH}":DOCUMENTATION_PATH="/usr/share/doc/imagemagick":g' \
@@ -53,15 +56,13 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
if ! [ -e "$pkgdir"/usr/lib/libMagickCore-$_abiver.Q16HDRI.so ]; then
- error "Has ABI verision changed? (current is $_abiver)"
+ error "Has ABI version changed? (current is $_abiver)"
return 1
fi
@@ -81,4 +82,4 @@ _cxx() {
mv "$pkgdir"/usr/lib/libMagick++*.so.* "$subpkgdir"/usr/lib/
}
-sha512sums="09defd7bedfc18ff5ef8e404e2f1189cbcd97f087b05fc925cfd6e90b416e97aea691542a1eca6841b99c24dbeaf10d2437a74d8d380dfc5f70a1eb54ae61982 ImageMagick-7.0.8-40.tar.xz"
+sha512sums="99e6000d01150016bdbcb3578d0b255e55a7b48f4b6d79a9359f91149fd7886b03b5be458249c22c90e7fbba14f00a0de0ae79c8477e970f6e16d9bd34aa6b98 ImageMagick-7.1.0-56.tar.xz"
diff --git a/user/imake/APKBUILD b/user/imake/APKBUILD
index b2eb2284b..5f39ea701 100644
--- a/user/imake/APKBUILD
+++ b/user/imake/APKBUILD
@@ -1,27 +1,26 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=imake
-pkgver=1.0.7
+pkgver=1.0.9
pkgrel=0
pkgdesc="X Windows make utility"
-url="https://www.x.org"
+url="https://www.X.Org/"
arch="all"
+options="!check" # No test suite.
license="X11"
-options="!check" # No testsuite
depends=""
makedepends="util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="http://ftp.x.org/pub/individual/util/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.org/releases/individual/util/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
- ./configure --prefix=/usr
+ ./configure \
+ --prefix=/usr
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b3527c8fead25c6e093e1fe4a39e60ff210212dcd323e206505b9e872a3f36d9db85f85cab5a6f0fa914fa5c558ef54b499b2b13ccd66739223e4e72ef805d08 imake-1.0.7.tar.bz2"
+sha512sums="e7587cf80369c8f4fcc1207c13bcb74a53d838b504ac8a7f3b98fb8f5f595cc7b8e5e9fad50cadcf40cf27bd02ef4eae7fe458854bbed7bea27d474d66520644 imake-1.0.9.tar.xz"
diff --git a/user/imlib2/APKBUILD b/user/imlib2/APKBUILD
index 2984ea32a..b7256e65d 100644
--- a/user/imlib2/APKBUILD
+++ b/user/imlib2/APKBUILD
@@ -1,19 +1,21 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=imlib2
-pkgver=1.5.1
+pkgver=1.7.0
pkgrel=0
pkgdesc="Image manipulation library"
url="https://sourceforge.net/projects/enlightenment"
arch="all"
license="Imlib2"
-subpackages="$pkgname-dev"
+depends=""
depends_dev="freetype-dev libxext-dev libsm-dev"
makedepends="$depends_dev tiff-dev giflib-dev bzip2-dev libpng-dev
libid3tag-dev libjpeg-turbo-dev zlib-dev util-linux-dev"
-source="https://downloads.sourceforge.net/enlightenment/$pkgname-src/$pkgname-$pkgver.tar.bz2"
+subpackages="$pkgname-dev"
+source="https://downloads.sourceforge.net/enlightenment/$pkgname-src/$pkgname-$pkgver.tar.bz2
+ loader-build.patch
+ "
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,7 +28,6 @@ build() {
--with-x \
--with-bzip2 \
--with-gif \
- --with-id3 \
--with-jpeg \
--with-png \
--with-tiff \
@@ -35,13 +36,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR=$pkgdir install
}
-sha512sums="f9d971674887d4af067c6921e34b6fe598db0317052bc864b676c526b36373ce021d9d49cad95aa64dbbd8e74f1831ddf3ed105900e3df2b66a6b53f7f27c732 imlib2-1.5.1.tar.bz2"
+sha512sums="078126269565b55f4b167608ee65d558711e37c34283fb6193752b27f7fc59c738cbd38839b17203273defee20c2ffc41a495e44364089deebffbd39c67e6d72 imlib2-1.7.0.tar.bz2
+4f3139fa1caf64aff6f24f7fb95070b02280145119dcf5bb6f379ec1f4ded07d22317cb09eb42f911b12d90de4b84b6391ebf82305b129d6689089e5054c5e26 loader-build.patch"
diff --git a/user/imlib2/loader-build.patch b/user/imlib2/loader-build.patch
new file mode 100644
index 000000000..44af31f35
--- /dev/null
+++ b/user/imlib2/loader-build.patch
@@ -0,0 +1,26 @@
+From 92d3153fee9f915cf2bdbc92a7551e5a83985e81 Mon Sep 17 00:00:00 2001
+From: Daniel Kolesa <daniel@octaforge.org>
+Date: Sun, 9 Aug 2020 21:00:46 +0200
+Subject: Fix big endian build
+
+---
+ src/modules/loaders/loader_argb.c | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/modules/loaders/loader_argb.c b/src/modules/loaders/loader_argb.c
+index ec58ca3..b915b7b 100644
+--- a/src/modules/loaders/loader_argb.c
++++ b/src/modules/loaders/loader_argb.c
+@@ -7,6 +7,9 @@ load2(ImlibImage * im, int load_data)
+ int w = 0, h = 0, alpha = 0;
+ DATA32 *ptr;
+ int y;
++#ifdef WORDS_BIGENDIAN
++ int l;
++#endif
+
+ rc = LOAD_FAIL;
+
+--
+cgit v1.2.1
+
diff --git a/user/inconsolata-lgc/APKBUILD b/user/inconsolata-lgc/APKBUILD
index f8d3de1a6..c4748657c 100644
--- a/user/inconsolata-lgc/APKBUILD
+++ b/user/inconsolata-lgc/APKBUILD
@@ -15,8 +15,7 @@ source="https://github.com/MihailJP/Inconsolata-LGC/releases/download/LGC-$pkgve
builddir="$srcdir/InconsolataLGC-OT"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF *.otf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF "$builddir"/*.otf
}
sha512sums="3e985618b0c067d981620a461655d176a41bbef3d225d7d609b8dc9d5c04361b1df322eefab58f9620cfdff323e2bd7127c7e4f5f21f291b173a769cefa93ece InconsolataLGC-OT-1.3.0.tar.xz"
diff --git a/user/inih/APKBUILD b/user/inih/APKBUILD
new file mode 100644
index 000000000..9d701cd95
--- /dev/null
+++ b/user/inih/APKBUILD
@@ -0,0 +1,38 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=inih
+pkgver=58
+pkgrel=0
+pkgdesc="Simple .INI file parser in C"
+url=" "
+arch="all"
+license="BSD-3-Clause"
+depends=""
+makedepends="meson"
+subpackages="$pkgname-dev"
+source="https://github.com/benhoyt/inih/archive/r58/$pkgname-$pkgver.tar.gz
+ testrun.patch
+ "
+builddir="$srcdir/inih-r58"
+
+build() {
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ . output
+ meson compile -C output
+}
+
+check() {
+ meson test -C output
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C output
+}
+
+sha512sums="d69f488299c1896e87ddd3dd20cd9db5848da7afa4c6159b8a99ba9a5d33f35cadfdb9f65d6f2fe31decdbadb8b43bf610ff2699df475e1f9ff045e343ac26ae inih-58.tar.gz
+88f38fa41efa91a3eeef065251a6424fdfbb6d4ed975dfcce4730374f61f328ca2b13f3db123eed2c5ade9e54c1f797481dbcb284b22554dd89068053ead1035 testrun.patch"
diff --git a/user/inih/testrun.patch b/user/inih/testrun.patch
new file mode 100644
index 000000000..987712773
--- /dev/null
+++ b/user/inih/testrun.patch
@@ -0,0 +1,185 @@
+From 59461b32ee99e1573ecee98c1122815187ef6e82 Mon Sep 17 00:00:00 2001
+From: matoro <matoro@users.noreply.github.com>
+Date: Tue, 7 May 2024 15:41:36 -0400
+Subject: [PATCH] Add meson support for tests
+
+Allows tests to use "meson test" instead of a shell script. This also
+means that they now fully respect user-specified toolchain (e.g. clang
+compiler, custom CFLAGS, etc). Running C++ test is conditional on
+enabling INIReader support in the build.
+
+```
+ 1/16 test_multi OK 0.05s
+ 2/16 test_multi_max_line OK 0.04s
+ 3/16 test_single OK 0.04s
+ 4/16 test_disallow_inline_comments OK 0.03s
+ 5/16 test_stop_on_first_error OK 0.03s
+ 6/16 test_handler_lineno OK 0.02s
+ 7/16 test_heap OK 0.06s
+ 8/16 test_string OK 0.06s
+ 9/16 test_heap_max_line OK 0.05s
+10/16 test_heap_realloc OK 0.05s
+11/16 test_heap_realloc_max_line OK 0.05s
+12/16 test_heap_string OK 0.04s
+13/16 test_call_handler_on_new_section OK 0.04s
+14/16 test_allow_no_value OK 0.03s
+15/16 test_alloc OK 0.02s
+16/16 test_INIReaderExample OK 0.02s
+
+Ok: 16
+Expected Fail: 0
+Fail: 0
+Unexpected Pass: 0
+Skipped: 0
+Timeout: 0
+```
+---
+ .github/workflows/tests.yml | 13 ++++++++++++-
+ examples/meson.build | 10 ++++++++++
+ meson.build | 15 ++++++++++++---
+ tests/meson.build | 25 +++++++++++++++++++++++++
+ tests/runtest.sh | 6 ++++++
+ 5 files changed, 65 insertions(+), 4 deletions(-)
+ create mode 100644 examples/meson.build
+ create mode 100644 tests/meson.build
+ create mode 100755 tests/runtest.sh
+
+diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
+index 4971e43..b34ab59 100644
+--- a/.github/workflows/tests.yml
++++ b/.github/workflows/tests.yml
+@@ -11,7 +11,7 @@ jobs:
+ runs-on: ubuntu-latest
+
+ steps:
+- - uses: actions/checkout@v2
++ - uses: actions/checkout@v4
+
+ - name: Run Diff Tests
+ run: |
+@@ -20,3 +20,14 @@ jobs:
+ cd ../examples
+ ./cpptest.sh
+ git diff --exit-code
++
++ build-meson:
++ runs-on: ubuntu-latest
++
++ steps:
++ - uses: actions/checkout@v4
++ - uses: actions/setup-python@v5
++ - uses: BSFishy/meson-build@v1.0.3
++ with:
++ action: test
++ meson-version: 1.4.1
+diff --git a/examples/meson.build b/examples/meson.build
+new file mode 100644
+index 0000000..bb1979e
+--- /dev/null
++++ b/examples/meson.build
+@@ -0,0 +1,10 @@
++runtest = files(join_paths(meson.project_source_root(), 'tests', 'runtest.sh'))
++
++tests = {
++ 'INIReaderExample': { 'args': [] },
++}
++
++foreach name, properties : tests
++ exe = executable('unittest_' + name, src_inih, src_INIReader, 'INIReaderExample.cpp', cpp_args : ['-Wall', properties['args']])
++ test('test_' + name, runtest, depends : [exe], args : [files('cpptest.txt'), exe.full_path()])
++endforeach
+diff --git a/meson.build b/meson.build
+index d440cbc..4e4fe4b 100644
+--- a/meson.build
++++ b/meson.build
+@@ -2,7 +2,8 @@ project('inih',
+ ['c'],
+ license : 'BSD-3-Clause',
+ version : '58',
+- default_options : ['cpp_std=c++11']
++ default_options : ['cpp_std=c++11'],
++ meson_version: '>=0.56.0'
+ )
+
+ #### options ####
+@@ -71,8 +72,10 @@ endif
+ #### inih ####
+ inc_inih = include_directories('.')
+
++src_inih = files('ini.c')
++
+ lib_inih = library('inih',
+- ['ini.c'],
++ [src_inih],
+ include_directories : inc_inih,
+ c_args : [arg_static, extra_args],
+ install : distro_install,
+@@ -96,13 +99,17 @@ inih_dep = declare_dependency(
+ include_directories : inc_inih
+ )
+
++subdir('tests')
++
+ #### INIReader ####
+ if get_option('with_INIReader')
+ add_languages('cpp')
+ inc_INIReader = include_directories('cpp')
+
++ src_INIReader = files(join_paths('cpp', 'INIReader.cpp'))
++
+ lib_INIReader = library('INIReader',
+- ['cpp/INIReader.cpp'],
++ src_INIReader,
+ cpp_args : extra_args,
+ include_directories : inc_INIReader,
+ dependencies : inih_dep,
+@@ -126,4 +133,6 @@ if get_option('with_INIReader')
+ include_directories : inc_INIReader,
+ compile_args : extra_args
+ )
++
++ subdir('examples')
+ endif
+diff --git a/tests/meson.build b/tests/meson.build
+new file mode 100644
+index 0000000..d0a2c52
+--- /dev/null
++++ b/tests/meson.build
+@@ -0,0 +1,25 @@
++runtest = files(join_paths(meson.project_source_root(), 'tests', 'runtest.sh'))
++
++tests = {
++ 'multi': { 'args': [] },
++ 'multi_max_line': { 'args': ['-DINI_MAX_LINE=20'] },
++ 'single': { 'args': ['-DINI_ALLOW_MULTILINE=0'] },
++ 'disallow_inline_comments': { 'args': ['-DINI_ALLOW_INLINE_COMMENTS=0'] },
++ 'stop_on_first_error': { 'args': ['-DINI_STOP_ON_FIRST_ERROR=1'] },
++ 'handler_lineno': { 'args': ['-DINI_HANDLER_LINENO=1'] },
++ 'string': { 'src': 'unittest_string.c', 'args': ['-DINI_MAX_LINE=20'] },
++ 'heap': { 'args': ['-DINI_USE_STACK=0'] },
++ 'heap_max_line': { 'args': ['-DINI_USE_STACK=0', '-DINI_MAX_LINE=20', '-DINI_INITIAL_ALLOC=20'] },
++ 'heap_realloc': { 'args': ['-DINI_USE_STACK=0', '-DINI_ALLOW_REALLOC=1', '-DINI_INITIAL_ALLOC=5'] },
++ 'heap_realloc_max_line': { 'args': ['-DINI_USE_STACK=0', '-DINI_MAX_LINE=20', '-DINI_ALLOW_REALLOC=1', '-DINI_INITIAL_ALLOC=5'] },
++ 'heap_string': { 'src': 'unittest_string.c', 'args': ['-DINI_USE_STACK=0', '-DINI_MAX_LINE=20', '-DINI_INITIAL_ALLOC=20'] },
++ 'call_handler_on_new_section': { 'args': ['-DINI_CALL_HANDLER_ON_NEW_SECTION=1'] },
++ 'allow_no_value': { 'args': ['-DINI_ALLOW_NO_VALUE=1'] },
++ 'alloc': { 'src': 'unittest_alloc.c', 'args': ['-DINI_CUSTOM_ALLOCATOR=1', '-DINI_USE_STACK=0', '-DINI_ALLOW_REALLOC=1', '-DINI_INITIAL_ALLOC=12'] }
++}
++
++foreach name, properties : tests
++ test_src = 'src' in properties ? properties['src'] : 'unittest.c'
++ exe = executable('unittest_' + name, src_inih, test_src, c_args : ['-Wall', properties['args']])
++ test('test_' + name, runtest, depends : [exe], args : [files('baseline_' + name + '.txt'), exe.full_path()])
++endforeach
+diff --git a/tests/runtest.sh b/tests/runtest.sh
+new file mode 100755
+index 0000000..9db945b
+--- /dev/null
++++ b/tests/runtest.sh
+@@ -0,0 +1,6 @@
++#!/usr/bin/env bash
++
++set -euo pipefail
++
++cd "$(dirname "${1}")"
++diff "${1}" <("${2}")
diff --git a/user/inotify-tools/APKBUILD b/user/inotify-tools/APKBUILD
new file mode 100644
index 000000000..86545ea28
--- /dev/null
+++ b/user/inotify-tools/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=inotify-tools
+pkgver=4.23.9.0
+pkgrel=0
+pkgdesc="C library and a command-line programs to interface with inotify"
+url="https://github.com/inotify-tools/inotify-tools"
+arch="all"
+license="GPL-2.0-only"
+makedepends="automake autoconf libtool"
+subpackages="$pkgname-dev $pkgname-libs $pkgname-doc"
+source="$pkgname-$pkgver.tar.gz::https://github.com/inotify-tools/inotify-tools/archive/$pkgver.tar.gz"
+
+prepare() {
+ default_prepare
+ autoreconf -fiv
+}
+
+build() {
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="8f44037a482fa39978b845b4989834e8c897ad872913c6cb8c4a987e0d13f9177b05f593332b859d7adde228fdc3512fd45d66cab65368c38926f41d57e22d13 inotify-tools-4.23.9.0.tar.gz"
diff --git a/user/intlfonts/APKBUILD b/user/intlfonts/APKBUILD
index 8459dd241..ef31cd0be 100644
--- a/user/intlfonts/APKBUILD
+++ b/user/intlfonts/APKBUILD
@@ -14,7 +14,6 @@ subpackages=""
source="https://ftp.gnu.org/gnu/intlfonts/intlfonts-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -30,11 +29,11 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
mv "$pkgdir"/usr/share/fonts/X11/misc/TrueType \
"$pkgdir"/usr/share/fonts/X11/TTF
- rm "$pkgdir"/usr/share/fonts/X11/misc/fonts.{alias,dir}
+ rm "$pkgdir"/usr/share/fonts/X11/misc/fonts.alias
+ rm "$pkgdir"/usr/share/fonts/X11/misc/fonts.dir
# font-daewoo-misc
rm "$pkgdir"/usr/share/fonts/X11/misc/hanglg16.pcf.gz
diff --git a/user/intltool/APKBUILD b/user/intltool/APKBUILD
index 0fa53ea6c..76a0439da 100644
--- a/user/intltool/APKBUILD
+++ b/user/intltool/APKBUILD
@@ -7,12 +7,12 @@ url="https://freedesktop.org/wiki/Software/intltool"
arch="noarch"
license="GPL-2.0+"
depends="file perl perl-xml-parser"
+makedepends=""
subpackages="$pkgname-doc"
source="http://edge.launchpad.net/intltool/trunk/$pkgver/+download/$pkgname-$pkgver.tar.gz
intltool-perl-regexp.patch"
build () {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -21,12 +21,10 @@ build () {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/iotop-c/APKBUILD b/user/iotop-c/APKBUILD
new file mode 100644
index 000000000..b8c65e6bf
--- /dev/null
+++ b/user/iotop-c/APKBUILD
@@ -0,0 +1,27 @@
+# Contributor: Zach van Rijn <me@zv.io>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=iotop-c
+pkgver=1.25
+pkgrel=0
+pkgdesc="A 'top' utility for I/O"
+url="https://github.com/Tomas-M/iotop"
+arch="all"
+options="!check" # no test suite
+license="GPL-2.0+"
+depends=""
+makedepends="ncurses-dev"
+provides="iotop"
+replaces="iotop"
+subpackages="$pkgname-doc"
+source="https://github.com/Tomas-M/iotop/releases/download/v$pkgver/iotop-$pkgver.tar.xz"
+builddir="$srcdir"/iotop-$pkgver
+
+build() {
+ make
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="ee51c6c42b85684a00afb4e52b071d446263b579706d1dab7497e5b0e01da5f839185b4404e464ff7d300ff975283331e1f15c033bd66f7d6e2611ccddf39f18 iotop-1.25.tar.xz"
diff --git a/user/ipaexfont/APKBUILD b/user/ipaexfont/APKBUILD
index 3a73df06f..fd3fb85d5 100644
--- a/user/ipaexfont/APKBUILD
+++ b/user/ipaexfont/APKBUILD
@@ -1,7 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ipaexfont
-pkgver=003.01
+pkgver=004.01
+_pkgver="${pkgver%.*}${pkgver#*.}"
pkgrel=0
pkgdesc="Standard Japanese typefaces"
url="https://ipafont.ipa.go.jp/"
@@ -11,12 +12,11 @@ license="IPA"
depends="fontconfig"
makedepends=""
subpackages=""
-source="https://oscdl.ipa.go.jp/IPAexfont/IPAexfont${pkgver/./}.zip"
-builddir="$srcdir/IPAexfont${pkgver/./}"
+source="https://distfiles.adelielinux.org/source/IPAexfont$_pkgver.zip"
+builddir="$srcdir/IPAexfont$_pkgver"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ *.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ "$builddir"/*.ttf
}
-sha512sums="92df9f6a1002ea68cfd88f2b1fe4a5a5d6dfdb0ac4be7f4c0815200ce1962d3db7330ec17e7380efe4ba0735a55e0f5160b0cd6c1553a79fc8a860c434958388 IPAexfont00301.zip"
+sha512sums="fe639ded0a25eed66df8cc1e9d5e965b501574a25fab542a749b3cb8464690448e44343ff5845aecd3224ec481c4089ee56e64880cbbc9211a260b22d4cc68cd IPAexfont00401.zip"
diff --git a/user/iperf3/APKBUILD b/user/iperf3/APKBUILD
index 1e1fad965..5af02b212 100644
--- a/user/iperf3/APKBUILD
+++ b/user/iperf3/APKBUILD
@@ -3,7 +3,7 @@
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=iperf3
_pkgname=iperf
-pkgver=3.6
+pkgver=3.10.1
pkgrel=0
pkgdesc="A tool to measure IP bandwidth using UDP or TCP"
url="https://software.es.net/iperf/"
@@ -11,19 +11,16 @@ arch="all"
license="BSD-3-Clause"
depends=""
makedepends=""
-install=""
subpackages="$pkgname-doc $pkgname-openrc"
source="$pkgname-$pkgver.tar.gz::https://downloads.es.net/pub/$_pkgname/$_pkgname-$pkgver.tar.gz
$_pkgname.initd
$_pkgname.confd
build-fixes.patch
- remove-pg-flags.patch
"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
CFLAGS="$CFLAGS -D_GNU_SOURCE"
./configure \
--build=$CBUILD \
@@ -36,12 +33,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -Dm755 "$srcdir"/$_pkgname.initd \
@@ -50,8 +45,7 @@ package() {
"$pkgdir"/etc/conf.d/$_pkgname
}
-sha512sums="322a6893ad28c6ce9c9849e8a0326408ed76f09bbb13591c01c3d051bd4777a2acdb8f5032b9d1bb37d47ad3818d8b18ab6c0be4d40559040eb7e57bbfc06f39 iperf3-3.6.tar.gz
+sha512sums="127a5276bad07401cafb43093f8677c5b4672aae9b4ab4fab5e2987b9f2e664b7370a39d260a4da572aeb318f02df9c491f1214602e5e3bde617127d1f049243 iperf3-3.10.1.tar.gz
339fb04b41cce11e8ea8694d95c13af9c88e0d1143356d913ec810c9b11efa27212d585b5dcc49cc2eb860a6d8bc557092c8659d7d5cfe532c5afdb36f8eedf8 iperf.initd
fb5e155fff568a72488cc1511d30358835a48bcce309f8f46d040160932b4a4ccb85040c27c60dee477900a25bd34c50eac21d1d0bea984b40faa401be2ba7e8 iperf.confd
-126043503eebf84bccf26758f18715eaf81131e2fc9ef1fe829e55acb2f14e97db18e9b890b8bf13c230ac80c7537615272af4e072808e25bde8ddd6f326f198 build-fixes.patch
-ed0fb3a3af0dae3e9f58ff6643cb15defdd31f65cf966a6013fdf2a7fd67a7f8ef522a7c8f3269bd43d5ca991a86d758526c384ebc0984b1403bb24f61a1779b remove-pg-flags.patch"
+126043503eebf84bccf26758f18715eaf81131e2fc9ef1fe829e55acb2f14e97db18e9b890b8bf13c230ac80c7537615272af4e072808e25bde8ddd6f326f198 build-fixes.patch"
diff --git a/user/iperf3/remove-pg-flags.patch b/user/iperf3/remove-pg-flags.patch
deleted file mode 100644
index 1ed47eebf..000000000
--- a/user/iperf3/remove-pg-flags.patch
+++ /dev/null
@@ -1,29 +0,0 @@
---- a/src/Makefile.am
-+++ b/src/Makefile.am
-@@ -50,9 +50,9 @@
- iperf3_profile_SOURCES = main.c \
- $(libiperf_la_SOURCES)
-
--iperf3_profile_CFLAGS = -pg -g
-+iperf3_profile_CFLAGS = -g
- iperf3_profile_LDADD = libiperf.la
--iperf3_profile_LDFLAGS = -pg -g
-+iperf3_profile_LDFLAGS = -g
-
- # Specify the sources and various flags for the test cases
- t_timer_SOURCES = t_timer.c
-
---- a/src/Makefile.in
-+++ b/src/Makefile.in
-@@ -643,9 +643,9 @@
- iperf3_profile_SOURCES = main.c \
- $(libiperf_la_SOURCES)
-
--iperf3_profile_CFLAGS = -pg -g
-+iperf3_profile_CFLAGS = -g
- iperf3_profile_LDADD = libiperf.la
--iperf3_profile_LDFLAGS = -pg -g
-+iperf3_profile_LDFLAGS = -g
-
- # Specify the sources and various flags for the test cases
- t_timer_SOURCES = t_timer.c
diff --git a/user/ipmiutil/APKBUILD b/user/ipmiutil/APKBUILD
index fdf32fbe2..18feb0c24 100644
--- a/user/ipmiutil/APKBUILD
+++ b/user/ipmiutil/APKBUILD
@@ -1,26 +1,21 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ipmiutil
-pkgver=3.1.3
+pkgver=3.1.8
pkgrel=0
pkgdesc="IPMI Management Utilities"
url="http://ipmiutil.sourceforge.net/"
arch="all"
options="!check" # No test suite shipped.
license="BSD-2-Clause AND BSD-3-Clause AND GPL-2.0+"
+depends=""
depends_dev="openssl-dev"
makedepends="$depends_dev linux-headers"
subpackages="$pkgname-dev $pkgname-doc $pkgname-openrc"
source="https://downloads.sourceforge.net/project/ipmiutil/ipmiutil-$pkgver.tar.gz
- ipmiutil-3.0.7-fix-sha256.patch"
-
-prepare() {
- cd "$builddir"
- default_prepare
- update_config_sub
-}
+ ipmiutil-3.0.7-fix-sha256.patch
+ "
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,13 +28,12 @@ build() {
--disable-systemd \
--enable-sha256 \
--enable-gpl
- make
+ make -j1
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="bd1f95b59583a07a5b6001b40e59269f25eb63b69e33f7fad6dd40136e1ea7611e647eb5ed2e2a9746944bde2dc2a3aa2def44238947693d75d9ca48697e1b99 ipmiutil-3.1.3.tar.gz
+sha512sums="77a01be420d8362ddce2b2b2bd44ee53a70812b29b3dd7bc5add6429f0e43a48905ca0401e1855f2cca5e69086605eb7b84e2f4bf9cf33251934acc0fe51346f ipmiutil-3.1.8.tar.gz
74e8951bccd004f765b99de87dc5f04834e594b3e14ba885148fb971eaf15164ccac2de880e409f201a38cba5c0948a0fabc04e1e34fb396f50b1ecddb6b305b ipmiutil-3.0.7-fix-sha256.patch"
diff --git a/user/iptables/APKBUILD b/user/iptables/APKBUILD
new file mode 100644
index 000000000..4cf764bad
--- /dev/null
+++ b/user/iptables/APKBUILD
@@ -0,0 +1,67 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Contributor: Molly Miller <adelie@m-squa.red>
+# Maintainer:
+pkgname=iptables
+pkgver=1.8.5
+pkgrel=0
+pkgdesc="Linux kernel firewall, NAT and packet mangling tools"
+url="https://www.netfilter.org/projects/iptables/index.html"
+arch="all"
+options="!check" # No test suite.
+license="GPL-2.0+"
+depends=""
+depends_dev="linux-headers"
+# extra functionality may be enabled in the future if libmnl and
+# libnetfilter_conntrack are packaged.
+makedepends="$depends_dev libnftnl-dev bison flex autoconf automake"
+subpackages="$pkgname-doc $pkgname-dev $pkgname-openrc"
+source="https://www.netfilter.org/projects/iptables/files/iptables-$pkgver.tar.bz2
+ iptables.initd
+ iptables.confd
+ ip6tables.confd
+ "
+
+build() {
+ export CFLAGS="$CFLAGS -D_GNU_SOURCE"
+ ./configure \
+ --build="$CBUILD" \
+ --host="$CHOST" \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --sbindir=/sbin \
+ --without-kernel \
+ --disable-nftables \
+ --enable-devel \
+ --enable-libipq \
+ --enable-shared
+
+ # do not use rpath - iptables seems to use old libtool which requires
+ # these hacks
+ sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool
+ sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool
+
+ make
+}
+
+package() {
+ make -j1 install DESTDIR="$pkgdir"
+
+ mkdir -p "$pkgdir"/usr/include/libiptc \
+ "$pkgdir"/usr/lib \
+ "$pkgdir"/var/lib/iptables \
+ "$pkgdir"/etc/iptables
+
+ install -m644 include/iptables.h include/ip6tables.h \
+ "$pkgdir"/usr/include/
+ install include/libiptc/*.h "$pkgdir"/usr/include/libiptc/
+
+ install -D -m755 "$srcdir"/iptables.initd "$pkgdir"/etc/init.d/iptables
+ install -D -m755 "$srcdir"/iptables.initd "$pkgdir"/etc/init.d/ip6tables
+ install -D -m644 "$srcdir"/iptables.confd "$pkgdir"/etc/conf.d/iptables
+ install -D -m644 "$srcdir"/ip6tables.confd "$pkgdir"/etc/conf.d/ip6tables
+}
+
+sha512sums="6a6baa541bb7aa331b176e0a91894e0766859814b59e77c71351ac34d6ebd337487981db48c70e476a48c67bcf891cfc663221a7582feb1496ad1df56eb28da8 iptables-1.8.5.tar.bz2
+726dfa1aa598d9dff802b99347138c861703b3dd28b2721a6b79b12f87d988369d3b4b9daee7cb2f9a930daac8921600de1e5342a347b3eae3791f0b9f0acbeb iptables.initd
+cb7fecd5cab2c78bd3f215a41f39ec11c37eb360efbe83982378a0e647e0aa9dc0b7ec915a5b5081aa2f7747464787e69404aa15ba15a063c32cb8fb7dd13d1e iptables.confd
+0897a7a22f8b700f7f1f5c355ad6cbf39740e44d6c962af99e479978d8a2d556ca7fe4e31f238829046b4a871ce0b5fd52e2544f1361d15dd1ea3e33992646c4 ip6tables.confd"
diff --git a/user/iptables/ip6tables.confd b/user/iptables/ip6tables.confd
new file mode 100644
index 000000000..1fa63f33a
--- /dev/null
+++ b/user/iptables/ip6tables.confd
@@ -0,0 +1,14 @@
+# /etc/conf.d/ip6tables
+
+# Location in which ip6tables initscript will save set rules on
+# service shutdown
+IP6TABLES_SAVE="/etc/iptables/rules6-save"
+
+# Options to pass to ip6tables-save and ip6tables-restore
+SAVE_RESTORE_OPTIONS="-c"
+
+# Save state on stopping iptables
+SAVE_ON_STOP="yes"
+
+# Enable/disable IPv6 forwarding with the rules
+IPFORWARD="no"
diff --git a/user/iptables/iptables.confd b/user/iptables/iptables.confd
new file mode 100644
index 000000000..c9e5a685c
--- /dev/null
+++ b/user/iptables/iptables.confd
@@ -0,0 +1,14 @@
+# /etc/conf.d/iptables
+
+# Location in which iptables initscript will save set rules on
+# service shutdown
+IPTABLES_SAVE="/etc/iptables/rules-save"
+
+# Options to pass to iptables-save and iptables-restore
+SAVE_RESTORE_OPTIONS="-c"
+
+# Save state on stopping iptables
+SAVE_ON_STOP="yes"
+
+# Enable/disable IPv4 forwarding with the rules
+IPFORWARD="no"
diff --git a/user/iptables/iptables.initd b/user/iptables/iptables.initd
new file mode 100644
index 000000000..63b2f06a4
--- /dev/null
+++ b/user/iptables/iptables.initd
@@ -0,0 +1,136 @@
+#!/sbin/openrc-run
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-firewall/iptables/files/iptables-1.4.11.init,v 1.2 2011/12/04 10:15:59 swegener Exp $
+
+description="IPv4/IPv6 packet filtering and NAT"
+description_save="Save firewall state"
+description_panic="Drop all packets"
+description_reload="Reload configuration"
+
+extra_commands="save panic"
+extra_started_commands="reload"
+
+iptables_name=${SVCNAME}
+if [ "${iptables_name}" != "iptables" -a "${iptables_name}" != "ip6tables" ] ; then
+ iptables_name="iptables"
+fi
+
+iptables_bin="/sbin/${iptables_name}"
+case ${iptables_name} in
+ iptables) iptables_proc="/proc/net/ip_tables_names"
+ iptables_save=${IPTABLES_SAVE}
+ sysctl_ipfwd=net.ipv4.ip_forward;;
+ ip6tables) iptables_proc="/proc/net/ip6_tables_names"
+ iptables_save=${IP6TABLES_SAVE}
+ sysctl_ipfwd=net.ipv6.conf.all.forwarding;;
+esac
+
+depend() {
+ before net
+ after sysctl
+ use logger
+ provide firewall
+}
+
+set_table_policy() {
+ local chains table="$1" policy="$2"
+ case ${table} in
+ nat) chains="PREROUTING POSTROUTING OUTPUT";;
+ mangle) chains="PREROUTING INPUT FORWARD OUTPUT POSTROUTING";;
+ filter) chains="INPUT FORWARD OUTPUT";;
+ *) chains="";;
+ esac
+ local chain
+ for chain in ${chains} ; do
+ ${iptables_bin} -t ${table} -P ${chain} ${policy}
+ done
+}
+
+checkkernel() {
+ if [ ! -e ${iptables_proc} ] ; then
+ eerror "Your kernel lacks ${iptables_name} support, please load"
+ eerror "appropriate modules and try again."
+ return 1
+ fi
+ return 0
+}
+checkconfig() {
+ if [ ! -f ${iptables_save} ] ; then
+ eerror "Not starting ${iptables_name}. First create some rules then run:"
+ eerror "/etc/init.d/${iptables_name} save"
+ return 1
+ fi
+ return 0
+}
+
+start() {
+ checkconfig || return 1
+ ebegin "Loading ${iptables_name} state and starting firewall"
+ ${iptables_bin}-restore ${SAVE_RESTORE_OPTIONS} < "${iptables_save}"
+ eend $?
+ if yesno "${IPFORWARD}"; then
+ ebegin "Enabling forwarding"
+ /sbin/sysctl -w ${sysctl_ipfwd}=1 > /dev/null
+ eend $?
+ fi
+}
+
+stop() {
+ if yesno "${IPFORWARD}"; then
+ ebegin "Disabling forwarding"
+ /sbin/sysctl -w ${sysctl_ipfwd}=0 > /dev/null
+ eend $?
+ fi
+ if yesno "${SAVE_ON_STOP}"; then
+ save || return 1
+ fi
+ checkkernel || return 1
+ ebegin "Stopping firewall"
+ local a
+ for a in $(cat ${iptables_proc}) ; do
+ set_table_policy $a ACCEPT
+
+ ${iptables_bin} -F -t $a
+ ${iptables_bin} -X -t $a
+ done
+ eend $?
+}
+
+reload() {
+ checkkernel || return 1
+ ebegin "Flushing firewall"
+ local a
+ for a in $(cat ${iptables_proc}) ; do
+ ${iptables_bin} -F -t $a
+ ${iptables_bin} -X -t $a
+ done
+ eend $?
+
+ start
+}
+
+save() {
+ ebegin "Saving ${iptables_name} state"
+ touch "${iptables_save}"
+ chmod 0600 "${iptables_save}"
+ ${iptables_bin}-save ${SAVE_RESTORE_OPTIONS} > "${iptables_save}"
+ eend $?
+}
+
+panic() {
+ checkkernel || return 1
+ if service_started ${iptables_name}; then
+ rc-service ${iptables_name} stop
+ fi
+
+ local a
+ ebegin "Dropping all packets"
+ for a in $(cat ${iptables_proc}) ; do
+ ${iptables_bin} -F -t $a
+ ${iptables_bin} -X -t $a
+
+ set_table_policy $a DROP
+ done
+ eend $?
+}
diff --git a/user/iputils/APKBUILD b/user/iputils/APKBUILD
index fc6b1b3e6..ed0ac81a3 100644
--- a/user/iputils/APKBUILD
+++ b/user/iputils/APKBUILD
@@ -1,55 +1,41 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=iputils
-pkgver=20180629
+pkgver=20211215
pkgrel=0
pkgdesc="IP Configuration Utilities (and Ping)"
url="https://github.com/iputils/iputils/"
arch="all"
+options="!check suid" # tests require binaries with suid/capabilities
license="BSD-3-Clause AND GPL-2.0-or-later"
-makedepends="libcap-dev openssl-dev libxslt docbook-xsl"
-replaces="bbsuid"
-subpackages="$pkgname-doc"
-source="$pkgname-$pkgver.tgz::https://github.com/$pkgname/$pkgname/archive/s$pkgver.tar.gz
- time.patch
- fix-init-of-cmsg.patch
- fix-idn.patch
- "
-options="!check suid" # there is no testsuite for these applications
-builddir="$srcdir/$pkgname-s$pkgver"
+depends=""
+makedepends="docbook-xsl docbook-xsl-ns libcap-dev libgcrypt-dev libxslt meson
+ openssl-dev iproute2"
+subpackages="$pkgname-doc $pkgname-lang $pkgname-openrc"
+source="$pkgname-$pkgver.tgz::https://github.com/$pkgname/$pkgname/archive/$pkgver.tar.gz"
+builddir="$srcdir/$pkgname-$pkgver"
build() {
- cd "$builddir"
# we're waiting for idn support in musl so that we can enable it here
# https://wiki.musl-libc.org/functional-differences-from-glibc.html#Name-Resolver/DNS
- make all ninfod USE_IDN=no USE_NETTLE=no KERNEL_INCLUDE=/usr/include
- make man
+ meson --prefix /usr \
+ --buildtype=plain \
+ -DBUILD_ARPING=true \
+ -DUSE_IDN=false \
+ -DNO_SETCAP_OR_SUID=false \
+ builddir
+ ninja -v -C builddir
}
-package() {
- local name
- cd "$builddir"
-
- for name in arping clockdiff ipg rarpd rdisc tftpd tracepath; do
- install -D -m755 $name "$pkgdir"/usr/sbin/$name
- done
- install -D -m755 ninfod/ninfod "$pkgdir"/usr/sbin/ninfod
-
- for name in ping traceroute6; do
- install -D -m4755 $name "$pkgdir"/bin/$name
- done
+check() {
+ ninja -C builddir test
+}
- mkdir -p "$pkgdir"/usr/share/man/man8
- for doc in ./doc/*.8; do
- gzip $doc
- install -m644 "$doc".gz "$pkgdir"/usr/share/man/man8/
- done
+package() {
+ DESTDIR=$pkgdir ninja -C builddir install
- ln -s tracepath "$pkgdir"/usr/sbin/tracepath6
- ln -s ping "$pkgdir"/bin/ping6
+ ln -s tracepath "$pkgdir"/usr/bin/tracepath6
+ ln -s ping "$pkgdir"/usr/bin/ping6
}
-sha512sums="16b8f5ad1cf88083ebaee0a71fddb14bb0a904336fd0baebfcca86c27ac0773553b21d12790b05cab7661d6432c75bbb1523e871e5e1b77faacd13ccc84f4476 iputils-20180629.tgz
-530532d16574921d0789af6a82706915e8103e712195c4f2eb6379192cc7126ba6bc9f33e8454118628d59f8932ffd2bb5aaba3b61fa93df83088e3b0d93d227 time.patch
-2779b9d987089a2a9a39c27a092f16da85881e9dfbc99edcca6baea42912b8a1a7e16b00c19684d2ea1a6123d66f78be12bef43398e63be7d7c97d3d6269a5bf fix-init-of-cmsg.patch
-b3a5e5ef9ed1ed12a137f176db6a444f15db67dfaef3706514bc4d0cd2a332fb8aeeae0460fca8a1dfef2e0ce2ae0cf2218a74e3f61c46fcb27715a030425ac0 fix-idn.patch"
+sha512sums="191062e51f7c8e8b38e3e4a96845adb77cd69f487d548c7cc578fad544443b4bc0dbe965d8f8e6fbda0a2f5b2fe2829789c05f873190c53d773245959298f6e9 iputils-20211215.tgz"
diff --git a/user/iputils/fix-idn.patch b/user/iputils/fix-idn.patch
deleted file mode 100644
index 4aaae8e82..000000000
--- a/user/iputils/fix-idn.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- iputils-s20180629/ping.c.orig 2018-06-29 11:00:46.000000000 -0700
-+++ iputils-s20180629/ping.c 2018-07-06 01:09:10.479830175 -0700
-@@ -207,9 +210,10 @@
-
- #ifdef USE_IDN
- setlocale(LC_ALL, "");
--#endif
-+
- if (!strcmp(setlocale(LC_ALL, NULL), "C"))
- hints.ai_flags &= ~ AI_CANONIDN;
-+#endif
-
- /* Support being called using `ping4` or `ping6` symlinks */
- if (argv[0][strlen(argv[0])-1] == '4')
diff --git a/user/iputils/fix-init-of-cmsg.patch b/user/iputils/fix-init-of-cmsg.patch
deleted file mode 100644
index 76ebc16c2..000000000
--- a/user/iputils/fix-init-of-cmsg.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Fixes ping on s390x.
-
-diff --git a/ping.c b/ping.c
-index a0857a1..329553d 100644
---- a/ping.c
-+++ b/ping.c
-@@ -108,8 +108,11 @@ static int parsetos(char *str);
- static struct {
- struct cmsghdr cm;
- struct in_pktinfo ipi;
--} cmsg = { {sizeof(struct cmsghdr) + sizeof(struct in_pktinfo), SOL_IP, IP_PKTINFO},
-- {0, }};
-+} cmsg = { .cm = {
-+ .cmsg_len = sizeof(struct cmsghdr) + sizeof(struct in_pktinfo),
-+ .cmsg_level = SOL_IP,
-+ .cmsg_type = IP_PKTINFO},
-+ .ipi = {0, }};
- int cmsg_len;
-
- struct sockaddr_in source;
diff --git a/user/iputils/time.patch b/user/iputils/time.patch
deleted file mode 100644
index 1d6033f7a..000000000
--- a/user/iputils/time.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- ./tracepath.c.orig
-+++ ./tracepath.c
-@@ -12,6 +12,7 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
-+#include <time.h>
- #include <sys/socket.h>
- #include <linux/types.h>
- #include <linux/errqueue.h>
diff --git a/user/irssi/APKBUILD b/user/irssi/APKBUILD
index 92effce1b..a1ecc8ca4 100644
--- a/user/irssi/APKBUILD
+++ b/user/irssi/APKBUILD
@@ -1,20 +1,24 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=irssi
-pkgver=1.2.0
+pkgver=1.4.5
pkgrel=0
pkgdesc="Text-based IRC client"
url="https://irssi.org"
arch="all"
license="GPL-2.0+ AND ISC"
+depends=""
makedepends="ncurses-dev glib-dev openssl-dev perl-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-perl"
-source="https://github.com/irssi/irssi/releases/download/$pkgver/irssi-$pkgver.tar.xz
- fix-ridiculous-egregious-conformance-error.patch
- "
+source="https://github.com/irssi/irssi/releases/download/$pkgver/irssi-$pkgver.tar.xz"
+
+# secfixes: irssi
+# 1.2.1-r0:
+# - CVE-2019-13045
+# 1.2.2-r0:
+# - CVE-2019-15717
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,12 +33,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -46,5 +48,4 @@ perl() {
mv "$pkgdir"/usr/lib "$subpkgdir"/usr
mv "$pkgdir"/usr/share/irssi/scripts "$subpkgdir"/usr/share/irssi
}
-sha512sums="343530ca63355dd6683e84f31602c9162e1e3158e52ce81e37519d1e42abbdcb621fb710fcb605fcafd7e7ea3f2c30ed62607d4ea91d8c8dc29bf893e54aee40 irssi-1.2.0.tar.xz
-88c9fe5593a81b92943d1ca419b39d074f9c52378350007c0896aa95ef056e098201b338d31da31b5ec1492e1577d2862b989e00427dc89edde0bcef46cd8e2a fix-ridiculous-egregious-conformance-error.patch"
+sha512sums="5d80107ad625feb6d2b3ac807f517c5cfeae58986d3fbfe53ea82f2dee70396f5092abdc6ef137c5651e4515e081591079b37f0e428f69990db493cfe14e4f36 irssi-1.4.5.tar.xz"
diff --git a/user/irssi/fix-ridiculous-egregious-conformance-error.patch b/user/irssi/fix-ridiculous-egregious-conformance-error.patch
deleted file mode 100644
index ceb707c9b..000000000
--- a/user/irssi/fix-ridiculous-egregious-conformance-error.patch
+++ /dev/null
@@ -1,19 +0,0 @@
---- irssi-1.2.0/tests/fe-text/test-paste-join-multiline.c.old 2019-02-11 17:27:58.000000000 +0000
-+++ irssi-1.2.0/tests/fe-text/test-paste-join-multiline.c 2019-02-19 21:28:03.250000000 +0000
-@@ -48,13 +48,15 @@
- static void test_paste_join_multiline(const paste_join_multiline_test_case *test)
- {
- char *resultstr, *t1;
-+ glong length;
- GArray *buffer = g_array_new(FALSE, FALSE, sizeof(unichar));
-
- g_test_message("Testing: %s", test->description);
- g_test_message("INPUT: \"%s\"", (t1 = g_strescape(test->input, NULL)));
- g_free(t1);
-
-- buffer->data = (char *) g_utf8_to_ucs4_fast(test->input, -1, (glong *) &buffer->len);
-+ buffer->data = (char *) g_utf8_to_ucs4_fast(test->input, -1, &length);
-+ buffer->len = length;
- paste_buffer_join_lines(buffer);
- resultstr = g_ucs4_to_utf8((unichar *) buffer->data, buffer->len, NULL, NULL, NULL);
-
diff --git a/user/iso-codes/APKBUILD b/user/iso-codes/APKBUILD
index 9fc122b61..81721b787 100644
--- a/user/iso-codes/APKBUILD
+++ b/user/iso-codes/APKBUILD
@@ -1,18 +1,18 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=iso-codes
-pkgver=4.2
+pkgver=4.5.0
pkgrel=0
pkgdesc="Lists of country, language, and currency names"
-url=" "
+url="https://salsa.debian.org/iso-codes-team/iso-codes"
arch="noarch"
license="LGPL-2.1+"
depends=""
makedepends="python3"
subpackages="$pkgname-lang $pkgname-dev"
-source="http://anduin.linuxfromscratch.org/BLFS/$pkgname/$pkgname-$pkgver.tar.xz"
+source="https://salsa.debian.org/iso-codes-team/$pkgname/-/archive/$pkgname-$pkgver/$pkgname-$pkgname-$pkgver.tar.bz2"
+builddir="$srcdir/$pkgname-$pkgname-$pkgver"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -21,13 +21,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" pkgconfigdir=/usr/lib/pkgconfig install
}
-sha512sums="1ee8505d2fb6da03d82ebe665ad963e6652ac0337a1cde16a0d6f4c04003f52330735dd7ab20131999e8c562eca09ac18edf8c4aadd7cb8bcfbe0f350a8b6987 iso-codes-4.2.tar.xz"
+sha512sums="49ad3fad7ab7e489df9fd421a582e09fb116149af7e409d7b592704c95c50e2043880791403f20978f9027c2875ea57dec04c4fe5bdf623c7544edae3f90a084 iso-codes-iso-codes-4.5.0.tar.bz2"
diff --git a/user/isync/APKBUILD b/user/isync/APKBUILD
index a1a5a09e3..04cee761a 100644
--- a/user/isync/APKBUILD
+++ b/user/isync/APKBUILD
@@ -1,20 +1,19 @@
-# Contributor: Luis Ressel <aranea@aixah.de>
-# Maintainer: Luis Ressel <aranea@aixah.de>
+# Contributor: Mira Ressel <aranea@aixah.de>
+# Maintainer:
pkgname=isync
-pkgver=1.3.0
+pkgver=1.3.3
pkgrel=0
pkgdesc="IMAP and MailDir mailbox synchronizer"
url="http://isync.sourceforge.net/"
arch="all"
+options="!check" # No test suite.
license="GPL-2.0+"
-options="!check" # No test suite
depends=""
makedepends="db-dev cyrus-sasl-dev openssl-dev zlib-dev"
subpackages="$pkgname-doc"
source="https://downloads.sourceforge.net/isync/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,8 +25,7 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b5186f2afe97cab58ce55d3ec19ae7371676ae614448614a9e3e02d09662c34b74e559f0926661fa0300ab22dab9e2e9089b78ee38b94141ff3f8b4d75578ffa isync-1.3.0.tar.gz"
+sha512sums="915824272606f75da8c05fb75872bc5cf528fa555024245094d14a25b190f1b813dd5723e9b87f27f3fbb14b100311ee487bc409d074a68d67e9ab675b12c7a1 isync-1.3.3.tar.gz"
diff --git a/user/itstool/APKBUILD b/user/itstool/APKBUILD
deleted file mode 100644
index 7936887b7..000000000
--- a/user/itstool/APKBUILD
+++ /dev/null
@@ -1,42 +0,0 @@
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=itstool
-pkgver=2.0.6
-pkgrel=0
-pkgdesc="ITS-based XML translation tool"
-url="http://itstool.org/"
-arch="noarch"
-license="GPL-3.0+"
-depends="py3-libxml2 python3"
-subpackages="$pkgname-doc"
-source="http://files.itstool.org/itstool/$pkgname-$pkgver.tar.bz2
- fix-segfault.patch"
-
-build() {
- cd "$builddir"
-
- PYTHON="/usr/bin/python3" ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --infodir=/usr/share/info \
- --localstatedir=/var
- make
-}
-
-check() {
- cd "$builddir"
- make check
- # verify that the shebang is correct
- chmod +x itstool
- ./itstool
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
-}
-
-sha512sums="51058bdcb208f6fb84810f71f9bf67e42b00bf157a9756be45f060849c0aff36f695f4403404193720d4446818fa77de61fa94eed9e8789d26c07a2926072eb7 itstool-2.0.6.tar.bz2
-eb426e7cc9f151154f47b93ef46d6fcfb5fa0982be3bf78863ebf5ea009a89de252a6c63dfb090d76003c47107ebb5d1ac2a7d1ef7db08defe19e32f996dbdbd fix-segfault.patch"
diff --git a/user/itstool/fix-segfault.patch b/user/itstool/fix-segfault.patch
deleted file mode 100644
index 047b691b7..000000000
--- a/user/itstool/fix-segfault.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 1549b6d12eb2f35e5c7f1b1856c21768e92ba794 Mon Sep 17 00:00:00 2001
-From: Guido Trentalancia <guido@trentalancia.com>
-Date: Wed, 1 Nov 2017 18:23:44 +0100
-Subject: [PATCH] Fix a segmentation fault bug introduced with version 2.0.4.
-
-https://github.com/itstool/itstool/issues/17
-
-This fix seems a lot easier than the previous reverted commit.
----
- itstool.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/itstool.in b/itstool.in
-index c1d0585..e492e95 100755
---- a/itstool.in
-+++ b/itstool.in
-@@ -1048,7 +1048,7 @@ class Document (object):
- else:
- ctxt.replaceEntities(1)
- ctxt.parseDocument()
-- trnode = ctxt.doc().getRootElement()
-+ trnode = ctxt.doc().getRootElement().copyNode(1)
- try:
- self._check_errors()
- except libxml2.parserError:
diff --git a/user/iw/APKBUILD b/user/iw/APKBUILD
new file mode 100644
index 000000000..18ef2dbca
--- /dev/null
+++ b/user/iw/APKBUILD
@@ -0,0 +1,27 @@
+# Contributor: Mira Ressel <aranea@aixah.de>
+# Maintainer:
+pkgname=iw
+pkgver=5.9
+pkgrel=0
+pkgdesc="CLI configuration utility for wireless devices"
+url="https://wireless.wiki.kernel.org/en/users/Documentation/iw"
+arch="all"
+license="ISC"
+depends=""
+makedepends="libnl3-dev linux-headers pkgconfig"
+subpackages="$pkgname-doc"
+source="https://kernel.org/pub/software/network/$pkgname/$pkgname-$pkgver.tar.xz"
+
+build() {
+ make V=1
+}
+
+check() {
+ make check
+}
+
+package() {
+ make V=1 DESTDIR="$pkgdir" install
+}
+
+sha512sums="08b0c8d92c7e695bb2a107b89c3cc406e8386393b65ecbf96ded6fd757043ccd12bedaa90c14138e03e53f107365d04e229633c1cfa024ecab5fe993578491be iw-5.9.tar.xz"
diff --git a/user/jansson/APKBUILD b/user/jansson/APKBUILD
new file mode 100644
index 000000000..0d583f27f
--- /dev/null
+++ b/user/jansson/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Max Rees <maxcrees@me.com>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=jansson
+pkgver=2.13.1
+pkgrel=0
+pkgdesc="C library for encoding, decoding and manipulating JSON data"
+url="http://www.digip.org/jansson/" # No HTTPS
+arch="all"
+license="MIT"
+depends=""
+makedepends=""
+subpackages="$pkgname-dev"
+source="http://www.digip.org/jansson/releases/jansson-$pkgver.tar.gz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="e32be6665e41cf1763608c2f1ac4ce0824d4d7ffa5f4a5824cefde279250fdd399d49ba93d8894e16a473731f629b846554654347f027ca9a0a96ed047f10192 jansson-2.13.1.tar.gz"
diff --git a/user/jasper/APKBUILD b/user/jasper/APKBUILD
index 321969aa3..a9b18d2ea 100644
--- a/user/jasper/APKBUILD
+++ b/user/jasper/APKBUILD
@@ -1,42 +1,40 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=jasper
-pkgver=2.0.16
+pkgver=2.0.33
pkgrel=0
pkgdesc="Library implementing JPEG-2000"
url="http://www.ece.uvic.ca/~mdadams/jasper/"
arch="all"
-license="custom:JasPer2.0"
-depends= #"libjpeg>=8 freeglut libxi libxmu mesa"
+license="JasPer-2.0"
+depends=""
makedepends="libjpeg-turbo-dev cmake"
subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
-source="$pkgname-$pkgver.tar.gz::https://github.com/mdadams/jasper/archive/version-$pkgver.tar.gz"
-builddir="$srcdir/$pkgname-version-$pkgver"
+source="https://github.com/jasper-software/$pkgname/releases/download/version-$pkgver/$pkgname-$pkgver.tar.gz"
# secfixes:
# 2.0.12-r1:
# - CVE-2017-1000050
build() {
- mkdir "$builddir"/obj
- cd "$builddir"/obj
# default of 16 causes stack overflow
export CFLAGS="${CFLAGS} -DJPC_QMFB_COLGRPSIZE=6"
- cmake .. \
- -DCMAKE_BUILD_TYPE=Release \
+ cmake \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_INSTALL_LIBDIR=/usr/lib
-
- make
+ -DCMAKE_INSTALL_LIBDIR=/usr/lib \
+ -DJAS_ENABLE_OPENGL=OFF \
+ -DJAS_ENABLE_LIBJPEG=ON \
+ -DJAS_ENABLE_AUTOMATIC_DEPENDENCIES=OFF \
+ -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/obj
- make test
+ make -C build test
}
package() {
- cd "$builddir"/obj
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
libs() {
@@ -45,4 +43,4 @@ libs() {
mv "$pkgdir"/usr/lib "$subpkgdir"/usr
}
-sha512sums="b3bca227f833567c9061c4a29c0599784ed6a131b5cceddfd1696542d19add821eda445ce6d83782b454b266723b24d0f028cbc644a25c0e3a75304e615b34ee jasper-2.0.16.tar.gz"
+sha512sums="b243be296b9e7adc86c5eee1deb50afab9e9361861fa3bc010d0fb10d29712fb872f685e7caeb15a6ecf25a7684ecd03bc2ebf851573e3930e8ee9bb2fa65a22 jasper-2.0.33.tar.gz"
diff --git a/user/java-cacerts/APKBUILD b/user/java-cacerts/APKBUILD
index b096f7795..c8d2dc7e6 100644
--- a/user/java-cacerts/APKBUILD
+++ b/user/java-cacerts/APKBUILD
@@ -11,11 +11,9 @@ depends="p11-kit p11-kit-trust ca-certificates"
makedepends=""
subpackages=""
source="java-cacerts"
-
builddir="$srcdir"
package() {
- cd "$builddir"
install -D -m755 "$srcdir"/java-cacerts \
"$pkgdir"/etc/ca-certificates/update.d/java-cacerts
mkdir -p "$pkgdir"/etc/ssl/certs/java
diff --git a/user/java-common/APKBUILD b/user/java-common/APKBUILD
index 12259b209..f285c9960 100644
--- a/user/java-common/APKBUILD
+++ b/user/java-common/APKBUILD
@@ -1,17 +1,17 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=java-common
-pkgver=6
-pkgrel=0
+pkgver=7
+pkgrel=1
pkgdesc="Default Java runtime binary symlinks"
url=" "
arch="noarch"
options="!check" # Symlinks only.
license="Public-Domain"
-depends=""
+depends="nss" # for TLS, needed by all OpenJDKs.
makedepends=""
subpackages=""
-source=""
triggers="java-common.trigger=/usr/lib/jvm"
+source="java.profd"
package() {
mkdir -p "$pkgdir"/usr/bin
@@ -19,4 +19,7 @@ package() {
ln -sf ../lib/jvm/default-jvm/jre/bin/rmiregistry "$pkgdir"/usr/bin
ln -sf ../lib/jvm/default-jvm/jre/bin/keytool "$pkgdir"/usr/bin
ln -sf ../lib/jvm/default-jvm/bin/appletviewer "$pkgdir"/usr/bin
+
+ install -D -m755 "$srcdir"/java.profd "$pkgdir"/etc/profile.d/java.sh
}
+sha512sums="4c535555a89609988fbd379d4ef7c72d04eb8b88aed3c999a65e957196196c14733377b24f98b1ee0ae83f0cd43f55ab626ab073c1b30f478fb514bfc71cf641 java.profd"
diff --git a/user/java-common/java.profd b/user/java-common/java.profd
new file mode 100644
index 000000000..cf97cc5f9
--- /dev/null
+++ b/user/java-common/java.profd
@@ -0,0 +1,2 @@
+#!/bin/sh
+export JAVA_HOME=/usr/lib/jvm/default-jvm
diff --git a/user/jomolhari/APKBUILD b/user/jomolhari/APKBUILD
index 566e5db55..2ddb69497 100644
--- a/user/jomolhari/APKBUILD
+++ b/user/jomolhari/APKBUILD
@@ -12,11 +12,9 @@ depends="fontconfig"
makedepends=""
subpackages=""
source="https://collab.its.virginia.edu/access/content/group/26a34146-33a6-48ce-001e-f16ce7908a6a/Tibetan%20fonts/Tibetan%20Unicode%20Fonts/Jomolhari-alpha003.zip"
-builddir="$srcdir"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ *.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ "$srcdir"/*.ttf
}
sha512sums="d3dd179c84c5cfb5cdc4a82ea1356b594973ef056cbc8fa4e23e37f21573b138eded19ef7370803dbe796e80a0d2c72a0866eb9f36e4b511627c770a00e08270 Jomolhari-alpha003.zip"
diff --git a/user/jpegoptim/APKBUILD b/user/jpegoptim/APKBUILD
index d86c9c7f8..1556f8552 100644
--- a/user/jpegoptim/APKBUILD
+++ b/user/jpegoptim/APKBUILD
@@ -14,13 +14,11 @@ subpackages="$pkgname-doc"
source="https://www.kokkonen.net/tjko/src/jpegoptim-$pkgver.tar.gz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,7 +30,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/jq/APKBUILD b/user/jq/APKBUILD
new file mode 100644
index 000000000..1e1baef17
--- /dev/null
+++ b/user/jq/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Zach van Rijn <me@zv.io>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=jq
+pkgver=1.7.1
+pkgrel=0
+pkgdesc="A lightweight and flexible command-line JSON processor"
+url="https://jqlang.github.io/jq/"
+arch="all"
+license="MIT"
+makedepends=""
+subpackages="$pkgname-doc $pkgname-dev"
+source="jq-$pkgver.tar.gz::https://github.com/jqlang/${pkgname}/releases/download/${pkgname}-${pkgver}/${pkgname}-${pkgver}.tar.gz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --disable-docs
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" prefix=/usr install
+}
+
+sha512sums="464861fb2e0d6934b616f1dc7f8002d7dae727c8c0c07b385b813e7522ba1ada8ead4165e1d99c892e3ea76e238c55a15b718c738805419721920f88f8d8478c jq-1.7.1.tar.gz"
diff --git a/user/json-c/APKBUILD b/user/json-c/APKBUILD
new file mode 100644
index 000000000..c05a7d9b7
--- /dev/null
+++ b/user/json-c/APKBUILD
@@ -0,0 +1,36 @@
+# Maintainer:
+pkgname=json-c
+pkgver=0.15
+pkgrel=0
+pkgdesc="A JSON implementation in C"
+url="https://github.com/json-c/json-c/wiki"
+arch="all"
+license="MIT"
+depends=""
+makedepends="cmake doxygen"
+subpackages="$pkgname-dev"
+source="https://s3.amazonaws.com/${pkgname}_releases/releases/$pkgname-${pkgver}.tar.gz
+ "
+
+# secfixes:
+# 0.15-r0:
+# - CVE-2020-12762
+
+build() {
+ cmake -B "$builddir" \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=ON
+ make
+ make doc
+}
+
+check() {
+ make test
+}
+
+package() {
+ make -j1 DESTDIR="$pkgdir" install
+}
+
+sha512sums="dc01298bcc78f0f31a34f5fcfe45c0feebfd88518e97fb4f96f1a652f71ccdd303415a4c7bf5b573bdcbcca80428281f0dfccefc6545ea3a7f18dbb819332f34 json-c-0.15.tar.gz"
diff --git a/user/json-glib/APKBUILD b/user/json-glib/APKBUILD
index a297939df..893a192d2 100644
--- a/user/json-glib/APKBUILD
+++ b/user/json-glib/APKBUILD
@@ -1,19 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=json-glib
-pkgver=1.4.4
+pkgver=1.6.6
pkgrel=0
pkgdesc="GObject-based library for JSON (de)serialization"
url="https://live.gnome.org/JsonGlib"
arch="all"
-options="!check" # no tests
+options="!check" # No test suite.
license="LGPL-2.1+"
+depends=""
makedepends="glib-dev gobject-introspection-dev meson ninja"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.gnome.org/sources/json-glib/1.4/json-glib-$pkgver.tar.xz"
+source="https://download.gnome.org/sources/json-glib/${pkgver%.*}/json-glib-$pkgver.tar.xz"
build() {
- cd "$builddir"
meson \
--prefix=/usr \
--sysconfdir=/etc \
@@ -25,8 +25,7 @@ build() {
}
package() {
- cd "$builddir"
DESTDIR="$pkgdir" ninja -C output install
}
-sha512sums="cf56a99dce3938b5c0075810f105719836fac65392da33a49b26ebf33aee1fab89ca9fac58059a2008d688ecc75a3e524de60621a5b027d566963541f38b971f json-glib-1.4.4.tar.xz"
+sha512sums="b9a737e4ba3ecdfb9cb8f5fb751cc74e5b1553664d3088c44a1f9e5396d4037958af214dcd290ddf5af98088f46167e10e371e134e1de5cbb7aec84c5c0fd017 json-glib-1.6.6.tar.xz"
diff --git a/user/json/APKBUILD b/user/json/APKBUILD
new file mode 100644
index 000000000..750f3fbd1
--- /dev/null
+++ b/user/json/APKBUILD
@@ -0,0 +1,36 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=json
+pkgver=3.11.3
+pkgrel=0
+pkgdesc="JSON for Modern C++"
+url="https://json.nlohmann.me/"
+arch="noarch"
+license="MIT"
+depends=""
+makedepends="cmake"
+subpackages=""
+source="json-$pkgver.tar.gz::https://github.com/nlohmann/json/archive/refs/tags/v$pkgver.tar.gz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ -Bbuild
+ make DESTDIR="$pkgdir" -C build
+}
+
+check() {
+ cd build
+ CTEST_OUTPUT_ON_FAILURE=true ctest -E '(cmake_fetch*|test-unicode*)' -j${JOBS}
+}
+
+package() {
+ make DESTDIR="$pkgdir" -C build install
+}
+
+sha512sums="7df19b621de34f08d5d5c0a25e8225975980841ef2e48536abcf22526ed7fb99f88ad954a2cb823115db59ccc88d1dbe74fe6c281b5644b976b33fb78db9d717 json-3.11.3.tar.gz"
diff --git a/user/juk/APKBUILD b/user/juk/APKBUILD
index 44206a02c..9eeb31d9b 100644
--- a/user/juk/APKBUILD
+++ b/user/juk/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=juk
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="KDE Jukebox"
url="https://juk.kde.org/"
@@ -12,12 +12,11 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
kcoreaddons-dev kcompletion-dev kcrash-dev kglobalaccel-dev ki18n-dev
kiconthemes-dev kdoctools-dev kio-dev kjobwidgets-dev ktextwidgets-dev
knotifications-dev kxmlgui-dev kwallet-dev kwidgetsaddons-dev
- kwindowsystem-dev taglib-dev phonon-dev"
+ kwindowsystem-dev taglib-dev phonon-dev kitemmodels-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/juk-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/juk-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d509892380dfc1be029debdfa6d924c996a92772cf4fd3c9bf3bfa943621d0f62a13c204867b86210f1a1a6c4895d02c8dd922176f87129dad8ce61a45b8496e juk-18.12.3.tar.xz"
+sha512sums="0413c79837a0902d1bfb139a94276dfce4535b31601f67f9d6c57cd9533d44a0ff89bf439d10d189b8ed25d58d57bc49a2d1c8841b5118c4922726a899200acc juk-22.04.2.tar.xz"
diff --git a/user/kacst_fonts/APKBUILD b/user/kacst_fonts/APKBUILD
index c933369c9..e54b7c35f 100644
--- a/user/kacst_fonts/APKBUILD
+++ b/user/kacst_fonts/APKBUILD
@@ -15,8 +15,7 @@ source="https://downloads.sourceforge.net/arabeyes/${pkgname}_$pkgver.tar.bz2"
builddir="$srcdir"/KacstArabicFonts-$pkgver
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ *.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ "$builddir"/*.ttf
}
sha512sums="9db8181a4b9db18f648628c10c4c1228aa38186f7ea414887e66fa430ce441b0d0130dd81955ae664558edd46653a290e053b8b126ce4ff7b6e9e1a7169ba4a8 kacst_fonts_2.0.tar.bz2"
diff --git a/user/kactivities-stats/APKBUILD b/user/kactivities-stats/APKBUILD
index 1a286e967..8134a3414 100644
--- a/user/kactivities-stats/APKBUILD
+++ b/user/kactivities-stats/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kactivities-stats
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Gather statistics about KDE activities"
url="https://api.kde.org/frameworks/kactivities/html/index.html"
@@ -9,20 +9,15 @@ arch="all"
options="!check" # No test suite.
license="LGPL-2.1-only OR LGPL-3.0-only"
depends=""
-depends_dev="qt5-qtbase-dev kactivities-dev"
-makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev doxygen
- graphviz boost-dev kconfig-dev qt5-qtdeclarative-dev"
+depends_dev="kactivities-dev"
+checkdepends="boost-dev"
+docdepends="kactivities-doc"
+makedepends="$depends_dev cmake extra-cmake-modules qt5-qtbase-dev $docdepends
+ qt5-qtdeclarative-dev qt5-qttools-dev doxygen graphviz kconfig-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kactivities-stats-$pkgver.tar.xz"
-prepare() {
- cd "$builddir"
- default_prepare
- mkdir -p build
-}
-
build() {
- cd "$builddir"/build
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -34,13 +29,12 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="142a8e92bef7069eae70187e1c04a29f65ab4bc12b7e146d21e8da3c4818941af59844e702e9682d8bcd64d6e76b30f012db2cdd1476962b59e0b27c1114c311 kactivities-stats-5.54.0.tar.xz"
+sha512sums="0ae5d4ca81ef58b2d4857f737436eaed85bc50da910d7f1dc348e972c8511862b67869bd85a577eb43c06d8cd4e796092a90cb6ec1cb83013e76175643bc5cf5 kactivities-stats-5.94.0.tar.xz"
diff --git a/user/kactivities/APKBUILD b/user/kactivities/APKBUILD
index 6a35fd7e4..cebd390a2 100644
--- a/user/kactivities/APKBUILD
+++ b/user/kactivities/APKBUILD
@@ -1,28 +1,20 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kactivities
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Runtime and library to organize work into separate activities"
url="https://api.kde.org/frameworks/kactivities/html/index.html"
arch="all"
license="GPL-2.0+ AND LGPL-2.1+ AND (LGPL-2.1-only OR LGPL-3.0-only)"
depends="kactivitymanagerd"
-depends_dev="qt5-qtbase-dev"
-makedepends="$depends_dev cmake extra-cmake-modules doxygen graphviz boost-dev
- qt5-qttools-dev qt5-qtdeclarative-dev kconfig-dev kcoreaddons-dev
- kwindowsystem-dev"
+makedepends="cmake extra-cmake-modules doxygen graphviz boost-dev
+ qt5-qtbase-dev qt5-qttools-dev qt5-qtdeclarative-dev kconfig-dev
+ kcoreaddons-dev kwindowsystem-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kactivities-$pkgver.tar.xz"
-prepare() {
- cd "$builddir"
- default_prepare
- mkdir -p build
-}
-
build() {
- cd "$builddir"/build
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -34,18 +26,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- make test
+ make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="d397c087f740e044a14f02bca47da2c267b4c9d9ab8231e240addf41eec6d716fc6d2a85bc3760636a69be55a058ba8d380c4555aa16ba43fff7fd2dfcb20a64 kactivities-5.54.0.tar.xz"
+sha512sums="59b82dfa3bec93726dc3924bc5675a970bb935823430362271599545ca80e07d73280d8b0a0af915739147f68ea6b22f7382c07d9c830497305a2dcadadcb89b kactivities-5.94.0.tar.xz"
diff --git a/user/kactivitymanagerd/APKBUILD b/user/kactivitymanagerd/APKBUILD
index 0cc1627dc..e8cafd6f5 100644
--- a/user/kactivitymanagerd/APKBUILD
+++ b/user/kactivitymanagerd/APKBUILD
@@ -1,12 +1,12 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=kactivitymanagerd
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="Service to manage KDE Plasma activities"
url="https://www.kde.org/"
arch="all"
-license="GPL-2.0-only"
+license="GPL-2.0-only AND GPL-2.0+ AND GPL-3.0-only AND LGPL-2.1-only AND LGPL-3.0-only"
depends="qt5-qtbase-sqlite"
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kdbusaddons-dev ki18n-dev
boost-dev python3 kconfig-dev kcoreaddons-dev kwindowsystem-dev kio-dev
@@ -14,14 +14,7 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kdbusaddons-dev ki18n-dev
subpackages="$pkgname-lang"
source="https://download.kde.org/stable/plasma/$pkgver/kactivitymanagerd-$pkgver.tar.xz"
-prepare() {
- cd "$builddir"
- default_prepare
- mkdir -p build
-}
-
build() {
- cd "$builddir"/build
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -32,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild .
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make -C build DESTDIR="$pkgdir" install
}
-sha512sums="3825a79e9f1092af177606d8eb4acaeb0a7022eecc09a5066d6f8f404319e313bc16c7d5f8c22e34f19cbfbfd1dfabd1e01c8df954f8cbdd147c06492ce67245 kactivitymanagerd-5.12.7.tar.xz"
+sha512sums="971105d22e7058b4c62ae00bef160b629cdef59e84cfc1d5fe6f7d9e43d12e71f8c93a56ef933f58729f71ead1d6b5c2247828a5a99bbe8300e0312888421b9c kactivitymanagerd-5.24.5.tar.xz"
diff --git a/user/kaddressbook/APKBUILD b/user/kaddressbook/APKBUILD
new file mode 100644
index 000000000..e374b50e3
--- /dev/null
+++ b/user/kaddressbook/APKBUILD
@@ -0,0 +1,47 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kaddressbook
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="KDE contact manager"
+url="https://kontact.kde.org/components/kaddressbook.html"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="qt5-qtbase-dev cmake extra-cmake-modules akonadi-dev boost-dev
+ akonadi-contacts-dev akonadi-mime-dev akonadi-search-dev gpgme-dev
+ grantlee-dev grantleetheme-dev kauth-dev kcalendarcore-dev
+ kcmutils-dev kcodecs-dev kcompletion-dev kconfigwidgets-dev
+ kcontacts-dev kcoreaddons-dev kcrash-dev kdbusaddons-dev kdoctools-dev
+ kimap-dev kio-dev kitemmodels-dev kitemviews-dev kjobwidgets-dev
+ kmime-dev kontactinterface-dev kparts-dev kpimtextedit-dev kservice-dev
+ kuserfeedback-dev kwidgetsaddons-dev kwindowsystem-dev kxmlgui-dev
+ libkdepim-dev libkleo-dev pimcommon-dev prison-dev solid-dev sonnet-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kaddressbook-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="65085b413f6dbe037a5aba5a3f349882879197da85459c90dbf6777360a8405dbf2d79dac2994b28f682f81b4994550c21940e180f244dcdbaacdbd50bf8d140 kaddressbook-22.04.2.tar.xz"
diff --git a/user/kaffeine/APKBUILD b/user/kaffeine/APKBUILD
index 039bd9dd8..bcc1faa94 100644
--- a/user/kaffeine/APKBUILD
+++ b/user/kaffeine/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kaffeine
-pkgver=2.0.16-2
-pkgrel=0
+pkgver=2.0.18
+pkgrel=1
pkgdesc="Media player with a focus on Digital TV (DVB)"
url="https://www.kde.org/applications/multimedia/kaffeine/"
arch="all"
@@ -13,11 +13,8 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtx11extras-dev
kxmlgui-dev solid-dev kdbusaddons-dev vlc-dev libxscrnsaver-dev"
subpackages="$pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/kaffeine/kaffeine-$pkgver.tar.xz"
-builddir="$srcdir/kaffeine-$pkgver"
-pkgver=2.0.16.2
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="1b39bf59127c777b34f3076a237c53973af827191d2a279d40e7f14891dcd3d7bba1444b0b456d0e614807bf6bff494568aed958632dfba54515de8de5b06f21 kaffeine-2.0.16-2.tar.xz"
+sha512sums="60854251f25e7de94928686f647e6e0f07ca40188e8dfd8140985f1dfbb53bb4d92ff42c29e216431500839d7eb83b81f386bac3a8a86dd8c986a611ec0db3a4 kaffeine-2.0.18.tar.xz"
diff --git a/user/kalgebra/APKBUILD b/user/kalgebra/APKBUILD
index f89a60f69..cb47311ed 100644
--- a/user/kalgebra/APKBUILD
+++ b/user/kalgebra/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kalgebra
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Graph calculator and plotter"
url="https://www.kde.org/applications/education/kalgebra/"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
qt5-qtsvg-dev analitza-dev ncurses-dev ki18n-dev kdoctools-dev kio-dev
kconfigwidgets-dev kwidgetsaddons-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kalgebra-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kalgebra-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e2c4dad9fc7c7ef0af2b4f6173376db9e68df7df92094efccfd9e6d4edd1bc376352d00717d29351613bbdd52a8cdb45113ae243d4092aa2f8199a010e3f336f kalgebra-18.12.3.tar.xz"
+sha512sums="4b605623e9edef4e5bf8911ebc7e4582df7a584f837b88a37c15eabb40c858dcb456f9ddbeea61c4345d93295152d697cad6fc7dd62fa9fe86f0fd36417fae91 kalgebra-22.04.2.tar.xz"
diff --git a/user/kalzium/APKBUILD b/user/kalzium/APKBUILD
index 64f1a21b1..b05e637a1 100644
--- a/user/kalzium/APKBUILD
+++ b/user/kalzium/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kalzium
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Periodic table of elements (PSE) with calculators"
url="https://www.kde.org/applications/education/kalzium/"
@@ -14,10 +14,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtscript-dev
kparts-dev kplotting-dev solid-dev kunitconversion-dev
kwidgetsaddons-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kalzium-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kalzium-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,18 +28,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DEIGEN3_INCLUDE_DIR=/usr/include/eigen3 \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="a03c477fc535784ed6d8007373bc172a01fb72148282858cdb4d2560daa2c31bd3daf068e5ecaa28564888573cb14997840d26bbd922a1fe0c1cf3e77e17f711 kalzium-18.12.3.tar.xz"
+sha512sums="161dddba0eafc00ae713381a983b3719e5a09363d834b5b62dfc030d99c0e92da1ace517481a0675f72ca13c94c07df78e87ced699af100a4e8067530a020267 kalzium-22.04.2.tar.xz"
diff --git a/user/kamera/APKBUILD b/user/kamera/APKBUILD
new file mode 100644
index 000000000..b1c9dda04
--- /dev/null
+++ b/user/kamera/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kamera
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="Digital camera support for KDE"
+url="https://www.KDE.org/"
+arch="all"
+license="GPL-2.0+ AND LGPL-2.0+"
+depends=""
+makedepends="cmake extra-cmake-modules libgphoto2-dev qt5-qtbase-dev kio-dev
+ kconfig-dev kconfigwidgets-dev kdoctools-dev ki18n-dev kxmlgui-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kamera-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="35b64526c321a409668daffbd960178c059b36484804f363ccc9ca0c879b123f38bee75663e87650895a5e84f3e3fcbbe1f3a955b5c95e889e9bcf7821611715 kamera-22.04.2.tar.xz"
diff --git a/user/kamoso/APKBUILD b/user/kamoso/APKBUILD
new file mode 100644
index 000000000..6d6694b83
--- /dev/null
+++ b/user/kamoso/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kamoso
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="KDE camera software"
+url="https://kde.org/applications/multimedia/org.kde.kamoso"
+arch="all"
+options="!check" # Requires GLX GPU.
+license="GPL-2.0+"
+depends="gst-plugins-base qt5-qtgraphicaleffects qt5-qtquickcontrols
+ qt5-qtquickcontrols2"
+makedepends="qt5-qtbase-dev qt5-qtdeclarative-dev cmake extra-cmake-modules
+ kauth-dev kcodecs-dev kcompletion-dev kconfig-dev kconfigwidgets-dev
+ kcoreaddons-dev kdoctools-dev ki18n-dev kio-dev kitemviews-dev
+ kjobwidgets-dev knotifications-dev kservice-dev kwidgetsaddons-dev
+ kwindowsystem-dev kxmlgui-dev purpose-dev solid-dev gstreamer-dev
+ gst-plugins-base-dev kirigami2-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kamoso-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ QT_QPA_PLATFORM=offscreen CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="3c294665fd6ebf354a04b4c4ab276338ebb925913bc5f82cc78d7e322d1e723b96d064402419e9a2a5f73b9409b11f2ccdd50e3bd34d09bd5d6d1a01c36fa509 kamoso-22.04.2.tar.xz"
diff --git a/user/kanagram/APKBUILD b/user/kanagram/APKBUILD
index c0c734773..b5464f74b 100644
--- a/user/kanagram/APKBUILD
+++ b/user/kanagram/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kanagram
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Letter order (anagram) game"
url="https://www.kde.org/applications/education/kanagram/"
@@ -13,10 +13,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
kcoreaddons-dev kdeclarative-dev kdoctools-dev knewstuff-dev
libkeduvocdocument-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kanagram-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kanagram-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="75e9465a6621f04f32a7ac2868fd1a8b9133c0957d75608a960919252613b01fd27369fc17543ac08bff333351719986d69738773696be1f69cd330a1aa303a7 kanagram-18.12.3.tar.xz"
+sha512sums="66790eff8a6d8b8e6b37b27ab757033468d8db239ec8397252a9bb01477a9d1ef184d33cdcfcc5bb7c0da29bd69556caff36059ef463f568c208a57ae498379d kanagram-22.04.2.tar.xz"
diff --git a/user/kanjistrokeorders/APKBUILD b/user/kanjistrokeorders/APKBUILD
index f73660b2c..b5f88df2e 100644
--- a/user/kanjistrokeorders/APKBUILD
+++ b/user/kanjistrokeorders/APKBUILD
@@ -11,12 +11,10 @@ license="BSD-3-Clause"
depends="fontconfig"
makedepends=""
subpackages=""
-source="KanjiStrokeOrders_v$pkgver.ttf::https://sites.google.com/site/nihilistorguk/KanjiStrokeOrders_v${pkgver}.ttf?attredirects=0"
-builddir="$srcdir/"
+source="https://distfiles.adelielinux.org/source/KanjiStrokeOrders_v${pkgver}.ttf"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ *.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ "$srcdir"/*.ttf
}
sha512sums="7382be90761ec63f01fb715154955a76fb78acf1a50a6c3abc3b5b753ebb8bb01d1884e154dce6b15284ac2d7600d1276b098705ee925ee86c42d4194c688721 KanjiStrokeOrders_v4.002.ttf"
diff --git a/user/kapman/APKBUILD b/user/kapman/APKBUILD
index ef2120b43..d89d31741 100644
--- a/user/kapman/APKBUILD
+++ b/user/kapman/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kapman
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Pac-Man clone"
url="https://www.kde.org/applications/games/kapman/"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
kcoreaddons-dev kcrash-dev kdbusaddons-dev kdoctools-dev ki18n-dev
kconfigwidgets-dev kxmlgui-dev libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kapman-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kapman-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="512743caa897c4e2e4d3f78bc5e85a500b3bc5c810dc8ea8a28508e81a02ef230fe7dda8b9abf01b8e15c90e8172a80655951473414fda959bb1eb079bf0f210 kapman-18.12.3.tar.xz"
+sha512sums="ec9ec2e8e28611995061072dfd4a582839681340ea62976b6eb2298ad2796c7ef109a3d0fc7461e81ea9931dc49967a13fbb51ec6ce38648ab63a879dda22104 kapman-22.04.2.tar.xz"
diff --git a/user/kapptemplate/APKBUILD b/user/kapptemplate/APKBUILD
new file mode 100644
index 000000000..0d6599f4d
--- /dev/null
+++ b/user/kapptemplate/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kapptemplate
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="KDE application code template generator"
+url="https://kde.org/applications/development/org.kde.kapptemplate"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="qt5-qtbase-dev cmake extra-cmake-modules karchive-dev
+ kcompletion-dev kconfigwidgets-dev kcoreaddons-dev kdoctools-dev
+ ki18n-dev kio-dev kjobwidgets-dev kservice-dev solid-dev kauth-dev
+ kcodecs-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kapptemplate-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="e05e5a20dfba604f82336f009994928d1a31f120fe2180899298f6a71d9739c94e399b5ddb90e94aeb8b2746dd2e42e290e62a37fc12320cf42ade3d015edbdf kapptemplate-22.04.2.tar.xz"
diff --git a/user/karchive/APKBUILD b/user/karchive/APKBUILD
index 872442029..a50f42de7 100644
--- a/user/karchive/APKBUILD
+++ b/user/karchive/APKBUILD
@@ -1,21 +1,20 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=karchive
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for manipulating archive files"
url="https://www.kde.org/"
arch="all"
-license="LGPL-2.0-only AND LGPL-2.1+"
+license="LGPL-2.0+"
depends=""
depends_dev="qt5-qtbase-dev"
makedepends="$depends_dev cmake extra-cmake-modules doxygen graphviz
- qt5-qttools-dev zlib-dev bzip2-dev xz-dev"
+ qt5-qttools-dev zlib-dev bzip2-dev xz-dev zstd-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/karchive-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="89172761f5d54967ed72ccf73c3bfff79600f803a31bdb4e1684516e506f57f3b28778b598cfbd6b594b4cbe3af92984c7150ea6837d9a612bcd28db4dbc8657 karchive-5.54.0.tar.xz"
+sha512sums="a77224ed59c0fcfd7637458bc0d165e9226e3858e632915c9f78a2d2e5725cc2595672edd3b05260b6dfc69a50a8a6f690e06ca04633df33a1b9889260d368b5 karchive-5.94.0.tar.xz"
diff --git a/user/kate/APKBUILD b/user/kate/APKBUILD
index 0fd90e6f3..a81f32236 100644
--- a/user/kate/APKBUILD
+++ b/user/kate/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kate
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Advanced text editor with autocomplete, syntax highlighting, and more"
url="https://kate-editor.org/"
@@ -13,13 +13,12 @@ makedepends="$depends_dev cmake extra-cmake-modules qt5-qtbase-dev python3
kio-dev kparts-dev ktexteditor-dev kwindowsystem-dev kxmlgui-dev
kiconthemes-dev kdoctools-dev kwallet-dev kservice-dev kitemmodels-dev
knewstuff-dev threadweaver-dev libgit2-dev kactivities-dev
- plasma-framework-dev"
+ kuserfeedback-dev plasma-framework-dev"
subpackages="kwrite kwrite-doc:kwrite_doc kwrite-lang:kwrite_lang
$pkgname-doc $pkgname-lang $pkgname-project"
-source="https://download.kde.org/stable/applications/$pkgver/src/kate-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kate-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -30,17 +29,15 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -66,12 +63,10 @@ kwrite() {
}
kwrite_doc() {
- local _langpath
-
pkgdesc="Simple GUI text editor (documentation)"
install_if="docs kwrite=$pkgver-r$pkgrel"
for _langpath in "$pkgdir"/usr/share/doc/HTML/*; do
- local _sublangpath=${_langpath/"$pkgdir"/"$subpkgdir"}
+ local _sublangpath="$subpkgdir/${_langpath#"$pkgdir"}"
if [ -d "$_langpath"/kwrite ]; then
mkdir -p "$_sublangpath"
mv "$_langpath"/kwrite "$_sublangpath"/
@@ -80,11 +75,9 @@ kwrite_doc() {
}
kwrite_lang() {
- local _langpath
-
pkgdesc="Simple GUI text editor (translations)"
for _langpath in "$pkgdir"/usr/share/locale/*/LC_MESSAGES; do
- local _sublangpath=${_langpath/"$pkgdir"/"$subpkgdir"}
+ local _sublangpath="$subpkgdir/${_langpath#"$pkgdir"}"
if [ -f "$_langpath"/kwrite.mo ]; then
mkdir -p "$_sublangpath"
mv "$_langpath"/kwrite.mo "$_sublangpath"/
@@ -92,4 +85,4 @@ kwrite_lang() {
done
}
-sha512sums="2f067628d29b7f807e13d2faa2c6727a8028e273c61b4923d6a6eaeb4d74dbf0f0e83edf492821b228ccbe99a985cf712cfd75b9d6ea8d16af9b1ff7ec8ac00d kate-18.12.3.tar.xz"
+sha512sums="7f96d368e0cb0587b35eb0cc485d7b7f268faffeb1a60fc42596354b6a30506c77ba5c41356939594f50788c54a953700aa651f09d4fa847f787f7669c84cbc5 kate-22.04.2.tar.xz"
diff --git a/user/katomic/APKBUILD b/user/katomic/APKBUILD
index a96cb5759..f46b12414 100644
--- a/user/katomic/APKBUILD
+++ b/user/katomic/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=katomic
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Fun, educational game involving molecular geometry"
url="https://games.kde.org/game.php?game=katomic"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kcoreaddons-dev ki18n-dev
kconfig-dev kcrash-dev kwidgetsaddons-dev kxmlgui-dev knewstuff-dev
kdoctools-dev kdbusaddons-dev libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/katomic-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/katomic-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d47313b345c4b4dbe95dacf61a8435239da38a4acd4491ae7910f4fb70c8d2d5cdc85f5932bf86871c3af1da6fa99fdc703bd75b92ffdb6a9780a09a6e3c3055 katomic-18.12.3.tar.xz"
+sha512sums="3d18c0c2dfa1fc25ff3e306588aa3519e2aceec20cc59c4d2a74fbdf46bf3b24b24e1f4d2917058e662cabd49ecd50191faf3fabd83323c7dce02dda6a3fc6ce katomic-22.04.2.tar.xz"
diff --git a/user/kauth/APKBUILD b/user/kauth/APKBUILD
index 543f87712..d62b6efc8 100644
--- a/user/kauth/APKBUILD
+++ b/user/kauth/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kauth
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for allowing software to gain temporary privileges"
url="https://www.kde.org/"
@@ -9,12 +9,17 @@ arch="all"
license="LGPL-2.1+"
depends=""
depends_dev="polkit-qt-1-dev qt5-qtbase-dev kcoreaddons-dev"
-makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev doxygen"
+# Building KAuth docs requires KCoreAddons docs.
+makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev doxygen
+ kcoreaddons-doc"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kauth-$pkgver.tar.xz"
+# secfixes:
+# 5.54.0-r1:
+# - CVE-2019-7443
+
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +31,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E KAuthHelperTest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="f75c6f019d708409817a5b64d88033326a7d627cdee00e61280043d5cd8f65731f08d48405f50c7240f18670b25abfeea4b2af5966ebb2ee7e0f56669b5551c2 kauth-5.54.0.tar.xz"
+sha512sums="f5466b388c5e815ca877777622aa1cd67953b11ed501ccc212f791df96d38ac55912f0e38afdf9dda5dcaca354b08ee425ccb6cf2bc689c5347af28ee7e45a8b kauth-5.94.0.tar.xz"
diff --git a/user/kblackbox/APKBUILD b/user/kblackbox/APKBUILD
index 38b727182..fe289d078 100644
--- a/user/kblackbox/APKBUILD
+++ b/user/kblackbox/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kblackbox
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Hide-and-seek logic game"
url="https://www.kde.org/applications/games/kblackbox/"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
karchive-dev kcoreaddons-dev kcrash-dev kdoctools-dev ki18n-dev
kdbusaddons-dev ktextwidgets-dev kxmlgui-dev libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kblackbox-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kblackbox-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="888d5c00b3f05b4d26c8f898b85d73210ad01260c20f049f9da29fac9f7bc83e1ca9940ca489119313b976ec764b89dbd5acac3fa1f78c6a28205b1c3fc858e5 kblackbox-18.12.3.tar.xz"
+sha512sums="2bd7ec2f2907aaaeefcc2adcef63751bec8a482c41a06a20d69872086d420bec64602ba81410ff3f85e77ba5f77f84d2cd02ffde42c6dec6919cb236ee868ce6 kblackbox-22.04.2.tar.xz"
diff --git a/user/kblocks/APKBUILD b/user/kblocks/APKBUILD
index 4ec273c96..9bb8a14ef 100644
--- a/user/kblocks/APKBUILD
+++ b/user/kblocks/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kblocks
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Falling blocks game"
url="https://www.kde.org/applications/games/kblocks/"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
kconfigwidgets-dev kcoreaddons-dev kcrash-dev kdoctools-dev ki18n-dev
kdbusaddons-dev kwidgetsaddons-dev kxmlgui-dev libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kblocks-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kblocks-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ # All other tests require a running X11 session.
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -R 'UnitTest-basic'
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="bdefc1f640bbff779e2681a66733d1ba783239984849a4c6c8af9584155388723ad82abe1577989475ee6d91e8c51e39a565e443b55429da12299fdea33422fb kblocks-18.12.3.tar.xz"
+sha512sums="bc8922f0c5408867f105c4f9e6987525f88fd2092631e546e599aa25043adc3cc06103b882f44ee47362576cf12ed9dc8c1ff6ec5d5df349c67bea5b42663e19 kblocks-22.04.2.tar.xz"
diff --git a/user/kbookmarks/APKBUILD b/user/kbookmarks/APKBUILD
index 267954234..9875fe275 100644
--- a/user/kbookmarks/APKBUILD
+++ b/user/kbookmarks/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kbookmarks
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for managing XBEL-format bookmarks"
url="https://www.kde.org/"
@@ -11,13 +11,13 @@ license="LGPL-2.1+"
depends=""
depends_dev="qt5-qtbase-dev kconfig-dev kcoreaddons-dev kcodecs-dev
kconfigwidgets-dev kiconthemes-dev kxmlgui-dev"
+docdepends="kwidgetsaddons-doc"
makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev doxygen
- graphviz"
+ graphviz $docdepends"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kbookmarks-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,18 +29,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="f7c18ee6a0135ac93bbd4034b2c11b6142404a9b5c5872374ee2dc2d5f0cf70288793df4da4be980c0e1bf757ccbfc6ca8a83c490691e80308ec7133eb49c3ba kbookmarks-5.54.0.tar.xz"
+sha512sums="0ab54590cc2a26039804d792d8c6399257e4bfbd92b34cbe8043b1d6e02f102783c229a7e457acefd6da5876481af2558d026dd3e9d4234a6adce14c8aa6c8b3 kbookmarks-5.94.0.tar.xz"
diff --git a/user/kbounce/APKBUILD b/user/kbounce/APKBUILD
index c2c4fc9c3..4b94259d4 100644
--- a/user/kbounce/APKBUILD
+++ b/user/kbounce/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kbounce
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Puzzle/arcade game to build walls"
url="https://games.kde.org/game.php?game=kbounce"
@@ -13,10 +13,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
kconfigwidgets-dev kcompletion-dev kxmlgui-dev kio-dev kdoctools-dev
libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kbounce-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kbounce-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b41a63edcf4d4f36b756929df55ddc17b5d345ad58cca8df251226de0ce43503f19726e9ffc5491374919f83d4767b3b753fb248958396e82163f7ab96e83536 kbounce-18.12.3.tar.xz"
+sha512sums="581ae5a5a2e0e0729835a1ba844d00a5b9765dc3c77e59941b148f06e839a4c7951b21c38bc77d5b2b5d7cc1bc9a8ce33971973b8e1e92198c6df505a9fe9e15 kbounce-22.04.2.tar.xz"
diff --git a/user/kbreakout/APKBUILD b/user/kbreakout/APKBUILD
index 6f1392c57..653de70c0 100644
--- a/user/kbreakout/APKBUILD
+++ b/user/kbreakout/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kbreakout
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Break-Out like game with a ball and paddle"
url="https://games.kde.org/game.php?game=kbreakout"
@@ -13,10 +13,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
kdbusaddons-dev kconfigwidgets-dev kxmlgui-dev kdoctools-dev
libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kbreakout-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kbreakout-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="5e0e2763ab4e8a5ce8eab78bbfd8e267e5efdf8151fd0e66d6cfdb174aed402a4ce5c02b3fcf2614c07f5726ff34fe6d636c238c4711302fc148c19af8f901d3 kbreakout-18.12.3.tar.xz"
+sha512sums="6e6e99a9394815ac60a5142126658905822109657faec778abf3d3a350d80ee959046f077fcfb553308909d6604205f9dcf4d8792b2376ad19b284d77eaca726 kbreakout-22.04.2.tar.xz"
diff --git a/user/kbruch/APKBUILD b/user/kbruch/APKBUILD
index 0d841c20a..e587dd500 100644
--- a/user/kbruch/APKBUILD
+++ b/user/kbruch/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kbruch
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Practice calculating percentages and fractions"
url="https://www.kde.org/applications/education/kbruch/"
@@ -11,10 +11,9 @@ depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kconfig-dev kcrash-dev
kdoctools-dev ki18n-dev kwidgetsaddons-dev kxmlgui-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kbruch-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kbruch-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,18 +24,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="91375dcebf526b861103573a293a722aa1ce960bedfd2b3ac1ddc606395b84e1c65e1f7532b24789e1c5dc60f0a05e6c73eb26094bfc3810a8898c1ba10c7b56 kbruch-18.12.3.tar.xz"
+sha512sums="c52662d5a059c07290fd99fae7151d7bc5fc1eb2c518c58a92222a0ddbc2788b6050f17ba3383e6722cb0a6c0c589f955508c1c60ac2b4f2de044a81275235d7 kbruch-22.04.2.tar.xz"
diff --git a/user/kcachegrind/APKBUILD b/user/kcachegrind/APKBUILD
index b61847991..36d5d1287 100644
--- a/user/kcachegrind/APKBUILD
+++ b/user/kcachegrind/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcachegrind
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Profile data visualisation tool and call graph viewer"
url="https://kcachegrind.github.io/html/Home.html"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qttools-dev
karchive-dev kconfig-dev kcoreaddons-dev kdoctools-dev ki18n-dev kio-dev
kwidgetsaddons-dev kxmlgui-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kcachegrind-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kcachegrind-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="c22a442fad73921e098c66cefbffc999990b2082ad400dce195efea77bbfc6f2741f24ca0ee38d5eac7664663081d28cccf33f5c6e8c6e1fadaf67c9dc7e65bc kcachegrind-18.12.3.tar.xz"
+sha512sums="66f70496776b799623567a1b6ba23c0d07fc6a6ababa5500f4890d796b926c5cf09bc910ccf27b5f8487a14b6cd09c403df13d80501fc96061c02286dd2558c9 kcachegrind-22.04.2.tar.xz"
diff --git a/user/kcalc/APKBUILD b/user/kcalc/APKBUILD
index 0433fd73b..d1fea17b0 100644
--- a/user/kcalc/APKBUILD
+++ b/user/kcalc/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcalc
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Calculator with many mathematical, scientific, and logic functions"
url="https://utils.kde.org/projects/kcalc/"
@@ -10,12 +10,11 @@ license="GPL-2.0-only"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kconfig-dev ki18n-dev
kconfigwidgets-dev kdoctools-dev kguiaddons-dev kinit-dev kxmlgui-dev
- knotifications-dev gmp-dev"
+ knotifications-dev gmp-dev mpfr-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kcalc-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kcalc-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="be4d7fd59f3ce6c63426a4aad4a388e4123397ab06c44441213754ec6e935217859c5960cfaf76ed0537400f51c35a74a6413a6c2bbe3466d045ea6ccd7ea45f kcalc-18.12.3.tar.xz"
+sha512sums="ed650159e1801ef90022205117807420e2d1e9e205bc0f26363d26e76510a2c17622646d7ea4ca5fe8b4edbad89f75854f2b2f6a7c30f8d36705a0c722fffe32 kcalc-22.04.2.tar.xz"
diff --git a/user/kcalcore/APKBUILD b/user/kcalcore/APKBUILD
deleted file mode 100644
index 62764c297..000000000
--- a/user/kcalcore/APKBUILD
+++ /dev/null
@@ -1,44 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=kcalcore
-pkgver=18.12.3
-pkgrel=0
-pkgdesc="Library for managing a calendar of events"
-url="https://www.kde.org/"
-arch="all"
-license="LGPL-2.0+"
-depends=""
-depends_dev="qt5-qtbase-dev attica-dev kparts-dev"
-makedepends="$depends_dev cmake extra-cmake-modules bison libical-dev
- kconfig-dev kdelibs4support-dev"
-checkdepends="tzdata"
-subpackages="$pkgname-dev"
-source="https://download.kde.org/stable/applications/$pkgver/src/kcalcore-$pkgver.tar.xz"
-
-build() {
- cd "$builddir"
- if [ "$CBUILD" != "$CHOST" ]; then
- CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
- fi
- cmake \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_INSTALL_LIBDIR=lib \
- -DBUILD_SHARED_LIBS=True \
- -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
- -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
- -DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
- make
-}
-
-check() {
- cd "$builddir"
- TZ=UTC CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E 'Compat-libical3'
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
-}
-
-sha512sums="c347bfba365cb8d88fe11f743f5e5870e31a2d526f0cecda3bdebccadbf8e1ae5d19586d1c7120327e47e30a7a21931ed1e084fbfbdc41c82516e803893effae kcalcore-18.12.3.tar.xz"
diff --git a/user/kcalendarcore/APKBUILD b/user/kcalendarcore/APKBUILD
new file mode 100644
index 000000000..7a80ee16c
--- /dev/null
+++ b/user/kcalendarcore/APKBUILD
@@ -0,0 +1,62 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kcalendarcore
+pkgver=5.94.0
+pkgrel=0
+pkgdesc="Library for managing a calendar of events"
+url="https://www.kde.org/"
+arch="all"
+license="LGPL-2.0+"
+depends=""
+depends_dev="qt5-qtbase-dev"
+checkdepends="tzdata"
+makedepends="$depends_dev cmake extra-cmake-modules libical-dev
+ doxygen qt5-qttools-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+replaces="kcalcore"
+source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kcalendarcore-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DBUILD_QCH:BOOL=ON \
+ ${CMAKE_CROSSOPTS} .
+ make
+}
+
+check() {
+ x11_tests="testalarm testattachment testattendee testcalfilter
+ testconference testcustomproperties testdateserialization testduration
+ testevent testincidence testexception testfilestorage testfreebusy
+ testindicdencerelation testicalformat testidentical testjournal
+ testmemorycalendar testperiod testfreebusyperiod testperson
+ testrecurtodo teststartdatetimesfordate testtodo testtimesininterval
+ testcreateddatecompat testrecurrenceexception testoccurrenceiterator
+ testreadrecurrenceid testcalendarobserver"
+
+ # https://invent.kde.org/frameworks/kcalendarcore/-/issues/3
+ failing_tests="Compat-AppleICal Compat-MSExchange"
+
+ skipline="(testicaltimezones"
+ for tname in $failing_tests $x11_tests; do
+ skipline="$skipline|$tname"
+ done
+ skipline="$skipline)"
+ echo $skipline
+
+ TZ=UTC CTEST_PARALLEL_JOBS=${JOBS} CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E "$skipline"
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="e9747a1965ca78d6112276cbd501cf00494fe7ba777a24a92e7f0f1b605770f924bca2d1b7e30b69b19051f2c823d71faa37ae4768857d6adb38d7c0dfd9a32c kcalendarcore-5.94.0.tar.xz"
diff --git a/user/kcharselect/APKBUILD b/user/kcharselect/APKBUILD
index dcaab53ea..b05da2927 100644
--- a/user/kcharselect/APKBUILD
+++ b/user/kcharselect/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcharselect
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Tool to select special characters from all installed fonts"
url="https://utils.kde.org/projects/kcharselect/"
@@ -11,10 +11,9 @@ depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kbookmarks-dev kcrash-dev
kdoctools-dev ki18n-dev kwidgetsaddons-dev kxmlgui-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kcharselect-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kcharselect-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,18 +24,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="eea89de5285ffb1afa744e7482423721026dd1c8ad0ce32720f2c8fecf105505e94b035f12b19d69e518fc27656257fbd5d1e3e578a5b1047f4d361bb4d77e7f kcharselect-18.12.3.tar.xz"
+sha512sums="d8d0c7423210ee857a285c546f726a8d9395c73c9317670d52527fd156bfce3d56a826784be3b84079aa659c9bd249df39dbea4192d74aef2d95cd248e240bf3 kcharselect-22.04.2.tar.xz"
diff --git a/user/kcmutils/APKBUILD b/user/kcmutils/APKBUILD
index f8650aa17..8f010741c 100644
--- a/user/kcmutils/APKBUILD
+++ b/user/kcmutils/APKBUILD
@@ -1,22 +1,24 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcmutils
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for writing System Settings modules"
url="https://api.kde.org/frameworks/kcmutils/html/index.html"
arch="all"
+options="!check" # Test suite requires running X11 session.
license="LGPL-2.1-only AND LGPL-2.1+"
depends=""
depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev kitemviews-dev kservice-dev
kconfigwidgets-dev kiconthemes-dev kdeclarative-dev kxmlgui-dev"
+docdepends="kconfigwidgets-doc kservice-doc kcodecs-doc kwidgetsaddons-doc
+ kconfig-doc kauth-doc kcoreaddons-doc"
makedepends="$depends_dev cmake extra-cmake-modules python3 doxygen graphviz
- qt5-qttools-dev"
+ qt5-qttools-dev $docdepends"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kcmutils-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +30,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="dbb8e24a86378ab283cb934fc27caa4dc3a91e3f90d70a12d64bb08dc669427e64469720507265c2cc2276133bbfe4f57c48c7a7498b5f020d503d0fcba9c3ea kcmutils-5.54.0.tar.xz"
+sha512sums="c5ca1e1b61da4c7c96bb8e95593e4799c86345a6d4ae222284c31e31ac3c60ace81bd1f8e62c5e1956b25f2f6f32d9586912505380dce888a7e76ed86f45fdca kcmutils-5.94.0.tar.xz"
diff --git a/user/kcodecs/APKBUILD b/user/kcodecs/APKBUILD
index 5bfa7eed2..22336404b 100644
--- a/user/kcodecs/APKBUILD
+++ b/user/kcodecs/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcodecs
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for manipulating strings in differing encodings"
url="https://www.kde.org/"
@@ -14,8 +14,11 @@ makedepends="$depends_dev cmake extra-cmake-modules gperf qt5-qttools-dev
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kcodecs-$pkgver.tar.xz"
+# secfixes:
+# 5.74.0-r0:
+# - CVE-2013-0779
+
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +30,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="75e8d3800c0906a437d8d0d957c91d00b423ecb513f1f62d08dcffb1ddf70c65b78f430fc8519334a75f77b15fcb9869d7761ac87fa5936b7a8af88ecaac60ae kcodecs-5.54.0.tar.xz"
+sha512sums="553d093d3b030552101c212d90fdd1ffdd04feb59d96e9e859ad64b6abbda8d43690c5cfbbf3383cdaa25f9bc7620a6105c839a8446f109386e08cd74504b0c9 kcodecs-5.94.0.tar.xz"
diff --git a/user/kcolorchooser/APKBUILD b/user/kcolorchooser/APKBUILD
index 136d2a814..0116b6f20 100644
--- a/user/kcolorchooser/APKBUILD
+++ b/user/kcolorchooser/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcolorchooser
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Simple application to choose a colour from the screen"
url="https://www.kde.org/applications/graphics/kcolorchooser/"
@@ -10,10 +10,9 @@ license="MIT"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev ki18n-dev kxmlgui-dev"
subpackages="$pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kcolorchooser-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kcolorchooser-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -24,18 +23,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="27e6cc50cdb04f502746a17cf463751173f8f8e057ae1d3d31ae6cb5b10e29123649da755a65f9f7d505d99f585f47905de7a5d3b4f914c7fc84b41d58b7be6a kcolorchooser-18.12.3.tar.xz"
+sha512sums="611a841fd971f24dd461d13db5ab7d7bec7c12494f07056e87890c6a5743238e8ef55551e8f22b9b5ae54dcb98ae93f71c5e611fab69cf032c40d6c5bf9c8e99 kcolorchooser-22.04.2.tar.xz"
diff --git a/user/kcompletion/APKBUILD b/user/kcompletion/APKBUILD
index dc4fb6a3f..12f7c7222 100644
--- a/user/kcompletion/APKBUILD
+++ b/user/kcompletion/APKBUILD
@@ -1,12 +1,12 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcompletion
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for implementing automatic completion of input"
url="https://www.kde.org/"
arch="all"
-license="LGPL-2.1+"
+license="LGPL-2.0+"
depends=""
depends_dev="qt5-qtbase-dev kconfig-dev kwidgetsaddons-dev"
makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev doxygen"
@@ -14,7 +14,6 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kcompletion-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,19 +25,17 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
# All other tests require X11.
CTEST_OUTPUT_ON_FAILURE=TRUE ctest -R ksortablelisttest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="af813411090d25f85d1b409bd971d9f610cc7c1ce01463f70cf57791af9dafe88957d74be0b63c4ca8f7d2a790c48d34613a03bed03552cae30346576849f654 kcompletion-5.54.0.tar.xz"
+sha512sums="fe0adcafba6f2d72c504f900f90fe04d5c10d198ead1c43e386736df8ac97da923f34b4e623b63da9edd8455dbbf31a671c216c0f58884c6ee93a9dc5e5b7b04 kcompletion-5.94.0.tar.xz"
diff --git a/user/kconfig/APKBUILD b/user/kconfig/APKBUILD
index 93e221ccc..1a05bdfd5 100644
--- a/user/kconfig/APKBUILD
+++ b/user/kconfig/APKBUILD
@@ -1,21 +1,21 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kconfig
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for managing software configuration"
url="https://www.kde.org/"
arch="all"
-options="!checkroot"
-license="LGPL-2.1+"
+options="!check" # Tests require running D-Bus.
+license="LGPL-2.0+"
depends=""
depends_dev="qt5-qtbase-dev"
-makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev doxygen"
+makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev doxygen
+ qt5-qtdeclarative-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kconfig-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +27,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest -R kconfigcore
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="2a35d635db47e3b1e4fa3919ec73190a8d0bb9e82c4a8487ae7b87ba73cb54659e97124c9761de4dc303d8697f8f17b3d27d30b43e47bb870a052be87c843de7 kconfig-5.54.0.tar.xz"
+sha512sums="59d7d957313e421a332fb0a83eef6be68455c3de50cee0cd0d1b6b22f2b97ad9fdfddac282f03c4cedc5f364d4b3321c3f3fdadd7824e0523c5260446dc31ac9 kconfig-5.94.0.tar.xz"
diff --git a/user/kconfigwidgets/APKBUILD b/user/kconfigwidgets/APKBUILD
index e492802ff..5b141f8f3 100644
--- a/user/kconfigwidgets/APKBUILD
+++ b/user/kconfigwidgets/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kconfigwidgets
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework providing widgets for software configuration"
url="https://www.kde.org/"
@@ -11,12 +11,15 @@ license="LGPL-2.1-only AND LGPL-2.1+"
depends=""
depends_dev="qt5-qtbase-dev kauth-dev kcodecs-dev kconfig-dev kguiaddons-dev
ki18n-dev kwidgetsaddons-dev kdoctools-dev"
-makedepends="$depends_dev cmake extra-cmake-modules doxygen qt5-qttools-dev"
+# Doc building requires the following docs:
+docdepends="kcodecs-doc kwidgetsaddons-doc kconfig-doc kcoreaddons-doc
+ kauth-doc"
+makedepends="$depends_dev cmake extra-cmake-modules doxygen qt5-qttools-dev
+ $docdepends"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kconfigwidgets-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,19 +30,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- -DBUILD_QCH:BOOL=ON
- ${CMAKE_CROSSOPTS}
+ -DBUILD_QCH:BOOL=ON \
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="c6ec2d90c3c227eb9b092bf5b33c39f99ca4f68b1337cc0655d679648710987d13e1c8d9622ad5683ba5b2b3037aca510d96ff64d04a41dd442f3bed74398b73 kconfigwidgets-5.54.0.tar.xz"
+sha512sums="1b99bb215d6f00204e6605cc078062d3e6d9b8c3e5b4a2166e82aaf1a50ac02bbede955908bb7c3bd04e6d1733b103f4e50850358d462d3568bd59f8cf43d02e kconfigwidgets-5.94.0.tar.xz"
diff --git a/user/kcontacts/APKBUILD b/user/kcontacts/APKBUILD
index cf1efe711..5b133efe6 100644
--- a/user/kcontacts/APKBUILD
+++ b/user/kcontacts/APKBUILD
@@ -1,21 +1,20 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcontacts
-pkgver=18.12.3
+pkgver=5.94.0
pkgrel=0
pkgdesc="Library for working with contact information"
url="https://www.kde.org"
arch="all"
-license="LGPL-2.1-only"
+license="LGPL-2.0+"
depends="iso-codes"
depends_dev="qt5-qtbase-dev"
makedepends="$depends_dev cmake extra-cmake-modules kconfig-dev kcoreaddons-dev
- ki18n-dev kcodecs-dev iso-codes-dev"
-subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kcontacts-$pkgver.tar.xz"
+ ki18n-dev kcodecs-dev iso-codes-dev doxygen graphviz qt5-qttools-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kcontacts-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,20 +25,18 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ -DBUILD_QCH:BOOL=ON \
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
- # addresstest requires the library to already be installed.
- # picturetest requires X11 running.
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E "(address|picture)test"
+ # All tests except addressformattest require X11 running.
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -R "addressformattest"
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3afdc0f3fb304329f0dec37f7db1d4cf457eda726a9276d440d9ada83f946c28806d5a3e69f0c711fb398567a7e3566b7c043b1dfc4ec59eae0b9ed0aa08689a kcontacts-18.12.3.tar.xz"
+sha512sums="59291b9639ecf0bf3f28cf1b6cf46239381acc4354fc6cf5d9578ab4eaa5bccfa5e1504478f1be8c435b9b57c77f3c53e41bcae12ddc12ec1fa419ed4bf8f0ec kcontacts-5.94.0.tar.xz"
diff --git a/user/kcoreaddons/APKBUILD b/user/kcoreaddons/APKBUILD
index a94b25c34..74901c11e 100644
--- a/user/kcoreaddons/APKBUILD
+++ b/user/kcoreaddons/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcoreaddons
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Core KF5 framework"
url="https://www.kde.org/"
@@ -13,10 +13,11 @@ depends_dev="qt5-qtbase-dev"
makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev doxygen
shared-mime-info"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kcoreaddons-$pkgver.tar.xz"
+source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kcoreaddons-$pkgver.tar.xz
+ utf8.patch
+ "
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +29,17 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="8e4a2cd59a0ecdf09317e67aa20b96f37562035beb744d189856094bcb06944e175c78515374a8a090446e63c8174b2a949b744dff36f0e21c455a2cb5df5df9 kcoreaddons-5.54.0.tar.xz"
+sha512sums="b94ffa2e845dcfb481d496348969b1ec4ddba0a3c1fdcec636567a89fb6f65179a10b43add14cf5c4e720dce4459e725dca6ee5800fdf9551385ec7fffc1b462 kcoreaddons-5.94.0.tar.xz
+d462866912d9cc9a768477d872142eb67be6b616c044436a27aa71577546efe4aa323b3dac913f9dbb52fc62dbe27d464b30ac3c4cb23c5d7c414d96138e9300 utf8.patch"
diff --git a/user/kcoreaddons/utf8.patch b/user/kcoreaddons/utf8.patch
new file mode 100644
index 000000000..3fee25313
--- /dev/null
+++ b/user/kcoreaddons/utf8.patch
@@ -0,0 +1,17 @@
+Use UTF-8 for parsing /etc/os-release.
+
+diff --git a/src/lib/util/kosrelease.cpp b/src/lib/util/kosrelease.cpp
+index 0469aba..1d74f2a 100644
+--- a/src/lib/util/kosrelease.cpp
++++ b/src/lib/util/kosrelease.cpp
+@@ -134,9 +134,9 @@ public:
+ QStringList parts;
+ while (!file.atEnd()) {
+ // Trimmed to handle indented comment lines properly
+- line = QString::fromLatin1(file.readLine()).trimmed();
++ line = QString::fromUtf8(file.readLine()).trimmed();
+
+ if (line.startsWith(QLatin1Char('#'))) {
+ // Comment line
+ // Lines beginning with "#" shall be ignored as comments.
+ continue;
diff --git a/user/kcrash/APKBUILD b/user/kcrash/APKBUILD
index 46275a105..ed14644de 100644
--- a/user/kcrash/APKBUILD
+++ b/user/kcrash/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kcrash
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for gracefully handling software errors~"
url="https://www.kde.org/"
@@ -11,14 +11,13 @@ license="LGPL-2.1+"
depends=""
depends_dev="qt5-qtbase-dev libx11-dev libxext-dev libice-dev kcoreaddons-dev
kwindowsystem-dev"
+checkdepends="xkeyboard-config"
makedepends="$depends_dev cmake extra-cmake-modules doxygen graphviz
qt5-qttools-dev"
-checkdepends="xkeyboard-config"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kcrash-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -30,18 +29,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="1dae5de58b8f91e463af8bf745a474472f2d53d2c2ea3bdbff2477c9220a720df1c7f97400e58a3060f891120ced85bb37f9458a7b17b6c1af1be765c9fea671 kcrash-5.54.0.tar.xz"
+sha512sums="ce0b9de0f2a4816f40f2a958d101434d0940d2bc26a671d26814c02f836d2e1f3b862d38d37895b6d096091333e12bb76eff5c99ccabba21c12e485eedb6facc kcrash-5.94.0.tar.xz"
diff --git a/user/kdbusaddons/APKBUILD b/user/kdbusaddons/APKBUILD
index 145f56cb1..fd0e72677 100644
--- a/user/kdbusaddons/APKBUILD
+++ b/user/kdbusaddons/APKBUILD
@@ -1,13 +1,13 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdbusaddons
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for coping with D-Bus"
url="https://www.kde.org/"
arch="all"
options="!check" # Requires running dbus-daemon
-license="LGPL-2.1-only OR LGPL-3.0-only"
+license="LGPL-2.0+"
depends=""
depends_dev="qt5-qtbase-dev qt5-qtx11extras-dev"
makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev doxygen"
@@ -15,7 +15,6 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kdbusaddons-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3ed4e8d3861aa894ba895fbec1c792f1f6c35a4d1c1617b367b772076ed1417bceed427e1b9046158cc1f85c0fd0d14b23093f8c3804cae9b5b93508a43deab2 kdbusaddons-5.54.0.tar.xz"
+sha512sums="8075330a54c41a94ad97b2514635ad3845128dd856510ebd4441ee3d349c125ac189cf4d3d582dd5e19cef29f07e7df8d22f4f72c8b3fe26d4ca5e262c527929 kdbusaddons-5.94.0.tar.xz"
diff --git a/user/kde-cli-tools/APKBUILD b/user/kde-cli-tools/APKBUILD
index 1bc604c64..a95557d32 100644
--- a/user/kde-cli-tools/APKBUILD
+++ b/user/kde-cli-tools/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=kde-cli-tools
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="KDE command-like utilities"
url="https://www.kde.org/"
@@ -9,15 +9,15 @@ arch="all"
options="!check" # MIME types for some reason think .doc == .txt
license="(GPL-2.0-only OR GPL-3.0-only) AND GPL-2.0+ AND GPL-2.0-only AND LGPL-2.1-only"
depends=""
+checkdepends="shared-mime-info"
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev
qt5-qtx11extras-dev kactivities-dev kcmutils-dev kconfig-dev
- kdelibs4support-dev kdesu-dev kdoctools-dev ki18n-dev kiconthemes-dev
- kinit-dev kio-dev kwindowsystem-dev"
+ kdeclarative-dev kdesu-dev kdoctools-dev ki18n-dev kiconthemes-dev
+ kinit-dev kio-dev kservice-dev kwindowsystem-dev libkworkspace-dev"
subpackages="$pkgname-lang $pkgname-doc"
source="https://download.kde.org/stable/plasma/$pkgver/kde-cli-tools-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +28,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="44dd8a9b999dd0f4fb9f5953da7b9af805ba0508b18bbcb8420418049318b095d9553b1723e1ddab8b7d3d48ed42ca75fb0ede17043c2a82c95769938130ad77 kde-cli-tools-5.12.7.tar.xz"
+sha512sums="db89474ea3c88978123012430249677405b245628b0b12fda917b70fca9ea36e060f351420d0dd94f64e3a479a04a768064df27830884e2a8883db9104b90844 kde-cli-tools-5.24.5.tar.xz"
diff --git a/user/kde-development/APKBUILD b/user/kde-development/APKBUILD
new file mode 100644
index 000000000..ff9d1c17c
--- /dev/null
+++ b/user/kde-development/APKBUILD
@@ -0,0 +1,21 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kde-development
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="Development software from the KDE Software Collection"
+url="https://www.kde.org/applications/development/"
+arch="noarch"
+options="!check" # Empty meta package, no point in testing.
+license="NCSA"
+depends="cervisia clazy kapptemplate kcachegrind kdebugsettings kdesvn kdevelop
+ kdiff3 kirigami-gallery kompare lokalize massif-visualizer umbrello"
+makedepends=""
+source="org.adelie-linux.about-development.desktop"
+
+package() {
+ mkdir -p "$pkgdir"/usr/share/applications
+ cp -pr "$srcdir"/*.desktop "$pkgdir"/usr/share/applications/
+}
+
+sha512sums="13a1ce0507e43512ca212bbbfd05a1b19515de3b661a3a4013c1482fa46cc3a5e98738dc8f096b6ad11bc17eec6903da7e7d49d190832615e344881f181cb2a9 org.adelie-linux.about-development.desktop"
diff --git a/user/kde-development/org.adelie-linux.about-development.desktop b/user/kde-development/org.adelie-linux.about-development.desktop
new file mode 100644
index 000000000..8cc47cad9
--- /dev/null
+++ b/user/kde-development/org.adelie-linux.about-development.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Version=1.0
+Name=About KDE Development
+Comment=Learn about KDE development software included with Adélie
+Icon=dialog-information
+Categories=KDE;Development
+Exec=xdg-open https://support.adelielinux.org/html/desktop-kde/development.html
diff --git a/user/kde-education/APKBUILD b/user/kde-education/APKBUILD
index af3f78ab5..1cf216876 100644
--- a/user/kde-education/APKBUILD
+++ b/user/kde-education/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kde-education
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Educational software from the KDE Software Collection"
url="https://www.kde.org/applications/education/"
@@ -9,9 +9,10 @@ arch="noarch"
options="!check" # Empty meta package, no point in testing.
license="NCSA"
# gcompris-qt is removed until it works with gettext-tiny.
+# Parley is unavailable because of web engine requirement.
depends="artikulate blinken cantor kalgebra kalzium kanagram kbruch
- kgeography khangman kig kiten klettres kmplot ktouch kturtle kwordquiz
- labplot marble minuet rocs step"
+ kgeography khangman kig kiten klettres kmplot kstars ktouch kturtle
+ kwordquiz labplot marble minuet rocs step xdg-utils"
makedepends=""
source="org.adelie-linux.about-education.desktop"
diff --git a/user/kde-games/APKBUILD b/user/kde-games/APKBUILD
index 221120015..2a98fcba6 100644
--- a/user/kde-games/APKBUILD
+++ b/user/kde-games/APKBUILD
@@ -1,19 +1,19 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kde-games
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="The KDE games collection"
url="https://www.kde.org/applications/games/"
arch="noarch"
options="!check" # Metapackage, no tests needed.
license="NCSA"
-depends="bomber bovo granatier kapman katomic kblackbox kblocks kbounce
- kbreakout kdiamond kfourinline kgoldrunner kigo killbots kiriki
- kjumpingcube klickety klines kmahjongg kmines knavalbattle knetwalk
- kolf kollision konquest kpat kreversi kshisen ksirk ksnakeduel
- kspaceduel ksquares ksudoku kteatime ktuberling kubrick lskat palapeli
- xdg-utils"
+depends="blinken bomber bovo granatier kanagram kapman katomic kblackbox
+ kblocks kbounce kbreakout kdiamond kfourinline kgoldrunner khangman
+ kigo killbots kiriki kjumpingcube klickety klines kmahjongg kmines
+ knavalbattle knetwalk kolf kollision konquest kpat kreversi kshisen
+ ksirk ksnakeduel kspaceduel ksquares ksudoku ktuberling kubrick
+ lskat palapeli picmi xdg-utils"
makedepends=""
source="org.adelie-linux.about-games.desktop"
diff --git a/user/kde-graphics/APKBUILD b/user/kde-graphics/APKBUILD
index 95112536d..655d7276a 100644
--- a/user/kde-graphics/APKBUILD
+++ b/user/kde-graphics/APKBUILD
@@ -1,16 +1,15 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kde-graphics
-pkgver=18.12.3
-pkgrel=0
+pkgver=22.04.2
+pkgrel=1
pkgdesc="Graphics software from the KDE Software Collection"
url="https://www.kde.org/applications/graphics/"
arch="noarch"
options="!check" # Empty meta package, no point in testing.
license="NCSA"
### FIXME: add karbon when calligra is packaged
-### FIXME: add digikam when it works again
-depends="gwenview kcolorchooser kgraphviewer kolourpaint
+depends="digikam gwenview kcolorchooser kgraphviewer kolourpaint
kphotoalbum krita kruler kxstitch okular skanlite spectacle
symboleditor"
makedepends=""
diff --git a/user/kde-gtk-config/APKBUILD b/user/kde-gtk-config/APKBUILD
index cf0ef1c81..1fd44165c 100644
--- a/user/kde-gtk-config/APKBUILD
+++ b/user/kde-gtk-config/APKBUILD
@@ -1,21 +1,21 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=kde-gtk-config
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="KDE System Settings panel for configuring GTK+ application styles"
url="https://www.kde.org/"
arch="all"
license="GPL-3.0+"
-depends="gsettings-desktop-schemas"
+depends="gsettings-desktop-schemas xsettingsd"
makedepends="cmake extra-cmake-modules qt5-qtbase-dev gtk+2.0-dev gtk+3.0-dev
- karchive-dev kcmutils-dev kconfigwidgets-dev ki18n-dev kiconthemes-dev
- kio-dev knewstuff-dev gsettings-desktop-schemas-dev"
-subpackages="$pkgname-lang"
+ kauth-dev kcodecs-dev kconfig-dev kconfigwidgets-dev kcoreaddons-dev
+ kdbusaddons-dev kdecoration-dev kguiaddons-dev ki18n-dev qt5-qtsvg-dev
+ kwidgetsaddons-dev gsettings-desktop-schemas-dev sassc"
+subpackages=""
source="https://download.kde.org/stable/plasma/$pkgver/kde-gtk-config-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b6698fba63f5a9d3d58112ecd2c198e9edb9b0ad9d6c8a670bef3f0e836fcf0c5f2c5444d6cbdf7370f2bfcfe5ad8a770b513ebb7a693c19624bf52bf9d02056 kde-gtk-config-5.12.7.tar.xz"
+sha512sums="0cc7a76aca458ec093b55ea148637a82fa53467f3944d4192f4138f7eb93c88a2a65cd64e7438814f11182a390d39629982850b6939902738fd1d2a2af65319d kde-gtk-config-5.24.5.tar.xz"
diff --git a/user/kde-internet/APKBUILD b/user/kde-internet/APKBUILD
new file mode 100644
index 000000000..85984df33
--- /dev/null
+++ b/user/kde-internet/APKBUILD
@@ -0,0 +1,21 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kde-internet
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="Internet software from the KDE Software Collection"
+url="https://www.kde.org/applications/internet/"
+arch="noarch"
+options="!check" # Empty meta package, no point in testing.
+license="NCSA"
+# Add Banji when we can package libringqt
+depends="choqok kget konversation kopete krdc krfb ktorrent"
+makedepends=""
+source="org.adelie-linux.about-internet.desktop"
+
+package() {
+ mkdir -p "$pkgdir"/usr/share/applications
+ cp -pr "$srcdir"/*.desktop "$pkgdir"/usr/share/applications/
+}
+
+sha512sums="fd36955961bf12e394091e236a5110129c6db9e97220f9589938eadaa54e09af4b90921de9c328f893a15bfcd17fd487cbdb7ee3379996402428d47a720983bb org.adelie-linux.about-internet.desktop"
diff --git a/user/kde-internet/org.adelie-linux.about-internet.desktop b/user/kde-internet/org.adelie-linux.about-internet.desktop
new file mode 100644
index 000000000..0aefb991f
--- /dev/null
+++ b/user/kde-internet/org.adelie-linux.about-internet.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Version=1.0
+Name=About KDE Internet Software
+Comment=Learn about KDE Internet software included with Adélie
+Icon=dialog-information
+Categories=KDE;Network
+Exec=xdg-open https://support.adelielinux.org/html/desktop-kde/internet.html
diff --git a/user/kde-multimedia/APKBUILD b/user/kde-multimedia/APKBUILD
index bb36aeb40..e86c527b1 100644
--- a/user/kde-multimedia/APKBUILD
+++ b/user/kde-multimedia/APKBUILD
@@ -1,14 +1,15 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kde-multimedia
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Multimedia software from the KDE Software Collection"
url="https://www.kde.org/applications/multimedia/"
arch="noarch"
options="!check" # Empty meta package, no point in testing.
license="NCSA"
-depends="dragonplayer juk kaffeine kdenlive kmediaplayer kmix kwave"
+depends="dragonplayer juk kaffeine kamoso kdenlive kmediaplayer kmix
+ kwave"
makedepends=""
source="org.adelie-linux.about-multimedia.desktop"
diff --git a/user/kde-system/APKBUILD b/user/kde-system/APKBUILD
index 2507670a3..40600ca17 100644
--- a/user/kde-system/APKBUILD
+++ b/user/kde-system/APKBUILD
@@ -1,15 +1,15 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kde-system
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="System utiltiies from the KDE Software Collection"
url="https://www.kde.org/applications/system/"
arch="noarch"
options="!check" # Empty meta package, no point in testing.
license="NCSA"
-depends="dolphin kdf khelpcenter kinfocenter konsole krfb ksysguard ksystemlog
- kwalletmanager partitionmanager xdg-utils yakuake"
+depends="dolphin kdf khelpcenter kinfocenter konsole krfb ksystemlog
+ kwalletmanager partitionmanager systemsettings xdg-utils yakuake"
makedepends=""
source="org.adelie-linux.about-system.desktop"
diff --git a/user/kde-utilities/APKBUILD b/user/kde-utilities/APKBUILD
index 24e00fd7d..913213010 100644
--- a/user/kde-utilities/APKBUILD
+++ b/user/kde-utilities/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kde-utilities
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Desktop utiltiies from the KDE Software Collection"
url="https://www.kde.org/applications/utilities/"
diff --git a/user/kde/APKBUILD b/user/kde/APKBUILD
index dbb054a1e..824673457 100644
--- a/user/kde/APKBUILD
+++ b/user/kde/APKBUILD
@@ -1,18 +1,19 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kde
pkgver=5
-pkgrel=1
+pkgrel=5
pkgdesc="The K Desktop Environment"
url="https://www.kde.org/"
arch="noarch"
-license="NCSA"
options="!check" # Metapacakge
+license="NCSA"
subpackages=""
-depends="adelie-kde-theme kde-education kde-games kde-graphics kde-multimedia
- kde-system kde-utilities plasma-desktop
+depends="adelie-fonts adelie-kde-theme
+
+ kde-development kde-education kde-games kde-graphics kde-internet
+ kde-multimedia kde-system kde-utilities plasma-desktop plasma-meta
- kgamma5 khotkeys kmenuedit ksshaskpass plasma-workspace-wallpapers
- user-manager"
+ kgamma5 khotkeys kmenuedit ksshaskpass plasma-workspace-wallpapers"
source=""
package() {
diff --git a/user/kdebugsettings/APKBUILD b/user/kdebugsettings/APKBUILD
new file mode 100644
index 000000000..bb267bf33
--- /dev/null
+++ b/user/kdebugsettings/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kdebugsettings
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="Set KDE debug settings"
+url="https://kde.org/applications/development/org.kde.kdebugsettings"
+arch="all"
+license="LGPL-2.1+"
+depends=""
+makedepends="qt5-qtbase-dev cmake extra-cmake-modules kcompletion-dev
+ kconfig-dev kcoreaddons-dev kdbusaddons-dev ki18n-dev kitemviews-dev
+ kwidgetsaddons-dev"
+subpackages="$pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kdebugsettings-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ QT_QPA_PLATFORM=offscreen CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="5fff45b54253396760cfc9b9ded0a242afaeafb17fc6e61c39ab433ec6f877d105491a8a313298819273bc54797b78993a0003867ed20905fce53431a4799fde kdebugsettings-22.04.2.tar.xz"
diff --git a/user/kdeclarative/APKBUILD b/user/kdeclarative/APKBUILD
index 877ddaae8..d16ffdb8d 100644
--- a/user/kdeclarative/APKBUILD
+++ b/user/kdeclarative/APKBUILD
@@ -1,23 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdeclarative
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Frameworks for creating KDE components using QML"
url="https://www.kde.org/"
arch="all"
options="!check" # Requires accelerated X11 desktop running
-license="LGPL-2.1+"
+license="LGPL-2.0+"
depends=""
depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev kiconthemes-dev kio-dev
- kpackage-dev libepoxy-dev"
+ knotifications-dev kpackage-dev libepoxy-dev"
+docdepends="kcoreaddons-doc kconfig-doc kpackage-doc"
makedepends="$depends_dev cmake extra-cmake-modules python3 doxygen graphviz
qt5-qttools-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kdeclarative-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,18 +29,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="57a042a3c9be486b9582f133a0d6688758d1ae2dd4079168d3830cbd6b2d656b22d7b1fa321f77c1d14e216e2714984303db943df623b71d29c87d7c410871c2 kdeclarative-5.54.0.tar.xz"
+sha512sums="dfe5359a0dcc75e00ef0ece97903b4217e896d3427633e9dbec834cf924d921982576651139e9215b01d283213ce0d73d03ab67b9d3561763ca0596ad80067b4 kdeclarative-5.94.0.tar.xz"
diff --git a/user/kdecoration/APKBUILD b/user/kdecoration/APKBUILD
index 31d3b27db..8a0a85d54 100644
--- a/user/kdecoration/APKBUILD
+++ b/user/kdecoration/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=kdecoration
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="Window decoration plugin library"
url="https://www.kde.org/"
@@ -10,12 +10,11 @@ options="!check" # Requires running X11 display
license="LGPL-2.1"
depends=""
depends_dev="qt5-qtbase-dev"
-makedepends="$depends_dev cmake extra-cmake-modules"
-subpackages="$pkgname-dev"
+makedepends="$depends_dev cmake extra-cmake-modules kcoreaddons-dev ki18n-dev"
+subpackages="$pkgname-dev $pkgname-lang"
source="https://download.kde.org/stable/plasma/$pkgver/kdecoration-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="acebb17f42e46dfcb57b5f94e2612e0c4f773ad15e911543281c578de4a409b8f65a028b458afd01f578abb69906316b3c6f2b6d6edd4918b302a8a26227ad95 kdecoration-5.12.7.tar.xz"
+sha512sums="d523e8515868685a15c20deead4ece798369736b117b1c29b14fa4849d6fc0a409a5b2a3eaa2756694e12ae0e22440a670ed6b79aecef7197b67d591b384d11a kdecoration-5.24.5.tar.xz"
diff --git a/user/kded/APKBUILD b/user/kded/APKBUILD
index ccd6935d7..5b6762c8b 100644
--- a/user/kded/APKBUILD
+++ b/user/kded/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kded
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Central KDE workspace daemon"
url="https://www.kde.org/"
@@ -10,12 +10,11 @@ license="LGPL-2.1-only AND LGPL-2.1+"
depends=""
depends_dev="qt5-qtbase-dev"
makedepends="$depends_dev cmake extra-cmake-modules kconfig-dev kcoreaddons-dev
- kcrash-dev kdbusaddons-dev kdoctools-dev kinit-dev kservice-dev"
+ kcrash-dev kdbusaddons-dev kdoctools-dev kservice-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kded-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="696f98b222616200a308c97c04d3fcc1f941bd46bf4ff8913d5d3e95c46f385906dc71c43e55d44938aab21a572786130370b5a1210a811390c356a50a2ccc77 kded-5.54.0.tar.xz"
+sha512sums="35da63b63f5e595c225f30879cdff6cdc0b74b93028a7cefc71dd93447759488f6419492449c1f4c25b71b5b3ec4299a4e785b3be37c792468751a5e5c6ac32a kded-5.94.0.tar.xz"
diff --git a/user/kdegraphics-thumbnailers/APKBUILD b/user/kdegraphics-thumbnailers/APKBUILD
index f3504d35f..cef3327c2 100644
--- a/user/kdegraphics-thumbnailers/APKBUILD
+++ b/user/kdegraphics-thumbnailers/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdegraphics-thumbnailers
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="KDE thumbnailing sofware"
url="https://www.KDE.org/"
@@ -11,10 +11,9 @@ depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kio-dev libkdcraw-dev
libkexiv2-dev"
subpackages=""
-source="https://download.kde.org/stable/applications/$pkgver/src/kdegraphics-thumbnailers-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kdegraphics-thumbnailers-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,18 +24,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ -DDISABLE_MOBIPOCKET=True \
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="4e353f782d0f5acb3a6755f2868585b37c7527c5678b06f964ab78e902bcef97adfe882171690a029f3fca8c1b1805f0b89ee8fa71140b5ef8344d042bb6e109 kdegraphics-thumbnailers-18.12.3.tar.xz"
+sha512sums="c9c508674c99afa0ea67bbf2fd4d8fb18681a77486e164a74a8990d3f28cda595f4bb73c9ca29cec73f6892d020c28fe27bc02315fb0d011c632618087578d99 kdegraphics-thumbnailers-22.04.2.tar.xz"
diff --git a/user/kdelibs4support/APKBUILD b/user/kdelibs4support/APKBUILD
index 40da9c4ab..9829503aa 100644
--- a/user/kdelibs4support/APKBUILD
+++ b/user/kdelibs4support/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdelibs4support
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Legacy support for KDE 4 software"
url="https://www.kde.org/"
@@ -14,12 +14,11 @@ depends_dev="qt5-qtbase-dev qt5-qtsvg-dev qt5-qttools-dev kcompletion-dev
kemoticons-dev kparts-dev kunitconversion-dev kinit kded kded-dev
kitemmodels-dev knotifications-dev sonnet-dev threadweaver-dev
kinit-dev"
-makedepends="$depends_dev cmake extra-cmake-modules"
+makedepends="$depends_dev cmake extra-cmake-modules networkmanager-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/portingAids/kdelibs4support-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -30,18 +29,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="860c2de36c1a1587c423eaa8f770be254d0458f3c223592ac07f116015ee2f597b913039180bf832e892cfc1060eb3830fe45c786466771441e3a1815a6a5065 kdelibs4support-5.54.0.tar.xz"
+sha512sums="8b48b7d67201bc6e0fb67fa00b75dbaf8e35e21f7527b4bc79939c2b689c027bfa75eb60b13686bd8bce710a61682a27cac85481edd6e321063aefb186cdd2f2 kdelibs4support-5.94.0.tar.xz"
diff --git a/user/kdenlive/APKBUILD b/user/kdenlive/APKBUILD
index ecdcfc4a3..30a075ec7 100644
--- a/user/kdenlive/APKBUILD
+++ b/user/kdenlive/APKBUILD
@@ -1,24 +1,29 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdenlive
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Libre video editor"
url="https://kdenlive.org/"
arch="all"
+options="!check" # keyframetest.cpp seems to be broken:
+ # it claims the KeyframeModel cannot be constructed,
+ # and then abort(3)s with an assertion in QAbstractItemModel
+ # I believe the fakeit/Mock code is subtly broken somewhere.
license="GPL-2.0-only"
-depends=""
+depends="qt5-qtquickcontrols2"
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtscript-dev kio-dev
qt5-qtsvg-dev qt5-qtdeclarative-dev kxmlgui-dev karchive-dev kcrash-dev
kbookmarks-dev kcoreaddons-dev kconfig-dev kconfigwidgets-dev mlt-dev
kdbusaddons-dev kwidgetsaddons-dev knotifyconfig-dev knewstuff-dev
knotifications-dev kguiaddons-dev ktextwidgets-dev kiconthemes-dev
- kdoctools-dev kfilemetadata-dev qt5-qtwebkit-dev v4l-utils-dev"
+ kdoctools-dev kfilemetadata-dev qt5-qtwebkit-dev v4l-utils-dev
+ kdeclarative-dev qt5-qtmultimedia-dev rttr-dev qt5-qtquickcontrols2-dev
+ purpose-dev qt5-qtnetworkauth-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kdenlive-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kdenlive-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,18 +34,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="9a05a48d7b2b958cc34fc1fd673af519861a0275f28d5b6774280e1b5eff009fa90a920d888466b70d2b07aecb3129892b6762d75d93106051c51c7a440fbfdc kdenlive-18.12.3.tar.xz"
+sha512sums="23833e4f7cf304360e233c56137ea56800a0e84d0506799ae9811d85c0f2cdda9b1400194f25ae1b11f43347fb9ec326c89b2776a2e34c851d951e759784b32a kdenlive-22.04.2.tar.xz"
diff --git a/user/kdeplasma-addons/APKBUILD b/user/kdeplasma-addons/APKBUILD
index 0c929b5f6..6574d70d8 100644
--- a/user/kdeplasma-addons/APKBUILD
+++ b/user/kdeplasma-addons/APKBUILD
@@ -1,29 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=kdeplasma-addons
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="Extra applets and toys for KDE Plasma"
url="https://www.kde.org/"
arch="all"
+options="!check" # Requires X11 session.
license="GPL-2.0+ AND LGPL-2.1-only"
depends="qt5-qtquickcontrols qt5-qtquickcontrols2"
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
qt5-qtx11extras-dev kactivities-dev kconfig-dev kconfigwidgets-dev
kcmutils-dev kcoreaddons-dev kdoctools-dev ki18n-dev knewstuff-dev
- kross-dev krunner-dev kservice-dev kunitconversion-dev
- kdelibs4support-dev plasma-framework-dev plasma-workspace-dev"
+ kross-dev krunner-dev kservice-dev kunitconversion-dev kholidays-dev
+ plasma-framework-dev plasma-workspace-dev purpose-dev"
subpackages="$pkgname-lang"
source="https://download.kde.org/stable/plasma/$pkgver/kdeplasma-addons-$pkgver.tar.xz"
-prepare() {
- cd "$builddir"
- default_prepare
- mkdir -p build
-}
-
build() {
- cd "$builddir"/build
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -35,18 +29,17 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
${CMAKE_CROSSOPTS} \
- ..
- make
+ -Bbuild \
+ .
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make -C build DESTDIR="$pkgdir" install
}
-sha512sums="7af90cee5605dd1b3548c033216b57128e3ef99043168a165b75d3a97fd54794182ffb97846bac91cf806ba4e1a82365a5d61c58f8537de43364c626de392bc7 kdeplasma-addons-5.12.7.tar.xz"
+sha512sums="de69d14ef6ffb23824bc646c1582cddfcac7334e7543a1414075f3debd8aab46d51d01983617ffec371ad1df703756b5f8d6c38eebb80ad10b6fe4d320747669 kdeplasma-addons-5.24.5.tar.xz"
diff --git a/user/kdesignerplugin/APKBUILD b/user/kdesignerplugin/APKBUILD
index 0e0fd39e9..fcf367c64 100644
--- a/user/kdesignerplugin/APKBUILD
+++ b/user/kdesignerplugin/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdesignerplugin
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Qt Designer plugin for KDE widgets"
url="https://www.kde.org/"
@@ -10,15 +10,12 @@ options="!check" # Test requires accelerated X11 display.
license="LGPL-2.1-only"
depends=""
depends_dev="$pkgname=$pkgver-r$pkgrel"
-makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qttools-dev kio-dev
- kcompletion-dev kconfig-dev kconfigwidgets-dev kcoreaddons-dev
- kdoctools-dev kiconthemes-dev kitemviews-dev kplotting-dev
- ktextwidgets-dev kwidgetsaddons-dev kxmlgui-dev sonnet-dev"
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qttools-dev
+ kconfig-dev kcoreaddons-dev kdoctools-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kdesignerplugin-$pkgver.tar.xz"
+source="https://download.kde.org/stable/frameworks/${pkgver%.*}/portingAids/kdesignerplugin-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="ac566101b0b991376d31612033a86a8db6bce30734fed3a6022f6d6cfde812b6df6a65f73578ebd6fa31b3954a1af7b134e38bf795b512cf5aa4af684b87c1a7 kdesignerplugin-5.54.0.tar.xz"
+sha512sums="46651ed770da8070541d8333baf6e37059693a4407245ea7330c8724f1ad03b06cbccea20b3909dbdd33ddaa33e9d2eac45d031eac8e0cc23eca0cec20a1e2ad kdesignerplugin-5.94.0.tar.xz"
diff --git a/user/kdesu/APKBUILD b/user/kdesu/APKBUILD
index bd1f01af5..58ea82d62 100644
--- a/user/kdesu/APKBUILD
+++ b/user/kdesu/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdesu
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for elevating privileges"
url="https://api.kde.org/frameworks/kdesu/html/index.html"
@@ -10,13 +10,13 @@ options="suid" # obvious
license="LGPL-2.1-only"
depends=""
depends_dev="qt5-qtbase-dev kpty-dev"
+docdepends="kcoreaddons-doc kpty-doc"
makedepends="$depends_dev cmake extra-cmake-modules python3 doxygen graphviz
- qt5-qttools-dev kcoreaddons-dev ki18n-dev kservice-dev"
+ qt5-qttools-dev kcoreaddons-dev ki18n-dev kconfig-dev $docdepends"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kdesu-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +28,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="6491ec9b13d802fa78917cb95aad80cd3de746fbb37f1fb9bef56a53021be95adb15156352cfc96664fcee0c5ef90a9045e1b2086d2af9b2c657ecc50146285f kdesu-5.54.0.tar.xz"
+sha512sums="850c35338d08c16e6fc82fe844640629e1198c1f127c286bf8e443e5b7e8b3b53529e8fc24a0ea62b824c7be4e42df933e49d6c5870562d971322574581bc664 kdesu-5.94.0.tar.xz"
diff --git a/user/kdesvn/APKBUILD b/user/kdesvn/APKBUILD
new file mode 100644
index 000000000..2b348f3c2
--- /dev/null
+++ b/user/kdesvn/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kdesvn
+pkgver=2.1.0_p1
+dlver=$(echo $pkgver | sed s/_p/-/)
+pkgrel=0
+pkgdesc="Graphical Subversion version control client"
+url="https://kde.org/applications/development/org.kde.kdesvn"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="qt5-qtbase-dev cmake extra-cmake-modules kbookmarks-dev kcodecs-dev
+ kcompletion-dev kconfig-dev kconfigwidgets-dev kcoreaddons-dev kauth-dev
+ kdbusaddons-dev ki18n-dev kiconthemes-dev kitemviews-dev kjobwidgets-dev
+ kio-dev knotifications-dev kparts-dev kservice-dev ktextwidgets-dev
+ kwallet-dev kwidgetsaddons-dev kxmlgui-dev apr-dev subversion-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/kdesvn/${pkgver%_*}/kdesvn-$dlver.tar.xz"
+builddir="$srcdir"/kdesvn-${pkgver%_*}
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="7d651abb99420caa368dec8d58bf80fc7cf75113f4f3639035835b2cef250de9e0cffab46f3d8efbdd33220b44cea77aa42f2f2ac54874f1ea6301b4718516ca kdesvn-2.1.0-1.tar.xz"
diff --git a/user/kdevelop-pg-qt/APKBUILD b/user/kdevelop-pg-qt/APKBUILD
new file mode 100644
index 000000000..6de09c288
--- /dev/null
+++ b/user/kdevelop-pg-qt/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kdevelop-pg-qt
+pkgver=2.2.1
+pkgrel=0
+pkgdesc="Parser generator for using QMake with KDevelop"
+url="https://kde.org/"
+arch="all"
+license="LGPL-2.0+ AND Expat AND GPL-3.0+"
+depends=""
+makedepends="qt5-qtbase-dev cmake extra-cmake-modules"
+subpackages="$pkgname-dev"
+source="https://download.kde.org/stable/kdevelop-pg-qt/$pkgver/src/kdevelop-pg-qt-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="0ef3daba60ee6c7d4602b31610bdc68709a730d4c3443770eac1aa1d298fc03e10b38bc0d2e34dd44df5bba1c3af945c87e80d8aaa818e0b1787121f056c78a9 kdevelop-pg-qt-2.2.1.tar.xz"
diff --git a/user/kdevelop/APKBUILD b/user/kdevelop/APKBUILD
new file mode 100644
index 000000000..92e0c29fd
--- /dev/null
+++ b/user/kdevelop/APKBUILD
@@ -0,0 +1,56 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kdevelop
+pkgver=5.6.2
+_llvmver=18
+pkgrel=1
+pkgdesc="KDE Integrated Development Environment (IDE)"
+url="https://www.kdevelop.org/"
+arch="all"
+options="!check" # Requires real X11 session.
+license="GPL-2.0+"
+# Yes, meson is a runtime dependency.
+depends="clazy cppcheck kdevelop-pg-qt meson okteta qt5-qttools
+ shared-mime-info"
+makedepends="qt5-qtbase-dev qt5-qtdeclarative-dev cmake extra-cmake-modules
+ karchive-dev kconfig-dev kcrash-dev kdeclarative-dev kdoctools-dev
+ kguiaddons-dev ki18n-dev kiconthemes-dev kio-dev kitemmodels-dev
+ kitemviews-dev kjobwidgets-dev kcmutils-dev knewstuff-dev
+ knotifications-dev knotifyconfig-dev kparts-dev kservice-dev
+ ktexteditor-dev kwindowsystem-dev kxmlgui-dev threadweaver-dev
+ libksysguard-dev grantlee-dev qt5-qttools-dev boost-dev clang-dev
+ qt5-qtwebkit-dev purpose-dev llvm$_llvmver-dev plasma-framework-dev
+ okteta-dev apr-dev astyle-dev krunner-dev subversion-dev
+ libkomparediff2-dev kdevelop-pg-qt-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/kdevelop/$pkgver/src/kdevelop-$pkgver.tar.xz
+ libarchive-tar.patch
+ "
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DCLANG_BUILTIN_DIR=/usr/lib/clang/8.0.1/include \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="d5ec09b3eda439436bee4dee88612deedf02caf949e74cb7d8405fbb40ae6f16ae1b5278da0574f41c43d186edbeec6b8c40918ef7f5fafa437e07a8c4ae92ce kdevelop-5.6.2.tar.xz
+c8b9cbdabb9285c183347889264e2089db5520879454fa4c85c2c1aa97612c3316c92f89bbd474d2c946c9bc8f29e4b8da79eabd6cb14e1213b0b2cdfba0c328 libarchive-tar.patch"
diff --git a/user/kdevelop/libarchive-tar.patch b/user/kdevelop/libarchive-tar.patch
new file mode 100644
index 000000000..318a6c2ed
--- /dev/null
+++ b/user/kdevelop/libarchive-tar.patch
@@ -0,0 +1,30 @@
+--- kdevelop-5.5.2/kdevplatform/cmake/modules/KDevPlatformMacros.cmake.old 2020-06-02 13:20:26.000000000 +0000
++++ kdevelop-5.5.2/kdevplatform/cmake/modules/KDevPlatformMacros.cmake 2020-07-19 21:24:00.465219669 +0000
+@@ -55,27 +55,12 @@
+ )
+ else()
+
+- if(APPLE OR CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
+ add_custom_command(OUTPUT ${_template}
+ COMMAND tar ARGS -c -C ${CMAKE_CURRENT_SOURCE_DIR}/${_templateName}
+ --exclude .kdev_ignore --exclude .svn --numeric-owner
+ -j -f ${_template} .
+ DEPENDS ${_deps}
+ )
+- else()
+- set(extraArgs "")
+- if(DEFINED ENV{SOURCE_DATE_EPOCH})
+- # We assume there is tar > 1.28 if a reproducible build is wanted.
+- set(extraArgs --mtime="@$ENV{SOURCE_DATE_EPOCH}" --sort=name
+- --pax-option=exthdr.name=%d/PaxHeaders/%f,delete=atime,delete=ctime)
+- endif()
+- add_custom_command(OUTPUT ${_template}
+- COMMAND tar ARGS -c -C ${CMAKE_CURRENT_SOURCE_DIR}/${_templateName}
+- --exclude .kdev_ignore --exclude .svn --mode=go=rX,u+rw,a-s
+- --owner=0 --group=0 --numeric-owner -j -f ${_template} ${extraArgs} .
+- DEPENDS ${_deps}
+- )
+- endif()
+
+ endif()
+
diff --git a/user/kdewebkit/APKBUILD b/user/kdewebkit/APKBUILD
index 9d00ce5d9..87107a831 100644
--- a/user/kdewebkit/APKBUILD
+++ b/user/kdewebkit/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdewebkit
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="KDE integration with WebKit"
url="https://www.kde.org/"
@@ -10,12 +10,11 @@ license="LGPL-2.1+"
depends=""
depends_dev="qt5-qtwebkit-dev"
makedepends="$depends_dev cmake extra-cmake-modules kconfig-dev kcoreaddons-dev
- kio-dev kparts-dev kwallet-dev"
+ kio-dev kparts-dev kwallet-dev qt5-qttools-dev"
subpackages="$pkgname-dev"
-source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kdewebkit-$pkgver.tar.xz"
+source="https://download.kde.org/stable/frameworks/${pkgver%.*}/portingAids/kdewebkit-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="6d4a5cede572653db64826d29470e7f2f1ecded97547c4ee49f5ca51e218c22ffeb84dbd0f0953e4e55d993aff617d262cc6f974902c5dc0219642dffb1611f1 kdewebkit-5.54.0.tar.xz"
+sha512sums="03d5ba333d18a2fd15c9777b7745fa0e0460695bd0b2e11eaa0383de9824a2f2e0edb0644f19521b767afa6452503d832dc979794487a97b1d9657c8901a3fe6 kdewebkit-5.94.0.tar.xz"
diff --git a/user/kdf/APKBUILD b/user/kdf/APKBUILD
index c9555acb1..53b41797e 100644
--- a/user/kdf/APKBUILD
+++ b/user/kdf/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdf
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="View disk usage information"
url="https://utils.kde.org/projects/kdf/"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kconfigwidgets-dev
kcoreaddons-dev kdoctools-dev ki18n-dev kiconthemes-dev kio-dev
kcmutils-dev knotifications-dev kwidgetsaddons-dev kxmlgui-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kdf-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kdf-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="6e604d18715dd5b743d63fe01528bfd347528f140638eed1900ae76a88911b2a2aea359e2603a17e82e7990a63c47789eb3b5839affb3a449547d9c89352444e kdf-18.12.3.tar.xz"
+sha512sums="b5fa744bc5805e3e3a3d704b31fcf0a8bc6916a1456c2916a488511fbd0b22ddddd69966bd5404abdf7f0d5fafb85a7e386e4282004920d8edec8e0eb9fa98cc kdf-22.04.2.tar.xz"
diff --git a/user/kdiagram/APKBUILD b/user/kdiagram/APKBUILD
index 3896e76c4..adf2e2f73 100644
--- a/user/kdiagram/APKBUILD
+++ b/user/kdiagram/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdiagram
-pkgver=2.6.1
+pkgver=2.8.0
pkgrel=0
pkgdesc="Charting libraries used by KDE"
url="https://www.kde.org/"
@@ -10,12 +10,11 @@ options="!check" # Tests require X11
license="LGPL-2.1+"
depends=""
depends_dev="qt5-qtbase-dev"
-makedepends="cmake extra-cmake-modules qt5-qtsvg-dev qt5-qttools-dev"
-subpackages="$pkgname-dev $pkgname-lang"
+makedepends="cmake doxygen extra-cmake-modules qt5-qtsvg-dev qt5-qttools-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/kdiagram/$pkgver/kdiagram-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ -DBUILD_QCH:BOOL=ON \
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="caa1f6f8bffb4b311224edfed115f189fa9c88e4b9d8bc9d4b7bc963c6b8c896813b438ad89fa9e91e4cde2f55ae822cfc7ba559bbdad517c60a037591dc5128 kdiagram-2.6.1.tar.xz"
+sha512sums="d981bce4feeb65038772125e5af1c096537ec87991fdb93d9a91dd5c9f089b1001647c8a63b209683a67b2d7b3aadeb7dd6279261eefaf6b6e046d0ab72723ec kdiagram-2.8.0.tar.xz"
diff --git a/user/kdiamond/APKBUILD b/user/kdiamond/APKBUILD
index fc791cbeb..a7526cb7e 100644
--- a/user/kdiamond/APKBUILD
+++ b/user/kdiamond/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdiamond
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Three-in-a-row game"
url="https://games.kde.org/game.php?game=kdiamond"
@@ -13,10 +13,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kcoreaddons-dev
ki18n-dev kconfigwidgets-dev kxmlgui-dev knotifications-dev
knotifyconfig-dev libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kdiamond-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kdiamond-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="8e11aa4af8fc3c856ab9a45def63491d0c5f14c5d33c93c19be73281873b3b84c20839733e92a9f146c288d908104dae776e8983ce1ee6560042d4c4633d9e78 kdiamond-18.12.3.tar.xz"
+sha512sums="6d88d48162df4d7a5819de6c2419e781a316a4c5f90c6b8ad8523ca86f57fa74d5b7fdae184b68a5fd5e999827149f2dbe04f50ccb20df5498c854470f17da45 kdiamond-22.04.2.tar.xz"
diff --git a/user/kdiff3/APKBUILD b/user/kdiff3/APKBUILD
new file mode 100644
index 000000000..34efceed7
--- /dev/null
+++ b/user/kdiff3/APKBUILD
@@ -0,0 +1,48 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kdiff3
+pkgver=1.9.5
+pkgrel=0
+pkgdesc="Diff/Patch frontend for KDE"
+url="https://kde.org/applications/development/org.kde.kdiff3"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="qt5-qtbase-dev cmake extra-cmake-modules kauth-dev kcodecs-dev
+ kcompletion-dev kconfigwidgets-dev kcoreaddons-dev kcrash-dev
+ kdoctools-dev ki18n-dev kiconthemes-dev kitemviews-dev kjobwidgets-dev
+ kparts-dev kservice-dev ktextwidgets-dev kwidgetsaddons-dev
+ kwindowsystem-dev kxmlgui-dev solid-dev sonnet-dev boost-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/kdiff3/kdiff3-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+
+ case $CTARGET_ARCH in
+ ppc) export LDFLAGS="$LDFLAGS -Wl,--no-as-needed -latomic -Wl,--as-needed";;
+ esac
+
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ QT_QPA_PLATFORM=offscreen CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="4c9629b2a8bc506a5b224a566cf2ef9b733d78fc3185d69988ed387621039a3f91472b02344377a254b3f19771bea5ce3355b0fd866402594eb63fd940a68c41 kdiff3-1.9.5.tar.xz"
diff --git a/user/kdnssd/APKBUILD b/user/kdnssd/APKBUILD
index 5f9341b3e..bc85e4471 100644
--- a/user/kdnssd/APKBUILD
+++ b/user/kdnssd/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdnssd
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for discovering network services using Zeroconf"
url="https://www.kde.org/"
@@ -9,12 +9,12 @@ arch="all"
license="LGPL-2.1+"
depends=""
depends_dev="qt5-qtbase-dev"
-makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev doxygen"
+makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev doxygen
+ avahi-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kdnssd-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +26,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="984277624e5ecca308101bff788c1dccb7b257801aa16f6430aa8d5e349ff71752081a689c8d10ec316e57c8a37df83bd5a43940c73fb46206cb201cee6c2722 kdnssd-5.54.0.tar.xz"
+sha512sums="e85f6ad4eecaa2e710f8cf4c989e04b0865158a3ab3d11ff0a6bfcfeed81bccc404313aa62921011a89ff23e6840f6222a38884c0c53e621930b354a309222bf kdnssd-5.94.0.tar.xz"
diff --git a/user/kdoctools/APKBUILD b/user/kdoctools/APKBUILD
index f11c59983..4db84ec22 100644
--- a/user/kdoctools/APKBUILD
+++ b/user/kdoctools/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kdoctools
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Tools to generate user-readable documentation from DocBook XML"
url="https://www.kde.org/"
@@ -10,12 +10,12 @@ license="LGPL-2.1-only OR LGPL-3.0-only"
depends="libxml2-utils docbook-xml docbook-xsl"
depends_dev="qt5-qtbase-dev karchive-dev libxml2-dev ki18n-dev libxslt-dev
perl-uri-escape"
-makedepends="$depends_dev cmake extra-cmake-modules python3"
+makedepends="$depends_dev cmake extra-cmake-modules doxygen graphviz python3
+ qt5-qttools-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kdoctools-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,19 +26,18 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ -DBUILD_QCH=ON \
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
# Requires catalogue files to be already installed
CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E 'kdoctools_install'
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b389fd1a7b2ea32d13ddca128ed2cb6375856f1c40f83c29a46e9ed1713de6e28e4415743403de37cf1f8a4ddcba4d7cc1e295e5c50443c4faf02939854f72cb kdoctools-5.54.0.tar.xz"
+sha512sums="754b1598f4db9112430de9cc559f522c66e33b773d425e3b24763ffe330a3c3f8d3a5a6eeb6d865d770c0ed85f2bb89b72a75b7053ca96bf0f730635c8524038 kdoctools-5.94.0.tar.xz"
diff --git a/user/keepassxc/APKBUILD b/user/keepassxc/APKBUILD
index 14d9235fc..73329254c 100644
--- a/user/keepassxc/APKBUILD
+++ b/user/keepassxc/APKBUILD
@@ -1,40 +1,37 @@
# Contributor: Max Rees <maxcrees@me.com>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=keepassxc
-pkgver=2.3.4
+pkgver=2.6.0
pkgrel=0
pkgdesc="A community revival of the KeePassX password manager"
url="https://keepassxc.org"
arch="all"
license="(GPL-2.0-only OR GPL-3.0-only) AND MIT AND BSD-4-Clause AND ISC AND (LGPL-2.1-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only) AND CC0-1.0 AND Public-Domain AND LGPL-2.1+ AND LGPL-3.0+"
depends="hicolor-icon-theme"
-makedepends="cmake xz qt5-qtbase-dev qt5-qttools-dev libgcrypt-dev
- zlib-dev libxi-dev libxtst-dev qt5-qtx11extras-dev argon2-dev"
+makedepends="argon2-dev cmake libgcrypt-dev libqrencode-dev libsodium-dev
+ libxi-dev libxtst-dev qt5-qtbase-dev qt5-qtsvg-dev qt5-qttools-dev
+ qt5-qtx11extras-dev xz zlib-dev asciidoctor"
subpackages="$pkgname-doc"
source="https://github.com/keepassxreboot/$pkgname/releases/download/$pkgver/$pkgname-$pkgver-src.tar.xz"
-prepare() {
- cd "$builddir"
- mkdir build
- default_prepare
-}
-
build() {
- cd "$builddir/build"
- cmake -DCMAKE_INSTALL_PREFIX=/usr \
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=/usr/lib \
- -DCMAKE_BUILD_TYPE=RelWithDebInfo ..
- make
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+ -DWITH_XC_BROWSER=bool:ON \
+ -DWITH_XC_FDOSECRETS=bool:ON \
+ -DWITH_XC_SSHAGENT=bool:ON \
+ -Bbuild
+ make -C build
}
check() {
- cd "$builddir/build"
- make test
+ make -C build test
}
package() {
- cd "$builddir/build"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="edca22ef9d7c553d21d8ea6115a5635265176acc56fdf055f1961a3e65046de49ed5b67eb68ecf4f925226fb5bca140d5d473a5082301168f6a8bb7979f562a8 keepassxc-2.3.4-src.tar.xz"
+sha512sums="c1ddf81f965f5521db8b8acb2fe3950c7b185ca459c440c9118f3d6350eeff6f15bb488f9e3bd034bdf80c515f0753c041e3af083d62e179cd16df7bb8326e17 keepassxc-2.6.0-src.tar.xz"
diff --git a/user/kemoticons/APKBUILD b/user/kemoticons/APKBUILD
index 560ae3b07..fd41eb0c3 100644
--- a/user/kemoticons/APKBUILD
+++ b/user/kemoticons/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kemoticons
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Emoticons to express emotions in KDE"
url="https://www.kde.org/"
@@ -10,13 +10,13 @@ options="!check" # Test requires accelerated X11 environment.
license="LGPL-2.1+ AND (LGPL-2.1-only OR LGPL-3.0-only)"
depends=""
depends_dev="qt5-qtbase-dev karchive-dev kconfig-dev kservice-dev"
+docdepends="kservice-doc kconfig-doc kcoreaddons-doc"
makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev doxygen
- graphviz"
+ graphviz $docdepends"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kemoticons-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +28,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3b76a6e92cdc0db08179e35c2728f8729c0b1e15d54d17ccec2f265266535f5bf8edc791530d3e65a1ab2b645fd898cb0dba4dade95490f4a73b90c804719886 kemoticons-5.54.0.tar.xz"
+sha512sums="1b8d34fb58ef6b8ba83cc13eac719143606d1011b39551513773e78f660a3c7c4f3ed3402cb68bac9c216275cba7c1fdf6fdf2d905d377f9bf79a1eeac850b46 kemoticons-5.94.0.tar.xz"
diff --git a/user/keybinder-3.0/APKBUILD b/user/keybinder-3.0/APKBUILD
index 8340209fb..d8881e832 100644
--- a/user/keybinder-3.0/APKBUILD
+++ b/user/keybinder-3.0/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=keybinder-3.0
pkgver=0.3.2
pkgrel=0
@@ -7,12 +7,12 @@ pkgdesc="GTK+ library for managing global keybindings"
url="https://github.com/kupferlauncher/keybinder"
arch="all"
license="Public-Domain AND MIT"
+depends=""
makedepends="gtk+3.0-dev vala gobject-introspection-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://github.com/kupferlauncher/keybinder/releases/download/keybinder-3.0-v$pkgver/keybinder-3.0-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -24,12 +24,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/keychain/APKBUILD b/user/keychain/APKBUILD
index 10c0ab99d..114843930 100644
--- a/user/keychain/APKBUILD
+++ b/user/keychain/APKBUILD
@@ -1,27 +1,23 @@
# Contributor: zlg <zlg+adelie@zlg.space>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=keychain
pkgver=2.8.5
pkgrel=0
pkgdesc="Agent manager for OpenSSH and GnuPG"
url="https://funtoo.org/Keychain"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends=""
makedepends="perl"
-install=""
subpackages="$pkgname-doc"
source="$pkgname-$pkgver.tar.gz::https://github.com/funtoo/$pkgname/archive/$pkgver.tar.gz"
-builddir="$srcdir/$pkgname-$pkgver"
build() {
- cd "$builddir"
make
}
package() {
- cd "$builddir"
install -Dm755 "./${pkgname}" "${pkgdir}/usr/bin/${pkgname}"
install -Dm644 "./${pkgname}.1" "${pkgdir}/usr/share/man/man1/${pkgname}.1"
}
diff --git a/user/keyutils/APKBUILD b/user/keyutils/APKBUILD
index a5b6bb18e..66eaa7dbc 100644
--- a/user/keyutils/APKBUILD
+++ b/user/keyutils/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer:
pkgname=keyutils
-pkgver=1.6
+pkgver=1.6.3
pkgrel=0
pkgdesc="Linux key management utilities"
url="https://people.redhat.com/~dhowells/keyutils/"
@@ -11,7 +11,7 @@ license="GPL-2.0+ AND LGPL-2.1+"
depends=""
makedepends="file linux-headers"
subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
-source="https://people.redhat.com/~dhowells/keyutils/keyutils-$pkgver.tar.bz2"
+source="https://git.kernel.org/pub/scm/linux/kernel/git/dhowells/keyutils.git/snapshot/keyutils-$pkgver.tar.gz"
build() {
make -j1 \
@@ -29,6 +29,7 @@ package() {
LIBDIR=/lib \
USRLIBDIR=/usr/lib \
install
+ mv "$pkgdir"/lib/pkgconfig "$pkgdir"/usr/lib/pkgconfig
}
libs() {
@@ -37,4 +38,4 @@ libs() {
mv "$pkgdir"/lib "$subpkgdir"/
}
-sha512sums="ee50da165099ea26904066d24b27c5165cb1eb78df6768cba3a534aa318a5c8d926ec6e5322a38c8cedaa768cd79bdcb26ef918aa8447df2e5dfbbe7b8f200ff keyutils-1.6.tar.bz2"
+sha512sums="f65965b8566037078b8eeffa66c6fdbe121c8c2bea7fa5bce04cf7ba5ccc50d5b48e51f4a67ca91e4d5d9a12469e7e3eb3036c920ab25e3feba6e93b4c149cf9 keyutils-1.6.3.tar.gz"
diff --git a/user/kfilemetadata/APKBUILD b/user/kfilemetadata/APKBUILD
index 744378ad7..5a3954d15 100644
--- a/user/kfilemetadata/APKBUILD
+++ b/user/kfilemetadata/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kfilemetadata
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="File metadata extraction framework"
url="https://www.kde.org/"
@@ -11,12 +11,11 @@ depends="catdoc"
depends_dev="qt5-qtbase-dev"
makedepends="$depends_dev cmake extra-cmake-modules python3 doxygen graphviz
qt5-qtmultimedia-dev qt5-qttools-dev exiv2-dev karchive-dev ki18n-dev
- poppler-qt5-dev taglib-dev"
+ poppler-dev poppler-qt5-dev taglib-dev kcoreaddons-dev ffmpeg-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kfilemetadata-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="bfa8287e5c8df363908a441419d377d33ea2cd93a4fc69fc47c69da80ad0e3a80e60f26b4856c3d3e04128e6ac59b214ee0613e37dda29f2537f502789bd4801 kfilemetadata-5.54.0.tar.xz"
+sha512sums="76b357c47791d352dfc34036041df6be204031260d95597967410836887f0a2e80dd1aab250e092848ceda674ab164e8e98aa811593e971a27a7aace8d2be28f kfilemetadata-5.94.0.tar.xz"
diff --git a/user/kfind/APKBUILD b/user/kfind/APKBUILD
index 3666f7291..318320850 100644
--- a/user/kfind/APKBUILD
+++ b/user/kfind/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kfind
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Standalone search utility for KDE"
url="https://www.kde.org/applications/utilities/kfind/"
@@ -11,10 +11,9 @@ depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kdelibs4support-dev
karchive-dev kdoctools-dev kfilemetadata-dev kwidgetsaddons-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kfind-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kfind-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,18 +24,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="ecd2b1819800461becaf241b624d7c387fc81dd4069ebb82a044b188e8753a3b1054adfb254ade1fd327186c8ff8bf76d35b0c83caaf51ff7d36a55c98a23f2f kfind-18.12.3.tar.xz"
+sha512sums="ba2cc6b4c8b8e17d40eb8239e2bebace99577c7347a3ef7f79e825f0561cd9709f2a3b6582c15489c5380589f4a1deafd0030bd10b6f9c5f6208879e8d55985c kfind-22.04.2.tar.xz"
diff --git a/user/kfloppy/APKBUILD b/user/kfloppy/APKBUILD
index 734332657..80b28ee49 100644
--- a/user/kfloppy/APKBUILD
+++ b/user/kfloppy/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kfloppy
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Utility for formatting floppy diskettes"
url="https://utils.kde.org/projects/kfloppy/"
@@ -11,10 +11,9 @@ depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev ki18n-dev kcoreaddons-dev
kcompletion-dev kdoctools-dev kxmlgui-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kfloppy-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kfloppy-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,18 +24,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="8abe9a4fcdd9e01ea60a8145126fa30ce3d4624904c57575596ea0620499b47edcab6fa5facafc6250312383fca7e9b254e65d5fa12587c9926c71eb54070e3b kfloppy-18.12.3.tar.xz"
+sha512sums="5d03b238e62d0f59907e57d6b2a413a23965c618f018a06725d17d1114387a0b721538e0bb8c7db7d934db38fb2542a4cbac9f0c9ae99851d67f10ca631de2af kfloppy-22.04.2.tar.xz"
diff --git a/user/kfourinline/APKBUILD b/user/kfourinline/APKBUILD
index ceb7e7890..6e5d31a71 100644
--- a/user/kfourinline/APKBUILD
+++ b/user/kfourinline/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kfourinline
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Two player board game based on Connect Four"
url="https://games.kde.org/game.php?game=kfourinline"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
kconfigwidgets-dev kcoreaddons-dev kcrash-dev kdnssd-dev kdoctools-dev
ki18n-dev kwidgetsaddons-dev kxmlgui-dev libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kfourinline-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kfourinline-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="69c75f82432862af0600d26072b58436de1073f97bae385d24f4c806e46f06e9a18a0549084050a4698fbcd7358e4789555f7b52e89875f2fa29db42b3e570ff kfourinline-18.12.3.tar.xz"
+sha512sums="9d232c0f5b07ca8299225047d6d376afdfafe360a6de1c5bd2f3590138df7f2c4e7b2c72d373e4c59a72573b9343defa4866842285796419f4a281947ca634d9 kfourinline-22.04.2.tar.xz"
diff --git a/user/kgamma5/APKBUILD b/user/kgamma5/APKBUILD
index 83ed6b482..33f6087bd 100644
--- a/user/kgamma5/APKBUILD
+++ b/user/kgamma5/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=kgamma5
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="Control monitor gamma from KDE 5"
url="https://www.KDE.org/"
@@ -9,12 +9,11 @@ arch="all"
license="GPL-2.0+"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kconfig-dev
- kconfigwidgets-dev kdoctools-dev ki18n-dev"
+ kconfigwidgets-dev kdoctools-dev ki18n-dev libxxf86vm-dev"
subpackages="$pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/plasma/$pkgver/kgamma5-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,18 +24,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="074dffc56a333bf88bb1942b3021c690822a234e26d41ff1b2d3e81f7f86f6ac272cb80f6f2552cbc5098880de520aebb8549f2a004608b824ea0c48f4e01cc6 kgamma5-5.12.7.tar.xz"
+sha512sums="a7f4c9fbc370c69ba9df2aa0ae2c75b896cc90adafd97c5ae214a05e8ae0261e94050e0acd1924c16f94b632209fe4803ed475555d882ee6e57d5271691ddc2f kgamma5-5.24.5.tar.xz"
diff --git a/user/kgeography/APKBUILD b/user/kgeography/APKBUILD
index 9ab97cae9..a3c737b40 100644
--- a/user/kgeography/APKBUILD
+++ b/user/kgeography/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kgeography
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Geography learning tool and trainer"
url="https://www.kde.org/applications/education/kgeography/"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kxmlgui-dev kcrash-dev
kwidgetsaddons-dev kcoreaddons-dev kconfigwidgets-dev ki18n-dev
kitemviews-dev kiconthemes-dev kdoctools-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kgeography-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kgeography-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="34d727d2b28984c0a39be5b9e5320c91279f5020d830703a91073265103f9273375b75b4bdc6c1c5b068f0712b049c35ef0a24f945840f8bc770f27fc5419d44 kgeography-18.12.3.tar.xz"
+sha512sums="6b7b61b78d817f054364856b8909ac021327f2013ae410ed1c71335e2e463cf76b082ae55666bd2dc183984ff309375b127701b1ac06f4dc541baf4f3e30695e kgeography-22.04.2.tar.xz"
diff --git a/user/kget/APKBUILD b/user/kget/APKBUILD
index 9ba3eff2a..cb487cbb6 100644
--- a/user/kget/APKBUILD
+++ b/user/kget/APKBUILD
@@ -1,11 +1,12 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kget
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Versatile download manager"
url="https://www.kde.org/applications/internet/kget/"
arch="all"
+options="!check" # Tests don't work without KIO/D-Bus.
license="GPL-2.0-only"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kcompletion-dev ki18n-dev
@@ -13,12 +14,12 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kcompletion-dev ki18n-dev
kdoctools-dev kiconthemes-dev kitemviews-dev kcmutils-dev kparts-dev
kdelibs4support-dev knotifications-dev knotifyconfig-dev kservice-dev
solid-dev ktextwidgets-dev kwallet-dev kwidgetsaddons-dev kxmlgui-dev
- kwindowsystem-dev gpgme-dev qca-dev boost-dev libktorrent-dev"
+ kwindowsystem-dev gpgme-dev qca-dev boost-dev libktorrent-dev
+ libkworkspace-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kget-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kget-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,18 +30,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="5e3680d3ac5e8e23ac8132133c66a4826035e89ddc74fb2b7cd6a0670f5682e750f839ac91e86fe4a78cd5c45a95b38793532e247b717b5c1a63200ed5405335 kget-18.12.3.tar.xz"
+sha512sums="c0fdc051f1882b4a775e1a6b6131351fa7763cc0183bd40dbbde9def39503b1b09da4d174cd5a7c6ac3a6045f3a8ceb26e289fadf374245ef63fd19385743a21 kget-22.04.2.tar.xz"
diff --git a/user/kglobalaccel/APKBUILD b/user/kglobalaccel/APKBUILD
index 7d64695f4..e11f42786 100644
--- a/user/kglobalaccel/APKBUILD
+++ b/user/kglobalaccel/APKBUILD
@@ -1,23 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kglobalaccel
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for implementing global shortcuts/accelerators"
url="https://www.kde.org/"
arch="all"
options="!check" # Only test requires X11.
-license="LGPL-2.1+"
+license="LGPL-2.0+"
depends=""
depends_dev="qt5-qtbase-dev kconfig-dev kcoreaddons-dev kcrash-dev
kdbusaddons-dev"
makedepends="$depends_dev cmake extra-cmake-modules xcb-util-keysyms-dev doxygen
- libxcb-dev libx11-dev libxext-dev libice-dev qt5-qttools-dev graphviz"
+ libxcb-dev libx11-dev libxext-dev libice-dev qt5-qttools-dev graphviz
+ qt5-qtdeclarative-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kglobalaccel-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,18 +29,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="aaab8ba98ea7229ccd31da07efd21d16e1bd44da9534e05fee73473becc3a7098857335be00c30aa247f15454cb83cc2a0b11ab1c1385c8b682aebf06e0d6fce kglobalaccel-5.54.0.tar.xz"
+sha512sums="9e0b81716acaf27a5a6f6f64e7bafca96a3820eaec5627193f45cd95122f46b3a02d2bd18791c23bf74b3c84eba7eef9b331bd2ae093f7590e56c65bee66f78f kglobalaccel-5.94.0.tar.xz"
diff --git a/user/kgoldrunner/APKBUILD b/user/kgoldrunner/APKBUILD
index 8eb4d412b..e26bd4e56 100644
--- a/user/kgoldrunner/APKBUILD
+++ b/user/kgoldrunner/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kgoldrunner
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Puzzle game with a gold hunt, dodging enemies, and digging around"
url="https://games.kde.org/game.php?game=kgoldrunner"
@@ -13,10 +13,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
kdbusaddons-dev kdoctools-dev ki18n-dev kio-dev kxmlgui-dev phonon-dev
libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kgoldrunner-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kgoldrunner-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="eb3b0a384557da0a7aa8ee264c00c55f62353d0377e1ef1137ca6bee7d0959dbe51f5fcc5d4946a9e8626020076f06794f1de30d4ac0aaaa0e57d3e3e8a1dc80 kgoldrunner-18.12.3.tar.xz"
+sha512sums="6b10b403ee1fa61f1ef1759831014ccb633b58ed9683ba0fddf50fa36e031c1ff17710bf28f15b7a3fad87e8b2a0e03011725de925401f2b728c49cc0cbb645e kgoldrunner-22.04.2.tar.xz"
diff --git a/user/kgpg/APKBUILD b/user/kgpg/APKBUILD
index 2f8a53c0b..b589824e9 100644
--- a/user/kgpg/APKBUILD
+++ b/user/kgpg/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kgpg
-pkgver=18.12.3
-pkgrel=0
+pkgver=22.04.2
+pkgrel=1
pkgdesc="Simple interface for GnuPG, a powerful encryption utility"
url="https://utils.kde.org/projects/kgpg/"
arch="all"
@@ -15,10 +15,11 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev karchive-dev kcodecs-dev
ktextwidgets-dev kxmlgui-dev kwidgetsaddons-dev kwindowsystem-dev
akonadi-contacts-dev kcontacts-dev gpgme-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kgpg-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kgpg-$pkgver.tar.xz
+ find-gpgme-with-pkg-config-first.patch
+ "
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,18 +30,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="f510dd4e4b717a00c8128767cea99b2725e10d8493cbb8a2a70ee0acbf53424edfb5d95052dff833988b3217b525d721c681a236ba7b7c87259f453a7956e881 kgpg-18.12.3.tar.xz"
+sha512sums="4b707902d6b7777b053caa9aa9e8be7b22ab0abe9dc37a9d894b2836a3b574acb4e30ad8bf7e1ef69f55ea72f229e97b1512266d6ca93edfdd2b483c16cb8ed1 kgpg-22.04.2.tar.xz
+33de21b93ba60823203a05b948671a28f698aaf3ed74583286cff1437b516b68688d8651227e7520995532785774f3a79446cf9816b9b37b11ec253e2418efaa find-gpgme-with-pkg-config-first.patch"
diff --git a/user/kgpg/find-gpgme-with-pkg-config-first.patch b/user/kgpg/find-gpgme-with-pkg-config-first.patch
new file mode 100644
index 000000000..0073f5731
--- /dev/null
+++ b/user/kgpg/find-gpgme-with-pkg-config-first.patch
@@ -0,0 +1,68 @@
+From 7d6023e1a9d7899f618b1490f2907eff8efe48a5 Mon Sep 17 00:00:00 2001
+From: Rolf Eike Beer <kde@opensource.sf-tec.de>
+Date: Thu, 22 Dec 2022 16:19:07 +0100
+Subject: [PATCH] CMake: search for gpgme with pkg-config first
+
+FIXES: 461720
+---
+ cmake/FindGpgme.cmake | 29 ++++++++++++++---------------
+ 1 file changed, 14 insertions(+), 15 deletions(-)
+
+diff --git a/cmake/FindGpgme.cmake b/cmake/FindGpgme.cmake
+index e3e177f2..81117a9b 100644
+--- a/cmake/FindGpgme.cmake
++++ b/cmake/FindGpgme.cmake
+@@ -27,6 +27,8 @@
+ # Any changes here likely apply there, too.
+ #
+
++find_package(PkgConfig)
++
+ #if this is built-in, please replace, if it isn't, export into a MacroToBool.cmake of it's own
+ macro( macro_bool_to_bool FOUND_VAR )
+ foreach( _current_VAR ${ARGN} )
+@@ -49,8 +51,14 @@ MACRO(MACRO_BOOL_TO_01 FOUND_VAR )
+ ENDFOREACH(_current_VAR)
+ ENDMACRO(MACRO_BOOL_TO_01)
+
++pkg_search_module(PC_GPGME gpgme)
+
+-if ( WIN32 )
++if (PC_GPGME_FOUND)
++ set(GPGME_INCLUDES ${PC_GPGME_INCLUDE_DIRS})
++ set(GPGME_LIBRARIES ${PC_GPGME_LINK_LIBRARIES})
++ set(GPGME_VERSION ${PC_GPGME_VERSION})
++ set(GPGME_LIBRARY_DIR ${PC_GPGME_LIBRARY_DIR})
++elseif ( WIN32 )
+
+ # On Windows, we don't have a gpgme-config script, so we need to
+ # look for the stuff ourselves:
+@@ -353,20 +361,11 @@ foreach(_currentFlavour vanilla glib qt pth pthread)
+ endif()
+ endforeach()
+
+-if ( NOT Gpgme_FIND_QUIETLY )
+-
+- if ( GPGME_FOUND )
+- message( STATUS "Usable gpgme flavors found: ${_gpgme_flavours}" )
+- else()
+- message( STATUS "No usable gpgme flavors found." )
+- endif()
+-
+-endif()
+-
+-if ( Gpgme_FIND_REQUIRED AND NOT GPGME_FOUND )
+- message( FATAL_ERROR "Did not find GPGME" )
+-endif()
+-
++include(FindPackageHandleStandardArgs)
++find_package_handle_standard_args(Gpgme
++ REQUIRED_VARS GPGME_LIBRARIES
++ VERSION_VAR GPGME_VERSION
++ )
+
+ if ( WIN32 )
+ set( _gpgme_homepage "https://www.gpg4win.org" )
+--
+GitLab
+
diff --git a/user/kgraphviewer/APKBUILD b/user/kgraphviewer/APKBUILD
index 58b1dc410..fa05a6f27 100644
--- a/user/kgraphviewer/APKBUILD
+++ b/user/kgraphviewer/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kgraphviewer
pkgver=2.4.3
-pkgrel=0
+pkgrel=1
pkgdesc="Graphviz DOT graph viewer"
url="https://www.kde.org/applications/graphics/kgraphviewer/"
arch="all"
@@ -15,7 +15,6 @@ subpackages="$pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/kgraphviewer/$pkgver/kgraphviewer-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,17 +25,15 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/kguiaddons/APKBUILD b/user/kguiaddons/APKBUILD
index 63a3e5070..8d39e362e 100644
--- a/user/kguiaddons/APKBUILD
+++ b/user/kguiaddons/APKBUILD
@@ -1,21 +1,22 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kguiaddons
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for creating high-level user interfaces"
url="https://www.kde.org/"
arch="all"
options="!check" # Requires running X11
-license="LGPL-2.1-only OR LGPL-3.0-only"
+license="LGPL-2.0+"
depends=""
depends_dev="qt5-qtbase-dev qt5-qtx11extras-dev libxcb-dev libx11-dev"
-makedepends="$depends_dev cmake extra-cmake-modules doxygen qt5-qttools-dev"
+makedepends="$depends_dev cmake extra-cmake-modules doxygen qt5-qttools-dev
+ plasma-wayland-protocols qt5-qtwayland-dev qt5-qtwayland-tools
+ wayland-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kguiaddons-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +28,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="660bc3ddb7f9c9ddfd042473b4f7783bc603be72a584f2e180f2060cb4ebacd2644e058595474c5a04fe61570cdac54e65335a4e780b0cfeda2015be140a29e1 kguiaddons-5.54.0.tar.xz"
+sha512sums="b8fe5c809035f194c2118ed9a4cd4bae29c610447b67c9cca5b02365fe4111b35252ea6c898d9df717ca9867ccd96faf2845404b0158acee7854c8407218f7e5 kguiaddons-5.94.0.tar.xz"
diff --git a/user/khangman/APKBUILD b/user/khangman/APKBUILD
index 73c9481d1..bb2f4db96 100644
--- a/user/khangman/APKBUILD
+++ b/user/khangman/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=khangman
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Hangman word game"
url="https://www.kde.org/applications/education/khangman/"
@@ -13,10 +13,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
kcoreaddons-dev kconfigwidgets-dev kdeclarative-dev kdoctools-dev
knewstuff-dev knotifications-dev kxmlgui-dev libkeduvocdocument-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/khangman-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/khangman-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="fc9008ff7e79e02b185c4180403a1741a62dabbb10b87b01f5b55d4ba04c7681e27a291dc6c8b83cd87066be624539f8e3097cfca755f74727ca5cd64ffb4bd5 khangman-18.12.3.tar.xz"
+sha512sums="52670c7fc654de76a5cc24e2f6fafdd40e658d7ce118ffe6f86855865a9d71ade95c1910ed208bcb33a2710831ba5e5556031afc3015025e2e028f0e68d85a8a khangman-22.04.2.tar.xz"
diff --git a/user/khelpcenter/APKBUILD b/user/khelpcenter/APKBUILD
index efeca02f0..aca77292d 100644
--- a/user/khelpcenter/APKBUILD
+++ b/user/khelpcenter/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=khelpcenter
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Graphical documentation viewer"
url="https://www.kde.org/applications/system/khelpcenter/"
@@ -14,10 +14,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev karchive-dev kconfig-dev
xapian-core-dev libxml2-dev"
subpackages="$pkgname-doc $pkgname-lang"
install_if="plasma-desktop docs"
-source="https://download.kde.org/stable/applications/$pkgver/src/khelpcenter-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/khelpcenter-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="728b335076dbaf63bf8ce8fbc55f5d4efe01663998b30ae40d252903c1090c29d5cfd58e9036242ec9b0206c34d7b397a0739e7ef9962d6dfb0ecaff9ea45df3 khelpcenter-18.12.3.tar.xz"
+sha512sums="acb29b9f21648010e7b30accc52b882ddf8702a58695b2a316126d45425f3b903f289d56b3fe278a0604d312e663d448c4e0143e58f6f82fb616811e83c007e9 khelpcenter-22.04.2.tar.xz"
diff --git a/user/khmeros-fonts/APKBUILD b/user/khmeros-fonts/APKBUILD
index 4eca9227a..2b2b992aa 100644
--- a/user/khmeros-fonts/APKBUILD
+++ b/user/khmeros-fonts/APKBUILD
@@ -15,8 +15,7 @@ source="https://downloads.sourceforge.net/khmer/All_KhmerOS_$pkgver.zip"
builddir="$srcdir/All_KhmerOS_$pkgver"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ *.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ "$builddir"/*.ttf
}
sha512sums="5fded88a9149d0fd59a377f08d9e1ea63ecffede58cde42e28504a48b12b35dec699b1ea0e0bbb95465c281d5b19ddfbe808a3c4ef40cd46295aaa069bd9127f All_KhmerOS_5.0.zip"
diff --git a/user/kholidays/APKBUILD b/user/kholidays/APKBUILD
index 1f19194a9..9c11de84b 100644
--- a/user/kholidays/APKBUILD
+++ b/user/kholidays/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kholidays
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="List of national holidays for many countries"
url="https://www.kde.org/"
@@ -9,12 +9,11 @@ arch="all"
license="LGPL-2.1"
depends=""
makedepends="$depends_dev cmake extra-cmake-modules qt5-qtbase-dev
- qt5-qtdeclarative-dev qt5-qttools-dev"
-subpackages="$pkgname-dev $pkgname-lang"
+ qt5-qtdeclarative-dev qt5-qttools-dev doxygen"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kholidays-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,19 +24,18 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ -DBUILD_QCH:BOOL=ON \
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
# Requires *actual* *locale* *support*!
CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E testholidayregion
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="709b229c31cb59692d979d8dc36574997e05d674b2cd14913c620a968b243bbcd88f14e9f488f6aec6615102f713c1b4d34f6b817111396cdfedd470d358a675 kholidays-5.54.0.tar.xz"
+sha512sums="7c362a8ba852258c95c6eceb9f7dbd82fd3bdfdeab5c844c5efd772244c823f772616e68e67f40f3c641278eec65126b9ee599942b8393103600b24d97e9e77e kholidays-5.94.0.tar.xz"
diff --git a/user/khotkeys/APKBUILD b/user/khotkeys/APKBUILD
index a77c93a0c..7c909a978 100644
--- a/user/khotkeys/APKBUILD
+++ b/user/khotkeys/APKBUILD
@@ -1,22 +1,20 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=khotkeys
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="Hot key mapping for KDE Plasma 5"
url="https://www.KDE.org/"
arch="all"
license="LGPL-2.0+"
depends=""
-makedepends="cmake extra-cmake-modules qt5-qtbase-dev kcmutils-dev
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev kcmutils-dev libx11-dev
kdbusaddons-dev kdelibs4support-dev kglobalaccel-dev ki18n-dev kio-dev
- kxmlgui-dev libice-dev libx11-dev plasma-framework-dev
- plasma-workspace-dev"
+ kxmlgui-dev libice-dev libkworkspace-dev plasma-framework-dev"
subpackages="$pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/plasma/$pkgver/khotkeys-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="5cdfb182fc6c5edabc7bd979c86c423243ab390e25981359c68cfb1a258503fdf26b723399f4e3a688212c3a92703aaeb359b7c71ada216657282952dd4092b4 khotkeys-5.12.7.tar.xz"
+sha512sums="b12373b8295cf8e7909a72a07fab8847d8cf26053814b02acf215e912156b797c3a7c3cd459f04e9b6b47cd09d5941d1f3433ee4e8b128e49d3dc9832fbb3876 khotkeys-5.24.5.tar.xz"
diff --git a/user/khtml/APKBUILD b/user/khtml/APKBUILD
index 981e56cf2..a725a22f1 100644
--- a/user/khtml/APKBUILD
+++ b/user/khtml/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=khtml
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="The KDE HTML library, ancestor of WebKit"
url="https://konqueror.org/"
@@ -19,7 +19,6 @@ subpackages="$pkgname-dev $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/portingAids/khtml-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -30,18 +29,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="622b4c3de23ae3424c9d15651479a7c23fd2011fc81256eba56b9e4b7f7b405b57710903f098475dd46771aaf865b973253a7a16b6074c6aed211c2567d3ff83 khtml-5.54.0.tar.xz"
+sha512sums="46ba7aa0f29868773db54e632aeeefdd6a92f9b6ac55f9bebb5d903f04f7a41fe9afae52fe43cd23c9f512382042e8c709f5b7897d8ed98e73e710188d1be568 khtml-5.94.0.tar.xz"
diff --git a/user/ki18n/APKBUILD b/user/ki18n/APKBUILD
index e5a5b1f7f..68f9074e3 100644
--- a/user/ki18n/APKBUILD
+++ b/user/ki18n/APKBUILD
@@ -1,23 +1,21 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ki18n
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for creating multi-lingual software"
url="https://www.kde.org/"
arch="all"
options="!check"
-license="LGPL-2.1-only"
+license="LGPL-2.0+"
depends=""
depends_dev="qt5-qtbase-dev qt5-qtscript-dev qt5-qtdeclarative-dev"
makedepends="$depends_dev cmake extra-cmake-modules doxygen graphviz
qt5-qttools-dev"
-install=""
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/ki18n-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,18 +27,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="1c974a8445cac7474b989b641b154c131f6231d97979d3c54e04b6182b10f87d3412d9e75503ead09499e83d30e2eafeeff9ddd8683fd2005889e675311a5bb6 ki18n-5.54.0.tar.xz"
+sha512sums="ff00a56f1d6e5a425d025320be6f6e1559e329f56e68975df9d7c1ecdc0108f2118af37373db583d7760f34877bd0f18bef47080a70dfca628d958f35e8f9e15 ki18n-5.94.0.tar.xz"
diff --git a/user/ki18n/libintl.patch b/user/ki18n/libintl.patch
deleted file mode 100644
index bbe6d1e9a..000000000
--- a/user/ki18n/libintl.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-From e2520914c446d8646088bc3aa061b5723aa52036 Mon Sep 17 00:00:00 2001
-From: "A. Wilcox" <awilfox@adelielinux.org>
-Date: Wed, 20 Jul 2016 21:19:14 -0500
-Subject: [PATCH] Determine if _nl_msg_cat_cntr exists before use
-
-GNU gettext does not guarantee that GNU libintl will be used. This
-assumption breaks the build against the musl libc.
-
-BUG: 365917
----
- .gitignore | 1 +
- CMakeLists.txt | 3 +++
- cmake/FindLibIntl.cmake | 3 +++
- src/config.h.in | 25 +++++++++++++++++++++++++
- src/kcatalog.cpp | 5 +++--
- 5 files changed, 35 insertions(+), 2 deletions(-)
- create mode 100644 src/config.h.in
-
-diff --git a/.gitignore b/.gitignore
-index 1a6b0c4..42a96a7 100644
---- a/.gitignore
-+++ b/.gitignore
-@@ -1 +1,2 @@
- doc-gen/
-+src/config.h
-diff --git a/CMakeLists.txt b/CMakeLists.txt
-index 00e4001..09dc6af 100644
---- a/CMakeLists.txt
-+++ b/CMakeLists.txt
-@@ -59,6 +59,9 @@ endif()
- add_subdirectory(src)
- add_subdirectory(autotests)
-
-+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/src/config.h.in"
-+ "${CMAKE_CURRENT_SOURCE_DIR}/src/config.h")
-+
- # create a Config.cmake and a ConfigVersion.cmake file and install them
- set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF5I18n")
-
-diff --git a/cmake/FindLibIntl.cmake b/cmake/FindLibIntl.cmake
-index cde5da8..a457112 100644
---- a/cmake/FindLibIntl.cmake
-+++ b/cmake/FindLibIntl.cmake
-@@ -56,3 +56,6 @@ else()
- message(STATUS "libintl is a separate library.")
- find_package_handle_standard_args(LibIntl REQUIRED_VARS LibIntl_INCLUDE_DIRS LibIntl_LIBRARIES)
- endif()
-+
-+set(CMAKE_REQUIRED_LIBRARIES ${LibIntl_LIBRARIES})
-+check_cxx_source_compiles("extern \"C\" int _nl_msg_cat_cntr; int main(void) { ++_nl_msg_cat_cntr; return 0; }" HAVE_NL_MSG_CAT_CNTR)
-diff --git a/src/config.h.in b/src/config.h.in
-new file mode 100644
-index 0000000..f445f88
---- /dev/null
-+++ b/src/config.h.in
-@@ -0,0 +1,25 @@
-+/* This file is part of the KDE libraries
-+ Copyright (c) 2016 A. Wilcox <awilfox@adelielinux.org>
-+
-+ This library is free software; you can redistribute it and/or
-+ modify it under the terms of the GNU Library General Public
-+ License as published by the Free Software Foundation; either
-+ version 2 of the License, or (at your option) any later version.
-+
-+ This library 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
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library General Public License
-+ along with this library; see the file COPYING.LIB. If not, write to
-+ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-+ Boston, MA 02110-1301, USA.
-+*/
-+
-+#ifndef KF5_KI18N_CONFIG_H
-+#define KF5_KI18N_CONFIG_H
-+
-+#cmakedefine HAVE_NL_MSG_CAT_CNTR
-+
-+#endif
-diff --git a/src/kcatalog.cpp b/src/kcatalog.cpp
-index 6682d62..a15e661 100644
---- a/src/kcatalog.cpp
-+++ b/src/kcatalog.cpp
-@@ -21,6 +21,7 @@
- #include <stdlib.h>
- #include <locale.h>
- #include "gettext.h"
-+#include "config.h"
-
- #include <qstandardpaths.h>
- #include <QByteArray>
-@@ -41,7 +42,7 @@
- #endif
- #endif
-
--#if defined(__USE_GNU_GETTEXT)
-+#if defined(HAVE_NL_MSG_CAT_CNTR)
- extern "C" int Q_DECL_IMPORT _nl_msg_cat_cntr;
- #endif
-
-@@ -171,9 +172,9 @@ void KCatalogPrivate::setupGettextEnv()
- //qDebug() << "bindtextdomain" << domain << localeDir;
- bindtextdomain(domain, localeDir);
-
-+#if defined(HAVE_NL_MSG_CAT_CNTR)
- // Magic to make sure GNU Gettext doesn't use stale cached translation
- // from previous language.
--#if defined(__USE_GNU_GETTEXT)
- ++_nl_msg_cat_cntr;
- #endif
- }
---
-2.9.2
-
diff --git a/user/kiconthemes/APKBUILD b/user/kiconthemes/APKBUILD
index e4046ea52..645ebc8ed 100644
--- a/user/kiconthemes/APKBUILD
+++ b/user/kiconthemes/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kiconthemes
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for icon theming"
url="https://www.kde.org/"
@@ -17,7 +17,6 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kiconthemes-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,18 +28,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="2a2f053cb2cc1cdab4dc30f42e51431e205a75406079df583c97f2ca39911cc39f9dbb6f56b44138242d7a9e54234dc36280b48859bf3867b805d66da16e4454 kiconthemes-5.54.0.tar.xz"
+sha512sums="3cd2c0302a94656322dff1e79083ee4f8fbf29d2acfbfaa4a22cdaec9a7df6fc997c8c00ee98dee2fac1a499795bdb0a4b178b8b9b97b5fe40509661d6e5acaf kiconthemes-5.94.0.tar.xz"
diff --git a/user/kidentitymanagement/APKBUILD b/user/kidentitymanagement/APKBUILD
new file mode 100644
index 000000000..89a4fdc1f
--- /dev/null
+++ b/user/kidentitymanagement/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kidentitymanagement
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="Identity management library for KDE"
+url="https://kde.org/"
+arch="all"
+license="LGPL-2.1+"
+depends=""
+makedepends="qt5-qtbase-dev cmake extra-cmake-modules kauth-dev kcodecs-dev
+ kconfig-dev kcoreaddons-dev kiconthemes-dev kio-dev kjobwidgets-dev
+ kpimtextedit-dev kservice-dev ktextwidgets-dev kxmlgui-dev solid-dev
+ sonnet-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kidentitymanagement-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ QT_QPA_PLATFORM=offscreen CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="01e75602d55daf3ff6297f897850830032d7204212eb881bee59968c6bba32b6a9078b6bb9dc67fd4cfd6ab926c8e60b45e2df4706bca7259e48bfc5e1138b1d kidentitymanagement-22.04.2.tar.xz"
diff --git a/user/kidletime/APKBUILD b/user/kidletime/APKBUILD
index 062d63afc..060926a40 100644
--- a/user/kidletime/APKBUILD
+++ b/user/kidletime/APKBUILD
@@ -1,12 +1,12 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kidletime
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for determining a user's idle time"
url="https://api.kde.org/frameworks/kidletime/html/index.html"
arch="all"
-license="LGPL-2.1-only"
+license="LGPL-2.1+"
depends=""
depends_dev="qt5-qtbase-dev qt5-qtx11extras-dev"
makedepends="$depends_dev cmake extra-cmake-modules libx11-dev libxext-dev
@@ -15,7 +15,6 @@ subpackages="$pkgname-dev $pkgname-doc"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kidletime-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="accb3192afa4a13b0d545442e89d0875c6a056dca53581a41c6a51dfe6d775eaa6d5e7cd6d75407b882c94a52fe1e38cf4f97636745bb6a15a7dc9b00f7f4693 kidletime-5.54.0.tar.xz"
+sha512sums="121d6684b699f1319979d4736e45d20a66f2e21211d66c35f9dfec32487cc1eb50d9704725ea7016023966375d45911f5417eecd3c9f3c970ee86e4ca5aa9ef1 kidletime-5.94.0.tar.xz"
diff --git a/user/kig/APKBUILD b/user/kig/APKBUILD
index eb5400644..44f9ee2d3 100644
--- a/user/kig/APKBUILD
+++ b/user/kig/APKBUILD
@@ -1,10 +1,10 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kig
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Interactive geometry learning and exploration tool"
-url=" https://www.kde.org/applications/education/kig/"
+url="https://www.kde.org/applications/education/kig/"
arch="all"
license="GPL-2.0+"
depends=""
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kparts-dev
qt5-qtxmlpatterns-dev ki18n-dev ktexteditor-dev kiconthemes-dev
kconfigwidgets-dev karchive-dev kxmlgui-dev kcrash-dev kcoreaddons-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kig-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kig-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="fa540b7f57b4878dfe44e0d8a6ee5f84ec524ab79867e545c912a715e0e0c2d9b35d12575d751944b5049f12c28ed838460cabef37d73c3f56591f1028bb2479 kig-18.12.3.tar.xz"
+sha512sums="d2489e27443561d9921a1adb7cb1f7a781bba1c444216fa02586623ad9ed6128d5f3261d2b8e0dd7c3ceda3d8a58b626c8891f860db96f6a734177bbe0d1399c kig-22.04.2.tar.xz"
diff --git a/user/kigo/APKBUILD b/user/kigo/APKBUILD
index 288499c0c..b8b9042f4 100644
--- a/user/kigo/APKBUILD
+++ b/user/kigo/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kigo
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Go or Igo game for KDE"
url="https://www.kde.org/applications/games/kigo/"
@@ -13,10 +13,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
kconfigwidgets-dev ktextwidgets-dev kxmlgui-dev kio-dev knewstuff-dev
libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kigo-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kigo-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d949b549589185fa0bd24b5d4bc245283e8fd6e823c51b0becb76d15d74c67dc35e8a46e99cfcce4dd69bc2baca20234488e64e4f7bc1e02aa95092e9907b3fa kigo-18.12.3.tar.xz"
+sha512sums="5f98f5f70e55d4849eacc4204b1da4db435b04746824df927892b4b6e748982d93fee93b9a30a61dfe5eb973880d30773599fa191b82d74c94085c3a3ec0752b kigo-22.04.2.tar.xz"
diff --git a/user/killbots/APKBUILD b/user/killbots/APKBUILD
index 286dcb45f..1a36594fa 100644
--- a/user/killbots/APKBUILD
+++ b/user/killbots/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=killbots
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Simple game of evading killer robots"
url="https://www.kde.org/applications/games/killbots/"
@@ -13,10 +13,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kcoreaddons-dev
kxmlgui-dev kcompletion-dev kdoctools-dev kdbusaddons-dev
libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/killbots-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/killbots-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="6f9fe391776da188489f42cbc2d0563a36f1a1ec88791cbbf7f4364cc0e5eb3b0eb028ea69a7a7444829e467026c459801c4c02dccbcdb624c2a45e1d56b6e3c killbots-18.12.3.tar.xz"
+sha512sums="5b635fc6383ed78ad05c0b9585c4188b6ac1143329124789963b495d5499a017ca556a992dfc9937434cf8cb46ab2db6d44dc7ee29eb581e69323bb370a74d5a killbots-22.04.2.tar.xz"
diff --git a/user/kimap/APKBUILD b/user/kimap/APKBUILD
new file mode 100644
index 000000000..39b36ea09
--- /dev/null
+++ b/user/kimap/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kimap
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="IMAP library for KDE"
+url="https://kde.org/"
+arch="all"
+license="LGPL-2.1+"
+depends=""
+makedepends="qt5-qtbase-dev cmake extra-cmake-modules cyrus-sasl-dev kauth-dev
+ kcodecs-dev kcoreaddons-dev ki18n-dev kio-dev kjobwidgets-dev kmime-dev
+ kservice-dev solid-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kimap-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="1491ee7f5483b6d24be38d311065c7d24ebf6752dfb7f7eed130352f030523276309778173a4537cae5cc0bfbf13ef0e89c84683560d974c9838d71c7502bc04 kimap-22.04.2.tar.xz"
diff --git a/user/kinfocenter/APKBUILD b/user/kinfocenter/APKBUILD
index ad9169bfc..ec7a82f22 100644
--- a/user/kinfocenter/APKBUILD
+++ b/user/kinfocenter/APKBUILD
@@ -1,23 +1,22 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=kinfocenter
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="Information about the running computer"
-url="https://www.kde.org/applications/system/kinfocenter/"
+url="https://userbase.kde.org/KInfoCenter"
arch="all"
license="GPL-2.0-only"
-depends=""
+depends="kirigami2 mesa-demos pciutils systemsettings xdpyinfo"
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kcompletion-dev ki18n-dev
kconfig-dev kconfigwidgets-dev kcoreaddons-dev kdbusaddons-dev kio-dev
kdoctools-dev kiconthemes-dev kcmutils-dev kdelibs4support-dev glu-dev
kservice-dev solid-dev kwidgetsaddons-dev kxmlgui-dev kdeclarative-dev
- kpackage-dev libraw1394-dev pciutils-dev kwayland-dev"
+ kirigami2-dev kpackage-dev libraw1394-dev libusb-dev pciutils-dev"
subpackages="$pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/plasma/$pkgver/kinfocenter-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="440e1d9c6be280fee95681148f6f9c069529431f3367fd5938663afa840cd191c85fd995b9a0a4fb6ae143d2c74415cafcfc99e4a7d7e25dc99fdd3820608f9b kinfocenter-5.12.7.tar.xz"
+sha512sums="598d7993808ac6f32ae89c2a50624caf81c4d7a355ae155469d79fda923d3bcd4256077863186a42d594ddd36c06ffb5c3fd02987cf638b2bc88dffdb9b47883 kinfocenter-5.24.5.tar.xz"
diff --git a/user/kinit/APKBUILD b/user/kinit/APKBUILD
index 2fa0519a0..8906fdb2c 100644
--- a/user/kinit/APKBUILD
+++ b/user/kinit/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kinit
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="KDE initialisation routines"
url="https://www.kde.org/"
@@ -16,7 +16,6 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kinit-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,13 +26,12 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="ad7fa0228a4595cce754e65227ab979859827e1773148dd00de95e95ad25d78dae80a4cf04106a1bba5953c6c0acdcaea5e966c83de2f402be33dcc588106ecb kinit-5.54.0.tar.xz"
+sha512sums="82c4d6500ee7108348c91bdf5fcf34b1e5188ef26ec0a3063f761dfb196dbd01cc53223b5b7f0e7167587c56892f3cbfaa8aa63610404dfd771d4237cbe445e5 kinit-5.94.0.tar.xz"
diff --git a/user/kio-extras/APKBUILD b/user/kio-extras/APKBUILD
index 0cd186244..6cd726470 100644
--- a/user/kio-extras/APKBUILD
+++ b/user/kio-extras/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kio-extras
-pkgver=18.12.3
+pkgver=22.04.1
pkgrel=0
pkgdesc="KIO plugins for various data tasks"
url="https://www.kde.org/"
@@ -13,13 +13,13 @@ depends_dev="qt5-qtbase-dev qt5-qtsvg-dev karchive-dev kconfig-dev kio-dev
kconfigwidgets-dev kcoreaddons-dev kdbusaddons-dev kdoctools-dev
kiconthemes-dev ki18n-dev solid-dev kbookmarks-dev kguiaddons-dev
kdnssd-dev kpty-dev kactivities-dev phonon-dev libtirpc-dev
- taglib-dev libmtp-dev gperf khtml-dev"
+ taglib-dev libmtp-dev gperf khtml-dev syntax-highlighting-dev
+ kactivities-stats-dev"
makedepends="$depends_dev cmake extra-cmake-modules shared-mime-info"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kio-extras-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kio-extras-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,20 +28,18 @@ build() {
-DCMAKE_INSTALL_LIBDIR=lib \
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
- -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
- -DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS -I/usr/include/tirpc" \
+ -DCMAKE_C_FLAGS="$CFLAGS -I/usr/include/tirpc" \
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="a13c349a27b7ffd665b9a3812d70228ab40ac48c50ded7774ed954ce30a6454d1a9c5a27769ddae8f333db0c87943eab18380da413274b69802d9569f6e48d66 kio-extras-18.12.3.tar.xz"
+sha512sums="0b9f1a1d59e799b6de36b36a1efeaeea0f0c7042a58146b989e29666ebbd74ca37f607380704a125c9096f60b35fa958878debe873548a704af6ea8a181f7bc8 kio-extras-22.04.1.tar.xz"
diff --git a/user/kio/APKBUILD b/user/kio/APKBUILD
index b2ae829ce..d11ea594f 100644
--- a/user/kio/APKBUILD
+++ b/user/kio/APKBUILD
@@ -1,26 +1,29 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kio
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for data and file management"
url="https://www.kde.org/"
arch="all"
options="!checkroot !check" # Test requires X11; segfault bug #34
license="LGPL-2.1-only AND LGPL-2.1+ AND (LGPL-2.1-only OR LGPL-3.0-only)"
-depends=""
+depends="kded"
depends_dev="qt5-qtbase-dev attica-dev kbookmarks-dev kcompletion-dev
kconfig-dev kcoreaddons-dev kiconthemes-dev kitemviews-dev
kjobwidgets-dev kservice-dev kwidgetsaddons-dev solid-dev"
+docdepends="kcoreaddons-doc kservice-doc kcompletion-doc kwidgetsaddons-doc
+ kjobwidgets-doc kbookmarks-doc kitemviews-doc kxmlgui-doc solid-doc
+ kwindowsystem-doc kconfig-doc kconfigwidgets-doc kcodecs-doc kauth-doc"
makedepends="$depends_dev cmake extra-cmake-modules kdoctools-dev python3
qt5-qttools-dev doxygen graphviz karchive-dev kdbusaddons-dev ki18n-dev
- knotifications-dev kwallet-dev acl-dev"
+ knotifications-dev kwallet-dev acl-dev kded-dev krb5-dev $docdepends"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kio-$pkgver.tar.xz
- strcpy-ppc.patch"
+ cxx17.patch
+ "
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -32,19 +35,17 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="163929bd8e6e4d3be5390090511cafd11213e476a0460e5fdcffde15181332545380ef25f6350e465dbc7f9872a6b771e891f5302af64bd3ced162b2a94a8c6d kio-5.54.0.tar.xz
-280b2a610613786e688c06f4d4b51d3b9d583472bf1941b7b5873fece31b5df0b2f8f08f8de677ebb39fc906c57a2fa50d7890105c0aeb930b82986e0b504623 strcpy-ppc.patch"
+sha512sums="acf7456ab0a3d122d8bbf6e7dbff51f958b1c6bf29f7295c21c78c5c707d5fee05b76d30e51832f35220cd08bf06a2e27c11153559b25f74b7c8f5f532f50955 kio-5.94.0.tar.xz
+a3be4ad4800ada7331a47833f51d13bc5cf47e9e6153fffff27d18462f77083221a7aa02a36c0afe57d992a5292777628c09c5443ff58ca1803ddfbc482fa745 cxx17.patch"
diff --git a/user/kio/cxx17.patch b/user/kio/cxx17.patch
new file mode 100644
index 000000000..d73e93b65
--- /dev/null
+++ b/user/kio/cxx17.patch
@@ -0,0 +1,21 @@
+G++ does not have transform_reduce until C++20, despite being part of the
+C++17 standard. This reverts the only usage of Parallelism TR2 in KIO.
+
+--- kio-5.94.0/src/filewidgets/kurlnavigator.cpp.old 2022-05-12 07:14:39.000000000 -0500
++++ kio-5.94.0/src/filewidgets/kurlnavigator.cpp 2022-06-03 01:42:48.541164895 -0500
+@@ -729,11 +729,11 @@
+ availableWidth -= m_protocols->width();
+ }
+
+- auto MinWidth = [](const KUrlNavigatorButton *button) {
+- return button->minimumWidth();
+- };
+ // Check whether buttons must be hidden at all...
+- const int requiredButtonWidth = std::transform_reduce(m_navButtons.cbegin(), m_navButtons.cend(), 0, std::plus<>(), MinWidth);
++ int requiredButtonWidth = 0;
++ for (const KUrlNavigatorButton *button : std::as_const(m_navButtons)) {
++ requiredButtonWidth += button->minimumWidth();
++ }
+
+ if (requiredButtonWidth > availableWidth) {
+ // At least one button must be hidden. This implies that the
diff --git a/user/kio/strcpy-ppc.patch b/user/kio/strcpy-ppc.patch
deleted file mode 100644
index 95f2deb9c..000000000
--- a/user/kio/strcpy-ppc.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- kio-5.43.0/src/ioslaves/file/sharefd_p.h.old 2018-03-09 01:13:49.473808589 -0600
-+++ kio-5.43.0/src/ioslaves/file/sharefd_p.h 2018-03-09 01:35:33.903523248 -0600
-@@ -21,6 +21,7 @@
- #include <sys/un.h>
- #include <iostream>
- #include <unistd.h>
-+#include <cstring>
- #include <sys/socket.h>
-
- // fix SOCK_NONBLOCK for e.g. macOS
diff --git a/user/kirigami-gallery/APKBUILD b/user/kirigami-gallery/APKBUILD
new file mode 100644
index 000000000..4cc45f14e
--- /dev/null
+++ b/user/kirigami-gallery/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kirigami-gallery
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="View examples of Kirigami components"
+url="https://kde.org/applications/development/org.kde.kirigami2.gallery"
+arch="all"
+license="GPL-2.0-only"
+depends="qt5-qtquickcontrols2 qt5-qtgraphicaleffects kirigami2 kitemmodels"
+makedepends="qt5-qtbase-dev qt5-qtdeclarative-dev cmake extra-cmake-modules
+ kirigami2-dev kitemmodels-dev qt5-qttools-dev"
+subpackages="$pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kirigami-gallery-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ -Bbuild .
+ make -C build
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
+}
+
+package() {
+ make DESTDIR="$pkgdir" -C build install
+}
+
+sha512sums="b25baa9681bb8e9a43caee5329353d8f148a9340374bac2fa448aff365e4e5f255403de9553fff229871b209b1c93050f37596ce4b98a5ad7cc9bd0e1d5fc3f1 kirigami-gallery-22.04.2.tar.xz"
diff --git a/user/kirigami2/APKBUILD b/user/kirigami2/APKBUILD
index c0062c189..7abbbbdb4 100644
--- a/user/kirigami2/APKBUILD
+++ b/user/kirigami2/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kirigami2
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for rapidly designing usable interfaces"
url="https://www.kde.org/"
@@ -16,14 +16,7 @@ makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev doxygen
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kirigami2-$pkgver.tar.xz"
-prepare() {
- cd "$builddir"
- default_prepare
- mkdir -p build
-}
-
build() {
- cd "$builddir"/build
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -35,18 +28,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="c85dbc8790faed84e7b59f703966f4404fe6a7c7d7e83ba4ae6d6469cd01d2a594aa7b5fbda460839df504a23a38b1881748c9a21071cc68de050e3760f25406 kirigami2-5.54.0.tar.xz"
+sha512sums="e836f45729f54a5c83c7dd5bb5def3e36f73cd6367456953bab8e3bdd87c6bf9845ff3f4f0458f289c0450a4ac02a8fe1984458a591172e9e87b782ac59f9a6f kirigami2-5.94.0.tar.xz"
diff --git a/user/kiriki/APKBUILD b/user/kiriki/APKBUILD
index af95bc989..3ffd029dc 100644
--- a/user/kiriki/APKBUILD
+++ b/user/kiriki/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kiriki
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Yahtzee-like dice game for one or more players"
url="https://games.kde.org/game.php?game=kiriki"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kcoreaddons-dev
kconfig-dev kcrash-dev kdbusaddons-dev kdoctools-dev ki18n-dev
kconfigwidgets-dev kiconthemes-dev kxmlgui-dev libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kiriki-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kiriki-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="8b2257ce1c80d34dedf19747ac49f6c040b6512e0271488a173990fd3ff9858e7c29f86a0dc468a2bc244b3cff1e881da1465ba29682a4288d097f74ab1f6f29 kiriki-18.12.3.tar.xz"
+sha512sums="766c3aee24246880dfcf618730a1613286e89a7b733a3546bee7e1ebb7200226cb4851754ed819f94b38ca43ace256c753892beda71840a5a893565b23fd00d3 kiriki-22.04.2.tar.xz"
diff --git a/user/kitemmodels/APKBUILD b/user/kitemmodels/APKBUILD
index f6d21c093..a199633b9 100644
--- a/user/kitemmodels/APKBUILD
+++ b/user/kitemmodels/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kitemmodels
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for sorting and searching objects"
url="https://www.kde.org/"
@@ -16,7 +16,6 @@ subpackages="$pkgname-dev $pkgname-doc"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kitemmodels-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="fc2941ef7e48a72a6c08cbbe78b1cf16c4b0e6f06c692386d8ce6ea7ec323b067b051d3489aa8fb0c0f02e5d92a8937f6b5013c04211851f6507da30e5811475 kitemmodels-5.54.0.tar.xz"
+sha512sums="ae284ed3811044a13c4d2fcbfae36822e1eed012395eb1ab58758f084319411796a15ae99b65dd4ca25b6d8aba59c2af5a65179db524582a8388ce77e2edb955 kitemmodels-5.94.0.tar.xz"
diff --git a/user/kitemviews/APKBUILD b/user/kitemviews/APKBUILD
index 43800c932..c87d9b4b2 100644
--- a/user/kitemviews/APKBUILD
+++ b/user/kitemviews/APKBUILD
@@ -1,13 +1,13 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kitemviews
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for displaying collections of items"
url="https://www.kde.org/"
arch="all"
options="!check" # Test requires X11
-license="LGPL-2.1+"
+license="LGPL-2.0+"
depends=""
depends_dev="qt5-qtbase-dev"
makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev doxygen
@@ -16,7 +16,6 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kitemviews-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="2e664c0a05ae9e52fae93ecb509a64e1996a286c91083aed61f367dc0b4d0d51f2929ba10288be9a08dacae9c3f36953836812ef9097e3dce970830ed22fc794 kitemviews-5.54.0.tar.xz"
+sha512sums="c94157fb034c1e8b3787b37d873808d9c19da520b5c85483149bfd47fa6d4b5d93429ee21a3d7b5cb5e27d759d01c009ab6c3a6cce8a55a490a063a728916003 kitemviews-5.94.0.tar.xz"
diff --git a/user/kiten/APKBUILD b/user/kiten/APKBUILD
index 3e8ecabab..4dde5fffc 100644
--- a/user/kiten/APKBUILD
+++ b/user/kiten/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kiten
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Japanese reference and study tool"
url="https://www.kde.org/applications/education/kiten/"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev karchive-dev kconfig-dev
kcompletion-dev kconfigwidgets-dev kcoreaddons-dev kcrash-dev ki18n-dev
kdoctools-dev khtml-dev knotifications-dev kxmlgui-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kiten-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kiten-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="75effa8a23924cb5369fb63b09e974e2d0600b28d92757170d5ca452f5be3eedf874aa7ef7f3a60a953176ddf29beae0945ca31e0550be85b77c50eee748b4cc kiten-18.12.3.tar.xz"
+sha512sums="51291736da97420cdaa4f3d7bc9400a922a46f223344f03957bb8c5743c13b30151754cdbc8c47d35b65470a9d11a265e0a0f8ad789c80f4bb521992e1b89cfa kiten-22.04.2.tar.xz"
diff --git a/user/kjobwidgets/APKBUILD b/user/kjobwidgets/APKBUILD
index 1594c3e07..c3990d77f 100644
--- a/user/kjobwidgets/APKBUILD
+++ b/user/kjobwidgets/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kjobwidgets
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework providing widgets that show job progress"
url="https://www.kde.org/"
@@ -10,13 +10,13 @@ license="LGPL-2.1-only AND (LGPL-2.1-only OR LGPL-3.0-only)"
depends=""
depends_dev="qt5-qtbase-dev kcoreaddons-dev kwidgetsaddons-dev
qt5-qtx11extras-dev"
+docdepends="kcoreaddons-doc"
makedepends="$depends_dev cmake extra-cmake-modules libx11-dev libxext-dev
- libice-dev qt5-qttools-dev doxygen graphviz"
+ libice-dev qt5-qttools-dev doxygen graphviz $docdepends"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kjobwidgets-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +28,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="2b5eb64557611f400c4d5cc12c5e062a2ea2bd84e17fdceb34c4fa16d746fa04443bde5961f1c01713ca2a61e1b39172723ca58b6c45888d13650ee752be9701 kjobwidgets-5.54.0.tar.xz"
+sha512sums="9b038faed6c9174cdcdd21db85d078be6ae02e9091a3d30e3fcda290a130a6c3ec5ee2a9d96df895e6d5c123c979ca584cb487bc637f437cfa3fbe55bc9deb33 kjobwidgets-5.94.0.tar.xz"
diff --git a/user/kjs/APKBUILD b/user/kjs/APKBUILD
index 2cf5f49de..4a3fe271f 100644
--- a/user/kjs/APKBUILD
+++ b/user/kjs/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kjs
-pkgver=5.54.0
-pkgrel=0
+pkgver=5.94.0
+pkgrel=1
pkgdesc="Independent, free JavaScript engine"
url="https://www.kde.org/"
arch="all"
@@ -14,7 +14,6 @@ subpackages="$pkgname-dev $pkgname-doc"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/portingAids/kjs-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,18 +24,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="22ad1133cfe8f5186cfdc517a8bf07eba8ac3f19dea62e2f77d1ba9d34d655d26d195d2929a40180d755efcb7814339fb976090373bdc393fbf5ef6cab8d5d32 kjs-5.54.0.tar.xz"
+sha512sums="38e1d4d73e6ccf48d01d7c48315b1a69f5a008c91f7fb4df9a4f0dc80447a022701cb90af19b8e18785016895186d6e035583424326017ab79d50bc5aab9fcea kjs-5.94.0.tar.xz"
diff --git a/user/kjsembed/APKBUILD b/user/kjsembed/APKBUILD
index 639f955c8..3c819bfc4 100644
--- a/user/kjsembed/APKBUILD
+++ b/user/kjsembed/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kjsembed
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="JavaScript bindings for QObject"
url="https://www.kde.org/"
@@ -15,7 +15,6 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/portingAids/kjsembed-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d6aa8a20eabbb918ead0388be23701cbcbce87eb72a4048064d7f6d1137dc9cd618cb53dd5a756bda0a143ae8423cf9167901a5dbc3acba312d3257e873c4713 kjsembed-5.54.0.tar.xz"
+sha512sums="e3d4d527ba12f878dda01994cf4011f9a26083c2efa906430881fe56cab840453350a1420397b92363480de231af177fcb31ba9e1c3964862c66408502afb8b5 kjsembed-5.94.0.tar.xz"
diff --git a/user/kjumpingcube/APKBUILD b/user/kjumpingcube/APKBUILD
index e1dcf4d3a..bf3ab5f20 100644
--- a/user/kjumpingcube/APKBUILD
+++ b/user/kjumpingcube/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kjumpingcube
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Dice-driven tactical game"
url="https://games.kde.org/game.php?game=kjumpingcube"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
kcoreaddons-dev kconfigwidgets-dev kcrash-dev kdbusaddons-dev kio-dev
kdoctools-dev ki18n-dev kxmlgui-dev kwidgetsaddons-dev libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kjumpingcube-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kjumpingcube-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="8606ca6020dcd8f6d49ed6120899c0e705505575d26fd9e9c89b4d5e8306a597e51ef2761c1176859e0c22545b1abe2cf470e1aab4d19170ec2c7657c8019cb2 kjumpingcube-18.12.3.tar.xz"
+sha512sums="6548a3102e95f9fcff803c7e0fecc1387a59633dfe2ad591a0df100d73fe47d42522c4a517ea20cc87bfc59adc1edf063ec104ebaef0dea8e690e6f00d81c5ba kjumpingcube-22.04.2.tar.xz"
diff --git a/user/kldap/APKBUILD b/user/kldap/APKBUILD
new file mode 100644
index 000000000..09a7e753d
--- /dev/null
+++ b/user/kldap/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kldap
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="KDE LDAP library"
+url="https://kde.org/"
+arch="all"
+license="BSD-3-Clause AND CC0-1.0 AND LGPL-2.0+ AND MIT"
+depends=""
+makedepends="qt5-qtbase-dev cmake extra-cmake-modules cyrus-sasl-dev kauth-dev
+ kcodecs-dev kcoreaddons-dev kdoctools-dev ki18n-dev kio-dev kwallet-dev
+ kjobwidgets-dev kservice-dev kwidgetsaddons-dev openldap-dev solid-dev
+ qtkeychain-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kldap-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="2cff2279b059c62f3acfbff9a7f9b219bd605b78ccc710668f7a87b5fa607ffe887936cda9b9a5b5f2d2e44419f32b7ab0a39cbf7d4baac810802df6dd676d35 kldap-22.04.2.tar.xz"
diff --git a/user/kleopatra/APKBUILD b/user/kleopatra/APKBUILD
index 4dcabff8f..ea6a26909 100644
--- a/user/kleopatra/APKBUILD
+++ b/user/kleopatra/APKBUILD
@@ -1,21 +1,20 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kleopatra
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Certificate manager and cryptography GUI"
url="https://www.kde.org/applications/utilities/kleopatra/"
arch="all"
options="!check" # Test requires D-Bus session bus.
license="GPL-2.0-only"
-depends=""
+depends="shared-mime-info"
makedepends="cmake extra-cmake-modules qt5-qtbase-dev libkleo-dev kcmutils-dev
libassuan-dev kitemmodels-dev kmime-dev knotifications-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kleopatra-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kleopatra-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="707fcf4ed9bc2c4d7d45f5911ce1760b49b567865d5f5d315a0af12cb0856e39230c348efbcc449a1e4403f7fb3a0f0ebb654573e0d2bb511d8ff8909f932e6e kleopatra-18.12.3.tar.xz"
+sha512sums="5f1f59a42b568d22713a8f545994bfc4fcba15ab561ad5be8c05e918cd4ab0862ffaef3c6ca1c3fe5dd386ae50bc20b90747157b46d9dacbb7eb4cd7f2ca1705 kleopatra-22.04.2.tar.xz"
diff --git a/user/klettres/APKBUILD b/user/klettres/APKBUILD
index a41eac3a3..4900f53ea 100644
--- a/user/klettres/APKBUILD
+++ b/user/klettres/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=klettres
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Learn alphabets for multiple languages"
url="https://www.kde.org/applications/education/klettres/"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev phonon-dev
kcompletion-dev kcrash-dev kdoctools-dev kemoticons-dev ki18n-dev
knewstuff-dev kwidgetsaddons-dev kconfigwidgets-dev kcoreaddons-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/klettres-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/klettres-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="878308007ebd889a9924094bdf3e5d24ce6a04405f9311e8b197faa44e93a57730911ee084ee26ba1a5ac2c515b4227e614057410e9d9c0927fca63a805db09a klettres-18.12.3.tar.xz"
+sha512sums="8bf6b0122c91510052d916d04cb6c2504d59e1e80b52260127c903507dab9b1059b0a6ef9139067e851fa87d1e15675300d45733e5cb8623c73727fb4faef996 klettres-22.04.2.tar.xz"
diff --git a/user/klickety/APKBUILD b/user/klickety/APKBUILD
index 526f95d75..87a4d3473 100644
--- a/user/klickety/APKBUILD
+++ b/user/klickety/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=klickety
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Fun, simple colour matching game"
url="https://www.kde.org/"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kcoreaddons-dev kio-dev
kconfig-dev kcrash-dev kwidgetsaddons-dev ki18n-dev kconfigwidgets-dev
kxmlgui-dev kdoctools-dev kdbusaddons-dev libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/klickety-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/klickety-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="7238c2b7ea0e605bbe9675593f95cdf6ac2b427d9d7aa3999fa05ad3f4604968dbfacad016b0770cf82e1dabb1e572cc3e6d16a4b34bb8f1e400371a6fe0a0e5 klickety-18.12.3.tar.xz"
+sha512sums="2f004f69a57e8d33c9e0d379d43a207a2cb9a01288cf2c05ef805c5455492f1fef4d8a77eff44f56e80ce977269b7d704f645dffe9390cb395f79f5294e2a0eb klickety-22.04.2.tar.xz"
diff --git a/user/klines/APKBUILD b/user/klines/APKBUILD
index 4b9af8538..44506b98e 100644
--- a/user/klines/APKBUILD
+++ b/user/klines/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=klines
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Simple yet addictive single-player game"
url="https://games.kde.org/game.php?game=klines"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kcoreaddons-dev
kconfig-dev kcrash-dev kwidgetsaddons-dev kdbusaddons-dev ki18n-dev
kconfigwidgets-dev kxmlgui-dev kdoctools-dev libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/klines-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/klines-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3dacd2ede7f5303ec49b2c226b1e3521176cd37af539a1796939f43faf8e3dbc00f2d5278bf46c0e4e1cd8d4d1fb23b15f90a164cc4c55547bba8255b8506990 klines-18.12.3.tar.xz"
+sha512sums="224a338d12e3b6d50bbbd1497104762d96f2a34c6ebc0997af2ee30c54283f24dace47fa8471af8902b7ed830e3938f9b526808c76f1135f9959be8f8534f9fa klines-22.04.2.tar.xz"
diff --git a/user/kmag/APKBUILD b/user/kmag/APKBUILD
index 5f103bd45..dfc39d923 100644
--- a/user/kmag/APKBUILD
+++ b/user/kmag/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kmag
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Screen magnification utility"
url="https://www.kde.org/applications/utilities/kmag/"
@@ -9,12 +9,11 @@ arch="all"
license="GPL-2.0-only"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kdoctools-dev ki18n-dev
- kio-dev kxmlgui-dev"
+ kio-dev kxmlgui-dev libqaccessibilityclient-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kmag-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kmag-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,18 +24,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="7339513c36e20e8d7182c916428564bdd43f140430df0f053d0b6891c217608b6cf1f9adc15e0e11f689b2f26d4238b9f66d2b1c64cc2d0b0620f3a34509205e kmag-18.12.3.tar.xz"
+sha512sums="c8a047a825cf4c01bb50e785d0f712b033a8f2812b4f56a492a5b18ad181980a07806546a6abf2b4dd85b40d49a0ab6ebc623ca1cddc6634469a5126e5716eb6 kmag-22.04.2.tar.xz"
diff --git a/user/kmahjongg/APKBUILD b/user/kmahjongg/APKBUILD
index 0a5f8cf41..6a41a199c 100644
--- a/user/kmahjongg/APKBUILD
+++ b/user/kmahjongg/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kmahjongg
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Mah Jongg desktop game"
url="https://games.kde.org/game.php?game=kmahjongg"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
kcoreaddons-dev kcrash-dev kdbusaddons-dev kdeclarative-dev kxmlgui-dev
kdoctools-dev knewstuff-dev libkdegames-dev libkmahjongg-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kmahjongg-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kmahjongg-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="ee096ee9a890ecef53dde06d9a618fd70e0cafd59b0b6199d8bb0f0716733187c5f8a2bf9cbe43d2157ed502a3efdb06698a6fe3e6485199af8d71c9b8eb8252 kmahjongg-18.12.3.tar.xz"
+sha512sums="43d977a17d7184891c3d611df06d39a33467edd7e8847e7687c0ac9ab8e2773a746ac2d7b1e0ae94f88117d487395d77eb252c975d8a42f0a40e4d2dbb880241 kmahjongg-22.04.2.tar.xz"
diff --git a/user/kmediaplayer/APKBUILD b/user/kmediaplayer/APKBUILD
index d3015d199..8e40b6088 100644
--- a/user/kmediaplayer/APKBUILD
+++ b/user/kmediaplayer/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kmediaplayer
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Media player framework for KDE 5"
url="https://www.kde.org/"
@@ -14,7 +14,6 @@ subpackages="$pkgname-dev"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/portingAids/kmediaplayer-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,19 +24,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
# viewtest requires X11
CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E viewtest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="c49db70a8bc7a27cb49917eb83fa9e15666d25b5e641babc0af424910c73ae646d63767c5c5bef28db60489bfa52456d736e0d6f0ae04b1fd2a4d8d3027e1ba7 kmediaplayer-5.54.0.tar.xz"
+sha512sums="7e5f7b8a8539580301a86baedc9fa50228bd01742578d1e48699c5cb803408b58a520ddb7b4c32486e87b1aac603d84f61c81b78b3586f94f932d2194c1fa155 kmediaplayer-5.94.0.tar.xz"
diff --git a/user/kmenuedit/APKBUILD b/user/kmenuedit/APKBUILD
index 0ec9952e0..e788f1437 100644
--- a/user/kmenuedit/APKBUILD
+++ b/user/kmenuedit/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=kmenuedit
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="Menu editor for Plasma 5"
url="https://www.KDE.org/"
@@ -9,12 +9,12 @@ arch="all"
license="GPL-2.0+ AND GPL-2.0-only"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kdbusaddons-dev ki18n-dev
- kiconthemes-dev kio-dev kxmlgui-dev sonnet-dev kdelibs4support-dev"
+ kiconthemes-dev kglobalaccel-dev kinit-dev kio-dev kitemviews-dev kxmlgui-dev
+ sonnet-dev kdoctools-dev"
subpackages="$pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/plasma/$pkgver/kmenuedit-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="7bc5df0512b58bcc9e403449a3cafd7889a815d17d7387986750477e1420e71fce4d98980a789a16240ef6d2a7f316df9e0a1525c96b89df193aa601a2571062 kmenuedit-5.12.7.tar.xz"
+sha512sums="c637b662b366691a179d8ea67a91062a10a6d40467a72b3858f6f43f20ea6e03bfa65e1861e4cafd329098a8fd1b7976c565c355496df7f5199d8316e930b759 kmenuedit-5.24.5.tar.xz"
diff --git a/user/kmime/APKBUILD b/user/kmime/APKBUILD
index d28c6b378..83dff50a7 100644
--- a/user/kmime/APKBUILD
+++ b/user/kmime/APKBUILD
@@ -1,22 +1,20 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kmime
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="KDE support library for MIME"
url="https://www.kde.org/"
arch="all"
-options="!check" # wtf
-license="LGPL-2.1+"
+license="BSD-3-Clause AND CC0-1.0 AND LGPL-2.0+ AND LGPL-2.0-only"
depends=""
depends_dev="qt5-qtbase-dev"
makedepends="$depends_dev cmake extra-cmake-modules python3 kcodecs-dev
ki18n-dev"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kmime-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kmime-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,19 +25,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
# https://bugs.kde.org/show_bug.cgi?id=385479
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E dateformattertest
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E '(headertest|messagetest|dateformattertest)'
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="ed02fa15ef1d437f6c13a8bed4092c62fbbd55595156bd9766a8b980665c18a2a7ab2c841cc7657710480f2e98d275e8d377ccbba32081ef14e2a2aa5db5fb2d kmime-18.12.3.tar.xz"
+sha512sums="8f7f9f253566b511f4d8c4fe9f6148b5b4d82326ece70d9ee247b600e4226042ea92a6dbcd1636aea876f2794c5d335f899de723bf429e8a0732d8e1f06cbadc kmime-22.04.2.tar.xz"
diff --git a/user/kmines/APKBUILD b/user/kmines/APKBUILD
index 1a0ffcec3..cadc90d0e 100644
--- a/user/kmines/APKBUILD
+++ b/user/kmines/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kmines
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Classic Minesweeper game"
url="https://games.kde.org/game.php?game=kmines"
@@ -13,10 +13,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kconfigwidgets-dev
ki18n-dev ktextwidgets-dev kwidgetsaddons-dev kxmlgui-dev
libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kmines-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kmines-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="60c5a271f50a94ea018a325bee733a8541169e956208147fc640d7be5afc74a90518aca5a3946c1a49b66fb11acfd1b1b7cc44d5311671c6eaa425092ac2a30a kmines-18.12.3.tar.xz"
+sha512sums="6b0c472483aaab08d8c8c73d10761f0d144446863e572c45ae70355857c00e2456ca5a080c0bd25f345de4450b1bfc5d2888e802ca3601bea9f8f97eabffe7b2 kmines-22.04.2.tar.xz"
diff --git a/user/kmix/APKBUILD b/user/kmix/APKBUILD
index aef50e86e..9480f157c 100644
--- a/user/kmix/APKBUILD
+++ b/user/kmix/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kmix
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="KDE sound mixer"
url="https://www.kde.org/applications/multimedia/kmix/"
@@ -14,10 +14,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kcompletion-dev ki18n-dev
plasma-framework-dev kwidgetsaddons-dev kwindowsystem-dev kxmlgui-dev
alsa-lib-dev libcanberra-dev pulseaudio-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kmix-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kmix-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="2b99863aee801e8e0ce5100599b2ba6646ccae38c4f25a00b58ed71a48b36874df33b9f147b601135a3c6ccce16dfb4a7329814d92bab03a5a750d4abbf681cc kmix-18.12.3.tar.xz"
+sha512sums="89505ea03541aeeea493d153dadff8a23e4593802c1c77e9be3d819560eab9f7ede2fda280ba052d035911d773bfdbf3bb988393f181917cf2e856d90938e65b kmix-22.04.2.tar.xz"
diff --git a/user/kmousetool/APKBUILD b/user/kmousetool/APKBUILD
index 01f1229b9..121e7d7d3 100644
--- a/user/kmousetool/APKBUILD
+++ b/user/kmousetool/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kmousetool
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Tool to assist with clicking the mouse button"
url="https://userbase.kde.org/KMouseTool"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kdbusaddons-dev ki18n-dev
kdoctools-dev kiconthemes-dev knotifications-dev kxmlgui-dev phonon-dev
libxtst-dev libxt-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kmousetool-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kmousetool-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="c6cb2a60b9bb545335a648f28435eed12c2cefde930587afad2c35d815aa785cd4496be6745a0bcff6ffbe4940f79f12ebc949b3ddbd2701b157b98ea135243e kmousetool-18.12.3.tar.xz"
+sha512sums="e2fb79977474c5fce8ba4e601e57f2a42fd107e038ce312913098b8e8ccae829d50afabfdc4ab40edb1f4c089d1e30dbdd5c6d8d4e11b1bad8975ca6b7ddbffc kmousetool-22.04.2.tar.xz"
diff --git a/user/kmplot/APKBUILD b/user/kmplot/APKBUILD
index 3116bf623..bb44d52af 100644
--- a/user/kmplot/APKBUILD
+++ b/user/kmplot/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kmplot
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Mathematical function plotter"
url="https://www.kde.org/applications/education/kmplot/"
@@ -10,12 +10,11 @@ license="GPL-2.0-only"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kcrash-dev
kguiaddons-dev ki18n-dev kparts-dev kwidgetsaddons-dev kdoctools-dev
- kdelibs4support-dev kdbusaddons-dev"
+ kdbusaddons-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kmplot-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kmplot-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="6fa203f4cd192e114ccf7f87df3d1f1f0e806a0bb4027a31eb0fc16a239fba841b643ea7b4b8f4d72a43efe9605e22bd0b47d7fbb9232b5305c60cd2e4ccadb9 kmplot-18.12.3.tar.xz"
+sha512sums="3aa77ccfcb0cb15cb9816e8525f68dfd69a6dcc3f7d76b6c3258211cf43ba47d39197049d3cc4d3850e02424980f3a9530812f66a3ab11621af4335957570814 kmplot-22.04.2.tar.xz"
diff --git a/user/knavalbattle/APKBUILD b/user/knavalbattle/APKBUILD
index e3f922ce3..1f0d8dd3f 100644
--- a/user/knavalbattle/APKBUILD
+++ b/user/knavalbattle/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=knavalbattle
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Ship sinking game from KDE"
url="https://www.kde.org/applications/games/knavalbattle/"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kconfig-dev kcrash-dev
kdbusaddons-dev kdnssd-dev kdoctools-dev ki18n-dev ktextwidgets-dev
kxmlgui-dev libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/knavalbattle-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/knavalbattle-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="49660ae9a472f06d98a95db38b697d4aa37acf0ca4aa14510f4a2256106e3a9e2c8162c1f65b8f36ed2978f25da6263c2c82666458c0e344af87da881d571811 knavalbattle-18.12.3.tar.xz"
+sha512sums="d232df8bc88c2e20f6d490127bbcced275c3b9656e50a6d960a0968e1bff5655a332496f0e38cc88b502892916cb03b05cf5ed094eee681308dc200570514df0 knavalbattle-22.04.2.tar.xz"
diff --git a/user/knetwalk/APKBUILD b/user/knetwalk/APKBUILD
index 91f59ffd1..24afe5c40 100644
--- a/user/knetwalk/APKBUILD
+++ b/user/knetwalk/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=knetwalk
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Build up a computer network by placing the wires correctly"
url="https://www.kde.org/applications/games/knetwalk/"
@@ -13,10 +13,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
kdbusaddons-dev ki18n-dev ktextwidgets-dev kwidgetsaddons-dev
kxmlgui-dev libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/knetwalk-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/knetwalk-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="36fd21b7a5e37f131fbba4bd13391c21e3abec3a2128c49badb3a44641d8ffe0d999df6a40f472125d42e9bfac02815b2ade0a4eb4eebda64c95035c6e24d9b2 knetwalk-18.12.3.tar.xz"
+sha512sums="f1f8fe24c95140693c2cdcd51605a8a0c7f989a61752c992f0bdc245e05cfc67a1f4b991c0b31e613262416d732bff1cc91fe086937fdc1968d32b652abd7427 knetwalk-22.04.2.tar.xz"
diff --git a/user/knewstuff/APKBUILD b/user/knewstuff/APKBUILD
index 5ec9d7892..bef47c3f5 100644
--- a/user/knewstuff/APKBUILD
+++ b/user/knewstuff/APKBUILD
@@ -1,24 +1,28 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=knewstuff
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for discovering and downloading plugins, themes, and more"
url="https://www.kde.org/"
arch="all"
-license="LGPL-2.1+"
-depends=""
+options="!check" # Requires X11.
+license="LGPL-2.0+"
+depends="kirigami2"
depends_dev="qt5-qtbase-dev attica-dev kconfig-dev kservice-dev kxmlgui-dev
openssl-dev"
+docdepends="attica-doc kcoreaddons-doc kxmlgui-doc kservice-doc kconfig-doc
+ kconfigwidgets-doc kcodecs-doc kwidgetsaddons-doc kauth-doc"
makedepends="$depends_dev cmake extra-cmake-modules python3 doxygen graphviz
qt5-qttools-dev karchive-dev kcompletion-dev kcoreaddons-dev kio-dev
- ki18n-dev kiconthemes-dev kirigami2-dev kitemviews-dev
- ktextwidgets-dev kwidgetsaddons-dev"
+ ki18n-dev kiconthemes-dev kirigami2-dev kitemviews-dev kpackage-dev
+ ktextwidgets-dev kwidgetsaddons-dev syndication-dev $docdepends"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/frameworks/${pkgver%.*}/knewstuff-$pkgver.tar.xz"
+source="https://download.kde.org/stable/frameworks/${pkgver%.*}/knewstuff-$pkgver.tar.xz
+ backport.patch
+ "
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -30,19 +34,18 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
# kmoretoolstest requires X11.
CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E 'kmoretoolstest'
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="96fd8100c78e7d4f9c0ca26ad12587f952455b302ae195184e6fb0ae601b2806668cf2b6dca012e08441622fd72e99c30a52fe901d7af60c4b59701d72b1196a knewstuff-5.54.0.tar.xz"
+sha512sums="6269614a0df2616bd5bd1a8e9c3f8dc16920bbd4cf8fd18a5ccc1e818c292d90533de3dc77ce8fbbb183388ad6fed72a30b78177eddd87624499b3c75d55a226 knewstuff-5.94.0.tar.xz
+5c73d39a78658899f4e7b2526608498ff63bf4e6f9b730b0f20f3205017e77fe4a9a96e3ab9e42f0789234a3e0658a89f646bc040488465f07689bc9629105fc backport.patch"
diff --git a/user/knewstuff/backport.patch b/user/knewstuff/backport.patch
new file mode 100644
index 000000000..002d4c182
--- /dev/null
+++ b/user/knewstuff/backport.patch
@@ -0,0 +1,54 @@
+From b634b65dd081746ccb8bdfa9bf2d878d13e2c0fb Mon Sep 17 00:00:00 2001
+From: Alexander Lohnau <alexander.lohnau@gmx.de>
+Date: Tue, 24 May 2022 12:58:54 +0200
+Subject: [PATCH] Fix QtQuickDialogWrapper dialog not being usable in konsole
+
+Patch provided by David Edmundson.
+
+```
+Issue is QGuiApplicationPrivate::showModalWindow
+
+it marks every other non-modal window as blocked, including new windows.
+
+when we focus the new dialog at a wayland/X level Qt gets it, but in it's own internal dispatching ignores that and sends it to the modal window
+
+Qt is smart enough to handle child windows appropriately, but only if it knows about them. Having a transient parent should take care of this. We should have this anyway as that will fix some window placement bugs.
+```
+
+BUG: 452593
+---
+ src/qtquickdialogwrapper.cpp | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/src/qtquickdialogwrapper.cpp b/src/qtquickdialogwrapper.cpp
+index 4f22b650..e31e8d80 100644
+--- a/src/qtquickdialogwrapper.cpp
++++ b/src/qtquickdialogwrapper.cpp
+@@ -7,10 +7,12 @@
+ #include "qtquickdialogwrapper.h"
+
+ #include <QEventLoop>
++#include <QGuiApplication>
+ #include <QQmlComponent>
+ #include <QQmlContext>
+ #include <QQmlEngine>
+ #include <QTimer>
++#include <QWindow>
+
+ #include <KLocalizedContext>
+
+@@ -70,6 +72,11 @@ QtQuickDialogWrapper::QtQuickDialogWrapper(const QString &configFile, QObject *p
+
+ // Forward relevant signals
+ connect(d->item, SIGNAL(closed()), this, SIGNAL(closed()));
++
++ // Otherwise, the dialog is not in front of other popups, BUG: 452593
++ auto window = qobject_cast<QWindow *>(d->item);
++ Q_ASSERT(window);
++ window->setTransientParent(QGuiApplication::focusWindow());
+ }
+ }
+
+--
+GitLab
+
diff --git a/user/knotifications/APKBUILD b/user/knotifications/APKBUILD
index bbf4a5895..26f42a2ea 100644
--- a/user/knotifications/APKBUILD
+++ b/user/knotifications/APKBUILD
@@ -1,23 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=knotifications
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for sending notifications to users"
url="https://www.kde.org/"
arch="all"
options="!check" # Requires DBus daemon running.
-license="LGPL-2.1-only OR LGPL-3.0-only"
+license="LGPL-2.0+"
depends=""
depends_dev="qt5-qtbase-dev qt5-qtx11extras-dev kwindowsystem-dev kconfig-dev
kcodecs-dev kcoreaddons-dev phonon-dev libdbusmenu-qt-dev"
makedepends="$depends_dev cmake extra-cmake-modules libx11-dev libxext-dev
- libice-dev qt5-qttools-dev doxygen graphviz"
+ libice-dev qt5-qtspeech-dev qt5-qttools-dev doxygen graphviz
+ libcanberra-dev qt5-qtdeclarative-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/knotifications-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,18 +29,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="66098068d707f4b5b5147b2e02dec7b4a11c95af1dcc02ec933d1b5b63d8dab1e7776a34aae80cfb5671ae7e27cfd50dad5566e26152fb94de076384b77cdcfa knotifications-5.54.0.tar.xz"
+sha512sums="e77886ae03b1a59d9da74a83b7945cb9e7a60992f31607d0ed545418cb384641fac8b8a6ce431c8ad5c0c57d939dab66a52a48febf2624602d4e3a6eaa3475cc knotifications-5.94.0.tar.xz"
diff --git a/user/knotifyconfig/APKBUILD b/user/knotifyconfig/APKBUILD
index 0ef974619..b17edd7ab 100644
--- a/user/knotifyconfig/APKBUILD
+++ b/user/knotifyconfig/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=knotifyconfig
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for configuring notifications"
url="https://www.kde.org/"
@@ -10,16 +10,15 @@ options="!check" # No test suite, despite mentioning testing deps...
license="LGPL-2.0-only"
depends=""
depends_dev="qt5-qtbase-dev"
-makedepends="$depends_dev cmake extra-cmake-modules python3 doxygen graphviz
- qt5-qttools-dev kcompletion-dev kconfig-dev ki18n-dev kio-dev
- knotifications-dev phonon-dev"
checkdepends="kconfigwidgets-dev knotifications-dev kwidgetsaddons-dev
kxmlgui-dev"
+makedepends="$depends_dev cmake extra-cmake-modules python3 doxygen graphviz
+ qt5-qttools-dev kcompletion-dev kconfig-dev ki18n-dev kio-dev
+ knotifications-dev libcanberra-dev phonon-dev qt5-qtspeech-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/knotifyconfig-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -31,13 +30,12 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="f9ae7eab977be273ed12a56e903b324986794d286409aed657af22c09ba7e623f3590779916481a4c80f606abeb9ab37cf544e74a9254290b10b89abb43c7573 knotifyconfig-5.54.0.tar.xz"
+sha512sums="0a36b39f003ee89f8b041408bd54fa3ae95619367d19fe99e757176222dc6b1cf20f76092e24bb5dc0ff09862558c4a34e7e2a40c89af0795a0ead123e4825c1 knotifyconfig-5.94.0.tar.xz"
diff --git a/user/kolf/APKBUILD b/user/kolf/APKBUILD
index fcf84a6c9..b23f16102 100644
--- a/user/kolf/APKBUILD
+++ b/user/kolf/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kolf
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="2D miniature golf game from KDE"
url="https://www.kde.org/applications/games/kolf/"
@@ -10,13 +10,12 @@ license="GPL-2.0-only"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kcompletion-dev
kconfig-dev kconfigwidgets-dev kcoreaddons-dev kcrash-dev
- kdbusaddons-dev kdelibs4support-dev kdoctools-dev ki18n-dev kio-dev
- kwidgetsaddons-dev kxmlgui-dev libkdegames-dev"
+ kdbusaddons-dev kdoctools-dev ki18n-dev kio-dev kwidgetsaddons-dev
+ kxmlgui-dev libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kolf-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kolf-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="321e5eb368f3e9c64a941d0b32abd56e8e0eb9f49a74ce07c1382ab3625e0ddb843f7b6808856e6c64a7026f8203c009a7ce285efb28b3c85c51f15c118c5480 kolf-18.12.3.tar.xz"
+sha512sums="057a47ee1553e68327e7f97170e9a4de31acd90d04f19b3aaae382bac870fd307d0bc14f3eb5db548615ee72decb25902e4b50ca012191c5771aad315c72b52f kolf-22.04.2.tar.xz"
diff --git a/user/kollision/APKBUILD b/user/kollision/APKBUILD
index a01e020f8..c2f0ae0ed 100644
--- a/user/kollision/APKBUILD
+++ b/user/kollision/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kollision
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Simple ball dodging game"
url="https://games.kde.org/game.php?game=kollision"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kcoreaddons-dev ki18n-dev
kconfig-dev kcrash-dev kdbusaddons-dev kdoctools-dev kwidgetsaddons-dev
kxmlgui-dev libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kollision-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kollision-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="eec43613ab81ebbabe3f6e2ea59f861c7c22772105ec1a15bb1fac5a1eb8086627a00ae1987c77d757b0ea8f14c2544dbcec69f669e6f8ae6866e483e29ec3e4 kollision-18.12.3.tar.xz"
+sha512sums="44b23128d2a0e64850fdb4dfe8aa358a01796ae09e333ff411c7c11b3e03a1bbbeb21ecab7a50a7a8675f1c092a70fbb5b362cb5b1af103cf1ea748c55a425b9 kollision-22.04.2.tar.xz"
diff --git a/user/kolourpaint/APKBUILD b/user/kolourpaint/APKBUILD
index 11845e7ed..bc9f7e6a7 100644
--- a/user/kolourpaint/APKBUILD
+++ b/user/kolourpaint/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kolourpaint
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Simple painting program for KDE"
url="http://kolourpaint.org/"
@@ -12,10 +12,9 @@ depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kdelibs4support-dev
libksane-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kolourpaint-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kolourpaint-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="ac294aa80ffebdc6440474c15c5450fdcf15d735e6d920e2af99c92cbaa5f8930330a268faea5fb7859d1128c7479049ceb672715d7a4dbfdfb7e3b72157af13 kolourpaint-18.12.3.tar.xz"
+sha512sums="64ecc8387115151b9afa6bf8f63f0f29a59c18a0d1926c59d0ff619812e3ec5b53832278eea50cd1b64f6ad1f0c9a374c8a0ce37ca77387fcb6d0c7f2c37307c kolourpaint-22.04.2.tar.xz"
diff --git a/user/kompare/APKBUILD b/user/kompare/APKBUILD
new file mode 100644
index 000000000..5977faf07
--- /dev/null
+++ b/user/kompare/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kompare
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="View and merge differences between files"
+url="https://kde.org/applications/development/org.kde.kompare"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="qt5-qtbase-dev cmake extra-cmake-modules kauth-dev kcodecs-dev
+ kcompletion-dev kconfig-dev kconfigwidgets-dev kcoreaddons-dev
+ kdoctools-dev kiconthemes-dev kitemviews-dev kjobwidgets-dev kparts-dev
+ kservice-dev ktexteditor-dev kwidgetsaddons-dev kwindowsystem-dev
+ kxmlgui-dev libkomparediff2-dev solid-dev sonnet-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kompare-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="629a4aa8978d7befa94398a223c7b671d02db0c74c43da98751fbacc61e0e6024619f5716f5c500f7191b5eb0a2b997f0b87b65231b152f1f320272167e6d23d kompare-22.04.2.tar.xz"
diff --git a/user/konquest/APKBUILD b/user/konquest/APKBUILD
index cf7b6b3be..4fb785895 100644
--- a/user/konquest/APKBUILD
+++ b/user/konquest/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=konquest
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Galactic strategy game"
url="https://games.kde.org/game.php?game=konquest"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
kcoreaddons-dev kcrash-dev kdbusaddons-dev kdoctools-dev kguiaddons-dev
ki18n-dev kwidgetsaddons-dev kxmlgui-dev libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/konquest-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/konquest-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="c61520a69a2dcd38c66cce521cf25060b31047b77e6f587389a486b4e7438e140f149cb488fb2500feb195d54035a828f9d38ef4d70d8b36003c6c6b3d33169e konquest-18.12.3.tar.xz"
+sha512sums="169c33407e865bdc80a7b552dd867e1a081feebac8d0aff3c15e63b1e38eae89910771cda55f40e0c20f70f2a8ded8a6979b507d34ce46c5d659a1624496dc1c konquest-22.04.2.tar.xz"
diff --git a/user/konsole/APKBUILD b/user/konsole/APKBUILD
index 551c18148..fdaabc40c 100644
--- a/user/konsole/APKBUILD
+++ b/user/konsole/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=konsole
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Terminal emulator for Qt/KDE"
url="https://konsole.kde.org/"
@@ -16,12 +16,11 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kbookmarks-dev
kpty-dev kservice-dev ktextwidgets-dev kwidgetsaddons-dev python3
kwindowsystem-dev kxmlgui-dev kdbusaddons-dev knewstuff-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/konsole-$pkgver.tar.xz
- cursor.patch
+source="https://download.kde.org/stable/release-service/$pkgver/src/konsole-$pkgver.tar.xz
+ musl.patch
"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -32,19 +31,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="9fecd316a9bc7adaca9a3fac38a57d293286b6328e88d96ac1cf8967fcb67ef8e9a5b085e185c4373599eafd0eaa18f0d73df70df16b98a1badd9efb689e1f7c konsole-18.12.3.tar.xz
-66dcb31dd63f7a300b64058e8f9e56aa122c407d3a4a85c2323e7abf2e8eb4a3e1dd83de9445dac4938f9395b612eac5ceb9626bf895b532cfd19f63e0fbb2d7 cursor.patch"
+sha512sums="cd8ecc3e494cc2c087e03b4537b822986d36a04d75edf9c8d053a79578e148498582238f96018262cc74cdf86fe7abf7a0a4408e220ec0a9a49bb94d8aa10a76 konsole-22.04.2.tar.xz
+7f39e9e026cc17214eb0338f90fd9e2c007875813a0fdbd1fae421b779083d94ebe83df5226fc67b451ac3ab3f8aa9501f996551519c718ca23c3de5a7c16fbe musl.patch"
diff --git a/user/konsole/cursor.patch b/user/konsole/cursor.patch
deleted file mode 100644
index 621a4f36b..000000000
--- a/user/konsole/cursor.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From 9af659c73e3203e1d5ef3873fa6c0144258b9673 Mon Sep 17 00:00:00 2001
-From: Wolfgang Bauer <wbauer@tmo.at>
-Date: Mon, 4 Mar 2019 09:59:45 -0500
-Subject: Fix ibeam and underline cursor rendering
-
-Summary:
-Since anti-aliasing was enabled in the painter, coordinates need to
-be shifted half a pixel so that they align with the pixel grid,
-otherwise the result gets "blurred" due to the anti-aliasing.
-And as parts of the blurred shape leak outside the cursor rectangle,
-this also leaves artifacts when the cursor moves or blinks as these
-parts are not cleared.
-
-This is basically the same as commit
-e7085310d6d594823d0ed491fa8bdbd99dec4932 for the
-standard block cursor.
-
-BUG: 402589
-
-Test Plan:
-- Switch cursor shape to "I-Beam" or "Underline" in the "Advanced"
-profile settings
-
-The cursors are a single line again now, before they were blurred by
-anti-aliasing.
-
-Screenshots:
-Before:
-{F6656366}
-{F6656370}
-
-After:
-{F6656371}
-{F6656373}
-
-Also, there are no more artifacts when the cursor is moved or
-cursor blinking is enabled.
-
-Reviewers: #konsole, hindenburg
-
-Reviewed By: #konsole, hindenburg
-
-Subscribers: hindenburg, konsole-devel
-
-Tags: #konsole
-
-Differential Revision: https://phabricator.kde.org/D19513
-
-(cherry picked from commit eccfb1f62bbf67ebffee11e241bd05757b826ff1)
----
- src/TerminalDisplay.cpp | 18 ++++++++++--------
- 1 file changed, 10 insertions(+), 8 deletions(-)
-
-diff --git a/src/TerminalDisplay.cpp b/src/TerminalDisplay.cpp
-index 64c831c..7c8137d 100644
---- a/src/TerminalDisplay.cpp
-+++ b/src/TerminalDisplay.cpp
-@@ -958,16 +958,18 @@ void TerminalDisplay::drawCursor(QPainter& painter,
- }
- }
- } else if (_cursorShape == Enum::UnderlineCursor) {
-- painter.drawLine(cursorRect.left(),
-- cursorRect.bottom(),
-- cursorRect.right(),
-- cursorRect.bottom());
-+ QLineF line(cursorRect.left() + 0.5,
-+ cursorRect.bottom() - 0.5,
-+ cursorRect.right() - 0.5,
-+ cursorRect.bottom() - 0.5);
-+ painter.drawLine(line);
-
- } else if (_cursorShape == Enum::IBeamCursor) {
-- painter.drawLine(cursorRect.left(),
-- cursorRect.top(),
-- cursorRect.left(),
-- cursorRect.bottom());
-+ QLineF line(cursorRect.left() + 0.5,
-+ cursorRect.top() + 0.5,
-+ cursorRect.left() + 0.5,
-+ cursorRect.bottom() - 0.5);
-+ painter.drawLine(line);
- }
- }
-
---
-cgit v1.1
-
diff --git a/user/konsole/musl.patch b/user/konsole/musl.patch
new file mode 100644
index 000000000..818b71c50
--- /dev/null
+++ b/user/konsole/musl.patch
@@ -0,0 +1,87 @@
+From f6310c2b791275f3727f2240ca7fab9f58db943d Mon Sep 17 00:00:00 2001
+From: Heiko Becker <heiko.becker@kde.org>
+Date: Tue, 22 Mar 2022 22:08:10 +0100
+Subject: [PATCH] Detect the presence of malloc_trim to fix the build with musl
+
+malloc_trim is indeed a GNU extension, but an extension of glibc.
+Relying on __GNUC__ unfortunately doesn't help with that. Check for
+the actual presence of malloc_trim with cmake's check_function_exists
+instead.
+This fixes the build with musl libc, which doesn't come with
+malloc_trim.
+
+Co-authored-by: Ahmad Samir <a.samirh78@gmail.com>
+---
+ CMakeLists.txt | 2 +-
+ src/Screen.cpp | 17 +++++++----------
+ src/config-konsole.h.cmake | 4 ++--
+ 3 files changed, 10 insertions(+), 13 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e6775aeef..9e990c37d 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -94,7 +94,7 @@ set(HAVE_X11 ${X11_FOUND})
+ # Check for function GETPWUID
+ check_symbol_exists(getpwuid "pwd.h" HAVE_GETPWUID)
+
+-check_include_files(malloc.h HAVE_MALLOC_H)
++check_function_exists(malloc_trim HAVE_MALLOC_TRIM)
+
+ # See above includes for defaults
+ add_definitions(
+diff --git a/src/Screen.cpp b/src/Screen.cpp
+index ad578b4fd..10876f988 100644
+--- a/src/Screen.cpp
++++ b/src/Screen.cpp
+@@ -28,13 +28,11 @@
+ #include "history/HistoryType.h"
+ #include "profile/Profile.h"
+
+-#ifdef HAVE_MALLOC_H
+- // For malloc_trim, which is a GNU extension
+- #ifdef __GNUC__
+- extern "C" {
+- #include <malloc.h>
+- }
+- #endif
++#ifdef HAVE_MALLOC_TRIM
++// For malloc_trim, which is a GNU extension
++extern "C" {
++#include <malloc.h>
++}
+ #endif
+
+ using namespace Konsole;
+@@ -1799,14 +1797,13 @@ void Screen::setScroll(const HistoryType &t, bool copyPreviousScroll)
+ t.scroll(_history);
+ }
+
+-#ifdef HAVE_MALLOC_H
++#ifdef HAVE_MALLOC_TRIM
++
+ #ifdef Q_OS_LINUX
+-#ifdef __GNUC__
+ // We might have been using gigabytes of memory, so make sure it is actually released
+ malloc_trim(0);
+ #endif
+ #endif
+-#endif
+ }
+
+ bool Screen::hasScroll() const
+diff --git a/src/config-konsole.h.cmake b/src/config-konsole.h.cmake
+index b74992b0a..4b1d9b515 100644
+--- a/src/config-konsole.h.cmake
++++ b/src/config-konsole.h.cmake
+@@ -15,5 +15,5 @@
+
+ #cmakedefine HAVE_GETPWUID ${HAVE_GETPWUID}
+
+-/* Define to 1 if you have the <malloc.h> header file. */
+-#cmakedefine HAVE_MALLOC_H 1
++/* Defined if system has the malloc_trim function, which is a GNU extension */
++#cmakedefine HAVE_MALLOC_TRIM
+--
+GitLab
+
diff --git a/user/kontactinterface/APKBUILD b/user/kontactinterface/APKBUILD
new file mode 100644
index 000000000..25a1ad85a
--- /dev/null
+++ b/user/kontactinterface/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kontactinterface
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="Kontact public interface library"
+url="https://kde.org/"
+arch="all"
+license="LGPL-2.1+"
+depends=""
+makedepends="qt5-qtbase-dev cmake extra-cmake-modules kauth-dev kcodecs-dev
+ kcoreaddons-dev ki18n-dev kjobwidgets-dev kparts-dev kservice-dev
+ kwindowsystem-dev kxmlgui-dev solid-dev sonnet-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kontactinterface-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="a38fcb1927fba6b979cfb3cc2ed5afaa2b55f80108a86761ace300b3e3583bad08bae10ac713e3ed0d2a097178a04e47a1e56118d05ebd0f386f7493055a4c8d kontactinterface-22.04.2.tar.xz"
diff --git a/user/konversation/APKBUILD b/user/konversation/APKBUILD
index dd280d582..79accebc8 100644
--- a/user/konversation/APKBUILD
+++ b/user/konversation/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=konversation
-pkgver=1.7.5
+pkgver=1.7.7
pkgrel=0
pkgdesc="KDE IRC (Internet Relay Chat) client"
url="https://konversation.kde.org/"
@@ -18,7 +18,6 @@ subpackages="$pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/konversation/$pkgver/src/konversation-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,18 +28,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="001534c7f6c5110ca5e210977cc4275e083f5c3704078a74aa573af659154e0fa4c3c960be08f41256db1ac4568f0734741bf10cfb2e15d9e6f6440250682504 konversation-1.7.5.tar.xz"
+sha512sums="99026007af7fa00b82240c1f0e46a8d3db6c3434948aff7d0b01c2f99bccdd227a2a705bd83bce1ca2e47be13866d5d0a981c8b4ff8dec472612d6ee40f9ed2c konversation-1.7.7.tar.xz"
diff --git a/user/kopete/APKBUILD b/user/kopete/APKBUILD
new file mode 100644
index 000000000..e915861d9
--- /dev/null
+++ b/user/kopete/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kopete
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="KDE Instant Messenger (IM) client"
+url="https://kde.org/applications/internet/org.kde.kopete"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="qt5-qtbase-dev cmake extra-cmake-modules phonon-dev kcmutils-dev
+ kconfig-dev kcontacts-dev kcoreaddons-dev kcrash-dev kdbusaddons-dev
+ kdelibs4support-dev kdoctools-dev kemoticons-dev khtml-dev ki18n-dev
+ knotifyconfig-dev kparts-dev ktexteditor-dev kwallet-dev libkleo-dev
+ kidentitymanagement-dev kpimtextedit-dev kdnssd-dev v4l-utils-dev
+ glib-dev alsa-lib-dev qca-dev speex-dev gpgme-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kopete-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ QT_QPA_PLATFORM=offscreen CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="f0e2d50f3e4f408d603721747945fef5bd6eb1034cd7a29058e77dc04edccbf29760dead8e8a7200bc74488b6a36bebbbd0f682677ca815c16aa93faffea4c50 kopete-22.04.2.tar.xz"
diff --git a/user/koruri/APKBUILD b/user/koruri/APKBUILD
index 58229ed88..4f6f28ace 100644
--- a/user/koruri/APKBUILD
+++ b/user/koruri/APKBUILD
@@ -4,18 +4,17 @@ pkgname=koruri
pkgver=20180915
pkgrel=0
pkgdesc="Japanese typeface based on M+ FONTS and Open Sans"
-url="https://osdn.net/projects/koruri/"
+url="https://koruri.github.io/"
arch="noarch"
options="!check" # No test suite.
license="Apache-2.0 AND custom:M+-FONTS"
depends="fontconfig"
makedepends=""
subpackages=""
-source="https://mirrors.gigenet.com/OSDN//koruri/70038/Koruri-$pkgver.tar.xz"
+source="https://distfiles.adelielinux.org/source/Koruri-$pkgver.tar.xz"
builddir="$srcdir/Koruri-$pkgver"
package() {
- cd "$builddir"
install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ *.ttf
}
diff --git a/user/kpackage/APKBUILD b/user/kpackage/APKBUILD
index fa022f0bb..7938e35b7 100644
--- a/user/kpackage/APKBUILD
+++ b/user/kpackage/APKBUILD
@@ -1,22 +1,22 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kpackage
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Frameworks for managing KDE data packages"
url="https://www.kde.org/"
arch="all"
options="!check" # Requires Plasma to be installed, causing circular dep
-license="LGPL-2.1+"
+license="LGPL-2.0+"
depends=""
depends_dev="qt5-qtbase-dev karchive-dev ki18n-dev kcoreaddons-dev"
+docdepends="kcoreaddons-doc"
makedepends="$depends_dev cmake extra-cmake-modules python3 kdoctools-dev
- qt5-qttools-dev doxygen graphviz"
+ qt5-qttools-dev doxygen graphviz $docdepends"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kpackage-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +28,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d26f5dad3634a442d55bae94903ec6d781fa1984a780eec4b1f9ea0f9d3ae50b0defd3ddb078d7b0410626250ded1ee1e5ca1f5ea7ecee1ede4a0ef30463a8c8 kpackage-5.54.0.tar.xz"
+sha512sums="65c58a01c302e3f5ad89fab1bec3b9bf1f17a9a94408b565137a1cfb4f083436c39e41b57c11449d5f764252df86eb7e9b4a08b86d65492f0f7eb1899b8d2cc7 kpackage-5.94.0.tar.xz"
diff --git a/user/kparts/APKBUILD b/user/kparts/APKBUILD
index 090f2c44e..a20822413 100644
--- a/user/kparts/APKBUILD
+++ b/user/kparts/APKBUILD
@@ -1,23 +1,26 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kparts
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for user interface components"
url="https://www.kde.org/"
arch="all"
options="!check" # Requires X11 running.
-license="LGPL-2.1-only AND LGPL-2.1+ AND (LGPL-2.1-only OR LGPL-3.0-only)"
+license="GPL-2.0+ AND LGPL-2.0+ AND LGPL-2.1+ AND (LGPL-2.0-only OR LGPL-3.0-only) AND CC0-1.0"
depends=""
depends_dev="qt5-qtbase-dev kio-dev kservice-dev ktextwidgets-dev kxmlgui-dev"
+docdepends="kio-doc kxmlgui-doc ktextwidgets-doc kcoreaddons-doc kservice-doc
+ kcompletion-doc kwidgetsaddons-doc kjobwidgets-doc kbookmarks-doc
+ kitemviews-doc kwindowsystem-doc kconfig-doc kconfigwidgets-doc
+ solid-doc sonnet-doc ki18n-doc kcodecs-doc kauth-doc"
makedepends="$depends_dev cmake extra-cmake-modules python3 doxygen graphviz
qt5-qttools-dev kconfig-dev kcoreaddons-dev ki18n-dev kiconthemes-dev
- kjobwidgets-dev kwidgetsaddons-dev"
+ kjobwidgets-dev kwidgetsaddons-dev $docdepends"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kparts-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,18 +32,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="607a9a89b9d3b4434a46fe84fd13588bb2d99a43b6cc7a85abc1c336613834743f0b6ef832f31126cbf3a0ea6260c8e889927d7cc9d7cb0ad61215d1c6c4e272 kparts-5.54.0.tar.xz"
+sha512sums="1046617d69c9e67c02a1924d5a20a7e64ee69cb93477d28a8686b4658bdcba8765d9ec7b5f27e4926feaab34db459bbaac9e8f25eb4ee674a7ff622882bec4e8 kparts-5.94.0.tar.xz"
diff --git a/user/kpartx/APKBUILD b/user/kpartx/APKBUILD
new file mode 100644
index 000000000..3525feddf
--- /dev/null
+++ b/user/kpartx/APKBUILD
@@ -0,0 +1,31 @@
+# Contributor: CyberLeo <cyberleo@cyberleo.net>
+# Maintainer: CyberLeo <cyberleo@cyberleo.net>
+pkgname=kpartx
+pkgver=0.8.6
+pkgrel=0
+pkgdesc="Manipulates device mappings for the partitions of any block device."
+url="http://christophe.varoqui.free.fr/"
+arch="all"
+options="!check" # Requires root and loopback/dm-mod kernel modules.
+license="LGPL-2.0-only"
+depends=""
+makedepends="lvm2-dev"
+checkdepends="cmd:which parted"
+subpackages="$pkgname-doc"
+source="multipath-tools-$pkgver.tar.gz::https://github.com/opensvc/multipath-tools/archive/refs/tags/$pkgver.tar.gz
+test-kpartx"
+builddir="$srcdir/multipath-tools-$pkgver/kpartx"
+
+build() {
+ make kpartx
+}
+
+check() {
+ sudo KPARTX="${builddir}/kpartx" WAIT_US=1000000 "${srcdir}/test-kpartx"
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+sha512sums="82e5b7307e599ba6b059679c3987a442fb5be4885f0a27c260a99a07cb336b88d48e314b4ec951944e0200e4731522d8da043d98fa566857ecc6d100791c0e38 multipath-tools-0.8.6.tar.gz
+2e3702243bfc52df7353cc828fb03e3dff36eddbf77eb13140fd58d857c3d45990c679c535c00c569e5a5412ad3823717e264449c038ebf1726a4e7adc08e06e test-kpartx"
diff --git a/user/kpartx/test-kpartx b/user/kpartx/test-kpartx
new file mode 100755
index 000000000..93a5abdbd
--- /dev/null
+++ b/user/kpartx/test-kpartx
@@ -0,0 +1,395 @@
+#! /bin/bash
+
+# This is a unit test program for kpartx, in particular for deleting partitions.
+#
+# The rationale is the following:
+#
+# 1) kpartx should delete all mappings it created beforehand.
+# 2) kpartx should handle partitions on dm devices and other devices
+# (e.g. loop devices) equally well.
+# 3) kpartx should only delete "partitions", which are single-target
+# linear mappings into a block device. Other maps should not be touched.
+# 4) kpartx should only delete mappings it created itself beforehand.
+# In particular, it shouldn't delete LVM LVs, even if they are fully
+# contained in the block device at hand and thus look like partitions
+# in the first place. (For historical compatibility reasons, we allow
+# such mappings to be deleted with the -f/--force flag).
+# 5) DM map names may be changed, thus kpartx shouldn't rely on them to
+# check whether a mapping is a partition of a particular device. It is
+# legal for a partition of /dev/loop0 to be named "loop0".
+
+# Note: This program tries hard to clean up, but if tests fail,
+# stale DM or loop devices may keep lurking around.
+
+# Set WORKDIR in environment to existing dir to for persistence
+# WARNING: existing files will be truncated.
+# If empty, test will be done in temporary dir
+: ${WORKDIR:=}
+# Set this environment variable to test an alternative kpartx executable
+: ${KPARTX:=}
+# Options to pass to kpartx always
+: ${KPARTX_OPTS:=-s}
+# Time to wait for device nodes to appear (microseconds)
+# Waiting is only needed if "s" is not in $KPARTX_OPTS
+: ${WAIT_US:=0}
+
+# IMPORTANT: The ERR trap is essential for this program to work correctly!
+#trap 'LINE=$LINENO; trap - ERR; echo "== error in $BASH_COMMAND on line $LINE ==" >&2; ls -la /dev/mapper; read a; exit 1' ERR
+trap 'cleanup' 0
+
+CLEANUP=:
+cleanup() {
+ trap - ERR
+ trap - 0
+ if [[ $OK ]]; then
+ echo == all ${ALL_PASS} tests completed successfully == >&2
+ else
+ printf "== Final Results ==\n%s of %s failed!\n\n" "${ALL_FAIL}" "$(( ALL_PASS + ALL_FAIL ))" >&2
+ fi
+ eval "$CLEANUP" &>/dev/null
+}
+
+push_cleanup() {
+ CLEANUP="$@;$CLEANUP"
+}
+
+pop_cleanup() {
+ # CAUTION: simplistic
+ CLEANUP=${CLEANUP#*;}
+}
+
+step() {
+ STEP="$@"
+
+ if [ $PASS -gt 0 -o $FAIL -gt 0 ]
+ then
+ printf "PASS: %s FAIL: %s\n\n" "${PASS}" "${FAIL}"
+ PASS=0
+ FAIL=0
+ fi
+
+ echo == Test step: $STEP == >&2
+}
+
+mk_partitions() {
+ parted -s $1 mklabel msdos
+ parted -s -- $1 mkpart prim ext2 1MiB -1s
+}
+
+wipe_ptable() {
+ dd if=/dev/zero of=$1 bs=1b count=1
+}
+
+usleep() {
+ if which usleep >/dev/null 2>&1
+ then
+ env usleep "${1}"
+ else
+ sleep $( echo "${1}" / 1000000.0 | bc )
+ fi
+}
+
+invoke_kpartx() {
+ $KPARTX $KPARTX_OPTS "${@}"
+ usleep "${WAIT_US}"
+}
+
+assert_exists() {
+ local result=0
+ while [ "${1}" ]
+ do
+ if [ -b "$(readlink -f "${1}")" ]
+ then
+ PASS=$(( PASS + 1 ))
+ ALL_PASS=$(( ALL_PASS + 1 ))
+ else
+ FAIL=$(( FAIL + 1 ))
+ ALL_FAIL=$(( ALL_FAIL + 1 ))
+ echo "assert_exists: Device does not exist when it should: ${1}"
+ result=1
+ fi
+ shift
+ done
+ return $result
+}
+
+assert_unexists() {
+ local result=0
+ while [ "${1}" ]
+ do
+ if [ ! -b "$(readlink -f "${1}")" ]
+ then
+ PASS=$(( PASS + 1 ))
+ ALL_PASS=$(( ALL_PASS + 1 ))
+ else
+ FAIL=$(( FAIL + 1 ))
+ ALL_FAIL=$(( ALL_FAIL + 1 ))
+ echo "assert_exists: Device exists when it should not: ${1}"
+ result=1
+ fi
+ shift
+ done
+ return $result
+}
+
+PASS=0
+ALL_PASS=0
+FAIL=0
+ALL_FAIL=0
+
+step preparation
+
+[[ $UID -eq 0 ]]
+[[ $KPARTX ]] || {
+ if [[ -x $PWD/kpartx/kpartx ]]; then
+ KPARTX=$PWD/kpartx/kpartx
+ else
+ KPARTX=$(which kpartx)
+ fi
+}
+[[ $KPARTX ]]
+
+FILE1=kpartx1
+FILE2=kpartx2
+FILE3=kpartx3
+FILE4=kpartx4
+
+SIZE=$((1024*1024*1024)) # use bytes as units here
+SECTSIZ=512
+OFFS=32 # offset of linear mapping into dev, sectors
+VG=kpvg # volume group name
+LV=kplv # logical vol name
+LVMCONF='devices { filter = [ "a|/dev/loop.*|", r".*" ] }'
+
+OK=
+
+[[ $WORKDIR ]] || {
+ WORKDIR=$(mktemp -d /tmp/kpartx-XXXXXX)
+ push_cleanup 'rm -rf $WORKDIR'
+}
+
+push_cleanup "cd $PWD"
+cd "$WORKDIR"
+
+step "create loop devices"
+truncate -s $SIZE $FILE1
+truncate -s $SIZE $FILE2
+truncate -s $SIZE $FILE3
+truncate -s $SIZE $FILE4
+
+LO1=$(losetup -f $FILE1 --show)
+push_cleanup 'losetup -d $LO1'
+LO2=$(losetup -f $FILE2 --show)
+push_cleanup 'losetup -d $LO2'
+LO3=$(losetup -f $FILE3 --show)
+push_cleanup 'losetup -d $LO3'
+LO4=$(losetup -f $FILE4 --show)
+push_cleanup 'losetup -d $LO4'
+
+[[ $LO1 && $LO2 && $LO3 && $LO4 && -b $LO1 && -b $LO2 && -b $LO3 && -b $LO4 ]]
+DEV1=$(stat -c "%t:%T" $LO1)
+DEV2=$(stat -c "%t:%T" $LO2)
+DEV3=$(stat -c "%t:%T" $LO3)
+
+usleep $WAIT_US
+
+step "create DM devices (spans)"
+# Create two linear mappings spanning two loopdevs.
+# One of them gets a pathological name colliding with
+# the loop device name.
+# These mappings must not be removed by kpartx.
+# They also serve as DM devices to test partition removal on those.
+
+TABLE="\
+0 $((SIZE/SECTSIZ-OFFS)) linear $DEV1 $OFFS
+$((SIZE/SECTSIZ-OFFS)) $((SIZE/SECTSIZ-OFFS)) linear $DEV2 $OFFS"
+
+SPAN1=kpt
+SPAN2=$(basename $LO2)
+dmsetup create $SPAN1 <<<"$TABLE"
+push_cleanup 'dmsetup remove -f $SPAN1'
+
+dmsetup create $SPAN2 <<<"$TABLE"
+push_cleanup 'dmsetup remove -f $SPAN2'
+
+# This is a non-kpartx pseudo "partition" mapping
+USER1=user1
+push_cleanup 'dmsetup remove -f $USER1'
+dmsetup create $USER1 <<EOF
+0 $((SIZE/SECTSIZ-OFFS)) linear $DEV1 $OFFS
+EOF
+
+usleep $WAIT_US
+assert_exists /dev/mapper/$SPAN1 /dev/mapper/$SPAN2 /dev/mapper/$USER1
+[[ -b /dev/mapper/$SPAN1 ]]
+[[ -b /dev/mapper/$SPAN2 ]]
+[[ -b /dev/mapper/$USER1 ]]
+
+step "create vg on $LO3"
+# On the 3rd loop device, we create a VG and an LV
+# The LV should not be removed by kpartx.
+pvcreate --config "$LVMCONF" -f $LO3
+vgcreate --config "$LVMCONF" $VG $LO3
+push_cleanup 'vgremove --config "$LVMCONF" -f $VG'
+lvcreate --config "$LVMCONF" -L $((SIZE/2))B -n $LV $VG
+push_cleanup 'lvremove --config "$LVMCONF" -f $VG/$LV'
+usleep $WAIT_US
+
+assert_exists /dev/mapper/$VG-$LV
+[[ -b /dev/mapper/$VG-$LV ]]
+
+# dmsetup table /dev/mapper/$VG-$LV
+# dmsetup info /dev/mapper/$VG-$LV
+
+step "create partitions on loop devices"
+
+mk_partitions $LO1
+mk_partitions $LO2
+mk_partitions $LO4
+
+# Test invocation of kpartx with regular file here
+LO2P1=/dev/mapper/$(basename $LO2)-foo1
+invoke_kpartx -a -p -foo $FILE2
+assert_exists $LO2P1
+[[ -b $LO2P1 ]]
+push_cleanup 'dmsetup remove -f $(basename $LO2P1)'
+
+step "remove partitions with deleted ptable"
+wipe_ptable $LO2
+invoke_kpartx -d $LO2
+assert_unexists $LO2P1
+
+mk_partitions $LO2
+invoke_kpartx -a -p -foo $FILE2
+assert_exists $LO2P1
+
+LO1P1=/dev/mapper/$(basename $LO1)-eggs1
+invoke_kpartx -a -p -eggs $LO1
+push_cleanup 'dmsetup remove -f $(basename $LO1P1)'
+
+usleep $WAIT_US
+assert_exists $LO1P1 $LO2P1
+
+# dmsetup info $LO2P1
+
+# Set pathological name for partition on $LO1 (same as loop device itself)
+dmsetup rename $(basename $LO1P1) $(basename $LO1)
+LO1P1=/dev/mapper/$(basename $LO1)
+pop_cleanup
+push_cleanup 'dmsetup remove -f $(basename $LO1P1)'
+
+# dmsetup info $LO1P1
+
+step "create partitions on DM devices"
+mk_partitions /dev/mapper/$SPAN2
+
+invoke_kpartx -a -p -bar /dev/mapper/$SPAN2
+SPAN2P1=/dev/mapper/${SPAN2}-bar1
+
+# udev rules may have created partition mappings without UUIDs
+# which aren't removed by default (if system standard kpartx doesn't
+# set the UUID). Remove them using -f
+push_cleanup 'invoke_kpartx -f -d /dev/mapper/$SPAN2'
+push_cleanup 'dmsetup remove -f $(basename $SPAN2P1)'
+
+invoke_kpartx -a -p -spam /dev/mapper/$SPAN1
+SPAN1P1=/dev/mapper/${SPAN1}-spam1
+# see above
+push_cleanup 'invoke_kpartx -f -d /dev/mapper/$SPAN1'
+push_cleanup 'dmsetup remove -f $(basename $SPAN1P1)'
+
+usleep $WAIT_US
+assert_exists $SPAN2P1 $SPAN1P1
+
+step "rename partitions on DM device to default"
+invoke_kpartx -u /dev/mapper/$SPAN1
+assert_unexists $SPAN1P1
+# This assumes that $SPAN1 ends in a non-digit
+assert_exists ${SPAN1P1//-spam/}
+
+step "rename partitions on DM device back from default"
+invoke_kpartx -u -p -spam /dev/mapper/$SPAN1
+assert_exists $SPAN1P1
+assert_unexists ${SPAN1P1//-spam/}
+
+step "delete partitions on DM devices"
+invoke_kpartx -d /dev/mapper/$SPAN1 >&2
+usleep $WAIT_US
+
+assert_exists $SPAN2P1 $LO1P1 $LO2P1
+assert_unexists $SPAN1P1
+
+invoke_kpartx -d /dev/mapper/$SPAN2
+usleep $WAIT_US
+
+assert_exists $LO1P1 $LO2P1
+assert_unexists $SPAN2P1
+
+step "rename partitions on loop device"
+invoke_kpartx -u -p -spam $LO2
+assert_unexists $LO2P1
+assert_exists ${LO2P1//-foo/-spam}
+
+step "rename partitions on loop device back"
+invoke_kpartx -u -p -foo $LO2
+assert_exists $LO2P1
+assert_unexists ${LO2P1//-foo/-spam}
+
+step "rename partitions on loop device to default"
+invoke_kpartx -u $LO2
+#read a
+assert_unexists $LO2P1
+assert_exists ${LO2P1//-foo/p}
+# $LO1 ends in a digit
+
+step "rename partitions on loop device back from default"
+invoke_kpartx -u -p -foo $LO2
+assert_exists $LO2P1
+assert_unexists ${LO2P1//-foo/p}
+
+step "rename partitions on loop devices"
+invoke_kpartx -u -p spam $LO2
+
+step "delete partitions on loop devices"
+
+invoke_kpartx -d $LO3
+
+# This will also delete the loop device
+invoke_kpartx -d $FILE2
+invoke_kpartx -d $LO1
+usleep $WAIT_US
+
+# ls -l /dev/mapper
+assert_unexists $LO1P1
+pop_cleanup
+assert_unexists $LO2P1
+pop_cleanup
+# spans should not have been removed
+# LVs neither
+assert_exists /dev/mapper/$SPAN1 /dev/mapper/$SPAN2 /dev/mapper/$USER1 /dev/mapper/$VG-$LV
+
+step "delete partitions on $LO3 with -f"
+
+invoke_kpartx -f -d $LO3
+# -d -f should delete the LV, too
+assert_unexists /dev/mapper/$VG-$LV
+assert_exists /dev/mapper/$SPAN1 /dev/mapper/$SPAN2
+
+step "test kpartx creation/deletion on an image file with no existing loopdev"
+losetup -d $LO4
+
+OUTPUT=$(invoke_kpartx -v -a $FILE4 2>&1)
+read loop dm < \
+ <(sed -n 's/^add map \(loop[0-9]*\)p1 ([0-9]*:\([0-9]*\)).*$/\1 dm-\2/p' \
+ <<<$OUTPUT)
+[[ $dm && $loop ]]
+push_cleanup "dmsetup remove -f /dev/$dm"
+push_cleanup "losetup -d /dev/$loop"
+
+assert_exists /dev/mapper/${loop}p1
+invoke_kpartx -d $FILE4
+assert_unexists /dev/mapper/${loop}p1
+# /dev/$loop is _not_ automatically deleted
+assert_exists /dev/${loop}
+
+[ $ALL_FAIL -eq 0 ] && OK=yes
diff --git a/user/kpat/APKBUILD b/user/kpat/APKBUILD
index f893118b1..e0eeb04fa 100644
--- a/user/kpat/APKBUILD
+++ b/user/kpat/APKBUILD
@@ -1,23 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kpat
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Collection of card games for KDE"
url="https://games.kde.org/game.php?game=kpat"
arch="all"
+options="!check" # Requires running X11
license="GPL-2.0-only"
depends="libkdegames-carddecks"
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
kcompletion-dev kconfigwidgets-dev kcoreaddons-dev kcrash-dev ki18n-dev
kdbusaddons-dev kdoctools-dev kguiaddons-dev kio-dev knewstuff-dev
kwidgetsaddons-dev kxmlgui-dev libkdegames-dev shared-mime-info
- freecell-solver-dev"
+ black-hole-solver-dev freecell-solver-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kpat-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kpat-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +28,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="4fcd9860ac7e1d1069bd1f1e46943fe1695c0e7080b91c9b320fefd0bac4a782b95f9b20440a1a1409a2ea9f131050ea121e0f4ff935db471044cf9320b5bc96 kpat-18.12.3.tar.xz"
+sha512sums="ec58f30b56ffd115245b6df312f1d5362024338728c92de1b7868ea4b580ed728e2c658aee8c1713ad6c395dc2654bbbc7926cef52fbf550d5a92099d3b54607 kpat-22.04.2.tar.xz"
diff --git a/user/kpeople/APKBUILD b/user/kpeople/APKBUILD
index d6db40186..186200857 100644
--- a/user/kpeople/APKBUILD
+++ b/user/kpeople/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kpeople
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Provides access to all contacts and groups them by physical person"
url="https://api.kde.org/frameworks/kpeople/html/index.html"
@@ -14,12 +14,9 @@ depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev kcoreaddons-dev ki18n-dev
makedepends="$depends_dev cmake extra-cmake-modules python3 doxygen graphviz
qt5-qttools-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kpeople-$pkgver.tar.xz
- dont-crash-test.patch
- "
+source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kpeople-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -31,19 +28,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="8f4709cfb256eb7f836d64ee5dcec9962323a8d2d4b362a01fb140af53b7b16db5dd6bd4c8246af67086bee4e2baa9b40e66e877486900c32eb51cb3483a899c kpeople-5.54.0.tar.xz
-77df2aefcdfb8e5b9c2fef7a6bfd79066819b0c6958b9e2f8fe94860155aaae9c284a110a15a189cd5b423dc7aa017b952196370f60a4fb382ed7eb77f15abd9 dont-crash-test.patch"
+sha512sums="257765a7591759118a5b76e66c67e7eb5bd2b2eaef9dce1eb7694824081ea830a87cce90465d1920961dac969fc33a8763afe1ea6080ee9f4b907fb3000a8be3 kpeople-5.94.0.tar.xz"
diff --git a/user/kpeople/dont-crash-test.patch b/user/kpeople/dont-crash-test.patch
deleted file mode 100644
index e133618be..000000000
--- a/user/kpeople/dont-crash-test.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff --git a/autotests/personsmodeltest.cpp b/autotests/personsmodeltest.cpp
-index 3e5b9a5..ee2123b 100644
---- a/autotests/personsmodeltest.cpp
-+++ b/autotests/personsmodeltest.cpp
-@@ -119,6 +119,7 @@ void PersonsModelTest::gettersTests()
- {
- // Find the index for "kpeople://1" using the QAIModel method
- QModelIndexList indexList = m_model->match(m_model->index(0,0,QModelIndex()), KPeople::PersonsModel::PersonUriRole, QVariant(QStringLiteral("kpeople://1")), 1);
-+ QCOMPARE(indexList.isEmpty(), false);
- QModelIndex personIndex = indexList.first();
-
- // Now get the index using our method
diff --git a/user/kphotoalbum/APKBUILD b/user/kphotoalbum/APKBUILD
index 86590bce3..a5681909b 100644
--- a/user/kphotoalbum/APKBUILD
+++ b/user/kphotoalbum/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kphotoalbum
-pkgver=5.4
-pkgrel=1
+pkgver=5.8.1
+pkgrel=0
pkgdesc="Versatile photo album software by KDE"
url="https://www.kphotoalbum.org/"
arch="all"
@@ -11,12 +11,12 @@ depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev phonon-dev karchive-dev
kcompletion-dev kconfig-dev kcoreaddons-dev kdoctools-dev ki18n-dev
kiconthemes-dev kjobwidgets-dev exiv2-dev ktextwidgets-dev kxmlgui-dev
- kwidgetsaddons-dev libjpeg-turbo-dev kio-dev libkipi-dev libkdcraw-dev"
+ kwidgetsaddons-dev libjpeg-turbo-dev kio-dev libkipi-dev libkdcraw-dev
+ marble-dev purpose-dev"
subpackages="$pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/kphotoalbum/$pkgver/kphotoalbum-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,19 +26,16 @@ build() {
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
- -DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ QT_QPA_PLATFORM=offscreen CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d528905f3af9d23c89c89f902abe8358f8e90c402e437bc7cdd67837649f5dcd7f7416c77cc824532f928f41e7590f6005f13c97be4d608e433aad285a6a8bba kphotoalbum-5.4.tar.xz"
+sha512sums="3a9eec3a12cd95c7bb0806185d7937346acd68ff29858f3cbbe5d4c0c350ff84f55282231dd3800fc5393d72d5563aa7207ec68122057079ba20e82239c6181c kphotoalbum-5.8.1.tar.xz"
diff --git a/user/kpimtextedit/APKBUILD b/user/kpimtextedit/APKBUILD
index ed683d6b7..ba080a4f0 100644
--- a/user/kpimtextedit/APKBUILD
+++ b/user/kpimtextedit/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kpimtextedit
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Text editor for Personal Information Managers (PIMs)"
url="https://pim.kde.org/"
@@ -16,10 +16,9 @@ makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev ki18n-dev
kdesignerplugin-dev kemoticons-dev kiconthemes-dev kio-dev kxmlgui-dev
qt5-qtspeech-dev"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kpimtextedit-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kpimtextedit-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -30,18 +29,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="c3f4d3143a56cad623a5fb514c2234e4f00c07f395e72648ed3429a88631e3c752ea55d321fe55584f1846d3f97fabf3796ce3883cba06238f00e735028853bb kpimtextedit-18.12.3.tar.xz"
+sha512sums="68a89125dbd4c45b2db825af3cea3c8bf38028f26eca021fc61d8982f25ce33722f0da3cf1d8f0f0f4b9d2e8e5613f0af6010756f064e89fabd305a905521443 kpimtextedit-22.04.2.tar.xz"
diff --git a/user/kplotting/APKBUILD b/user/kplotting/APKBUILD
index 89f78f698..02693bb0d 100644
--- a/user/kplotting/APKBUILD
+++ b/user/kplotting/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kplotting
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for data plotting functions"
url="https://www.kde.org/"
@@ -16,7 +16,6 @@ subpackages="$pkgname-dev $pkgname-doc"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kplotting-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="85cec93bd25a673bcaed993c9130529c1f16e726b3c40f84395f1c2e4810b85503dc3f015ef5cdc1289b793cc19abd956d54a61c2f8e1626ab73b9112107b61d kplotting-5.54.0.tar.xz"
+sha512sums="a4472b15bcdfc71f538193e95b8065f18717a85259b033823b31f48b2dcc73eddf5d380459b00ec27ae8922add16176bdaf78adf958be6226845a5cf5d72a653 kplotting-5.94.0.tar.xz"
diff --git a/user/kpmcore/APKBUILD b/user/kpmcore/APKBUILD
index 102059e09..eb401b59c 100644
--- a/user/kpmcore/APKBUILD
+++ b/user/kpmcore/APKBUILD
@@ -1,21 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kpmcore
-pkgver=3.3.0
+pkgver=22.04.2
pkgrel=0
pkgdesc="Core routines for KDE Partition Manager"
-url="https://www.kde.org/applications/system/kdepartitionmanager"
+url="https://www.kde.org/applications/system/partitionmanager"
arch="all"
license="LGPL-2.1+"
depends=""
depends_dev="libatasmart-dev parted-dev qt5-qtbase-dev"
makedepends="$depends_dev cmake extra-cmake-modules kcoreaddons-dev ki18n-dev
- kwidgetsaddons-dev util-linux-dev"
+ kwidgetsaddons-dev util-linux-dev kauth-dev qca-dev"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.kde.org/stable/kpmcore/$pkgver/src/kpmcore-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kpmcore-$pkgver.tar.xz
+ filesystem.patch
+ test.patch
+ "
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +28,18 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="62a0a341fbbec426291e2c9dd183a20466fce48ffaa360dd816c58402ee03c1f61c4ef7887d0a66c4693d77c2183a5da3477b828ba4ac2ed405f684ffb27125e kpmcore-3.3.0.tar.xz"
+sha512sums="3ce043daccbe5a2d56f6fd849a3b8c6518b49c4c47db1989f7cea60282e63f430047815f6ff7c1a9a4195d9b06d2ad3ec357bc3ed66fef80b253762aea099f15 kpmcore-22.04.2.tar.xz
+f8553feb7b73ef3f8e4212b5831354d81c036406ed867805b125a3b1ee24e8df7e524c530d4fb3c4131246342c6ec272dfff074473d8e72e5ff407096806527b filesystem.patch
+547803c36e333a39ad3500e3896cfb407ba8dd15cf08f329c748979c42e3f33a4b1940a11c02d532d00414d6d8f7fa564bb78df986ab9ebf0c62d63a64b4edc7 test.patch"
diff --git a/user/kpmcore/filesystem.patch b/user/kpmcore/filesystem.patch
new file mode 100644
index 000000000..931f44722
--- /dev/null
+++ b/user/kpmcore/filesystem.patch
@@ -0,0 +1,10 @@
+--- kpmcore-22.04.2/src/util/CMakeLists.txt.old 2022-06-03 15:45:10.000000000 -0500
++++ kpmcore-22.04.2/src/util/CMakeLists.txt 2022-06-12 16:01:45.750000000 -0500
+@@ -53,6 +53,7 @@
+ Qt${QT_MAJOR_VERSION}::DBus
+ KF5::I18n
+ PolkitQt${QT_MAJOR_VERSION}-1::Core
++ stdc++fs
+ )
+
+ install(TARGETS kpmcore_externalcommand DESTINATION ${KDE_INSTALL_LIBEXECDIR})
diff --git a/user/kpmcore/test.patch b/user/kpmcore/test.patch
new file mode 100644
index 000000000..e969cb91d
--- /dev/null
+++ b/user/kpmcore/test.patch
@@ -0,0 +1,42 @@
+From 26e069d6cdd2d28b04f0beb9cfb35115ac8f29d5 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Sun, 12 Jun 2022 16:14:51 -0500
+Subject: [PATCH] Tests: Fix backend loading for tests
+
+Using $<TARGET_FILE> we receive the entire plugin file path, leading to
+errors such as:
+
+kf.coreaddons: no metadata found in "kpmcore//home/awilcox/Code/KDE/kpmcore/bin/kpmcore/pmdummybackendplugin.so" "The shared library was not found."
+
+Using $<TARGET_FILE_NAME> instead we are able to have just the plugin
+name, which does load properly. The tests now pass.
+---
+ test/CMakeLists.txt | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
+index 262c38f..53cb133 100644
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -34,15 +34,15 @@ endmacro()
+ # Tests of initialization: try explicitly loading some backends
+ kpm_test(testinit testinit.cpp) # Default backend
+ if(TARGET pmdummybackendplugin)
+- add_test(NAME testinit-dummy COMMAND testinit $<TARGET_FILE:pmdummybackendplugin>)
++ add_test(NAME testinit-dummy COMMAND testinit $<TARGET_FILE_NAME:pmdummybackendplugin>)
+ endif()
+ if(TARGET pmsfdiskbackendplugin)
+- add_test(NAME testinit-sfdisk COMMAND testinit $<TARGET_FILE:pmsfdiskbackendplugin>)
++ add_test(NAME testinit-sfdisk COMMAND testinit $<TARGET_FILE_NAME:pmsfdiskbackendplugin>)
+ else()
+ return() # All the rest really needs a working backend
+ endif()
+
+-set(BACKEND $<TARGET_FILE:pmsfdiskbackendplugin>)
++set(BACKEND $<TARGET_FILE_NAME:pmsfdiskbackendplugin>)
+
+ ###
+ #
+--
+GitLab
+
diff --git a/user/kpty/APKBUILD b/user/kpty/APKBUILD
index 51989384f..abe2549d5 100644
--- a/user/kpty/APKBUILD
+++ b/user/kpty/APKBUILD
@@ -1,21 +1,21 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kpty
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for implementing terminal emulation"
url="https://www.kde.org/"
arch="all"
license="LGPL-2.1-only GPL-2.0+"
-depends=""
+depends="libutempter"
depends_dev="qt5-qtbase-dev kcoreaddons-dev ki18n-dev libutempter-dev"
+docdepends="kcoreaddons-doc"
makedepends="$depends_dev cmake extra-cmake-modules python3 doxygen graphviz
- qt5-qttools-dev"
+ qt5-qttools-dev $docdepends"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kpty-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +28,16 @@ build() {
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
-DUTEMPTER_EXECUTABLE=/usr/lib/utempter/utempter \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="1eb83b3034d950a7561a043f68eea17322f6547a19f399bd500c9ce28bdf02b86d60ed6b4aa976ae4b75cb674ebaa3e4c9c1642601d4470b884ba4ca0ba249c6 kpty-5.54.0.tar.xz"
+sha512sums="d3f5f2c1bf73fed79e1dc9735635b4241f4e3ef113bde76c997f26a0471ee483457fd694a2a2861838f6240ec9831c9c391aff8d69490a90a73b021a2c506562 kpty-5.94.0.tar.xz"
diff --git a/user/kquickcharts/APKBUILD b/user/kquickcharts/APKBUILD
new file mode 100644
index 000000000..99ae441fb
--- /dev/null
+++ b/user/kquickcharts/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kquickcharts
+pkgver=5.94.0
+pkgrel=0
+pkgdesc="A QtQuick plugin providing high-performance charts"
+url="https://www.kde.org/"
+arch="all"
+options="!check" # Requires X11
+license="LGPL-2.1+"
+depends=""
+depends_dev="qt5-qtbase-dev"
+makedepends="$depends_dev qt5-qtdeclarative-dev qt5-qtquickcontrols2-dev cmake
+ extra-cmake-modules"
+subpackages="$pkgname-dev"
+source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kquickcharts-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="5877118f4d088a256eab6dbff6efcd88b25b7117d6be4f0debc6af5fe9244836fe683658a5593ee53e94d33ff08b48a31631605c5eae63827864432fd4c4d88b kquickcharts-5.94.0.tar.xz"
diff --git a/user/krb5-conf/APKBUILD b/user/krb5-conf/APKBUILD
index 7d9b6b91c..1597688a6 100644
--- a/user/krb5-conf/APKBUILD
+++ b/user/krb5-conf/APKBUILD
@@ -14,8 +14,6 @@ options="!check" # Single config file.
license="MIT"
depends=""
makedepends=""
-install=""
-subpackages=""
source=""
replaces="heimdal krb5-libs"
diff --git a/user/krb5/APKBUILD b/user/krb5/APKBUILD
index 24269bd32..030f62fe3 100644
--- a/user/krb5/APKBUILD
+++ b/user/krb5/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=krb5
-pkgver=1.17
+pkgver=1.21.2
pkgrel=0
case $pkgver in
*.*.*) _ver=${pkgver%.*};;
@@ -9,17 +9,16 @@ esac
pkgdesc="The Kerberos network authentication system"
url="http://web.mit.edu/kerberos/www/"
arch="all"
-options="suid !check" # Tests require Python 2.
+options="suid !check" # FIXME
license="MIT"
depends="krb5-conf"
depends_dev="e2fsprogs-dev"
makedepends="$depends_dev keyutils-dev libverto-dev openssl-dev
byacc flex perl"
+checkdepends="python3"
subpackages="$pkgname-dev $pkgname-doc $pkgname-pkinit $pkgname-server
$pkgname-libs"
-source="http://web.mit.edu/kerberos/dist/krb5/${_ver}/krb5-$pkgver.tar.gz
- mit-krb5_krb5-config_LDFLAGS.patch
-
+source="https://web.mit.edu/kerberos/dist/krb5/${_ver}/krb5-$pkgver.tar.gz
krb5kadmind.initd
krb5kdc.initd
krb5kpropd.initd
@@ -45,6 +44,23 @@ build() {
make
}
+check() {
+ cd "$builddir"/src
+
+ # temporarily skip tests that fail to run out of the box
+ # (refer to comments on !743)
+ sed -i tests/Makefile \
+ -e '/^SUBDIRS =/s@gssapi@@g' \
+ -e '/t_keytab/d' \
+ ;
+ make check
+
+ # manually run skipped tests
+ make -C tests/gssapi check
+ #PYTHONPATH=util python3 tests/t_keytab.py -v
+}
+
+
package() {
cd "$builddir"/src
make install DESTDIR="$pkgdir"
@@ -87,8 +103,7 @@ libs() {
mv "$pkgdir"/usr/lib "$subpkgdir"/usr/
}
-sha512sums="7462a578b936bd17f155a362dbb5d388e157a80a096549028be6c55400b11361c7f8a28e424fd5674801873651df4e694d536cae66728b7ae5e840e532358c52 krb5-1.17.tar.gz
-5a3782ff17b383f8cd0415fd13538ab56afd788130d6ad640e9f2682b7deaae7f25713ce358058ed771091040dccf62a3bc87e6fd473d505ec189a95debcc801 mit-krb5_krb5-config_LDFLAGS.patch
+sha512sums="4e09296b412383d53872661718dbfaa90201e0d85f69db48e57a8d4bd73c95a90c7ec7b6f0f325f6bc967f8d203b256b071c0191facf080aca0e2caec5d0ac49 krb5-1.21.2.tar.gz
43b9885b7eb8d0d60920def688de482f2b1701288f9acb1bb21dc76b2395428ff304961959eb04ba5eafd0412bae35668d6d2c8223424b9337bc051eadf51682 krb5kadmind.initd
ede15f15bbbc9d0227235067abe15245bb9713aea260d397379c63275ce74aea0db6c91c15d599e40c6e89612d76f3a0f8fdd21cbafa3f30d426d4310d3e2cec krb5kdc.initd
45be0d421efd41e9dd056125a750c90856586e990317456b68170d733b03cba9ecd18ab87603b20e49575e7839fb4a6d628255533f2631f9e8ddb7f3cc493a90 krb5kpropd.initd"
diff --git a/user/krb5/mit-krb5_krb5-config_LDFLAGS.patch b/user/krb5/mit-krb5_krb5-config_LDFLAGS.patch
deleted file mode 100644
index 1b8508673..000000000
--- a/user/krb5/mit-krb5_krb5-config_LDFLAGS.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-Bug #448778
---- krb5-1.11/src/build-tools/krb5-config.in 2012-12-18 02:47:04.000000000 +0000
-+++ krb5-1.11/src/build-tools/krb5-config.in 2012-12-28 07:13:16.582693363 +0000
-@@ -217,7 +217,7 @@
- -e 's#\$(PROG_RPATH)#'$libdir'#' \
- -e 's#\$(PROG_LIBPATH)#'$libdirarg'#' \
- -e 's#\$(RPATH_FLAG)#'"$RPATH_FLAG"'#' \
-- -e 's#\$(LDFLAGS)#'"$LDFLAGS"'#' \
-+ -e 's#\$(LDFLAGS)##' \
- -e 's#\$(PTHREAD_CFLAGS)#'"$PTHREAD_CFLAGS"'#' \
- -e 's#\$(CFLAGS)##'`
-
diff --git a/user/krdc/APKBUILD b/user/krdc/APKBUILD
index 950ac7ed8..b49bd1056 100644
--- a/user/krdc/APKBUILD
+++ b/user/krdc/APKBUILD
@@ -1,9 +1,9 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=krdc
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
-pkgdesc="View and control remote desktops (RDP and VNC)"
+pkgdesc="View and control remote desktops (VNC)"
url="https://www.kde.org/applications/internet/krdc/"
arch="all"
license="GPL-2.0-only"
@@ -14,10 +14,9 @@ makedepends="cmake extra-cmake-modules kcmutils-dev kdnssd-dev kiconthemes-dev
kcompletion-dev kwallet-dev kwidgetsaddons-dev knotifyconfig-dev
libvncserver-dev $depends_dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/krdc-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/krdc-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ -DWITH_RDP:BOOL=OFF \
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="eeb48eb968e1cb54a76d82dff1eec001b880456d2cd52f33dea6be6e3fb08186e25af89ee9a89e077e91ce0a0ebaa522bc453d5137e384018489ffc1f8382927 krdc-18.12.3.tar.xz"
+sha512sums="56e87131310708d81de044240917f6afa6d332209ef0468f73b944f3b5781e27b9adbb1b9bdde735d8a9aa5adf73f0c7142f37716b84e59307b39a31872db3fb krdc-22.04.2.tar.xz"
diff --git a/user/kreversi/APKBUILD b/user/kreversi/APKBUILD
index 870c1d082..6c0af1f30 100644
--- a/user/kreversi/APKBUILD
+++ b/user/kreversi/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kreversi
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Reversi game"
url="https://games.kde.org/game.php?game=kreversi"
@@ -13,10 +13,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
kdbusaddons-dev kdeclarative-dev ki18n-dev kiconthemes-dev kio-dev
kxmlgui-dev kwidgetsaddons-dev libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kreversi-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kreversi-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="fb3fd6a6e855701196cdd34d0e4611ce9e23cb51c2b461defc2c93e523dcd422bb02d5bb1b47fc376071de41bc6909b614b1e0389fc8e0210fffc7472f144deb kreversi-18.12.3.tar.xz"
+sha512sums="e03af9b941afe05fd4768b45ce4a19f0f98e7770926e209f80830c99e7c341f42d4df4f74f9884cbee261769bbed47ae707e1b2b4d4db163d2c533c2e57037e1 kreversi-22.04.2.tar.xz"
diff --git a/user/krfb/APKBUILD b/user/krfb/APKBUILD
index c9b009993..fc384f1e9 100644
--- a/user/krfb/APKBUILD
+++ b/user/krfb/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=krfb
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Share your screen with others for remote watching or assistance"
url="https://www.kde.org/applications/system/krfb/"
@@ -11,12 +11,12 @@ depends=""
makedepends="cmake qt5-qtbase-dev qt5-qtx11extras-dev extra-cmake-modules
ki18n-dev kcompletion-dev kconfig-dev kcoreaddons-dev kcrash-dev
kdbusaddons-dev kdnssd-dev kdoctools-dev knotifications-dev kwallet-dev
- kwidgetsaddons-dev kxmlgui-dev xcb-util-image-dev libvncserver-dev"
+ kwidgetsaddons-dev kxmlgui-dev xcb-util-image-dev libvncserver-dev
+ plasma-wayland-protocols"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/krfb-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/krfb-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e195d7cfe2f6c3c17b203da1bb0c1cb0709d4192a05b32bf817666183ce7889afc7b64afb54187f795f493ed88531a2de14bac3d7dbe6aacb7618220380fa518 krfb-18.12.3.tar.xz"
+sha512sums="e84448001337988f9c74dbb3d2c714828265d845d3b49784a66f8bd5a0656faa8c5a44189d11ae6b47295291cf068005da34aa140839f430dfa352d580f87016 krfb-22.04.2.tar.xz"
diff --git a/user/krita/APKBUILD b/user/krita/APKBUILD
index c85aaf521..9028f234a 100644
--- a/user/krita/APKBUILD
+++ b/user/krita/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=krita
-pkgver=4.1.5
-pkgrel=1
+pkgver=5.0.8
+pkgrel=0
pkgdesc="Digital painting program by KDE"
url="https://krita.org/"
arch="all"
@@ -15,18 +15,13 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev karchive-dev kconfig-dev
qt5-qtsvg-dev qt5-qtmultimedia-dev kcrash-dev libice-dev libx11-dev
libxcb-dev fftw-dev libpng-dev boost-dev tiff-dev libjpeg-turbo-dev
kio-dev eigen-dev exiv2-dev lcms2-dev poppler-qt5-dev gsl-dev libxi-dev
- libraw-dev"
+ libraw-dev quazip-dev giflib-dev poppler-dev"
subpackages="$pkgname-lang"
-source="https://download.kde.org/stable/krita/$pkgver/krita-$pkgver.tar.gz"
-
-prepare() {
- cd "$builddir"
- default_prepare
- mkdir -p build
-}
+source="https://download.kde.org/stable/krita/$pkgver/krita-$pkgver.tar.gz
+ fix-nullptr-deref.patch
+ "
build() {
- cd "$builddir"/build
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -38,19 +33,19 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DEIGEN3_INCLUDE_DIR=/usr/include/eigen3 \
+ -DBUILD_TESTING=False \
${CMAKE_CROSSOPTS} \
- ..
- make
+ -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="7790e3e61c18f5a2f5ba0c5d08f09bf78bcfba563b46751689db00814b9775db85cc64c162aa1c1dc47b5e73e49598b24e6a4599b8350a9e07c15aa4eb463499 krita-4.1.5.tar.gz"
+sha512sums="b4fe87e59e2bba51f78169a6925ea6572ce831b7110a82fba27bc9feda8555511b890f5aa560289f39c1e2d4e2377f92035841f225be19306d8a89dec07a5f23 krita-5.0.8.tar.gz
+fd43f21da937c29f550e24d459e83ad9714befe82fe0cae493b28cad6526b11f80a5e3d350be1fa910a62c07284774a6f5fac4bbf4801be378987fbfaef61254 fix-nullptr-deref.patch"
diff --git a/user/krita/fix-nullptr-deref.patch b/user/krita/fix-nullptr-deref.patch
new file mode 100644
index 000000000..07c1536a0
--- /dev/null
+++ b/user/krita/fix-nullptr-deref.patch
@@ -0,0 +1,73 @@
+From 97c03e0f3314dae5520deb901dda73d1cf8df201 Mon Sep 17 00:00:00 2001
+From: "Lamarque V. Souza" <lamarque@kde.org>
+Date: Sat, 30 Nov 2019 20:12:21 -0300
+Subject: [PATCH] Fix crash when starting Krita with Qt compiled in debug mode.
+
+This is the backtrace:
+
+0 0x00007ffff38a11cc in KoColorSet::getGroup(QString const&) () from
+/usr/lib64/libkritapigment.so.18
+1 0x00007ffff3d2aa69 in KisPaletteModel::index(int, int, QModelIndex
+const&) const () from /usr/lib64/libkritawidgets.so.18
+2 0x00007ffff5812796 in
+QAbstractItemView::setModel(QAbstractItemModel*) () from
+/usr/lib64/libQt5Widgets.so.5
+3 0x00007ffff582e749 in QHeaderView::setModel(QAbstractItemModel*) ()
+from /usr/lib64/libQt5Widgets.so.5
+4 0x00007ffff5871493 in QTableView::setModel(QAbstractItemModel*) ()
+from /usr/lib64/libQt5Widgets.so.5
+5 0x00007ffff3d31e17 in
+KisPaletteView::setPaletteModel(KisPaletteModel*) () from
+/usr/lib64/libkritawidgets.so.18
+6 0x00007ffff3d2691e in
+KisDlgInternalColorSelector::KisDlgInternalColorSelector(QWidget*,
+KoColor, KisDlgInternalColorSelector::Config, QString const&,
+KoColorDisplayRendererInterface const*) () from
+/usr/lib64/libkritawidgets.so.18
+7 0x00007ffff7000d67 in
+KoDualColorButton::Private::init(KoDualColorButton*) () from
+/usr/lib64/libkritaui.so.18
+8 0x00007ffff7002c5b in KoDualColorButton::KoDualColorButton(KoColor
+const&, KoColor const&, KoColorDisplayRendererInterface const*,
+QWidget*, QWidget*) ()
+ from /usr/lib64/libkritaui.so.18
+9 0x00007ffff6e2b5b5 in KisControlFrame::setup(QWidget*) () from
+/usr/lib64/libkritaui.so.18
+10 0x00007ffff71014ea in KisViewManager::KisViewManager(QWidget*,
+KActionCollection*) () from /usr/lib64/libkritaui.so.18
+11 0x00007ffff70cb72b in KisMainWindow::KisMainWindow(QUuid) () from
+/usr/lib64/libkritaui.so.18
+12 0x00007ffff70d8352 in KisPart::createMainWindow(QUuid) () from
+/usr/lib64/libkritaui.so.18
+13 0x00007ffff70d85de in KisPart::startBlankSession() () from
+/usr/lib64/libkritaui.so.18
+14 0x00007ffff70995b9 in KisApplication::start(KisApplicationArguments
+const&) () from /usr/lib64/libkritaui.so.18
+15 0x0000555555e4e229 in main ()
+
+The KisPaletteModel::index() call is inside an Q_ASSERT_X in
+QAbstractItemView::setModel(), so you have to compile Qt in debug mode
+to reproduce this crash.
+
+m_rowGroupNameMap is empty during the startup.
+---
+ libs/widgets/KisPaletteModel.cpp | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/libs/widgets/KisPaletteModel.cpp b/libs/widgets/KisPaletteModel.cpp
+index f1c4e71f8b..464c7f0dba 100644
+--- a/libs/widgets/KisPaletteModel.cpp
++++ b/libs/widgets/KisPaletteModel.cpp
+@@ -94,6 +94,9 @@ QModelIndex KisPaletteModel::index(int row, int column, const QModelIndex& paren
+ Q_UNUSED(parent);
+ Q_ASSERT(m_colorSet);
+ int groupNameRow = groupNameRowForRow(row);
++ if (groupNameRow == -1) {
++ return {};
++ }
+ KisSwatchGroup *group = m_colorSet->getGroup(m_rowGroupNameMap[groupNameRow]);
+ Q_ASSERT(group);
+ return createIndex(row, column, group);
+--
+2.24.1
+
diff --git a/user/kronometer/APKBUILD b/user/kronometer/APKBUILD
index c1c33409c..e06dcb3e8 100644
--- a/user/kronometer/APKBUILD
+++ b/user/kronometer/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kronometer
-pkgver=2.2.1
+pkgver=2.2.3
pkgrel=0
pkgdesc="Easy-to-use stopwatch application"
url="https://userbase.kde.org/Kronometer"
@@ -15,7 +15,6 @@ subpackages="$pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/kronometer/$pkgver/src/kronometer-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d635b55c0513427e7c98c7317813fd62886b7fb6aab7cb238ac6ba058ff37c7e9302c46c48e2248fa13e50d32d90a39ddd8d4bb88663a4019cd981f54e46a42c kronometer-2.2.1.tar.xz"
+sha512sums="77f948ae3a03b15a0cd49bc1048897bff0788a4831beff8f336270d8af6ee1a245d2174f5a3adc224257e9f319958197af7900ce8389b312f8fe7cd6c53a71d1 kronometer-2.2.3.tar.xz"
diff --git a/user/kross/APKBUILD b/user/kross/APKBUILD
index d67379691..6ebec3d56 100644
--- a/user/kross/APKBUILD
+++ b/user/kross/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kross
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for scripting KDE applications"
url="https://www.kde.org/"
@@ -15,7 +15,6 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/portingAids/kross-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="eefae897541d4d6c9b1920452a2172c390328a1ecc5a9cf765b8a46f07b8bcf5563727957ed6e3e0da243c4b6550e2aaef78b705af3035be8b6e2d73e193f11b kross-5.54.0.tar.xz"
+sha512sums="51000c2ff7f951230a32965e317865c583ecd174fac9a531c5503ed1aac713f309cb6b7472c2232b9d63de1d3a4e756c9b5483f2c45e71c86639318ae78c60d7 kross-5.94.0.tar.xz"
diff --git a/user/kruler/APKBUILD b/user/kruler/APKBUILD
index 025afb5c9..4a3bd0a0e 100644
--- a/user/kruler/APKBUILD
+++ b/user/kruler/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kruler
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Screen ruler"
url="https://www.kde.org/applications/graphics/kruler/"
@@ -11,10 +11,9 @@ depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kdoctools-dev ki18n-dev
knotifications-dev kwindowsystem-dev kxmlgui-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kruler-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kruler-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,18 +24,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="26c214cd2dd246a76e1133120d5932c4945ae7ffb98f15c60a577471a3bb35295d14a77a953d60facaf659fcfa47da019a39dedfe3267465f65649a4ef66ef6e kruler-18.12.3.tar.xz"
+sha512sums="a1124f586edb1b48c8ed6ff4cb256e51755b590b6c2c626b6a6c2eedd2bf4025c3799c29ca5342014438855b5fe2fc92eefa0b39e5a210fc64edaa2504a2ed9f kruler-22.04.2.tar.xz"
diff --git a/user/krunner/APKBUILD b/user/krunner/APKBUILD
index 9439e4eb9..6e3ebb7e0 100644
--- a/user/krunner/APKBUILD
+++ b/user/krunner/APKBUILD
@@ -1,23 +1,22 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=krunner
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Parallel query system"
url="https://api.kde.org/frameworks/krunner/html/index.html"
arch="all"
options="!check" # Test suite requires DBus and X11 session.
-license="LGPL-2.1-only AND LGPL-2.1+"
+license="LGPL-2.0+"
depends=""
depends_dev="qt5-qtbase-dev kconfig-dev kservice-dev plasma-framework-dev"
makedepends="$depends_dev cmake extra-cmake-modules python3 doxygen graphviz
qt5-qttools-dev qt5-qtdeclarative-dev kcoreaddons-dev ki18n-dev kio-dev
- kpackage-dev threadweaver-dev"
+ kpackage-dev threadweaver-dev kactivities-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/krunner-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,18 +28,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="1ed1590424736d0d38249740435e6a1e289089bdb650b5fc7eaff05c86e296b372a1dc7833f7fbaa8dcf1ca33653d6ff1241929abf8795f87e73ab85ac6299b1 krunner-5.54.0.tar.xz"
+sha512sums="86f2d81e4dbb0d1c716b4d8fc4d0dbda8494fa81bfb305ddc19d7278250fca48c3bc441e7773a27330d8f9888b81e293b5f585921e99ce252541db3ac0467b30 krunner-5.94.0.tar.xz"
diff --git a/user/krusader/APKBUILD b/user/krusader/APKBUILD
index 5e586643b..6ca2b9d4b 100644
--- a/user/krusader/APKBUILD
+++ b/user/krusader/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=krusader
-pkgver=2.7.1
+pkgver=2.7.2
pkgrel=0
pkgdesc="Advanced, twin-panel (commander style) file manager"
url="https://krusader.org/"
@@ -18,7 +18,6 @@ source="https://download.kde.org/stable/krusader/$pkgver/krusader-$pkgver.tar.xz
posix-headers.patch"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,19 +28,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="860908fd960ae45d298ade30bd4962eea44d126b5a3bb28d04540a0e4fbc0645de2394490fdb624b5fcc7005841c0ce392cda896dc4b1d3d2de3a1e44171222d krusader-2.7.1.tar.xz
-6df1a858c896d91d2f09a0cf49a90177655cf21bd7fe18c5b82e0805f81d3c121978b932a2f139d2e0e4ca8d9741d181274b968628e905f87557b6ad43f05a59 posix-headers.patch"
+sha512sums="8af90a9067c7c92abc9dcc866e1eb1e1f1bd2a4c45968c260b6b01cc079d3125d6db6d49b530d90a2f91d3c99c577fa7f1ff47d12abc3400a75e2d52e7ae477b krusader-2.7.2.tar.xz
+2114547837002e76fea1ed68bd47c8db216a7ba292817b2448497c45e8693441750a5e06ce24de188d0f04dc9c765c2cb5b83b04488a0a5247a481084f6091c0 posix-headers.patch"
diff --git a/user/krusader/posix-headers.patch b/user/krusader/posix-headers.patch
index c52d63656..898c514e7 100644
--- a/user/krusader/posix-headers.patch
+++ b/user/krusader/posix-headers.patch
@@ -1,6 +1,6 @@
--- krusader-2.6.0/krusader/FileSystem/krpermhandler.h.old 2017-04-11 12:32:08.000000000 -0500
+++ krusader-2.6.0/krusader/FileSystem/krpermhandler.h 2017-10-12 18:55:51.447922274 -0500
-@@ -39,6 +39,7 @@
+@@ -30,6 +30,7 @@
#include <KIO/Global>
@@ -10,7 +10,7 @@
#include <unistd.h>
--- krusader-2.6.0/krusader/DiskUsage/filelightParts/fileTree.h.old 2017-04-11 12:32:08.000000000 -0500
+++ krusader-2.6.0/krusader/DiskUsage/filelightParts/fileTree.h 2017-10-12 18:56:22.954502133 -0500
-@@ -23,6 +23,7 @@
+@@ -25,6 +25,7 @@
#include <KIO/Global>
diff --git a/user/kscreen/APKBUILD b/user/kscreen/APKBUILD
new file mode 100644
index 000000000..8450a0259
--- /dev/null
+++ b/user/kscreen/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
+pkgname=kscreen
+pkgver=5.24.5
+pkgrel=0
+pkgdesc="KDE Plasma screen management software (user-facing)"
+url="https://www.kde.org/"
+arch="all"
+options="!check" # Requires dbus-x11 and both of them running
+license="LGPL-2.1+ AND GPL-2.0+ AND (GPL-2.0-only OR GPL-3.0-only)"
+depends=""
+makedepends="$depends_dev cmake extra-cmake-modules qt5-qtx11extras-dev
+ qt5-qtsensors-dev libxcb-dev kcmutils-dev kconfig-dev kdbusaddons-dev
+ kdeclarative-dev kglobalaccel-dev ki18n-dev kiconthemes-dev kxmlgui-dev
+ plasma-framework-dev libkscreen-dev libxi-dev kauth-dev kcodecs-dev
+ kcoreaddons-dev kpackage-dev kservice-dev"
+subpackages="$pkgname-lang"
+source="https://download.kde.org/stable/plasma/$pkgver/kscreen-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="770dfb968f8f8bf96b6ad3bf71f18f5baca35b2a4daa72b8806957ad1e050003158319edba84ebf999134e106ef916d829d391c33d79c58edb1000f503f67c97 kscreen-5.24.5.tar.xz"
diff --git a/user/kscreenlocker/APKBUILD b/user/kscreenlocker/APKBUILD
index 5157a19ff..41f327bf5 100644
--- a/user/kscreenlocker/APKBUILD
+++ b/user/kscreenlocker/APKBUILD
@@ -1,27 +1,28 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=kscreenlocker
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="Secure X11 screen locker"
url="https://www.kde.org/"
arch="all"
options="!check" # requires loginctl
license="(GPL-2.0-only OR GPL-3.0-only) AND GPL-2.0+"
-depends="linux-pam"
+depends="elogind linux-pam qdbus"
depends_dev="qt5-qtbase-dev"
makedepends="$depends_dev cmake extra-cmake-modules python3 libx11-dev
libxcb-dev libxcursor-dev libxext-dev libxi-dev linux-pam-dev
qt5-qtdeclarative-dev kcmutils-dev kcrash-dev kdeclarative-dev
kglobalaccel-dev ki18n-dev kidletime-dev knotifications-dev
- ktextwidgets-dev kwayland-dev kwindowsystem-dev kxmlgui-dev solid-dev"
+ ktextwidgets-dev kwayland-dev kwindowsystem-dev kxmlgui-dev solid-dev
+ elogind-dev layer-shell-qt-dev"
subpackages="$pkgname-dev $pkgname-lang"
source="https://download.kde.org/stable/plasma/$pkgver/kscreenlocker-$pkgver.tar.xz
kde.pam
- kde-np.pam"
+ kde-np.pam
+ "
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -32,22 +33,20 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -D -m644 "$srcdir"/kde.pam "$pkgdir"/etc/pam.d/kde
install -m644 "$srcdir"/kde-np.pam "$pkgdir"/etc/pam.d/kde-np
}
-sha512sums="76554e8ad6872705e903bda5f55f650d859b282b400ca739f346e392ce7961891057c8a8a43b5dcb85c83860e4744252500c338e5d99fd67a33df529a7e040c6 kscreenlocker-5.12.7.tar.xz
+sha512sums="c3252ead5f6cedece82ea94d88324b968938d0218ec05182f07fea85ead5ec451bc04bf417fc4f7a0f37aa56358caeb893175eae8cbb74ea748f843de9aaab83 kscreenlocker-5.24.5.tar.xz
56e87d02d75c4a8cc4ed183faed416fb4972e7f223b8759959c0f5da32e11e657907a1df279d62a44a6a174f5aca8b2ac66a5f3325c5deb92011bcf71eed74c3 kde.pam
565265485dd7466b77966d75a56766216b8bcc187c95a997e531e9481cf50ddbe576071eb0e334421202bcab19aa6de6b93e042447ca4797a24bf97e1d053ffd kde-np.pam"
diff --git a/user/kservice/APKBUILD b/user/kservice/APKBUILD
index 90d2b321a..f06adc360 100644
--- a/user/kservice/APKBUILD
+++ b/user/kservice/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kservice
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for implementing plugins and services"
url="https://www.kde.org/"
@@ -11,18 +11,13 @@ license="LGPL-2.1-only AND LGPL-2.1+"
depends=""
depends_dev="qt5-qtbase-dev kconfig-dev kcoreaddons-dev kcrash-dev
kdbusaddons-dev ki18n-dev"
+docdepends="kcoreaddons-doc kconfig-doc"
makedepends="$depends_dev cmake extra-cmake-modules kdoctools-dev python3
- flex bison doxygen qt5-qttools-dev"
+ flex bison doxygen qt5-qttools-dev $docdepends"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kservice-$pkgver.tar.xz"
-prepare() {
- cd "$builddir"
- mkdir -p build
-}
-
build() {
- cd "$builddir"/build
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -36,13 +31,12 @@ build() {
-DBUILD_TESTING=OFF \
-DBUILD_QCH:BOOL=ON \
${CMAKE_CROSSOPTS} \
- ..
- make
+ -Bbuild
+ make -C build
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="df64846676aa7877a34d245adb612b938eaa220e30f58ae9ea7800e97e1278f83b6777a8e65a3841535b450145dce194c45c5d3fad1c366d334f4cdfe8058475 kservice-5.54.0.tar.xz"
+sha512sums="d8c93e14821bc103a375e86f99fdf19f966596f7acb37eb5209ac0fbef045b5e56e3c725bfada4b47d00ea8119a00de3e8f246fcb4cb7b390578f48945ae1e15 kservice-5.94.0.tar.xz"
diff --git a/user/kshisen/APKBUILD b/user/kshisen/APKBUILD
index 9b83f59d6..b21b033eb 100644
--- a/user/kshisen/APKBUILD
+++ b/user/kshisen/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kshisen
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Mixture of Solitaire and Mah Jongg"
url="https://games.kde.org/game.php?game=kshisen"
@@ -11,10 +11,9 @@ depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kconfig-dev kdoctools-dev
kdbusaddons-dev kcrash-dev kxmlgui-dev libkdegames-dev libkmahjongg-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kshisen-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kshisen-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,18 +24,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d920cd913714f7e93df0133e8caec5dc2649c3d4dfd0f157fb189efa694632b3027053cbcdcc187cbd4d04b1ebd7526544f5857f80b5a933f4c73911531a5640 kshisen-18.12.3.tar.xz"
+sha512sums="9ddfad78bf51a092dda5c4a7ced4927457ae46397479156824897825f21804b457a8020f82c93de966f949cae404c44ed6800dffe441c7b9dec1b6798a28f644 kshisen-22.04.2.tar.xz"
diff --git a/user/ksirk/APKBUILD b/user/ksirk/APKBUILD
index 8f6313b33..33107710b 100644
--- a/user/ksirk/APKBUILD
+++ b/user/ksirk/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ksirk
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Strategy game from KDE"
url="https://www.kde.org/applications/games/ksirk/"
@@ -14,10 +14,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev
knewstuff-dev kwallet-dev kwidgetsaddons-dev kxmlgui-dev
libkdegames-dev phonon-dev qca-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/ksirk-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/ksirk-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="60e1267490b9c97f77e0313d19336f798564eb2a35b1c78907b5591d33360abdbc10a6fc46aa3a0956e8004c7dddaa0f91772535ee04678e3f8bb9a29de1a518 ksirk-18.12.3.tar.xz"
+sha512sums="37b9c828710ffe6b95b8336a2ff4a86f6b6cab31c443cfa07af73ce89affed1666c8622369167260bc9b1bce9b266e6fcc6f4231ec3d7044af572c2d8bdf0335 ksirk-22.04.2.tar.xz"
diff --git a/user/ksmtp/APKBUILD b/user/ksmtp/APKBUILD
new file mode 100644
index 000000000..fdfd2c715
--- /dev/null
+++ b/user/ksmtp/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=ksmtp
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="SMTP library for KDE"
+url="https://kde.org/"
+arch="all"
+license="LGPL-2.1+"
+depends=""
+makedepends="qt5-qtbase-dev cmake extra-cmake-modules kauth-dev kcodecs-dev
+ kcoreaddons-dev ki18n-dev kio-dev kjobwidgets-dev kservice-dev
+ solid-dev cyrus-sasl-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/ksmtp-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="a7a02c146733bb6755e1c7c342b04b8a4959ebca3ef8ea948e377a3cd206f215dab867654e885bbb02fa8b0746636f38352883da51e68acfffb6252468d8d988 ksmtp-22.04.2.tar.xz"
diff --git a/user/ksnakeduel/APKBUILD b/user/ksnakeduel/APKBUILD
index 589411c06..88bf790e6 100644
--- a/user/ksnakeduel/APKBUILD
+++ b/user/ksnakeduel/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ksnakeduel
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Tron-like game"
url="https://www.kde.org/applications/games/ksnakeduel/"
@@ -13,10 +13,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
kdbusaddons-dev kguiaddons-dev kwidgetsaddons-dev kxmlgui-dev
libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/ksnakeduel-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/ksnakeduel-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="8efc73f83ac68e2ccf27d019979509d343aada8fa73d27bbac4f428ecc0238bc9740863995c93f36980aceafa9f3a193ed2c114a90e4436e3ec470cecc50b625 ksnakeduel-18.12.3.tar.xz"
+sha512sums="c618d917a9d64b14b7e11c2eb4125f9274656304977956c22840a67214e469e86dbe1a63b51bbc567b8ff228175b78fb8f17c7eba6856d5cf4031802cfdb3963 ksnakeduel-22.04.2.tar.xz"
diff --git a/user/kspaceduel/APKBUILD b/user/kspaceduel/APKBUILD
index 67102b293..cec74db70 100644
--- a/user/kspaceduel/APKBUILD
+++ b/user/kspaceduel/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kspaceduel
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Space arcade game from KDE"
url="https://www.kde.org/applications/games/kspaceduel/"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
kconfigwidgets-dev kcoreaddons-dev kcrash-dev kdbusaddons-dev
kdoctools-dev ki18n-dev kxmlgui-dev libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kspaceduel-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kspaceduel-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d646f969ada6ea721ae02c177904f0c392732979dcab3e20a332a7b058c2284c4109c286a0a165620378f92cde864cf7685c852fcf366cbec8cae551640a0081 kspaceduel-18.12.3.tar.xz"
+sha512sums="43289bc8c0ba21fdcd93a8357288055e09b72f4c463752ea871f8b09a7bc6d9292a35cceeeb71b18a631621d3cd19a26bc4e98056dd251a4a6cd4a1a7f5fbc8a kspaceduel-22.04.2.tar.xz"
diff --git a/user/ksquares/APKBUILD b/user/ksquares/APKBUILD
index 4f8de77f3..0a8dc8652 100644
--- a/user/ksquares/APKBUILD
+++ b/user/ksquares/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ksquares
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Fun and exciting game of Dots and Boxes"
url="https://games.kde.org/game.php?game=ksquares"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kconfigwidgets-dev
kconfig-dev kcoreaddons-dev kcrash-dev kdbusaddons-dev kdoctools-dev
ki18n-dev kwidgetsaddons-dev kxmlgui-dev libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/ksquares-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/ksquares-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3075a4724bc8cf3d25d94a725818db31f75b4d1ef54e00faff9cab84ffdac7585dc79af7fff0e667a1f679602f22c0ba2dffca10b9e980dcc2850558e1f982bd ksquares-18.12.3.tar.xz"
+sha512sums="1cf53b12e0d125724af58923737d51431643e3bfeaa4f82a972672bf984bace0ac14fe0b4b45feaf5fd917759b064bad0bc9283039a25afdfa5b9d8caaeedd3d ksquares-22.04.2.tar.xz"
diff --git a/user/ksshaskpass/APKBUILD b/user/ksshaskpass/APKBUILD
index 513a419e1..3dbd8647b 100644
--- a/user/ksshaskpass/APKBUILD
+++ b/user/ksshaskpass/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=ksshaskpass
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="Plasma integration for SSH agents"
url="https://www.KDE.org/"
@@ -14,7 +14,6 @@ subpackages="$pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/plasma/$pkgver/ksshaskpass-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,18 +24,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="0c613b5263721a510844b24f4311d906f229acdbb72967902973f995b88973f68f13fd098bf702d1281023f17eafb87de388589062da1b58923479e6fe831a7a ksshaskpass-5.12.7.tar.xz"
+sha512sums="e4d7358eb213105a4e479eb3c9d229a87d86c4ebda199f486f9952f81dc1e91b43ba30d834907586f9badbb7e2933e44af5713119caa2e3bc060f16936e9a457 ksshaskpass-5.24.5.tar.xz"
diff --git a/user/kst/6a41644c39ffb394c350de3dacbacdffa54a0a2a-fix-cmake.patch b/user/kst/6a41644c39ffb394c350de3dacbacdffa54a0a2a-fix-cmake.patch
new file mode 100644
index 000000000..df43eb807
--- /dev/null
+++ b/user/kst/6a41644c39ffb394c350de3dacbacdffa54a0a2a-fix-cmake.patch
@@ -0,0 +1,29 @@
+From 6a41644c39ffb394c350de3dacbacdffa54a0a2a Mon Sep 17 00:00:00 2001
+From: Adriaan de Groot <groot@kde.org>
+Date: Sat, 3 Apr 2021 00:47:52 +0200
+Subject: [PATCH] Fix CMake-time with CMake 3.20
+
+Having multiple else-blocks for a single if() is now a syntax
+error; they need to be elseif() with only a single
+optional else() at the end.
+---
+ CMakeLists.txt | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 593dcb11..f965bd64 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -116,10 +116,10 @@ elseif(kst_3rdparty_download)
+ elseif(GCC_VERSION VERSION_EQUAL 4.7 OR GCC_VERSION VERSION_GREATER 4.7)
+ set(ver 4.7)
+ set(md5 de6e8dbab1bb17eee6057941fddc93e3)
+- else(GCC_VERSION VERSION_EQUAL 4.6 OR GCC_VERSION VERSION_GREATER 4.6)
++ elseif(GCC_VERSION VERSION_EQUAL 4.6 OR GCC_VERSION VERSION_GREATER 4.6)
+ set(ver 4.6)
+ set(md5 70d8670af9c21eb8fb466654c95d8e4d)
+- else(GCC_VERSION VERSION_GREATER 4.4)
++ elseif(GCC_VERSION VERSION_GREATER 4.4)
+ set(ver 4.4)
+ set(md5 999248fb40a44543af4dd4cd1be0ceeb)
+ else()
diff --git a/user/kst/APKBUILD b/user/kst/APKBUILD
index d87b6e693..75ffe3afa 100644
--- a/user/kst/APKBUILD
+++ b/user/kst/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kst
pkgver=2.0.8
-pkgrel=0
+pkgrel=1
pkgdesc="Real-time dataset viewing and plotting tool"
url="https://kst-plot.kde.org/"
arch="all"
@@ -12,11 +12,13 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qttools-dev gsl-dev"
subpackages="$pkgname-doc $pkgname-lang"
langdir="/usr/share/kst/locale"
source="https://downloads.sourceforge.net/project/kst/Kst%20$pkgver/Kst-$pkgver.tar.gz
- kst-gsl2.patch"
+ kst-gsl2.patch
+ qt5.patch
+ 6a41644c39ffb394c350de3dacbacdffa54a0a2a-fix-cmake.patch
+ "
builddir="$srcdir/Kst-$pkgver"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,19 +31,19 @@ build() {
-DCMAKE_C_FLAGS="$CFLAGS" \
-Dkst_qt5="YesPlease" \
-Dkst_install_prefix="/usr" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
sha512sums="81be1e9ef189dbf087c5626b984297d4c8f84f22fce50c4933ea467a65f8595c0254af78d55f2b2e324934346f0758b7a0cf48d06d1108026b60b7ffba1221fb Kst-2.0.8.tar.gz
-1dbd94d7e4298d768ab1e9e020dd207b848e72b30db6b1f2ef2f3eb0d528ec5c0a120593e7e7c06f4cb1e59e950a965e217c30564a26510a180d82418628d4e5 kst-gsl2.patch"
+1dbd94d7e4298d768ab1e9e020dd207b848e72b30db6b1f2ef2f3eb0d528ec5c0a120593e7e7c06f4cb1e59e950a965e217c30564a26510a180d82418628d4e5 kst-gsl2.patch
+63705a561890792a1d3cced65075a46d0f507f5abf2599de6475491d7484bba3102152c8fe13a6d3c424e409e6b6070299208d09f74282137b6e95acc95df879 qt5.patch
+a3eae1e0bdd6ef4483672113987844aae439044c879a42f4097829a331b13d419cd8ad762c7ed05391afa0127f4a433de9d75aa4293f93ff531dc36c823644c1 6a41644c39ffb394c350de3dacbacdffa54a0a2a-fix-cmake.patch"
diff --git a/user/kst/qt5.patch b/user/kst/qt5.patch
new file mode 100644
index 000000000..64c5d3c40
--- /dev/null
+++ b/user/kst/qt5.patch
@@ -0,0 +1,47 @@
+From 9fc5140791ec00d6df2d65973f3ca61df17b1d47 Mon Sep 17 00:00:00 2001
+From: Christophe Giboudeaux <christophe@krop.fr>
+Date: Sun, 3 Jun 2018 19:43:34 +0200
+Subject: Fix build with Qt 5.11
+
+Summary:
+- qt5_use_modules was removed in Qt 5.11. use target_link_libraries instead.
+- Add a missing #include
+
+Subscribers: kde-edu
+
+Tags: #kde_edu
+
+Differential Revision: https://phabricator.kde.org/D13339
+---
+ cmake/modules/KstMacros.cmake | 2 +-
+ src/libkstapp/view.h | 1 +
+ 2 files changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/cmake/modules/KstMacros.cmake b/cmake/modules/KstMacros.cmake
+index 4ff9c15..bc3d8a6 100644
+--- a/cmake/modules/KstMacros.cmake
++++ b/cmake/modules/KstMacros.cmake
+@@ -240,7 +240,7 @@ endmacro()
+ macro(kst_link)
+ target_link_libraries(${kst_name} ${ARGV})
+ if(kst_qt5)
+- qt5_use_modules(${kst_name} Widgets Xml Network PrintSupport)
++ target_link_libraries(${kst_name} Qt5::Widgets Qt5::Xml Qt5::Network Qt5::PrintSupport)
+ else()
+ target_link_libraries(${kst_name}
+ ${QT_QTCORE_LIBRARY} ${QT_QTGUI_LIBRARY} ${QT_QTXML_LIBRARY} ${QT_QTSVG_LIBRARY} ${QT_QTNETWORK_LIBRARY})
+diff --git a/src/libkstapp/view.h b/src/libkstapp/view.h
+index 95c8c6a..2af5393 100644
+--- a/src/libkstapp/view.h
++++ b/src/libkstapp/view.h
+@@ -14,6 +14,7 @@
+ #define VIEW_H
+
+ #include <QGraphicsView>
++#include <QMenu>
+
+ #include "kst_export.h"
+
+--
+cgit v1.1
+
diff --git a/user/kstars/0001-htmesh-Fix-compile-error-on-modern-Linux-systems.patch b/user/kstars/0001-htmesh-Fix-compile-error-on-modern-Linux-systems.patch
deleted file mode 100644
index 052b849d9..000000000
--- a/user/kstars/0001-htmesh-Fix-compile-error-on-modern-Linux-systems.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From b2b36b864813e512829ab8a3613f8a91f2bff20e Mon Sep 17 00:00:00 2001
-From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
-Date: Wed, 29 Aug 2018 11:27:38 -0500
-Subject: [PATCH] htmesh: Fix compile error on modern Linux systems
-
----
- kstars/htmesh/SkipListElement.h | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/kstars/htmesh/SkipListElement.h b/kstars/htmesh/SkipListElement.h
-index f8187e42a..52dfff38a 100644
---- a/kstars/htmesh/SkipListElement.h
-+++ b/kstars/htmesh/SkipListElement.h
-@@ -20,7 +20,7 @@
- #define KEY_MAX _I64_MAX
- #else
- #if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || \
-- (defined(__SUNPRO_CC) && defined(__sun)) || defined(__APPLE__)
-+ (defined(__SUNPRO_CC) && defined(__sun)) || defined(__APPLE__) || defined(__linux__)
- #define KEY_MAX LLONG_MAX
- #else
- #define KEY_MAX LONG_LONG_MAX
---
-2.17.1
-
diff --git a/user/kstars/APKBUILD b/user/kstars/APKBUILD
index b98404eda..be6c35cc7 100644
--- a/user/kstars/APKBUILD
+++ b/user/kstars/APKBUILD
@@ -1,27 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kstars
-pkgver=3.0.0
-pkgrel=0
+pkgver=3.5.9
+pkgrel=1
pkgdesc="Desktop planetarium"
url="https://www.kde.org/applications/education/kstars/"
arch="all"
+options="!check" # Requires FITS library.
license="GPL-2.0-only"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
qt5-qtsvg-dev knotifyconfig-dev kauth-dev kconfig-dev kcrash-dev
kdoctools-dev kwidgetsaddons-dev knewstuff-dev ki18n-dev kio-dev
- kxmlgui-dev kplotting-dev knotifications-dev eigen-dev mesa-dev
- qt5-qtwebsockets-dev libraw-dev"
+ kxmlgui-dev kplotting-dev knotifications-dev eigen-dev libglvnd-dev
+ qt5-qtwebsockets-dev libraw-dev qtkeychain-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/kstars/kstars-$pkgver.tar.xz
- 0001-htmesh-Fix-compile-error-on-modern-Linux-systems.patch
- "
+source="https://download.kde.org/stable/kstars/kstars-$pkgver.tar.xz"
build() {
- cd "$builddir"
- mkdir build
- cd build
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -32,21 +28,18 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- -DEIGEN3_INCLUDE_DIR=/usr/include/eigen3 \
+ -DBUILD_TESTING:BOOL=OFF \
${CMAKE_CROSSOPTS} \
- ..
- make
+ -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="e574c2529898d66bc79e1cf88ce778dddeedfdfed4ea23921219226121b60be042a94e6865e9076efff038a0a529587901f9a4ab2cd5b658440a8bf39c0c4d08 kstars-3.0.0.tar.xz
-8c81a6db810a99b7d8bf7adca15767fdbfb79269ab2de1e4136de3c75266dde2fd572b961f63dc9b4f619abf7292e02eed5d29ca9ba53586f30871aba6015fdb 0001-htmesh-Fix-compile-error-on-modern-Linux-systems.patch"
+sha512sums="25ed432bc4276216c82e43f9ac952f6fa973d9baf64b2b89a62855e853f42cd1ee39cf5f0496ce1b3c6b894da227ba32c4246ab972301cd67b80679240fad757 kstars-3.5.9.tar.xz"
diff --git a/user/ksudoku/APKBUILD b/user/ksudoku/APKBUILD
index 3515bc53b..f46278aff 100644
--- a/user/ksudoku/APKBUILD
+++ b/user/ksudoku/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ksudoku
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Desktop Sudoku (symbol placement / logic) game"
url="https://games.kde.org/game.php?game=ksudoku"
@@ -14,10 +14,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
kio-dev kjobwidgets-dev kwidgetsaddons-dev kxmlgui-dev libkdegames-dev
glu-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/ksudoku-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/ksudoku-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="6e773fc6bb9224a5c39142abcc85a93ef1ce8aedd9242fb60b1157027a277d6e235998d8a7d6ac7ecd3d89a1bdacc8e612d5b0c11ec9fcc52c3ea14445384d80 ksudoku-18.12.3.tar.xz"
+sha512sums="bf4bdda57cbd67a761df630b877d734e8f8ca1832f55947d054dc7ae3f1725bf58617bf93a28b05dc7d5c5ddfe2ca47a0b35306f95a658636ea7217a6fe2299b ksudoku-22.04.2.tar.xz"
diff --git a/user/ksysguard/0001-Linux-softraid-define-_GNU_SOURCE-for-pipe2.patch b/user/ksysguard/0001-Linux-softraid-define-_GNU_SOURCE-for-pipe2.patch
deleted file mode 100644
index 8828736f3..000000000
--- a/user/ksysguard/0001-Linux-softraid-define-_GNU_SOURCE-for-pipe2.patch
+++ /dev/null
@@ -1,31 +0,0 @@
-From d6fa7c0ab6c3a6b1494ffd12b93ee5cc2e4d3d5c Mon Sep 17 00:00:00 2001
-From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
-Date: Mon, 18 Mar 2019 14:34:26 -0500
-Subject: [PATCH] Linux softraid: define _GNU_SOURCE for pipe2
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-In a strict POSIX compilation environment, pipe2 is not defined. Use
-the _GNU_SOURCE FTM to expose it.
-
-Fixes a failure to build ksysguard on Adélie Linux.
----
- ksysguardd/Linux/softraid.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/ksysguardd/Linux/softraid.c b/ksysguardd/Linux/softraid.c
-index c2123fb7..96eb373e 100644
---- a/ksysguardd/Linux/softraid.c
-+++ b/ksysguardd/Linux/softraid.c
-@@ -27,6 +27,7 @@
- #include <sys/types.h> /* for open */
- #include <sys/stat.h> /* for open */
- #include <fcntl.h> /* for open */
-+#define _GNU_SOURCE /* pipe2 */
- #include <unistd.h> /* for read, close, exec, fork */
- #include <stdlib.h> /* for exit */
- #include <sys/wait.h> /* for wait :) */
---
-2.19.2
-
diff --git a/user/ksysguard/APKBUILD b/user/ksysguard/APKBUILD
deleted file mode 100644
index 864e7add2..000000000
--- a/user/ksysguard/APKBUILD
+++ /dev/null
@@ -1,49 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=ksysguard
-pkgver=5.12.7
-pkgrel=0
-pkgdesc="KDE system monitor utility"
-url="https://www.kde.org/"
-arch="all"
-license="LGPL-2.1+"
-depends=""
-makedepends="qt5-qtbase-dev kconfig-dev kcoreaddons-dev kdbusaddons-dev kio-dev
- ki18n-dev kiconthemes-dev kinit-dev kitemviews-dev knewstuff-dev
- knotifications-dev kwindowsystem-dev libksysguard-dev
- cmake extra-cmake-modules kdoctools-dev"
-subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/plasma/$pkgver/ksysguard-$pkgver.tar.xz
- ksysguard-5.6.5-rindex-header.patch
- 0001-Linux-softraid-define-_GNU_SOURCE-for-pipe2.patch
- "
-
-build() {
- cd "$builddir"
- if [ "$CBUILD" != "$CHOST" ]; then
- CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
- fi
- cmake \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_INSTALL_LIBDIR=lib \
- -DBUILD_SHARED_LIBS=True \
- -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
- -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
- -DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
- make
-}
-
-check() {
- cd "$builddir"
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
-}
-
-sha512sums="745958c74914d9b21373919b0e54cf7d1dd0621769aa8a480bac924862c494c68c86fa36c019fb13d71d8d86c8d923161290ef9a967b98c1182df88da63bbb35 ksysguard-5.12.7.tar.xz
-13a26451c459cff1d3b00af27c953d10c55e7e8f43ef7a6f0f54dd05dcb612546545c0170089e9499bb041f004cdacf19cb112d247a8ccf8fd4e77fea0d1c8bc ksysguard-5.6.5-rindex-header.patch
-0a424bb5e23f283d0cccfe86c0a6c2915f563a82e27a1dc16be8b4dc4b3d90ce116c4eb448dd1d5dc07602225468880206a5eb70c1b66d1e19e9a405fae7aa88 0001-Linux-softraid-define-_GNU_SOURCE-for-pipe2.patch"
diff --git a/user/ksysguard/ksysguard-5.6.5-rindex-header.patch b/user/ksysguard/ksysguard-5.6.5-rindex-header.patch
deleted file mode 100644
index 423da608c..000000000
--- a/user/ksysguard/ksysguard-5.6.5-rindex-header.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- ksysguard-5.6.5/ksysguardd/Linux/diskstat.c.old 2016-06-14 11:09:02.000000000 +0100
-+++ ksysguard-5.6.5/ksysguardd/Linux/diskstat.c 2016-08-07 02:51:53.101362572 +0100
-@@ -24,6 +24,7 @@
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-+#include <strings.h>
- #include <sys/statvfs.h>
- #include <time.h>
- #include <unistd.h>
diff --git a/user/ksystemlog/APKBUILD b/user/ksystemlog/APKBUILD
index 9506209b6..ef394460c 100644
--- a/user/ksystemlog/APKBUILD
+++ b/user/ksystemlog/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ksystemlog
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Friendly, powerful system log viewer tool"
url="https://www.kde.org/applications/system/ksystemlog/"
@@ -13,10 +13,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kxmlgui-dev kconfig-dev
kcoreaddons-dev kwidgetsaddons-dev kitemviews-dev kio-dev karchive-dev
kdoctools-dev ki18n-dev kcompletion-dev ktextwidgets-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/ksystemlog-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/ksystemlog-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="4808d8981e5d7d5d75be11c3b00c25e4962ea2b8a5e600f50aff2ca8e74d9af924859329224c92001a91e9fa697fae29a21c2ed1209cada641c732773b2bad0b ksystemlog-18.12.3.tar.xz"
+sha512sums="6b62d0629246bc855b603fc8bf3b15333226e30a01ca843080caec583d2beb45647f8eacc920d836f630dabc657ad811ddc15f26a74341f6b71a722ace201804 ksystemlog-22.04.2.tar.xz"
diff --git a/user/ksystemstats/APKBUILD b/user/ksystemstats/APKBUILD
new file mode 100644
index 000000000..118825d8c
--- /dev/null
+++ b/user/ksystemstats/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
+pkgname=ksystemstats
+pkgver=5.24.5
+pkgrel=0
+pkgdesc="KDE system statistics daemon"
+url="https://www.kde.org/"
+arch="all"
+options="!check" # Requires D-Bus.
+license="BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND GPL-2.0-only AND GPL-2.0+ AND GPL-3.0-only"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev kauth-dev kcodecs-dev
+ kcoreaddons-dev kdbusaddons-dev ki18n-dev kio-dev kjobwidgets-dev
+ kservice-dev libksysguard-dev libnl3-dev lm_sensors-dev solid-dev
+ eudev-dev networkmanager-qt-dev"
+subpackages="$pkgname-lang"
+source="https://download.kde.org/stable/plasma/$pkgver/ksystemstats-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="6bbcf6512c223fc97203c02baca5bb230ef86c8012318307e32bc030160f31fc2797a28d95af442826b5f48656673213f6cdde487e1782a50300a9bc96e22969 ksystemstats-5.24.5.tar.xz"
diff --git a/user/kteatime/APKBUILD b/user/kteatime/APKBUILD
index 89988296c..34336d18e 100644
--- a/user/kteatime/APKBUILD
+++ b/user/kteatime/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kteatime
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Steep responsibly"
url="https://www.kde.org/applications/games/kteatime/"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kconfig-dev kcrash-dev
kdoctools-dev ki18n-dev kiconthemes-dev knotifyconfig-dev kxmlgui-dev
knotifications-dev ktextwidgets-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kteatime-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kteatime-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="0c2280828005c85c12a8616c288416537cee2fe6053571c3ee369ccd7903ca66625b95304217a5a6518ac0602b1cde9d0e654032ad32b12f082d80535cca4e55 kteatime-18.12.3.tar.xz"
+sha512sums="08129147d5ec3823ed1e0576c7ab748361bf3178a72152d2a7f52fe63061cc6880e58a0ce3a6b9ccf24a2d67d718800f583ec4e69b6286354f2c6425f9a87957 kteatime-22.04.2.tar.xz"
diff --git a/user/ktexteditor/APKBUILD b/user/ktexteditor/APKBUILD
index 143405fdc..5f72f2b84 100644
--- a/user/ktexteditor/APKBUILD
+++ b/user/ktexteditor/APKBUILD
@@ -1,19 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ktexteditor
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Reusable, programmable text editor widget"
url="https://www.kde.org/"
arch="all"
options="!check" # Requires running X11 session.
-license="LGPL-2.1-only AND LGPL-2.1+ AND (LGPL-2.1-only OR LGPL-3.0-only)"
+license="LGPL-2.0+"
depends=""
depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev qt5-qtxmlpatterns-dev
karchive-dev kconfig-dev kguiaddons-dev ki18n-dev kio-dev kparts-dev
syntax-highlighting-dev libgit2-dev"
+docdepends="kparts-doc kio-doc kxmlgui-doc ktextwidgets-doc kcoreaddons-doc
+ kservice-doc kcompletion-doc kwidgetsaddons-doc kjobwidgets-doc
+ kbookmarks-doc kitemviews-doc solid-doc kwindowsystem-doc kconfig-doc
+ kconfigwidgets-doc sonnet-doc ki18n-doc kcodecs-doc kauth-doc"
makedepends="$depends_dev cmake extra-cmake-modules python3 doxygen graphviz
- qt5-qttools-dev"
+ qt5-qttools-dev $docdepends"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/ktexteditor-$pkgver.tar.xz"
@@ -22,7 +26,6 @@ source="https://download.kde.org/stable/frameworks/${pkgver%.*}/ktexteditor-$pkg
# - CVE-2018-10361
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -34,18 +37,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="8402fb036887ef853e455b4c80b3f4ff7fa6a65fc37e94d4fb2e94c09a59f2e49d7403dbf94aa3f2b2eb7ac6f43c5aede9aaa45ab5e9597a62b8a5d9b7ad0500 ktexteditor-5.54.0.tar.xz"
+sha512sums="cb42219ca4e2009c7df3adc85f45814e04da65e40490a37928b43623dd19c3567451c50b31d909fb08fa508c5e043016ec2f9789524ff248a27850c536fd9016 ktexteditor-5.94.0.tar.xz"
diff --git a/user/ktextwidgets/APKBUILD b/user/ktextwidgets/APKBUILD
index b2cec5cec..126df499b 100644
--- a/user/ktextwidgets/APKBUILD
+++ b/user/ktextwidgets/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ktextwidgets
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework providing widgets for text manipulation"
url="https://www.kde.org/"
@@ -11,13 +11,13 @@ license="LGPL-2.1+"
depends=""
depends_dev="qt5-qtbase-dev kcompletion-dev kconfigwidgets-dev kiconthemes-dev
kservice-dev sonnet-dev"
+docdepends="ki18n-doc sonnet-doc"
makedepends="$depends_dev cmake extra-cmake-modules python3 doxygen graphviz
- qt5-qttools-dev"
+ qt5-qtspeech-dev qt5-qttools-dev $docdepends"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/ktextwidgets-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,18 +29,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="0a3e12a422bb8aa1c79cf96cbd95d7544ba812e12b9a9b838efc014336e56c3f21bce80084ec9ed3c164b317dd9588db3ef28a729b01bdd05e9ea024d47ce767 ktextwidgets-5.54.0.tar.xz"
+sha512sums="8b25e0ac4a84fc0f763a3450fa520c551f83b4e2d26e99bc5e1830f4c36c1fe9de2bae7aa9608630a24b73239948cd6b4b22fa6b24e21c5ab218d99c0cce2cee ktextwidgets-5.94.0.tar.xz"
diff --git a/user/ktimer/APKBUILD b/user/ktimer/APKBUILD
index 366d60c4c..72cbda1ed 100644
--- a/user/ktimer/APKBUILD
+++ b/user/ktimer/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ktimer
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Tool to execute programs after some time"
url="https://www.kde.org/applications/utilities/ktimer/"
@@ -11,10 +11,9 @@ depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kdoctools-dev ki18n-dev
kwidgetsaddons-dev kio-dev kdbusaddons-dev knotifications-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/ktimer-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/ktimer-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,18 +24,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e61752d02d650d32d1988e7b8f394017dd6a7130f222bda55a747039ce5cb593976ee99f4cdde1731e55e86f8b2ecfa967efea6198a1de6d240ce11fd48488fe ktimer-18.12.3.tar.xz"
+sha512sums="f02e787d75da1ea58f1d3f988c48393a0587cac0f6fa6c091e3d777036a932748c9632bcad40ecb4974816bfc59b63cfafa069cda72aa6f56260fc98cd6e66b4 ktimer-22.04.2.tar.xz"
diff --git a/user/ktorrent/APKBUILD b/user/ktorrent/APKBUILD
index 0f816ab37..ded9908b6 100644
--- a/user/ktorrent/APKBUILD
+++ b/user/ktorrent/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ktorrent
-pkgver=5.1.1
+pkgver=22.04.2
pkgrel=0
pkgdesc="BitTorrent client by KDE"
url="https://www.kde.org/applications/internet/ktorrent/"
@@ -16,10 +16,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtscript-dev kio-dev
kwindowsystem-dev kxmlgui-dev libktorrent-dev taglib-dev kplotting-dev
kdnssd-dev plasma-workspace-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/ktorrent/$pkgver/ktorrent-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/ktorrent-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -30,18 +29,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="bbe744853018380e30efc6ef95916a9b6f0ebec812d70d7970e5e7183d860d147b0693dd0107b146a5987aa27f30cd335fad73c8967839d53eee1c5b63a53c06 ktorrent-5.1.1.tar.xz"
+sha512sums="8953e7bed3b24031941b1eb8bd09f0b62f6efd6b9bca228ba773f260c76f716f7535947f0fc01e285e257ed71e82a740cd976c41b4e9de76e54e75d7f7ffe076 ktorrent-22.04.2.tar.xz"
diff --git a/user/ktouch/APKBUILD b/user/ktouch/APKBUILD
index a978ce469..4f5d004f2 100644
--- a/user/ktouch/APKBUILD
+++ b/user/ktouch/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ktouch
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Touch typing tutor"
url="https://www.kde.org/applications/education/ktouch/"
@@ -12,12 +12,11 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtxmlpatterns-dev
kcompletion-dev kconfig-dev kconfigwidgets-dev kcoreaddons-dev
kdeclarative-dev kdoctools-dev ki18n-dev kitemviews-dev kcmutils-dev
ktextwidgets-dev kwidgetsaddons-dev kwindowsystem-dev kxmlgui-dev
- libx11-dev libxcb-dev libxkbfile-dev"
+ libx11-dev libxcb-dev libxkbfile-dev qt5-qtquickcontrols2-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/ktouch-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/ktouch-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="1973b7d9e8ba61b4bfe9b23e53597ffe8eb4d00f4a57a3e2861a41b2b6c8bcf8204ad59d8d42d696e07a7d8c2b9cf7d3b4dbba8924fd2a9470d5b7524034a6cd ktouch-18.12.3.tar.xz"
+sha512sums="af76a027e73c19e793da18f48a9160f7daa5f4153e7c5471cc544482cd18638251dec1daf911de2f5cf89f0ad5975189c583f4aac9b886f0c98ffd785ff0b646 ktouch-22.04.2.tar.xz"
diff --git a/user/ktuberling/APKBUILD b/user/ktuberling/APKBUILD
index 6bfead6d6..742784a58 100644
--- a/user/ktuberling/APKBUILD
+++ b/user/ktuberling/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ktuberling
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Simple constructor game"
url="https://games.kde.org/game.php?game=ktuberling"
@@ -13,10 +13,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
kdbusaddons-dev kdelibs4support-dev kwidgetsaddons-dev kxmlgui-dev
libkdegames-dev qt5-qtmultimedia-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/ktuberling-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/ktuberling-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3f496c2d48c726274fa01c8116eeb50d06b9ef39ce7004b10b40316382ee082d26dbe3da8e43c9c7c77a719e6a10bff0f130d3c99fb9f9156d95216c428189fb ktuberling-18.12.3.tar.xz"
+sha512sums="e6015a79fba2a1d236fa570a52154ebabe8bf380a3008ac14ac8a61ef366177ccd67d60023212f0967c20531fa642bc52a461d1d8671fde0f5220791b88bbb5b ktuberling-22.04.2.tar.xz"
diff --git a/user/kturtle/APKBUILD b/user/kturtle/APKBUILD
index e02479a1d..6ceedca10 100644
--- a/user/kturtle/APKBUILD
+++ b/user/kturtle/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kturtle
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Educational programming environment"
url="https://www.kde.org/applications/education/kturtle/"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kcrash-dev
kio-dev knewstuff-dev kdoctools-dev ktextwidgets-dev ki18n-dev
kcoreaddons-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kturtle-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kturtle-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3244d1c691f2d7c0625cb35b426dc40d7fc112e741af0dda6abdbfba53a36eed199c3cd9b7f60c078b232f903572a112958988cc677fa989dbd51ce3c8bb85f0 kturtle-18.12.3.tar.xz"
+sha512sums="f91c7644d308830c50a9201004ac3b5494a4ad7281c06f8774b3c272096e9fcdfd83832de98048987aa4214c9d84dc84976aa12bbc38936dc8db6ddc2bb1fb9b kturtle-22.04.2.tar.xz"
diff --git a/user/kubrick/APKBUILD b/user/kubrick/APKBUILD
index 485a62692..f87fb7013 100644
--- a/user/kubrick/APKBUILD
+++ b/user/kubrick/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kubrick
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="3D cube puzzle solving game"
url="https://www.kde.org/applications/games/kubrick/"
@@ -12,10 +12,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
kconfigwidgets-dev kcoreaddons-dev kcrash-dev kdoctools-dev ki18n-dev
kio-dev kwidgetsaddons-dev kxmlgui-dev libkdegames-dev glu-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kubrick-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kubrick-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="4761c56bbaac06fa4f5f1e398c06ebe859672f333542185b2a15fac753aa8279a3bb62dbb8cfd972adaaab1903cb56b157fd39e468d3ba8b33f2fbc746517c67 kubrick-18.12.3.tar.xz"
+sha512sums="5f3e5d4e589528348e9754acf7a71689cdd675e628cec235935be7d0f1b3bb7597d02071fae44843124bc0ddac80c5b4b0094337d0cb6a238675885c130e69eb kubrick-22.04.2.tar.xz"
diff --git a/user/kunitconversion/APKBUILD b/user/kunitconversion/APKBUILD
index f8ee549b4..643271548 100644
--- a/user/kunitconversion/APKBUILD
+++ b/user/kunitconversion/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kunitconversion
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Convert between metric and imperial"
url="https://www.kde.org/"
@@ -16,7 +16,6 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kunitconversion-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="657b13bf4d49fcceab6005ccbbe439f011be5865ac95c3a06317edda8f2fca90cda2dcb8d415235f2edf4af3616ab35e55a9b40b94d29d0dbfc6b5e74fc3fbb5 kunitconversion-5.54.0.tar.xz"
+sha512sums="28435650c81835728c3dd44b60ac21467b52595613413c9ebffc66b5f970dfec31af8a491893a6d699b323bd763f3d440a22540c59bfdbdd2a5dfb97dac89f04 kunitconversion-5.94.0.tar.xz"
diff --git a/user/kuserfeedback/APKBUILD b/user/kuserfeedback/APKBUILD
new file mode 100644
index 000000000..6aa143b6e
--- /dev/null
+++ b/user/kuserfeedback/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=kuserfeedback
+pkgver=1.2.0
+pkgrel=0
+pkgdesc="User feedback agent for KDE"
+url="https://www.kde.org/"
+arch="all"
+options="!check" # Requires X11.
+license="BSD-3-Clause AND MIT"
+depends=""
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
+ qt5-qtsvg-dev qt5-qttools-dev bison flex"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://download.kde.org/stable/kuserfeedback/kuserfeedback-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ # Requires OpenGL accelerated desktop.
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E openglinfosourcetest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="0152233c741a287b623256cac6d109d405441f17dec68c5782d900ddb9ca5a93614d46ea112e1be9e64913cc3f46d107bec64cad4579b766919439b0ed88a470 kuserfeedback-1.2.0.tar.xz"
diff --git a/user/kwallet/APKBUILD b/user/kwallet/APKBUILD
index 910635c7a..0e89dfb47 100644
--- a/user/kwallet/APKBUILD
+++ b/user/kwallet/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kwallet
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Secure storage system for passwords built atop Qt"
url="https://www.kde.org/"
@@ -18,7 +18,6 @@ source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kwallet-$pkgver.
kwallet-5.22.0-blowfish-endianness.patch"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -30,19 +29,17 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="f30ceda97180a562853923a0ad1cefbadbed51bbbf4b29405bbe85ccae3dc815053903367ba3638e7a7293eda7fbb7df88f527d6176fc6c2286088c38ce0069a kwallet-5.54.0.tar.xz
-edca12963a5db9db05b3b4d581c1b970569f3b96dc672422e561c189c9024b69710732281f054514ce3d596688a5b0ba512766f4fd768eea8e00a18dcfd59179 kwallet-5.22.0-blowfish-endianness.patch"
+sha512sums="9cb0105413d983bf89819f60fc36182cbb59737be316ce52262fe68f388dc1262dfb404ef0703af48ec75bd869985829f67b58f433f6b366ef780ad553ee9638 kwallet-5.94.0.tar.xz
+5aea35d4b1e706c6712c8e2a2ab4bb243ad0c215e677ac922226bc95602112111dbd9675d42184a88dced60f1f700c8ac18eba60e48f068b4b642e0b6189d78f kwallet-5.22.0-blowfish-endianness.patch"
diff --git a/user/kwallet/kwallet-5.22.0-blowfish-endianness.patch b/user/kwallet/kwallet-5.22.0-blowfish-endianness.patch
index 9d76cc25c..3234cc105 100644
--- a/user/kwallet/kwallet-5.22.0-blowfish-endianness.patch
+++ b/user/kwallet/kwallet-5.22.0-blowfish-endianness.patch
@@ -1,6 +1,6 @@
--- kwallet-5.29.0/src/runtime/kwalletd/backend/blowfish.cc.old 2016-12-03 21:12:17.000000000 +0000
+++ kwallet-5.29.0/src/runtime/kwalletd/backend/blowfish.cc 2017-01-29 18:02:10.193293280 +0000
-@@ -31,9 +31,7 @@
+@@ -19,12 +19,7 @@
#include "blowfishtables.h"
@@ -8,19 +8,22 @@
-// We need to live with -Wundef until someone really figures out the problem.
-//#include <QtCore/qglobal.h> // for Q_BYTE_ORDER and friends
+#include <QtGlobal> // for Q_BYTE_ORDER and friends
+-// Workaround for -Wundef
+-#define Q_BIG_ENDIAN 1
+-#define Q_BYTE_ORDER Q_BIG_ENDIAN
BlowFish::BlowFish()
{
-@@ -135,7 +133,7 @@
+@@ -126,7 +121,7 @@
return init();
}
-
+ // clang-format off
-#if Q_BYTE_ORDER == Q_BIG_ENDIAN
+#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
#define shuffle(x) do { \
uint32_t r = x; \
x = (r & 0xff000000) >> 24; \
-@@ -154,12 +152,12 @@
+@@ -146,12 +141,12 @@
}
for (int i = 0; i < len / _blksz; i++) {
@@ -35,7 +38,7 @@
shuffle(*d);
shuffle(*(d + 1));
#endif
-@@ -178,12 +176,12 @@
+@@ -170,12 +165,12 @@
}
for (int i = 0; i < len / _blksz; i++) {
diff --git a/user/kwalletmanager/APKBUILD b/user/kwalletmanager/APKBUILD
index ef0a0403a..95a9d4f86 100644
--- a/user/kwalletmanager/APKBUILD
+++ b/user/kwalletmanager/APKBUILD
@@ -1,10 +1,10 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kwalletmanager
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Manage KDE wallets"
-url="https://www.kde.org/applications/system/kwalletmanager/"
+url="https://www.kde.org/applications/system/kwalletmanager5"
arch="all"
license="GPL-2.0-only"
depends=""
@@ -14,10 +14,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev karchive-dev kauth-dev
knotifications-dev kservice-dev ktextwidgets-dev kwallet-dev kcrash-dev
kwindowsystem-dev kxmlgui-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kwalletmanager-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kwalletmanager-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="26be37f0e273c3532ce6056047ac47c65f0c46f56e79bf4473a62c59772685ea4f842d46864d3fbb44638b0c3105ffe233f0451b6ddc53dbb7327631d46b9d4a kwalletmanager-18.12.3.tar.xz"
+sha512sums="63aee93199ff3380fa2d077cc29d9e5b3d63c894bd143dc7a8ed8db3339acd56d76eb59c40b98fb5cf6a616c08673226115bb38a51337ead3d010bafa9db39d9 kwalletmanager-22.04.2.tar.xz"
diff --git a/user/kwave/APKBUILD b/user/kwave/APKBUILD
index dc6934195..afbd0e304 100644
--- a/user/kwave/APKBUILD
+++ b/user/kwave/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kwave
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Sound editor built for KDE"
url="http://kwave.sourceforge.net/"
@@ -15,12 +15,12 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtmultimedia-dev
audiofile-dev libsamplerate-dev alsa-lib-dev pulseaudio-dev flac-dev
id3lib-dev libmad-dev opus-dev libvorbis-dev fftw-dev librsvg-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kwave-$pkgver.tar.xz
+source="https://download.kde.org/stable/release-service/$pkgver/src/kwave-$pkgver.tar.xz
+ es-doc-fix.patch
remove-msgcat.patch
"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -32,19 +32,18 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DWITH_OSS=OFF \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="bffafe6b63cdad5e674a02d9b57e5e658260c2d933ae148e155afc598045a67143f21aad4c52e1437b6f47181b47ee9896e3219700cc8e0aa1c8408fdf797adb kwave-18.12.3.tar.xz
+sha512sums="9d41a8d3ffbed2232bc222db1d26a11fda55a99724314df93c4df208b6838852613bd4982fc54c439e4e81deb7e023d94563f70d1db02b87a1467a8ea8638170 kwave-22.04.2.tar.xz
+63afd083727fd28436c2a8071429ba95fe4342c11669a4e27afc30b8a088b981f284fcff13861d5ef01a6f97152b25eec1fbeb303c9bdd76707e44ff5978dab8 es-doc-fix.patch
43474f73281a7e3e97e2aa9e8c5b7aac50c8153c4ec09345a9ff43eb3c90a17c1dd9fbd2c630967ff87a5b21139f4efd0ecc44f36052549cc2036fd1db1dfac4 remove-msgcat.patch"
diff --git a/user/kwave/es-doc-fix.patch b/user/kwave/es-doc-fix.patch
new file mode 100644
index 000000000..601a7f56e
--- /dev/null
+++ b/user/kwave/es-doc-fix.patch
@@ -0,0 +1,101 @@
+--- kwave-19.04.1/po/es/docs/kwave/index.docbook.old 2019-05-07 00:18:01.000000000 +0000
++++ kwave-19.04.1/po/es/docs/kwave/index.docbook 2019-05-12 04:22:05.268821135 +0000
+@@ -1651,7 +1651,7 @@
+ ><menuchoice
+ > <shortcut
+ ><keycombo
+->&Space;</keycombo
++><keycap>Space</keycap></keycombo
+ ></shortcut
+ > <guimenu
+ >Reproducción</guimenu
+@@ -1665,7 +1665,7 @@
+ ><menuchoice
+ > <shortcut
+ ><keycombo
+->&Space;</keycombo
++><keycap>Space</keycap></keycombo
+ ></shortcut
+ > <guimenu
+ >Reproducir</guimenu
+@@ -1839,7 +1839,7 @@
+ >entrada de menú / atajo de teclado:<menuchoice
+ > <shortcut
+ ><keycombo
+->&Ctrl; &Space;</keycombo
++>&Ctrl; <keycap>Space</keycap></keycombo
+ ></shortcut
+ > <guimenu
+ >Vista</guimenu
+@@ -1981,7 +1981,7 @@
+ >entrada de menú / atajo de teclado: <menuchoice
+ > <shortcut
+ ><keycombo
+->&Ctrl;&Home;</keycombo
++>&Ctrl;<keycap>Home</keycap></keycombo
+ ></shortcut
+ > <guimenu
+ >Vista</guimenu
+@@ -2000,7 +2000,7 @@
+ >entrada de menú / atajo de teclado: <menuchoice
+ > <shortcut
+ ><keycombo
+->&Ctrl;&End;</keycombo
++>&Ctrl;<keycap>End</keycap></keycombo
+ ></shortcut
+ > <guimenu
+ >Vista</guimenu
+@@ -2019,7 +2019,7 @@
+ >entrada de menú / atajo de teclado: <menuchoice
+ > <shortcut
+ ><keycombo
+->&PgUp;</keycombo
++><keycap>PgUp</keycap></keycombo
+ ></shortcut
+ > <guimenu
+ >Vista</guimenu
+@@ -2051,7 +2051,7 @@
+ >entrada de menú / atajo de teclado: <menuchoice
+ > <shortcut
+ ><keycombo
+->&PgDn;</keycombo
++><keycap>PgDn</keycap></keycombo
+ ></shortcut
+ > <guimenu
+ >Vista</guimenu
+@@ -2083,7 +2083,7 @@
+ >entrada de menú / atajo de teclado: <menuchoice
+ > <shortcut
+ ><keycombo
+->&Right;</keycombo
++><keycap>→</keycap></keycombo
+ ></shortcut
+ > <guimenu
+ >Vista</guimenu
+@@ -2115,7 +2115,7 @@
+ >entrada de menú / atajo de teclado: <menuchoice
+ > <shortcut
+ ><keycombo
+->&Left;</keycombo
++><keycap>←</keycap></keycombo
+ ></shortcut
+ > <guimenu
+ >Vista</guimenu
+@@ -2372,7 +2372,7 @@
+ >expandir la selección al principio de la señal (primera muestra): <menuchoice
+ > <shortcut
+ ><keycombo
+->&Shift;&Home;</keycombo
++>&Shift;<keycap>Home</keycap></keycombo
+ ></shortcut
+ > <guimenu
+ >Editar</guimenu
+@@ -2388,7 +2388,7 @@
+ >expandir la selección al final de la señal (última muestra): <menuchoice
+ > <shortcut
+ ><keycombo
+->&Shift;&End;</keycombo
++>&Shift;<keycap>End</keycap></keycombo
+ ></shortcut
+ > <guimenu
+ >Editar</guimenu
diff --git a/user/kwayland-server/APKBUILD b/user/kwayland-server/APKBUILD
new file mode 100644
index 000000000..79bdeab8c
--- /dev/null
+++ b/user/kwayland-server/APKBUILD
@@ -0,0 +1,43 @@
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
+pkgname=kwayland-server
+pkgver=5.24.5
+pkgrel=1
+pkgdesc="KDE Wayland server component"
+url="https://www.kde.org/"
+arch="all"
+options="!check" # Requires D-Bus.
+license="LGPL-2.1+ AND LGPL-2.1-only AND LGPL-3.0-only AND BSD-3-Clause AND MIT AND MIT-CMU"
+depends="plasma-wayland-protocols"
+docdepends="kwayland-doc"
+makedepends="cmake extra-cmake-modules kwayland-dev libglvnd-dev qt5-qtbase-dev
+ qt5-qtwayland-dev qt5-qtwayland-tools wayland-dev wayland-protocols
+ qt5-qttools-dev doxygen $docdepends"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://download.kde.org/stable/plasma/$pkgver/kwayland-server-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DBUILD_QCH:BOOL=ON \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="72159618a22233b9b49cab8ee1a804f629763e903a2e711c8c23f990544d79b5d27e768c33f8d844c916e41a6d3a2af5ddcab69d0448569adc247e0f737975f5 kwayland-server-5.24.5.tar.xz"
diff --git a/user/kwayland/APKBUILD b/user/kwayland/APKBUILD
index 63d5ae8fc..abd7263d2 100644
--- a/user/kwayland/APKBUILD
+++ b/user/kwayland/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kwayland
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Qt wrapper libraries for Wayland"
url="https://www.kde.org/"
@@ -9,14 +9,14 @@ arch="all"
options="!check" # Requires running Wayland compositor
license="LGPL-2.1-only OR LGPL-3.0-only"
depends=""
-depends_dev="qt5-qtbase-dev wayland-dev"
+depends_dev="wayland-dev"
makedepends="$depends_dev cmake extra-cmake-modules doxygen graphviz
- qt5-qttools-dev"
+ qt5-qttools-dev qt5-qtwayland qt5-qtwayland-dev qt5-qtwayland-tools
+ wayland-protocols plasma-wayland-protocols"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kwayland-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +28,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="8b6eaa2f57b09857447f702e2e0f253413edd6938459d407437aac7dddf1313002f6c4c4f32df861c723479fdf4642084a360cd6406729cb42c627f488ac6aa7 kwayland-5.54.0.tar.xz"
+sha512sums="56d10d1048967d0c54ba88339b31ddef4b5cf3a3aa743f8fac56f5c97292112d7fa998107a854e999a54ac4ab4659e7dbf6d6c496856de4e91c45df9fafdf399 kwayland-5.94.0.tar.xz"
diff --git a/user/kwidgetsaddons/APKBUILD b/user/kwidgetsaddons/APKBUILD
index 3571dbf18..e01b537b0 100644
--- a/user/kwidgetsaddons/APKBUILD
+++ b/user/kwidgetsaddons/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kwidgetsaddons
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework containing ready-made widgets for common tasks"
url="https://www.kde.org/"
@@ -17,7 +17,6 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kwidgetsaddons-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,18 +28,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e52375a10af10bd1134d33e793511fa91c135079d2479686ce0f559e31e2e6a71de311773c6c6353343b8ebd3c29e35aa604402cf6cc0b53169775c3babc6bc8 kwidgetsaddons-5.54.0.tar.xz"
+sha512sums="321c742465d911fe7358e77aef6f73175387eb906b9247a2e81880efb5c4d335bb2045186eb73a6425869d1372792785cd1165077eaa7414acb10384ea45ee4d kwidgetsaddons-5.94.0.tar.xz"
diff --git a/user/kwin/APKBUILD b/user/kwin/APKBUILD
index e25ff42ac..2be15a607 100644
--- a/user/kwin/APKBUILD
+++ b/user/kwin/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=kwin
-pkgver=5.12.7
-pkgrel=0
+pkgver=5.24.5
+pkgrel=1
pkgdesc="Modern, stylish window manager (requires OpenGL)"
url="https://www.kde.org/"
arch="all"
options="!check" # Requires accelerated X11 desktop
license="GPL-2.0+ AND (GPL-2.0-only OR GPL-3.0-only) AND LGPL-2.1-only"
-depends="qt5-qtmultimedia"
+depends="plasma-framework qt5-qtmultimedia qt5-qtquickcontrols2"
depends_dev="qt5-qtbase-dev libepoxy-dev libxcb-dev kconfig-dev kcoreaddons-dev
kwindowsystem-dev"
makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev python3
qt5-qtdeclarative-dev qt5-qtscript-dev qt5-qtsensors-dev eudev-dev
qt5-qtmultimedia-dev qt5-qtx11extras-dev fontconfig-dev freetype-dev
- libdrm-dev libinput-dev libx11-dev libxkbcommon-dev mesa-dev
+ libdrm-dev libinput-dev libx11-dev libxi-dev libxkbcommon-dev mesa-dev
wayland-dev xcb-util-cursor-dev xcb-util-image-dev xcb-util-wm-dev
+ lcms2-dev libcap-dev libqaccessibilityclient-dev xwayland libglvnd-dev
- breeze-dev kactivities-dev kcompletion-dev kconfigwidgets-dev
- kcmutils-dev kcrash-dev kdeclarative-dev kdecoration-dev
+ breeze breeze-dev kactivities-dev kcompletion-dev kconfigwidgets-dev
+ kcmutils-dev kcrash-dev kdeclarative-dev kdecoration-dev kirigami2-dev
kglobalaccel-dev ki18n-dev kiconthemes-dev kidletime-dev kinit-dev
- kio-dev knewstuff-dev knotifications-dev kpackage-dev kscreenlocker-dev
- kservice-dev ktextwidgets-dev kwayland-dev kwidgetsaddons-dev
- kxmlgui-dev plasma-framework-dev"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+ kio-dev knewstuff-dev knotifications-dev kpackage-dev krunner-dev
+ kscreenlocker-dev kservice-dev ktextwidgets-dev kwayland-dev
+ kwayland-server-dev kwidgetsaddons-dev kxmlgui-dev plasma-framework-dev
+ qt5-qtvirtualkeyboard-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-wayland"
source="https://download.kde.org/stable/plasma/$pkgver/kwin-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -38,18 +39,29 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ -DBUILD_TESTING=OFF \
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
+ rm -rf "$pkgdir"/usr/lib/systemd
}
-sha512sums="acb58cd5681727aa2ebcfb75d2abc3ea636811b490d8b15a4b89e55cfb81ce8aeed9568a52d4d1c3274852f26823ec5301a6721d9be64ba9a2b65e04f6029760 kwin-5.12.7.tar.xz"
+wayland() {
+ pkgdesc="$pkgdesc (Wayland server)"
+ depends="$pkgname=$pkgver-r$pkgrel xwayland"
+
+ mkdir -p "$subpkgdir"/usr/lib/qt5/plugins
+ mv "$pkgdir"/usr/lib/qt5/plugins/org.kde.kwin.waylandbackends \
+ "$subpkgdir"/usr/lib/qt5/plugins/
+ mkdir -p "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/kwin_wayland* "$subpkgdir"/usr/bin/
+}
+
+sha512sums="4fad8b39a588a44f89e2640358d8e563047fa889a9bdaf246c1c87d320aa5f5b9d3d6bef702314fb06d2bfe16d0445efe736de60d94b4409f9b5efcdac48d089 kwin-5.24.5.tar.xz"
diff --git a/user/kwindowsystem/APKBUILD b/user/kwindowsystem/APKBUILD
index ed4148241..7f2dfc6ce 100644
--- a/user/kwindowsystem/APKBUILD
+++ b/user/kwindowsystem/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kwindowsystem
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for introspecting the running X11 window manager"
url="https://www.kde.org/"
@@ -10,14 +10,13 @@ options="!check" # Requires X11 running
license="MIT AND (LGPL-2.1-only OR LGPL-3.0-only)"
depends=""
depends_dev="qt5-qtbase-dev libx11-dev libxcb-dev xcb-util-keysyms-dev
- qt5-qtx11extras-dev libxrender-dev"
+ xcb-util-wm-dev qt5-qtx11extras-dev libxrender-dev"
makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev doxygen
graphviz"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kwindowsystem-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,18 +28,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="144181636b5f272a4a248bfa90ebc2410ab4b0adca034b086ce86fc208d63607f00f1b8e2193647d5fc72c696f3b02d5d718a3125d4703c548e7a8a85da47690 kwindowsystem-5.54.0.tar.xz"
+sha512sums="908f8bffdfbcc17a605a3e46c652508859b34d2990a171509af8c3b886f62a0c9724697f82e08949625e407c4daa6b4bd5ed80d949b6365060c17bc01e8a5944 kwindowsystem-5.94.0.tar.xz"
diff --git a/user/kwordquiz/APKBUILD b/user/kwordquiz/APKBUILD
index 3fb34c0f3..9062d4575 100644
--- a/user/kwordquiz/APKBUILD
+++ b/user/kwordquiz/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kwordquiz
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Flash card trainer for KDE"
url="https://www.kde.org/applications/education/kwordquiz/"
@@ -14,10 +14,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev ki18n-dev kcrash-dev
knotifications-dev kxmlgui-dev kdelibs4support-dev
libkeduvocdocument-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/kwordquiz-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/kwordquiz-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e4e122317bc2935bf6f23d353b91002607b80b7320e6b976924d03b8c3ef42fecb3236b2af2f01ee4c859854507ed8a51a4e3b991b047ad955e82ddd726e27a7 kwordquiz-18.12.3.tar.xz"
+sha512sums="ccb67e5c10137257ffbb24a109222121fb83c0df54e94a8b59f06d6de859253fc5896b82d6f3c6b1bbfa87502e058f02d251a092c27bf31886a4ca11bf474f3f kwordquiz-22.04.2.tar.xz"
diff --git a/user/kxmlgui/APKBUILD b/user/kxmlgui/APKBUILD
index dc799c694..d6264c113 100644
--- a/user/kxmlgui/APKBUILD
+++ b/user/kxmlgui/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kxmlgui
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for creating user interfaces using XML"
url="https://www.kde.org/"
@@ -10,15 +10,15 @@ options="!check" # Test suite requires OpenGL-accelerated X11 session
license="LGPL-2.1-only AND LGPL-2.1+"
depends=""
depends_dev="qt5-qtbase-dev kcoreaddons-dev kitemviews-dev kconfig-dev
- kconfigwidgets-dev kiconthemes-dev ktextwidgets-dev kglobalaccel-dev
- attica-dev"
+ kconfigwidgets-dev kiconthemes-dev ktextwidgets-dev kglobalaccel-dev"
+docdepends="kcoreaddons-doc kauth-doc kwidgetsaddons-doc kcodecs-doc
+ kconfig-doc kconfigwidgets-doc"
makedepends="$depends_dev cmake extra-cmake-modules doxygen graphviz
- qt5-qttools-dev"
+ qt5-qttools-dev $docdepends"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kxmlgui-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -30,18 +30,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="bde15df90e758f778116d29446dd30b16628b02050ac6ba73dd2c9505bbf26f13106a7257680009169dc1d8c196ac7f3e8c1ffad2d63a6f0a9b8fb66ae89bbf5 kxmlgui-5.54.0.tar.xz"
+sha512sums="6f220a270263a97d4e6965360d0e8c908a0a99ae29cced7fd8a971d1f2ed9a6b180697ebb6fc93012ac3ea3f7b22c25539cd35c70ddf840ab2c0f63cd21e6bc5 kxmlgui-5.94.0.tar.xz"
diff --git a/user/kxmlrpcclient/APKBUILD b/user/kxmlrpcclient/APKBUILD
index 8480f168c..89ca9476b 100644
--- a/user/kxmlrpcclient/APKBUILD
+++ b/user/kxmlrpcclient/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kxmlrpcclient
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Qt library for writing XML-RPC clients"
url="https://www.kde.org/"
@@ -12,10 +12,9 @@ depends_dev="qt5-qtbase-dev ki18n-dev kio-dev"
makedepends="$depends_dev cmake extra-cmake-modules python3 doxygen graphviz
qt5-qttools-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/frameworks/${pkgver%.*}/kxmlrpcclient-$pkgver.tar.xz"
+source="https://download.kde.org/stable/frameworks/${pkgver%.*}/portingAids/kxmlrpcclient-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="853f1a4c79a1fca278e2eb7d5c53aa47e4998276112428ec9cb3388c73eb9dcc4374510890ffbfc0ad52812622fae73ed4fd871e053dc4663d8ccd1883b76a83 kxmlrpcclient-5.54.0.tar.xz"
+sha512sums="a01581958ee673f2eccf03559516e919ca90ac3d7811d6aa656607614d692aa53c589369e121eb39268ce84a7a080b16d985ef048f127a121bb02ca0f7b630ca kxmlrpcclient-5.94.0.tar.xz"
diff --git a/user/kxstitch/APKBUILD b/user/kxstitch/APKBUILD
index a8634b0b9..d9ff8e851 100644
--- a/user/kxstitch/APKBUILD
+++ b/user/kxstitch/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kxstitch
-pkgver=2.1.1
+pkgver=2.2.0
pkgrel=0
pkgdesc="Cross-stitch pattern editor by KDE"
url="https://userbase.kde.org/KXStitch"
@@ -15,7 +15,6 @@ subpackages="$pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/kxstitch/$pkgver/kxstitch-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} \
+ .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d5a6b6d06bfb894dd7404cb81350389f1ebf5c8a463eb792358abd67f362d1e1f578d06319461a006625864f1c4a69ebb4ccd0db422870c3eae0516c9132a3b3 kxstitch-2.1.1.tar.xz"
+sha512sums="bf09130a35bc605db2bbd6e5e129ac494e8f02b920d4a8d6705b5030a9339306b3b302bd988839e1684da3e5e15e91d655dadf916eb4bf2dc9c1322fd435281d kxstitch-2.2.0.tar.xz"
diff --git a/user/kyua/APKBUILD b/user/kyua/APKBUILD
new file mode 100644
index 000000000..ffa102b4c
--- /dev/null
+++ b/user/kyua/APKBUILD
@@ -0,0 +1,34 @@
+# Maintainer:
+pkgname=kyua
+pkgver=0.13
+pkgrel=1
+pkgdesc="Testing framework for infrastructure software"
+url="https://github.com/jmmv/kyua"
+arch="all"
+license="BSD-3-Clause"
+depends=""
+makedepends="atf-dev lutok-dev sqlite-dev"
+options="!check" # doesn't pass without sysctl tweaking.
+subpackages="$pkgname-doc"
+source="https://github.com/jmmv/kyua/releases/download/kyua-$pkgver/kyua-$pkgver.tar.gz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make -j1 DESTDIR="$pkgdir" install
+}
+
+sha512sums="80ecf4fd888d4759122f3c1d1d5b06a19135e06f7bca1ef8458c7a5e78c1b6baff54969c863c93f11c40611ca256fc0334402531397b16788fb3ec701dd278ae kyua-0.13.tar.gz"
diff --git a/user/labplot/APKBUILD b/user/labplot/APKBUILD
index 35cd3cfb2..6aabbd392 100644
--- a/user/labplot/APKBUILD
+++ b/user/labplot/APKBUILD
@@ -1,11 +1,12 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=labplot
-pkgver=2.5.0
-pkgrel=2
+pkgver=2.9.0
+pkgrel=0
pkgdesc="Interactive tool for graphing and analysis of scientific data"
-url="https://www.kde.org/applications/education/labplot/"
+url="https://www.kde.org/applications/education/labplot2"
arch="all"
+options="!check" # all tests require X11
license="GPL-2.0-only"
depends="shared-mime-info"
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
@@ -13,14 +14,12 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
kdoctools-dev ki18n-dev kiconthemes-dev kdelibs4support-dev kxmlgui-dev
knewstuff-dev ktextwidgets-dev kwidgetsaddons-dev gsl-dev fftw-dev
qt5-qtserialport-dev syntax-highlighting-dev bison libexecinfo-dev
- cantor-dev"
+ cantor-dev docbook-xsl lz4-dev poppler-dev poppler-qt5-dev
+ kuserfeedback-dev readstat-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/labplot/$pkgver/labplot-$pkgver.tar.xz
- liborigin-endian.patch
- "
+source="https://download.kde.org/stable/labplot/$pkgver/labplot-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -31,20 +30,17 @@ build() {
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS -D_GNU_SOURCE" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
# gives incorrect results
CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E fittest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="a4b285917e30b0ac00cb8c8ad6827ba3884d95fccc0511a0a317bb2d637e48e6579929c45cfb8bba737bb5a01472a2baa9d812a688730ac4fa40b23cc6625eba labplot-2.5.0.tar.xz
-d251300ca0992637453ef12021f3fa4ba0ed5651a19b27bee7573f50b101aaa787544c035bf0d00b9a9ef14156536ce027879d605ede228761754b762db88ded liborigin-endian.patch"
+sha512sums="d06e373e463d9cf3df81eec367167350572975366785b6c88bdab947288fbc21a9eb8e706cb1a831967b8bf0a8039f2f919e14ae7cfb40b21e66f862e38c5d45 labplot-2.9.0.tar.xz"
diff --git a/user/labplot/liborigin-endian.patch b/user/labplot/liborigin-endian.patch
deleted file mode 100644
index b40782a3a..000000000
--- a/user/labplot/liborigin-endian.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff --git a/OriginAnyParser.cpp b/OriginAnyParser.cpp
-index c9e863e..2637945 100644
---- a/liborigin/OriginAnyParser.cpp
-+++ b/liborigin/OriginAnyParser.cpp
-@@ -24,10 +24,18 @@
- #include <cinttypes>
-
- /* define a macro to get an int (or uint) from a istringstream in binary mode */
--#define GET_INT(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 4);};
--#define GET_SHORT(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 2);};
--#define GET_FLOAT(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 4);};
-+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
-+#define GET_SHORT(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 2);};
-+#define GET_INT(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 4);};
-+#define GET_FLOAT(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 4);};
- #define GET_DOUBLE(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 8);};
-+#else
-+void inline swap_bytes(unsigned char* data, int size) {int i = 0, j = size - 1; while(i < j) {std::swap(data[i], data[j]); ++i, --j;}}
-+#define GET_SHORT(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 2); swap_bytes(reinterpret_cast<unsigned char *>(&ovalue), 2);};
-+#define GET_INT(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 4); swap_bytes(reinterpret_cast<unsigned char *>(&ovalue), 4);};
-+#define GET_FLOAT(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 4); swap_bytes(reinterpret_cast<unsigned char *>(&ovalue), 4);};
-+#define GET_DOUBLE(iss, ovalue) {iss.read(reinterpret_cast<char *>(&ovalue), 8); swap_bytes(reinterpret_cast<unsigned char *>(&ovalue), 8);};
-+#endif
-
- OriginAnyParser::OriginAnyParser(const string& fileName)
- : file(fileName.c_str(),ios::binary),
diff --git a/user/ladspa/APKBUILD b/user/ladspa/APKBUILD
index 6c9a1112b..4a24d03ef 100644
--- a/user/ladspa/APKBUILD
+++ b/user/ladspa/APKBUILD
@@ -1,25 +1,24 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=ladspa
-pkgver=1.15
+pkgver=1.17
pkgrel=0
pkgdesc="Linux Audio Developer's Simple Plug-in API, examples and tools"
-url="http://www.ladspa.org/"
+url="https://www.ladspa.org/"
arch="all"
options="!check" # Currently fails on armhf and aarch64.
license="LGPL-2.1-only"
depends=""
-makedepends=""
+makedepends="libsndfile-dev"
subpackages="$pkgname-dev"
-source="https://github.com/OpenMandrivaAssociation/ladspa/raw/master/ladspa_sdk_1.13.tgz
- fallback-ladspa-path.patch
+source="https://www.ladspa.org/download/${pkgname}_sdk_${pkgver}.tgz
fix-memleak-in-plugin-scanning.patch
"
-builddir="$srcdir/ladspa_sdk/src"
+builddir="$srcdir/ladspa_sdk_$pkgver/src"
prepare() {
default_prepare
- sed -i 's/mkdirhier/mkdir -p/' makefile
+ sed -i 's/mkdirhier/mkdir -p/' Makefile
}
build() {
@@ -36,6 +35,5 @@ package() {
INSTALL_BINARY_DIR="$pkgdir/usr/bin/" install
}
-sha512sums="a1dab807fda58e08869d3f519be5fa91c394690eb13006fbe7f20b332548e4676b32b01273f5695bf36c8da72190c07618662a76d50f991b3f05068ac2b346ef ladspa_sdk_1.13.tgz
-00891ac5d1e3ca17cf7d99e7d894b50f9a7df8eea80cd791593cf637bf9f4f7e658d0124c69aa32bb90a14150737a38cb48552c7991f3f2b6674b3634440504a fallback-ladspa-path.patch
+sha512sums="c096e70d245c50ffad379f2c9aab2735c205dfe7c27b5710cad6e43b39f8accc7b8bd2cd7ebbea2c399ad76018b3d4c701ed271de552d098b12ab218a58f0497 ladspa_sdk_1.17.tgz
1a96b24a47c2c82f7c2f66e2ee711f0ecbed9b03260562b72ced1bd4c8f0e518d15fc7c15951b95b1999e3dae1723b855fd3431a9795279f8a88ad68900e48e7 fix-memleak-in-plugin-scanning.patch"
diff --git a/user/ladspa/fallback-ladspa-path.patch b/user/ladspa/fallback-ladspa-path.patch
deleted file mode 100644
index a0a3c43a3..000000000
--- a/user/ladspa/fallback-ladspa-path.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-diff -upr ladspa_sdk.orig/src/load.c ladspa_sdk/src/load.c
---- ./load.c 2012-09-26 07:37:24.000000000 +0300
-+++ ./load.c 2012-09-26 07:38:58.000000000 +0300
-@@ -54,6 +54,8 @@ dlopenLADSPA(const char * pcFilename, in
- to search. */
-
- pcLADSPAPath = getenv("LADSPA_PATH");
-+ if (! pcLADSPAPath)
-+ pcLADSPAPath = "/usr/lib/ladspa";
-
- if (pcLADSPAPath) {
-
-diff -upr ladspa_sdk.orig/src/search.c ladspa_sdk/src/search.c
---- ./search.c 2012-09-26 07:37:24.000000000 +0300
-+++ ./search.c 2012-09-26 07:38:46.000000000 +0300
-@@ -99,10 +99,7 @@ LADSPAPluginSearch(LADSPAPluginSearchCal
-
- pcLADSPAPath = getenv("LADSPA_PATH");
- if (!pcLADSPAPath) {
-- fprintf(stderr,
-- "Warning: You do not have a LADSPA_PATH "
-- "environment variable set.\n");
-- return;
-+ pcLADSPAPath = "/usr/lib/ladspa";
- }
-
- pcStart = pcLADSPAPath;
diff --git a/user/lame/APKBUILD b/user/lame/APKBUILD
index 71f48fae4..1e25ea32a 100644
--- a/user/lame/APKBUILD
+++ b/user/lame/APKBUILD
@@ -6,11 +6,11 @@ pkgdesc="MP3 encoder and graphical frame analyzer"
url="http://lame.sourceforge.net/"
arch="all"
license="LGPL-2.0+"
+depends=""
+makedepends="ncurses-dev"
+([ is_$CBUILD_ARCH != "is_pmmx" ] && [ is_$CBUILD_ARCH != "is_x86_64" ]) || makedepends="$makedepends nasm"
subpackages="$pkgname-dev $pkgname-doc"
-makedepends="ncurses-dev autoconf automake libtool"
-([ $CBUILD_ARCH != "pmmx" ] && [ $CBUILD_ARCH != "x86_64" ]) || makedepends="$makedepends nasm"
source="https://downloads.sourceforge.net/project/lame/lame/$pkgver/$pkgname-$pkgver.tar.gz"
-builddir="$srcdir"/$pkgname-$pkgver
# secfixes:ss
# 3.100-r0:
@@ -27,8 +27,6 @@ builddir="$srcdir"/$pkgname-$pkgver
# - CVE-2017-11720
prepare() {
- cd "$builddir"
-
default_prepare
# fix for parallel builds
@@ -36,12 +34,9 @@ prepare() {
# fix for pic build with new nasm
sed -i -e '/define sp/s/+/ + /g' libmp3lame/i386/nasm.h
-
- aclocal && automake --force --add-missing
}
build() {
- cd "$builddir"
LIBS="-ltinfo" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -55,13 +50,10 @@ build() {
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
-
make DESTDIR="$pkgdir" install
}
diff --git a/user/latte-dock/APKBUILD b/user/latte-dock/APKBUILD
new file mode 100644
index 000000000..ca0b1c592
--- /dev/null
+++ b/user/latte-dock/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=latte-dock
+pkgver=0.10.8
+pkgrel=0
+pkgdesc="KDE dock"
+url="https://kde.org/applications/utilities/org.kde.latte-dock"
+arch="all"
+license="GPL-2.0+"
+depends="kirigami2 plasma-workspace qqc2-desktop-style qt5-qtgraphicaleffects
+ qt5-qtquickcontrols"
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
+ kactivities-dev karchive-dev kcoreaddons-dev kcrash-dev kdbusaddons-dev
+ kdeclarative-dev kglobalaccel-dev kguiaddons-dev ki18n-dev
+ kiconthemes-dev knewstuff-dev knotifications-dev kwayland-dev
+ kwindowsystem-dev kxmlgui-dev plasma-framework-dev kirigami2-dev"
+subpackages="$pkgname-lang"
+source="https://download.kde.org/stable/latte-dock/latte-dock-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="a1148401477d7c2a5123694820443313cd13196a8a2f86815aa89900ac5fb1f8196fc3b99b861ee2c30211071f474965093c0dae42f4b02bb4071c71e8d7bed5 latte-dock-0.10.8.tar.xz"
diff --git a/user/layer-shell-qt/APKBUILD b/user/layer-shell-qt/APKBUILD
new file mode 100644
index 000000000..073be8d83
--- /dev/null
+++ b/user/layer-shell-qt/APKBUILD
@@ -0,0 +1,40 @@
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
+pkgname=layer-shell-qt
+pkgver=5.24.5
+pkgrel=0
+pkgdesc="Qt library to consume Wayland wl-layer-shell protocol"
+url="https://www.kde.org/"
+arch="all"
+license="LGPL-3.0+ AND MIT AND BSD-3-Clause AND CC0-1.0"
+depends=""
+makedepends="cmake extra-cmake-modules libxkbcommon-dev qt5-qtbase-dev
+ qt5-qtdeclarative-dev qt5-qtwayland-dev qt5-qtwayland-tools wayland-dev
+ wayland-protocols"
+subpackages="$pkgname-dev"
+source="https://download.kde.org/stable/plasma/$pkgver/layer-shell-qt-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="e9aeb94d7200543eef03950f6e3ccf3a60faf66bcf048760ea35d27c621bbced712411501f9d48fdaf98a36708a1a202c0531bbc94df0ccf99278ffd106b7abc layer-shell-qt-5.24.5.tar.xz"
diff --git a/user/lbxproxy/APKBUILD b/user/lbxproxy/APKBUILD
deleted file mode 100644
index f72865a4f..000000000
--- a/user/lbxproxy/APKBUILD
+++ /dev/null
@@ -1,45 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=lbxproxy
-pkgver=1.0.3
-pkgrel=0
-pkgdesc="X11 proxy server for the Low Bandwidth extension"
-url="https://www.X.Org/"
-arch="all"
-license="X11"
-depends=""
-makedepends="libice-dev liblbxutil-dev libx11-dev libxext-dev util-macros
- xorgproto-dev"
-subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/lbxproxy-$pkgver.tar.bz2"
-
-prepare() {
- cd "$builddir"
- default_prepare
- chmod a+w config.sub
- update_config_sub
-}
-
-build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
-}
-
-check() {
- cd "$builddir"
- make check
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
-}
-
-sha512sums="e025101ba6743f98717958c3ff561df3f0fea7b491b2a41639cb8a84ffe9d82d980dcaaa8f50408e3a1a8ecfbd29fbe599a16a0f5de454b05ff82bc2629f68f2 lbxproxy-1.0.3.tar.bz2"
diff --git a/user/lcms2/APKBUILD b/user/lcms2/APKBUILD
index a70ba2a39..78e1743b7 100644
--- a/user/lcms2/APKBUILD
+++ b/user/lcms2/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
+# Contributor: Sergey Lukin <sergej.lukin@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=lcms2
-pkgver=2.9
+pkgver=2.12
pkgrel=0
pkgdesc="Colour management engine using ICC standard"
url="http://www.littlecms.com/"
@@ -10,17 +10,16 @@ license="MIT"
depends=""
depends_dev="libjpeg-turbo-dev tiff-dev zlib-dev"
makedepends="$depends_dev"
-install=""
subpackages="$pkgname-dev $pkgname-doc $pkgname-utils"
-source="http://www.littlecms.com/lcms2-$pkgver.tar.gz
- "
+source="https://github.com/mm2/Little-CMS/releases/download/lcms$pkgver/$pkgname-$pkgver.tar.gz"
# secfixes:
+# 2.11-r0:
+# - CVE-2018-16435
# 2.8-r1:
# - CVE-2016-10165
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -38,12 +37,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -53,4 +50,4 @@ utils() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}
-sha512sums="70b1c51fa8d137d5072425e580745ff1fbf49c6e8bb1da0a8adb0647d3b7c095208793cb02de1e8d1a01363b8575fa60c61bedbff99bbec57a44228239cb00e5 lcms2-2.9.tar.gz"
+sha512sums="967e8ac9a1d1aa3be45dc82362b9bc71c555e8577441efda57dc12d0bf84ed9188460c52eb8542d399ce9ab43bd4191988ed22b254ef34c6c1877bbb935952ed lcms2-2.12.tar.gz"
diff --git a/user/lcov/APKBUILD b/user/lcov/APKBUILD
new file mode 100644
index 000000000..85c57f5f1
--- /dev/null
+++ b/user/lcov/APKBUILD
@@ -0,0 +1,27 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=lcov
+pkgver=1.15
+pkgrel=0
+pkgdesc="Graphical frontend for GCC GCov"
+url="http://ltp.sourceforge.net/coverage/lcov.php"
+arch="noarch"
+license="GPL-2.0+"
+depends="perl"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://github.com/linux-test-project/lcov/releases/download/v$pkgver/lcov-$pkgver.tar.gz"
+
+build() {
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ GIT_DIR= make PREFIX=/usr DESTDIR="$pkgdir" install
+}
+
+sha512sums="dda0eadbd0ea2093f17cba039309ccda3dbcb7266d083b46bda61e02cd7f049d66de49be1e005157c3e5af910d2703ffbc9cfe7f1242bd67b9787f8508e4d052 lcov-1.15.tar.gz"
diff --git a/user/lesscpy/APKBUILD b/user/lesscpy/APKBUILD
index dba0fced1..b85dd07b5 100644
--- a/user/lesscpy/APKBUILD
+++ b/user/lesscpy/APKBUILD
@@ -1,30 +1,29 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=lesscpy
-pkgver=0.13.0
+pkgver=0.14.0
pkgrel=0
pkgdesc="LESS language compiler, written in Python"
url=" "
arch="noarch"
+options="!check" # Unpackaged dependencies
license="MIT"
depends="python3 py3-ply py3-six"
+#checkdepends="coverage py3-flake8 py3-nose"
makedepends="python3-dev"
subpackages=""
-source="lesscpy-$pkgver.tar.gz::https://github.com/lesscpy/lesscpy/archive/$pkgver.tar.gz"
+source="https://pypi.python.org/packages/source/l/$pkgname/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py check
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="fc540e792dd5b094e284d23257ee48aef7c72cd1733a3d5ffa1ab87821db694c6ab3f2afc0d3b39b82bc5b8a8d52b496e5b413186c4190b6fd59eb687cd38014 lesscpy-0.13.0.tar.gz"
+sha512sums="333015e3d4169fafedf0c295d12d5f0eadb8bea2576d147f1461e5854638b0501ea3038a945924efd81629b66dcc7ffcd3fabd12933529cb5fd4b962e87fe2c3 lesscpy-0.14.0.tar.gz"
diff --git a/user/libaacs/APKBUILD b/user/libaacs/APKBUILD
index 6278e5c9f..b4243813f 100644
--- a/user/libaacs/APKBUILD
+++ b/user/libaacs/APKBUILD
@@ -1,19 +1,18 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libaacs
-pkgver=0.9.0
+pkgver=0.10.0
pkgrel=0
pkgdesc="Library to decrypt Advanced Access Content System content"
url="https://www.videolan.org/developers/libaacs.html"
arch="all"
license="LGPL-2.1+"
+depends=""
makedepends="bison flex libgcrypt-dev libgpg-error-dev"
subpackages="$pkgname-dev"
source="https://download.videolan.org/pub/videolan/libaacs/$pkgver/libaacs-$pkgver.tar.bz2"
build() {
- cd "$builddir"
-
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b9c658db22a0966486070d3b762509a7c0120469ab29d1e57c1b624cad309701de8b92455ec649db4d731be4a5c29c38fb4f99bb7617dbb4254270284a1903f6 libaacs-0.9.0.tar.bz2"
+sha512sums="4527749c3c78fd270012b3b36e916356a4aeb8f90169e781a00739f01f190121691042607209864e9b676ede9741f614c6003a7dfbb350dc020e1fa94cd6d66e libaacs-0.10.0.tar.bz2"
diff --git a/user/libabw/APKBUILD b/user/libabw/APKBUILD
index 0bb3a9494..c07007945 100644
--- a/user/libabw/APKBUILD
+++ b/user/libabw/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=libabw
-pkgver=0.1.2
+pkgver=0.1.3
pkgrel=0
pkgdesc="Import filter and tools for AbiWord documents"
url="https://wiki.documentfoundation.org/DLP/Libraries/libabw"
@@ -15,8 +15,6 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
source="http://dev-www.libreoffice.org/src/$pkgname/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
-
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -30,7 +28,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -39,4 +36,4 @@ tools() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="a365c1aa047a97a86eee6bce8463646bdf248a51013139ee288402a832fd545586e072d7c7fc11a56f42e3637de9e922197be20d0587e53c51fd80ced409a6cd libabw-0.1.2.tar.xz"
+sha512sums="0d2646e1bad1e11b3da43714ac5931fc67ffdbc4e7a25a44ef5b6e6a41de1e0ae14596b4a87cceb07bf56dbbe9344622b3d60afcb054ee0ab8577ca8e9b5c289 libabw-0.1.3.tar.xz"
diff --git a/user/libao/APKBUILD b/user/libao/APKBUILD
index 425116964..581b5c148 100644
--- a/user/libao/APKBUILD
+++ b/user/libao/APKBUILD
@@ -8,12 +8,11 @@ arch="all"
options="!check" # No test suite.
license="GPL-2.0+"
depends=""
-makedepends="alsa-lib-dev autoconf automake pulseaudio-dev"
+makedepends="alsa-lib-dev autoconf automake libtool pulseaudio-dev"
subpackages="$pkgname-doc $pkgname-dev $pkgname-pulse"
source="$pkgname-$pkgver.tar.gz::https://github.com/xiph/libao/archive/$pkgver.tar.gz"
build() {
- cd "$builddir"
./autogen.sh
./configure \
--build=$CBUILD \
@@ -25,7 +24,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libart-lgpl/APKBUILD b/user/libart-lgpl/APKBUILD
index 8eb73fdb3..ac519161e 100644
--- a/user/libart-lgpl/APKBUILD
+++ b/user/libart-lgpl/APKBUILD
@@ -11,17 +11,14 @@ depends=""
makedepends=""
subpackages="$pkgname-dev"
source="https://download.gnome.org/sources/libart_lgpl/2.3/libart_lgpl-$pkgver.tar.bz2"
-
builddir="$srcdir"/libart_lgpl-$pkgver
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -30,7 +27,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libass/APKBUILD b/user/libass/APKBUILD
index 3b9b22908..874c3e15e 100644
--- a/user/libass/APKBUILD
+++ b/user/libass/APKBUILD
@@ -1,19 +1,18 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libass
-pkgver=0.14.0
+pkgver=0.15.2
pkgrel=0
pkgdesc="Portable library for rendering (Advanced) Substation Alpha subtitles"
url="https://github.com/libass/libass"
arch="all"
license="ISC"
+depends=""
makedepends="freetype-dev fribidi-dev fontconfig-dev harfbuzz-dev"
subpackages="$pkgname-dev"
source="https://github.com/libass/libass/releases/download/$pkgver/libass-$pkgver.tar.xz"
-sha512sums="0f5fe5d7e662ee1d649981f829e5ef7a53457754f74faaed5679252a5a6769c8f267b6119cda922ebc6a8e5b5b331569f13813ac74881b4e94da7b2e8143a9e6 libass-0.14.0.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,12 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
+sha512sums="4a352d2d21d8a7f25d593f0456cd057912589e55c0709dbf33150d23253fa7859da41584238f03c51782e066a0f92c6849c36b6210324cdb57ed01539921a39b libass-0.15.2.tar.xz"
diff --git a/user/libassuan/APKBUILD b/user/libassuan/APKBUILD
index 50c7b4f1f..3ad753051 100644
--- a/user/libassuan/APKBUILD
+++ b/user/libassuan/APKBUILD
@@ -12,7 +12,6 @@ subpackages="$pkgname-dev $pkgname-doc"
source="https://www.gnupg.org/ftp/gcrypt/$pkgname/$pkgname-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -21,12 +20,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libatasmart/APKBUILD b/user/libatasmart/APKBUILD
index fcc9881f6..92bc67977 100644
--- a/user/libatasmart/APKBUILD
+++ b/user/libatasmart/APKBUILD
@@ -1,4 +1,4 @@
-# Contributor: Carlo Landmeter
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libatasmart
pkgver=0.19
@@ -15,13 +15,11 @@ subpackages="$pkgname-dev $pkgname-doc"
source="http://0pointer.de/public/$pkgname-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -36,7 +34,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libatomic_ops/APKBUILD b/user/libatomic_ops/APKBUILD
index 2008be5af..da5866d77 100644
--- a/user/libatomic_ops/APKBUILD
+++ b/user/libatomic_ops/APKBUILD
@@ -1,12 +1,13 @@
# Contributor: Bartłomiej Piotrowski <bpiotrowski@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libatomic_ops
-pkgver=7.6.10
+pkgver=7.6.14
pkgrel=0
pkgdesc="Provides semi-portable access to hardware provided atomic memory operations"
arch="all"
url="https://github.com/ivmai/libatomic_ops"
license="GPL-2.0-only"
+depends=""
makedepends=""
subpackages="$pkgname-dev $pkgname-doc"
source="$url/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz"
@@ -37,4 +38,4 @@ package() {
install -Dm644 doc/LICENSING.txt "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
}
-sha512sums="4661445503ef4303e873559af319ad799a7eddad3df45ad602cf338c594a642ad4333a36fa91722f0d8c48acd38bbf45c60a468c7375d14824520a83c1109ec9 libatomic_ops-7.6.10.tar.gz"
+sha512sums="da83886b4d766da64b27672eede40bd5787523a4c308ac7bd3f03ac831ae1a141ba21e5f5ada27bfcf811b9fb04d8a519331ea2573af036f8791958668dad851 libatomic_ops-7.6.14.tar.gz"
diff --git a/user/libavc1394/APKBUILD b/user/libavc1394/APKBUILD
index 5fd7c7ef6..100aa176d 100644
--- a/user/libavc1394/APKBUILD
+++ b/user/libavc1394/APKBUILD
@@ -2,28 +2,26 @@
# Maintainer:
pkgname=libavc1394
pkgver=0.5.4
-pkgrel=3
+pkgrel=4
pkgdesc="Audio/Video control library for FireWire devices"
url="https://sourceforge.net/projects/libavc1394/"
arch="all"
license="LGPL-2.1+"
depends=""
-makedepends="libraw1394-dev libtool automake autoconf"
-[ "$CLIBC" != "eglibc" ] && makedepends="$makedepends argp-standalone"
+makedepends="libraw1394-dev libtool automake autoconf argp-standalone-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://downloads.sourceforge.net/libavc1394/libavc1394-$pkgver.tar.gz
automake.patch
- argp.patch"
+ argp.patch
+ "
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
libtoolize && aclocal && autoconf && automake --add-missing
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -36,15 +34,13 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
sha512sums="ef07631cd2de9b79dec9d81247d705be318101e8f8a1fe007b946ffab3dfe7b97f392144614d867ef6b2315b6c0e82d53e915f07855d4e21401645293e18842a libavc1394-0.5.4.tar.gz
8854bed6b9efa4b2bb56762614bcbceadb5cb1cdd393fd676476d40672cc3965962da764543f8628f51567a32ecf5035edb35b883b8963f94bce034ff4793c11 automake.patch
-77bf60530b6b81f6bd3c69a11de7ac015f1182fcd8c2586d0fd9605818c3ccde310c386f30c00166853a405f60c13bf6b2d304327ec181de28609c58b215ab31 argp.patch"
+f71c498aa1ad6889ce66db194ceb94d8559fe9a26739bcffa8d9cb1e910f40b9cb8613db8a71cf46f0bd61c77f2e48dddbdcafb5f7d9483b2200470a1c6cd2ea argp.patch"
diff --git a/user/libavc1394/argp.patch b/user/libavc1394/argp.patch
index 9c86a625e..ec1401976 100644
--- a/user/libavc1394/argp.patch
+++ b/user/libavc1394/argp.patch
@@ -4,7 +4,7 @@
AC_HEADER_STDC
AC_CHECK_HEADERS(sys/time.h sys/types.h unistd.h string.h netinet/in.h stdio.h)
-+AC_SEARCH_LIBS([argp_usage], [argp], [],
++AC_SEARCH_LIBS([argp_help], [argp], [],
+ [AC_MSG_ERROR([argp not found. Consider installing argp-standalone])])
PKG_CHECK_MODULES(LIBRAW1394, libraw1394 >= 1.0.0)
diff --git a/user/libayatana-indicator/APKBUILD b/user/libayatana-indicator/APKBUILD
index 4372a2b44..f307a6d47 100644
--- a/user/libayatana-indicator/APKBUILD
+++ b/user/libayatana-indicator/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libayatana-indicator
-pkgver=0.6.2
+pkgver=0.8.4
pkgrel=0
pkgdesc="Gnome library implementing the StatusNotifierItem specification"
url="https://ayatanaindicators.github.io/"
@@ -9,18 +9,17 @@ arch="all"
options="!check" # incompetent test author
license="GPL-3.0-only"
depends=""
-makedepends="ayatana-ido-dev gtk+3.0-dev"
+makedepends="autoconf automake ayatana-ido-dev gtk+3.0-dev libtool
+ wayland-protocols"
subpackages="$pkgname-dev"
source="libayatana-indicator-$pkgver.tar.gz::https://github.com/AyatanaIndicators/libayatana-indicator/archive/$pkgver.tar.gz"
prepare() {
- cd "$builddir"
default_prepare
autoreconf -vif
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,13 +31,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
DESTDIR="$pkgdir" make -j1 install
}
-sha512sums="47a89a4f59d547e4aeeeba245ec7df360e18dc9f8a8c256cbeaf2a95e335f2734873457b2b0fdef8c2fdeaf780dda38cfe020c335a3447a2175914d580aeb8de libayatana-indicator-0.6.2.tar.gz"
+sha512sums="33f1f89ee89ec865d1a828fc3d2fd8ae9d4d46cd294a30c3fd94985ec04d8f19b989ad8b5ef1938b8e2b0d781b86da18668175d9a80715ef98ffd4cdd52d3b7f libayatana-indicator-0.8.4.tar.gz"
diff --git a/user/libblockdev/APKBUILD b/user/libblockdev/APKBUILD
index 98eeda9dd..fdf1e6d57 100644
--- a/user/libblockdev/APKBUILD
+++ b/user/libblockdev/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libblockdev
-pkgver=2.21
+pkgver=2.26
pkgrel=0
pkgdesc="Library for manipulating block devices"
url="http://storaged.org/libblockdev/"
@@ -15,7 +15,6 @@ subpackages="$pkgname-dev"
source="https://github.com/storaged-project/libblockdev/releases/download/$pkgver-1/libblockdev-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,13 +27,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="7e6e12716e18c5e48f3b2207f132c242d99ce540f55de3b6932ac3427cb532d9074358c828d9702df71068a8454c642a4c0ff96e62a567ed1c1247c59ece432b libblockdev-2.21.tar.gz"
+sha512sums="ddd4e9c22135bd7dad0bb9bc254ac0c63e3bacc592e7c5a0c846e367da3fc248bf6187f1c81407c3bce599d3b0ceeec9a8a0030ad8e981e245f715b35eaec523 libblockdev-2.26.tar.gz"
diff --git a/user/libbluray/APKBUILD b/user/libbluray/APKBUILD
index 6d230fcb5..dc548d86c 100644
--- a/user/libbluray/APKBUILD
+++ b/user/libbluray/APKBUILD
@@ -1,20 +1,19 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libbluray
-pkgver=1.1.1
+pkgver=1.2.0
pkgrel=0
pkgdesc="Library for Blu-Ray disc playback"
url="https://www.videolan.org/developers/libbluray.html"
arch="all"
options="!check" # Test requires an actual BD-ROM to play
license="LGPL-2.1+"
+depends=""
makedepends="fontconfig-dev libxml2-dev"
subpackages="$pkgname-dev"
source="https://download.videolan.org/pub/videolan/libbluray/$pkgver/libbluray-$pkgver.tar.bz2"
build() {
- cd "$builddir"
-
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,8 +27,7 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="0a3bcef06d2a58c51c3d46934c32941ec0606dc9b71fe36f72a6e34ab8113cf72cfb6e2fdd51f23e0a44ccd404323f5ac5c666aa1d839ae16cc775267cbce839 libbluray-1.1.1.tar.bz2"
+sha512sums="d10413b6b86ff2d2e7c4b0103546f2142727cc5209ddb7b227aa74e27384f2e0b9abee37bf8ccc5b0cdfcaeebfb0669cf20903a247df278a8ad6dbd27469d324 libbluray-1.2.0.tar.bz2"
diff --git a/user/libbsd/0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch b/user/libbsd/0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch
deleted file mode 100644
index 0d4007d09..000000000
--- a/user/libbsd/0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch
+++ /dev/null
@@ -1,366 +0,0 @@
-From 88adbe1a855b7aa95bd925c80ed83c86f3fc42e3 Mon Sep 17 00:00:00 2001
-From: Khem Raj <raj.khem@gmail.com>
-Date: Sun, 6 Nov 2016 09:39:31 -0800
-Subject: [PATCH 1/3] Replace __BEGIN_DECLS and __END_DECLS
-
-Signed-off-by: Khem Raj <raj.khem@gmail.com>
----
-Upstream-Status: Pending
-
- include/bsd/err.h | 10 ++++++++--
- include/bsd/libutil.h | 10 ++++++++--
- include/bsd/md5.h | 10 ++++++++--
- include/bsd/nlist.h | 10 ++++++++--
- include/bsd/readpassphrase.h | 10 ++++++++--
- include/bsd/stdio.h | 10 ++++++++--
- include/bsd/stdlib.h | 10 ++++++++--
- include/bsd/string.h | 10 ++++++++--
- include/bsd/stringlist.h | 10 ++++++++--
- include/bsd/unistd.h | 10 ++++++++--
- include/bsd/vis.h | 10 ++++++++--
- include/bsd/wchar.h | 10 ++++++++--
- src/hash/sha512.h | 10 ++++++++--
- 13 files changed, 104 insertions(+), 26 deletions(-)
-
-diff --git a/include/bsd/err.h b/include/bsd/err.h
-index 12fd051..43dfc32 100644
---- a/include/bsd/err.h
-+++ b/include/bsd/err.h
-@@ -42,7 +42,10 @@
-
- #include <stdarg.h>
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- void warnc(int code, const char *format, ...)
- __printflike(2, 3);
- void vwarnc(int code, const char *format, va_list ap)
-@@ -51,6 +54,9 @@ void errc(int status, int code, const char *format, ...)
- __printflike(3, 4);
- void verrc(int status, int code, const char *format, va_list ap)
- __printflike(3, 0);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif
-diff --git a/include/bsd/libutil.h b/include/bsd/libutil.h
-index ebb6160..28b919d 100644
---- a/include/bsd/libutil.h
-+++ b/include/bsd/libutil.h
-@@ -53,7 +53,10 @@ struct pidfh {
- ino_t pf_ino;
- };
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- int humanize_number(char *buf, size_t len, int64_t bytes,
- const char *suffix, int scale, int flags);
- int expand_number(const char *_buf, uint64_t *_num);
-@@ -66,7 +69,10 @@ int pidfile_close(struct pidfh *pfh);
- int pidfile_remove(struct pidfh *pfh);
-
- char *fparseln(FILE *, size_t *, size_t *, const char[3], int);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- /* humanize_number(3) */
- #define HN_DECIMAL 0x01
-diff --git a/include/bsd/md5.h b/include/bsd/md5.h
-index 9a75fad..3531fd6 100644
---- a/include/bsd/md5.h
-+++ b/include/bsd/md5.h
-@@ -30,7 +30,10 @@ typedef struct MD5Context {
- #include <sys/cdefs.h>
- #include <sys/types.h>
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- void MD5Init(MD5_CTX *);
- void MD5Update(MD5_CTX *, const uint8_t *, size_t)
- __attribute__((__bounded__(__string__,2,3)));
-@@ -49,6 +52,9 @@ char *MD5FileChunk(const char *, char *, off_t, off_t)
- char *MD5Data(const uint8_t *, size_t, char *)
- __attribute__((__bounded__(__string__,1,2)))
- __attribute__((__bounded__(__minbytes__,3,MD5_DIGEST_STRING_LENGTH)));
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif /* _MD5_H_ */
-diff --git a/include/bsd/nlist.h b/include/bsd/nlist.h
-index 2730237..0389ab7 100644
---- a/include/bsd/nlist.h
-+++ b/include/bsd/nlist.h
-@@ -30,8 +30,14 @@
- #include <sys/cdefs.h>
- #include <a.out.h>
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- extern int nlist(const char *filename, struct nlist *list);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif
-diff --git a/include/bsd/readpassphrase.h b/include/bsd/readpassphrase.h
-index e1dacc3..76e0d33 100644
---- a/include/bsd/readpassphrase.h
-+++ b/include/bsd/readpassphrase.h
-@@ -34,8 +34,14 @@
- #include <sys/cdefs.h>
- #include <sys/types.h>
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- char * readpassphrase(const char *, char *, size_t, int);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif /* !_READPASSPHRASE_H_ */
-diff --git a/include/bsd/stdio.h b/include/bsd/stdio.h
-index 7697425..b5b3efd 100644
---- a/include/bsd/stdio.h
-+++ b/include/bsd/stdio.h
-@@ -41,7 +41,10 @@
- #include <sys/cdefs.h>
- #include <sys/types.h>
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- const char *fmtcheck(const char *, const char *);
-
- /* XXX: The function requires cooperation from the system libc to store the
-@@ -69,7 +72,10 @@ FILE *funopen(const void *cookie,
- #define fwopen(cookie, fn) funopen(cookie, NULL, fn, NULL, NULL)
-
- int fpurge(FILE *fp);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif
- #endif
-diff --git a/include/bsd/stdlib.h b/include/bsd/stdlib.h
-index 0604cad..b9f0515 100644
---- a/include/bsd/stdlib.h
-+++ b/include/bsd/stdlib.h
-@@ -46,7 +46,10 @@
- #include <sys/stat.h>
- #include <stdint.h>
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- uint32_t arc4random(void);
- void arc4random_stir(void);
- void arc4random_addrandom(u_char *dat, int datlen);
-@@ -73,6 +76,9 @@ long long strtonum(const char *nptr, long long minval, long long maxval,
- const char **errstr);
-
- char *getbsize(int *headerlenp, long *blocksizep);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif
-diff --git a/include/bsd/string.h b/include/bsd/string.h
-index ee2f953..fbf8c54 100644
---- a/include/bsd/string.h
-+++ b/include/bsd/string.h
-@@ -36,16 +36,22 @@
- #include <sys/cdefs.h>
- #include <sys/types.h>
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- size_t strlcpy(char *dst, const char *src, size_t siz);
- size_t strlcat(char *dst, const char *src, size_t siz);
- char *strnstr(const char *str, const char *find, size_t str_len);
- void strmode(mode_t mode, char *str);
-
- #if !defined(__GLIBC__) || \
- (defined(__GLIBC__) && (!__GLIBC_PREREQ(2, 25) || !defined(_GNU_SOURCE)))
- void explicit_bzero(void *buf, size_t len);
- #endif
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif
-diff --git a/include/bsd/stringlist.h b/include/bsd/stringlist.h
-index e3c42e9..40d0a52 100644
---- a/include/bsd/stringlist.h
-+++ b/include/bsd/stringlist.h
-@@ -43,12 +43,18 @@ typedef struct _stringlist {
- size_t sl_cur;
- } StringList;
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- StringList *sl_init(void);
- int sl_add(StringList *, char *);
- void sl_free(StringList *, int);
- char *sl_find(StringList *, const char *);
- int sl_delete(StringList *, const char *, int);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif /* _STRINGLIST_H */
-diff --git a/include/bsd/unistd.h b/include/bsd/unistd.h
-index 1f9c5f8..5b2f4c7 100644
---- a/include/bsd/unistd.h
-+++ b/include/bsd/unistd.h
-@@ -45,7 +45,10 @@
- #define S_ISTXT S_ISVTX
- #endif
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- extern int optreset;
-
- #ifdef LIBBSD_OVERLAY
-@@ -68,6 +71,9 @@ void setproctitle(const char *fmt, ...)
- __printflike(1, 2);
-
- int getpeereid(int s, uid_t *euid, gid_t *egid);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif
-diff --git a/include/bsd/vis.h b/include/bsd/vis.h
-index 835d2d6..63c951e 100644
---- a/include/bsd/vis.h
-+++ b/include/bsd/vis.h
-@@ -74,7 +74,10 @@
-
- #include <sys/cdefs.h>
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- char *vis(char *, int, int, int);
- int strvis(char *, const char *, int);
- int strvisx(char *, const char *, size_t, int);
-@@ -83,6 +86,9 @@ int strunvis(char *, const char *);
- int strunvisx(char *, const char *, int);
- ssize_t strnunvis(char *, const char *, size_t);
- int unvis(char *, int, int *, int);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif /* !_VIS_H_ */
-diff --git a/include/bsd/wchar.h b/include/bsd/wchar.h
-index 33a500e..aa70742 100644
---- a/include/bsd/wchar.h
-+++ b/include/bsd/wchar.h
-@@ -43,12 +43,18 @@
- #include <sys/cdefs.h>
- #include <sys/types.h>
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
- wchar_t *fgetwln(FILE *stream, size_t *len);
-
- size_t wcslcat(wchar_t *dst, const wchar_t *src, size_t size);
- size_t wcslcpy(wchar_t *dst, const wchar_t *src, size_t size);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif
- #endif
-diff --git a/src/hash/sha512.h b/src/hash/sha512.h
-index 4f368a1..27ddc24 100644
---- a/src/hash/sha512.h
-+++ b/src/hash/sha512.h
-@@ -39,7 +39,10 @@ typedef struct SHA512Context {
- unsigned char buf[128];
- } SHA512_CTX;
-
--__BEGIN_DECLS
-+/* __BEGIN_DECLS */
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-
- void SHA512_Init(SHA512_CTX *);
- void SHA512_Update(SHA512_CTX *, const void *, size_t);
-@@ -48,6 +51,9 @@ char *SHA512_End(SHA512_CTX *, char *);
- char *SHA512_File(const char *, char *);
- char *SHA512_FileChunk(const char *, char *, off_t, off_t);
- char *SHA512_Data(const void *, unsigned int, char *);
--__END_DECLS
-+#ifdef __cplusplus
-+}
-+#endif
-+/* __END_DECLS */
-
- #endif /* !_SHA512_H_ */
---
-2.10.2
-
diff --git a/user/libbsd/APKBUILD b/user/libbsd/APKBUILD
deleted file mode 100644
index 3c5cb2cf1..000000000
--- a/user/libbsd/APKBUILD
+++ /dev/null
@@ -1,54 +0,0 @@
-# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
-# Contributor: William Pitcock <nenolod@dereferenced.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=libbsd
-pkgver=0.9.1
-pkgrel=0
-pkgdesc="Commonly used BSD functions not implemented by all libcs"
-url="https://libbsd.freedesktop.org/"
-arch="all"
-license="BSD-2-Clause-NetBSD AND BSD-3-Clause AND BSD-4-Clause AND BSD-5-Clause AND Expat AND ISC AND Public-Domain AND Beerware"
-depends="musl>=1.1.16-r22"
-depends_dev="bsd-compat-headers linux-headers"
-makedepends="$depends_dev autoconf automake libtool"
-subpackages="$pkgname-dev $pkgname-doc"
-source="https://libbsd.freedesktop.org/releases/$pkgname-$pkgver.tar.xz
- 0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch
- disable-fpurge-test.patch
- headers.patch
- "
-
-prepare() {
- default_prepare
-
- cd "$builddir"
- autoreconf -fi
-}
-
-build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --infodir=/usr/share/info \
- --localstatedir=/var
- make
-}
-
-check() {
- cd "$builddir"
- make check
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
-}
-
-sha512sums="435822b8f2495a5e2705e5ab5c834a4f0f3a177b3e5c46a7c6162924507ca984e957e94a512b5ebd0067ecb413bac458fade357709ef199e9b75edf0315de91c libbsd-0.9.1.tar.xz
-5a3302601e9534ce8493122b20cc53fe320e0d884ca4abf041a8d151175c076e26ac9ef521c65b1654ea2295bd0251b70b0bdc80ed8a03c98777aab8502719ca 0001-Replace-__BEGIN_DECLS-and-__END_DECLS.patch
-34ab57a9b67c0d6035312dff78e6dd0d1c48442c6a1b6e769b6ebb6dccb0dac80ccc2c309724e39c097cdac944bdbd9522582f93f2567da8c6615990e2d0238b disable-fpurge-test.patch
-594d598bc7f6d34bff080a26f8d726bf779d3827423f242ee7caa9a58fc89c89d80e0677c03e9c640e0074afbdc34636fa8ffa47a99fd9c576845e3039a7ccbd headers.patch"
diff --git a/user/libbsd/disable-fpurge-test.patch b/user/libbsd/disable-fpurge-test.patch
deleted file mode 100644
index 2a1950b12..000000000
--- a/user/libbsd/disable-fpurge-test.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- libbsd-0.8.3/test/Makefile.am.old 2017-08-17 02:42:30.045825258 +0000
-+++ libbsd-0.8.3/test/Makefile.am 2017-08-17 03:49:17.928202106 +0000
-@@ -37,7 +37,6 @@
- humanize \
- fgetln \
- fparseln \
-- fpurge \
- md5 \
- proctitle-init \
- strmode \
diff --git a/user/libbsd/headers.patch b/user/libbsd/headers.patch
deleted file mode 100644
index 5b8f26425..000000000
--- a/user/libbsd/headers.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- libbsd-0.9.1/src/flopen.c.old 2018-05-21 02:33:33.000000000 +0000
-+++ libbsd-0.9.1/src/flopen.c 2018-09-09 17:43:59.850000000 +0000
-@@ -32,6 +32,7 @@
- #include <sys/stat.h>
-
- #include <errno.h>
-+#include <fcntl.h>
- #include <stdarg.h>
- #include <unistd.h>
-
diff --git a/user/libburn/APKBUILD b/user/libburn/APKBUILD
index 38116b74f..8b49b5d1c 100644
--- a/user/libburn/APKBUILD
+++ b/user/libburn/APKBUILD
@@ -1,18 +1,18 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libburn
-pkgver=1.5.0
+pkgver=1.5.4
pkgrel=0
pkgdesc="Library for CD/DVD burning"
url="https://dev.lovelyhq.com/libburnia/web/wikis/home"
arch="all"
license="(GPL-2.0+ OR BSD-3-Clause) AND GPL-2.0+ AND BSD-3-Clause"
+depends=""
makedepends=""
subpackages="$pkgname-dev $pkgname-doc"
source="http://files.libburnia-project.org/releases/libburn-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -24,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="c524d672d79db2f6dc22f6381cd422ddaa3b61d6741c998c773772722e37c53576ae9549dd17a33c2d020c66857ecbb948f353bc22cdf28c2bb115bd2b82d4a2 libburn-1.5.0.tar.gz"
+sha512sums="dd7b14093e62e2c02011955c24e01d70ed78969b14faf7e5a63c0da97a80c438b628922532eb135af7dea8ee7c7b83554b3354160306dad852ce5bf6eb1d5ac9 libburn-1.5.4.tar.gz"
diff --git a/user/libbytesize/APKBUILD b/user/libbytesize/APKBUILD
index 4c80ef88a..cb97a469d 100644
--- a/user/libbytesize/APKBUILD
+++ b/user/libbytesize/APKBUILD
@@ -1,20 +1,20 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libbytesize
-pkgver=1.4
+pkgver=2.3
pkgrel=0
pkgdesc="Library for working with sizes in bytes"
url="https://github.com/storaged-project/libbytesize/"
arch="all"
options="!check" # Requires locale(1).
license="LGPL-2.1+"
-makedepends="gmp-dev mpfr-dev pcre-dev python3"
-subpackages="$pkgname-dev $pkgname-lang py3-bytesize:py:noarch"
+depends=""
+makedepends="gmp-dev mpfr-dev pcre2-dev python3"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang py3-bytesize:py:noarch"
source="https://github.com/storaged-project/$pkgname/releases/download/$pkgver/$pkgname-$pkgver.tar.gz
no-msgcat.patch"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -23,19 +23,14 @@ build() {
--mandir=/usr/share/man \
--localstatedir=/var \
--without-python2
- # XXX We do not have a msgfilter app in gettext-tiny.
- # This would be required to ship a Serbian translation.
- rm po/sr*
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -46,5 +41,5 @@ py() {
mv "$pkgdir"/usr/lib/python* "$subpkgdir"/usr/lib/
}
-sha512sums="54aba1f605ad662ff525c47206e8342e727c807692225361f1fa8d6a66c00f2740fc3d3672978eec2806227d85f146034042a9808e458d8d6271a08934032959 libbytesize-1.4.tar.gz
+sha512sums="23720b90f4dbf7880a640ec04e910c4c1f34637dd3621900772187cb2e1d04ec34d4900ce3c9b4083ac462b411d5a409a644f62ed76b2c57ef1f11432c58be8a libbytesize-2.3.tar.gz
5f8b46c257553672b7c2501bae99ff44594b91bfcf3f1ee209a390a8cdda693616e8207a99cea2e1263093324807a307dac9e643d1482e14f9ba604f51a05d6d no-msgcat.patch"
diff --git a/user/libcanberra/APKBUILD b/user/libcanberra/APKBUILD
index 756f8e3f7..055f57d61 100644
--- a/user/libcanberra/APKBUILD
+++ b/user/libcanberra/APKBUILD
@@ -1,4 +1,4 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libcanberra
pkgver=0.30
@@ -16,13 +16,11 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-gtk2 $pkgname-gtk3
source="http://0pointer.de/lennart/projects/$pkgname/$pkgname-$pkgver.tar.xz"
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -35,7 +33,6 @@ build() {
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
}
@@ -75,7 +72,7 @@ gtk3() {
gstreamer() {
pkgdesc="GStreamer backend for libcanberra"
- install_if="$pkgname=$pkgver-$pkgrel gstreamer"
+ install_if="$pkgname=$pkgver-r$pkgrel gstreamer"
mkdir -p "$subpkgdir"/usr/lib/libcanberra-$pkgver
mv "$pkgdir"/usr/lib/libcanberra-$pkgver/libcanberra-gstreamer.so \
"$subpkgdir"/usr/lib/libcanberra-$pkgver/
@@ -83,7 +80,7 @@ gstreamer() {
pulse() {
pkgdesc="PulseAudio backend for libcanberra"
- install_if="$pkgname=$pkgver-$pkgrel pulseaudio"
+ install_if="$pkgname=$pkgver-r$pkgrel pulseaudio"
mkdir -p "$subpkgdir"/usr/lib/libcanberra-$pkgver
mv "$pkgdir"/usr/lib/libcanberra-$pkgver/libcanberra-pulse.so \
"$subpkgdir"/usr/lib/libcanberra-$pkgver/
diff --git a/user/libcddb/APKBUILD b/user/libcddb/APKBUILD
index f28442f59..8569efffe 100644
--- a/user/libcddb/APKBUILD
+++ b/user/libcddb/APKBUILD
@@ -1,9 +1,9 @@
-# Contributor: Carlo Landmeter
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=libcddb
pkgver=1.3.2
pkgrel=5
-pkgdesc="Library that implements the different protocols (CDDBP, HTTP, SMTP) to access data on a CDDB server (e.g. http://freedb.org)."
+pkgdesc="Library to access data on a CDDB server"
url="https://sourceforge.net/projects/libcddb/"
arch="all"
options="!check" # Tests are known broken since 2009:
@@ -17,13 +17,11 @@ source="https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2
"
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -35,7 +33,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libcdio-paranoia/APKBUILD b/user/libcdio-paranoia/APKBUILD
index 9fc9a08b1..4d570c0ed 100644
--- a/user/libcdio-paranoia/APKBUILD
+++ b/user/libcdio-paranoia/APKBUILD
@@ -1,28 +1,27 @@
# Maintainer:
pkgname=libcdio-paranoia
-pkgver=0.94_p1
-_pkgver="10.2+${pkgver/_p/+}"
-pkgrel=1
+pkgver=10.2.2.0.1
+_pkgver="$(printf "$pkgver" | sed 's/10\.2\./10.2+/')"
+pkgrel=0
pkgdesc="CD paranoia on top of libcdio"
url="https://www.gnu.org/software/libcdio/"
arch="all"
license="GPL-2.0+ AND LGPL-2.0+"
+depends=""
depends_dev="ncurses-dev"
makedepends="$depends_dev libcdio-dev autoconf automake libtool"
subpackages="$pkgname-dev $pkgname-doc"
-source="http://ftp.gnu.org/gnu/libcdio/$pkgname-$_pkgver.tar.gz"
+source="https://ftp.gnu.org/gnu/libcdio/$pkgname-$_pkgver.tar.bz2
+ pkg-version-format.patch
+ "
builddir="$srcdir/$pkgname-$_pkgver"
prepare() {
default_prepare
-
- cd "$builddir"
- sed -i 's/AM_CONFIG_HEADER/AC_CONFIG_HEADER/' configure.ac
- autoreconf -i
+ autoreconf -vif
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -36,13 +35,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="9b2381491271090bac08594cb1d84de98e9f0a5afc6a2c98e9ffcf4b95addc3adcd0f0b9adeb928dfbf8178356ad6a7ccfeb048685c823d138b2af232f0b4c93 libcdio-paranoia-10.2+0.94+1.tar.gz"
+sha512sums="c4a768d11e9f62038ca8081316596c89c7fee6a314229fb42e3999757fae172a5dc167175f60d555c2442266d34fce6ce627f4124e9f3a93d0456adb09ca91f0 libcdio-paranoia-10.2+2.0.1.tar.bz2
+addcc8c2b6f62218c855d1d2ce71406626ece0a669bad89a1375d32de3991b7496b53b196d7754e75382d297b860a6c3dc1305d32aa94073eb827848d5d01c6c pkg-version-format.patch"
diff --git a/user/libcdio-paranoia/pkg-version-format.patch b/user/libcdio-paranoia/pkg-version-format.patch
new file mode 100644
index 000000000..5dc7cd286
--- /dev/null
+++ b/user/libcdio-paranoia/pkg-version-format.patch
@@ -0,0 +1,14 @@
+Upstream-Status: Not appropriate (apk bustage)
+See-also: https://git.adelielinux.org/adelie/packages/-/issues/1132
+
+--- libcdio-paranoia-10.2+2.0.1/configure.ac.old 2019-09-16 09:30:01.000000000 -0500
++++ libcdio-paranoia-10.2+2.0.1/configure.ac 2023-12-01 01:24:10.923099071 -0600
+@@ -16,7 +16,7 @@
+
+ define(RELEASE_NUM, 2.0.1)
+ define(PARANOIA_VERSION, 10.2)
+-define(LIBCDIO_PARANOIA_VERSION_STR, $1+$2)
++define(LIBCDIO_PARANOIA_VERSION_STR, $1.$2)
+
+ AC_DEFINE([PACKAGE], [libcdio-paranoia], [cdparanoia using libcdio])
+
diff --git a/user/libcdio/APKBUILD b/user/libcdio/APKBUILD
index 031f11fae..7735bdbe0 100644
--- a/user/libcdio/APKBUILD
+++ b/user/libcdio/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer:
pkgname=libcdio
-pkgver=2.0.0
-pkgrel=1
+pkgver=2.1.0
+pkgrel=0
pkgdesc="GNU Compact Disc Input and Control Library"
url="https://www.gnu.org/software/libcdio/"
arch="all"
@@ -14,7 +14,6 @@ source="https://ftp.gnu.org/gnu/libcdio/${pkgname}-${pkgver}.tar.bz2
disable-broken-test.patch"
build() {
- cd "$builddir"
LIBS="-ltinfo" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -30,12 +29,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
}
@@ -51,5 +48,5 @@ _cpp() {
mv "$pkgdir"/usr/lib/*++.* "$subpkgdir"/usr/lib/
}
-sha512sums="a18abc9ec9e8189b5f37c037e16bf24056fa603610cef58684788515555878146ad43aec4ada5e93bf54b74d0ed6dae3683043613d5996d6687e59da8bb350a0 libcdio-2.0.0.tar.bz2
+sha512sums="c290821da55fd9ae366670a58857aa6efcebc9f25b7caea063cf12f9cbda84fe770c5f59f972227fda50517ca58c5f39c0137daa0f93179e3daa45303d8b610f libcdio-2.1.0.tar.bz2
be0149128bb2fa131f514bcff848279d826340a99a05b958e104f4640bda1a89d6146b0ec348783f4bbd8a3c313c41297152f75ee04f492f08b337bd79dd9c3e disable-broken-test.patch"
diff --git a/user/libcdr/APKBUILD b/user/libcdr/APKBUILD
index d39d55e93..d1ce625fa 100644
--- a/user/libcdr/APKBUILD
+++ b/user/libcdr/APKBUILD
@@ -1,26 +1,20 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=libcdr
-pkgver=0.1.5
-pkgrel=0
+pkgver=0.1.7
+pkgrel=1
pkgdesc="Import filter and tools for Corel DRAW files"
url="https://wiki.documentfoundation.org/DLP/Libraries/libcdr"
arch="all"
license="MPL-2.0"
depends=""
depends_dev="boost-dev"
-makedepends="$depends_dev doxygen icu-dev lcms2-dev zlib-dev librevenge-dev"
checkdepends="cppunit-dev"
+makedepends="$depends_dev doxygen icu-dev lcms2-dev zlib-dev librevenge-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
source="http://dev-www.libreoffice.org/src/$pkgname/$pkgname-$pkgver.tar.xz"
-prepare() {
- default_prepare
- update_config_sub
-}
-
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -45,4 +39,4 @@ tools() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="e985389b0cbad65dbfa9f59d7f9dba55f1684f63e852f9acca9abb863cdaab17072e761b48dca690673360d643686b5e9bc9878530f0a3a8b5b98d917f892cf0 libcdr-0.1.5.tar.xz"
+sha512sums="9af327fcf9f3f3ef1c446e92f4d2ff06ebaccb54d4c65b021960a212bf416f7098006324625f3e1c00500597eaa9da39832cc27b83a6cd593e97b76b1eb63d38 libcdr-0.1.7.tar.xz"
diff --git a/user/libcmis/APKBUILD b/user/libcmis/APKBUILD
index bfc58c4d5..4917aab08 100644
--- a/user/libcmis/APKBUILD
+++ b/user/libcmis/APKBUILD
@@ -2,17 +2,19 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=libcmis
pkgver=0.5.2
-pkgrel=0
+pkgrel=1
pkgdesc="CMIS protocol client library for C/C++"
url="https://github.com/tdf/libcmis"
arch="all"
license="MPL-1.1 OR GPL-2.0+ OR LGPL-2.0+"
depends=""
depends_dev="boost-dev"
-makedepends="$depends_dev curl-dev libxml2-dev"
checkdepends="cppunit-dev"
+makedepends="$depends_dev curl-dev libxml2-dev"
subpackages="$pkgname-dev cmis-client:client"
-source="https://github.com/tdf/$pkgname/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz"
+source="https://github.com/tdf/$pkgname/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz
+ icu.patch
+ "
build() {
# Note: manpages require docbook2x to build
@@ -42,4 +44,5 @@ client() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="3dac0eed31d1dd3ac4670e501e0677196811f7875e6d1c253c8d874d6903691cbe4f1c27c8468af07bfd7f79b0d6ec4f933b28cb3bb37dcbea18bc2dd8f6e374 libcmis-0.5.2.tar.gz"
+sha512sums="3dac0eed31d1dd3ac4670e501e0677196811f7875e6d1c253c8d874d6903691cbe4f1c27c8468af07bfd7f79b0d6ec4f933b28cb3bb37dcbea18bc2dd8f6e374 libcmis-0.5.2.tar.gz
+0904a529eafa8e1cfdb673e4e7f37150b0b88886cdc32096a89153cb5856d16dc5fee52f39ae5bfea86065b20690a6e14e4b9ad11b36b682c062702b797e82cd icu.patch"
diff --git a/user/libcmis/icu.patch b/user/libcmis/icu.patch
new file mode 100644
index 000000000..6ba63ee7f
--- /dev/null
+++ b/user/libcmis/icu.patch
@@ -0,0 +1,17 @@
+--- a/inc/libcmis-c/repository.h 2018-12-27 14:07:55.000000000 +0100
++++ b/inc/libcmis-c/repository.h 2019-04-21 01:29:46.504373226 +0200
+@@ -28,12 +28,12 @@
+ #ifndef _REPOSITORY_H_
+ #define _REPOSITORY_H_
+
++#include <libxml/tree.h>
++
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+
+-#include <libxml/tree.h>
+-
+ #include "libcmis-c/libcmis-c-api.h"
+ #include "libcmis-c/types.h"
+
diff --git a/user/libconfig/APKBUILD b/user/libconfig/APKBUILD
index 8f5939f4e..bb85630e1 100644
--- a/user/libconfig/APKBUILD
+++ b/user/libconfig/APKBUILD
@@ -12,13 +12,11 @@ subpackages="$pkgname-doc $pkgname-dev $pkgname++:_cxx"
source="$pkgname-$pkgver.tar.gz::https://github.com/hyperrealm/$pkgname/archive/v$pkgver.tar.gz"
prepare() {
- cd "$builddir"
default_prepare
autoreconf -vif
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,12 +26,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir/" install
}
diff --git a/user/libcroco/APKBUILD b/user/libcroco/APKBUILD
index 0ed8d4685..4470ac952 100644
--- a/user/libcroco/APKBUILD
+++ b/user/libcroco/APKBUILD
@@ -1,24 +1,27 @@
# Maintainer:
pkgname=libcroco
pkgver=0.6.13
-pkgrel=0
+pkgrel=1
pkgdesc="GNOME CSS 2 parsing and manipulation toolkit"
url="https://gitlab.gnome.org/GNOME/libcroco"
arch="all"
options="!check" # Can only test already-installed library
license="LGPL-2.1-only"
subpackages="$pkgname-dev"
-depends=
+depends=""
makedepends="glib-dev libxml2-dev"
checkdepends="cmd:which"
-source="https://download.gnome.org/sources/$pkgname/0.6/$pkgname-$pkgver.tar.xz"
+source="https://download.gnome.org/sources/$pkgname/0.6/$pkgname-$pkgver.tar.xz
+ CVE-2020-12825.patch
+ "
# secfixes:
# 0.6.12-r2:
# - CVE-2017-7960
+# 0.6.13-r1:
+# - CVE-2020-12825
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,13 +31,12 @@ build() {
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="038a3ac9d160a8cf86a8a88c34367e154ef26ede289c93349332b7bc449a5199b51ea3611cebf3a2416ae23b9e45ecf8f9c6b24ea6d16a5519b796d3c7e272d4 libcroco-0.6.13.tar.xz"
+sha512sums="038a3ac9d160a8cf86a8a88c34367e154ef26ede289c93349332b7bc449a5199b51ea3611cebf3a2416ae23b9e45ecf8f9c6b24ea6d16a5519b796d3c7e272d4 libcroco-0.6.13.tar.xz
+ae568a259a2a3a90f6cf107b4f0d5a0dbb6cb3a560262a43b96460457a4b72b7c5f45c2df9c061ed1f94c41b71bdcf69bd55582a77bf858e46c2c3c8a55fe6e3 CVE-2020-12825.patch"
diff --git a/user/libcroco/CVE-2020-12825.patch b/user/libcroco/CVE-2020-12825.patch
new file mode 100644
index 000000000..6fa66f659
--- /dev/null
+++ b/user/libcroco/CVE-2020-12825.patch
@@ -0,0 +1,187 @@
+From 44cbd1e718d6a08e59b9300280c340218a84e089 Mon Sep 17 00:00:00 2001
+From: Michael Catanzaro <mcatanzaro@gnome.org>
+Date: Wed, 12 Aug 2020 13:54:15 -0500
+Subject: [PATCH] libcroco: Limit recursion in block and any productions
+ (CVE-2020-12825)
+
+If we don't have any limits, we can recurse forever and overflow the
+stack.
+
+This is per https://gitlab.gnome.org/Archive/libcroco/-/issues/8
+
+https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1404
+---
+ src/cr-parser.c | 44 ++++++++++++++++++++++++++--------------
+ 1 file changed, 29 insertions(+), 15 deletions(-)
+
+diff --git a/src/cr-parser.c b/src/st/croco/cr-parser.c
+index 07f4ed9e8b..8304b75614 100644
+--- a/src/cr-parser.c
++++ b/src/cr-parser.c
+@@ -136,6 +136,8 @@ struct _CRParserPriv {
+
+ #define CHARS_TAB_SIZE 12
+
++#define RECURSIVE_CALLERS_LIMIT 100
++
+ /**
+ * IS_NUM:
+ *@a_char: the char to test.
+@@ -343,9 +345,11 @@ static enum CRStatus cr_parser_parse_selector_core (CRParser * a_this);
+
+ static enum CRStatus cr_parser_parse_declaration_core (CRParser * a_this);
+
+-static enum CRStatus cr_parser_parse_any_core (CRParser * a_this);
++static enum CRStatus cr_parser_parse_any_core (CRParser * a_this,
++ guint n_calls);
+
+-static enum CRStatus cr_parser_parse_block_core (CRParser * a_this);
++static enum CRStatus cr_parser_parse_block_core (CRParser * a_this,
++ guint n_calls);
+
+ static enum CRStatus cr_parser_parse_value_core (CRParser * a_this);
+
+@@ -783,7 +787,7 @@ cr_parser_parse_atrule_core (CRParser * a_this)
+ cr_parser_try_to_skip_spaces_and_comments (a_this);
+
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, 0);
+ } while (status == CR_OK);
+
+ status = cr_tknzr_get_next_token (PRIVATE (a_this)->tknzr,
+@@ -794,7 +798,7 @@ cr_parser_parse_atrule_core (CRParser * a_this)
+ cr_tknzr_unget_token (PRIVATE (a_this)->tknzr,
+ token);
+ token = NULL;
+- status = cr_parser_parse_block_core (a_this);
++ status = cr_parser_parse_block_core (a_this, 0);
+ CHECK_PARSING_STATUS (status,
+ FALSE);
+ goto done;
+@@ -929,11 +933,11 @@ cr_parser_parse_selector_core (CRParser * a_this)
+
+ RECORD_INITIAL_POS (a_this, &init_pos);
+
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, 0);
+ CHECK_PARSING_STATUS (status, FALSE);
+
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, 0);
+
+ } while (status == CR_OK);
+
+@@ -955,10 +959,12 @@ cr_parser_parse_selector_core (CRParser * a_this)
+ *in chapter 4.1 of the css2 spec.
+ *block ::= '{' S* [ any | block | ATKEYWORD S* | ';' ]* '}' S*;
+ *@param a_this the current instance of #CRParser.
++ *@param n_calls used to limit recursion depth
+ *FIXME: code this function.
+ */
+ static enum CRStatus
+-cr_parser_parse_block_core (CRParser * a_this)
++cr_parser_parse_block_core (CRParser * a_this,
++ guint n_calls)
+ {
+ CRToken *token = NULL;
+ CRInputPos init_pos;
+@@ -966,6 +972,9 @@ cr_parser_parse_block_core (CRParser * a_this)
+
+ g_return_val_if_fail (a_this && PRIVATE (a_this), CR_BAD_PARAM_ERROR);
+
++ if (n_calls > RECURSIVE_CALLERS_LIMIT)
++ return CR_ERROR;
++
+ RECORD_INITIAL_POS (a_this, &init_pos);
+
+ status = cr_tknzr_get_next_token (PRIVATE (a_this)->tknzr, &token);
+@@ -995,13 +1004,13 @@ cr_parser_parse_block_core (CRParser * a_this)
+ } else if (token->type == CBO_TK) {
+ cr_tknzr_unget_token (PRIVATE (a_this)->tknzr, token);
+ token = NULL;
+- status = cr_parser_parse_block_core (a_this);
++ status = cr_parser_parse_block_core (a_this, n_calls + 1);
+ CHECK_PARSING_STATUS (status, FALSE);
+ goto parse_block_content;
+ } else {
+ cr_tknzr_unget_token (PRIVATE (a_this)->tknzr, token);
+ token = NULL;
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, n_calls + 1);
+ CHECK_PARSING_STATUS (status, FALSE);
+ goto parse_block_content;
+ }
+@@ -1108,7 +1117,7 @@ cr_parser_parse_value_core (CRParser * a_this)
+ status = cr_tknzr_unget_token (PRIVATE (a_this)->tknzr,
+ token);
+ token = NULL;
+- status = cr_parser_parse_block_core (a_this);
++ status = cr_parser_parse_block_core (a_this, 0);
+ CHECK_PARSING_STATUS (status, FALSE);
+ ref++;
+ goto continue_parsing;
+@@ -1122,7 +1131,7 @@ cr_parser_parse_value_core (CRParser * a_this)
+ status = cr_tknzr_unget_token (PRIVATE (a_this)->tknzr,
+ token);
+ token = NULL;
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, 0);
+ if (status == CR_OK) {
+ ref++;
+ goto continue_parsing;
+@@ -1161,10 +1170,12 @@ cr_parser_parse_value_core (CRParser * a_this)
+ * | FUNCTION | DASHMATCH | '(' any* ')' | '[' any* ']' ] S*;
+ *
+ *@param a_this the current instance of #CRParser.
++ *@param n_calls used to limit recursion depth
+ *@return CR_OK upon successfull completion, an error code otherwise.
+ */
+ static enum CRStatus
+-cr_parser_parse_any_core (CRParser * a_this)
++cr_parser_parse_any_core (CRParser * a_this,
++ guint n_calls)
+ {
+ CRToken *token1 = NULL,
+ *token2 = NULL;
+@@ -1173,6 +1184,9 @@ cr_parser_parse_any_core (CRParser * a_this)
+
+ g_return_val_if_fail (a_this, CR_BAD_PARAM_ERROR);
+
++ if (n_calls > RECURSIVE_CALLERS_LIMIT)
++ return CR_ERROR;
++
+ RECORD_INITIAL_POS (a_this, &init_pos);
+
+ status = cr_tknzr_get_next_token (PRIVATE (a_this)->tknzr, &token1);
+@@ -1211,7 +1225,7 @@ cr_parser_parse_any_core (CRParser * a_this)
+ *We consider parameter as being an "any*" production.
+ */
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, n_calls + 1);
+ } while (status == CR_OK);
+
+ ENSURE_PARSING_COND (status == CR_PARSING_ERROR);
+@@ -1236,7 +1250,7 @@ cr_parser_parse_any_core (CRParser * a_this)
+ }
+
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, n_calls + 1);
+ } while (status == CR_OK);
+
+ ENSURE_PARSING_COND (status == CR_PARSING_ERROR);
+@@ -1264,7 +1278,7 @@ cr_parser_parse_any_core (CRParser * a_this)
+ }
+
+ do {
+- status = cr_parser_parse_any_core (a_this);
++ status = cr_parser_parse_any_core (a_this, n_calls + 1);
+ } while (status == CR_OK);
+
+ ENSURE_PARSING_COND (status == CR_PARSING_ERROR);
+--
+GitLab
+
diff --git a/user/libcue/APKBUILD b/user/libcue/APKBUILD
index e989d4e41..b6ef274f2 100644
--- a/user/libcue/APKBUILD
+++ b/user/libcue/APKBUILD
@@ -1,4 +1,4 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Maintainer:
pkgname=libcue
pkgver=2.2.1
@@ -13,7 +13,6 @@ subpackages="$pkgname-dev"
source="$pkgname-$pkgver.tar.gz::https://github.com/lipnitsk/libcue/archive/v$pkgver.tar.gz"
build() {
- cd "$builddir"
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DBUILD_SHARED_LIBS=ON \
@@ -22,12 +21,10 @@ build() {
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libdaemon/APKBUILD b/user/libdaemon/APKBUILD
new file mode 100644
index 000000000..de0a34ad8
--- /dev/null
+++ b/user/libdaemon/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libdaemon
+pkgver=0.14
+pkgrel=0
+pkgdesc="Library for creating Unix daemons"
+url="http://0pointer.de/lennart/projects/libdaemon/"
+arch="all"
+license="LGPL-2.1+"
+depends=""
+makedepends="doxygen lynx"
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://0pointer.de/lennart/projects/libdaemon/libdaemon-$pkgver.tar.gz"
+
+prepare() {
+ update_config_guess
+ update_config_sub
+ default_prepare
+}
+
+build() {
+ ./configure \
+ --prefix=/usr \
+ --disable-static \
+ --disable-examples
+ make
+ make -C doc doxygen
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ mv doc/reference/man/man3/_*libdaemon_.3 doc/reference/man/man3/libdaemon.3
+ install -v -D -m644 doc/reference/html/* -t "$pkgdir"/usr/share/doc/libdaemon-0.14/reference/html/
+ install -v -D -m644 doc/reference/man/man3/* -t "$pkgdir"/usr/share/man/man3/
+}
+
+sha512sums="a96b25c09bd63cc192c1c5f8b5bf34cc6ad0c32d42ac14b520add611423b6ad3d64091a47e0c7ab9a94476a5e645529abccea3ed6b23596567163fba88131ff2 libdaemon-0.14.tar.gz"
diff --git a/user/libdbusmenu-qt/APKBUILD b/user/libdbusmenu-qt/APKBUILD
index 8b95777ca..35826dd02 100644
--- a/user/libdbusmenu-qt/APKBUILD
+++ b/user/libdbusmenu-qt/APKBUILD
@@ -1,9 +1,9 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libdbusmenu-qt
pkgver=0.9.3.16.04.20160218
-_realver=${pkgver/.16.04/+16.04}
+_realver="${pkgver%.*.*.*}+${pkgver#*.*.*.}"
pkgrel=0
pkgdesc="library to export QMenu over DBusMenu protocol"
url="https://launchpad.net/libdbusmenu-qt/"
@@ -14,28 +14,20 @@ depends=""
depends_dev="qt5-qtbase-dev"
makedepends="$depends_dev cmake doxygen"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://launchpad.net/ubuntu/+archive/primary/+files/"$pkgname"_"$_realver".orig.tar.gz"
-builddir="$srcdir"/$pkgname-$_realver
-
-prepare() {
- cd "$builddir"
- default_prepare
- mkdir -p "$builddir"/build
-}
+source="https://launchpad.net/ubuntu/+archive/primary/+files/${pkgname}_${_realver}.orig.tar.gz"
+builddir="$srcdir/$pkgname-$_realver"
build() {
- cd "$builddir"/build
cmake -DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DUSE_QT5=ON \
- "$builddir"
- make
+ -Bbuild
+ make -C build
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
sha512sums="dfaba59cedd320e6a3b5a9c0a5e13fb9e0952224e39cdd6ee3b32b03d95ac850a533e2a73835a7c0ead93b2283b9c235472bacb84e3d761ebe9e9398345314a9 libdbusmenu-qt_0.9.3+16.04.20160218.orig.tar.gz"
diff --git a/user/libdbusmenu/APKBUILD b/user/libdbusmenu/APKBUILD
new file mode 100644
index 000000000..0c1b9f693
--- /dev/null
+++ b/user/libdbusmenu/APKBUILD
@@ -0,0 +1,38 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libdbusmenu
+pkgver=16.04.0
+pkgrel=0
+pkgdesc="Library for passing menus over D-Bus"
+url="https://launchpad.net/libdbusmenu"
+arch="all"
+options="!check" # Requires Python 2.
+license="(LGPL-2.1-only OR LGPL-3.0-only) AND GPL-3.0-only"
+depends=""
+makedepends="atk-dev glib-dev gobject-introspection-dev gtk-doc gtk+3.0-dev
+ intltool json-glib-dev libx11-dev libxslt-dev vala-dev"
+subpackages="$pkgname-doc $pkgname-dev"
+source="https://launchpad.net/libdbusmenu/16.04/$pkgver/+download/libdbusmenu-$pkgver.tar.gz"
+
+build() {
+ export CFLAGS="$CFLAGS -Wno-error"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --disable-static \
+ --enable-introspection
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="ee9654ac4ed94bdebc94a6db83b126784273a417a645b2881b2ba676a5f67d7fc95dd2bb37bfb0890aa47299ed73cb21ed7de8b75f3fed6b69bfd39065062241 libdbusmenu-16.04.0.tar.gz"
diff --git a/user/libdc1394/0001-Fix-bad-variable-type-uint-int.patch b/user/libdc1394/0001-Fix-bad-variable-type-uint-int.patch
deleted file mode 100644
index c2a572857..000000000
--- a/user/libdc1394/0001-Fix-bad-variable-type-uint-int.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From 9d0c3158bc73292ca755477f60cbf5b5fd622fde Mon Sep 17 00:00:00 2001
-From: Damien Douxchamps <ddsf@douxchamps.net>
-Date: Thu, 12 Jan 2017 16:47:27 +0900
-Subject: [PATCH] Fix bad variable type uint -> int
-
-Type was change to uint in recent commit but it should have been INT.
-
-Signed-off-by: Damien Douxchamps <ddsf@douxchamps.net>
----
- libdc1394/AUTHORS | 1 +
- libdc1394/dc1394/bayer.c | 3 ++-
- 2 files changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/libdc1394/dc1394/bayer.c b/libdc1394/dc1394/bayer.c
-index 10a4c1b..cbdc417 100644
---- a/dc1394/bayer.c
-+++ b/dc1394/bayer.c
-@@ -24,6 +24,7 @@
- #include <limits.h>
- #include <math.h>
- #include <stdlib.h>
-+#include <stdint.h>
- #include <string.h>
- #include "conversions.h"
-
-@@ -775,7 +776,7 @@ dc1394_bayer_Downsample(const uint8_t *restrict bayer, uint8_t *restrict rgb, in
- {
- uint8_t *outR, *outG, *outB;
- register int i, j;
-- uint tmp;
-+ int tmp;
- int st=sx*sy;
- int p;
- int sx2=sx<<1;
---
-2.11.0
-
diff --git a/user/libdc1394/APKBUILD b/user/libdc1394/APKBUILD
index 8bed91739..138f14cf7 100644
--- a/user/libdc1394/APKBUILD
+++ b/user/libdc1394/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer:
pkgname=libdc1394
-pkgver=2.2.5
-pkgrel=4
+pkgver=2.2.6
+pkgrel=0
pkgdesc="Programming interface to control FireWire / IIDC cameras"
url="https://damien.douxchamps.net/ieee1394/libdc1394/"
arch="all"
@@ -12,12 +12,9 @@ depends=""
depends_dev="libusb-dev libraw1394-dev"
makedepends="$depends_dev linux-headers"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://downloads.sourceforge.net/project/libdc1394/libdc1394-2/$pkgver/libdc1394-$pkgver.tar.gz
- 0001-Fix-bad-variable-type-uint-int.patch
- "
+source="https://downloads.sourceforge.net/project/libdc1394/libdc1394-2/$pkgver/libdc1394-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -30,9 +27,7 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="4a02560b7b2db7199b91c35786cb9d5af51398795fc1b7f0cb577d3563b27c0d03d407fa472d9756a2f87b658350a55d29c16fef401a74f835ba86e25214d13c libdc1394-2.2.5.tar.gz
-ab19b1aecec17b1caa6b225f626b6adcf80818cb59f693df69e9f0f2b4014846be22aa93473a62da8c7ae937ea8265f90499a9561d48e6bfe931e1e00cb16c60 0001-Fix-bad-variable-type-uint-int.patch"
+sha512sums="2d60ed1054da67d8518e870193b60c1d79778858f48cc6487e252de00cc57a08548515d41914a37d0227d29e158d68892c290f83930ffd95f4a483dce5aa3d25 libdc1394-2.2.6.tar.gz"
diff --git a/user/libdca/APKBUILD b/user/libdca/APKBUILD
index 6ee2be1d5..151f517f8 100644
--- a/user/libdca/APKBUILD
+++ b/user/libdca/APKBUILD
@@ -1,18 +1,19 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libdca
-pkgver=0.0.6
+pkgver=0.0.7
pkgrel=0
pkgdesc="Free DTS Coherent Acoustics decoder"
url="https://www.videolan.org/developers/libdca.html"
arch="all"
license="GPL-2.0+"
depends=""
+makedepends="autoconf automake libtool"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.videolan.org/pub/videolan/libdca/$pkgver/libdca-$pkgver.tar.bz2"
build() {
- cd "$builddir"
+ ./bootstrap
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -24,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d264128019e7fd295a35691636311f81960c17802dbbc67764c4e00b2fdf12ebc69b057a4947b57551a130e5cfd1fef3fe3558c7067216ea04a0b6bbb881b4f1 libdca-0.0.6.tar.bz2"
+sha512sums="dae15d77d066687c882833d5bed8d65a585c1fc0277b7276563c89ddd5a83b35389ec94cca445f38af28a9b01430b72647e9afd1b08f030959e711de1a08924a libdca-0.0.7.tar.bz2"
diff --git a/user/libdisplay-info/APKBUILD b/user/libdisplay-info/APKBUILD
new file mode 100644
index 000000000..c2599774e
--- /dev/null
+++ b/user/libdisplay-info/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=libdisplay-info
+pkgver=0.2.0
+pkgrel=0
+pkgdesc="Library for obtaining display information"
+url="https://gitlab.freedesktop.org/emersion/libdisplay-info/"
+arch="all"
+license="MIT"
+depends="hwdata"
+checkdepends="edid-decode"
+makedepends="meson"
+subpackages="$pkgname-dev"
+source="https://gitlab.freedesktop.org/emersion/libdisplay-info/-/releases/$pkgver/downloads/libdisplay-info-$pkgver.tar.xz"
+
+prepare() {
+ default_prepare
+ rm -r subprojects # attempts to checkout/build edid-decode itself
+}
+
+build() {
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ . output
+ meson compile -C output
+}
+
+check() {
+ meson test -C output
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C output
+}
+
+sha512sums="6e910b832860d920a4be298a2b6925f701654bd7cdd8b3457e64663c25caa20a74b81b91f71878b9e7f5f70c5c067235f0c99293650231920c67d1241a61e1fb libdisplay-info-0.2.0.tar.xz"
diff --git a/user/libdmtx/APKBUILD b/user/libdmtx/APKBUILD
index ce8e9f442..1075dca3f 100644
--- a/user/libdmtx/APKBUILD
+++ b/user/libdmtx/APKBUILD
@@ -8,18 +8,16 @@ url="http://libdmtx.sourceforge.net/"
arch="all"
license="BSD-2-Clause"
depends=""
-makedepends=""
+makedepends="autoconf automake libtool"
subpackages="$pkgname-dev $pkgname-doc"
source="$pkgname-$pkgver.tar.gz::https://github.com/dmtx/$pkgname/archive/v$pkgver.tar.gz"
prepare() {
- cd "$builddir"
default_prepare
./autogen.sh
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,13 +30,11 @@ build() {
}
check() {
- cd "$builddir"
make CFLAGS="-std=c99" check
test/simple_test/simple_test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libdrm/APKBUILD b/user/libdrm/APKBUILD
index 4c59ef957..78e867d8a 100644
--- a/user/libdrm/APKBUILD
+++ b/user/libdrm/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libdrm
-pkgver=2.4.97
+pkgver=2.4.123
pkgrel=0
pkgdesc="Userspace interface to kernel DRM services"
url="https://dri.freedesktop.org/"
@@ -10,35 +10,38 @@ options="!check"
license="MIT"
depends=""
depends_dev="linux-headers"
-makedepends="$depends_dev bash eudev-dev libpciaccess-dev libpthread-stubs
- xmlto"
checkdepends="bash cunit-dev"
+makedepends="$depends_dev bash cairo-dev eudev-dev libpciaccess-dev libpthread-stubs
+ libatomic_ops-dev meson ninja py3-docutils xmlto"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://dri.freedesktop.org/$pkgname/$pkgname-$pkgver.tar.bz2
- ioctl.patch
- "
+source="https://dri.freedesktop.org/$pkgname/$pkgname-$pkgver.tar.xz"
build() {
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var \
- --enable-freedreno \
- --enable-udev \
- --disable-valgrind
- make
+ case $CARCH in
+ arm*|aarch64*) _arch_conf="
+ -Domap=enabled
+ -Dexynos=enabled
+ -Detnaviv=enabled
+ -Dtegra=enabled
+ " ;;
+ esac
+
+ meson \
+ -Dprefix=/usr \
+ -Dman-pages=enabled \
+ -Dudev=true \
+ -Dvalgrind=disabled \
+ $_arch_conf \
+ build
+ ninja -C build
}
check() {
- make check
+ ninja -C build test
}
package() {
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" ninja -C build install
}
-sha512sums="3e08ee9d6c9ce265d783a59b51e22449905ea73aa27f25a082a1e9e1532f7c99e1c9f7cb966eb0970be2a08e2e5993dc9aa55093b1bff548689fdb465e7145ed libdrm-2.4.97.tar.bz2
-af52fef51aaa05a4dd17919371cb9d92a77480402730bf53ba223e54df52f3825be05a7f28e6aef8c904db5ee59fe38a6c15bc6aafa7f8d31a719e80399dd51f ioctl.patch"
+sha512sums="d3e6ba26bbd609fd87ca131690547eeb6a903c0a8c28b7f5cd5d0947619da09f31daf7bf4b6c38bf5e5dc173e2ccba476338ef682d8cf06d6b71ba73fc9b948d libdrm-2.4.123.tar.xz"
diff --git a/user/libdrm/ioctl.patch b/user/libdrm/ioctl.patch
deleted file mode 100644
index 9ffe5f933..000000000
--- a/user/libdrm/ioctl.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- libdrm-2.4.83/tests/nouveau/threaded.c
-+++ libdrm-2.4.83/tests/nouveau/threaded.c
-@@ -40,7 +40,7 @@
-
- static int import_fd;
-
--int ioctl(int fd, unsigned long request, ...)
-+int ioctl(int fd, int request, ...)
- {
- va_list va;
- int ret;
diff --git a/user/libdv/APKBUILD b/user/libdv/APKBUILD
index e3dfc12f8..8c935f4af 100644
--- a/user/libdv/APKBUILD
+++ b/user/libdv/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libdv
pkgver=1.0.0
-pkgrel=0
+pkgrel=1
pkgdesc="Quasar DV codec for digital camcorders"
url="http://libdv.sourceforge.net/"
arch="all"
@@ -10,16 +10,16 @@ license="LGPL-2.1+"
depends=""
makedepends="popt-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://downloads.sourceforge.net/libdv/libdv-$pkgver.tar.gz"
+source="https://downloads.sourceforge.net/libdv/libdv-$pkgver.tar.gz
+ pic.patch
+ "
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,13 +32,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="19887a6f452fa7da8924901ad841f5c4a434a3bde56c932ddb43717592aa744281e3a8ad220231e11d7e6bc3b0e704952a8324e5f85d4e088675edceeeca7dc8 libdv-1.0.0.tar.gz"
+sha512sums="19887a6f452fa7da8924901ad841f5c4a434a3bde56c932ddb43717592aa744281e3a8ad220231e11d7e6bc3b0e704952a8324e5f85d4e088675edceeeca7dc8 libdv-1.0.0.tar.gz
+48b976dff545a41fad573f9e780da93ff4d9e236b06c5a97eeefda6c3cde4693a9a15edb67080a619c059a0e5bc8f8c3a48d6b4cf1754e0d41349fc594b94e9c pic.patch"
diff --git a/user/libdv/pic.patch b/user/libdv/pic.patch
new file mode 100644
index 000000000..10a1f8fca
--- /dev/null
+++ b/user/libdv/pic.patch
@@ -0,0 +1,1632 @@
+See-also: http://bugs.gentoo.org/show_bug.cgi?id=121871
+
+--- libdv-0.104-old/libdv/asm_common.S
++++ libdv-0.104/libdv/asm_common.S
+@@ -0,0 +1,29 @@
++/* public domain, do what you want */
++
++#ifdef __PIC__
++# define MUNG(sym) sym##@GOTOFF(%ebp)
++# define MUNG_ARR(sym, args...) sym##@GOTOFF(%ebp,##args)
++#else
++# define MUNG(sym) sym
++# define MUNG_ARR(sym, args...) sym(,##args)
++#endif
++
++#ifdef __PIC__
++# undef __i686 /* gcc define gets in our way */
++# define LOAD_PIC_REG(reg) \
++ .ifndef __i686.get_pc_thunk.reg; \
++ .section .gnu.linkonce.t.__i686.get_pc_thunk.reg,"ax",@progbits; \
++ .global __i686.get_pc_thunk.reg; \
++ .hidden __i686.get_pc_thunk.reg; \
++ .type __i686.get_pc_thunk.reg,@function; \
++ __i686.get_pc_thunk.reg: \
++ movl (%esp), %e##reg; \
++ ret; \
++ .size __i686.get_pc_thunk.reg,.-__i686.get_pc_thunk.reg; \
++ .previous; \
++ .endif; \
++ call __i686.get_pc_thunk.reg; \
++ addl $_GLOBAL_OFFSET_TABLE_, %e##reg
++#else
++# define LOAD_PIC_REG(reg)
++#endif
+--- libdv-0.104-old/libdv/dct_block_mmx.S
++++ libdv-0.104/libdv/dct_block_mmx.S
+@@ -53,19 +53,22 @@ scratch2: .quad 0
+
+ .section .note.GNU-stack, "", @progbits
+
++#include "asm_common.S"
++
+ .text
+
+ .align 8
+ .global _dv_dct_88_block_mmx
+ .hidden _dv_dct_88_block_mmx
+ .type _dv_dct_88_block_mmx,@function
+ _dv_dct_88_block_mmx:
+
+ pushl %ebp
+- movl %esp, %ebp
+ pushl %esi
+
+- movl 8(%ebp), %esi # source
++ LOAD_PIC_REG(bp)
++
++ movl 12(%esp), %esi # source
+
+ # column 0
+ movq 16*0(%esi), %mm0 # v0
+@@ -86,22 +91,22 @@ _dv_dct_88_block_mmx:
+
+ movq 16*3(%esi), %mm5 # v3
+ movq 16*4(%esi), %mm7 # v4
+- movq %mm7, scratch1 # scratch1: v4 ;
++ movq %mm7, MUNG(scratch1) # scratch1: v4 ;
+ movq %mm5, %mm7 # duplicate v3
+- paddw scratch1, %mm5 # v03: v3+v4
+- psubw scratch1, %mm7 # v04: v3-v4
+- movq %mm5, scratch2 # scratch2: v03
++ paddw MUNG(scratch1), %mm5 # v03: v3+v4
++ psubw MUNG(scratch1), %mm7 # v04: v3-v4
++ movq %mm5, MUNG(scratch2) # scratch2: v03
+ movq %mm0, %mm5 # mm5: v00
+
+- paddw scratch2, %mm0 # v10: v00+v03
+- psubw scratch2, %mm5 # v13: v00-v03
+- movq %mm3, scratch3 # scratch3: v02
++ paddw MUNG(scratch2), %mm0 # v10: v00+v03
++ psubw MUNG(scratch2), %mm5 # v13: v00-v03
++ movq %mm3, MUNG(scratch3) # scratch3: v02
+ movq %mm1, %mm3 # duplicate v01
+
+- paddw scratch3, %mm1 # v11: v01+v02
+- psubw scratch3, %mm3 # v12: v01-v02
++ paddw MUNG(scratch3), %mm1 # v11: v01+v02
++ psubw MUNG(scratch3), %mm3 # v12: v01-v02
+
+- movq %mm6, scratch4 # scratch4: v05
++ movq %mm6, MUNG(scratch4) # scratch4: v05
+ movq %mm0, %mm6 # duplicate v10
+
+ paddw %mm1, %mm0 # v10+v11
+@@ -111,10 +116,10 @@ _dv_dct_88_block_mmx:
+ movq %mm6, 16*4(%esi) # out4: v10-v11
+
+ movq %mm4, %mm0 # mm0: v06
+- paddw scratch4, %mm4 # v15: v05+v06
++ paddw MUNG(scratch4), %mm4 # v15: v05+v06
+ paddw %mm2, %mm0 # v16: v07+v06
+
+- pmulhw WA3, %mm4 # v35~: WA3*v15
++ pmulhw MUNG(WA3), %mm4 # v35~: WA3*v15
+ psllw $1, %mm4 # v35: compensate the coeefient scale
+
+ movq %mm4, %mm6 # duplicate v35
+@@ -123,7 +128,7 @@ _dv_dct_88_block_mmx:
+
+ paddw %mm5, %mm3 # v22: v12+v13
+
+- pmulhw WA1, %mm3 # v32~: WA1*v22
++ pmulhw MUNG(WA1), %mm3 # v32~: WA1*v22
+ psllw $16-NSHIFT, %mm3 # v32: compensate the coeefient scale
+ movq %mm5, %mm6 # duplicate v13
+
+@@ -134,13 +139,13 @@ _dv_dct_88_block_mmx:
+ movq %mm6, 16*6(%esi) # out6: v13-v32
+
+
+- paddw scratch4, %mm7 # v14n: v04+v05
++ paddw MUNG(scratch4), %mm7 # v14n: v04+v05
+ movq %mm0, %mm5 # duplicate v16
+
+ psubw %mm7, %mm0 # va1: v16-v14n
+- pmulhw WA5, %mm0 # va0~: va1*WA5
+- pmulhw WA4, %mm5 # v36~~: v16*WA4
+- pmulhw WA2, %mm7 # v34~~: v14n*WA2
++ pmulhw MUNG(WA5), %mm0 # va0~: va1*WA5
++ pmulhw MUNG(WA4), %mm5 # v36~~: v16*WA4
++ pmulhw MUNG(WA2), %mm7 # v34~~: v14n*WA2
+ psllw $16-WA4_SHIFT, %mm5 # v36: compensate the coeefient scale
+ psllw $16-NSHIFT, %mm7 # v34: compensate the coeefient scale
+
+@@ -188,22 +193,22 @@ _dv_dct_88_block_mmx:
+
+ movq 16*3(%esi), %mm5 # v3
+ movq 16*4(%esi), %mm7 # v4
+- movq %mm7, scratch1 # scratch1: v4 ;
++ movq %mm7, MUNG(scratch1) # scratch1: v4 ;
+ movq %mm5, %mm7 # duplicate v3
+- paddw scratch1, %mm5 # v03: v3+v4
+- psubw scratch1, %mm7 # v04: v3-v4
+- movq %mm5, scratch2 # scratch2: v03
++ paddw MUNG(scratch1), %mm5 # v03: v3+v4
++ psubw MUNG(scratch1), %mm7 # v04: v3-v4
++ movq %mm5, MUNG(scratch2) # scratch2: v03
+ movq %mm0, %mm5 # mm5: v00
+
+- paddw scratch2, %mm0 # v10: v00+v03
+- psubw scratch2, %mm5 # v13: v00-v03
+- movq %mm3, scratch3 # scratc3: v02
++ paddw MUNG(scratch2), %mm0 # v10: v00+v03
++ psubw MUNG(scratch2), %mm5 # v13: v00-v03
++ movq %mm3, MUNG(scratch3) # scratc3: v02
+ movq %mm1, %mm3 # duplicate v01
+
+- paddw scratch3, %mm1 # v11: v01+v02
+- psubw scratch3, %mm3 # v12: v01-v02
++ paddw MUNG(scratch3), %mm1 # v11: v01+v02
++ psubw MUNG(scratch3), %mm3 # v12: v01-v02
+
+- movq %mm6, scratch4 # scratc4: v05
++ movq %mm6, MUNG(scratch4) # scratc4: v05
+ movq %mm0, %mm6 # duplicate v10
+
+ paddw %mm1, %mm0 # v10+v11
+@@ -213,10 +218,10 @@ _dv_dct_88_block_mmx:
+ movq %mm6, 16*4(%esi) # out4: v10-v11
+
+ movq %mm4, %mm0 # mm0: v06
+- paddw scratch4, %mm4 # v15: v05+v06
++ paddw MUNG(scratch4), %mm4 # v15: v05+v06
+ paddw %mm2, %mm0 # v16: v07+v06
+
+- pmulhw WA3, %mm4 # v35~: WA3*v15
++ pmulhw MUNG(WA3), %mm4 # v35~: WA3*v15
+ psllw $16-NSHIFT, %mm4 # v35: compensate the coeefient scale
+
+ movq %mm4, %mm6 # duplicate v35
+@@ -225,7 +230,7 @@ _dv_dct_88_block_mmx:
+
+ paddw %mm5, %mm3 # v22: v12+v13
+
+- pmulhw WA1, %mm3 # v32~: WA3*v15
++ pmulhw MUNG(WA1), %mm3 # v32~: WA3*v15
+ psllw $16-NSHIFT, %mm3 # v32: compensate the coeefient scale
+ movq %mm5, %mm6 # duplicate v13
+
+@@ -235,13 +240,13 @@ _dv_dct_88_block_mmx:
+ movq %mm5, 16*2(%esi) # out2: v13+v32
+ movq %mm6, 16*6(%esi) # out6: v13-v32
+
+- paddw scratch4, %mm7 # v14n: v04+v05
++ paddw MUNG(scratch4), %mm7 # v14n: v04+v05
+ movq %mm0, %mm5 # duplicate v16
+
+ psubw %mm7, %mm0 # va1: v16-v14n
+- pmulhw WA2, %mm7 # v34~~: v14n*WA2
+- pmulhw WA5, %mm0 # va0~: va1*WA5
+- pmulhw WA4, %mm5 # v36~~: v16*WA4
++ pmulhw MUNG(WA2), %mm7 # v34~~: v14n*WA2
++ pmulhw MUNG(WA5), %mm0 # va0~: va1*WA5
++ pmulhw MUNG(WA4), %mm5 # v36~~: v16*WA4
+ psllw $16-NSHIFT, %mm7
+ psllw $16-WA4_SHIFT, %mm5 # v36: compensate the coeffient
+ # scale note that WA4 is shifted 1 bit less than the others
+@@ -748,11 +755,12 @@ _dv_dct_block_mmx_postscale_88:
+ _dv_dct_248_block_mmx:
+
+ pushl %ebp
+- movl %esp, %ebp
+ pushl %esi
+ pushl %edi
+
+- movl 8(%ebp), %esi # source
++ LOAD_PIC_REG(bp)
++
++ movl 16(%esp), %esi # source
+
+ # column 0
+
+@@ -779,7 +789,7 @@ _dv_dct_248_block_mmx:
+ paddw %mm1, %mm0 # v20: v10+v11
+ psubw %mm1, %mm3 # v21: v10-v11
+
+- pmulhw WA1, %mm5 # v32~: WA1*v22
++ pmulhw MUNG(WA1), %mm5 # v32~: WA1*v22
+ movq %mm4, %mm2
+ psllw $16-NSHIFT, %mm5 # v32: compensate the coeffient scale
+
+@@ -818,7 +828,7 @@ _dv_dct_248_block_mmx:
+ paddw %mm1, %mm0 # v20: v10+v11
+ psubw %mm1, %mm3 # v21: v10-v11
+
+- pmulhw WA1, %mm5 # v32~: WA1*v22
++ pmulhw MUNG(WA1), %mm5 # v32~: WA1*v22
+ movq %mm4, %mm2
+ psllw $16-NSHIFT, %mm5 # v32: compensate the coeffient scale
+
+@@ -855,7 +865,7 @@ _dv_dct_248_block_mmx:
+ paddw %mm1, %mm0 # v20: v10+v11
+ psubw %mm1, %mm3 # v21: v10-v11
+
+- pmulhw WA1, %mm5 # v32~: WA1*v22
++ pmulhw MUNG(WA1), %mm5 # v32~: WA1*v22
+ movq %mm4, %mm2
+ psllw $16-NSHIFT, %mm5 # v32: compensate the coeffient scale
+
+@@ -892,7 +902,7 @@ _dv_dct_248_block_mmx:
+ paddw %mm1, %mm0 # v20: v10+v11
+ psubw %mm1, %mm3 # v21: v10-v11
+
+- pmulhw WA1, %mm5 # v32~: WA1*v22
++ pmulhw MUNG(WA1), %mm5 # v32~: WA1*v22
+ movq %mm4, %mm2
+ psllw $16-NSHIFT, %mm5 # v32: compensate the coeffient scale
+
+--- libdv-0.104-old/libdv/dv.c
++++ libdv-0.104/libdv/dv.c
+@@ -205,6 +205,9 @@ dv_reconfigure(int clamp_luma, int clamp
+ } /* dv_reconfigure */
+
+
++extern uint8_t dv_quant_offset[4];
++extern uint8_t dv_quant_shifts[22][4];
++
+ static inline void
+ dv_decode_macroblock(dv_decoder_t *dv, dv_macroblock_t *mb, unsigned int quality) {
+ int i;
+@@ -218,7 +221,7 @@ dv_decode_macroblock(dv_decoder_t *dv, d
+ dv_idct_248 (co248, mb->b[i].coeffs);
+ } else {
+ #if ARCH_X86
+- _dv_quant_88_inverse_x86(mb->b[i].coeffs,mb->qno,mb->b[i].class_no);
++ _dv_quant_88_inverse_x86(mb->b[i].coeffs,mb->qno,mb->b[i].class_no,dv_quant_offset,dv_quant_shifts);
+ _dv_idct_88(mb->b[i].coeffs);
+ #elif ARCH_X86_64
+ _dv_quant_88_inverse_x86_64(mb->b[i].coeffs,mb->qno,mb->b[i].class_no);
+@@ -250,7 +253,7 @@ dv_decode_video_segment(dv_decoder_t *dv
+ dv_idct_248 (co248, mb->b[b].coeffs);
+ } else {
+ #if ARCH_X86
+- _dv_quant_88_inverse_x86(bl->coeffs,mb->qno,bl->class_no);
++ _dv_quant_88_inverse_x86(bl->coeffs,mb->qno,bl->class_no,dv_quant_offset,dv_quant_shifts);
+ _dv_weight_88_inverse(bl->coeffs);
+ _dv_idct_88(bl->coeffs);
+ #elif ARCH_X86_64
+--- libdv-0.104-old/libdv/encode.c
++++ libdv-0.104/libdv/encode.c
+@@ -521,7 +521,8 @@ static void reorder_block(dv_block_t *bl
+ }
+
+ extern unsigned long _dv_vlc_encode_block_mmx(dv_coeff_t* coeffs,
+- dv_vlc_entry_t ** out);
++ dv_vlc_entry_t ** out,
++ dv_vlc_entry_t * lookup);
+
+ extern unsigned long _dv_vlc_encode_block_mmx_x86_64(dv_coeff_t* coeffs,
+ dv_vlc_entry_t ** out);
+@@ -558,7 +559,7 @@ static unsigned long vlc_encode_block(dv
+ #elif ARCH_X86
+ int num_bits;
+
+- num_bits = _dv_vlc_encode_block_mmx(coeffs, &o);
++ num_bits = _dv_vlc_encode_block_mmx(coeffs, &o, vlc_encode_lookup);
+ emms();
+ #else
+ int num_bits;
+@@ -574,7 +575,7 @@ static unsigned long vlc_encode_block(dv
+ return num_bits;
+ }
+
+-extern unsigned long _dv_vlc_num_bits_block_x86(dv_coeff_t* coeffs);
++extern unsigned long _dv_vlc_num_bits_block_x86(dv_coeff_t* coeffs, unsigned char* lookup);
+ extern unsigned long _dv_vlc_num_bits_block_x86_64(dv_coeff_t* coeffs);
+
+ extern unsigned long _dv_vlc_num_bits_block(dv_coeff_t* coeffs)
+@@ -600,7 +601,7 @@ extern unsigned long _dv_vlc_num_bits_bl
+ #elif ARCH_X86_64
+ return _dv_vlc_num_bits_block_x86_64(coeffs);
+ #else
+- return _dv_vlc_num_bits_block_x86(coeffs);
++ return _dv_vlc_num_bits_block_x86(coeffs, vlc_num_bits_lookup);
+ #endif
+ }
+
+--- libdv-0.104-old/libdv/encode_x86.S
++++ libdv-0.104/libdv/encode_x86.S
+@@ -23,9 +23,6 @@
+ * The libdv homepage is http://libdv.sourceforge.net/.
+ */
+
+-.data
+-ALLONE: .word 1,1,1,1
+-VLCADDMASK: .byte 255,0,0,0,255,0,0,0
+
+
+ .section .note.GNU-stack, "", @progbits
+@@ -45,11 +43,14 @@ _dv_vlc_encode_block_mmx:
+
+ movl $63, %ecx
+
+- movl vlc_encode_lookup, %esi
++ movl 4+4*4+8(%esp), %esi # vlc_encode_lookup
+
+ pxor %mm0, %mm0
+ pxor %mm2, %mm2
+- movq VLCADDMASK, %mm1
++ pushl $0x000000FF # these four lines
++ pushl $0x000000FF # load VLCADDMASK
++ movq (%esp), %mm1 # into %mm1 off the stack
++ addl $8, %esp # --> no TEXTRELs
+ xorl %ebp, %ebp
+ subl $8, %edx
+ vlc_encode_block_mmx_loop:
+@@ -121,7 +124,7 @@ _dv_vlc_num_bits_block_x86:
+ addl $2, %edi
+
+ movl $63, %ecx
+- movl vlc_num_bits_lookup, %esi
++ movl 4+4*4+4(%esp), %esi # vlc_num_bits_lookup
+
+ vlc_num_bits_block_x86_loop:
+ movw (%edi), %ax
+@@ -579,8 +590,11 @@ _dv_need_dct_248_mmx_rows:
+ paddw %mm5, %mm1
+
+ paddw %mm1, %mm0
+-
+- pmaddwd ALLONE, %mm0
++
++ pushl $0x00010001 # these four lines
++ pushl $0x00010001 # load ALLONE
++ pmaddwd (%esp), %mm0 # into %mm0 off the stack
++ addl $8, %esp # --> no TEXTRELs
+ movq %mm0, %mm1
+ psrlq $32, %mm1
+ paddd %mm1, %mm0
+--- libdv-0.104-old/libdv/idct_block_mmx.S
++++ libdv-0.104/libdv/idct_block_mmx.S
+@@ -8,17 +8,21 @@
+
+ .section .note.GNU-stack, "", @progbits
+
++#include "asm_common.S"
++
+ .text
+ .align 4
+ .global _dv_idct_block_mmx
+ .hidden _dv_idct_block_mmx
+ .type _dv_idct_block_mmx,@function
+ _dv_idct_block_mmx:
+ pushl %ebp
+- movl %esp,%ebp
+ pushl %esi
+- leal preSC, %ecx
+- movl 8(%ebp),%esi /* source matrix */
++
++ LOAD_PIC_REG(bp)
++
++ leal MUNG(preSC), %ecx
++ movl 12(%esp),%esi /* source matrix */
+
+ /*
+ * column 0: even part
+@@ -35,7 +41,7 @@ _dv_idct_block_mmx:
+ movq %mm1, %mm2 /* added 11/1/96 */
+ pmulhw 8*8(%esi),%mm5 /* V8 */
+ psubsw %mm0, %mm1 /* V16 */
+- pmulhw x5a825a825a825a82, %mm1 /* 23170 ->V18 */
++ pmulhw MUNG(x5a825a825a825a82), %mm1 /* 23170 ->V18 */
+ paddsw %mm0, %mm2 /* V17 */
+ movq %mm2, %mm0 /* duplicate V17 */
+ psraw $1, %mm2 /* t75=t82 */
+@@ -76,7 +82,7 @@ _dv_idct_block_mmx:
+ paddsw %mm0, %mm3 /* V29 ; free mm0 */
+ movq %mm7, %mm1 /* duplicate V26 */
+ psraw $1, %mm3 /* t91=t94 */
+- pmulhw x539f539f539f539f,%mm7 /* V33 */
++ pmulhw MUNG(x539f539f539f539f),%mm7 /* V33 */
+ psraw $1, %mm1 /* t96 */
+ movq %mm5, %mm0 /* duplicate V2 */
+ psraw $2, %mm4 /* t85=t87 */
+@@ -84,15 +90,15 @@ _dv_idct_block_mmx:
+ psubsw %mm4, %mm0 /* V28 ; free mm4 */
+ movq %mm0, %mm2 /* duplicate V28 */
+ psraw $1, %mm5 /* t90=t93 */
+- pmulhw x4546454645464546,%mm0 /* V35 */
++ pmulhw MUNG(x4546454645464546),%mm0 /* V35 */
+ psraw $1, %mm2 /* t97 */
+ movq %mm5, %mm4 /* duplicate t90=t93 */
+ psubsw %mm2, %mm1 /* V32 ; free mm2 */
+- pmulhw x61f861f861f861f8,%mm1 /* V36 */
++ pmulhw MUNG(x61f861f861f861f8),%mm1 /* V36 */
+ psllw $1, %mm7 /* t107 */
+ paddsw %mm3, %mm5 /* V31 */
+ psubsw %mm3, %mm4 /* V30 ; free mm3 */
+- pmulhw x5a825a825a825a82,%mm4 /* V34 */
++ pmulhw MUNG(x5a825a825a825a82),%mm4 /* V34 */
+ nop
+ psubsw %mm1, %mm0 /* V38 */
+ psubsw %mm7, %mm1 /* V37 ; free mm7 */
+@@ -159,7 +165,7 @@ _dv_idct_block_mmx:
+ psubsw %mm7, %mm1 /* V50 */
+ pmulhw 8*9(%esi), %mm5 /* V9 */
+ paddsw %mm7, %mm2 /* V51 */
+- pmulhw x5a825a825a825a82, %mm1 /* 23170 ->V52 */
++ pmulhw MUNG(x5a825a825a825a82), %mm1 /* 23170 ->V52 */
+ movq %mm2, %mm6 /* duplicate V51 */
+ psraw $1, %mm2 /* t138=t144 */
+ movq %mm3, %mm4 /* duplicate V1 */
+@@ -200,11 +206,11 @@ _dv_idct_block_mmx:
+ * even more by doing the correction step in a later stage when the number
+ * is actually multiplied by 16
+ */
+- paddw x0005000200010001, %mm4
++ paddw MUNG(x0005000200010001), %mm4
+ psubsw %mm6, %mm3 /* V60 ; free mm6 */
+ psraw $1, %mm0 /* t154=t156 */
+ movq %mm3, %mm1 /* duplicate V60 */
+- pmulhw x539f539f539f539f, %mm1 /* V67 */
++ pmulhw MUNG(x539f539f539f539f), %mm1 /* V67 */
+ movq %mm5, %mm6 /* duplicate V3 */
+ psraw $2, %mm4 /* t148=t150 */
+ paddsw %mm4, %mm5 /* V61 */
+@@ -213,13 +219,13 @@ _dv_idct_block_mmx:
+ psllw $1, %mm1 /* t169 */
+ paddsw %mm0, %mm5 /* V65 -> result */
+ psubsw %mm0, %mm4 /* V64 ; free mm0 */
+- pmulhw x5a825a825a825a82, %mm4 /* V68 */
++ pmulhw MUNG(x5a825a825a825a82), %mm4 /* V68 */
+ psraw $1, %mm3 /* t158 */
+ psubsw %mm6, %mm3 /* V66 */
+ movq %mm5, %mm2 /* duplicate V65 */
+- pmulhw x61f861f861f861f8, %mm3 /* V70 */
++ pmulhw MUNG(x61f861f861f861f8), %mm3 /* V70 */
+ psllw $1, %mm6 /* t165 */
+- pmulhw x4546454645464546, %mm6 /* V69 */
++ pmulhw MUNG(x4546454645464546), %mm6 /* V69 */
+ psraw $1, %mm2 /* t172 */
+ /* moved from next block */
+ movq 8*5(%esi), %mm0 /* V56 */
+@@ -344,7 +350,7 @@ _dv_idct_block_mmx:
+ * movq 8*13(%esi), %mm4 tmt13
+ */
+ psubsw %mm4, %mm3 /* V134 */
+- pmulhw x5a825a825a825a82, %mm3 /* 23170 ->V136 */
++ pmulhw MUNG(x5a825a825a825a82), %mm3 /* 23170 ->V136 */
+ movq 8*9(%esi), %mm6 /* tmt9 */
+ paddsw %mm4, %mm5 /* V135 ; mm4 free */
+ movq %mm0, %mm4 /* duplicate tmt1 */
+@@ -373,17 +379,17 @@ _dv_idct_block_mmx:
+ psubsw %mm7, %mm0 /* V144 */
+ movq %mm0, %mm3 /* duplicate V144 */
+ paddsw %mm7, %mm2 /* V147 ; free mm7 */
+- pmulhw x539f539f539f539f, %mm0 /* 21407-> V151 */
++ pmulhw MUNG(x539f539f539f539f), %mm0 /* 21407-> V151 */
+ movq %mm1, %mm7 /* duplicate tmt3 */
+ paddsw %mm5, %mm7 /* V145 */
+ psubsw %mm5, %mm1 /* V146 ; free mm5 */
+ psubsw %mm1, %mm3 /* V150 */
+ movq %mm7, %mm5 /* duplicate V145 */
+- pmulhw x4546454645464546, %mm1 /* 17734-> V153 */
++ pmulhw MUNG(x4546454645464546), %mm1 /* 17734-> V153 */
+ psubsw %mm2, %mm5 /* V148 */
+- pmulhw x61f861f861f861f8, %mm3 /* 25080-> V154 */
++ pmulhw MUNG(x61f861f861f861f8), %mm3 /* 25080-> V154 */
+ psllw $2, %mm0 /* t311 */
+- pmulhw x5a825a825a825a82, %mm5 /* 23170-> V152 */
++ pmulhw MUNG(x5a825a825a825a82), %mm5 /* 23170-> V152 */
+ paddsw %mm2, %mm7 /* V149 ; free mm2 */
+ psllw $1, %mm1 /* t313 */
+ nop /* without the nop - freeze here for one clock */
+@@ -409,7 +415,7 @@ _dv_idct_block_mmx:
+ paddsw %mm3, %mm6 /* V164 ; free mm3 */
+ movq %mm4, %mm3 /* duplicate V142 */
+ psubsw %mm5, %mm4 /* V165 ; free mm5 */
+- movq %mm2, scratch7 /* out7 */
++ movq %mm2, MUNG(scratch7) /* out7 */
+ psraw $4, %mm6
+ psraw $4, %mm4
+ paddsw %mm5, %mm3 /* V162 */
+@@ -420,11 +426,11 @@ _dv_idct_block_mmx:
+ */
+ movq %mm6, 8*9(%esi) /* out9 */
+ paddsw %mm1, %mm0 /* V161 */
+- movq %mm3, scratch5 /* out5 */
++ movq %mm3, MUNG(scratch5) /* out5 */
+ psubsw %mm1, %mm5 /* V166 ; free mm1 */
+ movq %mm4, 8*11(%esi) /* out11 */
+ psraw $4, %mm5
+- movq %mm0, scratch3 /* out3 */
++ movq %mm0, MUNG(scratch3) /* out3 */
+ movq %mm2, %mm4 /* duplicate V140 */
+ movq %mm5, 8*13(%esi) /* out13 */
+ paddsw %mm7, %mm2 /* V160 */
+@@ -434,7 +440,7 @@ _dv_idct_block_mmx:
+ /* moved from the next block */
+ movq 8*3(%esi), %mm7
+ psraw $4, %mm4
+- movq %mm2, scratch1 /* out1 */
++ movq %mm2, MUNG(scratch1) /* out1 */
+ /* moved from the next block */
+ movq %mm0, %mm1
+ movq %mm4, 8*15(%esi) /* out15 */
+@@ -491,15 +497,15 @@ _dv_idct_block_mmx:
+ paddsw %mm4, %mm3 /* V113 ; free mm4 */
+ movq %mm0, %mm4 /* duplicate V110 */
+ paddsw %mm1, %mm2 /* V111 */
+- pmulhw x539f539f539f539f, %mm0 /* 21407-> V117 */
++ pmulhw MUNG(x539f539f539f539f), %mm0 /* 21407-> V117 */
+ psubsw %mm1, %mm5 /* V112 ; free mm1 */
+ psubsw %mm5, %mm4 /* V116 */
+ movq %mm2, %mm1 /* duplicate V111 */
+- pmulhw x4546454645464546, %mm5 /* 17734-> V119 */
++ pmulhw MUNG(x4546454645464546), %mm5 /* 17734-> V119 */
+ psubsw %mm3, %mm2 /* V114 */
+- pmulhw x61f861f861f861f8, %mm4 /* 25080-> V120 */
++ pmulhw MUNG(x61f861f861f861f8), %mm4 /* 25080-> V120 */
+ paddsw %mm3, %mm1 /* V115 ; free mm3 */
+- pmulhw x5a825a825a825a82, %mm2 /* 23170-> V118 */
++ pmulhw MUNG(x5a825a825a825a82), %mm2 /* 23170-> V118 */
+ psllw $2, %mm0 /* t266 */
+ movq %mm1, (%esi) /* save V115 */
+ psllw $1, %mm5 /* t268 */
+@@ -517,7 +523,7 @@ _dv_idct_block_mmx:
+ movq %mm6, %mm3 /* duplicate tmt4 */
+ psubsw %mm0, %mm6 /* V100 */
+ paddsw %mm0, %mm3 /* V101 ; free mm0 */
+- pmulhw x5a825a825a825a82, %mm6 /* 23170 ->V102 */
++ pmulhw MUNG(x5a825a825a825a82), %mm6 /* 23170 ->V102 */
+ movq %mm7, %mm5 /* duplicate tmt0 */
+ movq 8*8(%esi), %mm1 /* tmt8 */
+ paddsw %mm1, %mm7 /* V103 */
+@@ -551,10 +557,10 @@ _dv_idct_block_mmx:
+ movq 8*2(%esi), %mm3 /* V123 */
+ paddsw %mm4, %mm7 /* out0 */
+ /* moved up from next block */
+- movq scratch3, %mm0
++ movq MUNG(scratch3), %mm0
+ psraw $4, %mm7
+ /* moved up from next block */
+- movq scratch5, %mm6
++ movq MUNG(scratch5), %mm6
+ psubsw %mm4, %mm1 /* out14 ; free mm4 */
+ paddsw %mm3, %mm5 /* out2 */
+ psraw $4, %mm1
+@@ -565,7 +571,7 @@ _dv_idct_block_mmx:
+ movq %mm5, 8*2(%esi) /* out2 ; free mm5 */
+ psraw $4, %mm2
+ /* moved up to the prev block */
+- movq scratch7, %mm4
++ movq MUNG(scratch7), %mm4
+ /* moved up to the prev block */
+ psraw $4, %mm0
+ movq %mm2, 8*12(%esi) /* out12 ; free mm2 */
+@@ -579,7 +585,7 @@ _dv_idct_block_mmx:
+ * psraw $4, %mm0
+ * psraw $4, %mm6
+ */
+- movq scratch1, %mm1
++ movq MUNG(scratch1), %mm1
+ psraw $4, %mm4
+ movq %mm0, 8*3(%esi) /* out3 */
+ psraw $4, %mm1
+--- libdv-0.104-old/libdv/parse.c
++++ libdv-0.104/libdv/parse.c
+@@ -477,6 +477,13 @@ dv_parse_ac_coeffs(dv_videosegment_t *se
+ exit(0);
+ #endif
+ } /* dv_parse_ac_coeffs */
++#if defined __GNUC__ && __ELF__
++# define dv_strong_hidden_alias(name, aliasname) \
++ extern __typeof (name) aliasname __attribute__ ((alias (#name), visibility ("hidden")))
++dv_strong_hidden_alias(dv_parse_ac_coeffs, asm_dv_parse_ac_coeffs);
++#else
++int asm_dv_parse_ac_coeffs(dv_videosegment_t *seg) { return dv_parse_ac_coeffs(seg); }
++#endif
+
+ /* ---------------------------------------------------------------------------
+ */
+--- libdv-0.104-old/libdv/quant.c
++++ libdv-0.104/libdv/quant.c
+@@ -144,7 +144,7 @@ uint8_t dv_quant_offset[4] = { 6,3,0,1
+ uint32_t dv_quant_248_mul_tab [2] [22] [64];
+ uint32_t dv_quant_88_mul_tab [2] [22] [64];
+
+-extern void _dv_quant_x86(dv_coeff_t *block,int qno,int klass);
++extern void _dv_quant_x86(dv_coeff_t *block,int qno,int klass,uint8_t *dv_quant_offset,uint8_t *dv_quant_shifts);
+ extern void _dv_quant_x86_64(dv_coeff_t *block,int qno,int klass);
+ static void quant_248_inverse_std(dv_coeff_t *block,int qno,int klass,dv_248_coeff_t *co);
+ static void quant_248_inverse_mmx(dv_coeff_t *block,int qno,int klass,dv_248_coeff_t *co);
+@@ -210,7 +210,7 @@ void _dv_quant(dv_coeff_t *block,int qno
+ _dv_quant_x86_64(block, qno, klass);
+ emms();
+ #else
+- _dv_quant_x86(block, qno, klass);
++ _dv_quant_x86(block, qno, klass, dv_quant_offset, dv_quant_shifts);
+ emms();
+ #endif
+ }
+--- libdv-0.104-old/libdv/quant.h
++++ libdv-0.104/libdv/quant.h
+@@ -27,7 +27,7 @@ extern void _dv_quant(dv_coeff_t *block,
+ extern void _dv_quant_88_inverse(dv_coeff_t *block,int qno,int klass);
+ extern void (*_dv_quant_248_inverse) (dv_coeff_t *block,int qno,int klass,
+ dv_248_coeff_t *co);
+-extern void _dv_quant_88_inverse_x86(dv_coeff_t *block,int qno,int klass);
++extern void _dv_quant_88_inverse_x86(dv_coeff_t *block,int qno,int klass, uint8_t *offset, uint8_t *shifts);
+ extern void _dv_quant_88_inverse_x86_64(dv_coeff_t *block,int qno,int klass);
+ extern void dv_quant_init (void);
+ #ifdef __cplusplus
+--- libdv-0.104-old/libdv/quant_x86.S
++++ libdv-0.104/libdv/quant_x86.S
+@@ -71,10 +73,13 @@ _dv_quant_88_inverse_x86:
+
+ /* pq = dv_quant_shifts[qno + dv_quant_offset[class]]; */
+ movl ARGn(1),%eax /* qno */
++ movl ARGn(3),%ebx /* dv_quant_offset */
++ addl ARGn(2),%ebx /* class */
++ movzbl (%ebx),%ecx
+ movl ARGn(2),%ebx /* class */
+- movzbl dv_quant_offset(%ebx),%ecx
+ addl %ecx,%eax
+- leal dv_quant_shifts(,%eax,4),%edx /* edx is pq */
++ movl ARGn(4),%edx /* dv_quant_shifts */
++ leal (%edx,%eax,4),%edx /* edx is pq */
+
+ /* extra = (class == 3); */
+ /* 0 1 2 3 */
+@@ -212,11 +219,13 @@ _dv_quant_x86:
+
+ /* pq = dv_quant_shifts[qno + dv_quant_offset[class]]; */
+ movl ARGn(1),%eax /* qno */
++ movl ARGn(3),%ebx /* offset */
++ addl ARGn(2),%ebx /* class */
++ movzbl (%ebx),%ecx
+ movl ARGn(2),%ebx /* class */
+-
+- movzbl dv_quant_offset(%ebx),%ecx
++ movl ARGn(4),%edx /* shifts */
+ addl %ecx,%eax
+- leal dv_quant_shifts(,%eax,4),%edx /* edx is pq */
++ leal (%edx,%eax,4),%edx /* edx is pq */
+
+ /* extra = (class == 3); */
+ /* 0 1 2 3 */
+--- libdv-0.104-old/libdv/rgbtoyuv.S
++++ libdv-0.104/libdv/rgbtoyuv.S
+@@ -41,9 +41,6 @@
+ #define DV_WIDTH_SHORT_HALF 720
+ #define DV_WIDTH_BYTE_HALF 360
+
+-.global _dv_rgbtoycb_mmx
+-# .global yuvtoycb_mmx
+-
+ .data
+
+ .align 8
+@@ -110,25 +107,26 @@ VR0GR: .long 0,0
+ VBG0B: .long 0,0
+
+ #endif
+-
++
++#include "asm_common.S"
++
+ .section .note.GNU-stack, "", @progbits
+
+ .text
+
+-#define _inPtr 8
+-#define _rows 12
+-#define _columns 16
+-#define _outyPtr 20
+-#define _outuPtr 24
+-#define _outvPtr 28
++#define _inPtr 24+8
++#define _rows 24+12
++#define _columns 24+16
++#define _outyPtr 24+20
++#define _outuPtr 24+24
++#define _outvPtr 24+28
+
+ .global _dv_rgbtoycb_mmx
+ .hidden _dv_rgbtoycb_mmx
+ .type _dv_rgbtoycb_mmx,@function
+ _dv_rgbtoycb_mmx:
+
+ pushl %ebp
+- movl %esp, %ebp
+ pushl %eax
+ pushl %ebx
+ pushl %ecx
+@@ -131,46 +132,47 @@ _dv_rgbtoycb_mmx:
+ pushl %esi
+ pushl %edi
+
+- leal ZEROSX, %eax #This section gets around a bug
++ LOAD_PIC_REG(bp)
++
++ leal MUNG(ZEROSX), %eax #This section gets around a bug
+ movq (%eax), %mm0 #unlikely to persist
+- movq %mm0, ZEROS
+- leal OFFSETDX, %eax
++ movq %mm0, MUNG(ZEROS)
++ leal MUNG(OFFSETDX), %eax
+ movq (%eax), %mm0
+- movq %mm0, OFFSETD
+- leal OFFSETWX, %eax
++ movq %mm0, MUNG(OFFSETD)
++ leal MUNG(OFFSETWX), %eax
+ movq (%eax), %mm0
+- movq %mm0, OFFSETW
+- leal OFFSETBX, %eax
++ movq %mm0, MUNG(OFFSETW)
++ leal MUNG(OFFSETBX), %eax
+ movq (%eax), %mm0
+- movq %mm0, OFFSETB
+- leal YR0GRX, %eax
++ movq %mm0, MUNG(OFFSETB)
++ leal MUNG(YR0GRX), %eax
+ movq (%eax), %mm0
+- movq %mm0, YR0GR
+- leal YBG0BX, %eax
++ movq %mm0, MUNG(YR0GR)
++ leal MUNG(YBG0BX), %eax
+ movq (%eax), %mm0
+- movq %mm0, YBG0B
+- leal UR0GRX, %eax
++ movq %mm0, MUNG(YBG0B)
++ leal MUNG(UR0GRX), %eax
+ movq (%eax), %mm0
+- movq %mm0, UR0GR
+- leal UBG0BX, %eax
++ movq %mm0, MUNG(UR0GR)
++ leal MUNG(UBG0BX), %eax
+ movq (%eax), %mm0
+- movq %mm0, UBG0B
+- leal VR0GRX, %eax
++ movq %mm0, MUNG(UBG0B)
++ leal MUNG(VR0GRX), %eax
+ movq (%eax), %mm0
+- movq %mm0, VR0GR
+- leal VBG0BX, %eax
++ movq %mm0, MUNG(VR0GR)
++ leal MUNG(VBG0BX), %eax
+ movq (%eax), %mm0
+- movq %mm0, VBG0B
+-
+- movl _rows(%ebp), %eax
+- movl _columns(%ebp), %ebx
++ movq %mm0, MUNG(VBG0B)
++ movl _rows(%esp), %eax
++ movl _columns(%esp), %ebx
+ mull %ebx #number pixels
+ shrl $3, %eax #number of loops
+ movl %eax, %edi #loop counter in edi
+- movl _inPtr(%ebp), %eax
+- movl _outyPtr(%ebp), %ebx
+- movl _outuPtr(%ebp), %ecx
+- movl _outvPtr(%ebp), %edx
++ movl _inPtr(%esp), %eax
++ movl _outyPtr(%esp), %ebx
++ movl _outuPtr(%esp), %ecx
++ movl _outvPtr(%esp), %edx
+ rgbtoycb_mmx_loop:
+ movq (%eax), %mm1 #load G2R2B1G1R1B0G0R0
+ pxor %mm6, %mm6 #0 -> mm6
+@@ -184,29 +186,29 @@ rgbtoycb_mmx_loop:
+ punpcklbw %mm6, %mm1 #B1G1R1B0 -> mm1
+ movq %mm0, %mm2 #R1B0G0R0 -> mm2
+
+- pmaddwd YR0GR, %mm0 #yrR1,ygG0+yrR0 -> mm0
++ pmaddwd MUNG(YR0GR), %mm0 #yrR1,ygG0+yrR0 -> mm0
+ movq %mm1, %mm3 #B1G1R1B0 -> mm3
+
+- pmaddwd YBG0B, %mm1 #ybB1+ygG1,ybB0 -> mm1
++ pmaddwd MUNG(YBG0B), %mm1 #ybB1+ygG1,ybB0 -> mm1
+ movq %mm2, %mm4 #R1B0G0R0 -> mm4
+
+- pmaddwd UR0GR, %mm2 #urR1,ugG0+urR0 -> mm2
++ pmaddwd MUNG(UR0GR), %mm2 #urR1,ugG0+urR0 -> mm2
+ movq %mm3, %mm5 #B1G1R1B0 -> mm5
+
+- pmaddwd UBG0B, %mm3 #ubB1+ugG1,ubB0 -> mm3
++ pmaddwd MUNG(UBG0B), %mm3 #ubB1+ugG1,ubB0 -> mm3
+ punpckhbw %mm6, %mm7 # 00G2R2 -> mm7
+
+- pmaddwd VR0GR, %mm4 #vrR1,vgG0+vrR0 -> mm4
++ pmaddwd MUNG(VR0GR), %mm4 #vrR1,vgG0+vrR0 -> mm4
+ paddd %mm1, %mm0 #Y1Y0 -> mm0
+
+- pmaddwd VBG0B, %mm5 #vbB1+vgG1,vbB0 -> mm5
++ pmaddwd MUNG(VBG0B), %mm5 #vbB1+vgG1,vbB0 -> mm5
+
+ movq 8(%eax), %mm1 #R5B4G4R4B3G3R3B2 -> mm1
+ paddd %mm3, %mm2 #U1U0 -> mm2
+
+ movq %mm1, %mm6 #R5B4G4R4B3G3R3B2 -> mm6
+
+- punpcklbw ZEROS, %mm1 #B3G3R3B2 -> mm1
++ punpcklbw MUNG(ZEROS), %mm1 #B3G3R3B2 -> mm1
+ paddd %mm5, %mm4 #V1V0 -> mm4
+
+ movq %mm1, %mm5 #B3G3R3B2 -> mm5
+@@ -214,29 +216,29 @@ rgbtoycb_mmx_loop:
+
+ paddd %mm7, %mm1 #R3B200+00G2R2=R3B2G2R2->mm1
+
+- punpckhbw ZEROS, %mm6 #R5B4G4R3 -> mm6
++ punpckhbw MUNG(ZEROS), %mm6 #R5B4G4R3 -> mm6
+ movq %mm1, %mm3 #R3B2G2R2 -> mm3
+
+- pmaddwd YR0GR, %mm1 #yrR3,ygG2+yrR2 -> mm1
++ pmaddwd MUNG(YR0GR), %mm1 #yrR3,ygG2+yrR2 -> mm1
+ movq %mm5, %mm7 #B3G3R3B2 -> mm7
+
+- pmaddwd YBG0B, %mm5 #ybB3+ygG3,ybB2 -> mm5
++ pmaddwd MUNG(YBG0B), %mm5 #ybB3+ygG3,ybB2 -> mm5
+ psrad $FIXPSHIFT, %mm0 #32-bit scaled Y1Y0 -> mm0
+
+- movq %mm6, TEMP0 #R5B4G4R4 -> TEMP0
++ movq %mm6, MUNG(TEMP0) #R5B4G4R4 -> TEMP0
+ movq %mm3, %mm6 #R3B2G2R2 -> mm6
+- pmaddwd UR0GR, %mm6 #urR3,ugG2+urR2 -> mm6
++ pmaddwd MUNG(UR0GR), %mm6 #urR3,ugG2+urR2 -> mm6
+ psrad $FIXPSHIFT, %mm2 #32-bit scaled U1U0 -> mm2
+
+ paddd %mm5, %mm1 #Y3Y2 -> mm1
+ movq %mm7, %mm5 #B3G3R3B2 -> mm5
+- pmaddwd UBG0B, %mm7 #ubB3+ugG3,ubB2
++ pmaddwd MUNG(UBG0B), %mm7 #ubB3+ugG3,ubB2
+ psrad $FIXPSHIFT, %mm1 #32-bit scaled Y3Y2 -> mm1
+
+- pmaddwd VR0GR, %mm3 #vrR3,vgG2+vgR2
++ pmaddwd MUNG(VR0GR), %mm3 #vrR3,vgG2+vgR2
+ packssdw %mm1, %mm0 #Y3Y2Y1Y0 -> mm0
+
+- pmaddwd VBG0B, %mm5 #vbB3+vgG3,vbB2 -> mm5
++ pmaddwd MUNG(VBG0B), %mm5 #vbB3+vgG3,vbB2 -> mm5
+ psrad $FIXPSHIFT, %mm4 #32-bit scaled V1V0 -> mm4
+
+ movq 16(%eax), %mm1 #B7G7R7B6G6R6B5G5 -> mm7
+@@ -251,58 +253,58 @@ rgbtoycb_mmx_loop:
+ movq %mm7, %mm5 #R7B6G6R6B5G500 -> mm5
+ psrad $FIXPSHIFT, %mm3 #32-bit scaled V3V2 -> mm3
+
+- paddw OFFSETY, %mm0
++ paddw MUNG(OFFSETY), %mm0
+ movq %mm0, (%ebx) #store Y3Y2Y1Y0
+ packssdw %mm6, %mm2 #32-bit scaled U3U2U1U0 -> mm2
+
+- movq TEMP0, %mm0 #R5B4G4R4 -> mm0
++ movq MUNG(TEMP0), %mm0 #R5B4G4R4 -> mm0
+ addl $8, %ebx
+-
+- punpcklbw ZEROS, %mm7 #B5G500 -> mm7
++
++ punpcklbw MUNG(ZEROS), %mm7 #B5G500 -> mm7
+ movq %mm0, %mm6 #R5B4G4R4 -> mm6
+
+- movq %mm2, TEMPU #32-bit scaled U3U2U1U0 -> TEMPU
++ movq %mm2, MUNG(TEMPU) #32-bit scaled U3U2U1U0 -> TEMPU
+ psrlq $32, %mm0 #00R5B4 -> mm0
+
+ paddw %mm0, %mm7 #B5G5R5B4 -> mm7
+ movq %mm6, %mm2 #B5B4G4R4 -> mm2
+
+- pmaddwd YR0GR, %mm2 #yrR5,ygG4+yrR4 -> mm2
++ pmaddwd MUNG(YR0GR), %mm2 #yrR5,ygG4+yrR4 -> mm2
+ movq %mm7, %mm0 #B5G5R5B4 -> mm0
+
+- pmaddwd YBG0B, %mm7 #ybB5+ygG5,ybB4 -> mm7
++ pmaddwd MUNG(YBG0B), %mm7 #ybB5+ygG5,ybB4 -> mm7
+ packssdw %mm3, %mm4 #32-bit scaled V3V2V1V0 -> mm4
+
+ addl $24, %eax #increment RGB count
+
+- movq %mm4, TEMPV #(V3V2V1V0)/256 -> mm4
++ movq %mm4, MUNG(TEMPV) #(V3V2V1V0)/256 -> mm4
+ movq %mm6, %mm4 #B5B4G4R4 -> mm4
+
+- pmaddwd UR0GR, %mm6 #urR5,ugG4+urR4
++ pmaddwd MUNG(UR0GR), %mm6 #urR5,ugG4+urR4
+ movq %mm0, %mm3 #B5G5R5B4 -> mm0
+
+- pmaddwd UBG0B, %mm0 #ubB5+ugG5,ubB4
++ pmaddwd MUNG(UBG0B), %mm0 #ubB5+ugG5,ubB4
+ paddd %mm7, %mm2 #Y5Y4 -> mm2
+
+- pmaddwd VR0GR, %mm4 #vrR5,vgG4+vrR4 -> mm4
++ pmaddwd MUNG(VR0GR), %mm4 #vrR5,vgG4+vrR4 -> mm4
+ pxor %mm7, %mm7 #0 -> mm7
+
+- pmaddwd VBG0B, %mm3 #vbB5+vgG5,vbB4 -> mm3
++ pmaddwd MUNG(VBG0B), %mm3 #vbB5+vgG5,vbB4 -> mm3
+ punpckhbw %mm7, %mm1 #B7G7R7B6 -> mm1
+
+ paddd %mm6, %mm0 #U5U4 -> mm0
+ movq %mm1, %mm6 #B7G7R7B6 -> mm6
+
+- pmaddwd YBG0B, %mm6 #ybB7+ygG7,ybB6 -> mm6
++ pmaddwd MUNG(YBG0B), %mm6 #ybB7+ygG7,ybB6 -> mm6
+ punpckhbw %mm7, %mm5 #R7B6G6R6 -> mm5
+
+ movq %mm5, %mm7 #R7B6G6R6 -> mm7
+ paddd %mm4, %mm3 #V5V4 -> mm3
+
+- pmaddwd YR0GR, %mm5 #yrR7,ygG6+yrR6 -> mm5
++ pmaddwd MUNG(YR0GR), %mm5 #yrR7,ygG6+yrR6 -> mm5
+ movq %mm1, %mm4 #B7G7R7B6 -> mm4
+
+- pmaddwd UBG0B, %mm4 #ubB7+ugG7,ubB6 -> mm4
++ pmaddwd MUNG(UBG0B), %mm4 #ubB7+ugG7,ubB6 -> mm4
+ psrad $FIXPSHIFT, %mm0 #32-bit scaled U5U4 -> mm0
+
+ psrad $FIXPSHIFT, %mm2 #32-bit scaled Y5Y4 -> mm2
+@@ -310,25 +312,25 @@ rgbtoycb_mmx_loop:
+ paddd %mm5, %mm6 #Y7Y6 -> mm6
+ movq %mm7, %mm5 #R7B6G6R6 -> mm5
+
+- pmaddwd UR0GR, %mm7 #urR7,ugG6+ugR6 -> mm7
++ pmaddwd MUNG(UR0GR), %mm7 #urR7,ugG6+ugR6 -> mm7
+ psrad $FIXPSHIFT, %mm3 #32-bit scaled V5V4 -> mm3
+
+- pmaddwd VBG0B, %mm1 #vbB7+vgG7,vbB6 -> mm1
++ pmaddwd MUNG(VBG0B), %mm1 #vbB7+vgG7,vbB6 -> mm1
+ psrad $FIXPSHIFT, %mm6 #32-bit scaled Y7Y6 -> mm6
+
+ packssdw %mm6, %mm2 #Y7Y6Y5Y4 -> mm2
+
+- pmaddwd VR0GR, %mm5 #vrR7,vgG6+vrR6 -> mm5
++ pmaddwd MUNG(VR0GR), %mm5 #vrR7,vgG6+vrR6 -> mm5
+ paddd %mm4, %mm7 #U7U6 -> mm7
+
+ psrad $FIXPSHIFT, %mm7 #32-bit scaled U7U6 -> mm7
+- paddw OFFSETY, %mm2
++ paddw MUNG(OFFSETY), %mm2
+ movq %mm2, (%ebx) #store Y7Y6Y5Y4
+
+- movq ALLONE, %mm6
++ movq MUNG(ALLONE), %mm6
+ packssdw %mm7, %mm0 #32-bit scaled U7U6U5U4 -> mm0
+
+- movq TEMPU, %mm4 #32-bit scaled U3U2U1U0 -> mm4
++ movq MUNG(TEMPU), %mm4 #32-bit scaled U3U2U1U0 -> mm4
+ pmaddwd %mm6, %mm0 #U7U6U5U4 averaged -> (U7U6)(U5U4)=UU3 UU2->mm0
+
+ pmaddwd %mm6, %mm4 #U3U2U1U0 averaged -> (U3U2)(U1U0)=UU1 UU0->mm4
+@@ -338,8 +340,8 @@ rgbtoycb_mmx_loop:
+
+ psrad $FIXPSHIFT, %mm1 #32-bit scaled V7V6 -> mm1
+ psraw $1, %mm4 #divide UU3 UU2 UU1 UU0 by 2 -> mm4
+-
+- movq TEMPV, %mm5 #32-bit scaled V3V2V1V0 -> mm5
++
++ movq MUNG(TEMPV), %mm5 #32-bit scaled V3V2V1V0 -> mm5
+
+ movq %mm4, (%ecx) # store U
+
+@@ -422,14 +426,15 @@ _dv_ppm_copy_y_block_mmx:
+ _dv_pgm_copy_y_block_mmx:
+
+ pushl %ebp
+- movl %esp, %ebp
+ pushl %esi
+ pushl %edi
+-
+- movl 8(%ebp), %edi # dest
+- movl 12(%ebp), %esi # src
+
+- movq OFFSETY, %mm7
++ LOAD_PIC_REG(bp)
++
++ movl 16(%esp), %edi # dest
++ movl 20(%esp), %esi # src
++
++ movq MUNG(OFFSETY), %mm7
+ pxor %mm6, %mm6
+
+ movq (%esi), %mm0
+@@ -564,14 +571,15 @@ _dv_pgm_copy_y_block_mmx:
+ _dv_video_copy_y_block_mmx:
+
+ pushl %ebp
+- movl %esp, %ebp
+ pushl %esi
+ pushl %edi
+-
+- movl 8(%ebp), %edi # dest
+- movl 12(%ebp), %esi # src
+
+- movq OFFSETBX, %mm7
++ LOAD_PIC_REG(bp)
++
++ movl 16(%esp), %edi # dest
++ movl 20(%esp), %esi # src
++
++ movq MUNG(OFFSETBX), %mm7
+ pxor %mm6, %mm6
+
+ movq (%esi), %mm0
+@@ -852,16 +864,16 @@ _dv_ppm_copy_pal_c_block_mmx:
+ _dv_pgm_copy_pal_c_block_mmx:
+
+ pushl %ebp
+- movl %esp, %ebp
+ pushl %esi
+ pushl %edi
+ pushl %ebx
+-
+- movl 8(%ebp), %edi # dest
+- movl 12(%ebp), %esi # src
+
++ LOAD_PIC_REG(bp)
++
++ movl 20(%esp), %edi # dest
++ movl 24(%esp), %esi # src
+
+- movq OFFSETBX, %mm7
++ movq MUNG(OFFSETBX), %mm7
+ pxor %mm6, %mm6
+
+
+@@ -1000,15 +1014,16 @@ _dv_pgm_copy_pal_c_block_mmx:
+ _dv_video_copy_pal_c_block_mmx:
+
+ pushl %ebp
+- movl %esp, %ebp
+ pushl %esi
+ pushl %edi
+ pushl %ebx
+-
+- movl 8(%ebp), %edi # dest
+- movl 12(%ebp), %esi # src
+
+- movq OFFSETBX, %mm7
++ LOAD_PIC_REG(bp)
++
++ movl 20(%esp), %edi # dest
++ movl 24(%esp), %esi # src
++
++ movq MUNG(OFFSETBX), %mm7
+ paddw %mm7, %mm7
+ pxor %mm6, %mm6
+
+@@ -1095,18 +1112,18 @@ video_copy_pal_c_block_mmx_loop:
+ _dv_ppm_copy_ntsc_c_block_mmx:
+
+ pushl %ebp
+- movl %esp, %ebp
+ pushl %esi
+ pushl %edi
+ pushl %ebx
+-
+- movl 8(%ebp), %edi # dest
+- movl 12(%ebp), %esi # src
++
++ LOAD_PIC_REG(bp)
++
++ movl 20(%esp), %edi # dest
++ movl 24(%esp), %esi # src
+
+ movl $4, %ebx
+
+- movq ALLONE, %mm6
+-
++ movq MUNG(ALLONE), %mm6
+ ppm_copy_ntsc_c_block_mmx_loop:
+
+ movq (%esi), %mm0
+@@ -1168,14 +1187,15 @@ ppm_copy_ntsc_c_block_mmx_loop:
+ _dv_pgm_copy_ntsc_c_block_mmx:
+
+ pushl %ebp
+- movl %esp, %ebp
+ pushl %esi
+ pushl %edi
+-
+- movl 8(%ebp), %edi # dest
+- movl 12(%ebp), %esi # src
+
+- movq OFFSETBX, %mm7
++ LOAD_PIC_REG(bp)
++
++ movl 16(%esp), %edi # dest
++ movl 20(%esp), %esi # src
++
++ movq MUNG(OFFSETBX), %mm7
+ paddw %mm7, %mm7
+ pxor %mm6, %mm6
+
+@@ -1325,15 +1347,16 @@ _dv_pgm_copy_ntsc_c_block_mmx:
+ _dv_video_copy_ntsc_c_block_mmx:
+
+ pushl %ebp
+- movl %esp, %ebp
+ pushl %esi
+ pushl %edi
+ pushl %ebx
+-
+- movl 8(%ebp), %edi # dest
+- movl 12(%ebp), %esi # src
+
+- movq OFFSETBX, %mm7
++ LOAD_PIC_REG(bp)
++
++ movl 20(%esp), %edi # dest
++ movl 24(%esp), %esi # src
++
++ movq MUNG(OFFSETBX), %mm7
+ paddw %mm7, %mm7
+ pxor %mm6, %mm6
+
+--- libdv-0.104-old/libdv/rgbtoyuv_x86_64.S
++++ libdv-0.104/libdv/rgbtoyuv_x86_64.S
+@@ -41,9 +41,6 @@
+ #define DV_WIDTH_SHORT_HALF 720
+ #define DV_WIDTH_BYTE_HALF 360
+
+-.global _dv_rgbtoycb_mmx_x86_64
+-# .global yuvtoycb_mmx_x86_64
+-
+ .data
+
+ .align 8
+--- libdv-0.104-old/libdv/vlc_x86.S
++++ libdv-0.104/libdv/vlc_x86.S
+@@ -1,31 +1,39 @@
+ #include "asmoff.h"
+ .section .note.GNU-stack, "", @progbits
++ #include "asm_common.S"
+
+ .text
+ .align 4
+ .globl dv_decode_vlc
++.globl asm_dv_decode_vlc
++.hidden asm_dv_decode_vlc
++asm_dv_decode_vlc = dv_decode_vlc
++
+ .type dv_decode_vlc,@function
+ dv_decode_vlc:
+ pushl %ebx
++ pushl %ebp
++
++ LOAD_PIC_REG(bp)
+
+- /* Args are at 8(%esp). */
+- movl 8(%esp),%eax /* %eax is bits */
+- movl 12(%esp),%ebx /* %ebx is maxbits */
++ /* Args are at 12(%esp). */
++ movl 12(%esp),%eax /* %eax is bits */
++ movl 16(%esp),%ebx /* %ebx is maxbits */
+ andl $0x3f,%ebx /* limit index range STL*/
+
+- movl dv_vlc_class_index_mask(,%ebx,4),%edx
++ movl MUNG_ARR(dv_vlc_class_index_mask,%ebx,4),%edx
+ andl %eax,%edx
+- movl dv_vlc_class_index_rshift(,%ebx,4),%ecx
++ movl MUNG_ARR(dv_vlc_class_index_rshift,%ebx,4),%ecx
+ sarl %cl,%edx
+- movl dv_vlc_classes(,%ebx,4),%ecx
++ movl MUNG_ARR(dv_vlc_classes,%ebx,4),%ecx
+ movsbl (%ecx,%edx,1),%edx /* %edx is class */
+
+- movl dv_vlc_index_mask(,%edx,4),%ebx
+- movl dv_vlc_index_rshift(,%edx,4),%ecx
++ movl MUNG_ARR(dv_vlc_index_mask,%edx,4),%ebx
++ movl MUNG_ARR(dv_vlc_index_rshift,%edx,4),%ecx
+ andl %eax,%ebx
+ sarl %cl,%ebx
+
+- movl dv_vlc_lookups(,%edx,4),%edx
++ movl MUNG_ARR(dv_vlc_lookups,%edx,4),%edx
+ movl (%edx,%ebx,4),%edx
+
+ /* Now %edx holds result, like this:
+@@ -42,7 +51,7 @@ dv_decode_vlc:
+ movl %edx,%ecx
+ sarl $8,%ecx
+ andl $0xff,%ecx
+- movl sign_mask(,%ecx,4),%ebx
++ movl MUNG_ARR(sign_mask,%ecx,4),%ebx
+ andl %ebx,%eax
+ negl %eax
+ sarl $31,%eax
+@@ -63,14 +72,14 @@ dv_decode_vlc:
+ *result = broken;
+ Note that the 'broken' pattern is all ones (i.e. 0xffffffff)
+ */
+- movl 12(%esp),%ebx /* %ebx is maxbits */
++ movl 16(%esp),%ebx /* %ebx is maxbits */
+ subl %ecx,%ebx
+ sbbl %ebx,%ebx
+ orl %ebx,%edx
+
+- movl 16(%esp),%eax
++ movl 20(%esp),%eax
+ movl %edx,(%eax)
+-
++ popl %ebp
+ popl %ebx
+ ret
+
+@@ -80,21 +89,28 @@ dv_decode_vlc:
+ .type __dv_decode_vlc,@function
+ __dv_decode_vlc:
+ pushl %ebx
++ pushl %ebp
++
++ LOAD_PIC_REG(bp)
+
+- /* Args are at 8(%esp). */
+- movl 8(%esp),%eax /* %eax is bits */
++ /* Args are at 12(%esp). */
++ movl 12(%esp),%eax /* %eax is bits */
+
+ movl %eax,%edx /* %edx is class */
+ andl $0xfe00,%edx
+ sarl $9,%edx
++#ifdef __PIC__
++ movsbl dv_vlc_class_lookup5@GOTOFF(%ebp,%edx),%edx
++#else
+ movsbl dv_vlc_class_lookup5(%edx),%edx
+-
+- movl dv_vlc_index_mask(,%edx,4),%ebx
+- movl dv_vlc_index_rshift(,%edx,4),%ecx
++#endif
++
++ movl MUNG_ARR(dv_vlc_index_mask,%edx,4),%ebx
++ movl MUNG_ARR(dv_vlc_index_rshift,%edx,4),%ecx
+ andl %eax,%ebx
+ sarl %cl,%ebx
+
+- movl dv_vlc_lookups(,%edx,4),%edx
++ movl MUNG_ARR(dv_vlc_lookups,%edx,4),%edx
+ movl (%edx,%ebx,4),%edx
+
+ /* Now %edx holds result, like this:
+@@ -112,7 +128,7 @@ __dv_decode_vlc:
+ movl %edx,%ecx
+ sarl $8,%ecx
+ andl $0xff,%ecx
+- movl sign_mask(,%ecx,4),%ecx
++ movl MUNG_ARR(sign_mask,%ecx,4),%ecx
+ andl %ecx,%eax
+ negl %eax
+ sarl $31,%eax
+@@ -127,9 +143,9 @@ __dv_decode_vlc:
+ xorl %eax,%edx
+ subl %eax,%edx
+
+- movl 12(%esp),%eax
++ movl 16(%esp),%eax
+ movl %edx,(%eax)
+-
++ popl %ebp
+ popl %ebx
+ ret
+
+@@ -140,14 +156,20 @@ void dv_parse_ac_coeffs_pass0(bitstream_
+ */
+ .text
+ .align 4
++.globl asm_dv_parse_ac_coeffs_pass0
++.hidden asm_dv_parse_ac_coeffs_pass0
++ asm_dv_parse_ac_coeffs_pass0 = dv_parse_ac_coeffs_pass0
++
+ .globl dv_parse_ac_coeffs_pass0
+ .type dv_parse_ac_coeffs_pass0,@function
+ dv_parse_ac_coeffs_pass0:
+ pushl %ebx
+ pushl %edi
+ pushl %esi
+ pushl %ebp
+
++ LOAD_PIC_REG(si)
++
+ #define ARGn(N) (20+(4*(N)))(%esp)
+
+ /*
+@@ -159,8 +182,10 @@ dv_parse_ac_coeffs_pass0:
+ ebp bl
+ */
+ movl ARGn(2),%ebp
++#ifndef __PIC__
+ movl ARGn(0),%esi
+ movl bitstream_t_buf(%esi),%esi
++#endif
+ movl dv_block_t_offset(%ebp),%edi
+ movl dv_block_t_reorder(%ebp),%ebx
+
+@@ -170,7 +195,11 @@ dv_parse_ac_coeffs_pass0:
+
+ movq dv_block_t_coeffs(%ebp),%mm1
+ pxor %mm0,%mm0
++#ifdef __PIC__
++ pand const_f_0_0_0@GOTOFF(%esi),%mm1
++#else
+ pand const_f_0_0_0,%mm1
++#endif
+ movq %mm1,dv_block_t_coeffs(%ebp)
+ movq %mm0,(dv_block_t_coeffs + 8)(%ebp)
+ movq %mm0,(dv_block_t_coeffs + 16)(%ebp)
+@@ -191,9 +220,17 @@ dv_parse_ac_coeffs_pass0:
+ readloop:
+ movl %edi,%ecx
+ shrl $3,%ecx
++#ifdef __PIC__
++ movl ARGn(0),%eax
++ addl bitstream_t_buf(%eax),%ecx
++ movzbl (%ecx),%eax
++ movzbl 1(%ecx),%edx
++ movzbl 2(%ecx),%ecx
++#else
+ movzbl (%esi,%ecx,1),%eax
+ movzbl 1(%esi,%ecx,1),%edx
+ movzbl 2(%esi,%ecx,1),%ecx
++#endif
+ shll $16,%eax
+ shll $8,%edx
+ orl %ecx,%eax
+@@ -217,7 +254,11 @@ readloop:
+
+ /* Attempt to use the shortcut first. If it hits, then
+ this vlc term has been decoded. */
++#ifdef __PIC__
++ movl dv_vlc_class1_shortcut@GOTOFF(%esi,%ecx,4),%edx
++#else
+ movl dv_vlc_class1_shortcut(,%ecx,4),%edx
++#endif
+ test $0x80,%edx
+ je done_decode
+
+@@ -228,12 +269,19 @@ readloop:
+ movl %ebx,dv_block_t_reorder(%ebp)
+
+ /* %eax is bits */
+-
++#ifdef __PIC__
++ movsbl dv_vlc_class_lookup5@GOTOFF(%esi,%ecx),%ecx
++
++ movl dv_vlc_index_mask@GOTOFF(%esi,%ecx,4),%ebx
++ movl dv_vlc_lookups@GOTOFF(%esi,%ecx,4),%edx
++ movl dv_vlc_index_rshift@GOTOFF(%esi,%ecx,4),%ecx
++#else
+ movsbl dv_vlc_class_lookup5(%ecx),%ecx
+
+ movl dv_vlc_index_mask(,%ecx,4),%ebx
+ movl dv_vlc_lookups(,%ecx,4),%edx
+ movl dv_vlc_index_rshift(,%ecx,4),%ecx
++#endif
+ andl %eax,%ebx
+ sarl %cl,%ebx
+
+@@ -256,7 +304,11 @@ readloop:
+ movl %edx,%ecx
+ sarl $8,%ecx
+ andl $0xff,%ecx
++#ifdef __PIC__
++ movl sign_mask@GOTOFF(%esi,%ecx,4),%ecx
++#else
+ movl sign_mask(,%ecx,4),%ecx
++#endif
+ andl %ecx,%eax
+ negl %eax
+ sarl $31,%eax
+@@ -326,10 +378,16 @@ alldone:
+
+ slowpath:
+ /* slow path: use dv_decode_vlc */;
++#ifdef __PIC__
++ pushl %esi
++ leal vlc@GOTOFF(%esi),%esi
++ xchgl %esi,(%esp) /* last parameter is &vlc */
++#else
+ pushl $vlc /* last parameter is &vlc */
++#endif
+ pushl %edx /* bits_left */
+ pushl %eax /* bits */
+- call dv_decode_vlc
++ call asm_dv_decode_vlc
+ addl $12,%esp
+ test $0x80,%edx /* If (vlc.run < 0) break */
+ jne escape
+@@ -359,6 +417,8 @@ show16:
+ pushl %esi
+ pushl %ebp
+
++ LOAD_PIC_REG(si)
++
+ #define ARGn(N) (20+(4*(N)))(%esp)
+
+ movl ARGn(1),%eax /* quality */
+@@ -373,7 +434,11 @@ dv_parse_video_segment:
+ jz its_mono
+ movl $6,%ebx
+ its_mono:
++#ifdef __PIC__
++ movl %ebx,n_blocks@GOTOFF(%esi)
++#else
+ movl %ebx,n_blocks
++#endif
+
+ /*
+ * ebx seg/b
+@@ -384,15 +449,22 @@ its_mono:
+ * ebp bl
+ */
+ movl ARGn(0),%ebx
++#ifndef __PIC__
+ movl dv_videosegment_t_bs(%ebx),%esi
+ movl bitstream_t_buf(%esi),%esi
++#endif
+ leal dv_videosegment_t_mb(%ebx),%edi
+
+ movl $0,%eax
+ movl $0,%ecx
+ macloop:
++#ifdef __PIC__
++ movl %eax,m@GOTOFF(%esi)
++ movl %ecx,mb_start@GOTOFF(%esi)
++#else
+ movl %eax,m
+ movl %ecx,mb_start
++#endif
+
+ movl ARGn(0),%ebx
+
+@@ -400,7 +472,13 @@ macloop:
+ /* mb->qno = bitstream_get(bs,4); */
+ movl %ecx,%edx
+ shr $3,%edx
++#ifdef __PIC__
++ movl dv_videosegment_t_bs(%ebx),%ecx
++ movl bitstream_t_buf(%ecx),%ecx
++ movzbl 3(%ecx,%edx,1),%edx
++#else
+ movzbl 3(%esi,%edx,1),%edx
++#endif
+ andl $0xf,%edx
+ movl %edx,dv_macroblock_t_qno(%edi)
+
+@@ -411,7 +489,11 @@ macloop:
+ movl %edx,dv_macroblock_t_eob_count(%edi)
+
+ /* mb->i = (seg->i + dv_super_map_vertical[m]) % (seg->isPAL?12:10); */
++#ifdef __PIC__
++ movl dv_super_map_vertical@GOTOFF(%esi,%eax,4),%edx
++#else
+ movl dv_super_map_vertical(,%eax,4),%edx
++#endif
+ movl dv_videosegment_t_i(%ebx),%ecx
+ addl %ecx,%edx
+
+@@ -422,11 +504,20 @@ skarly:
+ andl $1,%ecx
+ shll $5,%ecx /* ecx = (isPAL ? 32 : 0) */
+
++#ifdef __PIC__
++ leal mod_10@GOTOFF(%esi),%edx
++ movzbl (%edx,%ecx,1),%edx /* uses mod_12 for PAL */
++#else
+ movzbl mod_10(%edx,%ecx,1),%edx /* uses mod_12 for PAL */
++#endif
+ movl %edx,dv_macroblock_t_i(%edi)
+
+ /* mb->j = dv_super_map_horizontal[m]; */
++#ifdef __PIC__
++ movl dv_super_map_horizontal@GOTOFF(%esi,%eax,4),%edx
++#else
+ movl dv_super_map_horizontal(,%eax,4),%edx
++#endif
+ movl %edx,dv_macroblock_t_j(%edi)
+
+ /* mb->k = seg->k; */
+@@ -445,12 +536,28 @@ blkloop:
+ +---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
+ */
+ /* dc = bitstream_get(bs,9); */
++#ifdef __PIC__
++ movl mb_start@GOTOFF(%esi),%ecx
++#else
+ movl mb_start,%ecx
++#endif
+ shr $3,%ecx
++#ifdef __PIC__
++ movzbl blk_start@GOTOFF(%esi,%ebx),%edx
++#else
+ movzbl blk_start(%ebx),%edx
++#endif
+ addl %ecx,%edx
++#ifdef __PIC__
++ movl ARGn(0),%ecx
++ movl dv_videosegment_t_bs(%ecx),%ecx
++ movl bitstream_t_buf(%ecx),%ecx
++ movzbl (%ecx,%edx,1),%eax /* hi byte */
++ movzbl 1(%ecx,%edx,1),%ecx /* lo byte */
++#else
+ movzbl (%esi,%edx,1),%eax /* hi byte */
+ movzbl 1(%esi,%edx,1),%ecx /* lo byte */
++#endif
+ shll $8,%eax
+ orl %ecx,%eax
+
+@@ -477,7 +584,11 @@ blkloop:
+
+ /* bl->reorder = &dv_reorder[bl->dct_mode][1]; */
+ shll $6,%eax
++#ifdef __PIC__
++ leal dv_reorder@GOTOFF+1(%esi,%eax),%eax
++#else
+ addl $(dv_reorder+1),%eax
++#endif
+ movl %eax,dv_block_t_reorder(%ebp)
+
+ /* bl->reorder_sentinel = bl->reorder + 63; */
+@@ -485,13 +596,22 @@ blkloop:
+ movl %eax,dv_block_t_reorder_sentinel(%ebp)
+
+ /* bl->offset= mb_start + dv_parse_bit_start[b]; */
++#ifdef __PIC__
++ movl mb_start@GOTOFF(%esi),%ecx
++ movl dv_parse_bit_start@GOTOFF(%esi,%ebx,4),%eax
++#else
+ movl mb_start,%ecx
+ movl dv_parse_bit_start(,%ebx,4),%eax
++#endif
+ addl %ecx,%eax
+ movl %eax,dv_block_t_offset(%ebp)
+
+ /* bl->end= mb_start + dv_parse_bit_end[b]; */
++#ifdef __PIC__
++ movl dv_parse_bit_end@GOTOFF(%esi,%ebx,4),%eax
++#else
+ movl dv_parse_bit_end(,%ebx,4),%eax
++#endif
+ addl %ecx,%eax
+ movl %eax,dv_block_t_end(%ebp)
+
+@@ -503,7 +623,11 @@ blkloop:
+ /* no AC pass. Just zero out the remaining coeffs */
+ movq dv_block_t_coeffs(%ebp),%mm1
+ pxor %mm0,%mm0
++#ifdef __PIC__
++ pand const_f_0_0_0@GOTOFF(%esi),%mm1
++#else
+ pand const_f_0_0_0,%mm1
++#endif
+ movq %mm1,dv_block_t_coeffs(%ebp)
+ movq %mm0,(dv_block_t_coeffs + 8)(%ebp)
+ movq %mm0,(dv_block_t_coeffs + 16)(%ebp)
+@@ -528,18 +652,27 @@ do_ac_pass:
+ pushl %ebp
+ pushl %edi
+ pushl %eax
+- call dv_parse_ac_coeffs_pass0
++ call asm_dv_parse_ac_coeffs_pass0
+ addl $12,%esp
+ done_ac:
+
++#ifdef __PIC__
++ movl n_blocks@GOTOFF(%esi),%eax
++#else
+ movl n_blocks,%eax
++#endif
+ addl $dv_block_t_size,%ebp
+ incl %ebx
+ cmpl %eax,%ebx
+ jnz blkloop
+
++#ifdef __PIC__
++ movl m@GOTOFF(%esi),%eax
++ movl mb_start@GOTOFF(%esi),%ecx
++#else
+ movl m,%eax
+ movl mb_start,%ecx
++#endif
+ addl $(8 * 80),%ecx
+ addl $dv_macroblock_t_size,%edi
+ incl %eax
+@@ -557,7 +690,7 @@ done_ac:
+
+ andl $DV_QUALITY_AC_MASK,%eax
+ cmpl $DV_QUALITY_AC_2,%eax
+- jz dv_parse_ac_coeffs
++ jz asm_dv_parse_ac_coeffs
+ movl $0,%eax
+ ret
+
diff --git a/user/libdvbpsi/APKBUILD b/user/libdvbpsi/APKBUILD
index 9f818977d..a61855055 100644
--- a/user/libdvbpsi/APKBUILD
+++ b/user/libdvbpsi/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=libdvbpsi
-pkgver=1.3.2
+pkgver=1.3.3
pkgrel=0
pkgdesc="Library decoding and generating MPEG TS and DVB PSI tables"
url="https://www.videolan.org/developers/libdvbpsi.html"
@@ -14,7 +14,6 @@ source="https://download.videolan.org/pub/libdvbpsi/$pkgver/$pkgname-$pkgver.tar
"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -24,14 +23,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="cb59c2e66a214cad7bb96aa1f80a178399fcd80da9fc05b22c72763f2cd818bfab3724d36eee4c6467fb8bc8bae18b1d8afec64c02e8e47cd7a6e887f0230309 libdvbpsi-1.3.2.tar.bz2
+sha512sums="70f9e783a947e026ea50afe98ad2b3bfce075bd8d76932f73a6253b077a3a180aa632e9a1fff20308e2f0f3f881d727b4e4aad9b8da2b384edf9a3a0f9eacc69 libdvbpsi-1.3.3.tar.bz2
f612bf80b07ec37a83477a37d78971c4bd4331eec86686a8bc7b247f43df2c047c89de419d5cef0b960de2032daedc81a4c380802c76b4dc081e1c09ad364dcb fix-includes.patch"
diff --git a/user/libdvdcss/APKBUILD b/user/libdvdcss/APKBUILD
index 25e46df5e..27c8d14b1 100644
--- a/user/libdvdcss/APKBUILD
+++ b/user/libdvdcss/APKBUILD
@@ -5,13 +5,13 @@ pkgrel=0
pkgdesc="Library for accessing encrypted DVDs like a block device"
url="https://www.videolan.org/developers/libdvdcss.html"
arch="all"
-makedepends="file linux-headers"
license="GPL-2.0+"
+depends=""
+makedepends="file linux-headers"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.videolan.org/pub/libdvdcss/$pkgver/libdvdcss-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--prefix=/usr \
--sysconfdir=/etc \
@@ -21,12 +21,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libdvdnav/APKBUILD b/user/libdvdnav/APKBUILD
index d8350045f..f2527b2bf 100644
--- a/user/libdvdnav/APKBUILD
+++ b/user/libdvdnav/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer:
pkgname=libdvdnav
-pkgver=6.0.0
+pkgver=6.1.0
pkgrel=0
pkgdesc="Library for sophisticated DVD navigation features"
url="http://dvdnav.mplayerhq.hu/"
@@ -14,7 +14,6 @@ subpackages="$pkgname-dev $pkgname-doc"
source="https://download.videolan.org/pub/videolan/$pkgname/$pkgver/$pkgname-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="89d1e976d8f1cc92692e86e793403759b4d705682ba7418dcfd7dd3c38861238cead303fe4baa2059ebd7e9b82a77bbdbf32e50b20848e78939ee9e75d1b96d4 libdvdnav-6.0.0.tar.bz2"
+sha512sums="40ea50d818067a3178b4b09e4b95b0cc67d5ff88dbff2cbeee943d086c5f59a71a7aecc425ba35d7dbe5285d8b1ea099a439c0c80c5dca280687ac0cbdc57c71 libdvdnav-6.1.0.tar.bz2"
diff --git a/user/libdvdread/APKBUILD b/user/libdvdread/APKBUILD
index c88455a7a..4642a04c6 100644
--- a/user/libdvdread/APKBUILD
+++ b/user/libdvdread/APKBUILD
@@ -1,18 +1,18 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer:
pkgname=libdvdread
-pkgver=6.0.1
+pkgver=6.1.1
pkgrel=0
pkgdesc="Library for reading DVD video discs"
url="http://dvdnav.mplayerhq.hu/"
arch="all"
license="GPL-2.0+ AND LGPL-2.1+ AND GPL-2.0-only"
+depends=""
makedepends="libdvdcss-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.videolan.org/pub/videolan/$pkgname/$pkgver/$pkgname-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -24,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="550c01f6afcaca217d8852fdd9f4a54790239b674a45bb7c1c23a58fb5dec009e3028049a54f0904c08f15f5ad994e66bd6bea9cc8d5a8808e8b638ff8e27c4b libdvdread-6.0.1.tar.bz2"
+sha512sums="f02c2d33ec3e79a4efd0b4ed9172935b092c9f827eb6810ed354328c34b5206ee4ffd646239ce50b9401cab1758f1a746113e004461b20df4f44bc7fa6bc2278 libdvdread-6.1.1.tar.bz2"
diff --git a/user/libe-book/APKBUILD b/user/libe-book/APKBUILD
index ee7097969..b9fbff257 100644
--- a/user/libe-book/APKBUILD
+++ b/user/libe-book/APKBUILD
@@ -2,16 +2,20 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=libe-book
pkgver=0.1.3
-pkgrel=2
+pkgrel=4
pkgdesc="Import filter and tools for various ebook formats"
url="https://sourceforge.net/projects/libebook/"
arch="all"
license="MPL-2.0"
-depends_dev="boost-dev librevenge-dev liblangtag-dev"
-makedepends="$depends_dev icu-dev libxml2-dev zlib-dev doxygen gperf"
+depends=""
+depends_dev="boost-dev"
checkdepends="cppunit-dev"
+makedepends="$depends_dev icu-dev liblangtag-dev librevenge-dev libxml2-dev
+ zlib-dev doxygen gperf"
subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
-source="http://downloads.sourceforge.net/project/libebook/libe-book-$pkgver/libe-book-$pkgver.tar.bz2"
+source="https://downloads.sourceforge.net/project/libebook/libe-book-$pkgver/libe-book-$pkgver.tar.bz2
+ fix-icu68.patch
+ "
prepare() {
default_prepare
@@ -19,7 +23,6 @@ prepare() {
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,12 +36,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -47,4 +48,5 @@ tools() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="9afa2949f702a34fd6278145ce8d18d504326ed5a103bbc872d0493fcf3e2166d41d094bb0d74b80aa913ca6d082f5bd3259799a4a3c7359331ccdfa1e029a21 libe-book-0.1.3.tar.bz2"
+sha512sums="9afa2949f702a34fd6278145ce8d18d504326ed5a103bbc872d0493fcf3e2166d41d094bb0d74b80aa913ca6d082f5bd3259799a4a3c7359331ccdfa1e029a21 libe-book-0.1.3.tar.bz2
+4a8d8b3a8b36b2ebf0b7f6173711fae367d122d4e08cd7004c1e65bb29d0636e3e9a3b3e6974ef73132eaad3f79ccb454572f97482e1f7162d8e0b3a01880ba2 fix-icu68.patch"
diff --git a/user/libe-book/fix-icu68.patch b/user/libe-book/fix-icu68.patch
new file mode 100644
index 000000000..c6d3e2193
--- /dev/null
+++ b/user/libe-book/fix-icu68.patch
@@ -0,0 +1,13 @@
+Subject: from https://sourceforge.net/p/libebook/code/ci/edc7a50a06f56992fe21a80afb4f20fbdc5654ed/
+
+--- a/src/lib/EBOOKCharsetConverter.cpp
++++ b/src/lib/EBOOKCharsetConverter.cpp
+@@ -124,7 +124,7 @@
+ m_converterToUTF8.get(), m_converterToUnicode.get(),
+ &outText, outText + out.size(), &inText, inText + length,
+ nullptr, nullptr, nullptr, nullptr,
+- TRUE, TRUE, &status)
++ true, true, &status)
+ ;
+ if (status==U_BUFFER_OVERFLOW_ERROR)
+ {
diff --git a/user/libebml/APKBUILD b/user/libebml/APKBUILD
index 5ed4be827..dc05db886 100644
--- a/user/libebml/APKBUILD
+++ b/user/libebml/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer:
pkgname=libebml
-pkgver=1.3.7
+pkgver=1.4.4
pkgrel=0
pkgdesc="Library to parse Extensible Binary Meta-Language files"
url="https://www.matroska.org/"
@@ -9,24 +9,23 @@ arch="all"
options="!check" # No test suite.
license="LGPL-2.1+"
depends=""
+makedepends="cmake"
subpackages="$pkgname-dev"
source="https://dl.matroska.org/downloads/$pkgname/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
- -DCMAKE_C_FLAGS="$CFLAGS"
+ -DCMAKE_C_FLAGS="$CFLAGS" .
make
}
package() {
- cd "$builddir"
make install DESTDIR="$pkgdir"
}
-sha512sums="ad574a73a1d2c5fbd4581991ff790ef22cfcaf5645295b06dce36235b43d552bbec3b400d3c80550c8020ed3720226fad05348c6034c444da1106439c7fd9fc1 libebml-1.3.7.tar.xz"
+sha512sums="24f2bf51cd71f583bdd3bb33dbf20b5adeb8e96345de3abf3014f3ae1b0610c1bd04b802f26b4a1a26f884a696d6accf784bed1510f12538a6664cbd9ae51d6d libebml-1.4.4.tar.xz"
diff --git a/user/libepoxy/APKBUILD b/user/libepoxy/APKBUILD
index 9de8a24e2..23d4bef2e 100644
--- a/user/libepoxy/APKBUILD
+++ b/user/libepoxy/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Valery Kartel <valery.kartel@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libepoxy
-pkgver=1.5.3
+pkgver=1.5.9
pkgrel=0
pkgdesc="Direct Rendering Manager runtime library"
url="https://github.com/anholt/libepoxy"
@@ -10,31 +10,23 @@ options="!check" # Requires X11 and appropriate mesa-dri-* package
license="MIT"
depends=""
depends_dev="libx11-dev"
-makedepends="$depends_dev mesa-dev meson ninja"
-install=""
+makedepends="$depends_dev libglvnd-dev meson"
subpackages="$pkgname-dev"
source="https://github.com/anholt/libepoxy/releases/download/$pkgver/libepoxy-$pkgver.tar.xz"
-prepare() {
- cd "$builddir"
- default_prepare
- mkdir _build
-}
-
build() {
- cd "$builddir"/_build
- meson -Dprefix=/usr
- ninja
+ meson \
+ -Dprefix=/usr \
+ build
+ meson compile -C build
}
check() {
- cd "$builddir"/_build
- ninja test
+ meson test -C build
}
package() {
- cd "$builddir"/_build
- DESTDIR="$pkgdir" ninja install
+ DESTDIR="$pkgdir" meson install -C build
}
-sha512sums="746dfe2a0a91319abd3906c75f81f6b895117f39120e0d8897db1daec1b6d2e91e1318f0dfe588c81907727b0a6dd1a7e4a819ee6b3063a23875312570464720 libepoxy-1.5.3.tar.xz"
+sha512sums="eebaae4b8ff5014a8c90bf63fd9626424f472f99a7dbb81273a45b06c854e57f7d1b2d0fb44847221173c4f92d659fcec8a848a3b32f07225cd0ba35a2fad135 libepoxy-1.5.9.tar.xz"
diff --git a/user/libepubgen/APKBUILD b/user/libepubgen/APKBUILD
index c8ac0d749..94ddc961a 100644
--- a/user/libepubgen/APKBUILD
+++ b/user/libepubgen/APKBUILD
@@ -8,13 +8,12 @@ url="https://sourceforge.net/projects/libepubgen/"
arch="all"
license="MPL-2.0"
depends=""
-makedepends="librevenge-dev libxml2-dev doxygen"
checkdepends="cppunit-dev"
+makedepends="librevenge-dev libxml2-dev doxygen"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.sourceforge.net/project/$pkgname/$pkgname-$pkgver/$pkgname-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,12 +25,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libertine-fonts/APKBUILD b/user/libertine-fonts/APKBUILD
index bc202bf17..35845f1ae 100644
--- a/user/libertine-fonts/APKBUILD
+++ b/user/libertine-fonts/APKBUILD
@@ -12,11 +12,9 @@ depends="fontconfig"
makedepends=""
subpackages=""
source="https://downloads.sourceforge.net/linuxlibertine/LinLibertineOTF_${pkgver}_2012_07_02.tgz"
-builddir="$srcdir/"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF/ *.otf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/OTF/ "$srcdir"/*.otf
}
sha512sums="a441a127fb56413a69de3a435f3c5870b53ef2d3b6c341f7bf14e112f90d698ed2e7f9b002e0fcf951b93fa7f29be229bd796f8679f0b610d06705f02e01a6c7 LinLibertineOTF_5.3.0_2012_07_02.tgz"
diff --git a/user/libetonyek/APKBUILD b/user/libetonyek/APKBUILD
index 1156482f8..3b40c1484 100644
--- a/user/libetonyek/APKBUILD
+++ b/user/libetonyek/APKBUILD
@@ -1,18 +1,19 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=libetonyek
-pkgver=0.1.9
-pkgrel=0
+pkgver=0.1.10
+pkgrel=2
pkgdesc="Import filter and tools for Apple iWork documents"
url="https://wiki.documentfoundation.org/DLP/Libraries/libetonyek"
arch="all"
license="MPL-2.0"
+depends=""
depends_dev="glm boost-dev"
-makedepends="$depends_dev librevenge-dev liblangtag-dev zlib-dev
- libxml2-dev gperf doxygen mdds~1.4"
checkdepends="cppunit-dev"
+makedepends="$depends_dev librevenge-dev liblangtag-dev zlib-dev
+ libxml2-dev gperf doxygen mdds"
subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
-source="http://dev-www.libreoffice.org/src/$pkgname/$pkgname-$pkgver.tar.xz"
+source="https://dev-www.libreoffice.org/src/$pkgname/$pkgname-$pkgver.tar.xz"
build() {
./configure \
@@ -25,7 +26,7 @@ build() {
--localstatedir=/var \
--disable-werror \
--disable-static \
- --with-mdds=1.4
+ --with-mdds=2.1
make
}
@@ -42,4 +43,4 @@ tools() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="3f439b369d450bb1a4bdb3fe92023bda234b323cf676570f1738318c56867a97910f536280b9b164c3fdaa423a3ee669c935df75a5c700bc1530ea5b9a00391e libetonyek-0.1.9.tar.xz"
+sha512sums="516a14fcb7b7b5898484a4263d593a036ac728b90144da9d1c22a5d0fdffc879839e19a7b390f99d924c390d433e64433fb08939b1e04ca24359315571c5772b libetonyek-0.1.10.tar.xz"
diff --git a/user/libetpan/APKBUILD b/user/libetpan/APKBUILD
index 474c2d67c..b8fe55fd2 100644
--- a/user/libetpan/APKBUILD
+++ b/user/libetpan/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libetpan
-pkgver=1.9.3
-pkgrel=0
+pkgver=1.9.4
+pkgrel=1
pkgdesc="Mail library for C"
url="https://www.etpan.org/libetpan.html"
arch="all"
@@ -13,8 +13,14 @@ makedepends="autoconf automake cyrus-sasl-dev db-dev expat-dev libtool
subpackages="$pkgname-dev"
source="libetpan-$pkgver.tar.gz::https://github.com/dinhviethoa/libetpan/archive/$pkgver.tar.gz
missing-header.patch
+ CVE-2020-15953-a.patch
+ CVE-2020-15953-b.patch
"
+# secfixes:
+# 1.9.4-r1:
+# - CVE-2020-15953
+
build() {
./autogen.sh \
--build=$CBUILD \
@@ -34,5 +40,7 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="66e504fbf82445819845a3f1dcb8dc48ad2440993134d43752c754463cee2434a30080718687cd05c579f0da8df6b0f6dfc7572f2882d0dd9dfd327b4ae11fd6 libetpan-1.9.3.tar.gz
-df0ba883c9328b7cab408a54f38e6f9c7f5f603b0f016b7ea2e9fa49aa4118ff6723218bb9942f278028291e1c7e9da0bb1d48ab2c471b0ddf5edc3e78a8a1df missing-header.patch"
+sha512sums="7b7047d084fb4ce0c91821c2ad78e921d6d009106851afb7f5b068713c84ebe6926f6bf7a7423f263eeebef617511e44f6b65448d892bbc058c447235fd55c0f libetpan-1.9.4.tar.gz
+df0ba883c9328b7cab408a54f38e6f9c7f5f603b0f016b7ea2e9fa49aa4118ff6723218bb9942f278028291e1c7e9da0bb1d48ab2c471b0ddf5edc3e78a8a1df missing-header.patch
+17f2773dc7b807178b152293474e2dc05f4a0d708d56ca01a95a33f1a84af3839efa64e318fd18af946640311032e3c7c2e27a2259d9222ce8e175caa161dbc2 CVE-2020-15953-a.patch
+61bfa931ce10a5a25caca261f672135f80202e266feaff981ffe994ea5d55d099b127c5734cca02194ad1bd0ef4d7d37a0022640e749a5168a9f56018580de5f CVE-2020-15953-b.patch"
diff --git a/user/libetpan/CVE-2020-15953-a.patch b/user/libetpan/CVE-2020-15953-a.patch
new file mode 100644
index 000000000..1130e3a51
--- /dev/null
+++ b/user/libetpan/CVE-2020-15953-a.patch
@@ -0,0 +1,27 @@
+From 8ceb0cf0191f8b374a7f05974b29c6242ce8f752 Mon Sep 17 00:00:00 2001
+From: Damian Poddebniak <poddebniak@fh-muenster.de>
+Date: Thu, 23 Jul 2020 19:24:45 +0200
+Subject: [PATCH] Detect extra data after STARTTLS response and exit
+
+---
+ src/low-level/imap/mailimap.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+diff --git a/src/low-level/imap/mailimap.c b/src/low-level/imap/mailimap.c
+index bb17119d..4ffcf55d 100644
+--- a/src/low-level/imap/mailimap.c
++++ b/src/low-level/imap/mailimap.c
+@@ -2428,6 +2428,13 @@ int mailimap_starttls(mailimap * session)
+
+ mailimap_response_free(response);
+
++ // Detect if the server send extra data after the STARTTLS response.
++ // This *may* be a "response injection attack".
++ if (session->imap_stream->read_buffer_len != 0) {
++ // Since it is also an IMAP protocol violation, exit.
++ return MAILIMAP_ERROR_STARTTLS;
++ }
++
+ switch (error_code) {
+ case MAILIMAP_RESP_COND_STATE_OK:
+ return MAILIMAP_NO_ERROR;
diff --git a/user/libetpan/CVE-2020-15953-b.patch b/user/libetpan/CVE-2020-15953-b.patch
new file mode 100644
index 000000000..95e0385bb
--- /dev/null
+++ b/user/libetpan/CVE-2020-15953-b.patch
@@ -0,0 +1,58 @@
+From 6068b0fa8310bced874b322b20ac470472c64784 Mon Sep 17 00:00:00 2001
+From: Fabian Ising <f.ising@fh-muenster.de>
+Date: Fri, 24 Jul 2020 08:56:05 +0200
+Subject: [PATCH 1/2] Detect extra data after STLS response and return error
+
+---
+ src/low-level/pop3/mailpop3.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/src/low-level/pop3/mailpop3.c b/src/low-level/pop3/mailpop3.c
+index ab9535be..e2124bf8 100644
+--- a/src/low-level/pop3/mailpop3.c
++++ b/src/low-level/pop3/mailpop3.c
+@@ -959,6 +959,14 @@ int mailpop3_stls(mailpop3 * f)
+
+ if (r != RESPONSE_OK)
+ return MAILPOP3_ERROR_STLS_NOT_SUPPORTED;
++
++ // Detect if the server send extra data after the STLS response.
++ // This *may* be a "response injection attack".
++ if (f->pop3_stream->read_buffer_len != 0) {
++ // Since it is also protocol violation, exit.
++ // There is no error type for STARTTLS errors in POP3
++ return MAILPOP3_ERROR_SSL;
++ }
+
+ return MAILPOP3_NO_ERROR;
+ }
+
+From 874ebf7ce9d108c6c1def733f90d156b44fb6ef7 Mon Sep 17 00:00:00 2001
+From: Fabian Ising <f.ising@fh-muenster.de>
+Date: Fri, 24 Jul 2020 08:56:31 +0200
+Subject: [PATCH 2/2] Detect extra data after SMTP STARTTLS response and return
+ error
+
+---
+ src/low-level/smtp/mailsmtp.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/src/low-level/smtp/mailsmtp.c b/src/low-level/smtp/mailsmtp.c
+index b7fc459e..3145cadf 100644
+--- a/src/low-level/smtp/mailsmtp.c
++++ b/src/low-level/smtp/mailsmtp.c
+@@ -1111,6 +1111,14 @@ int mailesmtp_starttls(mailsmtp * session)
+ return MAILSMTP_ERROR_STREAM;
+ r = read_response(session);
+
++ // Detect if the server send extra data after the STARTTLS response.
++ // This *may* be a "response injection attack".
++ if (session->stream->read_buffer_len != 0) {
++ // Since it is also protocol violation, exit.
++ // There is no general error type for STARTTLS errors in SMTP
++ return MAILSMTP_ERROR_SSL;
++ }
++
+ switch (r) {
+ case 220:
+ return MAILSMTP_NO_ERROR;
diff --git a/user/libev/APKBUILD b/user/libev/APKBUILD
index e13d861ef..8b1b90edd 100644
--- a/user/libev/APKBUILD
+++ b/user/libev/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
-# Maintainer:
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@adelielinux.org>
pkgname=libev
-pkgver=4.25
+pkgver=4.33
pkgrel=0
pkgdesc="Event dispatch library"
url="http://software.schmorp.de/pkg/libev.html"
@@ -21,7 +21,6 @@ prepare() {
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,10 +30,9 @@ build() {
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
rm "$pkgdir"/usr/include/event.h
}
-sha512sums="83455d4dcb626a28d8477aaea27cdee6bc88b273fae926a57eed9f6a59d4b0ea2eef0f41ad09ff711aea2956ed83a591aa53cfe8aa242f7d0a4da19180d764c4 libev-4.25.tar.gz
+sha512sums="c662a65360115e0b2598e3e8824cf7b33360c43a96ac9233f6b6ea2873a10102551773cad0e89e738541e75af9fd4f3e3c11cd2f251c5703aa24f193128b896b libev-4.33.tar.gz
b5bc1b5ed1e605cd45a01adce70c1a97188c0b46a36333f12eccd4407c95d96f18adff90ee8c5733c1783a36b4adc5ef67d6b470104339a1ac5c4539a2a4599e libev-4.11-Add-pkgconfig-support.patch"
diff --git a/user/libevdev/APKBUILD b/user/libevdev/APKBUILD
index e83c3dd0d..ef892cbf1 100644
--- a/user/libevdev/APKBUILD
+++ b/user/libevdev/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libevdev
-pkgver=1.6.0
+pkgver=1.9.1
pkgrel=0
pkgdesc="Wrapper library for kernel event devices"
url="https://www.freedesktop.org/wiki/Software/libevdev"
@@ -14,7 +14,6 @@ subpackages="$pkgname-dev $pkgname-doc"
source="https://freedesktop.org/software/$pkgname/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,13 +26,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="73046da447773716c9f0c9f511f3a0a6ababcf92a146eba363014afcbdb465f4c3cd8be0917f2f01561a72f24f20fe8ecd333467437d9d85c03afcb433d05060 libevdev-1.6.0.tar.xz"
+sha512sums="7d845ce2279d2e2ef12437f6218550265ea0c85e5b6c0d116aff09787b73626b338fe3084baff060085d393688b5ae3d33772689e0581684eff257af01c4c645 libevdev-1.9.1.tar.xz"
diff --git a/user/libevent/APKBUILD b/user/libevent/APKBUILD
index e1d570d9d..52f553215 100644
--- a/user/libevent/APKBUILD
+++ b/user/libevent/APKBUILD
@@ -1,20 +1,20 @@
-# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
-# Maintainer:
+# Contributor: Sergey Lukin <sergej.lukin@gmail.com>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libevent
-pkgver=2.1.8
-pkgrel=4
+pkgver=2.1.13_pre1
+pkgdate=20220114
+pkgrel=1
pkgdesc="An event notification library"
-url="http://libevent.org/"
+url="https://libevent.org/"
arch="all"
license="BSD-3-Clause"
+options="!check" # see #448
depends=""
-depends_dev="python3"
+depends_dev="python3 autoconf automake libtool"
makedepends="$depends_dev openssl-dev"
subpackages="$pkgname-dev"
-source="https://github.com/$pkgname/$pkgname/releases/download/release-$pkgver-stable/$pkgname-$pkgver-stable.tar.gz
- dont-test-fallback.patch
- fix-test-on-32bit.patch
- py3_dumpevents.patch
+#source="https://github.com/$pkgname/$pkgname/releases/download/release-$pkgver-stable/$pkgname-$pkgver-stable.tar.gz
+source="https://distfiles.adelielinux.org/source/$pkgname-$pkgver-$pkgdate.tar.gz
py3_rpcgen.patch
"
@@ -24,15 +24,16 @@ source="https://github.com/$pkgname/$pkgname/releases/download/release-$pkgver-s
# - CVE-2016-10196
# - CVE-2016-10197
-builddir="$srcdir"/$pkgname-$pkgver-stable
+builddir="$srcdir"/$pkgname-$pkgver-$pkgdate
prepare() {
- cd "$builddir"
default_prepare
+ ./autogen.sh
+ # See: adelie/packages#1132
+ sed -i -e "s/@VERSION@/$pkgver-r$pkgrel/" *.pc.in
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -43,12 +44,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make -j1 DESTDIR=$pkgdir install
}
@@ -58,8 +57,5 @@ dev() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}
-sha512sums="a2fd3dd111e73634e4aeb1b29d06e420b15c024d7b47778883b5f8a4ff320b5057a8164c6d50b53bd196c79d572ce2639fe6265e03a93304b09c22b41e4c2a17 libevent-2.1.8-stable.tar.gz
-d059a592252f83a918f0b6237e2dbee1d05822c83372bcd0f658a25428cce109fd088c5dec8320fef4c1aa7a713ada53aae9b7c04d7ca9b039ed4a483ba84146 dont-test-fallback.patch
-7898a00eeab4af7ff3b7c1ee3b90e0d718beba435dfadf015f62084524b2b0f4049c8dd9e16926c61017c01faabf7a51c2f19be7f9532e01278d691acb98465d fix-test-on-32bit.patch
-1f51788db3797870392997d0314fb744ee54d3b1a326d1b67f522fc7af65d50210cb137e8213d35a788bbf3c97aac18cd9860de8af3cb8c82f25e3ae07d662ae py3_dumpevents.patch
-00d0b09425835638a5e29d96d70c855a5c57efb188157b80a3885a2dcbe88709b49ae57aeb6b8b590458a934116cf59934e6e32fbf684b2b3b8333c0dcac837e py3_rpcgen.patch"
+sha512sums="1b5a7d71e090d3e3d76b7b8e83ae99d3b1430751f2864ac60ae6b2a0d18e8557122e63f6f21c41b4e71c97ea54dc04dc425f81adafd50146387cf92e60aec7ff libevent-2.1.13_pre1-20220114.tar.gz
+ca097528f88b0a86248be594b44eaa7edcb3a1ee2b808685c09aa7947bb5c10342f4b584e7f2fcef6bc4a185fecb80da4a7a6660dd5c075f3416f9a55a1389b0 py3_rpcgen.patch"
diff --git a/user/libevent/dont-test-fallback.patch b/user/libevent/dont-test-fallback.patch
deleted file mode 100644
index 42a40094a..000000000
--- a/user/libevent/dont-test-fallback.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-The libevent fallback monotonic clock is broken, but it should never be used
-anyway on musl, so disable testing it.
-
-(the brokenness involves gettimeofday, you don't want to know)
-
---- libevent-2.1.8-stable/test/regress_util.c.old 2017-01-15 03:04:34.000000000 -0600
-+++ libevent-2.1.8-stable/test/regress_util.c 2017-09-14 16:25:58.887687965 -0500
-@@ -1482,7 +1482,7 @@
- { "monotonic_res_fallback", test_evutil_monotonic_res, TT_OFF_BY_DEFAULT, &basic_setup, (void*)"fallback" },
- { "monotonic_prc", test_evutil_monotonic_prc, 0, &basic_setup, (void*)"" },
- { "monotonic_prc_precise", test_evutil_monotonic_prc, 0, &basic_setup, (void*)"precise" },
-- { "monotonic_prc_fallback", test_evutil_monotonic_prc, 0, &basic_setup, (void*)"fallback" },
-+ /* { "monotonic_prc_fallback", test_evutil_monotonic_prc, 0, &basic_setup, (void*)"fallback" }, */
- { "date_rfc1123", test_evutil_date_rfc1123, 0, NULL, NULL },
- END_OF_TESTCASES,
- };
diff --git a/user/libevent/fix-test-on-32bit.patch b/user/libevent/fix-test-on-32bit.patch
deleted file mode 100644
index ec120a78c..000000000
--- a/user/libevent/fix-test-on-32bit.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- libevent-2.1.8-stable/test/regress_util.c.old 2018-03-04 21:14:24.344542520 -0600
-+++ libevent-2.1.8-stable/test/regress_util.c 2018-03-04 21:24:23.788814572 -0600
-@@ -1411,7 +1411,7 @@
- { 1255132800, "Sat, 10 Oct 2009 00:00:00 GMT"},
- { 1289433600, "Thu, 11 Nov 2010 00:00:00 GMT"},
- { 1323648000, "Mon, 12 Dec 2011 00:00:00 GMT"},
--#ifndef _WIN32
-+#if !defined(_WIN32) && (!defined(__SIZEOF_LONG__) || __SIZEOF_LONG__ > 4)
- /** In win32 case we have max "23:59:59 January 18, 2038, UTC" for time32 */
- { 4294967296, "Sun, 07 Feb 2106 06:28:16 GMT"} /* 2^32 */,
- /** In win32 case we have max "23:59:59, December 31, 3000, UTC" for time64 */
diff --git a/user/libevent/libressl.patch b/user/libevent/libressl.patch
deleted file mode 100644
index 21a750c2c..000000000
--- a/user/libevent/libressl.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-diff -ru a/openssl-compat.h b/openssl-compat.h
---- a/openssl-compat.h
-+++ b/openssl-compat.h
-@@ -1,7 +1,7 @@
- #ifndef OPENSSL_COMPAT_H
- #define OPENSSL_COMPAT_H
-
--#if OPENSSL_VERSION_NUMBER < 0x10100000L
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
-
- static inline BIO_METHOD *BIO_meth_new(int type, const char *name)
- {
-@@ -30,6 +30,6 @@
-
- #define TLS_method SSLv23_method
-
--#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */
-+#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) */
-
- #endif /* OPENSSL_COMPAT_H */
-diff -ru a/sample/https-client.c b/sample/https-client.c
---- a/sample/https-client.c
-+++ b/sample/https-client.c
-@@ -312,7 +312,7 @@
- }
- uri[sizeof(uri) - 1] = '\0';
-
--#if OPENSSL_VERSION_NUMBER < 0x10100000L
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
- // Initialize OpenSSL
- SSL_library_init();
- ERR_load_crypto_strings();
-@@ -480,7 +480,7 @@
- SSL_CTX_free(ssl_ctx);
- if (type == HTTP && ssl)
- SSL_free(ssl);
--#if OPENSSL_VERSION_NUMBER < 0x10100000L
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
- EVP_cleanup();
- ERR_free_strings();
-
-@@ -492,7 +492,7 @@
- CRYPTO_cleanup_all_ex_data();
-
- sk_SSL_COMP_free(SSL_COMP_get_compression_methods());
--#endif /*OPENSSL_VERSION_NUMBER < 0x10100000L */
-+#endif /*OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER) */
-
- #ifdef _WIN32
- WSACleanup();
-diff -ru a/sample/le-proxy.c b/sample/le-proxy.c
---- a/sample/le-proxy.c
-+++ b/sample/le-proxy.c
-@@ -259,7 +259,7 @@
-
- if (use_ssl) {
- int r;
--#if OPENSSL_VERSION_NUMBER < 0x10100000L
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
- SSL_library_init();
- ERR_load_crypto_strings();
- SSL_load_error_strings();
-diff -ru a/sample/openssl_hostname_validation.c b/sample/openssl_hostname_validation.c
---- a/sample/openssl_hostname_validation.c
-+++ b/sample/openssl_hostname_validation.c
-@@ -48,7 +48,7 @@
-
- #define HOSTNAME_MAX_SIZE 255
-
--#if OPENSSL_VERSION_NUMBER < 0x10100000L
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
- #define ASN1_STRING_get0_data ASN1_STRING_data
- #endif
-
-diff -ru a/test/regress_ssl.c b/test/regress_ssl.c
---- a/test/regress_ssl.c
-+++ b/test/regress_ssl.c
-@@ -186,7 +186,7 @@
- void
- init_ssl(void)
- {
--#if OPENSSL_VERSION_NUMBER < 0x10100000L
-+#if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
- SSL_library_init();
- ERR_load_crypto_strings();
- SSL_load_error_strings();
-@@ -194,6 +194,10 @@
- if (SSLeay() != OPENSSL_VERSION_NUMBER) {
- TT_DECLARE("WARN", ("Version mismatch for openssl: compiled with %lx but running with %lx", (unsigned long)OPENSSL_VERSION_NUMBER, (unsigned long) SSLeay()));
- }
-+ if (SSLeay() != LIBRESSL_VERSION_NUMBER) {
-+ TT_DECLARE("WARN", ("Version mismatch for libressl: compiled with %lx but running with %lx", (unsigned long)LIBRESSL_VERSION_NUMBER, (unsigned long) SSLeay()));
-+ }
-+
- #endif
- }
-
diff --git a/user/libevent/py3_dumpevents.patch b/user/libevent/py3_dumpevents.patch
deleted file mode 100644
index 3c012ef89..000000000
--- a/user/libevent/py3_dumpevents.patch
+++ /dev/null
@@ -1,30 +0,0 @@
---- libevent-2.1.8-stable/test/check-dumpevents.py 2016-10-04 14:55:31.000000000 -0500
-+++ libevent-2.1.8-py3-rpcgen/test/check-dumpevents.py 2017-09-14 15:51:16.000000000 -0500
-@@ -15,12 +15,12 @@
- got_inserted_pos = text.index("Inserted events:\n")
- got_active_pos = text.index("Active events:\n")
- except ValueError:
-- print >>sys.stderr, "Missing expected dividing line in dumpevents output"
-+ sys.stderr.write("Missing expected dividing line in dumpevents output\n")
- sys.exit(1)
-
- if not (expect_inserted_pos < expect_active_pos <
- got_inserted_pos < got_active_pos):
-- print >>sys.stderr, "Sections out of order in dumpevents output"
-+ sys.stderr.write("Sections out of order in dumpevents output\n")
- sys.exit(1)
-
- now,T= text[1].split()
-@@ -45,10 +45,10 @@
- if "Internal" not in s)
-
- if cleaned_inserted != want_inserted:
-- print >>sys.stderr, "Inserted event lists were not as expected!"
-+ sys.stderr.write("Inserted event lists were not as expected!\n")
- sys.exit(1)
-
- if set(got_active) != set(want_active):
-- print >>sys.stderr, "Active event lists were not as expected!"
-+ sys.stderr.write("Active event lists were not as expected!\n")
- sys.exit(1)
-
diff --git a/user/libevent/py3_rpcgen.patch b/user/libevent/py3_rpcgen.patch
index 2ebe974a6..13c32edc1 100644
--- a/user/libevent/py3_rpcgen.patch
+++ b/user/libevent/py3_rpcgen.patch
@@ -1,423 +1,8 @@
--- libevent-2.1.8-stable/event_rpcgen.py 2016-12-06 03:44:11.000000000 -0600
+++ libevent-2.1.8-py3-rpcgen/event_rpcgen.py 2017-09-14 15:17:51.000000000 -0500
@@ -1,4 +1,4 @@
--#!/usr/bin/env python2
+-#!/usr/bin/env python
+#!/usr/bin/env python3
#
# Copyright (c) 2005-2007 Niels Provos <provos@citi.umich.edu>
# Copyright (c) 2007-2012 Niels Provos and Nick Mathewson
-@@ -36,10 +36,10 @@
-
- def declare(s):
- if not QUIETLY:
-- print s
-+ print(s)
-
- def TranslateList(mylist, mydict):
-- return map(lambda x: x % mydict, mylist)
-+ return [x % mydict for x in mylist]
-
- # Exception class for parse errors
- class RpcGenError(Exception):
-@@ -57,7 +57,7 @@
- declare(' Created struct: %s' % name)
-
- def AddEntry(self, entry):
-- if self._tags.has_key(entry.Tag()):
-+ if entry.Tag() in self._tags:
- raise RpcGenError(
- 'Entry "%s" duplicates tag number %d from "%s" '
- 'around line %d' % (entry.Name(), entry.Tag(),
-@@ -78,7 +78,8 @@
- def PrintIndented(self, file, ident, code):
- """Takes an array, add indentation to each entry and prints it."""
- for entry in code:
-- print >>file, '%s%s' % (ident, entry)
-+ file.write('{}{}\n'.format(ident, entry))
-+ #file.write('%s%s' % (ident, entry))
-
- class StructCCode(Struct):
- """ Knows how to generate C code for a struct """
-@@ -88,20 +89,19 @@
-
- def PrintTags(self, file):
- """Prints the tag definitions for a structure."""
-- print >>file, '/* Tag definition for %s */' % self._name
-- print >>file, 'enum %s_ {' % self._name.lower()
-+ file.write('/* Tag definition for %s */\n' % self._name)
-+ file.write('enum %s_ {\n' % self._name.lower())
- for entry in self._entries:
-- print >>file, ' %s=%d,' % (self.EntryTagName(entry),
-- entry.Tag())
-- print >>file, ' %s_MAX_TAGS' % (self._name.upper())
-- print >>file, '};\n'
-+ file.write(' %s=%d,\n' % (self.EntryTagName(entry), entry.Tag()))
-+ file.write(' %s_MAX_TAGS\n' % (self._name.upper()))
-+ file.write('};\n\n')
-
- def PrintForwardDeclaration(self, file):
-- print >>file, 'struct %s;' % self._name
-+ file.write('struct %s;\n' % self._name)
-
- def PrintDeclaration(self, file):
-- print >>file, '/* Structure declaration for %s */' % self._name
-- print >>file, 'struct %s_access_ {' % self._name
-+ file.write('/* Structure declaration for %s */\n' % self._name)
-+ file.write('struct %s_access_ {\n' % self._name)
- for entry in self._entries:
- dcl = entry.AssignDeclaration('(*%s_assign)' % entry.Name())
- dcl.extend(
-@@ -110,20 +110,19 @@
- dcl.extend(
- entry.AddDeclaration('(*%s_add)' % entry.Name()))
- self.PrintIndented(file, ' ', dcl)
-- print >>file, '};\n'
-+ file.write('};\n\n')
-
-- print >>file, 'struct %s {' % self._name
-- print >>file, ' struct %s_access_ *base;\n' % self._name
-+ file.write('struct %s {\n' % self._name)
-+ file.write(' struct %s_access_ *base;\n\n' % self._name)
- for entry in self._entries:
- dcl = entry.Declaration()
- self.PrintIndented(file, ' ', dcl)
-- print >>file, ''
-+ file.write('\n')
- for entry in self._entries:
-- print >>file, ' ev_uint8_t %s_set;' % entry.Name()
-- print >>file, '};\n'
-+ file.write(' ev_uint8_t %s_set;\n' % entry.Name())
-+ file.write('};\n\n')
-
-- print >>file, \
--"""struct %(name)s *%(name)s_new(void);
-+ file.write("""struct %(name)s *%(name)s_new(void);
- struct %(name)s *%(name)s_new_with_arg(void *);
- void %(name)s_free(struct %(name)s *);
- void %(name)s_clear(struct %(name)s *);
-@@ -133,7 +132,7 @@
- void evtag_marshal_%(name)s(struct evbuffer *, ev_uint32_t,
- const struct %(name)s *);
- int evtag_unmarshal_%(name)s(struct evbuffer *, ev_uint32_t,
-- struct %(name)s *);""" % { 'name' : self._name }
-+ struct %(name)s *);\n""" % { 'name' : self._name })
-
-
- # Write a setting function of every variable
-@@ -146,22 +145,21 @@
- self.PrintIndented(file, '', entry.AddDeclaration(
- entry.AddFuncName()))
-
-- print >>file, '/* --- %s done --- */\n' % self._name
-+ file.write('/* --- %s done --- */\n\n' % self._name)
-
- def PrintCode(self, file):
-- print >>file, ('/*\n'
-+ file.write(('/*\n'
- ' * Implementation of %s\n'
-- ' */\n') % self._name
-+ ' */\n\n') % self._name)
-
-- print >>file, \
-- 'static struct %(name)s_access_ %(name)s_base__ = {' % \
-- { 'name' : self._name }
-+ file.write('static struct %(name)s_access_ %(name)s_base__ = {\n' % \
-+ { 'name' : self._name })
- for entry in self._entries:
- self.PrintIndented(file, ' ', entry.CodeBase())
-- print >>file, '};\n'
-+ file.write('};\n\n')
-
- # Creation
-- print >>file, (
-+ file.write((
- 'struct %(name)s *\n'
- '%(name)s_new(void)\n'
- '{\n'
-@@ -176,77 +174,77 @@
- ' event_warn("%%s: malloc", __func__);\n'
- ' return (NULL);\n'
- ' }\n'
-- ' tmp->base = &%(name)s_base__;\n') % { 'name' : self._name }
-+ ' tmp->base = &%(name)s_base__;\n\n') % { 'name' : self._name })
-
- for entry in self._entries:
- self.PrintIndented(file, ' ', entry.CodeInitialize('tmp'))
-- print >>file, ' tmp->%s_set = 0;\n' % entry.Name()
-+ file.write(' tmp->%s_set = 0;\n\n' % entry.Name())
-
-- print >>file, (
-+ file.write((
- ' return (tmp);\n'
-- '}\n')
-+ '}\n\n'))
-
- # Adding
- for entry in self._entries:
- if entry.Array():
- self.PrintIndented(file, '', entry.CodeAdd())
-- print >>file, ''
-+ file.write('\n')
-
- # Assigning
- for entry in self._entries:
- self.PrintIndented(file, '', entry.CodeAssign())
-- print >>file, ''
-+ file.write('\n')
-
- # Getting
- for entry in self._entries:
- self.PrintIndented(file, '', entry.CodeGet())
-- print >>file, ''
-+ file.write('\n')
-
- # Clearing
-- print >>file, ( 'void\n'
-+ file.write(( 'void\n'
- '%(name)s_clear(struct %(name)s *tmp)\n'
- '{'
-- ) % { 'name' : self._name }
-+ '\n') % { 'name' : self._name })
- for entry in self._entries:
- self.PrintIndented(file, ' ', entry.CodeClear('tmp'))
-
-- print >>file, '}\n'
-+ file.write('}\n\n')
-
- # Freeing
-- print >>file, ( 'void\n'
-+ file.write(( 'void\n'
- '%(name)s_free(struct %(name)s *tmp)\n'
- '{'
-- ) % { 'name' : self._name }
-+ '\n') % { 'name' : self._name })
-
- for entry in self._entries:
- self.PrintIndented(file, ' ', entry.CodeFree('tmp'))
-
-- print >>file, (' free(tmp);\n'
-- '}\n')
-+ file.write((' free(tmp);\n'
-+ '}\n\n'))
-
- # Marshaling
-- print >>file, ('void\n'
-+ file.write(('void\n'
- '%(name)s_marshal(struct evbuffer *evbuf, '
- 'const struct %(name)s *tmp)'
-- '{') % { 'name' : self._name }
-+ '{\n') % { 'name' : self._name })
- for entry in self._entries:
- indent = ' '
- # Optional entries do not have to be set
- if entry.Optional():
- indent += ' '
-- print >>file, ' if (tmp->%s_set) {' % entry.Name()
-+ file.write(' if (tmp->%s_set) {\n' % entry.Name())
- self.PrintIndented(
- file, indent,
- entry.CodeMarshal('evbuf', self.EntryTagName(entry),
- entry.GetVarName('tmp'),
- entry.GetVarLen('tmp')))
- if entry.Optional():
-- print >>file, ' }'
-+ file.write(' }\n')
-
-- print >>file, '}\n'
-+ file.write('}\n\n')
-
- # Unmarshaling
-- print >>file, ('int\n'
-+ file.write(('int\n'
- '%(name)s_unmarshal(struct %(name)s *tmp, '
- ' struct evbuffer *evbuf)\n'
- '{\n'
-@@ -255,14 +253,14 @@
- ' if (evtag_peek(evbuf, &tag) == -1)\n'
- ' return (-1);\n'
- ' switch (tag) {\n'
-- ) % { 'name' : self._name }
-+ '\n') % { 'name' : self._name })
- for entry in self._entries:
-- print >>file, ' case %s:\n' % self.EntryTagName(entry)
-+ file.write(' case %s:\n' % self.EntryTagName(entry))
- if not entry.Array():
-- print >>file, (
-+ file.write((
- ' if (tmp->%s_set)\n'
- ' return (-1);'
-- ) % (entry.Name())
-+ '\n') % (entry.Name()))
-
- self.PrintIndented(
- file, ' ',
-@@ -271,26 +269,26 @@
- entry.GetVarName('tmp'),
- entry.GetVarLen('tmp')))
-
-- print >>file, ( ' tmp->%s_set = 1;\n' % entry.Name() +
-- ' break;\n' )
-- print >>file, ( ' default:\n'
-+ file.write(( ' tmp->%s_set = 1;\n' % entry.Name() +
-+ ' break;\n' ))
-+ file.write(( ' default:\n'
- ' return -1;\n'
- ' }\n'
-- ' }\n' )
-+ ' }\n\n' ))
- # Check if it was decoded completely
-- print >>file, ( ' if (%(name)s_complete(tmp) == -1)\n'
-+ file.write(( ' if (%(name)s_complete(tmp) == -1)\n'
- ' return (-1);'
-- ) % { 'name' : self._name }
-+ '\n') % { 'name' : self._name })
-
- # Successfully decoded
-- print >>file, ( ' return (0);\n'
-- '}\n')
-+ file.write(( ' return (0);\n'
-+ '}\n\n'))
-
- # Checking if a structure has all the required data
-- print >>file, (
-+ file.write((
- 'int\n'
- '%(name)s_complete(struct %(name)s *msg)\n'
-- '{' ) % { 'name' : self._name }
-+ '{\n' ) % { 'name' : self._name })
- for entry in self._entries:
- if not entry.Optional():
- code = [
-@@ -303,12 +301,12 @@
- self.PrintIndented(
- file, ' ',
- entry.CodeComplete('msg', entry.GetVarName('msg')))
-- print >>file, (
-+ file.write((
- ' return (0);\n'
-- '}\n' )
-+ '}\n\n' ))
-
- # Complete message unmarshaling
-- print >>file, (
-+ file.write((
- 'int\n'
- 'evtag_unmarshal_%(name)s(struct evbuffer *evbuf, '
- 'ev_uint32_t need_tag, struct %(name)s *msg)\n'
-@@ -330,10 +328,10 @@
- ' error:\n'
- ' evbuffer_free(tmp);\n'
- ' return (res);\n'
-- '}\n' ) % { 'name' : self._name }
-+ '}\n\n' ) % { 'name' : self._name })
-
- # Complete message marshaling
-- print >>file, (
-+ file.write((
- 'void\n'
- 'evtag_marshal_%(name)s(struct evbuffer *evbuf, ev_uint32_t tag, '
- 'const struct %(name)s *msg)\n'
-@@ -343,7 +341,7 @@
- ' %(name)s_marshal(buf_, msg);\n'
- ' evtag_marshal_buffer(evbuf, tag, buf_);\n '
- ' evbuffer_free(buf_);\n'
-- '}\n' ) % { 'name' : self._name }
-+ '}\n\n' ) % { 'name' : self._name })
-
- class Entry:
- def __init__(self, type, name, tag):
-@@ -420,7 +418,7 @@
- "optaddarg" :
- self._optaddarg and ", const %s value" % self._ctype or ""
- }
-- for (k, v) in extradict.items():
-+ for (k, v) in list(extradict.items()):
- mapping[k] = v
-
- return mapping
-@@ -1127,7 +1125,7 @@
-
- codearrayassign = self._entry.CodeArrayAssign(
- 'msg->%(name)s_data[off]' % self.GetTranslation(), 'value')
-- code += map(lambda x: ' ' + x, codearrayassign)
-+ code += [' ' + x for x in codearrayassign]
-
- code += TranslateList([
- ' }',
-@@ -1168,7 +1166,7 @@
-
- code = TranslateList(code, self.GetTranslation())
-
-- code += map(lambda x: ' ' + x, codearrayadd)
-+ code += [' ' + x for x in codearrayadd]
-
- code += TranslateList([
- ' msg->%(name)s_set = 1;',
-@@ -1196,7 +1194,7 @@
-
- code = TranslateList(code, translate)
-
-- code += map(lambda x: ' ' + x, tmp)
-+ code += [' ' + x for x in tmp]
-
- code += [
- ' }',
-@@ -1261,7 +1259,7 @@
- code = TranslateList(code, translate)
-
- if codearrayfree:
-- code += map(lambda x: ' ' + x, codearrayfree)
-+ code += [' ' + x for x in codearrayfree]
- code += [
- ' }' ]
-
-@@ -1687,23 +1685,23 @@
-
- declare('... creating "%s"' % header_file)
- header_fp = open(header_file, 'w')
-- print >>header_fp, factory.HeaderPreamble(filename)
-+ header_fp.write(factory.HeaderPreamble(filename))
-
- # Create forward declarations: allows other structs to reference
- # each other
- for entry in entities:
- entry.PrintForwardDeclaration(header_fp)
-- print >>header_fp, ''
-+ header_fp.write('\n')
-
- for entry in entities:
- entry.PrintTags(header_fp)
- entry.PrintDeclaration(header_fp)
-- print >>header_fp, factory.HeaderPostamble(filename)
-+ header_fp.write(factory.HeaderPostamble(filename))
- header_fp.close()
-
- declare('... creating "%s"' % impl_file)
- impl_fp = open(impl_file, 'w')
-- print >>impl_fp, factory.BodyPreamble(filename, header_file)
-+ impl_fp.write(factory.BodyPreamble(filename, header_file))
- for entry in entities:
- entry.PrintCode(impl_fp)
- impl_fp.close()
-@@ -1713,16 +1711,16 @@
- CommandLine(sys.argv).run()
- sys.exit(0)
-
-- except RpcGenError, e:
-- print >>sys.stderr, e
-+ except RpcGenError as e:
-+ sys.stderr.write(e)
- sys.exit(1)
-
-- except EnvironmentError, e:
-+ except EnvironmentError as e:
- if e.filename and e.strerror:
-- print >>sys.stderr, "%s: %s" % (e.filename, e.strerror)
-+ sys.stderr.write("%s: %s" % (e.filename, e.strerror))
- sys.exit(1)
- elif e.strerror:
-- print >> sys.stderr, e.strerror
-+ sys.stderr.write(e.strerror)
- sys.exit(1)
- else:
- raise
diff --git a/user/libexecinfo/10-execinfo.patch b/user/libexecinfo/10-execinfo.patch
deleted file mode 100644
index 97bd8cd5d..000000000
--- a/user/libexecinfo/10-execinfo.patch
+++ /dev/null
@@ -1,64 +0,0 @@
---- a/execinfo.c
-+++ b/execinfo.c
-@@ -69,7 +69,8 @@
- char **
- backtrace_symbols(void *const *buffer, int size)
- {
-- int i, clen, alen, offset;
-+ size_t clen, alen;
-+ int i, offset;
- char **rval;
- char *cp;
- Dl_info info;
-@@ -78,7 +79,6 @@
- rval = malloc(clen);
- if (rval == NULL)
- return NULL;
-- (char **)cp = &(rval[size]);
- for (i = 0; i < size; i++) {
- if (dladdr(buffer[i], &info) != 0) {
- if (info.dli_sname == NULL)
-@@ -92,14 +92,14 @@
- 2 + /* " <" */
- strlen(info.dli_sname) + /* "function" */
- 1 + /* "+" */
-- D10(offset) + /* "offset */
-+ 10 + /* "offset */
- 5 + /* "> at " */
- strlen(info.dli_fname) + /* "filename" */
- 1; /* "\0" */
- rval = realloc_safe(rval, clen + alen);
- if (rval == NULL)
- return NULL;
-- snprintf(cp, alen, "%p <%s+%d> at %s",
-+ snprintf((char *) rval + clen, alen, "%p <%s+%d> at %s",
- buffer[i], info.dli_sname, offset, info.dli_fname);
- } else {
- alen = 2 + /* "0x" */
-@@ -108,12 +108,15 @@
- rval = realloc_safe(rval, clen + alen);
- if (rval == NULL)
- return NULL;
-- snprintf(cp, alen, "%p", buffer[i]);
-+ snprintf((char *) rval + clen, alen, "%p", buffer[i]);
- }
-- rval[i] = cp;
-- cp += alen;
-+ rval[i] = (char *) clen;
-+ clen += alen;
- }
-
-+ for (i = 0; i < size; i++)
-+ rval[i] += (long) rval;
-+
- return rval;
- }
-
-@@ -155,6 +158,6 @@
- return;
- snprintf(buf, len, "%p\n", buffer[i]);
- }
-- write(fd, buf, len - 1);
-+ write(fd, buf, strlen(buf));
- }
- }
diff --git a/user/libexecinfo/20-define-gnu-source.patch b/user/libexecinfo/20-define-gnu-source.patch
deleted file mode 100644
index ac18f6eeb..000000000
--- a/user/libexecinfo/20-define-gnu-source.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- a/execinfo.c
-+++ b/execinfo.c
-@@ -26,6 +26,7 @@
- * $Id: execinfo.c,v 1.3 2004/07/19 05:21:09 sobomax Exp $
- */
-
-+#define _GNU_SOURCE
- #include <sys/types.h>
- #include <sys/uio.h>
- #include <dlfcn.h>
---- a/stacktraverse.c
-+++ b/stacktraverse.c
-@@ -1,3 +1,4 @@
-+#define _GNU_SOURCE
- #include <stddef.h>
-
- #include "stacktraverse.h"
---- a/test.c
-+++ b/test.c
-@@ -1,3 +1,4 @@
-+#define _GNU_SOURCE
- #include <stdio.h>
- #include <stdlib.h>
-
diff --git a/user/libexecinfo/30-linux-makefile.patch b/user/libexecinfo/30-linux-makefile.patch
deleted file mode 100644
index f832adce7..000000000
--- a/user/libexecinfo/30-linux-makefile.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- a/Makefile
-+++ b/Makefile
-@@ -23,24 +23,25 @@
- # SUCH DAMAGE.
- #
- # $Id: Makefile,v 1.3 2004/07/19 05:19:55 sobomax Exp $
-+#
-+# Linux Makefile by Matt Smith <mcs@darkregion.net>, 2011/01/04
-
--LIB= execinfo
-+CC=cc
-+AR=ar
-+EXECINFO_CFLAGS=$(CFLAGS) -O2 -pipe -fno-strict-aliasing -std=gnu99 -fstack-protector -c
-+EXECINFO_LDFLAGS=$(LDFLAGS)
-
--SRCS= stacktraverse.c stacktraverse.h execinfo.c execinfo.h
-+all: static dynamic
-
--INCS= execinfo.h
-+static:
-+ $(CC) $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) stacktraverse.c
-+ $(CC) $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) execinfo.c
-+ $(AR) rcs libexecinfo.a stacktraverse.o execinfo.o
-
--SHLIB_MAJOR= 1
--SHLIB_MINOR= 0
-+dynamic:
-+ $(CC) -fpic -DPIC $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) stacktraverse.c -o stacktraverse.So
-+ $(CC) -fpic -DPIC $(EXECINFO_CFLAGS) $(EXECINFO_LDFLAGS) execinfo.c -o execinfo.So
-+ $(CC) -shared -Wl,-soname,libexecinfo.so.1 -o libexecinfo.so.1 stacktraverse.So execinfo.So
-
--NOPROFILE= yes
--
--DPADD= ${LIBM}
--LDADD= -lm
--
--#WARNS?= 4
--
--#stacktraverse.c: gen.py
--# ./gen.py > stacktraverse.c
--
--.include <bsd.lib.mk>
-+clean:
-+ rm -rf *.o *.So *.a *.so
diff --git a/user/libexecinfo/APKBUILD b/user/libexecinfo/APKBUILD
deleted file mode 100644
index 3f1040343..000000000
--- a/user/libexecinfo/APKBUILD
+++ /dev/null
@@ -1,48 +0,0 @@
-# Contributor: Philipp Andronov <filipp.andronov@gmail.com>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=libexecinfo
-pkgver=1.1
-pkgrel=1
-pkgdesc="Library for inspecting backtraces"
-url="https://www.freshports.org/devel/libexecinfo"
-arch="all"
-license="BSD-2-Clause"
-depends=""
-makedepends=""
-subpackages="$pkgname-dev"
-source="http://distcache.freebsd.org/local-distfiles/itetcu/$pkgname-$pkgver.tar.bz2
- 10-execinfo.patch
- 20-define-gnu-source.patch
- 30-linux-makefile.patch
- "
-
-build() {
- cd "$builddir"
- make
-}
-
-check() {
- cd "$builddir"
- ${CC:-cc} -I. -L. -ggdb -fno-omit-frame-pointer $CFLAGS -o test test.c -lexecinfo
- ./test
-}
-
-package() {
- cd "$builddir"
-
- install -D -m755 "$builddir"/execinfo.h \
- "$pkgdir"/usr/include/execinfo.h
- install -D -m755 "$builddir"/stacktraverse.h \
- "$pkgdir"/usr/include/stacktraverse.h
- install -D -m755 "$builddir"/libexecinfo.a \
- "$pkgdir"/usr/lib/libexecinfo.a
- install -D -m755 "$builddir"/libexecinfo.so.1 \
- "$pkgdir"/usr/lib/libexecinfo.so.1
- ln -s /usr/lib/libexecinfo.so.1 \
- "$pkgdir"/usr/lib/libexecinfo.so
-}
-
-sha512sums="51fea7910ef6873061a25c22434ce4da724e9d8e37616a069ad0a58c0463755be4c6c7da88cd747484c2f3373909d7be4678b32a4bd91b6d9e0f74526094e92c libexecinfo-1.1.tar.bz2
-97dab43979f6bc07deb11b20cc134c7d95619536b108058388856bcc48dc5a7de4ebceebe88e79d92ccbb9307975bb91a630cc569a5ed35a37a0f92f2d7f83d0 10-execinfo.patch
-6b1d5ba0a2765fcbcde2d88e85c6ee9fb49ef1878284fd7da15afebed17b8415959233c735574661b0a5e77d4d40c132552477dbbf4432512a32629727ebdbbc 20-define-gnu-source.patch
-7d83e3113b93ed9d54a2077d6b9381aa69c6a5d2066dd3cd7c5ec3ce0c93eb7b86fd47481151117f9c8f3790bde6125498a49e32e81d3ff6630b6d8e0ec391d0 30-linux-makefile.patch"
diff --git a/user/libexif/APKBUILD b/user/libexif/APKBUILD
index cfe2dd75f..802ed838c 100644
--- a/user/libexif/APKBUILD
+++ b/user/libexif/APKBUILD
@@ -1,24 +1,34 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=libexif
-pkgver=0.6.21
-pkgrel=2
+pkgver=0.6.24
+_pkgver=$(printf '%s' "$pkgver" | tr . _)
+pkgrel=0
pkgdesc="Library to parse EXIF metadata"
-url="https://sourceforge.net/projects/libexif"
+url="https://libexif.github.io/"
arch="all"
license="LGPL-2.0+"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
depends=""
makedepends=""
-source="https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2"
+source="https://github.com/libexif/$pkgname/releases/download/v$pkgver/$pkgname-$pkgver.tar.bz2"
-prepare() {
- cd "$builddir"
- update_config_sub
- default_prepare
-}
+# secfixes:
+# 0.6.21-r3:
+# - CVE-2017-7544
+# - CVE-2018-20030
+# 0.6.21-r4:
+# - CVE-2016-6328
+# - CVE-2019-9278
+# 0.6.22-r0:
+# - CVE-2020-0093
+# - CVE-2020-0182
+# - CVE-2020-0198
+# - CVE-2020-12767
+# - CVE-2020-13112
+# - CVE-2020-13113
+# - CVE-2020-13114
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,12 +37,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="4e0fe2abe85d1c95b41cb3abe1f6333dc3a9eb69dba106a674a78d74a4d5b9c5a19647118fa1cc2d72b98a29853394f1519eda9e2889eb28d3be26b21c7cfc35 libexif-0.6.21.tar.bz2"
+
+sha512sums="35c9e7af2c3d44a638dc6bbe8f96962d41c0f3fe4a257494f7a73baefab9aba507477175289ccf9002a66cc16ca53d5d1f44d6fef9e014b27f687ecdc58f5111 libexif-0.6.24.tar.bz2"
diff --git a/user/libexttextcat/APKBUILD b/user/libexttextcat/APKBUILD
index 48fb2df18..e5fa3061e 100644
--- a/user/libexttextcat/APKBUILD
+++ b/user/libexttextcat/APKBUILD
@@ -8,13 +8,12 @@ url="https://wiki.documentfoundation.org/Libexttextcat"
arch="all"
license="BSD-3-Clause"
depends=""
-makedepends=""
checkdepends="bash"
+makedepends=""
subpackages="$pkgname-dev"
source="http://dev-www.libreoffice.org/src/$pkgname/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,12 +27,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libfakekey/APKBUILD b/user/libfakekey/APKBUILD
index d8221c552..059aec854 100644
--- a/user/libfakekey/APKBUILD
+++ b/user/libfakekey/APKBUILD
@@ -1,25 +1,23 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libfakekey
pkgver=0.3
pkgrel=0
-pkgdesc="Library for faking X key-presses from character inputs"
+pkgdesc="Library for faking X11 key presses from character inputs"
url="https://www.yoctoproject.org/software-item/matchbox/"
arch="all"
license="LGPL-2.0+"
depends=""
-makedepends="libx11-dev libxtst-dev"
+makedepends="autoconf automake libtool libx11-dev libxtst-dev"
subpackages="$pkgname-dev"
source="http://git.yoctoproject.org/cgit.cgi/libfakekey/snapshot/libfakekey-$pkgver.tar.gz"
prepare() {
- cd "$builddir"
default_prepare
autoreconf -vif
}
build() {
- cd "$builddir"
LIBS="-lX11" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,12 +29,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libfm-extra/APKBUILD b/user/libfm-extra/APKBUILD
index 18a9ddb73..5a8cb58fb 100644
--- a/user/libfm-extra/APKBUILD
+++ b/user/libfm-extra/APKBUILD
@@ -1,12 +1,13 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libfm-extra
-pkgver=1.3.0.2
+pkgver=1.3.1
pkgrel=0
pkgdesc="Library for generating menu caches"
url="https://wiki.lxde.org/en/PCManFM"
arch="all"
license="GPL-2.0+"
+depends=""
makedepends="glib-dev intltool"
subpackages="$pkgname-dev"
source="https://downloads.sourceforge.net/pcmanfm/libfm-$pkgver.tar.xz"
@@ -14,7 +15,6 @@ source="https://downloads.sourceforge.net/pcmanfm/libfm-$pkgver.tar.xz"
builddir="$srcdir/libfm-$pkgver"
build() {
- cd "$builddir"
./configure \
--prefix=/usr \
--sysconfdir=/etc \
@@ -24,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="179cc0350509cb1a8a60b89f8145169857926c7cc3dadb9f61078d4dba79709b248b3d05862e78c11747f1fc4e45825ad6f4916d423ae5e346e5274d34197445 libfm-1.3.0.2.tar.xz"
+sha512sums="f385cf7bf2f4800c11dd6474cd20009cbe1208f1d08570b61954ea8bd84c56cc49880cbf84d4b2aa4b91eb6929d017ebc427649391059b786d7e6fc4535e4f14 libfm-1.3.1.tar.xz"
diff --git a/user/libfm-qt/APKBUILD b/user/libfm-qt/APKBUILD
index 5412fccfc..d1023dca3 100644
--- a/user/libfm-qt/APKBUILD
+++ b/user/libfm-qt/APKBUILD
@@ -1,25 +1,25 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libfm-qt
-pkgver=0.14.1
+pkgver=1.4.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="Qt library for file management and bindings for libfm"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
arch="all"
+options="!check" # No test suite.
license="LGPL-2.1+"
-depends=""
+depends="lxqt-menu-data"
depends_dev="libfm-dev menu-cache-dev libexif-dev"
-makedepends="cmake extra-cmake-modules lxqt-build-tools>=0.6.0 qt5-qttools-dev
+makedepends="cmake extra-cmake-modules lxqt-build-tools>=$_lxqt qt5-qttools-dev
qt5-qtx11extras-dev $depends_dev"
subpackages="$pkgname-dev"
source="https://github.com/lxqt/libfm-qt/releases/download/$pkgver/libfm-qt-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -28,18 +28,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS -O0" \
-DCMAKE_C_FLAGS="$CFLAGS -O0" \
-DPULL_TRANSLATIONS=False \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir/build"
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir/build"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="a265f6831a077ccb78a994828e6c69a22f2f6432b1f6ed6f404af41f013112870f7aee98067f2c466bec6cdfea040c10c7ce7e0f0ed977e5d266ec38e543d2a7 libfm-qt-0.14.1.tar.xz"
+sha512sums="d5a9bbb1f295dfbe88add760fc9c8da60771d4d49b64408b1278315b52dd071d7e24dbc9ff8354f0c68e5ad58e809e78a2dae77e2d4f52cd8e0b8409c0d7f5cb libfm-qt-1.4.0.tar.xz"
diff --git a/user/libfm/APKBUILD b/user/libfm/APKBUILD
index fc1021a8e..a32925320 100644
--- a/user/libfm/APKBUILD
+++ b/user/libfm/APKBUILD
@@ -2,19 +2,22 @@
# Maintainer:
pkgname=libfm
pkgver=1.3.1
-pkgrel=0
+pkgrel=1
pkgdesc="Library for file management"
url="https://wiki.lxde.org/en/PCManFM"
arch="all"
license="GPL-2.0+"
+depends=""
+depends_dev="libfm-extra-dev"
makedepends="dbus-glib-dev glib-dev gtk+2.0-dev intltool libexif-dev
- menu-cache-dev udisks2-dev"
+ libfm-extra-dev menu-cache-dev udisks2-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-replaces="libfm-extra"
-source="https://downloads.sourceforge.net/pcmanfm/$pkgname-$pkgver.tar.xz"
+source="https://downloads.sourceforge.net/pcmanfm/$pkgname-$pkgver.tar.xz
+ without-extra.patch
+ "
build() {
- cd "$builddir"
+ mv data/libfm.conf data/libfm.conf.sample
./configure \
--prefix=/usr \
--sysconfdir=/etc \
@@ -24,18 +27,15 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
+ # this symlink breaks installation with -extra-dev,
+ # and extra is always required anyway
+ rm "$pkgdir"/usr/include/libfm
}
-dev() {
- default_dev
- replaces="libfm-extra-dev"
-}
-
-sha512sums="f385cf7bf2f4800c11dd6474cd20009cbe1208f1d08570b61954ea8bd84c56cc49880cbf84d4b2aa4b91eb6929d017ebc427649391059b786d7e6fc4535e4f14 libfm-1.3.1.tar.xz"
+sha512sums="f385cf7bf2f4800c11dd6474cd20009cbe1208f1d08570b61954ea8bd84c56cc49880cbf84d4b2aa4b91eb6929d017ebc427649391059b786d7e6fc4535e4f14 libfm-1.3.1.tar.xz
+776559307e796309a0a68173292d4ce91c3a241a0e8310a04a96856949677f2f7f8527ae463e4438d635ebe93676dda923a2deed5b76aba007b00093e3a5a109 without-extra.patch"
diff --git a/user/libfm/without-extra.patch b/user/libfm/without-extra.patch
new file mode 100644
index 000000000..c6e86d5e7
--- /dev/null
+++ b/user/libfm/without-extra.patch
@@ -0,0 +1,75 @@
+--- libfm-1.3.1/Makefile.in.old 2018-12-17 19:18:43.000000000 +0000
++++ libfm-1.3.1/Makefile.in 2019-06-04 01:33:11.797284687 +0000
+@@ -461,7 +461,7 @@
+ docs/reference/libfm/version.xml.in
+
+ pkgconfigdir = $(libdir)/pkgconfig
+-pkgconfig_DATA = libfm-extra.pc $(am__append_5)
++pkgconfig_DATA = $(am__append_5)
+ @EXTRALIB_ONLY_FALSE@SUBDIRS = $(DIST_SUBDIRS) $(am__append_3)
+ @EXTRALIB_ONLY_TRUE@SUBDIRS = src $(am__append_3)
+ DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
+--- libfm-1.3.1/data/Makefile.in.old 2018-12-17 19:18:43.000000000 +0000
++++ libfm-1.3.1/data/Makefile.in 2019-06-04 01:38:26.663631036 +0000
+@@ -406,7 +406,7 @@
+ mime_DATA = libfm.xml
+ libfmconfdir = $(sysconfdir)/xdg/libfm
+ libfmconf_DATA = \
+- libfm.conf \
++ libfm.conf.sample \
+ $(NULL)
+
+ desktop_in_files = \
+--- libfm-1.3.1/src/Makefile.in.old 2018-12-17 19:18:44.000000000 +0000
++++ libfm-1.3.1/src/Makefile.in 2019-06-04 01:35:34.592026293 +0000
+@@ -909,14 +909,14 @@
+ @EXTRALIB_ONLY_FALSE@ gtk/fm-thumbnail.h \
+ @EXTRALIB_ONLY_FALSE@ $(NULL)
+
+-LIBFM_EXTRA_INCLUDES = \
+- fm-extra.h \
+- fm-version.h \
+- extra/fm-xml-file.h \
+- $(NULL)
++@EXTRALIB_ONLY_TRUE@LIBFM_EXTRA_INCLUDES = \
++@EXTRALIB_ONLY_TRUE@ fm-extra.h \
++@EXTRALIB_ONLY_TRUE@ fm-version.h \
++@EXTRALIB_ONLY_TRUE@ extra/fm-xml-file.h \
++@EXTRALIB_ONLY_TRUE@ $(NULL)
+
+ EXTRA_LTLIBRARIES = libfm-gtk.la libfm-gtk3.la
+-@EXTRALIB_ONLY_FALSE@lib_LTLIBRARIES = libfm-extra.la libfm.la @LIBFM_GTK_LTLIBRARIES@
++@EXTRALIB_ONLY_FALSE@lib_LTLIBRARIES = libfm.la @LIBFM_GTK_LTLIBRARIES@
+ @EXTRALIB_ONLY_TRUE@lib_LTLIBRARIES = libfm-extra.la
+ libfm_la_SOURCES = \
+ $(libfm_SOURCES) \
+@@ -1059,7 +1059,7 @@
+ @ENABLE_DEMO_TRUE@ $(GTK_LIBS) \
+ @ENABLE_DEMO_TRUE@ $(INTLLIBS) \
+ @ENABLE_DEMO_TRUE@ libfm.la \
+-@ENABLE_DEMO_TRUE@ libfm-extra.la \
++@ENABLE_DEMO_TRUE@ -lfm-extra \
+ @ENABLE_DEMO_TRUE@ @LIBFM_GTK_LTLIBRARIES@ \
+ @ENABLE_DEMO_TRUE@ $(NULL)
+
+--- libfm-1.3.1/src/modules/Makefile.in.old 2018-12-17 19:18:44.000000000 +0000
++++ libfm-1.3.1/src/modules/Makefile.in 2019-06-04 01:37:50.457501640 +0000
+@@ -180,8 +180,7 @@
+ $(gtk_menu_trash_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+ @ENABLE_GTK_TRUE@am_gtk_menu_trash_la_rpath = -rpath $(pkglibdir)
+-vfs_menu_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+- $(top_builddir)/src/libfm-extra.la
++vfs_menu_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+ vfs_menu_la_SOURCES = vfs-menu.c
+ vfs_menu_la_OBJECTS = vfs_menu_la-vfs-menu.lo
+ vfs_menu_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+@@ -459,7 +458,7 @@
+
+ # module-specific parameters
+ vfs_menu_la_CFLAGS = $(MENU_CACHE_CFLAGS) -I$(top_srcdir)/src/extra
+-vfs_menu_la_LIBADD = $(MENU_CACHE_LIBS) $(top_builddir)/src/libfm-extra.la
++vfs_menu_la_LIBADD = $(MENU_CACHE_LIBS) -lfm-extra
+ gtk_fileprop_x_desktop_la_CFLAGS = $(GTK_CFLAGS) -I$(top_srcdir)/src/gtk
+ gtk_fileprop_x_desktop_la_LIBADD = $(GTK_LIBS)
+ gtk_fileprop_x_shortcut_la_CFLAGS = $(GTK_CFLAGS) -I$(top_srcdir)/src/gtk
diff --git a/user/libfontenc/APKBUILD b/user/libfontenc/APKBUILD
index 98813ad25..de282a9a5 100644
--- a/user/libfontenc/APKBUILD
+++ b/user/libfontenc/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libfontenc
-pkgver=1.1.4
+pkgver=1.1.8
pkgrel=0
pkgdesc="X11 font encoding library"
url="https://www.X.Org/"
@@ -9,7 +9,7 @@ license="MIT"
depends=""
makedepends="util-macros xorgproto-dev zlib-dev"
subpackages="$pkgname-dev"
-source="https://www.X.Org/releases/individual/lib/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/$pkgname-$pkgver.tar.xz"
build() {
./configure \
@@ -30,4 +30,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="76fa851d00113241f15fdd5b5bb7e927b8d8b9a82ce3fcb0678b8c7e32cb5e8d898c4bda1d60dafb7748145049d3240627ac34a2360c64e98a7a912ea7c30582 libfontenc-1.1.4.tar.bz2"
+sha512sums="c9ddea9c0c6c6f4933b5b8ed2044e3dc259a9edbb3070a32f0335a6ad4d47b1858cefc01fa2dff9f29808bee311e9c677b05861200d2f2c4552c92b33fe027e2 libfontenc-1.1.8.tar.xz"
diff --git a/user/libfreehand/APKBUILD b/user/libfreehand/APKBUILD
index b8371ac74..aee38d8e0 100644
--- a/user/libfreehand/APKBUILD
+++ b/user/libfreehand/APKBUILD
@@ -2,17 +2,19 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=libfreehand
pkgver=0.1.2
-pkgrel=2
+pkgrel=4
pkgdesc="Import filter and tools for Adobe FreeHand documents"
url="https://wiki.documentfoundation.org/DLP/Libraries/libfreehand"
arch="all"
license="MPL-2.0 AND Public-Domain"
depends=""
depends_dev="libxml2-dev lcms2-dev icu-dev"
-makedepends="$depends_dev gperf perl doxygen librevenge-dev zlib-dev"
checkdepends="cppunit-dev"
+makedepends="$depends_dev gperf perl doxygen librevenge-dev zlib-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
-source="http://dev-www.libreoffice.org/src/$pkgname/$pkgname-$pkgver.tar.xz"
+source="http://dev-www.libreoffice.org/src/$pkgname/$pkgname-$pkgver.tar.xz
+ icu.patch
+ "
prepare() {
default_prepare
@@ -20,7 +22,6 @@ prepare() {
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -34,12 +35,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -48,4 +47,5 @@ tools() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="4112a76ac99999801d97d1b282596d631d8496a5bf65778ab26aa06da86637b1e2b630648a67ea01bf3316ecec9f2715546baff27af090b900267c87a011b963 libfreehand-0.1.2.tar.xz"
+sha512sums="4112a76ac99999801d97d1b282596d631d8496a5bf65778ab26aa06da86637b1e2b630648a67ea01bf3316ecec9f2715546baff27af090b900267c87a011b963 libfreehand-0.1.2.tar.xz
+5c72ee92e1b617dd0ece1a17e84c4b063454811aae484a08d2e15a29c6561068d0127222656647bd0ac05afde8c5c2154d382b4289b86e1956bf173ed4694a76 icu.patch"
diff --git a/user/libfreehand/icu.patch b/user/libfreehand/icu.patch
new file mode 100644
index 000000000..22d118cca
--- /dev/null
+++ b/user/libfreehand/icu.patch
@@ -0,0 +1,11 @@
+--- libfreehand-0.1.2/src/lib/libfreehand_utils.cpp.old 2017-09-16 10:28:50.000000000 +0000
++++ libfreehand-0.1.2/src/lib/libfreehand_utils.cpp 2020-01-12 04:40:38.492246789 +0000
+@@ -162,7 +162,7 @@
+ while (j < length)
+ {
+ UChar32 c;
+- U16_NEXT(s, j, length, c)
++ U16_NEXT(s, j, length, c);
+ unsigned char outbuf[U8_MAX_LENGTH+1];
+ int i = 0;
+ U8_APPEND_UNSAFE(&outbuf[0], i, c);
diff --git a/user/libfs/APKBUILD b/user/libfs/APKBUILD
index f6bfcb5cb..eaf750d95 100644
--- a/user/libfs/APKBUILD
+++ b/user/libfs/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libfs
-pkgver=1.0.8
+pkgver=1.0.10
pkgrel=0
pkgdesc="X11 Font Server client library"
url="https://www.X.Org/"
@@ -11,7 +11,7 @@ depends="xtrans"
depends_dev="util-macros"
makedepends="$depends_dev xorgproto-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/lib/libFS-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/libFS-$pkgver.tar.xz"
builddir="$srcdir/libFS-$pkgver"
build() {
@@ -33,4 +33,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="466198ae5c0b83e3579713d86ddfd0b039f5c5b511cf6d5dc0e9664ee2d40aec9e8929445c8e97394d85faf76a7cf2f81bddb13d23de7ce19919e3b1e36ba56f libFS-1.0.8.tar.bz2"
+sha512sums="f4dc361b7e1dcc1f348ea86e96c5a60ff40c5168b6097f00d8a5db2b86d089cfca12ac13dbde5ce3b53279b7eb8773ed6dcd9c678c2e95363ffa5127ecaacee7 libFS-1.0.10.tar.xz"
diff --git a/user/libgd/APKBUILD b/user/libgd/APKBUILD
index 13f07cfe0..57525510d 100644
--- a/user/libgd/APKBUILD
+++ b/user/libgd/APKBUILD
@@ -1,24 +1,44 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=libgd
-pkgver=2.2.5
-pkgrel=0
+pkgver=2.3.3
+pkgrel=1
pkgdesc="Library for dynamic image creation"
url="http://libgd.github.io/"
arch="all"
-options="!check" # Upstream bug 201 regression.
+options="!check" # Multiple test suite failures. Assumes SSE+ math.
license="MIT"
depends=""
-makedepends="bash fontconfig-dev freetype-dev libjpeg-turbo-dev libpng-dev
- libwebp-dev zlib-dev"
+makedepends="autoconf automake bash fontconfig-dev freetype-dev
+ libjpeg-turbo-dev libpng-dev libtool libwebp-dev libxpm-dev tiff-dev
+ zlib-dev
+ "
+# While the fontconfig/basic test checks for what happens if an empty
+# fontlist is passed to gdImageStringFT(), there still needs to be at
+# least one font installed on the system...
+checkdepends="ttf-liberation"
subpackages="$pkgname-dev"
replaces="gd"
source="https://github.com/$pkgname/$pkgname/releases/download/gd-$pkgver/$pkgname-$pkgver.tar.xz
- CVE-2016-7568.patch
+ revert-318-removal-of-macros.patch
"
+# secfixes:
+# 2.3.3-r0:
+# - CVE-2019-11038
+# - CVE-2019-6977
+# - CVE-2019-6978
+# 2.2.5-r1:
+# - CVE-2018-5711
+# - CVE-2018-1000222
+# - CVE-2019-6977
+# - CVE-2019-6978
+# 2.2.5-r2:
+# - CVE-2018-14553
+# 2.3.0-r0:
+# - CVE-2019-11038
+
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,17 +46,16 @@ build() {
--sysconfdir=/etc \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
+ --with-xpm \
--disable-werror
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -44,8 +63,9 @@ dev() {
default_dev
depends="$pkgname perl"
replaces="gd-dev"
+ mkdir -p "$subpkgdir"/usr/bin
mv "$pkgdir"/usr/bin/bdftogd "$subpkgdir"/usr/bin
}
-sha512sums="e4598e17a277a75e02255402182cab139cb3f2cffcd68ec05cc10bbeaf6bc7aa39162c3445cd4a7efc1a26b72b9152bbedb187351e3ed099ea51767319997a6b libgd-2.2.5.tar.xz
-8310d11a2398e8617c9defc4500b9ce3897ac1026002ffa36000f1d1f8df19336005e8c1f6587533f1d787a4a54d7a3a28ad25bddbc966a018aedf4d8704a716 CVE-2016-7568.patch"
+sha512sums="aa49d4381d604a4360d556419d603df2ffd689a6dcc10f8e5e1d158ddaa3ab89912f6077ca77da4e370055074007971cf6d356ec9bf26dcf39bcff3208bc7e6c libgd-2.3.3.tar.xz
+623e312e20f1994c6ae26f7fdac45b0eb7f4e65b83160ca4e22495c37b162b2dbde21ede6aab189e566b8934bb22aafdb80e9263cd87118013233927a2ab3601 revert-318-removal-of-macros.patch"
diff --git a/user/libgd/CVE-2016-7568.patch b/user/libgd/CVE-2016-7568.patch
deleted file mode 100644
index 56156411e..000000000
--- a/user/libgd/CVE-2016-7568.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-From 2806adfdc27a94d333199345394d7c302952b95f Mon Sep 17 00:00:00 2001
-From: trylab <trylab@users.noreply.github.com>
-Date: Tue, 6 Sep 2016 18:35:32 +0800
-Subject: [PATCH] Fix integer overflow in gdImageWebpCtx
-
-Integer overflow can be happened in expression gdImageSX(im) * 4 *
-gdImageSY(im). It could lead to heap buffer overflow in the following
-code. This issue has been reported to the PHP Bug Tracking System. The
-proof-of-concept file will be supplied some days later. This issue was
-discovered by Ke Liu of Tencent's Xuanwu LAB.
----
- src/gd_webp.c | 8 ++++++++
- 1 file changed, 8 insertions(+)
-
-diff --git a/src/gd_webp.c b/src/gd_webp.c
-index 8eb4dee..9886399 100644
---- a/src/gd_webp.c
-+++ b/src/gd_webp.c
-@@ -199,6 +199,14 @@ BGD_DECLARE(void) gdImageWebpCtx (gdImagePtr im, gdIOCtx * outfile, int quality)
- quality = 80;
- }
-
-+ if (overflow2(gdImageSX(im), 4)) {
-+ return;
-+ }
-+
-+ if (overflow2(gdImageSX(im) * 4, gdImageSY(im))) {
-+ return;
-+ }
-+
- argb = (uint8_t *)gdMalloc(gdImageSX(im) * 4 * gdImageSY(im));
- if (!argb) {
- return;
diff --git a/user/libgd/revert-318-removal-of-macros.patch b/user/libgd/revert-318-removal-of-macros.patch
new file mode 100644
index 000000000..85ea9c05d
--- /dev/null
+++ b/user/libgd/revert-318-removal-of-macros.patch
@@ -0,0 +1,27 @@
+From f4bc1f5c26925548662946ed7cfa473c190a104a Mon Sep 17 00:00:00 2001
+From: Remi Collet <remi@remirepo.net>
+Date: Mon, 13 Sep 2021 14:57:52 +0200
+Subject: [PATCH] Revert "Fix #318, these macros are not used as planed, we
+ have separate functions for each"
+
+This reverts commit bdc281eadb1d58d5c0c7bbc1125ee4674256df08.
+---
+ src/gd.h | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/gd.h b/src/gd.h
+index 305603952..1ad9e6378 100644
+--- a/src/gd.h
++++ b/src/gd.h
+@@ -1604,6 +1604,11 @@ BGD_DECLARE(void) gdImageFlipHorizontal(gdImagePtr im);
+ BGD_DECLARE(void) gdImageFlipVertical(gdImagePtr im);
+ BGD_DECLARE(void) gdImageFlipBoth(gdImagePtr im);
+
++#define GD_FLIP_HORINZONTAL 1 /* typo, kept for BC */
++#define GD_FLIP_HORIZONTAL 1
++#define GD_FLIP_VERTICAL 2
++#define GD_FLIP_BOTH 3
++
+ /**
+ * Group: Crop
+ *
diff --git a/user/libgda/APKBUILD b/user/libgda/APKBUILD
index 0e0c0731a..e4a2484ec 100644
--- a/user/libgda/APKBUILD
+++ b/user/libgda/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libgda
-pkgver=5.2.8
+pkgver=5.2.9
pkgrel=0
pkgdesc="GNOME Database Access library"
url="https://www.gnome-db.org/"
@@ -19,7 +19,6 @@ source="https://ftp.gnome.org/pub/GNOME/sources/libgda/5.2/libgda-$pkgver.tar.xz
"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,14 +32,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="6512d08df072dfc10837b71b2369ab538fa8bf0cdac51ecbb738a138f5b765f030fc7a88b14232eaab2724af8e749898da146bb63969983d3bcfeb11bc22aece libgda-5.2.8.tar.xz
+sha512sums="a28324533298d42aacfce5d9f3d699314ddb5d5fe7e492433dbbe4232fb310b798d312ac08dffd4f4ebef5ceea3c6c49ef3c679ab97b5e9d1f64e3fed50b2231 libgda-5.2.9.tar.xz
911383ba387ecfd2c53bee777aa540f8490c52fdd82e20d23b7f61e5d8591643be9d2c50d4d45183d96b2a44d2e800ceb788bf7e871ade3a9166584c86af9be5 cs.patch"
diff --git a/user/libgee/APKBUILD b/user/libgee/APKBUILD
index d769dc6c3..3e4653b2d 100644
--- a/user/libgee/APKBUILD
+++ b/user/libgee/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libgee
-pkgver=0.20.1
+pkgver=0.20.3
pkgrel=0
pkgdesc="GObject collection library"
url="https://wiki.gnome.org/Projects/Libgee"
@@ -13,7 +13,6 @@ subpackages="$pkgname-dev"
source="https://download.gnome.org/sources/libgee/0.20/libgee-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b991acfea965e0afa007adac0df1763c3b97b31bf2832c0408128d02f4bb237a03c583b4dd107de1ed877ef042614352c845b6ba5f8b6fb535f43e2400746d7f libgee-0.20.1.tar.xz"
+sha512sums="c7dd32bc02ea9f0f70e7593bc5625139802a52674e5aa07fe6fc815a78517f25590419b2da00e194bf7bf5f1505a138ba133d6dba67c44f9cdcb38389825adf7 libgee-0.20.3.tar.xz"
diff --git a/user/libgeoip/APKBUILD b/user/libgeoip/APKBUILD
new file mode 100644
index 000000000..db33d2f11
--- /dev/null
+++ b/user/libgeoip/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Alyx Wolcott <alyx@leuhta.com>
+# Maintainer: Alyx Wolcott <alyx@leuhta.com>
+pkgname=libgeoip
+pkgver=1.6.12
+pkgrel=0
+pkgdesc="GeoIP legacy C API"
+url="https://github.com/maxmind/geoip-api-c"
+arch="all"
+license="LGPL-2.1-only"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/maxmind/geoip-api-c/releases/download/v$pkgver/GeoIP-$pkgver.tar.gz"
+builddir="$srcdir/GeoIP-$pkgver"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="a1c8120692a7ba6de5836550917f86f4797dd236a8b7d71b6f92b5389e4b071d89e57036654f5de1d4b762730a2a5c331c31414eab0c889c9befaa097941fee7 GeoIP-1.6.12.tar.gz"
diff --git a/user/libgit2/APKBUILD b/user/libgit2/APKBUILD
index 98b1d68ef..34d467ed6 100644
--- a/user/libgit2/APKBUILD
+++ b/user/libgit2/APKBUILD
@@ -1,9 +1,9 @@
-# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
+# Contributor: Sergey Lukin <sergej.lukin@gmail.com>
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Contributor: Pierre-Gilas MILLON <pgmillon@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libgit2
-pkgver=0.27.7
+pkgver=1.6.4
pkgrel=0
pkgdesc="Pure C re-entrant library for custom Git applications"
url="https://libgit2.org/"
@@ -11,11 +11,9 @@ arch="all"
license="GPL-2.0-only"
depends=""
depends_dev="curl-dev libssh2-dev"
-makedepends="$depends_dev python3 cmake zlib-dev openssl-dev"
+makedepends="$depends_dev cmake http-parser-dev openssl-dev python3 zlib-dev"
subpackages="$pkgname-dev"
-source="$pkgname-$pkgver.tar.gz::https://github.com/$pkgname/$pkgname/archive/v$pkgver.tar.gz
- test-32bit.patch
- "
+source="$pkgname-$pkgver.tar.gz::https://github.com/$pkgname/$pkgname/archive/v$pkgver.tar.gz"
# secfixes:
# 0.27.3-r0:
@@ -31,25 +29,21 @@ source="$pkgname-$pkgver.tar.gz::https://github.com/$pkgname/$pkgname/archive/v$
# - CVE-2016-8569
build() {
- cd "$builddir"
cmake \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_INSTALL_LIBDIR=lib \
- -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
- -DCMAKE_C_FLAGS="$CFLAGS"
+ -DPYTHON_EXECUTABLE=/usr/bin/python3 \
+ .
make
}
check() {
- cd "$builddir"
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ # Don't run online tests by default.
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E 'online'
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="de2e266939bd40bc580603539e1156906b97299523336ddc6a66c3bec26729495bef2daa2d240b83b7e011e93852381e95a4407132b0440a5aa1e1b7642c0011 libgit2-0.27.7.tar.gz
-83b82b442d34b633d1889863472e51f3b6b68fbd4089d3448d86adeb7ce79eee495fea3c19edb88f563226bd2badb0166b7e41f9d4ffe8304bbf3b2abdf5a22f test-32bit.patch"
+sha512sums="fd73df91710f19b0d6c3765c37c7f529233196da91cf4d58028a8d3840244f11df44abafabd74a8ed1cbe4826d1afd6ff9f01316d183ace0924c65e7cf0eb8d5 libgit2-1.6.4.tar.gz"
diff --git a/user/libgit2/libressl.patch b/user/libgit2/libressl.patch
deleted file mode 100644
index 967cdc498..000000000
--- a/user/libgit2/libressl.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ru src.orig/libgit2-0.25.1/src/openssl_stream.h src/libgit2-0.25.1/src/openssl_stream.h
---- libgit2-0.25.1/src/copenssl_stream.h.orig
-+++ libgit2-0.25.1/src/openssl_stream.h
-@@ -27,7 +27,7 @@
-
-
-
--# if OPENSSL_VERSION_NUMBER < 0x10100000L
-+# if OPENSSL_VERSION_NUMBER < 0x10100000L || defined(LIBRESSL_VERSION_NUMBER)
-
- GIT_INLINE(BIO_METHOD*) BIO_meth_new(int type, const char *name)
- {
diff --git a/user/libgit2/pkgconfig-do-not-quote-Libs.patch b/user/libgit2/pkgconfig-do-not-quote-Libs.patch
deleted file mode 100644
index 86133612e..000000000
--- a/user/libgit2/pkgconfig-do-not-quote-Libs.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From 452ba68cde25423d13ebb36f0a54559f07aa53a2 Mon Sep 17 00:00:00 2001
-From: Igor Gnatenko <ignatenko@redhat.com>
-Date: Tue, 7 Feb 2017 16:37:47 +0100
-Subject: [PATCH] pkgconfig: do not quote Libs
-
-It doesn't make sense at all.
----
- libgit2.pc.in | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/libgit2.pc.in b/libgit2.pc.in
-index 329a560a7..880266a30 100644
---- a/libgit2.pc.in
-+++ b/libgit2.pc.in
-@@ -6,7 +6,7 @@ Name: libgit2
- Description: The git library, take 2
- Version: @LIBGIT2_VERSION_STRING@
-
--Libs: -L"${libdir}" -lgit2
-+Libs: -L${libdir} -lgit2
- Libs.private: @LIBGIT2_PC_LIBS@
- Requires.private: @LIBGIT2_PC_REQUIRES@
-
---
-2.11.0
-
diff --git a/user/libgit2/test-32bit.patch b/user/libgit2/test-32bit.patch
deleted file mode 100644
index d1240d904..000000000
--- a/user/libgit2/test-32bit.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From 415a8ae9c9b6ac18f0524b6af8e58408b426457d Mon Sep 17 00:00:00 2001
-From: Edward Thomson <ethomson@edwardthomson.com>
-Date: Thu, 13 Sep 2018 13:27:07 +0100
-Subject: [PATCH] tests: don't run buf::oom on 32-bit systems
-
-On a 32-bit Linux systems, the value large enough to make malloc
-guarantee a failure is also large enough that valgrind considers it
-"fishy". Skip this test on those systems entirely.
----
- tests/buf/oom.c | 14 +++++++++-----
- 1 file changed, 9 insertions(+), 5 deletions(-)
-
-diff --git a/tests/buf/oom.c b/tests/buf/oom.c
-index 2741a8ddf2..ec3bad9979 100644
---- a/tests/buf/oom.c
-+++ b/tests/buf/oom.c
-@@ -11,12 +11,8 @@
- */
- #if defined(GIT_ARCH_64) && defined(__linux__)
- # define TOOBIG 0x0fffffffffffffff
--#elif defined(__linux__)
--# define TOOBIG 0x0fffffff
- #elif defined(GIT_ARCH_64)
- # define TOOBIG 0xffffffffffffff00
--#else
--# define TOOBIG 0xffffff00
- #endif
-
- /**
-@@ -25,13 +21,18 @@
- * will fail. And because the git_buf_grow() wrapper always
- * sets mark_oom, the code in git_buf_try_grow() will free
- * the internal buffer and set it to git_buf__oom.
-- *
-+ *
- * We initialized the internal buffer to (the static variable)
- * git_buf__initbuf. The purpose of this test is to make sure
- * that we don't try to free the static buffer.
-+ *
-+ * Skip this test entirely on 32-bit platforms; a buffer large enough
-+ * to guarantee malloc failures is so large that valgrind considers
-+ * it likely to be an error.
- */
- void test_buf_oom__grow(void)
- {
-+#ifdef GIT_ARCH_64
- git_buf buf = GIT_BUF_INIT;
-
- git_buf_clear(&buf);
-@@ -40,6 +41,9 @@ void test_buf_oom__grow(void)
- cl_assert(git_buf_oom(&buf));
-
- git_buf_free(&buf);
-+#else
-+ cl_skip();
-+#endif
- }
-
- void test_buf_oom__grow_by(void)
diff --git a/user/libglade/APKBUILD b/user/libglade/APKBUILD
index 97d20f603..d7edf5531 100644
--- a/user/libglade/APKBUILD
+++ b/user/libglade/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libglade
pkgver=2.6.4
pkgrel=0
@@ -13,13 +13,11 @@ subpackages="$pkgname-dev $pkgname-doc"
source="https://download.gnome.org/sources/libglade/${pkgver%.*}/libglade-$pkgver.tar.bz2"
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,12 +29,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libglvnd/APKBUILD b/user/libglvnd/APKBUILD
new file mode 100644
index 000000000..82323eed5
--- /dev/null
+++ b/user/libglvnd/APKBUILD
@@ -0,0 +1,42 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libglvnd
+pkgver=1.7.0
+pkgrel=0
+pkgdesc="The GL Vendor-Neutral Dispatch library"
+url=" "
+arch="all"
+license="MIT AND BSD-1-Clause"
+options="!check checkx11"
+depends=""
+makedepends="libx11-dev libxext-dev meson xorgproto-dev"
+replaces="mesa-gl mesa-egl mesa-gles"
+subpackages="$pkgname-dev"
+source="https://gitlab.freedesktop.org/glvnd/$pkgname/-/archive/v$pkgver/$pkgname-v$pkgver.tar.bz2"
+builddir="$srcdir/$pkgname-v$pkgver"
+
+build() {
+ meson setup \
+ --wrap-mode=nofallback \
+ -Dprefix=/usr \
+ -Dx11=enabled \
+ -Dglx=enabled \
+ -Dtls=false \
+ build
+
+ meson compile -C build
+}
+
+check() {
+ meson test -C build
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C build
+}
+
+dev() {
+ default_dev
+ replaces="mesa-dev"
+}
+
+sha512sums="7caef0a129527bb968bf1ced64082a56cdde881f013f5ba54c51c09989e7d559dba3071c8fdc04e535e62609d68e7622197445152f655e0afbe06890c0b7a69b libglvnd-v1.7.0.tar.bz2"
diff --git a/user/libgnome-keyring/APKBUILD b/user/libgnome-keyring/APKBUILD
index 030194fc5..0db90b2b9 100644
--- a/user/libgnome-keyring/APKBUILD
+++ b/user/libgnome-keyring/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libgnome-keyring
pkgver=3.12.0
pkgrel=0
@@ -15,7 +15,6 @@ subpackages="$pkgname-dev $pkgname-doc"
source="https://download.gnome.org/sources/libgnome-keyring/${pkgver%.*}/libgnome-keyring-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,12 +26,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libgnt/APKBUILD b/user/libgnt/APKBUILD
new file mode 100644
index 000000000..55703f4e8
--- /dev/null
+++ b/user/libgnt/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libgnt
+pkgver=2.14.3
+pkgrel=0
+pkgdesc="Glib Ncurses Toolkit"
+url="https://pidgin.im/"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends="glib-dev gtk-doc meson ncurses-dev ninja"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://downloads.sourceforge.net/pidgin/libgnt-$pkgver.tar.xz
+ tinfo.patch
+ ncurses.patch
+ "
+
+build() {
+ meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ -Dpython2=false \
+ . output
+ ninja -C output
+}
+
+check() {
+ ninja -C output test
+}
+
+package() {
+ DESTDIR="$pkgdir" ninja -C output install
+}
+
+sha512sums="7131834cfe585177865bebf26167de08a04fced3da4e9a072d9b09b3becd1194914757b1a1fc8f129ae6c8fefe3ec1ce0d80d6c50cb624a5698b66ee2e06c6c8 libgnt-2.14.3.tar.xz
+56ce8dab03e74714ecfe0cb7dd274c5fce996d84793fff5e247ee329b1c5bebf2d933b96cc6fe916dafb4f402269d3b1b8cacda07deff4c149869d509ee5c416 tinfo.patch
+cfdd0667238948ac45ce992c3b0ef7aa90fc9c8a06ee695d5b516deac17e3e57460dbb3072ee0248ada3bf5d24d2a75736259dd873a6c72483a1040259831b49 ncurses.patch"
diff --git a/user/libgnt/ncurses.patch b/user/libgnt/ncurses.patch
new file mode 100644
index 000000000..0d91c2dbf
--- /dev/null
+++ b/user/libgnt/ncurses.patch
@@ -0,0 +1,62 @@
+# HG changeset patch
+# Node ID 7c4e8ad1e3c7
+# Parent 73d8724225e7
+diff --git a/gntwm.c b/gntwm.c
+--- a/gntwm.c
++++ b/gntwm.c
+@@ -166,38 +166,40 @@
+ int sx, ex, sy, ey, w, y;
+ cchar_t ch;
+ PANEL *below = panel;
++ WINDOW *window = panel_window(panel);
+
+- sx = getbegx(panel->win);
+- ex = getmaxx(panel->win) + sx;
+- sy = getbegy(panel->win);
+- ey = getmaxy(panel->win) + sy;
++ sx = getbegx(window);
++ ex = getmaxx(window) + sx;
++ sy = getbegy(window);
++ ey = getmaxy(window) + sy;
+
+ while ((below = panel_below(below)) != NULL) {
+- if (sy > getbegy(below->win) + getmaxy(below->win) ||
+- ey < getbegy(below->win))
++ window = panel_window(below);
++ if (sy > getbegy(window) + getmaxy(window) ||
++ ey < getbegy(window))
+ continue;
+- if (sx > getbegx(below->win) + getmaxx(below->win) ||
+- ex < getbegx(below->win))
++ if (sx > getbegx(window) + getmaxx(window) ||
++ ex < getbegx(window))
+ continue;
+- for (y = MAX(sy, getbegy(below->win)); y <= MIN(ey, getbegy(below->win) + getmaxy(below->win)); y++) {
+- if (mvwin_wch(below->win, y - getbegy(below->win), sx - 1 - getbegx(below->win), &ch) != OK)
++ for (y = MAX(sy, getbegy(window)); y <= MIN(ey, getbegy(window) + getmaxy(window)); y++) {
++ if (mvwin_wch(window, y - getbegy(window), sx - 1 - getbegx(window), &ch) != OK)
+ goto right;
+ w = widestringwidth(ch.chars);
+ if (w > 1 && (ch.attr & 1)) {
+ ch.chars[0] = ' ';
+ ch.attr &= ~ A_CHARTEXT;
+- mvwadd_wch(below->win, y - getbegy(below->win), sx - 1 - getbegx(below->win), &ch);
+- touchline(below->win, y - getbegy(below->win), 1);
++ mvwadd_wch(window, y - getbegy(window), sx - 1 - getbegx(window), &ch);
++ touchline(window, y - getbegy(window), 1);
+ }
+ right:
+- if (mvwin_wch(below->win, y - getbegy(below->win), ex + 1 - getbegx(below->win), &ch) != OK)
++ if (mvwin_wch(window, y - getbegy(window), ex + 1 - getbegx(window), &ch) != OK)
+ continue;
+ w = widestringwidth(ch.chars);
+ if (w > 1 && !(ch.attr & 1)) {
+ ch.chars[0] = ' ';
+ ch.attr &= ~ A_CHARTEXT;
+- mvwadd_wch(below->win, y - getbegy(below->win), ex + 1 - getbegx(below->win), &ch);
+- touchline(below->win, y - getbegy(below->win), 1);
++ mvwadd_wch(window, y - getbegy(window), ex + 1 - getbegx(window), &ch);
++ touchline(window, y - getbegy(window), 1);
+ }
+ }
+ }
diff --git a/user/libgnt/tinfo.patch b/user/libgnt/tinfo.patch
new file mode 100644
index 000000000..1e4ab4902
--- /dev/null
+++ b/user/libgnt/tinfo.patch
@@ -0,0 +1,18 @@
+--- libgnt-2.14.0/meson.build
++++ libgnt-2.14.0/meson.build
+@@ -72,6 +72,7 @@
+ ncurses_available = true
+ ncurses_inc = []
+ ncurses_libs = [
++ compiler.find_library('tinfow', required : false),
+ compiler.find_library('ncursesw', required : false),
+ compiler.find_library('panelw', required : false)
+ ]
+@@ -113,6 +114,7 @@
+ else
+ # ncursesw was not found. Look for plain old ncurses
+ ncurses_libs = [
++ compiler.find_library('tinfo', required : false),
+ compiler.find_library('ncurses', required : false),
+ compiler.find_library('panel', required : false)
+ ]
diff --git a/user/libgphoto2/APKBUILD b/user/libgphoto2/APKBUILD
index 7bd75969d..ce6ffa88c 100644
--- a/user/libgphoto2/APKBUILD
+++ b/user/libgphoto2/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer:
pkgname=libgphoto2
-pkgver=2.5.22
-pkgrel=0
+pkgver=2.5.25
+pkgrel=1
pkgdesc="Digital camera library"
url="http://www.gphoto.org"
arch="all"
@@ -9,14 +9,12 @@ options="libtool"
license="LGPL-2.1+"
depends=""
depends_dev="libexif-dev libusb-dev"
-makedepends="$depends_dev libjpeg-turbo-dev libtool"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+makedepends="$depends_dev libjpeg-turbo-dev libtool libxml2-dev"
install="$pkgname.pre-install $pkgname.pre-upgrade"
-replaces="libgphoto2-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://downloads.sourceforge.net/gphoto/libgphoto2-$pkgver.tar.bz2"
build() {
- cd "$builddir"
udevscriptdir=/lib/udev ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,12 +26,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
rm -f "$pkgdir"/usr/lib/libgphoto2/*/*.a \
"$pkgdir"/usr/lib/*.a
@@ -46,4 +42,4 @@ package() {
"$pkgdir/lib/udev/rules.d/54-gphoto.rules"
}
-sha512sums="8f02c460324c115810f56a9408ecba7aabb801947249c1ee79f0f0a1db1d785d34992508232bad7af112aed2dfc6b213365cee694dd0e7d5edf4072c63fa01cb libgphoto2-2.5.22.tar.bz2"
+sha512sums="ee3b9c36d41eb1271faad7a172b0c58134debf8c1104396868fa2c1032d69b4e8821117825f952049a6c36078461aabb7f87712c8563573fa69d1e9383b87845 libgphoto2-2.5.25.tar.bz2"
diff --git a/user/libgphoto2/libgphoto2.pre-install b/user/libgphoto2/libgphoto2.pre-install
index c696fcdca..7e52e2fe3 100644
--- a/user/libgphoto2/libgphoto2.pre-install
+++ b/user/libgphoto2/libgphoto2.pre-install
@@ -1,5 +1,5 @@
#!/bin/sh
-addgroup -S camera 2>/dev/null
+groupadd -r camera 2>/dev/null
exit 0
diff --git a/user/libgsf/APKBUILD b/user/libgsf/APKBUILD
index 086da1e6c..f44ee309a 100644
--- a/user/libgsf/APKBUILD
+++ b/user/libgsf/APKBUILD
@@ -1,13 +1,13 @@
# Maintainer:
pkgname=libgsf
-pkgver=1.14.45
+pkgver=1.14.53
pkgrel=0
pkgdesc="Library for manipulating structured files"
url="https://www.gnome.org/"
arch="all"
license="LGPL-2.1-only"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-depends=
+depends=""
depends_dev="bzip2-dev"
makedepends="libxml2-dev glib-dev bzip2-dev intltool python3 zlib-dev
gobject-introspection-dev"
@@ -18,7 +18,6 @@ source="https://download.gnome.org/sources/$pkgname/1.14/$pkgname-$pkgver.tar.xz
# - CVE-2016-9888
build() {
- cd "$builddir"
sed -i -e 's/gsf-gnome//' -e 's/thumbnailer//' Makefile.*
./configure \
--build=$CBUILD \
@@ -35,14 +34,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
rm -f "$pkgdir"/usr/share/man/man1/gsf-office-thumbnailer.1
}
-sha512sums="2e993150b6fec336a14fd85d5c631e4a3b43187039dab0cba3b8badf62873f39814392db92bb737b92aa9a6d8b4ba41f1fb248c1fe07b88cddd28ded5e4d9ebd libgsf-1.14.45.tar.xz"
+sha512sums="f2f8fa0806bf2edae271b3503cc311bd7ba32c145530afce382305cacfaae624edbc8298bd8766364e94804e71b1b8d0aac8383ae514aad646f2a926727cf727 libgsf-1.14.53.tar.xz"
diff --git a/user/libgtop/APKBUILD b/user/libgtop/APKBUILD
index ea17925e3..b5ef63f75 100644
--- a/user/libgtop/APKBUILD
+++ b/user/libgtop/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libgtop
pkgver=2.40.0
pkgrel=0
@@ -13,7 +13,6 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.gnome.org/sources/libgtop/${pkgver%.*}/libgtop-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,12 +24,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libgudev/APKBUILD b/user/libgudev/APKBUILD
index 56130524a..01e537886 100644
--- a/user/libgudev/APKBUILD
+++ b/user/libgudev/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libgudev
-pkgver=232
+pkgver=233
pkgrel=0
pkgdesc="GObject-based wrapper library for libudev"
url="https://wiki.gnome.org/Projects/libgudev"
@@ -14,11 +14,6 @@ subpackages="$pkgname-dev"
source="https://download.gnome.org/sources/libgudev/$pkgver/libgudev-$pkgver.tar.xz"
build() {
- cd "$builddir"
-
- #local myconf=""
- #[ -z "$BOOTSTRAP" ] || myconf="--disable-umockdev"
-
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,13 +26,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="f648a41e2a6af7e26634c7cc259fdc47bb6e6ffb329324d157f340e42928e28c2059a0e923b9b0aaecd1ee3ecafbc7b55e5652f1f77bc1b88367b97057a1bedc libgudev-232.tar.xz"
+sha512sums="0e7beb35478bba2aed3cf8e750f524c562038b04fd59e4dd31618b0ae7cbd29545e5909c422325e4be84dcab9177a5256bf0f3ce7df7b6c07e4866cbb8ce570b libgudev-233.tar.xz"
diff --git a/user/libguess/APKBUILD b/user/libguess/APKBUILD
index 60dea1c9c..f1679c353 100644
--- a/user/libguess/APKBUILD
+++ b/user/libguess/APKBUILD
@@ -1,28 +1,26 @@
# Contributor: Łukasz Jendrysik <scadu@yandex.com>
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libguess
pkgver=1.2
-pkgrel=1
+pkgrel=2
pkgdesc="Extremely fast character set guessing library"
-url="http://atheme.org/"
+url=" "
arch="all"
options="!check" # Test suite requires package to be installed first
license="ISC"
depends=""
-makedepends="libmowgli-dev autoconf"
+makedepends="libmowgli-dev"
subpackages="$pkgname-dev"
-source="http://rabbit.dereferenced.org/~nenolod/distfiles/$pkgname-$pkgver.tar.bz2"
+#source="http://rabbit.dereferenced.org/~nenolod/distfiles/$pkgname-$pkgver.tar.bz2"
+source="https://distfiles.adelielinux.org/source/upstream/$pkgname-$pkgver.tar.bz2"
prepare() {
- cd "$builddir"
update_config_sub
default_prepare
- autoconf
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -34,7 +32,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libgxps/APKBUILD b/user/libgxps/APKBUILD
index 5deb16d48..dac605308 100644
--- a/user/libgxps/APKBUILD
+++ b/user/libgxps/APKBUILD
@@ -15,7 +15,6 @@ subpackages="$pkgname-dev"
source="https://ftp.gnome.org/pub/gnome/sources/libgxps/0.3/libgxps-$pkgver.tar.xz"
build() {
- cd "$builddir"
meson \
--prefix=/usr \
--sysconfdir=/etc \
@@ -27,12 +26,10 @@ build() {
}
check() {
- cd "$builddir"
ninja -C output test
}
package() {
- cd "$builddir"
DESTDIR="$pkgdir" ninja -C output install
}
diff --git a/user/libical/APKBUILD b/user/libical/APKBUILD
index 7a27c56d4..68a0e7c77 100644
--- a/user/libical/APKBUILD
+++ b/user/libical/APKBUILD
@@ -1,35 +1,35 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=libical
-pkgver=3.0.4
-pkgrel=2
+pkgver=3.0.18
+pkgrel=0
pkgdesc="Reference implementation of the iCalendar format"
url="https://libical.github.io/libical/"
arch="all"
-#options="!check" # Test suite is very broken.
license="MPL-2.0 OR LGPL-2.1-only"
depends=""
depends_dev="db-dev"
makedepends="$depends_dev cmake glib-dev icu-dev libxml2-dev perl"
subpackages="$pkgname-dev"
-source="https://github.com/libical/libical/releases/download/v$pkgver/libical-$pkgver.tar.gz"
+source="https://github.com/libical/libical/releases/download/v$pkgver/libical-$pkgver.tar.gz
+ icu75.patch
+ "
build() {
- cd "$builddir"
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
- -DSHARED_ONLY=true
+ -DSHARED_ONLY=true \
+ -DENABLE_GTK_DOC=OFF .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="491a1dd0c33bb823a79165eb6e4f86ef048a44642adfe44f8e69c83598b458ddf8e4365b11afc37d0b21bc1367e0a99096fc7887aae29e7ff4e3bd1cdee64dd9 libical-3.0.4.tar.gz"
+sha512sums="53ecf6c14a68d569dd11bfdeb1a072def847a14d189c6af16eab202e004350ee7d9488c6b63e9cb67889e8c2dec90643fef46aec143a915f28270d0752eaa9d5 libical-3.0.18.tar.gz
+d6f4082a6b3a3ad6a2b2aae92696446be6260fa99152fe6e09dad2d7942f8495698cc218f2feee542da4021a03dca0006167d6bc46a7dd3d8103e1998092d3fb icu75.patch"
diff --git a/user/libical/automake.patch b/user/libical/automake.patch
deleted file mode 100644
index 757220a62..000000000
--- a/user/libical/automake.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./configure.in.orig 2012-12-31 20:03:51.355227119 +0000
-+++ ./configure.in 2012-12-31 20:04:03.445327143 +0000
-@@ -5,7 +5,7 @@
- AC_CANONICAL_SYSTEM
- AM_INIT_AUTOMAKE
-
--AM_CONFIG_HEADER(config.h)
-+AC_CONFIG_HEADER(config.h)
-
- dnl Initialize maintainer mode
- AM_MAINTAINER_MODE
diff --git a/user/libical/icu75.patch b/user/libical/icu75.patch
new file mode 100644
index 000000000..321c02aba
--- /dev/null
+++ b/user/libical/icu75.patch
@@ -0,0 +1,31 @@
+From ec62c552df8e1fcc187855bb342c082e22a08edc Mon Sep 17 00:00:00 2001
+From: Lukas Fleischer <lfleischer@lfos.de>
+Date: Wed, 15 May 2024 12:28:38 +0700
+Subject: [PATCH] Fix build with ICU 75
+
+---
+ src/libical/icalrecur.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/libical/icalrecur.c b/src/libical/icalrecur.c
+index 3c1789480..1907a3636 100644
+--- a/src/libical/icalrecur.c
++++ b/src/libical/icalrecur.c
+@@ -1125,7 +1125,7 @@ icalarray *icalrecurrencetype_rscale_supported_calendars(void)
+
+ calendars = icalarray_new(sizeof(const char **), 20);
+
+- en = ucal_getKeywordValuesForLocale("calendar", NULL, false, &status);
++ en = ucal_getKeywordValuesForLocale("calendar", "", false, &status);
+ while ((cal = uenum_next(en, NULL, &status))) {
+ cal = icalmemory_tmp_copy(cal);
+ icalarray_append(calendars, &cal);
+@@ -1526,7 +1526,7 @@ static int initialize_rscale(icalrecur_iterator *impl)
+ }
+
+ /* Check if specified calendar is supported */
+- en = ucal_getKeywordValuesForLocale("calendar", NULL, false, &status);
++ en = ucal_getKeywordValuesForLocale("calendar", "", false, &status);
+ while ((cal = uenum_next(en, NULL, &status))) {
+ if (!strcmp(cal, rule.rscale)) {
+ is_hebrew = !strcmp(rule.rscale, "hebrew");
diff --git a/user/libice/APKBUILD b/user/libice/APKBUILD
index 8d2fea498..37509f984 100644
--- a/user/libice/APKBUILD
+++ b/user/libice/APKBUILD
@@ -1,21 +1,23 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libice
-pkgver=1.0.9
-pkgrel=3
+pkgver=1.1.1
+pkgrel=0
pkgdesc="X11 Inter-Client Exchange library"
url="https://www.X.Org/"
arch="all"
license="MIT"
-depends=
-makedepends="util-macros xmlto xorgproto-dev xtrans"
+depends=""
+makedepends="libbsd-dev util-macros xmlto xorgproto-dev xtrans"
checkdepends="check-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/lib/libICE-$pkgver.tar.bz2"
-
+source="https://www.X.Org/releases/individual/lib/libICE-$pkgver.tar.xz"
builddir="$srcdir/libICE-$pkgver"
+# secfixes:
+# 1.0.9-r4:
+# - CVE-2017-2626
+
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,13 +31,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="daa8126ee5279c08f801274a2754132762dea2a40f4733c4b0bf8e8bdad61cba826939a2e067beb3524e256a98a2b83f23c8d4643f3e75a284ab02cc73da41b7 libICE-1.0.9.tar.bz2"
+sha512sums="2f7833a25f31cc743ca95cb88f9a8403b50e19ffb5bf43bfef87ba405857d359789daaa9ec2391351237d958f16d35dbf082adb76d301e46d3a54162a6b452d3 libICE-1.1.1.tar.xz"
diff --git a/user/libid3tag/APKBUILD b/user/libid3tag/APKBUILD
index df96d8b79..e20e012d5 100644
--- a/user/libid3tag/APKBUILD
+++ b/user/libid3tag/APKBUILD
@@ -2,26 +2,34 @@
# Maintainer:
pkgname=libid3tag
pkgver=0.15.1b
-pkgrel=9
+pkgrel=10
pkgdesc="Library for manipulating IDv3 tags in MP3 audio files"
url="http://www.underbit.com/products/mad/"
arch="all"
license="GPL-2.0+"
depends=""
-makedepends="zlib-dev"
+makedepends="gperf zlib-dev"
subpackages="$pkgname-dev"
source="ftp://ftp.mars.org/pub/mpeg/libid3tag-$pkgver.tar.gz
- CVE-2008-2109.patch
+ CVE-2004-2779.patch
+ CVE-2017-11550.patch
+ gperf.patch
"
+# secfixes:
+# 0.15.1b-r8:
+# - CVE-2008-2109
+# 0.15.1b-r10:
+# - CVE-2004-2779
+# - CVE-2017-11550
+# - CVE-2017-11551
+
prepare() {
- cd "$builddir"
update_config_sub
default_prepare
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,12 +41,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
mkdir -p "$pkgdir"/usr/lib/pkgconfig
cat > "$pkgdir"/usr/lib/pkgconfig/id3tag.pc <<EOF
@@ -57,4 +63,6 @@ EOF
}
sha512sums="ade7ce2a43c3646b4c9fdc642095174b9d4938b078b205cd40906d525acd17e87ad76064054a961f391edcba6495441450af2f68be69f116549ca666b069e6d3 libid3tag-0.15.1b.tar.gz
-fc79d44ca9d1435ab5b11d4da6b46d3684827a1384a0156cd88242225f98f3a0668c0d6e6a88159f0c4985fcbdc636777c2f100d7f371eef258a6050d6fde567 CVE-2008-2109.patch"
+4c27e104d45ae34affc1bef8ec613e65c7e4791185d2ef1cb27974ec7025c06c35d30d6278ce7e3107dff959bd55a708246c3c1a9d5ad7b093424cfb93b79f63 CVE-2004-2779.patch
+6627d6e73958309b199a02cd6fa1008a81554151238d8a099dc27e535b8d14f7a9c1ba19894fdf2c927e59c0ca855d50b2f1289f116b45bc41e02d31659d1535 CVE-2017-11550.patch
+3f320d1d8719afd84aa0cf2a9e5615f3f535f84d1987f12df0a9d3f2b7c02e2c87fbc3aa41d538cdc4f8a30e629de6f3fc3a4e79f23448fd39d4c0c438c803fb gperf.patch"
diff --git a/user/libid3tag/CVE-2004-2779.patch b/user/libid3tag/CVE-2004-2779.patch
new file mode 100644
index 000000000..b7e1e2280
--- /dev/null
+++ b/user/libid3tag/CVE-2004-2779.patch
@@ -0,0 +1,32 @@
+Lifted from Debian:
+https://sources.debian.org/patches/libid3tag/0.15.1b-14/10_utf16.dpatch/
+
+Also fixes:
+
+CVE-2008-2109 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=480187#12
+CVE-2017-11551 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=870333#10
+
+Handle bogus UTF16 sequences that have a length that is not
+an even number of 8 bit characters.
+
+--- libid3tag-0.15.1b/utf16.c 2006-01-13 15:26:29.000000000 +0100
++++ libid3tag-0.15.1b/utf16.c 2006-01-13 15:27:19.000000000 +0100
+@@ -282,5 +282,18 @@
+
+ free(utf16);
+
++ if (end == *ptr && length % 2 != 0)
++ {
++ /* We were called with a bogus length. It should always
++ * be an even number. We can deal with this in a few ways:
++ * - Always give an error.
++ * - Try and parse as much as we can and
++ * - return an error if we're called again when we
++ * already tried to parse everything we can.
++ * - tell that we parsed it, which is what we do here.
++ */
++ (*ptr)++;
++ }
++
+ return ucs4;
+ }
diff --git a/user/libid3tag/CVE-2008-2109.patch b/user/libid3tag/CVE-2008-2109.patch
deleted file mode 100644
index 6226d14af..000000000
--- a/user/libid3tag/CVE-2008-2109.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/field.c.orig 2008-05-05 09:49:15.000000000 -0400
-+++ b/field.c 2008-05-05 09:49:25.000000000 -0400
-@@ -291,7 +291,7 @@
-
- end = *ptr + length;
-
-- while (end - *ptr > 0) {
-+ while (end - *ptr > 0 && **ptr != '\0') {
- ucs4 = id3_parse_string(ptr, end - *ptr, *encoding, 0);
- if (ucs4 == 0)
- goto fail;
diff --git a/user/libid3tag/CVE-2017-11550.patch b/user/libid3tag/CVE-2017-11550.patch
new file mode 100644
index 000000000..abf6cbd43
--- /dev/null
+++ b/user/libid3tag/CVE-2017-11550.patch
@@ -0,0 +1,33 @@
+Lifted from Debian:
+https://sources.debian.org/patches/libid3tag/0.15.1b-14/11_unknown_encoding.dpatch/
+
+In case of an unknown/invalid encoding, id3_parse_string() will
+return NULL, but the return value wasn't checked resulting
+in segfault in id3_ucs4_length(). This is the only place
+the return value wasn't checked.
+
+--- libid3tag-0.15.1b/compat.gperf 2004-01-23 09:41:32.000000000 +0000
++++ libid3tag-0.15.1b/compat.gperf 2007-01-14 14:36:53.000000000 +0000
+@@ -236,6 +236,10 @@
+
+ encoding = id3_parse_uint(&data, 1);
+ string = id3_parse_string(&data, end - data, encoding, 0);
++ if (!string)
++ {
++ continue;
++ }
+
+ if (id3_ucs4_length(string) < 4) {
+ free(string);
+--- libid3tag-0.15.1b/parse.c 2004-01-23 09:41:32.000000000 +0000
++++ libid3tag-0.15.1b/parse.c 2007-01-14 14:37:34.000000000 +0000
+@@ -165,6 +165,9 @@
+ case ID3_FIELD_TEXTENCODING_UTF_8:
+ ucs4 = id3_utf8_deserialize(ptr, length);
+ break;
++ default:
++ /* FIXME: Unknown encoding! Print warning? */
++ return NULL;
+ }
+
+ if (ucs4 && !full) {
diff --git a/user/libid3tag/gperf.patch b/user/libid3tag/gperf.patch
new file mode 100644
index 000000000..a365811c5
--- /dev/null
+++ b/user/libid3tag/gperf.patch
@@ -0,0 +1,12 @@
+diff -pur libid3tag-0.15.1b-orig/compat.h libid3tag-0.15.1b/compat.h
+--- libid3tag-0.15.1b-orig/compat.h 2004-01-23 10:41:32.000000000 +0100
++++ libid3tag-0.15.1b/compat.h 2017-03-15 01:49:23.808834401 +0100
+@@ -34,7 +34,7 @@ struct id3_compat {
+ };
+
+ struct id3_compat const *id3_compat_lookup(register char const *,
+- register unsigned int);
++ register size_t);
+
+ int id3_compat_fixup(struct id3_tag *);
+
diff --git a/user/libidl/APKBUILD b/user/libidl/APKBUILD
index b3143333c..f7e18023d 100644
--- a/user/libidl/APKBUILD
+++ b/user/libidl/APKBUILD
@@ -1,4 +1,4 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Maintainer:
pkgname=libidl
pkgver=0.8.14
@@ -15,13 +15,11 @@ source="https://download.gnome.org/sources/libIDL/${pkgver%.*}/libIDL-$pkgver.ta
builddir="$srcdir"/libIDL-$pkgver
prepare() {
- cd "$builddir"
update_config_sub
default_prepare
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,7 +31,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libidn2/APKBUILD b/user/libidn2/APKBUILD
index b08fa94db..28a56be44 100644
--- a/user/libidn2/APKBUILD
+++ b/user/libidn2/APKBUILD
@@ -1,37 +1,36 @@
# Contributor: Dan Theisen <djt@hxx.in>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=libidn2
-pkgver=2.0.5
-pkgrel=1
+pkgver=2.3.2
+pkgrel=0
pkgdesc="Free implementation of IDNA2008, Punycode, and TR46"
url="https://gitlab.com/libidn/libidn2"
arch="all"
license="GPL-2.0+ OR LGPL-3.0+"
depends=""
makedepends="libunistring-dev"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+subpackages="$pkgname-dev $pkgname-doc"
source="https://ftp.gnu.org/gnu/libidn/libidn2-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var
+ --localstatedir=/var \
+ --disable-nls \
+ --disable-valgrind-tests
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="9d040d60de40316788825d8720d509d5b8a82287415e09e17792c2f32fad99ca77f43e55888b9484db69426eaa0ece59e9671eee9cc46411afbdb0f81af31a79 libidn2-2.0.5.tar.gz"
+sha512sums="958dbf49a47a84c7627ac182f4cc8ea452696cec3f0d1ff102a6c48e89893e772b2aa81f75da8223dfc6326515cca3ae085268fbf997828de9330c3a351152f1 libidn2-2.3.2.tar.gz"
diff --git a/user/libiec61883/APKBUILD b/user/libiec61883/APKBUILD
index b84e7b3e4..a88096a54 100644
--- a/user/libiec61883/APKBUILD
+++ b/user/libiec61883/APKBUILD
@@ -13,13 +13,11 @@ subpackages="$pkgname-dev $pkgname-doc"
source="https://www.kernel.org/pub/linux/libs/ieee1394/libiec61883-$pkgver.tar.gz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,12 +29,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libieee1284/APKBUILD b/user/libieee1284/APKBUILD
index 44996cee3..7bf7633a7 100644
--- a/user/libieee1284/APKBUILD
+++ b/user/libieee1284/APKBUILD
@@ -8,10 +8,12 @@ url="http://cyberelk.net/tim/software/libieee1284/"
arch="all"
options="!check" # No test suite.
license="GPL-2.0+"
+depends=""
makedepends="file"
subpackages="$pkgname-dev $pkgname-doc"
source="https://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.bz2
- include.patch"
+ include.patch
+ "
prepare() {
default_prepare
@@ -19,8 +21,6 @@ prepare() {
}
build() {
- cd "$builddir"
-
./configure \
--prefix=/usr \
--mandir=/usr/share/man \
@@ -30,7 +30,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libimobiledevice/APKBUILD b/user/libimobiledevice/APKBUILD
new file mode 100644
index 000000000..f8bea18dc
--- /dev/null
+++ b/user/libimobiledevice/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=libimobiledevice
+pkgver=1.3.0
+pkgrel=0
+pkgdesc="Library for working with Apple iOS devices"
+url="https://libimobiledevice.org/"
+arch="all"
+license="LGPL-2.1+ AND GPL-2.0+ AND GPL-2.0-only AND MIT"
+depends=""
+makedepends="gnutls-dev libgcrypt-dev libusbmuxd-dev py3-cython python3-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/libimobiledevice/libimobiledevice/releases/download/$pkgver/libimobiledevice-$pkgver.tar.bz2
+ modern-libplist.patch"
+
+build() {
+ ln -s /usr/bin/python3 python
+ export PATH=".:$PATH"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make PATH=".:$PATH" DESTDIR="$pkgdir" install
+}
+
+sha512sums="7b22040552a6561729c79c0846f571b0e608abb7c297567d2ecfdd1718ce86df08a5e34ba51f209bdee96a1917da15e7ba3aaef1d289a951d1d3470b1f89e6a8 libimobiledevice-1.3.0.tar.bz2
+3aa60cdbd9539ac55cdd1e8a6d1860ddfcfec6e692ff9e3b0d4620627f5f373872b819a6008a10e8669ee5772234e4a8a66c1dab89803d401503ee43f51f0a6c modern-libplist.patch"
diff --git a/user/libimobiledevice/modern-libplist.patch b/user/libimobiledevice/modern-libplist.patch
new file mode 100644
index 000000000..eac8a774d
--- /dev/null
+++ b/user/libimobiledevice/modern-libplist.patch
@@ -0,0 +1,34 @@
+Patch-Source: https://github.com/archlinux/svntogit-packages/blob/2f17c7d5c91d164453ea71c28adea93499016af2/trunk/libplist-2.3.0.diff
+--
+diff --git i/common/utils.c w/common/utils.c
+index 7f66ec2..7ebe997 100644
+--- i/common/utils.c
++++ w/common/utils.c
+@@ -314,7 +314,7 @@ int plist_read_from_filename(plist_t *plist, const char *filename)
+ return 1;
+ }
+
+-int plist_write_to_filename(plist_t plist, const char *filename, enum plist_format_t format)
++int plist_write_to_filename(plist_t plist, const char *filename, plist_format_t format)
+ {
+ char *buffer = NULL;
+ uint32_t length;
+diff --git i/common/utils.h w/common/utils.h
+index 2c3acec..4faa5bd 100644
+--- i/common/utils.h
++++ w/common/utils.h
+@@ -51,13 +51,8 @@ char *generate_uuid(void);
+ void buffer_read_from_filename(const char *filename, char **buffer, uint64_t *length);
+ void buffer_write_to_filename(const char *filename, const char *buffer, uint64_t length);
+
+-enum plist_format_t {
+- PLIST_FORMAT_XML,
+- PLIST_FORMAT_BINARY
+-};
+-
+ int plist_read_from_filename(plist_t *plist, const char *filename);
+-int plist_write_to_filename(plist_t plist, const char *filename, enum plist_format_t format);
++int plist_write_to_filename(plist_t plist, const char *filename, plist_format_t format);
+
+ void plist_print_to_stream(plist_t plist, FILE* stream);
+
diff --git a/user/libindicator/APKBUILD b/user/libindicator/APKBUILD
deleted file mode 100644
index 8bae4ffde..000000000
--- a/user/libindicator/APKBUILD
+++ /dev/null
@@ -1,43 +0,0 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-pkgname=libindicator
-pkgver=12.10.1
-pkgrel=0
-pkgdesc="Library for builidng indicators for applets"
-url="https://launchpad.net/libindicator"
-arch="all"
-options="!check" # broken tests
-license="GPL-3.0-only"
-makedepends="gtk+3.0-dev"
-subpackages="$pkgname-dev"
-source="https://launchpad.net/libindicator/12.10/$pkgver/+download/libindicator-$pkgver.tar.gz"
-
-prepare() {
- cd "$builddir"
- default_prepare
- update_config_sub
-}
-
-build() {
- cd "$builddir"
- CFLAGS="-Wno-error" ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
-}
-
-check() {
- cd "$builddir"
- make check
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" -j1 install
-}
-
-sha512sums="d6d77d0309b15cf6b52539323920ab0c1594cb1c1cef8a8d67cd0f76f8ceeeac28eb6db6227563df1932e6f1fadcffac68d82982182b745257dfaf91f1c945af libindicator-12.10.1.tar.gz"
diff --git a/user/libinput/APKBUILD b/user/libinput/APKBUILD
index 8c2db00bb..d1ea54a43 100644
--- a/user/libinput/APKBUILD
+++ b/user/libinput/APKBUILD
@@ -1,24 +1,26 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libinput
-pkgver=1.13.1
+pkgver=1.28.0
pkgrel=0
pkgdesc="Library for handling input devices"
url="https://www.freedesktop.org/wiki/Software/libinput/"
arch="all"
options="!check" # wow, such broken
license="MIT"
+depends=""
+checkdepends="check-dev valgrind"
makedepends="doxygen eudev-dev graphviz libevdev-dev libwacom-dev meson
mtdev-dev ninja py3-recommonmark py3-sphinx py3-sphinx-rtd-theme"
-checkdepends="check-dev valgrind"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
-source="https://freedesktop.org/software/$pkgname/$pkgname-$pkgver.tar.xz"
+subpackages="$pkgname-dev $pkgname-doc"
+replaces="$pkgname-libs"
+source="https://gitlab.freedesktop.org/libinput/libinput/-/archive/$pkgver/$pkgname-$pkgver.tar.bz2"
build() {
meson --prefix=/usr \
-Dlibwacom=true \
-Ddebug-gui=false \
- -Dtests=true builddir/
+ -Dtests=false builddir/
ninja -C builddir/
}
@@ -28,7 +30,6 @@ check() {
package() {
DESTDIR="$pkgdir" ninja -C builddir/ install
- install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="a19deec802e704038df0901c103a82a3370f56e0299f4cc1b6aa84c1832a66fb638e6f9d0fa708b51df6c3b939cdc1271e4ff547c645c566be03dce0bc9ff7e0 libinput-1.13.1.tar.xz"
+sha512sums="2665fbfbf47f8ef329e387841ff9542b6191925d2fb46a19be64ef0b2e274db3b9ce8b42652ccdeb18c66e3a3c748ff576b313ecb8f7f6b4a01102bfb3e999e3 libinput-1.28.0.tar.bz2"
diff --git a/user/libisofs/APKBUILD b/user/libisofs/APKBUILD
index e754ad0fa..cf499dc9d 100644
--- a/user/libisofs/APKBUILD
+++ b/user/libisofs/APKBUILD
@@ -1,18 +1,18 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libisofs
-pkgver=1.5.0
+pkgver=1.5.4
pkgrel=0
pkgdesc="Library for creating and managing iso9660-based filesystems"
url="https://dev.lovelyhq.com/libburnia/web/wikis/home"
arch="all"
license="GPL-2.0+ AND Unicode-TOU"
+depends=""
makedepends="zlib-dev"
subpackages="$pkgname-dev"
source="http://files.libburnia-project.org/releases/libisofs-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -24,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="1d0bc488c18b95971b7aa89765d7b5772b64d17eadeae9ec52c0f880c6f68acee80ee39b603752a1f9fbe0f35029c27023d5a6710d149a0f568bb396c3dcede8 libisofs-1.5.0.tar.gz"
+sha512sums="a06e834e81081358478cdd27d1dcc6f3bb52ffd2ea57ade59f3ff2f69868fb6886a0b38fd1580d24295b7ed936ac471f107df64d62c1ff42b57dd8ce0810e3f2 libisofs-1.5.4.tar.gz"
diff --git a/user/libixion/APKBUILD b/user/libixion/APKBUILD
index 174323bd3..d262e50e6 100644
--- a/user/libixion/APKBUILD
+++ b/user/libixion/APKBUILD
@@ -1,19 +1,22 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=libixion
-pkgver=0.14.1
+pkgver=0.19.0
pkgrel=0
pkgdesc="A general purpose formula parser & interpreter"
url="https://gitlab.com/ixion/ixion"
arch="all"
license="MPL-2.0"
depends=""
-depends_dev="mdds~1.4"
-makedepends="$depends_dev boost-dev"
+depends_dev="mdds"
+makedepends="$depends_dev boost-dev spdlog"
subpackages="$pkgname-dev"
-source="http://kohei.us/files/ixion/src/$pkgname-$pkgver.tar.xz"
+source="https://gitlab.com/api/v4/projects/ixion%2Fixion/packages/generic/source/$pkgver/$pkgname-$pkgver.tar.xz"
build() {
+ # GCC 13 changed default fp precision behavior. (#1193, #1214)
+ export CXXFLAGS="${CXXFLAGS} -fexcess-precision=fast"
+
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -39,4 +42,4 @@ dev() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="e4ae6348833d2178c1dc76916937bcc9d7821dc6570fe13093c441ca22e0301a1ca6a4cf85d9814b83534733dba98f4c4a372791f93bc57173317657675b9ae3 libixion-0.14.1.tar.xz"
+sha512sums="f06edbcf5ae7459a46e01273952ce6fbc4e8f2b7782c7e07645dc30e102f20f542e449acafc26484765207b10656e0b350f4108cbf1e03947ee7267254cf6f97 libixion-0.19.0.tar.xz"
diff --git a/user/libjpeg-turbo/APKBUILD b/user/libjpeg-turbo/APKBUILD
index e35ca14b9..5910e7011 100644
--- a/user/libjpeg-turbo/APKBUILD
+++ b/user/libjpeg-turbo/APKBUILD
@@ -1,25 +1,39 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libjpeg-turbo
-pkgver=2.0.2
+pkgver=2.0.5
pkgrel=0
pkgdesc="Accelerated JPEG compression and decompression library"
url="https://libjpeg-turbo.org/"
arch="all"
license="IJG AND BSD-3-Clause AND Zlib"
depends=""
-makedepends=""
+makedepends="cmake"
subpackages="$pkgname-doc $pkgname-dev $pkgname-utils"
-source="https://downloads.sourceforge.net/libjpeg-turbo/libjpeg-turbo-$pkgver.tar.gz"
+source="https://downloads.sourceforge.net/libjpeg-turbo/libjpeg-turbo-$pkgver.tar.gz
+ "
case "$CTARGET_ARCH" in
pmmx | x86 | x86_64) makedepends="$makedepends nasm" ;;
esac
+# secfixes:
+# 2.0.3-r0:
+# - CVE-2019-2201
+# 2.0.4-r1:
+# - CVE-2020-13790
+
build() {
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
+
+ # https://github.com/libjpeg-turbo/libjpeg-turbo/issues/344
+ # https://github.com/libjpeg-turbo/libjpeg-turbo/issues/428
+ case "$CARCH" in
+ ppc) _floattest=64bit;;
+ esac
+
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_DEFAULT_LIBDIR=lib \
@@ -28,7 +42,8 @@ build() {
-DCMAKE_C_FLAGS="$CFLAGS" \
-DENABLE_STATIC=OFF \
-DWITH_JPEG8=ON \
- ${CMAKE_CROSSOPTS}
+ ${_floattest:+-DFLOATTEST="$_floattest"} \
+ ${CMAKE_CROSSOPTS} .
make
}
@@ -47,4 +62,4 @@ utils() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}
-sha512sums="204b6d083e99488c975c75efb08699e4dc1c409556e4dee4f21e3ee67e9c6682eb342f2e5712816b0342c00399fbe6e43fbce30c3d22f30f7ef91db006b3be08 libjpeg-turbo-2.0.2.tar.gz"
+sha512sums="5bf9ecf069b43783ff24365febf36dda69ccb92d6397efec6069b2b4f359bfd7b87934a6ce4311873220fccc73acabdacef5ce0604b79209eb1912e8ba478555 libjpeg-turbo-2.0.5.tar.gz"
diff --git a/user/libkdcraw/APKBUILD b/user/libkdcraw/APKBUILD
index 099fb8c0a..041112e03 100644
--- a/user/libkdcraw/APKBUILD
+++ b/user/libkdcraw/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libkdcraw
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="RAW image file format support for KDE"
url="https://www.KDE.org/"
@@ -11,10 +11,9 @@ depends=""
depends_dev="qt5-qtbase-dev"
makedepends="$depends_dev cmake extra-cmake-modules libraw-dev"
subpackages="$pkgname-dev"
-source="https://download.kde.org/stable/applications/$pkgver/src/libkdcraw-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/libkdcraw-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,18 +24,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="ecd6f8a013e160221644d84b6ed1befc9b45da23ed90bd98eb857bd4c5bb0172c6c7bc0eec5c688d8fa212c67f869c4fbf317a4cbd4abf3762e18c62d0c0d440 libkdcraw-18.12.3.tar.xz"
+sha512sums="41332675859605548b89aee573ba06b1b4692ee3c851b24eef5dd23c44dbf403243cc46163b4dd0596c6a05e1bcaa154c433a14124d0da390613e98b60eb126a libkdcraw-22.04.2.tar.xz"
diff --git a/user/libkdegames/APKBUILD b/user/libkdegames/APKBUILD
index 769fdda19..35ccb2537 100644
--- a/user/libkdegames/APKBUILD
+++ b/user/libkdegames/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libkdegames
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Library for common routines shared between KDE games"
url="https://www.kde.org/applications/games/"
@@ -18,10 +18,9 @@ makedepends="$depends_dev cmake extra-cmake-modules qt5-qtsvg-dev
kitemviews-dev kjobwidgets-dev knewstuff-dev kservice-dev kxmlgui-dev
ktextwidgets-dev kwidgetsaddons-dev"
subpackages="$pkgname-dev $pkgname-lang $pkgname-carddecks::noarch"
-source="https://download.kde.org/stable/applications/$pkgver/src/libkdegames-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/libkdegames-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -32,24 +31,27 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
# causes crashes in KPat:
# https://bugs.kde.org/show_bug.cgi?id=402220
# Qt doesn't care:
# https://bugreports.qt.io/browse/QTBUG-72779
- rm -r "$pkgdir"/usr/share/carddecks/svg-{ancient-egyptians,future,jolly-royal,konqi-modern,standard,xskat-french}
+ cd "$pkgdir"/usr/share/carddecks
+ local i; for i in ancient-egyptians future jolly-royal \
+ konqi-modern standard xskat-french
+ do
+ rm -r "svg-$i"
+ done
}
carddecks() {
@@ -58,4 +60,4 @@ carddecks() {
mv "$pkgdir"/usr/share/carddecks "$subpkgdir"/usr/share/
}
-sha512sums="12a9cdec2ab2defd337695c3f6d44664d5c187b34e4eed3ab9497f4fd3a8d1450e296699504464572265cc68d4ff5916a4ba86400024b0044335b25a09969c3e libkdegames-18.12.3.tar.xz"
+sha512sums="f775cbfe427c9841116617c9513894637713415f0c4dd7bb0295391eeb08bf384f83d3d8cc32f24cc660a55816c928a5547aeefa57fc3e53a228ff87763bfc11 libkdegames-22.04.2.tar.xz"
diff --git a/user/libkdepim/APKBUILD b/user/libkdepim/APKBUILD
new file mode 100644
index 000000000..dc4ffc4b9
--- /dev/null
+++ b/user/libkdepim/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libkdepim
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="KDE PIM runtime library"
+url="https://kontact.kde.org/"
+arch="all"
+license="LGPL-2.1+"
+depends=""
+makedepends="qt5-qtbase-dev qt5-qttools-dev cmake extra-cmake-modules boost-dev
+ kauth-dev kcalendarcore-dev kcmutils-dev kcodecs-dev kcompletion-dev
+ kconfigwidgets-dev kcontacts-dev kcoreaddons-dev ki18n-dev kio-dev
+ kitemmodels-dev kitemviews-dev kjobwidgets-dev kldap-dev kmime-dev
+ kservice-dev kwallet-dev kwidgetsaddons-dev kwindowsystem-dev
+ kxmlgui-dev solid-dev
+
+ akonadi-dev akonadi-contacts-dev akonadi-mime-dev akonadi-search-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/libkdepim-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ QT_QPA_PLATFORM=offscreen CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="547fc45bfdad33db4cfde8cf162c818a1dce4959d8c7f82fa59566e0ad1c536e0de037b00561318de5ff30d7736420b25715b6032c2f321ad00291e28a5860b0 libkdepim-22.04.2.tar.xz"
diff --git a/user/libkeduvocdocument/APKBUILD b/user/libkeduvocdocument/APKBUILD
index cb7f858cf..35bde3340 100644
--- a/user/libkeduvocdocument/APKBUILD
+++ b/user/libkeduvocdocument/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libkeduvocdocument
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Library for manipulating KVTML files"
url="https://www.kde.org/"
@@ -12,10 +12,9 @@ depends_dev="qt5-qtbase-dev"
makedepends="$depends_dev cmake extra-cmake-modules ki18n-dev karchive-dev
kio-dev"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/libkeduvocdocument-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/libkeduvocdocument-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e19a6fceab68e4056cbe7ec1625c3849fe824bec6a809ddfb68d4b0dede377f869e4c4019e2ff03ebb0eaf29b2042e9af69cf798802e29c5aa43bbc235492055 libkeduvocdocument-18.12.3.tar.xz"
+sha512sums="ac846e8a27bc0136fb8ab791cdf43dd6cd4d884261d20cfb567b06180fe2a5be0657fa0cddcf00f0e5769bed82c3fecaddf5e1b5e2c583b748609c9187963585 libkeduvocdocument-22.04.2.tar.xz"
diff --git a/user/libkexiv2/APKBUILD b/user/libkexiv2/APKBUILD
index 463ef365d..5d61e8726 100644
--- a/user/libkexiv2/APKBUILD
+++ b/user/libkexiv2/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libkexiv2
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="KDE integration with Exiv2 EXIF data library"
url="https://www.KDE.org/"
@@ -11,10 +11,11 @@ depends=""
depends_dev="qt5-qtbase-dev"
makedepends="$depends_dev cmake extra-cmake-modules exiv2-dev"
subpackages="$pkgname-dev"
-source="https://download.kde.org/stable/applications/$pkgver/src/libkexiv2-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/libkexiv2-$pkgver.tar.xz
+ backport.patch
+ "
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,18 +26,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="ce2bab29a1059e4be498472b2713e813c8eb5ace4cd928eeff3c6e50a656afda651a57a3877d9388163096e575c897f4f84eee914db101cb8dcd1eb614242898 libkexiv2-18.12.3.tar.xz"
+sha512sums="b0698d268a88cf546a4cb028adc26170297e5c79e63e5d6cfcb1500292e7f73697b322055e31594c218b037db33447b68613c128a8c0baca0779fc973a5f6c8e libkexiv2-22.04.2.tar.xz
+b2623cd9ff92b7a86a4e9e1fbb691c1d548482a32e568e06936de48703ff80d927fa3b25779f63530875388c4e7fb94d6045beabae9ac043c652fc8826d3250c backport.patch"
diff --git a/user/libkexiv2/backport.patch b/user/libkexiv2/backport.patch
new file mode 100644
index 000000000..93d27e4a8
--- /dev/null
+++ b/user/libkexiv2/backport.patch
@@ -0,0 +1,31 @@
+From 6dce742b86d6f1a42f80017868759a8dca677b1d Mon Sep 17 00:00:00 2001
+From: Nicolas Fella <nicolas.fella@gmx.de>
+Date: Thu, 19 May 2022 22:44:12 +0200
+Subject: [PATCH] Lower C++ standard from 17 to 14
+
+exiv is not C++17 compatible
+
+It uses e.g. auto_ptr in its headers
+
+CCBUG: 454050
+---
+ CMakeLists.txt | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 7f5b065..48ea18b 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -13,6 +13,9 @@ cmake_minimum_required(VERSION ${CMAKE_MIN_VERSION})
+
+ project(libkexiv2 VERSION "5.0.0")
+
++set(CMAKE_CXX_STANDARD 14) # exiv is not compatible with C++ > 14 yet
++set(CMAKE_CXX_STANDARD_REQUIRED ON)
++
+ message(STATUS "----------------------------------------------------------------------------------")
+ message(STATUS "Starting CMake configuration for: ${PROJECT_NAME}")
+
+--
+GitLab
+
diff --git a/user/libkipi/APKBUILD b/user/libkipi/APKBUILD
index f8fc34da0..f23c9e40b 100644
--- a/user/libkipi/APKBUILD
+++ b/user/libkipi/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libkipi
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="KDE Image Plugin Interface library"
url="https://www.digikam.org/"
@@ -12,10 +12,9 @@ depends=""
depends_dev="qt5-qtbase-dev kxmlgui-dev kservice-dev"
makedepends="$depends_dev cmake extra-cmake-modules kconfig-dev"
subpackages="$pkgname-dev"
-source="https://download.kde.org/stable/applications/$pkgver/src/libkipi-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/libkipi-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,13 +26,12 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_TESTING=OFF \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="85597e17c40c959416d81804a3d01ac7acc2fdb9706db82e28aab1e302511238e4861dae7cd23a08f2900df7d3ba8e506ade689f89d5e8949e6cc8378492430c libkipi-18.12.3.tar.xz"
+sha512sums="f4762f897901c0f689da4cf83d63220ea97b5880f4f48868588a19cdfc3f135c89a22cb264aa938a30f4195a21462ab85849d1598b7a342c95d70d16acf026c4 libkipi-22.04.2.tar.xz"
diff --git a/user/libkleo/APKBUILD b/user/libkleo/APKBUILD
index 841a3d944..06ddb780b 100644
--- a/user/libkleo/APKBUILD
+++ b/user/libkleo/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libkleo
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="KDE encryption library"
url="https://www.kde.org/"
@@ -13,10 +13,9 @@ depends_dev="qt5-qtbase-dev boost-dev gpgme-dev libgpg-error-dev ki18n-dev kwidg
makedepends="$depends_dev cmake extra-cmake-modules kcompletion-dev kconfig-dev
kcodecs-dev kcoreaddons-dev kpimtextedit-dev kwindowsystem-dev"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/libkleo-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/libkleo-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ # These excluded tests require a running X11 session.
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E '(editdirectoryservicedialog|keyselectioncombo|keyserverconfig|newkeyapprovaldialog)'
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="de7348f2d8aae0d250613fcb7f0fb92e9c9aa979d1457e95e4a3908fddb69ea59f1d70311f24c4affce61c64b638dc95901c80b9d6a4ae019dfb115012a9b348 libkleo-18.12.3.tar.xz"
+sha512sums="775307703ff913d8dcb2ee34c4b3526c60e85320c4f377e968562d6dc3e2dd3110b5c9477b7a186837abb024db5c488ee42ec86b7e7347d5a2ba5dd031f34968 libkleo-22.04.2.tar.xz"
diff --git a/user/libkmahjongg/APKBUILD b/user/libkmahjongg/APKBUILD
index 44b2e9067..32eaaaaa1 100644
--- a/user/libkmahjongg/APKBUILD
+++ b/user/libkmahjongg/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libkmahjongg
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Library with Mah Jongg logic"
url="https://www.kde.org/"
@@ -12,10 +12,9 @@ depends_dev="qt5-qtbase-dev kconfig-dev kconfigwidgets-dev"
makedepends="$depends_dev cmake extra-cmake-modules qt5-qtsvg-dev ki18n-dev
kcompletion-dev kcoreaddons-dev kwidgetsaddons-dev"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/libkmahjongg-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/libkmahjongg-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="c4e2b36be5a3ca0987503593136cbfcccef3cc9db914132b6fe121b5979d786d78f6ffefb0567f4e0ec1e3a52b4c1a3eab474d6286fda0b13b24188e32a3d869 libkmahjongg-18.12.3.tar.xz"
+sha512sums="c128ff3f11e0ba3cbb6f8e1901bd5c6090b0deadd4ad1edfbf9297844aacad8c2f40014308067de3d9c8a43339436bb7c93b0a6e84050a7ef5d750fe54f59c33 libkmahjongg-22.04.2.tar.xz"
diff --git a/user/libkomparediff2/APKBUILD b/user/libkomparediff2/APKBUILD
new file mode 100644
index 000000000..213180bca
--- /dev/null
+++ b/user/libkomparediff2/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libkomparediff2
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="KDE diff library"
+url="https://kde.org/applications/development/org.kde.kompare"
+arch="all"
+license="GPL-2.0+ AND GPL-2.0-only AND LGPL-2.0+"
+depends=""
+makedepends="qt5-qtbase-dev cmake extra-cmake-modules kauth-dev kcodecs-dev
+ kcompletion-dev kconfig-dev kconfigwidgets-dev kcoreaddons-dev ki18n-dev
+ kio-dev kitemviews-dev kjobwidgets-dev kservice-dev kwidgetsaddons-dev
+ kwindowsystem-dev kxmlgui-dev solid-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/libkomparediff2-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="fb8e0e10c0e77f9e547f6af610c3add9dca51ce55f055f4501ddc0a60288dc9a623314659016f32370c2d2aea41f26664a7ccec4dc50c45ca20c68d549d50d96 libkomparediff2-22.04.2.tar.xz"
diff --git a/user/libksane/APKBUILD b/user/libksane/APKBUILD
index 7a2b13670..e3fc6999b 100644
--- a/user/libksane/APKBUILD
+++ b/user/libksane/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libksane
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="KDE scanning library"
url="https://www.kde.org"
@@ -12,10 +12,9 @@ depends_dev="sane-dev"
makedepends="$depends_dev cmake extra-cmake-modules qt5-qtbase-dev ki18n-dev
ktextwidgets-dev kwallet-dev kwidgetsaddons-dev"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/libksane-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/libksane-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="af14a341275d70a0b3af3c93270bbadecfcd2cce4df0ab077aaa967f8bec8fce292b7fcb190f8b3b43d05bf5fea70f4cae7716df1d62b5950cbbe7d9e3ce3e49 libksane-18.12.3.tar.xz"
+sha512sums="8089670b1fb4926e6e599e5cf4eeaac2f5cabb3d0f00feb7c3a175f8c5238cc82ea30619fc2d0b159d50fa7635b81f95112bca6ead2f0a87ed11d13d01b21f27 libksane-22.04.2.tar.xz"
diff --git a/user/libksba/APKBUILD b/user/libksba/APKBUILD
index 28f152d7a..38637d74f 100644
--- a/user/libksba/APKBUILD
+++ b/user/libksba/APKBUILD
@@ -1,19 +1,19 @@
# Contributor: Łukasz Jendrysik <scadu@yandex.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libksba
-pkgver=1.3.5
-pkgrel=1
+pkgver=1.6.3
+pkgrel=0
pkgdesc="CMS and X.509 access library"
url="https://www.gnupg.org/software/libksba/index.html"
arch="all"
# tools are GPL 3, libs are LGPL3/GPL2
license="(LGPL-3.0+ OR GPL-2.0+) AND GPL-3.0+"
+depends=""
makedepends="libgpg-error-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://www.gnupg.org/ftp/gcrypt/$pkgname/$pkgname-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -22,13 +22,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="60179bfd109b7b4fd8d2b30a3216540f03f5a13620d9a5b63f1f95788028708a420911619f172ba57e945a6a2fcd2ef7eaafc5585a0eb2b9652cfadf47bf39a2 libksba-1.3.5.tar.bz2"
+sha512sums="188f6d27b4904c10cd54ba949c1132dd6c167f53dd1b77eae39c5b8e3ac8b15e87b2a54cdfddac95ac4ed41ee83c3d4e1b17d95126f245b6c204fade6739a2ce libksba-1.6.3.tar.bz2"
diff --git a/user/libkscreen/APKBUILD b/user/libkscreen/APKBUILD
index c241f9e62..88c710605 100644
--- a/user/libkscreen/APKBUILD
+++ b/user/libkscreen/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=libkscreen
-pkgver=5.12.7
-pkgrel=1
+pkgver=5.24.5
+pkgrel=0
pkgdesc="KDE Plasma screen management software"
url="https://www.kde.org/"
arch="all"
@@ -11,12 +11,12 @@ license="LGPL-2.1+ AND GPL-2.0+ AND (GPL-2.0-only OR GPL-3.0-only)"
depends=""
depends_dev="qt5-qtbase-dev"
makedepends="$depends_dev cmake extra-cmake-modules qt5-qtx11extras-dev
- kwayland-dev"
-subpackages="kscreen-doctor:doctor $pkgname-dev $pkgname-wayland"
+ qt5-qttools-dev qt5-qtwayland-tools kwayland-dev doxygen
+ wayland-dev plasma-wayland-protocols libxcb-dev"
+subpackages="kscreen-doctor:doctor $pkgname-dev $pkgname-doc $pkgname-wayland"
source="https://download.kde.org/stable/plasma/$pkgver/libkscreen-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,17 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
- make
+ -DBUILD_QCH:BOOL=ON \
+ ${CMAKE_CROSSOPTS} .
+ make -j1 #811
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -55,4 +54,4 @@ wayland() {
"$subpkgdir"/usr/lib/qt5/plugins/kf5/kscreen/
}
-sha512sums="fb24d0f4f79468d4246e912f4b7e814df398911cdbd475e18263e89502ecca35c9e4974b7f0af92afa8cba3081056f8f27b0f051eb287c682dd37b35568b3c5c libkscreen-5.12.7.tar.xz"
+sha512sums="780abc702ee6bd53703dc5671e56dc59e10e62ce33c3714454c3c8b5a7a5cf43d4402906f9b1c7c1c19e9dc36cb323c07eb20603a0fb44c73281844c879c8370 libkscreen-5.24.5.tar.xz"
diff --git a/user/libksysguard/APKBUILD b/user/libksysguard/APKBUILD
index f74519692..324f34d06 100644
--- a/user/libksysguard/APKBUILD
+++ b/user/libksysguard/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=libksysguard
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="KDE system monitor library"
url="https://www.kde.org/"
@@ -13,12 +13,15 @@ depends_dev="qt5-qtbase-dev kconfig-dev"
makedepends="$depends_dev cmake extra-cmake-modules python3 libx11-dev zlib-dev
qt5-qtscript-dev ki18n-dev kauth-dev kcompletion-dev kconfigwidgets-dev
kcoreaddons-dev kiconthemes-dev plasma-framework-dev kservice-dev
- kwindowsystem-dev kwidgetsaddons-dev"
+ kwindowsystem-dev kwidgetsaddons-dev kio-dev libnl3-dev libpcap-dev
+ kdeclarative-dev kglobalaccel-dev knewstuff-dev lm_sensors-dev
+ libcap-dev qt5-qttools-dev"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.kde.org/stable/plasma/$pkgver/libksysguard-$pkgver.tar.xz"
+source="https://download.kde.org/stable/plasma/$pkgver/libksysguard-$pkgver.tar.xz
+ underlinking.patch
+ "
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,18 +32,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="78a063606567632c19a7f1c9d2e7d69634432f3e49bb08a3162805aeb94e0930f2d43e9372207512558b785b8c7e20fdca801de35c055e456ac3cb812bd96efa libksysguard-5.12.7.tar.xz"
+sha512sums="133c5923ee616515b1934c4e2c30509d407f40b7afc3914ac2417d7c961f3a1921bd3b5bfd1ca73942ddb17777fbf4d96950c130129135eae2b8d1b8daac9fa5 libksysguard-5.24.5.tar.xz
+3f273d73ef721b08dee2d0b74f8bb14bb0ee6085eb43b68704abcbca14d60b29cfe651f4c2ad00d13270a783ef94e66982e2e4ae0c6109cf2c895c3562af89f5 underlinking.patch"
diff --git a/user/libksysguard/underlinking.patch b/user/libksysguard/underlinking.patch
new file mode 100644
index 000000000..15f03bdaa
--- /dev/null
+++ b/user/libksysguard/underlinking.patch
@@ -0,0 +1,12 @@
+libksysguard underlinks on musl.
+
+--- libksysguard-5.24.5/processcore/CMakeLists.txt.old 2022-05-03 05:29:20.000000000 -0500
++++ libksysguard-5.24.5/processcore/CMakeLists.txt 2022-06-06 00:00:11.841140703 -0500
+@@ -36,6 +36,7 @@
+ KF5::CoreAddons
+ KF5::Service
+ ZLIB::ZLIB
++ stdc++fs
+ )
+
+ if( ${CMAKE_SYSTEM_NAME} MATCHES "NetBSD" )
diff --git a/user/libktorrent/APKBUILD b/user/libktorrent/APKBUILD
index 575fca74b..a86031ac7 100644
--- a/user/libktorrent/APKBUILD
+++ b/user/libktorrent/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libktorrent
-pkgver=2.1
+pkgver=22.04.2
pkgrel=0
pkgdesc="Torrent handling library for KDE"
url="https://www.kde.org/"
@@ -11,12 +11,11 @@ license="LGPL-2.1+"
depends=""
depends_dev="qt5-qtbase-dev karchive-dev kcrash-dev kio-dev solid-dev gmp-dev
boost-dev qca-dev libgcrypt-dev"
-makedepends="cmake extra-cmake-modules $depends_dev ki18n-dev"
+makedepends="cmake extra-cmake-modules $depends_dev doxygen ki18n-dev"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.kde.org/stable/ktorrent/5.1/libktorrent-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/libktorrent-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="28d7a4b8ee45ddcbadb3ca9d6e568120803081b0ecd3e9436ed721860717b98538c522653ea47975123f0819548d0cabe1973baffed887fcbbca11d84ea5ebe4 libktorrent-2.1.tar.xz"
+sha512sums="b5ef82b2d2c9235e0760fff0c4b30339abb076f47c75bee85379d247c4b0d0fffd7d194b90ba4594d4ac6461d8045570f0bcf56dd484527338afd94a6ea2eeda libktorrent-22.04.2.tar.xz"
diff --git a/user/libkworkspace/APKBUILD b/user/libkworkspace/APKBUILD
new file mode 100644
index 000000000..4a653b663
--- /dev/null
+++ b/user/libkworkspace/APKBUILD
@@ -0,0 +1,50 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
+pkgname=libkworkspace
+pkgver=5.24.5
+pkgrel=0
+pkgdesc="KDE Plasma 5 workspace library"
+url="https://www.kde.org/plasma-desktop"
+arch="all"
+options="!check" # Test requires X11 accelration.
+license="(GPL-2.0-only OR GPL-3.0-only) AND LGPL-2.1+ AND GPL-2.0+ AND MIT AND LGPL-2.1-only AND LGPL-2.0+ AND (LGPL-2.1-only OR LGPL-3.0-only) AND LGPL-2.0-only"
+depends="kinit"
+depends_dev="qt5-qtbase-dev"
+makedepends="cmake extra-cmake-modules libice-dev libsm-dev libxau-dev
+ kconfig-dev kcoreaddons-dev ki18n-dev kinit-dev kscreenlocker-dev
+ kwin-dev kwindowsystem-dev plasma-framework-dev qt5-qtx11extras-dev"
+subpackages="$pkgname-dev"
+source="https://download.kde.org/stable/plasma/$pkgver/plasma-workspace-$pkgver.tar.xz
+ session.patch
+ standalone.patch
+ "
+builddir="$srcdir"/plasma-workspace-$pkgver/libkworkspace
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DBUILD_TESTING=OFF \
+ ${CMAKE_CROSSOPTS} . \
+ -Bbuild
+ make -C build
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
+}
+
+package() {
+ make DESTDIR="$pkgdir" -C build install
+}
+
+sha512sums="ae40fe545b03e42e9f8fe2e8885d3853f4b52d4fd2ed3ecf7d24fa59b4924b8f8b389e8713ec6a3a875bc66df3952de9157d4a5631b283105a9329a1a1825996 plasma-workspace-5.24.5.tar.xz
+30e7e39aa99a43c59fe7a88d389ba8309c66907bb55221d936c6a01e150f28e55b81a38dedb8dea3d73169581a29c9393b8fac0b5c7fc1e779d0b970da419d28 session.patch
+867539bf129a28d06ba4838a716ec511980bb6b10f339180175855d1e3e933f4f2391fe3d9df7ea9b2cdb965c47d6746a12804acd98d5ed0d1979bf9630d4e8b standalone.patch"
diff --git a/user/libkworkspace/session.patch b/user/libkworkspace/session.patch
new file mode 100644
index 000000000..26fc062bd
--- /dev/null
+++ b/user/libkworkspace/session.patch
@@ -0,0 +1,11 @@
+--- libkworkspace/sessionmanagementbackend.cpp.old 2020-01-16 12:37:11.000000000 +0000
++++ libkworkspace/sessionmanagementbackend.cpp 2020-01-26 23:48:25.419351063 +0000
+@@ -191,7 +191,7 @@
+
+ bool ConsoleKitSessionBackend::exists()
+ {
+- return QDBusConnection::systemBus().interface()->isServiceRegistered(QStringLiteral("org.freedesktop.login1"));
++ return QDBusConnection::systemBus().interface()->isServiceRegistered(QStringLiteral("org.freedesktop.ConsoleKit"));
+ }
+
+ ConsoleKitSessionBackend::ConsoleKitSessionBackend()
diff --git a/user/libkworkspace/standalone.patch b/user/libkworkspace/standalone.patch
new file mode 100644
index 000000000..3cf78db08
--- /dev/null
+++ b/user/libkworkspace/standalone.patch
@@ -0,0 +1,108 @@
+From 2360505a8f6475b6988efa60c3ba746bfbe4c4d0 Mon Sep 17 00:00:00 2001
+From: Andreas Sturmlechner <asturm@gentoo.org>
+Date: Sun, 2 Feb 2020 18:29:57 +0100
+Subject: [PATCH] libkworkspace: Allow standalone build
+
+---
+ libkworkspace/CMakeLists.txt | 67 +++++++++++++++++++++++++++++++++++-
+ 1 file changed, 66 insertions(+), 1 deletion(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 015c5181f..0aa635e11 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -1,3 +1,56 @@
++project(libkworkspace)
++
++if(${CMAKE_SOURCE_DIR} STREQUAL ${libkworkspace_SOURCE_DIR})
++ set(PROJECT_VERSION "5.24.5")
++ set(PROJECT_VERSION_MAJOR 5)
++
++ cmake_minimum_required(VERSION 3.16)
++
++ set(QT_MIN_VERSION "5.15.0")
++ set(KF5_MIN_VERSION "5.82.0")
++ find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED COMPONENTS Core DBus)
++ find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
++ set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
++
++ include(KDEInstallDirs)
++ include(KDECMakeSettings)
++ include(KDECompilerSettings NO_POLICY_SCOPE)
++ include(ECMMarkNonGuiExecutable)
++ include(CMakePackageConfigHelpers)
++ include(WriteBasicConfigVersionFile)
++ include(CheckIncludeFiles)
++ include(FeatureSummary)
++ include(ECMQtDeclareLoggingCategory)
++ include(KDEPackageAppTemplates)
++ include(ECMMarkAsTest)
++ include(GenerateExportHeader)
++
++ find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS Config CoreAddons I18n Init WindowSystem)
++
++ find_package(KWinDBusInterface CONFIG REQUIRED)
++ find_package(KScreenLocker 5.13.80 REQUIRED)
++ find_package(ScreenSaverDBusInterface CONFIG REQUIRED)
++
++ find_package(X11)
++ set_package_properties(X11 PROPERTIES DESCRIPTION "X11 libraries"
++ URL "http://www.x.org"
++ TYPE OPTIONAL
++ PURPOSE "Required for X11 support")
++
++ if(X11_FOUND)
++ find_package(Qt5X11Extras ${QT_MIN_VERSION} CONFIG REQUIRED)
++ set(HAVE_X11 1)
++ endif()
++
++ if(BUILD_TESTING)
++ find_package(Qt5Test ${QT_MIN_VERSION} CONFIG REQUIRED)
++ endif()
++
++ check_include_files(unistd.h HAVE_UNISTD_H)
++
++ configure_file(../config-workspace.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-workspace.h)
++ configure_file(../config-X11.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-X11.h)
++endif()
+
+ set(kworkspace_LIB_SRCS kdisplaymanager.cpp
+ kworkspace.cpp
+@@ -12,9 +65,17 @@ add_definitions(-DTRANSLATION_DOMAIN=\"libkworkspace\")
+ qt_add_dbus_interface(kworkspace_LIB_SRCS ${KINIT_DBUS_INTERFACES_DIR}/kf5_org.kde.KLauncher.xml klauncher_interface)
+ qt_add_dbus_interface(kworkspace_LIB_SRCS ${KSCREENLOCKER_DBUS_INTERFACES_DIR}/kf5_org.freedesktop.ScreenSaver.xml screenlocker_interface )
+ qt_add_dbus_interface(kworkspace_LIB_SRCS ${KSCREENLOCKER_DBUS_INTERFACES_DIR}/org.kde.screensaver.xml kscreenlocker_interface )
++if(${CMAKE_SOURCE_DIR} STREQUAL ${libkworkspace_SOURCE_DIR})
++qt_add_dbus_interface(kworkspace_LIB_SRCS ../ksmserver/org.kde.LogoutPrompt.xml logoutprompt_interface)
++qt_add_dbus_interface(kworkspace_LIB_SRCS ../startkde/plasma-session/org.kde.Startup.xml startup_interface)
++qt_add_dbus_interface(kworkspace_LIB_SRCS ../startkde/plasma-shutdown/org.kde.Shutdown.xml shutdown_interface)
++set(ksmserver_xml ../ksmserver/org.kde.KSMServerInterface.xml)
++else()
+ qt_add_dbus_interface(kworkspace_LIB_SRCS ${plasma-workspace_SOURCE_DIR}/ksmserver/org.kde.LogoutPrompt.xml logoutprompt_interface)
+ qt_add_dbus_interface(kworkspace_LIB_SRCS ${plasma-workspace_SOURCE_DIR}/startkde/plasma-session/org.kde.Startup.xml startup_interface)
+ qt_add_dbus_interface(kworkspace_LIB_SRCS ${plasma-workspace_SOURCE_DIR}/startkde/plasma-shutdown/org.kde.Shutdown.xml shutdown_interface)
++set(ksmserver_xml ${plasma-workspace_SOURCE_DIR}/ksmserver/org.kde.KSMServerInterface.xml)
++endif()
+
+ set_source_files_properties("${CMAKE_CURRENT_SOURCE_DIR}/org.freedesktop.login1.Manager.xml"
+ "${CMAKE_SOURCE_DIR}/data/interfaces/org.freedesktop.login1.Seat.xml"
+@@ -30,7 +91,6 @@ list(APPEND kworkspace_LIB_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/login1_manager_inte
+ qt_add_dbus_interface(kworkspace_LIB_SRCS "org.freedesktop.UPower.xml" upower_interface)
+ qt_add_dbus_interface(kworkspace_LIB_SRCS "org.freedesktop.ConsoleKit.Manager.xml" consolekit_manager_interface)
+
+-set(ksmserver_xml ${plasma-workspace_SOURCE_DIR}/ksmserver/org.kde.KSMServerInterface.xml)
+ qt_add_dbus_interface( kworkspace_LIB_SRCS ${ksmserver_xml} ksmserver_interface )
+
+ add_library(kworkspace ${kworkspace_LIB_SRCS})
+@@ -98,3 +158,8 @@ if(BUILD_TESTING)
+ add_subdirectory(autotests)
+ add_subdirectory(tests)
+ endif()
++
++if ("${CMAKE_BINARY_DIR}" STREQUAL "${CMAKE_CURRENT_BINARY_DIR}")
++ install( FILES sessionmanagementbackend.h DESTINATION ${KDE_INSTALL_INCLUDEDIR}/kworkspace5 COMPONENT Devel )
++ feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
++endif()
+--
+2.31.1
+
diff --git a/user/liblangtag/APKBUILD b/user/liblangtag/APKBUILD
index f46f49f9b..a7628f9e6 100644
--- a/user/liblangtag/APKBUILD
+++ b/user/liblangtag/APKBUILD
@@ -1,20 +1,19 @@
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=liblangtag
-pkgver=0.6.2
+pkgver=0.6.7
pkgrel=0
pkgdesc="Interface library to access tags for identifying languages"
url="https://bitbucket.org/tagoh/liblangtag"
arch="all"
license="LGPL-3.0+ OR MPL-2.0"
depends=""
-makedepends="glib-dev gobject-introspection-dev libtool libxml2-dev"
checkdepends="check-dev"
+makedepends="glib-dev gobject-introspection-dev libtool libxml2-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://bitbucket.org/tagoh/$pkgname/downloads/$pkgname-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,13 +26,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="812e00d0a26eedc1fa9bee6d0b9da53b8faca8d1fc5f93a0423106b5b777c7b1ec5854da7d02606c215ad1a1248de93016559c7a55288a4b427857fb1ed1ad8f liblangtag-0.6.2.tar.bz2"
+sha512sums="3628728f46865507d8794c1e7286c6ca04fc49f905594ab76db7bd2c8d8f9fac1e33693314d56bca6fdd8f99b8d207e6e6d2f751474832ceb60a4cdbf10fed68 liblangtag-0.6.7.tar.bz2"
diff --git a/user/liblbxutil/APKBUILD b/user/liblbxutil/APKBUILD
index def4dc83c..1e3c56c36 100644
--- a/user/liblbxutil/APKBUILD
+++ b/user/liblbxutil/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=liblbxutil
pkgver=1.1.0
-pkgrel=0
+pkgrel=1
pkgdesc="Utility library for X11 Low Bandwidth extension"
url="https://www.X.Org/"
arch="all"
@@ -10,17 +10,17 @@ license="MIT"
depends=""
makedepends="xorgproto-dev zlib-dev"
subpackages="$pkgname-dev"
-source="https://www.x.org/releases/individual/lib/liblbxutil-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/lib/liblbxutil-$pkgver.tar.bz2
+ gcc10.patch
+ "
prepare() {
- cd "$builddir"
default_prepare
chmod a+w config.sub
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,13 +32,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="93bdefef297d46a301dd1cab35ad186438e340822ba5aac20e9d8f4c51cd66e4118b0d9f4afc48ef33a67c6e413f551bcb59089d01597ed175b400902b9f23f4 liblbxutil-1.1.0.tar.bz2"
+sha512sums="93bdefef297d46a301dd1cab35ad186438e340822ba5aac20e9d8f4c51cd66e4118b0d9f4afc48ef33a67c6e413f551bcb59089d01597ed175b400902b9f23f4 liblbxutil-1.1.0.tar.bz2
+c1abd8d42e11d84019f5bc3e93774a1b65201c9e08b70a5cf0b78680bdc9d6a49043908510c2dccdf1b53dc6b434261377b0330ab603c8d4929cf001b802f44c gcc10.patch"
diff --git a/user/liblbxutil/gcc10.patch b/user/liblbxutil/gcc10.patch
new file mode 100644
index 000000000..5e9b99d91
--- /dev/null
+++ b/user/liblbxutil/gcc10.patch
@@ -0,0 +1,18 @@
+--- liblbxutil-1.1.0/src/lbx_zlib/lbx_zlib.h.old 2009-11-02 23:52:21.000000000 -0600
++++ liblbxutil-1.1.0/src/lbx_zlib/lbx_zlib.h 2024-05-29 21:33:09.169332780 -0500
+@@ -136,9 +136,9 @@
+ #endif
+
+ /* lbx_zlib.c */
+-unsigned long stream_out_compressed;
+-unsigned long stream_out_uncompressed;
+-unsigned long stream_out_plain;
+-unsigned long stream_in_compressed;
+-unsigned long stream_in_uncompressed;
+-unsigned long stream_in_plain;
++extern unsigned long stream_out_compressed;
++extern unsigned long stream_out_uncompressed;
++extern unsigned long stream_out_plain;
++extern unsigned long stream_in_compressed;
++extern unsigned long stream_in_uncompressed;
++extern unsigned long stream_in_plain;
diff --git a/user/libliftoff/APKBUILD b/user/libliftoff/APKBUILD
new file mode 100644
index 000000000..f20afd85f
--- /dev/null
+++ b/user/libliftoff/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=libliftoff
+pkgver=0.5.0
+pkgrel=0
+pkgdesc="A lightweight KMS plane library"
+url="https://gitlab.freedesktop.org/emersion/libliftoff"
+arch="all"
+license="MIT"
+depends=""
+makedepends="meson libdrm-dev"
+subpackages="$pkgname-dev"
+source="https://gitlab.freedesktop.org/emersion/libliftoff/-/releases/v$pkgver/downloads/libliftoff-$pkgver.tar.gz"
+
+build() {
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ . output
+ meson compile -C output
+}
+
+check() {
+ meson test -C output
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C output
+}
+
+sha512sums="ce808f6a087f1f629cfebef95bfc7e216a09fb409b96b3c9f6b84d9d986ce50c5d7bf5b45c68e8baa99566b3627d754c269855b6f4ec3be63ae7b9f5109d5f08 libliftoff-0.5.0.tar.gz"
diff --git a/user/liblxqt/APKBUILD b/user/liblxqt/APKBUILD
index 24765e4fc..5e50b5430 100644
--- a/user/liblxqt/APKBUILD
+++ b/user/liblxqt/APKBUILD
@@ -1,40 +1,41 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=liblxqt
-pkgver=0.14.1
+pkgver=1.4.0
+_lxqt=0.13.0
+_qtxdg=3.12.0
pkgrel=0
pkgdesc="Core LXQt library"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
arch="all"
options="!check" # No test suite.
license="LGPL-2.1+"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtx11extras-dev
- qt5-qttools-dev libxscrnsaver-dev libqtxdg-dev>=3.3.1
- kwindowsystem-dev polkit-qt-1-dev lxqt-build-tools>=0.6.0"
+ qt5-qttools-dev libxscrnsaver-dev libqtxdg-dev>=$_qtxdg
+ kwindowsystem-dev polkit-qt-1-dev lxqt-build-tools>=$_lxqt"
subpackages="$pkgname-dev"
-source="https://github.com/lxqt/liblxqt/releases/download/$pkgver/liblxqt-$pkgver.tar.xz"
+source="https://github.com/lxqt/liblxqt/releases/download/$pkgver/liblxqt-$pkgver.tar.xz
+ revert-kwindowsystem-bump.patch"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
-DBUILD_SHARED_LIBS=True \
- -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="28ce5e924d136f9907f84e40d4823c412df071009a9d5da4e061ce969d7575b21210d5178103f9bfc73baa87ccafc87dcb6e29a737467ca1a459c1fd3c1071ba liblxqt-0.14.1.tar.xz"
+sha512sums="2012bedab77fba7979d456c9e223e6a0a2f86c272d59eb66d3dbb4b028348972789249fa4a3889d419004210b7c5fcd1e989c196bb338ec8caa31bb0eca1d703 liblxqt-1.4.0.tar.xz
+5fe9aa14d80a567bf7674c170bc1de8b885029ceaabe555284b1e23c1b9ad46ee21a817431e05c61d938dcf8c5c767235d8a2df11bd8ab0a4588c4177e848dda revert-kwindowsystem-bump.patch"
diff --git a/user/liblxqt/revert-kwindowsystem-bump.patch b/user/liblxqt/revert-kwindowsystem-bump.patch
new file mode 100644
index 000000000..58419a801
--- /dev/null
+++ b/user/liblxqt/revert-kwindowsystem-bump.patch
@@ -0,0 +1,40 @@
+diff '--color=auto' -Nurd liblxqt-1.4.0/CMakeLists.txt liblxqt-1.4.0.new/CMakeLists.txt
+--- liblxqt-1.4.0/CMakeLists.txt 2023-11-05 02:54:50.000000000 -0800
++++ liblxqt-1.4.0.new/CMakeLists.txt 2023-11-27 06:01:14.963487658 -0800
+@@ -8,7 +8,7 @@
+
+
+ set(LXQTBT_MINIMUM_VERSION "0.13.0")
+-set(KF5_MINIMUM_VERSION "5.101.0")
++set(KF5_MINIMUM_VERSION "5.36.0")
+ set(QT_MINIMUM_VERSION "5.15.0")
+ set(QTXDG_MINIMUM_VERSION "3.12.0")
+
+diff '--color=auto' -Nurd liblxqt-1.4.0/lxqtsingleapplication.cpp liblxqt-1.4.0.new/lxqtsingleapplication.cpp
+--- liblxqt-1.4.0/lxqtsingleapplication.cpp 2023-11-05 02:54:50.000000000 -0800
++++ liblxqt-1.4.0.new/lxqtsingleapplication.cpp 2023-11-27 06:03:46.852519095 -0800
+@@ -28,7 +28,6 @@
+ #include "lxqtsingleapplication.h"
+ #include "singleapplicationadaptor.h"
+ #include <KWindowSystem/KWindowSystem>
+-#include <KWindowSystem/KX11Extras>
+ #include <QDBusMessage>
+ #include <QWidget>
+ #include <QDebug>
+@@ -99,13 +98,9 @@
+ KWindowInfo info(window, KWindowSystem::WMDesktop);
+ int windowDesktop = info.desktop();
+
+- if (windowDesktop != KX11Extras::currentDesktop())
+- KX11Extras::setCurrentDesktop(windowDesktop);
+-
+- if (QWindow *w = mActivationWindow->windowHandle())
+- KWindowSystem::activateWindow(w);
+- else
+- qDebug() << Q_FUNC_INFO << "Got null windowHandle";
++ if (windowDesktop != KWindowSystem::currentDesktop())
++ KWindowSystem::setCurrentDesktop(windowDesktop);
++ KWindowSystem::activateWindow(window);
+ } else {
+ qDebug() << Q_FUNC_INFO << "activationWindow not set or null";
+ }
diff --git a/user/libmad/APKBUILD b/user/libmad/APKBUILD
index 58da6a323..358496da1 100644
--- a/user/libmad/APKBUILD
+++ b/user/libmad/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer:
pkgname=libmad
pkgver=0.15.1b
-pkgrel=9
+pkgrel=1
pkgdesc="A high-quality MPEG audio decoder"
url="https://www.underbit.com/products/mad/"
arch="all"
@@ -15,12 +15,16 @@ source="https://downloads.sourceforge.net/sourceforge/mad/$pkgname-$pkgver.tar.g
libmad-0.15.1b-cflags-O2.patch
libmad-0.15.1b-cflags.patch
automake.patch
+ CVE-2018-7263.patch
Provide-Thumb-2-alternative-code-for-MAD_F_MLN.patch
mad.pc
"
+# secfixes:
+# 0.15.1b-r1:
+# - CVE-2018-7263
+
prepare() {
- cd "$builddir"
update_config_sub
default_prepare
libtoolize --force && aclocal -I m4 && autoconf \
@@ -28,7 +32,6 @@ prepare() {
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -39,7 +42,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -D -m644 "$srcdir"/mad.pc "$pkgdir"/usr/lib/pkgconfig/mad.pc
}
@@ -48,5 +50,6 @@ sha512sums="2cad30347fb310dc605c46bacd9da117f447a5cabedd8fefdb24ab5de641429e5ec5
13a8bac30cea4861f903b4abc8673f9a35b6253aae6a02915f99b67e5e8c56460fc1fb059a0aa52143b665f888928baba098daf0ed022420e46317be4dbc6161 libmad-0.15.1b-cflags-O2.patch
01dc8421dba2b652aa8ca6d1f1a5c310645465b18190ebfdeaae516de881869957e8e7c0c373d0d09623da33719d01e028f2f6164790b54c43a71271f5b4dbba libmad-0.15.1b-cflags.patch
e73ec5ae3b14e8d45579b52bcc561a309b85e1e51d946e061e2f0a9252f515e48e2d818e8bdce1adf5a9801ec314be8c911914d0bb12f9113a7afc54cf385250 automake.patch
+dd412962246d4c9db8c07dbafcaba2f64fdc0c94cf6bcc3f4f0f88a92800f40e550cc56dc8a2324c0123d9c70a89055dc50cd714206d7886e2f6877d4cc26600 CVE-2018-7263.patch
9e9af20050c922c1c2f0b55009ae0eb20c9381eaff071f0dfee8a7b3a357e58f835f69364beb99820f5672459d88ac483d2419e1f9532d763779aafad7cbf72b Provide-Thumb-2-alternative-code-for-MAD_F_MLN.patch
ec0b14bd0c6236a216107b507b92c06e295352f1657ba5e45f37fff220a73e1454b262ac36fc715d698c4ffd210d348fca71cf0198e2c49d16fe0ec5ea839f08 mad.pc"
diff --git a/user/libmad/CVE-2018-7263.patch b/user/libmad/CVE-2018-7263.patch
new file mode 100644
index 000000000..80e48469e
--- /dev/null
+++ b/user/libmad/CVE-2018-7263.patch
@@ -0,0 +1,817 @@
+From: Kurt Roeckx <kurt@roeckx.be>
+Date: Sun, 28 Jan 2018 19:26:36 +0100
+Subject: Check the size before reading with mad_bit_read
+
+There are various cases where it attemps to read past the end of the buffer
+using mad_bit_read(). Most functions didn't even know the size of the buffer
+they were reading from.
+
+Index: libmad-0.15.1b/bit.c
+===================================================================
+--- libmad-0.15.1b.orig/bit.c
++++ libmad-0.15.1b/bit.c
+@@ -138,6 +138,9 @@ unsigned long mad_bit_read(struct mad_bi
+ {
+ register unsigned long value;
+
++ if (len == 0)
++ return 0;
++
+ if (bitptr->left == CHAR_BIT)
+ bitptr->cache = *bitptr->byte;
+
+Index: libmad-0.15.1b/frame.c
+===================================================================
+--- libmad-0.15.1b.orig/frame.c
++++ libmad-0.15.1b/frame.c
+@@ -120,11 +120,18 @@ static
+ int decode_header(struct mad_header *header, struct mad_stream *stream)
+ {
+ unsigned int index;
++ struct mad_bitptr bufend_ptr;
+
+ header->flags = 0;
+ header->private_bits = 0;
+
++ mad_bit_init(&bufend_ptr, stream->bufend);
++
+ /* header() */
++ if (mad_bit_length(&stream->ptr, &bufend_ptr) < 32) {
++ stream->error = MAD_ERROR_BUFLEN;
++ return -1;
++ }
+
+ /* syncword */
+ mad_bit_skip(&stream->ptr, 11);
+@@ -225,8 +232,13 @@ int decode_header(struct mad_header *hea
+ /* error_check() */
+
+ /* crc_check */
+- if (header->flags & MAD_FLAG_PROTECTION)
++ if (header->flags & MAD_FLAG_PROTECTION) {
++ if (mad_bit_length(&stream->ptr, &bufend_ptr) < 16) {
++ stream->error = MAD_ERROR_BUFLEN;
++ return -1;
++ }
+ header->crc_target = mad_bit_read(&stream->ptr, 16);
++ }
+
+ return 0;
+ }
+@@ -338,7 +350,7 @@ int mad_header_decode(struct mad_header
+ stream->error = MAD_ERROR_BUFLEN;
+ goto fail;
+ }
+- else if (!(ptr[0] == 0xff && (ptr[1] & 0xe0) == 0xe0)) {
++ else if ((end - ptr >= 2) && !(ptr[0] == 0xff && (ptr[1] & 0xe0) == 0xe0)) {
+ /* mark point where frame sync word was expected */
+ stream->this_frame = ptr;
+ stream->next_frame = ptr + 1;
+@@ -361,6 +373,8 @@ int mad_header_decode(struct mad_header
+ ptr = mad_bit_nextbyte(&stream->ptr);
+ }
+
++ stream->error = MAD_ERROR_NONE;
++
+ /* begin processing */
+ stream->this_frame = ptr;
+ stream->next_frame = ptr + 1; /* possibly bogus sync word */
+@@ -413,7 +427,7 @@ int mad_header_decode(struct mad_header
+ /* check that a valid frame header follows this frame */
+
+ ptr = stream->next_frame;
+- if (!(ptr[0] == 0xff && (ptr[1] & 0xe0) == 0xe0)) {
++ if ((end - ptr >= 2) && !(ptr[0] == 0xff && (ptr[1] & 0xe0) == 0xe0)) {
+ ptr = stream->next_frame = stream->this_frame + 1;
+ goto sync;
+ }
+Index: libmad-0.15.1b/layer12.c
+===================================================================
+--- libmad-0.15.1b.orig/layer12.c
++++ libmad-0.15.1b/layer12.c
+@@ -72,10 +72,18 @@ mad_fixed_t const linear_table[14] = {
+ * DESCRIPTION: decode one requantized Layer I sample from a bitstream
+ */
+ static
+-mad_fixed_t I_sample(struct mad_bitptr *ptr, unsigned int nb)
++mad_fixed_t I_sample(struct mad_bitptr *ptr, unsigned int nb, struct mad_stream *stream)
+ {
+ mad_fixed_t sample;
++ struct mad_bitptr frameend_ptr;
+
++ mad_bit_init(&frameend_ptr, stream->next_frame);
++
++ if (mad_bit_length(ptr, &frameend_ptr) < nb) {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return 0;
++ }
+ sample = mad_bit_read(ptr, nb);
+
+ /* invert most significant bit, extend sign, then scale to fixed format */
+@@ -106,6 +114,10 @@ int mad_layer_I(struct mad_stream *strea
+ struct mad_header *header = &frame->header;
+ unsigned int nch, bound, ch, s, sb, nb;
+ unsigned char allocation[2][32], scalefactor[2][32];
++ struct mad_bitptr bufend_ptr, frameend_ptr;
++
++ mad_bit_init(&bufend_ptr, stream->bufend);
++ mad_bit_init(&frameend_ptr, stream->next_frame);
+
+ nch = MAD_NCHANNELS(header);
+
+@@ -118,6 +130,11 @@ int mad_layer_I(struct mad_stream *strea
+ /* check CRC word */
+
+ if (header->flags & MAD_FLAG_PROTECTION) {
++ if (mad_bit_length(&stream->ptr, &bufend_ptr)
++ < 4 * (bound * nch + (32 - bound))) {
++ stream->error = MAD_ERROR_BADCRC;
++ return -1;
++ }
+ header->crc_check =
+ mad_bit_crc(stream->ptr, 4 * (bound * nch + (32 - bound)),
+ header->crc_check);
+@@ -133,6 +150,11 @@ int mad_layer_I(struct mad_stream *strea
+
+ for (sb = 0; sb < bound; ++sb) {
+ for (ch = 0; ch < nch; ++ch) {
++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < 4) {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+ nb = mad_bit_read(&stream->ptr, 4);
+
+ if (nb == 15) {
+@@ -145,6 +167,11 @@ int mad_layer_I(struct mad_stream *strea
+ }
+
+ for (sb = bound; sb < 32; ++sb) {
++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < 4) {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+ nb = mad_bit_read(&stream->ptr, 4);
+
+ if (nb == 15) {
+@@ -161,6 +188,11 @@ int mad_layer_I(struct mad_stream *strea
+ for (sb = 0; sb < 32; ++sb) {
+ for (ch = 0; ch < nch; ++ch) {
+ if (allocation[ch][sb]) {
++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < 6) {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+ scalefactor[ch][sb] = mad_bit_read(&stream->ptr, 6);
+
+ # if defined(OPT_STRICT)
+@@ -185,8 +217,10 @@ int mad_layer_I(struct mad_stream *strea
+ for (ch = 0; ch < nch; ++ch) {
+ nb = allocation[ch][sb];
+ frame->sbsample[ch][s][sb] = nb ?
+- mad_f_mul(I_sample(&stream->ptr, nb),
++ mad_f_mul(I_sample(&stream->ptr, nb, stream),
+ sf_table[scalefactor[ch][sb]]) : 0;
++ if (stream->error != 0)
++ return -1;
+ }
+ }
+
+@@ -194,7 +228,14 @@ int mad_layer_I(struct mad_stream *strea
+ if ((nb = allocation[0][sb])) {
+ mad_fixed_t sample;
+
+- sample = I_sample(&stream->ptr, nb);
++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < nb) {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
++ sample = I_sample(&stream->ptr, nb, stream);
++ if (stream->error != 0)
++ return -1;
+
+ for (ch = 0; ch < nch; ++ch) {
+ frame->sbsample[ch][s][sb] =
+@@ -280,13 +321,21 @@ struct quantclass {
+ static
+ void II_samples(struct mad_bitptr *ptr,
+ struct quantclass const *quantclass,
+- mad_fixed_t output[3])
++ mad_fixed_t output[3], struct mad_stream *stream)
+ {
+ unsigned int nb, s, sample[3];
++ struct mad_bitptr frameend_ptr;
++
++ mad_bit_init(&frameend_ptr, stream->next_frame);
+
+ if ((nb = quantclass->group)) {
+ unsigned int c, nlevels;
+
++ if (mad_bit_length(ptr, &frameend_ptr) < quantclass->bits) {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return;
++ }
+ /* degrouping */
+ c = mad_bit_read(ptr, quantclass->bits);
+ nlevels = quantclass->nlevels;
+@@ -299,8 +348,14 @@ void II_samples(struct mad_bitptr *ptr,
+ else {
+ nb = quantclass->bits;
+
+- for (s = 0; s < 3; ++s)
++ for (s = 0; s < 3; ++s) {
++ if (mad_bit_length(ptr, &frameend_ptr) < nb) {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return;
++ }
+ sample[s] = mad_bit_read(ptr, nb);
++ }
+ }
+
+ for (s = 0; s < 3; ++s) {
+@@ -336,6 +391,9 @@ int mad_layer_II(struct mad_stream *stre
+ unsigned char const *offsets;
+ unsigned char allocation[2][32], scfsi[2][32], scalefactor[2][32][3];
+ mad_fixed_t samples[3];
++ struct mad_bitptr frameend_ptr;
++
++ mad_bit_init(&frameend_ptr, stream->next_frame);
+
+ nch = MAD_NCHANNELS(header);
+
+@@ -402,13 +460,24 @@ int mad_layer_II(struct mad_stream *stre
+ for (sb = 0; sb < bound; ++sb) {
+ nbal = bitalloc_table[offsets[sb]].nbal;
+
+- for (ch = 0; ch < nch; ++ch)
++ for (ch = 0; ch < nch; ++ch) {
++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < nbal) {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+ allocation[ch][sb] = mad_bit_read(&stream->ptr, nbal);
++ }
+ }
+
+ for (sb = bound; sb < sblimit; ++sb) {
+ nbal = bitalloc_table[offsets[sb]].nbal;
+
++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < nbal) {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+ allocation[0][sb] =
+ allocation[1][sb] = mad_bit_read(&stream->ptr, nbal);
+ }
+@@ -417,8 +486,14 @@ int mad_layer_II(struct mad_stream *stre
+
+ for (sb = 0; sb < sblimit; ++sb) {
+ for (ch = 0; ch < nch; ++ch) {
+- if (allocation[ch][sb])
++ if (allocation[ch][sb]) {
++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < 2) {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+ scfsi[ch][sb] = mad_bit_read(&stream->ptr, 2);
++ }
+ }
+ }
+
+@@ -441,6 +516,11 @@ int mad_layer_II(struct mad_stream *stre
+ for (sb = 0; sb < sblimit; ++sb) {
+ for (ch = 0; ch < nch; ++ch) {
+ if (allocation[ch][sb]) {
++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < 6) {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+ scalefactor[ch][sb][0] = mad_bit_read(&stream->ptr, 6);
+
+ switch (scfsi[ch][sb]) {
+@@ -451,11 +531,21 @@ int mad_layer_II(struct mad_stream *stre
+ break;
+
+ case 0:
++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < 6) {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+ scalefactor[ch][sb][1] = mad_bit_read(&stream->ptr, 6);
+ /* fall through */
+
+ case 1:
+ case 3:
++ if (mad_bit_length(&stream->ptr, &frameend_ptr) < 6) {
++ stream->error = MAD_ERROR_LOSTSYNC;
++ stream->sync = 0;
++ return -1;
++ }
+ scalefactor[ch][sb][2] = mad_bit_read(&stream->ptr, 6);
+ }
+
+@@ -487,7 +577,9 @@ int mad_layer_II(struct mad_stream *stre
+ if ((index = allocation[ch][sb])) {
+ index = offset_table[bitalloc_table[offsets[sb]].offset][index - 1];
+
+- II_samples(&stream->ptr, &qc_table[index], samples);
++ II_samples(&stream->ptr, &qc_table[index], samples, stream);
++ if (stream->error != 0)
++ return -1;
+
+ for (s = 0; s < 3; ++s) {
+ frame->sbsample[ch][3 * gr + s][sb] =
+@@ -505,7 +597,9 @@ int mad_layer_II(struct mad_stream *stre
+ if ((index = allocation[0][sb])) {
+ index = offset_table[bitalloc_table[offsets[sb]].offset][index - 1];
+
+- II_samples(&stream->ptr, &qc_table[index], samples);
++ II_samples(&stream->ptr, &qc_table[index], samples, stream);
++ if (stream->error != 0)
++ return -1;
+
+ for (ch = 0; ch < nch; ++ch) {
+ for (s = 0; s < 3; ++s) {
+Index: libmad-0.15.1b/layer3.c
+===================================================================
+--- libmad-0.15.1b.orig/layer3.c
++++ libmad-0.15.1b/layer3.c
+@@ -598,7 +598,8 @@ enum mad_error III_sideinfo(struct mad_b
+ static
+ unsigned int III_scalefactors_lsf(struct mad_bitptr *ptr,
+ struct channel *channel,
+- struct channel *gr1ch, int mode_extension)
++ struct channel *gr1ch, int mode_extension,
++ unsigned int bits_left, unsigned int *part2_length)
+ {
+ struct mad_bitptr start;
+ unsigned int scalefac_compress, index, slen[4], part, n, i;
+@@ -644,8 +645,12 @@ unsigned int III_scalefactors_lsf(struct
+
+ n = 0;
+ for (part = 0; part < 4; ++part) {
+- for (i = 0; i < nsfb[part]; ++i)
++ for (i = 0; i < nsfb[part]; ++i) {
++ if (bits_left < slen[part])
++ return MAD_ERROR_BADSCFSI;
+ channel->scalefac[n++] = mad_bit_read(ptr, slen[part]);
++ bits_left -= slen[part];
++ }
+ }
+
+ while (n < 39)
+@@ -690,7 +695,10 @@ unsigned int III_scalefactors_lsf(struct
+ max = (1 << slen[part]) - 1;
+
+ for (i = 0; i < nsfb[part]; ++i) {
++ if (bits_left < slen[part])
++ return MAD_ERROR_BADSCFSI;
+ is_pos = mad_bit_read(ptr, slen[part]);
++ bits_left -= slen[part];
+
+ channel->scalefac[n] = is_pos;
+ gr1ch->scalefac[n++] = (is_pos == max);
+@@ -703,7 +711,8 @@ unsigned int III_scalefactors_lsf(struct
+ }
+ }
+
+- return mad_bit_length(&start, ptr);
++ *part2_length = mad_bit_length(&start, ptr);
++ return MAD_ERROR_NONE;
+ }
+
+ /*
+@@ -712,7 +721,8 @@ unsigned int III_scalefactors_lsf(struct
+ */
+ static
+ unsigned int III_scalefactors(struct mad_bitptr *ptr, struct channel *channel,
+- struct channel const *gr0ch, unsigned int scfsi)
++ struct channel const *gr0ch, unsigned int scfsi,
++ unsigned int bits_left, unsigned int *part2_length)
+ {
+ struct mad_bitptr start;
+ unsigned int slen1, slen2, sfbi;
+@@ -728,12 +738,20 @@ unsigned int III_scalefactors(struct mad
+ sfbi = 0;
+
+ nsfb = (channel->flags & mixed_block_flag) ? 8 + 3 * 3 : 6 * 3;
+- while (nsfb--)
++ while (nsfb--) {
++ if (bits_left < slen1)
++ return MAD_ERROR_BADSCFSI;
+ channel->scalefac[sfbi++] = mad_bit_read(ptr, slen1);
++ bits_left -= slen1;
++ }
+
+ nsfb = 6 * 3;
+- while (nsfb--)
++ while (nsfb--) {
++ if (bits_left < slen2)
++ return MAD_ERROR_BADSCFSI;
+ channel->scalefac[sfbi++] = mad_bit_read(ptr, slen2);
++ bits_left -= slen2;
++ }
+
+ nsfb = 1 * 3;
+ while (nsfb--)
+@@ -745,8 +763,12 @@ unsigned int III_scalefactors(struct mad
+ channel->scalefac[sfbi] = gr0ch->scalefac[sfbi];
+ }
+ else {
+- for (sfbi = 0; sfbi < 6; ++sfbi)
++ for (sfbi = 0; sfbi < 6; ++sfbi) {
++ if (bits_left < slen1)
++ return MAD_ERROR_BADSCFSI;
+ channel->scalefac[sfbi] = mad_bit_read(ptr, slen1);
++ bits_left -= slen1;
++ }
+ }
+
+ if (scfsi & 0x4) {
+@@ -754,8 +776,12 @@ unsigned int III_scalefactors(struct mad
+ channel->scalefac[sfbi] = gr0ch->scalefac[sfbi];
+ }
+ else {
+- for (sfbi = 6; sfbi < 11; ++sfbi)
++ for (sfbi = 6; sfbi < 11; ++sfbi) {
++ if (bits_left < slen1)
++ return MAD_ERROR_BADSCFSI;
+ channel->scalefac[sfbi] = mad_bit_read(ptr, slen1);
++ bits_left -= slen1;
++ }
+ }
+
+ if (scfsi & 0x2) {
+@@ -763,8 +789,12 @@ unsigned int III_scalefactors(struct mad
+ channel->scalefac[sfbi] = gr0ch->scalefac[sfbi];
+ }
+ else {
+- for (sfbi = 11; sfbi < 16; ++sfbi)
++ for (sfbi = 11; sfbi < 16; ++sfbi) {
++ if (bits_left < slen2)
++ return MAD_ERROR_BADSCFSI;
+ channel->scalefac[sfbi] = mad_bit_read(ptr, slen2);
++ bits_left -= slen2;
++ }
+ }
+
+ if (scfsi & 0x1) {
+@@ -772,14 +802,19 @@ unsigned int III_scalefactors(struct mad
+ channel->scalefac[sfbi] = gr0ch->scalefac[sfbi];
+ }
+ else {
+- for (sfbi = 16; sfbi < 21; ++sfbi)
++ for (sfbi = 16; sfbi < 21; ++sfbi) {
++ if (bits_left < slen2)
++ return MAD_ERROR_BADSCFSI;
+ channel->scalefac[sfbi] = mad_bit_read(ptr, slen2);
++ bits_left -= slen2;
++ }
+ }
+
+ channel->scalefac[21] = 0;
+ }
+
+- return mad_bit_length(&start, ptr);
++ *part2_length = mad_bit_length(&start, ptr);
++ return MAD_ERROR_NONE;
+ }
+
+ /*
+@@ -933,19 +968,17 @@ static
+ enum mad_error III_huffdecode(struct mad_bitptr *ptr, mad_fixed_t xr[576],
+ struct channel *channel,
+ unsigned char const *sfbwidth,
+- unsigned int part2_length)
++ signed int part3_length)
+ {
+ signed int exponents[39], exp;
+ signed int const *expptr;
+ struct mad_bitptr peek;
+- signed int bits_left, cachesz;
++ signed int bits_left, cachesz, fakebits;
+ register mad_fixed_t *xrptr;
+ mad_fixed_t const *sfbound;
+ register unsigned long bitcache;
+
+- bits_left = (signed) channel->part2_3_length - (signed) part2_length;
+- if (bits_left < 0)
+- return MAD_ERROR_BADPART3LEN;
++ bits_left = part3_length;
+
+ III_exponents(channel, sfbwidth, exponents);
+
+@@ -956,8 +989,12 @@ enum mad_error III_huffdecode(struct mad
+ cachesz = mad_bit_bitsleft(&peek);
+ cachesz += ((32 - 1 - 24) + (24 - cachesz)) & ~7;
+
++ if (bits_left < cachesz) {
++ cachesz = bits_left;
++ }
+ bitcache = mad_bit_read(&peek, cachesz);
+ bits_left -= cachesz;
++ fakebits = 0;
+
+ xrptr = &xr[0];
+
+@@ -986,7 +1023,7 @@ enum mad_error III_huffdecode(struct mad
+
+ big_values = channel->big_values;
+
+- while (big_values-- && cachesz + bits_left > 0) {
++ while (big_values-- && cachesz + bits_left - fakebits > 0) {
+ union huffpair const *pair;
+ unsigned int clumpsz, value;
+ register mad_fixed_t requantized;
+@@ -1023,10 +1060,19 @@ enum mad_error III_huffdecode(struct mad
+ unsigned int bits;
+
+ bits = ((32 - 1 - 21) + (21 - cachesz)) & ~7;
++ if (bits_left < bits) {
++ bits = bits_left;
++ }
+ bitcache = (bitcache << bits) | mad_bit_read(&peek, bits);
+ cachesz += bits;
+ bits_left -= bits;
+ }
++ if (cachesz < 21) {
++ unsigned int bits = 21 - cachesz;
++ bitcache <<= bits;
++ cachesz += bits;
++ fakebits += bits;
++ }
+
+ /* hcod (0..19) */
+
+@@ -1041,6 +1087,8 @@ enum mad_error III_huffdecode(struct mad
+ }
+
+ cachesz -= pair->value.hlen;
++ if (cachesz < fakebits)
++ return MAD_ERROR_BADHUFFDATA;
+
+ if (linbits) {
+ /* x (0..14) */
+@@ -1054,10 +1102,15 @@ enum mad_error III_huffdecode(struct mad
+
+ case 15:
+ if (cachesz < linbits + 2) {
+- bitcache = (bitcache << 16) | mad_bit_read(&peek, 16);
+- cachesz += 16;
+- bits_left -= 16;
++ unsigned int bits = 16;
++ if (bits_left < 16)
++ bits = bits_left;
++ bitcache = (bitcache << bits) | mad_bit_read(&peek, bits);
++ cachesz += bits;
++ bits_left -= bits;
+ }
++ if (cachesz - fakebits < linbits)
++ return MAD_ERROR_BADHUFFDATA;
+
+ value += MASK(bitcache, cachesz, linbits);
+ cachesz -= linbits;
+@@ -1074,6 +1127,8 @@ enum mad_error III_huffdecode(struct mad
+ }
+
+ x_final:
++ if (cachesz - fakebits < 1)
++ return MAD_ERROR_BADHUFFDATA;
+ xrptr[0] = MASK1BIT(bitcache, cachesz--) ?
+ -requantized : requantized;
+ }
+@@ -1089,10 +1144,15 @@ enum mad_error III_huffdecode(struct mad
+
+ case 15:
+ if (cachesz < linbits + 1) {
+- bitcache = (bitcache << 16) | mad_bit_read(&peek, 16);
+- cachesz += 16;
+- bits_left -= 16;
++ unsigned int bits = 16;
++ if (bits_left < 16)
++ bits = bits_left;
++ bitcache = (bitcache << bits) | mad_bit_read(&peek, bits);
++ cachesz += bits;
++ bits_left -= bits;
+ }
++ if (cachesz - fakebits < linbits)
++ return MAD_ERROR_BADHUFFDATA;
+
+ value += MASK(bitcache, cachesz, linbits);
+ cachesz -= linbits;
+@@ -1109,6 +1169,8 @@ enum mad_error III_huffdecode(struct mad
+ }
+
+ y_final:
++ if (cachesz - fakebits < 1)
++ return MAD_ERROR_BADHUFFDATA;
+ xrptr[1] = MASK1BIT(bitcache, cachesz--) ?
+ -requantized : requantized;
+ }
+@@ -1128,6 +1190,8 @@ enum mad_error III_huffdecode(struct mad
+ requantized = reqcache[value] = III_requantize(value, exp);
+ }
+
++ if (cachesz - fakebits < 1)
++ return MAD_ERROR_BADHUFFDATA;
+ xrptr[0] = MASK1BIT(bitcache, cachesz--) ?
+ -requantized : requantized;
+ }
+@@ -1146,6 +1210,8 @@ enum mad_error III_huffdecode(struct mad
+ requantized = reqcache[value] = III_requantize(value, exp);
+ }
+
++ if (cachesz - fakebits < 1)
++ return MAD_ERROR_BADHUFFDATA;
+ xrptr[1] = MASK1BIT(bitcache, cachesz--) ?
+ -requantized : requantized;
+ }
+@@ -1155,9 +1221,6 @@ enum mad_error III_huffdecode(struct mad
+ }
+ }
+
+- if (cachesz + bits_left < 0)
+- return MAD_ERROR_BADHUFFDATA; /* big_values overrun */
+-
+ /* count1 */
+ {
+ union huffquad const *table;
+@@ -1167,15 +1230,24 @@ enum mad_error III_huffdecode(struct mad
+
+ requantized = III_requantize(1, exp);
+
+- while (cachesz + bits_left > 0 && xrptr <= &xr[572]) {
++ while (cachesz + bits_left - fakebits > 0 && xrptr <= &xr[572]) {
+ union huffquad const *quad;
+
+ /* hcod (1..6) */
+
+ if (cachesz < 10) {
+- bitcache = (bitcache << 16) | mad_bit_read(&peek, 16);
+- cachesz += 16;
+- bits_left -= 16;
++ unsigned int bits = 16;
++ if (bits_left < 16)
++ bits = bits_left;
++ bitcache = (bitcache << bits) | mad_bit_read(&peek, bits);
++ cachesz += bits;
++ bits_left -= bits;
++ }
++ if (cachesz < 10) {
++ unsigned int bits = 10 - cachesz;
++ bitcache <<= bits;
++ cachesz += bits;
++ fakebits += bits;
+ }
+
+ quad = &table[MASK(bitcache, cachesz, 4)];
+@@ -1188,6 +1260,11 @@ enum mad_error III_huffdecode(struct mad
+ MASK(bitcache, cachesz, quad->ptr.bits)];
+ }
+
++ if (cachesz - fakebits < quad->value.hlen + quad->value.v
++ + quad->value.w + quad->value.x + quad->value.y)
++ /* We don't have enough bits to read one more entry, consider them
++ * stuffing bits. */
++ break;
+ cachesz -= quad->value.hlen;
+
+ if (xrptr == sfbound) {
+@@ -1236,22 +1313,8 @@ enum mad_error III_huffdecode(struct mad
+
+ xrptr += 2;
+ }
+-
+- if (cachesz + bits_left < 0) {
+-# if 0 && defined(DEBUG)
+- fprintf(stderr, "huffman count1 overrun (%d bits)\n",
+- -(cachesz + bits_left));
+-# endif
+-
+- /* technically the bitstream is misformatted, but apparently
+- some encoders are just a bit sloppy with stuffing bits */
+-
+- xrptr -= 4;
+- }
+ }
+
+- assert(-bits_left <= MAD_BUFFER_GUARD * CHAR_BIT);
+-
+ # if 0 && defined(DEBUG)
+ if (bits_left < 0)
+ fprintf(stderr, "read %d bits too many\n", -bits_left);
+@@ -2348,10 +2411,11 @@ void III_freqinver(mad_fixed_t sample[18
+ */
+ static
+ enum mad_error III_decode(struct mad_bitptr *ptr, struct mad_frame *frame,
+- struct sideinfo *si, unsigned int nch)
++ struct sideinfo *si, unsigned int nch, unsigned int md_len)
+ {
+ struct mad_header *header = &frame->header;
+ unsigned int sfreqi, ngr, gr;
++ int bits_left = md_len * CHAR_BIT;
+
+ {
+ unsigned int sfreq;
+@@ -2383,6 +2447,7 @@ enum mad_error III_decode(struct mad_bit
+ for (ch = 0; ch < nch; ++ch) {
+ struct channel *channel = &granule->ch[ch];
+ unsigned int part2_length;
++ unsigned int part3_length;
+
+ sfbwidth[ch] = sfbwidth_table[sfreqi].l;
+ if (channel->block_type == 2) {
+@@ -2391,18 +2456,30 @@ enum mad_error III_decode(struct mad_bit
+ }
+
+ if (header->flags & MAD_FLAG_LSF_EXT) {
+- part2_length = III_scalefactors_lsf(ptr, channel,
++ error = III_scalefactors_lsf(ptr, channel,
+ ch == 0 ? 0 : &si->gr[1].ch[1],
+- header->mode_extension);
++ header->mode_extension, bits_left, &part2_length);
+ }
+ else {
+- part2_length = III_scalefactors(ptr, channel, &si->gr[0].ch[ch],
+- gr == 0 ? 0 : si->scfsi[ch]);
++ error = III_scalefactors(ptr, channel, &si->gr[0].ch[ch],
++ gr == 0 ? 0 : si->scfsi[ch], bits_left, &part2_length);
+ }
++ if (error)
++ return error;
++
++ bits_left -= part2_length;
+
+- error = III_huffdecode(ptr, xr[ch], channel, sfbwidth[ch], part2_length);
++ if (part2_length > channel->part2_3_length)
++ return MAD_ERROR_BADPART3LEN;
++
++ part3_length = channel->part2_3_length - part2_length;
++ if (part3_length > bits_left)
++ return MAD_ERROR_BADPART3LEN;
++
++ error = III_huffdecode(ptr, xr[ch], channel, sfbwidth[ch], part3_length);
+ if (error)
+ return error;
++ bits_left -= part3_length;
+ }
+
+ /* joint stereo processing */
+@@ -2519,11 +2596,13 @@ int mad_layer_III(struct mad_stream *str
+ unsigned int nch, priv_bitlen, next_md_begin = 0;
+ unsigned int si_len, data_bitlen, md_len;
+ unsigned int frame_space, frame_used, frame_free;
+- struct mad_bitptr ptr;
++ struct mad_bitptr ptr, bufend_ptr;
+ struct sideinfo si;
+ enum mad_error error;
+ int result = 0;
+
++ mad_bit_init(&bufend_ptr, stream->bufend);
++
+ /* allocate Layer III dynamic structures */
+
+ if (stream->main_data == 0) {
+@@ -2587,14 +2666,15 @@ int mad_layer_III(struct mad_stream *str
+ unsigned long header;
+
+ mad_bit_init(&peek, stream->next_frame);
++ if (mad_bit_length(&peek, &bufend_ptr) >= 57) {
++ header = mad_bit_read(&peek, 32);
++ if ((header & 0xffe60000L) /* syncword | layer */ == 0xffe20000L) {
++ if (!(header & 0x00010000L)) /* protection_bit */
++ mad_bit_skip(&peek, 16); /* crc_check */
+
+- header = mad_bit_read(&peek, 32);
+- if ((header & 0xffe60000L) /* syncword | layer */ == 0xffe20000L) {
+- if (!(header & 0x00010000L)) /* protection_bit */
+- mad_bit_skip(&peek, 16); /* crc_check */
+-
+- next_md_begin =
+- mad_bit_read(&peek, (header & 0x00080000L) /* ID */ ? 9 : 8);
++ next_md_begin =
++ mad_bit_read(&peek, (header & 0x00080000L) /* ID */ ? 9 : 8);
++ }
+ }
+
+ mad_bit_finish(&peek);
+@@ -2653,7 +2733,7 @@ int mad_layer_III(struct mad_stream *str
+ /* decode main_data */
+
+ if (result == 0) {
+- error = III_decode(&ptr, frame, &si, nch);
++ error = III_decode(&ptr, frame, &si, nch, md_len);
+ if (error) {
+ stream->error = error;
+ result = -1;
diff --git a/user/libmatekbd/APKBUILD b/user/libmatekbd/APKBUILD
index f7ea8d723..f72806b66 100644
--- a/user/libmatekbd/APKBUILD
+++ b/user/libmatekbd/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libmatekbd
-pkgver=1.22.0
+pkgver=1.26.1
pkgrel=0
pkgdesc="Keyboard libraries for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -14,7 +14,6 @@ subpackages="$pkgname-dev $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/libmatekbd-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="79f19455bb6c0df5a50e445907ac12d6bd92a54cd086e0303890bc67350de3d94b2fd665efdaec85f84a42d76af430ad0a1b9639da078179ac25d27c4a325281 libmatekbd-1.22.0.tar.xz"
+sha512sums="bf522d89cf32aea34ecc0e6df6b8cdedf6018b4e3abd935b5f32926b8b546bb85fcf4d2d3dcc1ec16bda38cd2bc69df16b39dd42b7ce32069cb34f682fdc38fd libmatekbd-1.26.1.tar.xz"
diff --git a/user/libmatemixer/APKBUILD b/user/libmatemixer/APKBUILD
index a3b1fc797..d32485009 100644
--- a/user/libmatemixer/APKBUILD
+++ b/user/libmatemixer/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libmatemixer
-pkgver=1.22.0
+pkgver=1.26.1
pkgrel=0
pkgdesc="Sound mixer library for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -9,11 +9,11 @@ arch="all"
license="LGPL-2.0+"
depends=""
makedepends="alsa-lib-dev intltool pulseaudio-dev"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-alsa $pkgname-pulse"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang
+ $pkgname-alsa $pkgname-pulse"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/libmatemixer-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,12 +25,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -48,4 +46,4 @@ pulse() {
mv "$pkgdir"/usr/lib/$pkgname/$pkgname-pulse.so "$subpkgdir"/usr/lib/$pkgname
}
-sha512sums="6eaa006142601c077ac70739e637273288a4b9713dfc4179341c4832ae4e3b362e92104e150132ee274224d6c5dc057d812b7e1814e49a7690581de6d81e0db8 libmatemixer-1.22.0.tar.xz"
+sha512sums="a67a63bbf76b69ba78a537f7690230f45c5875b4358991e73604aacf001baa40ee994101d486218be8000be43be6561b6f25f4f38ae00310c5a08affb6dafbdb libmatemixer-1.26.1.tar.xz"
diff --git a/user/libmateweather/APKBUILD b/user/libmateweather/APKBUILD
index 3d6f9573d..a7fdb3e04 100644
--- a/user/libmateweather/APKBUILD
+++ b/user/libmateweather/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libmateweather
-pkgver=1.22.0
+pkgver=1.26.1
pkgrel=0
pkgdesc="Weather library for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -13,25 +13,24 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/libmateweather-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var
+ --localstatedir=/var \
+ --with-zoneinfo-dir \
+ --enable-all-translations-in-one-xml
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="43371fc615dda2b9042633a63ac4c1fb0b1ea43b20c783e443b0f57e10ad8fddedbd593f03bd6c942729f0a9c80484266fe1ef900d128fa4b02f80d6a80ae9bd libmateweather-1.22.0.tar.xz"
+sha512sums="98cf2363c0bc75341d206d8848484e44665a35e3f01e7f75510555ab341fe06a3c96ea8e1844b17d5da7bc5a172cb18b594c8edfeb28ca8e25a82149ae508748 libmateweather-1.26.1.tar.xz"
diff --git a/user/libmatroska/APKBUILD b/user/libmatroska/APKBUILD
index 85e521369..de30dc6ba 100644
--- a/user/libmatroska/APKBUILD
+++ b/user/libmatroska/APKBUILD
@@ -1,32 +1,31 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer:
pkgname=libmatroska
-pkgver=1.5.0
+pkgver=1.6.2
pkgrel=0
pkgdesc="Library to parse Matroska files"
url="https://www.matroska.org/"
arch="all"
options="!check" # No test suite.
license="LGPL-2.1+"
-makedepends="libebml-dev>=1.3.3"
+depends=""
+makedepends="cmake libebml-dev>=1.3.3"
subpackages="$pkgname-dev"
source="https://dl.matroska.org/downloads/$pkgname/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
- -DCMAKE_C_FLAGS="$CFLAGS"
+ -DCMAKE_C_FLAGS="$CFLAGS" .
make
}
package() {
- cd "$builddir"
make install DESTDIR="$pkgdir"
}
-sha512sums="eb59b5afd9d510c2d6c7408b0053a261cee6669a9f5bbb1a939d98d96ac6c9b8f340691e95310268f59c954a1d9f72322fd0ec7b442a74c56cd2e2c22eb3a754 libmatroska-1.5.0.tar.xz"
+sha512sums="c0b2b475f01e01b064348e96a4cd25f594e93b21ab6f66236d6872d1242b6076d501c155a19dedd642ded8338c0a71be09450fc086e77802099413c8849abab1 libmatroska-1.6.2.tar.xz"
diff --git a/user/libmaxminddb/APKBUILD b/user/libmaxminddb/APKBUILD
new file mode 100644
index 000000000..c03397a46
--- /dev/null
+++ b/user/libmaxminddb/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: Alyx Wolcott <alyx@leuhta.com>
+# Maintainer: Alyx Wolcott <alyx@leuhta.com>
+pkgname=libmaxminddb
+pkgver=1.4.3
+pkgrel=0
+pkgdesc="Library for the MaxMind DB file format"
+url="http://maxmind.github.io/libmaxminddb/"
+arch="all"
+license="Apache-2.0"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/maxmind/libmaxminddb/releases/download/$pkgver/$pkgname-$pkgver.tar.gz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="7fd97678ea6ca41cc4530864276b0233acbb16208571dc4694902943b3aa7e97c683c5676ea3f2de948c67aebd083f5d073b9ae36b7e89059c17f797ffddf65e libmaxminddb-1.4.3.tar.gz"
diff --git a/user/libmbim/APKBUILD b/user/libmbim/APKBUILD
new file mode 100644
index 000000000..360392390
--- /dev/null
+++ b/user/libmbim/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libmbim
+pkgver=1.22.0
+pkgrel=0
+pkgdesc="Library for interfacing with WWAN modems"
+url="https://www.freedesktop.org/wiki/Software/libmbim/"
+arch="all"
+license="GPL-2.0+ AND LGPL-2.0+"
+depends=""
+makedepends="glib-dev libgudev-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://www.freedesktop.org/software/libmbim/libmbim-$pkgver.tar.xz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --disable-more-warnings
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="ec7ecf1c65dd7b6017cc3e91eadd6700a954065d070640ab97e583b1791cc315133dd6c882f569fff2efe1f56e3766821533c20d814fe7db75aeb0bbcd7ed3ee libmbim-1.22.0.tar.xz"
diff --git a/user/libmms/APKBUILD b/user/libmms/APKBUILD
index 85cec3b25..f4be5ae70 100644
--- a/user/libmms/APKBUILD
+++ b/user/libmms/APKBUILD
@@ -1,4 +1,4 @@
-# Contributor: Carlo Landmeter
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=libmms
pkgver=0.6.4
@@ -16,13 +16,11 @@ source="https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz
"
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -35,7 +33,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libmowgli/APKBUILD b/user/libmowgli/APKBUILD
index e951bcf03..0e92e8ede 100644
--- a/user/libmowgli/APKBUILD
+++ b/user/libmowgli/APKBUILD
@@ -1,10 +1,10 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libmowgli
pkgver=2.1.3
pkgrel=1
pkgdesc="C library framework designed to reduce writing of boilerplate code"
-url="http://atheme.org/"
+url=" "
arch="all"
options="!check" # No test suite.
license="ISC"
@@ -12,11 +12,11 @@ depends=""
makedepends="openssl-dev"
subpackages="$pkgname-dev"
source="https://github.com/atheme/libmowgli-2/archive/v$pkgver/libmowgli-$pkgver.tar.gz
- cacheline.patch"
+ cacheline.patch
+ "
builddir="$srcdir"/$pkgname-2-$pkgver
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,7 +28,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libmpd/APKBUILD b/user/libmpd/APKBUILD
index c3ae2be64..8aa0cbcca 100644
--- a/user/libmpd/APKBUILD
+++ b/user/libmpd/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libmpd
pkgver=11.8.17
pkgrel=0
@@ -7,18 +7,17 @@ pkgdesc="GObject-based client library for the music player daemon"
url="https://gmpclient.org/"
arch="all"
license="GPL-2.0+ AND BSD-3-Clause"
+depends=""
makedepends="glib-dev"
subpackages="$pkgname-dev"
source="http://download.sarine.nl/Programs/gmpc/11.8/libmpd-$pkgver.tar.gz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -30,12 +29,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libmpeg2/APKBUILD b/user/libmpeg2/APKBUILD
index f24035f54..b2a4a6056 100644
--- a/user/libmpeg2/APKBUILD
+++ b/user/libmpeg2/APKBUILD
@@ -6,8 +6,10 @@ pkgdesc="Library for decoding MPEG-1 and MPEG-2 video streams"
url="http://libmpeg2.sourceforge.net/"
arch="all"
license="GPL-2.0+ AND LGPL-2.0+"
+depends=""
+makedepends="libx11-dev libice-dev libsm-dev libxext-dev libxv-dev
+ autoconf automake libtool"
subpackages="$pkgname-dev $pkgname-doc mpeg2dec"
-makedepends="libx11-dev libice-dev libsm-dev libxext-dev libxv-dev"
source="http://distfiles.gentoo.org/distfiles/libmpeg2-$pkgver.tar.gz
arm-private-symbols.patch
arm-textrel.patch
@@ -15,8 +17,8 @@ source="http://distfiles.gentoo.org/distfiles/libmpeg2-$pkgver.tar.gz
"
prepare() {
- update_config_sub
default_prepare
+ update_config_sub
autoreconf -vif
}
diff --git a/user/libmspub/APKBUILD b/user/libmspub/APKBUILD
index 746c1a84e..f7cfa3558 100644
--- a/user/libmspub/APKBUILD
+++ b/user/libmspub/APKBUILD
@@ -2,19 +2,21 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=libmspub
pkgver=0.1.4
-pkgrel=1
+pkgrel=3
pkgdesc="Import filter and tools for Microsoft Publisher files"
url="https://wiki.documentfoundation.org/DLP/Libraries/libmspub"
arch="all"
options="!check" # No test suite.
license="MPL-2.0 AND (MPL-1.1 OR GPL-2.0+ OR LGPL-2.0+)"
-depends_dev="boost-dev librevenge-dev"
-makedepends="$depends_dev icu-dev doxygen"
+depends=""
+depends_dev="boost-dev"
+makedepends="$depends_dev doxygen icu-dev librevenge-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
-source="http://dev-www.libreoffice.org/src/$pkgname/$pkgname-$pkgver.tar.xz"
+source="https://dev-www.libreoffice.org/src/$pkgname/$pkgname-$pkgver.tar.xz
+ missing-header.patch
+ "
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,7 +29,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -36,4 +37,5 @@ tools() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="7275f890645961b3fd56df4584788962e8c064fe3f99f5834c6ba6177ce76d00d544fbe9a25b7ab2f4180d2f3a90c609fe0bb68d61ea24e95b086190390fff31 libmspub-0.1.4.tar.xz"
+sha512sums="7275f890645961b3fd56df4584788962e8c064fe3f99f5834c6ba6177ce76d00d544fbe9a25b7ab2f4180d2f3a90c609fe0bb68d61ea24e95b086190390fff31 libmspub-0.1.4.tar.xz
+3293b4e10f91e2df7aa1817709c7370aa3d68dccbd3ad68c2e52add5b8caf8dded36e6778dea5c24a0cc3f40d9b6c0a00e0b62d1e8264c6b085a9f6e773d2cb2 missing-header.patch"
diff --git a/user/libmspub/missing-header.patch b/user/libmspub/missing-header.patch
new file mode 100644
index 000000000..83b8ef473
--- /dev/null
+++ b/user/libmspub/missing-header.patch
@@ -0,0 +1,10 @@
+--- libmspub-0.1.4/src/lib/MSPUBMetaData.h.old 2018-02-28 05:54:49.000000000 -0600
++++ libmspub-0.1.4/src/lib/MSPUBMetaData.h 2024-05-29 21:40:50.140097148 -0500
+@@ -13,6 +13,7 @@
+ #include <map>
+ #include <utility>
+ #include <vector>
++#include <cstdint>
+
+ #include <librevenge/librevenge.h>
+
diff --git a/user/libmtp/APKBUILD b/user/libmtp/APKBUILD
index 3f8e07b45..1baa0e7b4 100644
--- a/user/libmtp/APKBUILD
+++ b/user/libmtp/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libmtp
-pkgver=1.1.16
+pkgver=1.1.17
pkgrel=0
pkgdesc="Library for accessing MTP (Media Transfer Protocol) devices"
url="http://libmtp.sourceforge.net/"
@@ -13,7 +13,6 @@ subpackages="$pkgname-dev"
source="https://downloads.sourceforge.net/libmtp/libmtp-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="0540271930c1c932c5d06dcdd30142d407a4fadd022b195e8339d614fa3ec9b050605bf013b28ac6451f4dfcddf7add949c928acb1382802ab5fd6311c1628a0 libmtp-1.1.16.tar.gz"
+sha512sums="f2648e259529bd3dfe74a7049a79c4b0042bcaf63cc1fec8b232b66312d62e9620280e4f725312c9ef8207f1f1ceac19f460a0a8772a3cc6c7f0b00ead01add2 libmtp-1.1.17.tar.gz"
diff --git a/user/libmwaw/APKBUILD b/user/libmwaw/APKBUILD
index 0ab2b30bc..b3699997f 100644
--- a/user/libmwaw/APKBUILD
+++ b/user/libmwaw/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=libmwaw
-pkgver=0.3.14
+pkgver=0.3.15
pkgrel=0
pkgdesc="Import filter and tools for old Mac documents"
url="https://sourceforge.net/projects/libmwaw/"
@@ -12,10 +12,9 @@ depends=""
depends_dev="boost-dev attr-dev zlib-dev"
makedepends="$depends_dev librevenge-dev doxygen"
subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
-source="http://downloads.sourceforge.net/project/$pkgname/$pkgname/$pkgname-$pkgver/$pkgname-$pkgver.tar.bz2"
+source="https://downloads.sourceforge.net/project/$pkgname/$pkgname/$pkgname-$pkgver/$pkgname-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,7 +28,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -38,4 +36,4 @@ tools() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="72d4a1132d96c99518c63b441abd13c239e3f71987ca487c24f3f2c8e72aff24b7c8d6edd6ea1b07d998ecd9003a8f85ef95553a325f7cd8721ddf4e17020ad5 libmwaw-0.3.14.tar.bz2"
+sha512sums="e1799b4cad4f67f525d55183a96bec21d082532371a8ec2f0ab78f9623e5dd8e019e036882da956a9858378096dda3fdebff5e5b76f03b54533f632e0ca8822b libmwaw-0.3.15.tar.bz2"
diff --git a/user/libnatpmp/APKBUILD b/user/libnatpmp/APKBUILD
new file mode 100644
index 000000000..05f8eaa80
--- /dev/null
+++ b/user/libnatpmp/APKBUILD
@@ -0,0 +1,24 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=libnatpmp
+pkgver=20150609
+pkgrel=0
+pkgdesc="A portable and fully compliant implementation of the NAT-PMP protocol"
+url="http://miniupnp.free.fr/libnatpmp.html"
+arch="all"
+options="!check"
+license="BSD-3-Clause"
+depends=""
+makedepends=""
+subpackages="$pkgname-dev"
+source="http://miniupnp.free.fr/files/libnatpmp-$pkgver.tar.gz"
+
+build() {
+ make
+}
+
+package() {
+ make PREFIX="$pkgdir" install
+}
+
+sha512sums="e50b1f68ce9254bb2f068ddc37417a3c417b80f7b3fb3d84e3e9af4a144d89e204ab993b54c01657335e855d0124a8fcbbf96ce78db7b9ae0b03b6eb79de2e09 libnatpmp-20150609.tar.gz"
diff --git a/user/libndp/APKBUILD b/user/libndp/APKBUILD
new file mode 100644
index 000000000..0ea72e6d4
--- /dev/null
+++ b/user/libndp/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libndp
+pkgver=1.7
+pkgrel=0
+pkgdesc="Library for IPv6 Neighbour Discovery Protocol"
+url="http://libndp.org/"
+arch="all"
+license="LGPL-2.1-only"
+depends=""
+makedepends=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://libndp.org/files/libndp-$pkgver.tar.gz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="4aadaf6d7d8b9e57983cba17ce92715cceef6635613c4c5326decb97fb575ce5f5d5586a629645e3605a03e385c6481bfb6c4458216be2bbd36959af62783790 libndp-1.7.tar.gz"
diff --git a/user/libnfs/APKBUILD b/user/libnfs/APKBUILD
index 74aad6e14..d060df361 100644
--- a/user/libnfs/APKBUILD
+++ b/user/libnfs/APKBUILD
@@ -1,12 +1,13 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libnfs
-pkgver=3.0.0
+pkgver=4.0.0
pkgrel=0
pkgdesc="Client library for accessing NFS shares"
url="https://github.com/sahlberg/libnfs"
arch="all"
license="LGPL-2.1+ AND BSD-2-Clause-FreeBSD AND GPL-3.0+"
+depends=""
makedepends="autoconf automake libtool"
subpackages="$pkgname-dev $pkgname-doc"
source="https://github.com/sahlberg/libnfs/archive/libnfs-$pkgver.tar.gz
@@ -15,7 +16,6 @@ source="https://github.com/sahlberg/libnfs/archive/libnfs-$pkgver.tar.gz
builddir="$srcdir"/libnfs-libnfs-$pkgver
build() {
- cd "$builddir"
./bootstrap
./configure \
--build=$CBUILD \
@@ -29,14 +29,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="9af31f8824431e9d28267c468dafc7cfc4062b1a280ca141036bc28a2ba544c4470a67955b5e5fbcc6c175435812381013b4c5d3d3d1a175d5efc7b802ae9b3b libnfs-3.0.0.tar.gz
+sha512sums="3d93d83d1909f24de304c0d47fa6240da7ecf43ce2488a242a58ddabe51d774caf813f5a90ae720a8edd251a765b30e88c0e5b6a13ecb254dfecdc98e30737fa libnfs-4.0.0.tar.gz
39ff82b5371185172501babbb9b48c019408c21e3c9f8a17a2d8a70f7c35e648704873db368aceb23901a99f7f44d04495d6754c4dba03b5d2e593381ed16c53 unconditional-sys-time.h.patch"
diff --git a/user/libnftnl/APKBUILD b/user/libnftnl/APKBUILD
index 432f60b07..d9a3771a0 100644
--- a/user/libnftnl/APKBUILD
+++ b/user/libnftnl/APKBUILD
@@ -1,18 +1,20 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
-# Maintainer: multiplexd <multi@in-addr.xyz>
+# Contributor: Mira Ressel <aranea@aixah.de>
+# Maintainer:
pkgname=libnftnl
-pkgver=1.1.2
+pkgver=1.1.8
pkgrel=0
pkgdesc="Netfilter library providing interface to the nf_tables subsystem"
url="https://netfilter.org/projects/libnftnl"
arch="all"
license="GPL-2.0+"
+depends=""
makedepends="libmnl-dev"
subpackages="$pkgname-dev"
-source="https://netfilter.org/projects/libnftnl/files/$pkgname-$pkgver.tar.bz2"
+source="https://netfilter.org/projects/libnftnl/files/$pkgname-$pkgver.tar.bz2
+ "
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -24,13 +26,11 @@ build() {
}
check() {
- cd "$builddir"/tests
- make check # builds test binaries
+ make -C tests check # builds test binaries
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="808e0efd2ff32a65cca1e6113cc29aece1335364b94ad87438d19b0887d0bd34de11942fa411e4105ef153f2cce862ded17ebc441c413b839ac506471e530569 libnftnl-1.1.2.tar.bz2"
+sha512sums="173d8a7b95eb964a9fbe7ffcb46541a6bae976b4d4f2a28fbf9b03bf3e50a29b1ea12faa49926d2d33bc088580a833fc6e15ff59a30bcfe67c91c524f00c778e libnftnl-1.1.8.tar.bz2"
diff --git a/user/libnice/APKBUILD b/user/libnice/APKBUILD
index d7ab8cdb8..d50182820 100644
--- a/user/libnice/APKBUILD
+++ b/user/libnice/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libnice
-pkgver=0.1.15
+pkgver=0.1.17
pkgrel=0
pkgdesc="GLib-based Interactive Connectivity Establishment (ICE) library"
url="https://nice.freedesktop.org/wiki/"
@@ -16,7 +16,6 @@ source="https://nice.freedesktop.org/releases/libnice-$pkgver.tar.gz
"
build() {
- cd "$builddir"
LDFLAGS="-Wl,-z,stack-size=1048576" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,15 +28,13 @@ build() {
}
check() {
- cd "$builddir"
# multi-make causes test-drop-invalid test to fail
make -j1 check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="60a8bcca06c0ab300dfabbf13e45aeac2085d553c420c5cc4d2fdeb46b449b2b9c9aee8015b0662c16bd1cecf5a49824b7e24951a8a0b66a87074cb00a619c0c libnice-0.1.15.tar.gz
+sha512sums="177ee47712233af379f422cbe24befaa1b744444241723a6575f17db30f7032aa8a34b1c6e160f6f406545fc42c1e7e3ca36c274bea5adb169b02434712c908e libnice-0.1.17.tar.gz
c81aff0f8a674315997f2ecc1f0cbc501b54d49c142949aee68af42aaccf2a2f61d5eb46ce8c123b05fb98c2cd5ef5751b9228783e5e221b12be06b805da0ad3 dont-error-on-socket-close.patch"
diff --git a/user/libnih/APKBUILD b/user/libnih/APKBUILD
index 9636f2a1a..523b8a1a9 100644
--- a/user/libnih/APKBUILD
+++ b/user/libnih/APKBUILD
@@ -1,8 +1,8 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libnih
pkgver=1.0.3
-pkgrel=6
+pkgrel=7
pkgdesc="GLib-like library for embedded use"
url="https://launchpad.net/libnih"
arch="all"
@@ -10,24 +10,23 @@ options="!checkroot"
license="GPL-2.0-only"
depends=""
depends_dev="dbus-dev expat-dev"
-makedepends="$depends_dev"
checkdepends="dbus linux-headers"
+makedepends="$depends_dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://launchpad.net/libnih/${pkgver%.*}/${pkgver}/+download/${pkgname}-${pkgver}.tar.gz
musl-fix-signals.patch
disable-broken-test.patch
musl-enomem-message.patch
parse-test-fix.patch
+ gcc10.patch
"
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -39,12 +38,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -52,4 +49,5 @@ sha512sums="fce40d2445b28c27b8838631681ca3206a4f053b2dd4fc488fc9ef98bbd3d933e3d6
77a979b3076c4e4229359f28c2e9d4fb66d799a66d60391ab6fd7e0dfe2a615b88330a979877b105293a95ed147546596eca174f52b75beca0457c49a017d040 musl-fix-signals.patch
b5b77b1f18d7aa5d603a0d312b785c28200c38b7bbe5c384ee576c762bd9e3163682c29dd5410baf18c5c3734f0b719602caa1de096f1758d624d94b7753066a disable-broken-test.patch
b800c99153ad66c9d7399bc7544a0237de0c7a4ddac129509f13eb1c31805fcac31c93bbf2945da557dfc900c9ec837ec0fded1c3f9887095dae52ff6fc046ec musl-enomem-message.patch
-3f24f648c27e9b5a6872859fe97b34055b0f43b11f0321508852b20b6dd94de5c8d24a6dbaab9d49e7004bf0c571c11ebf520d49630d8a89bceeb7783de7dcd2 parse-test-fix.patch"
+3f24f648c27e9b5a6872859fe97b34055b0f43b11f0321508852b20b6dd94de5c8d24a6dbaab9d49e7004bf0c571c11ebf520d49630d8a89bceeb7783de7dcd2 parse-test-fix.patch
+e2fc351e68ab194723b95a37b4b78c726ef9d7bda173ae51816f979f2f1385f1e776052b75b949cdd794da0cdb53e270fb7a950dc68f2d818ccb1f0013664e0c gcc10.patch"
diff --git a/user/libnih/gcc10.patch b/user/libnih/gcc10.patch
new file mode 100644
index 000000000..a118b1f53
--- /dev/null
+++ b/user/libnih/gcc10.patch
@@ -0,0 +1,15 @@
+GCC 10+ use -fno-common by default, which means we need to declare this 'extern'.
+
+There is no upstream to send this to.
+
+--- libnih-1.0.3/nih-dbus-tool/output.h.old 2010-09-20 18:17:01.000000000 -0500
++++ libnih-1.0.3/nih-dbus-tool/output.h 2024-05-28 13:22:58.501847205 -0500
+@@ -27,7 +27,7 @@
+
+ NIH_BEGIN_EXTERN
+
+-char *output_package;
++extern char *output_package;
+
+ int output (const char *source_path, int source_fd,
+ const char *header_path, int header_fd,
diff --git a/user/libnl3/APKBUILD b/user/libnl3/APKBUILD
index 58dc88d4e..c9a12da3a 100644
--- a/user/libnl3/APKBUILD
+++ b/user/libnl3/APKBUILD
@@ -1,20 +1,20 @@
# Maintainer:
pkgname=libnl3
-pkgver=3.2.28
-pkgrel=2
+pkgver=3.5.0
+_pkgver=$(printf '%s' "$pkgver" | tr . _)
+pkgrel=0
pkgdesc="Library for applications dealing with netlink sockets"
url="http://www.infradead.org/~tgr/libnl/"
arch="all"
license="LGPL-2.1-only AND GPL-2.0-only"
depends=""
-makedepends="linux-headers flex bison"
checkdepends="check-dev"
+makedepends="linux-headers flex bison"
subpackages="$pkgname-dev $pkgname-doc $pkgname-cli"
-source="https://github.com/thom311/libnl/releases/download/libnl${pkgver//./_}/libnl-$pkgver.tar.gz"
-builddir="$srcdir"/libnl-$pkgver
+source="https://github.com/thom311/libnl/releases/download/libnl$_pkgver/libnl-$pkgver.tar.gz"
+builddir="$srcdir/libnl-$pkgver"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,12 +28,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -46,4 +44,4 @@ cli() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}
-sha512sums="b5f145ecafb2625ed1c42594afd6063f112a601077de5c35884b3c3bc8c562b29b52a006ccebd795c127fe69692a82def425c8605afed7e6d441582943e803d9 libnl-3.2.28.tar.gz"
+sha512sums="9c94c09bac34297493b3ea482713d7c0865d2839b5042e5c7d1ed008e2402ab63df35a18e272f40b2cce27d0c31dc733fe7e4b2d376e7ca847a2b0d5e90de50c libnl-3.5.0.tar.gz"
diff --git a/user/libnotify/APKBUILD b/user/libnotify/APKBUILD
index ad021ad4f..9e7ded542 100644
--- a/user/libnotify/APKBUILD
+++ b/user/libnotify/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libnotify
-pkgver=0.7.8
+pkgver=0.7.9
pkgrel=0
pkgdesc="Desktop notification library"
url="https://developer.gnome.org/notification-spec/"
@@ -9,17 +9,19 @@ options="!check" # Test suite requires running X11
license="LGPL-2.1+"
depends=""
makedepends="gdk-pixbuf-dev glib-dev gobject-introspection-dev gtk-doc
- gtk+3.0-dev meson ninja"
+ gtk+3.0-dev meson ninja docbook-xsl-ns xmlto"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.gnome.org/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz"
build() {
- meson --prefix=/usr builddir/
- ninja -C builddir/
+ meson \
+ -Dprefix=/usr \
+ build
+ ninja -C build
}
package() {
- DESTDIR="$pkgdir" ninja -C builddir/ install
+ DESTDIR="$pkgdir" ninja -C build install
}
-sha512sums="9973d7a1af5dd7cfbaa0d0d2c9e72a40df9d814967fde47e95763a69690cc4ed32ecf713d75f91f3dff99a693eff9dab963be124e0530ebf231d517a44e75e94 libnotify-0.7.8.tar.xz"
+sha512sums="8a842b50777279efdb7d96a836a546c47decad158a4f03f7ffc818860d1f6276a657619e4f4a19a4e2f5ad55e0371c793420d50d802983700e8c342273b73874 libnotify-0.7.9.tar.xz"
diff --git a/user/libnumbertext/APKBUILD b/user/libnumbertext/APKBUILD
index 38bbb096c..9d1302bc6 100644
--- a/user/libnumbertext/APKBUILD
+++ b/user/libnumbertext/APKBUILD
@@ -27,9 +27,7 @@ build() {
package() {
make DESTDIR="$pkgdir" install
-
- cd data
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C data install
}
sha512sums="4d61464f26f631d272ef7285fbb931d3931b08240b58166b7e9a28c95ff5a537ca04af4c9673541b73997339d66061858c9cd18873b4c16f9ad2ccd1b68e81a3 libnumbertext-1.0.5.tar.xz"
diff --git a/user/libodfgen/APKBUILD b/user/libodfgen/APKBUILD
index 64eb49c62..7eeed1f6f 100644
--- a/user/libodfgen/APKBUILD
+++ b/user/libodfgen/APKBUILD
@@ -8,13 +8,12 @@ url="https://sourceforge.net/p/libwpd/wiki/libodfgen/"
arch="all"
license="MPL-2.0 OR LGPL-2.1+"
depends=""
-depends_dev="boost-dev librevenge-dev"
-makedepends="$depends_dev doxygen"
+depends_dev="boost-dev"
+makedepends="$depends_dev doxygen librevenge-dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://sourceforge.net/projects/libwpd/files/$pkgname/$pkgname-$pkgver/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,12 +27,10 @@ build() {
}
check() {
- cd "$builddir/test"
- make launch_all
+ make -C test launch_all
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libogg/APKBUILD b/user/libogg/APKBUILD
index fc41e6f74..f8f8e1f7a 100644
--- a/user/libogg/APKBUILD
+++ b/user/libogg/APKBUILD
@@ -1,18 +1,18 @@
# Contributor: Mika Havela <mika.havela@gmail.com>
# Maintainer:
pkgname=libogg
-pkgver=1.3.3
-pkgrel=2
+pkgver=1.3.4
+pkgrel=0
pkgdesc="Ogg bitstream and framing library"
url="https://xiph.org/ogg/"
arch="all"
license="BSD-3-Clause"
+depends=""
+makedepends=""
subpackages="$pkgname-doc $pkgname-dev"
source="http://downloads.xiph.org/releases/ogg/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
-
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -21,15 +21,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
-
- install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="16f9cbc7f5b77c1719d80e666995ad825a3d4b6facfa51e3df3b1a9678cca7dc3c4f6ee15096c394c97ed5e67fced1aaedacc563cddfe4e0c748dd39940b099e libogg-1.3.3.tar.gz"
+sha512sums="aabe5de063a1963729ce0c055d538612d242b360d13f032d1508f0e82ad23f61d89d0b00386b358a87aba43317bb7a67b8e52361a41a079a1fc2bc6df61917d9 libogg-1.3.4.tar.gz"
diff --git a/user/libopenraw/APKBUILD b/user/libopenraw/APKBUILD
index e06f1637d..1ab4845b3 100644
--- a/user/libopenraw/APKBUILD
+++ b/user/libopenraw/APKBUILD
@@ -1,25 +1,23 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libopenraw
pkgver=0.1.3
pkgrel=0
pkgdesc="Library for decoding RAW camera image formats"
-url="https://libopenraw.freedesktop.org/wiki/"
+url="https://libopenraw.freedesktop.org/"
arch="all"
license="LGPL-2.1+ AND LGPL-3.0+ AND GPL-2.0+"
+depends=""
makedepends="boost-dev libjpeg-turbo-dev libxml2-dev glib-dev gdk-pixbuf-dev"
subpackages="$pkgname-dev"
source="https://libopenraw.freedesktop.org/download/libopenraw-$pkgver.tar.bz2"
-sha512sums="c56d84610f0cf5da970c4c0c791fccf2f7e9f7c7dacf2aeac0b2702ce9a0cd3aaa2f6db0794b0466e1dd8316771973db1e64d013f635c1166b7ff2eebdcbf029 libopenraw-0.1.3.tar.bz2"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,12 +29,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
+sha512sums="c56d84610f0cf5da970c4c0c791fccf2f7e9f7c7dacf2aeac0b2702ce9a0cd3aaa2f6db0794b0466e1dd8316771973db1e64d013f635c1166b7ff2eebdcbf029 libopenraw-0.1.3.tar.bz2"
diff --git a/user/liborcus/APKBUILD b/user/liborcus/APKBUILD
index 3f0434eae..59c3bc2e7 100644
--- a/user/liborcus/APKBUILD
+++ b/user/liborcus/APKBUILD
@@ -1,18 +1,22 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=liborcus
-pkgver=0.14.1
+pkgver=0.19.2
pkgrel=0
pkgdesc="Library for processing spreadsheet documents"
url="https://gitlab.com/orcus/orcus"
arch="all"
license="MPL-2.0 AND MIT"
-depends_dev="boost-dev mdds~1.4 libixion-dev~0.14"
+depends=""
+depends_dev="boost-dev mdds libixion-dev"
makedepends="$depends_dev zlib-dev"
subpackages="$pkgname-dev"
-source="http://kohei.us/files/orcus/src/$pkgname-$pkgver.tar.xz"
+source="https://gitlab.com/api/v4/projects/orcus%2Forcus/packages/generic/source/$pkgver/liborcus-$pkgver.tar.xz"
build() {
+ # GCC 13 changed default fp precision behavior. (#1193, #1215)
+ export CXXFLAGS="${CXXFLAGS} -fexcess-precision=fast"
+
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,4 +36,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="a32dc5a652ce99cff37273c38fb9460e13e7bfb562f40c8d0c79b65c33e340daaeeb2c796308ca700b85bfc13cc8215641563b9e9f6d44b7d61adb8e8a3c950f liborcus-0.14.1.tar.xz"
+sha512sums="c955490f57e91615278a83bb48726025cd5f8059b97ed5532f770199e134ca511c7ee6b0cd0a9d3a2d54208a5fdd19117054e95e818162ea568052fa11b21d4e liborcus-0.19.2.tar.xz"
diff --git a/user/libotr/APKBUILD b/user/libotr/APKBUILD
index 98c18ffff..aa9f28059 100644
--- a/user/libotr/APKBUILD
+++ b/user/libotr/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libotr
pkgver=4.1.1
-pkgrel=0
+pkgrel=1
pkgdesc="Messaging library for secure, encrypted communications"
url="https://otr.cypherpunks.ca/"
arch="all"
@@ -13,6 +13,7 @@ makedepends="$depends_dev"
subpackages="$pkgname-dev $pkgname-doc"
source="https://otr.cypherpunks.ca/libotr-$pkgver.tar.gz
fix-test.patch
+ fix-client.patch
"
prepare() {
@@ -21,7 +22,6 @@ prepare() {
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,14 +33,13 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
sha512sums="c957206235b9f627542f23a645c822ea1b318d83fa655f41ed8d9a3c0dddf30b88f0ca82060026af155e48ecb13969dc9270831f20304669794151f666ae5cb0 libotr-4.1.1.tar.gz
-dcd1e55619b2ef51f14257cddcceb5f1b850da42c2acb7547713256a377df60d30591d06522fe6982db8c261687f1f18640a1ffaaf1c701d9356bd97dab1d8c8 fix-test.patch"
+dcd1e55619b2ef51f14257cddcceb5f1b850da42c2acb7547713256a377df60d30591d06522fe6982db8c261687f1f18640a1ffaaf1c701d9356bd97dab1d8c8 fix-test.patch
+7f9521c37a91ac396908ce6e92acb962a5528055809b81754ff27c77c1dbc952bfce2d97c538ca30d6c7dab7a119394ca5367a572287c6cb03fa7ca7f6a9e854 fix-client.patch"
diff --git a/user/libotr/fix-client.patch b/user/libotr/fix-client.patch
new file mode 100644
index 000000000..97ad56ffe
--- /dev/null
+++ b/user/libotr/fix-client.patch
@@ -0,0 +1,11 @@
+diff -ur a/tests/regression/client/client.c b/tests/regression/client/client.c
+--- a/tests/regression/client/client.c 2022-04-22 06:59:42.455423399 +0000
++++ b/tests/regression/client/client.c 2022-04-22 07:00:15.356315251 +0000
+@@ -26,6 +26,7 @@
+ #include <stdlib.h>
+ #include <syscall.h>
+ #include <sys/epoll.h>
++#include <sys/socket.h>
+ #include <sys/types.h>
+ #include <sys/un.h>
+ #include <unistd.h>
diff --git a/user/libpagemaker/APKBUILD b/user/libpagemaker/APKBUILD
index d6194da5d..eab913f3c 100644
--- a/user/libpagemaker/APKBUILD
+++ b/user/libpagemaker/APKBUILD
@@ -9,13 +9,11 @@ arch="all"
options="!check" # No test suite.
license="MPL-2.0"
depends=""
-depends_dev="librevenge-dev"
-makedepends="$depends_dev boost-dev doxygen"
+makedepends="boost-dev doxygen librevenge-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
source="http://dev-www.libreoffice.org/src/$pkgname/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,7 +27,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libpaper/APKBUILD b/user/libpaper/APKBUILD
index 927b5e73a..28bb47d2c 100644
--- a/user/libpaper/APKBUILD
+++ b/user/libpaper/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=libpaper
-pkgver=1.1.26
+pkgver=1.1.28
pkgrel=0
pkgdesc="Library for handling paper characteristics"
url="https://packages.debian.org/unstable/source/libpaper"
@@ -9,16 +9,14 @@ options="!check" # No test suite.
license="GPL-2.0-only"
subpackages="$pkgname-dev $pkgname-doc"
depends=""
-makedepends=""
+makedepends="autoconf automake libtool"
source="http://ftp.debian.org/debian/pool/main/libp/libpaper/libpaper_$pkgver.tar.gz"
prepare() {
- cd "$builddir"
autoreconf -vif
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,8 +26,7 @@ build() {
}
package() {
- cd "$builddir"
make prefix="$pkgdir"/usr install
}
-sha512sums="6c54d28004c2dc95cfcc58467026d87b1590d35c9acf09d85568be0c558a04c183e0657afe3278dc894825428372ae60ccf417ece955b7d358fd9ce7b3d78b76 libpaper_1.1.26.tar.gz"
+sha512sums="3bf6ebb0af89931d2f72ea4a09a7fa958b2facda5f238983ec7bac39652e08614b33f0de3af74a03457b2a4203eee4950bf18a4b726e79aa64093ace6a1fb0bc libpaper_1.1.28.tar.gz"
diff --git a/user/libpcap/APKBUILD b/user/libpcap/APKBUILD
index f1c3cd9d7..17df8ba0f 100644
--- a/user/libpcap/APKBUILD
+++ b/user/libpcap/APKBUILD
@@ -1,11 +1,11 @@
# Maintainer:
pkgname=libpcap
-pkgver=1.9.0
+pkgver=1.9.1
pkgrel=0
pkgdesc="System-independent interface for user-level packet capture"
url="http://www.tcpdump.org/"
arch="all"
-options="!check"
+options="!check" # No test suite.
license="BSD-3-Clause"
depends=""
makedepends="autoconf bison bluez-dev flex linux-headers"
@@ -14,8 +14,16 @@ source="http://www.tcpdump.org/release/$pkgname-$pkgver.tar.gz
add-missing-header.patch
"
+# secfixes:
+# 1.9.1-r0:
+# - CVE-2018-16301
+# - CVE-2019-15161
+# - CVE-2019-15162
+# - CVE-2019-15163
+# - CVE-2019-15164
+# - CVE-2019-15165
+
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,9 +41,8 @@ build() {
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install install-shared
}
-sha512sums="0ff25641f1e9d29082766caef45888c19214f770c4f378818caa73fcbc4ae54ad9195549c2499d4879ff46e35741d93b2b02cc5f3d6aa99e85a32194cf10bfe7 libpcap-1.9.0.tar.gz
+sha512sums="ae0d6b0ad8253e7e059336c0f4ed3850d20d7d2f4dc1d942c2951f99a5443a690f0cc42c6f8fdc4a0ccb19e9e985192ba6f399c4bde2c7076e420f547fddfb08 libpcap-1.9.1.tar.gz
d9bee430f26e647c4a7ddd5b1ddd588fadefd3a034710e9bdfa9ff1d8c18ad8f6c0be1c29c2261e7be89db7d7e545e30c7910f09f3f53701ce04421449328be2 add-missing-header.patch"
diff --git a/user/libpciaccess/APKBUILD b/user/libpciaccess/APKBUILD
index 73f05fddd..974b4b7df 100644
--- a/user/libpciaccess/APKBUILD
+++ b/user/libpciaccess/APKBUILD
@@ -1,37 +1,26 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libpciaccess
-pkgver=0.14
+pkgver=0.18.1
pkgrel=0
pkgdesc="X11 PCI access library"
-url="https://cgit.freedesktop.org/xorg/lib/libpciaccess/"
+url="https://www.X.Org/"
arch="all"
+options="!check" # no test suite
license="MIT AND X11"
-makedepends="util-macros"
-subpackages="$pkgname-dev $pkgname-doc"
-source="http://www.x.org/releases/individual/lib/$pkgname-$pkgver.tar.bz2
- fix-arm.patch
+depends="hwdata"
+makedepends="meson"
+subpackages="$pkgname-dev"
+source="https://www.X.Org/releases/individual/lib/$pkgname-$pkgver.tar.xz
limits_h.patch"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr
- make
-}
-
-check() {
- cd "$builddir"
- make check
+ meson setup --prefix=/usr build
+ meson compile -C build
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
- install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
+ DESTDIR="$pkgdir" meson install -C build
}
-sha512sums="bf40214dfd22f2a223f7c948566e6eaa4bfed60116e71b3eb19f6fe7ab2c4546649eb0416c06d5983e476ea5e27de036936646eb5f800ea97763b6d1f1976f4b libpciaccess-0.14.tar.bz2
-a6c95f42c926ffcd62014cf619c6aacf8db3b1862fa87c8eae9c3e64f31fcaddb682d34c767756bede5d2949a7285a415ca1d14249713bc12514c8e40f9d989f fix-arm.patch
+sha512sums="ef27999446e735df2331e94219ee3dafe9198a2472bb452f63ef9c9c446d5431f9e231e224cfabdeba1402974a5a0064546f9abced4d1770f994f5fc0c2b3310 libpciaccess-0.18.1.tar.xz
331a498059d8b2bfd0a7da0ced3616266ebc129b785090ef1dc19cd645b013428c60d5678fc080bd15ecaf7598ec8b1084509d6bea5d563101169a449b6fe75b limits_h.patch"
diff --git a/user/libpciaccess/fix-arm.patch b/user/libpciaccess/fix-arm.patch
deleted file mode 100644
index 4a59ae906..000000000
--- a/user/libpciaccess/fix-arm.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- libpciaccess-0.13.2.orig/src/linux_sysfs.c
-+++ libpciaccess-0.13.2/src/linux_sysfs.c
-@@ -46,7 +46,7 @@
- #include <errno.h>
- #include <limits.h>
-
--#if defined(__i386__) || defined(__x86_64__) || defined(__arm__)
-+#if defined(__i386__) || defined(__x86_64__)
- #include <sys/io.h>
- #else
- #define inb(x) -1
diff --git a/user/libpeas/APKBUILD b/user/libpeas/APKBUILD
index 942d22442..e294c7e5c 100644
--- a/user/libpeas/APKBUILD
+++ b/user/libpeas/APKBUILD
@@ -1,39 +1,33 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libpeas
-pkgver=1.22.0
+pkgver=1.28.0
pkgrel=0
pkgdesc="GObject-based plugin framework"
url="https://gnome.org"
arch="all"
+options="!check" # With Meson, you can't disable individual tests.
+ # Three require X11. Complain to Meson, not me.
license="LGPL-2.1+"
depends=""
-makedepends="intltool glib-dev gobject-introspection-dev gtk+3.0-dev
- py3-pygobject py3-pygobject-dev python3-dev"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="https://download.gnome.org/sources/libpeas/${pkgver%.*}/libpeas-$pkgver.tar.xz"
+makedepends="glib-dev gobject-introspection-dev gtk+3.0-dev
+ meson ninja py3-pygobject py3-pygobject-dev python3-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://download.gnome.org/sources/libpeas/${pkgver%.*}/libpeas-$pkgver.tar.xz
+ use-locale.h.patch"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
+ meson -Dprefix=/usr build
+ ninja -C build
}
check() {
- cd "$builddir"
- make check
+ DISPLAY= ninja -C build test
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" ninja -C build install
}
-sha512sums="9c1da1d4b5688c0f4d0647f3519dbfbed94c8921091057aaef0e41bf5ed3f8faf04a49ce9e4eea3fd7bf4ac4dfa1727d76a5f6dae2a4f52228d4c8c74b420c91 libpeas-1.22.0.tar.xz"
+sha512sums="43f8bc426238f519d7a3b26409af2f7578e921893c085d00fab74699a45649d8343e5646658003980e6639f51e74f3b25519c3bbc248d5161b11c999f7dd0374 libpeas-1.28.0.tar.xz
+307f198078d3d1b0f8d914011ecffaae500e4d8f71cbc876fef36b5f25c49858fe1c929c572e2c75146097068771524cc50fbb4638cbbbf90cbb3eab29c0964b use-locale.h.patch"
diff --git a/user/libpeas/use-locale.h.patch b/user/libpeas/use-locale.h.patch
new file mode 100644
index 000000000..97b3a08c0
--- /dev/null
+++ b/user/libpeas/use-locale.h.patch
@@ -0,0 +1,12 @@
+diff -Nurd libpeas-1.26.0/peas-demo/peas-demo.c libpeas-1.26.0.new/peas-demo/peas-demo.c
+--- libpeas-1.26.0/peas-demo/peas-demo.c 2020-03-06 21:12:16.247286600 +0000
++++ libpeas-1.26.0.new/peas-demo/peas-demo.c 2020-04-08 07:47:04.093350285 +0000
+@@ -23,6 +23,8 @@
+ #include <config.h>
+ #endif
+
++#include <locale.h>
++
+ #include <girepository.h>
+ #include <glib/gi18n.h>
+ #include <gtk/gtk.h>
diff --git a/user/libpfm/APKBUILD b/user/libpfm/APKBUILD
index c30624312..063b041d4 100644
--- a/user/libpfm/APKBUILD
+++ b/user/libpfm/APKBUILD
@@ -1,10 +1,10 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libpfm
-pkgver=4.10.1
+pkgver=4.13.0
pkgrel=0
pkgdesc="Performance monitoring library"
-url="http://perfmon2.sourceforge.net/"
+url="https://perfmon2.sourceforge.net/"
arch="all"
options="!check" # No test suite.
license="MIT"
@@ -14,13 +14,11 @@ subpackages="$pkgname-dev $pkgname-doc"
source="https://downloads.sourceforge.net/perfmon2/libpfm4/libpfm-$pkgver.tar.gz"
build() {
- cd "$builddir"
CFLAGS="$CFLAGS -Wno-error=cpp" make
}
package() {
- cd "$builddir"
make PREFIX="/usr" DESTDIR="$pkgdir" install
}
-sha512sums="33d99824216b4d83784e0db9f1aae3b39f84c2ba42dee64dde0b3c43cc5ee3a18c206d9044e75bf10867768add7cb9967c6318f7aa196f178f334271fa05e1aa libpfm-4.10.1.tar.gz"
+sha512sums="e61b210aa2ce80f0e47603c88eee2e4f2fe30ca2c0e194a5472b6a8de3bf9dc1085e5261bbb9ddbe5b6531c4b391fb34f20d038e5ebd8e6f4c14c2112aee508f libpfm-4.13.0.tar.gz"
diff --git a/user/libplist/APKBUILD b/user/libplist/APKBUILD
new file mode 100644
index 000000000..5df5484de
--- /dev/null
+++ b/user/libplist/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=libplist
+pkgver=2.3.0
+pkgrel=0
+pkgdesc="Library for working with plist files"
+url="https://libimobiledevice.org/"
+arch="all"
+license="LGPL-2.1+ AND MIT"
+depends=""
+makedepends="python3-dev py3-cython"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/libimobiledevice/libplist/releases/download/$pkgver/libplist-$pkgver.tar.bz2"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ # -j1 for #1175
+ make -j1 check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="f2c89b72116a12d516a690dca583eed68fee53510ed461284d6f2840e99431ae406c66abd6758247b659151f1f5decf7189d3fd28f6fa5f076003c800ee2dbc3 libplist-2.3.0.tar.bz2"
diff --git a/user/libpng/APKBUILD b/user/libpng/APKBUILD
index e3504e859..0ff2b00d0 100644
--- a/user/libpng/APKBUILD
+++ b/user/libpng/APKBUILD
@@ -1,10 +1,10 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=libpng
-pkgver=1.6.36
+pkgver=1.6.39
pkgrel=0
pkgdesc="Portable Network Graphics library"
-url="http://www.libpng.org/"
+url="http://www.libpng.org/pub/png/libpng.html"
arch="all"
license="Libpng"
depends=""
@@ -17,7 +17,6 @@ source="https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz
"
prepare() {
- cd "$builddir"
gunzip -c "$srcdir"/$pkgname-$pkgver-apng.patch.gz | patch -p1
default_prepare
# libpng-fix-arm-neon.patch modifies configure.ac
@@ -25,7 +24,6 @@ prepare() {
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -37,16 +35,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
- install -Dm644 LICENSE \
- "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
- rm -f "$pkgdir"/usr/lib/*.la
}
utils() {
@@ -55,6 +48,6 @@ utils() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="8b9c54c5555d6a736eaf298cbbae1e08199001202bacabc6212d75fa619e2ecf06bcf36db0321bfdb90a3dc5cde361c8d951002701637a557c34eae80f5d0936 libpng-1.6.36.tar.gz
-8fa213204768b058459ffd5eae6b3661c3f185d3baf1913da4337e7b7855e567f2525e7f67411c32fa8cb177a5f93d538c3d0ce17a94d4aa71bd9cffabe8b311 libpng-1.6.36-apng.patch.gz
-e3fae918f14bc34e7c126892f69527c6e1b4d72593835ece839d9a28cff55a886b2030f877cf9e29b2c97abf2e47bbb5ba54584828edd2a841c2556f330b9c7e libpng-fix-arm-neon.patch"
+sha512sums="19851afffbe2ffde62d918f7e9017dec778a7ce9c60c75cdc65072f086e6cdc9d9895eb7b207535a84cb5f4ead77ebc2aa9d80025f153662903023e1f7ab9bae libpng-1.6.39.tar.gz
+97a182da0b3b54aecf735e3655d8e8f1a569ae957b23fc3d7a9c8cc65dcdd26f34f173ce9f60af99b01d5347267b2afefaf787c500ce1005e86bf2810b3d0738 libpng-1.6.39-apng.patch.gz
+0a5efa609bda4c2a38f5110b7287020a5f9dc81583f2b05a951d897a18ce62ea80350baf52daa3d02f20dff51bbc177b3af317ab7bbc09eb23a3c252600414a5 libpng-fix-arm-neon.patch"
diff --git a/user/libpng/libpng-fix-arm-neon.patch b/user/libpng/libpng-fix-arm-neon.patch
index 2cd3f18c2..099083fd9 100644
--- a/user/libpng/libpng-fix-arm-neon.patch
+++ b/user/libpng/libpng-fix-arm-neon.patch
@@ -1,6 +1,8 @@
+diff --git a/configure.ac b/configure.ac
+index 7b6d5b9..d02e16d 100644
--- a/configure.ac
+++ b/configure.ac
-@@ -364,17 +364,21 @@
+@@ -357,17 +357,21 @@ AC_ARG_ENABLE([arm-neon],
[case "$enableval" in
no|off)
# disable the default enabling on __ARM_NEON__ systems:
@@ -8,7 +10,7 @@
AC_DEFINE([PNG_ARM_NEON_OPT], [0],
[Disable ARM Neon optimizations])
# Prevent inclusion of the assembler files below:
- enable_arm_neon=no;;
+ enable_arm_neon=no ;;
check)
+ AC_DEFINE([PNG_ARM_NEON], [], [ARM NEON support])
AC_DEFINE([PNG_ARM_NEON_CHECK_SUPPORTED], [],
@@ -22,6 +24,8 @@
AC_DEFINE([PNG_ARM_NEON_OPT], [2],
[Enable ARM Neon optimizations])
AC_MSG_WARN([--enable-arm-neon: please specify 'check' or 'api', if]
+diff --git a/pngpriv.h b/pngpriv.h
+index 2e426cf..fb521cf 100644
--- a/pngpriv.h
+++ b/pngpriv.h
@@ -127,7 +127,7 @@
diff --git a/user/libproxy/APKBUILD b/user/libproxy/APKBUILD
index ffeac9d28..f3bbe23c8 100644
--- a/user/libproxy/APKBUILD
+++ b/user/libproxy/APKBUILD
@@ -1,10 +1,10 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=libproxy
-pkgver=0.4.15
-pkgrel=2
+pkgver=0.4.18
+pkgrel=0
pkgdesc="Library providing automatic proxy configuration management"
-url="http://libproxy.github.io/libproxy/"
+url="https://libproxy.github.io/libproxy/"
arch="all"
license="LGPL-2.1+"
depends=""
@@ -16,8 +16,12 @@ source="$pkgname-$pkgver.tar.gz::https://github.com/libproxy/libproxy/archive/$p
fix-includes.patch
"
+# secfixes:
+# 0.4.15-r3:
+# - CVE-2020-25219
+# - CVE-2020-26154
+
build() {
- cd "$builddir"
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DLIBEXEC_INSTALL_DIR=lib \
@@ -28,12 +32,10 @@ build() {
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -56,6 +58,6 @@ py() {
mv "$pkgdir"/usr/lib/python* "$subpkgdir"/usr/lib/
}
-sha512sums="8f68bd56e44aeb3f553f4657bef82a5d14302780508dafa32454d6f724b724c884ceed6042f8df53a081d26ea0b05598cf35eab44823257c47c5ef8afb36442b libproxy-0.4.15.tar.gz
+sha512sums="1148d688a9f070273a1a2b110a788561789799089660292bbba59fbf0a9caf7d28cb039a9ccdcb935f752e1e34739b2d2f4c784b1bb3bbaa03d108e7b38a4754 libproxy-0.4.18.tar.gz
9929c308195bc59c1b9a7ddaaf708fb831da83c5d86d7ce122cb9774c9b9b16aef3c17fb721356e33a865de1af27db493f29a99d292e1e258cd0135218cacd32 libproxy-0.4.7-unistd.patch
e35b4f806e5f60e9b184d64dceae62e6e343c367ee96d7e461388f2665fe2ab62170d41848c9da5322bb1719eff3bfaecb273e40a97ce940a5e88d29d03bd8d9 fix-includes.patch"
diff --git a/user/libpsl/APKBUILD b/user/libpsl/APKBUILD
index 9f4e97f9e..eb4588986 100644
--- a/user/libpsl/APKBUILD
+++ b/user/libpsl/APKBUILD
@@ -1,19 +1,20 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libpsl
-pkgver=0.20.2
+pkgver=0.21.1
pkgrel=0
pkgdesc="C library for examining the Public Suffix List"
url="https://rockdaboot.github.io/libpsl"
arch="all"
license="MIT AND BSD-3-Clause"
+depends=""
makedepends="python3 libidn2-dev libunistring-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://github.com/rockdaboot/libpsl/releases/download/libpsl-$pkgver/libpsl-$pkgver.tar.gz
- use-python3.patch"
+source="https://github.com/rockdaboot/libpsl/releases/download/$pkgver/libpsl-$pkgver.tar.gz
+ use-python3.patch
+ "
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,14 +26,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="fa9f6f7f0447d9fe00f5dfca5262c56ff26217eea44d0f7fc1e5d982224c41874e753f0aa06dd9e5d7d03d4f04e3dacd4f36034cc8dd0fc6e2c28b49a23e62fe libpsl-0.20.2.tar.gz
+sha512sums="a5084b9df4ff2a0b1f5074b20972efe0da846473396d27b57967c7f6aa190ab3c910b4bfc4f8f03802f08decbbad5820d850c36ad59610262ae37fe77de0c7f5 libpsl-0.21.1.tar.gz
00c9c09bac334efcd7ae6240b740ac88453425cc380cc23b443a0579f4ccabf86eafdb90f5f05027cc55ee20f6c1d4388939792a55cd95705d5e6919d40b30e5 use-python3.patch"
diff --git a/user/libpthread-stubs/APKBUILD b/user/libpthread-stubs/APKBUILD
index 02af44664..eacd771e6 100644
--- a/user/libpthread-stubs/APKBUILD
+++ b/user/libpthread-stubs/APKBUILD
@@ -1,16 +1,17 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libpthread-stubs
-pkgver=0.4
+pkgver=0.5
pkgrel=0
pkgdesc="POSIX threading functions stubs for platforms missing them"
url="https://cgit.freedesktop.org/xcb/pthread-stubs"
arch="all"
options="!dbg"
license="X11"
-source="http://xcb.freedesktop.org/dist/$pkgname-$pkgver.tar.bz2"
+depends=""
+makedepends=""
+source="http://xcb.freedesktop.org/dist/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -19,13 +20,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
}
-sha512sums="0fec563f3833b84311b32cb13a4fd9832aeb0204c65b1541bf453d5d35693b2267c3cee656e00a4b8533b07a8f6320ca5c3672dcf8ab047cdac8628154c08954 libpthread-stubs-0.4.tar.bz2"
+sha512sums="a24f7c40dcaf5f6ca0085972117fed5ad0851f6fc1972fdab799d27236afaaa4f7baa93e40532f93984d313d94456819aaf4ec8f8d1bbb2e5c4fc76c31891d82 libpthread-stubs-0.5.tar.xz"
diff --git a/user/libptytty/APKBUILD b/user/libptytty/APKBUILD
new file mode 100644
index 000000000..d12a73c33
--- /dev/null
+++ b/user/libptytty/APKBUILD
@@ -0,0 +1,43 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libptytty
+pkgver=2.0
+pkgrel=0
+pkgdesc="OS independent and secure pty/tty and utmp/wtmp/lastlog handling"
+url="http://software.schmorp.de/pkg/libptytty.html"
+arch="all"
+options="!check" # No test suite.
+license="GPL-2.0+"
+depends=""
+makedepends="cmake utmps-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://dist.schmorp.de/libptytty/libptytty-$pkgver.tar.gz
+ force-utmps.patch
+ "
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ export LDFLAGS="$LDFLAGS -Bdynamic"
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ -Bbuild
+ make -C build
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
+}
+
+package() {
+ make DESTDIR="$pkgdir" -C build install
+}
+
+sha512sums="9cca5fddbcc4025c2bbe043e3367ac902d0024a34301258dafcf0de70935c055279d88227168d112d0e4c0dc37f1f49e1ea587bd6bddf0b9d92400657bc7be08 libptytty-2.0.tar.gz
+34155b4c06bb8dc8f78777fd3a9e749b1c3c056bd073fd7a0c85404f1dfe29dae6b2513a1ed8093fd528d0eb30cd463a5896c0d05203f47bb4f9cad8067bec26 force-utmps.patch"
diff --git a/user/libptytty/force-utmps.patch b/user/libptytty/force-utmps.patch
new file mode 100644
index 000000000..ce9c34d6d
--- /dev/null
+++ b/user/libptytty/force-utmps.patch
@@ -0,0 +1,12 @@
+We need to ensure linkage to utmps, or utmpx won't work.
+
+--- libptytty-2.0/CMakeLists.txt.old 2021-08-04 09:07:44.000000000 -0500
++++ libptytty-2.0/CMakeLists.txt 2024-05-30 19:50:40.078963587 -0500
+@@ -318,6 +318,7 @@
+ target_link_libraries(ptytty PRIVATE util)
+ list(APPEND LIBS -lutil)
+ endif()
++target_link_libraries(ptytty PRIVATE :libutmps.so.0.1)
+
+ configure_file(
+ libptytty.pc.in
diff --git a/user/libpwquality/APKBUILD b/user/libpwquality/APKBUILD
index 8b0c98a81..48e123d7c 100644
--- a/user/libpwquality/APKBUILD
+++ b/user/libpwquality/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libpwquality
-pkgver=1.4.0
+pkgver=1.4.2
pkgrel=0
pkgdesc="Password quality checking library"
url=" "
@@ -13,7 +13,6 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-lang py3-pwquality:py3"
source="https://github.com/libpwquality/libpwquality/releases/download/libpwquality-$pkgver/libpwquality-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,12 +26,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -43,4 +40,4 @@ py3() {
mv "$pkgdir"/usr/lib/python3* "$subpkgdir"/usr/lib/
}
-sha512sums="b8049f8b71bbfd4d345dbd4c4cffd29e9029b0fca4c95527af54d11a3b06e4708236b630df6c66738368298679c96cb3bf26b1b5d95cb3c5f7e1073cab8a98d9 libpwquality-1.4.0.tar.bz2"
+sha512sums="6f395e94797cc565edae6de8f4c7c60736d07ffa849c9878ec4d867f8cb7bea6f08bdd20501791dd05b02d487f8fea66a02a30841c7cea6e86b5903eaf685879 libpwquality-1.4.2.tar.bz2"
diff --git a/user/libqaccessibilityclient/APKBUILD b/user/libqaccessibilityclient/APKBUILD
new file mode 100644
index 000000000..b046cbaa5
--- /dev/null
+++ b/user/libqaccessibilityclient/APKBUILD
@@ -0,0 +1,40 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libqaccessibilityclient
+pkgver=0.4.1
+pkgrel=0
+pkgdesc="KDE client-side accessibility library"
+url="https://www.kde.org/"
+arch="all"
+options="!check" # Requires running X11 session.
+license="LGPL-2.1+"
+depends="at-spi2-core"
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev"
+subpackages="$pkgname-dev"
+source="https://download.kde.org/stable/libqaccessibilityclient/libqaccessibilityclient-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DBUILD_TESTING:BOOL=OFF \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="d5c168ff39f4bb67f18120eea50f8e02a85d464a5bb6479c48dfdb02ea9bf0cc379cbed4da7d882b718a1e1723d3a00528fcb26903b617b43029fde25e82cb3c libqaccessibilityclient-0.4.1.tar.xz"
diff --git a/user/libqalculate/APKBUILD b/user/libqalculate/APKBUILD
index 0a02a5926..85c26c019 100644
--- a/user/libqalculate/APKBUILD
+++ b/user/libqalculate/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libqalculate
-pkgver=2.8.1
-pkgrel=0
+pkgver=3.6.0
+pkgrel=1
pkgdesc="Library implementing a powerful, versatile desktop calculator"
url="https://qalculate.github.io/"
arch="all"
@@ -12,11 +12,9 @@ depends=""
depends_dev="gmp-dev mpfr-dev"
makedepends="$depends_dev curl-dev icu-dev intltool libxml2-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang qalc"
-source="https://github.com/Qalculate/libqalculate/releases/download/v$pkgver/libqalculate-$pkgver.tar.gz
- "
+source="https://github.com/Qalculate/libqalculate/releases/download/v$pkgver/libqalculate-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,12 +26,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -43,4 +39,4 @@ qalc() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}
-sha512sums="a258bf4f67db70263626ac77822afc75fd7a9e5af2feb1930314daff219865b28c43e82fef6ceae4f3f23957447d6eaebdc709e606d28457bca0f47eefb9274a libqalculate-2.8.1.tar.gz"
+sha512sums="afef26633d28f4c9b018a17056bf9645118b2e8698d4d5ba76a4a7df783503579381db448a5d557059fc7629d175385353d7eabeef3636ec0cad669fd68e5d0f libqalculate-3.6.0.tar.gz"
diff --git a/user/libqmi/APKBUILD b/user/libqmi/APKBUILD
new file mode 100644
index 000000000..fe44ce40b
--- /dev/null
+++ b/user/libqmi/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libqmi
+pkgver=1.24.8
+pkgrel=0
+pkgdesc="Library for interfacing with Qualcomm modems"
+url="https://www.freedesktop.org/wiki/Software/libqmi/"
+arch="all"
+license="LGPL-2.0+"
+depends=""
+makedepends="glib-dev libgudev-dev python3"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://www.freedesktop.org/software/libqmi/libqmi-$pkgver.tar.xz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --disable-more-warnings
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="b60ac355792373afbb202b2791c641468b48a1e54e5f34336fe37fa799c24ac566d6070ba4faaaf6b5693ae2bb5cc75c1240c7f2ee04c8e35eeeb66ec2677093 libqmi-1.24.8.tar.xz"
diff --git a/user/libqrcodegen/APKBUILD b/user/libqrcodegen/APKBUILD
new file mode 100644
index 000000000..28b6e890e
--- /dev/null
+++ b/user/libqrcodegen/APKBUILD
@@ -0,0 +1,31 @@
+# Contributor: Max Rees <maxcrees@me.com>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=libqrcodegen
+pkgver=1.5.0
+pkgrel=0
+pkgdesc="Multi-language QR code generation library"
+url="https://www.nayuki.io/page/qr-code-generator-library"
+arch="all"
+options="!dbg !check" # No test suite.
+license="MIT"
+depends=""
+makedepends=""
+source="libqrcodegen-$pkgver.tar.gz::https://github.com/nayuki/QR-Code-generator/archive/v$pkgver.tar.gz
+ cxxflags.patch
+ "
+builddir="$srcdir/QR-Code-generator-$pkgver"
+
+build() {
+ CXXFLAGS="$CXXFLAGS -fPIC" make -C cpp
+}
+
+package() {
+ install -Dm644 cpp/libqrcodegen.a "$pkgdir"/usr/lib/libqrcodegencpp.a
+ for i in QrCode QrSegment BitBuffer; do
+ install -Dm644 cpp/"$i".hpp \
+ "$pkgdir"/usr/include/qrcodegen/"$i".hpp
+ done
+}
+
+sha512sums="f7887bb1901a7de3f198c7483c35c26552fc51b4a25a5a0e5878562ab9742fc55da33eb01984aab35866b0f092405da3462dc389d125c8c474e4312a57d4183e libqrcodegen-1.5.0.tar.gz
+0d0a48eaa084c0ce2ac1acc3c634e5cea4a56864b18aab740ff0f0513b3dc300ec5dfde2e2dd86f3031102de565b849ec11d3fe721862c73bb0df89395103a97 cxxflags.patch"
diff --git a/user/libqrcodegen/cxxflags.patch b/user/libqrcodegen/cxxflags.patch
new file mode 100644
index 000000000..1007469dd
--- /dev/null
+++ b/user/libqrcodegen/cxxflags.patch
@@ -0,0 +1,13 @@
+--- QR-Code-generator-1.5.0/cpp/Makefile 2019-07-15 23:16:50.000000000 +0000
++++ QR-Code-generator-1.5.0/cpp/Makefile 2020-02-04 05:42:53.910203051 +0000
+@@ -30,10 +30,6 @@
+
+ # Mandatory compiler flags
+ CXXFLAGS += -std=c++11
+-# Diagnostics. Adding '-fsanitize=address' is helpful for most versions of Clang and newer versions of GCC.
+-CXXFLAGS += -Wall -fsanitize=undefined
+-# Optimization level
+-CXXFLAGS += -O1
+
+
+ # ---- Controlling make ----
diff --git a/user/libqrencode/APKBUILD b/user/libqrencode/APKBUILD
index 12690b8d7..9d4c61206 100644
--- a/user/libqrencode/APKBUILD
+++ b/user/libqrencode/APKBUILD
@@ -1,4 +1,4 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libqrencode
pkgver=4.0.2
@@ -8,19 +8,18 @@ url="https://fukuchi.org/works/qrencode/index.html"
arch="all"
options="!check" # No test suite.
license="LGPL-2.1+"
+depends=""
makedepends="libpng-dev libtool"
subpackages="$pkgname-dev $pkgname-doc"
source="https://fukuchi.org/works/qrencode/qrencode-$pkgver.tar.bz2"
builddir="$srcdir/qrencode-$pkgver"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,7 +32,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libqtxdg/APKBUILD b/user/libqtxdg/APKBUILD
index e515a1dc4..966f672cc 100644
--- a/user/libqtxdg/APKBUILD
+++ b/user/libqtxdg/APKBUILD
@@ -1,24 +1,23 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libqtxdg
-pkgver=3.3.1
+pkgver=3.12.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="Qt5-based library implementing the XDG spec"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
arch="all"
options="!check" # Test suite requires X11.
license="LGPL-2.1+"
depends=""
-makedepends="cmake extra-cmake-modules lxqt-build-tools>=0.6.0 qt5-qtbase-dev qt5-qtsvg-dev"
+makedepends="cmake extra-cmake-modules lxqt-build-tools>=$_lxqt qt5-qtbase-dev qt5-qtsvg-dev"
subpackages="$pkgname-dev"
source="https://github.com/lxqt/libqtxdg/releases/download/$pkgver/libqtxdg-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -28,18 +27,16 @@ build() {
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_TESTS=True \
-DBUILD_DEV_UTILS=True \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- make test
+ make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="f0fdb95f20ee49becf770455a513178bb3ce63ee460e8bbaac8d40f50ae47a139ff518021c8fc19254bbd777b67bc7f2754302de7e2bb6cdf929bc559a1b51f3 libqtxdg-3.3.1.tar.xz"
+sha512sums="9db46b0dddb027a24e1c19a2e3679014735cc246f15d32bc5fb9e778cd7d8fb57c9b105f819091308002f0a2eff8269920ecc0d7bd5ce8a01fbaf0b37e61a76e libqtxdg-3.12.0.tar.xz"
diff --git a/user/libqmatrixclient/APKBUILD b/user/libquotient/APKBUILD
index 7dbe67024..4eb2070be 100644
--- a/user/libqmatrixclient/APKBUILD
+++ b/user/libquotient/APKBUILD
@@ -1,17 +1,19 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=libqmatrixclient
-pkgver=0.5.1.2
+pkgname=libquotient
+pkgver=0.5.3.2
pkgrel=0
pkgdesc="Library to interface with Matrix chat systems using Qt 5"
-url="https://matrix.org/docs/projects/sdk/libqmatrixclient.html"
+url="https://matrix.org/docs/projects/sdks/#lib-q-matrix-client"
arch="all"
license="LGPL-2.1+"
depends=""
depends_dev="qt5-qtbase-dev"
makedepends="$depends_dev cmake qt5-qtmultimedia-dev"
subpackages="$pkgname-dev"
-source="libqmatrixclient-$pkgver.tar.gz::https://github.com/QMatrixClient/libqmatrixclient/archive/$pkgver.tar.gz"
+replaces="libqmatrixclient"
+source="libquotient-$pkgver.tar.gz::https://github.com/quotient-im/libQuotient/archive/$pkgver.tar.gz"
+builddir="$srcdir"/libQuotient-$pkgver
build() {
if [ "$CBUILD" != "$CHOST" ]; then
@@ -23,8 +25,7 @@ build() {
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
- -DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
@@ -36,4 +37,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="4e7cac3cc6a1ffc2a5a5ebf5c38dec72c3293f96b56d533838dea745a9b0de9a1ab14da666efcdad4f7d7a70279b922a0dbb3a3e26d1ad83f5b98d04fc9912a2 libqmatrixclient-0.5.1.2.tar.gz"
+sha512sums="b887432ba7fb2b89c72ae5342fbd11b0066770851e8d0ea85ae4d6375bca726a5ee601c4f3d35a11fa1f2ef679ad5436917c08139e114f91516ccb370321e428 libquotient-0.5.3.2.tar.gz"
diff --git a/user/libqxp/APKBUILD b/user/libqxp/APKBUILD
index 89f03aa6f..940d74333 100644
--- a/user/libqxp/APKBUILD
+++ b/user/libqxp/APKBUILD
@@ -2,14 +2,14 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=libqxp
pkgver=0.0.2
-pkgrel=0
+pkgrel=1
pkgdesc="Import filter and tools for QuarkXPress documents"
url="https://wiki.documentfoundation.org/DLP/Libraries/libqxp"
arch="all"
license="MPL-2.0"
depends=""
-makedepends="librevenge-dev icu-dev doxygen"
checkdepends="cppunit-dev"
+makedepends="librevenge-dev icu-dev doxygen"
subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
source="https://dev-www.libreoffice.org/src/$pkgname/$pkgname-$pkgver.tar.xz"
@@ -23,9 +23,7 @@ build() {
--infodir=/usr/share/info \
--localstatedir=/var \
make
-
- cd docs
- make
+ make -C docs
}
check() {
diff --git a/user/libraw/APKBUILD b/user/libraw/APKBUILD
index 0318fcd26..881e60074 100644
--- a/user/libraw/APKBUILD
+++ b/user/libraw/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libraw
-pkgver=0.19.2
-pkgrel=0
+pkgver=0.19.5
+pkgrel=1
pkgdesc="Read RAW image files from digital cameras"
url="https://www.libraw.org/"
arch="all"
@@ -10,11 +10,16 @@ license="LGPL-2.1-only OR CDDL-1.0"
depends=""
makedepends="jasper-dev lcms2-dev libjpeg-turbo-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.libraw.org/data/LibRaw-$pkgver.tar.gz"
+source="https://www.libraw.org/data/LibRaw-$pkgver.tar.gz
+ CVE-2020-15503.patch
+ "
builddir="$srcdir/LibRaw-$pkgver"
+# secfixes:
+# 0.19.5-r1:
+# - CVE-2020-15503
+
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +31,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="163b783f26887219d02694c6ca7cdc5571b15efe3922f7e3ca122a875568bd060c40a364451ea94af44c2ae48705bf96cbef196c7e935e42efe6ee316bb291fa LibRaw-0.19.2.tar.gz"
+sha512sums="4560045f75e6d2ab0d1d8686075f3a0e26a5d7ce693b48508110a2c31d19055d58983c24852da0abb64fa90db5e20f24b87aa7537ed04d958c38c8b265a7e826 LibRaw-0.19.5.tar.gz
+49feadef114b219222c0ca143f45aaa1595b7c7a4a8f8472cd6f18449082d75b3fb4314e4beba549f8f69bc49d7790777129ff1f12ee8a110988fdf12f20caae CVE-2020-15503.patch"
diff --git a/user/libraw/CVE-2020-15503.patch b/user/libraw/CVE-2020-15503.patch
new file mode 100644
index 000000000..94c28b6ab
--- /dev/null
+++ b/user/libraw/CVE-2020-15503.patch
@@ -0,0 +1,131 @@
+--- a/libraw/libraw_const.h.orig 2020-07-03 11:22:46.761804592 -0500
++++ b/libraw/libraw_const.h 2020-07-03 11:23:02.620793431 -0500
+@@ -24,6 +24,12 @@
+ #define LIBRAW_MAX_ALLOC_MB 2048L
+ #endif
+
++/* limit thumbnail size, default is 512Mb*/
++#ifndef LIBRAW_MAX_THUMBNAIL_MB
++#define LIBRAW_MAX_THUMBNAIL_MB 512L
++#endif
++
++
+ /* Change to non-zero to allow (broken) CRW (and other) files metadata
+ loop prevention */
+ #ifndef LIBRAW_METADATA_LOOP_PREVENTION
+--- a/src/libraw_cxx.cpp.orig 2020-07-03 11:20:21.810906602 -0500
++++ b/src/libraw_cxx.cpp 2020-07-03 11:37:33.802869028 -0500
+@@ -3712,6 +3712,21 @@
+ return NULL;
+ }
+
++ if (T.tlength < 64u)
++ {
++ if (errcode)
++ *errcode = EINVAL;
++ return NULL;
++ }
++
++ if (INT64(T.tlength) > 1024ULL * 1024ULL * LIBRAW_MAX_THUMBNAIL_MB)
++ {
++ if (errcode)
++ *errcode = LIBRAW_TOO_BIG;
++ return NULL;
++ }
++
++
+ if (T.tformat == LIBRAW_THUMBNAIL_BITMAP)
+ {
+ libraw_processed_image_t *ret = (libraw_processed_image_t *)::malloc(sizeof(libraw_processed_image_t) + T.tlength);
+@@ -3976,6 +3991,12 @@
+ if (ID.toffset + est_datasize > ID.input->size() + THUMB_READ_BEYOND)
+ throw LIBRAW_EXCEPTION_IO_EOF;
+
++ if(INT64(T.theight) * INT64(T.twidth) > 1024ULL * 1024ULL * LIBRAW_MAX_THUMBNAIL_MB)
++ throw LIBRAW_EXCEPTION_IO_CORRUPT;
++
++ if (INT64(T.theight) * INT64(T.twidth) < 64ULL)
++ throw LIBRAW_EXCEPTION_IO_CORRUPT;
++
+ // some kodak cameras
+ ushort s_height = S.height, s_width = S.width, s_iwidth = S.iwidth, s_iheight = S.iheight;
+ ushort s_flags = libraw_internal_data.unpacker_data.load_flags;
+@@ -4237,6 +4258,25 @@
+ CHECK_ORDER_LOW(LIBRAW_PROGRESS_IDENTIFY);
+ CHECK_ORDER_BIT(LIBRAW_PROGRESS_THUMB_LOAD);
+
++#define THUMB_SIZE_CHECKT(A) \
++ do { \
++ if (INT64(A) > 1024ULL * 1024ULL * LIBRAW_MAX_THUMBNAIL_MB) throw LIBRAW_EXCEPTION_IO_CORRUPT; \
++ if (INT64(A) > 0 && INT64(A) < 64ULL) throw LIBRAW_EXCEPTION_IO_CORRUPT; \
++ } while (0)
++
++#define THUMB_SIZE_CHECKTNZ(A) \
++ do { \
++ if (INT64(A) > 1024ULL * 1024ULL * LIBRAW_MAX_THUMBNAIL_MB) throw LIBRAW_EXCEPTION_IO_CORRUPT; \
++ if (INT64(A) < 64ULL) throw LIBRAW_EXCEPTION_IO_CORRUPT; \
++ } while (0)
++
++
++#define THUMB_SIZE_CHECKWH(W,H) \
++ do { \
++ if (INT64(W)*INT64(H) > 1024ULL * 1024ULL * LIBRAW_MAX_THUMBNAIL_MB) throw LIBRAW_EXCEPTION_IO_CORRUPT; \
++ if (INT64(W)*INT64(H) < 64ULL) throw LIBRAW_EXCEPTION_IO_CORRUPT; \
++ } while (0)
++
+ try
+ {
+ if (!libraw_internal_data.internal_data.input)
+@@ -4267,6 +4307,7 @@
+
+ if (INT64(ID.toffset) + tsize > ID.input->size() + THUMB_READ_BEYOND)
+ throw LIBRAW_EXCEPTION_IO_EOF;
++ THUMB_SIZE_CHECKT(tsize);
+ }
+ else
+ {
+@@ -4280,6 +4321,7 @@
+ ID.input->seek(ID.toffset, SEEK_SET);
+ if (write_thumb == &LibRaw::jpeg_thumb)
+ {
++ THUMB_SIZE_CHECKTNZ(T.tlength);
+ if (T.thumb)
+ free(T.thumb);
+ T.thumb = (char *)malloc(T.tlength);
+@@ -4326,6 +4368,7 @@
+ {
+ if (t_bytesps > 1)
+ throw LIBRAW_EXCEPTION_IO_CORRUPT; // 8-bit thumb, but parsed for more bits
++ THUMB_SIZE_CHECKWH(T.twidth, T.theight);
+ int t_length = T.twidth * T.theight * t_colors;
+
+ if (T.tlength && T.tlength < t_length) // try to find tiff ifd with needed offset
+@@ -4351,8 +4394,12 @@
+ T.tcolors = 1;
+ }
+ T.tlength = total_size;
++ THUMB_SIZE_CHECKTNZ(T.tlength);
+ if (T.thumb)
+ free(T.thumb);
++
++ THUMB_SIZE_CHECKTNZ(T.tlength);
++
+ T.thumb = (char *)malloc(T.tlength);
+ merror(T.thumb, "ppm_thumb()");
+
+@@ -4400,10 +4447,15 @@
+ if (t_bytesps > 2)
+ throw LIBRAW_EXCEPTION_IO_CORRUPT; // 16-bit thumb, but parsed for more bits
+ int o_bps = (imgdata.params.raw_processing_options & LIBRAW_PROCESSING_USE_PPM16_THUMBS) ? 2 : 1;
++ THUMB_SIZE_CHECKWH(T.twidth, T.theight);
+ int o_length = T.twidth * T.theight * t_colors * o_bps;
+ int i_length = T.twidth * T.theight * t_colors * 2;
+ if (!T.tlength)
+ T.tlength = o_length;
++ THUMB_SIZE_CHECKTNZ(o_length);
++ THUMB_SIZE_CHECKTNZ(i_length);
++ THUMB_SIZE_CHECKTNZ(T.tlength);
++
+ ushort *t_thumb = (ushort *)calloc(i_length, 1);
+ ID.input->read(t_thumb, 1, i_length);
+ if ((libraw_internal_data.unpacker_data.order == 0x4949) == (ntohs(0x1234) == 0x1234))
diff --git a/user/libraw1394/APKBUILD b/user/libraw1394/APKBUILD
index 0c8bb3501..fadd2d415 100644
--- a/user/libraw1394/APKBUILD
+++ b/user/libraw1394/APKBUILD
@@ -1,4 +1,4 @@
-# Maintainer:
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libraw1394
pkgver=2.1.2
pkgrel=2
@@ -12,7 +12,6 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
source="https://kernel.org/pub/linux/libs/ieee1394/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,12 +24,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libraw1394/fix-types.patch b/user/libraw1394/fix-types.patch
deleted file mode 100644
index d82cf815a..000000000
--- a/user/libraw1394/fix-types.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-diff -ru libraw1394-2.1.0.orig/src/fw-iso.c libraw1394-2.1.0/src/fw-iso.c
---- libraw1394-2.1.0.orig/src/fw-iso.c 2012-06-27 23:10:19.000000000 +0300
-+++ libraw1394-2.1.0/src/fw-iso.c 2013-09-30 17:38:30.070506505 +0300
-@@ -303,7 +303,7 @@
- }
-
- static int handle_iso_event(raw1394handle_t handle,
-- struct epoll_closure *closure, __uint32_t events)
-+ struct epoll_closure *closure, uint32_t events)
- {
- fw_handle_t fwhandle = handle->mode.fw;
- struct fw_cdev_event_iso_interrupt *interrupt;
-diff -ru libraw1394-2.1.0.orig/src/fw.c libraw1394-2.1.0/src/fw.c
---- libraw1394-2.1.0.orig/src/fw.c 2012-07-08 21:27:52.000000000 +0300
-+++ libraw1394-2.1.0/src/fw.c 2013-09-30 17:38:30.070506505 +0300
-@@ -187,7 +187,7 @@
-
- static int
- handle_echo_pipe(raw1394handle_t handle,
-- struct epoll_closure *ec, __uint32_t events)
-+ struct epoll_closure *ec, uint32_t events)
- {
- quadlet_t value;
-
-@@ -258,7 +258,7 @@
-
- static int
- handle_device_event(raw1394handle_t handle,
-- struct epoll_closure *ec, __uint32_t events)
-+ struct epoll_closure *ec, uint32_t events)
- {
- fw_handle_t fwhandle = handle->mode.fw;
- union fw_cdev_event *u;
-@@ -421,7 +421,7 @@
-
- static int
- handle_inotify(raw1394handle_t handle, struct epoll_closure *ec,
-- __uint32_t events)
-+ uint32_t events)
- {
- fw_handle_t fwhandle = handle->mode.fw;
- struct inotify_event *event;
-diff -ru libraw1394-2.1.0.orig/src/fw.h libraw1394-2.1.0/src/fw.h
---- libraw1394-2.1.0.orig/src/fw.h 2012-07-08 21:27:52.000000000 +0300
-+++ libraw1394-2.1.0/src/fw.h 2013-09-30 17:38:42.330440087 +0300
-@@ -12,6 +12,7 @@
- #ifndef LIBRAW1394_FW_H
- #define LIBRAW1394_FW_H
-
-+#include <stdint.h>
- #include <stdlib.h>
- #include <byteswap.h>
-
-@@ -48,7 +49,7 @@
-
- struct epoll_closure {
- int (*func)(raw1394handle_t handle,
-- struct epoll_closure *closure, __uint32_t events);
-+ struct epoll_closure *closure, uint32_t events);
- };
-
- struct port {
diff --git a/user/librdkafka/APKBUILD b/user/librdkafka/APKBUILD
new file mode 100644
index 000000000..aff21f6f1
--- /dev/null
+++ b/user/librdkafka/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Alyx Wolcott <alyx@leuhta.com>
+# Maintainer: Alyx Wolcott <alyx@leuhta.com>
+pkgname=librdkafka
+pkgver=1.5.0
+pkgrel=0
+pkgdesc="The Apache Kafka C/C++ library"
+url="https://github.com/edenhill/librdkafka"
+arch="all"
+license="BSD-2-Clause"
+depends=""
+makedepends="zlib-dev zstd-dev openssl-dev lz4-dev bsd-compat-headers cyrus-sasl-dev"
+subpackages="$pkgname-dev"
+source="$pkgname-$pkgver.tar.gz::https://github.com/edenhill/$pkgname/archive/v$pkgver.tar.gz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="ccd8dd3e90c9315833610745c28e0ffa60786324c938c7cbbb2ff847d7493d1b72d97adf5e5210bbc87970047cfd7e58a85141534d227187f2f17c492bef4262 librdkafka-1.5.0.tar.gz"
diff --git a/user/libreoffice/APKBUILD b/user/libreoffice/APKBUILD
deleted file mode 100644
index b6968e4ab..000000000
--- a/user/libreoffice/APKBUILD
+++ /dev/null
@@ -1,488 +0,0 @@
-# Contributor: Jens Staal <staal1978@gmail.com>
-# Contributor: Timo Teräs <timo.teras@iki.fi>
-# Maintainer: Max Rees <maxcrees@me.com>
-
-# You probably don't want "srcdir", "pkgdir", or "deps" in CLEANUP,
-# and you definitely don't want "deps" in ERROR_CLEANUP.
-# Just "abuild clean undeps" once you're completely done.
-#
-# Build requirements:
-# * RAM:
-# 8 GB with Hulu in Chromium in the background is enough.
-#
-# * Disk space:
-# * Dependencies: 1131 MiB
-# * Downloads: 398 MiB
-# * Subtotal: 1529 MiB = 1.5 GiB
-# * Complete src: 33970 MiB
-# * Complete pkg: 9637 MiB
-# * All APKs: 2362 MiB = 2.3 GiB
-# * Subtotal: 45969 MiB = 44.9 GiB
-# * Grand total: 47498 MiB = 46.4 GiB
-#
-# Build stats:
-# * Run "abuild deps fetch" first.
-# * time abuild -r
-#
-# * x86_64 Intel i7-4810MQ (4 core 2.8 GHz, turbo to 3.8 GHz, no HT)
-# JOBS=4, 8 GB RAM
-# abuild -r 29590.16s user 1077.69s system 340% cpu 2:30:13.12 total
-
-pkgname=libreoffice
-pkgver=6.2.1.2
-pkgrel=0
-case "$pkgver" in
-*.*.*.*) _ver="${pkgver%.*}";;
-*.*.*) _ver="$pkgver";;
-esac
-pkgdesc="LibreOffice - Meta package for the full office suite"
-url="https://www.libreoffice.org/"
-# While the metapackage technically is empty and should be "noarch", there's
-# no easy way to change this to noarch and then change all of the subpackages
-# to have the correct arch. Setting $arch in a split function is forbidden,
-# and $subpackages doesn't really support setting $arch to anything other than
-# noarch.
-arch="all"
-options=""
-license="MPL-2.0 AND Apache-2.0 AND MIT AND X11 AND (MPL-1.1 OR GPL-2.0+ OR LGPL-2.1+) AND GPL-2.0+ AND GPL-3.0 AND GPL-3.0+ AND LGPL-2.1 AND LGPL-3.0+ AND BSD-3-Clause AND SISSL AND IJG AND CC-BY-SA-3.0"
-
-depends="$pkgname-base $pkgname-calc $pkgname-common $pkgname-draw
- $pkgname-impress $pkgname-math $pkgname-connector-postgres $pkgname-writer"
-# 1. Base dependencies
-# 2. GUIs - gen
-# 3. GUIs - gtk+2.0
-# 4. File formats
-makedepends="apr-dev bash bison boost-dev cairo-dev clucene-dev cmd:which
- coreutils cppunit-dev cups-dev dbus-glib-dev findutils flex fontconfig-dev
- fontforge-dev freetype-dev glm gperf gpgme-dev gst-plugins-base-dev
- gstreamer-dev harfbuzz-dev hunspell-dev hyphen-dev icu icu-dev lcms2-dev
- libcmis-dev libexttextcat-dev libjpeg-turbo-dev libnumbertext-dev libpng-dev
- libxml2-utils libxslt-dev mdds>=1.4.1 mythes-dev neon-dev nss-dev
- openldap-dev openssl-dev paxmark perl poppler-dev postgresql-dev python3-dev
- py3-lxml redland-dev sane-dev sed ucpp unixodbc-dev util-linux xmlsec-dev zip
-
- libepoxy-dev libxinerama-dev libxrandr-dev libxrender-dev libxext-dev
-
- gtk+2.0-dev gdk-pixbuf-dev glib-dev
-
- libabw-dev libcdr-dev libe-book-dev libepubgen-dev libetonyek-dev
- libfreehand-dev libmspub-dev libmwaw-dev libodfgen-dev liborcus-dev>=0.14
- libpagemaker-dev libqxp-dev libstaroffice-dev libvisio-dev libwpd-dev
- libwpg-dev libwps-dev libzmf-dev
-"
-
-# -common also depends on these fonts
-_fonts="ttf-liberation ttf-dejavu ttf-carlito"
-checkdepends="$_fonts"
-
-# The order here is important.
-# -doc comes first since it redirects manpages from the other subpackages
-# -lang-* comes before -common since it redirects miscellaneous
-# language-specific files from -common
-subpackages="$pkgname-doc $pkgname-base $pkgname-gtk2
- $pkgname-calc $pkgname-draw $pkgname-impress $pkgname-math
- $pkgname-connector-postgres $pkgname-writer"
-source="https://download.documentfoundation.org/$pkgname/src/$_ver/$pkgname-$pkgver.tar.xz
- https://download.documentfoundation.org/$pkgname/src/$_ver/$pkgname-dictionaries-$pkgver.tar.xz
- https://download.documentfoundation.org/$pkgname/src/$_ver/$pkgname-translations-$pkgver.tar.xz
- https://download.documentfoundation.org/$pkgname/src/$_ver/$pkgname-help-$pkgver.tar.xz
- linux-musl.patch
- fix-execinfo.patch
- fix-includes.patch
- gettext-tiny.patch
- disable-crc-test.patch
- disable-outdated-font-test.patch
- disable-mariadbc.patch
- disable-mysqlc.patch
- boost.patch
-"
-ldpath="/usr/lib/$pkgname/program"
-
-_languages="af:Afrikaans:MPL-2.0 AND Public-Domain AND LGPL-3.0 AND LGPL-2.1+ AND Apache-2.0
- am:Amharic:MPL-2.0 AND Apache-2.0
- an:Aragonese:MPL-1.1 OR GPL-3.0+ OR LGPL-3.0+
- ar:Arabic:MPL-2.0 AND (GPL-2.0+ OR LGPL-2.1+ OR MPL-1.1+) AND Apache-2.0
- as:Assamese:MPL-2.0 AND Apache-2.0
- ast:Asturian:MPL-2.0 AND Apache-2.0
- be:Belarusian:MPL-2.0 AND CC-BY-SA-3.0 AND Apache-2.0
- bg:Bulgarian:MPL-2.0 AND GPL-2.0+ AND Apache-2.0
- bn:Bengali:MPL-2.0 AND GPL-2.0 AND Apache-2.0
- bn_in:Bengali (India):MPL-2.0 AND Apache-2.0
- bo:Tibetan:MPL-2.0 AND Apache-2.0
- br:Breton:MPL-2.0 AND LGPL-3.0 AND Apache-2.0
- brx:Bodo:MPL-2.0 AND Apache-2.0
- bs:Bosnian:MPL-2.0 AND Apache-2.0
- ca:Catalan:MPL-2.0 AND GPL-2.0+ AND GPL-3.0+ AND (GPL-3.0+ OR LGPL-3.0+) AND Apache-2.0
- ca_valencia:Catalan (Valencian):MPL-2.0 AND Apache-2.0
- cs:Czech:MPL-2.0 AND Custom AND Apache-2.0
- cy:Welsh (Cymraeg):MPL-2.0 AND Apache-2.0
- da:Danish:MPL-2.0 AND (GPL-2.0 OR LGPL-2.1 OR MPL-1.1) AND Apache-2.0
- de:German:MPL-2.0 AND (GPL-2.0 OR GPL-3.0 OR OASIS-0.1) AND Apache-2.0
- dgo:Dogri proper:MPL-2.0 AND Apache-2.0
- dz:Dzongkha:MPL-2.0 AND Apache-2.0
- el:Greek:MPL-2.0 AND (GPL-2.0 OR LGPL-2.1 OR MPL-1.1) AND Apache-2.0
- en_gb:English (UK):MPL-2.0
- en_us:English (US):MPL-2.0 AND Custom AND MIT AND (MPL-1.1 OR GPL-3.0+ OR LGPL-3.0+) AND GPL-2.0+ AND LGPL-2.1+ AND Apache-2.0
- en_za:English (South Africa):MPL-2.0
- eo:Esperanto:MPL-2.0 AND Apache-2.0
- es:Spanish:MPL-2.0 AND (GPL-3.0 OR LGPL-3.0 OR MPL-1.1) AND LGPL-2.1 AND Apache-2.0
- et:Estonian:MPL-2.0 AND LGPL-2.1 AND LPPL-1.3c AND Apache-2.0
- eu:Basque:MPL-2.0 AND Apache-2.0
- fa:Persian (Farsi):MPL-2.0 AND Apache-2.0
- fi:Finnish:MPL-2.0 AND Apache-2.0
- fr:French:MPL-2.0 AND (MPL-1.1+ OR GPL-2.0+ OR LGPL-2.1+) AND LPPL-1.3c AND LGPL-2.1+ AND Apache-2.0
- ga:Irish:MPL-2.0 AND Apache-2.0
- gd:Scottish Gaelic:MPL-2.0 AND GPL-3.0 AND Apache-2.0
- gl:Galician:MPL-2.0 AND GPL-3.0 AND Apache-2.0
- gu:Gujarati:MPL-2.0 AND GPL-3.0 AND Apache-2.0
- gug:Guaraní (Paraguay):MPL-2.0 AND Apache-2.0
- he:Hebrew:MPL-2.0 AND GPL-3.0 AND Apache-2.0
- hi:Hindi:MPL-2.0 AND GPL-2.0+ AND Apache-2.0
- hr:Croatian:MPL-2.0 AND LGPL-2.1 AND Apache-2.0
- hu:Hungarian:MPL-2.0 AND (GPL-2.0+ OR LGPL-2.1+ OR MPL-1.1+) AND Apache-2.0
- id:Indonesian:MPL-2.0 AND Apache-2.0
- is:Icelandic:MPL-2.0 AND CC-BY-SA-3.0 AND Apache-2.0
- it:Italian:MPL-2.0 AND GPL-3.0 AND LGPL-3.0 AND Apache-2.0
- ja:Japanese:MPL-2.0 AND Apache-2.0
- ka:Georgian:MPL-2.0 AND Apache-2.0
- kk:Kazakh:MPL-2.0 AND Apache-2.0
- km:Khmer:MPL-2.0 AND Apache-2.0
- kmr_latn:Kurmanji Kurdish (Latin):MPL-2.0 AND Apache-2.0
- kn:Kannada:MPL-2.0 AND Apache-2.0
- ko:Korean:MPL-2.0 AND Apache-2.0
- kok:Konkani:MPL-2.0 AND Apache-2.0
- ks:Kashmiri:MPL-2.0 AND Apache-2.0
- lb:Luxembourgish:MPL-2.0 AND Apache-2.0
- lo:Lao:MPL-2.0 AND LGPL-2.1 AND Apache-2.0
- lt:Lithuanian:MPL-2.0 AND BSD-3-Clause AND LPPL-1.3c AND Apache-2.0
- lv:Latvian:MPL-2.0 AND LGPL-2.1 AND Apache-2.0
- mai:Maithili:MPL-2.0 AND Apache-2.0
- mk:Macedonian:MPL-2.0 AND Apache-2.0
- ml:Malayalam:MPL-2.0 AND Apache-2.0
- mn:Mongolian:MPL-2.0 AND Apache-2.0
- mni:Meithei (Manipuri):MPL-2.0 AND Apache-2.0
- mr:Marathi:MPL-2.0 AND Apache-2.0
- my:Burmese:MPL-2.0 AND Apache-2.0
- nb:Norwegian (Bokmal):MPL-2.0 AND Apache-2.0
- ne:Nepali:MPL-2.0 AND LGPL-2.1 AND Apache-2.0
- nl:Dutch:MPL-2.0 AND (BSD-2-Clause OR CC-BY-3.0) AND Apache-2.0
- no:Norwegian:GPL-2.0
- nn:Nynorsk:MPL-2.0 AND Apache-2.0
- nr:Ndebele (South):MPL-2.0 AND Apache-2.0
- nso:Northern Sotho:MPL-2.0 AND Apache-2.0
- oc:Occitan:MPL-2.0 AND GPL-2.0+ AND Apache-2.0
- om:Oromo:MPL-2.0 AND Apache-2.0
- or:Oriya:MPL-2.0 AND Apache-2.0
- pa_in:Punjabi (India):MPL-2.0 AND Apache-2.0
- pl:Polish:MPL-2.0 AND (GPL OR LGPL OR MPL OR CC-SA-1.0) AND LGPL-3.0 AND LGPL-2.1 AND Apache-2.0
- pt:Portuguese:MPL-2.0 AND (GPL-2.0 OR LGPL-2.1 OR MPL-1.1) AND GPL-2.0 AND Apache-2.0
- pt_br:Portuguese (Brazil):MPL-2.0 AND (LGPL-3.0 OR MPL-1.1) AND (GPL-3.0+ OR LGPL-3.0+ OR MPL-1.1) AND Apache-2.0
- ro:Romanian:MPL-2.0 AND (GPL-2.0 OR LGPL-2.1 OR MPL-1.1) AND GPL-2.0 AND GPL-2.0+ AND Apache-2.0
- ru:Russian:MPL-2.0 AND (MPL-1.1 OR GPL OR LGPL) AND Custom AND LGPL AND Apache-2.0
- rw:Kinyarwanda:MPL-2.0 AND Apache-2.0
- sa_in:Sanskrit (India):MPL-2.0 AND Apache-2.0
- sat:Santali:MPL-2.0 AND Apache-2.0
- sd:Sindhi:MPL-2.0 AND Apache-2.0
- si:Sinhala:MPL-2.0 AND GPL-3.0 AND Apache-2.0
- sid:Sidamo:MPL-2.0 AND Apache-2.0
- sk:Slovak:MPL-2.0 AND (GPL-2.0 OR LGPL-2.1 OR MPL-1.1) AND LPPL-1.3c AND MIT AND Apache-2.0
- sl:Slovenian:MPL-2.0 AND (GPL-2.0 OR LGPL-2.1) AND LGPL-2.1 AND Apache-2.0
- sq:Albanian:MPL-2.0 AND Apache-2.0
- sr:Serbian:MPL-2.0 AND (LGPL-2.1+ OR MPL-1.1+ OR GPL-2.0+ OR CC-BY-SA-3.0) AND LGPL-2.1+ AND Apache-2.0
- sr_latn:Serbian (Latin):MPL-2.0 AND Apache-2.0
- ss:Swati:MPL-2.0 AND Apache-2.0
- st:Southern Sotho:MPL-2.0 AND Apache-2.0
- sv:Swedish:MPL-2.0 AND LGPL-3.0 AND Custom AND Apache-2.0
- sw_tz:Swahili (Tanzania):MPL-2.0 AND LGPL-2.1 AND Apache-2.0
- ta:Tamil:MPL-2.0 AND Apache-2.0
- te:Telugu:MPL-2.0 AND GPL-2.0+ AND (GPL-3.0+ OR LGPL-3.0+) AND Apache-2.0
- tg:Tajik:MPL-2.0 AND Apache-2.0
- th:Thai:MPL-2.0 AND LGPL-2.1 AND Apache-2.0
- tn:Tswana:MPL-2.0 AND Apache-2.0
- tr:Turkish:MPL-2.0 AND Apache-2.0
- ts:Tsonga:MPL-2.0 AND Apache-2.0
- tt:Tatar:MPL-2.0 AND Apache-2.0
- ug:Uyghur:MPL-2.0 AND Apache-2.0
- uk:Ukrainian:MPL-2.0 AND (GPL-2.0+ OR LGPL-2.1+ OR MPL-1.1) AND GPL-2.0+ AND Apache-2.0
- uz:Uzbek:MPL-2.0 AND Apache-2.0
- ve:Venda:MPL-2.0 AND Apache-2.0
- vi:Vietnamese:MPL-2.0 AND GPL-2.0 AND Apache-2.0
- xh:Xhosa:MPL-2.0 AND Apache-2.0
- zh_cn:Simplified Chinese (People's Republic of China):MPL-2.0 AND Apache-2.0
- zh_tw:Traditional Chinese (Taiwan):MPL-2.0 AND Apache-2.0
- zu:Zulu:MPL-2.0 AND LGPL-2.1 AND Apache-2.0
-"
-_lo_lang() {
- local lang="$1"
- case "$lang" in
- # e.g. zh_cn -> zh_CN
- *_[a-z][a-z]) lang="${lang%_*}_$(printf '%s' "${lang#*_}" | tr '[a-z]' '[A-Z]')";;
- # e.g. sr_latn -> sr_Latn
- *_latn) lang="${lang%_latn}_Latn";;
- esac
- printf '%s' "$lang"
-}
-_lo_languages=""
-for _lang in $(printf '%s' "$_languages" | cut -d : -f 1); do
- subpackages="$subpackages $pkgname-lang-$_lang:_split_lang:noarch"
- # Seriously now. We even have secret languages that are not recognized
- # by the configure script. These two languages only have dictionaries.
- # c.f. _split_lang()
- [ "$_lang" = "an" ] || [ "$_lang" = "no" ] && continue
-
- # --with-languages seems to prefer dashes instead of underscores
- # when --with-myspell-dicts is given
- _lang="$(_lo_lang "$_lang" | tr _ -)"
- _lo_languages="$_lo_languages $_lang"
-done
-subpackages="$subpackages $pkgname-common"
-
-prepare() {
- default_prepare
- NOCONFIGURE=1 ./autogen.sh
-}
-
-build() {
- export PYTHON="python3"
- # Note: --with-parallelism must be specified since getconf does not
- # recognize _NPROCESSORS_ONLN
-
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --infodir=/usr/share/info \
- --localstatedir=/var \
- --with-vendor="Adélie Linux" \
- --enable-symbols \
- --with-parallelism="$JOBS" \
- --disable-online-update \
- --disable-fetch-external \
- --disable-dependency-tracking \
- --enable-release-build \
- --enable-split-app-modules \
- --enable-python=system \
- --with-tls=nss \
- --with-system-libs \
- --with-system-ucpp \
- --with-help \
- --without-system-dicts \
- --with-external-tar="$srcdir" \
- --with-lang="$_lo_languages" \
- --with-myspell-dicts \
- --without-fonts \
- --disable-firebird-sdbc \
- --disable-coinmp \
- --disable-lpsolve \
- --disable-gtk3 \
- --enable-gtk \
- --disable-qt5 \
- --disable-odk \
- --disable-avahi \
- --disable-scripting-beanshell \
- --disable-scripting-javascript \
- --disable-sdremote \
- --disable-sdremote-bluetooth \
- --disable-pdfium \
- --disable-ooenv \
- --without-java \
- --disable-epm \
- --enable-build-opensymbol
-
- # adding '-isystem /usr/include' make things break with gcc6
- # https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=823145
- sed -i -e 's:-isystem /usr/include[^/]::g' config_host.mk
-
- make build-nocheck
-}
-
-check() {
- make -k -j1 unitcheck
-}
-
-package() {
- make DESTDIR="$pkgdir" distro-pack-install
-}
-
-doc() {
- default_doc
- pkgdesc="LibreOffice - man pages"
- sed -i -e '\#^/usr/share/man#d' "$builddir"/file-lists/*.txt
-}
-
-_split() {
- local i
- for i in $(grep -v ^%dir "$builddir/file-lists/${1}_list.txt" | sort -u); do
- dirname="$(dirname $i)"
- [ -d "$subpkgdir/$dirname" ] || install -dm755 "$subpkgdir/$dirname"
- mv "$pkgdir/$i" "$subpkgdir/$i"
- done
-}
-
-_move_from() {
- orig_pkg="$1" # original owner of $path
- path="$2" # file/directory to move
- dest="$3" # destination directory, automatically under $subpkgdir
-
- sed -i -e "\\#^\\(%dir \\)*/${path#$pkgdir/}#d" \
- "$builddir/file-lists/${orig_pkg}_list.txt"
- [ -d "$subpkgdir/$dest" ] || install -dm755 "$subpkgdir/$dest"
- mv "$path" "$subpkgdir/$dest"
-}
-
-_split_lang() {
- local i lang entry dict dictdir auto autodir wiz wizdir logo logodir
- lang="${subpkgname#$pkgname-lang-}"
- entry="$(printf '%s' "$_languages" | grep "^\\s*$lang")"
- lang="$(_lo_lang "$lang")"
-
- pkgdesc="LibreOffice - $(printf '%s' "$entry" | cut -d : -f 2) language pack"
- license="$(printf '%s' "$entry" | cut -d : -f 3)"
- depends=""
-
- # Includes translations/messages and help packs initially
- _split "lang_$lang"
- # Everything else we must move by hand
-
- dictdir="usr/lib/libreoffice/share/extensions"
- case "$lang" in
- # en_US is installed by default, so it will own most of the English files
- en_US) dict="en";;
- pt) dict="pt-PT";;
- *) dict="$(printf '%s' "$lang" | tr _ -)";;
- esac
- if [ -d "$pkgdir/$dictdir/dict-$dict" ]; then
- _move_from common "$pkgdir/$dictdir/dict-$dict" "$dictdir"
- fi
- # Again, these languages only have dictionaries
- [ "$_lang" = "an" ] || [ "$_lang" = "no" ] && return 0
-
- autodir="usr/lib/libreoffice/share/autocorr"
- case "$lang" in
- de) auto="de";;
- en_US) auto="en-[A-Z][A-Z]";;
- en_*) auto="skip";;
- es) auto="es";;
- fr) auto="fr";;
- it) auto="it";;
- pt) auto="pt-PT";;
- pt_BR) auto="pt-BR";;
- *_[A-Z][A-Z]) auto="$(printf '%s' "$lang" | tr _ -)";;
- *_Latn) auto="${lang%_Latn}-Latn-[A-Z][A-Z]";;
- *) auto="$lang-[A-Z][A-Z]";;
- esac
- for i in $(find "$pkgdir/$autodir" -name "acor_$auto.dat"); do
- _move_from common "$i" "$autodir"
- done
-
- wizdir="usr/lib/libreoffice/share/wizards"
- case "$lang" in
- en_US) wiz="en_[A-Z][A-Z]";;
- en_*) wiz="skip";;
- *) wiz="$lang";;
- esac
- for i in $(find "$pkgdir/$wizdir" -name "resources_$wiz.properties"); do
- _move_from common "$i" "$wizdir"
- done
-
- logodir="usr/lib/libreoffice/share/Scripts/python/LibreLogo"
- case "$lang" in
- en_US) logo="en_[A-Z][A-Z]";;
- en_*) logo="skip";;
- *) logo="$lang";;
- esac
- for i in $(find "$pkgdir/$logodir" -name "LibreLogo_$logo.properties"); do
- _move_from common "$i" "$logodir"
- done
-}
-
-common() {
- pkgdesc="LibreOffice - common files"
- depends="$pkgname-lang-en_us $_fonts"
-
- _split common
-
- paxmark -m \
- "$subpkgdir"/usr/lib/libreoffice/program/soffice.bin \
- "$subpkgdir"/usr/lib/libreoffice/program/unopkg.bin
-
- mkdir -p "$subpkgdir/usr/share/appdata"
- mv "$pkgdir"/usr/share/appdata/*.xml "$subpkgdir/usr/share/appdata"
-
- mkdir -p "$subpkgdir"/usr/lib/libreoffice/share
- mv "$pkgdir"/usr/lib/libreoffice/share/libreofficekit \
- "$subpkgdir"/usr/lib/libreoffice/share/libreofficekit
-
- # At this point there should only be empty directories left in
- # the "libreoffice" metapackage
- if [ -n "$(find "$pkgdir" -type f)" ]; then
- error "Files still in 'libreoffice' package:"
- find "$pkgdir" -type f | sed "s#^$pkgdir/#\\t#"
- return 1
- fi
-}
-
-gtk2() {
- pkgdesc="LibreOffice - GTK+2.0 GUI"
- depends="libreoffice-common"
- install_if="$pkgname-common=$pkgver-r$pkgrel gtk+2.0"
- _split gnome
-}
-
-base() {
- pkgdesc="LibreOffice - database frontend"
- depends="libreoffice-common"
- _split base
-}
-
-calc() {
- pkgdesc="LibreOffice - spreadsheet editor"
- depends="libreoffice-common"
- _split calc
-}
-
-draw() {
- pkgdesc="LibreOffice - drawing application"
- depends="libreoffice-common"
- _split draw
-}
-
-impress() {
- pkgdesc="LibreOffice - presentation application"
- depends="libreoffice-common"
- _split impress
-}
-
-math() {
- pkgdesc="LibreOffice - equation editor"
- depends="libreoffice-common"
- _split math
-}
-
-postgres() {
- pkgdesc="LibreOffice - connector for PostgreSQL database"
- depends="libreoffice-base"
- _split postgresql
-}
-
-writer() {
- pkgdesc="LibreOffice - word processor"
- depends="libreoffice-common"
- _split writer
-}
-
-sha512sums="0d18e5f470b3e8a70d1679c7acdc91887cbbbb2032e1eb452308d257a6bc02d42e93fec66709c84838f7565e42217ac1d2b121e3356f7c754fc7ee33b7c6f0ef libreoffice-6.2.1.2.tar.xz
-e9acd76b783a7a0b3344f267a8105ede52b2da92d6c1ae2b54237ffc30d4f87a8e126bb597ab3c4d993bb1e89f1b5d16921ea3d83419c1b5b69cb83aae007bd3 libreoffice-dictionaries-6.2.1.2.tar.xz
-4dafc81179fbb8a0b10c774ec072d0abdcdfebbcd5eb8341802bd7d515bd0ea5fb117729ae66b5666da5927a567b54a23c870bcd16ba64478016a4ab84f7f3a5 libreoffice-translations-6.2.1.2.tar.xz
-c8bd2765b46162203d0b0acc06dc76108bd0093020981e1030d26d5a8771fb9494337c16cc99c10b7de7a906e713dd27555b0af8754d142387c3a968fa663a2f libreoffice-help-6.2.1.2.tar.xz
-600e4eb772b1e24e06b906682fc4d4114d62ede3adcde3639482edafef56e970ac09925fcd910dccee8a14f5ca049ac3de3f279ebcc2be3a611e3883f3a7efb8 linux-musl.patch
-ed18d6bc6e03369e17b50e6b969ac0804984c1416fdfe7120251d11c59a791bb0fc8956f848ee8697fce3c074f2943b03d4441aa531ff9504be2f497a8e7e412 fix-execinfo.patch
-a1d704c78e3decb83eb45b0f180e7b352d58b4005a7e43dd8fddcb4829c932da4f0dd3d4dfeaa2313c1520273e9e1c64979a0ecbe5d72737926c54d5658bd2ff fix-includes.patch
-bac06a1f0f6ef3e5860ec340470583b2a7ff079efa9efee9119ae1ac320b97ecbfdb7eba63975d4f7a4e2476d3b01a9508a53a84b49df0a8febe12e17b685529 gettext-tiny.patch
-6a039ba592a23b8db1dd5c8d5dffbc9562270de691d2eb1e1c420f8632532c0fce14a0f3844dc2e6f6b6b04655c40230bd69fd81d1ae6f0bd16f0e88ce0a2783 disable-crc-test.patch
-4ffc389a3c545d37d152bb52390c3abd06a32eb9fee03110c07e8b57f9b9d1be68fdc5092ad0be76f6540367a1f1d2e9e32d519021d8205847594edb811da428 disable-outdated-font-test.patch
-c1925fe5833410c6a4b47a1723e67ce3898fc01ebded766023855cd93f290a6788638a86a8595e112ab788628c0ea7642c41d7ff987ba9117c2e079a99a3b29f disable-mariadbc.patch
-01ef207d0b3ab1ded5edadd2d05cefe65d7c2dc4285abee12d7fbb61c92b2a3e37d5cfe5bb8f5ea9a40fd2918396ec25b473a916012e04732ebbe79ee6768a21 disable-mysqlc.patch
-431f55b4ec96caa94b0f55d3691931ad65320ecacbd8f9c9f477107136866ba614683eb77458006960240918392e995a567f5b5436d75003ac036f6d24a77e0a boost.patch"
diff --git a/user/libreoffice/boost.patch b/user/libreoffice/boost.patch
deleted file mode 100644
index cd8ef9dba..000000000
--- a/user/libreoffice/boost.patch
+++ /dev/null
@@ -1,17 +0,0 @@
-After https://github.com/boostorg/logic/commit/23cd89d4c80f build fails:
-
-sfx2/source/appl/shutdownicon.cxx:170:12: error: no viable conversion from returned value of type 'boost::logic::tribool' to function return type 'bool'
- return loaded;
- ^~~~~~
-
---- lo/sfx2/source/appl/shutdownicon.cxx.orig 2018-06-19 22:27:30 UTC
-+++ lo/sfx2/source/appl/shutdownicon.cxx
-@@ -167,7 +167,7 @@ bool LoadModule()
- #endif // ENABLE_QUICKSTART_APPLET
- }
- assert(!boost::logic::indeterminate(loaded));
-- return loaded;
-+ return bool{loaded};
- }
-
- }
diff --git a/user/libreoffice/disable-crc-test.patch b/user/libreoffice/disable-crc-test.patch
deleted file mode 100644
index d2b9ab551..000000000
--- a/user/libreoffice/disable-crc-test.patch
+++ /dev/null
@@ -1,39 +0,0 @@
---- libreoffice-6.2.1.2/vcl/qa/cppunit/svm/svmtest.cxx 2018-09-10 16:08:33.000000000 -0400
-+++ libreoffice-6.2.1.2/vcl/qa/cppunit/svm/svmtest.cxx 2018-09-18 15:25:41.030304773 -0400
-@@ -760,14 +760,13 @@ void SvmTest::checkBitmaps(const GDIMeta
- xmlDocPtr pDoc = dumpMeta(rMetaFile);
-
- #ifdef LINUX
-- assertXPathAttrs(pDoc, "/metafile/bmp[1]", {{"x", "1"}, {"y", "2"}, {"crc", "b8dee5da"}});
-+ assertXPathAttrs(pDoc, "/metafile/bmp[1]", {{"x", "1"}, {"y", "2"},});
- assertXPathAttrs(pDoc, "/metafile/bmpscale[1]", {
-- {"x", "1"}, {"y", "2"}, {"width", "3"}, {"height", "4"}, {"crc", "281fc589"}
-+ {"x", "1"}, {"y", "2"}, {"width", "3"}, {"height", "4"},
- });
- assertXPathAttrs(pDoc, "/metafile/bmpscalepart[1]", {
- {"destx", "1"}, {"desty", "2"}, {"destwidth", "3"}, {"destheight", "4"},
- {"srcx", "2"}, {"srcy", "1"}, {"srcwidth", "4"}, {"srcheight", "3"},
-- {"crc", "5e01ddcc"}
- });
- #else
- assertXPathAttrs(pDoc, "/metafile/bmp[1]", {{"x", "1"}, {"y", "2"}, {"crc", "b8dee5da"}});
-@@ -816,16 +815,16 @@ void SvmTest::checkBitmapExs(const GDIMe
-
- #ifdef LINUX
- assertXPathAttrs(pDoc, "/metafile/bmpex[1]", {
-- {"x", "1"}, {"y", "2"}, {"crc", "b8dee5da"}, {"transparenttype", "bitmap"}
-+ {"x", "1"}, {"y", "2"}, {"transparenttype", "bitmap"}
- });
- assertXPathAttrs(pDoc, "/metafile/bmpexscale[1]", {
- {"x", "1"}, {"y", "2"}, {"width", "3"}, {"height", "4"},
-- {"crc", "281fc589"}, {"transparenttype", "bitmap"}
-+ {"transparenttype", "bitmap"}
- });
- assertXPathAttrs(pDoc, "/metafile/bmpexscalepart[1]", {
- {"destx", "1"}, {"desty", "2"}, {"destwidth", "3"}, {"destheight", "4"},
- {"srcx", "2"}, {"srcy", "1"}, {"srcwidth", "4"}, {"srcheight", "3"},
-- {"crc", "5e01ddcc"}, {"transparenttype", "bitmap"}
-+ {"transparenttype", "bitmap"}
- });
- #else
- assertXPathAttrs(pDoc, "/metafile/bmpex[1]", {
diff --git a/user/libreoffice/disable-mariadbc.patch b/user/libreoffice/disable-mariadbc.patch
deleted file mode 100644
index ada1d1e7a..000000000
--- a/user/libreoffice/disable-mariadbc.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-We don't have MariaDB yet and there is no ./configure option for it
-
---- libreoffice-6.2.1.2/configure.ac
-+++ libreoffice-6.2.1.2/configure.ac
-@@ -8471,7 +8471,7 @@ AC_SUBST(PYTHON_VERSION)
- AC_SUBST(PYTHON_VERSION_MAJOR)
- AC_SUBST(PYTHON_VERSION_MINOR)
-
--ENABLE_MARIADBC=TRUE
-+ENABLE_MARIADBC=
- if test "$_os" = "Android" -o "$_os" = "iOS"; then
- ENABLE_MARIADBC=
- fi
diff --git a/user/libreoffice/disable-mysqlc.patch b/user/libreoffice/disable-mysqlc.patch
deleted file mode 100644
index adcdd4275..000000000
--- a/user/libreoffice/disable-mysqlc.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From edf9184e33e58e8d0064354016ac56a2f0d9054b Mon Sep 17 00:00:00 2001
-From: Tor Lillqvist <tml@collabora.com>
-Date: Tue, 05 Mar 2019 17:28:55 +0200
-Subject: [PATCH] Make mysqlc conditional on MARIADBC, too
-
-Change-Id: I7e8541b8918ea5011fe9669d11b51c941544f794
-Reviewed-on: https://gerrit.libreoffice.org/68764
-Tested-by: Jenkins
-Reviewed-by: Tor Lillqvist <tml@collabora.com>
-Reviewed-on: https://gerrit.libreoffice.org/68783
-Reviewed-by: Michael Stahl <Michael.Stahl@cib.de>
----
-
-diff --git a/Repository.mk b/Repository.mk
-index 36b35b7..f4899a1 100644
---- a/Repository.mk
-+++ b/Repository.mk
-@@ -404,7 +404,7 @@
- $(call gb_Helper_optional,SCRIPTING,msforms) \
- mtfrenderer \
- $(if $(ENABLE_JAVA),mysql_jdbc) \
-- $(call gb_Helper_optional,DBCONNECTIVITY,mysqlc) \
-+ $(call gb_Helper_optional,MARIADBC,$(call gb_Helper_optional,DBCONNECTIVITY,mysqlc)) \
- numbertext \
- odbc \
- odfflatxml \
diff --git a/user/libreoffice/disable-outdated-font-test.patch b/user/libreoffice/disable-outdated-font-test.patch
deleted file mode 100644
index 02470d69a..000000000
--- a/user/libreoffice/disable-outdated-font-test.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-https://www.mail-archive.com/libreoffice@lists.freedesktop.org/msg217102.html
-
---- libreoffice-6.2.1.2/editeng/qa/unit/core-test.cxx 2019-02-26 10:41:25.000000000 -0500
-+++ libreoffice-6.2.1.2/editeng/qa/unit/core-test.cxx 2019-03-11 04:28:15.930763760 -0400
-@@ -198,11 +198,6 @@ void Test::testLineSpacing()
- const SvxLineSpacingItem& rLSItem = pNode->GetContentAttribs().GetItem(EE_PARA_SBL);
- CPPUNIT_ASSERT_EQUAL(SvxInterLineSpaceRule::Prop, rLSItem.GetInterLineSpaceRule());
- CPPUNIT_ASSERT_EQUAL(nSpace, rLSItem.GetPropLineSpace());
--
-- // Check the first line
-- ParagraphInfos aInfo = aEditEngine.GetParagraphInfos(0);
-- CPPUNIT_ASSERT_EQUAL(nExpMaxAscent, aInfo.nFirstLineMaxAscent);
-- CPPUNIT_ASSERT_EQUAL(nExpLineHeight, aEditEngine.GetLineHeight(0));
- };
-
- // Test first case - 60%
diff --git a/user/libreoffice/fix-execinfo.patch b/user/libreoffice/fix-execinfo.patch
deleted file mode 100644
index cb82b7d84..000000000
--- a/user/libreoffice/fix-execinfo.patch
+++ /dev/null
@@ -1,33 +0,0 @@
---- libreoffice-6.2.1.2/sal/osl/unx/backtrace.h
-+++ libreoffice-6.2.1.2/sal/osl/unx/backtrace.h
-@@ -20,7 +20,7 @@
- #ifndef INCLUDED_SAL_OSL_UNX_BACKTRACE_H
- #define INCLUDED_SAL_OSL_UNX_BACKTRACE_H
-
--#if defined (LINUX)
-+#if defined (LINUX) && defined (__GLIBC__)
-
- #include <execinfo.h>
-
---- libreoffice-6.2.1.2/sal/osl/unx/signal.cxx
-+++ libreoffice-6.2.1.2/sal/osl/unx/signal.cxx
-@@ -35,7 +35,7 @@
-
- #endif /* MACOSX */
-
--#ifdef LINUX
-+#if defined(LINUX) && defined(__GLIBC__)
- #include <execinfo.h>
- #include <link.h>
- #define INCLUDE_BACKTRACE
---- libreoffice-6.2.1.2/sal/osl/unx/backtrace.c
-+++ libreoffice-6.2.1.2/sal/osl/unx/backtrace.c
-@@ -279,7 +279,7 @@ void backtrace_symbols_fd( void **buffer
- }
- }
-
--#elif !defined LINUX
-+#elif !defined(__GLIBC__)
-
- int backtrace( void **buffer, int max_frames )
- {
diff --git a/user/libreoffice/fix-includes.patch b/user/libreoffice/fix-includes.patch
deleted file mode 100644
index a4adcd352..000000000
--- a/user/libreoffice/fix-includes.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- libreoffice-6.2.1.2/sd/source/ui/remotecontrol/BluetoothServer.cxx
-+++ libreoffice-6.2.1.2/sd/source/ui/remotecontrol/BluetoothServer.cxx
-@@ -21,7 +21,7 @@
- #include <dbus/dbus.h>
- #include <errno.h>
- #include <fcntl.h>
-- #include <sys/unistd.h>
-+ #include <unistd.h>
- #include <sys/socket.h>
- #include <bluetooth/bluetooth.h>
- #include <bluetooth/rfcomm.h>
diff --git a/user/libreoffice/gettext-tiny.patch b/user/libreoffice/gettext-tiny.patch
deleted file mode 100644
index a63f45553..000000000
--- a/user/libreoffice/gettext-tiny.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-gettext-tiny does not currently ship msguniq, so let's cheat around it
-
---- libreoffice-6.2.1.2/solenv/gbuild/AllLangMoTarget.mk
-+++ libreoffice-6.2.1.2/solenv/gbuild/AllLangMoTarget.mk
-@@ -40,10 +40,10 @@
- $(call gb_Helper_abbreviate_dirs,\
- mkdir -p $(dir $@) && \
- if test -e $(gb_POLOCATION)/$(LANGUAGE)/$(POLOCATION)/messages.po; then \
-- $(MSGUNIQ) --force-po $(gb_POLOCATION)/$(LANGUAGE)/$(POLOCATION)/messages.po | $(MSGFMT) - -o $@; \
-+ cat $(gb_POLOCATION)/$(LANGUAGE)/$(POLOCATION)/messages.po | $(MSGFMT) - -o $@; \
- else \
- echo missing $(gb_POLOCATION)/$(LANGUAGE)/$(POLOCATION)/messages.po && \
-- $(MSGUNIQ) --force-po $(SRCDIR)/solenv/bin/dummy.po | $(MSGFMT) - -o $@; \
-+ cat $(SRCDIR)/solenv/bin/dummy.po | $(MSGFMT) - -o $@; \
- fi)
-
- #$(info $(call gb_MoTarget_get_target,$(1)))
---- libreoffice-6.2.1.2/configure.ac
-+++ libreoffice-6.2.1.2/configure.ac
-@@ -12106,18 +12106,6 @@ else
- fi
- fi
- fi
-- if test -z "$MSGUNIQ"; then
-- if test -n "$LODE_HOME" -a -x "$LODE_HOME/opt/bin/msguniq" ; then
-- MSGUNIQ="$LODE_HOME/opt/bin/msguniq"
-- elif test -x "/opt/lo/bin/msguniq"; then
-- MSGUNIQ="/opt/lo/bin/msguniq"
-- else
-- AC_CHECK_PROGS(MSGUNIQ, [msguniq])
-- if test -z "$MSGUNIQ"; then
-- AC_MSG_ERROR([msguniq not found. Install GNU gettext, or re-run without languages.])
-- fi
-- fi
-- fi
- fi
- AC_SUBST(MSGFMT)
- AC_SUBST(MSGUNIQ)
diff --git a/user/libreoffice/linux-musl.patch b/user/libreoffice/linux-musl.patch
deleted file mode 100644
index 3bd6ccdde..000000000
--- a/user/libreoffice/linux-musl.patch
+++ /dev/null
@@ -1,69 +0,0 @@
---- libreoffice-6.2.1.2/configure.ac
-+++ libreoffice-6.2.1.2/configure.ac
-@@ -462,7 +462,7 @@ if test -n "$with_android_ndk"; then
- # (A 64-bit ld.gold grows to much over 10 gigabytes of virtual space when linking such a .so if
- # all objects have been built with debug information.)
- case $build_os in
-- linux-gnu*)
-+ linux-gnu*|linux-musl*)
- ndk_build_os=linux
- ;;
- darwin*)
-@@ -592,7 +592,7 @@ solaris*)
- fi
- ;;
-
--linux-gnu*|k*bsd*-gnu*)
-+linux-gnu*|linux-musl*|k*bsd*-gnu*)
- test_gtk=yes
- build_gstreamer_1_0=yes
- build_gstreamer_0_10=yes
-@@ -4149,7 +4149,7 @@ kfreebsd*)
- esac
- ;;
-
--linux-gnu*)
-+linux-gnu*|linux-musl*)
- COM=GCC
- USING_X11=TRUE
- OS=LINUX
-@@ -7277,7 +7277,7 @@ if test -n "$ENABLE_JAVA" -a -z "$JAVAIN
- test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
- ;;
-
-- linux-gnu*)
-+ linux-gnu*|linux-musl*)
- JAVAINC="-I$JAVA_HOME/include"
- JAVAINC="$JAVAINC -I$JAVA_HOME/include/linux"
- test -d "$JAVA_HOME/include/native_thread" && JAVAINC="$JAVAINC -I$JAVA_HOME/include/native_thread"
-@@ -9854,21 +9854,6 @@ AC_SUBST(SYSTEM_LIBNUMBERTEXT_DATA)
- AC_SUBST(ENABLE_LIBNUMBERTEXT)
- AC_SUBST(LIBNUMBERTEXT_CFLAGS)
-
--dnl ***************************************
--dnl testing libc version for Linux...
--dnl ***************************************
--if test "$_os" = "Linux"; then
-- AC_MSG_CHECKING([whether libc is >= 2.1.1])
-- exec 6>/dev/null # no output
-- AC_CHECK_LIB(c, gnu_get_libc_version, HAVE_LIBC=yes; export HAVE_LIBC)
-- exec 6>&1 # output on again
-- if test "$HAVE_LIBC"; then
-- AC_MSG_RESULT([yes])
-- else
-- AC_MSG_ERROR([no, upgrade libc])
-- fi
--fi
--
- dnl =========================================
- dnl Check for uuidgen
- dnl =========================================
-@@ -12828,7 +12813,7 @@ else
-
- case "$host_os" in
-
-- aix*|dragonfly*|freebsd*|linux-gnu*|*netbsd*|openbsd*)
-+ aix*|dragonfly*|freebsd*|linux-gnu*|linux-musl*|*netbsd*|openbsd*)
- if test "$ENABLE_JAVA" != ""; then
- pathmunge "$JAVA_HOME/bin" "after"
- fi
diff --git a/user/librevenge/APKBUILD b/user/librevenge/APKBUILD
index 2170fceaa..bf4ec674d 100644
--- a/user/librevenge/APKBUILD
+++ b/user/librevenge/APKBUILD
@@ -9,14 +9,12 @@ arch="all"
license="(MPL-2.0 OR LGPL-2.1+) AND BSD-3-Clause"
depends=""
depends_dev="boost-dev zlib-dev"
-makedepends="$depends_dev doxygen"
checkdepends="cppunit-dev"
+makedepends="$depends_dev doxygen"
subpackages="$pkgname-dev $pkgname-doc"
source="https://sourceforge.net/projects/libwpd/files/$pkgname/$pkgname-$pkgver/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
-
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,12 +30,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/librsvg/APKBUILD b/user/librsvg/APKBUILD
index 76ca74648..0058e06a6 100644
--- a/user/librsvg/APKBUILD
+++ b/user/librsvg/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=librsvg
-pkgver=2.40.20
+pkgver=2.40.21
pkgrel=1
pkgdesc="SAX-based renderer for SVG files into a GdkPixbuf"
url="https://wiki.gnome.org/action/show/Projects/LibRsvg"
@@ -8,15 +8,18 @@ arch="all"
options="!check" # Depends on specific font hinting.
license="LGPL-2.0+"
subpackages="$pkgname-dev $pkgname-doc"
-depends=
+depends=""
depends_dev="gtk+2.0-dev libcroco-dev libgsf-dev"
makedepends="$depends_dev bzip2-dev cairo-dev glib-dev
gobject-introspection-dev"
-install=
source="https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz"
+# secfixes:
+# 2.40.21-r0:
+# - CVE-2019-20446
+
build() {
- cd "$builddir"
+ export CFLAGS="$CFLAGS -fno-tree-vrp"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,14 +30,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR=""$pkgdir"" install
rm -rf "$pkgdir"/usr/lib/mozilla
}
-sha512sums="cdd8224deb4c3786e29f48ed02c32ed9dff5cb15aba574a5ef845801ad3669cfcc3eedb9d359c22213dc7a29de24c363248825adad5877c40abf73b3688ff12f librsvg-2.40.20.tar.xz"
+sha512sums="db0563d8e0edaae642a6b2bcd239cf54191495058ac8c7ff614ebaf88c0e30bd58dbcd41f58d82a9d5ed200ced45fc5bae22f2ed3cf3826e9348a497009e1280 librsvg-2.40.21.tar.xz"
diff --git a/user/libsamplerate/APKBUILD b/user/libsamplerate/APKBUILD
index aed5129ba..308259c25 100644
--- a/user/libsamplerate/APKBUILD
+++ b/user/libsamplerate/APKBUILD
@@ -12,13 +12,11 @@ makedepends="fftw-dev libsndfile-dev linux-headers"
source="http://www.mega-nerd.com/SRC/$pkgname-$pkgver.tar.gz"
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,12 +25,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libsass/APKBUILD b/user/libsass/APKBUILD
index 5d560aa6e..e6a0e891a 100644
--- a/user/libsass/APKBUILD
+++ b/user/libsass/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libsass
-pkgver=3.5.5
+pkgver=3.6.4
pkgrel=0
pkgdesc="Library for preprocessing CSS"
url="https://sass-lang.com/libsass"
@@ -16,14 +16,12 @@ subpackages="$pkgname-dev"
source="libsass-$pkgver.tar.gz::https://github.com/sass/libsass/archive/$pkgver.tar.gz"
build() {
- cd "$builddir"
make BUILD="shared"
}
package() {
- cd "$builddir"
mkdir -p "$pkgdir"
make BUILD="shared" PREFIX="/usr" DESTDIR="$pkgdir" install
}
-sha512sums="dcb73a5080c00023b60a19ea037ba5af481253a7b47492bd7114bf45ab78ed931c7b207fa8f12ed200a39760553d72ae92dbe4eb80b826b59a6201fb34008fe5 libsass-3.5.5.tar.gz"
+sha512sums="1f79553be31949d45adf440dcbcf4b828a7e4f71c6f63f288f99451fccc490ebf0c68c58d91deabede37962e35a8cf9af8b0d60d89349fd0adea1ac061c8c2c8 libsass-3.6.4.tar.gz"
diff --git a/user/libseccomp/APKBUILD b/user/libseccomp/APKBUILD
new file mode 100644
index 000000000..f666e777f
--- /dev/null
+++ b/user/libseccomp/APKBUILD
@@ -0,0 +1,46 @@
+# Maintainer: Zach van Rijn <me@zv.io>
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
+# Contributor: Dan Williams <dan@ma.ssive.co>
+pkgname=libseccomp
+pkgver=2.5.0
+pkgrel=0
+pkgdesc="An interface to the Linux Kernel's syscall filtering mechanism"
+url="https://github.com/seccomp/libseccomp"
+arch="all"
+license="LGPL-2.1+"
+depends=""
+makedepends="linux-headers gperf"
+checkdepends="bash cmd:which"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/seccomp/libseccomp/releases/download/v$pkgver/libseccomp-$pkgver.tar.gz
+ remove-redefinition-prctl.patch
+ "
+
+# secfixes:
+# 2.4.0-r0:
+# - CVE-2019-9893
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --enable-static \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="00ef5aeb4db8dafb546ae680b2d6d9b6aeed008df805d0f28f9dd15c074ff6ea7a5e5131ab503825b8011c59aa23046baedd5849ca040aa73352f43ab2d602ae libseccomp-2.5.0.tar.gz
+f2c31dcafdc9a1ad78e32e76b75e1c1603071eaa3f979e1f2483b879a34ad07e0a4ef3642196a695415cdf81e1ed2bf325175872fb4e203ef9d0e668c287493f remove-redefinition-prctl.patch"
diff --git a/user/libseccomp/remove-redefinition-prctl.patch b/user/libseccomp/remove-redefinition-prctl.patch
new file mode 100644
index 000000000..2ea88fe05
--- /dev/null
+++ b/user/libseccomp/remove-redefinition-prctl.patch
@@ -0,0 +1,10 @@
+--- ./src/system.c.orig
++++ ./src/system.c
+@@ -21,7 +21,6 @@
+
+ #include <stdlib.h>
+ #include <errno.h>
+-#include <sys/prctl.h>
+
+ #include <seccomp.h>
+
diff --git a/user/libsecret/APKBUILD b/user/libsecret/APKBUILD
index cb883270e..23846af80 100644
--- a/user/libsecret/APKBUILD
+++ b/user/libsecret/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libsecret
-pkgver=0.18.8
+pkgver=0.20.3
pkgrel=0
pkgdesc="Library for storing and retrieving passphrases"
url="https://wiki.gnome.org/Projects/Libsecret"
@@ -10,9 +10,9 @@ options="!check" # Test suites require DBus-Python.
license="LGPL-2.1+ AND LGPL-2.0+"
depends=""
makedepends="docbook-xsl glib-dev gobject-introspection-dev libgcrypt-dev
- libxslt"
+ libxslt vala-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://ftp.acc.umu.se/pub/gnome/sources/libsecret/0.18/libsecret-$pkgver.tar.xz"
+source="https://ftp.acc.umu.se/pub/gnome/sources/libsecret/${pkgver%.*}/libsecret-$pkgver.tar.xz"
build() {
./configure \
@@ -33,4 +33,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="9e2ec8d458af6ed078bf3c6d956599f73f2cc7720332c424e9aede1f77f3d969c5122cf7b70899bc07ad96a3a628bf79bc5fffa88274d1ef2bcaaca6719f90d4 libsecret-0.18.8.tar.xz"
+sha512sums="020e1954e0965f33ee15f35e1f439b6c1650322a9112078f7a3e265cee83ad99d217ae3b363fbadc06c5cb0941f7e544d91da72e5be1c6b96992c071e6170c22 libsecret-0.20.3.tar.xz"
diff --git a/user/libsexy/APKBUILD b/user/libsexy/APKBUILD
index d572034be..cdb914740 100644
--- a/user/libsexy/APKBUILD
+++ b/user/libsexy/APKBUILD
@@ -7,19 +7,17 @@ url="https://blog.chipx86.com/tag/libsexy/"
arch="all"
options="!check" # Tests require manual intervention and X11 display.
license="LGPL-2.1+"
-subpackages="$pkgname-dev $pkgname-doc"
+depends=""
makedepends="gtk+2.0-dev iso-codes-dev libxml2-dev"
+subpackages="$pkgname-dev $pkgname-doc"
source="http://releases.chipx86.com/$pkgname/$pkgname/$pkgname-$pkgver.tar.gz"
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
}
-build ()
-{
- cd "$builddir"
+build() {
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,7 +27,6 @@ build ()
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
rm -f "$pkgdir"/usr/lib/libsexy.a
}
diff --git a/user/libshout/APKBUILD b/user/libshout/APKBUILD
index 5e0f491b5..a4624bb2c 100644
--- a/user/libshout/APKBUILD
+++ b/user/libshout/APKBUILD
@@ -1,10 +1,10 @@
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
# Maintainer:
pkgname=libshout
-pkgver=2.4.1
-pkgrel=2
+pkgver=2.4.3
+pkgrel=0
pkgdesc="Library for accessing a Icecast server"
-url="http://www.icecast.org/"
+url="https://www.icecast.org/"
arch="all"
options="!check" # No test suite.
license="LGPL-2.0+"
@@ -14,7 +14,6 @@ subpackages="$pkgname-doc $pkgname-dev"
source="https://downloads.xiph.org/releases/$pkgname/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,8 +24,7 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="4d4b958947e020de3330d49d39d59220fc89315f25f653a7456b9aa24ca9566fca30bb3d65e6348e79958656096b6b864ea8885157d24e55c8d84d6604670219 libshout-2.4.1.tar.gz"
+sha512sums="fe36778c6640e620f27504cb21234940e18a65a33f9178bf7e77d4baf854a9affc82d85db8ed8c1c8e2d80399685d8be10106fff5be1ddf76e03e2ffeeed1d34 libshout-2.4.3.tar.gz"
diff --git a/user/libsigc++/APKBUILD b/user/libsigc++/APKBUILD
index 624c2d4bc..dfed6741d 100644
--- a/user/libsigc++/APKBUILD
+++ b/user/libsigc++/APKBUILD
@@ -1,19 +1,18 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libsigc++
-pkgver=2.10.1
+pkgver=2.10.2
pkgrel=0
pkgdesc="Library for type-safe callbacks in C++"
url="https://libsigcplusplus.github.io/libsigcplusplus/"
arch="all"
license="LGPL-2.1+"
depends=""
-makedepends=""
+makedepends="m4"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.gnome.org/sources/libsigc++/${pkgver%.*}/libsigc++-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e2bd7b1a97019be010dee1594271bbf7cae92b28e31dcb3c6d7d60643a0996233f0a75a9337b4afcb5b7dc453bfc3159d82f6daacfbcd8993a39ccecaf811bb2 libsigc++-2.10.1.tar.xz"
+sha512sums="33bc1ed20b3cec07aba3e090af24c3dcb0047b2ce4f693879fd7201a24abdeecb17f6b1307a2d0c0bc2b74f16cfa0c60f300b7cdf8ef13db1bfd990bdf8f9eb4 libsigc++-2.10.2.tar.xz"
diff --git a/user/libsigc++3/APKBUILD b/user/libsigc++3/APKBUILD
new file mode 100644
index 000000000..370f704de
--- /dev/null
+++ b/user/libsigc++3/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=libsigc++3
+_pkgreal=${pkgname%3}
+pkgver=3.2.0
+pkgrel=0
+pkgdesc="Library for type-safe callbacks in C++"
+url="https://libsigcplusplus.github.io/libsigcplusplus/download.html"
+arch="all"
+license="LGPL-2.1+ AND LGPL-3.0+"
+depends=""
+makedepends="boost-dev docbook-xsl doxygen graphviz meson ninja cmd:xsltproc"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://download.gnome.org/sources/$_pkgreal/${pkgver%.*}/$_pkgreal-$pkgver.tar.xz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ -Dbuild-examples=false \
+ -Dbuild-documentation=true \
+ . output
+ ninja -C output
+}
+
+check() {
+ ninja -C output test
+}
+
+package() {
+ DESTDIR="$pkgdir" ninja -C output install
+}
+
+sha512sums="91315cecc79a1ad6ea165b66a13a5afd4e5bc101842f9d4c58811ea78536c07fc8821c51aa5110a032ed71c09f85790b3a02f2ad7fe8cc3aed6e03b2bafcd70c libsigc++-3.2.0.tar.xz"
diff --git a/user/libsigsegv/APKBUILD b/user/libsigsegv/APKBUILD
new file mode 100644
index 000000000..8be6728b1
--- /dev/null
+++ b/user/libsigsegv/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
+# Maintainer: Lee Starnes <lee@canned-death.us>
+pkgname=libsigsegv
+pkgver=2.14
+pkgrel=0
+pkgdesc="A library for handling page faults in user mode"
+url="https://www.gnu.org/software/libsigsegv"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends=""
+subpackages="$pkgname-dev"
+source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz
+ musl-ppc32.patch
+ "
+
+build() {
+ ./configure \
+ --prefix=/usr \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --localstatedir=/var \
+ --sysconfdir=/etc \
+ --enable-shared
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="423dade56636fe38356f0976e1288178cb1c7c059615e9f70ad693a1e4194feba47a583b0804717e95a866da271b1ea5f80083c54a121577983dd23e5aa9f056 libsigsegv-2.14.tar.gz
+fba3bf8679619d9e363bf42e476960dd73cc9a01915773193d6b6d2ca76ee5240a9284982d00bc40601c6da3210c08eb90e61661404ccaf017144ccc36b25762 musl-ppc32.patch"
diff --git a/user/libsigsegv/musl-ppc32.patch b/user/libsigsegv/musl-ppc32.patch
new file mode 100644
index 000000000..75e10a45f
--- /dev/null
+++ b/user/libsigsegv/musl-ppc32.patch
@@ -0,0 +1,10 @@
+--- libsigsegv-2.12/src/fault-linux-powerpc.h.old 2017-03-04 15:28:15.000000000 +0000
++++ libsigsegv-2.12/src/fault-linux-powerpc.h 2020-05-11 21:49:56.190783142 +0000
+@@ -33,6 +33,6 @@
+ # if 0
+ # define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.regs->gpr[1]
+ # else
+-# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.uc_regs->gregs[1]
++# define SIGSEGV_FAULT_STACKPOINTER ((ucontext_t *) ucp)->uc_mcontext.gregs[1]
+ # endif
+ #endif
diff --git a/user/libslirp/APKBUILD b/user/libslirp/APKBUILD
new file mode 100644
index 000000000..395f7ac98
--- /dev/null
+++ b/user/libslirp/APKBUILD
@@ -0,0 +1,39 @@
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=libslirp
+pkgver=4.7.0
+pkgrel=0
+pkgdesc="A general-purpose TCP/IP emulator"
+url="https://gitlab.freedesktop.org/slirp/libslirp"
+arch="all"
+options="!check" # No test suite.
+license="BSD-3-Clause AND MIT"
+depends=""
+makedepends="glib-dev meson"
+subpackages="$pkgname-dev"
+source="https://gitlab.freedesktop.org/slirp/libslirp/-/archive/v${pkgver}/${pkgname}-v${pkgver}.tar.bz2
+ git-describe.patch
+ static.patch
+ "
+builddir="$srcdir/${pkgname}-v${pkgver}"
+# secfixes:
+# 4.3.0-r0:
+# - CVE-2020-1983
+
+build() {
+ meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ . output
+ ninja -C output
+}
+
+package() {
+ DESTDIR="$pkgdir" ninja -C output install
+}
+
+sha512sums="01aee79997c37e3de50da1583671aa30a1bfb837d4c5c648194bbfdb350b7f8dc89653dbdb42530a409c0d0f4e40eb111cc3fe0b9f4890fd5a062446e92c0f62 libslirp-v4.7.0.tar.bz2
+fb66abe30c7b36c93bf759960275119c6d34e57861efe0cdc147a606a7a13b2d29f0f77dfe99326539800bd4ded9e39c736abd9d4ca9d6f16df2d50fd70fb7f6 git-describe.patch
+bb1bb5443d8083099d2a270b78b7ec74daa26634b2062d2c30460ed118b333942a9a555c96910216bb746311ae021d457f39a304a60fe07a3908a0c315a7c756 static.patch"
diff --git a/user/libslirp/git-describe.patch b/user/libslirp/git-describe.patch
new file mode 100644
index 000000000..9cc66bbad
--- /dev/null
+++ b/user/libslirp/git-describe.patch
@@ -0,0 +1,24 @@
+Otherwise you might get "-dirty" in the pc: version
+
+--- libslirp-4.3.0/build-aux/git-version-gen 2020-04-23 06:09:44.166262600 -0500
++++ libslirp-4.3.0/build-aux/git-version-gen 2020-04-24 15:08:09.450004079 -0500
+@@ -133,19 +133,6 @@ fi
+
+ v=`echo "$v" |sed 's/^v//'`
+
+-# Don't declare a version "dirty" merely because a time stamp has changed.
+-git update-index --refresh > /dev/null 2>&1
+-
+-dirty=`sh -c 'git diff-index --name-only HEAD' 2>/dev/null` || dirty=
+-case "$dirty" in
+- '') ;;
+- *) # Append the suffix only if there isn't one already.
+- case $v in
+- *-dirty) ;;
+- *) v="$v-dirty" ;;
+- esac ;;
+-esac
+-
+ # Omit the trailing newline, so that m4_esyscmd can use the result directly.
+ echo "$v" | tr -d "$nl"
+
diff --git a/user/libslirp/static.patch b/user/libslirp/static.patch
new file mode 100644
index 000000000..46451a168
--- /dev/null
+++ b/user/libslirp/static.patch
@@ -0,0 +1,14 @@
+library = shared
+both_libraries = shared and static (needed by qemu)
+
+--- libslirp-v4.2.0/meson.build 2020-03-17 10:07:35.000000000 +0000
++++ libslirp-v4.2.0/meson.build 2020-03-24 20:41:57.030331048 +0000
+@@ -100,7 +100,7 @@ configure_file(
+ configuration : conf
+ )
+
+-lib = library('slirp', sources,
++lib = both_libraries('slirp', sources,
+ version : lt_version,
+ c_args : cargs,
+ link_args : vflag,
diff --git a/user/libsm/APKBUILD b/user/libsm/APKBUILD
index 5ff18a439..58ef7d632 100644
--- a/user/libsm/APKBUILD
+++ b/user/libsm/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libsm
-pkgver=1.2.3
+pkgver=1.2.4
pkgrel=0
pkgdesc="X11 session management library"
url="https://www.X.Org/"
@@ -10,11 +10,10 @@ depends=""
makedepends="libice-dev util-linux-dev util-macros xmlto xorgproto-dev xtrans"
checkdepends="check-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/lib/libSM-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/libSM-$pkgver.tar.xz"
builddir="$srcdir"/libSM-$pkgver
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,14 +27,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
- install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="74c42e27029db78475e62025b4711dbac5e22d2f8e8a24be98a1c31b03c0fc4afe859928f851800ea0b76854f12147900dc4f27bbfd3d8ea45daaaf24b70a903 libSM-1.2.3.tar.bz2"
+sha512sums="7f1d41b7b6c5dd456c49ccad7740c3ba9791a2793fa50fd94814a4164ce2e20c4a0a0ad42a87708e494ed5c23f611be6d3ccd9ef1e9add6d46ac545e2b0f6f86 libSM-1.2.4.tar.xz"
diff --git a/user/libsndfile/APKBUILD b/user/libsndfile/APKBUILD
index 26ca137e9..25843869c 100644
--- a/user/libsndfile/APKBUILD
+++ b/user/libsndfile/APKBUILD
@@ -1,4 +1,4 @@
-# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
+# Contributor: Sergey Lukin <sergej.lukin@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libsndfile
pkgver=1.0.28
@@ -8,7 +8,7 @@ url="http://www.mega-nerd.com/libsndfile"
arch="all"
license="LGPL-2.1-only OR LGPL-3.0-only"
subpackages="$pkgname-dev $pkgname-doc"
-depends=
+depends=""
depends_dev="flac-dev libogg-dev libvorbis-dev"
makedepends="$depends_dev alsa-lib-dev linux-headers"
source="http://www.mega-nerd.com/$pkgname/files/$pkgname-$pkgver.tar.gz
@@ -32,7 +32,6 @@ source="http://www.mega-nerd.com/$pkgname/files/$pkgname-$pkgver.tar.gz
# - CVE-2017-8365
build() {
- cd "$builddir"
ac_cv_sys_largefile_CFLAGS="-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" \
./configure \
--build=$CBUILD \
@@ -44,12 +43,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libsodium/APKBUILD b/user/libsodium/APKBUILD
index a63992976..6697b4178 100644
--- a/user/libsodium/APKBUILD
+++ b/user/libsodium/APKBUILD
@@ -1,17 +1,18 @@
# Contributor: Laurent Bercot <ska-adelie@skarnet.org>
# Maintainer: Laurent Bercot <ska-adelie@skarnet.org>
pkgname=libsodium
-pkgver=1.0.17
+pkgver=1.0.18
pkgrel=0
pkgdesc="Networking and Cryptography library: sodium fork"
url="https://libsodium.org/"
arch="all"
license="ISC"
+depends=""
+makedepends=""
subpackages="$pkgname-dev"
source="https://download.libsodium.org/libsodium/releases/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--prefix=/usr \
--enable-retpoline \
@@ -21,13 +22,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make install "DESTDIR=$pkgdir"
}
-sha512sums="7cc9e4f11e656008ce9dff735acea95acbcb91ae4936de4d26f7798093766a77c373e9bd4a7b45b60ef8a11de6c55bc8dcac13bebf8c23c671d0536430501da1 libsodium-1.0.17.tar.gz"
+sha512sums="17e8638e46d8f6f7d024fe5559eccf2b8baf23e143fadd472a7d29d228b186d86686a5e6920385fe2020729119a5f12f989c3a782afbd05a8db4819bb18666ef libsodium-1.0.18.tar.gz"
diff --git a/user/libsoup/APKBUILD b/user/libsoup/APKBUILD
index ddcf75515..d20ceb0f0 100644
--- a/user/libsoup/APKBUILD
+++ b/user/libsoup/APKBUILD
@@ -1,32 +1,42 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libsoup
-pkgver=2.66.1
+pkgver=2.74.3
pkgrel=0
pkgdesc="GObject-based HTTP library"
url="https://wiki.gnome.org/Projects/libsoup"
arch="all"
+options="!check" # HSTS tests fail because .localdomain names fail to resolve.
license="LGPL-2.0+ AND LGPL-2.1+"
+depends=""
makedepends="glib-dev libxml2-dev sqlite-dev libpsl-dev intltool vala-dev
gobject-introspection-dev glib-networking meson ninja krb5-dev"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://download.gnome.org/sources/libsoup/${pkgver%.*}/libsoup-$pkgver.tar.xz"
+source="https://download.gnome.org/sources/libsoup/${pkgver%.*}/libsoup-$pkgver.tar.xz
+ musl.patch
+ "
+
+# secfixes:
+# 2.68.2-r0:
+# - CVE-2019-17266
+
+prepare() {
+ meson subprojects download
+ default_prepare
+}
build() {
- mkdir -p "$builddir"/build
- cd "$builddir"/build
- meson -Dprefix=/usr ..
- ninja
+ meson -Dprefix=/usr build
+ ninja -C build
}
check() {
- cd "$builddir"/build
- ninja test
+ ninja -C build test
}
package() {
- cd "$builddir"/build
- DESTDIR="$pkgdir" ninja install
+ DESTDIR="$pkgdir" ninja -C build install
}
-sha512sums="bb9c15cae965606d5f7c009fab9223445235982269d23ff20e89249b10d3423797427e7cff39c31a3f5db99b0c2d7a01eb911edb61309603cdeb8f2467fe6039 libsoup-2.66.1.tar.xz"
+sha512sums="72f8a055df984cb35105fe67f4ca67d3fb110d40a9cacb660fccd89f93b06bc32e25d94375dcc76608a245f7c5e081d968d7aaf5952eb16013d81c741247cb4c libsoup-2.74.3.tar.xz
+39edda5e49afbab5ba2f368b6e1536d195509b7ce26f9cc75b4f1d3aa53e78bd59abc9a4dc6258cf16f236590f11065f4463777c3e49e88cf64ab3c1bb9cb347 musl.patch"
diff --git a/user/libsoup/musl.patch b/user/libsoup/musl.patch
new file mode 100644
index 000000000..8de29f689
--- /dev/null
+++ b/user/libsoup/musl.patch
@@ -0,0 +1,189 @@
+From 50439c9ca9a52f39681fb81bd6768f306125516a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?=
+ <congdanhqx@gmail.com>
+Date: Tue, 15 Sep 2020 08:21:50 +0700
+Subject: [PATCH 1/3] compat: add fallback implementation for reallocarray(3)
+
+ZV: This is from https://gitlab.gnome.org/GNOME/sysprof/-/merge_requests/37.patch
+ modified to remove the meson-related bits, and add 'subprojects/sysprof'
+---
+ src/libsysprof-capture/sysprof-capture-cursor.c | 4 +++-
+ src/libsysprof-capture/sysprof-capture-reader.c | 2 +-
+ .../sysprof-capture-util-private.h | 8 ++++++++
+ src/libsysprof-capture/sysprof-capture-util.c | 13 +++++++++++++
+ src/libsysprof-capture/sysprof-capture-writer-cat.c | 7 ++++---
+ 6 files changed, 30 insertions(+), 5 deletions(-)
+
+diff --git a/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-cursor.c b/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-cursor.c
+index 24563f0a..cf11bcd5 100644
+--- a/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-cursor.c
++++ b/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-cursor.c
+@@ -293,7 +293,9 @@ sysprof_capture_cursor_add_condition (SysprofCaptureCursor *self,
+ *
+ * FIXME: There’s currently no error reporting from this function, so ENOMEM
+ * results in an abort. */
+- self->conditions = reallocarray (self->conditions, ++self->n_conditions, sizeof (*self->conditions));
++ self->conditions = _sysprof_reallocarray (self->conditions,
++ ++self->n_conditions,
++ sizeof (*self->conditions));
+ assert (self->conditions != NULL);
+
+ self->conditions[self->n_conditions - 1] = sysprof_steal_pointer (&condition);
+diff --git a/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-reader.c b/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-reader.c
+index 67c6b28b..9a5aa912 100644
+--- a/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-reader.c
++++ b/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-reader.c
+@@ -1270,7 +1270,7 @@ array_append (const char ***files,
+ const char **new_files;
+
+ *n_files_allocated = (*n_files_allocated > 0) ? 2 * *n_files_allocated : 4;
+- new_files = reallocarray (*files, *n_files_allocated, sizeof (**files));
++ new_files = _sysprof_reallocarray (*files, *n_files_allocated, sizeof (**files));
+ if (new_files == NULL)
+ return false;
+ *files = new_files;
+diff --git a/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-util-private.h b/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-util-private.h
+index 1b1d93e9..13ec1eed 100644
+--- a/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-util-private.h
++++ b/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-util-private.h
+@@ -108,3 +108,11 @@ size_t _sysprof_strlcpy (char *dest,
+ const char *src,
+ size_t dest_size);
+ #endif
++
++#ifdef HAVE_REALLOCARRAY
++# define _sysprof_reallocarray(p,m,n) reallocarray(p,m,n)
++#else
++void *_sysprof_reallocarray (void *ptr,
++ size_t m,
++ size_t n);
++#endif
+diff --git a/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-util.c b/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-util.c
+index 0bbea06a..acb71acf 100644
+--- a/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-util.c
++++ b/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-util.c
+@@ -58,6 +58,7 @@
+
+ #include <assert.h>
+ #include <errno.h>
++#include <stdint.h>
+ #include <unistd.h>
+
+ #ifdef _WIN32
+@@ -253,3 +254,15 @@ size_t
+
+ return i;
+ }
++
++void *
++(_sysprof_reallocarray) (void *ptr,
++ size_t m,
++ size_t n)
++{
++ if (n && m > (size_t)(-1) / n) {
++ errno = ENOMEM;
++ return NULL;
++ }
++ return realloc(ptr, m * n);
++}
+diff --git a/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-writer-cat.c b/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-writer-cat.c
+index 66171b92..a157ed73 100644
+--- a/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-writer-cat.c
++++ b/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-writer-cat.c
+@@ -64,6 +64,7 @@
+ #include <unistd.h>
+
+ #include "sysprof-capture.h"
++#include "sysprof-capture-util-private.h"
+ #include "sysprof-macros-internal.h"
+
+ typedef struct
+@@ -133,7 +134,7 @@ translate_table_add (TranslateTable *tables,
+ if (table_ptr->n_items == table_ptr->n_items_allocated)
+ {
+ table_ptr->n_items_allocated = (table_ptr->n_items_allocated > 0) ? table_ptr->n_items_allocated * 2 : 4;
+- table_ptr->items = reallocarray (table_ptr->items, table_ptr->n_items_allocated, sizeof (*table_ptr->items));
++ table_ptr->items = _sysprof_reallocarray (table_ptr->items, table_ptr->n_items_allocated, sizeof (*table_ptr->items));
+ assert (table_ptr->items != NULL);
+ }
+
+@@ -481,8 +482,8 @@ sysprof_capture_writer_cat (SysprofCaptureWriter *self,
+ if (n_elements == n_elements_allocated)
+ {
+ n_elements_allocated = (n_elements_allocated > 0) ? n_elements_allocated * 2 : 4;
+- ids = reallocarray (ids, n_elements_allocated, sizeof (*ids));
+- values = reallocarray (values, n_elements_allocated, sizeof (*values));
++ ids = _sysprof_reallocarray (ids, n_elements_allocated, sizeof (*ids));
++ values = _sysprof_reallocarray (values, n_elements_allocated, sizeof (*values));
+ if (ids == NULL || values == NULL)
+ goto panic;
+ }
+--
+GitLab
+
+
+From 429223635e5a9a1de7903465ae1e8a5eb6d61be9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?=
+ <congdanhqx@gmail.com>
+Date: Tue, 15 Sep 2020 08:47:12 +0700
+Subject: [PATCH 2/3] compat: add TEMP_FAILURE_RETRY compatiable implementation
+
+---
+ src/libsysprof-capture/sysprof-capture-util-private.h | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-util-private.h b/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-util-private.h
+index 13ec1eed..6181212c 100644
+--- a/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-util-private.h
++++ b/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-util-private.h
+@@ -60,10 +60,19 @@
+ # include <sys/sendfile.h>
+ #endif
+
++#include <errno.h>
+ #include <stdlib.h>
+ #include <string.h>
+ #include <unistd.h>
+
++#ifndef TEMP_FAILURE_RETRY
++#define TEMP_FAILURE_RETRY(expression) \
++ ({ long int __result; \
++ do { __result = (long int) (expression); } \
++ while (__result == -1L && errno == EINTR); \
++ __result; })
++#endif
++
+ static inline void *
+ sysprof_malloc0 (size_t size)
+ {
+--
+GitLab
+
+
+From 088408c085e5d668c872769391787481875293a6 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C4=90o=C3=A0n=20Tr=E1=BA=A7n=20C=C3=B4ng=20Danh?=
+ <congdanhqx@gmail.com>
+Date: Tue, 15 Sep 2020 20:51:28 +0700
+Subject: [PATCH 3/3] sysprof-capture-condition: always return even if
+ unreachable
+
+Fix the problem with -Werror=return-type
+---
+ src/libsysprof-capture/sysprof-capture-condition.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-condition.c b/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-condition.c
+index 8f891577..4b829a98 100644
+--- a/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-condition.c
++++ b/subprojects/sysprof/src/libsysprof-capture/sysprof-capture-condition.c
+@@ -269,6 +269,7 @@ sysprof_capture_condition_copy (const SysprofCaptureCondition *self)
+ }
+
+ sysprof_assert_not_reached ();
++ return NULL;
+ }
+
+ static void
+--
+GitLab
+
diff --git a/user/libsoup3/APKBUILD b/user/libsoup3/APKBUILD
new file mode 100644
index 000000000..c16bf1429
--- /dev/null
+++ b/user/libsoup3/APKBUILD
@@ -0,0 +1,31 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=libsoup3
+pkgver=3.0.4
+pkgrel=0
+pkgdesc="GObject-based HTTP library"
+url="https://wiki.gnome.org/Projects/libsoup"
+arch="all"
+options="!check" # HSTS tests fail because .localdomain names fail to resolve.
+license="LGPL-2.0+ AND LGPL-2.1+"
+depends=""
+makedepends="glib-dev libxml2-dev sqlite-dev libpsl-dev intltool vala-dev
+ gobject-introspection-dev glib-networking meson ninja krb5-dev cmake nghttp2-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://download.gnome.org/sources/libsoup/${pkgver%.*}/libsoup-$pkgver.tar.xz"
+builddir="$srcdir/libsoup-$pkgver"
+
+build() {
+ meson -Dprefix=/usr build
+ ninja -C build
+}
+
+check() {
+ ninja -C build test
+}
+
+package() {
+ DESTDIR="$pkgdir" ninja -C build install
+}
+
+sha512sums="4e6c226dfd8dd3fb2568affdbf88b8f0ad52903198c1dfc808c4cba1c0479442581953b5fb83166a3a198fb861618b62f165a4544b5daaed094bbeeff94a48ff libsoup-3.0.4.tar.xz"
diff --git a/user/libspectre/APKBUILD b/user/libspectre/APKBUILD
index 2e43f6abc..0caa4b284 100644
--- a/user/libspectre/APKBUILD
+++ b/user/libspectre/APKBUILD
@@ -13,7 +13,6 @@ subpackages="$pkgname-dev"
source="https://libspectre.freedesktop.org/releases/libspectre-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,12 +24,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libspiro/APKBUILD b/user/libspiro/APKBUILD
new file mode 100644
index 000000000..e99d80270
--- /dev/null
+++ b/user/libspiro/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Ed Robinson <ed@reevoo.com>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=libspiro
+pkgver=20200505
+pkgrel=0
+pkgdesc="Spiro simplifies the drawing of beautiful curves"
+url="https://github.com/fontforge/libspiro/blob/$pkgver/README.md"
+arch="all"
+license="GPL-3.0+"
+depends=""
+makedepends=""
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/fontforge/libspiro/releases/download/$pkgver/libspiro-dist-$pkgver.tar.gz"
+
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var \
+ --disable-static
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="84627e8925bd6090cd7d234a0b5f3ee109d3341d24c038a0fb1ce4c09ab97fe8fc7eb92bc5df040d559c5ebe3b4fc8f51652a2538e155be9b2f3c78b96b706ee libspiro-dist-20200505.tar.gz"
diff --git a/user/libsrtp/APKBUILD b/user/libsrtp/APKBUILD
new file mode 100644
index 000000000..9fb86a1ed
--- /dev/null
+++ b/user/libsrtp/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=libsrtp
+pkgver=2.5.0
+pkgrel=0
+pkgdesc="implementation of the Secure Real-time Transport Protocol (SRTP)"
+url="https://github.com/cisco/libsrtp"
+arch="all"
+options=""
+license="BSD-3-Clause"
+makedepends="doxygen libpcap-dev meson openssl-dev"
+subpackages="$pkgname-dev"
+source="$pkgname-$pkgver.tar.gz::https://github.com/cisco/libsrtp/archive/v$pkgver.tar.gz"
+
+build() {
+ meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ -Dcrypto-library=openssl \
+ . build
+ meson compile -C build
+}
+
+check() {
+ meson test --no-rebuild --print-errorlogs -C build
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install --no-rebuild -C build
+}
+sha512sums="bd679ab65ccf22ca30fe867b9649a0b84cfa6fad6e22eb10f081141632f6dd56479a04d525b865f11fd46007303ca211065d9c170e4820d6ea7055403702340a libsrtp-2.5.0.tar.gz"
diff --git a/user/libssh2/APKBUILD b/user/libssh2/APKBUILD
deleted file mode 100644
index cb6e11f97..000000000
--- a/user/libssh2/APKBUILD
+++ /dev/null
@@ -1,40 +0,0 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
-# Maintainer:
-pkgname=libssh2
-pkgver=1.8.2
-pkgrel=0
-pkgdesc="Library for accessing SSH servers"
-url="https://libssh2.org/"
-arch="all"
-options="!check" # Requires deprecated UsePrivilegeSeparation option.
-license="BSD-3-Clause"
-makedepends_host="openssl-dev zlib-dev"
-subpackages="$pkgname-dev $pkgname-doc"
-source="https://libssh2.org/download/libssh2-$pkgver.tar.gz"
-
-build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --infodir=/usr/share/info \
- --localstatedir=/var \
- --with-libssl-prefix="${CBUILDROOT}"/usr \
- --disable-rpath
- make
-}
-
-check() {
- cd "$builddir"
- make check
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
-}
-
-sha512sums="390ab4ad93bb738415ec11a6eb92806c9b9e9e5d8ee7c442d841a58b4292c1c447a9bc99e153ba464e2e11f9c0d1913469303598c3046722d1ae821991e8cb93 libssh2-1.8.2.tar.gz"
diff --git a/user/libstaroffice/APKBUILD b/user/libstaroffice/APKBUILD
index bad200ada..dcbe9de45 100644
--- a/user/libstaroffice/APKBUILD
+++ b/user/libstaroffice/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=libstaroffice
-pkgver=0.0.6
+pkgver=0.0.7
pkgrel=0
pkgdesc="Import filter for StarOffice documents"
url="https://github.com/fosnola/libstaroffice"
@@ -9,13 +9,13 @@ arch="all"
options="!check" # No test suite.
license="MPL-2.0 OR LGPL-2.0+"
depends=""
-depends_dev="librevenge-dev"
-makedepends="$depends_dev zlib-dev boost-dev doxygen"
+makedepends="boost-dev doxygen librevenge-dev zlib-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
-source="https://github.com/fosnola/$pkgname/releases/download/$pkgver/$pkgname-$pkgver.tar.xz"
+source="https://github.com/fosnola/$pkgname/releases/download/$pkgver/$pkgname-$pkgver.tar.xz
+ mistake.patch
+ "
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,7 +27,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -36,4 +35,5 @@ tools() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="9b5313a069e29265875f2e744b6b39c261f578d72f67fdefe1454c092aaa28399e1b3dfcb3a2f881f9a60674e0115a29350fba3ee37fb442f0a837982077f324 libstaroffice-0.0.6.tar.xz"
+sha512sums="fae873457a8018c1613667aa92771981503585513ab01bdbd2dd6d506ed4f72a7a8fdcfcb8953a46dfcb8fd902d2c9ef8ccd1a5ff15c83990a89847fb98009f8 libstaroffice-0.0.7.tar.xz
+f7260246b0fa3005425ed4bab110cb80a499027b54f386307a2d9c8d5609a82f007c7d9196827888631404dfa034ef8709a6a090d62476f3517238ffb3f97128 mistake.patch"
diff --git a/user/libstaroffice/mistake.patch b/user/libstaroffice/mistake.patch
new file mode 100644
index 000000000..11c558c34
--- /dev/null
+++ b/user/libstaroffice/mistake.patch
@@ -0,0 +1,22 @@
+From ef427988dd95203938c2f2e8f212347a8c0c678a Mon Sep 17 00:00:00 2001
+From: ALONSO Laurent <laurent.alonso@inria.fr>
+Date: Mon, 17 Apr 2023 12:21:36 +0200
+Subject: [PATCH] STOFFStarMathToMMLConverter.cxx: correct a mistake...
+
+---
+ src/lib/STOFFStarMathToMMLConverter.cxx | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/lib/STOFFStarMathToMMLConverter.cxx b/src/lib/STOFFStarMathToMMLConverter.cxx
+index 99abb73..9457815 100644
+--- a/src/lib/STOFFStarMathToMMLConverter.cxx
++++ b/src/lib/STOFFStarMathToMMLConverter.cxx
+@@ -2044,7 +2044,7 @@ bool Parser::convert(librevenge::RVNGString const &starMath, std::vector<LexerDa
+ done=true;
+ }
+ else if (len>=2 && c=='>' && dataList.back().m_string=="?" &&
+- dataList[len-2].LexerData::Special && dataList[len-2].m_string=="<") {
++ dataList[len-2].m_type==LexerData::Special && dataList[len-2].m_string=="<") {
+ dataList[len-2].m_type=LexerData::PlaceHolder;
+ dataList[len-2].m_string="<?>";
+ dataList.resize(len-1);
diff --git a/user/libstatgrab/APKBUILD b/user/libstatgrab/APKBUILD
index a86f93f52..6caea8624 100644
--- a/user/libstatgrab/APKBUILD
+++ b/user/libstatgrab/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libstatgrab
-pkgver=0.91
+pkgver=0.92.1
pkgrel=0
pkgdesc="Library for cross-platform access to system statistics."
url="https://www.i-scream.org/libstatgrab"
@@ -12,15 +12,9 @@ depends_dev="ncurses-dev"
checkdepends="perl"
makedepends="autoconf automake libtool utmps-dev $depends_dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://ftp.i-scream.org/pub/i-scream/$pkgname/$pkgname-$pkgver.tar.gz
- fix-configure.patch
- nongnu.patch"
+source="https://ftp.i-scream.org/pub/i-scream/$pkgname/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
- aclocal
- libtoolize -if --recursive
- autoreconf -if
LIBS="-lutmps -lskarnet -ltinfo" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,22 +22,16 @@ build() {
--sysconfdir=/etc \
--mandir=/usr/share/man \
--localstatedir=/var \
- --enable-maintainer-mode \
- --disable-man-build \
- ac_cv_header_sys_sysinfo_h=no
+ --disable-man-build
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="f360f2e1b185bf9603b1d9c50649b0050e9502128ff81a9f4de88457e2f5203deafe7fd7ac13ebc4cc56e6ecd1bdf8aacae64987bdf36af0c9929e30626915f6 libstatgrab-0.91.tar.gz
-96661b2d4c4c54fde9b2cb57e3a9d84e950aae130017a7496a60b630ec7c30d8c6ee270d8f2976f8179f4926073a39d92116e4abce2f4c742d4d5e08bc031f4e fix-configure.patch
-9c42c860c0939b60fcba26d86d65c8e5f1e64e5e6d0646eb7d6ab72b1926f655f0ae8212823cf6e0e1afb1b9098a4d02503847304ce5e20d0540329c10d23d7f nongnu.patch"
+sha512sums="e1f14df8abbb044d02b0ecebc23fbe9effaa0bac6738686e661de015564df5a4d872edef6d07fd150db25764b449d47ef54beecbe12c51987a679b07edc53c97 libstatgrab-0.92.1.tar.gz"
diff --git a/user/libstatgrab/fix-configure.patch b/user/libstatgrab/fix-configure.patch
deleted file mode 100644
index 4ae6fdbc3..000000000
--- a/user/libstatgrab/fix-configure.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -Nurd libstatgrab-0.91/configure.ac libstatgrab-0.91.new/configure.ac
---- libstatgrab-0.91/configure.ac 2014-07-11 19:12:06.000000000 +0000
-+++ libstatgrab-0.91.new/configure.ac 2017-10-10 18:17:14.094496592 +0000
-@@ -609,8 +609,8 @@
- [openbsd*], [
- AC_DEFINE(OPENBSD, , [Building on OpenBSD])
- ],
-- [linux-gnu*], [
-- AC_DEFINE(LINUX, , [Building on GNU/Linux])
-+ [linux*], [
-+ AC_DEFINE(LINUX, , [Building on Linux])
- AM_CONDITIONAL(SETUIDBINS, true)
- BIN_OWNER="root"
- BIN_PERM="4755"
diff --git a/user/libstatgrab/nongnu.patch b/user/libstatgrab/nongnu.patch
deleted file mode 100644
index 3e5e163f7..000000000
--- a/user/libstatgrab/nongnu.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nurd libstatgrab-0.91/src/libstatgrab/os_info.c libstatgrab-0.91.new/src/libstatgrab/os_info.c
---- libstatgrab-0.91/src/libstatgrab/os_info.c 2014-06-19 11:41:10.000000000 +0000
-+++ libstatgrab-0.91.new/src/libstatgrab/os_info.c 2017-10-10 18:42:04.844471568 +0000
-@@ -472,7 +472,7 @@
- host_info_buf->bitwidth = 64;
- }
- else {
-- host_info_buf->bitwidth = sysconf(_SC_LONG_BIT); // well, maybe 64-bit disabled 128-bit system o.O
-+ host_info_buf->bitwidth = sizeof(long int) * 8; // well, maybe 64-bit disabled 128-bit system o.O
- }
- host_info_buf->host_state = sg_unknown_configuration;
- # endif
diff --git a/user/libsysstat/APKBUILD b/user/libsysstat/APKBUILD
index 3bf73d5d6..678dcf8e0 100644
--- a/user/libsysstat/APKBUILD
+++ b/user/libsysstat/APKBUILD
@@ -1,24 +1,24 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libsysstat
-pkgver=0.4.2
+pkgver=0.4.6
+_lxqt=0.10.0
pkgrel=0
pkgdesc="Library for querying system information & statistics"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
arch="all"
options="!check" # No test suite.
license="LGPL-2.1+"
depends=""
-makedepends="cmake extra-cmake-modules lxqt-build-tools qt5-qtbase-dev"
+makedepends="cmake extra-cmake-modules lxqt-build-tools>=$_lxqt
+ qt5-qtbase-dev"
subpackages="$pkgname-dev"
source="https://github.com/lxqt/libsysstat/releases/download/$pkgver/libsysstat-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -26,13 +26,12 @@ build() {
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="9059b9d20edbb7ecd89e722b48c6603b8042030ffad06d3eac167bb518691c2733d314649dc4c42a839d4812c7b65dcd043a13a6bd5b56678da112a8065717df libsysstat-0.4.2.tar.xz"
+sha512sums="dd0e6f67509658691082b043e06589c6a89eea016a0e68cdb7d377f25a0bc63aa476b5eb90f230593daab462a9e22f6f636c0723110fb36faeea7c0aa6d0b85b libsysstat-0.4.6.tar.xz"
diff --git a/user/libtap/APKBUILD b/user/libtap/APKBUILD
index b8a992768..e2e8aa026 100644
--- a/user/libtap/APKBUILD
+++ b/user/libtap/APKBUILD
@@ -22,7 +22,7 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
diff --git a/user/libtasn1/APKBUILD b/user/libtasn1/APKBUILD
index faf3a82b2..8412236d7 100644
--- a/user/libtasn1/APKBUILD
+++ b/user/libtasn1/APKBUILD
@@ -1,25 +1,26 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libtasn1
-pkgver=4.13
+pkgver=4.16.0
pkgrel=0
pkgdesc="Highly portable ASN.1 library"
url="https://www.gnu.org/software/libtasn1/"
arch="all"
license="LGPL-2.1+"
+depends=""
makedepends="texinfo"
subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
-source="ftp://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz
- "
+source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz"
# secfixes:
+# 4.14-r0:
+# - CVE-2018-1000654
# 4.13-r0:
-# - CVE-2018-6003
+# - CVE-2018-6003
# 4.12-r1:
-# - CVE-2017-10790
+# - CVE-2017-10790
build() {
- cd "$builddir"
CFLAGS="-Wno-error=inline" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,12 +32,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -47,4 +46,4 @@ tools() {
mv -i "$pkgdir"/usr/bin "$subpkgdir"/usr/
}
-sha512sums="bf5b60a296795e0a8a4a658c0106492393aa7ce698e785256b3427c17215c2a5b6178a61a2043c93ea4334f754eabece20221ac8fef0fd5644086a3891d98a9f libtasn1-4.13.tar.gz"
+sha512sums="b356249535d5d592f9b59de39d21e26dd0f3f00ea47c9cef292cdd878042ea41ecbb7c8d2f02ac5839f5210092fe92a25acd343260ddf644887b031b167c2e71 libtasn1-4.16.0.tar.gz"
diff --git a/user/libtasn1/CVE-2017-10790.patch b/user/libtasn1/CVE-2017-10790.patch
deleted file mode 100644
index eb752c20a..000000000
--- a/user/libtasn1/CVE-2017-10790.patch
+++ /dev/null
@@ -1,55 +0,0 @@
-From d8d805e1f2e6799bb2dff4871a8598dc83088a39 Mon Sep 17 00:00:00 2001
-From: Nikos Mavrogiannopoulos <nmav@redhat.com>
-Date: Thu, 22 Jun 2017 16:31:37 +0200
-Subject: [PATCH] _asn1_check_identifier: safer access to values read
-
-Signed-off-by: Nikos Mavrogiannopoulos <nmav@redhat.com>
----
- lib/parser_aux.c | 17 ++++++++++++-----
- 1 file changed, 12 insertions(+), 5 deletions(-)
-
-diff --git a/lib/parser_aux.c b/lib/parser_aux.c
-index 976ab38..786ea64 100644
---- a/lib/parser_aux.c
-+++ b/lib/parser_aux.c
-@@ -955,7 +955,7 @@ _asn1_check_identifier (asn1_node node)
- if (p2 == NULL)
- {
- if (p->value)
-- _asn1_strcpy (_asn1_identifierMissing, p->value);
-+ _asn1_str_cpy (_asn1_identifierMissing, sizeof(_asn1_identifierMissing), (char*)p->value);
- else
- _asn1_strcpy (_asn1_identifierMissing, "(null)");
- return ASN1_IDENTIFIER_NOT_FOUND;
-@@ -968,9 +968,15 @@ _asn1_check_identifier (asn1_node node)
- if (p2 && (type_field (p2->type) == ASN1_ETYPE_DEFAULT))
- {
- _asn1_str_cpy (name2, sizeof (name2), node->name);
-- _asn1_str_cat (name2, sizeof (name2), ".");
-- _asn1_str_cat (name2, sizeof (name2), (char *) p2->value);
-- _asn1_strcpy (_asn1_identifierMissing, p2->value);
-+ if (p2->value)
-+ {
-+ _asn1_str_cat (name2, sizeof (name2), ".");
-+ _asn1_str_cat (name2, sizeof (name2), (char *) p2->value);
-+ _asn1_str_cpy (_asn1_identifierMissing, sizeof(_asn1_identifierMissing), (char*)p2->value);
-+ }
-+ else
-+ _asn1_strcpy (_asn1_identifierMissing, "(null)");
-+
- p2 = asn1_find_node (node, name2);
- if (!p2 || (type_field (p2->type) != ASN1_ETYPE_OBJECT_ID) ||
- !(p2->type & CONST_ASSIGN))
-@@ -990,7 +996,8 @@ _asn1_check_identifier (asn1_node node)
- _asn1_str_cpy (name2, sizeof (name2), node->name);
- _asn1_str_cat (name2, sizeof (name2), ".");
- _asn1_str_cat (name2, sizeof (name2), (char *) p2->value);
-- _asn1_strcpy (_asn1_identifierMissing, p2->value);
-+ _asn1_str_cpy (_asn1_identifierMissing, sizeof(_asn1_identifierMissing), (char*)p2->value);
-+
- p2 = asn1_find_node (node, name2);
- if (!p2 || (type_field (p2->type) != ASN1_ETYPE_OBJECT_ID)
- || !(p2->type & CONST_ASSIGN))
---
-1.9.1
-
diff --git a/user/libtheora/APKBUILD b/user/libtheora/APKBUILD
index 2dd25afa7..59e55f677 100644
--- a/user/libtheora/APKBUILD
+++ b/user/libtheora/APKBUILD
@@ -2,14 +2,15 @@
pkgname=libtheora
pkgver=1.1.1
pkgrel=14
-pkgdesc="An open video codec developed by the Xiph.org"
+pkgdesc="An open video codec developed by Xiph.org"
url="https://www.theora.org/"
arch="all"
license="BSD-3-Clause"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-examples"
+depends=""
depends_dev="libogg-dev"
makedepends="libvorbis-dev libogg-dev sdl-dev autoconf automake libtool
linux-headers"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-examples"
source="http://downloads.xiph.org/releases/theora/$pkgname-$pkgver.tar.bz2
libtheora-flags.patch
enc.patch
@@ -30,7 +31,9 @@ prepare() {
}
build() {
- CFLAGS="${CFLAGS/-Os/-O3}" CPPFLAGS="${CPPFLAGS/-Os/-O3}" ./configure \
+ CFLAGS="$(printf '%s' "$CFLAGS" | sed 's/-Os/-O3/')" \
+ CPPFLAGS="$(printf '%s' "$CPPFLAGS" | sed 's/-Os/-O3/')" \
+ ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
diff --git a/user/libtirpc/APKBUILD b/user/libtirpc/APKBUILD
index 5231ff63d..7ed91e7b7 100644
--- a/user/libtirpc/APKBUILD
+++ b/user/libtirpc/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libtirpc
-pkgver=1.1.4
-pkgrel=1
+pkgver=1.2.6
+pkgrel=0
pkgdesc="Transport Independent RPC library (SunRPC replacement)"
url="https://sourceforge.net/projects/libtirpc/"
arch="all"
@@ -12,11 +12,10 @@ depends_dev="bsd-compat-headers krb5-dev"
makedepends="$depends_dev autoconf automake libtool linux-headers"
subpackages="$pkgname-dev $pkgname-doc $pkgname-dbg"
source="https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.bz2
- musl.patch"
+ bsd-types.patch
+ "
build() {
- cd "$builddir"
- export CFLAGS="$CFLAGS -D__u_char_defined -D__daddr_t_defined"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,9 +25,8 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="392f391f9fc1bd68d81dc44e4058831a64b32790b5c8c37338b0ab416fad2ae4d16389e632596734dba09780347918cc65c6f134e0c1afd09e81ec250785ed23 libtirpc-1.1.4.tar.bz2
-8e52246ae478ae9e4689426627e17d9c58d701f4fd21a40ffe3cf17c4ceaa4ab2e8e91d2fa3ba0d0c7adc52ae4b986fcda113ec86e370ede83903bb641de520c musl.patch"
+sha512sums="bcb6b5c062c1301aa1246ec93ae0a5c1d221b8421126d020863517cb814b43ed038fb6c0c2faf4e68ff133b69abefe4f4d42bfc870671da6c27ca941a30b155a libtirpc-1.2.6.tar.bz2
+237fd46e13bfce733023e425d561a43ef0a5dfd7f6fcdf1dd44d81a75cb08a7e2a4f80db313d145b45adf0f7f096cb7817786c5f73c0982b6ba34b3021b80d7c bsd-types.patch"
diff --git a/user/libtirpc/bsd-types.patch b/user/libtirpc/bsd-types.patch
new file mode 100644
index 000000000..3fbe378b8
--- /dev/null
+++ b/user/libtirpc/bsd-types.patch
@@ -0,0 +1,12 @@
+u_int32_t (etc) is a BSD type. Define _BSD_SOURCE so musl declares it.
+
+--- libtirpc-1.2.5/tirpc/rpc/types.h.old 2019-12-19 18:55:48.000000000 +0000
++++ libtirpc-1.2.5/tirpc/rpc/types.h 2019-12-29 19:17:59.146261005 +0000
+@@ -38,6 +38,7 @@
+ #ifndef _TIRPC_TYPES_H
+ #define _TIRPC_TYPES_H
+
++#define _BSD_SOURCE
+ #include <sys/types.h>
+
+ typedef int32_t bool_t;
diff --git a/user/libtirpc/musl.patch b/user/libtirpc/musl.patch
deleted file mode 100644
index 5a4fb04f5..000000000
--- a/user/libtirpc/musl.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./tirpc/rpc/types.h.orig 2018-03-17 10:23:10.022055255 +0100
-+++ ./tirpc/rpc/types.h 2018-03-17 10:23:30.877751656 +0100
-@@ -66,7 +66,7 @@
- #define mem_free(ptr, bsize) free(ptr)
-
-
--#if defined __APPLE_CC__ || defined __FreeBSD__
-+#if defined __APPLE_CC__ || defined __FreeBSD__ || !defined(__GLIBC__)
- # define __u_char_defined
- # define __daddr_t_defined
- #endif
diff --git a/user/libtommath/APKBUILD b/user/libtommath/APKBUILD
index 826ecf131..8681dfdb6 100644
--- a/user/libtommath/APKBUILD
+++ b/user/libtommath/APKBUILD
@@ -1,28 +1,29 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libtommath
-pkgver=1.1.0
+pkgver=1.2.0
pkgrel=0
pkgdesc="Theoretic multiple-precision integer library"
url="https://www.libtom.net/LibTomMath/"
arch="all"
+options="!check" # no longer builds properly, tested manually on gwyn
license="Unlicense"
depends=""
-makedepends=""
+makedepends="slibtool"
subpackages="$pkgname-dev"
-source="https://github.com/libtom/libtommath/releases/download/v${pkgver/_/-}/ltm-${pkgver/_/-}.tar.xz"
-builddir="$srcdir/$pkgname-${pkgver/_/-}"
+source="https://github.com/libtom/libtommath/releases/download/v$pkgver/ltm-$pkgver.tar.xz"
build() {
make PREFIX=/usr -f makefile.shared
}
check() {
- make PREFIX=/usr -f makefile.shared test_standalone
+ make PREFIX=/usr -f makefile.shared -j1 test
+ ./test
}
package() {
make PREFIX=/usr DESTDIR="$pkgdir" -f makefile.shared install
}
-sha512sums="6d1b8b09d5b975a2b84ef6ab9cb1cc63db2f0503a906e499cb9d7eaba3f487be6e7f69bf692b188f888418c61ea563aa7e2411638d8979eac426b3d603ad1b91 ltm-1.1.0.tar.xz"
+sha512sums="6f9ccd0691831f07f86ddc81cb6145504b3d5da66dd3e92312c64cce0ea986fa4e08ba65ca8991aaebe56702c2d7c15f309696785b813dffb4c112a4ad04b203 ltm-1.2.0.tar.xz"
diff --git a/user/libuninameslist/APKBUILD b/user/libuninameslist/APKBUILD
index 3b7102955..a3b80b05a 100644
--- a/user/libuninameslist/APKBUILD
+++ b/user/libuninameslist/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libuninameslist
-pkgver=20190305
+pkgver=20200413
pkgrel=0
pkgdesc="Library of Unicode names and annotation data"
url=" "
@@ -38,4 +38,4 @@ py3() {
python3 setup.py install --prefix=/usr --root="$subpkgdir"
}
-sha512sums="4dc30a4f0919722c7538ed2eda39c3e63d072ee17c809ca25e0b6546d29110607c27c6e969839439c1432b4b40fca3e888c428ed26d1e0328a5f481a2db3cc73 libuninameslist-dist-20190305.tar.gz"
+sha512sums="88befff4bf7efed149b4e3a5d58a733b2cb6477e103ec34529ff02a88f8c72a6fc9d7b0be9e97cd539a75c8ebe5e4127cdf03a568da2f219157174b9b585b2a3 libuninameslist-dist-20200413.tar.gz"
diff --git a/user/libunistring/APKBUILD b/user/libunistring/APKBUILD
index 95a2e3608..e41e0cffc 100644
--- a/user/libunistring/APKBUILD
+++ b/user/libunistring/APKBUILD
@@ -9,12 +9,10 @@ arch="all"
license="GPL-2.0+ OR LGPL-3.0+"
depends=""
makedepends=""
-install=""
subpackages="$pkgname-dev $pkgname-doc"
-source="http://ftp.gnu.org/gnu/libunistring/libunistring-$pkgver.tar.xz"
+source="https://ftp.gnu.org/gnu/libunistring/libunistring-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,12 +26,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
rm -f "$pkgdir"/usr/lib/charset.alias
}
diff --git a/user/libusb/APKBUILD b/user/libusb/APKBUILD
index f163c64ab..80e8d0dd6 100644
--- a/user/libusb/APKBUILD
+++ b/user/libusb/APKBUILD
@@ -1,17 +1,17 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libusb
-pkgver=1.0.22
-pkgrel=1
+pkgver=1.0.23
+pkgrel=0
pkgdesc="Library for USB device communication"
url="https://libusb.info/"
arch="all"
license="LGPL-2.1+"
-subpackages="$pkgname-dev"
+depends=""
makedepends="eudev-dev linux-headers"
+subpackages="$pkgname-dev"
source="https://github.com/libusb/libusb/releases/download/v$pkgver/$pkgname-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -20,13 +20,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="2a93ba48bb66b9775838c16d74f7269348d9bc163f94ccf2842d1108d95a41cf79f8c8065233bea410fb94261a462dbb08ecfa1a9b6d3ddf4a5980e6043f74f4 libusb-1.0.22.tar.bz2"
+sha512sums="73430ad31dd405e76a9c6c55086961003989c44964e2735b5076f9ca849e3f6fe71d10a66b74b111f0c34a0d2cb744b9ca105863c552123fce4ec0bbdd2ec15b libusb-1.0.23.tar.bz2"
diff --git a/user/libusbmuxd/APKBUILD b/user/libusbmuxd/APKBUILD
new file mode 100644
index 000000000..0deaf2220
--- /dev/null
+++ b/user/libusbmuxd/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=libusbmuxd
+pkgver=2.0.2
+pkgrel=0
+pkgdesc="Library support for USBMux protocols"
+url="https://libimobiledevice.org/"
+arch="all"
+license="LGPL-2.1+ AND GPL-2.0+"
+depends=""
+makedepends="libplist-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/libimobiledevice/libusbmuxd/releases/download/$pkgver/libusbmuxd-$pkgver.tar.bz2"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="d3bec006db86c96f032782ef95ffa9cb6427a0ffb45a91d441346d77472343548819572976b4545a04763e8031eb15b7e40dc6b9184a1a363ddcc0d2827323bb libusbmuxd-2.0.2.tar.bz2"
diff --git a/user/libutempter/APKBUILD b/user/libutempter/APKBUILD
index 058530412..847c0be49 100644
--- a/user/libutempter/APKBUILD
+++ b/user/libutempter/APKBUILD
@@ -3,7 +3,7 @@ pkgname=libutempter
pkgver=1.1.6
pkgrel=1
pkgdesc="Library to record virtual terminal sessions in login files"
-url="No URL"
+url=" "
arch="all"
options="!check suid" # No test suite.
license="LGPL-2.1+"
@@ -16,12 +16,10 @@ source="ftp://ftp.altlinux.org/pub/people/ldv/utempter/$pkgname-$pkgver.tar.bz2
"
build() {
- cd "$builddir"
make LDLIBS="-lutmps -lskarnet"
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
# we need to be setuid, not setgid
chmod 4711 "$pkgdir"/usr/lib/utempter/utempter
diff --git a/user/libva/APKBUILD b/user/libva/APKBUILD
index 83bfad60e..c1bcd1705 100644
--- a/user/libva/APKBUILD
+++ b/user/libva/APKBUILD
@@ -1,26 +1,18 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libva
-pkgver=2.4.0
-pkgrel=0
+pkgver=2.14.0
+pkgrel=2
pkgdesc="Video Acceleration (VA) API for Linux"
url="https://github.com/intel/libva"
arch="all"
options="!check" # No test suite.
license="MIT"
depends=""
-depends_dev="mesa-dev"
-makedepends="$depends_dev autoconf automake libtool"
-subpackages="$pkgname-dev"
-source="https://github.com/intel/${pkgname}/releases/download/${pkgver}/${pkgname}-${pkgver}.tar.bz2"
-
-prepare() {
- default_prepare
- # we need to regen the configure script which will unconditionally
- # depend on wayland scanner otherwise
- libtoolize --force && aclocal -I m4 && autoconf \
- && automake --add-missing
-}
+makedepends="libdrm-dev libglvnd-dev libx11-dev libxext-dev libxfixes-dev
+ cmd:which wayland-dev wayland-protocols"
+subpackages="$pkgname-dev $pkgname-wayland $pkgname-x11"
+source="https://github.com/intel/$pkgname/releases/download/$pkgver/$pkgname-$pkgver.tar.bz2"
build() {
./configure \
@@ -32,7 +24,7 @@ build() {
--infodir=/usr/share/info \
--localstatedir=/var \
--enable-x11 \
- --disable-wayland \
+ --enable-wayland \
--disable-static \
--enable-shared
make
@@ -42,4 +34,19 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="67373e20932bca0d52cd8f48ed10c1f01752be73642ad4d2c85dcee813dccf205c8ca62fdc69fb3f4f83a685e2a8ef2c6646174e3453a8f5763cac16a58321c3 libva-2.4.0.tar.bz2"
+wayland() {
+ pkgdesc="$pkgdesc (Wayland library)"
+ install_if="$pkgname=$pkgver-r$pkgrel wayland"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libva-wayland.so* "$subpkgdir"/usr/lib/
+}
+
+x11() {
+ pkgdesc="$pkgdesc (X11 library)"
+ install_if="$pkgname=$pkgver-r$pkgrel libx11"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libva-glx.so* "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/lib/libva-x11.so* "$subpkgdir"/usr/lib/
+}
+
+sha512sums="7ee6f0711929d1c6f6436b69ad0fedcee7e8a450be907d90a7c9741d55de824de471efbc20a398a47af03f5bbacb927daa1f2f780fce6ddfe6bbee21729c95ca libva-2.14.0.tar.bz2"
diff --git a/user/libvdpau/APKBUILD b/user/libvdpau/APKBUILD
index bb400cf77..8e5d96c78 100644
--- a/user/libvdpau/APKBUILD
+++ b/user/libvdpau/APKBUILD
@@ -1,35 +1,30 @@
-# Contributor: Carlo Landmeter
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libvdpau
-pkgver=1.2
+pkgver=1.5
pkgrel=0
pkgdesc="Hardware-accelerated video playback library"
url="https://cgit.freedesktop.org/~aplattner/libvdpau"
arch="all"
license="MIT"
depends=""
-makedepends="libx11-dev libxext-dev xorgproto-dev"
-subpackages="$pkgname-dev $pkgname-doc"
-source="https://gitlab.freedesktop.org/vdpau/libvdpau/uploads/14b620084c027d546fa0b3f083b800c6/libvdpau-1.2.tar.bz2"
+makedepends="libx11-dev libxext-dev meson xorgproto-dev"
+subpackages="$pkgname-dev"
+source="https://gitlab.freedesktop.org/vdpau/libvdpau/-/archive/$pkgver/libvdpau-$pkgver.tar.bz2"
build() {
- LIBS="-lX11" \
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --infodir=/usr/share/info
- make
+ meson \
+ -Dprefix=/usr \
+ build
+ meson compile -C build
}
check() {
- make check
+ meson test -C build
}
package() {
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" meson install -C build
}
-sha512sums="86aa3f2a39cb73a597bf417da2eeef73ff01160ed9f54dff3725785ff5a289f47040496de44e2f5292d59657d4746e369b3fa307c4f83a32f7cc28e4cd8bce6f libvdpau-1.2.tar.bz2"
+sha512sums="7affb14874431eba1be6e8634fcbb6247cbf6956fb88116e06e60de30a7852a407e8598176a369c2ba4bfaef4be58727e51d4bc390f705991ac83d660f611ff5 libvdpau-1.5.tar.bz2"
diff --git a/user/libverto/001-libev-not-compliant-c89.patch b/user/libverto/001-libev-not-compliant-c89.patch
deleted file mode 100644
index 502aefe98..000000000
--- a/user/libverto/001-libev-not-compliant-c89.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff --git a/configure.ac b/configure.ac
-index 09ee123..b7b5908 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -7,8 +7,8 @@ m4_ifdef([AC_USE_SYSTEM_EXTENSIONS],
- [AC_USE_SYSTEM_EXTENSIONS],
- [AC_GNU_SOURCE])
-
--AC_PROG_CC_C89
--for flag in -std=c89 -Wall -Wextra; do
-+AC_PROG_CC_C99
-+for flag in -Wall -Wextra; do
- AC_TRY_COMPILE([], [return 0;], [CFLAGS="$CFLAGS $flag"],)
- done
-
diff --git a/user/libverto/APKBUILD b/user/libverto/APKBUILD
index 4e208e48d..602ed91e8 100644
--- a/user/libverto/APKBUILD
+++ b/user/libverto/APKBUILD
@@ -1,26 +1,24 @@
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
# Maintainer:
pkgname=libverto
-pkgver=0.3.0
-pkgrel=2
+pkgver=0.3.1
+pkgrel=1
pkgdesc="Main loop abstraction library"
url="https://github.com/npmccallum/libverto"
arch="all"
license="MIT"
+depends=""
makedepends="glib-dev libevent-dev libev-dev automake autoconf libtool"
subpackages="$pkgname-dev $pkgname-libev $pkgname-libevent $pkgname-glib"
source="$pkgname-$pkgver.tar.gz::https://github.com/npmccallum/$pkgname/archive/$pkgver.tar.gz
- 001-libev-not-compliant-c89.patch
- "
+ dash.patch"
prepare() {
default_prepare
- cd "$builddir"
autoreconf -i
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,12 +29,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -50,5 +46,5 @@ libev() { _mv_backend libev; }
libevent() { _mv_backend libevent; }
glib() { _mv_backend glib; }
-sha512sums="1c5ff810c839a9dbd515f0782e4f742193e4e6d40a5a87e669ceb4765838d30569dc89f2b425c131247fb5f67e354abb472d08fc5e91f4e5a82c05a30d2daac8 libverto-0.3.0.tar.gz
-db713bb388766a3bd4cf7fca579fdd1611f30d53054d246d42c2b106932a3c758347d84ff5138b1135c599437f520dc46d20048bb27e6d305e270fca7ac3a53b 001-libev-not-compliant-c89.patch"
+sha512sums="8b46a5c410be210e52b92dccfe6e677026b26fd6cab1ee7a97d7eab4d4951913bde8768a77942189a0188ee336d5dcca2a985e9edc3a8c7529f164a7e5077bd8 libverto-0.3.1.tar.gz
+414242414a71c36744be07e034a75d3c95d7d41682eb8431115b25e2b09040939ee3aaaaee8c9ba303d4f5ab21ae39de2843b6e137659deba2bc0befda208a8f dash.patch"
diff --git a/user/libverto/dash.patch b/user/libverto/dash.patch
new file mode 100644
index 000000000..f506c5dba
--- /dev/null
+++ b/user/libverto/dash.patch
@@ -0,0 +1,131 @@
+--- libverto-0.3.1/configure.ac
++++ libverto-0.3.1/configure.ac
+@@ -91,22 +91,22 @@ AC_ARG_WITH([tevent],
+
+ # Ensure that if a builtin is chosen only one is built
+ BUILTIN_MODULE=
+-if test x$WITH_GLIB == xbuiltin; then
++if test x$WITH_GLIB = xbuiltin; then
+ BUILTIN_MODULE=glib
+ WITH_LIBEV=no
+ WITH_LIBEVENT=no
+ WITH_TEVENT=no
+-elif test x$WITH_LIBEV == xbuiltin; then
++elif test x$WITH_LIBEV = xbuiltin; then
+ BUILTIN_MODULE=libev
+ WITH_LIBGLIB=no
+ WITH_LIBEVENT=no
+ WITH_TEVENT=no
+-elif test x$WITH_LIBEVENT == xbuiltin; then
++elif test x$WITH_LIBEVENT = xbuiltin; then
+ BUILTIN_MODULE=libevent
+ WITH_LIBGLIB=no
+ WITH_LIBEV=no
+ WITH_TEVENT=no
+-elif test x$WITH_TEVENT == xbuiltin; then
++elif test x$WITH_TEVENT = xbuiltin; then
+ BUILTIN_MODULE=tevent
+ WITH_GLIB=no
+ WITH_LIBEV=no
+@@ -118,29 +118,29 @@ if test x$BUILTIN_MODULE != x; then
+ fi
+
+ # Ensure that there is only one default (convert duplicate default to yes)
+-if test x$WITH_GLIB == xdefault; then
++if test x$WITH_GLIB = xdefault; then
+ AC_DEFINE([DEFUALT_MODULE], [glib])
+- test x$WITH_LIBEV == xdefault && WITH_LIBEV=yes
+- test x$WITH_LIBEVENT == xdefault && WITH_LIBEVENT=yes
+- test x$WITH_TEVENT == xdefault && WITH_TEVENT=yes
++ test x$WITH_LIBEV = xdefault && WITH_LIBEV=yes
++ test x$WITH_LIBEVENT = xdefault && WITH_LIBEVENT=yes
++ test x$WITH_TEVENT = xdefault && WITH_TEVENT=yes
+ fi
+-if test x$WITH_LIBEV == xdefault; then
++if test x$WITH_LIBEV = xdefault; then
+ AC_DEFINE([DEFUALT_MODULE], [libev])
+- test x$WITH_LIBGLIB == xdefault && WITH_GLIB=yes
+- test x$WITH_LIBEVENT == xdefault && WITH_LIBEVENT=yes
+- test x$WITH_TEVENT == xdefault && WITH_TEVENT=yes
++ test x$WITH_LIBGLIB = xdefault && WITH_GLIB=yes
++ test x$WITH_LIBEVENT = xdefault && WITH_LIBEVENT=yes
++ test x$WITH_TEVENT = xdefault && WITH_TEVENT=yes
+ fi
+-if test x$WITH_LIBEVENT == xdefault; then
++if test x$WITH_LIBEVENT = xdefault; then
+ AC_DEFINE([DEFUALT_MODULE], [libevent])
+- test x$WITH_GLIB == xdefault && WITH_GLIB=yes
+- test x$WITH_LIBEV == xdefault && WITH_LIBEV=yes
+- test x$WITH_TEVENT == xdefault && WITH_TEVENT=yes
++ test x$WITH_GLIB = xdefault && WITH_GLIB=yes
++ test x$WITH_LIBEV = xdefault && WITH_LIBEV=yes
++ test x$WITH_TEVENT = xdefault && WITH_TEVENT=yes
+ fi
+-if test x$WITH_TEVENT == xdefault; then
++if test x$WITH_TEVENT = xdefault; then
+ AC_DEFINE([DEFUALT_MODULE], [tevent])
+- test x$WITH_GLIB == xdefault && WITH_GLIB=yes
+- test x$WITH_LIBEV == xdefault && WITH_LIBEV=yes
+- test x$WITH_LIBEVENT == xdefault && WITH_LIBEVENT=yes
++ test x$WITH_GLIB = xdefault && WITH_GLIB=yes
++ test x$WITH_LIBEV = xdefault && WITH_LIBEV=yes
++ test x$WITH_LIBEVENT = xdefault && WITH_LIBEVENT=yes
+ fi
+
+ BUILD_GLIB=no
+@@ -151,7 +151,7 @@ BUILD_TEVENT=no
+ if test x$WITH_GLIB != xno; then
+ PKG_CHECK_MODULES([glib], [glib-2.0], [BUILD_GLIB=$WITH_GLIB],
+ [test x$WITH_GLIB != xauto && AC_MSG_ERROR("glib not found")])
+- if test x$BUILD_GLIB == xauto; then
++ if test x$BUILD_GLIB = xauto; then
+ BUILD_GLIB=yes
+ fi
+ fi
+@@ -165,7 +165,7 @@ if test x$WITH_LIBEV != xno; then
+ ),
+ [test x$WITH_LIBEV != xauto && AC_MSG_ERROR("ev.h not found")]
+ )
+- if test x$BUILD_LIBEV == xauto; then
++ if test x$BUILD_LIBEV = xauto; then
+ BUILD_LIBEV=yes
+ fi
+ fi
+@@ -173,7 +173,7 @@ fi
+ if test x$WITH_LIBEVENT != xno; then
+ PKG_CHECK_MODULES([libevent], [libevent >= 2.0], [BUILD_LIBEVENT=$WITH_LIBEVENT],
+ [test x$WITH_LIBEVENT != xauto && AC_MSG_ERROR("libevent not found")])
+- if test x$BUILD_LIBEVENT == xauto; then
++ if test x$BUILD_LIBEVENT = xauto; then
+ BUILD_LIBEVENT=yes
+ fi
+ fi
+@@ -181,19 +181,19 @@ fi
+ if test x$WITH_TEVENT != xno; then
+ PKG_CHECK_MODULES([tevent], [tevent], [BUILD_TEVENT=$WITH_TEVENT],
+ [test x$WITH_TEVENT != xauto && AC_MSG_ERROR("tevent not found")])
+- if test x$BUILD_TEVENT == xauto; then
++ if test x$BUILD_TEVENT = xauto; then
+ BUILD_TEVENT=yes
+ fi
+ fi
+
+-AM_CONDITIONAL([MODULE_GLIB], [test x$BUILTIN_MODULE == x && test x$BUILD_GLIB != xno])
+-AM_CONDITIONAL([MODULE_LIBEV], [test x$BUILTIN_MODULE == x && test x$BUILD_LIBEV != xno])
+-AM_CONDITIONAL([MODULE_LIBEVENT], [test x$BUILTIN_MODULE == x && test x$BUILD_LIBEVENT != xno])
+-AM_CONDITIONAL([MODULE_TEVENT], [test x$BUILTIN_MODULE == x && test x$BUILD_TEVENT != xno])
+-AM_CONDITIONAL([BUILTIN_GLIB], [test x$BUILTIN_MODULE == xglib])
+-AM_CONDITIONAL([BUILTIN_LIBEV], [test x$BUILTIN_MODULE == xlibev])
+-AM_CONDITIONAL([BUILTIN_LIBEVENT], [test x$BUILTIN_MODULE == xlibevent])
+-AM_CONDITIONAL([BUILTIN_TEVENT], [test x$BUILTIN_MODULE == xtevent])
++AM_CONDITIONAL([MODULE_GLIB], [test x$BUILTIN_MODULE = x && test x$BUILD_GLIB != xno])
++AM_CONDITIONAL([MODULE_LIBEV], [test x$BUILTIN_MODULE = x && test x$BUILD_LIBEV != xno])
++AM_CONDITIONAL([MODULE_LIBEVENT], [test x$BUILTIN_MODULE = x && test x$BUILD_LIBEVENT != xno])
++AM_CONDITIONAL([MODULE_TEVENT], [test x$BUILTIN_MODULE = x && test x$BUILD_TEVENT != xno])
++AM_CONDITIONAL([BUILTIN_GLIB], [test x$BUILTIN_MODULE = xglib])
++AM_CONDITIONAL([BUILTIN_LIBEV], [test x$BUILTIN_MODULE = xlibev])
++AM_CONDITIONAL([BUILTIN_LIBEVENT], [test x$BUILTIN_MODULE = xlibevent])
++AM_CONDITIONAL([BUILTIN_TEVENT], [test x$BUILTIN_MODULE = xtevent])
+
+ AC_MSG_NOTICE()
+ AC_MSG_NOTICE([BUILD CONFIGURATION])
diff --git a/user/libvisio/APKBUILD b/user/libvisio/APKBUILD
index 9e5a8dace..e000d71ea 100644
--- a/user/libvisio/APKBUILD
+++ b/user/libvisio/APKBUILD
@@ -1,25 +1,19 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=libvisio
-pkgver=0.1.6
-pkgrel=3
+pkgver=0.1.7
+pkgrel=1
pkgdesc="Import filter and tools for MS Visio diagrams"
url="https://wiki.documentfoundation.org/DLP/Libraries/libvisio"
arch="all"
license="MPL-2.0"
-depends_dev="librevenge-dev"
-makedepends="$depends_dev boost-dev icu-dev libxml2-dev doxygen gperf perl"
+depends=""
checkdepends="cppunit-dev"
+makedepends="boost-dev icu-dev librevenge-dev libxml2-dev doxygen gperf perl"
subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
source="http://dev-www.libreoffice.org/src/$pkgname/$pkgname-$pkgver.tar.xz"
-prepare() {
- default_prepare
- update_config_sub
-}
-
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,12 +26,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -46,4 +38,4 @@ tools() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="58cee8cfe4205b2cad2f11dbe17882e57ebf0d10500116ca9d8d120e138f8eb0c65a5fea3bd7d2746bf8140377ee9deb34258597e028f9fdc8d21f270606cce1 libvisio-0.1.6.tar.xz"
+sha512sums="c26f67a09fa6a6d0bf6f3fff5590d5cf16983630d4f7cfcf86d9461baec58dbdf7989fd934be6db0639ca043c160aac2d008275afb9e047766bc878ac579a9ea libvisio-0.1.7.tar.xz"
diff --git a/user/libvncserver/APKBUILD b/user/libvncserver/APKBUILD
index 0801da573..38aa33611 100644
--- a/user/libvncserver/APKBUILD
+++ b/user/libvncserver/APKBUILD
@@ -1,8 +1,8 @@
-# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
+# Contributor: Sergey Lukin <sergej.lukin@gmail.com>
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libvncserver
-pkgver=0.9.12
+pkgver=0.9.13
pkgrel=0
pkgdesc="Library to make writing a vnc server easy"
url="https://libvnc.github.io/"
@@ -12,7 +12,7 @@ depends=""
depends_dev="libgcrypt-dev libjpeg-turbo-dev gnutls-dev libpng-dev
libice-dev libx11-dev libxdamage-dev libxext-dev libxfixes-dev
libxi-dev libxinerama-dev libxrandr-dev libxtst-dev"
-makedepends="$depends_dev autoconf automake libtool"
+makedepends="$depends_dev cmake"
subpackages="$pkgname-dev"
source="https://github.com/LibVNC/libvncserver/archive/LibVNCServer-$pkgver.tar.gz"
builddir="$srcdir"/libvncserver-LibVNCServer-$pkgver
@@ -21,6 +21,14 @@ builddir="$srcdir"/libvncserver-LibVNCServer-$pkgver
# 0.9.11-r0:
# - CVE-2016-9941
# - CVE-2016-9942
+# 0.9.12-r0:
+# - CVE-2018-15127
+# 0.9.12-r1:
+# - CVE-2019-15681
+# - CVE-2019-15690
+# 0.9.13-r0:
+# - CVE-2019-20788
+# - CVE-2020-14401
build() {
if [ "$CBUILD" != "$CHOST" ]; then
@@ -28,11 +36,12 @@ build() {
fi
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
@@ -45,4 +54,4 @@ package() {
make install DESTDIR="$pkgdir"
}
-sha512sums="60ff1cc93a937d6f8f97449bc58b763095846207112f7b1b3c43eb2d74448b595d6da949903a764bd484ee54e38ff6277e882adbe965dd6d26ba15ef6ff6fcb8 LibVNCServer-0.9.12.tar.gz"
+sha512sums="18b0a1698d32bbdbfe6f65f76130b2a95860e3cc76e8adb904269663698c7c0ae982f451fda1f25e5461f096045d40a89d9014258f439366d5b4feaa4999d643 LibVNCServer-0.9.13.tar.gz"
diff --git a/user/libvncserver/LibVNCServer-0.9.10-system_minilzo.patch b/user/libvncserver/LibVNCServer-0.9.10-system_minilzo.patch
deleted file mode 100644
index 34e789bba..000000000
--- a/user/libvncserver/LibVNCServer-0.9.10-system_minilzo.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-diff -up LibVNCServer-0.9.10/libvncclient/Makefile.am.system_minilzo LibVNCServer-0.9.10/libvncclient/Makefile.am
---- LibVNCServer-0.9.10/libvncclient/Makefile.am.system_minilzo 2014-04-05 18:38:35.000000000 -0500
-+++ LibVNCServer-0.9.10/libvncclient/Makefile.am 2014-04-29 08:56:27.861761880 -0500
-@@ -13,10 +13,10 @@ endif
- endif
-
-
--libvncclient_la_SOURCES=cursor.c listen.c rfbproto.c sockets.c vncviewer.c ../common/minilzo.c $(TLSSRCS)
--libvncclient_la_LIBADD=$(TLSLIBS) $(VA_LIBS)
-+libvncclient_la_SOURCES=cursor.c listen.c rfbproto.c sockets.c vncviewer.c $(TLSSRCS)
-+libvncclient_la_LIBADD=$(TLSLIBS) $(VA_LIBS) -lminilzo
-
--noinst_HEADERS=../common/lzodefs.h ../common/lzoconf.h ../common/minilzo.h tls.h
-+noinst_HEADERS=tls.h
-
- rfbproto.o: rfbproto.c corre.c hextile.c rre.c tight.c zlib.c zrle.c ultra.c
-
-diff -up LibVNCServer-0.9.10/libvncclient/rfbproto.c.system_minilzo LibVNCServer-0.9.10/libvncclient/rfbproto.c
---- LibVNCServer-0.9.10/libvncclient/rfbproto.c.system_minilzo 2014-04-05 18:38:35.000000000 -0500
-+++ LibVNCServer-0.9.10/libvncclient/rfbproto.c 2014-04-29 08:39:57.638331693 -0500
-@@ -61,7 +61,7 @@
- #include <gcrypt.h>
- #endif
-
--#include "minilzo.h"
-+#include <lzo/minilzo.h>
- #include "tls.h"
-
- /*
-diff -up LibVNCServer-0.9.10/libvncserver/Makefile.am.system_minilzo LibVNCServer-0.9.10/libvncserver/Makefile.am
---- LibVNCServer-0.9.10/libvncserver/Makefile.am.system_minilzo 2014-04-05 18:38:35.000000000 -0500
-+++ LibVNCServer-0.9.10/libvncserver/Makefile.am 2014-04-29 08:39:57.638331693 -0500
-@@ -37,7 +37,7 @@ include_HEADERS=../rfb/rfb.h ../rfb/rfbc
-
- noinst_HEADERS=../common/d3des.h ../rfb/default8x16.h zrleoutstream.h \
- zrlepalettehelper.h zrletypes.h private.h scale.h rfbssl.h rfbcrypto.h \
-- ../common/minilzo.h ../common/lzoconf.h ../common/lzodefs.h ../common/md5.h ../common/sha1.h \
-+ ../common/md5.h ../common/sha1.h \
- $(TIGHTVNCFILETRANSFERHDRS)
-
- EXTRA_DIST=tableinit24.c tableinittctemplate.c tabletranstemplate.c \
-@@ -54,11 +54,11 @@ endif
- LIB_SRCS = main.c rfbserver.c rfbregion.c auth.c sockets.c $(WEBSOCKETSSRCS) \
- stats.c corre.c hextile.c rre.c translate.c cutpaste.c \
- httpd.c cursor.c font.c \
-- draw.c selbox.c ../common/d3des.c ../common/vncauth.c cargs.c ../common/minilzo.c ultra.c scale.c \
-+ draw.c selbox.c ../common/d3des.c ../common/vncauth.c cargs.c ultra.c scale.c \
- $(ZLIBSRCS) $(TIGHTSRCS) $(TIGHTVNCFILETRANSFERSRCS)
-
- libvncserver_la_SOURCES=$(LIB_SRCS)
--libvncserver_la_LIBADD=$(WEBSOCKETSSSLLIBS)
-+libvncserver_la_LIBADD=$(WEBSOCKETSSSLLIBS) -lminilzo
-
- lib_LTLIBRARIES=libvncserver.la
-
-diff -up LibVNCServer-0.9.10/libvncserver/ultra.c.system_minilzo LibVNCServer-0.9.10/libvncserver/ultra.c
---- LibVNCServer-0.9.10/libvncserver/ultra.c.system_minilzo 2014-04-05 18:38:35.000000000 -0500
-+++ LibVNCServer-0.9.10/libvncserver/ultra.c 2014-04-29 08:39:57.638331693 -0500
-@@ -8,7 +8,7 @@
- */
-
- #include <rfb/rfb.h>
--#include "minilzo.h"
-+#include <lzo/minilzo.h>
-
- /*
- * cl->beforeEncBuf contains pixel data in the client's format.
diff --git a/user/libvorbis/APKBUILD b/user/libvorbis/APKBUILD
index 2b5b41f4c..3fb3aa3d6 100644
--- a/user/libvorbis/APKBUILD
+++ b/user/libvorbis/APKBUILD
@@ -1,27 +1,31 @@
# Maintainer:
pkgname=libvorbis
-pkgver=1.3.6
+pkgver=1.3.7
pkgrel=0
pkgdesc="Vorbis audio codec library"
url="https://xiph.org/vorbis/"
arch="all"
-options="!check" # Test suite doesn't compile.
license="BSD-3-Clause"
-subpackages="$pkgname-dev $pkgname-doc"
+depends=""
makedepends="libogg-dev"
+subpackages="$pkgname-dev $pkgname-doc"
source="https://downloads.xiph.org/releases/vorbis/$pkgname-$pkgver.tar.xz
- CVE-2017-14160.patch
"
# secfixes:
+# 1.3.7-r0:
+# - CVE-2018-10392
+# - CVE-2018-10393
+# 1.3.6-r1:
+# - CVE-2018-10392
# 1.3.5-r4:
-# - CVE-2017-14632
-# - CVE-2017-14633
+# - CVE-2017-14632
+# - CVE-2017-14633
# 1.3.5-r3:
-# - CVE-2017-14160
+# - CVE-2017-14160
+# - CVE-2018-10393
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,10 +36,12 @@ build() {
make
}
+check() {
+ make -j1 check
+}
+
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="a5d990bb88db2501b16f8eaee9f2ecb599cefd7dab2134d16538d8905263a972157c7671867848c2a8a358bf5e5dbc7721205ece001032482f168be7bda4f132 libvorbis-1.3.6.tar.xz
-4c2f7be947f2159ae47175cba89950c7b7d357b37a20d54382e4fbecd8c268b148e6cb86cb148945c7b68bbe8b14f466e910b35b80903ab51f1b02cfccf5806e CVE-2017-14160.patch"
+sha512sums="bbf5f11f623d959b3ba98d6b52806521b0b918b59b867f0658c153ea1013293364eead4987e9e71f8798021379310860a2e548fcf89d10caf23d45e41aba45cd libvorbis-1.3.7.tar.xz"
diff --git a/user/libvorbis/CVE-2017-14160.patch b/user/libvorbis/CVE-2017-14160.patch
deleted file mode 100644
index 9ad9d18f7..000000000
--- a/user/libvorbis/CVE-2017-14160.patch
+++ /dev/null
@@ -1,58 +0,0 @@
-From 98a60969315dba8c1e8231f561e1551670bc80ae Mon Sep 17 00:00:00 2001
-Message-Id: <98a60969315dba8c1e8231f561e1551670bc80ae.1511192857.git.agx@sigxcpu.org>
-From: =?UTF-8?q?Guido=20G=C3=BCnther?= <agx@sigxcpu.org>
-Date: Wed, 15 Nov 2017 13:12:00 +0100
-Subject: [PATCH] CVE-2017-14160: make sure we don't overflow
-
----
- lib/psy.c | 9 ++++-----
- 1 file changed, 4 insertions(+), 5 deletions(-)
-
-diff --git a/lib/psy.c b/lib/psy.c
-index 422c6f1e..8bbf6cf3 100644
---- a/lib/psy.c
-+++ b/lib/psy.c
-@@ -599,7 +599,7 @@ static void bark_noise_hybridmp(int n,const long *b,
- XY[i] = tXY;
- }
-
-- for (i = 0, x = 0.f;; i++, x += 1.f) {
-+ for (i = 0, x = 0.f; i < n; i++, x += 1.f) {
-
- lo = b[i] >> 16;
- if( lo>=0 ) break;
-@@ -621,12 +621,11 @@ static void bark_noise_hybridmp(int n,const long *b,
- noise[i] = R - offset;
- }
-
-- for ( ;; i++, x += 1.f) {
-+ for ( ; i < n; i++, x += 1.f) {
-
- lo = b[i] >> 16;
- hi = b[i] & 0xffff;
- if(hi>=n)break;
--
- tN = N[hi] - N[lo];
- tX = X[hi] - X[lo];
- tXX = XX[hi] - XX[lo];
-@@ -651,7 +650,7 @@ static void bark_noise_hybridmp(int n,const long *b,
-
- if (fixed <= 0) return;
-
-- for (i = 0, x = 0.f;; i++, x += 1.f) {
-+ for (i = 0, x = 0.f; i < n; i++, x += 1.f) {
- hi = i + fixed / 2;
- lo = hi - fixed;
- if(lo>=0)break;
-@@ -670,7 +669,7 @@ static void bark_noise_hybridmp(int n,const long *b,
-
- if (R - offset < noise[i]) noise[i] = R - offset;
- }
-- for ( ;; i++, x += 1.f) {
-+ for ( ; i < n; i++, x += 1.f) {
-
- hi = i + fixed / 2;
- lo = hi - fixed;
---
-2.15.0
-
diff --git a/user/libwacom/APKBUILD b/user/libwacom/APKBUILD
index 52326df1f..aa80bcae0 100644
--- a/user/libwacom/APKBUILD
+++ b/user/libwacom/APKBUILD
@@ -1,39 +1,35 @@
# Contributor: Ivan Tham <pickfire@riseup.net>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libwacom
-pkgver=0.33
+pkgver=1.3
pkgrel=0
pkgdesc="Tablet description library"
url="http://linuxwacom.sourceforge.net/"
arch="all"
license="MIT"
depends=""
-makedepends="libgudev-dev"
checkdepends="bash findutils"
+makedepends="libgudev-dev libxml2-dev meson ninja"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://github.com/linuxwacom/libwacom/releases/download/$pkgname-$pkgver/$pkgname-$pkgver.tar.bz2"
+source="https://github.com/linuxwacom/libwacom/releases/download/$pkgname-$pkgver/$pkgname-$pkgver.tar.bz2
+ musl-test.patch
+ "
build() {
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --disable-static
- make
- # conflicts with TS-6610 tablet
- rm "$builddir"/data/huion-h420.tablet
- rm "$builddir"/data/layouts/huion-h420.svg
+ meson \
+ -Dprefix=/usr \
+ -Dtest_deprecated=false \
+ build
+ ninja -C build
}
check() {
- make check
+ ninja -C build test
}
package() {
- make DESTDIR="$pkgdir" install
- install -dm755 "$pkgdir"/usr/lib/udev/rules.d/
- tools/generate-udev-rules
- > "$pkgdir"/usr/lib/udev/rules.d/65-libwacom.rules
+ DESTDIR="$pkgdir" ninja -C build install
}
-sha512sums="de4d9cf3b5f4d87a159ba8ee617bafce9d13b67dc23d9dc67efd57317b0df2079dd0de328bc800de47f14ee49ea82bb842e34297cef23ba336c1ddca3afa826d libwacom-0.33.tar.bz2"
+sha512sums="beb92051d1a2be5079518b9f254e5621bf7c13ab92f811d5a1b7d19eb0ecddb28d94db0e1724b379be8970b0de0e7d3eb4d3c15b4aeedacc623357e10740355c libwacom-1.3.tar.bz2
+62b1a137d74e32bd38f807e1dd51150a59f8be105cf1f8a56ec7da8d7139ec5dcd7e4590e12e5cd1e4a81a34d9a50d4c82df933187026760a39f351b4b5d1789 musl-test.patch"
diff --git a/user/libwacom/musl-test.patch b/user/libwacom/musl-test.patch
new file mode 100644
index 000000000..cc4add634
--- /dev/null
+++ b/user/libwacom/musl-test.patch
@@ -0,0 +1,22 @@
+--- libwacom-1.2/meson.build.old 2019-12-22 21:45:06.000000000 +0000
++++ libwacom-1.2/meson.build 2019-12-25 11:43:51.004107631 +0000
+@@ -588,7 +588,7 @@
+ # because of the tricks we use in calling the function and exposing
+ # it to begin with, LTO gets confused and this fails to link.
+ # Let's just disable it here.
+- if not get_option('b_lto')
++ if not get_option('b_lto') and get_option('test_deprecated')
+ test_deprecated = executable('test-deprecated',
+ 'test/test-deprecated.c',
+ dependencies: [dep_libwacom, dep_dl],
+--- libwacom-1.2/meson_options.txt.old 2019-11-07 02:25:47.000000000 +0000
++++ libwacom-1.2/meson_options.txt 2019-12-25 11:45:11.585452086 +0000
+@@ -10,4 +10,8 @@
+ type: 'feature',
+ value: 'enabled',
+ description: 'Build the tests [default=enabled]')
++option('test_deprecated',
++ type: 'boolean',
++ value: true,
++ description: 'Test the deprecated ABI (fails on musl) [default=true]')
+
diff --git a/user/libwebp/APKBUILD b/user/libwebp/APKBUILD
index 8af3e8313..22dd21459 100644
--- a/user/libwebp/APKBUILD
+++ b/user/libwebp/APKBUILD
@@ -1,18 +1,18 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
# Maintainer:
pkgname=libwebp
-pkgver=1.0.2
+pkgver=1.0.3
pkgrel=0
pkgdesc="Libraries for working with WebP images"
url="https://developers.google.com/speed/webp/"
arch="all"
-license="BSD"
+license="BSD-3-Clause"
+depends=""
makedepends="libpng-dev libjpeg-turbo-dev tiff-dev giflib-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
-source="https://downloads.webmproject.org/releases/webp/libwebp-$pkgver.tar.gz"
+source="https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,12 +25,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
mkdir -p "$pkgdir"/usr/share/doc/$pkgname
install -Dm644 PATENTS README "$pkgdir"/usr/share/doc/$pkgname
@@ -42,4 +40,4 @@ tools() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}
-sha512sums="e095b8fdf0096395daf12892b3b74c472868e727f23640ba7aa5922a5a028b778a6a60d8a94f696f6c0ca49577dfc9a0b599ecb74ad831ade48c6db812b71d2e libwebp-1.0.2.tar.gz"
+sha512sums="3ccdc62e5906f8de791053560e932b39df3cfdd7793617bd4562b7d95e2f6feac1535bc035e1b02591cab14b117ab15e51af6f9e4e3af1df0869c63945ec86b9 libwebp-1.0.3.tar.gz"
diff --git a/user/libwnck/APKBUILD b/user/libwnck/APKBUILD
index d722a9c53..7c73874e5 100644
--- a/user/libwnck/APKBUILD
+++ b/user/libwnck/APKBUILD
@@ -1,38 +1,31 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libwnck
-pkgver=3.30.0
+pkgver=3.36.0
_pkgmaj=${pkgver%.*}
pkgrel=0
pkgdesc="Window navigator construction kit library from Gnome"
url="https://gnome.org"
arch="all"
license="LGPL-2.0+"
-makedepends="glib-dev gtk+3.0-dev gobject-introspection-dev vala-dev
- startup-notification-dev"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+makedepends="glib-dev gtk+3.0-dev gobject-introspection-dev libxres-dev
+ startup-notification-dev vala-dev meson ninja"
+subpackages="$pkgname-dev $pkgname-lang"
source="https://download.gnome.org/sources/libwnck/$_pkgmaj/libwnck-$pkgver.tar.xz"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
+ meson \
+ -Dprefix=/usr \
+ build .
+ ninja -C build
}
check() {
- cd "$builddir"
- make check
+ ninja -C build test
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" ninja -C build install
}
-sha512sums="79842e4645de828941ac030eeff9d232b18a51fe0d18baf5ceb2beaf897d328ee5bf3b297501e2b27e66c63d42f6546a7605a37c6d7d52ff76e9b2bc5c328128 libwnck-3.30.0.tar.xz"
+sha512sums="b7bf5d935327f61634a898594cf20a270e1b403c8df6c74e6ac20e22eea2845ac8c3007b31994728b74953e40c1015373efe10ed64243cf5e85fd210654aecb3 libwnck-3.36.0.tar.xz"
diff --git a/user/libwps/APKBUILD b/user/libwps/APKBUILD
index f58ca254b..c8744c72e 100644
--- a/user/libwps/APKBUILD
+++ b/user/libwps/APKBUILD
@@ -9,13 +9,11 @@ arch="all"
options="!check" # No test suite.
license="(MPL-2.0 OR LGPL-2.1+) AND BSD-3-Clause"
depends=""
-depends_dev="librevenge-dev"
-makedepends="$depends_dev doxygen"
+makedepends="doxygen librevenge-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
-source="http://downloads.sourceforge.net/project/libwps/$pkgname/$pkgname-$pkgver/$pkgname-$pkgver.tar.bz2"
+source="https://downloads.sourceforge.net/project/libwps/$pkgname/$pkgname-$pkgver/$pkgname-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,7 +26,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libx11/APKBUILD b/user/libx11/APKBUILD
index 6a8b7b643..21d3ae8d4 100644
--- a/user/libx11/APKBUILD
+++ b/user/libx11/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libx11
-pkgver=1.6.7
+pkgver=1.8.10
pkgrel=0
pkgdesc="X11 client-side library"
url="https://www.X.Org/"
@@ -11,11 +11,20 @@ depends=""
depends_dev="xtrans"
makedepends="$depends_dev libxcb-dev util-macros xorgproto-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/lib/libX11-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/libX11-$pkgver.tar.xz"
builddir="$srcdir"/libX11-$pkgver
+# secfixes:
+# 1.8.10-r0:
+# - CVE-2023-43785
+# - CVE-2023-43786
+# - CVE-2023-43787
+# 1.8.2-r0:
+# - CVE-2021-31535
+# 1.6.12-r0:
+# - CVE-2020-14363
+
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,14 +36,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
- install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="edd2273b9dadbbf90ad8d7b5715db29eb120a5a22ad2595f697e56532cc24b84e358580c00548fa6be8e9d26601a2b2cdab32272c59266709534317abbd05cd5 libX11-1.6.7.tar.bz2"
+sha512sums="f801f5b77cbc55074f73dc95b29fff7b5e1b13b99641f6e397788ad9f31a29793ed4e8e5bd373122c790ef90627e8f9d6d5e271051c1767a479a85c55cd82bc1 libX11-1.8.10.tar.xz"
diff --git a/user/libxau/APKBUILD b/user/libxau/APKBUILD
index cb233affc..f1117ade4 100644
--- a/user/libxau/APKBUILD
+++ b/user/libxau/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxau
-pkgver=1.0.9
+pkgver=1.0.11
pkgrel=0
pkgdesc="X11 authorisation library"
url="https://www.X.Org/"
@@ -9,7 +9,7 @@ license="X11"
depends=""
makedepends="xorgproto-dev util-macros"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/lib/libXau-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/libXau-$pkgver.tar.xz"
builddir="$srcdir"/libXau-$pkgver
build() {
@@ -31,4 +31,4 @@ package() {
install -m644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="3ca454ba466a807ea28b0f715066d73dc76ad312697b121d43e4d5766215052e9b7ffb8fe3ed3e496fa3f2a13f164ac692ff85cc428e26731b679f0f06a1d562 libXau-1.0.9.tar.bz2"
+sha512sums="f56abba3bef3fdd4739dfa69367a4251b5fab7c89194c9aece9efa66b9ebbf0736690cc9bd654aab19d9db377e4b9a5268c9c020b3d293bb5351bff5fe75a4dd libXau-1.0.11.tar.xz"
diff --git a/user/libxaw/APKBUILD b/user/libxaw/APKBUILD
index a817b0bb1..420054604 100644
--- a/user/libxaw/APKBUILD
+++ b/user/libxaw/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxaw
-pkgver=1.0.13
-pkgrel=1
+pkgver=1.0.16
+pkgrel=0
pkgdesc="X11 Athena widget set"
url="https://www.X.Org"
arch="all"
@@ -10,11 +10,10 @@ depends=""
makedepends="libx11-dev libxext-dev libxmu-dev libxpm-dev util-macros
xorgproto-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/lib/libXaw-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/libXaw-$pkgver.tar.xz"
builddir="$srcdir"/libXaw-$pkgver
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -30,13 +29,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d768a39f7111802493fa1df1b80d858e4139ceeb883d45ff13ce3b7a0e775a7d2834b7ad157c8330117f04c32f38979795332dd7a119adb2344fcb1aa9cf1e2f libXaw-1.0.13.tar.bz2"
+sha512sums="1cabad1a9b06dec7de601b977e844536823ee1a0045244acc42ca6b6107da9b4953736d94898a96cab40845eab77dae21e20e1fa66a3dfc4dedf575dfbca04aa libXaw-1.0.16.tar.xz"
diff --git a/user/libxaw3d/APKBUILD b/user/libxaw3d/APKBUILD
new file mode 100644
index 000000000..a2b12e77d
--- /dev/null
+++ b/user/libxaw3d/APKBUILD
@@ -0,0 +1,36 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libxaw3d
+pkgver=1.6.6
+pkgrel=0
+pkgdesc="X11 Athena widget set, with 3D look and feel"
+url="https://www.X.Org"
+arch="all"
+license="X11 AND MIT"
+depends=""
+makedepends="byacc flex libx11-dev libxext-dev libxmu-dev libxt-dev
+ util-macros xorgproto-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://www.X.Org/releases/individual/lib/libXaw3d-$pkgver.tar.xz"
+builddir="$srcdir"/libXaw3d-$pkgver
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="f324ddb1117ae6f8d50137390b2e82b638b53a6b170cce8f7bd8108fd98ce956badc7dede6b49065419f1565f9f4304571880842e799f7f48fb36bebe3dc3603 libXaw3d-1.6.6.tar.xz"
diff --git a/user/libxcb/APKBUILD b/user/libxcb/APKBUILD
index 53db51310..32b9425ca 100644
--- a/user/libxcb/APKBUILD
+++ b/user/libxcb/APKBUILD
@@ -1,20 +1,19 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxcb
-pkgver=1.13.1
+pkgver=1.17.0
pkgrel=0
pkgdesc="X11 C language Binding"
url="https://xcb.freedesktop.org/"
arch="all"
license="X11"
depends=""
-subpackages="$pkgname-dev $pkgname-doc"
depends_dev="libxau-dev xcb-proto"
checkdepends="check-dev"
-makedepends="$depends_dev libxslt python3 libpthread-stubs libxdmcp-dev"
-source="https://xcb.freedesktop.org/dist/$pkgname-$pkgver.tar.bz2"
+subpackages="$pkgname-dev $pkgname-doc"
+makedepends="$depends_dev libxslt python3 libxdmcp-dev"
+source="https://www.X.org/releases/individual/lib/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,14 +26,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
- install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="763edff9572623674f75a858adc57b5c09591f508cc5d5093218e7bb047abdbe0a0108bd465419a8bf15c7dcdc85efdd2d4d9fd56605c41475d15dc992640c23 libxcb-1.13.1.tar.bz2"
+sha512sums="945b1f28e8b407a4d0ebf88c99ef3cbef763fd75e6eaa8e971946e44ce8dbe9b478c56ae85aaaadab7fdb25987e88570d9d4fb9ad2febd6d6bf21d644a0e10d0 libxcb-1.17.0.tar.xz"
diff --git a/user/libxcomposite/APKBUILD b/user/libxcomposite/APKBUILD
index f390a1204..1e5294342 100644
--- a/user/libxcomposite/APKBUILD
+++ b/user/libxcomposite/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxcomposite
-pkgver=0.4.5
+pkgver=0.4.6
pkgrel=0
pkgdesc="X11 Composite extension library"
url="https://www.X.Org/"
@@ -10,7 +10,7 @@ depends=""
depends_dev="libxext-dev"
makedepends="libx11-dev libxext-dev libxfixes-dev util-macros xorgproto-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/lib/libXcomposite-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/libXcomposite-$pkgver.tar.xz"
builddir="$srcdir"/libXcomposite-$pkgver
build() {
@@ -30,4 +30,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="502fd51fd9097bb3ca72174ac5b25b9d3b1ff240d32c4765199df03d89337d94b4ddea49e90b177b370862430089d966ce9c38988337156352cfeae911c2d3d5 libXcomposite-0.4.5.tar.bz2"
+sha512sums="f35a0da8f9f22fd788eee01209557fe3a1b1abdc9744f76330ba42b21b6e3af5464ca4451c33415856417c30da5aa5624e3707980c644327249bfeda5a62a59b libXcomposite-0.4.6.tar.xz"
diff --git a/user/libxcursor/APKBUILD b/user/libxcursor/APKBUILD
index 6aff75fef..7f59ad38d 100644
--- a/user/libxcursor/APKBUILD
+++ b/user/libxcursor/APKBUILD
@@ -1,15 +1,15 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxcursor
-pkgver=1.2.0
+pkgver=1.2.2
pkgrel=0
pkgdesc="X cursor management library"
url="https://www.X.Org/"
arch="all"
license="MIT"
-subpackages="$pkgname-dev $pkgname-doc"
depends=""
makedepends="libx11-dev libxfixes-dev libxrender-dev util-macros xorgproto-dev"
-source="https://www.X.Org/releases/individual/lib/libXcursor-$pkgver.tar.bz2"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://www.X.Org/releases/individual/lib/libXcursor-$pkgver.tar.xz"
builddir="$srcdir"/libXcursor-$pkgver
# secfixes:
@@ -33,4 +33,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="2b12d0fd17e311ce269dbba58588698885815eb07aa44d48525ed5cd9e5f379bb90138a792a191e2f74888ab10b3ca9a4f507f21de0984ed79748973ab927a03 libXcursor-1.2.0.tar.bz2"
+sha512sums="6550ce1e69b35ef3356f25e31aa2779503d9cea780eff307cb646364993dfaa971304085d32677e68996bd3b8e067436c8fc89aeb4db07a12ce5bc93b735b5b0 libXcursor-1.2.2.tar.xz"
diff --git a/user/libxcvt/APKBUILD b/user/libxcvt/APKBUILD
new file mode 100644
index 000000000..1888d3ccc
--- /dev/null
+++ b/user/libxcvt/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Milan P. Stanić <mps@arvanta.net>
+# Maintainer: Ermine <mustela@erminea.space>
+pkgname=libxcvt
+pkgver=0.1.2
+pkgrel=0
+pkgdesc="VESA CVT standard timing modelines generator"
+url="https://www.X.Org/"
+arch="all"
+license="MIT AND X11"
+# older xorg-server versions included this package but it has since been split out
+# make sure we can upgrade properly to xorg-server 21.1.1 and later
+depends=""
+makedepends="meson"
+replaces="xorg-server<21.1.1"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://xorg.freedesktop.org/releases/individual/lib/libxcvt-$pkgver.tar.xz"
+
+build() {
+ meson setup --prefix=/usr output
+ meson compile -C output
+}
+
+check() {
+ meson test --no-rebuild --print-errorlogs -C output
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install --no-rebuild -C output
+}
+
+doc() {
+ default_doc
+
+ replaces="xorg-server-doc<21.1.1"
+}
+
+sha512sums="
+3f6b2baca712a4608780686932f8881255c07bb74b1a788f9b07d4e22975c038d75111cd6b452257882a0b2bad57eebb2002f80a3e435d2e2d16936597f039b0 libxcvt-0.1.2.tar.xz
+"
+sha512sums="3f6b2baca712a4608780686932f8881255c07bb74b1a788f9b07d4e22975c038d75111cd6b452257882a0b2bad57eebb2002f80a3e435d2e2d16936597f039b0 libxcvt-0.1.2.tar.xz"
diff --git a/user/libxdamage/APKBUILD b/user/libxdamage/APKBUILD
index 5519f04e6..e9ab5d7b3 100644
--- a/user/libxdamage/APKBUILD
+++ b/user/libxdamage/APKBUILD
@@ -1,15 +1,16 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxdamage
-pkgver=1.1.5
+pkgver=1.1.6
pkgrel=0
pkgdesc="X11 damaged region extension library"
url="https://www.X.Org/"
arch="all"
license="MIT"
+options="!check" # No test suite.
depends=""
makedepends="libx11-dev libxfixes-dev util-macros xorgproto-dev"
subpackages="$pkgname-dev"
-source="https://www.X.Org/releases/individual/lib/libXdamage-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/libXdamage-$pkgver.tar.xz"
builddir="$srcdir"/libXdamage-$pkgver
build() {
@@ -21,12 +22,8 @@ build() {
make
}
-check() {
- make check
-}
-
package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="a3ca6cc33b1727f717a3e2aa5593f660508a81a47918a0aa949e9e8fba105e303fe5071983b48caac92feea0fe6e8e01620805e4d19b41f21f20d837b191c124 libXdamage-1.1.5.tar.bz2"
+sha512sums="624dcefa1c79064569df952892f7f1351dc19ad338ce73d1a57041e406cb3e18abe531bab352b93d1f0f5c9b5c6b2652cc84a8f1fbfcbba648343812695a8acb libXdamage-1.1.6.tar.xz"
diff --git a/user/libxdg-basedir/APKBUILD b/user/libxdg-basedir/APKBUILD
index 50a1e7dfc..7a132a8f6 100644
--- a/user/libxdg-basedir/APKBUILD
+++ b/user/libxdg-basedir/APKBUILD
@@ -1,27 +1,25 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
-# TODO: Repackage from better source, rehost or something.
pkgname=libxdg-basedir
-pkgver=1.2.0
+pkgver=1.2.3
pkgrel=0
pkgdesc="library for XDG base dir specification"
-url="https://nevill.ch/libxdg-basedir/"
+url=" " # No URL.
arch="all"
license="MIT"
depends=""
-makedepends=""
+makedepends="autoconf automake libtool"
subpackages="$pkgname-dev"
-source="https://nevill.ch/libxdg-basedir/downloads/$pkgname-$pkgver.tar.gz"
+source="https://github.com/devnev/libxdg-basedir/archive/refs/tags/$pkgname-$pkgver.tar.gz"
+builddir="$srcdir/libxdg-basedir-$pkgname-$pkgver"
prepare() {
- cd "$builddir"
default_prepare
- update_config_sub
+ ./autogen.sh
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,13 +29,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="346553ddd9d0a0c854af9320f2ced695a0838adc18736b66120bea48ea60cb9ea3a7390672a42f83909db92f692e94de833d9e8bcfe51568a72ad1f4661fde06 libxdg-basedir-1.2.0.tar.gz"
+sha512sums="e672da0d9cd3c27c9113f6053b79127e615e5d84bde81305242f506e930869d8492304aac26a0296528d5a32530e4a743acecb6a25f58372ac597af284429f7c libxdg-basedir-1.2.3.tar.gz"
diff --git a/user/libxdmcp/APKBUILD b/user/libxdmcp/APKBUILD
index 85ba59d65..5fd7db9fb 100644
--- a/user/libxdmcp/APKBUILD
+++ b/user/libxdmcp/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxdmcp
-pkgver=1.1.3
+pkgver=1.1.5
pkgrel=0
pkgdesc="X11 Display Manager Control Protocol library"
url="https://www.X.Org/"
@@ -9,7 +9,7 @@ license="MIT"
depends=""
makedepends="xorgproto-dev libbsd-dev util-macros xmlto"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/lib/libXdmcp-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/libXdmcp-$pkgver.tar.xz"
builddir="$srcdir/libXdmcp-$pkgver"
# secfixes:
@@ -33,4 +33,4 @@ package() {
make -j1 DESTDIR="$pkgdir" install
}
-sha512sums="cb1d4650f97d66e73acd2465ec7d757b9b797cce2f85e301860a44997a461837eea845ec9bd5b639ec5ca34c804f8bdd870697a5ce3f4e270b687c9ef74f25ec libXdmcp-1.1.3.tar.bz2"
+sha512sums="d7a1d70a58b7d34ddd01a91d3ccbc086a36626b7081cfcbb150d24288c6adad612b042ba7ea63a218595afb2ee04384c0f8ba84ee3c6bd29913724b54e898d83 libXdmcp-1.1.5.tar.xz"
diff --git a/user/libxext/APKBUILD b/user/libxext/APKBUILD
index 3d601f744..508f5544d 100644
--- a/user/libxext/APKBUILD
+++ b/user/libxext/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxext
-pkgver=1.3.4
+pkgver=1.3.6
pkgrel=0
pkgdesc="X11 miscellaneous extensions library"
url="https://www.X.Org/"
@@ -10,7 +10,7 @@ depends=""
depends_dev="libxau-dev"
makedepends="$depends_dev libx11-dev util-macros xmlto xorgproto"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/lib/libXext-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/libXext-$pkgver.tar.xz"
builddir="$srcdir"/libXext-$pkgver
build() {
@@ -32,4 +32,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="09146397d95f80c04701be1cc0a9c580ab5a085842ac31d17dfb6d4c2e42b4253b89cba695e54444e520be359883a76ffd02f42484c9e2ba2c33a5a40c29df4a libXext-1.3.4.tar.bz2"
+sha512sums="fd7693b5698cc4f5e80002a2cd4bd88e5d52c755c19a0417ee73029bd65f9d77b0969e765a1febc4d8fce1ba5dfb7278717f47be742e33d8fc5eb941e769792e libXext-1.3.6.tar.xz"
diff --git a/user/libxfce4ui/APKBUILD b/user/libxfce4ui/APKBUILD
index 779e73a54..832b51741 100644
--- a/user/libxfce4ui/APKBUILD
+++ b/user/libxfce4ui/APKBUILD
@@ -1,39 +1,38 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libxfce4ui
-pkgver=4.13.4
+pkgver=4.20.0
pkgrel=0
pkgdesc="UI library for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="LGPL-2.0+ AND GPL-2.0+"
+depends=""
makedepends="intltool gtk+3.0-dev gobject-introspection-dev vala-dev
- libxfce4util-dev xfconf-dev startup-notification-dev"
+ libxfce4util-dev>=${pkgver%.*} xfconf-dev startup-notification-dev
+ wayland-protocols"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/xfce/libxfce4ui/4.13/libxfce4ui-$pkgver.tar.bz2"
-sha512sums="c82d6ff7ea0da4fc0f664bab92f1e9531162996a26bb092e6ba651cfc4551732cbcd8023908d428b47906c17c331c14bf4804256566ca564befa218dc1194206 libxfce4ui-4.13.4.tar.bz2"
+source="https://archive.xfce.org/src/xfce/libxfce4ui/${pkgver%.*}/libxfce4ui-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
--localstatedir=/var \
- --enable-vala=yes
+ --enable-vala=yes \
+ --with-vendor-info="Adélie Linux"
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make -j1 DESTDIR="$pkgdir" install
}
+sha512sums="33d44e57784542278941803026c9730c7fc680e3bfdebf8656fcd55fcdad3e75846c7aedc940540d8c6c6e88a00c5caec279527dd1db13731c679aa1b9cd7138 libxfce4ui-4.20.0.tar.bz2"
diff --git a/user/libxfce4util/APKBUILD b/user/libxfce4util/APKBUILD
index 55a5a62f7..d52dbc1ee 100644
--- a/user/libxfce4util/APKBUILD
+++ b/user/libxfce4util/APKBUILD
@@ -1,21 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libxfce4util
-pkgver=4.13.2
+pkgver=4.20.0
pkgrel=0
pkgdesc="Utility library for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="LGPL-2.0+ GPL-2.0+"
-makedepends="intltool glib-dev gobject-introspection-dev vala"
+depends=""
+makedepends="intltool glib-dev gobject-introspection-dev vala-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/xfce/libxfce4util/4.13/libxfce4util-$pkgver.tar.bz2"
-sha512sums="3bbb718f3a6d2213c86695b3f99d1e67c859ce635e5d066b18745d2ee57c0b2eea468b61079d8e2514c2d8f5fa847539d236ec0ed3fd17fecd9d1b36dc3595c4 libxfce4util-4.13.2.tar.bz2"
+source="https://archive.xfce.org/src/xfce/libxfce4util/${pkgver%.*}/libxfce4util-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -26,12 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
+sha512sums="07edc4c8645b3418a659ebb688a48cd1de00d12d06521d30ccfa10b16c4525ce5a869f4b890c9da9b297c44c249a8a091ea1143c72c5f74702cd90337a124ca5 libxfce4util-4.20.0.tar.bz2"
diff --git a/user/libxfce4windowing/APKBUILD b/user/libxfce4windowing/APKBUILD
new file mode 100644
index 000000000..54dcba827
--- /dev/null
+++ b/user/libxfce4windowing/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=libxfce4windowing
+pkgver=4.20.0
+pkgrel=0
+pkgdesc="Windowing abstraction library for XFCE"
+url="https://xfce.org"
+arch="all"
+license="LGPL-2.1+"
+depends=""
+makedepends="glib-dev gobject-introspection-dev gtk+3.0-dev gtk-doc
+ libdisplay-info-dev libwnck-dev xfce4-dev-tools>=${pkgver%.*}"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://archive.xfce.org/src/xfce/libxfce4windowing/4.20/libxfce4windowing-$pkgver.tar.bz2"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --enable-gtk-doc
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="4db76eacd25200a50619839eb7b0f7fbfc901b8641b40acfc2aa34b88b449212e13b8946a8f5fd43ab89f021ba5bab67384e616163efb06b11603faf6913ba90 libxfce4windowing-4.20.0.tar.bz2"
diff --git a/user/libxfixes/APKBUILD b/user/libxfixes/APKBUILD
index e08077bf5..62dde09a4 100644
--- a/user/libxfixes/APKBUILD
+++ b/user/libxfixes/APKBUILD
@@ -1,20 +1,19 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxfixes
-pkgver=5.0.3
-pkgrel=2
+pkgver=6.0.1
+pkgrel=0
pkgdesc="X11 fixes extension library"
url="https://www.X.Org/"
arch="all"
options="!check" # No test suite.
license="MIT"
-depends=
+depends=""
makedepends="libx11-dev util-macros xorgproto-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="http://www.x.org/releases/individual/lib/libXfixes-$pkgver.tar.bz2"
+source="http://www.x.org/releases/individual/lib/libXfixes-$pkgver.tar.xz"
builddir="$srcdir"/libXfixes-$pkgver
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,8 +25,7 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="72d5ee496e5c0520c95ef6bbb52deff1ee4c29792f11aa17aeb25c8ec5eb992ca502de040c77ad95835d1b1432f315b6cb7a3308b434847c28b9c2c6f9d1ac10 libXfixes-5.0.3.tar.bz2"
+sha512sums="b46deffb30cd73ec8a127390d99f2ba2f3ab78f334fdba227f1f461441644a0c169b0d13ffa47576fa458780e7a6db664ff8b93e9195fb217262efd8128f1ffe libXfixes-6.0.1.tar.xz"
diff --git a/user/libxfont/APKBUILD b/user/libxfont/APKBUILD
deleted file mode 100644
index 918cbc02e..000000000
--- a/user/libxfont/APKBUILD
+++ /dev/null
@@ -1,38 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=libxfont
-pkgver=1.5.4
-pkgrel=0
-pkgdesc="X11 Font library"
-url="https://www.X.Org/"
-arch="all"
-license="X11"
-depends="xtrans"
-makedepends="freetype-dev libfontenc-dev util-macros xmlto xorgproto-dev"
-subpackages="$pkgname-dev"
-source="https://www.x.org/releases/individual/lib/libXfont-$pkgver.tar.bz2"
-builddir="$srcdir/libXfont-$pkgver"
-
-build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
-}
-
-check() {
- cd "$builddir"
- make check
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
-}
-
-sha512sums="864edbaff45c44bd92bc4b06275c73fdf584a9b88bc523a297d4c75c01ca253f438463e929af70d753ddecfa648bb0b9bcf0ec72267db9f2b1704f7afa906cb3 libXfont-1.5.4.tar.bz2"
diff --git a/user/libxfont2/APKBUILD b/user/libxfont2/APKBUILD
index fc2836f2b..d6693c9f8 100644
--- a/user/libxfont2/APKBUILD
+++ b/user/libxfont2/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxfont2
-pkgver=2.0.3
-pkgrel=1
+pkgver=2.0.7
+pkgrel=0
pkgdesc="X11 font library from X.Org"
url="https://www.X.Org/"
arch="all"
@@ -10,7 +10,7 @@ depends=""
makedepends="freetype-dev libfontenc-dev util-macros xorgproto-dev xtrans
zlib-dev"
subpackages="$pkgname-dev"
-source="https://www.X.Org/pub/individual/lib/libXfont2-$pkgver.tar.bz2"
+source="https://www.X.Org/pub/individual/lib/libXfont2-$pkgver.tar.xz"
builddir="$srcdir/libXfont2-$pkgver"
# secfixes:
@@ -18,7 +18,6 @@ builddir="$srcdir/libXfont2-$pkgver"
# - CVE-2017-16611
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,13 +31,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="648b664e2aa58cbc7366a1b05873aa06bd4a38060f64085783043388244af8ceced77b29a22c3ac8b6d34cd226e093bbbcc785ea1748ea65720fe7ea05b4b44b libXfont2-2.0.3.tar.bz2"
+sha512sums="f703127df5d5b1093c9b73e019153ed7799523573d52e61d344209f0acfd4df42e11be12bdd1880479c47c2b70de581a4f2ef74e199e9b1ac438f426593d56b0 libXfont2-2.0.7.tar.xz"
diff --git a/user/libxft/APKBUILD b/user/libxft/APKBUILD
index c8b3445db..4201c0aae 100644
--- a/user/libxft/APKBUILD
+++ b/user/libxft/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxft
-pkgver=2.3.3
+pkgver=2.3.8
pkgrel=0
pkgdesc="FreeType-based font drawing library for X11"
url="https://www.X.Org/"
@@ -11,7 +11,7 @@ depends_dev="zlib-dev"
makedepends="$depends_dev fontconfig-dev freetype-dev libxrender-dev
util-macros xorgproto-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/lib/libXft-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/libXft-$pkgver.tar.xz"
builddir="$srcdir/libXft-$pkgver"
build () {
@@ -31,4 +31,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="28fdaf3baa3b156a4a7fdd6e39c4d8026d7d21eaa9be27c9797c8d329dab691a1bc82ea6042f9d4729a9343d93787536fb7e4b606f722f33cbe608b2e79910e8 libXft-2.3.3.tar.bz2"
+sha512sums="fc385d73e1acb701942c154ffb5a283d17891f21d3ac598c4a3fb375a7d6082734593062368c15cad67c1a94177dd15deed878ec5ea852188393b52e92c372c8 libXft-2.3.8.tar.xz"
diff --git a/user/libxi/APKBUILD b/user/libxi/APKBUILD
index ecc5c72a0..7f31b1f1b 100644
--- a/user/libxi/APKBUILD
+++ b/user/libxi/APKBUILD
@@ -1,20 +1,19 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxi
-pkgver=1.7.9
-pkgrel=2
+pkgver=1.8.1
+pkgrel=0
pkgdesc="X11 input extension library"
url="https://www.X.Org/"
arch="all"
license="MIT AND X11"
subpackages="$pkgname-dev $pkgname-doc"
-depends=
+depends=""
makedepends="libx11-dev libxext-dev libxfixes-dev util-macros xmlto
xorgproto-dev"
-source="https://www.X.Org/releases/individual/lib/libXi-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/libXi-$pkgver.tar.xz"
builddir="$srcdir"/libXi-$pkgver
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,14 +27,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
- install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="9f1536944fcd232ba725addbc3afb1154c4e0df3c4380f4a54bada31371029ce3714fe0458529cd6b2787e3283f3bd35366420bca15fedfbd41f2f6b10eddce5 libXi-1.7.9.tar.bz2"
+sha512sums="a30b1a07e6d710f5196e7477415d68074736f89d954e8f2d5ccc9b5f349e7d1d440c90fb512508176b5db5ecad55608cfb540872936b731963fd83343db3a0b9 libXi-1.8.1.tar.xz"
diff --git a/user/libxinerama/APKBUILD b/user/libxinerama/APKBUILD
index 6e0b849ba..5929b0fb8 100644
--- a/user/libxinerama/APKBUILD
+++ b/user/libxinerama/APKBUILD
@@ -1,19 +1,18 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxinerama
-pkgver=1.1.4
+pkgver=1.1.5
pkgrel=0
pkgdesc="X11 Xinerama extension library"
url="https://www.X.Org/"
arch="all"
license="MIT AND X11"
-subpackages="$pkgname-dev $pkgname-doc"
depends=""
makedepends="libx11-dev libxext-dev util-macros xorgproto-dev"
-source="https://www.X.Org/releases/individual/lib/libXinerama-$pkgver.tar.bz2"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://www.X.Org/releases/individual/lib/libXinerama-$pkgver.tar.xz"
builddir="$srcdir"/libXinerama-$pkgver
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -22,13 +21,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="cff777ad942614fbf6bc6d8529f399e62debf3ecbf6cc0694a94e38c022bf929ffd5636fb59f55533c394d89b23af3ea51fa5128927f12a85787e16239330f14 libXinerama-1.1.4.tar.bz2"
+sha512sums="735b5320de4782005b379e409bf2f976131c17d496b297d33a0e127ca1443034778586b6b25c077b2ad73a4ab34d440d7510475e0041f38202bb40f15fb08ff7 libXinerama-1.1.5.tar.xz"
diff --git a/user/libxkbcommon/APKBUILD b/user/libxkbcommon/APKBUILD
index 6dc619982..a667c3ab7 100644
--- a/user/libxkbcommon/APKBUILD
+++ b/user/libxkbcommon/APKBUILD
@@ -1,38 +1,72 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxkbcommon
-pkgver=0.8.4
+pkgver=1.8.1
pkgrel=0
pkgdesc="Keyboard handling library"
-url="https://www.xkbcommon.org/"
+url="https://xkbcommon.org/"
arch="all"
license="MIT AND X11"
-makedepends="bison flex libxcb-dev util-macros xorgproto-dev"
-checkdepends="bash"
-subpackages="$pkgname-dev"
-source="https://www.xkbcommon.org/download/libxkbcommon-$pkgver.tar.xz"
+options="checkx11"
+depends="xkeyboard-config"
+checkdepends="bash xvfb"
+makedepends="bison doxygen libxcb-dev meson libxml2-dev wayland-dev
+ graphviz wayland-protocols"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-tools
+ $pkgname-tools-doc:xkbcli_doc $pkgname-tools-bash-completion:bashcomp"
+source="https://github.com/xkbcommon/libxkbcommon/archive/refs/tags/xkbcommon-$pkgver.tar.gz"
+builddir="$srcdir/libxkbcommon-xkbcommon-$pkgver"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --infodir=/usr/share/info \
- --localstatedir=/var
- make
+ meson setup \
+ -Dprefix=/usr \
+ -Denable-docs=true \
+ build
+ meson compile -C build
}
check() {
- cd "$builddir"
- make check
+ meson test -C build
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" meson install -C build
}
-sha512sums="dbd441d0d7d5ba4fb352d64d150d163d4cdcf8340059457c291dc1fc69d1606ff6589732cb41a7fcfe106af0192977b243d7d68c4d95b90ece7abb620df360e3 libxkbcommon-0.8.4.tar.xz"
+doc() {
+ pkgdesc="Keyboard handling library (documentation)"
+ install_if="docs $pkgname=$pkgver-r$pkgrel"
+ # Library docs are in HTML in /usr/share/doc, while xkbcli
+ # docs are man pages. So we move doc directory to the subpackage...
+ mkdir -p "$subpkgdir"/usr/share
+ mv "$pkgdir"/usr/share/doc "$subpkgdir"/usr/share
+}
+
+tools() {
+ pkgdesc="xkb command-line tool with interactive debugger"
+
+ mkdir -p "$subpkgdir"/usr/bin
+ mkdir -p "$subpkgdir"/usr/libexec/xkbcommon
+
+ mv "$pkgdir"/usr/bin/xkbcli "$subpkgdir"/usr/bin/
+ mv "$pkgdir"/usr/libexec/xkbcommon "$subpkgdir"/usr/libexec/
+}
+
+xkbcli_doc() {
+ # ...and run default_doc here to let abuild process man pages properly
+ default_doc
+ pkgdesc="xkb command-line tool with interactive debugger (doc)"
+ install_if="docs $pkgname-tools=$pkgver-r$pkgrel"
+}
+
+bashcomp() {
+ pkgdesc="xkb command-line tool with interactive debugger (bash completions)"
+ depends=""
+ install_if="$pkgname-tools=$pkgver-r$pkgrel bash-completion"
+
+ mkdir -p "$subpkgdir"/usr/share/bash-completion/completions
+ mv "$pkgdir"/usr/share/bash-completion/completions/xkbcli \
+ "$subpkgdir"/usr/share/bash-completion/completions/
+}
+
+sha512sums="a11b8563b11bd085b909753fa99e5b2129343363a05d4fac44a46b334b644dbdd57c356021926e9fdcc2bf6855b90283af93e74c471c3d5677c2ed1bf19427c2 xkbcommon-1.8.1.tar.gz"
diff --git a/user/libxkbfile/APKBUILD b/user/libxkbfile/APKBUILD
index 11cbd4d9e..ea8d2e240 100644
--- a/user/libxkbfile/APKBUILD
+++ b/user/libxkbfile/APKBUILD
@@ -1,31 +1,27 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxkbfile
-pkgver=1.1.0
+pkgver=1.1.3
pkgrel=0
pkgdesc="X11 keyboard file manipulation library"
url="https://www.X.Org/"
arch="all"
+options="!check" # no test suite
license="MIT AND X11"
depends=""
-makedepends="libx11-dev util-macros"
+makedepends="libx11-dev meson"
subpackages="$pkgname-dev"
-source="https://www.X.Org/releases/individual/lib/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/$pkgname-$pkgver.tar.xz"
build() {
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
+ meson setup \
--prefix=/usr \
- --sysconfdir=/etc
- make
-}
-
-check() {
- make check
+ --sysconfdir=/etc \
+ build
+ meson compile -C build
}
package() {
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" meson install -C build
}
-sha512sums="1c6a57564e916ccdc3df3c49b9f3589f701df0cec55112c12ddc35ac3ed556608c28fe98e5ba0ac1962e9a65ed1e90eb7e6169b564951bf55a7cf3499b745826 libxkbfile-1.1.0.tar.bz2"
+sha512sums="d80ac41f6fa3a1ffad77ea1f8f9d9542f0bd210d74b263802bc6e6c1594fe325b27f42b5454aeeb36352518963b1ed1fdbbad95d7db3690b2e36d54742b7c236 libxkbfile-1.1.3.tar.xz"
diff --git a/user/libxkbui/APKBUILD b/user/libxkbui/APKBUILD
index 80340714e..1d5bcf8f2 100644
--- a/user/libxkbui/APKBUILD
+++ b/user/libxkbui/APKBUILD
@@ -12,13 +12,11 @@ subpackages="$pkgname-dev"
source="https://www.X.Org/releases/individual/lib/$pkgname-$pkgver.tar.bz2"
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,12 +25,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libxklavier/APKBUILD b/user/libxklavier/APKBUILD
index e1addd860..b5f0ddfe2 100644
--- a/user/libxklavier/APKBUILD
+++ b/user/libxklavier/APKBUILD
@@ -1,12 +1,13 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=libxklavier
pkgver=5.4
-pkgrel=1
+pkgrel=2
pkgdesc="High-level API for XKB"
url="https://www.freedesktop.org/wiki/Software/LibXklavier/"
arch="all"
license="LGPL-2.0+"
+depends="iso-codes"
makedepends="gobject-introspection-dev libx11-dev libxml2-dev glib-dev
libxcb-dev libxkbcommon-dev libxkbfile-dev libxi-dev iso-codes-dev
vala-dev"
@@ -14,13 +15,11 @@ subpackages="$pkgname-dev $pkgname-doc"
source="https://people.freedesktop.org/~svu/libxklavier-$pkgver.tar.bz2"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,12 +31,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libxmu/APKBUILD b/user/libxmu/APKBUILD
index 854f806a3..357321e28 100644
--- a/user/libxmu/APKBUILD
+++ b/user/libxmu/APKBUILD
@@ -1,18 +1,18 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxmu
-pkgver=1.1.3
+pkgver=1.2.1
pkgrel=0
pkgdesc="X11 miscellaneous micro-utility library"
url="https://www.X.Org/"
arch="all"
options="!check" # No test suite.
license="X11 AND MIT"
-subpackages="$pkgname-dev $pkgname-doc"
depends=""
depends_dev="util-linux-dev"
makedepends="$depends_dev libsm-dev libx11-dev libxext-dev libxt-dev
util-macros xmlto"
-source="https://www.X.Org/releases/individual/lib/libXmu-$pkgver.tar.bz2"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://www.X.Org/releases/individual/lib/libXmu-$pkgver.tar.xz"
builddir="$srcdir"/libXmu-$pkgver
build() {
@@ -29,4 +29,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="8c6cc65b22aa031ad870dd92736681a068a0878a425a53dbed909943da1136c4a24034d467cfd3785c3a8d78f66850b69f1ebe1eb24aaf9bc176b1d171a5c762 libXmu-1.1.3.tar.bz2"
+sha512sums="05a30e5961e00e940ad7ec4eb94ec482b5cbe808585972bf70c849333af3fddf4ae4bd87895d706507fb3a94ed0fb73ea161e0e27dc2840323a1a1af49c0e8a3 libXmu-1.2.1.tar.xz"
diff --git a/user/libxp/APKBUILD b/user/libxp/APKBUILD
index 45cfad2bb..3280d3d6f 100644
--- a/user/libxp/APKBUILD
+++ b/user/libxp/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxp
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="X11 print client library"
url="https://www.X.Org/"
@@ -10,11 +10,10 @@ license="X11"
depends=""
makedepends="libx11-dev libxau-dev libxext-dev xorgproto-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.x.org/releases/individual/lib/libXp-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/lib/libXp-$pkgver.tar.xz"
builddir="$srcdir/libXp-$pkgver"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="502a2500ec0f519dae69ac035bf93c65c47e3bc301604aacb350e90043455f3485626194db45208e5521300b282843825e08b7f7c412a7497ffa02f5f1560c8d libXp-1.0.3.tar.bz2"
+sha512sums="50e82e7ee7222db13a04f6223ae8653eb783593c3b28825d7fc233af188960bec53d2b11ced281e01140d283d840d0e3822d71f95f5045d594fb704485fd0f89 libXp-1.0.4.tar.xz"
diff --git a/user/libxpm/APKBUILD b/user/libxpm/APKBUILD
index 53f3e6fab..1e01a37df 100644
--- a/user/libxpm/APKBUILD
+++ b/user/libxpm/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxpm
-pkgver=3.5.12
-pkgrel=1
+pkgver=3.5.17
+pkgrel=0
pkgdesc="X11 pixmap library"
url="https://www.X.Org/"
arch="all"
@@ -9,11 +9,10 @@ license="X11"
subpackages="$pkgname-dev $pkgname-doc"
depends=""
makedepends="libx11-dev libxext-dev libxt-dev util-linux-dev util-macros"
-source="https://www.X.Org/releases/individual/lib/libXpm-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/libXpm-$pkgver.tar.xz"
builddir="$srcdir"/libXpm-$pkgver
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -23,14 +22,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
- install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="a5707d5f758d577414101b0723af334fc8ac223e5b9f869994765735e1cbd8dafed48ea2851ebc479fecaf84381bfd5fbef842ec971a487f7fa9e77d54d3a17e libXpm-3.5.12.tar.bz2"
+sha512sums="52f9d2664a47a26c1a6ad65d18867de870b66947b0b0d99cca3512756a0aaa6ce2a245c0b49f20b70c3ce48bf04c47c333e8119a147465c277bca727f6ab017e libXpm-3.5.17.tar.xz"
diff --git a/user/libxpresent/APKBUILD b/user/libxpresent/APKBUILD
new file mode 100644
index 000000000..3dc280ea0
--- /dev/null
+++ b/user/libxpresent/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=libxpresent
+pkgver=1.0.1
+pkgrel=0
+pkgdesc="Library for the X Present extension"
+url="https://www.x.org/"
+arch="all"
+license="X11"
+depends=""
+makedepends="libx11-dev libxfixes-dev libxrandr-dev xorgproto-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://xorg.freedesktop.org/releases/individual/lib/libXpresent-$pkgver.tar.xz"
+builddir="$srcdir/libXpresent-$pkgver"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="a4551f49a68f4487eb70dc5b50b7f745fbc8b6842cfa60422afe3834af41c504a37bcfddb4e7e9ee084b250df256034290776c8eb7d8838e392eb626fff55d25 libXpresent-1.0.1.tar.xz"
diff --git a/user/libxrandr/APKBUILD b/user/libxrandr/APKBUILD
index 9316676d5..d77690639 100644
--- a/user/libxrandr/APKBUILD
+++ b/user/libxrandr/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxrandr
-pkgver=1.5.2
+pkgver=1.5.4
pkgrel=0
pkgdesc="X11 RandR extension library"
url="https://www.X.Org/"
@@ -10,7 +10,7 @@ depends=""
depends_dev="libxext-dev"
makedepends="$depends_dev libx11-dev libxrender-dev util-macros xorgproto-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/lib/libXrandr-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/libXrandr-$pkgver.tar.xz"
builddir="$srcdir"/libXrandr-$pkgver
build() {
@@ -32,4 +32,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="fcd005f9839e7ef980607128a5d76d7b671cc2f5755949e03c569c500d7e987cb3f6932750ab8bf6e2c1086ec69dde09d5831f0c2098b9f9ad46be4f56db0d87 libXrandr-1.5.2.tar.bz2"
+sha512sums="f7c0b083943e11b4cc3c97e10e2cbbc3920fe0c9c5031ef86fca2eb5df413d767caf53dca266abf65395eb10e55354c8fe59ed6b3265402ffccb919a813bc781 libXrandr-1.5.4.tar.xz"
diff --git a/user/libxrender/APKBUILD b/user/libxrender/APKBUILD
index 0f6978084..2b910cb4d 100644
--- a/user/libxrender/APKBUILD
+++ b/user/libxrender/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxrender
-pkgver=0.9.10
-pkgrel=2
+pkgver=0.9.11
+pkgrel=0
pkgdesc="X Rendering Extension client library"
url="https://www.X.Org/"
arch="all"
@@ -10,11 +10,10 @@ license="MIT"
depends=""
makedepends="libx11-dev util-macros xorgproto"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/lib/libXrender-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/libXrender-$pkgver.tar.xz"
builddir="$srcdir"/libXrender-$pkgver
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="16ea0cf638b32d7df54b270457ef8c9d9a80da27fa845b105b560cb31027b4c7fe799cf23d6b6bac492be5961264e96d7845d316a9af4de9ff38bf40885ea6fe libXrender-0.9.10.tar.bz2"
+sha512sums="2327cc1b530382d81df29b8d579f801f1f990202107cc84506986bcf5d15010d414e9418987b200e3f222d188afce46f0d7754febcdca62a5fc1e541b3bb82de libXrender-0.9.11.tar.xz"
diff --git a/user/libxres/APKBUILD b/user/libxres/APKBUILD
new file mode 100644
index 000000000..df8b54d6b
--- /dev/null
+++ b/user/libxres/APKBUILD
@@ -0,0 +1,34 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=libxres
+pkgver=1.2.2
+pkgrel=0
+pkgdesc="X11 X-Resource extension library"
+url="https://www.X.Org/"
+arch="all"
+license="MIT AND X11"
+depends=""
+makedepends="libx11-dev libxext-dev util-macros xorgproto-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://www.X.Org/releases/individual/lib/libXres-$pkgver.tar.xz"
+builddir="$srcdir"/libXres-$pkgver
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="897f2d426ea6f41169a5a52c356d1a1cb2ffb9144ae41b9fedd06455c3d81042930fe55be269ce4b8545ee65fcfe168101192a599053d810e8810f627c94f810 libXres-1.2.2.tar.xz"
diff --git a/user/libxscrnsaver/APKBUILD b/user/libxscrnsaver/APKBUILD
index f793c67d5..35c9cb9bf 100644
--- a/user/libxscrnsaver/APKBUILD
+++ b/user/libxscrnsaver/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxscrnsaver
-pkgver=1.2.3
+pkgver=1.2.4
pkgrel=0
pkgdesc="X.Org screen saver extension"
url="https://cgit.freedesktop.org/xorg/lib/libXScrnSaver/"
@@ -10,11 +10,10 @@ depends=""
depends_dev="libxext-dev"
makedepends="$depends_dev libx11-dev util-macros xorgproto-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/lib/libXScrnSaver-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/libXScrnSaver-$pkgver.tar.xz"
builddir="$srcdir"/libXScrnSaver-$pkgver
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,13 +27,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="7ea628324a11b25ee82c7b11c6bf98f37de219354de51c1e29467b5de422669ba1ab121f3b9dc674093c8f3960e93c5d5428122f5539092f79bc8451c768354a libXScrnSaver-1.2.3.tar.bz2"
+sha512sums="e4395af85f8496618afb23ffdaca1a75f5e3d213478d8dc73249cbc9840d7b993ba7513dbf6015cb38b48fe3f2223496365158a148dd5e1ac7475c5ee569e28c libXScrnSaver-1.2.4.tar.xz"
diff --git a/user/libxshmfence/APKBUILD b/user/libxshmfence/APKBUILD
index 1608eb19d..239e8695e 100644
--- a/user/libxshmfence/APKBUILD
+++ b/user/libxshmfence/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxshmfence
-pkgver=1.3
+pkgver=1.3.2
pkgrel=0
pkgdesc="X11 shared memory fences"
url="https://www.X.Org/"
@@ -11,10 +11,9 @@ depends=""
depends_dev="linux-headers"
makedepends="$depends_dev util-macros xorgproto-dev"
subpackages="$pkgname-dev"
-source="https://www.X.Org/releases/individual/lib/libxshmfence-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="c446e055f8fac62b9aa266132289a4cfc030282147974c45ce96d1768a98d1afb997470e58e4a68513174c404cbf373bdde2f0cd4b34abdbce1d89dd0b6fe2b7 libxshmfence-1.3.tar.bz2"
+sha512sums="e20a6827e370726cf50489a69f4a52b897f1c44e3eba8c72a4e626b08724e877d090770b8016765736d887d5d5eaba1fda9c29066e62d259b4d1e2064bc1626c libxshmfence-1.3.2.tar.xz"
diff --git a/user/libxt/APKBUILD b/user/libxt/APKBUILD
index db3931e1e..2540bf649 100644
--- a/user/libxt/APKBUILD
+++ b/user/libxt/APKBUILD
@@ -1,21 +1,20 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxt
-pkgver=1.1.5
-pkgrel=1
+pkgver=1.3.0
+pkgrel=0
pkgdesc="X11 toolkit intrinsics library"
url="https://www.X.Org/"
arch="all"
license="X11"
-depends=
+depends=""
depends_dev="libsm-dev"
-makedepends="$depends_dev libice-dev libx11-dev util-macros xorgproto-dev"
checkdepends="glib-dev"
+makedepends="$depends_dev libice-dev libx11-dev util-macros xorgproto-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/lib/libXt-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/libXt-$pkgver.tar.xz"
builddir="$srcdir"/libXt-$pkgver
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
}
-sha512sums="29828cfc021b60e0a0b5ff0321801db20f12bd635866cd000b35a23736b5477a3d1e5f936a1124ed3e3f4c0e7a27cb8744dbb5ab4fbcd45c817a13877081e05b libXt-1.1.5.tar.bz2"
+sha512sums="64c5978655135b925c3aaad86b1aa6a3f3b57ad8b3592bf142be616b8aa339a02c2fc7badfab9564ea8076ea8f37acfe31709ed528f5a1d251f2d116aa074118 libXt-1.3.0.tar.xz"
diff --git a/user/libxtst/APKBUILD b/user/libxtst/APKBUILD
index f32cb1cbb..95c5d8a6f 100644
--- a/user/libxtst/APKBUILD
+++ b/user/libxtst/APKBUILD
@@ -1,21 +1,18 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxtst
-pkgver=1.2.3
-pkgrel=2
+pkgver=1.2.5
+pkgrel=0
pkgdesc="X11 Testing Resource extension library"
url="https://www.X.Org/"
arch="all"
license="MIT"
-subpackages="$pkgname-dev $pkgname-doc"
depends=""
-depends_dev="xorgproto-dev"
-makedepends="$depends_dev libx11-dev libxext-dev libxi-dev util-macros"
-source="https://www.X.Org/releases/individual/lib/libXtst-$pkgver.tar.bz2
- "
+makedepends="libx11-dev libxext-dev libxi-dev util-macros xorgproto-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://www.X.Org/releases/individual/lib/libXtst-$pkgver.tar.xz"
builddir="$srcdir"/libXtst-$pkgver
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,14 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
- install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
}
-sha512sums="6f6741fd3596775eaa056465319f78c29c91b3893a851a4899df651a2023a4d762497b112a33d7d3e8865fe85d173d03e4b49daef76a66af1ae1eaab82a12765 libXtst-1.2.3.tar.bz2"
+sha512sums="848fa580d7abccd48c9ca3440f92e299839ada0912ed60d38d4d4f5bf37431cd02d7059265ab4e524c3e2cb9c368b9b90b863d1ed97d74979ef8811fc5e635a9 libXtst-1.2.5.tar.xz"
diff --git a/user/libxv/APKBUILD b/user/libxv/APKBUILD
index 573c1c0d1..5312c357b 100644
--- a/user/libxv/APKBUILD
+++ b/user/libxv/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxv
-pkgver=1.0.11
-pkgrel=2
+pkgver=1.0.12
+pkgrel=0
pkgdesc="X11 Video extension library"
url="https://www.X.Org/"
arch="all"
@@ -9,11 +9,10 @@ license="MIT"
depends=""
makedepends="libx11-dev libxext-dev util-macros xorgproto-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/lib/libXv-$pkgver.tar.bz2"
-
+source="https://www.X.Org/releases/individual/lib/libXv-$pkgver.tar.xz"
builddir="$srcdir"/libXv-$pkgver
+
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,14 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
- install -D -m644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="97cb3ab06cedc87799d06e1affd5cee32ed0e551903fa5c915f79e7ed92eded867e3220b4a663822f7ebd86fdc71b09943b7077d98f1200019992e8d24144e58 libXv-1.0.11.tar.bz2"
+sha512sums="bdd00de1ce6a8911056181ab4de32f9e319a68567389162d4bc2e3c9946d5f3c60f87eb6c53f74c9b6a342255e591d5fef4a445a4ac8ca3c1b6fe87d42c51c1e libXv-1.0.12.tar.xz"
diff --git a/user/libxvmc/APKBUILD b/user/libxvmc/APKBUILD
index 9953618d2..daa1e6264 100644
--- a/user/libxvmc/APKBUILD
+++ b/user/libxvmc/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxvmc
-pkgver=1.0.11
+pkgver=1.0.14
pkgrel=0
pkgdesc="X11 Video Motion Compensation extension library"
url="https://www.X.Org/"
@@ -10,7 +10,7 @@ depends=""
depends_dev="libxext-dev"
makedepends="libx11-dev libxv-dev util-macros xorgproto-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/lib/libXvMC-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/libXvMC-$pkgver.tar.xz"
builddir="$srcdir"/libXvMC-$pkgver
build() {
@@ -32,4 +32,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="4fe49e956ac97a45d851292cbba7bf242706aaf3bd9eb7ea4d2fc50e40745115d857a4fe179d2b87bc7cb6f9ac93911e89a167f02f6d1ae25a59df9a517a2476 libXvMC-1.0.11.tar.bz2"
+sha512sums="fc76c6d591780f3481f5032d1f956f2043f3dc7655a4b776dfda4bae55d4424a36d1a3c63dafe2a851908f33159297c0b038a41329d7a137ca7ea73d3db3eedf libXvMC-1.0.14.tar.xz"
diff --git a/user/libxxf86dga/APKBUILD b/user/libxxf86dga/APKBUILD
index 5de299edc..cd1e70a9e 100644
--- a/user/libxxf86dga/APKBUILD
+++ b/user/libxxf86dga/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxxf86dga
-pkgver=1.1.5
+pkgver=1.1.6
pkgrel=0
pkgdesc="X11 Direct Graphics Access extension library"
url="https://www.X.Org/"
@@ -9,7 +9,7 @@ license="X11"
depends=""
makedepends="libx11-dev libxext-dev util-macros xorgproto-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/lib/libXxf86dga-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/libXxf86dga-$pkgver.tar.xz"
builddir="$srcdir"/libXxf86dga-$pkgver
build() {
@@ -28,4 +28,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="0e77c4003aeba737b10c17d55aeefa935fc57c4ba9e8f79a834f3f8c690d6a1d98f69ad707eded784346c1cf40c41829719d257283b5eae3207147fb4c79ed89 libXxf86dga-1.1.5.tar.bz2"
+sha512sums="61f7954471df63840ffb5e82347018e285d30d64d4d0a97770ca031c8554a0f52d1b007ab8342a283cd2f0d534f564fb59f57ec92515714f20a7d145912c65d9 libXxf86dga-1.1.6.tar.xz"
diff --git a/user/libxxf86misc/APKBUILD b/user/libxxf86misc/APKBUILD
index 2ead4d544..ab259eb3d 100644
--- a/user/libxxf86misc/APKBUILD
+++ b/user/libxxf86misc/APKBUILD
@@ -6,14 +6,13 @@ pkgdesc="X11 XFree86 miscellaneous extension library"
url="https://www.X.Org/"
arch="all"
license="X11"
-subpackages="$pkgname-dev $pkgname-doc"
depends=""
makedepends="libx11-dev libxext-dev util-macros xorgproto-dev"
+subpackages="$pkgname-dev $pkgname-doc"
source="https://www.X.Org/releases/individual/lib/libXxf86misc-$pkgver.tar.bz2"
builddir="$srcdir/libXxf86misc-$pkgver"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -23,12 +22,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/libxxf86vm/APKBUILD b/user/libxxf86vm/APKBUILD
index 0f8f91a4a..1f1b9f689 100644
--- a/user/libxxf86vm/APKBUILD
+++ b/user/libxxf86vm/APKBUILD
@@ -1,19 +1,18 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libxxf86vm
-pkgver=1.1.4
-pkgrel=2
+pkgver=1.1.5
+pkgrel=0
pkgdesc="X11 XFree86 video mode extension library"
url="https://www.X.Org/"
arch="all"
license="X11"
-subpackages="$pkgname-dev $pkgname-doc"
-depends=
+depends=""
makedepends="libx11-dev libxext-dev util-macros xorgproto-dev"
-source="https://www.X.Org/releases/individual/lib/libXxf86vm-$pkgver.tar.bz2"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://www.X.Org/releases/individual/lib/libXxf86vm-$pkgver.tar.xz"
builddir="$srcdir"/libXxf86vm-$pkgver
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -22,14 +21,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
- install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="c5f92d86e143db02ebb36bcd25618acaa2cb2831f5a23800a06dd431cd73b6702d95de8fe7407ce626336bf614c288d5256f4d87ea7781fad2ab6c517cbf09e0 libXxf86vm-1.1.4.tar.bz2"
+sha512sums="68226fcb9773a583ea417ab413146203dd7db6ff8a4d388285da972353355e11e179861a77c9fa284aefac025bb3bbf5a9537fa0bf246c782e0116a667c9d9b6 libXxf86vm-1.1.5.tar.xz"
diff --git a/user/libzip/APKBUILD b/user/libzip/APKBUILD
index 32f0a956c..62a55bfba 100644
--- a/user/libzip/APKBUILD
+++ b/user/libzip/APKBUILD
@@ -3,14 +3,15 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=libzip
-pkgver=1.5.1
-pkgrel=2
+pkgver=1.6.1
+pkgrel=0
pkgdesc="C library for manipulating ZIP archives"
url="https://libzip.org/"
arch="all"
license="BSD-3-Clause"
+depends=""
depends_dev="zlib-dev"
-makedepends="$depends_dev cmake openssl-dev perl"
+makedepends="$depends_dev cmake groff openssl-dev perl"
subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
source="https://libzip.org/download/$pkgname-$pkgver.tar.xz"
@@ -19,24 +20,21 @@ source="https://libzip.org/download/$pkgname-$pkgver.tar.xz"
# - CVE-2017-14107
build() {
- cd "$builddir"
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
- -DCMAKE_C_FLAGS="$CFLAGS"
+ -DCMAKE_C_FLAGS="$CFLAGS" .
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" -j1 install
}
@@ -46,4 +44,4 @@ tools() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="92df9490a9910ebb1da49ecaec96f364fce39a779e1bc739f7796b27b3a864301f5e1ba0108947708dda1d90af7a9e751be54cbb8a0de2a04a48f9f3eb728e3d libzip-1.5.1.tar.xz"
+sha512sums="dcf3790933c95f66bdcbdb276497b36e57776103b0b1064a94479e84eaa0a09df8dd91509cb4ccab3a6724f0650f076ca1e332d73acc94b653e99a3e94a64574 libzip-1.6.1.tar.xz"
diff --git a/user/libzmf/APKBUILD b/user/libzmf/APKBUILD
index 6829fb3f8..3df4b8bad 100644
--- a/user/libzmf/APKBUILD
+++ b/user/libzmf/APKBUILD
@@ -2,15 +2,15 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=libzmf
pkgver=0.0.2
-pkgrel=1
+pkgrel=2
pkgdesc="Import filter and tools for Zoner Callisto/Draw documents"
url="https://wiki.documentfoundation.org/DLP/Libraries/libzmf"
arch="all"
license="MPL-2.0"
depends=""
depends_dev="boost-dev icu-dev libpng-dev zlib-dev"
-makedepends="$depends_dev librevenge-dev doxygen"
checkdepends="cppunit-dev"
+makedepends="$depends_dev librevenge-dev doxygen"
subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
source="http://dev-www.libreoffice.org/src/$pkgname/$pkgname-$pkgver.tar.xz"
@@ -20,7 +20,6 @@ prepare() {
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,12 +32,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/lighttpd/APKBUILD b/user/lighttpd/APKBUILD
index 280955e7f..ebdb7fb4d 100644
--- a/user/lighttpd/APKBUILD
+++ b/user/lighttpd/APKBUILD
@@ -1,62 +1,67 @@
# Contributor: Valery Kartel <valery.kartel@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=lighttpd
-pkgver=1.4.53
+pkgver=1.4.81
pkgrel=0
pkgdesc="A secure, fast, compliant and very flexible web-server"
-url="http://www.lighttpd.net/"
+url="https://www.lighttpd.net"
+pkgusers="lighttpd"
+pkggroups="lighttpd"
arch="all"
license="BSD-3-Clause"
+depends=""
+makedepends="
+ attr-dev
+ flex
+ libxml2-dev
+ lua5.3-dev
+ meson
+ openldap-dev
+ openssl-dev
+ pcre2-dev
+ sqlite-dev
+ zlib-dev
+ zstd-dev
+ "
+checkdepends="perl"
+subpackages="
+ $pkgname-doc
+ $pkgname-openrc
+ $pkgname-mod_auth
+ $pkgname-mod_webdav
+ "
install="$pkgname.pre-install $pkgname.pre-upgrade"
-pkgusers="lighttpd"
-pkggroups="lighttpd"
-makedepends="attr-dev bzip2-dev flex gamin-dev libev-dev libxml2-dev
- openldap-dev openssl-dev pcre-dev sqlite-dev zlib-dev"
-subpackages="$pkgname-doc $pkgname-dbg $pkgname-mod_auth $pkgname-openrc
- $pkgname-mod_webdav"
-source="http://download.lighttpd.net/lighttpd/releases-1.4.x/$pkgname-$pkgver.tar.xz
+source="https://download.lighttpd.net/lighttpd/releases-1.4.x/lighttpd-$pkgver.tar.xz
$pkgname.initd
$pkgname.confd
$pkgname.logrotate
lighttpd.conf
- mime-types.conf
mod_cgi.conf
mod_fastcgi.conf
mod_fastcgi_fpm.conf
"
build() {
- cd "$builddir"
-
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --disable-dependency-tracking \
- --enable-lfs \
- --libdir=/usr/lib/lighttpd \
- --without-mysql \
- --with-attr \
- --with-fam \
- --with-webdav-props \
- --with-webdav-locks \
- --without-gdbm \
- --with-bzip2 \
- --with-ldap \
- --with-openssl \
- --with-libev
- make
+ meson \
+ -Dprefix=/usr \
+ -Dwith_ldap=enabled \
+ -Dwith_lua=true \
+ -Dwith_openssl=true \
+ -Dwith_pcre2=true \
+ -Dwith_webdav_locks=enabled \
+ -Dwith_webdav_props=enabled \
+ -Dwith_xattr=true \
+ -Dwith_zstd=enabled \
+ . output
+ meson compile -C output
}
check() {
- cd "$builddir"
- make check
+ meson test --no-rebuild --print-errorlogs -C output
}
package() {
- cd "$builddir"
-
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" meson install --no-rebuild -C output
# create dirs
install -d -m755 -o lighttpd -g lighttpd \
@@ -75,7 +80,7 @@ package() {
"$pkgdir"/etc/logrotate.d/lighttpd
# config files
- local i; for i in lighttpd.conf mime-types.conf mod_cgi.conf \
+ local i; for i in lighttpd.conf mod_cgi.conf \
mod_fastcgi.conf mod_fastcgi_fpm.conf
do
install -m644 "$srcdir"/$i "$pkgdir"/etc/lighttpd/$i
@@ -101,12 +106,13 @@ mod_webdav() {
_mv_mod mod_webdav
}
-sha512sums="bf5ea1c9f6f664c9ddcdf33ddba5b2bff760960d03c29a2181e73e3aceb45b523bb90003d0e0bc565334751830e6027cd7be2e92d030cde90813511957c9ea76 lighttpd-1.4.53.tar.xz
-f2f3c5c7731550237fd75a8de66275f427eaf897cffff7ac7ef44178328ad8fad6c4ec6654759bfc665cbaf7991ddcdf0aaa916831c8b6aa440192d57b242038 lighttpd.initd
+sha512sums="
+10c24b1c1ce1aa1d826a426868223393eb81d7c0fbcc0b4f032b082a14593e0364228a5275e1440ed8782a2e78f0ded7cf72bc6642e5528bc82defcefab9301b lighttpd-1.4.81.tar.xz
+a74fb8394fb77fca2a08bdcfc79d4e13de6aca7bc4ed842b7e05f7f3a9cc85dccaa4971ba8fd0edfaa19da8d3870a743b713d9e51f1cbfe5b8e2843bb7fe5346 lighttpd.initd
9d2ab5deb7353ebf290e90936b511941df440859c78589d0bcf130ef69a5e9c79e4d318548b6b118df002083c46f7476230a28954b7a10a9dbd05040e02b1291 lighttpd.confd
0536b4f21d2e8659f7831b45998c13d9f6051ae7ecde13be01f372f837d255bfc4e211de48a7686cc743d53aa9c08ab3f10ec19788896dcf8356b90053ca7a16 lighttpd.logrotate
-e56ee836fa815c98c711f9381a8552ca94e1841aee5ddeee83631c385ccc556e966331499f4784982385f7ed4177062d3349705fd24de2ec5f1544ab1cc424de lighttpd.conf
-a3f2f5763885d7e4f510491b24164e34aaf62bb02daa12991575dc64335c12668355af5bb8d6ce191eb4e9cce95324b1f7c9ba61b323b4e7b50a1e03e021afcf mime-types.conf
+ba622693023f38b7ecb6234e29494cbec9cc94786a4d9d544a293e08208aaebb038bf443e205f7c5b8780c6c723a800b7f4d6ec7aaad75ebc65ac9b4f1cf064f lighttpd.conf
27cc638d8068dcf47bd9db44943d1db6c6f4e8e6abd6b42af7cea004b1c093440068541d98c68f8bea70b956713adaf8ed59a4b642dea826ee8620a05f8cfde5 mod_cgi.conf
1d15b84c03fb648a0e67ab5c5411b85478b4454c44bc2959cc96d1700eeadd7ff429520a5f1550db6527267646622dccd3d47d3fd1258869fccaf5c22d4ad4b2 mod_fastcgi.conf
-f9efc4b70d825600f5356c30e57d0b6cac11c01739337f7192c09c2cfd96cb76c8328b11d818ea4c2addc1a6d253975b84700106ae75854d55d0df73e220bd2b mod_fastcgi_fpm.conf"
+f9efc4b70d825600f5356c30e57d0b6cac11c01739337f7192c09c2cfd96cb76c8328b11d818ea4c2addc1a6d253975b84700106ae75854d55d0df73e220bd2b mod_fastcgi_fpm.conf
+"
diff --git a/user/lighttpd/lighttpd.conf b/user/lighttpd/lighttpd.conf
index afb57fb17..e8807efaf 100644
--- a/user/lighttpd/lighttpd.conf
+++ b/user/lighttpd/lighttpd.conf
@@ -16,20 +16,17 @@ server.modules = (
# "mod_redirect",
# "mod_alias",
"mod_access",
-# "mod_cml",
-# "mod_trigger_b4_dl",
# "mod_auth",
# "mod_status",
"mod_setenv",
+# "mod_magnet",
# "mod_proxy",
# "mod_simple_vhost",
# "mod_evhost",
# "mod_userdir",
- "mod_compress",
+ "mod_deflate",
# "mod_ssi",
-# "mod_usertrack",
"mod_expire",
-# "mod_secdownload",
# "mod_rrdtool",
# "mod_webdav",
"mod_accesslog",
@@ -38,7 +35,6 @@ server.modules = (
######## Inclusions ########
-include "mime-types.conf"
# uncomment for cgi support
# include "mod_cgi.conf"
# uncomment for php/fastcgi support
@@ -58,14 +54,10 @@ server.errorlog = var.logdir + "/error.log"
# To log errors to syslog instead, use:
# server.errorlog-use-syslog = "enable"
-server.indexfiles = ("index.html", "index.htm", "default.htm")
+index-file.names = ("index.html", "index.htm", "default.htm")
# server.tag = "lighttpd"
-server.follow-symlink = "enable"
-
-server.event-handler = "linux-sysepoll"
-
# To chroot to a directory:
# server.chroot = "/"
@@ -82,8 +74,8 @@ server.event-handler = "linux-sysepoll"
# -> ..../status-404.html for 'File not found'
# server.errorfile-prefix = var.basedir + "/error/status-"
-# FAM support for caching stat() calls
-server.stat-cache-engine = "fam"
+# inotify support for caching stat() calls
+#server.stat-cache-engine = "inotify"
# which extensions should not be handled via static-file transfer
# (extensions that are usually handled by mod_cgi, mod_fastcgi, etc).
@@ -130,26 +122,15 @@ url.access-deny = ("~", ".inc")
######## SSL config ########
# See ssl.txt in lighttpd-doc package for more info.
-# The defaults here are NOT the server defaults. You need to uncomment
-# them to use them. They are HIGHLY recommended; by default, lighttpd
-# will serve older TLS protocols that may be vulnerable to attack.
#
#ssl.engine = "enable"
-#ssl.honor-cipher-order = "enable"
-#ssl.disable-client-renegotiation = "enable"
-# pemfile is cert+privkey, ca-file is the intermediate chain in one file
-#ssl.pemfile = "/path/to/signed_cert_plus_private_key.pem"
-#ssl.ca-file = "/path/to/intermediate_certificate.pem"
+# pemfile is certificate + intermediate chain in one file
+# privkey is certificate private key
+#ssl.pemfile = "/path/to/fullchain.pem"
+#ssl.privkey = "/path/to/privkey.pem"
# ECDH/ECDHE ciphers curve strength (see `openssl ecparam -list_curves`)
-#ssl.ec-curve = "secp384r1"
-# Environment flag for HTTPS enabled
-#setenv.add-environment = (
-# "HTTPS" => "on"
-#)
+#ssl.openssl.ssl-conf-cmd += ("Groups" => "secp384r1")
# Modern configuration, tweak to your needs
-#ssl.use-sslv2 = "disable"
-#ssl.use-sslv3 = "disable"
-#ssl.cipher-list = "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256"
# HSTS(15768000 seconds = 6 months)
#setenv.add-response-header = (
# "Strict-Transport-Security" => "max-age=15768000;"
@@ -163,9 +144,15 @@ url.access-deny = ("~", ".inc")
#status.config-url = "/server-config"
-######## mod_compress config ########
-compress.cache-dir = var.statedir + "/cache/compress"
-compress.filetype = ("text/plain", "text/html")
+######## mod_deflate config ########
+deflate.cache-dir = var.statedir + "/cache/compress"
+deflate.mimetypes = ("text/plain", "text/html")
+deflate.allowed-encodings = ( "zstd", "gzip", "deflate" )
+
+
+######## mod_magnet config ########
+# programmatic manipulation of requests using lua
+# https://wiki.lighttpd.net/mod_magnet
######## mod_proxy config ########
@@ -231,17 +218,6 @@ compress.filetype = ("text/plain", "text/html")
# "/asdhas/" => "access plus 1 seconds 2 minutes"
#)
-# {{{ mod_trigger_b4_dl
-# see trigger_b4_dl.txt
-#
-# trigger-before-download.gdbm-filename = "/home/weigon/testbase/trigger.db"
-# trigger-before-download.memcache-hosts = ( "127.0.0.1:11211" )
-# trigger-before-download.trigger-url = "^/trigger/"
-# trigger-before-download.download-url = "^/download/"
-# trigger-before-download.deny-url = "http://127.0.0.1/index.html"
-# trigger-before-download.trigger-timeout = 10
-# }}}
-
######## mod_webdav config ########
# lighttpd can act as a WebDAV server.
diff --git a/user/lighttpd/lighttpd.initd b/user/lighttpd/lighttpd.initd
index 614cb2132..597b9070b 100644
--- a/user/lighttpd/lighttpd.initd
+++ b/user/lighttpd/lighttpd.initd
@@ -25,7 +25,7 @@ checkconfig() {
ewarn "is not set. Falling back to lighttpd.pid"
LIGHTTPD_PID="/run/lighttpd.pid"
fi
- /usr/sbin/lighttpd -t -f ${LIGHTTPD_CONF} >/dev/null
+ /usr/sbin/lighttpd -tt -f ${LIGHTTPD_CONF}
}
start() {
diff --git a/user/lighttpd/lighttpd.pre-install b/user/lighttpd/lighttpd.pre-install
index 81ccda1f9..b1588fd0b 100644
--- a/user/lighttpd/lighttpd.pre-install
+++ b/user/lighttpd/lighttpd.pre-install
@@ -1,8 +1,8 @@
#!/bin/sh
-addgroup -S -g 82 www-data 2>/dev/null
-addgroup -S lighttpd 2>/dev/null
-adduser -S -D -H -h /var/www/localhost/htdocs -s /sbin/nologin -G lighttpd -g lighttpd lighttpd 2>/dev/null
-addgroup lighttpd www-data 2>/dev/null
+groupadd -r -g 82 www-data 2>/dev/null
+groupadd -r lighttpd 2>/dev/null
+useradd -c lighttpd -s /sbin/nologin -g lighttpd -G www-data \
+ -d /var/www/localhost/htdocs -r lighttpd 2>/dev/null
exit 0
diff --git a/user/lighttpd/mime-types.conf b/user/lighttpd/mime-types.conf
deleted file mode 100644
index f24d4d858..000000000
--- a/user/lighttpd/mime-types.conf
+++ /dev/null
@@ -1,79 +0,0 @@
-###############################################################################
-# Default mime-types.conf for Gentoo.
-# include'd from lighttpd.conf.
-# $Header: /var/cvsroot/gentoo-x86/www-servers/lighttpd/files/conf/mime-types.conf,v 1.4 2010/03/14 21:45:18 bangert Exp $
-###############################################################################
-
-# {{{ mime types
-mimetype.assign = (
- ".svg" => "image/svg+xml",
- ".svgz" => "image/svg+xml",
- ".pdf" => "application/pdf",
- ".sig" => "application/pgp-signature",
- ".spl" => "application/futuresplash",
- ".class" => "application/octet-stream",
- ".ps" => "application/postscript",
- ".torrent" => "application/x-bittorrent",
- ".dvi" => "application/x-dvi",
- ".gz" => "application/x-gzip",
- ".pac" => "application/x-ns-proxy-autoconfig",
- ".swf" => "application/x-shockwave-flash",
- ".tar.gz" => "application/x-tgz",
- ".tgz" => "application/x-tgz",
- ".tar" => "application/x-tar",
- ".zip" => "application/zip",
- ".dmg" => "application/x-apple-diskimage",
- ".mp3" => "audio/mpeg",
- ".m3u" => "audio/x-mpegurl",
- ".wma" => "audio/x-ms-wma",
- ".wax" => "audio/x-ms-wax",
- ".ogg" => "application/ogg",
- ".wav" => "audio/x-wav",
- ".gif" => "image/gif",
- ".jpg" => "image/jpeg",
- ".jpeg" => "image/jpeg",
- ".png" => "image/png",
- ".xbm" => "image/x-xbitmap",
- ".xpm" => "image/x-xpixmap",
- ".xwd" => "image/x-xwindowdump",
- ".css" => "text/css",
- ".html" => "text/html",
- ".htm" => "text/html",
- ".js" => "text/javascript",
- ".asc" => "text/plain",
- ".c" => "text/plain",
- ".h" => "text/plain",
- ".cc" => "text/plain",
- ".cpp" => "text/plain",
- ".hh" => "text/plain",
- ".hpp" => "text/plain",
- ".conf" => "text/plain",
- ".log" => "text/plain",
- ".text" => "text/plain",
- ".txt" => "text/plain",
- ".diff" => "text/plain",
- ".patch" => "text/plain",
- ".ebuild" => "text/plain",
- ".eclass" => "text/plain",
- ".rtf" => "application/rtf",
- ".bmp" => "image/bmp",
- ".tif" => "image/tiff",
- ".tiff" => "image/tiff",
- ".ico" => "image/x-icon",
- ".dtd" => "text/xml",
- ".xml" => "text/xml",
- ".mpeg" => "video/mpeg",
- ".mpg" => "video/mpeg",
- ".mov" => "video/quicktime",
- ".qt" => "video/quicktime",
- ".avi" => "video/x-msvideo",
- ".asf" => "video/x-ms-asf",
- ".asx" => "video/x-ms-asf",
- ".wmv" => "video/x-ms-wmv",
- ".bz2" => "application/x-bzip",
- ".tbz" => "application/x-bzip-compressed-tar",
- ".tar.bz2" => "application/x-bzip-compressed-tar"
- )
-# }}}
-
-# vim: set ft=conf foldmethod=marker et :
diff --git a/user/lilo/APKBUILD b/user/lilo/APKBUILD
new file mode 100644
index 000000000..4e29aa282
--- /dev/null
+++ b/user/lilo/APKBUILD
@@ -0,0 +1,59 @@
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=lilo
+pkgver=24.2
+pkgrel=2
+pkgdesc="Minimal BIOS bootloader for x86 systems"
+url="https://www.joonet.de/lilo/"
+arch="pmmx x86 x86_64"
+options="!check" # No test suite.
+license="BSD-3-Clause AND GPL-2.0+ AND Public-Domain"
+depends="perl"
+makedepends="dev86 linux-headers lvm2-dev sharutils"
+subpackages="$pkgname-doc"
+source="https://www.joonet.de/lilo/ftp/sources/lilo-$pkgver.tar.gz
+ gcc10.patch
+ adelie.patch
+ cflags.patch
+ initramfs.patch
+ musl.patch
+ partuuid.patch
+ lilo.conf.template
+ lilo.easy-boot
+ "
+
+build() {
+ export CFLAGS="$CFLAGS -fno-strict-aliasing"
+ make
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+
+ rm -rf "$pkgdir"/etc/lilo/kernel \
+ "$pkgdir"/etc/lilo/initramfs \
+ "$pkgdir"/usr/sbin/mkrescue \
+ "$pkgdir"/usr/share/man/man8/mkrescue.8
+
+ mkdir "$pkgdir"/boot/lilo/gfx
+ mv "$pkgdir"/boot/lilo/*.bmp \
+ "$pkgdir"/boot/lilo/*.dat \
+ "$pkgdir"/boot/lilo/gfx
+
+ install -Dm644 "$srcdir"/lilo.conf.template \
+ "$pkgdir"/etc/lilo/lilo.conf.template
+ mv "$pkgdir"/etc/lilo/lilo.conf_example \
+ "$pkgdir"/etc/lilo/lilo.conf.example
+
+ install -Dm755 "$srcdir"/lilo.easy-boot \
+ "$pkgdir"/etc/easy-boot.d/50-lilo
+}
+
+sha512sums="4437cae21345f483194a5dc95f686f3f3cb2beec78faae3fba959db25eae29fe2c56732e055c05f1d101682c5d442cdc9561fae8074f61f5537dde0413204c54 lilo-24.2.tar.gz
+0ef0ab379e787767bcee2c77eeb7bc5acce908850077dcc14a1d71f3a78761946e8e252089fecb441c26cbbee66c868021d42a300d05579d083e654026cf8682 gcc10.patch
+cf8dab563e88cc7b280f5740c3b0f25049b9ce27c77a67e7b0c55dc21a158f8b2998f0c7743f11bcc4ae893697e6b6cc56054a40919899bf2d6d79b4e1a59190 adelie.patch
+ed1ffb03dbbbf6fe6974d045005f72b3657d470cd3f3556d582e09a38836090c3e75a684a1dcfbe7ade91e5ada3706b712ae7111460df85454518a746c60bde4 cflags.patch
+98e26319a747e6cc7e9d7c695d20e511ef9d196dfc312403c7171380e75edbbdec6af39c0f1670956bcd7ec9ff203505c4001962c767f651b730da31830ed35f initramfs.patch
+1c1ce61d2d7c88c1ba66e1415b36edb6743f46a50857b5bcd2b6b28a0711e4de3f0a75c352a5997bc9b5d50b0754c49a3f69b736e07a6e389c02da004289c64f musl.patch
+3962bf30a866f31fa5263618210d61ac5663117cac1d5a52a5e14f3665ff8edfd628c80807591f3da5f2e6908b8c0af9b19fac32f6ab90e6c4755bf79cb34d5a partuuid.patch
+489f57d29ee6607fb7040a33655bc369a510290804ae11686e02ba91d6cd3401175fa93d8d74da6058f03126b924004d28d5145ec5df70be4d04acba112c5729 lilo.conf.template
+cdf4ea20a678cc01149c06556fe6b3b9b70a91aad7e44ffb7728b677297de8f68d4a5037aa44414bd606c838621fc9191c5ad45f909538b852c1f770b4fcb2e4 lilo.easy-boot"
diff --git a/user/lilo/adelie.patch b/user/lilo/adelie.patch
new file mode 100644
index 000000000..29983faff
--- /dev/null
+++ b/user/lilo/adelie.patch
@@ -0,0 +1,400 @@
+Adjust paths so that lilo has its own dir in /etc and /boot.
+
+--- lilo-24.2/make.vars 2013-06-07 02:50:30.000000000 -0500
++++ lilo-24.2/make.vars 2020-03-19 15:50:13.710057044 -0500
+@@ -90,8 +90,8 @@ OPT=-Os
+ #
+
+ SBIN_DIR=/sbin
+-CFG_DIR=/etc
+-BOOT_DIR=/boot
++CFG_DIR=/etc/lilo
++BOOT_DIR=/boot/lilo
+ USRSBIN_DIR=/usr/sbin
+ BUILTIN=1
+
+--- lilo-24.2/src/config.h 2011-06-22 02:13:58.000000000 -0500
++++ lilo-24.2/src/config.h 2020-03-19 15:34:21.320045281 -0500
+@@ -39,8 +39,8 @@
+ #define DFL_CHAIN LILO_DIR "/chain.b" /* default chain loader */
+ #define DFL_MBR LILO_DIR "/mbr.b" /* default MBR */
+ #else
+-#define CFG_DIR "/etc" /* location of configuration files */
+-#define BOOT_DIR "/boot" /* location of boot files */
++#define CFG_DIR "/etc/lilo" /* location of configuration files */
++#define BOOT_DIR "/boot/lilo" /* location of boot files */
+ #define BACKUP_DIR BOOT_DIR /* boot sector and partition table backups */
+ #define DFL_CONFIG CFG_DIR "/lilo.conf"/* default configuration file */
+ #define DFL_DISKTAB CFG_DIR "/disktab" /* LILO's disk parameter table */
+--- lilo-24.2/sample/lilo.example.conf 2015-11-20 14:50:03.000000000 -0600
++++ lilo-24.2/sample/lilo.example.conf 2020-03-19 15:53:08.030059197 -0500
+@@ -1,4 +1,4 @@
+-# /etc/lilo.conf - systemwide LILO configuration (LILO 24)
++# /etc/lilo/lilo.conf - systemwide LILO configuration (LILO 24)
+ # details see in manpages: lilo(8) and lilo.conf(5)
+
+ # +-------------------------------------------------------------+
+@@ -50,7 +50,7 @@ root = /dev/sda1
+ # Specifies the location of the map file. Lilo creates the (sector)
+ # map file of direct sector addresses which are independent of any
+ # filesystem.
+-map = /boot/map
++map = /boot/lilo/map
+
+ # ---------------------------------------------------------------
+
+@@ -63,7 +63,7 @@ install = menu
+ # A) Customized boot message for choice 'text'.
+ # For the simple text menu you can set an extra message in the
+ # created file. Its text will be displayed before boot prompt.
+-#message = /boot/message.txt
++#message = /boot/lilo/message.txt
+
+ # B) Configuration of the scheme for choice 'menu'.
+ # Use following coding: <text>:<highlight>:<border>:<title>
+@@ -83,7 +83,7 @@ menu-scheme = Wb:Yr:Wb:Wb
+ # with 16 colors: onlyblue, tuxlogo, inside
+ # with 256 colors: coffee
+ # for Debian: debianlilo, debian, debian-de
+-#bitmap = /boot/tuxlogo.bmp
++#bitmap = /boot/lilo/gfx/tuxlogo.bmp
+
+ # ---------------------------------------------------------------
+
+--- lilo-24.2/scripts/liloconfig 2015-11-21 18:00:21.000000000 -0600
++++ lilo-24.2/scripts/liloconfig 2020-03-19 15:23:42.240037388 -0500
+@@ -44,7 +44,7 @@ getopts('hvfu');
+ pod2usage(1) if $opt_h;
+
+ #---- other variables
+-our $liloconf = "/etc/lilo.conf";
++our $liloconf = "/etc/lilo/lilo.conf";
+ our $conftmp_1 = "/tmp/lilotmp1";
+ our $conftmp_2 = "/tmp/lilotmp2";
+ our $liloconfold = $liloconf . ".old";
+@@ -54,7 +54,7 @@ our $fstabconf = "/etc/fstab";
+ our $idpath = "/dev/disk/by-id";
+ our $uuidpath = "/dev/disk/by-uuid";
+ our $lblpath = "/dev/disk/by-label";
+-our $template = "/usr/share/doc/lilo/examples/lilo.example.conf.gz";
++our $template = "/etc/lilo/lilo.conf.template";
+
+ our $rootpart; # found root part
+ our $root_dev; # /dev/hdX9, /dev/sdX9, /dev/md/*
+@@ -399,8 +401,12 @@ sub copy_template {
+
+ # copy template config
+ if (-f $template) {
+- system("gzip -d -c $template >$conftmp_1") if ($template =~ /\.gz$/);
+- system("cat $template >$conftmp_1") if ($template =~ /\.conf$/);
++ if ($template =~ /\.gz$/) {
++ system("gzip -d -c $template >$conftmp_1");
++ }
++ else {
++ system("cat $template >$conftmp_1");
++ }
+
+ open(CONFTMP1, "<$conftmp_1") or die "$prog: couldn't open $conftmp_1: $!\n";
+ open(CONFTMP2, ">$conftmp_2") or die "$prog: couldn't open $conftmp_2: $!\n";
+@@ -418,7 +418,7 @@ sub copy_template {
+ }
+ else {
+ open(CONFTMP2, ">$conftmp_2") or die "$prog: couldn't open $conftmp_2: $!\n";
+- print CONFTMP2 "# /etc/lilo.conf
++ print CONFTMP2 "# /etc/lilo/lilo.conf
+
+ ### LILO global section ###
+
+@@ -426,7 +426,7 @@ sub copy_template {
+ lba32
+ boot = /dev/sda
+ root = /dev/sda1
+-map = /boot/map
++map = /boot/lilo/map
+ install = menu
+ menu-scheme = Wb:Yr:Wb:Wb
+ prompt
+@@ -781,7 +781,7 @@ lilo.conf file you find many useful comm
+ Please pay attention about error messages if liloconfig cannot find
+ any images (/boot/vmlinuz*) oder image symlinks (/vmlinuz, /vmlinu.old).
+ Then you need to search for images by ourself and make some changes
+-in the '/etc/lilo.conf' file. Otherwise no bootloader can be installed
++in the '/etc/lilo/lilo.conf' file. Otherwise no bootloader can be installed
+ with '/sbin/lilo'.
+
+ =head1 OPTIONS
+@@ -808,7 +808,7 @@ Force overriding/update of boot line in
+
+ =head1 EXAMPLES
+
+-Lines in the configuration file /etc/lilo.conf:
++Lines in the configuration file /etc/lilo/lilo.conf:
+
+ ### LILO global section ###
+
+@@ -818,7 +818,7 @@ Lines in the configuration file /etc/lil
+ boot = /dev/disk/by-id/ata-SAMSUNG_SV1604N_S01FJ10X999999
+ #root = /dev/sda1
+ root = "UUID=18843936-00f9-4df0-a373-000d05a5dd44"
+- map = /boot/map
++ map = /boot/lilo/map
+ install = menu
+ menu-scheme = Wb:Yr:Wb:Wb
+ prompt
+--- lilo-24.2/scripts/lilo-uuid-diskid 2014-10-16 16:53:29.000000000 -0500
++++ lilo-24.2/scripts/lilo-uuid-diskid 2020-03-19 15:28:07.360040662 -0500
+@@ -1,7 +1,7 @@
+ #!/usr/bin/perl -w
+
+ # lilo-uuid-diskid - convert boot and root options to diskid
+-# and uuid in /etc/lilo.conf
++# and uuid in /etc/lilo/lilo.conf
+ #
+ # Copyright 2010-2014 Joachim Wiedorn <joodevel at joonet.de>
+ #
+@@ -41,7 +41,7 @@ getopts('hv');
+ pod2usage(1) if $opt_h;
+
+ #---- other variables
+-our $liloconf = "/etc/lilo.conf";
++our $liloconf = "/etc/lilo/lilo.conf";
+ our $liloconfold = $liloconf . ".old";
+ our $liloconfnew = $liloconf . ".new";
+ our $fstabconf = "/etc/fstab";
+@@ -454,7 +454,7 @@ Print verbose messages.
+
+ =head1 EXAMPLES
+
+-Lines in the configuration file /etc/lilo.conf:
++Lines in the configuration file /etc/lilo/lilo.conf:
+
+ #boot = /dev/sda
+ boot = /dev/disk/by-id/ata-SAMSUNG_SV1604N_S01FJ10X999999
+--- lilo-24.2/man/keytab-lilo.8 2010-06-28 15:41:18.000000000 -0500
++++ lilo-24.2/man/keytab-lilo.8 2020-03-19 16:01:06.730065109 -0500
+@@ -37,7 +37,7 @@ to set the keyboard type when booting
+ [using the
+ .B keytable
+ parameter in
+-.BR /etc/lilo.conf ].
++.BR /etc/lilo/lilo.conf ].
+
+ .I kbd_layout
+ should be the name of a map file which specifies the desired
+@@ -68,7 +68,7 @@ output, so you should redirect it to a s
+ .B lilo
+ has no particular restrictions on the name of keyboard translation
+ files, but the suggested naming convention and location is
+-.BI /boot/ mapping .ktl
++.BI /boot/lilo/ mapping .ktl
+ (where
+ .B .ktl
+ stands for "Keyboard Table for Lilo").
+@@ -86,11 +86,11 @@ respectively.
+
+ .SH "EXAMPLES"
+ .TP
+-.B keytab\-lilo dvorak >/boot/dvorak.ktl
++.B keytab\-lilo dvorak >/boot/lilo/dvorak.ktl
+
+ This is the most common form of invocation; it simply compiles the
+ given map file (in this case dvorak) and puts the result in
+-.BR /boot/dvorak.ktl .
++.BR /boot/lilo/dvorak.ktl .
+
+ .SH "AUTHOR"
+ Werner Almesberger (almesber@bernina.ethz.ch).
+--- lilo-24.2/man/lilo-uuid-diskid.8 2015-11-21 17:25:42.000000000 -0600
++++ lilo-24.2/man/lilo-uuid-diskid.8 2020-03-19 15:59:05.390063610 -0500
+@@ -100,7 +100,7 @@ Print a brief help.
+ Print verbose messages.
+ .SH "EXAMPLES"
+ .IX Header "EXAMPLES"
+-Lines in the configuration file /etc/lilo.conf:
++Lines in the configuration file /etc/lilo/lilo.conf:
+ .PP
+ .Vb 2
+ \& #boot = /dev/sda
+--- lilo-24.2/man/lilo.8 2015-11-21 17:25:31.000000000 -0600
++++ lilo-24.2/man/lilo.8 2020-03-19 16:01:39.580065515 -0500
+@@ -108,7 +108,7 @@ Auxiliary uses:
+ .SH "DESCRIPTION"
+ .IX Header "DESCRIPTION"
+ lilo installs a boot loader that will be activated the next time you boot
+-your system. The default configuration file \fI/etc/lilo.conf\fR (see manpage
++your system. The default configuration file \fI/etc/lilo/lilo.conf\fR (see manpage
+ \&\fIlilo.conf\fR\|(5)) will contain most options, but many, including those which
+ override the configuration file, may be specified on the command line.
+ .SH "OPTIONS"
+@@ -140,7 +140,7 @@ Speeds up the booting especially from fl
+ .IP "\fB\-C\fR \fIconfig-file\fR" 4
+ .IX Item "-C config-file"
+ Set another pathname and filename for the configuration file. The default
+-configuration file is \fI/etc/lilo.conf\fR.
++configuration file is \fI/etc/lilo/lilo.conf\fR.
+ .IP "\fB\-d\fR \fIdelay-time\fR" 4
+ .IX Item "-d delay-time"
+ Set the delay time in tenths of a second ('20' = 2 sec) before automatically
+@@ -171,7 +171,7 @@ header will be lost. It can be restored
+ a text-based backup for the \s-1LILO\s0 header information.
+ .IP "\fB\-f\fR \fIdisk-tab\fR" 4
+ .IX Item "-f disk-tab"
+-Set another disk geometry parameter file. The default is \fI/etc/disktab\fR.
++Set another disk geometry parameter file. The default is \fI/etc/lilo/disktab\fR.
+ .IP "\fB\-F\fR" 4
+ .IX Item "-F"
+ Override boot sector check for filesystems (e.g., swap, ext4, xfs ...) which
+@@ -204,7 +204,7 @@ addresses, allowing access to all partit
+ (This is the default geometry).
+ .IP "\fB\-m\fR \fImap-file\fR" 4
+ .IX Item "-m map-file"
+-Use another map file instead of the default file /boot/map.
++Use another map file instead of the default file /boot/lilo/map.
+ .IP "\fB\-M\fR \fImaster-device\fR \fB{mbr|ext}\fR" 4
+ .IX Item "-M master-device {mbr|ext}"
+ Install a Master Boot Record on the device specified as master-device, selecting
+@@ -232,7 +232,7 @@ sector. Compare with the '\-F' flag, whi
+ boot sector.
+ .Sp
+ \&\fB<global\-option>\fR allows the passing of any global option which may
+-appear in the global section (top) of the configuration file (\fI/etc/lilo.conf\fR).
++appear in the global section (top) of the configuration file (\fI/etc/lilo/lilo.conf\fR).
+ For instance \fI'\-P nowarn'\fR will pass the 'nowarn' option, just as though 'nowarn'
+ appeared in the configuration file (same as the '\-w' switch). Similarly
+ \&\fI'\-P timeout=50'\fR will add or override the 'timeout=' line in the configuration
+@@ -241,7 +241,7 @@ line option switches. However, it is not
+ cause an override of other options; e.g. '\-g' (\-P geometric), '\-L' (\-P lba32).
+ .IP "\fB\-q\fR" 4
+ .IX Item "-q"
+-List the currently mapped files. \fBlilo\fR maintains a file, by default \fI/boot/map\fR,
++List the currently mapped files. \fBlilo\fR maintains a file, by default \fI/boot/lilo/map\fR,
+ containing each name and location of the kernel(s) to boot. This option will list
+ the names therein. Use with \fB\-v\fR for more detailed information about the
+ installed boot loader.
+@@ -249,7 +249,7 @@ installed boot loader.
+ .IX Item "-r root-directory"
+ Before doing anything else, do a \fI'chroot'\fR to the indicated directory. The new
+ root directory must contain a \fI/dev\fR directory and may need a /boot directory.
+-It may also need an \fI/etc/lilo.conf\fR file.
++It may also need an \fI/etc/lilo/lilo.conf\fR file.
+ .IP "\fB\-R\fR \fIcommand-line\fR" 4
+ .IX Item "-R command-line"
+ This option sets the default command for the boot loader for the next time it
+@@ -267,13 +267,13 @@ Refer to \fI\fIlilo.conf\fI\|(5)\fR for
+ .IP "\fB\-s\fR \fIsave-file\fR" 4
+ .IX Item "-s save-file"
+ When lilo writes a new boot sector, it preserves the former contents of the boot
+-sector in a file, named by default /boot/boot.NNNN, where \s-1NNNN\s0 is the hexadecimal
++sector in a file, named by default /boot/lilo/boot.NNNN, where \s-1NNNN\s0 is the hexadecimal
+ representation of the major and minor device numbers of the drive/partition.
+ .Sp
+ This option defines the backup save file in one of three ways: a save directory
+-(default is '/boot') using the default filename 'boot.NNNN' in the defined
++(default is '/boot/lilo') using the default filename 'boot.NNNN' in the defined
+ directory; a pathname template to which '.NNNN' is appended (default would be
+-\&'/boot/boot'); or the full pathname of the file, which must include the correct
++\&'/boot/lilo/boot'); or the full pathname of the file, which must include the correct
+ \&'.NNNN' suffix. When used with the \-u option, the full file pathname must be set.
+ .IP "\fB\-S\fR \fIsave-file\fR" 4
+ .IX Item "-S save-file"
+@@ -386,7 +386,7 @@ removed from the command line before it
+ noted.
+ .IP "\fBlock\fR" 4
+ .IX Item "lock"
+-Locks the command line, as though 'lock' had been defined in \fI/etc/lilo.conf\fR.
++Locks the command line, as though 'lock' had been defined in \fI/etc/lilo/lilo.conf\fR.
+ .IP "\fBmem=###[,K,M,G]\fR" 4
+ .IX Item "mem=###[,K,M,G]"
+ Set the maximum memory in the system in bytes, kilobytes, megabytes or gigabytes.
+--- lilo-24.2/man/lilo.conf.5 2013-06-07 14:17:39.000000000 -0500
++++ lilo-24.2/man/lilo.conf.5 2020-03-19 16:01:57.970065742 -0500
+@@ -25,13 +25,13 @@ lilo.conf \- configuration file for lilo
+ .SH DESCRIPTION
+ .LP
+ This file, by default
+-.IR /etc/lilo.conf ,
++.IR /etc/lilo/lilo.conf ,
+ is read by the boot loader installer 'lilo' (see lilo(8)).
+ .LP
+ It might look as follows:
+ .IP
+ .nf
+-# /etc/lilo.conf
++# /etc/lilo/lilo.conf
+ #
+ # global options:
+ boot=/dev/hda
+@@ -111,7 +111,7 @@ All RAID installations should use only t
+ multiple backups may be created. The '.NNNN' suffix is the hexadecimal
+ representation of the major and minor device numbers of the device or
+ partition. If this option is not specified, the default name of boot sector
+-backups is '/boot/boot.NNNN'. If a backup already exists, it will be
++backups is '/boot/lilo/boot.NNNN'. If a backup already exists, it will be
+ preserved, rather than overwritten. C.f., \fBforce-backup=\fP below.
+ .TP
+ .BI "bios-passes-dl=" <option>
+@@ -334,7 +334,7 @@ viz.,
+ .BI "disktab=" <disktab-file>
+ Specifies the name of the disk parameter table.
+ The map installer looks for
+-.I /etc/disktab
++.I /etc/lilo/disktab
+ if `disktab' is omitted. The use of disktabs is discouraged.
+ .TP
+ .BI "el-torito-bootable-CD"
+@@ -436,7 +436,7 @@ The per-image password option `mandatory
+ .TP
+ .BI "map=" <map-file>
+ Specifies the location of the map file. If `map' is omitted, the file
+-.I /boot/map
++.I /boot/lilo/map
+ is used.
+
+ On machines with a pre-1998 BIOS, the EDD bios extensions which are required
+@@ -812,7 +812,7 @@ requirements of the boot-installer parse
+ an operator. The kernel command line parser is very much simpler, and
+ must not see any quotation marks. Simply stated, only use the quotation
+ marks within
+-.IR /etc/lilo.conf .
++.IR /etc/lilo/lilo.conf .
+ .TP
+ .BI "vga=" <mode>
+ This specifies the VGA text mode that should be selected when
+@@ -1027,7 +1027,7 @@ at the time the boot loader is installed
+ the password, it should be specified: \fBpassword=""\fP.
+ Passwords entered interactively are not required to be entered again if the
+ boot installer is re-run. They are cached, in hashed form, in a companion
+-file to the config-file, default name: \fB/etc/lilo.conf.crc\fP. If the
++file to the config-file, default name: \fB/etc/lilo/lilo.conf.crc\fP. If the
+ config-file is updated, a warning message
+ will be issued telling you to re-run \fIlilo \-p\fP to force re-creation of the
+ password cache file.
+--- lilo-24.2/man/liloconfig.8 2015-11-21 17:25:48.000000000 -0600
++++ lilo-24.2/man/liloconfig.8 2020-03-19 16:02:08.680065874 -0500
+@@ -92,7 +92,7 @@ lilo.conf file you find many useful comm
+ Please pay attention about error messages if liloconfig cannot find
+ any images (/boot/vmlinuz*) oder image symlinks (/vmlinuz, /vmlinu.old).
+ Then you need to search for images by ourself and make some changes
+-in the '/etc/lilo.conf' file. Otherwise no bootloader can be installed
++in the '/etc/lilo/lilo.conf' file. Otherwise no bootloader can be installed
+ with '/sbin/lilo'.
+ .SH "OPTIONS"
+ .IX Header "OPTIONS"
+@@ -110,7 +110,7 @@ Force overriding existing lilo.conf.
+ Force overriding/update of boot line in lilo.conf.
+ .SH "EXAMPLES"
+ .IX Header "EXAMPLES"
+-Lines in the configuration file /etc/lilo.conf:
++Lines in the configuration file /etc/lilo/lilo.conf:
+ .PP
+ .Vb 1
+ \& ### LILO global section ###
+@@ -121,7 +121,7 @@ Lines in the configuration file /etc/lil
+ \& boot = /dev/disk/by\-id/ata\-SAMSUNG_SV1604N_S01FJ10X999999
+ \& #root = /dev/sda1
+ \& root = "UUID=18843936\-00f9\-4df0\-a373\-000d05a5dd44"
+-\& map = /boot/map
++\& map = /boot/lilo/map
+ \& install = menu
+ \& menu\-scheme = Wb:Yr:Wb:Wb
+ \& prompt
diff --git a/user/lilo/cflags.patch b/user/lilo/cflags.patch
new file mode 100644
index 000000000..253d77a33
--- /dev/null
+++ b/user/lilo/cflags.patch
@@ -0,0 +1,13 @@
+Ensure our CFLAGS are being used
+
+--- lilo-24.2/src/Makefile 2015-11-21 17:50:25.000000000 -0600
++++ lilo-24.2/src/Makefile 2020-03-19 04:48:25.069499686 -0500
+@@ -22,7 +22,7 @@ LD86=ld86 -0
+ NASM=nasm
+ G=`cat foo1 foo2 | grep version | cut -d " " -f 3`
+
+-CFLAGS=$(OPT) -Wall $(PCONFIG)
++CFLAGS+=-Wall $(PCONFIG)
+ LIBS=$(DEVMAPPER)
+
+ OBJS=lilo.o raid.o map.o geometry.o boot.o device.o common.o bsect.o cfg.o \
diff --git a/user/lilo/gcc10.patch b/user/lilo/gcc10.patch
new file mode 100644
index 000000000..c46b9eebd
--- /dev/null
+++ b/user/lilo/gcc10.patch
@@ -0,0 +1,51 @@
+Description: Fix ftbfs with GCC-10
+
+Author: Ryan Finnie <ryan@finnie.org>
+Bug-Debian: https://bugs.debian.org/957490
+Forwarded: no
+
+---
+
+--- a/src/raid.h
++++ b/src/raid.h
+@@ -8,7 +8,7 @@
+ * in the source directory.
+ */
+
+-int do_md_install, ndisk, md_bios;
++extern int ndisk, md_bios;
+
+ int raid_setup(void);
+ void raid_final(void);
+--- a/src/bsect.c
++++ b/src/bsect.c
+@@ -54,8 +54,6 @@
+ #endif
+
+
+-int boot_dev_nr;
+-
+ static BOOT_SECTOR bsect,bsect_orig;
+ static MENUTABLE menuparams;
+ static DESCR_SECTORS descrs;
+--- a/src/identify.c
++++ b/src/identify.c
+@@ -19,7 +19,6 @@
+ #include "common.h"
+ #include "cfg.h"
+
+-char *identify;
+ static char *opt;
+ static char *first, *dflt;
+ static int idefault;
+--- a/src/raid.c
++++ b/src/raid.c
+@@ -41,7 +41,7 @@
+ static int raid_bios[MAX_RAID+1];
+ static int device;
+ enum {MD_NULL=0, MD_PARALLEL, MD_MIXED, MD_SKEWED};
+-int do_md_install, ndisk, md_bios;
++int ndisk, md_bios;
+ static char *raid_list[MAX_RAID];
+ static int list_index[MAX_RAID];
+ static int nlist, faulty;
diff --git a/user/lilo/initramfs.patch b/user/lilo/initramfs.patch
new file mode 100644
index 000000000..f6aca7f75
--- /dev/null
+++ b/user/lilo/initramfs.patch
@@ -0,0 +1,81 @@
+Adjust expected initrd name to match what dracut produces.
+
+--- lilo-24.2/scripts/liloconfig 2015-11-21 18:00:21.000000000 -0600
++++ lilo-24.2/scripts/liloconfig 2020-07-11 00:35:13.400130230 -0500
+@@ -618,8 +618,8 @@ sub write_image_config {
+ foreach $image (@vmlinuz) {
+ # search for kernel initrd file
+ chomp $image;
+- $initrd = $image;
+- $initrd =~ s/vmlinuz/initrd\.img/;
++ $initrd = $image . ".img";
++ $initrd =~ s/vmlinuz/initramfs/;
+ $initrd2 = $initrd;
+ $initrd2 =~ s/\.img//;
+ $nr2 = $nr + 1;
+@@ -694,8 +694,8 @@ sub write_imagelinks_config {
+ foreach $image (@vmlinuz) {
+ # search for kernel initrd file
+ chomp $image;
+- $initrd = $image;
+- $initrd =~ s/vmlinuz/initrd\.img/;
++ $initrd = $image . ".img";
++ $initrd =~ s/vmlinuz/initramfs/;
+ $nr2 = $nr + 1;
+
+ print MYFH_NEW 'image = ' . $image . "\n";
+@@ -837,7 +837,7 @@ Lines in the configuration file /etc/lil
+ # restricted
+ # alias = 1
+ # optional
+- initrd = /boot/initrd.img-3.17-trunk-686
++ initrd = /boot/initramfs-3.17-trunk-686.img
+
+ image = /boot/vmlinuz-3.14-trunk-686
+ label = "Linux Old"
+@@ -847,7 +847,7 @@ Lines in the configuration file /etc/lil
+ # restricted
+ # alias = 2
+ # optional
+- initrd = /boot/initrd.img-3.14-trunk-686
++ initrd = /boot/initramfs-3.14-trunk-686.img
+
+ =head1 COPYRIGHT and LICENSE
+
+--- lilo-24.2/man/liloconfig.8 2015-11-21 17:25:48.000000000 -0600
++++ lilo-24.2/man/liloconfig.8 2020-07-11 00:45:57.850132663 -0500
+@@ -140,7 +140,7 @@ Lines in the configuration file /etc/lil
+ \& # restricted
+ \& # alias = 1
+ \& # optional
+-\& initrd = /boot/initrd.img\-3.17\-trunk\-686
++\& initrd = /boot/initramfs\-3.17\-trunk\-686.img
+ \&
+ \& image = /boot/vmlinuz\-3.14\-trunk\-686
+ \& label = "Linux Old"
+@@ -150,7 +150,7 @@ Lines in the configuration file /etc/lil
+ \& # restricted
+ \& # alias = 2
+ \& # optional
+-\& initrd = /boot/initrd.img\-3.14\-trunk\-686
++\& initrd = /boot/initramfs\-3.14\-trunk\-686.img
+ .Ve
+ .SH "COPYRIGHT and LICENSE"
+ .IX Header "COPYRIGHT and LICENSE"
+--- lilo-24.2/man/lilo.conf.5 2013-06-07 14:17:39.000000000 -0500
++++ lilo-24.2/man/lilo.conf.5 2020-07-11 00:44:59.650132443 -0500
+@@ -47,12 +47,12 @@ menu-title=" John's Computer "
+ ### bootable kernel images ###
+ image=/boot/vmlinuz-2.6.29-1-i386
+ label=try
+- initrd=/boot/initrd.img-2.6.29-1-i386
++ initrd=/boot/initramfs-2.6.29-1-i386.img
+ image=/boot/vmlinuz-2.4.33-1-i386
+ label=2.4.33
+ image=/tamu/vmlinuz
+ label=tamu
+- initrd=/tamu/initrd.img
++ initrd=/tamu/initramfs.img
+ root=/dev/hdb2
+ vga=ask
+ #
diff --git a/user/lilo/lilo.conf.template b/user/lilo/lilo.conf.template
new file mode 100644
index 000000000..527ecf364
--- /dev/null
+++ b/user/lilo/lilo.conf.template
@@ -0,0 +1,23 @@
+# /etc/lilo/lilo.conf
+
+### LILO global section ###
+
+# Good assumptions for a modern (post-1998) system
+compact
+large-memory
+lba32
+
+# Menu configuration
+install = bmp
+bitmap = /boot/lilo/gfx/tuxlogo.bmp
+
+# Boot the first entry automatically in 10 seconds
+prompt
+timeout = 100
+
+# These will be configured automatically by liloconfig(8)
+boot = ""
+root = ""
+
+### LILO per-image section ###
+
diff --git a/user/lilo/lilo.easy-boot b/user/lilo/lilo.easy-boot
new file mode 100644
index 000000000..0f5a802a2
--- /dev/null
+++ b/user/lilo/lilo.easy-boot
@@ -0,0 +1,93 @@
+#!/bin/sh -e
+conf=/etc/lilo/lilo.conf
+
+# Check whether LILO is installed
+# This function is from /usr/sbin/mkboot from debianutils, with copyright:
+#
+# Debian GNU/Linux
+# Copyright 1996-1997 Guy Maor <maor@debian.org>
+#
+# Modified for Gentoo for use with the lilo ebuild by:
+# Martin Schlemmer <azarah@gentoo.org> (16 Mar 2003)
+#
+# Modified for Adélie for use with the lilo APKBUILD by:
+# Max Rees <maxcrees@me.com> (19 Mar 2020)
+lilocheck() {
+ if ! [ -e "$conf" ]; then
+ cat >&2 <<-EOF
+ *
+ * Could not find '$conf'!
+ *
+ EOF
+ exit 1
+ fi
+
+ if grep -q "^[[:space:]]*password[[:space:]]*=[[:space:]]*\"\"" \
+ "$conf"; then
+ cat >&2 <<-EOF
+ *
+ * You have requested interactive LILO password setup.
+ * Run "lilo -p" by hand.
+ *
+ EOF
+ return 1
+ fi
+
+ bootpart="$(sed -n "s:^boot[ ]*=[ ]*\(.*\)[ ]*:\1:p" "$conf")"
+ if ! [ -b "$bootpart" ]; then
+ cat >&2 <<-EOF
+ *
+ * Could not find '$bootpart'!
+ *
+ EOF
+ exit 1
+ fi
+
+ if ! dd if="$bootpart" ibs=16 count=1 2>/dev/null | grep -q LILO; then
+ cat >&2 <<-EOF
+ *
+ * No LILO signature found on '$bootpart'.
+ * You must run 'lilo' yourself.
+ *
+ EOF
+ return 1
+ fi
+}
+
+if ! [ -e /etc/fstab ]; then
+ cat >&2 <<-EOF
+ *
+ * You are missing an /etc/fstab file, so liloconfig
+ * cannot determine the root filesystem. Skipping
+ * automatic configuration.
+ *
+ EOF
+ exit 0
+fi
+
+if [ -e "$conf" ] && [ "$conf" -nt "$conf.template" ]; then
+ cat >&2 <<-EOF
+ *
+ * You appear to have manually edited '$conf'.
+ * LILO configuration will not be automatically regenerated.
+ *
+ EOF
+ exit 0
+fi
+
+cat >&2 <<-EOF
+*
+* Running liloconfig...
+*
+EOF
+liloconfig -f "$conf"
+touch -r "$conf.template" "$conf"
+
+if lilocheck; then
+ cat >&2 <<-EOF
+ *
+ * Running lilo...
+ *
+ EOF
+ lilo -C "$conf"
+fi
diff --git a/user/lilo/musl.patch b/user/lilo/musl.patch
new file mode 100644
index 000000000..5b95e717f
--- /dev/null
+++ b/user/lilo/musl.patch
@@ -0,0 +1,81 @@
+Regarding O_NOACCESS:
+
+ > Using a value of 3 as the argument to open is a traditional Linux
+ > extension for getting an fd that's usable only for ioctls. That's
+ > reasonable. What's not reasonable or correct is using O_ACCMODE as a
+ > way to get a 3.
+
+https://www.openwall.com/lists/musl/2014/07/01/12
+
+--- lilo-24.2/src/common.h 2015-11-21 17:50:23.000000000 -0600
++++ lilo-24.2/src/common.h 2020-03-19 07:32:52.429998369 -0500
+@@ -26,12 +26,8 @@
+ # define PAGE_SIZE 4096U
+ #endif
+
+-#ifdef O_ACCMODE
+-# define O_NOACCESS O_ACCMODE
+-#else
+ /* open a file for "no access" */
+-# define O_NOACCESS 3
+-#endif
++#define O_NOACCESS 3
+
+ /* special for LILO, bypass the actual open in dev_open( , ,-1) */
+ #define O_BYPASS -1
+--- lilo-24.2/src/config.h 2011-06-22 02:13:58.000000000 -0500
++++ lilo-24.2/src/config.h 2020-03-19 04:43:53.769503552 -0500
+@@ -20,10 +20,6 @@
+ #endif
+
+ #if !__MSDOS__
+-#if !defined(__GLIBC__) || (__GLIBC__ < 2) || \
+- !defined(__GLIBC_MINOR__) || (__GLIBC_MINOR__ < 1)
+-# warning "glibc version 2.1 or later is recommended"
+-#endif /* !__MSDOS__ */
+
+ #define TMP_DEV "/tmp/dev.%d" /* temporary devices are created here */
+ #define MAX_TMP_DEV 50 /* highest temp. device number */
+--- lilo-24.2/src/lilo.c 2015-11-21 17:51:24.000000000 -0600
++++ lilo-24.2/src/lilo.c 2020-03-19 04:34:43.899511387 -0500
+@@ -182,7 +182,6 @@ extern int has_partitions_beta(dev_t dev
+ printf("Without");
+ #endif
+ printf(" device-mapper\n");
+- printf("\nglibc version %d.%d\n", __GLIBC__, __GLIBC_MINOR__);
+ printf("Kernel Headers included from %d.%d.%d\n",
+ LINUX_VERSION_CODE>>16,
+ LINUX_VERSION_CODE>>8 & 255,
+--- lilo-24.2/src/partition.c 2015-11-21 17:50:20.000000000 -0600
++++ lilo-24.2/src/partition.c 2020-03-19 04:41:05.339505952 -0500
+@@ -31,30 +31,6 @@
+ #include "boot.h"
+ #include "loader.h"
+
+-#if __GLIBC__ < 2 || __GLIBC_MINOR__ < 1
+-#if defined(_syscall5) && defined(__NR__llseek)
+-
+- _syscall5(int, _llseek, unsigned int, fd, unsigned int, hi,
+- unsigned int, lo, lloff_t *, res, unsigned int, wh);
+- int _llseek(unsigned int fd, unsigned int offset_high,
+- unsigned int offset_low, lloff_t * result, unsigned int whence);
+-
+- lloff_t lseek64(unsigned int fd, lloff_t offs, unsigned int whence)
+- { lloff_t res;
+- return _llseek(fd, offs>>32, offs, &res, whence) < 0 ?
+- (lloff_t)(-1) : res;
+- }
+-
+-#else
+-/* last ditch attempt on small disks, and very old systems */
+-# warning "*****************************************"
+-# warning "***** no 64 bit lseek is available ******"
+-# warning "***** using 23 bit sector addresses *****"
+-# warning "*****************************************"
+-# define lseek64 lseek
+-#endif
+-#endif
+-
+ static
+ int anywhere(unsigned char *buf, char *str)
+ {
diff --git a/user/lilo/partuuid.patch b/user/lilo/partuuid.patch
new file mode 100644
index 000000000..a1a4fcc10
--- /dev/null
+++ b/user/lilo/partuuid.patch
@@ -0,0 +1,65 @@
+Enable usage of PARTUUID if /etc/fstab uses it for the root filesystem.
+While we're here, make the generated labels for the kernel choices more
+descriptive as well.
+
+--- lilo-24.2/src/bsect.c 2011-06-22 02:09:44.000000000 -0500
++++ lilo-24.2/src/bsect.c 2020-03-19 07:59:59.819990912 -0500
+@@ -1098,6 +1098,9 @@ if (image) { /* long section specific to
+ else if (strlen(root)>5 && !strncmp(root,"UUID=",5)) {
+ sprintf(strchr(options,0),"root=%s ", root);
+ }
++ else if (strlen(root)>9 && !strncmp(root,"PARTUUID=",9)) {
++ sprintf(strchr(options,0),"root=%s ", root);
++ }
+ else {
+ sprintf(strchr(options,0),"root=%x ",dev_number(root));
+ }
+--- lilo-24.2/scripts/liloconfig 2015-11-21 18:00:21.000000000 -0600
++++ lilo-24.2/scripts/liloconfig 2020-03-19 14:36:22.710002318 -0500
+@@ -217,11 +218,12 @@ sub convert_root_device {
+ $found = 0;
+ }
+ }
+- elsif ($rootpart =~ /^UUID/ or $rootpart =~ /^LABEL/) {
++ elsif ($rootpart =~ /^(PART)?UUID/ or $rootpart =~ /^LABEL/) {
+ $root_link = $rootpart;
+ $root_link =~ s{\"}{}g;
+ $root_link =~ s{^LABEL=}{/dev/disk/by-label/};
+ $root_link =~ s{^UUID=}{/dev/disk/by-uuid/};
++ $root_link =~ s{^PARTUUID=}{/dev/disk/by-partuuid/};
+
+ if (-l $root_link) {
+ $root_id = $rootpart;
+@@ -610,6 +610,7 @@ sub write_image_config {
+ my $initrd2;
+ my $nr;
+ my $nr2;
++ my $label;
+
+ # append to new lilo.conf
+ open(MYFH_NEW, ">> $liloconfnew") or die "Cannot open file: $!";
+@@ -627,18 +628,16 @@ sub write_image_config {
+ $initrd2 = $initrd;
+ $initrd2 =~ s/\.img//;
+ $nr2 = $nr + 1;
++ $label = $image;
++ $label =~ s@/boot/vmlinuz-@@;
++ $label =~ s/-[^-]*$//;
++ $label = substr $label, 0, 15;
+
+ print MYFH_NEW 'image = ' . $image . "\n";
+ if($opt_v) { print 'image = ' . $image . "\n"; }
+
+- if ($nr == 0) {
+- print MYFH_NEW "\t" . 'label = "Linux"' . "\n";
+- if($opt_v) { print "\t" . 'label = "Linux"' . "\n"; }
+- }
+- elsif ($nr == 1) {
+- print MYFH_NEW "\t" . 'label = "Linux Old"' . "\n";
+- if($opt_v) { print "\t" . 'label = "Linux Old"' . "\n"; }
+- }
++ print MYFH_NEW "\t" . "label = \"$label\"" . "\n";
++ if($opt_v) { print "\t" . "label = \"$label\"" . "\n"; }
+
+ print MYFH_NEW "\t" . 'read-only' . "\n";
+ if($opt_v) { print "\t" . 'read-only' . "\n"; }
diff --git a/user/links/APKBUILD b/user/links/APKBUILD
index b3ade3cb2..b942c40b0 100644
--- a/user/links/APKBUILD
+++ b/user/links/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=links
-pkgver=2.19
+pkgver=2.20.2
pkgrel=0
pkgdesc="Text Web browser, similar to Lynx"
url="http://links.twibright.com/"
@@ -28,4 +28,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="8716cea6feb5a02b59d7e2dd5bfd0af9b2ac2a4427c0f98a3c8a8eaabca31e7a96c16888c0de19976749485b3cdbf75cbff88a37cd3b58700c1f090acec328ea links-2.19.tar.bz2"
+sha512sums="82be459856f49f45c9b824589b78c0f58b039b09802e077420053e9449bc1ded272bb8ad57ea10522d8b3305ceb212a5dd08b01052538cd5b4f0447d0ba02152 links-2.20.2.tar.bz2"
diff --git a/user/linux-firmware/APKBUILD b/user/linux-firmware/APKBUILD
new file mode 100644
index 000000000..e0b9c54d2
--- /dev/null
+++ b/user/linux-firmware/APKBUILD
@@ -0,0 +1,77 @@
+# Contributor: Ariadne Conill <nenolod@dereferenced.org>
+# Contributor: Oliver Smith <ollieparanoid@bitmessage.ch>
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=linux-firmware
+pkgver=20241210
+pkgrel=2
+pkgdesc="firmware files for linux"
+url="http://git.kernel.org/?p=linux/kernel/git/firmware/linux-firmware.git;a=summary"
+arch="all"
+options="!strip !check !dbg"
+license="custom:multiple"
+depends=""
+makedepends="rdfind"
+source="https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/snapshot/$pkgname-$pkgver.tar.gz"
+# Put /lib/firmware/* folders in subpackages
+_folders="3com acenic adaptec advansys airoha amd amd-ucode amdgpu amdnpu
+amdtee amlogic amphion ar3k arm ath10k ath11k ath12k ath6k ath9k_htc atmel
+atusb av7110 bnx2 bnx2x brcm cadence cavium cirrus cis cnm cpia2 cxgb3 cxgb4
+cypress dabusb dpaa2 dsp56k e100 edgeport emi26 emi62 ene-ub6250 ess go7007
+i915 imx inside-secure intel isci ixp4xx kaweth keyspan keyspan_pda korg
+libertas liquidio matrox mediatek mellanox meson microchip moxa mrvl mwl8k
+mwlwifi myricom netronome nvidia nxp ositech powervr qca qcom qed qlogic r128
+radeon realtek rockchip rsi rtl_bt rtl_nic rtlwifi rtw88 rtw89 sb16 slicoss sun
+sxg tehuti ti ti-connectivity ti-keystone tigon ttusb-budget ueagle-atm vicam
+vxge wfx xe yam yamaha"
+subpackages="$pkgname-other"
+depends="linux-firmware-other"
+for i in $_folders; do
+ subpackages="$pkgname-$i:folder $subpackages"
+ depends="$pkgname-$i $depends"
+done
+
+package() {
+ make DESTDIR="${pkgdir}" FIRMWAREDIR="/lib/firmware" install-zst
+ make DESTDIR="${pkgdir}" FIRMWAREDIR="/lib/firmware" dedup
+ rm -f "${pkgdir}/usr/lib/firmware/{Makefile,README,configure,GPL-3}"
+}
+
+folder() {
+ folder=${subpkgname##linux-firmware-}
+ pkgdesc="firmware files for linux ($folder folder)"
+ depends=""
+
+ # Move /lib/firmware/$folder (case insensitive)
+ mkdir -p "$subpkgdir/lib/firmware"
+ mv "$(find "$pkgdir/lib/firmware" -iname "$folder" -type d)" \
+ "$subpkgdir/lib/firmware"
+
+ # Move related symlinks so they do not get in -other
+ find "$pkgdir/lib/firmware" -maxdepth 1 -ilname "$folder"/\* \
+ -exec mv -- '{}' "$subpkgdir/lib/firmware" \;
+}
+
+other() {
+ # Requires subfolders to be split in subpackages
+ leftover=""
+ for i in "$pkgdir"/lib/firmware/*; do
+ [ -d "$i" ] && leftover="$leftover $(basename $i)"
+ done
+ if [ "$leftover" != "" ]; then
+ error "Not all subfolders have been moved to subpackages!"
+ error "Fix this by adjusting _folders as follows:"
+ fixed="$(echo $_folders$leftover | tr " " "\n" | tr '[A-Z]' '[a-z]' | sort)"
+ echo "_folders=\"$(printf "$fixed" | tr "\n" " ")\"" | fold -s
+ return 1
+ fi
+
+ # Move /lib/firmware (which doesn't have subfolders now)
+ pkgdesc="firmware files for linux (uncategorized)"
+ depends=""
+ install="$subpkgname.post-upgrade"
+ mkdir -p "$subpkgdir"/
+ mv "$pkgdir"/lib "$subpkgdir"/
+}
+
+sha512sums="75e2d7383e209c2f787a4369e171e2d9bd16dc9cc1cd74920874d1dc56a950df95981be942fd7aa95620ef18da3e50d0fd95886c1497c91c4e54f564fe381fc3 linux-firmware-20241210.tar.gz"
diff --git a/user/linux-firmware/linux-firmware-other.post-upgrade b/user/linux-firmware/linux-firmware-other.post-upgrade
new file mode 100644
index 000000000..e821b1015
--- /dev/null
+++ b/user/linux-firmware/linux-firmware-other.post-upgrade
@@ -0,0 +1,16 @@
+#!/bin/sh -e
+
+vnew="$1"
+vold="$2"
+
+if test `apk version -t $vnew 20241210-r0` = '>' && test `apk version -t $vold 20241210-r0` != '>' ; then
+ echo
+ echo '***'
+ echo 'The linux-firmware package was repartitioned. Due to this, firmware'
+ echo 'files from go7007, mediatek, ath10k, qcom and ti folders might have'
+ echo 'been removed. If your hardware needs these files, please install'
+ echo 'relevant linux-firmware subpackage.'
+ echo 'If unsure, install the whole linux-firmware package.'
+ echo '***'
+ echo
+fi
diff --git a/user/listres/APKBUILD b/user/listres/APKBUILD
index 987002899..908115f1e 100644
--- a/user/listres/APKBUILD
+++ b/user/listres/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=listres
-pkgver=1.0.4
+pkgver=1.0.6
pkgrel=0
pkgdesc="Tool to list Xt resources"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="libxaw-dev libxmu-dev libxt-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/listres-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="925bceab6ff96fcf91f58ba2f858905d6e2eff7074ba29cfc02def7c19fb493545837884f1070dc004422451f749cd459000c01e8c9bb51a7cce7f7ab4067b8a listres-1.0.4.tar.bz2"
+sha512sums="182919c8ba5569af3dbf59421de2dfd3e755b3bd2d6d548c6d2664c20b73f937e64dc73811821c19af93fffbc2d5c8d2db8d9cdd9bf1b93b0f29cb683e13ebe7 listres-1.0.6.tar.xz"
diff --git a/user/live-media/APKBUILD b/user/live-media/APKBUILD
index 2c0272784..bb7054d24 100644
--- a/user/live-media/APKBUILD
+++ b/user/live-media/APKBUILD
@@ -1,36 +1,34 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=live-media
-pkgver=2018.11.26
+pkgver=2020.07.31
pkgrel=0
pkgdesc="Libraries for multimedia streaming"
url="http://live555.com/liveMedia"
arch="all"
options="!check" # No test suite.
license="LGPL-3.0+"
+depends=""
+makedepends="openssl-dev"
subpackages="$pkgname-dev $pkgname-utils"
-source="http://live555.com/liveMedia/public/live.$pkgver.tar.gz"
+source="https://download.videolan.org/contrib/live555/live.$pkgver.tar.gz"
builddir="$srcdir"/live
prepare() {
- cd "$builddir"
+ default_prepare
sed -e "/^COMPILE_OPTS/s/$/ $CFLAGS -fPIC -DPIC -DRTSPCLIENT_SYNCHRONOUS_INTERFACE/" \
-i config.linux-with-shared-libraries
}
build() {
- cd "$builddir"
./genMakefiles linux-with-shared-libraries
make C_COMPILER="${CC:-gcc}" CPLUSPLUS_COMPILER="${CXX:-g++}"
}
package() {
- local testprog f so
- cd "$builddir"
mkdir -p "$pkgdir"/usr/lib
for f in BasicUsageEnvironment UsageEnvironment liveMedia groupsock; do
mkdir -p "$pkgdir"/usr/include/$f
cp $f/include/*.h* "$pkgdir"/usr/include/$f
- cp $f/lib${f}.a "$pkgdir"/usr/lib || true
for so in $f/lib*.so.*; do
soname=$(scanelf -B --format "#F%S" $so)
cp $so "$pkgdir"/usr/lib/
@@ -53,4 +51,4 @@ utils() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}
-sha512sums="fa0fa88986d526314d53d54b3ee128a5305e5c81aacd40b22a79ee73bbd2476e406a8b485ef46e5d970902afea2417e2e8cccbce637b74725087e077c5528fd4 live.2018.11.26.tar.gz"
+sha512sums="e23f6da5b0b1767c959bc3591276f8e0678732d4f197b1369aea2963ef2bf1e37a9ac714deded783819c1d5b5f9319cff0ed15f349908d88986649dc16e2da15 live.2020.07.31.tar.gz"
diff --git a/user/livecd-support/APKBUILD b/user/livecd-support/APKBUILD
new file mode 100644
index 000000000..afd4554ec
--- /dev/null
+++ b/user/livecd-support/APKBUILD
@@ -0,0 +1,83 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=livecd-support
+pkgver=1.0
+pkgrel=1
+pkgdesc="Support files for booting Adélie live media"
+url="https://www.adelielinux.org/"
+arch="noarch"
+options="!check" # Metapackage
+license="NCSA"
+subpackages="$pkgname-kde $pkgname-lxqt $pkgname-mate $pkgname-xfce
+ $pkgname-horizon"
+depends=""
+source="kde.sddm.conf
+ lxqt.sddm.conf
+ mate.sddm.conf
+ xfce.sddm.conf
+ horizon.desktop
+ horizon-ui
+ dhcpcd-suid.start
+ allow-nullpw.start
+ allow-nullpw.stop
+ set-time.start
+ live.sudoersd
+ "
+
+package() {
+ mkdir -p $pkgdir
+}
+
+horizon() {
+ pkgdesc="Add the ability to install Adélie from live media"
+ depends="dhcpcd horizon-qt5 horizon netsurf partitionmanager sudo xterm"
+
+ install -D -m755 "$srcdir"/horizon-ui "$subpkgdir"/usr/sbin/horizon-ui
+ install -D -m644 "$srcdir"/live.sudoersd "$subpkgdir"/etc/sudoers.d/live-pm
+
+ for script in dhcpcd-suid.start allow-nullpw.start allow-nullpw.stop \
+ set-time.start; do
+ install -D -m755 "$srcdir"/$script \
+ "$subpkgdir"/etc/local.d/$script
+ done
+
+ install -D -m644 "$srcdir"/horizon.desktop \
+ "$subpkgdir"/usr/share/applications/horizon.desktop
+}
+
+
+kde() {
+ pkgdesc="$pkgdesc (KDE spin)"
+ depends="livecd-support adelie-kde-theme kde sddm x11"
+ install -D -m644 "$srcdir"/kde.sddm.conf "$subpkgdir"/etc/sddm.conf.d/kde.conf
+}
+
+lxqt() {
+ pkgdesc="$pkgdesc (LXQt spin)"
+ depends="adelie-lxqt-theme livecd-support lxqt-desktop sddm x11"
+ install -D -m644 "$srcdir"/lxqt.sddm.conf "$subpkgdir"/etc/sddm.conf.d/lxqt.conf
+}
+
+mate() {
+ pkgdesc="$pkgdesc (MATE spin)"
+ depends="livecd-support mate-complete sddm x11"
+ install -D -m644 "$srcdir"/mate.sddm.conf "$subpkgdir"/etc/sddm.conf.d/mate.conf
+}
+
+xfce() {
+ pkgdesc="$pkgdesc (XFCE spin)"
+ depends="livecd-support xfce-desktop sddm x11"
+ install -D -m644 "$srcdir"/xfce.sddm.conf "$subpkgdir"/etc/sddm.conf.d/xfce.conf
+}
+
+sha512sums="eddcc68917b4dc376bb9b7e7ed5e2c06379957c787c7152e654f31adb402f5811463bff69ce2a41a2cb87b0fa83a4aa3718b63d830eb9ee46b7d0d2058663d34 kde.sddm.conf
+9a9a61035c0a8c5ee84d235f319ca158216056221d03a0f5a3846982cb6110c569d7b4eadd2e24de66a75a428c18850e0393e20412e0edcfc8ad41c9d4783604 lxqt.sddm.conf
+603d2a5b1fdad0cb0abfefa8a4019c690ee4f5f9ac45057eeeac3bac3207e7871bdb32a564791fb99d965959b39a7de979d575db2694c2d1d88a4a16b68adb25 mate.sddm.conf
+a2cf327b4733432a992222ee162b9fcf613de3980bcf5ee2ae17615def69b9ad8c631675e9616dc6d5a718f5d855ea70c5d5b819c8471e868fbd112575869d64 xfce.sddm.conf
+741050465f75062c99fc4206d52d165682fe1757070f8ca8accfef3a6a9ca860d8dc5da0f14ff3f415db4a76a22bc0764a313779a3ce15bde746bdb7960568c0 horizon.desktop
+39ae77fbf34af95ba9b5c49d27cdf63472dccd4e453feb83fa7a58f127005dac1adc9898fb2de93c89cfaca6c305030fdd30ecbde8c029fea37dfdb50d4ff078 horizon-ui
+8d332a7d6aa0444b27f72cb66ca815395b69f647f2b46d9339f07833d2b020c27748508580d3f49c72b408781112aaaba32cf4dc8846ad781c23a457a7a36c6e dhcpcd-suid.start
+96c4763e971bbcd30c28d09ff9d8e80a1c1729c94f5b2f2187ba38cc5f455af8d6470d605c2d6c0a621614fc2616e10afa44faed0b6cd564ca769b63aaa1cf82 allow-nullpw.start
+b3b5de1ccbbc35d5c4a83daac9787837baa0186e413be58da2739d1e78cb7999e9b3c232448ea8e895a571025d91a81801882671b741be5dc678cba2100c8500 allow-nullpw.stop
+fec26d0ca5070b4a83460c032c3118ea4e059dd1f5b798c938d290ccbfe93e52721780172ed8b2d523ec3c5a88af3634308b34c1a4ee16586cbe0a2f4d8d0b27 set-time.start
+b5516103b0a0b9363bc174d78b0ce81bd72a4dd5ec57c3934808fd525e88ab9c90b22b100fa6f955a57322a57ce19786eae849d6fea4bc71af6427bc7f8f508e live.sudoersd"
diff --git a/user/livecd-support/allow-nullpw.start b/user/livecd-support/allow-nullpw.start
new file mode 100644
index 000000000..f10af795e
--- /dev/null
+++ b/user/livecd-support/allow-nullpw.start
@@ -0,0 +1,6 @@
+#!/bin/sh
+# Welcome to Adélie Linux.
+# This script changes local PAM configuration to allow null passwords.
+# This way, the `live` user does not need a password.
+
+sed -i 's/pam_unix.so$/pam_unix.so nullok_secure/' /etc/pam.d/base-auth
diff --git a/user/livecd-support/allow-nullpw.stop b/user/livecd-support/allow-nullpw.stop
new file mode 100644
index 000000000..fa6f05320
--- /dev/null
+++ b/user/livecd-support/allow-nullpw.stop
@@ -0,0 +1,5 @@
+#!/bin/sh
+# Welcome to Adélie Linux.
+# This script undoes the null-password change when the system goes down.
+
+sed -i 's/pam_unix.so nullok_secure$/pam_unix.so/' /etc/pam.d/base-auth
diff --git a/user/livecd-support/dhcpcd-suid.start b/user/livecd-support/dhcpcd-suid.start
new file mode 100644
index 000000000..6fb3cee11
--- /dev/null
+++ b/user/livecd-support/dhcpcd-suid.start
@@ -0,0 +1,5 @@
+#!/bin/sh
+# Welcome to Adélie Linux.
+# This script ensures dhcpcd can be executed by the live user.
+
+chmod 4755 /sbin/dhcpcd
diff --git a/user/livecd-support/horizon-ui b/user/livecd-support/horizon-ui
new file mode 100644
index 000000000..0fa8e6ae3
--- /dev/null
+++ b/user/livecd-support/horizon-ui
@@ -0,0 +1,10 @@
+#!/bin/sh
+#
+# Welcome to Adélie Linux.
+# This script allows you to run Horizon as the live user.
+#
+
+horizon-qt5
+if [ $? -eq 0 ]; then
+ PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin horizon-run-qt5
+fi
diff --git a/user/livecd-support/horizon.desktop b/user/livecd-support/horizon.desktop
new file mode 100644
index 000000000..fd1c3d103
--- /dev/null
+++ b/user/livecd-support/horizon.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Version=1.1
+Name=System Installation
+Comment=Install Adélie Linux to your computer
+Icon=system-software-install
+Exec=/usr/sbin/horizon-ui
+Categories=System;
diff --git a/user/livecd-support/kde.sddm.conf b/user/livecd-support/kde.sddm.conf
new file mode 100644
index 000000000..d8b190abe
--- /dev/null
+++ b/user/livecd-support/kde.sddm.conf
@@ -0,0 +1,3 @@
+[Autologin]
+User=live
+Session=plasma.desktop
diff --git a/user/livecd-support/live.sudoersd b/user/livecd-support/live.sudoersd
new file mode 100644
index 000000000..e2ebb25d6
--- /dev/null
+++ b/user/livecd-support/live.sudoersd
@@ -0,0 +1,3 @@
+# Welcome to Adélie Linux.
+# This file allows the live user to run partitionmanager.
+live ALL=(ALL:ALL) NOPASSWD: /usr/bin/partitionmanager
diff --git a/user/livecd-support/lxqt.sddm.conf b/user/livecd-support/lxqt.sddm.conf
new file mode 100644
index 000000000..797782fed
--- /dev/null
+++ b/user/livecd-support/lxqt.sddm.conf
@@ -0,0 +1,3 @@
+[Autologin]
+User=live
+Session=lxqt.desktop
diff --git a/user/livecd-support/mate.sddm.conf b/user/livecd-support/mate.sddm.conf
new file mode 100644
index 000000000..56e53c6fb
--- /dev/null
+++ b/user/livecd-support/mate.sddm.conf
@@ -0,0 +1,3 @@
+[Autologin]
+User=live
+Session=mate.desktop
diff --git a/user/livecd-support/set-time.start b/user/livecd-support/set-time.start
new file mode 100644
index 000000000..a5c6cb79a
--- /dev/null
+++ b/user/livecd-support/set-time.start
@@ -0,0 +1,5 @@
+#!/bin/sh
+# Welcome to Adélie Linux.
+# This script ensures the system clock is set correctly if at all possible.
+
+nm-online -t 10 && chronyd -q
diff --git a/user/livecd-support/xfce.sddm.conf b/user/livecd-support/xfce.sddm.conf
new file mode 100644
index 000000000..3b6e5446c
--- /dev/null
+++ b/user/livecd-support/xfce.sddm.conf
@@ -0,0 +1,3 @@
+[Autologin]
+User=live
+Session=xfce.desktop
diff --git a/user/lksctp-tools/APKBUILD b/user/lksctp-tools/APKBUILD
index 666515b81..a04e54192 100644
--- a/user/lksctp-tools/APKBUILD
+++ b/user/lksctp-tools/APKBUILD
@@ -1,14 +1,14 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=lksctp-tools
-pkgver=1.0.18
+pkgver=1.0.19
pkgrel=0
pkgdesc="Tools for using SCTP on Linux"
url="http://lksctp.sourceforge.net/"
arch="all"
license="GPL-2.0-only AND LGPL-2.1-only"
depends=""
-makedepends="autoconf automake"
+makedepends="autoconf automake libtool"
subpackages="$pkgname-dev $pkgname-doc"
source="$pkgname-$pkgver.tar.gz::https://github.com/sctp/$pkgname/archive/v$pkgver.tar.gz"
@@ -32,4 +32,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="1d7275fadc0f2270865307cff2645810e9bab6c1a97e70be6115cace737334dbdd87a072fae25b89dd9cac2e05974556542de70ea8ef70b9e4f14873c82a5055 lksctp-tools-1.0.18.tar.gz"
+sha512sums="e56a4b00206acfb88cab1b8fc7424a1a4996f67ef925c29a97395c44c57f2cbcb3fc36ec2648f5e5a5ce29d8d61ee1f7a5e7869e6bbd68bff85590b6ec521883 lksctp-tools-1.0.19.tar.gz"
diff --git a/user/llvm18/APKBUILD b/user/llvm18/APKBUILD
new file mode 100644
index 000000000..bc5bb0c83
--- /dev/null
+++ b/user/llvm18/APKBUILD
@@ -0,0 +1,328 @@
+# Contributor: Travis Tilley <ttilley@gmail.com>
+# Contributor: Mitch Tishmack <mitch.tishmack@gmail.com>
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+_pkgname=llvm
+pkgver=18.1.8
+_majorver=${pkgver%%.*}
+pkgname=$_pkgname$_majorver
+pkgrel=1
+pkgdesc="Low Level Virtual Machine compiler system, version $_majorver"
+url="https://llvm.org/"
+arch="all"
+options="!checkroot !dbg"
+license="NCSA AND (Apache-2.0 WITH LLVM-exception)"
+depends=""
+depends_dev="$pkgname=$pkgver-r$pkgrel libexecinfo-dev libxml2-dev"
+checkdepends="cmd:which"
+makedepends="binutils-dev chelf chrpath cmake file libexecinfo-dev libffi-dev
+ libxml2-dev python3 zlib-dev"
+subpackages="$pkgname-static $pkgname-libs $pkgname-dev
+ $pkgname-test-utils:_test_utils"
+source="https://github.com/llvm/llvm-project/releases/download/llvmorg-$pkgver/llvm-project-$pkgver.src.tar.xz
+ llvm-fix-build-with-musl-libc.patch
+ disable-FileSystemTest.CreateDir-perms-assert.patch
+ dyld-elf-ppc32.patch
+ dyld-elf-ppc32-2.patch
+ hexagon.patch
+ i586-json-test.patch
+ m68k-endianness.patch
+ macho32.patch
+ musl-ppc64-elfv2.patch
+ ppc-gcc-bug.patch
+ python3-test.patch
+ roundeven.patch
+ "
+builddir="$srcdir/$_pkgname-project-$pkgver.src/llvm"
+
+# ARM has few failures in test suite that we don't care about currently and
+# also it takes forever to run them on the builder.
+case "$CARCH" in
+ arm*) options="$options !check";;
+esac
+
+# Whether is this package the default (latest) LLVM version.
+_default_llvm="yes"
+
+if [ "$_default_llvm" = yes ]; then
+ provides="llvm=$pkgver-r$pkgrel"
+ replaces="llvm"
+fi
+
+# NOTE: It seems that there's no (sane) way how to change includedir, sharedir
+# etc. separately, just the CMAKE_INSTALL_PREFIX. Standard CMake variables and
+# even LLVM-specific variables, that are related to these paths, actually
+# don't work (in llvm 3.7).
+#
+# When building a software that depends on LLVM, utility llvm-config should be
+# used to discover where is LLVM installed. It provides options to print
+# path of bindir, includedir, and libdir separately, but in its source, all
+# these paths are actually hard-coded against INSTALL_PREFIX. We can patch it
+# and move paths manually, but I'm really not sure what it may break...
+#
+# Also note that we should *not* add version suffix to files in llvm bindir!
+# It breaks build system of some software that depends on LLVM, because they
+# don't expect these files to have a sufix.
+#
+# So, we install all the LLVM files into /usr/lib/llvm$_majorver.
+# BTW, Fedora and Debian do the same thing.
+#
+_prefix="usr/lib/llvm$_majorver"
+
+prepare() {
+ default_prepare
+
+ # https://bugs.llvm.org//show_bug.cgi?id=31870
+ rm -v test/tools/llvm-symbolizer/print_context.c
+
+ case $CARCH in
+ pmmx|x86|ppc|armhf|armv7)
+ # Appears to not work when building 32-bit code on 64-bit host.
+ rm -v test/tools/llvm-size/radix.test;;
+ esac
+
+ case $CARCH in
+ ppc64|ppc|mips64|mips)
+ # Appears to be a endianness issue.
+ for _broken in eh_frame linker-llvm-union-fwd-decl; do
+ rm -v test/tools/dsymutil/X86/$_broken.test;
+ done
+ esac
+
+ case $CTARGET_ARCH in
+ pmmx)
+ # Broken by fast precision method.
+ rm -v test/tools/llvm-cov/mcdc-export-json.test;
+ rm -v test/tools/llvm-xray/X86/graph-diff-simple.txt;
+ ;;
+ ppc)
+ # RISC-V issues are uninvestigated as of yet. #1233
+ rm -v test/CodeGen/RISCV/rvv/combine-store-extract-crash.ll
+ rm -v test/CodeGen/RISCV/xtheadmempair.ll
+ esac
+
+ #1053
+ rm -vfr \
+ test/tools/UpdateTestChecks \
+ test/ExecutionEngine/MCJIT/load-object-a.ll \
+ ;
+
+ #1250
+ rm -v \
+ test/tools/dsymutil/ARM/DWARFLinkerParallel/accel-imported-declarations.test \
+ test/tools/dsymutil/X86/DWARFLinkerParallel/odr-member-functions.cpp \
+ test/tools/dsymutil/X86/DWARFLinkerParallel/odr-parents.test \
+ test/tools/dsymutil/X86/DWARFLinkerParallel/odr-predictable-output2.test \
+ test/tools/dsymutil/X86/DWARFLinkerParallel/odr-string.test \
+ test/tools/dsymutil/X86/DWARFLinkerParallel/odr-uniquing.cpp
+}
+
+build() {
+ # Auto-detect it by guessing either.
+ ffi_include_dir="$(pkg-config --cflags-only-I libffi | sed 's|^-I||g')"
+
+ arch_config=""
+ case $CTARGET_ARCH in
+ aarch64)
+ # libexecinfo does not work on AArch64 because the GCC port
+ # does not implement RETURN_ADDR_RTX with frame > 0.
+ arch_config="-DLLVM_ENABLE_BACKTRACES=OFF";;
+ pmmx)
+ # The standard precision breaks more than it fixes; there are
+ # 12 failures in standard mode and only (different) 3 in fast.
+ export CXXFLAGS="$CXXFLAGS -fexcess-precision=fast";;
+ esac
+
+ case $CTARGET_ARCH in
+ pmmx|x86|ppc|armhf|armv7)
+ # 32-bit 2GB memory ceiling
+ # 'ld' chokes on 2GB .debug_info, 'scanelf' on binary size
+ # see also: #1251, #1253, abuild#20
+ export CXXFLAGS="$CXXFLAGS -ggdb1";;
+ esac
+
+ cmake -G "Unix Makefiles" -Wno-dev \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_INSTALL_PREFIX=/$_prefix \
+ -DCMAKE_VERBOSE_MAKEFILE=NO \
+ -DFFI_INCLUDE_DIR="$ffi_include_dir" \
+ -DLLVM_BINUTILS_INCDIR=/usr/include \
+ -DLLVM_BUILD_DOCS=OFF \
+ -DLLVM_BUILD_EXAMPLES=OFF \
+ -DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON \
+ -DLLVM_BUILD_LLVM_DYLIB=ON \
+ -DLLVM_BUILD_TESTS=ON \
+ -DLLVM_DEFAULT_TARGET_TRIPLE="$CBUILD" \
+ -DLLVM_ENABLE_ASSERTIONS=OFF \
+ -DLLVM_ENABLE_FFI=ON \
+ -DLLVM_ENABLE_LIBCXX=OFF \
+ -DLLVM_ENABLE_PIC=ON \
+ -DLLVM_ENABLE_RTTI=ON \
+ -DLLVM_ENABLE_SPHINX=OFF \
+ -DLLVM_ENABLE_TERMINFO=ON \
+ -DLLVM_ENABLE_ZLIB=ON \
+ -DLLVM_HOST_TRIPLE="$CHOST" \
+ -DLLVM_INCLUDE_BENCHMARKS=OFF \
+ -DLLVM_INCLUDE_EXAMPLES=OFF \
+ -DLLVM_INSTALL_GTEST=ON \
+ -DLLVM_INSTALL_UTILS=ON \
+ -DLLVM_LINK_LLVM_DYLIB=ON \
+ -DLLVM_TARGETS_TO_BUILD='AArch64;AMDGPU;ARM;BPF;Hexagon;Lanai;Mips;MSP430;PowerPC;RISCV;Sparc;SystemZ;WebAssembly;X86;XCore' \
+ -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='M68k' \
+ $arch_config \
+ -Bbuild .
+
+ make -C build llvm-tblgen
+ make -C build
+
+ python3 utils/lit/setup.py build
+
+ # Thread 3 requires a lot of stack space to LTO when targeting ARM.
+ # Note that this occurs even when crossing (on a ppc64 host).
+ chelf -s 1048576 build/bin/llvm-lto2
+ # Needed for parallel-linker support (pthread stack size).
+ chelf -s 1048576 build/bin/dsymutil
+ chelf -s 1048576 build/bin/llvm-dwarfutil
+}
+
+check() {
+ make -C build check-llvm
+}
+
+package() {
+ make DESTDIR="$pkgdir" -C build install
+
+ cd "$pkgdir"/$_prefix
+
+ # Remove RPATHs.
+ file lib/*.so bin/* \
+ | awk -F: '$2~/ELF/{print $1}' \
+ | xargs -r chrpath -d
+
+ # Symlink files from /usr/lib/llvm*/bin to /usr/bin.
+ mkdir -p "$pkgdir"/usr/bin
+ for full_name in bin/*; do
+ bin_name=${full_name##*/}
+ # If this package provides=llvm (i.e. it's the default/latest
+ # llvm package), omit version infix/suffix.
+ if [ "$_default_llvm" = yes ]; then
+ link_name=$bin_name
+ # ..otherwise, add version infix/suffix to the executable name.
+ else case "$bin_name" in
+ llvm-*) link_name="llvm$_majorver-${bin_name#llvm-}";;
+ *) link_name="$bin_name$_majorver";;
+ esac
+ fi
+ case "$name" in
+ FileCheck | obj2yaml | yaml2obj) continue;;
+ esac
+ ln -s ../lib/llvm$_majorver/bin/$bin_name "$pkgdir"/usr/bin/$link_name
+ done
+
+ # Move /usr/lib/$pkgname/include/ into /usr/include/$pkgname/
+ # and symlink it back.
+ mkdir -p "$pkgdir"/usr/include/$pkgname
+ mv include/* "$pkgdir"/usr/include/$pkgname/
+ rmdir include
+ ln -s ../../include/$pkgname include
+
+ ln -s "$pkgdir"/usr/lib/cmake/llvm ../$pkgname/lib/cmake/llvm
+
+ # Thread 3 requires a lot of stack space to LTO when targeting ARM.
+ # Note that this occurs even when crossing (on a ppc64 host).
+ chelf -s 1048576 bin/llvm-lto2
+ # Needed for parallel-linker support (pthread stack size).
+ chelf -s 1048576 bin/dsymutil
+ chelf -s 1048576 bin/llvm-dwarfutil
+}
+
+static() {
+ pkgdesc="LLVM $_majorver static libraries"
+ _common_subpkg
+
+ mkdir -p "$subpkgdir"/$_prefix/lib
+ mv "$pkgdir"/$_prefix/lib/*.a "$subpkgdir"/$_prefix/lib/
+ strip -d "$subpkgdir"/$_prefix/lib/*.a
+}
+
+libs() {
+ pkgdesc="LLVM $_majorver runtime library"
+ main_soname="libLLVM-$_majorver.so"
+ ver_soname="libLLVM-$pkgver.so"
+ _common_subpkg
+
+ # libLLVM should be in /usr/lib. This is needed for binaries that are
+ # dynamically linked with libLLVM, so they can find it on default path.
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/$_prefix/lib/$main_soname "$subpkgdir"/usr/lib/
+ _solinks=$(ls "$pkgdir"/$_prefix/lib/libLLVM.so.$_majorver*)
+ for link in $_solinks; do
+ _real_link=$(basename $link)
+ mv "$pkgdir"/$_prefix/lib/$_real_link "$subpkgdir"/usr/lib/
+ done
+ ln -s $main_soname "$subpkgdir"/usr/lib/$ver_soname
+
+ # And also symlink it back to the LLVM prefix.
+ mkdir -p "$subpkgdir"/$_prefix/lib
+ ln -s ../../$main_soname "$subpkgdir"/$_prefix/lib/$main_soname
+ ln -s ../../$main_soname "$subpkgdir"/$_prefix/lib/$ver_soname
+ ln -s ../../$main_soname "$subpkgdir"/$_prefix/lib/libLLVM.so
+ for link in $_solinks; do
+ _real_link=$(basename $link)
+ ln -s ../../$main_soname "$subpkgdir"/$_prefix/lib/$_real_link
+ done
+}
+
+dev() {
+ _common_subpkg
+ default_dev
+
+ mkdir -p "$subpkgdir"/$_prefix/bin
+
+ mv "$pkgdir"/$_prefix/lib "$subpkgdir"/$_prefix/
+ mv "$pkgdir"/$_prefix/include "$subpkgdir"/$_prefix/
+
+ mv "$pkgdir"/$_prefix/bin/llvm-config "$subpkgdir"/$_prefix/bin/
+}
+
+_test_utils() {
+ pkgdesc="LLVM $_majorver utilities for executing LLVM and Clang style test suites"
+ depends="python3"
+ _common_subpkg
+ replaces=""
+
+ litver="$(python3 "$builddir"/utils/lit/setup.py --version 2>/dev/null \
+ | sed 's/\.dev.*$//')"
+ test -n "$litver" || return 1
+ provides="$provides lit=$litver-r$pkgrel"
+
+ cd "$builddir"/build
+
+ install -D -m 755 bin/FileCheck "$subpkgdir"/$_prefix/bin/FileCheck
+ install -D -m 755 bin/count "$subpkgdir"/$_prefix/bin/count
+ install -D -m 755 bin/not "$subpkgdir"/$_prefix/bin/not
+
+ python3 ../utils/lit/setup.py install --prefix=/usr --root="$subpkgdir"
+ ln -s ../../../bin/lit "$subpkgdir"/$_prefix/bin/lit
+}
+
+_common_subpkg() {
+ if [ "$_default_llvm" = yes ]; then
+ replaces="llvm${subpkgname#$pkgname}"
+ provides="$replaces=$pkgver-r$pkgrel"
+ fi
+}
+
+sha512sums="25eeee9984c8b4d0fbc240df90f33cbb000d3b0414baff5c8982beafcc5e59e7ef18f6f85d95b3a5f60cb3d4cd4f877c80487b5768bc21bc833f107698ad93db llvm-project-18.1.8.src.tar.xz
+f84cd65d7042e89826ba6e8d48c4c302bf4980da369d7f19a55f217e51c00ca8ed178d453df3a3cee76598a7cecb94aed0775a6d24fe73266f82749913fc3e71 llvm-fix-build-with-musl-libc.patch
+d56945bb0476561028616222846257f990d66e68b4458894f8791252411038b269831f9400ed9df3b99f571a82443caaac347a8b38a5516c77c3583469118309 disable-FileSystemTest.CreateDir-perms-assert.patch
+94099a2001d38d935ece69943971e7943691e8a5471b31ae2169e1f2f2e60de8a9fe8ba718dfa942c84d22fced7492bc9b87bce84a3e801a46e549c4657f9eb5 dyld-elf-ppc32.patch
+23cd4c38899bf001f6e27db9a21dfb9fa1264a81993ef423535ff3132d2a258b4706d201ff15a96624db82540ee09c14810af0392f0786262699dfdbcb47b9ba dyld-elf-ppc32-2.patch
+807587a0c897d47a01a846c5c4f7cbf1f2d16437a163b66ee2381a7147e9d04b0141b2c76d022db61903d0d2841ddb267ba98c66c9e41501ca41837659743df8 hexagon.patch
+22dedbbdc99ab4df6c64921186803552fc61cfc00a5cd052295a5450809e7205ac21dd07df158b7e99b960084b2ec3d8832480a8cd073fe1c2d613cd21c90b60 i586-json-test.patch
+b186ce027dca389cfd23dc91b03e023e688c7610745cf62d0b277b6178972bcf55abf0df08453f2a6b85dc61dba929cb565cb30633a2fe0f193a443f54025bf7 m68k-endianness.patch
+64a28241b9ea87cfc4313440bf53b1c85dff9a1c84846f5b7619b67842acd68da878a1196baccb1e28f44a1484c09d5bffd4cf14341ed2b24642006e6d87b90a macho32.patch
+bec1fe4761dae33a8012a54b7bbdd179cac82febcd46ace1844772c06f207661c903f05fcb7a5ebbbece3e33a88b20a5d9b31b40e8a8cd5c626aec04cb6735be musl-ppc64-elfv2.patch
+bda83678acb97be4d4236179792b3555b8000242fa6bd9e2e78dcd4f6182395df7fa9b8742fde946f19b668615ab37db8670340d43683787d36c540937bca523 ppc-gcc-bug.patch
+89ef5fbab039b017a5652656adf17b680525f1c5dd0b1afc8034fe0b34a2ca196d87640f54cc826356cfcd88c6e5f10754b7e38f04ca49ede4f3864080b787bd python3-test.patch
+3dc797036dd976db76c774c4b87609d8548cfcd6575dd1e5322a2170fca4419b6934e12874f1c6650d73b858527d22d70e7abe5270dff79c190feeeb1d965d0a roundeven.patch"
diff --git a/user/llvm7/disable-FileSystemTest.CreateDir-perms-assert.patch b/user/llvm18/disable-FileSystemTest.CreateDir-perms-assert.patch
index e73ce9b6f..64f13db73 100644
--- a/user/llvm7/disable-FileSystemTest.CreateDir-perms-assert.patch
+++ b/user/llvm18/disable-FileSystemTest.CreateDir-perms-assert.patch
@@ -18,7 +18,7 @@ on build servers.
--- a/unittests/Support/Path.cpp
+++ b/unittests/Support/Path.cpp
-@@ -579,23 +579,23 @@
+@@ -1004,23 +1004,23 @@
ASSERT_NO_ERROR(fs::remove(Twine(TestDirectory) + "foo"));
#ifdef LLVM_ON_UNIX
@@ -58,4 +58,4 @@ on build servers.
+// ::umask(OldUmask);
#endif
- #ifdef LLVM_ON_WIN32
+ #ifdef _WIN32
diff --git a/user/llvm18/dwarf-info.patch b/user/llvm18/dwarf-info.patch
new file mode 100644
index 000000000..9357c6519
--- /dev/null
+++ b/user/llvm18/dwarf-info.patch
@@ -0,0 +1,28 @@
+Author: A. Wilcox <awilfox@adelielinux.org>
+
+This isn't the proper fix, but debugging the LLVM formatter is a bit
+above my paygrade at the moment.
+
+The issue shows up in the DWARF X86 test on ppc and armv7:
+
+error: Simplified template DW_AT_name could not be reconstituted:
+ original: f3<char, '\x00', '\x01', '\x06', '\a', '\r', '\x0e', '\x1f', ' ', '!', '\x7f', '\x80'>
+ reconstituted: f3<char, '\x00', '\x00', '\x00', '\a', '\r', '\x00', '\x00', ' ', '!', '\x00', '\x00'>
+
+With this patch, this error does not occur. Debugging shows that the
+llvm::format overload called in the error case is <long long>, so I
+think it is having an issue converting a 64-bit value on platforms
+where char is default-unsigned.
+
+(pmmx does not show this issue, and has signed char.)
+--- llvm-14.0.6.src/lib/DebugInfo/DWARF/DWARFDie.cpp.old 2022-06-22 16:46:24.000000000 +0000
++++ llvm-14.0.6.src/lib/DebugInfo/DWARF/DWARFDie.cpp 2022-11-28 10:32:05.573627744 +0000
+@@ -506,7 +506,7 @@
+ OS << (char)Val;
+ OS << "'";
+ } else if (Val < 256)
+- OS << to_string(llvm::format("'\\x%02x'", Val));
++ OS << to_string(llvm::format("'\\x%02x'", (unsigned char)Val));
+ else if (Val <= 0xFFFF)
+ OS << to_string(llvm::format("'\\u%04x'", Val));
+ else
diff --git a/user/llvm18/dyld-elf-ppc32-2.patch b/user/llvm18/dyld-elf-ppc32-2.patch
new file mode 100644
index 000000000..d424554e2
--- /dev/null
+++ b/user/llvm18/dyld-elf-ppc32-2.patch
@@ -0,0 +1,176 @@
+Author: Ash Logan <ash@heyquark.com>
+
+adds a whole bunch of ppc32 relocation types - probably only REL32 and REL24 are actually needed, or
+indeed tested.
+mostly copypasted from the ppc64 code with ELFv2 ABI removed. No attempt is made to support GOT/PLT
+relocations, since the JIT doesn't seem to generate these.
+
+makes clang-repl and the ExecutionEngine testsuites pass, and allows llvmpipe to run
+
+diff -rup llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
+--- llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp 2024-06-16 03:21:32.000000000 +1000
++++ llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp 2025-02-26 00:10:04.114888980 +1100
+@@ -1029,6 +1029,14 @@ uint8_t *RuntimeDyldImpl::createStubFunc
+ writeBytesUnaligned(JrT9Instr, Addr + 24, 4);
+ writeBytesUnaligned(NopInstr, Addr + 28, 4);
+ return Addr;
++ } else if (Arch == Triple::ppc || Arch == Triple::ppcle) {
++ // The ABI docs talk endlessly of PLTs and GOTs which have special relocation types.
++ // For the generic types, just do a generic jump.
++ writeInt32BE(Addr, 0x3D800000); // lis r12, h(addr)
++ writeInt32BE(Addr+4, 0x618C0000); // ori r12, l(addr)
++ writeInt32BE(Addr+8, 0x7D8903A6); // mtctr r12
++ writeInt32BE(Addr+12, 0x4E800420); // bctr
++ return Addr;
+ } else if (Arch == Triple::ppc64 || Arch == Triple::ppc64le) {
+ // Depending on which version of the ELF ABI is in use, we need to
+ // generate one of two variants of the stub. They both start with
+diff -rup llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
+--- llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp 2024-06-16 03:21:32.000000000 +1000
++++ llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp 2025-02-26 00:32:57.021079997 +1100
+@@ -819,7 +819,7 @@ void RuntimeDyldELF::resolvePPC32Relocat
+ uint8_t *LocalAddress = Section.getAddressWithOffset(Offset);
+ switch (Type) {
+ default:
+- report_fatal_error("Relocation type not implemented yet!");
++ report_fatal_error("Relocation type " + Twine(Type) + " not implemented yet!");
+ break;
+ case ELF::R_PPC_ADDR16_LO:
+ writeInt16BE(LocalAddress, applyPPClo(Value + Addend));
+@@ -835,6 +835,37 @@ void RuntimeDyldELF::resolvePPC32Relocat
+ int64_t delta = static_cast<int64_t>(Value - FinalAddress + Addend);
+ writeInt32BE(LocalAddress, delta);
+ } break;
++ case ELF::R_PPC_REL24: {
++ uint32_t FinalAddress = Section.getLoadAddressWithOffset(Offset);
++ int64_t delta = static_cast<int64_t>(Value - FinalAddress + Addend);
++ if (SignExtend64<26>(delta) != delta)
++ llvm_unreachable("Relocation R_PPC_REL24 overflow");
++ uint32_t Inst = readBytesUnaligned(LocalAddress, 4);
++ writeInt32BE(LocalAddress, (Inst & 0xFC000003) | (delta & 0x03FFFFFC));
++ } break;
++ case ELF::R_PPC_ADDR32: {
++ int64_t delta = static_cast<int64_t>(Value + Addend);
++ writeInt32BE(LocalAddress, delta);
++ } break;
++ case ELF::R_PPC_ADDR30: {
++ uint32_t FinalAddress = Section.getLoadAddressWithOffset(Offset);
++ int64_t delta = static_cast<int64_t>(Value - FinalAddress + Addend);
++ uint32_t Inst = readBytesUnaligned(LocalAddress, 4);
++ writeInt32BE(LocalAddress, (Inst & 0x00000003) | (delta & 0xFFFFFFFC));
++ } break;
++ case ELF::R_PPC_ADDR24: {
++ int64_t delta = static_cast<int64_t>(Value + Addend);
++ if (SignExtend64<26>(delta) != delta)
++ llvm_unreachable("Relocation R_PPC_ADDR24 overflow");
++ uint32_t Inst = readBytesUnaligned(LocalAddress, 4);
++ writeInt32BE(LocalAddress, (Inst & 0xFC000003) | (delta & 0x03FFFFFC));
++ } break;
++ case ELF::R_PPC_ADDR16: {
++ int64_t delta = static_cast<int64_t>(Value + Addend);
++ if (SignExtend64<16>(delta) != delta)
++ llvm_unreachable("Relocation R_PPC_ADDR16 overflow");
++ writeInt16BE(LocalAddress, delta);
++ } break;
+ }
+ }
+
+@@ -1551,6 +1587,76 @@ RuntimeDyldELF::processRelocationRef(
+ processSimpleRelocation(SectionID, Offset, RelType, Value);
+ }
+
++ } else if (Arch == Triple::ppc || Arch == Triple::ppcle) {
++ if (RelType == ELF::R_PPC_REL24) {
++ // A PPC branch relocation will need a stub function if the target is
++ // an external symbol (either Value.SymbolName is set, or SymType is
++ // Symbol::ST_Unknown) or if the target address is not within the
++ // signed 24-bits branch address.
++ SectionEntry &Section = Sections[SectionID];
++ uint8_t *Target = Section.getAddressWithOffset(Offset);
++ bool RangeOverflow = false;
++ bool IsExtern = Value.SymbolName || SymType == SymbolRef::ST_Unknown;
++ if (!IsExtern) {
++ uint8_t *RelocTarget =
++ Sections[Value.SectionID].getAddressWithOffset(Value.Addend);
++ int64_t delta = static_cast<int64_t>(Target - RelocTarget);
++ // If it is within 26-bits branch range, just set the branch target
++ if (SignExtend64<26>(delta) != delta) {
++ RangeOverflow = true;
++ } else {
++ RelocationEntry RE(SectionID, Offset, RelType, Value.Addend);
++ addRelocationForSection(RE, Value.SectionID);
++ }
++ }
++ if (IsExtern || RangeOverflow) {
++ // It is an external symbol (either Value.SymbolName is set, or
++ // SymType is SymbolRef::ST_Unknown) or out of range.
++ StubMap::const_iterator i = Stubs.find(Value);
++ if (i != Stubs.end()) {
++ // Symbol function stub already created, just relocate to it
++ resolveRelocation(Section, Offset,
++ reinterpret_cast<uint64_t>(
++ Section.getAddressWithOffset(i->second)),
++ RelType, 0);
++ LLVM_DEBUG(dbgs() << " Stub function found\n");
++ } else {
++ // Create a new stub function.
++ LLVM_DEBUG(dbgs() << " Create a new stub function\n");
++ Stubs[Value] = Section.getStubOffset();
++ uint8_t *StubTargetAddr = createStubFunction(
++ Section.getAddressWithOffset(Section.getStubOffset()));
++
++ // The PPC32 ELF ABI doesn't really provide any guidance on the no-PLT case so let's do
++ // our best
++ uint64_t StubRelocOffset = StubTargetAddr - Section.getAddress();
++ if (!IsTargetLittleEndian)
++ StubRelocOffset += 2;
++
++ RelocationEntry REh(SectionID, StubRelocOffset + 0,
++ ELF::R_PPC_ADDR16_HI, Value.Addend);
++ RelocationEntry REl(SectionID, StubRelocOffset + 4,
++ ELF::R_PPC_ADDR16_LO, Value.Addend);
++
++ if (Value.SymbolName) {
++ addRelocationForSymbol(REh, Value.SymbolName);
++ addRelocationForSymbol(REl, Value.SymbolName);
++ } else {
++ addRelocationForSection(REh, Value.SectionID);
++ addRelocationForSection(REl, Value.SectionID);
++ }
++
++ resolveRelocation(Section, Offset, reinterpret_cast<uint64_t>(
++ Section.getAddressWithOffset(
++ Section.getStubOffset())),
++ RelType, 0);
++ Section.advanceStubOffset(getMaxStubSize());
++ }
++ }
++ } else {
++ // Normal relocations are fine as-is probs
++ processSimpleRelocation(SectionID, Offset, RelType, Value);
++ }
+ } else if (Arch == Triple::ppc64 || Arch == Triple::ppc64le) {
+ if (RelType == ELF::R_PPC64_REL24) {
+ // Determine ABI variant in use for this object.
+@@ -2228,6 +2334,8 @@ size_t RuntimeDyldELF::getGOTEntrySize()
+ case Triple::x86:
+ case Triple::arm:
+ case Triple::thumb:
++ case Triple::ppc:
++ case Triple::ppcle:
+ Result = sizeof(uint32_t);
+ break;
+ case Triple::mips:
+diff -rup llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.h llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.h
+--- llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.h 2024-06-16 03:21:32.000000000 +1000
++++ llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.h 2025-02-25 23:51:24.830956991 +1100
+@@ -69,6 +69,8 @@ class RuntimeDyldELF : public RuntimeDyl
+ return 16;
+ else if (IsMipsN64ABI)
+ return 32;
++ else if (Arch == Triple::ppc || Arch == Triple::ppcle)
++ return 16;
+ else if (Arch == Triple::ppc64 || Arch == Triple::ppc64le)
+ return 44;
+ else if (Arch == Triple::x86_64)
+
diff --git a/user/llvm18/dyld-elf-ppc32.patch b/user/llvm18/dyld-elf-ppc32.patch
new file mode 100644
index 000000000..77ff8c644
--- /dev/null
+++ b/user/llvm18/dyld-elf-ppc32.patch
@@ -0,0 +1,22 @@
+Author: A. Wilcox <awilfox@adelielinux.org>
+Upstream-Status: Pending
+
+This implements the R_PPC_REL32 relocation type, which is needed for the
+OrcJIT to work properly on 32-bit PowerPC.
+
+Needs more tests before submitting upstream, but seems to DTRT.
+
+--- llvm-14.0.6.src/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp.old 2022-06-22 16:46:24.000000000 +0000
++++ llvm-14.0.6.src/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp 2022-11-28 06:33:12.239921624 +0000
+@@ -830,6 +830,11 @@
+ case ELF::R_PPC_ADDR16_HA:
+ writeInt16BE(LocalAddress, applyPPCha(Value + Addend));
+ break;
++ case ELF::R_PPC_REL32: {
++ uint32_t FinalAddress = Section.getLoadAddressWithOffset(Offset);
++ int64_t delta = static_cast<int64_t>(Value - FinalAddress + Addend);
++ writeInt32BE(LocalAddress, delta);
++ } break;
+ }
+ }
+
diff --git a/user/llvm18/hexagon.patch b/user/llvm18/hexagon.patch
new file mode 100644
index 000000000..552079b80
--- /dev/null
+++ b/user/llvm18/hexagon.patch
@@ -0,0 +1,95 @@
+From 37605662a99bd0815e2f2e452eb6ab1ce53ecffd Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Mon, 30 May 2022 02:51:34 -0500
+Subject: [PATCH] [Hexagon][Tests] Fix tests on Linux/musl
+
+When running on a host system using musl, the target triple is defined
+as hexagon-unknown-linux-musl by default. The Linux ABI differs from
+the non-Linux one with varargs, so this causes the tests to fail.
+
+Closes BZ49592, PR48936.
+
+Signed-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com>
+---
+ test/CodeGen/Hexagon/csr-stubs-spill-threshold.ll | 2 +-
+ test/CodeGen/Hexagon/long-calls.ll | 2 +-
+ test/CodeGen/Hexagon/mlong-calls.ll | 2 +-
+ test/CodeGen/Hexagon/pic-regusage.ll | 2 +-
+ test/CodeGen/Hexagon/runtime-stkchk.ll | 2 +-
+ test/CodeGen/Hexagon/swp-memrefs-epilog.ll | 2 +-
+ test/CodeGen/Hexagon/vararg-formal.ll | 2 +-
+ 7 files changed, 7 insertions(+), 7 deletions(-)
+
+diff --git a/test/CodeGen/Hexagon/csr-stubs-spill-threshold.ll b/test/CodeGen/Hexagon/csr-stubs-spill-threshold.ll
+index afbef217911a..d317d7eac800 100644
+--- a/test/CodeGen/Hexagon/csr-stubs-spill-threshold.ll
++++ b/test/CodeGen/Hexagon/csr-stubs-spill-threshold.ll
+@@ -1,4 +1,4 @@
+-; RUN: llc -mtriple=hexagon -O2 -spill-func-threshold=2 < %s | FileCheck %s
++; RUN: llc -march=hexagon -mtriple=hexagon-unknown-linux-gnu -O2 -spill-func-threshold=2 < %s | FileCheck %s
+
+ declare i32 @f0(i32, i32, i32, i32, i32, i32)
+
+diff --git a/test/CodeGen/Hexagon/long-calls.ll b/test/CodeGen/Hexagon/long-calls.ll
+index 628362783c9c..886405a2d91a 100644
+--- a/test/CodeGen/Hexagon/long-calls.ll
++++ b/test/CodeGen/Hexagon/long-calls.ll
+@@ -1,4 +1,4 @@
+-; RUN: llc -mtriple=hexagon -enable-save-restore-long -hexagon-initial-cfg-cleanup=0 < %s | FileCheck %s
++; RUN: llc -march=hexagon -mtriple=hexagon-unknown-linux-gnu -enable-save-restore-long -hexagon-initial-cfg-cleanup=0 < %s | FileCheck %s
+
+ ; Check that the -long-calls feature is supported by the backend.
+
+diff --git a/test/CodeGen/Hexagon/mlong-calls.ll b/test/CodeGen/Hexagon/mlong-calls.ll
+index d76b87f987fe..383486dfe63d 100644
+--- a/test/CodeGen/Hexagon/mlong-calls.ll
++++ b/test/CodeGen/Hexagon/mlong-calls.ll
+@@ -1,4 +1,4 @@
+-; RUN: llc -hexagon-long-calls -mtriple=hexagon -enable-save-restore-long=true < %s | FileCheck %s
++; RUN: llc -hexagon-long-calls -march=hexagon -mtriple=hexagon-unknown-linux-gnu -enable-save-restore-long=true < %s | FileCheck %s
+
+ ; CHECK: call ##f1
+ ; CHECK: jump ##__restore
+diff --git a/test/CodeGen/Hexagon/pic-regusage.ll b/test/CodeGen/Hexagon/pic-regusage.ll
+index 9d3b6cec39e3..077063e36550 100644
+--- a/test/CodeGen/Hexagon/pic-regusage.ll
++++ b/test/CodeGen/Hexagon/pic-regusage.ll
+@@ -1,4 +1,4 @@
+-; RUN: llc -mtriple=hexagon -relocation-model=pic < %s | FileCheck %s
++; RUN: llc -march=hexagon -mtriple=hexagon-unknown-linux-gnu -relocation-model=pic < %s | FileCheck %s
+
+ ; Force the use of R14 (by clobbering everything else in the inline asm).
+ ; Make sure that R14 is not set before the __save call (which will clobber
+diff --git a/test/CodeGen/Hexagon/runtime-stkchk.ll b/test/CodeGen/Hexagon/runtime-stkchk.ll
+index 66e93d02ef51..2f3f2ad10f6a 100644
+--- a/test/CodeGen/Hexagon/runtime-stkchk.ll
++++ b/test/CodeGen/Hexagon/runtime-stkchk.ll
+@@ -1,4 +1,4 @@
+-; RUN: llc -mtriple=hexagon -mcpu=hexagonv55 -enable-stackovf-sanitizer < %s | FileCheck %s
++; RUN: llc -march=hexagon -mcpu=hexagonv55 -mtriple=hexagon-unknown-linux-gnu -enable-stackovf-sanitizer < %s | FileCheck %s
+
+ ; CHECK-LABEL: foo_1
+ ; CHECK: __runtime_stack_check
+diff --git a/test/CodeGen/Hexagon/swp-memrefs-epilog.ll b/test/CodeGen/Hexagon/swp-memrefs-epilog.ll
+index 20e39dd08fd7..b34dfbc31e9d 100644
+--- a/test/CodeGen/Hexagon/swp-memrefs-epilog.ll
++++ b/test/CodeGen/Hexagon/swp-memrefs-epilog.ll
+@@ -1,4 +1,4 @@
+-; RUN: llc -march=hexagon -O2 -fp-contract=fast < %s -pipeliner-experimental-cg=true | FileCheck %s
++; RUN: llc -march=hexagon -mtriple=hexagon-unknown-linux-gnu -O2 -fp-contract=fast < %s -pipeliner-experimental-cg=true | FileCheck %s
+
+ ; Test that the memoperands for instructions in the epilog are updated
+ ; correctly. Previously, the pipeliner updated the offset for the memoperands
+diff --git a/test/CodeGen/Hexagon/vararg-formal.ll b/test/CodeGen/Hexagon/vararg-formal.ll
+index 6bba65fcab16..fb3132929bcf 100644
+--- a/test/CodeGen/Hexagon/vararg-formal.ll
++++ b/test/CodeGen/Hexagon/vararg-formal.ll
+@@ -1,4 +1,4 @@
+-; RUN: llc -march=hexagon < %s | FileCheck %s
++; RUN: llc -march=hexagon -mtriple=hexagon-unknown-linux-gnu < %s | FileCheck %s
+
+ ; Make sure that the first formal argument is not loaded from memory.
+ ; CHECK-NOT: memw
+--
+2.36.0
+
diff --git a/user/llvm18/i586-json-test.patch b/user/llvm18/i586-json-test.patch
new file mode 100644
index 000000000..e72763976
--- /dev/null
+++ b/user/llvm18/i586-json-test.patch
@@ -0,0 +1,19 @@
+--- llvm/unittests/Support/JSONTest.cpp.old 2024-06-15 12:21:32.000000000 -0500
++++ llvm/unittests/Support/JSONTest.cpp 2024-07-08 21:09:43.106973458 -0500
+@@ -313,6 +313,8 @@
+ 1.5,
+ },
+
++ // Broken by -fexcess-precision=fast.
++#ifndef __i586
+ {
+ "Integer, not exact double. Stored as int64, convertible.",
+ int64_t{0x4000000000000001},
+@@ -328,6 +330,7 @@
+ int64_t{-0x4000000000000001},
+ double{-0x4000000000000000},
+ },
++#endif
+
+ // PR46470,
+ // https://developercommunity.visualstudio.com/content/problem/1093399/incorrect-result-when-printing-6917529027641081856.html
diff --git a/user/llvm7/llvm-fix-build-with-musl-libc.patch b/user/llvm18/llvm-fix-build-with-musl-libc.patch
index 6ee91ea44..6ee91ea44 100644
--- a/user/llvm7/llvm-fix-build-with-musl-libc.patch
+++ b/user/llvm18/llvm-fix-build-with-musl-libc.patch
diff --git a/user/llvm18/m68k-endianness.patch b/user/llvm18/m68k-endianness.patch
new file mode 100644
index 000000000..49e96a995
--- /dev/null
+++ b/user/llvm18/m68k-endianness.patch
@@ -0,0 +1,26 @@
+Upstream: https://github.com/llvm/llvm-project/issues/94726
+
+diff --git a/lib/Target/M68k/MCTargetDesc/M68kBaseInfo.h b/lib/Target/M68k/MCTargetDesc/M68kBaseInfo.h
+index 1376b06bef6f..62ea03cc9760 100644
+--- a/lib/Target/M68k/MCTargetDesc/M68kBaseInfo.h
++++ b/lib/Target/M68k/MCTargetDesc/M68kBaseInfo.h
+@@ -85,9 +85,16 @@ template <typename value_t> value_t swapWord(value_t Val) {
+ Val = support::endian::byte_swap(Val, llvm::endianness::big);
+ value_t NewVal = 0;
+ for (unsigned i = 0U; i != NumWords; ++i) {
+- uint16_t Part = (Val >> (i * 16)) & 0xFFFF;
+- Part = support::endian::byte_swap(Part, llvm::endianness::big);
+- NewVal |= (Part << (i * 16));
++ if (llvm::endianness::native == llvm::endianness::big) {
++ uint16_t Lo = (Val >> (i * 16)) & 0xFFFF;
++ NewVal |= (Lo << (++i * 16));
++ uint16_t Hi = (Val >> (++i * 16)) & 0xFFFF;
++ NewVal |= (Hi << ((i - 1) * 16));
++ } else {
++ uint16_t Part = (Val >> (i * 16)) & 0xFFFF;
++ Part = support::endian::byte_swap(Part, llvm::endianness::big);
++ NewVal |= (Part << (i * 16));
++ }
+ }
+ return NewVal;
+ }
diff --git a/user/llvm18/macho32.patch b/user/llvm18/macho32.patch
new file mode 100644
index 000000000..e18098372
--- /dev/null
+++ b/user/llvm18/macho32.patch
@@ -0,0 +1,17 @@
+Use integer offset math instead of pointer math to determine load
+command bounds.
+
+Upstream-URL: https://github.com/llvm/llvm-project/issues/56746
+
+--- llvm-14.0.6.src/lib/Object/MachOObjectFile.cpp.old 2022-06-22 16:46:24.000000000 +0000
++++ llvm-14.0.6.src/lib/Object/MachOObjectFile.cpp 2022-11-28 04:21:02.730211841 +0000
+@@ -192,7 +192,8 @@
+ getLoadCommandInfo(const MachOObjectFile &Obj, const char *Ptr,
+ uint32_t LoadCommandIndex) {
+ if (auto CmdOrErr = getStructOrErr<MachO::load_command>(Obj, Ptr)) {
+- if (CmdOrErr->cmdsize + Ptr > Obj.getData().end())
++ uint64_t Offset = Ptr - Obj.getData().begin();
++ if (CmdOrErr->cmdsize + Offset > Obj.getData().size())
+ return malformedError("load command " + Twine(LoadCommandIndex) +
+ " extends past end of file");
+ if (CmdOrErr->cmdsize < 8)
diff --git a/user/llvm7/musl-ppc64-elfv2.patch b/user/llvm18/musl-ppc64-elfv2.patch
index 016be5dad..49f6e5702 100644
--- a/user/llvm7/musl-ppc64-elfv2.patch
+++ b/user/llvm18/musl-ppc64-elfv2.patch
@@ -11,21 +11,6 @@ musl.
test/CodeGen/PowerPC/ppc64-elf-abi.ll | 1 +
2 files changed, 5 insertions(+)
-diff --git a/lib/Target/PowerPC/PPCTargetMachine.cpp b/lib/Target/PowerPC/PPCTargetMachine.cpp
-index 34410393ef6..c583fba8cab 100644
---- a/lib/Target/PowerPC/PPCTargetMachine.cpp
-+++ b/lib/Target/PowerPC/PPCTargetMachine.cpp
-@@ -199,6 +199,10 @@ static PPCTargetMachine::PPCABI computeTargetABI(const Triple &TT,
- case Triple::ppc64le:
- return PPCTargetMachine::PPC_ABI_ELFv2;
- case Triple::ppc64:
-+ // musl uses ELFv2 ABI on both endians.
-+ if (TT.getEnvironment() == Triple::Musl)
-+ return PPCTargetMachine::PPC_ABI_ELFv2;
-+
- return PPCTargetMachine::PPC_ABI_ELFv1;
- default:
- return PPCTargetMachine::PPC_ABI_UNKNOWN;
diff --git a/test/CodeGen/PowerPC/ppc64-elf-abi.ll b/test/CodeGen/PowerPC/ppc64-elf-abi.ll
index 1e17930304b..aa594b37b47 100644
--- a/test/CodeGen/PowerPC/ppc64-elf-abi.ll
diff --git a/user/llvm18/ppc-gcc-bug.patch b/user/llvm18/ppc-gcc-bug.patch
new file mode 100644
index 000000000..3c1371dc4
--- /dev/null
+++ b/user/llvm18/ppc-gcc-bug.patch
@@ -0,0 +1,22 @@
+Upstream: https://github.com/llvm/llvm-project/issues/95594
+Ref: #1204
+
+--- llvm/include/llvm/ExecutionEngine/Orc/Shared/SimplePackedSerialization.h.old 2024-06-15 12:21:32.000000000 -0500
++++ llvm/include/llvm/ExecutionEngine/Orc/Shared/SimplePackedSerialization.h 2024-06-25 21:42:07.495284340 -0500
+@@ -390,6 +390,8 @@
+ return Size;
+ }
+
++#pragma GCC push_options
++#pragma GCC optimize("no-tree-ch")
+ static bool serialize(SPSOutputBuffer &OB, const SequenceT &S) {
+ if (!SPSArgList<uint64_t>::serialize(OB, static_cast<uint64_t>(S.size())))
+ return false;
+@@ -398,6 +400,7 @@
+ return false;
+ return true;
+ }
++#pragma GCC pop_options
+
+ static bool deserialize(SPSInputBuffer &IB, SequenceT &S) {
+ using TBSD = TrivialSPSSequenceDeserialization<SPSElementTagT, SequenceT>;
diff --git a/user/llvm7/python3-test.patch b/user/llvm18/python3-test.patch
index 746313317..76f13385d 100644
--- a/user/llvm7/python3-test.patch
+++ b/user/llvm18/python3-test.patch
@@ -4,5 +4,5 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
- import sys
+ from __future__ import print_function
diff --git a/user/llvm18/roundeven.patch b/user/llvm18/roundeven.patch
new file mode 100644
index 000000000..3747969c1
--- /dev/null
+++ b/user/llvm18/roundeven.patch
@@ -0,0 +1,49 @@
+--- llvm-14.0.4.src/lib/Analysis/TargetLibraryInfo.cpp.old 2022-05-24 22:02:58.000000000 +0000
++++ llvm-14.0.4.src/lib/Analysis/TargetLibraryInfo.cpp 2022-07-06 01:38:22.016862561 +0000
+@@ -634,6 +634,13 @@
+ TLI.setUnavailable(LibFunc_statvfs64);
+ TLI.setUnavailable(LibFunc_tmpfile64);
+
++ // These functions are unavailable on musl.
++ if (T.isMusl()) {
++ TLI.setUnavailable(LibFunc_roundeven);
++ TLI.setUnavailable(LibFunc_roundevenf);
++ TLI.setUnavailable(LibFunc_roundevenl);
++ }
++
+ // Relaxed math functions are included in math-finite.h on Linux (GLIBC).
+ // Note that math-finite.h is no longer supported by top-of-tree GLIBC,
+ // so we keep these functions around just so that they're recognized by
+--- llvm-14.0.4.src/test/Transforms/InstCombine/double-float-shrink-2.ll.old 2022-05-24 22:02:58.000000000 +0000
++++ llvm-14.0.4.src/test/Transforms/InstCombine/double-float-shrink-2.ll 2022-07-06 02:03:20.657791057 +0000
+@@ -1,5 +1,5 @@
+ ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+ ; REQUIRES: x86-registered-target,sparc-registered-target
+-; RUN: opt < %s -passes=instcombine -S -mtriple "i386-pc-linux" | FileCheck %s --check-prefixes=CHECK,DOUBLE-4BYTE-ALIGN
++; RUN: opt < %s -passes=instcombine -S -mtriple "i386-pc-linux-gnu" | FileCheck %s --check-prefixes=CHECK,DOUBLE-4BYTE-ALIGN
+ ; RUN: opt < %s -passes=instcombine -S -mtriple "i386-pc-win32" | FileCheck %s --check-prefixes=CHECK,DOUBLE-8BYTE-ALIGN
+ ; RUN: opt < %s -passes=instcombine -S -mtriple "x86_64-pc-win32" | FileCheck %s --check-prefixes=CHECK,DOUBLE-8BYTE-ALIGN
+--- llvm-14.0.4.src/test/ExecutionEngine/Interpreter/intrinsics.ll.old 2022-05-24 22:02:58.000000000 +0000
++++ llvm-14.0.4.src/test/ExecutionEngine/Interpreter/intrinsics.ll 2022-07-23 06:50:59.336665672 +0000
+@@ -13,8 +13,8 @@
+ declare double @llvm.trunc.f64(double)
+ declare float @llvm.round.f32(float)
+ declare double @llvm.round.f64(double)
+-declare float @llvm.roundeven.f32(float)
+-declare double @llvm.roundeven.f64(double)
++;declare float @llvm.roundeven.f32(float)
++;declare double @llvm.roundeven.f64(double)
+ declare float @llvm.copysign.f32(float, float)
+ declare double @llvm.copysign.f64(double, double)
+
+@@ -31,8 +31,8 @@
+ %trunc64 = call double @llvm.trunc.f64(double 0.000000e+00)
+ %round32 = call float @llvm.round.f32(float 0.000000e+00)
+ %round64 = call double @llvm.round.f64(double 0.000000e+00)
+- %roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)
+- %roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)
++ ;%roundeven32 = call float @llvm.roundeven.f32(float 0.000000e+00)
++ ;%roundeven64 = call double @llvm.roundeven.f64(double 0.000000e+00)
+ %copysign32 = call float @llvm.copysign.f32(float 0.000000e+00, float 0.000000e+00)
+ %copysign64 = call double @llvm.copysign.f64(double 0.000000e+00, double 0.000000e+00)
+ ret i32 0
diff --git a/user/llvm7/APKBUILD b/user/llvm7/APKBUILD
deleted file mode 100644
index d4b78cef0..000000000
--- a/user/llvm7/APKBUILD
+++ /dev/null
@@ -1,252 +0,0 @@
-# Contributor: Travis Tilley <ttilley@gmail.com>
-# Contributor: Mitch Tishmack <mitch.tishmack@gmail.com>
-# Contributor: Jakub Jirutka <jakub@jirutka.cz>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-_pkgname=llvm
-pkgver=7.0.1
-_majorver=${pkgver%%.*}
-pkgname=$_pkgname$_majorver
-pkgrel=0
-pkgdesc="Low Level Virtual Machine compiler system, version $_majorver"
-arch="all"
-options="!checkroot !dbg"
-url="https://llvm.org/"
-license="NCSA"
-depends_dev="$pkgname=$pkgver-r$pkgrel libexecinfo-dev libxml2-dev"
-makedepends="binutils-dev chrpath cmake file libexecinfo-dev libffi-dev
- libxml2-dev python3 zlib-dev"
-subpackages="$pkgname-static $pkgname-libs $pkgname-dev
- $pkgname-test-utils:_test_utils"
-source="https://llvm.org/releases/$pkgver/llvm-$pkgver.src.tar.xz
- llvm-fix-build-with-musl-libc.patch
- disable-FileSystemTest.CreateDir-perms-assert.patch
- disable-dlclose-test.patch
- musl-ppc64-elfv2.patch
- more-secure-plt.patch
- even-more-secure-plt.patch
- ppc32-calling-convention.patch
- python3-test.patch
- "
-builddir="$srcdir/$_pkgname-$pkgver.src"
-
-# ARM has few failures in test suite that we don't care about currently and
-# also it takes forever to run them on the builder.
-case "$CARCH" in
- arm*) options="$options !check";;
-esac
-
-# Whether is this package the default (latest) LLVM version.
-_default_llvm="yes"
-
-if [ "$_default_llvm" = yes ]; then
- provides="llvm=$pkgver-r$pkgrel"
- replaces="llvm"
-fi
-
-# NOTE: It seems that there's no (sane) way how to change includedir, sharedir
-# etc. separately, just the CMAKE_INSTALL_PREFIX. Standard CMake variables and
-# even LLVM-specific variables, that are related to these paths, actually
-# don't work (in llvm 3.7).
-#
-# When building a software that depends on LLVM, utility llvm-config should be
-# used to discover where is LLVM installed. It provides options to print
-# path of bindir, includedir, and libdir separately, but in its source, all
-# these paths are actually hard-coded against INSTALL_PREFIX. We can patch it
-# and move paths manually, but I'm really not sure what it may break...
-#
-# Also note that we should *not* add version suffix to files in llvm bindir!
-# It breaks build system of some software that depends on LLVM, because they
-# don't expect these files to have a sufix.
-#
-# So, we install all the LLVM files into /usr/lib/llvm$_majorver.
-# BTW, Fedora and Debian do the same thing.
-#
-_prefix="usr/lib/llvm$_majorver"
-
-prepare() {
- default_prepare
-
- # https://bugs.llvm.org//show_bug.cgi?id=31870
- rm test/tools/llvm-symbolizer/print_context.c
-
- mkdir -p "$builddir"/build
-}
-
-build() {
- cd "$builddir"/build
-
- # Auto-detect it by guessing either.
- local ffi_include_dir="$(pkg-config --cflags-only-I libffi | sed 's|^-I||g')"
-
- cmake -G "Unix Makefiles" -Wno-dev \
- -DCMAKE_BUILD_TYPE=Release \
- -DCMAKE_INSTALL_PREFIX=/$_prefix \
- -DCMAKE_VERBOSE_MAKEFILE=NO \
- -DFFI_INCLUDE_DIR="$ffi_include_dir" \
- -DLLVM_BINUTILS_INCDIR=/usr/include \
- -DLLVM_BUILD_DOCS=OFF \
- -DLLVM_BUILD_EXAMPLES=OFF \
- -DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON \
- -DLLVM_BUILD_LLVM_DYLIB=ON \
- -DLLVM_BUILD_TESTS=ON \
- -DLLVM_DEFAULT_TARGET_TRIPLE="$CBUILD" \
- -DLLVM_ENABLE_ASSERTIONS=OFF \
- -DLLVM_ENABLE_CXX1Y=ON \
- -DLLVM_ENABLE_FFI=ON \
- -DLLVM_ENABLE_LIBCXX=OFF \
- -DLLVM_ENABLE_PIC=ON \
- -DLLVM_ENABLE_RTTI=ON \
- -DLLVM_ENABLE_SPHINX=OFF \
- -DLLVM_ENABLE_TERMINFO=ON \
- -DLLVM_ENABLE_ZLIB=ON \
- -DLLVM_HOST_TRIPLE="$CHOST" \
- -DLLVM_INCLUDE_EXAMPLES=OFF \
- -DLLVM_LINK_LLVM_DYLIB=ON \
- -DLLVM_TARGETS_TO_BUILD='X86;ARM;AArch64;PowerPC;SystemZ;AMDGPU;NVPTX;Mips;BPF' \
- "$builddir"
-
- make llvm-tblgen
- make
-
- python3 ../utils/lit/setup.py build
-}
-
-check() {
- cd "$builddir"/build
-
- # FIXME: Few tests fail on s390x, ignore it for now. See build log
- # https://gist.github.com/jirutka/6edc951ad5b8002cf1780546cf661edc
- case "$CARCH" in
- s390x) make check-llvm || true;;
- *) make check-llvm;;
- esac
-}
-
-package() {
- cd "$builddir"/build
-
- make DESTDIR="$pkgdir" install
-
- cd "$pkgdir"/$_prefix
-
- # Remove RPATHs.
- file lib/*.so bin/* \
- | awk -F: '$2~/ELF/{print $1}' \
- | xargs -r chrpath -d
-
- # Symlink files from /usr/lib/llvm*/bin to /usr/bin.
- mkdir -p "$pkgdir"/usr/bin
- local name newname path
- for path in bin/*; do
- name=${path##*/}
- # Add version infix/suffix to the executable name.
- case "$name" in
- llvm-*) newname="llvm$_majorver-${name#llvm-}";;
- *) newname="$name$_majorver";;
- esac
- # If this package provides=llvm (i.e. it's the default/latest
- # llvm package), omit version infix/suffix.
- if [ "$_default_llvm" = yes ]; then
- newname=$name
- fi
- case "$name" in
- FileCheck | obj2yaml | yaml2obj) continue;;
- esac
- ln -s ../lib/llvm$_majorver/bin/$name "$pkgdir"/usr/bin/$newname
- done
-
- # Move /usr/lib/$pkgname/include/ into /usr/include/$pkgname/
- # and symlink it back.
- _mv include/* "$pkgdir"/usr/include/$pkgname/
- rmdir include
- ln -s ../../include/$pkgname include
-
- # Move /usr/lib/$pkgname/lib/cmake/llvm/ into /usr/lib/cmake/$pkgname/
- # and symlink it back.
- _mv lib/cmake/llvm/* "$pkgdir"/usr/lib/cmake/$pkgname/
- rmdir lib/cmake/llvm
- ln -s ../../../cmake/$pkgname lib/cmake/llvm
-}
-
-static() {
- pkgdesc="LLVM $_majorver static libraries"
- _common_subpkg
-
- _mv "$pkgdir"/$_prefix/lib/*.a "$subpkgdir"/$_prefix/lib/
- strip -d "$subpkgdir"/$_prefix/lib/*.a
-}
-
-libs() {
- pkgdesc="LLVM $_majorver runtime library"
- local soname="libLLVM-$_majorver.so"
- local soname2="libLLVM-$pkgver.so"
- _common_subpkg
-
- mkdir -p "$subpkgdir"
- cd "$subpkgdir"
-
- # libLLVM should be in /usr/lib. This is needed for binaries that are
- # dynamically linked with libLLVM, so they can find it on default path.
- _mv "$pkgdir"/$_prefix/lib/$soname usr/lib/
- ln -s $soname usr/lib/$soname2
-
- # And also symlink it back to the LLVM prefix.
- mkdir -p $_prefix/lib
- ln -s ../../$soname $_prefix/lib/$soname
- ln -s ../../$soname $_prefix/lib/$soname2
-}
-
-dev() {
- _common_subpkg
- default_dev
- cd "$subpkgdir"
-
- _mv "$pkgdir"/$_prefix/lib $_prefix/
- _mv "$pkgdir"/$_prefix/include $_prefix/
-
- _mv "$pkgdir"/$_prefix/bin/llvm-config $_prefix/bin/
-}
-
-_test_utils() {
- pkgdesc="LLVM $_majorver utilities for executing LLVM and Clang style test suites"
- depends="python3"
- _common_subpkg
- replaces=""
-
- local litver=$(python3 "$builddir"/utils/lit/setup.py --version 2>/dev/null \
- | sed 's/\.dev.*$//')
- test -n "$litver" || return 1
- provides="$provides lit=$litver-r$pkgrel"
-
- cd "$builddir"/build
-
- install -D -m 755 bin/FileCheck "$subpkgdir"/$_prefix/bin/FileCheck
- install -D -m 755 bin/count "$subpkgdir"/$_prefix/bin/count
- install -D -m 755 bin/not "$subpkgdir"/$_prefix/bin/not
-
- python3 ../utils/lit/setup.py install --prefix=/usr --root="$subpkgdir"
- ln -s ../../../bin/lit "$subpkgdir"/$_prefix/bin/lit
-}
-
-_common_subpkg() {
- if [ "$_default_llvm" = yes ]; then
- replaces="llvm${subpkgname#$pkgname}"
- provides="$replaces=$pkgver-r$pkgrel"
- fi
-}
-
-_mv() {
- local dest; for dest; do true; done # get last argument
- mkdir -p "$dest"
- mv $@
-}
-
-sha512sums="ac43a3cb71a53deb55e3693653847cf20bf6f5d9056f224e6956c96d63bc59ebee9404f088eec9cabe65337b4607a905ef931354b373cf64e0004c6905a6b5df llvm-7.0.1.src.tar.xz
-f84cd65d7042e89826ba6e8d48c4c302bf4980da369d7f19a55f217e51c00ca8ed178d453df3a3cee76598a7cecb94aed0775a6d24fe73266f82749913fc3e71 llvm-fix-build-with-musl-libc.patch
-49c47f125014b60d0ea7870f981a2c1708ad705793f89287ed846ee881a837a4dc0170bf467e03f2ef56177473128945287749ac80dc2d13cfabcf8b929ba58a disable-FileSystemTest.CreateDir-perms-assert.patch
-caeec8e4dbd92f5f74940780b69075f3879a267a8623822cbdc193fd14706eb089071e3a5a20d60cc2eca59e4c5b2a61d29827a2f3362ee7c5f74f11d9ace200 disable-dlclose-test.patch
-e5ddbc4b6c4928e79846dc3c022eb7928aaa8fed40515c78f5f03b8ab8264f34f1eb8aa8bfc0f436450932f4917e54ad261603032092ea271d9590f11a37cf1e musl-ppc64-elfv2.patch
-dcd34b81c2f2843cd05b2e3b88e268045a2ec6ed8677630fc8904f38b2131cbc0ba37dde461e28b1c301d5e95b634b2e225797f8a5585c0cabc69e3b7e78de85 more-secure-plt.patch
-deb71762721ebc73bfdf23143b582f40c70eddcef3e337ed14499e8e336bee2906292d38d64fe98fa633430c1bcb66cf6a2e067258c8fbe6e931f99f6d10a6f7 even-more-secure-plt.patch
-c3f596a1578a07ce0ee40c4e2576fe05ca6ca0c1b4f94b1f74c55cb09603afe7c846db9294fe28d83ca48633086bad422218e6d06e0d92173143fb298e06fb38 ppc32-calling-convention.patch
-53cc0d13dd871e9b775bb4e7567de4f9a97d91b8246cd7ce74607fd88d6e3e2ab9455f5b4195bc7f9dbdedbc77d659d43e98ec0b7cd78cd395aaea6919510287 python3-test.patch"
diff --git a/user/llvm7/disable-dlclose-test.patch b/user/llvm7/disable-dlclose-test.patch
deleted file mode 100644
index b70cd4d4d..000000000
--- a/user/llvm7/disable-dlclose-test.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- llvm-6.0.1.src/unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp.old 2017-07-12 21:22:45.000000000 +0000
-+++ llvm-6.0.1.src/unittests/Support/DynamicLibrary/DynamicLibraryTest.cpp 2018-09-13 04:43:37.240000000 +0000
-@@ -107,6 +107,7 @@
- EXPECT_TRUE(DynamicLibrary::SearchOrder == DynamicLibrary::SO_Linker);
- }
-
-+#if 0
- TEST(DynamicLibrary, Shutdown) {
- std::string A("PipSqueak"), B, C("SecondLib");
- std::vector<std::string> Order;
-@@ -162,6 +163,7 @@
- EXPECT_EQ(Order.front(), "SecondLib");
- EXPECT_EQ(Order.back(), "PipSqueak");
- }
-+#endif
-
- #else
-
diff --git a/user/llvm7/even-more-secure-plt.patch b/user/llvm7/even-more-secure-plt.patch
deleted file mode 100644
index 112e111b8..000000000
--- a/user/llvm7/even-more-secure-plt.patch
+++ /dev/null
@@ -1,101 +0,0 @@
-Index: lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp
-===================================================================
---- a/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp
-+++ b/lib/Target/PowerPC/InstPrinter/PPCInstPrinter.cpp
-@@ -442,13 +442,22 @@
- // On PPC64, VariantKind is VK_None, but on PPC32, it's VK_PLT, and it must
- // come at the _end_ of the expression.
- const MCOperand &Op = MI->getOperand(OpNo);
-- const MCSymbolRefExpr &refExp = cast<MCSymbolRefExpr>(*Op.getExpr());
-- O << refExp.getSymbol().getName();
-+ const MCSymbolRefExpr *RefExp = nullptr;
-+ const MCConstantExpr *ConstExp = nullptr;
-+ if (const MCBinaryExpr *BinExpr = dyn_cast<MCBinaryExpr>(Op.getExpr())) {
-+ RefExp = cast<MCSymbolRefExpr>(BinExpr->getLHS());
-+ ConstExp = cast<MCConstantExpr>(BinExpr->getRHS());
-+ } else
-+ RefExp = cast<MCSymbolRefExpr>(Op.getExpr());
-+
-+ O << RefExp->getSymbol().getName();
- O << '(';
- printOperand(MI, OpNo+1, O);
- O << ')';
-- if (refExp.getKind() != MCSymbolRefExpr::VK_None)
-- O << '@' << MCSymbolRefExpr::getVariantKindName(refExp.getKind());
-+ if (RefExp->getKind() != MCSymbolRefExpr::VK_None)
-+ O << '@' << MCSymbolRefExpr::getVariantKindName(RefExp->getKind());
-+ if (ConstExp != nullptr)
-+ O << '+' << ConstExp->getValue();
- }
-
- /// showRegistersWithPercentPrefix - Check if this register name should be
-Index: lib/Target/PowerPC/PPCAsmPrinter.cpp
-===================================================================
---- a/lib/Target/PowerPC/PPCAsmPrinter.cpp
-+++ b/lib/Target/PowerPC/PPCAsmPrinter.cpp
-@@ -487,8 +487,14 @@
- if (!Subtarget->isPPC64() && !Subtarget->isDarwin() &&
- isPositionIndependent())
- Kind = MCSymbolRefExpr::VK_PLT;
-- const MCSymbolRefExpr *TlsRef =
-+ const MCExpr *TlsRef =
- MCSymbolRefExpr::create(TlsGetAddr, Kind, OutContext);
-+
-+ // Add 32768 offset to the symbol so we follow up the latest GOT/PLT ABI.
-+ if (Kind == MCSymbolRefExpr::VK_PLT && Subtarget->isSecurePlt())
-+ TlsRef = MCBinaryExpr::createAdd(TlsRef,
-+ MCConstantExpr::create(32768, OutContext),
-+ OutContext);
- const MachineOperand &MO = MI->getOperand(2);
- const GlobalValue *GValue = MO.getGlobal();
- MCSymbol *MOSymbol = getSymbol(GValue);
-Index: lib/Target/PowerPC/PPCISelDAGToDAG.cpp
-===================================================================
---- a/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
-+++ b/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
-@@ -4054,7 +4054,20 @@
- if (trySETCC(N))
- return;
- break;
--
-+ // These nodes will be transformed into GETtlsADDR32 node, which
-+ // later becomes BL_TLS __tls_get_addr(sym at tlsgd)@PLT
-+ case PPCISD::ADDI_TLSLD_L_ADDR:
-+ case PPCISD::ADDI_TLSGD_L_ADDR: {
-+ const Module *Mod = MF->getFunction().getParent();
-+ if (PPCLowering->getPointerTy(CurDAG->getDataLayout()) != MVT::i32 ||
-+ !PPCSubTarget->isSecurePlt() || !PPCSubTarget->isTargetELF() ||
-+ Mod->getPICLevel() == PICLevel::SmallPIC)
-+ break;
-+ // Attach global base pointer on GETtlsADDR32 node in order to
-+ // generate secure plt code for TLS symbols.
-+ getGlobalBaseReg();
-+ }
-+ break;
- case PPCISD::CALL: {
- const Module *M = MF->getFunction().getParent();
-
-Index: test/CodeGen/PowerPC/ppc32-secure-plt-tls.ll
-===================================================================
---- a/test/CodeGen/PowerPC/ppc32-secure-plt-tls.ll
-+++ b/test/CodeGen/PowerPC/ppc32-secure-plt-tls.ll
-@@ -0,0 +1,18 @@
-+; RUN: llc < %s -mtriple=powerpc-unknown-linux-gnu -mattr=+secure-plt -relocation-model=pic | FileCheck -check-prefix=SECURE-PLT-TLS %s
-+
-+@a = thread_local local_unnamed_addr global i32 6, align 4
-+define i32 @main() local_unnamed_addr #0 {
-+entry:
-+ %0 = load i32, i32* @a, align 4
-+ ret i32 %0
-+}
-+
-+
-+!llvm.module.flags = !{!0}
-+!0 = !{i32 7, !"PIC Level", i32 2}
-+
-+; SECURE-PLT-TLS: mflr 30
-+; SECURE-PLT-TLS-NEXT: addis 30, 30, .LTOC-.L0$pb@ha
-+; SECURE-PLT-TLS-NEXT: addi 30, 30, .LTOC-.L0$pb@l
-+; SECURE-PLT-TLS-NEXT: bl .L{{.*}}
-+; SECURE-PLT-TLS: bl __tls_get_addr(a@tlsgd)@PLT+32768
-\ No newline at end of file
diff --git a/user/llvm7/more-secure-plt.patch b/user/llvm7/more-secure-plt.patch
deleted file mode 100644
index 1a32eea4f..000000000
--- a/user/llvm7/more-secure-plt.patch
+++ /dev/null
@@ -1,28 +0,0 @@
---- a/lib/Target/PowerPC/PPCSubtarget.cpp
-+++ b/lib/Target/PowerPC/PPCSubtarget.cpp
-@@ -138,6 +138,10 @@
- if (isDarwin())
- HasLazyResolverStubs = true;
-
-+ // Set up musl-specific properties.
-+ if (TargetTriple.getEnvironment() == Triple::Musl)
-+ SecurePlt = true;
-+
- if (HasSPE && IsPPC64)
- report_fatal_error( "SPE is only supported for 32-bit targets.\n", false);
- if (HasSPE && (HasAltivec || HasQPX || HasVSX || HasFPU))
-diff --git a/lib/Target/PowerPC/PPCTargetMachine.cpp b/lib/Target/PowerPC/PPCTargetMachine.cpp
-index c583fba8cab..6a9eedf89c5 100644
---- a/lib/Target/PowerPC/PPCTargetMachine.cpp
-+++ b/lib/Target/PowerPC/PPCTargetMachine.cpp
-@@ -222,6 +222,10 @@ static Reloc::Model getEffectiveRelocModel(const Triple &TT,
- if (TT.getArch() == Triple::ppc64 || TT.getArch() == Triple::ppc64le)
- return Reloc::PIC_;
-
-+ // musl needs SecurePlt, which depends on PIC.
-+ if (TT.getEnvironment() == Triple::Musl)
-+ return Reloc::PIC_;
-+
- // 32-bit is static by default.
- return Reloc::Static;
- }
diff --git a/user/llvm7/ppc32-calling-convention.patch b/user/llvm7/ppc32-calling-convention.patch
deleted file mode 100644
index 2e6d66427..000000000
--- a/user/llvm7/ppc32-calling-convention.patch
+++ /dev/null
@@ -1,69 +0,0 @@
-Index: trunk/lib/Target/PowerPC/PPCISelLowering.cpp
-===================================================================
---- trunk/lib/Target/PowerPC/PPCISelLowering.cpp
-+++ trunk/lib/Target/PowerPC/PPCISelLowering.cpp
-@@ -3511,9 +3511,14 @@
- // Argument stored in memory.
- assert(VA.isMemLoc());
-
-+ // Get the extended size of the argument type in stack
- unsigned ArgSize = VA.getLocVT().getStoreSize();
-- int FI = MFI.CreateFixedObject(ArgSize, VA.getLocMemOffset(),
-- isImmutable);
-+ // Get the actual size of the argument type
-+ unsigned ObjSize = VA.getValVT().getStoreSize();
-+ unsigned ArgOffset = VA.getLocMemOffset();
-+ // Stack objects in PPC32 are right justified.
-+ ArgOffset += ArgSize - ObjSize;
-+ int FI = MFI.CreateFixedObject(ArgSize, ArgOffset, isImmutable);
-
- // Create load nodes to retrieve arguments from the stack.
- SDValue FIN = DAG.getFrameIndex(FI, PtrVT);
-@@ -5468,10 +5473,15 @@
- Arg = PtrOff;
- }
-
-- if (VA.isRegLoc()) {
-- if (Arg.getValueType() == MVT::i1)
-- Arg = DAG.getNode(ISD::ZERO_EXTEND, dl, MVT::i32, Arg);
-+ // When useCRBits() is true, there can be i1 arguments.
-+ // It is because getRegisterType(MVT::i1) => MVT::i1,
-+ // and for other integer types getRegisterType() => MVT::i32.
-+ // Extend i1 and ensure callee will get i32.
-+ if (Arg.getValueType() == MVT::i1)
-+ Arg = DAG.getNode(Flags.isSExt() ? ISD::SIGN_EXTEND : ISD::ZERO_EXTEND,
-+ dl, MVT::i32, Arg);
-
-+ if (VA.isRegLoc()) {
- seenFloatArg |= VA.getLocVT().isFloatingPoint();
- // Put argument in a physical register.
- RegsToPass.push_back(std::make_pair(VA.getLocReg(), Arg));
-Index: trunk/test/CodeGen/PowerPC/ppc32-i1-stack-arguments-abi-bug.ll
-===================================================================
---- trunk/test/CodeGen/PowerPC/ppc32-i1-stack-arguments-abi-bug.ll
-+++ trunk/test/CodeGen/PowerPC/ppc32-i1-stack-arguments-abi-bug.ll
-@@ -0,0 +1,24 @@
-+; RUN: llc -verify-machineinstrs < %s -mcpu=ppc32 -mattr=+crbits | FileCheck %s
-+target triple = "powerpc-unknown-linux-gnu"
-+
-+define void @check_callee(
-+ i32, i32, i32, i32,
-+ i32, i32, i32, i32,
-+ i1 zeroext %s1
-+) {
-+ call void @check_caller(
-+ i32 9, i32 9, i32 9, i32 9,
-+ i32 9, i32 9, i32 9, i32 9,
-+ i1 zeroext %s1)
-+ ret void
-+}
-+
-+; CHECK-LABEL: @check_callee
-+; CHECK: lbz {{[0-9]+}}, 27(1)
-+; CHECK: stw {{[0-9]+}}, 8(1)
-+
-+declare void @check_caller(
-+ i32, i32, i32, i32,
-+ i32, i32, i32, i32,
-+ i1 zeroext
-+)
diff --git a/user/lm_sensors/APKBUILD b/user/lm_sensors/APKBUILD
index 3b46a20f1..19286ae5f 100644
--- a/user/lm_sensors/APKBUILD
+++ b/user/lm_sensors/APKBUILD
@@ -1,6 +1,8 @@
# Maintainer:
pkgname=lm_sensors
-pkgver=3.5.0
+_pkgname=lm-sensors
+pkgver=3.6.0
+_pkgver=$(printf '%s' "$pkgver" | tr . -)
pkgrel=0
pkgdesc="Collection of user space tools for general SMBus access and hardware monitoring."
url="https://hwmon.wiki.kernel.org/lm_sensors"
@@ -11,16 +13,17 @@ depends="bash sysfsutils"
makedepends="bison flex perl rrdtool-dev cmd:which"
subpackages="$pkgname-dev $pkgname-doc $pkgname-detect $pkgname-sensord
$pkgname-sensord-openrc:sensord_openrc:noarch"
-source="$pkgname-$pkgver.tar.gz::https://github.com/lm-sensors/lm-sensors/archive/V3-5-0.tar.gz
+source="$pkgname-$pkgver.tar.gz::https://github.com/lm-sensors/lm-sensors/archive/V$_pkgver.tar.gz
use-module-load.d-dir.patch
fancontrol.initd
sensord.confd
sensord.initd
"
-builddir="$srcdir/${pkgname/_/-}-${pkgver//./-}"
+builddir="$srcdir/$_pkgname-$_pkgver"
prepare() {
- cd "$builddir"
+ default_prepare
+
sed -i -e 's:^# \(PROG_EXTRA\):\1:' Makefile
# Respect LDFLAGS
sed -i -e 's/\$(LIBDIR)$/\$(LIBDIR) \$(LDFLAGS)/g' Makefile
@@ -29,39 +32,32 @@ prepare() {
# do not check for libiconv in ldconfig cache
sed -i -e 's/^LIBICONV.*/LIBICONV ?=/' prog/sensors/Module.mk
-
- default_prepare
}
build() {
- cd "$builddir"
export CFLAGS="$CFLAGS -fno-stack-protector"
make PREFIX=/usr user
}
package() {
- cd "$builddir"
make PROG_EXTRA:=sensord user_install \
PREFIX=/usr \
MANDIR=/usr/share/man \
DESTDIR="$pkgdir"
- cd "$srcdir"
- install -Dm755 fancontrol.initd "$pkgdir"/etc/init.d/fancontrol
+ install -Dm755 "$srcdir"/fancontrol.initd "$pkgdir"/etc/init.d/fancontrol
}
detect() {
depends="perl"
pkgdesc="Detection/migration scripts for lm_sensors"
mkdir -p "$subpkgdir"/usr/bin "$subpkgdir"/usr/sbin
- cd "$pkgdir"
- mv usr/bin/sensors-conf-convert "$subpkgdir"/usr/bin/
- mv usr/sbin/sensors-detect "$subpkgdir"/usr/bin/
+ mv "$pkgdir"/usr/bin/sensors-conf-convert "$subpkgdir"/usr/bin/
+ mv "$pkgdir"/usr/sbin/sensors-detect "$subpkgdir"/usr/bin/
}
sensord() {
pkgdesc="sensord daemon"
- cd "$builddir"
mkdir -p "$subpkgdir"/usr/sbin
mv "$pkgdir"/usr/sbin/sensord "$subpkgdir"/usr/sbin/sensord
}
@@ -73,7 +69,7 @@ sensord_openrc() {
install -Dm755 "$srcdir"/sensord.confd "$subpkgdir"/etc/conf.d/sensord
}
-sha512sums="bea9b2ac01bc43622cafdce0b00ac3bb8cb2d818449c8b332ab51e7ad0022b66bcbf6ca1e99c8500bdc6092c5c1ef985bfe7cff05dbcf015bd3ccf58c00a72e1 lm_sensors-3.5.0.tar.gz
+sha512sums="4e80361913aff5403f1f0737fd4f42cffe43cc170ef48fff3914c9952f71990739d723f7b0b8120d9a01bcbbc829e964cfbd0a5cf18508af8f8dc825b49860bf lm_sensors-3.6.0.tar.gz
794cf2aaa2a9e809c6b67f4c888a89064bba3e5b9333a9f0101a92372c25012e506fa48e86523f57cf30e5c2a808bc38058fd8640c870ea6b48faab44794cfbb use-module-load.d-dir.patch
04756c3844033dc7897e1348181140a43f8470c1bb863f1524b21bbe6be2f13fbf17ac3a68270c96a70d8c148124fea569d1ef75619bbe383e15ec705ea18b21 fancontrol.initd
a77d81ab7ded085ba19e4c637e93268f889ccb8ce9e008a210ae135cb6e2140be07e5d455cf7fcc1084fd57cfbfb3f2bb37207123aebe9566f78b5183806fd7d sensord.confd
diff --git a/user/lmdb/APKBUILD b/user/lmdb/APKBUILD
index d59738f6e..eb7e1a1e6 100644
--- a/user/lmdb/APKBUILD
+++ b/user/lmdb/APKBUILD
@@ -1,29 +1,27 @@
# Contributor: Olivier Mauras <olivier@mauras.ch>
# Maintainer:
pkgname=lmdb
-pkgver=0.9.23
+pkgver=0.9.25
pkgrel=0
pkgdesc="Lightning Memory-Mapped Database"
url="http://symas.com/mdb/"
arch="all"
license="OLDAP-2.8"
subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
-source="https://github.com/LMDB/lmdb/archive/LMDB_$pkgver.tar.gz
- lmdb_make.patch"
-builddir="$srcdir/$pkgname-LMDB_$pkgver/libraries/liblmdb"
+source="https://git.openldap.org/openldap/openldap/-/archive/LMDB_$pkgver/openldap-LMDB_$pkgver.tar.bz2
+ lmdb_make.patch
+ "
+builddir="$srcdir/openldap-LMDB_$pkgver/libraries/liblmdb"
build() {
- cd "$builddir"
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -32,5 +30,5 @@ tools() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="47466a96ce288d18d489acf1abf811aa973649848a4cac31f71e1f25ea781a055ebd6616d2d630214b2df2f146f12609c82d65be0196f49d6b46a6c96464e120 LMDB_0.9.23.tar.gz
+sha512sums="8ee369f77b6acc75d5330ccfdb0531c543642a27a434551d7e800bcaf737ab16afc688a15ba30c0398702d4da54d347cf57f388e1c9525d0334a2677ea3d751e openldap-LMDB_0.9.25.tar.bz2
151022cad94d2138146e3cd36622171f07fb03cc66d116ac9ce766c61a8b1aa65b521bfda88b27456204f53ecd430bdeddb4d7786956a12ed0cd53f8323ffd03 lmdb_make.patch"
diff --git a/user/lohit-ttf/APKBUILD b/user/lohit-ttf/APKBUILD
index 9b464c39e..cf0d06e27 100644
--- a/user/lohit-ttf/APKBUILD
+++ b/user/lohit-ttf/APKBUILD
@@ -14,8 +14,7 @@ subpackages=""
source="https://releases.pagure.org/lohit/lohit-ttf-$pkgver.tar.gz"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ *.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ "$builddir"/*.ttf
}
sha512sums="b622be55e16a8ccbad0d2fc6e546c072e0af1954a36095a00f31e09e6dd80e86e98a36f4a4a7b8adf21a3f380f816e6fe77ef2e61f15521abfd9f7f4b8c06cbc lohit-ttf-20140220.tar.gz"
diff --git a/user/lokalize/APKBUILD b/user/lokalize/APKBUILD
new file mode 100644
index 000000000..e2f412b6e
--- /dev/null
+++ b/user/lokalize/APKBUILD
@@ -0,0 +1,48 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=lokalize
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="Computer-aided translation system"
+url="https://kde.org/applications/development/org.kde.lokalize"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="qt5-qtbase-dev qt5-qtscript-dev cmake extra-cmake-modules kauth-dev
+ kcodecs-dev kcompletion-dev kconfig-dev kconfigwidgets-dev
+ kcoreaddons-dev kcrash-dev kdbusaddons-dev kdoctools-dev
+ ki18n-dev kiconthemes-dev kio-dev kitemviews-dev kjobwidgets-dev
+ knotifications-dev kparts-dev kross-dev kservice-dev ktextwidgets-dev
+ kwidgetsaddons-dev kwindowsystem-dev kxmlgui-dev solid-dev sonnet-dev
+ hunspell-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/lokalize-$pkgver.tar.xz
+ tests.patch
+ "
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="f6a5da60e5d6155f2decab11a887fb3e13720857cafd54d435298c642c3bbc097e63389ebe5c031987ceb70f413f88abe66caa6213576abce9a48a73a4b00140 lokalize-22.04.2.tar.xz
+9b71a96a8a72ee23fea7dd051028f6652842023bf027f82cfb65c12e39033e76f9f548cf6999dc9fca6ee459f6260888253e94ad6cb08ef9c12013a6faa663a8 tests.patch"
diff --git a/user/lokalize/tests.patch b/user/lokalize/tests.patch
new file mode 100644
index 000000000..cc0a4b457
--- /dev/null
+++ b/user/lokalize/tests.patch
@@ -0,0 +1,43 @@
+From 62849badfa30354435510c4dcf5ce0e7d644e934 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Sat, 11 Jun 2022 22:22:35 -0500
+Subject: [PATCH] tests: Fix Project model test for new column
+
+The Project model has a new column, "Comments", added in 2020. The
+tests weren't updated to handle that and were failing because the column
+numbers changed.
+
+Fixes: b1e37cc7dc95 ("Adding a comment feature on Project files")
+---
+ src/tests/projectmodeltest.cpp | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/src/tests/projectmodeltest.cpp b/src/tests/projectmodeltest.cpp
+index 33e940f4..c8b55457 100644
+--- a/src/tests/projectmodeltest.cpp
++++ b/src/tests/projectmodeltest.cpp
+@@ -54,6 +54,7 @@ void ProjectModelTest::testInvalid()
+ QCOMPARE(model->data(model->index(0, 7), Qt::DisplayRole), QString());
+ QCOMPARE(model->data(model->index(0, 8), Qt::DisplayRole), QString());
+ QCOMPARE(model->data(model->index(0, 9), Qt::DisplayRole), QString());
++ QCOMPARE(model->data(model->index(0, 10), Qt::DisplayRole), QString());
+ }
+
+ void ProjectModelTest::testHalfTranslated()
+@@ -85,9 +86,10 @@ void ProjectModelTest::testHalfTranslated()
+ QCOMPARE(model->data(model->index(0, 4), Qt::DisplayRole), 1);
+ QCOMPARE(model->data(model->index(0, 5), Qt::DisplayRole), 2);
+ QCOMPARE(model->data(model->index(0, 6), Qt::DisplayRole), 3);
+- QCOMPARE(model->data(model->index(0, 7), Qt::DisplayRole), QStringLiteral("2019-05-20 03:26+0200"));
+- QCOMPARE(model->data(model->index(0, 8), Qt::DisplayRole), QStringLiteral("2019-06-13 08:53+0300"));
+- QCOMPARE(model->data(model->index(0, 9), Qt::DisplayRole), QStringLiteral("Alexander Potashev <aspotashev@gmail.com>"));
++ QCOMPARE(model->data(model->index(0, 7), Qt::DisplayRole), QStringLiteral());
++ QCOMPARE(model->data(model->index(0, 8), Qt::DisplayRole), QStringLiteral("2019-05-20 03:26+0200"));
++ QCOMPARE(model->data(model->index(0, 9), Qt::DisplayRole), QStringLiteral("2019-06-13 08:53+0300"));
++ QCOMPARE(model->data(model->index(0, 10), Qt::DisplayRole), QStringLiteral("Alexander Potashev <aspotashev@gmail.com>"));
+ }
+
+ QTEST_GUILESS_MAIN(ProjectModelTest)
+--
+2.36.0
+
diff --git a/user/lolcat/APKBUILD b/user/lolcat/APKBUILD
new file mode 100644
index 000000000..cd6bfc984
--- /dev/null
+++ b/user/lolcat/APKBUILD
@@ -0,0 +1,28 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=lolcat
+pkgver=1.0
+pkgrel=0
+pkgdesc="Taste the rainbow on your terminal"
+url=" "
+arch="all"
+options="!check" # No test suite.
+license="WTFPL"
+depends=""
+makedepends=""
+subpackages=""
+source="lolcat-$pkgver.tar.gz::https://github.com/jaseg/lolcat/archive/v$pkgver.tar.gz
+ https.patch
+ "
+
+build() {
+ make
+}
+
+package() {
+ mkdir -p "$pkgdir"/usr/bin
+ make DESTDIR="$pkgdir/usr/bin" install
+}
+
+sha512sums="5f668706c2415273140047040a9e6d02d80a1572a834503480688f46466e2750f3cf5372f364039921f6461f2dbec7fa2dbe8a5600abdf3390c2caf56d1595bf lolcat-1.0.tar.gz
+e27aa207a990ce291c139d4b6d30468bd42a2f1ab17114f3b9354ebbf426542ab825de6cc6391dd356eb108ddd3554cddf84f4a8f2e34599fa6dfe2e10812c73 https.patch"
diff --git a/user/lolcat/https.patch b/user/lolcat/https.patch
new file mode 100644
index 000000000..630154df1
--- /dev/null
+++ b/user/lolcat/https.patch
@@ -0,0 +1,24 @@
+--- lolcat-1.0/lolcat.c.old 2018-12-02 04:37:59.000000000 +0000
++++ lolcat-1.0/lolcat.c 2019-06-15 20:28:03.295298585 +0000
+@@ -45,9 +45,9 @@
+ " lolcat Copy standard input to standard output.\n"
+ " fortune | lolcat Display a rainbow cookie.\n"
+ "\n"
+- "Report lolcat bugs to <http://www.github.org/jaseg/lolcat/issues>\n"
+- "lolcat home page: <http://www.github.org/jaseg/lolcat/>\n"
+- "Original idea: <http://www.github.org/busyloop/lolcat/>\n";
++ "Report lolcat bugs to <https://github.com/jaseg/lolcat/issues>\n"
++ "lolcat home page: <https://github.com/jaseg/lolcat/>\n"
++ "Original idea: <https://github.com/busyloop/lolcat/>\n";
+
+ #define ARRAY_SIZE(foo) (sizeof(foo) / sizeof(foo[0]))
+ const unsigned char codes[] = { 39, 38, 44, 43, 49, 48, 84, 83, 119, 118, 154, 148, 184, 178, 214, 208, 209, 203, 204, 198, 199, 163, 164, 128, 129, 93, 99, 63, 69, 33 };
+@@ -72,7 +72,7 @@
+
+ static void version(void)
+ {
+- wprintf(L"lolcat version 0.1, (c) 2014 jaseg\n");
++ wprintf(L"lolcat version 1.0, (c) 2014-2018 jaseg\n");
+ exit(0);
+ }
+
diff --git a/user/lskat/APKBUILD b/user/lskat/APKBUILD
index 8c20e285e..1bf3d255d 100644
--- a/user/lskat/APKBUILD
+++ b/user/lskat/APKBUILD
@@ -1,9 +1,9 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=lskat
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
-pkgdesc="Lieutenant Skat is an interactive two-player card game"
+pkgdesc="Lieutenant Skat, an interactive two-player card game"
url="https://games.kde.org/game.php?game=lskat"
arch="all"
license="GPL-2.0-only"
@@ -13,10 +13,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
kdbusaddons-dev kdoctools-dev kguiaddons-dev ki18n-dev kxmlgui-dev
kwidgetsaddons-dev libkdegames-dev phonon-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/lskat-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/lskat-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="6fadb424397fa3780af818323eda2c7025f4e611e33a78ed93aad661a5bd1d0df2d71af6da9c6598278aee137e60a9ca7591e5fadbd0cc25af2eb2ebffaa7ded lskat-18.12.3.tar.xz"
+sha512sums="363babec655cd7d7b1e51cf9ee3613a9914ea8a22adc10997b958b96f2e36f12082fe22266b63fac2ec17c103d224c870a1516287d56088a98dd05d8766afd5e lskat-22.04.2.tar.xz"
diff --git a/user/lsof/APKBUILD b/user/lsof/APKBUILD
index a7e0c4768..abf4075b5 100644
--- a/user/lsof/APKBUILD
+++ b/user/lsof/APKBUILD
@@ -1,30 +1,24 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=lsof
-pkgver=4.91
+pkgver=4.93.2
pkgrel=0
pkgdesc="LiSt Open Files"
url="https://people.freebsd.org/~abe"
arch="all"
license="zlib-acknowledgement"
-subpackages="$pkgname-doc"
+depends=""
makedepends="linux-headers cmd:which utmps-dev"
-source="ftp://lsof.itap.purdue.edu/pub/tools/unix/lsof/${pkgname}_${pkgver}.tar.gz
+subpackages="$pkgname-doc"
+source="$pkgname-$pkgver.tar.gz::https://github.com/lsof-org/lsof/archive/$pkgver.tar.gz
utmps.patch
+ test-disable-nfs-test.patch
test-enable-suite.patch
test-linux-sysmacros.patch
- test-disable-nfs-test.patch"
-builddir="$srcdir/${pkgname}_${pkgver}"
-
-unpack() {
- default_unpack
- cd "$builddir"
- tar xf "${pkgname}_${pkgver}_src.tar"
-}
+ "
prepare() {
default_prepare
- cd "$builddir/${pkgname}_${pkgver}_src"
sed -i "s|/\* #define\tHASSECURITY\t1 \*/|#define\tHASSECURITY\t1|" \
dialects/linux/machine.h
@@ -32,32 +26,28 @@ prepare() {
}
build () {
- cd "$builddir/${pkgname}_${pkgver}_src"
-
./Configure -n linux
make
}
check() {
- cd "$builddir/${pkgname}_${pkgver}_src/tests"
-
# The LTsock test will fail if /etc/hosts is not set correctly.
# Make sure that 127.0.0.1 and ::1 have aliases corresponding to
# `hostname`.
- printf "y" | make
- make opt
+ sed -i tests/CkTestDB \
+ -e 's/^# This dialect may never have been validated.*$/exit 0/'
+ make -C tests
+ make -C tests opt
}
package() {
- cd "$builddir/${pkgname}_${pkgver}_src"
-
install -Dm755 lsof "$pkgdir/usr/bin/lsof"
- install -Dm644 lsof.8 "$pkgdir/usr/share/man/man8/lsof.8"
+ install -Dm644 Lsof.8 "$pkgdir/usr/share/man/man8/lsof.8"
install -Dm644 COPYING "$pkgdir/usr/share/licenses/lsof/COPYING"
}
-sha512sums="95937afda1ba58e6636b2a2661d819480ec42b4beafc0e69e6132d7fdffd4e3974a95036a02c6fd8baf92089c73ac969cdc00a297bf0249257867d695bff2f94 lsof_4.91.tar.gz
-dfbfcfd41a4bccf3335ed01cc2dc9a11b6badd3149878d89ef5fed322a914d3d8341c68783140a4973d007907ce54b4438f011c26289df9e27d2d487a8f6b0b0 utmps.patch
-34d9573f90d942c717e3f3ff17283a66981c4a2e8e886746b591f980142d66115bc7afe6bdd0fc660ea6c1b42f591b161b9535e5849b8757e79546c197ccfdda test-linux-sysmacros.patch
-7f3e9b2850af54a5391db6a8f7eaa22329217fd559d3d41ee3bcd33b07b3526d17da75a542d28b013111bc5d5712a718e961aa4fe84ca3c5e73a97e0518ba2ec test-enable-suite.patch
-d299e2070415168f75a9ee6424e18c1496f6d1fd5430b13a92159422c9df58050ac63e22cebd13a5228207f5960cf2cde5830a46c9ec7a4c216f5e6fb71887f4 test-disable-nfs-test.patch"
+sha512sums="3c4a4d503391b1a648a08a4947c2e72a9629b169eddf50738b16a16a82f2a26967e4db2902e4a9157de5a73ae638db48e392117ffbd591e9fafd6b1725cd01a0 lsof-4.93.2.tar.gz
+d6f2f5b991c137abf30b8cd29eebaf7662f7255e6d99b7fba5c945eba09a2c7ce7c444895e72c6871a7d90fe3ad8ca28b052a428127ba0342b13b3b027a3c77f utmps.patch
+f2128d3aa3183244ade8a553f5a1ca7a5db571eae4ebd9c87c05f4b2996de152796573dd35d9c57d0f35671f2eb928b66fe637b1693ec1b8828c9a8d739c6771 test-disable-nfs-test.patch
+72923d42db63435a95b07d17b6c6e8ac64f1a8f20505f851ed706783078bce0c49cac61dd8c05c08d24333c07ad981aaf34d4a4e4d1edb2a82ae8c9e9b8328e0 test-enable-suite.patch
+14473839fa695e84cddac8bc1a33e06aba082bcc56baa6c4a6134a6c55ec1c9d08f756dab483785c0796a9442345853f7762fed76efb60a732fbc709bb06d25f test-linux-sysmacros.patch"
diff --git a/user/lsof/test-disable-nfs-test.patch b/user/lsof/test-disable-nfs-test.patch
index 9ccb11cf9..ed1b88ed4 100644
--- a/user/lsof/test-disable-nfs-test.patch
+++ b/user/lsof/test-disable-nfs-test.patch
@@ -1,7 +1,7 @@
LTnfs requires a NFS filesystem in order to run.
---- lsof_4.91/lsof_4.91_src/tests/Makefile 2006-01-10 13:27:52.000000000 -0500
-+++ lsof_4.91/lsof_4.91_src/tests/Makefile 2018-09-12 18:27:52.309560442 -0400
+--- lsof_4.91/tests/Makefile 2006-01-10 13:27:52.000000000 -0500
++++ lsof_4.91/tests/Makefile 2018-09-12 18:27:52.309560442 -0400
@@ -19,7 +19,7 @@
BASTST= LTbasic
diff --git a/user/lsof/test-enable-suite.patch b/user/lsof/test-enable-suite.patch
index 7601aa9c0..c5fc9286c 100644
--- a/user/lsof/test-enable-suite.patch
+++ b/user/lsof/test-enable-suite.patch
@@ -1,5 +1,5 @@
---- lsof_4.91/lsof_4.91_src/tests/CkTestDB 2010-02-12 15:37:05.000000000 -0500
-+++ lsof_4.91/lsof_4.91_src/tests/CkTestDB 2018-09-12 18:22:36.179562676 -0400
+--- lsof_4.91/tests/CkTestDB 2010-02-12 15:37:05.000000000 -0500
++++ lsof_4.91/tests/CkTestDB 2018-09-12 18:22:36.179562676 -0400
@@ -67,6 +68,5 @@
echo ""
- exit 1
diff --git a/user/lsof/test-linux-sysmacros.patch b/user/lsof/test-linux-sysmacros.patch
index bc75a9f39..1764f5369 100644
--- a/user/lsof/test-linux-sysmacros.patch
+++ b/user/lsof/test-linux-sysmacros.patch
@@ -1,5 +1,5 @@
---- lsof_4.91/lsof_4.91_src/tests/LTlib.c 2017-09-10 19:05:11.000000000 -0400
-+++ lsof_4.91/lsof_4.91_src/tests/LTlib.c 2018-09-12 18:05:26.719569950 -0400
+--- lsof_4.91/tests/LTlib.c 2017-09-10 19:05:11.000000000 -0400
++++ lsof_4.91/tests/LTlib.c 2018-09-12 18:05:26.719569950 -0400
@@ -189,6 +189,12 @@
#endif /* defined(LT_DIAL_uw) */
diff --git a/user/lsof/utmps.patch b/user/lsof/utmps.patch
index 91324e28e..f4790a818 100644
--- a/user/lsof/utmps.patch
+++ b/user/lsof/utmps.patch
@@ -1,5 +1,5 @@
---- lsof_4.91/lsof_4.91_src/Configure 2018-02-14 09:18:55.000000000 -0500
-+++ lsof_4.91/lsof_4.91_src/Configure 2018-09-12 17:48:25.269577168 -0400
+--- lsof_4.91/Configure 2018-02-14 09:18:55.000000000 -0500
++++ lsof_4.91/Configure 2018-09-12 17:48:25.269577168 -0400
@@ -2943,6 +2943,12 @@
LSOF_CFGF="$LSOF_CFGF -DHASIPv6"
fi # }
diff --git a/user/lua-expat/32bit.patch b/user/lua-expat/32bit.patch
new file mode 100644
index 000000000..5a09710e1
--- /dev/null
+++ b/user/lua-expat/32bit.patch
@@ -0,0 +1,11 @@
+--- luaexpat-1.3.3/makefile.old 2018-11-27 11:31:28.000000000 +0000
++++ luaexpat-1.3.3/makefile 2020-01-24 06:06:47.843102618 +0000
+@@ -36,7 +36,7 @@
+ -Wpointer-arith \
+ -Wshadow \
+ -Wwrite-strings \
+- -DLUA_C89_NUMBERS
++ -Wno-long-long
+
+ CFLAGS = -fPIC -std=gnu99 $(CWARNS) -ansi -O2 -I$(LUA_INC) -I$(EXPAT_INC)
+ CC = gcc
diff --git a/user/lua-expat/APKBUILD b/user/lua-expat/APKBUILD
index 9c8a6713a..fdf5af454 100644
--- a/user/lua-expat/APKBUILD
+++ b/user/lua-expat/APKBUILD
@@ -1,9 +1,8 @@
# Contributor: Mika Havela <mika.havela@gmail.com>
# Contribtor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lua-expat
-_name=expat
-pkgver=1.3.0
+pkgver=1.3.3
pkgrel=0
pkgdesc="SAX XML parser based on the Expat library"
url="https://matthewwild.co.uk/projects/luaexpat/"
@@ -11,22 +10,25 @@ arch="all"
license="MIT"
depends="lua5.3"
makedepends="lua5.3-dev expat-dev"
-source="http://matthewwild.co.uk/projects/luaexpat/luaexpat-$pkgver.tar.gz"
+source="$pkgname-$pkgver.tar.gz::https://github.com/tomasguisasola/luaexpat/archive/v1.3.3.tar.gz
+ 32bit.patch
+ "
builddir="$srcdir/luaexpat-$pkgver"
build() {
- cd "$builddir"
make LUA_V=5.3
}
check() {
- cd "$builddir"
- LUA_CPATH="./src/?.so" lua tests/test.lua
+ LUA_CPATH="./src/?.so.1.3.3" lua tests/test.lua
}
package() {
- cd "$builddir"
- make LUA_V=5.3 DESTDIR="$pkgdir" install
+ make \
+ LUA_LIBDIR="$pkgdir"/usr/lib/lua5.3 \
+ LUA_DIR="$pkgdir"/usr/share/lua5.3 \
+ LUA_V=5.3 DESTDIR="$pkgdir" install
}
-sha512sums="91884653310e2dc89ade6d1653875ac8607640a21853d3ccb1fd0f833812e41981fad5c40101732ec249104d2c50c9a332208d1e44423b8428065a223c60b4ae luaexpat-1.3.0.tar.gz"
+sha512sums="aa3f730c64cae3791fc1125302178ec2398d2380e8ec0e65ca4b29f532f181f149baaf555bf687e502b28726d3fd0baafd4f73cf26f04f625d18bbaddb043d63 lua-expat-1.3.3.tar.gz
+ac5b05991dfe36bcc0c9ff7570110dbb1face387c0b65e4735b99cedaff5e29311a919b5e8ce6dae2ac674eadd2fa0bea6ec547754071d325dcce6460eeef36e 32bit.patch"
diff --git a/user/lua-filesystem/APKBUILD b/user/lua-filesystem/APKBUILD
index e809a654f..0b6b18f94 100644
--- a/user/lua-filesystem/APKBUILD
+++ b/user/lua-filesystem/APKBUILD
@@ -1,9 +1,9 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lua-filesystem
_pkgname=luafilesystem
-pkgver=1.7.0.2
-_pkgver=${pkgver//./_}
+pkgver=1.8.0
+_pkgver=$(printf '%s' "$pkgver" | tr . _)
_rockver=${pkgver%.*}-${pkgver##*.}
pkgrel=0
pkgdesc="Filesystem functions for Lua"
@@ -16,21 +16,18 @@ source="$_pkgname-$pkgver.tar.gz::https://github.com/keplerproject/$_pkgname/arc
builddir="$srcdir/$_pkgname-$_pkgver"
build() {
- cd "$builddir"
make CFLAGS="$CFLAGS $(pkg-config lua --cflags) -fPIC"
}
check() {
- cd "$builddir"
LUA_CPATH=./src/?.so lua tests/test.lua
}
package() {
- local rockdir="$pkgdir"/usr/lib/luarocks/rocks-5.3/$_rockname/$_rockver
- cd "$builddir"
- make LUA_LIBDIR="$pkgdir"/$(pkg-config --variable=INSTALL_CMOD lua5.3) install
+ rockdir="$pkgdir/usr/lib/luarocks/rocks-5.3/$_pkgname/$_rockver"
+ make LUA_LIBDIR="$pkgdir/$(pkg-config --variable=INSTALL_CMOD lua)" install
mkdir -p "$rockdir"
echo 'rock_manifest = {}' > "$rockdir"/rock_manifest
}
-sha512sums="a1d4d077776e57cd878dbcd21656da141ea3686c587b5420a2b039aeaf086b7e7d05d531ee1cc2bbd7d06660d1315b09593e52143f6711f033ce8eecdc550511 luafilesystem-1.7.0.2.tar.gz"
+sha512sums="79d964f13ae43716281dc8521d2f128b22f2261234c443e242b857cfdf621e208bdf4512f8ba710baa113e9b3b71e2544609de65e2c483f569c243a5cf058247 luafilesystem-1.8.0.tar.gz"
diff --git a/user/lua-lgi/APKBUILD b/user/lua-lgi/APKBUILD
index f9b07ca3b..be1bd5334 100644
--- a/user/lua-lgi/APKBUILD
+++ b/user/lua-lgi/APKBUILD
@@ -6,8 +6,8 @@ pkgrel=0
pkgdesc="Dynamic Lua binding to GObject libraries using GObject-Introspection"
url="https://github.com/pavouk/lgi"
arch="all"
+options="!check" # Test suite requires D-Bus.
license="MIT"
-options="!check" # checks require dbus
depends=""
makedepends="glib-dev gobject-introspection-dev libffi-dev lua5.3-dev"
subpackages="$pkgname-doc"
@@ -15,18 +15,15 @@ source="lgi-$pkgver.tar.gz::https://github.com/pavouk/lgi/archive/$pkgver.tar.gz
builddir="$srcdir"/lgi-$pkgver
build() {
- cd "$builddir"
make PREFIX=/usr LUA_VERSION="5.3" \
LUA_CFLAGS="$(pkg-config --cflags lua)"
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make install PREFIX=/usr LUA_VERSION="5.3" DESTDIR="$pkgdir"
mkdir -p "$pkgdir"/usr/share/doc/lua-lgi
diff --git a/user/lua-sec/APKBUILD b/user/lua-sec/APKBUILD
index e6fe5e684..2ab2f12fc 100644
--- a/user/lua-sec/APKBUILD
+++ b/user/lua-sec/APKBUILD
@@ -1,26 +1,24 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer:
pkgname=lua-sec
-pkgver=0.7
+pkgver=0.9
pkgrel=0
pkgdesc="TLS/SSL Support for Lua"
url="https://github.com/brunoos/luasec/wiki"
arch="all"
-options="!check" # no tests
+options="!check" # No test suite.
license="MIT"
depends="lua5.3 lua-socket"
makedepends="lua5.3-dev openssl-dev"
subpackages="$pkgname-doc"
-source="luasec-$pkgver.tar.gz::https://github.com/brunoos/luasec/archive/luasec-$pkgver.tar.gz"
-builddir="$srcdir/luasec-luasec-$pkgver"
+source="luasec-$pkgver.tar.gz::https://github.com/brunoos/luasec/archive/v$pkgver.tar.gz"
+builddir="$srcdir/luasec-$pkgver"
build() {
- cd "$builddir"
make linux INC_PATH="$(pkg-config --cflags lua)" LD="${CC:-gcc}"
}
package() {
- cd "$builddir"
make \
LUAPATH="$pkgdir"/usr/share/lua/5.3 \
LUACPATH="$pkgdir"/usr/lib/lua/5.3 \
@@ -29,4 +27,4 @@ package() {
cp -r samples "$pkgdir"/usr/share/doc/$pkgname/
}
-sha512sums="6adf5241aa5a0d92c9dd7fc7f7e426969475548f47979ccc28187471b3bad4132c215de6da1f471d21b05c6558d36309264512c9c4ac70a53d6f6e204cac1358 luasec-0.7.tar.gz"
+sha512sums="ea601016328232ca0ff12be72897eeedac88a78834a63e1c36d2828a3187039665a2c60597b5af1fa6917b6fe87cd292fbcdfabcd67bab968f587e038d52a933 luasec-0.9.tar.gz"
diff --git a/user/lua-socket/0001-Create-socket-on-first-sendto-if-family-agnostic-udp.patch b/user/lua-socket/0001-Create-socket-on-first-sendto-if-family-agnostic-udp.patch
deleted file mode 100644
index 61bae6fbf..000000000
--- a/user/lua-socket/0001-Create-socket-on-first-sendto-if-family-agnostic-udp.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-From 3041a808c3797e3c87272d71666e7b2f7c7a9f46 Mon Sep 17 00:00:00 2001
-From: Natanael Copa <ncopa@alpinelinux.org>
-Date: Wed, 25 Jan 2017 12:43:29 +0100
-Subject: [PATCH] Create socket on first sendto if family agnostic udp() was
- used
-
-Create socket and set family on first sendto() if udp() was created
-without address family.
-
-Signed-off-by: Natanael Copa <ncopa@alpinelinux.org>
----
- src/udp.c | 21 +++++++++++++++++++++
- 1 file changed, 21 insertions(+)
-
-diff --git a/src/udp.c b/src/udp.c
-index ec97252..605c195 100644
---- a/src/udp.c
-+++ b/src/udp.c
-@@ -189,6 +189,27 @@ static int meth_sendto(lua_State *L) {
- lua_pushstring(L, gai_strerror(err));
- return 2;
- }
-+
-+ /* create socket if on first sendto if AF_UNSPEC was set */
-+ if (udp->family == AF_UNSPEC && udp->sock == SOCKET_INVALID) {
-+ struct addrinfo *ap;
-+ const char *errstr = NULL;
-+ for (ap = ai; ap != NULL; ap = ap->ai_next) {
-+ errstr = inet_trycreate(&udp->sock, ap->ai_family, SOCK_DGRAM, 0);
-+ if (errstr == NULL) {
-+ socket_setnonblocking(&udp->sock);
-+ udp->family = ap->ai_family;
-+ break;
-+ }
-+ }
-+ if (errstr != NULL) {
-+ lua_pushnil(L);
-+ lua_pushstring(L, errstr);
-+ freeaddrinfo(ai);
-+ return 2;
-+ }
-+ }
-+
- timeout_markstart(tm);
- err = socket_sendto(&udp->sock, data, count, &sent, ai->ai_addr,
- (socklen_t) ai->ai_addrlen, tm);
---
-2.11.0
-
diff --git a/user/lua-socket/APKBUILD b/user/lua-socket/APKBUILD
index 16bfbcf40..a9c0f7af0 100644
--- a/user/lua-socket/APKBUILD
+++ b/user/lua-socket/APKBUILD
@@ -1,41 +1,33 @@
# Contributor: Mika Havela <mika.havela@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lua-socket
-_name=luasocket
-pkgver=3.0_rc1_git20160306
+_pkgname=luasocket
+pkgver=3.1.0
pkgrel=0
-_ver=${pkgver%_git*}
-_ver=${_ver/_rc/-rc}
+_luaver=5.3
+_socketver=3.0.0
+_mimever=1.0.3
pkgdesc="Networking library for Lua"
-url="http://luaforge.net/projects/luasocket/"
+url="https://lunarmodules.github.io/luasocket/"
arch="all"
license="MIT"
-depends="lua5.3"
-makedepends="lua5.3-dev"
-source="luasocket-$_ver.tar.gz::https://github.com/diegonehab/luasocket/archive/v$_ver.tar.gz
- git.patch
- lua-cflags.patch
- 0001-Create-socket-on-first-sendto-if-family-agnostic-udp.patch"
-builddir="$srcdir/$_name-$_ver"
+depends="lua$_luaver"
+makedepends="lua$_luaver-dev"
+source="$pkgname-$pkgver.tar.gz::https://github.com/lunarmodules/luasocket/archive/refs/tags/v$pkgver.tar.gz"
+builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
- make LUAV=""
+ make linux prefix=/usr LUAV="$_luaver"
}
check() {
- cd "$builddir"
- mkdir -p src/socket && cp src/socket-$_ver.so src/socket/core.so
- mkdir -p src/mime && cp src/mime-1.0.3.so src/mime/core.so
+ cp src/socket-$_socketver.so src/socket.so
+ cp src/mime-$_mimever.so src/mime.so
LUA_CPATH=./src/?.so LUA_PATH="./src/?.lua;;" lua test/hello.lua
}
package() {
- cd "$builddir"
- make prefix=/usr DESTDIR="$pkgdir" LUAV="5.3" install-unix
+ make prefix=/usr DESTDIR="$pkgdir" LUAV="$_luaver" install-unix
}
-sha512sums="f6efce259aaacaa11472911471f8a13b118fe009b8953a82c6aa18b9ec829cd1293180904e56935cb130d36d267e3f27c91db2d78e03f7488f3e100571ed0540 luasocket-3.0-rc1.tar.gz
-45c80e488fedc879f0217bc8a654d80da003039f5d1ff21b0dea0eb769151787dbe793e44a3dfd72cb07ff2697eceaf4fc7b55b4634cd170fa71281f19f025a5 git.patch
-61c15238a2f116b7239fdbdb8f617c82dbbecd0117c6e8389b12015bf07f3978299a8e8995e93a45a23530c747662b08d161073cdb6a8e07c4f449e45856e8cb lua-cflags.patch
-c45a12e17771a1b3b71154b5415421f524cd10b7969b4649a5f37b652cdc826721e117edb8fe64758d3520e59946e2f755b814f72cbb39ff42bf59bbcf9a64e9 0001-Create-socket-on-first-sendto-if-family-agnostic-udp.patch"
+sha512sums="1e9e98484740ec6538fe3d2b0dab74d31f052956ecf9ee3b60e229f2d0b13fcc6d4aaf74cd2a3e2ee330333dabb316fe6a43c60baaea26f0cc01069b6aa4519b lua-socket-3.1.0.tar.gz"
diff --git a/user/lua-socket/git.patch b/user/lua-socket/git.patch
deleted file mode 100644
index d665fc232..000000000
--- a/user/lua-socket/git.patch
+++ /dev/null
@@ -1,6609 +0,0 @@
-diff --git a/doc/http.html b/doc/http.html
-index cd41c0d..3b7a8b1 100644
---- a/doc/http.html
-+++ b/doc/http.html
-@@ -112,12 +112,15 @@ the HTTP module:
- </p>
-
- <ul>
--<li> <tt>PORT</tt>: default port used for connections;
--<li> <tt>PROXY</tt>: default proxy used for connections;
-+<li> <tt>PROXY</tt>: default proxy used for connections;
- <li> <tt>TIMEOUT</tt>: sets the timeout for all I/O operations;
- <li> <tt>USERAGENT</tt>: default user agent reported to server.
- </ul>
-
-+<p class=note id="post">
-+Note: These constants are global. Changing them will also
-+change the behavior other code that might be using LuaSocket.
-+</p>
-
- <!-- http.request ++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
-diff --git a/doc/mime.html b/doc/mime.html
-index ae136fd..8cb3507 100644
---- a/doc/mime.html
-+++ b/doc/mime.html
-@@ -72,34 +72,6 @@ local mime = require("mime")
-
- <h3 id=high>High-level filters</h3>
-
--<!-- normalize ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
--
--<p class=name id="normalize">
--mime.<b>normalize(</b>[marker]<b>)</b>
--</p>
--
--<p class=description>
--Converts most common end-of-line markers to a specific given marker.
--</p>
--
--<p class=parameters>
--<tt>Marker</tt> is the new marker. It defaults to CRLF, the canonic
--end-of-line marker defined by the MIME standard.
--</p>
--
--<p class=return>
--The function returns a filter that performs the conversion.
--</p>
--
--<p class=note>
--Note: There is no perfect solution to this problem. Different end-of-line
--markers are an evil that will probably plague developers forever.
--This function, however, will work perfectly for text created with any of
--the most common end-of-line markers, i.e. the Mac OS (CR), the Unix (LF),
--or the DOS (CRLF) conventions. Even if the data has mixed end-of-line
--markers, the function will still work well, although it doesn't
--guarantee that the number of empty lines will be correct.
--</p>
-
- <!-- decode +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
-@@ -159,6 +131,35 @@ base64 = ltn12.filter.chain(
- )
- </pre>
-
-+<!-- normalize ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+
-+<p class=name id="normalize">
-+mime.<b>normalize(</b>[marker]<b>)</b>
-+</p>
-+
-+<p class=description>
-+Converts most common end-of-line markers to a specific given marker.
-+</p>
-+
-+<p class=parameters>
-+<tt>Marker</tt> is the new marker. It defaults to CRLF, the canonic
-+end-of-line marker defined by the MIME standard.
-+</p>
-+
-+<p class=return>
-+The function returns a filter that performs the conversion.
-+</p>
-+
-+<p class=note>
-+Note: There is no perfect solution to this problem. Different end-of-line
-+markers are an evil that will probably plague developers forever.
-+This function, however, will work perfectly for text created with any of
-+the most common end-of-line markers, i.e. the Mac OS (CR), the Unix (LF),
-+or the DOS (CRLF) conventions. Even if the data has mixed end-of-line
-+markers, the function will still work well, although it doesn't
-+guarantee that the number of empty lines will be correct.
-+</p>
-+
- <!-- stuff +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
- <p class=name id="stuff">
-@@ -466,7 +467,7 @@ marker.
- <p>
- <small>
- Last modified by Diego Nehab on <br>
--Thu Apr 20 00:25:44 EDT 2006
-+Fri Mar 4 15:19:17 BRT 2016
- </small>
- </p>
- </center>
-diff --git a/doc/reference.css b/doc/reference.css
-index b1dd25d..04e38cf 100644
---- a/doc/reference.css
-+++ b/doc/reference.css
-@@ -2,6 +2,7 @@ body {
- margin-left: 1em;
- margin-right: 1em;
- font-family: "Verdana", sans-serif;
-+ background: #ffffff;
- }
-
- tt {
-diff --git a/doc/reference.html b/doc/reference.html
-index e9bb5eb..287dc19 100644
---- a/doc/reference.html
-+++ b/doc/reference.html
-@@ -147,6 +147,7 @@ Support, Manual">
- <a href="socket.html#connect">connect</a>,
- <a href="socket.html#connect">connect4</a>,
- <a href="socket.html#connect">connect6</a>,
-+<a href="socket.html#datagramsize">_DATAGRAMSIZE</a>,
- <a href="socket.html#debug">_DEBUG</a>,
- <a href="dns.html#dns">dns</a>,
- <a href="socket.html#gettime">gettime</a>,
-@@ -158,11 +159,14 @@ Support, Manual">
- <a href="socket.html#skip">skip</a>,
- <a href="socket.html#sleep">sleep</a>,
- <a href="socket.html#setsize">_SETSIZE</a>,
-+<a href="socket.html#socketinvalid">_SOCKETINVALID</a>,
- <a href="socket.html#source">source</a>,
- <a href="tcp.html#socket.tcp">tcp</a>,
-+<a href="tcp.html#socket.tcp4">tcp4</a>,
- <a href="tcp.html#socket.tcp6">tcp6</a>,
- <a href="socket.html#try">try</a>,
- <a href="udp.html#socket.udp">udp</a>,
-+<a href="udp.html#socket.udp4">udp4</a>,
- <a href="udp.html#socket.udp6">udp6</a>,
- <a href="socket.html#version">_VERSION</a>.
- </blockquote>
-@@ -183,6 +187,7 @@ Support, Manual">
- <a href="tcp.html#getpeername">getpeername</a>,
- <a href="tcp.html#getsockname">getsockname</a>,
- <a href="tcp.html#getstats">getstats</a>,
-+<a href="tcp.html#gettimeout">gettimeout</a>,
- <a href="tcp.html#listen">listen</a>,
- <a href="tcp.html#receive">receive</a>,
- <a href="tcp.html#send">send</a>,
-@@ -203,6 +208,7 @@ Support, Manual">
- <a href="udp.html#getoption">getoption</a>,
- <a href="udp.html#getpeername">getpeername</a>,
- <a href="udp.html#getsockname">getsockname</a>,
-+<a href="udp.html#gettimeout">gettimeout</a>,
- <a href="udp.html#receive">receive</a>,
- <a href="udp.html#receivefrom">receivefrom</a>,
- <a href="udp.html#send">send</a>,
-diff --git a/doc/smtp.html b/doc/smtp.html
-index bbbff80..600ec37 100644
---- a/doc/smtp.html
-+++ b/doc/smtp.html
-@@ -114,6 +114,124 @@ the SMTP module:
- <li> <tt>ZONE</tt>: default time zone.
- </ul>
-
-+<!-- message ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+
-+<p class=name id=message>
-+smtp.<b>message(</b>mesgt<b>)</b>
-+</p>
-+
-+<p class=description>
-+Returns a <em>simple</em>
-+<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a> source that sends an SMTP message body, possibly multipart (arbitrarily deep).
-+</p>
-+
-+<p class=parameters>
-+The only parameter of the function is a table describing the message.
-+<tt>Mesgt</tt> has the following form (notice the recursive structure):
-+</p>
-+
-+<blockquote>
-+<table summary="Mesgt table structure">
-+<tr><td><tt>
-+mesgt = {<br>
-+&nbsp;&nbsp;headers = <i>header-table</i>,<br>
-+&nbsp;&nbsp;body = <i>LTN12 source</i> or <i>string</i> or
-+<i>multipart-mesgt</i><br>
-+}<br>
-+&nbsp;<br>
-+multipart-mesgt = {<br>
-+&nbsp;&nbsp;[preamble = <i>string</i>,]<br>
-+&nbsp;&nbsp;[1] = <i>mesgt</i>,<br>
-+&nbsp;&nbsp;[2] = <i>mesgt</i>,<br>
-+&nbsp;&nbsp;...<br>
-+&nbsp;&nbsp;[<i>n</i>] = <i>mesgt</i>,<br>
-+&nbsp;&nbsp;[epilogue = <i>string</i>,]<br>
-+}<br>
-+</tt></td></tr>
-+</table>
-+</blockquote>
-+
-+<p class=parameters>
-+For a simple message, all that is needed is a set of <tt>headers</tt>
-+and the <tt>body</tt>. The message <tt>body</tt> can be given as a string
-+or as a <em>simple</em>
-+<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
-+source. For multipart messages, the body is a table that
-+recursively defines each part as an independent message, plus an optional
-+<tt>preamble</tt> and <tt>epilogue</tt>.
-+</p>
-+
-+<p class=return>
-+The function returns a <em>simple</em>
-+<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
-+source that produces the
-+message contents as defined by <tt>mesgt</tt>, chunk by chunk.
-+Hopefully, the following
-+example will make things clear. When in doubt, refer to the appropriate RFC
-+as listed in the introduction. </p>
-+
-+<pre class=example>
-+-- load the smtp support and its friends
-+local smtp = require("socket.smtp")
-+local mime = require("mime")
-+local ltn12 = require("ltn12")
-+
-+-- creates a source to send a message with two parts. The first part is
-+-- plain text, the second part is a PNG image, encoded as base64.
-+source = smtp.message{
-+ headers = {
-+ -- Remember that headers are *ignored* by smtp.send.
-+ from = "Sicrano de Oliveira &lt;sicrano@example.com&gt;",
-+ to = "Fulano da Silva &lt;fulano@example.com&gt;",
-+ subject = "Here is a message with attachments"
-+ },
-+ body = {
-+ preamble = "If your client doesn't understand attachments, \r\n" ..
-+ "it will still display the preamble and the epilogue.\r\n" ..
-+ "Preamble will probably appear even in a MIME enabled client.",
-+ -- first part: no headers means plain text, us-ascii.
-+ -- The mime.eol low-level filter normalizes end-of-line markers.
-+ [1] = {
-+ body = mime.eol(0, [[
-+ Lines in a message body should always end with CRLF.
-+ The smtp module will *NOT* perform translation. However, the
-+ send function *DOES* perform SMTP stuffing, whereas the message
-+ function does *NOT*.
-+ ]])
-+ },
-+ -- second part: headers describe content to be a png image,
-+ -- sent under the base64 transfer content encoding.
-+ -- notice that nothing happens until the message is actually sent.
-+ -- small chunks are loaded into memory right before transmission and
-+ -- translation happens on the fly.
-+ [2] = {
-+ headers = {
-+ ["content-type"] = 'image/png; name="image.png"',
-+ ["content-disposition"] = 'attachment; filename="image.png"',
-+ ["content-description"] = 'a beautiful image',
-+ ["content-transfer-encoding"] = "BASE64"
-+ },
-+ body = ltn12.source.chain(
-+ ltn12.source.file(io.open("image.png", "rb")),
-+ ltn12.filter.chain(
-+ mime.encode("base64"),
-+ mime.wrap()
-+ )
-+ )
-+ },
-+ epilogue = "This might also show up, but after the attachments"
-+ }
-+}
-+
-+-- finally send it
-+r, e = smtp.send{
-+ from = "&lt;sicrano@example.com&gt;",
-+ rcpt = "&lt;fulano@example.com&gt;",
-+ source = source,
-+}
-+</pre>
-+
-+
- <!-- send +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
- <p class=name id=send>
-@@ -275,123 +393,6 @@ r, e = smtp.send{
- }
- </pre>
-
--<!-- message ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
--
--<p class=name id=message>
--smtp.<b>message(</b>mesgt<b>)</b>
--</p>
--
--<p class=description>
--Returns a <em>simple</em>
--<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a> source that sends an SMTP message body, possibly multipart (arbitrarily deep).
--</p>
--
--<p class=parameters>
--The only parameter of the function is a table describing the message.
--<tt>Mesgt</tt> has the following form (notice the recursive structure):
--</p>
--
--<blockquote>
--<table summary="Mesgt table structure">
--<tr><td><tt>
--mesgt = {<br>
--&nbsp;&nbsp;headers = <i>header-table</i>,<br>
--&nbsp;&nbsp;body = <i>LTN12 source</i> or <i>string</i> or
--<i>multipart-mesgt</i><br>
--}<br>
--&nbsp;<br>
--multipart-mesgt = {<br>
--&nbsp;&nbsp;[preamble = <i>string</i>,]<br>
--&nbsp;&nbsp;[1] = <i>mesgt</i>,<br>
--&nbsp;&nbsp;[2] = <i>mesgt</i>,<br>
--&nbsp;&nbsp;...<br>
--&nbsp;&nbsp;[<i>n</i>] = <i>mesgt</i>,<br>
--&nbsp;&nbsp;[epilogue = <i>string</i>,]<br>
--}<br>
--</tt></td></tr>
--</table>
--</blockquote>
--
--<p class=parameters>
--For a simple message, all that is needed is a set of <tt>headers</tt>
--and the <tt>body</tt>. The message <tt>body</tt> can be given as a string
--or as a <em>simple</em>
--<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
--source. For multipart messages, the body is a table that
--recursively defines each part as an independent message, plus an optional
--<tt>preamble</tt> and <tt>epilogue</tt>.
--</p>
--
--<p class=return>
--The function returns a <em>simple</em>
--<a href="http://lua-users.org/wiki/FiltersSourcesAndSinks">LTN12</a>
--source that produces the
--message contents as defined by <tt>mesgt</tt>, chunk by chunk.
--Hopefully, the following
--example will make things clear. When in doubt, refer to the appropriate RFC
--as listed in the introduction. </p>
--
--<pre class=example>
---- load the smtp support and its friends
--local smtp = require("socket.smtp")
--local mime = require("mime")
--local ltn12 = require("ltn12")
--
---- creates a source to send a message with two parts. The first part is
---- plain text, the second part is a PNG image, encoded as base64.
--source = smtp.message{
-- headers = {
-- -- Remember that headers are *ignored* by smtp.send.
-- from = "Sicrano de Oliveira &lt;sicrano@example.com&gt;",
-- to = "Fulano da Silva &lt;fulano@example.com&gt;",
-- subject = "Here is a message with attachments"
-- },
-- body = {
-- preamble = "If your client doesn't understand attachments, \r\n" ..
-- "it will still display the preamble and the epilogue.\r\n" ..
-- "Preamble will probably appear even in a MIME enabled client.",
-- -- first part: no headers means plain text, us-ascii.
-- -- The mime.eol low-level filter normalizes end-of-line markers.
-- [1] = {
-- body = mime.eol(0, [[
-- Lines in a message body should always end with CRLF.
-- The smtp module will *NOT* perform translation. However, the
-- send function *DOES* perform SMTP stuffing, whereas the message
-- function does *NOT*.
-- ]])
-- },
-- -- second part: headers describe content to be a png image,
-- -- sent under the base64 transfer content encoding.
-- -- notice that nothing happens until the message is actually sent.
-- -- small chunks are loaded into memory right before transmission and
-- -- translation happens on the fly.
-- [2] = {
-- headers = {
-- ["content-type"] = 'image/png; name="image.png"',
-- ["content-disposition"] = 'attachment; filename="image.png"',
-- ["content-description"] = 'a beautiful image',
-- ["content-transfer-encoding"] = "BASE64"
-- },
-- body = ltn12.source.chain(
-- ltn12.source.file(io.open("image.png", "rb")),
-- ltn12.filter.chain(
-- mime.encode("base64"),
-- mime.wrap()
-- )
-- )
-- },
-- epilogue = "This might also show up, but after the attachments"
-- }
--}
--
---- finally send it
--r, e = smtp.send{
-- from = "&lt;sicrano@example.com&gt;",
-- rcpt = "&lt;fulano@example.com&gt;",
-- source = source,
--}
--</pre>
--
- <!-- footer +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
- <div class=footer>
-diff --git a/doc/socket.html b/doc/socket.html
-index b9303cb..35f8391 100644
---- a/doc/socket.html
-+++ b/doc/socket.html
-@@ -51,6 +51,30 @@ To obtain the <tt>socket</tt> namespace, run:
- local socket = require("socket")
- </pre>
-
-+<!-- headers.canonic ++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+
-+<p class=name id="headers.canonic">
-+socket.headers.<b>canonic</b></p>
-+
-+<p> The <tt>socket.headers.canonic</tt> table
-+is used by the HTTP and SMTP modules to translate from
-+lowercase field names back into their canonic
-+capitalization. When a lowercase field name exists as a key
-+in this table, the associated value is substituted in
-+whenever the field name is sent out.
-+</p>
-+
-+<p>
-+You can obtain the <tt>headers</tt> namespace if case run-time
-+modifications are required by running:
-+</p>
-+
-+<pre class=example>
-+-- loads the headers module
-+local headers = require("headers")
-+</pre>
-+
-+
- <!-- bind ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
- <p class=name id=bind>
-@@ -90,7 +114,7 @@ of connect are defined as simple helper functions that restrict the
-
- <!-- debug ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
--<p class=name id=debug>
-+<p class=name id=debug>
- socket.<b>_DEBUG</b>
- </p>
-
-@@ -99,6 +123,19 @@ This constant is set to <tt><b>true</b></tt> if the library was compiled
- with debug support.
- </p>
-
-+<!-- datagramsize +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+
-+<p class=name id=debug>
-+socket.<b>_DATAGRAMSIZE</b>
-+</p>
-+
-+<p class=description>
-+Default datagram size used by calls to
-+<a href="udp.html#receive"<tt>receive</tt></a> and
-+<a href="udp.html#receivefrom"><tt>receivefrom</tt></a>.
-+(Unless changed in compile time, the value is 8192.)
-+</p>
-+
- <!-- get time +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
- <p class=name id=gettime>
-@@ -106,8 +143,7 @@ socket.<b>gettime()</b>
- </p>
-
- <p class=description>
--Returns the time in seconds, relative to the origin of the
--universe. You should subtract the values returned by this function
-+Returns the UNIX time in seconds. You should subtract the values returned by this function
- to get meaningful values.
- </p>
-
-@@ -117,29 +153,6 @@ t = socket.gettime()
- print(socket.gettime() - t .. " seconds elapsed")
- </pre>
-
--<!-- socket.headers ++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
--
--<p class=name id="headers.canonic">
--socket.headers.<b>canonic</b></p>
--
--<p> The <tt>socket.headers.canonic</tt> table
--is used by the HTTP and SMTP modules to translate from
--lowercase field names back into their canonic
--capitalization. When a lowercase field name exists as a key
--in this table, the associated value is substituted in
--whenever the field name is sent out.
--</p>
--
--<p>
--You can obtain the <tt>headers</tt> namespace if case run-time
--modifications are required by running:
--</p>
--
--<pre class=example>
---- loads the headers module
--local headers = require("headers")
--</pre>
--
- <!-- newtry +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
- <p class=name id=newtry>
-@@ -155,8 +168,7 @@ is raised.
-
- <p class=parameters>
- <tt>Finalizer</tt> is a function that will be called before
--<tt>try</tt> throws the exception. It will be called
--in <em>protected</em> mode.
-+<tt>try</tt> throws the exception.
- </p>
-
- <p class=return>
-@@ -204,15 +216,9 @@ to throw exceptions.
- </p>
-
- <p class=return>
--Returns an equivalent function that instead of throwing exceptions,
--returns <tt><b>nil</b></tt> followed by an error message.
--</p>
--
--<p class=note>
--Note: Beware that if your function performs some illegal operation that
--raises an error, the protected function will catch the error and return it
--as a string. This is because the <a href=#try><tt>try</tt></a> function
--uses errors as the mechanism to throw exceptions.
-+Returns an equivalent function that instead of throwing exceptions in case of
-+a failed <a href=#try><tt>try</tt></a> call, returns <tt><b>nil</b></tt>
-+followed by an error message.
- </p>
-
- <!-- select +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-@@ -238,7 +244,9 @@ non-numeric indices) in the arrays will be silently ignored.
-
- <p class=return> The function returns a list with the sockets ready for
- reading, a list with the sockets ready for writing and an error message.
--The error message is "<tt>timeout</tt>" if a timeout condition was met and
-+The error message is "<tt>timeout</tt>" if a timeout
-+condition was met, "<tt>select failed</tt>" if the call
-+to <tt>select</tt> failed, and
- <tt><b>nil</b></tt> otherwise. The returned tables are
- doubly keyed both by integers and also by the sockets
- themselves, to simplify the test if a specific socket has
-@@ -246,7 +254,7 @@ changed status.
- </p>
-
- <p class=note>
--<b>Note: </b>: <tt>select</tt> can monitor a limited number
-+<b>Note:</b> <tt>select</tt> can monitor a limited number
- of sockets, as defined by the constant <tt>socket._SETSIZE</tt>. This
- number may be as high as 1024 or as low as 64 by default,
- depending on the system. It is usually possible to change this
-@@ -276,6 +284,18 @@ it to <tt>select</tt>, it will be ignored.
- <b>Using select with non-socket objects</b>: Any object that implements <tt>getfd</tt> and <tt>dirty</tt> can be used with <tt>select</tt>, allowing objects from other libraries to be used within a <tt>socket.select</tt> driven loop.
- </p>
-
-+<!-- setsize ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+
-+<p class=name id=setsize>
-+socket.<b>_SETSIZE</b>
-+</p>
-+
-+<p class=description>
-+The maximum number of sockets that the <a
-+href=#select><tt>select</tt></a> function can handle.
-+</p>
-+
-+
- <!-- sink ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
- <p class=name id=sink>
-@@ -383,15 +403,14 @@ side closes the connection.
- The function returns a source with the appropriate behavior.
- </p>
-
--<!-- setsize ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+<!-- socketinvalid ++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
--<p class=name id=setsize>
--socket.<b>_SETSIZE</b>
-+<p class=name id=socketinvalid>
-+socket.<b>_SOCKETINVALID</b>
- </p>
-
- <p class=description>
--The maximum number of sockets that the <a
--href=#select><tt>select</tt></a> function can handle.
-+The OS value for an invalid socket.
- </p>
-
- <!-- try ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-@@ -401,9 +420,9 @@ socket.<b>try(</b>ret<sub>1</sub> [, ret<sub>2</sub> ... ret<sub>N</sub>]<b>)</b
- </p>
-
- <p class=description>
--Throws an exception in case of error. The exception can only be caught
--by the <a href=#protect><tt>protect</tt></a> function. It does not explode
--into an error message.
-+Throws an exception in case <tt>ret<sub>1</sub></tt> is falsy, using
-+<tt>ret<sub>2</sub></tt> as the error message. The exception is supposed to be caught
-+by a <a href=#protect><tt>protect</tt></a>ed function only.
- </p>
-
- <p class=parameters>
-@@ -414,7 +433,10 @@ nested with <tt>try</tt>.
-
- <p class=return>
- The function returns <tt>ret</tt><sub>1</sub> to <tt>ret</tt><sub>N</sub> if
--<tt>ret</tt><sub>1</sub> is not <tt><b>nil</b></tt>. Otherwise, it calls <tt>error</tt> passing <tt>ret</tt><sub>2</sub>.
-+<tt>ret</tt><sub>1</sub> is not <tt><b>nil</b></tt> or <tt><b>false</b></tt>.
-+Otherwise, it calls <tt>error</tt> passing <tt>ret</tt><sub>2</sub> wrapped
-+in a table with metatable used by <a href=#protect><tt>protect</tt></a> to
-+distinguish exceptions from runtime errors.
- </p>
-
- <pre class=example>
-diff --git a/doc/tcp.html b/doc/tcp.html
-index 4226d78..c6c6eb2 100644
---- a/doc/tcp.html
-+++ b/doc/tcp.html
-@@ -1,10 +1,10 @@
--<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
-+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
- "http://www.w3.org/TR/html4/strict.dtd">
- <html>
-
- <head>
- <meta name="description" content="LuaSocket: The TCP/IP support">
--<meta name="keywords" content="Lua, LuaSocket, Socket, TCP, Library, Network, Support">
-+<meta name="keywords" content="Lua, LuaSocket, Socket, TCP, Library, Network, Support">
- <title>LuaSocket: TCP/IP support</title>
- <link rel="stylesheet" href="reference.css" type="text/css">
- </head>
-@@ -28,7 +28,7 @@
- <a href="index.html#download">download</a> &middot;
- <a href="installation.html">installation</a> &middot;
- <a href="introduction.html">introduction</a> &middot;
--<a href="reference.html">reference</a>
-+<a href="reference.html">reference</a>
- </p>
- </center>
- <hr>
-@@ -36,56 +36,11 @@
-
- <!-- tcp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
--<h2 id="tcp">TCP</h2>
--
--<!-- socket.tcp +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
--
--<p class=name id="socket.tcp">
--socket.<b>tcp()</b>
--</p>
--
--<p class=description>
--Creates and returns an IPv4 TCP master object. A master object can
--be transformed into a server object with the method
--<a href=#listen><tt>listen</tt></a> (after a call to <a
--href=#bind><tt>bind</tt></a>) or into a client object with
--the method <a href=#connect><tt>connect</tt></a>. The only other
--method supported by a master object is the
--<a href=#close><tt>close</tt></a> method.</p>
--
--<p class=return>
--In case of success, a new master object is returned. In case of error,
--<b><tt>nil</tt></b> is returned, followed by an error message.
--</p>
--
--<!-- socket.tcp6 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
--
--<p class=name id="socket.tcp6">
--socket.<b>tcp6()</b>
--</p>
--
--<p class=description>
--Creates and returns an IPv6 TCP master object. A master object can
--be transformed into a server object with the method
--<a href=#listen><tt>listen</tt></a> (after a call to <a
--href=#bind><tt>bind</tt></a>) or into a client object with
--the method <a href=#connect><tt>connect</tt></a>. The only other
--method supported by a master object is the
--<a href=#close><tt>close</tt></a> method.</p>
--
--<p class=return>
--In case of success, a new master object is returned. In case of error,
--<b><tt>nil</tt></b> is returned, followed by an error message.
--</p>
--
--<p class=note>
--Note: The TCP object returned will have the option
--"<tt>ipv6-v6only</tt>" set to <tt><b>true</b></tt>.
--</p>
-+<h2 id="tcp">TCP</h2>
-
- <!-- accept +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
--<p class=name id="accept">
-+<p class=name id="accept">
- server:<b>accept()</b>
- </p>
-
-@@ -95,9 +50,9 @@ object and returns a client object representing that connection.
- </p>
-
- <p class=return>
--If a connection is successfully initiated, a client object is returned.
-+If a connection is successfully initiated, a client object is returned.
- If a timeout condition is met, the method returns <b><tt>nil</tt></b>
--followed by the error string '<tt>timeout</tt>'. Other errors are
-+followed by the error string '<tt>timeout</tt>'. Other errors are
- reported by <b><tt>nil</tt></b> followed by a message describing the error.
- </p>
-
-@@ -107,28 +62,28 @@ with a server object in
- the <tt>recvt</tt> parameter before a call to <tt>accept</tt> does
- <em>not</em> guarantee <tt>accept</tt> will return immediately. Use the <a
- href=#settimeout><tt>settimeout</tt></a> method or <tt>accept</tt>
--might block until <em>another</em> client shows up.
-+might block until <em>another</em> client shows up.
- </p>
-
- <!-- bind +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
--<p class=name id="bind">
-+<p class=name id="bind">
- master:<b>bind(</b>address, port<b>)</b>
- </p>
-
- <p class=description>
- Binds a master object to <tt>address</tt> and <tt>port</tt> on the
--local host.
-+local host.
-
- <p class=parameters>
--<tt>Address</tt> can be an IP address or a host name.
--<tt>Port</tt> must be an integer number in the range [0..64K).
-+<tt>Address</tt> can be an IP address or a host name.
-+<tt>Port</tt> must be an integer number in the range [0..64K).
- If <tt>address</tt>
- is '<tt>*</tt>', the system binds to all local interfaces
- using the <tt>INADDR_ANY</tt> constant or
--<tt>IN6ADDR_ANY_INIT</tt>, according to the family.
-+<tt>IN6ADDR_ANY_INIT</tt>, according to the family.
- If <tt>port</tt> is 0, the system automatically
--chooses an ephemeral port.
-+chooses an ephemeral port.
- </p>
-
- <p class=return>
-@@ -137,13 +92,13 @@ method returns <b><tt>nil</tt></b> followed by an error message.
- </p>
-
- <p class=note>
--Note: The function <a href=socket.html#bind><tt>socket.bind</tt></a>
-+Note: The function <a href=socket.html#bind><tt>socket.bind</tt></a>
- is available and is a shortcut for the creation of server sockets.
- </p>
-
- <!-- close ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
--<p class=name id="close">
-+<p class=name id="close">
- master:<b>close()</b><br>
- client:<b>close()</b><br>
- server:<b>close()</b>
-@@ -154,14 +109,14 @@ Closes a TCP object. The internal socket used by the object is closed
- and the local address to which the object was
- bound is made available to other applications. No further operations
- (except for further calls to the <tt>close</tt> method) are allowed on
--a closed socket.
-+a closed socket.
- </p>
-
- <p class=note>
- Note: It is important to close all used sockets once they are not
- needed, since, in many systems, each socket uses a file descriptor,
- which are limited system resources. Garbage-collected objects are
--automatically closed before destruction, though.
-+automatically closed before destruction, though.
- </p>
-
- <!-- connect ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-@@ -172,19 +127,19 @@ master:<b>connect(</b>address, port<b>)</b>
-
- <p class=description>
- Attempts to connect a master object to a remote host, transforming it into a
--client object.
--Client objects support methods
-+client object.
-+Client objects support methods
- <a href=#send><tt>send</tt></a>,
--<a href=#receive><tt>receive</tt></a>,
--<a href=#getsockname><tt>getsockname</tt></a>,
-+<a href=#receive><tt>receive</tt></a>,
-+<a href=#getsockname><tt>getsockname</tt></a>,
- <a href=#getpeername><tt>getpeername</tt></a>,
--<a href=#settimeout><tt>settimeout</tt></a>,
-+<a href=#settimeout><tt>settimeout</tt></a>,
- and <a href=#close><tt>close</tt></a>.
- </p>
-
- <p class=parameters>
--<tt>Address</tt> can be an IP address or a host name.
--<tt>Port</tt> must be an integer number in the range [1..64K).
-+<tt>Address</tt> can be an IP address or a host name.
-+<tt>Port</tt> must be an integer number in the range [1..64K).
- </p>
-
- <p class=return>
-@@ -193,14 +148,14 @@ describing the error. In case of success, the method returns 1.
- </p>
-
- <p class=note>
--Note: The function <a href=socket.html#connect><tt>socket.connect</tt></a>
-+Note: The function <a href=socket.html#connect><tt>socket.connect</tt></a>
- is available and is a shortcut for the creation of client sockets.
- </p>
-
- <p class=note>
--Note: Starting with LuaSocket 2.0,
-+Note: Starting with LuaSocket 2.0,
- the <a href=#settimeout><tt>settimeout</tt></a>
--method affects the behavior of <tt>connect</tt>, causing it to return
-+method affects the behavior of <tt>connect</tt>, causing it to return
- with an error in case of a timeout. If that happens, you can still call <a
- href=socket.html#select><tt>socket.select</tt></a> with the socket in the
- <tt>sendt</tt> table. The socket will be writable when the connection is
-@@ -209,13 +164,88 @@ established.
-
- <p class=note>
- Note: Starting with LuaSocket 3.0, the host name resolution
--depends on whether the socket was created by <a
--href=#socket.tcp><tt>socket.tcp</tt></a> or <a
--href=#socket.tcp6><tt>socket.tcp6</tt></a>. Addresses from
--the appropriate family are tried in succession until the
--first success or until the last failure.
-+depends on whether the socket was created by
-+<a href=#socket.tcp><tt>socket.tcp</tt></a>,
-+<a href=#socket.tcp4><tt>socket.tcp4</tt></a> or
-+<a href=#socket.tcp6><tt>socket.tcp6</tt></a>. Addresses from
-+the appropriate family (or both) are tried in the order
-+returned by the resolver until the
-+first success or until the last failure. If the timeout was
-+set to zero, only the first address is tried.
-+</p>
-+
-+<!-- dirty +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+
-+<p class=name id="dirty">
-+master:<b>dirty()</b><br>
-+client:<b>dirty()</b><br>
-+server:<b>dirty()</b>
-+</p>
-+
-+<p class=description>
-+Check the read buffer status.
-+</p>
-+
-+<p class=return>
-+Returns <tt>true</tt> if there is any data in the read buffer, <tt>false</tt> otherwise.
-+</p>
-+
-+<p class=note>
-+Note: <b>This is an internal method, use at your own risk.</b>
-+</p>
-+
-+
-+<!-- getfd +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+
-+<p class=name id="getfd">
-+master:<b>getfd()</b><br>
-+client:<b>getfd()</b><br>
-+server:<b>getfd()</b>
-+</p>
-+
-+<p class=description>
-+Returns the underling socket descriptor or handle associated to the object.
-+</p>
-+
-+<p class=return>
-+The descriptor or handle. In case the object has been closed, the return will be -1.
-+</p>
-+
-+<p class=note>
-+Note: <b>This is an internal method. Unlikely to be
-+portable. Use at your own risk. </b>
-+</p>
-+
-+
-+<!-- getoption ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+
-+<p class=name id="getoption">
-+client:<b>getoption(</b>option)</b><br>
-+server:<b>getoption(</b>option)</b>
-+</p>
-+
-+<p class=description>
-+Gets options for the TCP object.
-+See <a href=#setoption><tt>setoption</tt></a> for description of the
-+option names and values.
-+</p>
-+
-+<p class=parameters>
-+<tt>Option</tt> is a string with the option name.
-+<ul>
-+
-+<li> '<tt>keepalive</tt>'
-+<li> '<tt>linger</tt>'
-+<li> '<tt>reuseaddr</tt>'
-+<li> '<tt>tcp-nodelay</tt>'
-+</ul>
-+
-+<p class=return>
-+The method returns the option <tt>value</tt> in case of success, or
-+<b><tt>nil</tt></b> followed by an error message otherwise.
- </p>
-
-+
- <!-- getpeername ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
- <p class=name id="getpeername">
-@@ -227,10 +257,10 @@ Returns information about the remote side of a connected client object.
- </p>
-
- <p class=return>
--Returns a string with the IP address of the peer, the
--port number that peer is using for the connection,
--and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
--In case of error, the method returns <b><tt>nil</tt></b>.
-+Returns a string with the IP address of the peer, the
-+port number that peer is using for the connection,
-+and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
-+In case of error, the method returns <b><tt>nil</tt></b>.
- </p>
-
- <p class=note>
-@@ -246,13 +276,13 @@ server:<b>getsockname()</b>
- </p>
-
- <p class=description>
--Returns the local address information associated to the object.
-+Returns the local address information associated to the object.
- </p>
-
- <p class=return>
--The method returns a string with local IP address, a number with
--the local port,
--and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
-+The method returns a string with local IP address, a number with
-+the local port,
-+and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
- In case of error, the method returns <b><tt>nil</tt></b>.
- </p>
-
-@@ -266,32 +296,46 @@ server:<b>getstats()</b><br>
-
- <p class=description>
- Returns accounting information on the socket, useful for throttling
--of bandwidth.
-+of bandwidth.
- </p>
-
- <p class=return>
- The method returns the number of bytes received, the number of bytes sent,
--and the age of the socket object in seconds.
-+and the age of the socket object in seconds.
- </p>
-
-+<!-- gettimeout +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+
-+<p class=name id="gettimeout">
-+master:<b>gettimeout()</b><br>
-+client:<b>gettimeout()</b><br>
-+server:<b>gettimeout()</b>
-+</p>
-+
-+<p class=description>
-+Returns the current block timeout followed by the curent
-+total timeout.
-+</p>
-+
-+
- <!-- listen ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
--<p class=name id="listen">
-+<p class=name id="listen">
- master:<b>listen(</b>backlog<b>)</b>
- </p>
-
- <p class=description>
- Specifies the socket is willing to receive connections, transforming the
--object into a server object. Server objects support the
--<a href=#accept><tt>accept</tt></a>,
--<a href=#getsockname><tt>getsockname</tt></a>,
--<a href=#setoption><tt>setoption</tt></a>,
--<a href=#settimeout><tt>settimeout</tt></a>,
--and <a href=#close><tt>close</tt></a> methods.
-+object into a server object. Server objects support the
-+<a href=#accept><tt>accept</tt></a>,
-+<a href=#getsockname><tt>getsockname</tt></a>,
-+<a href=#setoption><tt>setoption</tt></a>,
-+<a href=#settimeout><tt>settimeout</tt></a>,
-+and <a href=#close><tt>close</tt></a> methods.
- </p>
-
- <p class=parameters>
--The parameter <tt>backlog</tt> specifies the number of client
-+The parameter <tt>backlog</tt> specifies the number of client
- connections that can
- be queued waiting for service. If the queue is full and another client
- attempts connection, the connection is refused.
-@@ -310,11 +354,11 @@ client:<b>receive(</b>[pattern [, prefix]]<b>)</b>
-
- <p class=description>
- Reads data from a client object, according to the specified <em>read
--pattern</em>. Patterns follow the Lua file I/O format, and the difference in performance between all patterns is negligible.
-+pattern</em>. Patterns follow the Lua file I/O format, and the difference in performance between all patterns is negligible.
- </p>
-
- <p class=parameters>
--<tt>Pattern</tt> can be any of the following:
-+<tt>Pattern</tt> can be any of the following:
- </p>
-
- <ul>
-@@ -325,7 +369,7 @@ terminated by a LF character (ASCII&nbsp;10), optionally preceded by a
- CR character (ASCII&nbsp;13). The CR and LF characters are not included in
- the returned line. In fact, <em>all</em> CR characters are
- ignored by the pattern. This is the default pattern;
--<li> <tt>number</tt>: causes the method to read a specified <tt>number</tt>
-+<li> <tt>number</tt>: causes the method to read a specified <tt>number</tt>
- of bytes from the socket.
- </ul>
-
-@@ -347,10 +391,10 @@ closed before the transmission was completed or the string
- <p class=note>
- <b>Important note</b>: This function was changed <em>severely</em>. It used
- to support multiple patterns (but I have never seen this feature used) and
--now it doesn't anymore. Partial results used to be returned in the same
-+now it doesn't anymore. Partial results used to be returned in the same
- way as successful results. This last feature violated the idea that all
- functions should return <tt><b>nil</b></tt> on error. Thus it was changed
--too.
-+too.
- </p>
-
- <!-- send +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-@@ -366,7 +410,7 @@ Sends <tt>data</tt> through client object.
- <p class=parameters>
- <tt>Data</tt> is the string to be sent. The optional arguments
- <tt>i</tt> and <tt>j</tt> work exactly like the standard
--<tt>string.sub</tt> Lua function to allow the selection of a
-+<tt>string.sub</tt> Lua function to allow the selection of a
- substring to be sent.
- </p>
-
-@@ -385,10 +429,10 @@ there was a timeout during the operation.
- </p>
-
- <p class=note>
--Note: Output is <em>not</em> buffered. For small strings,
--it is always better to concatenate them in Lua
--(with the '<tt>..</tt>' operator) and send the result in one call
--instead of calling the method several times.
-+Note: Output is <em>not</em> buffered. For small strings,
-+it is always better to concatenate them in Lua
-+(with the '<tt>..</tt>' operator) and send the result in one call
-+instead of calling the method several times.
- </p>
-
- <!-- setoption ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-@@ -400,12 +444,12 @@ server:<b>setoption(</b>option [, value]<b>)</b>
-
- <p class=description>
- Sets options for the TCP object. Options are only needed by low-level or
--time-critical applications. You should only modify an option if you
--are sure you need it.
-+time-critical applications. You should only modify an option if you
-+are sure you need it.
- </p>
-
- <p class=parameters>
--<tt>Option</tt> is a string with the option name, and <tt>value</tt>
-+<tt>Option</tt> is a string with the option name, and <tt>value</tt>
- depends on the option being set:
-
- <ul>
-@@ -413,7 +457,7 @@ depends on the option being set:
- <li> '<tt>keepalive</tt>': Setting this option to <tt>true</tt> enables
- the periodic transmission of messages on a connected socket. Should the
- connected party fail to respond to these messages, the connection is
--considered broken and processes using the socket are notified;
-+considered broken and processes using the socket are notified;
-
- <li> '<tt>linger</tt>': Controls the action taken when unsent data are
- queued on a socket and a close is performed. The value is a table with a
-@@ -424,13 +468,13 @@ it is able to transmit the data or until '<tt>timeout</tt>' has passed. If
- '<tt>on</tt>' is <tt>false</tt> and a close is issued, the system will
- process the close in a manner that allows the process to continue as
- quickly as possible. I do not advise you to set this to anything other than
--zero;
-+zero;
-
- <li> '<tt>reuseaddr</tt>': Setting this option indicates that the rules
--used in validating addresses supplied in a call to
-+used in validating addresses supplied in a call to
- <a href=#bind><tt>bind</tt></a> should allow reuse of local addresses;
-
--<li> '<tt>tcp-nodelay</tt>': Setting this option to <tt>true</tt>
-+<li> '<tt>tcp-nodelay</tt>': Setting this option to <tt>true</tt>
- disables the Nagle's algorithm for the connection;
-
- <li> '<tt>ipv6-v6only</tt>':
-@@ -447,34 +491,6 @@ followed by an error message otherwise.
- Note: The descriptions above come from the man pages.
- </p>
-
--<!-- getoption ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
--
--<p class=name id="getoption">
--client:<b>getoption(</b>option)</b><br>
--server:<b>getoption(</b>option)</b>
--</p>
--
--<p class=description>
--Gets options for the TCP object.
--See <a href=#setoption><tt>setoption</tt></a> for description of the
--option names and values.
--</p>
--
--<p class=parameters>
--<tt>Option</tt> is a string with the option name.
--<ul>
--
--<li> '<tt>keepalive</tt>'
--<li> '<tt>linger</tt>'
--<li> '<tt>reuseaddr</tt>'
--<li> '<tt>tcp-nodelay</tt>'
--</ul>
--
--<p class=return>
--The method returns the option <tt>value</tt> in case of success, or
--<b><tt>nil</tt></b> followed by an error message otherwise.
--</p>
--
- <!-- setstats +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
- <p class=name id="setstats">
-@@ -485,7 +501,7 @@ server:<b>setstats(</b>received, sent, age<b>)</b><br>
-
- <p class=description>
- Resets accounting information on the socket, useful for throttling
--of bandwidth.
-+of bandwidth.
- </p>
-
- <p class=parameters>
-@@ -495,7 +511,7 @@ of bandwidth.
- </p>
-
- <p class=return>
--The method returns 1 in case of success and <tt><b>nil</b></tt> otherwise.
-+The method returns 1 in case of success and <tt><b>nil</b></tt> otherwise.
- </p>
-
- <!-- settimeout +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-@@ -509,8 +525,8 @@ server:<b>settimeout(</b>value [, mode]<b>)</b>
- <p class=description>
- Changes the timeout values for the object. By default,
- all I/O operations are blocking. That is, any call to the methods
--<a href=#send><tt>send</tt></a>,
--<a href=#receive><tt>receive</tt></a>, and
-+<a href=#send><tt>send</tt></a>,
-+<a href=#receive><tt>receive</tt></a>, and
- <a href=#accept><tt>accept</tt></a>
- will block indefinitely, until the operation completes. The
- <tt>settimeout</tt> method defines a limit on the amount of time the
-@@ -521,7 +537,7 @@ time has elapsed, the affected methods give up and fail with an error code.
- <p class=parameters>
- The amount of time to wait is specified as the
- <tt>value</tt> parameter, in seconds. There are two timeout modes and
--both can be used together for fine tuning:
-+both can be used together for fine tuning:
- </p>
-
- <ul>
-@@ -532,7 +548,7 @@ default mode;</li>
-
- <li> '<tt>t</tt>': <em>total</em> timeout. Specifies the upper limit on
- the amount of time LuaSocket can block a Lua script before returning from
--a call.</li>
-+a call.</li>
- </ul>
-
- <p class=parameters>
-@@ -562,7 +578,7 @@ client:<b>shutdown(</b>mode<b>)</b><br>
- </p>
-
- <p class=description>
--Shuts down part of a full-duplex connection.
-+Shuts down part of a full-duplex connection.
- </p>
-
- <p class=parameters>
-@@ -579,66 +595,107 @@ This is the default mode;
- This function returns 1.
- </p>
-
--<!-- dirty +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+<!-- setfd +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
--<p class=name id="dirty">
--master:<b>dirty()</b><br>
--client:<b>dirty()</b><br>
--server:<b>dirty()</b>
-+<p class=name id="setfd">
-+master:<b>setfd(</b>fd<b>)</b><br>
-+client:<b>setfd(</b>fd<b>)</b><br>
-+server:<b>setfd(</b>fd<b>)</b>
- </p>
-
- <p class=description>
--Check the read buffer status.
-+Sets the underling socket descriptor or handle associated to the object. The current one is simply replaced, not closed, and no other change to the object state is made.
- </p>
-
- <p class=return>
--Returns <tt>true</tt> if there is any data in the read buffer, <tt>false</tt> otherwise.
-+No return value.
- </p>
-
- <p class=note>
--Note: <b>This is an internal method, any use is unlikely to be portable.</b>
-+Note: <b>This is an internal method. Unlikely to be
-+portable. Use at your own risk. </b>
- </p>
-
--<!-- getfd +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+<!-- socket.tcp +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
--<p class=name id="getfd">
--master:<b>getfd()</b><br>
--client:<b>getfd()</b><br>
--server:<b>getfd()</b>
-+<p class=name id="socket.tcp">
-+socket.<b>tcp()</b>
- </p>
-
- <p class=description>
--Returns the underling socket descriptor or handle associated to the object.
--</p>
-+Creates and returns an TCP master object. A master object can
-+be transformed into a server object with the method
-+<a href=#listen><tt>listen</tt></a> (after a call to <a
-+href=#bind><tt>bind</tt></a>) or into a client object with
-+the method <a href=#connect><tt>connect</tt></a>. The only other
-+method supported by a master object is the
-+<a href=#close><tt>close</tt></a> method.</p>
-
- <p class=return>
--The descriptor or handle. In case the object has been closed, the return will be -1.
-+In case of success, a new master object is returned. In case of error,
-+<b><tt>nil</tt></b> is returned, followed by an error message.
- </p>
-
- <p class=note>
--Note: <b>This is an internal method, any use is unlikely to be portable.</b>
-+Note: The choice between IPv4 and IPv6 happens during a call to
-+<a href=#bind><tt>bind</tt></a> or <a
-+href=#bind><tt>connect</tt></a>, depending on the address
-+family obtained from the resolver.
- </p>
-
--<!-- setfd +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+<p class=note>
-+Note: Before the choice between IPv4 and IPv6 happens,
-+the internal socket object is invalid and therefore <a
-+href=#setoption><tt>setoption</tt></a> will fail.
-+</p>
-
--<p class=name id="setfd">
--master:<b>setfd(</b>fd<b>)</b><br>
--client:<b>setfd(</b>fd<b>)</b><br>
--server:<b>setfd(</b>fd<b>)</b>
-+<!-- socket.tcp +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+
-+<p class=name id="socket.tcp4">
-+socket.<b>tcp4()</b>
- </p>
-
- <p class=description>
--Sets the underling socket descriptor or handle associated to the object. The current one is simply replaced, not closed, and no other change to the object state is made.
-+Creates and returns an IPv4 TCP master object. A master object can
-+be transformed into a server object with the method
-+<a href=#listen><tt>listen</tt></a> (after a call to <a
-+href=#bind><tt>bind</tt></a>) or into a client object with
-+the method <a href=#connect><tt>connect</tt></a>. The only other
-+method supported by a master object is the
-+<a href=#close><tt>close</tt></a> method.</p>
-+
-+<p class=return>
-+In case of success, a new master object is returned. In case of error,
-+<b><tt>nil</tt></b> is returned, followed by an error message.
-+</p>
-+
-+<!-- socket.tcp6 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+
-+<p class=name id="socket.tcp6">
-+socket.<b>tcp6()</b>
- </p>
-
-+<p class=description>
-+Creates and returns an IPv6 TCP master object. A master object can
-+be transformed into a server object with the method
-+<a href=#listen><tt>listen</tt></a> (after a call to <a
-+href=#bind><tt>bind</tt></a>) or into a client object with
-+the method <a href=#connect><tt>connect</tt></a>. The only other
-+method supported by a master object is the
-+<a href=#close><tt>close</tt></a> method.</p>
-+
- <p class=return>
--No return value.
-+In case of success, a new master object is returned. In case of error,
-+<b><tt>nil</tt></b> is returned, followed by an error message.
- </p>
-
- <p class=note>
--Note: <b>This is an internal method, any use is unlikely to be portable.</b>
-+Note: The TCP object returned will have the option
-+"<tt>ipv6-v6only</tt>" set to <tt><b>true</b></tt>.
- </p>
-
-+
-+
- <!-- footer +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
- <div class=footer>
-diff --git a/doc/udp.html b/doc/udp.html
-index e5b0ad0..4618aad 100644
---- a/doc/udp.html
-+++ b/doc/udp.html
-@@ -4,7 +4,7 @@
-
- <head>
- <meta name="description" content="LuaSocket: The UDP support">
--<meta name="keywords" content="Lua, LuaSocket, Socket, UDP, Library, Network, Support">
-+<meta name="keywords" content="Lua, LuaSocket, Socket, UDP, Library, Network, Support">
- <title>LuaSocket: UDP support</title>
- <link rel="stylesheet" href="reference.css" type="text/css">
- </head>
-@@ -28,7 +28,7 @@
- <a href="index.html#download">download</a> &middot;
- <a href="installation.html">installation</a> &middot;
- <a href="introduction.html">introduction</a> &middot;
--<a href="reference.html">reference</a>
-+<a href="reference.html">reference</a>
- </p>
- </center>
- <hr>
-@@ -37,74 +37,7 @@
-
- <!-- udp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
--<h2 id="udp">UDP</h2>
--
--<!-- socket.udp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
--
--<p class="name" id="socket.udp">
--socket.<b>udp()</b>
--</p>
--
--<p class="description">
--Creates and returns an unconnected IPv4 UDP object.
--Unconnected objects support the
--<a href="#sendto"><tt>sendto</tt></a>,
--<a href="#receive"><tt>receive</tt></a>,
--<a href="#receivefrom"><tt>receivefrom</tt></a>,
--<a href="#getoption"><tt>getoption</tt></a>,
--<a href="#getsockname"><tt>getsockname</tt></a>,
--<a href="#setoption"><tt>setoption</tt></a>,
--<a href="#settimeout"><tt>settimeout</tt></a>,
--<a href="#setpeername"><tt>setpeername</tt></a>,
--<a href="#setsockname"><tt>setsockname</tt></a>, and
--<a href="#close"><tt>close</tt></a>.
--The <a href="#setpeername"><tt>setpeername</tt></a>
--is used to connect the object.
--</p>
--
--<p class="return">
--In case of success, a new unconnected UDP object
--returned. In case of error, <b><tt>nil</tt></b> is returned, followed by
--an error message.
--</p>
--
--<!-- socket.udp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
--
--<p class="name" id="socket.udp6">
--socket.<b>udp6()</b>
--</p>
--
--<p class="description">
--Creates and returns an unconnected IPv6 UDP object.
--Unconnected objects support the
--<a href="#sendto"><tt>sendto</tt></a>,
--<a href="#receive"><tt>receive</tt></a>,
--<a href="#receivefrom"><tt>receivefrom</tt></a>,
--<a href="#getoption"><tt>getoption</tt></a>,
--<a href="#getsockname"><tt>getsockname</tt></a>,
--<a href="#setoption"><tt>setoption</tt></a>,
--<a href="#settimeout"><tt>settimeout</tt></a>,
--<a href="#setpeername"><tt>setpeername</tt></a>,
--<a href="#setsockname"><tt>setsockname</tt></a>, and
--<a href="#close"><tt>close</tt></a>.
--The <a href="#setpeername"><tt>setpeername</tt></a>
--is used to connect the object.
--</p>
--
--<p class="return">
--In case of success, a new unconnected UDP object
--returned. In case of error, <b><tt>nil</tt></b> is returned, followed by
--an error message.
--</p>
--
--<p class=note>
--Note: The TCP object returned will have the option
--"<tt>ipv6-v6only</tt>" set to <tt><b>true</b></tt>.
--</p>
--
--
--
--<!-- close +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+<h2 id="udp">UDP</h2>
-
- <!-- close +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
-@@ -129,6 +62,40 @@ Garbage-collected objects are automatically closed before
- destruction, though.
- </p>
-
-+<!-- getoption +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+
-+<p class="name" id="getoption">
-+connected:<b>getoption()</b><br>
-+unconnected:<b>getoption()</b>
-+</p>
-+
-+<p class="description">
-+Gets an option value from the UDP object.
-+See <a href=#setoption><tt>setoption</tt></a> for
-+description of the option names and values.
-+</p>
-+
-+<p class="parameters"><tt>Option</tt> is a string with the option name.
-+<ul>
-+<li> '<tt>dontroute</tt>'
-+<li> '<tt>broadcast</tt>'
-+<li> '<tt>reuseaddr</tt>'
-+<li> '<tt>reuseport</tt>'
-+<li> '<tt>ip-multicast-loop</tt>'
-+<li> '<tt>ipv6-v6only</tt>'
-+<li> '<tt>ip-multicast-if</tt>'
-+<li> '<tt>ip-multicast-ttl</tt>'
-+<li> '<tt>ip-add-membership</tt>'
-+<li> '<tt>ip-drop-membership</tt>'
-+</ul>
-+</p>
-+
-+<p class=return>
-+The method returns the option <tt>value</tt> in case of
-+success, or
-+<b><tt>nil</tt></b> followed by an error message otherwise.
-+</p>
-+
- <!-- getpeername +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
- <p class="name" id="getpeername">
-@@ -142,10 +109,10 @@ associated with a connected UDP object.
-
-
- <p class=return>
--Returns a string with the IP address of the peer, the
--port number that peer is using for the connection,
--and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
--In case of error, the method returns <b><tt>nil</tt></b>.
-+Returns a string with the IP address of the peer, the
-+port number that peer is using for the connection,
-+and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
-+In case of error, the method returns <b><tt>nil</tt></b>.
- </p>
-
- <p class="note">
-@@ -165,9 +132,9 @@ Returns the local address information associated to the object.
-
-
- <p class=return>
--The method returns a string with local IP address, a number with
--the local port,
--and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
-+The method returns a string with local IP address, a number with
-+the local port,
-+and a string with the family ("<tt>inet</tt>" or "<tt>inet6</tt>").
- In case of error, the method returns <b><tt>nil</tt></b>.
- </p>
-
-@@ -179,6 +146,18 @@ first time (in which case it is bound to an ephemeral port and the
- wild-card address).
- </p>
-
-+<!-- gettimeout +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+
-+<p class=name id="gettimeout">
-+connected:<b>settimeout(</b>value<b>)</b><br>
-+unconnected:<b>settimeout(</b>value<b>)</b>
-+</p>
-+
-+<p class=description>
-+Returns the current timeout value.
-+</p>
-+
-+
- <!-- receive +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
- <p class="name" id="receive">
-@@ -199,9 +178,12 @@ specifies the maximum size of the datagram to be retrieved. If
- there are more than <tt>size</tt> bytes available in the datagram,
- the excess bytes are discarded. If there are less then
- <tt>size</tt> bytes available in the current datagram, the
--available bytes are returned. If <tt>size</tt> is omitted, the
--maximum datagram size is used (which is currently limited by the
--implementation to 8192 bytes).
-+available bytes are returned.
-+If <tt>size</tt> is omitted, the
-+compile-time constant <a
-+href=socket.html#datagramsize><tt>socket._DATAGRAMSIZE</tt></a> is used
-+(it defaults to 8192 bytes). Larger sizes will cause a
-+temporary buffer to be allocated for the operation.
- </p>
-
- <p class="return">
-@@ -217,46 +199,12 @@ unconnected:<b>receivefrom(</b>[size]<b>)</b>
- </p>
-
- <p class="description">
--Works exactly as the <a href="#receive"><tt>receive</tt></a>
-+Works exactly as the <a href="#receive"><tt>receive</tt></a>
- method, except it returns the IP
- address and port as extra return values (and is therefore slightly less
- efficient).
- </p>
-
--<!-- getoption +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
--
--<p class="name" id="getoption">
--connected:<b>getoption()</b><br>
--unconnected:<b>getoption()</b>
--</p>
--
--<p class="description">
--Gets an option value from the UDP object.
--See <a href=#setoption><tt>setoption</tt></a> for
--description of the option names and values.
--</p>
--
--<p class="parameters"><tt>Option</tt> is a string with the option name.
--<ul>
--<li> '<tt>dontroute</tt>'
--<li> '<tt>broadcast</tt>'
--<li> '<tt>reuseaddr</tt>'
--<li> '<tt>reuseport</tt>'
--<li> '<tt>ip-multicast-loop</tt>'
--<li> '<tt>ipv6-v6only</tt>'
--<li> '<tt>ip-multicast-if</tt>'
--<li> '<tt>ip-multicast-ttl</tt>'
--<li> '<tt>ip-add-membership</tt>'
--<li> '<tt>ip-drop-membership</tt>'
--</ul>
--</p>
--
--<p class=return>
--The method returns the option <tt>value</tt> in case of
--success, or
--<b><tt>nil</tt></b> followed by an error message otherwise.
--</p>
--
- <!-- send ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
- <p class="name" id="send">
-@@ -268,7 +216,7 @@ Sends a datagram to the UDP peer of a connected object.
- </p>
-
- <p class="parameters">
--<tt>Datagram</tt> is a string with the datagram contents.
-+<tt>Datagram</tt> is a string with the datagram contents.
- The maximum datagram size for UDP is 64K minus IP layer overhead.
- However datagrams larger than the link layer packet size will be
- fragmented, which may deteriorate performance and/or reliability.
-@@ -298,11 +246,11 @@ Sends a datagram to the specified IP address and port number.
-
- <p class="parameters">
- <tt>Datagram</tt> is a string with the
--datagram contents.
-+datagram contents.
- The maximum datagram size for UDP is 64K minus IP layer overhead.
- However datagrams larger than the link layer packet size will be
- fragmented, which may deteriorate performance and/or reliability.
--<tt>Ip</tt> is the IP address of the recipient.
-+<tt>Ip</tt> is the IP address of the recipient.
- Host names are <em>not</em> allowed for performance reasons.
-
- <tt>Port</tt> is the port number at the recipient.
-@@ -320,6 +268,75 @@ refuses to send a message to the specified address (i.e. no
- interface accepts the address).
- </p>
-
-+<!-- setoption +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+
-+<p class="name" id="setoption">
-+connected:<b>setoption(</b>option [, value]<b>)</b><br>
-+unconnected:<b>setoption(</b>option [, value]<b>)</b>
-+</p>
-+
-+<p class="description">
-+Sets options for the UDP object. Options are
-+only needed by low-level or time-critical applications. You should
-+only modify an option if you are sure you need it.</p>
-+<p class="parameters"><tt>Option</tt> is a string with the option
-+name, and <tt>value</tt> depends on the option being set:
-+</p>
-+
-+<ul>
-+<li> '<tt>dontroute</tt>': Indicates that outgoing
-+messages should bypass the standard routing facilities.
-+Receives a boolean value;
-+<li> '<tt>broadcast</tt>': Requests permission to send
-+broadcast datagrams on the socket.
-+Receives a boolean value;
-+<li> '<tt>reuseaddr</tt>': Indicates that the rules used in
-+validating addresses supplied in a <tt>bind()</tt> call
-+should allow reuse of local addresses.
-+Receives a boolean value;
-+<li> '<tt>reuseport</tt>': Allows completely duplicate
-+bindings by multiple processes if they all set
-+'<tt>reuseport</tt>' before binding the port.
-+Receives a boolean value;
-+<li> '<tt>ip-multicast-loop</tt>':
-+Specifies whether or not a copy of an outgoing multicast
-+datagram is delivered to the sending host as long as it is a
-+member of the multicast group.
-+Receives a boolean value;
-+<li> '<tt>ipv6-v6only</tt>':
-+Specifies whether to restrict <tt>inet6</tt> sockets to
-+sending and receiving only IPv6 packets.
-+Receive a boolean value;
-+<li> '<tt>ip-multicast-if</tt>':
-+Sets the interface over which outgoing multicast datagrams
-+are sent.
-+Receives an IP address;
-+<li> '<tt>ip-multicast-ttl</tt>':
-+Sets the Time To Live in the IP header for outgoing
-+multicast datagrams.
-+Receives a number;
-+<li> '<tt>ip-add-membership</tt>':
-+Joins the multicast group specified.
-+Receives a table with fields
-+<tt>multiaddr</tt> and <tt>interface</tt>, each containing an
-+IP address;
-+<li> '<tt>ip-drop-membership</tt>': Leaves the multicast
-+group specified.
-+Receives a table with fields
-+<tt>multiaddr</tt> and <tt>interface</tt>, each containing an
-+IP address.
-+</ul>
-+
-+<p class="return">
-+The method returns 1 in case of success, or
-+<b><tt>nil</tt></b> followed by an error message otherwise.
-+</p>
-+
-+<p class=note>
-+Note: The descriptions above come from the man pages.
-+</p>
-+
-+
- <!-- setpeername +++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
- <p class="name" id="setpeername">
-@@ -337,9 +354,9 @@ object or vice versa.
- For connected objects, outgoing datagrams
- will be sent to the specified peer, and datagrams received from
- other peers will be discarded by the OS. Connected UDP objects must
--use the <a href="#send"><tt>send</tt></a> and
--<a href="#receive"><tt>receive</tt></a> methods instead of
--<a href="#sendto"><tt>sendto</tt></a> and
-+use the <a href="#send"><tt>send</tt></a> and
-+<a href="#receive"><tt>receive</tt></a> methods instead of
-+<a href="#sendto"><tt>sendto</tt></a> and
- <a href="#receivefrom"><tt>receivefrom</tt></a>.
- </p>
-
-@@ -406,74 +423,6 @@ system or explicitly by <tt>setsockname</tt>, it cannot be
- changed.
- </p>
-
--<!-- setoption +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
--
--<p class="name" id="setoption">
--connected:<b>setoption(</b>option [, value]<b>)</b><br>
--unconnected:<b>setoption(</b>option [, value]<b>)</b>
--</p>
--
--<p class="description">
--Sets options for the UDP object. Options are
--only needed by low-level or time-critical applications. You should
--only modify an option if you are sure you need it.</p>
--<p class="parameters"><tt>Option</tt> is a string with the option
--name, and <tt>value</tt> depends on the option being set:
--</p>
--
--<ul>
--<li> '<tt>dontroute</tt>': Indicates that outgoing
--messages should bypass the standard routing facilities.
--Receives a boolean value;
--<li> '<tt>broadcast</tt>': Requests permission to send
--broadcast datagrams on the socket.
--Receives a boolean value;
--<li> '<tt>reuseaddr</tt>': Indicates that the rules used in
--validating addresses supplied in a <tt>bind()</tt> call
--should allow reuse of local addresses.
--Receives a boolean value;
--<li> '<tt>reuseport</tt>': Allows completely duplicate
--bindings by multiple processes if they all set
--'<tt>reuseport</tt>' before binding the port.
--Receives a boolean value;
--<li> '<tt>ip-multicast-loop</tt>':
--Specifies whether or not a copy of an outgoing multicast
--datagram is delivered to the sending host as long as it is a
--member of the multicast group.
--Receives a boolean value;
--<li> '<tt>ipv6-v6only</tt>':
--Specifies whether to restrict <tt>inet6</tt> sockets to
--sending and receiving only IPv6 packets.
--Receive a boolean value;
--<li> '<tt>ip-multicast-if</tt>':
--Sets the interface over which outgoing multicast datagrams
--are sent.
--Receives an IP address;
--<li> '<tt>ip-multicast-ttl</tt>':
--Sets the Time To Live in the IP header for outgoing
--multicast datagrams.
--Receives a number;
--<li> '<tt>ip-add-membership</tt>':
--Joins the multicast group specified.
--Receives a table with fields
--<tt>multiaddr</tt> and <tt>interface</tt>, each containing an
--IP address;
--<li> '<tt>ip-drop-membership</tt>': Leaves the multicast
--group specified.
--Receives a table with fields
--<tt>multiaddr</tt> and <tt>interface</tt>, each containing an
--IP address.
--</ul>
--
--<p class="return">
--The method returns 1 in case of success, or
--<b><tt>nil</tt></b> followed by an error message otherwise.
--</p>
--
--<p class=note>
--Note: The descriptions above come from the man pages.
--</p>
--
- <!-- settimeout +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
- <p class="name" id="settimeout">
-@@ -482,14 +431,14 @@ unconnected:<b>settimeout(</b>value<b>)</b>
- </p>
-
- <p class="description">
--Changes the timeout values for the object. By default, the
--<a href="#receive"><tt>receive</tt></a> and
--<a href="#receivefrom"><tt>receivefrom</tt></a>
-+Changes the timeout values for the object. By default, the
-+<a href="#receive"><tt>receive</tt></a> and
-+<a href="#receivefrom"><tt>receivefrom</tt></a>
- operations are blocking. That is, any call to the methods will block
- indefinitely, until data arrives. The <tt>settimeout</tt> function defines
- a limit on the amount of time the functions can block. When a timeout is
- set and the specified amount of time has elapsed, the affected methods
--give up and fail with an error code.
-+give up and fail with an error code.
- </p>
-
- <p class="parameters">
-@@ -514,6 +463,114 @@ all other method names already contained verbs making their
- imperative nature obvious.
- </p>
-
-+<!-- socket.udp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+
-+<p class="name" id="socket.udp">
-+socket.<b>udp()</b>
-+</p>
-+
-+<p class="description">
-+Creates and returns an unconnected UDP object.
-+Unconnected objects support the
-+<a href="#sendto"><tt>sendto</tt></a>,
-+<a href="#receive"><tt>receive</tt></a>,
-+<a href="#receivefrom"><tt>receivefrom</tt></a>,
-+<a href="#getoption"><tt>getoption</tt></a>,
-+<a href="#getsockname"><tt>getsockname</tt></a>,
-+<a href="#setoption"><tt>setoption</tt></a>,
-+<a href="#settimeout"><tt>settimeout</tt></a>,
-+<a href="#setpeername"><tt>setpeername</tt></a>,
-+<a href="#setsockname"><tt>setsockname</tt></a>, and
-+<a href="#close"><tt>close</tt></a>.
-+The <a href="#setpeername"><tt>setpeername</tt></a>
-+is used to connect the object.
-+</p>
-+
-+<p class="return">
-+In case of success, a new unconnected UDP object
-+returned. In case of error, <b><tt>nil</tt></b> is returned, followed by
-+an error message.
-+</p>
-+
-+<p class=note>
-+Note: The choice between IPv4 and IPv6 happens during a call to
-+<a href=#sendto><tt>sendto</tt></a>, <a
-+href=#setpeername><tt>setpeername</tt></a>, or <a
-+href=#setsockname><tt>sockname</tt></a>, depending on the address
-+family obtained from the resolver.
-+</p>
-+
-+<p class=note>
-+Note: Before the choice between IPv4 and IPv6 happens,
-+the internal socket object is invalid and therefore <a
-+href=#setoption><tt>setoption</tt></a> will fail.
-+</p>
-+
-+<!-- socket.udp4 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+
-+<p class="name" id="socket.udp">
-+socket.<b>udp4()</b>
-+</p>
-+
-+<p class="description">
-+Creates and returns an unconnected IPv4 UDP object.
-+Unconnected objects support the
-+<a href="#sendto"><tt>sendto</tt></a>,
-+<a href="#receive"><tt>receive</tt></a>,
-+<a href="#receivefrom"><tt>receivefrom</tt></a>,
-+<a href="#getoption"><tt>getoption</tt></a>,
-+<a href="#getsockname"><tt>getsockname</tt></a>,
-+<a href="#setoption"><tt>setoption</tt></a>,
-+<a href="#settimeout"><tt>settimeout</tt></a>,
-+<a href="#setpeername"><tt>setpeername</tt></a>,
-+<a href="#setsockname"><tt>setsockname</tt></a>, and
-+<a href="#close"><tt>close</tt></a>.
-+The <a href="#setpeername"><tt>setpeername</tt></a>
-+is used to connect the object.
-+</p>
-+
-+<p class="return">
-+In case of success, a new unconnected UDP object
-+returned. In case of error, <b><tt>nil</tt></b> is returned, followed by
-+an error message.
-+</p>
-+
-+<!-- socket.udp ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-+
-+<p class="name" id="socket.udp6">
-+socket.<b>udp6()</b>
-+</p>
-+
-+<p class="description">
-+Creates and returns an unconnected IPv6 UDP object.
-+Unconnected objects support the
-+<a href="#sendto"><tt>sendto</tt></a>,
-+<a href="#receive"><tt>receive</tt></a>,
-+<a href="#receivefrom"><tt>receivefrom</tt></a>,
-+<a href="#getoption"><tt>getoption</tt></a>,
-+<a href="#getsockname"><tt>getsockname</tt></a>,
-+<a href="#setoption"><tt>setoption</tt></a>,
-+<a href="#settimeout"><tt>settimeout</tt></a>,
-+<a href="#setpeername"><tt>setpeername</tt></a>,
-+<a href="#setsockname"><tt>setsockname</tt></a>, and
-+<a href="#close"><tt>close</tt></a>.
-+The <a href="#setpeername"><tt>setpeername</tt></a>
-+is used to connect the object.
-+</p>
-+
-+<p class="return">
-+In case of success, a new unconnected UDP object
-+returned. In case of error, <b><tt>nil</tt></b> is returned, followed by
-+an error message.
-+</p>
-+
-+<p class=note>
-+Note: The TCP object returned will have the option
-+"<tt>ipv6-v6only</tt>" set to <tt><b>true</b></tt>.
-+</p>
-+
-+
-+
- <!-- footer ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
-
- <div class=footer>
-@@ -524,7 +581,7 @@ imperative nature obvious.
- <a href="index.html#download">download</a> &middot;
- <a href="installation.html">installation</a> &middot;
- <a href="introduction.html">introduction</a> &middot;
--<a href="reference.html">reference</a>
-+<a href="reference.html">reference</a>
- </p>
- <p>
- <small>
-diff --git a/etc/dispatch.lua b/etc/dispatch.lua
-index cab7f59..2485415 100644
---- a/etc/dispatch.lua
-+++ b/etc/dispatch.lua
-@@ -5,6 +5,7 @@
- -----------------------------------------------------------------------------
- local base = _G
- local table = require("table")
-+local string = require("string")
- local socket = require("socket")
- local coroutine = require("coroutine")
- module("dispatch")
-@@ -43,26 +44,32 @@ end
- -----------------------------------------------------------------------------
- -- Mega hack. Don't try to do this at home.
- -----------------------------------------------------------------------------
---- we can't yield across calls to protect, so we rewrite it with coxpcall
-+-- we can't yield across calls to protect on Lua 5.1, so we rewrite it with
-+-- coroutines
- -- make sure you don't require any module that uses socket.protect before
- -- loading our hack
--function socket.protect(f)
-- return function(...)
-- local co = coroutine.create(f)
-- while true do
-- local results = {coroutine.resume(co, ...)}
-- local status = table.remove(results, 1)
-- if not status then
-- if base.type(results[1]) == 'table' then
-- return nil, results[1][1]
-- else base.error(results[1]) end
-- end
-- if coroutine.status(co) == "suspended" then
-- arg = {coroutine.yield(base.unpack(results))}
-+if string.sub(base._VERSION, -3) == "5.1" then
-+ local function _protect(co, status, ...)
-+ if not status then
-+ local msg = ...
-+ if base.type(msg) == 'table' then
-+ return nil, msg[1]
- else
-- return base.unpack(results)
-+ base.error(msg, 0)
- end
- end
-+ if coroutine.status(co) == "suspended" then
-+ return _protect(co, coroutine.resume(co, coroutine.yield(...)))
-+ else
-+ return ...
-+ end
-+ end
-+
-+ function socket.protect(f)
-+ return function(...)
-+ local co = coroutine.create(f)
-+ return _protect(co, coroutine.resume(co, ...))
-+ end
- end
- end
-
-diff --git a/linux.cmd b/linux.cmd
-index bd59adc..6c6636b 100644
---- a/linux.cmd
-+++ b/linux.cmd
-@@ -1 +1 @@
--make PLAT=linux DEBUG=DEBUG LUAINC_linux_base=/home/diego/build/linux/include LUAPREFIX_linux=/home/diego/build/linux
-+make PLAT=linux DEBUG=DEBUG LUAINC_linux_base=/home/diego/build/ubuntu/include LUAPREFIX_linux=/home/diego/build/ubuntu
-diff --git a/luasocket-scm-0.rockspec b/luasocket-scm-0.rockspec
-index f86567b..352a497 100644
---- a/luasocket-scm-0.rockspec
-+++ b/luasocket-scm-0.rockspec
-@@ -50,13 +50,12 @@ local function make_plat(plat)
- }
- local modules = {
- ["socket.core"] = {
-- sources = { "src/luasocket.c", "src/timeout.c", "src/buffer.c", "src/io.c", "src/auxiliar.c",
-- "src/options.c", "src/inet.c", "src/except.c", "src/select.c", "src/tcp.c", "src/udp.c" },
-+ sources = { "src/luasocket.c", "src/timeout.c", "src/buffer.c", "src/io.c", "src/auxiliar.c", "src/options.c", "src/inet.c", "src/except.c", "src/select.c", "src/tcp.c", "src/udp.c", "src/compat.c" },
- defines = defines[plat],
- incdir = "/src"
- },
-- ["mime.core"] = {
-- sources = { "src/mime.c" },
-+ ["mime.core"] = {
-+ sources = { "src/mime.c", "src/compat.c" },
- defines = defines[plat],
- incdir = "/src"
- },
-@@ -73,14 +72,12 @@ local function make_plat(plat)
- if plat == "unix" or plat == "macosx" then
- modules["socket.core"].sources[#modules["socket.core"].sources+1] = "src/usocket.c"
- modules["socket.unix"] = {
-- sources = { "src/buffer.c", "src/auxiliar.c", "src/options.c", "src/timeout.c", "src/io.c",
-- "src/usocket.c", "src/unix.c" },
-+ sources = { "src/buffer.c", "src/auxiliar.c", "src/options.c", "src/timeout.c", "src/io.c", "src/usocket.c", "src/unix.c" },
- defines = defines[plat],
- incdir = "/src"
- }
- modules["socket.serial"] = {
-- sources = { "src/buffer.c", "src/auxiliar.c", "src/options.c", "src/timeout.c",
-- "src/io.c", "src/usocket.c", "src/serial.c" },
-+ sources = { "src/buffer.c", "src/auxiliar.c", "src/options.c", "src/timeout.c", "src/io.c", "src/usocket.c", "src/serial.c" },
- defines = defines[plat],
- incdir = "/src"
- }
-diff --git a/makefile b/makefile
-index 04cd894..cc15b4e 100644
---- a/makefile
-+++ b/makefile
-@@ -5,12 +5,12 @@
- # Targets:
- # install install system independent support
- # install-unix also install unix-only support
--# install-both install for both lua5.1 and lua5.2
--# install-both-unix also install unix-only
-+# install-both install for lua51 lua52 lua53
-+# install-both-unix also install unix-only
- # print print the build settings
-
- PLAT?= linux
--PLATS= macosx linux win32 mingw
-+PLATS= macosx linux win32 mingw freebsd solaris
-
- all: $(PLAT)
-
-@@ -24,20 +24,26 @@ test:
- lua test/hello.lua
-
- install-both:
-- $(MAKE) clean
-+ $(MAKE) clean
- @cd src; $(MAKE) $(PLAT) LUAV=5.1
- @cd src; $(MAKE) install LUAV=5.1
-- $(MAKE) clean
-+ $(MAKE) clean
- @cd src; $(MAKE) $(PLAT) LUAV=5.2
- @cd src; $(MAKE) install LUAV=5.2
-+ $(MAKE) clean
-+ @cd src; $(MAKE) $(PLAT) LUAV=5.3
-+ @cd src; $(MAKE) install LUAV=5.3
-
- install-both-unix:
-- $(MAKE) clean
-+ $(MAKE) clean
- @cd src; $(MAKE) $(PLAT) LUAV=5.1
- @cd src; $(MAKE) install-unix LUAV=5.1
-- $(MAKE) clean
-+ $(MAKE) clean
- @cd src; $(MAKE) $(PLAT) LUAV=5.2
- @cd src; $(MAKE) install-unix LUAV=5.2
-+ $(MAKE) clean
-+ @cd src; $(MAKE) $(PLAT) LUAV=5.3
-+ @cd src; $(MAKE) install-unix LUAV=5.3
-
- .PHONY: test
-
-diff --git a/src/auxiliar.c b/src/auxiliar.c
-index de625e9..18fa8e4 100644
---- a/src/auxiliar.c
-+++ b/src/auxiliar.c
-@@ -26,7 +26,7 @@ void auxiliar_newclass(lua_State *L, const char *classname, luaL_Reg *func) {
- luaL_newmetatable(L, classname); /* mt */
- /* create __index table to place methods */
- lua_pushstring(L, "__index"); /* mt,"__index" */
-- lua_newtable(L); /* mt,"__index",it */
-+ lua_newtable(L); /* mt,"__index",it */
- /* put class name into class metatable */
- lua_pushstring(L, "class"); /* mt,"__index",it,"class" */
- lua_pushstring(L, classname); /* mt,"__index",it,"class",classname */
-@@ -84,7 +84,7 @@ int auxiliar_checkboolean(lua_State *L, int objidx) {
- }
-
- /*-------------------------------------------------------------------------*\
--* Return userdata pointer if object belongs to a given class, abort with
-+* Return userdata pointer if object belongs to a given class, abort with
- * error otherwise
- \*-------------------------------------------------------------------------*/
- void *auxiliar_checkclass(lua_State *L, const char *classname, int objidx) {
-@@ -98,7 +98,7 @@ void *auxiliar_checkclass(lua_State *L, const char *classname, int objidx) {
- }
-
- /*-------------------------------------------------------------------------*\
--* Return userdata pointer if object belongs to a given group, abort with
-+* Return userdata pointer if object belongs to a given group, abort with
- * error otherwise
- \*-------------------------------------------------------------------------*/
- void *auxiliar_checkgroup(lua_State *L, const char *groupname, int objidx) {
-@@ -121,7 +121,7 @@ void auxiliar_setclass(lua_State *L, const char *classname, int objidx) {
- }
-
- /*-------------------------------------------------------------------------*\
--* Get a userdata pointer if object belongs to a given group. Return NULL
-+* Get a userdata pointer if object belongs to a given group. Return NULL
- * otherwise
- \*-------------------------------------------------------------------------*/
- void *auxiliar_getgroupudata(lua_State *L, const char *groupname, int objidx) {
-@@ -139,7 +139,7 @@ void *auxiliar_getgroupudata(lua_State *L, const char *groupname, int objidx) {
- }
-
- /*-------------------------------------------------------------------------*\
--* Get a userdata pointer if object belongs to a given class. Return NULL
-+* Get a userdata pointer if object belongs to a given class. Return NULL
- * otherwise
- \*-------------------------------------------------------------------------*/
- void *auxiliar_getclassudata(lua_State *L, const char *classname, int objidx) {
-@@ -151,7 +151,7 @@ void *auxiliar_getclassudata(lua_State *L, const char *classname, int objidx) {
- * Used to be part of lauxlib in Lua 5.1, was dropped from 5.2.
- \*-------------------------------------------------------------------------*/
- int auxiliar_typeerror (lua_State *L, int narg, const char *tname) {
-- const char *msg = lua_pushfstring(L, "%s expected, got %s", tname,
-+ const char *msg = lua_pushfstring(L, "%s expected, got %s", tname,
- luaL_typename(L, narg));
- return luaL_argerror(L, narg, msg);
- }
-diff --git a/src/auxiliar.h b/src/auxiliar.h
-index ea99013..65511d4 100644
---- a/src/auxiliar.h
-+++ b/src/auxiliar.h
-@@ -4,12 +4,12 @@
- * Auxiliar routines for class hierarchy manipulation
- * LuaSocket toolkit (but completely independent of other LuaSocket modules)
- *
--* A LuaSocket class is a name associated with Lua metatables. A LuaSocket
--* group is a name associated with a class. A class can belong to any number
-+* A LuaSocket class is a name associated with Lua metatables. A LuaSocket
-+* group is a name associated with a class. A class can belong to any number
- * of groups. This module provides the functionality to:
- *
--* - create new classes
--* - add classes to groups
-+* - create new classes
-+* - add classes to groups
- * - set the class of objects
- * - check if an object belongs to a given class or group
- * - get the userdata associated to objects
-@@ -26,11 +26,12 @@
- * "class" with the class name.
- *
- * The mapping from class name to the corresponding metatable and the
--* reverse mapping are done using lauxlib.
-+* reverse mapping are done using lauxlib.
- \*=========================================================================*/
-
- #include "lua.h"
- #include "lauxlib.h"
-+#include "compat.h"
-
- int auxiliar_open(lua_State *L);
- void auxiliar_newclass(lua_State *L, const char *classname, luaL_Reg *func);
-diff --git a/src/buffer.c b/src/buffer.c
-index 4ef4e8e..fff1634 100644
---- a/src/buffer.c
-+++ b/src/buffer.c
-@@ -4,6 +4,7 @@
- \*=========================================================================*/
- #include "lua.h"
- #include "lauxlib.h"
-+#include "compat.h"
-
- #include "buffer.h"
-
-@@ -37,7 +38,7 @@ int buffer_open(lua_State *L) {
- }
-
- /*-------------------------------------------------------------------------*\
--* Initializes C structure
-+* Initializes C structure
- \*-------------------------------------------------------------------------*/
- void buffer_init(p_buffer buf, p_io io, p_timeout tm) {
- buf->first = buf->last = 0;
-@@ -61,8 +62,8 @@ int buffer_meth_getstats(lua_State *L, p_buffer buf) {
- * object:setstats() interface
- \*-------------------------------------------------------------------------*/
- int buffer_meth_setstats(lua_State *L, p_buffer buf) {
-- buf->received = (long) luaL_optnumber(L, 2, (lua_Number) buf->received);
-- buf->sent = (long) luaL_optnumber(L, 3, (lua_Number) buf->sent);
-+ buf->received = (long) luaL_optnumber(L, 2, (lua_Number) buf->received);
-+ buf->sent = (long) luaL_optnumber(L, 3, (lua_Number) buf->sent);
- if (lua_isnumber(L, 4)) buf->birthday = timeout_gettime() - lua_tonumber(L, 4);
- lua_pushnumber(L, 1);
- return 1;
-@@ -78,9 +79,7 @@ int buffer_meth_send(lua_State *L, p_buffer buf) {
- const char *data = luaL_checklstring(L, 2, &size);
- long start = (long) luaL_optnumber(L, 3, 1);
- long end = (long) luaL_optnumber(L, 4, -1);
--#ifdef LUASOCKET_DEBUG
-- p_timeout tm = timeout_markstart(buf->tm);
--#endif
-+ timeout_markstart(buf->tm);
- if (start < 0) start = (long) (size+start+1);
- if (end < 0) end = (long) (size+end+1);
- if (start < 1) start = (long) 1;
-@@ -89,7 +88,7 @@ int buffer_meth_send(lua_State *L, p_buffer buf) {
- /* check if there was an error */
- if (err != IO_DONE) {
- lua_pushnil(L);
-- lua_pushstring(L, buf->io->error(buf->io->ctx, err));
-+ lua_pushstring(L, buf->io->error(buf->io->ctx, err));
- lua_pushnumber(L, (lua_Number) (sent+start-1));
- } else {
- lua_pushnumber(L, (lua_Number) (sent+start-1));
-@@ -98,7 +97,7 @@ int buffer_meth_send(lua_State *L, p_buffer buf) {
- }
- #ifdef LUASOCKET_DEBUG
- /* push time elapsed during operation as the last return value */
-- lua_pushnumber(L, timeout_gettime() - timeout_getstart(tm));
-+ lua_pushnumber(L, timeout_gettime() - timeout_getstart(buf->tm));
- #endif
- return lua_gettop(L) - top;
- }
-@@ -111,10 +110,8 @@ int buffer_meth_receive(lua_State *L, p_buffer buf) {
- luaL_Buffer b;
- size_t size;
- const char *part = luaL_optlstring(L, 3, "", &size);
--#ifdef LUASOCKET_DEBUG
-- p_timeout tm = timeout_markstart(buf->tm);
--#endif
-- /* initialize buffer with optional extra prefix
-+ timeout_markstart(buf->tm);
-+ /* initialize buffer with optional extra prefix
- * (useful for concatenating previous partial results) */
- luaL_buffinit(L, &b);
- luaL_addlstring(&b, part, size);
-@@ -122,12 +119,12 @@ int buffer_meth_receive(lua_State *L, p_buffer buf) {
- if (!lua_isnumber(L, 2)) {
- const char *p= luaL_optstring(L, 2, "*l");
- if (p[0] == '*' && p[1] == 'l') err = recvline(buf, &b);
-- else if (p[0] == '*' && p[1] == 'a') err = recvall(buf, &b);
-+ else if (p[0] == '*' && p[1] == 'a') err = recvall(buf, &b);
- else luaL_argcheck(L, 0, 2, "invalid receive pattern");
-- /* get a fixed number of bytes (minus what was already partially
-+ /* get a fixed number of bytes (minus what was already partially
- * received) */
- } else {
-- double n = lua_tonumber(L, 2);
-+ double n = lua_tonumber(L, 2);
- size_t wanted = (size_t) n;
- luaL_argcheck(L, n >= 0, 2, "invalid receive pattern");
- if (size == 0 || wanted > size)
-@@ -138,8 +135,8 @@ int buffer_meth_receive(lua_State *L, p_buffer buf) {
- /* we can't push anyting in the stack before pushing the
- * contents of the buffer. this is the reason for the complication */
- luaL_pushresult(&b);
-- lua_pushstring(L, buf->io->error(buf->io->ctx, err));
-- lua_pushvalue(L, -2);
-+ lua_pushstring(L, buf->io->error(buf->io->ctx, err));
-+ lua_pushvalue(L, -2);
- lua_pushnil(L);
- lua_replace(L, -4);
- } else {
-@@ -149,7 +146,7 @@ int buffer_meth_receive(lua_State *L, p_buffer buf) {
- }
- #ifdef LUASOCKET_DEBUG
- /* push time elapsed during operation as the last return value */
-- lua_pushnumber(L, timeout_gettime() - timeout_getstart(tm));
-+ lua_pushnumber(L, timeout_gettime() - timeout_getstart(buf->tm));
- #endif
- return lua_gettop(L) - top;
- }
-@@ -222,7 +219,7 @@ static int recvall(p_buffer buf, luaL_Buffer *b) {
- }
-
- /*-------------------------------------------------------------------------*\
--* Reads a line terminated by a CR LF pair or just by a LF. The CR and LF
-+* Reads a line terminated by a CR LF pair or just by a LF. The CR and LF
- * are not returned by the function and are discarded from the buffer
- \*-------------------------------------------------------------------------*/
- static int recvline(p_buffer buf, luaL_Buffer *b) {
-@@ -252,7 +249,7 @@ static int recvline(p_buffer buf, luaL_Buffer *b) {
- static void buffer_skip(p_buffer buf, size_t count) {
- buf->received += count;
- buf->first += count;
-- if (buffer_isempty(buf))
-+ if (buffer_isempty(buf))
- buf->first = buf->last = 0;
- }
-
-diff --git a/src/compat.c b/src/compat.c
-new file mode 100644
-index 0000000..c2d99cb
---- /dev/null
-+++ b/src/compat.c
-@@ -0,0 +1,19 @@
-+#include "compat.h"
-+
-+#if LUA_VERSION_NUM==501
-+/*
-+** Adapted from Lua 5.2
-+*/
-+void luaL_setfuncs (lua_State *L, const luaL_Reg *l, int nup) {
-+ luaL_checkstack(L, nup+1, "too many upvalues");
-+ for (; l->name != NULL; l++) { /* fill the table with given functions */
-+ int i;
-+ lua_pushstring(L, l->name);
-+ for (i = 0; i < nup; i++) /* copy upvalues to the top */
-+ lua_pushvalue(L, -(nup+1));
-+ lua_pushcclosure(L, l->func, nup); /* closure with those upvalues */
-+ lua_settable(L, -(nup + 3));
-+ }
-+ lua_pop(L, nup); /* remove upvalues */
-+}
-+#endif
-diff --git a/src/compat.h b/src/compat.h
-new file mode 100644
-index 0000000..7bf8010
---- /dev/null
-+++ b/src/compat.h
-@@ -0,0 +1,11 @@
-+#ifndef COMPAT_H
-+#define COMPAT_H
-+
-+#include "lua.h"
-+#include "lauxlib.h"
-+
-+#if LUA_VERSION_NUM==501
-+void luaL_setfuncs (lua_State *L, const luaL_Reg *l, int nup);
-+#endif
-+
-+#endif
-diff --git a/src/except.c b/src/except.c
-index 002e701..60b5005 100644
---- a/src/except.c
-+++ b/src/except.c
-@@ -6,9 +6,19 @@
-
- #include "lua.h"
- #include "lauxlib.h"
-+#include "compat.h"
-
- #include "except.h"
-
-+#if LUA_VERSION_NUM < 502
-+#define lua_pcallk(L, na, nr, err, ctx, cont) \
-+ (((void)ctx),((void)cont),lua_pcall(L, na, nr, err))
-+#endif
-+
-+#if LUA_VERSION_NUM < 503
-+typedef int lua_KContext;
-+#endif
-+
- /*=========================================================================*\
- * Internal function prototypes.
- \*=========================================================================*/
-@@ -29,18 +39,17 @@ static luaL_Reg func[] = {
- * Try factory
- \*-------------------------------------------------------------------------*/
- static void wrap(lua_State *L) {
-- lua_newtable(L);
-- lua_pushnumber(L, 1);
-- lua_pushvalue(L, -3);
-- lua_settable(L, -3);
-- lua_insert(L, -2);
-- lua_pop(L, 1);
-+ lua_createtable(L, 1, 0);
-+ lua_pushvalue(L, -2);
-+ lua_rawseti(L, -2, 1);
-+ lua_pushvalue(L, lua_upvalueindex(1));
-+ lua_setmetatable(L, -2);
- }
-
- static int finalize(lua_State *L) {
- if (!lua_toboolean(L, 1)) {
-- lua_pushvalue(L, lua_upvalueindex(1));
-- lua_pcall(L, 0, 0, 0);
-+ lua_pushvalue(L, lua_upvalueindex(2));
-+ lua_call(L, 0, 0);
- lua_settop(L, 2);
- wrap(L);
- lua_error(L);
-@@ -48,15 +57,17 @@ static int finalize(lua_State *L) {
- } else return lua_gettop(L);
- }
-
--static int do_nothing(lua_State *L) {
-+static int do_nothing(lua_State *L) {
- (void) L;
-- return 0;
-+ return 0;
- }
-
- static int global_newtry(lua_State *L) {
- lua_settop(L, 1);
- if (lua_isnil(L, 1)) lua_pushcfunction(L, do_nothing);
-- lua_pushcclosure(L, finalize, 1);
-+ lua_pushvalue(L, lua_upvalueindex(1));
-+ lua_insert(L, -2);
-+ lua_pushcclosure(L, finalize, 2);
- return 1;
- }
-
-@@ -64,27 +75,49 @@ static int global_newtry(lua_State *L) {
- * Protect factory
- \*-------------------------------------------------------------------------*/
- static int unwrap(lua_State *L) {
-- if (lua_istable(L, -1)) {
-- lua_pushnumber(L, 1);
-- lua_gettable(L, -2);
-- lua_pushnil(L);
-- lua_insert(L, -2);
-- return 1;
-- } else return 0;
-+ if (lua_istable(L, -1) && lua_getmetatable(L, -1)) {
-+ int r = lua_rawequal(L, -1, lua_upvalueindex(1));
-+ lua_pop(L, 1);
-+ if (r) {
-+ lua_pushnil(L);
-+ lua_rawgeti(L, -2, 1);
-+ return 1;
-+ }
-+ }
-+ return 0;
- }
-
--static int protected_(lua_State *L) {
-- lua_pushvalue(L, lua_upvalueindex(1));
-- lua_insert(L, 1);
-- if (lua_pcall(L, lua_gettop(L) - 1, LUA_MULTRET, 0) != 0) {
-+static int protected_finish(lua_State *L, int status, lua_KContext ctx) {
-+ (void)ctx;
-+ if (status != 0 && status != LUA_YIELD) {
- if (unwrap(L)) return 2;
-- else lua_error(L);
-- return 0;
-+ else return lua_error(L);
- } else return lua_gettop(L);
- }
-
-+#if LUA_VERSION_NUM == 502
-+static int protected_cont(lua_State *L) {
-+ int ctx = 0;
-+ int status = lua_getctx(L, &ctx);
-+ return protected_finish(L, status, ctx);
-+}
-+#else
-+#define protected_cont protected_finish
-+#endif
-+
-+static int protected_(lua_State *L) {
-+ int status;
-+ lua_pushvalue(L, lua_upvalueindex(2));
-+ lua_insert(L, 1);
-+ status = lua_pcallk(L, lua_gettop(L) - 1, LUA_MULTRET, 0, 0, protected_cont);
-+ return protected_finish(L, status, 0);
-+}
-+
- static int global_protect(lua_State *L) {
-- lua_pushcclosure(L, protected_, 1);
-+ lua_settop(L, 1);
-+ lua_pushvalue(L, lua_upvalueindex(1));
-+ lua_insert(L, 1);
-+ lua_pushcclosure(L, protected_, 2);
- return 1;
- }
-
-@@ -92,10 +125,9 @@ static int global_protect(lua_State *L) {
- * Init module
- \*-------------------------------------------------------------------------*/
- int except_open(lua_State *L) {
--#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
-- luaL_setfuncs(L, func, 0);
--#else
-- luaL_openlib(L, NULL, func, 0);
--#endif
-+ lua_newtable(L); /* metatable for wrapped exceptions */
-+ lua_pushboolean(L, 0);
-+ lua_setfield(L, -2, "__metatable");
-+ luaL_setfuncs(L, func, 1);
- return 0;
- }
-diff --git a/src/except.h b/src/except.h
-index 1e7a245..2497c05 100644
---- a/src/except.h
-+++ b/src/except.h
-@@ -9,21 +9,26 @@
- * error checking was taking a substantial amount of the coding. These
- * function greatly simplify the task of checking errors.
- *
--* The main idea is that functions should return nil as its first return
--* value when it finds an error, and return an error message (or value)
-+* The main idea is that functions should return nil as their first return
-+* values when they find an error, and return an error message (or value)
- * following nil. In case of success, as long as the first value is not nil,
- * the other values don't matter.
- *
- * The idea is to nest function calls with the "try" function. This function
--* checks the first value, and calls "error" on the second if the first is
--* nil. Otherwise, it returns all values it received.
-+* checks the first value, and, if it's falsy, wraps the second value in a
-+* table with metatable and calls "error" on it. Otherwise, it returns all
-+* values it received. Basically, it works like the Lua "assert" function,
-+* but it creates errors targeted specifically at "protect".
- *
--* The protect function returns a new function that behaves exactly like the
--* function it receives, but the new function doesn't throw exceptions: it
--* returns nil followed by the error message instead.
-+* The "newtry" function is a factory for "try" functions that call a
-+* finalizer in protected mode before calling "error".
- *
--* With these two function, it's easy to write functions that throw
--* exceptions on error, but that don't interrupt the user script.
-+* The "protect" function returns a new function that behaves exactly like
-+* the function it receives, but the new function catches exceptions thrown
-+* by "try" functions and returns nil followed by the error message instead.
-+*
-+* With these three functions, it's easy to write functions that throw
-+* exceptions on error, but that don't interrupt the user script.
- \*=========================================================================*/
-
- #include "lua.h"
-diff --git a/src/ftp.lua b/src/ftp.lua
-index ea1145b..e0c3cae 100644
---- a/src/ftp.lua
-+++ b/src/ftp.lua
-@@ -268,11 +268,20 @@ _M.command = socket.protect(function(cmdt)
- cmdt = override(cmdt)
- socket.try(cmdt.host, "missing hostname")
- socket.try(cmdt.command, "missing command")
-- local f = open(cmdt.host, cmdt.port, cmdt.create)
-+ local f = _M.open(cmdt.host, cmdt.port, cmdt.create)
- f:greet()
- f:login(cmdt.user, cmdt.password)
-- f.try(f.tp:command(cmdt.command, cmdt.argument))
-- if cmdt.check then f.try(f.tp:check(cmdt.check)) end
-+ if type(cmdt.command) == "table" then
-+ local argument = cmdt.argument or {}
-+ local check = cmdt.check or {}
-+ for i,cmd in ipairs(cmdt.command) do
-+ f.try(f.tp:command(cmd, argument[i]))
-+ if check[i] then f.try(f.tp:check(check[i])) end
-+ end
-+ else
-+ f.try(f.tp:command(cmdt.command, cmdt.argument))
-+ if cmdt.check then f.try(f.tp:check(cmdt.check)) end
-+ end
- f:quit()
- return f:close()
- end)
-@@ -282,4 +291,4 @@ _M.get = socket.protect(function(gett)
- else return tget(gett) end
- end)
-
--return _M
-\ No newline at end of file
-+return _M
-diff --git a/src/http.lua b/src/http.lua
-index ac4b2d6..d6bcc91 100644
---- a/src/http.lua
-+++ b/src/http.lua
-@@ -22,12 +22,15 @@ local _M = socket.http
- -- Program constants
- -----------------------------------------------------------------------------
- -- connection timeout in seconds
--TIMEOUT = 60
---- default port for document retrieval
--_M.PORT = 80
-+_M.TIMEOUT = 60
- -- user agent field sent in request
- _M.USERAGENT = socket._VERSION
-
-+-- supported schemes
-+local SCHEMES = { ["http"] = true }
-+-- default port for document retrieval
-+local PORT = 80
-+
- -----------------------------------------------------------------------------
- -- Reads MIME headers from a connection, unfolding where needed
- -----------------------------------------------------------------------------
-@@ -114,7 +117,7 @@ function _M.open(host, port, create)
- h.try = socket.newtry(function() h:close() end)
- -- set timeout before connecting
- h.try(c:settimeout(_M.TIMEOUT))
-- h.try(c:connect(host, port or _M.PORT))
-+ h.try(c:connect(host, port or PORT))
- -- here everything worked
- return h
- end
-@@ -186,7 +189,7 @@ end
- local function adjusturi(reqt)
- local u = reqt
- -- if there is a proxy, we need the full url. otherwise, just a part.
-- if not reqt.proxy and not PROXY then
-+ if not reqt.proxy and not _M.PROXY then
- u = {
- path = socket.try(reqt.path, "invalid path 'nil'"),
- params = reqt.params,
-@@ -198,7 +201,7 @@ local function adjusturi(reqt)
- end
-
- local function adjustproxy(reqt)
-- local proxy = reqt.proxy or PROXY
-+ local proxy = reqt.proxy or _M.PROXY
- if proxy then
- proxy = url.parse(proxy)
- return proxy.host, proxy.port or 3128
-@@ -209,17 +212,27 @@ end
-
- local function adjustheaders(reqt)
- -- default headers
-+ local host = string.gsub(reqt.authority, "^.-@", "")
- local lower = {
- ["user-agent"] = _M.USERAGENT,
-- ["host"] = reqt.host,
-+ ["host"] = host,
- ["connection"] = "close, TE",
- ["te"] = "trailers"
- }
- -- if we have authentication information, pass it along
- if reqt.user and reqt.password then
-- lower["authorization"] =
-+ lower["authorization"] =
- "Basic " .. (mime.b64(reqt.user .. ":" .. reqt.password))
- end
-+ -- if we have proxy authentication information, pass it along
-+ local proxy = reqt.proxy or _M.PROXY
-+ if proxy then
-+ proxy = url.parse(proxy)
-+ if proxy.user and proxy.password then
-+ lower["proxy-authorization"] =
-+ "Basic " .. (mime.b64(proxy.user .. ":" .. proxy.password))
-+ end
-+ end
- -- override with user headers
- for i,v in base.pairs(reqt.headers or lower) do
- lower[string.lower(i)] = v
-@@ -230,7 +243,7 @@ end
- -- default url parts
- local default = {
- host = "",
-- port = _M.PORT,
-+ port = PORT,
- path ="/",
- scheme = "http"
- }
-@@ -240,22 +253,27 @@ local function adjustrequest(reqt)
- local nreqt = reqt.url and url.parse(reqt.url, default) or {}
- -- explicit components override url
- for i,v in base.pairs(reqt) do nreqt[i] = v end
-- if nreqt.port == "" then nreqt.port = 80 end
-- socket.try(nreqt.host and nreqt.host ~= "",
-- "invalid host '" .. base.tostring(nreqt.host) .. "'")
-+ if nreqt.port == "" then nreqt.port = PORT end
-+ if not (nreqt.host and nreqt.host ~= "") then
-+ socket.try(nil, "invalid host '" .. base.tostring(nreqt.host) .. "'")
-+ end
- -- compute uri if user hasn't overriden
- nreqt.uri = reqt.uri or adjusturi(nreqt)
-- -- ajust host and port if there is a proxy
-- nreqt.host, nreqt.port = adjustproxy(nreqt)
- -- adjust headers in request
- nreqt.headers = adjustheaders(nreqt)
-+ -- ajust host and port if there is a proxy
-+ nreqt.host, nreqt.port = adjustproxy(nreqt)
- return nreqt
- end
-
- local function shouldredirect(reqt, code, headers)
-- return headers.location and
-- string.gsub(headers.location, "%s", "") ~= "" and
-- (reqt.redirect ~= false) and
-+ local location = headers.location
-+ if not location then return false end
-+ location = string.gsub(location, "%s", "")
-+ if location == "" then return false end
-+ local scheme = string.match(location, "^([%w][%w%+%-%.]*)%:")
-+ if scheme and not SCHEMES[scheme] then return false end
-+ return (reqt.redirect ~= false) and
- (code == 301 or code == 302 or code == 303 or code == 307) and
- (not reqt.method or reqt.method == "GET" or reqt.method == "HEAD")
- and (not reqt.nredirects or reqt.nredirects < 5)
-@@ -279,10 +297,10 @@ local trequest, tredirect
- source = reqt.source,
- sink = reqt.sink,
- headers = reqt.headers,
-- proxy = reqt.proxy,
-+ proxy = reqt.proxy,
- nredirects = (reqt.nredirects or 0) + 1,
- create = reqt.create
-- }
-+ }
- -- pass location header back as a hint we redirected
- headers = headers or {}
- headers.location = headers.location or location
-@@ -299,7 +317,7 @@ end
- h:sendheaders(nreqt.headers)
- -- if there is a body, send it
- if nreqt.source then
-- h:sendbody(nreqt.headers, nreqt.source, nreqt.step)
-+ h:sendbody(nreqt.headers, nreqt.source, nreqt.step)
- end
- local code, status = h:receivestatusline()
- -- if it is an HTTP/0.9 server, simply get the body and we are done
-@@ -309,13 +327,13 @@ end
- end
- local headers
- -- ignore any 100-continue messages
-- while code == 100 do
-+ while code == 100 do
- headers = h:receiveheaders()
- code, status = h:receivestatusline()
- end
- headers = h:receiveheaders()
- -- at this point we should have a honest reply from the server
-- -- we can't redirect if we already used the source, so we report the error
-+ -- we can't redirect if we already used the source, so we report the error
- if shouldredirect(nreqt, code, headers) and not nreqt.source then
- h:close()
- return tredirect(reqt, headers.location)
-@@ -351,4 +369,4 @@ _M.request = socket.protect(function(reqt, body)
- else return trequest(reqt) end
- end)
-
--return _M
-\ No newline at end of file
-+return _M
-diff --git a/src/inet.c b/src/inet.c
-index 1a411f6..f4c8404 100644
---- a/src/inet.c
-+++ b/src/inet.c
-@@ -8,6 +8,7 @@
-
- #include "lua.h"
- #include "lauxlib.h"
-+#include "compat.h"
-
- #include "inet.h"
-
-@@ -41,11 +42,7 @@ int inet_open(lua_State *L)
- {
- lua_pushstring(L, "dns");
- lua_newtable(L);
--#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
- luaL_setfuncs(L, func, 0);
--#else
-- luaL_openlib(L, NULL, func, 0);
--#endif
- lua_settable(L, -3);
- return 0;
- }
-@@ -97,7 +94,7 @@ static int inet_global_getnameinfo(lua_State *L) {
-
- memset(&hints, 0, sizeof(hints));
- hints.ai_socktype = SOCK_STREAM;
-- hints.ai_family = PF_UNSPEC;
-+ hints.ai_family = AF_UNSPEC;
-
- ret = getaddrinfo(host, serv, &hints, &resolved);
- if (ret != 0) {
-@@ -108,8 +105,8 @@ static int inet_global_getnameinfo(lua_State *L) {
-
- lua_newtable(L);
- for (i = 1, iter = resolved; iter; i++, iter = iter->ai_next) {
-- getnameinfo(iter->ai_addr, (socklen_t) iter->ai_addrlen,
-- hbuf, host? (socklen_t) sizeof(hbuf): 0,
-+ getnameinfo(iter->ai_addr, (socklen_t) iter->ai_addrlen,
-+ hbuf, host? (socklen_t) sizeof(hbuf): 0,
- sbuf, serv? (socklen_t) sizeof(sbuf): 0, 0);
- if (host) {
- lua_pushnumber(L, i);
-@@ -149,7 +146,7 @@ static int inet_global_toip(lua_State *L)
- int inet_optfamily(lua_State* L, int narg, const char* def)
- {
- static const char* optname[] = { "unspec", "inet", "inet6", NULL };
-- static int optvalue[] = { PF_UNSPEC, PF_INET, PF_INET6, 0 };
-+ static int optvalue[] = { AF_UNSPEC, AF_INET, AF_INET6, 0 };
-
- return optvalue[luaL_checkoption(L, narg, def, optname)];
- }
-@@ -170,7 +167,7 @@ static int inet_global_getaddrinfo(lua_State *L)
- int i = 1, ret = 0;
- memset(&hints, 0, sizeof(hints));
- hints.ai_socktype = SOCK_STREAM;
-- hints.ai_family = PF_UNSPEC;
-+ hints.ai_family = AF_UNSPEC;
- ret = getaddrinfo(hostname, NULL, &hints, &resolved);
- if (ret != 0) {
- lua_pushnil(L);
-@@ -180,9 +177,10 @@ static int inet_global_getaddrinfo(lua_State *L)
- lua_newtable(L);
- for (iterator = resolved; iterator; iterator = iterator->ai_next) {
- char hbuf[NI_MAXHOST];
-- ret = getnameinfo(iterator->ai_addr, (socklen_t) iterator->ai_addrlen,
-+ ret = getnameinfo(iterator->ai_addr, (socklen_t) iterator->ai_addrlen,
- hbuf, (socklen_t) sizeof(hbuf), NULL, 0, NI_NUMERICHOST);
- if (ret){
-+ freeaddrinfo(resolved);
- lua_pushnil(L);
- lua_pushstring(L, socket_gaistrerror(ret));
- return 2;
-@@ -200,6 +198,16 @@ static int inet_global_getaddrinfo(lua_State *L)
- lua_pushliteral(L, "inet6");
- lua_settable(L, -3);
- break;
-+ case AF_UNSPEC:
-+ lua_pushliteral(L, "family");
-+ lua_pushliteral(L, "unspec");
-+ lua_settable(L, -3);
-+ break;
-+ default:
-+ lua_pushliteral(L, "family");
-+ lua_pushliteral(L, "unknown");
-+ lua_settable(L, -3);
-+ break;
- }
- lua_pushliteral(L, "addr");
- lua_pushstring(L, hbuf);
-@@ -256,12 +264,11 @@ int inet_meth_getpeername(lua_State *L, p_socket ps, int family)
- }
- lua_pushstring(L, name);
- lua_pushinteger(L, (int) strtol(port, (char **) NULL, 10));
-- if (family == PF_INET) {
-- lua_pushliteral(L, "inet");
-- } else if (family == PF_INET6) {
-- lua_pushliteral(L, "inet6");
-- } else {
-- lua_pushliteral(L, "uknown family");
-+ switch (family) {
-+ case AF_INET: lua_pushliteral(L, "inet"); break;
-+ case AF_INET6: lua_pushliteral(L, "inet6"); break;
-+ case AF_UNSPEC: lua_pushliteral(L, "unspec"); break;
-+ default: lua_pushliteral(L, "unknown"); break;
- }
- return 3;
- }
-@@ -281,7 +288,7 @@ int inet_meth_getsockname(lua_State *L, p_socket ps, int family)
- lua_pushstring(L, socket_strerror(errno));
- return 2;
- }
-- err=getnameinfo((struct sockaddr *)&peer, peer_len,
-+ err=getnameinfo((struct sockaddr *)&peer, peer_len,
- name, INET6_ADDRSTRLEN, port, 6, NI_NUMERICHOST | NI_NUMERICSERV);
- if (err) {
- lua_pushnil(L);
-@@ -290,12 +297,11 @@ int inet_meth_getsockname(lua_State *L, p_socket ps, int family)
- }
- lua_pushstring(L, name);
- lua_pushstring(L, port);
-- if (family == PF_INET) {
-- lua_pushliteral(L, "inet");
-- } else if (family == PF_INET6) {
-- lua_pushliteral(L, "inet6");
-- } else {
-- lua_pushliteral(L, "uknown family");
-+ switch (family) {
-+ case AF_INET: lua_pushliteral(L, "inet"); break;
-+ case AF_INET6: lua_pushliteral(L, "inet6"); break;
-+ case AF_UNSPEC: lua_pushliteral(L, "unspec"); break;
-+ default: lua_pushliteral(L, "unknown"); break;
- }
- return 3;
- }
-@@ -346,8 +352,13 @@ static void inet_pushresolved(lua_State *L, struct hostent *hp)
- /*-------------------------------------------------------------------------*\
- * Tries to create a new inet socket
- \*-------------------------------------------------------------------------*/
--const char *inet_trycreate(p_socket ps, int family, int type) {
-- return socket_strerror(socket_create(ps, family, type, 0));
-+const char *inet_trycreate(p_socket ps, int family, int type, int protocol) {
-+ const char *err = socket_strerror(socket_create(ps, family, type, protocol));
-+ if (err == NULL && family == AF_INET6) {
-+ int yes = 1;
-+ setsockopt(*ps, IPPROTO_IPV6, IPV6_V6ONLY, (void *)&yes, sizeof(yes));
-+ }
-+ return err;
- }
-
- /*-------------------------------------------------------------------------*\
-@@ -356,21 +367,21 @@ const char *inet_trycreate(p_socket ps, int family, int type) {
- const char *inet_trydisconnect(p_socket ps, int family, p_timeout tm)
- {
- switch (family) {
-- case PF_INET: {
-+ case AF_INET: {
- struct sockaddr_in sin;
- memset((char *) &sin, 0, sizeof(sin));
- sin.sin_family = AF_UNSPEC;
- sin.sin_addr.s_addr = INADDR_ANY;
-- return socket_strerror(socket_connect(ps, (SA *) &sin,
-+ return socket_strerror(socket_connect(ps, (SA *) &sin,
- sizeof(sin), tm));
- }
-- case PF_INET6: {
-+ case AF_INET6: {
- struct sockaddr_in6 sin6;
-- struct in6_addr addrany = IN6ADDR_ANY_INIT;
-+ struct in6_addr addrany = IN6ADDR_ANY_INIT;
- memset((char *) &sin6, 0, sizeof(sin6));
- sin6.sin6_family = AF_UNSPEC;
- sin6.sin6_addr = addrany;
-- return socket_strerror(socket_connect(ps, (SA *) &sin6,
-+ return socket_strerror(socket_connect(ps, (SA *) &sin6,
- sizeof(sin6), tm));
- }
- }
-@@ -385,6 +396,7 @@ const char *inet_tryconnect(p_socket ps, int *family, const char *address,
- {
- struct addrinfo *iterator = NULL, *resolved = NULL;
- const char *err = NULL;
-+ int current_family = *family;
- /* try resolving */
- err = socket_gaistrerror(getaddrinfo(address, serv,
- connecthints, &resolved));
-@@ -399,23 +411,23 @@ const char *inet_tryconnect(p_socket ps, int *family, const char *address,
- * that shows up while iterating. if there was a
- * bind, all families will be the same and we will
- * not enter this branch. */
-- if (*family != iterator->ai_family) {
-+ if (current_family != iterator->ai_family || *ps == SOCKET_INVALID) {
- socket_destroy(ps);
-- err = socket_strerror(socket_create(ps, iterator->ai_family,
-- iterator->ai_socktype, iterator->ai_protocol));
-- if (err != NULL) {
-- freeaddrinfo(resolved);
-- return err;
-- }
-- *family = iterator->ai_family;
-- /* all sockets initially non-blocking */
-+ err = inet_trycreate(ps, iterator->ai_family,
-+ iterator->ai_socktype, iterator->ai_protocol);
-+ if (err) continue;
-+ current_family = iterator->ai_family;
-+ /* set non-blocking before connect */
- socket_setnonblocking(ps);
- }
- /* try connecting to remote address */
-- err = socket_strerror(socket_connect(ps, (SA *) iterator->ai_addr,
-+ err = socket_strerror(socket_connect(ps, (SA *) iterator->ai_addr,
- (socklen_t) iterator->ai_addrlen, tm));
-- /* if success, break out of loop */
-- if (err == NULL) break;
-+ /* if success or timeout is zero, break out of loop */
-+ if (err == NULL || timeout_iszero(tm)) {
-+ *family = current_family;
-+ break;
-+ }
- }
- freeaddrinfo(resolved);
- /* here, if err is set, we failed */
-@@ -425,29 +437,27 @@ const char *inet_tryconnect(p_socket ps, int *family, const char *address,
- /*-------------------------------------------------------------------------*\
- * Tries to accept a socket
- \*-------------------------------------------------------------------------*/
--const char *inet_tryaccept(p_socket server, int family, p_socket client,
-- p_timeout tm)
--{
-+const char *inet_tryaccept(p_socket server, int family, p_socket client,
-+ p_timeout tm) {
- socklen_t len;
- t_sockaddr_storage addr;
-- if (family == PF_INET6) {
-- len = sizeof(struct sockaddr_in6);
-- } else {
-- len = sizeof(struct sockaddr_in);
-- }
-- return socket_strerror(socket_accept(server, client, (SA *) &addr,
-+ switch (family) {
-+ case AF_INET6: len = sizeof(struct sockaddr_in6); break;
-+ case AF_INET: len = sizeof(struct sockaddr_in); break;
-+ default: len = sizeof(addr); break;
-+ }
-+ return socket_strerror(socket_accept(server, client, (SA *) &addr,
- &len, tm));
- }
-
- /*-------------------------------------------------------------------------*\
- * Tries to bind socket to (address, port)
- \*-------------------------------------------------------------------------*/
--const char *inet_trybind(p_socket ps, const char *address, const char *serv,
-- struct addrinfo *bindhints)
--{
-+const char *inet_trybind(p_socket ps, int *family, const char *address,
-+ const char *serv, struct addrinfo *bindhints) {
- struct addrinfo *iterator = NULL, *resolved = NULL;
- const char *err = NULL;
-- t_socket sock = *ps;
-+ int current_family = *family;
- /* translate luasocket special values to C */
- if (strcmp(address, "*") == 0) address = NULL;
- if (!serv) serv = "0";
-@@ -459,35 +469,32 @@ const char *inet_trybind(p_socket ps, const char *address, const char *serv,
- }
- /* iterate over resolved addresses until one is good */
- for (iterator = resolved; iterator; iterator = iterator->ai_next) {
-- if(sock == SOCKET_INVALID) {
-- err = socket_strerror(socket_create(&sock, iterator->ai_family,
-- iterator->ai_socktype, iterator->ai_protocol));
-- if(err)
-- continue;
-+ if (current_family != iterator->ai_family || *ps == SOCKET_INVALID) {
-+ socket_destroy(ps);
-+ err = inet_trycreate(ps, iterator->ai_family,
-+ iterator->ai_socktype, iterator->ai_protocol);
-+ if (err) continue;
-+ current_family = iterator->ai_family;
- }
- /* try binding to local address */
-- err = socket_strerror(socket_bind(&sock,
-- (SA *) iterator->ai_addr,
-+ err = socket_strerror(socket_bind(ps, (SA *) iterator->ai_addr,
- (socklen_t) iterator->ai_addrlen));
--
- /* keep trying unless bind succeeded */
-- if (err) {
-- if(sock != *ps)
-- socket_destroy(&sock);
-- } else {
-- /* remember what we connected to, particularly the family */
-- *bindhints = *iterator;
-+ if (err == NULL) {
-+ *family = current_family;
-+ /* set to non-blocking after bind */
-+ socket_setnonblocking(ps);
- break;
- }
- }
- /* cleanup and return error */
- freeaddrinfo(resolved);
-- *ps = sock;
-+ /* here, if err is set, we failed */
- return err;
- }
-
- /*-------------------------------------------------------------------------*\
--* Some systems do not provide these so that we provide our own.
-+* Some systems do not provide these so that we provide our own.
- \*-------------------------------------------------------------------------*/
- #ifdef LUASOCKET_INET_ATON
- int inet_aton(const char *cp, struct in_addr *inp)
-@@ -512,7 +519,7 @@ int inet_aton(const char *cp, struct in_addr *inp)
- #endif
-
- #ifdef LUASOCKET_INET_PTON
--int inet_pton(int af, const char *src, void *dst)
-+int inet_pton(int af, const char *src, void *dst)
- {
- struct addrinfo hints, *res;
- int ret = 1;
-@@ -529,7 +536,7 @@ int inet_pton(int af, const char *src, void *dst)
- } else {
- ret = -1;
- }
-- freeaddrinfo(res);
-+ freeaddrinfo(res);
- return ret;
- }
-
-diff --git a/src/inet.h b/src/inet.h
-index 1f1a96a..feb3541 100644
---- a/src/inet.h
-+++ b/src/inet.h
-@@ -1,12 +1,12 @@
--#ifndef INET_H
--#define INET_H
-+#ifndef INET_H
-+#define INET_H
- /*=========================================================================*\
- * Internet domain functions
- * LuaSocket toolkit
- *
- * This module implements the creation and connection of internet domain
- * sockets, on top of the socket.h interface, and the interface of with the
--* resolver.
-+* resolver.
- *
- * The function inet_aton is provided for the platforms where it is not
- * available. The module also implements the interface of the internet
-@@ -24,11 +24,11 @@
-
- int inet_open(lua_State *L);
-
--const char *inet_trycreate(p_socket ps, int family, int type);
-+const char *inet_trycreate(p_socket ps, int family, int type, int protocol);
- const char *inet_tryconnect(p_socket ps, int *family, const char *address,
- const char *serv, p_timeout tm, struct addrinfo *connecthints);
--const char *inet_trybind(p_socket ps, const char *address, const char *serv,
-- struct addrinfo *bindhints);
-+const char *inet_trybind(p_socket ps, int *family, const char *address,
-+ const char *serv, struct addrinfo *bindhints);
- const char *inet_trydisconnect(p_socket ps, int family, p_timeout tm);
- const char *inet_tryaccept(p_socket server, int family, p_socket client, p_timeout tm);
-
-diff --git a/src/io.c b/src/io.c
-index 35f46f7..a4230ce 100644
---- a/src/io.c
-+++ b/src/io.c
-@@ -25,6 +25,6 @@ const char *io_strerror(int err) {
- case IO_DONE: return NULL;
- case IO_CLOSED: return "closed";
- case IO_TIMEOUT: return "timeout";
-- default: return "unknown error";
-+ default: return "unknown error";
- }
- }
-diff --git a/src/io.h b/src/io.h
-index 76a3e58..8cca08a 100644
---- a/src/io.h
-+++ b/src/io.h
-@@ -22,7 +22,7 @@ enum {
- IO_DONE = 0, /* operation completed successfully */
- IO_TIMEOUT = -1, /* operation timed out */
- IO_CLOSED = -2, /* the connection has been closed */
-- IO_UNKNOWN = -3
-+ IO_UNKNOWN = -3
- };
-
- /* interface to error message function */
-diff --git a/src/ltn12.lua b/src/ltn12.lua
-index 5b10f56..575c5a7 100644
---- a/src/ltn12.lua
-+++ b/src/ltn12.lua
-@@ -9,6 +9,7 @@
- -----------------------------------------------------------------------------
- local string = require("string")
- local table = require("table")
-+local unpack = unpack or table.unpack
- local base = _G
- local _M = {}
- if module then -- heuristic for exporting a global package table
-@@ -21,6 +22,9 @@ _M.source = source
- _M.sink = sink
- _M.pump = pump
-
-+local unpack = unpack or table.unpack
-+local select = base.select
-+
- -- 2048 seems to be better in windows...
- _M.BLOCKSIZE = 2048
- _M._VERSION = "LTN12 1.0.3"
-@@ -42,7 +46,7 @@ end
- -- (thanks to Wim Couwenberg)
- function filter.chain(...)
- local arg = {...}
-- local n = select('#',...)
-+ local n = base.select('#',...)
- local top, index = 1, 1
- local retry = ""
- return function(chunk)
-@@ -139,7 +143,9 @@ function source.rewind(src)
- end
- end
-
--function source.chain(src, f)
-+-- chains a source with one or several filter(s)
-+function source.chain(src, f, ...)
-+ if ... then f=filter.chain(f, ...) end
- base.assert(src and f)
- local last_in, last_out = "", ""
- local state = "feeding"
-@@ -254,8 +260,13 @@ function sink.error(err)
- end
- end
-
---- chains a sink with a filter
--function sink.chain(f, snk)
-+-- chains a sink with one or several filter(s)
-+function sink.chain(f, snk, ...)
-+ if ... then
-+ local args = { f, snk, ... }
-+ snk = table.remove(args, #args)
-+ f = filter.chain(unpack(args))
-+ end
- base.assert(f and snk)
- return function(chunk, err)
- if chunk ~= "" then
-diff --git a/src/luasocket.c b/src/luasocket.c
-index e6ee747..7d9c802 100644
---- a/src/luasocket.c
-+++ b/src/luasocket.c
-@@ -17,7 +17,7 @@
- \*=========================================================================*/
- #include "lua.h"
- #include "lauxlib.h"
--
-+#include "compat.h"
-
- /*=========================================================================*\
- * LuaSocket includes
-@@ -64,7 +64,7 @@ static luaL_Reg func[] = {
- * Skip a few arguments
- \*-------------------------------------------------------------------------*/
- static int global_skip(lua_State *L) {
-- int amount = luaL_checkint(L, 1);
-+ int amount = luaL_checkinteger(L, 1);
- int ret = lua_gettop(L) - amount - 1;
- return ret >= 0 ? ret : 0;
- }
-@@ -78,26 +78,14 @@ static int global_unload(lua_State *L) {
- return 0;
- }
-
--#if LUA_VERSION_NUM > 501
--int luaL_typerror (lua_State *L, int narg, const char *tname) {
-- const char *msg = lua_pushfstring(L, "%s expected, got %s",
-- tname, luaL_typename(L, narg));
-- return luaL_argerror(L, narg, msg);
--}
--#endif
--
- /*-------------------------------------------------------------------------*\
- * Setup basic stuff.
- \*-------------------------------------------------------------------------*/
- static int base_open(lua_State *L) {
- if (socket_open()) {
- /* export functions (and leave namespace table on top of stack) */
--#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
- lua_newtable(L);
- luaL_setfuncs(L, func, 0);
--#else
-- luaL_openlib(L, "socket", func, 0);
--#endif
- #ifdef LUASOCKET_DEBUG
- lua_pushstring(L, "_DEBUG");
- lua_pushboolean(L, 1);
-diff --git a/src/makefile b/src/makefile
-index c24e61b..adf687f 100644
---- a/src/makefile
-+++ b/src/makefile
-@@ -20,15 +20,17 @@ PLAT?=linux
- # lua version to build against
- LUAV?=5.1
-
-+# MYCFLAGS: to be set by user if needed
-+MYCFLAGS=
-+
-+# MYLDFLAGS: to be set by user if needed
-+MYLDFLAGS=
-+
- # DEBUG: NODEBUG DEBUG
- # debug mode causes luasocket to collect and returns timing information useful
- # for testing and debugging luasocket itself
- DEBUG?=NODEBUG
-
--# COMPAT: COMPAT NOCOMPAT
--# when compiling for 5.2, use LUA_COMPAT_MODULE
--COMPAT?=NOCOMPAT
--
- # where lua headers are found for macosx builds
- # LUAINC_macosx:
- # /opt/local/include
-@@ -40,7 +42,6 @@ LUAPREFIX_macosx?=/opt/local
- CDIR_macosx?=lib/lua/$(LUAV)
- LDIR_macosx?=share/lua/$(LUAV)
-
--
- # LUAINC_linux:
- # /usr/include/lua$(LUAV)
- # /usr/local/include
-@@ -52,8 +53,17 @@ LUAPREFIX_linux?=/usr/local
- CDIR_linux?=lib/lua/$(LUAV)
- LDIR_linux?=share/lua/$(LUAV)
-
-+# LUAINC_freebsd:
-+# /usr/local/include/lua$(LUAV)
-+# where lua headers are found for freebsd builds
-+LUAINC_freebsd_base?=/usr/local/include/
-+LUAINC_freebsd?=$(LUAINC_freebsd_base)/lua$(LUAV)
-+LUAPREFIX_freebsd?=/usr/local/
-+CDIR_freebsd?=lib/lua/$(LUAV)
-+LDIR_freebsd?=share/lua/$(LUAV)
-+
- # where lua headers are found for mingw builds
--# LUAINC_mingw:
-+# LUAINC_mingw:
- # /opt/local/include
- LUAINC_mingw_base?=/usr/include
- LUAINC_mingw?=$(LUAINC_mingw_base)/lua/$(LUAV)
-@@ -67,13 +77,21 @@ LDIR_mingw?=lua/$(LUAV)/lua
- # LUAINC_win32:
- # LUALIB_win32:
- # where lua headers and libraries are found for win32 builds
--LUAINC_win32_base?=
--LUAINC_win32?=$(LUAINC_win32_base)/lua/$(LUAV)
--PLATFORM_win32?=Release
- LUAPREFIX_win32?=
--CDIR_win32?=lua/$(LUAV)/$(PLATFORM_win32)
--LDIR_win32?=lua/$(LUAV)/$(PLATFORM_win32)/lua
--LUALIB_win32?=$(LUAPREFIX_win32)/lua/$(LUAV)/$(PLATFORM_win32)
-+LUAINC_win32?=$(LUAPREFIX_win32)/include/lua/$(LUAV)
-+PLATFORM_win32?=Release
-+CDIR_win32?=bin/lua/$(LUAV)/$(PLATFORM_win32)
-+LDIR_win32?=bin/lua/$(LUAV)/$(PLATFORM_win32)/lua
-+LUALIB_win32?=$(LUAPREFIX_win32)/lib/lua/$(LUAV)/$(PLATFORM_win32)
-+LUALIBNAME_win32?=lua$(subst .,,$(LUAV)).lib
-+
-+
-+# LUAINC_solaris:
-+LUAINC_solaris_base?=/usr/include
-+LUAINC_solaris?=$(LUAINC_solaris_base)/lua/$(LUAV)
-+LUAPREFIX_solaris?=/usr/local
-+CDIR_solaris?=lib/lua/$(LUAV)
-+LDIR_solaris?=share/lua/$(LUAV)
-
- # prefix: /usr/local /usr /opt/local /sw
- # the top of the default install tree
-@@ -121,7 +139,7 @@ print:
- #------
- # Supported platforms
- #
--PLATS= macosx linux win32 mingw
-+PLATS= macosx linux win32 mingw solaris
-
- #------
- # Compiler and linker settings
-@@ -129,11 +147,11 @@ PLATS= macosx linux win32 mingw
- SO_macosx=so
- O_macosx=o
- CC_macosx=gcc
--DEF_macosx= -DLUASOCKET_$(DEBUG) -DUNIX_HAS_SUN_LEN -DLUA_$(COMPAT)_MODULE \
-+DEF_macosx= -DLUASOCKET_$(DEBUG) -DUNIX_HAS_SUN_LEN \
- -DLUASOCKET_API='__attribute__((visibility("default")))' \
- -DUNIX_API='__attribute__((visibility("default")))' \
- -DMIME_API='__attribute__((visibility("default")))'
--CFLAGS_macosx= -I$(LUAINC) $(DEF) -pedantic -Wall -O2 -fno-common \
-+CFLAGS_macosx= -I$(LUAINC) $(DEF) -Wall -O2 -fno-common \
- -fvisibility=hidden
- LDFLAGS_macosx= -bundle -undefined dynamic_lookup -o
- LD_macosx= export MACOSX_DEPLOYMENT_TARGET="10.3"; gcc
-@@ -145,11 +163,11 @@ SOCKET_macosx=usocket.o
- SO_linux=so
- O_linux=o
- CC_linux=gcc
--DEF_linux=-DLUASOCKET_$(DEBUG) -DLUA_$(COMPAT)_MODULE \
-+DEF_linux=-DLUASOCKET_$(DEBUG) \
- -DLUASOCKET_API='__attribute__((visibility("default")))' \
- -DUNIX_API='__attribute__((visibility("default")))' \
- -DMIME_API='__attribute__((visibility("default")))'
--CFLAGS_linux= -I$(LUAINC) $(DEF) -pedantic -Wall -Wshadow -Wextra \
-+CFLAGS_linux= -I$(LUAINC) $(DEF) -Wall -Wshadow -Wextra \
- -Wimplicit -O2 -ggdb3 -fpic -fvisibility=hidden
- LDFLAGS_linux=-O -shared -fpic -o
- LD_linux=gcc
-@@ -157,14 +175,46 @@ SOCKET_linux=usocket.o
-
- #------
- # Compiler and linker settings
-+# for FreeBSD
-+SO_freebsd=so
-+O_freebsd=o
-+CC_freebsd=gcc
-+DEF_freebsd=-DLUASOCKET_$(DEBUG) \
-+ -DLUASOCKET_API='__attribute__((visibility("default")))' \
-+ -DUNIX_API='__attribute__((visibility("default")))' \
-+ -DMIME_API='__attribute__((visibility("default")))'
-+CFLAGS_freebsd= -I$(LUAINC) $(DEF) -Wall -Wshadow -Wextra \
-+ -Wimplicit -O2 -ggdb3 -fpic -fvisibility=hidden
-+LDFLAGS_freebsd=-O -shared -fpic -o
-+LD_freebsd=gcc
-+SOCKET_freebsd=usocket.o
-+
-+#------
-+# Compiler and linker settings
-+# for Solaris
-+SO_solaris=so
-+O_solaris=o
-+CC_solaris=gcc
-+DEF_solaris=-DLUASOCKET_$(DEBUG) \
-+ -DLUASOCKET_API='__attribute__((visibility("default")))' \
-+ -DUNIX_API='__attribute__((visibility("default")))' \
-+ -DMIME_API='__attribute__((visibility("default")))'
-+CFLAGS_solaris=-I$(LUAINC) $(DEF) -Wall -Wshadow -Wextra \
-+ -Wimplicit -O2 -ggdb3 -fpic -fvisibility=hidden
-+LDFLAGS_solaris=-lnsl -lsocket -lresolv -O -shared -fpic -o
-+LD_solaris=gcc
-+SOCKET_solaris=usocket.o
-+
-+#------
-+# Compiler and linker settings
- # for MingW
- SO_mingw=dll
- O_mingw=o
- CC_mingw=gcc
--DEF_mingw= -DLUASOCKET_INET_PTON -DLUASOCKET_$(DEBUG) -DLUA_$(COMPAT)_MODULE \
-+DEF_mingw= -DLUASOCKET_INET_PTON -DLUASOCKET_$(DEBUG) \
- -DWINVER=0x0501 -DLUASOCKET_API='__declspec(dllexport)' \
- -DMIME_API='__declspec(dllexport)'
--CFLAGS_mingw= -I$(LUAINC) $(DEF) -pedantic -Wall -O2 -fno-common \
-+CFLAGS_mingw= -I$(LUAINC) $(DEF) -Wall -O2 -fno-common \
- -fvisibility=hidden
- LDFLAGS_mingw= $(LUALIB) -shared -Wl,-s -lws2_32 -o
- LD_mingw=gcc
-@@ -179,8 +229,7 @@ O_win32=obj
- CC_win32=cl
- DEF_win32= //D "WIN32" //D "NDEBUG" //D "_WINDOWS" //D "_USRDLL" \
- //D "LUASOCKET_API=__declspec(dllexport)" //D "_CRT_SECURE_NO_WARNINGS" \
-- //D "_WINDLL" //D "LUA_$(COMPAT)_MODULE" \
-- //D "MIME_API=__declspec(dllexport)" \
-+ //D "_WINDLL" //D "MIME_API=__declspec(dllexport)" \
- //D "LUASOCKET_$(DEBUG)"
- CFLAGS_win32=//I "$(LUAINC)" $(DEF) //O2 //Ot //MD //W3 //nologo
- LDFLAGS_win32= //nologo //link //NOLOGO //DLL //INCREMENTAL:NO \
-@@ -188,7 +237,7 @@ LDFLAGS_win32= //nologo //link //NOLOGO //DLL //INCREMENTAL:NO \
- //MANIFESTUAC:"level='asInvoker' uiAccess='false'" \
- //SUBSYSTEM:WINDOWS //OPT:REF //OPT:ICF //DYNAMICBASE:NO \
- //MACHINE:X86 /LIBPATH:"$(shell cmd //c echo $(LUALIB))" \
-- lua$(subst .,,$(LUAV)).lib ws2_32.lib //OUT:
-+ $(LUALIBNAME_win32) ws2_32.lib //OUT:
- LD_win32=cl
- SOCKET_win32=wsocket.obj
-
-@@ -204,8 +253,8 @@ SO=$(SO_$(PLAT))
- O=$(O_$(PLAT))
- SOCKET_V=3.0-rc1
- MIME_V=1.0.3
--SOCKET_SO=socket.$(SO).$(SOCKET_V)
--MIME_SO=mime.$(SO).$(MIME_V)
-+SOCKET_SO=socket-$(SOCKET_V).$(SO)
-+MIME_SO=mime-$(MIME_V).$(SO)
- UNIX_SO=unix.$(SO)
- SERIAL_SO=serial.$(SO)
- SOCKET=$(SOCKET_$(PLAT))
-@@ -215,8 +264,8 @@ SOCKET=$(SOCKET_$(PLAT))
- #
- CC=$(CC_$(PLAT))
- DEF=$(DEF_$(PLAT))
--CFLAGS=$(CFLAGS_$(PLAT))
--LDFLAGS=$(LDFLAGS_$(PLAT))
-+CFLAGS=$(MYCFLAGS) $(CFLAGS_$(PLAT))
-+LDFLAGS=$(MYLDFLAGS) $(LDFLAGS_$(PLAT))
- LD=$(LD_$(PLAT))
- LUAINC= $(LUAINC_$(PLAT))
- LUALIB= $(LUALIB_$(PLAT))
-@@ -230,6 +279,7 @@ SOCKET_OBJS= \
- buffer.$(O) \
- io.$(O) \
- auxiliar.$(O) \
-+ compat.$(O) \
- options.$(O) \
- inet.$(O) \
- $(SOCKET) \
-@@ -242,7 +292,8 @@ SOCKET_OBJS= \
- # Modules belonging mime-core
- #
- MIME_OBJS= \
-- mime.$(O)
-+ mime.$(O) \
-+ compat.$(O)
-
- #------
- # Modules belonging unix (local domain sockets)
-@@ -259,7 +310,7 @@ UNIX_OBJS=\
- #------
- # Modules belonging to serial (device streams)
- #
--SERIAL_OBJS:=\
-+SERIAL_OBJS=\
- buffer.$(O) \
- auxiliar.$(O) \
- options.$(O) \
-@@ -289,6 +340,10 @@ TO_TOP_LDIR= \
- #
- default: $(PLAT)
-
-+
-+freebsd:
-+ $(MAKE) all-unix PLAT=freebsd
-+
- macosx:
- $(MAKE) all-unix PLAT=macosx
-
-@@ -300,6 +355,9 @@ linux:
-
- mingw:
- $(MAKE) all PLAT=mingw
-+
-+solaris:
-+ $(MAKE) all-unix PLAT=solaris
-
- none:
- @echo "Please run"
-@@ -349,6 +407,7 @@ clean:
- #------
- # List of dependencies
- #
-+compat.$(O): compat.c compat.h
- auxiliar.$(O): auxiliar.c auxiliar.h
- buffer.$(O): buffer.c buffer.h io.h timeout.h
- except.$(O): except.c except.h
-diff --git a/src/mbox.lua b/src/mbox.lua
-index 7724ae2..ed9e781 100644
---- a/src/mbox.lua
-+++ b/src/mbox.lua
-@@ -61,7 +61,7 @@ function _M.parse_from(from)
- end
-
- function _M.split_mbox(mbox_s)
-- mbox = {}
-+ local mbox = {}
- mbox_s = string.gsub(mbox_s, "\r\n", "\n") .."\n\nFrom \n"
- local nj, i, j = 1, 1, 1
- while 1 do
-diff --git a/src/mime.c b/src/mime.c
-index dd37dcf..ed44104 100644
---- a/src/mime.c
-+++ b/src/mime.c
-@@ -6,10 +6,7 @@
-
- #include "lua.h"
- #include "lauxlib.h"
--
--#if !defined(LUA_VERSION_NUM) || (LUA_VERSION_NUM < 501)
--#include "compat-5.1.h"
--#endif
-+#include "compat.h"
-
- #include "mime.h"
-
-@@ -41,7 +38,7 @@ static size_t b64decode(UC c, UC *input, size_t size, luaL_Buffer *buffer);
- static void qpsetup(UC *class, UC *unbase);
- static void qpquote(UC c, luaL_Buffer *buffer);
- static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer);
--static size_t qpencode(UC c, UC *input, size_t size,
-+static size_t qpencode(UC c, UC *input, size_t size,
- const char *marker, luaL_Buffer *buffer);
- static size_t qppad(UC *input, size_t size, luaL_Buffer *buffer);
-
-@@ -81,12 +78,8 @@ static UC b64unbase[256];
- \*-------------------------------------------------------------------------*/
- MIME_API int luaopen_mime_core(lua_State *L)
- {
--#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
- lua_newtable(L);
- luaL_setfuncs(L, func, 0);
--#else
-- luaL_openlib(L, "mime", func, 0);
--#endif
- /* make version string available to scripts */
- lua_pushstring(L, "_VERSION");
- lua_pushstring(L, MIME_VERSION);
-@@ -103,15 +96,15 @@ MIME_API int luaopen_mime_core(lua_State *L)
- /*-------------------------------------------------------------------------*\
- * Incrementaly breaks a string into lines. The string can have CRLF breaks.
- * A, n = wrp(l, B, length)
--* A is a copy of B, broken into lines of at most 'length' bytes.
--* 'l' is how many bytes are left for the first line of B.
--* 'n' is the number of bytes left in the last line of A.
-+* A is a copy of B, broken into lines of at most 'length' bytes.
-+* 'l' is how many bytes are left for the first line of B.
-+* 'n' is the number of bytes left in the last line of A.
- \*-------------------------------------------------------------------------*/
- static int mime_global_wrp(lua_State *L)
- {
- size_t size = 0;
- int left = (int) luaL_checknumber(L, 1);
-- const UC *input = (UC *) luaL_optlstring(L, 2, NULL, &size);
-+ const UC *input = (const UC *) luaL_optlstring(L, 2, NULL, &size);
- const UC *last = input + size;
- int length = (int) luaL_optnumber(L, 3, 76);
- luaL_Buffer buffer;
-@@ -123,7 +116,7 @@ static int mime_global_wrp(lua_State *L)
- else lua_pushnil(L);
- lua_pushnumber(L, length);
- return 2;
-- }
-+ }
- luaL_buffinit(L, &buffer);
- while (input < last) {
- switch (*input) {
-@@ -150,9 +143,9 @@ static int mime_global_wrp(lua_State *L)
- }
-
- /*-------------------------------------------------------------------------*\
--* Fill base64 decode map.
-+* Fill base64 decode map.
- \*-------------------------------------------------------------------------*/
--static void b64setup(UC *unbase)
-+static void b64setup(UC *unbase)
- {
- int i;
- for (i = 0; i <= 255; i++) unbase[i] = (UC) 255;
-@@ -161,11 +154,11 @@ static void b64setup(UC *unbase)
- }
-
- /*-------------------------------------------------------------------------*\
--* Acumulates bytes in input buffer until 3 bytes are available.
-+* Acumulates bytes in input buffer until 3 bytes are available.
- * Translate the 3 bytes into Base64 form and append to buffer.
- * Returns new number of bytes in buffer.
- \*-------------------------------------------------------------------------*/
--static size_t b64encode(UC c, UC *input, size_t size,
-+static size_t b64encode(UC c, UC *input, size_t size,
- luaL_Buffer *buffer)
- {
- input[size++] = c;
-@@ -174,7 +167,7 @@ static size_t b64encode(UC c, UC *input, size_t size,
- unsigned long value = 0;
- value += input[0]; value <<= 8;
- value += input[1]; value <<= 8;
-- value += input[2];
-+ value += input[2];
- code[3] = b64base[value & 0x3f]; value >>= 6;
- code[2] = b64base[value & 0x3f]; value >>= 6;
- code[1] = b64base[value & 0x3f]; value >>= 6;
-@@ -186,11 +179,11 @@ static size_t b64encode(UC c, UC *input, size_t size,
- }
-
- /*-------------------------------------------------------------------------*\
--* Encodes the Base64 last 1 or 2 bytes and adds padding '='
-+* Encodes the Base64 last 1 or 2 bytes and adds padding '='
- * Result, if any, is appended to buffer.
- * Returns 0.
- \*-------------------------------------------------------------------------*/
--static size_t b64pad(const UC *input, size_t size,
-+static size_t b64pad(const UC *input, size_t size,
- luaL_Buffer *buffer)
- {
- unsigned long value = 0;
-@@ -203,7 +196,7 @@ static size_t b64pad(const UC *input, size_t size,
- luaL_addlstring(buffer, (char *) code, 4);
- break;
- case 2:
-- value = input[0]; value <<= 8;
-+ value = input[0]; value <<= 8;
- value |= input[1]; value <<= 2;
- code[2] = b64base[value & 0x3f]; value >>= 6;
- code[1] = b64base[value & 0x3f]; value >>= 6;
-@@ -217,11 +210,11 @@ static size_t b64pad(const UC *input, size_t size,
- }
-
- /*-------------------------------------------------------------------------*\
--* Acumulates bytes in input buffer until 4 bytes are available.
-+* Acumulates bytes in input buffer until 4 bytes are available.
- * Translate the 4 bytes from Base64 form and append to buffer.
- * Returns new number of bytes in buffer.
- \*-------------------------------------------------------------------------*/
--static size_t b64decode(UC c, UC *input, size_t size,
-+static size_t b64decode(UC c, UC *input, size_t size,
- luaL_Buffer *buffer)
- {
- /* ignore invalid characters */
-@@ -239,7 +232,7 @@ static size_t b64decode(UC c, UC *input, size_t size,
- decoded[1] = (UC) (value & 0xff); value >>= 8;
- decoded[0] = (UC) value;
- /* take care of paddding */
-- valid = (input[2] == '=') ? 1 : (input[3] == '=') ? 2 : 3;
-+ valid = (input[2] == '=') ? 1 : (input[3] == '=') ? 2 : 3;
- luaL_addlstring(buffer, (char *) decoded, valid);
- return 0;
- /* need more data */
-@@ -251,7 +244,7 @@ static size_t b64decode(UC c, UC *input, size_t size,
- * A, B = b64(C, D)
- * A is the encoded version of the largest prefix of C .. D that is
- * divisible by 3. B has the remaining bytes of C .. D, *without* encoding.
--* The easiest thing would be to concatenate the two strings and
-+* The easiest thing would be to concatenate the two strings and
- * encode the result, but we can't afford that or Lua would dupplicate
- * every chunk we received.
- \*-------------------------------------------------------------------------*/
-@@ -259,7 +252,7 @@ static int mime_global_b64(lua_State *L)
- {
- UC atom[3];
- size_t isize = 0, asize = 0;
-- const UC *input = (UC *) luaL_optlstring(L, 1, NULL, &isize);
-+ const UC *input = (const UC *) luaL_optlstring(L, 1, NULL, &isize);
- const UC *last = input + isize;
- luaL_Buffer buffer;
- /* end-of-input blackhole */
-@@ -272,9 +265,9 @@ static int mime_global_b64(lua_State *L)
- lua_settop(L, 2);
- /* process first part of the input */
- luaL_buffinit(L, &buffer);
-- while (input < last)
-+ while (input < last)
- asize = b64encode(*input++, atom, asize, &buffer);
-- input = (UC *) luaL_optlstring(L, 2, NULL, &isize);
-+ input = (const UC *) luaL_optlstring(L, 2, NULL, &isize);
- /* if second part is nil, we are done */
- if (!input) {
- size_t osize = 0;
-@@ -288,7 +281,7 @@ static int mime_global_b64(lua_State *L)
- }
- /* otherwise process the second part */
- last = input + isize;
-- while (input < last)
-+ while (input < last)
- asize = b64encode(*input++, atom, asize, &buffer);
- luaL_pushresult(&buffer);
- lua_pushlstring(L, (char *) atom, asize);
-@@ -305,7 +298,7 @@ static int mime_global_unb64(lua_State *L)
- {
- UC atom[4];
- size_t isize = 0, asize = 0;
-- const UC *input = (UC *) luaL_optlstring(L, 1, NULL, &isize);
-+ const UC *input = (const UC *) luaL_optlstring(L, 1, NULL, &isize);
- const UC *last = input + isize;
- luaL_Buffer buffer;
- /* end-of-input blackhole */
-@@ -318,9 +311,9 @@ static int mime_global_unb64(lua_State *L)
- lua_settop(L, 2);
- /* process first part of the input */
- luaL_buffinit(L, &buffer);
-- while (input < last)
-+ while (input < last)
- asize = b64decode(*input++, atom, asize, &buffer);
-- input = (UC *) luaL_optlstring(L, 2, NULL, &isize);
-+ input = (const UC *) luaL_optlstring(L, 2, NULL, &isize);
- /* if second is nil, we are done */
- if (!input) {
- size_t osize = 0;
-@@ -333,7 +326,7 @@ static int mime_global_unb64(lua_State *L)
- }
- /* otherwise, process the rest of the input */
- last = input + isize;
-- while (input < last)
-+ while (input < last)
- asize = b64decode(*input++, atom, asize, &buffer);
- luaL_pushresult(&buffer);
- lua_pushlstring(L, (char *) atom, asize);
-@@ -349,7 +342,7 @@ static int mime_global_unb64(lua_State *L)
- * 9 and 32 can be plain, unless in the end of a line, where must be =XX
- * encoded lines must be no longer than 76 not counting CRLF
- * soft line-break are =CRLF
--* To encode one byte, we need to see the next two.
-+* To encode one byte, we need to see the next two.
- * Worst case is when we see a space, and wonder if a CRLF is comming
- \*-------------------------------------------------------------------------*/
- /*-------------------------------------------------------------------------*\
-@@ -362,7 +355,7 @@ static void qpsetup(UC *cl, UC *unbase)
- for (i = 0; i < 256; i++) cl[i] = QP_QUOTED;
- for (i = 33; i <= 60; i++) cl[i] = QP_PLAIN;
- for (i = 62; i <= 126; i++) cl[i] = QP_PLAIN;
-- cl['\t'] = QP_IF_LAST;
-+ cl['\t'] = QP_IF_LAST;
- cl[' '] = QP_IF_LAST;
- cl['\r'] = QP_CR;
- for (i = 0; i < 256; i++) unbase[i] = 255;
-@@ -388,9 +381,9 @@ static void qpquote(UC c, luaL_Buffer *buffer)
-
- /*-------------------------------------------------------------------------*\
- * Accumulate characters until we are sure about how to deal with them.
--* Once we are sure, output to the buffer, in the correct form.
-+* Once we are sure, output to the buffer, in the correct form.
- \*-------------------------------------------------------------------------*/
--static size_t qpencode(UC c, UC *input, size_t size,
-+static size_t qpencode(UC c, UC *input, size_t size,
- const char *marker, luaL_Buffer *buffer)
- {
- input[size++] = c;
-@@ -431,7 +424,7 @@ static size_t qpencode(UC c, UC *input, size_t size,
- }
-
- /*-------------------------------------------------------------------------*\
--* Deal with the final characters
-+* Deal with the final characters
- \*-------------------------------------------------------------------------*/
- static size_t qppad(UC *input, size_t size, luaL_Buffer *buffer)
- {
-@@ -448,8 +441,8 @@ static size_t qppad(UC *input, size_t size, luaL_Buffer *buffer)
- * Incrementally converts a string to quoted-printable
- * A, B = qp(C, D, marker)
- * Marker is the text to be used to replace CRLF sequences found in A.
--* A is the encoded version of the largest prefix of C .. D that
--* can be encoded without doubts.
-+* A is the encoded version of the largest prefix of C .. D that
-+* can be encoded without doubts.
- * B has the remaining bytes of C .. D, *without* encoding.
- \*-------------------------------------------------------------------------*/
- static int mime_global_qp(lua_State *L)
-@@ -457,7 +450,7 @@ static int mime_global_qp(lua_State *L)
-
- size_t asize = 0, isize = 0;
- UC atom[3];
-- const UC *input = (UC *) luaL_optlstring(L, 1, NULL, &isize);
-+ const UC *input = (const UC *) luaL_optlstring(L, 1, NULL, &isize);
- const UC *last = input + isize;
- const char *marker = luaL_optstring(L, 3, CRLF);
- luaL_Buffer buffer;
-@@ -473,7 +466,7 @@ static int mime_global_qp(lua_State *L)
- luaL_buffinit(L, &buffer);
- while (input < last)
- asize = qpencode(*input++, atom, asize, marker, &buffer);
-- input = (UC *) luaL_optlstring(L, 2, NULL, &isize);
-+ input = (const UC *) luaL_optlstring(L, 2, NULL, &isize);
- /* if second part is nil, we are done */
- if (!input) {
- asize = qppad(atom, asize, &buffer);
-@@ -493,7 +486,7 @@ static int mime_global_qp(lua_State *L)
-
- /*-------------------------------------------------------------------------*\
- * Accumulate characters until we are sure about how to deal with them.
--* Once we are sure, output the to the buffer, in the correct form.
-+* Once we are sure, output the to the buffer, in the correct form.
- \*-------------------------------------------------------------------------*/
- static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer) {
- int d;
-@@ -501,8 +494,8 @@ static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer) {
- /* deal with all characters we can deal */
- switch (input[0]) {
- /* if we have an escape character */
-- case '=':
-- if (size < 3) return size;
-+ case '=':
-+ if (size < 3) return size;
- /* eliminate soft line break */
- if (input[1] == '\r' && input[2] == '\n') return 0;
- /* decode quoted representation */
-@@ -512,7 +505,7 @@ static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer) {
- else luaL_addchar(buffer, (char) ((c << 4) + d));
- return 0;
- case '\r':
-- if (size < 2) return size;
-+ if (size < 2) return size;
- if (input[1] == '\n') luaL_addlstring(buffer, (char *)input, 2);
- return 0;
- default:
-@@ -525,15 +518,15 @@ static size_t qpdecode(UC c, UC *input, size_t size, luaL_Buffer *buffer) {
- /*-------------------------------------------------------------------------*\
- * Incrementally decodes a string in quoted-printable
- * A, B = qp(C, D)
--* A is the decoded version of the largest prefix of C .. D that
--* can be decoded without doubts.
-+* A is the decoded version of the largest prefix of C .. D that
-+* can be decoded without doubts.
- * B has the remaining bytes of C .. D, *without* decoding.
- \*-------------------------------------------------------------------------*/
- static int mime_global_unqp(lua_State *L)
- {
- size_t asize = 0, isize = 0;
- UC atom[3];
-- const UC *input = (UC *) luaL_optlstring(L, 1, NULL, &isize);
-+ const UC *input = (const UC *) luaL_optlstring(L, 1, NULL, &isize);
- const UC *last = input + isize;
- luaL_Buffer buffer;
- /* end-of-input blackhole */
-@@ -548,14 +541,14 @@ static int mime_global_unqp(lua_State *L)
- luaL_buffinit(L, &buffer);
- while (input < last)
- asize = qpdecode(*input++, atom, asize, &buffer);
-- input = (UC *) luaL_optlstring(L, 2, NULL, &isize);
-+ input = (const UC *) luaL_optlstring(L, 2, NULL, &isize);
- /* if second part is nil, we are done */
- if (!input) {
- luaL_pushresult(&buffer);
- if (!(*lua_tostring(L, -1))) lua_pushnil(L);
- lua_pushnil(L);
- return 2;
-- }
-+ }
- /* otherwise process rest of input */
- last = input + isize;
- while (input < last)
-@@ -568,9 +561,9 @@ static int mime_global_unqp(lua_State *L)
- /*-------------------------------------------------------------------------*\
- * Incrementally breaks a quoted-printed string into lines
- * A, n = qpwrp(l, B, length)
--* A is a copy of B, broken into lines of at most 'length' bytes.
--* 'l' is how many bytes are left for the first line of B.
--* 'n' is the number of bytes left in the last line of A.
-+* A is a copy of B, broken into lines of at most 'length' bytes.
-+* 'l' is how many bytes are left for the first line of B.
-+* 'n' is the number of bytes left in the last line of A.
- * There are two complications: lines can't be broken in the middle
- * of an encoded =XX, and there might be line breaks already
- \*-------------------------------------------------------------------------*/
-@@ -578,7 +571,7 @@ static int mime_global_qpwrp(lua_State *L)
- {
- size_t size = 0;
- int left = (int) luaL_checknumber(L, 1);
-- const UC *input = (UC *) luaL_optlstring(L, 2, NULL, &size);
-+ const UC *input = (const UC *) luaL_optlstring(L, 2, NULL, &size);
- const UC *last = input + size;
- int length = (int) luaL_optnumber(L, 3, 76);
- luaL_Buffer buffer;
-@@ -603,11 +596,11 @@ static int mime_global_qpwrp(lua_State *L)
- if (left <= 3) {
- left = length;
- luaL_addstring(&buffer, EQCRLF);
-- }
-+ }
- luaL_addchar(&buffer, *input);
- left--;
- break;
-- default:
-+ default:
- if (left <= 1) {
- left = length;
- luaL_addstring(&buffer, EQCRLF);
-@@ -635,7 +628,7 @@ static int mime_global_qpwrp(lua_State *L)
- * last is the previous character
- \*-------------------------------------------------------------------------*/
- #define eolcandidate(c) (c == '\r' || c == '\n')
--static int eolprocess(int c, int last, const char *marker,
-+static int eolprocess(int c, int last, const char *marker,
- luaL_Buffer *buffer)
- {
- if (eolcandidate(c)) {
-@@ -653,15 +646,15 @@ static int eolprocess(int c, int last, const char *marker,
- }
-
- /*-------------------------------------------------------------------------*\
--* Converts a string to uniform EOL convention.
-+* Converts a string to uniform EOL convention.
- * A, n = eol(o, B, marker)
- * A is the converted version of the largest prefix of B that can be
--* converted unambiguously. 'o' is the context returned by the previous
-+* converted unambiguously. 'o' is the context returned by the previous
- * call. 'n' is the new context.
- \*-------------------------------------------------------------------------*/
- static int mime_global_eol(lua_State *L)
- {
-- int ctx = luaL_checkint(L, 1);
-+ int ctx = luaL_checkinteger(L, 1);
- size_t isize = 0;
- const char *input = luaL_optlstring(L, 2, NULL, &isize);
- const char *last = input + isize;
-@@ -683,18 +676,18 @@ static int mime_global_eol(lua_State *L)
- }
-
- /*-------------------------------------------------------------------------*\
--* Takes one byte and stuff it if needed.
-+* Takes one byte and stuff it if needed.
- \*-------------------------------------------------------------------------*/
- static size_t dot(int c, size_t state, luaL_Buffer *buffer)
- {
- luaL_addchar(buffer, (char) c);
- switch (c) {
-- case '\r':
-+ case '\r':
- return 1;
-- case '\n':
-- return (state == 1)? 2: 0;
-- case '.':
-- if (state == 2)
-+ case '\n':
-+ return (state == 1)? 2: 0;
-+ case '.':
-+ if (state == 2)
- luaL_addchar(buffer, '.');
- default:
- return 0;
-@@ -719,7 +712,7 @@ static int mime_global_dot(lua_State *L)
- }
- /* process all input */
- luaL_buffinit(L, &buffer);
-- while (input < last)
-+ while (input < last)
- state = dot(*input++, state, &buffer);
- luaL_pushresult(&buffer);
- lua_pushnumber(L, (lua_Number) state);
-diff --git a/src/options.c b/src/options.c
-index 8ac2a14..20f4c28 100644
---- a/src/options.c
-+++ b/src/options.c
-@@ -1,8 +1,8 @@
- /*=========================================================================*\
--* Common option interface
-+* Common option interface
- * LuaSocket toolkit
- \*=========================================================================*/
--#include <string.h>
-+#include <string.h>
-
- #include "lauxlib.h"
-
-@@ -20,9 +20,9 @@ static int opt_setboolean(lua_State *L, p_socket ps, int level, int name);
- static int opt_getboolean(lua_State *L, p_socket ps, int level, int name);
- static int opt_setint(lua_State *L, p_socket ps, int level, int name);
- static int opt_getint(lua_State *L, p_socket ps, int level, int name);
--static int opt_set(lua_State *L, p_socket ps, int level, int name,
-+static int opt_set(lua_State *L, p_socket ps, int level, int name,
- void *val, int len);
--static int opt_get(lua_State *L, p_socket ps, int level, int name,
-+static int opt_get(lua_State *L, p_socket ps, int level, int name,
- void *val, int* len);
-
- /*=========================================================================*\
-@@ -60,29 +60,29 @@ int opt_meth_getoption(lua_State *L, p_opt opt, p_socket ps)
- /* enables reuse of local address */
- int opt_set_reuseaddr(lua_State *L, p_socket ps)
- {
-- return opt_setboolean(L, ps, SOL_SOCKET, SO_REUSEADDR);
-+ return opt_setboolean(L, ps, SOL_SOCKET, SO_REUSEADDR);
- }
-
- int opt_get_reuseaddr(lua_State *L, p_socket ps)
- {
-- return opt_getboolean(L, ps, SOL_SOCKET, SO_REUSEADDR);
-+ return opt_getboolean(L, ps, SOL_SOCKET, SO_REUSEADDR);
- }
-
- /* enables reuse of local port */
- int opt_set_reuseport(lua_State *L, p_socket ps)
- {
-- return opt_setboolean(L, ps, SOL_SOCKET, SO_REUSEPORT);
-+ return opt_setboolean(L, ps, SOL_SOCKET, SO_REUSEPORT);
- }
-
- int opt_get_reuseport(lua_State *L, p_socket ps)
- {
-- return opt_getboolean(L, ps, SOL_SOCKET, SO_REUSEPORT);
-+ return opt_getboolean(L, ps, SOL_SOCKET, SO_REUSEPORT);
- }
-
- /* disables the Naggle algorithm */
- int opt_set_tcp_nodelay(lua_State *L, p_socket ps)
- {
-- return opt_setboolean(L, ps, IPPROTO_TCP, TCP_NODELAY);
-+ return opt_setboolean(L, ps, IPPROTO_TCP, TCP_NODELAY);
- }
-
- int opt_get_tcp_nodelay(lua_State *L, p_socket ps)
-@@ -92,12 +92,12 @@ int opt_get_tcp_nodelay(lua_State *L, p_socket ps)
-
- int opt_set_keepalive(lua_State *L, p_socket ps)
- {
-- return opt_setboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE);
-+ return opt_setboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE);
- }
-
- int opt_get_keepalive(lua_State *L, p_socket ps)
- {
-- return opt_getboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE);
-+ return opt_getboolean(L, ps, SOL_SOCKET, SO_KEEPALIVE);
- }
-
- int opt_set_dontroute(lua_State *L, p_socket ps)
-@@ -105,11 +105,21 @@ int opt_set_dontroute(lua_State *L, p_socket ps)
- return opt_setboolean(L, ps, SOL_SOCKET, SO_DONTROUTE);
- }
-
-+int opt_get_dontroute(lua_State *L, p_socket ps)
-+{
-+ return opt_getboolean(L, ps, SOL_SOCKET, SO_DONTROUTE);
-+}
-+
- int opt_set_broadcast(lua_State *L, p_socket ps)
- {
- return opt_setboolean(L, ps, SOL_SOCKET, SO_BROADCAST);
- }
-
-+int opt_get_broadcast(lua_State *L, p_socket ps)
-+{
-+ return opt_getboolean(L, ps, SOL_SOCKET, SO_BROADCAST);
-+}
-+
- int opt_set_ip6_unicast_hops(lua_State *L, p_socket ps)
- {
- return opt_setint(L, ps, IPPROTO_IPV6, IPV6_UNICAST_HOPS);
-@@ -156,12 +166,12 @@ int opt_set_linger(lua_State *L, p_socket ps)
- if (!lua_istable(L, 3)) auxiliar_typeerror(L,3,lua_typename(L, LUA_TTABLE));
- lua_pushstring(L, "on");
- lua_gettable(L, 3);
-- if (!lua_isboolean(L, -1))
-+ if (!lua_isboolean(L, -1))
- luaL_argerror(L, 3, "boolean 'on' field expected");
- li.l_onoff = (u_short) lua_toboolean(L, -1);
- lua_pushstring(L, "timeout");
- lua_gettable(L, 3);
-- if (!lua_isnumber(L, -1))
-+ if (!lua_isnumber(L, -1))
- luaL_argerror(L, 3, "number 'timeout' field expected");
- li.l_linger = (u_short) lua_tonumber(L, -1);
- return opt_set(L, ps, SOL_SOCKET, SO_LINGER, (char *) &li, sizeof(li));
-@@ -194,7 +204,7 @@ int opt_set_ip_multicast_if(lua_State *L, p_socket ps)
- val.s_addr = htonl(INADDR_ANY);
- if (strcmp(address, "*") && !inet_aton(address, &val))
- luaL_argerror(L, 3, "ip expected");
-- return opt_set(L, ps, IPPROTO_IP, IP_MULTICAST_IF,
-+ return opt_set(L, ps, IPPROTO_IP, IP_MULTICAST_IF,
- (char *) &val, sizeof(val));
- }
-
-@@ -250,17 +260,17 @@ static int opt_setmembership(lua_State *L, p_socket ps, int level, int name)
- if (!lua_istable(L, 3)) auxiliar_typeerror(L,3,lua_typename(L, LUA_TTABLE));
- lua_pushstring(L, "multiaddr");
- lua_gettable(L, 3);
-- if (!lua_isstring(L, -1))
-+ if (!lua_isstring(L, -1))
- luaL_argerror(L, 3, "string 'multiaddr' field expected");
-- if (!inet_aton(lua_tostring(L, -1), &val.imr_multiaddr))
-+ if (!inet_aton(lua_tostring(L, -1), &val.imr_multiaddr))
- luaL_argerror(L, 3, "invalid 'multiaddr' ip address");
- lua_pushstring(L, "interface");
- lua_gettable(L, 3);
-- if (!lua_isstring(L, -1))
-+ if (!lua_isstring(L, -1))
- luaL_argerror(L, 3, "string 'interface' field expected");
- val.imr_interface.s_addr = htonl(INADDR_ANY);
- if (strcmp(lua_tostring(L, -1), "*") &&
-- !inet_aton(lua_tostring(L, -1), &val.imr_interface))
-+ !inet_aton(lua_tostring(L, -1), &val.imr_interface))
- luaL_argerror(L, 3, "invalid 'interface' ip address");
- return opt_set(L, ps, level, name, (char *) &val, sizeof(val));
- }
-@@ -272,14 +282,14 @@ static int opt_ip6_setmembership(lua_State *L, p_socket ps, int level, int name)
- if (!lua_istable(L, 3)) auxiliar_typeerror(L,3,lua_typename(L, LUA_TTABLE));
- lua_pushstring(L, "multiaddr");
- lua_gettable(L, 3);
-- if (!lua_isstring(L, -1))
-+ if (!lua_isstring(L, -1))
- luaL_argerror(L, 3, "string 'multiaddr' field expected");
-- if (!inet_pton(AF_INET6, lua_tostring(L, -1), &val.ipv6mr_multiaddr))
-+ if (!inet_pton(AF_INET6, lua_tostring(L, -1), &val.ipv6mr_multiaddr))
- luaL_argerror(L, 3, "invalid 'multiaddr' ip address");
- lua_pushstring(L, "interface");
- lua_gettable(L, 3);
- /* By default we listen to interface on default route
-- * (sigh). However, interface= can override it. We should
-+ * (sigh). However, interface= can override it. We should
- * support either number, or name for it. Waiting for
- * windows port of if_nametoindex */
- if (!lua_isnil(L, -1)) {
-@@ -291,7 +301,7 @@ static int opt_ip6_setmembership(lua_State *L, p_socket ps, int level, int name)
- return opt_set(L, ps, level, name, (char *) &val, sizeof(val));
- }
-
--static
-+static
- int opt_get(lua_State *L, p_socket ps, int level, int name, void *val, int* len)
- {
- socklen_t socklen = *len;
-@@ -304,7 +314,7 @@ int opt_get(lua_State *L, p_socket ps, int level, int name, void *val, int* len)
- return 0;
- }
-
--static
-+static
- int opt_set(lua_State *L, p_socket ps, int level, int name, void *val, int len)
- {
- if (setsockopt(*ps, level, name, (char *) val, len) < 0) {
-diff --git a/src/options.h b/src/options.h
-index 5657a06..19ba0df 100644
---- a/src/options.h
-+++ b/src/options.h
-@@ -21,7 +21,6 @@ typedef t_opt *p_opt;
- /* supported options for setoption */
- int opt_set_dontroute(lua_State *L, p_socket ps);
- int opt_set_broadcast(lua_State *L, p_socket ps);
--int opt_set_reuseaddr(lua_State *L, p_socket ps);
- int opt_set_tcp_nodelay(lua_State *L, p_socket ps);
- int opt_set_keepalive(lua_State *L, p_socket ps);
- int opt_set_linger(lua_State *L, p_socket ps);
-@@ -40,18 +39,21 @@ int opt_set_ip6_drop_membersip(lua_State *L, p_socket ps);
- int opt_set_ip6_v6only(lua_State *L, p_socket ps);
-
- /* supported options for getoption */
-+int opt_get_dontroute(lua_State *L, p_socket ps);
-+int opt_get_broadcast(lua_State *L, p_socket ps);
- int opt_get_reuseaddr(lua_State *L, p_socket ps);
-+int opt_get_reuseport(lua_State *L, p_socket ps);
- int opt_get_tcp_nodelay(lua_State *L, p_socket ps);
- int opt_get_keepalive(lua_State *L, p_socket ps);
- int opt_get_linger(lua_State *L, p_socket ps);
--int opt_get_reuseaddr(lua_State *L, p_socket ps);
- int opt_get_ip_multicast_loop(lua_State *L, p_socket ps);
- int opt_get_ip_multicast_if(lua_State *L, p_socket ps);
- int opt_get_error(lua_State *L, p_socket ps);
- int opt_get_ip6_multicast_loop(lua_State *L, p_socket ps);
- int opt_get_ip6_multicast_hops(lua_State *L, p_socket ps);
- int opt_get_ip6_unicast_hops(lua_State *L, p_socket ps);
--int opt_get_ip6_v6only(lua_State *L, p_socket ps);
-+int opt_get_ip6_v6only(lua_State *L, p_socket ps);
-+int opt_get_reuseport(lua_State *L, p_socket ps);
-
- /* invokes the appropriate option handler */
- int opt_meth_setoption(lua_State *L, p_opt opt, p_socket ps);
-diff --git a/src/pierror.h b/src/pierror.h
-new file mode 100644
-index 0000000..cb773ab
---- /dev/null
-+++ b/src/pierror.h
-@@ -0,0 +1,28 @@
-+#ifndef PIERROR_H
-+#define PIERROR_H
-+/*=========================================================================*\
-+* Error messages
-+* Defines platform independent error messages
-+\*=========================================================================*/
-+
-+#define PIE_HOST_NOT_FOUND "host not found"
-+#define PIE_ADDRINUSE "address already in use"
-+#define PIE_ISCONN "already connected"
-+#define PIE_ACCESS "permission denied"
-+#define PIE_CONNREFUSED "connection refused"
-+#define PIE_CONNABORTED "closed"
-+#define PIE_CONNRESET "closed"
-+#define PIE_TIMEDOUT "timeout"
-+#define PIE_AGAIN "temporary failure in name resolution"
-+#define PIE_BADFLAGS "invalid value for ai_flags"
-+#define PIE_BADHINTS "invalid value for hints"
-+#define PIE_FAIL "non-recoverable failure in name resolution"
-+#define PIE_FAMILY "ai_family not supported"
-+#define PIE_MEMORY "memory allocation failure"
-+#define PIE_NONAME "host or service not provided, or not known"
-+#define PIE_OVERFLOW "argument buffer overflow"
-+#define PIE_PROTOCOL "resolved protocol is unknown"
-+#define PIE_SERVICE "service not supported for socket type"
-+#define PIE_SOCKTYPE "ai_socktype not supported"
-+
-+#endif
-diff --git a/src/select.c b/src/select.c
-index fafaa62..9d133b7 100644
---- a/src/select.c
-+++ b/src/select.c
-@@ -6,6 +6,7 @@
-
- #include "lua.h"
- #include "lauxlib.h"
-+#include "compat.h"
-
- #include "socket.h"
- #include "timeout.h"
-@@ -16,10 +17,10 @@
- \*=========================================================================*/
- static t_socket getfd(lua_State *L);
- static int dirty(lua_State *L);
--static void collect_fd(lua_State *L, int tab, int itab,
-+static void collect_fd(lua_State *L, int tab, int itab,
- fd_set *set, t_socket *max_fd);
- static int check_dirty(lua_State *L, int tab, int dtab, fd_set *set);
--static void return_fd(lua_State *L, fd_set *set, t_socket max_fd,
-+static void return_fd(lua_State *L, fd_set *set, t_socket max_fd,
- int itab, int tab, int start);
- static void make_assoc(lua_State *L, int tab);
- static int global_select(lua_State *L);
-@@ -38,13 +39,12 @@ static luaL_Reg func[] = {
- \*-------------------------------------------------------------------------*/
- int select_open(lua_State *L) {
- lua_pushstring(L, "_SETSIZE");
-- lua_pushnumber(L, FD_SETSIZE);
-+ lua_pushinteger(L, FD_SETSIZE);
-+ lua_rawset(L, -3);
-+ lua_pushstring(L, "_SOCKETINVALID");
-+ lua_pushinteger(L, SOCKET_INVALID);
- lua_rawset(L, -3);
--#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
- luaL_setfuncs(L, func, 0);
--#else
-- luaL_openlib(L, NULL, func, 0);
--#endif
- return 0;
- }
-
-@@ -98,10 +98,10 @@ static t_socket getfd(lua_State *L) {
- lua_pushvalue(L, -2);
- lua_call(L, 1, 1);
- if (lua_isnumber(L, -1)) {
-- double numfd = lua_tonumber(L, -1);
-+ double numfd = lua_tonumber(L, -1);
- fd = (numfd >= 0.0)? (t_socket) numfd: SOCKET_INVALID;
- }
-- }
-+ }
- lua_pop(L, 1);
- return fd;
- }
-@@ -114,12 +114,12 @@ static int dirty(lua_State *L) {
- lua_pushvalue(L, -2);
- lua_call(L, 1, 1);
- is = lua_toboolean(L, -1);
-- }
-+ }
- lua_pop(L, 1);
- return is;
- }
-
--static void collect_fd(lua_State *L, int tab, int itab,
-+static void collect_fd(lua_State *L, int tab, int itab,
- fd_set *set, t_socket *max_fd) {
- int i = 1, n = 0;
- /* nil is the same as an empty table */
-@@ -139,16 +139,16 @@ static void collect_fd(lua_State *L, int tab, int itab,
- if (fd != SOCKET_INVALID) {
- /* make sure we don't overflow the fd_set */
- #ifdef _WIN32
-- if (n >= FD_SETSIZE)
-+ if (n >= FD_SETSIZE)
- luaL_argerror(L, tab, "too many sockets");
- #else
-- if (fd >= FD_SETSIZE)
-+ if (fd >= FD_SETSIZE)
- luaL_argerror(L, tab, "descriptor too large for set size");
- #endif
- FD_SET(fd, set);
- n++;
- /* keep track of the largest descriptor so far */
-- if (*max_fd == SOCKET_INVALID || *max_fd < fd)
-+ if (*max_fd == SOCKET_INVALID || *max_fd < fd)
- *max_fd = fd;
- /* make sure we can map back from descriptor to the object */
- lua_pushnumber(L, (lua_Number) fd);
-@@ -162,9 +162,9 @@ static void collect_fd(lua_State *L, int tab, int itab,
-
- static int check_dirty(lua_State *L, int tab, int dtab, fd_set *set) {
- int ndirty = 0, i = 1;
-- if (lua_isnil(L, tab))
-+ if (lua_isnil(L, tab))
- return 0;
-- for ( ;; ) {
-+ for ( ;; ) {
- t_socket fd;
- lua_pushnumber(L, i);
- lua_gettable(L, tab);
-@@ -185,7 +185,7 @@ static int check_dirty(lua_State *L, int tab, int dtab, fd_set *set) {
- return ndirty;
- }
-
--static void return_fd(lua_State *L, fd_set *set, t_socket max_fd,
-+static void return_fd(lua_State *L, fd_set *set, t_socket max_fd,
- int itab, int tab, int start) {
- t_socket fd;
- for (fd = 0; fd < max_fd; fd++) {
-diff --git a/src/serial.c b/src/serial.c
-index 583d4e5..7bdb21c 100644
---- a/src/serial.c
-+++ b/src/serial.c
-@@ -2,7 +2,7 @@
- * Serial stream
- * LuaSocket toolkit
- \*=========================================================================*/
--#include <string.h>
-+#include <string.h>
-
- #include "lua.h"
- #include "lauxlib.h"
-@@ -11,7 +11,7 @@
- #include "socket.h"
- #include "options.h"
- #include "unix.h"
--#include <sys/un.h>
-+#include <sys/un.h>
-
- /*
- Reuses userdata definition from unix.h, since it is useful for all
-@@ -54,15 +54,6 @@ static luaL_Reg serial_methods[] = {
- {NULL, NULL}
- };
-
--/* our socket creation function */
--/* this is an ad-hoc module that returns a single function
-- * as such, do not include other functions in this array. */
--static luaL_Reg func[] = {
-- {"serial", global_create},
-- {NULL, NULL}
--};
--
--
- /*-------------------------------------------------------------------------*\
- * Initializes module
- \*-------------------------------------------------------------------------*/
-@@ -71,14 +62,7 @@ LUASOCKET_API int luaopen_socket_serial(lua_State *L) {
- auxiliar_newclass(L, "serial{client}", serial_methods);
- /* create class groups */
- auxiliar_add2group(L, "serial{client}", "serial{any}");
--#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
-- lua_pushcfunction(L, global_create);
-- (void) func;
--#else
-- /* set function into socket namespace */
-- luaL_openlib(L, "socket", func, 0);
- lua_pushcfunction(L, global_create);
--#endif
- return 1;
- }
-
-@@ -120,7 +104,7 @@ static int meth_getfd(lua_State *L) {
- /* this is very dangerous, but can be handy for those that are brave enough */
- static int meth_setfd(lua_State *L) {
- p_unix un = (p_unix) auxiliar_checkgroup(L, "serial{any}", 1);
-- un->sock = (t_socket) luaL_checknumber(L, 2);
-+ un->sock = (t_socket) luaL_checknumber(L, 2);
- return 0;
- }
-
-@@ -131,7 +115,7 @@ static int meth_dirty(lua_State *L) {
- }
-
- /*-------------------------------------------------------------------------*\
--* Closes socket used by object
-+* Closes socket used by object
- \*-------------------------------------------------------------------------*/
- static int meth_close(lua_State *L)
- {
-@@ -156,7 +140,7 @@ static int meth_settimeout(lua_State *L) {
-
-
- /*-------------------------------------------------------------------------*\
--* Creates a serial object
-+* Creates a serial object
- \*-------------------------------------------------------------------------*/
- static int global_create(lua_State *L) {
- const char* path = luaL_checkstring(L, 1);
-@@ -180,7 +164,7 @@ static int global_create(lua_State *L) {
- /* initialize remaining structure fields */
- socket_setnonblocking(&sock);
- un->sock = sock;
-- io_init(&un->io, (p_send) socket_write, (p_recv) socket_read,
-+ io_init(&un->io, (p_send) socket_write, (p_recv) socket_read,
- (p_error) socket_ioerror, &un->sock);
- timeout_init(&un->tm, -1, -1);
- buffer_init(&un->buf, &un->io, &un->tm);
-diff --git a/src/socket.lua b/src/socket.lua
-index 3913e6f..d1c0b16 100644
---- a/src/socket.lua
-+++ b/src/socket.lua
-@@ -32,23 +32,23 @@ function _M.bind(host, port, backlog)
- err = "no info on address"
- for i, alt in base.ipairs(addrinfo) do
- if alt.family == "inet" then
-- sock, err = socket.tcp()
-+ sock, err = socket.tcp4()
- else
- sock, err = socket.tcp6()
- end
- if not sock then return nil, err end
- sock:setoption("reuseaddr", true)
- res, err = sock:bind(alt.addr, port)
-- if not res then
-+ if not res then
- sock:close()
-- else
-+ else
- res, err = sock:listen(backlog)
-- if not res then
-+ if not res then
- sock:close()
- else
- return sock
- end
-- end
-+ end
- end
- return nil, err
- end
-diff --git a/src/tcp.c b/src/tcp.c
-index 6594bda..ef9ee6f 100644
---- a/src/tcp.c
-+++ b/src/tcp.c
-@@ -6,6 +6,7 @@
-
- #include "lua.h"
- #include "lauxlib.h"
-+#include "compat.h"
-
- #include "auxiliar.h"
- #include "socket.h"
-@@ -17,6 +18,7 @@
- * Internal function prototypes
- \*=========================================================================*/
- static int global_create(lua_State *L);
-+static int global_create4(lua_State *L);
- static int global_create6(lua_State *L);
- static int global_connect(lua_State *L);
- static int meth_connect(lua_State *L);
-@@ -34,6 +36,7 @@ static int meth_accept(lua_State *L);
- static int meth_close(lua_State *L);
- static int meth_getoption(lua_State *L);
- static int meth_setoption(lua_State *L);
-+static int meth_gettimeout(lua_State *L);
- static int meth_settimeout(lua_State *L);
- static int meth_getfd(lua_State *L);
- static int meth_setfd(lua_State *L);
-@@ -63,6 +66,7 @@ static luaL_Reg tcp_methods[] = {
- {"setpeername", meth_connect},
- {"setsockname", meth_bind},
- {"settimeout", meth_settimeout},
-+ {"gettimeout", meth_gettimeout},
- {"shutdown", meth_shutdown},
- {NULL, NULL}
- };
-@@ -71,6 +75,7 @@ static luaL_Reg tcp_methods[] = {
- static t_opt optget[] = {
- {"keepalive", opt_get_keepalive},
- {"reuseaddr", opt_get_reuseaddr},
-+ {"reuseport", opt_get_reuseport},
- {"tcp-nodelay", opt_get_tcp_nodelay},
- {"linger", opt_get_linger},
- {"error", opt_get_error},
-@@ -80,6 +85,7 @@ static t_opt optget[] = {
- static t_opt optset[] = {
- {"keepalive", opt_set_keepalive},
- {"reuseaddr", opt_set_reuseaddr},
-+ {"reuseport", opt_set_reuseport},
- {"tcp-nodelay", opt_set_tcp_nodelay},
- {"ipv6-v6only", opt_set_ip6_v6only},
- {"linger", opt_set_linger},
-@@ -89,6 +95,7 @@ static t_opt optset[] = {
- /* functions in library namespace */
- static luaL_Reg func[] = {
- {"tcp", global_create},
-+ {"tcp4", global_create4},
- {"tcp6", global_create6},
- {"connect", global_connect},
- {NULL, NULL}
-@@ -108,11 +115,7 @@ int tcp_open(lua_State *L)
- auxiliar_add2group(L, "tcp{client}", "tcp{any}");
- auxiliar_add2group(L, "tcp{server}", "tcp{any}");
- /* define library functions */
--#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
- luaL_setfuncs(L, func, 0);
--#else
-- luaL_openlib(L, NULL, func, 0);
--#endif
- return 0;
- }
-
-@@ -216,8 +219,7 @@ static int meth_accept(lua_State *L)
- /*-------------------------------------------------------------------------*\
- * Binds an object to an address
- \*-------------------------------------------------------------------------*/
--static int meth_bind(lua_State *L)
--{
-+static int meth_bind(lua_State *L) {
- p_tcp tcp = (p_tcp) auxiliar_checkclass(L, "tcp{master}", 1);
- const char *address = luaL_checkstring(L, 2);
- const char *port = luaL_checkstring(L, 3);
-@@ -227,7 +229,7 @@ static int meth_bind(lua_State *L)
- bindhints.ai_socktype = SOCK_STREAM;
- bindhints.ai_family = tcp->family;
- bindhints.ai_flags = AI_PASSIVE;
-- err = inet_trybind(&tcp->sock, address, port, &bindhints);
-+ err = inet_trybind(&tcp->sock, &tcp->family, address, port, &bindhints);
- if (err) {
- lua_pushnil(L);
- lua_pushstring(L, err);
-@@ -240,8 +242,7 @@ static int meth_bind(lua_State *L)
- /*-------------------------------------------------------------------------*\
- * Turns a master tcp object into a client object.
- \*-------------------------------------------------------------------------*/
--static int meth_connect(lua_State *L)
--{
-+static int meth_connect(lua_State *L) {
- p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1);
- const char *address = luaL_checkstring(L, 2);
- const char *port = luaL_checkstring(L, 3);
-@@ -252,7 +253,7 @@ static int meth_connect(lua_State *L)
- /* make sure we try to connect only to the same family */
- connecthints.ai_family = tcp->family;
- timeout_markstart(&tcp->tm);
-- err = inet_tryconnect(&tcp->sock, &tcp->family, address, port,
-+ err = inet_tryconnect(&tcp->sock, &tcp->family, address, port,
- &tcp->tm, &connecthints);
- /* have to set the class even if it failed due to non-blocking connects */
- auxiliar_setclass(L, "tcp{client}", 1);
-@@ -282,9 +283,12 @@ static int meth_close(lua_State *L)
- static int meth_getfamily(lua_State *L)
- {
- p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1);
-- if (tcp->family == PF_INET6) {
-+ if (tcp->family == AF_INET6) {
- lua_pushliteral(L, "inet6");
- return 1;
-+ } else if (tcp->family == AF_INET) {
-+ lua_pushliteral(L, "inet4");
-+ return 1;
- } else {
- lua_pushliteral(L, "inet4");
- return 1;
-@@ -348,6 +352,12 @@ static int meth_settimeout(lua_State *L)
- return timeout_meth_settimeout(L, &tcp->tm);
- }
-
-+static int meth_gettimeout(lua_State *L)
-+{
-+ p_tcp tcp = (p_tcp) auxiliar_checkgroup(L, "tcp{any}", 1);
-+ return timeout_meth_gettimeout(L, &tcp->tm);
-+}
-+
- /*=========================================================================*\
- * Library functions
- \*=========================================================================*/
-@@ -355,37 +365,36 @@ static int meth_settimeout(lua_State *L)
- * Creates a master tcp object
- \*-------------------------------------------------------------------------*/
- static int tcp_create(lua_State *L, int family) {
-- t_socket sock;
-- const char *err = inet_trycreate(&sock, family, SOCK_STREAM);
-- /* try to allocate a system socket */
-- if (!err) {
-- /* allocate tcp object */
-- p_tcp tcp = (p_tcp) lua_newuserdata(L, sizeof(t_tcp));
-- memset(tcp, 0, sizeof(t_tcp));
-- /* set its type as master object */
-- auxiliar_setclass(L, "tcp{master}", -1);
-- /* initialize remaining structure fields */
-- socket_setnonblocking(&sock);
-- if (family == PF_INET6) {
-- int yes = 1;
-- setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY,
-- (void *)&yes, sizeof(yes));
-+ p_tcp tcp = (p_tcp) lua_newuserdata(L, sizeof(t_tcp));
-+ memset(tcp, 0, sizeof(t_tcp));
-+ /* set its type as master object */
-+ auxiliar_setclass(L, "tcp{master}", -1);
-+ /* if family is AF_UNSPEC, we leave the socket invalid and
-+ * store AF_UNSPEC into family. This will allow it to later be
-+ * replaced with an AF_INET6 or AF_INET socket upon first use. */
-+ tcp->sock = SOCKET_INVALID;
-+ tcp->family = family;
-+ io_init(&tcp->io, (p_send) socket_send, (p_recv) socket_recv,
-+ (p_error) socket_ioerror, &tcp->sock);
-+ timeout_init(&tcp->tm, -1, -1);
-+ buffer_init(&tcp->buf, &tcp->io, &tcp->tm);
-+ if (family != AF_UNSPEC) {
-+ const char *err = inet_trycreate(&tcp->sock, family, SOCK_STREAM, 0);
-+ if (err != NULL) {
-+ lua_pushnil(L);
-+ lua_pushstring(L, err);
-+ return 2;
- }
-- tcp->sock = sock;
-- io_init(&tcp->io, (p_send) socket_send, (p_recv) socket_recv,
-- (p_error) socket_ioerror, &tcp->sock);
-- timeout_init(&tcp->tm, -1, -1);
-- buffer_init(&tcp->buf, &tcp->io, &tcp->tm);
-- tcp->family = family;
-- return 1;
-- } else {
-- lua_pushnil(L);
-- lua_pushstring(L, err);
-- return 2;
-+ socket_setnonblocking(&tcp->sock);
- }
-+ return 1;
- }
-
- static int global_create(lua_State *L) {
-+ return tcp_create(L, AF_UNSPEC);
-+}
-+
-+static int global_create4(lua_State *L) {
- return tcp_create(L, AF_INET);
- }
-
-@@ -393,53 +402,6 @@ static int global_create6(lua_State *L) {
- return tcp_create(L, AF_INET6);
- }
-
--#if 0
--static const char *tryconnect6(const char *remoteaddr, const char *remoteserv,
-- struct addrinfo *connecthints, p_tcp tcp) {
-- struct addrinfo *iterator = NULL, *resolved = NULL;
-- const char *err = NULL;
-- /* try resolving */
-- err = socket_gaistrerror(getaddrinfo(remoteaddr, remoteserv,
-- connecthints, &resolved));
-- if (err != NULL) {
-- if (resolved) freeaddrinfo(resolved);
-- return err;
-- }
-- /* iterate over all returned addresses trying to connect */
-- for (iterator = resolved; iterator; iterator = iterator->ai_next) {
-- p_timeout tm = timeout_markstart(&tcp->tm);
-- /* create new socket if necessary. if there was no
-- * bind, we need to create one for every new family
-- * that shows up while iterating. if there was a
-- * bind, all families will be the same and we will
-- * not enter this branch. */
-- if (tcp->family != iterator->ai_family) {
-- socket_destroy(&tcp->sock);
-- err = socket_strerror(socket_create(&tcp->sock,
-- iterator->ai_family, iterator->ai_socktype,
-- iterator->ai_protocol));
-- if (err != NULL) {
-- freeaddrinfo(resolved);
-- return err;
-- }
-- tcp->family = iterator->ai_family;
-- /* all sockets initially non-blocking */
-- socket_setnonblocking(&tcp->sock);
-- }
-- /* finally try connecting to remote address */
-- err = socket_strerror(socket_connect(&tcp->sock,
-- (SA *) iterator->ai_addr,
-- (socklen_t) iterator->ai_addrlen, tm));
-- /* if success, break out of loop */
-- if (err == NULL) break;
-- }
--
-- freeaddrinfo(resolved);
-- /* here, if err is set, we failed */
-- return err;
--}
--#endif
--
- static int global_connect(lua_State *L) {
- const char *remoteaddr = luaL_checkstring(L, 1);
- const char *remoteserv = luaL_checkstring(L, 2);
-@@ -456,26 +418,26 @@ static int global_connect(lua_State *L) {
- timeout_init(&tcp->tm, -1, -1);
- buffer_init(&tcp->buf, &tcp->io, &tcp->tm);
- tcp->sock = SOCKET_INVALID;
-- tcp->family = PF_UNSPEC;
-+ tcp->family = AF_UNSPEC;
- /* allow user to pick local address and port */
- memset(&bindhints, 0, sizeof(bindhints));
- bindhints.ai_socktype = SOCK_STREAM;
- bindhints.ai_family = family;
- bindhints.ai_flags = AI_PASSIVE;
- if (localaddr) {
-- err = inet_trybind(&tcp->sock, localaddr, localserv, &bindhints);
-+ err = inet_trybind(&tcp->sock, &tcp->family, localaddr,
-+ localserv, &bindhints);
- if (err) {
- lua_pushnil(L);
- lua_pushstring(L, err);
- return 2;
- }
-- tcp->family = bindhints.ai_family;
- }
- /* try to connect to remote address and port */
- memset(&connecthints, 0, sizeof(connecthints));
- connecthints.ai_socktype = SOCK_STREAM;
- /* make sure we try to connect only to the same family */
-- connecthints.ai_family = bindhints.ai_family;
-+ connecthints.ai_family = tcp->family;
- err = inet_tryconnect(&tcp->sock, &tcp->family, remoteaddr, remoteserv,
- &tcp->tm, &connecthints);
- if (err) {
-diff --git a/src/timeout.c b/src/timeout.c
-index bdd5e1c..5a601d5 100644
---- a/src/timeout.c
-+++ b/src/timeout.c
-@@ -8,6 +8,7 @@
-
- #include "lua.h"
- #include "lauxlib.h"
-+#include "compat.h"
-
- #include "auxiliar.h"
- #include "timeout.h"
-@@ -52,7 +53,7 @@ void timeout_init(p_timeout tm, double block, double total) {
-
- /*-------------------------------------------------------------------------*\
- * Determines how much time we have left for the next system call,
--* if the previous call was successful
-+* if the previous call was successful
- * Input
- * tm: timeout control structure
- * Returns
-@@ -107,7 +108,7 @@ double timeout_getretry(p_timeout tm) {
- }
-
- /*-------------------------------------------------------------------------*\
--* Marks the operation start time in structure
-+* Marks the operation start time in structure
- * Input
- * tm: timeout control structure
- \*-------------------------------------------------------------------------*/
-@@ -117,7 +118,7 @@ p_timeout timeout_markstart(p_timeout tm) {
- }
-
- /*-------------------------------------------------------------------------*\
--* Gets time in s, relative to January 1, 1970 (UTC)
-+* Gets time in s, relative to January 1, 1970 (UTC)
- * Returns
- * time in s.
- \*-------------------------------------------------------------------------*/
-@@ -144,11 +145,7 @@ double timeout_gettime(void) {
- * Initializes module
- \*-------------------------------------------------------------------------*/
- int timeout_open(lua_State *L) {
--#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
- luaL_setfuncs(L, func, 0);
--#else
-- luaL_openlib(L, NULL, func, 0);
--#endif
- return 0;
- }
-
-@@ -163,7 +160,7 @@ int timeout_meth_settimeout(lua_State *L, p_timeout tm) {
- const char *mode = luaL_optstring(L, 3, "b");
- switch (*mode) {
- case 'b':
-- tm->block = t;
-+ tm->block = t;
- break;
- case 'r': case 't':
- tm->total = t;
-@@ -176,6 +173,16 @@ int timeout_meth_settimeout(lua_State *L, p_timeout tm) {
- return 1;
- }
-
-+/*-------------------------------------------------------------------------*\
-+* Gets timeout values for IO operations
-+* Lua Output: block, total
-+\*-------------------------------------------------------------------------*/
-+int timeout_meth_gettimeout(lua_State *L, p_timeout tm) {
-+ lua_pushnumber(L, tm->block);
-+ lua_pushnumber(L, tm->total);
-+ return 2;
-+}
-+
- /*=========================================================================*\
- * Test support functions
- \*=========================================================================*/
-diff --git a/src/timeout.h b/src/timeout.h
-index 6715ca7..af90231 100644
---- a/src/timeout.h
-+++ b/src/timeout.h
-@@ -22,6 +22,7 @@ p_timeout timeout_markstart(p_timeout tm);
- double timeout_getstart(p_timeout tm);
- double timeout_gettime(void);
- int timeout_meth_settimeout(lua_State *L, p_timeout tm);
-+int timeout_meth_gettimeout(lua_State *L, p_timeout tm);
-
- #define timeout_iszero(tm) ((tm)->block == 0.0)
-
-diff --git a/src/tp.lua b/src/tp.lua
-index cbeff56..328cbab 100644
---- a/src/tp.lua
-+++ b/src/tp.lua
-@@ -74,7 +74,7 @@ function metat.__index:command(cmd, arg)
- end
-
- function metat.__index:sink(snk, pat)
-- local chunk, err = c:receive(pat)
-+ local chunk, err = self.c:receive(pat)
- return snk(chunk, err)
- end
-
-diff --git a/src/udp.c b/src/udp.c
-index a9f2393..ec97252 100644
---- a/src/udp.c
-+++ b/src/udp.c
-@@ -7,6 +7,7 @@
-
- #include "lua.h"
- #include "lauxlib.h"
-+#include "compat.h"
-
- #include "auxiliar.h"
- #include "socket.h"
-@@ -26,6 +27,7 @@
- * Internal function prototypes
- \*=========================================================================*/
- static int global_create(lua_State *L);
-+static int global_create4(lua_State *L);
- static int global_create6(lua_State *L);
- static int meth_send(lua_State *L);
- static int meth_sendto(lua_State *L);
-@@ -34,6 +36,7 @@ static int meth_receivefrom(lua_State *L);
- static int meth_getfamily(lua_State *L);
- static int meth_getsockname(lua_State *L);
- static int meth_getpeername(lua_State *L);
-+static int meth_gettimeout(lua_State *L);
- static int meth_setsockname(lua_State *L);
- static int meth_setpeername(lua_State *L);
- static int meth_close(lua_State *L);
-@@ -64,6 +67,7 @@ static luaL_Reg udp_methods[] = {
- {"setpeername", meth_setpeername},
- {"setsockname", meth_setsockname},
- {"settimeout", meth_settimeout},
-+ {"gettimeout", meth_gettimeout},
- {NULL, NULL}
- };
-
-@@ -89,6 +93,10 @@ static t_opt optset[] = {
-
- /* socket options for getoption */
- static t_opt optget[] = {
-+ {"dontroute", opt_get_dontroute},
-+ {"broadcast", opt_get_broadcast},
-+ {"reuseaddr", opt_get_reuseaddr},
-+ {"reuseport", opt_get_reuseport},
- {"ip-multicast-if", opt_get_ip_multicast_if},
- {"ip-multicast-loop", opt_get_ip_multicast_loop},
- {"error", opt_get_error},
-@@ -102,6 +110,7 @@ static t_opt optget[] = {
- /* functions in library namespace */
- static luaL_Reg func[] = {
- {"udp", global_create},
-+ {"udp4", global_create4},
- {"udp6", global_create6},
- {NULL, NULL}
- };
-@@ -109,8 +118,7 @@ static luaL_Reg func[] = {
- /*-------------------------------------------------------------------------*\
- * Initializes module
- \*-------------------------------------------------------------------------*/
--int udp_open(lua_State *L)
--{
-+int udp_open(lua_State *L) {
- /* create classes */
- auxiliar_newclass(L, "udp{connected}", udp_methods);
- auxiliar_newclass(L, "udp{unconnected}", udp_methods);
-@@ -120,18 +128,18 @@ int udp_open(lua_State *L)
- auxiliar_add2group(L, "udp{connected}", "select{able}");
- auxiliar_add2group(L, "udp{unconnected}", "select{able}");
- /* define library functions */
--#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
- luaL_setfuncs(L, func, 0);
--#else
-- luaL_openlib(L, NULL, func, 0);
--#endif
-+ /* export default UDP size */
-+ lua_pushliteral(L, "_DATAGRAMSIZE");
-+ lua_pushinteger(L, UDP_DATAGRAMSIZE);
-+ lua_rawset(L, -3);
- return 0;
- }
-
- /*=========================================================================*\
- * Lua methods
- \*=========================================================================*/
--const char *udp_strerror(int err) {
-+static const char *udp_strerror(int err) {
- /* a 'closed' error on an unconnected means the target address was not
- * accepted by the transport layer */
- if (err == IO_CLOSED) return "refused";
-@@ -182,7 +190,7 @@ static int meth_sendto(lua_State *L) {
- return 2;
- }
- timeout_markstart(tm);
-- err = socket_sendto(&udp->sock, data, count, &sent, ai->ai_addr,
-+ err = socket_sendto(&udp->sock, data, count, &sent, ai->ai_addr,
- (socklen_t) ai->ai_addrlen, tm);
- freeaddrinfo(ai);
- if (err != IO_DONE) {
-@@ -199,71 +207,80 @@ static int meth_sendto(lua_State *L) {
- \*-------------------------------------------------------------------------*/
- static int meth_receive(lua_State *L) {
- p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1);
-- char buffer[UDP_DATAGRAMSIZE];
-- size_t got, count = (size_t) luaL_optnumber(L, 2, sizeof(buffer));
-+ char buf[UDP_DATAGRAMSIZE];
-+ size_t got, wanted = (size_t) luaL_optnumber(L, 2, sizeof(buf));
-+ char *dgram = wanted > sizeof(buf)? (char *) malloc(wanted): buf;
- int err;
- p_timeout tm = &udp->tm;
-- count = MIN(count, sizeof(buffer));
- timeout_markstart(tm);
-- err = socket_recv(&udp->sock, buffer, count, &got, tm);
-+ if (!dgram) {
-+ lua_pushnil(L);
-+ lua_pushliteral(L, "out of memory");
-+ return 2;
-+ }
-+ err = socket_recv(&udp->sock, dgram, wanted, &got, tm);
- /* Unlike TCP, recv() of zero is not closed, but a zero-length packet. */
-- if (err == IO_CLOSED)
-- err = IO_DONE;
-- if (err != IO_DONE) {
-+ if (err != IO_DONE && err != IO_CLOSED) {
- lua_pushnil(L);
- lua_pushstring(L, udp_strerror(err));
-+ if (wanted > sizeof(buf)) free(dgram);
- return 2;
- }
-- lua_pushlstring(L, buffer, got);
-+ lua_pushlstring(L, dgram, got);
-+ if (wanted > sizeof(buf)) free(dgram);
- return 1;
- }
-
- /*-------------------------------------------------------------------------*\
- * Receives data and sender from a UDP socket
- \*-------------------------------------------------------------------------*/
--static int meth_receivefrom(lua_State *L)
--{
-+static int meth_receivefrom(lua_State *L) {
- p_udp udp = (p_udp) auxiliar_checkclass(L, "udp{unconnected}", 1);
-- char buffer[UDP_DATAGRAMSIZE];
-- size_t got, count = (size_t) luaL_optnumber(L, 2, sizeof(buffer));
-- int err;
-- p_timeout tm = &udp->tm;
-+ char buf[UDP_DATAGRAMSIZE];
-+ size_t got, wanted = (size_t) luaL_optnumber(L, 2, sizeof(buf));
-+ char *dgram = wanted > sizeof(buf)? (char *) malloc(wanted): buf;
- struct sockaddr_storage addr;
- socklen_t addr_len = sizeof(addr);
- char addrstr[INET6_ADDRSTRLEN];
- char portstr[6];
-+ int err;
-+ p_timeout tm = &udp->tm;
- timeout_markstart(tm);
-- count = MIN(count, sizeof(buffer));
-- err = socket_recvfrom(&udp->sock, buffer, count, &got, (SA *) &addr,
-+ if (!dgram) {
-+ lua_pushnil(L);
-+ lua_pushliteral(L, "out of memory");
-+ return 2;
-+ }
-+ err = socket_recvfrom(&udp->sock, dgram, wanted, &got, (SA *) &addr,
- &addr_len, tm);
- /* Unlike TCP, recv() of zero is not closed, but a zero-length packet. */
-- if (err == IO_CLOSED)
-- err = IO_DONE;
-- if (err != IO_DONE) {
-+ if (err != IO_DONE && err != IO_CLOSED) {
- lua_pushnil(L);
- lua_pushstring(L, udp_strerror(err));
-+ if (wanted > sizeof(buf)) free(dgram);
- return 2;
- }
-- err = getnameinfo((struct sockaddr *)&addr, addr_len, addrstr,
-+ err = getnameinfo((struct sockaddr *)&addr, addr_len, addrstr,
- INET6_ADDRSTRLEN, portstr, 6, NI_NUMERICHOST | NI_NUMERICSERV);
- if (err) {
- lua_pushnil(L);
- lua_pushstring(L, gai_strerror(err));
-+ if (wanted > sizeof(buf)) free(dgram);
- return 2;
- }
-- lua_pushlstring(L, buffer, got);
-+ lua_pushlstring(L, dgram, got);
- lua_pushstring(L, addrstr);
- lua_pushinteger(L, (int) strtol(portstr, (char **) NULL, 10));
-+ if (wanted > sizeof(buf)) free(dgram);
- return 3;
- }
-
- /*-------------------------------------------------------------------------*\
- * Returns family as string
- \*-------------------------------------------------------------------------*/
--static int meth_getfamily(lua_State *L)
--{
-+static int meth_getfamily(lua_State *L) {
- p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1);
-- if (udp->family == PF_INET6) {
-+ if (udp->family == AF_INET6) {
- lua_pushliteral(L, "inet6");
- return 1;
- } else {
-@@ -332,6 +349,11 @@ static int meth_settimeout(lua_State *L) {
- return timeout_meth_settimeout(L, &udp->tm);
- }
-
-+static int meth_gettimeout(lua_State *L) {
-+ p_udp udp = (p_udp) auxiliar_checkgroup(L, "udp{any}", 1);
-+ return timeout_meth_gettimeout(L, &udp->tm);
-+}
-+
- /*-------------------------------------------------------------------------*\
- * Turns a master udp object into a client object.
- \*-------------------------------------------------------------------------*/
-@@ -348,7 +370,7 @@ static int meth_setpeername(lua_State *L) {
- /* make sure we try to connect only to the same family */
- connecthints.ai_family = udp->family;
- if (connecting) {
-- err = inet_tryconnect(&udp->sock, &udp->family, address,
-+ err = inet_tryconnect(&udp->sock, &udp->family, address,
- port, tm, &connecthints);
- if (err) {
- lua_pushnil(L);
-@@ -362,7 +384,6 @@ static int meth_setpeername(lua_State *L) {
- inet_trydisconnect(&udp->sock, udp->family, tm);
- auxiliar_setclass(L, "udp{unconnected}", 1);
- }
-- /* change class to connected or unconnected depending on address */
- lua_pushnumber(L, 1);
- return 1;
- }
-@@ -390,7 +411,7 @@ static int meth_setsockname(lua_State *L) {
- bindhints.ai_socktype = SOCK_DGRAM;
- bindhints.ai_family = udp->family;
- bindhints.ai_flags = AI_PASSIVE;
-- err = inet_trybind(&udp->sock, address, port, &bindhints);
-+ err = inet_trybind(&udp->sock, &udp->family, address, port, &bindhints);
- if (err) {
- lua_pushnil(L);
- lua_pushstring(L, err);
-@@ -407,32 +428,32 @@ static int meth_setsockname(lua_State *L) {
- * Creates a master udp object
- \*-------------------------------------------------------------------------*/
- static int udp_create(lua_State *L, int family) {
-- t_socket sock;
-- const char *err = inet_trycreate(&sock, family, SOCK_DGRAM);
-- /* try to allocate a system socket */
-- if (!err) {
-- /* allocate udp object */
-- p_udp udp = (p_udp) lua_newuserdata(L, sizeof(t_udp));
-- auxiliar_setclass(L, "udp{unconnected}", -1);
-- /* initialize remaining structure fields */
-- socket_setnonblocking(&sock);
-- if (family == PF_INET6) {
-- int yes = 1;
-- setsockopt(sock, IPPROTO_IPV6, IPV6_V6ONLY,
-- (void *)&yes, sizeof(yes));
-+ /* allocate udp object */
-+ p_udp udp = (p_udp) lua_newuserdata(L, sizeof(t_udp));
-+ auxiliar_setclass(L, "udp{unconnected}", -1);
-+ /* if family is AF_UNSPEC, we leave the socket invalid and
-+ * store AF_UNSPEC into family. This will allow it to later be
-+ * replaced with an AF_INET6 or AF_INET socket upon first use. */
-+ udp->sock = SOCKET_INVALID;
-+ timeout_init(&udp->tm, -1, -1);
-+ udp->family = family;
-+ if (family != AF_UNSPEC) {
-+ const char *err = inet_trycreate(&udp->sock, family, SOCK_DGRAM, 0);
-+ if (err != NULL) {
-+ lua_pushnil(L);
-+ lua_pushstring(L, err);
-+ return 2;
- }
-- udp->sock = sock;
-- timeout_init(&udp->tm, -1, -1);
-- udp->family = family;
-- return 1;
-- } else {
-- lua_pushnil(L);
-- lua_pushstring(L, err);
-- return 2;
-+ socket_setnonblocking(&udp->sock);
- }
-+ return 1;
- }
-
- static int global_create(lua_State *L) {
-+ return udp_create(L, AF_UNSPEC);
-+}
-+
-+static int global_create4(lua_State *L) {
- return udp_create(L, AF_INET);
- }
-
-diff --git a/src/udp.h b/src/udp.h
-index 2b831a5..be9b6a5 100644
---- a/src/udp.h
-+++ b/src/udp.h
-@@ -8,7 +8,7 @@
- * (AF_INET, SOCK_DGRAM).
- *
- * Two classes are defined: connected and unconnected. UDP objects are
--* originally unconnected. They can be "connected" to a given address
-+* originally unconnected. They can be "connected" to a given address
- * with a call to the setpeername function. The same function can be used to
- * break the connection.
- \*=========================================================================*/
-@@ -17,7 +17,6 @@
- #include "timeout.h"
- #include "socket.h"
-
--/* can't be larger than wsocket.c MAXCHUNK!!! */
- #define UDP_DATAGRAMSIZE 8192
-
- typedef struct t_udp_ {
-diff --git a/src/unix.c b/src/unix.c
-index 91aaaf8..5bc3148 100644
---- a/src/unix.c
-+++ b/src/unix.c
-@@ -1,8 +1,8 @@
- /*=========================================================================*\
--* Unix domain socket
-+* Unix domain socket
- * LuaSocket toolkit
- \*=========================================================================*/
--#include <string.h>
-+#include <string.h>
-
- #include "lua.h"
- #include "lauxlib.h"
-@@ -11,7 +11,7 @@
- #include "socket.h"
- #include "options.h"
- #include "unix.h"
--#include <sys/un.h>
-+#include <sys/un.h>
-
- /*=========================================================================*\
- * Internal function prototypes
-@@ -68,15 +68,6 @@ static t_opt optset[] = {
- {NULL, NULL}
- };
-
--/* our socket creation function */
--/* this is an ad-hoc module that returns a single function
-- * as such, do not include other functions in this array. */
--static luaL_Reg func[] = {
-- {"unix", global_create},
-- {NULL, NULL}
--};
--
--
- /*-------------------------------------------------------------------------*\
- * Initializes module
- \*-------------------------------------------------------------------------*/
-@@ -89,15 +80,8 @@ int luaopen_socket_unix(lua_State *L) {
- auxiliar_add2group(L, "unix{master}", "unix{any}");
- auxiliar_add2group(L, "unix{client}", "unix{any}");
- auxiliar_add2group(L, "unix{server}", "unix{any}");
--#if LUA_VERSION_NUM > 501 && !defined(LUA_COMPAT_MODULE)
-- lua_pushcfunction(L, global_create);
-- (void) func;
--#else
-- /* set function into socket namespace */
-- luaL_openlib(L, "socket", func, 0);
-- lua_pushcfunction(L, global_create);
--#endif
- /* return the function instead of the 'socket' table */
-+ lua_pushcfunction(L, global_create);
- return 1;
- }
-
-@@ -147,7 +131,7 @@ static int meth_getfd(lua_State *L) {
- /* this is very dangerous, but can be handy for those that are brave enough */
- static int meth_setfd(lua_State *L) {
- p_unix un = (p_unix) auxiliar_checkgroup(L, "unix{any}", 1);
-- un->sock = (t_socket) luaL_checknumber(L, 2);
-+ un->sock = (t_socket) luaL_checknumber(L, 2);
- return 0;
- }
-
-@@ -158,8 +142,8 @@ static int meth_dirty(lua_State *L) {
- }
-
- /*-------------------------------------------------------------------------*\
--* Waits for and returns a client object attempting connection to the
--* server object
-+* Waits for and returns a client object attempting connection to the
-+* server object
- \*-------------------------------------------------------------------------*/
- static int meth_accept(lua_State *L) {
- p_unix server = (p_unix) auxiliar_checkclass(L, "unix{server}", 1);
-@@ -173,20 +157,20 @@ static int meth_accept(lua_State *L) {
- /* initialize structure fields */
- socket_setnonblocking(&sock);
- clnt->sock = sock;
-- io_init(&clnt->io, (p_send)socket_send, (p_recv)socket_recv,
-+ io_init(&clnt->io, (p_send)socket_send, (p_recv)socket_recv,
- (p_error) socket_ioerror, &clnt->sock);
- timeout_init(&clnt->tm, -1, -1);
- buffer_init(&clnt->buf, &clnt->io, &clnt->tm);
- return 1;
- } else {
-- lua_pushnil(L);
-+ lua_pushnil(L);
- lua_pushstring(L, socket_strerror(err));
- return 2;
- }
- }
-
- /*-------------------------------------------------------------------------*\
--* Binds an object to an address
-+* Binds an object to an address
- \*-------------------------------------------------------------------------*/
- static const char *unix_trybind(p_unix un, const char *path) {
- struct sockaddr_un local;
-@@ -197,16 +181,16 @@ static const char *unix_trybind(p_unix un, const char *path) {
- strcpy(local.sun_path, path);
- local.sun_family = AF_UNIX;
- #ifdef UNIX_HAS_SUN_LEN
-- local.sun_len = sizeof(local.sun_family) + sizeof(local.sun_len)
-+ local.sun_len = sizeof(local.sun_family) + sizeof(local.sun_len)
- + len + 1;
- err = socket_bind(&un->sock, (SA *) &local, local.sun_len);
-
--#else
-- err = socket_bind(&un->sock, (SA *) &local,
-+#else
-+ err = socket_bind(&un->sock, (SA *) &local,
- sizeof(local.sun_family) + len);
- #endif
- if (err != IO_DONE) socket_destroy(&un->sock);
-- return socket_strerror(err);
-+ return socket_strerror(err);
- }
-
- static int meth_bind(lua_State *L) {
-@@ -236,11 +220,11 @@ static const char *unix_tryconnect(p_unix un, const char *path)
- remote.sun_family = AF_UNIX;
- timeout_markstart(&un->tm);
- #ifdef UNIX_HAS_SUN_LEN
-- remote.sun_len = sizeof(remote.sun_family) + sizeof(remote.sun_len)
-+ remote.sun_len = sizeof(remote.sun_family) + sizeof(remote.sun_len)
- + len + 1;
- err = socket_connect(&un->sock, (SA *) &remote, remote.sun_len, &un->tm);
- #else
-- err = socket_connect(&un->sock, (SA *) &remote,
-+ err = socket_connect(&un->sock, (SA *) &remote,
- sizeof(remote.sun_family) + len, &un->tm);
- #endif
- if (err != IO_DONE) socket_destroy(&un->sock);
-@@ -264,7 +248,7 @@ static int meth_connect(lua_State *L)
- }
-
- /*-------------------------------------------------------------------------*\
--* Closes socket used by object
-+* Closes socket used by object
- \*-------------------------------------------------------------------------*/
- static int meth_close(lua_State *L)
- {
-@@ -319,13 +303,13 @@ static int meth_settimeout(lua_State *L) {
- * Library functions
- \*=========================================================================*/
- /*-------------------------------------------------------------------------*\
--* Creates a master unix object
-+* Creates a master unix object
- \*-------------------------------------------------------------------------*/
- static int global_create(lua_State *L) {
- t_socket sock;
- int err = socket_create(&sock, AF_UNIX, SOCK_STREAM, 0);
- /* try to allocate a system socket */
-- if (err == IO_DONE) {
-+ if (err == IO_DONE) {
- /* allocate unix object */
- p_unix un = (p_unix) lua_newuserdata(L, sizeof(t_unix));
- /* set its type as master object */
-@@ -333,7 +317,7 @@ static int global_create(lua_State *L) {
- /* initialize remaining structure fields */
- socket_setnonblocking(&sock);
- un->sock = sock;
-- io_init(&un->io, (p_send) socket_send, (p_recv) socket_recv,
-+ io_init(&un->io, (p_send) socket_send, (p_recv) socket_recv,
- (p_error) socket_ioerror, &un->sock);
- timeout_init(&un->tm, -1, -1);
- buffer_init(&un->buf, &un->io, &un->tm);
-diff --git a/src/url.lua b/src/url.lua
-index 7809535..fbd93d1 100644
---- a/src/url.lua
-+++ b/src/url.lua
-@@ -219,6 +219,7 @@ end
- -- corresponding absolute url
- -----------------------------------------------------------------------------
- function _M.absolute(base_url, relative_url)
-+ local base_parsed
- if base.type(base_url) == "table" then
- base_parsed = base_url
- base_url = _M.build(base_parsed)
-diff --git a/src/usocket.c b/src/usocket.c
-index 096ecd0..8adc573 100644
---- a/src/usocket.c
-+++ b/src/usocket.c
-@@ -4,12 +4,13 @@
- *
- * The code is now interrupt-safe.
- * The penalty of calling select to avoid busy-wait is only paid when
--* the I/O call fail in the first place.
-+* the I/O call fail in the first place.
- \*=========================================================================*/
--#include <string.h>
-+#include <string.h>
- #include <signal.h>
-
- #include "socket.h"
-+#include "pierror.h"
-
- /*-------------------------------------------------------------------------*\
- * Wait for readable/writable/connected socket with timeout
-@@ -72,7 +73,7 @@ int socket_waitfd(p_socket ps, int sw, p_timeout tm) {
-
-
- /*-------------------------------------------------------------------------*\
--* Initializes module
-+* Initializes module
- \*-------------------------------------------------------------------------*/
- int socket_open(void) {
- /* instals a handler to ignore sigpipe or it will crash us */
-@@ -81,7 +82,7 @@ int socket_open(void) {
- }
-
- /*-------------------------------------------------------------------------*\
--* Close module
-+* Close module
- \*-------------------------------------------------------------------------*/
- int socket_close(void) {
- return 1;
-@@ -92,7 +93,6 @@ int socket_close(void) {
- \*-------------------------------------------------------------------------*/
- void socket_destroy(p_socket ps) {
- if (*ps != SOCKET_INVALID) {
-- socket_setblocking(ps);
- close(*ps);
- *ps = SOCKET_INVALID;
- }
-@@ -101,7 +101,7 @@ void socket_destroy(p_socket ps) {
- /*-------------------------------------------------------------------------*\
- * Select with timeout control
- \*-------------------------------------------------------------------------*/
--int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds,
-+int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds,
- p_timeout tm) {
- int ret;
- do {
-@@ -120,8 +120,8 @@ int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds,
- \*-------------------------------------------------------------------------*/
- int socket_create(p_socket ps, int domain, int type, int protocol) {
- *ps = socket(domain, type, protocol);
-- if (*ps != SOCKET_INVALID) return IO_DONE;
-- else return errno;
-+ if (*ps != SOCKET_INVALID) return IO_DONE;
-+ else return errno;
- }
-
- /*-------------------------------------------------------------------------*\
-@@ -130,29 +130,25 @@ int socket_create(p_socket ps, int domain, int type, int protocol) {
- int socket_bind(p_socket ps, SA *addr, socklen_t len) {
- int err = IO_DONE;
- socket_setblocking(ps);
-- if (bind(*ps, addr, len) < 0) err = errno;
-+ if (bind(*ps, addr, len) < 0) err = errno;
- socket_setnonblocking(ps);
- return err;
- }
-
- /*-------------------------------------------------------------------------*\
--*
-+*
- \*-------------------------------------------------------------------------*/
- int socket_listen(p_socket ps, int backlog) {
-- int err = IO_DONE;
-- socket_setblocking(ps);
-- if (listen(*ps, backlog)) err = errno;
-- socket_setnonblocking(ps);
-+ int err = IO_DONE;
-+ if (listen(*ps, backlog)) err = errno;
- return err;
- }
-
- /*-------------------------------------------------------------------------*\
--*
-+*
- \*-------------------------------------------------------------------------*/
- void socket_shutdown(p_socket ps, int how) {
-- socket_setblocking(ps);
- shutdown(*ps, how);
-- socket_setnonblocking(ps);
- }
-
- /*-------------------------------------------------------------------------*\
-@@ -166,7 +162,7 @@ int socket_connect(p_socket ps, SA *addr, socklen_t len, p_timeout tm) {
- do if (connect(*ps, addr, len) == 0) return IO_DONE;
- while ((err = errno) == EINTR);
- /* if connection failed immediately, return error code */
-- if (err != EINPROGRESS && err != EAGAIN) return err;
-+ if (err != EINPROGRESS && err != EAGAIN) return err;
- /* zero timeout case optimization */
- if (timeout_iszero(tm)) return IO_TIMEOUT;
- /* wait until we have the result of the connection attempt or timeout */
-@@ -181,7 +177,7 @@ int socket_connect(p_socket ps, SA *addr, socklen_t len, p_timeout tm) {
- * Accept with timeout
- \*-------------------------------------------------------------------------*/
- int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len, p_timeout tm) {
-- if (*ps == SOCKET_INVALID) return IO_CLOSED;
-+ if (*ps == SOCKET_INVALID) return IO_CLOSED;
- for ( ;; ) {
- int err;
- if ((*pa = accept(*ps, addr, len)) != SOCKET_INVALID) return IO_DONE;
-@@ -197,7 +193,7 @@ int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len, p_timeout
- /*-------------------------------------------------------------------------*\
- * Send with timeout
- \*-------------------------------------------------------------------------*/
--int socket_send(p_socket ps, const char *data, size_t count,
-+int socket_send(p_socket ps, const char *data, size_t count,
- size_t *sent, p_timeout tm)
- {
- int err;
-@@ -215,6 +211,8 @@ int socket_send(p_socket ps, const char *data, size_t count,
- err = errno;
- /* EPIPE means the connection was closed */
- if (err == EPIPE) return IO_CLOSED;
-+ /* EPROTOTYPE means the connection is being closed (on Yosemite!)*/
-+ if (err == EPROTOTYPE) continue;
- /* we call was interrupted, just try again */
- if (err == EINTR) continue;
- /* if failed fatal reason, report error */
-@@ -229,20 +227,21 @@ int socket_send(p_socket ps, const char *data, size_t count,
- /*-------------------------------------------------------------------------*\
- * Sendto with timeout
- \*-------------------------------------------------------------------------*/
--int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent,
-+int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent,
- SA *addr, socklen_t len, p_timeout tm)
- {
- int err;
- *sent = 0;
- if (*ps == SOCKET_INVALID) return IO_CLOSED;
- for ( ;; ) {
-- long put = (long) sendto(*ps, data, count, 0, addr, len);
-+ long put = (long) sendto(*ps, data, count, 0, addr, len);
- if (put >= 0) {
- *sent = put;
- return IO_DONE;
- }
- err = errno;
- if (err == EPIPE) return IO_CLOSED;
-+ if (err == EPROTOTYPE) continue;
- if (err == EINTR) continue;
- if (err != EAGAIN) return err;
- if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err;
-@@ -266,8 +265,8 @@ int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm
- err = errno;
- if (taken == 0) return IO_CLOSED;
- if (err == EINTR) continue;
-- if (err != EAGAIN) return err;
-- if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
-+ if (err != EAGAIN) return err;
-+ if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
- }
- return IO_UNKNOWN;
- }
-@@ -275,7 +274,7 @@ int socket_recv(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm
- /*-------------------------------------------------------------------------*\
- * Recvfrom with timeout
- \*-------------------------------------------------------------------------*/
--int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got,
-+int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got,
- SA *addr, socklen_t *len, p_timeout tm) {
- int err;
- *got = 0;
-@@ -289,8 +288,8 @@ int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got,
- err = errno;
- if (taken == 0) return IO_CLOSED;
- if (err == EINTR) continue;
-- if (err != EAGAIN) return err;
-- if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
-+ if (err != EAGAIN) return err;
-+ if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
- }
- return IO_UNKNOWN;
- }
-@@ -303,7 +302,7 @@ int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got,
- * with send/recv replaced with write/read. We can't just use write/read
- * in the socket version, because behaviour when size is zero is different.
- \*-------------------------------------------------------------------------*/
--int socket_write(p_socket ps, const char *data, size_t count,
-+int socket_write(p_socket ps, const char *data, size_t count,
- size_t *sent, p_timeout tm)
- {
- int err;
-@@ -321,6 +320,8 @@ int socket_write(p_socket ps, const char *data, size_t count,
- err = errno;
- /* EPIPE means the connection was closed */
- if (err == EPIPE) return IO_CLOSED;
-+ /* EPROTOTYPE means the connection is being closed (on Yosemite!)*/
-+ if (err == EPROTOTYPE) continue;
- /* we call was interrupted, just try again */
- if (err == EINTR) continue;
- /* if failed fatal reason, report error */
-@@ -349,8 +350,8 @@ int socket_read(p_socket ps, char *data, size_t count, size_t *got, p_timeout tm
- err = errno;
- if (taken == 0) return IO_CLOSED;
- if (err == EINTR) continue;
-- if (err != EAGAIN) return err;
-- if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
-+ if (err != EAGAIN) return err;
-+ if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
- }
- return IO_UNKNOWN;
- }
-@@ -374,7 +375,7 @@ void socket_setnonblocking(p_socket ps) {
- }
-
- /*-------------------------------------------------------------------------*\
--* DNS helpers
-+* DNS helpers
- \*-------------------------------------------------------------------------*/
- int socket_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp) {
- *hp = gethostbyaddr(addr, len, AF_INET);
-@@ -399,7 +400,7 @@ int socket_gethostbyname(const char *addr, struct hostent **hp) {
- const char *socket_hoststrerror(int err) {
- if (err <= 0) return io_strerror(err);
- switch (err) {
-- case HOST_NOT_FOUND: return "host not found";
-+ case HOST_NOT_FOUND: return PIE_HOST_NOT_FOUND;
- default: return hstrerror(err);
- }
- }
-@@ -407,42 +408,43 @@ const char *socket_hoststrerror(int err) {
- const char *socket_strerror(int err) {
- if (err <= 0) return io_strerror(err);
- switch (err) {
-- case EADDRINUSE: return "address already in use";
-- case EISCONN: return "already connected";
-- case EACCES: return "permission denied";
-- case ECONNREFUSED: return "connection refused";
-- case ECONNABORTED: return "closed";
-- case ECONNRESET: return "closed";
-- case ETIMEDOUT: return "timeout";
-- default: return strerror(err);
-+ case EADDRINUSE: return PIE_ADDRINUSE;
-+ case EISCONN: return PIE_ISCONN;
-+ case EACCES: return PIE_ACCESS;
-+ case ECONNREFUSED: return PIE_CONNREFUSED;
-+ case ECONNABORTED: return PIE_CONNABORTED;
-+ case ECONNRESET: return PIE_CONNRESET;
-+ case ETIMEDOUT: return PIE_TIMEDOUT;
-+ default: {
-+ return strerror(err);
-+ }
- }
- }
-
- const char *socket_ioerror(p_socket ps, int err) {
- (void) ps;
- return socket_strerror(err);
--}
-+}
-
- const char *socket_gaistrerror(int err) {
-- if (err == 0) return NULL;
-+ if (err == 0) return NULL;
- switch (err) {
-- case EAI_AGAIN: return "temporary failure in name resolution";
-- case EAI_BADFLAGS: return "invalid value for ai_flags";
-+ case EAI_AGAIN: return PIE_AGAIN;
-+ case EAI_BADFLAGS: return PIE_BADFLAGS;
- #ifdef EAI_BADHINTS
-- case EAI_BADHINTS: return "invalid value for hints";
-+ case EAI_BADHINTS: return PIE_BADHINTS;
- #endif
-- case EAI_FAIL: return "non-recoverable failure in name resolution";
-- case EAI_FAMILY: return "ai_family not supported";
-- case EAI_MEMORY: return "memory allocation failure";
-- case EAI_NONAME:
-- return "host or service not provided, or not known";
-- case EAI_OVERFLOW: return "argument buffer overflow";
-+ case EAI_FAIL: return PIE_FAIL;
-+ case EAI_FAMILY: return PIE_FAMILY;
-+ case EAI_MEMORY: return PIE_MEMORY;
-+ case EAI_NONAME: return PIE_NONAME;
-+ case EAI_OVERFLOW: return PIE_OVERFLOW;
- #ifdef EAI_PROTOCOL
-- case EAI_PROTOCOL: return "resolved protocol is unknown";
-+ case EAI_PROTOCOL: return PIE_PROTOCOL;
- #endif
-- case EAI_SERVICE: return "service not supported for socket type";
-- case EAI_SOCKTYPE: return "ai_socktype not supported";
-- case EAI_SYSTEM: return strerror(errno);
-+ case EAI_SERVICE: return PIE_SERVICE;
-+ case EAI_SOCKTYPE: return PIE_SOCKTYPE;
-+ case EAI_SYSTEM: return strerror(errno);
- default: return gai_strerror(err);
- }
- }
-diff --git a/src/wsocket.c b/src/wsocket.c
-index b4a4384..8ecb0fc 100644
---- a/src/wsocket.c
-+++ b/src/wsocket.c
-@@ -3,33 +3,34 @@
- * LuaSocket toolkit
- *
- * The penalty of calling select to avoid busy-wait is only paid when
--* the I/O call fail in the first place.
-+* the I/O call fail in the first place.
- \*=========================================================================*/
- #include <string.h>
-
- #include "socket.h"
-+#include "pierror.h"
-
- /* WinSock doesn't have a strerror... */
- static const char *wstrerror(int err);
-
- /*-------------------------------------------------------------------------*\
--* Initializes module
-+* Initializes module
- \*-------------------------------------------------------------------------*/
- int socket_open(void) {
- WSADATA wsaData;
-- WORD wVersionRequested = MAKEWORD(2, 0);
-+ WORD wVersionRequested = MAKEWORD(2, 0);
- int err = WSAStartup(wVersionRequested, &wsaData );
- if (err != 0) return 0;
- if ((LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 0) &&
- (LOBYTE(wsaData.wVersion) != 1 || HIBYTE(wsaData.wVersion) != 1)) {
- WSACleanup();
-- return 0;
-+ return 0;
- }
- return 1;
- }
-
- /*-------------------------------------------------------------------------*\
--* Close module
-+* Close module
- \*-------------------------------------------------------------------------*/
- int socket_close(void) {
- WSACleanup();
-@@ -50,10 +51,10 @@ int socket_waitfd(p_socket ps, int sw, p_timeout tm) {
- struct timeval tv, *tp = NULL;
- double t;
- if (timeout_iszero(tm)) return IO_TIMEOUT; /* optimize timeout == 0 case */
-- if (sw & WAITFD_R) {
-- FD_ZERO(&rfds);
-+ if (sw & WAITFD_R) {
-+ FD_ZERO(&rfds);
- FD_SET(*ps, &rfds);
-- rp = &rfds;
-+ rp = &rfds;
- }
- if (sw & WAITFD_W) { FD_ZERO(&wfds); FD_SET(*ps, &wfds); wp = &wfds; }
- if (sw & WAITFD_C) { FD_ZERO(&efds); FD_SET(*ps, &efds); ep = &efds; }
-@@ -72,9 +73,9 @@ int socket_waitfd(p_socket ps, int sw, p_timeout tm) {
- /*-------------------------------------------------------------------------*\
- * Select with int timeout in ms
- \*-------------------------------------------------------------------------*/
--int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds,
-+int socket_select(t_socket n, fd_set *rfds, fd_set *wfds, fd_set *efds,
- p_timeout tm) {
-- struct timeval tv;
-+ struct timeval tv;
- double t = timeout_get(tm);
- tv.tv_sec = (int) t;
- tv.tv_usec = (int) ((t - tv.tv_sec) * 1.0e6);
-@@ -96,7 +97,7 @@ void socket_destroy(p_socket ps) {
- }
-
- /*-------------------------------------------------------------------------*\
--*
-+*
- \*-------------------------------------------------------------------------*/
- void socket_shutdown(p_socket ps, int how) {
- socket_setblocking(ps);
-@@ -134,10 +135,10 @@ int socket_connect(p_socket ps, SA *addr, socklen_t len, p_timeout tm) {
- /* give windows time to set the error (yes, disgusting) */
- Sleep(10);
- /* find out why we failed */
-- getsockopt(*ps, SOL_SOCKET, SO_ERROR, (char *)&err, &len);
-+ getsockopt(*ps, SOL_SOCKET, SO_ERROR, (char *)&err, &len);
- /* we KNOW there was an error. if 'why' is 0, we will return
- * "unknown error", but it's not really our fault */
-- return err > 0? err: IO_UNKNOWN;
-+ return err > 0? err: IO_UNKNOWN;
- } else return err;
-
- }
-@@ -154,7 +155,7 @@ int socket_bind(p_socket ps, SA *addr, socklen_t len) {
- }
-
- /*-------------------------------------------------------------------------*\
--*
-+*
- \*-------------------------------------------------------------------------*/
- int socket_listen(p_socket ps, int backlog) {
- int err = IO_DONE;
-@@ -167,7 +168,7 @@ int socket_listen(p_socket ps, int backlog) {
- /*-------------------------------------------------------------------------*\
- * Accept with timeout
- \*-------------------------------------------------------------------------*/
--int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len,
-+int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len,
- p_timeout tm) {
- if (*ps == SOCKET_INVALID) return IO_CLOSED;
- for ( ;; ) {
-@@ -175,21 +176,21 @@ int socket_accept(p_socket ps, p_socket pa, SA *addr, socklen_t *len,
- /* try to get client socket */
- if ((*pa = accept(*ps, addr, len)) != SOCKET_INVALID) return IO_DONE;
- /* find out why we failed */
-- err = WSAGetLastError();
-+ err = WSAGetLastError();
- /* if we failed because there was no connectoin, keep trying */
- if (err != WSAEWOULDBLOCK && err != WSAECONNABORTED) return err;
- /* call select to avoid busy wait */
- if ((err = socket_waitfd(ps, WAITFD_R, tm)) != IO_DONE) return err;
-- }
-+ }
- }
-
- /*-------------------------------------------------------------------------*\
- * Send with timeout
--* On windows, if you try to send 10MB, the OS will buffer EVERYTHING
--* this can take an awful lot of time and we will end up blocked.
-+* On windows, if you try to send 10MB, the OS will buffer EVERYTHING
-+* this can take an awful lot of time and we will end up blocked.
- * Therefore, whoever calls this function should not pass a huge buffer.
- \*-------------------------------------------------------------------------*/
--int socket_send(p_socket ps, const char *data, size_t count,
-+int socket_send(p_socket ps, const char *data, size_t count,
- size_t *sent, p_timeout tm)
- {
- int err;
-@@ -206,18 +207,18 @@ int socket_send(p_socket ps, const char *data, size_t count,
- return IO_DONE;
- }
- /* deal with failure */
-- err = WSAGetLastError();
-+ err = WSAGetLastError();
- /* we can only proceed if there was no serious error */
- if (err != WSAEWOULDBLOCK) return err;
- /* avoid busy wait */
- if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err;
-- }
-+ }
- }
-
- /*-------------------------------------------------------------------------*\
- * Sendto with timeout
- \*-------------------------------------------------------------------------*/
--int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent,
-+int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent,
- SA *addr, socklen_t len, p_timeout tm)
- {
- int err;
-@@ -229,17 +230,17 @@ int socket_sendto(p_socket ps, const char *data, size_t count, size_t *sent,
- *sent = put;
- return IO_DONE;
- }
-- err = WSAGetLastError();
-+ err = WSAGetLastError();
- if (err != WSAEWOULDBLOCK) return err;
- if ((err = socket_waitfd(ps, WAITFD_W, tm)) != IO_DONE) return err;
-- }
-+ }
- }
-
- /*-------------------------------------------------------------------------*\
- * Receive with timeout
- \*-------------------------------------------------------------------------*/
--int socket_recv(p_socket ps, char *data, size_t count, size_t *got,
-- p_timeout tm)
-+int socket_recv(p_socket ps, char *data, size_t count, size_t *got,
-+ p_timeout tm)
- {
- int err, prev = IO_DONE;
- *got = 0;
-@@ -252,9 +253,9 @@ int socket_recv(p_socket ps, char *data, size_t count, size_t *got,
- }
- if (taken == 0) return IO_CLOSED;
- err = WSAGetLastError();
-- /* On UDP, a connreset simply means the previous send failed.
-- * So we try again.
-- * On TCP, it means our socket is now useless, so the error passes.
-+ /* On UDP, a connreset simply means the previous send failed.
-+ * So we try again.
-+ * On TCP, it means our socket is now useless, so the error passes.
- * (We will loop again, exiting because the same error will happen) */
- if (err != WSAEWOULDBLOCK) {
- if (err != WSAECONNRESET || prev == WSAECONNRESET) return err;
-@@ -267,8 +268,8 @@ int socket_recv(p_socket ps, char *data, size_t count, size_t *got,
- /*-------------------------------------------------------------------------*\
- * Recvfrom with timeout
- \*-------------------------------------------------------------------------*/
--int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got,
-- SA *addr, socklen_t *len, p_timeout tm)
-+int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got,
-+ SA *addr, socklen_t *len, p_timeout tm)
- {
- int err, prev = IO_DONE;
- *got = 0;
-@@ -281,8 +282,8 @@ int socket_recvfrom(p_socket ps, char *data, size_t count, size_t *got,
- }
- if (taken == 0) return IO_CLOSED;
- err = WSAGetLastError();
-- /* On UDP, a connreset simply means the previous send failed.
-- * So we try again.
-+ /* On UDP, a connreset simply means the previous send failed.
-+ * So we try again.
- * On TCP, it means our socket is now useless, so the error passes.
- * (We will loop again, exiting because the same error will happen) */
- if (err != WSAEWOULDBLOCK) {
-@@ -310,7 +311,7 @@ void socket_setnonblocking(p_socket ps) {
- }
-
- /*-------------------------------------------------------------------------*\
--* DNS helpers
-+* DNS helpers
- \*-------------------------------------------------------------------------*/
- int socket_gethostbyaddr(const char *addr, socklen_t len, struct hostent **hp) {
- *hp = gethostbyaddr(addr, len, AF_INET);
-@@ -330,21 +331,21 @@ int socket_gethostbyname(const char *addr, struct hostent **hp) {
- const char *socket_hoststrerror(int err) {
- if (err <= 0) return io_strerror(err);
- switch (err) {
-- case WSAHOST_NOT_FOUND: return "host not found";
-- default: return wstrerror(err);
-+ case WSAHOST_NOT_FOUND: return PIE_HOST_NOT_FOUND;
-+ default: return wstrerror(err);
- }
- }
-
- const char *socket_strerror(int err) {
- if (err <= 0) return io_strerror(err);
- switch (err) {
-- case WSAEADDRINUSE: return "address already in use";
-- case WSAECONNREFUSED: return "connection refused";
-- case WSAEISCONN: return "already connected";
-- case WSAEACCES: return "permission denied";
-- case WSAECONNABORTED: return "closed";
-- case WSAECONNRESET: return "closed";
-- case WSAETIMEDOUT: return "timeout";
-+ case WSAEADDRINUSE: return PIE_ADDRINUSE;
-+ case WSAECONNREFUSED : return PIE_CONNREFUSED;
-+ case WSAEISCONN: return PIE_ISCONN;
-+ case WSAEACCES: return PIE_ACCESS;
-+ case WSAECONNABORTED: return PIE_CONNABORTED;
-+ case WSAECONNRESET: return PIE_CONNRESET;
-+ case WSAETIMEDOUT: return PIE_TIMEDOUT;
- default: return wstrerror(err);
- }
- }
-@@ -357,7 +358,7 @@ const char *socket_ioerror(p_socket ps, int err) {
- static const char *wstrerror(int err) {
- switch (err) {
- case WSAEINTR: return "Interrupted function call";
-- case WSAEACCES: return "Permission denied";
-+ case WSAEACCES: return PIE_ACCESS; // "Permission denied";
- case WSAEFAULT: return "Bad address";
- case WSAEINVAL: return "Invalid argument";
- case WSAEMFILE: return "Too many open files";
-@@ -370,63 +371,61 @@ static const char *wstrerror(int err) {
- case WSAEPROTOTYPE: return "Protocol wrong type for socket";
- case WSAENOPROTOOPT: return "Bad protocol option";
- case WSAEPROTONOSUPPORT: return "Protocol not supported";
-- case WSAESOCKTNOSUPPORT: return "Socket type not supported";
-+ case WSAESOCKTNOSUPPORT: return PIE_SOCKTYPE; // "Socket type not supported";
- case WSAEOPNOTSUPP: return "Operation not supported";
- case WSAEPFNOSUPPORT: return "Protocol family not supported";
-- case WSAEAFNOSUPPORT:
-- return "Address family not supported by protocol family";
-- case WSAEADDRINUSE: return "Address already in use";
-+ case WSAEAFNOSUPPORT: return PIE_FAMILY; // "Address family not supported by protocol family";
-+ case WSAEADDRINUSE: return PIE_ADDRINUSE; // "Address already in use";
- case WSAEADDRNOTAVAIL: return "Cannot assign requested address";
- case WSAENETDOWN: return "Network is down";
- case WSAENETUNREACH: return "Network is unreachable";
- case WSAENETRESET: return "Network dropped connection on reset";
- case WSAECONNABORTED: return "Software caused connection abort";
-- case WSAECONNRESET: return "Connection reset by peer";
-+ case WSAECONNRESET: return PIE_CONNRESET; // "Connection reset by peer";
- case WSAENOBUFS: return "No buffer space available";
-- case WSAEISCONN: return "Socket is already connected";
-+ case WSAEISCONN: return PIE_ISCONN; // "Socket is already connected";
- case WSAENOTCONN: return "Socket is not connected";
- case WSAESHUTDOWN: return "Cannot send after socket shutdown";
-- case WSAETIMEDOUT: return "Connection timed out";
-- case WSAECONNREFUSED: return "Connection refused";
-+ case WSAETIMEDOUT: return PIE_TIMEDOUT; // "Connection timed out";
-+ case WSAECONNREFUSED: return PIE_CONNREFUSED; // "Connection refused";
- case WSAEHOSTDOWN: return "Host is down";
- case WSAEHOSTUNREACH: return "No route to host";
- case WSAEPROCLIM: return "Too many processes";
- case WSASYSNOTREADY: return "Network subsystem is unavailable";
- case WSAVERNOTSUPPORTED: return "Winsock.dll version out of range";
-- case WSANOTINITIALISED:
-+ case WSANOTINITIALISED:
- return "Successful WSAStartup not yet performed";
- case WSAEDISCON: return "Graceful shutdown in progress";
-- case WSAHOST_NOT_FOUND: return "Host not found";
-+ case WSAHOST_NOT_FOUND: return PIE_HOST_NOT_FOUND; // "Host not found";
- case WSATRY_AGAIN: return "Nonauthoritative host not found";
-- case WSANO_RECOVERY: return "Nonrecoverable name lookup error";
-+ case WSANO_RECOVERY: return PIE_FAIL; // "Nonrecoverable name lookup error";
- case WSANO_DATA: return "Valid name, no data record of requested type";
- default: return "Unknown error";
- }
- }
-
- const char *socket_gaistrerror(int err) {
-- if (err == 0) return NULL;
-+ if (err == 0) return NULL;
- switch (err) {
-- case EAI_AGAIN: return "temporary failure in name resolution";
-- case EAI_BADFLAGS: return "invalid value for ai_flags";
-+ case EAI_AGAIN: return PIE_AGAIN;
-+ case EAI_BADFLAGS: return PIE_BADFLAGS;
- #ifdef EAI_BADHINTS
-- case EAI_BADHINTS: return "invalid value for hints";
-+ case EAI_BADHINTS: return PIE_BADHINTS;
- #endif
-- case EAI_FAIL: return "non-recoverable failure in name resolution";
-- case EAI_FAMILY: return "ai_family not supported";
-- case EAI_MEMORY: return "memory allocation failure";
-- case EAI_NONAME:
-- return "host or service not provided, or not known";
-+ case EAI_FAIL: return PIE_FAIL;
-+ case EAI_FAMILY: return PIE_FAMILY;
-+ case EAI_MEMORY: return PIE_MEMORY;
-+ case EAI_NONAME: return PIE_NONAME;
- #ifdef EAI_OVERFLOW
-- case EAI_OVERFLOW: return "argument buffer overflow";
-+ case EAI_OVERFLOW: return PIE_OVERFLOW;
- #endif
- #ifdef EAI_PROTOCOL
-- case EAI_PROTOCOL: return "resolved protocol is unknown";
-+ case EAI_PROTOCOL: return PIE_PROTOCOL;
- #endif
-- case EAI_SERVICE: return "service not supported for socket type";
-- case EAI_SOCKTYPE: return "ai_socktype not supported";
-+ case EAI_SERVICE: return PIE_SERVICE;
-+ case EAI_SOCKTYPE: return PIE_SOCKTYPE;
- #ifdef EAI_SYSTEM
-- case EAI_SYSTEM: return strerror(errno);
-+ case EAI_SYSTEM: return strerror(errno);
- #endif
- default: return gai_strerror(err);
- }
-diff --git a/test/auth/.htaccess b/test/auth/.htaccess
-new file mode 100644
-index 0000000..bb2794a
---- /dev/null
-+++ b/test/auth/.htaccess
-@@ -0,0 +1,4 @@
-+AuthName "test-auth"
-+ AuthType Basic
-+ AuthUserFile /Users/diego/impa/luasocket/test/auth/.htpasswd
-+ Require valid-user
-diff --git a/test/auth/.htpasswd b/test/auth/.htpasswd
-index fd9002b..cfb2603 100644
---- a/test/auth/.htpasswd
-+++ b/test/auth/.htpasswd
-@@ -1 +1 @@
--luasocket:l8n2npozPB.sQ
-+luasocket:$apr1$47u2O.Me$.m/5BWAtt7GVoxsouIPBR1
-diff --git a/test/excepttest.lua b/test/excepttest.lua
-index ce9f197..80c9cb8 100644
---- a/test/excepttest.lua
-+++ b/test/excepttest.lua
-@@ -1,6 +1,30 @@
- local socket = require("socket")
--try = socket.newtry(function()
-- print("finalized!!!")
-+
-+local finalizer_called
-+
-+local func = socket.protect(function(err, ...)
-+ local try = socket.newtry(function()
-+ finalizer_called = true
-+ end)
-+
-+ if err then
-+ return error(err, 0)
-+ else
-+ return try(...)
-+ end
- end)
--try = socket.protect(try)
--print(try(nil, "it works"))
-+
-+local ret1, ret2, ret3 = func(false, 1, 2, 3)
-+assert(not finalizer_called, "unexpected finalizer call")
-+assert(ret1 == 1 and ret2 == 2 and ret3 == 3, "incorrect return values")
-+
-+ret1, ret2, ret3 = func(false, false, "error message")
-+assert(finalizer_called, "finalizer not called")
-+assert(ret1 == nil and ret2 == "error message" and ret3 == nil, "incorrect return values")
-+
-+local err = {key = "value"}
-+ret1, ret2 = pcall(func, err)
-+assert(not ret1, "error not rethrown")
-+assert(ret2 == err, "incorrect error rethrown")
-+
-+print("OK")
-diff --git a/test/httptest.lua b/test/httptest.lua
-index d5fbb37..63ff921 100644
---- a/test/httptest.lua
-+++ b/test/httptest.lua
-@@ -1,4 +1,4 @@
---- needs Alias from /home/c/diego/tec/luasocket/test to
-+-- needs Alias from /home/c/diego/tec/luasocket/test to
- -- "/luasocket-test" and "/luasocket-test/"
- -- needs ScriptAlias from /home/c/diego/tec/luasocket/test/cgi
- -- to "/luasocket-test-cgi" and "/luasocket-test-cgi/"
-@@ -36,22 +36,22 @@ index = readfile(index_file)
- local check_result = function(response, expect, ignore)
- for i,v in pairs(response) do
- if not ignore[i] then
-- if v ~= expect[i] then
-+ if v ~= expect[i] then
- local f = io.open("err", "w")
- f:write(tostring(v), "\n\n versus\n\n", tostring(expect[i]))
- f:close()
-- fail(i .. " differs!")
-+ fail(i .. " differs!")
- end
- end
- end
- for i,v in pairs(expect) do
- if not ignore[i] then
-- if v ~= response[i] then
-+ if v ~= response[i] then
- local f = io.open("err", "w")
- f:write(tostring(response[i]), "\n\n versus\n\n", tostring(v))
- v = string.sub(type(v) == "string" and v or "", 1, 70)
- f:close()
-- fail(i .. " differs!")
-+ fail(i .. " differs!")
- end
- end
- end
-@@ -61,10 +61,10 @@ end
- local check_request = function(request, expect, ignore)
- local t
- if not request.sink then request.sink, t = ltn12.sink.table() end
-- request.source = request.source or
-+ request.source = request.source or
- (request.body and ltn12.source.string(request.body))
- local response = {}
-- response.code, response.headers, response.status =
-+ response.code, response.headers, response.status =
- socket.skip(1, http.request(request))
- if t and #t > 0 then response.body = table.concat(t) end
- check_result(response, expect, ignore)
-@@ -82,7 +82,7 @@ else fail(back.query) end
- ------------------------------------------------------------------------
- io.write("testing query string correctness: ")
- forth = "this+is+the+query+string"
--back = http.request("http://" .. host .. cgiprefix ..
-+back = http.request("http://" .. host .. cgiprefix ..
- "/query-string?" .. forth)
- if similar(back, forth) then print("ok")
- else fail("failed!") end
-@@ -120,10 +120,10 @@ check_request(request, expect, ignore)
- ------------------------------------------------------------------------
- io.write("testing invalid url: ")
- local r, e = http.request{url = host .. prefix}
--assert(r == nil and e == "invalid host ''")
-+assert(r == nil and e == "invalid host ''")
- r, re = http.request(host .. prefix)
--assert(r == nil and e == re, tostring(r) ..", " .. tostring(re) ..
-- " vs " .. tostring(e))
-+assert(r == nil and e == re, tostring(r) ..", " .. tostring(re) ..
-+ " vs " .. tostring(e))
- print("ok")
-
- io.write("testing invalid empty port: ")
-@@ -212,7 +212,7 @@ os.remove(index_file .. "-back")
- io.write("testing ltn12.(sink|source).chain and mime.(encode|decode): ")
-
- local function b64length(len)
-- local a = math.ceil(len/3)*4
-+ local a = math.ceil(len/3)*4
- local l = math.ceil(a/76)
- return a + l*2
- end
-@@ -313,7 +313,7 @@ ignore = {
- headers = 1
- }
- check_request(request, expect, ignore)
--
-+
- ------------------------------------------------------------------------
- io.write("testing document not found: ")
- request = {
-@@ -429,9 +429,9 @@ print("ok")
- io.write("testing host not found: ")
- local c, e = socket.connect("example.invalid", 80)
- local r, re = http.request{url = "http://example.invalid/does/not/exist"}
--assert(r == nil and e == re, tostring(r) .. " " .. tostring(re))
-+assert(r == nil and e == re, tostring(r) .. " " .. tostring(re))
- r, re = http.request("http://example.invalid/does/not/exist")
--assert(r == nil and e == re)
-+assert(r == nil and e == re)
- print("ok")
-
- ------------------------------------------------------------------------
-diff --git a/test/ltn12test.lua b/test/ltn12test.lua
-index 74a45e8..e3f85fb 100644
---- a/test/ltn12test.lua
-+++ b/test/ltn12test.lua
-@@ -192,6 +192,21 @@ assert(filter(nil, 1), "filter not empty")
- print("ok")
-
- --------------------------------
-+io.write("testing source.chain (with several filters): ")
-+local function double(x) -- filter turning "ABC" into "AABBCC"
-+ if not x then return end
-+ local b={}
-+ for k in x:gmatch'.' do table.insert(b, k..k) end
-+ return table.concat(b)
-+end
-+source = ltn12.source.string(s)
-+source = ltn12.source.chain(source, double, double, double)
-+sink, t = ltn12.sink.table()
-+assert(ltn12.pump.all(source, sink), "returned error")
-+assert(table.concat(t) == double(double(double(s))), "mismatch")
-+print("ok")
-+
-+--------------------------------
- io.write("testing source.chain (with split) and sink.chain (with merge): ")
- source = ltn12.source.string(s)
- filter = split(5)
-@@ -206,6 +221,15 @@ assert(filter2(nil, 1), "filter2 not empty")
- print("ok")
-
- --------------------------------
-+io.write("testing sink.chain (with several filters): ")
-+source = ltn12.source.string(s)
-+sink, t = ltn12.sink.table()
-+sink = ltn12.sink.chain(double, double, double, sink)
-+assert(ltn12.pump.all(source, sink), "returned error")
-+assert(table.concat(t) == double(double(double(s))), "mismatch")
-+print("ok")
-+
-+--------------------------------
- io.write("testing filter.chain (and sink.chain, with split, merge): ")
- source = ltn12.source.string(s)
- filter = split(5)
-@@ -272,3 +296,4 @@ assert(filter3(nil, 1), "filter3 not empty")
- assert(filter4(nil, 1), "filter4 not empty")
- assert(filter5(nil, 1), "filter5 not empty")
- print("ok")
-+
-diff --git a/test/testclnt.lua b/test/testclnt.lua
-index 315783b..170e187 100644
---- a/test/testclnt.lua
-+++ b/test/testclnt.lua
-@@ -8,7 +8,7 @@ function printf(...)
- end
-
- function pass(...)
-- printf(...)
-+ printf(...)
- io.stderr:write("\n")
- end
-
-@@ -45,30 +45,30 @@ function check_timeout(tm, sl, elapsed, err, opp, mode, alldone)
- if not err then warn("must be buffered")
- elseif err == "timeout" then pass("proper timeout")
- else fail("unexpected error '%s'", err) end
-- else
-- if err ~= "timeout" then fail("should have timed out")
-+ else
-+ if err ~= "timeout" then fail("should have timed out")
- else pass("proper timeout") end
- end
- else
- if mode == "total" then
-- if elapsed > tm then
-+ if elapsed > tm then
- if err ~= "timeout" then fail("should have timed out")
- else pass("proper timeout") end
- elseif elapsed < tm then
-- if err then fail(err)
-+ if err then fail(err)
- else pass("ok") end
-- else
-- if alldone then
-- if err then fail("unexpected error '%s'", err)
-+ else
-+ if alldone then
-+ if err then fail("unexpected error '%s'", err)
- else pass("ok") end
- else
-- if err ~= "timeout" then fail(err)
-+ if err ~= "timeout" then fail(err)
- else pass("proper timeoutk") end
- end
- end
-- else
-- if err then fail(err)
-- else pass("ok") end
-+ else
-+ if err then fail(err)
-+ else pass("ok") end
- end
- end
- end
-@@ -104,8 +104,8 @@ control:setoption("tcp-nodelay", true)
- ------------------------------------------------------------------------
- function test_methods(sock, methods)
- for _, v in pairs(methods) do
-- if type(sock[v]) ~= "function" then
-- fail(sock.class .. " method '" .. v .. "' not registered")
-+ if type(sock[v]) ~= "function" then
-+ fail(sock.class .. " method '" .. v .. "' not registered")
- end
- end
- pass(sock.class .. " methods are ok")
-@@ -121,7 +121,7 @@ function test_mixed(len)
- local p3 = "raw " .. string.rep("z", inter) .. "bytes"
- local p4 = "end" .. string.rep("w", inter) .. "bytes"
- local bp1, bp2, bp3, bp4
--remote (string.format("str = data:receive(%d)",
-+remote (string.format("str = data:receive(%d)",
- string.len(p1)+string.len(p2)+string.len(p3)+string.len(p4)))
- sent, err = data:send(p1..p2..p3..p4)
- if err then fail(err) end
-@@ -166,7 +166,7 @@ function test_rawline(len)
- io.stderr:write("length " .. len .. ": ")
- local str, str10, back, err
- str = string.rep(string.char(47), math.mod(len, 10))
-- str10 = string.rep(string.char(120,21,77,4,5,0,7,36,44,100),
-+ str10 = string.rep(string.char(120,21,77,4,5,0,7,36,44,100),
- math.floor(len/10))
- str = str .. str10
- remote "str = data:receive()"
-@@ -216,7 +216,7 @@ function test_totaltimeoutreceive(len, tm, sl)
- data:settimeout(tm, "total")
- local t = socket.gettime()
- str, err, partial, elapsed = data:receive(2*len)
-- check_timeout(tm, sl, elapsed, err, "receive", "total",
-+ check_timeout(tm, sl, elapsed, err, "receive", "total",
- string.len(str or partial) == 2*len)
- end
-
-@@ -236,7 +236,7 @@ function test_totaltimeoutsend(len, tm, sl)
- data:settimeout(tm, "total")
- str = string.rep("a", 2*len)
- total, err, partial, elapsed = data:send(str)
-- check_timeout(tm, sl, elapsed, err, "send", "total",
-+ check_timeout(tm, sl, elapsed, err, "send", "total",
- total == 2*len)
- end
-
-@@ -256,7 +256,7 @@ function test_blockingtimeoutreceive(len, tm, sl)
- ]], 2*tm, len, sl, sl))
- data:settimeout(tm)
- str, err, partial, elapsed = data:receive(2*len)
-- check_timeout(tm, sl, elapsed, err, "receive", "blocking",
-+ check_timeout(tm, sl, elapsed, err, "receive", "blocking",
- string.len(str or partial) == 2*len)
- end
-
-@@ -290,10 +290,10 @@ function empty_connect()
- data = server:accept()
- ]]
- data, err = socket.connect("", port)
-- if not data then
-+ if not data then
- pass("ok")
- data = socket.connect(host, port)
-- else
-+ else
- pass("gethostbyname returns localhost on empty string...")
- end
- end
-@@ -304,15 +304,20 @@ function isclosed(c)
- end
-
- function active_close()
-- reconnect()
-- if isclosed(data) then fail("should not be closed") end
-- data:close()
-- if not isclosed(data) then fail("should be closed") end
-- data = nil
-- local udp = socket.udp()
-+ local tcp = socket.tcp4()
-+ if isclosed(tcp) then fail("should not be closed") end
-+ tcp:close()
-+ if not isclosed(tcp) then fail("should be closed") end
-+ tcp = socket.tcp()
-+ if not isclosed(tcp) then fail("should be closed") end
-+ tcp = nil
-+ local udp = socket.udp4()
- if isclosed(udp) then fail("should not be closed") end
- udp:close()
- if not isclosed(udp) then fail("should be closed") end
-+ udp = socket.udp()
-+ if not isclosed(udp) then fail("should be closed") end
-+ udp = nil
- pass("ok")
- end
-
-@@ -327,7 +332,7 @@ function test_closed()
- data:close()
- data = nil
- ]], str))
-- -- try to get a line
-+ -- try to get a line
- back, err, partial = data:receive()
- if not err then fail("should have gotten 'closed'.")
- elseif err ~= "closed" then fail("got '"..err.."' instead of 'closed'.")
-@@ -340,25 +345,25 @@ function test_closed()
- data = nil
- ]]
- total, err, partial = data:send(string.rep("ugauga", 100000))
-- if not err then
-+ if not err then
- pass("failed: output buffer is at least %d bytes long!", total)
-- elseif err ~= "closed" then
-+ elseif err ~= "closed" then
- fail("got '"..err.."' instead of 'closed'.")
-- else
-- pass("graceful 'closed' received after %d bytes were sent", partial)
-+ else
-+ pass("graceful 'closed' received after %d bytes were sent", partial)
- end
- end
-
- ------------------------------------------------------------------------
- function test_selectbugs()
- local r, s, e = socket.select(nil, nil, 0.1)
-- assert(type(r) == "table" and type(s) == "table" and
-+ assert(type(r) == "table" and type(s) == "table" and
- (e == "timeout" or e == "error"))
- pass("both nil: ok")
- local udp = socket.udp()
- udp:close()
- r, s, e = socket.select({ udp }, { udp }, 0.1)
-- assert(type(r) == "table" and type(s) == "table" and
-+ assert(type(r) == "table" and type(s) == "table" and
- (e == "timeout" or e == "error"))
- pass("closed sockets: ok")
- e = pcall(socket.select, "wrong", 1, 0.1)
-@@ -368,7 +373,7 @@ function test_selectbugs()
- pass("invalid input: ok")
- local toomany = {}
- for i = 1, socket._SETSIZE+1 do
-- toomany[#toomany+1] = socket.udp()
-+ toomany[#toomany+1] = socket.udp4()
- end
- if #toomany > socket._SETSIZE then
- local e = pcall(socket.select, toomany, nil, 0.1)
-@@ -389,7 +394,7 @@ function accept_timeout()
- local t = socket.gettime()
- s:settimeout(1)
- local c, e = s:accept()
-- assert(not c, "should not accept")
-+ assert(not c, "should not accept")
- assert(e == "timeout", string.format("wrong error message (%s)", e))
- t = socket.gettime() - t
- assert(t < 2, string.format("took to long to give up (%gs)", t))
-@@ -407,9 +412,9 @@ function connect_timeout()
- local t = socket.gettime()
- local r, e = c:connect("10.0.0.1", 81)
- assert(not r, "should not connect")
-- assert(socket.gettime() - t < 2, "took too long to give up.")
-+ assert(socket.gettime() - t < 2, "took too long to give up.")
- c:close()
-- pass("ok")
-+ pass("ok")
- end
-
- ------------------------------------------------------------------------
-@@ -447,16 +452,14 @@ end
-
- ------------------------------------------------------------------------
- function rebind_test()
-- --local c ,c1 = socket.bind("localhost", 0)
- local c ,c1 = socket.bind("127.0.0.1", 0)
- if not c then pass ("failed to bind! " .. tostring(c) .. ' ' .. tostring(c1)) return end
- assert(c,c1)
--
- local i, p = c:getsockname()
- local s, e = socket.tcp()
- assert(s, e)
- s:setoption("reuseaddr", false)
-- r, e = s:bind("localhost", p)
-+ r, e = s:bind(i, p)
- assert(not r, "managed to rebind!")
- assert(e)
- pass("ok")
-@@ -476,9 +479,9 @@ function getstats_test()
- data:receive(c)
- t = t + c
- local r, s, a = data:getstats()
-- assert(r == t, "received count failed" .. tostring(r)
-+ assert(r == t, "received count failed" .. tostring(r)
- .. "/" .. tostring(t))
-- assert(s == t, "sent count failed" .. tostring(s)
-+ assert(s == t, "sent count failed" .. tostring(s)
- .. "/" .. tostring(t))
- end
- pass("ok")
-@@ -486,7 +489,7 @@ end
-
-
- ------------------------------------------------------------------------
--function test_nonblocking(size)
-+function test_nonblocking(size)
- reconnect()
- printf("testing " .. 2*size .. " bytes: ")
- remote(string.format([[
-@@ -545,7 +548,7 @@ function test_readafterclose()
- data:close()
- data = nil
- ]]))
-- data:close()
-+ data:close()
- back, err, partial = data:receive("*a")
- assert(back == nil and err == "closed", "should have returned 'closed'")
- pass("ok")
-@@ -555,7 +558,7 @@ function test_readafterclose()
- data:close()
- data = nil
- ]]))
-- data:close()
-+ data:close()
- back, err, partial = data:receive()
- assert(back == nil and err == "closed", "should have returned 'closed'")
- pass("ok")
-@@ -565,7 +568,7 @@ function test_readafterclose()
- data:close()
- data = nil
- ]]))
-- data:close()
-+ data:close()
- back, err, partial = data:receive(1)
- assert(back == nil and err == "closed", "should have returned 'closed'")
- pass("ok")
-@@ -575,7 +578,7 @@ function test_readafterclose()
- data:close()
- data = nil
- ]]))
-- data:close()
-+ data:close()
- back, err, partial = data:receive(0)
- assert(back == nil and err == "closed", "should have returned 'closed'")
- pass("ok")
-@@ -590,10 +593,10 @@ function test_writeafterclose()
- data = nil
- ]]))
- local sent, err, errsent
-- while not err do
-+ while not err do
- sent, err, errsent, time = data:send(str)
- end
-- assert(err == "closed", "should have returned 'closed'")
-+ assert(err == "closed", "got " .. err .. " instead of 'closed'")
- pass("ok")
- end
-
-@@ -648,25 +651,24 @@ else io.stderr:write("Warning! IPv6 does not support!\n") end
- end
-
- local udp_methods = {
-- "close",
-+ "close",
- "dirty",
- "getfamily",
- "getfd",
- "getoption",
- "getpeername",
- "getsockname",
-- "receive",
-- "receivefrom",
-- "send",
-- "sendto",
-- "setfd",
-+ "receive",
-+ "receivefrom",
-+ "send",
-+ "sendto",
-+ "setfd",
- "setoption",
- "setpeername",
- "setsockname",
- "settimeout"
- }
-
--
- ------------------------------------------------------------------------
- test_methods(socket.udp(), udp_methods)
- do local sock = socket.tcp6()
-@@ -674,6 +676,9 @@ if sock then test_methods(socket.udp6(), udp_methods)
- else io.stderr:write("Warning! IPv6 does not support!\n") end
- end
-
-+test("closed connection detection: ")
-+test_closed()
-+
- test("partial receive")
- test_partialrecv()
-
-@@ -697,9 +702,6 @@ rebind_test()
- test("active close: ")
- active_close()
-
--test("closed connection detection: ")
--test_closed()
--
- test("accept function: ")
- accept_timeout()
- accept_errors()
-diff --git a/test/testsrvr.lua b/test/testsrvr.lua
-index 72b93ab..1eb2d5b 100644
---- a/test/testsrvr.lua
-+++ b/test/testsrvr.lua
-@@ -6,7 +6,7 @@ ack = "\n";
- while 1 do
- print("server: waiting for client connection...");
- control = assert(server:accept());
-- while 1 do
-+ while 1 do
- command, emsg = control:receive();
- if emsg == "closed" then
- control:close()
-diff --git a/test/udpconnectclnt.lua b/test/udpconnectclnt.lua
-index effe13a..ad6ab6a 100644
---- a/test/udpconnectclnt.lua
-+++ b/test/udpconnectclnt.lua
-@@ -1,7 +1,7 @@
- local socket = require"socket"
- local udp = socket.udp
- local localhost = "127.0.0.1"
--local port = arg[1]
-+local port = assert(arg[1], "missing port argument")
-
- se = udp(); se:setoption("reuseaddr", true)
- se:setsockname(localhost, 5062)
-diff --git a/win32.cmd b/win32.cmd
-index 48522f0..3045721 100644
---- a/win32.cmd
-+++ b/win32.cmd
-@@ -1,12 +1 @@
--make PLAT=win32 LUAV=5.2 LUAINC_win32='c:\cygwin\home\diego\build\include' LUALIB_win32='c:\cygwin\home\diego\build\bin\release'
--
--#!/bin/sh
--for p in Release Debug x64/Release x64/Debug; do
-- for el in mime socket; do
-- for e in dll lib; do
-- cp $p/$el/core.$e ../bin/$p/$el/
-- done;
-- done;
-- cp src/ltn12.lua src/socket.lua src/mime.lua ../bin/$p/
-- cp src/http.lua src/url.lua src/tp.lua src/ftp.lua src/headers.lua src/smtp.lua ../bin/$p/socket/
--done;
-+make LUAPREFIX_win32='c:\cygwin\home\diego\vc12' LUAV=5.1 PLAT=win32 LUALIBNAME_win32=lualib.lib PLATFORM_win32=Debug install-both
diff --git a/user/lua-socket/lua-cflags.patch b/user/lua-socket/lua-cflags.patch
deleted file mode 100644
index c1da89644..000000000
--- a/user/lua-socket/lua-cflags.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-diff --git a/src/makefile b/src/makefile
-index adf687f..c2abddc 100644
---- a/src/makefile
-+++ b/src/makefile
-@@ -160,6 +160,8 @@ SOCKET_macosx=usocket.o
- #------
- # Compiler and linker settings
- # for Linux
-+LUAPC=lua
-+LUA_CFLAGS=$(shell pkg-config --cflags $(LUAPC))
- SO_linux=so
- O_linux=o
- CC_linux=gcc
-@@ -167,7 +169,7 @@ DEF_linux=-DLUASOCKET_$(DEBUG) \
- -DLUASOCKET_API='__attribute__((visibility("default")))' \
- -DUNIX_API='__attribute__((visibility("default")))' \
- -DMIME_API='__attribute__((visibility("default")))'
--CFLAGS_linux= -I$(LUAINC) $(DEF) -Wall -Wshadow -Wextra \
-+CFLAGS_linux= $(LUA_CFLAGS) -I$(LUAINC) $(DEF) -Wall -Wshadow -Wextra \
- -Wimplicit -O2 -ggdb3 -fpic -fvisibility=hidden
- LDFLAGS_linux=-O -shared -fpic -o
- LD_linux=gcc
diff --git a/user/lua-yaml/APKBUILD b/user/lua-yaml/APKBUILD
new file mode 100644
index 000000000..f252b3a7b
--- /dev/null
+++ b/user/lua-yaml/APKBUILD
@@ -0,0 +1,25 @@
+# Contributor: Alyx Wolcott <alyx@leuhta.com>
+# Maintainer: Alyx Wolcott <alyx@leuhta.com>
+pkgname=lua-yaml
+pkgver=6.2.4
+pkgrel=0
+pkgdesc="LibYAML binding for Lua"
+url="https://gvvaughan.github.io/lyaml/"
+arch="all"
+options="!check" # No tests, sweet.
+license="MIT"
+depends="lua5.3"
+makedepends="lua5.3-dev yaml-dev"
+source="$pkgname-$pkgver.tar.gz::https://github.com/gvvaughan/lyaml/archive/v$pkgver.tar.gz"
+builddir="$srcdir/lyaml-$pkgver"
+
+build () {
+ ./build-aux/luke PREFOX=$pkgdir/usr VERSION="${pkgver}"
+}
+
+package() {
+ mkdir -p $pkgdir/usr
+ ./build-aux/luke PREFIX=$pkgdir/usr install
+}
+
+sha512sums="92dea86a3b1d648093d2134ea4c558432b0861942aa141359d1ca9d7bc55f33a62bb38e12fd653d69139e0a6f0ea6202a9e8c57f750a065d35f0dd674eacaf8a lua-yaml-6.2.4.tar.gz"
diff --git a/user/lua5.3/APKBUILD b/user/lua5.3/APKBUILD
new file mode 100644
index 000000000..5786668d5
--- /dev/null
+++ b/user/lua5.3/APKBUILD
@@ -0,0 +1,139 @@
+# Maintainer:
+pkgname=lua5.3
+_pkgname=lua
+pkgver=5.3.5
+_luaver=${pkgname#lua}
+pkgrel=2
+pkgdesc="Embeddable programming language"
+url="https://www.lua.org/"
+arch="all"
+license="MIT"
+ldpath="/usr/lib/$pkgname"
+depends=""
+depends_dev="$pkgname"
+makedepends="libtool autoconf automake linenoise-dev"
+provides="lua"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
+source="https://www.lua.org/ftp/$_pkgname-$pkgver.tar.gz
+ lua-5.3-make.patch
+ lua-5.3-module_paths.patch
+ linenoise.patch
+ CVE-2019-6706.patch
+ CVE-2020-24370.patch
+ "
+builddir="$srcdir/$_pkgname-$pkgver"
+
+# secfixes: lua
+# 5.3.5-r2:
+# - CVE-2020-24370
+# 5.3.5-r1:
+# - CVE-2019-6706
+
+prepare() {
+ default_prepare
+
+ # disable readline
+ sed -i '/#define LUA_USE_READLINE/d' src/luaconf.h
+
+ # we use libtool
+ cat > configure.ac <<-EOF
+ top_buildir=.
+
+ AC_INIT(src/luaconf.h)
+ AC_PROG_LIBTOOL
+ AC_OUTPUT()
+ EOF
+ libtoolize --force --install && aclocal && autoconf
+}
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr
+
+ cd src
+ make V=${pkgver%.*} \
+ CFLAGS="-DLUA_USE_LINUX -DLUA_COMPAT_5_2 -DLUA_USE_LINENOISE" \
+ SYSLDFLAGS="$LDFLAGS" \
+ RPATH="/usr/lib" \
+ LIB_LIBS="-lpthread -lm -ldl -llinenoise" \
+ alpine_all
+}
+
+check() {
+ make test
+}
+
+package() {
+ make V=${pkgver%.*} \
+ INSTALL_TOP="$pkgdir"/usr \
+ INSTALL_INC="$pkgdir"/usr/include/$pkgname \
+ INSTALL_LIB="$pkgdir"/usr/lib/$pkgname \
+ alpine_install
+
+ for _solib in "$pkgdir"/usr/lib/$pkgname/*.so.*; do
+ ln -s $pkgname/${_solib##*/} "$pkgdir"/usr/lib/${_solib##*/}
+ done
+
+ install -D -m 644 doc/lua.1 "$pkgdir"/usr/share/man/man1/lua.1
+ install -D -m 644 doc/luac.1 "$pkgdir"/usr/share/man/man1/luac.1
+
+ install -d "$pkgdir"/usr/lib/pkgconfig
+ cat > "$pkgdir"/usr/lib/pkgconfig/lua.pc <<-EOF
+ # lua.pc -- pkg-config data for Lua
+
+ # vars from install Makefile
+
+ # grep '^V=' ../Makefile
+ V= ${_luaver}
+ # grep '^R=' ../Makefile
+ R= ${pkgver}
+
+ # grep '^INSTALL_.*=' ../Makefile | sed 's/INSTALL_TOP/prefix/'
+ prefix= /usr
+ INSTALL_BIN= \${prefix}/bin
+ INSTALL_INC= \${prefix}/include
+ INSTALL_LIB= \${prefix}/lib
+ INSTALL_MAN= \${prefix}/man/man1
+ INSTALL_LMOD= \${prefix}/share/lua/\${V}
+ INSTALL_CMOD= \${prefix}/lib/lua/\${V}
+
+ # canonical vars
+ exec_prefix=\${prefix}
+ libdir=\${exec_prefix}/lib/$pkgname
+ includedir=\${prefix}/include/$pkgname
+
+ Name: Lua
+ Description: An Extensible Extension Language
+ Version: \${R}
+ Requires:
+ Libs: -L\${libdir} -llua -lm
+ Cflags: -I\${includedir}
+
+ # (end of lua.pc)
+ EOF
+
+}
+
+dev() {
+ default_dev
+
+ mkdir -p "$subpkgdir"/usr/lib/$pkgname
+ mv "$pkgdir"/usr/lib/$pkgname/liblua.so "$subpkgdir"/usr/lib/$pkgname/
+}
+
+libs() {
+ pkgdesc="Lua dynamic library runtime"
+ replaces="lua"
+
+ mkdir -p "$subpkgdir"/usr
+ mv "$pkgdir"/usr/lib "$subpkgdir"/usr/
+}
+
+sha512sums="4f9516acc4659dfd0a9e911bfa00c0788f0ad9348e5724fe8fb17aac59e9c0060a64378f82be86f8534e49c6c013e7488ad17321bafcc787831d3d67406bd0f4 lua-5.3.5.tar.gz
+1bc6c623024c1738155b30ff9c0edcce0f336edc25aa20c3a1400c859421ea2015d75175cce8d515e055ac3e96028426b74812e04022af18a0ed4c4601556027 lua-5.3-make.patch
+bc68772390dc8d8940176af0b9fbacc0af61891b5d27de5f1466a4e7f9b3291a1c08ba5add829bc96b789a53fa5ec2dadaa096ca6eabe54ec27724fa2810940f lua-5.3-module_paths.patch
+49880d1131b7bd2a3169a26f401769a91d9a6a62cefe68aa5a89097139289588b7ef753535a2d0ba7f45c0369c760554940fd810716b7b1353deace32432fcfe linenoise.patch
+77755c083630d48404178012d5947230675311a15f0f5e30efa72004edf3124615fa9080b739240213c013efb015689e09ee653a41d560964a3df78a8fe0fd8d CVE-2019-6706.patch
+0c28366d352e3e6660413d16c1deaa0b1c6070170c13d95ae7a48b6b39c728a16d3f2a6068f665b3ec3e17f4f69d006625af074a4ddb51c8f3845d567c0dd809 CVE-2020-24370.patch"
diff --git a/user/lua5.3/CVE-2019-6706.patch b/user/lua5.3/CVE-2019-6706.patch
new file mode 100644
index 000000000..c35f81a4a
--- /dev/null
+++ b/user/lua5.3/CVE-2019-6706.patch
@@ -0,0 +1,27 @@
+Lifted from Ubuntu:
+
+https://launchpad.net/ubuntu/+archive/primary/+sourcefiles/lua5.3/5.3.3-1.1ubuntu1/lua5.3_5.3.3-1.1ubuntu1.debian.tar.xz
+0c7d89b1413cc55f3aff5bbd40e5726b7d69b856befbbf32f00f58588dc4ce81
+
+--- a/src/lapi.c
++++ b/src/lapi.c
+@@ -1285,14 +1285,14 @@ LUA_API void *lua_upvalueid (lua_State *
+
+ LUA_API void lua_upvaluejoin (lua_State *L, int fidx1, int n1,
+ int fidx2, int n2) {
+- LClosure *f1;
+- UpVal **up1 = getupvalref(L, fidx1, n1, &f1);
++ UpVal **up1 = getupvalref(L, fidx1, n1, NULL); /* the last parameter not needed */
+ UpVal **up2 = getupvalref(L, fidx2, n2, NULL);
++ if (*up1 == *up2) return; /* Already joined */
++ (*up2)->refcount++;
++ if (upisopen(*up2)) (*up2)->u.open.touched = 1;
++ luaC_upvalbarrier(L, *up2);
+ luaC_upvdeccount(L, *up1);
+ *up1 = *up2;
+- (*up1)->refcount++;
+- if (upisopen(*up1)) (*up1)->u.open.touched = 1;
+- luaC_upvalbarrier(L, *up1);
+ }
+
+
diff --git a/user/lua5.3/CVE-2020-24370.patch b/user/lua5.3/CVE-2020-24370.patch
new file mode 100644
index 000000000..0bfce24b1
--- /dev/null
+++ b/user/lua5.3/CVE-2020-24370.patch
@@ -0,0 +1,36 @@
+From b5bc89846721375fe30772eb8c5ab2786f362bf9 Mon Sep 17 00:00:00 2001
+From: Roberto Ierusalimschy <roberto@inf.puc-rio.br>
+Date: Mon, 3 Aug 2020 16:25:28 -0300
+Subject: [PATCH] Fixed bug: Negation overflow in getlocal/setlocal
+
+---
+ ldebug.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/ldebug.c b/ldebug.c
+index e1389296e..bb0e1d4ac 100644
+--- a/src/ldebug.c
++++ b/src/ldebug.c
+@@ -133,10 +133,11 @@ static const char *upvalname (Proto *p, int uv) {
+
+ static const char *findvararg (CallInfo *ci, int n, StkId *pos) {
+ int nparams = clLvalue(ci->func)->p->numparams;
+- if (n >= cast_int(ci->u.l.base - ci->func) - nparams)
++ int nvararg = cast_int(ci->u.l.base - ci->func) - nparams;
++ if (n <= -nvararg)
+ return NULL; /* no such vararg */
+ else {
+- *pos = ci->func + nparams + n;
++ *pos = ci->func + nparams - n;
+ return "(*vararg)"; /* generic name for any vararg */
+ }
+ }
+@@ -148,7 +149,7 @@ static const char *findlocal (lua_State *L, CallInfo *ci, int n,
+ StkId base;
+ if (isLua(ci)) {
+ if (n < 0) /* access to vararg values? */
+- return findvararg(ci, -n, pos);
++ return findvararg(ci, n, pos);
+ else {
+ base = ci->u.l.base;
+ name = luaF_getlocalname(ci_func(ci)->p, n, currentpc(ci));
diff --git a/user/lua5.3/linenoise.patch b/user/lua5.3/linenoise.patch
new file mode 100644
index 000000000..fdca6205a
--- /dev/null
+++ b/user/lua5.3/linenoise.patch
@@ -0,0 +1,18 @@
+--- ./src/lua.c.orig
++++ ./src/lua.c
+@@ -85,6 +85,15 @@
+ add_history(lua_tostring(L, idx)); /* add it to history */
+ #define lua_freeline(L,b) ((void)L, free(b))
+
++#elif defined(LUA_USE_LINENOISE)/* }{ */
++
++#include "linenoise.h"
++#define lua_readline(L,b,p) ((void)L, ((b)=linenoise(p)) != NULL)
++#define lua_saveline(L,idx) \
++ if (lua_rawlen(L,idx) > 0) /* non-empty line? */ \
++ linenoiseHistoryAdd(lua_tostring(L, idx)); /* add it to history */
++#define lua_freeline(L,b) ((void)L, free(b))
++
+ #else /* }{ */
+
+ #define lua_readline(L,b,p) \
diff --git a/user/lua5.3/lua-5.3-make.patch b/user/lua5.3/lua-5.3-make.patch
new file mode 100644
index 000000000..349218607
--- /dev/null
+++ b/user/lua5.3/lua-5.3-make.patch
@@ -0,0 +1,74 @@
+diff --git a/Makefile b/Makefile
+index 7fa91c8..c85ede2 100644
+--- a/Makefile
++++ b/Makefile
+@@ -112,3 +112,18 @@ pc:
+ .PHONY: all $(PLATS) clean test install local none dummy echo pecho lecho
+
+ # (end of Makefile)
++
++# Use libtool for binary installs, etc.
++
++export V
++export LIBTOOL = ../libtool --quiet --tag=CC
++# See libtool manual about how to set this
++
++alpine_clean:
++ cd src; $(MAKE) $@
++
++alpine_install:
++ mkdir -p $(INSTALL_BIN) $(INSTALL_INC) $(INSTALL_LIB)
++ cd src; $(LIBTOOL) --mode=install $(INSTALL_EXEC) lua luac $(INSTALL_BIN)
++ cd src; $(INSTALL_DATA) $(TO_INC) $(INSTALL_INC)
++ cd src; $(LIBTOOL) --mode=install $(INSTALL_DATA) liblua.la $(INSTALL_LIB)
+diff --git a/src/Makefile b/src/Makefile
+index 2e7a412..a72f342 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -59,10 +59,10 @@ $(LUA_A): $(BASE_O)
+ $(AR) $@ $(BASE_O)
+ $(RANLIB) $@
+
+-$(LUA_T): $(LUA_O) $(LUA_A)
++origin$(LUA_T): $(LUA_O) $(LUA_A)
+ $(CC) -o $@ $(LDFLAGS) $(LUA_O) $(LUA_A) $(LIBS)
+
+-$(LUAC_T): $(LUAC_O) $(LUA_A)
++origin$(LUAC_T): $(LUAC_O) $(LUA_A)
+ $(CC) -o $@ $(LDFLAGS) $(LUAC_O) $(LUA_A) $(LIBS)
+
+ clean:
+@@ -194,4 +194,33 @@ lvm.o: lvm.c lprefix.h lua.h luaconf.h ldebug.h lstate.h lobject.h \
+ lzio.o: lzio.c lprefix.h lua.h luaconf.h llimits.h lmem.h lstate.h \
+ lobject.h ltm.h lzio.h
+
++
++export LIBTOOL = ../libtool --quiet --tag=CC
++export LIB_VERSION = 0:0:0
++
++# The following rules use libtool for compiling and linking in order to
++# provide shared library support.
++
++LIB_NAME = liblua.la
++LIB_OBJS = $(CORE_O:.o=.lo) $(LIB_O:.o=.lo)
++
++%.lo %.o: %.c
++ $(LIBTOOL) --mode=compile $(CC) -c $(CPPFLAGS) $(CFLAGS) -o $@ $<
++
++$(LIB_NAME): $(LIB_OBJS)
++ $(LIBTOOL) --mode=link $(CC) -version-info $(LIB_VERSION) -release $(V) \
++ -rpath $(RPATH) $(LDFLAGS) -o $(LIB_NAME) $(LIB_OBJS) $(LIB_LIBS)
++
++$(LUA_T): $(LUA_O:.o=.lo) $(LIB_NAME)
++ $(LIBTOOL) --mode=link $(CC) -export-dynamic $(LDFLAGS) -o $@ \
++ $(LUA_O:.o=.lo) $(LIB_NAME) $(LUA_LIBS)
++
++$(LUAC_T): $(LUAC_O:.o=.lo) $(LIB_NAME)
++ $(LIBTOOL) --mode=link $(CC) -static $(LDFLAGS) -o $@ $(LUAC_O:.o=.lo) \
++ $(LIB_NAME)
++
++alpine_clean:
++ $(LIBTOOL) --mode=clean $(RM) $(ALL_O:.o=.lo) $(LIB_NAME) lua luac
++
++alpine_all: $(LIB_NAME) $(LUA_T) $(LUAC_T)
+ # (end of Makefile)
diff --git a/user/lua5.3/lua-5.3-module_paths.patch b/user/lua5.3/lua-5.3-module_paths.patch
new file mode 100644
index 000000000..313d9c609
--- /dev/null
+++ b/user/lua5.3/lua-5.3-module_paths.patch
@@ -0,0 +1,31 @@
+diff --git a/src/luaconf.h b/src/luaconf.h
+index fd28d21..4c65295 100644
+--- a/src/luaconf.h
++++ b/src/luaconf.h
+@@ -203,12 +201,25 @@
+ #define LUA_ROOT "/usr/local/"
+ #define LUA_LDIR LUA_ROOT "share/lua/" LUA_VDIR "/"
+ #define LUA_CDIR LUA_ROOT "lib/lua/" LUA_VDIR "/"
++
++#define LUA_VENDOR_ROOT "/usr/"
++/* Path for version-specific Lua modules. */
++#define LUA_VENDOR_LDIR LUA_VENDOR_ROOT "share/lua/" LUA_VDIR "/"
++/* Path for Lua modules that are compatible with Lua 5.1 and newer. */
++#define LUA_VENDOR_COMMON_LDIR LUA_VENDOR_ROOT "share/lua/common/"
++#define LUA_VENDOR_CDIR LUA_VENDOR_ROOT "lib/lua/" LUA_VDIR "/"
++
+ #define LUA_PATH_DEFAULT \
+ LUA_LDIR"?.lua;" LUA_LDIR"?/init.lua;" \
+ LUA_CDIR"?.lua;" LUA_CDIR"?/init.lua;" \
++ LUA_VENDOR_LDIR"?.lua;" LUA_VENDOR_LDIR"?/init.lua;" \
++ LUA_VENDOR_CDIR"?.lua;" LUA_VENDOR_CDIR"?/init.lua;" \
++ LUA_VENDOR_COMMON_LDIR"?.lua;" LUA_VENDOR_COMMON_LDIR"?/init.lua;" \
+ "./?.lua;" "./?/init.lua"
+ #define LUA_CPATH_DEFAULT \
+- LUA_CDIR"?.so;" LUA_CDIR"loadall.so;" "./?.so"
++ LUA_CDIR"?.so;" LUA_CDIR"loadall.so;" \
++ LUA_VENDOR_CDIR"?.so;" LUA_VENDOR_CDIR"loadall.so;" \
++ "./?.so"
+ #endif /* } */
+
+
diff --git a/user/luarocks/APKBUILD b/user/luarocks/APKBUILD
index 3a536a7bd..fe0a75290 100644
--- a/user/luarocks/APKBUILD
+++ b/user/luarocks/APKBUILD
@@ -1,30 +1,31 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=luarocks
-pkgver=3.0.4
+pkgver=3.9.2
pkgrel=0
pkgdesc="Package manager for Lua software"
url="https://luarocks.org/"
arch="noarch"
options="!check" # No test suite
license="MIT"
-depends=""
-makedepends="lua5.3-dev"
-source="https://luarocks.github.io/luarocks/releases/luarocks-$pkgver.tar.gz"
+depends="lua5.3-dev"
+makedepends=""
+source="https://luarocks.github.io/luarocks/releases/luarocks-$pkgver.tar.gz
+ config.lua"
build() {
- cd "$builddir"
./configure \
--prefix=/usr \
--sysconfdir=/etc \
--lua-version=5.3 \
- --rocks-tree=/usr/share/lua/5.3
+ --rocks-tree=/usr/local
make build
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
+ install -D -m 644 "$srcdir"/config.lua "$pkgdir"/etc/$pkgname/config.lua
}
-sha512sums="65a28f0dca4fc45a0ee413493d0e4287de9c495b27c0366d955a16d03adf94b36cb9dbeda00fb74045809eb5048b78ea5158257b5ddafa924dc8ff0f017e95f8 luarocks-3.0.4.tar.gz"
+sha512sums="7e93164bdcf35338e993822931a8e59957ab69c6e23236a7a075649c2f7cd173305c4ca6e9d115fc5e282cb76c21754d7adac92b21885006e5ee3bc06a9d0059 luarocks-3.9.2.tar.gz
+5845d5643c3eeb6d4af6d919a588c5253c91e6a0b278116b4cd855437fc48ac64970fd3ef758c135bc0536ddc1aaa16b01c50e33c864f59aeef1ccced0d01d82 config.lua"
diff --git a/user/luarocks/config.lua b/user/luarocks/config.lua
new file mode 100644
index 000000000..beb6ce586
--- /dev/null
+++ b/user/luarocks/config.lua
@@ -0,0 +1,17 @@
+rocks_trees = {
+ -- User-local Lua and Lua/C modules.
+ { name = 'user',
+ root = home..'/.luarocks' },
+ -- System-wide Lua and Lua/C modules for specific Lua version installed by apk.
+ { name = 'distro-modules',
+ root = '/usr' },
+ -- System-wide Lua modules compatible with Lua 5.1-5.4 installed by apk.
+ { name = 'distro-modules-common',
+ root = '/usr',
+ lua_dir = '/usr/share/lua/common',
+ rocks_dir = '/usr/lib/luarocks/rocks-common' },
+ -- System-wide Lua and Lua/C modules installed by user.
+ { name = 'system',
+ root = '/usr/local' },
+}
+deps_mode = 'all'
diff --git a/user/luit/APKBUILD b/user/luit/APKBUILD
index 09e135e12..5464e3d9d 100644
--- a/user/luit/APKBUILD
+++ b/user/luit/APKBUILD
@@ -13,13 +13,11 @@ subpackages="$pkgname-doc"
source="https://www.x.org/releases/individual/app/luit-$pkgver.tar.bz2"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,12 +29,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/lutok/APKBUILD b/user/lutok/APKBUILD
new file mode 100644
index 000000000..21ee0ad32
--- /dev/null
+++ b/user/lutok/APKBUILD
@@ -0,0 +1,40 @@
+# Maintainer:
+pkgname=lutok
+pkgver=0.4
+pkgrel=2
+pkgdesc="Lightweight C++ API for Lua"
+url="https://github.com/jmmv/lutok"
+arch="all"
+license="BSD-3-Clause"
+depends_dev="lua5.3-dev"
+makedepends="$depends_dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/jmmv/lutok/releases/download/lutok-$pkgver/lutok-$pkgver.tar.gz"
+
+prepare() {
+ default_prepare
+ update_config_sub
+}
+
+build() {
+ LUA_CFLAGS=$(pkg-config --cflags lua) \
+ LUA_LIBS=$(pkg-config --libs lua) \
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make -j1 DESTDIR="$pkgdir" install
+}
+
+sha512sums="664f30099bfbb30978e24068a9232a4ff1b5b1839c601bf784f35f6bb1394558067495093a3b0343c94e756d2e4186a32a8227baf5934c15c45905f7c0a5d19c lutok-0.4.tar.gz"
diff --git a/user/lximage-qt/APKBUILD b/user/lximage-qt/APKBUILD
index 41752c57a..a55458045 100644
--- a/user/lximage-qt/APKBUILD
+++ b/user/lximage-qt/APKBUILD
@@ -1,25 +1,24 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lximage-qt
-pkgver=0.14.1
+pkgver=1.4.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="Image viewer and screenshot tool for LXQt"
-url="https://lxqt.org/"
+url="https://lxqt.github.io/"
arch="all"
options="!check" # No test suite.
license="GPL-2.0+"
depends=""
-makedepends="cmake extra-cmake-modules lxqt-build-tools>=0.6.0 libexif-dev
+makedepends="cmake extra-cmake-modules lxqt-build-tools>=$_lxqt libexif-dev
libfm-qt-dev>=${pkgver%.*}.0 qt5-qtx11extras-dev qt5-qttools-dev qt5-qtsvg-dev
kwindowsystem-dev"
source="https://github.com/lxqt/lximage-qt/releases/download/$pkgver/lximage-qt-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="61286ade177a41d954e7b624b9f1320dc64fe6ef5ccc5ffbde5edee1e8cb00f3691b6a04f8eac4314b3fb622ba0613eb4d1851358f3a8c12e4a69d990c1ce3cd lximage-qt-0.14.1.tar.xz"
+sha512sums="c0dea9418890745de685c7df228ceb849fa21781764c2089481bea89526842e5e8f0972e032ba9c52b07c32202ed284d977f47ace598c44880dff661d76cd125 lximage-qt-1.4.0.tar.xz"
diff --git a/user/lxmenu-data/APKBUILD b/user/lxmenu-data/APKBUILD
deleted file mode 100644
index 846d44da3..000000000
--- a/user/lxmenu-data/APKBUILD
+++ /dev/null
@@ -1,36 +0,0 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-pkgname=lxmenu-data
-pkgver=0.1.5
-pkgrel=1
-pkgdesc="Menu definition files for LXQt"
-url="https://lxqt.org"
-arch="noarch"
-options="!check" # No test suite.
-license="LGPL-2.1+"
-makedepends="automake autoconf glib-dev intltool"
-source="lxmenu-data-$pkgver.tar.gz::https://github.com/lxde/lxmenu-data/archive/$pkgver.tar.gz"
-
-prepare() {
- default_prepare
- cd "$builddir"
- ./autogen.sh
-}
-
-build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man
- make
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
-}
-
-sha512sums="78c56666a3d8c1e6bc7cadd4f1f9ba3236def216676808f4fa19663bf93ce59ea5b2591b20ad40373167ee3e37634844e20a2e20e445e52b255d3fbfda23f8f3 lxmenu-data-0.1.5.tar.gz"
diff --git a/user/lxqt-about/APKBUILD b/user/lxqt-about/APKBUILD
index 8a6f865c9..5b7f38e9f 100644
--- a/user/lxqt-about/APKBUILD
+++ b/user/lxqt-about/APKBUILD
@@ -1,24 +1,23 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lxqt-about
-pkgver=0.14.1
+pkgver=1.4.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="Dialog window providing information about LXQt and the running system"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
arch="all"
options="!check" # No test suite.
license="LGPL-2.1+"
depends=""
makedepends="cmake extra-cmake-modules qt5-qttools-dev kwindowsystem-dev
- lxqt-build-tools>=0.6.0 liblxqt-dev>=${pkgver%.*}.0"
+ lxqt-build-tools>=$_lxqt liblxqt-dev>=${pkgver%.*}.0"
source="https://github.com/lxqt/lxqt-about/releases/download/$pkgver/lxqt-about-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -26,13 +25,12 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="09cbb4c6c331b16b551d1b63ad4643f424fbaa35cfa9e2d4c70393fae499d403bf8a70c8105d258bd84200d06862033bfe0a082500e794b0db10df38d27b407a lxqt-about-0.14.1.tar.xz"
+sha512sums="308ffc83d8d9a1b835670cb3ea97b97859922bbd9026d1b8b7bd98949030e42bf96a4dcb6363f24d00fd75733c436e4dbfe29e37b4b8c6cda07460ac1ec05241 lxqt-about-1.4.0.tar.xz"
diff --git a/user/lxqt-admin/APKBUILD b/user/lxqt-admin/APKBUILD
index 2dc1b1db3..9cb7421aa 100644
--- a/user/lxqt-admin/APKBUILD
+++ b/user/lxqt-admin/APKBUILD
@@ -1,24 +1,23 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lxqt-admin
-pkgver=0.14.1
+pkgver=1.4.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="Administrative tools for LXQt"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
arch="all"
options="!check" # No test suite.
license="LGPL-2.1+"
depends="lxqt-policykit"
makedepends="cmake extra-cmake-modules qt5-qttools-dev kwindowsystem-dev
- lxqt-build-tools>=0.6.0 liblxqt-dev>=${pkgver%.*}.0 polkit-qt-1-dev"
+ lxqt-build-tools>=$_lxqt liblxqt-dev>=${pkgver%.*} polkit-qt-1-dev"
source="https://github.com/lxqt/lxqt-admin/releases/download/$pkgver/lxqt-admin-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -26,13 +25,12 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="bd6272a3042a71e9e00b2ba10be2575649c2d2750a4e00a6e11adaae6b91ccab5e3cf79a8ceb7bfbe808ec80c139b93e02cd96990f80b68a77a974c063e6a373 lxqt-admin-0.14.1.tar.xz"
+sha512sums="f6292006f308cd435243577c5f6cf7e7ebb6cb3ed069b26a3e8cf295e299e482255f1d39801db1e5f94cf780ec6621c8100e2ab5a2c2d5599551f1c7a2c19610 lxqt-admin-1.4.0.tar.xz"
diff --git a/user/lxqt-archiver/APKBUILD b/user/lxqt-archiver/APKBUILD
new file mode 100644
index 000000000..acd4780bb
--- /dev/null
+++ b/user/lxqt-archiver/APKBUILD
@@ -0,0 +1,48 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=lxqt-archiver
+pkgver=0.9.0
+_lxqt=1.4.0
+_lxqt_build=0.13.0
+pkgrel=0
+pkgdesc="Archive management utility for the LXQt desktop"
+url="https://lxqt.github.io/"
+arch="all"
+options="!check" # No test suite
+license="GPL-2.0+"
+depends=""
+makedepends="cmake extra-cmake-modules json-glib-dev libfm-qt-dev>=$_lxqt
+ lxqt-build-tools>=$_lxqt_build qt5-qttools-dev qt5-qtx11extras-dev"
+source="https://github.com/lxqt/lxqt-archiver/releases/download/$pkgver/lxqt-archiver-$pkgver.tar.xz"
+builddir="$srcdir/$pkgname-$pkgver/build"
+
+prepare() {
+ mkdir -p "$builddir" && cd "$builddir"/..
+ default_prepare
+}
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ ..
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest ..
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="42ee097ae7fb17dbd00d9b94e8673664911c73bb5f353d08177c78d548eb24c39aa1daf57347eeefcb46ec63a8702c37f63ca2b42fd22bc85aed8f7a41585f3c lxqt-archiver-0.9.0.tar.xz"
diff --git a/user/lxqt-build-tools/APKBUILD b/user/lxqt-build-tools/APKBUILD
index 1447fdee0..6965eb099 100644
--- a/user/lxqt-build-tools/APKBUILD
+++ b/user/lxqt-build-tools/APKBUILD
@@ -1,38 +1,36 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lxqt-build-tools
-pkgver=0.6.0
+pkgver=0.13.0
pkgrel=0
pkgdesc="Toolchain for building and packaging LXQt"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
arch="noarch"
# no tests to run; this package just provides a common base for scaffolding.
options="!check"
license="BSD-3-Clause"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev"
-source="lxqt-build-tools-$pkgver.tar.gz::https://github.com/lxde/lxqt-build-tools/archive/$pkgver.tar.gz"
+subpackages=""
+source="https://github.com/lxqt/$pkgname/releases/download/$pkgver/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
-DBUILD_SHARED_LIBS=True \
- -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="701b2f239daeb72dd94e2d72920e85e161daeb35de24023d81bb271c3abf36916d83b4b47b046e400e865e71ee236cbfc0a7047f9b0a3529cd9b8363279fb88a lxqt-build-tools-0.6.0.tar.gz"
+sha512sums="ffb300159d6bbbdbe9d43d261a5028342f24057c943cf8dab5093d53b72bf5700de8f545914d454993e949d64aba77e3d01cbe68e8a4b4f6ca9f9f9693de3e0b lxqt-build-tools-0.13.0.tar.xz"
diff --git a/user/lxqt-config/APKBUILD b/user/lxqt-config/APKBUILD
index 0198540b4..3b690abea 100644
--- a/user/lxqt-config/APKBUILD
+++ b/user/lxqt-config/APKBUILD
@@ -1,44 +1,44 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lxqt-config
-pkgver=0.14.1
+pkgver=1.4.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="Collection of tools for configuring LXQt and the underlying system"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
arch="all"
options="!check" # No test suite.
license="LGPL-2.1+"
-depends=""
+depends="lxqt-menu-data"
makedepends="cmake extra-cmake-modules qt5-qtsvg-dev qt5-qttools-dev
- liblxqt-dev>=${pkgver%.*}.0 lxqt-build-tools>=0.6.0 libxcursor-dev eudev-dev
- kwindowsystem-dev libkscreen-dev xf86-input-libinput-dev libxi-dev"
+ liblxqt-dev>=${pkgver%.*} lxqt-build-tools>=$_lxqt
+ libxcursor-dev eudev-dev kwindowsystem-dev libkscreen-dev
+ xf86-input-libinput-dev libxi-dev"
subpackages="$pkgname-doc"
-source="https://github.com/lxqt/lxqt-config/releases/download/$pkgver/lxqt-config-$pkgver.tar.xz"
+source="https://github.com/lxqt/lxqt-config/releases/download/$pkgver/lxqt-config-$pkgver.tar.xz
+ revert-kscren-bump.patch"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make -j1
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -j1 -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="747644f8e0623cb2e8eadda57c7307387423152a089d5b423b06650fbf235371764a26e82363cbee9db5c1145e3fdb754e6ecdcf0930dccec375dda424c8b13f lxqt-config-0.14.1.tar.xz"
+sha512sums="a3e6722c3f63b3c7382ec84723e3a4d838d99b2c42ce731565f940873b275ef025b7bc1a570f165b7fce521eb77bb7b83b02e922bee251507b773c8de4f785fc lxqt-config-1.4.0.tar.xz
+6580b8254c457a75221faf52410de3f0a678f0e9cde719dbe7d899cade521d4674a9f8b1807647fa7a9e9ed90e8787883a8b5e7d15236872299a0c7a51ad6f5e revert-kscren-bump.patch"
diff --git a/user/lxqt-config/revert-kscren-bump.patch b/user/lxqt-config/revert-kscren-bump.patch
new file mode 100644
index 000000000..bb9461b72
--- /dev/null
+++ b/user/lxqt-config/revert-kscren-bump.patch
@@ -0,0 +1,57 @@
+diff '--color=auto' -Nurd lxqt-config-1.4.0/CMakeLists.txt lxqt-config-1.4.0.new/CMakeLists.txt
+--- lxqt-config-1.4.0/CMakeLists.txt 2023-11-05 03:36:31.000000000 -0800
++++ lxqt-config-1.4.0.new/CMakeLists.txt 2023-11-26 02:44:43.889325759 -0800
+@@ -26,7 +26,7 @@
+ set(CMAKE_AUTORCC ON)
+
+ set(KF5_MINIMUM_VERSION "5.36.0")
+-set(KF5SCREEN_MINIMUM_VERSION "5.27.0")
++set(KF5SCREEN_MINIMUM_VERSION "5.2.0")
+ set(LXQT_MINIMUM_VERSION "1.4.0")
+ set(QT_MINIMUM_VERSION "5.15.0")
+
+diff '--color=auto' -Nurd lxqt-config-1.4.0/lxqt-config-monitor/kscreenutils.cpp lxqt-config-1.4.0.new/lxqt-config-monitor/kscreenutils.cpp
+--- lxqt-config-1.4.0/lxqt-config-monitor/kscreenutils.cpp 2023-11-05 03:36:31.000000000 -0800
++++ lxqt-config-1.4.0.new/lxqt-config-monitor/kscreenutils.cpp 2023-11-26 02:45:27.458971215 -0800
+@@ -63,7 +63,7 @@
+ output->setPos(pos);
+ output->setEnabled(true);
+ //first left one as primary
+- output->setPriority(width == 0 ? 1 : 0);
++ output->setPrimary(width == 0);
+ KScreen::ModePtr mode(output->currentMode());
+ //if (!mode)
+ {
+diff '--color=auto' -Nurd lxqt-config-1.4.0/lxqt-config-monitor/loadsettings.cpp lxqt-config-1.4.0.new/lxqt-config-monitor/loadsettings.cpp
+--- lxqt-config-1.4.0/lxqt-config-monitor/loadsettings.cpp 2023-11-05 03:36:31.000000000 -0800
++++ lxqt-config-1.4.0.new/lxqt-config-monitor/loadsettings.cpp 2023-11-26 02:46:05.328663054 -0800
+@@ -133,7 +133,7 @@
+ if( !output->isConnected() )
+ continue;
+ output->setEnabled( monitor.enabled );
+- output->setPriority( monitor.primary ? 1 : 0 );
++ output->setPrimary( monitor.primary );
+ output->setPos( QPoint(monitor.xPos, monitor.yPos) );
+ output->setRotation( (KScreen::Output::Rotation)(monitor.rotation) );
+ // output->setCurrentModeId could fail. KScreen sometimes changes mode Id.
+diff '--color=auto' -Nurd lxqt-config-1.4.0/lxqt-config-monitor/monitorwidget.cpp lxqt-config-1.4.0.new/lxqt-config-monitor/monitorwidget.cpp
+--- lxqt-config-1.4.0/lxqt-config-monitor/monitorwidget.cpp 2023-11-05 03:36:31.000000000 -0800
++++ lxqt-config-1.4.0.new/lxqt-config-monitor/monitorwidget.cpp 2023-11-26 02:47:02.698196214 -0800
+@@ -138,7 +138,7 @@
+ if (config->connectedOutputs().count() == 1) {
+ setOnlyMonitor(true);
+ // There isn't always a primary output. Gross.
+- output->setPriority(1);
++ output->setPrimary(true);
+ }
+
+ ui.xPosSpinBox->setValue(output->pos().x());
+@@ -208,7 +208,7 @@
+ ui.xPosSpinBox->setVisible(idx == ExtendDisplay);
+ ui.yPosSpinBox->setVisible(idx == ExtendDisplay);
+
+- output->setPriority(idx == PrimaryDisplay ? 1 : 0);
++ output->setPrimary(idx == PrimaryDisplay);
+ if(idx == PrimaryDisplay)
+ emit primaryOutputChanged(this);
+ }
diff --git a/user/lxqt-desktop/APKBUILD b/user/lxqt-desktop/APKBUILD
index a49fea8d7..dc547e02a 100644
--- a/user/lxqt-desktop/APKBUILD
+++ b/user/lxqt-desktop/APKBUILD
@@ -1,35 +1,29 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lxqt-desktop
-pkgver=0.13.0
-pkgrel=1
+pkgver=1.2.0
+pkgrel=2
arch="noarch"
pkgdesc="Complete LXQt desktop"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
license="NCSA"
options="!check" # meta package, no tests needed.
depends="breeze breeze-icons oxygen ttf-liberation xorg-server dbus-x11 openbox
lxqt-panel lxqt-runner lxqt-qtplugin qterminal pcmanfm-qt lxqt-sudo
lxqt-session lxqt-powermanagement lxqt-policykit lxqt-openssh-askpass
lxqt-notificationd lxqt-globalkeys lxqt-config lxqt-admin lxqt-about
- lximage-qt lxqt-themes pavucontrol-qt qt5ct obconf-qt qps screengrab"
+ lximage-qt lxqt-themes pavucontrol-qt qt5ct obconf-qt qps screengrab
+ lxqt-archiver adelie-fonts adelie-lxqt-theme"
makedepends=""
-install=""
subpackages="$pkgname-doc"
source="org.adelie-linux.about-lxqt.desktop startlxqt startlxqt.1"
-builddir="$srcdir/$pkgname-$pkgver"
-
-build() {
- cd "$srcdir"
-}
package() {
- cd "$srcdir"
install -D -m644 "$srcdir"/org.adelie-linux.about-lxqt.desktop \
"$pkgdir"/usr/share/applications/org.adelie-linux.about-lxqt.desktop
install -D -m755 "$srcdir"/startlxqt "$pkgdir"/usr/bin/startlxqt
install -D -m644 "$srcdir"/startlxqt.1 "$pkgdir"/usr/share/man/man1/startlxqt.1
}
-sha512sums="e954a41cad44cad7ef3a7695c28396540556ee7bc374ee00f95c4117988d84f6989de7a030ddf11e426b895577e392100f8c5696f0cc3fdc03c2500498580af0 org.adelie-linux.about-lxqt.desktop
+sha512sums="edc4856aaeca7595def5fdea31fddf1584b3297a11f9a8d7359621acb5910e523d1795c2999c49673464d54b8bc8139dceee21d04cd193808a532ab697d2e0c0 org.adelie-linux.about-lxqt.desktop
682ed40cfaf88af1c53839bab3b7de3feaeda037a52852b3761485f4008b311e5706e5498f2874d383b0f79d555f7239629ad25f050ae05089ec6e939b43ce56 startlxqt
-4a56f5bd9364cac0cb32dd119ff209452249efff9de3be20297c1db6524dd1ef24ed7249f22a738a82dab4e61481e11dcceaf9e9474620fa1ca0b1616aa7dfe7 startlxqt.1"
+5a016d5441647a5eb28f1d123638b17e95ba37a08df1bb2f856d2e7c1d3d59742104e6dee4b064addf5df73037b1ea698f97b31d4b729d6f512c9aad88773594 startlxqt.1"
diff --git a/user/lxqt-desktop/org.adelie-linux.about-lxqt.desktop b/user/lxqt-desktop/org.adelie-linux.about-lxqt.desktop
index cc73b0d00..371d2dd5b 100644
--- a/user/lxqt-desktop/org.adelie-linux.about-lxqt.desktop
+++ b/user/lxqt-desktop/org.adelie-linux.about-lxqt.desktop
@@ -5,4 +5,4 @@ Name=About LXQt
Comment=Learn about the LXQt desktop
Icon=dialog-information
Categories=LXQt
-Exec=xdg-open https://lxqt.org
+Exec=xdg-open https://lxqt-project.org
diff --git a/user/lxqt-desktop/startlxqt.1 b/user/lxqt-desktop/startlxqt.1
index 9eaba0337..8044e9cd0 100644
--- a/user/lxqt-desktop/startlxqt.1
+++ b/user/lxqt-desktop/startlxqt.1
@@ -21,7 +21,7 @@ Desktop entry file stating startlxqt as binary needed to start LXQt sessions. So
by display managers.
.RE
.SH BUGS
-None at the time of this writing. Bugs can be reported on https://github.com/lxde/lxqt/issues.
+None at the time of this writing. Bugs can be reported on https://github.com/lxqt/lxqt/issues.
.SH EXAMPLE
To start an LXQt session from a virtual terminal (virtual console) add a line
.P
@@ -42,7 +42,7 @@ manager \fBlxqt-session\fR does exist by stating it in key \fITryExec\fR.
.BR startx (1)
.BR sddm (1)
.P
-.B http://www.freedesktop.org/wiki/Specifications/desktop-entry-spec/
+.B https://www.freedesktop.org/wiki/Specifications/desktop-entry-spec/
.RS 5
Desktop Entry Specification defining desktop entry files (*.desktop).
.RE
diff --git a/user/lxqt-globalkeys/APKBUILD b/user/lxqt-globalkeys/APKBUILD
index 721f8f118..e29d124d8 100644
--- a/user/lxqt-globalkeys/APKBUILD
+++ b/user/lxqt-globalkeys/APKBUILD
@@ -1,25 +1,24 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lxqt-globalkeys
-pkgver=0.14.1
+pkgver=1.4.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="Daemon and configuration utility for global shortcuts in LXQt"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
arch="all"
options="!check" # No test suite.
license="LGPL-2.1+"
depends=""
-makedepends="cmake extra-cmake-modules lxqt-build-tools>=0.6.0
- liblxqt-dev>=${pkgver%.*}.0 qt5-qttools-dev kwindowsystem-dev"
+makedepends="cmake extra-cmake-modules lxqt-build-tools>=$_lxqt
+ liblxqt-dev>=${pkgver%.*} qt5-qttools-dev kwindowsystem-dev"
subpackages="$pkgname-dev"
source="https://github.com/lxqt/lxqt-globalkeys/releases/download/$pkgver/lxqt-globalkeys-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="7683971a916adb0dff8efd5567dad11e0860e48960bb6ed650aa2cd8e1bc33f7b8cbff95e19f198e00b61eea4f7492b41e7a0acf19365143c1c0ce8ea0cbb2a3 lxqt-globalkeys-0.14.1.tar.xz"
+sha512sums="de05c15dc6400978093c1f72340214d53200f8e7478ddee47fb7a3124be642f5d27c6bd53801b6a0205985666dcb481a89208b14d54cf2eb3dc36ccae5bdc1f5 lxqt-globalkeys-1.4.0.tar.xz"
diff --git a/user/lxqt-l10n/APKBUILD b/user/lxqt-l10n/APKBUILD
deleted file mode 100644
index cc60400d1..000000000
--- a/user/lxqt-l10n/APKBUILD
+++ /dev/null
@@ -1,38 +0,0 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-pkgname=lxqt-l10n
-pkgver=0.13.0
-pkgrel=1
-pkgdesc="Localization files for LXQt"
-url="https://lxqt.org"
-arch="noarch"
-options="!check" # No test suite.
-license="LGPL-2.1+"
-depends=""
-makedepends="cmake extra-cmake-modules qt5-qttools-dev liblxqt-dev libqtxdg-dev
- lxqt-build-tools>=0.5.0"
-source="https://github.com/lxde/lxqt-l10n/releases/download/$pkgver/lxqt-l10n-$pkgver.tar.xz"
-
-build() {
- cd "$builddir"
- if [ "$CBUILD" != "$CHOST" ]; then
- CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
- fi
- mkdir -p build && cd build
- cmake \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_INSTALL_LIBDIR=lib \
- -DBUILD_SHARED_LIBS=True \
- -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
- -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
- -DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
-}
-
-package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
-}
-
-sha512sums="cbafc0f1c12a9c14af8ed896f5147d90fcd24786be0cc5de7f8897e31ac012a7308604622635f43709edeb13824395806e6d8e89355a0fd6799227f8d0d8f686 lxqt-l10n-0.13.0.tar.xz"
diff --git a/user/lxqt-menu-data/APKBUILD b/user/lxqt-menu-data/APKBUILD
new file mode 100644
index 000000000..99a14137e
--- /dev/null
+++ b/user/lxqt-menu-data/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=lxqt-menu-data
+pkgver=1.4.1
+pkgrel=0
+pkgdesc="Menu data for LXQt"
+url="https://lxqt.github.io"
+arch="noarch"
+options="!check" # no tests
+license="LGPL-2.1-only"
+depends=""
+makedepends="cmake lxqt-build-tools qt5-qtbase-dev qt5-qttools-dev"
+subpackages=""
+source="https://github.com/lxqt/lxqt-menu-data/releases/download/$pkgver/lxqt-menu-data-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ -Bbuild
+ make -C build
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest build
+}
+
+package() {
+ make -C build DESTDIR="$pkgdir" install
+}
+
+sha512sums="6e3bc518f6d392a4a4c37fd218d034b48400178bc450b7492339f25dc2de21d493c86ebdbe74bd43a6a1a4799d51737a1fb88f89e68f569cb21ac81096124cba lxqt-menu-data-1.4.1.tar.xz"
diff --git a/user/lxqt-notificationd/APKBUILD b/user/lxqt-notificationd/APKBUILD
index 76bf8585f..5351994d7 100644
--- a/user/lxqt-notificationd/APKBUILD
+++ b/user/lxqt-notificationd/APKBUILD
@@ -1,23 +1,24 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lxqt-notificationd
-pkgver=0.14.1
+pkgver=1.4.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="Daemon for notifications in LXQt"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
arch="all"
+options="!check" # No test suite.
license="LGPL-2.1+"
depends=""
-makedepends="cmake extra-cmake-modules qt5-qttools-dev liblxqt-dev>=${pkgver%.*}.0
- lxqt-build-tools>=0.6.0 kwindowsystem-dev"
-source="https://github.com/lxqt/lxqt-notificationd/releases/download/$pkgver/lxqt-notificationd-$pkgver.tar.xz"
+makedepends="cmake extra-cmake-modules qt5-qttools-dev liblxqt-dev>=${pkgver%.*}
+ lxqt-build-tools>=$_lxqt kwindowsystem-dev"
+source="https://github.com/lxqt/lxqt-notificationd/releases/download/$pkgver/lxqt-notificationd-$pkgver.tar.xz
+ revert-kwindowsystem-bump.patch"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -25,18 +26,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="dcd1892ff66d6beb5c8953c6731f798a59272365fb7439277732b145cc9e6479314415481d9e8aae9fd670d779011c3d7bb3874b05a67cfad2a722f467866795 lxqt-notificationd-0.14.1.tar.xz"
+sha512sums="5ae28b0f49e1e01c8d0fe96f23b961ca962dab33f16025af172777f385d0fd3471c64a7acb78b46e7dc0c370d324a17f10ec9a4c4b3afbde95d47164a5246d0a lxqt-notificationd-1.4.0.tar.xz
+b67f16f2fb37cb50700ecb925e709a3cfe74dcf8a9d4f74909cfd08ec7af9b0ff3e6b20a1a1d3f5d966392be2f25b1a295c9db5b47c7d890e7d026dd6faf2c9a revert-kwindowsystem-bump.patch"
diff --git a/user/lxqt-notificationd/revert-kwindowsystem-bump.patch b/user/lxqt-notificationd/revert-kwindowsystem-bump.patch
new file mode 100644
index 000000000..844e6596f
--- /dev/null
+++ b/user/lxqt-notificationd/revert-kwindowsystem-bump.patch
@@ -0,0 +1,32 @@
+diff '--color=auto' -Nurd lxqt-notificationd-1.4.0/CMakeLists.txt lxqt-notificationd-1.4.0.new/CMakeLists.txt
+--- lxqt-notificationd-1.4.0/CMakeLists.txt 2023-11-05 03:44:38.000000000 -0800
++++ lxqt-notificationd-1.4.0.new/CMakeLists.txt 2023-11-26 03:02:51.780473894 -0800
+@@ -16,7 +16,7 @@
+ option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF)
+ option(LXQT_NOTIFICATION_BUILD_TESTS "Build LXQt Notification tests" OFF)
+
+-set(KF5_MINIMUM_VERSION "5.101.0")
++set(KF5_MINIMUM_VERSION "5.36.0")
+ set(LXQT_MINIMUM_VERSION "1.4.0")
+ set(QT_MINIMUM_VERSION "5.15.0")
+
+diff '--color=auto' -Nurd lxqt-notificationd-1.4.0/src/notification.cpp lxqt-notificationd-1.4.0.new/src/notification.cpp
+--- lxqt-notificationd-1.4.0/src/notification.cpp 2023-11-05 03:44:38.000000000 -0800
++++ lxqt-notificationd-1.4.0.new/src/notification.cpp 2023-11-26 03:03:40.300079116 -0800
+@@ -33,7 +33,6 @@
+ #include <QDebug>
+ #include <XdgIcon>
+ #include <KWindowSystem/KWindowSystem>
+-#include <KWindowSystem/KX11Extras>
+ #include <QMouseEvent>
+ #include <QPushButton>
+ #include <QStyle>
+@@ -327,7 +326,7 @@
+ return;
+ }
+
+- const auto ids = KX11Extras::stackingOrder();
++ const auto ids = KWindowSystem::stackingOrder();
+ for (const WId &i : ids)
+ {
+ KWindowInfo info = KWindowInfo(i, NET::WMName | NET::WMVisibleName);
diff --git a/user/lxqt-openssh-askpass/APKBUILD b/user/lxqt-openssh-askpass/APKBUILD
index b45edca56..f33f06734 100644
--- a/user/lxqt-openssh-askpass/APKBUILD
+++ b/user/lxqt-openssh-askpass/APKBUILD
@@ -1,25 +1,24 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lxqt-openssh-askpass
-pkgver=0.14.1
+pkgver=1.4.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="Graphical LXQt utility for inputting passwords for SSH agents"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
arch="all"
options="!check" # No test suite.
license="LGPL-2.1+"
depends=""
-makedepends="cmake extra-cmake-modules qt5-qttools-dev lxqt-build-tools>=0.6.0
+makedepends="cmake extra-cmake-modules qt5-qttools-dev lxqt-build-tools>=$_lxqt
liblxqt-dev>=${pkgver%.*}.0 kwindowsystem-dev"
subpackages="$pkgname-doc"
source="https://github.com/lxde/lxqt-openssh-askpass/releases/download/$pkgver/lxqt-openssh-askpass-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="ab35cd719d4a31a495bed68a30cad5bf85701d223ee7306f0dad40717d0c2821af53e07a929b5855fb0cd680684fb790a638b59a1ea3ef288e0f656ab490b5bf lxqt-openssh-askpass-0.14.1.tar.xz"
+sha512sums="3f6862c70cc184246433eb0d9c3ad4a045f171f25144288b3e244c6e203c3bcfb14da62505b586f0b20b27a5b4b5c39ffbc709bf88863f87deb5b4a610cfd26f lxqt-openssh-askpass-1.4.0.tar.xz"
diff --git a/user/lxqt-panel/APKBUILD b/user/lxqt-panel/APKBUILD
index 2dfef7350..74ee38bc0 100644
--- a/user/lxqt-panel/APKBUILD
+++ b/user/lxqt-panel/APKBUILD
@@ -1,27 +1,29 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lxqt-panel
-pkgver=0.14.1
+pkgver=1.4.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="Panel for LXQt desktop"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
arch="all"
+options="!check" # No test suite.
license="LGPL-2.1+"
-depends=""
-makedepends="cmake extra-cmake-modules lxqt-build-tools>=0.6.0 kguiaddons-dev
- libdbusmenu-qt-dev kwindowsystem-dev solid-dev menu-cache-dev
- lxmenu-data liblxqt-dev>=${pkgver%.*}.0 alsa-lib-dev pulseaudio-dev
- lxqt-globalkeys-dev>=${pkgver%.*}.0 lm_sensors-dev libstatgrab-dev
- libsysstat-dev qt5-qttools-dev libxkbcommon-dev libxcomposite-dev"
+depends="lxqt-menu-data"
+makedepends="cmake extra-cmake-modules lxqt-build-tools>=$_lxqt
+ kguiaddons-dev libdbusmenu-qt-dev kwindowsystem-dev solid-dev
+ menu-cache-dev liblxqt-dev>=${pkgver%.*}.0 alsa-lib-dev
+ pulseaudio-dev lxqt-globalkeys-dev>=${pkgver%.*}.0 lm_sensors-dev
+ libstatgrab-dev libsysstat-dev qt5-qttools-dev libxkbcommon-dev
+ xcb-util-image-dev libxcomposite-dev libxtst-dev"
subpackages="$pkgname-doc"
-source="https://github.com/lxqt/lxqt-panel/releases/download/$pkgver/lxqt-panel-$pkgver.tar.xz"
+source="https://github.com/lxqt/lxqt-panel/releases/download/$pkgver/lxqt-panel-$pkgver.tar.xz
+ revert-kwindowsystem-bump.patch"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -29,18 +31,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="e7cb361a13ac480cda50bc0549d5501f0d4f5bb6c8e257febf81550aaa88c0c55b615762aedb1f03fd654f79efe5aa2590b1dd592f6ae8c7e5a8d08086e0a687 lxqt-panel-0.14.1.tar.xz"
+sha512sums="87d5c89cfc4f5253dbb4048da89a531a99f664fd424eebb535a688934bdb63856edf07276a5ccba826a4658228801ed4cc036aea6664e67c57599990d7e4b997 lxqt-panel-1.4.0.tar.xz
+da7ff18e64da3e90e1909f41ae58f0a6f52ca6947ff394fe4c6a68a8d8f1223fdce2fd7b665c89cdaa442053776d2e1c503fab1be5d43f22dacbc338ea78aaf7 revert-kwindowsystem-bump.patch"
diff --git a/user/lxqt-panel/revert-kwindowsystem-bump.patch b/user/lxqt-panel/revert-kwindowsystem-bump.patch
new file mode 100644
index 000000000..10c8bbdac
--- /dev/null
+++ b/user/lxqt-panel/revert-kwindowsystem-bump.patch
@@ -0,0 +1,643 @@
+diff '--color=auto' -Nurd lxqt-panel-1.4.0/CMakeLists.txt lxqt-panel-1.4.0.new/CMakeLists.txt
+--- lxqt-panel-1.4.0/CMakeLists.txt 2023-11-05 03:56:26.000000000 -0800
++++ lxqt-panel-1.4.0.new/CMakeLists.txt 2023-11-26 05:23:20.352039450 -0800
+@@ -30,7 +30,7 @@
+ set(CMAKE_AUTORCC ON)
+
+ set(REQUIRED_QT_VERSION "5.15.0")
+-set(KF5_MINIMUM_VERSION "5.101.0")
++set(KF5_MINIMUM_VERSION "5.36.0")
+ set(LXQT_GLOBALKEYS_MINIMUM_VERSION "1.4.0")
+ set(LXQT_MINIMUM_VERSION "1.4.0")
+
+diff '--color=auto' -Nurd lxqt-panel-1.4.0/panel/lxqtpanel.cpp lxqt-panel-1.4.0.new/panel/lxqtpanel.cpp
+--- lxqt-panel-1.4.0/panel/lxqtpanel.cpp 2023-11-05 03:56:26.000000000 -0800
++++ lxqt-panel-1.4.0.new/panel/lxqtpanel.cpp 2023-11-26 05:24:38.571414168 -0800
+@@ -50,7 +50,6 @@
+ #include <XdgDirs>
+
+ #include <KWindowSystem/KWindowSystem>
+-#include <KWindowSystem/KX11Extras>
+ #include <KWindowSystem/NETWM>
+
+ // Turn on this to show the time required to load each plugin during startup
+@@ -242,18 +241,18 @@
+ QTimer::singleShot(PANEL_HIDE_FIRST_TIME, this, SLOT(hidePanel()));
+ }
+
+- connect(KX11Extras::self(), &KX11Extras::windowAdded, this, [this] {
++ connect(KWindowSystem::self(), &KWindowSystem::windowAdded, this, [this] {
+ if (mHidable && mHideOnOverlap && !mHidden)
+ {
+ mShowDelayTimer.stop();
+ hidePanel();
+ }
+ });
+- connect(KX11Extras::self(), &KX11Extras::windowRemoved, this, [this] {
++ connect(KWindowSystem::self(), &KWindowSystem::windowRemoved, this, [this] {
+ if (mHidable && mHideOnOverlap && mHidden && !isPanelOverlapped())
+ mShowDelayTimer.start();
+ });
+- connect(KX11Extras::self(), &KX11Extras::currentDesktopChanged, this, [this] {
++ connect(KWindowSystem::self(), &KWindowSystem::currentDesktopChanged, this, [this] {
+ if (mHidable && mHideOnOverlap)
+ {
+ if (!mHidden)
+@@ -265,8 +264,8 @@
+ mShowDelayTimer.start();
+ }
+ });
+- connect(KX11Extras::self(),
+- static_cast<void (KX11Extras::*)(WId, NET::Properties, NET::Properties2)>(&KX11Extras::windowChanged),
++ connect(KWindowSystem::self(),
++ static_cast<void (KWindowSystem::*)(WId, NET::Properties, NET::Properties2)>(&KWindowSystem::windowChanged),
+ this, [this] (WId /* id */, NET::Properties prop, NET::Properties2) {
+ if (mHidable && mHideOnOverlap
+ // when a window is moved, resized, shaded, or minimized
+@@ -419,7 +418,7 @@
+ void LXQtPanel::show()
+ {
+ QWidget::show();
+- KX11Extras::setOnDesktop(effectiveWinId(), NET::OnAllDesktops);
++ KWindowSystem::setOnDesktop(effectiveWinId(), NET::OnAllDesktops);
+ }
+
+
+@@ -676,7 +675,7 @@
+ switch (mPosition)
+ {
+ case LXQtPanel::PositionTop:
+- KX11Extras::setExtendedStrut(wid,
++ KWindowSystem::setExtendedStrut(wid,
+ /* Left */ 0, 0, 0,
+ /* Right */ 0, 0, 0,
+ /* Top */ rect.top() + getReserveDimension(), rect.left(), rect.right(),
+@@ -685,7 +684,7 @@
+ break;
+
+ case LXQtPanel::PositionBottom:
+- KX11Extras::setExtendedStrut(wid,
++ KWindowSystem::setExtendedStrut(wid,
+ /* Left */ 0, 0, 0,
+ /* Right */ 0, 0, 0,
+ /* Top */ 0, 0, 0,
+@@ -694,7 +693,7 @@
+ break;
+
+ case LXQtPanel::PositionLeft:
+- KX11Extras::setExtendedStrut(wid,
++ KWindowSystem::setExtendedStrut(wid,
+ /* Left */ rect.left() + getReserveDimension(), rect.top(), rect.bottom(),
+ /* Right */ 0, 0, 0,
+ /* Top */ 0, 0, 0,
+@@ -704,7 +703,7 @@
+ break;
+
+ case LXQtPanel::PositionRight:
+- KX11Extras::setExtendedStrut(wid,
++ KWindowSystem::setExtendedStrut(wid,
+ /* Left */ 0, 0, 0,
+ /* Right */ wholeScreen.right() - rect.right() + getReserveDimension(), rect.top(), rect.bottom(),
+ /* Top */ 0, 0, 0,
+@@ -714,7 +713,7 @@
+ }
+ } else
+ {
+- KX11Extras::setExtendedStrut(wid,
++ KWindowSystem::setExtendedStrut(wid,
+ /* Left */ 0, 0, 0,
+ /* Right */ 0, 0, 0,
+ /* Top */ 0, 0, 0,
+@@ -826,8 +825,8 @@
+ mConfigDialog->activateWindow();
+ WId wid = mConfigDialog->windowHandle()->winId();
+
+- KX11Extras::activateWindow(wid);
+- KX11Extras::setOnDesktop(wid, KX11Extras::currentDesktop());
++ KWindowSystem::activateWindow(wid);
++ KWindowSystem::setOnDesktop(wid, KWindowSystem::currentDesktop());
+ }
+
+
+@@ -846,8 +845,8 @@
+ mConfigDialog->activateWindow();
+ WId wid = mConfigDialog->windowHandle()->winId();
+
+- KX11Extras::activateWindow(wid);
+- KX11Extras::setOnDesktop(wid, KX11Extras::currentDesktop());
++ KWindowSystem::activateWindow(wid);
++ KWindowSystem::setOnDesktop(wid, KWindowSystem::currentDesktop());
+ }
+
+
+@@ -1130,7 +1129,7 @@
+ KWindowSystem::setType(effectiveWinId(), NET::Dock);
+
+ updateWmStrut(); // reserve screen space for the panel
+- KX11Extras::setOnAllDesktops(effectiveWinId(), true);
++ KWindowSystem::setOnAllDesktops(effectiveWinId(), true);
+ break;
+ }
+ case QEvent::DragEnter:
+@@ -1414,7 +1413,7 @@
+ ignoreList |= NET::TopMenuMask;
+ ignoreList |= NET::NotificationMask;
+
+- const auto wIds = KX11Extras::stackingOrder();
++ const auto wIds = KWindowSystem::stackingOrder();
+ for (auto const wId : wIds)
+ {
+ KWindowInfo info(wId, NET::WMWindowType | NET::WMState | NET::WMFrameExtents | NET::WMDesktop);
+diff '--color=auto' -Nurd lxqt-panel-1.4.0/panel/plugin.cpp lxqt-panel-1.4.0.new/panel/plugin.cpp
+--- lxqt-panel-1.4.0/panel/plugin.cpp 2023-11-05 03:56:26.000000000 -0800
++++ lxqt-panel-1.4.0.new/panel/plugin.cpp 2023-11-26 05:25:18.501095739 -0800
+@@ -31,7 +31,7 @@
+ #include "pluginsettings_p.h"
+ #include "lxqtpanel.h"
+
+-#include <KWindowSystem/KX11Extras>
++#include <KWindowSystem>
+
+ #include <QDebug>
+ #include <QProcessEnvironment>
+@@ -523,8 +523,8 @@
+ mConfigDialog->activateWindow();
+
+ WId wid = mConfigDialog->windowHandle()->winId();
+- KX11Extras::activateWindow(wid);
+- KX11Extras::setOnDesktop(wid, KX11Extras::currentDesktop());
++ KWindowSystem::activateWindow(wid);
++ KWindowSystem::setOnDesktop(wid, KWindowSystem::currentDesktop());
+ }
+
+
+diff '--color=auto' -Nurd lxqt-panel-1.4.0/plugin-desktopswitch/desktopswitch.cpp lxqt-panel-1.4.0.new/plugin-desktopswitch/desktopswitch.cpp
+--- lxqt-panel-1.4.0/plugin-desktopswitch/desktopswitch.cpp 2023-11-05 03:56:26.000000000 -0800
++++ lxqt-panel-1.4.0.new/plugin-desktopswitch/desktopswitch.cpp 2023-11-26 05:26:07.690703464 -0800
+@@ -33,7 +33,6 @@
+ #include <lxqt-globalkeys.h>
+ #include <LXQt/GridLayout>
+ #include <KWindowSystem/KWindowSystem>
+-#include <KWindowSystem/KX11Extras>
+ #include <QX11Info>
+ #include <cmath>
+
+@@ -47,7 +46,7 @@
+ QObject(),
+ ILXQtPanelPlugin(startupInfo),
+ m_pSignalMapper(new QSignalMapper(this)),
+- m_desktopCount(KX11Extras::numberOfDesktops()),
++ m_desktopCount(KWindowSystem::numberOfDesktops()),
+ mRows(-1),
+ mShowOnlyActive(false),
+ mDesktops(new NETRootInfo(QX11Info::connection(), NET::NumberOfDesktops | NET::CurrentDesktop | NET::DesktopNames, NET::WM2DesktopLayout)),
+@@ -63,16 +62,16 @@
+
+ settingsChanged();
+
+- onCurrentDesktopChanged(KX11Extras::currentDesktop());
++ onCurrentDesktopChanged(KWindowSystem::currentDesktop());
+ QTimer::singleShot(0, this, SLOT(registerShortcuts()));
+
+ connect(m_buttons, &QButtonGroup::idClicked, this, &DesktopSwitch::setDesktop);
+
+- connect(KX11Extras::self(), &KX11Extras::numberOfDesktopsChanged, this, &DesktopSwitch::onNumberOfDesktopsChanged);
+- connect(KX11Extras::self(), &KX11Extras::currentDesktopChanged, this, &DesktopSwitch::onCurrentDesktopChanged);
+- connect(KX11Extras::self(), &KX11Extras::desktopNamesChanged, this, &DesktopSwitch::onDesktopNamesChanged);
++ connect(KWindowSystem::self(), &KWindowSystem::numberOfDesktopsChanged, this, &DesktopSwitch::onNumberOfDesktopsChanged);
++ connect(KWindowSystem::self(), &KWindowSystem::currentDesktopChanged, this, &DesktopSwitch::onCurrentDesktopChanged);
++ connect(KWindowSystem::self(), &KWindowSystem::desktopNamesChanged, this, &DesktopSwitch::onDesktopNamesChanged);
+
+- connect(KX11Extras::self(), static_cast<void (KX11Extras::*)(WId, NET::Properties, NET::Properties2)>(&KX11Extras::windowChanged),
++ connect(KWindowSystem::self(), static_cast<void (KWindowSystem::*)(WId, NET::Properties, NET::Properties2)>(&KWindowSystem::windowChanged),
+ this, &DesktopSwitch::onWindowChanged);
+ }
+
+@@ -137,7 +136,7 @@
+ const QList<QAbstractButton*> btns = m_buttons->buttons();
+
+ int i = 0;
+- const int current_desktop = KX11Extras::currentDesktop();
++ const int current_desktop = KWindowSystem::currentDesktop();
+ const int current_cnt = btns.count();
+ const int border = qMin(btns.count(), m_desktopCount);
+ //update existing buttons
+@@ -145,9 +144,9 @@
+ {
+ DesktopSwitchButton * button = qobject_cast<DesktopSwitchButton*>(btns[i]);
+ button->update(i, mLabelType,
+- KX11Extras::desktopName(i + 1).isEmpty() ?
++ KWindowSystem::desktopName(i + 1).isEmpty() ?
+ tr("Desktop %1").arg(i + 1) :
+- KX11Extras::desktopName(i + 1));
++ KWindowSystem::desktopName(i + 1));
+ button->setVisible(!mShowOnlyActive || i + 1 == current_desktop);
+ }
+
+@@ -156,9 +155,9 @@
+ for ( ; i < m_desktopCount; ++i)
+ {
+ b = new DesktopSwitchButton(&mWidget, i, mLabelType,
+- KX11Extras::desktopName(i+1).isEmpty() ?
++ KWindowSystem::desktopName(i+1).isEmpty() ?
+ tr("Desktop %1").arg(i+1) :
+- KX11Extras::desktopName(i+1));
++ KWindowSystem::desktopName(i+1));
+ mWidget.layout()->addWidget(b);
+ m_buttons->addButton(b, i);
+ b->setVisible(!mShowOnlyActive || i + 1 == current_desktop);
+@@ -215,7 +214,7 @@
+
+ void DesktopSwitch::setDesktop(int desktop)
+ {
+- KX11Extras::setCurrentDesktop(desktop + 1);
++ KWindowSystem::setCurrentDesktop(desktop + 1);
+ }
+
+ void DesktopSwitch::onNumberOfDesktopsChanged(int count)
+@@ -330,9 +329,9 @@
+ if(abs(m_mouseWheelThresholdCounter) < 100)
+ return;
+
+- int max = KX11Extras::numberOfDesktops();
++ int max = KWindowSystem::numberOfDesktops();
+ int delta = rotationSteps < 0 ? 1 : -1;
+- int current = KX11Extras::currentDesktop() + delta;
++ int current = KWindowSystem::currentDesktop() + delta;
+
+ if (current > max){
+ current = 1;
+@@ -341,5 +340,5 @@
+ current = max;
+
+ m_mouseWheelThresholdCounter = 0;
+- KX11Extras::setCurrentDesktop(current);
++ KWindowSystem::setCurrentDesktop(current);
+ }
+diff '--color=auto' -Nurd lxqt-panel-1.4.0/plugin-desktopswitch/desktopswitchconfiguration.cpp lxqt-panel-1.4.0.new/plugin-desktopswitch/desktopswitchconfiguration.cpp
+--- lxqt-panel-1.4.0/plugin-desktopswitch/desktopswitchconfiguration.cpp 2023-11-05 03:56:26.000000000 -0800
++++ lxqt-panel-1.4.0.new/plugin-desktopswitch/desktopswitchconfiguration.cpp 2023-11-26 05:26:31.370514624 -0800
+@@ -26,7 +26,7 @@
+
+ #include "desktopswitchconfiguration.h"
+ #include "ui_desktopswitchconfiguration.h"
+-#include <KWindowSystem/KX11Extras>
++#include <KWindowSystem>
+ #include <QTimer>
+
+ DesktopSwitchConfiguration::DesktopSwitchConfiguration(PluginSettings *settings, QWidget *parent) :
+@@ -64,17 +64,17 @@
+
+ void DesktopSwitchConfiguration::loadDesktopsNames()
+ {
+- int n = KX11Extras::numberOfDesktops();
++ int n = KWindowSystem::numberOfDesktops();
+ for (int i = 1; i <= n; i++)
+ {
+- QLineEdit *edit = new QLineEdit(KX11Extras::desktopName(i), this);
++ QLineEdit *edit = new QLineEdit(KWindowSystem::desktopName(i), this);
+ ((QFormLayout *) ui->namesGroupBox->layout())->addRow(tr("Desktop %1:").arg(i), edit);
+
+ // C++11 rocks!
+ QTimer *timer = new QTimer(this);
+ timer->setInterval(400);
+ timer->setSingleShot(true);
+- connect(timer, &QTimer::timeout, this, [=] { KX11Extras::setDesktopName(i, edit->text()); });
++ connect(timer, &QTimer::timeout, this, [=] { KWindowSystem::setDesktopName(i, edit->text()); });
+ connect(edit, &QLineEdit::textEdited, this, [=] { timer->start(); });
+ }
+ }
+diff '--color=auto' -Nurd lxqt-panel-1.4.0/plugin-kbindicator/src/kbdkeeper.cpp lxqt-panel-1.4.0.new/plugin-kbindicator/src/kbdkeeper.cpp
+--- lxqt-panel-1.4.0/plugin-kbindicator/src/kbdkeeper.cpp 2023-11-05 03:56:26.000000000 -0800
++++ lxqt-panel-1.4.0.new/plugin-kbindicator/src/kbdkeeper.cpp 2023-11-26 05:27:03.870255446 -0800
+@@ -25,7 +25,7 @@
+ * END_COMMON_COPYRIGHT_HEADER */
+
+ #include <QDebug>
+-#include <KWindowSystem/KX11Extras>
++#include <KWindowSystem/KWindowSystem>
+ #include <KWindowSystem/KWindowInfo>
+ #include <KWindowSystem/netwm_def.h>
+ #include "kbdkeeper.h"
+@@ -91,7 +91,7 @@
+
+ void WinKbdKeeper::layoutChanged(uint group)
+ {
+- WId win = KX11Extras::activeWindow();
++ WId win = KWindowSystem::activeWindow();
+
+ if (m_active == win){
+ m_mapping[win] = group;
+@@ -108,7 +108,7 @@
+
+ void WinKbdKeeper::checkState()
+ {
+- WId win = KX11Extras::activeWindow();
++ WId win = KWindowSystem::activeWindow();
+
+ if (!m_mapping.contains(win))
+ m_mapping.insert(win, 0);
+@@ -120,7 +120,7 @@
+
+ void WinKbdKeeper::switchToGroup(uint group)
+ {
+- WId win = KX11Extras::activeWindow();
++ WId win = KWindowSystem::activeWindow();
+ m_mapping[win] = group;
+ m_layout.lockGroup(group);
+ m_info.setCurrentGroup(group);
+@@ -138,7 +138,7 @@
+
+ void AppKbdKeeper::layoutChanged(uint group)
+ {
+- KWindowInfo info = KWindowInfo(KX11Extras::activeWindow(), NET::Properties(), NET::WM2WindowClass);
++ KWindowInfo info = KWindowInfo(KWindowSystem::activeWindow(), NET::Properties(), NET::WM2WindowClass);
+ QString app = QString::fromUtf8(info.windowClassName());
+
+ if (m_active == app){
+@@ -157,7 +157,7 @@
+
+ void AppKbdKeeper::checkState()
+ {
+- KWindowInfo info = KWindowInfo(KX11Extras::activeWindow(), NET::Properties(), NET::WM2WindowClass);
++ KWindowInfo info = KWindowInfo(KWindowSystem::activeWindow(), NET::Properties(), NET::WM2WindowClass);
+ QString app = QString::fromUtf8(info.windowClassName());
+
+ if (!m_mapping.contains(app))
+@@ -172,7 +172,7 @@
+
+ void AppKbdKeeper::switchToGroup(uint group)
+ {
+- KWindowInfo info = KWindowInfo(KX11Extras::activeWindow(), NET::Properties(), NET::WM2WindowClass);
++ KWindowInfo info = KWindowInfo(KWindowSystem::activeWindow(), NET::Properties(), NET::WM2WindowClass);
+ QString app = QString::fromUtf8(info.windowClassName());
+
+ m_mapping[app] = group;
+diff '--color=auto' -Nurd lxqt-panel-1.4.0/plugin-taskbar/lxqttaskbar.cpp lxqt-panel-1.4.0.new/plugin-taskbar/lxqttaskbar.cpp
+--- lxqt-panel-1.4.0/plugin-taskbar/lxqttaskbar.cpp 2023-11-05 03:56:26.000000000 -0800
++++ lxqt-panel-1.4.0.new/plugin-taskbar/lxqttaskbar.cpp 2023-11-26 05:27:36.719993478 -0800
+@@ -93,10 +93,10 @@
+ connect(mSignalMapper, &QSignalMapper::mappedInt, this, &LXQtTaskBar::activateTask);
+ QTimer::singleShot(0, this, &LXQtTaskBar::registerShortcuts);
+
+- connect(KX11Extras::self(), static_cast<void (KX11Extras::*)(WId, NET::Properties, NET::Properties2)>(&KX11Extras::windowChanged)
++ connect(KWindowSystem::self(), static_cast<void (KWindowSystem::*)(WId, NET::Properties, NET::Properties2)>(&KWindowSystem::windowChanged)
+ , this, &LXQtTaskBar::onWindowChanged);
+- connect(KX11Extras::self(), &KX11Extras::windowAdded, this, &LXQtTaskBar::onWindowAdded);
+- connect(KX11Extras::self(), &KX11Extras::windowRemoved, this, &LXQtTaskBar::onWindowRemoved);
++ connect(KWindowSystem::self(), &KWindowSystem::windowAdded, this, &LXQtTaskBar::onWindowAdded);
++ connect(KWindowSystem::self(), &KWindowSystem::windowRemoved, this, &LXQtTaskBar::onWindowRemoved);
+ }
+
+ /************************************************
+@@ -356,7 +356,7 @@
+ {
+ QList<WId> new_list;
+ // Just add new windows to groups, deleting is up to the groups
+- const auto wnds = KX11Extras::stackingOrder();
++ const auto wnds = KWindowSystem::stackingOrder();
+ for (auto const wnd: wnds)
+ {
+ if (acceptWindow(wnd))
+diff '--color=auto' -Nurd lxqt-panel-1.4.0/plugin-taskbar/lxqttaskbar.h lxqt-panel-1.4.0.new/plugin-taskbar/lxqttaskbar.h
+--- lxqt-panel-1.4.0/plugin-taskbar/lxqttaskbar.h 2023-11-05 03:56:26.000000000 -0800
++++ lxqt-panel-1.4.0.new/plugin-taskbar/lxqttaskbar.h 2023-11-26 05:27:47.189909983 -0800
+@@ -43,7 +43,7 @@
+ #include <QMap>
+ #include <lxqt-globalkeys.h>
+ #include "../panel/ilxqtpanel.h"
+-#include <KWindowSystem/KX11Extras>
++#include <KWindowSystem/KWindowSystem>
+ #include <KWindowSystem/KWindowInfo>
+ #include <KWindowSystem/NETWM>
+
+diff '--color=auto' -Nurd lxqt-panel-1.4.0/plugin-taskbar/lxqttaskbarconfiguration.cpp lxqt-panel-1.4.0.new/plugin-taskbar/lxqttaskbarconfiguration.cpp
+--- lxqt-panel-1.4.0/plugin-taskbar/lxqttaskbarconfiguration.cpp 2023-11-05 03:56:26.000000000 -0800
++++ lxqt-panel-1.4.0.new/plugin-taskbar/lxqttaskbarconfiguration.cpp 2023-11-26 05:28:07.459748336 -0800
+@@ -29,7 +29,7 @@
+
+ #include "lxqttaskbarconfiguration.h"
+ #include "ui_lxqttaskbarconfiguration.h"
+-#include <KWindowSystem/KX11Extras>
++#include <KWindowSystem/KWindowSystem>
+
+ LXQtTaskbarConfiguration::LXQtTaskbarConfiguration(PluginSettings *settings, QWidget *parent):
+ LXQtPanelPluginConfigDialog(settings, parent),
+@@ -54,9 +54,9 @@
+
+ ui->showDesktopNumCB->addItem(tr("Current"), 0);
+ //Note: in KWindowSystem desktops are numbered from 1..N
+- const int desk_cnt = KX11Extras::numberOfDesktops();
++ const int desk_cnt = KWindowSystem::numberOfDesktops();
+ for (int i = 1; desk_cnt >= i; ++i)
+- ui->showDesktopNumCB->addItem(QString(QStringLiteral("%1 - %2")).arg(i).arg(KX11Extras::desktopName(i)), i);
++ ui->showDesktopNumCB->addItem(QString(QStringLiteral("%1 - %2")).arg(i).arg(KWindowSystem::desktopName(i)), i);
+
+ loadSettings();
+ ui->ungroupedNextToExistingCB->setEnabled(!(ui->groupingGB->isChecked()));
+diff '--color=auto' -Nurd lxqt-panel-1.4.0/plugin-taskbar/lxqttaskbutton.cpp lxqt-panel-1.4.0.new/plugin-taskbar/lxqttaskbutton.cpp
+--- lxqt-panel-1.4.0/plugin-taskbar/lxqttaskbutton.cpp 2023-11-05 03:56:26.000000000 -0800
++++ lxqt-panel-1.4.0.new/plugin-taskbar/lxqttaskbutton.cpp 2023-11-26 05:29:18.849179024 -0800
+@@ -54,7 +54,7 @@
+ #include "lxqttaskgroup.h"
+ #include "lxqttaskbar.h"
+
+-#include <KWindowSystem/KX11Extras>
++#include <KWindowSystem/KWindowSystem>
+ // Necessary for closeApplication()
+ #include <KWindowSystem/NETWM>
+ #include <QX11Info>
+@@ -151,7 +151,7 @@
+ if (ico.isNull())
+ {
+ int devicePixels = mIconSize * devicePixelRatioF();
+- ico = KX11Extras::icon(mWindow, devicePixels, devicePixels);
++ ico = KWindowSystem::icon(mWindow, devicePixels, devicePixels);
+ }
+ setIcon(ico.isNull() ? XdgIcon::defaultApplicationIcon() : ico);
+ }
+@@ -415,7 +415,7 @@
+ ************************************************/
+ bool LXQtTaskButton::isApplicationActive() const
+ {
+- return KX11Extras::activeWindow() == mWindow;
++ return KWindowSystem::activeWindow() == mWindow;
+ }
+
+ /************************************************
+@@ -426,16 +426,16 @@
+ KWindowInfo info(mWindow, NET::WMDesktop | NET::WMState | NET::XAWMState);
+ if (parentTaskBar()->raiseOnCurrentDesktop() && info.isMinimized())
+ {
+- KX11Extras::setOnDesktop(mWindow, KX11Extras::currentDesktop());
++ KWindowSystem::setOnDesktop(mWindow, KWindowSystem::currentDesktop());
+ }
+ else
+ {
+ int winDesktop = info.desktop();
+- if (KX11Extras::currentDesktop() != winDesktop)
+- KX11Extras::setCurrentDesktop(winDesktop);
++ if (KWindowSystem::currentDesktop() != winDesktop)
++ KWindowSystem::setCurrentDesktop(winDesktop);
+ }
+ // bypass focus stealing prevention
+- KX11Extras::forceActiveWindow(mWindow);
++ KWindowSystem::forceActiveWindow(mWindow);
+
+ setUrgencyHint(false);
+ }
+@@ -445,7 +445,7 @@
+ ************************************************/
+ void LXQtTaskButton::minimizeApplication()
+ {
+- KX11Extras::minimizeWindow(mWindow);
++ KWindowSystem::minimizeWindow(mWindow);
+ }
+
+ /************************************************
+@@ -557,7 +557,7 @@
+ if (!ok)
+ return;
+
+- KX11Extras::setOnDesktop(mWindow, desk);
++ KWindowSystem::setOnDesktop(mWindow, desk);
+ }
+
+ /************************************************
+@@ -565,7 +565,7 @@
+ ************************************************/
+ void LXQtTaskButton::moveApplicationToPrevNextDesktop(bool next)
+ {
+- int deskNum = KX11Extras::numberOfDesktops();
++ int deskNum = KWindowSystem::numberOfDesktops();
+ if (deskNum <= 1)
+ return;
+ int targetDesk = KWindowInfo(mWindow, NET::WMDesktop).desktop() + (next ? 1 : -1);
+@@ -575,7 +575,7 @@
+ else if (targetDesk < 1)
+ targetDesk = deskNum;
+
+- KX11Extras::setOnDesktop(mWindow, targetDesk);
++ KWindowSystem::setOnDesktop(mWindow, targetDesk);
+ }
+
+ /************************************************
+@@ -585,10 +585,10 @@
+ {
+ KWindowInfo info(mWindow, NET::WMDesktop);
+ if (!info.isOnCurrentDesktop())
+- KX11Extras::setCurrentDesktop(info.desktop());
++ KWindowSystem::setCurrentDesktop(info.desktop());
+ if (isMinimized())
+- KX11Extras::unminimizeWindow(mWindow);
+- KX11Extras::forceActiveWindow(mWindow);
++ KWindowSystem::unminimizeWindow(mWindow);
++ KWindowSystem::forceActiveWindow(mWindow);
+ const QRect& windowGeometry = KWindowInfo(mWindow, NET::WMFrameExtents).frameGeometry();
+ QList<QScreen *> screens = QGuiApplication::screens();
+ if (screens.size() > 1){
+@@ -628,10 +628,10 @@
+ {
+ KWindowInfo info(mWindow, NET::WMDesktop);
+ if (!info.isOnCurrentDesktop())
+- KX11Extras::setCurrentDesktop(info.desktop());
++ KWindowSystem::setCurrentDesktop(info.desktop());
+ if (isMinimized())
+- KX11Extras::unminimizeWindow(mWindow);
+- KX11Extras::forceActiveWindow(mWindow);
++ KWindowSystem::unminimizeWindow(mWindow);
++ KWindowSystem::forceActiveWindow(mWindow);
+ const QRect& g = KWindowInfo(mWindow, NET::WMGeometry).geometry();
+ int X = g.center().x();
+ int Y = g.center().y();
+@@ -646,10 +646,10 @@
+ {
+ KWindowInfo info(mWindow, NET::WMDesktop);
+ if (!info.isOnCurrentDesktop())
+- KX11Extras::setCurrentDesktop(info.desktop());
++ KWindowSystem::setCurrentDesktop(info.desktop());
+ if (isMinimized())
+- KX11Extras::unminimizeWindow(mWindow);
+- KX11Extras::forceActiveWindow(mWindow);
++ KWindowSystem::unminimizeWindow(mWindow);
++ KWindowSystem::forceActiveWindow(mWindow);
+ const QRect& g = KWindowInfo(mWindow, NET::WMGeometry).geometry();
+ int X = g.bottomRight().x();
+ int Y = g.bottomRight().y();
+@@ -701,7 +701,7 @@
+ */
+
+ /********** Desktop menu **********/
+- int deskNum = KX11Extras::numberOfDesktops();
++ int deskNum = KWindowSystem::numberOfDesktops();
+ if (deskNum > 1)
+ {
+ int winDesk = KWindowInfo(mWindow, NET::WMDesktop).desktop();
+@@ -715,7 +715,7 @@
+
+ for (int i = 1; i <= deskNum; ++i)
+ {
+- auto deskName = KX11Extras::desktopName(i).trimmed();
++ auto deskName = KWindowSystem::desktopName(i).trimmed();
+ if (deskName.isEmpty())
+ a = deskMenu->addAction(tr("Desktop &%1").arg(i));
+ else
+@@ -726,7 +726,7 @@
+ connect(a, &QAction::triggered, this, &LXQtTaskButton::moveApplicationToDesktop);
+ }
+
+- int curDesk = KX11Extras::currentDesktop();
++ int curDesk = KWindowSystem::currentDesktop();
+ a = menu->addAction(tr("&To Current Desktop"));
+ a->setData(curDesk);
+ a->setEnabled(curDesk != winDesk);
+diff '--color=auto' -Nurd lxqt-panel-1.4.0/plugin-taskbar/lxqttaskgroup.cpp lxqt-panel-1.4.0.new/plugin-taskbar/lxqttaskgroup.cpp
+--- lxqt-panel-1.4.0/plugin-taskbar/lxqttaskgroup.cpp 2023-11-05 03:56:26.000000000 -0800
++++ lxqt-panel-1.4.0.new/plugin-taskbar/lxqttaskgroup.cpp 2023-11-26 05:29:48.118945605 -0800
+@@ -38,7 +38,7 @@
+ #include <QStringBuilder>
+ #include <QMenu>
+ #include <XdgIcon>
+-#include <KWindowSystem/KX11Extras>
++#include <KWindowSystem/KWindowSystem>
+ #include <QX11Info>
+ #include <functional>
+
+@@ -58,8 +58,8 @@
+ setText(groupName);
+
+ connect(this, &LXQtTaskGroup::clicked, this, &LXQtTaskGroup::onClicked);
+- connect(KX11Extras::self(), &KX11Extras::currentDesktopChanged, this, &LXQtTaskGroup::onDesktopChanged);
+- connect(KX11Extras::self(), &KX11Extras::activeWindowChanged, this, &LXQtTaskGroup::onActiveWindowChanged);
++ connect(KWindowSystem::self(), &KWindowSystem::currentDesktopChanged, this, &LXQtTaskGroup::onDesktopChanged);
++ connect(KWindowSystem::self(), &KWindowSystem::activeWindowChanged, this, &LXQtTaskGroup::onActiveWindowChanged);
+ connect(parent, &LXQtTaskBar::buttonRotationRefreshed, this, &LXQtTaskGroup::setAutoRotation);
+ connect(parent, &LXQtTaskBar::refreshIconGeometry, this, &LXQtTaskGroup::refreshIconsGeometry);
+ connect(parent, &LXQtTaskBar::buttonStyleRefreshed, this, &LXQtTaskGroup::setToolButtonsStyle);
+@@ -97,7 +97,7 @@
+ void LXQtTaskGroup::closeGroup()
+ {
+ for (LXQtTaskButton *button : qAsConst(mButtonHash) )
+- if (button->isOnDesktop(KX11Extras::currentDesktop()))
++ if (button->isOnDesktop(KWindowSystem::currentDesktop()))
+ button->closeApplication();
+ }
+
+@@ -305,7 +305,7 @@
+ {
+ if (visibleButtonsCount() > 1)
+ {
+- setChecked(mButtonHash.contains(KX11Extras::activeWindow()));
++ setChecked(mButtonHash.contains(KWindowSystem::activeWindow()));
+ setPopupVisible(true);
+ }
+ }
+@@ -384,7 +384,7 @@
+ const int showDesktop = taskbar->showDesktopNum();
+ for(LXQtTaskButton * btn : qAsConst(mButtonHash))
+ {
+- bool visible = taskbar->isShowOnlyOneDesktopTasks() ? btn->isOnDesktop(0 == showDesktop ? KX11Extras::currentDesktop() : showDesktop) : true;
++ bool visible = taskbar->isShowOnlyOneDesktopTasks() ? btn->isOnDesktop(0 == showDesktop ? KWindowSystem::currentDesktop() : showDesktop) : true;
+ visible &= taskbar->isShowOnlyCurrentScreenTasks() ? btn->isOnCurrentScreen() : true;
+ visible &= taskbar->isShowOnlyMinimizedTasks() ? btn->isMinimized() : true;
+ btn->setVisible(visible);
diff --git a/user/lxqt-policykit/APKBUILD b/user/lxqt-policykit/APKBUILD
index d940b6d52..14db96e05 100644
--- a/user/lxqt-policykit/APKBUILD
+++ b/user/lxqt-policykit/APKBUILD
@@ -1,26 +1,25 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lxqt-policykit
-pkgver=0.14.1
+pkgver=1.4.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="PolicyKit agent for LXQT"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
arch="all"
options="!check" # No test suite.
license="LGPL-2.1+"
depends=""
makedepends="cmake extra-cmake-modules qt5-qttools-dev polkit-qt-1-dev
- liblxqt-dev>=${pkgver%.*}.0 lxqt-build-tools>=0.6.0 qt5-qttools-dev
+ liblxqt-dev>=${pkgver%.*} lxqt-build-tools>=$_lxqt qt5-qttools-dev
kwindowsystem-dev"
subpackages="$pkgname-doc"
source="https://github.com/lxqt/lxqt-policykit/releases/download/$pkgver/lxqt-policykit-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -28,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="c3df41a45ef4d04eba9ce0c9f29d4c9b68a192302e85e192a26ae73617b87d0ad70ec64135f500485d4c10095754e36935bf9790ffd83d0197b1bb784971a940 lxqt-policykit-0.14.1.tar.xz"
+sha512sums="d63a2f0d3ce2bb794aae6a6315b465fca984de20b107934127f83d3a8614472c7f019f2710a06ee40658a1a4c9ed6df5c5715b593f67e46c6e3d91b3b2b0526f lxqt-policykit-1.4.0.tar.xz"
diff --git a/user/lxqt-powermanagement/APKBUILD b/user/lxqt-powermanagement/APKBUILD
index 68907d723..0c571e7e0 100644
--- a/user/lxqt-powermanagement/APKBUILD
+++ b/user/lxqt-powermanagement/APKBUILD
@@ -1,24 +1,25 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lxqt-powermanagement
-pkgver=0.14.1
+pkgver=1.4.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="Power management utilities for LXQt"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
arch="all"
+options="!check" # No test suite.
license="LGPL-2.1+"
depends=""
-makedepends="cmake extra-cmake-modules lxqt-build-tools>=0.6.0 upower-dev
- liblxqt-dev>=${pkgver%.*}.0 kidletime-dev qt5-qtsvg-dev qt5-qttools-dev
- solid-dev kwindowsystem-dev"
-source="https://github.com/lxqt/lxqt-powermanagement/releases/download/$pkgver/lxqt-powermanagement-$pkgver.tar.xz"
+makedepends="cmake extra-cmake-modules lxqt-build-tools>=$_lxqt upower-dev
+ liblxqt-dev>=${pkgver%.*} kidletime-dev qt5-qtsvg-dev qt5-qttools-dev
+ solid-dev kwindowsystem-dev lxqt-globalkeys-dev>=${pkgver%.*}"
+source="https://github.com/lxqt/lxqt-powermanagement/releases/download/$pkgver/lxqt-powermanagement-$pkgver.tar.xz
+ revert-kwindowsystem-bump.patch"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -26,18 +27,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="04c72e8f73fff647f0a1d987db2879dffaeba7accfa320bc3b101befdb041ce391debd5f6de12cd2614f9ddc9bf07644d778bb33611a3a4690fe818f7bc81d10 lxqt-powermanagement-0.14.1.tar.xz"
+sha512sums="20b6b541fbf0eda1471af233f09744861428d74743b248b95be27c82a3d6fa1c71bfb7f4b5ff7a5408a37a6975a831b525290e8ec012e3546b0e69dfe63ccf7c lxqt-powermanagement-1.4.0.tar.xz
+076827624da9b85dc0bf3928e88f2144268f7ffcd87b369e634d4e4dd8a7f817b48a9e388f1c37a75de295d7db927af9e3b2442c655361eb57bc21a22905b7c2 revert-kwindowsystem-bump.patch"
diff --git a/user/lxqt-powermanagement/revert-kwindowsystem-bump.patch b/user/lxqt-powermanagement/revert-kwindowsystem-bump.patch
new file mode 100644
index 000000000..b7bc62975
--- /dev/null
+++ b/user/lxqt-powermanagement/revert-kwindowsystem-bump.patch
@@ -0,0 +1,32 @@
+diff '--color=auto' -Nurd lxqt-powermanagement-1.4.0/CMakeLists.txt lxqt-powermanagement-1.4.0.new/CMakeLists.txt
+--- lxqt-powermanagement-1.4.0/CMakeLists.txt 2023-11-05 03:52:24.000000000 -0800
++++ lxqt-powermanagement-1.4.0.new/CMakeLists.txt 2023-11-26 05:38:24.944824050 -0800
+@@ -16,7 +16,7 @@
+ option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF)
+
+ set(LXQTBT_MINIMUM_VERSION "0.13.0")
+-set(KF5_MINIMUM_VERSION "5.101.0")
++set(KF5_MINIMUM_VERSION "5.36.0")
+ set(LXQT_MINIMUM_VERSION "1.4.0")
+ set(QT_MINIMUM_VERSION "5.15.0")
+
+diff '--color=auto' -Nurd lxqt-powermanagement-1.4.0/src/idlenesswatcher.cpp lxqt-powermanagement-1.4.0.new/src/idlenesswatcher.cpp
+--- lxqt-powermanagement-1.4.0/src/idlenesswatcher.cpp 2023-11-05 03:52:24.000000000 -0800
++++ lxqt-powermanagement-1.4.0.new/src/idlenesswatcher.cpp 2023-11-26 05:38:48.084639516 -0800
+@@ -30,7 +30,6 @@
+ #include <Solid/Device>
+ #include <Solid/Battery>
+ #include <KWindowSystem/KWindowSystem>
+-#include <KWindowSystem/KX11Extras>
+ #include <KWindowSystem/KWindowInfo>
+ #include <QDebug>
+ #include <LXQt/lxqtnotification.h>
+@@ -162,7 +161,7 @@
+
+ // check if disable Idleness when fullscreen is enabled
+ if (mPSettings.isDisableIdlenessWhenFullscreenEnabled()) {
+- WId w = KX11Extras::activeWindow();
++ WId w = KWindowSystem::activeWindow();
+ KWindowInfo info(w, NET::WMState);
+ if (info.hasState(NET::FullScreen)) {
+ QTimer::singleShot(0, this, [] {
diff --git a/user/lxqt-qtplugin/APKBUILD b/user/lxqt-qtplugin/APKBUILD
index ae0a30b03..c6d6bafc1 100644
--- a/user/lxqt-qtplugin/APKBUILD
+++ b/user/lxqt-qtplugin/APKBUILD
@@ -1,24 +1,24 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lxqt-qtplugin
-pkgver=0.14.0
+pkgver=1.4.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="Qt plugin for platform integration with LXQt"
-url="https://lxqt.org/"
+url="https://lxqt.github.io/"
arch="all"
+options="!check" # No test suite.
license="LGPL-2.1+"
depends=""
-makedepends="cmake extra-cmake-modules lxqt-build-tools>=0.6.0 qt5-qttools-dev
+makedepends="cmake extra-cmake-modules lxqt-build-tools>=$_lxqt qt5-qttools-dev
libfm-qt-dev>=${pkgver%.*}.0 liblxqt-dev>=${pkgver%.*}.0
libdbusmenu-qt-dev"
source="https://github.com/lxqt/lxqt-qtplugin/releases/download/$pkgver/lxqt-qtplugin-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -26,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="33188bc03ee48a9b6e3cc5823cdcb5c96dba0cda65da511fe603d952c5de24e292cb02208cf357b04718df90f98d53bf48eaf6793d70d043214e429f57ccf53c lxqt-qtplugin-0.14.0.tar.xz"
+sha512sums="1d6306d396e560fbab1c64e2dda47e0456e6d8fcff077bcb7104adb8f89ef73bfef9457ab5b65aa07101acc3d7d2701efb88e8d36a0c74780a187480288acbea lxqt-qtplugin-1.4.0.tar.xz"
diff --git a/user/lxqt-runner/APKBUILD b/user/lxqt-runner/APKBUILD
index d44d72c1e..8a98051f8 100644
--- a/user/lxqt-runner/APKBUILD
+++ b/user/lxqt-runner/APKBUILD
@@ -1,26 +1,27 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lxqt-runner
-pkgver=0.14.1
+pkgver=1.4.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="Qt-based application launcher for LXQt"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
arch="all"
+options="!check" # No test suite.
license="LGPL-2.1+"
depends=""
-makedepends="cmake extra-cmake-modules lxqt-build-tools>=0.6.0
- liblxqt-dev>=${pkgver%.*}.0 lxqt-globalkeys-dev>=${pkgver%.*}.0
+makedepends="cmake extra-cmake-modules lxqt-build-tools>=$_lxqt
+ liblxqt-dev>=${pkgver%.*} lxqt-globalkeys-dev>=${pkgver%.*}
muparser-dev kwindowsystem-dev menu-cache-dev qt5-qttools-dev
qt5-qtsvg-dev"
subpackages="$pkgname-doc"
-source="https://github.com/lxqt/lxqt-runner/releases/download/$pkgver/lxqt-runner-$pkgver.tar.xz"
+source="https://github.com/lxqt/lxqt-runner/releases/download/$pkgver/lxqt-runner-$pkgver.tar.xz
+ revert-kwindowsystem-bump.patch"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -28,18 +29,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="62d196d37e87bc9154fa2cd9abcb8671277bffdb8673a6531bcb93161944cb8a31298587f8323d79a290292fc73765ea15990106828335879b87029ff1aba28c lxqt-runner-0.14.1.tar.xz"
+sha512sums="53ead3b6cd45cbf57a01c06861a97f20ddab9f3a5f3a90b3b9c3e6c3b67344feec99e11e14a90a0d0a6beb7e0cf74e092b5664d5f8ec32f827893623e104ee12 lxqt-runner-1.4.0.tar.xz
+fe7d33dbdcb4500391c586bfbd43ab3e4dc660810a482fa38dcd6142b8f50df8f3ab0b53e7c71eeb09ecdc48056d490347cf68a62d01de809d5899f6152d1ca7 revert-kwindowsystem-bump.patch"
diff --git a/user/lxqt-runner/revert-kwindowsystem-bump.patch b/user/lxqt-runner/revert-kwindowsystem-bump.patch
new file mode 100644
index 000000000..a640b193a
--- /dev/null
+++ b/user/lxqt-runner/revert-kwindowsystem-bump.patch
@@ -0,0 +1,92 @@
+diff '--color=auto' -Nurd lxqt-runner-1.4.0/CMakeLists.txt lxqt-runner-1.4.0.new/CMakeLists.txt
+--- lxqt-runner-1.4.0/CMakeLists.txt 2023-11-05 04:08:33.000000000 -0800
++++ lxqt-runner-1.4.0.new/CMakeLists.txt 2023-11-26 05:46:06.721141501 -0800
+@@ -25,7 +25,7 @@
+ )
+
+ # Minimum Versions
+-set(KF5_MINIMUM_VERSION "5.101.0")
++set(KF5_MINIMUM_VERSION "5.36.0")
+ set(LIBMENUCACHE_MINIMUM_VERSION "1.1.0")
+ set(LXQT_MINIMUM_VERSION "1.4.0")
+ set(LXQT_GLOBALKEYS_MINIMUM_VERSION "1.4.0")
+diff '--color=auto' -Nurd lxqt-runner-1.4.0/dialog.cpp lxqt-runner-1.4.0.new/dialog.cpp
+--- lxqt-runner-1.4.0/dialog.cpp 2023-11-05 04:08:33.000000000 -0800
++++ lxqt-runner-1.4.0.new/dialog.cpp 2023-11-26 05:46:44.460840536 -0800
+@@ -55,7 +55,6 @@
+ #include <QScrollBar>
+
+ #include <KWindowSystem/KWindowSystem>
+-#include <KWindowSystem/KX11Extras>
+
+ #define DEFAULT_SHORTCUT "Alt+F2"
+
+@@ -201,8 +200,8 @@
+ ************************************************/
+ void Dialog::showEvent(QShowEvent *event)
+ {
+- connect(KX11Extras::self(), &KX11Extras::activeWindowChanged, this, &Dialog::onActiveWindowChanged);
+- connect(KX11Extras::self(), &KX11Extras::currentDesktopChanged, this, &Dialog::onCurrentDesktopChanged);
++ connect(KWindowSystem::self(), &KWindowSystem::activeWindowChanged, this, &Dialog::onActiveWindowChanged);
++ connect(KWindowSystem::self(), &KWindowSystem::currentDesktopChanged, this, &Dialog::onCurrentDesktopChanged);
+ return QDialog::showEvent(event);
+ }
+
+@@ -213,8 +212,8 @@
+ void Dialog::hideEvent(QHideEvent *event)
+ {
+ QDialog::hideEvent(event);
+- disconnect(KX11Extras::self(), &KX11Extras::currentDesktopChanged, this, &Dialog::onCurrentDesktopChanged);
+- disconnect(KX11Extras::self(), &KX11Extras::activeWindowChanged, this, &Dialog::onActiveWindowChanged);
++ disconnect(KWindowSystem::self(), &KWindowSystem::currentDesktopChanged, this, &Dialog::onCurrentDesktopChanged);
++ disconnect(KWindowSystem::self(), &KWindowSystem::activeWindowChanged, this, &Dialog::onActiveWindowChanged);
+ }
+
+
+@@ -349,7 +348,7 @@
+ {
+ // Using KWindowSystem to detect the active window since
+ // QWidget::isActiveWindow is not working reliably.
+- if (isVisible() && (KX11Extras::activeWindow() == winId()))
++ if (isVisible() && (KWindowSystem::activeWindow() == winId()))
+ {
+ hide();
+ }
+@@ -357,7 +356,7 @@
+ {
+ realign();
+ show();
+- KX11Extras::forceActiveWindow(winId());
++ KWindowSystem::forceActiveWindow(winId());
+ ui->commandEd->setFocus();
+ ui->commandEd->selectAll();
+ }
+@@ -378,7 +377,7 @@
+ screenNumber = screen ? screens.indexOf(screen) : 0;
+ }
+
+- desktop = screens.at(screenNumber)->availableGeometry().intersected(KX11Extras::workArea(screenNumber));
++ desktop = screens.at(screenNumber)->availableGeometry().intersected(KWindowSystem::workArea(screenNumber));
+
+ QRect rect = this->geometry();
+ rect.moveCenter(desktop.center());
+@@ -452,7 +451,7 @@
+ if (mDesktopChanged)
+ {
+ mDesktopChanged = false;
+- KX11Extras::forceActiveWindow(winId());
++ KWindowSystem::forceActiveWindow(winId());
+ } else
+ {
+ hide();
+@@ -468,8 +467,8 @@
+ {
+ if (isVisible())
+ {
+- KX11Extras::setOnDesktop(winId(), screen);
+- KX11Extras::forceActiveWindow(winId());
++ KWindowSystem::setOnDesktop(winId(), screen);
++ KWindowSystem::forceActiveWindow(winId());
+ //Note: workaround for changing desktop while runner is shown
+ // The KWindowSystem::forceActiveWindow may fail to correctly activate runner if there
+ // are any other windows on the new desktop (probably because of the sequence while WM
diff --git a/user/lxqt-session/APKBUILD b/user/lxqt-session/APKBUILD
index 0b960dee0..6defb32e8 100644
--- a/user/lxqt-session/APKBUILD
+++ b/user/lxqt-session/APKBUILD
@@ -1,24 +1,24 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lxqt-session
-pkgver=0.14.1
+pkgver=1.4.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="Session management utilities for LXQt"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
arch="all"
+options="!check" # No test suite.
license="LGPL-2.1+"
-depends="xdg-user-dirs"
-makedepends="cmake extra-cmake-modules lxqt-build-tools>=0.6.0 eudev-dev
- liblxqt-dev>=${pkgver%.*}.0 qt5-qttools-dev kwindowsystem-dev"
+depends="qtxdg-tools xdg-user-dirs"
+makedepends="cmake extra-cmake-modules lxqt-build-tools>=$_lxqt eudev-dev
+ liblxqt-dev>=${pkgver%.*} procps-dev qt5-qttools-dev kwindowsystem-dev"
subpackages="$pkgname-doc"
source="https://github.com/lxde/lxqt-session/releases/download/$pkgver/lxqt-session-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -26,20 +26,18 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
rm "$pkgdir"/usr/bin/startlxqt
rm "$pkgdir"/usr/share/man/man1/start*
}
-sha512sums="9274564f3eabe33744bbe8555b1177d8ff6f241f5849bef29f0bb344f506e590e1deab87bf2fdeb867872ebaa0262cda0400f16179951fd66fbcb4d9f7358c4c lxqt-session-0.14.1.tar.xz"
+sha512sums="4f5731969582222eef9d0d2f2b37c4a160c3c6469f3a16cb4b1804ba76a9320d36b0ed91cada6ee905339ed8cfbd443851804086d978424c4d79045cc90e1629 lxqt-session-1.4.0.tar.xz"
diff --git a/user/lxqt-sudo/APKBUILD b/user/lxqt-sudo/APKBUILD
index 5a15a9cfb..95f141d66 100644
--- a/user/lxqt-sudo/APKBUILD
+++ b/user/lxqt-sudo/APKBUILD
@@ -1,25 +1,24 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lxqt-sudo
-pkgver=0.14.1
+pkgver=1.4.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="Graphical LXQt utility for sudo/su"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
arch="all"
options="!check" # No test suite.
license="LGPL-2.1+"
depends="sudo"
-makedepends="cmake extra-cmake-modules qt5-qtbase-dev lxqt-build-tools>=0.6.0
- liblxqt-dev>=${pkgver%.*}.0 qt5-qttools-dev kwindowsystem-dev"
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev lxqt-build-tools>=$_lxqt
+ liblxqt-dev>=${pkgver%.*} qt5-qttools-dev kwindowsystem-dev"
subpackages="$pkgname-doc"
source="https://github.com/lxqt/lxqt-sudo/releases/download/$pkgver/lxqt-sudo-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="b2741ead9c03c2dddf878b7658316ad0ce170068aca413b48b2f614e6ee09e7494e9907f7bf46de09c84e50b75cd523b059d47f9a0d2be11b340824475ca9222 lxqt-sudo-0.14.1.tar.xz"
+sha512sums="0f9eda1ae4272410b18fdce1059702715c1f8ea3d75893a00d18890b713cd0269a727f95e95959a3156d998447770b666119b068c2d1af9686938fb03a59e16e lxqt-sudo-1.4.0.tar.xz"
diff --git a/user/lxqt-themes/APKBUILD b/user/lxqt-themes/APKBUILD
index 233511d95..69b7aee6e 100644
--- a/user/lxqt-themes/APKBUILD
+++ b/user/lxqt-themes/APKBUILD
@@ -1,23 +1,22 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lxqt-themes
-pkgver=0.14.0
+pkgver=1.3.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="Core themes for LXQt"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
arch="noarch"
options="!check" # No test suite.
license="LGPL-2.1+"
depends=""
-makedepends="cmake lxqt-build-tools>=0.6.0"
+makedepends="cmake lxqt-build-tools>=$_lxqt"
source="https://github.com/lxde/lxqt-themes/releases/download/$pkgver/lxqt-themes-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -25,13 +24,12 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="622449df60f5f50d59ab308a7aaae35114e91bda48e112fb2abb2c394bfdfc5794d2bf0c6ce63689a29081a31bdde191e3c8cb7217f833d76a407f9970eb1fb2 lxqt-themes-0.14.0.tar.xz"
+sha512sums="b07bd6223b5d39bc728722bfe88698692d283b8fb5af302c0c74f1aca32fc8d53d904fe3ad60e3e0d8d81d33fc1404856e2d6d360a71f3ec3d1f6e602a2941e8 lxqt-themes-1.3.0.tar.xz"
diff --git a/user/lynx/APKBUILD b/user/lynx/APKBUILD
index d19215e41..3fcc569ac 100644
--- a/user/lynx/APKBUILD
+++ b/user/lynx/APKBUILD
@@ -1,10 +1,8 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
-# Contributor: Kiyoshi Aman <kiyoshi.aman@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=lynx
-pkgver=2.8.9_p1
-_relver=${pkgver/_p/rel.}
-_v=${_relver%rel.*}
+pkgver=2.9.2
pkgrel=0
pkgdesc="Cross-platform text-based browser"
url="https://lynx.invisible-island.net/"
@@ -13,11 +11,10 @@ license="GPL-2.0-only"
depends="gzip"
makedepends="glib-dev ncurses-dev openssl-dev perl utmps-dev zlib-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://invisible-mirror.net/archives/lynx/tarballs/${pkgname}${_relver}.tar.bz2"
-builddir="$srcdir"/${pkgname}${_relver}
+source="https://invisible-island.net/archives/lynx/tarballs/${pkgname}${pkgver}.tar.bz2"
+builddir="$srcdir/${pkgname}${pkgver}"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,21 +25,20 @@ build() {
--localstatedir=/var \
--enable-ipv6 \
--enable-nls \
+ --with-screen=ncursesw \
--with-ssl
make helpdir=/usr/share/doc/lynx/help \
docdir=/usr/share/doc/lynx
}
check() {
- cd "$builddir"
./lynx -version
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install install-help install-doc \
helpdir=/usr/share/doc/lynx/help \
docdir=/usr/share/doc/lynx
}
-sha512sums="61edbe082684fcbd91bdbf4f4d27c3baf92358811aaffc2f8af46adf23ca7b48aede1520fc5f2a8fc974a2f4bbf4e57e7e6027a187bfc6101e56878c98178e6d lynx2.8.9rel.1.tar.bz2"
+sha512sums="bb9ed23a5f8664ca8bccd95cc55683849aa707f601e209d84e0acaed151b78cd772316f527881022ff120049c4fc586c05d579f9d616a2b108d9ddfaa5b2159d lynx2.9.2.tar.bz2"
diff --git a/user/mac-fdisk/APKBUILD b/user/mac-fdisk/APKBUILD
index 1120b249b..fa5b7d902 100644
--- a/user/mac-fdisk/APKBUILD
+++ b/user/mac-fdisk/APKBUILD
@@ -7,8 +7,8 @@ pkgrel=2
pkgdesc="68K and PowerPC fixed disk partitioning utility"
url="https://adelielinux.org/"
arch="all !aarch64" # Literally does not support this arch.
-license="GPL-2.0"
options="!check" # No test suite.
+license="GPL-2.0"
depends=""
makedepends="linux-headers"
subpackages="$pkgname-doc"
@@ -23,16 +23,15 @@ source="https://distfiles.adelielinux.org/source/mac-fdisk_0.1.orig.tar.gz
mac-fdisk-large-disk-support.patch
mac-fdisk-largerthan2gb.patch
mac-fdisk-non-glibc-support.patch
- flush-stdout.patch"
+ flush-stdout.patch
+ "
builddir="$srcdir/$pkgname-$_pkgver.orig"
build() {
- cd "$builddir"
make CFLAGS="-D_GNU_SOURCE"
}
package() {
- cd "$builddir"
mkdir -p "$pkgdir"/sbin
make DESTDIR="$pkgdir" install
diff --git a/user/mactel-boot/APKBUILD b/user/mactel-boot/APKBUILD
index 8909202af..1eff3f666 100644
--- a/user/mactel-boot/APKBUILD
+++ b/user/mactel-boot/APKBUILD
@@ -11,10 +11,10 @@ license="GPL-2.0+"
depends=""
makedepends=""
subpackages="$pkgname-doc"
-source="http://www.codon.org.uk/~mjg59/mactel-boot/mactel-boot-$pkgver.tar.bz2"
+#source="http://www.codon.org.uk/~mjg59/$pkgname/$pkgname-$pkgver.tar.bz2"
+source="https://distfiles.adelielinux.org/source/upstream/$pkgname-$pkgver.tar.bz2"
build() {
- cd "$builddir"
make hfs-bless
}
diff --git a/user/mailcap/APKBUILD b/user/mailcap/APKBUILD
new file mode 100644
index 000000000..91cc3598c
--- /dev/null
+++ b/user/mailcap/APKBUILD
@@ -0,0 +1,22 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Ermine <mustela@erminea.space>
+pkgname=mailcap
+pkgver=2.1.54
+pkgrel=0
+pkgdesc="Helper application and MIME type associations for file types"
+url="https://pagure.io/mailcap"
+arch="noarch"
+license="Public-Domain"
+options="!check" # No test suite.
+subpackages="$pkgname-doc"
+source="https://releases.pagure.org/mailcap/mailcap-$pkgver.tar.xz"
+
+package() {
+ make install DESTDIR="$pkgdir"
+ rm -Rf "$pkgdir"/etc/nginx
+}
+
+sha512sums="
+a80caba013b644111f163d8ef74fe801d7266cf4edd38ca723f98fb12a103a24e84a8fca0c569beb05ca0f407437ed1282306b30303c38327b744194c6fe80b2 mailcap-2.1.54.tar.xz
+"
+sha512sums="a80caba013b644111f163d8ef74fe801d7266cf4edd38ca723f98fb12a103a24e84a8fca0c569beb05ca0f407437ed1282306b30303c38327b744194c6fe80b2 mailcap-2.1.54.tar.xz"
diff --git a/user/makedepend/APKBUILD b/user/makedepend/APKBUILD
index 13d8c1e05..2f6c712b1 100644
--- a/user/makedepend/APKBUILD
+++ b/user/makedepend/APKBUILD
@@ -1,7 +1,6 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=makedepend
-pkgver=1.0.6
+pkgver=1.0.9
pkgrel=0
pkgdesc="Utility for making makefile dependencies"
url="https://www.freedesktop.org/"
@@ -10,7 +9,7 @@ license="MIT"
depends=""
makedepends="util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/util/${pkgname}-${pkgver}.tar.bz2"
+source="https://www.X.Org/releases/individual/util/$pkgname-$pkgver.tar.xz"
build() {
./configure \
@@ -29,4 +28,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="eb0e8ee8ab7515806d7d98a060cdcd392ec38e4225e5e05db26daa6651f185d0b764aab403edeea904d4d23211b1f7db20daeee6eafce8abe65225784ed0aa42 makedepend-1.0.6.tar.bz2"
+sha512sums="68d289656314dc9f12c792d0e394cfbc95404a0d01155dbcb38313d451b506da48a3d44183f568a2cbb2b1d1da9e26703a0d92f2bb658f72fc968eeb03bf2fe8 makedepend-1.0.9.tar.xz"
diff --git a/user/marble/APKBUILD b/user/marble/APKBUILD
index 00df90902..9b61ba75e 100644
--- a/user/marble/APKBUILD
+++ b/user/marble/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=marble
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Free, open-source map and virtual globe"
url="https://marble.kde.org/"
@@ -15,10 +15,9 @@ makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev zlib-dev
kio-dev kparts-dev kcrash-dev ki18n-dev phonon-dev plasma-framework-dev
qt5-qtpositioning-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-libs"
-source="https://download.kde.org/stable/applications/$pkgver/src/marble-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/marble-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -29,13 +28,21 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
+libs() {
+ pkgdesc="$pkgdesc (libraries)"
+ local file=
+ for file in "$pkgdir"/usr/lib/lib*.so.[0-9]*; do
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$file" "$subpkgdir"/usr/lib/
+ done
+}
+
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="af6147a288021a3056892bae8d9c83b6ecfc581c7237d3fa04a579e4461779a5dacb0e22b21f0e8af5032f75d827a56d197369c85193f0188140ac361777a851 marble-18.12.3.tar.xz"
+sha512sums="8f6eb78bbb9cfa032ac9673f1b760734e5e7aae37a5309f7b267a2983c50c96d3f24ec9943441ac8bf1c0107bad21cffe627cf1f240cab199c7d4fefd3521932 marble-22.04.2.tar.xz"
diff --git a/user/marco/APKBUILD b/user/marco/APKBUILD
index 99289220b..4ccdec0ef 100644
--- a/user/marco/APKBUILD
+++ b/user/marco/APKBUILD
@@ -1,21 +1,21 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=marco
-pkgver=1.22.0
-pkgrel=0
+pkgver=1.26.2
+pkgrel=1
pkgdesc="Window manager for the MATE desktop environment"
url="https://mate-desktop.org"
arch="all"
license="GPL-2.0+ AND MIT-advertising AND MIT-CMU"
-depends=""
+depends="mate-desktop mate-settings-daemon"
makedepends="gtk+3.0-dev intltool itstool libcanberra-dev libice-dev libsm-dev
- libxml2-utils zenity"
+ libxml2-utils libxres-dev startup-notification-dev wayland-protocols zenity"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/marco-$pkgver.tar.xz
- correctly-posix.patch"
+ correctly-posix.patch
+ "
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,14 +27,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="0935ca1532fde882e21ebbc67b41afe80e15e8519b413b9b8bde351196be347a8dcac2e092da818ec0bc700216e38211f192a891eafec8ac7d9bf63d3a42328d marco-1.22.0.tar.xz
+sha512sums="326ed378be891806a9750021626863e00d80f29af8fe920eeb0910d9eb2ece534babf012e1aced6b071b6c0fdd8a77ea8c948d68a70f9280822b30231aa934b9 marco-1.26.2.tar.xz
b377b2a7d2af094a8b4bd6d1827c85f9675656cd8bdc6892b334c8479d188459ec8585fed3c746fdaef5820f768ce93605586693a3308f0db2d6f58e08f4df49 correctly-posix.patch"
diff --git a/user/mariadb/APKBUILD b/user/mariadb/APKBUILD
new file mode 100644
index 000000000..ee293e709
--- /dev/null
+++ b/user/mariadb/APKBUILD
@@ -0,0 +1,276 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=mariadb
+pkgver=10.6.4
+pkgrel=1
+pkgdesc="Open source database server"
+url="https://mariadb.org/"
+arch="all"
+options="suid" # required for pam_auth plugin, which is needed for
+ # mysql_install_db to work
+options="$options !dbg" # abuild can't handle splitting -dbg with the way
+ # this build's package() function works.
+license="GPL-2.0-only"
+pkgusers="mysql"
+pkggroups="mysql"
+depends="$pkgname-common"
+depends_dev="openssl-dev zlib-dev"
+makedepends="$depends_dev bison cmake curl-dev libaio-dev libarchive-dev
+ libedit-dev libevent-dev libexecinfo-dev libxml2-dev ncurses-dev
+ linux-pam-dev pcre2-dev xz-dev"
+_mytopdeps="perl perl-dbi perl-dbd-mysql perl-getopt-long perl-socket
+ perl-term-readkey"
+subpackages="$pkgname-client $pkgname-server $pkgname-libs $pkgname-embedded
+ $pkgname-common $pkgname-backup mytop::noarch $pkgname-openrc
+ $pkgname-doc $pkgname-dev"
+source="https://archive.mariadb.org/$pkgname-$pkgver/source/$pkgname-$pkgver.tar.gz
+ ppchax.patch
+ missing-header.patch
+ mariadb.initd
+ mariadb-server.limits
+ "
+
+# secfixes:
+# 10.6.4-r0:
+# - CVE-2020-13249
+# - CVE-2020-2814
+# - CVE-2020-2812
+# - CVE-2020-2760
+# - CVE-2020-2752
+# - CVE-2020-28912
+# - CVE-2020-14812
+# - CVE-2020-14789
+# - CVE-2020-14776
+# - CVE-2020-14765
+# - CVE-2021-27928
+# - CVE-2021-2166
+# - CVE-2021-2154
+# - CVE-2021-2389
+# - CVE-2021-2389
+# 10.4.12-r0:
+# - CVE-2020-7221
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+
+ _release="\
+ -DBUILD_CONFIG=mysql_release \
+ -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_CXX_FLAGS=\"$CXXFLAGS -DNDEBUG\" \
+ -DCMAKE_C_FLAGS=\"$CFLAGS -DNDEBUG\" \
+ -DWITH_DEFAULT_COMPILER_OPTIONS=NO \
+ -DWITH_DEFAULT_FEATURE_SET=NO "
+
+ # NUMA is disabled because all arches do not support it
+ # SKIP_TESTS skips client unittests that require a server to be present
+ # JEMALLOC is reported to not work on musl, TODO: test this
+ # ASAN also doesn't work on musl iirc
+ _deps="\
+ -DWITH_MARIABACKUP=ON \
+ -DWITH_NUMA=OFF \
+ -DWITH_LIBNUMA=OFF \
+ -DWITH_LIBWSREP=ON \
+ -DWITH_UNIT_TESTS=ON \
+ -DWITH_LIBEDIT=ON \
+ -DWITH_EMBEDDED_SERVER=ON \
+ -DWITH_UNITTEST=OFF \
+ -DWITH_ASAN=OFF \
+ -DWITH_JEMALLOC=OFF \
+ -DWITH_LIBWRAP=OFF \
+ -DWITH_SYSTEMD=no \
+ -DWITH_VALGRIND=OFF \
+ -DWITH_COMMENT=\"${DISTRO_NAME:-Adélie Linux}\" \
+ -DENABLED_LOCAL_INFILE=ON \
+ -DENABLED_PROFILING=OFF \
+ -DSKIP_TESTS=ON "
+
+ # AWS_KEY_MANAGEMENT makes this package non-redistributable, disable it
+ _plugins="\
+ -DPLUGIN_ARCHIVE=YES \
+ -DPLUGIN_ARIA=YES \
+ -DPLUGIN_BLACKHOLE=YES \
+ -DPLUGIN_CSV=YES \
+ -DPLUGIN_MYISAM=YES \
+ -DAUTH_GSSAPI_PLUGIN_TYPE=NO \
+ -DPLUGIN_AUTH_GSSAPI=NO \
+ -DPLUGIN_AWS_KEY_MANAGEMENT=NO \
+ -DPLUGIN_CASSANDRA=NO \
+ -DPLUGIN_FEEDBACK=NO "
+
+ # Investigate turning more of these on
+ _innodb="\
+ -DWITH_INNODB_LZMA=YES \
+ -DWITH_INNODB_BZIP2=NO \
+ -DWITH_INNODB_LZ4=NO \
+ -DWITH_INNODB_LZO=NO \
+ -DWITH_INNODB_SNAPPY=NO "
+
+ # MongoDB is not libre software, disable it
+ _connect="\
+ -DCONNECT_WITH_MYSQL=YES \
+ -DCONNECT_WITH_MONGO=NO \
+ -DCONNECT_WITH_ODBC=NO \
+ -DCONNECT_WITH_JDBC=NO \
+ -DCONNECT_WITH_LIBXML2=system "
+
+ # non-portable things, things that don't work on musl, BE, 32-bit etc
+ _evil="\
+ -DPLUGIN_MROONGA=NO \
+ -DPLUGIN_ROCKSDB=NO \
+ -DPLUGIN_TOKUDB=NO "
+
+ _system_libs="\
+ -DWITH_LIBARCHIVE=system \
+ -DWITH_PCRE=system \
+ -DWITH_SSL=system \
+ -DWITH_ZLIB=system \
+ -DWITH_EXTERNAL_ZLIB=YES \
+ -DCONC_WITH_EXTERNAL_ZLIB=YES "
+
+ _system_paths="\
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DSYSCONFDIR=/etc/mysql \
+ -DMYSQL_DATADIR=/var/lib/mariadb \
+ -DMYSQL_UNIX_ADDR=/var/run/mariadb/mysqld.sock \
+ -DINSTALL_UNIX_ADDRDIR=/var/run/mariadb/mysqld.sock \
+ -DPKG_CONFIG_EXECUTABLE=/usr/bin/pkgconf \
+ -DINSTALL_BINDIR=bin \
+ -DINSTALL_SCRIPTDIR=bin \
+ -DINSTALL_SBINDIR=sbin \
+ -DINSTALL_INCLUDEDIR=include/mysql \
+ -DINSTALL_LIBDIR=lib \
+ -DINSTALL_PLUGINDIR=lib/mariadb/plugin \
+ -DINSTALL_DOCDIR=share/doc/$pkgname \
+ -DINSTALL_DOCREADMEDIR=share/doc/$pkgname \
+ -DINSTALL_MANDIR=share/man \
+ -DINSTALL_MYSQLSHAREDIR=share/mariadb \
+ -DINSTALL_SUPPORTFILESDIR=share/mariadb \
+ -DSUFFIX_INSTALL_DIR=\"\" "
+
+ _buildflags=$(echo "\
+ ${_release}\
+ ${_deps}\
+ ${_plugins}\
+ ${_innodb}\
+ ${_connect}\
+ ${_evil}\
+ ${_system_libs}\
+ ${_system_paths}\
+ ${CMAKE_CROSSOPTS}" | tr -d '\t')
+ echo "Build Flags are: $_buildflags"
+ eval "cmake $_buildflags ."
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E '^(test-connect)$'
+}
+
+package() {
+ depends="$pkgname-client $pkgname-server"
+ install -m755 -D ${srcdir}/mariadb.initd ${pkgdir}/etc/init.d/mariadb
+}
+
+openrc() {
+ default_openrc
+ depends="mariadb-server=$pkgver-r$pkgrel"
+}
+
+_install_component() {
+ cd "$builddir"
+ component=$1
+ prefix=$subpkgdir/usr
+ msg "Installing component \"$component\" into $prefix"
+ cmake -DCMAKE_INSTALL_PREFIX=${prefix} \
+ -DCOMPONENT=${component} \
+ -P cmake_install.cmake
+}
+
+libs() {
+ pkgdesc="Libraries for the MariaDB database"
+ _install_component SharedLibraries
+}
+
+client() {
+ pkgdesc="The MariaDB database client"
+ depends="mariadb-common=$pkgver-r$pkgrel"
+ for part in Client ClientPlugins; do
+ _install_component ${part}
+ done
+}
+
+server() {
+ pkgdesc="The MariaDB database server"
+ depends="mariadb-common=$pkgver-r$pkgrel"
+ install="$pkgname-server.pre-install"
+ for part in Server Server_Scripts IniFiles connect-engine; do
+ _install_component ${part}
+ done
+
+ install -m755 -D ${srcdir}/mariadb-server.limits \
+ ${subpkgdir}/etc/security/limits.d/mariadb.conf
+}
+
+
+common() {
+ pkgdesc="MariaDB common files for both server and client"
+ replaces="mysql-common"
+ depends=
+
+ SHARE_PATH=${pkgdir}-server/usr/share
+ mkdir -p ${subpkgdir}/usr
+ mv $SHARE_PATH ${subpkgdir}/usr
+
+ _install_component Common
+}
+
+embedded() {
+ pkgdesc="MariaDB embedded server and embeddable library"
+
+ # move mysql-embedded from client subpackage to embedded
+ mkdir -p ${subpkgdir}/usr/bin
+ BIN_PATH=${pkgdir}-client/usr/bin
+ mv $BIN_PATH/mysql_embedded ${subpkgdir}/usr/bin/
+
+ # move embedded mysqld libraries from server package to embedded
+ mkdir -p ${subpkgdir}/usr/lib
+ LIB_PATH=${pkgdir}-server/usr/lib
+ MYSQLD_ELIB=$(readlink $LIB_PATH/libmysqld.so)
+ mv $LIB_PATH/$MYSQLD_ELIB ${subpkgdir}/usr/lib/
+ mv $LIB_PATH/libmysqld.so ${subpkgdir}/usr/lib/
+ mv $LIB_PATH/libmariadbd.so ${subpkgdir}/usr/lib/
+}
+
+backup() {
+ pkgdesc="The mariabackup tool for physical online backups"
+ _install_component backup
+}
+
+mytop() {
+ pkgdesc="Command line tool used for monitoring MariaDB performance"
+ depends="$_mytopdeps"
+ _install_component Mytop
+}
+
+dev() {
+ replaces="libmysqlclient mysql-dev"
+ provides="mysql-dev=$pkgver-r$pkgrel"
+ depends="$pkgname-libs"
+ _install_component Development
+}
+
+doc() {
+ for part in ManPagesClient ManPagesServer ManPagesDevelopment; do
+ _install_component ${part}
+ done
+ default_doc
+}
+
+sha512sums="c216244ce126e6f8954303a76078dc12146e8ea941041edd215dc05201adda1d5158cd7f1c9831328f783aba4f884965ae288f33bbc43229bc6224a4f1079071 mariadb-10.6.4.tar.gz
+0cb265173923cb85517a1144cfa904dafe059c1f859e13b4415442cabbb414db5904f2dcee0e865914b0f9c181d1d61d220834cb187b14f8538a0d2552025a9d ppchax.patch
+6618ee5608b06941da08872ea7ea16149b72a0174b157f970c03a9a9110efe0704c72742e63181f8059244e89fe25d1b07f1c87fed72115d62f347f58fafccdd missing-header.patch
+1a2b058aad5fd6d6964db58b663591299a5bf82e7ad21a105d53a3e7ad1c3674c737caf3ee12799cce947cf8ead1f3e789dd8afcfc769891f08208b3006f9654 mariadb.initd
+d47324b34a87410eddb554f65199d145dfba9ae40407a62fb77df4e1ebf13087d15eb28e61e5e7cc9139eb42f093a0955136edae4020822652a1f0b4e219849e mariadb-server.limits"
diff --git a/user/mariadb/mariadb-server.limits b/user/mariadb/mariadb-server.limits
new file mode 100644
index 000000000..520783992
--- /dev/null
+++ b/user/mariadb/mariadb-server.limits
@@ -0,0 +1,3 @@
+#<domain> <type> <item> <value>
+@mysql soft nofile 65535
+@mysql hard nofile 65535
diff --git a/user/mariadb/mariadb-server.pre-install b/user/mariadb/mariadb-server.pre-install
new file mode 100644
index 000000000..de2bcd795
--- /dev/null
+++ b/user/mariadb/mariadb-server.pre-install
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+groupadd -g 60 -r mysql
+useradd -M -N -r -u 60 -g 60 -c "MariaDB Database User" -d /var/lib/mysql -s /sbin/nologin mysql
+
+mkdir /var/lib/mysql
+chown mysql:mysql /var/lib/mysql
diff --git a/user/mariadb/mariadb.initd b/user/mariadb/mariadb.initd
new file mode 100644
index 000000000..4e1cf8d3e
--- /dev/null
+++ b/user/mariadb/mariadb.initd
@@ -0,0 +1,47 @@
+#!/sbin/openrc-run
+
+getconf() {
+ v=$(my_print_defaults --mysqld | grep ^--$1)
+ [ -z $v ] && echo $2 || echo ${v#*=}
+}
+
+retry="60"
+extra_stopped_commands="setup"
+
+user=${MYSQLD_USER:-mysql}
+group=${MYSQLD_GROUP:-mysql}
+default_datadir=$(getconf datadir "/var/lib/mariadb")
+datadir=${MYSQLD_DATADIR:-$default_datadir}
+
+command="/usr/bin/mysqld_safe"
+command_args="--syslog --nowatch --user=$user"
+
+depend() {
+ use net
+ need localmount
+}
+
+setup() {
+ checkpath -d -m 1775 -o $user:$group /run/mariadb
+ ebegin "Creating a new MySQL database in $datadir"
+ mysql_install_db --user=$user --datadir=$datadir
+ eend $?
+}
+
+start_pre() {
+ pidfile=$(getconf pid-file "/run/mariadb/mysqld.pid")
+ command_args="$command_args --pid-file=$pidfile"
+ if [ ! -d $datadir/mysql ]; then
+ eerror "Data directory '$datadir' is empty or invalid."
+ eerror "Run '/etc/init.d/mariadb setup' to create new database."
+ fi
+}
+
+start_post() {
+ ewaitfile 10 $(getconf socket "/run/mariadb/mysqld.sock")
+}
+
+stop_pre() {
+ pidfile=$(getconf pid-file "/run/mariadb/mysqld.pid")
+}
+
diff --git a/user/mariadb/missing-header.patch b/user/mariadb/missing-header.patch
new file mode 100644
index 000000000..bdb89daa3
--- /dev/null
+++ b/user/mariadb/missing-header.patch
@@ -0,0 +1,12 @@
+Needed for compilation on GCC 13.
+
+--- mariadb-10.6.4/tpool/aio_linux.cc.old 2021-08-03 09:48:41.000000000 -0500
++++ mariadb-10.6.4/tpool/aio_linux.cc 2024-05-28 18:55:26.914066003 -0500
+@@ -18,6 +18,7 @@
+
+ # include <thread>
+ # include <atomic>
++# include <cstdio>
+ # include <libaio.h>
+ # include <sys/syscall.h>
+
diff --git a/user/mariadb/ppchax.patch b/user/mariadb/ppchax.patch
new file mode 100644
index 000000000..4ce0d304b
--- /dev/null
+++ b/user/mariadb/ppchax.patch
@@ -0,0 +1,26 @@
+--- mariadb-10.4.6/configure.cmake.old 2019-06-17 22:00:31.000000000 +0000
++++ mariadb-10.4.6/configure.cmake 2019-07-06 23:21:57.705655766 +0000
+@@ -867,6 +867,10 @@
+ return (int)__atomic_load_n(ptr, __ATOMIC_SEQ_CST);
+ }"
+ HAVE_GCC_C11_ATOMICS)
++IF(NOT HAVE_GCC_C11_ATOMICS AND CMAKE_SYSTEM_PROCESSOR MATCHES "ppc")
++ SET(CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} atomic)
++ SET(HAVE_GCC_C11_ATOMICS 1)
++ENDIF()
+
+ IF(WITH_VALGRIND)
+ SET(HAVE_valgrind 1)
+--- mariadb-10.4.6/mysys/CMakeLists.txt.old 2019-06-17 22:00:32.000000000 +0000
++++ mariadb-10.4.6/mysys/CMakeLists.txt 2019-07-07 00:03:56.956394100 +0000
+@@ -92,6 +92,10 @@
+ TARGET_LINK_LIBRARIES(mysys pthread)
+ ENDIF()
+
++IF(CMAKE_SYSTEM_PROCESSOR MATCHES "ppc")
++ TARGET_LINK_LIBRARIES(mysys atomic)
++ENDIF()
++
+ ADD_EXECUTABLE(thr_lock thr_lock.c)
+ TARGET_LINK_LIBRARIES(thr_lock mysys)
+ SET_TARGET_PROPERTIES(thr_lock PROPERTIES COMPILE_FLAGS "-DMAIN")
diff --git a/user/massif-visualizer/APKBUILD b/user/massif-visualizer/APKBUILD
new file mode 100644
index 000000000..9bcfb6490
--- /dev/null
+++ b/user/massif-visualizer/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=massif-visualizer
+pkgver=0.7.0
+pkgrel=0
+pkgdesc="Visual tool for inspecting Massif profiler data"
+url="https://kde.org/applications/development/org.kde.massif-visualizer"
+arch="all"
+license="GPL-2.0"
+depends="kgraphviewer shared-mime-info"
+makedepends="qt5-qtbase-dev qt5-qtsvg-dev qt5-qtxmlpatterns-dev cmake
+ extra-cmake-modules karchive-dev kauth-dev kcodecs-dev kcompletion-dev
+ kconfig-dev kconfigwidgets-dev kcoreaddons-dev kdiagram-dev ki18n-dev
+ kio-dev kitemviews-dev kjobwidgets-dev kparts-dev kservice-dev
+ kwidgetsaddons-dev kwindowsystem-dev kxmlgui-dev solid-dev sonnet-dev"
+subpackages="$pkgname-lang"
+source="https://download.kde.org/stable/massif-visualizer/$pkgver/src/massif-visualizer-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="058412e34c0899a34fb4080a602cb0c70a9ac707f27b72a79fb412ea35a6e8c66ce06df15b3153fdc1a70a27232f98b508c7441b657eb73466962b33f9b2f561 massif-visualizer-0.7.0.tar.xz"
diff --git a/user/mate-applets/APKBUILD b/user/mate-applets/APKBUILD
index c8d60eaf0..c86971fdf 100644
--- a/user/mate-applets/APKBUILD
+++ b/user/mate-applets/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-applets
-pkgver=1.22.0
+pkgver=1.26.1
pkgrel=0
pkgdesc="Utility applications for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -9,15 +9,14 @@ arch="all"
license="LGPL-2.0+ AND GPL-2.0+ AND GPL-2.0-only"
depends=""
makedepends="dbus-dev dbus-glib-dev gtk+3.0-dev gtksourceview-3.0-dev
- gucharmap-dev intltool itstool libmateweather-dev libnotify-dev
- libwnck-dev libxml2-dev libxml2-utils mate-panel-dev polkit-dev
- upower-dev"
+ gucharmap-dev intltool itstool libmateweather-dev libnl3-dev
+ libnotify-dev libwnck-dev libxml2-dev libxml2-utils mate-panel-dev
+ polkit-dev upower-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://pub.mate-desktop.org/releases/1.22/mate-applets-$pkgver.tar.xz"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-applets-$pkgver.tar.xz"
build() {
- cd "$builddir"
- rm -r mateweather/docs/ru
+ rm -r mateweather/docs/sr drivemount/help/tr accessx-status/docs/hy
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,13 +28,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="2f3e17414171ec5ab6967b76b1291d99783c3091b51127788f99148f46d5f2068edf7d890c3ebca1a59c29cbda4a06be11c852e5e88d4dc58e9981d906c9e34c mate-applets-1.22.0.tar.xz"
+sha512sums="7243825098f9101542b9eead2f60ac7f12e044ceb685da92a29fe72b2dc1271e1fa34dbc4c47148e2331a2af79d69f787dc8856c7112b75ef0a3dea97e4ab8fd mate-applets-1.26.1.tar.xz"
diff --git a/user/mate-backgrounds/APKBUILD b/user/mate-backgrounds/APKBUILD
index bd70d43a8..af8fe1a2e 100644
--- a/user/mate-backgrounds/APKBUILD
+++ b/user/mate-backgrounds/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-backgrounds
-pkgver=1.22.0
+pkgver=1.26.0
pkgrel=0
pkgdesc="Desktop wallpapers provided by the MATE desktop environment"
url="https://mate-desktop.org"
@@ -13,7 +13,6 @@ subpackages="$pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-backgrounds-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b7135cdb20972d50f43026cf98275faaa3c5e41bd0900bca7624a8f9ed03d0ec7f465c78aaf3da534ea6798e8cc690727a1fed8f14b3fb42a8a63bd82858ff30 mate-backgrounds-1.22.0.tar.xz"
+sha512sums="48ceb91abf6f7840a9fd7f504e887e54d234410df07dd07a2d155b28cf8d6518b743be767e02cbb774bd817e640b755eec2a73abd4d2d3685e3b4377e9a58476 mate-backgrounds-1.26.0.tar.xz"
diff --git a/user/mate-calc/APKBUILD b/user/mate-calc/APKBUILD
index f55f691fc..af3b95cea 100644
--- a/user/mate-calc/APKBUILD
+++ b/user/mate-calc/APKBUILD
@@ -1,19 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-calc
-pkgver=1.22.0
+pkgver=1.24.2
pkgrel=0
pkgdesc="Calculator utility for the MATE desktop environment"
url="https://mate-desktop.org"
arch="all"
license="GPL-2.0+ AND GPL-2.0-only"
depends=""
-makedepends="gtk+3.0-dev intltool itstool libxml2-utils libxml2-dev"
+makedepends="gtk+3.0-dev intltool itstool libxml2-utils libxml2-dev
+ wayland-protocols"
subpackages="$pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-calc-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="a0d72a17dc9e7e97ef36cb2f089db126b1f91790d6a34ae829ef9cea87e82b025ba106f08e8c677352e72423a6670a3bf8751eecc67444cd8cea8dc8f3cf6728 mate-calc-1.22.0.tar.xz"
+sha512sums="d790aefd2839237d6776c6b0508ded53d6eef52456a3025f08bcaf826f8c56754e079d50703a4f7f834f5167f802ddb3d7b95ece613e00faf3ad6f5c1d402e97 mate-calc-1.24.2.tar.xz"
diff --git a/user/mate-common/APKBUILD b/user/mate-common/APKBUILD
index e9e00f902..dab7a3c74 100644
--- a/user/mate-common/APKBUILD
+++ b/user/mate-common/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-common
-pkgver=1.22.0
+pkgver=1.26.0
pkgrel=0
pkgdesc="Additional development support for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -10,10 +10,9 @@ license="GPL-3.0-only"
depends=""
makedepends=""
subpackages="$pkgname-dev $pkgname-doc"
-source="https://pub.mate-desktop.org/releases/1.22/mate-common-$pkgver.tar.xz"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-common-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3887634081c126c6c23f560ca256ae83edbc5f77f0fc0128c2aaa2b5652672ec6f21ca29b0b44802b03c5dfd53bf0da860093ec73c46fba58f7be12a1db1d2a3 mate-common-1.22.0.tar.xz"
+sha512sums="9bfde79c9243d394f9ebc743f6a3c27199ec1e857f80020be0ff8b64a48cf1183fffd88783c1d375f2983a32c7437ca49b2f03b3e844e147c5750f71dbfb93bd mate-common-1.26.0.tar.xz"
diff --git a/user/mate-complete/APKBUILD b/user/mate-complete/APKBUILD
index f3a5ac75a..d414cd174 100644
--- a/user/mate-complete/APKBUILD
+++ b/user/mate-complete/APKBUILD
@@ -1,26 +1,33 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-complete
-pkgver=1.22.0
-pkgrel=0
-url="https://mate-desktop.org"
+pkgver=1.26.0
+pkgrel=2
pkgdesc="Complete MATE desktop environment"
+url="https://mate-desktop.org"
arch="noarch"
options="!check" # No tests
-license=" "
-depends="atril caja caja-dropbox caja-extensions engrampa eom marco
- mate-applets mate-backgrounds mate-calc mate-control-center
- mate-desktop mate-icon-theme mate-indicator-applet mate-media
- mate-menus mate-netbook mate-notification-daemon mate-panel
- mate-polkit mate-power-manager mate-screensaver mate-sensors-applet
- mate-session-manager mate-settings-daemon mate-system-monitor
- mate-terminal mate-user-guide mate-user-share mate-utils mozo pluma"
-source="org.adelie-linux.about-mate.desktop"
+license="Public-Domain"
+depends="atril caja caja-dropbox caja-extensions elogind engrampa eom marco
+ mate-applets mate-backgrounds mate-calc mate-control-center
+ mate-desktop mate-icon-theme mate-indicator-applet mate-media
+ mate-menus mate-netbook mate-notification-daemon mate-panel
+ mate-polkit mate-power-manager mate-screensaver mate-sensors-applet
+ mate-session-manager mate-settings-daemon mate-system-monitor
+ mate-terminal mate-themes mate-user-guide mate-user-share mate-utils
+ mozo pluma pluma-plugins adelie-fonts adelie-mate-theme"
+makedepends=""
+subpackages=""
+source="org.adelie-linux.about-mate.desktop
+ mate.desktop"
package() {
- cd "$srcdir"
- mkdir -p "$pkgdir"/usr/share/applications
- install -Dm644 org.adelie-linux.about-mate.desktop "$pkgdir"/usr/share/applications
+ mkdir -p "$pkgdir"/usr/share/applications "$pkgdir"/usr/share/xsessions
+ install -Dm644 "$srcdir"/org.adelie-linux.about-mate.desktop \
+ "$pkgdir"/usr/share/applications
+ install -Dm644 "$srcdir"/mate.desktop \
+ "$pkgdir"/usr/share/xsessions
}
-sha512sums="24fd0524d949a22b22e38c81667f31498bc524302c52128c10d8a5802315720543426ba82245f5e7510832c493389ff59f36be14433f1a6a6c68993f733f329c org.adelie-linux.about-mate.desktop"
+sha512sums="24fd0524d949a22b22e38c81667f31498bc524302c52128c10d8a5802315720543426ba82245f5e7510832c493389ff59f36be14433f1a6a6c68993f733f329c org.adelie-linux.about-mate.desktop
+e659289c901708167775c1203caf4412efe3fd7f1151aba55c2b9cb7bfc50cbb585ed3ee77f344859ae708339ee17026f1f346fe156c56b764d0a75e5f182225 mate.desktop"
diff --git a/user/mate-complete/mate.desktop b/user/mate-complete/mate.desktop
new file mode 100644
index 000000000..b8f3224ed
--- /dev/null
+++ b/user/mate-complete/mate.desktop
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Name=MATE
+Comment=This session logs you into MATE
+Exec=mate-session
+TryExec=mate-session
+Icon=
+Type=Application
+DesktopNames=MATE
+# Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
+Keywords=launch;MATE;desktop;session;
+
diff --git a/user/mate-control-center/APKBUILD b/user/mate-control-center/APKBUILD
index 93db69089..500644906 100644
--- a/user/mate-control-center/APKBUILD
+++ b/user/mate-control-center/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-control-center
-pkgver=1.22.0
+pkgver=1.26.1
pkgrel=0
pkgdesc="Configuration utilities for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -10,13 +10,13 @@ license="GPL-2.0-only AND GPL-2.0+ AND LGPL-2.0+ AND LGPL-2.1+ AND MIT"
depends=""
makedepends="accountsservice-dev dbus-dev dbus-glib-dev desktop-file-utils
gtk+3.0-dev intltool itstool libcanberra-dev libmatekbd-dev
- libxklavier-dev libxml2-dev libxml2-utils marco-dev mate-desktop-dev
- mate-menus-dev mate-settings-daemon-dev"
+ libxklavier-dev libxml2-dev libxml2-utils marco-dev mate-desktop-dev>=1.24.0
+ mate-menus-dev mate-settings-daemon-dev>=1.24.0 polkit-dev
+ wayland-protocols"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-control-center-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,13 +28,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3b2b88458848862a4c819d54104e9394817b29feb3d05117fe69441023ec5e6c922012395f24b5f70c9f9dbf6f8044f769840ec9996b1495441c4cb690f68371 mate-control-center-1.22.0.tar.xz"
+sha512sums="f359173596035a5ac3a73b17ab590bd9da5e202af9f203f0d6d4621877c6946e496d9a850823f8fa49bae6eac3035df7c7888c71d881c97acaa21b5e262da1a6 mate-control-center-1.26.1.tar.xz"
diff --git a/user/mate-desktop/APKBUILD b/user/mate-desktop/APKBUILD
index a09df86a9..61a584629 100644
--- a/user/mate-desktop/APKBUILD
+++ b/user/mate-desktop/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-desktop
-pkgver=1.22.0
+pkgver=1.26.2
pkgrel=0
pkgdesc="Core library for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -9,12 +9,12 @@ arch="all"
license="MIT AND LGPL-2.0+ AND GPL-2.0+"
depends=""
makedepends="dconf-dev gobject-introspection-dev gtk+3.0-dev intltool
- iso-codes-dev startup-notification-dev"
+ iso-codes-dev librsvg startup-notification-dev
+ wayland-protocols"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-desktop-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +26,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3950249c0bc026163da7f38a6fd5551c0e1e863e298e9d2ca224679b6c802d1deaf12e16ea873a2ea0539a7989a523d0495fb0dc4c556857203c0b04ab6edf7a mate-desktop-1.22.0.tar.xz"
+sha512sums="0e7d0dfdc58a5a6f1e5a8d1204a1a1d78f868eddb32cc36b54b77d7aee4f999e570dc66e0f16751e78bdb162ceb4858976fa3d7db52785cbded0b53e5cf069e3 mate-desktop-1.26.2.tar.xz"
diff --git a/user/mate-icon-theme/APKBUILD b/user/mate-icon-theme/APKBUILD
index f06e39926..4ba2e0e59 100644
--- a/user/mate-icon-theme/APKBUILD
+++ b/user/mate-icon-theme/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-icon-theme
-pkgver=1.22.1
+pkgver=1.26.0
pkgrel=0
pkgdesc="Default icon theme for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -11,10 +11,8 @@ depends=""
makedepends="icon-naming-utils-dev intltool"
subpackages="$pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-icon-theme-$pkgver.tar.xz"
-builddir="$srcdir/mate-icon-theme-$pkgver"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="640fea3dfd4d9f2edd24353e4a36d57520de356c421b24ee1aec7fca98d3f76a789808a1d005a20ed87ee089d1777376e5b3f229ce0e90b06adf242f6a79b3b9 mate-icon-theme-1.22.1.tar.xz"
+sha512sums="937d65710c1b7cc79ba0b71cd1a480597f20035380ffd5f0528c45c86bc8963189116d2c02332352170b7cd12fba5dd91f94cee9626104ab55c576d58f0636b8 mate-icon-theme-1.26.0.tar.xz"
diff --git a/user/mate-indicator-applet/APKBUILD b/user/mate-indicator-applet/APKBUILD
index 884c9e35c..6d2f03a0d 100644
--- a/user/mate-indicator-applet/APKBUILD
+++ b/user/mate-indicator-applet/APKBUILD
@@ -1,21 +1,20 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-indicator-applet
-pkgver=1.22.0
+pkgver=1.26.0
pkgrel=0
pkgdesc="MATE panel applet for consistent information display"
url="https://mate-desktop.org"
arch="all"
license="GPL-3.0+ AND LGPL-2.0+"
depends=""
-makedepends="ayatana-ido-dev gtk+3.0-dev intltool libayatana-indicator-dev
+makedepends="ayatana-ido-dev bash gtk+3.0-dev intltool libayatana-indicator-dev
mate-panel-dev"
subpackages="$pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-indicator-applet-$pkgver.tar.xz"
build() {
- cd "$builddir"
- ./configure \
+ bash ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="6e1dd133a521f247ecb648b3ffa542e326f504fd3b0719a74099e83ac1dfa9fd4d7676af284f89f69d6684e5640f240930bb0fb43bcf7d59472786adf4c3200c mate-indicator-applet-1.22.0.tar.xz"
+sha512sums="677586b4090edd22871eb034b923795a01030a5270e633a11ed711171e49f487047fbf75daf1d69d491660bdf63421b900e06fd806eeef93df101058c0130c06 mate-indicator-applet-1.26.0.tar.xz"
diff --git a/user/mate-media/APKBUILD b/user/mate-media/APKBUILD
index 9850fcf9b..9919c42df 100644
--- a/user/mate-media/APKBUILD
+++ b/user/mate-media/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-media
-pkgver=1.22.1
+pkgver=1.26.1
pkgrel=0
pkgdesc="Media utilities for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -11,10 +11,9 @@ depends=""
makedepends="gtk+3.0-dev intltool libcanberra-dev libmatemixer-dev libxml2-dev
mate-desktop-dev mate-panel-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://pub.mate-desktop.org/releases/1.22/mate-media-$pkgver.tar.xz"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-media-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e7bce9128bc6e551cd918af669d52a7ca238a280a4ca09d15822f4d5b52fd9925b647278a39067a1f2a5dd0facfad4988385233939abbdf4aefecc21d2e089d9 mate-media-1.22.1.tar.xz"
+sha512sums="2d9768628b6ad2f167f9f6759ac6d7cb69fc2a52c0ee261be6848a09b4f6e427c6ead3304951f74f07786944c29d5b79f56fecb4063b04bc0087e78562339f08 mate-media-1.26.1.tar.xz"
diff --git a/user/mate-menus/APKBUILD b/user/mate-menus/APKBUILD
index 4d4fe80d4..465898b6c 100644
--- a/user/mate-menus/APKBUILD
+++ b/user/mate-menus/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-menus
-pkgver=1.22.0
+pkgver=1.26.1
pkgrel=0
pkgdesc="Desktop menu implementation for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -10,10 +10,9 @@ license="LGPL-2.0+"
depends=""
makedepends="gobject-introspection-dev intltool"
subpackages="$pkgname-dev $pkgname-lang"
-source="https://pub.mate-desktop.org/releases/1.22/mate-menus-$pkgver.tar.xz"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-menus-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="7ca02c1bb89c83b6b331fc2e8878862fa8f02f5cd52b297aa44b36dd5c2d1ee1ffeb1641d63a10bd4deb99f63ded9c3b890a05ab7f7faf32d7f895b0a2f68d70 mate-menus-1.22.0.tar.xz"
+sha512sums="df57f653bc7a456719c24fa077b70a175d9bbaec7d55fb807e35ed66a9e0f2aaf7251bea0e7778ec98bf2b07b9f7bc25f4931a9c83ec0ae3621a1b8f257b1329 mate-menus-1.26.1.tar.xz"
diff --git a/user/mate-netbook/APKBUILD b/user/mate-netbook/APKBUILD
index 6b002e694..0d5fa3094 100644
--- a/user/mate-netbook/APKBUILD
+++ b/user/mate-netbook/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-netbook
-pkgver=1.22.0
+pkgver=1.26.0
pkgrel=0
pkgdesc="Netbook-oriented window manager for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -14,7 +14,6 @@ subpackages="$pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-netbook-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="faff1618e0a99b95b291d7556b1ccd5d0593be1ffa2b2ee30f4df2c9228ff797e9021cc7a0f6183c69b38fdb3dae1c4cb206539057174ff37a4b56b55d07c33a mate-netbook-1.22.0.tar.xz"
+sha512sums="e8afba94f33d1a35c470eba75e5b1266a8d1a760b541d7a79b06c38dbb8caca76b451fca8f9cd9291f501423ba856e019754c9bf86775170dbbfc9c97c2a619c mate-netbook-1.26.0.tar.xz"
diff --git a/user/mate-notification-daemon/APKBUILD b/user/mate-notification-daemon/APKBUILD
index c45995739..167f839fd 100644
--- a/user/mate-notification-daemon/APKBUILD
+++ b/user/mate-notification-daemon/APKBUILD
@@ -1,19 +1,20 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-notification-daemon
-pkgver=1.22.0
+pkgver=1.26.1
pkgrel=0
pkgdesc="Notification service for the MATE desktop environment"
url="https://mate-desktop.org"
arch="all"
license="GPL-2.0+"
depends=""
-makedepends="gtk+3.0-dev intltool libcanberra-dev libnotify-dev libwnck-dev"
+makedepends="gtk+3.0-dev intltool libcanberra-dev libnotify-dev
+ mate-desktop-dev mate-panel-dev libwnck-dev libxml2-dev
+ wayland-protocols"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-notification-daemon-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +26,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="1345604dee1315843ad5a6920aab7cbe1544c8f7c7ccea686e5684c7ea5272fa09d27edbcc996f6a568f8b3760f561b84901c44f93f1b3ae2d5ddcd3c3ce86fc mate-notification-daemon-1.22.0.tar.xz"
+sha512sums="c7aaef499acb2829f9833734a57e77a11a321369cb5134a4c49bb3c1e9899951c6c3702d3aac1dff6ce1bb8e60e41fc7ac31046e3346852d2da5d4dacf849a1e mate-notification-daemon-1.26.1.tar.xz"
diff --git a/user/mate-panel/APKBUILD b/user/mate-panel/APKBUILD
index dd01821ce..80677d52c 100644
--- a/user/mate-panel/APKBUILD
+++ b/user/mate-panel/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-panel
-pkgver=1.22.0
+pkgver=1.26.3
pkgrel=0
pkgdesc="Panel for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -10,12 +10,11 @@ license="GPL-2.0+ AND GPL-2.0-only AND LGPL-2.0+ AND MIT"
depends=""
makedepends="gobject-introspection-dev gtk+3.0-dev intltool itstool libice-dev
libmateweather-dev librsvg-dev libsm-dev libwnck-dev libxml2-utils
- mate-desktop-dev mate-menus-dev"
+ mate-desktop-dev mate-menus-dev wayland-protocols"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-panel-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,13 +26,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="078c6dcdc17970a7a7fab9a218eaf2c8cd6c4074c0c23ff4ce7ccf57e007d0afcbe797be4ad4c9d2c16d9033cc554cc5a979ec61dc721514db939a5e60de456b mate-panel-1.22.0.tar.xz"
+sha512sums="28c93566a528037082ed6181e628658373e5fd35f987b9d18b1731f3b3762f139cd1624ad862acc40413baa308b51a7ae617449c4a2a13c4726b5dad6a109d5a mate-panel-1.26.3.tar.xz"
diff --git a/user/mate-polkit/APKBUILD b/user/mate-polkit/APKBUILD
index 345159cbc..86b75798c 100644
--- a/user/mate-polkit/APKBUILD
+++ b/user/mate-polkit/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-polkit
-pkgver=1.22.0
+pkgver=1.26.1
pkgrel=0
pkgdesc="PolKit integration for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -13,7 +13,6 @@ subpackages="$pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-polkit-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e761ec10842789b5bbb3831f568c64e969429131a893850e8323927b949e115a24b3907fd3def7f31f5f785f0831717d852c61f08a9028a009ea9cca0ba86393 mate-polkit-1.22.0.tar.xz"
+sha512sums="0c8e881991d90af3121212c2dbb931bcea9ab9b9d22e0664d866b8a2bc95f2427bba09635be35f1a01404efd83b567d8a3d947cca84562463591a7821fb85678 mate-polkit-1.26.1.tar.xz"
diff --git a/user/mate-power-manager/APKBUILD b/user/mate-power-manager/APKBUILD
index 10fec58b7..289ea6e41 100644
--- a/user/mate-power-manager/APKBUILD
+++ b/user/mate-power-manager/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-power-manager
-pkgver=1.22.0
+pkgver=1.26.1
pkgrel=0
pkgdesc="Power management utility for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -9,13 +9,12 @@ arch="all"
license="GPL-2.0+ AND LGPL-2.0+"
depends=""
makedepends="dbus-dev dbus-glib-dev intltool itstool libcanberra-dev
- libexecinfo-dev libgnome-keyring-dev libnotify-dev libxml2-utils
- mate-panel-dev upower-dev"
+ libexecinfo-dev libgnome-keyring-dev libnotify-dev libsecret-dev
+ libxml2-utils mate-panel-dev upower-dev wayland-protocols"
subpackages="$pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-power-manager-$pkgver.tar.xz"
build() {
- cd "$builddir"
LIBS="-lexecinfo" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,13 +26,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d36ec8d328e00ccc14b26c36ded74f20ea80578870541899560c6a744018e5e91b08ec9b4d517548404e82da6f1868ed1f2fcc0aada1223f98e68dd6e6009503 mate-power-manager-1.22.0.tar.xz"
+sha512sums="82bac7d32a94b3fa64c68973bd72b9a88b73d8368fc179ea0958e4b7d0021707394bc5dadaed23cc074e441ae4a753ba73ad5ba9030a276b87ac8b410a5fb37d mate-power-manager-1.26.1.tar.xz"
diff --git a/user/mate-screensaver/APKBUILD b/user/mate-screensaver/APKBUILD
index 7d5c002b7..eaa158061 100644
--- a/user/mate-screensaver/APKBUILD
+++ b/user/mate-screensaver/APKBUILD
@@ -1,38 +1,36 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-screensaver
-pkgver=1.22.0
+pkgver=1.26.2
pkgrel=0
pkgdesc="Screensaver for the MATE desktop environment"
url="https://mate-desktop.org"
arch="all"
license="LGPL-2.0+ AND GPL-2.0+ AND MIT"
depends=""
-makedepends="dbus-glib-dev gtk+3.0-dev intltool libxscrnsaver-dev
- mate-desktop-dev mate-menus-dev"
+makedepends="dbus-glib-dev elogind-dev gtk+3.0-dev intltool libnotify-dev
+ libxscrnsaver-dev mate-desktop-dev mate-menus-dev wayland-protocols"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-screensaver-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var
+ --localstatedir=/var \
+ --with-elogind
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e253495ad700264ee7833d7b5a732cabff53058384801ff5e874d45f812cea1e4bd3877a1688ecec6197c37f32761f69a4924a47a6556332f1fec736e540e333 mate-screensaver-1.22.0.tar.xz"
+sha512sums="00820a431c64e9486258c33f211630060f1f07c36642b90a981dc16cd8b8995140f58118d7ee642002e6ab64d1667556c4682aac4f2f1c02720cb815447287cf mate-screensaver-1.26.2.tar.xz"
diff --git a/user/mate-sensors-applet/APKBUILD b/user/mate-sensors-applet/APKBUILD
index aad0bd7e4..14196d9eb 100644
--- a/user/mate-sensors-applet/APKBUILD
+++ b/user/mate-sensors-applet/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-sensors-applet
-pkgver=1.22.0
+pkgver=1.26.0
pkgrel=0
pkgdesc="System monitoring applet for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -11,10 +11,10 @@ depends=""
makedepends="gtk+3.0-dev intltool itstool libnotify-dev libxml2-utils libxslt
mate-panel-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-sensors-applet-$pkgver.tar.xz"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-sensors-applet-$pkgver.tar.xz
+ locale-guards.patch"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +26,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="f756fdff4dd8fe824fbe41956411ca1e6ce251fc1d43276c7244a8a806e91bacc283c412b831935136682971509e23c08538264963af31488bee15ce5644d5cb mate-sensors-applet-1.22.0.tar.xz"
+sha512sums="1419c63e823bcec5d8fc4a619b3eb6c1eef0ac5d923177fae6649664616824cb5a257121aa88ab5d56d1d5ff5c44f1d62a4dd325dc718091e2d2e16ae326fa36 mate-sensors-applet-1.26.0.tar.xz
+dd8d0c78ad16e26b6f9cad3283fcd45ce7f5bd4ea16a01ff26cfd060cb26206a07a71c42d90a16cc39fb2e53b890d08b0fc9690b20ff0662c5ff16eab3065265 locale-guards.patch"
diff --git a/user/mate-sensors-applet/locale-guards.patch b/user/mate-sensors-applet/locale-guards.patch
new file mode 100644
index 000000000..d3a35b92b
--- /dev/null
+++ b/user/mate-sensors-applet/locale-guards.patch
@@ -0,0 +1,29 @@
+diff -Nurd mate-sensors-applet-1.24.0/plugins/i2c-proc/i2c-proc-plugin.c mate-sensors-applet-1.24.0.new/plugins/i2c-proc/i2c-proc-plugin.c
+--- mate-sensors-applet-1.24.0/plugins/i2c-proc/i2c-proc-plugin.c 2020-02-10 07:40:35.000000000 -0500
++++ mate-sensors-applet-1.24.0.new/plugins/i2c-proc/i2c-proc-plugin.c 2020-02-15 12:50:42.395405752 -0500
+@@ -144,9 +144,11 @@
+ gchar *old_locale = NULL;
+
+ /* always use C locale */
++#ifdef HAVE_LOCALE_H
+ if (NULL == (old_locale = setlocale(LC_NUMERIC, "C"))) {
+ g_warning("Could not change locale to C locale for reading i2c-proc device files.. will try regardless");
+ }
++#endif
+
+ if (NULL == (fp = fopen(path, "r"))) {
+ g_set_error(error, SENSORS_APPLET_PLUGIN_ERROR, I2C_PROC_DEVICE_FILE_OPEN_ERROR, "Error opening sensor device file %s", path);
+@@ -203,11 +205,11 @@
+ } /* end switch */
+ fclose(fp);
+ }
+-
++#ifdef HAVE_LOCALE_H
+ if (NULL != old_locale) {
+ setlocale(LC_NUMERIC, old_locale);
+ }
+-
++#endif
+ return (gdouble)sensor_value;
+ }
+
diff --git a/user/mate-session-manager/APKBUILD b/user/mate-session-manager/APKBUILD
index 09ee4cc78..c03864b7c 100644
--- a/user/mate-session-manager/APKBUILD
+++ b/user/mate-session-manager/APKBUILD
@@ -1,20 +1,18 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-session-manager
-pkgver=1.22.0
+pkgver=1.26.1
pkgrel=0
pkgdesc="Session manager for the MATE desktop environment"
url="https://mate-desktop.org"
arch="all"
license="GPL-2.0+ AND LGPL-2.0+"
depends=""
-makedepends="dbus-glib-dev gtk+3.0-dev intltool libsm-dev"
+makedepends="dbus-glib-dev gtk+3.0-dev intltool libsm-dev wayland-protocols"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-session-manager-$pkgver.tar.xz
- no-systemd.patch"
+source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-session-manager-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,14 +24,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
+ rm -r "$pkgdir"/usr/share/xsessions
}
-sha512sums="7e5e21e37c7ac55ca7d71302edef9aabeccf39233aec9edfe93a2fdcd4150d039e8121adecebb3d0a4a707eccef0c7afa1b54c5b52b57853242964c7506eeb9a mate-session-manager-1.22.0.tar.xz
-ea84e562b3a5d08b373f270d8d5fa9eeae9b803e3eb4ef925c31bad0e4e185eecfcff5465864a4a449fc5cade000b3ee18dea515744fcb59ac2efaf9df420a43 no-systemd.patch"
+sha512sums="cc3ce559693b3b182e73fb9303e784c63918fabe5fee14f1f254357dc0897c3d325f15fbe363b9bb401218b2ad1864848749f536e9d69d100227b444e174a832 mate-session-manager-1.26.1.tar.xz"
diff --git a/user/mate-session-manager/no-systemd.patch b/user/mate-session-manager/no-systemd.patch
deleted file mode 100644
index 79c19f34a..000000000
--- a/user/mate-session-manager/no-systemd.patch
+++ /dev/null
@@ -1,65 +0,0 @@
-From 254a091b31517a25bc037b31daff27fbb74ac90d Mon Sep 17 00:00:00 2001
-From: Victor Kareh <vkareh@redhat.com>
-Date: Wed, 6 Mar 2019 09:20:36 -0500
-Subject: [PATCH] Guard against missing systemd
-
----
- mate-session/gsm-systemd.c | 19 +++++++++++++++++++
- 1 file changed, 19 insertions(+)
-
-diff --git a/mate-session/gsm-systemd.c b/mate-session/gsm-systemd.c
-index da3f23b..d03cafd 100644
---- a/mate-session/gsm-systemd.c
-+++ b/mate-session/gsm-systemd.c
-@@ -429,16 +429,31 @@ gsm_systemd_is_last_session_for_user (GsmSystemd *manager)
- gboolean is_last_session;
- int ret, i;
-
-+#ifdef HAVE_SYSTEMD
- ret = sd_pid_get_session (getpid (), &session);
-+#endif
-+
-+ if (session == NULL) {
-+ return FALSE;
-+ }
-
- if (ret != 0) {
-+ free (session);
- return FALSE;
- }
-
-+#ifdef HAVE_SYSTEMD
- ret = sd_uid_get_sessions (getuid (), FALSE, &sessions);
-+#endif
-+
-+ if (sessions == NULL) {
-+ free (session);
-+ return FALSE;
-+ }
-
- if (ret <= 0) {
- free (session);
-+ free (sessions);
- return FALSE;
- }
-
-@@ -450,7 +465,9 @@ gsm_systemd_is_last_session_for_user (GsmSystemd *manager)
- if (g_strcmp0 (sessions[i], session) == 0)
- continue;
-
-+#ifdef HAVE_SYSTEMD
- ret = sd_session_get_state (sessions[i], &state);
-+#endif
-
- if (ret != 0)
- continue;
-@@ -461,7 +478,9 @@ gsm_systemd_is_last_session_for_user (GsmSystemd *manager)
- }
- free (state);
-
-+#ifdef HAVE_SYSTEMD
- ret = sd_session_get_type (sessions[i], &type);
-+#endif
-
- if (ret != 0)
- continue;
diff --git a/user/mate-settings-daemon/APKBUILD b/user/mate-settings-daemon/APKBUILD
index df1a07ec1..a5684dcf4 100644
--- a/user/mate-settings-daemon/APKBUILD
+++ b/user/mate-settings-daemon/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-settings-daemon
-pkgver=1.22.0
+pkgver=1.26.1
pkgrel=0
pkgdesc="Settings daemon for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -10,30 +10,29 @@ license="GPL-2.0+ AND MIT AND LGPL-2.0+ AND GPL-3.0+"
depends=""
makedepends="dbus-dev dbus-glib-dev dconf-dev gtk+3.0-dev intltool
libcanberra-dev libmatekbd-dev libmatemixer-dev libnotify-dev
- mate-desktop-dev nss-dev polkit-dev pulseaudio-dev"
+ mate-desktop-dev nss-dev polkit-dev pulseaudio-dev
+ wayland-protocols"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-settings-daemon-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var
+ --localstatedir=/var \
+ --enable-pulse
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e8fa2ba07195dd66a94312909be37abe67089c7a687afee3bfde5860a598e84481949c9cdc7408886f90776556b41d5574bd6efc0614ed7583908214d59c6cb5 mate-settings-daemon-1.22.0.tar.xz"
+sha512sums="5073794620635d0dea10f89ade3a398f2fd75404fab04c2a81caf397b88ad6898742836dd56e55a33dd04853dcee5bf79e8cd9f0c2a41578e3671138d5b28748 mate-settings-daemon-1.26.1.tar.xz"
diff --git a/user/mate-system-monitor/APKBUILD b/user/mate-system-monitor/APKBUILD
index 6f4db0166..0da31cf48 100644
--- a/user/mate-system-monitor/APKBUILD
+++ b/user/mate-system-monitor/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-system-monitor
-pkgver=1.22.0
+pkgver=1.26.0
pkgrel=0
pkgdesc="System monitor utilities for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -9,12 +9,11 @@ arch="all"
license="GPL-2.0+ AND LGPL-2.0+ AND GPL-2.0-only"
depends=""
makedepends="gtkmm+3.0-dev intltool itstool libgtop-dev librsvg-dev
- libwnck-dev libxml2-dev libxml2-utils"
+ libwnck-dev libxml2-dev libxml2-utils wayland-protocols"
subpackages="$pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-system-monitor-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="6f97f934626b49320ea0dbb4e14743c4f33b12a85671b69465f689765f3003f00e51685b616e34a482c3ec0ca09ca4e13cbdb2e3eb4719c0d1fc7b25b24436a7 mate-system-monitor-1.22.0.tar.xz"
+sha512sums="90919af4808348f6d6a66a4dddb02f2b9d2dc2ee42100b28baa104a504b0b0a6d488814381a657d682b3f53e0a5cdf99fc0a6142eab86d77ca1d5147da526c58 mate-system-monitor-1.26.0.tar.xz"
diff --git a/user/mate-terminal/APKBUILD b/user/mate-terminal/APKBUILD
index fd0179bb6..dd7e4ddef 100644
--- a/user/mate-terminal/APKBUILD
+++ b/user/mate-terminal/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-terminal
-pkgver=1.22.0
+pkgver=1.26.1
pkgrel=0
pkgdesc="Terminal emulator for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -9,12 +9,11 @@ arch="all"
license="GPL-3.0+ AND LGPL-3.0+"
depends=""
makedepends="dconf-dev gtk+3.0-dev intltool itstool libsm-dev libxml2-utils
- vte-dev"
+ pcre2-dev vte-dev"
subpackages="$pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-terminal-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="45932db8c50348386a58ee7acaf08af43e28bd495dac08b4dcff5defd1c10189163bdfd73c61015674d61f275dabc2f749b2e0cbf9981c7dfdef5a4060686645 mate-terminal-1.22.0.tar.xz"
+sha512sums="75b40f58a117e10ae9214e11af3c00227a366ab8788fa4f06788c3be7173d402d6eba2b4f63fc9b0a6723311c0b79f912e02170650c5257adefe0f5ca0d78198 mate-terminal-1.26.1.tar.xz"
diff --git a/user/mate-themes/APKBUILD b/user/mate-themes/APKBUILD
new file mode 100644
index 000000000..a0361b8c4
--- /dev/null
+++ b/user/mate-themes/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=mate-themes
+pkgver=3.22.24
+pkgrel=0
+pkgdesc="Themes for the MATE desktop environment"
+url="https://mate-desktop.org"
+arch="noarch"
+license="LGPL-2.1-only AND GPL-3.0-only AND LGPL-2.1+"
+depends="gtk+2.0 gdk-pixbuf"
+makedepends="gtk+2.0-dev gdk-pixbuf-dev"
+subpackages="$pkgname-lang"
+source="https://pub.mate-desktop.org/releases/themes/${pkgver%.*}/$pkgname-$pkgver.tar.xz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="a92b78c3899b9ad159dbc1ee310939c300c45c203a9976bc83a76e49beb79b4fb551bfaa26c638d54da7630639a61df802113466844a6664e83ea6ab68c7dbc5 mate-themes-3.22.24.tar.xz"
diff --git a/user/mate-user-guide/APKBUILD b/user/mate-user-guide/APKBUILD
index 96b71d29f..8dcf7c68c 100644
--- a/user/mate-user-guide/APKBUILD
+++ b/user/mate-user-guide/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-user-guide
-pkgver=1.22.0
+pkgver=1.26.2
pkgrel=0
pkgdesc="User handbook for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -13,7 +13,7 @@ subpackages="$pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-user-guide-$pkgver.tar.xz"
build() {
- cd "$builddir"
+ rm -r $pkgname/ja $pkgname/sr
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="faf82569d8289f13d31c0c3a548692194f4938dc341b5a2214ccd3bba1fafaa6b5446cc5455ade391e7172268354cf2088c2a119aee96d3d42e71ee4c094dd14 mate-user-guide-1.22.0.tar.xz"
+sha512sums="6e526ca93563c64ca354a5675567ec82c804178e06fa760b3667bc68ef91a931d1ebc78e1541ff18b837b8b755b9cdfb864b26063677bf57d03d23235189d2ee mate-user-guide-1.26.2.tar.xz"
diff --git a/user/mate-user-share/APKBUILD b/user/mate-user-share/APKBUILD
index 3e681aa4f..391798d24 100644
--- a/user/mate-user-share/APKBUILD
+++ b/user/mate-user-share/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-user-share
-pkgver=1.22.0
+pkgver=1.26.0
pkgrel=0
pkgdesc="Inter-user file sharing utilities for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -14,7 +14,6 @@ subpackages="$pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-user-share-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,13 +27,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="151532ebe031a973e8825d86c9a315697f5930f89d78960946da3ba135238e3130c59018d04cf9dc8d343ff1613e51254701bbf8e23a9881733ecbb7e6fb9f18 mate-user-share-1.22.0.tar.xz"
+sha512sums="4dfd35bd4d9c72a83b0929c30738d2cb93a622af630cce1ffcfb23b9ca1167414ac969a5e417fa7e9d86e334249ff3e519c326c41fee87a6cbfc58d855d4b978 mate-user-share-1.26.0.tar.xz"
diff --git a/user/mate-utils/APKBUILD b/user/mate-utils/APKBUILD
index 7d70c09f4..2d58ebf0c 100644
--- a/user/mate-utils/APKBUILD
+++ b/user/mate-utils/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mate-utils
-pkgver=1.22.0
+pkgver=1.26.1
pkgrel=0
pkgdesc="Miscellaneous utilities for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -9,12 +9,11 @@ arch="all"
license="LGPL-2.0+ AND LGPL-2.1+ AND GPL-2.0+ AND GPL-3.0+"
depends=""
makedepends="gtk+3.0-dev intltool itstool libcanberra-dev libgtop-dev
- libsm-dev libxml2-utils mate-panel-dev"
+ libsm-dev libxml2-utils mate-panel-dev udisks2-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mate-utils-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="248c6e4108900768a4e8b272d20ac9b2d70e8bf77375f4669a099f4d8386c2e8affeafb772d209f00906f96f20d7ee347167ef4837186f44d8aaad85ef855f70 mate-utils-1.22.0.tar.xz"
+sha512sums="b8ec7b510ff872a0427e074ee09824e90ad62fe76ab1dac038ecbe86fd361b15acf57769e58df2c8c9c6acb57d9f1cd0718d178a2a2d1262de1476956d446dd3 mate-utils-1.26.1.tar.xz"
diff --git a/user/mbedtls/APKBUILD b/user/mbedtls/APKBUILD
new file mode 100644
index 000000000..912f1f57c
--- /dev/null
+++ b/user/mbedtls/APKBUILD
@@ -0,0 +1,52 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=mbedtls
+pkgver=3.6.0
+pkgrel=0
+pkgdesc="Lightweight TLS library"
+url="https://tls.mbed.org"
+arch="all"
+license="Apache-2.0"
+depends=""
+checkdepends="python3"
+makedepends="cmake"
+subpackages="$pkgname-dev"
+source="https://github.com/ARMmbed/mbedtls/releases/download/v$pkgver/$pkgname-$pkgver.tar.bz2"
+
+# secfixes:
+# 3.3.0-r0:
+# - CVE-2021-45451
+# - CVE-2022-35409
+# - CVE-2022-46392
+# - CVE-2022-46393
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+
+ sed -i include/mbedtls/mbedtls_config.h \
+ -e 's@^//#define MBEDTLS_SSL_DTLS_SRTP$@#define MBEDTLS_SSL_DTLS_SRTP@g' `#991` \
+ ;
+
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS -fPIC" \
+ -DCMAKE_C_FLAGS="$CFLAGS -fPIC" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="5c395890d486144af882aa96c9430103f79df889139969a64a490c0cafbdd5631a72bb668aa59b062204f19a5bb36dfcc5a096b59d76c7ef27f2560cd2388682 mbedtls-3.6.0.tar.bz2"
diff --git a/user/mbuffer/APKBUILD b/user/mbuffer/APKBUILD
new file mode 100644
index 000000000..3652e22d3
--- /dev/null
+++ b/user/mbuffer/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: CyberLeo <cyberleo@cyberleo.net>
+# Maintainer: CyberLeo <cyberleo@cyberleo.net>
+pkgname=mbuffer
+pkgver=20220418
+pkgrel=1
+pkgdesc="mbuffer is a tool for buffering data streams."
+url="https://www.maier-komor.de/mbuffer.html"
+arch="all"
+license="GPL-3.0-only"
+depends=""
+makedepends="cmd:which openssl-dev"
+subpackages="$pkgname-doc"
+source="https://www.maier-komor.de/software/$pkgname/$pkgname-$pkgver.tgz
+ test-static-file-instead.patch
+ clamp-32-bit-parameters.patch
+ "
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="aad7f764c82e3bdd4ee3fc5ac8174e716fd44cdb0418f1994d3f506d2e58264a13e15596bc8e78e9e8bb2d181875294448085bab122a2a31356d4336bb8b54a4 mbuffer-20220418.tgz
+28b7c7c7ee2b2130315cd6c4765d492e9d29376670a03ab0a1ab862a1ec5dea93e91e9de5e08604db69fe4139370eedb2a0754f16e5ebec3de9b48dc2a1dbea7 test-static-file-instead.patch
+73a8a854c8f1aae866abf2b52aa5fc2d276dd5a0cc8595e176bb852e731ba4b310833a9b58260b323abf413b0fec74bdb39f89d708ffb81fc5ea82680c535268 clamp-32-bit-parameters.patch"
diff --git a/user/mbuffer/clamp-32-bit-parameters.patch b/user/mbuffer/clamp-32-bit-parameters.patch
new file mode 100644
index 000000000..3dc2d0eac
--- /dev/null
+++ b/user/mbuffer/clamp-32-bit-parameters.patch
@@ -0,0 +1,39 @@
+In addition to clamping NumP and AvP, this patch reorders
+shift operations to prevent possible overflow when given
+values that are found in some environments where a 64-bit
+system is running with a 32-bit personality.
+
+It should not be construed as fixing any bug in mbuffer.
+
+--- a/mbuffer.c
++++ b/mbuffer.c
+@@ -984,7 +984,14 @@
+
+ /* get physical memory size */
+ #if defined(_SC_PHYS_PAGES)
+- NumP = sysconf(_SC_PHYS_PAGES);
++ if (sizeof(void *) == 4)
++ {
++ NumP = (unsigned)-1 / PgSz; /* 4GB worth of pages */
++ }
++ else
++ {
++ NumP = sysconf(_SC_PHYS_PAGES);
++ }
+ if (NumP < 0) {
+ warningmsg("unable to determine number of total memory pages: %s\n",strerror(errno));
+ NumP = 0;
+@@ -1004,8 +1011,12 @@
+ char *at = strstr(tmp,"MemAvailable:");
+ if (at) {
+ AvP = strtol(at+13,0,0);
+- AvP <<= 10;
+ AvP /= PgSz;
++ AvP <<= 10;
++ if (sizeof(void *) == 4 && AvP > NumP)
++ {
++ AvP = NumP;
++ }
+ debugmsg("available memory: %lu pages\n",AvP);
+ }
+ }
diff --git a/user/mbuffer/test-static-file-instead.patch b/user/mbuffer/test-static-file-instead.patch
new file mode 100644
index 000000000..9c549bfaa
--- /dev/null
+++ b/user/mbuffer/test-static-file-instead.patch
@@ -0,0 +1,11 @@
+--- mbuffer-20200929/Makefile.in.orig 2020-11-08 07:47:44.512670020 +0000
++++ mbuffer-20200929/Makefile.in 2020-11-08 07:48:33.032115323 +0000
+@@ -101,7 +101,7 @@
+ test.tar test.md5 mbuffer.md5 idev.so tapetest.so have-af
+
+ test.tar:
+- $(TAR) cf test.tar --ignore-failed-read $(TESTTREE)
++ truncate -s 10M test.tar
+
+ test.md5: test.tar
+ openssl md5 < test.tar > test.md5
diff --git a/user/mcpp/03-gniibe-fix-11.patch b/user/mcpp/03-gniibe-fix-11.patch
new file mode 100644
index 000000000..576ac50e7
--- /dev/null
+++ b/user/mcpp/03-gniibe-fix-11.patch
@@ -0,0 +1,21 @@
+Description: Fix for a bug reported to sourceforge.net #11
+Author: NIIBE Yutaka
+
+Index: mcpp/src/support.c
+===================================================================
+--- mcpp.orig/src/support.c
++++ mcpp/src/support.c
+@@ -1747,9 +1747,11 @@ not_comment:
+ *tp++ = '\t';
+ else
+ *tp++ = ' '; /* Convert to ' ' */
+- } else if (! (char_type[ *(tp - 1) & UCHARMAX] & HSP)) {
++ } else if (temp == tp
++ || ! (char_type[ *(tp - 1) & UCHARMAX] & HSP)) {
+ *tp++ = ' '; /* Squeeze white spaces */
+- } else if (mcpp_mode == OLD_PREP && *(tp - 1) == COM_SEP) {
++ } else if (mcpp_mode == OLD_PREP && tp > temp
++ && *(tp - 1) == COM_SEP) {
+ *(tp - 1) = ' '; /* Replace COM_SEP with ' ' */
+ }
+ break;
diff --git a/user/mcpp/04-gniibe-fix-12.patch b/user/mcpp/04-gniibe-fix-12.patch
new file mode 100644
index 000000000..13d29d62f
--- /dev/null
+++ b/user/mcpp/04-gniibe-fix-12.patch
@@ -0,0 +1,17 @@
+Description: Fix for a bug reported to sourceforge.net #12
+Author: NIIBE Yutaka
+
+Index: mcpp/src/support.c
+===================================================================
+--- mcpp.orig/src/support.c
++++ mcpp/src/support.c
+@@ -1948,6 +1948,9 @@ static char * get_line(
+ dump_string( NULL, ptr);
+ }
+ len = strlen( ptr);
++ if (len == 0)
++ cwarn( "null character ignored", NULL, 0L, NULL);
++
+ if (NBUFF - 1 <= ptr - infile->buffer + len
+ && *(ptr + len - 1) != '\n') {
+ /* The line does not yet end, though the buffer is full. */
diff --git a/user/mcpp/05-gniibe-fix-13.patch b/user/mcpp/05-gniibe-fix-13.patch
new file mode 100644
index 000000000..717b16fe9
--- /dev/null
+++ b/user/mcpp/05-gniibe-fix-13.patch
@@ -0,0 +1,52 @@
+Description: Fix for a bug reported to sourceforge.net #13
+ by fixing error messages.
+ Also, fix erroneous messages.
+Author: NIIBE Yutaka
+
+Index: mcpp/src/support.c
+===================================================================
+--- mcpp.orig/src/support.c
++++ mcpp/src/support.c
+@@ -822,7 +822,7 @@ escape:
+ if (diag && iscntrl( c) && ((char_type[ c] & SPA) == 0)
+ && (warn_level & 1))
+ cwarn(
+- "Illegal control character %.0s0lx%02x in quotation" /* _W1_ */
++ "Illegal control character %.0s0x%02x in quotation" /* _W1_ */
+ , NULL, (long) c, NULL);
+ *out_p++ = c;
+ chk_limit:
+@@ -861,10 +861,10 @@ chk_limit:
+ if (mcpp_mode != POST_STD && option_flags.lang_asm) {
+ /* STD, KR */
+ if (warn_level & 1)
+- cwarn( unterm_char, out, 0L, NULL); /* _W1_ */
++ cwarn( unterm_char, NULL, (long)delim, NULL); /* _W1_ */
+ goto done;
+ } else {
+- cerror( unterm_char, out, 0L, skip); /* _E_ */
++ cerror( unterm_char, NULL, (long)delim, skip); /* _E_ */
+ }
+ } else {
+ cerror( "Unterminated header name %s%.0ld%s" /* _E_ */
+@@ -875,9 +875,9 @@ chk_limit:
+ if (mcpp_mode != POST_STD && option_flags.lang_asm) {
+ /* STD, KR */
+ if (warn_level & 1)
+- cwarn( empty_const, out, 0L, skip); /* _W1_ */
++ cwarn( empty_const, NULL, (long)delim, skip); /* _W1_ */
+ } else {
+- cerror( empty_const, out, 0L, skip); /* _E_ */
++ cerror( empty_const, NULL, (long)delim, skip); /* _E_ */
+ out_p = NULL;
+ goto done;
+ }
+@@ -1774,7 +1774,7 @@ not_comment:
+ default:
+ if (iscntrl( c)) {
+ cerror( /* Skip the control character */
+- "Illegal control character %.0s0x%lx, skipped the character" /* _E_ */
++ "Illegal control character %.0s0x%02x, skipped the character" /* _E_ */
+ , NULL, (long) c, NULL);
+ } else { /* Any valid character */
+ *tp++ = c;
diff --git a/user/mcpp/APKBUILD b/user/mcpp/APKBUILD
index 233899f5f..1be2ef265 100644
--- a/user/mcpp/APKBUILD
+++ b/user/mcpp/APKBUILD
@@ -2,26 +2,28 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=mcpp
pkgver=2.7.2
-pkgrel=2
+pkgrel=4
pkgdesc="Portable C preprocessor"
-url="http://mcpp.sourceforge.net"
+url="https://mcpp.sourceforge.net"
arch="all"
license="BSD-2-Clause"
depends=""
makedepends=""
subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
-source="http://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz
+source="https://downloads.sourceforge.net/${pkgname}/${pkgname}-${pkgver}.tar.gz
01-zeroc-fixes.patch
- 02-gniibe-fixes.patch"
+ 02-gniibe-fixes.patch
+ 03-gniibe-fix-11.patch
+ 04-gniibe-fix-12.patch
+ 05-gniibe-fix-13.patch
+ "
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -36,19 +38,16 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
-
- mkdir -p "$pkgdir"/usr/share/licenses/$pkgname
- mv "$pkgdir"/usr/share/doc/$pkgname/LICENSE \
- "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
}
sha512sums="1ca885cb13fdb684de9d0595a9215b52f48a93a69077d82cdcacafe40d9a61fb77b00a3ff2b8890e7bc0a0fcc0c8d70d4093c00c280351cd4459aba67c573235 mcpp-2.7.2.tar.gz
86b2e851490e180dfe3028a5a37019ea423924c921ab053a642fb78d4533a87f913ede2928daf9da4daf60e67795a24521186b40c76961ae99ebeb75f8aa95ad 01-zeroc-fixes.patch
-a31a0f2e7430381e5e62ea4257a35891ce9d2f3beed60c6caad3b6d298a58557e9c850223840ef8c6f6c2e8139cf4a4edf29ac93b2532680feafba503fcfaf6d 02-gniibe-fixes.patch"
+a31a0f2e7430381e5e62ea4257a35891ce9d2f3beed60c6caad3b6d298a58557e9c850223840ef8c6f6c2e8139cf4a4edf29ac93b2532680feafba503fcfaf6d 02-gniibe-fixes.patch
+747734cb9d36d3045830b1ad0d42cc2d1e308137b5873be1693e55f5908c407f7c8ccad4a48df78a880a946f98a8183f7dd2e138bae429f72e051d08021275ba 03-gniibe-fix-11.patch
+b07c7eeaa6079c611d209a8b26d74ed326cf0aa402e038dc85a99ceefb47cfedd0e4d704cce760d44645267fb3513585bc4de3a99a02dadd7c9f9274bef2ab72 04-gniibe-fix-12.patch
+12a72a2c527358effc4ed8e0c5f80f1a06a005ba3b050c7d99a4aa67ad5fe7e4c4c2a75d0808382b67e359076c5bac6065ec284d32f55e7e31466331a47db882 05-gniibe-fix-13.patch"
diff --git a/user/mdadm/0001-udev.c-Do-not-require-libudev.h-if-DNO_LIBUDEV.patch b/user/mdadm/0001-udev.c-Do-not-require-libudev.h-if-DNO_LIBUDEV.patch
new file mode 100644
index 000000000..d0e63fc98
--- /dev/null
+++ b/user/mdadm/0001-udev.c-Do-not-require-libudev.h-if-DNO_LIBUDEV.patch
@@ -0,0 +1,28 @@
+From 1750758c7ff526e3560433f6235e5cfa35cf646a Mon Sep 17 00:00:00 2001
+From: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
+Date: Wed, 6 Mar 2024 15:50:55 +0100
+Subject: [PATCH] udev.c: Do not require libudev.h if DNO_LIBUDEV
+
+libudev may not be presented at all, do not require it.
+
+Reported-by: Boian Bonev <bbonev@ipacct.com>
+Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
+
+diff --git a/udev.c b/udev.c
+index bc4722b0..066e6ab1 100644
+--- a/udev.c
++++ b/udev.c
+@@ -26,7 +26,10 @@
+ #include <signal.h>
+ #include <limits.h>
+ #include <syslog.h>
++
++#ifndef NO_LIBUDEV
+ #include <libudev.h>
++#endif
+
+ static char *unblock_path;
+
+--
+2.43.4
+
diff --git a/user/mdadm/APKBUILD b/user/mdadm/APKBUILD
index d15aefbc9..c39bf46ba 100644
--- a/user/mdadm/APKBUILD
+++ b/user/mdadm/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Valery Kartel <valery.kartel@gmail.com>
-# Contributor: Carlo Landmeter <clandmeter at gmail>
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=mdadm
-pkgver=4.1
+pkgver=4.3
pkgrel=0
pkgdesc="Tool for managing Linux soft RAID arrays"
url="http://neil.brown.name/blog/mdadm"
@@ -17,15 +17,17 @@ source="https://mirrors.kernel.org/pub/linux/utils/raid/$pkgname/$pkgname-$pkgve
$pkgname.initd
$pkgname.confd
$pkgname-raid.initd
+ time64.patch
+ falloc.patch
+ missing-header.patch
+ 0001-udev.c-Do-not-require-libudev.h-if-DNO_LIBUDEV.patch
"
build() {
- cd "$builddir"
- make
+ make CXFLAGS="${CFLAGS} -DNO_LIBUDEV"
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -Dm644 $pkgname.conf-example "$pkgdir"/etc/$pkgname.conf
install -Dm644 "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
@@ -45,12 +47,15 @@ misc() {
pkgdesc="$pkgdesc (misc scripts)"
depends="$pkgname bash"
- cd "$builddir"
- install -Dm755 misc/mdcheck "$subpkgdir"/usr/sbin/mdcheck
- install -Dm755 misc/syslog-events "$subpkgdir"/usr/sbin/handle-mdadm-events
+ install -Dm755 "$builddir"/misc/mdcheck "$subpkgdir"/usr/sbin/mdcheck
+ install -Dm755 "$builddir"/misc/syslog-events "$subpkgdir"/usr/sbin/handle-mdadm-events
}
-sha512sums="f9bff760795ba7361f19fd1cbc02efedcdaa4b0125b99cf1369e78f30e5c128126751915fde41407d46c544514d864bf82b508419bc08f1db7aa447557e2ca9e mdadm-4.1.tar.gz
+sha512sums="a77af2b371ed27b7bd89b7991302282f0fc77999eb93d7959446fc4b1c28388582d08ff0abfc470a9f9a8c8036acb0158edc44d9a8d406f807ca28111bf74459 mdadm-4.3.tar.gz
ca5f4e3ff5b284102b44e818d11622e1889066e3d18edce2d62c1a44ee8f4cfdc0979121c0462a916c638423c5ebc706c46aa996a7c4f68e030589adc62803f4 mdadm.initd
7d45bf489ef93a4f217ffcf72311eb661b8de7fbf63a5344697252c0d3a684b0123ff60efa5f218da4eb4cda7c88d91c2ef3625d5e44a588e3e1210cb60b0ab9 mdadm.confd
-37022593ba090eb0690669b99d6386152242c017c1e608cea7b5420b7a6f754b377e916e4f81e2abf9941e791db78b5820e63db0e706d5de8b35e796678e921c mdadm-raid.initd"
+37022593ba090eb0690669b99d6386152242c017c1e608cea7b5420b7a6f754b377e916e4f81e2abf9941e791db78b5820e63db0e706d5de8b35e796678e921c mdadm-raid.initd
+cb21650ffb7f8bd1a7a72e27e48e5f18de7158cb8ba23315f9fc48ff5fa79662d0a64128d8b61eff76da7a41e0ccbc5be375a10c852823d489aa648baab76ba4 time64.patch
+72544b173499c4ecbcf85284cd4ca5560c2e3548e319e8e7e99967e369f3334e7b77950ff7ed2ed61b6e3c338894595154b2a7c6ccb30b5be1bbd2b75756738c falloc.patch
+669e0f14df7de0650eaa7a395167be3e12c08ed8c53ed0388d45be2a17c2e34dc08a2a77dc0d8692b2cd051154a644d6cc7cfcadbe58125dd4c09f9349bb2451 missing-header.patch
+b8fdfad727872a0bfc9bc97024b0fb49d6d39ae6d9eac81c65adb0c524add014a27bd9157f2c47b14a54fbe30abf87b64fbeb9218f2bc5a0ada48d06e0e6ea66 0001-udev.c-Do-not-require-libudev.h-if-DNO_LIBUDEV.patch"
diff --git a/user/mdadm/falloc.patch b/user/mdadm/falloc.patch
new file mode 100644
index 000000000..9f8d4ddd9
--- /dev/null
+++ b/user/mdadm/falloc.patch
@@ -0,0 +1,41 @@
+From 52bead95d2957437c691891fcdc49bd6afccdd49 Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Date: Fri, 12 Apr 2024 18:45:13 +0200
+Subject: Create.c: fix uclibc build
+
+Define FALLOC_FL_ZERO_RANGE if needed as FALLOC_FL_ZERO_RANGE is only
+defined for aarch64 on uclibc-ng resulting in the following or1k build
+failure since commit 577fd10486d8d1472a6b559066f344ac30a3a391:
+
+Create.c: In function 'write_zeroes_fork':
+Create.c:155:35: error: 'FALLOC_FL_ZERO_RANGE' undeclared (first use in this function)
+ 155 | if (fallocate(fd, FALLOC_FL_ZERO_RANGE | FALLOC_FL_KEEP_SIZE,
+ | ^~~~~~~~~~~~~~~~~~~~
+
+Fixes:
+ - http://autobuild.buildroot.org/results/0e04bcdb591ca5642053e1f7e31384f06581e989
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
+---
+ Create.c | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/Create.c b/Create.c
+index 4397ff49..d94253b1 100644
+--- a/Create.c
++++ b/Create.c
+@@ -32,6 +32,10 @@
+ #include <sys/signalfd.h>
+ #include <sys/wait.h>
+
++#ifndef FALLOC_FL_ZERO_RANGE
++#define FALLOC_FL_ZERO_RANGE 16
++#endif
++
+ static int round_size_and_verify(unsigned long long *size, int chunk)
+ {
+ if (*size == 0)
+--
+cgit 1.2.3-korg
+
diff --git a/user/mdadm/missing-header.patch b/user/mdadm/missing-header.patch
new file mode 100644
index 000000000..85dea22a8
--- /dev/null
+++ b/user/mdadm/missing-header.patch
@@ -0,0 +1,29 @@
+From 8bda86099089b44129ef6206764f9de47a45f0db Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Tue, 12 Mar 2024 11:01:50 +0100
+Subject: util.c: add limits.h include for NAME_MAX definition
+
+Add limits.h include for NAME_MAX definition.
+
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+Signed-off-by: Mariusz Tkaczyk <mariusz.tkaczyk@linux.intel.com>
+---
+ util.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/util.c b/util.c
+index 05ad3343..49a9c6e2 100644
+--- a/util.c
++++ b/util.c
+@@ -36,7 +36,7 @@
+ #include <ctype.h>
+ #include <dirent.h>
+ #include <dlfcn.h>
+-
++#include <limits.h>
+
+ /*
+ * following taken from linux/blkpg.h because they aren't
+--
+cgit 1.2.3-korg
+
diff --git a/user/mdadm/time64.patch b/user/mdadm/time64.patch
new file mode 100644
index 000000000..aff2af9cd
--- /dev/null
+++ b/user/mdadm/time64.patch
@@ -0,0 +1,19 @@
+--- mdadm-4.1/monitor.c.old 2018-10-01 18:26:06.000000000 +0000
++++ mdadm-4.1/monitor.c 2020-01-22 19:51:39.575877908 +0000
+@@ -20,6 +20,7 @@
+
+ #include "mdadm.h"
+ #include "mdmon.h"
++#include <inttypes.h>
+ #include <sys/syscall.h>
+ #include <sys/select.h>
+ #include <signal.h>
+@@ -449,7 +450,7 @@
+ }
+
+ gettimeofday(&tv, NULL);
+- dprintf("(%d): %ld.%06ld state:%s prev:%s action:%s prev: %s start:%llu\n",
++ dprintf("(%d): %"PRId64".%06"PRId64" state:%s prev:%s action:%s prev: %s start:%llu\n",
+ a->info.container_member,
+ tv.tv_sec, tv.tv_usec,
+ array_states[a->curr_state],
diff --git a/user/mdbook/APKBUILD b/user/mdbook/APKBUILD
new file mode 100644
index 000000000..a45e4024c
--- /dev/null
+++ b/user/mdbook/APKBUILD
@@ -0,0 +1,623 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=mdbook
+pkgver=0.4.47
+pkgrel=0
+pkgdesc="Create books from Markdown files"
+url="https://rust-lang.github.io/mdBook/"
+arch="all"
+license="MPL-2.0"
+depends=""
+makedepends="cargo"
+subpackages=""
+source="$pkgname-$pkgver.tar.gz::https://github.com/rust-lang/mdBook/archive/v$pkgver.tar.gz"
+
+# dependencies taken from Cargo.lock
+cargo_deps="
+addr2line 0.24.2
+adler2 2.0.0
+aho-corasick 1.1.3
+ammonia 4.0.0
+android-tzdata 0.1.1
+android_system_properties 0.1.5
+anstream 0.6.18
+anstyle 1.0.10
+anstyle-parse 0.2.6
+anstyle-query 1.1.2
+anstyle-wincon 3.0.7
+anyhow 1.0.95
+assert_cmd 2.0.16
+autocfg 1.4.0
+backtrace 0.3.74
+base64 0.21.7
+bit-set 0.5.3
+bit-vec 0.6.3
+bitflags 1.3.2
+bitflags 2.8.0
+block-buffer 0.10.4
+bstr 1.11.3
+bumpalo 3.16.0
+byteorder 1.5.0
+bytes 1.9.0
+cc 1.2.10
+cfg-if 1.0.0
+chrono 0.4.39
+clap 4.5.27
+clap_builder 4.5.27
+clap_complete 4.5.43
+clap_lex 0.7.4
+colorchoice 1.0.3
+core-foundation-sys 0.8.7
+cpufeatures 0.2.17
+crossbeam-deque 0.8.6
+crossbeam-epoch 0.9.18
+crossbeam-utils 0.8.21
+crypto-common 0.1.6
+darling 0.20.10
+darling_core 0.20.10
+darling_macro 0.20.10
+data-encoding 2.7.0
+dbus 0.9.7
+derive_builder 0.20.2
+derive_builder_core 0.20.2
+derive_builder_macro 0.20.2
+diff 0.1.13
+difflib 0.4.0
+digest 0.10.7
+displaydoc 0.2.5
+doc-comment 0.3.3
+elasticlunr-rs 3.0.2
+env_filter 0.1.3
+env_logger 0.11.6
+equivalent 1.0.1
+errno 0.3.10
+fastrand 2.3.0
+filetime 0.2.25
+float-cmp 0.10.0
+fnv 1.0.7
+form_urlencoded 1.2.1
+fsevent-sys 4.1.0
+futf 0.1.5
+futures-channel 0.3.31
+futures-core 0.3.31
+futures-macro 0.3.31
+futures-sink 0.3.31
+futures-task 0.3.31
+futures-util 0.3.31
+generic-array 0.14.7
+getrandom 0.2.15
+gimli 0.31.1
+globset 0.4.15
+h2 0.3.26
+handlebars 6.3.0
+hashbrown 0.15.2
+headers 0.3.9
+headers-core 0.2.0
+hex 0.4.3
+html5ever 0.26.0
+html5ever 0.27.0
+http 0.2.12
+http 1.2.0
+http-body 0.4.6
+httparse 1.10.0
+httpdate 1.0.3
+humantime 2.1.0
+hyper 0.14.32
+iana-time-zone 0.1.61
+iana-time-zone-haiku 0.1.2
+icu_collections 1.5.0
+icu_locid 1.5.0
+icu_locid_transform 1.5.0
+icu_locid_transform_data 1.5.0
+icu_normalizer 1.5.0
+icu_normalizer_data 1.5.0
+icu_properties 1.5.1
+icu_properties_data 1.5.0
+icu_provider 1.5.0
+icu_provider_macros 1.5.0
+ident_case 1.0.1
+idna 1.0.3
+idna_adapter 1.2.0
+ignore 0.4.23
+indexmap 2.7.1
+inotify 0.11.0
+inotify-sys 0.1.5
+is_terminal_polyfill 1.70.1
+itoa 1.0.14
+js-sys 0.3.77
+kqueue 1.0.8
+kqueue-sys 1.0.4
+libc 0.2.169
+libdbus-sys 0.2.5
+libredox 0.1.3
+linux-raw-sys 0.4.15
+litemap 0.7.4
+lock_api 0.4.12
+log 0.4.25
+mac 0.1.1
+maplit 1.0.2
+markup5ever 0.11.0
+markup5ever 0.12.1
+markup5ever_rcdom 0.2.0
+memchr 2.7.4
+mime 0.3.17
+mime_guess 2.0.5
+miniz_oxide 0.8.3
+mio 1.0.3
+new_debug_unreachable 1.0.6
+normalize-line-endings 0.3.0
+normpath 1.3.0
+notify 8.0.0
+notify-debouncer-mini 0.6.0
+notify-types 2.0.0
+num-modular 0.6.1
+num-order 1.2.0
+num-traits 0.2.19
+object 0.36.7
+once_cell 1.20.2
+opener 0.7.2
+parking_lot 0.12.3
+parking_lot_core 0.9.10
+pathdiff 0.2.3
+percent-encoding 2.3.1
+pest 2.7.15
+pest_derive 2.7.15
+pest_generator 2.7.15
+pest_meta 2.7.15
+phf 0.10.1
+phf 0.11.3
+phf_codegen 0.10.0
+phf_codegen 0.11.3
+phf_generator 0.10.0
+phf_generator 0.11.3
+phf_shared 0.10.0
+phf_shared 0.11.3
+pin-project 1.1.8
+pin-project-internal 1.1.8
+pin-project-lite 0.2.16
+pin-utils 0.1.0
+pkg-config 0.3.31
+ppv-lite86 0.2.20
+precomputed-hash 0.1.1
+predicates 3.1.3
+predicates-core 1.0.9
+predicates-tree 1.0.12
+pretty_assertions 1.4.1
+proc-macro2 1.0.93
+pulldown-cmark 0.10.3
+pulldown-cmark 0.12.2
+pulldown-cmark-escape 0.10.1
+pulldown-cmark-to-cmark 18.0.0
+quote 1.0.38
+rand 0.8.5
+rand_chacha 0.3.1
+rand_core 0.6.4
+redox_syscall 0.5.8
+regex 1.11.1
+regex-automata 0.4.9
+regex-syntax 0.8.5
+rustc-demangle 0.1.24
+rustix 0.38.44
+rustversion 1.0.19
+ryu 1.0.19
+same-file 1.0.6
+scoped-tls 1.0.1
+scopeguard 1.2.0
+select 0.6.0
+semver 1.0.25
+serde 1.0.217
+serde_derive 1.0.217
+serde_json 1.0.137
+serde_urlencoded 0.7.1
+sha1 0.10.6
+sha2 0.10.8
+shlex 1.3.0
+siphasher 0.3.11
+siphasher 1.0.1
+slab 0.4.9
+smallvec 1.13.2
+socket2 0.5.8
+stable_deref_trait 1.2.0
+string_cache 0.8.7
+string_cache_codegen 0.5.2
+strsim 0.11.1
+syn 1.0.109
+syn 2.0.96
+synstructure 0.13.1
+tempfile 3.15.0
+tendril 0.4.3
+terminal_size 0.4.1
+termtree 0.5.1
+thiserror 1.0.69
+thiserror 2.0.11
+thiserror-impl 1.0.69
+thiserror-impl 2.0.11
+tinystr 0.7.6
+tokio 1.43.0
+tokio-macros 2.5.0
+tokio-tungstenite 0.21.0
+tokio-util 0.7.13
+toml 0.5.11
+topological-sort 0.2.2
+tower-service 0.3.3
+tracing 0.1.41
+tracing-core 0.1.33
+try-lock 0.2.5
+tungstenite 0.21.0
+typenum 1.17.0
+ucd-trie 0.1.7
+unicase 2.8.1
+unicode-ident 1.0.16
+url 2.5.4
+utf-8 0.7.6
+utf16_iter 1.0.5
+utf8_iter 1.0.4
+utf8parse 0.2.2
+version_check 0.9.5
+wait-timeout 0.2.0
+walkdir 2.5.0
+want 0.3.1
+warp 0.3.7
+wasi 0.11.0+wasi-snapshot-preview1
+wasm-bindgen 0.2.100
+wasm-bindgen-backend 0.2.100
+wasm-bindgen-macro 0.2.100
+wasm-bindgen-macro-support 0.2.100
+wasm-bindgen-shared 0.2.100
+winapi 0.3.9
+winapi-i686-pc-windows-gnu 0.4.0
+winapi-util 0.1.9
+winapi-x86_64-pc-windows-gnu 0.4.0
+windows-core 0.52.0
+windows-sys 0.52.0
+windows-sys 0.59.0
+windows-targets 0.52.6
+windows_aarch64_gnullvm 0.52.6
+windows_aarch64_msvc 0.52.6
+windows_i686_gnu 0.52.6
+windows_i686_gnullvm 0.52.6
+windows_i686_msvc 0.52.6
+windows_x86_64_gnu 0.52.6
+windows_x86_64_gnullvm 0.52.6
+windows_x86_64_msvc 0.52.6
+write16 1.0.0
+writeable 0.5.5
+xml5ever 0.17.0
+yansi 1.0.1
+yoke 0.7.5
+yoke-derive 0.7.5
+zerocopy 0.7.35
+zerocopy-derive 0.7.35
+zerofrom 0.1.5
+zerofrom-derive 0.1.5
+zerovec 0.10.4
+zerovec-derive 0.10.3
+"
+
+source="$source $(echo $cargo_deps | sed -E 's#([[:graph:]]+) ([[:graph:]]+)#\1-\2.tar.gz::https://crates.io/api/v1/crates/\1/\2/download#g')"
+builddir="$srcdir/mdBook-$pkgver"
+
+prepare() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ export CARGO_VENDOR="$CARGO_HOME/adelie"
+
+ (builddir=$srcdir; default_prepare)
+
+ mkdir -p "$CARGO_VENDOR"
+ cat <<- EOF > "$CARGO_HOME/config.toml"
+ [source.adelie]
+ directory = "${CARGO_VENDOR}"
+
+ [source.crates-io]
+ replace-with = "adelie"
+ local-registry = "/nonexistant"
+ EOF
+
+ for _dep in $(echo $cargo_deps | sed -E 's#([[:graph:]]+) ([[:graph:]]+)#\1-\2#g'); do
+ ln -s "$srcdir/$_dep" "$CARGO_VENDOR/$_dep"
+ _sum=$(sha256sum "$srcdir/$_dep.tar.gz" | cut -d' ' -f1)
+ cat <<- EOF > "$CARGO_VENDOR/$_dep/.cargo-checksum.json"
+ {
+ "package":"$_sum",
+ "files":{}
+ }
+ EOF
+ done
+}
+
+build() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ export PKG_CONFIG_ALL_DYNAMIC=1
+ export RUSTONIG_SYSTEM_LIBONIG=1
+ cargo build -j $JOBS --release
+}
+
+check() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ cargo test -j $JOBS --release
+}
+
+package() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ cargo install --no-track --path . --root="$pkgdir"/usr
+}
+
+sha512sums="76fbc342503baf4bb06b6411dbd086627743e55bcb83f1553cf055a4596a47dd6b5bbd08abd078a762a91a5b2e4c4ba84d13b5ddac1ac3135dd02c0765e64d42 mdbook-0.4.47.tar.gz
+39cbec3c920ffc0f37584afb55e1cfe4f182e4415319a4e9bfe842360f102f7b9315f6171c0cf71ba0337123903e604096cd573fe98698a26c8eebc2376d965b addr2line-0.24.2.tar.gz
+12d12579ad617cf1a94cf95ab9d3f5db566c3b2de4bd5735eccd83c668fdad0eff134c996b73c46cbb9f932837682043878b8cc4764191625e9f93ccffcce423 adler2-2.0.0.tar.gz
+ba422a54688c4678fcf16e34fdf3ed06c333e6e3fc8b75af9272a215add494d43ebaef319021134b61327fd5d3572aec0dc655b714ffb3bc71ba3c265c9ebb69 aho-corasick-1.1.3.tar.gz
+84f523eaf7db9d98e44c7d1198fae40e59e838dcc9fc256ca7ef3f3d243a767755f318e516411b4feba4ecb26e30e77d501e9163f996b4d113804e5f2c41a65e ammonia-4.0.0.tar.gz
+4294024c21ddd0090c42c8eedf708d40d917f55ad5a4cb7aa3e64cfb6551b6df60f2e36bc08620c1d2fc8c7ba7207411518ee5c8635f60ed8ad9efdd458a2077 android-tzdata-0.1.1.tar.gz
+b09f51339f9772c0e2e4241b36cf51573c6b96b19ffc1fbbc94b1c1d1d2fdfe8eac3134af54174a675ab05d18ef4f6bcb2c7fcc20114bbeef6e17e3692202191 android_system_properties-0.1.5.tar.gz
+5149977d6f7b5e9cf6350f1ef130caa3ff46c7e78976358452a185ce196cdd77fee48a3a9838f434ae6ea9c15b19f6bfbab156edf819f81179d6774318f08963 anstream-0.6.18.tar.gz
+621e7a89fad13db985f07375d316cf8efba57fd44ae18628a8049a65aefbaef27949f99317872e91e0922bb089a00234055199ea3167f80ae03d00ada4f75dea anstyle-1.0.10.tar.gz
+e28c9818afcda0e9b84c205d9c6697ce64cb06c21df2c3666869c07d66893105d9c5e96a27fcf2410a09f6af00735252e22b5c7d8c6cb3f68c4a8f376c49d396 anstyle-parse-0.2.6.tar.gz
+26069d936c4b1fb09bc65cda0253fe9be8fa4e96c0821f980c772602b4e9230035ec8c9d092ef95e0a0354ac559f8d25f57a14c34086d4d241b5fba688951837 anstyle-query-1.1.2.tar.gz
+782440c1093235ad481f0b854f5a3d3acb7908d2e5ddbd4143139b8bfd0faaf2f9816c1034e760d9261a233e6d645098cd5a594064f190662908eaf79972c903 anstyle-wincon-3.0.7.tar.gz
+8c5c176381c3e861c3c4451f7cd3d9e2447c0a55735ececfd3199288d65d36dc5fdc4a19a0798f62a0b9d6ca2c155a616c7eab8bcd53e6ece743aed57ec3d0fa anyhow-1.0.95.tar.gz
+0b9167282d75169b0b1fad0b1401b42884185976ae0dd690851671aedbc1a9af26dd33f3047400eb4a1b5070216acc293aade149aded7e4f86dd5c0ef0e9a6a9 assert_cmd-2.0.16.tar.gz
+3b5e7c30bc73e105e4bfcab584c24fc4016db41fac9c356c6649fd841051704bbe8848e09546eb50d7c1f18ea8ce1cb72fbc268a620d5c609b3472114b5be73c autocfg-1.4.0.tar.gz
+00cb2be0626f0bf6ec8b8f525bb129d3ac74c386c5e46ee0f343edb78c863222521f8132876057a5a1facacf40792dea51f2f20e986b35f3a85bca3dcf5c1520 backtrace-0.3.74.tar.gz
+c6986d88dd9aa081d914f35b4174be4ba874848657ac4b5e63b9b45af765d973289c548ccb5a01584edfc0d8d79ff5be25b51365295d6e7a311bd7f0ae3c0cb9 base64-0.21.7.tar.gz
+c5ce7ef71559706d996505e138ce95d9f008ac3375928012a36339bfec48986ad935b384e2d21fa0d505d4cf98bd3e93be15955ecd9607d253b8a276351334c6 bit-set-0.5.3.tar.gz
+b4b4a82c80d0ff13527ae4fff449ac9c1c7bc519c013af6ea3428348e0e5b9306b725c0a13a42d7d9dcf0f895a9eee0c63695a2503eb7fd2200083c9ea3a9aa8 bit-vec-0.6.3.tar.gz
+3c698f757b5cc62f815f9a1cce365c3d2dd88e4db71f331dff8bba86c2865f755b81cb4c9bfc59bd86b7643b0943f9e09a7c4f8ad75eb2ab0e714803d0129f62 bitflags-1.3.2.tar.gz
+f1bc02c858432b0e1fc3b10f239c5886e51d620d55a75521bdf35c8e8f6b6cf8db97e90e08eb2e96715a2c5b28858af305eb266f1ce0c90f9d3945d6d9bdda8b bitflags-2.8.0.tar.gz
+b7d436d8e627e16e6ddc300ee8f706a6cef28ff6f09eff848eedee46f84bdcd03601303c92ab8996042e55922866a59259948177c0a4496eed723523e77f6fdb block-buffer-0.10.4.tar.gz
+f1082ac8f121c6f9eab4b41c5f60aafe4623696c9f800f9d59f6726efc74f86071910f7749fbcdc8f1c20c83416d58f3ff507978775f602e18ae3d1bb027944d bstr-1.11.3.tar.gz
+a51b75c36f6794db444cab20eeb24f42a319080ecb486a56d254d6f873f3d188b5ccba11db30c068bd0c52c4322d4a3f5f5195c81c94b0bc04387030418835b1 bumpalo-3.16.0.tar.gz
+96caf981177f6ded9f27f025922cb94eb0cd9de5303bd91680099912d922092e77b7361efa70011e84f1595e443193e4f1b354443b9980c123f6ae573b236f7f byteorder-1.5.0.tar.gz
+e6c0681c535db6035c1fb1c0481725bb8ab341b6324acde07ac4b60cc4f490ec6ff01478bc00fae00ade2bc5420f9d14cc44438e5d156bcce91cc0f06118296b bytes-1.9.0.tar.gz
+bbd8755d390ca8fd209fb22a6b998250bc4765bc8339281498f0170afac7b1112ac5843bc4c604785e734030e2681f58bc5233ebce85e1d1392e3bfc1e654e5f cc-1.2.10.tar.gz
+0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff cfg-if-1.0.0.tar.gz
+5b258f76bea58ab9baa0fe8fb32c41928b8b655c76bb2fbaae9300ef8380cbb881296cee6b9e9886dce62b0759c73e84f6409e374a86cf0c80e3383512f98571 chrono-0.4.39.tar.gz
+e07ff5781679b1da62b0bdf25a674b3d48e1c2d2691ebb7c674562b83ec715b5fb0ece2df0867b0c0d833428d61ce1b3cca976fbeb4bb014273a007453391839 clap-4.5.27.tar.gz
+77b0e968361bd348b95b5b2993d5d1a3a4f3dda5fa790598bcb5edd201e7ad487a9ed87f551d40c30343e3e0a30942273c07c7becc12b4b67ddf7395488d8265 clap_builder-4.5.27.tar.gz
+0bca525e6be2a3dd95cc6587e057a724a9ac28e49183ffca13196b22ad293d80dbc52bb635cf4b90d882d94bf172479f90910a77601545bfeb701bb485ee9c48 clap_complete-4.5.43.tar.gz
+a2566868f4619679d3b74b70592ffa6a04b13e38e3196c56bb1dae8bea0c711bddbccd778d2aba3cc0ee074c9b1cc0335222818f0d47fb3cc8109cbc35bb992e clap_lex-0.7.4.tar.gz
+fc26696189d3935d5510a1237504339c1f354d03ffd3b4e830b7080335aa778bc72787ac5fa9a67a731b9bde2788da778d497f2ef97ec68bdec5145fedf4cd14 colorchoice-1.0.3.tar.gz
+17492d5314db03abdb3b1998bf0c396ec8ed0f83bc978ae22d6026afdc86c50b58cbac073b3a0d97b92da7e98be11302faf1249d24313494bc058add4f4cb63a core-foundation-sys-0.8.7.tar.gz
+9ae64656a21cfdd0528d87ba95f6213860bf72ccdf866019e65ed6662633e73490f92c42c80125559b3dbb7822090b5faa8ea564c562e04041232809ec2f58a2 cpufeatures-0.2.17.tar.gz
+9368c0c224c4b84356f1d422d8869a5ab4bfb36b0ff69244a9e7a7304ed51f034001cd9b2bc35849df874d36ed34285c66574943573522ea32bbdc5a05df6989 crossbeam-deque-0.8.6.tar.gz
+0a8a199b9d77f4e28e91fe0a0cbff7e0dec58cac283631fd972477fa912d2f6ddfddaed2c695e4978b01cb5440b702822af6333e7c3dfbcb9a2c2086999516b2 crossbeam-epoch-0.9.18.tar.gz
+6f4aa7ca10c20da291c4714b56ceb1fab1c06b03b2f4e28e474e9aeb95ab6615a25462dc7819713652c3b5f6a06fa0f24ebc92c533fcf35dfcf2655857d975f8 crossbeam-utils-0.8.21.tar.gz
+471dbc43f517089d2cfe0868e29510c6ca579875b3bb5d013c70796db969b609b6c4bb35c9a07b9a2917012dc5708b717d48e317a20038adbe7e7039bf3ada6f crypto-common-0.1.6.tar.gz
+7a14eebc20e48fd39ddf7b8376dc937a04f561d723aba864432cabd5ab46eb189706b43e5121a7f4fb0d68dbfd044353875bb479d4bd5cd96b76e3571733ce55 darling-0.20.10.tar.gz
+2b971156b8c1433dd0ddb2213ee522e2fe9968a62889285d1457b5e733daa70a09c21bca9b8573d9c742026b4c06f4dd2025a6a196ec0b08b25a78d8737dff6d darling_core-0.20.10.tar.gz
+565b8d535248d9d88b49a58e2a210ecc70f1cd39bfaf029ac6576a9b2eac70a6b18b4930aeca746d76d53b745c6aa82172bb341c4844b3757fc7978732fc2f52 darling_macro-0.20.10.tar.gz
+4ea0901ba3b1b37006ff413b743ba56bbe73edcc0b8735ee14a7bb3e71b3f9bc42c473d17284d1efcd358264dd0518ad63926f6bf43a38e1a30ce1306ba80a8d data-encoding-2.7.0.tar.gz
+c1557d8be0c5c5623ec6a3928de310c80eef2cdf976d9fcbcc00f08a532af5b8d530f8ee1eba4de12f2df0ff7cf4d21323dfad76be82eeee2f386173991681e5 dbus-0.9.7.tar.gz
+75d08f4c106ee5df795ebc8be3dcf34dada037c7566b20bfb52243e16f288b440c723fd17343a654d2f170c056a4197704b9c6b69c8e0d1b250039bee43fd872 derive_builder-0.20.2.tar.gz
+ab154b7f116a21984cf8c9cea538e8d33be1680663f4578af37f7d74696547431e9ded07bd8ab0265fd2c4aba5937b948f57d4f9b60b96c840f5150e8c10ce86 derive_builder_core-0.20.2.tar.gz
+1a5cdd75bbd6326147f6ed726fdc21b2a4e44db9abe49576d4b1ed067b0e56871cae148ea982b647016240392194efa4eca157d615ab42248d798396612b3d9f derive_builder_macro-0.20.2.tar.gz
+45e259c9fe7c23bd9e9454891b42d4aef6d681d35ee039d21fdb05ae9ed5856161a40f29889e7880ac2a2daf85f1b7d752d213b4a99a1a74ed2682c18a3ae7fb diff-0.1.13.tar.gz
+fcb57859424fea6958a4407061c421599fbca111357b1fe72faa65d8fb0b74425c993a24484e8414f475fa146cd8368c4f82e1ceb4e8dd9f95741149345b37a9 difflib-0.4.0.tar.gz
+0dd8c012468ab9011b89413ea4d3647d95b1f683b020a0e6274c95ed5148638b56fef19cd9044c837ad53715b582b88eed277fe96e917c27c5d7abdbf7c3794c digest-0.10.7.tar.gz
+5ca35fa59f263162389c1180331e9df607d9374bcb056cb04bc46c98e4d87277162ddb2335ffa8a8c5f69218abc3eabccdcaa71c21b8dd9081cc4146f266b948 displaydoc-0.2.5.tar.gz
+e98ff9646a3612bd41bb6f278e7b6e9a0c58747f8b82524da814cf51b7f06c76ad4d65b502ac5740e818744abb295f78f15f8262d0b50ced1523f6d1a26939ba doc-comment-0.3.3.tar.gz
+2f65cc09ac0a9a806fe36a617fe1fd8b6eddc2fa427012ed3fa2eee2f05743089820a801063d0fcd38bf5269b70b6b5f5ad0e6d706cfd461fcf4a62a9f956361 elasticlunr-rs-3.0.2.tar.gz
+94db29f1639636655e05ab02611cf14d5c2c8778be6eddddf0b6b8c21f364a71909a2ecc3acf3f4062d5d3c79a6316e9ef30b2fe042f617108af8431e198d344 env_filter-0.1.3.tar.gz
+1ec41e4c4eee4ea6bea38d40e739b1f324ef236fc786553fd77c6bacf6303f13d35c1626d3408a18346d42ebf5c896869deba133ef34b8cccf3729957c72de0e env_logger-0.11.6.tar.gz
+b2bc60e804c1b02c461dcefcfd60fc37145af710d183ebe65f9a4d63f2b2072d23193f98dc550a9213c7fdc6a2a837af23b04a89294ebbb681a4aaf5d5031140 equivalent-1.0.1.tar.gz
+fa4b9a368f254cd90c6f69f6883af4c579829a6da6f31481a1b527ac9602c8ffcb5e9518cdc32c39b5589c151a20e75a7300c8a907d178346185ecc6e8749f3f errno-0.3.10.tar.gz
+267fecbb7459c8840f03425733d278dd6c4e7637b85b99552877117ed5e8015e094d86aa95841f77064136b7f382276c3cb2c2bef7b2881d272f4aa57c5cf947 fastrand-2.3.0.tar.gz
+90b4f3c4df29a3456c393f78f636d70f2615cba748a972dc9b937c2fcbbf4544f5b0d28c6c8fcfed5d5eda026ac670afffec18ab7d7127cee9afa2717146ccf2 filetime-0.2.25.tar.gz
+024d6cce0c16f56e4f42381fecff1f3c6b9f960d62e81cdd78b1c77103dc4bbac11c5d656d44ec5fcb644edcd7b9c1a905533df3d758470137e48e3dde4633c7 float-cmp-0.10.0.tar.gz
+2195a4b34a78e2dd9838caf0ee556bf87cbb4a8ef5505aac663b614eb59dcfc0c40f432463ede41ecca57bfe7711f72673d39a85fe03d426f1324097d5628334 fnv-1.0.7.tar.gz
+c65104e2dc08fad572bb31f981700fd43dd29fcff42b01c7ccdbd3d4c23dec12360aed3f1b5fc4766fee386d418a65349b2941b8735f788cb0d35d631a6a8dd1 form_urlencoded-1.2.1.tar.gz
+e702686629557b879efaccd37b03a7ec515eeea29d8f8ba46f82b8b68ad157ef9d6b188be031f806d8fd27d4e9d2689cdd6bfa14e4ff77493a7d0be3ef1238a7 fsevent-sys-4.1.0.tar.gz
+4cee071c067c879742839d3d32192ca94ee2f9241468656357c3aed116cb7c656bf81722f32b67d60214b7db66858dca6443f0d52f0ff2114fc70971bdddd2d3 futf-0.1.5.tar.gz
+87e49e661cb12c1e03a07d3c94ca9bf5954344a51fa11639a118f5a49877c883387343af54639ad80e7196062a77fa7c9b9aff9804fb1e6ea3d0eb09efc53c69 futures-channel-0.3.31.tar.gz
+d2f4c2476c4f480f724a880ee16566fcdd545579d3cacd2f16745812eed9ac4a7a88d59d4a38b163ef466c6f6b612b9cb06308a09d52256506a8a90e358db935 futures-core-0.3.31.tar.gz
+26c45dd8c037831ce3c41a326ddfd581784c2e7aa2805ca4d93b91e439f4d8c078293cd328bcd66d0283cbd5a14724bc624ec607c343d15193b00bd644b86166 futures-macro-0.3.31.tar.gz
+79a57dbee5cfe98f2c003bd463d252648743f70d13e2054af072978b758c7cb8e5fb652fd2f36c760df358ad23d2893cef24ca6ae3df44def28f1d39bcf348a9 futures-sink-0.3.31.tar.gz
+4872fd2f24b07c626efc6fd76c01b44d56efecb9697f972d0877307b38d3ccb06277ff029df38981470ba1f8ac5f93086123ab3af44d3c49bd9c10b6c9158a81 futures-task-0.3.31.tar.gz
+429b1de584546b931b17d475aacbdb0c14824a57d960c44e615aa808e8c0f9c126473e313a7150b3de87ea91b7eebebb1041509f61b3493fee8a9cd2c75c4df3 futures-util-0.3.31.tar.gz
+363a7b04e4102f9ca63d429721c1ada6272be6bf0a2e97da681faf76381f73f0e3acb86623b9ce2dae441de9fda704088391779b9769ec02b3c8c9f9f35f897d generic-array-0.14.7.tar.gz
+04789a53d3f4a84862e1e8b2113641af67e471b468de1222470d5e6cef0015232463a2cf3c3518dc2a533b3983b175a7c8922da00665bcf71c1e4e279b67e6fb getrandom-0.2.15.tar.gz
+b9c8c11547dc7420fe936b9f32a4f5ccf3bb68d1d9f39dedffd40d631360f6e032e719d858668826f1099b8a262e8096aa7ae1f6d7d3d7aaf47934d832715949 gimli-0.31.1.tar.gz
+b9281b8bf48d2e297be533aa31c701c0115978b4e580b684b78a385eb2ecb4125187605368a6858311d6cdf5caae7d733cf1406c79241b7d19e7193f5a111dad globset-0.4.15.tar.gz
+3e1fb02d42d86c9fbaee6f10fec78eebd9a31a70efbead1f4ca22664ee0e96809a52b06e23a9b6f5d0646422dc8054b5ff5d82644ef65cbc0ed2b3729d849163 h2-0.3.26.tar.gz
+63c80950581c99db0ae8c420c89799a41dedaac7dcc6b4de21ef79ae86a8063e8f2b73be4b82723b03d2210fd530aa4724682db4144c9c5a8b4006ee05d5cc8e handlebars-6.3.0.tar.gz
+d6fc0613623f9313533dfcab1240e97f652f78f05baa21419f7edb2eff030c4a2c5f426d3eaae747923cffdd8aa9cc2648340e5fc229395b5eacc6fae087c8cd hashbrown-0.15.2.tar.gz
+d7b191ce9bfe0103bb4e6ea308f4f6943c1df12bace405bd8b733ade8f0a89b3d156ef7c77aa04233c51e6d34d832a837c12ea9c2f9693fa12f2cca49c1740e1 headers-0.3.9.tar.gz
+1d502e6a3b2ad70a0d1e410c55864ddbf4118ea073ff7697e6b763cd18748d91f074b36451c015e3bbadad4400d099f4a2e350c609f44daee4ad40398633a8fd headers-core-0.2.0.tar.gz
+fd8ff33b68eea2d6f2c6b02a6d82a2807cbcdc209ca5a76e3e3e5d006917ee151f236b6d18e2646cc9a9674bcdda1d6ce6ee363a89cadd99bef00d0eea9989e6 hex-0.4.3.tar.gz
+383a25421cddb0573e41ca93131d681cfbfaf551989337845a197e939a2580751ae90e96605bfc4e187dbd5189b6c014557cc69e3d7d2d2cdfb88eeca8896089 html5ever-0.26.0.tar.gz
+8d736fc122da78e9ba8b546868d0770837ea0b4951ff027f1b5593dedeb9831c082dad1868659422fab5527711ffed18d4428d519a830a3434d4594a1af6c868 html5ever-0.27.0.tar.gz
+e32dd4600aae7e26f1d530871815b30fa0b9bf95293005649bd9a7bc4df7f69a1d8de503d1b8873e67a5496e644d0a47db2a0680fa1e9058bee4dcecccebee58 http-0.2.12.tar.gz
+2c8e7234ec3aa720c9dd762c0bb06367fbc39ea89446fc9d8d2e55052a4ac461559a20a8294c877879f3e94d5db06fe41e2cdbb9664ea7ab1bc8003abb038bb5 http-1.2.0.tar.gz
+fd74fcbd25044aefa183e3caad6cde0967cbb00b6d80addec2589d037b752cdafcdfd02d29d38a12b5c7d87cf1cb5e5ed80488057735b9dd73e03904006a5462 http-body-0.4.6.tar.gz
+0ed43a15585b49064ae6b745b7c17775db1d849911115448239fa70a0b6f1d5a1fb09e654c4c04af8d533d74865966bfb215135a133aefec89eac81f136709d6 httparse-1.10.0.tar.gz
+0586888fe89f40b838d5ceb083084d0b8058feff1d2933faedb96896dc86eec68b541a0374a508fd11b86eeadab3c62f88568ffe2c53206fad438373a50b2e5a httpdate-1.0.3.tar.gz
+3bf29ddd1391d82897c22baa0ff3ed58ef6d6959859f1f8ed54d324caba5b6fb4422e56790511ce82f902cd11467f93c8ab7fc7b0e0bdb719308a4d0a446ae0c humantime-2.1.0.tar.gz
+d2b1d713a3ddc8a469ea344a5e7732da637bb644c2d999bed8e8b00b602742e193e553b9bc77eb58017ddccbc4217b20651e2b1698ac98568e780bfa3aa1a819 hyper-0.14.32.tar.gz
+d16c67f435606334042c3a286350db46ff3409f142c0782509b136150b4069aafff0dc5c2ecfb7519dd8d105b9a2e6649df2a7bec33ee3966dc94034c9d5a1c4 iana-time-zone-0.1.61.tar.gz
+448224ecafa935472ff6f0aab7cb71f9dabdbe71569c4b94fcc65baea925ef48841577687c9a31106a1826c2105e8dd73c748e9d27fd002648e5b0ce838af6b2 iana-time-zone-haiku-0.1.2.tar.gz
+127f1c91101ba69405b10a2590579606df766166fcf1fe6aa9a74c4900296425cba5c47a391a53a01b02026af5581f068fce4a7a400179809f7ed9922b94c0db icu_collections-1.5.0.tar.gz
+4b85f0e7cc73166a542b2e502b3ffae1f30d2a9609ab83acf98e90b0edb37fa8ae4592f61ecf48a0ae0779fdd376abeff59e1d5cb97475012eda99ce2a97da57 icu_locid-1.5.0.tar.gz
+1779078e2ef9859bee2bfd5414ad7e4b0f0a40e6813f4ccf8de2bbe8c764fac7f99ef001cce22332a8b3840af22e9c7fb7cc0341cf8ba61303794ebe87071e63 icu_locid_transform-1.5.0.tar.gz
+1c00fb962eb4b8c759b1120313bb890f4388d579890d7450b798d6266a7d6adcbbebc8a8dad2f267668ca6f1c059d0bd2209eafbe2a72f4558c85258eba57405 icu_locid_transform_data-1.5.0.tar.gz
+22612b86a24e3ea222469392763ae9d40dcbb37191dd8b9fa1c64332463a4299a53275a1cd3deb7e0f057d137f4312d990762f9925d0ceafbc8839d67c425a13 icu_normalizer-1.5.0.tar.gz
+222fbb819791fb4ec7889e45ed3032ac8d4753e2e9cdce9d0b3f79128baca5ce64157a8a58ecdf39cfddb6c2395001e3cc8828ed51803e85cae133c247cb338f icu_normalizer_data-1.5.0.tar.gz
+7e347c0a02a41a3add950290bee90a339091a713546d4369c2995022e64f127f54204b0d46cbb88f396b3bccbd4cf12720a93d8551b73926f78fd5ec01829cac icu_properties-1.5.1.tar.gz
+c651d0a50c229acafa648ce234a73bc1d0a85a8bf2369fdadaa62badc741c35e8a7d5392fb1bdb7b720fe2e0f883d1309c78de4ba913691969e5367a4e8bafac icu_properties_data-1.5.0.tar.gz
+6c11d89c7d2b788a44757f02b0e298b558ebe174fe917664401d91109cdc7bd1aba5526b3cdcee1f066018de1b775bc9dfc294bdfb40476c53d552bd6f29d6a1 icu_provider-1.5.0.tar.gz
+a0dd58d731556a010428fe4aebbc9dbcd626b46d380cf28ba5236ec8824045a20f6f2ec986e0c1e791bc8bc2b692a10306f448279f079b4c37237e4a3c3cef63 icu_provider_macros-1.5.0.tar.gz
+81003a43f18da5997d644319274502e2066af9f9fd1400afda7cf2986b3ae0b7355b932302723cd3bda2d46b264340434d9279dea58425bad13785698d5808a9 ident_case-1.0.1.tar.gz
+e75ab18297878df11d82bf3623b005a3dbf7a6fa38c8f78830c219adc7d6f4ac07dce24a5f1186de69035ec316421319e487396cfacb053674137342d72a4126 idna-1.0.3.tar.gz
+1d8b54c19878645749a1bae768dacf353b07d266f2cb3bfa1071a7afb56ca68f534dc1d54cae277b777bc97e5986f297cbe2051a82e14f553ea73cd723d9da7e idna_adapter-1.2.0.tar.gz
+ae354b00994ae8570751bc5c09167edd0e2891709d4c4878cf75b24619421d23a1b83e28886d54ed9d31aa427f49153e9a5fc42b5de7262abda20c1c0061b299 ignore-0.4.23.tar.gz
+225703f74a734da1ad464895192f07c83068b36129f69a9e87608134f250d3a19b95fdb21dcda6c44cb0204bc4ad69bfbba24d94c83b439000ab4b9ffec74abe indexmap-2.7.1.tar.gz
+bf1e133e0c3e9e4c31121b24163e5050a76408540235b9b0e9a9644871cc55aa922ccc48799f2f766a3c869ec7f9a1b2275cd8a19f33c47508dd7d061361158c inotify-0.11.0.tar.gz
+dae749f32c533b0c9f99963d97a77dcbfcacf173ec8fd7a02f275804f9925e867b4dfdf6be52c3c3c3de136d64e6e7d6b30a3bf804a01608cf974b0cc2e346da inotify-sys-0.1.5.tar.gz
+4730fa09401cb4e69c92b38b2b43afd74699c61f5bd7b37605efbc0c08ca7a1318d43e4a844e46e0f84f83f42432f01e33771be2b18eb5977702ab9f894837e1 is_terminal_polyfill-1.70.1.tar.gz
+ea2d38df373652ddacccd11e610dfdad4e3ae7f0d476514e6ac58092733c817bd834e8cd88c3bc4178dd5a646ba628ae626195e0aa407e8534ae3c2a7b049987 itoa-1.0.14.tar.gz
+d9370ed6ea892bd51ea181630ca661c348f82d575381aa4c8b529113dfcab6687f4d19bceecad7e1b28ebaca74d405862150a5b5ee2d5d55efdaf98eed1ab255 js-sys-0.3.77.tar.gz
+c8734fa2cfbf8b8f173604acf5d13ad4cc2739c879387b548a1200f8383b81a1b72315449eb73844e4b82280a4c29901d20c12cdc746d48f9047db89849985f3 kqueue-1.0.8.tar.gz
+6650aef7efd7fbf4f9b6c8c6e4c1a91b79636423d46a0173dcb99de74e6f277cb02ada01cb62aa71c3f174a2c28db62a708b0aada9480fc5bde613204acb30a5 kqueue-sys-1.0.4.tar.gz
+c4566330a7967efc211edf31a23647d1a33aa51fc25aa4e9337716748c8fd4be0ae63679220ff2cf6e892f37d03bc5264c55e8f082eb82574a6ec1fa8e5e45ce libc-0.2.169.tar.gz
+94ce1de7e1f1727e923b2042aed6652f9d0e68f27388c186c37f7aa2195fd71cb3c92a2bee7e8628c95f36ba2d2a38d25d9804900bf55eb13af31f790bca2847 libdbus-sys-0.2.5.tar.gz
+c62142fdca92388664eef83fc89b8607e2df318cbadff6edf9e3d927837853d5cfeb54445299a82054a0ca81853b0a33536966ab26f1f2e0fa43b39aaaf67c49 libredox-0.1.3.tar.gz
+b5c39181fb6b901abddd8b2e7b449142e2e5691cddadb8e6b74ddc3b53076b1d410522cfa45af68dd18befd24ff12313c2494cf2cb0cf142e2228bfe42014309 linux-raw-sys-0.4.15.tar.gz
+5009c486a87b2f52237e15e2e772365424e4780c146776656d8e1551e52bc8e06e5c1cee8db1c59ef20d0463962fc07ba5221a46020a82df17a2f623a175f58f litemap-0.7.4.tar.gz
+525d971f495449bbd02eb70fcd84d4aab05ca582142144a5f314f9aa67ad4c5b4c98dc919a416d0ed2e555063eab037a441d671d56b633f2cb75dfab5d99bcf7 lock_api-0.4.12.tar.gz
+b420404c82aeb04219e9f63505d60b8853cad44d1de0bec0750715baae21afae806bd4f741bb8964dd39bb5d1e0f5be41bc38d76773bdfd5e920d30533146231 log-0.4.25.tar.gz
+dbc6def04c482911ace311f34be79992fa04042c7ce36b71459b5af5c1c43e9fa66b6b40f63f8c3647daba287bf1c1be9b1a8031ead1d855f99a988898c96f1a mac-0.1.1.tar.gz
+917b5cf665e12b687035c895b60b2ae05622963f495f5693515fd24d56f49e95a06ffced68606d061bd20822c655100035930673fd4b0d4790168763b6961a9f maplit-1.0.2.tar.gz
+c9e9452f5bd43a7e578434467ce324a857ad600965fe37a24650f0f3e968fe1dc603ac8c7b9c4ebe2f624511cbdbc592ca0072b04ae094738670e199df9ad05e markup5ever-0.11.0.tar.gz
+5063b6591c63897017d79f64d11cc13edce2e8e21462df8a00166d582e83af3132ea7f4e50af4f248b56b75cbd12c6f89b7433da14147c76004fb2ffeda02b92 markup5ever-0.12.1.tar.gz
+bf21aee14ec41ea9ac5a5645285173394a561c34311f4b4a7f3c2e8fb32a54a777e4913c985daa2f693bb7b1aaf799d45ab9a6f359b900d2bb916b1ff376fbe4 markup5ever_rcdom-0.2.0.tar.gz
+8d0e8b9c30208897d4b1b920f1bdcccd0c2b75d92a06abe4a1b2407938768abb6487d63de56c6a80419798fe69517210643dfaf11f5f5540185f0eccf220adb2 memchr-2.7.4.tar.gz
+e6d2ca92bb58fc747c1bb65a7f9023e5dbf4b94966003a72e4913bcaaeccdd6752725cdbd5081e0fd69d9e8f364d79664fcbe70061737d5c39e5b3e3a154a0d1 mime-0.3.17.tar.gz
+433c876e28394282cfbe14bb9543616cd296879f253ed331c15ace8a7d9f3629f5b596c2d5a64823a97ca9b774acc711b65006c46d54d1e9ee0553cbf1f13b7c mime_guess-2.0.5.tar.gz
+b79cd67a477851b18ed87c887bfd9f40f97059eb3fedbdc3a52eac66b5fcea42cae833eea39fd62becdb057b337f91d27f2087a407d02770feeaea934c0b1e1c miniz_oxide-0.8.3.tar.gz
+2142edc7e9378fc3437110c85ba2cee9c9683e87034cd44275d2c389645979db53fbbc29fec304f1d8c8f0464ae17d2a5db1aa9215d696fa0282f5069700b1e2 mio-1.0.3.tar.gz
+73a61acbc9b20b3595925360827ba8798f3338471b291fa37c72a1c9505b3ec9f688808fcaac9a2eb494e5f3ea5331d30545d5f21f89559111bec6126ac90b48 new_debug_unreachable-1.0.6.tar.gz
+f8e2a6e333b0e8972febe8b9cf058c8d899c384fd177e0b6ef1c5f94e0fa18192963970cb1a2ba80e3135a8cca66cdae6796e4d84ac6b325bb369575bdfc6eea normalize-line-endings-0.3.0.tar.gz
+a3cd341d1b4ead252f25a77e42165cd5a6b1459946ef55a5319558b89301e01e445f7cdafa13231836d336284798e48cd4e17632cba53a17213badbad3ce7a6f normpath-1.3.0.tar.gz
+0238ed072d632526ed6c464d69674f5f1d3744d878b59a9e1e6bc460000447c158a54a3c2504270807a68cd6a5f953deb56b05d80ae03486688d4a9153d14507 notify-8.0.0.tar.gz
+f54f8e97bad11f2b278eb384dad75ac9c3dab3e7c8c9518a660e4c2b0ad12ccaf58895fda493b41862c75d14a2fca422d4036c04fc1bb657c4bba55ba7b98faf notify-debouncer-mini-0.6.0.tar.gz
+2364311cb22104a661ee4f0b687777f5887c988a3760162a0b51cece66ce99838bc2224f346994687057fda1e19c01e6b1cf812eb1de8e3aad9667b229f9e5ec notify-types-2.0.0.tar.gz
+33fd877231e2db400fef0367f7df3a5bfeeb74a9d801f22973501da0890590e929ae96c680dae7ad330e2fa87b80ef1844d87b5d7deec9d431be78120f9a2845 num-modular-0.6.1.tar.gz
+befccdd1e2e6e7f969e8bb1274c80589ef4c41532791fc25d1c77f11c80b421406e22252cb2799547cffee7d876850cf6fe66d2f0dd32a4080982a887d3ea30d num-order-1.2.0.tar.gz
+180018a5eceb45085e4e8d103ff21bb4d5079cea874c42a0ad4c76c99d275d434bbc1cc289f0cdec172866daa89dbfe0871410b2cc3407233fe1129786905956 num-traits-0.2.19.tar.gz
+dd69172349ecf51fd2351d32cc4453760ca1d15e854a1cf5ed99112032901a54b4645b24163b946deed11f81d3e3035e1a5afd8bff20f335dbd05eceab073478 object-0.36.7.tar.gz
+bc6005bdab7a154c01e2203fb553a68695727475a9a882cf906d49c054ce886ad92cb491d380b6b9fe71a81b2fd690ce91c9a6cf8dfa8508470ac9acfc8a31c8 once_cell-1.20.2.tar.gz
+15e2c6262f887bc53e21f1ba1acf9d3a5c97f011e6b54084274f9f089e658fd747b2c16da0a55cd5f56e9b771306c8f56319939a9e503a6ab5c3b9475808191a opener-0.7.2.tar.gz
+368c17203fb5b9e4ecfd4857e3b1ab96b86da3770b8f21be392818c845952f72dde1072a10265760a62aa8a1dd65332bfd585667444e5fbb9dbe3280b5862703 parking_lot-0.12.3.tar.gz
+4f30fb60ded274d3154ffb00f6f50ac284b6fb97daebc1a2ac897ce97fa8e2ec6ff30cbdadf3b7419617a410fa7525f30ef5e580334e07d4420f4c0200a57389 parking_lot_core-0.9.10.tar.gz
+54938b311d4eeb49d1d7418d2ab7ffd19bd308c36419cf3ad3ae58785b971fbb2fd2d8f5907e0c47be7bf74ded98c62deeb90f509e6cb0edc6d3c1a69dce3bf7 pathdiff-0.2.3.tar.gz
+5951ea8315e52cf3acfbaa023cb9e13a136b114c54a7da0bd44619ae24cd2159d4a96469d7572a2fdabd94e19513a033387117d7ca81d0eb409fb383e4acda44 percent-encoding-2.3.1.tar.gz
+a044c8e92bf63dca6522da1aecf714329278def96b037ebb38dd485d6063bb7b15ecf762fdfdecd2026136c42b6edd89702f624cde14b437161c372d6c3d87c3 pest-2.7.15.tar.gz
+22cd53c1c9062db988dcf8645a6320f96219777fe35f9d8fe05f69df445d58a39157c029a93d5fc26781c5c44961afffb9bd959b3d4ecba2d4e17b23cc422250 pest_derive-2.7.15.tar.gz
+98e0101900cb4fd0e22af2a214f380269de10b590078a7a9f03154ead159912abfec664e1f89c57aae38ca8b54a163da4302d2954713711bb133a9c2ced32f48 pest_generator-2.7.15.tar.gz
+dac3e599b280f2ad9d3d6c1362ca18e27929f15047ed9195a3cea1e1ecc03bab98355cb39de1c793764affe41b24f0efcb6660ad0c81f7a6c5201f402e4c6a64 pest_meta-2.7.15.tar.gz
+84568d6d1baa7c4e6faf5f3ee09133e736977286d7cb7630a59a53fc8ea15d0d41b9242f8929184667ce576cc9946da55d1e8bc06e98824f163c91c6aa05e073 phf-0.10.1.tar.gz
+20a834481bc43ac8c560b00e337294d3c14d1fe359e7f78ed08166b096305e40277f4cd3c179a740911b5c241aeb4e263afa1a50d37f383ef63da113bd6270a9 phf-0.11.3.tar.gz
+dab91b53c72a5b9b6c4773b9f16d2cd58f65bdd9fb975257b8d107d4509b44f5ce8b92ab59a60171207e025688cde54ef97c9973c4226a8765f10f35c4f6f1b1 phf_codegen-0.10.0.tar.gz
+e86c3b73de198aa0ac67beb6eeebb88865f77d075b9d7f290eb9b73bfdd6728d9479f796d56e4f3358226ee88b877d848017cd951a14804534e4cb656eed209e phf_codegen-0.11.3.tar.gz
+b6542d816b2e963c169df695d332f92237ba380f49bf919021514a16aef71de8f4f70b9612356db9f345f3f0d3656b2b39a4f34f8ffa8515510b81f1b19cb9f7 phf_generator-0.10.0.tar.gz
+52998e20648b6ecd1eaafa407f7da4667fa829d48fe0c9f8f718377cc86a232a6261fc2f831ffc7051b62dbdb880654b1207ac314e57b23d2b70f634d07c2115 phf_generator-0.11.3.tar.gz
+f088a6836a28afca7a2ef5440d7aa953227785d52aa0b9fcb76c88d085fe7f0e68732f2354c9f8dfc0a90ab1b8ac214f28549780e6f32d857ff7e8963093d9e5 phf_shared-0.10.0.tar.gz
+34bc3c0dff5568f0276777614d92d87882ca6be9e3d405c1e7de90ac16ec52a12acc30ea9ab2033074d0e988fa514247f37de1a21a3727de0ef43f42f477e27e phf_shared-0.11.3.tar.gz
+c93706969cb1358d84a9eefea6de6ed732b87c0bd68cd5299f6874b8ec0ea16d65989f127b9ea06a766a5c0e299033a11dd9d83f361938c28e1658d546e3725c pin-project-1.1.8.tar.gz
+9471d2c163bb6966203735f6815023a77c7b650adf6f0f03f439416af297e03ccab1772de040c0b2c7bf9f57b92ff6cb0dd50668f85d5a9fe766e24eab0cd1eb pin-project-internal-1.1.8.tar.gz
+971adfe54cfed304647fd944c1c915e78b37eaf0de3a582fb984a5e91f1b7d4db2cf0f53a9a64b64427062d4b41c0a36baddef782411a76ae3be0f8ca45f0718 pin-project-lite-0.2.16.tar.gz
+828422b8440cc82ac6b0743e0112fa7540d437aed457564999092b1462cd7672cd6b1f0201b67075431aeedd3d9c5127468a3dd028744109944f7f023c82fd70 pin-utils-0.1.0.tar.gz
+ac3e8062ee8831a4e4fc717b5247dc7f113da7bf6d64ec95cbca7875959a2afa1497bf81d9dfc27206b5fb10027a2509d51dd9ca1c10139d7b4c78128864fdf4 pkg-config-0.3.31.tar.gz
+6d171f63b42296f7765732fce3af7ea05d0d81f1541ffb3ad86e81210715ef4afe5bc9e58926e97e757aea6ff96a8012c8411eac78be0fd080898318ed21d7d1 ppv-lite86-0.2.20.tar.gz
+a118a98286a47e2f0cf35d2678d0325c18b9b7d5bdf40ceadc16483b282307fd1498434d5bdfa25477a4f420d97c34d786e42e9fa70431b788b4b8fde9718e05 precomputed-hash-0.1.1.tar.gz
+0da703faeb708e3f9eb9bb8803dd8cf6a493b02d38b9b617fd1eed7ccb870ae96c5be6cfe63b7ea8855cb2a019a7ea59799faf2bd78fb490d62e640d1a7de1e2 predicates-3.1.3.tar.gz
+618db56d417f44f5575159265f245fbb62399951824730546df735dd9bc9dba2200f58c0a7c7830040bf27954bb48e01fddb5fe0f4d4890d5e172cb1c586735b predicates-core-1.0.9.tar.gz
+f5f6d7d0cba4ca7176a26d9adea5ded46f1a3361f9b6ceaa7dcf468ce616912cf3b764b8250f39a42a24eac71fb94e0d4d822c89361aae02472cf761ba55dfaa predicates-tree-1.0.12.tar.gz
+474f77c61cc17bbe9914c56b98a80e5918450205827cd059d693c2d603ff61a0897cad25dde645cb495200e61ddc14333d15eb8bf2de090a2eb68deeb9aec8b0 pretty_assertions-1.4.1.tar.gz
+1ae650e390e4f1b18d05f42d2ffcd025cabf72568a326cd85496c722600108b0aa0ab0161b39fcc931b8b302427f678650e703f4db57aa1a60f1751db881dc6c proc-macro2-1.0.93.tar.gz
+ffa5d116bce2b480f495a0aeac106961c9c79a2127aaca9f75b759e2f2823d253d2bca0dcd5c1f095c16c8e952bdf421fa04a26af53d80095923a5804a274cb2 pulldown-cmark-0.10.3.tar.gz
+7514c4282d3c4ef0b0f7ae65374a549c1a027d7fdd5eddad8a2de93dde49aee2e3a2eec2c5c598967b128c2edc6981fa6dc55972c8194206abc9e7a673eb9482 pulldown-cmark-0.12.2.tar.gz
+4c60b4abcc385ba7c27210354769e63d5f7f387ce234d3078e7525b88cd2aecd2d62a7dfdc8a4cdde8ef10723a216ea5fb5214e96b5bf8d2fd84e28786b2b3aa pulldown-cmark-escape-0.10.1.tar.gz
+04188d57ced101cb52bfc46ef5f2e2cd3b271bdb1f9f4160f9755555bcc430d3ef4534cb91495ea114a69e80867b31b025d16271e69f444e144058c7f2df70bb pulldown-cmark-to-cmark-18.0.0.tar.gz
+530c47c5e6372b508bf5b2b88a138408a7afa5ef52c47280ed20eccf39f8e97dfc1e0a18c1bd5472efcdc49a7a1e69566333a0a1b4c0b4f0e11e6a7a85bfe8af quote-1.0.38.tar.gz
+8b33a8988906ba5e2057a9a84bdd11f867a5536c22f5056eec59ed4ec4e3a6da2fd773da4c0510d343762e5a4ea0f007db4c4a7cef87a47f90e36c1a84d86fb2 rand-0.8.5.tar.gz
+8198c580b1b9b0429758ffa49cd8138fa3ce724f0dcf73c767ea7e55611d6a2e4c7cad9950896510def500ce4062b594386c947ac3d89425b4e5c9b04d0b8075 rand_chacha-0.3.1.tar.gz
+36c67eb845aa2ccca49d6d680f28d418229bbc5a050729e487fe6b9f9f384fdd7b8d67fc6508b90b79ffb3c26688e72feceb3ecae57d3d7f59338aeb62296f79 rand_core-0.6.4.tar.gz
+5f9632f1f89f4963c36ede4da9b955c3474b673c3414d81cdbb61f46c08eff67167f703a0b06b239beeb2d720f8fa592a5493c0f7e872728b5b95f561ff11348 redox_syscall-0.5.8.tar.gz
+d065f6dc405771518260425f39a5eaaf8cab62e78c91ceed3b3994a9a121674d2484cadaaf816bdad89c87a40550d57b66a3d9de6618a7119a658301ce7e67d8 regex-1.11.1.tar.gz
+40bde0ec91cc27bc0c3fa237a37ecee5a1f023dbe006a999c5888f8f578ee2c4c64d9edfe1827546cea8e92ca3c10f8b4d494d81f3d0422b40d90bca9cf598d2 regex-automata-0.4.9.tar.gz
+549d8d130fea9ec0d5806126f57f31d433f50e9328c5532ad417c44bb5488ec0d20acb0983dbe54dabaa0b453cbea4533cf7baac7144df119e8f78dfe55c5ab8 regex-syntax-0.8.5.tar.gz
+eb897c35300b87766e6105917a907fca1c5b1f7691fc03c6c1aaf38075ac883a73d1eb54a245d13ba59c7b0f0333d6543e23fc1b1c542fbbd5c750a84660b9e8 rustc-demangle-0.1.24.tar.gz
+b7e66a27c9188eff307aa9912852706f686864852a97af0696ac5fc5dccdf2e4d22a69266fa74ac71aa123e2831f24b898b7ee9121850d65cfb56e12bd647d8f rustix-0.38.44.tar.gz
+45b959aea8155ee47c51aa1d87c6c344b5f4b20199a2646ca30bdabe1c2458b014be91fe0c48c29c2261ad9e5de6df7eef7ddead1682e584d4a906c17984baab rustversion-1.0.19.tar.gz
+b80d07d609237e13ce1f8cbef5b16738308c540800c7ec18387aec876fb2204029754f20f1f273a0ea07f54dfbaa4595fd0a90044d09f124c1c99e46f1005a99 ryu-1.0.19.tar.gz
+3ba35309742c8db63210d9ea78bff4ecd80471d69e6238eb96c7bf0673814f221e2d838fe6311bfc5a0e71b4a7ccba33e07859c0b9cff2171969ff08a4214a7c same-file-1.0.6.tar.gz
+342f43d53edd33ea3e2197faf5dce37bfbeb0b20b6f0febad4dc6244c3185df127b2c10488e95561260a0ef968f32707460f2d0d23667cebece19b167c0a0c25 scoped-tls-1.0.1.tar.gz
+6247719a15fe1e4e2d179127b9a934bd2f99367724f41175ed9522f58824b6bc69b35002eae66b35880375ff61d77ac43ddaa78cbde7160a35183a1da32d3fbb scopeguard-1.2.0.tar.gz
+8e5b14ee8cd2d88eb908fdf750cfd724741019ad4bbafa1fdeafde10db0b7cc6a86883d8aad7c1267e772dec63e2f138e57d52ab425b8c5a10faed9329dccdfe select-0.6.0.tar.gz
+82b66a040a155ea2714a7b014840d55bb4c01fd4862b58519e5adaa5651343048e1f1b86213470cfe919290664de46ee548680bad93e9969fc44ed227c545374 semver-1.0.25.tar.gz
+f97b3b54b9e99c9a027390405cc054c3072f49c92803a4ed5f5f69e76a179deda9d77993b645b3581437085912d881da88d0451b9e0da423c64033a23fdd8054 serde-1.0.217.tar.gz
+31020f4533d04b31ae125580a3c5093fad36438d324e2d9b063923aa8c125c654102ae7fbc3b3df892bb41db6b321962a23e0a37950e080055d715d15b18af76 serde_derive-1.0.217.tar.gz
+25f2c1c31cf01212472f651625d9e4a1ea6bb31c79a74d85ab96dfb3ef4c052d3012a8ab8b6a261826afe90d891d35a2803b8459741d1e20ce8427807caec2a1 serde_json-1.0.137.tar.gz
+b209ad01b6565e95c1d5b431a3f4f8a0df3d11c2a06a44123048bfa4b34ebb6807eec593f0c1c89de3a06ac3786a14747df9c70b4f4d5e4b72b4feb53084eb60 serde_urlencoded-0.7.1.tar.gz
+fd37be7e3f1d4b6addd313a36b55215fb70abd21be7831b71de28bd3eb03b7352817d8a7b1a166df002c3a23eadc8224e49edd4a37556c0e5357565305d4128f sha1-0.10.6.tar.gz
+3be73133a6b7690e14acaead47914dc92395dca4191fb657a2ea186fefd0ccd94d12a1121d63a26027d9a9c62b775c53202473edc461587b9dcd75472af77785 sha2-0.10.8.tar.gz
+5c8cedbe666a14b8a0874defb9208146ce64579cde52ed483e4a794cac5dde6a24bf8d684404edff582f842e1fd4fa3fbeddbe074f191e4ec4aa517aa456fe8a shlex-1.3.0.tar.gz
+601121bd41da896142dc6ccc74a6eec3ebee3e976857ab8b5d21e915fdc8bc6e979af66a489c406371fbbbfc7a13338cc4b3744aa981206e43c53998f3e1699b siphasher-0.3.11.tar.gz
+d230991add51a555af95b30ef104c0e5ed7011fafb92d6ac9ba0f238c8bf4d2fbd39f4b04dbbe960453f8fdd16d3768ba39f39e4877ad453562e689ec8f24a28 siphasher-1.0.1.tar.gz
+b6b5423ae026472920f7c9a4abe0962314140a36dc562c0a9e3fa60725b2b8b7a8b343110d9d4c0e18fb318b0103e14c0ccbc9ae350d5563a5ac80c35f228c40 slab-0.4.9.tar.gz
+a97c758b668e40ad9eb572e65feeae4954e09200a04ab92e26a13b48894381cd3a3d2571070c4b7a5e181182e1ede9688f990650342ec69ecfe1a264d234c679 smallvec-1.13.2.tar.gz
+b7d03608a3d4cf3e2d1539b5a375412effcc96279e8f57668fa8cf67b3f0a3a6b611ea5e2e72f282460582954acbb5364320611f7798a11ec9e4833e53830b60 socket2-0.5.8.tar.gz
+a13cfb22723f1f2cf089b2d07d657846f50c37bc0438d1a76096bea30214cad226b7a422c21f9e191ce87071da8a141d61882aedf9e0203a5fffdfda86a5fb03 stable_deref_trait-1.2.0.tar.gz
+03f9cdd2c01c0f233284851f17eaefebd68a91ae2ed2b231fab2d6d6476bd19e0696d7d3a74fb6ecb2ec36b89e79ad966ab73051255c9e194bcf9c5029fb8479 string_cache-0.8.7.tar.gz
+01b9b1a865878537f657adf908159fd04f3f2ba4e70f8c632b73d0ed5a8a09fe2bb9ac8ac4397dec1f50d771dec33fc5d3f9e68dbf80cc177118665b2c67e864 string_cache_codegen-0.5.2.tar.gz
+0cebe0155a92640e56db9a599ae62078cbb32e1d2da8bfa67ed0e8f410a7558dfcf7b3c2720ff5913282e291ecf076aed9fe9bf84c8d44e814a642b1bed3335c strsim-0.11.1.tar.gz
+12816b9e8cf984024b2fbce9f0ae14cf94d4d2c06f08cc54fb793ce78770bb4cc1288eb7df0ba5e8e937756e1e8e295c53fe07a0c5dde1ea8ddba03b6203b37d syn-1.0.109.tar.gz
+ec2e352a5b0b2aa619774c01d7a7767674a44ffe91dea45d3379bf172d13039c3d37f264e98e26b20fe1d86db6d5190f220831c842f3316469d4ae73c2bfddec syn-2.0.96.tar.gz
+09024193b44fc9a8901bda845b9f86c57dad65d0f53e309b2e7e968538fab6f67db1c86e5e52a2eb8fd116dc073e3ad10983bd60764662ec6ba94fee22a958aa synstructure-0.13.1.tar.gz
+82636d50a29e1ea8cc61e80dc1fa28ea4cfaeb6175e5bf0558d6cd6f8da823f50a808a555ec17fc8601acfd0f504e15688fe95f64e8792feeb216bf27678807d tempfile-3.15.0.tar.gz
+53f074aec6e59717fca280b1764f6c2e0a1c073336f48d012ff268a7189697d42d24a91a6a549c7d9e1fe8b0006e34c219f4dba3cc95247d3905c6f8a6a8186f tendril-0.4.3.tar.gz
+e07bdbdf695bf9a607ea7c7c4c5b22a8637b0871877114aa305717a04d31a6b7670e2a79435810aefefe25db8c9a655e4c4ba6075d4ec76322a30cdf71ff03be terminal_size-0.4.1.tar.gz
+43d92132cef6d352c6c0190ce4a688d7cffb61ee86dbc6b49ba1f4c404661f9b329331198063d913ae52b2d4c69e6a2d9f5cd62886894c468093abd8604f0125 termtree-0.5.1.tar.gz
+ef50d2867d965da1dfb29d26faf6de273b5fadf78f95313f6caf44d68bfc610b9bd4b7544200b05bb0861231cfc84e961007f8db83c7905244c492037fd31899 thiserror-1.0.69.tar.gz
+ba0c3c2615bb9bfb07affa66ffeb2eeda43b16a974dc9a0482165a4a5a502a376e2fd6b569a228a08647de23d291e2c301dedf89d8caa79833b965a184dd5904 thiserror-2.0.11.tar.gz
+579eb796c8885feb01d27638862823acd96c79440655bb444c3445ac00121852603396ce7439aed617c0a0ac69f62102167fde5845411c906997574a46d6d9e3 thiserror-impl-1.0.69.tar.gz
+3fb76f16613064917d2b21f1bab06fd4dec9f40ad1f850aa78c5917854347cf9034a72d2091dc792ac06ce9ff9e29ed2bec3a4330b459abff379356e35c8f701 thiserror-impl-2.0.11.tar.gz
+a33051848de248cac0a2d151760a78cb3aa62c787d84ff7aac38b11c0660e9188e4d43d43a77fb8676e49ac6102015e9c3db057848d809e71981851875d0fb25 tinystr-0.7.6.tar.gz
+8a2681829afc3ffa6446eaff7463d52aa3351598639ef5d9af0633dc5425e7ff222a7e661f519c3383377cb46b40969ae8c38bedc77a9da92a871ba7d1c18a63 tokio-1.43.0.tar.gz
+c1d24cbb8b3f500357e39f93cf139790e4bd3ad1657dd5d695f5e4f9a2a460cd63e8c1c32a36b64d3cadd7b6467e59ee34cd5b1548a99449d8e46c2db83e9ec4 tokio-macros-2.5.0.tar.gz
+2ed4baa38ed5f3e19250af71c9142412dd96d59c971f9813e9a633c9764c580f7ea2141719a82251c60c9d2a5fdb22b311fc0f7a297f9363585be4d140c1747b tokio-tungstenite-0.21.0.tar.gz
+2a1e8fbdd094f81e00ee87eb5ebc4c62825945048105970e52d6d0a872769d268a41ddf91c60158c02a303ecbaa1b19795948b5416f9bbfcb079c5b27d39d51f tokio-util-0.7.13.tar.gz
+eddb82aeb8fdeb5436579292c6f7a64a90a2c7bb54070beb437bc7890b99795d0505faa8d6451a99e8bcf440f78db8a1b273a697c8ad44275cc4163a9ee49317 toml-0.5.11.tar.gz
+1334300f1022126138355ce1c4b33f60297765f9dab6888242e78be76b0df9e83560be693eabaaf10f9aea2dfdb90e248b02b0cee89dca495a1e365d9b6e87dc topological-sort-0.2.2.tar.gz
+770cbca46d8500ff36fe84a9a420beb84a0e893dbeaccdd93a3970e746c893b5d32580182ef3017662f421e4b2d71f079ed2cf1727dcd5fc3443a4484f9b43fd tower-service-0.3.3.tar.gz
+dffb8d3a1375f1b9d5418550a46cb7b1d92b2cc8ffbccb430a38f7731547960775bb42798074186711847d256eee30fb3e74078b69cb36f28c07d9f231dbf96c tracing-0.1.41.tar.gz
+1c6f0cf3b7bd6c8f6316ed9ea0b315a619308de6cbf7e50e665a193cf8c3399b5227d4f145d83b10c7e01a2f9fbc83d16e108cf09b7fd6cef413aa5c1acf89ef tracing-core-0.1.33.tar.gz
+433db3c52f55d78220db414ef6a7367791dd66eac935f41dcda85ec9200f0eefeab6e8342e70aabe35c300069c0e7b7c4f8d63a2334b52a081cc98416371ef08 try-lock-0.2.5.tar.gz
+44a9826d68b61ec4b65bf72a12800674edd1eff8e9fae3fcb272276f6f598edffc7e1b36f2564494520414b3b426a860a32c6543c07d9f1c1404490e1c0e431e tungstenite-0.21.0.tar.gz
+99773d5d9f850c0602db4bb67dd062b0ade6f086e155216f1bb2fb6569461ba7e1b7c2f2af81ea8833bc3bfcf3fe5033edecb7c438adae63f59d3e30cf63a508 typenum-1.17.0.tar.gz
+382a832e38654a9159ebb40a8e8bf6e7f2f3108940e5b9c388f3a1441848a241201e7e5cfb125e098f04f0b2893da231b8a0e5124270e774215374bff3c5445f ucd-trie-0.1.7.tar.gz
+99a3944a5c987376bdea5fe6c0797e881bc8e6f629c56120ce811c8ebbed0a3ba24617decb74d6939699c8fc994c662eb292869ab407c0ba0ec460a32ede0190 unicase-2.8.1.tar.gz
+9484a34a4e283f94e971fa9ec42528a62f2c056e702040da37dd9d9b794e16e14a408302d1ac26a850d0eadf0d0266d8ef5b80761490f7029240244a39878ec9 unicode-ident-1.0.16.tar.gz
+8f1d62bfdd45f52fa12ad657a521a3478d0ab54d187346a29dd59cc66a0f140ca96d850948e09f6316f08b44b3fc68526c58bd620fed5d065b7e8528df3cd46d url-2.5.4.tar.gz
+6bf0787cc297a1ac4e47389464d05ef6850602f549621687e776618bec96c1f7bacbb1ac8faaa63e5d28d975b850db8d6c784eb66e2466128f0521b91c14015b utf-8-0.7.6.tar.gz
+44dcbc5a7db149392fdaa31862be240f78fc5d7616f54be32cfc8f3adbee310e8681ae1bbe6edaad8a7fe6e7759dbac8ae4f69d0dbdbe5350c21dccdbbe975fa utf16_iter-1.0.5.tar.gz
+a72671995b3eb295581c60dc632e4a25ba257227fb5d58a8bec322428b6d69529bba79a6f02b8e7ee6698b7779d9d6695f5badad73e07c254b00c9d6256c9090 utf8_iter-1.0.4.tar.gz
+f3dbf78fe924f1dc3cf9498b6e43fb10174699463f31091a7a8136d8f31ec84fc00e80e3d8551b7e86257e8b3573cfddb56fc0de797fdb2cde0e962a8f239266 utf8parse-0.2.2.tar.gz
+d11d5a2240ab0c67ea69db56561ce202201edeef9a8e5eda3d9ae7ab7bb5752d8f343fe7f6536d8383de8d55f9024efa84f66a0c21e69563b7a38c4a628014db version_check-0.9.5.tar.gz
+db3b7aa2acfd44e64451042b8ba98eecab77a82aa5c58ed08dadb119ab36dee4e26d62baad7978ed56d5ad03019c96be5021455362290f56043981137bac8066 wait-timeout-0.2.0.tar.gz
+da36a121dc6656942dc9cd9887fcf4f6eea7750354ef3f59c7c25d836e7afe06f33260b4d55d0d99421104ed4ce56ef2a1f0f4c3b713766fff90548c21793fad walkdir-2.5.0.tar.gz
+f93f765113f035e134b967e8eb3f4511b8e03e793a47899b614d826afac02348fc02865c298a10410ecec4eb64f35f66c22bcbdbe36ed0c4c1665dca1db4d526 want-0.3.1.tar.gz
+8dc2dcb5a64555caa5cf74617cc5fc4fe3874d55f4df1b455e6b68c855fe8791f979c622d64b7e357085e322a047cce411c4dc751ecb608c9832abf7550db5a0 warp-0.3.7.tar.gz
+043500ab28cd9cb779475255da5d109ebab7fccca72b64873dc28d77bc5a157ba8d96b9e8f05223b5b36c7089bb7b4ba87657fc69bac16b78972f897294a865f wasi-0.11.0+wasi-snapshot-preview1.tar.gz
+2a8ea7ec669efe10f5701dc3b2bf496e33afa70c31dbc65fda5191c9c28ddde54fa38bb168a41b0319a4ff0bb5ccd897ce51ccd7e523e647b3544fb390f8a4e3 wasm-bindgen-0.2.100.tar.gz
+a2ee30c1185644f989af6be34e93149a791c05125de24c0ff91c320f683f6f5d939fe42b8ca09d629096388a39256469f8b96a6e35722ccfdbe8d978c9a51770 wasm-bindgen-backend-0.2.100.tar.gz
+a1942f838eff5fd54406b573d81fe18f262df48a19535245b1a46cb31db2a022746e861d72e5286c632969d15d416655460d3865309c4947cd3d7965dead5c42 wasm-bindgen-macro-0.2.100.tar.gz
+0d03eaeda37c9c6ae06c0fa96e872b54780c4cf545b621c730dcc113dd59a8cb6333c5e3818f51365f71913b9669d8a870a06e70729722d03c07a49cff8a4fdf wasm-bindgen-macro-support-0.2.100.tar.gz
+3fca8ddd1c6b2f66f70f6608c9b341822603f1c0dd71d47d27c6be8fe3f2c88598619946627720734b48cf999cafd0c63a08af5db28ea78a1538d2165a5fba61 wasm-bindgen-shared-0.2.100.tar.gz
+ff8b7b78065f3d8999ec03c725a0460ebc059771bf071c7a3df3f0ecd733edf3b0a2450024d4e24e1aedddaecd9038ce1376c0d8bbf45132068cf45cf4a53a97 winapi-0.3.9.tar.gz
+a672ccefd0730a8166fef1d4e39f9034d9ae426a3f5e28d1f4169fa5c5790767693f281d890e7804773b34acdb0ae1febac33cde8c50c0044a5a6152c7209ec2 winapi-i686-pc-windows-gnu-0.4.0.tar.gz
+c46b893f67ec6e36499b00736bb6b9421e0e2611e76784afa6da01d7ebd033df82f1be7cf8d871d541125d290983f98f26f759488ba9aface49efce8edd682e9 winapi-util-0.1.9.tar.gz
+4a654af6a5d649dc87e00497245096b35a2894ae66f155cb62389902c3b93ddcc5cf7d0d8b9dd97b291d2d80bc686af2298e80abef6ac69883f4a54e79712513 winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz
+0c8f1c7e63c11bdcf1361150ecc83abbfba8da2c6d28523799bd286bf8aa1df61ffed19175e8cb3ef516a9afb6248b640c2101a2e0c09a99bfd7a18c6741bd36 windows-core-0.52.0.tar.gz
+24ee0df246c2b456a4987a9124786a28acd358768cc7d1305bccd81bc5bb8822b81a03fb18d35174a520b911c6d9b685f81a34ab319fee13da3b985273584f03 windows-sys-0.52.0.tar.gz
+d35e009e979633a1f3c8468cd038bd5c8c0381405165ce03497decd7d9edaaac485d704487e4a61d9aaf4e4d011b4248408912df6a0044d50e8457259867e061 windows-sys-0.59.0.tar.gz
+d6d2dbd96096c6c396dba141a9817e377c35877f3b2fe58b2553280c7cfcb1ed6ee75bd4d62c9b882662de67ddaf0c1049b91530d29c94dd709c230e08eb895f windows-targets-0.52.6.tar.gz
+f62b2d942bdb3a9353465b07d47b93de179bb706511aa497e4addd74cff95e689a9b633e7801ce786e73b5ae5f30b506b6faa199c5ab86eefdc1d94652df79c5 windows_aarch64_gnullvm-0.52.6.tar.gz
+a3e21305ad0e6de38f5b5ed5d37ee5825b7521064163bcdf31d63341cd87983f54377865d2daf3bb480d2d0aa66d6f598fa09540ec1d71baea74569c86bd213b windows_aarch64_msvc-0.52.6.tar.gz
+a1f6b5dd23d17ec3567bc9d11a4be6f35e196eee21ca342e9b88dbaa6a5f7c46e439c834b77e724f32ac22c0d81573746b3b513a6c944a221b92b2c76fe98822 windows_i686_gnu-0.52.6.tar.gz
+95f13af855d530acc0b856214478d4b11b8dbab3f8f79dd223d0b009790c0e46d096fc1773e0277997deb2d5b96c704f17f23c7df11411524629f75415dec99f windows_i686_gnullvm-0.52.6.tar.gz
+ca97913ce202d73266cf55947b868bea7e964a4516b6a096a81aeab6a60ee73867171032ced35e3afccff741ddfb2def7468343b6eceb95253e4d4f349efbf96 windows_i686_msvc-0.52.6.tar.gz
+c4086bb0280042f2bef9b556283b67f8a5cacddd209e1c5fabec63decec6d4fd2d6a7071407973981b98ae0c0cf7034fc612f9e70dc6d3eed9acdec771ae31cb windows_x86_64_gnu-0.52.6.tar.gz
+67681f5859e249c56b0183181811f6212cc7008d6471dad78aecc7ebe3d027686b19210b8aa9014c554410f69f913d21ce2aca928eea905eab779bea26464cbd windows_x86_64_gnullvm-0.52.6.tar.gz
+21944cd8e3a481b514509e73ae3f62722fe7ed380d37ea0c25f8fbdeba79174dd52ff65d898838da5df4197894b74e00f45d47489418e978753b4e55c7e623e7 windows_x86_64_msvc-0.52.6.tar.gz
+655a207b8082bb88e462f992ecb4833cef9d590da06d6356b41d109df2862b49ee5705189c78a607b549e7343035119d158020d58fcad49608e51659357a83c1 write16-1.0.0.tar.gz
+818b2546c8ec25816aeaf5e31a1ded927d197bf7256e7c5073738c2709bc58a95d382a0256eb38a99235ae83729b578701261866d42ea3357a26024906e196c1 writeable-0.5.5.tar.gz
+0c67244411811a3e82fe58d341b371b938ce6e45ec1af2bd8615c0f0a9628fa662ec0eb130de2ae199d32c7778f0c2d2b80221812dc33831b93333dcde5a682e xml5ever-0.17.0.tar.gz
+182c8c6c60a30a727d8f8b90bbf0527d91fa8ae9d8eb20e5414614b43ee6dc532f4b19241adbfb9299cb0004b39fe627036269b60b0c3860d9e1ea4413aca541 yansi-1.0.1.tar.gz
+6bbd99671d1a5a5217890eaa267113d193b3636b265393afb6e72a313f01704d462fe017264f061405e8e84c188b590094c29e3fcf19a63c375ae165d1a0bbef yoke-0.7.5.tar.gz
+e30b06b020aa283080905004295fb643c539b130d0d53bda51927b95e79ba562336aad30d8a6202d9a0c62d5b64559a01218c6f02f3faada6003d4b03c205cd6 yoke-derive-0.7.5.tar.gz
+17fcb31c029ae89c01e5bae5fb2bb46bd434120199a3dc2c7fe0012dbbcfe2a0bb38934c4a7d3a4920e3fe47c097403beee554fefa54b66cb390f8b1de638d3c zerocopy-0.7.35.tar.gz
+dbe23573b62a6267d7bc8c744320b75b2fbda03b908c1d175211f7394374fe182bce58021e25485c10671d726b2007f250565dfe53134d51c89293bb607e9feb zerocopy-derive-0.7.35.tar.gz
+11f16a1003967b3f30d7b32ffc8541ec05fb335690b08cf4f7554c624ad4312ee0961c83390a997e2a73aee06d8bb09a0ff4e6a5e489f8fb925141e732006544 zerofrom-0.1.5.tar.gz
+75098e0f1c690bd8476f819f4ea2a7645b88237042a8876259bf4e025b070a4b105caf16ca7a824c5dd6c4690b693fcc74bed9ac0b5e6fdab05a5bed1b5cb298 zerofrom-derive-0.1.5.tar.gz
+db12bba1d7476ddead92e6dfcdcc30e2e0defff4f263a740244eabee265a2cab265473a663d3dc3210f48e113b66d951da496dfab7965ce1bc792e5f2db422a0 zerovec-0.10.4.tar.gz
+caefbffeb35265db9f74933bf07109d57f0da48156cafd4f330af78a5c7eb9ab0831a80789ad4fb119875ebc6cfd7e3de68c9984b77dca5151f9be41f1ae6e09 zerovec-derive-0.10.3.tar.gz"
diff --git a/user/mdds/APKBUILD b/user/mdds/APKBUILD
index 3fe25f000..c782a1649 100644
--- a/user/mdds/APKBUILD
+++ b/user/mdds/APKBUILD
@@ -1,20 +1,23 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=mdds
-pkgver=1.4.3
+pkgver=2.1.1
pkgrel=0
pkgdesc="Multi-dimensional data index algorithms"
url="https://gitlab.com/mdds/mdds"
arch="noarch"
license="MIT"
depends=""
-makedepends=""
checkdepends="boost-dev"
+makedepends=""
subpackages="$pkgname-doc"
-source="http://kohei.us/files/$pkgname/src/$pkgname-$pkgver.tar.bz2"
replaces="$pkgname-dev"
+source="https://gitlab.com/api/v4/projects/mdds%2Fmdds/packages/generic/source/$pkgver/$pkgname-$pkgver.tar.xz"
build() {
+ # GCC 13 changed default fp precision behavior. (#1193, #1205)
+ export CXXFLAGS="${CXXFLAGS} -fexcess-precision=fast"
+
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -36,4 +39,4 @@ package() {
mv "$pkgdir"/usr/share/pkgconfig "$pkgdir"/usr/lib/
}
-sha512sums="fd54a93fde89bff74a5ccf84ce5e2e002114297b165ded56a1bae92b28d70864775add140e165c7750f7dbe8ca1bfe83179cd9a835e53312c2e893c9e1f4434c mdds-1.4.3.tar.bz2"
+sha512sums="5fe345e7d84d2e290a519d65b27332f69001c01da961c05a30abfe2a17cb8545822490bcd63b320d49e1b26291a4a898f77495951919aece83208133027848ea mdds-2.1.1.tar.xz"
diff --git a/user/mednafen/APKBUILD b/user/mednafen/APKBUILD
index 0666bec0f..a994a5491 100644
--- a/user/mednafen/APKBUILD
+++ b/user/mednafen/APKBUILD
@@ -1,17 +1,17 @@
# Contributor: Horst Burkhardt <horst@adelielinux.org>
# Maintainer: Horst Burkhardt <horst@adelielinux.org>
pkgname=mednafen
-pkgver=1.22.1
+pkgver=1.24.3
pkgrel=0
-pkgdesc="an emulator for various home gaming consoles"
+pkgdesc="Portable multi-system emulator"
url="https://mednafen.github.io/"
arch="all !s390x"
-options="!check !dbg" # mednafen does not ship actual tests
+options="!check !dbg" # mednafen does not ship actual tests
subpackages="$pkgname-lang"
license="GPL-2.0-only"
depends=""
makedepends="alsa-lib-dev flac-dev libogg-dev libsndfile-dev libvorbis-dev
- lzo-dev sdl2-dev zlib-dev"
+ lzo-dev sdl2-dev zlib-dev autoconf automake"
source="https://mednafen.github.io/releases/files/$pkgname-$pkgver.tar.xz
ppc.patch
ppc64.patch
@@ -32,6 +32,6 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="4e6890b984a812e188a42582e79dfdac28e101ce3bd658044b68f267d5c8b3799ea3f4de3dcac5314a615f17591a537b51e64f6bd165fec01f028b201eb32763 mednafen-1.22.1.tar.xz
-264b22be3af9db57d0e8676d77b57338308764c79a5eae1c7bd3bb211c5e190ec0797e34a952039175395c0b8819e6285f2ac5f652ee0d5b9d1e0eaf43eca6e9 ppc.patch
+sha512sums="6ed719a0cd247fb0d61fa0174fbd6e2dc9fa94343479aef98be0083268e18cf77a9f9b6a88e2231a7f14b152083e0683658d328d348ef2a1b55032f7c9e9d448 mednafen-1.24.3.tar.xz
+04dd9085c65f0af2be3569b98c0af8a546ba03f6d08a2ba9e817fbed00030cb22aedde102e539573678e8f3bf178adda7caad3778cfa8576e8865eeb69fae7be ppc.patch
84cbff76b16960ec67fec785fc6e8d541db342e9567fb6f4d42c84ced3fc0f0dfe702a8a7fd7af4f84835f8efe289e7cb9cf18766e4196525686eaa23b02537c ppc64.patch"
diff --git a/user/mednafen/ppc.patch b/user/mednafen/ppc.patch
index 0f795f169..3642e401a 100644
--- a/user/mednafen/ppc.patch
+++ b/user/mednafen/ppc.patch
@@ -1,10 +1,10 @@
---- mednafen/configure.ac.old 2019-01-28 06:52:37.000000000 +0000
-+++ mednafen/configure.ac 2019-03-24 22:30:31.180000000 +0000
-@@ -765,7 +765,7 @@
+--- mednafen/configure.ac.old 2020-05-04 05:35:56.000000000 +0000
++++ mednafen/configure.ac 2020-07-08 18:14:09.005569259 +0000
+@@ -860,7 +860,7 @@
AM_CONDITIONAL(ARCH_X86_32, true)
;;
-- powerpc)
+- powerpc*)
+ powerpc*|ppc*)
AC_DEFINE([ARCH_POWERPC], [1], [Define if we are compiling for PPC architectures.])
AM_CONDITIONAL(ARCH_POWERPC, true)
diff --git a/user/mednaffe/APKBUILD b/user/mednaffe/APKBUILD
index 9770912b1..a0aa5914c 100644
--- a/user/mednaffe/APKBUILD
+++ b/user/mednaffe/APKBUILD
@@ -1,28 +1,28 @@
# Contributor: Horst Burkhardt <horst@adelielinux.org>
# Maintainer: Horst Burkhardt <horst@adelielinux.org>
pkgname=mednaffe
-pkgver=0.8.7
+pkgver=0.8.8
pkgrel=0
-pkgdesc="a front-end to the mednafen emulator"
+pkgdesc="Graphical interface for the Mednafen multi-system emulator"
url="https://github.com/AmatCoder/mednaffe"
arch="all !s390x"
options="!check" # mednaffe does not ship a test suite
subpackages="$pkgname-doc"
license="GPL-3.0-only"
depends="mednafen"
-makedepends="mednafen gtk+2.0-dev glib-dev atk-dev pango-dev cairo-dev libxfixes-dev libx11-dev libxrender-dev libxi-dev libxext-dev libxdamage-dev libffi-dev pcre-dev freetype-dev harfbuzz-dev libxcb-dev expat-dev libxau-dev libxdmcp-dev graphite2-dev libuuid libbsd-dev"
+makedepends="mednafen gtk+2.0-dev glib-dev atk-dev pango-dev cairo-dev
+ libxfixes-dev libx11-dev libxrender-dev libxi-dev libxext-dev
+ libxdamage-dev libffi-dev pcre-dev freetype-dev harfbuzz-dev libxcb-dev
+ expat-dev libxau-dev libxdmcp-dev graphite2-dev libuuid libbsd-dev"
source="https://github.com/AmatCoder/mednaffe/releases/download/$pkgver/$pkgname-$pkgver.tar.gz"
-builddir="$srcdir/$pkgname-$pkgver"
build() {
- cd "$builddir"
./configure --prefix=/usr --disable-gtk3
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3495ecd3b87f19ab65d8760ea8adfa830c4dc9fe959f2e2f349216b36f58d9623c9cfd0c7e40fe5e8b7b90846fe85d9808c2a5885f36d5d8b16659b25cf8a3a1 mednaffe-0.8.7.tar.gz"
+sha512sums="93e80f9c1d7a4caf5324c00760cd559031df5f29ad98d917ca2d514b012fcd616692eb2ae85eee3c17750dea890fa0206d9c1a548227ac3b762aab44837d2ae4 mednaffe-0.8.8.tar.gz"
diff --git a/user/menu-cache/APKBUILD b/user/menu-cache/APKBUILD
index 0ed6c1272..3c20b042c 100644
--- a/user/menu-cache/APKBUILD
+++ b/user/menu-cache/APKBUILD
@@ -2,18 +2,20 @@
# Maintainer:
pkgname=menu-cache
pkgver=1.1.0
-pkgrel=0
+pkgrel=1
pkgdesc="Caching mechanism for freedesktop.org menus"
url="https://lxde.org/"
arch="all"
options="!check libtool" # No test suite.
license="GPL-2.0+"
+depends=""
makedepends="glib-dev libfm-extra-dev"
subpackages="$pkgname-dev"
-source="https://downloads.sourceforge.net/lxde/menu-cache/1.1/$pkgname-$pkgver.tar.xz"
+source="https://downloads.sourceforge.net/lxde/menu-cache/1.1/$pkgname-$pkgver.tar.xz
+ gcc10.patch
+ "
build() {
- cd "$builddir"
./configure \
--prefix=/usr \
--sysconfdir=/etc \
@@ -23,8 +25,8 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e4c6619ade7b9a1b97c1366bb94dffb9975be5664b193cf0c69cf9470ef7ae19bda3390d04d98ee9a5b1658ec48aa5c83508c26c347af689161ee67c076b3c9e menu-cache-1.1.0.tar.xz"
+sha512sums="e4c6619ade7b9a1b97c1366bb94dffb9975be5664b193cf0c69cf9470ef7ae19bda3390d04d98ee9a5b1658ec48aa5c83508c26c347af689161ee67c076b3c9e menu-cache-1.1.0.tar.xz
+ce4aa02e56bca4af6e32ef7ce689c26387309ef6e1d9560f37d344bca6ef5aba6c3c8c9c3ea38127ca71f8aaff0cfbfed47775c7b2cbb9703deae99b6fc78645 gcc10.patch"
diff --git a/user/menu-cache/gcc10.patch b/user/menu-cache/gcc10.patch
new file mode 100644
index 000000000..9949d09a9
--- /dev/null
+++ b/user/menu-cache/gcc10.patch
@@ -0,0 +1,103 @@
+From 4a82095ca4a334ceaf306c128248eb020f11bef1 Mon Sep 17 00:00:00 2001
+From: Mamoru TASAKA <mtasaka@fedoraproject.org>
+Date: Fri, 24 Jan 2020 13:33:00 +0900
+Subject: [PATCH] Support gcc10 compilation
+
+gcc10 now defaults to -fno-common.
+
+(original commit message cut by committer and supplemented below)
+
+Do not define variables in a header file. Declare globally used
+variables as "extern" instead.
+---
+ menu-cache-gen/menu-tags.h | 55 ++++++++++++--------------------------
+ 1 file changed, 17 insertions(+), 38 deletions(-)
+
+diff --git a/menu-cache-gen/menu-tags.h b/menu-cache-gen/menu-tags.h
+index f3fd7d3..f71c0bc 100644
+--- a/menu-cache-gen/menu-tags.h
++++ b/menu-cache-gen/menu-tags.h
+@@ -22,38 +22,17 @@
+ #include <libfm/fm-extra.h>
+ #include <menu-cache.h>
+
+-FmXmlFileTag menuTag_Menu;
+-FmXmlFileTag menuTag_AppDir;
+-FmXmlFileTag menuTag_DefaultAppDirs;
+-FmXmlFileTag menuTag_DirectoryDir;
+-FmXmlFileTag menuTag_DefaultDirectoryDirs;
+-FmXmlFileTag menuTag_Include;
+-FmXmlFileTag menuTag_Exclude;
+-FmXmlFileTag menuTag_Filename;
+-FmXmlFileTag menuTag_Or;
+-FmXmlFileTag menuTag_And;
+-FmXmlFileTag menuTag_Not;
+-FmXmlFileTag menuTag_Category;
+-FmXmlFileTag menuTag_MergeFile;
+-FmXmlFileTag menuTag_MergeDir;
+-FmXmlFileTag menuTag_DefaultMergeDirs;
+-FmXmlFileTag menuTag_Directory;
+-FmXmlFileTag menuTag_Name;
+-FmXmlFileTag menuTag_Deleted;
+-FmXmlFileTag menuTag_NotDeleted;
+-FmXmlFileTag menuTag_OnlyUnallocated;
+-FmXmlFileTag menuTag_NotOnlyUnallocated;
+-FmXmlFileTag menuTag_All;
+-FmXmlFileTag menuTag_LegacyDir;
+-FmXmlFileTag menuTag_KDELegacyDirs;
+-FmXmlFileTag menuTag_Move;
+-FmXmlFileTag menuTag_Old;
+-FmXmlFileTag menuTag_New;
+-FmXmlFileTag menuTag_Layout;
+-FmXmlFileTag menuTag_DefaultLayout;
+-FmXmlFileTag menuTag_Menuname;
+-FmXmlFileTag menuTag_Separator;
+-FmXmlFileTag menuTag_Merge;
++extern FmXmlFileTag menuTag_AppDir;
++extern FmXmlFileTag menuTag_DirectoryDir;
++extern FmXmlFileTag menuTag_Include;
++extern FmXmlFileTag menuTag_Exclude;
++extern FmXmlFileTag menuTag_Filename;
++extern FmXmlFileTag menuTag_Or;
++extern FmXmlFileTag menuTag_And;
++extern FmXmlFileTag menuTag_Not;
++extern FmXmlFileTag menuTag_Category;
++extern FmXmlFileTag menuTag_All;
++extern FmXmlFileTag menuTag_LegacyDir;
+
+ typedef enum {
+ MERGE_NONE, /* starting value */
+@@ -152,19 +131,19 @@ typedef struct {
+ } MenuRule;
+
+ /* requested language(s) */
+-char **languages;
++extern char **languages;
+
+ /* list of menu files to monitor */
+-GSList *MenuFiles;
++extern GSList *MenuFiles;
+
+ /* list of menu dirs to monitor */
+-GSList *MenuDirs;
++extern GSList *MenuDirs;
+
+ /* list of available app dirs */
+-GSList *AppDirs;
++extern GSList *AppDirs;
+
+ /* list of available dir dirs */
+-GSList *DirDirs;
++extern GSList *DirDirs;
+
+ /* parse and merge menu files */
+ MenuMenu *get_merged_menu(const char *file, FmXmlFile **xmlfile, GError **error);
+@@ -177,7 +156,7 @@ gboolean save_menu_cache(MenuMenu *layout, const char *menuname, const char *fil
+ void _free_layout_items(GList *data);
+
+ /* verbosity level */
+-gint verbose;
++extern gint verbose;
+
+ #define DBG if (verbose) g_debug
+ #define VDBG if (verbose > 1) g_debug
diff --git a/user/mesa-amber/APKBUILD b/user/mesa-amber/APKBUILD
new file mode 100644
index 000000000..94a85b521
--- /dev/null
+++ b/user/mesa-amber/APKBUILD
@@ -0,0 +1,78 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=mesa-amber
+pkgver=21.3.9
+pkgrel=0
+pkgdesc="Mesa DRI OpenGL library"
+url="https://www.mesa3d.org"
+arch="all"
+options="!check" # No test suite.
+license="MIT AND X11 AND SGI-B-2.0 AND BSL-1.0 AND LGPL-2.1+"
+depends=""
+makedepends="bison expat-dev flex libdrm-dev libglvnd-dev libx11-dev libxcb-dev
+ libxdamage-dev libxext-dev libxfixes-dev libxrandr-dev libxshmfence-dev
+ libxxf86vm-dev meson python3 py3-libxml2 py3-mako py3-pygments
+ py3-markupsafe wayland-dev wayland-protocols xorgproto-dev zlib-dev
+ zstd-dev"
+subpackages=""
+source="https://mesa.freedesktop.org/archive/mesa-$pkgver.tar.xz
+ big-endian-flipping.patch
+ mesa-amber-i915c.patch
+ no-tls.patch
+ nouveau-flush-fix.patch
+ "
+builddir="$srcdir"/mesa-$pkgver
+
+_dri_driverdir=/usr/lib/xorg/modules/dri
+_dri_drivers="r100,r200,nouveau"
+
+case "$CARCH" in
+x86* | pmmx)
+ _dri_drivers="${_dri_drivers},i915,i965"
+ _arch_conf="-Dsse2=false"
+ ;;
+armhf)
+ CFLAGS="$CFLAGS -mfpu=neon"
+ ;;
+ppc64)
+ _arch_conf="-Dpower8=disabled"
+ ;;
+esac
+
+build() {
+ meson \
+ -Dprefix=/usr \
+ -Damber=true \
+ -Ddri-drivers=$_dri_drivers \
+ -Ddri-drivers-path=$_dri_driverdir \
+ -Ddri3=enabled \
+ -Dgbm=disabled \
+ -Dglvnd=true \
+ -Dllvm=disabled \
+ -Dosmesa=false \
+ -Dplatforms=x11,wayland \
+ -Dgallium-drivers='' \
+ -Dvulkan-drivers='' \
+ $_arch_conf \
+ build
+
+ meson compile -C build
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C build
+ if [ -f "$pkgdir"/usr/lib/xorg/modules/dri/i915_dri.so ]; then
+ # Prevent file conflict with mesa-dri.
+ mv "$pkgdir"/usr/lib/xorg/modules/dri/i915_dri.so \
+ "$pkgdir"/usr/lib/xorg/modules/dri/i915c_dri.so
+ fi
+ rm -rf "$pkgdir"/usr/include
+ rm -rf "$pkgdir"/usr/lib/libglapi.so*
+ rm -rf "$pkgdir"/usr/lib/pkgconfig
+ rm -rf "$pkgdir"/usr/share/drirc.d
+}
+
+sha512sums="4cec6f4f50f444fcd327f7c40f8899c2f265e348e121455262b540b1f890a1468bbea59965af0876c548fa97aa0a05a1b23fa6ca7d308bd60328cfdeab757684 mesa-21.3.9.tar.xz
+3417e5c6d7ec564178e1d72431042b0a6ba659321f13a3dda81eda5fa0f2c8bc7c6972cb8266aea84ab05976ffb161659e9988c50ecc418e8bc1e1ce8f93a65f big-endian-flipping.patch
+163e80342f6df7706d7db4defc0c5814db92e03fcec675e6729a05ba1b3907e3233a9bd6f40629bde5dcf7afbf397e40f774c2298ad2f9b3948a6db63f801893 mesa-amber-i915c.patch
+076bb17d85235f3c833af8f1641f3556e406ad187b7ae1ebacced5f57b8832243a878678de4e50880c9a50b2aae3c42ad2342ed8c3e18d881edb7dd5018a710e no-tls.patch
+7283dc0e86e1ddaf4590008db57dd591921f47928945782afaa283f3b87770c731bab19d3d8879b4bf8b785f8886b9b46c576ca735296123f8afff29655abaeb nouveau-flush-fix.patch"
diff --git a/user/mesa-amber/big-endian-flipping.patch b/user/mesa-amber/big-endian-flipping.patch
new file mode 100644
index 000000000..154a83108
--- /dev/null
+++ b/user/mesa-amber/big-endian-flipping.patch
@@ -0,0 +1,37 @@
+From f1e0d76264491a8d8f99a0041b1a36cf9752fd28 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Thu, 27 Feb 2020 04:24:52 -0600
+Subject: [PATCH] mesa: Support flipping three-channel formats
+
+Test system: POWER9 ppc64 (BE) system with a Radeon R5 230.
+
+Before this commit, starting Xorg caused this message:
+Assertion failed: !"Invalid array format" (../src/mesa/main/formats.c: _mesa_array_format_flip_channels: 421)
+
+After this commit, Xorg starts successfully.
+---
+ src/mesa/main/formats.c | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/src/mesa/main/formats.c b/src/mesa/main/formats.c
+index 370859d37ca..2e7d5d7f05e 100644
+--- a/src/mesa/main/formats.c
++++ b/src/mesa/main/formats.c
+@@ -419,6 +419,14 @@ _mesa_array_format_flip_channels(mesa_array_format format)
+ return format;
+ }
+
++ if (num_channels == 3) {
++ static const uint8_t flip[6] = { 2, 1, 0, 3, 4, 5 };
++ _mesa_array_format_set_swizzle(&format,
++ flip[swizzle[0]], flip[swizzle[1]],
++ flip[swizzle[2]], flip[swizzle[3]]);
++ return format;
++ }
++
+ if (num_channels == 4) {
+ static const uint8_t flip[6] = { 3, 2, 1, 0, 4, 5 };
+ _mesa_array_format_set_swizzle(&format,
+--
+2.25.1
+
diff --git a/user/mesa-amber/mesa-amber-i915c.patch b/user/mesa-amber/mesa-amber-i915c.patch
new file mode 100644
index 000000000..826f8cb3c
--- /dev/null
+++ b/user/mesa-amber/mesa-amber-i915c.patch
@@ -0,0 +1,46 @@
+
+This patch is fixed the issue created when /usr/lib/dri/i915_dri.so is renamed to /usr/lib/dri/i915c_dri.so
+by mesa-amber/mesa-amber-21.3.9.ebuild
+
+Without this patch the driver cannot be loaded using the environment variable MESA_LOADER_DRIVER_OVERRIDE="i915c"
+as that mechanism expects to find the __driDriverGetExtensions_i915c:
+
+MESA-LOADER: dlopen(/usr/lib/dri/i915c_dri.so)
+MESA-LOADER: driver does not expose __driDriverGetExtensions_i915c(): /usr/lib/dri/i915c_dri.so: undefined symbol: __driDriverGetExtensions_i915c
+MESA-LOADER: dlopen(/usr/lib/dri/swrast_dri.so)
+
+This patch adds the __driDriverGetExtensions_i915c symbol by simply cloning the code for the original
+__driDriverGetExtensions_i915 symbol.
+
+Allan Mondor
+bugs.gentoo@acmondor.ca
+
+
+diff -w -ruN mesa-21.3.9.org/src/mesa/drivers/dri/i915/intel_screen.c mesa-21.3.9/src/mesa/drivers/dri/i915/intel_screen.c
+--- mesa-21.3.9.org/src/mesa/drivers/dri/i915/intel_screen.c 2022-06-08 12:13:35.000000000 -0600
++++ mesa-21.3.9/src/mesa/drivers/dri/i915/intel_screen.c 2022-08-23 11:32:19.151578025 -0600
+@@ -1290,6 +1290,13 @@
+ return i915_driver_extensions;
+ }
+
++PUBLIC const __DRIextension **__driDriverGetExtensions_i915c(void)
++{
++ globalDriverAPI = &i915_driver_api;
++
++ return i915_driver_extensions;
++}
++
+ PUBLIC const __DRIextension **__driDriverGetExtensions_i830(void)
+ {
+ globalDriverAPI = &i915_driver_api;
+diff -w -ruN mesa-21.3.9.org/src/mesa/drivers/dri/i915/intel_screen.h mesa-21.3.9/src/mesa/drivers/dri/i915/intel_screen.h
+--- mesa-21.3.9.org/src/mesa/drivers/dri/i915/intel_screen.h 2022-06-08 12:13:35.000000000 -0600
++++ mesa-21.3.9/src/mesa/drivers/dri/i915/intel_screen.h 2022-08-23 11:31:54.047576393 -0600
+@@ -160,6 +160,7 @@
+
+ const __DRIextension **__driDriverGetExtensions_i830(void);
+ const __DRIextension **__driDriverGetExtensions_i915(void);
++const __DRIextension **__driDriverGetExtensions_i915c(void);
+ extern const __DRI2fenceExtension intelFenceExtension;
+
+ extern GLboolean
diff --git a/user/mesa-amber/no-tls.patch b/user/mesa-amber/no-tls.patch
new file mode 100644
index 000000000..803fa3707
--- /dev/null
+++ b/user/mesa-amber/no-tls.patch
@@ -0,0 +1,25 @@
+--- mesa-21.3.8/meson.build.old 2022-03-18 14:26:47.000000000 -0500
++++ mesa-21.3.8/meson.build 2022-05-30 00:00:21.689085198 -0500
+@@ -508,22 +508,7 @@
+ error('-Degl-native-platform does not specify an enabled platform')
+ endif
+
+-# Android uses emutls for versions <= P/28. For USE_ELF_TLS we need ELF TLS.
+ use_elf_tls = false
+-if (not ['freebsd', 'openbsd', 'haiku'].contains(host_machine.system()) and
+- (not with_platform_android or get_option('platform-sdk-version') >= 29) and
+- (not with_platform_windows or not with_shared_glapi))
+- pre_args += '-DUSE_ELF_TLS'
+- use_elf_tls = true
+-
+- if with_platform_android
+- # By default the NDK compiler, at least, emits emutls references instead of
+- # ELF TLS, even when building targeting newer API levels. Make it actually do
+- # ELF TLS instead.
+- c_args += '-fno-emulated-tls'
+- cpp_args += '-fno-emulated-tls'
+- endif
+-endif
+
+ if with_glx != 'disabled'
+ if not (with_platform_x11 and with_any_opengl)
diff --git a/user/mesa-amber/nouveau-flush-fix.patch b/user/mesa-amber/nouveau-flush-fix.patch
new file mode 100644
index 000000000..97512d01a
--- /dev/null
+++ b/user/mesa-amber/nouveau-flush-fix.patch
@@ -0,0 +1,11 @@
+--- mesa-21.3.8/src/mesa/drivers/dri/nouveau/nouveau_driver.c.old 2022-03-18 19:26:47.000000000 +0000
++++ mesa-21.3.8/src/mesa/drivers/dri/nouveau/nouveau_driver.c 2023-10-23 06:05:10.177357372 +0000
+@@ -69,7 +69,7 @@
+ struct nouveau_context *nctx = to_nouveau_context(ctx);
+ struct nouveau_pushbuf *push = context_push(ctx);
+
+- PUSH_KICK(push);
++ if (push) PUSH_KICK(push);
+
+ if (ctx->DrawBuffer && _mesa_is_winsys_fbo(ctx->DrawBuffer) &&
+ ctx->DrawBuffer->_ColorDrawBufferIndexes[0] == BUFFER_FRONT_LEFT) {
diff --git a/user/mesa-be/APKBUILD b/user/mesa-be/APKBUILD
new file mode 100644
index 000000000..edb7383f8
--- /dev/null
+++ b/user/mesa-be/APKBUILD
@@ -0,0 +1,136 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=mesa
+pkgver=24.1.7
+_llvmver=18
+pkgrel=0
+pkgdesc="Mesa DRI OpenGL library"
+url="https://www.mesa3d.org"
+arch="ppc ppc64"
+options="!check" # No test suite.
+license="MIT AND X11 AND SGI-B-2.0 AND BSL-1.0 AND LGPL-2.1+"
+depends=""
+depends_dev="libdrm-dev libxcb-dev libxdamage-dev libxext-dev libxshmfence-dev
+ xorgproto-dev"
+makedepends="$depends_dev bison eudev-dev expat-dev flex libelf-dev libglvnd-dev
+ libva-dev libvdpau-dev libx11-dev libxfixes-dev libxrandr-dev libxt-dev
+ libxv-dev libxvmc-dev libxxf86vm-dev llvm$_llvmver-dev makedepend meson
+ ninja python3 py3-libxml2 py3-mako py3-pygments py3-markupsafe
+ py3-pyyaml rust wayland-dev wayland-protocols glslang-dev
+ zlib-dev zstd-dev bindgen-cli cbindgen clang-dev"
+replaces="mesa-egl mesa-gl mesa-glapi mesa-gles"
+subpackages="$pkgname-dev $pkgname-dri $pkgname-vulkan-overlay $pkgname-gbm
+ $pkgname-d3d $pkgname-xatracker $pkgname-osmesa"
+source="https://mesa.freedesktop.org/archive/mesa-$pkgver.tar.xz"
+
+_dri_driverdir=/usr/lib/xorg/modules/dri
+_gallium_drivers="kmsro,r300,r600,radeonsi,nouveau,swrast,virgl,zink"
+_vulkan_drivers="amd,nouveau,swrast,virtio"
+
+case "$CARCH" in
+ppc64)
+ _arch_conf="-Dpower8=disabled"
+ ;;
+esac
+
+build() {
+ # This is to fix #796, and is derived from:
+ # https://gitlab.freedesktop.org/mesa/mesa/-/commit/cc2b3a99ccf035a084d768e5c5ffa81478d685c1
+ cat > native.file <<EOF
+[binaries]
+llvm-config = '$(command -v llvm${_llvmver}-config)'
+rust = ['rustc', '--target=${CHOST}']
+EOF
+
+ meson \
+ --native-file=native.file \
+ -Dprefix=/usr \
+ -Ddri-drivers-path=$_dri_driverdir \
+ -Dgallium-drivers=$_gallium_drivers \
+ -Dgallium-nine=true \
+ -Dgallium-opencl=disabled \
+ -Dgallium-rusticl=false \
+ -Dgallium-va=enabled \
+ -Dgallium-vdpau=enabled \
+ -Dgallium-xa=enabled \
+ -Dglvnd=enabled \
+ -Dglx=dri \
+ -Dmicrosoft-clc=disabled \
+ -Dopencl-spirv=false \
+ -Dosmesa=true \
+ -Dplatforms=x11,wayland \
+ -Dvideo-codecs=all_free \
+ -Dvulkan-drivers=$_vulkan_drivers \
+ -Dvulkan-layers=device-select,overlay \
+ $_arch_conf \
+ build
+
+ ninja -C build
+}
+
+package() {
+ DESTDIR="$pkgdir" ninja -C build install
+}
+
+d3d() {
+ replaces="mesa"
+ pkgdesc="Mesa Direct3D adaptor libraries"
+ install -d "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/d3d \
+ "$subpkgdir"/usr/lib/
+}
+
+xatracker() {
+ pkgdesc="Mesa XA state tracker for VMware"
+ install -d "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libxatracker*.so.* \
+ "$subpkgdir"/usr/lib/
+}
+
+osmesa() {
+ pkgdesc="Mesa offscreen rendering libraries"
+ install -d "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libOSMesa.so.* \
+ "$subpkgdir"/usr/lib/
+}
+
+gbm() {
+ pkgdesc="Mesa GBM library"
+ replaces="mesa"
+ install -d "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libgbm.so.* \
+ "$subpkgdir"/usr/lib/
+}
+
+overlay() {
+ pkgdesc="Vulkan overlays to display information"
+ install -d "$subpkgdir"/usr/bin
+ install -d "$subpkgdir"/usr/lib
+ install -d "$subpkgdir"/usr/share
+ mv "$pkgdir"/usr/lib/libVkLayer_MESA_*.so \
+ "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/share/vulkan \
+ "$subpkgdir"/usr/share/vulkan
+ mv "$pkgdir"/usr/bin/mesa-overlay-control.py "$subpkgdir"/usr/bin
+}
+
+dri() {
+ pkgdesc="Mesa DRI drivers"
+ replaces="mesa-dri-ati mesa-dri-freedreno mesa-dri-intel
+ mesa-dri-nouveau mesa-dri-swrast mesa-dri-tegra mesa-dri-vc4
+ mesa-dri-virtio mesa-dri-vmwgfx"
+ depends="mesa=$pkgver-r$pkgrel"
+ provides="$replaces"
+ install -d "$subpkgdir"/usr/lib/xorg/modules
+ install -d "$subpkgdir"/usr/share/vulkan
+ mv "$pkgdir"/usr/lib/dri "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/lib/xorg/modules/dri "$subpkgdir"/usr/lib/xorg/modules/
+ mv "$pkgdir"/usr/share/drirc.d "$subpkgdir"/usr/share/
+ mv "$pkgdir"/usr/share/glvnd "$subpkgdir"/usr/share/
+ mv "$pkgdir"/usr/lib/libgallium*.so* "$subpkgdir"/usr/lib/ || true
+ # support non-Vulkan arches
+ mv "$pkgdir"/usr/lib/libvulkan*.so* "$subpkgdir"/usr/lib/ || true
+ mv "$pkgdir"/usr/lib/vdpau "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/share/vulkan/icd.d "$subpkgdir"/usr/share/vulkan/
+}
+
+sha512sums="890f6387963bbb86a85305ea963cca326a3b3f8f8758ae2082fd62c52df77c2883a359341e91f36614fea59219394ef78f799a334080699a0bb71d984a68cb01 mesa-24.1.7.tar.xz"
diff --git a/user/mesa-demos/APKBUILD b/user/mesa-demos/APKBUILD
index d1c172828..9b2b5e93d 100644
--- a/user/mesa-demos/APKBUILD
+++ b/user/mesa-demos/APKBUILD
@@ -3,17 +3,18 @@
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=mesa-demos
pkgver=8.4.0
-pkgrel=1
+pkgrel=3
pkgdesc="Mesa demos and utils"
-url="http://mesa3d.org"
+url="https://mesa3d.org"
arch="all"
+options="!check" # No test suite.
license="X11"
-options="!check" # No testsuite
-makedepends="mesa-dev glew-dev glu-dev freeglut-dev freetype-dev libtool"
-source="ftp://ftp.freedesktop.org/pub/mesa/demos/$pkgname-$pkgver.tar.bz2"
+depends=""
+makedepends="mesa-dev glew-dev glu-dev freeglut-dev freetype-dev libtool
+ libglvnd-dev"
+source="https://mesa.freedesktop.org/archive/demos/$pkgname-$pkgver.tar.bz2"
build() {
- cd "$builddir"
export LDFLAGS="$LDFLAGS -Wl,-z,lazy"
./configure \
--build=$CBUILD \
@@ -23,7 +24,6 @@ build() {
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
# conflicts with X11 bitmap tool
mv "$pkgdir"/usr/bin/bitmap "$pkgdir"/usr/bin/bitmap-demo
diff --git a/user/mesa/APKBUILD b/user/mesa/APKBUILD
index d9b27c865..2bc34d02d 100644
--- a/user/mesa/APKBUILD
+++ b/user/mesa/APKBUILD
@@ -1,149 +1,102 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=mesa
-pkgver=18.3.4
+pkgver=24.3.0
+_llvmver=18
pkgrel=0
pkgdesc="Mesa DRI OpenGL library"
url="https://www.mesa3d.org"
arch="all"
+options="!check" # No test suite.
license="MIT AND X11 AND SGI-B-2.0 AND BSL-1.0 AND LGPL-2.1+"
-depends=
-subpackages="$pkgname-dev
- $pkgname-dri-ati:_dri
- $pkgname-dri-nouveau:_dri
- $pkgname-dri-freedreno:_dri
- $pkgname-dri-swrast:_dri
- $pkgname-dri-virtio:_dri
- $pkgname-glapi $pkgname-egl $pkgname-gl $pkgname-gles
- $pkgname-xatracker $pkgname-osmesa $pkgname-gbm
- "
-_llvmver=7
+depends=""
depends_dev="libdrm-dev libxcb-dev libxdamage-dev libxext-dev libxshmfence-dev
xorgproto-dev"
-makedepends="$depends_dev byacc eudev-dev expat-dev flex libelf-dev
- libvdpau-dev libx11-dev libxfixes-dev libxrandr-dev libxt-dev
- libxvmc-dev libxxf86vm-dev llvm$_llvmver-dev makedepend python3
- py3-libxml2 py3-mako zlib-dev"
-source="https://mesa.freedesktop.org/archive/mesa-$pkgver.tar.xz
- musl-fixes.patch
- musl-fix-includes.patch
- amdgpu-pthread-header.patch
- disk_cache-stack-overflow.patch
- drmdeps.patch
- fix-non-altivec-ppc32.patch
- "
+makedepends="$depends_dev bison eudev-dev expat-dev flex libelf-dev libglvnd-dev
+ libva-dev libvdpau-dev libx11-dev libxfixes-dev libxrandr-dev libxt-dev
+ libxv-dev libxvmc-dev libxxf86vm-dev llvm$_llvmver-dev makedepend meson
+ ninja python3 py3-libxml2 py3-mako py3-pygments py3-markupsafe
+ py3-cparser py3-pyyaml rust wayland-dev wayland-protocols glslang-dev
+ zlib-dev zstd-dev bindgen-cli cbindgen clang-dev libarchive-dev"
+replaces="mesa-egl mesa-gl mesa-glapi mesa-gles"
+subpackages="$pkgname-dev $pkgname-dri $pkgname-vulkan-overlay $pkgname-gbm
+ $pkgname-d3d $pkgname-xatracker $pkgname-osmesa"
+source="https://mesa.freedesktop.org/archive/mesa-$pkgver.tar.xz"
_dri_driverdir=/usr/lib/xorg/modules/dri
-_dri_drivers="r200,radeon,nouveau,swrast"
-_gallium_drivers="r300,r600,radeonsi,nouveau,freedreno,swrast,virgl"
-_vulkan_drivers="radeon"
-
-builddir="$srcdir/mesa-$pkgver"
-
-_arch_opts=
+_gallium_drivers="r300,r600,radeonsi,nouveau,softpipe,llvmpipe,virgl,zink,svga"
+_vulkan_drivers="amd,nouveau,swrast,virtio"
case "$CARCH" in
+x86_64)
+ _gallium_drivers="${_gallium_drivers},i915,svga,crocus"
+ _vulkan_drivers="${_vulkan_drivers},microsoft-experimental"
+ _arch_conf="-Dintel-rt=enabled"
+ ;;
x86* | pmmx)
- _dri_drivers="${_dri_drivers},i915,i965"
- _gallium_drivers="${_gallium_drivers},svga"
- _vulkan_drivers="${_vulkan_drivers},intel"
- subpackages="$subpackages $pkgname-dri-intel:_dri $pkgname-dri-vmwgfx:_dri"
+ _gallium_drivers="${_gallium_drivers},i915,svga,crocus"
+ _arch_conf="-Dsse2=false"
;;
aarch64 | arm*)
- _gallium_drivers="${_gallium_drivers},vc4"
- subpackages="$subpackages $pkgname-dri-vc4:_dri"
+ _gallium_drivers="${_gallium_drivers},vc4,freedreno,tegra,v3d,lima,panfrost,etnaviv"
+ _vulkan_drivers="${_vulkan_drivers},freedreno,panfrost,broadcom"
case "$CARCH" in
armhf) CFLAGS="$CFLAGS -mfpu=neon";;
esac
;;
+ppc64)
+ _arch_conf="-Dpower8=disabled"
+ ;;
esac
-prepare() {
- default_prepare
- libtoolize --force \
- && aclocal \
- && automake --add-missing \
- && autoreconf
-}
-
build() {
- export CFLAGS="$CFLAGS -D_XOPEN_SOURCE=700"
- PYTHON=python3 ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --with-dri-driverdir=$_dri_driverdir \
- --disable-asm \
- --with-gallium-drivers=${_gallium_drivers} \
- --with-dri-drivers=${_dri_drivers} \
- --with-vulkan-drivers=${_vulkan_drivers} \
- --with-llvm-prefix=/usr/lib/llvm$_llvmver \
- --enable-llvm-shared-libs \
- --enable-llvm \
- --with-platforms=x11,drm \
- --enable-shared-glapi \
- --enable-gbm \
- --disable-glx-tls \
- --disable-nine \
- --enable-dri \
- --enable-dri3 \
- --enable-glx \
- --enable-osmesa \
- --enable-gles1 \
- --enable-gles2 \
- --enable-egl \
- --enable-xa \
- --enable-vdpau \
- $_arch_opts
-
- make
-}
-
-check() {
- # Compiler test requires LLVM 3.8 and Python 2
- for i in gtest util mapi; do
- make -C "src/$i" check
- done
+ # This is to fix #796, and is derived from:
+ # https://gitlab.freedesktop.org/mesa/mesa/-/commit/cc2b3a99ccf035a084d768e5c5ffa81478d685c1
+ cat > native.file <<EOF
+[binaries]
+llvm-config = '$(command -v llvm${_llvmver}-config)'
+rust = ['rustc', '--target=${CHOST}']
+EOF
+
+ meson \
+ --native-file=native.file \
+ -Dprefix=/usr \
+ -Ddri-drivers-path=$_dri_driverdir \
+ -Dgallium-drivers=$_gallium_drivers \
+ -Dgallium-nine=true \
+ -Dgallium-opencl=disabled \
+ -Dgallium-rusticl=false \
+ -Dgallium-va=enabled \
+ -Dgallium-vdpau=enabled \
+ -Dgallium-xa=enabled \
+ -Dglvnd=enabled \
+ -Dglx=dri \
+ -Dmicrosoft-clc=disabled \
+ -Dopencl-spirv=false \
+ -Dosmesa=true \
+ -Dplatforms=x11,wayland \
+ -Dvideo-codecs=all_free \
+ -Dvulkan-drivers=$_vulkan_drivers \
+ -Dvulkan-layers=device-select,overlay \
+ $_arch_conf \
+ build
+
+ ninja -C build
}
package() {
- make -j1 DESTDIR="$pkgdir" install
-}
-
-egl() {
- replaces="mesa"
- pkgdesc="Mesa libEGL runtime libraries"
- install -d "$subpkgdir"/usr/lib
- mv "$pkgdir"/usr/lib/libEGL.so* \
- "$subpkgdir"/usr/lib/
-}
-
-gl() {
- replaces="mesa"
- pkgdesc="Mesa libGL runtime libraries"
- install -d "$subpkgdir"/usr/lib
- mv "$pkgdir"/usr/lib/libGL.so* \
- "$subpkgdir"/usr/lib/
-}
-
-glapi() {
- replaces="$pkgname-gles"
- pkgdesc="Mesa shared glapi"
- install -d "$subpkgdir"/usr/lib
- mv "$pkgdir"/usr/lib/libglapi.so.* \
- "$subpkgdir"/usr/lib/
+ DESTDIR="$pkgdir" ninja -C build install
}
-gles() {
+d3d() {
replaces="mesa"
- pkgdesc="Mesa libGLESv2 runtime libraries"
+ pkgdesc="Mesa Direct3D adaptor libraries"
install -d "$subpkgdir"/usr/lib
- mv "$pkgdir"/usr/lib/libGLES*.so* \
+ mv "$pkgdir"/usr/lib/d3d \
"$subpkgdir"/usr/lib/
}
xatracker() {
- pkgdesc="Mesa XA state tracker for vmware"
+ pkgdesc="Mesa XA state tracker for VMware"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libxatracker*.so.* \
"$subpkgdir"/usr/lib/
@@ -157,83 +110,43 @@ osmesa() {
}
gbm() {
- pkgdesc="Mesa gbm library"
+ pkgdesc="Mesa GBM library"
replaces="mesa"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/libgbm.so.* \
"$subpkgdir"/usr/lib/
}
-_mv_dri() {
- install -d "$subpkgdir"/$_dri_driverdir
-
- while [ $# -gt 0 ]; do
- mv "$pkgdir"/$_dri_driverdir/${1}.so \
- "$subpkgdir"/$_dri_driverdir/ || return 1
- shift
- done
-}
-
-_mv_vdpau() {
- local i
- install -d "$subpkgdir"/usr/lib/vdpau
- for i in "$@"; do
- mv "$pkgdir"/usr/lib/vdpau/libvdpau_$i.* \
- "$subpkgdir"/usr/lib/vdpau/ || return 1
- done
-}
-
-_mv_gpipe() {
- return 0
- # http://cgit.freedesktop.org/mesa/mesa/commit/?id=44ec468e8033553c26a112cebba41c343db00eb1
- # https://code.google.com/p/chromium/issues/detail?id=412089
-# local i
-# install -d "$subpkgdir"/usr/lib/gallium-pipe
-# for i in "$@"; do
-# mv "$pkgdir"/usr/lib/gallium-pipe/pipe_$i.* \
-# "$subpkgdir"/usr/lib/gallium-pipe/ || return 1
-# done
+overlay() {
+ pkgdesc="Vulkan overlays to display information"
+ install -d "$subpkgdir"/usr/bin
+ install -d "$subpkgdir"/usr/lib
+ install -d "$subpkgdir"/usr/share
+ mv "$pkgdir"/usr/lib/libVkLayer_MESA_*.so \
+ "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/share/vulkan \
+ "$subpkgdir"/usr/share/vulkan
+ mv "$pkgdir"/usr/bin/mesa-overlay-control.py "$subpkgdir"/usr/bin
}
-_dri() {
- local n=${subpkgname##*-dri-}
- pkgdesc="Mesa DRI driver for $n"
- case $n in
- ati)
- _mv_dri radeon_dri r200_dri r300_dri r600_dri radeonsi_dri \
- && _mv_vdpau r300 r600 radeonsi \
- && _mv_gpipe r300 r600
- ;;
- intel)
- _mv_dri i915_dri i965_dri
- ;;
- nouveau)
- _mv_dri nouveau_dri nouveau_vieux_dri \
- && _mv_vdpau nouveau \
- && _mv_gpipe nouveau
- ;;
- freedreno)
- _mv_dri msm_dri kgsl_dri
- ;;
- swrast)
- _mv_dri swrast_dri kms_swrast_dri && _mv_gpipe swrast
- ;;
- vc4)
- _mv_dri vc4_dri
- ;;
- vmwgfx)
- _mv_dri vmwgfx_dri && _mv_gpipe vmwgfx
- ;;
- virtio)
- _mv_dri virtio_gpu_dri
- ;;
- esac
+dri() {
+ pkgdesc="Mesa DRI drivers"
+ replaces="mesa-dri-ati mesa-dri-freedreno mesa-dri-intel
+ mesa-dri-nouveau mesa-dri-swrast mesa-dri-tegra mesa-dri-vc4
+ mesa-dri-virtio mesa-dri-vmwgfx"
+ depends="mesa=$pkgver-r$pkgrel"
+ provides="$replaces"
+ install -d "$subpkgdir"/usr/lib/xorg/modules
+ install -d "$subpkgdir"/usr/share/vulkan
+ mv "$pkgdir"/usr/lib/dri "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/lib/xorg/modules/dri "$subpkgdir"/usr/lib/xorg/modules/
+ mv "$pkgdir"/usr/share/drirc.d "$subpkgdir"/usr/share/
+ mv "$pkgdir"/usr/share/glvnd "$subpkgdir"/usr/share/
+ mv "$pkgdir"/usr/lib/libgallium*.so* "$subpkgdir"/usr/lib/ || true
+ # support non-Vulkan arches
+ mv "$pkgdir"/usr/lib/libvulkan*.so* "$subpkgdir"/usr/lib/ || true
+ mv "$pkgdir"/usr/lib/vdpau "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/share/vulkan/icd.d "$subpkgdir"/usr/share/vulkan/
}
-sha512sums="e4ead944ba053aa05425e9e199d633f576dfa424976253fc32438e8db6da5e8d381122e4c4b7fb18f94177421f208bab5567cfec8d2692d104e266483ca02a99 mesa-18.3.4.tar.xz
-9f7a050f09571a2b17098d495b82e2e85b293fb7285e7d6d7c3c48cd4220a1bdcc61a7321ba78dd14860939ecabe7e89b32d6110f3728f793273e1e26b78a553 musl-fixes.patch
-c7d91a660a033df91fac9c557039efc8669f0c26b2d35997d50753938b70d1af0bd110dcab3f8236eafab7d4be5dd7cd128a3e057e67e7e6a38a73fd6a7ef62e musl-fix-includes.patch
-245d0d64d858dfadeeb544f31f7d0bb6ecb746a7fd5ec99755d679ae1a1eef4198d66473fb24d333eb6786bb8657012771e8285d67f165dc61a031df801947aa amdgpu-pthread-header.patch
-f40ff04ac73c090c74d1955de6013c5aa41fb77f28b2b82d89cfc1880306a9ca1dde4581592db19f0a0ec6d85032f1ed5d953103ab0d075f9f0b7e459a028c45 disk_cache-stack-overflow.patch
-6800bc62aebfba22a2562c858c27391b47c5675020bd67f040da93ffe4d5d8ac828907a44c7cee6a4ebe63821b58c2515b4012f1f23473670b1de8670426a430 drmdeps.patch
-71a397cf9937e623d21abacb2726602f1b5165b18543e11fdfdaac748c221aeafbbda790492a2180b590dace9a17c931c1eac199de32e90c3fa3305706a4011f fix-non-altivec-ppc32.patch"
+sha512sums="20168ae4c278776a60d5febf53b3367cf08bffffb40ef2054821e68d7a8c37a07871d097ab17555f41a4fe716f0de7df95ad7d452b1ed57db6527838eb839ba4 mesa-24.3.0.tar.xz"
diff --git a/user/mesa/amdgpu-pthread-header.patch b/user/mesa/amdgpu-pthread-header.patch
deleted file mode 100644
index 576d57ffc..000000000
--- a/user/mesa/amdgpu-pthread-header.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- mesa-18.1.3/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h.old 2018-06-29 17:47:29.000000000 +0000
-+++ mesa-18.1.3/src/amd/vulkan/winsys/amdgpu/radv_amdgpu_winsys.h 2018-07-09 02:13:04.590000000 +0000
-@@ -28,6 +28,7 @@
- #ifndef RADV_AMDGPU_WINSYS_H
- #define RADV_AMDGPU_WINSYS_H
-
-+#include <pthread.h>
- #include "radv_radeon_winsys.h"
- #include "ac_gpu_info.h"
- #include "addrlib/addrinterface.h"
diff --git a/user/mesa/disk_cache-stack-overflow.patch b/user/mesa/disk_cache-stack-overflow.patch
deleted file mode 100644
index 3fad95259..000000000
--- a/user/mesa/disk_cache-stack-overflow.patch
+++ /dev/null
@@ -1,42 +0,0 @@
-The disk cache code tries to allocate a 256 Kbyte buffer on the stack.
-Since musl only gives 80 Kbyte of stack space per thread, this causes a trap.
-
---- mesa-17.3.1/src/util/disk_cache.c.old 2017-12-21 11:31:22.000000000 -0600
-+++ mesa-17.3.1/src/util/disk_cache.c 2017-12-29 01:17:15.625633901 -0600
-@@ -716,7 +716,7 @@
- deflate_and_write_to_disk(const void *in_data, size_t in_data_size, int dest,
- const char *filename)
- {
-- unsigned char out[BUFSIZE];
-+ unsigned char *out;
-
- /* allocate deflate state */
- z_stream strm;
-@@ -733,6 +733,11 @@
- /* compress until end of in_data */
- size_t compressed_size = 0;
- int flush;
-+
-+ out = calloc(1, BUFSIZE);
-+ if (out == NULL)
-+ return 0;
-+
- do {
- int remaining = in_data_size - BUFSIZE;
- flush = remaining > 0 ? Z_NO_FLUSH : Z_FINISH;
-@@ -754,6 +759,7 @@
- ssize_t written = write_all(dest, out, have);
- if (written == -1) {
- (void)deflateEnd(&strm);
-+ free(out);
- return 0;
- }
- } while (strm.avail_out == 0);
-@@ -768,6 +774,7 @@
-
- /* clean up and return */
- (void)deflateEnd(&strm);
-+ free(out);
- return compressed_size;
- }
-
diff --git a/user/mesa/drmdeps.patch b/user/mesa/drmdeps.patch
deleted file mode 100644
index edcb80643..000000000
--- a/user/mesa/drmdeps.patch
+++ /dev/null
@@ -1,41 +0,0 @@
---- a/src/gallium/winsys/radeon/drm/Makefile.am 2017-08-10 11:45:20.737377457 -0400
-+++ b/src/gallium/winsys/radeon/drm/Makefile.am 2017-08-10 11:50:23.414534307 -0400
-@@ -7,4 +7,6 @@
-
- noinst_LTLIBRARIES = libradeonwinsys.la
-
-+libradeonwinsys_la_LIBADD = -ldrm_radeon
-+
- libradeonwinsys_la_SOURCES = $(C_SOURCES)
---- a/src/gallium/winsys/radeon/drm/Makefile.in 2017-08-10 11:45:25.577298181 -0400
-+++ b/src/gallium/winsys/radeon/drm/Makefile.in 2017-08-10 11:57:11.151189074 -0400
-@@ -119,7 +119,7 @@
- CONFIG_CLEAN_FILES =
- CONFIG_CLEAN_VPATH_FILES =
- LTLIBRARIES = $(noinst_LTLIBRARIES)
--libradeonwinsys_la_LIBADD =
-+libradeonwinsys_la_LIBADD = -ldrm_radeon
- am__objects_1 = radeon_drm_bo.lo radeon_drm_cs.lo \
- radeon_drm_surface.lo radeon_drm_winsys.lo
- am_libradeonwinsys_la_OBJECTS = $(am__objects_1)
---- a/src/gallium/winsys/amdgpu/drm/Makefile.am 2017-12-21 11:31:21.000000000 -0600
-+++ b/src/gallium/winsys/amdgpu/drm/Makefile.am 2017-12-28 19:24:48.613693400 -0600
-@@ -11,6 +11,6 @@
- noinst_LTLIBRARIES = libamdgpuwinsys.la
-
- libamdgpuwinsys_la_LIBADD = \
-- $(top_builddir)/src/amd/addrlib/libamdgpu_addrlib.la
-+ $(top_builddir)/src/amd/addrlib/libamdgpu_addrlib.la -ldrm_amdgpu
-
- libamdgpuwinsys_la_SOURCES = $(C_SOURCES)
---- a/src/gallium/winsys/amdgpu/drm/Makefile.in 2017-12-21 11:31:30.000000000 -0600
-+++ b/src/gallium/winsys/amdgpu/drm/Makefile.in 2017-12-28 19:25:22.553597353 -0600
-@@ -572,7 +572,7 @@
- AM_CXXFLAGS = $(AM_CFLAGS)
- noinst_LTLIBRARIES = libamdgpuwinsys.la
- libamdgpuwinsys_la_LIBADD = \
-- $(top_builddir)/src/amd/addrlib/libamdgpu_addrlib.la
-+ $(top_builddir)/src/amd/addrlib/libamdgpu_addrlib.la -ldrm_amdgpu
-
- libamdgpuwinsys_la_SOURCES = $(C_SOURCES)
- all: all-am
diff --git a/user/mesa/fix-non-altivec-ppc32.patch b/user/mesa/fix-non-altivec-ppc32.patch
deleted file mode 100644
index 846cf5031..000000000
--- a/user/mesa/fix-non-altivec-ppc32.patch
+++ /dev/null
@@ -1,66 +0,0 @@
---- mesa-18.3.2/src/util/u_cpu_detect.c.old 2019-01-17 11:26:23.000000000 +0000
-+++ mesa-18.3.2/src/util/u_cpu_detect.c 2019-02-22 19:23:26.620000000 +0000
-@@ -41,6 +41,9 @@
- #if defined(PIPE_ARCH_PPC)
- #if defined(PIPE_OS_APPLE)
- #include <sys/sysctl.h>
-+#elif defined(PIPE_OS_LINUX)
-+#include <asm/cputable.h>
-+#include <linux/auxvec.h>
- #else
- #include <signal.h>
- #include <setjmp.h>
-@@ -92,7 +95,7 @@
- #endif
-
-
--#if defined(PIPE_ARCH_PPC) && !defined(PIPE_OS_APPLE)
-+#if defined(PIPE_ARCH_PPC) && !defined(PIPE_OS_APPLE) && !defined(PIPE_OS_LINUX)
- static jmp_buf __lv_powerpc_jmpbuf;
- static volatile sig_atomic_t __lv_powerpc_canjump = 0;
-
-@@ -126,7 +129,43 @@
- util_cpu_caps.has_altivec = 1;
- }
- }
--#else /* !PIPE_OS_APPLE */
-+#elif defined(PIPE_OS_LINUX)
-+ /* Taken from FFmpeg 4.1.1 (LGPL-2.1+) */
-+ // The linux kernel could have the altivec support disabled
-+ // even if the cpu has it.
-+ int i, ret = 0;
-+ int fd = open("/proc/self/auxv", O_RDONLY);
-+ unsigned long buf[64] = { 0 };
-+ ssize_t count;
-+ boolean enable_vsx = TRUE;
-+ /* VSX instructions can be explicitly enabled/disabled via GALLIVM_VSX=1 or 0 */
-+ char *env_vsx = getenv("GALLIVM_VSX");
-+ if (env_vsx && env_vsx[0] == '0') {
-+ enable_vsx = FALSE;
-+ }
-+
-+ if (fd < 0)
-+ return 0;
-+
-+ while ((count = read(fd, buf, sizeof(buf))) > 0) {
-+ for (i = 0; i < count / sizeof(*buf); i += 2) {
-+ if (buf[i] == AT_NULL)
-+ goto out;
-+ if (buf[i] == AT_HWCAP) {
-+ if (buf[i + 1] & PPC_FEATURE_HAS_ALTIVEC)
-+ util_cpu_caps.has_altivec = 1;
-+#ifdef PPC_FEATURE_HAS_VSX
-+ if (enable_vsx && buf[i + 1] & PPC_FEATURE_HAS_VSX)
-+ util_cpu_caps.has_vsx = 1;
-+#endif
-+ goto out;
-+ }
-+ }
-+ }
-+
-+out:
-+ close(fd);
-+#else /* !PIPE_OS_APPLE, !PIPE_OS_LINUX */
- /* not on Apple/Darwin, do it the brute-force way */
- /* this is borrowed from the libmpeg2 library */
- signal(SIGILL, sigill_handler);
diff --git a/user/mesa/musl-fix-includes.patch b/user/mesa/musl-fix-includes.patch
deleted file mode 100644
index 2f6cc1d13..000000000
--- a/user/mesa/musl-fix-includes.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/src/util/rand_xor.c b/src/util/rand_xor.c
-index de05fa6..016703c 100644
---- a/src/util/rand_xor.c
-+++ b/src/util/rand_xor.c
-@@ -24,6 +24,9 @@
-
- #if defined(__linux__)
- #include <sys/file.h>
-+#include <sys/types.h>
-+#include <sys/stat.h>
-+#include <fcntl.h>
- #include <unistd.h>
- #else
- #include <time.h>
diff --git a/user/mesa/musl-fixes.patch b/user/mesa/musl-fixes.patch
deleted file mode 100644
index dd3e6bb64..000000000
--- a/user/mesa/musl-fixes.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./src/gallium/winsys/svga/drm/vmw_screen.h.orig
-+++ ./src/gallium/winsys/svga/drm/vmw_screen.h
-@@ -34,7 +34,7 @@
- #ifndef VMW_SCREEN_H_
- #define VMW_SCREEN_H_
-
--
-+#include <sys/stat.h>
- #include "pipe/p_compiler.h"
- #include "pipe/p_state.h"
-
diff --git a/user/meson/APKBUILD b/user/meson/APKBUILD
index 709062f23..e1cf9aeac 100644
--- a/user/meson/APKBUILD
+++ b/user/meson/APKBUILD
@@ -1,10 +1,10 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
-# Maintainer:
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=meson
-pkgver=0.50.0
+pkgver=1.4.0
pkgrel=0
pkgdesc="Fast, user-friendly build system"
-url="http://mesonbuild.com/"
+url="https://mesonbuild.com/"
arch="noarch"
license="Apache-2.0"
depends="python3 ninja"
@@ -13,18 +13,15 @@ subpackages="$pkgname-doc"
source="https://github.com/mesonbuild/$pkgname/releases/download/$pkgver/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py check
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="93ed7dbb1e3f7687834560686b9bf1c34d1098b1a542d3a6f6f91e36316202705e3a45fa4280237e3896a02177b42a6362e1afe4fbe29adf0b857c5c368f6f5f meson-0.50.0.tar.gz"
+sha512sums="2787941fbc77d5ad95011753df52fe39812929a06d84dbce8bdc965c9c1e62fd6bfa819712eb1f5934c2ebe6919a65f7874ecac2caf40d111ea024343108cfbd meson-1.4.0.tar.gz"
diff --git a/user/metalog/APKBUILD b/user/metalog/APKBUILD
new file mode 100644
index 000000000..3998a3a2d
--- /dev/null
+++ b/user/metalog/APKBUILD
@@ -0,0 +1,48 @@
+# Contributor:
+# Maintainer:
+pkgname=metalog
+pkgver=20200113
+pkgrel=0
+pkgdesc="A highly configurable replacement for syslogd/klogd"
+url="https://github.com/hvisage/metalog"
+arch="all"
+license="GPL-2.0-only"
+depends="pcre"
+makedepends="autoconf autoconf-archive-dev automake pcre-dev"
+subpackages="$pkgname-doc $pkgname-openrc"
+source="https://github.com/hvisage/$pkgname/archive/$pkgname-$pkgver.tar.gz
+ metalog-0.9-metalog-conf.patch
+
+ metalog.confd
+ metalog.initd-r1
+ "
+builddir="$srcdir/$pkgname-$pkgname-$pkgver/"
+
+build() {
+ autoreconf -fi
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ install -D -m755 "$srcdir"/metalog.initd-r1 \
+ "$pkgdir"/etc/init.d/metalog
+ install -D -m644 "$srcdir"/metalog.confd \
+ "$pkgdir"/etc/conf.d/metalog
+}
+
+sha512sums="d399d86f988c69c9f74553cd682a5fe04886bca458e6f8bb3132fe1fb9f522510a428cfde8af0857c5ba22531b276b04fa05183e0006c2d28ef0f0aead488f93 metalog-20200113.tar.gz
+0c95e8461e89d9469452d2ef66fa52f469b61578b12a6c72adb73e48807f998f8fb58cf0b3f1bc5caa38296fd59c8f8d1fc209beec81790387816d1c497a07df metalog-0.9-metalog-conf.patch
+4fea6b7f48e55d5f69a9c9a69f54623bb9d515e2fd2eda6829f8b769eec85e3de448eb42feb6bf65645400480169b3d70d56dff090103cfc95a3810515c42b2e metalog.confd
+09d8ac585418c6a3dfccc9d0f1a050b5862924712d78dc44fce3cb497bb362afe0a556240b14cf957fcdf64d0d06f5b6a8df4372c69129b43dc3520ecd310344 metalog.initd-r1"
diff --git a/user/metalog/metalog-0.9-metalog-conf.patch b/user/metalog/metalog-0.9-metalog-conf.patch
new file mode 100644
index 000000000..efb794de5
--- /dev/null
+++ b/user/metalog/metalog-0.9-metalog-conf.patch
@@ -0,0 +1,11 @@
+--- a/metalog.conf
++++ b/metalog.conf
+@@ -21,6 +21,8 @@
+ # merely write $@ to some device (your console for messages):
+ # echo "$@" > /dev/tty10
+ #
++# Hint: you can control the consolelog.sh behavior in /etc/conf.d/metalog
++#
+ #console logging :
+ #
+ # facility = "*"
diff --git a/user/metalog/metalog.confd b/user/metalog/metalog.confd
new file mode 100644
index 000000000..ec7e64eda
--- /dev/null
+++ b/user/metalog/metalog.confd
@@ -0,0 +1,18 @@
+# /etc/conf.d/metalog
+
+# Some useful options:
+# -a Log with buffering
+# -s Log without buffering
+# See `metalog --help` for more
+
+METALOG_OPTS=""
+
+
+# Options used by /usr/sbin/consolelog.sh
+
+# Space delimited list of devices to write "console" messages to
+#CONSOLE="/dev/console /dev/tty10"
+CONSOLE="/dev/tty10"
+
+# Format of logging (make sure you use single quotes)
+FORMAT='$1 [$2] $3'
diff --git a/user/metalog/metalog.initd-r1 b/user/metalog/metalog.initd-r1
new file mode 100644
index 000000000..bb947bdad
--- /dev/null
+++ b/user/metalog/metalog.initd-r1
@@ -0,0 +1,28 @@
+#!/sbin/openrc-run
+# Copyright 1999-2018 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+pidfile="${PIDFILE:-/run/metalog.pid}"
+command="/usr/sbin/metalog"
+command_args="--pidfile=${pidfile} --daemonize ${METALOG_OPTS}"
+
+extra_started_commands="buffer unbuffer"
+
+depend() {
+ need localmount
+ use clock hostname
+ after bootmisc
+ provide logger
+}
+
+buffer() {
+ ebegin "Enabling log buffering"
+ start-stop-daemon --exec "${command}" --signal USR2 --pidfile "${pidfile}"
+ eend ${?}
+}
+
+unbuffer() {
+ ebegin "Disabling log buffering"
+ start-stop-daemon --exec "${command}" --signal USR1 --pidfile "${pidfile}"
+ eend ${?}
+}
diff --git a/user/milou/APKBUILD b/user/milou/APKBUILD
index fe9b06d4a..84f265ec4 100644
--- a/user/milou/APKBUILD
+++ b/user/milou/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=milou
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="Search and launch plasmoid"
url="https://www.kde.org/"
@@ -9,12 +9,11 @@ arch="all"
license="GPL-2.0+ AND (GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1-only OR LGPL-3.0-only)"
depends=""
makedepends="cmake extra-cmake-modules python3 kcoreaddons-dev kdeclarative-dev
- ki18n-dev krunner-dev kservice-dev plasma-framework-dev"
+ ki18n-dev kitemmodels-dev krunner-dev kservice-dev plasma-framework-dev"
subpackages="$pkgname-lang"
source="https://download.kde.org/stable/plasma/$pkgver/milou-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,18 +24,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e46395992fd53ec9f230790d4e0eccfb91f925729088f0c8d602524828ce4ff2a55bbcab843daa66c57eff20393c291f9e0f860a4b4b11fc834374b386fcfdbd milou-5.12.7.tar.xz"
+sha512sums="b6a2979b6ab4717d53e0f58605ba43a08f78836a287c0988aeb9461f6d4cb42f71d1081ec1261dcb957ee97b67f8eba42f3c6861e96d6a2e796142edac74ea7c milou-5.24.5.tar.xz"
diff --git a/user/mimetic/APKBUILD b/user/mimetic/APKBUILD
index c69f27270..40ce81de3 100644
--- a/user/mimetic/APKBUILD
+++ b/user/mimetic/APKBUILD
@@ -1,28 +1,27 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mimetic
pkgver=0.9.8
-pkgrel=0
+pkgrel=1
pkgdesc="C++ library for processing MIME"
-url="http://www.codesink.org/mimetic_mime_library.html"
+url="https://www.codesink.org/mimetic_mime_library.html"
arch="all"
license="MIT"
depends=""
makedepends="doxygen"
subpackages="$pkgname-dev"
-source="http://www.codesink.org/download/mimetic-$pkgver.tar.gz
+source="https://www.codesink.org/download/mimetic-$pkgver.tar.gz
fix-compile.patch
signedness.patch
+ nullptr.patch
"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -34,15 +33,14 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
sha512sums="4157eecb3e26af314d475c91192a357d6da35271a07a07b037d5037e9af84952ce2636874e86df0e94e8887dcfdb8f594a1ba04e6448181e436b0e2675f48f58 mimetic-0.9.8.tar.gz
26badbaea0e9392080ece1cfda41d16a4fa87850e92edb4120e0a080fcebeeebaf28adb0fc73ba56ecacfc670bc315b2255c9c101471beb09068b1b4c4c8c473 fix-compile.patch
-d92c719134064e545e7b63f56bfc6b2898c82766a4540230ac5273b1380ef4546d220d95faa99d7b9c01508650a361b7473ad74c9a79262cb423277ca83a36b2 signedness.patch"
+d92c719134064e545e7b63f56bfc6b2898c82766a4540230ac5273b1380ef4546d220d95faa99d7b9c01508650a361b7473ad74c9a79262cb423277ca83a36b2 signedness.patch
+716d5b15e4e7734fc63b3bbdb0651fa45f2a89d745084788b4db7cf46a17ba30dc5d1290f8c514089dce12376e51110b8b0850bb3a87e06d024c93145fd2d5fc nullptr.patch"
diff --git a/user/mimetic/nullptr.patch b/user/mimetic/nullptr.patch
new file mode 100644
index 000000000..340ae37d6
--- /dev/null
+++ b/user/mimetic/nullptr.patch
@@ -0,0 +1,11 @@
+--- mimetic-0.9.8/mimetic/os/mmfile.cxx.old 2014-06-17 03:12:00.000000000 -0500
++++ mimetic-0.9.8/mimetic/os/mmfile.cxx 2024-05-30 03:23:16.247921514 -0500
+@@ -57,7 +57,7 @@
+ bool MMFile::map()
+ {
+ m_beg = (char*) mmap(0, m_st.st_size, PROT_READ, MAP_SHARED,m_fd,0);
+- if(m_beg > 0)
++ if(m_beg != nullptr)
+ {
+ m_end = m_beg + m_st.st_size;
+ #if HAVE_MADVISE
diff --git a/user/minicom/APKBUILD b/user/minicom/APKBUILD
index d597290e8..5c578c46e 100644
--- a/user/minicom/APKBUILD
+++ b/user/minicom/APKBUILD
@@ -1,20 +1,18 @@
# Contributor: Michael Mason <ms13sp@gmail.com>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=minicom
-pkgver=2.7.1
+pkgver=2.9
pkgrel=0
-pkgdesc="menu driven communications program for terminals"
+pkgdesc="Menu-driven communications program for terminals"
url="https://fossies.org/linux/minicom/"
arch="all"
license="GPL-2.0+"
depends=""
makedepends="ncurses-dev gettext-tiny-dev linux-headers"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://fossies.org/linux/misc/$pkgname-$pkgver.tar.gz
- fix-includes.patch"
+source="https://fossies.org/linux/misc/$pkgname-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,14 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b429b32d187c3ee915c5074a0d0f08b7e3951cb8528ecbdd889837ff301662c16740ad77bd2bf3baf759c0a84e779a8dc8fd888a4260a0ace15ebc4c2f697c82 minicom-2.7.1.tar.gz
-5acff3efb0b8b02333291722044d7c473bf19eec8a26e66c0e0f41895f3e3f071dff13515ec20f7ce17368732e3674f0a42b38602e61b04e9cd70e61012641ff fix-includes.patch"
+sha512sums="2ee4e585b180683b50b257ad768d903b3030f9b528f3bef5cb9c146b53c5bc39c724b69945edc7e72490b145bc12c6c568014a5a778aecac05917bd8d3d31663 minicom-2.9.tar.bz2"
diff --git a/user/minicom/fix-includes.patch b/user/minicom/fix-includes.patch
deleted file mode 100644
index 19a18dcdb..000000000
--- a/user/minicom/fix-includes.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- minicom-2.6.2.orig/src/dial.c
-+++ minicom-2.6.2/src/dial.c
-@@ -39,11 +39,9 @@
- #include "intl.h"
-
- #ifdef VC_MUSIC
--# if defined(__GLIBC__)
- # include <sys/ioctl.h>
- # include <sys/kd.h>
- # include <sys/time.h>
--# endif
- #endif
-
- enum { CURRENT_VERSION = 6 };
---- minicom-2.6.2.orig/src/getsdir.h
-+++ minicom-2.6.2/src/getsdir.h
-@@ -22,6 +22,7 @@
- * and licensing conditions. See the source, Luke.
- */
-
-+#include <sys/param.h>
- #include <dirent.h>
-
- typedef struct dirEntry { /* structure of data item */
diff --git a/user/miniupnpc/APKBUILD b/user/miniupnpc/APKBUILD
new file mode 100644
index 000000000..ba9d46079
--- /dev/null
+++ b/user/miniupnpc/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=miniupnpc
+pkgver=2.2.3
+pkgrel=0
+pkgdesc="A lightweight UPNP client enabling applications to control UPnP gateways"
+url="http://miniupnp.free.fr"
+arch="all"
+options="!check" # no tests
+license="BSD-3-Clause"
+depends=""
+makedepends="cmake"
+subpackages="$pkgname-dev $pkgname-doc"
+source="http://miniupnp.free.fr/files/miniupnpc-$pkgver.tar.gz
+ fix-cmake-include-install.patch
+ "
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ install -m644 -Dt "$pkgdir"/usr/share/man/man3 man3/miniupnpc.3
+}
+
+
+sha512sums="8b9555d336d5dfe8017a16727f964cddacb3f2bf3528fe3dd2416480da5763b24e1740345e470f2123c170d79d88444e41dbbce4536e6069590925e4805bc5ee miniupnpc-2.2.3.tar.gz
+426fb6a67f6114e49eef59d7e87a68a749341707eca58699fbe530a49e08c66435e9bd05d8e4ddd30ad1d48d193203cd16f34754bfbe0ac3f68c28f130e41b3d fix-cmake-include-install.patch"
diff --git a/user/miniupnpc/fix-cmake-include-install.patch b/user/miniupnpc/fix-cmake-include-install.patch
new file mode 100644
index 000000000..0ed4455b1
--- /dev/null
+++ b/user/miniupnpc/fix-cmake-include-install.patch
@@ -0,0 +1,29 @@
+--- a/CMakeLists.txt 2021-10-06 13:27:48.242245444 +0000
++++ b/CMakeLists.txt 2021-10-06 13:28:05.140476639 +0000
+@@ -221,16 +221,16 @@
+
+ if (NOT UPNPC_NO_INSTALL)
+ install (FILES
+- miniupnpc.h
+- miniwget.h
+- upnpcommands.h
+- igd_desc_parse.h
+- upnpreplyparse.h
+- upnperrors.h
+- upnpdev.h
+- miniupnpctypes.h
+- portlistingparse.h
+- miniupnpc_declspec.h
++ include/miniupnpc.h
++ include/miniwget.h
++ include/upnpcommands.h
++ include/igd_desc_parse.h
++ include/upnpreplyparse.h
++ include/upnperrors.h
++ include/upnpdev.h
++ include/miniupnpctypes.h
++ include/portlistingparse.h
++ include/miniupnpc_declspec.h
+ DESTINATION include/miniupnpc
+ )
+
diff --git a/user/minivmac/APKBUILD b/user/minivmac/APKBUILD
index 71a16a1b2..08a38f1fb 100644
--- a/user/minivmac/APKBUILD
+++ b/user/minivmac/APKBUILD
@@ -10,15 +10,12 @@ options="!check" # minivmac does not ship a test suite
license="GPL-2.0-only"
depends=""
makedepends="libx11-dev libxcb-dev libxau-dev libbsd-dev libxdmcp-dev"
-source="http://oddball.tech/code/emu_pkg/$pkgname-$pkgver.tar.xz"
+source="https://distfiles.adelielinux.org/source/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
CARCH=$CARCH ./configure
- cd "$builddir"/mnvmplus
- make -j1
- cd "$builddir"/mnvmII
- make -j1
+ make -C mnvmplus -j1
+ make -C mnvmII -j1
}
package() {
@@ -26,4 +23,4 @@ package() {
install -m755 "$builddir"/mnvmII/minivmac "$pkgdir"/usr/bin/minivmacII
}
-sha512sums="ff28266641dd37df74c84c16c8bf32282729d55ae6512d4a98abf92ba40692f9fc107b501f072755ba0f8a0322d4f755915d9be74a407ce89af94bfd24d11043 minivmac-3.5.8.tar.xz"
+sha512sums="ff28266641dd37df74c84c16c8bf32282729d55ae6512d4a98abf92ba40692f9fc107b501f072755ba0f8a0322d4f755915d9be74a407ce89af94bfd24d11043 minivmac-3.5.8.tar.xz"
diff --git a/user/minizip/APKBUILD b/user/minizip/APKBUILD
new file mode 100644
index 000000000..b7de2ee8b
--- /dev/null
+++ b/user/minizip/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=minizip
+pkgver=1.3
+pkgrel=0
+pkgdesc="Miniature ZIP archive manipulation library"
+url="https://zlib.net"
+arch="all"
+license="zlib"
+depends=""
+makedepends="autoconf automake libtool zlib-dev"
+subpackages="$pkgname-dev"
+source="https://zlib.net/zlib-$pkgver.tar.gz
+ CVE-2023-45853.patch
+ "
+builddir="$srcdir"/zlib-$pkgver/contrib/minizip
+
+prepare() {
+ default_prepare
+ autoreconf -vif
+}
+
+build() {
+ ./configure \
+ --prefix=/usr \
+ --enable-shared
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+sha512sums="185795044461cd78a5545250e06f6efdb0556e8d1bfe44e657b509dd6f00ba8892c8eb3febe65f79ee0b192d6af857f0e0055326d33a881449f3833f92e5f8fb zlib-1.3.tar.gz
+06bb69fe70c3ad7b11e0cf43ff4f7e631010ccc9d74e736d2106d6bf7b4b0934da7c695011757b57511d176a2cf0b4955b854bb8e78a196abcf2792c40e9cea1 CVE-2023-45853.patch"
diff --git a/user/minizip/CVE-2023-45853.patch b/user/minizip/CVE-2023-45853.patch
new file mode 100644
index 000000000..66dfd5707
--- /dev/null
+++ b/user/minizip/CVE-2023-45853.patch
@@ -0,0 +1,40 @@
+This patch differs from upstream in the following way(s):
+
+* Paths changed to accommodate 'builddir'
+
+From 73331a6a0481067628f065ffe87bb1d8f787d10c Mon Sep 17 00:00:00 2001
+From: Hans Wennborg <hans@chromium.org>
+Date: Fri, 18 Aug 2023 11:05:33 +0200
+Subject: [PATCH] Reject overflows of zip header fields in minizip.
+
+This checks the lengths of the file name, extra field, and comment
+that would be put in the zip headers, and rejects them if they are
+too long. They are each limited to 65535 bytes in length by the zip
+format. This also avoids possible buffer overflows if the provided
+fields are too long.
+---
+ contrib/minizip/zip.c | 11 +++++++++++
+ 1 file changed, 11 insertions(+)
+
+diff --git a/contrib/minizip/zip.c b/contrib/minizip/zip.c
+index 3d3d4cadd..0446109b2 100644
+--- a/zip.c
++++ b/zip.c
+@@ -1043,6 +1043,17 @@ extern int ZEXPORT zipOpenNewFileInZip4_64(zipFile file, const char* filename, c
+ return ZIP_PARAMERROR;
+ #endif
+
++ // The filename and comment length must fit in 16 bits.
++ if ((filename!=NULL) && (strlen(filename)>0xffff))
++ return ZIP_PARAMERROR;
++ if ((comment!=NULL) && (strlen(comment)>0xffff))
++ return ZIP_PARAMERROR;
++ // The extra field length must fit in 16 bits. If the member also requires
++ // a Zip64 extra block, that will also need to fit within that 16-bit
++ // length, but that will be checked for later.
++ if ((size_extrafield_local>0xffff) || (size_extrafield_global>0xffff))
++ return ZIP_PARAMERROR;
++
+ zi = (zip64_internal*)file;
+
+ if (zi->in_opened_file_inzip == 1)
diff --git a/user/minuet/APKBUILD b/user/minuet/APKBUILD
index d6dd2837f..ec72e7c0b 100644
--- a/user/minuet/APKBUILD
+++ b/user/minuet/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=minuet
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Music education software"
url="https://minuet.kde.org/"
@@ -12,10 +12,11 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
qt5-qtquickcontrols2-dev qt5-qtsvg-dev kcoreaddons-dev ki18n-dev
kcrash-dev kdoctools-dev fluidsynth-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/minuet-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/minuet-$pkgver.tar.xz
+ missing-header.patch
+ "
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,18 +27,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="559c62c62aceadb10f2f501cddd9094e0ce2a5520d3c872fe5a76f6c3827828c6aca7850ce8c27b1c9126446887b87e7f39f65b861214733e4578816c6981660 minuet-18.12.3.tar.xz"
+sha512sums="5cff0d4d0a5a5511131298b5e7f6774fb8b0b0e1217054305f7df2fe397f4f0e50086c8e5b8f45137cf83d16fe2bab2d331c12b2303e84abf42e19b3c165f692 minuet-22.04.2.tar.xz
+5758385b1d18c0fc89335b9fbbfee0e7800ec03bdaaeea7a61bac4e0ed911e302b35697c54e4547a379dd3625a13214f8851d4eedfa3132ee5d9fd82e19cd241 missing-header.patch"
diff --git a/user/minuet/missing-header.patch b/user/minuet/missing-header.patch
new file mode 100644
index 000000000..a9aa00984
--- /dev/null
+++ b/user/minuet/missing-header.patch
@@ -0,0 +1,30 @@
+Compiler error:
+
+/usr/src/packages/user/minuet/src/minuet-20.08.1/src/utils/xdgdatadirs.cpp: In function ‘QStringList Utils::getXdgDataDirs()’:
+/usr/src/packages/user/minuet/src/minuet-20.08.1/src/utils/xdgdatadirs.cpp:16:89: error: invalid use of incomplete type ‘class QVector<QStringRef>’
+ const auto paths = xdgDataDirsEnv.splitRef(QLatin1Char(':'), QString::SkipEmptyParts);
+ ^
+In file included from /usr/include/QtCore/qglobal.h:1212,
+ from /usr/include/QtCore/qchar.h:43,
+ from /usr/include/QtCore/qstring.h:48,
+ from /usr/include/QtCore/qdir.h:43,
+ from /usr/include/QtCore/QDir:1,
+ from /usr/src/packages/user/minuet/src/minuet-20.08.1/src/utils/xdgdatadirs.cpp:1:
+/usr/include/QtCore/qtypeinfo.h:193:1: note: declaration of ‘class QVector<QStringRef>’
+ Q_DECLARE_MOVABLE_CONTAINER(QVector);
+ ^~~~~~~~~~~~~~~~~~~~~~~~~~~
+/usr/src/packages/user/minuet/src/minuet-20.08.1/src/utils/xdgdatadirs.cpp:18:29: error: unable to deduce ‘auto&&’ from ‘paths’
+ for (const auto &path : paths) {
+ ^~~~~
+make[2]: *** [src/utils/CMakeFiles/minuetutils.dir/build.make:76: src/utils/CMakeFiles/minuetutils.dir/xdgdatadirs.cpp.o] Error 1
+
+
+--- minuet-20.08.1/src/utils/xdgdatadirs.cpp.old 2020-08-31 18:34:27.000000000 +0000
++++ minuet-20.08.1/src/utils/xdgdatadirs.cpp 2020-09-18 00:14:59.175663978 +0000
+@@ -1,5 +1,6 @@
+ #include <QDir>
+ #include <QFile>
++#include <QVector>
+
+ #include "xdgdatadirs.h"
+
diff --git a/user/mkcomposecache/APKBUILD b/user/mkcomposecache/APKBUILD
index d75231431..f72745e43 100644
--- a/user/mkcomposecache/APKBUILD
+++ b/user/mkcomposecache/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=mkcomposecache
-pkgver=1.2.1
+pkgver=1.2.2
pkgrel=0
pkgdesc="Utility to manipulate X11 Compose key cache files"
url="https://www.X.Org/"
@@ -10,12 +10,7 @@ license="MIT"
depends=""
makedepends="libx11-dev"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/mkcomposecache-$pkgver.tar.bz2"
-
-prepare() {
- update_config_sub
- default_prepare
-}
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
./configure \
@@ -36,4 +31,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="97ce9e5e2f2534291fc0b3a121899e2936de3e71ec6a9929cfc6e1e0f41e6d57cccd08147a2b5d3c7d70d1769f14ed6c4745c398602d5b81a2ddb8c7490fcb5b mkcomposecache-1.2.1.tar.bz2"
+sha512sums="0cfc6e8d14de4136d4899fdd878c25faf400f29f2d23b0a000bb355785bc2cb178cf8c3f7380a056132c91c6ad778c5ab6e5047763e8b5db0033f0cc0f809df3 mkcomposecache-1.2.2.tar.xz"
diff --git a/user/mkfontscale/APKBUILD b/user/mkfontscale/APKBUILD
index cfda36c89..01bd8c2bc 100644
--- a/user/mkfontscale/APKBUILD
+++ b/user/mkfontscale/APKBUILD
@@ -1,18 +1,18 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=mkfontscale
-pkgver=1.2.1
+pkgver=1.2.3
pkgrel=0
pkgdesc="Scalable font file creator for X.Org"
url="https://www.X.Org/"
arch="all"
license="MIT"
-subpackages="$pkgname-doc"
depends=""
makedepends="freetype-dev libfontenc-dev util-macros xorgproto-dev zlib-dev"
provides="mkfontdir=$pkgver-r$pkgrel"
triggers="$pkgname.trigger=/usr/share/fonts/*
$pkgname.trigger=/usr/share/fonts/X11/*"
-source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.bz2"
+subpackages="$pkgname-doc"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
./configure \
@@ -30,4 +30,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="4d243160e1f7f8dfa6a8f53349c1a42a55fc99426455ebdef58352c5e951fce8b4f1fbd1061a76c9a148095b002eac372db1ae5e2647d2ccb4886635b317b18c mkfontscale-1.2.1.tar.bz2"
+sha512sums="816e7b2885bb7a4b2eb0e506b659600011bfa4ec1a3010243c2cc2241fa0b792f3c8de1dec1855a4d13de89405973967074e379b0d01dcf9de8a1277a2fc4296 mkfontscale-1.2.3.tar.xz"
diff --git a/user/mksh/APKBUILD b/user/mksh/APKBUILD
index 572663be3..596380611 100644
--- a/user/mksh/APKBUILD
+++ b/user/mksh/APKBUILD
@@ -1,23 +1,23 @@
# Contributor: Marek Benc <dusxmt@gmx.com>
# Maintainer: Marek Benc <dusxmt@gmx.com>
pkgname=mksh
-pkgver=56c
+pkgver=59c
pkgrel=0
pkgdesc="MirBSD Korn Shell, a free Korn Shell interpreter"
url="http://mirbsd.de/mksh"
arch="all"
-license="MirOS OR ISC"
+license="MirOS AND Unicode-DFS-2016"
depends=""
-makedepends=""
checkdepends="ed perl"
+makedepends=""
subpackages="$pkgname-doc"
install="mksh.post-install mksh.post-upgrade mksh.pre-deinstall"
-source="http://www.mirbsd.org/MirOS/dist/mir/${pkgname}/${pkgname}-R${pkgver}.tgz"
-builddir=$srcdir/$pkgname
+source="https://www.mirbsd.org/MirOS/dist/mir/${pkgname}/${pkgname}-R${pkgver}.tgz
+ fix-deprecated-fgrep.patch
+ "
+builddir="$srcdir"/$pkgname
build() {
- cd "$builddir"
-
# Build the main shell:
/bin/sh ./Build.sh -r
mv test.sh test_mksh.sh
@@ -26,11 +26,20 @@ build() {
CFLAGS="$CFLAGS -DMKSH_BINSHPOSIX -DMKSH_BINSHREDUCED" \
/bin/sh ./Build.sh -r -L
mv test.sh test_lksh.sh
+
+ # Build the HTML FAQ:
+ /bin/sh ./FAQ2HTML.sh
}
-package() {
- cd "$builddir"
+check() {
+ msg "Running the test suite for mksh"
+ ./test_mksh.sh
+
+ msg "Running the test suite for lksh:"
+ ./test_lksh.sh
+}
+package() {
mkdir -p "$pkgdir"/bin
install -m 755 mksh "$pkgdir"/bin
install -m 755 lksh "$pkgdir"/bin
@@ -41,16 +50,8 @@ package() {
mkdir -p "$pkgdir"/usr/share/doc/mksh/examples/
install -m 644 dot.mkshrc "$pkgdir"/usr/share/doc/mksh/examples/
+ install -m 644 FAQ.htm "$pkgdir"/usr/share/doc/mksh/
}
-check() {
- cd "$builddir"
-
- echo "Running the test suite for mksh:"
- ./test_mksh.sh
-
- echo "Running the test suite for lksh:"
- ./test_lksh.sh
-}
-
-sha512sums="7e4cd2d24c6bca2ebad7c6b02d158188e766bd4693d93f5bed198d69238aef078d42ce911431ad4e419e4af55083047d823bfad53973db5c6d8a685482770135 mksh-R56c.tgz"
+sha512sums="f56b6956f9e1dd88ddce2294301a5eb698050d9d4f49286fdcd8f9df8554eabbcc71d37e2bf3eb7234e3968a17231cc6de8aa7efbf17768834a90b14e8cdf340 mksh-R59c.tgz
+46210a286add06ac46adbc57c2150eb98ae67af7f79c509e0d11443cb33ce6617c1fa587179bb1955a832549515e8b1def1e32784caf91b54f7d5cfee1b43970 fix-deprecated-fgrep.patch"
diff --git a/user/mksh/fix-deprecated-fgrep.patch b/user/mksh/fix-deprecated-fgrep.patch
new file mode 100644
index 000000000..03f701f78
--- /dev/null
+++ b/user/mksh/fix-deprecated-fgrep.patch
@@ -0,0 +1,22 @@
+--- a/check.t
++++ b/check.t
+@@ -6728,7 +6728,7 @@
+ echo FNORD-7
+ typeset -
+ echo FNORD-8
+- } | fgrep FNORD
++ } | grep -F FNORD
+ fnord=(42 23)
+ typeset -p fnord
+ echo FNORD-9
+@@ -8641,8 +8641,8 @@
+ (echo x; exit 12) | (cat; exit 23) | (cat; exit 42)
+ echo 5 $? , $PIPESTATUS , ${PIPESTATUS[0]} , ${PIPESTATUS[1]} , ${PIPESTATUS[2]} , ${PIPESTATUS[3]} .
+ echo 6 ${PIPESTATUS[0]} .
+- set | fgrep PIPESTATUS
+- echo 8 $(set | fgrep PIPESTATUS) .
++ set | grep -F PIPESTATUS
++ echo 8 $(set | grep -F PIPESTATUS) .
+ expected-stdout:
+ 1 0 .
+ 2 0 .
diff --git a/user/mlt/APKBUILD b/user/mlt/APKBUILD
index c42db62ba..e592a1f0e 100644
--- a/user/mlt/APKBUILD
+++ b/user/mlt/APKBUILD
@@ -1,49 +1,46 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=mlt
-pkgver=6.14.0
+pkgver=7.12.0
pkgrel=0
pkgdesc="MLT multimedia framework"
url="https://www.mltframework.org/"
arch="all"
options="!check" # No test suite.
license="LGPL-2.1+ AND GPL-3.0+"
-makedepends="bsd-compat-headers ffmpeg-dev fftw-dev frei0r-plugins-dev
+depends=""
+makedepends="bsd-compat-headers cmake ffmpeg-dev fftw-dev frei0r-plugins-dev
gtk+2.0-dev libexif-dev libsamplerate-dev libxml2-dev sdl-dev sdl2-dev
- qt5-qtbase-dev qt5-qtsvg-dev sdl_image-dev sox-dev"
-subpackages="$pkgname-dev"
+ libvorbis-dev qt5-qtbase-dev qt5-qtsvg-dev sdl_image-dev
+ alsa-lib-dev ladspa-dev pulseaudio-dev"
+subpackages="$pkgname-dev $pkgname-doc"
source="https://github.com/mltframework/mlt/releases/download/v$pkgver/mlt-$pkgver.tar.gz
- mlt-6.14.0-locale-header.patch
+ x86caps.patch
"
build() {
- cd "$builddir"
- local _maybe_asm=""
-
case $CTARGET_ARCH in
- pmmx) _maybe_asm="--disable-sse --target-arch=i586" ;;
+ ppc) export LDFLAGS="$LDFLAGS -latomic" ;;
esac
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var \
- --avformat-swscale \
- --enable-motion-est \
- --enable-gpl \
- --enable-gpl3 \
- --disable-rtaudio \
- $_maybe_asm
- make
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake -Bbuild \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make -C build
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make -C build DESTDIR="$pkgdir" install
}
-sha512sums="86b26b0c421cc881f6bebbde2c0ae9d834f190d8f878fb279ab29a1d7ac5416077b7dd91420bf63a7821fade9ca9c044a92440e02673c7b330b8ff36982a9fb9 mlt-6.14.0.tar.gz
-d00f01d50d5c78b1da5b43dc2b0bbfc49d5e383b602169ae9554734d29f6d43b9da8f97546141933c06ff0367bb4c9f0d2161bbcb6f016265bb0aa1dcbfcb3b1 mlt-6.14.0-locale-header.patch"
+sha512sums="7111ca31f5ed8479dc899596bec4b9dd9440ab8563844abd9d789f7ce342b61c54d1a5058d6f5288fdd510db7e05db12f7e807bf0cd33dbee11a72185fb0b746 mlt-7.12.0.tar.gz
+ffe5accab20caf612dc560ff0fa4b006af642df902902d8b2726342027bb4ea1bd4190b36291e124508d84a4878286862e66909d801639f44f47169d1fe65fec x86caps.patch"
diff --git a/user/mlt/mlt-6.14.0-locale-header.patch b/user/mlt/mlt-6.14.0-locale-header.patch
deleted file mode 100644
index 28d659460..000000000
--- a/user/mlt/mlt-6.14.0-locale-header.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Nurd mlt-6.14.0/src/framework/mlt_property.h mlt-6.14.0.new/src/framework/mlt_property.h
---- mlt-6.14.0/src/framework/mlt_property.h 2019-03-30 15:59:21.000000000 -0500
-+++ mlt-6.14.0.new/src/framework/mlt_property.h 2019-04-07 11:44:33.645881649 -0500
-@@ -30,7 +30,7 @@
- #include <sys/param.h>
- #endif
-
--#if (defined(__GLIBC__) && !defined(__APPLE__)) || defined(HAVE_LOCALE_H)
-+#if (defined(__linux__) && !defined(__APPLE__)) || defined(HAVE_LOCALE_H)
- # include <locale.h>
- #elif defined(__APPLE__) || (defined(__FreeBSD_version) && __FreeBSD_version >= 900506)
- # include <xlocale.h>
diff --git a/user/mlt/x86caps.patch b/user/mlt/x86caps.patch
new file mode 100644
index 000000000..4b8e3ae0b
--- /dev/null
+++ b/user/mlt/x86caps.patch
@@ -0,0 +1,37 @@
+--- mlt-7.6.0/CMakeLists.txt.old 2022-03-29 13:12:42.000000000 -0500
++++ mlt-7.6.0/CMakeLists.txt 2022-06-12 04:00:05.290000000 -0500
+@@ -125,10 +125,8 @@
+ if(CMAKE_C_COMPILER_ID MATCHES "GNU|Clang")
+ if(CMAKE_SYSTEM_PROCESSOR MATCHES "i686|x86|x86_64|AMD64")
+ set(CPU_MMX ON)
+- set(CPU_SSE ON)
+- set(CPU_SSE2 ON)
+ if(NOT MSVC) # also NOT clang-cl
+- list(APPEND MLT_COMPILE_OPTIONS "-mmmx;-msse;-msse2")
++ list(APPEND MLT_COMPILE_OPTIONS "-mmmx")
+ endif()
+ endif()
+ if(CMAKE_SYSTEM_PROCESSOR MATCHES "i686" OR (WIN32 AND CMAKE_SYSTEM_PROCESSOR MATCHES "x86"))
+@@ -136,6 +134,9 @@
+ endif()
+ if(CMAKE_SYSTEM_PROCESSOR MATCHES "x86_64|AMD64")
+ set(CPU_X86_64 ON)
++ set(CPU_SSE ON)
++ set(CPU_SSE2 ON)
++ set(CPU_SSE3 ON)
+ endif()
+ endif()
+
+--- mlt-7.6.0/src/modules/xine/CMakeLists.txt.old 2022-03-29 13:12:42.000000000 -0500
++++ mlt-7.6.0/src/modules/xine/CMakeLists.txt 2022-06-12 03:59:39.880000000 -0500
+@@ -30,6 +30,10 @@
+ target_compile_definitions(mltxine PRIVATE USE_SSE2)
+ endif()
+
++if(CPU_SSE3)
++ target_compile_definitions(mltxine PRIVATE USE_SSE3)
++endif()
++
+ if(CPU_X86_32)
+ target_compile_definitions(mltxine PRIVATE ARCH_X86)
+ endif()
diff --git a/user/mobile-broadband-provider-info/APKBUILD b/user/mobile-broadband-provider-info/APKBUILD
new file mode 100644
index 000000000..1007e35c8
--- /dev/null
+++ b/user/mobile-broadband-provider-info/APKBUILD
@@ -0,0 +1,34 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=mobile-broadband-provider-info
+pkgver=20220511
+pkgrel=0
+pkgdesc="Mobile broadband service provider database"
+url="https://wiki.gnome.org/Projects/NetworkManager/MobileBroadband/ServiceProviders"
+arch="noarch"
+options="!check" # 'Not validated yet', per the test suite.
+license="CC0-1.0"
+depends=""
+makedepends="libxslt"
+subpackages=""
+source="https://download.gnome.org/sources/mobile-broadband-provider-info/$pkgver/mobile-broadband-provider-info-$pkgver.tar.xz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="7b3a9c0a2e618ef3ef0e29b947ab9f0a55f30bd738f0e976529e8f3ddbb60a738f623e718ea67fa6e6008275dbbe78ce3ed9852c005748a266f04e3dd65179a6 mobile-broadband-provider-info-20220511.tar.xz"
diff --git a/user/modemmanager-qt/APKBUILD b/user/modemmanager-qt/APKBUILD
new file mode 100644
index 000000000..07133c58c
--- /dev/null
+++ b/user/modemmanager-qt/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=modemmanager-qt
+pkgver=5.94.0
+pkgrel=0
+pkgdesc="Qt framework for ModemManager"
+url="https://www.kde.org/"
+arch="all"
+options="!check" # Requires MM running.
+license="LGPL-2.1-only OR LGPL-3.0-only"
+depends=""
+depends_dev="modemmanager-dev"
+makedepends="$depends_dev cmake doxygen extra-cmake-modules qt5-qtbase-dev
+ qt5-qttools-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://download.kde.org/stable/frameworks/${pkgver%.*}/modemmanager-qt-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DBUILD_QCH:BOOL=ON \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="3867d8ed2b000e51a2782ad0300e2a49b89bad429409b4d36f9d1798f992980b4dc6c38edceb8e33456bb5fb0d11b3007f01ca8c3bbaae6f239b0260885fdf9e modemmanager-qt-5.94.0.tar.xz"
diff --git a/user/modemmanager/01-org.freedesktop.ModemManager.rules b/user/modemmanager/01-org.freedesktop.ModemManager.rules
new file mode 100644
index 000000000..c57f4c55c
--- /dev/null
+++ b/user/modemmanager/01-org.freedesktop.ModemManager.rules
@@ -0,0 +1,8 @@
+// Let users in either 'plugdev' or 'dialout' control ModemManager
+polkit.addRule(function(action, subject) {
+ if (/^org\.freedesktop\.ModemManager1\.(Device\.Control|Contacts|Messaging|Location)$/.test(action.id) &&
+ (subject.isInGroup("plugdev") || subject.isInGroup("dialout")) && subject.active) {
+ return "yes";
+ }
+});
+
diff --git a/user/modemmanager/APKBUILD b/user/modemmanager/APKBUILD
new file mode 100644
index 000000000..c239f17fc
--- /dev/null
+++ b/user/modemmanager/APKBUILD
@@ -0,0 +1,48 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=modemmanager
+pkgver=1.12.8
+pkgrel=0
+pkgdesc="Software to control mobile broadband modems"
+url="https://www.freedesktop.org/wiki/Software/ModemManager/"
+arch="all"
+license="GPL-2.0+ AND LGPL-2.1+"
+depends=""
+checkdepends="dbus-x11"
+makedepends="glib-dev gobject-introspection-dev libgudev-dev libmbim-dev
+ libqmi-dev polkit-dev vala-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://www.freedesktop.org/software/ModemManager/ModemManager-$pkgver.tar.xz
+ no-translit.patch
+
+ 01-org.freedesktop.ModemManager.rules
+ "
+builddir="$srcdir/ModemManager-$pkgver"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --disable-more-warnings \
+ --enable-introspection \
+ --enable-vala
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ install -D -m644 -t "$pkgdir"/usr/share/polkit-1/rules.d/ \
+ "$srcdir"/01-org.freedesktop.ModemManager.rules
+}
+
+sha512sums="9469b6c1e9927d578c79b821fad05ce9ade4d8d62be8b2399e3c892155ff7125ccc03b8a16912ae534bac32e053cef13bd8d0f79435df1e0cd554b320286f7cd ModemManager-1.12.8.tar.xz
+78e1c2ef604fb8b204618b9ecdc741ed7087fcc46ee563dbaaf6c9c0185165be58abfc3bf8ba89129fce7570c172cd1ac1e191e6d1200e3029c14a585ff40b83 no-translit.patch
+31ded548acc8ccfcca5cd54384819b73ad9ac83556b754fa03a1a9c08aed7f913c7f066000abef0e52310721ef8c00ca8f48f1f762faaa5792420f62b5201881 01-org.freedesktop.ModemManager.rules"
diff --git a/user/modemmanager/no-translit.patch b/user/modemmanager/no-translit.patch
new file mode 100644
index 000000000..8f6d4b5f7
--- /dev/null
+++ b/user/modemmanager/no-translit.patch
@@ -0,0 +1,92 @@
+--- ModemManager-1.10.0/src/mm-broadband-modem.c.old 2019-01-15 14:57:35.000000000 +0000
++++ ModemManager-1.10.0/src/mm-broadband-modem.c 2019-05-10 05:17:07.329881242 +0000
+@@ -7014,7 +7014,7 @@
+ /* The raw SMS data can only be GSM, UCS2, or unknown (8-bit), so we
+ * need to convert to UCS2 here.
+ */
+- ucs2_text = g_convert (text, -1, "UCS-2BE//TRANSLIT", "UTF-8", NULL, &ucs2_len, NULL);
++ ucs2_text = g_convert (text, -1, "UCS-2BE", "UTF-8", NULL, &ucs2_len, NULL);
+ g_assert (ucs2_text);
+ raw = g_byte_array_sized_new (ucs2_len);
+ g_byte_array_append (raw, (const guint8 *) ucs2_text, ucs2_len);
+--- ModemManager-1.10.0/src/mm-charsets.c.old 2019-05-10 05:09:21.350652258 +0000
++++ ModemManager-1.10.0/src/mm-charsets.c 2019-05-10 05:16:41.752668021 +0000
+@@ -35,15 +35,15 @@
+ } CharsetEntry;
+
+ static CharsetEntry charset_map[] = {
+- { "UTF-8", "UTF8", "UTF-8", "UTF-8//TRANSLIT", MM_MODEM_CHARSET_UTF8 },
+- { "UCS2", NULL, "UCS-2BE", "UCS-2BE//TRANSLIT", MM_MODEM_CHARSET_UCS2 },
+- { "IRA", "ASCII", "ASCII", "ASCII//TRANSLIT", MM_MODEM_CHARSET_IRA },
+- { "GSM", NULL, NULL, NULL, MM_MODEM_CHARSET_GSM },
+- { "8859-1", NULL, "ISO8859-1", "ISO8859-1//TRANSLIT", MM_MODEM_CHARSET_8859_1 },
+- { "PCCP437", "CP437", "CP437", "CP437//TRANSLIT", MM_MODEM_CHARSET_PCCP437 },
+- { "PCDN", "CP850", "CP850", "CP850//TRANSLIT", MM_MODEM_CHARSET_PCDN },
+- { "HEX", NULL, NULL, NULL, MM_MODEM_CHARSET_HEX },
+- { NULL, NULL, NULL, NULL, MM_MODEM_CHARSET_UNKNOWN }
++ { "UTF-8", "UTF8", "UTF-8", "UTF-8", MM_MODEM_CHARSET_UTF8 },
++ { "UCS2", NULL, "UCS-2BE", "UCS-2BE", MM_MODEM_CHARSET_UCS2 },
++ { "IRA", "ASCII", "ASCII", "ASCII", MM_MODEM_CHARSET_IRA },
++ { "GSM", NULL, NULL, NULL, MM_MODEM_CHARSET_GSM },
++ { "8859-1", NULL, "ISO8859-1", "ISO8859-1", MM_MODEM_CHARSET_8859_1 },
++ { "PCCP437", "CP437", "CP437", "CP437", MM_MODEM_CHARSET_PCCP437 },
++ { "PCDN", "CP850", "CP850", "CP850", MM_MODEM_CHARSET_PCDN },
++ { "HEX", NULL, NULL, NULL, MM_MODEM_CHARSET_HEX },
++ { NULL, NULL, NULL, NULL, MM_MODEM_CHARSET_UNKNOWN }
+ };
+
+ const char *
+@@ -163,7 +163,7 @@
+ g_return_val_if_fail (iconv_from != NULL, FALSE);
+
+ converted = g_convert ((const gchar *)array->data, array->len,
+- "UTF-8//TRANSLIT", iconv_from,
++ "UTF-8", iconv_from,
+ NULL, NULL, &error);
+ if (!converted || error) {
+ g_clear_error (&error);
+@@ -195,7 +195,7 @@
+ return unconverted;
+
+ converted = g_convert (unconverted, unconverted_len,
+- "UTF-8//TRANSLIT", iconv_from,
++ "UTF-8", iconv_from,
+ NULL, NULL, &error);
+ if (!converted || error) {
+ g_clear_error (&error);
+@@ -226,7 +226,7 @@
+ return g_strdup (src);
+
+ converted = g_convert (src, strlen (src),
+- iconv_to, "UTF-8//TRANSLIT",
++ iconv_to, "UTF-8",
+ NULL, &converted_len, &error);
+ if (!converted || error) {
+ g_clear_error (&error);
+@@ -747,7 +747,7 @@
+
+ iconv_from = charset_iconv_from (charset);
+ utf8 = g_convert (str, strlen (str),
+- "UTF-8//TRANSLIT", iconv_from,
++ "UTF-8", iconv_from,
+ NULL, NULL, &error);
+ if (!utf8 || error) {
+ g_clear_error (&error);
+@@ -790,7 +790,7 @@
+ * that is UTF-8, if any.
+ */
+ utf8 = g_convert (str, strlen (str),
+- "UTF-8//TRANSLIT", "UTF-8//TRANSLIT",
++ "UTF-8", "UTF-8",
+ &bread, &bwritten, NULL);
+
+ /* Valid conversion, or we didn't get enough valid UTF-8 */
+@@ -804,7 +804,7 @@
+ */
+ str[bread] = '\0';
+ utf8 = g_convert (str, strlen (str),
+- "UTF-8//TRANSLIT", "UTF-8//TRANSLIT",
++ "UTF-8", "UTF-8",
+ NULL, NULL, NULL);
+ g_free (str);
+ break;
diff --git a/user/modules/APKBUILD b/user/modules/APKBUILD
new file mode 100644
index 000000000..4d0dc0ee2
--- /dev/null
+++ b/user/modules/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Zach van Rijn <me@zv.io>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=modules
+pkgver=5.1.0
+pkgrel=0
+pkgdesc="Environment Modules provides for the dynamic modification of a user's environment."
+url="http://modules.sourceforge.net/"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="tcl-dev"
+checkdepends="dejagnu"
+subpackages="$pkgname-doc"
+source="https://github.com/cea-hpc/modules/releases/download/v$pkgver/modules-$pkgver.tar.bz2"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ rm testsuite/modules.70-maint/310-sh-to-mod.exp #697
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="f0d443dcfe32f6fc87af387b975b4e2694ade7bbc7e4f990084896e89708ebf2496c274350702598ec1fcfcab6ff0d771d1e4947a414e0880ea701f568fb01d9 modules-5.1.0.tar.bz2"
diff --git a/user/monoid/APKBUILD b/user/monoid/APKBUILD
index 449d177e1..da210f0f7 100644
--- a/user/monoid/APKBUILD
+++ b/user/monoid/APKBUILD
@@ -15,8 +15,7 @@ source="https://raw.githubusercontent.com/larsenwork/monoid/2db2d289f4e61010dd3f
builddir="$srcdir/"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ *.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ "$builddir"/*.ttf
}
sha512sums="2776bbc7febf17c10f87bbdd3e6e4fd7c24b93286009d1dcb0ca8058e1e1437c3179068ab608c3f69ae07c08950ececb4d0ad88e82ccba4a6bd2d8b63f71a9c8 Monoid-Small.zip"
diff --git a/user/montecarlo/APKBUILD b/user/montecarlo/APKBUILD
index f3c794409..c49434e64 100644
--- a/user/montecarlo/APKBUILD
+++ b/user/montecarlo/APKBUILD
@@ -15,8 +15,6 @@ source="http://www.bok.net/MonteCarlo/downloads/MonteCarlo-PCF.tgz"
builddir="$srcdir/MonteCarlo-PCF"
package() {
- cd "$builddir"
- local _font
for _font in *.pcf; do
gzip -9 $_font
install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/misc/ $_font.gz
diff --git a/user/mosh/APKBUILD b/user/mosh/APKBUILD
index afa107c80..728719767 100644
--- a/user/mosh/APKBUILD
+++ b/user/mosh/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=mosh
-pkgver=1.3.2
+pkgver=1.4.0
pkgrel=0
pkgdesc="Mobile shell surviving disconnects with local echo and line editing"
url="https://mosh.org"
@@ -13,19 +13,16 @@ makedepends="ncurses-dev zlib-dev openssl-dev perl-dev perl-io-tty
protobuf-dev automake autoconf libtool gzip"
subpackages="$pkgname-doc $pkgname-client $pkgname-server
$pkgname-bash-completion:bashcomp:noarch"
-source="https://mosh.org/$pkgname-$pkgver.tar.gz
- fix-ppc64le-build-with-musl.patch"
+source="https://github.com/mobile-shell/mosh/releases/download/$pkgname-$pkgver/$pkgname-$pkgver.tar.gz"
prepare() {
default_prepare
# Test unicode-later-combining is failing. Ideally we want to fix it.
sed -i '/unicode-later-combining.test/d' "$builddir"/src/tests/Makefile.am
- cd "$builddir"
./autogen.sh
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -38,12 +35,10 @@ build() {
}
check() {
- cd "$builddir"
make check VERBOSE=1 V=1
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -74,5 +69,4 @@ client() {
"$subpkgdir"/usr/bin/
}
-sha512sums="f400e8fe7ba2ab7362311fc12a00ec69587505f901988aeee500fc68d38a388218500a3f602111c883ff23a9d43572114fcf0a8bf505df203691e5b597615769 mosh-1.3.2.tar.gz
-a276dde98a2dab63ad9c9c05468c55983a95f482878c5694713810b561eae1ea5618efc72431a17ee5b5014b12ee9709c6a8cbf582620294e7888cc837cd073c fix-ppc64le-build-with-musl.patch"
+sha512sums="38c11f52ff1e42965b50a22bf6de80b0fa8ebbff841d825e760abf69c788a2bf5f34e6f7fc047574d595118334eef9edf8da5520b52cdde3ac1a79d7ad70312e mosh-1.4.0.tar.gz"
diff --git a/user/mosh/fix-ppc64le-build-with-musl.patch b/user/mosh/fix-ppc64le-build-with-musl.patch
deleted file mode 100644
index 8d918a963..000000000
--- a/user/mosh/fix-ppc64le-build-with-musl.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From: Roberto Oliveira <robertoguimaraes8@gmail.com>
-Date: Tue, 4 Apr 2017 16:46:50 +0000
-Subject: [PATCH] Fix build with musl on ppc64le
-
-mosh was breaking when building in ppc64le using musl, because ioctl() is defined
-as ioctl(int, int) in musl and mosh is using TIOCSWINSZ macro as parameter. This was
-triggering a gcc warning and make the build fail.
-
-This patch does an explicit integer conversion in TIOCSWINSZ, as no bits get
-lost.
-
---- a/src/frontend/mosh-server.cc
-+++ b/src/frontend/mosh-server.cc
-@@ -714,7 +714,12 @@
- }
- window_size.ws_col = res->width;
- window_size.ws_row = res->height;
-- if ( ioctl( host_fd, TIOCSWINSZ, &window_size ) < 0 ) {
-+
-+ #if defined(__powerpc64__) && (!defined(__GLIBC__) && !defined(__UCLIBC__))
-+ if ( ioctl( host_fd, (int) TIOCSWINSZ, &window_size ) < 0 ) {
-+ #else
-+ if ( ioctl( host_fd, TIOCSWINSZ, &window_size ) < 0 ) {
-+ #endif
- perror( "ioctl TIOCSWINSZ" );
- network.start_shutdown();
- }
---- a/src/examples/termemu.cc
-+++ a/src/examples/termemu.cc
-@@ -226,7 +226,11 @@
- }
-
- /* tell child process */
-+ #if defined(__powerpc64__) && (!defined(__GLIBC__) && !defined(__UCLIBC__))
-+ if ( ioctl( fd, (int) TIOCSWINSZ, &window_size ) < 0 ) {
-+ #else
- if ( ioctl( fd, TIOCSWINSZ, &window_size ) < 0 ) {
-+ #endif
- perror( "ioctl TIOCSWINSZ" );
- return;
- }
-@@ -306,7 +310,11 @@
- complete.act( &r );
-
- /* tell child process */
-+ #if defined(__powerpc64__) && (!defined(__GLIBC__) && !defined(__UCLIBC__))
-+ if ( ioctl( fd, (int) TIOCSWINSZ, &window_size ) < 0 ) {
-+ #else
- if ( ioctl( fd, TIOCSWINSZ, &window_size ) < 0 ) {
-+ #endif
- perror( "ioctl TIOCSWINSZ" );
- return;
- }
diff --git a/user/mosquitto/APKBUILD b/user/mosquitto/APKBUILD
new file mode 100644
index 000000000..4b7f6f06b
--- /dev/null
+++ b/user/mosquitto/APKBUILD
@@ -0,0 +1,98 @@
+# Contributor: Pedro Filipe <xpecex@outlook.com>
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=mosquitto
+pkgver=2.0.15
+pkgrel=0
+pkgdesc="An Open Source MQTT Broker"
+url="https://mosquitto.org/"
+arch="all"
+license="EPL-1.0 AND EDL-1.0 AND MIT AND BSD-3-Clause"
+depends=""
+checkdepends="python3 ca-certificates cunit-dev"
+makedepends="c-ares-dev openssl-dev util-linux-dev cjson-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-libs $pkgname-openrc
+ $pkgname-clients"
+install="$pkgname.pre-install"
+source="http://mosquitto.org/files/source/$pkgname-$pkgver.tar.gz
+ mosquitto.initd
+ openrc-conf.patch
+ endian.patch
+ no-persist_read_test.patch
+ "
+
+# secfixes:
+# 1.6.6-r0:
+# - CVE-2019-11779
+# 1.5.6-r0:
+# - CVE-2018-12546
+# - CVE-2018-12550
+# - CVE-2018-12551
+# 1.5.3-r0:
+# - CVE-2018-12543
+# 1.4.15-r0:
+# - CVE-2017-7652
+# - CVE-2017-7651
+# 1.4.13-r0:
+# - CVE-2017-9868
+# 1.4.12-r0:
+# - CVE-2017-7650
+
+build() {
+ make \
+ WITH_ADNS=no \
+ WITH_MEMORY_TRACKING=no \
+ WITH_SRV=yes \
+ prefix=/usr
+}
+
+check() {
+ # Explicitly disable tests, instead of enabling only good ones.
+ # 08-ssl-connect-cert-auth-without-py: #687
+ # 06-bridge-reconnect-local-out.py:
+ # https://www.eclipse.org/lists/mosquitto-dev/msg02687.html
+ # (fix commit is not easily backported due to other churn)
+ # Other two: https://github.com/eclipse/mosquitto/issues/2550
+ sed -i test/broker/test.py \
+ -e '/08-ssl-connect-cert-auth-without.py/d' \
+ -e '/06-bridge-b2br-late-connection-retain.py/d' \
+ -e '/06-bridge-reconnect-local-out.py/d' \
+ -e '/11-pub-props.py/d' \
+ ;
+ sed -i test/lib/test.py \
+ -e '/02-subscribe-qos1.py/d' \
+ ;
+ sed -i test/client/Makefile \
+ -e '/test.sh/d' \
+ ;
+ # -j1 to avoid TLS errors on at least pmmx due to race.
+ make -j1 ptest
+}
+
+package() {
+ make prefix=/usr DESTDIR="$pkgdir" install
+
+ # C++ bindings are deprecated, so don't install them.
+ make -C lib/cpp prefix=/usr DESTDIR="$pkgdir" uninstall
+ rm "$pkgdir"/usr/lib/pkgconfig/libmosquittopp.pc
+
+ mv "$pkgdir"/usr/sbin/mosquitto "$pkgdir"/usr/bin
+ mv "$pkgdir"/etc/mosquitto/mosquitto.conf.example \
+ "$pkgdir"/etc/mosquitto/mosquitto.conf
+
+ install -Dm755 "$srcdir"/mosquitto.initd \
+ "$pkgdir"/etc/init.d/mosquitto
+}
+
+clients() {
+ pkgdesc="Mosquitto command line MQTT clients"
+
+ mkdir -p "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/mosquitto_[ps]ub "$subpkgdir"/usr/bin/
+}
+
+sha512sums="8a0c58222ea0b9304e7f096f6d13965478072baf1d1c9bc931b32a33f5ea8196c2dd54bde8d83fec7ed9cd413cb5fb115ce0a6701ca20664df52fdd7ca63ddaf mosquitto-2.0.15.tar.gz
+681fddc737b3ef3e6c052f0c854a730df290352640a18a63e23ef83d14c425558aff87805d1eb95e44de101b5df48872173af9f5414464ffa8cf727ea2c0491e mosquitto.initd
+b07f9bec2751ab32c43f53e74d8fca18dbf2d7ce7f8fab562dbcf75de19609ba6219d735ac504697404e0ed36613a14074e3a19e735297195877798f778d337a openrc-conf.patch
+89f738f77732500bc2aff3086b891c1e537510e756baf0ac92c1462c2ef7e47cdc62536d90174e6b6c80637199e463609723f9915999c0b95ce878ebbed739a1 endian.patch
+b173f11e898bf2d882b7d833f99c863dc1fd14ee6f55484c29dafd067fa1af27ab85864df674c0a042547c5c132b80123d159f10e7bdab316a0292461b91fafd no-persist_read_test.patch"
diff --git a/user/mosquitto/endian.patch b/user/mosquitto/endian.patch
new file mode 100644
index 000000000..2efd1111d
--- /dev/null
+++ b/user/mosquitto/endian.patch
@@ -0,0 +1,169 @@
+From 165005742c1c6a5b0b6d037c9e83cbe4a18a3092 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Sun, 29 May 2022 03:37:26 -0500
+Subject: [PATCH] persist: Fix ID storage on big-endian systems
+
+Signed-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com>
+---
+ src/persist_read.c | 3 ++-
+ src/persist_read_v234.c | 5 ++++-
+ src/persist_read_v5.c | 4 ++++
+ src/persist_write.c | 4 ++--
+ src/persist_write_v5.c | 4 ++++
+ 5 files changed, 16 insertions(+), 4 deletions(-)
+
+diff --git a/src/persist_read.c b/src/persist_read.c
+index 5e7be454..e2b4ecb3 100644
+--- a/src/persist_read.c
++++ b/src/persist_read.c
+@@ -24,6 +24,7 @@ Contributors:
+ #include <arpa/inet.h>
+ #endif
+ #include <assert.h>
++#include <endian.h>
+ #include <errno.h>
+ #include <fcntl.h>
+ #include <stdio.h>
+@@ -480,7 +481,7 @@ int persist__restore(void)
+ fclose(fptr);
+ return 1;
+ }
+- db.last_db_id = cfg_chunk.last_db_id;
++ db.last_db_id = le64toh(cfg_chunk.last_db_id);
+ break;
+
+ case DB_CHUNK_MSG_STORE:
+diff --git a/src/persist_read_v234.c b/src/persist_read_v234.c
+index 7460c309..701d88d9 100644
+--- a/src/persist_read_v234.c
++++ b/src/persist_read_v234.c
+@@ -24,6 +24,7 @@ Contributors:
+ #include <arpa/inet.h>
+ #endif
+ #include <assert.h>
++#include <endian.h>
+ #include <errno.h>
+ #include <fcntl.h>
+ #include <stdio.h>
+@@ -108,6 +109,7 @@ int persist__chunk_client_msg_read_v234(FILE *db_fptr, struct P_client_msg *chun
+ }
+
+ read_e(db_fptr, &chunk->F.store_id, sizeof(dbid_t));
++ chunk->F.store_id = le64toh(chunk->F.store_id);
+
+ read_e(db_fptr, &i16temp, sizeof(uint16_t));
+ chunk->F.mid = ntohs(i16temp);
+@@ -137,6 +139,7 @@ int persist__chunk_msg_store_read_v234(FILE *db_fptr, struct P_msg_store *chunk,
+ char *err;
+
+ read_e(db_fptr, &chunk->F.store_id, sizeof(dbid_t));
++ chunk->F.store_id = le64toh(chunk->F.store_id);
+
+ rc = persist__read_string(db_fptr, &chunk->source.id);
+ if(rc){
+@@ -205,7 +208,7 @@ int persist__chunk_retain_read_v234(FILE *db_fptr, struct P_retain *chunk)
+ log__printf(NULL, MOSQ_LOG_ERR, "Error: %s.", err);
+ return 1;
+ }
+- chunk->F.store_id = i64temp;
++ chunk->F.store_id = le64toh(i64temp);
+
+ return MOSQ_ERR_SUCCESS;
+ }
+diff --git a/src/persist_read_v5.c b/src/persist_read_v5.c
+index abc9a580..12d3e801 100644
+--- a/src/persist_read_v5.c
++++ b/src/persist_read_v5.c
+@@ -24,6 +24,7 @@ Contributors:
+ #include <arpa/inet.h>
+ #endif
+ #include <assert.h>
++#include <endian.h>
+ #include <errno.h>
+ #include <fcntl.h>
+ #include <stdio.h>
+@@ -116,6 +117,7 @@ int persist__chunk_client_msg_read_v56(FILE *db_fptr, struct P_client_msg *chunk
+ read_e(db_fptr, &chunk->F, sizeof(struct PF_client_msg));
+ chunk->F.mid = ntohs(chunk->F.mid);
+ chunk->F.id_len = ntohs(chunk->F.id_len);
++ chunk->F.store_id = le64toh(chunk->F.store_id);
+
+ length -= (uint32_t)(sizeof(struct PF_client_msg) + chunk->F.id_len);
+
+@@ -165,6 +167,7 @@ int persist__chunk_msg_store_read_v56(FILE *db_fptr, struct P_msg_store *chunk,
+ chunk->F.source_username_len = ntohs(chunk->F.source_username_len);
+ chunk->F.topic_len = ntohs(chunk->F.topic_len);
+ chunk->F.source_port = ntohs(chunk->F.source_port);
++ chunk->F.store_id = le64toh(chunk->F.store_id);
+
+ length -= (uint32_t)(sizeof(struct PF_msg_store) + chunk->F.payloadlen + chunk->F.source_id_len + chunk->F.source_username_len + chunk->F.topic_len);
+
+@@ -246,6 +249,7 @@ int persist__chunk_retain_read_v56(FILE *db_fptr, struct P_retain *chunk)
+ log__printf(NULL, MOSQ_LOG_ERR, "Error: %s.", strerror(errno));
+ return 1;
+ }
++ chunk->F.store_id = le64toh(chunk->F.store_id);
+ return MOSQ_ERR_SUCCESS;
+ }
+
+diff --git a/src/persist_write.c b/src/persist_write.c
+index ccfbc29c..93a32639 100644
+--- a/src/persist_write.c
++++ b/src/persist_write.c
+@@ -273,7 +273,7 @@ static int persist__retain_save(FILE *db_fptr, struct mosquitto__retainhier *nod
+
+ if(node->retained && strncmp(node->retained->topic, "$SYS", 4)){
+ /* Don't save $SYS messages. */
+- retain_chunk.F.store_id = node->retained->db_id;
++ retain_chunk.F.store_id = htole64(node->retained->db_id);
+ rc = persist__chunk_retain_write_v6(db_fptr, &retain_chunk);
+ if(rc){
+ return rc;
+@@ -367,7 +367,7 @@ int persist__backup(bool shutdown)
+ write_e(db_fptr, &db_version_w, sizeof(uint32_t));
+
+ memset(&cfg_chunk, 0, sizeof(struct PF_cfg));
+- cfg_chunk.last_db_id = db.last_db_id;
++ cfg_chunk.last_db_id = htole64(db.last_db_id);
+ cfg_chunk.shutdown = shutdown;
+ cfg_chunk.dbid_size = sizeof(dbid_t);
+ if(persist__chunk_cfg_write_v6(db_fptr, &cfg_chunk)){
+diff --git a/src/persist_write_v5.c b/src/persist_write_v5.c
+index 8c9f6c34..b9fb5a8e 100644
+--- a/src/persist_write_v5.c
++++ b/src/persist_write_v5.c
+@@ -24,6 +24,7 @@ Contributors:
+ #include <arpa/inet.h>
+ #endif
+ #include <assert.h>
++#include <endian.h>
+ #include <errno.h>
+ #include <fcntl.h>
+ #include <stdio.h>
+@@ -100,6 +101,7 @@ int persist__chunk_client_msg_write_v6(FILE *db_fptr, struct P_client_msg *chunk
+
+ chunk->F.mid = htons(chunk->F.mid);
+ chunk->F.id_len = htons(chunk->F.id_len);
++ chunk->F.store_id = htole64(chunk->F.store_id);
+
+ header.chunk = htonl(DB_CHUNK_CLIENT_MSG);
+ header.length = htonl((uint32_t)sizeof(struct PF_client_msg) + id_len + proplen);
+@@ -149,6 +151,7 @@ int persist__chunk_message_store_write_v6(FILE *db_fptr, struct P_msg_store *chu
+ proplen += property__get_remaining_length(chunk->properties);
+ }
+
++ chunk->F.store_id = htole64(chunk->F.store_id);
+ chunk->F.payloadlen = htonl(chunk->F.payloadlen);
+ chunk->F.source_mid = htons(chunk->F.source_mid);
+ chunk->F.source_id_len = htons(chunk->F.source_id_len);
+@@ -206,6 +209,7 @@ int persist__chunk_retain_write_v6(FILE *db_fptr, struct P_retain *chunk)
+
+ header.chunk = htonl(DB_CHUNK_RETAIN);
+ header.length = htonl((uint32_t)sizeof(struct PF_retain));
++ chunk->F.store_id = htole64(chunk->F.store_id);
+
+ write_e(db_fptr, &header, sizeof(struct PF_header));
+ write_e(db_fptr, &chunk->F, sizeof(struct PF_retain));
+--
+2.35.1
+
diff --git a/user/mosquitto/mosquitto.initd b/user/mosquitto/mosquitto.initd
new file mode 100644
index 000000000..818931213
--- /dev/null
+++ b/user/mosquitto/mosquitto.initd
@@ -0,0 +1,36 @@
+#!/sbin/openrc-run
+MOSQUITTO_CFG="${MOSQUITTO_CFG:-/etc/mosquitto/${RC_SVCNAME}.conf}"
+
+command="/usr/bin/mosquitto"
+command_args="-c '${MOSQUITTO_CFG}' $command_args"
+command_args_background="--daemon"
+pidfile="$(awk '$1 == "pid_file" {print $2}' "${MOSQUITTO_CFG}" || true)"
+
+extra_started_commands="reload"
+description_reload="Reload configuration"
+
+start_pre() {
+ if ! [ -e "$MOSQUITTO_CFG" ]; then
+ eerror "$MOSQUITTO_CFG does not exist"
+ return 1
+ fi
+
+ if [ -z "$pidfile" ]; then
+ eerror "${MOSQUITTO_CFG} is missing the pid_file option"
+ return 1
+ fi
+
+ MOSQUITTO_LOG="$(awk '$1 " " $2 == "log_dest file" {print $3}' "${MOSQUITTO_CFG}")"
+ if [ -n "$MOSQUITTO_LOG" ]; then
+ MOSQUITTO_USER="$(awk '$1 == "user" {print $2}' "${MOSQUITTO_CFG}")"
+ MOSQUITTO_USER="${MOSQUITTO_USER:-mosquitto}"
+ checkpath -fm 660 -o "${MOSQUITTO_USER}" \
+ "${MOSQUITTO_LOG}" || return 1
+ fi
+}
+
+reload() {
+ ebegin "Reloading ${RC_SVCNAME}"
+ start-stop-daemon --signal HUP --pidfile "${pidfile}"
+ eend $?
+}
diff --git a/user/mosquitto/mosquitto.pre-install b/user/mosquitto/mosquitto.pre-install
new file mode 100644
index 000000000..ac36da04c
--- /dev/null
+++ b/user/mosquitto/mosquitto.pre-install
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+groupadd -r mosquitto 2>/dev/null
+useradd -c mosquitto -s /sbin/nologin -g mosquitto \
+ -m -d /var/empty -k /etc/skel -r mosquitto 2>/dev/null
+
+exit 0
diff --git a/user/mosquitto/no-persist_read_test.patch b/user/mosquitto/no-persist_read_test.patch
new file mode 100644
index 000000000..6227e0487
--- /dev/null
+++ b/user/mosquitto/no-persist_read_test.patch
@@ -0,0 +1,15 @@
+This doesn't pass on 32-bit platforms as noted upstream at:
+https://github.com/eclipse/mosquitto/issues/2550
+
+We disable these tests for now.
+
+--- mosquitto-2.0.14/test/unit/Makefile.old 2021-11-16 18:28:35.000000000 -0600
++++ mosquitto-2.0.14/test/unit/Makefile 2022-11-22 00:37:32.237485238 -0600
+@@ -174,7 +174,5 @@
+
+ test-broker : build
+ ./bridge_topic_test
+- ./persist_read_test
+- ./persist_write_test
+ ./subs_test
+
diff --git a/user/mosquitto/openrc-conf.patch b/user/mosquitto/openrc-conf.patch
new file mode 100644
index 000000000..d1c5ee04b
--- /dev/null
+++ b/user/mosquitto/openrc-conf.patch
@@ -0,0 +1,20 @@
+--- mosquitto-1.6.4/mosquitto.conf 2019-08-01 14:50:01.000000000 -0500
++++ mosquitto-1.6.4/mosquitto.conf 2019-08-27 18:16:52.290542736 -0500
+@@ -158,7 +158,7 @@
+ # This should be set to /var/run/mosquitto.pid if mosquitto is
+ # being run automatically on boot with an init script and
+ # start-stop-daemon or similar.
+-#pid_file
++pid_file /var/run/mosquitto.pid
+
+ # Set to true to queue messages with QoS 0 when a persistent client is
+ # disconnected. These messages are included in the limit imposed by
+@@ -585,7 +585,7 @@
+ # Note that if the broker is running as a Windows service it will default to
+ # "log_dest none" and neither stdout nor stderr logging is available.
+ # Use "log_dest none" if you wish to disable logging.
+-#log_dest stderr
++log_dest file /var/log/mosquitto.log
+
+ # Types of messages to log. Use multiple log_type lines for logging
+ # multiple types of messages.
diff --git a/user/mousepad/APKBUILD b/user/mousepad/APKBUILD
index 7b848ad28..a42d7d874 100644
--- a/user/mousepad/APKBUILD
+++ b/user/mousepad/APKBUILD
@@ -1,20 +1,20 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mousepad
-pkgver=0.4.1
+pkgver=0.6.3
pkgrel=0
pkgdesc="Simple text editor for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
-makedepends="intltool glib-dev gtk+3.0-dev gtksourceview-3.0-dev dbus-glib-dev"
+depends=""
+makedepends="dbus-glib-dev glib-dev gspell-dev gtk+3.0-dev gtksourceview4-dev
+ intltool libxfce4ui-dev polkit-dev xfconf-dev"
subpackages="$pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/apps/mousepad/0.4/mousepad-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/apps/mousepad/${pkgver%.*}/mousepad-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -25,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="2ffbb4245a3344437bd41f9f28cc066ae45062f6b6d169aa274e933f033c434f0b10845ccf42ab846dcad25ae7cee36ea6619bfb6889e8cd41c994be87b77be8 mousepad-0.4.1.tar.bz2"
+sha512sums="a47e9c0d5b039444ee455e80d0ab4642d5c29d6e5632ec4fccfcef061b4bf40a1709ea73b092b02e915e1796d1593ede68e59b9fe373e127302d34f82c9beae3 mousepad-0.6.3.tar.bz2"
diff --git a/user/mozjs/0003-build-Fix-library-install-name-on-macOS.patch b/user/mozjs/0003-build-Fix-library-install-name-on-macOS.patch
deleted file mode 100644
index 7d66d5aac..000000000
--- a/user/mozjs/0003-build-Fix-library-install-name-on-macOS.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From fd8fc6e7b8760c961be7a3b9c6559d15f5ad008f Mon Sep 17 00:00:00 2001
-From: Philip Chimento <philip.chimento@gmail.com>
-Date: Wed, 5 Jul 2017 22:44:18 -0700
-Subject: [PATCH 03/10] build: Fix library install name on macOS
-
-In order for the library to work under JHbuild, it has to have an install
-name with an absolute path, since it will be installed in a shared
-location.
-
-https://bugzilla.mozilla.org/show_bug.cgi?id=1379536
----
- config/rules.mk | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/config/rules.mk b/config/rules.mk
-index a21128cf..d88bada3 100644
---- a/config/rules.mk
-+++ b/config/rules.mk
-@@ -352,7 +352,7 @@ else
- ifdef MOZ_IOS
- _LOADER_PATH := @rpath
- else
--_LOADER_PATH := @executable_path
-+_LOADER_PATH := $(abspath $(prefix))/lib
- endif
- EXTRA_DSO_LDOPTS += -dynamiclib -install_name $(_LOADER_PATH)/$(SHARED_LIBRARY) -compatibility_version 1 -current_version 1 -single_module
- endif
---
-2.13.0
-
diff --git a/user/mozjs/0004-build-Copy-headers-on-install-instead-of-symlinking.patch b/user/mozjs/0004-build-Copy-headers-on-install-instead-of-symlinking.patch
deleted file mode 100644
index cc55486b9..000000000
--- a/user/mozjs/0004-build-Copy-headers-on-install-instead-of-symlinking.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From 45919a0f627c7adde9f9676228448b4c53b291e5 Mon Sep 17 00:00:00 2001
-From: Rico Tzschichholz <ricotz@ubuntu.com>
-Date: Wed, 5 Jul 2017 22:45:59 -0700
-Subject: [PATCH 04/10] build: Copy headers on install instead of symlinking
-
-Patch ported forward to mozjs52 by Philip Chimento
-<philip.chimento@gmail.com>.
-
-https://bugzilla.mozilla.org/show_bug.cgi?id=1379537
----
- python/mozbuild/mozbuild/backend/recursivemake.py | 6 +++---
- 1 file changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/python/mozbuild/mozbuild/backend/recursivemake.py b/python/mozbuild/mozbuild/backend/recursivemake.py
-index 132dcf94..33d489a6 100644
---- a/python/mozbuild/mozbuild/backend/recursivemake.py
-+++ b/python/mozbuild/mozbuild/backend/recursivemake.py
-@@ -1307,11 +1307,11 @@ class RecursiveMakeBackend(CommonBackend):
- raise Exception("Wildcards are only supported in the filename part of "
- "srcdir-relative or absolute paths.")
-
-- install_manifest.add_pattern_symlink(basepath, wild, path)
-+ install_manifest.add_pattern_copy(basepath, wild, path)
- else:
-- install_manifest.add_pattern_symlink(f.srcdir, f, path)
-+ install_manifest.add_pattern_copy(f.srcdir, f, path)
- else:
-- install_manifest.add_symlink(f.full_path, dest)
-+ install_manifest.add_copy(f.full_path, dest)
- else:
- install_manifest.add_optional_exists(dest)
- backend_file.write('%s_FILES += %s\n' % (
---
-2.13.0
-
diff --git a/user/mozjs/0006-Disable-MOZ_GLUE_IN_PROGRAM-in-stand-alone-builds-on.patch b/user/mozjs/0006-Disable-MOZ_GLUE_IN_PROGRAM-in-stand-alone-builds-on.patch
deleted file mode 100644
index dd0e40115..000000000
--- a/user/mozjs/0006-Disable-MOZ_GLUE_IN_PROGRAM-in-stand-alone-builds-on.patch
+++ /dev/null
@@ -1,68 +0,0 @@
-From ed8471fe677138b71477f25a6ee2732a80c1c5f7 Mon Sep 17 00:00:00 2001
-From: Till Schneidereit <till@tillschneidereit.net>
-Date: Thu, 1 Oct 2015 12:59:09 +0200
-Subject: [PATCH 06/10] Disable MOZ_GLUE_IN_PROGRAM in stand-alone builds on
- all platforms
-
-Otherwise, build fails not being able to find HashBytes.
-
-Patch ported forward to mozjs52 by Philip Chimento
-<philip.chimento@gmail.com>.
-
-https://bugzilla.mozilla.org/show_bug.cgi?id=1176787
----
- js/src/old-configure.in | 23 ++++++++++++++---------
- mozglue/build/moz.build | 2 +-
- 2 files changed, 15 insertions(+), 10 deletions(-)
-
-diff --git a/js/src/old-configure.in b/js/src/old-configure.in
-index c40eb962..336e1aa7 100644
---- a/js/src/old-configure.in
-+++ b/js/src/old-configure.in
-@@ -1620,16 +1620,21 @@ dnl ========================================================
- dnl = Enable jemalloc
- dnl ========================================================
-
--case "${OS_TARGET}" in
--Android|WINNT|Darwin)
-+dnl In stand-alone builds we always only want to link executables against mozglue.
-+if test "$JS_STANDALONE"; then
- MOZ_GLUE_IN_PROGRAM=
-- ;;
--*)
-- dnl On !Android !Windows !OSX, we only want to link executables against mozglue
-- MOZ_GLUE_IN_PROGRAM=1
-- AC_DEFINE(MOZ_GLUE_IN_PROGRAM)
-- ;;
--esac
-+else
-+ case "${OS_TARGET}" in
-+ Android|WINNT|Darwin)
-+ MOZ_GLUE_IN_PROGRAM=
-+ ;;
-+ *)
-+ dnl On !Android !Windows !OSX, we only want to link executables against mozglue
-+ MOZ_GLUE_IN_PROGRAM=1
-+ AC_DEFINE(MOZ_GLUE_IN_PROGRAM)
-+ ;;
-+ esac
-+fi
-
- if test "$MOZ_MEMORY"; then
- if test "x$MOZ_DEBUG" = "x1"; then
-diff --git a/mozglue/build/moz.build b/mozglue/build/moz.build
-index d2897477..e3be5a2b 100644
---- a/mozglue/build/moz.build
-+++ b/mozglue/build/moz.build
-@@ -6,7 +6,7 @@
-
- # Build mozglue as a shared lib on Windows, OSX and Android.
- # If this is ever changed, update MOZ_SHARED_MOZGLUE in browser/installer/Makefile.in
--if CONFIG['OS_TARGET'] in ('WINNT', 'Darwin', 'Android'):
-+if CONFIG['OS_TARGET'] in ('WINNT', 'Darwin', 'Android') and not CONFIG['JS_STANDALONE']:
- SharedLibrary('mozglue')
- else:
- Library('mozglue')
---
-2.13.0
-
diff --git a/user/mozjs/0008-tests-Skip-on-all-64-bit-archs.patch b/user/mozjs/0008-tests-Skip-on-all-64-bit-archs.patch
deleted file mode 100644
index 9f41e0fd6..000000000
--- a/user/mozjs/0008-tests-Skip-on-all-64-bit-archs.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-From 6a5ffe6cc8c6c2b7cf18c1778279e993afbb660a Mon Sep 17 00:00:00 2001
-From: Marcin Juszkiewicz <mjuszkiewicz@redhat.com>
-Date: Wed, 5 Jul 2017 21:05:27 -0700
-Subject: [PATCH 08/10] tests: Skip on all 64-bit archs
-
-Tests that are skipped on x86_64 should be skipped on all 64-bit
-architectures.
-
-https://bugzilla.mozilla.org/show_bug.cgi?id=1357593
-
-Taken from Fedora:
-http://pkgs.fedoraproject.org/cgit/rpms/mozjs38.git/tree/fix-64bit-archs.patch
----
- js/src/tests/js1_5/Array/regress-157652.js | 2 +-
- js/src/tests/js1_5/Array/regress-330812.js | 2 +-
- js/src/tests/js1_5/Regress/regress-422348.js | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/js/src/tests/js1_5/Array/regress-157652.js b/js/src/tests/js1_5/Array/regress-157652.js
-index 0bdba8fd..9d77802c 100644
---- a/js/src/tests/js1_5/Array/regress-157652.js
-+++ b/js/src/tests/js1_5/Array/regress-157652.js
-@@ -1,4 +1,4 @@
--// |reftest| skip-if(xulRuntime.XPCOMABI.match(/x86_64/)||Android) -- No test results
-+// |reftest| skip-if(xulRuntime.XPCOMABI.match(/x86_64|aarch64|ppc64|ppc64le|s390x/)||Android) -- No test results
- /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
-diff --git a/js/src/tests/js1_5/Array/regress-330812.js b/js/src/tests/js1_5/Array/regress-330812.js
-index 3a392976..c48f4c88 100644
---- a/js/src/tests/js1_5/Array/regress-330812.js
-+++ b/js/src/tests/js1_5/Array/regress-330812.js
-@@ -1,4 +1,4 @@
--// |reftest| skip-if(xulRuntime.XPCOMABI.match(/x86_64/)||Android) -- No test results
-+// |reftest| skip-if(xulRuntime.XPCOMABI.match(/x86_64|aarch64|ppc64|ppc64le|s390x/)||Android) -- No test results
- /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
-diff --git a/js/src/tests/js1_5/Regress/regress-422348.js b/js/src/tests/js1_5/Regress/regress-422348.js
-index f2443c28..7ae83f4a 100644
---- a/js/src/tests/js1_5/Regress/regress-422348.js
-+++ b/js/src/tests/js1_5/Regress/regress-422348.js
-@@ -1,4 +1,4 @@
--// |reftest| skip-if(xulRuntime.XPCOMABI.match(/x86_64/)) -- On 64-bit, takes forever rather than throwing
-+// |reftest| skip-if(xulRuntime.XPCOMABI.match(/x86_64|aarch64|ppc64|ppc64le|s390x/)) -- On 64-bit, takes forever rather than throwing
- /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
---
-2.13.0
-
diff --git a/user/mozjs/0009-build-Include-configure-script-be-nicer-about-option.patch b/user/mozjs/0009-build-Include-configure-script-be-nicer-about-option.patch
deleted file mode 100644
index 1a27b9ab5..000000000
--- a/user/mozjs/0009-build-Include-configure-script-be-nicer-about-option.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 83374895c64a673acfc7a1898f134a04c1a45d15 Mon Sep 17 00:00:00 2001
-From: Philip Chimento <philip.chimento@gmail.com>
-Date: Wed, 5 Jul 2017 22:57:09 -0700
-Subject: [PATCH 09/10] build: Include configure script, be nicer about options
-
-A configure script is not included in the SpiderMonkey tarball by
-default. Also, we have to account for JHbuild passing extra unknown
-options like --disable-Werror.
-
-https://bugzilla.mozilla.org/show_bug.cgi?id=1379540
-
-MODIFIED by Ian Stakenvicius, to *not* attempt to overwrite the existing
-js/src/configure that 'make-source-package.sh' apparently adds to the
-tarball.
-
----
- python/mozbuild/mozbuild/configure/__init__.py | 2 +-
- python/mozbuild/mozbuild/configure/options.py | 6 +++++-
- 2 files changed
-
-diff --git a/python/mozbuild/mozbuild/configure/__init__.py b/python/mozbuild/mozbuild/configure/__init__.py
-index 0fe640ca..09b460d3 100644
---- a/python/mozbuild/mozbuild/configure/__init__.py
-+++ b/python/mozbuild/mozbuild/configure/__init__.py
-@@ -356,7 +356,7 @@ class ConfigureSandbox(dict):
- # All options should have been removed (handled) by now.
- for arg in self._helper:
- without_value = arg.split('=', 1)[0]
-- raise InvalidOptionError('Unknown option: %s' % without_value)
-+ print('Ignoring', without_value, ': Unknown option')
-
- # Run the execution queue
- for func, args in self._execution_queue:
-diff --git a/python/mozbuild/mozbuild/configure/options.py b/python/mozbuild/mozbuild/configure/options.py
-index 4310c862..15bfe425 100644
---- a/python/mozbuild/mozbuild/configure/options.py
-+++ b/python/mozbuild/mozbuild/configure/options.py
-@@ -402,7 +402,11 @@ class CommandLineHelper(object):
-
- def add(self, arg, origin='command-line', args=None):
- assert origin != 'default'
-- prefix, name, values = Option.split_option(arg)
-+ try:
-+ prefix, name, values = Option.split_option(arg)
-+ except InvalidOptionError as e:
-+ print('Ignoring', arg, ':', e)
-+ return
- if args is None:
- args = self._extra_args
- if args is self._extra_args and name in self._extra_args:
---
-2.13.0
-
diff --git a/user/mozjs/APKBUILD b/user/mozjs/APKBUILD
deleted file mode 100644
index e9b3958ac..000000000
--- a/user/mozjs/APKBUILD
+++ /dev/null
@@ -1,75 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=mozjs
-pkgver=52.4.0
-pkgrel=2
-pkgdesc="Standalone JavaScript interpreter from Mozilla"
-url="https://developer.mozilla.org/en-US/docs/Mozilla/Projects/SpiderMonkey"
-arch="all"
-license="NPL-1.1"
-depends=""
-depends_dev="$pkgname=$pkgver-r$pkgrel"
-makedepends="autoconf2.13 icu-dev libffi-dev nspr-dev python3 cmd:which
- zlib-dev"
-subpackages="$pkgname-dev"
-source="https://distfiles.adelielinux.org/source/mozilla/mozjs-$pkgver.tar.bz2
- 0003-build-Fix-library-install-name-on-macOS.patch
- 0004-build-Copy-headers-on-install-instead-of-symlinking.patch
- 0006-Disable-MOZ_GLUE_IN_PROGRAM-in-stand-alone-builds-on.patch
- 0008-tests-Skip-on-all-64-bit-archs.patch
- 0009-build-Include-configure-script-be-nicer-about-option.patch
- arm64.patch
- baseconfig.patch
- dont-fail-tests-without-ion.patch
- python3.patch
- "
-builddir="$srcdir/mozjs-$pkgver"
-
-prepare() {
- cd "$builddir"
- default_prepare
- cd "$builddir"/js/src
- autoconf-2.13 old-configure.in >/dev/null
- autoconf-2.13
-}
-
-build() {
- cd "$builddir"/js/src
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --disable-jemalloc \
- --disable-optimize \
- --enable-ion \
- --enable-tests \
- --with-intl-api \
- --with-system-icu \
- --with-system-nspr
- MOZ_MAKE_FLAGS="$MAKEFLAGS" make
-}
-
-check() {
- cd "$builddir"/js/src
- dist/bin/jsapi-tests
-}
-
-package() {
- cd "$builddir"/js/src
- make DESTDIR="$pkgdir" install
-
- # no real point for 400 MB monster.
- # if someone needs this, we can split it into -dev.
- rm "$pkgdir"/usr/lib/libjs_static.ajs
-}
-
-sha512sums="80e006ed7550b64dad7cf78335dd9f2d34f50ad486439887f0088eb3817242d24cf7c1d9325e2dcd4a01fd5c5f54d710873113b97fd914ccd961fa46a71653fa mozjs-52.4.0.tar.bz2
-8563264274c8b47c41fcce0b23d8d31467c60b4f1e6b37e14a390950f0d4c84be08919e0cf3578367ca1c76633201fc7d182c98a1efb57b17ce176a3e1ed5b0d 0003-build-Fix-library-install-name-on-macOS.patch
-edbec26bff4fb91911b1dafc566d4cf37635e9039a1cbd527543d74765d1c96bcfae71fe4f9a66c6555750f402377db4963e2afe0d6b061f48dbab78717bd177 0004-build-Copy-headers-on-install-instead-of-symlinking.patch
-d9acf4570a073a2151e19ad854e72ff927d050b532f04367bf49fb0c98f8eb544e9f6c455b1411d09a8a3034a2be62e23b7f9080fac9249e4132e85f2245d474 0006-Disable-MOZ_GLUE_IN_PROGRAM-in-stand-alone-builds-on.patch
-a95e91ffa3693ac2ac81eddee2e490b4acfb5ae0381a291b1916afc0d91fb00b95457fde0efe62905025fe425c18d5363c5e6ad1bb121645b29a14f6c76c0489 0008-tests-Skip-on-all-64-bit-archs.patch
-2556f3322c5bc39c1efbbbd19b6843cf69b63a0255e8e3617f58b229e75ac221b6cb57fce15452cd1f25498c66f29f588f38c10c175b82c6fe163faaa7e3e2b0 0009-build-Include-configure-script-be-nicer-about-option.patch
-63806e54fe7530703420fd070a8ef38b46cd185991a6d66dc2c1ec588f2b271883120b8e16d1a898eb6ddb41569d719f857e71f9e16e839962527cee1f47c41e arm64.patch
-22870d6ee8a0a0b4359d78173aef0ade49063bfad495fd40815852684a1cdf17f9f50585e0d693eb712c2a2225ea43c4387cf454f3b9bd39e01899f3936775f1 baseconfig.patch
-6ebaf6fd24f1987020ad0da82cd2ff878e5c27997ac45a571899f492b435d12e32274eac35e2d571775b6f6bdce24f8e7a968088da61329e2cd36dfc762a0156 dont-fail-tests-without-ion.patch
-66a894b4878797438ac1361b892df4df45fe0c990e9540235336116a2dbfcc5d787a3076dca323b8252fb8cb6e39a61819fc0d4ce1491fb9e4d07c912fdf9e4d python3.patch"
diff --git a/user/mozjs/arm64.patch b/user/mozjs/arm64.patch
deleted file mode 100644
index df1c8cc7e..000000000
--- a/user/mozjs/arm64.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-
-# HG changeset patch
-# User Jim Chen <nchen@mozilla.com>
-# Date 1493664360 14400
-# Node ID 042d975f9355f711b058152691a44e458ba252b3
-# Parent fa7165dda22460795afe4ed27ecc57f454a3dfaa
-Bug 1357874 - Add more AArch64 support to JS code; r=luke
-
-* Fix a parentheses warning when compiling testGCAllocator.cpp.
-
-* Define GETRANDOM_NR macro for AArch64.
-
-* Disable Android workarounds in jsnativestack.cpp and
- WasmSignalHandlers.cpp for AArch64, because AArch64 is only supported
- on API 21+, in which case those workarounds don't apply.
-
-* Enable trace logging in TraceLogging.cpp.
-
-diff --git a/js/src/jsapi-tests/testGCAllocator.cpp b/js/src/jsapi-tests/testGCAllocator.cpp
---- a/js/src/jsapi-tests/testGCAllocator.cpp
-+++ b/js/src/jsapi-tests/testGCAllocator.cpp
-@@ -310,15 +310,15 @@ void unmapPages(void* p, size_t size) {
- #elif defined(XP_UNIX)
-
- void*
- mapMemoryAt(void* desired, size_t length)
- {
- #if defined(__ia64__) || (defined(__sparc64__) && defined(__NetBSD__)) || defined(__aarch64__)
-- MOZ_RELEASE_ASSERT(0xffff800000000000ULL & (uintptr_t(desired) + length - 1) == 0);
-+ MOZ_RELEASE_ASSERT((0xffff800000000000ULL & (uintptr_t(desired) + length - 1)) == 0);
- #endif
- void* region = mmap(desired, length, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
- if (region == MAP_FAILED)
- return nullptr;
- if (region != desired) {
- if (munmap(region, length))
- MOZ_RELEASE_ASSERT(errno == ENOMEM);
- return nullptr;
-diff --git a/js/src/vm/TraceLogging.cpp b/js/src/vm/TraceLogging.cpp
---- a/js/src/vm/TraceLogging.cpp
-+++ b/js/src/vm/TraceLogging.cpp
-@@ -56,17 +56,17 @@ rdtsc(void)
- );
- result = upper;
- result = result<<32;
- result = result|lower;
-
- return result;
-
- }
--#elif defined(__arm__)
-+#elif defined(__arm__) || defined(__aarch64__)
-
- #include <sys/time.h>
-
- static __inline__ uint64_t
- rdtsc(void)
- {
- struct timeval tv;
- gettimeofday(&tv, NULL);
diff --git a/user/mozjs/baseconfig.patch b/user/mozjs/baseconfig.patch
deleted file mode 100644
index ee52728fa..000000000
--- a/user/mozjs/baseconfig.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-Fix various paths to include MOZ_APP_VERSION
-
-This has been committed upstream but was not included in
-the 52.4.0 sources that spidermonkey was rolled from.
-
---- a/config/baseconfig.mk 2017-10-03 14:00:45.000000000 -0400
-+++ b/config/baseconfig.mk 2017-10-03 16:36:10.857663794 -0400
-@@ -2,10 +2,10 @@
- # directly in python/mozbuild/mozbuild/base.py for gmake validation.
- # We thus use INCLUDED_AUTOCONF_MK to enable/disable some parts depending
- # whether a normal build is happening or whether the check is running.
--includedir := $(includedir)/$(MOZ_APP_NAME)
--idldir = $(includedir)/idl/$(MOZ_APP_NAME)
--installdir = $(libdir)/$(MOZ_APP_NAME)
--sdkdir = $(libdir)/$(MOZ_APP_NAME)
-+includedir := $(includedir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
-+idldir = $(includedir)/idl/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
-+installdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
-+sdkdir = $(libdir)/$(MOZ_APP_NAME)-$(MOZ_APP_VERSION)
- ifeq (.,$(DEPTH))
- DIST = dist
- else
diff --git a/user/mozjs/dont-fail-tests-without-ion.patch b/user/mozjs/dont-fail-tests-without-ion.patch
deleted file mode 100644
index 569947cdc..000000000
--- a/user/mozjs/dont-fail-tests-without-ion.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-
-# HG changeset patch
-# User Steve Fink <sfink@mozilla.com>
-# Date 1519362707 28800
-# Node ID 7b78c4aa2d589e088519b4f76bddf8ded33283a6
-# Parent 9b8b888e1ce64b1a607158681aecb959721d1326
-Bug 1426006 - Do not expect ion scripts when ion is unavailable. r=bbouvier, a=RyanVM
-
-diff --git a/js/src/jsapi-tests/testPreserveJitCode.cpp b/js/src/jsapi-tests/testPreserveJitCode.cpp
---- a/js/src/jsapi-tests/testPreserveJitCode.cpp
-+++ b/js/src/jsapi-tests/testPreserveJitCode.cpp
-@@ -38,24 +38,20 @@ testPreserveJitCode(bool preserveJitCode
- cx->options().setBaseline(true);
- cx->options().setIon(true);
- cx->setOffthreadIonCompilationEnabled(false);
-
- RootedObject global(cx, createTestGlobal(preserveJitCode));
- CHECK(global);
- JSAutoCompartment ac(cx, global);
-
--#ifdef JS_CODEGEN_ARM64
-- // The ARM64 Ion JIT is not yet enabled, so this test will fail with
-- // countIonScripts(global) == 0. Once Ion is enabled for ARM64, this test
-- // should be passing again, and this code can be deleted.
-- // Bug 1208526 - ARM64: Reenable jsapi-tests/testPreserveJitCode once Ion is enabled
-+ // The Ion JIT may be unavailable due to --disable-ion or lack of support
-+ // for this platform.
- if (!js::jit::IsIonEnabled(cx))
- knownFail = true;
--#endif
-
- CHECK_EQUAL(countIonScripts(global), 0u);
-
- const char* source =
- "var i = 0;\n"
- "var sum = 0;\n"
- "while (i < 10) {\n"
- " sum += i;\n"
-
diff --git a/user/mozjs/python3.patch b/user/mozjs/python3.patch
deleted file mode 100644
index 2ff9dcfa6..000000000
--- a/user/mozjs/python3.patch
+++ /dev/null
@@ -1,9883 +0,0 @@
---- mozjs-52.4.0/python/mozbuild/dumbmake/dumbmake.py (original)
-+++ mozjs-52.4.0/python/mozbuild/dumbmake/dumbmake.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- from collections import OrderedDict
- from itertools import groupby
-@@ -36,7 +36,7 @@
- deps = {}
-
- for i, (indent, target) in enumerate(pairs):
-- if not deps.has_key(target):
-+ if target not in deps:
- deps[target] = []
-
- for j in range(i+1, len(pairs)):
-@@ -68,7 +68,7 @@
- del all_targets[dependency]
- all_targets[dependency] = True
-
-- return all_targets.keys()
-+ return list(all_targets.keys())
-
- def get_components(path):
- """Take a path and return all the components of the path."""
-@@ -114,7 +114,7 @@
- make_dirs[make_dir] = True
-
- all_components = []
-- for make_dir in make_dirs.iterkeys():
-+ for make_dir in make_dirs.keys():
- all_components.extend(get_components(make_dir))
-
- for i in all_dependencies(*all_components, dependency_map=dependency_map):
---- mozjs-52.4.0/python/mozbuild/dumbmake/test/test_dumbmake.py (original)
-+++ mozjs-52.4.0/python/mozbuild/dumbmake/test/test_dumbmake.py (refactored)
-@@ -1,7 +1,7 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this file,
- # You can obtain one at http://mozilla.org/MPL/2.0/.
--from __future__ import unicode_literals
-+
-
- import unittest
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/android_version_code.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/android_version_code.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function
-+
-
- import argparse
- import math
---- mozjs-52.4.0/python/mozbuild/mozbuild/artifacts.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/artifacts.py (refactored)
-@@ -40,7 +40,7 @@
- '''
-
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import collections
- import functools
-@@ -57,7 +57,7 @@
- import subprocess
- import tarfile
- import tempfile
--import urlparse
-+import urllib.parse
- import zipfile
-
- import pylru
-@@ -183,7 +183,7 @@
-
- with JarWriter(file=processed_filename, optimize=False, compress_level=5) as writer:
- reader = JarReader(filename)
-- for filename, entry in reader.entries.iteritems():
-+ for filename, entry in reader.entries.items():
- for pattern, (src_prefix, dest_prefix) in self.test_artifact_patterns:
- if not mozpath.match(filename, pattern):
- continue
-@@ -552,7 +552,7 @@
-
- def print_cache(self):
- with self:
-- for item in self._cache.items():
-+ for item in list(self._cache.items()):
- self.log(logging.INFO, 'artifact',
- {'item': item},
- '{item}')
-@@ -565,7 +565,7 @@
- # We use the persisted LRU caches to our advantage. The first item is
- # most recent.
- with self:
-- item = next(self._cache.items(), None)
-+ item = next(list(self._cache.items()), None)
- if item is not None:
- (name, args, sorted_kwargs), result = item
- self.print_last_item(args, sorted_kwargs, result)
-@@ -593,10 +593,10 @@
- 'changeset={changeset}&version=2&tipsonly=1')
- req = requests.get(cset_url_tmpl.format(tree=tree, changeset=revision),
- headers={'Accept': 'application/json'})
-- if req.status_code not in range(200, 300):
-+ if req.status_code not in list(range(200, 300)):
- raise ValueError
- result = req.json()
-- [found_pushid] = result['pushes'].keys()
-+ [found_pushid] = list(result['pushes'].keys())
- return int(found_pushid)
-
- @cachedmethod(operator.attrgetter('_cache'))
-@@ -609,7 +609,7 @@
- headers={'Accept': 'application/json'})
- result = req.json()
- return [
-- p['changesets'][-1] for p in result['pushes'].values()
-+ p['changesets'][-1] for p in list(result['pushes'].values())
- ]
-
- class TaskCache(CacheManager):
-@@ -847,7 +847,7 @@
-
- candidate_pushheads = collections.defaultdict(list)
-
-- for tree, pushid in found_pushids.iteritems():
-+ for tree, pushid in found_pushids.items():
- end = pushid
- start = pushid - NUM_PUSHHEADS_TO_QUERY_PER_PARENT
-
-@@ -1052,7 +1052,7 @@
- """
- if source and os.path.isfile(source):
- return self.install_from_file(source, distdir)
-- elif source and urlparse.urlparse(source).scheme:
-+ elif source and urllib.parse.urlparse(source).scheme:
- return self.install_from_url(source, distdir)
- else:
- if source is None and 'MOZ_ARTIFACT_REVISION' in os.environ:
---- mozjs-52.4.0/python/mozbuild/mozbuild/base.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/base.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import json
- import logging
-@@ -482,7 +482,7 @@
- for flag in flags:
- if flag == '-j':
- try:
-- flag = flags.next()
-+ flag = next(flags)
- except StopIteration:
- break
- try:
---- mozjs-52.4.0/python/mozbuild/mozbuild/config_status.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/config_status.py (refactored)
-@@ -6,7 +6,7 @@
- # drop-in replacement for autoconf 2.13's config.status, with features
- # borrowed from autoconf > 2.5, and additional features.
-
--from __future__ import absolute_import, print_function
-+
-
- import logging
- import os
---- mozjs-52.4.0/python/mozbuild/mozbuild/doctor.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/doctor.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, # You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import os
- import subprocess
-@@ -83,7 +83,7 @@
- valid = False
- while not valid and limit > 0:
- try:
-- choice = strtobool(raw_input(prompt + '[Y/N]\n'))
-+ choice = strtobool(input(prompt + '[Y/N]\n'))
- valid = True
- except ValueError:
- print("ERROR! Please enter a valid option!")
-@@ -103,11 +103,11 @@
- if status == 'SKIPPED':
- continue
- self.results.append(result)
-- print('%s...\t%s\n' % (
-+ print(('%s...\t%s\n' % (
- result.get('desc', ''),
- status
- )
-- ).expandtabs(40)
-+ ).expandtabs(40))
-
- @property
- def platform(self):
-@@ -212,7 +212,7 @@
- fsutil_output = subprocess.check_output(command)
- status = 'GOOD, FIXED'
- desc = 'lastaccess disabled systemwide'
-- except subprocess.CalledProcessError, e:
-+ except subprocess.CalledProcessError as e:
- desc = 'lastaccess enabled systemwide'
- if e.output.find('denied') != -1:
- status = 'BAD, FIX DENIED'
---- mozjs-52.4.0/python/mozbuild/mozbuild/dotproperties.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/dotproperties.py (refactored)
-@@ -5,7 +5,7 @@
- # This file contains utility functions for reading .properties files, like
- # region.properties.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import codecs
- import re
-@@ -14,7 +14,7 @@
- if sys.version_info[0] == 3:
- str_type = str
- else:
-- str_type = basestring
-+ str_type = str
-
- class DotProperties:
- r'''A thin representation of a key=value .properties file.'''
-@@ -52,7 +52,7 @@
- if not prefix.endswith('.'):
- prefix = prefix + '.'
- indexes = []
-- for k, v in self._properties.iteritems():
-+ for k, v in self._properties.items():
- if not k.startswith(prefix):
- continue
- key = k[len(prefix):]
-@@ -73,7 +73,7 @@
- if not prefix.endswith('.'):
- prefix = prefix + '.'
-
-- D = dict((k[len(prefix):], v) for k, v in self._properties.iteritems()
-+ D = dict((k[len(prefix):], v) for k, v in self._properties.items()
- if k.startswith(prefix) and '.' not in k[len(prefix):])
-
- for required_key in required_keys:
---- mozjs-52.4.0/python/mozbuild/mozbuild/html_build_viewer.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/html_build_viewer.py (refactored)
-@@ -4,16 +4,16 @@
-
- # This module contains code for running an HTTP server to view build info.
-
--from __future__ import absolute_import, unicode_literals
-
--import BaseHTTPServer
-+
-+import http.server
- import json
- import os
-
- import requests
-
-
--class HTTPHandler(BaseHTTPServer.BaseHTTPRequestHandler):
-+class HTTPHandler(http.server.BaseHTTPRequestHandler):
- def do_GET(self):
- s = self.server.wrapper
- p = self.path
-@@ -92,7 +92,7 @@
- self.doc_root = doc_root
- self.json_files = {}
-
-- self.server = BaseHTTPServer.HTTPServer((address, port), HTTPHandler)
-+ self.server = http.server.HTTPServer((address, port), HTTPHandler)
- self.server.wrapper = self
- self.do_shutdown = False
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/jar.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/jar.py (refactored)
-@@ -8,7 +8,7 @@
- See the documentation for jar.mn on MDC for further details on the format.
- '''
-
--from __future__ import absolute_import
-+
-
- import sys
- import os
-@@ -17,7 +17,7 @@
- import logging
- from time import localtime
- from MozZipFile import ZipFile
--from cStringIO import StringIO
-+from io import StringIO
- from collections import defaultdict
-
- from mozbuild.preprocessor import Preprocessor
-@@ -302,9 +302,9 @@
- '''updateManifest replaces the % in the chrome registration entries
- with the given chrome base path, and updates the given manifest file.
- '''
-- myregister = dict.fromkeys(map(lambda s: s.replace('%',
-- chromebasepath), register))
-- addEntriesToListFile(manifestPath, myregister.iterkeys())
-+ myregister = dict.fromkeys([s.replace('%',
-+ chromebasepath) for s in register])
-+ addEntriesToListFile(manifestPath, iter(myregister.keys()))
-
- def makeJar(self, infile, jardir):
- '''makeJar is the main entry point to JarMaker.
-@@ -322,7 +322,7 @@
- elif self.relativesrcdir:
- self.localedirs = \
- self.generateLocaleDirs(self.relativesrcdir)
-- if isinstance(infile, basestring):
-+ if isinstance(infile, str):
- logging.info('processing ' + infile)
- self.sourcedirs.append(_normpath(os.path.dirname(infile)))
- pp = self.pp.clone()
-@@ -372,7 +372,7 @@
- jarfilepath = jarfile + '.jar'
- try:
- os.makedirs(os.path.dirname(jarfilepath))
-- except OSError, error:
-+ except OSError as error:
- if error.errno != errno.EEXIST:
- raise
- jf = ZipFile(jarfilepath, 'a', lock=True)
-@@ -514,7 +514,7 @@
- # remove previous link or file
- try:
- os.remove(out)
-- except OSError, e:
-+ except OSError as e:
- if e.errno != errno.ENOENT:
- raise
- return open(out, 'wb')
-@@ -525,7 +525,7 @@
- if not os.path.isdir(outdir):
- try:
- os.makedirs(outdir)
-- except OSError, error:
-+ except OSError as error:
- if error.errno != errno.EEXIST:
- raise
- return out
-@@ -541,7 +541,7 @@
- # remove previous link or file
- try:
- os.remove(out)
-- except OSError, e:
-+ except OSError as e:
- if e.errno != errno.ENOENT:
- raise
- if sys.platform != 'win32':
---- mozjs-52.4.0/python/mozbuild/mozbuild/mach_commands.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/mach_commands.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, # You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import errno
-@@ -136,7 +136,7 @@
- # terminal is a blessings.Terminal.
- self._t = terminal
- self._fh = sys.stdout
-- self.tiers = monitor.tiers.tier_status.viewitems()
-+ self.tiers = monitor.tiers.tier_status.items()
-
- def clear(self):
- """Removes the footer from the current terminal."""
-@@ -802,7 +802,7 @@
- dirpath = None
-
- type_counts = database.type_counts(dirpath)
-- sorted_counts = sorted(type_counts.iteritems(),
-+ sorted_counts = sorted(iter(type_counts.items()),
- key=operator.itemgetter(1))
-
- total = 0
-@@ -957,7 +957,7 @@
- processes[i].run()
-
- exit_code = 0
-- for process in processes.values():
-+ for process in list(processes.values()):
- status = process.wait()
- if status:
- exit_code = status
---- mozjs-52.4.0/python/mozbuild/mozbuild/makeutil.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/makeutil.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import os
- import re
-@@ -66,7 +66,7 @@
- self._list = []
- self._set = set()
-
-- def __nonzero__(self):
-+ def __bool__(self):
- return bool(self._set)
-
- def __iter__(self):
---- mozjs-52.4.0/python/mozbuild/mozbuild/milestone.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/milestone.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import os
---- mozjs-52.4.0/python/mozbuild/mozbuild/mozconfig.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/mozconfig.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import filecmp
- import os
-@@ -306,7 +306,7 @@
-
- # Environment variables also appear as shell variables, but that's
- # uninteresting duplication of information. Filter them out.
-- filt = lambda x, y: {k: v for k, v in x.items() if k not in y}
-+ filt = lambda x, y: {k: v for k, v in list(x.items()) if k not in y}
- result['vars'] = diff_vars(
- filt(parsed['vars_before'], parsed['env_before']),
- filt(parsed['vars_after'], parsed['env_after'])
---- mozjs-52.4.0/python/mozbuild/mozbuild/mozinfo.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/mozinfo.py (refactored)
-@@ -5,7 +5,7 @@
- # This module produces a JSON file that provides basic build info and
- # configuration metadata.
-
--from __future__ import absolute_import
-+
-
- import os
- import re
-@@ -154,7 +154,7 @@
- and what keys are produced.
- """
- build_conf = build_dict(config, env)
-- if isinstance(file, basestring):
-+ if isinstance(file, str):
- file = open(file, 'wb')
-
- json.dump(build_conf, file, sort_keys=True, indent=4)
---- mozjs-52.4.0/python/mozbuild/mozbuild/preprocessor.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/preprocessor.py (refactored)
-@@ -27,7 +27,8 @@
- import re
- from optparse import OptionParser
- import errno
--from makeutil import Makefile
-+from .makeutil import Makefile
-+from functools import reduce
-
- # hack around win32 mangling our line endings
- # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65443
-@@ -56,7 +57,7 @@
- self.__ignore_whitespace()
- self.e = self.__get_logical_or()
- if self.content:
-- raise Expression.ParseError, self
-+ raise Expression.ParseError(self)
-
- def __get_logical_or(self):
- """
-@@ -157,7 +158,7 @@
- if word_len:
- rv = Expression.__ASTLeaf('string', self.content[:word_len])
- else:
-- raise Expression.ParseError, self
-+ raise Expression.ParseError(self)
- self.__strip(word_len)
- self.__ignore_whitespace()
- return rv
-@@ -196,7 +197,7 @@
- return left and right
- elif tok[1].value == '||':
- return left or right
-- raise Expression.ParseError, self
-+ raise Expression.ParseError(self)
-
- # Mapping from token types to evaluator functions
- # Apart from (non-)equality, all these can be simple lambda forms.
-@@ -230,7 +231,7 @@
- def __repr__(self):
- return self.value.__repr__()
-
-- class ParseError(StandardError):
-+ class ParseError(Exception):
- """
- Error raised when parsing fails.
- It has two members, offset and content, which give the offset of the
-@@ -278,7 +279,7 @@
- self.context = Context()
- for k,v in {'FILE': '',
- 'LINE': 0,
-- 'DIRECTORY': os.path.abspath('.')}.iteritems():
-+ 'DIRECTORY': os.path.abspath('.')}.items():
- self.context[k] = v
- self.actionLevel = 0
- self.disableLevel = 0
-@@ -292,21 +293,21 @@
- self.cmds = {}
- for cmd, level in {'define': 0,
- 'undef': 0,
-- 'if': sys.maxint,
-- 'ifdef': sys.maxint,
-- 'ifndef': sys.maxint,
-+ 'if': sys.maxsize,
-+ 'ifdef': sys.maxsize,
-+ 'ifndef': sys.maxsize,
- 'else': 1,
- 'elif': 1,
- 'elifdef': 1,
- 'elifndef': 1,
-- 'endif': sys.maxint,
-+ 'endif': sys.maxsize,
- 'expand': 0,
- 'literal': 0,
- 'filter': 0,
- 'unfilter': 0,
- 'include': 0,
- 'includesubst': 0,
-- 'error': 0}.iteritems():
-+ 'error': 0}.items():
- self.cmds[cmd] = (level, getattr(self, 'do_' + cmd))
- self.out = sys.stdout
- self.setMarker(marker)
-@@ -469,7 +470,7 @@
- raise Preprocessor.Error(self, "--depend doesn't work with stdout",
- None)
- try:
-- from makeutil import Makefile
-+ from .makeutil import Makefile
- except:
- raise Preprocessor.Error(self, "--depend requires the "
- "mozbuild.makeutil module", None)
-@@ -684,7 +685,7 @@
- current = dict(self.filters)
- for f in filters:
- current[f] = getattr(self, 'filter_' + f)
-- filterNames = current.keys()
-+ filterNames = list(current.keys())
- filterNames.sort()
- self.filters = [(fn, current[fn]) for fn in filterNames]
- return
-@@ -694,7 +695,7 @@
- for f in filters:
- if f in current:
- del current[f]
-- filterNames = current.keys()
-+ filterNames = list(current.keys())
- filterNames.sort()
- self.filters = [(fn, current[fn]) for fn in filterNames]
- return
-@@ -739,7 +740,7 @@
- args can either be a file name, or a file-like object.
- Files should be opened, and will be closed after processing.
- """
-- isName = type(args) == str or type(args) == unicode
-+ isName = type(args) == str or type(args) == str
- oldCheckLineNumbers = self.checkLineNumbers
- self.checkLineNumbers = False
- if isName:
---- mozjs-52.4.0/python/mozbuild/mozbuild/pythonutil.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/pythonutil.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import os
- import sys
-@@ -11,7 +11,7 @@
- def iter_modules_in_path(*paths):
- paths = [os.path.abspath(os.path.normcase(p)) + os.sep
- for p in paths]
-- for name, module in sys.modules.items():
-+ for name, module in list(sys.modules.items()):
- if not hasattr(module, '__file__'):
- continue
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/shellutil.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/shellutil.py (refactored)
-@@ -15,7 +15,7 @@
- # which matches the pattern and captures it in a named match group.
- # The group names and patterns are given as arguments.
- all_tokens = '|'.join('(?P<%s>%s)' % (name, value)
-- for name, value in tokens.iteritems())
-+ for name, value in tokens.items())
- nonescaped = r'(?<!\\)(?:%s)' % all_tokens
-
- # The final pattern matches either the above pattern, or an escaped
-@@ -96,7 +96,7 @@
- self.cline = self.cline[m.end():]
-
- match = {name: value
-- for name, value in m.groupdict().items() if value}
-+ for name, value in list(m.groupdict().items()) if value}
- if 'quote' in match:
- # " or ' start a quoted string
- if match['quote'] == '"':
-@@ -144,7 +144,7 @@
- self._push(self.cline[:m.start()])
- self.cline = self.cline[m.end():]
- match = {name: value
-- for name, value in m.groupdict().items() if value}
-+ for name, value in list(m.groupdict().items()) if value}
- if 'quote' in match:
- # a double quote ends the quoted string, so go back to
- # unquoted parsing
---- mozjs-52.4.0/python/mozbuild/mozbuild/sphinx.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/sphinx.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import importlib
- import os
---- mozjs-52.4.0/python/mozbuild/mozbuild/testing.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/testing.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
--
--import cPickle as pickle
-+
-+
-+import pickle as pickle
- import os
- import sys
-
-@@ -62,7 +62,7 @@
- if test_defaults:
- with open(test_defaults, 'rb') as fh:
- defaults = pickle.load(fh)
-- for path, tests in test_data.items():
-+ for path, tests in list(test_data.items()):
- for metadata in tests:
- if defaults:
- manifest = metadata['manifest']
-@@ -303,7 +303,7 @@
- WEB_PLATFORM_TESTS_FLAVORS = ('web-platform-tests',)
-
- def all_test_flavors():
-- return ([v[0] for v in TEST_MANIFESTS.values()] +
-+ return ([v[0] for v in list(TEST_MANIFESTS.values())] +
- list(REFTEST_FLAVORS) +
- list(WEB_PLATFORM_TESTS_FLAVORS) +
- ['python'])
-@@ -445,7 +445,7 @@
- only a few tests need to be run.
- """
- flavor_info = {flavor: (root, prefix, install)
-- for (flavor, root, prefix, install) in TEST_MANIFESTS.values()}
-+ for (flavor, root, prefix, install) in list(TEST_MANIFESTS.values())}
- objdir_dest = mozpath.join(topobjdir, tests_root)
-
- converter = SupportFilesConverter()
-@@ -527,7 +527,7 @@
- paths_file = os.path.join(context.config.topsrcdir, "testing",
- "web-platform", "tests", "tools", "localpaths.py")
- _globals = {"__file__": paths_file}
-- execfile(paths_file, _globals)
-+ exec(compile(open(paths_file).read(), paths_file, 'exec'), _globals)
- import manifest as wptmanifest
- finally:
- sys.path = old_path
---- mozjs-52.4.0/python/mozbuild/mozbuild/util.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/util.py (refactored)
-@@ -5,7 +5,7 @@
- # This file contains miscellaneous utility functions that don't belong anywhere
- # in particular.
-
--from __future__ import absolute_import, unicode_literals, print_function
-+
-
- import argparse
- import collections
-@@ -36,7 +36,7 @@
- if sys.version_info[0] == 3:
- str_type = str
- else:
-- str_type = basestring
-+ str_type = str
-
- if sys.platform == 'win32':
- _kernel32 = ctypes.windll.kernel32
-@@ -78,7 +78,7 @@
- return h.hexdigest()
-
-
--class EmptyValue(unicode):
-+class EmptyValue(str):
- """A dummy type that behaves like an empty string and sequence.
-
- This type exists in order to support
-@@ -92,7 +92,7 @@
- class ReadOnlyNamespace(object):
- """A class for objects with immutable attributes set at initialization."""
- def __init__(self, **kwargs):
-- for k, v in kwargs.iteritems():
-+ for k, v in kwargs.items():
- super(ReadOnlyNamespace, self).__setattr__(k, v)
-
- def __delattr__(self, key):
-@@ -152,7 +152,7 @@
- if d and not os.path.exists(path):
- try:
- os.makedirs(d)
-- except OSError, error:
-+ except OSError as error:
- if error.errno != errno.EEXIST:
- raise
-
-@@ -224,7 +224,7 @@
- self.mode = mode
-
- def write(self, buf):
-- if isinstance(buf, unicode):
-+ if isinstance(buf, str):
- buf = buf.encode('utf-8')
- BytesIO.write(self, buf)
-
-@@ -381,7 +381,7 @@
- def __add__(self, other):
- # Allow None and EmptyValue is a special case because it makes undefined
- # variable references in moz.build behave better.
-- other = [] if isinstance(other, (types.NoneType, EmptyValue)) else other
-+ other = [] if isinstance(other, (type(None), EmptyValue)) else other
- if not isinstance(other, list):
- raise ValueError('Only lists can be appended to lists.')
-
-@@ -390,7 +390,7 @@
- return new_list
-
- def __iadd__(self, other):
-- other = [] if isinstance(other, (types.NoneType, EmptyValue)) else other
-+ other = [] if isinstance(other, (type(None), EmptyValue)) else other
- if not isinstance(other, list):
- raise ValueError('Only lists can be appended to lists.')
-
-@@ -542,14 +542,14 @@
- functions below.
- """
- assert isinstance(flags, dict)
-- assert all(isinstance(v, type) for v in flags.values())
-+ assert all(isinstance(v, type) for v in list(flags.values()))
-
- class Flags(object):
-- __slots__ = flags.keys()
-+ __slots__ = list(flags.keys())
- _flags = flags
-
- def update(self, **kwargs):
-- for k, v in kwargs.iteritems():
-+ for k, v in kwargs.items():
- setattr(self, k, v)
-
- def __getattr__(self, name):
-@@ -1080,14 +1080,14 @@
- # issue. So we do a little dance to filter it out ourselves.
- dummy_fill_value = ("dummy",)
- def filter_out_dummy(iterable):
-- return itertools.ifilter(lambda x: x != dummy_fill_value,
-+ return filter(lambda x: x != dummy_fill_value,
- iterable)
-
- # From the itertools documentation, slightly modified:
- def grouper(n, iterable):
- "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
- args = [iter(iterable)] * n
-- return itertools.izip_longest(fillvalue=dummy_fill_value, *args)
-+ return itertools.zip_longest(fillvalue=dummy_fill_value, *args)
-
- for i, unified_group in enumerate(grouper(files_per_unified_file,
- files)):
-@@ -1104,7 +1104,7 @@
- [(1,2), (3,4), (5,6)]
- '''
- i = iter(iterable)
-- return itertools.izip_longest(i, i)
-+ return itertools.zip_longest(i, i)
-
-
- VARIABLES_RE = re.compile('\$\((\w+)\)')
-@@ -1122,7 +1122,7 @@
- value = variables.get(name)
- if not value:
- continue
-- if not isinstance(value, types.StringTypes):
-+ if not isinstance(value, (str,)):
- value = ' '.join(value)
- result += value
- return result
-@@ -1149,7 +1149,7 @@
- pass
-
-
--class EnumString(unicode):
-+class EnumString(str):
- '''A string type that only can have a limited set of values, similarly to
- an Enum, and can only be compared against that set of values.
-
-@@ -1185,19 +1185,18 @@
- # quoting could be done with either ' or ".
- if c == "'":
- return "\\'"
-- return unicode(c.encode('unicode_escape'))
-+ return str(c.encode('unicode_escape'))
-
- # Mapping table between raw characters below \x80 and their escaped
- # counterpart, when they differ
- _INDENTED_REPR_TABLE = {
- c: e
-- for c, e in map(lambda x: (x, _escape_char(x)),
-- map(unichr, range(128)))
-+ for c, e in [(x, _escape_char(x)) for x in list(map(chr, list(range(128))))]
- if c != e
- }
- # Regexp matching all characters to escape.
- _INDENTED_REPR_RE = re.compile(
-- '([' + ''.join(_INDENTED_REPR_TABLE.values()) + ']+)')
-+ '([' + ''.join(list(_INDENTED_REPR_TABLE.values())) + ']+)')
-
-
- def indented_repr(o, indent=4):
-@@ -1223,7 +1222,7 @@
- elif isinstance(o, bytes):
- yield 'b'
- yield repr(o)
-- elif isinstance(o, unicode):
-+ elif isinstance(o, str):
- yield "'"
- # We want a readable string (non escaped unicode), but some
- # special characters need escaping (e.g. \n, \t, etc.)
-@@ -1253,11 +1252,11 @@
- if isinstance(obj, dict):
- return {
- encode(k, encoding): encode(v, encoding)
-- for k, v in obj.iteritems()
-+ for k, v in obj.items()
- }
- if isinstance(obj, bytes):
- return obj
-- if isinstance(obj, unicode):
-+ if isinstance(obj, str):
- return obj.encode(encoding)
- if isinstance(obj, Iterable):
- return [encode(i, encoding) for i in obj]
---- mozjs-52.4.0/python/mozbuild/mozbuild/vendor_rust.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/vendor_rust.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, # You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- from distutils.version import LooseVersion
- import logging
---- mozjs-52.4.0/python/mozbuild/mozbuild/virtualenv.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/virtualenv.py (refactored)
-@@ -5,7 +5,7 @@
- # This file contains code for populating the virtualenv environment for
- # Mozilla's build system. It is typically called as part of configure.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import distutils.sysconfig
- import os
-@@ -461,8 +461,8 @@
- and call .ensure() and .activate() to make the virtualenv active.
- """
-
-- execfile(self.activate_path, dict(__file__=self.activate_path))
-- if isinstance(os.environ['PATH'], unicode):
-+ exec(compile(open(self.activate_path).read(), self.activate_path, 'exec'), dict(__file__=self.activate_path))
-+ if isinstance(os.environ['PATH'], str):
- os.environ['PATH'] = os.environ['PATH'].encode('utf-8')
-
- def install_pip_package(self, package):
---- mozjs-52.4.0/python/mozbuild/mozbuild/action/buildlist.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/action/buildlist.py (refactored)
-@@ -7,7 +7,7 @@
-
- Usage: buildlist.py <filename> <entry> [<entry> ...]
- '''
--from __future__ import absolute_import, print_function
-+
-
- import sys
- import os
---- mozjs-52.4.0/python/mozbuild/mozbuild/action/cl.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/action/cl.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import ctypes
- import os
-@@ -55,7 +55,7 @@
- break
-
- if target is None:
-- print >>sys.stderr, "No target set"
-+ print("No target set", file=sys.stderr)
- return 1
-
- # Assume the source file is the last argument
---- mozjs-52.4.0/python/mozbuild/mozbuild/action/dump_env.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/action/dump_env.py (refactored)
-@@ -6,5 +6,5 @@
- # native paths printed on Windows so that these paths can be incorporated
- # into Python configure's environment.
- import os
--for key, value in os.environ.items():
-- print('%s=%s' % (key, value))
-+for key, value in list(os.environ.items()):
-+ print(('%s=%s' % (key, value)))
---- mozjs-52.4.0/python/mozbuild/mozbuild/action/explode_aar.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/action/explode_aar.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import errno
-@@ -44,7 +44,7 @@
- assets = mozpath.join(destdir, 'assets')
- try:
- os.rmdir(assets)
-- except OSError, e:
-+ except OSError as e:
- if e.errno in (errno.ENOTEMPTY, errno.ENOENT):
- pass
- else:
---- mozjs-52.4.0/python/mozbuild/mozbuild/action/file_generate.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/action/file_generate.py (refactored)
-@@ -6,7 +6,7 @@
- # the arguments that can be used to generate the output file, call the
- # script's |main| method with appropriate arguments.
-
--from __future__ import absolute_import, print_function
-+
-
- import argparse
- import imp
---- mozjs-52.4.0/python/mozbuild/mozbuild/action/generate_suggestedsites.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/action/generate_suggestedsites.py (refactored)
-@@ -26,7 +26,7 @@
- directory e.g. raw/suggestedsites.json, raw-pt-rBR/suggestedsites.json.
- '''
-
--from __future__ import absolute_import, print_function
-+
-
- import argparse
- import copy
---- mozjs-52.4.0/python/mozbuild/mozbuild/action/generate_symbols_file.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/action/generate_symbols_file.py (refactored)
-@@ -2,12 +2,12 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import buildconfig
- import os
--from StringIO import StringIO
-+from io import StringIO
- from mozbuild.preprocessor import Preprocessor
- from mozbuild.util import DefinesAction
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/action/jar_maker.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/action/jar_maker.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import sys
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/action/make_dmg.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/action/make_dmg.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import print_function
-+
-
- from mozbuild.base import MozbuildObject
- from mozpack import dmg
---- mozjs-52.4.0/python/mozbuild/mozbuild/action/output_searchplugins_list.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/action/output_searchplugins_list.py (refactored)
-@@ -18,4 +18,4 @@
- else:
- engines = searchinfo["default"]["visibleDefaultEngines"]
-
--print '\n'.join(engines)
-+print('\n'.join(engines))
---- mozjs-52.4.0/python/mozbuild/mozbuild/action/package_fennec_apk.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/action/package_fennec_apk.py (refactored)
-@@ -6,7 +6,7 @@
- Script to produce an Android package (.apk) for Fennec.
- '''
-
--from __future__ import absolute_import, print_function
-+
-
- import argparse
- import buildconfig
---- mozjs-52.4.0/python/mozbuild/mozbuild/action/preprocessor.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/action/preprocessor.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import sys
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/action/process_define_files.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/action/process_define_files.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import os
-@@ -55,7 +55,7 @@
- 'CONFIGURE_DEFINE_FILE')
- defines = '\n'.join(sorted(
- '#define %s %s' % (name, val)
-- for name, val in config.defines.iteritems()
-+ for name, val in config.defines.items()
- if name not in config.non_global_defines))
- l = l[:m.start('cmd') - 1] \
- + defines + l[m.end('name'):]
---- mozjs-52.4.0/python/mozbuild/mozbuild/action/process_install_manifest.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/action/process_install_manifest.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import os
---- mozjs-52.4.0/python/mozbuild/mozbuild/action/test_archive.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/action/test_archive.py (refactored)
-@@ -8,7 +8,7 @@
- # It is defined inline because this was easiest to make test archive
- # generation faster.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import itertools
-@@ -433,7 +433,7 @@
- # "common" is our catch all archive and it ignores things from other archives.
- # Verify nothing sneaks into ARCHIVE_FILES without a corresponding exclusion
- # rule in the "common" archive.
--for k, v in ARCHIVE_FILES.items():
-+for k, v in list(ARCHIVE_FILES.items()):
- # Skip mozharness because it isn't staged.
- if k in ('common', 'mozharness'):
- continue
---- mozjs-52.4.0/python/mozbuild/mozbuild/action/webidl.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/action/webidl.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import sys
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/action/xpccheck.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/action/xpccheck.py (refactored)
-@@ -8,7 +8,7 @@
- Usage: xpccheck.py <directory> [<directory> ...]
- '''
-
--from __future__ import absolute_import
-+
-
- import sys
- import os
-@@ -40,7 +40,7 @@
- break
-
- if not found:
-- print >>sys.stderr, "TEST-UNEXPECTED-FAIL | xpccheck | test %s is missing from test manifest %s!" % (name, os.path.join(directory, 'xpcshell.ini'))
-+ print("TEST-UNEXPECTED-FAIL | xpccheck | test %s is missing from test manifest %s!" % (name, os.path.join(directory, 'xpcshell.ini')), file=sys.stderr)
- sys.exit(1)
-
- def verifyIniFile(initests, directory):
-@@ -60,12 +60,12 @@
- break
-
- if not found:
-- print >>sys.stderr, "TEST-UNEXPECTED-FAIL | xpccheck | found %s in xpcshell.ini and not in directory '%s'" % (name, directory)
-+ print("TEST-UNEXPECTED-FAIL | xpccheck | found %s in xpcshell.ini and not in directory '%s'" % (name, directory), file=sys.stderr)
- sys.exit(1)
-
- def main(argv):
- if len(argv) < 2:
-- print >>sys.stderr, "Usage: xpccheck.py <topsrcdir> <directory> [<directory> ...]"
-+ print("Usage: xpccheck.py <topsrcdir> <directory> [<directory> ...]", file=sys.stderr)
- sys.exit(1)
-
- topsrcdir = argv[0]
---- mozjs-52.4.0/python/mozbuild/mozbuild/action/xpidl-process.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/action/xpidl-process.py (refactored)
-@@ -7,7 +7,7 @@
- # input IDL file(s). It's purpose is to directly support the build
- # system. The API will change to meet the needs of the build system.
-
--from __future__ import absolute_import
-+
-
- import argparse
- import os
-@@ -58,7 +58,7 @@
-
- # TODO use FileAvoidWrite once it supports binary mode.
- xpt_path = os.path.join(xpt_dir, '%s.xpt' % module)
-- xpt_link(xpts.values()).write(xpt_path)
-+ xpt_link(list(xpts.values())).write(xpt_path)
-
- rule.add_targets([xpt_path])
- if deps_dir:
---- mozjs-52.4.0/python/mozbuild/mozbuild/action/zip.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/action/zip.py (refactored)
-@@ -5,7 +5,7 @@
- # This script creates a zip file, but will also strip any binaries
- # it finds before adding them to the zip.
-
--from __future__ import absolute_import
-+
-
- from mozpack.files import FileFinder
- from mozpack.copier import Jarrer
---- mozjs-52.4.0/python/mozbuild/mozbuild/backend/android_eclipse.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/backend/android_eclipse.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import itertools
- import os
---- mozjs-52.4.0/python/mozbuild/mozbuild/backend/base.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/backend/base.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- from abc import (
- ABCMeta,
-@@ -30,15 +30,13 @@
- from mozbuild.base import ExecutionSummary
-
-
--class BuildBackend(LoggingMixin):
-+class BuildBackend(LoggingMixin, metaclass=ABCMeta):
- """Abstract base class for build backends.
-
- A build backend is merely a consumer of the build configuration (the output
- of the frontend processing). It does something with said data. What exactly
- is the discretion of the specific implementation.
- """
--
-- __metaclass__ = ABCMeta
-
- def __init__(self, environment):
- assert isinstance(environment, ConfigEnvironment)
-@@ -252,7 +250,7 @@
- srcdir = mozpath.dirname(obj.input_path)
- pp.context.update({
- k: ' '.join(v) if isinstance(v, list) else v
-- for k, v in obj.config.substs.iteritems()
-+ for k, v in obj.config.substs.items()
- })
- pp.context.update(
- top_srcdir=obj.topsrcdir,
---- mozjs-52.4.0/python/mozbuild/mozbuild/backend/common.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/backend/common.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
--
--import cPickle as pickle
-+
-+
-+import pickle as pickle
- import itertools
- import json
- import os
-@@ -194,11 +194,11 @@
- def add_defaults(self, manifest):
- if not hasattr(manifest, 'manifest_defaults'):
- return
-- for sub_manifest, defaults in manifest.manifest_defaults.items():
-+ for sub_manifest, defaults in list(manifest.manifest_defaults.items()):
- self.manifest_defaults[sub_manifest] = defaults
-
- def add_installs(self, obj, topsrcdir):
-- for src, (dest, _) in obj.installs.iteritems():
-+ for src, (dest, _) in obj.installs.items():
- key = src[len(topsrcdir)+1:]
- self.installs_by_path[key].append((src, dest))
- for src, pat, dest in obj.pattern_installs:
-@@ -379,7 +379,7 @@
-
- path = mozpath.join(self.environment.topobjdir, 'test-installs.pkl')
- with self._write_file(path, mode='rb') as fh:
-- pickle.dump({k: v for k, v in self._test_manager.installs_by_path.items()
-+ pickle.dump({k: v for k, v in list(self._test_manager.installs_by_path.items())
- if k in self._test_manager.deferred_installs},
- fh,
- protocol=2)
---- mozjs-52.4.0/python/mozbuild/mozbuild/backend/configenvironment.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/backend/configenvironment.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import os
- import sys
-@@ -17,7 +17,7 @@
-
-
- if sys.version_info.major == 2:
-- text_type = unicode
-+ text_type = str
- else:
- text_type = str
-
-@@ -176,7 +176,7 @@
- except UnicodeDecodeError:
- return v.decode('utf-8', 'replace')
-
-- for k, v in self.substs.items():
-+ for k, v in list(self.substs.items()):
- if not isinstance(v, StringTypes):
- if isinstance(v, Iterable):
- type(v)(decode(i) for i in v)
---- mozjs-52.4.0/python/mozbuild/mozbuild/backend/cpp_eclipse.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/backend/cpp_eclipse.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import errno
- import random
-@@ -218,12 +218,12 @@
- cproject_header = cproject_header.replace('@MACH_COMMAND@', os.path.join(self.environment.topsrcdir, 'mach'))
- fh.write(cproject_header)
-
-- for path, defines in self._paths_to_defines.items():
-+ for path, defines in list(self._paths_to_defines.items()):
- folderinfo = CPROJECT_TEMPLATE_FOLDER_INFO_HEADER
- folderinfo = folderinfo.replace('@FOLDER_ID@', str(random.randint(1000000, 99999999999)))
- folderinfo = folderinfo.replace('@FOLDER_NAME@', 'tree/' + path)
- fh.write(folderinfo)
-- for k, v in defines.items():
-+ for k, v in list(defines.items()):
- define = ET.Element('listOptionValue')
- define.set('builtIn', 'false')
- define.set('value', str(k) + "=" + str(v))
---- mozjs-52.4.0/python/mozbuild/mozbuild/backend/fastermake.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/backend/fastermake.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals, print_function
-+
-
- from mozbuild.backend.base import PartialBackend
- from mozbuild.backend.common import CommonBackend
-@@ -130,12 +130,12 @@
- if value is not None:
- mk.add_statement('%s = %s' % (var, value))
-
-- install_manifests_bases = self._install_manifests.keys()
-+ install_manifests_bases = list(self._install_manifests.keys())
-
- # Add information for chrome manifest generation
- manifest_targets = []
-
-- for target, entries in self._manifest_entries.iteritems():
-+ for target, entries in self._manifest_entries.items():
- manifest_targets.append(target)
- install_target = mozpath.basedir(target, install_manifests_bases)
- self._install_manifests[install_target].add_content(
-@@ -144,16 +144,16 @@
-
- # Add information for install manifests.
- mk.add_statement('INSTALL_MANIFESTS = %s'
-- % ' '.join(self._install_manifests.keys()))
-+ % ' '.join(list(self._install_manifests.keys())))
-
- # Add dependencies we infered:
-- for target, deps in self._dependencies.iteritems():
-+ for target, deps in self._dependencies.items():
- mk.create_rule([target]).add_dependencies(
- '$(TOPOBJDIR)/%s' % d for d in deps)
-
- mk.add_statement('include $(TOPSRCDIR)/config/faster/rules.mk')
-
-- for base, install_manifest in self._install_manifests.iteritems():
-+ for base, install_manifest in self._install_manifests.items():
- with self._write_file(
- mozpath.join(self.environment.topobjdir, 'faster',
- 'install_%s' % base.replace('/', '_'))) as fh:
---- mozjs-52.4.0/python/mozbuild/mozbuild/backend/mach_commands.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/backend/mach_commands.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import os
---- mozjs-52.4.0/python/mozbuild/mozbuild/backend/recursivemake.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/backend/recursivemake.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import logging
- import os
-@@ -12,7 +12,7 @@
- defaultdict,
- namedtuple,
- )
--from StringIO import StringIO
-+from io import StringIO
- from itertools import chain
-
- from mozpack.manifests import (
-@@ -74,6 +74,7 @@
- )
- from ..makeutil import Makefile
- from mozbuild.shellutil import quote as shell_quote
-+from functools import reduce
-
- MOZBUILD_VARIABLES = [
- b'ANDROID_APK_NAME',
-@@ -214,7 +215,7 @@
- self.fh.write(buf)
-
- def write_once(self, buf):
-- if isinstance(buf, unicode):
-+ if isinstance(buf, str):
- buf = buf.encode('utf-8')
- if b'\n' + buf not in self.fh.getvalue():
- self.write(buf)
-@@ -283,8 +284,8 @@
- Helper function to call a filter from compute_dependencies and
- traverse.
- """
-- return filter(current, self._traversal.get(current,
-- self.SubDirectories()))
-+ return list(filter(current, self._traversal.get(current,
-+ self.SubDirectories())))
-
- def compute_dependencies(self, filter=None):
- """
-@@ -638,7 +639,7 @@
- convenience variables, and the other dependency definitions for a
- hopefully proper directory traversal.
- """
-- for tier, no_skip in self._no_skip.items():
-+ for tier, no_skip in list(self._no_skip.items()):
- self.log(logging.DEBUG, 'fill_root_mk', {
- 'number': len(no_skip), 'tier': tier
- }, 'Using {number} directories during {tier}')
-@@ -684,7 +685,7 @@
- for tier, filter in filters:
- main, all_deps = \
- self._traversal.compute_dependencies(filter)
-- for dir, deps in all_deps.items():
-+ for dir, deps in list(all_deps.items()):
- if deps is not None or (dir in self._idl_dirs \
- and tier == 'export'):
- rule = root_deps_mk.create_rule(['%s/%s' % (dir, tier)])
-@@ -697,7 +698,7 @@
- rule.add_dependencies('%s/%s' % (d, tier) for d in main)
-
- all_compile_deps = reduce(lambda x,y: x|y,
-- self._compile_graph.values()) if self._compile_graph else set()
-+ list(self._compile_graph.values())) if self._compile_graph else set()
- compile_roots = set(self._compile_graph.keys()) - all_compile_deps
-
- rule = root_deps_mk.create_rule(['recurse_compile'])
-@@ -839,7 +840,7 @@
- self._fill_root_mk()
-
- # Make the master test manifest files.
-- for flavor, t in self._test_manifests.items():
-+ for flavor, t in list(self._test_manifests.items()):
- install_prefix, manifests = t
- manifest_stem = mozpath.join(install_prefix, '%s.ini' % flavor)
- self._write_master_test_manifest(mozpath.join(
-@@ -945,7 +946,7 @@
- for p in ('Makefile', 'backend.mk', '.deps/.mkdir.done'):
- build_files.add_optional_exists(p)
-
-- for idl in manager.idls.values():
-+ for idl in list(manager.idls.values()):
- self._install_manifests['dist_idl'].add_symlink(idl['source'],
- idl['basename'])
- self._install_manifests['dist_include'].add_optional_exists('%s.h'
-@@ -992,7 +993,7 @@
-
- interfaces_manifests = []
- dist_dir = mozpath.join(self.environment.topobjdir, 'dist')
-- for manifest, entries in manager.interface_manifests.items():
-+ for manifest, entries in list(manager.interface_manifests.items()):
- interfaces_manifests.append(mozpath.join('$(DEPTH)', manifest))
- for xpt in sorted(entries):
- registered_xpt_files.add(mozpath.join(
-@@ -1052,7 +1053,7 @@
- # Don't allow files to be defined multiple times unless it is allowed.
- # We currently allow duplicates for non-test files or test files if
- # the manifest is listed as a duplicate.
-- for source, (dest, is_test) in obj.installs.items():
-+ for source, (dest, is_test) in list(obj.installs.items()):
- try:
- self._install_manifests['_test_files'].add_symlink(source, dest)
- except ValueError:
-@@ -1386,7 +1387,7 @@
- man_dir = mozpath.join(self.environment.topobjdir, '_build_manifests',
- dest)
-
-- for k, manifest in manifests.items():
-+ for k, manifest in list(manifests.items()):
- with self._write_file(mozpath.join(man_dir, k)) as fh:
- manifest.write(fileobj=fh)
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/backend/tup.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/backend/tup.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import os
-
-@@ -253,7 +253,7 @@
- backend_file = self._get_backend_file('xpcom/xpidl')
- backend_file.export_shell()
-
-- for module, data in sorted(manager.modules.iteritems()):
-+ for module, data in sorted(manager.modules.items()):
- dest, idls = data
- cmd = [
- '$(PYTHON_PATH)',
---- mozjs-52.4.0/python/mozbuild/mozbuild/backend/visualstudio.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/backend/visualstudio.py (refactored)
-@@ -5,7 +5,7 @@
- # This file contains a build backend for generating Visual Studio project
- # files.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import errno
- import os
-@@ -218,7 +218,7 @@
- includes = [os.path.normpath(i) for i in includes]
-
- defines = []
-- for k, v in self._paths_to_defines.get(path, {}).items():
-+ for k, v in list(self._paths_to_defines.get(path, {}).items()):
- if v is True:
- defines.append(k)
- else:
---- mozjs-52.4.0/python/mozbuild/mozbuild/codecoverage/chrome_map.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/codecoverage/chrome_map.py (refactored)
-@@ -5,7 +5,7 @@
- from collections import defaultdict
- import json
- import os
--import urlparse
-+import urllib.parse
-
- from mach.config import ConfigSettings
- from mach.logging import LoggingManager
-@@ -42,7 +42,7 @@
- if isinstance(entry, (ManifestChrome, ManifestResource)):
- if isinstance(entry, ManifestResource):
- dest = entry.target
-- url = urlparse.urlparse(dest)
-+ url = urllib.parse.urlparse(dest)
- if not url.scheme:
- dest = mozpath.normpath(mozpath.join(entry.base, dest))
- if url.scheme == 'file':
-@@ -99,7 +99,7 @@
- chrome_mapping = self.manifest_handler.chrome_mapping
- overrides = self.manifest_handler.overrides
- json.dump([
-- {k: list(v) for k, v in chrome_mapping.iteritems()},
-+ {k: list(v) for k, v in chrome_mapping.items()},
- overrides,
- self._install_mapping,
- ], fh, sort_keys=True, indent=2)
---- mozjs-52.4.0/python/mozbuild/mozbuild/codecoverage/packager.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/codecoverage/packager.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function
-+
-
- import argparse
- import sys
-@@ -12,7 +12,7 @@
-
- def package_gcno_tree(root, output_file):
- # XXX JarWriter doesn't support unicode strings, see bug 1056859
-- if isinstance(root, unicode):
-+ if isinstance(root, str):
- root = root.encode('utf-8')
-
- finder = FileFinder(root)
---- mozjs-52.4.0/python/mozbuild/mozbuild/compilation/codecomplete.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/compilation/codecomplete.py (refactored)
-@@ -4,7 +4,7 @@
-
- # This modules provides functionality for dealing with code completion.
-
--from __future__ import absolute_import
-+
-
- import os
-
-@@ -59,5 +59,5 @@
- # Drop the first flag since that is the pathname of the compiler.
- flags = (shell_split(build_vars[cc]) + shell_split(build_vars[name]))[1:]
-
-- print(' '.join(shell_quote(arg)
-- for arg in util.sanitize_cflags(flags)))
-+ print((' '.join(shell_quote(arg)
-+ for arg in util.sanitize_cflags(flags))))
---- mozjs-52.4.0/python/mozbuild/mozbuild/compilation/database.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/compilation/database.py (refactored)
-@@ -118,7 +118,7 @@
-
- db = []
-
-- for (directory, filename), cmd in self._db.iteritems():
-+ for (directory, filename), cmd in self._db.items():
- env = self._envs[directory]
- cmd = list(cmd)
- cmd.append(filename)
-@@ -151,7 +151,7 @@
- a = expand_variables(a, variables).split()
- if not a:
- continue
-- if isinstance(a, types.StringTypes):
-+ if isinstance(a, (str,)):
- c.append(a)
- else:
- c.extend(a)
-@@ -216,7 +216,7 @@
- value = cenv.substs.get(name)
- if not value:
- return
-- if isinstance(value, types.StringTypes):
-+ if isinstance(value, (str,)):
- value = value.split()
- db.extend(value)
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/compilation/warnings.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/compilation/warnings.py (refactored)
-@@ -4,7 +4,7 @@
-
- # This modules provides functionality for dealing with compiler warnings.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import errno
- import json
-@@ -123,18 +123,18 @@
-
- def __len__(self):
- i = 0
-- for value in self._files.values():
-+ for value in list(self._files.values()):
- i += len(value['warnings'])
-
- return i
-
- def __iter__(self):
-- for value in self._files.values():
-+ for value in list(self._files.values()):
- for warning in value['warnings']:
- yield warning
-
- def __contains__(self, item):
-- for value in self._files.values():
-+ for value in list(self._files.values()):
- for warning in value['warnings']:
- if warning == item:
- return True
-@@ -144,7 +144,7 @@
- @property
- def warnings(self):
- """All the CompilerWarning instances in this database."""
-- for value in self._files.values():
-+ for value in list(self._files.values()):
- for w in value['warnings']:
- yield w
-
-@@ -152,7 +152,7 @@
- """Returns a mapping of warning types to their counts."""
-
- types = {}
-- for value in self._files.values():
-+ for value in list(self._files.values()):
- for warning in value['warnings']:
- if dirpath and not mozpath.normsep(warning['filename']).startswith(dirpath):
- continue
-@@ -210,7 +210,7 @@
- """
-
- # Need to calculate up front since we are mutating original object.
-- filenames = self._files.keys()
-+ filenames = list(self._files.keys())
- for filename in filenames:
- if not os.path.exists(filename):
- del self._files[filename]
-@@ -229,10 +229,10 @@
- obj = {'files': {}}
-
- # All this hackery because JSON can't handle sets.
-- for k, v in self._files.iteritems():
-+ for k, v in self._files.items():
- obj['files'][k] = {}
-
-- for k2, v2 in v.iteritems():
-+ for k2, v2 in v.items():
- normalized = v2
-
- if k2 == 'warnings':
-@@ -249,8 +249,8 @@
- self._files = obj['files']
-
- # Normalize data types.
-- for filename, value in self._files.iteritems():
-- for k, v in value.iteritems():
-+ for filename, value in self._files.items():
-+ for k, v in value.items():
- if k != 'warnings':
- continue
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/configure/__init__.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/configure/__init__.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import inspect
- import logging
-@@ -193,7 +193,7 @@
- for b in ('None', 'False', 'True', 'int', 'bool', 'any', 'all', 'len',
- 'list', 'tuple', 'set', 'dict', 'isinstance', 'getattr',
- 'hasattr', 'enumerate', 'range', 'zip')
-- }, __import__=forbidden_import, str=unicode)
-+ }, __import__=forbidden_import, str=str)
-
- # Expose a limited set of functions from os.path
- OS = ReadOnlyNamespace(path=ReadOnlyNamespace(**{
-@@ -333,7 +333,7 @@
- if path:
- self.include_file(path)
-
-- for option in self._options.itervalues():
-+ for option in self._options.values():
- # All options must be referenced by some @depends function
- if option not in self._seen:
- raise ConfigureError(
-@@ -437,7 +437,7 @@
- value = PositiveOptionValue()
- elif value is False or value == ():
- value = NegativeOptionValue()
-- elif isinstance(value, types.StringTypes):
-+ elif isinstance(value, (str,)):
- value = PositiveOptionValue((value,))
- elif isinstance(value, tuple):
- value = PositiveOptionValue(value)
-@@ -477,7 +477,7 @@
- return value
-
- def _dependency(self, arg, callee_name, arg_name=None):
-- if isinstance(arg, types.StringTypes):
-+ if isinstance(arg, (str,)):
- prefix, name, values = Option.split_option(arg)
- if values != ():
- raise ConfigureError("Option must not contain an '='")
-@@ -541,7 +541,7 @@
- '''
- when = self._normalize_when(kwargs.get('when'), 'option')
- args = [self._resolve(arg) for arg in args]
-- kwargs = {k: self._resolve(v) for k, v in kwargs.iteritems()
-+ kwargs = {k: self._resolve(v) for k, v in kwargs.items()
- if k != 'when'}
- option = Option(*args, **kwargs)
- if when:
-@@ -622,7 +622,7 @@
- with self.only_when_impl(when):
- what = self._resolve(what)
- if what:
-- if not isinstance(what, types.StringTypes):
-+ if not isinstance(what, (str,)):
- raise TypeError("Unexpected type: '%s'" % type(what).__name__)
- self.include_file(what)
-
-@@ -640,7 +640,7 @@
- (k[:-len('_impl')], getattr(self, k))
- for k in dir(self) if k.endswith('_impl') and k != 'template_impl'
- )
-- glob.update((k, v) for k, v in self.iteritems() if k not in glob)
-+ glob.update((k, v) for k, v in self.items() if k not in glob)
-
- # Any function argument to the template must be prepared to be sandboxed.
- # If the template itself returns a function (in which case, it's very
-@@ -664,7 +664,7 @@
- def wrapper(*args, **kwargs):
- args = [maybe_prepare_function(arg) for arg in args]
- kwargs = {k: maybe_prepare_function(v)
-- for k, v in kwargs.iteritems()}
-+ for k, v in kwargs.items()}
- ret = template(*args, **kwargs)
- if isfunction(ret):
- # We can't expect the sandboxed code to think about all the
-@@ -696,7 +696,7 @@
- for value, required in (
- (_import, True), (_from, False), (_as, False)):
-
-- if not isinstance(value, types.StringTypes) and (
-+ if not isinstance(value, (str,)) and (
- required or value is not None):
- raise TypeError("Unexpected type: '%s'" % type(value).__name__)
- if value is not None and not self.RE_MODULE.match(value):
-@@ -759,7 +759,7 @@
- name = self._resolve(name, need_help_dependency=False)
- if name is None:
- return
-- if not isinstance(name, types.StringTypes):
-+ if not isinstance(name, (str,)):
- raise TypeError("Unexpected type: '%s'" % type(name).__name__)
- if name in data:
- raise ConfigureError(
-@@ -849,7 +849,7 @@
- if isinstance(possible_reasons[0], Option):
- reason = possible_reasons[0]
- if not reason and (isinstance(value, (bool, tuple)) or
-- isinstance(value, types.StringTypes)):
-+ isinstance(value, (str,))):
- # A reason can be provided automatically when imply_option
- # is called with an immediate value.
- _, filename, line, _, _, _ = inspect.stack()[1]
-@@ -884,10 +884,10 @@
- if not inspect.isfunction(func):
- raise TypeError("Unexpected type: '%s'" % type(func).__name__)
- if func in self._prepared_functions:
-- return func, func.func_globals
-+ return func, func.__globals__
-
- glob = SandboxedGlobal(
-- (k, v) for k, v in func.func_globals.iteritems()
-+ (k, v) for k, v in func.__globals__.items()
- if (inspect.isfunction(v) and v not in self._templates) or (
- inspect.isclass(v) and issubclass(v, Exception))
- )
-@@ -908,20 +908,20 @@
- # Note this is not entirely bullet proof (if the value is e.g. a list,
- # the list contents could have changed), but covers the bases.
- closure = None
-- if func.func_closure:
-+ if func.__closure__:
- def makecell(content):
- def f():
- content
-- return f.func_closure[0]
-+ return f.__closure__[0]
-
- closure = tuple(makecell(cell.cell_contents)
-- for cell in func.func_closure)
-+ for cell in func.__closure__)
-
- new_func = wraps(func)(types.FunctionType(
-- func.func_code,
-+ func.__code__,
- glob,
- func.__name__,
-- func.func_defaults,
-+ func.__defaults__,
- closure
- ))
- @wraps(new_func)
---- mozjs-52.4.0/python/mozbuild/mozbuild/configure/check_debug_ranges.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/configure/check_debug_ranges.py (refactored)
-@@ -6,7 +6,7 @@
- # to a given compilation unit. This is used as a helper to find a bug in some
- # versions of GNU ld.
-
--from __future__ import absolute_import
-+
-
- import subprocess
- import sys
-@@ -59,4 +59,4 @@
-
-
- if __name__ == '__main__':
-- print main(*sys.argv[1:])
-+ print(main(*sys.argv[1:]))
---- mozjs-52.4.0/python/mozbuild/mozbuild/configure/constants.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/configure/constants.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- from mozbuild.util import EnumString
- from collections import OrderedDict
-@@ -56,7 +56,7 @@
- 'x86_64': 64,
- }
-
--CPU = EnumString.subclass(*CPU_bitness.keys())
-+CPU = EnumString.subclass(*list(CPU_bitness.keys()))
-
- Endianness = EnumString.subclass(
- 'big',
---- mozjs-52.4.0/python/mozbuild/mozbuild/configure/help.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/configure/help.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import os
- from mozbuild.configure.options import Option
---- mozjs-52.4.0/python/mozbuild/mozbuild/configure/libstdcxx.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/configure/libstdcxx.py (refactored)
-@@ -13,7 +13,7 @@
- # will be used from shell, we just print the two assignments and evaluate
- # them from shell.
-
--from __future__ import absolute_import
-+
-
- import os
- import subprocess
-@@ -76,6 +76,6 @@
-
- if __name__ == '__main__':
- cxx_env = os.environ['CXX']
-- print 'MOZ_LIBSTDCXX_TARGET_VERSION=%s' % find_version(cxx_env)
-+ print('MOZ_LIBSTDCXX_TARGET_VERSION=%s' % find_version(cxx_env))
- host_cxx_env = os.environ.get('HOST_CXX', cxx_env)
-- print 'MOZ_LIBSTDCXX_HOST_VERSION=%s' % find_version(host_cxx_env)
-+ print('MOZ_LIBSTDCXX_HOST_VERSION=%s' % find_version(host_cxx_env))
---- mozjs-52.4.0/python/mozbuild/mozbuild/configure/lint.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/configure/lint.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-
--from StringIO import StringIO
-+
-+from io import StringIO
- from . import (
- CombinedDependsFunction,
- ConfigureError,
-@@ -42,7 +42,7 @@
- # - don't use @imports
- # - don't have a closure
- # - don't use global variables
-- if func in self._imports or func.func_closure:
-+ if func in self._imports or func.__closure__:
- return True
- for op, arg in disassemble_as_iter(func):
- if op in ('LOAD_GLOBAL', 'STORE_GLOBAL'):
---- mozjs-52.4.0/python/mozbuild/mozbuild/configure/lint_util.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/configure/lint_util.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import dis
- import inspect
-@@ -12,9 +12,9 @@
- # returns an iterator.
- def disassemble_as_iter(co):
- if inspect.ismethod(co):
-- co = co.im_func
-+ co = co.__func__
- if inspect.isfunction(co):
-- co = co.func_code
-+ co = co.__code__
- code = co.co_code
- n = len(code)
- i = 0
-@@ -30,7 +30,7 @@
- extended_arg = 0
- i += 2
- if op == dis.EXTENDED_ARG:
-- extended_arg = arg * 65536L
-+ extended_arg = arg * 65536
- continue
- if op in dis.hasconst:
- yield opname, co.co_consts[arg]
---- mozjs-52.4.0/python/mozbuild/mozbuild/configure/options.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/configure/options.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import os
- import sys
-@@ -12,7 +12,7 @@
-
- def istupleofstrings(obj):
- return isinstance(obj, tuple) and len(obj) and all(
-- isinstance(o, types.StringTypes) for o in obj)
-+ isinstance(o, (str,)) for o in obj)
-
-
- class OptionValue(tuple):
-@@ -71,7 +71,7 @@
- in the form of a tuple for when values are given to the option (in the form
- --option=value[,value2...].
- '''
-- def __nonzero__(self):
-+ def __bool__(self):
- return True
-
-
-@@ -96,7 +96,7 @@
- if format_data:
- message = message.format(**format_data)
- super(ConflictingOptionError, self).__init__(message)
-- for k, v in format_data.iteritems():
-+ for k, v in format_data.items():
- setattr(self, k, v)
-
-
-@@ -132,7 +132,7 @@
- 'At least an option name or an environment variable name must '
- 'be given')
- if name:
-- if not isinstance(name, types.StringTypes):
-+ if not isinstance(name, (str,)):
- raise InvalidOptionError('Option must be a string')
- if not name.startswith('--'):
- raise InvalidOptionError('Option must start with `--`')
-@@ -141,7 +141,7 @@
- if not name.islower():
- raise InvalidOptionError('Option must be all lowercase')
- if env:
-- if not isinstance(env, types.StringTypes):
-+ if not isinstance(env, (str,)):
- raise InvalidOptionError(
- 'Environment variable name must be a string')
- if not env.isupper():
-@@ -151,8 +151,8 @@
- isinstance(nargs, int) and nargs >= 0):
- raise InvalidOptionError(
- "nargs must be a positive integer, '?', '*' or '+'")
-- if (not isinstance(default, types.StringTypes) and
-- not isinstance(default, (bool, types.NoneType)) and
-+ if (not isinstance(default, (str,)) and
-+ not isinstance(default, (bool, type(None))) and
- not istupleofstrings(default)):
- raise InvalidOptionError(
- 'default must be a bool, a string or a tuple of strings')
-@@ -224,7 +224,7 @@
- ', '.join("'%s'" % c for c in choices))
- elif has_choices:
- maxargs = self.maxargs
-- if len(choices) < maxargs and maxargs != sys.maxint:
-+ if len(choices) < maxargs and maxargs != sys.maxsize:
- raise InvalidOptionError('Not enough `choices` for `nargs`')
- self.choices = choices
- self.help = help
-@@ -238,7 +238,7 @@
- where prefix is one of 'with', 'without', 'enable' or 'disable'.
- The '=values' part is optional. Values are separated with commas.
- '''
-- if not isinstance(option, types.StringTypes):
-+ if not isinstance(option, (str,)):
- raise InvalidOptionError('Option must be a string')
-
- elements = option.split('=', 1)
-@@ -291,7 +291,7 @@
- def maxargs(self):
- if isinstance(self.nargs, int):
- return self.nargs
-- return 1 if self.nargs == '?' else sys.maxint
-+ return 1 if self.nargs == '?' else sys.maxsize
-
- def _validate_nargs(self, num):
- minargs, maxargs = self.minargs, self.maxargs
-@@ -485,5 +485,5 @@
-
- def __iter__(self):
- for d in (self._args, self._extra_args):
-- for arg, pos in d.itervalues():
-+ for arg, pos in d.values():
- yield arg
---- mozjs-52.4.0/python/mozbuild/mozbuild/configure/util.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/configure/util.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import codecs
- import itertools
-@@ -52,7 +52,7 @@
-
- def __cmp__(self, other):
- # LooseVersion checks isinstance(StringType), so work around it.
-- if isinstance(other, unicode):
-+ if isinstance(other, str):
- other = other.encode('ascii')
- return LooseVersion.__cmp__(self, other)
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/controller/building.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/controller/building.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import getpass
- import json
-@@ -108,7 +108,7 @@
- """
- o = []
-
-- for tier, state in self.tiers.items():
-+ for tier, state in list(self.tiers.items()):
- t_entry = dict(
- name=tier,
- start=state['begin_time'],
-@@ -643,8 +643,8 @@
-
- return '\n'.join(lines)
-
-- def __nonzero__(self):
-- relative_values = [v for k, v in self._values.items()
-+ def __bool__(self):
-+ relative_values = [v for k, v in list(self._values.items())
- if k not in self.ABSOLUTE_KEYS]
- return (all(v >= 0 for v in relative_values) and
- any(v > 0 for v in relative_values))
-@@ -666,8 +666,8 @@
- """Install test files."""
-
- if self.is_clobber_needed():
-- print(INSTALL_TESTS_CLOBBER.format(
-- clobber_file=os.path.join(self.topobjdir, 'CLOBBER')))
-+ print((INSTALL_TESTS_CLOBBER.format(
-+ clobber_file=os.path.join(self.topobjdir, 'CLOBBER'))))
- sys.exit(1)
-
- if not test_objs:
---- mozjs-52.4.0/python/mozbuild/mozbuild/controller/clobber.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/controller/clobber.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function
-+
-
- r'''This module contains code for managing clobbering of the tree.'''
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/frontend/context.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/frontend/context.py (refactored)
-@@ -14,7 +14,7 @@
- contain, you've come to the right place.
- """
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import os
-
-@@ -234,15 +234,15 @@
- This function is transactional: if setitem fails for one of the values,
- the context is not updated at all."""
- if isinstance(iterable, dict):
-- iterable = iterable.items()
-+ iterable = list(iterable.items())
-
- update = {}
-- for key, value in itertools.chain(iterable, kwargs.items()):
-+ for key, value in itertools.chain(iterable, list(kwargs.items())):
- stored_type = self._validate(key, value)
- # Don't create an instance of stored_type if coercion is needed,
- # until all values are validated.
- update[key] = (value, stored_type)
-- for key, (value, stored_type) in update.items():
-+ for key, (value, stored_type) in list(update.items()):
- if not isinstance(value, stored_type):
- update[key] = stored_type(value)
- else:
-@@ -297,7 +297,7 @@
- self.update(value)
-
-
--class FinalTargetValue(ContextDerivedValue, unicode):
-+class FinalTargetValue(ContextDerivedValue, str):
- def __new__(cls, context, value=""):
- if not value:
- value = 'dist/'
-@@ -307,7 +307,7 @@
- value += 'bin'
- if context['DIST_SUBDIR']:
- value += '/' + context['DIST_SUBDIR']
-- return unicode.__new__(cls, value)
-+ return str.__new__(cls, value)
-
-
- def Enum(*values):
-@@ -355,7 +355,7 @@
- cls = SourcePath
- return super(PathMeta, cls).__call__(context, value)
-
--class Path(ContextDerivedValue, unicode):
-+class Path(ContextDerivedValue, str, metaclass=PathMeta):
- """Stores and resolves a source path relative to a given context
-
- This class is used as a backing type for some of the sandbox variables.
-@@ -366,7 +366,6 @@
- - '!objdir/relative/paths'
- - '%/filesystem/absolute/paths'
- """
-- __metaclass__ = PathMeta
-
- def __new__(cls, context, value=None):
- return super(Path, cls).__new__(cls, value)
-@@ -386,7 +385,7 @@
- def __cmp__(self, other):
- if isinstance(other, Path) and self.srcdir != other.srcdir:
- return cmp(self.full_path, other.full_path)
-- return cmp(unicode(self), other)
-+ return cmp(str(self), other)
-
- # __cmp__ is not enough because unicode has __eq__, __ne__, etc. defined
- # and __cmp__ is only used for those when they don't exist.
-@@ -544,7 +543,7 @@
- __slots__ = tuple([name for name, _ in fields])
-
- def __init__(self, context):
-- for fname, ftype in self._fields.items():
-+ for fname, ftype in list(self._fields.items()):
- if issubclass(ftype, ContextDerivedValue):
- setattr(self, fname, self._fields[fname](context))
- else:
-@@ -614,8 +613,8 @@
- return _TypedListWithAction
-
- WebPlatformTestManifest = TypedNamedTuple("WebPlatformTestManifest",
-- [("manifest_path", unicode),
-- ("test_root", unicode)])
-+ [("manifest_path", str),
-+ ("test_root", str)])
- ManifestparserManifestList = OrderedListWithAction(read_manifestparser_manifest)
- ReftestManifestList = OrderedListWithAction(read_reftest_manifest)
- WptManifestList = TypedListWithAction(WebPlatformTestManifest, read_wpt_manifest)
-@@ -623,12 +622,12 @@
- OrderedSourceList = ContextDerivedTypedList(SourcePath, StrictOrderingOnAppendList)
- OrderedTestFlavorList = TypedList(Enum(*all_test_flavors()),
- StrictOrderingOnAppendList)
--OrderedStringList = TypedList(unicode, StrictOrderingOnAppendList)
-+OrderedStringList = TypedList(str, StrictOrderingOnAppendList)
- DependentTestsEntry = ContextDerivedTypedRecord(('files', OrderedSourceList),
- ('tags', OrderedStringList),
- ('flavors', OrderedTestFlavorList))
- BugzillaComponent = TypedNamedTuple('BugzillaComponent',
-- [('product', unicode), ('component', unicode)])
-+ [('product', str), ('component', str)])
-
-
- class Files(SubContext):
-@@ -764,7 +763,7 @@
- self.test_tags |= other.test_tags
- self.test_flavors |= other.test_flavors
-
-- for k, v in other.items():
-+ for k, v in list(other.items()):
- if k == 'IMPACTED_TESTS':
- self.test_files |= set(mozpath.relpath(e.full_path, e.context.config.topsrcdir)
- for e in v.files)
-@@ -818,7 +817,7 @@
-
- bug_components = Counter()
-
-- for f in files.values():
-+ for f in list(files.values()):
- bug_component = f.get('BUG_COMPONENT')
- if bug_component:
- bug_components[bug_component] += 1
-@@ -889,11 +888,11 @@
- file.
- """),
-
-- 'ANDROID_APK_NAME': (unicode, unicode,
-+ 'ANDROID_APK_NAME': (str, str,
- """The name of an Android APK file to generate.
- """),
-
-- 'ANDROID_APK_PACKAGE': (unicode, unicode,
-+ 'ANDROID_APK_PACKAGE': (str, str,
- """The name of the Android package to generate R.java for, like org.mozilla.gecko.
- """),
-
-@@ -962,7 +961,7 @@
- """),
-
- 'GENERATED_FILES': (StrictOrderingOnAppendListWithFlagsFactory({
-- 'script': unicode,
-+ 'script': str,
- 'inputs': list }), list,
- """Generic generated files.
-
-@@ -1107,7 +1106,7 @@
- """Like ``OBJDIR_FILES``, with preprocessing. Use sparingly.
- """),
-
-- 'FINAL_LIBRARY': (unicode, unicode,
-+ 'FINAL_LIBRARY': (str, str,
- """Library in which the objects of the current directory will be linked.
-
- This variable contains the name of a library, defined elsewhere with
-@@ -1158,7 +1157,7 @@
- """A list of python unit tests.
- """),
-
-- 'HOST_LIBRARY_NAME': (unicode, unicode,
-+ 'HOST_LIBRARY_NAME': (str, str,
- """Name of target library generated when cross compiling.
- """),
-
-@@ -1176,7 +1175,7 @@
- libraries that link into this library via FINAL_LIBRARY.
- """),
-
-- 'LIBRARY_NAME': (unicode, unicode,
-+ 'LIBRARY_NAME': (str, str,
- """The code name of the library generated for a directory.
-
- By default STATIC_LIBRARY_NAME and SHARED_LIBRARY_NAME take this name.
-@@ -1188,7 +1187,7 @@
- ``example/components/xpcomsample.lib`` on Windows.
- """),
-
-- 'SHARED_LIBRARY_NAME': (unicode, unicode,
-+ 'SHARED_LIBRARY_NAME': (str, str,
- """The name of the static library generated for a directory, if it needs to
- differ from the library code name.
-
-@@ -1202,7 +1201,7 @@
- Implies FORCE_SHARED_LIB.
- """),
-
-- 'STATIC_LIBRARY_NAME': (unicode, unicode,
-+ 'STATIC_LIBRARY_NAME': (str, str,
- """The name of the static library generated for a directory, if it needs to
- differ from the library code name.
-
-@@ -1238,37 +1237,37 @@
-
- This variable contains a list of system libaries to link against.
- """),
-- 'RCFILE': (unicode, unicode,
-+ 'RCFILE': (str, str,
- """The program .rc file.
-
- This variable can only be used on Windows.
- """),
-
-- 'RESFILE': (unicode, unicode,
-+ 'RESFILE': (str, str,
- """The program .res file.
-
- This variable can only be used on Windows.
- """),
-
-- 'RCINCLUDE': (unicode, unicode,
-+ 'RCINCLUDE': (str, str,
- """The resource script file to be included in the default .res file.
-
- This variable can only be used on Windows.
- """),
-
-- 'DEFFILE': (unicode, unicode,
-+ 'DEFFILE': (str, str,
- """The program .def (module definition) file.
-
- This variable can only be used on Windows.
- """),
-
-- 'LD_VERSION_SCRIPT': (unicode, unicode,
-+ 'LD_VERSION_SCRIPT': (str, str,
- """The linker version script for shared libraries.
-
- This variable can only be used on Linux.
- """),
-
-- 'SYMBOLS_FILE': (Path, unicode,
-+ 'SYMBOLS_FILE': (Path, str,
- """A file containing a list of symbols to export from a shared library.
-
- The given file contains a list of symbols to be exported, and is
-@@ -1323,7 +1322,7 @@
- ``BIN_SUFFIX``, the name will remain unchanged.
- """),
-
-- 'SONAME': (unicode, unicode,
-+ 'SONAME': (str, str,
- """The soname of the shared object currently being linked
-
- soname is the "logical name" of a shared object, often used to provide
-@@ -1379,7 +1378,7 @@
- ``GENERATED_FILES``.
- """),
-
-- 'PROGRAM' : (unicode, unicode,
-+ 'PROGRAM' : (str, str,
- """Compiled executable name.
-
- If the configuration token ``BIN_SUFFIX`` is set, its value will be
-@@ -1387,7 +1386,7 @@
- ``BIN_SUFFIX``, ``PROGRAM`` will remain unchanged.
- """),
-
-- 'HOST_PROGRAM' : (unicode, unicode,
-+ 'HOST_PROGRAM' : (str, str,
- """Compiled host executable name.
-
- If the configuration token ``HOST_BIN_SUFFIX`` is set, its value will be
-@@ -1425,7 +1424,7 @@
- files.
- """),
-
-- 'XPIDL_MODULE': (unicode, unicode,
-+ 'XPIDL_MODULE': (str, str,
- """XPCOM Interface Definition Module Name.
-
- This is the name of the ``.xpt`` file that is created by linking
-@@ -1576,14 +1575,14 @@
- """),
-
- # The following variables are used to control the target of installed files.
-- 'XPI_NAME': (unicode, unicode,
-+ 'XPI_NAME': (str, str,
- """The name of an extension XPI to generate.
-
- When this variable is present, the results of this directory will end up
- being packaged into an extension instead of the main dist/bin results.
- """),
-
-- 'DIST_SUBDIR': (unicode, unicode,
-+ 'DIST_SUBDIR': (str, str,
- """The name of an alternate directory to install files to.
-
- When this variable is present, the results of this directory will end up
-@@ -1591,7 +1590,7 @@
- otherwise be placed.
- """),
-
-- 'FINAL_TARGET': (FinalTargetValue, unicode,
-+ 'FINAL_TARGET': (FinalTargetValue, str,
- """The name of the directory to install targets to.
-
- The directory is relative to the top of the object directory. The
-@@ -1622,7 +1621,7 @@
-
- 'GYP_DIRS': (StrictOrderingOnAppendListWithFlagsFactory({
- 'variables': dict,
-- 'input': unicode,
-+ 'input': str,
- 'sandbox_vars': dict,
- 'non_unified_sources': StrictOrderingOnAppendList,
- }), list,
-@@ -1799,7 +1798,7 @@
- }
-
- # Sanity check: we don't want any variable above to have a list as storage type.
--for name, (storage_type, input_types, docs) in VARIABLES.items():
-+for name, (storage_type, input_types, docs) in list(VARIABLES.items()):
- if storage_type == list:
- raise RuntimeError('%s has a "list" storage type. Use "List" instead.'
- % name)
---- mozjs-52.4.0/python/mozbuild/mozbuild/frontend/data.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/frontend/data.py (refactored)
-@@ -15,7 +15,7 @@
- structures.
- """
-
--from __future__ import absolute_import, unicode_literals
-+
-
- from mozbuild.util import StrictOrderingOnAppendList
- from mozpack.chrome.manifest import ManifestEntry
-@@ -186,7 +186,7 @@
- self.defines = defines
-
- def get_defines(self):
-- for define, value in self.defines.iteritems():
-+ for define, value in self.defines.items():
- if value is True:
- yield('-D%s' % define)
- elif value is False:
---- mozjs-52.4.0/python/mozbuild/mozbuild/frontend/emitter.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/frontend/emitter.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import itertools
- import logging
-@@ -120,8 +120,8 @@
- # arguments. This gross hack works around the problem until we
- # rid ourselves of 2.6.
- self.info = {}
-- for k, v in mozinfo.info.items():
-- if isinstance(k, unicode):
-+ for k, v in list(mozinfo.info.items()):
-+ if isinstance(k, str):
- k = k.encode('ascii')
- self.info[k] = v
-
-@@ -197,7 +197,7 @@
-
- def _emit_libs_derived(self, contexts):
- # First do FINAL_LIBRARY linkage.
-- for lib in (l for libs in self._libs.values() for l in libs):
-+ for lib in (l for libs in list(self._libs.values()) for l in libs):
- if not isinstance(lib, (StaticLibrary, RustLibrary)) or not lib.link_into:
- continue
- if lib.link_into not in self._libs:
-@@ -257,12 +257,12 @@
- lib.link_into == outerlib.basename):
- propagate_defines(lib, defines)
-
-- for lib in (l for libs in self._libs.values() for l in libs):
-+ for lib in (l for libs in list(self._libs.values()) for l in libs):
- if isinstance(lib, Library):
- propagate_defines(lib, lib.lib_defines)
- yield lib
-
-- for obj in self._binaries.values():
-+ for obj in list(self._binaries.values()):
- yield obj
-
- LIBRARY_NAME_VAR = {
-@@ -321,7 +321,7 @@
- libs[key] = l
- if key not in libs:
- libs[key] = l
-- candidates = libs.values()
-+ candidates = list(libs.values())
- if force_static and not candidates:
- if dir:
- raise SandboxValidationError(
-@@ -383,9 +383,9 @@
-
- def _verify_deps(self, context, crate_dir, crate_name, dependencies, description='Dependency'):
- """Verify that a crate's dependencies all specify local paths."""
-- for dep_crate_name, values in dependencies.iteritems():
-+ for dep_crate_name, values in dependencies.items():
- # A simple version number.
-- if isinstance(values, (str, unicode)):
-+ if isinstance(values, str):
- raise SandboxValidationError(
- '%s %s of crate %s does not list a path' % (description, dep_crate_name, crate_name),
- context)
-@@ -463,7 +463,7 @@
- ' in [profile.%s] section') % (libname, profile_name),
- context)
-
-- dependencies = set(config.get('dependencies', {}).iterkeys())
-+ dependencies = set(config.get('dependencies', {}).keys())
-
- return RustLibrary(context, libname, cargo_file, crate_type,
- dependencies, **static_args)
-@@ -738,7 +738,7 @@
- assert not gen_sources['UNIFIED_SOURCES']
-
- no_pgo = context.get('NO_PGO')
-- no_pgo_sources = [f for f, flags in all_flags.iteritems()
-+ no_pgo_sources = [f for f, flags in all_flags.items()
- if flags.no_pgo]
- if no_pgo:
- if no_pgo_sources:
-@@ -765,7 +765,7 @@
-
- # The inverse of the above, mapping suffixes to their canonical suffix.
- canonicalized_suffix_map = {}
-- for suffix, alternatives in suffix_map.iteritems():
-+ for suffix, alternatives in suffix_map.items():
- alternatives.add(suffix)
- for a in alternatives:
- canonicalized_suffix_map[a] = suffix
-@@ -786,7 +786,7 @@
- # a directory with mixed C and C++ source, but it's not that important.
- cxx_sources = defaultdict(bool)
-
-- for variable, (klass, gen_klass, suffixes) in varmap.items():
-+ for variable, (klass, gen_klass, suffixes) in list(varmap.items()):
- allowed_suffixes = set().union(*[suffix_map[s] for s in suffixes])
-
- # First ensure that we haven't been given filetypes that we don't
-@@ -812,7 +812,7 @@
- obj = cls(*arglist)
- yield obj
-
-- for f, flags in all_flags.iteritems():
-+ for f, flags in all_flags.items():
- if flags.flags:
- ext = mozpath.splitext(f)[1]
- yield PerSourceFlag(context, f, flags.flags)
-@@ -958,7 +958,7 @@
- for obj in self._handle_linkables(context, passthru, generated_files):
- yield obj
-
-- generated_files.update(['%s%s' % (k, self.config.substs.get('BIN_SUFFIX', '')) for k in self._binaries.keys()])
-+ generated_files.update(['%s%s' % (k, self.config.substs.get('BIN_SUFFIX', '')) for k in list(self._binaries.keys())])
-
- components = []
- for var, cls in (
-@@ -1055,10 +1055,10 @@
- for obj in self._process_jar_manifests(context):
- yield obj
-
-- for name, jar in context.get('JAVA_JAR_TARGETS', {}).items():
-+ for name, jar in list(context.get('JAVA_JAR_TARGETS', {}).items()):
- yield ContextWrapped(context, jar)
-
-- for name, data in context.get('ANDROID_ECLIPSE_PROJECT_TARGETS', {}).items():
-+ for name, data in list(context.get('ANDROID_ECLIPSE_PROJECT_TARGETS', {}).items()):
- yield ContextWrapped(context, data)
-
- if context.get('USE_YASM') is True:
-@@ -1127,7 +1127,7 @@
- script = mozpath.join(mozpath.dirname(mozpath.dirname(__file__)),
- 'action', 'process_define_files.py')
- yield GeneratedFile(context, script, 'process_define_file',
-- unicode(path),
-+ str(path),
- [Path(context, path + '.in')])
-
- generated_files = context.get('GENERATED_FILES')
-@@ -1170,7 +1170,7 @@
- yield GeneratedFile(context, script, method, outputs, inputs)
-
- def _process_test_manifests(self, context):
-- for prefix, info in TEST_MANIFESTS.items():
-+ for prefix, info in list(TEST_MANIFESTS.items()):
- for path, manifest in context.get('%s_MANIFESTS' % prefix, []):
- for obj in self._process_test_manifest(context, info, path, manifest):
- yield obj
-@@ -1261,7 +1261,7 @@
-
- process_support_files(test)
-
-- for path, m_defaults in mpmanifest.manifest_defaults.items():
-+ for path, m_defaults in list(mpmanifest.manifest_defaults.items()):
- process_support_files(m_defaults)
-
- # We also copy manifests into the output directory,
---- mozjs-52.4.0/python/mozbuild/mozbuild/frontend/gyp_reader.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/frontend/gyp_reader.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import gyp
- import sys
-@@ -69,7 +69,7 @@
-
-
- def encode(value):
-- if isinstance(value, unicode):
-+ if isinstance(value, str):
- return value.encode('utf-8')
- return value
-
-@@ -87,7 +87,7 @@
- # gyp expects plain str instead of unicode. The frontend code gives us
- # unicode strings, so convert them.
- path = encode(path)
-- str_vars = dict((name, encode(value)) for name, value in vars.items())
-+ str_vars = dict((name, encode(value)) for name, value in list(vars.items()))
-
- params = {
- b'parallel': False,
-@@ -222,7 +222,7 @@
- if not f:
- continue
- # the result may be a string or a list.
-- if isinstance(f, types.StringTypes):
-+ if isinstance(f, (str,)):
- context[var].append(f)
- else:
- context[var].extend(f)
---- mozjs-52.4.0/python/mozbuild/mozbuild/frontend/mach_commands.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/frontend/mach_commands.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- from collections import defaultdict
- import os
-@@ -105,13 +105,13 @@
- """
- components = defaultdict(set)
- try:
-- for p, m in self._get_files_info(paths, rev=rev).items():
-+ for p, m in list(self._get_files_info(paths, rev=rev).items()):
- components[m.get('BUG_COMPONENT')].add(p)
- except InvalidPathException as e:
- print(e.message)
- return 1
-
-- for component, files in sorted(components.items(), key=lambda x: (x is None, x)):
-+ for component, files in sorted(list(components.items()), key=lambda x: (x is None, x)):
- print('%s :: %s' % (component.product, component.component) if component else 'UNKNOWN')
- for f in sorted(files):
- print(' %s' % f)
-@@ -139,7 +139,7 @@
- help='Paths whose data to query')
- def file_info_test_deps(self, paths, rev=None):
- try:
-- for p, m in self._get_files_info(paths, rev=rev).items():
-+ for p, m in list(self._get_files_info(paths, rev=rev).items()):
- print('%s:' % mozpath.relpath(p, self.topsrcdir))
- if m.test_files:
- print('\tTest file patterns:')
---- mozjs-52.4.0/python/mozbuild/mozbuild/frontend/reader.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/frontend/reader.py (refactored)
-@@ -16,7 +16,7 @@
- It does this by examining specific variables populated during execution.
- """
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import ast
- import inspect
-@@ -80,11 +80,12 @@
- )
-
- from mozbuild.base import ExecutionSummary
-+from functools import reduce
-
-
- if sys.version_info.major == 2:
-- text_type = unicode
-- type_type = types.TypeType
-+ text_type = str
-+ type_type = type
- else:
- text_type = str
- type_type = type
-@@ -126,7 +127,7 @@
- b'JS_STANDALONE': b'1',
- })
- udict = {}
-- for k, v in self.substs.items():
-+ for k, v in list(self.substs.items()):
- if isinstance(v, str):
- udict[k.decode('utf-8')] = v.decode('utf-8')
- else:
-@@ -338,7 +339,7 @@
- raise Exception('`template` is a function decorator. You must '
- 'use it as `@template` preceding a function declaration.')
-
-- name = func.func_name
-+ name = func.__name__
-
- if name in self.templates:
- raise KeyError(
-@@ -417,7 +418,7 @@
- klass = self._context.__class__
- self._context.__class__ = TemplateContext
- # The sandbox will do all the necessary checks for these merges.
-- for key, value in context.items():
-+ for key, value in list(context.items()):
- if isinstance(value, dict):
- self[key].update(value)
- elif isinstance(value, (list, HierarchicalStringList)):
-@@ -434,10 +435,10 @@
-
- class TemplateFunction(object):
- def __init__(self, func, sandbox):
-- self.path = func.func_code.co_filename
-- self.name = func.func_name
--
-- code = func.func_code
-+ self.path = func.__code__.co_filename
-+ self.name = func.__name__
-+
-+ code = func.__code__
- firstlineno = code.co_firstlineno
- lines = sandbox._current_source.splitlines(True)
- lines = inspect.getblock(lines[firstlineno - 1:])
-@@ -476,8 +477,8 @@
- compile(func_ast, self.path, 'exec'),
- glob,
- self.name,
-- func.func_defaults,
-- func.func_closure,
-+ func.__defaults__,
-+ func.__closure__,
- )
- func()
-
-@@ -491,11 +492,11 @@
- '__builtins__': sandbox._builtins
- }
- func = types.FunctionType(
-- self._func.func_code,
-+ self._func.__code__,
- glob,
- self.name,
-- self._func.func_defaults,
-- self._func.func_closure
-+ self._func.__defaults__,
-+ self._func.__closure__
- )
- sandbox.exec_function(func, args, kwargs, self.path,
- becomes_current_path=False)
-@@ -511,7 +512,7 @@
- def visit_Str(self, node):
- # String nodes we got from the AST parser are str, but we want
- # unicode literals everywhere, so transform them.
-- node.s = unicode(node.s)
-+ node.s = str(node.s)
- return node
-
- def visit_Name(self, node):
-@@ -644,7 +645,7 @@
-
- for l in traceback.format_exception(type(self.other), self.other,
- self.trace):
-- s.write(unicode(l))
-+ s.write(str(l))
-
- return s.getvalue()
-
-@@ -794,7 +795,7 @@
- s.write(' %s\n' % inner.args[2])
- s.write('\n')
- close_matches = difflib.get_close_matches(inner.args[2],
-- VARIABLES.keys(), 2)
-+ list(VARIABLES.keys()), 2)
- if close_matches:
- s.write('Maybe you meant %s?\n' % ' or '.join(close_matches))
- s.write('\n')
-@@ -1196,7 +1197,7 @@
-
- recurse_info[d][key] = dict(sandbox.metadata[key])
-
-- for path, child_metadata in recurse_info.items():
-+ for path, child_metadata in list(recurse_info.items()):
- child_path = path.join('moz.build').full_path
-
- # Ensure we don't break out of the topsrcdir. We don't do realpath
-@@ -1288,7 +1289,7 @@
- # There is room to improve this code (and the code in
- # _find_relevant_mozbuilds) to better handle multiple files in the same
- # directory. Bug 1136966 tracks.
-- for path, mbpaths in relevants.items():
-+ for path, mbpaths in list(relevants.items()):
- path_mozbuilds[path] = [mozpath.join(topsrcdir, p) for p in mbpaths]
-
- for i, mbpath in enumerate(mbpaths[0:-1]):
-@@ -1325,7 +1326,7 @@
- all_contexts.append(context)
-
- result = {}
-- for path, paths in path_mozbuilds.items():
-+ for path, paths in list(path_mozbuilds.items()):
- result[path] = reduce(lambda x, y: x + y, (contexts[p] for p in paths), [])
-
- return result, all_contexts
-@@ -1352,7 +1353,7 @@
-
- r = {}
-
-- for path, ctxs in paths.items():
-+ for path, ctxs in list(paths.items()):
- flags = Files(Context())
-
- for ctx in ctxs:
---- mozjs-52.4.0/python/mozbuild/mozbuild/frontend/sandbox.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/frontend/sandbox.py (refactored)
-@@ -17,7 +17,7 @@
- user-friendly error messages in the case of errors.
- """
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import os
- import sys
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/common.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/common.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- from mach.logging import LoggingManager
-
-@@ -36,7 +36,7 @@
- }, **extra_substs)
-
- self.substs_unicode = ReadOnlyDict({k.decode('utf-8'): v.decode('utf-8',
-- 'replace') for k, v in self.substs.items()})
-+ 'replace') for k, v in list(self.substs.items())})
-
- self.defines = self.substs
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/test_base.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/test_base.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import json
- import os
-@@ -12,7 +12,7 @@
- import tempfile
- import unittest
-
--from cStringIO import StringIO
-+from io import StringIO
- from mozfile.mozfile import NamedTemporaryFile
-
- from mozunit import main
-@@ -93,7 +93,7 @@
- mozconfig = os.path.join(d, 'mozconfig')
- with open(mozconfig, 'wt') as fh:
- fh.write('mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/foo/@CONFIG_GUESS@')
-- print('Wrote mozconfig %s' % mozconfig)
-+ print(('Wrote mozconfig %s' % mozconfig))
-
- topobjdir = os.path.join(d, 'foo', guess)
- os.makedirs(topobjdir)
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/test_containers.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/test_containers.py (refactored)
-@@ -152,7 +152,7 @@
-
- self.assertEqual(test['foo'], 1)
-
-- self.assertEqual(test.keys(), ['foo', 'bar' ])
-+ self.assertEqual(list(test.keys()), ['foo', 'bar' ])
-
- def test_defaults(self):
- test = OrderedDefaultDict(bool, {'foo': 1 })
-@@ -161,7 +161,7 @@
-
- self.assertEqual(test['qux'], False)
-
-- self.assertEqual(test.keys(), ['foo', 'qux' ])
-+ self.assertEqual(list(test.keys()), ['foo', 'qux' ])
-
-
- class TestKeyedDefaultDict(unittest.TestCase):
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/test_dotproperties.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/test_dotproperties.py (refactored)
-@@ -1,11 +1,11 @@
- # -*- coding: utf-8 -*-
-
--from __future__ import unicode_literals
-+
-
- import os
- import unittest
-
--from StringIO import StringIO
-+from io import StringIO
-
- import mozpack.path as mozpath
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/test_expression.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/test_expression.py (refactored)
-@@ -25,8 +25,8 @@
-
- def test_in(self):
- """test 'var in context' to not fall for fallback"""
-- self.assert_('FAIL' in self.c)
-- self.assert_('PASS' not in self.c)
-+ self.assertTrue('FAIL' in self.c)
-+ self.assertTrue('PASS' not in self.c)
-
- class TestExpression(unittest.TestCase):
- """
-@@ -48,16 +48,16 @@
-
- def test_not(self):
- """Test for the ! operator"""
-- self.assert_(Expression('!0').evaluate(self.c))
-- self.assert_(not Expression('!1').evaluate(self.c))
-+ self.assertTrue(Expression('!0').evaluate(self.c))
-+ self.assertTrue(not Expression('!1').evaluate(self.c))
-
- def test_equals(self):
- """ Test for the == operator"""
-- self.assert_(Expression('FAIL == PASS').evaluate(self.c))
-+ self.assertTrue(Expression('FAIL == PASS').evaluate(self.c))
-
- def test_notequals(self):
- """ Test for the != operator"""
-- self.assert_(Expression('FAIL != 1').evaluate(self.c))
-+ self.assertTrue(Expression('FAIL != 1').evaluate(self.c))
-
- def test_logical_and(self):
- """ Test for the && operator"""
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/test_jarmaker.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/test_jarmaker.py (refactored)
-@@ -2,14 +2,14 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import print_function
-+
- import unittest
-
- import os, sys, os.path, time, inspect
- from filecmp import dircmp
- from tempfile import mkdtemp
- from shutil import rmtree, copy2
--from StringIO import StringIO
-+from io import StringIO
- from zipfile import ZipFile
- import mozunit
-
-@@ -117,12 +117,12 @@
- """Helper to report rich results on difference between two directories.
- """
- def _fillDiff(self, dc, rv, basepath="{0}"):
-- rv['right_only'] += map(lambda l: basepath.format(l), dc.right_only)
-- rv['left_only'] += map(lambda l: basepath.format(l), dc.left_only)
-- rv['diff_files'] += map(lambda l: basepath.format(l), dc.diff_files)
-- rv['funny'] += map(lambda l: basepath.format(l), dc.common_funny)
-- rv['funny'] += map(lambda l: basepath.format(l), dc.funny_files)
-- for subdir, _dc in dc.subdirs.iteritems():
-+ rv['right_only'] += [basepath.format(l) for l in dc.right_only]
-+ rv['left_only'] += [basepath.format(l) for l in dc.left_only]
-+ rv['diff_files'] += [basepath.format(l) for l in dc.diff_files]
-+ rv['funny'] += [basepath.format(l) for l in dc.common_funny]
-+ rv['funny'] += [basepath.format(l) for l in dc.funny_files]
-+ for subdir, _dc in dc.subdirs.items():
- self._fillDiff(_dc, rv, basepath.format(subdir + "/{0}"))
- def allResults(self, left, right):
- rv = {'right_only':[], 'left_only':[],
-@@ -295,7 +295,7 @@
- ('hoge', 'foo', '2'): ('qux', 'foo', '2'),
- ('hoge', 'baz'): ('qux', 'baz'),
- }
-- for dest, src in expected_symlinks.iteritems():
-+ for dest, src in expected_symlinks.items():
- srcpath = os.path.join(self.srcdir, *src)
- destpath = os.path.join(self.builddir, 'chrome', 'test', 'dir',
- *dest)
-@@ -317,7 +317,7 @@
- def test_en_US(self):
- jm = self.jm
- jm.makeJar(self.fake_empty_file, '/NO_OUTPUT_REQUIRED')
-- self.assertEquals(jm.localedirs,
-+ self.assertEqual(jm.localedirs,
- [
- os.path.join(os.path.abspath('/TOPSOURCEDIR'),
- 'browser/locales', 'en-US')
-@@ -326,13 +326,13 @@
- jm = self.jm
- jm.l10nbase = '/L10N_BASE'
- jm.makeJar(self.fake_empty_file, '/NO_OUTPUT_REQUIRED')
-- self.assertEquals(jm.localedirs, [os.path.join('/L10N_BASE', 'browser')])
-+ self.assertEqual(jm.localedirs, [os.path.join('/L10N_BASE', 'browser')])
- def test_l10n_merge(self):
- jm = self.jm
- jm.l10nbase = '/L10N_BASE'
- jm.l10nmerge = '/L10N_MERGE'
- jm.makeJar(self.fake_empty_file, '/NO_OUTPUT_REQUIRED')
-- self.assertEquals(jm.localedirs,
-+ self.assertEqual(jm.localedirs,
- [os.path.join('/L10N_MERGE', 'browser'),
- os.path.join('/L10N_BASE', 'browser'),
- os.path.join(os.path.abspath('/TOPSOURCEDIR'),
-@@ -346,7 +346,7 @@
- ''')
- jarcontents.name = 'override.mn'
- jm.makeJar(jarcontents, '/NO_OUTPUT_REQUIRED')
-- self.assertEquals(jm.localedirs,
-+ self.assertEqual(jm.localedirs,
- [
- os.path.join(os.path.abspath('/TOPSOURCEDIR'),
- 'dom/locales', 'en-US')
-@@ -360,7 +360,7 @@
- ''')
- jarcontents.name = 'override.mn'
- jm.makeJar(jarcontents, '/NO_OUTPUT_REQUIRED')
-- self.assertEquals(jm.localedirs, [os.path.join('/L10N_BASE', 'dom')])
-+ self.assertEqual(jm.localedirs, [os.path.join('/L10N_BASE', 'dom')])
-
-
- if __name__ == '__main__':
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/test_line_endings.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/test_line_endings.py (refactored)
-@@ -1,6 +1,6 @@
- import unittest
-
--from StringIO import StringIO
-+from io import StringIO
- import os
- import sys
- import os.path
-@@ -30,17 +30,17 @@
- def testMac(self):
- self.createFile(['\x0D']*3)
- self.pp.do_include(self.tempnam)
-- self.assertEquals(self.pp.out.getvalue(), 'a\nb\nc\n')
-+ self.assertEqual(self.pp.out.getvalue(), 'a\nb\nc\n')
-
- def testUnix(self):
- self.createFile(['\x0A']*3)
- self.pp.do_include(self.tempnam)
-- self.assertEquals(self.pp.out.getvalue(), 'a\nb\nc\n')
-+ self.assertEqual(self.pp.out.getvalue(), 'a\nb\nc\n')
-
- def testWindows(self):
- self.createFile(['\x0D\x0A']*3)
- self.pp.do_include(self.tempnam)
-- self.assertEquals(self.pp.out.getvalue(), 'a\nb\nc\n')
-+ self.assertEqual(self.pp.out.getvalue(), 'a\nb\nc\n')
-
- if __name__ == '__main__':
- mozunit.main()
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/test_makeutil.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/test_makeutil.py (refactored)
-@@ -11,7 +11,7 @@
- from mozunit import main
- import os
- import unittest
--from StringIO import StringIO
-+from io import StringIO
-
-
- class TestMakefile(unittest.TestCase):
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/test_mozconfig.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/test_mozconfig.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
- import unittest
-@@ -480,9 +480,9 @@
-
- self.assertTrue(e.exception.message.startswith(
- 'Evaluation of your mozconfig exited with an error'))
-- self.assertEquals(e.exception.path,
-+ self.assertEqual(e.exception.path,
- mozconfig.name.replace(os.sep, '/'))
-- self.assertEquals(e.exception.output, ['hello world'])
-+ self.assertEqual(e.exception.output, ['hello world'])
-
-
- if __name__ == '__main__':
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/test_mozinfo.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/test_mozinfo.py (refactored)
-@@ -8,7 +8,7 @@
- import tempfile
- import unittest
-
--from StringIO import StringIO
-+from io import StringIO
-
- import mozunit
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/test_preprocessor.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/test_preprocessor.py (refactored)
-@@ -4,7 +4,7 @@
-
- import unittest
-
--from StringIO import StringIO
-+from io import StringIO
- import os
- import shutil
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/test_pythonutil.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/test_pythonutil.py (refactored)
-@@ -12,7 +12,7 @@
- def test_iter_modules_in_path(self):
- mozbuild_path = os.path.normcase(os.path.dirname(os.path.dirname(__file__)))
- paths = list(iter_modules_in_path(mozbuild_path))
-- self.assertEquals(sorted(paths), [
-+ self.assertEqual(sorted(paths), [
- os.path.join(os.path.abspath(mozbuild_path), '__init__.py'),
- os.path.join(os.path.abspath(mozbuild_path), 'pythonutil.py'),
- os.path.join(os.path.abspath(mozbuild_path), 'test', 'test_pythonutil.py'),
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/test_testing.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/test_testing.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
--
--import cPickle as pickle
-+
-+
-+import pickle as pickle
- import os
- import shutil
- import tempfile
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/test_util.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/test_util.py (refactored)
-@@ -3,7 +3,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import itertools
- import hashlib
-@@ -110,7 +110,7 @@
- '''
- def __call__(self, name, mode):
- if 'w' in mode:
-- raise Exception, 'Unexpected open with write mode'
-+ raise Exception('Unexpected open with write mode')
- return MockedOpen.__call__(self, name, mode)
-
- with MyMockedOpen({'file': 'content'}):
-@@ -432,7 +432,7 @@
- self.assertEqual(len(l), 0)
- original = ['a', 'b', 'c']
- l = ListWithAction(['a', 'b', 'c'], action=self.action)
-- expected = map(self.action, original)
-+ expected = list(map(self.action, original))
- self.assertSameList(expected, l)
-
- with self.assertRaises(ValueError):
-@@ -445,7 +445,7 @@
- l = ListWithAction(action=self.action)
- original = ['a', 'b']
- l.extend(original)
-- expected = map(self.action, original)
-+ expected = list(map(self.action, original))
- self.assertSameList(expected, l)
-
- with self.assertRaises(ValueError):
-@@ -455,7 +455,7 @@
- l = ListWithAction(action=self.action)
- original = ['a', 'b']
- l[:] = original
-- expected = map(self.action, original)
-+ expected = list(map(self.action, original))
- self.assertSameList(expected, l)
-
- with self.assertRaises(ValueError):
-@@ -465,7 +465,7 @@
- l = ListWithAction(action=self.action)
- original = ['a', 'b']
- l2 = l + original
-- expected = map(self.action, original)
-+ expected = list(map(self.action, original))
- self.assertSameList(expected, l2)
-
- with self.assertRaises(ValueError):
-@@ -475,7 +475,7 @@
- l = ListWithAction(action=self.action)
- original = ['a', 'b']
- l += original
-- expected = map(self.action, original)
-+ expected = list(map(self.action, original))
- self.assertSameList(expected, l)
-
- with self.assertRaises(ValueError):
-@@ -524,7 +524,7 @@
-
- def test_strict_ordering_on_append_list_with_flags_factory_extend(self):
- FooList = StrictOrderingOnAppendListWithFlagsFactory({
-- 'foo': bool, 'bar': unicode
-+ 'foo': bool, 'bar': str
- })
- foo = FooList(['a', 'b', 'c'])
- foo['a'].foo = True
-@@ -532,7 +532,7 @@
-
- # Don't allow extending lists with different flag definitions.
- BarList = StrictOrderingOnAppendListWithFlagsFactory({
-- 'foo': unicode, 'baz': bool
-+ 'foo': str, 'baz': bool
- })
- bar = BarList(['d', 'e', 'f'])
- bar['d'].foo = 'foo'
-@@ -752,9 +752,9 @@
-
- class TypedTestStrictOrderingOnAppendList(unittest.TestCase):
- def test_init(self):
-- class Unicode(unicode):
-+ class Unicode(str):
- def __init__(self, other):
-- if not isinstance(other, unicode):
-+ if not isinstance(other, str):
- raise ValueError()
- super(Unicode, self).__init__(other)
-
-@@ -776,14 +776,14 @@
-
- class TestTypedNamedTuple(unittest.TestCase):
- def test_simple(self):
-- FooBar = TypedNamedTuple('FooBar', [('foo', unicode), ('bar', int)])
-+ FooBar = TypedNamedTuple('FooBar', [('foo', str), ('bar', int)])
-
- t = FooBar(foo='foo', bar=2)
-- self.assertEquals(type(t), FooBar)
-- self.assertEquals(t.foo, 'foo')
-- self.assertEquals(t.bar, 2)
-- self.assertEquals(t[0], 'foo')
-- self.assertEquals(t[1], 2)
-+ self.assertEqual(type(t), FooBar)
-+ self.assertEqual(t.foo, 'foo')
-+ self.assertEqual(t.bar, 2)
-+ self.assertEqual(t[0], 'foo')
-+ self.assertEqual(t[1], 2)
-
- FooBar('foo', 2)
-
-@@ -796,7 +796,7 @@
- # arguments.
- t1 = ('foo', 3)
- t2 = FooBar(t1)
-- self.assertEquals(type(t2), FooBar)
-+ self.assertEqual(type(t2), FooBar)
- self.assertEqual(FooBar(t1), FooBar('foo', 3))
-
-
-@@ -871,18 +871,18 @@
- CompilerType = EnumString.subclass('msvc', 'gcc', 'clang', 'clang-cl')
-
- type = CompilerType('msvc')
-- self.assertEquals(type, 'msvc')
-- self.assertNotEquals(type, 'gcc')
-- self.assertNotEquals(type, 'clang')
-- self.assertNotEquals(type, 'clang-cl')
-+ self.assertEqual(type, 'msvc')
-+ self.assertNotEqual(type, 'gcc')
-+ self.assertNotEqual(type, 'clang')
-+ self.assertNotEqual(type, 'clang-cl')
- self.assertIn(type, ('msvc', 'clang-cl'))
- self.assertNotIn(type, ('gcc', 'clang'))
-
- with self.assertRaises(EnumStringComparisonError):
-- self.assertEquals(type, 'foo')
-+ self.assertEqual(type, 'foo')
-
- with self.assertRaises(EnumStringComparisonError):
-- self.assertNotEquals(type, 'foo')
-+ self.assertNotEqual(type, 'foo')
-
- with self.assertRaises(EnumStringComparisonError):
- self.assertIn(type, ('foo', 'gcc'))
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/action/test_buildlist.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/action/test_buildlist.py (refactored)
-@@ -38,11 +38,11 @@
- lines = [line.rstrip() for line in f.readlines()]
- f.close()
- for line in lines:
-- self.assert_(len(l) > 0,
-+ self.assertTrue(len(l) > 0,
- "ran out of expected lines! (expected '{0}', got '{1}')"
- .format(l, lines))
- self.assertEqual(line, l.pop(0))
-- self.assert_(len(l) == 0,
-+ self.assertTrue(len(l) == 0,
- "not enough lines in file! (expected '{0}',"
- " got '{1}'".format(l, lines))
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/action/test_generate_browsersearch.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/action/test_generate_browsersearch.py (refactored)
-@@ -3,7 +3,7 @@
- # Any copyright is dedicated to the Public Domain.
- # http://creativecommons.org/publicdomain/zero/1.0/
-
--from __future__ import unicode_literals
-+
-
- import json
- import os
-@@ -43,8 +43,8 @@
-
- def test_valid_unicode(self):
- o = self._test_one('valid-zh-CN')
-- self.assertEquals(o['default'], '百度')
-- self.assertEquals(o['engines'], ['百度', 'Google'])
-+ self.assertEqual(o['default'], '百度')
-+ self.assertEqual(o['engines'], ['百度', 'Google'])
-
- def test_invalid_unicode(self):
- with self.assertRaises(UnicodeDecodeError):
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/action/test_package_fennec_apk.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/action/test_package_fennec_apk.py (refactored)
-@@ -3,7 +3,7 @@
- # Any copyright is dedicated to the Public Domain.
- # http://creativecommons.org/publicdomain/zero/1.0/
-
--from __future__ import unicode_literals
-+
-
- import os
- import unittest
-@@ -41,14 +41,14 @@
- root_files=[data('root_file.txt')])
-
- # omni.ja ends up in assets/omni.ja.
-- self.assertEquals(jarrer['assets/omni.ja'].open().read().strip(), 'omni.ja')
-+ self.assertEqual(jarrer['assets/omni.ja'].open().read().strip(), 'omni.ja')
-
- # Everything else is in place.
- for name in ('classes.dex',
- 'assets/asset.txt',
- 'lib/lib.txt',
- 'root_file.txt'):
-- self.assertEquals(jarrer[name].open().read().strip(), name)
-+ self.assertEqual(jarrer[name].open().read().strip(), name)
-
- def test_inputs(self):
- # Language repacks take updated resources from an ap_ and pack them
-@@ -57,8 +57,8 @@
- # overrides the first.
- jarrer = package(inputs=[data('input2.apk'), data('input1.ap_')])
-
-- files1 = JarReader(data('input1.ap_')).entries.keys()
-- files2 = JarReader(data('input2.apk')).entries.keys()
-+ files1 = list(JarReader(data('input1.ap_')).entries.keys())
-+ files2 = list(JarReader(data('input2.apk')).entries.keys())
- for name in files2:
- self.assertTrue(name in files1 or
- jarrer[name].open().read().startswith('input2/'))
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/backend/common.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/backend/common.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
- import unittest
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/backend/test_android_eclipse.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/backend/test_android_eclipse.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import json
- import os
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/backend/test_build.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/backend/test_build.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals, print_function
-+
-
- import buildconfig
- import os
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/backend/test_configenvironment.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/backend/test_configenvironment.py (refactored)
-@@ -3,7 +3,7 @@
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
- import os, posixpath
--from StringIO import StringIO
-+from io import StringIO
- import unittest
- from mozunit import main, MockedOpen
-
-@@ -29,7 +29,7 @@
- self.substs = ReadOnlyDict(d)
-
- d = dict(self.substs_unicode)
-- d[u'top_srcdir'] = top_srcdir.decode('utf-8')
-+ d['top_srcdir'] = top_srcdir.decode('utf-8')
- self.substs_unicode = ReadOnlyDict(d)
-
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/backend/test_recursivemake.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/backend/test_recursivemake.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
--
--import cPickle as pickle
-+
-+
-+import pickle as pickle
- import json
- import os
- import unittest
-@@ -331,7 +331,7 @@
- ],
- }
-
-- for var, val in expected.items():
-+ for var, val in list(expected.items()):
- # print("test_variable_passthru[%s]" % (var))
- found = [str for str in lines if str.startswith(var)]
- self.assertEqual(found, val)
-@@ -370,7 +370,7 @@
- ],
- }
-
-- for var, val in expected.items():
-+ for var, val in list(expected.items()):
- found = [str for str in lines if str.startswith(var)]
- self.assertEqual(found, val)
-
-@@ -544,7 +544,7 @@
-
- # This is not the most robust test in the world, but it gets the job
- # done.
-- entries = [e for e in m._dests.keys() if '**' in e]
-+ entries = [e for e in list(m._dests.keys()) if '**' in e]
- self.assertEqual(len(entries), 1)
- self.assertIn('support/**', entries[0])
-
-@@ -562,7 +562,7 @@
- set(['child/test_sub.js',
- 'child/data/**',
- 'child/another-file.sjs']))
-- for key in test_installs.keys():
-+ for key in list(test_installs.keys()):
- self.assertIn(key, test_installs)
-
- test_files_manifest = mozpath.join(env.topobjdir,
-@@ -576,7 +576,7 @@
- # Then, synthesize one from the test-installs.pkl file. This should
- # allow us to re-create a subset of the above.
- synthesized_manifest = InstallManifest()
-- for item, installs in test_installs.items():
-+ for item, installs in list(test_installs.items()):
- for install_info in installs:
- if len(install_info) == 3:
- synthesized_manifest.add_pattern_symlink(*install_info)
-@@ -584,7 +584,7 @@
- synthesized_manifest.add_symlink(*install_info)
-
- self.assertEqual(len(synthesized_manifest), 3)
-- for item, info in synthesized_manifest._dests.items():
-+ for item, info in list(synthesized_manifest._dests.items()):
- self.assertIn(item, m)
- self.assertEqual(info, m._dests[item])
-
-@@ -758,7 +758,7 @@
- expected[mozpath.join(env.topobjdir, 'final-target')] = [
- 'FINAL_TARGET = $(DEPTH)/random-final-target'
- ]
-- for key, expected_rules in expected.iteritems():
-+ for key, expected_rules in expected.items():
- backend_path = mozpath.join(key, 'backend.mk')
- lines = [l.strip() for l in open(backend_path, 'rt').readlines()[2:]]
- found = [str for str in lines if
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/backend/test_visualstudio.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/backend/test_visualstudio.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- from xml.dom.minidom import parse
- import os
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/common.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/common.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import copy
- import errno
-@@ -16,7 +16,7 @@
- from mozbuild.util import ReadOnlyNamespace
- from mozpack import path as mozpath
-
--from StringIO import StringIO
-+from io import StringIO
- from which import WhichError
-
- from buildconfig import (
-@@ -78,10 +78,10 @@
- self._search_path = environ.get('PATH', '').split(os.pathsep)
-
- self._subprocess_paths = {
-- mozpath.abspath(k): v for k, v in paths.iteritems() if v
-+ mozpath.abspath(k): v for k, v in paths.items() if v
- }
-
-- paths = paths.keys()
-+ paths = list(paths.keys())
-
- environ = dict(environ)
- if 'CONFIG_SHELL' not in environ:
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/lint.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/lint.py (refactored)
-@@ -2,11 +2,11 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import os
- import unittest
--from StringIO import StringIO
-+from io import StringIO
- from mozunit import main
- from buildconfig import (
- topobjdir,
-@@ -42,9 +42,7 @@
- return type.__new__(mcs, name, bases, attrs)
-
-
--class Lint(unittest.TestCase):
-- __metaclass__ = LintMeta
--
-+class Lint(unittest.TestCase, metaclass=LintMeta):
- def setUp(self):
- self._curdir = os.getcwd()
- os.chdir(topobjdir)
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_checks_configure.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_checks_configure.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
--
--from StringIO import StringIO
-+
-+
-+from io import StringIO
- import os
- import sys
- import textwrap
-@@ -447,7 +447,7 @@
- checking for a... %s
- ''' % self.OTHER_A))
-
-- dirs = map(mozpath.dirname, (self.OTHER_A, self.KNOWN_A))
-+ dirs = list(map(mozpath.dirname, (self.OTHER_A, self.KNOWN_A)))
- config, out, status = self.get_result(textwrap.dedent('''\
- check_prog("A", ("known-a",), paths=["%s"])
- ''' % os.pathsep.join(dirs)))
-@@ -457,7 +457,7 @@
- checking for a... %s
- ''' % self.OTHER_A))
-
-- dirs = map(mozpath.dirname, (self.KNOWN_A, self.KNOWN_B))
-+ dirs = list(map(mozpath.dirname, (self.KNOWN_A, self.KNOWN_B)))
- config, out, status = self.get_result(textwrap.dedent('''\
- check_prog("A", ("known-a",), paths=["%s", "%s"])
- ''' % (os.pathsep.join(dirs), self.OTHER_A)))
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_compile_checks.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_compile_checks.py (refactored)
-@@ -2,14 +2,14 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import os
- import textwrap
- import unittest
- import mozpack.path as mozpath
-
--from StringIO import StringIO
-+from io import StringIO
-
- from buildconfig import topsrcdir
- from common import ConfigureTestSandbox
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_configure.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_configure.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
--
--from StringIO import StringIO
-+
-+
-+from io import StringIO
- import os
- import sys
- import textwrap
-@@ -43,7 +43,7 @@
-
- if '--help' in options:
- return out.getvalue(), config
-- self.assertEquals('', out.getvalue())
-+ self.assertEqual('', out.getvalue())
- return config
-
- def moz_configure(self, source):
-@@ -55,7 +55,7 @@
- def test_defaults(self):
- config = self.get_config()
- self.maxDiff = None
-- self.assertEquals({
-+ self.assertEqual({
- 'CHOICES': NegativeOptionValue(),
- 'DEFAULTED': PositiveOptionValue(('not-simple',)),
- 'IS_GCC': NegativeOptionValue(),
-@@ -71,9 +71,9 @@
- def test_help(self):
- help, config = self.get_config(['--help'], prog='configure')
-
-- self.assertEquals({}, config)
-+ self.assertEqual({}, config)
- self.maxDiff = None
-- self.assertEquals(
-+ self.assertEqual(
- 'Usage: configure [options]\n'
- '\n'
- 'Options: [defaults in brackets after descriptions]\n'
-@@ -109,7 +109,7 @@
- ):
- self.assertNotIn('ENABLED_SIMPLE', config)
- self.assertIn('SIMPLE', config)
-- self.assertEquals(NegativeOptionValue(), config['SIMPLE'])
-+ self.assertEqual(NegativeOptionValue(), config['SIMPLE'])
-
- for config in (
- self.get_config(['--enable-simple']),
-@@ -117,7 +117,7 @@
- ):
- self.assertIn('ENABLED_SIMPLE', config)
- self.assertIn('SIMPLE', config)
-- self.assertEquals(PositiveOptionValue(), config['SIMPLE'])
-+ self.assertEqual(PositiveOptionValue(), config['SIMPLE'])
- self.assertIs(config['SIMPLE'], config['ENABLED_SIMPLE'])
-
- # --enable-simple doesn't take values.
-@@ -135,7 +135,7 @@
- env={'MOZ_WITH_ENV': '1'}),
- ):
- self.assertIn('WITH_ENV', config)
-- self.assertEquals(NegativeOptionValue(), config['WITH_ENV'])
-+ self.assertEqual(NegativeOptionValue(), config['WITH_ENV'])
-
- for config in (
- self.get_config(['--enable-with-env']),
-@@ -145,7 +145,7 @@
- env={'MOZ_WITH_ENV': ''}),
- ):
- self.assertIn('WITH_ENV', config)
-- self.assertEquals(PositiveOptionValue(), config['WITH_ENV'])
-+ self.assertEqual(PositiveOptionValue(), config['WITH_ENV'])
-
- with self.assertRaises(InvalidOptionError):
- self.get_config(['--enable-with-env=value'])
-@@ -160,23 +160,23 @@
- self.get_config(['--enable-values', '--disable-values']),
- ):
- self.assertIn(name, config)
-- self.assertEquals(NegativeOptionValue(), config[name])
-+ self.assertEqual(NegativeOptionValue(), config[name])
-
- for config in (
- self.get_config(['--enable-values']),
- self.get_config(['--disable-values', '--enable-values']),
- ):
- self.assertIn(name, config)
-- self.assertEquals(PositiveOptionValue(), config[name])
-+ self.assertEqual(PositiveOptionValue(), config[name])
-
- config = self.get_config(['--enable-values=foo'])
- self.assertIn(name, config)
-- self.assertEquals(PositiveOptionValue(('foo',)), config[name])
-+ self.assertEqual(PositiveOptionValue(('foo',)), config[name])
-
- config = self.get_config(['--enable-values=foo,bar'])
- self.assertIn(name, config)
- self.assertTrue(config[name])
-- self.assertEquals(PositiveOptionValue(('foo', 'bar')), config[name])
-+ self.assertEqual(PositiveOptionValue(('foo', 'bar')), config[name])
-
- def test_values2(self):
- self.test_values('VALUES2')
-@@ -187,12 +187,12 @@
- def test_returned_default(self):
- config = self.get_config(['--enable-simple'])
- self.assertIn('DEFAULTED', config)
-- self.assertEquals(
-+ self.assertEqual(
- PositiveOptionValue(('simple',)), config['DEFAULTED'])
-
- config = self.get_config(['--disable-simple'])
- self.assertIn('DEFAULTED', config)
-- self.assertEquals(
-+ self.assertEqual(
- PositiveOptionValue(('not-simple',)), config['DEFAULTED'])
-
- def test_returned_choices(self):
-@@ -200,13 +200,13 @@
- config = self.get_config(
- ['--enable-values=alpha', '--returned-choices=%s' % val])
- self.assertIn('CHOICES', config)
-- self.assertEquals(PositiveOptionValue((val,)), config['CHOICES'])
-+ self.assertEqual(PositiveOptionValue((val,)), config['CHOICES'])
-
- for val in ('0', '1', '2'):
- config = self.get_config(
- ['--enable-values=numeric', '--returned-choices=%s' % val])
- self.assertIn('CHOICES', config)
-- self.assertEquals(PositiveOptionValue((val,)), config['CHOICES'])
-+ self.assertEqual(PositiveOptionValue((val,)), config['CHOICES'])
-
- with self.assertRaises(InvalidOptionError):
- self.get_config(['--enable-values=numeric',
-@@ -218,12 +218,12 @@
- def test_included(self):
- config = self.get_config(env={'CC': 'gcc'})
- self.assertIn('IS_GCC', config)
-- self.assertEquals(config['IS_GCC'], True)
-+ self.assertEqual(config['IS_GCC'], True)
-
- config = self.get_config(
- ['--enable-include=extra.configure', '--extra'])
- self.assertIn('EXTRA', config)
-- self.assertEquals(PositiveOptionValue(), config['EXTRA'])
-+ self.assertEqual(PositiveOptionValue(), config['EXTRA'])
-
- with self.assertRaises(InvalidOptionError):
- self.get_config(['--extra'])
-@@ -231,7 +231,7 @@
- def test_template(self):
- config = self.get_config(env={'CC': 'gcc'})
- self.assertIn('CFLAGS', config)
-- self.assertEquals(config['CFLAGS'], ['-Werror=foobar'])
-+ self.assertEqual(config['CFLAGS'], ['-Werror=foobar'])
-
- config = self.get_config(env={'CC': 'clang'})
- self.assertNotIn('CFLAGS', config)
-@@ -288,7 +288,7 @@
- sandbox
- )
-
-- import __builtin__
-+ import builtins
- self.assertIs(sandbox['foo'](), __builtin__)
-
- exec_(textwrap.dedent('''
-@@ -300,7 +300,7 @@
- )
-
- f = sandbox['foo']()
-- self.assertEquals(f.name, os.devnull)
-+ self.assertEqual(f.name, os.devnull)
- f.close()
-
- # This unlocks the sandbox
-@@ -336,8 +336,8 @@
- self.assertIs(sandbox['foo'](), sandbox)
-
- # Nothing leaked from the function being executed
-- self.assertEquals(sandbox.keys(), ['__builtins__', 'foo'])
-- self.assertEquals(sandbox['__builtins__'], ConfigureSandbox.BUILTINS)
-+ self.assertEqual(list(sandbox.keys()), ['__builtins__', 'foo'])
-+ self.assertEqual(sandbox['__builtins__'], ConfigureSandbox.BUILTINS)
-
- exec_(textwrap.dedent('''
- @template
-@@ -354,7 +354,7 @@
- with self.assertRaises(NameError) as e:
- sandbox._depends[sandbox['bar']].result
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "global name 'sys' is not defined")
-
- def test_apply_imports(self):
-@@ -380,28 +380,28 @@
- sandbox
- )
-
-- self.assertEquals(len(imports), 1)
-+ self.assertEqual(len(imports), 1)
-
- def test_os_path(self):
- config = self.get_config(['--with-imports=%s' % __file__])
- self.assertIn('HAS_ABSPATH', config)
-- self.assertEquals(config['HAS_ABSPATH'], True)
-+ self.assertEqual(config['HAS_ABSPATH'], True)
- self.assertIn('HAS_GETATIME', config)
-- self.assertEquals(config['HAS_GETATIME'], True)
-+ self.assertEqual(config['HAS_GETATIME'], True)
- self.assertIn('HAS_GETATIME2', config)
-- self.assertEquals(config['HAS_GETATIME2'], False)
-+ self.assertEqual(config['HAS_GETATIME2'], False)
-
- def test_template_call(self):
- config = self.get_config(env={'CC': 'gcc'})
- self.assertIn('TEMPLATE_VALUE', config)
-- self.assertEquals(config['TEMPLATE_VALUE'], 42)
-+ self.assertEqual(config['TEMPLATE_VALUE'], 42)
- self.assertIn('TEMPLATE_VALUE_2', config)
-- self.assertEquals(config['TEMPLATE_VALUE_2'], 21)
-+ self.assertEqual(config['TEMPLATE_VALUE_2'], 21)
-
- def test_template_imports(self):
- config = self.get_config(['--enable-imports-in-template'])
- self.assertIn('PLATFORM', config)
-- self.assertEquals(config['PLATFORM'], sys.platform)
-+ self.assertEqual(config['PLATFORM'], sys.platform)
-
- def test_decorators(self):
- config = {}
-@@ -419,27 +419,27 @@
- return self.get_config(*args, configure='set_config.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config(['--set-foo'])
- self.assertIn('FOO', config)
-- self.assertEquals(config['FOO'], True)
-+ self.assertEqual(config['FOO'], True)
-
- config = get_config(['--set-bar'])
- self.assertNotIn('FOO', config)
- self.assertIn('BAR', config)
-- self.assertEquals(config['BAR'], True)
-+ self.assertEqual(config['BAR'], True)
-
- config = get_config(['--set-value=qux'])
- self.assertIn('VALUE', config)
-- self.assertEquals(config['VALUE'], 'qux')
-+ self.assertEqual(config['VALUE'], 'qux')
-
- config = get_config(['--set-name=hoge'])
- self.assertIn('hoge', config)
-- self.assertEquals(config['hoge'], True)
-+ self.assertEqual(config['hoge'], True)
-
- config = get_config([])
-- self.assertEquals(config, {'BAR': False})
-+ self.assertEqual(config, {'BAR': False})
-
- with self.assertRaises(ConfigureError):
- # Both --set-foo and --set-name=FOO are going to try to
-@@ -454,11 +454,11 @@
- set_config('QUX', 'qux', when='--with-qux')
- '''):
- config = self.get_config()
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': 'foo',
- })
- config = self.get_config(['--with-qux'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': 'foo',
- 'QUX': 'qux',
- })
-@@ -468,27 +468,27 @@
- return self.get_config(*args, configure='set_define.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {'DEFINES': {}})
-+ self.assertEqual(config, {'DEFINES': {}})
-
- config = get_config(['--set-foo'])
- self.assertIn('FOO', config['DEFINES'])
-- self.assertEquals(config['DEFINES']['FOO'], True)
-+ self.assertEqual(config['DEFINES']['FOO'], True)
-
- config = get_config(['--set-bar'])
- self.assertNotIn('FOO', config['DEFINES'])
- self.assertIn('BAR', config['DEFINES'])
-- self.assertEquals(config['DEFINES']['BAR'], True)
-+ self.assertEqual(config['DEFINES']['BAR'], True)
-
- config = get_config(['--set-value=qux'])
- self.assertIn('VALUE', config['DEFINES'])
-- self.assertEquals(config['DEFINES']['VALUE'], 'qux')
-+ self.assertEqual(config['DEFINES']['VALUE'], 'qux')
-
- config = get_config(['--set-name=hoge'])
- self.assertIn('hoge', config['DEFINES'])
-- self.assertEquals(config['DEFINES']['hoge'], True)
-+ self.assertEqual(config['DEFINES']['hoge'], True)
-
- config = get_config([])
-- self.assertEquals(config['DEFINES'], {'BAR': False})
-+ self.assertEqual(config['DEFINES'], {'BAR': False})
-
- with self.assertRaises(ConfigureError):
- # Both --set-foo and --set-name=FOO are going to try to
-@@ -503,11 +503,11 @@
- set_define('QUX', 'qux', when='--with-qux')
- '''):
- config = self.get_config()
-- self.assertEquals(config['DEFINES'], {
-+ self.assertEqual(config['DEFINES'], {
- 'FOO': 'foo',
- })
- config = self.get_config(['--with-qux'])
-- self.assertEquals(config['DEFINES'], {
-+ self.assertEqual(config['DEFINES'], {
- 'FOO': 'foo',
- 'QUX': 'qux',
- })
-@@ -518,19 +518,19 @@
- *args, configure='imply_option/simple.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config([])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config(['--enable-foo'])
- self.assertIn('BAR', config)
-- self.assertEquals(config['BAR'], PositiveOptionValue())
-+ self.assertEqual(config['BAR'], PositiveOptionValue())
-
- with self.assertRaises(InvalidOptionError) as e:
- get_config(['--enable-foo', '--disable-bar'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- "'--enable-bar' implied by '--enable-foo' conflicts with "
- "'--disable-bar' from the command-line")
-@@ -541,31 +541,31 @@
- *args, configure='imply_option/negative.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config([])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config(['--enable-foo'])
- self.assertIn('BAR', config)
-- self.assertEquals(config['BAR'], NegativeOptionValue())
-+ self.assertEqual(config['BAR'], NegativeOptionValue())
-
- with self.assertRaises(InvalidOptionError) as e:
- get_config(['--enable-foo', '--enable-bar'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- "'--disable-bar' implied by '--enable-foo' conflicts with "
- "'--enable-bar' from the command-line")
-
- config = get_config(['--disable-hoge'])
- self.assertIn('BAR', config)
-- self.assertEquals(config['BAR'], NegativeOptionValue())
-+ self.assertEqual(config['BAR'], NegativeOptionValue())
-
- with self.assertRaises(InvalidOptionError) as e:
- get_config(['--disable-hoge', '--enable-bar'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- "'--disable-bar' implied by '--disable-hoge' conflicts with "
- "'--enable-bar' from the command-line")
-@@ -576,23 +576,23 @@
- *args, configure='imply_option/values.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config([])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config(['--enable-foo=a'])
- self.assertIn('BAR', config)
-- self.assertEquals(config['BAR'], PositiveOptionValue(('a',)))
-+ self.assertEqual(config['BAR'], PositiveOptionValue(('a',)))
-
- config = get_config(['--enable-foo=a,b'])
- self.assertIn('BAR', config)
-- self.assertEquals(config['BAR'], PositiveOptionValue(('a','b')))
-+ self.assertEqual(config['BAR'], PositiveOptionValue(('a','b')))
-
- with self.assertRaises(InvalidOptionError) as e:
- get_config(['--enable-foo=a,b', '--disable-bar'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- "'--enable-bar=a,b' implied by '--enable-foo' conflicts with "
- "'--disable-bar' from the command-line")
-@@ -603,15 +603,15 @@
- *args, configure='imply_option/infer.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config([])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- with self.assertRaises(InvalidOptionError) as e:
- get_config(['--enable-foo', '--disable-bar'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- "'--enable-bar' implied by '--enable-foo' conflicts with "
- "'--disable-bar' from the command-line")
-@@ -619,7 +619,7 @@
- with self.assertRaises(ConfigureError) as e:
- self.get_config([], configure='imply_option/infer_ko.configure')
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- "Cannot infer what implies '--enable-bar'. Please add a `reason` "
- "to the `imply_option` call.")
-@@ -630,25 +630,25 @@
- *args, configure='imply_option/imm.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config([])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config_path = mozpath.abspath(
- mozpath.join(test_data_path, 'imply_option', 'imm.configure'))
-
-- with self.assertRaisesRegexp(InvalidOptionError,
-+ with self.assertRaisesRegex(InvalidOptionError,
- "--enable-foo' implied by 'imply_option at %s:7' conflicts with "
- "'--disable-foo' from the command-line" % config_path):
- get_config(['--disable-foo'])
-
-- with self.assertRaisesRegexp(InvalidOptionError,
-+ with self.assertRaisesRegex(InvalidOptionError,
- "--enable-bar=foo,bar' implied by 'imply_option at %s:16' conflicts"
- " with '--enable-bar=a,b,c' from the command-line" % config_path):
- get_config(['--enable-bar=a,b,c'])
-
-- with self.assertRaisesRegexp(InvalidOptionError,
-+ with self.assertRaisesRegex(InvalidOptionError,
- "--enable-baz=BAZ' implied by 'imply_option at %s:25' conflicts"
- " with '--enable-baz=QUUX' from the command-line" % config_path):
- get_config(['--enable-baz=QUUX'])
-@@ -660,7 +660,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "`--with-foo`, emitted from `%s` line 2, is unknown."
- % mozpath.join(test_data_path, 'moz.configure'))
-
-@@ -675,7 +675,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Unexpected type: 'int'")
-
- def test_imply_option_when(self):
-@@ -686,12 +686,12 @@
- set_config('QUX', depends('--with-qux')(lambda x: x))
- '''):
- config = self.get_config()
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'QUX': NegativeOptionValue(),
- })
-
- config = self.get_config(['--with-foo'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'QUX': PositiveOptionValue(),
- })
-
-@@ -700,7 +700,7 @@
- with self.moz_configure('option("--with-foo", help="foo")'):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Option `--with-foo` is not handled ; reference it with a @depends'
- )
-@@ -712,7 +712,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Option `--with-foo` already defined'
- )
-@@ -724,7 +724,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Option `MOZ_FOO` already defined'
- )
-@@ -736,7 +736,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Option `MOZ_FOO` already defined'
- )
-@@ -748,7 +748,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Option `MOZ_FOO` already defined'
- )
-@@ -760,7 +760,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Option `--with-foo` already defined'
- )
-@@ -776,18 +776,18 @@
- set_config('QUX', depends('--with-qux', when='--with-foo')(lambda x: x))
- '''):
- config = self.get_config()
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': NegativeOptionValue(),
- })
-
- config = self.get_config(['--with-foo'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': PositiveOptionValue(),
- 'QUX': NegativeOptionValue(),
- })
-
- config = self.get_config(['--with-foo', '--with-qux'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': PositiveOptionValue(),
- 'QUX': PositiveOptionValue(),
- })
-@@ -795,7 +795,7 @@
- with self.assertRaises(InvalidOptionError) as e:
- self.get_config(['--with-bar'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- '--with-bar is not available in this configuration'
- )
-@@ -803,7 +803,7 @@
- with self.assertRaises(InvalidOptionError) as e:
- self.get_config(['--with-qux'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- '--with-qux is not available in this configuration'
- )
-@@ -811,18 +811,18 @@
- with self.assertRaises(InvalidOptionError) as e:
- self.get_config(['QUX=1'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'QUX is not available in this configuration'
- )
-
- config = self.get_config(env={'QUX': '1'})
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': NegativeOptionValue(),
- })
-
- help, config = self.get_config(['--help'])
-- self.assertEquals(help, textwrap.dedent('''\
-+ self.assertEqual(help, textwrap.dedent('''\
- Usage: configure [options]
-
- Options: [defaults in brackets after descriptions]
-@@ -833,7 +833,7 @@
- '''))
-
- help, config = self.get_config(['--help', '--with-foo'])
-- self.assertEquals(help, textwrap.dedent('''\
-+ self.assertEqual(help, textwrap.dedent('''\
- Usage: configure [options]
-
- Options: [defaults in brackets after descriptions]
-@@ -851,7 +851,7 @@
- with self.assertRaises(ConfigureError) as e:
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '@depends function needs the same `when` as '
- 'options it depends on')
-
-@@ -868,7 +868,7 @@
- with self.assertRaises(ConfigureError) as e:
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '@depends function needs the same `when` as '
- 'options it depends on')
-
-@@ -877,7 +877,7 @@
- with self.moz_configure('include("../foo.configure")'):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Cannot include `%s` because it is not in a subdirectory of `%s`'
- % (mozpath.normpath(mozpath.join(test_data_path, '..',
-@@ -892,7 +892,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Cannot include `%s` because it was included already.'
- % mozpath.normpath(mozpath.join(test_data_path,
-@@ -905,7 +905,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message, "Unexpected type: 'int'")
-+ self.assertEqual(e.exception.message, "Unexpected type: 'int'")
-
- def test_include_when(self):
- with MockedOpen({
-@@ -948,26 +948,26 @@
- '''),
- }):
- config = self.get_config()
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = self.get_config(['--with-foo'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = self.get_config(['--with-bar'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'BAR': 'bar',
- })
-
- with self.assertRaises(InvalidOptionError) as e:
- self.get_config(['--with-qux'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- '--with-qux is not available in this configuration'
- )
-
- config = self.get_config(['--with-foo', '--with-foo-really'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': 'foo',
- 'FOO2': True,
- })
-@@ -979,7 +979,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message, 'Cannot reassign builtins')
-+ self.assertEqual(e.exception.message, 'Cannot reassign builtins')
-
- with self.assertRaises(KeyError) as e:
- with self.moz_configure('''
-@@ -987,7 +987,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Cannot assign `foo` because it is neither a '
- '@depends nor a @template')
-
-@@ -1000,7 +1000,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "@depends needs at least one argument")
-
- with self.assertRaises(ConfigureError) as e:
-@@ -1011,7 +1011,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "'--with-foo' is not a known option. Maybe it's "
- "declared too late?")
-
-@@ -1023,7 +1023,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Option must not contain an '='")
-
- with self.assertRaises(TypeError) as e:
-@@ -1034,7 +1034,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Cannot use object of type 'int' as argument "
- "to @depends")
-
-@@ -1046,7 +1046,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Cannot decorate generator functions with @depends")
-
- with self.assertRaises(TypeError) as e:
-@@ -1055,7 +1055,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Unexpected type: 'int'")
-
- with self.assertRaises(ConfigureError) as e:
-@@ -1069,7 +1069,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The `foo` function may not be called")
-
- with self.assertRaises(TypeError) as e:
-@@ -1080,7 +1080,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "depends_impl() got an unexpected keyword argument 'foo'")
-
- def test_depends_when(self):
-@@ -1105,12 +1105,12 @@
- set_config('QUX', qux)
- '''):
- config = self.get_config()
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': 'foo',
- })
-
- config = self.get_config(['--with-qux'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': 'foo',
- 'QUX': 'qux',
- })
-@@ -1125,7 +1125,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '@imports must appear after @template')
-
- with self.assertRaises(ConfigureError) as e:
-@@ -1138,7 +1138,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '@imports must appear after @depends')
-
- for import_ in (
-@@ -1155,7 +1155,7 @@
- ''' % import_):
- self.get_config()
-
-- self.assertEquals(e.exception.message, "Unexpected type: 'int'")
-+ self.assertEqual(e.exception.message, "Unexpected type: 'int'")
-
- with self.assertRaises(TypeError) as e:
- with self.moz_configure('''
-@@ -1166,7 +1166,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message, "Unexpected type: 'int'")
-+ self.assertEqual(e.exception.message, "Unexpected type: 'int'")
-
- with self.assertRaises(ValueError) as e:
- with self.moz_configure('''
-@@ -1176,7 +1176,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Invalid argument to @imports: 'os*'")
-
- def test_only_when(self):
-@@ -1231,7 +1231,7 @@
- with self.assertRaises(InvalidOptionError) as e:
- self.get_config(['--foo'])
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--foo is not available in this configuration')
-
- # Cannot depend on an option defined in a only_when block, because we
-@@ -1242,7 +1242,7 @@
- with self.assertRaises(ConfigureError) as e:
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '@depends function needs the same `when` as '
- 'options it depends on')
-
-@@ -1259,7 +1259,7 @@
- with self.assertRaises(InvalidOptionError) as e:
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--foo is not available in this configuration')
-
- # And similarly doesn't fail when the condition is true.
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_lint.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_lint.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-
--from StringIO import StringIO
-+
-+from io import StringIO
- import os
- import textwrap
- import unittest
-@@ -62,7 +62,7 @@
- '''):
- self.lint_test()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "`bar` depends on '--help' and `foo`. "
- "`foo` must depend on '--help'")
-
-@@ -85,7 +85,7 @@
- '''):
- self.lint_test()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "`bar` depends on '--help' and `foo`. "
- "`foo` must depend on '--help'")
-
-@@ -111,7 +111,7 @@
- '''):
- self.lint_test()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Missing @depends for `foo`: '--help'")
-
- # There is a default restricted `os` module when there is no explicit
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_moz_configure.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_moz_configure.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- from mozunit import main
- from mozpack import path as mozpath
-@@ -23,10 +23,10 @@
- shell = mozpath.abspath('/bin/sh')
- return result.replace('CONFIG_SHELL=%s ' % shell, '')
-
-- self.assertEquals('--enable-application=browser',
-+ self.assertEqual('--enable-application=browser',
- get_value_for(['--enable-application=browser']))
-
-- self.assertEquals('--enable-application=browser '
-+ self.assertEqual('--enable-application=browser '
- 'MOZ_PROFILING=1',
- get_value_for(['--enable-application=browser',
- 'MOZ_PROFILING=1']))
-@@ -35,25 +35,25 @@
- environ={'MOZ_PROFILING': '1'},
- mozconfig='ac_add_options --enable-project=js')
-
-- self.assertEquals('--enable-project=js MOZ_PROFILING=1',
-+ self.assertEqual('--enable-project=js MOZ_PROFILING=1',
- value)
-
- # --disable-js-shell is the default, so it's filtered out.
-- self.assertEquals('--enable-application=browser',
-+ self.assertEqual('--enable-application=browser',
- get_value_for(['--enable-application=browser',
- '--disable-js-shell']))
-
- # Normally, --without-foo would be filtered out because that's the
- # default, but since it is a (fake) old-configure option, it always
- # appears.
-- self.assertEquals('--enable-application=browser --without-foo',
-+ self.assertEqual('--enable-application=browser --without-foo',
- get_value_for(['--enable-application=browser',
- '--without-foo']))
-- self.assertEquals('--enable-application=browser --with-foo',
-+ self.assertEqual('--enable-application=browser --with-foo',
- get_value_for(['--enable-application=browser',
- '--with-foo']))
-
-- self.assertEquals("--enable-application=browser '--with-foo=foo bar'",
-+ self.assertEqual("--enable-application=browser '--with-foo=foo bar'",
- get_value_for(['--enable-application=browser',
- '--with-foo=foo bar']))
-
-@@ -65,7 +65,7 @@
- self.version = version
-
- def __call__(self, stdin, args):
-- this.assertEquals(args, ('-version',))
-+ this.assertEqual(args, ('-version',))
- return 0, self.version, ''
-
- def check_nsis_version(version):
-@@ -80,13 +80,13 @@
- with self.assertRaises(SystemExit) as e:
- check_nsis_version('v3.0a2')
-
-- self.assertEquals(check_nsis_version('v3.0b1'), '3.0b1')
-- self.assertEquals(check_nsis_version('v3.0b2'), '3.0b2')
-- self.assertEquals(check_nsis_version('v3.0rc1'), '3.0rc1')
-- self.assertEquals(check_nsis_version('v3.0'), '3.0')
-- self.assertEquals(check_nsis_version('v3.0-2'), '3.0')
-- self.assertEquals(check_nsis_version('v3.0.1'), '3.0')
-- self.assertEquals(check_nsis_version('v3.1'), '3.1')
-+ self.assertEqual(check_nsis_version('v3.0b1'), '3.0b1')
-+ self.assertEqual(check_nsis_version('v3.0b2'), '3.0b2')
-+ self.assertEqual(check_nsis_version('v3.0rc1'), '3.0rc1')
-+ self.assertEqual(check_nsis_version('v3.0'), '3.0')
-+ self.assertEqual(check_nsis_version('v3.0-2'), '3.0')
-+ self.assertEqual(check_nsis_version('v3.0.1'), '3.0')
-+ self.assertEqual(check_nsis_version('v3.1'), '3.1')
-
-
- if __name__ == '__main__':
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_options.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_options.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import unittest
-
-@@ -27,139 +27,139 @@
- class TestOption(unittest.TestCase):
- def test_option(self):
- option = Option('--option')
-- self.assertEquals(option.prefix, '')
-- self.assertEquals(option.name, 'option')
-- self.assertEquals(option.env, None)
-+ self.assertEqual(option.prefix, '')
-+ self.assertEqual(option.name, 'option')
-+ self.assertEqual(option.env, None)
- self.assertFalse(option.default)
-
- option = Option('--enable-option')
-- self.assertEquals(option.prefix, 'enable')
-- self.assertEquals(option.name, 'option')
-- self.assertEquals(option.env, None)
-+ self.assertEqual(option.prefix, 'enable')
-+ self.assertEqual(option.name, 'option')
-+ self.assertEqual(option.env, None)
- self.assertFalse(option.default)
-
- option = Option('--disable-option')
-- self.assertEquals(option.prefix, 'disable')
-- self.assertEquals(option.name, 'option')
-- self.assertEquals(option.env, None)
-+ self.assertEqual(option.prefix, 'disable')
-+ self.assertEqual(option.name, 'option')
-+ self.assertEqual(option.env, None)
- self.assertTrue(option.default)
-
- option = Option('--with-option')
-- self.assertEquals(option.prefix, 'with')
-- self.assertEquals(option.name, 'option')
-- self.assertEquals(option.env, None)
-+ self.assertEqual(option.prefix, 'with')
-+ self.assertEqual(option.name, 'option')
-+ self.assertEqual(option.env, None)
- self.assertFalse(option.default)
-
- option = Option('--without-option')
-- self.assertEquals(option.prefix, 'without')
-- self.assertEquals(option.name, 'option')
-- self.assertEquals(option.env, None)
-+ self.assertEqual(option.prefix, 'without')
-+ self.assertEqual(option.name, 'option')
-+ self.assertEqual(option.env, None)
- self.assertTrue(option.default)
-
- option = Option('--without-option-foo', env='MOZ_OPTION')
-- self.assertEquals(option.env, 'MOZ_OPTION')
-+ self.assertEqual(option.env, 'MOZ_OPTION')
-
- option = Option(env='MOZ_OPTION')
-- self.assertEquals(option.prefix, '')
-- self.assertEquals(option.name, None)
-- self.assertEquals(option.env, 'MOZ_OPTION')
-+ self.assertEqual(option.prefix, '')
-+ self.assertEqual(option.name, None)
-+ self.assertEqual(option.env, 'MOZ_OPTION')
- self.assertFalse(option.default)
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=0, default=('a',))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=1, default=())
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'default must be a bool, a string or a tuple of strings')
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=1, default=True)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=1, default=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=2, default=())
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'default must be a bool, a string or a tuple of strings')
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=2, default=True)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=2, default=('a',))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs='?', default=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs='+', default=())
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'default must be a bool, a string or a tuple of strings')
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs='+', default=True)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- # --disable options with a nargs value that requires at least one
- # argument need to be given a default.
- with self.assertRaises(InvalidOptionError) as e:
- Option('--disable-option', nargs=1)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--disable-option', nargs='+')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- # Test nargs inference from default value
- option = Option('--with-foo', default=True)
-- self.assertEquals(option.nargs, 0)
-+ self.assertEqual(option.nargs, 0)
-
- option = Option('--with-foo', default=False)
-- self.assertEquals(option.nargs, 0)
-+ self.assertEqual(option.nargs, 0)
-
- option = Option('--with-foo', default='a')
-- self.assertEquals(option.nargs, '?')
-+ self.assertEqual(option.nargs, '?')
-
- option = Option('--with-foo', default=('a',))
-- self.assertEquals(option.nargs, '?')
-+ self.assertEqual(option.nargs, '?')
-
- option = Option('--with-foo', default=('a', 'b'))
-- self.assertEquals(option.nargs, '*')
-+ self.assertEqual(option.nargs, '*')
-
- option = Option(env='FOO', default=True)
-- self.assertEquals(option.nargs, 0)
-+ self.assertEqual(option.nargs, 0)
-
- option = Option(env='FOO', default=False)
-- self.assertEquals(option.nargs, 0)
-+ self.assertEqual(option.nargs, 0)
-
- option = Option(env='FOO', default='a')
-- self.assertEquals(option.nargs, '?')
-+ self.assertEqual(option.nargs, '?')
-
- option = Option(env='FOO', default=('a',))
-- self.assertEquals(option.nargs, '?')
-+ self.assertEqual(option.nargs, '?')
-
- option = Option(env='FOO', default=('a', 'b'))
-- self.assertEquals(option.nargs, '*')
-+ self.assertEqual(option.nargs, '*')
-
- def test_option_option(self):
- for option in (
-@@ -169,70 +169,70 @@
- '--with-option',
- '--without-option',
- ):
-- self.assertEquals(Option(option).option, option)
-- self.assertEquals(Option(option, env='FOO').option, option)
-+ self.assertEqual(Option(option).option, option)
-+ self.assertEqual(Option(option, env='FOO').option, option)
-
- opt = Option(option, default=False)
-- self.assertEquals(opt.option,
-+ self.assertEqual(opt.option,
- option.replace('-disable-', '-enable-')
- .replace('-without-', '-with-'))
-
- opt = Option(option, default=True)
-- self.assertEquals(opt.option,
-+ self.assertEqual(opt.option,
- option.replace('-enable-', '-disable-')
- .replace('-with-', '-without-'))
-
-- self.assertEquals(Option(env='FOO').option, 'FOO')
-+ self.assertEqual(Option(env='FOO').option, 'FOO')
-
- def test_option_choices(self):
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=3, choices=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Not enough `choices` for `nargs`')
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--without-option', nargs=1, choices=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'A `default` must be given along with `choices`')
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--without-option', nargs='+', choices=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'A `default` must be given along with `choices`')
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--without-option', default='c', choices=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The `default` value must be one of 'a', 'b'")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--without-option', default=('a', 'c',), choices=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The `default` value must be one of 'a', 'b'")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--without-option', default=('c',), choices=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The `default` value must be one of 'a', 'b'")
-
- option = Option('--with-option', nargs='+', choices=('a', 'b'))
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--with-option=c')
-- self.assertEquals(e.exception.message, "'c' is not one of 'a', 'b'")
-+ self.assertEqual(e.exception.message, "'c' is not one of 'a', 'b'")
-
- value = option.get_value('--with-option=b,a')
- self.assertTrue(value)
-- self.assertEquals(PositiveOptionValue(('b', 'a')), value)
-+ self.assertEqual(PositiveOptionValue(('b', 'a')), value)
-
- option = Option('--without-option', nargs='*', default='a',
- choices=('a', 'b'))
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--with-option=c')
-- self.assertEquals(e.exception.message, "'c' is not one of 'a', 'b'")
-+ self.assertEqual(e.exception.message, "'c' is not one of 'a', 'b'")
-
- value = option.get_value('--with-option=b,a')
- self.assertTrue(value)
-- self.assertEquals(PositiveOptionValue(('b', 'a')), value)
-+ self.assertEqual(PositiveOptionValue(('b', 'a')), value)
-
- # Test nargs inference from choices
- option = Option('--with-option', choices=('a', 'b'))
-@@ -243,71 +243,71 @@
- choices=('a', 'b', 'c', 'd'))
-
- value = option.get_value('--with-option=+d')
-- self.assertEquals(PositiveOptionValue(('b', 'c', 'd')), value)
-+ self.assertEqual(PositiveOptionValue(('b', 'c', 'd')), value)
-
- value = option.get_value('--with-option=-b')
-- self.assertEquals(PositiveOptionValue(('c',)), value)
-+ self.assertEqual(PositiveOptionValue(('c',)), value)
-
- value = option.get_value('--with-option=-b,+d')
-- self.assertEquals(PositiveOptionValue(('c','d')), value)
-+ self.assertEqual(PositiveOptionValue(('c','d')), value)
-
- # Adding something that is in the default is fine
- value = option.get_value('--with-option=+b')
-- self.assertEquals(PositiveOptionValue(('b', 'c')), value)
-+ self.assertEqual(PositiveOptionValue(('b', 'c')), value)
-
- # Removing something that is not in the default is fine, as long as it
- # is one of the choices
- value = option.get_value('--with-option=-a')
-- self.assertEquals(PositiveOptionValue(('b', 'c')), value)
-+ self.assertEqual(PositiveOptionValue(('b', 'c')), value)
-
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--with-option=-e')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "'e' is not one of 'a', 'b', 'c', 'd'")
-
- # Other "not a choice" errors.
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--with-option=+e')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "'e' is not one of 'a', 'b', 'c', 'd'")
-
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--with-option=e')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "'e' is not one of 'a', 'b', 'c', 'd'")
-
- def test_option_value_format(self):
- val = PositiveOptionValue()
-- self.assertEquals('--with-value', val.format('--with-value'))
-- self.assertEquals('--with-value', val.format('--without-value'))
-- self.assertEquals('--enable-value', val.format('--enable-value'))
-- self.assertEquals('--enable-value', val.format('--disable-value'))
-- self.assertEquals('--value', val.format('--value'))
-- self.assertEquals('VALUE=1', val.format('VALUE'))
-+ self.assertEqual('--with-value', val.format('--with-value'))
-+ self.assertEqual('--with-value', val.format('--without-value'))
-+ self.assertEqual('--enable-value', val.format('--enable-value'))
-+ self.assertEqual('--enable-value', val.format('--disable-value'))
-+ self.assertEqual('--value', val.format('--value'))
-+ self.assertEqual('VALUE=1', val.format('VALUE'))
-
- val = PositiveOptionValue(('a',))
-- self.assertEquals('--with-value=a', val.format('--with-value'))
-- self.assertEquals('--with-value=a', val.format('--without-value'))
-- self.assertEquals('--enable-value=a', val.format('--enable-value'))
-- self.assertEquals('--enable-value=a', val.format('--disable-value'))
-- self.assertEquals('--value=a', val.format('--value'))
-- self.assertEquals('VALUE=a', val.format('VALUE'))
-+ self.assertEqual('--with-value=a', val.format('--with-value'))
-+ self.assertEqual('--with-value=a', val.format('--without-value'))
-+ self.assertEqual('--enable-value=a', val.format('--enable-value'))
-+ self.assertEqual('--enable-value=a', val.format('--disable-value'))
-+ self.assertEqual('--value=a', val.format('--value'))
-+ self.assertEqual('VALUE=a', val.format('VALUE'))
-
- val = PositiveOptionValue(('a', 'b'))
-- self.assertEquals('--with-value=a,b', val.format('--with-value'))
-- self.assertEquals('--with-value=a,b', val.format('--without-value'))
-- self.assertEquals('--enable-value=a,b', val.format('--enable-value'))
-- self.assertEquals('--enable-value=a,b', val.format('--disable-value'))
-- self.assertEquals('--value=a,b', val.format('--value'))
-- self.assertEquals('VALUE=a,b', val.format('VALUE'))
-+ self.assertEqual('--with-value=a,b', val.format('--with-value'))
-+ self.assertEqual('--with-value=a,b', val.format('--without-value'))
-+ self.assertEqual('--enable-value=a,b', val.format('--enable-value'))
-+ self.assertEqual('--enable-value=a,b', val.format('--disable-value'))
-+ self.assertEqual('--value=a,b', val.format('--value'))
-+ self.assertEqual('VALUE=a,b', val.format('VALUE'))
-
- val = NegativeOptionValue()
-- self.assertEquals('--without-value', val.format('--with-value'))
-- self.assertEquals('--without-value', val.format('--without-value'))
-- self.assertEquals('--disable-value', val.format('--enable-value'))
-- self.assertEquals('--disable-value', val.format('--disable-value'))
-- self.assertEquals('', val.format('--value'))
-- self.assertEquals('VALUE=', val.format('VALUE'))
-+ self.assertEqual('--without-value', val.format('--with-value'))
-+ self.assertEqual('--without-value', val.format('--without-value'))
-+ self.assertEqual('--disable-value', val.format('--enable-value'))
-+ self.assertEqual('--disable-value', val.format('--disable-value'))
-+ self.assertEqual('', val.format('--value'))
-+ self.assertEqual('VALUE=', val.format('VALUE'))
-
- def test_option_value(self, name='option', nargs=0, default=None):
- disabled = name.startswith(('disable-', 'without-'))
-@@ -324,28 +324,28 @@
-
- if nargs in (0, '?', '*') or disabled:
- value = option.get_value('--%s' % name, 'option')
-- self.assertEquals(value, posOptionValue())
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, posOptionValue())
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s' % name)
- if nargs == 1:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes 1 value' % name)
- elif nargs == '+':
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes 1 or more values' % name)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes 2 values' % name)
-
- value = option.get_value('')
-- self.assertEquals(value, defaultValue)
-- self.assertEquals(value.origin, 'default')
-+ self.assertEqual(value, defaultValue)
-+ self.assertEqual(value.origin, 'default')
-
- value = option.get_value(None)
-- self.assertEquals(value, defaultValue)
-- self.assertEquals(value.origin, 'default')
-+ self.assertEqual(value, defaultValue)
-+ self.assertEqual(value.origin, 'default')
-
- with self.assertRaises(AssertionError):
- value = option.get_value('MOZ_OPTION=', 'environment')
-@@ -358,47 +358,47 @@
-
- if nargs in (1, '?', '*', '+') and not disabled:
- value = option.get_value('--%s=' % name, 'option')
-- self.assertEquals(value, PositiveOptionValue(('',)))
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, PositiveOptionValue(('',)))
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s=' % name)
- if disabled:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Cannot pass a value to --%s' % name)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes %d values' % (name, nargs))
-
- if nargs in (1, '?', '*', '+') and not disabled:
- value = option.get_value('--%s=foo' % name, 'option')
-- self.assertEquals(value, PositiveOptionValue(('foo',)))
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, PositiveOptionValue(('foo',)))
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s=foo' % name)
- if disabled:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Cannot pass a value to --%s' % name)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes %d values' % (name, nargs))
-
- if nargs in (2, '*', '+') and not disabled:
- value = option.get_value('--%s=foo,bar' % name, 'option')
-- self.assertEquals(value, PositiveOptionValue(('foo', 'bar')))
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, PositiveOptionValue(('foo', 'bar')))
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s=foo,bar' % name, 'option')
- if disabled:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Cannot pass a value to --%s' % name)
- elif nargs == '?':
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes 0 or 1 values' % name)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes %d value%s'
- % (name, nargs, 's' if nargs != 1 else ''))
-
-@@ -406,59 +406,59 @@
- default=default)
- if nargs in (0, '?', '*') or disabled:
- value = option.get_value('--%s' % name, 'option')
-- self.assertEquals(value, posOptionValue())
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, posOptionValue())
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s' % name)
- if disabled:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Cannot pass a value to --%s' % name)
- elif nargs == '+':
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes 1 or more values' % name)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes %d value%s'
- % (name, nargs, 's' if nargs != 1 else ''))
-
- value = option.get_value('')
-- self.assertEquals(value, defaultValue)
-- self.assertEquals(value.origin, 'default')
-+ self.assertEqual(value, defaultValue)
-+ self.assertEqual(value.origin, 'default')
-
- value = option.get_value(None)
-- self.assertEquals(value, defaultValue)
-- self.assertEquals(value.origin, 'default')
-+ self.assertEqual(value, defaultValue)
-+ self.assertEqual(value.origin, 'default')
-
- value = option.get_value('MOZ_OPTION=', 'environment')
-- self.assertEquals(value, NegativeOptionValue())
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, NegativeOptionValue())
-+ self.assertEqual(value.origin, 'environment')
-
- if nargs in (0, '?', '*'):
- value = option.get_value('MOZ_OPTION=1', 'environment')
-- self.assertEquals(value, PositiveOptionValue())
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue())
-+ self.assertEqual(value.origin, 'environment')
- elif nargs in (1, '+'):
- value = option.get_value('MOZ_OPTION=1', 'environment')
-- self.assertEquals(value, PositiveOptionValue(('1',)))
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue(('1',)))
-+ self.assertEqual(value.origin, 'environment')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('MOZ_OPTION=1', 'environment')
-- self.assertEquals(e.exception.message, 'MOZ_OPTION takes 2 values')
-+ self.assertEqual(e.exception.message, 'MOZ_OPTION takes 2 values')
-
- if nargs in (1, '?', '*', '+') and not disabled:
- value = option.get_value('--%s=' % name, 'option')
-- self.assertEquals(value, PositiveOptionValue(('',)))
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, PositiveOptionValue(('',)))
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s=' % name, 'option')
- if disabled:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Cannot pass a value to --%s' % name)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes %d values' % (name, nargs))
-
- with self.assertRaises(AssertionError):
-@@ -466,26 +466,26 @@
-
- if nargs in (1, '?', '*', '+'):
- value = option.get_value('MOZ_OPTION=foo', 'environment')
-- self.assertEquals(value, PositiveOptionValue(('foo',)))
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue(('foo',)))
-+ self.assertEqual(value.origin, 'environment')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('MOZ_OPTION=foo', 'environment')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'MOZ_OPTION takes %d values' % nargs)
-
- if nargs in (2, '*', '+'):
- value = option.get_value('MOZ_OPTION=foo,bar', 'environment')
-- self.assertEquals(value, PositiveOptionValue(('foo', 'bar')))
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue(('foo', 'bar')))
-+ self.assertEqual(value.origin, 'environment')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('MOZ_OPTION=foo,bar', 'environment')
- if nargs == '?':
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'MOZ_OPTION takes 0 or 1 values')
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'MOZ_OPTION takes %d value%s'
- % (nargs, 's' if nargs != 1 else ''))
-
-@@ -497,26 +497,26 @@
- env_option.get_value('--%s' % name)
-
- value = env_option.get_value('')
-- self.assertEquals(value, defaultValue)
-- self.assertEquals(value.origin, 'default')
-+ self.assertEqual(value, defaultValue)
-+ self.assertEqual(value.origin, 'default')
-
- value = env_option.get_value('MOZ_OPTION=', 'environment')
-- self.assertEquals(value, negOptionValue())
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, negOptionValue())
-+ self.assertEqual(value.origin, 'environment')
-
- if nargs in (0, '?', '*'):
- value = env_option.get_value('MOZ_OPTION=1', 'environment')
-- self.assertEquals(value, posOptionValue())
-+ self.assertEqual(value, posOptionValue())
- self.assertTrue(value)
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value.origin, 'environment')
- elif nargs in (1, '+'):
- value = env_option.get_value('MOZ_OPTION=1', 'environment')
-- self.assertEquals(value, PositiveOptionValue(('1',)))
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue(('1',)))
-+ self.assertEqual(value.origin, 'environment')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- env_option.get_value('MOZ_OPTION=1', 'environment')
-- self.assertEquals(e.exception.message, 'MOZ_OPTION takes 2 values')
-+ self.assertEqual(e.exception.message, 'MOZ_OPTION takes 2 values')
-
- with self.assertRaises(AssertionError) as e:
- env_option.get_value('--%s' % name)
-@@ -526,26 +526,26 @@
-
- if nargs in (1, '?', '*', '+'):
- value = env_option.get_value('MOZ_OPTION=foo', 'environment')
-- self.assertEquals(value, PositiveOptionValue(('foo',)))
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue(('foo',)))
-+ self.assertEqual(value.origin, 'environment')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- env_option.get_value('MOZ_OPTION=foo', 'environment')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'MOZ_OPTION takes %d values' % nargs)
-
- if nargs in (2, '*', '+'):
- value = env_option.get_value('MOZ_OPTION=foo,bar', 'environment')
-- self.assertEquals(value, PositiveOptionValue(('foo', 'bar')))
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue(('foo', 'bar')))
-+ self.assertEqual(value.origin, 'environment')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- env_option.get_value('MOZ_OPTION=foo,bar', 'environment')
- if nargs == '?':
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'MOZ_OPTION takes 0 or 1 values')
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'MOZ_OPTION takes %d value%s'
- % (nargs, 's' if nargs != 1 else ''))
-
-@@ -557,28 +557,28 @@
- default=default)
-
- value = option.get_value('--%s-option' % disable, 'option')
-- self.assertEquals(value, NegativeOptionValue())
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, NegativeOptionValue())
-+ self.assertEqual(value.origin, 'option')
-
- option = self.test_option_value('%s-option' % disable, nargs=nargs,
- default=default)
-
- if nargs in (0, '?', '*'):
- value = option.get_value('--%s-option' % enable, 'option')
-- self.assertEquals(value, PositiveOptionValue())
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, PositiveOptionValue())
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s-option' % enable, 'option')
- if nargs == 1:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s-option takes 1 value' % enable)
- elif nargs == '+':
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s-option takes 1 or more values'
- % enable)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s-option takes 2 values' % enable)
-
- def test_option_value_with(self):
-@@ -587,12 +587,12 @@
- def test_option_value_invalid_nargs(self):
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs='foo')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "nargs must be a positive integer, '?', '*' or '+'")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=-2)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "nargs must be a positive integer, '?', '*' or '+'")
-
- def test_option_value_nargs_1(self):
-@@ -603,7 +603,7 @@
- # A default is required
- with self.assertRaises(InvalidOptionError) as e:
- Option('--disable-option', nargs=1)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- def test_option_value_nargs_2(self):
-@@ -614,7 +614,7 @@
- # A default is required
- with self.assertRaises(InvalidOptionError) as e:
- Option('--disable-option', nargs=2)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- def test_option_value_nargs_0_or_1(self):
-@@ -641,7 +641,7 @@
- # A default is required
- with self.assertRaises(InvalidOptionError) as e:
- Option('--disable-option', nargs='+')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
-
-@@ -649,109 +649,109 @@
- def test_basic(self):
- helper = CommandLineHelper({}, ['cmd', '--foo', '--bar'])
-
-- self.assertEquals(['--foo', '--bar'], list(helper))
-+ self.assertEqual(['--foo', '--bar'], list(helper))
-
- helper.add('--enable-qux')
-
-- self.assertEquals(['--foo', '--bar', '--enable-qux'], list(helper))
-+ self.assertEqual(['--foo', '--bar', '--enable-qux'], list(helper))
-
- value, option = helper.handle(Option('--bar'))
-- self.assertEquals(['--foo', '--enable-qux'], list(helper))
-- self.assertEquals(PositiveOptionValue(), value)
-- self.assertEquals('--bar', option)
-+ self.assertEqual(['--foo', '--enable-qux'], list(helper))
-+ self.assertEqual(PositiveOptionValue(), value)
-+ self.assertEqual('--bar', option)
-
- value, option = helper.handle(Option('--baz'))
-- self.assertEquals(['--foo', '--enable-qux'], list(helper))
-- self.assertEquals(NegativeOptionValue(), value)
-- self.assertEquals(None, option)
-+ self.assertEqual(['--foo', '--enable-qux'], list(helper))
-+ self.assertEqual(NegativeOptionValue(), value)
-+ self.assertEqual(None, option)
-
- def test_precedence(self):
- foo = Option('--with-foo', nargs='*')
- helper = CommandLineHelper({}, ['cmd', '--with-foo=a,b'])
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--with-foo=a,b', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--with-foo=a,b', option)
-
- helper = CommandLineHelper({}, ['cmd', '--with-foo=a,b',
- '--without-foo'])
- value, option = helper.handle(foo)
-- self.assertEquals(NegativeOptionValue(), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--without-foo', option)
-+ self.assertEqual(NegativeOptionValue(), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--without-foo', option)
-
- helper = CommandLineHelper({}, ['cmd', '--without-foo',
- '--with-foo=a,b'])
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--with-foo=a,b', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--with-foo=a,b', option)
-
- foo = Option('--with-foo', env='FOO', nargs='*')
- helper = CommandLineHelper({'FOO': ''}, ['cmd', '--with-foo=a,b'])
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--with-foo=a,b', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--with-foo=a,b', option)
-
- helper = CommandLineHelper({'FOO': 'a,b'}, ['cmd', '--without-foo'])
- value, option = helper.handle(foo)
-- self.assertEquals(NegativeOptionValue(), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--without-foo', option)
-+ self.assertEqual(NegativeOptionValue(), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--without-foo', option)
-
- helper = CommandLineHelper({'FOO': ''}, ['cmd', '--with-bar=a,b'])
- value, option = helper.handle(foo)
-- self.assertEquals(NegativeOptionValue(), value)
-- self.assertEquals('environment', value.origin)
-- self.assertEquals('FOO=', option)
-+ self.assertEqual(NegativeOptionValue(), value)
-+ self.assertEqual('environment', value.origin)
-+ self.assertEqual('FOO=', option)
-
- helper = CommandLineHelper({'FOO': 'a,b'}, ['cmd', '--without-bar'])
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
-- self.assertEquals('environment', value.origin)
-- self.assertEquals('FOO=a,b', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+ self.assertEqual('environment', value.origin)
-+ self.assertEqual('FOO=a,b', option)
-
- helper = CommandLineHelper({}, ['cmd', '--with-foo=a,b', 'FOO='])
- value, option = helper.handle(foo)
-- self.assertEquals(NegativeOptionValue(), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('FOO=', option)
-+ self.assertEqual(NegativeOptionValue(), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('FOO=', option)
-
- helper = CommandLineHelper({}, ['cmd', '--without-foo', 'FOO=a,b'])
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('FOO=a,b', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('FOO=a,b', option)
-
- helper = CommandLineHelper({}, ['cmd', 'FOO=', '--with-foo=a,b'])
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--with-foo=a,b', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--with-foo=a,b', option)
-
- helper = CommandLineHelper({}, ['cmd', 'FOO=a,b', '--without-foo'])
- value, option = helper.handle(foo)
-- self.assertEquals(NegativeOptionValue(), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--without-foo', option)
-+ self.assertEqual(NegativeOptionValue(), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--without-foo', option)
-
- def test_extra_args(self):
- foo = Option('--with-foo', env='FOO', nargs='*')
- helper = CommandLineHelper({}, ['cmd'])
- helper.add('FOO=a,b,c', 'other-origin')
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
-- self.assertEquals('other-origin', value.origin)
-- self.assertEquals('FOO=a,b,c', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
-+ self.assertEqual('other-origin', value.origin)
-+ self.assertEqual('FOO=a,b,c', option)
-
- helper = CommandLineHelper({}, ['cmd'])
- helper.add('FOO=a,b,c', 'other-origin')
- helper.add('--with-foo=a,b,c', 'other-origin')
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
-- self.assertEquals('other-origin', value.origin)
-- self.assertEquals('--with-foo=a,b,c', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
-+ self.assertEqual('other-origin', value.origin)
-+ self.assertEqual('--with-foo=a,b,c', option)
-
- # Adding conflicting options is not allowed.
- helper = CommandLineHelper({}, ['cmd'])
-@@ -771,9 +771,9 @@
- # But adding the same is allowed.
- helper.add('FOO=a,b,c', 'other-origin')
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
-- self.assertEquals('other-origin', value.origin)
-- self.assertEquals('FOO=a,b,c', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
-+ self.assertEqual('other-origin', value.origin)
-+ self.assertEqual('FOO=a,b,c', option)
-
- # The same rule as above applies when using the option form vs. the
- # variable form. But we can't detect it when .add is called.
-@@ -799,9 +799,9 @@
- helper.add('FOO=a,b,c', 'other-origin')
- helper.add('--with-foo=a,b,c', 'other-origin')
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
-- self.assertEquals('other-origin', value.origin)
-- self.assertEquals('--with-foo=a,b,c', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
-+ self.assertEqual('other-origin', value.origin)
-+ self.assertEqual('--with-foo=a,b,c', option)
-
- # Conflicts are also not allowed against what is in the
- # environment/on the command line.
-@@ -831,19 +831,19 @@
- foo = Option('--foo',
- possible_origins=('command-line',))
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--foo', option)
-+ self.assertEqual(PositiveOptionValue(), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--foo', option)
-
- bar = Option('--bar',
- possible_origins=('mozconfig',))
-- with self.assertRaisesRegexp(InvalidOptionError,
-+ with self.assertRaisesRegex(InvalidOptionError,
- "--bar can not be set by command-line. Values are accepted from: mozconfig"):
- helper.handle(bar)
-
- baz = Option(env='BAZ',
- possible_origins=('implied',))
-- with self.assertRaisesRegexp(InvalidOptionError,
-+ with self.assertRaisesRegex(InvalidOptionError,
- "BAZ=1 can not be set by environment. Values are accepted from: implied"):
- helper.handle(baz)
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py (refactored)
-@@ -2,12 +2,12 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import logging
- import os
-
--from StringIO import StringIO
-+from io import StringIO
-
- from mozunit import main
-
-@@ -291,9 +291,9 @@
- compiler = sandbox._value_for(sandbox[var])
- # Add var on both ends to make it clear which of the
- # variables is failing the test when that happens.
-- self.assertEquals((var, compiler), (var, result))
-+ self.assertEqual((var, compiler), (var, result))
- except SystemExit:
-- self.assertEquals((var, result),
-+ self.assertEqual((var, result),
- (var, self.out.getvalue().strip()))
- return
-
-@@ -471,7 +471,7 @@
- # We'll try gcc and clang, but since there is no gcc (gcc-x.y doesn't
- # count), find clang.
- paths = {
-- k: v for k, v in self.PATHS.iteritems()
-+ k: v for k, v in self.PATHS.items()
- if os.path.basename(k) not in ('gcc', 'g++')
- }
- self.do_toolchain_test(paths, {
-@@ -506,7 +506,7 @@
- # Even if there are gcc-x.y or clang-x.y compilers available, we
- # don't try them. This could be considered something to improve.
- paths = {
-- k: v for k, v in self.PATHS.iteritems()
-+ k: v for k, v in self.PATHS.items()
- if os.path.basename(k) not in ('gcc', 'g++', 'clang', 'clang++')
- }
- self.do_toolchain_test(paths, {
-@@ -687,7 +687,7 @@
- def test_not_gcc(self):
- # We won't pick GCC if it's the only thing available.
- paths = {
-- k: v for k, v in self.PATHS.iteritems()
-+ k: v for k, v in self.PATHS.items()
- if os.path.basename(k) not in ('clang', 'clang++')
- }
- self.do_toolchain_test(paths, {
-@@ -851,7 +851,7 @@
- def test_clang_cl(self):
- # We'll pick clang-cl if msvc can't be found.
- paths = {
-- k: v for k, v in self.PATHS.iteritems()
-+ k: v for k, v in self.PATHS.items()
- if os.path.basename(k) != 'cl'
- }
- self.do_toolchain_test(paths, {
-@@ -862,7 +862,7 @@
- def test_gcc(self):
- # We'll pick GCC if msvc and clang-cl can't be found.
- paths = {
-- k: v for k, v in self.PATHS.iteritems()
-+ k: v for k, v in self.PATHS.items()
- if os.path.basename(k) not in ('cl', 'clang-cl')
- }
- self.do_toolchain_test(paths, {
-@@ -881,7 +881,7 @@
- def test_clang(self):
- # We'll pick clang if nothing else is found.
- paths = {
-- k: v for k, v in self.PATHS.iteritems()
-+ k: v for k, v in self.PATHS.items()
- if os.path.basename(k) not in ('cl', 'clang-cl', 'gcc')
- }
- self.do_toolchain_test(paths, {
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_toolchain_helpers.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_toolchain_helpers.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import copy
- import re
-@@ -10,7 +10,7 @@
- import unittest
-
- from fnmatch import fnmatch
--from StringIO import StringIO
-+from io import StringIO
- from textwrap import dedent
-
- from mozunit import (
-@@ -43,7 +43,7 @@
- # Hack around it enough that the configure tests work properly.
- context = self.context
- def normalize_numbers(value):
-- if isinstance(value, types.StringTypes):
-+ if isinstance(value, (str,)):
- if value[-1:] == 'L' and value[:-1].isdigit():
- value = int(value[:-1])
- return value
-@@ -53,7 +53,7 @@
- return self.HAS_FEATURE.sub(r'\1\2', expr)
- self.context = self.Context(
- (normalize_has_feature(k), normalize_numbers(v))
-- for k, v in context.iteritems()
-+ for k, v in context.items()
- )
- try:
- return Preprocessor.do_if(self, normalize_has_feature(expression),
-@@ -95,7 +95,7 @@
- input.name = 'foo'
- pp.do_include(input)
-
-- self.assertEquals(pp.out.getvalue(), '1 . 2 . c "D"')
-+ self.assertEqual(pp.out.getvalue(), '1 . 2 . c "D"')
-
- def test_condition(self):
- pp = CompilerPreprocessor({
-@@ -125,7 +125,7 @@
- input.name = 'foo'
- pp.do_include(input)
-
-- self.assertEquals('IFDEF_A\nIF_A\nIF_B\nIF_NOT_C\n', pp.out.getvalue())
-+ self.assertEqual('IFDEF_A\nIF_A\nIF_B\nIF_NOT_C\n', pp.out.getvalue())
-
-
- class FakeCompiler(dict):
-@@ -164,9 +164,9 @@
- '''
- def __init__(self, *definitions):
- for definition in definitions:
-- if all(not isinstance(d, dict) for d in definition.itervalues()):
-+ if all(not isinstance(d, dict) for d in definition.values()):
- definition = {None: definition}
-- for key, value in definition.iteritems():
-+ for key, value in definition.items():
- self.setdefault(key, {}).update(value)
-
- def __call__(self, stdin, args):
-@@ -178,14 +178,14 @@
- pp = CompilerPreprocessor(self[None])
-
- def apply_defn(defn):
-- for k, v in defn.iteritems():
-+ for k, v in defn.items():
- if v is False:
- if k in pp.context:
- del pp.context[k]
- else:
- pp.context[k] = v
-
-- for glob, defn in self.iteritems():
-+ for glob, defn in self.items():
- if glob and not glob.startswith('-') and fnmatch(file, glob):
- apply_defn(defn)
-
-@@ -216,7 +216,7 @@
- 'A': '1',
- 'B': '2',
- })
-- self.assertEquals(compiler(None, ['-E', 'file']),
-+ self.assertEqual(compiler(None, ['-E', 'file']),
- (0, '1 2 C', ''))
-
- compiler = FakeCompiler({
-@@ -238,25 +238,25 @@
- 'B': '42',
- },
- })
-- self.assertEquals(compiler(None, ['-E', 'file']),
-+ self.assertEqual(compiler(None, ['-E', 'file']),
- (0, '1 2 C', ''))
-- self.assertEquals(compiler(None, ['-E', '-foo', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-foo', 'file']),
- (0, '1 2 foo', ''))
-- self.assertEquals(compiler(None, ['-E', '-bar', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-bar', 'file']),
- (0, '1 bar bar', ''))
-- self.assertEquals(compiler(None, ['-E', '-qux', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-qux', 'file']),
- (0, '1 B C', ''))
-- self.assertEquals(compiler(None, ['-E', '-foo', '-bar', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-foo', '-bar', 'file']),
- (0, '1 bar bar', ''))
-- self.assertEquals(compiler(None, ['-E', '-bar', '-foo', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-bar', '-foo', 'file']),
- (0, '1 bar foo', ''))
-- self.assertEquals(compiler(None, ['-E', '-bar', '-qux', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-bar', '-qux', 'file']),
- (0, '1 B bar', ''))
-- self.assertEquals(compiler(None, ['-E', '-qux', '-bar', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-qux', '-bar', 'file']),
- (0, '1 bar bar', ''))
-- self.assertEquals(compiler(None, ['-E', 'file.c']),
-+ self.assertEqual(compiler(None, ['-E', 'file.c']),
- (0, '1 42 C', ''))
-- self.assertEquals(compiler(None, ['-E', '-bar', 'file.c']),
-+ self.assertEqual(compiler(None, ['-E', '-bar', 'file.c']),
- (0, '1 bar bar', ''))
-
- def test_multiple_definitions(self):
-@@ -267,7 +267,7 @@
- 'C': 3,
- })
-
-- self.assertEquals(compiler, {
-+ self.assertEqual(compiler, {
- None: {
- 'A': 1,
- 'B': 2,
-@@ -282,7 +282,7 @@
- 'C': 3,
- })
-
-- self.assertEquals(compiler, {
-+ self.assertEqual(compiler, {
- None: {
- 'A': 1,
- 'B': 4,
-@@ -302,7 +302,7 @@
- },
- })
-
-- self.assertEquals(compiler, {
-+ self.assertEqual(compiler, {
- None: {
- 'A': 1,
- 'B': 4,
-@@ -330,7 +330,7 @@
- },
- })
-
-- self.assertEquals(compiler, {
-+ self.assertEqual(compiler, {
- None: {
- 'A': 1,
- 'B': 2,
-@@ -370,7 +370,7 @@
- def __add__(self, other):
- assert isinstance(other, dict)
- result = copy.deepcopy(self.__dict__)
-- for k, v in other.iteritems():
-+ for k, v in other.items():
- if k == 'flags':
- result.setdefault(k, []).extend(v)
- else:
-@@ -381,7 +381,7 @@
- class TestCompilerResult(unittest.TestCase):
- def test_compiler_result(self):
- result = CompilerResult()
-- self.assertEquals(result.__dict__, {
-+ self.assertEqual(result.__dict__, {
- 'wrapper': [],
- 'compiler': mozpath.abspath(''),
- 'version': '',
-@@ -397,7 +397,7 @@
- language='C',
- flags=['-std=gnu99'],
- )
-- self.assertEquals(result.__dict__, {
-+ self.assertEqual(result.__dict__, {
- 'wrapper': [],
- 'compiler': mozpath.abspath('/usr/bin/gcc'),
- 'version': '4.2.1',
-@@ -407,7 +407,7 @@
- })
-
- result2 = result + {'flags': ['-m32']}
-- self.assertEquals(result2.__dict__, {
-+ self.assertEqual(result2.__dict__, {
- 'wrapper': [],
- 'compiler': mozpath.abspath('/usr/bin/gcc'),
- 'version': '4.2.1',
-@@ -416,14 +416,14 @@
- 'flags': ['-std=gnu99', '-m32'],
- })
- # Original flags are untouched.
-- self.assertEquals(result.flags, ['-std=gnu99'])
-+ self.assertEqual(result.flags, ['-std=gnu99'])
-
- result3 = result + {
- 'compiler': '/usr/bin/gcc-4.7',
- 'version': '4.7.3',
- 'flags': ['-m32'],
- }
-- self.assertEquals(result3.__dict__, {
-+ self.assertEqual(result3.__dict__, {
- 'wrapper': [],
- 'compiler': mozpath.abspath('/usr/bin/gcc-4.7'),
- 'version': '4.7.3',
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import os
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_util.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/configure/test_util.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import logging
- import os
-@@ -11,7 +11,7 @@
- import unittest
- import sys
-
--from StringIO import StringIO
-+from io import StringIO
-
- from mozunit import main
- from mozpack import path as mozpath
-@@ -434,11 +434,11 @@
- except SystemExit as e:
- status = e.code
-
-- self.assertEquals(status, 0)
-+ self.assertEqual(status, 0)
- quote_char = "'"
- if getpreferredencoding().lower() == 'utf-8':
- quote_char = '\u00B4'.encode('utf-8')
-- self.assertEquals(out.getvalue().strip(), quote_char)
-+ self.assertEqual(out.getvalue().strip(), quote_char)
-
-
- class TestVersion(unittest.TestCase):
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/controller/test_ccachestats.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/controller/test_ccachestats.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import unittest
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/controller/test_clobber.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/controller/test_clobber.py (refactored)
-@@ -2,14 +2,14 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
- import shutil
- import tempfile
- import unittest
-
--from StringIO import StringIO
-+from io import StringIO
-
- from mozunit import main
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/frontend/test_context.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/frontend/test_context.py (refactored)
-@@ -36,7 +36,7 @@
- 'baz': (dict, dict, ''),
- })
-
-- self.assertEqual(test.keys(), [])
-+ self.assertEqual(list(test.keys()), [])
-
- self.assertEqual(test['foo'], 0)
-
-@@ -84,12 +84,12 @@
- 'baz': (dict, list, ''),
- })
-
-- self.assertEqual(test.keys(), [])
-+ self.assertEqual(list(test.keys()), [])
-
- with self.assertRaises(ValueError):
- test.update(bar=True, foo={})
-
-- self.assertEqual(test.keys(), [])
-+ self.assertEqual(list(test.keys()), [])
-
- test.update(bar=True, foo=1)
-
-@@ -258,19 +258,19 @@
- self.assertEqual(lines[-1].strip(), '')
-
- def test_documentation_formatting(self):
-- for typ, inp, doc in VARIABLES.values():
-+ for typ, inp, doc in list(VARIABLES.values()):
- self._verify_doc(doc)
-
-- for attr, args, doc in FUNCTIONS.values():
-+ for attr, args, doc in list(FUNCTIONS.values()):
- self._verify_doc(doc)
-
-- for func, typ, doc in SPECIAL_VARIABLES.values():
-+ for func, typ, doc in list(SPECIAL_VARIABLES.values()):
- self._verify_doc(doc)
-
-- for name, cls in SUBCONTEXTS.items():
-+ for name, cls in list(SUBCONTEXTS.items()):
- self._verify_doc(cls.__doc__)
-
-- for name, v in cls.VARIABLES.items():
-+ for name, v in list(cls.VARIABLES.items()):
- self._verify_doc(v[2])
-
-
-@@ -631,7 +631,7 @@
- class TestTypedRecord(unittest.TestCase):
-
- def test_fields(self):
-- T = ContextDerivedTypedRecord(('field1', unicode),
-+ T = ContextDerivedTypedRecord(('field1', str),
- ('field2', list))
- inst = T(None)
- self.assertEqual(inst.field1, '')
-@@ -647,7 +647,7 @@
- inst.field3 = []
-
- def test_coercion(self):
-- T = ContextDerivedTypedRecord(('field1', unicode),
-+ T = ContextDerivedTypedRecord(('field1', str),
- ('field2', list))
- inst = T(None)
- inst.field1 = 3
-@@ -673,45 +673,45 @@
- def test_single_bug_component(self):
- c = Context({})
- f = Files(c, pattern='**')
-- f['BUG_COMPONENT'] = (u'Product1', u'Component1')
-+ f['BUG_COMPONENT'] = ('Product1', 'Component1')
-
- files = {'moz.build': f}
- self.assertEqual(Files.aggregate(files), {
-- 'bug_component_counts': [((u'Product1', u'Component1'), 1)],
-- 'recommended_bug_component': (u'Product1', u'Component1'),
-+ 'bug_component_counts': [(('Product1', 'Component1'), 1)],
-+ 'recommended_bug_component': ('Product1', 'Component1'),
- })
-
- def test_multiple_bug_components(self):
- c = Context({})
- f1 = Files(c, pattern='**')
-- f1['BUG_COMPONENT'] = (u'Product1', u'Component1')
-+ f1['BUG_COMPONENT'] = ('Product1', 'Component1')
-
- f2 = Files(c, pattern='**')
-- f2['BUG_COMPONENT'] = (u'Product2', u'Component2')
-+ f2['BUG_COMPONENT'] = ('Product2', 'Component2')
-
- files = {'a': f1, 'b': f2, 'c': f1}
- self.assertEqual(Files.aggregate(files), {
- 'bug_component_counts': [
-- ((u'Product1', u'Component1'), 2),
-- ((u'Product2', u'Component2'), 1),
-+ (('Product1', 'Component1'), 2),
-+ (('Product2', 'Component2'), 1),
- ],
-- 'recommended_bug_component': (u'Product1', u'Component1'),
-+ 'recommended_bug_component': ('Product1', 'Component1'),
- })
-
- def test_no_recommended_bug_component(self):
- """If there is no clear count winner, we don't recommend a bug component."""
- c = Context({})
- f1 = Files(c, pattern='**')
-- f1['BUG_COMPONENT'] = (u'Product1', u'Component1')
-+ f1['BUG_COMPONENT'] = ('Product1', 'Component1')
-
- f2 = Files(c, pattern='**')
-- f2['BUG_COMPONENT'] = (u'Product2', u'Component2')
-+ f2['BUG_COMPONENT'] = ('Product2', 'Component2')
-
- files = {'a': f1, 'b': f2}
- self.assertEqual(Files.aggregate(files), {
- 'bug_component_counts': [
-- ((u'Product1', u'Component1'), 1),
-- ((u'Product2', u'Component2'), 1),
-+ (('Product1', 'Component1'), 1),
-+ (('Product2', 'Component2'), 1),
- ],
- 'recommended_bug_component': None,
- })
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/frontend/test_emitter.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/frontend/test_emitter.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
- import unittest
-@@ -204,7 +204,7 @@
- def test_use_yasm(self):
- # When yasm is not available, this should raise.
- reader = self.reader('use-yasm')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'yasm is not available'):
- self.read_topsrcdir(reader)
-
-@@ -267,25 +267,25 @@
- o = objs[0]
- self.assertIsInstance(o, GeneratedFile)
- self.assertEqual(o.outputs, ('bar.c',))
-- self.assertRegexpMatches(o.script, 'script.py$')
-+ self.assertRegex(o.script, 'script.py$')
- self.assertEqual(o.method, 'make_bar')
- self.assertEqual(o.inputs, [])
-
- def test_generated_files_no_script(self):
- reader = self.reader('generated-files-no-script')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Script for generating bar.c does not exist'):
- self.read_topsrcdir(reader)
-
- def test_generated_files_no_inputs(self):
- reader = self.reader('generated-files-no-inputs')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Input for generating foo.c does not exist'):
- self.read_topsrcdir(reader)
-
- def test_generated_files_no_python_script(self):
- reader = self.reader('generated-files-no-python-script')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Script for generating bar.c does not end in .py'):
- self.read_topsrcdir(reader)
-
-@@ -314,7 +314,7 @@
- Missing files in EXPORTS is an error.
- '''
- reader = self.reader('exports-missing')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'File listed in EXPORTS does not exist:'):
- self.read_topsrcdir(reader)
-
-@@ -323,7 +323,7 @@
- An objdir file in EXPORTS that is not in GENERATED_FILES is an error.
- '''
- reader = self.reader('exports-missing-generated')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Objdir file listed in EXPORTS not in GENERATED_FILES:'):
- self.read_topsrcdir(reader)
-
-@@ -360,7 +360,7 @@
-
- def test_test_harness_files_root(self):
- reader = self.reader('test-harness-files-root')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Cannot install files to the root of TEST_HARNESS_FILES'):
- self.read_topsrcdir(reader)
-
-@@ -413,14 +413,14 @@
- """A missing manifest file should result in an error."""
- reader = self.reader('test-manifest-missing-manifest')
-
-- with self.assertRaisesRegexp(BuildReaderError, 'IOError: Missing files'):
-+ with self.assertRaisesRegex(BuildReaderError, 'IOError: Missing files'):
- self.read_topsrcdir(reader)
-
- def test_empty_test_manifest_rejected(self):
- """A test manifest without any entries is rejected."""
- reader = self.reader('test-manifest-empty')
-
-- with self.assertRaisesRegexp(SandboxValidationError, 'Empty test manifest'):
-+ with self.assertRaisesRegex(SandboxValidationError, 'Empty test manifest'):
- self.read_topsrcdir(reader)
-
-
-@@ -428,7 +428,7 @@
- """A test manifest with no tests but support-files is not supported."""
- reader = self.reader('test-manifest-just-support')
-
-- with self.assertRaisesRegexp(SandboxValidationError, 'Empty test manifest'):
-+ with self.assertRaisesRegex(SandboxValidationError, 'Empty test manifest'):
- self.read_topsrcdir(reader)
-
- def test_test_manifest_dupe_support_files(self):
-@@ -437,7 +437,7 @@
- """
- reader = self.reader('test-manifest-dupes')
-
-- with self.assertRaisesRegexp(SandboxValidationError, 'bar.js appears multiple times '
-+ with self.assertRaisesRegex(SandboxValidationError, 'bar.js appears multiple times '
- 'in a test manifest under a support-files field, please omit the duplicate entry.'):
- self.read_topsrcdir(reader)
-
-@@ -454,7 +454,7 @@
- mozpath.join(o.install_prefix, "absolute-support.ini"),
- mozpath.join(o.install_prefix, "test_file.js"),
- ]
-- paths = sorted([v[0] for v in o.installs.values()])
-+ paths = sorted([v[0] for v in list(o.installs.values())])
- self.assertEqual(paths, expected)
-
- @unittest.skip('Bug 1304316 - Items in the second set but not the first')
-@@ -481,7 +481,7 @@
- """A non-existent shared support file reference produces an error."""
- reader = self.reader('test-manifest-shared-missing')
-
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'entry in support-files not present in the srcdir'):
- self.read_topsrcdir(reader)
-
-@@ -500,7 +500,7 @@
- mozpath.normpath(mozpath.join(o.install_prefix, "subdir/support.txt")),
- mozpath.normpath(mozpath.join(o.install_prefix, "subdir/test_foo.html")),
- ]
-- paths = sorted([v[0] for v in o.installs.values()])
-+ paths = sorted([v[0] for v in list(o.installs.values())])
- self.assertEqual(paths, expected)
-
- def test_test_manifest_install_includes(self):
-@@ -518,7 +518,7 @@
- mozpath.normpath(mozpath.join(o.install_prefix, "subdir/mochitest.ini")),
- mozpath.normpath(mozpath.join(o.install_prefix, "subdir/test_foo.html")),
- ]
-- paths = sorted([v[0] for v in o.installs.values()])
-+ paths = sorted([v[0] for v in list(o.installs.values())])
- self.assertEqual(paths, expected)
-
- def test_test_manifest_includes(self):
-@@ -541,7 +541,7 @@
- def test_python_unit_test_missing(self):
- """Missing files in PYTHON_UNIT_TESTS should raise."""
- reader = self.reader('test-python-unit-test-missing')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Path specified in PYTHON_UNIT_TESTS does not exist:'):
- self.read_topsrcdir(reader)
-
-@@ -635,7 +635,7 @@
- self.assertEqual(external_normalized, m.get('external', set()))
-
- self.assertEqual(len(o.installs), len(m['installs']))
-- for path in o.installs.keys():
-+ for path in list(o.installs.keys()):
- self.assertTrue(path.startswith(o.directory))
- relpath = path[len(o.directory)+1:]
-
-@@ -648,7 +648,7 @@
- def test_test_manifest_unmatched_generated(self):
- reader = self.reader('test-manifest-unmatched-generated')
-
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'entry in generated-files not present elsewhere'):
- self.read_topsrcdir(reader),
-
-@@ -672,7 +672,7 @@
- """Missing test files should result in error."""
- reader = self.reader('test-manifest-missing-test-file')
-
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'lists test that does not exist: test_missing.html'):
- self.read_topsrcdir(reader)
-
-@@ -680,7 +680,7 @@
- """Missing test files should result in error, even when the test list is not filtered."""
- reader = self.reader('test-manifest-missing-test-file-unfiltered')
-
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'lists test that does not exist: missing.js'):
- self.read_topsrcdir(reader)
-
-@@ -794,20 +794,20 @@
- self.assertIsInstance(obj.path, Path)
-
- def test_jar_manifests_multiple_files(self):
-- with self.assertRaisesRegexp(SandboxValidationError, 'limited to one value'):
-+ with self.assertRaisesRegex(SandboxValidationError, 'limited to one value'):
- reader = self.reader('jar-manifests-multiple-files')
- self.read_topsrcdir(reader)
-
- def test_xpidl_module_no_sources(self):
- """XPIDL_MODULE without XPIDL_SOURCES should be rejected."""
-- with self.assertRaisesRegexp(SandboxValidationError, 'XPIDL_MODULE '
-+ with self.assertRaisesRegex(SandboxValidationError, 'XPIDL_MODULE '
- 'cannot be defined'):
- reader = self.reader('xpidl-module-no-sources')
- self.read_topsrcdir(reader)
-
- def test_missing_local_includes(self):
- """LOCAL_INCLUDES containing non-existent directories should be rejected."""
-- with self.assertRaisesRegexp(SandboxValidationError, 'Path specified in '
-+ with self.assertRaisesRegex(SandboxValidationError, 'Path specified in '
- 'LOCAL_INCLUDES does not exist'):
- reader = self.reader('missing-local-includes')
- self.read_topsrcdir(reader)
-@@ -852,7 +852,7 @@
- '.S': ['g.S'],
- '.s': ['h.s', 'i.asm'],
- }
-- for suffix, files in expected.items():
-+ for suffix, files in list(expected.items()):
- sources = suffix_map[suffix]
- self.assertEqual(
- sources.files,
-@@ -905,7 +905,7 @@
- '.S': ['g.S'],
- '.s': ['h.s', 'i.asm'],
- }
-- for suffix, files in expected.items():
-+ for suffix, files in list(expected.items()):
- sources = suffix_map[suffix]
- self.assertEqual(
- sources.files,
-@@ -931,7 +931,7 @@
- '.c': ['d.c'],
- '.mm': ['e.mm', 'f.mm'],
- }
-- for suffix, files in expected.items():
-+ for suffix, files in list(expected.items()):
- sources = suffix_map[suffix]
- self.assertEqual(
- sources.files,
-@@ -956,7 +956,7 @@
- '.mm': ['objc1.mm', 'objc2.mm'],
- '.c': ['c1.c', 'c2.c'],
- }
-- for suffix, files in expected.items():
-+ for suffix, files in list(expected.items()):
- sources = suffix_map[suffix]
- self.assertEqual(
- sources.files,
-@@ -982,7 +982,7 @@
- '.mm': ['objc1.mm', 'objc2.mm'],
- '.c': ['c1.c', 'c2.c'],
- }
-- for suffix, files in expected.items():
-+ for suffix, files in list(expected.items()):
- sources = suffix_map[suffix]
- self.assertEqual(
- sources.files,
-@@ -1005,11 +1005,11 @@
-
- expected = {'install.rdf', 'main.js'}
- for f in files:
-- self.assertTrue(unicode(f) in expected)
-+ self.assertTrue(str(f) in expected)
-
- def test_missing_final_target_pp_files(self):
- """Test that FINAL_TARGET_PP_FILES with missing files throws errors."""
-- with self.assertRaisesRegexp(SandboxValidationError, 'File listed in '
-+ with self.assertRaisesRegex(SandboxValidationError, 'File listed in '
- 'FINAL_TARGET_PP_FILES does not exist'):
- reader = self.reader('dist-files-missing')
- self.read_topsrcdir(reader)
-@@ -1017,49 +1017,49 @@
- def test_final_target_pp_files_non_srcdir(self):
- '''Test that non-srcdir paths in FINAL_TARGET_PP_FILES throws errors.'''
- reader = self.reader('final-target-pp-files-non-srcdir')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Only source directory paths allowed in FINAL_TARGET_PP_FILES:'):
- self.read_topsrcdir(reader)
-
- def test_rust_library_no_cargo_toml(self):
- '''Test that defining a RustLibrary without a Cargo.toml fails.'''
- reader = self.reader('rust-library-no-cargo-toml')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'No Cargo.toml file found'):
- self.read_topsrcdir(reader)
-
- def test_rust_library_name_mismatch(self):
- '''Test that defining a RustLibrary that doesn't match Cargo.toml fails.'''
- reader = self.reader('rust-library-name-mismatch')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'library.*does not match Cargo.toml-defined package'):
- self.read_topsrcdir(reader)
-
- def test_rust_library_no_lib_section(self):
- '''Test that a RustLibrary Cargo.toml with no [lib] section fails.'''
- reader = self.reader('rust-library-no-lib-section')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Cargo.toml for.* has no \\[lib\\] section'):
- self.read_topsrcdir(reader)
-
- def test_rust_library_no_profile_section(self):
- '''Test that a RustLibrary Cargo.toml with no [profile] section fails.'''
- reader = self.reader('rust-library-no-profile-section')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Cargo.toml for.* has no \\[profile\\.dev\\] section'):
- self.read_topsrcdir(reader)
-
- def test_rust_library_invalid_crate_type(self):
- '''Test that a RustLibrary Cargo.toml has a permitted crate-type.'''
- reader = self.reader('rust-library-invalid-crate-type')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'crate-type.* is not permitted'):
- self.read_topsrcdir(reader)
-
- def test_rust_library_non_abort_panic(self):
- '''Test that a RustLibrary Cargo.toml has `panic = "abort" set'''
- reader = self.reader('rust-library-non-abort-panic')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'does not specify `panic = "abort"`'):
- self.read_topsrcdir(reader)
-
-@@ -1072,15 +1072,15 @@
- self.assertEqual(len(objs), 1)
- lib = objs[0]
- self.assertIsInstance(lib, RustLibrary)
-- self.assertRegexpMatches(lib.lib_name, "random_crate")
-- self.assertRegexpMatches(lib.import_name, "random_crate")
-- self.assertRegexpMatches(lib.basename, "random-crate")
-+ self.assertRegex(lib.lib_name, "random_crate")
-+ self.assertRegex(lib.import_name, "random_crate")
-+ self.assertRegex(lib.basename, "random-crate")
-
- def test_multiple_rust_libraries(self):
- '''Test that linking multiple Rust libraries throws an error'''
- reader = self.reader('multiple-rust-libraries',
- extra_substs=dict(RUST_TARGET='i686-pc-windows-msvc'))
-- with self.assertRaisesRegexp(LinkageMultipleRustLibrariesError,
-+ with self.assertRaisesRegex(LinkageMultipleRustLibrariesError,
- 'Cannot link multiple Rust libraries'):
- self.read_topsrcdir(reader)
-
-@@ -1107,7 +1107,7 @@
- mozpath.join(reader.config.topobjdir, 'dir2'),
- '/dir3',
- ]
-- self.assertEquals([p.full_path for p in objs[0].paths], expected)
-+ self.assertEqual([p.full_path for p in objs[0].paths], expected)
-
- def test_binary_components(self):
- """Test that IS_COMPONENT/NO_COMPONENTS_MANIFEST work properly."""
-@@ -1163,7 +1163,7 @@
- from GENERATED_FILES is an error.
- """
- reader = self.reader('test-symbols-file-objdir-missing-generated')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Objdir file specified in SYMBOLS_FILE not in GENERATED_FILES:'):
- self.read_topsrcdir(reader)
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/frontend/test_namespaces.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/frontend/test_namespaces.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import unittest
-
-@@ -29,7 +29,7 @@
-
- class Piyo(ContextDerivedValue):
- def __init__(self, context, value):
-- if not isinstance(value, unicode):
-+ if not isinstance(value, str):
- raise ValueError
- self.context = context
- self.value = value
-@@ -48,9 +48,9 @@
-
-
- VARIABLES = {
-- 'HOGE': (unicode, unicode, None),
-- 'FUGA': (Fuga, unicode, None),
-- 'PIYO': (Piyo, unicode, None),
-+ 'HOGE': (str, str, None),
-+ 'FUGA': (Fuga, str, None),
-+ 'PIYO': (Piyo, str, None),
- 'HOGERA': (ContextDerivedTypedList(Piyo, StrictOrderingOnAppendList),
- list, None),
- 'HOGEHOGE': (ContextDerivedTypedListWithItems(
-@@ -104,7 +104,7 @@
- self.assertEqual(e[1], 'set_type')
- self.assertEqual(e[2], 'HOGE')
- self.assertEqual(e[3], True)
-- self.assertEqual(e[4], unicode)
-+ self.assertEqual(e[4], str)
-
- def test_key_checking(self):
- # Checking for existence of a key should not populate the key if it
-@@ -127,7 +127,7 @@
- self.assertEqual(e[1], 'set_type')
- self.assertEqual(e[2], 'FUGA')
- self.assertEqual(e[3], False)
-- self.assertEqual(e[4], unicode)
-+ self.assertEqual(e[4], str)
-
- ns['FUGA'] = 'fuga'
- self.assertIsInstance(ns['FUGA'], Fuga)
-@@ -150,7 +150,7 @@
- self.assertEqual(e[1], 'set_type')
- self.assertEqual(e[2], 'PIYO')
- self.assertEqual(e[3], False)
-- self.assertEqual(e[4], unicode)
-+ self.assertEqual(e[4], str)
-
- ns['PIYO'] = 'piyo'
- self.assertIsInstance(ns['PIYO'], Piyo)
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/frontend/test_reader.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/frontend/test_reader.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
- import sys
-@@ -423,7 +423,7 @@
- 'simple/base.cpp',
- ])
-
-- for path, pattern_set in expected.items():
-+ for path, pattern_set in list(expected.items()):
- self.assertEqual(v[path].test_files,
- expected[path])
-
-@@ -438,7 +438,7 @@
- 'default/tests/reftests/**']),
- }
-
-- for path, pattern_set in expected.items():
-+ for path, pattern_set in list(expected.items()):
- self.assertEqual(v[path].test_files,
- expected[path])
-
-@@ -454,7 +454,7 @@
- 'tagged/src/bar.jsm': set(['tagged/**.js']),
- }
-
-- for path, pattern_set in expected_patterns.items():
-+ for path, pattern_set in list(expected_patterns.items()):
- self.assertEqual(v[path].test_files,
- expected_patterns[path])
-
-@@ -462,7 +462,7 @@
- 'tagged/src/submodule/foo.js': set(['submodule']),
- 'tagged/src/bar.jsm': set([]),
- }
-- for path, pattern_set in expected_tags.items():
-+ for path, pattern_set in list(expected_tags.items()):
- self.assertEqual(v[path].test_tags,
- expected_tags[path])
-
-@@ -470,7 +470,7 @@
- 'tagged/src/bar.jsm': set(['browser-chrome']),
- 'tagged/src/submodule/foo.js': set([]),
- }
-- for path, pattern_set in expected_flavors.items():
-+ for path, pattern_set in list(expected_flavors.items()):
- self.assertEqual(v[path].test_flavors,
- expected_flavors[path])
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/test/frontend/test_sandbox.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/test/frontend/test_sandbox.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
- import shutil
-@@ -345,7 +345,7 @@
- sandbox = MozbuildSandbox(Context(VARIABLES, config))
-
- self.assertEqual(sandbox['CONFIG']['BAD_UTF8'],
-- u'\ufffd\ufffd\ufffd\ufffd:')
-+ '\ufffd\ufffd\ufffd\ufffd:')
-
- def test_invalid_exports_set_base(self):
- sandbox = self.sandbox()
-@@ -525,7 +525,7 @@
- source = 'a = foo(1, 2)'
- sandbox.exec_source(source, 'foo.mozbuild')
-
-- self.assertEquals(sandbox['a'], (Foo, int))
-+ self.assertEqual(sandbox['a'], (Foo, int))
- finally:
- del FUNCTIONS['foo']
-
---- mozjs-52.4.0/python/mozbuild/mozpack/archive.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/archive.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import bz2
- import gzip
---- mozjs-52.4.0/python/mozbuild/mozpack/copier.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/copier.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import os
- import stat
-@@ -109,7 +109,7 @@
- '''
- Return all paths stored in the container, in the order they were added.
- '''
-- return self._files.keys()
-+ return list(self._files.keys())
-
- def __len__(self):
- '''
-@@ -142,7 +142,7 @@
- for path, file in registry:
- (...)
- '''
-- return self._files.iteritems()
-+ return iter(self._files.items())
-
- def required_directories(self):
- '''
-@@ -151,7 +151,7 @@
- unspecified (virtual) root directory (and do not include said root
- directory).
- '''
-- return set(k for k, v in self._required_directories.items() if v > 0)
-+ return set(k for k, v in list(self._required_directories.items()) if v > 0)
-
-
- class FileRegistrySubtree(object):
-@@ -263,7 +263,7 @@
-
- Returns a FileCopyResult that details what changed.
- '''
-- assert isinstance(destination, basestring)
-+ assert isinstance(destination, str)
- assert not os.path.exists(destination) or os.path.isdir(destination)
-
- result = FileCopyResult()
-@@ -531,7 +531,7 @@
- def exists(self):
- return self.deflater is not None
-
-- if isinstance(dest, basestring):
-+ if isinstance(dest, str):
- dest = Dest(dest)
- assert isinstance(dest, Dest)
-
---- mozjs-52.4.0/python/mozbuild/mozpack/errors.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/errors.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import sys
- from contextlib import contextmanager
-@@ -97,7 +97,7 @@
- if self._count is None:
- raise ErrorMessage(msg)
- self._count += 1
-- print >>self.out, msg
-+ print(msg, file=self.out)
-
- def fatal(self, msg):
- self._handle(self.FATAL, msg)
---- mozjs-52.4.0/python/mozbuild/mozpack/executables.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/executables.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import os
- import struct
---- mozjs-52.4.0/python/mozbuild/mozpack/files.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/files.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import errno
- import os
-@@ -57,7 +57,7 @@
-
- def _copyfile(src, dest):
- # False indicates `dest` should be overwritten if it exists already.
-- if isinstance(src, unicode) and isinstance(dest, unicode):
-+ if isinstance(src, str) and isinstance(dest, str):
- _CopyFileW(src, dest, False)
- elif isinstance(src, str) and isinstance(dest, str):
- _CopyFileA(src, dest, False)
-@@ -145,13 +145,13 @@
- # - keep file type (e.g. S_IFREG)
- ret = stat.S_IFMT(mode)
- # - expand user read and execute permissions to everyone
-- if mode & 0400:
-- ret |= 0444
-- if mode & 0100:
-- ret |= 0111
-+ if mode & 0o400:
-+ ret |= 0o444
-+ if mode & 0o100:
-+ ret |= 0o111
- # - keep user write permissions
-- if mode & 0200:
-- ret |= 0200
-+ if mode & 0o200:
-+ ret |= 0o200
- # - leave away sticky bit, setuid, setgid
- return ret
-
-@@ -164,7 +164,7 @@
- disabled when skip_if_older is False.
- Returns whether a copy was actually performed (True) or not (False).
- '''
-- if isinstance(dest, basestring):
-+ if isinstance(dest, str):
- dest = Dest(dest)
- else:
- assert isinstance(dest, Dest)
-@@ -258,11 +258,11 @@
- '''
- def copy(self, dest, skip_if_older=True):
- real_dest = dest
-- if not isinstance(dest, basestring):
-+ if not isinstance(dest, str):
- fd, dest = mkstemp()
- os.close(fd)
- os.remove(dest)
-- assert isinstance(dest, basestring)
-+ assert isinstance(dest, str)
- # If File.copy didn't actually copy because dest is newer, check the
- # file sizes. If dest is smaller, it means it is already stripped and
- # elfhacked, so we can skip.
-@@ -299,7 +299,7 @@
- File.__init__(self, path)
-
- def copy(self, dest, skip_if_older=True):
-- assert isinstance(dest, basestring)
-+ assert isinstance(dest, str)
-
- # The logic in this function is complicated by the fact that symlinks
- # aren't universally supported. So, where symlinks aren't supported, we
-@@ -400,7 +400,7 @@
- self.required = required
-
- def copy(self, dest, skip_if_older=True):
-- if isinstance(dest, basestring):
-+ if isinstance(dest, str):
- dest = Dest(dest)
- else:
- assert isinstance(dest, Dest)
-@@ -432,7 +432,7 @@
- '''
- Invokes the preprocessor to create the destination file.
- '''
-- if isinstance(dest, basestring):
-+ if isinstance(dest, str):
- dest = Dest(dest)
- else:
- assert isinstance(dest, Dest)
-@@ -563,7 +563,7 @@
- the individual XPTs to link.
- skip_if_older is ignored.
- '''
-- if isinstance(dest, basestring):
-+ if isinstance(dest, str):
- dest = Dest(dest)
- assert isinstance(dest, Dest)
-
-@@ -1014,7 +1014,7 @@
- from mozpack.copier import FileRegistry
- self.files = FileRegistry()
-
-- for base, finder in sorted(finders.iteritems()):
-+ for base, finder in sorted(finders.items()):
- if self.files.contains(base):
- self.files.remove(base)
- for p, f in finder.find(''):
---- mozjs-52.4.0/python/mozbuild/mozpack/hg.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/hg.py (refactored)
-@@ -27,7 +27,7 @@
- # do not wish to do so, delete this exception statement from your
- # version.
-
--from __future__ import absolute_import
-+
-
- import mercurial.error as error
- import mercurial.hg as hg
-@@ -56,7 +56,7 @@
-
- Accepts a Mercurial localrepo and changectx instance.
- """
-- if isinstance(repo, (str, unicode)):
-+ if isinstance(repo, str):
- path = repo
- repo = hg.repository(hgui.ui(), repo)
- else:
-@@ -85,7 +85,7 @@
- return self._get(path)
-
- def _get(self, path):
-- if isinstance(path, unicode):
-+ if isinstance(path, str):
- path = path.encode('utf-8', 'replace')
-
- try:
---- mozjs-52.4.0/python/mozbuild/mozpack/manifests.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/manifests.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- from contextlib import contextmanager
- import json
---- mozjs-52.4.0/python/mozbuild/mozpack/mozjar.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/mozjar.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- from io import BytesIO
- import struct
-@@ -13,8 +13,9 @@
- ZIP_DEFLATED,
- )
- from collections import OrderedDict
--from urlparse import urlparse, ParseResult
-+from urllib.parse import urlparse, ParseResult
- import mozpack.path as mozpath
-+from functools import reduce
-
- JAR_STORED = ZIP_STORED
- JAR_DEFLATED = ZIP_DEFLATED
-@@ -68,7 +69,7 @@
- an instance with empty fields.
- '''
- assert self.MAGIC and isinstance(self.STRUCT, OrderedDict)
-- self.size_fields = set(t for t in self.STRUCT.itervalues()
-+ self.size_fields = set(t for t in self.STRUCT.values()
- if not t in JarStruct.TYPE_MAPPING)
- self._values = {}
- if data:
-@@ -90,7 +91,7 @@
- # For all fields used as other fields sizes, keep track of their value
- # separately.
- sizes = dict((t, 0) for t in self.size_fields)
-- for name, t in self.STRUCT.iteritems():
-+ for name, t in self.STRUCT.items():
- if t in JarStruct.TYPE_MAPPING:
- value, size = JarStruct.get_data(t, data[offset:])
- else:
-@@ -109,7 +110,7 @@
- Initialize an instance with empty fields.
- '''
- self.signature = self.MAGIC
-- for name, t in self.STRUCT.iteritems():
-+ for name, t in self.STRUCT.items():
- if name in self.size_fields:
- continue
- self._values[name] = 0 if t in JarStruct.TYPE_MAPPING else ''
-@@ -134,9 +135,9 @@
- from self.STRUCT.
- '''
- serialized = struct.pack('<I', self.signature)
-- sizes = dict((t, name) for name, t in self.STRUCT.iteritems()
-+ sizes = dict((t, name) for name, t in self.STRUCT.items()
- if not t in JarStruct.TYPE_MAPPING)
-- for name, t in self.STRUCT.iteritems():
-+ for name, t in self.STRUCT.items():
- if t in JarStruct.TYPE_MAPPING:
- format, size = JarStruct.TYPE_MAPPING[t]
- if name in sizes:
-@@ -155,7 +156,7 @@
- variable length fields.
- '''
- size = JarStruct.TYPE_MAPPING['uint32'][1]
-- for name, type in self.STRUCT.iteritems():
-+ for name, type in self.STRUCT.items():
- if type in JarStruct.TYPE_MAPPING:
- size += JarStruct.TYPE_MAPPING[type][1]
- else:
-@@ -176,7 +177,7 @@
- return key in self._values
-
- def __iter__(self):
-- return self._values.iteritems()
-+ return iter(self._values.items())
-
- def __repr__(self):
- return "<%s %s>" % (self.__class__.__name__,
-@@ -374,7 +375,7 @@
- preload = JarStruct.get_data('uint32', self._data)[0]
- entries = OrderedDict()
- offset = self._cdir_end['cdir_offset']
-- for e in xrange(self._cdir_end['cdir_entries']):
-+ for e in range(self._cdir_end['cdir_entries']):
- entry = JarCdirEntry(self._data[offset:])
- offset += entry.size
- # Creator host system. 0 is MSDOS, 3 is Unix
-@@ -385,7 +386,7 @@
- xattr = entry['external_attr']
- # Skip directories
- if (host == 0 and xattr & 0x10) or (host == 3 and
-- xattr & (040000 << 16)):
-+ xattr & (0o40000 << 16)):
- continue
- entries[entry['filename']] = entry
- if entry['offset'] < preload:
-@@ -436,7 +437,7 @@
- for file in jarReader:
- ...
- '''
-- for entry in self.entries.itervalues():
-+ for entry in self.entries.values():
- yield self._getreader(entry)
-
- def __getitem__(self, name):
-@@ -529,7 +530,7 @@
- headers = {}
- preload_size = 0
- # Prepare central directory entries
-- for entry, content in self._contents.itervalues():
-+ for entry, content in self._contents.values():
- header = JarLocalFileHeader()
- for name in entry.STRUCT:
- if name in header:
-@@ -544,7 +545,7 @@
- end['disk_entries'] = len(self._contents)
- end['cdir_entries'] = end['disk_entries']
- end['cdir_size'] = reduce(lambda x, y: x + y[0].size,
-- self._contents.values(), 0)
-+ list(self._contents.values()), 0)
- # On optimized archives, store the preloaded size and the central
- # directory entries, followed by the first end of central directory.
- if self._optimize:
-@@ -553,18 +554,18 @@
- if preload_size:
- preload_size += offset
- self._data.write(struct.pack('<I', preload_size))
-- for entry, _ in self._contents.itervalues():
-+ for entry, _ in self._contents.values():
- entry['offset'] += offset
- self._data.write(entry.serialize())
- self._data.write(end.serialize())
- # Store local file entries followed by compressed data
-- for entry, content in self._contents.itervalues():
-+ for entry, content in self._contents.values():
- self._data.write(headers[entry].serialize())
- self._data.write(content)
- # On non optimized archives, store the central directory entries.
- if not self._optimize:
- end['cdir_offset'] = offset
-- for entry, _ in self._contents.itervalues():
-+ for entry, _ in self._contents.values():
- self._data.write(entry.serialize())
- # Store the end of central directory.
- self._data.write(end.serialize())
-@@ -599,7 +600,7 @@
- deflater = data
- else:
- deflater = Deflater(compress, compress_level=self._compress_level)
-- if isinstance(data, basestring):
-+ if isinstance(data, str):
- deflater.write(data)
- elif hasattr(data, 'read'):
- if hasattr(data, 'seek'):
-@@ -615,7 +616,7 @@
- # Set creator host system (upper byte of creator_version)
- # to 3 (Unix) so mode is honored when there is one.
- entry['creator_version'] |= 3 << 8
-- entry['external_attr'] = (mode & 0xFFFF) << 16L
-+ entry['external_attr'] = (mode & 0xFFFF) << 16
- if deflater.compressed:
- entry['min_version'] = 20 # Version 2.0 supports deflated streams
- entry['general_flag'] = 2 # Max compression
---- mozjs-52.4.0/python/mozbuild/mozpack/path.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/path.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import posixpath
- import os
---- mozjs-52.4.0/python/mozbuild/mozpack/unify.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/unify.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- from mozpack.files import (
- BaseFinder,
-@@ -73,7 +73,7 @@
- creating the instance.
- skip_if_older is ignored.
- '''
-- assert isinstance(dest, basestring)
-+ assert isinstance(dest, str)
- tmpfiles = []
- try:
- for e in self._executables:
---- mozjs-52.4.0/python/mozbuild/mozpack/chrome/flags.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/chrome/flags.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import re
- from distutils.version import LooseVersion
-@@ -250,7 +250,7 @@
- flags.match(application='foo', appversion='3.5') returns True
- flags.match(application='foo', appversion='3.0') returns False
- '''
-- for name, value in filter.iteritems():
-+ for name, value in filter.items():
- if not name in self:
- continue
- if not self[name].matches(value):
---- mozjs-52.4.0/python/mozbuild/mozpack/chrome/manifest.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/chrome/manifest.py (refactored)
-@@ -2,11 +2,11 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import re
- import os
--from urlparse import urlparse
-+from urllib.parse import urlparse
- import mozpack.path as mozpath
- from mozpack.chrome.flags import Flags
- from mozpack.errors import errors
-@@ -321,7 +321,7 @@
- return self.serialize(self.contractID, self.cid)
-
- # All manifest classes by their type name.
--MANIFESTS_TYPES = dict([(c.type, c) for c in globals().values()
-+MANIFESTS_TYPES = dict([(c.type, c) for c in list(globals().values())
- if type(c) == type and issubclass(c, ManifestEntry)
- and hasattr(c, 'type') and c.type])
-
---- mozjs-52.4.0/python/mozbuild/mozpack/packager/__init__.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/packager/__init__.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- from mozbuild.preprocessor import Preprocessor
- import re
-@@ -50,7 +50,7 @@
- '''
- Split [1, 2, 3, 4, 5, 6, 7] into [(1, 2, 3), (4, 5, 6)].
- '''
-- return zip(*[iter(lst)] * 3)
-+ return list(zip(*[iter(lst)] * 3))
-
- KEY_VALUE_RE = re.compile(r'''
- \s* # optional whitespace.
-@@ -118,7 +118,7 @@
- destdir = options.pop('destdir', '')
- if options:
- errors.fatal('Malformed manifest: options %s not recognized'
-- % options.keys())
-+ % list(options.keys()))
- return Component(name, destdir=destdir)
-
-
-@@ -328,7 +328,7 @@
-
- bases = self.get_bases()
- broken_bases = sorted(
-- m for m, includer in self._included_manifests.iteritems()
-+ m for m, includer in self._included_manifests.items()
- if mozpath.basedir(m, bases) != mozpath.basedir(includer, bases))
- for m in broken_bases:
- errors.fatal('"%s" is included from "%s", which is outside "%s"' %
---- mozjs-52.4.0/python/mozbuild/mozpack/packager/formats.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/packager/formats.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- from mozpack.chrome.manifest import (
- Manifest,
-@@ -11,7 +11,7 @@
- ManifestBinaryComponent,
- ManifestResource,
- )
--from urlparse import urlparse
-+from urllib.parse import urlparse
- import mozpack.path as mozpath
- from mozpack.files import (
- ManifestFile,
-@@ -89,7 +89,7 @@
- Return the deepest base directory containing the given path.
- '''
- self._frozen_bases = True
-- base = mozpath.basedir(path, self._sub_formatter.keys())
-+ base = mozpath.basedir(path, list(self._sub_formatter.keys()))
- relpath = mozpath.relpath(path, base) if base else path
- return base, relpath
-
---- mozjs-52.4.0/python/mozbuild/mozpack/packager/l10n.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/packager/l10n.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- '''
- Replace localized parts of a packaged directory with data from a langpack
-@@ -162,7 +162,7 @@
- if not path:
- continue
- else:
-- base = mozpath.basedir(p, paths.keys())
-+ base = mozpath.basedir(p, list(paths.keys()))
- if base:
- subpath = mozpath.relpath(p, base)
- path = mozpath.normpath(mozpath.join(paths[base],
-@@ -206,7 +206,7 @@
- formatter.add(p, f)
-
- # Transplant jar preloading information.
-- for path, log in app_finder.jarlogs.iteritems():
-+ for path, log in app_finder.jarlogs.items():
- assert isinstance(copier[path], Jarrer)
- copier[path].preload([l.replace(locale, l10n_locale) for l in log])
-
-@@ -237,7 +237,7 @@
- finders = {
- '': l10n_finder,
- }
-- for base, path in extra_l10n.iteritems():
-+ for base, path in extra_l10n.items():
- finders[base] = UnpackFinder(path)
- l10n_finder = ComposedFinder(finders)
- copier = FileCopier()
---- mozjs-52.4.0/python/mozbuild/mozpack/packager/unpack.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/packager/unpack.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import mozpack.path as mozpath
- from mozpack.files import (
-@@ -27,7 +27,7 @@
- FlatFormatter,
- STARTUP_CACHE_PATHS,
- )
--from urlparse import urlparse
-+from urllib.parse import urlparse
-
-
- class UnpackFinder(BaseFinder):
-@@ -149,7 +149,7 @@
- if not any(f.compressed for f in jar):
- self.compressed = False
- if jar.last_preloaded:
-- jarlog = jar.entries.keys()
-+ jarlog = list(jar.entries.keys())
- self.jarlogs[path] = jarlog[:jarlog.index(jar.last_preloaded) + 1]
- return jar
-
---- mozjs-52.4.0/python/mozbuild/mozpack/test/test_archive.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/test/test_archive.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import hashlib
- import os
-@@ -69,7 +69,7 @@
- try:
- tp = os.path.join(d, 'test.tar')
- with open(tp, 'wb') as fh:
-- with self.assertRaisesRegexp(ValueError, 'not a regular'):
-+ with self.assertRaisesRegex(ValueError, 'not a regular'):
- create_tar_from_files(fh, {'test': d})
- finally:
- shutil.rmtree(d)
-@@ -89,9 +89,9 @@
-
- tp = os.path.join(d, 'test.tar')
- with open(tp, 'wb') as fh:
-- with self.assertRaisesRegexp(ValueError, 'cannot add file with setuid'):
-+ with self.assertRaisesRegex(ValueError, 'cannot add file with setuid'):
- create_tar_from_files(fh, {'test': uid})
-- with self.assertRaisesRegexp(ValueError, 'cannot add file with setuid'):
-+ with self.assertRaisesRegex(ValueError, 'cannot add file with setuid'):
- create_tar_from_files(fh, {'test': gid})
- finally:
- shutil.rmtree(d)
---- mozjs-52.4.0/python/mozbuild/mozpack/test/test_chrome_manifest.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/test/test_chrome_manifest.py (refactored)
-@@ -24,7 +24,7 @@
- parse_manifest_line,
- )
- from mozpack.errors import errors, AccumulatedErrors
--from test_errors import TestErrors
-+from .test_errors import TestErrors
-
-
- class TestManifest(unittest.TestCase):
---- mozjs-52.4.0/python/mozbuild/mozpack/test/test_copier.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/test/test_copier.py (refactored)
-@@ -127,7 +127,7 @@
- 'bar': [],
- }
- reg = FileRegistry()
-- for path, parts in cases.iteritems():
-+ for path, parts in cases.items():
- self.assertEqual(reg._partial_paths(path), parts)
-
- def test_file_registry(self):
-@@ -414,7 +414,7 @@
- self.assertTrue(stat.S_ISDIR(st.st_mode))
-
- # What's worse, we have no record that dest was created.
-- self.assertEquals(len(result.updated_files), 0)
-+ self.assertEqual(len(result.updated_files), 0)
-
- # But we do have an erroneous record of an optional file
- # existing when it does not.
---- mozjs-52.4.0/python/mozbuild/mozpack/test/test_errors.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/test/test_errors.py (refactored)
-@@ -10,7 +10,7 @@
- import unittest
- import mozunit
- import sys
--from cStringIO import StringIO
-+from io import StringIO
-
-
- class TestErrors(object):
-@@ -30,14 +30,14 @@
- errors.warn('foo')
- self.assertRaises(ErrorMessage, errors.error, 'foo')
- self.assertRaises(ErrorMessage, errors.fatal, 'foo')
-- self.assertEquals(self.get_output(), ['Warning: foo'])
-+ self.assertEqual(self.get_output(), ['Warning: foo'])
-
- def test_ignore_errors(self):
- errors.ignore_errors()
- errors.warn('foo')
- errors.error('bar')
- self.assertRaises(ErrorMessage, errors.fatal, 'foo')
-- self.assertEquals(self.get_output(), ['Warning: foo', 'Warning: bar'])
-+ self.assertEqual(self.get_output(), ['Warning: foo', 'Warning: bar'])
-
- def test_no_error(self):
- with errors.accumulate():
-@@ -47,14 +47,14 @@
- with self.assertRaises(AccumulatedErrors):
- with errors.accumulate():
- errors.error('1')
-- self.assertEquals(self.get_output(), ['Error: 1'])
-+ self.assertEqual(self.get_output(), ['Error: 1'])
-
- def test_error_loop(self):
- with self.assertRaises(AccumulatedErrors):
- with errors.accumulate():
- for i in range(3):
- errors.error('%d' % i)
-- self.assertEquals(self.get_output(),
-+ self.assertEqual(self.get_output(),
- ['Error: 0', 'Error: 1', 'Error: 2'])
-
- def test_multiple_errors(self):
-@@ -67,7 +67,7 @@
- else:
- errors.error('%d' % i)
- errors.error('bar')
-- self.assertEquals(self.get_output(),
-+ self.assertEqual(self.get_output(),
- ['Error: foo', 'Error: 0', 'Error: 1',
- 'Warning: 2', 'Error: bar'])
-
---- mozjs-52.4.0/python/mozbuild/mozpack/test/test_files.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/test/test_files.py (refactored)
-@@ -61,7 +61,7 @@
- import mozpack.path as mozpath
- from tempfile import mkdtemp
- from io import BytesIO
--from StringIO import StringIO
-+from io import StringIO
- from xpt import Typelib
-
-
-@@ -146,7 +146,7 @@
- dest.write('qux')
- self.assertEqual(dest.read(), 'qux')
-
--rand = ''.join(random.choice(string.letters) for i in xrange(131597))
-+rand = ''.join(random.choice(string.letters) for i in range(131597))
- samples = [
- '',
- 'test',
-@@ -268,7 +268,7 @@
- def test_absolute_relative(self):
- AbsoluteSymlinkFile('/foo')
-
-- with self.assertRaisesRegexp(ValueError, 'Symlink target not absolute'):
-+ with self.assertRaisesRegex(ValueError, 'Symlink target not absolute'):
- AbsoluteSymlinkFile('./foo')
-
- def test_symlink_file(self):
-@@ -477,7 +477,7 @@
-
- class TestExistingFile(TestWithTmpDir):
- def test_required_missing_dest(self):
-- with self.assertRaisesRegexp(ErrorMessage, 'Required existing file'):
-+ with self.assertRaisesRegex(ErrorMessage, 'Required existing file'):
- f = ExistingFile(required=True)
- f.copy(self.tmppath('dest'))
-
-@@ -566,7 +566,7 @@
- with JarWriter(src) as jar:
- for content in samples:
- name = ''.join(random.choice(string.letters)
-- for i in xrange(8))
-+ for i in range(8))
- jar.add(name, content, compress=True)
- contents[name] = content
-
---- mozjs-52.4.0/python/mozbuild/mozpack/test/test_manifests.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/test/test_manifests.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
-
---- mozjs-52.4.0/python/mozbuild/mozpack/test/test_mozjar.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/test/test_mozjar.py (refactored)
-@@ -16,8 +16,8 @@
- from mozpack.test.test_files import MockDest
- import unittest
- import mozunit
--from cStringIO import StringIO
--from urllib import pathname2url
-+from io import StringIO
-+from urllib.request import pathname2url
- import mozpack.path as mozpath
- import os
-
---- mozjs-52.4.0/python/mozbuild/mozpack/test/test_packager_formats.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/test/test_packager_formats.py (refactored)
-@@ -128,7 +128,7 @@
- 'foo': read_interfaces(foo2_xpt.open())['foo'],
- 'bar': read_interfaces(bar_xpt.open())['bar'],
- },
-- }.iteritems()
-+ }.items()
- })
-
- RESULT_JAR = {
-@@ -174,7 +174,7 @@
- },
- 'addon1.xpi': {
- mozpath.relpath(p, 'addon1'): f
-- for p, f in RESULT_FLAT.iteritems()
-+ for p, f in RESULT_FLAT.items()
- if p.startswith('addon1/')
- },
- })
-@@ -234,7 +234,7 @@
- CONTENTS_WITH_BASE = {
- 'bases': {
- mozpath.join('base/root', b) if b else 'base/root': a
-- for b, a in CONTENTS['bases'].iteritems()
-+ for b, a in CONTENTS['bases'].items()
- },
- 'manifests': [
- m.move(mozpath.join('base/root', m.base))
-@@ -242,7 +242,7 @@
- ],
- 'files': {
- mozpath.join('base/root', p): f
-- for p, f in CONTENTS['files'].iteritems()
-+ for p, f in CONTENTS['files'].items()
- },
- }
-
-@@ -255,7 +255,7 @@
- def result_with_base(results):
- result = {
- mozpath.join('base/root', p): v
-- for p, v in results.iteritems()
-+ for p, v in results.items()
- }
- result.update(EXTRA_CONTENTS)
- return result
-@@ -271,13 +271,13 @@
-
-
- def fill_formatter(formatter, contents):
-- for base, is_addon in contents['bases'].items():
-+ for base, is_addon in list(contents['bases'].items()):
- formatter.add_base(base, is_addon)
-
- for manifest in contents['manifests']:
- formatter.add_manifest(manifest)
-
-- for k, v in contents['files'].iteritems():
-+ for k, v in contents['files'].items():
- if k.endswith('.xpt'):
- formatter.add_interfaces(k, v)
- else:
---- mozjs-52.4.0/python/mozbuild/mozpack/test/test_packager_l10n.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/test/test_packager_l10n.py (refactored)
-@@ -4,7 +4,7 @@
-
- import unittest
- import mozunit
--from test_packager import MockFinder
-+from .test_packager import MockFinder
- from mozpack.packager import l10n
- from mozpack.files import (
- GeneratedFile,
-@@ -118,7 +118,7 @@
-
- self.assertEqual(
- dict((p, f.open().read()) for p, f in copier),
-- dict((p, f.open().read()) for p, f in repacked.iteritems())
-+ dict((p, f.open().read()) for p, f in repacked.items())
- )
-
-
---- mozjs-52.4.0/python/mozbuild/mozpack/test/test_unify.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/test/test_unify.py (refactored)
-@@ -13,7 +13,7 @@
- from mozpack.files import FileFinder
- from mozpack.mozjar import JarWriter
- from mozpack.test.test_files import MockDest
--from cStringIO import StringIO
-+from io import StringIO
- import os
- import sys
- from mozpack.errors import (
---- mozjs-52.4.0/python/mozbuild/mozpack/test/support/minify_js_verify.py (original)
-+++ mozjs-52.4.0/python/mozbuild/mozpack/test/support/minify_js_verify.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import print_function
-+
- import sys
-
-
---- mozjs-52.4.0/build/moz.configure/keyfiles.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ mozjs-52.4.0/build/moz.configure/keyfiles.configure 2018-07-10 07:57:16.030000000 +0000
-@@ -16,8 +16,8 @@
-
- @depends('--with-%s-keyfile' % name)
- @checking('for the %s key' % desc, lambda x: x and x is not no_key)
-- @imports(_from='__builtin__', _import='open')
-- @imports(_from='__builtin__', _import='IOError')
-+ @imports(_from='builtins', _import='open')
-+ @imports(_from='builtins', _import='IOError')
- def keyfile(value):
- if value:
- try:
---- mozjs-52.4.0/build/moz.configure/windows.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ mozjs-52.4.0/build/moz.configure/windows.configure 2018-07-10 07:57:25.210000000 +0000
-@@ -19,7 +19,7 @@
-
-
- @depends_win('--with-windows-version')
--@imports(_from='__builtin__', _import='ValueError')
-+@imports(_from='builtins', _import='ValueError')
- def valid_windows_version(value):
- if not value:
- die('Cannot build with --without-windows-version')
-@@ -56,8 +56,8 @@
- # 8.1.
- @imports('os')
- @imports('re')
--@imports(_from='__builtin__', _import='sorted')
--@imports(_from='__builtin__', _import='WindowsError')
-+@imports(_from='builtins', _import='sorted')
-+@imports(_from='builtins', _import='WindowsError')
- def get_sdk_dirs(sdk, subdir):
- def get_dirs_containing(sdk, stem, subdir):
- base = os.path.join(sdk, stem)
-@@ -102,7 +102,7 @@
- @depends_win(c_compiler, windows_sdk_dir, valid_windows_version,
- 'WINDOWSSDKDIR')
- @checking('for Windows SDK', valid_windows_sdk_dir_result)
--@imports(_from='__builtin__', _import='sorted')
-+@imports(_from='builtins', _import='sorted')
- @imports(_from='textwrap', _import='dedent')
- def valid_windows_sdk_dir(compiler, windows_sdk_dir, target_version,
- windows_sdk_dir_env):
-@@ -179,7 +179,7 @@
- @depends_win(windows_sdk_dir, 'WINDOWSSDKDIR')
- @checking('for Universal CRT SDK', valid_ucrt_sdk_dir_result)
- @imports('os')
--@imports(_from='__builtin__', _import='sorted')
-+@imports(_from='builtins', _import='sorted')
- @imports(_import='mozpack.path', _as='mozpath')
- def valid_ucrt_sdk_dir(windows_sdk_dir, windows_sdk_dir_env):
- if windows_sdk_dir_env:
---- mozjs-52.4.0/build/moz.configure/toolchain.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ mozjs-52.4.0/build/moz.configure/toolchain.configure 2018-07-10 07:57:28.830000000 +0000
-@@ -395,7 +395,7 @@
-
-
- @imports(_from='collections', _import='defaultdict')
--@imports(_from='__builtin__', _import='sorted')
-+@imports(_from='builtins', _import='sorted')
- def get_vc_paths(base):
- vc = defaultdict(lambda: defaultdict(dict))
- subkey = r'Microsoft\VisualStudio\VC\*\*\*\Compiler'
---- mozjs-52.4.0/build/moz.configure/util.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ mozjs-52.4.0/build/moz.configure/util.configure 2018-07-10 07:57:31.540000000 +0000
-@@ -234,7 +234,7 @@
- # ('19.0', 'x64', r'C:\...\amd64\cl.exe')
- # ('19.0', 'x86', r'C:\...\amd64_x86\cl.exe')
- @imports(_import='_winreg', _as='winreg')
--@imports(_from='__builtin__', _import='WindowsError')
-+@imports(_from='builtins', _import='WindowsError')
- @imports(_from='fnmatch', _import='fnmatch')
- def get_registry_values(pattern):
- def enum_helper(func, key):
---- mozjs-52.4.0/build/moz.configure/checks.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ mozjs-52.4.0/build/moz.configure/checks.configure 2018-07-10 07:57:35.630000000 +0000
-@@ -12,7 +12,7 @@
- # _declare_exceptions template, and add it to the return statement. Then
- # destructure in the assignment below the function declaration.
- @template
--@imports(_from='__builtin__', _import='Exception')
-+@imports(_from='builtins', _import='Exception')
- def _declare_exceptions():
- class FatalCheckError(Exception):
- '''An exception to throw from a function decorated with @checking.
---- mozjs-52.4.0/build/moz.configure/old.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ mozjs-52.4.0/build/moz.configure/old.configure 2018-07-10 07:57:38.970000000 +0000
-@@ -61,8 +61,8 @@
-
- @depends('OLD_CONFIGURE', mozconfig, autoconf, check_build_environment, shell,
- old_configure_assignments, build_project)
--@imports(_from='__builtin__', _import='open')
--@imports(_from='__builtin__', _import='print')
-+@imports(_from='builtins', _import='open')
-+@imports(_from='builtins', _import='print')
- @imports('glob')
- @imports('itertools')
- @imports('subprocess')
-@@ -302,8 +302,8 @@
- '--enable-calendar',
- '--enable-incomplete-external-linkage',
- )
--@imports(_from='__builtin__', _import='compile')
--@imports(_from='__builtin__', _import='open')
-+@imports(_from='builtins', _import='compile')
-+@imports(_from='builtins', _import='open')
- @imports('logging')
- @imports('os')
- @imports('subprocess')
---- mozjs-52.4.0/build/moz.configure/android-ndk.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ mozjs-52.4.0/build/moz.configure/android-ndk.configure 2018-07-10 07:57:41.120000000 +0000
-@@ -22,7 +22,7 @@
- default=min_android_version)
-
- @depends('--with-android-version', min_android_version)
--@imports(_from='__builtin__', _import='ValueError')
-+@imports(_from='builtins', _import='ValueError')
- def android_version(value, min_version):
- if not value:
- # Someone has passed --without-android-version.
---- mozjs-52.4.0/build/moz.configure/init.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ mozjs-52.4.0/build/moz.configure/init.configure 2018-07-10 07:57:44.330000000 +0000
-@@ -636,7 +636,7 @@
- # - otherwise, if we have "a" in GRE_MILESTONE, we're building Nightly or Aurora
- # - otherwise, we're building Release/Beta (define RELEASE_OR_BETA)
- @depends(check_build_environment, '--help')
--@imports(_from='__builtin__', _import='open')
-+@imports(_from='builtins', _import='open')
- def milestone(build_env, _):
- milestone_path = os.path.join(build_env.topsrcdir,
- 'config',
-diff -aur mozjs-52.4.0/config/mozunit.py mozjs-fixed/config/mozunit.py
---- mozjs-52.4.0/config/mozunit.py 2017-04-11 02:13:09.000000000 +0000
-+++ mozjs-fixed/config/mozunit.py 2018-07-10 08:19:37.770000000 +0000
-@@ -5,7 +5,7 @@
- from unittest import TextTestRunner as _TestRunner, TestResult as _TestResult
- import unittest
- import inspect
--from StringIO import StringIO
-+from io import StringIO
- import os
- import sys
-
-@@ -74,7 +74,7 @@
-
- def printFail(self, test, err):
- exctype, value, tb = err
-- message = value.message.splitlines()[0] if value.message else 'NO MESSAGE'
-+ message = str(value).splitlines()[0] if str(value) else 'NO MESSAGE'
- # Skip test runner traceback levels
- while tb and self._is_relevant_tb_level(tb):
- tb = tb.tb_next
-diff -aur mozjs-52.4.0/python/mozbuild/mozbuild/backend/configenvironment.py mozjs-fixed/python/mozbuild/mozbuild/backend/configenvironment.py
---- mozjs-52.4.0/python/mozbuild/mozbuild/backend/configenvironment.py 2018-07-10 08:24:43.150000000 +0000
-+++ mozjs-fixed/python/mozbuild/mozbuild/backend/configenvironment.py 2018-07-10 08:15:12.650000000 +0000
-@@ -8,7 +8,8 @@
- import sys
-
- from collections import Iterable
--from types import StringTypes, ModuleType
-+from types import ModuleType
-+StringTypes = (str,)
-
- import mozpack.path as mozpath
-
-diff -aur mozjs-52.4.0/python/mozbuild/mozbuild/makeutil.py mozjs-fixed/python/mozbuild/mozbuild/makeutil.py
---- mozjs-52.4.0/python/mozbuild/mozbuild/makeutil.py 2018-07-10 08:24:43.150000000 +0000
-+++ mozjs-fixed/python/mozbuild/mozbuild/makeutil.py 2018-07-10 08:20:05.230000000 +0000
-@@ -6,7 +6,6 @@
-
- import os
- import re
--from types import StringTypes
- from collections import Iterable
-
-
-@@ -103,19 +102,19 @@
-
- def add_targets(self, targets):
- '''Add additional targets to the rule.'''
-- assert isinstance(targets, Iterable) and not isinstance(targets, StringTypes)
-+ assert isinstance(targets, Iterable) and not isinstance(targets, str)
- self._targets.update(targets)
- return self
-
- def add_dependencies(self, deps):
- '''Add dependencies to the rule.'''
-- assert isinstance(deps, Iterable) and not isinstance(deps, StringTypes)
-+ assert isinstance(deps, Iterable) and not isinstance(deps, str)
- self._dependencies.update(deps)
- return self
-
- def add_commands(self, commands):
- '''Add commands to the rule.'''
-- assert isinstance(commands, Iterable) and not isinstance(commands, StringTypes)
-+ assert isinstance(commands, Iterable) and not isinstance(commands, str)
- self._commands.extend(commands)
- return self
-
-diff -aur mozjs-52.4.0/python/which/which.py mozjs-fixed/python/which/which.py
---- mozjs-52.4.0/python/which/which.py 2017-04-11 02:13:24.000000000 +0000
-+++ mozjs-fixed/python/which/which.py 2018-07-10 08:11:01.570000000 +0000
-@@ -280,17 +280,17 @@
- try:
- optlist, args = getopt.getopt(argv[1:], 'haVvqp:e:',
- ['help', 'all', 'version', 'verbose', 'quiet', 'path=', 'exts='])
-- except getopt.GetoptError, msg:
-+ except getopt.GetoptError as msg:
- sys.stderr.write("which: error: %s. Your invocation was: %s\n"\
- % (msg, argv))
- sys.stderr.write("Try 'which --help'.\n")
- return 1
- for opt, optarg in optlist:
- if opt in ('-h', '--help'):
-- print _cmdlnUsage
-+ print(_cmdlnUsage)
- return 0
- elif opt in ('-V', '--version'):
-- print "which %s" % __version__
-+ print("which %s" % __version__)
- return 0
- elif opt in ('-a', '--all'):
- all = 1
-@@ -318,9 +318,9 @@
- nmatches = 0
- for match in whichgen(arg, path=altpath, verbose=verbose, exts=exts):
- if verbose:
-- print "%s (%s)" % match
-+ print("%s (%s)" % match)
- else:
-- print match
-+ print(match)
- nmatches += 1
- if not all:
- break
-diff -aur mozjs-52.4.0/testing/mozbase/mozprocess/mozprocess/processhandler.py mozjs-fixed/testing/mozbase/mozprocess/mozprocess/processhandler.py
---- mozjs-52.4.0/testing/mozbase/mozprocess/mozprocess/processhandler.py 2017-04-11 02:13:06.000000000 +0000
-+++ mozjs-fixed/testing/mozbase/mozprocess/mozprocess/processhandler.py 2018-07-10 08:13:15.440000000 +0000
-@@ -11,7 +11,7 @@
- import threading
- import time
- import traceback
--from Queue import Queue, Empty
-+from queue import Queue, Empty
- from datetime import datetime
-
- __all__ = ['ProcessHandlerMixin', 'ProcessHandler', 'LogOutput',
-@@ -121,14 +121,14 @@
- thread = threading.current_thread().name
- print("DBG::MOZPROC PID:{} ({}) | {}".format(self.pid, thread, msg))
-
-- def __del__(self, _maxint=sys.maxint):
-+ def __del__(self, _maxint=sys.maxsize):
- if isWin:
- handle = getattr(self, '_handle', None)
- if handle:
- if hasattr(self, '_internal_poll'):
- self._internal_poll(_deadstate=_maxint)
- else:
-- self.poll(_deadstate=sys.maxint)
-+ self.poll(_deadstate=sys.maxsize)
- if handle or self._job or self._io_port:
- self._cleanup()
- else:
-@@ -267,7 +267,7 @@
- if not (can_create_job or can_nest_jobs):
- # Since we've warned, we just log info here to inform you
- # of the consequence of setting ignore_children = True
-- print "ProcessManager NOT managing child processes"
-+ print("ProcessManager NOT managing child processes")
-
- # create the process
- hp, ht, pid, tid = winprocess.CreateProcess(
-@@ -534,11 +534,11 @@
-
- if rc == winprocess.WAIT_TIMEOUT:
- # The process isn't dead, so kill it
-- print "Timed out waiting for process to close, attempting TerminateProcess"
-+ print("Timed out waiting for process to close, attempting TerminateProcess")
- self.kill()
- elif rc == winprocess.WAIT_OBJECT_0:
- # We caught WAIT_OBJECT_0, which indicates all is well
-- print "Single process terminated successfully"
-+ print("Single process terminated successfully")
- self.returncode = winprocess.GetExitCodeProcess(self._handle)
- else:
- # An error occured we should probably throw
-diff -aur mozjs-52.4.0/build/moz.configure/checks.configure mozjs-fixed/build/moz.configure/checks.configure
---- mozjs-52.4.0/build/moz.configure/checks.configure 2018-07-10 10:29:50.380000000 +0000
-+++ mozjs-fixed/build/moz.configure/checks.configure 2018-07-10 10:27:45.350000000 +0000
-@@ -52,7 +52,7 @@
- try:
- ret = func(*args, **kwargs)
- except FatalCheckError as e:
-- error = e.message
-+ error = str(e)
- display_ret = callback(ret) if callback else ret
- if display_ret is True:
- log.info('yes')
-diff -aur mozjs-52.4.0/build/moz.configure/init.configure mozjs-fixed/build/moz.configure/init.configure
---- mozjs-52.4.0/build/moz.configure/init.configure 2018-07-10 10:29:50.380000000 +0000
-+++ mozjs-fixed/build/moz.configure/init.configure 2018-07-10 10:23:19.960000000 +0000
-@@ -213,7 +213,7 @@
- def early_options():
- return set(
- option.env
-- for option in __sandbox__._options.itervalues()
-+ for option in list(__sandbox__._options.values())
- if option.env
- )
- return early_options
-@@ -297,7 +297,7 @@
- # There is also a quartet form:
- # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
- # But we can consider the "KERNEL-OPERATING_SYSTEM" as one.
-- cpu, manufacturer, os = triplet.split('-', 2)
-+ cpu, manufacturer, os = triplet.decode('utf-8').split('-', 2)
-
- # Autoconf uses config.sub to validate and canonicalize those triplets,
- # but the granularity of its results has never been satisfying to our
-@@ -727,7 +727,7 @@
- def all_configure_options(_):
- result = []
- previous = None
-- for option in __sandbox__._options.itervalues():
-+ for option in list(__sandbox__._options.values()):
- # __sandbox__._options contains items for both option.name and
- # option.env. But it's also an OrderedDict, meaning both are
- # consecutive.
-diff -aur mozjs-52.4.0/build/moz.configure/old.configure mozjs-fixed/build/moz.configure/old.configure
---- mozjs-52.4.0/build/moz.configure/old.configure 2018-07-10 10:29:50.380000000 +0000
-+++ mozjs-fixed/build/moz.configure/old.configure 2018-07-10 10:19:19.880000000 +0000
-@@ -360,7 +360,7 @@
- # Every variation of the exec() function I tried led to:
- # SyntaxError: unqualified exec is not allowed in function 'main' it
- # contains a nested function with free variables
-- exec code in raw_config
-+ exec(code, raw_config)
-
- # Ensure all the flags known to old-configure appear in the
- # @old_configure_options above.
-diff -aur mozjs-52.4.0/build/moz.configure/toolchain.configure mozjs-fixed/build/moz.configure/toolchain.configure
---- mozjs-52.4.0/build/moz.configure/toolchain.configure 2018-07-10 10:29:50.380000000 +0000
-+++ mozjs-fixed/build/moz.configure/toolchain.configure 2018-07-10 10:28:13.020000000 +0000
-@@ -244,7 +244,7 @@
- ('CPU', CPU_preprocessor_checks),
- ('KERNEL', kernel_preprocessor_checks),
- ):
-- for n, (value, condition) in enumerate(preprocessor_checks.iteritems()):
-+ for n, (value, condition) in enumerate(preprocessor_checks.items()):
- check += dedent('''\
- #%(if)s %(condition)s
- %%%(name)s "%(value)s"
-@@ -278,9 +278,9 @@
- data = {}
- for line in result.splitlines():
- if line.startswith(b'%'):
-- k, _, v = line.partition(' ')
-- k = k.lstrip('%')
-- data[k] = v.replace(' ', '').lstrip('"').rstrip('"')
-+ k, _, v = line.partition(b' ')
-+ k = k.lstrip(b'%').decode('utf-8')
-+ data[k] = v.replace(b' ', b'').lstrip(b'"').rstrip(b'"').decode('utf-8')
- log.debug('%s = %s', k, data[k])
-
- try:
-diff -aur mozjs-52.4.0/build/moz.configure/util.configure mozjs-fixed/build/moz.configure/util.configure
---- mozjs-52.4.0/build/moz.configure/util.configure 2018-07-10 10:29:50.380000000 +0000
-+++ mozjs-fixed/build/moz.configure/util.configure 2018-07-10 10:23:54.980000000 +0000
-@@ -299,6 +299,8 @@
- @imports(_from='mozbuild.configure.util', _import='Version', _as='_Version')
- def Version(v):
- 'A version number that can be compared usefully.'
-+ if isinstance(v, bytes):
-+ v = v.decode('utf-8')
- return _Version(v)
-
- # Denotes a deprecated option. Combines option() and @depends:
-diff -aur mozjs-52.4.0/python/mozbuild/mozbuild/configure/__init__.py mozjs-fixed/python/mozbuild/mozbuild/configure/__init__.py
---- mozjs-52.4.0/python/mozbuild/mozbuild/configure/__init__.py 2018-07-10 10:29:50.350000000 +0000
-+++ mozjs-fixed/python/mozbuild/mozbuild/configure/__init__.py 2018-07-10 10:24:33.200000000 +0000
-@@ -97,6 +97,9 @@
- ', '.join(repr(d) for d in self.dependencies),
- )
-
-+ def __hash__(self):
-+ return hash((str(self.func), tuple(self.dependencies), self.when))
-+
-
- class CombinedDependsFunction(DependsFunction):
- def __init__(self, sandbox, func, dependencies):
-@@ -142,6 +145,9 @@
- def __ne__(self, other):
- return not self == other
-
-+ def __hash__(self):
-+ return hash((str(self.func), tuple(self.dependencies)))
-+
- class SandboxedGlobal(dict):
- '''Identifiable dict type for use as function global'''
-
-@@ -192,7 +198,8 @@
- b: __builtins__[b]
- for b in ('None', 'False', 'True', 'int', 'bool', 'any', 'all', 'len',
- 'list', 'tuple', 'set', 'dict', 'isinstance', 'getattr',
-- 'hasattr', 'enumerate', 'range', 'zip')
-+ 'hasattr', 'enumerate', 'range', 'zip', '__build_class__',
-+ 'bytes', 'exec')
- }, __import__=forbidden_import, str=str)
-
- # Expose a limited set of functions from os.path
-@@ -267,7 +274,7 @@
- return method
- def wrapped(*args, **kwargs):
- out_args = [
-- arg.decode(encoding) if isinstance(arg, str) else arg
-+ arg.decode(encoding) if isinstance(arg, bytes) else arg
- for arg in args
- ]
- return method(*out_args, **kwargs)
-diff -aur mozjs-52.4.0/python/mozbuild/mozbuild/configure/options.py mozjs-fixed/python/mozbuild/mozbuild/configure/options.py
---- mozjs-52.4.0/python/mozbuild/mozbuild/configure/options.py 2018-07-10 10:29:50.350000000 +0000
-+++ mozjs-fixed/python/mozbuild/mozbuild/configure/options.py 2018-07-10 10:15:41.760000000 +0000
-@@ -65,6 +65,9 @@
- return '%s%s' % (self.__class__.__name__,
- super(OptionValue, self).__repr__())
-
-+ def __hash__(self):
-+ return hash(str(self))
-+
-
- class PositiveOptionValue(OptionValue):
- '''Represents the value for a positive option (--enable/--with/--foo)
-diff -aur mozjs-52.4.0/python/mozbuild/mozbuild/configure/util.py mozjs-fixed/python/mozbuild/mozbuild/configure/util.py
---- mozjs-52.4.0/python/mozbuild/mozbuild/configure/util.py 2018-07-10 10:29:50.350000000 +0000
-+++ mozjs-fixed/python/mozbuild/mozbuild/configure/util.py 2018-07-10 09:04:28.150000000 +0000
-@@ -200,7 +200,7 @@
- self._encoding = getpreferredencoding()
-
- def write(self, buf):
-- if self._encoding and isinstance(buf, str):
-+ if self._encoding and isinstance(buf, bytes):
- buf = buf.decode(self._encoding)
- lines = buf.splitlines()
- if not lines:
-diff -aur mozjs-52.4.0/python/mozbuild/mozbuild/virtualenv.py mozjs-fixed/python/mozbuild/mozbuild/virtualenv.py
---- mozjs-52.4.0/python/mozbuild/mozbuild/virtualenv.py 2018-07-10 10:29:50.350000000 +0000
-+++ mozjs-fixed/python/mozbuild/mozbuild/virtualenv.py 2018-07-10 10:11:47.710000000 +0000
-@@ -108,7 +108,7 @@
- """
- ver = subprocess.check_output([python, '-c', 'import sys; print(sys.hexversion)']).rstrip()
- with open(self.exe_info_path, 'w') as fh:
-- fh.write("%s\n" % ver)
-+ fh.write("%s\n" % ver.decode('utf-8'))
- fh.write("%s\n" % os.path.getsize(python))
-
- def up_to_date(self, python=sys.executable):
-@@ -207,7 +207,7 @@
- return self.virtualenv_root
-
- def packages(self):
-- with file(self.manifest_path, 'rU') as fh:
-+ with open(self.manifest_path, 'rU') as fh:
- packages = [line.rstrip().split(':')
- for line in fh]
- return packages
-@@ -530,9 +530,9 @@
-
- our = LooseVersion('%d.%d.%d' % (major, minor, micro))
-
-- if major != MINIMUM_PYTHON_MAJOR or our < MINIMUM_PYTHON_VERSION:
-- log_handle.write('Python %s or greater (but not Python 3) is '
-- 'required to build. ' % MINIMUM_PYTHON_VERSION)
-+ if our < MINIMUM_PYTHON_VERSION:
-+ log_handle.write('Python %s or greater is required to build. '
-+ % MINIMUM_PYTHON_VERSION)
- log_handle.write('You are running Python %s.\n' % our)
-
- if os.name in ('nt', 'ce'):
-diff -aur mozjs-52.4.0/python/which/which.py mozjs-fixed/python/which/which.py
---- mozjs-52.4.0/python/which/which.py 2018-07-10 10:29:50.380000000 +0000
-+++ mozjs-fixed/python/which/which.py 2018-07-10 10:20:16.770000000 +0000
-@@ -243,7 +243,7 @@
- If no match is found for the command, a WhichError is raised.
- """
- try:
-- match = whichgen(command, path, verbose, exts).next()
-+ match = next(whichgen(command, path, verbose, exts))
- except StopIteration:
- raise WhichError("Could not find '%s' on the path." % command)
- return match
---- mozjs-52.4.0/build/moz.configure/old.configure.old 2018-07-10 10:32:48.550000000 +0000
-+++ mozjs-52.4.0/build/moz.configure/old.configure 2018-07-10 10:35:32.440000000 +0000
-@@ -107,7 +107,7 @@
-
- # Make old-configure append to config.log, where we put our own log.
- # This could be done with a m4 macro, but it's way easier this way
-- script = script.replace('>./config.log', '>>./config.log')
-+ script = script.replace(b'>./config.log', b'>>./config.log')
-
- with open(old_configure, 'wb') as fh:
- fh.write(script)
---- mozjs-52.4.0/build/subconfigure.py.old 2017-04-11 02:13:09.000000000 +0000
-+++ mozjs-52.4.0/build/subconfigure.py 2018-07-10 10:38:08.910000000 +0000
-@@ -27,7 +27,7 @@
- return super(Pool, cls).__new__(cls)
-
- def imap_unordered(self, fn, iterable):
-- return itertools.imap(fn, iterable)
-+ return map(fn, iterable)
-
- def close(self):
- pass
-@@ -131,11 +131,11 @@
- is_set = cache.get('ac_cv_env_%s_set' % precious) == 'set'
- value = cache.get('ac_cv_env_%s_value' % precious) if is_set else None
- if value != env.get(precious):
-- print 'Removing %s because of %s value change from:' \
-- % (data['cache-file'], precious)
-- print ' %s' % (value if value is not None else 'undefined')
-- print 'to:'
-- print ' %s' % env.get(precious, 'undefined')
-+ print('Removing %s because of %s value change from:' \
-+ % (data['cache-file'], precious))
-+ print(' %s' % (value if value is not None else 'undefined'))
-+ print('to:')
-+ print(' %s' % env.get(precious, 'undefined'))
- os.remove(data['cache-file'])
- return True
- return False
-@@ -333,8 +333,8 @@
- # We're going to run it ourselves.
- command += ['--no-create']
-
-- print prefix_lines('configuring', relobjdir)
-- print prefix_lines('running %s' % ' '.join(command[:-1]), relobjdir)
-+ print(prefix_lines('configuring', relobjdir))
-+ print(prefix_lines('running %s' % ' '.join(command[:-1]), relobjdir))
- sys.stdout.flush()
- try:
- output += subprocess.check_output(command,
-@@ -368,7 +368,7 @@
-
- if not skip_config_status:
- if skip_configure:
-- print prefix_lines('running config.status', relobjdir)
-+ print(prefix_lines('running config.status', relobjdir))
- sys.stdout.flush()
- try:
- output += subprocess.check_output([data['shell'], '-c',
-@@ -410,7 +410,7 @@
- pool = Pool(len(subconfigures))
- for relobjdir, returncode, output in \
- pool.imap_unordered(run, subconfigures):
-- print prefix_lines(output, relobjdir)
-+ print(prefix_lines(output, relobjdir))
- sys.stdout.flush()
- ret = max(returncode, ret)
- if ret:
---- mozjs-52.4.0/build/moz.configure/old.configure.old 2018-07-10 10:38:53.530000000 +0000
-+++ mozjs-52.4.0/build/moz.configure/old.configure 2018-07-10 10:41:32.560000000 +0000
-@@ -394,7 +394,7 @@
- def post_old_configure(raw_config):
- for k, v in raw_config['substs']:
- set_old_configure_config(
-- k[1:-1], v[1:-1] if isinstance(v, types.StringTypes) else v)
-+ k[1:-1], v[1:-1] if isinstance(v, str) else v)
-
-- for k, v in dict(raw_config['defines']).iteritems():
-+ for k, v in dict(raw_config['defines']).items():
- set_old_configure_define(k[1:-1], v[1:-1])
---- mozjs-52.4.0/configure.py (original)
-+++ mozjs-52.4.0/configure.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import print_function, unicode_literals
-+
-
- import codecs
- import os
-@@ -45,11 +45,11 @@
-
- sanitized_config = {}
- sanitized_config['substs'] = {
-- k: sanitized_bools(v) for k, v in config.iteritems()
-+ k: sanitized_bools(v) for k, v in config.items()
- if k not in ('DEFINES', 'non_global_defines', 'TOPSRCDIR', 'TOPOBJDIR')
- }
- sanitized_config['defines'] = {
-- k: sanitized_bools(v) for k, v in config['DEFINES'].iteritems()
-+ k: sanitized_bools(v) for k, v in config['DEFINES'].items()
- }
- sanitized_config['non_global_defines'] = config['non_global_defines']
- sanitized_config['topsrcdir'] = config['TOPSRCDIR']
-@@ -71,7 +71,7 @@
- ''') % {'python': config['PYTHON'], 'encoding': encoding})
- # A lot of the build backend code is currently expecting byte
- # strings and breaks in subtle ways with unicode strings. (bug 1296508)
-- for k, v in sanitized_config.iteritems():
-+ for k, v in sanitized_config.items():
- fh.write('%s = encode(%s, encoding)\n' % (k, indented_repr(v)))
- fh.write("__all__ = ['topobjdir', 'topsrcdir', 'defines', "
- "'non_global_defines', 'substs', 'mozconfig']")
-@@ -88,7 +88,7 @@
- # executable permissions.
- os.chmod('config.status', 0o755)
- if config.get('MOZ_BUILD_APP') != 'js' or config.get('JS_STANDALONE'):
-- os.environ[b'WRITE_MOZINFO'] = b'1'
-+ os.environ['WRITE_MOZINFO'] = '1'
- from mozbuild.config_status import config_status
-
- # Some values in sanitized_config also have more complex types, such as
---- mozjs-52.4.0/python/blessings/blessings/__init__.py.old 2017-04-11 02:13:23.000000000 +0000
-+++ mozjs-52.4.0/python/blessings/blessings/__init__.py 2018-07-10 10:56:52.820000000 +0000
-@@ -333,7 +333,7 @@
- 'shadow', 'standout', 'subscript', 'superscript']))
-
-
--class ParametrizingString(unicode):
-+class ParametrizingString(str):
- """A Unicode string which can be called to parametrize it as a terminal capability"""
- def __new__(cls, formatting, normal=None):
- """Instantiate.
-@@ -343,7 +343,7 @@
- "normal" capability.
-
- """
-- new = unicode.__new__(cls, formatting)
-+ new = str.__new__(cls, formatting)
- new._normal = normal
- return new
-
-@@ -375,10 +375,10 @@
- raise
-
-
--class FormattingString(unicode):
-+class FormattingString(str):
- """A Unicode string which can be called upon a piece of text to wrap it in formatting"""
- def __new__(cls, formatting, normal):
-- new = unicode.__new__(cls, formatting)
-+ new = str.__new__(cls, formatting)
- new._normal = normal
- return new
-
-@@ -393,7 +393,7 @@
- return self + text + self._normal
-
-
--class NullCallableString(unicode):
-+class NullCallableString(str):
- """A dummy class to stand in for ``FormattingString`` and ``ParametrizingString``
-
- A callable bytestring that returns an empty Unicode when called with an int
-@@ -402,7 +402,7 @@
-
- """
- def __new__(cls):
-- new = unicode.__new__(cls, u'')
-+ new = str.__new__(cls, u'')
- return new
-
- def __call__(self, arg):
---- mozjs-52.4.0/testing/mozbase/mozfile/mozfile/mozfile.py (original)
-+++ mozjs-52.4.0/testing/mozbase/mozfile/mozfile/mozfile.py (refactored)
-@@ -6,7 +6,7 @@
-
- # We don't import all modules at the top for performance reasons. See Bug 1008943
-
--from __future__ import absolute_import
-+
-
- from contextlib import contextmanager
- import errno
-@@ -55,7 +55,7 @@
- try:
- bundle = zipfile.ZipFile(src)
- except Exception:
-- print "src: %s" % src
-+ print("src: %s" % src)
- raise
-
- namelist = bundle.namelist()
-@@ -161,8 +161,8 @@
-
- retry_count += 1
-
-- print '%s() failed for "%s". Reason: %s (%s). Retrying...' % \
-- (func.__name__, args, e.strerror, e.errno)
-+ print('%s() failed for "%s". Reason: %s (%s). Retrying...' % \
-+ (func.__name__, args, e.strerror, e.errno))
- time.sleep(retry_count * retry_delay)
- else:
- # If no exception has been thrown it should be done
-@@ -420,9 +420,9 @@
- Return True if thing looks like a URL.
- """
-
-- import urlparse
--
-- parsed = urlparse.urlparse(thing)
-+ import urllib.parse
-+
-+ parsed = urllib.parse.urlparse(thing)
- if 'scheme' in parsed:
- return len(parsed.scheme) >= 2
- else:
-@@ -436,7 +436,7 @@
- result of urllib2.urlopen()
- """
-
-- import urllib2
-+ import urllib.request, urllib.error, urllib.parse
-
- # handle file URLs separately due to python stdlib limitations
- if resource.startswith('file://'):
-@@ -446,4 +446,4 @@
- # if no scheme is given, it is a file path
-- return file(resource)
-+ return open(resource)
-
-- return urllib2.urlopen(resource)
-+ return urllib.request.urlopen(resource)
---- mozjs-52.4.0/testing/mozbase/mozinfo/mozinfo/mozinfo.py (original)
-+++ mozjs-52.4.0/testing/mozbase/mozinfo/mozinfo/mozinfo.py (refactored)
-@@ -8,7 +8,7 @@
- # linux) to the information; I certainly wouldn't want anyone parsing this
- # information and having behaviour depend on it
-
--from __future__ import absolute_import
-+
-
- import os
- import platform
-@@ -24,7 +24,7 @@
- class unknown(object):
- """marker class for unknown information"""
-
-- def __nonzero__(self):
-+ def __bool__(self):
- return False
-
- def __str__(self):
-@@ -184,7 +184,7 @@
- to a json file containing the new info.
- """
-
-- if isinstance(new_info, basestring):
-+ if isinstance(new_info, str):
- # lazy import
- import mozfile
- import json
-@@ -246,7 +246,7 @@
- update({})
-
- # exports
--__all__ = info.keys()
-+__all__ = list(info.keys())
- __all__ += ['is' + os_name.title() for os_name in choices['os']]
- __all__ += [
- 'info',
-@@ -284,17 +284,17 @@
-
- # print out choices if requested
- flag = False
-- for key, value in options.__dict__.items():
-+ for key, value in list(options.__dict__.items()):
- if value is True:
-- print '%s choices: %s' % (key, ' '.join([str(choice)
-- for choice in choices[key]]))
-+ print('%s choices: %s' % (key, ' '.join([str(choice)
-+ for choice in choices[key]])))
- flag = True
- if flag:
- return
-
- # otherwise, print out all info
-- for key, value in info.items():
-- print '%s: %s' % (key, value)
-+ for key, value in list(info.items()):
-+ print('%s: %s' % (key, value))
-
- if __name__ == '__main__':
- main()
---- mozjs-52.4.0/testing/mozbase/mozinfo/mozinfo/string_version.py.old 2017-04-11 02:13:06.000000000 +0000
-+++ mozjs-52.4.0/testing/mozbase/mozinfo/mozinfo/string_version.py 2018-07-10 11:10:56.140000000 +0000
-@@ -10,8 +10,10 @@
- A string version that can be compared with comparison operators.
- """
-
-+ def __new__(cls, value):
-+ return str.__new__(cls, value)
-+
- def __init__(self, vstring):
-- str.__init__(self, vstring)
- self.version = LooseVersion(vstring)
-
- def __repr__(self):
---- mozjs-52.4.0/testing/mozbase/manifestparser/manifestparser/manifestparser.py (original)
-+++ mozjs-52.4.0/testing/mozbase/manifestparser/manifestparser/manifestparser.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this file,
- # You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from StringIO import StringIO
-+from io import StringIO
- import json
- import fnmatch
- import os
-@@ -21,7 +21,7 @@
- __all__ = ['ManifestParser', 'TestManifest', 'convert']
-
- relpath = os.path.relpath
--string = (basestring,)
-+string = (str,)
-
-
- # path normalization
-@@ -178,7 +178,7 @@
-
- # otherwise an item
- # apply ancestor defaults, while maintaining current file priority
-- data = dict(self._ancestor_defaults.items() + data.items())
-+ data = dict(list(self._ancestor_defaults.items()) + list(data.items()))
-
- test = data
- test['name'] = section
-@@ -306,19 +306,19 @@
- # make some check functions
- if inverse:
- def has_tags(test):
-- return not tags.intersection(test.keys())
-+ return not tags.intersection(list(test.keys()))
-
- def dict_query(test):
-- for key, value in kwargs.items():
-+ for key, value in list(kwargs.items()):
- if test.get(key) == value:
- return False
- return True
- else:
- def has_tags(test):
-- return tags.issubset(test.keys())
-+ return tags.issubset(list(test.keys()))
-
- def dict_query(test):
-- for key, value in kwargs.items():
-+ for key, value in list(kwargs.items()):
- if test.get(key) != value:
- return False
- return True
-@@ -340,7 +340,7 @@
- """
- if tests is None:
- # Make sure to return all the manifests, even ones without tests.
-- return self.manifest_defaults.keys()
-+ return list(self.manifest_defaults.keys())
-
- manifests = []
- for test in tests:
-@@ -373,8 +373,8 @@
- raise IOError("Strict mode enabled, test paths must exist. "
- "The following test(s) are missing: %s" %
- json.dumps(missing_paths, indent=2))
-- print >> sys.stderr, "Warning: The following test(s) are missing: %s" % \
-- json.dumps(missing_paths, indent=2)
-+ print("Warning: The following test(s) are missing: %s" % \
-+ json.dumps(missing_paths, indent=2), file=sys.stderr)
- return missing
-
- def verifyDirectory(self, directories, pattern=None, extensions=None):
-@@ -385,7 +385,7 @@
- """
-
- files = set([])
-- if isinstance(directories, basestring):
-+ if isinstance(directories, str):
- directories = [directories]
-
- # get files in directories
-@@ -449,12 +449,12 @@
-
- # print the .ini manifest
- if global_tags or global_kwargs:
-- print >> fp, '[DEFAULT]'
-+ print('[DEFAULT]', file=fp)
- for tag in global_tags:
-- print >> fp, '%s =' % tag
-- for key, value in global_kwargs.items():
-- print >> fp, '%s = %s' % (key, value)
-- print >> fp
-+ print('%s =' % tag, file=fp)
-+ for key, value in list(global_kwargs.items()):
-+ print('%s = %s' % (key, value), file=fp)
-+ print(file=fp)
-
- for test in tests:
- test = test.copy() # don't overwrite
-@@ -465,7 +465,7 @@
- if self.rootdir:
- path = relpath(test['path'], self.rootdir)
- path = denormalize_path(path)
-- print >> fp, '[%s]' % path
-+ print('[%s]' % path, file=fp)
-
- # reserved keywords:
- reserved = ['path', 'name', 'here', 'manifest', 'relpath', 'ancestor-manifest']
-@@ -476,8 +476,8 @@
- continue
- if key in global_tags and not test[key]:
- continue
-- print >> fp, '%s = %s' % (key, test[key])
-- print >> fp
-+ print('%s = %s' % (key, test[key]), file=fp)
-+ print(file=fp)
-
- if close:
- # close the created file
-@@ -565,7 +565,7 @@
- message = "Missing test: '%s' does not exist!"
- if self.strict:
- raise IOError(message)
-- print >> sys.stderr, message + " Skipping."
-+ print(message + " Skipping.", file=sys.stderr)
- continue
- destination = os.path.join(rootdir, _relpath)
- shutil.copy(source, destination)
-@@ -578,7 +578,7 @@
- internal function to import directories
- """
-
-- if isinstance(pattern, basestring):
-+ if isinstance(pattern, str):
- patterns = [pattern]
- else:
- patterns = pattern
-@@ -670,9 +670,9 @@
- if (dirnames or filenames) and not (os.path.exists(manifest_path) and overwrite):
- with file(manifest_path, 'w') as manifest:
- for dirname in dirnames:
-- print >> manifest, '[include:%s]' % os.path.join(dirname, filename)
-+ print('[include:%s]' % os.path.join(dirname, filename), file=manifest)
- for _filename in filenames:
-- print >> manifest, '[%s]' % _filename
-+ print('[%s]' % _filename, file=manifest)
-
- # add to list of manifests
- manifest_dict.setdefault(directory, manifest_path)
-@@ -722,8 +722,8 @@
- for filename in filenames]
-
- # write to manifest
-- print >> write, '\n'.join(['[%s]' % denormalize_path(filename)
-- for filename in filenames])
-+ print('\n'.join(['[%s]' % denormalize_path(filename)
-+ for filename in filenames]), file=write)
-
- cls._walk_directories(directories, callback, pattern=pattern, ignore=ignore)
-
---- mozjs-52.4.0/testing/mozbase/manifestparser/manifestparser/cli.py (original)
-+++ mozjs-52.4.0/testing/mozbase/manifestparser/manifestparser/cli.py (refactored)
-@@ -81,7 +81,7 @@
- # parse the arguments
- try:
- kwargs, tags, args = parse_args(args)
-- except ParserError, e:
-+ except ParserError as e:
- self._parser.error(e.message)
-
- # make sure we have some manifests, otherwise it will
-@@ -132,7 +132,7 @@
- manifest = convert(args, pattern=options.pattern, ignore=options.ignore,
- write=options.in_place)
- if manifest:
-- print manifest
-+ print(manifest)
-
-
- class WriteCLI(CLICommand):
-@@ -146,7 +146,7 @@
- # parse the arguments
- try:
- kwargs, tags, args = parse_args(args)
-- except ParserError, e:
-+ except ParserError as e:
- self._parser.error(e.message)
-
- # make sure we have some manifests, otherwise it will
-@@ -175,9 +175,9 @@
- commands[args[0]](self._parser).parser().print_help()
- else:
- self._parser.print_help()
-- print '\nCommands:'
-+ print('\nCommands:')
- for command in sorted(commands):
-- print ' %s : %s' % (command, commands[command].__doc__.strip())
-+ print(' %s : %s' % (command, commands[command].__doc__.strip()))
-
-
- class UpdateCLI(CLICommand):
-@@ -190,7 +190,7 @@
- # parse the arguments
- try:
- kwargs, tags, args = parse_args(args)
-- except ParserError, e:
-+ except ParserError as e:
- self._parser.error(e.message)
-
- # make sure we have some manifests, otherwise it will
---- mozjs-52.4.0/testing/mozbase/manifestparser/manifestparser/expression.py (original)
-+++ mozjs-52.4.0/testing/mozbase/manifestparser/manifestparser/expression.py (refactored)
-@@ -275,7 +275,7 @@
- """
- if not isinstance(self.token, expected):
- raise Exception("Unexpected token!")
-- self.token = self.iter.next()
-+ self.token = next(self.iter)
-
- def expression(self, rbp=0):
- """
-@@ -283,11 +283,11 @@
- right binding power greater than rbp is encountered.
- """
- t = self.token
-- self.token = self.iter.next()
-+ self.token = next(self.iter)
- left = t.nud(self)
- while rbp < self.token.lbp:
- t = self.token
-- self.token = self.iter.next()
-+ self.token = next(self.iter)
- left = t.led(self, left)
- return left
-
-@@ -299,7 +299,7 @@
- """
- try:
- self.iter = self._tokenize()
-- self.token = self.iter.next()
-+ self.token = next(self.iter)
- return self.expression()
- except:
- extype, ex, tb = sys.exc_info()
-@@ -307,7 +307,7 @@
- raise ParseError("could not parse: "
- "%s\nexception: %svariables: %s" % (self.text,
- formatted,
-- self.valuemapping)), None, tb
-+ self.valuemapping)).with_traceback(tb)
-
- __call__ = parse
-
---- mozjs-52.4.0/testing/mozbase/manifestparser/manifestparser/filters.py (original)
-+++ mozjs-52.4.0/testing/mozbase/manifestparser/manifestparser/filters.py (refactored)
-@@ -92,7 +92,7 @@
- def __init__(self, *args, **kwargs):
- self.fmt_args = ', '.join(itertools.chain(
- [str(a) for a in args],
-- ['{}={}'.format(k, v) for k, v in kwargs.iteritems()]))
-+ ['{}={}'.format(k, v) for k, v in kwargs.items()]))
-
- def __eq__(self, other):
- if self.unique:
-@@ -249,7 +249,7 @@
- # be yielded for reporting purposes. Put them all in chunk 1 for
- # simplicity.
- if self.this_chunk == 1:
-- disabled_dirs = [v for k, v in tests_by_dir.iteritems()
-+ disabled_dirs = [v for k, v in tests_by_dir.items()
- if k not in ordered_dirs]
- for disabled_test in itertools.chain(*disabled_dirs):
- yield disabled_test
-@@ -326,7 +326,7 @@
-
- def __init__(self, tags):
- InstanceFilter.__init__(self, tags)
-- if isinstance(tags, basestring):
-+ if isinstance(tags, str):
- tags = [tags]
- self.tags = tags
-
-@@ -349,7 +349,7 @@
-
- def __init__(self, paths):
- InstanceFilter.__init__(self, paths)
-- if isinstance(paths, basestring):
-+ if isinstance(paths, str):
- paths = [paths]
- self.paths = paths
-
---- mozjs-52.4.0/testing/mozbase/manifestparser/manifestparser/ini.py (original)
-+++ mozjs-52.4.0/testing/mozbase/manifestparser/manifestparser/ini.py (refactored)
-@@ -27,7 +27,7 @@
- sections = []
- key = value = None
- section_names = set()
-- if isinstance(fp, basestring):
-- fp = file(fp)
-+ if isinstance(fp, str):
-+ fp = open(fp)
-
- # read the lines
-@@ -131,7 +131,7 @@
- 'support-files': '%s %s',
- }
- final_mapping = global_vars.copy()
-- for field_name, value in local_vars.items():
-+ for field_name, value in list(local_vars.items()):
- if field_name not in field_patterns or field_name not in global_vars:
- final_mapping[field_name] = value
- continue
---- mozjs-52.4.0/python/mozbuild/mozbuild/util.py.old 2018-07-10 11:16:10.690000000 +0000
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/util.py 2018-07-10 23:36:02.250000000 +0000
-@@ -1254,10 +1254,10 @@
- encode(k, encoding): encode(v, encoding)
- for k, v in obj.items()
- }
-- if isinstance(obj, bytes):
-- return obj
- if isinstance(obj, str):
-- return obj.encode(encoding)
-+ return obj
-+ if isinstance(obj, bytes):
-+ return obj.decode(encoding)
- if isinstance(obj, Iterable):
- return [encode(i, encoding) for i in obj]
- return obj
---- mozjs-52.4.0/python/mozbuild/mozbuild/util.py.old 2018-07-10 23:36:33.980000000 +0000
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/util.py 2018-07-10 23:41:51.900000000 +0000
-@@ -1179,6 +1179,9 @@
- POSSIBLE_VALUES = possible_values
- return EnumStringSubclass
-
-+ def __hash__(self):
-+ return hash(str(self))
-+
-
- def _escape_char(c):
- # str.encode('unicode_espace') doesn't escape quotes, presumably because
---- mozjs-52.4.0/python/mozbuild/mozbuild/mozinfo.py.old 2018-07-10 23:42:19.390000000 +0000
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/mozinfo.py 2018-07-11 01:45:57.930000000 +0000
-@@ -155,6 +155,6 @@
- """
- build_conf = build_dict(config, env)
- if isinstance(file, str):
-- file = open(file, 'wb')
-+ file = open(file, 'w')
-
- json.dump(build_conf, file, sort_keys=True, indent=4)
---- mozjs-52.4.0/python/mozbuild/mozbuild/jar.py.old 2018-07-11 01:46:26.540000000 +0000
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/jar.py 2018-07-11 02:02:36.010000000 +0000
-@@ -16,7 +16,7 @@
- import re
- import logging
- from time import localtime
--from MozZipFile import ZipFile
-+from zipfile import ZipFile
- from io import StringIO
- from collections import defaultdict
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/util.py.old 2018-07-11 02:05:38.530000000 +0000
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/util.py 2018-07-11 02:08:21.020000000 +0000
-@@ -987,8 +987,6 @@
- 'got %s, expected %s' % (fname,
- type(value), ftype))
-
-- super(TypedTuple, self).__init__(*args, **kwargs)
--
- TypedTuple._fields = fields
-
- return TypedTuple
---- mozjs-52.4.0/build/moz.configure/init.configure.old 2018-07-11 02:08:50.000000000 +0000
-+++ mozjs-52.4.0/build/moz.configure/init.configure 2018-07-11 04:04:26.600000000 +0000
-@@ -297,7 +297,9 @@
- # There is also a quartet form:
- # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
- # But we can consider the "KERNEL-OPERATING_SYSTEM" as one.
-- cpu, manufacturer, os = triplet.decode('utf-8').split('-', 2)
-+ if isinstance(triplet, bytes):
-+ triplet = triplet.decode('utf-8')
-+ cpu, manufacturer, os = triplet.split('-', 2)
-
- # Autoconf uses config.sub to validate and canonicalize those triplets,
- # but the granularity of its results has never been satisfying to our
---- mozjs-52.4.0/python/mozbuild/mozbuild/frontend/reader.py.old 2018-07-11 04:25:33.980000000 +0000
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/frontend/reader.py 2018-07-11 04:24:50.630000000 +0000
-@@ -441,6 +441,8 @@
- code = func.__code__
- firstlineno = code.co_firstlineno
- lines = sandbox._current_source.splitlines(True)
-+ if len(lines) and isinstance(lines[0], bytes):
-+ lines = [l.decode('utf-8') for l in lines]
- lines = inspect.getblock(lines[firstlineno - 1:])
-
- # The code lines we get out of inspect.getsourcelines look like
---- mozjs-52.4.0/python/mozbuild/mozbuild/frontend/reader.py.old 2018-07-11 04:25:57.090000000 +0000
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/frontend/reader.py 2018-07-11 04:29:46.140000000 +0000
-@@ -460,7 +460,7 @@
- # actually never calls __getitem__ and __setitem__, so we need to
- # modify the AST so that accesses to globals are properly directed
- # to a dict.
-- self._global_name = b'_data' # AST wants str for this, not unicode
-+ self._global_name = '_data' # AST wants str for this, not unicode
- # In case '_data' is a name used for a variable in the function code,
- # prepend more underscores until we find an unused name.
- while (self._global_name in code.co_names or
---- mozjs-52.4.0/python/mozbuild/mozbuild/frontend/context.py.old 2018-07-11 04:30:06.590000000 +0000
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/frontend/context.py 2018-07-11 04:35:38.670000000 +0000
-@@ -384,8 +384,8 @@
-
- def __cmp__(self, other):
- if isinstance(other, Path) and self.srcdir != other.srcdir:
-- return cmp(self.full_path, other.full_path)
-- return cmp(str(self), other)
-+ return self.full_path == other.full_path
-+ return str(self) == other
-
- # __cmp__ is not enough because unicode has __eq__, __ne__, etc. defined
- # and __cmp__ is only used for those when they don't exist.
---- mozjs-52.4.0/mozglue/build/moz.build.old 2018-07-11 04:40:17.930000000 +0000
-+++ mozjs-52.4.0/mozglue/build/moz.build 2018-07-11 04:42:00.830000000 +0000
-@@ -4,20 +4,15 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--# Build mozglue as a shared lib on Windows, OSX and Android.
-+# Build mozglue as a shared lib on Windows and OSX.
- # If this is ever changed, update MOZ_SHARED_MOZGLUE in browser/installer/Makefile.in
--if CONFIG['OS_TARGET'] in ('WINNT', 'Darwin', 'Android') and not CONFIG['JS_STANDALONE']:
-+if CONFIG['OS_TARGET'] in ('WINNT', 'Darwin') and not CONFIG['JS_STANDALONE']:
- SharedLibrary('mozglue')
- else:
- Library('mozglue')
-
- SDK_LIBRARY = True
-
--if CONFIG['OS_TARGET'] == 'Android':
-- SOURCES += [
-- 'BionicGlue.cpp',
-- ]
--
- if CONFIG['MOZ_ASAN']:
- SOURCES += [
- 'AsanOptions.cpp',
---- mozjs-52.4.0/js/src/moz.build.old 2017-04-11 02:13:16.000000000 +0000
-+++ mozjs-52.4.0/js/src/moz.build 2018-07-11 04:43:59.920000000 +0000
-@@ -707,7 +707,7 @@
- CXXFLAGS += ['-wd4577']
- CXXFLAGS += ['-wd4312']
-
--if CONFIG['OS_ARCH'] not in ('WINNT', 'HP-UX'):
-+if CONFIG['OS_ARCH'] != 'WINNT':
- OS_LIBS += [
- 'm',
- ]
-@@ -722,13 +722,13 @@
- 'dl',
- ]
-
--if CONFIG['OS_ARCH'] == 'SunOS':
-- OS_LIBS += [
-- 'posix4',
-- 'dl',
-- 'nsl',
-- 'socket',
-- ]
-+#if CONFIG['OS_ARCH'] == 'SunOS':
-+# OS_LIBS += [
-+# 'posix4',
-+# 'dl',
-+# 'nsl',
-+# 'socket',
-+# ]
-
- OS_LIBS += CONFIG['REALTIME_LIBS']
-
---- mozjs-52.4.0/python/mozbuild/mozbuild/util.py.old 2018-07-11 04:44:24.900000000 +0000
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/util.py 2018-07-11 04:46:47.310000000 +0000
-@@ -267,6 +267,10 @@
- if 'b' in self.mode:
- writemode += 'b'
- with open(self.name, writemode) as file:
-+ if 'b' in self.mode and isinstance(buf, str):
-+ buf = buf.encode('utf-8')
-+ elif 'b' not in self.mode and isinstance(buf, bytes):
-+ buf = buf.decode('utf-8')
- file.write(buf)
-
- if self._capture_diff:
---- mozjs-52.4.0/python/mozbuild/mozbuild/backend/recursivemake.py.old 2018-07-11 04:47:15.020000000 +0000
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/backend/recursivemake.py 2018-07-11 04:53:51.750000000 +0000
-@@ -77,86 +77,86 @@
- from functools import reduce
-
- MOZBUILD_VARIABLES = [
-- b'ANDROID_APK_NAME',
-- b'ANDROID_APK_PACKAGE',
-- b'ANDROID_ASSETS_DIRS',
-- b'ANDROID_EXTRA_PACKAGES',
-- b'ANDROID_EXTRA_RES_DIRS',
-- b'ANDROID_GENERATED_RESFILES',
-- b'ANDROID_RES_DIRS',
-- b'ASFLAGS',
-- b'CMSRCS',
-- b'CMMSRCS',
-- b'CPP_UNIT_TESTS',
-- b'DIRS',
-- b'DIST_INSTALL',
-- b'EXTRA_DSO_LDOPTS',
-- b'EXTRA_JS_MODULES',
-- b'EXTRA_PP_COMPONENTS',
-- b'EXTRA_PP_JS_MODULES',
-- b'FORCE_SHARED_LIB',
-- b'FORCE_STATIC_LIB',
-- b'FINAL_LIBRARY',
-- b'HOST_CFLAGS',
-- b'HOST_CSRCS',
-- b'HOST_CMMSRCS',
-- b'HOST_CXXFLAGS',
-- b'HOST_EXTRA_LIBS',
-- b'HOST_LIBRARY_NAME',
-- b'HOST_PROGRAM',
-- b'HOST_SIMPLE_PROGRAMS',
-- b'IS_COMPONENT',
-- b'JAR_MANIFEST',
-- b'JAVA_JAR_TARGETS',
-- b'LD_VERSION_SCRIPT',
-- b'LIBRARY_NAME',
-- b'LIBS',
-- b'MAKE_FRAMEWORK',
-- b'MODULE',
-- b'NO_DIST_INSTALL',
-- b'NO_EXPAND_LIBS',
-- b'NO_INTERFACES_MANIFEST',
-- b'NO_JS_MANIFEST',
-- b'OS_LIBS',
-- b'PARALLEL_DIRS',
-- b'PREF_JS_EXPORTS',
-- b'PROGRAM',
-- b'PYTHON_UNIT_TESTS',
-- b'RESOURCE_FILES',
-- b'SDK_HEADERS',
-- b'SDK_LIBRARY',
-- b'SHARED_LIBRARY_LIBS',
-- b'SHARED_LIBRARY_NAME',
-- b'SIMPLE_PROGRAMS',
-- b'SONAME',
-- b'STATIC_LIBRARY_NAME',
-- b'TEST_DIRS',
-- b'TOOL_DIRS',
-+ 'ANDROID_APK_NAME',
-+ 'ANDROID_APK_PACKAGE',
-+ 'ANDROID_ASSETS_DIRS',
-+ 'ANDROID_EXTRA_PACKAGES',
-+ 'ANDROID_EXTRA_RES_DIRS',
-+ 'ANDROID_GENERATED_RESFILES',
-+ 'ANDROID_RES_DIRS',
-+ 'ASFLAGS',
-+ 'CMSRCS',
-+ 'CMMSRCS',
-+ 'CPP_UNIT_TESTS',
-+ 'DIRS',
-+ 'DIST_INSTALL',
-+ 'EXTRA_DSO_LDOPTS',
-+ 'EXTRA_JS_MODULES',
-+ 'EXTRA_PP_COMPONENTS',
-+ 'EXTRA_PP_JS_MODULES',
-+ 'FORCE_SHARED_LIB',
-+ 'FORCE_STATIC_LIB',
-+ 'FINAL_LIBRARY',
-+ 'HOST_CFLAGS',
-+ 'HOST_CSRCS',
-+ 'HOST_CMMSRCS',
-+ 'HOST_CXXFLAGS',
-+ 'HOST_EXTRA_LIBS',
-+ 'HOST_LIBRARY_NAME',
-+ 'HOST_PROGRAM',
-+ 'HOST_SIMPLE_PROGRAMS',
-+ 'IS_COMPONENT',
-+ 'JAR_MANIFEST',
-+ 'JAVA_JAR_TARGETS',
-+ 'LD_VERSION_SCRIPT',
-+ 'LIBRARY_NAME',
-+ 'LIBS',
-+ 'MAKE_FRAMEWORK',
-+ 'MODULE',
-+ 'NO_DIST_INSTALL',
-+ 'NO_EXPAND_LIBS',
-+ 'NO_INTERFACES_MANIFEST',
-+ 'NO_JS_MANIFEST',
-+ 'OS_LIBS',
-+ 'PARALLEL_DIRS',
-+ 'PREF_JS_EXPORTS',
-+ 'PROGRAM',
-+ 'PYTHON_UNIT_TESTS',
-+ 'RESOURCE_FILES',
-+ 'SDK_HEADERS',
-+ 'SDK_LIBRARY',
-+ 'SHARED_LIBRARY_LIBS',
-+ 'SHARED_LIBRARY_NAME',
-+ 'SIMPLE_PROGRAMS',
-+ 'SONAME',
-+ 'STATIC_LIBRARY_NAME',
-+ 'TEST_DIRS',
-+ 'TOOL_DIRS',
- # XXX config/Makefile.in specifies this in a make invocation
- #'USE_EXTENSION_MANIFEST',
-- b'XPCSHELL_TESTS',
-- b'XPIDL_MODULE',
-+ 'XPCSHELL_TESTS',
-+ 'XPIDL_MODULE',
- ]
-
- DEPRECATED_VARIABLES = [
-- b'ANDROID_RESFILES',
-- b'EXPORT_LIBRARY',
-- b'EXTRA_LIBS',
-- b'HOST_LIBS',
-- b'LIBXUL_LIBRARY',
-- b'MOCHITEST_A11Y_FILES',
-- b'MOCHITEST_BROWSER_FILES',
-- b'MOCHITEST_BROWSER_FILES_PARTS',
-- b'MOCHITEST_CHROME_FILES',
-- b'MOCHITEST_FILES',
-- b'MOCHITEST_FILES_PARTS',
-- b'MOCHITEST_METRO_FILES',
-- b'MOCHITEST_ROBOCOP_FILES',
-- b'MODULE_OPTIMIZE_FLAGS',
-- b'MOZ_CHROME_FILE_FORMAT',
-- b'SHORT_LIBNAME',
-- b'TESTING_JS_MODULES',
-- b'TESTING_JS_MODULE_DIR',
-+ 'ANDROID_RESFILES',
-+ 'EXPORT_LIBRARY',
-+ 'EXTRA_LIBS',
-+ 'HOST_LIBS',
-+ 'LIBXUL_LIBRARY',
-+ 'MOCHITEST_A11Y_FILES',
-+ 'MOCHITEST_BROWSER_FILES',
-+ 'MOCHITEST_BROWSER_FILES_PARTS',
-+ 'MOCHITEST_CHROME_FILES',
-+ 'MOCHITEST_FILES',
-+ 'MOCHITEST_FILES_PARTS',
-+ 'MOCHITEST_METRO_FILES',
-+ 'MOCHITEST_ROBOCOP_FILES',
-+ 'MODULE_OPTIMIZE_FLAGS',
-+ 'MOZ_CHROME_FILE_FORMAT',
-+ 'SHORT_LIBNAME',
-+ 'TESTING_JS_MODULES',
-+ 'TESTING_JS_MODULE_DIR',
- ]
-
- MOZBUILD_VARIABLES_MESSAGE = 'It should only be defined in moz.build files.'
-@@ -758,7 +758,7 @@
- rule.add_dependencies(['$(CURDIR)/%: %'])
-
- def _check_blacklisted_variables(self, makefile_in, makefile_content):
-- if b'EXTERNALLY_MANAGED_MAKE_FILE' in makefile_content:
-+ if 'EXTERNALLY_MANAGED_MAKE_FILE' in makefile_content:
- # Bypass the variable restrictions for externally managed makefiles.
- return
-
-@@ -765,7 +765,7 @@
- for l in makefile_content.splitlines():
- l = l.strip()
- # Don't check comments
-- if l.startswith(b'#'):
-+ if l.startswith('#'):
- continue
- for x in chain(MOZBUILD_VARIABLES, DEPRECATED_VARIABLES):
- if x not in l:
-@@ -822,11 +822,11 @@
- # Skip every directory but those with a Makefile
- # containing a tools target, or XPI_PKGNAME or
- # INSTALL_EXTENSION_ID.
-- for t in (b'XPI_PKGNAME', b'INSTALL_EXTENSION_ID',
-- b'tools'):
-+ for t in ('XPI_PKGNAME', 'INSTALL_EXTENSION_ID',
-+ 'tools'):
- if t not in content:
- continue
-- if t == b'tools' and not re.search('(?:^|\s)tools.*::', content, re.M):
-+ if t == 'tools' and not re.search('(?:^|\s)tools.*::', content, re.M):
- continue
- if objdir == self.environment.topobjdir:
- continue
-@@ -1422,20 +1422,20 @@
- pp.context.update(extra)
- if not pp.context.get('autoconfmk', ''):
- pp.context['autoconfmk'] = 'autoconf.mk'
-- pp.handleLine(b'# THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT MODIFY BY HAND.\n');
-- pp.handleLine(b'DEPTH := @DEPTH@\n')
-- pp.handleLine(b'topobjdir := @topobjdir@\n')
-- pp.handleLine(b'topsrcdir := @top_srcdir@\n')
-- pp.handleLine(b'srcdir := @srcdir@\n')
-- pp.handleLine(b'VPATH := @srcdir@\n')
-- pp.handleLine(b'relativesrcdir := @relativesrcdir@\n')
-- pp.handleLine(b'include $(DEPTH)/config/@autoconfmk@\n')
-+ pp.handleLine('# THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT MODIFY BY HAND.\n');
-+ pp.handleLine('DEPTH := @DEPTH@\n')
-+ pp.handleLine('topobjdir := @topobjdir@\n')
-+ pp.handleLine('topsrcdir := @top_srcdir@\n')
-+ pp.handleLine('srcdir := @srcdir@\n')
-+ pp.handleLine('VPATH := @srcdir@\n')
-+ pp.handleLine('relativesrcdir := @relativesrcdir@\n')
-+ pp.handleLine('include $(DEPTH)/config/@autoconfmk@\n')
- if not stub:
- pp.do_include(obj.input_path)
- # Empty line to avoid failures when last line in Makefile.in ends
- # with a backslash.
-- pp.handleLine(b'\n')
-- pp.handleLine(b'include $(topsrcdir)/config/recurse.mk\n')
-+ pp.handleLine('\n')
-+ pp.handleLine('include $(topsrcdir)/config/recurse.mk\n')
- if not stub:
- # Adding the Makefile.in here has the desired side-effect
- # that if the Makefile.in disappears, this will force
---- mozjs-52.4.0/python/mozbuild/mozpack/manifests.py.old 2018-07-11 04:54:39.260000000 +0000
-+++ mozjs-52.4.0/python/mozbuild/mozpack/manifests.py 2018-07-11 04:57:31.710000000 +0000
-@@ -115,7 +115,7 @@
- self._source_files = set()
-
- if path or fileobj:
-- with _auto_fileobj(path, fileobj, 'rb') as fh:
-+ with _auto_fileobj(path, fileobj, 'r') as fh:
- self._source_files.add(fh.name)
- self._load_from_fileobj(fh)
-
-@@ -174,7 +174,7 @@
- dest, content = fields[1:]
-
- self.add_content(
-- self._decode_field_entry(content).encode('utf-8'), dest)
-+ self._decode_field_entry(content), dest)
- continue
-
- # Don't fail for non-actionable items, allowing
-@@ -236,7 +236,7 @@
-
- It is an error if both are specified.
- """
-- with _auto_fileobj(path, fileobj, 'wb') as fh:
-+ with _auto_fileobj(path, fileobj, 'w') as fh:
- fh.write('%d\n' % self.CURRENT_VERSION)
-
- for dest in sorted(self._dests):
-@@ -244,8 +244,7 @@
-
- parts = ['%d' % entry[0], dest]
- parts.extend(entry[1:])
-- fh.write('%s\n' % self.FIELD_SEPARATOR.join(
-- p.encode('utf-8') for p in parts))
-+ fh.write('%s\n' % self.FIELD_SEPARATOR.join(parts))
-
- def add_symlink(self, source, dest):
- """Add a symlink to this manifest.
-@@ -391,7 +390,7 @@
- if install_type == self.CONTENT:
- # GeneratedFile expect the buffer interface, which the unicode
- # type doesn't have, so encode to a str.
-- content = self._decode_field_entry(entry[1]).encode('utf-8')
-+ content = self._decode_field_entry(entry[1])
- registry.add(dest, GeneratedFile(content))
- continue
-
---- mozjs-52.4.0/config/MozZipFile.py (original)
-+++ mozjs-52.4.0/config/MozZipFile.py (refactored)
-@@ -18,7 +18,7 @@
- def __init__(self, file, mode="r", compression=zipfile.ZIP_STORED,
- lock = False):
- if lock:
-- assert isinstance(file, basestring)
-+ assert isinstance(file, str)
- self.lockfile = lock_file(file + '.lck')
- else:
- self.lockfile = None
-@@ -46,7 +46,7 @@
- date_time=time.localtime(time.time()))
- zinfo.compress_type = self.compression
- # Add some standard UNIX file access permissions (-rw-r--r--).
-- zinfo.external_attr = (0x81a4 & 0xFFFF) << 16L
-+ zinfo.external_attr = (0x81a4 & 0xFFFF) << 16
- else:
- zinfo = zinfo_or_arcname
-
-@@ -58,7 +58,7 @@
- # as the old, reuse the existing entry.
-
- doSeek = False # store if we need to seek to the eof after overwriting
-- if self.NameToInfo.has_key(zinfo.filename):
-+ if zinfo.filename in self.NameToInfo:
- # Find the last ZipInfo with our name.
- # Last, because that's catching multiple overwrites
- i = len(self.filelist)
-@@ -109,14 +109,14 @@
- # adjust file mode if we originally just wrote, now we rewrite
- self.fp.close()
- self.fp = open(self.filename, 'r+b')
-- all = map(lambda zi: (zi, True), self.filelist) + \
-- map(lambda zi: (zi, False), self._remove)
-+ all = [(zi, True) for zi in self.filelist] + \
-+ [(zi, False) for zi in self._remove]
- all.sort(lambda l, r: cmp(l[0].header_offset, r[0].header_offset))
- # empty _remove for multiple closes
- self._remove = []
-
- lengths = [all[i+1][0].header_offset - all[i][0].header_offset
-- for i in xrange(len(all)-1)]
-+ for i in range(len(all)-1)]
- lengths.append(self.end - all[-1][0].header_offset)
- to_pos = 0
- for (zi, keep), length in zip(all, lengths):
---- mozjs-52.4.0/config/check_spidermonkey_style.py (original)
-+++ mozjs-52.4.0/config/check_spidermonkey_style.py (refactored)
-@@ -35,7 +35,7 @@
- # isolation, but don't try to do any order checking between such blocks.
- #----------------------------------------------------------------------------
-
--from __future__ import print_function
-+
-
- import difflib
- import os
-@@ -270,7 +270,7 @@
- edges[inclname] = set()
-
- # Process all the JS files.
-- for filename in js_names.keys():
-+ for filename in list(js_names.keys()):
- inclname = js_names[filename]
- file_kind = FileKind.get(filename)
- if file_kind == FileKind.C or file_kind == FileKind.CPP or \
---- mozjs-52.4.0/config/expandlibs.py (original)
-+++ mozjs-52.4.0/config/expandlibs.py (refactored)
-@@ -26,7 +26,7 @@
- descriptor contains. And for each of these LIBS, also apply the same
- rules.
- '''
--from __future__ import with_statement
-+
- import sys, os, errno
- import expandlibs_config as conf
-
-@@ -36,7 +36,7 @@
- if dir and not os.path.exists(dir):
- try:
- os.makedirs(dir)
-- except OSError, error:
-+ except OSError as error:
- if error.errno != errno.EEXIST:
- raise
-
-@@ -140,4 +140,4 @@
- return [relativize(arg)]
-
- if __name__ == '__main__':
-- print " ".join(ExpandArgs(sys.argv[1:]))
-+ print(" ".join(ExpandArgs(sys.argv[1:])))
---- mozjs-52.4.0/config/expandlibs_exec.py (original)
-+++ mozjs-52.4.0/config/expandlibs_exec.py (refactored)
-@@ -20,7 +20,7 @@
- relevant linker options to change the order in which the linker puts the
- symbols appear in the resulting binary. Only works for ELF targets.
- '''
--from __future__ import with_statement
-+
- import sys
- import os
- from expandlibs import (
-@@ -304,11 +304,11 @@
- return syms
-
- def print_command(out, args):
-- print >>out, "Executing: " + " ".join(args)
-+ print("Executing: " + " ".join(args), file=out)
- for tmp in [f for f in args.tmp if os.path.isfile(f)]:
-- print >>out, tmp + ":"
-+ print(tmp + ":", file=out)
- with open(tmp) as file:
-- print >>out, "".join([" " + l for l in file.readlines()])
-+ print("".join([" " + l for l in file.readlines()]), file=out)
- out.flush()
-
- def main(args, proc_callback=None):
-@@ -338,8 +338,8 @@
- proc = subprocess.Popen(args, stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
- if proc_callback:
- proc_callback(proc)
-- except Exception, e:
-- print >>sys.stderr, 'error: Launching', args, ':', e
-+ except Exception as e:
-+ print('error: Launching', args, ':', e, file=sys.stderr)
- raise e
- (stdout, stderr) = proc.communicate()
- if proc.returncode and not options.verbose:
---- mozjs-52.4.0/config/expandlibs_gen.py (original)
-+++ mozjs-52.4.0/config/expandlibs_gen.py (refactored)
-@@ -5,7 +5,7 @@
- '''Given a list of object files and library names, prints a library
- descriptor to standard output'''
-
--from __future__ import with_statement
-+
- import sys
- import os
- import expandlibs_config as conf
-@@ -38,4 +38,4 @@
-
- ensureParentDir(options.output)
- with open(options.output, 'w') as outfile:
-- print >>outfile, generate(args)
-+ print(generate(args), file=outfile)
---- mozjs-52.4.0/config/find_OOM_errors.py (original)
-+++ mozjs-52.4.0/config/find_OOM_errors.py (refactored)
-@@ -2,7 +2,7 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
--from __future__ import print_function
-+
-
- usage = """%prog: A test for OOM conditions in the shell.
-
-@@ -95,12 +95,12 @@
- """Keep track of the amount of times individual lines occur, in order to
- prioritize the errors which occur most frequently."""
- counts = {}
-- for string,count in blacklist.items():
-+ for string,count in list(blacklist.items()):
- for line in string.split("\n"):
- counts[line] = counts.get(line, 0) + count
-
- lines = []
-- for k,v in counts.items():
-+ for k,v in list(counts.items()):
- lines.append("{0:6}: {1}".format(v, k))
-
- lines.sort()
---- mozjs-52.4.0/config/link.py (original)
-+++ mozjs-52.4.0/config/link.py (refactored)
-@@ -18,7 +18,7 @@
- time.sleep(0.5)
- idleTime += 0.5
- if idleTime > 20 * 60:
-- print "Still linking, 20 minutes passed..."
-+ print("Still linking, 20 minutes passed...")
- sys.stdout.flush()
- idleTime = 0
-
-@@ -42,6 +42,6 @@
-
- if __name__ == "__main__":
- if len(sys.argv) < 2:
-- print >>sys.stderr, "Usage: link.py <commandline>"
-+ print("Usage: link.py <commandline>", file=sys.stderr)
- sys.exit(1)
- sys.exit(wrap_linker(sys.argv[1:]))
---- mozjs-52.4.0/config/mozunit.py (original)
-+++ mozjs-52.4.0/config/mozunit.py (refactored)
-@@ -140,7 +140,7 @@
- '''
- def __init__(self, files = {}):
- self.files = {}
-- for name, content in files.iteritems():
-+ for name, content in files.items():
- self.files[normcase(os.path.abspath(name))] = content
-
- def __call__(self, name, mode = 'r'):
-@@ -158,19 +158,19 @@
- return file
-
- def __enter__(self):
-- import __builtin__
-- self.open = __builtin__.open
-+ import builtins
-+ self.open = builtins.open
- self._orig_path_exists = os.path.exists
- self._orig_path_isdir = os.path.isdir
- self._orig_path_isfile = os.path.isfile
-- __builtin__.open = self
-+ builtins.open = self
- os.path.exists = self._wrapped_exists
- os.path.isdir = self._wrapped_isdir
- os.path.isfile = self._wrapped_isfile
-
- def __exit__(self, type, value, traceback):
-- import __builtin__
-- __builtin__.open = self.open
-+ import builtins
-+ builtins.open = self.open
- os.path.exists = self._orig_path_exists
- os.path.isdir = self._orig_path_isdir
- os.path.isfile = self._orig_path_isfile
---- mozjs-52.4.0/config/nsinstall.py (original)
-+++ mozjs-52.4.0/config/nsinstall.py (refactored)
-@@ -9,7 +9,7 @@
- # a full build environment set up.
- # The basic limitation is, it doesn't even try to link and ignores
- # all related options.
--from __future__ import print_function
-+
- from optparse import OptionParser
- import mozfile
- import os
-@@ -149,7 +149,7 @@
-
- # nsinstall as a native command is always UTF-8
- def nsinstall(argv):
-- return _nsinstall_internal([unicode(arg, "utf-8") for arg in argv])
-+ return _nsinstall_internal([str(arg, "utf-8") for arg in argv])
-
- if __name__ == '__main__':
- # sys.argv corrupts characters outside the system code page on Windows
-@@ -175,8 +175,8 @@
- else:
- # For consistency, do it on Unix as well
- if sys.stdin.encoding is not None:
-- argv = [unicode(arg, sys.stdin.encoding) for arg in sys.argv]
-+ argv = [str(arg, sys.stdin.encoding) for arg in sys.argv]
- else:
-- argv = [unicode(arg) for arg in sys.argv]
-+ argv = [str(arg) for arg in sys.argv]
-
- sys.exit(_nsinstall_internal(argv[1:]))
---- mozjs-52.4.0/config/printconfigsetting.py (original)
-+++ mozjs-52.4.0/config/printconfigsetting.py (refactored)
-@@ -5,12 +5,12 @@
- import configobj
- import sys
- import re
--from StringIO import StringIO
-+from io import StringIO
-
- try:
- (file, section, key) = sys.argv[1:]
- except ValueError:
-- print "Usage: printconfigsetting.py <file> <section> <setting>"
-+ print("Usage: printconfigsetting.py <file> <section> <setting>")
- sys.exit(1)
-
- with open(file) as fh:
-@@ -21,11 +21,11 @@
- try:
- s = c[section]
- except KeyError:
-- print >>sys.stderr, "Section [%s] not found." % section
-+ print("Section [%s] not found." % section, file=sys.stderr)
- sys.exit(1)
-
- try:
-- print s[key]
-+ print(s[key])
- except KeyError:
-- print >>sys.stderr, "Key %s not found." % key
-+ print("Key %s not found." % key, file=sys.stderr)
- sys.exit(1)
---- mozjs-52.4.0/config/pythonpath.py (original)
-+++ mozjs-52.4.0/config/pythonpath.py (refactored)
-@@ -9,7 +9,7 @@
-
- def main(args):
- def usage():
-- print >>sys.stderr, "pythonpath.py -I directory script.py [args...]"
-+ print("pythonpath.py -I directory script.py [args...]", file=sys.stderr)
- sys.exit(150)
-
- paths = []
-@@ -45,7 +45,7 @@
- frozenglobals['__name__'] = '__main__'
- frozenglobals['__file__'] = script
-
-- execfile(script, frozenglobals)
-+ exec(compile(open(script).read(), script, 'exec'), frozenglobals)
-
- # Freeze scope here ... why this makes things work I have no idea ...
- frozenglobals = globals()
---- mozjs-52.4.0/config/rebuild_check.py (original)
-+++ mozjs-52.4.0/config/rebuild_check.py (refactored)
-@@ -18,7 +18,7 @@
- deps = args[1:]
- t = mtime(target)
- if t < 0:
-- print target
-+ print(target)
- return
-
- newer = []
-@@ -31,13 +31,13 @@
- newer.append(dep)
-
- if newer and removed:
-- print 'Rebuilding %s because %s changed and %s was removed' % (target, ', '.join(newer), ', '.join(removed))
-+ print('Rebuilding %s because %s changed and %s was removed' % (target, ', '.join(newer), ', '.join(removed)))
- elif newer:
-- print 'Rebuilding %s because %s changed' % (target, ', '.join(newer))
-+ print('Rebuilding %s because %s changed' % (target, ', '.join(newer)))
- elif removed:
-- print 'Rebuilding %s because %s was removed' % (target, ', '.join(removed))
-+ print('Rebuilding %s because %s was removed' % (target, ', '.join(removed)))
- else:
-- print 'Rebuilding %s for an unknown reason' % target
-+ print('Rebuilding %s for an unknown reason' % target)
-
- if __name__ == '__main__':
- import sys
---- mozjs-52.4.0/config/tests/unit-expandlibs.py (original)
-+++ mozjs-52.4.0/config/tests/unit-expandlibs.py (refactored)
-@@ -7,7 +7,7 @@
- from shutil import rmtree
- import mozunit
-
--from UserString import UserString
-+from collections import UserString
- # Create a controlled configuration for use by expandlibs
- config_win = {
- 'AR': 'lib',
-@@ -120,8 +120,7 @@
- del dict[name]
- return type.__new__(cls, clsName, bases, dict)
-
--class TestCaseWithTmpDir(unittest.TestCase):
-- __metaclass__ = ReplicateTests
-+class TestCaseWithTmpDir(unittest.TestCase, metaclass=ReplicateTests):
- def init(self):
- self.tmpdir = os.path.abspath(mkdtemp(dir=os.curdir))
-
---- mozjs-52.4.0/config/tests/unit-nsinstall.py (original)
-+++ mozjs-52.4.0/config/tests/unit-nsinstall.py (refactored)
-@@ -28,9 +28,9 @@
- # Unicode strings means non-ASCII children can be deleted properly on
- # Windows
- if sys.stdin.encoding is None:
-- tmpdir = unicode(self.tmpdir)
-+ tmpdir = str(self.tmpdir)
- else:
-- tmpdir = unicode(self.tmpdir, sys.stdin.encoding)
-+ tmpdir = str(self.tmpdir, sys.stdin.encoding)
- rmtree(tmpdir)
-
- # utility methods for tests
-@@ -50,14 +50,14 @@
- "Test nsinstall -D <dir>"
- testdir = os.path.join(self.tmpdir, "test")
- self.assertEqual(nsinstall(["-D", testdir]), 0)
-- self.assert_(os.path.isdir(testdir))
-+ self.assertTrue(os.path.isdir(testdir))
-
- def test_nsinstall_basic(self):
- "Test nsinstall <file> <dir>"
- testfile = self.touch("testfile")
- testdir = self.mkdirs("testdir")
- self.assertEqual(nsinstall([testfile, testdir]), 0)
-- self.assert_(os.path.isfile(os.path.join(testdir, "testfile")))
-+ self.assertTrue(os.path.isfile(os.path.join(testdir, "testfile")))
-
- def test_nsinstall_basic_recursive(self):
- "Test nsinstall <dir> <dest dir>"
-@@ -76,12 +76,12 @@
- '-X', Xdir]), 0)
-
- testdir = os.path.join(destdir, "sourcedir")
-- self.assert_(os.path.isdir(testdir))
-- self.assert_(os.path.isfile(os.path.join(testdir, "testfile")))
-- self.assert_(not os.path.exists(os.path.join(testdir, "Xfile")))
-- self.assert_(os.path.isdir(os.path.join(testdir, "copieddir")))
-- self.assert_(os.path.isfile(os.path.join(testdir, "copieddir", "testfile2")))
-- self.assert_(not os.path.exists(os.path.join(testdir, "Xdir")))
-+ self.assertTrue(os.path.isdir(testdir))
-+ self.assertTrue(os.path.isfile(os.path.join(testdir, "testfile")))
-+ self.assertTrue(not os.path.exists(os.path.join(testdir, "Xfile")))
-+ self.assertTrue(os.path.isdir(os.path.join(testdir, "copieddir")))
-+ self.assertTrue(os.path.isfile(os.path.join(testdir, "copieddir", "testfile2")))
-+ self.assertTrue(not os.path.exists(os.path.join(testdir, "Xdir")))
-
- def test_nsinstall_multiple(self):
- "Test nsinstall <three files> <dest dir>"
-@@ -91,7 +91,7 @@
- testdir = self.mkdirs("testdir")
- self.assertEqual(nsinstall(testfiles + [testdir]), 0)
- for f in testfiles:
-- self.assert_(os.path.isfile(os.path.join(testdir,
-+ self.assertTrue(os.path.isfile(os.path.join(testdir,
- os.path.basename(f))))
-
- def test_nsinstall_dir_exists(self):
-@@ -99,7 +99,7 @@
- srcdir = self.mkdirs("test")
- destdir = self.mkdirs("testdir/test")
- self.assertEqual(nsinstall([srcdir, os.path.dirname(destdir)]), 0)
-- self.assert_(os.path.isdir(destdir))
-+ self.assertTrue(os.path.isdir(destdir))
-
- def test_nsinstall_t(self):
- "Test that nsinstall -t works (preserve timestamp)"
-@@ -110,7 +110,7 @@
- os.utime(testfile, (t, t))
- self.assertEqual(nsinstall(["-t", testfile, testdir]), 0)
- destfile = os.path.join(testdir, "testfile")
-- self.assert_(os.path.isfile(destfile))
-+ self.assertTrue(os.path.isfile(destfile))
- self.assertEqual(os.stat(testfile).st_mtime,
- os.stat(destfile).st_mtime)
-
-@@ -125,7 +125,7 @@
- self.assertEqual(nsinstall(["-m", "{0:04o}"
- .format(mode), testfile, testdir]), 0)
- destfile = os.path.join(testdir, "testfile")
-- self.assert_(os.path.isfile(destfile))
-+ self.assertTrue(os.path.isfile(destfile))
- self.assertEqual(os.stat(testfile).st_mode,
- os.stat(destfile).st_mode)
-
-@@ -136,25 +136,25 @@
- testdir = self.mkdirs("testdir")
- destdir = os.path.join(testdir, "subdir")
- self.assertEqual(nsinstall(["-d", testfile, destdir]), 0)
-- self.assert_(os.path.isdir(os.path.join(destdir, "testfile")))
-+ self.assertTrue(os.path.isdir(os.path.join(destdir, "testfile")))
-
- if RUN_NON_ASCII_TESTS:
- def test_nsinstall_non_ascii(self):
- "Test that nsinstall handles non-ASCII files"
-- filename = u"\u2325\u3452\u2415\u5081"
-+ filename = "\u2325\u3452\u2415\u5081"
- testfile = self.touch(filename)
-- testdir = self.mkdirs(u"\u4241\u1D04\u1414")
-+ testdir = self.mkdirs("\u4241\u1D04\u1414")
- self.assertEqual(nsinstall([testfile.encode("utf-8"),
- testdir.encode("utf-8")]), 0)
-
- destfile = os.path.join(testdir, filename)
-- self.assert_(os.path.isfile(destfile))
-+ self.assertTrue(os.path.isfile(destfile))
-
- def test_nsinstall_non_ascii_subprocess(self):
- "Test that nsinstall as a subprocess handles non-ASCII files"
-- filename = u"\u2325\u3452\u2415\u5081"
-+ filename = "\u2325\u3452\u2415\u5081"
- testfile = self.touch(filename)
-- testdir = self.mkdirs(u"\u4241\u1D04\u1414")
-+ testdir = self.mkdirs("\u4241\u1D04\u1414")
- # We don't use subprocess because it can't handle Unicode on
- # Windows <http://bugs.python.org/issue1759845>. mozprocess calls
- # CreateProcessW directly so it's perfect.
-@@ -166,7 +166,7 @@
-
- self.assertEqual(rv, 0)
- destfile = os.path.join(testdir, filename)
-- self.assert_(os.path.isfile(destfile))
-+ self.assertTrue(os.path.isfile(destfile))
-
- #TODO: implement -R, -l, -L and test them!
-
---- mozjs-52.4.0/config/tests/unitMozZipFile.py (original)
-+++ mozjs-52.4.0/config/tests/unitMozZipFile.py (refactored)
-@@ -11,6 +11,7 @@
- import random
- import copy
- from string import letters
-+from functools import reduce
-
- '''
- Test case infrastructure for MozZipFile.
-@@ -38,7 +39,7 @@
- 'firstdir/oneleaf',
- 'seconddir/twoleaf',
- 'thirddir/with/sub/threeleaf')
--_lengths = map(lambda n: n * 64, [16, 64, 80])
-+_lengths = [n * 64 for n in [16, 64, 80]]
- lengths = 3
- writes = 5
-
-@@ -71,7 +72,7 @@
- def getContent(length):
- 'Get pseudo random content of given length.'
- rv = [None] * length
-- for i in xrange(length):
-+ for i in range(length):
- rv[i] = random.choice(letters)
- return ''.join(rv)
-
-@@ -133,13 +134,13 @@
- def _verifyZip(self):
- zf = zipfile.ZipFile(self.f)
- badEntry = zf.testzip()
-- self.failIf(badEntry, badEntry)
-+ self.assertFalse(badEntry, badEntry)
- zlist = zf.namelist()
- zlist.sort()
-- vlist = self.ref.keys()
-+ vlist = list(self.ref.keys())
- vlist.sort()
- self.assertEqual(zlist, vlist)
-- for leaf, content in self.ref.iteritems():
-+ for leaf, content in self.ref.items():
- zcontent = zf.read(leaf)
- self.assertEqual(content, zcontent)
-
-@@ -158,16 +159,16 @@
- open(self.leaf('stage', leaf), 'w').write(content)
-
- # all leafs in all lengths
--atomics = list(prod(xrange(len(leafs)), xrange(lengths)))
-+atomics = list(prod(range(len(leafs)), range(lengths)))
-
- # populate TestExtensiveStore with testcases
--for w in xrange(writes):
-+for w in range(writes):
- # Don't iterate over all files for the the first n passes,
- # those are redundant as long as w < lengths.
- # There are symmetries in the trailing end, too, but I don't know
- # how to reduce those out right now.
-- nonatomics = [list(prod(range(min(i,len(leafs))), xrange(lengths)))
-- for i in xrange(1, w+1)] + [atomics]
-+ nonatomics = [list(prod(list(range(min(i,len(leafs)))), range(lengths)))
-+ for i in range(1, w+1)] + [atomics]
- for descs in prod(*nonatomics):
- suffix = getid(descs)
- dicts = [dict(leaf=leaf, length=length) for leaf, length in descs]
-@@ -181,9 +182,9 @@
- # and then write all atomics again.
- # This should catch more or less all artifacts generated
- # by the final ordering step when closing the jar.
--files = [list(prod([i], xrange(lengths))) for i in xrange(len(leafs))]
-+files = [list(prod([i], range(lengths))) for i in range(len(leafs))]
- allfiles = reduce(lambda l,r:l+r,
-- [list(prod(*files[:(i+1)])) for i in xrange(len(leafs))])
-+ [list(prod(*files[:(i+1)])) for i in range(len(leafs))])
-
- for first in allfiles:
- testbasename = 'test{0}_'.format(getid(first))
---- mozjs-52.4.0/config/expandlibs_exec.py.old 2018-07-11 05:07:18.280000000 +0000
-+++ mozjs-52.4.0/config/expandlibs_exec.py 2018-07-11 05:08:45.670000000 +0000
-@@ -344,7 +344,7 @@
- (stdout, stderr) = proc.communicate()
- if proc.returncode and not options.verbose:
- print_command(sys.stderr, args)
-- sys.stderr.write(stdout)
-+ sys.stderr.write(stdout.decode('utf-8'))
- sys.stderr.flush()
- if proc.returncode:
- return proc.returncode
---- mozjs-52.4.0/js/src/jsautokw.py.old 2017-04-11 02:13:16.000000000 +0000
-+++ mozjs-52.4.0/js/src/jsautokw.py 2018-07-11 05:11:27.080000000 +0000
-@@ -80,14 +80,14 @@
- per_column = column_dict.setdefault(keyword[column], [])
- per_column.append(item)
-
-- return sorted(column_dict.items(), key=lambda (char, keyword): ord(char))
-+ return sorted(list(column_dict.items()), key=lambda char_keyword: ord(char_keyword[0]))
-
- def generate_letter_switch(opt, unprocessed_columns, keyword_list,
- columns=None):
- assert(len(keyword_list) != 0);
-
- if not columns:
-- columns = range(0, unprocessed_columns)
-+ columns = list(range(0, unprocessed_columns))
-
- if len(keyword_list) == 1:
- index, keyword = keyword_list[0]
-@@ -161,7 +161,7 @@
- per_length = length_dict.setdefault(len(keyword), [])
- per_length.append(item)
-
-- return sorted(length_dict.items(), key=lambda (length, keyword): length)
-+ return sorted(list(length_dict.items()), key=lambda length_keyword: length_keyword[0])
-
- def generate_switch(opt, keyword_list):
- assert(len(keyword_list) != 0);
---- mozjs-52.4.0/js/src/builtin/embedjs.py (original)
-+++ mozjs-52.4.0/js/src/builtin/embedjs.py (refactored)
-@@ -36,7 +36,7 @@
- #
- # It uses the C preprocessor to process its inputs.
-
--from __future__ import with_statement
-+
- import re, sys, os, subprocess
- import shlex
- import which
-@@ -109,7 +109,7 @@
-
- with open(tmpIn, 'wb') as input:
- input.write(source)
-- print(' '.join(cxx + outputArg + args + [tmpIn]))
-+ print((' '.join(cxx + outputArg + args + [tmpIn])))
- result = subprocess.Popen(cxx + outputArg + args + [tmpIn]).wait()
- if (result != 0):
- sys.exit(result);
-@@ -132,7 +132,7 @@
-
- def get_config_defines(buildconfig):
- # Collect defines equivalent to ACDEFINES and add MOZ_DEBUG_DEFINES.
-- env = {key: value for key, value in buildconfig.defines.iteritems()
-+ env = {key: value for key, value in buildconfig.defines.items()
- if key not in buildconfig.non_global_defines}
- for define in buildconfig.substs['MOZ_DEBUG_DEFINES']:
- env[define] = 1
---- mozjs-52.4.0/js/src/builtin/embedjs.py.old 2018-07-11 05:13:28.920000000 +0000
-+++ mozjs-52.4.0/js/src/builtin/embedjs.py 2018-07-11 05:15:15.390000000 +0000
-@@ -107,7 +107,7 @@
- tmpOut = 'self-hosting-preprocessed.pp';
- outputArg = shlex.split(preprocessorOption + tmpOut)
-
-- with open(tmpIn, 'wb') as input:
-+ with open(tmpIn, 'w') as input:
- input.write(source)
- print((' '.join(cxx + outputArg + args + [tmpIn])))
- result = subprocess.Popen(cxx + outputArg + args + [tmpIn]).wait()
---- mozjs-52.4.0/python/mozbuild/mozbuild/preprocessor.py.old 2018-07-11 05:15:42.900000000 +0000
-+++ mozjs-52.4.0/python/mozbuild/mozbuild/preprocessor.py 2018-07-11 05:23:10.870000000 +0000
-@@ -451,7 +451,7 @@
- except OSError as error:
- if error.errno != errno.EEXIST:
- raise
-- return open(path, 'wb')
-+ return open(path, 'w')
-
- p = self.getCommandLineParser()
- options, args = p.parse_args(args=args)
---- mozjs-52.4.0/js/src/builtin/embedjs.py.old 2018-07-11 05:15:42.950000000 +0000
-+++ mozjs-52.4.0/js/src/builtin/embedjs.py 2018-07-11 05:20:14.280000000 +0000
-@@ -53,7 +53,7 @@
- def ToCArray(lines):
- result = []
- for chr in lines:
-- result.append(str(ord(chr)))
-+ result.append(str(chr))
- return ", ".join(result)
-
- HEADER_TEMPLATE = """\
-@@ -87,7 +87,7 @@
-
- js_out.write(processed)
- import zlib
-- compressed = zlib.compress(processed)
-+ compressed = zlib.compress(processed.encode('utf-8'))
- data = ToCArray(compressed)
- c_out.write(HEADER_TEMPLATE % {
- 'sources_type': 'unsigned char',
diff --git a/user/mozo/APKBUILD b/user/mozo/APKBUILD
index 9d24d67cd..09f644c55 100644
--- a/user/mozo/APKBUILD
+++ b/user/mozo/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mozo
-pkgver=1.22.0
+pkgver=1.26.2
pkgrel=0
pkgdesc="Menu editor for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -13,7 +13,6 @@ subpackages="$pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/mozo-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="f3d60e94d9bf5fdd435320856563622f0687cc2844a3d51473bcef5c442f4938a4030533271ead2fd88fb0ce805c16b40d629e5a69fc642e7e670a1afd5745db mozo-1.22.0.tar.xz"
+sha512sums="c4ea00f97f4dd5c9b33b78e1b438ba80a5e23b69d05f6ea59c522a580c1b07c280cddc0591f266c16f39bbe5f3e07ca28cdbd33753162a02584b551a9857b904 mozo-1.26.2.tar.xz"
diff --git a/user/mpg123/APKBUILD b/user/mpg123/APKBUILD
index c9aca7988..14324285a 100644
--- a/user/mpg123/APKBUILD
+++ b/user/mpg123/APKBUILD
@@ -1,19 +1,18 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=mpg123
-pkgver=1.25.10
-pkgrel=1
+pkgver=1.26.3
+pkgrel=0
pkgdesc="Real time MPEG Audio player for Layers 1, 2 and 3"
url="https://www.mpg123.org/"
arch="all"
options="libtool textrels"
license="LGPL-2.1-only"
-subpackages="$pkgname-dev $pkgname-doc"
depends=""
makedepends="alsa-lib-dev libtool linux-headers pulseaudio-dev"
+subpackages="$pkgname-dev $pkgname-doc"
source="https://www.mpg123.org/download/$pkgname-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="a33666ae4aca7e7c1a93a6414d8c525ec19044c54f712d578180147d88e63033f7af2370b9ad22960cc3a0b454f15967b7a831cccc97e034c8855f70cdf1ab09 mpg123-1.25.10.tar.bz2"
+sha512sums="7574331afaecf3f867455df4b7012e90686ad6ac8c5b5e820244204ea7088bf2b02c3e75f53fe71c205f9eca81fef93f1d969c8d0d1ee9775dc05482290f7b2d mpg123-1.26.3.tar.bz2"
diff --git a/user/mplayer/APKBUILD b/user/mplayer/APKBUILD
new file mode 100644
index 000000000..2a9b60afc
--- /dev/null
+++ b/user/mplayer/APKBUILD
@@ -0,0 +1,51 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=mplayer
+pkgver=1.4
+pkgrel=2
+pkgdesc="Open-source media player and ripper"
+url="https://mplayerhq.hu"
+arch="all"
+options="!check" # broken tests
+license="LGPL-2.1+ AND GPL-2.0+ AND Expat AND (BSD-3-Clause OR LGPL-2.1+) AND ISC AND NTP AND (GPL-2.0+ OR LGPL-2.1+) AND BSD-2-Clause"
+depends=""
+makedepends="yasm ncurses-dev openssl-dev freetype-dev fribidi-dev
+
+ alsa-lib-dev pulseaudio-dev
+
+ libxv-dev libxinerama-dev sdl-dev libva-dev libvdpau-dev
+
+ ffmpeg-dev libpng-dev libjpeg-turbo-dev libdvdread-dev libcdio-dev
+ libvorbis-dev libmad-dev speex-dev libtheora-dev libogg-dev faad2-dev
+ x264-dev libdvdnav-dev live-media-dev libdca-dev libcdio-paranoia-dev
+ cdparanoia-dev libbluray-dev a52dec-dev
+ "
+subpackages="$pkgname-doc"
+source="http://mplayerhq.hu/MPlayer/releases/MPlayer-$pkgver.tar.xz
+ ldt.patch
+ "
+builddir="$srcdir/MPlayer-$pkgver"
+
+build() {
+ _extra_conf=""
+ case $CTARGET_ARCH in
+ pmmx) _extra_conf="--disable-sse2 --disable-sse4 --disable-qtx";;
+ esac
+
+ ./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man \
+ --confdir=/etc/mplayer \
+ --disable-ffmpeg_a \
+ --enable-debug=3 \
+ $_extra_conf
+ make
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ rm -r "$pkgdir/etc"
+}
+
+sha512sums="8ef71cad187d8c8f81c837279bd3a421b440c892d3347a667670b21c954007e35cf0d15828f0901f347b9c1b053e8da4bc7f0fb6de34382d1e463074923d7b34 MPlayer-1.4.tar.xz
+07efeaf1294fb3f0a4d8dd9885641ee919c17e93e1ada505c825645e1f04d18f615fbd0318e0cc09231b67881b18847e853b434f5d8164bd3178ab220c4523df ldt.patch"
diff --git a/user/mplayer/ldt.patch b/user/mplayer/ldt.patch
new file mode 100644
index 000000000..6ae5456bc
--- /dev/null
+++ b/user/mplayer/ldt.patch
@@ -0,0 +1,11 @@
+--- MPlayer-1.4/loader/ldt_keeper.c.old 2013-03-23 14:48:22.000000000 +0000
++++ MPlayer-1.4/loader/ldt_keeper.c 2020-07-06 21:22:30.344206427 +0000
+@@ -214,7 +214,7 @@
+ array.limit_in_pages=0;
+ #ifdef __linux__
+ //ret=LDT_Modify(0x1, &array, sizeof(struct modify_ldt_ldt_s));
+- ret=modify_ldt(0x1, &array, sizeof(struct modify_ldt_ldt_s));
++ ret=syscall(__NR_modify_ldt, 0x1, &array, sizeof(struct modify_ldt_ldt_s));
+ if(ret<0)
+ {
+ perror("install_fs");
diff --git a/user/mpv/APKBUILD b/user/mpv/APKBUILD
index 33ca734d6..eff357445 100644
--- a/user/mpv/APKBUILD
+++ b/user/mpv/APKBUILD
@@ -1,20 +1,22 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=mpv
-pkgver=0.29.1
+pkgver=0.34.1
pkgrel=1
pkgdesc="An improved fork of mplayer"
url="https://mpv.io"
arch="all"
-options="!check" # no tests
+options="!check" # No test suite.
license="LGPL-2.1+ AND GPL-2.0+ AND ISC AND BSD-2-Clause AND MIT AND BSD-3-Clause"
+depends=""
makedepends="python3
zlib-dev libarchive-dev py3-docutils uchardet-dev ncurses-dev
alsa-lib-dev pulseaudio-dev
libx11-dev libxext-dev libxinerama-dev libxrandr-dev libxscrnsaver-dev
- mesa-dev libva-dev lcms2-dev libvdpau-dev
+ libglvnd-dev libva-dev lcms2-dev libvdpau-dev mesa-dev wayland-dev
+ wayland-protocols libxkbcommon-dev
ffmpeg-dev libbluray-dev v4l-utils-dev libass-dev libdvdread-dev
libdvdnav-dev libcdio-dev libcdio-paranoia-dev rubberband-dev
@@ -22,8 +24,11 @@ makedepends="python3
subpackages="$pkgname-doc"
source="mpv-$pkgver.tar.gz::https://github.com/mpv-player/mpv/archive/v$pkgver.tar.gz"
+# secfixes:
+# 0.34.1-r0:
+# - CVE-2021-30145
+
build() {
- cd "$builddir"
python3 ./bootstrap.py
python3 ./waf configure \
--prefix=/usr \
@@ -31,18 +36,13 @@ build() {
--destdir="$pkgdir" \
--disable-lua \
--disable-javascript \
- --disable-wayland \
- --disable-gl-wayland \
- --enable-dvdread \
--enable-dvdnav \
- --enable-cdda \
- --enable-tv
+ --enable-cdda
python3 ./waf build
}
package() {
- cd "$builddir"
python3 ./waf install --destdir="$pkgdir"
}
-sha512sums="ec57c9ceaaf2915ee237dd5a1c5ea5d22725d8611e28a9b998e5bb0d8ab5bdf3631d0267fc7b54da31cb1eaa145ef35841e68846bd41c3b9e1024902e92fd086 mpv-0.29.1.tar.gz"
+sha512sums="77ea349d6999f8cce9b5cce4cebd3506a224fc18ab08d22dd16bd34c34d012bb170879b268ddd62db40d116b4cc0b2d9d651b8097f387ed9115c426834cac77e mpv-0.34.1.tar.gz"
diff --git a/user/mtdev/APKBUILD b/user/mtdev/APKBUILD
index 81300c4e2..18a1826f0 100644
--- a/user/mtdev/APKBUILD
+++ b/user/mtdev/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=mtdev
-pkgver=1.1.5
-pkgrel=3
+pkgver=1.1.6
+pkgrel=0
pkgdesc="Multitouch Protocol Translation Library"
url="http://bitmath.org/code/mtdev/"
arch="all"
@@ -11,16 +11,16 @@ depends=""
depends_dev="linux-headers"
makedepends="$depends_dev"
subpackages="$pkgname-dev"
-source="http://bitmath.org/code/mtdev/mtdev-$pkgver.tar.gz"
+source="http://bitmath.org/code/mtdev/mtdev-$pkgver.tar.gz
+ printf-format.patch
+ "
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,12 +33,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -47,4 +45,5 @@ dev() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}
-sha512sums="f59f8cda9b81e17253ff2da93a14b6f8e48361aff890dd5d1bb89ca385d713c212f961ed34fc5b866affd83013530a036736faca071ec9a424091979a12c9208 mtdev-1.1.5.tar.gz"
+sha512sums="e643264baa880abfc31b53f8e8ed54fe1adea4bc110fab57d36be16caba84f970c09fc864244c64b0a76e85f5f021fd086c12f96badbd886da6ccf254ab678e9 mtdev-1.1.6.tar.gz
+5a429ab3f7773e86eafb5beaff466ca6e209a131bfc1fd633e3ba4bfdf92caadf5037a3e84efb512bdc12891b2cc44ebb61b826daf3e66a7735004cc1dcd2713 printf-format.patch"
diff --git a/user/mtdev/printf-format.patch b/user/mtdev/printf-format.patch
new file mode 100644
index 000000000..46d187f64
--- /dev/null
+++ b/user/mtdev/printf-format.patch
@@ -0,0 +1,19 @@
+--- mtdev-1.1.6/test/mtdev-test.c.old 2020-01-26 14:00:32.000000000 +0000
++++ mtdev-1.1.6/test/mtdev-test.c 2020-01-30 02:17:49.009346559 +0000
+@@ -31,6 +31,7 @@
+ #include <unistd.h>
+ #include <fcntl.h>
+ #include <stdint.h>
++#include <inttypes.h>
+
+ #ifndef input_event_sec
+ #define input_event_sec time.tv_sec
+@@ -56,7 +57,7 @@
+ mstime_t evtime = ev->input_event_usec / ms + ev->input_event_sec * ms;
+ if (ev->type == EV_ABS && ev->code == ABS_MT_SLOT)
+ slot = ev->value;
+- fprintf(stderr, "%012llx %02d %01d %04x %d\n",
++ fprintf(stderr, "%012"PRIx64" %02d %01d %04x %d\n",
+ evtime, slot, ev->type, ev->code, ev->value);
+ }
+
diff --git a/user/mtools/APKBUILD b/user/mtools/APKBUILD
new file mode 100644
index 000000000..34b0b8730
--- /dev/null
+++ b/user/mtools/APKBUILD
@@ -0,0 +1,32 @@
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=mtools
+pkgver=4.0.24
+pkgrel=0
+pkgdesc="Utilities to access MS-DOS disks without mounting them"
+url="https://www.gnu.org/software/mtools/"
+arch="all"
+options="!check" # No test suite.
+license="GPL-3.0+"
+depends=""
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://ftp.gnu.org/gnu/mtools/mtools-$pkgver.tar.bz2"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ install -Dm644 -t "$pkgdir"/etc mtools.conf
+ sed -i -e 's/^SAMPLE FILE$/#&/' "$pkgdir"/etc/mtools.conf
+}
+
+sha512sums="b74becc4f696315cfabc016d1746e744b43e366de73bf1bffeec4fbab1e4815967594de8acb4af01f89d36a925f93672efbac205b89540161bd53ab7edebcf04 mtools-4.0.24.tar.bz2"
diff --git a/user/mtr/APKBUILD b/user/mtr/APKBUILD
index 5bb39cb8a..6ffdf8627 100644
--- a/user/mtr/APKBUILD
+++ b/user/mtr/APKBUILD
@@ -1,24 +1,28 @@
# Contributor: John Keith Hohm <john@hohm.net>
# Maintainer:
pkgname=mtr
-pkgver=0.92
-pkgrel=1
+pkgver=0.94
+pkgrel=0
pkgdesc="Full screen ncurses traceroute tool"
url="https://www.bitwizard.nl/mtr/"
arch="all"
options="!check suid" # Tests need networking.
license="GPL-2.0-only AND LGPL-3.0-only AND BSD-3-Clause"
depends="ncurses"
-makedepends="gtk+2.0-dev libcap-dev ncurses-dev"
+makedepends="autoconf automake gtk+2.0-dev libcap-dev ncurses-dev"
subpackages="$pkgname-doc $pkgname-gtk"
-source="https://www.bitwizard.nl/$pkgname/files/$pkgname-$pkgver.tar.gz
+source="$pkgname-$pkgver.tar.gz::https://github.com/traviscross/mtr/archive/v$pkgver.tar.gz
+ handle-program-suffix.patch
mtr-gtk.desktop
"
build() {
- cd "$builddir"
+ msg "Creating build system..."
+ ./bootstrap.sh
+
mkdir -p mtr curses gtk
+ msg "Building curses variant..."
export GIT_DIR="$builddir"
export LIBS="-ltinfo"
cd "$builddir"/curses
@@ -26,32 +30,32 @@ build() {
--without-gtk
make
+ msg "Building GTK+ variant..."
cd "$builddir"/gtk
../configure --prefix=/usr \
--with-gtk \
+ --without-ncurses \
--program-suffix=-gtk
make
unset LIBS GIT_DIR
}
package() {
- cd "$builddir"/curses
- make DESTDIR="$pkgdir" install
- cd "$builddir"/gtk
- make DESTDIR="$pkgdir" install
- install -D -m 644 "$srcdir"/mtr-gtk.desktop \
- "$pkgdir"/usr/share/applications/mtr-gtk.desktop
- install -D -m 644 "$builddir"/img/mtr_icon.xpm \
- "$pkgdir"/usr/share/pixmaps/mtr_icon.xpm
+ make DESTDIR="$pkgdir" -C curses install
}
gtk() {
pkgdesc="Graphical traceroute tool"
- mkdir -p "$subpkgdir"/usr/sbin "$subpkgdir"/usr/share
- mv "$pkgdir"/usr/sbin/mtr*-gtk "$subpkgdir"/usr/sbin/
- mv "$pkgdir"/usr/share/applications "$subpkgdir"/usr/share/
- mv "$pkgdir"/usr/share/pixmaps "$subpkgdir"/usr/share/
+ depends=""
+ make DESTDIR="$subpkgdir" -C "$builddir"/gtk install
+ install -D -m 644 "$srcdir"/mtr-gtk.desktop \
+ "$subpkgdir"/usr/share/applications/mtr-gtk.desktop
+ install -D -m 644 "$builddir"/img/mtr_icon.xpm \
+ "$subpkgdir"/usr/share/pixmaps/mtr_icon.xpm
+ mv "$subpkgdir"/usr/share/man/man8/* "$pkgdir"/../mtr-doc/usr/share/man/man8/
+ rm -r "$subpkgdir"/usr/share/man
}
-sha512sums="d362a418b6c17fd2d08da1ed9e033fa3330e4c0497e1bb0644f6193d23f4e20dd8ee181942c2a20ec0025a8b96c521394a21be5a1d9036f8a0a8c4cddfbe381f mtr-0.92.tar.gz
+sha512sums="0e58bd79562ff80f9308135562ab22aa1f1eea686aefd3aef07bac05e661e34b60fde7c66c96bf4f0919f546376fbd6106ecd8fa92328c24f6f903097496bf11 mtr-0.94.tar.gz
+60c11b27c4d20a75010cadc31d5c1ac94094aaaee0c2f0ad14246b00b0d5301f581ef55eaefa48692d4449a8e7580e67abbb58ea3183fae8f449f7969242f1a9 handle-program-suffix.patch
ecf7543e0125fad6d3f17c30f29f1fc8a3b1e2e477802fe8464e436c3cdfa30d0630b8543cc3f022c475228e94ac8f92981df4d8fb08fe01d004be3d78d6da77 mtr-gtk.desktop"
diff --git a/user/mtr/handle-program-suffix.patch b/user/mtr/handle-program-suffix.patch
new file mode 100644
index 000000000..283966ff4
--- /dev/null
+++ b/user/mtr/handle-program-suffix.patch
@@ -0,0 +1,15 @@
+--- mtr-0.93/Makefile.am.old 2019-08-03 08:31:26.000000000 +0000
++++ mtr-0.93/Makefile.am 2019-08-06 03:44:08.329829268 +0000
+@@ -40,9 +40,10 @@
+ dist_man_MANS = mtr.8 mtr-packet.8
+ PATHFILES += man/mtr.8 man/mtr-packet.8
+
+ install-exec-hook:
+- `setcap cap_net_raw+ep $(DESTDIR)$(sbindir)/mtr-packet` \
+- || chmod u+s $(DESTDIR)$(sbindir)/mtr-packet
++ f="`echo mtr-packet | sed '$(transform)'`"; \
++ `setcap cap_net_raw+ep $(DESTDIR)$(sbindir)/$$f` \
++ || chmod u+s $(DESTDIR)$(sbindir)/$$f
+
+ mtr_SOURCES = ui/mtr.c ui/mtr.h \
+ ui/net.c ui/net.h \
diff --git a/user/mumble/APKBUILD b/user/mumble/APKBUILD
new file mode 100644
index 000000000..38cf422aa
--- /dev/null
+++ b/user/mumble/APKBUILD
@@ -0,0 +1,133 @@
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=mumble
+pkgver=1.3.3
+pkgrel=0
+pkgdesc="Low-latency, high-quality voice chat (client)"
+url="https://www.mumble.info/"
+arch="all"
+license="BSD-3-Clause AND BSD-2-Clause AND MIT AND GPL-2.0+"
+depends="qt5-qtbase-sqlite"
+makedepends="alsa-lib-dev avahi-dev boost-dev cmd:which libcap-dev
+ libsndfile-dev libxi-dev opus-dev protobuf-dev pulseaudio-dev
+ qt5-qtbase-dev qt5-qtsvg-dev qt5-qttools-dev speech-dispatcher-dev
+ speex-dev speexdsp-dev"
+subpackages="$pkgname-doc $pkgname-lang murmur murmur-openrc:openrc:noarch"
+install="murmur.pre-install"
+pkgusers="murmur"
+pkggroups="murmur"
+source="https://github.com/mumble-voip/mumble/releases/download/$pkgver/mumble-$pkgver.tar.gz
+ murmur.initd
+ default-config.patch
+ tests-networking.patch
+ "
+
+_qmake() {
+ # -fsigned-char: https://github.com/mumble-voip/mumble/issues/3845
+ qmake -recursive "$@" \
+ CONFIG+="\
+ bundled-celt \
+ no-bundled-opus \
+ no-bundled-speex \
+ no-embed-qt-translations \
+ no-g15 \
+ no-ice \
+ no-pch \
+ no-rnnoise \
+ no-update \
+ " \
+ DEFINES+="PLUGIN_PATH=/usr/lib/mumble" \
+ QMAKE_CFLAGS_RELEASE="$CFLAGS -fsigned-char" \
+ QMAKE_CXXFLAGS_RELEASE="$CXXFLAGS -fsigned-char"
+}
+
+build() {
+ _qmake main.pro
+ make release
+}
+
+check() {
+ cd src/tests
+
+ export QTEST_FUNCTION_TIMEOUT=600000 #1024
+
+ _qmake tests.pro
+ make check
+}
+
+package() {
+ _ver=${pkgver%_rc*}
+ _maj="${_ver%%.*}"
+ _min="${_ver#*.}"
+ _min="${_min%%.*}"
+
+ # Binaries
+ install -Dm755 release/mumble \
+ "$pkgdir"/usr/bin/mumble
+ install -Dm755 release/murmurd \
+ "$pkgdir"/usr/bin/murmurd
+
+ # Libraries & plugins
+ install -Dm755 release/libmumble.so.$_ver \
+ "$pkgdir"/usr/lib/mumble/libmumble.so.$_ver
+ for lib in libmumble.so libmumble.so.$_maj libmumble.so.$_maj.$_min; do
+ ln -s libmumble.so.$_ver \
+ "$pkgdir"/usr/lib/mumble/$lib
+ done
+ install -Dm755 release/plugins/liblink.so \
+ "$pkgdir"/usr/lib/mumble/liblink.so
+ install -Dm755 release/libcelt* \
+ "$pkgdir"/usr/lib/mumble/
+
+ # Desktop files
+ install -Dm644 scripts/mumble.desktop \
+ "$pkgdir"/usr/share/applications/mumble.desktop
+ install -Dm644 icons/mumble.svg \
+ "$pkgdir"/usr/share/icons/hicolor/scalable/apps/mumble.svg
+
+ # Man pages
+ install -Dm644 -t "$pkgdir"/usr/share/man/man1 \
+ man/mumble.1 \
+ man/murmurd.1
+
+ # Translations
+ install -Dm644 -t "$pkgdir"/usr/share/mumble/translations \
+ src/mumble/*.qm
+
+ # OpenRC
+ install -Dm755 "$srcdir"/murmur.initd \
+ "$pkgdir"/etc/init.d/murmur
+}
+
+lang() {
+ pkgdesc="Languages for package mumble"
+ install_if="$pkgname=$pkgver-r$pkgrel lang"
+
+ cd "$builddir"
+ mkdir -p "$subpkgdir"/usr/share/mumble
+ mv "$pkgdir"/usr/share/mumble/translations \
+ "$subpkgdir"/usr/share/mumble
+}
+
+murmur() {
+ pkgdesc="Low latency, high-quality voice chat (server)"
+
+ cd "$builddir"
+ mkdir -p "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/murmurd \
+ "$subpkgdir"/usr/bin
+ install -o murmur -g murmur -dm750 \
+ "$subpkgdir"/var/lib/murmur
+ install -g murmur -Dm640 scripts/murmur.ini \
+ "$subpkgdir"/etc/murmur.ini
+}
+
+openrc() {
+ default_openrc
+ install_if="openrc murmur=$pkgver-r$pkgrel"
+ pkgdesc="Low latency, high-quality voice chat (server OpenRC init scripts)"
+}
+
+sha512sums="be4c6d4de82a1059bf30d4c7e3c44e41e4bb50dc4a811b7d0def808c52059ff7bcccf65140db940f18cc1bb66d58ea4dab23ba5dcfae3b8b904866751f32edb3 mumble-1.3.3.tar.gz
+59283687466c9ab460017c2191c731e63203baaa6a4a3d30b42075eb8597bafeb2d3494367ab64c785ee37c7b916ea101daf22b68bdfa27844b97e18cb1d71c0 murmur.initd
+68c4c81a55663305d1525eb5d43e0b456e54f007ee327d45bf63572c59282edd88650ede7931644a9762a40c2f7e730b338b4900ae5b4da11b944b3af01c5387 default-config.patch
+e89c20b39fdb24982153b046ffe41688d6a854eee593205535155d55e49b7e534f6cec14325108a7ebd2550a6043479b01139d7bf900840bcf63188625bca304 tests-networking.patch"
diff --git a/user/mumble/default-config.patch b/user/mumble/default-config.patch
new file mode 100644
index 000000000..0c93c2225
--- /dev/null
+++ b/user/mumble/default-config.patch
@@ -0,0 +1,36 @@
+--- mumble-1.3.2/scripts/murmur.ini 2020-07-09 13:06:18.000000000 -0400
++++ mumble-1.3.2/scripts/murmur.ini 2020-09-13 00:05:08.070133921 -0400
+@@ -13,7 +13,7 @@
+
+ ; Path to database. If blank, will search for
+ ; murmur.sqlite in default locations or create it if not found.
+-database=
++database=/var/lib/murmur/murmur.sqlite
+
+ ; Murmur defaults to using SQLite with its default rollback journal.
+ ; In some situations, using SQLite's write-ahead log (WAL) can be
+@@ -93,13 +93,13 @@ icesecretwrite=
+ ; logs to the file 'murmur.log'. If you leave this field blank
+ ; on Unix-like systems, Murmur will force itself into foreground
+ ; mode which logs to the console.
+-;logfile=murmur.log
++logfile=/var/log/murmur.log
+
+ ; If set, Murmur will write its process ID to this file
+ ; when running in daemon mode (when the -fg flag is not
+ ; specified on the command line). Only available on
+ ; Unix-like systems.
+-;pidfile=
++pidfile=/var/run/murmur.pid
+
+ ; The below will be used as defaults for new configured servers.
+ ; If you're just running one server (the default), it's easier to
+@@ -291,7 +291,7 @@ allowping=true
+
+ ; If Murmur is started as root, which user should it switch to?
+ ; This option is ignored if Murmur isn't started with root privileges.
+-;uname=
++uname=murmur
+
+ ; By default, in log files and in the user status window for privileged users,
+ ; Mumble will show IP addresses - in some situations you may find this unwanted
diff --git a/user/mumble/murmur.initd b/user/mumble/murmur.initd
new file mode 100644
index 000000000..dfbc46821
--- /dev/null
+++ b/user/mumble/murmur.initd
@@ -0,0 +1,35 @@
+#!/sbin/openrc-run
+description="Mumble VoIP server"
+command="/usr/bin/murmurd"
+: "${config:=/etc/murmur.ini}"
+: "${command_args:=-ini $config}"
+
+extra_started_commands="reload"
+description_reload="Reload TLS settings"
+
+# As of 1.3.2 murmur will make the PID file *after* it switches to the
+# unprivileged user, which is bad. So make start-stop-daemon handle the
+# PID file and user switching instead.
+command_background=true
+command_args="$command_args -fg"
+
+command_user="$(awk -F= '$1 == "uname" { print $2 }' "$config")"
+: "${command_user:=murmur}"
+
+pidfile="$(awk -F= '$1 == "pidfile" { print $2 }' "$config")"
+: "${pidfile:=/var/run/$RC_SVCNAME.pid}"
+
+# Ignores logfile when -fg is used.
+logfile="$(awk -F= '$1 == "logfile" { print $2 }' "$config")"
+: "${logfile:=/var/log/murmur.log}"
+start_stop_daemon_args="--stdout $logfile --stderr $logfile"
+
+start_pre() {
+ checkpath -m 0640 -f -o "$command_user" "$logfile"
+}
+
+reload() {
+ ebegin "Reloading $RC_SVCNAME TLS settings"
+ start-stop-daemon --signal USR1 --pidfile "$pidfile"
+ eend $?
+}
diff --git a/user/mumble/murmur.pre-install b/user/mumble/murmur.pre-install
new file mode 100644
index 000000000..7baafe4d9
--- /dev/null
+++ b/user/mumble/murmur.pre-install
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+groupadd -r murmur 2>/dev/null
+useradd -c "Mumble daemon" -s /sbin/nologin -g murmur \
+ -m -d /var/lib/murmur -r murmur 2>/dev/null
+
+exit 0
diff --git a/user/mumble/tests-networking.patch b/user/mumble/tests-networking.patch
new file mode 100644
index 000000000..a1decd477
--- /dev/null
+++ b/user/mumble/tests-networking.patch
@@ -0,0 +1,33 @@
+--- mumble-1.3.2/src/tests/TestServerResolver/TestServerResolver.cpp 2020-07-09 17:06:18.000000000 +0000
++++ mumble-1.3.2/src/tests/TestServerResolver/TestServerResolver.cpp 2020-09-20 06:15:32.741670504 +0000
+@@ -33,9 +33,7 @@ class TestServerResolver : public QObjec
+ };
+
+ void TestServerResolver::simpleSrv() {
+-#ifdef USE_NO_SRV
+- return;
+-#endif
++ return; // network access required
+
+ // Qt 5's SRV resolver does not work in Wine.
+ // For more info, see https://bugs.winehq.org/show_bug.cgi?id=44296
+@@ -86,9 +84,7 @@ void TestServerResolver::simpleSrv() {
+ }
+
+ void TestServerResolver::srvCustomPort() {
+-#ifdef USE_NO_SRV
+- return;
+-#endif
++ return; // network access required
+
+ // Qt 5's SRV resolver does not work in Wine.
+ // For more info, see https://bugs.winehq.org/show_bug.cgi?id=44296
+@@ -139,6 +135,8 @@ void TestServerResolver::srvCustomPort()
+
+
+ void TestServerResolver::simpleCNAME() {
++ return; // network access required
++
+ ServerResolver r;
+ QSignalSpy spy(&r, SIGNAL(resolved()));
+
diff --git a/user/muparser/APKBUILD b/user/muparser/APKBUILD
index 728765602..86be53a3a 100644
--- a/user/muparser/APKBUILD
+++ b/user/muparser/APKBUILD
@@ -1,10 +1,10 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=muparser
-pkgver=2.2.6.1
+pkgver=2.3.4
pkgrel=0
pkgdesc="Fast math parser library"
-url="http://beltoforion.de/article.php?a=muparser"
+url="https://beltoforion.de/article.php?a=muparser"
arch="all"
options="!check" # No test suite.
license="MIT"
@@ -14,8 +14,6 @@ subpackages="$pkgname-dev"
source="$pkgname-$pkgver.tar.gz::https://github.com/beltoforion/$pkgname/archive/v$pkgver.tar.gz"
build() {
- cd "$builddir/build"
-
cmake \
-DBUILD_SHARED_LIBS=ON \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
@@ -23,13 +21,12 @@ build() {
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_VERBOSE_MAKEFILE=ON \
$cmake_opts \
- ../
- make
+ -Bbuild
+ make -C build
}
package() {
- cd "$builddir/build"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="01bfc8cc48158c8413ae5e1da2ddbac1c9f0b9075470b1ab75853587d641dd195ebea268e1060a340098fd8015bc5f77d8e9cde5f81cffeade2f157c5f295496 muparser-2.2.6.1.tar.gz"
+sha512sums="5226fd666eaf3ff7e661bbf72e60114d0ceed10491ffa4ed2dd34cd669c6c21c037eff0388402d6b9d60b0a5a27b03ca35153e0c048328abc75dfd1eaf38ceca muparser-2.3.4.tar.gz"
diff --git a/user/musl-obstack/APKBUILD b/user/musl-obstack/APKBUILD
deleted file mode 100644
index a7466fc96..000000000
--- a/user/musl-obstack/APKBUILD
+++ /dev/null
@@ -1,38 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=musl-obstack
-pkgver=1.1
-pkgrel=0
-pkgdesc="Standalone library to implement obstack functionality"
-url=" "
-arch="all"
-license="GPL-2.0+"
-depends=""
-makedepends=""
-subpackages="$pkgname-dev"
-source="musl-obstack-$pkgver.tar.gz::https://github.com/pullmoll/musl-obstack/archive/v$pkgver.tar.gz"
-
-build() {
- cd "$builddir"
- ./bootstrap.sh
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
-}
-
-check() {
- cd "$builddir"
- make check
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
-}
-
-sha512sums="e3a9956133d72a00663cf8d9720e62002142e113e7d67e2338a2bce1bdfac9eefd4290db8add15eabafdf01065f7fe9bb6754faa36b88df819c53d44fa140757 musl-obstack-1.1.tar.gz"
diff --git a/user/mutt/APKBUILD b/user/mutt/APKBUILD
index cb717ec1b..18b8f6dc3 100644
--- a/user/mutt/APKBUILD
+++ b/user/mutt/APKBUILD
@@ -1,22 +1,26 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Contributor: Andrew Manison <amanison@anselsystems.com>
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer: Max Rees <maxcrees@me.com>
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=mutt
-pkgver=1.10.1
+pkgver=2.2.10
pkgrel=0
pkgdesc="Small but very powerful text-mode email client"
-url="http://www.mutt.org"
+url="http://www.mutt.org" # No HTTPS
arch="all"
options="suid !check" # No test suite.
license="GPL-2.0+ AND LGPL-2.0+ AND LGPL-2.1+ AND Public-Domain"
+depends=""
makedepends="cyrus-sasl-dev gdbm-dev gettext-tiny gpgme-dev
libidn-dev ncurses-dev openssl-dev perl"
subpackages="$pkgname-doc $pkgname-lang"
source="https://bitbucket.org/$pkgname/$pkgname/downloads/$pkgname-$pkgver.tar.gz"
+# secfixes:
+# 1.14.4-r0:
+# - CVE-2020-14093
+
build() {
- cd "$builddir"
ISPELL=/usr/bin/hunspell \
./configure \
--build=$CBUILD \
@@ -35,14 +39,12 @@ build() {
--with-curses \
--with-mailpath=/var/spool/mail \
--with-docdir=/usr/share/doc/$pkgname \
- --without-included-gettext \
--with-ssl \
--with-sasl
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
rm "$pkgdir"/etc/*.dist \
@@ -58,4 +60,4 @@ package() {
"$pkgdir"/etc/Muttrc.gpg.dist
}
-sha512sums="13509ff159c65e23614696967b4bd8baf7b8e16c0e85cfd89e2df8201de2dc97e6c4a426f5919f05051dee2b14f847c7203e0b236931d3cdf81dbbb221551726 mutt-1.10.1.tar.gz"
+sha512sums="6db0009163b31425dafe7b6e38374a623f1fd057daf57baaebe18be6d42e5a0ce7087a41bc5e2411f4fbe144497a43682c480754b51108952c7dd16b9294192f mutt-2.2.10.tar.gz"
diff --git a/user/mythes/APKBUILD b/user/mythes/APKBUILD
index 6346e7cb9..5f171b76a 100644
--- a/user/mythes/APKBUILD
+++ b/user/mythes/APKBUILD
@@ -8,13 +8,13 @@ url="http://hunspell.github.io/"
arch="all"
options="!check" # No test suite.
license="Custom"
-subpackages="$pkgname-dev"
+depends=""
depends_dev="perl hunspell-dev"
makedepends="$depends_dev"
-source="http://downloads.sourceforge.net/hunspell/$pkgname-$pkgver.tar.gz"
+subpackages="$pkgname-dev"
+source="https://downloads.sourceforge.net/hunspell/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -30,7 +30,6 @@ build() {
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
install -Dm644 COPYING "$pkgdir/usr/share/licenses/$pkgname/COPYING"
}
diff --git a/user/nano/APKBUILD b/user/nano/APKBUILD
index 45583d16a..559884a27 100644
--- a/user/nano/APKBUILD
+++ b/user/nano/APKBUILD
@@ -1,19 +1,18 @@
# Contributor: Michael Mason <ms13sp@gmail.com>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=nano
-pkgver=3.1
+pkgver=8.0
pkgrel=0
pkgdesc="Enhanced clone of the Pico text editor"
url="https://www.nano-editor.org"
arch="all"
license="GPL-3.0+"
+depends=""
makedepends="file-dev ncurses-dev"
subpackages="$pkgname-doc $pkgname-lang"
-replaces="nano-syntax" # ??? why was this ever split
-source="https://www.nano-editor.org/dist/v${pkgver%.*}/$pkgname-$pkgver.tar.xz"
+source="https://nano-editor.org/dist/v${pkgver%.*}/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +25,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
-
make DESTDIR="$pkgdir" install
install -Dm644 doc/sample.nanorc \
"$pkgdir"/etc/nanorc
@@ -44,4 +40,4 @@ package() {
rm -rf "$pkgdir"/usr/lib/charset.alias
}
-sha512sums="dc50381a129fec32d85982d8129324268e3e27a28c5b958fb7bcfca690646bd0a3b995dc456971355b91952c0ac3ea3e0a873b228010238a76e8dbb0ddaf1143 nano-3.1.tar.xz"
+sha512sums="86c484428b8805768fd580d0f62aa32ce8f588f4beedcdd35a4014506b562928c7a2fa6487aa0d853b4c9c1639a4d186f46b4e96721568ff81191d5098403ca8 nano-8.0.tar.xz"
diff --git a/user/nasm/APKBUILD b/user/nasm/APKBUILD
index 81aa6a996..c38933162 100644
--- a/user/nasm/APKBUILD
+++ b/user/nasm/APKBUILD
@@ -1,17 +1,18 @@
# Maintainer:
pkgname=nasm
-pkgver=2.14.02
+pkgver=2.15.03
pkgrel=0
pkgdesc="80x86 assembler designed for portability and modularity"
url="https://www.nasm.us/"
arch="all"
license="BSD-2-Clause"
+depends=""
checkdepends="perl"
+makedepends=""
subpackages="$pkgname-doc"
source="https://www.nasm.us/pub/nasm/releasebuilds/$pkgver/$pkgname-$pkgver.tar.bz2"
build () {
- cd "$builddir"
export CFLAGS=
export CXXFLAGS=
./configure \
@@ -22,13 +23,11 @@ build () {
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="71e3d44736493b1a56d4230bc2e5519e858aaadde5d89a692f1472fad6755084460e36b42852707f4c862eff75d3f2c232aedcc4e61e9d9ffcc8c9ca6498292b nasm-2.14.02.tar.bz2"
+sha512sums="afb41cf5d0dc12802531b8d977f57dd360cb7cc72f3a4224a610529fdfab95ae6042af04419728895d270cdf4baf25243d17a8d4e04e1843472d052a770a8e83 nasm-2.15.03.tar.bz2"
diff --git a/user/ncftp/APKBUILD b/user/ncftp/APKBUILD
index 1a9b5fce4..d23b85b37 100644
--- a/user/ncftp/APKBUILD
+++ b/user/ncftp/APKBUILD
@@ -1,20 +1,19 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=ncftp
-pkgver=3.2.6
+pkgver=3.2.7
pkgrel=0
pkgdesc="A set of free application programs implementing FTP"
-url="http://www.ncftp.com/"
+url="https://www.ncftp.com/"
arch="all"
options="!check" # No test suite.
license="ClArtistic"
+depends=""
makedepends="ncurses-dev"
-source="ftp://ftp.ncftp.com/ncftp/$pkgname-$pkgver-src.tar.gz"
subpackages="$pkgname-doc $pkgname-bookmarks"
+source="https://www.ncftp.com/downloads/ncftp/$pkgname-$pkgver-src.tar.xz"
-build () {
- cd "$builddir"
-
+build() {
LIBS="-ltinfo" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -22,25 +21,21 @@ build () {
--sysconfdir=/etc \
--mandir=/usr/share/man
- cd "$builddir"/libncftp
- make shared
- cd "$builddir"
+ make -C libncftp shared
make
}
package() {
- cd "$builddir"/libncftp
- make PREFIX="${pkgdir}"/usr soinstall
- cd "$builddir"
+ make PREFIX="${pkgdir}"/usr -C libncftp soinstall
make DESTDIR="$pkgdir" install
install -D doc/LICENSE.txt \
"$pkgdir"/usr/share/licenses/"$pkgname"/LICENSE
}
-bookmarks () {
+bookmarks() {
mkdir -p "$subpkgdir"/usr/bin
mv "$pkgdir"/usr/bin/ncftpbookmarks \
"$subpkgdir"/usr/bin/
}
-sha512sums="a2f8ac555bee8af4be1aa745ce5838beee99cd2253c1fe701b710ec135d7c47e2bf8b22ec928975ec2460919977d45a07fb12185ab58a2e96e3092039ffd3303 ncftp-3.2.6-src.tar.gz"
+sha512sums="b755385a57ac2487625c15985f091d9e1b71073b2593faffe1f2bbba34e691cfff9ffd8448b048f223ea08428e890f30c49a903e4f938393e3c0e4ae03ddab37 ncftp-3.2.7-src.tar.xz"
diff --git a/user/ncompress/APKBUILD b/user/ncompress/APKBUILD
index 0a34a72fe..1e283dd2a 100644
--- a/user/ncompress/APKBUILD
+++ b/user/ncompress/APKBUILD
@@ -1,16 +1,19 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ncompress
-pkgver=4.2.4.5
+pkgver=4.2.4.6
pkgrel=0
pkgdesc="Fast, simple LZW compressor"
url="https://github.com/vapier/ncompress"
arch="all"
options="!check" # No test suite.
license="Public-Domain"
+depends=""
+makedepends=""
subpackages="$pkgname-doc"
source="https://downloads.sourceforge.net/ncompress/ncompress-$pkgver.tar.gz
- fix-9bit-compress.patch"
+ fix-9bit-compress.patch
+ "
build() {
make
@@ -21,5 +24,5 @@ package() {
install -D -m644 "$builddir"/compress.1 "$pkgdir"/usr/share/man/man1/compress.1
}
-sha512sums="487e8d5ca743c3aba19cf69f7ec62bdc0784e43af5737f06d6d4257f2f33899eb3d293ed049f57b3164e344a0fddc077bc73437564977bad8de45816354c8bf3 ncompress-4.2.4.5.tar.gz
+sha512sums="03dd9670c48548d6f7a028dd307758ce7ac61997297c1075d65457ac849e8f2d710bc38fa9eb42e4b2cac163c1b93b7cf7eb197e90cbd689a1274df3de2a3ed8 ncompress-4.2.4.6.tar.gz
b2e897679234f391fa3cf4d5b55a3894424cca632a3b16303b0085e908808bc72b66e6a9df3e56e1a26eac79340c0901f7e6ef2378cc61b710e93194d345c2ea fix-9bit-compress.patch"
diff --git a/user/neon/APKBUILD b/user/neon/APKBUILD
index 8dda94d31..0dcfa20c2 100644
--- a/user/neon/APKBUILD
+++ b/user/neon/APKBUILD
@@ -1,19 +1,18 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=neon
-pkgver=0.30.2
-pkgrel=3
+pkgver=0.32.2
+pkgrel=0
pkgdesc="HTTP and WebDAV client library with a C interface"
-url=" "
+url="https://notroj.github.io/neon/"
arch="all"
-license="GPL LGPL"
+license="LGPL-2.0+"
depends="ca-certificates"
depends_dev="expat-dev openssl-dev zlib-dev"
-makedepends="$depends_dev"
+makedepends="$depends_dev xmlto cmd:which"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://distfiles.adelielinux.org/source/$pkgname-$pkgver.tar.gz"
+source="https://notroj.github.io/$pkgname/$pkgname-$pkgver.tar.gz"
build () {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,15 +26,17 @@ build () {
--enable-threadsafe-ssl=posix \
--with-ca-bundle=/etc/ssl/certs/ca-certificates.crt
make
+ make docs # FIXME: does not happen by default?
}
check() {
- cd "$builddir"
+ sed -i test/ssl.c \
+ -e '/T(dname_readable)/d' \
+ ;
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="634caf87522e0bd2695c6fba39cae2465e403f9fbd8007eb10e4e035c765d24cb8da932c67bfa35c34aa51b90c7bc7037ebebaa1ec43259366d5d07233efc631 neon-0.30.2.tar.gz"
+sha512sums="2580a3c8c3cf4aff2d399f72a721ccfb4e68434ef92da4af8103c126812d779b9fbe5cafbab512c79f4365bbb3d3eac61568748136470e86f7aa7b98b27053c8 neon-0.32.2.tar.gz"
diff --git a/user/net-snmp/APKBUILD b/user/net-snmp/APKBUILD
index 9f083a732..428f0b525 100644
--- a/user/net-snmp/APKBUILD
+++ b/user/net-snmp/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=net-snmp
-pkgver=5.8
+pkgver=5.9
pkgrel=0
pkgdesc="Simple Network Management Protocol"
url="http://www.net-snmp.org/"
@@ -19,25 +19,24 @@ subpackages="$pkgname-doc $pkgname-dev $pkgname-libs $pkgname-agent-libs:alibs
source="https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz
netsnmp-swinst-crash.patch
fix-includes.patch
-
snmpd.initd
snmpd.confd
snmptrapd.confd
"
+#secfixes:
+# 5.9-r0:
+# - CVE-2015-8100
+# - CVE-2019-20892
+
prepare() {
- update_config_sub
default_prepare
- # Allow tmpfs volume size monitoring
- # Ref #932
+ update_config_sub
sed -e 's#"tmpfs",#/* "tmpfs", */#g' -i agent/mibgroup/host/hr_filesys.c
}
build() {
- cd "$builddir"
-
export lt_cv_sys_max_cmd_len=8192
-
LIBS="-ltinfow" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -64,7 +63,6 @@ build() {
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
# remove things we dont want distribute
rm "$pkgdir"/usr/lib/libsnmp* \
@@ -80,7 +78,7 @@ package() {
install -m644 -D "$srcdir"/snmpd.confd "$pkgdir"/etc/conf.d/snmpd
install -m644 -D "$srcdir"/snmptrapd.confd \
"$pkgdir"/etc/conf.d/snmptrapd
- install -m644 -D EXAMPLE.conf "$pkgdir"/etc/snmp/snmpd.conf
+ install -m600 -D EXAMPLE.conf "$pkgdir"/etc/snmp/snmpd.conf
echo "authCommunity log,execute,net public" > "$pkgdir"/etc/snmp/snmptrapd.conf
mkdir -p "$pkgdir"/var/lib/net-snmp
find "$pkgdir" -name perllocal.pod -delete
@@ -138,7 +136,7 @@ tools() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr
}
-sha512sums="27895a583b23f3e14c48562bc32f3ba83513d81aa848e878be9a3650f0458d45950635c937ef627135f80b757b663e71fab9a3bde4fd91889153998ae3468fe7 net-snmp-5.8.tar.gz
+sha512sums="df3273f03065ea5cb7d63398308ada06bcd186e0bc48929e81ba647f392b646ab81ddc241aebcd75408ec29231377375af62edf2835e9c3eb01d0a6856b79434 net-snmp-5.9.tar.gz
4ad92f50b14d5e27ba86256cc532a2dd055502f4d5fbb1700434f9f01f881fd09bb1eadb94e727554e1470f036707558314c64a66d0376b54e71ab31d5e4baa3 netsnmp-swinst-crash.patch
87a552bd2e41684bba6e87fbcf6454a85ee912d7a339411fda24cebddf7661f0856729e076a917920a542cf84b687ffd90a091daa15f2c48f0ff64f3a53c0ddb fix-includes.patch
896ef65a6f420073746470cdbd0de8f356c5b936d35e131754905b3d4323c24dcd3a09e0cc8bd90b12e3402f01e478f927f0e4163cb85cb0cc03db3c2e0491f4 snmpd.initd
diff --git a/user/netifrc/APKBUILD b/user/netifrc/APKBUILD
index da1ef7d28..8b6b18cf5 100644
--- a/user/netifrc/APKBUILD
+++ b/user/netifrc/APKBUILD
@@ -1,29 +1,30 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Contrinutor: Lee Starnes <lee@canned-death.us>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=netifrc
-pkgver=0.6.1
+pkgver=0.7.1
pkgrel=0
pkgdesc="User-friendly network interface management scripts for OpenRC"
url="https://www.gentoo.org/proj/en/base/openrc/"
arch="noarch"
options="!check" # No test suite.
license="BSD-2-Clause"
-depends="eudev openrc"
+depends="eudev openrc perl"
makedepends="eudev-dev pkgconf"
subpackages="$pkgname-doc $pkgname-openrc"
-source="https://gitweb.gentoo.org/proj/$pkgname.git/snapshot/$pkgname-$pkgver.tar.gz"
+source="https://gitweb.gentoo.org/proj/$pkgname.git/snapshot/$pkgname-$pkgver.tar.gz
+ switch-l2tp-gawk-to-perl.patch"
build() {
- cd "$builddir"
make UDEVDIR=/lib/udev LIBEXECDIR=/lib/$pkgname PF="$pkgname-$pkgver"
}
package() {
- cd "$builddir"
make UDEVDIR=/lib/udev LIBEXECDIR=/lib/$pkgname DESTDIR="$pkgdir" install
for doc in README CREDITS TODO; do
install -m 644 "$builddir"/$doc "$pkgdir"/usr/share/doc/$pkgname/
done
}
-sha512sums="798a882f87f153c31b415d77a06a2beca94a958ea982aca20bbc2cf6a7d800aedbd99a577734ea41d6a75807b13d640dd7fa5a51aa5a27055e9c552634ac7bdb netifrc-0.6.1.tar.gz"
+sha512sums="407071f8f58b7788703a62193677673ddd18114b69142894674337410473e620cf3895bb014cff133f719ac1a7191ac3bedfd969c9a11bf2f1c4b04d39683057 netifrc-0.7.1.tar.gz
+21d5755d911446abaed75e19c86e6f090da4db6cbcac45d8473d01c2ce309da3debdbe84e538b559bda1a8c538c9be6d182c67c9253229f8d12e3d7b8257fb90 switch-l2tp-gawk-to-perl.patch"
diff --git a/user/netifrc/switch-l2tp-gawk-to-perl.patch b/user/netifrc/switch-l2tp-gawk-to-perl.patch
new file mode 100644
index 000000000..9c8bc7e0c
--- /dev/null
+++ b/user/netifrc/switch-l2tp-gawk-to-perl.patch
@@ -0,0 +1,92 @@
+diff --git a/net/l2tp.sh b/net/l2tp.sh
+index 9644e32..24b081c 100644
+--- a/net/l2tp.sh
++++ b/net/l2tp.sh
+@@ -37,9 +37,20 @@ _is_l2tp() {
+ ip l2tp show session &>/dev/null
+ [ $? -ne 0 ] && return 1
+
+- eval "$(ip l2tp show session | \
+- awk "match(\$0, /^Session ([0-9]+) in tunnel ([0-9]+)\$/, ret) {sid=ret[1]; tid=ret[2]}
+- match(\$0, /^[ ]*interface name: ${IFACE}\$/) {print \"session_id=\"sid\";tunnel_id=\"tid; exit}")"
++ eval "$(ip l2tp show session | perl -E '
++my $sid;
++my $tid;
++my $IFACE=$ARGV[0];
++while (<STDIN>) {
++ if($_ =~ /^Session ([0-9]+) in tunnel ([0-9+])\$/) {
++ $sid = $1;
++ $tid = $2;
++ }
++ if ($_ =~ /^[ ]*interface name: $IFACE$/) {
++ say "session_id=" . $sid . ";" . "tunnel_id=" . $tid;
++ exit;
++ }
++}' $IFACE)"
+ test -n "$session_id"
+ }
+
+@@ -49,33 +60,36 @@ _is_l2tp() {
+ _l2tp_get_tunnel_info() {
+ local found
+ eval "$(ip l2tp show tunnel | \
+- awk -v id=$2 -v prefix=$1 '
+- match($0, /^Tunnel ([0-9]+), encap (IP|UDP)$/, ret) {
+- if (found == "1") exit;
+- if (ret[1] == id) {
+- print "found=1;"
+- print prefix "tunnel_id=" ret[1] ";"
+- print prefix "encap=" ret[2] ";";
+- found="1"
+- }
+- }
+- match($0, /^[ ]*From ([^ ]+) to ([^ ]+)$/, ret) {
+- if (found == "1") {
+- print prefix "local=" ret[1] ";";
+- print prefix "remote=" ret[2] ";";
+- }
+- }
+- match($0, /^[ ]*Peer tunnel ([0-9]+)$/, ret) {
+- if (found == "1") {
+- print prefix "peer_tunnel_id=" ret[1] ";";
+- }
+- }
+- match($0, /^[ ]*UDP source \/ dest ports: ([0-9]+)\/([0-9]+)$/, ret) {
+- if (found == "1") {
+- print prefix "udp_sport=" ret[1] ";";
+- print prefix "udp_dport=" ret[2] ";";
+- }
+- }')"
++ perl -E '
++my ($prefix, $id) = @ARGV;
++my $found = 0;
++while(<STDIN>) {
++ if ($_ =~ /^Tunnel ([0-9]+), encap (IP|UDP)$/) {
++ if ($found) {
++ exit;
++ }
++ elsif ($1 == $id) {
++ say "found=1;";
++ say $prefix . "tunnel_id=" . $1 . ";";
++ say $prefix . "encap=" . $2 . ";";
++ $found = 1;
++ }
++ }
++ elsif ($found) {
++ if ($_ =~ /^[ ]*From ([^ ]+) to ([^ \n]+)$/) {
++ say $prefix . "local=" . $1 . ";";
++ say $prefix . "remote=" . $2 . ";";
++ }
++ elsif ($_ =~ /^[ ]*Peer tunnel ([0-9]+)$/) {
++ say $prefix . "peer_tunnel_id=" . $1 . ";";
++ }
++ elsif ($_ =~ /^[ ]*UDP source \/ dest ports: ([0-9]+)\/([0-9]+)$/) {
++ say $prefix . "udp_sport=" . $1 . ";";
++ say $prefix . "udp_dport=" . $2 . ";";
++ }
++ }
++}
++ ' "$1" "$2")"
+ test -n "$found"
+ }
+
diff --git a/user/netqmail/0005-CVE-2005-1513.patch b/user/netqmail/0005-CVE-2005-1513.patch
new file mode 100644
index 000000000..3b3876cb3
--- /dev/null
+++ b/user/netqmail/0005-CVE-2005-1513.patch
@@ -0,0 +1,19 @@
+diff -rNU3 netqmail-1.06.old/alloc.c netqmail-1.06/alloc.c
+--- netqmail-1.06.old/alloc.c 1998-06-15 10:53:16.000000000 +0000
++++ netqmail-1.06/alloc.c 2020-05-21 11:33:24.689739728 +0000
+@@ -1,3 +1,4 @@
++#include <limits.h>
+ #include "alloc.h"
+ #include "error.h"
+ extern char *malloc();
+@@ -15,6 +16,10 @@
+ unsigned int n;
+ {
+ char *x;
++ if (n >= (INT_MAX >> 3)) {
++ errno = error_nomem;
++ return 0;
++ }
+ n = ALIGNMENT + n - (n & (ALIGNMENT - 1)); /* XXX: could overflow */
+ if (n <= avail) { avail -= n; return space + avail; }
+ x = malloc(n);
diff --git a/user/netqmail/APKBUILD b/user/netqmail/APKBUILD
index 8329792ad..431d1aa91 100644
--- a/user/netqmail/APKBUILD
+++ b/user/netqmail/APKBUILD
@@ -2,25 +2,39 @@
# Maintainer: Laurent Bercot <ska-adelie@skarnet.org>
pkgname=netqmail
pkgver=1.06
-pkgrel=5
-pkgdesc="The qmail mail transfer agent (community version)"
-url="http://www.qmail.org/$pkgname/"
+pkgrel=12
+pkgdesc="The qmail mail transfer agent (community/sagredo version)"
+# fkn djb's original page lived longer than all the derived products
+url="https://cr.yp.to/qmail.html"
arch="all"
license="Public-Domain"
-provides=sendmail
options="suid !check" # suid programs (qmail-queue); no test suite
-depends="execline s6 s6-networking"
-makedepends="utmps-dev"
+_utmps_version=0.1.2
+_execline_version=2.9.6
+_s6_version=2.13.1
+_s6net_version=2.7.0
+_smtpd_starttls_proxy_version=0.0.1
+depends="execline>=$_execline_version
+ s6>=$_s6_version
+ s6-networking>=$_s6net_version
+ smtpd-starttls-proxy>=$_smtpd_starttls_proxy_version
+ ca-certificates
+ !ssmtp"
+makedepends="groff utmps-dev>=$_utmps_version"
subpackages="$pkgname-doc $pkgname-openrc"
+provider_priority=1
+provides=/usr/sbin/sendmail
install="$pkgname.post-install $pkgname.pre-deinstall"
-source="http://www.qmail.org/$pkgname-$pkgver.tar.gz
+source="https://skarnet.org/archive/$pkgname-$pkgver.tar.gz
0001-DESTDIR.patch
0002-qbiffutmpx-20170820.patch
0003-qmailremote-20170716.patch
0004-notifyfd.patch
+ 0005-CVE-2005-1513.patch
+ rename-mbox-man.patch
qmail.run
smtpd.run
- smtpsd.run
+ smtpd-notls.run
$pkgname.confd
$pkgname.initd"
@@ -28,13 +42,13 @@ makeservicedir()
{
mkdir -p -m 0755 "$1"/log "$1"/env
{
- echo '#!/bin/execlineb -P'
- echo
- echo 's6-setuidgid qmaill'
- echo 's6-envdir ../env'
- echo 'importas -u IP IP'
- echo 'exec -c'
- echo "s6-log t $4"
+ echo '#!/bin/execlineb -P'
+ echo
+ echo 's6-setuidgid qmaill'
+ echo 's6-envdir ../env'
+ echo 'importas -u IP IP'
+ echo 'exec -c'
+ echo "s6-log t $4"
} > "$1"/log/run
echo "$2" > "$1"/notification-fd
cp -f "$3" "$1"/run
@@ -45,27 +59,30 @@ makeservicedir()
mkfifo -m 0600 "$1"/supervise/control
dd if=/dev/zero of="$1"/supervise/status bs=35 count=1
if test $5 -eq 0 ; then
- echo /var/qmail/bin:/usr/bin:/usr/sbin:/bin:/sbin > "$1"/env/PATH
- echo "$2" > "$1"/env/QMAIL_NOTIFY_FD
+ echo /var/qmail/bin:/usr/bin:/usr/sbin:/bin:/sbin > "$1"/env/PATH
+ echo "$2" > "$1"/env/QMAIL_NOTIFY_FD
else
- echo 110 > "$1"/env/UID
- echo 200 > "$1"/env/GID
- echo > "$1"/env/GIDLIST
- if test $5 -eq 6 ; then
- mkdir -p -m 0755 "$1"/data/rules/ip6/::_0
- touch "$1"/data/rules/ip6/::_0/allow
- sed -i -e 's/s6-tcpserver /s6-tcpserver6 /' "$1"/run
- elif test $5 -eq 4 ; then
- mkdir -p -m 0755 "$1"/data/rules/ip4/0.0.0.0_0
- touch "$1"/data/rules/ip4/0.0.0.0_0/allow
- sed -i -e 's/s6-tcpserver /s6-tcpserver4 /' "$1"/run
- fi
+ echo 110 > "$1"/env/UID
+ echo 200 > "$1"/env/GID
+ echo > "$1"/env/GIDLIST
+ if "$6" ; then
+ echo 116 > "$1"/env/TLS_UID
+ echo 200 > "$1"/env/TLS_GID
+ echo /etc/ssl/certs > "$1"/env/CADIR
+ fi
+ mkdir -p -m 0755 "$1"/data/rules/ip6/::_0
+ mkdir -p -m 0755 "$1"/data/rules/ip4/0.0.0.0_0
+ touch "$1"/data/rules/ip6/::_0/allow "$1"/data/rules/ip4/0.0.0.0_0/allow
fi
chmod 0755 "$1"/run "$1"/log/run
}
+prepare() {
+ default_prepare
+ mv "$builddir"/mbox.5 "$builddir"/qmail-mbox.5
+}
+
build() {
- cd "$builddir"
echo "$CC $CFLAGS" > conf-cc
echo "$CC $LDFLAGS -s -static" > conf-ld
echo "$CC $LDFLAGS" > conf-ldi # because fakeroot doesn't work with static programs
@@ -78,7 +95,6 @@ build() {
}
package() {
- cd "$builddir"
mkdir -p -m 0755 "$pkgdir"/var/qmail/services "$pkgdir"/var/log/qmail "$pkgdir"/usr/bin "$pkgdir"/usr/sbin "$pkgdir"/usr/share/doc "$pkgdir"/etc/qmail/services "$pkgdir"/etc/conf.d "$pkgdir"/etc/init.d
chown qmaill:qmaill "$pkgdir"/var/log/qmail
chmod 2700 "$pkgdir"/var/log/qmail
@@ -95,20 +111,20 @@ package() {
mv -f "$pkgdir"/var/qmail/doc "$pkgdir/usr/share/doc/$pkgname-$pkgver"
echo 255 > "$pkgdir"/var/qmail/control/concurrencylocal
echo 255 > "$pkgdir"/var/qmail/control/concurrencyremote
- makeservicedir "$pkgdir"/var/qmail/services/qmail 7 "$srcdir"/qmail.run 'n20 s1000000 /var/log/qmail' 0
- makeservicedir "$pkgdir"/etc/qmail/services/smtpd4-skeleton 3 "$srcdir"/smtpd.run '/var/log/smtpd-$IP' 4
- makeservicedir "$pkgdir"/etc/qmail/services/smtpd6-skeleton 3 "$srcdir"/smtpd.run '/var/log/smtpd-$IP' 6
- makeservicedir "$pkgdir"/etc/qmail/services/smtpsd4-skeleton 3 "$srcdir"/smtpsd.run '/var/log/smtpsd-$IP' 4
- makeservicedir "$pkgdir"/etc/qmail/services/smtpsd6-skeleton 3 "$srcdir"/smtpsd.run '/var/log/smtpsd-$IP' 6
+ makeservicedir "$pkgdir"/var/qmail/services/qmail 7 "$srcdir"/qmail.run 'n20 s1000000 /var/log/qmail' 0 false
+ makeservicedir "$pkgdir"/etc/qmail/services/smtpd-skeleton 3 "$srcdir"/smtpd.run '/var/log/smtpd-$IP' 4 true
+ makeservicedir "$pkgdir"/etc/qmail/services/smtpd-skeleton-notls 3 "$srcdir"/smtpd-notls.run '/var/log/smtpd-$IP' 4 false
}
-sha512sums="de40a6d8fac502bd785010434d99b99f2c0524e10aea3d0f2a0d35c70fce91e991eb1fb8f20a1276eb56d7e73130ea5e2c178f6075d138af47b28d9ca6e6046b netqmail-1.06.tar.gz
+sha512sums="c08828d8e569cd06c3d44e8c48a5e859fbf95ede272f24dfc1bc756c7bf74358fd8d547040eba294e4152257c1ae27d2b217ffb1bef25b5b48a9c37f478d1cbf netqmail-1.06.tar.gz
ad126cad5c0d35351919ad87022fd94b910519d91cf82f38c158f423bbfc1b82455844a791ba0c69d347af1a20a86b095bed571f75365a86ea786cbc9c626487 0001-DESTDIR.patch
b3af9c29e6d46daa2a1b9f677c6f32892d5f8c9b8d5c2bdd6f34b106dd5ad41394c05a5ebe145c6e29b4ced4482f08b2d09e7818fd309123c0d087600500e336 0002-qbiffutmpx-20170820.patch
cbebdc72c7cc5c437531c9277534ae552c6d044a83b36e3f3ce60ab5563c55eb814d6c543cc0997abab73075d1b517cc0929dd65674d468d517b0ca38196e2b4 0003-qmailremote-20170716.patch
b32a8a36c8ab8872abd4f1a117482f064a6d631a6bb2ba75cafe61743bef09f923d26935d9514eec33a7dec5aeb3d0b517d677e55924859d2db5233bc11f9f11 0004-notifyfd.patch
+ac8406c1d16ce2e55e47bc83ca6e095833a54de73cecee222cad3fcececa518386b95a11cb0c9c2dcc6851bae28aa539b11069305aa887a291177bf177ee7b01 0005-CVE-2005-1513.patch
+6ab1751b6ae1b932505a11ebaa4661edf9dd1b64da66a117c6b97c70cee7e429aaf8db98a3cabf25072d23ef39dc82f586a9adfe848635f6f1bdb0b20abed509 rename-mbox-man.patch
954a905bac5e3bc49f180dc0de7f6ee4c4ae8f94dd400ee4b06d3c944f1ff1cfc44bddccb07ae439f2523ad06fcb89023e57d091737da88f836013757794e931 qmail.run
-c0cd244af4d8186305c51b0e93960bdb1ea6ce40f1adf20c4f72419aa7498e35649590919ebd16547a0313676bf9171c9efea2ff8ac3a5c773b18473a972a977 smtpd.run
-719c4ce5ad93cddeafbb734cffeec3fd959d3f374e44e1f34e9a25d638303dd97df41642d3df5c7a069a8db47d1e31c32a16ecd2d04b72860c4e00bbba0c9fcf smtpsd.run
-80ee7e8b3c1ca7cdb00044e6fdd5b9c6a39fd9c882b470f4968c79b974c95e48946a1a3a8b79d9d0ed134ecf09b1185823bf6d022f8b17168e34c18f44ddd16f netqmail.confd
-7600285e70511447b11161a2fc1ca11debc5adcde1d76583d4c715e9710cab876f8be158fd8e034d480588d3d4978c42a9254c29f2db70913105ab009cab6479 netqmail.initd"
+8a887769fc8c5e1abbc56b72c913b435874549c213a10219124c554640eff09ace0a00a894907d633bdf424c7f351064b94e9e12635f725edc700db8cbf25ccd smtpd.run
+721f4ae97ca302e6e1a8a8f685aed8542e408f580b51362006b385a48cbbec185080048bc3ef0953d10af1aaa15fa661dced930f321d594cbbcda8fe19f49abb smtpd-notls.run
+57c30023fa479b88923712c5688469d61f70af3fc7c0d48eb445696f3b8a67e9279814932539e6958660d4ddecdce3dc804fbbde9613dab74001de25f9ef9bad netqmail.confd
+e19719df558655e0e288bd188ed7669bd1505701680e15612ce66867bda93ea7297ecf70172d7f0245351422c94672c795ea175c3aa3b7a876434fa458bdab68 netqmail.initd"
diff --git a/user/netqmail/netqmail.confd b/user/netqmail/netqmail.confd
index b3f331fdb..bd0b333a7 100644
--- a/user/netqmail/netqmail.confd
+++ b/user/netqmail/netqmail.confd
@@ -18,24 +18,17 @@
# :: means all v6 addresses. Remove it if you want to
# list v6 addresses explicitly.
-SMTPD_IPS="0.0.0.0 ::"
+IPS="0.0.0.0 ::"
# TLS configuration.
-# If you want to have SMTP-over-TLS daemons, the
-# SMTPSD_KEYFILE should point to your private key, and the
-# SMTPSD_CERTFILE should point to your certificate.
-# Leave them empty for no SMTP-over-TLS.
+# If you want to enable STARTTLS, the KEYFILE variable
+# should point to your private key, and the CERTFILE variable
+# should point to your certificate.
+# Leave them empty if you don't want STARTTLS support.
-SMTPSD_KEYFILE=
-SMTPSD_CERTFILE=
-
-
-# List the IP addresses (v4 or v6) where a SMTP-over-TLS daemon
-# should be listening. This will only be used if SMTPSD_KEYFILE
-# and SMTPSD_CERTFILE are defined.
-
-SMTPSD_IPS="0.0.0.0 ::"
+KEYFILE=
+CERTFILE=
# Relaying configuration.
diff --git a/user/netqmail/netqmail.initd b/user/netqmail/netqmail.initd
index dae9c4d55..1c7552df3 100644
--- a/user/netqmail/netqmail.initd
+++ b/user/netqmail/netqmail.initd
@@ -12,39 +12,34 @@ makesmtpd()
{
set -e
ip="$1"
- usetls="$2"
- if "$usetls" ; then
- s="s"
- port=25
- else
- s=
- port=465
- fi
- if s6-tcpserver6-socketbinder -dBb0 -- "$ip" "$port" true 2>/dev/null ; then
+ ext="$2"
+
+ if echo "$ip" | grep -qF : ; then
ipv=6
relayfor="$smtprelay6"
- elif s6-tcpserver4-socketbinder -dBb0 -- "$ip" "$port" true 2>/dev/null ; then
+ elif echo "$ip" | grep -qF . ; then
ipv=4
relayfor="$smtprelay4"
else
return 1
fi
+ if ! s6-tcpserver-socketbinder -dBb0 -- "$ip" 25 true 2>/dev/null ; then
+ return 1
+ fi
- service="smtp${s}d-$ip"
+ service="smtpd-$ip"
sdir=/run/services/"$service"
- logdir=/var/log/"smtp${s}d-$ip"
+ logdir=/var/log/"smtpd-$ip"
mkdir -p -m 0755 "$logdir"
chown qmaill:qmaill "$logdir"
chmod 2700 "$logdir"
rm -rf "$sdir"
- cp -a /etc/qmail/services/smtp"${s}"d"${ipv}"-skeleton "$sdir"
+ cp -a /etc/qmail/services/smtpd-skeleton"$ext" "$sdir"
echo "$ip" > "$sdir"/env/IP
- if "$usetls" ; then
- echo "$SMTPSD_KEYFILE" > "$sdir"/env/KEYFILE
- echo "$SMTPSD_CERTFILE" > "$sdir"/env/CERTFILE
- fi
+ echo "$KEYFILE" > "$sdir"/env/KEYFILE
+ echo "$CERTFILE" > "$sdir"/env/CERTFILE
for j in $relayfor ; do
mkdir -p -m 0755 "$sdir/data/rules/ip${ipv}/$j/env"
@@ -59,23 +54,15 @@ stop()
{
set -e
. /etc/conf.d/netqmail
- ebegin "Stopping SMTP and SMTPS listeners"
+ ebegin "Stopping SMTP listeners"
dirs=""
logs=""
- for i in ${SMTPD_IPS} ; do
+ for i in ${IPS} ; do
rm -f "/run/service/smtpd-$i"
s6-svc -d "/run/services/smtpd-$i"
dirs="$dirs /run/services/smtpd-$i"
logs="$logs /run/services/smtpd-$i/log"
done
- if test -r "$SMTPSD_KEYFILE" && test -r "$SMTPSD_CERTFILE" ; then
- for i in ${SMTPSD_IPS} ; do
- rm -f "/run/service/smtpsd-$i"
- s6-svc -d "/run/services/smtpsd-$i"
- dirs="$dirs /run/services/smtpsd-$i"
- logs="$logs /run/services/smtpsd-$i/log"
- done
- fi
s6-svwait -D $dirs
eend $?
@@ -99,6 +86,11 @@ start()
{
set -e
. /etc/conf.d/netqmail
+ if test -r "$KEYFILE" && test -r "$CERTFILE" ; then
+ ext=""
+ else
+ ext="-notls"
+ fi
ebegin "Parsing the relay subnets"
smtprelay4=
@@ -122,31 +114,19 @@ start()
s6-svwait -U /var/qmail/services/qmail
eend $?
- for i in ${SMTPD_IPS} ; do
+ mkdir -p /run/services
+ for i in ${IPS} ; do
ebegin "Creating a service directory for a SMTP listener on $i"
- makesmtpd "$i" false
+ makesmtpd "$i" "$ext"
eend $?
done
- if test -r "$SMTPSD_KEYFILE" && test -r "$SMTPSD_CERTFILE" ; then
- for i in ${SMTPSD_IPS} ; do
- ebegin "Creating a service directory for a SMTPS listener on $i"
- makesmtpd "$i" true
- eend $?
- done
- fi
dirs=""
- ebegin "Starting SMTP/S listeners"
- for i in ${SMTPD_IPS} ; do
+ ebegin "Starting SMTP listeners"
+ for i in ${IPS} ; do
ln -nsf "../services/smtpd-$i" "/run/service/smtpd-$i"
dirs="$dirs /run/service/smtpd-$i"
done
- if test -r "$SMTPSD_KEYFILE" && test -r "$SMTPSD_CERTFILE" ; then
- for i in ${SMTPSD_IPS} ; do
- ln -nsf "../services/smtpsd-$i" "/run/service/smtpsd-$i"
- dirs="$dirs /run/service/smtpsd-$i"
- done
- fi
s6-svscanctl -aN /run/service
s6-svwait -U $dirs
eend $?
diff --git a/user/netqmail/rename-mbox-man.patch b/user/netqmail/rename-mbox-man.patch
new file mode 100644
index 000000000..753417352
--- /dev/null
+++ b/user/netqmail/rename-mbox-man.patch
@@ -0,0 +1,162 @@
+The mbox.5 file is provided by both mutt and qmail. The version provided
+by mutt is a generic description of the mbox format. The qmail version
+has specific information about qmail's mbox format. Hence, we rename it
+to qmail-mbox.5.
+
+diff -Nau netqmail-1.06-orig/FILES netqmail-1.06/FILES
+--- netqmail-1.06-orig/FILES 2007-11-30 14:22:54.000000000 -0600
++++ netqmail-1.06/FILES 2023-12-01 20:05:06.120121122 -0600
+@@ -67,7 +67,6 @@
+ maildirmake.1
+ maildirwatch.1
+ mailsubj.1
+-mbox.5
+ preline.1
+ qbiff.1
+ qmail-clean.8
+@@ -80,6 +79,7 @@
+ qmail-local.8
+ qmail-log.5
+ qmail-lspawn.8
++qmail-mbox.5
+ qmail-newmrh.9
+ qmail-newu.9
+ qmail-pop3d.8
+diff -Nau netqmail-1.06-orig/Makefile netqmail-1.06/Makefile
+--- netqmail-1.06-orig/Makefile 2023-12-01 20:02:18.368178573 -0600
++++ netqmail-1.06/Makefile 2023-12-01 20:06:17.272462017 -0600
+@@ -952,12 +952,12 @@
+ preline.0 condredirect.0 bouncesaying.0 except.0 maildirmake.0 \
+ maildir2mbox.0 maildirwatch.0 qmail.0 qmail-limits.0 qmail-log.0 \
+ qmail-control.0 qmail-header.0 qmail-users.0 dot-qmail.0 \
+-qmail-command.0 tcp-environ.0 maildir.0 mbox.0 addresses.0 \
++qmail-command.0 tcp-environ.0 maildir.0 qmail-mbox.0 addresses.0 \
+ envelopes.0 forgeries.0
+
+-mbox.0: \
+-mbox.5
+- nroff -man mbox.5 > mbox.0
++qmail-mbox.0: \
++qmail-mbox.5
++ nroff -man qmail-mbox.5 > qmail-mbox.0
+
+ myctime.o: \
+ compile myctime.c datetime.h fmt.h myctime.h
+@@ -1783,7 +1783,7 @@
+ auto_patrn.h conf-users conf-groups auto_uids.h auto_usera.h extra.h \
+ addresses.5 except.1 bouncesaying.1 condredirect.1 dot-qmail.9 \
+ envelopes.5 forgeries.7 forward.1 maildir2mbox.1 maildirmake.1 \
+-maildirwatch.1 mailsubj.1 mbox.5 preline.1 qbiff.1 qmail-clean.8 \
++maildirwatch.1 mailsubj.1 qmail-mbox.5 preline.1 qbiff.1 qmail-clean.8 \
+ qmail-command.8 qmail-control.9 qmail-getpw.9 qmail-header.5 \
+ qmail-inject.8 qmail-limits.9 qmail-local.8 qmail-log.5 \
+ qmail-lspawn.8 qmail-newmrh.9 qmail-newu.9 qmail-pop3d.8 \
+diff -Nau netqmail-1.06-orig/Makefile.orig netqmail-1.06/Makefile.orig
+--- netqmail-1.06-orig/Makefile.orig 2023-12-01 20:02:18.368178573 -0600
++++ netqmail-1.06/Makefile.orig 2023-12-01 20:06:58.588015563 -0600
+@@ -952,12 +952,12 @@
+ preline.0 condredirect.0 bouncesaying.0 except.0 maildirmake.0 \
+ maildir2mbox.0 maildirwatch.0 qmail.0 qmail-limits.0 qmail-log.0 \
+ qmail-control.0 qmail-header.0 qmail-users.0 dot-qmail.0 \
+-qmail-command.0 tcp-environ.0 maildir.0 mbox.0 addresses.0 \
++qmail-command.0 tcp-environ.0 maildir.0 qmail-mbox.0 addresses.0 \
+ envelopes.0 forgeries.0
+
+-mbox.0: \
+-mbox.5
+- nroff -man mbox.5 > mbox.0
++qmail-mbox.0: \
++qmail-mbox.5
++ nroff -man qmail-mbox.5 > qmail-mbox.0
+
+ myctime.o: \
+ compile myctime.c datetime.h fmt.h myctime.h
+@@ -1783,7 +1783,7 @@
+ auto_patrn.h conf-users conf-groups auto_uids.h auto_usera.h extra.h \
+ addresses.5 except.1 bouncesaying.1 condredirect.1 dot-qmail.9 \
+ envelopes.5 forgeries.7 forward.1 maildir2mbox.1 maildirmake.1 \
+-maildirwatch.1 mailsubj.1 mbox.5 preline.1 qbiff.1 qmail-clean.8 \
++maildirwatch.1 mailsubj.1 qmail-mbox.5 preline.1 qbiff.1 qmail-clean.8 \
+ qmail-command.8 qmail-control.9 qmail-getpw.9 qmail-header.5 \
+ qmail-inject.8 qmail-limits.9 qmail-local.8 qmail-log.5 \
+ qmail-lspawn.8 qmail-newmrh.9 qmail-newu.9 qmail-pop3d.8 \
+diff -Nau netqmail-1.06-orig/dot-qmail.9 netqmail-1.06/dot-qmail.9
+--- netqmail-1.06-orig/dot-qmail.9 2007-11-30 14:52:30.000000000 -0600
++++ netqmail-1.06/dot-qmail.9 2023-12-01 20:04:47.292147838 -0600
+@@ -115,7 +115,7 @@
+ stores the mail message in
+ .I mbox
+ format, as described in
+-.BR mbox(5) .
++.BR qmail-mbox(5) .
+
+ .B WARNING:
+ On many systems,
+@@ -386,7 +386,7 @@
+ .SH "SEE ALSO"
+ envelopes(5),
+ maildir(5),
+-mbox(5),
++qmail-mbox(5),
+ qmail-users(5),
+ qmail-local(8),
+ qmail-command(8),
+diff -Nau netqmail-1.06-orig/hier.c netqmail-1.06/hier.c
+--- netqmail-1.06-orig/hier.c 2023-12-01 20:02:18.368178573 -0600
++++ netqmail-1.06/hier.c 2023-12-01 20:04:22.854778368 -0600
+@@ -166,8 +166,8 @@
+ c(base_qmail,"man/cat5","envelopes.0",auto_uido,auto_gidq,0644);
+ c(base_qmail,"man/man5","maildir.5",auto_uido,auto_gidq,0644);
+ c(base_qmail,"man/cat5","maildir.0",auto_uido,auto_gidq,0644);
+- c(base_qmail,"man/man5","mbox.5",auto_uido,auto_gidq,0644);
+- c(base_qmail,"man/cat5","mbox.0",auto_uido,auto_gidq,0644);
++ c(base_qmail,"man/man5","qmail-mbox.5",auto_uido,auto_gidq,0644);
++ c(base_qmail,"man/cat5","qmail-mbox.0",auto_uido,auto_gidq,0644);
+ c(base_qmail,"man/man5","dot-qmail.5",auto_uido,auto_gidq,0644);
+ c(base_qmail,"man/cat5","dot-qmail.0",auto_uido,auto_gidq,0644);
+ c(base_qmail,"man/man5","qmail-control.5",auto_uido,auto_gidq,0644);
+diff -Nau netqmail-1.06-orig/install-big.c netqmail-1.06/install-big.c
+--- netqmail-1.06-orig/install-big.c 1998-06-15 05:53:16.000000000 -0500
++++ netqmail-1.06/install-big.c 2023-12-01 20:05:20.048621806 -0600
+@@ -150,8 +150,8 @@
+ c(auto_qmail,"man/cat5","envelopes.0",auto_uido,auto_gidq,0644);
+ c(auto_qmail,"man/man5","maildir.5",auto_uido,auto_gidq,0644);
+ c(auto_qmail,"man/cat5","maildir.0",auto_uido,auto_gidq,0644);
+- c(auto_qmail,"man/man5","mbox.5",auto_uido,auto_gidq,0644);
+- c(auto_qmail,"man/cat5","mbox.0",auto_uido,auto_gidq,0644);
++ c(auto_qmail,"man/man5","qmail-mbox.5",auto_uido,auto_gidq,0644);
++ c(auto_qmail,"man/cat5","qmail-mbox.0",auto_uido,auto_gidq,0644);
+ c(auto_qmail,"man/man5","dot-qmail.5",auto_uido,auto_gidq,0644);
+ c(auto_qmail,"man/cat5","dot-qmail.0",auto_uido,auto_gidq,0644);
+ c(auto_qmail,"man/man5","qmail-control.5",auto_uido,auto_gidq,0644);
+diff -Nau netqmail-1.06-orig/maildir.5 netqmail-1.06/maildir.5
+--- netqmail-1.06-orig/maildir.5 1998-06-15 05:53:16.000000000 -0500
++++ netqmail-1.06/maildir.5 2023-12-01 20:06:32.630809068 -0600
+@@ -235,5 +235,5 @@
+ environment variable
+ as the name of the user's primary mail directory.
+ .SH "SEE ALSO"
+-mbox(5),
++qmail-mbox(5),
+ qmail-local(8)
+diff -Nau netqmail-1.06-orig/mbox.5 netqmail-1.06/mbox.5
+--- netqmail-1.06-orig/mbox.5 1998-06-15 05:53:16.000000000 -0500
++++ netqmail-1.06/mbox.5 2023-12-01 20:06:23.661774312 -0600
+@@ -1,4 +1,4 @@
+-.TH mbox 5
++.TH qmail-mbox 5
+ .SH "NAME"
+ mbox \- file containing mail messages
+ .SH "INTRODUCTION"
+Common subdirectories: netqmail-1.06-orig/old-patches and netqmail-1.06/old-patches
+Common subdirectories: netqmail-1.06-orig/other-patches and netqmail-1.06/other-patches
+diff -Nau netqmail-1.06-orig/preline.1 netqmail-1.06/preline.1
+--- netqmail-1.06-orig/preline.1 1998-06-15 05:53:16.000000000 -0500
++++ netqmail-1.06/preline.1 2023-12-01 20:05:28.147749986 -0600
+@@ -53,5 +53,5 @@
+ .B Return-Path
+ line.
+ .SH "SEE ALSO"
+-mbox(5),
++qmail-mbox(5),
+ qmail-command(8)
diff --git a/user/netqmail/smtpd-notls.run b/user/netqmail/smtpd-notls.run
new file mode 100644
index 000000000..fb30d0706
--- /dev/null
+++ b/user/netqmail/smtpd-notls.run
@@ -0,0 +1,9 @@
+#!/bin/execlineb -P
+
+fdmove -c 2 1
+s6-envdir env
+importas -u IP IP
+fdmove 1 3
+s6-tcpserver -v -1 -U -c 255 -- $IP 25
+s6-tcpserver-access -v2 -Dpl0 -t5000 -i data/rules --
+qmail-smtpd
diff --git a/user/netqmail/smtpd.run b/user/netqmail/smtpd.run
index 7f10dbdbb..51f06a7e7 100644
--- a/user/netqmail/smtpd.run
+++ b/user/netqmail/smtpd.run
@@ -4,6 +4,9 @@ fdmove -c 2 1
s6-envdir env
importas -u IP IP
fdmove 1 3
-s6-tcpserver -v2 -1U -c 255 -- $IP 25
-s6-tcpserver-access -v2 -DRpl0 -t 5000 -i data/rules --
+s6-tcpserver -v -1 -c 255 -- $IP 25
+s6-tcpserver-access -v2 -Dp -t5000 -i data/rules --
+s6-ucspitlsd -v2 -K30000 --
+s6-applyuidgid -Uz --
+smtpd-starttls-proxy-io
qmail-smtpd
diff --git a/user/netqmail/smtpsd.run b/user/netqmail/smtpsd.run
deleted file mode 100644
index 32d9f54ab..000000000
--- a/user/netqmail/smtpsd.run
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/bin/execlineb -P
-
-fdmove -c 2 1
-s6-envdir env
-importas -u IP IP
-fdmove 1 3
-s6-tlsserver -v2 -1U -c 255 -DRpl0 -t 5000 -i data/rules -- $IP 465
-qmail-smtpd
diff --git a/user/netsurf/APKBUILD b/user/netsurf/APKBUILD
index 54fdea907..c85e06a2e 100644
--- a/user/netsurf/APKBUILD
+++ b/user/netsurf/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=netsurf
-pkgver=3.8
+pkgver=3.11
pkgrel=0
pkgdesc="Modern, lightweight GTK-based browser"
url="http://www.netsurf-browser.org/"
@@ -10,26 +10,21 @@ options="!check" # No tests
license="MIT AND GPL-2.0-only WITH openssl-exception"
depends=""
makedepends="curl-dev zlib-dev bison flex libjpeg-turbo-dev libpng-dev
- openssl-dev expat-dev gperf gtk+2.0-dev librsvg-dev
- perl-html-parser"
+ openssl-dev expat-dev gperf gtk+3.0-dev librsvg-dev libwebp-dev
+ perl-html-parser vim"
source="http://download.netsurf-browser.org/netsurf/releases/source-full/netsurf-all-$pkgver.tar.gz
- Makefile.config"
+ netsurf.desktop
+ "
builddir="$srcdir/netsurf-all-$pkgver"
-prepare() {
- default_prepare
- cp "$srcdir"/Makefile.config "$builddir"/netsurf
-}
-
build() {
- cd "$builddir"
- make PREFIX=/usr NETSURF_USE_VIDEO=YES
+ make TARGET=gtk3 PREFIX=/usr NETSURF_USE_VIDEO=NO
}
package() {
- cd "$builddir"
- make PREFIX=/usr DESTDIR="$pkgdir" install
+ make TARGET=gtk3 PREFIX=/usr DESTDIR="$pkgdir" install
+ install -D -m644 "$srcdir"/netsurf.desktop "$pkgdir"/usr/share/applications/netsurf.desktop
}
-sha512sums="cc040566b2ae4bda1fa15f75f246b2977f17b1f0adc747ddf86a9f8873bc25dce46cacce8e3d80146e72cc0227b1642c9da8b39a73ca2b5bb254334a25b8136a netsurf-all-3.8.tar.gz
-cb5f7ca711c4a015a49acc25882b9b95e151d69e68a21d1df068f107b2372dc7493a25c0dfc1ef0cf42ceb16ba47ceb1002f6d37c2424512b183b508ee41357e Makefile.config"
+sha512sums="f931687e08976ca336762587cc1ac75e45518be62b19d1d31aac3063b92b9666f8a022ff3a183e80c89404ba8ff33458b26521130e96943043085a42291ee283 netsurf-all-3.11.tar.gz
+c82c95a305a0b6e984d313b7137ac8a20ff57e9df8c59cd1b636163aa040fc9ffea3fd652af1157b972265389786e221136abba89d01033a3710208552208dae netsurf.desktop"
diff --git a/user/netsurf/Makefile.config b/user/netsurf/Makefile.config
deleted file mode 100644
index 0e58d6e7d..000000000
--- a/user/netsurf/Makefile.config
+++ /dev/null
@@ -1 +0,0 @@
-override NETSURF_USE_VIDEO := NO
diff --git a/user/netsurf/netsurf.desktop b/user/netsurf/netsurf.desktop
new file mode 100644
index 000000000..c4aac80e8
--- /dev/null
+++ b/user/netsurf/netsurf.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Type=Application
+Version=3.11
+Name=NetSurf
+Comment=A minimalist web browser
+Icon=web-browser
+Categories=Internet
+Exec=netsurf-gtk3
diff --git a/user/nettle/APKBUILD b/user/nettle/APKBUILD
index f13680455..762813dca 100644
--- a/user/nettle/APKBUILD
+++ b/user/nettle/APKBUILD
@@ -1,22 +1,22 @@
# Contributor: Łukasz Jendrysik <scadu@yandex.com>
# Contributor: Fabian Affolter <fabian@affolter-engineering.ch>
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=nettle
-pkgver=3.4.1
-pkgrel=0
+pkgver=3.9.1
+pkgrel=1
pkgdesc="Low-level cryptographic library"
url="http://www.lysator.liu.se/~nisse/nettle/"
arch="all"
license="LGPL-3.0+ OR GPL-2.0+"
depends=""
depends_dev="gmp-dev"
-makedepends="$depends_dev m4 openssl-dev"
-subpackages="$pkgname-dev $pkgname-utils"
+makedepends="$depends_dev m4 openssl-dev texinfo"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-utils"
source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz
- nettle-2.4-makefile.patch"
+ nettle-2.4-makefile.patch
+ "
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,13 +33,11 @@ build() {
}
check() {
- cd "$builddir"
make -C examples # required for rsa-encrypt
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -49,5 +47,5 @@ utils() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}
-sha512sums="26aefbbe9927e90e28f271e56d2ba876611831222d0e1e1a58bdb75bbd50934fcd84418a4fe47b845f557e60a9786a72a4de2676c930447b104f2256aca7a54f nettle-3.4.1.tar.gz
+sha512sums="5939c4b43cf9ff6c6272245b85f123c81f8f4e37089fa4f39a00a570016d837f6e706a33226e4bbfc531b02a55b2756ff312461225ed88de338a73069e031ced nettle-3.9.1.tar.gz
c7d9741a7a37d225f3f0db16d355e13b04cc0f1ac56882a6ff31ef15c1a1a0aee7a70cf1ec8bbf2c46b9b0dcec153da7a7aa6b8909a72d76dd4d669cbbaceaa4 nettle-2.4-makefile.patch"
diff --git a/user/networkmanager-qt/APKBUILD b/user/networkmanager-qt/APKBUILD
new file mode 100644
index 000000000..2ef1f3551
--- /dev/null
+++ b/user/networkmanager-qt/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=networkmanager-qt
+pkgver=5.94.0
+pkgrel=0
+pkgdesc="Qt framework for NetworkManager"
+url="https://www.kde.org/"
+arch="all"
+options="!check" # Requires the system to have NM running.
+license="LGPL-2.1-only OR LGPL-3.0-only"
+depends=""
+depends_dev="networkmanager-dev"
+makedepends="$depends_dev cmake doxygen extra-cmake-modules qt5-qtbase-dev
+ qt5-qttools-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://download.kde.org/stable/frameworks/${pkgver%.*}/networkmanager-qt-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DBUILD_QCH:BOOL=ON \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="0e97577e53b440df2c25d2afaa2171443b9c2806c8164a84db5053e071fb9ac27dda8952947efd0e9ad57f25625cf8447f45606278a61d45c45ec0a1db956d61 networkmanager-qt-5.94.0.tar.xz"
diff --git a/user/networkmanager/01-org.freedesktop.NetworkManager.rules b/user/networkmanager/01-org.freedesktop.NetworkManager.rules
new file mode 100644
index 000000000..a8aea44cb
--- /dev/null
+++ b/user/networkmanager/01-org.freedesktop.NetworkManager.rules
@@ -0,0 +1,7 @@
+// Let users in netdev group modify NetworkManager
+polkit.addRule(function(action, subject) {
+ if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 &&
+ subject.isInGroup("netdev") && subject.active) {
+ return "yes";
+ }
+});
diff --git a/user/networkmanager/10-openrc-status b/user/networkmanager/10-openrc-status
new file mode 100644
index 000000000..06b22bd77
--- /dev/null
+++ b/user/networkmanager/10-openrc-status
@@ -0,0 +1,35 @@
+#!/bin/sh
+# Copyright (c) 2012 Alexandre Rostovtsev
+# Released under the 2-clause BSD license.
+
+# Ensures that the NetworkManager OpenRC service is marked as started and
+# providing net only when it has a successful connection.
+
+if [ ! -e "/run/openrc/softlevel" ]; then
+ # OpenRC is not running
+ exit 0
+fi
+
+# Ensure rc-service is in PATH
+PATH="${PATH}:/sbin:/usr/sbin"
+
+# Exit if the NetworkManager OpenRC service is not running
+rc-service NetworkManager status 2>&1 | grep -Eq "status: (starting|started|inactive|stopping)" || exit 0
+
+# Call rc-service in background mode so that the start/stop functions update
+# NetworkManager service status to started or inactive instead of actually
+# starting or stopping the daemon
+export IN_BACKGROUND=YES
+
+case "$2" in
+ up) nm-online -t 0 -x &&
+ ! rc-service NetworkManager status 2>&1 | grep -q started &&
+ exec rc-service NetworkManager start ;;
+ down) nm-online -t 0 -x ||
+ rc-service NetworkManager status 2>&1 | grep -q stopped ||
+ exec rc-service NetworkManager stop ;;
+ pre-sleep) rc-service NetworkManager status 2>&1 | grep -q stopped ||
+ exec rc-service NetworkManager stop ;;
+esac
+exit 0
+# vim: set ts=4:
diff --git a/user/networkmanager/APKBUILD b/user/networkmanager/APKBUILD
new file mode 100644
index 000000000..143410f2a
--- /dev/null
+++ b/user/networkmanager/APKBUILD
@@ -0,0 +1,105 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=networkmanager
+pkgver=1.22.14
+pkgrel=3
+pkgdesc="Network management daemon"
+url="https://wiki.gnome.org/Projects/NetworkManager"
+arch="all"
+options="!check" # Requires dbus-python and running DBus server.
+license="GPL-2.0+ AND LGPL-2.1+"
+depends="dhcpcd iputils ppp wpa_supplicant-dbus"
+makedepends="bash bluez-dev curl-dev dbus-dev dbus-glib-dev elogind-dev
+ eudev-dev glib-dev gobject-introspection-dev intltool libedit-dev
+ libndp-dev libxslt modemmanager-dev ncurses-dev newt-dev nss-dev
+ perl polkit-dev ppp-dev py3-pygobject util-linux-dev vala-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-openrc"
+source="https://download.gnome.org/sources/NetworkManager/${pkgver%.*}/NetworkManager-$pkgver.tar.xz
+ editline.patch
+ errno.patch
+ musl.patch
+ qsort_r.patch
+ random.patch
+ tests.patch
+ reallocarray.patch
+
+ 01-org.freedesktop.NetworkManager.rules
+ 10-openrc-status
+ nm.confd
+ nm.initd
+ "
+builddir="$srcdir/NetworkManager-$pkgver"
+
+build() {
+ # pppd plugin dir is a huge hack.
+ bash ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --disable-json-validation \
+ --disable-more-warnings \
+ --disable-ovs \
+ --disable-qt \
+ --disable-static \
+ --enable-bluez5-dun \
+ --enable-concheck \
+ --enable-polkit=yes \
+ --enable-ppp \
+ --enable-vala \
+ --with-crypto=nss \
+ --with-dbus-sys-dir=/etc/dbus-1/system.d \
+ --with-dhcpcd \
+ --with-ebpf=yes \
+ --with-iptables=/sbin/iptables \
+ --with-nmcli=yes \
+ --with-nmtui \
+ --with-pppd-plugin-dir=/usr/lib/pppd/$(ls -1 /usr/lib/pppd | head) \
+ --with-session-tracking=elogind \
+ --with-suspend-resume=elogind \
+ --without-dhclient \
+ --without-libaudit \
+ --without-libpsl \
+ --without-netconfig \
+ --without-systemd-journal
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+
+ install -D -m755 "$srcdir"/nm.initd "$pkgdir"/etc/init.d/NetworkManager
+ install -D -m644 "$srcdir"/nm.confd "$pkgdir"/etc/conf.d/NetworkManager
+ install -D -m600 -t "$pkgdir"/usr/share/polkit-1/rules.d/ \
+ "$srcdir"/01-org.freedesktop.NetworkManager.rules
+ install -D -m755 -t "$pkgdir"/etc/NetworkManager/dispatcher.d/ \
+ "$srcdir"/10-openrc-status
+ install -d "$pkgdir"/etc/NetworkManager/system-connections
+ touch "$pkgdir"/etc/NetworkManager/system-connections/.keepdir
+}
+
+openrc() {
+ default_openrc
+ mkdir -p "$subpkgdir"/etc/NetworkManager/dispatcher.d
+ mv "$pkgdir"/etc/NetworkManager/dispatcher.d/10-openrc-status \
+ "$subpkgdir"/etc/NetworkManager/dispatcher.d/
+}
+
+sha512sums="81ccb634c3583406d52c159d1b0903f98c2732f9cd6962f3d6d71940d05cba32e262219de4f09c0cc687beff57bd7ba425f06d9a9c1bfa60aef11d427e91f453 NetworkManager-1.22.14.tar.xz
+ecd9cb920a125e0e3c4b8c96048ca3ac24490fdd453f0525ecaccf688687692e7a5feaf87eeaf97a2dfb405b2e0db8743114510e30f00f7ae119dc9b9551e7d7 editline.patch
+b0b85294c19510893ba30cf3d0e1984430c451273d4eb545760de52c69866a5ed0385f9c14a9bc180da01daad7d1c0da221101e7a826bc5be53c2724c9990d95 errno.patch
+7b3cfbea8b80f832862d79fce9f89f604b457744324a8ae6b428cf3cb42ec2536d3c5784303d140d50c5a2cd8caf91d04f5096ef420a57a761e412bf2256bd5a musl.patch
+5142bf14ac5574a3ae4bc8753055c534702892871ca45a1bc4d48d4d5c07d11bd54e52861458a673c328d129cdd6f1f749a9546eba1c16fea5173f92840506de qsort_r.patch
+d81a962e32e696ca713dfcf1f8dbd9a146f94473c391f1977198ca67e11a6d427a265bacbe43197e42b442cfaa882e9fd2bba7548872586d53d3caca76263e79 random.patch
+602859c1c7b63984b3b9d9597772e4bff496b3838eb0131ad1d707ae9226c5bdd703080683e48bc93b9c1a6572505dad0332d63c57e6320e63c011931877233a tests.patch
+d1250987879d9d660932065953d35c620a15b7242f07e676855b68d0698348e8f54dce43fa67c53f470a10f7c8a16a9834af82ba9299da0e74c7687073e89a6f reallocarray.patch
+5ae288073ddc818cc5a0103a9320ebcbd80bccbba9f823335c1c602c25e48e041990370e6d091d9796e543222a7a58625ce832022d450b9a9dd49df4ed6e1ed9 01-org.freedesktop.NetworkManager.rules
+26f962cea0b6a75549d16c19a71e3559239b08b001927882702f5d9355a2cc95f7b13c581439f758a950d9a5bfb73b86ba61a5ffb22c9abe19f5b05fe5f5834a 10-openrc-status
+f8c9331834cbc66ab0e4e6f4a120fde6a08a435d680a1e1087718fdbb2b9843a313e7ec30b7008822999dafd98e152aa7d2a96f87320ba9c91c3adb63e0b7c9a nm.confd
+9a5ab7d317797489a555b185d103d3c526cd6963c6586da2f5212b41e68a9bf5dedd52d1fe58718fb686379b6e2434924d06d7da8070a62a3ec3e5626ab90d14 nm.initd"
diff --git a/user/networkmanager/editline.patch b/user/networkmanager/editline.patch
new file mode 100644
index 000000000..7508e9b9a
--- /dev/null
+++ b/user/networkmanager/editline.patch
@@ -0,0 +1,128 @@
+--- NetworkManager-1.18.1/clients/cli/agent.c.old 2019-04-18 09:19:11.000000000 +0000
++++ NetworkManager-1.18.1/clients/cli/agent.c 2019-05-10 06:15:55.614930112 +0000
+@@ -9,8 +9,7 @@
+
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <readline/readline.h>
+-#include <readline/history.h>
++#include <editline/readline.h>
+
+ #include "common.h"
+ #include "utils.h"
+--- NetworkManager-1.18.1/clients/cli/common.c.old 2019-04-20 19:01:59.000000000 +0000
++++ NetworkManager-1.18.1/clients/cli/common.c 2019-05-10 07:07:34.506620687 +0000
+@@ -10,8 +10,7 @@
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <sys/ioctl.h>
+-#include <readline/readline.h>
+-#include <readline/history.h>
++#include <editline/readline.h>
+
+ #include "nm-vpn-helpers.h"
+ #include "nm-client-utils.h"
+@@ -992,7 +991,7 @@
+ * nmc_readline_echo:
+ *
+ * The same as nmc_readline() except it can disable echoing of input characters if @echo_on is %FALSE.
+- * nmc_readline(TRUE, ...) == nmc_readline(...)
++ * nmc_readline_echo(TRUE, ...) == nmc_readline(...)
+ */
+ char *
+ nmc_readline_echo (const NmcConfig *nmc_config,
+@@ -1003,8 +1002,7 @@
+ va_list args;
+ gs_free char *prompt = NULL;
+ char *str;
+- HISTORY_STATE *saved_history;
+- HISTORY_STATE passwd_history = { 0, };
++ int whence, curpos;
+
+ va_start (args, prompt_fmt);
+ prompt = g_strdup_vprintf (prompt_fmt, args);
+@@ -1014,8 +1012,7 @@
+
+ /* Hide the actual password */
+ if (!echo_on) {
+- saved_history = history_get_history_state ();
+- history_set_history_state (&passwd_history);
++ whence = where_history ();
+ rl_redisplay_function = nmc_secret_redisplay;
+ }
+
+@@ -1024,7 +1021,10 @@
+ /* Restore the non-hiding behavior */
+ if (!echo_on) {
+ rl_redisplay_function = rl_redisplay;
+- history_set_history_state (saved_history);
++ curpos = where_history ();
++ for (; curpos > whence; curpos--) {
++ remove_history (curpos);
++ }
+ }
+
+ return str;
+--- NetworkManager-1.18.1/clients/cli/connections.c.old 2019-04-20 19:01:59.000000000 +0000
++++ NetworkManager-1.18.1/clients/cli/connections.c 2019-05-10 07:05:43.058781503 +0000
+@@ -12,8 +12,7 @@
+ #include <unistd.h>
+ #include <signal.h>
+ #include <netinet/ether.h>
+-#include <readline/readline.h>
+-#include <readline/history.h>
++#include <editline/readline.h>
+ #include <fcntl.h>
+
+ #include "nm-client-utils.h"
+@@ -6110,9 +6109,6 @@
+ return nmc_rl_gen_func_basic (text, state, avals);
+ }
+
+-/* from readline */
+-extern int rl_complete_with_tilde_expansion;
+-
+ /*
+ * Attempt to complete on the contents of TEXT. START and END show the
+ * region of TEXT that contains the word to complete. We can use the
+@@ -6139,9 +6135,6 @@
+ /* Disable default filename completion */
+ rl_attempted_completion_over = 1;
+
+- /* Enable tilde expansion when filenames are completed */
+- rl_complete_with_tilde_expansion = 1;
+-
+ /* Filter out possible ANSI color escape sequences */
+ prompt_tmp = nmc_filter_out_colors ((const char *) rl_prompt);
+
+@@ -9243,7 +9236,6 @@
+ generator_func = _meta_abstract_generator;
+ } else if (g_strcmp0 (rl_prompt, PROMPT_IMPORT_FILE) == 0) {
+ rl_attempted_completion_over = 0;
+- rl_complete_with_tilde_expansion = 1;
+ } else if (g_strcmp0 (rl_prompt, PROMPT_VPN_CONNECTION) == 0) {
+ generator_func = gen_vpn_ids;
+ }
+--- NetworkManager-1.18.1/clients/cli/devices.c.old 2019-04-20 19:01:59.000000000 +0000
++++ NetworkManager-1.18.1/clients/cli/devices.c 2019-05-10 06:16:21.432108032 +0000
+@@ -9,7 +9,7 @@
+
+ #include <stdio.h>
+ #include <stdlib.h>
+-#include <readline/readline.h>
++#include <editline/readline.h>
+
+ #include "nm-secret-agent-simple.h"
+ #include "nm-client-utils.h"
+--- NetworkManager-1.18.1/clients/cli/nmcli.c.old 2019-04-20 19:01:59.000000000 +0000
++++ NetworkManager-1.18.1/clients/cli/nmcli.c 2019-05-10 06:16:29.211257692 +0000
+@@ -15,8 +15,7 @@
+ #include <unistd.h>
+ #include <locale.h>
+ #include <glib-unix.h>
+-#include <readline/readline.h>
+-#include <readline/history.h>
++#include <editline/readline.h>
+
+ #include "nm-client-utils.h"
+
diff --git a/user/networkmanager/errno.patch b/user/networkmanager/errno.patch
new file mode 100644
index 000000000..00c932586
--- /dev/null
+++ b/user/networkmanager/errno.patch
@@ -0,0 +1,21 @@
+--- NetworkManager-1.18.1/shared/nm-glib-aux/nm-errno.c.old 2019-04-19 09:31:51.000000000 +0000
++++ NetworkManager-1.18.1/shared/nm-glib-aux/nm-errno.c 2019-05-10 06:01:00.812741059 +0000
+@@ -106,7 +106,6 @@
+ nm_assert (buf);
+ nm_assert (buf_size > 0);
+
+-#if (_POSIX_C_SOURCE >= 200112L) && ! _GNU_SOURCE
+ /* XSI-compliant */
+ {
+ int errno_saved = errno;
+@@ -117,10 +116,6 @@
+ }
+ buf2 = buf;
+ }
+-#else
+- /* GNU-specific */
+- buf2 = strerror_r (errsv, buf, buf_size);
+-#endif
+
+ /* like g_strerror(), ensure that the error message is UTF-8. */
+ if ( !g_get_charset (NULL)
diff --git a/user/networkmanager/musl.patch b/user/networkmanager/musl.patch
new file mode 100644
index 000000000..ddf86390f
--- /dev/null
+++ b/user/networkmanager/musl.patch
@@ -0,0 +1,224 @@
+Misc header fixes for compatibility with musl libc.
+
+diff --git a/shared/systemd/src/basic/stdio-util.h b/shared/systemd/src/basic/stdio-util.h
+index c3b9448..e80a938 100644
+--- a/shared/systemd/src/basic/stdio-util.h
++++ b/shared/systemd/src/basic/stdio-util.h
+@@ -1,7 +1,9 @@
+ /* SPDX-License-Identifier: LGPL-2.1+ */
+ #pragma once
+
++#if defined(__GLIBC__)
+ #include <printf.h>
++#endif
+ #include <stdarg.h>
+ #include <stdio.h>
+ #include <sys/types.h>
+diff --git a/shared/systemd/src/basic/sort-util.h b/shared/systemd/src/basic/sort-util.h
+index e029f86..935f136 100644
+--- a/shared/systemd/src/basic/sort-util.h
++++ b/shared/systemd/src/basic/sort-util.h
+@@ -5,6 +5,13 @@
+
+ #include "macro.h"
+
++#ifndef __COMPAR_FN_T
++# define __COMPAR_FN_T
++typedef int (*__compar_fn_t) (const void *, const void *);
++typedef __compar_fn_t comparison_fn_t;
++typedef int (*__compar_d_fn_t) (const void *, const void *, void *);
++#endif
++
+ void *xbsearch_r(const void *key, const void *base, size_t nmemb, size_t size,
+ __compar_d_fn_t compar, void *arg);
+
+diff --git a/shared/systemd/src/basic/util.h b/shared/systemd/src/basic/util.h
+index 25e6ab8..7967e8a 100644
+--- a/shared/systemd/src/basic/util.h
++++ b/shared/systemd/src/basic/util.h
+@@ -30,6 +30,12 @@ static inline unsigned u64log2(uint64_t n) {
+ #endif
+ }
+
++#if !defined(__GLIBC__)
++typedef int (*__compar_fn_t) (const void*, const void*);
++typedef __compar_fn_t comparison_fn_t;
++typedef int (*__compar_d_fn_t) (const void *, const void *, void *);
++#endif
++
+ static inline unsigned u32ctz(uint32_t n) {
+ #if __SIZEOF_INT__ == 4
+ return n != 0 ? __builtin_ctz(n) : 32;
+diff --git a/libnm-core/nm-utils.h b/libnm-core/nm-utils.h
+index 2b5baba..976850c 100644
+--- a/libnm-core/nm-utils.h
++++ b/libnm-core/nm-utils.h
+@@ -15,7 +15,11 @@
+ #include <netinet/in.h>
+
+ /* For ETH_ALEN and INFINIBAND_ALEN */
++#if defined(__GLIBC__)
+ #include <linux/if_ether.h>
++#else
++#define ETH_ALEN 6 /* Octets in one ethernet addr */
++#endif
+ #include <linux/if_infiniband.h>
+
+ #include "nm-core-enum-types.h"
+diff --git a/shared/systemd/src/basic/socket-util.h b/shared/systemd/src/basic/socket-util.h
+index d2246a8..4cb0807 100644
+--- a/shared/systemd/src/basic/socket-util.h
++++ b/shared/systemd/src/basic/socket-util.h
+@@ -13,6 +13,11 @@
+ #include <sys/socket.h>
+ #include <sys/types.h>
+ #include <sys/un.h>
++#if !defined(__GLIBC__)
++/* SIOCGSTAMPNS from linux/asm-generic.h
++ * for src/systemd/src/libsystemd-network/sd-lldp.c */
++#include <linux/sockios.h>
++#endif
+
+ #include "macro.h"
+ #include "missing_socket.h"
+diff --git a/src/platform/wifi/nm-wifi-utils.h b/src/platform/wifi/nm-wifi-utils.h
+index 36148b5..d282eb2 100644
+--- a/src/platform/wifi/nm-wifi-utils.h
++++ b/src/platform/wifi/nm-wifi-utils.h
+@@ -7,7 +7,11 @@
+ #ifndef __WIFI_UTILS_H__
+ #define __WIFI_UTILS_H__
+
++#if defined(__GLIBC__)
+ #include <net/ethernet.h>
++#else /* musl libc */
++#define ETH_ALEN 6 /* Octets in one ethernet addr */
++#endif
+
+ #include "nm-dbus-interface.h"
+ #include "nm-setting-wireless.h"
+diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
+index 7514fa7..f041382 100644
+--- a/src/devices/nm-device.c
++++ b/src/devices/nm-device.c
+@@ -17,7 +17,11 @@
+ #include <arpa/inet.h>
+ #include <fcntl.h>
+ #include <linux/if_addr.h>
++#if defined(__GLIBC__)
+ #include <linux/if_arp.h>
++#else
++#include <linux/if.h>
++#endif
+ #include <linux/rtnetlink.h>
+ #include <linux/pkt_sched.h>
+
+diff --git a/src/nm-manager.c b/src/nm-manager.c
+index 0bf6a75..e392507 100644
+--- a/src/nm-manager.c
++++ b/src/nm-manager.c
+@@ -15,6 +15,7 @@
+ #include <sys/stat.h>
+ #include <sys/sendfile.h>
+ #include <limits.h>
++#include <asm/types.h>
+
+ #include "nm-glib-aux/nm-c-list.h"
+
+diff --git a/src/systemd/sd-adapt-core/nm-sd-adapt-core.h b/src/systemd/sd-adapt-core/nm-sd-adapt-core.h
+index 8c07c53..d043afc 100644
+--- a/src/systemd/sd-adapt-core/nm-sd-adapt-core.h
++++ b/src/systemd/sd-adapt-core/nm-sd-adapt-core.h
+@@ -50,7 +50,7 @@
+ # ifdef HAVE___SECURE_GETENV
+ # define secure_getenv __secure_getenv
+ # else
+-# error neither secure_getenv nor __secure_getenv is available
++# define secure_getenv getenv
+ # endif
+ #endif
+
+--- NetworkManager-1.18.1/src/platform/nm-linux-platform.c.old 2019-04-19 09:31:51.000000000 +0000
++++ NetworkManager-1.18.1/src/platform/nm-linux-platform.c 2019-05-10 07:21:32.665163629 +0000
+@@ -6,6 +6,7 @@
+ #include "nm-default.h"
+
+ #include "nm-linux-platform.h"
++#include "wpan/nm-wpan-utils.h"
+
+ #include <arpa/inet.h>
+ #include <dlfcn.h>
+@@ -14,7 +15,11 @@
+ #include <libudev.h>
+ #include <linux/fib_rules.h>
+ #include <linux/ip.h>
++#ifdef __GLIBC__
+ #include <linux/if_arp.h>
++#else
++#include <linux/if.h>
++#endif
+ #include <linux/if_bridge.h>
+ #include <linux/if_link.h>
+ #include <linux/if_tun.h>
+@@ -44,7 +49,6 @@
+ #include "nm-platform-private.h"
+ #include "wifi/nm-wifi-utils.h"
+ #include "wifi/nm-wifi-utils-wext.h"
+-#include "wpan/nm-wpan-utils.h"
+ #include "nm-glib-aux/nm-io-utils.h"
+ #include "nm-udev-aux/nm-udev-utils.h"
+
+diff --git a/shared/systemd/src/basic/process-util.c b/shared/systemd/src/basic/process-util.c
+index b0afb5c..f72e346 100644
+--- a/shared/systemd/src/basic/process-util.c
++++ b/shared/systemd/src/basic/process-util.c
+@@ -17,6 +17,9 @@
+ #include <sys/wait.h>
+ #include <syslog.h>
+ #include <unistd.h>
++#ifndef __GLIBC__
++#include <pthread.h>
++#endif
+ #if 0 /* NM_IGNORED */
+ #if HAVE_VALGRIND_VALGRIND_H
+ #include <valgrind/valgrind.h>
+@@ -1123,11 +1126,13 @@ void reset_cached_pid(void) {
+ cached_pid = CACHED_PID_UNSET;
+ }
+
++#ifdef __GLIBC__
+ /* We use glibc __register_atfork() + __dso_handle directly here, as they are not included in the glibc
+ * headers. __register_atfork() is mostly equivalent to pthread_atfork(), but doesn't require us to link against
+ * libpthread, as it is part of glibc anyway. */
+ extern int __register_atfork(void (*prepare) (void), void (*parent) (void), void (*child) (void), void *dso_handle);
+ extern void* __dso_handle _weak_;
++#endif
+
+ pid_t getpid_cached(void) {
+ static bool installed = false;
+@@ -1156,7 +1161,12 @@ pid_t getpid_cached(void) {
+ * only half-documented (glibc doesn't document it but LSB does — though only superficially)
+ * we'll check for errors only in the most generic fashion possible. */
+
+- if (__register_atfork(NULL, NULL, reset_cached_pid, __dso_handle) != 0) {
++ #ifdef __GLIBC__
++ if (__register_atfork(NULL, NULL, reset_cached_pid, __dso_handle) != 0) {
++ #else
++ if (pthread_atfork(NULL, NULL, reset_cached_pid) != 0) {
++ #endif
++
+ /* OOM? Let's try again later */
+ cached_pid = CACHED_PID_UNSET;
+ return new_pid;
+
+--- NetworkManager-1.20.0/src/systemd/src/libsystemd-network/sd-dhcp6-client.c.old 2019-08-06 10:22:09.000000000 +0000
++++ NetworkManager-1.20.0/src/systemd/src/libsystemd-network/sd-dhcp6-client.c 2019-08-09 05:17:18.249955730 +0000
+@@ -7,7 +7,7 @@
+ #include <errno.h>
+ #include <string.h>
+ #include <sys/ioctl.h>
+-#include <linux/if_arp.h>
++#include <net/if_arp.h>
+ #include <linux/if_infiniband.h>
+
+ #include "sd-dhcp6-client.h"
diff --git a/user/networkmanager/nm.confd b/user/networkmanager/nm.confd
new file mode 100644
index 000000000..4a9922965
--- /dev/null
+++ b/user/networkmanager/nm.confd
@@ -0,0 +1,4 @@
+# If NetworkManager does not establish a connection within $INACTIVE_TIMEOUT
+# seconds after starting, the service will be marked as inactive, and it will
+# continue to wait for a connection in background mode.
+INACTIVE_TIMEOUT=1
diff --git a/user/networkmanager/nm.initd b/user/networkmanager/nm.initd
new file mode 100644
index 000000000..c8aae7e7f
--- /dev/null
+++ b/user/networkmanager/nm.initd
@@ -0,0 +1,58 @@
+#!/sbin/openrc-run
+# Copyright (c) 2008 Saleem Abdulrasool <compnerd@compnerd.org>
+# Copyright 2013-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+description="NetworkManager daemon. The service is marked as started only \
+when a network connection is established."
+
+depend() {
+ need dbus
+ use elogind
+ provide net
+}
+
+start() {
+ # If we are re-called by a dispatcher event, we want to mark the service
+ # as started without starting the daemon again
+ yesno "${IN_BACKGROUND}" && return 0
+
+ [ -z "${INACTIVE_TIMEOUT}" ] && INACTIVE_TIMEOUT="1"
+
+ ebegin "Starting NetworkManager"
+ start-stop-daemon --start --quiet --pidfile /run/NetworkManager/NetworkManager.pid \
+ --exec /usr/sbin/NetworkManager -- --pid-file /run/NetworkManager/NetworkManager.pid
+ local _retval=$?
+ eend "${_retval}"
+ if [ "x${_retval}" = 'x0' ] && ! nm-online -t "${INACTIVE_TIMEOUT}"; then
+ einfo "Marking NetworkManager as inactive. It will automatically be marked"
+ einfo "as started after a network connection has been established."
+ mark_service_inactive
+ fi
+ return "${_retval}"
+}
+
+stop() {
+ # If we are re-called by a dispatcher event, we want to mark the service
+ # as inactive without stopping the daemon
+ if yesno "${IN_BACKGROUND}"; then
+ mark_service_inactive "${SVCNAME}"
+ return 0
+ fi
+
+ ebegin "Stopping NetworkManager"
+ local pidfile=/run/NetworkManager/NetworkManager.pid
+ if [ ! -e "${pidfile}" ] && [ -e /var/run/NetworkManager.pid ]; then
+ # Try stopping the pid file used by <0.9.7
+ pidfile=/var/run/NetworkManager.pid
+ start-stop-daemon --stop --quiet --pidfile "${pidfile}"
+ ret=$?
+ [ ${ret} = 0 ] && [ -e "${pidfile}" ] && rm "${pidfile}"
+ eend ${ret}
+ else
+ start-stop-daemon --stop --quiet --pidfile "${pidfile}"
+ eend $?
+ fi
+}
+
+# vim: set ft=gentoo-init-d ts=4 :
diff --git a/user/networkmanager/qsort_r.patch b/user/networkmanager/qsort_r.patch
new file mode 100644
index 000000000..39235787f
--- /dev/null
+++ b/user/networkmanager/qsort_r.patch
@@ -0,0 +1,18 @@
+From: Gottox @ Void
+
+diff --git shared/systemd/src/basic/sort-util.h shared/systemd/src/basic/sort-util.h
+index e029f8646..168735087 100644
+--- a/shared/systemd/src/basic/sort-util.h
++++ b/shared/systemd/src/basic/sort-util.h
+@@ -67,7 +67,11 @@ static inline void qsort_r_safe(void *base, size_t nmemb, size_t size, __compar_
+ return;
+
+ assert(base);
++#ifdef __GLIBC__
+ qsort_r(base, nmemb, size, compar, userdata);
++#else
++ g_qsort_with_data(base, nmemb, size, compar, userdata);
++#endif
+ }
+
+ #define typesafe_qsort_r(p, n, func, userdata) \
diff --git a/user/networkmanager/random.patch b/user/networkmanager/random.patch
new file mode 100644
index 000000000..1d3c21588
--- /dev/null
+++ b/user/networkmanager/random.patch
@@ -0,0 +1,50 @@
+From: Gottox @ Void
+
+diff --git shared/n-dhcp4/src/n-dhcp4-c-probe.c shared/n-dhcp4/src/n-dhcp4-c-probe.c
+index 308cff830..9463528b1 100644
+--- a/shared/n-dhcp4/src/n-dhcp4-c-probe.c
++++ b/shared/n-dhcp4/src/n-dhcp4-c-probe.c
+@@ -362,8 +362,12 @@ static void n_dhcp4_client_probe_config_initialize_random_seed(NDhcp4ClientProbe
+ seed16v[1] = (u64 >> 16) ^ (u64 >> 0);
+ seed16v[2] = (u64 >> 32) ^ (u64 >> 16);
+
++#ifdef __GLIBC__
+ r = seed48_r(seed16v, &config->entropy);
+ c_assert(!r);
++#else
++ memcpy(config->entropy, seed16v, sizeof seed16v);
++#endif
+ }
+
+ /**
+@@ -377,10 +381,14 @@ static void n_dhcp4_client_probe_config_initialize_random_seed(NDhcp4ClientProbe
+ */
+ uint32_t n_dhcp4_client_probe_config_get_random(NDhcp4ClientProbeConfig *config) {
+ long int result;
++#ifdef __GLIBC__
+ int r;
+
+ r = mrand48_r(&config->entropy, &result);
+ c_assert(!r);
++#else
++ result = jrand48(config->entropy);
++#endif
+
+ return result;
+ };
+diff --git shared/n-dhcp4/src/n-dhcp4-private.h shared/n-dhcp4/src/n-dhcp4-private.h
+index c38ddbfc8..fb4880771 100644
+--- a/shared/n-dhcp4/src/n-dhcp4-private.h
++++ b/shared/n-dhcp4/src/n-dhcp4-private.h
+@@ -267,7 +267,11 @@ struct NDhcp4ClientProbeConfig {
+ bool inform_only;
+ bool init_reboot;
+ struct in_addr requested_ip;
++#ifdef __GLIBC__
+ struct drand48_data entropy; /* entropy pool */
++#else
++ unsigned short entropy[3]; /* entropy pool */
++#endif
+ uint64_t ms_start_delay; /* max ms to wait before starting probe */
+ NDhcp4ClientProbeOption *options[UINT8_MAX + 1];
+ int8_t request_parameters[UINT8_MAX + 1];
diff --git a/user/networkmanager/reallocarray.patch b/user/networkmanager/reallocarray.patch
new file mode 100644
index 000000000..c6b5d1a38
--- /dev/null
+++ b/user/networkmanager/reallocarray.patch
@@ -0,0 +1,35 @@
+musl [added support for reallocarray](0), but the function prototype is
+declared in `stdlib.h` instead of `malloc.h`.
+
+Update the check for reallocarray to check both in `malloc.h` and
+`stdlib.h`.
+
+[0]:https://git.musl-libc.org/cgit/musl/commit/?id=821083ac7b54eaa040d5a8ddc67c6206a175e0ca
+
+ZV: ported to 'configure' script
+
+diff --git a/meson.build b/meson.build
+index 22a3c4c..12a10c5 100644
+--- a/meson.build
++++ b/meson.build
+@@ -126,7 +126,7 @@ config_h.set10('HAVE_RT_SIGQUEUEINFO', cc.has_function('rt_sigqueueinfo', prefix
+ #include <sys/wait.h>'''))
+ config_h.set('HAVE_SECURE_GETENV', cc.has_function('secure_getenv'))
+ config_h.set('HAVE___SECURE_GETENV', cc.has_function('__secure_getenv'))
+-config_h.set10('HAVE_DECL_REALLOCARRAY', cc.has_function('reallocarray', prefix: '#include <malloc.h>'))
++config_h.set10('HAVE_DECL_REALLOCARRAY', cc.has_function('reallocarray', prefix: '#include <stdlib.h>''))
+ config_h.set10('HAVE_DECL_EXPLICIT_BZERO', cc.has_function('explicit_bzero', prefix: '#include <string.h>'))
+ config_h.set10('HAVE_DECL_MEMFD_CREATE', cc.has_function('memfd_create', prefix: '#include <sys/mman.h>'))
+
+diff -ur a/configure b/configure
+--- a/configure 2022-05-27 20:55:41.353915378 +0000
++++ b/configure 2022-05-27 20:56:56.707077218 +0000
+@@ -18255,7 +18255,7 @@
+
+
+ ac_fn_c_check_decl "$LINENO" "reallocarray" "ac_cv_have_decl_reallocarray" "
+-#include <malloc.h>
++#include <stdlib.h>
+
+ "
+ if test "x$ac_cv_have_decl_reallocarray" = xyes; then :
diff --git a/user/networkmanager/tests.patch b/user/networkmanager/tests.patch
new file mode 100644
index 000000000..d2691db3b
--- /dev/null
+++ b/user/networkmanager/tests.patch
@@ -0,0 +1,18 @@
+--- NetworkManager-1.18.1/src/devices/tests/test-lldp.c.old 2019-04-18 09:19:11.000000000 +0000
++++ NetworkManager-1.18.1/src/devices/tests/test-lldp.c 2019-05-10 07:23:58.979198831 +0000
+@@ -6,7 +6,6 @@
+ #include "nm-default.h"
+
+ #include <fcntl.h>
+-#include <linux/if_tun.h>
+ #include <sys/ioctl.h>
+ #include <sys/stat.h>
+ #include <sys/types.h>
+@@ -17,6 +16,7 @@
+ #include "platform/tests/test-common.h"
+
+ #include "nm-test-utils-core.h"
++#include <linux/if_tun.h>
+
+ /*****************************************************************************/
+
diff --git a/user/newt/APKBUILD b/user/newt/APKBUILD
new file mode 100644
index 000000000..f8aab64a2
--- /dev/null
+++ b/user/newt/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=newt
+pkgver=0.52.21
+_pkgver=$(printf '%s' "$pkgver" | tr . -)
+pkgrel=0
+pkgdesc="Terminal user interface library"
+url="https://pagure.io/newt/"
+arch="all"
+options="!check" # No test suite.
+license="LGPL-2.0-only"
+depends=""
+makedepends="autoconf automake popt-dev slang-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://pagure.io/newt/archive/r$_pkgver/newt-r$_pkgver.tar.gz"
+builddir="$srcdir/newt-r$_pkgver"
+
+prepare() {
+ default_prepare
+ ./autogen.sh
+}
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="6a72e7f624edfcf4638cdced69ae3443dcd9abfe306e506b3220f48403dcb841ff7b05e07eabbabe73cfa689486c6ce64e240951abb1bc42c791d14493738247 newt-r0-52-21.tar.gz"
diff --git a/user/nextcloud-client/APKBUILD b/user/nextcloud-client/APKBUILD
index 549383413..4a0317bce 100644
--- a/user/nextcloud-client/APKBUILD
+++ b/user/nextcloud-client/APKBUILD
@@ -1,46 +1,50 @@
# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=nextcloud-client
-pkgver=2.5.0_beta2
-_ver="${pkgver%_beta2}-beta2"
-pkgrel=0
+pkgver=2.6.4
+pkgrel=1
pkgdesc="Nextcloud desktop client"
url="https://github.com/nextcloud/desktop"
arch="all"
-options="!checkroot"
license="GPL-2.0+ AND LGPL-2.1+ AND Public-Domain AND MIT AND (Custom:Digia-Qt OR LGPL-2.1-only WITH Qt-LGPL-exception-1.1) AND (Custom:Digia-Qt OR LGPL-2.1-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only)"
depends=""
makedepends="cmake qt5-qttools-dev qtkeychain-dev zlib-dev
openssl-dev sqlite-dev qt5-qtsvg-dev"
subpackages="$pkgname-dev"
-source="$pkgname-$pkgver.tar.gz::https://github.com/nextcloud/desktop/archive/v$_ver.tar.gz
+source="$pkgname-$pkgver.tar.gz::https://github.com/nextcloud/desktop/archive/v$pkgver.tar.gz
no-webengine.patch
- openssl.patch"
-builddir="$srcdir/desktop-$_ver"
+ test-fix-include.patch
+ fix-missing-header.patch
+ "
+builddir="$srcdir/desktop-$pkgver"
build() {
- cd "$builddir"
cmake \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_LIBDIR=lib \
-DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_INSTALL_SYSCONFDIR="/etc/$pkgname" \
- -DNO_SHIBBOLETH=1 \
-DWITH_CRASHREPORTER=bool:OFF \
- -DUNIT_TESTING=bool:ON
+ -DUNIT_TESTING=bool:ON \
+ -DNO_SHIBBOLETH=bool:ON \
+ -DNO_WEBENGINE=bool:ON .
make
}
check() {
- cd "$builddir"
- make test
+ # ChunkingTestNg fails sporadically when run with the other tests based
+ # on a timeout, but runs fine on its own
+ make test || make test ARGS="--rerun-failed --output-on-failure"
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
+ cat > "$pkgdir"/etc/Nextcloud/Nextcloud.conf <<-EOF
+ [General]
+ skipUpdateCheck=true
+ EOF
}
-sha512sums="ed5ec8c0fd79d3f7f843ef1aefb9b94088b85dacca442388bc9a42e1ddbf1ee90482595135ffaffc85e40d223406964c903949ca1c2161fa0f6a2d6770a77cea nextcloud-client-2.5.0_beta2.tar.gz
-6bd83fdee02eabe7ae29fb1a677f62d4a416ec553a0f8c66b7544cafb9201dd7d8b04dc6fb21f447f6c1ece13b06f5d3cba57ac71b211e166607ef15350b3e57 no-webengine.patch
-e323a1074f8ac96667a420f076fdfc988e2fd97cdacd05d83ac54b467b567f5adbf635e7c4fb0414af0012b4016cc4c13441cb35ed3976bc970e514e81b65fd4 openssl.patch"
+sha512sums="849bf9bfa6a50342f6b58e805dc72ef342cb5f3e2e27d8f45d6a48759b1956dec194fb376b9a6b760df724f01eec3a22aadaa439f03e5166b1b2afb5454e40f1 nextcloud-client-2.6.4.tar.gz
+38dd89ca2bf67294187bb4d5c59cdf725ec3b502f23bf4a60210e85c66f6a7e00da0e0b41775bc138159bed300dc60a1f179d1d6ad3b7a27e1aadf4f0576f348 no-webengine.patch
+c14054e6dc228ca77a659371b3c151e0551477fce3a2678a54da4ba73adbcf972a78114c5649adc3dc813fb01b55bbb812620caac0bc0460519424c2caa6c81f test-fix-include.patch
+e5012f375a0446a532f1302f432921e7bb610fb1aebe99d074605ddc06e32e7fa261a4eb56e1bd20b52610830eb054147e95c35a105bf413cedb1ad2edd6e381 fix-missing-header.patch"
diff --git a/user/nextcloud-client/fix-missing-header.patch b/user/nextcloud-client/fix-missing-header.patch
new file mode 100644
index 000000000..2c659a630
--- /dev/null
+++ b/user/nextcloud-client/fix-missing-header.patch
@@ -0,0 +1,11 @@
+diff -ur a/src/libsync/bandwidthmanager.h b/src/libsync/bandwidthmanager.h
+--- a/src/libsync/bandwidthmanager.h 2022-05-28 11:32:35.440187894 +0000
++++ b/src/libsync/bandwidthmanager.h 2022-05-28 11:33:25.713188074 +0000
+@@ -19,6 +19,7 @@
+ #include <QLinkedList>
+ #include <QTimer>
+ #include <QIODevice>
++#include <QPainterPath>
+
+ namespace OCC {
+
diff --git a/user/nextcloud-client/no-webengine.patch b/user/nextcloud-client/no-webengine.patch
index d5beed35c..cbbfe2a72 100644
--- a/user/nextcloud-client/no-webengine.patch
+++ b/user/nextcloud-client/no-webengine.patch
@@ -1,1017 +1,375 @@
---- desktop-2.5.0-beta1/src/libsync/networkjobs.cpp 2018-08-02 16:32:56.000000000 -0400
-+++ desktop-2.5.0-beta1/src/libsync/networkjobs.cpp 2018-08-15 19:10:43.340595365 -0400
-@@ -922,7 +922,7 @@
-
- // WebViewFlow > OAuth > Shib > Basic
- if (_account->serverVersionInt() >= Account::makeServerVersion(12, 0, 0)) {
-- result = WebViewFlow;
-+ result = Basic;
- }
+From 61561d454fec726741a938b81149fa0e2d7db4d6 Mon Sep 17 00:00:00 2001
+From: Max Rees <maxcrees@me.com>
+Date: Mon, 24 Feb 2020 21:32:58 -0600
+Subject: [PATCH] Add support for compiling without QtWebEngine (webflow /
+ flow2 support)
+
+Signed-off-by: Max Rees <maxcrees@me.com>
+---
+ CMakeLists.txt | 7 +++++++
+ src/CMakeLists.txt | 6 +++++-
+ src/gui/CMakeLists.txt | 25 +++++++++++++++-------
+ src/gui/accountmanager.cpp | 2 ++
+ src/gui/creds/credentialsfactory.cpp | 4 ++++
+ src/gui/wizard/owncloudsetuppage.cpp | 4 ++++
+ src/gui/wizard/owncloudwizard.cpp | 31 +++++++++++++++++++++++++++-
+ src/gui/wizard/owncloudwizard.h | 6 ++++++
+ src/libsync/networkjobs.cpp | 8 +++++++
+ 9 files changed, 83 insertions(+), 10 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index f8e92e250..90719c222 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -167,6 +167,13 @@ if(NO_SHIBBOLETH)
+ add_definitions(-DNO_SHIBBOLETH=1)
+ endif()
- qCInfo(lcDetermineAuthTypeJob) << "Auth type for" << _account->davUrl() << "is" << result;
---- desktop-2.5.0-beta1/src/gui/creds/webflowcredentialsdialog.cpp 2018-08-02 16:32:56.000000000 -0400
-+++ /dev/null 2018-08-15 19:12:03.420596798 -0400
-@@ -1,49 +0,0 @@
--#include "webflowcredentialsdialog.h"
--
--#include <QVBoxLayout>
--#include <QLabel>
--
--#include "wizard/webview.h"
--
--namespace OCC {
--
--WebFlowCredentialsDialog::WebFlowCredentialsDialog(QWidget *parent)
-- : QDialog(parent)
--{
-- _layout = new QVBoxLayout(this);
--
-- //QString msg = tr("You have been logged out of %1 as user %2, please login again")
-- // .arg(_account->displayName(), _user);
-- _infoLabel = new QLabel();
-- _layout->addWidget(_infoLabel);
--
-- _webView = new WebView();
-- _layout->addWidget(_webView);
--
-- _errorLabel = new QLabel();
-- _errorLabel->hide();
-- _layout->addWidget(_errorLabel);
--
-- setLayout(_layout);
--
-- connect(_webView, &WebView::urlCatched, this, &WebFlowCredentialsDialog::urlCatched);
--}
--
--void WebFlowCredentialsDialog::setUrl(const QUrl &url) {
-- _webView->setUrl(url);
--}
--
--void WebFlowCredentialsDialog::setInfo(const QString &msg) {
-- _infoLabel->setText(msg);
--}
--
--void WebFlowCredentialsDialog::setError(const QString &error) {
-- if (error.isEmpty()) {
-- _errorLabel->hide();
-- } else {
-- _errorLabel->setText(error);
-- _errorLabel->show();
-- }
--}
--
--}
---- desktop-2.5.0-beta1/src/gui/creds/webflowcredentials.cpp 2018-08-02 16:32:56.000000000 -0400
-+++ /dev/null 2018-08-15 19:12:03.420596798 -0400
-@@ -1,258 +0,0 @@
--#include "webflowcredentials.h"
--
--#include "creds/httpcredentials.h"
--
--#include <QAuthenticator>
--#include <QNetworkAccessManager>
--#include <QNetworkReply>
--#include <QPointer>
--#include <QTimer>
--#include <keychain.h>
--#include <QDialog>
--#include <QVBoxLayout>
--#include <QLabel>
--
--#include "accessmanager.h"
--#include "account.h"
--#include "theme.h"
--#include "wizard/webview.h"
--#include "webflowcredentialsdialog.h"
--
--using namespace QKeychain;
--
--namespace OCC {
--
--Q_LOGGING_CATEGORY(lcWebFlowCredentials, "sync.credentials.webflow", QtInfoMsg)
--
--WebFlowCredentials::WebFlowCredentials()
-- : _ready(false),
-- _credentialsValid(false)
--{
--
--}
--
--WebFlowCredentials::WebFlowCredentials(const QString &user, const QString &password, const QSslCertificate &certificate, const QSslKey &key)
-- : _user(user)
-- , _password(password)
-- , _clientSslKey(key)
-- , _clientSslCertificate(certificate)
-- , _ready(true)
-- , _credentialsValid(true)
--{
--
--}
--
--QString WebFlowCredentials::authType() const {
-- return QString::fromLatin1("webflow");
--}
--
--QString WebFlowCredentials::user() const {
-- return _user;
--}
--
--QString WebFlowCredentials::password() const {
-- return _password;
--}
--
--QNetworkAccessManager *WebFlowCredentials::createQNAM() const {
-- qCInfo(lcWebFlowCredentials()) << "Get QNAM";
-- AccessManager *qnam = new AccessManager();
--
-- connect(qnam, &AccessManager::authenticationRequired, this, &WebFlowCredentials::slotAuthentication);
-- connect(qnam, &AccessManager::finished, this, &WebFlowCredentials::slotFinished);
--
-- return qnam;
--}
--
--bool WebFlowCredentials::ready() const {
-- return _ready;
--}
--
--void WebFlowCredentials::fetchFromKeychain() {
-- _wasFetched = true;
--
-- // Make sure we get the user fromt he config file
-- fetchUser();
--
-- if (ready()) {
-- emit fetched();
-- } else {
-- qCInfo(lcWebFlowCredentials()) << "Fetch from keyhchain!";
-- fetchFromKeychainHelper();
-- }
--}
--
--void WebFlowCredentials::askFromUser() {
-- _askDialog = new WebFlowCredentialsDialog();
--
-- QUrl url = _account->url();
-- QString path = url.path() + "/index.php/login/flow";
-- url.setPath(path);
-- _askDialog->setUrl(url);
--
-- QString msg = tr("You have been logged out of %1 as user %2. Please login again")
-- .arg(_account->displayName(), _user);
-- _askDialog->setInfo(msg);
--
-- _askDialog->show();
--
-- connect(_askDialog, &WebFlowCredentialsDialog::urlCatched, this, &WebFlowCredentials::slotAskFromUserCredentialsProvided);
--
-- qCWarning(lcWebFlowCredentials()) << "User needs to reauth!";
--}
--
--void WebFlowCredentials::slotAskFromUserCredentialsProvided(const QString &user, const QString &pass, const QString &host) {
-- Q_UNUSED(host);
--
-- if (_user != user) {
-- qCInfo(lcWebFlowCredentials()) << "Authed with the wrong user!";
--
-- QString msg = tr("Please login with the user: %1")
-- .arg(_user);
-- _askDialog->setError(msg);
--
-- QUrl url = _account->url();
-- QString path = url.path() + "/index.php/login/flow";
-- url.setPath(path);
-- _askDialog->setUrl(url);
--
-- return;
-- }
--
-- qCInfo(lcWebFlowCredentials()) << "Obtained a new password";
--
-- _password = pass;
-- _ready = true;
-- _credentialsValid = true;
-- persist();
-- emit asked();
--
-- _askDialog->close();
-- delete _askDialog;
-- _askDialog = NULL;
--}
--
--
--bool WebFlowCredentials::stillValid(QNetworkReply *reply) {
-- qCWarning(lcWebFlowCredentials()) << "Still valid?";
-- qCWarning(lcWebFlowCredentials()) << reply->error();
-- qCWarning(lcWebFlowCredentials()) << reply->errorString();
-- return (reply->error() != QNetworkReply::AuthenticationRequiredError);
--}
--
--void WebFlowCredentials::persist() {
-- if (_user.isEmpty()) {
-- // We don't even have a user nothing to see here move along
-- return;
-- }
--
-- _account->setCredentialSetting("user", _user);
-- _account->wantsAccountSaved(_account);
--
-- //TODO: Add ssl cert and key storing
-- WritePasswordJob *job = new WritePasswordJob(Theme::instance()->appName());
-- job->setInsecureFallback(false);
-- job->setKey(keychainKey(_account->url().toString(), _user, _account->id()));
-- job->setTextData(_password);
-- job->start();
--}
--
--void WebFlowCredentials::invalidateToken() {
-- // clear the session cookie.
-- _account->clearCookieJar();
--
-- // let QNAM forget about the password
-- // This needs to be done later in the event loop because we might be called (directly or
-- // indirectly) from QNetworkAccessManagerPrivate::authenticationRequired, which itself
-- // is a called from a BlockingQueuedConnection from the Qt HTTP thread. And clearing the
-- // cache needs to synchronize again with the HTTP thread.
-- QTimer::singleShot(0, _account, &Account::clearQNAMCache);
--}
--
--void WebFlowCredentials::forgetSensitiveData(){
-- _password = QString();
-- _ready = false;
--
-- fetchUser();
--
-- const QString kck = keychainKey(_account->url().toString(), _user, _account->id());
-- if (kck.isEmpty()) {
-- qCWarning(lcWebFlowCredentials()) << "InvalidateToken: User is empty, bailing out!";
-- return;
-- }
--
-- DeletePasswordJob *job = new DeletePasswordJob(Theme::instance()->appName());
-- job->setInsecureFallback(false);
-- job->setKey(kck);
-- job->start();
--
-- invalidateToken();
--}
--
--void WebFlowCredentials::setAccount(Account *account) {
-- AbstractCredentials::setAccount(account);
-- if (_user.isEmpty()) {
-- fetchUser();
-- }
--}
--
--QString WebFlowCredentials::fetchUser() {
-- _user = _account->credentialSetting("user").toString();
-- return _user;
--}
--
--void WebFlowCredentials::slotAuthentication(QNetworkReply *reply, QAuthenticator *authenticator) {
-- Q_UNUSED(reply);
--
-- if (!_ready) {
-- return;
-- }
--
-- if (_credentialsValid == false) {
-- return;
-- }
--
-- qCWarning(lcWebFlowCredentials()) << "Requires authentication";
--
-- authenticator->setUser(_user);
-- authenticator->setPassword(_password);
-- _credentialsValid = false;
--}
--
--void WebFlowCredentials::slotFinished(QNetworkReply *reply) {
-- qCInfo(lcWebFlowCredentials()) << "request finished";
--
-- if (reply->error() == QNetworkReply::NoError) {
-- _credentialsValid = true;
-- }
--}
--
--void WebFlowCredentials::fetchFromKeychainHelper() {
-- const QString kck = keychainKey(
-- _account->url().toString(),
-- _user,
-- _account->id());
--
-- ReadPasswordJob *job = new ReadPasswordJob(Theme::instance()->appName());
-- job->setInsecureFallback(false);
-- job->setKey(kck);
-- connect(job, &Job::finished, this, &WebFlowCredentials::slotReadPasswordJobDone);
-- job->start();
--}
--
--void WebFlowCredentials::slotReadPasswordJobDone(Job *incomingJob) {
-- QKeychain::ReadPasswordJob *job = static_cast<ReadPasswordJob *>(incomingJob);
-- QKeychain::Error error = job->error();
--
-- if (error == QKeychain::NoError) {
-- _password = job->textData();
-- _ready = true;
-- _credentialsValid = true;
-- } else {
-- _ready = false;
-- }
--
-- emit fetched();
--}
--
--}
---- desktop-2.5.0-beta1/src/gui/creds/webflowcredentialsdialog.h 2018-08-02 16:32:56.000000000 -0400
-+++ /dev/null 2018-08-15 19:12:03.420596798 -0400
-@@ -1,36 +0,0 @@
--#ifndef WEBFLOWCREDENTIALSDIALOG_H
--#define WEBFLOWCREDENTIALSDIALOG_H
--
--#include <QDialog>
--#include <QUrl>
--
--class QLabel;
--class QVBoxLayout;
--
--namespace OCC {
--
--class WebView;
--
--class WebFlowCredentialsDialog : public QDialog
--{
-- Q_OBJECT
--public:
-- WebFlowCredentialsDialog(QWidget *parent = 0);
--
-- void setUrl(const QUrl &url);
-- void setInfo(const QString &msg);
-- void setError(const QString &error);
--
--signals:
-- void urlCatched(const QString user, const QString pass, const QString host);
--
--private:
-- WebView *_webView;
-- QLabel *_errorLabel;
-- QLabel *_infoLabel;
-- QVBoxLayout *_layout;
--};
--
--}
--
--#endif // WEBFLOWCREDENTIALSDIALOG_H
---- desktop-2.5.0-beta1/src/gui/creds/credentialsfactory.cpp 2018-08-02 16:32:56.000000000 -0400
-+++ desktop-2.5.0-beta1/src/gui/creds/credentialsfactory.cpp 2018-08-15 19:29:27.240615471 -0400
-@@ -21,7 +21,6 @@
- #ifndef NO_SHIBBOLETH
- #include "creds/shibbolethcredentials.h"
- #endif
--#include "creds/webflowcredentials.h"
++# Disable webengine-based components
++option(NO_WEBENGINE "Build without webflow / flow2 support so QtWebEngine isn't required" OFF)
++if(NO_WEBENGINE)
++ message("Compiling without webengine")
++ add_definitions(-DNO_WEBENGINE=1)
++endif()
++
+ if(APPLE)
+ set( SOCKETAPI_TEAM_IDENTIFIER_PREFIX "" CACHE STRING "SocketApi prefix (including a following dot) that must match the codesign key's TeamIdentifier/Organizational Unit" )
+ endif()
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index 9f854b006..881daec8e 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -4,11 +4,15 @@ endif()
- namespace OCC {
+ set(synclib_NAME ${APPLICATION_EXECUTABLE}sync)
-@@ -40,8 +39,6 @@
- } else if (type == "shibboleth") {
- return new ShibbolethCredentials;
- #endif
-- } else if (type == "webflow") {
-- return new WebFlowCredentials;
- } else {
- qCWarning(lcGuiCredentials, "Unknown credentials type: %s", qPrintable(type));
- return new DummyCredentials;
---- desktop-2.5.0-beta1/src/gui/creds/webflowcredentials.h 2018-08-02 16:32:56.000000000 -0400
-+++ /dev/null 2018-08-15 19:12:03.420596798 -0400
-@@ -1,79 +0,0 @@
--#ifndef WEBFLOWCREDENTIALS_H
--#define WEBFLOWCREDENTIALS_H
--
--#include <QSslCertificate>
--#include <QSslKey>
--
--#include "creds/abstractcredentials.h"
--
--class QDialog;
--class QLabel;
--class QNetworkReply;
--class QAuthenticator;
--
--namespace QKeychain {
-- class Job;
--}
--
--namespace OCC {
--
--class WebFlowCredentialsDialog;
--
--class WebFlowCredentials : public AbstractCredentials
--{
-- Q_OBJECT
--public:
-- explicit WebFlowCredentials();
-- WebFlowCredentials(const QString &user, const QString &password, const QSslCertificate &certificate = QSslCertificate(), const QSslKey &key = QSslKey());
--
-- QString authType() const override;
-- QString user() const override;
-- QString password() const;
-- QNetworkAccessManager *createQNAM() const override;
--
-- bool ready() const override;
--
-- void fetchFromKeychain() override;
-- void askFromUser() override;
--
-- bool stillValid(QNetworkReply *reply) override;
-- void persist() override;
-- void invalidateToken() override;
-- void forgetSensitiveData() override;
--
-- // To fetch the user name as early as possible
-- void setAccount(Account *account) override;
--
--private slots:
-- void slotAuthentication(QNetworkReply *reply, QAuthenticator *authenticator);
-- void slotFinished(QNetworkReply *reply);
--
-- void slotReadPasswordJobDone(QKeychain::Job *incomingJob);
-- void slotAskFromUserCredentialsProvided(const QString &user, const QString &pass, const QString &host);
--
--private:
-- /** Reads data from keychain locations
-- *
-- * Goes through
-- * slotReadClientCertPEMJobDone to
-- * slotReadClientCertPEMJobDone to
-- * slotReadJobDone
-- */
-- void fetchFromKeychainHelper();
--
-- QString fetchUser();
--
-- QString _user;
-- QString _password;
-- QSslKey _clientSslKey;
-- QSslCertificate _clientSslCertificate;
--
-- bool _ready;
-- bool _credentialsValid;
--
-- WebFlowCredentialsDialog *_askDialog;
--};
--
--}
--
--#endif // WEBFLOWCREDENTIALS_H
---- desktop-2.5.0-beta1/src/gui/CMakeLists.txt 2018-08-02 16:32:56.000000000 -0400
-+++ desktop-2.5.0-beta1/src/gui/CMakeLists.txt 2018-08-15 19:28:53.640614870 -0400
-@@ -41,7 +41,6 @@
- wizard/owncloudoauthcredspage.ui
- wizard/owncloudsetupnocredspage.ui
- wizard/owncloudwizardresultpage.ui
-- wizard/webview.ui
- )
+-find_package(Qt5 5.6 COMPONENTS Core Network Xml Concurrent WebEngineWidgets WebEngine REQUIRED)
++find_package(Qt5 5.6 COMPONENTS Core Network Xml Concurrent REQUIRED)
+ if (Qt5Core_VERSION VERSION_LESS 5.9.0)
+ message(STATUS "For HTTP/2 support, compile with Qt 5.9 or higher.")
+ endif()
- set(client_SRCS
-@@ -104,8 +103,6 @@
++if(NOT NO_WEBENGINE)
++ find_package(Qt5 5.6 COMPONENTS WebEngineWidgets WebEngine REQUIRED)
++endif()
++
+ if(NOT TOKEN_AUTH_ONLY)
+ find_package(Qt5Keychain REQUIRED)
+ endif()
+diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt
+index 4372a9f23..d62f23d1e 100644
+--- a/src/gui/CMakeLists.txt
++++ b/src/gui/CMakeLists.txt
+@@ -108,24 +108,17 @@ set(client_SRCS
creds/credentialsfactory.cpp
creds/httpcredentialsgui.cpp
creds/oauth.cpp
+- creds/flow2auth.cpp
+ creds/keychainchunk.cpp
- creds/webflowcredentials.cpp
- creds/webflowcredentialsdialog.cpp
wizard/postfixlineedit.cpp
wizard/abstractcredswizardpage.cpp
wizard/owncloudadvancedsetuppage.cpp
-@@ -116,8 +113,6 @@
+ wizard/owncloudconnectionmethoddialog.cpp
+ wizard/owncloudhttpcredspage.cpp
+ wizard/owncloudoauthcredspage.cpp
+- wizard/flow2authcredspage.cpp
+- wizard/flow2authwidget.cpp
+ wizard/owncloudsetuppage.cpp
wizard/owncloudwizardcommon.cpp
wizard/owncloudwizard.cpp
wizard/owncloudwizardresultpage.cpp
- wizard/webviewpage.cpp
- wizard/webview.cpp
+ wizard/slideshow.cpp
)
- IF(NOT NO_SHIBBOLETH)
-@@ -290,7 +290,7 @@
+@@ -138,6 +131,18 @@ IF(NOT NO_SHIBBOLETH)
+ )
+ endif()
+
++IF(NOT NO_WEBENGINE)
++ list(APPEND client_SRCS
++ creds/flow2auth.cpp
++ creds/webflowcredentials.cpp
++ creds/webflowcredentialsdialog.cpp
++ wizard/flow2authcredspage.cpp
++ wizard/flow2authwidget.cpp
++ wizard/webviewpage.cpp
++ wizard/webview.cpp
++ )
++endif()
++
+ set(updater_SRCS
+ updater/ocupdater.cpp
+ updater/updateinfo.cpp
+@@ -298,7 +303,11 @@ else()
endif()
add_library(updater STATIC ${updater_SRCS})
-target_link_libraries(updater ${synclib_NAME} Qt5::Widgets Qt5::Network Qt5::Xml Qt5::WebEngineWidgets)
-+target_link_libraries(updater ${synclib_NAME} Qt5::Widgets Qt5::Network Qt5::Xml)
++if(NOT NO_WEBENGINE)
++ target_link_libraries(updater ${synclib_NAME} Qt5::Widgets Qt5::Network Qt5::Xml Qt5::WebEngineWidgets)
++else()
++ target_link_libraries(updater ${synclib_NAME} Qt5::Widgets Qt5::Network Qt5::Xml)
++endif()
target_include_directories(updater PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
set_target_properties( ${APPLICATION_EXECUTABLE} PROPERTIES
---- desktop-2.5.0-beta2/src/gui/wizard/webview.cpp 2018-08-24 12:54:42.000000000 +0000
-+++ /dev/null 2018-10-03 06:10:44.230254545 +0000
-@@ -1,162 +0,0 @@
--#include "webview.h"
--
--#include <QWebEnginePage>
--#include <QWebEngineProfile>
--#include <QWebEngineUrlRequestInterceptor>
--#include <QWebEngineUrlRequestJob>
--#include <QWebEngineUrlSchemeHandler>
--#include <QWebEngineView>
--#include <QDesktopServices>
--#include <QProgressBar>
--#include <QLoggingCategory>
--#include <QLocale>
--
--#include "common/utility.h"
--
--namespace OCC {
--
--Q_LOGGING_CATEGORY(lcWizardWebiew, "gui.wizard.webview", QtInfoMsg)
--
--
--class WebViewPageUrlRequestInterceptor : public QWebEngineUrlRequestInterceptor
--{
-- Q_OBJECT
--public:
-- WebViewPageUrlRequestInterceptor(QObject *parent = 0);
-- void interceptRequest(QWebEngineUrlRequestInfo &info);
--};
--
--class WebViewPageUrlSchemeHandler : public QWebEngineUrlSchemeHandler
--{
-- Q_OBJECT
--public:
-- WebViewPageUrlSchemeHandler(QObject *parent = 0);
-- void requestStarted(QWebEngineUrlRequestJob *request);
--
--Q_SIGNALS:
-- void urlCatched(QString user, QString pass, QString host);
--};
--
--class WebEnginePage : public QWebEnginePage {
--public:
-- WebEnginePage(QWebEngineProfile *profile, QObject* parent = nullptr);
-- QWebEnginePage * createWindow(QWebEnginePage::WebWindowType type) override;
--};
--
--// We need a separate class here, since we cannot simply return the same WebEnginePage object
--// this leads to a strage segfault somewhere deep inside of the QWebEngine code
--class ExternalWebEnginePage : public QWebEnginePage {
--public:
-- ExternalWebEnginePage(QWebEngineProfile *profile, QObject* parent = nullptr);
-- bool acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame) override;
--};
--
--WebView::WebView(QWidget *parent)
-- : QWidget(parent),
-- _ui()
--{
-- _ui.setupUi(this);
--
-- _webview = new QWebEngineView(this);
-- _profile = new QWebEngineProfile(this);
-- _page = new WebEnginePage(_profile);
-- _interceptor = new WebViewPageUrlRequestInterceptor(this);
-- _schemeHandler = new WebViewPageUrlSchemeHandler(this);
--
-- const QString userAgent(Utility::userAgentString());
-- _profile->setHttpUserAgent(userAgent);
-- QWebEngineProfile::defaultProfile()->setHttpUserAgent(userAgent);
-- _profile->setRequestInterceptor(_interceptor);
-- _profile->installUrlSchemeHandler("nc", _schemeHandler);
--
-- /*
-- * Set a proper accept langauge to the language of the client
-- * code from: http://code.qt.io/cgit/qt/qtbase.git/tree/src/network/access/qhttpnetworkconnection.cpp
-- */
-- {
-- QString systemLocale = QLocale::system().name().replace(QChar::fromLatin1('_'),QChar::fromLatin1('-'));
-- QString acceptLanguage;
-- if (systemLocale == QLatin1String("C")) {
-- acceptLanguage = QString::fromLatin1("en,*");
-- } else if (systemLocale.startsWith(QLatin1String("en-"))) {
-- acceptLanguage = systemLocale + QLatin1String(",*");
-- } else {
-- acceptLanguage = systemLocale + QLatin1String(",en,*");
-- }
-- _profile->setHttpAcceptLanguage(acceptLanguage);
-- }
--
-- _webview->setPage(_page);
-- _ui.verticalLayout->addWidget(_webview);
--
-- connect(_webview, &QWebEngineView::loadProgress, _ui.progressBar, &QProgressBar::setValue);
-- connect(_schemeHandler, &WebViewPageUrlSchemeHandler::urlCatched, this, &WebView::urlCatched);
--}
--
--void WebView::setUrl(const QUrl &url) {
-- _page->setUrl(url);
--}
--
--WebViewPageUrlRequestInterceptor::WebViewPageUrlRequestInterceptor(QObject *parent)
-- : QWebEngineUrlRequestInterceptor(parent) {
--
--}
--
--void WebViewPageUrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo &info) {
-- info.setHttpHeader("OCS-APIREQUEST", "true");
--}
--
--WebViewPageUrlSchemeHandler::WebViewPageUrlSchemeHandler(QObject *parent)
-- : QWebEngineUrlSchemeHandler(parent) {
--
--}
--
--void WebViewPageUrlSchemeHandler::requestStarted(QWebEngineUrlRequestJob *request) {
-- QUrl url = request->requestUrl();
--
-- QString path = url.path().mid(1);
-- QStringList parts = path.split("&");
--
-- QString server;
-- QString user;
-- QString password;
--
-- for (QString part : parts) {
-- if (part.startsWith("server:")) {
-- server = part.mid(7);
-- } else if (part.startsWith("user:")) {
-- user = part.mid(5);
-- } else if (part.startsWith("password:")) {
-- password = part.mid(9);
-- }
-- }
--
-- qCInfo(lcWizardWebiew()) << "Got user: " << user << ", server: " << server;
--
-- emit urlCatched(user, password, server);
--}
--
--
--WebEnginePage::WebEnginePage(QWebEngineProfile *profile, QObject* parent) : QWebEnginePage(profile, parent) {
--
--}
--
--QWebEnginePage * WebEnginePage::createWindow(QWebEnginePage::WebWindowType type) {
-- ExternalWebEnginePage *view = new ExternalWebEnginePage(this->profile());
-- return view;
--}
--
--ExternalWebEnginePage::ExternalWebEnginePage(QWebEngineProfile *profile, QObject* parent) : QWebEnginePage(profile, parent) {
--
--}
--
--
--bool ExternalWebEnginePage::acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame)
--{
-- QDesktopServices::openUrl(url);
-- return false;
--}
--
--}
--
--#include "webview.moc"
---- desktop-2.5.0-beta1/src/gui/wizard/webviewpage.cpp 2018-08-02 16:32:56.000000000 -0400
-+++ /dev/null 2018-08-15 19:06:30.250590838 -0400
-@@ -1,73 +0,0 @@
--#include "webviewpage.h"
--
--#include <QWebEngineUrlRequestJob>
--#include <QProgressBar>
--#include <QVBoxLayout>
--
--#include "owncloudwizard.h"
--#include "creds/webflowcredentials.h"
--#include "webview.h"
--#include "account.h"
--
--namespace OCC {
--
--Q_LOGGING_CATEGORY(lcWizardWebiewPage, "gui.wizard.webviewpage", QtInfoMsg)
--
--
--WebViewPage::WebViewPage(QWidget *parent)
-- : AbstractCredentialsWizardPage()
--{
-- _ocWizard = qobject_cast<OwncloudWizard *>(parent);
--
-- qCInfo(lcWizardWebiewPage()) << "Time for a webview!";
-- _webView = new WebView(this);
--
-- QVBoxLayout *layout = new QVBoxLayout(this);
-- layout->addWidget(_webView);
-- setLayout(layout);
--
-- connect(_webView, &WebView::urlCatched, this, &WebViewPage::urlCatched);
--}
--
--void WebViewPage::initializePage() {
-- QString url;
-- if (_ocWizard->registration()) {
-- url = "https://nextcloud.com/register";
-- } else {
-- url = _ocWizard->ocUrl();
-- url += "/index.php/login/flow";
-- }
-- qCInfo(lcWizardWebiewPage()) << "Url to auth at: " << url;
-- _webView->setUrl(QUrl(url));
--}
--
--int WebViewPage::nextId() const {
-- return WizardCommon::Page_AdvancedSetup;
--}
--
--bool WebViewPage::isComplete() const {
-- return false;
--}
--
--AbstractCredentials* WebViewPage::getCredentials() const {
-- return new WebFlowCredentials(_user, _pass, _ocWizard->_clientSslCertificate, _ocWizard->_clientSslKey);
--}
--
--void WebViewPage::setConnected() {
-- qCInfo(lcWizardWebiewPage()) << "YAY! we are connected!";
--}
--
--void WebViewPage::urlCatched(QString user, QString pass, QString host) {
-- qCInfo(lcWizardWebiewPage()) << "Got user: " << user << ", server: " << host;
--
-- _user = user;
-- _pass = pass;
--
-- AccountPtr account = _ocWizard->account();
-- account->setUrl(host);
--
-- qCInfo(lcWizardWebiewPage()) << "URL: " << field("OCUrl").toString();
-- emit connectToOCUrl(host);
--}
--
--}
---- desktop-2.5.0-beta2/src/gui/wizard/webview.h 2018-08-24 12:54:42.000000000 +0000
-+++ /dev/null 2018-10-03 06:11:27.640255322 +0000
-@@ -1,42 +0,0 @@
--#ifndef WEBVIEW_H
--#define WEBVIEW_H
--
--#include <QUrl>
--#include <QWidget>
--
--#include "ui_webview.h"
--
--class QWebEngineView;
--class QWebEngineProfile;
--class QWebEnginePage;
--
--namespace OCC {
--
--class WebViewPageUrlRequestInterceptor;
--class WebViewPageUrlSchemeHandler;
--class WebEnginePage;
--
--class WebView : public QWidget
--{
-- Q_OBJECT
--public:
-- WebView(QWidget *parent = 0);
-- void setUrl(const QUrl &url);
--
--signals:
-- void urlCatched(const QString user, const QString pass, const QString host);
--
--private:
-- Ui_WebView _ui;
--
-- QWebEngineView *_webview;
-- QWebEngineProfile *_profile;
-- WebEnginePage *_page;
--
-- WebViewPageUrlRequestInterceptor *_interceptor;
-- WebViewPageUrlSchemeHandler *_schemeHandler;
--};
--
--}
--
--#endif // WEBVIEW_H
---- desktop-2.5.0-beta1/src/gui/wizard/webviewpage.h 2018-08-02 16:32:56.000000000 -0400
-+++ /dev/null 2018-08-15 19:25:56.010611692 -0400
-@@ -1,41 +0,0 @@
--#ifndef WEBVIEWPAGE_H
--#define WEBVIEWPAGE_H
--
--#include "wizard/abstractcredswizardpage.h"
--
--namespace OCC {
--
--class AbstractCredentials;
--class OwncloudWizard;
--class WebView;
--
--class WebViewPage : public AbstractCredentialsWizardPage
--{
-- Q_OBJECT
--public:
-- WebViewPage(QWidget *parent = 0);
--
-- void initializePage() Q_DECL_OVERRIDE;
-- int nextId() const Q_DECL_OVERRIDE;
-- bool isComplete() const;
--
-- AbstractCredentials* getCredentials() const;
-- void setConnected();
--
--signals:
-- void connectToOCUrl(const QString&);
--
--private slots:
-- void urlCatched(QString user, QString pass, QString host);
--
--private:
-- OwncloudWizard *_ocWizard;
-- WebView *_webView;
--
-- QString _user;
-- QString _pass;
--};
--
--}
--
--#endif // WEBVIEWPAGE_H
---- desktop-2.5.0-beta1/src/gui/wizard/owncloudsetuppage.cpp 2018-08-02 16:32:56.000000000 -0400
-+++ desktop-2.5.0-beta1/src/gui/wizard/owncloudsetuppage.cpp 2018-08-15 19:23:33.100609136 -0400
-@@ -161,7 +161,7 @@
+diff --git a/src/gui/accountmanager.cpp b/src/gui/accountmanager.cpp
+index eec375180..2d7b0bc30 100644
+--- a/src/gui/accountmanager.cpp
++++ b/src/gui/accountmanager.cpp
+@@ -253,6 +253,7 @@ AccountPtr AccountManager::loadAccountHelper(QSettings &settings)
+ acc->setUrl(urlConfig.toUrl());
+ }
+
++#ifndef NO_WEBENGINE
+ // Migrate to webflow
+ if (authType == QLatin1String("http")) {
+ authType = "webflow";
+@@ -266,6 +267,7 @@ AccountPtr AccountManager::loadAccountHelper(QSettings &settings)
+ settings.remove(key);
+ }
+ }
++#endif
+
+ qCInfo(lcAccountManager) << "Account for" << acc->url() << "using auth type" << authType;
+
+diff --git a/src/gui/creds/credentialsfactory.cpp b/src/gui/creds/credentialsfactory.cpp
+index 6062f70eb..723196d08 100644
+--- a/src/gui/creds/credentialsfactory.cpp
++++ b/src/gui/creds/credentialsfactory.cpp
+@@ -21,7 +21,9 @@
+ #ifndef NO_SHIBBOLETH
+ #include "creds/shibbolethcredentials.h"
+ #endif
++#ifndef NO_WEBENGINE
+ #include "creds/webflowcredentials.h"
++#endif
+
+ namespace OCC {
+
+@@ -40,8 +42,10 @@ namespace CredentialsFactory {
+ } else if (type == "shibboleth") {
+ return new ShibbolethCredentials;
+ #endif
++#ifndef NO_WEBENGINE
+ } else if (type == "webflow") {
+ return new WebFlowCredentials;
++#endif
+ } else {
+ qCWarning(lcGuiCredentials, "Unknown credentials type: %s", qPrintable(type));
+ return new DummyCredentials;
+diff --git a/src/gui/wizard/owncloudsetuppage.cpp b/src/gui/wizard/owncloudsetuppage.cpp
+index 11b1fc80c..30df7cc7f 100644
+--- a/src/gui/wizard/owncloudsetuppage.cpp
++++ b/src/gui/wizard/owncloudsetuppage.cpp
+@@ -144,7 +144,11 @@ void OwncloudSetupPage::slotLogin()
void OwncloudSetupPage::slotGotoProviderList()
{
_ocWizard->setRegistration(true);
-- _ocWizard->setAuthType(DetermineAuthTypeJob::AuthType::WebViewFlow);
++#ifndef NO_WEBENGINE
+ _ocWizard->setAuthType(DetermineAuthTypeJob::AuthType::WebViewFlow);
++#else
+ _ocWizard->setAuthType(DetermineAuthTypeJob::AuthType::Basic);
++#endif
_authTypeKnown = true;
_checking = false;
emit completeChanged();
-@@ -278,8 +278,6 @@
- return WizardCommon::Page_OAuthCreds;
- case DetermineAuthTypeJob::Shibboleth:
- return WizardCommon::Page_ShibbolethCreds;
-- case DetermineAuthTypeJob::WebViewFlow:
-- return WizardCommon::Page_WebView;
- }
- return WizardCommon::Page_HttpCreds;
- }
---- desktop-2.5.0-beta1/src/gui/wizard/webview.ui 2018-08-02 16:32:56.000000000 -0400
-+++ /dev/null 2018-08-15 19:24:43.320610392 -0400
-@@ -1,80 +0,0 @@
--<?xml version="1.0" encoding="UTF-8"?>
--<ui version="4.0">
-- <class>WebView</class>
-- <widget class="QWidget" name="WebView">
-- <property name="geometry">
-- <rect>
-- <x>0</x>
-- <y>0</y>
-- <width>800</width>
-- <height>700</height>
-- </rect>
-- </property>
-- <property name="sizePolicy">
-- <sizepolicy hsizetype="Minimum" vsizetype="Maximum">
-- <horstretch>0</horstretch>
-- <verstretch>0</verstretch>
-- </sizepolicy>
-- </property>
-- <property name="minimumSize">
-- <size>
-- <width>800</width>
-- <height>650</height>
-- </size>
-- </property>
-- <property name="windowTitle">
-- <string>Form</string>
-- </property>
-- <layout class="QGridLayout" name="gridLayout">
-- <property name="leftMargin">
-- <number>0</number>
-- </property>
-- <property name="topMargin">
-- <number>0</number>
-- </property>
-- <property name="rightMargin">
-- <number>0</number>
-- </property>
-- <property name="bottomMargin">
-- <number>0</number>
-- </property>
-- <item row="1" column="0">
-- <layout class="QVBoxLayout" name="verticalLayout">
-- <property name="spacing">
-- <number>0</number>
-- </property>
-- <item>
-- <widget class="QProgressBar" name="progressBar">
-- <property name="maximumSize">
-- <size>
-- <width>16777215</width>
-- <height>5</height>
-- </size>
-- </property>
-- <property name="styleSheet">
-- <string notr="true">QProgressBar::chunk {
-- background-color: rgba(0, 130, 201, 255);
--}</string>
-- </property>
-- <property name="value">
-- <number>0</number>
-- </property>
-- <property name="textVisible">
-- <bool>false</bool>
-- </property>
-- </widget>
-- </item>
-- <item>
-- <layout class="QHBoxLayout" name="resultLayout">
-- <property name="spacing">
-- <number>0</number>
-- </property>
-- </layout>
-- </item>
-- </layout>
-- </item>
-- </layout>
-- </widget>
-- <resources/>
-- <connections/>
--</ui>
---- desktop-2.5.0-beta1/src/gui/wizard/owncloudwizard.h 2018-08-02 16:32:56.000000000 -0400
-+++ desktop-2.5.0-beta1/src/gui/wizard/owncloudwizard.h 2018-08-15 19:22:00.430607478 -0400
-@@ -39,7 +39,6 @@
- class OwncloudWizardResultPage;
- class AbstractCredentials;
- class AbstractCredentialsWizardPage;
--class WebViewPage;
-
- /**
- * @brief The OwncloudWizard class
-@@ -106,7 +105,6 @@
- OwncloudAdvancedSetupPage *_advancedSetupPage;
- OwncloudWizardResultPage *_resultPage;
- AbstractCredentialsWizardPage *_credentialsPage;
-- WebViewPage *_webViewPage;
-
- QStringList _setupLog;
-
---- desktop-2.5.0-beta1/src/gui/wizard/owncloudwizard.cpp 2018-08-02 16:32:56.000000000 -0400
-+++ desktop-2.5.0-beta1/src/gui/wizard/owncloudwizard.cpp 2018-08-15 19:04:35.670588788 -0400
-@@ -26,7 +26,6 @@
+diff --git a/src/gui/wizard/owncloudwizard.cpp b/src/gui/wizard/owncloudwizard.cpp
+index 2076136ff..8cb91e250 100644
+--- a/src/gui/wizard/owncloudwizard.cpp
++++ b/src/gui/wizard/owncloudwizard.cpp
+@@ -27,8 +27,10 @@
#endif
#include "wizard/owncloudadvancedsetuppage.h"
#include "wizard/owncloudwizardresultpage.h"
--#include "wizard/webviewpage.h"
++#ifndef NO_WEBENGINE
+ #include "wizard/webviewpage.h"
+ #include "wizard/flow2authcredspage.h"
++#endif
#include "QProgressIndicator.h"
-@@ -51,7 +50,6 @@
+@@ -47,14 +49,18 @@ OwncloudWizard::OwncloudWizard(QWidget *parent)
+ , _setupPage(new OwncloudSetupPage(this))
+ , _httpCredsPage(new OwncloudHttpCredsPage(this))
+ , _browserCredsPage(new OwncloudOAuthCredsPage)
++#ifndef NO_WEBENGINE
+ , _flow2CredsPage(new Flow2AuthCredsPage)
++#endif
+ #ifndef NO_SHIBBOLETH
+ , _shibbolethCredsPage(new OwncloudShibbolethCredsPage)
+ #endif
, _advancedSetupPage(new OwncloudAdvancedSetupPage)
, _resultPage(new OwncloudWizardResultPage)
- , _credentialsPage(0)
-- , _webViewPage(new WebViewPage(this))
+ , _credentialsPage(nullptr)
++#ifndef NO_WEBENGINE
+ , _webViewPage(new WebViewPage(this))
++#endif
, _setupLog()
, _registration(false)
{
-@@ -64,7 +62,6 @@
+@@ -62,13 +68,17 @@ OwncloudWizard::OwncloudWizard(QWidget *parent)
+ setPage(WizardCommon::Page_ServerSetup, _setupPage);
+ setPage(WizardCommon::Page_HttpCreds, _httpCredsPage);
+ setPage(WizardCommon::Page_OAuthCreds, _browserCredsPage);
++#ifndef NO_WEBENGINE
+ setPage(WizardCommon::Page_Flow2AuthCreds, _flow2CredsPage);
++#endif
+ #ifndef NO_SHIBBOLETH
+ setPage(WizardCommon::Page_ShibbolethCreds, _shibbolethCredsPage);
#endif
setPage(WizardCommon::Page_AdvancedSetup, _advancedSetupPage);
setPage(WizardCommon::Page_Result, _resultPage);
-- setPage(WizardCommon::Page_WebView, _webViewPage);
++#ifndef NO_WEBENGINE
+ setPage(WizardCommon::Page_WebView, _webViewPage);
++#endif
connect(this, &QDialog::finished, this, &OwncloudWizard::basicSetupFinished);
-@@ -79,7 +76,6 @@
+@@ -80,11 +90,15 @@ OwncloudWizard::OwncloudWizard(QWidget *parent)
+ connect(_setupPage, &OwncloudSetupPage::determineAuthType, this, &OwncloudWizard::determineAuthType);
+ connect(_httpCredsPage, &OwncloudHttpCredsPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
+ connect(_browserCredsPage, &OwncloudOAuthCredsPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
++#ifndef NO_WEBENGINE
+ connect(_flow2CredsPage, &Flow2AuthCredsPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
++#endif
#ifndef NO_SHIBBOLETH
connect(_shibbolethCredsPage, &OwncloudShibbolethCredsPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
#endif
-- connect(_webViewPage, &WebViewPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
++#ifndef NO_WEBENGINE
+ connect(_webViewPage, &WebViewPage::connectToOCUrl, this, &OwncloudWizard::connectToOCUrl);
++#endif
connect(_advancedSetupPage, &OwncloudAdvancedSetupPage::createLocalAndRemoteFolders,
this, &OwncloudWizard::createLocalAndRemoteFolders);
connect(this, &QWizard::customButtonClicked, this, &OwncloudWizard::skipFolderConfiguration);
-@@ -168,10 +164,6 @@
+@@ -106,12 +120,16 @@ OwncloudWizard::OwncloudWizard(QWidget *parent)
+ // Connect styleChanged events to our widgets, so they can adapt (Dark-/Light-Mode switching)
+ connect(this, &OwncloudWizard::styleChanged, _setupPage, &OwncloudSetupPage::slotStyleChanged);
+ connect(this, &OwncloudWizard::styleChanged, _advancedSetupPage, &OwncloudAdvancedSetupPage::slotStyleChanged);
++#ifndef NO_WEBENGINE
+ connect(this, &OwncloudWizard::styleChanged, _flow2CredsPage, &Flow2AuthCredsPage::slotStyleChanged);
++#endif
+
+ customizeStyle();
+
++#ifndef NO_WEBENGINE
+ // allow Flow2 page to poll on window activation
+ connect(this, &OwncloudWizard::onActivate, _flow2CredsPage, &Flow2AuthCredsPage::slotPollNow);
++#endif
+ }
+
+ void OwncloudWizard::setAccount(AccountPtr account)
+@@ -180,9 +198,11 @@ void OwncloudWizard::successfulStep()
+ _browserCredsPage->setConnected();
+ break;
+
++#ifndef NO_WEBENGINE
+ case WizardCommon::Page_Flow2AuthCreds:
+ _flow2CredsPage->setConnected();
+ break;
++#endif
+
+ #ifndef NO_SHIBBOLETH
+ case WizardCommon::Page_ShibbolethCreds:
+@@ -190,9 +210,11 @@ void OwncloudWizard::successfulStep()
break;
#endif
-- case WizardCommon::Page_WebView:
-- _webViewPage->setConnected();
-- break;
--
++#ifndef NO_WEBENGINE
+ case WizardCommon::Page_WebView:
+ _webViewPage->setConnected();
+ break;
++#endif
+
case WizardCommon::Page_AdvancedSetup:
_advancedSetupPage->directoriesCreated();
- break;
-@@ -195,8 +187,6 @@
+@@ -217,10 +239,12 @@ void OwncloudWizard::setAuthType(DetermineAuthTypeJob::AuthType type)
#endif
if (type == DetermineAuthTypeJob::OAuth) {
_credentialsPage = _browserCredsPage;
-- } else if (type == DetermineAuthTypeJob::WebViewFlow) {
-- _credentialsPage = _webViewPage;
++#ifndef NO_WEBENGINE
+ } else if (type == DetermineAuthTypeJob::LoginFlowV2) {
+ _credentialsPage = _flow2CredsPage;
+ } else if (type == DetermineAuthTypeJob::WebViewFlow) {
+ _credentialsPage = _webViewPage;
++#endif
} else { // try Basic auth even for "Unknown"
_credentialsPage = _httpCredsPage;
}
---- desktop-2.5.0-beta1/src/CMakeLists.txt 2018-08-02 16:32:56.000000000 -0400
-+++ desktop-2.5.0-beta1/src/CMakeLists.txt 2018-08-15 20:59:59.390712646 -0400
-@@ -4,7 +4,7 @@
+@@ -245,7 +269,12 @@ void OwncloudWizard::slotCurrentPageChanged(int id)
+ }
- set(synclib_NAME ${APPLICATION_EXECUTABLE}sync)
+ setOption(QWizard::HaveCustomButton1, id == WizardCommon::Page_AdvancedSetup);
+- if (id == WizardCommon::Page_AdvancedSetup && (_credentialsPage == _browserCredsPage || _credentialsPage == _flow2CredsPage)) {
++ if (id == WizardCommon::Page_AdvancedSetup
++ && (_credentialsPage == _browserCredsPage
++#ifndef NO_WEBENGINE
++ || _credentialsPage == _flow2CredsPage
++#endif
++ )) {
+ // For OAuth, disable the back button in the Page_AdvancedSetup because we don't want
+ // to re-open the browser.
+ button(QWizard::BackButton)->setEnabled(false);
+diff --git a/src/gui/wizard/owncloudwizard.h b/src/gui/wizard/owncloudwizard.h
+index 3cbf89f71..2f398d416 100644
+--- a/src/gui/wizard/owncloudwizard.h
++++ b/src/gui/wizard/owncloudwizard.h
+@@ -39,8 +39,10 @@ class OwncloudAdvancedSetupPage;
+ class OwncloudWizardResultPage;
+ class AbstractCredentials;
+ class AbstractCredentialsWizardPage;
++#ifndef NO_WEBENGINE
+ class WebViewPage;
+ class Flow2AuthCredsPage;
++#endif
--find_package(Qt5 5.6 COMPONENTS Core Network Xml Concurrent WebEngineWidgets WebEngine REQUIRED)
-+find_package(Qt5 5.6 COMPONENTS Core Network Xml Concurrent REQUIRED)
- if (Qt5Core_VERSION VERSION_LESS 5.9.0)
- message(STATUS "For HTTP/2 support, compile with Qt 5.9 or higher.")
- endif()
+ /**
+ * @brief The OwncloudWizard class
+@@ -114,11 +116,15 @@ private:
+ #ifndef NO_SHIBBOLETH
+ OwncloudShibbolethCredsPage *_shibbolethCredsPage;
+ #endif
++#ifndef NO_WEBENGINE
+ Flow2AuthCredsPage *_flow2CredsPage;
++#endif
+ OwncloudAdvancedSetupPage *_advancedSetupPage;
+ OwncloudWizardResultPage *_resultPage;
+ AbstractCredentialsWizardPage *_credentialsPage;
++#ifndef NO_WEBENGINE
+ WebViewPage *_webViewPage;
++#endif
+
+ QStringList _setupLog;
+
+diff --git a/src/libsync/networkjobs.cpp b/src/libsync/networkjobs.cpp
+index 76789a8ce..73f0bed0e 100644
+--- a/src/libsync/networkjobs.cpp
++++ b/src/libsync/networkjobs.cpp
+@@ -955,12 +955,20 @@ void DetermineAuthTypeJob::checkAllDone()
+
+ // WebViewFlow > OAuth > Shib > Basic
+ if (_account->serverVersionInt() >= Account::makeServerVersion(12, 0, 0)) {
++#ifndef NO_WEBENGINE
+ result = WebViewFlow;
++#else
++ result = Basic;
++#endif
+ }
+
+ // LoginFlowV2 > WebViewFlow > OAuth > Shib > Basic
+ if (_account->serverVersionInt() >= Account::makeServerVersion(16, 0, 0)) {
++#ifndef NO_WEBENGINE
+ result = LoginFlowV2;
++#else
++ result = Basic;
++#endif
+ }
+
+ // If we determined that we need the webview flow (GS for example) then we switch to that
+--
+2.25.0
+
diff --git a/user/nextcloud-client/openssl.patch b/user/nextcloud-client/openssl.patch
deleted file mode 100644
index 426fa0cfb..000000000
--- a/user/nextcloud-client/openssl.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- desktop-2.5.0-beta2/CMakeLists.txt 2018-08-24 12:54:42.000000000 +0000
-+++ desktop-2.5.0-beta2/CMakeLists.txt 2018-10-03 06:19:15.840263697 +0000
-@@ -183,7 +183,7 @@ if(BUILD_CLIENT)
- endif()
- find_package(Sphinx)
- find_package(PdfLatex)
-- find_package(OpenSSL 1.1 REQUIRED )
-+ find_package(OpenSSL 1.0 REQUIRED )
-
- find_package(ZLIB REQUIRED)
- find_package(GLib2)
diff --git a/user/nextcloud-client/test-fix-include.patch b/user/nextcloud-client/test-fix-include.patch
new file mode 100644
index 000000000..da8423022
--- /dev/null
+++ b/user/nextcloud-client/test-fix-include.patch
@@ -0,0 +1,22 @@
+From f9c6449c050cad673cf37971d9815a35e6ffb5dd Mon Sep 17 00:00:00 2001
+From: tuxmaster5000 <837503+tuxmaster5000@users.noreply.github.com>
+Date: Fri, 12 Oct 2018 15:56:26 +0200
+Subject: [PATCH] Fix include file
+
+---
+ test/testnextcloudpropagator.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/testnextcloudpropagator.cpp b/test/testnextcloudpropagator.cpp
+index 6ad1a6b37..dc2e476ad 100644
+--- a/test/testnextcloudpropagator.cpp
++++ b/test/testnextcloudpropagator.cpp
+@@ -8,7 +8,7 @@
+ #include <QDebug>
+
+ #include "propagatedownload.h"
+-#include "nextcloudpropagator_p.h"
++#include "owncloudpropagator_p.h"
+
+ using namespace OCC;
+ namespace OCC {
diff --git a/user/nextcloud/APKBUILD b/user/nextcloud/APKBUILD
index 6f86863ac..6e948b1ff 100644
--- a/user/nextcloud/APKBUILD
+++ b/user/nextcloud/APKBUILD
@@ -2,7 +2,7 @@
# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=nextcloud
-pkgver=14.0.3
+pkgver=14.0.13
pkgrel=0
pkgdesc="Self-hosted file sync and groupware server"
url="https://nextcloud.com"
@@ -104,10 +104,6 @@ done
# Directory for apps shipped with Nextcloud.
_appsdir="usr/share/webapps/$pkgname/apps"
-build() {
- cd "$builddir"
-}
-
package() {
local basedir="var/lib/$pkgname"
local datadir="$basedir/data"
@@ -171,7 +167,7 @@ doc() {
initscript() {
pkgdesc="Init script that runs Nextcloud with php-fpm"
- depends="$pkgname php7-fpm"
+ depends="$pkgname=$pkgver-r$pkgrel php7-fpm"
install -Dm 644 "$srcdir/fpm-pool.conf" "$subpkgdir/etc/php/php-fpm.d/$pkgname.conf"
install -Dm 644 "$srcdir/$pkgname.confd" "$subpkgdir/etc/conf.d/$pkgname"
@@ -185,25 +181,25 @@ initscript() {
pgsql() {
pkgdesc="Nextcloud PostgreSQL support"
- depends="$pkgname php7-pgsql php7-pdo_pgsql"
+ depends="$pkgname=$pkgver-r$pkgrel php7-pgsql php7-pdo_pgsql"
mkdir -p "$subpkgdir"
}
sqlite() {
pkgdesc="Nextcloud SQLite support"
- depends="$pkgname php7-sqlite3 php7-pdo_sqlite"
+ depends="$pkgname=$pkgver-r$pkgrel php7-sqlite3 php7-pdo_sqlite"
mkdir -p "$subpkgdir"
}
mysql() {
pkgdesc="Nextcloud MySQL support"
- depends="$pkgname php7-pdo_mysql"
+ depends="$pkgname=$pkgver-r$pkgrel php7-pdo_mysql"
mkdir -p "$subpkgdir"
}
_default_apps() {
pkgdesc="Nextcloud default apps"
- depends="$pkgname"
+ depends="$pkgname=$pkgver-r$pkgrel"
local path; for path in $pkgdir/$_appsdir/*; do
if grep -q '<default_enable\s*/>' "$path/appinfo/info.xml"; then
@@ -237,13 +233,13 @@ _package_app() {
systemtags) app_deps="$pkgname-workflowengine";;
esac
- depends="$pkgname $php_deps $app_deps"
+ depends="$pkgname=$pkgver-r$pkgrel $php_deps $app_deps"
mkdir -p "$subpkgdir/$_appsdir"
mv "$pkgdir/$_appsdir/$appname" "$subpkgdir/$_appsdir/"
}
-sha512sums="f3b8bf22f4c17e038352a9f6c202d79220b5d9a19a2148c486cf22558d626095ab5c35f02ddf64292165e34572e199c72a44318b5c19a6dd5113f0ee0f6e937f nextcloud-14.0.3.zip
+sha512sums="ea6d688fb23bc6b6fbaa8b4c5bf8bdb8732825cf43bc3a09df288d128218b1ef5d743f042ec36d5e4813f0e0349524c2ff426abc1786cb77902ca20a3db7c392 nextcloud-14.0.13.zip
63690b8d8ffe6d4896c5b666aa9d493b501aa3e171c6557e7a003599049f0d36f266a2a257a9535dea055bca1e84208b219c6cd5e4ecd70dd064e1dd1007203a nextcloud14-dont-chmod.patch
aef3c92497d738d6968e0f0b0d415b4953500db24ae14af41ef972665cf7eff00cb6c53dc953845fdbb389c3c965a75b8b14b9247513c05cf4130fe1cfc61731 dont-update-htaccess.patch
d2100a837fef1eeae5f706650ab4c985d9e00f61efa5526ef76c7c1f5811c3906eb6c3c13c151eff9677a0c303faab64411a5a84d6792728bc520d2c618d7d5b disable-integrity-check-as-default.patch
diff --git a/user/nextcloud/nextcloud.post-upgrade b/user/nextcloud/nextcloud.post-upgrade
index e4ad291ac..8c48296ad 100644
--- a/user/nextcloud/nextcloud.post-upgrade
+++ b/user/nextcloud/nextcloud.post-upgrade
@@ -3,6 +3,59 @@
ver_new="$1"
ver_old="$2"
+maj_new="${ver_new%%.*}"
+maj_old="${ver_old%%.*}"
+maj_diff="$((maj_new - maj_old))"
+
+if [ "$(apk version -t "$ver_old" "14.0.13-r0")" = "<" ]; then
+ cat >&2 <<-EOF
+ *
+ * Some of Nextcloud's versions may be out of sync.
+ * You can check by running:
+ *
+ * apk info -v | grep '^nextcloud-.*-$ver_old'
+ EOF
+fi
+
+if [ "$maj_diff" -lt 0 ]; then
+ cat >&2 <<-EOF
+ *
+ * Warning: Nextcloud does not support downgrading major versions.
+ * Only run "occ upgrade" if you have skipped major versions
+ * and are in the middle of fixing that!
+ *
+ EOF
+ exit 0
+fi
+
+if [ "$maj_diff" -gt 1 ]; then
+ cat >&2 <<-EOF
+ *
+ * Warning: Nextcloud does not support skipping major versions.
+ * Try the following instead:
+ *
+ EOF
+
+ maj_old="$((maj_old + 1))"
+ while [ "$maj_old" -lt "$maj_new" ]; do
+ cat >&2 <<-EOF
+ * apk add nextcloud~$maj_old
+ * occ upgrade
+ EOF
+ maj_old="$((maj_old + 1))"
+ done
+ cat >&2 <<-EOF
+ * apk add nextcloud
+ * occ upgrade
+ *
+ EOF
+ exit 0
+fi
+
if [ "${ver_new%-r*}" != "${ver_old%-r*}" ]; then
- echo '* Run "occ upgrade" to finish upgrade of your NextCloud instance!' >&2
+ cat >&2 <<-EOF
+ *
+ * Run "occ upgrade" to finish upgrade of your Nextcloud instance!
+ *
+ EOF
fi
diff --git a/user/nextcloud/nextcloud.pre-install b/user/nextcloud/nextcloud.pre-install
index e9cf53919..746906a7a 100644
--- a/user/nextcloud/nextcloud.pre-install
+++ b/user/nextcloud/nextcloud.pre-install
@@ -1,6 +1,7 @@
#!/bin/sh
-addgroup -S -g 82 www-data 2>/dev/null
-adduser -S -D -H -h /var/lib/nextcloud -s /sbin/nologin -G www-data -g Nextcloud nextcloud 2>/dev/null
+groupadd -r -g 82 www-data 2>/dev/null
+useradd -c Nextcloud -s /sbin/nologin -g www-data \
+ -m -d /var/lib/nextcloud -r nextcloud 2>/dev/null
exit 0
diff --git a/user/nfs-utils/APKBUILD b/user/nfs-utils/APKBUILD
index 5c2c06c70..e36cee7ff 100644
--- a/user/nfs-utils/APKBUILD
+++ b/user/nfs-utils/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=nfs-utils
-pkgver=2.3.3
+pkgver=2.4.3
pkgrel=0
pkgdesc="NFS file sharing client and server"
url="http://nfs.sourceforge.net/"
@@ -13,9 +13,8 @@ makedepends="keyutils-dev krb5-dev libevent-dev libtirpc-dev lvm2-dev
rpcsvc-proto sqlite-dev util-linux-dev"
subpackages="$pkgname-doc $pkgname-openrc"
source="https://downloads.sourceforge.net/nfs/nfs-utils-$pkgver.tar.xz
- nfs-utils-1.1.4-mtab-sym.patch
posixish.patch
- undef-def.patch
+ time64.patch
exports
nfs.confd nfs.initd nfsclient.confd nfsclient.initd nfsmount.confd
@@ -24,7 +23,6 @@ source="https://downloads.sourceforge.net/nfs/nfs-utils-$pkgver.tar.xz
"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -42,13 +40,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- local _initd _confd
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -D -m644 "$srcdir"/exports "$pkgdir"/etc/exports
@@ -62,10 +57,9 @@ package() {
done
}
-sha512sums="5025ccd7699ac1a0fdbd8b18ed8b33ea89230158320d809ec51e73f831100db75dceaddde481d911eeca9059caa521d155c2d14d014d75f091f432aad92a9716 nfs-utils-2.3.3.tar.xz
-1cd916028a8515772f05ef63832d73a09e9720055aedc9e2e4ce3a08ce1820948700a4f00ca9c4ee684880f18e67aca888dd857fc7931d923021ba50964be998 nfs-utils-1.1.4-mtab-sym.patch
-f0b87ff4229d96a46e3f0c17f87dcd3ce5c51651ee036d935c1481b421cd7e5b6a048a082b4f8115a969fe6e85cc871df7658bf5d80c480095b69f29fd6b085d posixish.patch
-2e54efa2cac0522f549e8bed45147676d10b299b5060eda305da8767feb55d37627259196d89c295e8d5f4fbbb7c9e791a53dddd579187600f1717968049aa6a undef-def.patch
+sha512sums="9b8065d9d3958e45021898e24574d1e6d59353f94c2f760df18a793a734d79d0047df95e2f9cdebfda58e3f68f52b2ef723df2261c10bbeb5b16fe1413c1b8d7 nfs-utils-2.4.3.tar.xz
+8ed36d22094eaca1a7b83fd5e840e774ee172ca81bf15215cf04127e45fc32ac75c3e0f3d8914370ac09c93d08a0fe8aa6d8f3eb7a8318db1e9ab7b2a05dee06 posixish.patch
+e85afa3ba90eeb48d3a571543ab1361a27b9c4148799548a6b0cd304cff3231235c09753268a1601bf793b1589eb320d7196d00e86ef5eb33aee466fa260dafd time64.patch
fd8052dc8e17eccb0bb1443f341c97ec7c9dac5824294cadf486d91475bc728d4bb69300034b528a690707520590f6675ee371f92e9838afc8ed88092ee0f220 exports
bc11b073735ee86c96b9c249ee187f4d16329c279a4e26760875059d2b5fa1d510ef3e4df5ee9dfb2a3133d755e1eb5c323d2fadc432a0cf630191ec353ac535 nfs.confd
f7feb79cfcab0478affb640d1e5ad059757c88d51cc790fd54cde2fd7ed2e3cfd8f7f4c2de993d99da03e8ce3bdfb2750a4cb997b850fe33d0ef76d9b91c9018 nfs.initd
@@ -76,5 +70,5 @@ f12e67728ac4e76357685e2fe38bd7f6fcd90064165758ffeca145e6962ac44d4ff9d8d57e18cc69
d9d7eeebbe153d3c4784112ed6d50734b5619b3315bb1454f8163de2b78ed8f958029a0e1088de58e9b1b8069184aeab2c8f19af4b957b6be25e4f138960aeac rpc.gssd.initd
f3e88038cb040ffcbca76166f4322d37e39da00d144bc0a17aed4467ab10c6e626fcde6c407d0911d135bfab55622ad2e38ed93788b11459c5882ce60577fb45 rpc.idmapd.initd
3d3fa6e7ae01e27d27d88aba1e307c5293dd1cbc9d555737e03c4f1e17988518f4f1e7f7a38a7337f8e8961e8378cc4611769b04db7368460589a3b218ac6d6b rpc.pipefs.initd
-7f6baea852fff91b88e15e432ba19f9da0a3e3510b6f550b553912cf3887ce176280367b62bcce2a044730a075e4c1f6d7df1a669556d42725dea6e6e8e967ac rpc.statd.initd
+a0fe91b4d7d288cb4793335c79e715b3726f573674ef29525bdab20c2053d1ae19e53a76852ef038aee0ad24fb18827a4ff333a0a179263b1ba47c9a6e2d337c rpc.statd.initd
819cce4ae0a0f26bc74ce546e149b98420584240a594c9bb4a0a49413750320bde050866f3753c499425ea8d8df094211fb1f7e020ce281791e1933e1bc6a47f rpc.svcgssd.initd"
diff --git a/user/nfs-utils/nfs-utils-1.1.4-mtab-sym.patch b/user/nfs-utils/nfs-utils-1.1.4-mtab-sym.patch
deleted file mode 100644
index c9e60afc7..000000000
--- a/user/nfs-utils/nfs-utils-1.1.4-mtab-sym.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-ripped from Debian
-
---- nfs-utils-1.1.4/utils/mount/fstab.c
-+++ nfs-utils-1.1.4/utils/mount/fstab.c
-@@ -57,7 +57,7 @@ mtab_does_not_exist(void) {
- return var_mtab_does_not_exist;
- }
-
--static int
-+int
- mtab_is_a_symlink(void) {
- get_mtab_info();
- return var_mtab_is_a_symlink;
---- nfs-utils-1.1.4/utils/mount/fstab.h
-+++ nfs-utils-1.1.4/utils/mount/fstab.h
-@@ -7,6 +7,7 @@
- #define _PATH_FSTAB "/etc/fstab"
- #endif
-
-+int mtab_is_a_symlink(void);
- int mtab_is_writable(void);
- int mtab_does_not_exist(void);
- void reset_mtab_info(void);
---- nfs-utils-1.1.4/utils/mount/mount.c
-+++ nfs-utils-1.1.4/utils/mount/mount.c
-@@ -230,6 +230,13 @@ create_mtab (void) {
- int flags;
- mntFILE *mfp;
-
-+ /* Avoid writing if the mtab is a symlink to /proc/mounts, since
-+ that would create a file /proc/mounts in case the proc filesystem
-+ is not mounted, and the fchmod below would also fail. */
-+ if (mtab_is_a_symlink()) {
-+ return EX_SUCCESS;
-+ }
-+
- lock_mtab();
-
- mfp = nfs_setmntent (MOUNTED, "a+");
diff --git a/user/nfs-utils/nfs-utils.conf b/user/nfs-utils/nfs-utils.conf
deleted file mode 100644
index b9b586c2a..000000000
--- a/user/nfs-utils/nfs-utils.conf
+++ /dev/null
@@ -1,3 +0,0 @@
-d /var/lib/nfs/rpc_pipefs
-d /var/lib/nfs/v4recovery
-d /var/lib/nfs/v4root
diff --git a/user/nfs-utils/posixish.patch b/user/nfs-utils/posixish.patch
index 0f1a7cdee..d8802047d 100644
--- a/user/nfs-utils/posixish.patch
+++ b/user/nfs-utils/posixish.patch
@@ -1,27 +1,6 @@
---- nfs-utils-2.3.1/configure.ac.orig 2018-05-21 11:05:01.939912918 -0700
-+++ nfs-utils-2.3.1/configure.ac 2018-05-21 11:05:10.531968707 -0700
-@@ -401,7 +401,7 @@
- fi
-
- dnl libdnsidmap specific checks
--AC_CHECK_LIB([resolv], [__res_querydomain], , AC_MSG_ERROR(res_querydomain needed))
-+AC_CHECK_LIB([resolv], [res_querydomain], , AC_MSG_ERROR(res_querydomain needed))
-
- AC_ARG_ENABLE([ldap],
- [AS_HELP_STRING([--disable-ldap],[Disable support for LDAP @<:default=detect@:>@])])
---- nfs-utils-2.3.1/support/misc/file.c.orig 2018-05-21 18:15:37.572007979 +0000
-+++ nfs-utils-2.3.1/support/misc/file.c 2018-05-21 18:15:43.668047008 +0000
-@@ -27,6 +27,7 @@
- #include <dirent.h>
- #include <stdlib.h>
- #include <stdbool.h>
-+#include <limits.h> /* PATH_MAX */
-
- #include "xlog.h"
- #include "misc.h"
--- nfs-utils-2.3.3/configure.old 2018-09-06 18:10:07.000000000 +0000
+++ nfs-utils-2.3.3/configure 2019-01-10 16:01:32.110000000 +0000
-@@ -20302,9 +20302,9 @@
+@@ -20596,9 +20596,9 @@
fi
fi
@@ -34,7 +13,7 @@
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
-@@ -20318,27 +20318,27 @@
+@@ -20612,27 +20612,27 @@
#ifdef __cplusplus
extern "C"
#endif
diff --git a/user/nfs-utils/rpc.statd.initd b/user/nfs-utils/rpc.statd.initd
index ea78b9aef..bd0e9cb8f 100644
--- a/user/nfs-utils/rpc.statd.initd
+++ b/user/nfs-utils/rpc.statd.initd
@@ -4,7 +4,7 @@
[ -e /etc/conf.d/nfs ] && . /etc/conf.d/nfs
-rpc_bin=/sbin/rpc.statd
+rpc_bin=/usr/sbin/rpc.statd
rpc_pid=/var/run/rpc.statd.pid
depend() {
diff --git a/user/nfs-utils/time64.patch b/user/nfs-utils/time64.patch
new file mode 100644
index 000000000..b28ee2f44
--- /dev/null
+++ b/user/nfs-utils/time64.patch
@@ -0,0 +1,94 @@
+--- nfs-utils-2.4.2/support/nfs/cacheio.c.old 2019-11-13 17:09:41.000000000 +0000
++++ nfs-utils-2.4.2/support/nfs/cacheio.c 2020-01-24 03:32:30.296395221 +0000
+@@ -26,6 +26,7 @@
+ #include <fcntl.h>
+ #include <time.h>
+ #include <errno.h>
++#include <inttypes.h>
+
+ extern struct state_paths etab;
+
+@@ -234,7 +235,7 @@
+ stb.st_mtime > now)
+ stb.st_mtime = time(0);
+
+- sprintf(stime, "%ld\n", stb.st_mtime);
++ sprintf(stime, "%"PRId64"\n", stb.st_mtime);
+ for (c=0; cachelist[c]; c++) {
+ int fd;
+ sprintf(path, "/proc/net/rpc/%s/flush", cachelist[c]);
+--- nfs-utils-2.4.2/utils/idmapd/idmapd.c.old 2019-11-13 17:09:41.000000000 +0000
++++ nfs-utils-2.4.2/utils/idmapd/idmapd.c 2020-01-24 03:35:05.459393437 +0000
+@@ -65,6 +65,7 @@
+ #include <ctype.h>
+ #include <libgen.h>
+ #include <nfsidmap.h>
++#include <inttypes.h>
+
+ #include "xlog.h"
+ #include "conffile.h"
+@@ -172,7 +173,7 @@
+ int fd;
+ char stime[32];
+
+- sprintf(stime, "%ld\n", now);
++ sprintf(stime, "%"PRId64"\n", now);
+ fd = open(path, O_RDWR);
+ if (fd == -1)
+ return -1;
+@@ -625,7 +626,7 @@
+ /* Name */
+ addfield(&bp, &bsiz, im.im_name);
+ /* expiry */
+- snprintf(buf1, sizeof(buf1), "%lu",
++ snprintf(buf1, sizeof(buf1), "%"PRIu64,
+ time(NULL) + cache_entry_expiration);
+ addfield(&bp, &bsiz, buf1);
+ /* Note that we don't want to write the id if the mapping
+@@ -653,7 +654,7 @@
+ snprintf(buf1, sizeof(buf1), "%u", im.im_id);
+ addfield(&bp, &bsiz, buf1);
+ /* expiry */
+- snprintf(buf1, sizeof(buf1), "%lu",
++ snprintf(buf1, sizeof(buf1), "%"PRIu64,
+ time(NULL) + cache_entry_expiration);
+ addfield(&bp, &bsiz, buf1);
+ /* Note we're ignoring the status field in this case; we'll
+--- nfs-utils-2.4.2/utils/nfsdcltrack/nfsdcltrack.c.old 2019-11-13 17:09:41.000000000 +0000
++++ nfs-utils-2.4.2/utils/nfsdcltrack/nfsdcltrack.c 2020-01-24 04:40:06.871901242 +0000
+@@ -38,6 +38,7 @@
+ #include <sys/inotify.h>
+ #include <dirent.h>
+ #include <limits.h>
++#include <inttypes.h>
+ #ifdef HAVE_SYS_CAPABILITY_H
+ #include <sys/prctl.h>
+ #include <sys/capability.h>
+@@ -525,7 +526,7 @@
+ if (*tail)
+ return -EINVAL;
+
+- xlog(D_GENERAL, "%s: grace done. gracetime=%ld", __func__, gracetime);
++ xlog(D_GENERAL, "%s: grace done. gracetime=%"PRId64, __func__, gracetime);
+
+ ret = sqlite_remove_unreclaimed(gracetime);
+
+--- nfs-utils-2.4.2/utils/nfsdcltrack/sqlite.c.old 2019-11-13 17:09:41.000000000 +0000
++++ nfs-utils-2.4.2/utils/nfsdcltrack/sqlite.c 2020-01-24 04:40:31.519202517 +0000
+@@ -48,6 +48,7 @@
+ #include <fcntl.h>
+ #include <unistd.h>
+ #include <sqlite3.h>
++#include <inttypes.h>
+ #include <linux/limits.h>
+
+ #include "xlog.h"
+@@ -544,7 +545,7 @@
+ int ret;
+ char *err = NULL;
+
+- ret = snprintf(buf, sizeof(buf), "DELETE FROM clients WHERE time < %ld",
++ ret = snprintf(buf, sizeof(buf), "DELETE FROM clients WHERE time < %"PRId64,
+ grace_start);
+ if (ret < 0) {
+ return ret;
diff --git a/user/nfs-utils/undef-def.patch b/user/nfs-utils/undef-def.patch
deleted file mode 100644
index 12bff6ddf..000000000
--- a/user/nfs-utils/undef-def.patch
+++ /dev/null
@@ -1,42 +0,0 @@
---- nfs-utils-2.3.3/support/nfs/svc_socket.c.old 2018-09-06 18:09:08.000000000 +0000
-+++ nfs-utils-2.3.3/support/nfs/svc_socket.c 2019-01-10 16:17:02.270000000 +0000
-@@ -46,7 +46,7 @@
- struct rpcent *rpcp;
- struct servent servbuf, *servp = NULL;
- int ret = 0;
--#if HAVE_GETRPCBYNUMBER_R
-+#ifdef HAVE_GETRPCBYNUMBER_R
- char rpcdata[1024];
- struct rpcent rpcbuf;
-
---- nfs-utils-2.3.3/utils/mountd/cache.c.old 2018-09-06 18:09:08.000000000 +0000
-+++ nfs-utils-2.3.3/utils/mountd/cache.c 2019-01-10 16:26:22.750000000 +0000
-@@ -426,7 +426,7 @@
- if (count_slashes(p) != count_slashes(parent))
- return 0;
-
--#if HAVE_NAME_TO_HANDLE_AT
-+#ifdef HAVE_NAME_TO_HANDLE_AT
- struct {
- struct file_handle fh;
- unsigned char handle[128];
---- nfs-utils-2.3.3/utils/mount/network.c.old 2018-09-06 18:09:08.000000000 +0000
-+++ nfs-utils-2.3.3/utils/mount/network.c 2019-01-10 16:28:46.840000000 +0000
-@@ -39,7 +39,7 @@
- #include <sys/socket.h>
- #include <sys/wait.h>
- #include <sys/stat.h>
--#if defined(__GLIBC__) && (__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 24)
-+#if defined(__GLIBC__) && ((__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 24))
- /* Cannot safely include linux/in6.h in old glibc, so hardcode the needed values */
- # define IPV6_PREFER_SRC_PUBLIC 2
- # define IPV6_ADDR_PREFERENCES 72
-@@ -1062,7 +1062,7 @@
- if (caddr) {
- /* Get the address of our end of this connection */
- socklen_t len = sizeof(*caddr);
-- if (getsockname(sock, caddr, &len) != 0)
-+ if (getsockname(sock, (struct sockaddr *)caddr, &len) != 0)
- caddr->sin_family = 0;
- }
-
diff --git a/user/nftables/APKBUILD b/user/nftables/APKBUILD
index 3ef6d52aa..56a056dee 100644
--- a/user/nftables/APKBUILD
+++ b/user/nftables/APKBUILD
@@ -1,25 +1,34 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
-# Maintainer: multiplexd <multi@in-addr.xyz>
+# Contributor: Mira Ressel <aranea@aixah.de>
+# Maintainer:
pkgname=nftables
-pkgver=0.9.0
+pkgver=0.9.6
pkgrel=0
pkgdesc="Netfilter tables userspace tools"
url="https://netfilter.org/projects/nftables"
-options="!check" # no test suite
arch="all"
+options="!check" # No test suite.
license="GPL-2.0+ AND GPL-2.0"
-makedepends="bison docbook2x flex gmp-dev libmnl-dev libnftnl-dev"
+depends=""
+makedepends="asciidoctor bison flex gmp-dev libmnl-dev libnftnl-dev
+ autoconf automake libtool"
subpackages="$pkgname-doc $pkgname-openrc"
source="https://netfilter.org/projects/nftables/files/$pkgname-$pkgver.tar.bz2
+ asciidoctor.patch
nftables.confd
- nftables.initd"
+ nftables.initd
+ "
-build() {
- cd "$builddir"
+prepare() {
+ default_prepare
+ autoreconf -vif
+}
- DB2MAN=docbook2x-man ./configure \
+build() {
+ # TODO: Man pages are massively broken with asciidoctor
+ A2X=asciidoctor bash ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -32,14 +41,13 @@ build() {
}
package() {
- cd "$builddir"
-
make DESTDIR="$pkgdir" install
install -Dm755 "$srcdir"/$pkgname.initd "$pkgdir"/etc/init.d/$pkgname
install -Dm644 "$srcdir"/$pkgname.confd "$pkgdir"/etc/conf.d/$pkgname
}
-sha512sums="ba08fd78d79f7df14a7a7d753e8be33f22d892672ad906672d938c66a8fbb0824fd1d083c173132b7d81dd5e3cdd7771364ec714662876cb71eb4f7ad4eaa59c nftables-0.9.0.tar.bz2
+sha512sums="ca6524ff1cb1e79d636afeb96f54e4699773e1cbda8e9a3ec5728f4d5b764c0df16b195cdcc0e304ae5643c8761b6b5a6685c737965a7415aec07aeb9f3dc5df nftables-0.9.6.tar.bz2
+282434bf685647ef823db610660c96c15bcf9eb694ab7f3e7d9a05b9ed77c572562d0eed4adda5d5adc579378e625f92762b945ac5d0f93f81900c9472382583 asciidoctor.patch
4eb1adf003dfcaad65c91af6ca88d91b7904c471aefae67e7d3c2f8e053e1ac196d3437a45d1fed5a855b876a0f1fc58a724e381d2acf1164d9120cadee73eef nftables.confd
58daafb012b7cd0248a7db6e10f6a667e683347aaea7eaa78cb88780272f334e00913cea3fd39a22a4a72acc27fabd101944b40916f4b534ddeb509bd0232017 nftables.initd"
diff --git a/user/nftables/asciidoctor.patch b/user/nftables/asciidoctor.patch
new file mode 100644
index 000000000..d290f6530
--- /dev/null
+++ b/user/nftables/asciidoctor.patch
@@ -0,0 +1,28 @@
+From ee7aad965b044bb555dc9fe27991c0e05f14e7dc Mon Sep 17 00:00:00 2001
+From: Mira Ressel <aranea@aixah.de>
+Date: Tue, 9 Jul 2019 18:02:57 +0200
+Subject: [PATCH] We're using asciidoctor instead of a2x; adjust options
+ accordingly
+
+This needs more work; asciidoctor doesn't process nftables' asciidoc
+markup correctly.
+---
+ doc/Makefile.am | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/doc/Makefile.am b/doc/Makefile.am
+index 01e1af9..7776932 100644
+--- a/doc/Makefile.am
++++ b/doc/Makefile.am
+@@ -2,7 +2,7 @@ if BUILD_MAN
+ man_MANS = nft.8 libnftables-json.5 libnftables.3
+ endif
+
+-A2X_OPTS_MANPAGE = -L --doctype manpage --format manpage -D ${builddir}
++A2X_OPTS_MANPAGE = --doctype manpage --backend manpage -D ${builddir}
+
+ ASCIIDOC_MAIN = nft.txt
+ ASCIIDOC_INCLUDES = \
+--
+2.22.0
+
diff --git a/user/nghttp2-utils/APKBUILD b/user/nghttp2-utils/APKBUILD
new file mode 100644
index 000000000..c81deed55
--- /dev/null
+++ b/user/nghttp2-utils/APKBUILD
@@ -0,0 +1,54 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@adelielinux.org>
+pkgname=nghttp2-tools
+pkgver=1.52.0
+pkgrel=0
+pkgdesc="Experimental HTTP/2 client, server and proxy"
+url="https://nghttp2.org/"
+arch="all"
+license="MIT"
+depends="nghttp2=$pkgver-r$pkgrel"
+checkdepends="cunit-dev"
+makedepends="c-ares-dev jansson-dev libev-dev libxml2-dev openssl-dev zlib-dev"
+subpackages="$pkgname-doc"
+source="https://github.com/tatsuhiro-t/nghttp2/releases/download/v$pkgver/nghttp2-$pkgver.tar.xz"
+builddir="$srcdir/nghttp2-$pkgver"
+
+# secfixes:
+# 1.41.0-r0:
+# - CVE-2020-11080
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var \
+ --disable-static \
+ --without-neverbleed \
+ --without-jemalloc \
+ --enable-app \
+ --disable-shared
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+
+ # duplicate of -doc
+ rm -rf "$pkgdir"/usr/share/doc
+ # duplicate of -dev
+ rm -rf "$pkgdir"/usr/include
+ rm -rf "$pkgdir"/usr/lib
+ # duplicate of nghttp2
+ rm -rf "$pkgdir"/usr/share/nghttp2
+}
+
+sha512sums="3af1ce13270f7afc8652bd3de71200d9632204617fe04d2be7156d60eeb1a5cc415573677791a399ae03577e8e3256939b1b05d27dbd98dee504d09ec5325d56 nghttp2-1.52.0.tar.xz"
diff --git a/user/nghttp2/APKBUILD b/user/nghttp2/APKBUILD
deleted file mode 100644
index 0c0c764e7..000000000
--- a/user/nghttp2/APKBUILD
+++ /dev/null
@@ -1,42 +0,0 @@
-# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer:
-pkgname=nghttp2
-pkgver=1.37.0
-pkgrel=0
-pkgdesc="Experimental HTTP/2 client, server and proxy"
-url="https://nghttp2.org/"
-arch="all"
-license="MIT"
-makedepends="c-ares-dev libev-dev libxml2-dev openssl-dev zlib-dev"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
-source="https://github.com/tatsuhiro-t/$pkgname/releases/download/v$pkgver/nghttp2-$pkgver.tar.xz"
-
-build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --infodir=/usr/share/info \
- --localstatedir=/var \
- --disable-static \
- --without-neverbleed \
- --without-jemalloc \
- --disable-python-bindings \
- --enable-app
- make
-}
-
-check() {
- cd "$builddir"
- make check
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
-}
-
-sha512sums="67a4b9df3f7f0edad719011fa289d9aa9ef04f31ef3ccf826b861c8830ed24e0743a33b54ab66d198fec7edbf723852b38a2007b335d7f566f702f4b02297b0f nghttp2-1.37.0.tar.xz"
diff --git a/user/ninja/APKBUILD b/user/ninja/APKBUILD
index e0638a176..00f71f088 100644
--- a/user/ninja/APKBUILD
+++ b/user/ninja/APKBUILD
@@ -1,33 +1,29 @@
# Contributor: k0r10n <k0r10n.dev@gmail.com>
# Maintainer:
pkgname=ninja
-pkgver=1.9.0
+pkgver=1.10.1
pkgrel=0
pkgdesc="Small build system with a focus on speed"
url="https://ninja-build.org/"
arch="all"
license="Apache-2.0"
+depends=""
makedepends="asciidoctor gtest python3 re2c"
subpackages="$pkgname-doc"
source="$pkgname-$pkgver.tar.gz::https://github.com/martine/ninja/archive/v$pkgver.tar.gz
- posix-fix.patch::https://github.com/ninja-build/ninja/pull/1513/commits/567815df38a2ff54ad7478a90bd75c91e434236a.patch
"
build() {
- cd "$builddir"
python3 ./configure.py --bootstrap
asciidoctor doc/manual.asciidoc
}
check() {
- cd "$builddir"
-
./ninja ninja_test
./ninja_test --gtest_filter=-SubprocessTest.SetWithLots
}
package() {
- cd "$builddir"
install -m755 -D ninja "$pkgdir/usr/bin/ninja"
install -m644 -D doc/manual.asciidoc \
"$pkgdir/usr/share/doc/ninja/manual.asciidoc"
@@ -38,5 +34,4 @@ package() {
"$pkgdir/usr/share/bash-completion/completions/ninja"
}
-sha512sums="a8b5ad00b60bddbdb8439a6092c91a65d093f9bcd6241f69088eb35bea2847efe673c3107a130dc754c747c7712b839d8f88e88d8389520cf7143668ee053feb ninja-1.9.0.tar.gz
-78b29a57ec3c4feedf2bcfe9370b30cecd5302f29e8e14c6a3bc01becb555be6330aafba12f9225625af0644ea1f534feba8396d32bb944253a9daa5dd0e98d8 posix-fix.patch"
+sha512sums="9915767a6ffc7147903f346082b5c31fcaeb1e45742754cfaaa642e8ec4c1bd9ec26692a59eb4e2118c397336712a6548e6a16408e094001f8f0c173e67afcc2 ninja-1.10.1.tar.gz"
diff --git a/user/nmap/APKBUILD b/user/nmap/APKBUILD
index 3cf0b1db3..f0356e156 100644
--- a/user/nmap/APKBUILD
+++ b/user/nmap/APKBUILD
@@ -1,31 +1,36 @@
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=nmap
-pkgver=7.70
-pkgrel=0
+pkgver=7.92
+pkgrel=1
pkgdesc="A network exploration tool and security/port scanner"
url="https://nmap.org/"
arch="all"
license="GPL-2.0-only"
depends=""
-makedepends="linux-headers openssl-dev libpcap-dev pcre-dev zlib-dev libssh2-dev lua5.3-dev"
-options="!checkroot"
+makedepends="linux-headers openssl-dev libpcap-dev pcre-dev zlib-dev
+ libssh2-dev lua5.3-dev"
subpackages="
$pkgname-doc
$pkgname-scripts::noarch
$pkgname-nselibs::noarch
$pkgname-nping
- $pkgname-ncat"
-source="https://nmap.org/dist/$pkgname-$pkgver.tar.bz2"
+ $pkgname-ncat
+ $pkgname-ncat-doc:ncat_doc
+ netcat::noarch"
+source="https://nmap.org/dist/$pkgname-$pkgver.tar.bz2
+ disable-broken-tests.patch
+ "
-prepare() {
- default_prepare
- update_config_sub
-}
+# secfixes:
+# 7.80-r0:
+# - CVE-2018-15173
build() {
- cd "$builddir"
# zenmap and ndiff require python 2
- ./configure \
+ export CFLAGS=-g3
+ export CPPFLAGS=-g3
+ export CXXFLAGS=-g3
+ LDFLAGS="$LDFLAGS -L/usr/lib/lua5.3" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -39,19 +44,17 @@ build() {
--with-libpcre=yes \
--with-libz=yes \
--with-libssh2=yes \
- --with-liblua=/usr/lua5.3
+ --with-liblua=yes
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
- install -Dm644 COPYING ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+ make -j1 DESTDIR="$pkgdir" install
+ install -Dm644 LICENSE ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
}
scripts() {
@@ -78,10 +81,27 @@ ncat() {
mv "$pkgdir"/usr/bin/ncat "$subpkgdir"/usr/bin
}
+ncat_doc() {
+ pkgdesc="ncat utility (docs)"
+ install_if="nmap-ncat=$pkgver-r$pkgrel docs"
+ mkdir -p "$subpkgdir"/usr/share/man/man1
+ mv "${pkgdir}-doc"/usr/share/man/man1/ncat.1.gz \
+ "$subpkgdir"/usr/share/man/man1
+}
+
nping() {
pkgdesc="$pkgdesc (nping tool)"
mkdir -p "$subpkgdir"/usr/bin
mv "$pkgdir"/usr/bin/nping "$subpkgdir"/usr/bin
}
-sha512sums="084c148b022ff6550e269d976d0077f7932a10e2ef218236fe13aa3a70b4eb6506df03329868fc68cb3ce78e4360b200f5a7a491d3145028fed679ef1c9ecae5 nmap-7.70.tar.bz2"
+netcat() {
+ pkgdesc="Symlinks for netcat and nc to ncat"
+ depends="$pkgname-ncat"
+ mkdir -p "$subpkgdir"/usr/bin
+ ln -s ncat "$subpkgdir"/usr/bin/netcat
+ ln -s ncat "$subpkgdir"/usr/bin/nc
+}
+
+sha512sums="7828367f9dc76ff4d1e8c821260e565fb0c3cb6aba0473d24759133a3006cdf2cb087574f0dd7d2ba47a63754ba4f72e0b78cdae1333a58f05c41d428b56ad59 nmap-7.92.tar.bz2
+0f42b7d5e65ec82d7ed3d385d2f71c3234df7058a728ae602e7e557624faeea8f72832bc7ef861e337c407ab200a9e2ecc202c526bfd10cb6fd64262c3cc4a6d disable-broken-tests.patch"
diff --git a/user/nmap/disable-broken-tests.patch b/user/nmap/disable-broken-tests.patch
new file mode 100644
index 000000000..3ffae4723
--- /dev/null
+++ b/user/nmap/disable-broken-tests.patch
@@ -0,0 +1,13 @@
+diff -ur a/ncat/test/test-addrset.sh b/ncat/test/test-addrset.sh
+--- a/ncat/test/test-addrset.sh 2022-06-10 23:58:27.986436037 +0000
++++ b/ncat/test/test-addrset.sh 2022-06-10 23:58:53.873431469 +0000
+@@ -266,9 +266,6 @@
+ scanme.nmap.org
+ EOF
+
+-expect_fail "."
+-expect_fail "-"
+-expect_fail ","
+ expect_fail "1.2.3.4,"
+ expect_fail ",1.2.3.4"
+ expect_fail "1.2.3.4.5"
diff --git a/user/nml/APKBUILD b/user/nml/APKBUILD
index 6b7f9facb..8cc91663b 100644
--- a/user/nml/APKBUILD
+++ b/user/nml/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=nml
-pkgver=0.4.5
+pkgver=0.6.1
pkgrel=0
pkgdesc="NewGRF Meta Language utilities for OpenTTD mods"
url="https://newgrf-specs.tt-wiki.net/wiki/NML:Main"
@@ -10,21 +10,18 @@ license="GPL-2.0+"
depends="python3 py3-pillow py3-ply"
makedepends="python3-dev"
subpackages=""
-source="http://bundles.openttdcoop.org/nml/releases/$pkgver/nml-$pkgver.tar.gz"
+source="https://github.com/OpenTTD/$pkgname/releases/download/$pkgver/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
make -C regression
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="64b2f46a1c2e37fce8f51231094e30334f368b0db39c6a3977a144a798d8034d1abbe7c14af3921eb81f4b7caa193e7e53ccb9e27acd113e0407926b109ca952 nml-0.4.5.tar.gz"
+sha512sums="41b1f1c256543ef42067ef3bb81dbb10771498f3dc06e6ce1b328723710380b2a6dad52b2258716b6caab3e4f17d22d57992c76e0800440b9daff5811304e016 nml-0.6.1.tar.gz"
diff --git a/user/node/APKBUILD b/user/node/APKBUILD
index ba3ff6807..1c0cbe5a8 100644
--- a/user/node/APKBUILD
+++ b/user/node/APKBUILD
@@ -1,71 +1,73 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=node
-pkgver=10.15.3
-pkgrel=0
+pkgver=18.15.0
+pkgrel=1
pkgdesc="JavaScript runtime"
url="https://nodejs.org/"
-arch="all"
-license="MIT AND ICU AND BSD-3-Clause AND BSD-2-Clause AND ISC AND OpenSSL AND Public-Domain AND Zlib AND Artistic-2.0 AND Apache-2.0 AND CC0-1.0"
+arch="all !ppc" # #837
+options="net" # Required in check()
+license="MIT AND ICU AND BSD-3-Clause AND BSD-2-Clause AND ISC AND Public-Domain AND Zlib AND Artistic-2.0 AND Apache-2.0 AND CC0-1.0"
depends=""
makedepends="c-ares-dev http-parser-dev icu-dev libexecinfo-dev libuv-dev
- nghttp2-dev python3 zlib-dev"
+ nghttp2-dev openssl-dev python3 zlib-dev samurai"
subpackages="$pkgname-dev $pkgname-doc"
source="https://nodejs.org/download/release/v$pkgver/node-v$pkgver.tar.xz
- https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tar.xz
- libatomic.patch
- ppc32.patch
- ppc64.patch
- stack-silliness.patch
+ pmmx-test.patch
+ pmmx-time64.patch
+ zlib-version-regex.patch
+ ppc-fixes-for-older-models-18.patch
"
builddir="$srcdir/$pkgname-v$pkgver"
-unpack() {
- default_unpack
- [ -z $SKIP_PYTHON ] || return 0
-
- msg "Killing all remaining hope for humanity and building Python 2..."
- cd "$srcdir/Python-2.7.15"
- [ -d ../python ] && rm -r ../python
- # 19:39 <+solar> just make the firefox build process build its own py2 copy
- # 20:03 <calvin> TheWilfox: there's always violence
- ./configure --prefix="$srcdir/python"
- make -j $JOBS
- make -j $JOBS install
-}
+# secfixes:
+# 10.16.3-r0:
+# - CVE-2019-9511
+# - CVE-2019-9512
+# - CVE-2019-9513
+# - CVE-2019-9514
+# - CVE-2019-9515
+# - CVE-2019-9516
+# - CVE-2019-9517
+# - CVE-2019-9518
+# 10.21.0-r0:
+# - CVE-2020-7598
+# - CVE-2020-8174
build() {
- cd "$builddir"
- export PATH="$srcdir/python/bin:$PATH"
- # We can't use --shared-openssl until 1.1 is available.
- python ./configure.py \
+ case "${CARCH}" in
+ armv7|ppc|pmmx) # ld: final link failed: memory exhausted
+ export CXXFLAGS="${CXXFLAGS} -g0";
+ ;;
+ esac
+
+ python3 configure.py \
--prefix=/usr \
- --with-intl=system-icu \
+ --shared-zlib \
+ --shared-openssl \
--shared-cares \
- --shared-http-parser \
- --shared-libuv \
--shared-nghttp2 \
- --openssl-no-asm \
- --shared-zlib
- # keep DESTDIR set, to avoid a full rebuild in package()
- make DESTDIR="$pkgdir"
+ --ninja \
+ --openssl-use-def-ca-store \
+ --with-icu-default-data-dir=$(icu-config --icudatadir) \
+ --with-intl=system-icu \
+ --without-corepack \
+ --without-npm
+
+ make BUILDTYPE=Release DESTDIR="$pkgdir"
}
check() {
- cd "$builddir"
- export PATH="$srcdir/python/bin:$PATH"
- make DESTDIR="$pkgdir" test-only
+ make DESTDIR="$pkgdir" test-only \
+ ${_skip:+CI_SKIP_TESTS="$_skip"}
}
package() {
- cd "$builddir"
- export PATH="$srcdir/python/bin:$PATH"
make DESTDIR="$pkgdir" install
}
-sha512sums="cf741f733af7a7e1fbd37b0f98110078494b4771dbdfccacfda95a5ea4cda6cdcea4f8d31dddcf27477213614e4ab6cf7d1a1f900cb92936333730737ac4f9e8 node-v10.15.3.tar.xz
-27ea43eb45fc68f3d2469d5f07636e10801dee11635a430ec8ec922ed790bb426b072da94df885e4dfa1ea8b7a24f2f56dd92f9b0f51e162330f161216bd6de6 Python-2.7.15.tar.xz
-8f64922d586bce9d82c83042a989739cc55ecc5e015778cdfbda21c257aa50527ddb18740985bcb2068e4a749b71eb8a135d9a8152b374d361589df7f33c9b60 libatomic.patch
-d369cd9685e372368af11ea763defdde7afc789ce5e2f617b47174fb4d45003d6e494a00ef92c9ed098c49c189d1690edf9ce780448a5b4a5b072c20ea35ab95 ppc32.patch
-583326353de5b0ac14a6c42321f6b031bd943a80550624794e15bd7526470f67bfa14a66558db3c94b4ee2db3053d2e4efed2117f4e7b6dca3c59c171048c094 ppc64.patch
-3ea09e36ed0cc31e0475ebc9c92b7609b70e9c1637c5db6c92cf1d6363fb8c6f884ffa20dd81054ca390b721695185327d80c9eeff0688a959e9d46947602471 stack-silliness.patch"
+sha512sums="e41fcda469809186fd724ef4691e25f4a5bd81357ee99acf3d7faa1190a69c19cb62bd14aea199ca6f8b5cf9687af7d898cdf605ea2414d2c04db87ddb3b4dc8 node-v18.15.0.tar.xz
+277e226f3906f791bae6aedd0b74b0e2c52b6154eb2dc0c568417ad94a0722078e4fbbbe15c59d4ba0b59cdb4ad45b5e9620f14d75694a15531857cd29aa044a pmmx-test.patch
+bf78e52c60b4567854eaa9d9433ade8a318a356cb326dded99e800df35a9f475390a0cf8b0c8e595bbdb3702838eafe91801cd646576aa7fa7966b37d794e380 pmmx-time64.patch
+45d899bd62e39762fde7e9743efcc6dc032161ae087099da8eecebc84f3eaab87eecf00cbc5861f686a45332224025af172ab00ce966771dccf2e925ca48bc6a zlib-version-regex.patch
+64cffa3cfdced1152a41d77c344370d0077d046ccf20fb618cad7396bcb37290c14a8180b713a7e554e3b09042e481d6aa4a5f97a0a93ceb4090d0f2a510b052 ppc-fixes-for-older-models-18.patch"
diff --git a/user/node/gyp-python3.patch b/user/node/gyp-python3.patch
deleted file mode 100644
index e52ef19ec..000000000
--- a/user/node/gyp-python3.patch
+++ /dev/null
@@ -1,3862 +0,0 @@
-diff --git a/tools/gyp/pylib/gyp/input.py b/pylib/gyp/input.py
-index a046a15..21b4606 100644
---- a/tools/gyp/pylib/gyp/input.py
-+++ b/tools/gyp/pylib/gyp/input.py
-@@ -2,14 +2,8 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
--from compiler.ast import Const
--from compiler.ast import Dict
--from compiler.ast import Discard
--from compiler.ast import List
--from compiler.ast import Module
--from compiler.ast import Node
--from compiler.ast import Stmt
--import compiler
-+import ast
-+
- import gyp.common
- import gyp.simple_copy
- import multiprocessing
-@@ -183,43 +177,38 @@
- Note that this is slower than eval() is.
- """
-
-- ast = compiler.parse(file_contents)
-- assert isinstance(ast, Module)
-- c1 = ast.getChildren()
-- assert c1[0] is None
-- assert isinstance(c1[1], Stmt)
-- c2 = c1[1].getChildren()
-- assert isinstance(c2[0], Discard)
-- c3 = c2[0].getChildren()
-- assert len(c3) == 1
-- return CheckNode(c3[0], [])
-+ syntax_tree = ast.parse(file_contents)
-+ assert isinstance(syntax_tree, ast.Module)
-+ c1 = syntax_tree.body
-+ assert len(c1) == 1
-+ c2 = c1[0]
-+ assert isinstance(c2, ast.Expr)
-+ return CheckNode(c2.value, [])
-
-
- def CheckNode(node, keypath):
-- if isinstance(node, Dict):
-- c = node.getChildren()
-+ if isinstance(node, ast.Dict):
- dict = {}
-- for n in range(0, len(c), 2):
-- assert isinstance(c[n], Const)
-- key = c[n].getChildren()[0]
-+ for key, value in zip(node.keys, node.values):
-+ assert isinstance(key, ast.Str)
-+ key = key.s
- if key in dict:
- raise GypError("Key '" + key + "' repeated at level " +
- repr(len(keypath) + 1) + " with key path '" +
- '.'.join(keypath) + "'")
- kp = list(keypath) # Make a copy of the list for descending this node.
- kp.append(key)
-- dict[key] = CheckNode(c[n + 1], kp)
-+ dict[key] = CheckNode(value, kp)
- return dict
-- elif isinstance(node, List):
-- c = node.getChildren()
-+ elif isinstance(node, ast.List):
- children = []
-- for index, child in enumerate(c):
-+ for index, child in enumerate(node.elts):
- kp = list(keypath) # Copy list.
- kp.append(repr(index))
- children.append(CheckNode(child, kp))
- return children
-- elif isinstance(node, Const):
-- return node.getChildren()[0]
-+ elif isinstance(node, ast.Str):
-+ return node.s
- else:
- raise TypeError("Unknown AST node at key path '" + '.'.join(keypath) +
- "': " + repr(node))
-diff --git a/tools/gyp/pylib/gyp/simple_copy.py b/pylib/gyp/simple_copy.py
-index 74c98c5..eaf5f8b 100644
---- a/tools/gyp/pylib/gyp/simple_copy.py
-+++ b/tools/gyp/pylib/gyp/simple_copy.py
-@@ -28,8 +28,19 @@
- def _deepcopy_atomic(x):
- return x
-
--for x in (type(None), int, long, float,
-- bool, str, unicode, type):
-+try:
-+ _string_types = (str, unicode)
-+# There's no unicode in python3
-+except NameError:
-+ _string_types = (str, )
-+
-+try:
-+ _integer_types = (int, long)
-+# There's no long in python3
-+except NameError:
-+ _integer_types = (int, )
-+
-+for x in (type(None), float, bool, type) + _integer_types + _string_types:
- d[x] = _deepcopy_atomic
-
- def _deepcopy_list(x):
-diff --git a/tools/gyp/PRESUBMIT.py b/PRESUBMIT.py
-index 4bc1b8c..5ee669b 100644
---- a/tools/gyp/PRESUBMIT.py
-+++ b/tools/gyp/PRESUBMIT.py
-@@ -76,8 +76,7 @@
- def _LicenseHeader(input_api):
- # Accept any year number from 2009 to the current year.
- current_year = int(input_api.time.strftime('%Y'))
-- allowed_years = (str(s) for s in reversed(xrange(2009, current_year + 1)))
--
-+ allowed_years = (str(s) for s in reversed(range(2009, current_year + 1)))
- years_re = '(' + '|'.join(allowed_years) + ')'
-
- # The (c) is deprecated, but tolerate it until it's removed from all files.
-diff --git a/tools/gyp/README.md b/README.md
-index c0d73ac..b4766c9 100644
---- a/tools/gyp/README.md
-+++ b/tools/gyp/README.md
-@@ -1,4 +1,5 @@
- GYP can Generate Your Projects.
- ===================================
-
--Documents are available at [gyp.gsrc.io](https://gyp.gsrc.io), or you can check out ```md-pages``` branch to read those documents offline.
-+Documents are available at [gyp.gsrc.io](https://gyp.gsrc.io), or you can
-+check out ```md-pages``` branch to read those documents offline.
-diff --git a/tools/gyp/buildbot/buildbot_run.py b/buildbot/buildbot_run.py
-index 9a2b71f..8941652 100755
---- a/tools/gyp/buildbot/buildbot_run.py
-+++ b/tools/gyp/buildbot/buildbot_run.py
-@@ -5,6 +5,8 @@
-
- """Argument-less script to select what to run on the buildbots."""
-
-+from __future__ import print_function
-+
- import os
- import shutil
- import subprocess
-@@ -24,14 +26,14 @@
- with open(os.devnull) as devnull_fd:
- retcode = subprocess.call(stdin=devnull_fd, *args, **kwargs)
- if retcode != 0:
-- print '@@@STEP_EXCEPTION@@@'
-+ print('@@@STEP_EXCEPTION@@@')
- sys.exit(1)
-
-
- def PrepareCmake():
- """Build CMake 2.8.8 since the version in Precise is 2.8.7."""
- if os.environ['BUILDBOT_CLOBBER'] == '1':
-- print '@@@BUILD_STEP Clobber CMake checkout@@@'
-+ print('@@@BUILD_STEP Clobber CMake checkout@@@')
- shutil.rmtree(CMAKE_DIR)
-
- # We always build CMake 2.8.8, so no need to do anything
-@@ -39,10 +41,10 @@
- if os.path.isdir(CMAKE_DIR):
- return
-
-- print '@@@BUILD_STEP Initialize CMake checkout@@@'
-+ print('@@@BUILD_STEP Initialize CMake checkout@@@')
- os.mkdir(CMAKE_DIR)
-
-- print '@@@BUILD_STEP Sync CMake@@@'
-+ print('@@@BUILD_STEP Sync CMake@@@')
- CallSubProcess(
- ['git', 'clone',
- '--depth', '1',
-@@ -53,7 +55,7 @@
- CMAKE_DIR],
- cwd=CMAKE_DIR)
-
-- print '@@@BUILD_STEP Build CMake@@@'
-+ print('@@@BUILD_STEP Build CMake@@@')
- CallSubProcess(
- ['/bin/bash', 'bootstrap', '--prefix=%s' % CMAKE_DIR],
- cwd=CMAKE_DIR)
-@@ -74,7 +76,7 @@
- if not format:
- format = title
-
-- print '@@@BUILD_STEP ' + title + '@@@'
-+ print('@@@BUILD_STEP ' + title + '@@@')
- sys.stdout.flush()
- env = os.environ.copy()
- if msvs_version:
-@@ -89,17 +91,17 @@
- retcode = subprocess.call(command, cwd=ROOT_DIR, env=env, shell=True)
- if retcode:
- # Emit failure tag, and keep going.
-- print '@@@STEP_FAILURE@@@'
-+ print('@@@STEP_FAILURE@@@')
- return 1
- return 0
-
-
- def GypBuild():
- # Dump out/ directory.
-- print '@@@BUILD_STEP cleanup@@@'
-- print 'Removing %s...' % OUT_DIR
-+ print('@@@BUILD_STEP cleanup@@@')
-+ print('Removing %s...' % OUT_DIR)
- shutil.rmtree(OUT_DIR, ignore_errors=True)
-- print 'Done.'
-+ print('Done.')
-
- retcode = 0
- if sys.platform.startswith('linux'):
-@@ -128,7 +130,7 @@
- # after the build proper that could be used for cumulative failures),
- # use that instead of this. This isolates the final return value so
- # that it isn't misattributed to the last stage.
-- print '@@@BUILD_STEP failures@@@'
-+ print('@@@BUILD_STEP failures@@@')
- sys.exit(retcode)
-
-
-diff --git a/tools/gyp/pylib/gyp/MSVSSettings.py b/pylib/gyp/MSVSSettings.py
-index 8ae1918..1d2e25a 100644
---- a/tools/gyp/pylib/gyp/MSVSSettings.py
-+++ b/tools/gyp/pylib/gyp/MSVSSettings.py
-@@ -14,9 +14,17 @@
- MSBuild install directory, e.g. c:\Program Files (x86)\MSBuild
- """
-
-+from __future__ import print_function
-+
- import sys
- import re
-
-+try:
-+ # basestring was removed in python3.
-+ basestring
-+except NameError:
-+ basestring = str
-+
- # Dictionaries of settings validators. The key is the tool name, the value is
- # a dictionary mapping setting names to validation functions.
- _msvs_validators = {}
-@@ -400,7 +408,7 @@
-
- if unrecognized:
- # We don't know this setting. Give a warning.
-- print >> stderr, error_msg
-+ print(error_msg, file=stderr)
-
-
- def FixVCMacroSlashes(s):
-@@ -433,7 +441,7 @@
- '$(PlatformName)': '$(Platform)',
- '$(SafeInputName)': '%(Filename)',
- }
-- for old, new in replace_map.iteritems():
-+ for old, new in replace_map.items():
- s = s.replace(old, new)
- s = FixVCMacroSlashes(s)
- return s
-@@ -453,17 +461,18 @@
- dictionaries of settings and their values.
- """
- msbuild_settings = {}
-- for msvs_tool_name, msvs_tool_settings in msvs_settings.iteritems():
-+ for msvs_tool_name, msvs_tool_settings in msvs_settings.items():
- if msvs_tool_name in _msvs_to_msbuild_converters:
- msvs_tool = _msvs_to_msbuild_converters[msvs_tool_name]
-- for msvs_setting, msvs_value in msvs_tool_settings.iteritems():
-+ for msvs_setting, msvs_value in msvs_tool_settings.items():
- if msvs_setting in msvs_tool:
- # Invoke the translation function.
- try:
- msvs_tool[msvs_setting](msvs_value, msbuild_settings)
-- except ValueError, e:
-- print >> stderr, ('Warning: while converting %s/%s to MSBuild, '
-- '%s' % (msvs_tool_name, msvs_setting, e))
-+ except ValueError as e:
-+ print(('Warning: while converting %s/%s to MSBuild, '
-+ '%s' % (msvs_tool_name, msvs_setting, e)),
-+ file=stderr)
- else:
- _ValidateExclusionSetting(msvs_setting,
- msvs_tool,
-@@ -472,8 +481,8 @@
- (msvs_tool_name, msvs_setting)),
- stderr)
- else:
-- print >> stderr, ('Warning: unrecognized tool %s while converting to '
-- 'MSBuild.' % msvs_tool_name)
-+ print(('Warning: unrecognized tool %s while converting to '
-+ 'MSBuild.' % msvs_tool_name), file=stderr)
- return msbuild_settings
-
-
-@@ -513,13 +522,13 @@
- for tool_name in settings:
- if tool_name in validators:
- tool_validators = validators[tool_name]
-- for setting, value in settings[tool_name].iteritems():
-+ for setting, value in settings[tool_name].items():
- if setting in tool_validators:
- try:
- tool_validators[setting](value)
-- except ValueError, e:
-- print >> stderr, ('Warning: for %s/%s, %s' %
-- (tool_name, setting, e))
-+ except ValueError as e:
-+ print(('Warning: for %s/%s, %s' %
-+ (tool_name, setting, e)), file=stderr)
- else:
- _ValidateExclusionSetting(setting,
- tool_validators,
-@@ -528,7 +537,7 @@
- stderr)
-
- else:
-- print >> stderr, ('Warning: unrecognized tool %s' % tool_name)
-+ print(('Warning: unrecognized tool %s' % tool_name), file=stderr)
-
-
- # MSVS and MBuild names of the tools.
-diff --git a/tools/gyp/pylib/gyp/MSVSSettings_test.py b/pylib/gyp/MSVSSettings_test.py
-index bf6ea6b..73ed25e 100755
---- a/tools/gyp/pylib/gyp/MSVSSettings_test.py
-+++ b/tools/gyp/pylib/gyp/MSVSSettings_test.py
-@@ -6,7 +6,10 @@
-
- """Unit tests for the MSVSSettings.py file."""
-
--import StringIO
-+try:
-+ from StringIO import StringIO
-+except ImportError:
-+ from io import StringIO
- import unittest
- import gyp.MSVSSettings as MSVSSettings
-
-@@ -14,7 +17,7 @@
- class TestSequenceFunctions(unittest.TestCase):
-
- def setUp(self):
-- self.stderr = StringIO.StringIO()
-+ self.stderr = StringIO()
-
- def _ExpectedWarnings(self, expected):
- """Compares recorded lines to expected warnings."""
-diff --git a/tools/gyp/pylib/gyp/MSVSUserFile.py b/pylib/gyp/MSVSUserFile.py
-index 6c07e9a..2264d64 100644
---- a/tools/gyp/pylib/gyp/MSVSUserFile.py
-+++ b/tools/gyp/pylib/gyp/MSVSUserFile.py
-@@ -91,7 +91,7 @@
-
- if environment and isinstance(environment, dict):
- env_list = ['%s="%s"' % (key, val)
-- for (key,val) in environment.iteritems()]
-+ for (key,val) in environment.items()]
- environment = ' '.join(env_list)
- else:
- environment = ''
-@@ -135,7 +135,7 @@
- def WriteIfChanged(self):
- """Writes the user file."""
- configs = ['Configurations']
-- for config, spec in sorted(self.configurations.iteritems()):
-+ for config, spec in sorted(self.configurations.items()):
- configs.append(spec)
-
- content = ['VisualStudioUserFile',
-diff --git a/tools/gyp/pylib/gyp/MSVSUtil.py b/pylib/gyp/MSVSUtil.py
-index 96dea6c..f24530b 100644
---- a/tools/gyp/pylib/gyp/MSVSUtil.py
-+++ b/tools/gyp/pylib/gyp/MSVSUtil.py
-@@ -236,7 +236,7 @@
-
- # Set up the shim to output its PDB to the same location as the final linker
- # target.
-- for config_name, config in shim_dict.get('configurations').iteritems():
-+ for config_name, config in shim_dict.get('configurations').items():
- pdb_path = _GetPdbPath(target_dict, config_name, vars)
-
- # A few keys that we don't want to propagate.
-diff --git a/tools/gyp/pylib/gyp/MSVSVersion.py b/pylib/gyp/MSVSVersion.py
-index 44b958d..5f316b6 100644
---- a/tools/gyp/pylib/gyp/MSVSVersion.py
-+++ b/tools/gyp/pylib/gyp/MSVSVersion.py
-@@ -189,7 +189,7 @@
- text = None
- try:
- text = _RegistryQueryBase('Sysnative', key, value)
-- except OSError, e:
-+ except OSError as e:
- if e.errno == errno.ENOENT:
- text = _RegistryQueryBase('System32', key, value)
- else:
-@@ -207,12 +207,15 @@
- contents of the registry key's value, or None on failure. Throws
- ImportError if _winreg is unavailable.
- """
-- import _winreg
-+ try:
-+ import _winreg as winreg
-+ except ImportError:
-+ import winreg
- try:
- root, subkey = key.split('\\', 1)
- assert root == 'HKLM' # Only need HKLM for now.
-- with _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, subkey) as hkey:
-- return _winreg.QueryValueEx(hkey, value)[0]
-+ with winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, subkey) as hkey:
-+ return winreg.QueryValueEx(hkey, value)[0]
- except WindowsError:
- return None
-
-diff --git a/tools/gyp/pylib/gyp/__init__.py b/pylib/gyp/__init__.py
-index 668f38b..e038151 100755
---- a/tools/gyp/pylib/gyp/__init__.py
-+++ b/tools/gyp/pylib/gyp/__init__.py
-@@ -4,6 +4,8 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
-+from __future__ import print_function
-+
- import copy
- import gyp.input
- import optparse
-@@ -14,6 +16,12 @@
- import traceback
- from gyp.common import GypError
-
-+try:
-+ # basestring was removed in python3.
-+ basestring
-+except NameError:
-+ basestring = str
-+
- # Default debug modes for GYP
- debug = {}
-
-@@ -22,7 +30,6 @@
- DEBUG_VARIABLES = 'variables'
- DEBUG_INCLUDES = 'includes'
-
--
- def DebugOutput(mode, message, *args):
- if 'all' in gyp.debug or mode in gyp.debug:
- ctx = ('unknown', 0, 'unknown')
-@@ -34,8 +41,8 @@
- pass
- if args:
- message %= args
-- print '%s:%s:%d:%s %s' % (mode.upper(), os.path.basename(ctx[0]),
-- ctx[1], ctx[2], message)
-+ print('%s:%s:%d:%s %s' % (mode.upper(), os.path.basename(ctx[0]),
-+ ctx[1], ctx[2], message))
-
- def FindBuildFiles():
- extension = '.gyp'
-@@ -207,7 +214,7 @@
- # We always want to ignore the environment when regenerating, to avoid
- # duplicate or changed flags in the environment at the time of regeneration.
- flags = ['--ignore-environment']
-- for name, metadata in options._regeneration_metadata.iteritems():
-+ for name, metadata in options._regeneration_metadata.items():
- opt = metadata['opt']
- value = getattr(options, name)
- value_predicate = metadata['type'] == 'path' and FixPath or Noop
-@@ -226,12 +233,13 @@
- (action == 'store_false' and not value)):
- flags.append(opt)
- elif options.use_environment and env_name:
-- print >>sys.stderr, ('Warning: environment regeneration unimplemented '
-+ print(('Warning: environment regeneration unimplemented '
- 'for %s flag %r env_name %r' % (action, opt,
-- env_name))
-+ env_name)),
-+ file=sys.stderr)
- else:
-- print >>sys.stderr, ('Warning: regeneration unimplemented for action %r '
-- 'flag %r' % (action, opt))
-+ print(('Warning: regeneration unimplemented for action %r '
-+ 'flag %r' % (action, opt)), file=sys.stderr)
-
- return flags
-
-@@ -431,12 +439,11 @@
- for build_file in build_files:
- build_file_dir = os.path.abspath(os.path.dirname(build_file))
- build_file_dir_components = build_file_dir.split(os.path.sep)
-- components_len = len(build_file_dir_components)
-- for index in xrange(components_len - 1, -1, -1):
-- if build_file_dir_components[index] == 'src':
-+ for component in reversed(build_file_dir_components):
-+ if component == 'src':
- options.depth = os.path.sep.join(build_file_dir_components)
- break
-- del build_file_dir_components[index]
-+ del build_file_dir_components[-1]
-
- # If the inner loop found something, break without advancing to another
- # build file.
-@@ -475,7 +482,7 @@
- if home_dot_gyp != None:
- default_include = os.path.join(home_dot_gyp, 'include.gypi')
- if os.path.exists(default_include):
-- print 'Using overrides found in ' + default_include
-+ print('Using overrides found in ' + default_include)
- includes.append(default_include)
-
- # Command-line --include files come after the default include.
-@@ -490,7 +497,7 @@
- if options.generator_flags:
- gen_flags += options.generator_flags
- generator_flags = NameValueListToDict(gen_flags)
-- if DEBUG_GENERAL in gyp.debug.keys():
-+ if DEBUG_GENERAL in gyp.debug:
- DebugOutput(DEBUG_GENERAL, "generator_flags: %s", generator_flags)
-
- # Generate all requested formats (use a set in case we got one format request
-@@ -523,7 +530,7 @@
- generator.GenerateOutput(flat_list, targets, data, params)
-
- if options.configs:
-- valid_configs = targets[flat_list[0]]['configurations'].keys()
-+ valid_configs = targets[flat_list[0]]['configurations']
- for conf in options.configs:
- if conf not in valid_configs:
- raise GypError('Invalid config specified via --build: %s' % conf)
-@@ -536,7 +543,7 @@
- def main(args):
- try:
- return gyp_main(args)
-- except GypError, e:
-+ except GypError as e:
- sys.stderr.write("gyp: %s\n" % e)
- return 1
-
-diff --git a/tools/gyp/pylib/gyp/common.py b/pylib/gyp/common.py
-index 1b245ec..1823de8 100644
---- a/tools/gyp/pylib/gyp/common.py
-+++ b/tools/gyp/pylib/gyp/common.py
-@@ -345,7 +345,7 @@
- prefix=os.path.split(filename)[1] + '.gyp.',
- dir=os.path.split(filename)[0])
- try:
-- self.tmp_file = os.fdopen(tmp_fd, 'wb')
-+ self.tmp_file = os.fdopen(tmp_fd, 'w')
- except Exception:
- # Don't leave turds behind.
- os.unlink(self.tmp_path)
-@@ -363,7 +363,7 @@
- same = False
- try:
- same = filecmp.cmp(self.tmp_path, filename, False)
-- except OSError, e:
-+ except OSError as e:
- if e.errno != errno.ENOENT:
- raise
-
-@@ -382,9 +382,9 @@
- #
- # No way to get the umask without setting a new one? Set a safe one
- # and then set it back to the old value.
-- umask = os.umask(077)
-+ umask = os.umask(0o77)
- os.umask(umask)
-- os.chmod(self.tmp_path, 0666 & ~umask)
-+ os.chmod(self.tmp_path, 0o666 & ~umask)
- if sys.platform == 'win32' and os.path.exists(filename):
- # NOTE: on windows (but not cygwin) rename will not replace an
- # existing file, so it must be preceded with a remove. Sadly there
-@@ -471,7 +471,7 @@
- ''.join([source[0], header] + source[1:]))
-
- # Make file executable.
-- os.chmod(tool_path, 0755)
-+ os.chmod(tool_path, 0o755)
-
-
- # From Alex Martelli,
-diff --git a/tools/gyp/pylib/gyp/common_test.py b/pylib/gyp/common_test.py
-index ad6f9a1..0b8ada3 100755
---- a/tools/gyp/pylib/gyp/common_test.py
-+++ b/tools/gyp/pylib/gyp/common_test.py
-@@ -63,6 +63,7 @@
- self.assertFlavor('solaris', 'sunos' , {});
- self.assertFlavor('linux' , 'linux2' , {});
- self.assertFlavor('linux' , 'linux3' , {});
-+ self.assertFlavor('linux' , 'linux' , {});
-
- def test_param(self):
- self.assertFlavor('foobar', 'linux2' , {'flavor': 'foobar'})
-diff --git a/tools/gyp/pylib/gyp/easy_xml.py b/pylib/gyp/easy_xml.py
-index 2522efb..15c6651 100644
---- a/tools/gyp/pylib/gyp/easy_xml.py
-+++ b/tools/gyp/pylib/gyp/easy_xml.py
-@@ -6,6 +6,11 @@
- import os
- import locale
-
-+try:
-+ # reduce moved to functools in python3.
-+ reduce
-+except NameError:
-+ from functools import reduce
-
- def XmlToString(content, encoding='utf-8', pretty=False):
- """ Writes the XML content to disk, touching the file only if it has changed.
-@@ -80,7 +85,7 @@
- # Optionally in second position is a dictionary of the attributes.
- rest = specification[1:]
- if rest and isinstance(rest[0], dict):
-- for at, val in sorted(rest[0].iteritems()):
-+ for at, val in sorted(rest[0].items()):
- xml_parts.append(' %s="%s"' % (at, _XmlEscape(val, attr=True)))
- rest = rest[1:]
- if rest:
-diff --git a/tools/gyp/pylib/gyp/easy_xml_test.py b/pylib/gyp/easy_xml_test.py
-index df64354..a1fdb18 100755
---- a/tools/gyp/pylib/gyp/easy_xml_test.py
-+++ b/tools/gyp/pylib/gyp/easy_xml_test.py
-@@ -8,13 +8,16 @@
-
- import gyp.easy_xml as easy_xml
- import unittest
--import StringIO
-+try:
-+ from StringIO import StringIO
-+except ImportError:
-+ from io import StringIO
-
-
- class TestSequenceFunctions(unittest.TestCase):
-
- def setUp(self):
-- self.stderr = StringIO.StringIO()
-+ self.stderr = StringIO()
-
- def test_EasyXml_simple(self):
- self.assertEqual(
-diff --git a/tools/gyp/pylib/gyp/flock_tool.py b/pylib/gyp/flock_tool.py
-index b38d866..81fb79d 100755
---- a/tools/gyp/pylib/gyp/flock_tool.py
-+++ b/tools/gyp/pylib/gyp/flock_tool.py
-@@ -39,7 +39,7 @@
- # where fcntl.flock(fd, LOCK_EX) always fails
- # with EBADF, that's why we use this F_SETLK
- # hack instead.
-- fd = os.open(lockfile, os.O_WRONLY|os.O_NOCTTY|os.O_CREAT, 0666)
-+ fd = os.open(lockfile, os.O_WRONLY|os.O_NOCTTY|os.O_CREAT, 0o666)
- if sys.platform.startswith('aix'):
- # Python on AIX is compiled with LARGEFILE support, which changes the
- # struct size.
-diff --git a/tools/gyp/pylib/gyp/generator/analyzer.py b/pylib/gyp/generator/analyzer.py
-index 921c1a6..b3484dc 100644
---- a/tools/gyp/pylib/gyp/generator/analyzer.py
-+++ b/tools/gyp/pylib/gyp/generator/analyzer.py
-@@ -62,6 +62,8 @@
- then the "all" target includes "b1" and "b2".
- """
-
-+from __future__ import print_function
-+
- import gyp.common
- import gyp.ninja_syntax as ninja_syntax
- import json
-@@ -155,7 +157,7 @@
- continue
- result.append(base_path + source)
- if debug:
-- print 'AddSource', org_source, result[len(result) - 1]
-+ print('AddSource', org_source, result[len(result) - 1])
-
-
- def _ExtractSourcesFromAction(action, base_path, base_path_components,
-@@ -185,7 +187,7 @@
- base_path += '/'
-
- if debug:
-- print 'ExtractSources', target, base_path
-+ print('ExtractSources', target, base_path)
-
- results = []
- if 'sources' in target_dict:
-@@ -278,7 +280,7 @@
- the root of the source tree."""
- if _ToLocalPath(toplevel_dir, _ToGypPath(build_file)) in files:
- if debug:
-- print 'gyp file modified', build_file
-+ print('gyp file modified', build_file)
- return True
-
- # First element of included_files is the file itself.
-@@ -291,8 +293,8 @@
- _ToGypPath(gyp.common.UnrelativePath(include_file, build_file))
- if _ToLocalPath(toplevel_dir, rel_include_file) in files:
- if debug:
-- print 'included gyp file modified, gyp_file=', build_file, \
-- 'included file=', rel_include_file
-+ print('included gyp file modified, gyp_file=', build_file, \
-+ 'included file=', rel_include_file)
- return True
- return False
-
-@@ -373,7 +375,7 @@
- # If a build file (or any of its included files) is modified we assume all
- # targets in the file are modified.
- if build_file_in_files[build_file]:
-- print 'matching target from modified build file', target_name
-+ print('matching target from modified build file', target_name)
- target.match_status = MATCH_STATUS_MATCHES
- matching_targets.append(target)
- else:
-@@ -381,7 +383,7 @@
- toplevel_dir)
- for source in sources:
- if _ToGypPath(os.path.normpath(source)) in files:
-- print 'target', target_name, 'matches', source
-+ print('target', target_name, 'matches', source)
- target.match_status = MATCH_STATUS_MATCHES
- matching_targets.append(target)
- break
-@@ -433,7 +435,7 @@
- for dep in target.deps:
- if _DoesTargetDependOnMatchingTargets(dep):
- target.match_status = MATCH_STATUS_MATCHES_BY_DEPENDENCY
-- print '\t', target.name, 'matches by dep', dep.name
-+ print('\t', target.name, 'matches by dep', dep.name)
- return True
- target.match_status = MATCH_STATUS_DOESNT_MATCH
- return False
-@@ -445,7 +447,7 @@
- supplied as input to analyzer.
- possible_targets: targets to search from."""
- found = []
-- print 'Targets that matched by dependency:'
-+ print('Targets that matched by dependency:')
- for target in possible_targets:
- if _DoesTargetDependOnMatchingTargets(target):
- found.append(target)
-@@ -484,12 +486,13 @@
- (add_if_no_ancestor or target.requires_build)) or
- (target.is_static_library and add_if_no_ancestor and
- not target.is_or_has_linked_ancestor)):
-- print '\t\tadding to compile targets', target.name, 'executable', \
-- target.is_executable, 'added_to_compile_targets', \
-- target.added_to_compile_targets, 'add_if_no_ancestor', \
-- add_if_no_ancestor, 'requires_build', target.requires_build, \
-- 'is_static_library', target.is_static_library, \
-+ print('\t\tadding to compile targets', target.name, 'executable',
-+ target.is_executable, 'added_to_compile_targets',
-+ target.added_to_compile_targets, 'add_if_no_ancestor',
-+ add_if_no_ancestor, 'requires_build', target.requires_build,
-+ 'is_static_library', target.is_static_library,
- 'is_or_has_linked_ancestor', target.is_or_has_linked_ancestor
-+ )
- result.add(target)
- target.added_to_compile_targets = True
-
-@@ -500,7 +503,7 @@
- supplied_targets: set of targets supplied to analyzer to search from."""
- result = set()
- for target in matching_targets:
-- print 'finding compile targets for match', target.name
-+ print('finding compile targets for match', target.name)
- _AddCompileTargets(target, supplied_targets, True, result)
- return result
-
-@@ -508,46 +511,46 @@
- def _WriteOutput(params, **values):
- """Writes the output, either to stdout or a file is specified."""
- if 'error' in values:
-- print 'Error:', values['error']
-+ print('Error:', values['error'])
- if 'status' in values:
-- print values['status']
-+ print(values['status'])
- if 'targets' in values:
- values['targets'].sort()
-- print 'Supplied targets that depend on changed files:'
-+ print('Supplied targets that depend on changed files:')
- for target in values['targets']:
-- print '\t', target
-+ print('\t', target)
- if 'invalid_targets' in values:
- values['invalid_targets'].sort()
-- print 'The following targets were not found:'
-+ print('The following targets were not found:')
- for target in values['invalid_targets']:
-- print '\t', target
-+ print('\t', target)
- if 'build_targets' in values:
- values['build_targets'].sort()
-- print 'Targets that require a build:'
-+ print('Targets that require a build:')
- for target in values['build_targets']:
-- print '\t', target
-+ print('\t', target)
- if 'compile_targets' in values:
- values['compile_targets'].sort()
-- print 'Targets that need to be built:'
-+ print('Targets that need to be built:')
- for target in values['compile_targets']:
-- print '\t', target
-+ print('\t', target)
- if 'test_targets' in values:
- values['test_targets'].sort()
-- print 'Test targets:'
-+ print('Test targets:')
- for target in values['test_targets']:
-- print '\t', target
-+ print('\t', target)
-
- output_path = params.get('generator_flags', {}).get(
- 'analyzer_output_path', None)
- if not output_path:
-- print json.dumps(values)
-+ print(json.dumps(values))
- return
- try:
- f = open(output_path, 'w')
- f.write(json.dumps(values) + '\n')
- f.close()
- except IOError as e:
-- print 'Error writing to output file', output_path, str(e)
-+ print('Error writing to output file', output_path, str(e))
-
-
- def _WasGypIncludeFileModified(params, files):
-@@ -556,7 +559,7 @@
- if params['options'].includes:
- for include in params['options'].includes:
- if _ToGypPath(os.path.normpath(include)) in files:
-- print 'Include file modified, assuming all changed', include
-+ print('Include file modified, assuming all changed', include)
- return True
- return False
-
-@@ -638,13 +641,13 @@
- set(self._root_targets))]
- else:
- test_targets = [x for x in test_targets_no_all]
-- print 'supplied test_targets'
-+ print('supplied test_targets')
- for target_name in self._test_target_names:
-- print '\t', target_name
-- print 'found test_targets'
-+ print('\t', target_name)
-+ print('found test_targets')
- for target in test_targets:
-- print '\t', target.name
-- print 'searching for matching test targets'
-+ print('\t', target.name)
-+ print('searching for matching test targets')
- matching_test_targets = _GetTargetsDependingOnMatchingTargets(test_targets)
- matching_test_targets_contains_all = (test_target_names_contains_all and
- set(matching_test_targets) &
-@@ -654,14 +657,14 @@
- # 'all' is subsequentely added to the matching names below.
- matching_test_targets = [x for x in (set(matching_test_targets) &
- set(test_targets_no_all))]
-- print 'matched test_targets'
-+ print('matched test_targets')
- for target in matching_test_targets:
-- print '\t', target.name
-+ print('\t', target.name)
- matching_target_names = [gyp.common.ParseQualifiedTarget(target.name)[1]
- for target in matching_test_targets]
- if matching_test_targets_contains_all:
- matching_target_names.append('all')
-- print '\tall'
-+ print('\tall')
- return matching_target_names
-
- def find_matching_compile_target_names(self):
-@@ -669,7 +672,7 @@
- assert self.is_build_impacted();
- # Compile targets are found by searching up from changed targets.
- # Reset the visited status for _GetBuildTargets.
-- for target in self._name_to_target.itervalues():
-+ for target in self._name_to_target.values():
- target.visited = False
-
- supplied_targets = _LookupTargets(self._supplied_target_names_no_all(),
-@@ -677,10 +680,10 @@
- if 'all' in self._supplied_target_names():
- supplied_targets = [x for x in (set(supplied_targets) |
- set(self._root_targets))]
-- print 'Supplied test_targets & compile_targets'
-+ print('Supplied test_targets & compile_targets')
- for target in supplied_targets:
-- print '\t', target.name
-- print 'Finding compile targets'
-+ print('\t', target.name)
-+ print('Finding compile targets')
- compile_targets = _GetCompileTargets(self._changed_targets,
- supplied_targets)
- return [gyp.common.ParseQualifiedTarget(target.name)[1]
-@@ -699,7 +702,7 @@
-
- toplevel_dir = _ToGypPath(os.path.abspath(params['options'].toplevel_dir))
- if debug:
-- print 'toplevel_dir', toplevel_dir
-+ print('toplevel_dir', toplevel_dir)
-
- if _WasGypIncludeFileModified(params, config.files):
- result_dict = { 'status': all_changed_string,
-diff --git a/tools/gyp/pylib/gyp/generator/cmake.py b/pylib/gyp/generator/cmake.py
-index a2b9629..4a2041c 100644
---- a/tools/gyp/pylib/gyp/generator/cmake.py
-+++ b/tools/gyp/pylib/gyp/generator/cmake.py
-@@ -28,6 +28,8 @@
- CMakeLists.txt file.
- """
-
-+from __future__ import print_function
-+
- import multiprocessing
- import os
- import signal
-@@ -36,6 +38,12 @@
- import gyp.common
- import gyp.xcode_emulation
-
-+try:
-+ # maketrans moved to str in python3.
-+ _maketrans = string.maketrans
-+except NameError:
-+ _maketrans = str.maketrans
-+
- generator_default_variables = {
- 'EXECUTABLE_PREFIX': '',
- 'EXECUTABLE_SUFFIX': '',
-@@ -238,7 +246,7 @@
- Invalid for make: ':'
- Invalid for unknown reasons but cause failures: '.'
- """
-- return a.translate(string.maketrans(' /():."', '_______'))
-+ return a.translate(_maketrans(' /():."', '_______'))
-
-
- def WriteActions(target_name, actions, extra_sources, extra_deps,
-@@ -644,8 +652,8 @@
-
- cmake_target_type = cmake_target_type_from_gyp_target_type.get(target_type)
- if cmake_target_type is None:
-- print ('Target %s has unknown target type %s, skipping.' %
-- ( target_name, target_type ) )
-+ print('Target %s has unknown target type %s, skipping.' %
-+ ( target_name, target_type ))
- return
-
- SetVariable(output, 'TARGET', target_name)
-@@ -868,8 +876,8 @@
- default_product_ext = generator_default_variables['SHARED_LIB_SUFFIX']
-
- elif target_type != 'executable':
-- print ('ERROR: What output file should be generated?',
-- 'type', target_type, 'target', target_name)
-+ print(('ERROR: What output file should be generated?',
-+ 'type', target_type, 'target', target_name))
-
- product_prefix = spec.get('product_prefix', default_product_prefix)
- product_name = spec.get('product_name', default_product_name)
-@@ -1207,11 +1215,11 @@
- output_dir,
- config_name))
- arguments = ['cmake', '-G', 'Ninja']
-- print 'Generating [%s]: %s' % (config_name, arguments)
-+ print('Generating [%s]: %s' % (config_name, arguments))
- subprocess.check_call(arguments, cwd=build_dir)
-
- arguments = ['ninja', '-C', build_dir]
-- print 'Building [%s]: %s' % (config_name, arguments)
-+ print('Building [%s]: %s' % (config_name, arguments))
- subprocess.check_call(arguments)
-
-
-@@ -1230,7 +1238,7 @@
- GenerateOutputForConfig(target_list, target_dicts, data,
- params, user_config)
- else:
-- config_names = target_dicts[target_list[0]]['configurations'].keys()
-+ config_names = target_dicts[target_list[0]]['configurations']
- if params['parallel']:
- try:
- pool = multiprocessing.Pool(len(config_names))
-@@ -1239,7 +1247,7 @@
- arglists.append((target_list, target_dicts, data,
- params, config_name))
- pool.map(CallGenerateOutputForConfig, arglists)
-- except KeyboardInterrupt, e:
-+ except KeyboardInterrupt as e:
- pool.terminate()
- raise e
- else:
-diff --git a/tools/gyp/pylib/gyp/generator/dump_dependency_json.py b/pylib/gyp/generator/dump_dependency_json.py
-index 160eafe..2bf3f39 100644
---- a/tools/gyp/pylib/gyp/generator/dump_dependency_json.py
-+++ b/tools/gyp/pylib/gyp/generator/dump_dependency_json.py
-@@ -2,6 +2,8 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
-+from __future__ import print_function
-+
- import collections
- import os
- import gyp
-@@ -96,4 +98,4 @@
- f = open(filename, 'w')
- json.dump(edges, f)
- f.close()
-- print 'Wrote json to %s.' % filename
-+ print('Wrote json to %s.' % filename)
-diff --git a/tools/gyp/pylib/gyp/generator/eclipse.py b/pylib/gyp/generator/eclipse.py
-index 3544347..d039f03 100644
---- a/tools/gyp/pylib/gyp/generator/eclipse.py
-+++ b/tools/gyp/pylib/gyp/generator/eclipse.py
-@@ -141,7 +141,7 @@
- compiler_includes_list.append(include_dir)
-
- # Find standard gyp include dirs.
-- if config.has_key('include_dirs'):
-+ if 'include_dirs' in config:
- include_dirs = config['include_dirs']
- for shared_intermediate_dir in shared_intermediate_dirs:
- for include_dir in include_dirs:
-@@ -272,7 +272,7 @@
- out.write(' <language name="holder for library settings"></language>\n')
- for lang in eclipse_langs:
- out.write(' <language name="%s">\n' % lang)
-- for key in sorted(defines.iterkeys()):
-+ for key in sorted(defines.keys()):
- out.write(' <macro><name>%s</name><value>%s</value></macro>\n' %
- (escape(key), escape(defines[key])))
- out.write(' </language>\n')
-@@ -418,7 +418,7 @@
- GenerateOutputForConfig(target_list, target_dicts, data, params,
- user_config)
- else:
-- config_names = target_dicts[target_list[0]]['configurations'].keys()
-+ config_names = target_dicts[target_list[0]]['configurations']
- for config_name in config_names:
- GenerateOutputForConfig(target_list, target_dicts, data, params,
- config_name)
-diff --git a/tools/gyp/pylib/gyp/generator/gypd.py b/pylib/gyp/generator/gypd.py
-index 3efdb99..78eeaa6 100644
---- a/tools/gyp/pylib/gyp/generator/gypd.py
-+++ b/tools/gyp/pylib/gyp/generator/gypd.py
-@@ -88,7 +88,7 @@
- if not output_file in output_files:
- output_files[output_file] = input_file
-
-- for output_file, input_file in output_files.iteritems():
-+ for output_file, input_file in output_files.items():
- output = open(output_file, 'w')
- pprint.pprint(data[input_file], output)
- output.close()
-diff --git a/tools/gyp/pylib/gyp/generator/make.py b/pylib/gyp/generator/make.py
-index fb4f918..2057e3a 100644
---- a/tools/gyp/pylib/gyp/generator/make.py
-+++ b/tools/gyp/pylib/gyp/generator/make.py
-@@ -21,6 +21,8 @@
- # toplevel Makefile. It may make sense to generate some .mk files on
- # the side to keep the the files readable.
-
-+from __future__ import print_function
-+
- import os
- import re
- import sys
-@@ -668,7 +670,7 @@
- basenames.setdefault(basename, []).append(source)
-
- error = ''
-- for basename, files in basenames.iteritems():
-+ for basename, files in basenames.items():
- if len(files) > 1:
- error += ' %s: %s\n' % (basename, ' '.join(files))
-
-@@ -816,7 +818,7 @@
- gyp.xcode_emulation.MacPrefixHeader(
- self.xcode_settings, lambda p: Sourceify(self.Absolutify(p)),
- self.Pchify))
-- sources = filter(Compilable, all_sources)
-+ sources = [x for x in all_sources if Compilable(x)]
- if sources:
- self.WriteLn(SHARED_HEADER_SUFFIX_RULES_COMMENT1)
- extensions = set([os.path.splitext(s)[1] for s in sources])
-@@ -945,7 +947,7 @@
- '%s%s'
- % (name, cd_action, command))
- self.WriteLn()
-- outputs = map(self.Absolutify, outputs)
-+ outputs = [self.Absolutify(o) for o in outputs]
- # The makefile rules are all relative to the top dir, but the gyp actions
- # are defined relative to their containing dir. This replaces the obj
- # variable for the action rule with an absolute version so that the output
-@@ -1035,7 +1037,7 @@
- outputs = [gyp.xcode_emulation.ExpandEnvVars(o, env) for o in outputs]
- inputs = [gyp.xcode_emulation.ExpandEnvVars(i, env) for i in inputs]
-
-- outputs = map(self.Absolutify, outputs)
-+ outputs = [self.Absolutify(o) for o in outputs]
- all_outputs += outputs
- # Only write the 'obj' and 'builddir' rules for the "primary" output
- # (:1); it's superfluous for the "extra outputs", and this avoids
-@@ -1233,11 +1235,11 @@
- self.WriteList(cflags_objcc, 'CFLAGS_OBJCC_%s' % configname)
- includes = config.get('include_dirs')
- if includes:
-- includes = map(Sourceify, map(self.Absolutify, includes))
-+ includes = [Sourceify(self.Absolutify(include)) for include in includes]
- self.WriteList(includes, 'INCS_%s' % configname, prefix='-I')
-
- compilable = filter(Compilable, sources)
-- objs = map(self.Objectify, map(self.Absolutify, map(Target, compilable)))
-+ objs = [self.Objectify(self.Absolutify(Target(x))) for x in compilable]
- self.WriteList(objs, 'OBJS')
-
- for obj in objs:
-@@ -1309,7 +1311,7 @@
-
- # If there are any object files in our input file list, link them into our
- # output.
-- extra_link_deps += filter(Linkable, sources)
-+ extra_link_deps += [source for source in sources if Linkable(source)]
-
- self.WriteLn()
-
-@@ -1377,8 +1379,8 @@
- elif self.type == 'none':
- target = '%s.stamp' % target
- elif self.type != 'executable':
-- print ("ERROR: What output file should be generated?",
-- "type", self.type, "target", target)
-+ print(("ERROR: What output file should be generated?",
-+ "type", self.type, "target", target))
-
- target_prefix = spec.get('product_prefix', target_prefix)
- target = spec.get('product_name', target)
-@@ -1542,9 +1544,9 @@
- # Postbuilds expect to be run in the gyp file's directory, so insert an
- # implicit postbuild to cd to there.
- postbuilds.insert(0, gyp.common.EncodePOSIXShellList(['cd', self.path]))
-- for i in xrange(len(postbuilds)):
-- if not postbuilds[i].startswith('$'):
-- postbuilds[i] = EscapeShellArgument(postbuilds[i])
-+ for i, postbuild in enumerate(postbuilds):
-+ if not postbuild.startswith('$'):
-+ postbuilds[i] = EscapeShellArgument(postbuild)
- self.WriteLn('%s: builddir := $(abs_builddir)' % QuoteSpaces(self.output))
- self.WriteLn('%s: POSTBUILDS := %s' % (
- QuoteSpaces(self.output), ' '.join(postbuilds)))
-@@ -1634,7 +1636,7 @@
- self.WriteDoCmd([self.output_binary], deps, 'touch', part_of_all,
- postbuilds=postbuilds)
- else:
-- print "WARNING: no output for", self.type, target
-+ print("WARNING: no output for", self.type, target)
-
- # Add an alias for each target (if there are any outputs).
- # Installable target aliases are created below.
-@@ -1741,7 +1743,7 @@
- output is just a name to run the rule
- command: (optional) command name to generate unambiguous labels
- """
-- outputs = map(QuoteSpaces, outputs)
-+ outputs = [QuoteSpaces(o) for o in outputs]
- inputs = map(QuoteSpaces, inputs)
-
- if comment:
-@@ -1986,7 +1988,7 @@
- if options.toplevel_dir and options.toplevel_dir != '.':
- arguments += '-C', options.toplevel_dir
- arguments.append('BUILDTYPE=' + config)
-- print 'Building [%s]: %s' % (config, arguments)
-+ print('Building [%s]: %s' % (config, arguments))
- subprocess.check_call(arguments)
-
-
-diff --git a/tools/gyp/pylib/gyp/generator/msvs.py b/pylib/gyp/generator/msvs.py
-index 8fe9e5a..e8a2b36 100644
---- a/tools/gyp/pylib/gyp/generator/msvs.py
-+++ b/tools/gyp/pylib/gyp/generator/msvs.py
-@@ -2,6 +2,9 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
-+from __future__ import print_function
-+
-+import collections
- import copy
- import ntpath
- import os
-@@ -23,16 +26,6 @@
- from gyp.common import GypError
- from gyp.common import OrderedSet
-
--# TODO: Remove once bots are on 2.7, http://crbug.com/241769
--def _import_OrderedDict():
-- import collections
-- try:
-- return collections.OrderedDict
-- except AttributeError:
-- import gyp.ordered_dict
-- return gyp.ordered_dict.OrderedDict
--OrderedDict = _import_OrderedDict()
--
-
- # Regular expression for validating Visual Studio GUIDs. If the GUID
- # contains lowercase hex letters, MSVS will be fine. However,
-@@ -202,7 +195,7 @@
- if not prefix: prefix = []
- result = []
- excluded_result = []
-- folders = OrderedDict()
-+ folders = collections.OrderedDict()
- # Gather files into the final result, excluded, or folders.
- for s in sources:
- if len(s) == 1:
-@@ -469,7 +462,7 @@
- 'CommandLine': cmd,
- })
- # Add to the properties of primary input for each config.
-- for config_name, c_data in spec['configurations'].iteritems():
-+ for config_name, c_data in spec['configurations'].items():
- p.AddFileConfig(_FixPath(primary_input),
- _ConfigFullName(config_name, c_data), tools=[tool])
-
-@@ -775,8 +768,8 @@
- # the VCProj but cause the same problem on the final command-line. Moving
- # the item to the end of the list does works, but that's only possible if
- # there's only one such item. Let's just warn the user.
-- print >> sys.stderr, ('Warning: MSVS may misinterpret the odd number of ' +
-- 'quotes in ' + s)
-+ print(('Warning: MSVS may misinterpret the odd number of ' +
-+ 'quotes in ' + s), file=sys.stderr)
- return s
-
-
-@@ -991,7 +984,7 @@
- basenames.setdefault(basename, []).append(source)
-
- error = ''
-- for basename, files in basenames.iteritems():
-+ for basename, files in basenames.items():
- if len(files) > 1:
- error += ' %s: %s\n' % (basename, ' '.join(files))
-
-@@ -1023,7 +1016,7 @@
- relative_path_of_gyp_file = gyp.common.RelativePath(gyp_path, project_dir)
-
- config_type = _GetMSVSConfigurationType(spec, project.build_file)
-- for config_name, config in spec['configurations'].iteritems():
-+ for config_name, config in spec['configurations'].items():
- _AddConfigurationToMSVSProject(p, spec, config_type, config_name, config)
-
- # MSVC08 and prior version cannot handle duplicate basenames in the same
-@@ -1392,10 +1385,10 @@
- A list of Tool objects.
- """
- tool_list = []
-- for tool, settings in tools.iteritems():
-+ for tool, settings in tools.items():
- # Collapse settings with lists.
- settings_fixed = {}
-- for setting, value in settings.iteritems():
-+ for setting, value in settings.items():
- if type(value) == list:
- if ((tool == 'VCLinkerTool' and
- setting == 'AdditionalDependencies') or
-@@ -1570,7 +1563,7 @@
- def _GetPrecompileRelatedFiles(spec):
- # Gather a list of precompiled header related sources.
- precompiled_related = []
-- for _, config in spec['configurations'].iteritems():
-+ for _, config in spec['configurations'].items():
- for k in precomp_keys:
- f = config.get(k)
- if f:
-@@ -1581,7 +1574,7 @@
- def _ExcludeFilesFromBeingBuilt(p, spec, excluded_sources, excluded_idl,
- list_excluded):
- exclusions = _GetExcludedFilesFromBuild(spec, excluded_sources, excluded_idl)
-- for file_name, excluded_configs in exclusions.iteritems():
-+ for file_name, excluded_configs in exclusions.items():
- if (not list_excluded and
- len(excluded_configs) == len(spec['configurations'])):
- # If we're not listing excluded files, then they won't appear in the
-@@ -1598,7 +1591,7 @@
- # Exclude excluded sources from being built.
- for f in excluded_sources:
- excluded_configs = []
-- for config_name, config in spec['configurations'].iteritems():
-+ for config_name, config in spec['configurations'].items():
- precomped = [_FixPath(config.get(i, '')) for i in precomp_keys]
- # Don't do this for ones that are precompiled header related.
- if f not in precomped:
-@@ -1608,7 +1601,7 @@
- # Exclude them now.
- for f in excluded_idl:
- excluded_configs = []
-- for config_name, config in spec['configurations'].iteritems():
-+ for config_name, config in spec['configurations'].items():
- excluded_configs.append((config_name, config))
- exclusions[f] = excluded_configs
- return exclusions
-@@ -1617,7 +1610,7 @@
- def _AddToolFilesToMSVS(p, spec):
- # Add in tool files (rules).
- tool_files = OrderedSet()
-- for _, config in spec['configurations'].iteritems():
-+ for _, config in spec['configurations'].items():
- for f in config.get('msvs_tool_files', []):
- tool_files.add(f)
- for f in tool_files:
-@@ -1630,7 +1623,7 @@
- # kind (i.e. C vs. C++) as the precompiled header source stub needs
- # to have use of precompiled headers disabled.
- extensions_excluded_from_precompile = []
-- for config_name, config in spec['configurations'].iteritems():
-+ for config_name, config in spec['configurations'].items():
- source = config.get('msvs_precompiled_source')
- if source:
- source = _FixPath(source)
-@@ -1651,7 +1644,7 @@
- else:
- basename, extension = os.path.splitext(source)
- if extension in extensions_excluded_from_precompile:
-- for config_name, config in spec['configurations'].iteritems():
-+ for config_name, config in spec['configurations'].items():
- tool = MSVSProject.Tool('VCCLCompilerTool',
- {'UsePrecompiledHeader': '0',
- 'ForcedIncludeFiles': '$(NOINHERIT)'})
-@@ -1702,7 +1695,7 @@
- return # Nothing to add
- # Write out the user file.
- user_file = _CreateMSVSUserFile(project_path, version, spec)
-- for config_name, c_data in spec['configurations'].iteritems():
-+ for config_name, c_data in spec['configurations'].items():
- user_file.AddDebugSettings(_ConfigFullName(config_name, c_data),
- action, environment, working_directory)
- user_file.WriteIfChanged()
-@@ -1756,7 +1749,7 @@
- def _DictsToFolders(base_path, bucket, flat):
- # Convert to folders recursively.
- children = []
-- for folder, contents in bucket.iteritems():
-+ for folder, contents in bucket.items():
- if type(contents) == dict:
- folder_children = _DictsToFolders(os.path.join(base_path, folder),
- contents, flat)
-@@ -1778,8 +1771,8 @@
- # such projects up one level.
- if (type(node) == dict and
- len(node) == 1 and
-- node.keys()[0] == parent + '.vcproj'):
-- return node[node.keys()[0]]
-+ next(iter(node)) == parent + '.vcproj'):
-+ return node[next(iter(node))]
- if type(node) != dict:
- return node
- for child in node:
-@@ -1798,8 +1791,8 @@
- # Walk down from the top until we hit a folder that has more than one entry.
- # In practice, this strips the top-level "src/" dir from the hierarchy in
- # the solution.
-- while len(root) == 1 and type(root[root.keys()[0]]) == dict:
-- root = root[root.keys()[0]]
-+ while len(root) == 1 and type(root[next(iter(root))]) == dict:
-+ root = root[next(iter(root))]
- # Collapse singles.
- root = _CollapseSingles('', root)
- # Merge buckets until everything is a root entry.
-@@ -1828,7 +1821,7 @@
- # Prepare a dict indicating which project configurations are used for which
- # solution configurations for this target.
- config_platform_overrides = {}
-- for config_name, c in spec['configurations'].iteritems():
-+ for config_name, c in spec['configurations'].items():
- config_fullname = _ConfigFullName(config_name, c)
- platform = c.get('msvs_target_platform', _ConfigPlatform(c))
- fixed_config_fullname = '%s|%s' % (
-@@ -1967,7 +1960,7 @@
- msvs_version = params['msvs_version']
- devenv = os.path.join(msvs_version.path, 'Common7', 'IDE', 'devenv.com')
-
-- for build_file, build_file_dict in data.iteritems():
-+ for build_file, build_file_dict in data.items():
- (build_file_root, build_file_ext) = os.path.splitext(build_file)
- if build_file_ext != '.gyp':
- continue
-@@ -1977,7 +1970,7 @@
-
- for config in configurations:
- arguments = [devenv, sln_path, '/Build', config]
-- print 'Building [%s]: %s' % (config, arguments)
-+ print('Building [%s]: %s' % (config, arguments))
- rtn = subprocess.check_call(arguments)
-
-
-@@ -2029,7 +2022,7 @@
- configs = set()
- for qualified_target in target_list:
- spec = target_dicts[qualified_target]
-- for config_name, config in spec['configurations'].iteritems():
-+ for config_name, config in spec['configurations'].items():
- configs.add(_ConfigFullName(config_name, config))
- configs = list(configs)
-
-@@ -2072,7 +2065,7 @@
- if generator_flags.get('msvs_error_on_missing_sources', False):
- raise GypError(error_message)
- else:
-- print >> sys.stdout, "Warning: " + error_message
-+ print("Warning: " + error_message, file=sys.stdout)
-
-
- def _GenerateMSBuildFiltersFile(filters_path, source_files,
-@@ -2669,7 +2662,7 @@
-
- def _GetMSBuildProjectConfigurations(configurations):
- group = ['ItemGroup', {'Label': 'ProjectConfigurations'}]
-- for (name, settings) in sorted(configurations.iteritems()):
-+ for (name, settings) in sorted(configurations.items()):
- configuration, platform = _GetConfigurationAndPlatform(name, settings)
- designation = '%s|%s' % (configuration, platform)
- group.append(
-@@ -2742,7 +2735,7 @@
-
- def _GetMSBuildConfigurationDetails(spec, build_file):
- properties = {}
-- for name, settings in spec['configurations'].iteritems():
-+ for name, settings in spec['configurations'].items():
- msbuild_attributes = _GetMSBuildAttributes(spec, settings, build_file)
- condition = _GetConfigurationCondition(name, settings)
- character_set = msbuild_attributes.get('CharacterSet')
-@@ -2776,9 +2769,9 @@
- user_props = r'$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props'
- additional_props = {}
- props_specified = False
-- for name, settings in sorted(configurations.iteritems()):
-+ for name, settings in sorted(configurations.items()):
- configuration = _GetConfigurationCondition(name, settings)
-- if settings.has_key('msbuild_props'):
-+ if 'msbuild_props' in settings:
- additional_props[configuration] = _FixPaths(settings['msbuild_props'])
- props_specified = True
- else:
-@@ -2798,7 +2791,7 @@
- ]
- else:
- sheets = []
-- for condition, props in additional_props.iteritems():
-+ for condition, props in additional_props.items():
- import_group = [
- 'ImportGroup',
- {'Label': 'PropertySheets',
-@@ -2831,7 +2824,7 @@
- elif a == 'ConfigurationType':
- msbuild_attributes[a] = _ConvertMSVSConfigurationType(msvs_attributes[a])
- else:
-- print 'Warning: Do not know how to convert MSVS attribute ' + a
-+ print('Warning: Do not know how to convert MSVS attribute ' + a)
- return msbuild_attributes
-
-
-@@ -2927,7 +2920,7 @@
- new_paths = '$(ExecutablePath);' + ';'.join(new_paths)
-
- properties = {}
-- for (name, configuration) in sorted(configurations.iteritems()):
-+ for (name, configuration) in sorted(configurations.items()):
- condition = _GetConfigurationCondition(name, configuration)
- attributes = _GetMSBuildAttributes(spec, configuration, build_file)
- msbuild_settings = configuration['finalized_msbuild_settings']
-@@ -2952,7 +2945,7 @@
- _AddConditionalProperty(properties, condition, 'ExecutablePath',
- new_paths)
- tool_settings = msbuild_settings.get('', {})
-- for name, value in sorted(tool_settings.iteritems()):
-+ for name, value in sorted(tool_settings.items()):
- formatted_value = _GetValueFormattedForMSBuild('', name, value)
- _AddConditionalProperty(properties, condition, name, formatted_value)
- return _GetMSBuildPropertyGroup(spec, None, properties)
-@@ -3021,7 +3014,7 @@
- # NOTE: reverse(topsort(DAG)) = topsort(reverse_edges(DAG))
- for name in reversed(properties_ordered):
- values = properties[name]
-- for value, conditions in sorted(values.iteritems()):
-+ for value, conditions in sorted(values.items()):
- if len(conditions) == num_configurations:
- # If the value is the same all configurations,
- # just add one unconditional entry.
-@@ -3034,18 +3027,18 @@
-
- def _GetMSBuildToolSettingsSections(spec, configurations):
- groups = []
-- for (name, configuration) in sorted(configurations.iteritems()):
-+ for (name, configuration) in sorted(configurations.items()):
- msbuild_settings = configuration['finalized_msbuild_settings']
- group = ['ItemDefinitionGroup',
- {'Condition': _GetConfigurationCondition(name, configuration)}
- ]
-- for tool_name, tool_settings in sorted(msbuild_settings.iteritems()):
-+ for tool_name, tool_settings in sorted(msbuild_settings.items()):
- # Skip the tool named '' which is a holder of global settings handled
- # by _GetMSBuildConfigurationGlobalProperties.
- if tool_name:
- if tool_settings:
- tool = [tool_name]
-- for name, value in sorted(tool_settings.iteritems()):
-+ for name, value in sorted(tool_settings.items()):
- formatted_value = _GetValueFormattedForMSBuild(tool_name, name,
- value)
- tool.append([name, formatted_value])
-@@ -3078,8 +3071,8 @@
- for ignored_setting in ignored_settings:
- value = configuration.get(ignored_setting)
- if value:
-- print ('Warning: The automatic conversion to MSBuild does not handle '
-- '%s. Ignoring setting of %s' % (ignored_setting, str(value)))
-+ print('Warning: The automatic conversion to MSBuild does not handle '
-+ '%s. Ignoring setting of %s' % (ignored_setting, str(value)))
-
- defines = [_EscapeCppDefineForMSBuild(d) for d in defines]
- disabled_warnings = _GetDisabledWarnings(configuration)
-@@ -3245,7 +3238,7 @@
- {'Condition': condition},
- 'true'])
- # Add precompile if needed
-- for config_name, configuration in spec['configurations'].iteritems():
-+ for config_name, configuration in spec['configurations'].items():
- precompiled_source = configuration.get('msvs_precompiled_source', '')
- if precompiled_source != '':
- precompiled_source = _FixPath(precompiled_source)
-@@ -3291,7 +3284,7 @@
- ['Project', guid],
- ['ReferenceOutputAssembly', 'false']
- ]
-- for config in dependency.spec.get('configurations', {}).itervalues():
-+ for config in dependency.spec.get('configurations', {}).values():
- if config.get('msvs_use_library_dependency_inputs', 0):
- project_ref.append(['UseLibraryDependencyInputs', 'true'])
- break
-@@ -3360,7 +3353,7 @@
- extension_to_rule_name)
- missing_sources = _VerifySourcesExist(sources, project_dir)
-
-- for configuration in configurations.itervalues():
-+ for configuration in configurations.values():
- _FinalizeMSBuildSettings(spec, configuration)
-
- # Add attributes to root element
-@@ -3486,7 +3479,7 @@
- """
- sources_handled_by_action = OrderedSet()
- actions_spec = []
-- for primary_input, actions in actions_to_add.iteritems():
-+ for primary_input, actions in actions_to_add.items():
- inputs = OrderedSet()
- outputs = OrderedSet()
- descriptions = []
-diff --git a/tools/gyp/pylib/gyp/generator/msvs_test.py b/pylib/gyp/generator/msvs_test.py
-index c0b021d..838d236 100755
---- a/tools/gyp/pylib/gyp/generator/msvs_test.py
-+++ b/tools/gyp/pylib/gyp/generator/msvs_test.py
-@@ -7,13 +7,16 @@
-
- import gyp.generator.msvs as msvs
- import unittest
--import StringIO
-+try:
-+ from StringIO import StringIO
-+except ImportError:
-+ from io import StringIO
-
-
- class TestSequenceFunctions(unittest.TestCase):
-
- def setUp(self):
-- self.stderr = StringIO.StringIO()
-+ self.stderr = StringIO()
-
- def test_GetLibraries(self):
- self.assertEqual(
-diff --git a/tools/gyp/pylib/gyp/generator/ninja.py b/pylib/gyp/generator/ninja.py
-index 6de87b7..66faabc 100644
---- a/tools/gyp/pylib/gyp/generator/ninja.py
-+++ b/tools/gyp/pylib/gyp/generator/ninja.py
-@@ -2,6 +2,8 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
-+from __future__ import print_function
-+
- import collections
- import copy
- import hashlib
-@@ -18,7 +20,10 @@
- import gyp.msvs_emulation
- import gyp.MSVSUtil as MSVSUtil
- import gyp.xcode_emulation
--from cStringIO import StringIO
-+try:
-+ from cStringIO import StringIO
-+except ImportError:
-+ from io import StringIO
-
- from gyp.common import GetEnvironFallback
- import gyp.ninja_syntax as ninja_syntax
-@@ -350,7 +355,7 @@
-
- Uses a stamp file if necessary."""
-
-- assert targets == filter(None, targets), targets
-+ assert targets == [t for t in targets if t], targets
- if len(targets) == 0:
- assert not order_only
- return None
-@@ -427,8 +432,8 @@
- compile_depends.append(target.PreCompileInput())
- if target.uses_cpp:
- self.target.uses_cpp = True
-- actions_depends = filter(None, actions_depends)
-- compile_depends = filter(None, compile_depends)
-+ actions_depends = [d for d in actions_depends if d]
-+ compile_depends = [d for d in compile_depends if d]
- actions_depends = self.WriteCollapsedDependencies('actions_depends',
- actions_depends)
- compile_depends = self.WriteCollapsedDependencies('compile_depends',
-@@ -455,8 +460,8 @@
- try:
- sources = extra_sources + spec.get('sources', [])
- except TypeError:
-- print 'extra_sources: ', str(extra_sources)
-- print 'spec.get("sources"): ', str(spec.get('sources'))
-+ print('extra_sources: ', str(extra_sources))
-+ print('spec.get("sources"): ', str(spec.get('sources')))
- raise
- if sources:
- if self.flavor == 'mac' and len(self.archs) > 1:
-@@ -485,8 +490,9 @@
- if self.flavor != 'mac' or len(self.archs) == 1:
- link_deps += [self.GypPathToNinja(o) for o in obj_outputs]
- else:
-- print "Warning: Actions/rules writing object files don't work with " \
-- "multiarch targets, dropping. (target %s)" % spec['target_name']
-+ print("Warning: Actions/rules writing object files don't work with " \
-+ "multiarch targets, dropping. (target %s)" %
-+ spec['target_name'])
- elif self.flavor == 'mac' and len(self.archs) > 1:
- link_deps = collections.defaultdict(list)
-
-@@ -838,7 +844,7 @@
- 'XCASSETS_LAUNCH_IMAGE': 'launch-image',
- }
- settings = self.xcode_settings.xcode_settings[self.config_name]
-- for settings_key, arg_name in settings_to_arg.iteritems():
-+ for settings_key, arg_name in settings_to_arg.items():
- value = settings.get(settings_key)
- if value:
- extra_arguments[arg_name] = value
-@@ -1772,7 +1778,7 @@
-
- # VS 2015 uses 20% more working set than VS 2013 and can consume all RAM
- # on a 64 GB machine.
-- mem_limit = max(1, stat.ullTotalPhys / (5 * (2 ** 30))) # total / 5GB
-+ mem_limit = max(1, stat.ullTotalPhys // (5 * (2 ** 30))) # total / 5GB
- hard_cap = max(1, int(os.environ.get('GYP_LINK_CONCURRENCY_MAX', 2**32)))
- return min(mem_limit, hard_cap)
- elif sys.platform.startswith('linux'):
-@@ -1784,14 +1790,14 @@
- if not match:
- continue
- # Allow 8Gb per link on Linux because Gold is quite memory hungry
-- return max(1, int(match.group(1)) / (8 * (2 ** 20)))
-+ return max(1, int(match.group(1)) // (8 * (2 ** 20)))
- return 1
- elif sys.platform == 'darwin':
- try:
- avail_bytes = int(subprocess.check_output(['sysctl', '-n', 'hw.memsize']))
- # A static library debug build of Chromium's unit_tests takes ~2.7GB, so
- # 4GB per ld process allows for some more bloat.
-- return max(1, avail_bytes / (4 * (2 ** 30))) # total / 4GB
-+ return max(1, avail_bytes // (4 * (2 ** 30))) # total / 4GB
- except:
- return 1
- else:
-@@ -1946,7 +1952,7 @@
- wrappers[key[:-len('_wrapper')]] = os.path.join(build_to_root, value)
-
- # Support wrappers from environment variables too.
-- for key, value in os.environ.iteritems():
-+ for key, value in os.environ.items():
- if key.lower().endswith('_wrapper'):
- key_prefix = key[:-len('_wrapper')]
- key_prefix = re.sub(r'\.HOST$', '.host', key_prefix)
-@@ -1966,7 +1972,7 @@
- configs, generator_flags)
- cl_paths = gyp.msvs_emulation.GenerateEnvironmentFiles(
- toplevel_build, generator_flags, shared_system_includes, OpenOutput)
-- for arch, path in sorted(cl_paths.iteritems()):
-+ for arch, path in sorted(cl_paths.items()):
- if clang_cl:
- # If we have selected clang-cl, use that instead.
- path = clang_cl
-@@ -2381,6 +2387,7 @@
-
- qualified_target_for_hash = gyp.common.QualifiedTarget(build_file, name,
- toolset)
-+ qualified_target_for_hash = qualified_target_for_hash.encode('utf-8')
- hash_for_rules = hashlib.md5(qualified_target_for_hash).hexdigest()
-
- base_path = os.path.dirname(build_file)
-@@ -2447,7 +2454,7 @@
- for config in configurations:
- builddir = os.path.join(options.toplevel_dir, 'out', config)
- arguments = ['ninja', '-C', builddir]
-- print 'Building [%s]: %s' % (config, arguments)
-+ print('Building [%s]: %s' % (config, arguments))
- subprocess.check_call(arguments)
-
-
-@@ -2475,7 +2482,7 @@
- GenerateOutputForConfig(target_list, target_dicts, data, params,
- user_config)
- else:
-- config_names = target_dicts[target_list[0]]['configurations'].keys()
-+ config_names = target_dicts[target_list[0]]['configurations']
- if params['parallel']:
- try:
- pool = multiprocessing.Pool(len(config_names))
-@@ -2484,7 +2491,7 @@
- arglists.append(
- (target_list, target_dicts, data, params, config_name))
- pool.map(CallGenerateOutputForConfig, arglists)
-- except KeyboardInterrupt, e:
-+ except KeyboardInterrupt as e:
- pool.terminate()
- raise e
- else:
-diff --git a/tools/gyp/pylib/gyp/generator/ninja_test.py b/pylib/gyp/generator/ninja_test.py
-index 1767b2f..1ad68e4 100644
---- a/tools/gyp/pylib/gyp/generator/ninja_test.py
-+++ b/tools/gyp/pylib/gyp/generator/ninja_test.py
-@@ -8,7 +8,6 @@
-
- import gyp.generator.ninja as ninja
- import unittest
--import StringIO
- import sys
- import TestCommon
-
-diff --git a/tools/gyp/pylib/gyp/generator/xcode.py b/pylib/gyp/generator/xcode.py
-index b35372a..8bc22be 100644
---- a/tools/gyp/pylib/gyp/generator/xcode.py
-+++ b/tools/gyp/pylib/gyp/generator/xcode.py
-@@ -2,6 +2,8 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
-+from __future__ import print_function
-+
- import filecmp
- import gyp.common
- import gyp.xcodeproj_file
-@@ -129,7 +131,7 @@
- try:
- os.makedirs(self.path)
- self.created_dir = True
-- except OSError, e:
-+ except OSError as e:
- if e.errno != errno.EEXIST:
- raise
-
-@@ -183,7 +185,7 @@
- # the tree tree view for UI display.
- # Any values set globally are applied to all configurations, then any
- # per-configuration values are applied.
-- for xck, xcv in self.build_file_dict.get('xcode_settings', {}).iteritems():
-+ for xck, xcv in self.build_file_dict.get('xcode_settings', {}).items():
- xccl.SetBuildSetting(xck, xcv)
- if 'xcode_config_file' in self.build_file_dict:
- config_ref = self.project.AddOrGetFileInRootGroup(
-@@ -197,7 +199,7 @@
- if build_file_configuration_named:
- xcc = xccl.ConfigurationNamed(config_name)
- for xck, xcv in build_file_configuration_named.get('xcode_settings',
-- {}).iteritems():
-+ {}).items():
- xcc.SetBuildSetting(xck, xcv)
- if 'xcode_config_file' in build_file_configuration_named:
- config_ref = self.project.AddOrGetFileInRootGroup(
-@@ -273,7 +275,7 @@
- script = script + "\n".join(
- ['export %s="%s"' %
- (key, gyp.xcodeproj_file.ConvertVariablesToShellSyntax(val))
-- for (key, val) in command.get('environment').iteritems()]) + "\n"
-+ for (key, val) in command.get('environment').items()]) + "\n"
-
- # Some test end up using sockets, files on disk, etc. and can get
- # confused if more then one test runs at a time. The generator
-@@ -444,7 +446,7 @@
- dir=self.path)
-
- try:
-- output_file = os.fdopen(output_fd, 'wb')
-+ output_file = os.fdopen(output_fd, 'w')
-
- self.project_file.Print(output_file)
- output_file.close()
-@@ -454,7 +456,7 @@
- same = False
- try:
- same = filecmp.cmp(pbxproj_path, new_pbxproj_path, False)
-- except OSError, e:
-+ except OSError as e:
- if e.errno != errno.ENOENT:
- raise
-
-@@ -473,10 +475,10 @@
- #
- # No way to get the umask without setting a new one? Set a safe one
- # and then set it back to the old value.
-- umask = os.umask(077)
-+ umask = os.umask(0o77)
- os.umask(umask)
-
-- os.chmod(new_pbxproj_path, 0666 & ~umask)
-+ os.chmod(new_pbxproj_path, 0o666 & ~umask)
- os.rename(new_pbxproj_path, pbxproj_path)
-
- except Exception:
-@@ -566,7 +568,7 @@
- def PerformBuild(data, configurations, params):
- options = params['options']
-
-- for build_file, build_file_dict in data.iteritems():
-+ for build_file, build_file_dict in data.items():
- (build_file_root, build_file_ext) = os.path.splitext(build_file)
- if build_file_ext != '.gyp':
- continue
-@@ -577,7 +579,7 @@
- for config in configurations:
- arguments = ['xcodebuild', '-project', xcodeproj_path]
- arguments += ['-configuration', config]
-- print "Building [%s]: %s" % (config, arguments)
-+ print("Building [%s]: %s" % (config, arguments))
- subprocess.check_call(arguments)
-
-
-@@ -625,7 +627,7 @@
- skip_excluded_files = \
- not generator_flags.get('xcode_list_excluded_files', True)
- xcode_projects = {}
-- for build_file, build_file_dict in data.iteritems():
-+ for build_file, build_file_dict in data.items():
- (build_file_root, build_file_ext) = os.path.splitext(build_file)
- if build_file_ext != '.gyp':
- continue
-@@ -744,7 +746,7 @@
- xctarget_type = gyp.xcodeproj_file.PBXNativeTarget
- try:
- target_properties['productType'] = _types[type_bundle_key]
-- except KeyError, e:
-+ except KeyError as e:
- gyp.common.ExceptionAppend(e, "-- unknown product type while "
- "writing target %s" % target_name)
- raise
-@@ -1016,22 +1018,21 @@
- makefile_name)
- # TODO(mark): try/close? Write to a temporary file and swap it only
- # if it's got changes?
-- makefile = open(makefile_path, 'wb')
-+ makefile = open(makefile_path, 'w')
-
- # make will build the first target in the makefile by default. By
- # convention, it's called "all". List all (or at least one)
- # concrete output for each rule source as a prerequisite of the "all"
- # target.
- makefile.write('all: \\\n')
-- for concrete_output_index in \
-- xrange(0, len(concrete_outputs_by_rule_source)):
-+ for concrete_output_index, concrete_output_by_rule_source in \
-+ enumerate(concrete_outputs_by_rule_source):
- # Only list the first (index [0]) concrete output of each input
- # in the "all" target. Otherwise, a parallel make (-j > 1) would
- # attempt to process each input multiple times simultaneously.
- # Otherwise, "all" could just contain the entire list of
- # concrete_outputs_all.
-- concrete_output = \
-- concrete_outputs_by_rule_source[concrete_output_index][0]
-+ concrete_output = concrete_output_by_rule_source[0]
- if concrete_output_index == len(concrete_outputs_by_rule_source) - 1:
- eol = ''
- else:
-@@ -1047,8 +1048,8 @@
- # rule source. Collect the names of the directories that are
- # required.
- concrete_output_dirs = []
-- for concrete_output_index in xrange(0, len(concrete_outputs)):
-- concrete_output = concrete_outputs[concrete_output_index]
-+ for concrete_output_index, concrete_output in \
-+ enumerate(concrete_outputs):
- if concrete_output_index == 0:
- bol = ''
- else:
-@@ -1066,8 +1067,7 @@
- # the set of additional rule inputs, if any.
- prerequisites = [rule_source]
- prerequisites.extend(rule.get('inputs', []))
-- for prerequisite_index in xrange(0, len(prerequisites)):
-- prerequisite = prerequisites[prerequisite_index]
-+ for prerequisite_index, prerequisite in enumerate(prerequisites):
- if prerequisite_index == len(prerequisites) - 1:
- eol = ''
- else:
-@@ -1279,7 +1279,7 @@
- set_define = EscapeXcodeDefine(define)
- xcbc.AppendBuildSetting('GCC_PREPROCESSOR_DEFINITIONS', set_define)
- if 'xcode_settings' in configuration:
-- for xck, xcv in configuration['xcode_settings'].iteritems():
-+ for xck, xcv in configuration['xcode_settings'].items():
- xcbc.SetBuildSetting(xck, xcv)
- if 'xcode_config_file' in configuration:
- config_ref = pbxp.AddOrGetFileInRootGroup(
-@@ -1287,7 +1287,7 @@
- xcbc.SetBaseConfiguration(config_ref)
-
- build_files = []
-- for build_file, build_file_dict in data.iteritems():
-+ for build_file, build_file_dict in data.items():
- if build_file.endswith('.gyp'):
- build_files.append(build_file)
-
-diff --git a/tools/gyp/pylib/gyp/input.py b/pylib/gyp/input.py
-index 21b4606..8ac47cb 100644
---- a/tools/gyp/pylib/gyp/input.py
-+++ b/tools/gyp/pylib/gyp/input.py
-@@ -2,8 +2,9 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
--import ast
-+from __future__ import print_function
-
-+import ast
- import gyp.common
- import gyp.simple_copy
- import multiprocessing
-@@ -231,10 +232,10 @@
- else:
- build_file_data = eval(build_file_contents, {'__builtins__': None},
- None)
-- except SyntaxError, e:
-+ except SyntaxError as e:
- e.filename = build_file_path
- raise
-- except Exception, e:
-+ except Exception as e:
- gyp.common.ExceptionAppend(e, 'while reading ' + build_file_path)
- raise
-
-@@ -254,7 +255,7 @@
- else:
- LoadBuildFileIncludesIntoDict(build_file_data, build_file_path, data,
- aux_data, None, check)
-- except Exception, e:
-+ except Exception as e:
- gyp.common.ExceptionAppend(e,
- 'while reading includes of ' + build_file_path)
- raise
-@@ -291,7 +292,7 @@
- subdict_path, include)
-
- # Recurse into subdictionaries.
-- for k, v in subdict.iteritems():
-+ for k, v in subdict.items():
- if type(v) is dict:
- LoadBuildFileIncludesIntoDict(v, subdict_path, data, aux_data,
- None, check)
-@@ -456,7 +457,7 @@
- try:
- LoadTargetBuildFile(dependency, data, aux_data, variables,
- includes, depth, check, load_dependencies)
-- except Exception, e:
-+ except Exception as e:
- gyp.common.ExceptionAppend(
- e, 'while loading dependencies of %s' % build_file_path)
- raise
-@@ -477,7 +478,7 @@
- signal.signal(signal.SIGINT, signal.SIG_IGN)
-
- # Apply globals so that the worker process behaves the same.
-- for key, value in global_flags.iteritems():
-+ for key, value in global_flags.items():
- globals()[key] = value
-
- SetGeneratorGlobals(generator_input_info)
-@@ -499,12 +500,12 @@
- return (build_file_path,
- build_file_data,
- dependencies)
-- except GypError, e:
-+ except GypError as e:
- sys.stderr.write("gyp: %s\n" % e)
- return None
-- except Exception, e:
-- print >>sys.stderr, 'Exception:', e
-- print >>sys.stderr, traceback.format_exc()
-+ except Exception as e:
-+ print('Exception:', e, file=sys.stderr)
-+ print(traceback.format_exc(), file=sys.stderr)
- return None
-
-
-@@ -594,7 +595,7 @@
- args = (global_flags, dependency,
- variables, includes, depth, check, generator_input_info),
- callback = parallel_state.LoadTargetBuildFileCallback)
-- except KeyboardInterrupt, e:
-+ except KeyboardInterrupt as e:
- parallel_state.pool.terminate()
- raise e
-
-@@ -894,7 +895,7 @@
- stderr=subprocess.PIPE,
- stdin=subprocess.PIPE,
- cwd=build_file_dir)
-- except Exception, e:
-+ except Exception as e:
- raise GypError("%s while executing command '%s' in %s" %
- (e, contents, build_file))
-
-@@ -1008,9 +1009,9 @@
-
- # Convert all strings that are canonically-represented integers into integers.
- if type(output) is list:
-- for index in xrange(0, len(output)):
-- if IsStrCanonicalInt(output[index]):
-- output[index] = int(output[index])
-+ for index, outstr in enumerate(output):
-+ if IsStrCanonicalInt(outstr):
-+ output[index] = int(outstr)
- elif IsStrCanonicalInt(output):
- output = int(output)
-
-@@ -1079,13 +1080,13 @@
- if eval(ast_code, {'__builtins__': None}, variables):
- return true_dict
- return false_dict
-- except SyntaxError, e:
-+ except SyntaxError as e:
- syntax_error = SyntaxError('%s while evaluating condition \'%s\' in %s '
- 'at character %d.' %
- (str(e.args[0]), e.text, build_file, e.offset),
- e.filename, e.lineno, e.offset, e.text)
- raise syntax_error
-- except NameError, e:
-+ except NameError as e:
- gyp.common.ExceptionAppend(e, 'while evaluating condition \'%s\' in %s' %
- (cond_expr_expanded, build_file))
- raise GypError(e)
-@@ -1140,7 +1141,7 @@
- def LoadAutomaticVariablesFromDict(variables, the_dict):
- # Any keys with plain string values in the_dict become automatic variables.
- # The variable name is the key name with a "_" character prepended.
-- for key, value in the_dict.iteritems():
-+ for key, value in the_dict.items():
- if type(value) in (str, int, list):
- variables['_' + key] = value
-
-@@ -1153,7 +1154,7 @@
- # the_dict in the_dict's parent dict. If the_dict's parent is not a dict
- # (it could be a list or it could be parentless because it is a root dict),
- # the_dict_key will be None.
-- for key, value in the_dict.get('variables', {}).iteritems():
-+ for key, value in the_dict.get('variables', {}).items():
- if type(value) not in (str, int, list):
- continue
-
-@@ -1192,7 +1193,7 @@
- # list before we process them so that you can reference one
- # variable from another. They will be fully expanded by recursion
- # in ExpandVariables.
-- for key, value in the_dict['variables'].iteritems():
-+ for key, value in the_dict['variables'].items():
- variables[key] = value
-
- # Handle the associated variables dict first, so that any variable
-@@ -1205,7 +1206,7 @@
-
- LoadVariablesFromVariablesDict(variables, the_dict, the_dict_key)
-
-- for key, value in the_dict.iteritems():
-+ for key, value in the_dict.items():
- # Skip "variables", which was already processed if present.
- if key != 'variables' and type(value) is str:
- expanded = ExpandVariables(value, phase, variables, build_file)
-@@ -1263,7 +1264,7 @@
-
- # Recurse into child dicts, or process child lists which may result in
- # further recursion into descendant dicts.
-- for key, value in the_dict.iteritems():
-+ for key, value in the_dict.items():
- # Skip "variables" and string values, which were already processed if
- # present.
- if key == 'variables' or type(value) is str:
-@@ -1360,14 +1361,14 @@
- for dep in dependency_sections
- for op in ('', '!', '/')]
-
-- for target, target_dict in targets.iteritems():
-+ for target, target_dict in targets.items():
- target_build_file = gyp.common.BuildFile(target)
- toolset = target_dict['toolset']
- for dependency_key in all_dependency_sections:
- dependencies = target_dict.get(dependency_key, [])
-- for index in xrange(0, len(dependencies)):
-+ for index, dep in enumerate(dependencies):
- dep_file, dep_target, dep_toolset = gyp.common.ResolveTarget(
-- target_build_file, dependencies[index], toolset)
-+ target_build_file, dep, toolset)
- if not multiple_toolsets:
- # Ignore toolset specification in the dependency if it is specified.
- dep_toolset = toolset
-@@ -1400,7 +1401,7 @@
- dependency list, must be qualified when this function is called.
- """
-
-- for target, target_dict in targets.iteritems():
-+ for target, target_dict in targets.items():
- toolset = target_dict['toolset']
- target_build_file = gyp.common.BuildFile(target)
- for dependency_key in dependency_sections:
-@@ -1462,7 +1463,7 @@
- def RemoveDuplicateDependencies(targets):
- """Makes sure every dependency appears only once in all targets's dependency
- lists."""
-- for target_name, target_dict in targets.iteritems():
-+ for target_name, target_dict in targets.items():
- for dependency_key in dependency_sections:
- dependencies = target_dict.get(dependency_key, [])
- if dependencies:
-@@ -1478,7 +1479,7 @@
- def RemoveSelfDependencies(targets):
- """Remove self dependencies from targets that have the prune_self_dependency
- variable set."""
-- for target_name, target_dict in targets.iteritems():
-+ for target_name, target_dict in targets.items():
- for dependency_key in dependency_sections:
- dependencies = target_dict.get(dependency_key, [])
- if dependencies:
-@@ -1491,7 +1492,7 @@
- def RemoveLinkDependenciesFromNoneTargets(targets):
- """Remove dependencies having the 'link_dependency' attribute from the 'none'
- targets."""
-- for target_name, target_dict in targets.iteritems():
-+ for target_name, target_dict in targets.items():
- for dependency_key in dependency_sections:
- dependencies = target_dict.get(dependency_key, [])
- if dependencies:
-@@ -1783,14 +1784,14 @@
- # Create a DependencyGraphNode for each target. Put it into a dict for easy
- # access.
- dependency_nodes = {}
-- for target, spec in targets.iteritems():
-+ for target, spec in targets.items():
- if target not in dependency_nodes:
- dependency_nodes[target] = DependencyGraphNode(target)
-
- # Set up the dependency links. Targets that have no dependencies are treated
- # as dependent on root_node.
- root_node = DependencyGraphNode(None)
-- for target, spec in targets.iteritems():
-+ for target, spec in targets.items():
- target_node = dependency_nodes[target]
- target_build_file = gyp.common.BuildFile(target)
- dependencies = spec.get('dependencies')
-@@ -1814,7 +1815,7 @@
- if not root_node.dependents:
- # If all targets have dependencies, add the first target as a dependent
- # of root_node so that the cycle can be discovered from root_node.
-- target = targets.keys()[0]
-+ target = next(iter(targets))
- target_node = dependency_nodes[target]
- target_node.dependencies.append(root_node)
- root_node.dependents.append(target_node)
-@@ -1833,20 +1834,20 @@
- # Create a DependencyGraphNode for each gyp file containing a target. Put
- # it into a dict for easy access.
- dependency_nodes = {}
-- for target in targets.iterkeys():
-+ for target in targets.keys():
- build_file = gyp.common.BuildFile(target)
- if not build_file in dependency_nodes:
- dependency_nodes[build_file] = DependencyGraphNode(build_file)
-
- # Set up the dependency links.
-- for target, spec in targets.iteritems():
-+ for target, spec in targets.items():
- build_file = gyp.common.BuildFile(target)
- build_file_node = dependency_nodes[build_file]
- target_dependencies = spec.get('dependencies', [])
- for dependency in target_dependencies:
- try:
- dependency_build_file = gyp.common.BuildFile(dependency)
-- except GypError, e:
-+ except GypError as e:
- gyp.common.ExceptionAppend(
- e, 'while computing dependencies of .gyp file %s' % build_file)
- raise
-@@ -1864,7 +1865,7 @@
-
- # Files that have no dependencies are treated as dependent on root_node.
- root_node = DependencyGraphNode(None)
-- for build_file_node in dependency_nodes.itervalues():
-+ for build_file_node in dependency_nodes.values():
- if len(build_file_node.dependencies) == 0:
- build_file_node.dependencies.append(root_node)
- root_node.dependents.append(build_file_node)
-@@ -1877,7 +1878,7 @@
- if not root_node.dependents:
- # If all files have dependencies, add the first file as a dependent
- # of root_node so that the cycle can be discovered from root_node.
-- file_node = dependency_nodes.values()[0]
-+ file_node = next(iter(dependency_nodes.values()))
- file_node.dependencies.append(root_node)
- root_node.dependents.append(file_node)
- cycles = []
-@@ -2104,7 +2105,7 @@
-
- def MergeDicts(to, fro, to_file, fro_file):
- # I wanted to name the parameter "from" but it's a Python keyword...
-- for k, v in fro.iteritems():
-+ for k, v in fro.items():
- # It would be nice to do "if not k in to: to[k] = v" but that wouldn't give
- # copy semantics. Something else may want to merge from the |fro| dict
- # later, and having the same dict ref pointed to twice in the tree isn't
-@@ -2239,13 +2240,13 @@
- if not 'configurations' in target_dict:
- target_dict['configurations'] = {'Default': {}}
- if not 'default_configuration' in target_dict:
-- concrete = [i for (i, config) in target_dict['configurations'].iteritems()
-+ concrete = [i for (i, config) in target_dict['configurations'].items()
- if not config.get('abstract')]
- target_dict['default_configuration'] = sorted(concrete)[0]
-
- merged_configurations = {}
- configs = target_dict['configurations']
-- for (configuration, old_configuration_dict) in configs.iteritems():
-+ for (configuration, old_configuration_dict) in configs.items():
- # Skip abstract configurations (saves work only).
- if old_configuration_dict.get('abstract'):
- continue
-@@ -2253,7 +2254,7 @@
- # Get the inheritance relationship right by making a copy of the target
- # dict.
- new_configuration_dict = {}
-- for (key, target_val) in target_dict.iteritems():
-+ for (key, target_val) in target_dict.items():
- key_ext = key[-1:]
- if key_ext in key_suffixes:
- key_base = key[:-1]
-@@ -2274,10 +2275,9 @@
- merged_configurations[configuration])
-
- # Now drop all the abstract ones.
-- for configuration in target_dict['configurations'].keys():
-- old_configuration_dict = target_dict['configurations'][configuration]
-- if old_configuration_dict.get('abstract'):
-- del target_dict['configurations'][configuration]
-+ configs = target_dict['configurations']
-+ target_dict['configurations'] = \
-+ {k: v for k, v in configs.items() if not v.get('abstract')}
-
- # Now that all of the target's configurations have been built, go through
- # the target dict's keys and remove everything that's been moved into a
-@@ -2337,7 +2337,7 @@
-
- lists = []
- del_lists = []
-- for key, value in the_dict.iteritems():
-+ for key, value in the_dict.items():
- operation = key[-1]
- if operation != '!' and operation != '/':
- continue
-@@ -2385,8 +2385,8 @@
- exclude_key = list_key + '!'
- if exclude_key in the_dict:
- for exclude_item in the_dict[exclude_key]:
-- for index in xrange(0, len(the_list)):
-- if exclude_item == the_list[index]:
-+ for index, list_item in enumerate(the_list):
-+ if exclude_item == list_item:
- # This item matches the exclude_item, so set its action to 0
- # (exclude).
- list_actions[index] = 0
-@@ -2411,8 +2411,7 @@
- raise ValueError('Unrecognized action ' + action + ' in ' + name + \
- ' key ' + regex_key)
-
-- for index in xrange(0, len(the_list)):
-- list_item = the_list[index]
-+ for index, list_item in enumerate(the_list):
- if list_actions[index] == action_value:
- # Even if the regex matches, nothing will change so continue (regex
- # searches are expensive).
-@@ -2442,7 +2441,7 @@
- # the indices of items that haven't been seen yet don't shift. That means
- # that things need to be prepended to excluded_list to maintain them in the
- # same order that they existed in the_list.
-- for index in xrange(len(list_actions) - 1, -1, -1):
-+ for index in range(len(list_actions) - 1, -1, -1):
- if list_actions[index] == 0:
- # Dump anything with action 0 (exclude). Keep anything with action 1
- # (include) or -1 (no include or exclude seen for the item).
-@@ -2455,7 +2454,7 @@
- the_dict[excluded_key] = excluded_list
-
- # Now recurse into subdicts and lists that may contain dicts.
-- for key, value in the_dict.iteritems():
-+ for key, value in the_dict.items():
- if type(value) is dict:
- ProcessListFiltersInDict(key, value)
- elif type(value) is list:
-@@ -2512,7 +2511,7 @@
- basenames.setdefault(basename, []).append(source)
-
- error = ''
-- for basename, files in basenames.iteritems():
-+ for basename, files in basenames.items():
- if len(files) > 1:
- error += ' %s: %s\n' % (basename, ' '.join(files))
-
-@@ -2651,8 +2650,7 @@
- def TurnIntIntoStrInList(the_list):
- """Given list the_list, recursively converts all integers into strings.
- """
-- for index in xrange(0, len(the_list)):
-- item = the_list[index]
-+ for index, item in enumerate(the_list):
- if type(item) is int:
- the_list[index] = str(item)
- elif type(item) is dict:
-@@ -2769,7 +2767,7 @@
- try:
- LoadTargetBuildFile(build_file, data, aux_data,
- variables, includes, depth, check, True)
-- except Exception, e:
-+ except Exception as e:
- gyp.common.ExceptionAppend(e, 'while trying to load %s' % build_file)
- raise
-
-@@ -2791,7 +2789,7 @@
- RemoveLinkDependenciesFromNoneTargets(targets)
-
- # Apply exclude (!) and regex (/) list filters only for dependency_sections.
-- for target_name, target_dict in targets.iteritems():
-+ for target_name, target_dict in targets.items():
- tmp_dict = {}
- for key_base in dependency_sections:
- for op in ('', '!', '/'):
-diff --git a/tools/gyp/pylib/gyp/input_test.py b/pylib/gyp/input_test.py
-index 4234fbb..6c4b1cc 100755
---- a/tools/gyp/pylib/gyp/input_test.py
-+++ b/tools/gyp/pylib/gyp/input_test.py
-@@ -22,7 +22,7 @@
- dependency.dependents.append(dependent)
-
- def test_no_cycle_empty_graph(self):
-- for label, node in self.nodes.iteritems():
-+ for label, node in self.nodes.items():
- self.assertEquals([], node.FindCycles())
-
- def test_no_cycle_line(self):
-@@ -30,7 +30,7 @@
- self._create_dependency(self.nodes['b'], self.nodes['c'])
- self._create_dependency(self.nodes['c'], self.nodes['d'])
-
-- for label, node in self.nodes.iteritems():
-+ for label, node in self.nodes.items():
- self.assertEquals([], node.FindCycles())
-
- def test_no_cycle_dag(self):
-@@ -38,7 +38,7 @@
- self._create_dependency(self.nodes['a'], self.nodes['c'])
- self._create_dependency(self.nodes['b'], self.nodes['c'])
-
-- for label, node in self.nodes.iteritems():
-+ for label, node in self.nodes.items():
- self.assertEquals([], node.FindCycles())
-
- def test_cycle_self_reference(self):
-diff --git a/tools/gyp/pylib/gyp/mac_tool.py b/pylib/gyp/mac_tool.py
-index 0ad7e7a..7d3a8c2 100755
---- a/tools/gyp/pylib/gyp/mac_tool.py
-+++ b/tools/gyp/pylib/gyp/mac_tool.py
-@@ -8,6 +8,8 @@
- These functions are executed via gyp-mac-tool when using the Makefile generator.
- """
-
-+from __future__ import print_function
-+
- import fcntl
- import fnmatch
- import glob
-@@ -16,7 +18,6 @@
- import plistlib
- import re
- import shutil
--import string
- import struct
- import subprocess
- import sys
-@@ -155,11 +156,11 @@
- fp.close()
- return None
- fp.close()
-- if header.startswith("\xFE\xFF"):
-+ if header.startswith(b"\xFE\xFF"):
- return "UTF-16"
-- elif header.startswith("\xFF\xFE"):
-+ elif header.startswith(b"\xFF\xFE"):
- return "UTF-16"
-- elif header.startswith("\xEF\xBB\xBF"):
-+ elif header.startswith(b"\xEF\xBB\xBF"):
- return "UTF-8"
- else:
- return None
-@@ -174,7 +175,7 @@
- # Insert synthesized key/value pairs (e.g. BuildMachineOSBuild).
- plist = plistlib.readPlistFromString(lines)
- if keys:
-- plist = dict(plist.items() + json.loads(keys[0]).items())
-+ plist.update(json.loads(keys[0]))
- lines = plistlib.writePlistToString(plist)
-
- # Go through all the environment variables and replace them as variables in
-@@ -185,7 +186,7 @@
- continue
- evar = '${%s}' % key
- evalue = os.environ[key]
-- lines = string.replace(lines, evar, evalue)
-+ lines = lines.replace(evar, evalue)
-
- # Xcode supports various suffices on environment variables, which are
- # all undocumented. :rfc1034identifier is used in the standard project
-@@ -195,11 +196,11 @@
- # in a URL either -- oops, hence :rfc1034identifier was born.
- evar = '${%s:identifier}' % key
- evalue = IDENT_RE.sub('_', os.environ[key])
-- lines = string.replace(lines, evar, evalue)
-+ lines = lines.replace(evar, evalue)
-
- evar = '${%s:rfc1034identifier}' % key
- evalue = IDENT_RE.sub('-', os.environ[key])
-- lines = string.replace(lines, evar, evalue)
-+ lines = lines.replace(evar, evalue)
-
- # Remove any keys with values that haven't been replaced.
- lines = lines.split('\n')
-@@ -270,7 +271,7 @@
- _, err = libtoolout.communicate()
- for line in err.splitlines():
- if not libtool_re.match(line) and not libtool_re5.match(line):
-- print >>sys.stderr, line
-+ print(line, file=sys.stderr)
- # Unconditionally touch the output .a file on the command line if present
- # and the command succeeded. A bit hacky.
- if not libtoolout.returncode:
-@@ -385,7 +386,7 @@
- ])
- if keys:
- keys = json.loads(keys)
-- for key, value in keys.iteritems():
-+ for key, value in keys.items():
- arg_name = '--' + key
- if isinstance(value, bool):
- if value:
-@@ -480,8 +481,9 @@
- profiles_dir = os.path.join(
- os.environ['HOME'], 'Library', 'MobileDevice', 'Provisioning Profiles')
- if not os.path.isdir(profiles_dir):
-- print >>sys.stderr, (
-- 'cannot find mobile provisioning for %s' % bundle_identifier)
-+ print((
-+ 'cannot find mobile provisioning for %s' % bundle_identifier),
-+ file=sys.stderr)
- sys.exit(1)
- provisioning_profiles = None
- if profile:
-@@ -502,8 +504,9 @@
- valid_provisioning_profiles[app_id_pattern] = (
- profile_path, profile_data, team_identifier)
- if not valid_provisioning_profiles:
-- print >>sys.stderr, (
-- 'cannot find mobile provisioning for %s' % bundle_identifier)
-+ print((
-+ 'cannot find mobile provisioning for %s' % bundle_identifier),
-+ file=sys.stderr)
- sys.exit(1)
- # If the user has multiple provisioning profiles installed that can be
- # used for ${bundle_identifier}, pick the most specific one (ie. the
-@@ -527,7 +530,7 @@
-
- def _MergePlist(self, merged_plist, plist):
- """Merge |plist| into |merged_plist|."""
-- for key, value in plist.iteritems():
-+ for key, value in plist.items():
- if isinstance(value, dict):
- merged_value = merged_plist.get(key, {})
- if isinstance(merged_value, dict):
-@@ -637,7 +640,7 @@
- the key was not found.
- """
- if isinstance(data, str):
-- for key, value in substitutions.iteritems():
-+ for key, value in substitutions.items():
- data = data.replace('$(%s)' % key, value)
- return data
- if isinstance(data, list):
-diff --git a/tools/gyp/pylib/gyp/msvs_emulation.py b/pylib/gyp/msvs_emulation.py
-index 6d5b5bd..63d40e6 100644
---- a/tools/gyp/pylib/gyp/msvs_emulation.py
-+++ b/tools/gyp/pylib/gyp/msvs_emulation.py
-@@ -7,6 +7,7 @@
- build systems, primarily ninja.
- """
-
-+import collections
- import os
- import re
- import subprocess
-@@ -16,6 +17,12 @@
- import gyp.MSVSUtil
- import gyp.MSVSVersion
-
-+try:
-+ # basestring was removed in python3.
-+ basestring
-+except NameError:
-+ basestring = str
-+
-
- windows_quoter_regex = re.compile(r'(\\*)"')
-
-@@ -84,8 +91,8 @@
- """Add |prefix| to |element| or each subelement if element is iterable."""
- if element is None:
- return element
-- # Note, not Iterable because we don't want to handle strings like that.
-- if isinstance(element, list) or isinstance(element, tuple):
-+ if (isinstance(element, collections.Iterable) and
-+ not isinstance(element, basestring)):
- return [prefix + e for e in element]
- else:
- return prefix + element
-@@ -97,7 +104,8 @@
- if map is not None and element is not None:
- if not callable(map):
- map = map.get # Assume it's a dict, otherwise a callable to do the remap.
-- if isinstance(element, list) or isinstance(element, tuple):
-+ if (isinstance(element, collections.Iterable) and
-+ not isinstance(element, basestring)):
- element = filter(None, [map(elem) for elem in element])
- else:
- element = map(element)
-@@ -109,7 +117,8 @@
- then add |element| to it, adding each item in |element| if it's a list or
- tuple."""
- if append is not None and element is not None:
-- if isinstance(element, list) or isinstance(element, tuple):
-+ if (isinstance(element, collections.Iterable) and
-+ not isinstance(element, basestring)):
- append.extend(element)
- else:
- append.append(element)
-@@ -209,7 +218,7 @@
- configs = spec['configurations']
- for field, default in supported_fields:
- setattr(self, field, {})
-- for configname, config in configs.iteritems():
-+ for configname, config in configs.items():
- getattr(self, field)[configname] = config.get(field, default())
-
- self.msvs_cygwin_dirs = spec.get('msvs_cygwin_dirs', ['.'])
-@@ -482,7 +491,7 @@
- # https://msdn.microsoft.com/en-us/library/dn502518.aspx
- cflags.append('/FS')
- # ninja handles parallelism by itself, don't have the compiler do it too.
-- cflags = filter(lambda x: not x.startswith('/MP'), cflags)
-+ cflags = [x for x in cflags if not x.startswith('/MP')]
- return cflags
-
- def _GetPchFlags(self, config, extension):
-@@ -649,19 +658,17 @@
-
- # If the base address is not specifically controlled, DYNAMICBASE should
- # be on by default.
-- base_flags = filter(lambda x: 'DYNAMICBASE' in x or x == '/FIXED',
-- ldflags)
-- if not base_flags:
-+ if not any('DYNAMICBASE' in flag or flag == '/FIXED' for flag in ldflags):
- ldflags.append('/DYNAMICBASE')
-
- # If the NXCOMPAT flag has not been specified, default to on. Despite the
- # documentation that says this only defaults to on when the subsystem is
- # Vista or greater (which applies to the linker), the IDE defaults it on
- # unless it's explicitly off.
-- if not filter(lambda x: 'NXCOMPAT' in x, ldflags):
-+ if not any('NXCOMPAT' in flag for flag in ldflags):
- ldflags.append('/NXCOMPAT')
-
-- have_def_file = filter(lambda x: x.startswith('/DEF:'), ldflags)
-+ have_def_file = any(flag.startswith('/DEF:') for flag in ldflags)
- manifest_flags, intermediate_manifest, manifest_files = \
- self._GetLdManifestFlags(config, manifest_base_name, gyp_to_build_path,
- is_executable and not have_def_file, build_dir)
-@@ -953,7 +960,7 @@
- """Expand $(Variable) per expansions dict. See MsvsSettings.GetVSMacroEnv
- for the canonical way to retrieve a suitable dict."""
- if '$' in string:
-- for old, new in expansions.iteritems():
-+ for old, new in expansions.items():
- assert '$(' not in new, new
- string = string.replace(old, new)
- return string
-@@ -1001,7 +1008,7 @@
- CreateProcess documentation for more details."""
- block = ''
- nul = '\0'
-- for key, value in envvar_dict.iteritems():
-+ for key, value in envvar_dict.items():
- block += key + '=' + value + nul
- block += nul
- return block
-@@ -1056,7 +1063,7 @@
- env['INCLUDE'] = ';'.join(system_includes)
-
- env_block = _FormatAsEnvironmentBlock(env)
-- f = open_out(os.path.join(toplevel_build_dir, 'environment.' + arch), 'wb')
-+ f = open_out(os.path.join(toplevel_build_dir, 'environment.' + arch), 'w')
- f.write(env_block)
- f.close()
-
-@@ -1078,7 +1085,7 @@
- if int(generator_flags.get('msvs_error_on_missing_sources', 0)):
- no_specials = filter(lambda x: '$' not in x, sources)
- relative = [os.path.join(build_dir, gyp_to_ninja(s)) for s in no_specials]
-- missing = filter(lambda x: not os.path.exists(x), relative)
-+ missing = [x for x in relative if not os.path.exists(x)]
- if missing:
- # They'll look like out\Release\..\..\stuff\things.cc, so normalize the
- # path for a slightly less crazy looking output.
-diff --git a/tools/gyp/pylib/gyp/ordered_dict.py b/pylib/gyp/ordered_dict.py
-deleted file mode 100644
-index a1e89f9..0000000
---- a/tools/gyp/pylib/gyp/ordered_dict.py
-+++ /dev/null
-@@ -1,289 +0,0 @@
--# Unmodified from http://code.activestate.com/recipes/576693/
--# other than to add MIT license header (as specified on page, but not in code).
--# Linked from Python documentation here:
--# http://docs.python.org/2/library/collections.html#collections.OrderedDict
--#
--# This should be deleted once Py2.7 is available on all bots, see
--# http://crbug.com/241769.
--#
--# Copyright (c) 2009 Raymond Hettinger.
--#
--# Permission is hereby granted, free of charge, to any person obtaining a copy
--# of this software and associated documentation files (the "Software"), to deal
--# in the Software without restriction, including without limitation the rights
--# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
--# copies of the Software, and to permit persons to whom the Software is
--# furnished to do so, subject to the following conditions:
--#
--# The above copyright notice and this permission notice shall be included in
--# all copies or substantial portions of the Software.
--#
--# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
--# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
--# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
--# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
--# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
--# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
--# THE SOFTWARE.
--
--# Backport of OrderedDict() class that runs on Python 2.4, 2.5, 2.6, 2.7 and pypy.
--# Passes Python2.7's test suite and incorporates all the latest updates.
--
--try:
-- from thread import get_ident as _get_ident
--except ImportError:
-- from dummy_thread import get_ident as _get_ident
--
--try:
-- from _abcoll import KeysView, ValuesView, ItemsView
--except ImportError:
-- pass
--
--
--class OrderedDict(dict):
-- 'Dictionary that remembers insertion order'
-- # An inherited dict maps keys to values.
-- # The inherited dict provides __getitem__, __len__, __contains__, and get.
-- # The remaining methods are order-aware.
-- # Big-O running times for all methods are the same as for regular dictionaries.
--
-- # The internal self.__map dictionary maps keys to links in a doubly linked list.
-- # The circular doubly linked list starts and ends with a sentinel element.
-- # The sentinel element never gets deleted (this simplifies the algorithm).
-- # Each link is stored as a list of length three: [PREV, NEXT, KEY].
--
-- def __init__(self, *args, **kwds):
-- '''Initialize an ordered dictionary. Signature is the same as for
-- regular dictionaries, but keyword arguments are not recommended
-- because their insertion order is arbitrary.
--
-- '''
-- if len(args) > 1:
-- raise TypeError('expected at most 1 arguments, got %d' % len(args))
-- try:
-- self.__root
-- except AttributeError:
-- self.__root = root = [] # sentinel node
-- root[:] = [root, root, None]
-- self.__map = {}
-- self.__update(*args, **kwds)
--
-- def __setitem__(self, key, value, dict_setitem=dict.__setitem__):
-- 'od.__setitem__(i, y) <==> od[i]=y'
-- # Setting a new item creates a new link which goes at the end of the linked
-- # list, and the inherited dictionary is updated with the new key/value pair.
-- if key not in self:
-- root = self.__root
-- last = root[0]
-- last[1] = root[0] = self.__map[key] = [last, root, key]
-- dict_setitem(self, key, value)
--
-- def __delitem__(self, key, dict_delitem=dict.__delitem__):
-- 'od.__delitem__(y) <==> del od[y]'
-- # Deleting an existing item uses self.__map to find the link which is
-- # then removed by updating the links in the predecessor and successor nodes.
-- dict_delitem(self, key)
-- link_prev, link_next, key = self.__map.pop(key)
-- link_prev[1] = link_next
-- link_next[0] = link_prev
--
-- def __iter__(self):
-- 'od.__iter__() <==> iter(od)'
-- root = self.__root
-- curr = root[1]
-- while curr is not root:
-- yield curr[2]
-- curr = curr[1]
--
-- def __reversed__(self):
-- 'od.__reversed__() <==> reversed(od)'
-- root = self.__root
-- curr = root[0]
-- while curr is not root:
-- yield curr[2]
-- curr = curr[0]
--
-- def clear(self):
-- 'od.clear() -> None. Remove all items from od.'
-- try:
-- for node in self.__map.itervalues():
-- del node[:]
-- root = self.__root
-- root[:] = [root, root, None]
-- self.__map.clear()
-- except AttributeError:
-- pass
-- dict.clear(self)
--
-- def popitem(self, last=True):
-- '''od.popitem() -> (k, v), return and remove a (key, value) pair.
-- Pairs are returned in LIFO order if last is true or FIFO order if false.
--
-- '''
-- if not self:
-- raise KeyError('dictionary is empty')
-- root = self.__root
-- if last:
-- link = root[0]
-- link_prev = link[0]
-- link_prev[1] = root
-- root[0] = link_prev
-- else:
-- link = root[1]
-- link_next = link[1]
-- root[1] = link_next
-- link_next[0] = root
-- key = link[2]
-- del self.__map[key]
-- value = dict.pop(self, key)
-- return key, value
--
-- # -- the following methods do not depend on the internal structure --
--
-- def keys(self):
-- 'od.keys() -> list of keys in od'
-- return list(self)
--
-- def values(self):
-- 'od.values() -> list of values in od'
-- return [self[key] for key in self]
--
-- def items(self):
-- 'od.items() -> list of (key, value) pairs in od'
-- return [(key, self[key]) for key in self]
--
-- def iterkeys(self):
-- 'od.iterkeys() -> an iterator over the keys in od'
-- return iter(self)
--
-- def itervalues(self):
-- 'od.itervalues -> an iterator over the values in od'
-- for k in self:
-- yield self[k]
--
-- def iteritems(self):
-- 'od.iteritems -> an iterator over the (key, value) items in od'
-- for k in self:
-- yield (k, self[k])
--
-- # Suppress 'OrderedDict.update: Method has no argument':
-- # pylint: disable=E0211
-- def update(*args, **kwds):
-- '''od.update(E, **F) -> None. Update od from dict/iterable E and F.
--
-- If E is a dict instance, does: for k in E: od[k] = E[k]
-- If E has a .keys() method, does: for k in E.keys(): od[k] = E[k]
-- Or if E is an iterable of items, does: for k, v in E: od[k] = v
-- In either case, this is followed by: for k, v in F.items(): od[k] = v
--
-- '''
-- if len(args) > 2:
-- raise TypeError('update() takes at most 2 positional '
-- 'arguments (%d given)' % (len(args),))
-- elif not args:
-- raise TypeError('update() takes at least 1 argument (0 given)')
-- self = args[0]
-- # Make progressively weaker assumptions about "other"
-- other = ()
-- if len(args) == 2:
-- other = args[1]
-- if isinstance(other, dict):
-- for key in other:
-- self[key] = other[key]
-- elif hasattr(other, 'keys'):
-- for key in other.keys():
-- self[key] = other[key]
-- else:
-- for key, value in other:
-- self[key] = value
-- for key, value in kwds.items():
-- self[key] = value
--
-- __update = update # let subclasses override update without breaking __init__
--
-- __marker = object()
--
-- def pop(self, key, default=__marker):
-- '''od.pop(k[,d]) -> v, remove specified key and return the corresponding value.
-- If key is not found, d is returned if given, otherwise KeyError is raised.
--
-- '''
-- if key in self:
-- result = self[key]
-- del self[key]
-- return result
-- if default is self.__marker:
-- raise KeyError(key)
-- return default
--
-- def setdefault(self, key, default=None):
-- 'od.setdefault(k[,d]) -> od.get(k,d), also set od[k]=d if k not in od'
-- if key in self:
-- return self[key]
-- self[key] = default
-- return default
--
-- def __repr__(self, _repr_running={}):
-- 'od.__repr__() <==> repr(od)'
-- call_key = id(self), _get_ident()
-- if call_key in _repr_running:
-- return '...'
-- _repr_running[call_key] = 1
-- try:
-- if not self:
-- return '%s()' % (self.__class__.__name__,)
-- return '%s(%r)' % (self.__class__.__name__, self.items())
-- finally:
-- del _repr_running[call_key]
--
-- def __reduce__(self):
-- 'Return state information for pickling'
-- items = [[k, self[k]] for k in self]
-- inst_dict = vars(self).copy()
-- for k in vars(OrderedDict()):
-- inst_dict.pop(k, None)
-- if inst_dict:
-- return (self.__class__, (items,), inst_dict)
-- return self.__class__, (items,)
--
-- def copy(self):
-- 'od.copy() -> a shallow copy of od'
-- return self.__class__(self)
--
-- @classmethod
-- def fromkeys(cls, iterable, value=None):
-- '''OD.fromkeys(S[, v]) -> New ordered dictionary with keys from S
-- and values equal to v (which defaults to None).
--
-- '''
-- d = cls()
-- for key in iterable:
-- d[key] = value
-- return d
--
-- def __eq__(self, other):
-- '''od.__eq__(y) <==> od==y. Comparison to another OD is order-sensitive
-- while comparison to a regular mapping is order-insensitive.
--
-- '''
-- if isinstance(other, OrderedDict):
-- return len(self)==len(other) and self.items() == other.items()
-- return dict.__eq__(self, other)
--
-- def __ne__(self, other):
-- return not self == other
--
-- # -- the following methods are only used in Python 2.7 --
--
-- def viewkeys(self):
-- "od.viewkeys() -> a set-like object providing a view on od's keys"
-- return KeysView(self)
--
-- def viewvalues(self):
-- "od.viewvalues() -> an object providing a view on od's values"
-- return ValuesView(self)
--
-- def viewitems(self):
-- "od.viewitems() -> a set-like object providing a view on od's items"
-- return ItemsView(self)
--
-diff --git a/tools/gyp/pylib/gyp/simple_copy.py b/pylib/gyp/simple_copy.py
-index eaf5f8b..58a61c3 100644
---- a/tools/gyp/pylib/gyp/simple_copy.py
-+++ b/tools/gyp/pylib/gyp/simple_copy.py
-@@ -49,7 +49,7 @@
-
- def _deepcopy_dict(x):
- y = {}
-- for key, value in x.iteritems():
-+ for key, value in x.items():
- y[deepcopy(key)] = deepcopy(value)
- return y
- d[dict] = _deepcopy_dict
-diff --git a/tools/gyp/pylib/gyp/win_tool.py b/pylib/gyp/win_tool.py
-index 1c843a0..8973484 100755
---- a/tools/gyp/pylib/gyp/win_tool.py
-+++ b/tools/gyp/pylib/gyp/win_tool.py
-@@ -9,6 +9,8 @@
- These functions are executed via gyp-win-tool when using the ninja generator.
- """
-
-+from __future__ import print_function
-+
- import os
- import re
- import shutil
-@@ -134,7 +136,7 @@
- if (not line.startswith(' Creating library ') and
- not line.startswith('Generating code') and
- not line.startswith('Finished generating code')):
-- print line
-+ print(line)
- return link.returncode
-
- def ExecLinkWithManifests(self, arch, embed_manifest, out, ldcmd, resname,
-@@ -193,16 +195,18 @@
- our_manifest = '%(out)s.manifest' % variables
- # Load and normalize the manifests. mt.exe sometimes removes whitespace,
- # and sometimes doesn't unfortunately.
-- with open(our_manifest, 'rb') as our_f:
-- with open(assert_manifest, 'rb') as assert_f:
-+ with open(our_manifest, 'r') as our_f:
-+ with open(assert_manifest, 'r') as assert_f:
- our_data = our_f.read().translate(None, string.whitespace)
- assert_data = assert_f.read().translate(None, string.whitespace)
- if our_data != assert_data:
- os.unlink(out)
- def dump(filename):
-- sys.stderr.write('%s\n-----\n' % filename)
-- with open(filename, 'rb') as f:
-- sys.stderr.write(f.read() + '\n-----\n')
-+ print(filename, file=sys.stderr)
-+ print('-----', file=sys.stderr)
-+ with open(filename, 'r') as f:
-+ print(f.read(), file=sys.stderr)
-+ print('-----', file=sys.stderr)
- dump(intermediate_manifest)
- dump(our_manifest)
- dump(assert_manifest)
-@@ -223,7 +227,7 @@
- out, _ = popen.communicate()
- for line in out.splitlines():
- if line and 'manifest authoring warning 81010002' not in line:
-- print line
-+ print(line)
- return popen.returncode
-
- def ExecManifestToRc(self, arch, *args):
-@@ -231,7 +235,7 @@
- |args| is tuple containing path to resource file, path to manifest file
- and resource name which can be "1" (for executables) or "2" (for DLLs)."""
- manifest_path, resource_path, resource_name = args
-- with open(resource_path, 'wb') as output:
-+ with open(resource_path, 'w') as output:
- output.write('#include <windows.h>\n%s RT_MANIFEST "%s"' % (
- resource_name,
- os.path.abspath(manifest_path).replace('\\', '/')))
-@@ -263,7 +267,7 @@
- for x in lines if x.startswith(prefixes))
- for line in lines:
- if not line.startswith(prefixes) and line not in processing:
-- print line
-+ print(line)
- return popen.returncode
-
- def ExecAsmWrapper(self, arch, *args):
-@@ -277,7 +281,7 @@
- not line.startswith('Microsoft (R) Macro Assembler') and
- not line.startswith(' Assembling: ') and
- line):
-- print line
-+ print(line)
- return popen.returncode
-
- def ExecRcWrapper(self, arch, *args):
-@@ -291,7 +295,7 @@
- if (not line.startswith('Microsoft (R) Windows (R) Resource Compiler') and
- not line.startswith('Copyright (C) Microsoft Corporation') and
- line):
-- print line
-+ print(line)
- return popen.returncode
-
- def ExecActionWrapper(self, arch, rspfile, *dir):
-@@ -300,7 +304,7 @@
- env = self._GetEnv(arch)
- # TODO(scottmg): This is a temporary hack to get some specific variables
- # through to actions that are set after gyp-time. http://crbug.com/333738.
-- for k, v in os.environ.iteritems():
-+ for k, v in os.environ.items():
- if k not in env:
- env[k] = v
- args = open(rspfile).read()
-diff --git a/tools/gyp/pylib/gyp/xcode_emulation.py b/pylib/gyp/xcode_emulation.py
-index dba8e76..4c875de 100644
---- a/tools/gyp/pylib/gyp/xcode_emulation.py
-+++ b/tools/gyp/pylib/gyp/xcode_emulation.py
-@@ -7,6 +7,8 @@
- other build systems, such as make and ninja.
- """
-
-+from __future__ import print_function
-+
- import copy
- import gyp.common
- import os
-@@ -73,7 +75,7 @@
- if arch not in expanded_archs:
- expanded_archs.append(arch)
- except KeyError as e:
-- print 'Warning: Ignoring unsupported variable "%s".' % variable
-+ print('Warning: Ignoring unsupported variable "%s".' % variable)
- elif arch not in expanded_archs:
- expanded_archs.append(arch)
- return expanded_archs
-@@ -171,7 +173,7 @@
- # the same for all configs are implicitly per-target settings.
- self.xcode_settings = {}
- configs = spec['configurations']
-- for configname, config in configs.iteritems():
-+ for configname, config in configs.items():
- self.xcode_settings[configname] = config.get('xcode_settings', {})
- self._ConvertConditionalKeys(configname)
- if self.xcode_settings[configname].get('IPHONEOS_DEPLOYMENT_TARGET',
-@@ -197,8 +199,8 @@
- new_key = key.split("[")[0]
- settings[new_key] = settings[key]
- else:
-- print 'Warning: Conditional keys not implemented, ignoring:', \
-- ' '.join(conditional_keys)
-+ print('Warning: Conditional keys not implemented, ignoring:', \
-+ ' '.join(conditional_keys))
- del settings[key]
-
- def _Settings(self):
-@@ -216,7 +218,7 @@
-
- def _WarnUnimplemented(self, test_key):
- if test_key in self._Settings():
-- print 'Warning: Ignoring not yet implemented key "%s".' % test_key
-+ print('Warning: Ignoring not yet implemented key "%s".' % test_key)
-
- def IsBinaryOutputFormat(self, configname):
- default = "binary" if self.isIOS else "xml"
-@@ -963,7 +965,7 @@
- result = dict(self.xcode_settings[configname])
- first_pass = False
- else:
-- for key, value in self.xcode_settings[configname].iteritems():
-+ for key, value in self.xcode_settings[configname].items():
- if key not in result:
- continue
- elif result[key] != value:
-@@ -1084,8 +1086,8 @@
- unimpl = ['OTHER_CODE_SIGN_FLAGS']
- unimpl = set(unimpl) & set(self.xcode_settings[configname].keys())
- if unimpl:
-- print 'Warning: Some codesign keys not implemented, ignoring: %s' % (
-- ', '.join(sorted(unimpl)))
-+ print('Warning: Some codesign keys not implemented, ignoring: %s' % (
-+ ', '.join(sorted(unimpl))))
-
- if self._IsXCTest():
- # For device xctests, Xcode copies two extra frameworks into $TEST_HOST.
-@@ -1737,7 +1739,7 @@
- order = gyp.common.TopologicallySorted(env.keys(), GetEdges)
- order.reverse()
- return order
-- except gyp.common.CycleError, e:
-+ except gyp.common.CycleError as e:
- raise GypError(
- 'Xcode environment variables are cyclically dependent: ' + str(e.nodes))
-
-@@ -1774,10 +1776,11 @@
- def _AddIOSDeviceConfigurations(targets):
- """Clone all targets and append -iphoneos to the name. Configure these targets
- to build for iOS devices and use correct architectures for those builds."""
-- for target_dict in targets.itervalues():
-+ for target_dict in targets.values():
- toolset = target_dict['toolset']
- configs = target_dict['configurations']
-- for config_name, simulator_config_dict in dict(configs).iteritems():
-+
-+ for config_name, simulator_config_dict in dict(configs).items():
- iphoneos_config_dict = copy.deepcopy(simulator_config_dict)
- configs[config_name + '-iphoneos'] = iphoneos_config_dict
- configs[config_name + '-iphonesimulator'] = simulator_config_dict
-diff --git a/tools/gyp/pylib/gyp/xcode_ninja.py b/pylib/gyp/xcode_ninja.py
-index bc76fff..1d71b8c 100644
---- a/tools/gyp/pylib/gyp/xcode_ninja.py
-+++ b/tools/gyp/pylib/gyp/xcode_ninja.py
-@@ -28,7 +28,7 @@
- workspace_path = os.path.join(options.generator_output, workspace_path)
- try:
- os.makedirs(workspace_path)
-- except OSError, e:
-+ except OSError as e:
- if e.errno != errno.EEXIST:
- raise
- output_string = '<?xml version="1.0" encoding="UTF-8"?>\n' + \
-@@ -85,7 +85,7 @@
- "%s/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)" % ninja_toplevel
-
- if 'configurations' in old_spec:
-- for config in old_spec['configurations'].iterkeys():
-+ for config in old_spec['configurations'].keys():
- old_xcode_settings = \
- old_spec['configurations'][config].get('xcode_settings', {})
- if 'IPHONEOS_DEPLOYMENT_TARGET' in old_xcode_settings:
-@@ -167,7 +167,7 @@
- params: Dict of global options for gyp.
- """
- orig_gyp = params['build_files'][0]
-- for gyp_name, gyp_dict in data.iteritems():
-+ for gyp_name, gyp_dict in data.items():
- if gyp_name == orig_gyp:
- depth = gyp_dict['_DEPTH']
-
-@@ -238,7 +238,7 @@
- not generator_flags.get('xcode_ninja_list_excluded_files', True)
-
- sources = []
-- for target, target_dict in target_dicts.iteritems():
-+ for target, target_dict in target_dicts.items():
- base = os.path.dirname(target)
- files = target_dict.get('sources', []) + \
- target_dict.get('mac_bundle_resources', [])
-diff --git a/tools/gyp/pylib/gyp/xcodeproj_file.py b/pylib/gyp/xcodeproj_file.py
-index e69235f..bd238f6 100644
---- a/tools/gyp/pylib/gyp/xcodeproj_file.py
-+++ b/tools/gyp/pylib/gyp/xcodeproj_file.py
-@@ -154,6 +154,11 @@
- import sha
- _new_sha1 = sha.new
-
-+try:
-+ # basestring was removed in python3.
-+ basestring
-+except NameError:
-+ basestring = str
-
- # See XCObject._EncodeString. This pattern is used to determine when a string
- # can be printed unquoted. Strings that match this pattern may be printed
-@@ -314,7 +319,7 @@
- """
-
- that = self.__class__(id=self.id, parent=self.parent)
-- for key, value in self._properties.iteritems():
-+ for key, value in self._properties.items():
- is_strong = self._schema[key][2]
-
- if isinstance(value, XCObject):
-@@ -324,8 +329,7 @@
- that._properties[key] = new_value
- else:
- that._properties[key] = value
-- elif isinstance(value, str) or isinstance(value, unicode) or \
-- isinstance(value, int):
-+ elif isinstance(value, basestring) or isinstance(value, int):
- that._properties[key] = value
- elif isinstance(value, list):
- if is_strong:
-@@ -449,10 +453,10 @@
- # is 160 bits. Instead of throwing out 64 bits of the digest, xor them
- # into the portion that gets used.
- assert hash.digest_size % 4 == 0
-- digest_int_count = hash.digest_size / 4
-+ digest_int_count = hash.digest_size // 4
- digest_ints = struct.unpack('>' + 'I' * digest_int_count, hash.digest())
- id_ints = [0, 0, 0]
-- for index in xrange(0, digest_int_count):
-+ for index in range(0, digest_int_count):
- id_ints[index % 3] ^= digest_ints[index]
- self.id = '%08X%08X%08X' % tuple(id_ints)
-
-@@ -475,7 +479,7 @@
- """Returns a list of all of this object's owned (strong) children."""
-
- children = []
-- for property, attributes in self._schema.iteritems():
-+ for property, attributes in self._schema.items():
- (is_list, property_type, is_strong) = attributes[0:3]
- if is_strong and property in self._properties:
- if not is_list:
-@@ -603,7 +607,12 @@
- comment = value.Comment()
- elif isinstance(value, str):
- printable += self._EncodeString(value)
-- elif isinstance(value, unicode):
-+ # A python3 compatible way of saying isinstance(value, unicode).
-+ # basestring is str in python3 so this is equivalent to the above
-+ # isinstance. Thus if it failed above it will fail here.
-+ # In python2 we test against str and unicode at this point. str has already
-+ # failed in the above isinstance so we test against unicode.
-+ elif isinstance(value, basestring):
- printable += self._EncodeString(value.encode('utf-8'))
- elif isinstance(value, int):
- printable += str(value)
-@@ -622,7 +631,7 @@
- printable += end_tabs + ')'
- elif isinstance(value, dict):
- printable = '{' + sep
-- for item_key, item_value in sorted(value.iteritems()):
-+ for item_key, item_value in sorted(value.items()):
- printable += element_tabs + \
- self._XCPrintableValue(tabs + 1, item_key, flatten_list) + ' = ' + \
- self._XCPrintableValue(tabs + 1, item_value, flatten_list) + ';' + \
-@@ -691,7 +700,7 @@
- printable_value[0] == '"' and printable_value[-1] == '"':
- printable_value = printable_value[1:-1]
- printable += printable_key + ' = ' + printable_value + ';' + after_kv
-- except TypeError, e:
-+ except TypeError as e:
- gyp.common.ExceptionAppend(e,
- 'while printing key "%s"' % key)
- raise
-@@ -730,7 +739,7 @@
- self._XCKVPrint(file, 3, 'isa', self.__class__.__name__)
-
- # The remaining elements of an object dictionary are sorted alphabetically.
-- for property, value in sorted(self._properties.iteritems()):
-+ for property, value in sorted(self._properties.items()):
- self._XCKVPrint(file, 3, property, value)
-
- # End the object.
-@@ -752,7 +761,7 @@
- if properties is None:
- return
-
-- for property, value in properties.iteritems():
-+ for property, value in properties.items():
- # Make sure the property is in the schema.
- if not property in self._schema:
- raise KeyError(property + ' not in ' + self.__class__.__name__)
-@@ -766,7 +775,7 @@
- ' must be list, not ' + value.__class__.__name__)
- for item in value:
- if not isinstance(item, property_type) and \
-- not (item.__class__ == unicode and property_type == str):
-+ not (isinstance(item, basestring) and property_type == str):
- # Accept unicode where str is specified. str is treated as
- # UTF-8-encoded.
- raise TypeError(
-@@ -774,7 +783,7 @@
- ' must be ' + property_type.__name__ + ', not ' + \
- item.__class__.__name__)
- elif not isinstance(value, property_type) and \
-- not (value.__class__ == unicode and property_type == str):
-+ not (isinstance(value, basestring) and property_type == str):
- # Accept unicode where str is specified. str is treated as
- # UTF-8-encoded.
- raise TypeError(
-@@ -788,8 +797,7 @@
- self._properties[property] = value.Copy()
- else:
- self._properties[property] = value
-- elif isinstance(value, str) or isinstance(value, unicode) or \
-- isinstance(value, int):
-+ elif isinstance(value, basestring) or isinstance(value, int):
- self._properties[property] = value
- elif isinstance(value, list):
- if is_strong:
-@@ -865,7 +873,7 @@
-
- # TODO(mark): A stronger verification mechanism is needed. Some
- # subclasses need to perform validation beyond what the schema can enforce.
-- for property, attributes in self._schema.iteritems():
-+ for property, attributes in self._schema.items():
- (is_list, property_type, is_strong, is_required) = attributes[0:4]
- if is_required and not property in self._properties:
- raise KeyError(self.__class__.__name__ + ' requires ' + property)
-@@ -875,7 +883,7 @@
- overwrite properties that have already been set."""
-
- defaults = {}
-- for property, attributes in self._schema.iteritems():
-+ for property, attributes in self._schema.items():
- (is_list, property_type, is_strong, is_required) = attributes[0:4]
- if is_required and len(attributes) >= 5 and \
- not property in self._properties:
-@@ -1426,8 +1434,8 @@
- xche = self
- while xche != None and isinstance(xche, XCHierarchicalElement):
- xche_hashables = xche.Hashables()
-- for index in xrange(0, len(xche_hashables)):
-- hashables.insert(index, xche_hashables[index])
-+ for index, xche_hashable in enumerate(xche_hashables):
-+ hashables.insert(index, xche_hashable)
- xche = xche.parent
- return hashables
-
-@@ -2468,8 +2476,7 @@
- # The headers phase should come before the resources, sources, and
- # frameworks phases, if any.
- insert_at = len(self._properties['buildPhases'])
-- for index in xrange(0, len(self._properties['buildPhases'])):
-- phase = self._properties['buildPhases'][index]
-+ for index, phase in enumerate(self._properties['buildPhases']):
- if isinstance(phase, PBXResourcesBuildPhase) or \
- isinstance(phase, PBXSourcesBuildPhase) or \
- isinstance(phase, PBXFrameworksBuildPhase):
-@@ -2489,8 +2496,7 @@
- # The resources phase should come before the sources and frameworks
- # phases, if any.
- insert_at = len(self._properties['buildPhases'])
-- for index in xrange(0, len(self._properties['buildPhases'])):
-- phase = self._properties['buildPhases'][index]
-+ for index, phase in enumerate(self._properties['buildPhases']):
- if isinstance(phase, PBXSourcesBuildPhase) or \
- isinstance(phase, PBXFrameworksBuildPhase):
- insert_at = index
-@@ -2911,7 +2917,7 @@
- # determine the sort order.
- return cmp(x_index, y_index)
-
-- for other_pbxproject, ref_dict in self._other_pbxprojects.iteritems():
-+ for other_pbxproject, ref_dict in self._other_pbxprojects.items():
- # Build up a list of products in the remote project file, ordered the
- # same as the targets that produce them.
- remote_products = []
-diff --git a/tools/gyp/pylib/gyp/xml_fix.py b/pylib/gyp/xml_fix.py
-index 5de8481..4308d99 100644
---- a/tools/gyp/pylib/gyp/xml_fix.py
-+++ b/tools/gyp/pylib/gyp/xml_fix.py
-@@ -32,8 +32,7 @@
- writer.write(indent+"<" + self.tagName)
-
- attrs = self._get_attributes()
-- a_names = attrs.keys()
-- a_names.sort()
-+ a_names = sorted(attrs.keys())
-
- for a_name in a_names:
- writer.write(" %s=\"" % a_name)
-diff --git a/tools/gyp/tools/graphviz.py b/tools/graphviz.py
-index 326ae22..538b059 100755
---- a/tools/gyp/tools/graphviz.py
-+++ b/tools/gyp/tools/graphviz.py
-@@ -8,6 +8,8 @@
- generate input suitable for graphviz to render a dependency graph of
- targets."""
-
-+from __future__ import print_function
-+
- import collections
- import json
- import sys
-@@ -50,9 +52,9 @@
- build_file, target_name, toolset = ParseTarget(src)
- files[build_file].append(src)
-
-- print 'digraph D {'
-- print ' fontsize=8' # Used by subgraphs.
-- print ' node [fontsize=8]'
-+ print('digraph D {')
-+ print(' fontsize=8') # Used by subgraphs.
-+ print(' node [fontsize=8]')
-
- # Output nodes by file. We must first write out each node within
- # its file grouping before writing out any edges that may refer
-@@ -63,31 +65,31 @@
- # the display by making it a box without an internal node.
- target = targets[0]
- build_file, target_name, toolset = ParseTarget(target)
-- print ' "%s" [shape=box, label="%s\\n%s"]' % (target, filename,
-- target_name)
-+ print(' "%s" [shape=box, label="%s\\n%s"]' % (target, filename,
-+ target_name))
- else:
- # Group multiple nodes together in a subgraph.
-- print ' subgraph "cluster_%s" {' % filename
-- print ' label = "%s"' % filename
-+ print(' subgraph "cluster_%s" {' % filename)
-+ print(' label = "%s"' % filename)
- for target in targets:
- build_file, target_name, toolset = ParseTarget(target)
-- print ' "%s" [label="%s"]' % (target, target_name)
-- print ' }'
-+ print(' "%s" [label="%s"]' % (target, target_name))
-+ print(' }')
-
- # Now that we've placed all the nodes within subgraphs, output all
- # the edges between nodes.
- for src, dsts in edges.items():
- for dst in dsts:
-- print ' "%s" -> "%s"' % (src, dst)
-+ print(' "%s" -> "%s"' % (src, dst))
-
-- print '}'
-+ print('}')
-
-
- def main():
- if len(sys.argv) < 2:
-- print >>sys.stderr, __doc__
-- print >>sys.stderr
-- print >>sys.stderr, 'usage: %s target1 target2...' % (sys.argv[0])
-+ print(__doc__, file=sys.stderr)
-+ print(file=sys.stderr)
-+ print('usage: %s target1 target2...' % (sys.argv[0]), file=sys.stderr)
- return 1
-
- edges = LoadEdges('dump.json', sys.argv[1:])
-diff --git a/tools/gyp/tools/pretty_gyp.py b/tools/pretty_gyp.py
-index d5736bb..5060d1d 100755
---- a/tools/gyp/tools/pretty_gyp.py
-+++ b/tools/gyp/tools/pretty_gyp.py
-@@ -6,6 +6,8 @@
-
- """Pretty-prints the contents of a GYP file."""
-
-+from __future__ import print_function
-+
- import sys
- import re
-
-@@ -125,15 +127,15 @@
- (brace_diff, after) = count_braces(line)
- if brace_diff != 0:
- if after:
-- print " " * (basic_offset * indent) + line
-+ print(" " * (basic_offset * indent) + line)
- indent += brace_diff
- else:
- indent += brace_diff
-- print " " * (basic_offset * indent) + line
-+ print(" " * (basic_offset * indent) + line)
- else:
-- print " " * (basic_offset * indent) + line
-+ print(" " * (basic_offset * indent) + line)
- else:
-- print ""
-+ print("")
- last_line = line
-
-
-diff --git a/tools/gyp/tools/pretty_sln.py b/tools/pretty_sln.py
-index ca8cf4a..12a6dad 100755
---- a/tools/gyp/tools/pretty_sln.py
-+++ b/tools/gyp/tools/pretty_sln.py
-@@ -12,6 +12,8 @@
- Then it outputs a possible build order.
- """
-
-+from __future__ import print_function
-+
- __author__ = 'nsylvain (Nicolas Sylvain)'
-
- import os
-@@ -26,7 +28,7 @@
- for dep in deps[project]:
- if dep not in built:
- BuildProject(dep, built, projects, deps)
-- print project
-+ print(project)
- built.append(project)
-
- def ParseSolution(solution_file):
-@@ -100,44 +102,44 @@
- return (projects, dependencies)
-
- def PrintDependencies(projects, deps):
-- print "---------------------------------------"
-- print "Dependencies for all projects"
-- print "---------------------------------------"
-- print "-- --"
-+ print("---------------------------------------")
-+ print("Dependencies for all projects")
-+ print("---------------------------------------")
-+ print("-- --")
-
- for (project, dep_list) in sorted(deps.items()):
-- print "Project : %s" % project
-- print "Path : %s" % projects[project][0]
-+ print("Project : %s" % project)
-+ print("Path : %s" % projects[project][0])
- if dep_list:
- for dep in dep_list:
-- print " - %s" % dep
-- print ""
-+ print(" - %s" % dep)
-+ print("")
-
-- print "-- --"
-+ print("-- --")
-
- def PrintBuildOrder(projects, deps):
-- print "---------------------------------------"
-- print "Build order "
-- print "---------------------------------------"
-- print "-- --"
-+ print("---------------------------------------")
-+ print("Build order ")
-+ print("---------------------------------------")
-+ print("-- --")
-
- built = []
- for (project, _) in sorted(deps.items()):
- if project not in built:
- BuildProject(project, built, projects, deps)
-
-- print "-- --"
-+ print("-- --")
-
- def PrintVCProj(projects):
-
- for project in projects:
-- print "-------------------------------------"
-- print "-------------------------------------"
-- print project
-- print project
-- print project
-- print "-------------------------------------"
-- print "-------------------------------------"
-+ print("-------------------------------------")
-+ print("-------------------------------------")
-+ print(project)
-+ print(project)
-+ print(project)
-+ print("-------------------------------------")
-+ print("-------------------------------------")
-
- project_path = os.path.abspath(os.path.join(os.path.dirname(sys.argv[1]),
- projects[project][2]))
-@@ -153,7 +155,7 @@
- def main():
- # check if we have exactly 1 parameter.
- if len(sys.argv) < 2:
-- print 'Usage: %s "c:\\path\\to\\project.sln"' % sys.argv[0]
-+ print('Usage: %s "c:\\path\\to\\project.sln"' % sys.argv[0])
- return 1
-
- (projects, deps) = ParseSolution(sys.argv[1])
-diff --git a/tools/gyp/tools/pretty_vcproj.py b/tools/pretty_vcproj.py
-index 6099bd7..f02e59e 100755
---- a/tools/gyp/tools/pretty_vcproj.py
-+++ b/tools/gyp/tools/pretty_vcproj.py
-@@ -12,6 +12,8 @@
- It outputs the resulting xml to stdout.
- """
-
-+from __future__ import print_function
-+
- __author__ = 'nsylvain (Nicolas Sylvain)'
-
- import os
-@@ -73,23 +75,23 @@
-
- # Print the main tag
- if attr_count == 0:
-- print '%s<%s>' % (' '*indent, node.nodeName)
-+ print('%s<%s>' % (' '*indent, node.nodeName))
- else:
-- print '%s<%s' % (' '*indent, node.nodeName)
-+ print('%s<%s' % (' '*indent, node.nodeName))
-
- all_attributes = []
- for (name, value) in node.attributes.items():
- all_attributes.append((name, value))
-- all_attributes.sort(CmpTuple())
-+ all_attributes.sort(key=(lambda attr: attr[0]))
- for (name, value) in all_attributes:
-- print '%s %s="%s"' % (' '*indent, name, value)
-- print '%s>' % (' '*indent)
-+ print('%s %s="%s"' % (' '*indent, name, value))
-+ print('%s>' % (' '*indent))
- if node.nodeValue:
-- print '%s %s' % (' '*indent, node.nodeValue)
-+ print('%s %s' % (' '*indent, node.nodeValue))
-
- for sub_node in node.childNodes:
- PrettyPrintNode(sub_node, indent=indent+2)
-- print '%s</%s>' % (' '*indent, node.nodeName)
-+ print('%s</%s>' % (' '*indent, node.nodeName))
-
-
- def FlattenFilter(node):
-@@ -283,8 +285,8 @@
-
- # check if we have exactly 1 parameter.
- if len(argv) < 2:
-- print ('Usage: %s "c:\\path\\to\\vcproj.vcproj" [key1=value1] '
-- '[key2=value2]' % argv[0])
-+ print('Usage: %s "c:\\path\\to\\vcproj.vcproj" [key1=value1] '
-+ '[key2=value2]' % argv[0])
- return 1
-
- # Parse the keys
-diff --git a/tools/gyp/gyptest.py b/gyptest.py
-index 9930e78..1a9ffca 100755
---- a/tools/gyp/gyptest.py
-+++ b/tools/gyp/gyptest.py
-@@ -58,7 +58,7 @@
- os.chdir(args.chdir)
-
- if args.path:
-- extra_path = [os.path.abspath(p) for p in opts.path]
-+ extra_path = [os.path.abspath(p) for p in args.path]
- extra_path = os.pathsep.join(extra_path)
- os.environ['PATH'] = extra_path + os.pathsep + os.environ['PATH']
-
-diff --git a/tools/gyp/pylib/gyp/MSVSNew.py b/pylib/gyp/MSVSNew.py
-index 593f0e5..0445931 100644
---- a/tools/gyp/pylib/gyp/MSVSNew.py
-+++ b/tools/gyp/pylib/gyp/MSVSNew.py
-@@ -21,6 +21,13 @@
- _new_md5 = md5.new
-
-
-+try:
-+ # cmp was removed in python3.
-+ cmp
-+except NameError:
-+ def cmp(a, b):
-+ return (a > b) - (a < b)
-+
- # Initialize random number generator
- random.seed()
-
-diff --git a/tools/gyp/pylib/gyp/common.py b/pylib/gyp/common.py
-index 1823de8..b268d22 100644
---- a/tools/gyp/pylib/gyp/common.py
-+++ b/tools/gyp/pylib/gyp/common.py
-@@ -584,7 +584,7 @@
- graph = {'a': '$(b) $(c)', 'b': 'hi', 'c': '$(b)'}
- def GetEdges(node):
- return re.findall(r'\$\(([^))]\)', graph[node])
-- print TopologicallySorted(graph.keys(), GetEdges)
-+ print(TopologicallySorted(graph.keys(), GetEdges))
- ==>
- ['a', 'c', b']
- """
-diff --git a/tools/gyp/pylib/gyp/generator/make.py b/pylib/gyp/generator/make.py
-index 2057e3a..8c2827e 100644
---- a/tools/gyp/pylib/gyp/generator/make.py
-+++ b/tools/gyp/pylib/gyp/generator/make.py
-@@ -1636,7 +1636,7 @@
- self.WriteDoCmd([self.output_binary], deps, 'touch', part_of_all,
- postbuilds=postbuilds)
- else:
-- print("WARNING: no output for", self.type, target)
-+ print("WARNING: no output for", self.type, self.target)
-
- # Add an alias for each target (if there are any outputs).
- # Installable target aliases are created below.
-diff --git a/tools/gyp/pylib/gyp/generator/msvs.py b/pylib/gyp/generator/msvs.py
-index e8a2b36..9eac028 100644
---- a/tools/gyp/pylib/gyp/generator/msvs.py
-+++ b/tools/gyp/pylib/gyp/generator/msvs.py
-@@ -308,10 +308,8 @@
- if names:
- return names[0]
- else:
-- print >> sys.stdout, (
-- 'Warning: No include files found for '
-- 'detected Windows SDK version %s' % (version)
-- )
-+ print('Warning: No include files found for '
-+ 'detected Windows SDK version %s' % (version))
-
-
- def _BuildCommandLineForRuleRaw(spec, cmd, cygwin_shell, has_input_path,
-@@ -2065,7 +2063,7 @@
- if generator_flags.get('msvs_error_on_missing_sources', False):
- raise GypError(error_message)
- else:
-- print("Warning: " + error_message, file=sys.stdout)
-+ print("Warning: " + error_message)
-
-
- def _GenerateMSBuildFiltersFile(filters_path, source_files,
-diff --git a/tools/gyp/pylib/gyp/mac_tool.py b/pylib/gyp/mac_tool.py
-index 7d3a8c2..84f8863 100755
---- a/tools/gyp/pylib/gyp/mac_tool.py
-+++ b/tools/gyp/pylib/gyp/mac_tool.py
-@@ -670,7 +670,7 @@
- count = len(filelist)
- capacity = NextGreaterPowerOf2(count)
- strings_offset = 24 + (12 * capacity)
-- max_value_length = len(max(filelist.items(), key=lambda (k,v):len(v))[1])
-+ max_value_length = len(max(filelist.items(), key=lambda t: len(t[1]))[1])
-
- out = open(output_name, "wb")
- out.write(struct.pack('<LHHLLLL', magic, version, _reserved, strings_offset,
-diff --git a/tools/gyp/pylib/gyp/xcodeproj_file.py b/pylib/gyp/xcodeproj_file.py
-index bd238f6..bc9814d 100644
---- a/tools/gyp/pylib/gyp/xcodeproj_file.py
-+++ b/tools/gyp/pylib/gyp/xcodeproj_file.py
-@@ -160,6 +160,13 @@
- except NameError:
- basestring = str
-
-+try:
-+ # cmp was removed in python3.
-+ cmp
-+except NameError:
-+ def cmp(a, b):
-+ return (a > b) - (a < b)
-+
- # See XCObject._EncodeString. This pattern is used to determine when a string
- # can be printed unquoted. Strings that match this pattern may be printed
- # unquoted. Strings that do not match must be quoted and may be further
-diff --git a/tools/gyp/samples/samples b/samples/samples
-index 804b618..ff26de3 100755
---- a/tools/gyp/samples/samples
-+++ b/tools/gyp/samples/samples
-@@ -4,6 +4,8 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
-+from __future__ import print_function
-+
- import os.path
- import shutil
- import sys
-@@ -57,7 +59,7 @@
-
- def Main(argv):
- if len(argv) != 3 or argv[1] not in ['push', 'pull']:
-- print 'Usage: %s push/pull PATH_TO_CHROME' % argv[0]
-+ print('Usage: %s push/pull PATH_TO_CHROME' % argv[0])
- return 1
-
- path_to_chrome = argv[2]
-@@ -66,10 +68,10 @@
- chrome_file = os.path.join(path_to_chrome, g)
- local_file = os.path.join(os.path.dirname(argv[0]), os.path.split(g)[1])
- if argv[1] == 'push':
-- print 'Copying %s to %s' % (local_file, chrome_file)
-+ print('Copying %s to %s' % (local_file, chrome_file))
- shutil.copyfile(local_file, chrome_file)
- elif argv[1] == 'pull':
-- print 'Copying %s to %s' % (chrome_file, local_file)
-+ print('Copying %s to %s' % (chrome_file, local_file))
- shutil.copyfile(chrome_file, local_file)
- else:
- assert False
-diff --git a/tools/gyp/tools/pretty_vcproj.py b/tools/pretty_vcproj.py
-index f02e59e..4454d9b 100755
---- a/tools/gyp/tools/pretty_vcproj.py
-+++ b/tools/gyp/tools/pretty_vcproj.py
-@@ -22,6 +22,13 @@
- from xml.dom.minidom import parse
- from xml.dom.minidom import Node
-
-+try:
-+ # cmp was removed in python3.
-+ cmp
-+except NameError:
-+ def cmp(a, b):
-+ return (a > b) - (a < b)
-+
- REPLACEMENTS = dict()
- ARGUMENTS = None
-
-@@ -63,7 +70,7 @@
- def PrettyPrintNode(node, indent=0):
- if node.nodeType == Node.TEXT_NODE:
- if node.data.strip():
-- print '%s%s' % (' '*indent, node.data.strip())
-+ print('%s%s' % (' '*indent, node.data.strip()))
- return
-
- if node.childNodes:
-@@ -322,7 +329,6 @@
-
- # Finally, we use the prett xml function to print the vcproj back to the
- # user.
-- #print dom.toprettyxml(newl="\n")
- PrettyPrintNode(dom.documentElement)
- return 0
-
---- node-v10.15.3/tools/gyp/pylib/gyp/input.py.old 2019-04-02 06:44:13.086310973 +0000
-+++ node-v10.15.3/tools/gyp/pylib/gyp/input.py 2019-04-02 06:45:35.987250735 +0000
-@@ -900,6 +900,9 @@
- (e, contents, build_file))
-
- p_stdout, p_stderr = p.communicate('')
-+ if getattr(p_stdout, 'decode'):
-+ p_stdout = p_stdout.decode('utf-8')
-+ p_stderr = p_stderr.decode('utf-8')
-
- if p.wait() != 0 or p_stderr:
- sys.stderr.write(p_stderr)
diff --git a/user/node/libatomic.patch b/user/node/libatomic.patch
deleted file mode 100644
index fc2e4ffd2..000000000
--- a/user/node/libatomic.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- node-v10.15.3/node.gyp.old 2019-03-05 15:16:32.000000000 +0000
-+++ node-v10.15.3/node.gyp 2019-04-06 13:54:51.204939193 +0000
-@@ -479,6 +479,11 @@
- 'msvs_disabled_warnings!': [4244],
-
- 'conditions': [
-+ [ 'host_arch=="mips" or host_arch=="mipsel" or host_arch=="ppc"', {
-+ 'link_settings': {
-+ 'libraries': [ '-latomic' ],
-+ },
-+ }],
- [ 'node_code_cache_path!=""', {
- 'sources': [ '<(node_code_cache_path)' ]
- }, {
diff --git a/user/node/pmmx-test.patch b/user/node/pmmx-test.patch
new file mode 100644
index 000000000..aad874a90
--- /dev/null
+++ b/user/node/pmmx-test.patch
@@ -0,0 +1,16 @@
+The pmmx Node binary is too large to read entirely into js memory.
+
+Issue: #795
+See-Also: https://bugzilla.opensuse.org/show_bug.cgi?id=1183155
+
+--- node-v16.15.0/test/parallel/test-worker-stdio.js.old 2022-04-26 22:03:31.000000000 +0000
++++ node-v16.15.0/test/parallel/test-worker-stdio.js 2022-12-17 23:44:49.604182229 +0000
+@@ -27,7 +27,7 @@
+ const passed = new BufferingWritable();
+
+ const w = new Worker(__filename, { stdin: true, stdout: true });
+- const source = fs.createReadStream(process.execPath);
++ const source = fs.createReadStream(process.execPath, { end: 1048576 });
+ source.pipe(w.stdin);
+ source.pipe(original);
+ w.stdout.pipe(passed);
diff --git a/user/node/pmmx-time64.patch b/user/node/pmmx-time64.patch
new file mode 100644
index 000000000..b47a1a6fe
--- /dev/null
+++ b/user/node/pmmx-time64.patch
@@ -0,0 +1,216 @@
+--- node-v18.12.1/lib/internal/fs/utils.js.old 2022-11-04 11:13:14.000000000 -0500
++++ node-v18.12.1/lib/internal/fs/utils.js 2023-01-01 18:07:20.292441829 -0600
+@@ -12,7 +12,6 @@
+ NumberIsFinite,
+ NumberIsInteger,
+ MathMin,
+- MathRound,
+ ObjectIs,
+ ObjectPrototypeHasOwnProperty,
+ ObjectSetPrototypeOf,
+@@ -40,7 +39,7 @@
+ } = require('internal/errors');
+ const {
+ isArrayBufferView,
+- isBigInt64Array,
++ isBigUint64Array,
+ isDate,
+ isUint8Array,
+ } = require('internal/util/types');
+@@ -455,16 +454,14 @@
+ return sec * kNsPerSecBigInt + nsec;
+ }
+
+-// The Date constructor performs Math.floor() on the absolute value
+-// of the timestamp: https://tc39.es/ecma262/#sec-timeclip
++// The Date constructor performs Math.floor() to the timestamp.
++// https://tc39.es/ecma262/#sec-timeclip
+ // Since there may be a precision loss when the timestamp is
+ // converted to a floating point number, we manually round
+ // the timestamp here before passing it to Date().
+ // Refs: https://github.com/nodejs/node/pull/12607
+-// Refs: https://github.com/nodejs/node/pull/43714
+ function dateFromMs(ms) {
+- // Coercing to number, ms can be bigint
+- return new Date(MathRound(Number(ms)));
++ return new Date(Number(ms) + 0.5);
+ }
+
+ function BigIntStats(dev, mode, nlink, uid, gid, rdev, blksize,
+@@ -529,12 +526,12 @@
+ };
+
+ /**
+- * @param {Float64Array | BigInt64Array} stats
++ * @param {Float64Array | BigUint64Array} stats
+ * @param {number} offset
+ * @returns {BigIntStats | Stats}
+ */
+ function getStatsFromBinding(stats, offset = 0) {
+- if (isBigInt64Array(stats)) {
++ if (isBigUint64Array(stats)) {
+ return new BigIntStats(
+ stats[0 + offset], stats[1 + offset], stats[2 + offset],
+ stats[3 + offset], stats[4 + offset], stats[5 + offset],
+--- node-v18.12.1/src/aliased_buffer.h.old 2022-11-04 11:13:14.000000000 -0500
++++ node-v18.12.1/src/aliased_buffer.h 2023-01-01 18:08:01.407999936 -0600
+@@ -306,7 +306,7 @@
+ typedef AliasedBufferBase<uint8_t, v8::Uint8Array> AliasedUint8Array;
+ typedef AliasedBufferBase<uint32_t, v8::Uint32Array> AliasedUint32Array;
+ typedef AliasedBufferBase<double, v8::Float64Array> AliasedFloat64Array;
+-typedef AliasedBufferBase<int64_t, v8::BigInt64Array> AliasedBigInt64Array;
++typedef AliasedBufferBase<int64_t, v8::BigUint64Array> AliasedBigUint64Array;
+ } // namespace node
+
+ #endif // defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
+--- node-v18.12.1/src/node_file-inl.h.old 2022-11-04 11:13:14.000000000 -0500
++++ node-v18.12.1/src/node_file-inl.h 2023-01-01 18:09:07.830823990 -0600
+@@ -90,18 +90,9 @@
+ fields->SetValue(offset + static_cast<size_t>(FsStatsOffset::stat_offset), \
+ static_cast<NativeT>(stat))
+
+-// On win32, time is stored in uint64_t and starts from 1601-01-01.
+-// libuv calculates tv_sec and tv_nsec from it and converts to signed long,
+-// which causes Y2038 overflow. On the other platforms it is safe to treat
+-// negative values as pre-epoch time.
+-#ifdef _WIN32
+ #define SET_FIELD_WITH_TIME_STAT(stat_offset, stat) \
+ /* NOLINTNEXTLINE(runtime/int) */ \
+ SET_FIELD_WITH_STAT(stat_offset, static_cast<unsigned long>(stat))
+-#else
+-#define SET_FIELD_WITH_TIME_STAT(stat_offset, stat) \
+- SET_FIELD_WITH_STAT(stat_offset, static_cast<double>(stat))
+-#endif // _WIN32
+
+ SET_FIELD_WITH_STAT(kDev, s->st_dev);
+ SET_FIELD_WITH_STAT(kMode, s->st_mode);
+@@ -242,7 +233,7 @@
+ Environment* env = binding_data->env();
+ if (value->StrictEquals(env->fs_use_promises_symbol())) {
+ if (use_bigint) {
+- return FSReqPromise<AliasedBigInt64Array>::New(binding_data, use_bigint);
++ return FSReqPromise<AliasedBigUint64Array>::New(binding_data, use_bigint);
+ } else {
+ return FSReqPromise<AliasedFloat64Array>::New(binding_data, use_bigint);
+ }
+--- node-v18.12.1/src/node_file.h.old 2022-11-04 11:13:14.000000000 -0500
++++ node-v18.12.1/src/node_file.h 2023-01-01 18:09:24.888981123 -0600
+@@ -18,7 +18,7 @@
+ explicit BindingData(Environment* env, v8::Local<v8::Object> wrap);
+
+ AliasedFloat64Array stats_field_array;
+- AliasedBigInt64Array stats_field_bigint_array;
++ AliasedBigUint64Array stats_field_bigint_array;
+
+ std::vector<BaseObjectPtr<FileHandleReadWrap>>
+ file_handle_read_wrap_freelist;
+--- node-v18.12.1/test/parallel/test-fs-stat-date.mjs.old 2022-11-04 11:13:14.000000000 -0500
++++ node-v18.12.1/test/parallel/test-fs-stat-date.mjs 1969-12-31 18:00:00.000000000 -0600
+@@ -1,95 +0,0 @@
+-import * as common from '../common/index.mjs';
+-
+-// Test timestamps returned by fsPromises.stat and fs.statSync
+-
+-import fs from 'node:fs';
+-import fsPromises from 'node:fs/promises';
+-import path from 'node:path';
+-import assert from 'node:assert';
+-import tmpdir from '../common/tmpdir.js';
+-
+-// On some platforms (for example, ppc64) boundaries are tighter
+-// than usual. If we catch these errors, skip corresponding test.
+-const ignoredErrors = new Set(['EINVAL', 'EOVERFLOW']);
+-
+-tmpdir.refresh();
+-const filepath = path.resolve(tmpdir.path, 'timestamp');
+-
+-await (await fsPromises.open(filepath, 'w')).close();
+-
+-// Perform a trivial check to determine if filesystem supports setting
+-// and retrieving atime and mtime. If it doesn't, skip the test.
+-await fsPromises.utimes(filepath, 2, 2);
+-const { atimeMs, mtimeMs } = await fsPromises.stat(filepath);
+-if (atimeMs !== 2000 || mtimeMs !== 2000) {
+- common.skip(`Unsupported filesystem (atime=${atimeMs}, mtime=${mtimeMs})`);
+-}
+-
+-// Date might round down timestamp
+-function closeEnough(actual, expected, margin) {
+- // On ppc64, value is rounded to seconds
+- if (process.arch === 'ppc64') {
+- margin += 1000;
+- }
+-
+- // Filesystems without support for timestamps before 1970-01-01, such as NFSv3,
+- // should return 0 for negative numbers. Do not treat it as error.
+- if (actual === 0 && expected < 0) {
+- console.log(`ignored 0 while expecting ${expected}`);
+- return;
+- }
+-
+- assert.ok(Math.abs(Number(actual - expected)) < margin,
+- `expected ${expected} ± ${margin}, got ${actual}`);
+-}
+-
+-async function runTest(atime, mtime, margin = 0) {
+- margin += Number.EPSILON;
+- try {
+- await fsPromises.utimes(filepath, new Date(atime), new Date(mtime));
+- } catch (e) {
+- if (ignoredErrors.has(e.code)) return;
+- throw e;
+- }
+-
+- const stats = await fsPromises.stat(filepath);
+- closeEnough(stats.atimeMs, atime, margin);
+- closeEnough(stats.mtimeMs, mtime, margin);
+- closeEnough(stats.atime.getTime(), new Date(atime).getTime(), margin);
+- closeEnough(stats.mtime.getTime(), new Date(mtime).getTime(), margin);
+-
+- const statsBigint = await fsPromises.stat(filepath, { bigint: true });
+- closeEnough(statsBigint.atimeMs, BigInt(atime), margin);
+- closeEnough(statsBigint.mtimeMs, BigInt(mtime), margin);
+- closeEnough(statsBigint.atime.getTime(), new Date(atime).getTime(), margin);
+- closeEnough(statsBigint.mtime.getTime(), new Date(mtime).getTime(), margin);
+-
+- const statsSync = fs.statSync(filepath);
+- closeEnough(statsSync.atimeMs, atime, margin);
+- closeEnough(statsSync.mtimeMs, mtime, margin);
+- closeEnough(statsSync.atime.getTime(), new Date(atime).getTime(), margin);
+- closeEnough(statsSync.mtime.getTime(), new Date(mtime).getTime(), margin);
+-
+- const statsSyncBigint = fs.statSync(filepath, { bigint: true });
+- closeEnough(statsSyncBigint.atimeMs, BigInt(atime), margin);
+- closeEnough(statsSyncBigint.mtimeMs, BigInt(mtime), margin);
+- closeEnough(statsSyncBigint.atime.getTime(), new Date(atime).getTime(), margin);
+- closeEnough(statsSyncBigint.mtime.getTime(), new Date(mtime).getTime(), margin);
+-}
+-
+-// Too high/low numbers produce too different results on different platforms
+-{
+- // TODO(LiviaMedeiros): investigate outdated stat time on FreeBSD.
+- // On Windows, filetime is stored and handled differently. Supporting dates
+- // after Y2038 is preferred over supporting dates before 1970-01-01.
+- if (!common.isFreeBSD && !common.isWindows) {
+- await runTest(-40691, -355, 1); // Potential precision loss on 32bit
+- await runTest(-355, -40691, 1); // Potential precision loss on 32bit
+- await runTest(-1, -1);
+- }
+- await runTest(0, 0);
+- await runTest(1, 1);
+- await runTest(355, 40691, 1); // Precision loss on 32bit
+- await runTest(40691, 355, 1); // Precision loss on 32bit
+- await runTest(1713037251360, 1713037251360, 1); // Precision loss
+-}
+diff -ur a/src/node_file.h b/src/node_file.h
+--- a/src/node_file.h 2023-03-20 21:33:20.806694666 +0000
++++ b/src/node_file.h 2023-03-20 21:34:14.388701175 +0000
+@@ -62,7 +62,7 @@
+ AliasedBigUint64Array stats_field_bigint_array;
+
+ AliasedFloat64Array statfs_field_array;
+- AliasedBigInt64Array statfs_field_bigint_array;
++ AliasedBigUint64Array statfs_field_bigint_array;
+
+ std::vector<BaseObjectPtr<FileHandleReadWrap>>
+ file_handle_read_wrap_freelist;
diff --git a/user/node/ppc-fixes-for-older-models-18.patch b/user/node/ppc-fixes-for-older-models-18.patch
new file mode 100644
index 000000000..88d5bd1a0
--- /dev/null
+++ b/user/node/ppc-fixes-for-older-models-18.patch
@@ -0,0 +1,918 @@
+Fix PowerPC CPU detection and codegen to work with more processors.
+
+This patch defines the correct optional Power ISA features that the
+PPC code generator needs in order to run without crashing on v2.01
+and older CPUs such as PPC 970 (G5) or NXP e6500, and to run more
+efficiently on CPUs with features that weren't being used before.
+
+PowerPC ISA v2.01 and older CPUs don't have FP round to int instructions,
+and PowerPC ISA v2.06 and older are missing support for unsigned 64-bit
+to/from double, as well as integer to/from single-precision float.
+
+Use the current PPC_5_PLUS CPU feature to determine whether to generate
+FP round to int, and use the PPC_7_PLUS feature to determine whether
+to use the v2.06 ISA instructions or whether to generate an alternate
+generic PPC sequence to handle the cases of 64-bit unsigned integer
+to/from floating point, integers to single-precision floating point,
+and loading and storing 64-bit integers with byte reversal.
+
+Add a new PPC_7_PLUS_NXP feature for the popcnt and ldbrx/stdbrx
+opcodes added in Power ISA v2.06, which are also present in the NXP
+e5500 and e6500 cores, which are otherwise missing many of the
+features added since v2.01. This enables NXP cores to use a few
+more features. Additionally, bring back the ISELECT feature flag,
+which is also supported by NXP cores, including older ones, and
+has its own AT_HWCAP2 feature flag in Linux.
+
+By defining a new ICACHE_SNOOP feature bit to replace the use of
+PPC_6_PLUS, the meaning of the instruction cache flushing fast path,
+and the CPUs that can use it, is more clearly defined. In addition,
+for the other PowerPC chips, the loop to flush the data and instruction
+cache blocks has been split into two loops, with a single "sync" and
+"isync" after each loop, which should be more efficient, and also handles
+the few CPUs with differing data and instruction cache line sizes.
+
+In the macro assembler methods, in addition to providing an alternate
+path for FP conversion opcodes added in POWER7 (ISA v2.06), unnecessary
+instructions to move sp down and then immediately back up were replaced
+with negative offsets from the current sp. This should be faster, and also
+sp is supposed to point to a back chain at all times (V8 may not do this).
+
+--- a/deps/v8/src/base/cpu.cc 2022-02-08 04:37:48.000000000 -0800
++++ b/deps/v8/src/base/cpu.cc 2022-02-19 14:38:37.997161835 -0800
+@@ -14,15 +14,16 @@
+ #if V8_OS_LINUX
+ #include <linux/auxvec.h> // AT_HWCAP
+ #endif
+-#if V8_GLIBC_PREREQ(2, 16)
++#if V8_GLIBC_PREREQ(2, 16) || \
++ (V8_OS_LINUX && (V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64))
+ #include <sys/auxv.h> // getauxval()
++#if defined(PPC_FEATURE2_HAS_ISEL) && !defined(PPC_FEATURE2_ISEL)
++#define PPC_FEATURE2_ISEL PPC_FEATURE2_HAS_ISEL
++#endif
+ #endif
+ #if V8_OS_QNX
+ #include <sys/syspage.h> // cpuinfo
+ #endif
+-#if V8_OS_LINUX && (V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64)
+-#include <elf.h>
+-#endif
+ #if V8_OS_AIX
+ #include <sys/systemcfg.h> // _system_configuration
+ #ifndef POWER_8
+@@ -772,56 +773,55 @@
+
+ #ifndef USE_SIMULATOR
+ #if V8_OS_LINUX
+- // Read processor info from /proc/self/auxv.
+- char* auxv_cpu_type = nullptr;
+- FILE* fp = base::Fopen("/proc/self/auxv", "r");
+- if (fp != nullptr) {
+-#if V8_TARGET_ARCH_PPC64
+- Elf64_auxv_t entry;
+-#else
+- Elf32_auxv_t entry;
+-#endif
+- for (;;) {
+- size_t n = fread(&entry, sizeof(entry), 1, fp);
+- if (n == 0 || entry.a_type == AT_NULL) {
+- break;
+- }
+- switch (entry.a_type) {
+- case AT_PLATFORM:
+- auxv_cpu_type = reinterpret_cast<char*>(entry.a_un.a_val);
+- break;
+- case AT_ICACHEBSIZE:
+- icache_line_size_ = entry.a_un.a_val;
+- break;
+- case AT_DCACHEBSIZE:
+- dcache_line_size_ = entry.a_un.a_val;
+- break;
+- }
+- }
+- base::Fclose(fp);
+- }
+-
+- part_ = -1;
+- if (auxv_cpu_type) {
+- if (strcmp(auxv_cpu_type, "power10") == 0) {
+- part_ = kPPCPower10;
+- } else if (strcmp(auxv_cpu_type, "power9") == 0) {
+- part_ = kPPCPower9;
+- } else if (strcmp(auxv_cpu_type, "power8") == 0) {
+- part_ = kPPCPower8;
+- } else if (strcmp(auxv_cpu_type, "power7") == 0) {
+- part_ = kPPCPower7;
+- } else if (strcmp(auxv_cpu_type, "power6") == 0) {
+- part_ = kPPCPower6;
+- } else if (strcmp(auxv_cpu_type, "power5") == 0) {
+- part_ = kPPCPower5;
+- } else if (strcmp(auxv_cpu_type, "ppc970") == 0) {
+- part_ = kPPCG5;
+- } else if (strcmp(auxv_cpu_type, "ppc7450") == 0) {
+- part_ = kPPCG4;
+- } else if (strcmp(auxv_cpu_type, "pa6t") == 0) {
+- part_ = kPPCPA6T;
+- }
++ // Read processor info from getauxval() (needs at least glibc 2.18 or musl).
++ icache_line_size_ = static_cast<int>(getauxval(AT_ICACHEBSIZE));
++ dcache_line_size_ = static_cast<int>(getauxval(AT_DCACHEBSIZE));
++ const unsigned long hwcap = getauxval(AT_HWCAP);
++ const unsigned long hwcap2 = getauxval(AT_HWCAP2);
++ const char* platform = reinterpret_cast<const char*>(getauxval(AT_PLATFORM));
++
++ // NOTE: AT_HWCAP ISA version bits aren't cumulative, so it's necessary
++ // to compare against a mask of all supported versions and CPUs, up to
++ // ISA v2.06, which *is* set for later CPUs. In contrast, the AT_HWCAP2
++ // ISA version bits from v2.07 onward are set cumulatively, so POWER10
++ // will set the ISA version bits from v2.06 (in AT_HWCAP) through v3.1.
++
++ // i-cache coherency requires Power ISA v2.02 or later; has its own flag.
++ has_icache_snoop_ = (hwcap & PPC_FEATURE_ICACHE_SNOOP);
++
++ // requires Power ISA v2.03 or later, or the ISEL bit (e.g. e6500).
++ has_isel_ = (hwcap & (PPC_FEATURE_POWER5_PLUS | PPC_FEATURE_ARCH_2_05 |
++ PPC_FEATURE_PA6T | PPC_FEATURE_POWER6_EXT | PPC_FEATURE_ARCH_2_06)) ||
++ (hwcap2 & PPC_FEATURE2_ISEL);
++
++ // hwcap mask for older 64-bit PPC CPUs with Altivec, e.g. G5, Cell.
++ static const unsigned long kHwcapMaskPPCG5 =
++ (PPC_FEATURE_64 | PPC_FEATURE_HAS_ALTIVEC);
++
++ if (hwcap2 & PPC_FEATURE2_ARCH_3_1) {
++ part_ = kPPCPower10;
++ } else if (hwcap2 & PPC_FEATURE2_ARCH_3_00) {
++ part_ = kPPCPower9;
++ } else if (hwcap2 & PPC_FEATURE2_ARCH_2_07) {
++ part_ = kPPCPower8;
++ } else if (hwcap & PPC_FEATURE_ARCH_2_06) {
++ part_ = kPPCPower7;
++ } else if (hwcap & PPC_FEATURE_ARCH_2_05) {
++ part_ = kPPCPower6;
++ } else if (hwcap & (PPC_FEATURE_POWER5 | PPC_FEATURE_POWER5_PLUS)) {
++ part_ = kPPCPower5;
++ } else if (hwcap & PPC_FEATURE_PA6T) {
++ part_ = kPPCPA6T;
++ } else if (strcmp(platform, "ppce6500") == 0) {
++ part_ = kPPCE6500;
++ } else if (strcmp(platform, "ppce5500") == 0) {
++ part_ = kPPCE5500;
++ } else if ((hwcap & kHwcapMaskPPCG5) == kHwcapMaskPPCG5) {
++ part_ = kPPCG5;
++ } else if (hwcap & PPC_FEATURE_HAS_ALTIVEC) {
++ part_ = kPPCG4;
++ } else {
++ part_ = kPPCG3;
+ }
+
+ #elif V8_OS_AIX
+@@ -842,9 +842,13 @@
+ part_ = kPPCPower6;
+ break;
+ case POWER_5:
++ default:
+ part_ = kPPCPower5;
+ break;
+ }
++
++ has_icache_snoop_ = true;
++ has_isel_ = (part_ != kPPCPower5); // isel was added in POWER5+ (v2.03)
+ #endif // V8_OS_AIX
+ #endif // !USE_SIMULATOR
+ #endif // V8_HOST_ARCH_PPC || V8_HOST_ARCH_PPC64
+--- a/deps/v8/src/base/cpu.h 2023-03-05 09:42:53.000000000 +0300
++++ b/deps/v8/src/base/cpu.h 2024-12-30 04:02:27.901400946 +0300
+@@ -71,9 +71,12 @@
+ kPPCPower8,
+ kPPCPower9,
+ kPPCPower10,
++ kPPCG3,
+ kPPCG4,
+ kPPCG5,
+- kPPCPA6T
++ kPPCPA6T,
++ kPPCE5500,
++ kPPCE6500
+ };
+
+ // General features
+@@ -127,6 +130,10 @@
+ // mips features
+ bool is_fp64_mode() const { return is_fp64_mode_; }
+ bool has_msa() const { return has_msa_; }
++
++ // PowerPC features
++ bool has_icache_snoop() const { return has_icache_snoop_; }
++ bool has_isel() const { return has_isel_; }
+
+ // riscv features
+ bool has_rvv() const { return has_rvv_; }
+@@ -180,6 +187,8 @@
+ bool has_non_stop_time_stamp_counter_;
+ bool is_running_in_vm_;
+ bool has_msa_;
++ bool has_icache_snoop_;
++ bool has_isel_;
+ bool has_rvv_;
+ };
+
+--- a/deps/v8/src/builtins/ppc/builtins-ppc.cc 2022-02-08 04:37:48.000000000 -0800
++++ b/deps/v8/src/builtins/ppc/builtins-ppc.cc 2022-02-19 15:18:36.373031457 -0800
+@@ -2823,7 +2823,7 @@
+ __ lbz(scratch, MemOperand(scratch, 0));
+ __ cmpi(scratch, Operand::Zero());
+
+- if (CpuFeatures::IsSupported(PPC_7_PLUS)) {
++ if (CpuFeatures::IsSupported(ISELECT)) {
+ __ Move(scratch, thunk_ref);
+ __ isel(eq, scratch, function_address, scratch);
+ } else {
+--- a/deps/v8/src/codegen/ppc/macro-assembler-ppc.cc 2023-03-05 09:42:53.000000000 +0300
++++ b/deps/v8/src/codegen/ppc/macro-assembler-ppc.cc 2025-01-02 18:47:19.405199075 +0300
+@@ -906,13 +906,25 @@
+
+ void TurboAssembler::ConvertIntToFloat(Register src, DoubleRegister dst) {
+ MovIntToDouble(dst, src, r0);
+- fcfids(dst, dst);
++
++ if (CpuFeatures::IsSupported(PPC_7_PLUS)) {
++ fcfids(dst, dst);
++ } else {
++ fcfid(dst, dst);
++ frsp(dst, dst);
++ }
+ }
+
+ void TurboAssembler::ConvertUnsignedIntToFloat(Register src,
+ DoubleRegister dst) {
+ MovUnsignedIntToDouble(dst, src, r0);
+- fcfids(dst, dst);
++
++ if (CpuFeatures::IsSupported(PPC_7_PLUS)) {
++ fcfids(dst, dst);
++ } else {
++ fcfid(dst, dst);
++ frsp(dst, dst);
++ }
+ }
+
+ #if V8_TARGET_ARCH_PPC64
+@@ -924,20 +936,52 @@
+
+ void TurboAssembler::ConvertUnsignedInt64ToFloat(Register src,
+ DoubleRegister double_dst) {
+- MovInt64ToDouble(double_dst, src);
+- fcfidus(double_dst, double_dst);
++ if (CpuFeatures::IsSupported(PPC_7_PLUS)) {
++ MovInt64ToDouble(double_dst, src);
++ fcfidus(double_dst, double_dst);
++ } else {
++ ConvertUnsignedInt64ToDouble(src, double_dst);
++ frsp(double_dst, double_dst);
++ }
+ }
+
+ void TurboAssembler::ConvertUnsignedInt64ToDouble(Register src,
+ DoubleRegister double_dst) {
+- MovInt64ToDouble(double_dst, src);
+- fcfidu(double_dst, double_dst);
++ if (CpuFeatures::IsSupported(PPC_7_PLUS)) {
++ MovInt64ToDouble(double_dst, src);
++ fcfidu(double_dst, double_dst);
++ } else {
++ Label negative;
++ Label done;
++ cmpi(src, Operand::Zero());
++ blt(&negative);
++ std(src, MemOperand(sp, -kDoubleSize));
++ nop(GROUP_ENDING_NOP); // LHS/RAW optimization
++ lfd(double_dst, MemOperand(sp, -kDoubleSize));
++ fcfid(double_dst, double_dst);
++ b(&done);
++ bind(&negative);
++ // Note: GCC saves the lowest bit, then ORs it after shifting right 1 bit,
++ // presumably for better rounding. This version only shifts right 1 bit.
++ srdi(r0, src, Operand(1));
++ std(r0, MemOperand(sp, -kDoubleSize));
++ nop(GROUP_ENDING_NOP); // LHS/RAW optimization
++ lfd(double_dst, MemOperand(sp, -kDoubleSize));
++ fcfid(double_dst, double_dst);
++ fadd(double_dst, double_dst, double_dst);
++ bind(&done);
++ }
+ }
+
+ void TurboAssembler::ConvertInt64ToFloat(Register src,
+ DoubleRegister double_dst) {
+ MovInt64ToDouble(double_dst, src);
+- fcfids(double_dst, double_dst);
++ if (CpuFeatures::IsSupported(PPC_7_PLUS)) {
++ fcfids(double_dst, double_dst);
++ } else {
++ fcfid(double_dst, double_dst);
++ frsp(double_dst, double_dst);
++ }
+ }
+ #endif
+
+@@ -967,15 +1011,56 @@
+ void TurboAssembler::ConvertDoubleToUnsignedInt64(
+ const DoubleRegister double_input, const Register dst,
+ const DoubleRegister double_dst, FPRoundingMode rounding_mode) {
+- if (rounding_mode == kRoundToZero) {
+- fctiduz(double_dst, double_input);
++ if (CpuFeatures::IsSupported(PPC_7_PLUS)) {
++ if (rounding_mode == kRoundToZero) {
++ fctiduz(double_dst, double_input);
++ } else {
++ SetRoundingMode(rounding_mode);
++ fctidu(double_dst, double_input);
++ ResetRoundingMode();
++ }
++
++ MovDoubleToInt64(dst, double_dst);
+ } else {
+- SetRoundingMode(rounding_mode);
+- fctidu(double_dst, double_input);
+- ResetRoundingMode();
++ Label safe_size;
++ Label done;
++ mov(dst, Operand(1593835520)); // bit pattern for 2^63 as a float
++ stw(dst, MemOperand(sp, -kFloatSize));
++ nop(GROUP_ENDING_NOP); // LHS/RAW optimization
++ lfs(double_dst, MemOperand(sp, -kFloatSize));
++ fcmpu(double_input, double_dst);
++ blt(&safe_size);
++ // Subtract 2^63, then OR the top bit of the uint64 to add back
++ fsub(double_dst, double_input, double_dst);
++ if (rounding_mode == kRoundToZero) {
++ fctidz(double_dst, double_dst);
++ } else {
++ SetRoundingMode(rounding_mode);
++ fctid(double_dst, double_dst);
++ ResetRoundingMode();
++ }
++ // set r0 to -1, then clear all but the MSB.
++ mov(r0, Operand(-1));
++ rldicr(r0, r0, 0, 0);
++ stfd(double_dst, MemOperand(sp, -kDoubleSize));
++ nop(GROUP_ENDING_NOP); // LHS/RAW optimization
++ ld(dst, MemOperand(sp, -kDoubleSize));
++ orx(dst, dst, r0);
++ b(&done);
++ // Handling for values smaller than 2^63.
++ bind(&safe_size);
++ if (rounding_mode == kRoundToZero) {
++ fctidz(double_dst, double_input);
++ } else {
++ SetRoundingMode(rounding_mode);
++ fctid(double_dst, double_input);
++ ResetRoundingMode();
++ }
++ stfd(double_dst, MemOperand(sp, -kDoubleSize));
++ nop(GROUP_ENDING_NOP); // LHS/RAW optimization
++ ld(dst, MemOperand(sp, -kDoubleSize));
++ bind(&done);
+ }
+-
+- MovDoubleToInt64(dst, double_dst);
+ }
+ #endif
+
+@@ -2466,19 +2551,17 @@
+ }
+ #endif
+
+- addi(sp, sp, Operand(-kDoubleSize));
+ #if V8_TARGET_ARCH_PPC64
+ mov(scratch, Operand(litVal.ival));
+- std(scratch, MemOperand(sp));
++ std(scratch, MemOperand(sp, -kDoubleSize));
+ #else
+ LoadIntLiteral(scratch, litVal.ival[0]);
+- stw(scratch, MemOperand(sp, 0));
++ stw(scratch, MemOperand(sp, -kDoubleSize));
+ LoadIntLiteral(scratch, litVal.ival[1]);
+- stw(scratch, MemOperand(sp, 4));
++ stw(scratch, MemOperand(sp, -kDoubleSize + 4));
+ #endif
+ nop(GROUP_ENDING_NOP); // LHS/RAW optimization
+- lfd(result, MemOperand(sp, 0));
+- addi(sp, sp, Operand(kDoubleSize));
++ lfd(result, MemOperand(sp, -kDoubleSize));
+ }
+
+ void TurboAssembler::MovIntToDouble(DoubleRegister dst, Register src,
+@@ -2492,18 +2575,16 @@
+ #endif
+
+ DCHECK(src != scratch);
+- subi(sp, sp, Operand(kDoubleSize));
+ #if V8_TARGET_ARCH_PPC64
+ extsw(scratch, src);
+- std(scratch, MemOperand(sp, 0));
++ std(scratch, MemOperand(sp, -kDoubleSize));
+ #else
+ srawi(scratch, src, 31);
+- stw(scratch, MemOperand(sp, Register::kExponentOffset));
+- stw(src, MemOperand(sp, Register::kMantissaOffset));
++ stw(scratch, MemOperand(sp, -kDoubleSize + Register::kExponentOffset));
++ stw(src, MemOperand(sp, -kDoubleSize + Register::kMantissaOffset));
+ #endif
+ nop(GROUP_ENDING_NOP); // LHS/RAW optimization
+- lfd(dst, MemOperand(sp, 0));
+- addi(sp, sp, Operand(kDoubleSize));
++ lfd(dst, MemOperand(sp, -kDoubleSize));
+ }
+
+ void TurboAssembler::MovUnsignedIntToDouble(DoubleRegister dst, Register src,
+@@ -2517,18 +2598,16 @@
+ #endif
+
+ DCHECK(src != scratch);
+- subi(sp, sp, Operand(kDoubleSize));
+ #if V8_TARGET_ARCH_PPC64
+ clrldi(scratch, src, Operand(32));
+- std(scratch, MemOperand(sp, 0));
++ std(scratch, MemOperand(sp, -kDoubleSize));
+ #else
+ li(scratch, Operand::Zero());
+- stw(scratch, MemOperand(sp, Register::kExponentOffset));
+- stw(src, MemOperand(sp, Register::kMantissaOffset));
++ stw(scratch, MemOperand(sp, -kDoubleSize + Register::kExponentOffset));
++ stw(src, MemOperand(sp, -kDoubleSize + Register::kMantissaOffset));
+ #endif
+ nop(GROUP_ENDING_NOP); // LHS/RAW optimization
+- lfd(dst, MemOperand(sp, 0));
+- addi(sp, sp, Operand(kDoubleSize));
++ lfd(dst, MemOperand(sp, -kDoubleSize));
+ }
+
+ void TurboAssembler::MovInt64ToDouble(DoubleRegister dst,
+@@ -2543,16 +2622,14 @@
+ }
+ #endif
+
+- subi(sp, sp, Operand(kDoubleSize));
+ #if V8_TARGET_ARCH_PPC64
+- std(src, MemOperand(sp, 0));
++ std(src, MemOperand(sp, -kDoubleSize));
+ #else
+- stw(src_hi, MemOperand(sp, Register::kExponentOffset));
+- stw(src, MemOperand(sp, Register::kMantissaOffset));
++ stw(src_hi, MemOperand(sp, -kDoubleSize + Register::kExponentOffset));
++ stw(src, MemOperand(sp, -kDoubleSize + Register::kMantissaOffset));
+ #endif
+ nop(GROUP_ENDING_NOP); // LHS/RAW optimization
+- lfd(dst, MemOperand(sp, 0));
+- addi(sp, sp, Operand(kDoubleSize));
++ lfd(dst, MemOperand(sp, -kDoubleSize));
+ }
+
+ #if V8_TARGET_ARCH_PPC64
+@@ -2567,12 +2644,10 @@
+ return;
+ }
+
+- subi(sp, sp, Operand(kDoubleSize));
+- stw(src_hi, MemOperand(sp, Register::kExponentOffset));
+- stw(src_lo, MemOperand(sp, Register::kMantissaOffset));
++ stw(src_hi, MemOperand(sp, -kDoubleSize + Register::kExponentOffset));
++ stw(src_lo, MemOperand(sp, -kDoubleSize + Register::kMantissaOffset));
+ nop(GROUP_ENDING_NOP); // LHS/RAW optimization
+- lfd(dst, MemOperand(sp));
+- addi(sp, sp, Operand(kDoubleSize));
++ lfd(dst, MemOperand(sp, -kDoubleSize));
+ }
+ #endif
+
+@@ -2587,12 +2662,10 @@
+ }
+ #endif
+
+- subi(sp, sp, Operand(kDoubleSize));
+- stfd(dst, MemOperand(sp));
+- stw(src, MemOperand(sp, Register::kMantissaOffset));
++ stfd(dst, MemOperand(sp, -kDoubleSize));
++ stw(src, MemOperand(sp, -kDoubleSize + Register::kMantissaOffset));
+ nop(GROUP_ENDING_NOP); // LHS/RAW optimization
+- lfd(dst, MemOperand(sp));
+- addi(sp, sp, Operand(kDoubleSize));
++ lfd(dst, MemOperand(sp, -kDoubleSize));
+ }
+
+ void TurboAssembler::InsertDoubleHigh(DoubleRegister dst, Register src,
+@@ -2606,12 +2679,10 @@
+ }
+ #endif
+
+- subi(sp, sp, Operand(kDoubleSize));
+- stfd(dst, MemOperand(sp));
+- stw(src, MemOperand(sp, Register::kExponentOffset));
++ stfd(dst, MemOperand(sp, -kDoubleSize));
++ stw(src, MemOperand(sp, -kDoubleSize + Register::kExponentOffset));
+ nop(GROUP_ENDING_NOP); // LHS/RAW optimization
+- lfd(dst, MemOperand(sp));
+- addi(sp, sp, Operand(kDoubleSize));
++ lfd(dst, MemOperand(sp, -kDoubleSize));
+ }
+
+ void TurboAssembler::MovDoubleLowToInt(Register dst, DoubleRegister src) {
+@@ -2622,11 +2693,9 @@
+ }
+ #endif
+
+- subi(sp, sp, Operand(kDoubleSize));
+- stfd(src, MemOperand(sp));
++ stfd(src, MemOperand(sp, -kDoubleSize));
+ nop(GROUP_ENDING_NOP); // LHS/RAW optimization
+- lwz(dst, MemOperand(sp, Register::kMantissaOffset));
+- addi(sp, sp, Operand(kDoubleSize));
++ lwz(dst, MemOperand(sp, -kDoubleSize + Register::kMantissaOffset));
+ }
+
+ void TurboAssembler::MovDoubleHighToInt(Register dst, DoubleRegister src) {
+@@ -2638,13 +2707,10 @@
+ }
+ #endif
+
+- subi(sp, sp, Operand(kDoubleSize));
+- stfd(src, MemOperand(sp));
++ stfd(src, MemOperand(sp, -kDoubleSize));
+ nop(GROUP_ENDING_NOP); // LHS/RAW optimization
+- lwz(dst, MemOperand(sp, Register::kExponentOffset));
+- addi(sp, sp, Operand(kDoubleSize));
++ lwz(dst, MemOperand(sp, -kDoubleSize + Register::kExponentOffset));
+ }
+-
+ void TurboAssembler::MovDoubleToInt64(
+ #if !V8_TARGET_ARCH_PPC64
+ Register dst_hi,
+@@ -2657,16 +2723,14 @@
+ }
+ #endif
+
+- subi(sp, sp, Operand(kDoubleSize));
+- stfd(src, MemOperand(sp));
++ stfd(src, MemOperand(sp, -kDoubleSize));
+ nop(GROUP_ENDING_NOP); // LHS/RAW optimization
+ #if V8_TARGET_ARCH_PPC64
+- ld(dst, MemOperand(sp, 0));
++ ld(dst, MemOperand(sp, -kDoubleSize));
+ #else
+- lwz(dst_hi, MemOperand(sp, Register::kExponentOffset));
+- lwz(dst, MemOperand(sp, Register::kMantissaOffset));
++ lwz(dst_hi, MemOperand(sp, -kDoubleSize + Register::kExponentOffset));
++ lwz(dst, MemOperand(sp, -kDoubleSize + Register::kMantissaOffset));
+ #endif
+- addi(sp, sp, Operand(kDoubleSize));
+ }
+
+ void TurboAssembler::MovIntToFloat(DoubleRegister dst, Register src,
+@@ -3291,10 +3355,8 @@
+ }
+
+ #define MEM_LE_OP_LIST(V) \
+- V(LoadU64, ldbrx) \
+ V(LoadU32, lwbrx) \
+ V(LoadU16, lhbrx) \
+- V(StoreU64, stdbrx) \
+ V(StoreU32, stwbrx) \
+ V(StoreU16, sthbrx)
+
+@@ -3316,6 +3378,37 @@
+ #undef MEM_LE_OP_FUNCTION
+ #undef MEM_LE_OP_LIST
+
++void TurboAssembler::LoadU64LE(Register dst, const MemOperand& mem,
++ Register scratch) {
++#ifdef V8_TARGET_BIG_ENDIAN
++ if (CpuFeatures::IsSupported(PPC_7_PLUS_NXP)) {
++ GenerateMemoryLEOperation(dst, mem, ldbrx);
++ } else {
++ lwbrx(dst, mem);
++ lwbrx(scratch, MemOperand(mem.ra(), mem.rb(), mem.offset() + 4));
++ rldicr(scratch, scratch, 32, 31);
++ orx(dst, dst, scratch);
++ }
++#else
++ LoadU64(dst, mem, scratch);
++#endif
++}
++
++void TurboAssembler::StoreU64LE(Register src, const MemOperand& mem,
++ Register scratch) {
++#ifdef V8_TARGET_BIG_ENDIAN
++ if (CpuFeatures::IsSupported(PPC_7_PLUS_NXP)) {
++ GenerateMemoryLEOperation(src, mem, stdbrx);
++ } else {
++ stwbrx(src, mem);
++ rldicl(scratch, src, 32, 32);
++ stwbrx(scratch, MemOperand(mem.ra(), mem.rb(), mem.offset() + 4));
++ }
++#else
++ StoreU64(src, mem, scratch);
++#endif
++}
++
+ void TurboAssembler::LoadS32LE(Register dst, const MemOperand& mem,
+ Register scratch) {
+ #ifdef V8_TARGET_BIG_ENDIAN
+--- a/deps/v8/src/codegen/cpu-features.h 2022-02-19 21:19:15.982288690 -0800
++++ b/deps/v8/src/codegen/cpu-features.h 2022-02-19 21:22:43.071487369 -0800
+@@ -52,11 +52,15 @@
+ MIPS_SIMD, // MSA instructions
+
+ #elif V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64
++ PPC_5_PLUS,
+ PPC_6_PLUS,
+ PPC_7_PLUS,
+ PPC_8_PLUS,
+ PPC_9_PLUS,
+ PPC_10_PLUS,
++ ICACHE_SNOOP, // ISA v2.02 (POWER5)
++ ISELECT, // ISA v2.03 (POWER5+ and some NXP cores)
++ PPC_7_PLUS_NXP, // ISA v2.06 (POWER7 and NXP e5500/e6500)
+
+ #elif V8_TARGET_ARCH_S390X
+ FPU,
+--- a/deps/v8/src/compiler/backend/ppc/instruction-selector-ppc.cc 2022-02-20 23:35:21.212337639 -0800
++++ b/deps/v8/src/compiler/backend/ppc/instruction-selector-ppc.cc 2022-02-20 23:36:20.925858840 -0800
+@@ -2702,16 +2702,26 @@
+ // static
+ MachineOperatorBuilder::Flags
+ InstructionSelector::SupportedMachineOperatorFlags() {
+- return MachineOperatorBuilder::kFloat32RoundDown |
+- MachineOperatorBuilder::kFloat64RoundDown |
+- MachineOperatorBuilder::kFloat32RoundUp |
+- MachineOperatorBuilder::kFloat64RoundUp |
+- MachineOperatorBuilder::kFloat32RoundTruncate |
+- MachineOperatorBuilder::kFloat64RoundTruncate |
+- MachineOperatorBuilder::kFloat64RoundTiesAway |
+- MachineOperatorBuilder::kWord32Popcnt |
+- MachineOperatorBuilder::kWord64Popcnt;
++ MachineOperatorBuilder::Flags flags = MachineOperatorBuilder::Flag::kNoFlags;
++ // FP rounding to integer instructions require Power ISA v2.02 or later.
++ if (CpuFeatures::IsSupported(PPC_5_PLUS)) {
++ flags |= MachineOperatorBuilder::kFloat32RoundDown |
++ MachineOperatorBuilder::kFloat64RoundDown |
++ MachineOperatorBuilder::kFloat32RoundUp |
++ MachineOperatorBuilder::kFloat64RoundUp |
++ MachineOperatorBuilder::kFloat32RoundTruncate |
++ MachineOperatorBuilder::kFloat64RoundTruncate |
++ MachineOperatorBuilder::kFloat64RoundTiesAway;
++ }
++ // Population count requires Power ISA v2.06, or NXP e5500/e6500.
++ if (CpuFeatures::IsSupported(PPC_7_PLUS_NXP)) {
++ flags |= MachineOperatorBuilder::kWord32Popcnt;
++#if V8_TARGET_ARCH_PPC64
++ flags |= MachineOperatorBuilder::kWord64Popcnt;
++#endif
++ }
+ // We omit kWord32ShiftIsSafe as s[rl]w use 0x3F as a mask rather than 0x1F.
++ return flags;
+ }
+
+ // static
+--- a/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc 2023-03-05 09:42:53.000000000 +0300
++++ b/deps/v8/src/compiler/backend/ppc/code-generator-ppc.cc 2025-01-02 22:32:18.475188958 +0300
+@@ -1859,7 +1859,7 @@
+ cr, static_cast<CRBit>(VXCVI % CRWIDTH));
+ __ mcrfs(cr, VXCVI); // extract FPSCR field containing VXCVI into cr7
+ // Handle conversion failures (such as overflow).
+- if (CpuFeatures::IsSupported(PPC_7_PLUS)) {
++ if (CpuFeatures::IsSupported(ISELECT)) {
+ if (check_conversion) {
+ __ li(i.OutputRegister(1), Operand(1));
+ __ isel(i.OutputRegister(1), r0, i.OutputRegister(1), crbit);
+@@ -1896,7 +1896,7 @@
+ int crbit = v8::internal::Assembler::encode_crbit(
+ cr, static_cast<CRBit>(VXCVI % CRWIDTH));
+ __ mcrfs(cr, VXCVI); // extract FPSCR field containing VXCVI into cr7
+- if (CpuFeatures::IsSupported(PPC_7_PLUS)) {
++ if (CpuFeatures::IsSupported(ISELECT)) {
+ __ li(i.OutputRegister(1), Operand(1));
+ __ isel(i.OutputRegister(1), r0, i.OutputRegister(1), crbit);
+ } else {
+@@ -2173,11 +2173,66 @@
+ break;
+ }
+ case kPPC_LoadByteRev64: {
+- ASSEMBLE_LOAD_INTEGER_RR(ldbrx);
++ // inlined version of ASSEMBLE_LOAD_INTEGER_RR()
++ Register result = i.OutputRegister();
++ AddressingMode mode = kMode_None;
++ MemOperand operand = i.MemoryOperand(&mode);
++ DCHECK_EQ(mode, kMode_MRR);
++ bool is_atomic = i.InputInt32(2);
++ if (CpuFeatures::IsSupported(PPC_7_PLUS_NXP)) {
++ __ ldbrx(result, operand);
++ } else {
++#ifdef V8_TARGET_BIG_ENDIAN
++ // low and high words from reversed perspective
++ MemOperand op_low = operand;
++ MemOperand op_high = MemOperand(operand.ra(), operand.rb(),
++ operand.offset() + 4);
++#else
++ // low and high words from reversed perspective
++ MemOperand op_high = operand;
++ MemOperand op_low = MemOperand(operand.ra(), operand.rb(),
++ operand.offset() + 4);
++#endif
++ Register temp1 = r0;
++ __ lwbrx(result, op_low);
++ __ lwbrx(temp1, op_high);
++ __ rldicr(temp1, temp1, 32, 31);
++ __ orx(result, result, temp1);
++ }
++ if (is_atomic) __ lwsync();
++ DCHECK_EQ(LeaveRC, i.OutputRCBit());
+ break;
+ }
+ case kPPC_StoreByteRev64: {
+- ASSEMBLE_STORE_INTEGER_RR(stdbrx);
++ // inlined version of ASSEMBLE_STORE_INTEGER_RR()
++ size_t index = 0;
++ AddressingMode mode = kMode_None;
++ MemOperand operand = i.MemoryOperand(&mode, &index);
++ DCHECK_EQ(mode, kMode_MRR);
++ Register value = i.InputRegister(index);
++ bool is_atomic = i.InputInt32(3);
++ if (is_atomic) __ lwsync();
++ if (CpuFeatures::IsSupported(PPC_7_PLUS_NXP)) {
++ __ stdbrx(value, operand);
++ } else {
++#ifdef V8_TARGET_BIG_ENDIAN
++ // low and high words from reversed perspective
++ MemOperand op_low = operand;
++ MemOperand op_high = MemOperand(operand.ra(), operand.rb(),
++ operand.offset() + 4);
++#else
++ // low and high words from reversed perspective
++ MemOperand op_high = operand;
++ MemOperand op_low = MemOperand(operand.ra(), operand.rb(),
++ operand.offset() + 4);
++#endif
++ Register temp1 = r0;
++ __ stwbrx(value, op_low);
++ __ rldicl(temp1, value, 32, 32);
++ __ stwbrx(temp1, op_high);
++ }
++ if (is_atomic) __ sync();
++ DCHECK_EQ(LeaveRC, i.OutputRCBit());
+ break;
+ }
+ case kPPC_F64x2Splat: {
+@@ -3936,7 +3991,7 @@
+ // Unnecessary for eq/lt & ne/ge since only FU bit will be set.
+ }
+
+- if (CpuFeatures::IsSupported(PPC_7_PLUS)) {
++ if (CpuFeatures::IsSupported(ISELECT)) {
+ switch (cond) {
+ case eq:
+ case lt:
+@@ -3954,6 +4009,7 @@
+ break;
+ default:
+ UNREACHABLE();
++ break;
+ }
+ } else {
+ if (reg_value != 0) __ li(reg, Operand::Zero());
+--- a/deps/v8/src/codegen/ppc/cpu-ppc.cc 2022-02-08 04:37:48.000000000 -0800
++++ b/deps/v8/src/codegen/ppc/cpu-ppc.cc 2022-02-20 17:02:17.900000785 -0800
+@@ -8,14 +8,12 @@
+
+ #include "src/codegen/cpu-features.h"
+
+-#define INSTR_AND_DATA_CACHE_COHERENCY PPC_6_PLUS
+-
+ namespace v8 {
+ namespace internal {
+
+ void CpuFeatures::FlushICache(void* buffer, size_t size) {
+ #if !defined(USE_SIMULATOR)
+- if (CpuFeatures::IsSupported(INSTR_AND_DATA_CACHE_COHERENCY)) {
++ if (CpuFeatures::IsSupported(ICACHE_SNOOP)) {
+ __asm__ __volatile__(
+ "sync \n"
+ "icbi 0, %0 \n"
+@@ -26,25 +24,33 @@
+ return;
+ }
+
+- const int kCacheLineSize = CpuFeatures::icache_line_size();
+- intptr_t mask = kCacheLineSize - 1;
++ const int kInstrCacheLineSize = CpuFeatures::icache_line_size();
++ const int kDataCacheLineSize = CpuFeatures::dcache_line_size();
++ intptr_t ic_mask = kInstrCacheLineSize - 1;
++ intptr_t dc_mask = kDataCacheLineSize - 1;
+ byte* start =
+- reinterpret_cast<byte*>(reinterpret_cast<intptr_t>(buffer) & ~mask);
++ reinterpret_cast<byte*>(reinterpret_cast<intptr_t>(buffer) & ~dc_mask);
+ byte* end = static_cast<byte*>(buffer) + size;
+- for (byte* pointer = start; pointer < end; pointer += kCacheLineSize) {
+- __asm__(
++ for (byte* pointer = start; pointer < end; pointer += kDataCacheLineSize) {
++ __asm__ __volatile__(
+ "dcbf 0, %0 \n"
+- "sync \n"
+- "icbi 0, %0 \n"
+- "isync \n"
+ : /* no output */
+ : "r"(pointer));
+ }
++ __asm__ __volatile__("sync");
+
++ start =
++ reinterpret_cast<byte*>(reinterpret_cast<intptr_t>(buffer) & ~ic_mask);
++ for (byte* pointer = start; pointer < end; pointer += kInstrCacheLineSize) {
++ __asm__ __volatile__(
++ "icbi 0, %0 \n"
++ : /* no output */
++ : "r"(pointer));
++ }
++ __asm__ __volatile__("isync");
+ #endif // !USE_SIMULATOR
+ }
+ } // namespace internal
+ } // namespace v8
+
+-#undef INSTR_AND_DATA_CACHE_COHERENCY
+ #endif // V8_TARGET_ARCH_PPC || V8_TARGET_ARCH_PPC64
+--- ./deps/v8/src/codegen/ppc/assembler-ppc.cc.orig 2022-02-08 04:37:48.000000000 -0800
++++ ./deps/v8/src/codegen/ppc/assembler-ppc.cc 2022-02-20 17:20:25.019591225 -0800
+@@ -65,6 +65,7 @@
+ void CpuFeatures::ProbeImpl(bool cross_compile) {
+ supported_ |= CpuFeaturesImpliedByCompiler();
+ icache_line_size_ = 128;
++ dcache_line_size_ = 128;
+
+ // Only use statically determined features for cross compile (snapshot).
+ if (cross_compile) return;
+@@ -73,6 +74,8 @@
+ #ifdef USE_SIMULATOR
+ // Simulator
+ supported_ |= (1u << PPC_10_PLUS);
++ supported_ |= (1u << ICACHE_SNOOP);
++ supported_ |= (1u << ISELECT);
+ #else
+ base::CPU cpu;
+ if (cpu.part() == base::CPU::kPPCPower10) {
+@@ -85,17 +88,37 @@
+ supported_ |= (1u << PPC_7_PLUS);
+ } else if (cpu.part() == base::CPU::kPPCPower6) {
+ supported_ |= (1u << PPC_6_PLUS);
++ } else if (cpu.part() == base::CPU::kPPCPower5 ||
++ cpu.part() == base::CPU::kPPCPA6T) {
++ supported_ |= (1u << PPC_5_PLUS);
++ } else if (cpu.part() == base::CPU::kPPCE6500 ||
++ cpu.part() == base::CPU::kPPCE5500) {
++ supported_ |= (1u << PPC_7_PLUS_NXP); // NXP-supported v2.06 features
++ }
++
++ if (cpu.has_icache_snoop()) {
++ supported_ |= (1u << ICACHE_SNOOP);
++ }
++ if (cpu.has_isel()) {
++ supported_ |= (1u << ISELECT);
+ }
+ #if V8_OS_LINUX
+ if (cpu.icache_line_size() != base::CPU::kUnknownCacheLineSize) {
+ icache_line_size_ = cpu.icache_line_size();
+ }
++ if (cpu.dcache_line_size() != base::CPU::kUnknownCacheLineSize) {
++ dcache_line_size_ = cpu.dcache_line_size();
++ }
+ #endif
+ #endif
+ if (supported_ & (1u << PPC_10_PLUS)) supported_ |= (1u << PPC_9_PLUS);
+ if (supported_ & (1u << PPC_9_PLUS)) supported_ |= (1u << PPC_8_PLUS);
+ if (supported_ & (1u << PPC_8_PLUS)) supported_ |= (1u << PPC_7_PLUS);
+- if (supported_ & (1u << PPC_7_PLUS)) supported_ |= (1u << PPC_6_PLUS);
++ if (supported_ & (1u << PPC_7_PLUS)) {
++ supported_ |= (1u << PPC_7_PLUS_NXP); // NXP-supported v2.06 features
++ supported_ |= (1u << PPC_6_PLUS);
++ }
++ if (supported_ & (1u << PPC_6_PLUS)) supported_ |= (1u << PPC_5_PLUS);
+
+ // Set a static value on whether Simd is supported.
+ // This variable is only used for certain archs to query SupportWasmSimd128()
+@@ -117,11 +140,15 @@
+ }
+
+ void CpuFeatures::PrintFeatures() {
++ printf("PPC_5_PLUS=%d\n", CpuFeatures::IsSupported(PPC_5_PLUS));
+ printf("PPC_6_PLUS=%d\n", CpuFeatures::IsSupported(PPC_6_PLUS));
+ printf("PPC_7_PLUS=%d\n", CpuFeatures::IsSupported(PPC_7_PLUS));
+ printf("PPC_8_PLUS=%d\n", CpuFeatures::IsSupported(PPC_8_PLUS));
+ printf("PPC_9_PLUS=%d\n", CpuFeatures::IsSupported(PPC_9_PLUS));
+ printf("PPC_10_PLUS=%d\n", CpuFeatures::IsSupported(PPC_10_PLUS));
++ printf("ICACHE_SNOOP=%d\n", CpuFeatures::IsSupported(ICACHE_SNOOP));
++ printf("ISELECT=%d\n", CpuFeatures::IsSupported(ISELECT));
++ printf("PPC_7_PLUS_NXP=%d\n", CpuFeatures::IsSupported(PPC_7_PLUS_NXP));
+ }
+
+ Register ToRegister(int num) {
diff --git a/user/node/ppc32.patch b/user/node/ppc32.patch
deleted file mode 100644
index 80b97993c..000000000
--- a/user/node/ppc32.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- node-v10.15.3/deps/v8/src/libsampler/sampler.cc.old 2019-03-05 15:16:28.000000000 +0000
-+++ node-v10.15.3/deps/v8/src/libsampler/sampler.cc 2019-04-06 13:44:07.224653262 +0000
-@@ -502,9 +502,15 @@
- reinterpret_cast<void*>(ucontext->uc_mcontext.regs->gpr[PT_R31]);
- #else
- // Some C libraries, notably Musl, define the regs member as a void pointer
-+ #if !V8_TARGET_ARCH_32_BIT
- state->pc = reinterpret_cast<void*>(ucontext->uc_mcontext.gp_regs[32]);
- state->sp = reinterpret_cast<void*>(ucontext->uc_mcontext.gp_regs[1]);
- state->fp = reinterpret_cast<void*>(ucontext->uc_mcontext.gp_regs[31]);
-+ #else
-+ state->pc = reinterpret_cast<void*>(ucontext->uc_mcontext.gregs[32]);
-+ state->sp = reinterpret_cast<void*>(ucontext->uc_mcontext.gregs[1]);
-+ state->fp = reinterpret_cast<void*>(ucontext->uc_mcontext.gregs[31]);
-+ #endif
- #endif
- #elif V8_HOST_ARCH_S390
- #if V8_TARGET_ARCH_32_BIT
diff --git a/user/node/ppc64.patch b/user/node/ppc64.patch
deleted file mode 100644
index f76618562..000000000
--- a/user/node/ppc64.patch
+++ /dev/null
@@ -1,40 +0,0 @@
---- a/deps/v8/src/ppc/assembler-ppc.h.old 2019-03-05 15:16:29.000000000 +0000
-+++ b/deps/v8/src/ppc/assembler-ppc.h 2019-04-02 07:05:25.977213735 +0000
-@@ -48,7 +48,8 @@
- #include "src/ppc/constants-ppc.h"
-
- #if V8_HOST_ARCH_PPC && \
-- (V8_OS_AIX || (V8_TARGET_ARCH_PPC64 && V8_TARGET_BIG_ENDIAN))
-+ (V8_OS_AIX || (V8_TARGET_ARCH_PPC64 && \
-+ (V8_TARGET_BIG_ENDIAN && (!defined(_CALL_ELF) || _CALL_ELF == 1))))
- #define ABI_USES_FUNCTION_DESCRIPTORS 1
- #else
- #define ABI_USES_FUNCTION_DESCRIPTORS 0
-@@ -60,13 +61,15 @@
- #define ABI_PASSES_HANDLES_IN_REGS 0
- #endif
-
--#if !V8_HOST_ARCH_PPC || !V8_TARGET_ARCH_PPC64 || V8_TARGET_LITTLE_ENDIAN
-+#if !V8_HOST_ARCH_PPC || !V8_TARGET_ARCH_PPC64 || \
-+ (V8_TARGET_LITTLE_ENDIAN || (defined(_CALL_ELF) && _CALL_ELF == 2))
- #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS 1
- #else
- #define ABI_RETURNS_OBJECT_PAIRS_IN_REGS 0
- #endif
-
--#if !V8_HOST_ARCH_PPC || (V8_TARGET_ARCH_PPC64 && V8_TARGET_LITTLE_ENDIAN)
-+#if !V8_HOST_ARCH_PPC || (V8_TARGET_ARCH_PPC64 && \
-+ (V8_TARGET_LITTLE_ENDIAN || (defined(_CALL_ELF) && _CALL_ELF == 2)))
- #define ABI_CALL_VIA_IP 1
- #else
- #define ABI_CALL_VIA_IP 0
-@@ -220,7 +220,8 @@
- // The following constants describe the stack frame linkage area as
- // defined by the ABI. Note that kNumRequiredStackFrameSlots must
- // satisfy alignment requirements (rounding up if required).
--#if V8_TARGET_ARCH_PPC64 && V8_TARGET_LITTLE_ENDIAN
-+#if V8_TARGET_ARCH_PPC64 && (V8_TARGET_LITTLE_ENDIAN || \
-+ defined(_CALL_ELF) && _CALL_ELF == 2)
- // [0] back chain
- // [1] condition register save area
- // [2] link register save area
diff --git a/user/node/python3.patch b/user/node/python3.patch
deleted file mode 100644
index dca32c7e4..000000000
--- a/user/node/python3.patch
+++ /dev/null
@@ -1,163 +0,0 @@
---- node-v10.15.3/tools/configure.d/nodedownload.py (original)
-+++ node-v10.15.3/tools/configure.d/nodedownload.py (refactored)
-@@ -1,7 +1,10 @@
- #!/usr/bin/env python
- # Moved some utilities here from ../../configure
-
-+try:
--import urllib
-+ import urllib
-+except ImportError:
-+ import urllib.request, urllib.parse, urllib.error
- import hashlib
- import sys
- import zipfile
-@@ -18,10 +18,10 @@
- spin = ".:|'"
- return (spin[c % len(spin)])
-
--class ConfigOpener(urllib.FancyURLopener):
-+class ConfigOpener(urllib.request.FancyURLopener):
- """fancy opener used by retrievefile. Set a UA"""
- # append to existing version (UA)
-- version = '%s node.js/configure' % urllib.URLopener.version
-+ version = '%s node.js/configure' % urllib.request.URLopener.version
-
- def reporthook(count, size, total):
- """internal hook used by retrievefile"""
-@@ -36,10 +36,10 @@
- sys.stdout.write(' <%s>\nConnecting...\r' % url)
- sys.stdout.flush()
- ConfigOpener().retrieve(url, targetfile, reporthook=reporthook)
-- print '' # clear the line
-+ print('') # clear the line
- return targetfile
- except:
-- print ' ** Error occurred while downloading\n <%s>' % url
-+ print(' ** Error occurred while downloading\n <%s>' % url)
- raise
-
- def md5sum(targetfile):
-@@ -56,12 +56,12 @@
- """Unpacks packedfile into parent_path. Assumes .zip. Returns parent_path"""
- if zipfile.is_zipfile(packedfile):
- with contextlib.closing(zipfile.ZipFile(packedfile, 'r')) as icuzip:
-- print ' Extracting zipfile: %s' % packedfile
-+ print(' Extracting zipfile: %s' % packedfile)
- icuzip.extractall(parent_path)
- return parent_path
- elif tarfile.is_tarfile(packedfile):
- with contextlib.closing(tarfile.TarFile.open(packedfile, 'r')) as icuzip:
-- print ' Extracting tarfile: %s' % packedfile
-+ print(' Extracting tarfile: %s' % packedfile)
- icuzip.extractall(parent_path)
- return parent_path
- else:
-@@ -112,16 +112,16 @@
- theRet[anOpt] = True
- else:
- # future proof: ignore unknown types
-- print 'Warning: ignoring unknown --download= type "%s"' % anOpt
-+ print('Warning: ignoring unknown --download= type "%s"' % anOpt)
- # all done
- return theRet
-
- def candownload(auto_downloads, package):
-- if not (package in auto_downloads.keys()):
-+ if not (package in list(auto_downloads.keys())):
- raise Exception('Internal error: "%s" is not in the --downloads list. Check nodedownload.py' % package)
- if auto_downloads[package]:
- return True
- else:
-- print """Warning: Not downloading package "%s". You could pass "--download=all"
-- (Windows: "download-all") to try auto-downloading it.""" % package
-+ print("""Warning: Not downloading package "%s". You could pass "--download=all"
-+ (Windows: "download-all") to try auto-downloading it.""" % package)
- return False
---- node-v10.15.3/tools/configure.d/nodedownload.py.old 2019-04-02 00:56:07.533200475 +0000
-+++ node-v10.15.3/tools/configure.d/nodedownload.py 2019-04-02 00:58:09.019947842 +0000
-@@ -6,12 +6,11 @@
- import sys
- import zipfile
- import tarfile
--import fpformat
- import contextlib
-
- def formatSize(amt):
- """Format a size as a string in MB"""
-- return fpformat.fix(amt / 1024000., 1)
-+ return "%{size}.1f" % (amt / 1024000.)
-
- def spin(c):
- """print out an ASCII 'spinner' based on the value of counter 'c'"""
---- node-v10.15.3/configure.py.old 2019-03-05 15:16:24.000000000 +0000
-+++ node-v10.15.3/configure.py 2019-04-02 01:09:04.948394534 +0000
-@@ -649,8 +649,8 @@
- except OSError:
- return (False, False, '', '')
-
-- proc.stdin.write('__clang__ __GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__ '
-- '__clang_major__ __clang_minor__ __clang_patchlevel__')
-+ proc.stdin.write(b'__clang__ __GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__ '
-+ b'__clang_major__ __clang_minor__ __clang_patchlevel__')
-
- values = (proc.communicate()[0].split() + ['0'] * 7)[0:7]
- is_clang = values[0] == '1'
-@@ -727,7 +727,7 @@
- consider adjusting the CC environment variable if you installed
- it in a non-standard prefix.''')
-
-- gas_ret = proc.communicate()[1]
-+ gas_ret = proc.communicate()[1].decode('utf-8')
- match = re.match(r"GNU assembler version ([2-9]\.[0-9]+)", gas_ret)
-
- if match:
-@@ -794,7 +794,7 @@
- consider adjusting the CC environment variable if you installed
- it in a non-standard prefix.''')
-
-- p.stdin.write('\n')
-+ p.stdin.write(b'\n')
- out = p.communicate()[0]
-
- out = str(out).split('\n')
-@@ -1351,7 +1351,7 @@
- o['variables']['icu_small'] = b(True)
- locs = set(options.with_icu_locales.split(','))
- locs.add('root') # must have root
-- o['variables']['icu_locales'] = string.join(locs,',')
-+ o['variables']['icu_locales'] = ','.join(locs)
- # We will check a bit later if we can use the canned deps/icu-small
- elif with_intl == 'full-icu':
- # full ICU
-@@ -1655,7 +1655,7 @@
- if options.prefix:
- config['PREFIX'] = options.prefix
-
--config = '\n'.join(map('='.join, config.iteritems())) + '\n'
-+config = '\n'.join(map('='.join, config.items())) + '\n'
-
- # On Windows there's no reason to search for a different python binary.
- bin_override = None if sys.platform == 'win32' else make_bin_override()
---- node-v10.15.3/configure.py.old 2019-04-02 01:12:29.786049396 +0000
-+++ node-v10.15.3/configure.py 2019-04-02 01:21:08.499637208 +0000
-@@ -634,7 +634,7 @@
- proc = subprocess.Popen(
- shlex.split(pkg_config) + ['--silence-errors', flag, pkg],
- stdout=subprocess.PIPE)
-- val = proc.communicate()[0].strip()
-+ val = proc.communicate()[0].strip().decode('utf-8')
- except OSError as e:
- if e.errno != errno.ENOENT: raise e # Unexpected error.
- return (None, None, None, None) # No pkg-config/pkgconf installed.
---- node-v10.15.3/configure.py.old 2019-04-02 01:27:36.437454388 +0000
-+++ node-v10.15.3/configure.py 2019-04-02 01:28:06.954136125 +0000
-@@ -795,7 +795,7 @@
- it in a non-standard prefix.''')
-
- p.stdin.write(b'\n')
-- out = p.communicate()[0]
-+ out = p.communicate()[0].decode('utf-8')
-
- out = str(out).split('\n')
-
diff --git a/user/node/stack-silliness.patch b/user/node/stack-silliness.patch
deleted file mode 100644
index e8d775b73..000000000
--- a/user/node/stack-silliness.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- node-v10.15.3/src/inspector_agent.cc.old 2019-03-05 15:16:32.000000000 +0000
-+++ node-v10.15.3/src/inspector_agent.cc 2019-04-06 02:03:11.082016553 +0000
-@@ -104,9 +104,9 @@
- // Don't shrink the thread's stack on FreeBSD. Said platform decided to
- // follow the pthreads specification to the letter rather than in spirit:
- // https://lists.freebsd.org/pipermail/freebsd-current/2014-March/048885.html
--#ifndef __FreeBSD__
-+#ifdef __GLIBC__
- CHECK_EQ(0, pthread_attr_setstacksize(&attr, PTHREAD_STACK_MIN));
--#endif // __FreeBSD__
-+#endif // __GLIBC__
- CHECK_EQ(0, pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED));
- sigset_t sigmask;
- // Mask all signals.
diff --git a/user/node/v8-python3.patch b/user/node/v8-python3.patch
deleted file mode 100644
index 64151be4f..000000000
--- a/user/node/v8-python3.patch
+++ /dev/null
@@ -1,169 +0,0 @@
---- node-v10.15.3/deps/v8/tools/node/fetch_deps.py.old 2019-03-05 15:16:31.000000000 +0000
-+++ node-v10.15.3/deps/v8/tools/node/fetch_deps.py 2019-04-02 01:01:00.421250178 +0000
-@@ -9,6 +9,9 @@
- Usage: fetch_deps.py <v8-path>
- """
-
-+# for py2/py3 compatibility
-+from __future__ import print_function
-+
- import os
- import subprocess
- import sys
-@@ -51,9 +55,9 @@
- expected_git_dir = os.path.join(v8_path, ".git")
- actual_git_dir = git("rev-parse --absolute-git-dir")
- if expected_git_dir == actual_git_dir:
-- print "V8 is tracked stand-alone by git."
-+ print("V8 is tracked stand-alone by git.")
- return False
-- print "Initializing temporary git repository in v8."
-+ print("Initializing temporary git repository in v8.")
- git("init")
- git("config user.name \"Ada Lovelace\"")
- git("config user.email ada@lovela.ce")
-@@ -70,7 +74,7 @@
-
- temporary_git = EnsureGit(v8_path)
- try:
-- print "Fetching dependencies."
-+ print("Fetching dependencies.")
- env = os.environ.copy()
- # gclient needs to have depot_tools in the PATH.
- env["PATH"] = depot_tools + os.pathsep + env["PATH"]
---- node-v10.15.3/deps/v8/tools/node/node_common.py.old 2019-03-05 15:16:31.000000000 +0000
-+++ node-v10.15.3/deps/v8/tools/node/node_common.py 2019-04-02 01:00:45.522875398 +0000
-@@ -3,11 +3,15 @@
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
-
-+# for py2/py3 compatibility
-+from __future__ import print_function
-+
- import os
- import pipes
- import shutil
- import stat
- import subprocess
-+import sys
-
- DEPOT_TOOLS_URL = \
- "https://chromium.googlesource.com/chromium/tools/depot_tools.git"
-@@ -22,23 +26,27 @@
- except:
- pass
- if fetch_if_not_exist:
-- print "Checking out depot_tools."
-+ print("Checking out depot_tools.")
- # shell=True needed on Windows to resolve git.bat.
- subprocess.check_call("git clone {} {}".format(
- pipes.quote(DEPOT_TOOLS_URL),
- pipes.quote(depot_tools)), shell=True)
-+ # Using check_output to hide warning messages.
-+ subprocess.check_output(
-+ [sys.executable, gclient_path, "metrics", "--opt-out"],
-+ cwd=depot_tools)
- return depot_tools
- return None
- depot_tools = _Get(v8_path)
- assert depot_tools is not None
-- print "Using depot tools in %s" % depot_tools
-+ print("Using depot tools in %s" % depot_tools)
- return depot_tools
-
- def UninitGit(v8_path):
-- print "Uninitializing temporary git repository"
-+ print("Uninitializing temporary git repository")
- target = os.path.join(v8_path, ".git")
- if os.path.isdir(target):
-- print ">> Cleaning up %s" % target
-+ print(">> Cleaning up %s" % target)
- def OnRmError(func, path, exec_info):
- # This might happen on Windows
- os.chmod(path, stat.S_IWRITE)
---- node-v10.15.3/deps/v8/tools/node/update_node.py.old 2019-03-05 15:16:31.000000000 +0000
-+++ node-v10.15.3/deps/v8/tools/node/update_node.py 2019-04-02 01:00:27.184875836 +0000
-@@ -23,6 +23,9 @@
- --with-patch Also include currently staged files in the V8 checkout.
- """
-
-+# for py2/py3 compatibility
-+from __future__ import print_function
-+
- import argparse
- import os
- import shutil
-@@ -61,9 +64,9 @@
- # Node.js owns deps/v8/gypfiles in their downstream repository.
- FILES_TO_KEEP = [ "gypfiles" ]
-
- def RunGclient(path):
- assert os.path.isdir(path)
-- print ">> Running gclient sync"
-+ print(">> Running gclient sync")
- subprocess.check_call(["gclient", "sync", "--nohooks"], cwd=path)
-
- def CommitPatch(options):
-@@ -74,7 +77,7 @@
- the fake git clone fetch it into node.js. We can leave the commit, as
- bot_update will ensure a clean state on each run.
- """
-- print ">> Committing patch"
-+ print(">> Committing patch")
- subprocess.check_call(
- ["git", "-c", "user.name=fake", "-c", "user.email=fake@chromium.org",
- "commit", "--allow-empty", "-m", "placeholder-commit"],
-@@ -84,8 +87,8 @@
- def UpdateTarget(repository, options, files_to_keep):
- source = os.path.join(options.v8_path, *repository)
- target = os.path.join(options.node_path, TARGET_SUBDIR, *repository)
-- print ">> Updating target directory %s" % target
-- print ">> from active branch at %s" % source
-+ print(">> Updating target directory %s" % target)
-+ print(">> from active branch at %s" % source)
- if not os.path.exists(target):
- os.makedirs(target)
- # Remove possible remnants of previous incomplete runs.
-@@ -98,10 +101,11 @@
- git_args.append(["add"] + files_to_keep) # add and commit
- git_args.append(["commit", "-m", "keep files"]) # files we want to keep
-
-+ git_args.append(["clean", "-fxd"]) # nuke everything else
- git_args.append(["remote", "add", "source", source]) # point to source repo
- git_args.append(["fetch", "source", "HEAD"]) # sync to current branch
- git_args.append(["checkout", "-f", "FETCH_HEAD"]) # switch to that branch
-- git_args.append(["clean", "-fd"]) # delete removed files
-+ git_args.append(["clean", "-fxd"]) # delete removed files
-
- if files_to_keep:
- git_args.append(["cherry-pick", "master"]) # restore kept files
-@@ -117,17 +120,17 @@
- def UpdateGitIgnore(options):
- file_name = os.path.join(options.node_path, TARGET_SUBDIR, ".gitignore")
- assert os.path.isfile(file_name)
-- print ">> Updating .gitignore with lines"
-+ print(">> Updating .gitignore with lines")
- with open(file_name) as gitignore:
- content = gitignore.readlines()
- content = [x.strip() for x in content]
- for x in DELETE_FROM_GITIGNORE:
- if x in content:
-- print "- %s" % x
-+ print("- %s" % x)
- content.remove(x)
- for x in ADD_TO_GITIGNORE:
- if x not in content:
-- print "+ %s" % x
-+ print("+ %s" % x)
- content.append(x)
- content.sort(key=lambda x: x[1:] if x.startswith("!") else x)
- with open(file_name, "w") as gitignore:
-@@ -135,7 +138,7 @@
- gitignore.write("%s\n" % x)
-
- def CreateCommit(options):
-- print ">> Creating commit."
-+ print(">> Creating commit.")
- # Find git hash from source.
- githash = subprocess.check_output(["git", "rev-parse", "--short", "HEAD"],
- cwd=options.v8_path).strip()
diff --git a/user/node/zlib-version-regex.patch b/user/node/zlib-version-regex.patch
new file mode 100644
index 000000000..c06c4a938
--- /dev/null
+++ b/user/node/zlib-version-regex.patch
@@ -0,0 +1,31 @@
+This patch differs from upstream in the following:
+
+ * The regex is modified to support X.Y{,.Z} (upstream)
+ as opposed to custom subrevision X.Y.Z{,.n} (nodejs)
+
+From 43c332fd40293ecc621e74cae90c2565cecbcbd9 Mon Sep 17 00:00:00 2001
+From: Luigi Pinca <luigipinca@gmail.com>
+Date: Sun, 28 May 2023 07:57:21 +0200
+Subject: [PATCH] test: fix zlib version regex
+
+Add support for subrevision in the regular expression for the zlib
+version.
+
+Refs: https://github.com/madler/zlib/blob/48c3741002ac/zlib.h#L40
+---
+ test/parallel/test-process-versions.js | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test/parallel/test-process-versions.js b/test/parallel/test-process-versions.js
+index f706bd060b45f..31886093df8cc 100644
+--- a/test/parallel/test-process-versions.js
++++ b/test/parallel/test-process-versions.js
+@@ -61,7 +61,7 @@ assert.match(process.versions.brotli, commonTemplate);
+ assert.match(process.versions.llhttp, commonTemplate);
+ assert.match(process.versions.node, commonTemplate);
+ assert.match(process.versions.uv, commonTemplate);
+-assert.match(process.versions.zlib, commonTemplate);
++assert.match(process.versions.zlib, /^\d+(\.\d+){1,2}(?:-.*)?$/);
+
+ if (hasUndici) {
+ assert.match(process.versions.undici, commonTemplate);
diff --git a/user/notmuch/0.28.2-disable-rpath.patch b/user/notmuch/0.28.2-disable-rpath.patch
deleted file mode 100644
index cc5102614..000000000
--- a/user/notmuch/0.28.2-disable-rpath.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From ed15cac16414418c11896071d6ca9238d033f23d Mon Sep 17 00:00:00 2001
-From: Luis Ressel <aranea@aixah.de>
-Date: Mon, 25 Feb 2019 08:18:24 +0100
-Subject: [PATCH] Add a configure flag to disable rpaths
-
----
- configure | 11 ++++++++++-
- 1 file changed, 10 insertions(+), 1 deletion(-)
-
-diff --git a/configure b/configure
-index a6f5dfa2..5e7e5aa9 100755
---- a/configure
-+++ b/configure
-@@ -82,6 +82,7 @@ WITH_API_DOCS=1
- WITH_EMACS=1
- WITH_DESKTOP=1
- WITH_BASH=1
-+WITH_RPATH=1
- WITH_RUBY=1
- WITH_ZSH=1
- WITH_RETRY_LOCK=1
-@@ -241,6 +242,14 @@ for option; do
- fi
- elif [ "${option}" = '--without-bash-completion' ] ; then
- WITH_BASH=0
-+ elif [ "${option%%=*}" = '--with-rpath' ]; then
-+ if [ "${option#*=}" = 'no' ]; then
-+ WITH_RPATH=0
-+ else
-+ WITH_RPATH=1
-+ fi
-+ elif [ "${option}" = '--without-rpath' ] ; then
-+ WITH_RPATH=0
- elif [ "${option%%=*}" = '--with-ruby' ]; then
- if [ "${option#*=}" = 'no' ]; then
- WITH_RUBY=0
-@@ -928,7 +937,7 @@ fi
- rm -f compat/check_asctime
-
- printf "Checking for rpath support... "
--if ${CC} -Wl,--enable-new-dtags -Wl,-rpath,/tmp/ -o minimal minimal.c >/dev/null 2>&1
-+if [ $WITH_RPATH = "1" ] && ${CC} -Wl,--enable-new-dtags -Wl,-rpath,/tmp/ -o minimal minimal.c >/dev/null 2>&1
- then
- printf "Yes.\n"
- rpath_ldflags="-Wl,--enable-new-dtags -Wl,-rpath,\$(libdir)"
---
-2.19.2
-
diff --git a/user/notmuch/APKBUILD b/user/notmuch/APKBUILD
deleted file mode 100644
index 4e8153630..000000000
--- a/user/notmuch/APKBUILD
+++ /dev/null
@@ -1,96 +0,0 @@
-# Contributor: Luis Ressel <aranea@aixah.de>
-# Maintainer: Luis Ressel <aranea@aixah.de>
-pkgname=notmuch
-pkgver=0.28.3
-pkgrel=0
-pkgdesc="Thread-based email index, search and tagging"
-url="https://notmuchmail.org/"
-arch="all"
-license="GPL-3.0+"
-depends=""
-depends_dev="gmime-dev talloc-dev xapian-core-dev zlib-dev"
-makedepends="$depends_dev doxygen emacs python3-dev ruby-dev"
-checkdepends="bash dtach gnupg"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-emacs py3-$pkgname:_py ruby-$pkgname:_rb $pkgname-bash-completion:bashcomp:noarch $pkgname-zsh-completion:zshcomp:noarch"
-source="https://notmuchmail.org/releases/notmuch-$pkgver.tar.gz
- 0.28.2-disable-rpath.patch"
-
-build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var \
- --without-bash-completion \
- --without-desktop \
- --without-rpath
- make
-
- cd bindings/python
- python3 setup.py build
-}
-
-check() {
- cd "$builddir"
- # config, regexp-query: musl issues, TODO: Fixed in master
- # count, insert: gdb-based tests which fail at some optimization levels, or w/o -g.
- NOTMUCH_SKIP_TESTS="config regexp-query count insert" make check
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
-}
-
-doc() {
- default_doc
- # TODO: We'd need sphinx to generate the man pages, but the raw *.rst's are still better than no docs at all.
- mkdir -p "$subpkgdir/usr/share/doc/$pkgname" "$builddir/doc/man"*
- cp -r "$builddir/doc/man"* "$subpkgdir/usr/share/doc/$pkgname/"
-}
-
-emacs() {
- mkdir -p "$subpkgdir/usr/bin" "$subpkgdir/usr/share"
- mv "$pkgdir/usr/bin/notmuch-emacs-mua" "$subpkgdir/usr/bin"
- mv "$pkgdir/usr/share/emacs" "$subpkgdir/usr/share"
-}
-
-_py() {
- pkgdesc="$pkgdesc (Python bindings)"
- depends="$pkgname=$pkgver-r$pkgrel python3"
-
- cd "$builddir/bindings/python"
- python3 setup.py install --prefix=/usr --root="$subpkgdir"
-}
-
-_rb() {
- pkgdesc="$pkgdesc (Ruby bindings)"
- depends="$pkgname=$pkgver-r$pkgrel ruby"
-
- cd "$builddir/bindings/ruby"
- make DESTDIR="$subpkgdir" install
-}
-
-
-bashcomp() {
- pkgdesc="$pkgdesc (Bash completion)"
- depends=""
- install_if="$pkgname=$pkgver-r$pkgrel bash-completion"
-
- install -Dt "$subpkgdir/usr/share/bash-completion" "$builddir/completion/notmuch-completion.bash"
-}
-
-zshcomp() {
- pkgdesc="$pkgdesc (Zsh completion)"
- depends=""
- install_if="$pkgname=$pkgver-r$pkgrel zsh"
-
- mkdir -p "$subpkgdir/usr/share"
- mv "$pkgdir/usr/share/zsh" "$subpkgdir/usr/share"
-}
-
-sha512sums="dd3931b78cc27540e962f1fca5f4ebb1c04b2637a5761cda023f307fd9be4b5ddc2af26010330868c55200fa96b60b2a11b3b22d4c20d2a4a2d3787421ed85cf notmuch-0.28.3.tar.gz
-b2991ee5edf927f04d904d99888dbce17a98e9d4d7d809bc2248f45d214025f4a1632b19e4fbca2b08e99721ec8a7eea82384c5c718206884801c7bfa5a8c540 0.28.2-disable-rpath.patch"
diff --git a/user/npth/APKBUILD b/user/npth/APKBUILD
index 7f73efd37..35cb7878d 100644
--- a/user/npth/APKBUILD
+++ b/user/npth/APKBUILD
@@ -6,11 +6,12 @@ pkgdesc="Portable threading library from GNU"
url="https://www.gnupg.org/software/npth/index.html"
arch="all"
license="LGPL-2.1+"
+depends=""
+makedepends=""
subpackages="$pkgname-dev"
-source="ftp://ftp.gnupg.org/gcrypt/npth/npth-$pkgver.tar.bz2"
+source="https://gnupg.org/ftp/gcrypt/npth/npth-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -23,12 +24,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/nsd/APKBUILD b/user/nsd/APKBUILD
index f99b4514e..1ccd1014d 100644
--- a/user/nsd/APKBUILD
+++ b/user/nsd/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Luis Ressel <aranea@aixah.de>
-# Maintainer: Luis Ressel <aranea@aixah.de>
+# Contributor: Mira Ressel <aranea@aixah.de>
+# Maintainer: Alyx Wolcott <alyx@leuhta.com>
pkgname=nsd
-pkgver=4.1.27
+pkgver=4.6.1
pkgrel=0
pkgdesc="An authoritative only name server"
url="https://www.nlnetlabs.nl/projects/nsd/about/"
@@ -18,9 +18,11 @@ source="https://nlnetlabs.nl/downloads/$pkgname/$pkgname-$pkgver.tar.gz
nsd.confd
nsd.initd"
-build() {
- cd "$builddir"
+# secfixes:
+# 4.2.2-r1:
+# - CVE-2019-13207
+build() {
# dnstap has yet unpackaged dependencies
./configure \
--build=$CBUILD \
@@ -40,7 +42,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -50,6 +51,6 @@ openrc() {
install -Dm644 "$srcdir/nsd.confd" "$subpkgdir/etc/conf.d/nsd"
}
-sha512sums="9c75041f5a6213cdba7238c2e51fc73031f6f073e06587659f93992fed49418ee789642b25b5522d48642507050ac15021f385927eed81ce5ea649f974e66402 nsd-4.1.27.tar.gz
+sha512sums="cab557a20cf8564cbf6e38405ca28b00baa6e14105527c3b16f49f57fed5e39cdb2bcd62999bad4aff2c69e0967bdba66a1eaa7b73a0d4d99d97535cc5860bfe nsd-4.6.1.tar.gz
f0ef1d3427e92650239d9d91402810c045fc9223e3f42ce86986422bf2039a0bcc02dffdfe1153d54de5c76c8f2bdc3e34fe341c65b41f2d333b02c00b5b0eae nsd.confd
139e52dec98792173f06d298574db0d0e6966a06af8a0a3069487beb01fd570c09d22322569b54bacdc43232dbfb99a8c497d4417d2bbfee88bcdd9d1b4d22f7 nsd.initd"
diff --git a/user/ntfs-3g/APKBUILD b/user/ntfs-3g/APKBUILD
index d403c4f42..e5afed691 100644
--- a/user/ntfs-3g/APKBUILD
+++ b/user/ntfs-3g/APKBUILD
@@ -5,19 +5,25 @@
pkgname=ntfs-3g
_pkgname=ntfs-3g_ntfsprogs
pkgver=2017.3.23
-pkgrel=1
+pkgrel=2
pkgdesc="Stable, full-featured, read-write NTFS"
url="https://www.tuxera.com/community/open-source-ntfs-3g/"
arch="all"
options="!check" # No test suite.
license="LGPL-2.1-only AND BSD-2-Clause AND GPL-2.0+ AND GPL-3.0+"
+depends=""
makedepends="attr-dev util-linux-dev linux-headers fuse-dev"
subpackages="$pkgname-doc $pkgname-dev $pkgname-libs"
-source="https://tuxera.com/opensource/$_pkgname-$pkgver.tgz"
+source="https://tuxera.com/opensource/$_pkgname-$pkgver.tgz
+ CVE-2019-9755.patch
+ "
builddir="$srcdir/$_pkgname-$pkgver"
+# secfixes:
+# 2017.3.23-r2:
+# - CVE-2019-9755
+
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,10 +37,10 @@ build() {
}
package() {
- cd "$builddir"
mkdir -p "$pkgdir"/lib
make -j1 DESTDIR="$pkgdir" LDCONFIG=: install
ln -s /bin/ntfs-3g "$pkgdir"/sbin/mount.ntfs
}
-sha512sums="3a607f0d7be35204c992d8931de0404fbc52032c13b4240d2c5e6f285c318a28eb2a385d7cf5ac4cd445876aee5baa5753bb636ada0d870d84a9d3fdbce794ef ntfs-3g_ntfsprogs-2017.3.23.tgz"
+sha512sums="3a607f0d7be35204c992d8931de0404fbc52032c13b4240d2c5e6f285c318a28eb2a385d7cf5ac4cd445876aee5baa5753bb636ada0d870d84a9d3fdbce794ef ntfs-3g_ntfsprogs-2017.3.23.tgz
+c79ae27e3c9490f0f893a16f27bb19c2cef2fe7b098aabca392163f4105b7ee9797b648d1013ce4c096adf639f6da2b8c43829cfabcc6ac3208c07454a6c0c5c CVE-2019-9755.patch"
diff --git a/user/ntfs-3g/CVE-2019-9755.patch b/user/ntfs-3g/CVE-2019-9755.patch
new file mode 100644
index 000000000..d1a95541f
--- /dev/null
+++ b/user/ntfs-3g/CVE-2019-9755.patch
@@ -0,0 +1,63 @@
+From 85c1634a26faa572d3c558d4cf8aaaca5202d4e9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jean-Pierre=20Andr=C3=A9?= <jean-pierre.andre@wanadoo.fr>
+Date: Wed, 19 Dec 2018 15:57:50 +0100
+Subject: [PATCH] Fixed reporting an error when failed to build the mountpoint
+
+The size check was inefficient because getcwd() uses an unsigned int
+argument.
+---
+ src/lowntfs-3g.c | 6 +++++-
+ src/ntfs-3g.c | 6 +++++-
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/src/lowntfs-3g.c b/src/lowntfs-3g.c
+index 993867fa..0660439b 100644
+--- a/src/lowntfs-3g.c
++++ b/src/lowntfs-3g.c
+@@ -4411,7 +4411,8 @@ int main(int argc, char *argv[])
+ else {
+ ctx->abs_mnt_point = (char*)ntfs_malloc(PATH_MAX);
+ if (ctx->abs_mnt_point) {
+- if (getcwd(ctx->abs_mnt_point,
++ if ((strlen(opts.mnt_point) < PATH_MAX)
++ && getcwd(ctx->abs_mnt_point,
+ PATH_MAX - strlen(opts.mnt_point) - 1)) {
+ strcat(ctx->abs_mnt_point, "/");
+ strcat(ctx->abs_mnt_point, opts.mnt_point);
+@@ -4419,6 +4420,9 @@ int main(int argc, char *argv[])
+ /* Solaris also wants the absolute mount point */
+ opts.mnt_point = ctx->abs_mnt_point;
+ #endif /* defined(__sun) && defined (__SVR4) */
++ } else {
++ free(ctx->abs_mnt_point);
++ ctx->abs_mnt_point = (char*)NULL;
+ }
+ }
+ }
+diff --git a/src/ntfs-3g.c b/src/ntfs-3g.c
+index 6ce89fef..4e0912ae 100644
+--- a/src/ntfs-3g.c
++++ b/src/ntfs-3g.c
+@@ -4148,7 +4148,8 @@ int main(int argc, char *argv[])
+ else {
+ ctx->abs_mnt_point = (char*)ntfs_malloc(PATH_MAX);
+ if (ctx->abs_mnt_point) {
+- if (getcwd(ctx->abs_mnt_point,
++ if ((strlen(opts.mnt_point) < PATH_MAX)
++ && getcwd(ctx->abs_mnt_point,
+ PATH_MAX - strlen(opts.mnt_point) - 1)) {
+ strcat(ctx->abs_mnt_point, "/");
+ strcat(ctx->abs_mnt_point, opts.mnt_point);
+@@ -4156,6 +4157,9 @@ int main(int argc, char *argv[])
+ /* Solaris also wants the absolute mount point */
+ opts.mnt_point = ctx->abs_mnt_point;
+ #endif /* defined(__sun) && defined (__SVR4) */
++ } else {
++ free(ctx->abs_mnt_point);
++ ctx->abs_mnt_point = (char*)NULL;
+ }
+ }
+ }
+--
+2.22.0
+
diff --git a/user/ntpsec/APKBUILD b/user/ntpsec/APKBUILD
new file mode 100644
index 000000000..486260e9c
--- /dev/null
+++ b/user/ntpsec/APKBUILD
@@ -0,0 +1,26 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=ntpsec
+pkgver=1.2.1
+pkgrel=0
+pkgdesc="Secure implementation of Network Time Protocol (NTP)"
+url="https://www.ntpsec.org/"
+arch="all"
+options="!check" # No test suite.
+license="NTP AND BSD-2-Clause AND BSD-3-Clause AND MIT"
+depends="python3 py3-psutil"
+makedepends="asciidoctor bison libbsd-dev libexecinfo-dev m4 openssl-dev
+ python3-dev"
+subpackages="$pkgname-doc"
+source="https://ftp.ntpsec.org/pub/releases/ntpsec-$pkgver.tar.gz"
+
+build() {
+ python3 waf configure --prefix=/usr
+ python3 waf build
+}
+
+package() {
+ python3 waf install --destdir="$pkgdir"
+}
+
+sha512sums="0b8b0bda52d3025f6e9a06c00b1e0c25c595ada72b87ed0e5d3d6f77a034f557745156bc6d9a263c9876c041efffa38d42fa93ba8bfda31f67efbd842a726277 ntpsec-1.2.1.tar.gz"
diff --git a/user/numactl/APKBUILD b/user/numactl/APKBUILD
new file mode 100644
index 000000000..fbc1eeb98
--- /dev/null
+++ b/user/numactl/APKBUILD
@@ -0,0 +1,49 @@
+# Contributor: Daniel Sabogal <dsabogalcc@gmail.com>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=numactl
+pkgver=2.0.15
+pkgrel=0
+pkgdesc="Simple NUMA policy support"
+url="https://github.com/numactl/numactl"
+# ARM lacks the __NR_migrate_pages syscall
+arch="all !armhf !armv7"
+license="GPL-2.0+ AND LGPL-2.1"
+depends=""
+makedepends="autoconf automake libtool linux-headers"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
+source="$pkgname-$pkgver.tar.gz::https://github.com/numactl/$pkgname/archive/v$pkgver.tar.gz
+ version.patch
+ "
+
+prepare() {
+ default_prepare
+ ./autogen.sh
+}
+
+build() {
+ ./configure \
+ --prefix=/usr \
+ --mandir=/usr/share/man
+ make
+}
+
+check() {
+ make check VERBOSE=1 TESTS='test/distance test/nodemap test/tbitmap'
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+
+ # provided by linux man-pages
+ rm -r "$pkgdir"/usr/share/man/man2
+}
+
+tools() {
+ pkgdesc="NUMA policy control tools"
+
+ mkdir -p "$subpkgdir"/usr
+ mv "$pkgdir"/usr/bin "$subpkgdir"/usr
+}
+
+sha512sums="dcc76b8d36698a740e04206471352013b39bd61357d6090fc062681fa2f31e5f0b40c8582c06fd1a97919f494002bef1fa8330b6a6784b516c39961caa2a4320 numactl-2.0.15.tar.gz
+965d8b4020578a6fd1d4ff0d85d6fd941534c3b26446e10529dc9c78ab331ce9dbc129e01e34282bbf615c9b3a606434079cc830bc4024b04f6273e676f2ade7 version.patch"
diff --git a/user/numactl/version.patch b/user/numactl/version.patch
new file mode 100644
index 000000000..61b4b3d01
--- /dev/null
+++ b/user/numactl/version.patch
@@ -0,0 +1,11 @@
+diff --git a/configure.ac b/configure.ac
+index 1c34a1e..8709ff3 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -1,5 +1,5 @@
+ AC_PREREQ([2.64])
+-AC_INIT([numactl], [2.0.14])
++AC_INIT([numactl], [2.0.15])
+
+ AC_CONFIG_SRCDIR([numactl.c])
+ AC_CONFIG_MACRO_DIR([m4])
diff --git a/user/nvme-cli/APKBUILD b/user/nvme-cli/APKBUILD
new file mode 100644
index 000000000..a7e99f34b
--- /dev/null
+++ b/user/nvme-cli/APKBUILD
@@ -0,0 +1,52 @@
+# Contributor: CyberLeo <cyberleo@cyberleo.net>
+# Maintainer: CyberLeo <cyberleo@cyberleo.net>
+pkgname=nvme-cli
+pkgver=1.15
+pkgrel=0
+pkgdesc="NVM-Express user space tooling for Linux"
+options="!check" # Requires nose2
+arch="all"
+url="https://github.com/linux-nvme/nvme-cli"
+license="GPL-2.0-only"
+makedepends="linux-headers coreutils util-linux-dev util-linux libuuid"
+subpackages="
+ $pkgname-doc
+ $pkgname-bash-completion:bashcomp:noarch
+ $pkgname-zsh-completion:zshcomp:noarch
+ "
+source="$pkgname-$pkgver.tar.gz::https://github.com/linux-nvme/nvme-cli/archive/v$pkgver.tar.gz
+ add-limits.patch"
+
+build() {
+ make PREFIX=/usr
+}
+
+package() {
+ make PREFIX=/usr DESTDIR="$pkgdir" UDEVDIR=/usr/lib/udev install
+ rm -rf "$pkgdir"/usr/lib/systemd
+}
+
+bashcomp() {
+ depends=""
+ pkgdesc="Bash completions for $pkgname"
+ install_if="$pkgname=$pkgver-r$pkgrel bash-completion"
+
+ mkdir -p "$subpkgdir"/usr/share/bash-completion/completions
+ mv "$pkgdir"/usr/share/bash-completion/completions/* \
+ "$subpkgdir"/usr/share/bash-completion/completions/
+}
+
+zshcomp() {
+ depends=""
+ pkgdesc="Zsh completions for $pkgname"
+ install_if="$pkgname=$pkgver-r$pkgrel zsh"
+
+ mkdir -p "$subpkgdir/usr/share/zsh/site-functions"
+ mv "$pkgdir"/usr/share/zsh/site-functions/* \
+ "$subpkgdir"/usr/share/zsh/site-functions
+}
+
+sha512sums="
+0614105153edf7217d4c428927423628b63f6bee034c59926370a13d433c9c3af217338fb6fe2f8bbf781fc17ebae0102e8c072371b7ea4324c18dfdffd40305 nvme-cli-1.15.tar.gz
+cee0623c3b17c74edc365eed80b3a03086ccb68f4fe00a0cd13ee65f0602a1edb0eed64a352403dd71a25f2779dc410fd2497a17be1e565958a7616dd375da70 add-limits.patch
+"
diff --git a/user/nvme-cli/add-limits.patch b/user/nvme-cli/add-limits.patch
new file mode 100644
index 000000000..d62718199
--- /dev/null
+++ b/user/nvme-cli/add-limits.patch
@@ -0,0 +1,20 @@
+--- nvme-cli-1.14.orig/nvme-rpmb.c
++++ nvme-cli-1.14/nvme-rpmb.c
+@@ -25,6 +25,7 @@
+ #include <sys/socket.h>
+ #include <linux/if_alg.h>
+ #include <linux/socket.h>
++#include <limits.h>
+
+ #include "nvme.h"
+ #include "nvme-print.h"
+--- nvme-cli-1.14.orig/nvme-topology.c
++++ nvme-cli-1.14/nvme-topology.c
+@@ -5,6 +5,7 @@
+ #include <fcntl.h>
+ #include <sys/stat.h>
+ #include <sys/mman.h>
++#include <limits.h>
+
+ #include "nvme.h"
+ #include "nvme-ioctl.h"
diff --git a/user/obconf-qt/APKBUILD b/user/obconf-qt/APKBUILD
index c1da38c31..38528f5b1 100644
--- a/user/obconf-qt/APKBUILD
+++ b/user/obconf-qt/APKBUILD
@@ -1,23 +1,23 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=obconf-qt
-pkgver=0.14.1
+pkgver=0.16.4
+_lxqt=0.9.0
pkgrel=0
pkgdesc="Qt5-based Openbox configuration tool"
-url="https://lxqt.org/"
+url="https://lxqt.github.io/"
arch="all"
+options="!check" # No test suite.
license="GPL-2.0+"
depends=""
-makedepends="cmake extra-cmake-modules lxqt-build-tools>=0.6.0 openbox-dev
+makedepends="cmake extra-cmake-modules lxqt-build-tools>=$_lxqt openbox-dev
liblxqt-dev qt5-qttools-dev"
source="https://github.com/lxqt/obconf-qt/releases/download/$pkgver/obconf-qt-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -25,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="7ae4feb8daa3853f768e9cb613fc99046f98744e03efc673ee9e5cb3d4ffa2861f2a9f762acd9c54ef2b9ca3f288d2901cdcce5c09db84689dd186006b8e26ed obconf-qt-0.14.1.tar.xz"
+sha512sums="4f75a5275e14cd7e8f0abc1bfcd40b4d860d613bc37c06c0e68d6f622ed126dce2fea98b5dd8e629b5de472ab5e668a5b0af7f6621d09fcb0b2287a11b0fb662 obconf-qt-0.16.4.tar.xz"
diff --git a/user/oclock/APKBUILD b/user/oclock/APKBUILD
index d75964c02..8a1454a32 100644
--- a/user/oclock/APKBUILD
+++ b/user/oclock/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=oclock
-pkgver=1.0.4
+pkgver=1.0.5
pkgrel=0
pkgdesc="The original round X11 clock applet"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="libx11-dev libxext-dev libxkbfile-dev libxmu-dev libxt-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/oclock-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="6e0d36a84572a153226b2929f2253cb7adc3c9e5e3af168aeaf8c487ade2e43517b271a8e9cdb2a2c4a67ca56ed0b99c194ca63a4a822b68bfc72ca6518335e7 oclock-1.0.4.tar.bz2"
+sha512sums="a87e89afdb25a91c36077e030b05c3907ddc063c6bdc0715a01bfc16edef8730b3b5a0347399ef4c8b2a13e70e068cba9ec5fe8d411f08548c0aa790a1873aff oclock-1.0.5.tar.xz"
diff --git a/user/ode/APKBUILD b/user/ode/APKBUILD
index 7a55d53cb..32ee727fb 100644
--- a/user/ode/APKBUILD
+++ b/user/ode/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ode
-pkgver=0.14
+pkgver=0.16.1
pkgrel=0
pkgdesc="High performance library for simulating rigid body dynamics"
url="https://ode.org/"
@@ -13,11 +13,10 @@ makedepends="autoconf automake libtool"
subpackages="$pkgname-dev"
source="https://bitbucket.org/odedevs/ode/downloads/ode-$pkgver.tar.gz
fix-test-link.patch
+ stdint.patch
"
build() {
- cd "$builddir"
-
./bootstrap
CXXFLAGS="$CXXFLAGS -fpermissive" ./configure \
--build=$CBUILD \
@@ -35,14 +34,13 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="1f74c3c4687ee9665fa70e65a79100747fba577729830a90806e374115f1c161a2f4545cf591b0979054aa3e2f9a3673635668cb7362ab5c213ada0d39b1a03d ode-0.14.tar.gz
-8630d5d059fd0f623db6af4000666868358002a42ba84817117b1fb5e01c776bb23cbf1c8c43181d7bf40a0d71b640f9d2f9785461d8a77877dcbdadd775792e fix-test-link.patch"
+sha512sums="65aa7b6baf98bab9aa721a119246371e31e070d97770a8cdaea882de3cd5e2dfde7ca1b4258186b397853cc0dc3b2f7b6b7aef3ac86b48a72a3011d5ae536672 ode-0.16.1.tar.gz
+8630d5d059fd0f623db6af4000666868358002a42ba84817117b1fb5e01c776bb23cbf1c8c43181d7bf40a0d71b640f9d2f9785461d8a77877dcbdadd775792e fix-test-link.patch
+0d618cec0afdab86279687275bf476594897d1dfd7b5619fe6bc05343f22f6292c9598a73ff6f2967d5f39e071abcf282fc673c0ffe33f7efd9bbe56ca674dae stdint.patch"
diff --git a/user/ode/stdint.patch b/user/ode/stdint.patch
new file mode 100644
index 000000000..f3674335e
--- /dev/null
+++ b/user/ode/stdint.patch
@@ -0,0 +1,44 @@
+--- ode-0.16/include/ode/odeconfig.h.old 2018-12-09 20:04:03.000000000 +0000
++++ ode-0.16/include/ode/odeconfig.h 2020-01-12 08:36:16.664428956 +0000
+@@ -32,6 +32,7 @@
+ #include <math.h>
+ #include <string.h>
+ #include <float.h>
++#include <stdint.h>
+
+
+ #include <ode/precision.h>
+@@ -128,20 +129,20 @@
+ typedef __int64 dint64;
+ typedef unsigned __int64 duint64;
+ #else
+- typedef long long dint64;
+- typedef unsigned long long duint64;
++ typedef int64_t dint64;
++ typedef uint64_t duint64;
+ #endif
+- typedef int dint32;
+- typedef unsigned int duint32;
+- typedef short dint16;
+- typedef unsigned short duint16;
+- typedef signed char dint8;
+- typedef unsigned char duint8;
+-
+- typedef dint32 dintptr;
+- typedef duint32 duintptr;
+- typedef dint32 ddiffint;
+- typedef duint32 dsizeint;
++ typedef int32_t dint32;
++ typedef uint32_t duint32;
++ typedef int16_t dint16;
++ typedef uint16_t duint16;
++ typedef int8_t dint8;
++ typedef uint8_t duint8;
++
++ typedef intptr_t dintptr;
++ typedef uintptr_t duintptr;
++ typedef ptrdiff_t ddiffint;
++ typedef size_t dsizeint;
+
+ #endif
+
diff --git a/user/okteta/APKBUILD b/user/okteta/APKBUILD
index 24b9a6e6f..b7f151930 100644
--- a/user/okteta/APKBUILD
+++ b/user/okteta/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=okteta
-pkgver=0.26.1
+pkgver=0.26.9
pkgrel=0
pkgdesc="Graphical hex/binary editor"
url="https://www.kde.org/applications/utilities/okteta/"
@@ -27,12 +27,12 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- local _skip="libkasten-core-testdocumenttest|libkasten-core-documentmanagertest|oktetakasten-document-bytearraydocumenttest|kpart-oktetaparttest"
+ local _skip="libkasten-core-testdocumenttest|libkasten-core-documentmanagertest|oktetakasten-document-bytearraydocumenttest|kpart-oktetaparttest|replacejobtest"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E "($_skip)"
}
@@ -40,4 +40,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="fa4e841c77ae255e9936b29e30fa0bc1f65594898820652ac8ba78497658ec5ef78cadf8b4d33cab09b2ee8da1d75b84377be28680b2d91c5af2dcdfe5da95e3 okteta-0.26.1.tar.xz"
+sha512sums="cc98f7923a26de9548944ebc207284879607707f41065c847707ac5876c04d31926bb4edf82062cd4d6ade2df64d7a2363d8dfa711524574514ca0dd260b4a9f okteta-0.26.9.tar.xz"
diff --git a/user/okular/APKBUILD b/user/okular/APKBUILD
index ed7175568..ce20be6f6 100644
--- a/user/okular/APKBUILD
+++ b/user/okular/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=okular
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Universal document reader developed by KDE"
url="https://okular.kde.org/"
@@ -14,12 +14,18 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
kio-dev kjs-dev kparts-dev kwallet-dev kwindowsystem-dev khtml-dev
threadweaver-dev kactivities-dev poppler-qt5-dev tiff-dev qca-dev
libjpeg-turbo-dev kpty-dev kirigami2-dev djvulibre-dev libkexiv2-dev
- libspectre-dev ebook-tools-dev"
+ libspectre-dev ebook-tools-dev libzip-dev poppler-dev qt5-qtspeech-dev
+ purpose-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/okular-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/okular-$pkgver.tar.xz
+ es-doc-fix.patch
+ "
+
+# secfixes:
+# 19.12.3-r1:
+# - CVE-2020-9359
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -30,19 +36,18 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS -D_GNU_SOURCE" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
# All other tests require X11
CTEST_OUTPUT_ON_FAILURE=TRUE ctest -R '^shelltest'
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="cbbf20657b6d0c5837d1400fb5be17410672e2489372f62f247b380bd38c0f3ef412d179b683a92d592a906855a648e997c6db5898e29365dcefdf7a8192bf11 okular-18.12.3.tar.xz"
+sha512sums="5958fae2aa28026e2a30e63bdd4cfef05f9cfe7b1eee3e711a634b9ab278c4dcf41b6001db0976693ccaa4d2c234c03f5ed34a683c301e5153388d72f9f52e49 okular-22.04.2.tar.xz
+de32eabda7ee84c4d894b02c56c7d66d8e2332688c726ad95e1b61c1e730035081ff7721275c7b7a9884aabc268ee0115d9ab8e5f52ae8838e1c09c471c81932 es-doc-fix.patch"
diff --git a/user/okular/es-doc-fix.patch b/user/okular/es-doc-fix.patch
new file mode 100644
index 000000000..b064c8910
--- /dev/null
+++ b/user/okular/es-doc-fix.patch
@@ -0,0 +1,11 @@
+--- okular-19.04.1/po/es/docs/okular/index.docbook.old 2019-05-07 00:14:57.000000000 +0000
++++ okular-19.04.1/po/es/docs/okular/index.docbook 2019-05-12 03:14:04.511177243 +0000
+@@ -1228,7 +1228,7 @@
+ <para
+ >Para eliminar una anotación, pulse sobre ella con el &RMB; y seleccione <guimenuitem
+ >Borrar</guimenuitem
+-> o seleccione una anotación usando el &LMB; y pulse la tecla &Del;. </para>
++> o seleccione una anotación usando el &LMB; y pulse la tecla Delete. </para>
+ <para
+ >Al borrar una anotación, su ventana se cerrará si estuviera abierta. </para>
+ <note>
diff --git a/user/ol/APKBUILD b/user/ol/APKBUILD
new file mode 100644
index 000000000..ea9eac61e
--- /dev/null
+++ b/user/ol/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Yuriy Chumak <yuriy.chumak@mail.com>
+# Maintainer: Yuriy Chumak <yuriy.chumak@mail.com>
+pkgname=ol
+pkgver=2.6
+pkgrel=0
+pkgdesc="Purely functional dialect of Lisp"
+url="https://yuriy-chumak.github.io/ol/"
+arch="all"
+license="LGPL-3.0+ OR MIT"
+depends=""
+makedepends="vim"
+subpackages="$pkgname-doc"
+source="$pkgname-$pkgver.tar.gz::https://github.com/yuriy-chumak/$pkgname/archive/$pkgver.tar.gz
+ require-explicit-cdefs.patch
+ "
+
+_HAS_32CDEFS=0
+_HAS_64CDEFS=0
+case "$CARCH" in
+ armel | armhf | armv7) _HAS_32CDEFS=1 ;;
+ x86 | pmmx) _HAS_32CDEFS=1 ;;
+ x86_64 | mips64* | aarch64* | ppc64*) _HAS_64CDEFS=1 ;;
+ mips* | ppc | s390*) _HAS_32CDEFS=1 ;;
+esac
+
+build() {
+ make HAS_32CDEFS="${_HAS_32CDEFS}" HAS_64CDEFS="${_HAS_64CDEFS}"
+}
+
+check() {
+ make HAS_32CDEFS="${_HAS_32CDEFS}" HAS_64CDEFS="${_HAS_64CDEFS}" check
+}
+
+package() {
+ make HAS_32CDEFS="${_HAS_32CDEFS}" HAS_64CDEFS="${_HAS_64CDEFS}" DESTDIR="$pkgdir" install
+}
+
+sha512sums="22e61379d97e52e8f780213780d7f29a93e4846d158629e554f404a1c39e86daef9ce2a1b27d608c40c40850eaff4c2715bdfcb66af6b81cd906f0bcd43bf450 ol-2.6.tar.gz
+3b8d5b984b6cb483a51389905648119c3d1de568d13ded6f5606163f8538f9426078357f8494a752af4ee80809fce6fe587f308be9ab010fe19d6eded688ed5a require-explicit-cdefs.patch"
diff --git a/user/ol/require-explicit-cdefs.patch b/user/ol/require-explicit-cdefs.patch
new file mode 100644
index 000000000..fd4a70ad0
--- /dev/null
+++ b/user/ol/require-explicit-cdefs.patch
@@ -0,0 +1,28 @@
+diff -ur a/tests/Makefile b/tests/Makefile
+--- a/tests/Makefile 2024-11-25 18:28:34.957193217 +0000
++++ b/tests/Makefile 2024-11-25 18:30:17.261515826 +0000
+@@ -53,20 +53,11 @@
+
+ # special case, test 64- and 32-bit both
+ # (maximal testings under main development platform)
+-ifeq ($(UNAME)-$(MACHINE),Linux-x86_64)
+-HAS_64CDEFS ?= $(call exists,-m64,sys/cdefs.h,exit)
+-ifeq ($(HAS_64CDEFS),1)
+-DEV_MACHINE ?= 1
++ifndef HAS_32CDEFS
++$(error HAS_32CDEFS is not set)
+ endif
+-# sudo apt-get install gcc-multilib
+-HAS_32CDEFS ?= $(call exists,-m32,sys/cdefs.h,exit)
+-ifeq ($(HAS_32CDEFS),1)
+-DEV_MACHINE ?= 1
+-endif
+-else
+-DEV_MACHINE ?= 0
+-HAS_64CDEFS ?= 0
+-HAS_32CDEFS ?= 0
++ifndef HAS_64CDEFS
++$(error HAS_64CDEFS is not set)
+ endif
+
+ # -------------
diff --git a/user/olm/APKBUILD b/user/olm/APKBUILD
new file mode 100644
index 000000000..bc832ae94
--- /dev/null
+++ b/user/olm/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=olm
+pkgver=3.2.16
+pkgrel=0
+pkgdesc="Implementation of the olm and megolm cryptographic ratchets"
+url="https://gitlab.matrix.org/matrix-org/olm/"
+arch="all"
+license="Apache-2.0"
+depends=""
+makedepends="cmake"
+subpackages="$pkgname-dev"
+source="https://gitlab.matrix.org/matrix-org/olm/-/archive/$pkgver/olm-$pkgver.tar.bz2"
+
+# secfixes:
+# 3.2.6-r0:
+# - CVE-2021-34813
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="504ddc91297e7aef99e9b25f73b33bac29716ca33eb333bf1217b719d8862438e2cdaadd88cef3dc84e9f618bcc9eeeaf7e513f2d6909cc4a3d98a5dd79b0581 olm-3.2.16.tar.bz2"
diff --git a/user/oniguruma/192.patch b/user/oniguruma/192.patch
new file mode 100644
index 000000000..d027757d7
--- /dev/null
+++ b/user/oniguruma/192.patch
@@ -0,0 +1,25 @@
+From 47af49af70a717ac31c54ae55ad242a27f213def Mon Sep 17 00:00:00 2001
+From: "K.Kosako" <kkosako0@gmail.com>
+Date: Wed, 22 Apr 2020 14:47:09 +0900
+Subject: [PATCH] fix #192: Unexpected regex match
+
+---
+ src/regcomp.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/regcomp.c b/src/regcomp.c
+index 4d5b78f..b3193c5 100644
+--- a/src/regcomp.c
++++ b/src/regcomp.c
+@@ -3567,6 +3567,11 @@ check_node_in_look_behind(Node* node, int not, int* used)
+
+ if (IS_NOT_NULL(NODE_BODY(node)))
+ r = check_node_in_look_behind(NODE_BODY(node), not, used);
++
++ /* Issue 192
++ escape removing node in tune_look_behind()
++ */
++ *used = TRUE;
+ break;
+
+ case NODE_GIMMICK:
diff --git a/user/oniguruma/APKBUILD b/user/oniguruma/APKBUILD
new file mode 100644
index 000000000..e95c5229e
--- /dev/null
+++ b/user/oniguruma/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
+# Contributor: Francesco Colista <fcolista@alpinelinux.org>
+# Maintainer: Samuel Holland <samuel@sholland.org>
+pkgname=oniguruma
+pkgver=6.9.5
+pkgrel=0
+pkgdesc="A regular expression library"
+url="https://github.com/kkos/oniguruma"
+arch="all"
+license="BSD-2-Clause"
+depends=""
+makedepends=""
+subpackages="$pkgname-dev"
+source="https://github.com/kkos/$pkgname/releases/download/v$pkgver/onig-$pkgver.tar.gz
+ 192.patch
+ "
+builddir="$srcdir/onig-$pkgver"
+
+# secfixes:
+# 6.9.2-r1:
+# - CVE-2019-13224
+# - CVE-2019-13225
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="2bdb24914e7069c6df9ab8a3d0190ddb58440d94b13860cdc36d259062ae0bc2aa85d564a4209ec596fc7ee47b0823d1b817d4f7ffcc3ea60e9870da84491dc1 onig-6.9.5.tar.gz
+b2e9926e0b9a22b2036bb43297e24726439938b8cf349f55ab09bf47d16a4862bb3bbdec8b425c7d174524121e49c4d6e567e26168894d7c564b7645d5a1bff5 192.patch"
diff --git a/user/opal-utils/APKBUILD b/user/opal-utils/APKBUILD
new file mode 100644
index 000000000..94e1d0b89
--- /dev/null
+++ b/user/opal-utils/APKBUILD
@@ -0,0 +1,44 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=opal-utils
+pkgver=6.6.2
+pkgrel=0
+pkgdesc="Tools for IBM FSP and OpenPOWER systems"
+url="https://lists.ozlabs.org/listinfo/skiboot"
+arch="ppc64"
+license="Apache-2.0"
+depends=""
+makedepends=""
+subpackages="$pkgname-doc"
+source="skiboot-$pkgver.tar.gz::https://github.com/open-power/skiboot/archive/v$pkgver.tar.gz
+ musl.patch
+ opal-prd.patch
+ "
+builddir="$srcdir/skiboot-$pkgver"
+
+_tools="opal-prd gard"
+
+build() {
+ for _tool in $_tools; do
+ cd "$builddir"/external/$_tool
+ make
+ done
+}
+
+check() {
+ for _tool in $_tools; do
+ cd "$builddir"/external/$_tool
+ make test
+ done
+}
+
+package() {
+ for _tool in $_tools; do
+ cd "$builddir"/external/$_tool
+ make DESTDIR="$pkgdir" prefix="/usr" install
+ done
+}
+
+sha512sums="a864e4120ffac4065b89d5da7c959ac20643be42e83f4186a778355f3ea0b36cbd1e02c91b1460b6fa6550fceec9034cce096b89f840b4051d65c7f0ab70dc27 skiboot-6.6.2.tar.gz
+e7480f16b6eb41fd65b40ea1f20031118030f24681b7b8afcfdebb8cde7625e45902683cfb5fe0af3259060fb1b92b9c2f5d62354de356e7706a7f08ad9f772e musl.patch
+692206f60727041c070c7f75eb66325607d00261e8dd7f47111fd59c7495c744ac356b0c94c6139c76bacbe403f1e9e6819f8bce2d13ac10d1cacc6e351cc25e opal-prd.patch"
diff --git a/user/opal-utils/musl.patch b/user/opal-utils/musl.patch
new file mode 100644
index 000000000..5835935e8
--- /dev/null
+++ b/user/opal-utils/musl.patch
@@ -0,0 +1,36 @@
+--- skiboot-6.3.1/ccan/endian/endian.h.old 2019-05-10 06:50:45.000000000 +0000
++++ skiboot-6.3.1/ccan/endian/endian.h 2019-06-04 07:57:14.416435679 +0000
+@@ -112,9 +112,9 @@
+ #error "Unknown endian"
+ #elif HAVE_LITTLE_ENDIAN && HAVE_BIG_ENDIAN
+ #error "Can't compile for both big and little endian."
+-#elif HAVE_LITTLE_ENDIAN
++#elif HAVE_LITTLE_ENDIAN && !defined(__BYTE_ORDER)
+ #define __BYTE_ORDER __LITTLE_ENDIAN
+-#elif HAVE_BIG_ENDIAN
++#elif HAVE_BIG_ENDIAN && !defined(__BYTE_ORDER)
+ #define __BYTE_ORDER __BIG_ENDIAN
+ #endif
+
+--- skiboot-6.3.1/include/inttypes.h.old 2019-05-10 06:50:45.000000000 +0000
++++ skiboot-6.3.1/include/inttypes.h 2019-06-04 08:07:42.108161539 +0000
+@@ -25,15 +25,15 @@
+
+ #include <stdint.h>
+
+-#ifndef __WORDSIZE
+-/* If we don't have __WORDSIZE it means we're *certainly* building skiboot
++#ifndef __LONG_WIDTH__
++/* If we don't have __LONG_WIDTH__ it means we're *certainly* building skiboot
+ * which will *ALWAYS* have a word size of 32bits.
+ * (unless someone goes and ports skiboot to something that isn't powerpc)
+ */
+-#define __WORDSIZE 32
++#define __LONG_WIDTH__ 32
+ #endif
+
+-#if __WORDSIZE == 64
++#if __LONG_WIDTH__ == 64
+ #define PRIu64 "lu"
+ #define PRIx64 "lx"
+ #else
diff --git a/user/opal-utils/opal-prd.patch b/user/opal-utils/opal-prd.patch
new file mode 100644
index 000000000..90a23e333
--- /dev/null
+++ b/user/opal-utils/opal-prd.patch
@@ -0,0 +1,8 @@
+--- skiboot-6.3.1/external/opal-prd/thunk.S.old 2019-05-10 06:50:45.000000000 +0000
++++ skiboot-6.3.1/external/opal-prd/thunk.S 2019-06-04 08:01:00.851806263 +0000
+@@ -3,4 +3,4 @@
+-#include <endian.h>
++#define __BYTE_ORDER __BIG_ENDIAN
+ #include <asm/unistd.h>
+
+ #ifndef __NR_switch_endian
diff --git a/user/open-vm-tools/APKBUILD b/user/open-vm-tools/APKBUILD
new file mode 100644
index 000000000..4bdc9c0ad
--- /dev/null
+++ b/user/open-vm-tools/APKBUILD
@@ -0,0 +1,111 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=open-vm-tools
+pkgver=12.4.0
+_buildver=23259341
+pkgrel=2
+pkgdesc="Guest additions for VMware hypervisors"
+url=" "
+arch="x86 pmmx i528 x86_64 aarch64"
+options="suid"
+license="GPL-2.0-only"
+depends=""
+makedepends="curl-dev fuse3-dev glib-dev gtk+3.0-dev gtkmm+3.0-dev icu-dev
+ libdrm-dev libice-dev libsigc++-dev libsm-dev libtirpc-dev
+ libxcomposite-dev libxext-dev libxi-dev libxinerama-dev libxml2-dev
+ libxrandr-dev libxrender-dev libxtst-dev linux-pam-dev openssl-dev
+ rpcsvc-proto eudev-dev xmlsec-dev"
+subpackages="$pkgname-dev $pkgname-desktop $pkgname-openrc"
+source="https://github.com/vmware/open-vm-tools/releases/download/stable-$pkgver/open-vm-tools-$pkgver-$_buildver.tar.gz
+ disable-werror.patch
+ dndcp-portability.patch
+ time64.patch
+ hgfs-portability.patch
+ loff_t.patch
+ poll-header.patch
+ preadv.patch
+ resolver.patch
+ strerror_r.patch
+ vgauth-portability.patch
+ vix.patch
+ vmtoolsd.pamd
+
+ open-vm-tools.confd
+ open-vm-tools.initd
+ vgauthd.initd
+ "
+builddir="$srcdir/$pkgname-$pkgver-$_buildver"
+
+build() {
+ LDFLAGS="$LDFLAGS `icu-config --ldflags`" ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --disable-containerinfo \
+ --disable-deploypkg \
+ --disable-glibc-check \
+ --disable-static \
+ --disable-tests \
+ --enable-resolutionkms \
+ --with-gtk3 \
+ --with-gtkmm3 \
+ --with-icu \
+ --with-pam \
+ --with-udev-rules-dir=/lib/udev/rules.d \
+ --with-x \
+ --without-kernel-modules
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ # Replace packaged PAM configuration with ours.
+ install -m 644 "$srcdir"/vmtoolsd.pamd "$pkgdir"/etc/pam.d/vmtoolsd
+ ln -s vmhgfs-fuse "$pkgdir"/usr/bin/mount.vmhgfs-fuse
+
+ install -D -m644 "$srcdir"/open-vm-tools.confd "$pkgdir"/etc/conf.d/open-vm-tools
+ install -D -m755 "$srcdir"/open-vm-tools.initd "$pkgdir"/etc/init.d/open-vm-tools
+ install -D -m755 "$srcdir"/vgauthd.initd "$pkgdir"/etc/init.d/vgauthd
+}
+
+desktop() {
+ pkgdesc="$pkgdesc (X11 desktop additions)"
+ mkdir -p "$subpkgdir"/etc
+ mv "$pkgdir"/etc/xdg "$subpkgdir"/etc/
+
+ mkdir -p "$subpkgdir"/usr/bin
+ for tool in vmware-user vmwgfxctrl vmware-user-suid-wrapper; do
+ mv "$pkgdir"/usr/bin/$tool "$subpkgdir"/usr/bin/$tool
+ done
+ chmod 4755 "$subpkgdir"/usr/bin/vmware-user-suid-wrapper
+
+ mkdir -p "$subpkgdir"/usr/lib/$pkgname/plugins/vmsvc
+ mv "$pkgdir"/usr/lib/$pkgname/plugins/vmusr \
+ "$subpkgdir"/usr/lib/$pkgname/plugins/
+ mv "$pkgdir"/usr/lib/$pkgname/plugins/vmsvc/libresolutionKMS.so \
+ "$subpkgdir"/usr/lib/$pkgname/plugins/vmsvc/
+}
+
+sha512sums="11ea43c64ec534922145f83e2b7ef9254437f80656ad03b596340a78c3698adcc7d84adade9c5d8e1c83b5ebc3bd086601b1d104e0f070274dc2b6bc1f64fb17 open-vm-tools-12.4.0-23259341.tar.gz
+1966f6f31ed531829a40cd3e5c8352ea25cac0535a24f62aecf37e2018adbeb33cd214a43d4acc57766c8795d1849e1241c8777bbf96ad447f0c7baa41a555ed disable-werror.patch
+987a65c77a462520430d157212fbd23381af301a0e5b02410750f4ac844bad903a92c62f743ea2880b9bca939696edd6c8f92b3f4fc01daafd46b5455f7b9666 dndcp-portability.patch
+6167f412598bd70c7a66831a3fb870514da17461494210c2466af35748e3452702573203ca503906f30864a51436a3e296ee5fc25a7283f51ba06a542ed7f177 time64.patch
+656585c7b087dd1b7539bcd362bb80faa48b7354819636061c2c92569bcd537804daf15b76f6bad0b7229af9d24462de4e630256ac7059941bf8cd115ae9a39c hgfs-portability.patch
+6edb41bb9658271c6a214230c88526c4fccc4c6b3299bb67691f6f917e1e695a20dd09692c9a64d36d46a35cbecb975dcaf7062c0d7fccd2d9011cc17130072d loff_t.patch
+2b623a9901851ba9b1652c117ee2a2ebb8e4cea7a01e2ffe6553cf6d929a86921f4e206278fd19fbab4effc0cc9051848e5254ca35ecfb3a006783e915cd5c5e poll-header.patch
+52ab4bc5f73cde75b849a87dcc0981d95043a6b9bfdc1b18a10129998b4187ffd5098843f8593ed1a3569e91a2abeba0d5bdd1427727542a47dbbc8a84ab294f preadv.patch
+b1f059432d0c4a233356b082e975ea0bf68059231c40cf3e32aedcdc273df234d6cdef9ac1c52baf3c1ee05d9cd02f414f6ce3bf049bdcb0a1162f67f522f902 resolver.patch
+08abd276568d019c64e96ce49704980f214cab06eab563af3c7afb44b7e9893da3953cb34c963c82c6913092fcd766701a815db0b4c323aa1ba02ddb58768cd6 strerror_r.patch
+b87ebf98d97815d48d998cf84490ae74bfee3619894f12121c8cd5706934783bb29668e32f494f6527e06779016da6f9f3bd0be7d3c342fc43c49d3d6637fafd vgauth-portability.patch
+c37965bdbae1b1498d843cc752dc189832e79325eb7bd0dfd8acde81b1c2851c22d7717a3e65bce8209731c404a6e8eeff55a2e9a0f4d548e1f3ea7a7bfad27f vix.patch
+9974a6a2e382600f8019de8923268d82ae22ebad0c5280e38d529570e7bdfdcfad86be838fcfd449a457e2d6cbf1dd9091ffa1e4da3c0acd8c34e9690a338f23 vmtoolsd.pamd
+fca30a3be4dd3247e16115fe32b4d27ede8751f96b5a33b9f489b0ce57823c605b6249ff722d6f4ed82a98979f36d28821603b4a5a1d967d3048d23d983a19be open-vm-tools.confd
+90acbf03eac472e7d8929c9293bf6cc77ad8f3583d74a51679866d4483d35f8c2628d3d544fc608824db39ee018caf4a2d318f73c557c1fa2ca7683c44e5241e open-vm-tools.initd
+87ca487a2013b03c2d1b461621d98acd0a5f3eb3479ef7fa08f71ffcb7ab9947496ca08b7466bedc42c4d558ad31e7c81fcd40780a680161d8efc345fd857904 vgauthd.initd"
diff --git a/user/open-vm-tools/disable-werror.patch b/user/open-vm-tools/disable-werror.patch
new file mode 100644
index 000000000..544350a5e
--- /dev/null
+++ b/user/open-vm-tools/disable-werror.patch
@@ -0,0 +1,21 @@
+#--- open-vm-tools-12.4.0-23259341/configure.ac.old 2024-02-06 09:07:32.000000000 -0600
+#+++ open-vm-tools-12.4.0-23259341/configure.ac 2024-05-22 13:44:36.918508290 -0500
+#@@ -1388,7 +1388,6 @@
+#
+# ### General flags / actions
+# CFLAGS="$CFLAGS -Wall"
+#-CFLAGS="$CFLAGS -Werror"
+#
+# # -Wno-unknown-pragmas is due to gcc not understanding '#pragma ident'
+# # in Xlib.h on OpenSolaris.
+#
+--- open-vm-tools-12.4.0-23259341/configure.old 2024-02-06 09:11:26.000000000 -0600
++++ open-vm-tools-12.4.0-23259341/configure 2024-05-22 13:44:44.128513544 -0500
+@@ -26481,7 +26481,6 @@
+
+ ### General flags / actions
+ CFLAGS="$CFLAGS -Wall"
+-CFLAGS="$CFLAGS -Werror"
+
+ # -Wno-unknown-pragmas is due to gcc not understanding '#pragma ident'
+ # in Xlib.h on OpenSolaris.
diff --git a/user/open-vm-tools/dndcp-portability.patch b/user/open-vm-tools/dndcp-portability.patch
new file mode 100644
index 000000000..b667cbbce
--- /dev/null
+++ b/user/open-vm-tools/dndcp-portability.patch
@@ -0,0 +1,22 @@
+--- open-vm-tools-12.4.0-23259341/services/plugins/dndcp/dnd/dndLinux.c.old 2024-02-06 09:08:40.000000000 -0600
++++ open-vm-tools-12.4.0-23259341/services/plugins/dndcp/dnd/dndLinux.c 2024-05-22 14:45:57.307885844 -0500
+@@ -53,9 +53,6 @@
+
+ #define DND_ROOTDIR_PERMS (S_IRWXU | S_IRWXG | S_IRWXO)
+ #define DND_STAGINGDIR_PERMS (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)
+-#ifdef sun
+-#define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO)
+-#endif
+ #ifdef __ANDROID__
+ /*
+ * Android doesn't support setmntent(), endmntent() or MOUNTED.
+@@ -64,6 +61,9 @@
+ #define NO_ENDMNTENT
+ #define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO)
+ #endif
++#ifndef ACCESSPERMS
++#define ACCESSPERMS (S_IRWXU | S_IRWXG | S_IRWXO)
++#endif
+
+
+ /*
diff --git a/user/open-vm-tools/hgfs-portability.patch b/user/open-vm-tools/hgfs-portability.patch
new file mode 100644
index 000000000..dcd46b24f
--- /dev/null
+++ b/user/open-vm-tools/hgfs-portability.patch
@@ -0,0 +1,34 @@
+--- open-vm-tools-12.4.0-23259341/lib/include/hgfsUtil.h.old 2024-02-06 09:08:40.000000000 -0600
++++ open-vm-tools-12.4.0-23259341/lib/include/hgfsUtil.h 2024-05-22 14:05:09.079168248 -0500
+@@ -53,17 +53,5 @@
+ # include <time.h>
+ # endif
+ # include "vm_basic_types.h"
+-# if !defined _STRUCT_TIMESPEC && \
+- !defined _TIMESPEC_DECLARED && \
+- !defined __timespec_defined && \
+- !defined sun && \
+- !defined __FreeBSD__ && \
+- !__APPLE__ && \
+- !defined _WIN32
+-struct timespec {
+- time_t tv_sec;
+- long tv_nsec;
+-};
+-# endif
+
+ # include "hgfs.h"
+--- open-vm-tools-12.4.0-23259341/lib/hgfsServer/hgfsServerLinux.c.old 2024-02-06 09:08:55.000000000 -0600
++++ open-vm-tools-12.4.0-23259341/lib/hgfsServer/hgfsServerLinux.c 2024-05-22 14:04:34.789168929 -0500
+@@ -108,8 +108,10 @@
+ * ALLPERMS (mode 07777) and ACCESSPERMS (mode 0777) are not defined in the
+ * Solaris version of <sys/stat.h>.
+ */
+-#ifdef sun
++#ifndef ACCESSPERMS
+ # define ACCESSPERMS (S_IRWXU|S_IRWXG|S_IRWXO)
++#endif
++#ifndef ALLPERMS
+ # define ALLPERMS (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)
+ #endif
+
diff --git a/user/open-vm-tools/loff_t.patch b/user/open-vm-tools/loff_t.patch
new file mode 100644
index 000000000..d9f24bd1b
--- /dev/null
+++ b/user/open-vm-tools/loff_t.patch
@@ -0,0 +1,11 @@
+--- open-vm-tools-12.4.0-23259341/vmhgfs-fuse/fsutil.h.old 2024-02-06 09:07:33.000000000 -0600
++++ open-vm-tools-12.4.0-23259341/vmhgfs-fuse/fsutil.h 2024-05-22 14:49:32.547748097 -0500
+@@ -32,7 +32,7 @@
+ #include "hgfsProto.h"
+ #include <fuse.h>
+
+-#if defined(__FreeBSD__) || defined(__SOLARIS__) || defined(__APPLE__)
++#if defined(__FreeBSD__) || defined(__SOLARIS__) || defined(__APPLE__) || defined(__linux__)
+ typedef long long loff_t;
+ #endif
+
diff --git a/user/open-vm-tools/open-vm-tools.confd b/user/open-vm-tools/open-vm-tools.confd
new file mode 100644
index 000000000..4414fabdb
--- /dev/null
+++ b/user/open-vm-tools/open-vm-tools.confd
@@ -0,0 +1,2 @@
+# Set this to no to disable drag and drop (and vmblock) loading.
+VM_DRAG_AND_DROP="yes"
diff --git a/user/open-vm-tools/open-vm-tools.initd b/user/open-vm-tools/open-vm-tools.initd
new file mode 100644
index 000000000..244a951e4
--- /dev/null
+++ b/user/open-vm-tools/open-vm-tools.initd
@@ -0,0 +1,60 @@
+#!/sbin/openrc-run
+# Copyright 1999-2013 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+pidfile="/run/vmtoolsd.pid"
+command="/usr/bin/vmtoolsd"
+command_args="-b ${pidfile}"
+
+vmblockmntpt="/proc/fs/vmblock/mountPoint"
+vmblockfusemntpt="/run/vmblock-fuse"
+
+depend() {
+ before checkfs fsck net X
+ want vgauthd
+}
+
+start_vmblock() {
+ checkpath -d -m 1777 /tmp/VMwareDnD
+ if command -v vmware-vmblock-fuse > /dev/null; then
+ modprobe fuse > /dev/null 2>&1
+ checkpath -d "${vmblockfusemntpt}"
+ ebegin "Mounting vmblock-fuse"
+ vmware-vmblock-fuse \
+ -o subtype=vmware-vmblock,default_permissions,allow_other \
+ "${vmblockfusemntpt}"
+ eend $?
+ else
+ modprobe vmblock > /dev/null 2>&1
+ checkpath -d "${vmblockmntpt}"
+ ebegin "Mounting vmblock"
+ mount -t vmblock vmblock "${vmblockmntpt}"
+ eend $?
+ fi
+}
+
+stop_vmblock() {
+ if [ -d "${vmblockfusemntpt}" ]; then
+ ebegin "Unmounting vmblock-fuse"
+ umount "${vmblockfusemntpt}"
+ eend $?
+ else
+ ebegin "Unmounting vmblock"
+ umount "${vmblockmntpt}"
+ eend $?
+ fi
+}
+
+start_pre() {
+ if [ x"${VM_DRAG_AND_DROP}" = xyes ]; then
+ start_vmblock
+ fi
+ return 0
+}
+
+stop_post() {
+ if [ x"${VM_DRAG_AND_DROP}" = xyes ]; then
+ stop_vmblock
+ fi
+ return 0
+}
diff --git a/user/open-vm-tools/poll-header.patch b/user/open-vm-tools/poll-header.patch
new file mode 100644
index 000000000..1dcc5e3c2
--- /dev/null
+++ b/user/open-vm-tools/poll-header.patch
@@ -0,0 +1,125 @@
+From 821c7949d79ad8e06b20cb1238316fce56778607 Mon Sep 17 00:00:00 2001
+From: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+Upstream-URL: https://github.com/vmware/open-vm-tools/pull/383
+Date: Thu, 31 Oct 2019 17:06:10 +0100
+Subject: [PATCH] Rename poll.h into vm_poll.h to fix build failure on musl
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+musl libc redirects include of sys/poll.h to poll.h. But since poll.h is
+also a local header file, the musl libc header is never included. This
+leads to the following build failure:
+
+In file included from asyncsocket.c:73:0:
+.../host/i586-buildroot-linux-musl/sysroot/usr/include/sys/poll.h:1:2: warning: #warning redirecting incorrect #include <sys/poll.h> to <poll.h> [-Wcpp]
+ #warning redirecting incorrect #include <sys/poll.h> to <poll.h>
+asyncsocket.c: In function ‘AsyncTCPSocketPollWork’:
+asyncsocket.c:2537:13: error: invalid use of undefined type ‘struct pollfd’
+ pfd[i].fd = asock[i]->fd;
+ ^
+asyncsocket.c:2537:13: error: dereferencing pointer to incomplete type ‘struct pollfd’
+asyncsocket.c:2538:13: error: invalid use of undefined type ‘struct pollfd’
+ pfd[i].events = read ? POLLIN : POLLOUT;
+ ^
+asyncsocket.c:2538:33: error: ‘POLLIN’ undeclared (first use in this function); did you mean ‘POLL_IN’?
+ pfd[i].events = read ? POLLIN : POLLOUT;
+
+So rename poll.h into vm_poll.h as suggested by srowe in
+https://github.com/vmware/open-vm-tools/issues/359#issuecomment-533529956
+
+Fixes:
+ - http://autobuild.buildroot.org/results/4f575ef42bbc4387a07e396205052b2da081c64d
+
+Fix #359
+
+Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
+---
+ lib/asyncsocket/asyncsocket.c | 4 ++--
+ lib/hgfsServer/hgfsServer.c | 2 +-
+ lib/include/asyncsocket.h | 2 +-
+ lib/include/pollImpl.h | 2 +-
+ lib/include/{poll.h => vm_poll.h} | 0
+ lib/rpcIn/rpcin.c | 2 +-
+ 6 files changed, 6 insertions(+), 6 deletions(-)
+ rename lib/include/{poll.h => vm_poll.h} (100%)
+
+diff --git a/lib/asyncsocket/asyncsocket.c b/lib/asyncsocket/asyncsocket.c
+index 102638cc9..01181a957 100644
+--- a/lib/asyncsocket/asyncsocket.c
++++ b/lib/asyncsocket/asyncsocket.c
+@@ -70,8 +70,8 @@
+ #else
+ #include <stddef.h>
+ #include <ctype.h>
++#include <poll.h>
+ #include <sys/types.h>
+-#include <sys/poll.h>
+ #include <sys/socket.h>
+ #include <sys/un.h>
+ #include <netdb.h>
+@@ -87,7 +87,7 @@
+ #include "random.h"
+ #include "asyncsocket.h"
+ #include "asyncSocketBase.h"
+-#include "poll.h"
++#include "vm_poll.h"
+ #include "log.h"
+ #include "err.h"
+ #include "hostinfo.h"
+diff --git a/lib/hgfsServer/hgfsServer.c b/lib/hgfsServer/hgfsServer.c
+index 462245511..fc6912860 100644
+--- a/lib/hgfsServer/hgfsServer.c
++++ b/lib/hgfsServer/hgfsServer.c
+@@ -48,7 +48,7 @@
+ #include "hgfsServerOplock.h"
+ #include "hgfsDirNotify.h"
+ #include "userlock.h"
+-#include "poll.h"
++#include "vm_poll.h"
+ #include "mutexRankLib.h"
+ #include "vm_basic_asm.h"
+ #include "unicodeOperations.h"
+diff --git a/lib/include/asyncsocket.h b/lib/include/asyncsocket.h
+index 95a5e4643..a4b4e5aae 100644
+--- a/lib/include/asyncsocket.h
++++ b/lib/include/asyncsocket.h
+@@ -177,7 +177,7 @@ typedef struct AsyncSocket AsyncSocket;
+ * Or the client can specify its favorite poll class and locking behavior.
+ * Use of IVmdbPoll is only supported for regular sockets and for Attach.
+ */
+-#include "poll.h"
++#include "vm_poll.h"
+ struct IVmdbPoll;
+ typedef struct AsyncSocketPollParams {
+ int flags; /* Default 0, only POLL_FLAG_NO_BULL is valid */
+diff --git a/lib/include/pollImpl.h b/lib/include/pollImpl.h
+index 46442e556..8bc669970 100644
+--- a/lib/include/pollImpl.h
++++ b/lib/include/pollImpl.h
+@@ -44,7 +44,7 @@
+ #define INCLUDE_ALLOW_USERLEVEL
+ #include "includeCheck.h"
+
+-#include "poll.h"
++#include "vm_poll.h"
+ #include "vm_basic_asm.h"
+
+ #if defined(__cplusplus)
+diff --git a/lib/include/poll.h b/lib/include/vm_poll.h
+similarity index 100%
+rename from lib/include/poll.h
+rename to lib/include/vm_poll.h
+diff --git a/lib/rpcIn/rpcin.c b/lib/rpcIn/rpcin.c
+index 47a3380e4..660382c62 100644
+--- a/lib/rpcIn/rpcin.c
++++ b/lib/rpcIn/rpcin.c
+@@ -57,7 +57,7 @@
+
+ #if defined(VMTOOLS_USE_VSOCKET)
+ # include <glib.h>
+-# include "poll.h"
++# include "vm_poll.h"
+ # include "asyncsocket.h"
+ # include "vmci_defs.h"
+ #include "dataMap.h"
diff --git a/user/open-vm-tools/preadv.patch b/user/open-vm-tools/preadv.patch
new file mode 100644
index 000000000..ee2aacc5a
--- /dev/null
+++ b/user/open-vm-tools/preadv.patch
@@ -0,0 +1,11 @@
+--- open-vm-tools-12.4.0-23259341/lib/file/fileIOPosix.c.old 2024-02-06 09:08:55.000000000 -0600
++++ open-vm-tools-12.4.0-23259341/lib/file/fileIOPosix.c 2024-05-22 13:56:20.738840704 -0500
+@@ -203,7 +203,7 @@
+ * are not available in any header file.
+ */
+
+-#if defined(__linux__) && !defined(__ANDROID__)
++#if defined(__linux__) && defined(__GLIBC__)
+ #if defined(_FILE_OFFSET_BITS) && (_FILE_OFFSET_BITS == 64)
+ /*
+ * We want preadv/pwritev. But due to FOB=64, the symbols are -64.
diff --git a/user/open-vm-tools/resolver.patch b/user/open-vm-tools/resolver.patch
new file mode 100644
index 000000000..7dd3e6fa9
--- /dev/null
+++ b/user/open-vm-tools/resolver.patch
@@ -0,0 +1,40 @@
+From: void-packages
+
+--- a/lib/nicInfo/nicInfoPosix.c
++++ b/lib/nicInfo/nicInfoPosix.c
+@@ -66,6 +66,35 @@
+ # include <net/if.h>
+ #endif
+
++
++#if !defined(__GLIBC__)
++/***************************************************************************
++ * Mimick GLIBC's res_ninit() and res_nclose() for musl libc
++ * Note: res_init() is actually deprecated according to
++ * http://docs.oracle.com/cd/E36784_01/html/E36875/res-nclose-3resolv.html
++ **************************************************************************/
++#include <string.h>
++
++static inline int res_ninit(res_state statp)
++{
++ int rc = res_init();
++ if (statp != &_res) {
++ memcpy(statp, &_res, sizeof(*statp));
++ }
++ return rc;
++}
++
++static inline int res_nclose(res_state statp)
++{
++ if (!statp)
++ return -1;
++ if (statp != &_res) {
++ memset(statp, 0, sizeof(*statp));
++ }
++ return 0;
++}
++#endif
++
+ /*
+ * resolver(3) and IPv6:
+ *
diff --git a/user/open-vm-tools/strerror_r.patch b/user/open-vm-tools/strerror_r.patch
new file mode 100644
index 000000000..05de85f7a
--- /dev/null
+++ b/user/open-vm-tools/strerror_r.patch
@@ -0,0 +1,25 @@
+--- open-vm-tools-12.4.0-23259341/lib/err/errPosix.c.old 2024-02-06 09:08:54.000000000 -0600
++++ open-vm-tools-12.4.0-23259341/lib/err/errPosix.c 2024-05-22 13:58:47.578938258 -0500
+@@ -29,6 +29,7 @@
+ #endif
+
+ #include <errno.h>
++#include <stdio.h>
+ #include <string.h>
+ #include <locale.h>
+
+@@ -63,10 +64,12 @@
+ {
+ char *p;
+
+-#if defined(__linux__) && !defined(__ANDROID__)
++#if defined(__linux__) && defined(__GLIBC__)
+ p = strerror_r(errorNumber, buf, bufSize);
+ #else
+- p = strerror(errorNumber);
++ if(strerror_r(errorNumber, buf, bufSize) != 0)
++ snprintf(buf, bufSize, "unknown error %i", errorNumber);
++ p = buf;
+ #endif
+ ASSERT(p != NULL);
+ return p;
diff --git a/user/open-vm-tools/time64.patch b/user/open-vm-tools/time64.patch
new file mode 100644
index 000000000..bc6bbb091
--- /dev/null
+++ b/user/open-vm-tools/time64.patch
@@ -0,0 +1,58 @@
+diff --git a/open-vm-tools/services/plugins/dndcp/fakeMouseWayland/fakeMouseWayland.cpp b/open-vm-tools/services/plugins/dndcp/fakeMouseWayland/fakeMouseWayland.cpp
+index 0311a4e7..4a231a4d 100644
+--- a/services/plugins/dndcp/fakeMouseWayland/fakeMouseWayland.cpp
++++ b/services/plugins/dndcp/fakeMouseWayland/fakeMouseWayland.cpp
+@@ -249,11 +249,14 @@ FakeMouse_Move(int x, // IN
+
+ bool retValue = true;
+ struct input_event event;
++ struct timeval tv;
+
+ event.type = EV_ABS;
+ event.code = ABS_X;
+ event.value = x;
+- gettimeofday(&event.time, NULL);
++ gettimeofday(&tv, NULL);
++ event.input_event_sec = tv.tv_sec;
++ event.input_event_usec = tv.tv_usec;
+ if (write(uinput_fd, &event, sizeof(event)) < 0) {
+ g_debug("Line:%d. Function:%s. Failed to write\n", __LINE__, __FUNCTION__);
+ retValue = false;
+@@ -262,7 +265,9 @@ FakeMouse_Move(int x, // IN
+ event.type = EV_ABS;
+ event.code = ABS_Y;
+ event.value = y;
+- gettimeofday(&event.time, NULL);
++ gettimeofday(&tv, NULL);
++ event.input_event_sec = tv.tv_sec;
++ event.input_event_usec = tv.tv_usec;
+ if (write(uinput_fd, &event, sizeof(event)) < 0) {
+ g_debug("Line:%d. Function:%s. Failed to write\n", __LINE__, __FUNCTION__);
+ retValue = false;
+@@ -271,7 +276,9 @@ FakeMouse_Move(int x, // IN
+ event.type = EV_SYN;
+ event.code = SYN_REPORT;
+ event.value = 0;
+- gettimeofday(&event.time, NULL);
++ gettimeofday(&tv, NULL);
++ event.input_event_sec = tv.tv_sec;
++ event.input_event_usec = tv.tv_usec;
+ if (write(uinput_fd, &event, sizeof(event)) < 0) {
+ g_debug("Line:%d. Function:%s. Failed to write\n", __LINE__, __FUNCTION__);
+ retValue = false;
+@@ -306,11 +313,14 @@ FakeMouse_Click(bool down) // IN
+
+ bool retValue = true;
+ struct input_event event;
++ struct timeval tv;
+
+ event.type = EV_KEY;
+ event.code = BTN_LEFT;
+ event.value = down;
+- gettimeofday(&event.time, NULL);
++ gettimeofday(&tv, NULL);
++ event.input_event_sec = tv.tv_sec;
++ event.input_event_usec = tv.tv_usec;
+ if (write(uinput_fd, &event, sizeof(event)) < 0) {
+ g_debug("Line:%d. Function:%s. Failed to write\n", __LINE__, __FUNCTION__);
+ retValue = false;
diff --git a/user/open-vm-tools/vgauth-portability.patch b/user/open-vm-tools/vgauth-portability.patch
new file mode 100644
index 000000000..ad484a8fd
--- /dev/null
+++ b/user/open-vm-tools/vgauth-portability.patch
@@ -0,0 +1,49 @@
+--- open-vm-tools-12.4.0-23259341/vgauth/common/VGAuthLog.c.old 2024-02-06 09:07:33.000000000 -0600
++++ open-vm-tools-12.4.0-23259341/vgauth/common/VGAuthLog.c 2024-05-22 14:27:07.008724455 -0500
+@@ -210,7 +210,7 @@
+ g_vsnprintf(buf, sizeof buf, fmt, args);
+ buf[sizeof buf - 1] = '\0';
+
+-#ifdef sun
++#ifndef __GLIBC__
+ strerror_r(code, errMsg, sizeof errMsg);
+ g_warning("[function %s, file %s, line %d], %s, [errno = %d], %s\n",
+ func, file, line, buf, code, errMsg);
+--- open-vm-tools-12.4.0-23259341/vgauth/lib/netPosix.c.old 2024-02-06 09:07:36.000000000 -0600
++++ open-vm-tools-12.4.0-23259341/vgauth/lib/netPosix.c 2024-05-22 14:26:11.458768814 -0500
+@@ -27,7 +27,6 @@
+ #include <sys/socket.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
+-#include <sys/unistd.h>
+ #include <sys/un.h>
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+--- open-vm-tools-12.4.0-23259341/vgauth/serviceImpl/netPosix.c.old 2024-02-06 09:07:35.000000000 -0600
++++ open-vm-tools-12.4.0-23259341/vgauth/serviceImpl/netPosix.c 2024-05-22 14:28:53.728639235 -0500
+@@ -27,7 +27,6 @@
+ #include <sys/socket.h>
+ #include <sys/stat.h>
+ #include <unistd.h>
+-#include <sys/unistd.h>
+ #include <sys/un.h>
+ #include <netinet/in.h>
+ #include <arpa/inet.h>
+--- open-vm-tools-12.4.0-23259341/vgauth/common/vmxrpc.c.old 2024-02-06 09:07:36.000000000 -0600
++++ open-vm-tools-12.4.0-23259341/vgauth/common/vmxrpc.c 2024-05-22 14:42:02.708035980 -0500
+@@ -76,13 +76,13 @@
+ typedef unsigned __int64 uint64;
+
+ #endif
+-#ifdef __linux__
++#if defined(__linux__) && defined(__GLIBC__)
+ typedef __uint32_t uint32;
+ typedef __uint64_t uint64;
+
+ #define SOCKET int
+ #endif
+-#ifdef sun
++#if (defined(__linux__) && !defined(__GLIBC__)) || defined(sun)
+ typedef uint32_t uint32;
+ typedef uint64_t uint64;
+
diff --git a/user/open-vm-tools/vgauthd.initd b/user/open-vm-tools/vgauthd.initd
new file mode 100644
index 000000000..8ab97f2c2
--- /dev/null
+++ b/user/open-vm-tools/vgauthd.initd
@@ -0,0 +1,6 @@
+#!/sbin/openrc-run
+
+pidfile="/run/vgauthd.pid"
+command="/usr/bin/VGAuthService"
+command_args="-s"
+command_background="true"
diff --git a/user/open-vm-tools/vix.patch b/user/open-vm-tools/vix.patch
new file mode 100644
index 000000000..9a12d0d76
--- /dev/null
+++ b/user/open-vm-tools/vix.patch
@@ -0,0 +1,11 @@
+--- open-vm-tools-12.4.0-23259341/services/plugins/vix/vixTools.c.old 2024-02-06 09:07:35.000000000 -0600
++++ open-vm-tools-12.4.0-23259341/services/plugins/vix/vixTools.c 2024-05-22 14:48:32.807786329 -0500
+@@ -66,7 +66,7 @@
+ #include <unistd.h>
+ #endif
+
+-#if defined(sun) || defined(__FreeBSD__) || defined(__APPLE__)
++#if defined(sun) || defined(__FreeBSD__) || defined(__APPLE__) || defined(__linux__)
+ #include <sys/stat.h>
+ #endif
+
diff --git a/user/open-vm-tools/vmtoolsd.pamd b/user/open-vm-tools/vmtoolsd.pamd
new file mode 100644
index 000000000..71fb8cc0d
--- /dev/null
+++ b/user/open-vm-tools/vmtoolsd.pamd
@@ -0,0 +1,6 @@
+# Welcome to Adélie Linux.
+
+# This file ensures VMware Tools uses the system-wide PAM configuration.
+
+auth include base-auth
+account include base-account
diff --git a/user/openal-soft/APKBUILD b/user/openal-soft/APKBUILD
index d5d32afe3..be2110585 100644
--- a/user/openal-soft/APKBUILD
+++ b/user/openal-soft/APKBUILD
@@ -1,26 +1,21 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
-# Maintainer:
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=openal-soft
-pkgver=1.19.1
+pkgver=1.23.1
pkgrel=0
pkgdesc="Software implementation of OpenAL API"
-url="https://kcat.strangesoft.net/openal.html"
+url="https://openal-soft.org/"
arch="all"
+options="!check" # No test suite.
license="LGPL-2.0+"
depends=""
depends_dev="alsa-lib-dev"
makedepends="$depends_dev cmake linux-headers pulseaudio-dev"
subpackages="$pkgname-dev"
-source="https://kcat.strangesoft.net/openal-releases/${pkgname}-${pkgver}.tar.bz2"
-
-prepare() {
- default_prepare
- mkdir -p "$builddir"/build
-}
+source="https://openal-soft.org/openal-releases/${pkgname}-${pkgver}.tar.bz2"
build() {
- local _cpuext_neon=""
- cd "$builddir"/build
+ _cpuext_neon=""
case "$CARCH" in
armhf) _cpuext_neon="-DALSOFT_CPUEXT_NEON=OFF" ;;
esac
@@ -28,18 +23,12 @@ build() {
-DCMAKE_INSTALL_PREFIX="/usr" \
-DCMAKE_INSTALL_LIBDIR="lib" \
$_cpuext_neon \
- "$builddir"
- make
-}
-
-check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ -Bbuild
+ make -C build
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="356a3f12bbe284bfac71f4f2a9f83d084083a832012222e73743042ac27812cf051c12b0ddcf53c010ff77e44ae2e9033cea9b9324d316a22a59a154307a64a4 openal-soft-1.19.1.tar.bz2"
+sha512sums="0d40577cd27040dc8814c15bacc310a0ce1c98e084f0a37db9f66899265df42ea61ac672efba7445e495849c25b9ba5b086f43320a38965f6ee74081b2896819 openal-soft-1.23.1.tar.bz2"
diff --git a/user/openbox/APKBUILD b/user/openbox/APKBUILD
index a062a6d26..7f763fdb1 100644
--- a/user/openbox/APKBUILD
+++ b/user/openbox/APKBUILD
@@ -17,13 +17,11 @@ source="http://openbox.org/dist/openbox/openbox-$pkgver.tar.gz
http://icculus.org/openbox/tools/setlayout.c"
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -35,12 +33,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
install "$builddir"/setlayout "$pkgdir"/usr/bin/setlayout
}
diff --git a/user/opencv/APKBUILD b/user/opencv/APKBUILD
index 0745f8a6a..9bd859b92 100644
--- a/user/opencv/APKBUILD
+++ b/user/opencv/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=opencv
-pkgver=4.0.1
-pkgrel=0
+pkgver=4.6.0
+pkgrel=1
pkgdesc="Computer vision and machine learning software library"
url="https://opencv.org"
arch="all"
@@ -11,55 +11,70 @@ license="BSD-3-Clause"
depends=""
makedepends="cmake doxygen ffmpeg-dev gst-plugins-base-dev gtk+2.0-dev
gtk+3.0-dev jasper-dev libdc1394-dev libgomp libgphoto2-dev
- libjpeg-turbo-dev libpng-dev libwebp-dev tiff-dev v4l-utils-dev"
+ libjpeg-turbo-dev libpng-dev libwebp-dev tiff-dev v4l-utils-dev
+ mawk protobuf-dev"
subpackages="$pkgname-dev $pkgname-libs"
-source="opencv-$pkgver.tar.gz::https://github.com/opencv/opencv/archive/$pkgver.tar.gz"
+source="opencv-$pkgver.tar.gz::https://github.com/opencv/opencv/archive/$pkgver.tar.gz
+ ade-0.1.1f.zip::https://github.com/opencv/ade/archive/v0.1.1f.zip
+ cmake-license.patch
+ fix-headers.manual-patch
+ "
+
+# secfixes:
+# 4.1.1-r1:
+# - CVE-2019-16249
prepare() {
- default_prepare
# purge 3rd party except carotene
for i in 3rdparty/*; do
case $i in
*/carotene*) continue;;
- */protobuf*) continue;;
*/ittnotify) continue;; # Else FTBFS on x86_64
*/quirc) continue;;
+ */include) continue;;
esac
rm -rf "$i"
done
mkdir -p build
+ mkdir -p .cache/ade
+ cp "$srcdir"/ade-0.1.1f.zip \
+ "$builddir"/.cache/ade/$(md5sum "$srcdir"/ade-0.1.1f.zip | awk '{print $1;}')-0.1.1f.zip
}
build() {
- cd "$builddir"/build
+ _sse=""
if [ "$CARCH" != "x86_64" ]; then
- local _sse="-DENABLE_SSE=OFF -DENABLE_SSE2=OFF"
+ _sse="-DENABLE_SSE=OFF -DENABLE_SSE2=OFF"
+ fi
+ if [ "$CARCH" = "ppc" ]; then
+ export LDFLAGS="$LDFLAGS -latomic"
fi
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
- -DCMAKE_CXX_FLAGS="$CXXFLAGS -U_FORTIFY_SOURCE" \
- -DCMAKE_C_FLAGS="$CFLAGS -U_FORTIFY_SOURCE" \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DBUILD_PROTOBUF=OFF \
+ -DPROTOBUF_UPDATE_FILES=ON \
-DENABLE_PRECOMPILED_HEADERS=OFF \
-DWITH_OPENMP=ON \
-DWITH_OPENCL=ON \
-DWITH_OPENEXR=OFF \
+ -DWITH_OPENJPEG=OFF \
-DWITH_IPP=OFF \
$_sse \
- ..
- make
-}
-
-check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ -Bbuild
+ patch -Np1 < "$srcdir"/fix-headers.manual-patch
+ make -C build
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="d74dd325029a67676dd2c7fdbecb2b14cb531441b2a1b74fc1ebe6db096ea87c12801c8b997ebbe280fbd401311c0220133a0c29911b0dae82cb93453be0b2b0 opencv-4.0.1.tar.gz"
+sha512sums="93d7807794682990b6a1d1de1851986ae3c5d1afe6605f3f8cace03ba5e3390bee2568bc0f335af34d3fc974df64cbce0ce685261ec2abd693d259b97b15bc46 opencv-4.6.0.tar.gz
+f2994d5e92a2ae05cee6e153943afe151ce734ced6e06dcdb02dee9fed9336a7f1ea69661d9e033f1412fbb5e2a44a6e641662c85be5ba0604d0446abeabe836 ade-0.1.1f.zip
+ffa6930086051c545a44d28b8e428de7faaeecf961cdee6eef007b2b01db7e5897c6f184b1059df9763c1bcd90f88b9ead710dc13b51a608f21d683f55f39bd6 cmake-license.patch
+c1ba6c7b66edc747a2bddd622787f75eb5edd9ef65a2da9a1bbf432fad97fdfe293f0b16631085006299e7e74468d601b942ecdc389997e9e64dee16c082648f fix-headers.manual-patch"
diff --git a/user/opencv/cmake-license.patch b/user/opencv/cmake-license.patch
new file mode 100644
index 000000000..be40f4edf
--- /dev/null
+++ b/user/opencv/cmake-license.patch
@@ -0,0 +1,12 @@
+We remove the 3rdparty dir in build, and we don't need the OpenCL license.
+
+--- opencv-4.1.0/cmake/OpenCVDetectOpenCL.cmake.old 2019-04-07 17:09:10.000000000 +0000
++++ opencv-4.1.0/cmake/OpenCVDetectOpenCL.cmake 2019-07-20 20:21:37.467680107 +0000
+@@ -5,7 +5,6 @@
+ else()
+ set(OPENCL_LIBRARY "" CACHE STRING "OpenCL library")
+ set(OPENCL_INCLUDE_DIR "${OpenCV_SOURCE_DIR}/3rdparty/include/opencl/1.2" CACHE PATH "OpenCL include directory")
+- ocv_install_3rdparty_licenses(opencl-headers "${OpenCV_SOURCE_DIR}/3rdparty/include/opencl/LICENSE.txt")
+ endif()
+ mark_as_advanced(OPENCL_INCLUDE_DIR OPENCL_LIBRARY)
+
diff --git a/user/opencv/fix-headers.manual-patch b/user/opencv/fix-headers.manual-patch
new file mode 100644
index 000000000..9a3eb8542
--- /dev/null
+++ b/user/opencv/fix-headers.manual-patch
@@ -0,0 +1,12 @@
+Required header for GCC 13.
+
+--- opencv-4.6.0/build/3rdparty/ade/ade-0.1.1f/sources/ade/include/ade/typed_graph.hpp.old 2019-08-07 03:55:16.000000000 -0500
++++ opencv-4.6.0/build/3rdparty/ade/ade-0.1.1f/sources/ade/include/ade/typed_graph.hpp 2024-05-28 16:39:53.217246004 -0500
+@@ -11,6 +11,7 @@
+
+ #include <unordered_set>
+ #include <string>
++#include <cstdint>
+
+ #include <array>
+
diff --git a/user/opengfx/APKBUILD b/user/opengfx/APKBUILD
index e3f0dbaaf..1612ced28 100644
--- a/user/opengfx/APKBUILD
+++ b/user/opengfx/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=opengfx
-pkgver=0.5.5
+pkgver=7.1
pkgrel=0
pkgdesc="Graphics files for OpenTTD"
url="https://www.openttd.org/en/"
@@ -9,26 +9,20 @@ arch="noarch"
options="!check" # Requires GIMP
license="GPL-2.0-only"
depends=""
-makedepends="grfcodec nml"
+makedepends="grfcodec nml dos2unix cmd:which"
subpackages=""
-source="https://binaries.openttd.org/extra/opengfx/$pkgver/$pkgname-$pkgver-source.tar.xz
- Makefile.patch
- "
+source="https://cdn.openttd.org/$pkgname-releases/$pkgver/$pkgname-$pkgver-source.tar.xz"
builddir="$srcdir/$pkgname-$pkgver-source"
build() {
- cd "$builddir"
make GIMP="" _V="" bundle_tar
}
package() {
- cd "$builddir"
- local _file
for _file in *.grf opengfx.obg; do
install -D -m644 -g games $_file \
"$pkgdir"/usr/share/games/openttd/data/$_file
done
}
-sha512sums="952fb52e19bd790e335a9df0f11fa29b2fc570b49903419904956cc65883adde93d432160b16682366ab8b973b7852d2d30f574f1840f6fbd082e1addbe5bfe8 opengfx-0.5.5-source.tar.xz
-a337ab4ade493a87d2687a7aa2fb05dcd5718725645950486975a6df309dd1e6631d4b04fa6dcbf590e869b45b037caa32468ea6f677ce458d61950f77c5a006 Makefile.patch"
+sha512sums="55079babcd78d4a36279cb7610b6800308aca8409ed3b9fa33cd4993b0c1f988d7afe270b17930b97609c4fdf8cf4e362e17c11bd85d2ef136d042256c98483f opengfx-7.1-source.tar.xz"
diff --git a/user/opengfx/Makefile.patch b/user/opengfx/Makefile.patch
deleted file mode 100644
index 1e4585311..000000000
--- a/user/opengfx/Makefile.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- opengfx-0.5.3-source/Makefile
-+++ opengfx-0.5.3-source/Makefile
-@@ -99,8 +99,8 @@
- AWK ?= awk
- GREP ?= grep
- PYTHON ?= python
--UNIX2DOS ?= $(shell which unix2dos)
--UNIX2DOS_FLAGS ?= $(shell [ -n $(UNIX2DOS) ] && $(UNIX2DOS) -q --version 2>/dev/null && echo "-q" || echo "")
-+UNIX2DOS ?= $(shell which unix2dos 2>/dev/null)
-+UNIX2DOS_FLAGS ?= $(shell [ -n $(UNIX2DOS) ] && $(UNIX2DOS) -q --version 2>/dev/null >&2 && echo "-q" || echo "")
-
- # Graphics processing
- GIMP ?= gimp
-@@ -719,7 +719,7 @@
- $(_E)
- endif
- $(_E) "Release:"
-- $(_E) "bananas: Upload bundle to BaNaNaS
-+ $(_E) "bananas: Upload bundle to BaNaNaS"
- $(_E)
- $(_E) "Valid command line variables are:"
- $(_E) "Helper programmes:"
diff --git a/user/openjdk7/APKBUILD b/user/openjdk7/APKBUILD
deleted file mode 100644
index bf05b670f..000000000
--- a/user/openjdk7/APKBUILD
+++ /dev/null
@@ -1,286 +0,0 @@
-# Contributor: Timo Teras <timo.teras@iki.fi>
-# Contributor: Jakub Jirutka <jakub@jirutka.cz>
-# Maintainer: Timo Teras <timo.teras@iki.fi>
-pkgname=openjdk7
-_icedteaver=2.6.16
-# pkgver is <JDK version>.<JDK update>
-# check icedtea JDK when updating
-pkgver=7.201.$_icedteaver
-pkgrel=0
-pkgdesc="OpenJDK 7 via IcedTea"
-url="https://icedtea.classpath.org/"
-arch="all"
-license="GPL-2.0-only WITH Classpath-exception-2.0"
-depends="$pkgname-jre java-cacerts"
-options="sover-namecheck"
-makedepends="bash findutils zip file mawk util-linux libxslt
- autoconf automake linux-headers coreutils cmd:which
- ca-certificates
- nss-dev cups-dev libjpeg-turbo-dev giflib-dev libpng-dev libxt-dev
- lcms2-dev libxp-dev libxtst-dev libxinerama-dev zlib-dev
- libxrender-dev alsa-lib-dev freetype-dev fontconfig-dev
- gtk+2.0-dev krb5-dev attr-dev pcsc-lite-dev lksctp-tools-dev
- libxcomposite-dev nss-static"
-install=""
-
-# upstream binary versions
-RHINO_VER=1.7.7.2
-ANT_VER=1.9.11
-
-case $CARCH in
-x86|pmmx) _jarch=i386;;
-x86_64) _jarch=amd64;;
-aarch64) _jarch=aarch64;;
-arm*) _jarch=arm
- # openjdk has quite a bit of arm assembly producing textrels
- # and it's non trivial to fix. allow it for now.
- options="$options textrels";;
-s390x) _jarch=s390x;;
-ppc64le) _jarch=ppc64le;;
-ppc64) _jarch=ppc64
- export CFLAGS="$CFLAGS -DABI_ELFv2";;
-ppc) _jarch=ppc;;
-esac
-
-INSTALL_BASE=/usr/lib/jvm/java-1.7-openjdk
-_jrelib="$INSTALL_BASE/jre/lib/$_jarch"
-
-# exclude xawt from ldpath to avoid duplicate provides for libmawt.so
-# (also in headless). in future this should be a virtual provides.
-ldpath="$_jrelib:$_jrelib/native_threads:$_jrelib/headless:$_jrelib/server:$_jrelib/jli"
-sonameprefix="$pkgname:"
-
-subpackages="$pkgname-jre-lib:jrelib:noarch $pkgname-jre $pkgname-jre-base:jrebase
- $pkgname-doc:doc"
-
-if [ "$BOOTSTRAP" != "no" ]; then
- makedepends="$makedepends java-gcj-compat"
- BOOTSTRAP_JAVA_HOME=/usr/lib/jvm/java-1.5-gcj/
-else
- makedepends="$makedepends $pkgname"
- BOOTSTRAP_JAVA_HOME="$INSTALL_BASE"
-fi
-
-_dropsver=$_icedteaver
-_dropsurl=https://icedtea.classpath.org/download/drops/icedtea7/$_dropsver
-
-source="https://icedtea.classpath.org/download/source/icedtea-$_icedteaver.tar.gz
- openjdk-$_dropsver.tar.bz2::$_dropsurl/openjdk.tar.bz2
- corba-$_dropsver.tar.bz2::$_dropsurl/corba.tar.bz2
- jaxp-$_dropsver.tar.bz2::$_dropsurl/jaxp.tar.bz2
- jaxws-$_dropsver.tar.bz2::$_dropsurl/jaxws.tar.bz2
- jdk-$_dropsver.tar.bz2::$_dropsurl/jdk.tar.bz2
- langtools-$_dropsver.tar.bz2::$_dropsurl/langtools.tar.bz2
- hotspot-$_dropsver.tar.bz2::$_dropsurl/hotspot.tar.bz2
- https://archive.apache.org/dist/ant/binaries/apache-ant-$ANT_VER-bin.tar.gz
- https://github.com/mozilla/rhino/releases/download/Rhino${RHINO_VER//./_}_Release/rhino-$RHINO_VER.zip
-
- icedtea-hotspot-musl.patch
- icedtea-hotspot-musl-ppc.patch
- icedtea-hotspot-noagent-musl.patch
- icedtea-hotspot-uclibc-fixes.patch
- icedtea-jdk-fix-build.patch
- icedtea-jdk-execinfo.patch
- icedtea-jdk-fix-ipv6-init.patch
- icedtea-jdk-musl.patch
- icedtea-jdk-no-soname.patch
- icedtea-cpio.patch
- icedtea-tar.patch
- icedtea-remove-gawk.patch
- icedtea-xattr.patch
- remove-gawk.patch
- xattr.patch
- "
-
-# secfixes:
-# 7.201.2.6.16-r0:
-# - CVE-2018-3136
-# - CVE-2018-3139
-# - CVE-2018-3149
-# - CVE-2018-3169
-# - CVE-2018-3180
-# - CVE-2018-3214
-# - CVE-2018-13785
-
-builddir="$srcdir/icedtea-$_icedteaver"
-
-unpack() {
- if [ -z "$force" ]; then
- verify
- initdcheck
- fi
- mkdir -p "$srcdir"
- msg "Unpacking sources..."
- tar -C "$srcdir" -zxf icedtea-$_icedteaver.tar.gz
- tar -C "$srcdir" -zxf apache-ant-$ANT_VER-bin.tar.gz
- unzip -o -q "rhino-$RHINO_VER.zip" -d "$srcdir"
-}
-
-prepare() {
- cd "$builddir"
-
- # Busybox sha256 does not support longopts
- sed -e "s/--check/-c/g" -i Makefile.am
-
- for patch in $source; do
- case $patch in
- icedtea-*.patch)
- cp ../$patch patches
- ;;
- *.patch)
- msg "Applying patch $patch"
- patch -p1 -i "$srcdir"/$patch
- ;;
- esac
- done
-
- ./autogen.sh
-}
-
-build() {
- [ -z "$JOBS" ] && export JOBS=$(echo $MAKEFLAGS | sed -n -e 's/.*-j\([0-9]\+\).*/\1/p')
- export ALT_PARALLEL_COMPILE_JOBS="${JOBS:-2}"
- export HOTSPOT_BUILD_JOBS="${JOBS:-2}"
-
- export JAVA_HOME=$BOOTSTRAP_JAVA_HOME
- export PATH=$JAVA_HOME/bin:$srcdir/apache-ant-$ANT_VER/bin:$PATH
- export DISTRIBUTION_PATCHES=""
-
- # Explicitly set the C++ standard as the default has changed on GCC 6+
- # and disable optimizations that lead to a broken JVM. These options
- # has been adopted from the Fedora package.
- export EXTRA_CPP_FLAGS="$CXXFLAGS -std=gnu++98 -fno-delete-null-pointer-checks -fno-lifetime-dse -fno-strict-overflow"
- # CXXFLAGS doesn't make it to all calls, so we set the C++ standard
- # version for C too.
- export EXTRA_CFLAGS="$CFLAGS -std=gnu++98 -Wno-error -fno-delete-null-pointer-checks -fno-lifetime-dse -fno-strict-overflow"
-
- local patch
- for patch in $source; do
- case $patch in
- icedtea-*.patch)
- export DISTRIBUTION_PATCHES="$DISTRIBUTION_PATCHES patches/$patch"
- ;;
- esac
- done
- echo "icedtea patches: $DISTRIBUTION_PATCHES"
-
- # --disable-arm32-jit: https://icedtea.classpath.org/bugzilla/show_bug.cgi?id=2942
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=$INSTALL_BASE \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --infodir=/usr/share/info \
- --localstatedir=/var \
- --with-parallel-jobs=${JOBS:-2} \
- --disable-dependency-tracking \
- --disable-downloading \
- --disable-arm32-jit \
- --with-rhino=$srcdir/rhino$RHINO_VER/lib/rhino-$RHINO_VER.jar \
- --with-openjdk-src-zip=$srcdir/openjdk-$_dropsver.tar.bz2 \
- --with-hotspot-src-zip=$srcdir/hotspot-$_dropsver.tar.bz2 \
- --with-corba-src-zip=$srcdir/corba-$_dropsver.tar.bz2 \
- --with-jaxp-src-zip=$srcdir/jaxp-$_dropsver.tar.bz2 \
- --with-jaxws-src-zip=$srcdir/jaxws-$_dropsver.tar.bz2 \
- --with-jdk-src-zip=$srcdir/jdk-$_dropsver.tar.bz2 \
- --with-langtools-src-zip=$srcdir/langtools-$_dropsver.tar.bz2 \
- --with-jdk-home=$BOOTSTRAP_JAVA_HOME \
- --with-pkgversion="Adelie ${pkgver}-r${pkgrel}"
-
- msg "Icedtea boot"
- make -j1 icedtea-boot SHELL=/bin/bash
- msg "Icedtea boot done"
- make
-}
-
-package() {
- mkdir -p "$pkgdir"/$INSTALL_BASE
- cp -a "$builddir"/openjdk.build/j2sdk-image/* "$pkgdir"/$INSTALL_BASE
- rm "$pkgdir"/$INSTALL_BASE/src.zip
-
- # symlink to shared java cacerts store
- rm -f "$pkgdir"/$INSTALL_BASE/jre/lib/security/cacerts
- ln -sf /etc/ssl/certs/java/cacerts \
- "$pkgdir"/$INSTALL_BASE/jre/lib/security/cacerts
-}
-
-jrelib() {
- pkgdesc="OpenJDK 7 Java Runtime (class libraries)"
- depends=""
-
- local A; for A in jre/lib/zi jre/lib/images jre/lib/*.jar \
- jre/lib/security jre/lib/ext/*.jar jre/lib/cmm \
- jre/ASSEMBLY_EXCEPTION jre/THIRD_PARTY_README jre/LICENSE; do
-
- local dirname=${A%/*}
- mkdir -p "$subpkgdir"/$INSTALL_BASE/$dirname
- mv "$pkgdir"/$INSTALL_BASE/$A "$subpkgdir"/$INSTALL_BASE/$dirname
- done
-}
-
-jrebase() {
- pkgdesc="OpenJDK 7 Java Runtime (no GUI support)"
- depends="$pkgname-jre-lib java-common java-cacerts"
-
- mkdir -p "$subpkgdir"/$INSTALL_BASE/bin
-
- local A; for A in java orbd rmid servertool unpack200 keytool \
- pack200 rmiregistry tnameserv; do
- mv "$pkgdir"/$INSTALL_BASE/bin/$A "$subpkgdir"/$INSTALL_BASE/bin
- done
-
- # rest of the jre subdir (which were not taken by -jre subpkg)
- mv "$pkgdir"/$INSTALL_BASE/jre "$subpkgdir"/$INSTALL_BASE
-}
-
-jre() {
- pkgdesc="OpenJDK 7 Java Runtime"
- # manually depend to avoid clash with libgcj's libjvm.so
- depends="so:openjdk7:libjvm.so=0"
-
- mkdir -p "$subpkgdir"
- local A; for A in jre/bin/policytool \
- bin/appletviewer \
- bin/policytool \
- jre/lib/$_jarch/xawt \
- jre/lib/$_jarch/libsplashscreen.so; do
-
- local dirname=${A%/*}
- mkdir -p "$subpkgdir"/$INSTALL_BASE/$dirname
- mv "$pkgdir"/$INSTALL_BASE/$A "$subpkgdir"/$INSTALL_BASE/$dirname
- done
-}
-
-doc() {
- default_doc
- mkdir -p "$subpkgdir"/$INSTALL_BASE/
- mv "$pkgdir"/$INSTALL_BASE/man "$subpkgdir"/$INSTALL_BASE/
-}
-
-sha512sums="cc782e1c5b1ce158be315cff5be61676373870c2062eb34688583a875ab68413bbabd909ce83e79a9c46c3d0c8ec10aad3c015276ddf782ce2079cb5a7098f82 icedtea-2.6.16.tar.gz
-ee2443da63ab6b1a525d0633a577f28d28d3916cb47b312d61d71b4795ae3bde4a70478017b7639133fb65cfb63aa0fcbc397afbde18f20d605a50286163e4a2 openjdk-2.6.16.tar.bz2
-3926a1c889d0ff5386dd78e8fb1ff71b553744fe574ab9655d9e1677da9aea3306d65e631866afcbb533b8e0fefbb34ae655400c9bc7c2058aaa34f8fb0a04d8 corba-2.6.16.tar.bz2
-2b37ba6f235b684682d9590c292b6af5fb6f41d4001f92dcf4945570e13fe760f91bbc7068d071e3e935829c9719936ae96940874ee211fd32cba187e05f0255 jaxp-2.6.16.tar.bz2
-41dc2b7a610cd5f4c9155c14670bb97f1c57924af2737faf6beb7b284c0ad7c0f0b33f4276cde5674a57db3f88ba4503f94f2dff7a52db3273ee53ed0b14be64 jaxws-2.6.16.tar.bz2
-2703b7bf7455aa3997426f2ce3d4c2285ee44640a940d15c1c3434414c295d87b44e749fece5a7b966661910c8768a79774fb03b43ab5605df9dc8965b600fd7 jdk-2.6.16.tar.bz2
-192dd5fac399c52bcb547617832428b40af493089b4bb63159cd9363c78af76c7acdc051d461eb4e4692b2090e05ed769b9fec460a328973b36b57bbb28cee39 langtools-2.6.16.tar.bz2
-73b0338ec293d0d87cc7251f63ef453ec10c7de978c56d8ff455b16ee0506175aed681a9a95fbdcc8b747ba00ef6cf914f63d0c5d22268b40620d4dbc7390a98 hotspot-2.6.16.tar.bz2
-0da12cb0f761b8cb76e042449e7d93f43236e7bc948e337215470a70031f0a2dda6d1b508f9397b283808d84c4ebddb31558fe1cd8e6e6469c1dd390d69ec6e7 apache-ant-1.9.11-bin.tar.gz
-1b9e8721749e81c5420a00af1e00ee0e4f48624ccb4e9aa969032114116ad50f59b254d4d16d74feff74de64157cc8b0a2ead9b555907c84b7055b796fba9a75 rhino-1.7.7.2.zip
-f62b942f0bacda8e37d0f1876d8ba14ddb4fc55a7d5fd1019463744927f40f422a85e9ee051948d566242f5a785aa28f275eb58768611283cba89af91235f43c icedtea-hotspot-musl.patch
-e5cf4d70f96fc1e72ae8b97a887adb96092ff36584711cbb8de9d9fa9e859cb8731d638838de0d9591239fc44ffe5c74422d1842bd9f10a0c00dff1627bdeeef icedtea-hotspot-musl-ppc.patch
-e7a2c1771bb582d427041f8d22e48c0daf8f20d7c0926cbce3549d49c4e949359ee25a35682b486e82f3e390535c950c5beee3bd8d06fb5a717b50f2d9b2a6bc icedtea-hotspot-noagent-musl.patch
-822eee0dc4d3ba677a289dfeb3668b536d2d626708390a9d9702fb4144a481fd443a215a0d2041c6026113837aafa4ba0b5e9ead8589d2da6717a238bbc95a5a icedtea-hotspot-uclibc-fixes.patch
-213a537de5f011cb39d608515c3413513ac75fb93593f9a9ef4205f71d72bdd8b097c80db185f7b26021d5bb85045b866f34f3478482dc4189972d8614a13458 icedtea-jdk-fix-build.patch
-0391970e6a32946aa3cccf38fdef9c0fe2af26cd0df824b98aa2fcfa1bf661d4a68e339bffcfd16f386c565fc68bb28a29208a67d4bad8a0e847ad02bd8becbb icedtea-jdk-execinfo.patch
-48533f87fc2cf29d26b259be0df51087d2fe5b252e72d00c6ea2f4add7b0fb113141718c116279c5905e03f64a1118082e719393786811367cf4d472b5d36774 icedtea-jdk-fix-ipv6-init.patch
-44a35941c80f408d0607e32763b3b6ccee21e1d39886309327d3d74d2900117e4346ef59e77c663fd022fec10ee8f365eeb46c1260014d5765d226ce175ce3c5 icedtea-jdk-musl.patch
-bf4b184e170f7b0ff64ab30d2162784fe2bd5460d1fa31973259f7065fd4c511c46f97724fe2bd72bb94e9006cb568d0e0c87d1a9c90819e65880f8f44830bb1 icedtea-jdk-no-soname.patch
-a54c79c82afa1bc95265397b274260584c8b8c6be1651ddfb907d9523a809ea4581409e0d3fb0bbb63ef5a204e8ce29b7940e78cd640af1f490ae938c59129b6 icedtea-cpio.patch
-dc5f59068395e9501b17308c91ec80670c195117e22cb7bef78d551d118f180a11d7f0b5d47f4c7106909d9a9a8c060ddd60b78f251fd35afa6c72a1515af53e icedtea-tar.patch
-049061b97d6e744b7ad9bad4a3dbfa1d236400003175e49740830dcb78a1f164b5c67b066e76c970eb27e09707f948cac0f5b7073abe0f49bcecfdd747f0107d icedtea-remove-gawk.patch
-b9950ddf9c5ebb53d1e029a1fe8ef843860128ceb05872313b33fd2696a4acadbc8291110ca6513ce7531e0f943e42b167068e603f7ecd0e36f5b16d6bb827ab icedtea-xattr.patch
-fda1ba46276475cced16c4f380dbc0a0ac07ae2d66a8da10e88455a299bd40ff04a63dae1c5f3d3de6adbb3c6c240db5d37df0be2fc3391764cb21c9ad83eb8b remove-gawk.patch
-3dd758e04e3b852398d81356c02a89afce0c664938d3f0179ee32e358d7057f5f969379329dd1ebcbf4bc3d37bd5e0d94102cd3f023326db5175968cfbbc9c35 xattr.patch"
diff --git a/user/openjdk7/icedtea-cpio.patch b/user/openjdk7/icedtea-cpio.patch
deleted file mode 100644
index c66c1ca60..000000000
--- a/user/openjdk7/icedtea-cpio.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- openjdk/jdk/make/common/shared/Defs-utils.gmk.orig
-+++ openjdk/jdk/make/common/shared/Defs-utils.gmk
-@@ -104,7 +104,7 @@
- COMM = $(UTILS_USR_BIN_PATH)comm
- COMPRESS = $(UTILS_USR_BIN_PATH)compress
- CP = $(UTILS_COMMAND_PATH)cp
--CPIO = $(UTILS_COMMAND_PATH)cpio
-+CPIO = $(UTILS_USR_BIN_PATH)cpio
- CUT = $(UTILS_USR_BIN_PATH)cut
- DATE = $(UTILS_COMMAND_PATH)date
- DF = $(UTILS_COMMAND_PATH)df
diff --git a/user/openjdk7/icedtea-hotspot-musl-ppc.patch b/user/openjdk7/icedtea-hotspot-musl-ppc.patch
deleted file mode 100644
index eca684884..000000000
--- a/user/openjdk7/icedtea-hotspot-musl-ppc.patch
+++ /dev/null
@@ -1,169 +0,0 @@
---- openjdk.orig/hotspot/src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp
-+++ openjdk/hotspot/src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp
-@@ -110,11 +110,19 @@
- // it because the volatile registers are not needed to make setcontext() work.
- // Hopefully it was zero'd out beforehand.
- guarantee(uc->uc_mcontext.regs != NULL, "only use ucontext_get_pc in sigaction context");
-+#if defined(__GLIBC__) || defined(__UCLIBC__)
- return (address)uc->uc_mcontext.regs->nip;
-+#else // Musl
-+ return (address)uc->uc_mcontext.gp_regs[32];
-+#endif
- }
-
- intptr_t* os::Linux::ucontext_get_sp(ucontext_t * uc) {
-+#if defined(__GLIBC__) || defined(__UCLIBC__)
- return (intptr_t*)uc->uc_mcontext.regs->gpr[1/*REG_SP*/];
-+#else // Musl
-+ return (intptr_t*)uc->uc_mcontext.gp_regs[1/*REG_SP*/];
-+#endif
- }
-
- intptr_t* os::Linux::ucontext_get_fp(ucontext_t * uc) {
-@@ -213,7 +221,11 @@
- if (uc) {
- address const pc = os::Linux::ucontext_get_pc(uc);
- if (pc && StubRoutines::is_safefetch_fault(pc)) {
-+#if defined(__GLIBC__) || defined(__UCLIBC__)
- uc->uc_mcontext.regs->nip = (unsigned long)StubRoutines::continuation_for_safefetch_fault(pc);
-+#else // Musl
-+ uc->uc_mcontext.gp_regs[32] = (unsigned long)StubRoutines::continuation_for_safefetch_fault(pc);
-+#endif
- return true;
- }
- }
-@@ -364,7 +376,11 @@
- // continue at the next instruction after the faulting read. Returning
- // garbage from this read is ok.
- thread->set_pending_unsafe_access_error();
-+#if defined(__GLIBC__) || defined(__UCLIBC__)
- uc->uc_mcontext.regs->nip = ((unsigned long)pc) + 4;
-+#else // Musl
-+ uc->uc_mcontext.gp_regs[32] = ((unsigned long)pc) + 4;
-+#endif
- return true;
- }
- }
-@@ -383,7 +399,11 @@
- // continue at the next instruction after the faulting read. Returning
- // garbage from this read is ok.
- thread->set_pending_unsafe_access_error();
-+#if defined(__GLIBC__) || defined(__UCLIBC__)
- uc->uc_mcontext.regs->nip = ((unsigned long)pc) + 4;
-+#else // Musl
-+ uc->uc_mcontext.gp_regs[32] = ((unsigned long)pc) + 4;
-+#endif
- return true;
- }
- }
-@@ -406,7 +426,11 @@
- if (stub != NULL) {
- // Save all thread context in case we need to restore it.
- if (thread != NULL) thread->set_saved_exception_pc(pc);
-+#if defined(__GLIBC__) || defined(__UCLIBC__)
- uc->uc_mcontext.regs->nip = (unsigned long)stub;
-+#else
-+ uc->uc_mcontext.gp_regs[32] = (unsigned long)stub;
-+#endif
- return true;
- }
-
-@@ -564,6 +588,7 @@
- ucontext_t* uc = (ucontext_t*)context;
-
- st->print_cr("Registers:");
-+#if defined(__GLIBC__) || defined(__UCLIBC__)
- st->print("pc =" INTPTR_FORMAT " ", uc->uc_mcontext.regs->nip);
- st->print("lr =" INTPTR_FORMAT " ", uc->uc_mcontext.regs->link);
- st->print("ctr=" INTPTR_FORMAT " ", uc->uc_mcontext.regs->ctr);
-@@ -572,8 +597,18 @@
- st->print("r%-2d=" INTPTR_FORMAT " ", i, uc->uc_mcontext.regs->gpr[i]);
- if (i % 3 == 2) st->cr();
- }
-+#else // Musl
-+ st->print("pc =" INTPTR_FORMAT " ", uc->uc_mcontext.gp_regs[32]);
-+ st->print("lr =" INTPTR_FORMAT " ", uc->uc_mcontext.gp_regs[36]);
-+ st->print("ctr=" INTPTR_FORMAT " ", uc->uc_mcontext.gp_regs[35]);
- st->cr();
-+ for (int i = 0; i < 32; i++) {
-+ st->print("r%-2d=" INTPTR_FORMAT " ", i, uc->uc_mcontext.gp_regs[i]);
-+ if (i % 3 == 2) st->cr();
-+ }
-+#endif
- st->cr();
-+ st->cr();
-
- intptr_t *sp = (intptr_t *)os::Linux::ucontext_get_sp(uc);
- st->print_cr("Top of Stack: (sp=" PTR_FORMAT ")", p2i(sp));
-@@ -600,7 +635,11 @@
- // this is only for the "general purpose" registers
- for (int i = 0; i < 32; i++) {
- st->print("r%-2d=", i);
-+#if defined(__GLIBC__) || defined(__UCLIBC__)
- print_location(st, uc->uc_mcontext.regs->gpr[i]);
-+#else // Musl
-+ print_location(st, uc->uc_mcontext.gp_regs[i]);
-+#endif
- }
- st->cr();
- }
---- openjdk.orig/hotspot.orig/src/cpu/ppc/vm/macroAssembler_ppc.cpp
-+++ openjdk/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp
-@@ -1242,7 +1242,11 @@
- // the safepoing polling page.
- ucontext_t* uc = (ucontext_t*) ucontext;
- // Set polling address.
-+#if defined(__GLIBC__) || defined(__UCLIBC__)
- address addr = (address)uc->uc_mcontext.regs->gpr[ra] + (ssize_t)ds;
-+#else // Musl
-+ address addr = (address)uc->uc_mcontext.gp_regs[ra] + (ssize_t)ds;
-+#endif
- if (polling_address_ptr != NULL) {
- *polling_address_ptr = addr;
- }
-@@ -1263,15 +1267,24 @@
- int rb = inv_rb_field(instruction);
-
- // look up content of ra and rb in ucontext
-+#if defined(__GLIBC__) || defined(__UCLIBC__)
- address ra_val=(address)uc->uc_mcontext.regs->gpr[ra];
- long rb_val=(long)uc->uc_mcontext.regs->gpr[rb];
-+#else // Musl
-+ address ra_val=(address)uc->uc_mcontext.gp_regs[ra];
-+ long rb_val=(long)uc->uc_mcontext.gp_regs[rb];
-+#endif
- return os::is_memory_serialize_page(thread, ra_val+rb_val);
- } else if (is_stw(instruction) || is_stwu(instruction)) {
- int ra = inv_ra_field(instruction);
- int d1 = inv_d1_field(instruction);
-
- // look up content of ra in ucontext
-+#if defined(__GLIBC__) || defined(__UCLIBC__)
- address ra_val=(address)uc->uc_mcontext.regs->gpr[ra];
-+#else // Musl
-+ address ra_val=(address)uc->uc_mcontext.gp_regs[ra];
-+#endif
- return os::is_memory_serialize_page(thread, ra_val+d1);
- } else {
- return false;
-@@ -1334,11 +1347,20 @@
- || (is_stdu(instruction) && rs == 1)) {
- int ds = inv_ds_field(instruction);
- // return banged address
-+#if defined(__GLIBC__) || defined(__UCLIBC__)
- return ds+(address)uc->uc_mcontext.regs->gpr[ra];
-+#else // Musl
-+ return ds+(address)uc->uc_mcontext.gp_regs[ra];
-+#endif
- } else if (is_stdux(instruction) && rs == 1) {
- int rb = inv_rb_field(instruction);
-+#if defined(__GLIBC__) || defined(__UCLIBC__)
- address sp = (address)uc->uc_mcontext.regs->gpr[1];
- long rb_val = (long)uc->uc_mcontext.regs->gpr[rb];
-+#else // Musl
-+ address sp = (address)uc->uc_mcontext.gp_regs[1];
-+ long rb_val = (long)uc->uc_mcontext.gp_regs[rb];
-+#endif
- return ra != 1 || rb_val >= 0 ? NULL // not a stack bang
- : sp + rb_val; // banged address
- }
diff --git a/user/openjdk7/icedtea-hotspot-musl.patch b/user/openjdk7/icedtea-hotspot-musl.patch
deleted file mode 100644
index 1da903148..000000000
--- a/user/openjdk7/icedtea-hotspot-musl.patch
+++ /dev/null
@@ -1,79 +0,0 @@
---- openjdk.orig/hotspot/src/os/linux/vm/jvm_linux.cpp
-+++ openjdk/hotspot/src/os/linux/vm/jvm_linux.cpp
-@@ -154,7 +154,9 @@
- #ifdef SIGSTKFLT
- "STKFLT", SIGSTKFLT, /* Stack fault. */
- #endif
-+#ifdef SIGCLD
- "CLD", SIGCLD, /* Same as SIGCHLD (System V). */
-+#endif
- "CHLD", SIGCHLD, /* Child status has changed (POSIX). */
- "CONT", SIGCONT, /* Continue (POSIX). */
- "STOP", SIGSTOP, /* Stop, unblockable (POSIX). */
---- openjdk.orig/hotspot/src/os/linux/vm/os_linux.inline.hpp
-+++ openjdk/hotspot/src/os/linux/vm/os_linux.inline.hpp
-@@ -52,7 +52,7 @@
-
- #include <unistd.h>
- #include <sys/socket.h>
--#include <sys/poll.h>
-+#include <poll.h>
- #include <netdb.h>
-
- inline void* os::thread_local_storage_at(int index) {
---- openjdk.orig/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
-+++ openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
-@@ -73,7 +73,6 @@
- # include <pwd.h>
- # include <poll.h>
- # include <ucontext.h>
--# include <fpu_control.h>
-
- #ifdef AMD64
- #define REG_SP REG_RSP
-@@ -533,6 +532,9 @@
- ShouldNotReachHere();
- return true; // Mute compiler
- }
-+
-+#define _FPU_GETCW(cw) __asm__ __volatile__ ("fnstcw %0" : "=m" (*&cw))
-+#define _FPU_SETCW(cw) __asm__ __volatile__ ("fldcw %0" : : "m" (*&cw))
-
- void os::Linux::init_thread_fpu_state(void) {
- #ifndef AMD64
---- openjdk.orig/hotspot/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp
-+++ openjdk/hotspot/src/os_cpu/linux_x86/vm/threadLS_linux_x86.hpp
-@@ -32,7 +32,9 @@
- // map stack pointer to thread pointer - see notes in threadLS_linux_x86.cpp
- #define SP_BITLENGTH 32
- #define PAGE_SHIFT 12
-+ #ifndef PAGE_SIZE
- #define PAGE_SIZE (1UL << PAGE_SHIFT)
-+ #endif
- static Thread* _sp_map[1UL << (SP_BITLENGTH - PAGE_SHIFT)];
-
- public:
---- openjdk/hotspot/src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp.orig
-+++ openjdk/hotspot/src/os_cpu/linux_aarch64/vm/os_linux_aarch64.cpp
-@@ -76,7 +76,7 @@
- # include <pwd.h>
- # include <poll.h>
- # include <ucontext.h>
--# include <fpu_control.h>
-+# include <linux/types.h>
-
- #ifdef BUILTIN_SIM
- #define REG_SP REG_RSP
---- openjdk/hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp.orig
-+++ openjdk/hotspot/src/cpu/aarch64/vm/sharedRuntime_aarch64.cpp
-@@ -194,10 +194,6 @@
- return (r->reg2stack() + SharedRuntime::out_preserve_stack_slots()) * VMRegImpl::stack_slot_size;
- }
-
--template <class T> static const T& min (const T& a, const T& b) {
-- return (a > b) ? b : a;
--}
--
- // ---------------------------------------------------------------------------
- // Read the array of BasicTypes from a signature, and compute where the
- // arguments should go. Values in the VMRegPair regs array refer to 4-byte
diff --git a/user/openjdk7/icedtea-hotspot-noagent-musl.patch b/user/openjdk7/icedtea-hotspot-noagent-musl.patch
deleted file mode 100644
index 37604acca..000000000
--- a/user/openjdk7/icedtea-hotspot-noagent-musl.patch
+++ /dev/null
@@ -1,54 +0,0 @@
---- openjdk.orig/hotspot/make/linux/makefiles/defs.make
-+++ openjdk/hotspot/make/linux/makefiles/defs.make
-@@ -327,6 +327,9 @@
-
- # Serviceability Binaries
- # No SA Support for PPC, IA64, ARM or zero
-+# or if thread_db.h missing (musl)
-+
-+ifneq ($(wildcard /usr/include/thread_db.h),)
- ADD_SA_BINARIES/x86 = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \
- $(EXPORT_LIB_DIR)/sa-jdi.jar
- ADD_SA_BINARIES/sparc = $(EXPORT_JRE_LIB_ARCH_DIR)/libsaproc.$(LIBRARY_SUFFIX) \
-@@ -343,6 +346,10 @@
- endif
- endif
- endif
-+endif
-+else
-+ADD_SA_BINARIES/x86 =
-+ADD_SA_BINARIES/sparc =
- endif
- ADD_SA_BINARIES/ppc =
- ADD_SA_BINARIES/ppc64 =
---- openjdk.orig/hotspot/make/linux/makefiles/sa.make
-+++ openjdk/hotspot/make/linux/makefiles/sa.make
-@@ -59,9 +59,11 @@
-
- # if $(AGENT_DIR) does not exist, we don't build SA
- # also, we don't build SA on Itanium or zero.
-+# check for thread_db.h too (musl does not have it).
-
- all:
-- if [ -d $(AGENT_DIR) -a "$(SRCARCH)" != "ia64" \
-+ if [ -d $(AGENT_DIR) -a -f /usr/include/thread_db.h \
-+ -a "$(SRCARCH)" != "ia64" \
- -a "$(SRCARCH)" != "zero" \
- -a "$(SRCARCH)" != "aarch64" ] ; then \
- $(MAKE) -f sa.make $(GENERATED)/sa-jdi.jar; \
---- openjdk.orig/hotspot/make/linux/makefiles/saproc.make
-+++ openjdk/hotspot/make/linux/makefiles/saproc.make
-@@ -65,10 +65,13 @@
-
- # if $(AGENT_DIR) does not exist, we don't build SA
- # also, we don't build SA on Itanium or zero.
-+# check for thread_db.h too (musl does not have it).
-
-+ifneq ($(wildcard /usr/include/thread_db.h),)
- ifneq ($(wildcard $(AGENT_DIR)),)
- ifneq ($(filter-out ia64 zero aarch64,$(SRCARCH)),)
- BUILDLIBSAPROC = $(LIBSAPROC)
-+endif
- endif
- endif
-
diff --git a/user/openjdk7/icedtea-hotspot-uclibc-fixes.patch b/user/openjdk7/icedtea-hotspot-uclibc-fixes.patch
deleted file mode 100644
index 1c1d82276..000000000
--- a/user/openjdk7/icedtea-hotspot-uclibc-fixes.patch
+++ /dev/null
@@ -1,93 +0,0 @@
---- openjdk.orig/hotspot/src/os/linux/vm/os_linux.cpp
-+++ openjdk/hotspot/src/os/linux/vm/os_linux.cpp
-@@ -112,7 +112,6 @@
- # include <string.h>
- # include <syscall.h>
- # include <sys/sysinfo.h>
--# include <gnu/libc-version.h>
- # include <sys/ipc.h>
- # include <sys/shm.h>
- # include <link.h>
-@@ -632,6 +631,13 @@
- // detecting pthread library
-
- void os::Linux::libpthread_init() {
-+#if 1
-+ // Hard code Alpine Linux supported uclibc/musl compatible settings
-+ os::Linux::set_glibc_version("glibc 2.9");
-+ os::Linux::set_libpthread_version("NPTL");
-+ os::Linux::set_is_NPTL();
-+ os::Linux::set_is_floating_stack();
-+#else
- // Save glibc and pthread version strings. Note that _CS_GNU_LIBC_VERSION
- // and _CS_GNU_LIBPTHREAD_VERSION are supported in glibc >= 2.3.2. Use a
- // generic name for earlier versions.
-@@ -690,6 +696,7 @@
- if (os::Linux::is_NPTL() || os::Linux::supports_variable_stack_size()) {
- os::Linux::set_is_floating_stack();
- }
-+#endif
- }
-
- /////////////////////////////////////////////////////////////////////////////
-@@ -2951,11 +2958,7 @@
- // If we are running with earlier version, which did not have symbol versions,
- // we should use the base version.
- void* os::Linux::libnuma_dlsym(void* handle, const char *name) {
-- void *f = dlvsym(handle, name, "libnuma_1.1");
-- if (f == NULL) {
-- f = dlsym(handle, name);
-- }
-- return f;
-+ return dlsym(handle, name);
- }
-
- bool os::Linux::libnuma_init() {
-@@ -5312,7 +5315,25 @@
- // Linux doesn't yet have a (official) notion of processor sets,
- // so just return the system wide load average.
- int os::loadavg(double loadavg[], int nelem) {
-+#ifdef __UCLIBC__
-+ FILE *LOADAVG;
-+ double avg[3] = { 0.0, 0.0, 0.0 };
-+ int i, res = -1;;
-+
-+ if ((LOADAVG = fopen("/proc/loadavg", "r"))) {
-+ fscanf(LOADAVG, "%lf %lf %lf", &avg[0], &avg[1], &avg[2]);
-+ res = 0;
-+ fclose(LOADAVG);
-+ }
-+
-+ for (i = 0; (i < nelem) && (i < 3); i++) {
-+ loadavg[i] = avg[i];
-+ }
-+
-+ return res;
-+#else
- return ::getloadavg(loadavg, nelem);
-+#endif
- }
-
- void os::pause() {
---- openjdk.orig/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
-+++ openjdk/hotspot/src/share/vm/utilities/globalDefinitions_gcc.hpp
-@@ -253,7 +253,7 @@
- #elif defined(__APPLE__)
- inline int g_isnan(double f) { return isnan(f); }
- #elif defined(LINUX) || defined(_ALLBSD_SOURCE)
--inline int g_isnan(float f) { return isnanf(f); }
-+inline int g_isnan(float f) { return isnan(f); }
- inline int g_isnan(double f) { return isnan(f); }
- #else
- #error "missing platform-specific definition here"
-@@ -267,8 +267,8 @@
-
- // Checking for finiteness
-
--inline int g_isfinite(jfloat f) { return finite(f); }
--inline int g_isfinite(jdouble f) { return finite(f); }
-+inline int g_isfinite(jfloat f) { return isfinite(f); }
-+inline int g_isfinite(jdouble f) { return isfinite(f); }
-
-
- // Wide characters
diff --git a/user/openjdk7/icedtea-jdk-execinfo.patch b/user/openjdk7/icedtea-jdk-execinfo.patch
deleted file mode 100644
index a6499dcb0..000000000
--- a/user/openjdk7/icedtea-jdk-execinfo.patch
+++ /dev/null
@@ -1,40 +0,0 @@
---- openjdk.orig/jdk/src/solaris/native/sun/awt/awt_xembed_server.c
-+++ openjdk/jdk/src/solaris/native/sun/awt/awt_xembed_server.c
-@@ -35,7 +35,7 @@
- #include <X11/Xlib.h>
- #include <X11/Xatom.h>
- #include <Xm/MwmUtil.h>
--#ifdef __linux__
-+#if defined(__linux__) && defined(__GLIBC__) && ! defined(__UCLIBC__)
- #include <execinfo.h>
- #endif
- #include <stdio.h>
-@@ -835,7 +835,7 @@
- AWT_UNLOCK();
- }
-
--#ifdef __linux__
-+#if defined(__linux__) && defined(__GLIBC__) && ! defined(__UCLIBC__)
- void
- print_stack (void)
- {
---- openjdk.orig/jdk/src/solaris/native/sun/xawt/XToolkit.c
-+++ openjdk/jdk/src/solaris/native/sun/xawt/XToolkit.c
-@@ -27,7 +27,7 @@
- #include <X11/Xutil.h>
- #include <X11/Xos.h>
- #include <X11/Xatom.h>
--#ifdef __linux__
-+#if defined(__linux__) && defined(__GLIBC__) && ! defined(__UCLIBC__)
- #include <execinfo.h>
- #endif
-
-@@ -689,7 +689,7 @@
- return ret;
- }
-
--#ifdef __linux__
-+#if defined(__linux__) && defined(__GLIBC__) && ! defined(__UCLIBC__)
- void print_stack(void)
- {
- void *array[10];
diff --git a/user/openjdk7/icedtea-jdk-fix-build.patch b/user/openjdk7/icedtea-jdk-fix-build.patch
deleted file mode 100644
index 9fae895b6..000000000
--- a/user/openjdk7/icedtea-jdk-fix-build.patch
+++ /dev/null
@@ -1,56 +0,0 @@
-Fixes three issues:
- - so's should not be linked to -ljvm as dlopen(/abs/name) is
- used by the launcher to load libjvm.so; it is thus not available
- (musl/uclibc) ld.so to satisfy NEEDED dependency inserted by
- -ljvm. Fix to not link against -ljvm, and disable -z defs so
- undefined symbols are allowed in sos
- - the previous makes ldd generate errors on unresolved symbols (musl)
- remove it altogether as it's used for informative purposes only
- (display things - not check anything useful)
- - Don't delete the generated directory $(GENCSEXT), this can
- confuse make in highly parallel builds with:
- make[6]: *** INTERNAL: readdir: No such file or directory. Stop.
- make[6]: Leaving directory '.../openjdk-boot/jdk/make/sun/nio/cs'
-
---- openjdk.orig/jdk/make/common/Defs-linux.gmk
-+++ openjdk/jdk/make/common/Defs-linux.gmk
-@@ -350,7 +350,7 @@
-
- EXTRA_LIBS += -lc
-
--LDFLAGS_DEFS_OPTION = -Xlinker -z -Xlinker defs
-+LDFLAGS_DEFS_OPTION =
- LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION)
-
- #
-@@ -407,7 +407,7 @@
- # the library itself should not.
- #
- VM_NAME = server
--JVMLIB = -L$(LIBDIR)/$(LIBARCH)/$(VM_NAME) -ljvm
-+JVMLIB =
- JAVALIB = -ljava $(JVMLIB)
-
- #
---- openjdk.orig/jdk/make/sun/nio/cs/Makefile
-+++ openjdk/jdk/make/sun/nio/cs/Makefile
-@@ -107,7 +107,7 @@
- $(GENCSDATASRC)/DoubleByte-X.java.template \
- $(GENCSDATASRC)/extsbcs $(GENCSDATASRC)/dbcs
- @$(prep-target)
-- $(RM) -r $(GENCSEXT)
-+ $(RM) -f "$(GENCSEXT)"/*
- $(MKDIR) -p $(GENCSEXT)
- $(BOOT_JAVA_CMD) -jar $(CHARSETMAPPING_JARFILE) $(GENCSDATASRC) $(GENCSEXT) extsbcs
- $(BOOT_JAVA_CMD) -jar $(CHARSETMAPPING_JARFILE) $(GENCSDATASRC) $(GENCSEXT) euctw \
---- openjdk.orig/jdk/make/common/shared/Defs-linux.gmk
-+++ openjdk/jdk/make/common/shared/Defs-linux.gmk
-@@ -207,8 +207,6 @@
- if [ "`$(NM) -D -g --defined-only $1 | $(EGREP) 'SUNWprivate'`" = "" ] ; then \
- $(ECHO) "$(MAPFILE_WARNING): File was not built with a mapfile: $1"; \
- fi && \
-- $(ECHO) "Library loads for: $1" && \
-- $(LDD) $1 && \
- $(ECHO) "RUNPATH for: $1" && \
- ( $(READELF) -d $1 | $(EGREP) 'NEEDED|RUNPATH|RPATH' ) \
- )
diff --git a/user/openjdk7/icedtea-jdk-fix-ipv6-init.patch b/user/openjdk7/icedtea-jdk-fix-ipv6-init.patch
deleted file mode 100644
index 11f3bf6dd..000000000
--- a/user/openjdk7/icedtea-jdk-fix-ipv6-init.patch
+++ /dev/null
@@ -1,42 +0,0 @@
---- openjdk/jdk/src/solaris/native/java/net/net_util_md.c.orig
-+++ openjdk/jdk/src/solaris/native/java/net/net_util_md.c
-@@ -561,7 +561,7 @@
-
- static struct localinterface *localifs = 0;
- static int localifsSize = 0; /* size of array */
--static int nifs = 0; /* number of entries used in array */
-+static int nifs = -1; /* number of entries used in array */
-
- /* not thread safe: make sure called once from one thread */
-
-@@ -573,6 +573,10 @@
- int index, x1, x2, x3;
- unsigned int u0,u1,u2,u3,u4,u5,u6,u7,u8,u9,ua,ub,uc,ud,ue,uf;
-
-+ if (nifs >= 0)
-+ return ;
-+ nifs = 0;
-+
- if ((f = fopen("/proc/net/if_inet6", "r")) == NULL) {
- return ;
- }
-@@ -601,7 +605,7 @@
- localifs = (struct localinterface *) realloc (
- localifs, sizeof (struct localinterface)* (localifsSize+5));
- if (localifs == 0) {
-- nifs = 0;
-+ nifs = -1;
- fclose (f);
- return;
- }
-@@ -624,9 +628,7 @@
- static int getLocalScopeID (char *addr) {
- struct localinterface *lif;
- int i;
-- if (localifs == 0) {
-- initLocalIfs();
-- }
-+ initLocalIfs();
- for (i=0, lif=localifs; i<nifs; i++, lif++) {
- if (memcmp (addr, lif->localaddr, 16) == 0) {
- return lif->index;
diff --git a/user/openjdk7/icedtea-jdk-musl.patch b/user/openjdk7/icedtea-jdk-musl.patch
deleted file mode 100644
index 49c16d73a..000000000
--- a/user/openjdk7/icedtea-jdk-musl.patch
+++ /dev/null
@@ -1,116 +0,0 @@
-diff -ru openjdk.orig/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp
---- openjdk.orig/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp 2014-06-12 20:14:44.000000000 +0000
-+++ openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/zip.cpp 2014-07-15 07:19:52.186682096 +0000
-@@ -46,6 +46,8 @@
-
- #include "zip.h"
-
-+#define uchar unsigned char
-+
- #ifdef NO_ZLIB
-
- inline bool jar::deflate_bytes(bytes& head, bytes& tail) {
-diff -ru openjdk.orig/jdk/src/share/native/com/sun/java/util/jar/pack/zip.h openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/zip.h
---- openjdk.orig/jdk/src/share/native/com/sun/java/util/jar/pack/zip.h 2014-06-12 20:14:44.000000000 +0000
-+++ openjdk/jdk/src/share/native/com/sun/java/util/jar/pack/zip.h 2014-07-15 07:19:52.186682096 +0000
-@@ -23,9 +23,7 @@
- * questions.
- */
-
--#define ushort unsigned short
--#define uint unsigned int
--#define uchar unsigned char
-+#include <sys/types.h>
-
- struct unpacker;
-
-diff -ru openjdk.orig/jdk/src/share/native/sun/awt/medialib/mlib_types.h openjdk/jdk/src/share/native/sun/awt/medialib/mlib_types.h
---- openjdk.orig/jdk/src/share/native/sun/awt/medialib/mlib_types.h 2014-06-12 20:14:44.000000000 +0000
-+++ openjdk/jdk/src/share/native/sun/awt/medialib/mlib_types.h 2014-07-15 07:19:52.186682096 +0000
-@@ -27,6 +27,7 @@
- #ifndef MLIB_TYPES_H
- #define MLIB_TYPES_H
-
-+#include <stddef.h> /* for NULL */
- #include <limits.h>
- #if defined(_MSC_VER)
- #include <float.h> /* for FLT_MAX and DBL_MAX */
-diff -ru openjdk.orig/jdk/src/solaris/native/java/net/Inet4AddressImpl.c openjdk/jdk/src/solaris/native/java/net/Inet4AddressImpl.c
---- openjdk.orig/jdk/src/solaris/native/java/net/Inet4AddressImpl.c 2014-06-12 20:14:44.000000000 +0000
-+++ openjdk/jdk/src/solaris/native/java/net/Inet4AddressImpl.c 2014-07-15 07:19:52.186682096 +0000
-@@ -47,7 +47,7 @@
-
- #include "java_net_Inet4AddressImpl.h"
-
--#if defined(__GLIBC__) || (defined(__FreeBSD__) && (__FreeBSD_version >= 601104))
-+#if defined(__linux__) || (defined(__FreeBSD__) && (__FreeBSD_version >= 601104))
- #define HAS_GLIBC_GETHOSTBY_R 1
- #endif
-
-diff -ru openjdk.orig/jdk/src/solaris/native/java/net/NetworkInterface.c openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c
---- openjdk.orig/jdk/src/solaris/native/java/net/NetworkInterface.c 2014-06-12 20:14:44.000000000 +0000
-+++ openjdk/jdk/src/solaris/native/java/net/NetworkInterface.c 2014-07-15 07:19:52.186682096 +0000
-@@ -47,7 +47,6 @@
-
- #ifdef __linux__
- #include <sys/ioctl.h>
--#include <bits/ioctls.h>
- #include <sys/utsname.h>
- #include <stdio.h>
- #endif
-diff -ru openjdk.orig/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c
---- openjdk.orig/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2014-06-12 20:14:44.000000000 +0000
-+++ openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2014-07-15 07:19:52.190015524 +0000
-@@ -35,7 +35,6 @@
- #endif
- #ifdef __linux__
- #include <unistd.h>
--#include <sys/sysctl.h>
- #include <sys/utsname.h>
- #include <netinet/ip.h>
-
-diff -ru openjdk.orig/jdk/src/solaris/native/java/net/PlainSocketImpl.c openjdk/jdk/src/solaris/native/java/net/PlainSocketImpl.c
---- openjdk.orig/jdk/src/solaris/native/java/net/PlainSocketImpl.c 2014-06-12 20:14:44.000000000 +0000
-+++ openjdk/jdk/src/solaris/native/java/net/PlainSocketImpl.c 2014-07-15 07:19:52.190015524 +0000
-@@ -43,7 +43,6 @@
- #endif
- #ifdef __linux__
- #include <unistd.h>
--#include <sys/sysctl.h>
- #endif
-
- #include "jvm.h"
-diff -ru openjdk.orig/jdk/src/solaris/native/java/net/linux_close.c openjdk/jdk/src/solaris/native/java/net/linux_close.c
---- openjdk.orig/jdk/src/solaris/native/java/net/linux_close.c 2014-06-12 20:14:44.000000000 +0000
-+++ openjdk/jdk/src/solaris/native/java/net/linux_close.c 2014-07-15 07:22:17.609355950 +0000
-@@ -75,7 +75,7 @@
- #ifdef _AIX
- static int sigWakeup = (SIGRTMAX - 1);
- #else
--static int sigWakeup = (__SIGRTMAX - 2);
-+static int sigWakeup;
- #endif
-
- /*
-@@ -148,6 +148,9 @@
- /*
- * Setup the signal handler
- */
-+#ifndef __AIX
-+ sigWakeup = SIGRTMAX - 2;
-+#endif
- sa.sa_handler = sig_wakeup;
- sa.sa_flags = 0;
- sigemptyset(&sa.sa_mask);
-diff -ru openjdk.orig/jdk/src/solaris/native/sun/nio/ch/NativeThread.c openjdk/jdk/src/solaris/native/sun/nio/ch/NativeThread.c
---- openjdk.orig/jdk/src/solaris/native/sun/nio/ch/NativeThread.c 2014-06-12 20:14:44.000000000 +0000
-+++ openjdk/jdk/src/solaris/native/sun/nio/ch/NativeThread.c 2014-07-15 07:19:52.190015524 +0000
-@@ -38,7 +38,7 @@
- #include <sys/signal.h>
-
- /* Also defined in src/solaris/native/java/net/linux_close.c */
--#define INTERRUPT_SIGNAL (__SIGRTMAX - 2)
-+#define INTERRUPT_SIGNAL (SIGRTMAX - 2)
-
- static void
- nullHandler(int sig)
diff --git a/user/openjdk7/icedtea-jdk-no-lib-nsl-uclibc.patch b/user/openjdk7/icedtea-jdk-no-lib-nsl-uclibc.patch
deleted file mode 100644
index 26f89bb54..000000000
--- a/user/openjdk7/icedtea-jdk-no-lib-nsl-uclibc.patch
+++ /dev/null
@@ -1,84 +0,0 @@
---- openjdk.orig/hotspot/agent/src/os/solaris/dbx/Makefile
-+++ openjdk/hotspot/agent/src/os/solaris/dbx/Makefile
-@@ -50,7 +50,7 @@
- CFLAGS_32bit := -xarch=v8
- CFLAGS_64bit := -xarch=v9
- CFLAGS := -PIC -xO3 $(INCLUDES)
--LIBS := -lsocket -lnsl -lrtld_db
-+LIBS := -lsocket -lrtld_db
- LDFLAGS := -G
-
- ifneq "$(ARCH)" "i486"
---- openjdk.orig/jdk/make/java/hpi/hpi_common.gmk
-+++ openjdk/jdk/make/java/hpi/hpi_common.gmk
-@@ -86,5 +86,5 @@
- # Things that must be linked in.
- #
- ifneq ($(PLATFORM), windows)
--OTHER_LDLIBS += $(LIBSOCKET) -lnsl $(LIBM) -ldl
-+OTHER_LDLIBS += $(LIBSOCKET) $(LIBM) -ldl
- endif
---- openjdk.orig/jdk/make/java/java/Makefile
-+++ openjdk/jdk/make/java/java/Makefile
-@@ -205,7 +205,7 @@
- OTHER_LDLIBS += $(JVMLIB) -libpath:$(OBJDIR)/../../../fdlibm/$(OBJDIRNAME) fdlibm.lib \
- -libpath:$(OBJDIR)/../../../verify/$(OBJDIRNAME) verify.lib
- else
--OTHER_LDLIBS += $(JVMLIB) -lverify $(LIBSOCKET) -lnsl -ldl \
-+OTHER_LDLIBS += $(JVMLIB) -lverify $(LIBSOCKET) -ldl \
- -L$(OBJDIR)/../../../fdlibm/$(OBJDIRNAME) -lfdlibm.$(ARCH)
- endif
-
---- openjdk.orig/jdk/make/java/java_hprof_demo/Makefile
-+++ openjdk/jdk/make/java/java_hprof_demo/Makefile
-@@ -83,7 +83,7 @@
- ifeq ($(PLATFORM), windows)
- OTHER_LDLIBS += wsock32.lib winmm.lib
- else
-- OTHER_LDLIBS += $(LIBSOCKET) -lnsl -ldl
-+ OTHER_LDLIBS += $(LIBSOCKET) -ldl
- endif
-
- #
---- openjdk.orig/jdk/make/java/net/Makefile
-+++ openjdk/jdk/make/java/net/Makefile
-@@ -97,7 +97,7 @@
- # Will not compile at warning level 3 if warnings are fatal
- COMPILER_WARNINGS_FATAL=false
- else
-- OTHER_LDLIBS = $(LIBSOCKET) -lnsl -ldl $(JVMLIB)
-+ OTHER_LDLIBS = $(LIBSOCKET) -ldl $(JVMLIB)
- endif
- ifeq ($(PLATFORM), linux)
- OTHER_LDLIBS += -lpthread
---- openjdk.orig/jdk/make/jpda/transport/socket/Makefile
-+++ openjdk/jdk/make/jpda/transport/socket/Makefile
-@@ -42,11 +42,11 @@
- endif
-
- ifeq ($(PLATFORM), linux)
-- OTHER_LDLIBS += -lnsl $(LIBSOCKET) -lpthread
-+ OTHER_LDLIBS += $(LIBSOCKET) -lpthread
- endif
-
- ifeq ($(PLATFORM), solaris)
-- OTHER_LDLIBS += -lnsl $(LIBSOCKET)
-+ OTHER_LDLIBS += $(LIBSOCKET)
- endif
-
- ifeq ($(PLATFORM), windows)
---- openjdk.orig/jdk/make/mkdemo/jvmti/hprof/Makefile
-+++ openjdk/jdk/make/mkdemo/jvmti/hprof/Makefile
-@@ -39,10 +39,10 @@
- EXTRA_LIBS += wsock32.lib winmm.lib
- endif
- ifeq ($(PLATFORM), solaris)
-- OTHER_LDLIBS += $(LIBSOCKET) -lnsl -ldl
-+ OTHER_LDLIBS += $(LIBSOCKET) -ldl
- endif
- ifeq ($(PLATFORM), linux)
-- OTHER_LDLIBS += $(LIBSOCKET) -lnsl -ldl -lpthread
-+ OTHER_LDLIBS += $(LIBSOCKET) -ldl -lpthread
- endif
-
- #
diff --git a/user/openjdk7/icedtea-jdk-no-soname.patch b/user/openjdk7/icedtea-jdk-no-soname.patch
deleted file mode 100644
index fe6bbb732..000000000
--- a/user/openjdk7/icedtea-jdk-no-soname.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- ./openjdk/jdk/make/common/Defs-linux.gmk.orig
-+++ ./openjdk/jdk/make/common/Defs-linux.gmk
-@@ -248,7 +248,9 @@
- #
- LDFLAGS_OPT = -Xlinker -O1
- LDFLAGS_COMMON += -L$(LIBDIR)/$(LIBARCH)
-+ifdef LIBRARY
- LDFLAGS_COMMON += -Wl,-soname=$(LIB_PREFIX)$(LIBRARY).$(LIBRARY_SUFFIX)
-+endif
-
- #
- # -static-libgcc is a gcc-3 flag to statically link libgcc, gcc-2.9x always
diff --git a/user/openjdk7/icedtea-remove-gawk.patch b/user/openjdk7/icedtea-remove-gawk.patch
deleted file mode 100644
index 98e9878b7..000000000
--- a/user/openjdk7/icedtea-remove-gawk.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- openjdk/corba/make/common/shared/Defs-utils.gmk.old 2018-10-22 05:22:47.000000000 +0000
-+++ openjdk/corba/make/common/shared/Defs-utils.gmk 2019-02-27 00:44:26.900000000 +0000
-@@ -182,7 +182,7 @@
- # others have it in /usr/bin.
- SORT=$(firstword $(wildcard $(UTILS_COMMAND_PATH)sort) \
- $(wildcard $(UTILS_USR_BIN_PATH)sort))
-- NAWK = $(USRBIN_PATH)gawk
-+ NAWK = $(USRBIN_PATH)mawk
- # Intrinsic unix command, with backslash-escaped character interpretation
- ECHO = /bin/echo -e
- # These are really in UTILS_USR_BIN_PATH on Linux (only sccs is not)
---- openjdk/jdk/make/common/shared/Defs-utils.gmk.old 2019-02-27 00:40:12.430000000 +0000
-+++ openjdk/jdk/make/common/shared/Defs-utils.gmk 2019-02-27 00:43:49.520000000 +0000
-@@ -207,7 +207,7 @@
- # others have it in /usr/bin.
- SORT=$(firstword $(wildcard $(UTILS_COMMAND_PATH)sort) \
- $(wildcard $(UTILS_USR_BIN_PATH)sort))
-- NAWK = $(USRBIN_PATH)gawk
-+ NAWK = $(USRBIN_PATH)mawk
- # Intrinsic unix command, with backslash-escaped character interpretation
- ECHO = /bin/echo -e
- # These are really in UTILS_USR_BIN_PATH on Linux
diff --git a/user/openjdk7/icedtea-tar.patch b/user/openjdk7/icedtea-tar.patch
deleted file mode 100644
index 98c280184..000000000
--- a/user/openjdk7/icedtea-tar.patch
+++ /dev/null
@@ -1,22 +0,0 @@
---- openjdk/jdk/make/common/shared/Defs-utils.gmk.old 2019-02-27 01:45:10.950000000 +0000
-+++ openjdk/jdk/make/common/shared/Defs-utils.gmk 2019-02-27 02:26:55.870000000 +0000
-@@ -150,7 +150,7 @@
- SHOWREV = $(UTILS_USR_BIN_PATH)showrev
- SORT = $(UTILS_COMMAND_PATH)sort
- TAIL = $(UTILS_USR_BIN_PATH)tail
--TAR = $(UTILS_COMMAND_PATH)tar
-+TAR = $(UTILS_USR_BIN_PATH)tar
- TEST = $(UTILS_USR_BIN_PATH)test
- TOUCH = $(UTILS_COMMAND_PATH)touch
- TR = $(UTILS_USR_BIN_PATH)tr
---- openjdk/corba/make/common/shared/Defs-utils.gmk.old 2019-02-27 02:27:38.910000000 +0000
-+++ openjdk/corba/make/common/shared/Defs-utils.gmk 2019-02-27 02:28:00.210000000 +0000
-@@ -129,7 +129,7 @@
- SORT = $(UTILS_COMMAND_PATH)sort
- STRIP = $(UTILS_CCS_BIN_PATH)strip
- TAIL = $(UTILS_USR_BIN_PATH)tail
--TAR = $(UTILS_COMMAND_PATH)tar
-+TAR = $(UTILS_USR_BIN_PATH)tar
- TEST = $(UTILS_USR_BIN_PATH)test
- TOUCH = $(UTILS_COMMAND_PATH)touch
- TR = $(UTILS_USR_BIN_PATH)tr
diff --git a/user/openjdk7/icedtea-xattr.patch b/user/openjdk7/icedtea-xattr.patch
deleted file mode 100644
index 51aee48c4..000000000
--- a/user/openjdk7/icedtea-xattr.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- openjdk/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c.old 2018-10-22 05:32:13.000000000 +0000
-+++ openjdk/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c 2019-02-27 01:37:00.950000000 +0000
-@@ -38,7 +38,7 @@
-
- #ifdef COMPILE_AGAINST_SYSCALLS
- #include <sys/types.h>
--#include <attr/xattr.h>
-+#include <sys/xattr.h>
- #else
- #include <syscalls_fp.h>
- #endif
diff --git a/user/openjdk7/remove-gawk.patch b/user/openjdk7/remove-gawk.patch
deleted file mode 100644
index dccddbab9..000000000
--- a/user/openjdk7/remove-gawk.patch
+++ /dev/null
@@ -1,125 +0,0 @@
---- icedtea-2.6.16/configure.old 2019-01-01 20:11:07.846602426 +0000
-+++ icedtea-2.6.16/configure 2019-02-27 00:23:41.230000000 +0000
-@@ -6881,108 +6881,7 @@
- LDD="$ac_cv_prog_LDD"
- fi
-
--if test -n "$ac_tool_prefix"; then
-- # Extract the first word of "${ac_tool_prefix}gawk", so it can be a program name with args.
--set dummy ${ac_tool_prefix}gawk; ac_word=$2
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
--$as_echo_n "checking for $ac_word... " >&6; }
--if ${ac_cv_path_GAWK+:} false; then :
-- $as_echo_n "(cached) " >&6
--else
-- case $GAWK in
-- [\\/]* | ?:[\\/]*)
-- ac_cv_path_GAWK="$GAWK" # Let the user override the test with a path.
-- ;;
-- *)
-- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for ac_exec_ext in '' $ac_executable_extensions; do
-- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_path_GAWK="$as_dir/$ac_word$ac_exec_ext"
-- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
-- done
--IFS=$as_save_IFS
--
-- ;;
--esac
--fi
--GAWK=$ac_cv_path_GAWK
--if test -n "$GAWK"; then
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GAWK" >&5
--$as_echo "$GAWK" >&6; }
--else
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
--$as_echo "no" >&6; }
--fi
--
--
--fi
--if test -z "$ac_cv_path_GAWK"; then
-- ac_pt_GAWK=$GAWK
-- # Extract the first word of "gawk", so it can be a program name with args.
--set dummy gawk; ac_word=$2
--{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
--$as_echo_n "checking for $ac_word... " >&6; }
--if ${ac_cv_path_ac_pt_GAWK+:} false; then :
-- $as_echo_n "(cached) " >&6
--else
-- case $ac_pt_GAWK in
-- [\\/]* | ?:[\\/]*)
-- ac_cv_path_ac_pt_GAWK="$ac_pt_GAWK" # Let the user override the test with a path.
-- ;;
-- *)
-- as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
--for as_dir in $PATH
--do
-- IFS=$as_save_IFS
-- test -z "$as_dir" && as_dir=.
-- for ac_exec_ext in '' $ac_executable_extensions; do
-- if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
-- ac_cv_path_ac_pt_GAWK="$as_dir/$ac_word$ac_exec_ext"
-- $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
-- break 2
-- fi
--done
-- done
--IFS=$as_save_IFS
--
-- ;;
--esac
--fi
--ac_pt_GAWK=$ac_cv_path_ac_pt_GAWK
--if test -n "$ac_pt_GAWK"; then
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_GAWK" >&5
--$as_echo "$ac_pt_GAWK" >&6; }
--else
-- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
--$as_echo "no" >&6; }
--fi
--
-- if test "x$ac_pt_GAWK" = x; then
-- GAWK=""
-- else
-- case $cross_compiling:$ac_tool_warned in
--yes:)
--{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5
--$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;}
--ac_tool_warned=yes ;;
--esac
-- GAWK=$ac_pt_GAWK
-- fi
--else
-- GAWK="$ac_cv_path_GAWK"
--fi
--
-- if test x"$GAWK" = x ; then
-- as_fn_error $? "The following program was not found on the PATH: gawk" "$LINENO" 5
-- fi
--
-+GAWK="$AWK"
-
- if test -n "$ac_tool_prefix"; then
- # Extract the first word of "${ac_tool_prefix}perl", so it can be a program name with args.
---- icedtea-2.6.16/configure.ac.old 2019-01-01 20:09:39.139994680 +0000
-+++ icedtea-2.6.16/configure.ac 2019-02-27 00:25:01.960000000 +0000
-@@ -39,9 +39,7 @@
- IT_FIND_TOOLS([FASTJAR], [fastjar jar])
- IT_FIND_TOOLS([SED],[gsed sed])
- AC_CHECK_TOOL([LDD], [ldd])
--dnl OpenJDK's README-builds.html lists gawk as a build dependency so we
--dnl check for it explicitly rather than using AC_PROG_AWK.
--IT_FIND_TOOL([GAWK], [gawk])
-+IT_FIND_TOOL([GAWK], [awk])
- IT_FIND_TOOL([PERL], [perl])
- IT_CHECK_FOR_MERCURIAL
- IT_OBTAIN_HG_REVISIONS
diff --git a/user/openjdk7/xattr.patch b/user/openjdk7/xattr.patch
deleted file mode 100644
index 258f9f12d..000000000
--- a/user/openjdk7/xattr.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- icedtea-2.6.16/acinclude.m4.old 2019-01-01 20:09:39.127994868 +0000
-+++ icedtea-2.6.16/acinclude.m4 2019-02-27 00:35:33.320000000 +0000
-@@ -2271,7 +2271,7 @@
- dnl Check for syscalls
- AC_CHECK_FUNCS([openat64 fstatat64 fgetxattr fsetxattr fremovexattr flistxattr unlinkat renameat futimesat fdopendir epoll_create epoll_ctl epoll_wait],,
- [AC_MSG_ERROR([Could not find required syscalls; check config.log and use --disable-compile-against-syscalls if necessary.])])
-- AC_CHECK_HEADERS([sys/epoll.h attr/xattr.h],
-+ AC_CHECK_HEADERS([sys/epoll.h sys/xattr.h],
- , [AC_MSG_ERROR([Could not find required system headers; install the appropriate files from glibc-headers, libc6-dev and/or libattr-devel, libattr1-dev or use --disable-compile-against-syscalls if necessary.])])
- ENABLE_SYSCALL_COMPILATION=true
- fi
diff --git a/user/openjdk8/APKBUILD b/user/openjdk8/APKBUILD
index 24dd5e28a..42b261ee8 100644
--- a/user/openjdk8/APKBUILD
+++ b/user/openjdk8/APKBUILD
@@ -1,19 +1,19 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=openjdk8
-_icedteaver=3.11.0
+_icedteaver=3.21.0
# pkgver is <JDK version>.<JDK update>.<JDK build>
# Check https://icedtea.classpath.org/wiki/Main_Page when updating
-pkgver=8.201.08
-pkgrel=0
+pkgver=8.312.07
+pkgrel=1
pkgdesc="Libre Java development kit for Java 8"
url="https://icedtea.classpath.org/"
-arch="all"
+arch="all !armv7" #1007
+options="sover-namecheck"
license="GPL-2.0-only"
depends="$pkgname-jre java-cacerts"
-options="sover-namecheck"
makedepends="bash findutils libarchive-tools zip file util-linux libxslt
autoconf automake linux-headers sed xz coreutils
- openjdk7 ca-certificates libjpeg-turbo-dev cmd:which
+ fastjar ca-certificates libjpeg-turbo-dev cmd:which
nss-dev nss-static cups-dev giflib-dev libpng-dev libxt-dev
lcms2-dev libxp-dev libxtst-dev libxinerama-dev zlib-dev
libxrender-dev alsa-lib-dev freetype-dev fontconfig-dev
@@ -29,7 +29,7 @@ ppc64) _jarch=ppc64
*) _jarch="$CARCH";;
esac
-_bootstrap_java_home="/usr/lib/jvm/java-1.7-openjdk"
+_bootstrap_java_home="$srcdir/boot-home/$CARCH"
_java_home="/usr/lib/jvm/java-1.8-openjdk"
_jrelib="$_java_home/jre/lib/$_jarch"
@@ -38,6 +38,8 @@ _jrelib="$_java_home/jre/lib/$_jarch"
ldpath="$_jrelib:$_jrelib/native_threads:$_jrelib/headless:$_jrelib/server:$_jrelib/jli"
sonameprefix="$pkgname:"
+provides="$pkgname-bootstrap=$pkgver-r$pkgrel"
+
subpackages="$pkgname-dbg $pkgname-jre-lib:jrelib:noarch $pkgname-jre $pkgname-jre-base:jrebase
$pkgname-doc $pkgname-demos"
@@ -62,14 +64,66 @@ source="https://icedtea.classpath.org/download/source/icedtea-$_icedteaver.tar.x
icedtea-jdk-fix-libjvm-load.patch
icedtea-jdk-musl.patch
icedtea-jdk-includes.patch
- icedtea-jdk-getmntent-buffer.patch
icedtea-autoconf-config.patch
- icedtea-jdk-tls-nist-curves.patch
remove-gawk.patch
+
+ project-autoconf-2xx.patch
+ "
+_targets="aarch64 ppc64 ppc x86_64 pmmx"
+for target in $_targets; do
+ source="$source
+ https://distfiles.adelielinux.org/source/openjdk/openjdk8-bootstrap-$target.txz
"
+done
builddir="$srcdir/icedtea-$_icedteaver"
# secfixes:
+# 8.252.09-r0:
+# - CVE-2019-2602
+# - CVE-2019-2684
+# - CVE-2019-2698
+# - CVE-2019-2745
+# - CVE-2019-2762
+# - CVE-2019-2766
+# - CVE-2019-2769
+# - CVE-2019-2786
+# - CVE-2019-2816
+# - CVE-2019-2842
+# - CVE-2019-2894
+# - CVE-2019-2933
+# - CVE-2019-2945
+# - CVE-2019-2949
+# - CVE-2019-2958
+# - CVE-2019-2962
+# - CVE-2019-2964
+# - CVE-2019-2973
+# - CVE-2019-2975
+# - CVE-2019-2978
+# - CVE-2019-2981
+# - CVE-2019-2983
+# - CVE-2019-2987
+# - CVE-2019-2988
+# - CVE-2019-2989
+# - CVE-2019-2992
+# - CVE-2019-2999
+# - CVE-2019-7317
+# - CVE-2020-2583
+# - CVE-2020-2590
+# - CVE-2020-2593
+# - CVE-2020-2601
+# - CVE-2020-2604
+# - CVE-2020-2654
+# - CVE-2020-2659
+# - CVE-2020-2754
+# - CVE-2020-2755
+# - CVE-2020-2756
+# - CVE-2020-2757
+# - CVE-2020-2773
+# - CVE-2020-2781
+# - CVE-2020-2800
+# - CVE-2020-2803
+# - CVE-2020-2805
+# - CVE-2020-2830
# 8.201.08-r0:
# - CVE-2019-2422
# - CVE-2019-2426
@@ -98,28 +152,28 @@ unpack() {
fi
mkdir -p "$srcdir"
msg "Unpacking sources..."
- tar -C "$srcdir" -Jxf icedtea-$_icedteaver.tar.xz
+ tar -C "$srcdir" -xJf icedtea-$_icedteaver.tar.xz
+ tar -C "$srcdir" -xJf openjdk8-bootstrap-$CARCH.txz \
+ || die "Architecture $CARCH not bootstrapped"
}
prepare() {
- cd "$builddir"
-
- local ver_u=$(sed -En 's/^\s*JDK_UPDATE_VERSION\s*=\s*(\S+).*/\1/p' acinclude.m4)
- local ver_b=$(sed -En 's/^\s*BUILD_VERSION\s*=\s*b(\S+).*/\1/p' acinclude.m4)
- [ "${pkgver#*.}" = "$ver_u.$ver_b" ] \
- || die "Version mismatch, source is 8.$ver_u.$ver_b, but abuild defines $pkgver!"
+ _ver_u="$(sed -En 's/^\s*JDK_UPDATE_VERSION\s*=\s*(\S+).*/\1/p' acinclude.m4)"
+ _ver_b="$(sed -En 's/^\s*BUILD_VERSION\s*=\s*b(\S+).*/\1/p' acinclude.m4)"
+ [ "${pkgver#*.}" = "$_ver_u.$_ver_b" ] \
+ || die "Version mismatch, source is 8.$_ver_u.$_ver_b, but abuild defines $pkgver!"
# Busybox sha256 does not support longopts.
sed -e "s/--check/-c/g" -i Makefile.am
- local patch; for patch in $source; do
- case $patch in
+ for _patch in $source; do
+ case $_patch in
icedtea-*.patch)
- cp ../$patch patches
+ cp ../$_patch patches
;;
*.patch)
- msg "Applying patch $patch"
- patch -p1 -i "$srcdir"/$patch
+ msg "Applying patch $_patch"
+ patch -p1 -i "$srcdir"/$_patch
;;
esac
done
@@ -136,17 +190,16 @@ build() {
fi
DISTRIBUTION_PATCHES=""
- local patch; for patch in $source; do
- case $patch in
+ for _patch in $source; do
+ case $_patch in
icedtea-*.patch)
- DISTRIBUTION_PATCHES="$DISTRIBUTION_PATCHES patches/$patch"
+ DISTRIBUTION_PATCHES="$DISTRIBUTION_PATCHES patches/$_patch"
;;
esac
done
export DISTRIBUTION_PATCHES
echo "icedtea patches: $DISTRIBUTION_PATCHES"
- cd "$builddir"
bash ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -168,11 +221,12 @@ build() {
--with-jdk-src-zip="$srcdir/jdk-$_dropsver.tar.xz" \
--with-langtools-src-zip="$srcdir/langtools-$_dropsver.tar.xz" \
--with-nashorn-src-zip="$srcdir/nashorn-$_dropsver.tar.xz" \
- --with-pax=paxmark \
--with-jdk-home="$_bootstrap_java_home" \
--with-pkgversion="Adelie ${pkgver}-r${pkgrel}" \
--enable-nss \
- --enable-non-nss-curves
+ --enable-non-nss-curves \
+ --disable-jfr `# configure error without this` \
+ ;
make
}
@@ -184,8 +238,6 @@ check() {
}
package() {
- cd "$builddir"
-
mkdir -p "$pkgdir"/$_java_home
cp -a openjdk.build/images/j2sdk-image/* "$pkgdir"/$_java_home/
@@ -196,9 +248,6 @@ package() {
# running `java -Xshare:dump`.
rm -f "$pkgdir"/$_jrelib/server/classes.jsa
- # pax mark again (due to fakeroot xattr handling bug)
- ./pax-mark-vm "$pkgdir"/$_java_home true
-
# symlink to shared java cacerts store
rm -f "$pkgdir"/$_java_home/jre/lib/security/cacerts
ln -sf /etc/ssl/certs/java/cacerts \
@@ -209,8 +258,7 @@ jrelib() {
pkgdesc="OpenJDK 8 Java Runtime (class libraries)"
depends=""
- local file dir
- for file in jre/lib/images \
+ for _file in jre/lib/images \
jre/lib/*.jar \
jre/lib/security \
jre/lib/ext/*.jar \
@@ -219,18 +267,17 @@ jrelib() {
jre/THIRD_PARTY_README \
jre/LICENSE; do
- dir=${file%/*}
- mkdir -p "$subpkgdir"/$_java_home/$dir
- mv "$pkgdir"/$_java_home/$file "$subpkgdir"/$_java_home/$dir
+ _dir=${_file%/*}
+ mkdir -p "$subpkgdir"/$_java_home/$_dir
+ mv "$pkgdir"/$_java_home/$_file "$subpkgdir"/$_java_home/$_dir
done
}
jre() {
pkgdesc="OpenJDK 8 Java Runtime"
- local file dir
mkdir -p "$subpkgdir"
- for file in jre/bin/policytool \
+ for _file in jre/bin/policytool \
bin/appletviewer \
bin/policytool \
jre/lib/$_jarch/libawt_xawt.so \
@@ -239,13 +286,10 @@ jre() {
jre/lib/$_jarch/libjsoundalsa.so \
jre/lib/$_jarch/libsplashscreen.so; do
- dir=${file%/*}
- mkdir -p "$subpkgdir"/$_java_home/$dir
- mv "$pkgdir"/$_java_home/$file "$subpkgdir"/$_java_home/$dir
+ _dir=${_file%/*}
+ mkdir -p "$subpkgdir"/$_java_home/$_dir
+ mv "$pkgdir"/$_java_home/$_file "$subpkgdir"/$_java_home/$_dir
done
-
- # Pax mark again (due to fakeroot xattr handling bug).
- "$builddir"/pax-mark-vm "$subpkgdir"/$_java_home true
}
jrebase() {
@@ -258,16 +302,13 @@ jrebase() {
mv "$pkgdir"/$_java_home/lib/$_jarch/jli \
"$subpkgdir"/$_java_home/lib/$_jarch/
- local file; for file in java orbd rmid servertool unpack200 keytool \
+ for _file in java orbd rmid servertool unpack200 keytool \
pack200 rmiregistry tnameserv; do
- mv "$pkgdir"/$_java_home/bin/$file "$subpkgdir"/$_java_home/bin/
+ mv "$pkgdir"/$_java_home/bin/$_file "$subpkgdir"/$_java_home/bin/
done
# Rest of the jre subdir (which were not taken by -jre subpkg).
mv "$pkgdir"/$_java_home/jre "$subpkgdir"/$_java_home/
-
- # Pax mark again (due to fakeroot xattr handling bug).
- "$builddir"/pax-mark-vm "$subpkgdir"/$_java_home true
}
doc() {
@@ -286,24 +327,28 @@ demos() {
"$subpkgdir"/$_java_home/
}
-sha512sums="a71c9318d49077f8ae27f5c3e0b61df0709eded241f557c886f6b93aa98c13ad78f713d1286da286989bf62866dfff7538ad783eb804a705a160cbc096dea851 icedtea-3.11.0.tar.xz
-fc3faa7d7b9531f10c40241d89c36854043921f6f1a0851f284bcab36fc54fb0bb8cf8365dd4b2fb22b3ee8ddb8ed4a79e0807f79cb95b4b00f164993f1acc0b openjdk-3.11.0.tar.xz
-9b8a44dda0bbfba8dc0d659e0fabf22e84b9931518e4b199a238faa103cbc4ed814c97f0f38f0aed263846b46fc7eab4500ba9759503373083e12cb8b5b364b5 corba-3.11.0.tar.xz
-9eba0f6ada2ae8adc1791a91ceb4fba9bd06aee0626cd1b4310ff16c7c8006045fed5fb7f109e490395b70695be4e6bfd6f1f5cbcdb095fb17abf123012a03de jaxp-3.11.0.tar.xz
-ce5f0c2aced1af59f002dc9dc6cba4b9332167e9e019a3040267901ef7f325e05b8c99ed1f276b88ddb4e43cdd1b0c456e0c4dc2222ae6b3800c0502ffa840de jaxws-3.11.0.tar.xz
-411508ed91f14ae1c51ea54de72a943db222ff572f3991631fe1a1fa97f9bb42da1e01ca98893f7236b4b44bae2917fc3f8622d7f94a085be30d437451acd272 jdk-3.11.0.tar.xz
-363c376848870c6c28415967561c4b151f1256c38a315fabc69c90425f5255224182045349a00c9433db52c416b7ebffedaa4825c980460541a3f9338adbaa5e langtools-3.11.0.tar.xz
-13fa35f4a4fe01b3da4efb8476c0cb3482a36596eb422f2ad958a4c51efc286962ac3123a75853e84c4db477ac064a0fd3ee5e03f1ea0ec4f7e2c8ac07aa2d0e hotspot-3.11.0.tar.xz
-2b46a8599d530a351522420cae8ac780cd2e64a6d7adbff87397a178f12f0a992bccd0f56435582dbd10be2157d4a4540c41b3dca488566162eed680102e58a9 nashorn-3.11.0.tar.xz
-c0776ff52e11a353fee29419319cd9e1fc4e5bb922832547616e8499fd52852a935a6a6fb93b49a67ab7b3fd2f7a63320f917e354cc7123220139e80694a7b5a icedtea-hotspot-musl.patch
-e5cf4d70f96fc1e72ae8b97a887adb96092ff36584711cbb8de9d9fa9e859cb8731d638838de0d9591239fc44ffe5c74422d1842bd9f10a0c00dff1627bdeeef icedtea-hotspot-musl-ppc.patch
+sha512sums="874f91f3c3311d7017efb91aaff4e2fb660f55c58a626bcf5b120b7158df15e9b94abda7cd28f9620ad76c50bfa89cc8c1d251c193404c0db51ff1430167b018 icedtea-3.21.0.tar.xz
+6a1706dfcb5e5d79191c01db6da30ca0ca48cea628a26a3a35f6e43c710091e25c97ec95122e8bc19b4ac69ede27a8dae37b49e1a7e4db07a635ded69e2e0336 openjdk-3.21.0.tar.xz
+55110b92c6eddeb29eab97cbe644d8cc171a489b9fa806c81e4af88a1e5e3e6776fb97371715782935222944464f68e7d6783c46bd0d0de5659123f46c577a7a corba-3.21.0.tar.xz
+ff14c9b63cee2a7b9213872b8710b1c5b901ccaf4122c8ddf5d8437d1cdd35cf9af50f461d05f004b74802ba8a21c7e9f288ec080b2b5f7daad065d40dc39258 jaxp-3.21.0.tar.xz
+e21bd36b6cfa92f648856532647150243f2184943dc6f5003fea02cf69aa9b6a94fb18d6478db28d5ee5e3af9b780122c0539fd3207cf4dfcb69a042835c13d6 jaxws-3.21.0.tar.xz
+06385f14d093be250aa530d0659576d75aed57b0264ec7329d6b2c9309cf4ed660a9ecbfb6f199868ae23aedfbdb97036fccda501c00e9d2e3b1562c92b0ed37 jdk-3.21.0.tar.xz
+949366138278104fc06452d8227bbe5d0829a9124503928cab34e5e9df37e25d25964a5c755e46d9ca74e63f1b318b2e3366f8f08e144524a8043bc2a7ca626e langtools-3.21.0.tar.xz
+678f6c53db5858ba828e063eeeddb727dbeb0586ff26a4287f9735dc01ad00ddcd9f41fa65343b81d5f5c512a944f47a447d4bdc929ca26ba78a68a7e3dfc1cd hotspot-3.21.0.tar.xz
+eda17f94ed2f34dd5bc4670dd3340d50de956723213948fd15963b0a589433bbe2e0ba8be7761974754b6a5d875ef58c31839daa6fef7215af552842f787bb44 nashorn-3.21.0.tar.xz
+bfbeccc931b9eab04fca94167b7569af26195297130e2effd9175d33b74dec3dc5727fea6e0cbf3cce21ba09641ddd868179544d3fabe8b128baaaccb9c2711c icedtea-hotspot-musl.patch
+86e77c1e5e8a48f121e608dce5eafad7a714e4029b55dbd554c2c94633b49a4239f71a40a41273b54d62fcdcfdee21340c8b85f96001cf15b719b02a520e8d9a icedtea-hotspot-musl-ppc.patch
19459dbb922f5a71cd15b53199481498626a783c24f91d2544d55b7dddd2cdb34a64bbf0226b99548612dd1743af01b3f9ff32c30abbbc90ce727ca2dbbbd1f9 icedtea-hotspot-noagent-musl.patch
f6365cfafafa008bd6c1bf0ccec01a63f8a39bd1a8bc87baa492a27234d47793ba02d455e5667a873ef50148df3baaf6a8421e2da0b15faac675867da714dd5f icedtea-jdk-execinfo.patch
48533f87fc2cf29d26b259be0df51087d2fe5b252e72d00c6ea2f4add7b0fb113141718c116279c5905e03f64a1118082e719393786811367cf4d472b5d36774 icedtea-jdk-fix-ipv6-init.patch
b135991c76b0db8fa7c363e0903624668e11eda7b54a943035c214aa4d7fc8c3e8110ed200edcec82792f3c9393150a9bd628625ddf7f3e55720ff163fbbb471 icedtea-jdk-fix-libjvm-load.patch
-1fbc32ddc528c7c0099dbc1e48f88d29dccf55e7b8997793aa1d3d8408003a1223d898cca4248e1a12d343d3feec5144f875e6cdac8460d763c73ab3ad7e49f9 icedtea-jdk-musl.patch
-e8d9f1b867bf4fc84aa00d1237b264bcf503b1ed5f34735e14b0b747a728953fe0051a5af69ed058d377fbf65d8be1ed9e38fe5fc6edb2d50b31f34bf3ba91dc icedtea-jdk-includes.patch
-7e6fa46b10c630517bfa46943858aea1d032c12d32ba3fcb7a2143ae1e896c34fa4cb8f925af80cb19f8e29149b835aa054adfd30ebb00539f6c78588d6f5211 icedtea-jdk-getmntent-buffer.patch
+17c78db081a85e37721c23e0c0e7cab85e2201a0969bd4858cb90375b97d1703c9bf867f8ac02f6b33f9775b78bae41e38223b7a887918d4a6c9f29b75f3de28 icedtea-jdk-musl.patch
+974fb54532b7e7d738f4278187fc6bd9f9b2d99866b94f68a617ee4911c89a3b8cc41ecfdcaefecf9157492d006b1844b6b0b41ac4209d84f9e8d13c9e485dd3 icedtea-jdk-includes.patch
662d662d0a7a84be2978e921317589f212f3ba3b7629527ba0f1140b5ac4c1024893e0ed176211688ed1a4505968c4befc841ed57ffcdbb9d355c2cb0571b167 icedtea-autoconf-config.patch
-9ea7ac942baf29cc619bc2e1acd59201b9f6d38f39a517b495d7613aec746459200c81afb57c5fcdcb856f6bc8b33f7566c8593fed07e5c73f43e08f1072d458 icedtea-jdk-tls-nist-curves.patch
-b0f6d07c6a949acdc8b4a25bf924f134f468e162f01dd440fd4ca80769fb84a0a54210f93efbe88012404fe3db6701aad31cdbc772bc054ad69021c37db5538c remove-gawk.patch"
+b0f6d07c6a949acdc8b4a25bf924f134f468e162f01dd440fd4ca80769fb84a0a54210f93efbe88012404fe3db6701aad31cdbc772bc054ad69021c37db5538c remove-gawk.patch
+6dd39baca14f088d0b2157308e3d9657ab64ecdb7daab09137486e212e3a8c53f6deae6167b6212217c6ef29c1406347e21ca6bb193ced9ebeb399aeb06bda4b project-autoconf-2xx.patch
+2bbf44ce9145554829c9645e12645fed671201a2af73891d0552295a0a38d45d2d98dccf7db888926450481537e9aebaf4fe12701494e432af10b3ed79bf524e openjdk8-bootstrap-aarch64.txz
+2c0aa356ad015e4176250eda49060f73fef85e8cd457144ab131c03ff79acc5721062755c60b0efa8058602244e2c4f79ec0985e219ff37a4fc933c485a070ce openjdk8-bootstrap-ppc64.txz
+c4c5d65b41a5928b0583c5a7a82530f802380d6104dfa60c0613682e29193760505ca06427a30613d72a9d45609038e5192440f799d348ce89f213ede0659d4a openjdk8-bootstrap-ppc.txz
+c4e6e620f43a9b71e06a616853abce95452044147ca26ac2f484d1e4e4c23f03682ad650a77968f96d88a554832b341f6aa6e7cb059ae87f99349fe8d68a5d6c openjdk8-bootstrap-x86_64.txz
+9281ac1dee1bf35fbdb320cac615de1bfd731853cc1ade59896341f28a2d126f3106fffcdda25375e8c96d224cbe60962e6862893bfc7fff1fe2efbf3900e06c openjdk8-bootstrap-pmmx.txz"
diff --git a/user/openjdk8/icedtea-hotspot-musl-ppc.patch b/user/openjdk8/icedtea-hotspot-musl-ppc.patch
index eca684884..6d8c9586d 100644
--- a/user/openjdk8/icedtea-hotspot-musl-ppc.patch
+++ b/user/openjdk8/icedtea-hotspot-musl-ppc.patch
@@ -1,13 +1,93 @@
---- openjdk.orig/hotspot/src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp
+Subject: Fix compilation with different ucontext_t on musl
+Upstream: No
+Author: Simon Frankenberger <simon-alpine@fraho.eu>
+
+The machine state registers have to be accessed differently when
+running on musl libc. This patch fix this by replacing
+"uc_mcontext.regs->grp" with "uc_mcontext.gp_regs"
+and accessing the named fields (like "->nip") by the array index constants.
+
+--- openjdk/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp
++++ openjdk/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp
+@@ -1243,7 +1243,11 @@ bool MacroAssembler::is_load_from_polling_page(int instruction, void* ucontext,
+ // the safepoing polling page.
+ ucontext_t* uc = (ucontext_t*) ucontext;
+ // Set polling address.
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ address addr = (address)uc->uc_mcontext.regs->gpr[ra] + (ssize_t)ds;
++#else // Musl
++ address addr = (address)uc->uc_mcontext.gp_regs[ra] + (ssize_t)ds;
++#endif
+ if (polling_address_ptr != NULL) {
+ *polling_address_ptr = addr;
+ }
+@@ -1264,15 +1268,24 @@ bool MacroAssembler::is_memory_serialization(int instruction, JavaThread* thread
+ int rb = inv_rb_field(instruction);
+
+ // look up content of ra and rb in ucontext
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ address ra_val=(address)uc->uc_mcontext.regs->gpr[ra];
+ long rb_val=(long)uc->uc_mcontext.regs->gpr[rb];
++#else // Musl
++ address ra_val=(address)uc->uc_mcontext.gp_regs[ra];
++ long rb_val=(long)uc->uc_mcontext.gp_regs[rb];
++#endif
+ return os::is_memory_serialize_page(thread, ra_val+rb_val);
+ } else if (is_stw(instruction) || is_stwu(instruction)) {
+ int ra = inv_ra_field(instruction);
+ int d1 = inv_d1_field(instruction);
+
+ // look up content of ra in ucontext
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ address ra_val=(address)uc->uc_mcontext.regs->gpr[ra];
++#else // Musl
++ address ra_val=(address)uc->uc_mcontext.gp_regs[ra];
++#endif
+ return os::is_memory_serialize_page(thread, ra_val+d1);
+ } else {
+ return false;
+@@ -1335,11 +1348,20 @@ address MacroAssembler::get_stack_bang_address(int instruction, void *ucontext)
+ || (is_stdu(instruction) && rs == 1)) {
+ int ds = inv_ds_field(instruction);
+ // return banged address
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ return ds+(address)uc->uc_mcontext.regs->gpr[ra];
++#else // Musl
++ return ds+(address)uc->uc_mcontext.gp_regs[ra];
++#endif
+ } else if (is_stdux(instruction) && rs == 1) {
+ int rb = inv_rb_field(instruction);
++#if defined(__GLIBC__) || defined(__UCLIBC__)
+ address sp = (address)uc->uc_mcontext.regs->gpr[1];
+ long rb_val = (long)uc->uc_mcontext.regs->gpr[rb];
++#else // Musl
++ address sp = (address)uc->uc_mcontext.gp_regs[1];
++ long rb_val = (long)uc->uc_mcontext.gp_regs[rb];
++#endif
+ return ra != 1 || rb_val >= 0 ? NULL // not a stack bang
+ : sp + rb_val; // banged address
+ }
+--- openjdk/hotspot/src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp
+++ openjdk/hotspot/src/os_cpu/linux_ppc/vm/os_linux_ppc.cpp
-@@ -110,11 +110,19 @@
+@@ -75,6 +75,10 @@
+ # include <poll.h>
+ # include <ucontext.h>
+
++#if ! (defined(__GLIBC__) || defined(__UCLIBC__))
++# include <asm/ptrace.h>
++#endif
++
+
+ address os::current_stack_pointer() {
+ intptr_t* csp;
+@@ -110,11 +114,19 @@ address os::Linux::ucontext_get_pc(ucontext_t * uc) {
// it because the volatile registers are not needed to make setcontext() work.
// Hopefully it was zero'd out beforehand.
guarantee(uc->uc_mcontext.regs != NULL, "only use ucontext_get_pc in sigaction context");
+#if defined(__GLIBC__) || defined(__UCLIBC__)
return (address)uc->uc_mcontext.regs->nip;
+#else // Musl
-+ return (address)uc->uc_mcontext.gp_regs[32];
++ return (address)uc->uc_mcontext.gp_regs[PT_NIP];
+#endif
}
@@ -20,55 +100,55 @@
}
intptr_t* os::Linux::ucontext_get_fp(ucontext_t * uc) {
-@@ -213,7 +221,11 @@
+@@ -213,7 +225,11 @@ JVM_handle_linux_signal(int sig,
if (uc) {
address const pc = os::Linux::ucontext_get_pc(uc);
if (pc && StubRoutines::is_safefetch_fault(pc)) {
+#if defined(__GLIBC__) || defined(__UCLIBC__)
uc->uc_mcontext.regs->nip = (unsigned long)StubRoutines::continuation_for_safefetch_fault(pc);
+#else // Musl
-+ uc->uc_mcontext.gp_regs[32] = (unsigned long)StubRoutines::continuation_for_safefetch_fault(pc);
++ uc->uc_mcontext.gp_regs[PT_NIP] = (unsigned long)StubRoutines::continuation_for_safefetch_fault(pc);
+#endif
return true;
}
}
-@@ -364,7 +376,11 @@
+@@ -364,7 +380,11 @@ JVM_handle_linux_signal(int sig,
// continue at the next instruction after the faulting read. Returning
// garbage from this read is ok.
thread->set_pending_unsafe_access_error();
+#if defined(__GLIBC__) || defined(__UCLIBC__)
uc->uc_mcontext.regs->nip = ((unsigned long)pc) + 4;
+#else // Musl
-+ uc->uc_mcontext.gp_regs[32] = ((unsigned long)pc) + 4;
++ uc->uc_mcontext.gp_regs[PT_NIP] = ((unsigned long)pc) + 4;
+#endif
return true;
}
}
-@@ -383,7 +399,11 @@
+@@ -383,7 +403,11 @@ JVM_handle_linux_signal(int sig,
// continue at the next instruction after the faulting read. Returning
// garbage from this read is ok.
thread->set_pending_unsafe_access_error();
+#if defined(__GLIBC__) || defined(__UCLIBC__)
uc->uc_mcontext.regs->nip = ((unsigned long)pc) + 4;
+#else // Musl
-+ uc->uc_mcontext.gp_regs[32] = ((unsigned long)pc) + 4;
++ uc->uc_mcontext.gp_regs[PT_NIP] = ((unsigned long)pc) + 4;
+#endif
return true;
}
}
-@@ -406,7 +426,11 @@
+@@ -406,7 +430,11 @@ JVM_handle_linux_signal(int sig,
if (stub != NULL) {
// Save all thread context in case we need to restore it.
if (thread != NULL) thread->set_saved_exception_pc(pc);
+#if defined(__GLIBC__) || defined(__UCLIBC__)
uc->uc_mcontext.regs->nip = (unsigned long)stub;
+#else
-+ uc->uc_mcontext.gp_regs[32] = (unsigned long)stub;
++ uc->uc_mcontext.gp_regs[PT_NIP] = (unsigned long)stub;
+#endif
return true;
}
-@@ -564,6 +588,7 @@
+@@ -564,6 +592,7 @@ void os::print_context(outputStream *st, void *context) {
ucontext_t* uc = (ucontext_t*)context;
st->print_cr("Registers:");
@@ -76,26 +156,24 @@
st->print("pc =" INTPTR_FORMAT " ", uc->uc_mcontext.regs->nip);
st->print("lr =" INTPTR_FORMAT " ", uc->uc_mcontext.regs->link);
st->print("ctr=" INTPTR_FORMAT " ", uc->uc_mcontext.regs->ctr);
-@@ -572,8 +597,18 @@
+@@ -572,6 +601,16 @@ void os::print_context(outputStream *st, void *context) {
st->print("r%-2d=" INTPTR_FORMAT " ", i, uc->uc_mcontext.regs->gpr[i]);
if (i % 3 == 2) st->cr();
}
+#else // Musl
-+ st->print("pc =" INTPTR_FORMAT " ", uc->uc_mcontext.gp_regs[32]);
-+ st->print("lr =" INTPTR_FORMAT " ", uc->uc_mcontext.gp_regs[36]);
-+ st->print("ctr=" INTPTR_FORMAT " ", uc->uc_mcontext.gp_regs[35]);
- st->cr();
++ st->print("pc =" INTPTR_FORMAT " ", uc->uc_mcontext.gp_regs[PT_NIP]);
++ st->print("lr =" INTPTR_FORMAT " ", uc->uc_mcontext.gp_regs[PT_LNK]);
++ st->print("ctr=" INTPTR_FORMAT " ", uc->uc_mcontext.gp_regs[PT_CTR]);
++ st->cr();
+ for (int i = 0; i < 32; i++) {
+ st->print("r%-2d=" INTPTR_FORMAT " ", i, uc->uc_mcontext.gp_regs[i]);
+ if (i % 3 == 2) st->cr();
+ }
+#endif
st->cr();
-+ st->cr();
+ st->cr();
- intptr_t *sp = (intptr_t *)os::Linux::ucontext_get_sp(uc);
- st->print_cr("Top of Stack: (sp=" PTR_FORMAT ")", p2i(sp));
-@@ -600,7 +635,11 @@
+@@ -600,7 +639,11 @@ void os::print_register_info(outputStream *st, void *context) {
// this is only for the "general purpose" registers
for (int i = 0; i < 32; i++) {
st->print("r%-2d=", i);
@@ -107,63 +185,42 @@
}
st->cr();
}
---- openjdk.orig/hotspot.orig/src/cpu/ppc/vm/macroAssembler_ppc.cpp
-+++ openjdk/hotspot/src/cpu/ppc/vm/macroAssembler_ppc.cpp
-@@ -1242,7 +1242,11 @@
- // the safepoing polling page.
- ucontext_t* uc = (ucontext_t*) ucontext;
- // Set polling address.
-+#if defined(__GLIBC__) || defined(__UCLIBC__)
- address addr = (address)uc->uc_mcontext.regs->gpr[ra] + (ssize_t)ds;
-+#else // Musl
-+ address addr = (address)uc->uc_mcontext.gp_regs[ra] + (ssize_t)ds;
-+#endif
- if (polling_address_ptr != NULL) {
- *polling_address_ptr = addr;
- }
-@@ -1263,15 +1267,24 @@
- int rb = inv_rb_field(instruction);
+--- openjdk/hotspot/src/os_cpu/linux_ppc/vm/thread_linux_ppc.cpp
++++ openjdk/hotspot/src/os_cpu/linux_ppc/vm/thread_linux_ppc.cpp
+@@ -27,6 +27,10 @@
+ #include "runtime/frame.inline.hpp"
+ #include "runtime/thread.hpp"
- // look up content of ra and rb in ucontext
-+#if defined(__GLIBC__) || defined(__UCLIBC__)
- address ra_val=(address)uc->uc_mcontext.regs->gpr[ra];
- long rb_val=(long)uc->uc_mcontext.regs->gpr[rb];
-+#else // Musl
-+ address ra_val=(address)uc->uc_mcontext.gp_regs[ra];
-+ long rb_val=(long)uc->uc_mcontext.gp_regs[rb];
++#if ! (defined(__GLIBC__) || defined(__UCLIBC__))
++#include <asm/ptrace.h>
+#endif
- return os::is_memory_serialize_page(thread, ra_val+rb_val);
- } else if (is_stw(instruction) || is_stwu(instruction)) {
- int ra = inv_ra_field(instruction);
- int d1 = inv_d1_field(instruction);
++
+ bool JavaThread::pd_get_top_frame_for_profiling(frame* fr_addr, void* ucontext, bool isInJava) {
+ assert(this->is_Java_thread(), "must be JavaThread");
- // look up content of ra in ucontext
-+#if defined(__GLIBC__) || defined(__UCLIBC__)
- address ra_val=(address)uc->uc_mcontext.regs->gpr[ra];
-+#else // Musl
-+ address ra_val=(address)uc->uc_mcontext.gp_regs[ra];
-+#endif
- return os::is_memory_serialize_page(thread, ra_val+d1);
- } else {
- return false;
-@@ -1334,11 +1347,20 @@
- || (is_stdu(instruction) && rs == 1)) {
- int ds = inv_ds_field(instruction);
- // return banged address
+@@ -42,8 +46,13 @@ bool JavaThread::pd_get_top_frame_for_profiling(frame* fr_addr, void* ucontext,
+ // if we were running Java code when SIGPROF came in.
+ if (isInJava) {
+ ucontext_t* uc = (ucontext_t*) ucontext;
+#if defined(__GLIBC__) || defined(__UCLIBC__)
- return ds+(address)uc->uc_mcontext.regs->gpr[ra];
+ frame ret_frame((intptr_t*)uc->uc_mcontext.regs->gpr[1/*REG_SP*/],
+ (address)uc->uc_mcontext.regs->nip);
+#else // Musl
-+ return ds+(address)uc->uc_mcontext.gp_regs[ra];
++ frame ret_frame((intptr_t*)uc->uc_mcontext.gp_regs[1/*REG_SP*/],
++ (address)uc->uc_mcontext.gp_regs[PT_NIP]);
+#endif
- } else if (is_stdux(instruction) && rs == 1) {
- int rb = inv_rb_field(instruction);
+
+ if (ret_frame.pc() == NULL) {
+ // ucontext wasn't useful
+@@ -56,7 +65,11 @@ bool JavaThread::pd_get_top_frame_for_profiling(frame* fr_addr, void* ucontext,
+ if (m == NULL || !m->is_valid_method()) return false;
+ if (!Metaspace::contains((const void*)m)) return false;
+
+#if defined(__GLIBC__) || defined(__UCLIBC__)
- address sp = (address)uc->uc_mcontext.regs->gpr[1];
- long rb_val = (long)uc->uc_mcontext.regs->gpr[rb];
+ uint64_t reg_bcp = uc->uc_mcontext.regs->gpr[14/*R14_bcp*/];
+#else // Musl
-+ address sp = (address)uc->uc_mcontext.gp_regs[1];
-+ long rb_val = (long)uc->uc_mcontext.gp_regs[rb];
++ uint64_t reg_bcp = uc->uc_mcontext.gp_regs[14/*R14_bcp*/];
+#endif
- return ra != 1 || rb_val >= 0 ? NULL // not a stack bang
- : sp + rb_val; // banged address
- }
+ uint64_t istate_bcp = istate->bcp;
+ uint64_t code_start = (uint64_t)(m->code_base());
+ uint64_t code_end = (uint64_t)(m->code_base() + m->code_size());
diff --git a/user/openjdk8/icedtea-hotspot-musl.patch b/user/openjdk8/icedtea-hotspot-musl.patch
index 6cfb3e606..5d6f688a1 100644
--- a/user/openjdk8/icedtea-hotspot-musl.patch
+++ b/user/openjdk8/icedtea-hotspot-musl.patch
@@ -82,8 +82,8 @@ index d2c10e0..20f657f 100644
-# include <fpu_control.h>
+# include <linux/types.h> /* provides __u64 */
- #ifdef BUILTIN_SIM
- #define REG_SP REG_RSP
+ #define REG_FP 29
+
diff --git openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
index 38388cb..2505ba8 100644
--- openjdk/hotspot/src/os_cpu/linux_x86/vm/os_linux_x86.cpp
diff --git a/user/openjdk8/icedtea-jdk-getmntent-buffer.patch b/user/openjdk8/icedtea-jdk-getmntent-buffer.patch
deleted file mode 100644
index 075a9d423..000000000
--- a/user/openjdk8/icedtea-jdk-getmntent-buffer.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-Give a much bigger buffer to getmntent_r.
-
-https://bugs.alpinelinux.org/issues/7093
-
-diff --git a/openjdk/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c b/openjdk/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c
-index c8500db..d0b85d6 100644
---- openjdk/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c
-+++ openjdk/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c
-@@ -33,6 +33,7 @@
- #include <dlfcn.h>
- #include <errno.h>
- #include <mntent.h>
-+#include <limits.h>
-
- #include "sun_nio_fs_LinuxNativeDispatcher.h"
-
-@@ -173,8 +174,8 @@ Java_sun_nio_fs_LinuxNativeDispatcher_getmntent(JNIEnv* env, jclass this,
- jlong value, jobject entry)
- {
- struct mntent ent;
-- char buf[1024];
-- int buflen = sizeof(buf);
-+ char *buf = NULL;
-+ const size_t buflen = PATH_MAX * 4;
- struct mntent* m;
- FILE* fp = jlong_to_ptr(value);
- jsize len;
-@@ -183,10 +184,17 @@ Java_sun_nio_fs_LinuxNativeDispatcher_getmntent(JNIEnv* env, jclass this,
- char* dir;
- char* fstype;
- char* options;
-+ jint res = -1;
-
-- m = getmntent_r(fp, &ent, (char*)&buf, buflen);
-- if (m == NULL)
-+ buf = malloc(buflen);
-+ if (buf == NULL) {
-+ JNU_ThrowOutOfMemoryError(env, "native heap");
- return -1;
-+ }
-+ m = getmntent_r(fp, &ent, buf, buflen);
-+ if (m == NULL)
-+ goto out;
-+
- name = m->mnt_fsname;
- dir = m->mnt_dir;
- fstype = m->mnt_type;
-@@ -195,32 +203,35 @@ Java_sun_nio_fs_LinuxNativeDispatcher_getmntent(JNIEnv* env, jclass this,
- len = strlen(name);
- bytes = (*env)->NewByteArray(env, len);
- if (bytes == NULL)
-- return -1;
-+ goto out;
- (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)name);
- (*env)->SetObjectField(env, entry, entry_name, bytes);
-
- len = strlen(dir);
- bytes = (*env)->NewByteArray(env, len);
- if (bytes == NULL)
-- return -1;
-+ goto out;
- (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)dir);
- (*env)->SetObjectField(env, entry, entry_dir, bytes);
-
- len = strlen(fstype);
- bytes = (*env)->NewByteArray(env, len);
- if (bytes == NULL)
-- return -1;
-+ goto out;
- (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)fstype);
- (*env)->SetObjectField(env, entry, entry_fstype, bytes);
-
- len = strlen(options);
- bytes = (*env)->NewByteArray(env, len);
- if (bytes == NULL)
-- return -1;
-+ goto out;
- (*env)->SetByteArrayRegion(env, bytes, 0, len, (jbyte*)options);
- (*env)->SetObjectField(env, entry, entry_options, bytes);
-
-- return 0;
-+ res = 0;
-+out:
-+ free(buf);
-+ return res;
- }
-
- JNIEXPORT void JNICALL
diff --git a/user/openjdk8/icedtea-jdk-includes.patch b/user/openjdk8/icedtea-jdk-includes.patch
index 6443a1973..5acbb9efb 100644
--- a/user/openjdk8/icedtea-jdk-includes.patch
+++ b/user/openjdk8/icedtea-jdk-includes.patch
@@ -53,17 +53,6 @@
/* O Flags */
---- openjdk.orig/jdk/src/solaris/native/java/net/PlainSocketImpl.c
-+++ openjdk/jdk/src/solaris/native/java/net/PlainSocketImpl.c
-@@ -28,7 +28,7 @@
- #include <sys/types.h>
- #include <sys/socket.h>
- #if defined(__linux__) && !defined(USE_SELECT)
--#include <sys/poll.h>
-+#include <poll.h>
- #endif
- #include <netinet/tcp.h> /* Defines TCP_NODELAY, needed for 2.6 */
- #include <netinet/in.h>
--- openjdk.orig/jdk/src/solaris/native/java/net/bsd_close.c
+++ openjdk/jdk/src/solaris/native/java/net/bsd_close.c
@@ -36,7 +36,7 @@
@@ -88,14 +77,14 @@
* Stack allocated by thread when doing blocking operation
--- openjdk.orig/jdk/src/solaris/native/java/net/net_util_md.h
+++ openjdk/jdk/src/solaris/native/java/net/net_util_md.h
-@@ -33,7 +33,7 @@
- #include <unistd.h>
-
- #ifndef USE_SELECT
+@@ -27,7 +27,7 @@
+ #define NET_UTILS_MD_H
+
+ #include <netdb.h>
-#include <sys/poll.h>
+#include <poll.h>
- #endif
-
+ #include <sys/socket.h>
+
int NET_Timeout(int s, long timeout);
--- openjdk.orig/jdk/src/solaris/native/sun/nio/ch/DevPollArrayWrapper.c
+++ openjdk/jdk/src/solaris/native/sun/nio/ch/DevPollArrayWrapper.c
diff --git a/user/openjdk8/icedtea-jdk-musl.patch b/user/openjdk8/icedtea-jdk-musl.patch
index 97946ba42..7dbd6872c 100644
--- a/user/openjdk8/icedtea-jdk-musl.patch
+++ b/user/openjdk8/icedtea-jdk-musl.patch
@@ -47,32 +47,10 @@ diff -ru openjdk.orig/jdk/src/solaris/native/java/net/Inet4AddressImpl.c openjdk
#define HAS_GLIBC_GETHOSTBY_R 1
#endif
-diff -ru openjdk.orig/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c
---- openjdk.orig/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2017-01-25 04:22:03.000000000 +0000
-+++ openjdk/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c 2017-02-06 11:23:47.047832009 +0000
-@@ -41,7 +41,6 @@
- #endif
- #ifdef __linux__
- #include <unistd.h>
--#include <sys/sysctl.h>
- #include <sys/utsname.h>
- #include <netinet/ip.h>
-
-diff -ru openjdk.orig/jdk/src/solaris/native/java/net/PlainSocketImpl.c openjdk/jdk/src/solaris/native/java/net/PlainSocketImpl.c
---- openjdk.orig/jdk/src/solaris/native/java/net/PlainSocketImpl.c 2017-01-25 04:22:03.000000000 +0000
-+++ openjdk/jdk/src/solaris/native/java/net/PlainSocketImpl.c 2017-02-06 11:23:47.047832009 +0000
-@@ -43,7 +43,6 @@
- #endif
- #ifdef __linux__
- #include <unistd.h>
--#include <sys/sysctl.h>
- #endif
-
- #include "jvm.h"
diff -ru openjdk.orig/jdk/src/solaris/native/java/net/linux_close.c openjdk/jdk/src/solaris/native/java/net/linux_close.c
---- openjdk.orig/jdk/src/solaris/native/java/net/linux_close.c 2017-01-25 04:22:03.000000000 +0000
-+++ openjdk/jdk/src/solaris/native/java/net/linux_close.c 2017-02-06 11:23:47.047832009 +0000
-@@ -56,7 +56,7 @@
+--- openjdk.orig/jdk/src/solaris/native/java/net/linux_close.c 2020-04-29 12:33:10.000000000 +0000
++++ openjdk/jdk/src/solaris/native/java/net/linux_close.c 2020-05-02 19:35:51.590000000 +0000
+@@ -58,7 +58,7 @@ typedef struct {
/*
* Signal to unblock thread
*/
@@ -80,8 +58,8 @@ diff -ru openjdk.orig/jdk/src/solaris/native/java/net/linux_close.c openjdk/jdk/
+static int sigWakeup;
/*
- * The fd table and the number of file descriptors
-@@ -95,6 +95,9 @@
+ * fdTable holds one entry per file descriptor, up to a certain
+@@ -147,6 +147,9 @@ static void __attribute((constructor)) i
/*
* Setup the signal handler
*/
diff --git a/user/openjdk8/icedtea-jdk-tls-nist-curves.patch b/user/openjdk8/icedtea-jdk-tls-nist-curves.patch
deleted file mode 100644
index 75fb3af8c..000000000
--- a/user/openjdk8/icedtea-jdk-tls-nist-curves.patch
+++ /dev/null
@@ -1,47 +0,0 @@
-Bug #7404 TLS negotiation error in OpenJDK 8 u131
-
-Fixes an OpenJDK 8 regression discovered in docker-library/openjdk#115
-on Alpine Linux 3.5 (u121) and 3.6 (u131) that causes TLS negotiation
-errors for some clients.
-
-Root cause appears to be OpenJDK announcing support for NIST curves the
-underlying NSS library does doesn't. This patch limits OpenJDK's
-announcement to elliptic curves 23 (secp256r1), 24 (secp384r1), and 25
-(secp521r1).
-
-Related issues:
-
-* https://github.com/docker-library/openjdk/issues/115
-* https://bugs.alpinelinux.org/issues/7404
-* https://access.redhat.com/discussions/2339811
-* https://bugzilla.redhat.com/show_bug.cgi?id=1022017
-* https://bugzilla.redhat.com/show_bug.cgi?id=1348525
-
---- openjdk.orig/jdk/src/share/classes/sun/security/ssl/EllipticCurvesExtension.java 2017-05-08 20:03:50.000000000 -0700
-+++ openjdk/jdk/src/share/classes/sun/security/ssl/EllipticCurvesExtension.java 2017-06-14 13:37:00.000000000 -0700
-@@ -168,21 +168,10 @@
- "contains no supported elliptic curves");
- }
- } else { // default curves
-- int[] ids;
-- if (requireFips) {
-- ids = new int[] {
-- // only NIST curves in FIPS mode
-- 23, 24, 25, 9, 10, 11, 12, 13, 14,
-- };
-- } else {
-- ids = new int[] {
-- // NIST curves first
-- 23, 24, 25, 9, 10, 11, 12, 13, 14,
-- // non-NIST curves
-- 22,
-- };
-- }
--
-+ int[] ids = new int[] {
-+ // NSS currently only supports these three NIST curves
-+ 23, 24, 25
-+ };
- idList = new ArrayList<>(ids.length);
- for (int curveId : ids) {
- if (isAvailableCurve(curveId)) {
diff --git a/user/openjdk8/maintain b/user/openjdk8/maintain
new file mode 100755
index 000000000..41133cf7f
--- /dev/null
+++ b/user/openjdk8/maintain
@@ -0,0 +1,162 @@
+#!/bin/sh -e
+
+##
+# The purpose of this script is for reproducibility,
+# not to be used except for creation of the bootstrap
+# tarballs and to document how they were created for
+# the RC3 release. This is a TEMPORARY WORKAROUND so
+# that we do not unnecessarily postpone RC3 over Java.
+#
+# Files are uploaded to:
+#
+# * https://distfiles.adelielinux.org/source/openjdk/
+#
+# This script downloads RC2 'openjdk8' .apk files,
+# extracts some JVM bits, and produces tarballs for
+# bootstrapping this package, suitable for upload to
+# https://distfiles.adelielinux.org/source/openjdk/.
+#
+# Shared libraries may be added for compatibility to
+# avoid using system-provided libraries which may be
+# incompatible with the existing binaries.
+#
+# Note: checksums may vary between 'tar' versions or
+# implementations; please do not rely on this. The
+# output has been verified by 'diff -qr', may differ
+# in packing order, compression, or headers only.
+#
+# Based on https://git.adelielinux.org/-/snippets/172.
+#
+HERE="$(dirname $(readlink -f ${0}))";
+
+
+##
+# mirror for input binaries
+#
+host=https://distfiles.adelielinux.org;
+from=1.0-rc2;
+
+
+##
+# supported architectures
+#
+# Note: empty or broken tarballs may be created for
+# architectures that are missing ingredients. We do
+# not treat this as an error; we want to have a full
+# set of bootstrap tarballs, fix as needed, and not
+# have to update code in multiple places.
+#
+arch="aarch64 armv7 ppc64 ppc x86_64 pmmx";
+
+
+##
+# packages to fetch
+#
+# Note: order is important; we assume tree structure
+# during the manipulation stage. Does not matter for
+# extraction, which we do before manipulation anyway.
+# This is easily refactored but I can't be bothered.
+#
+apks="
+user/openjdk8-jre-lib:8.252.09-r0
+user/openjdk8-jre-base:8.252.09-r0
+user/openjdk8-jre:8.252.09-r0
+user/openjdk8:8.252.09-r0
+system/libffi:3.2.1-r6
+";
+
+
+##
+# global variables
+#
+vers=; # 3.2.1-r6
+repo=; # system
+name=; # libffi
+
+
+##
+# supporting routines
+#
+set_metadata ()
+{
+ vers=${apk#*:};
+ repo=${apk%/*};
+ temp=${apk%:${vers}};
+ name=${temp#*/};
+}
+
+brk_unsupport ()
+{
+ printf "E: target is missing dependency '%s'.\n" "${1}";
+ break;
+}
+
+
+##
+# H. P. Lovecraft
+# knows this is daft.
+#
+for cpu in $arch; do
+
+ printf "\n%s\n" "$cpu";
+
+ # output directory (specific to APKBUILD)
+ keep="${HERE}"/$cpu/boot-home;
+
+ # always start fresh
+ rm -fr "${HERE}"/$cpu;
+ mkdir -p "${keep}";
+
+ # initial download/extract
+ for apk in $apks; do
+
+ set_metadata $apk;
+
+ printf " * %s\n" "$name-$vers.apk";
+
+ curl -s $host/adelie/$from/$repo/$cpu/$name-$vers.apk \
+ | tar -C "${HERE}"/$cpu -xzf - 2>/dev/null \
+ || brk_unsupport "$name-$vers.apk"; # armv7
+
+ done
+
+ # optional special-case manipulation
+ for apk in $apks; do
+
+ set_metadata $apk;
+
+ case "${name}" in
+ libffi)
+ # naming does not match $cpu!
+ # e.g. { x86_64 --> amd64, ppc64 --> ppc, pmmx --> i386 }
+ # so we look for a known file and work relative to it
+ _tmp=$(find "${keep}" -name libjvm.so || brk_unsupport "libjvm.so"); # armv7
+ _dst=${_tmp%/*};
+ cp -a $(find "${HERE}"/$cpu/usr/lib -name "libffi.so*") \
+ "${_dst}" \
+ || brk_unsupport "libffi.so*"; # armv7
+ ;;
+ openjdk8)
+ cp -a "${HERE}"/$cpu/usr/lib/jvm/java-1.8-openjdk \
+ "${keep}"/$cpu \
+ || brk_unsupport "openjdk8"; # armv7
+ ;;
+ esac
+
+ done
+
+ # create bootstrap tarball
+ (
+ cd "${HERE}"/$cpu;
+
+ # cleanup unnecessary files (specific to APKBUILD)
+ rm -fr usr;
+
+ chown -R 1000:1000 .;
+ tar -cJf "${HERE}"/openjdk8-bootstrap-$cpu.txz .;
+ )
+
+ # cleanup intermediates
+ rm -fr "${HERE}"/$cpu;
+
+done
diff --git a/user/openjdk8/project-autoconf-2xx.patch b/user/openjdk8/project-autoconf-2xx.patch
new file mode 100644
index 000000000..7930aac2a
--- /dev/null
+++ b/user/openjdk8/project-autoconf-2xx.patch
@@ -0,0 +1,30 @@
+diff -ur a/autogen.sh b/autogen.sh
+--- a/autogen.sh 2022-02-04 04:38:57.470000000 +0000
++++ b/autogen.sh 2022-02-04 04:40:25.330000000 +0000
+@@ -11,7 +11,7 @@
+ AUTOCONF_VERSION=`${AUTOCONF} --version | head -1 | sed 's/^[^0-9]*\([0-9.][0-9.]*\).*/\1/'`
+ # echo ${AUTOCONF_VERSION}
+ case ${AUTOCONF_VERSION} in
+- 2.59* | 2.6[0-9]* )
++ 2.59* | 2.[0-9]* )
+ HAVE_AUTOCONF=true
+ break;
+ ;;
+@@ -28,7 +28,7 @@
+ AUTOHEADER_VERSION=`${AUTOHEADER} --version | head -1 | sed 's/^[^0-9]*\([0-9.][0-9.]*\).*/\1/'`
+ # echo ${AUTOHEADER_VERSION}
+ case ${AUTOHEADER_VERSION} in
+- 2.59* | 2.6[0-9]* )
++ 2.59* | 2.[0-9]* )
+ HAVE_AUTOHEADER=true
+ break;
+ ;;
+@@ -45,7 +45,7 @@
+ AUTORECONF_VERSION=`${AUTORECONF} --version | head -1 | sed 's/^[^0-9]*\([0-9.][0-9.]*\).*/\1/'`
+ # echo ${AUTORECONF_VERSION}
+ case ${AUTORECONF_VERSION} in
+- 2.59* | 2.6[0-9]* )
++ 2.59* | 2.[0-9]* )
+ HAVE_AUTORECONF=true
+ break;
+ ;;
diff --git a/user/openjpeg/APKBUILD b/user/openjpeg/APKBUILD
index 6e2993bd6..07174ca8b 100644
--- a/user/openjpeg/APKBUILD
+++ b/user/openjpeg/APKBUILD
@@ -1,28 +1,25 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=openjpeg
-pkgver=2.3.1
+pkgver=2.5.0
pkgrel=0
pkgdesc="Open-source implementation of JPEG 2000 image codec"
-url="http://www.openjpeg.org/"
+url="https://www.openjpeg.org/"
arch="all"
options="!check" # No test suite.
license="BSD-2-Clause-NetBSD"
+depends=""
depends_dev="$pkgname-tools"
makedepends="libpng-dev tiff-dev lcms2-dev doxygen cmake"
subpackages="$pkgname-dev $pkgname-tools"
source="$pkgname-$pkgver.tar.gz::https://github.com/uclouvain/openjpeg/archive/v$pkgver.tar.gz"
-build() {
- cmake . \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_BUILD_TYPE=RelWithDebInfo \
- -DOPENJPEG_INSTALL_LIB_DIR=lib \
- -DOPENJPEG_INSTALL_PACKAGE_DIR=/usr/lib/cmake/$pkgname-${pkgver%.*}
- make
-}
-
# secfixes:
+# 2.3.1-r3:
+# - CVE-2020-6851
+# - CVE-2020-8112
+# 2.3.1-r2:
+# - CVE-2019-12973
# 2.3.0-r0:
# - CVE-2017-14039
# 2.2.0-r2:
@@ -37,6 +34,15 @@ build() {
# - CVE-2016-9580
# - CVE-2016-9581
+build() {
+ cmake . \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+ -DOPENJPEG_INSTALL_LIB_DIR=lib \
+ -DOPENJPEG_INSTALL_PACKAGE_DIR=lib/cmake/$pkgname-${pkgver%.*}
+ make
+}
+
package() {
make DESTDIR="$pkgdir" install
}
@@ -47,4 +53,4 @@ tools() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}
-sha512sums="339fbc899bddf2393d214df71ed5d6070a3a76b933b1e75576c8a0ae9dfcc4adec40bdc544f599e4b8d0bc173e4e9e7352408497b5b3c9356985605830c26c03 openjpeg-2.3.1.tar.gz"
+sha512sums="08975a2dd79f1e29fd1824249a5fbe66026640ed787b3a3aa8807c2c69f994240ff33e2132f8bf15bbc2202bef7001f98e42d487231d4eebc8e503538658049a openjpeg-2.5.0.tar.gz"
diff --git a/user/openldap/APKBUILD b/user/openldap/APKBUILD
index 552c760c6..0aef3baa7 100644
--- a/user/openldap/APKBUILD
+++ b/user/openldap/APKBUILD
@@ -1,37 +1,40 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-# Contributor: Jakub Jirutka <jakub@jirutka.cz>
#
# secfixes:
+# 2.4.50-r0:
+# - CVE-2020-12243
+# 2.4.48-r0:
+# - CVE-2019-13057
+# - CVE-2019-13565
# 2.4.46:
-# - CVE-2017-14159
-# - CVE-2017-17740
+# - CVE-2017-14159
+# - CVE-2017-17740
# 2.4.44-r5:
-# - CVE-2017-9287
+# - CVE-2017-9287
#
pkgname=openldap
-pkgver=2.4.47
-pkgrel=0
+pkgver=2.6.3
+pkgrel=2
pkgdesc="LDAP Server"
-url="http://www.openldap.org/"
+url="https://www.openldap.org/"
arch="all"
-options="!check" # Test suite takes > 2 hours to complete on each builder.
-license="custom"
+license="OLDAP-2.8"
depends=""
-pkgusers="ldap"
-pkggroups="ldap"
depends_dev="openssl-dev cyrus-sasl-dev util-linux-dev"
-makedepends="$depends_dev db-dev groff unixodbc-dev libtool
- autoconf automake libtool"
+makedepends="$depends_dev groff icu-dev unixodbc-dev libtool"
subpackages="$pkgname-dev $pkgname-doc libldap $pkgname-openrc
$pkgname-clients $pkgname-passwd-pbkdf2:passwd_pbkdf2
$pkgname-backend-all:_backend_all:noarch
$pkgname-overlay-all:_overlay_all:noarch"
+pkgusers="ldap"
+pkggroups="ldap"
install="$pkgname.pre-install $pkgname.post-install $pkgname.post-upgrade"
-source="ftp://ftp.$pkgname.org/pub/OpenLDAP/$pkgname-release/$pkgname-$pkgver.tgz
- openldap-2.4-ppolicy.patch
- openldap-2.4.11-libldap_r.patch
+source="https://www.$pkgname.org/software/download/OpenLDAP/$pkgname-release/$pkgname-$pkgver.tgz
fix-manpages.patch
configs.patch
+ test063.patch
+ test079.patch
+ time64.patch
slapd.initd
slapd.confd
@@ -39,8 +42,7 @@ source="ftp://ftp.$pkgname.org/pub/OpenLDAP/$pkgname-release/$pkgname-$pkgver.tg
# SLAPD backends
_backends=""
-for _name in bdb dnssrv hdb ldap mdb meta monitor null passwd \
- relay shell sql sock
+for _name in dnssrv ldap mdb meta null passwd relay sock
do
subpackages="$subpackages $pkgname-back-$_name:_backend"
_backends="$_backends $pkgname-back-$_name"
@@ -56,17 +58,7 @@ do
_overlays="$_overlays $pkgname-overlay-$_name"
done
-prepare() {
- cd "$builddir"
- update_config_sub
-
- sed -i '/^STRIP/s,-s,,g' build/top.mk
- libtoolize --force && aclocal && autoconf
-}
-
-build () {
- cd "$builddir"
-
+build() {
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -79,22 +71,18 @@ build () {
--enable-crypt \
--enable-modules \
--enable-dynamic \
- --enable-bdb=mod \
--enable-dnssrv=mod \
- --enable-hdb=mod \
--enable-ldap=mod \
--enable-mdb=mod \
--enable-meta=mod \
- --enable-monitor=mod \
--enable-null=mod \
--enable-passwd=mod \
--enable-relay=mod \
- --enable-shell=mod \
--enable-sock=mod \
- --enable-sql=mod \
--enable-overlays=mod \
--with-tls=openssl \
--with-cyrus-sasl
+ make depend
make
# Build passwd pbkdf2.
@@ -103,13 +91,10 @@ build () {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
-
make DESTDIR="$pkgdir" install
# Install passwd pbkdf2.
@@ -121,8 +106,8 @@ package() {
rmdir var/lib/openldap/run
# Fix tools symlinks to slapd.
- local path; for path in $(find usr/sbin/ -type l); do
- ln -sf slapd $path
+ for _path in $(find usr/sbin/ -type l); do
+ ln -sf slapd $_path
done
# Move executable from lib to sbin.
@@ -146,7 +131,6 @@ package() {
libldap() {
pkgdesc="OpenLDAP libraries"
depends=""
- install=""
_submv "usr/lib/*.so*" etc/openldap/ldap.conf
}
@@ -196,16 +180,17 @@ _overlay() {
}
_submv() {
- local path; for path in "$@"; do
+ for path in "$@"; do
mkdir -p "$subpkgdir"/${path%/*}
mv "$pkgdir"/$path "$subpkgdir"/${path%/*}/
done
}
-sha512sums="d424079e34207e3d24383a2bea70a07ded40714982a6767174d2b2cb208cd94feab5ef12157accae915b8e404e5773a7547aaef65f06b44dc3cc09c6a64d5a11 openldap-2.4.47.tgz
-5d34d49eabe7cb66cf8284cc3bd9730fa23df4932df68549e242d250ee50d40c434ae074ebc720d5fbcd9d16587c9333c5598d30a5f1177caa61461ab7771f38 openldap-2.4-ppolicy.patch
-44d97efb25d4f39ab10cd5571db43f3bfa7c617a5bb087085ae16c0298aca899b55c8742a502121ba743a73e6d77cd2056bc96cee63d6d0862dabc8fb5574357 openldap-2.4.11-libldap_r.patch
-8c4244d316a05870dd1147b2ab7ddbcfd7626b5dce2f5a0e72f066dc635c2edb4f1ea3be88c6fec2d5ab016001be16bedef70f2ce0695c3cd96f69e1614ff177 fix-manpages.patch
-0d2e570ddcb7ace1221abad9fc1d3dd0d00d6948340df69879b449959a68feee6a0ad8e17ef9971b35986293e16fc9d8e88de81815fedd5ea6a952eb085406ca configs.patch
+sha512sums="56efbbfc68779ad635d2c25228eb9c4f1553b107b96e8a438029b1c5d2f2647cf4d437770554392b436718ea44a4813e17f5195049f67fc09d063a981096cd85 openldap-2.6.3.tgz
+0c026a5c8790ebb7d6784514363f1403c693d61defbeaacae574267c3b7833f198919d31604da1f49db3000c9a561cb6d36d95e021f7906761e45d1434cef15b fix-manpages.patch
+1a1f669db968061eb8c9fb5e42768d0f12075d4eb4d8ae7085533276775027c56760c2f7413494deebec4d78b053f674661236e6e1506ecffadf510985c393c0 configs.patch
+26fbe3fa2182d80ee98e6885972f803d03ac45a72cb8478c31e76a6f07f45565e6fdcdbf528fcf61e77fd4f9e2068e4f82d9c9c178df7da103d4e9b714bf204e test063.patch
+c7f2b32f2643d6b7ea5dbee6c1baad7cae53ea9d511cfae6c976edb8f8f85ae14351f612f02e560d15c6b577676804fd7b0a6f45f79cc1cdbe11f117e61ad088 test079.patch
+a3d2ce7cbfd8a24605efef47550833e0a2e0f7aa426a46342e5f7bf2ef082b1640c31cd33eb246c225cc4cdc011ed4a640763158111e62f9e76e3530c3fa786e time64.patch
0c3606e4dad1b32f1c4b62f2bc1990a4c9f7ccd10c7b50e623309ba9df98064e68fc42a7242450f32fb6e5fa2203609d3d069871b5ae994cd4b227a078c93532 slapd.initd
64dc4c0aa0abe3d9f7d2aef25fe4c8e23c53df2421067947ac4d096c9e942b26356cb8577ebc41b52d88d0b0a03b2a3e435fe86242671f9b36555a5f82ee0e3a slapd.confd"
diff --git a/user/openldap/CVE-2017-9287.patch b/user/openldap/CVE-2017-9287.patch
deleted file mode 100644
index 1599c1331..000000000
--- a/user/openldap/CVE-2017-9287.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 0cee1ffb6021b1aae3fcc9581699da1c85a6dd6e Mon Sep 17 00:00:00 2001
-From: Ryan Tandy <ryan@nardis.ca>
-Date: Wed, 17 May 2017 20:07:39 -0700
-Subject: [PATCH] ITS#8655 fix double free on paged search with pagesize 0
-
-Fixes a double free when a search includes the Paged Results control
-with a page size of 0 and the search base matches the filter.
----
- servers/slapd/back-mdb/search.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/servers/slapd/back-mdb/search.c b/servers/slapd/back-mdb/search.c
-index 301d1a4..43442aa 100644
---- a/servers/slapd/back-mdb/search.c
-+++ b/servers/slapd/back-mdb/search.c
-@@ -1066,7 +1066,8 @@ notfound:
- /* check size limit */
- if ( get_pagedresults(op) > SLAP_CONTROL_IGNORED ) {
- if ( rs->sr_nentries >= ((PagedResultsState *)op->o_pagedresults_state)->ps_size ) {
-- mdb_entry_return( op, e );
-+ if (e != base)
-+ mdb_entry_return( op, e );
- e = NULL;
- send_paged_response( op, rs, &lastid, tentries );
- goto done;
---
-1.7.10.4
-
diff --git a/user/openldap/configs.patch b/user/openldap/configs.patch
index e7ec65c4b..c7077672a 100644
--- a/user/openldap/configs.patch
+++ b/user/openldap/configs.patch
@@ -1,3 +1,6 @@
+* Use /run/openldap for the state directory.
+* We use .so instead of .la for module suffix.
+
--- a/servers/slapd/slapd.conf
+++ b/servers/slapd/slapd.conf
@@ -2,7 +2,7 @@
@@ -9,7 +12,7 @@
# Define global ACLs to disable default read access.
-@@ -10,13 +10,16 @@
+@@ -10,13 +10,14 @@
# service AND an understanding of referrals.
#referral ldap://root.openldap.org
@@ -20,18 +23,16 @@
+argsfile /run/openldap/slapd.args
# Load dynamic backend modules:
--# modulepath %MODULEDIR%
--# moduleload back_mdb.la
+-modulepath %MODULEDIR%
+-moduleload back_mdb.la
-# moduleload back_ldap.la
+modulepath /usr/lib/openldap
+moduleload back_mdb.so
-+# moduleload back_hdb.so
-+# moduleload back_bbd.so
+# moduleload back_ldap.so
# Sample security restrictions
# Require integrity protection (prevent hijacking)
-@@ -53,13 +56,16 @@
+@@ -62,13 +63,16 @@
maxsize 1073741824
suffix "dc=my-domain,dc=com"
rootdn "cn=Manager,dc=my-domain,dc=com"
@@ -63,30 +64,18 @@
#
# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
-@@ -26,22 +27,23 @@
- #
- # Load dynamic backend modules:
- #
--#dn: cn=module,cn=config
--#objectClass: olcModuleList
--#cn: module
--#olcModulepath: %MODULEDIR%
--#olcModuleload: back_bdb.la
--#olcModuleload: back_hdb.la
+@@ -29,16 +30,16 @@
+ dn: cn=module,cn=config
+ objectClass: olcModuleList
+ cn: module
+-olcModulepath: %MODULEDIR%
+-olcModuleload: back_mdb.la
-#olcModuleload: back_ldap.la
-#olcModuleload: back_passwd.la
--#olcModuleload: back_shell.la
-+dn: cn=module,cn=config
-+objectClass: olcModuleList
-+cn: module
+olcModulepath: /usr/lib/openldap
-+#olcModuleload: back_bdb.so
-+#olcModuleload: back_hdb.so
-+#olcModuleload: back_ldap.so
+olcModuleload: back_mdb.so
++#olcModuleload: back_ldap.so
+#olcModuleload: back_passwd.so
-+#olcModuleload: back_shell.so
-
dn: cn=schema,cn=config
objectClass: olcSchemaConfig
@@ -97,7 +86,7 @@
# Frontend settings
#
-@@ -83,13 +85,16 @@
+@@ -81,13 +82,16 @@
olcDatabase: mdb
olcSuffix: dc=my-domain,dc=com
olcRootDN: cn=Manager,dc=my-domain,dc=com
diff --git a/user/openldap/fix-manpages.patch b/user/openldap/fix-manpages.patch
index 179569494..03c925537 100644
--- a/user/openldap/fix-manpages.patch
+++ b/user/openldap/fix-manpages.patch
@@ -8,7 +8,7 @@ diff --git a/doc/man/man1/ldapmodify.1 b/doc/man/man1/ldapmodify.1
index 3def6da..466c772 100644
--- a/doc/man/man1/ldapmodify.1
+++ b/doc/man/man1/ldapmodify.1
-@@ -397,8 +397,7 @@ exit status and a diagnostic message being written to standard error.
+@@ -382,8 +382,7 @@ exit status and a diagnostic message being written to standard error.
.BR ldap_add_ext (3),
.BR ldap_delete_ext (3),
.BR ldap_modify_ext (3),
@@ -18,18 +18,6 @@ index 3def6da..466c772 100644
.SH AUTHOR
The OpenLDAP Project <http://www.openldap.org/>
.SH ACKNOWLEDGEMENTS
-diff --git a/doc/man/man5/ldap.conf.5 b/doc/man/man5/ldap.conf.5
-index cfde143..63592cb 100644
---- a/doc/man/man5/ldap.conf.5
-+++ b/doc/man/man5/ldap.conf.5
-@@ -317,6 +317,7 @@ certificates in separate individual files. The
- .B TLS_CACERT
- is always used before
- .B TLS_CACERTDIR.
-+The specified directory must be managed with the LibreSSL c_rehash utility.
- This parameter is ignored with GnuTLS.
-
- When using Mozilla NSS, <path> may contain a Mozilla NSS cert/key
diff --git a/doc/man/man8/slapd.8 b/doc/man/man8/slapd.8
index b739f4d..e2a1a00 100644
--- a/doc/man/man8/slapd.8
@@ -41,9 +29,9 @@ index b739f4d..e2a1a00 100644
-.B LIBEXECDIR/slapd
+.B slapd
[\c
- .BR \-4 | \-6 ]
+ .BR \-V [ V [ V ]]
[\c
-@@ -317,7 +317,7 @@ the LDAP databases defined in the default config file, just type:
+@@ -332,7 +332,7 @@ the LDAP databases defined in the default config file, just type:
.LP
.nf
.ft tt
@@ -52,7 +40,7 @@ index b739f4d..e2a1a00 100644
.ft
.fi
.LP
-@@ -328,7 +328,7 @@ on voluminous debugging which will be printed on standard error, type:
+@@ -343,7 +343,7 @@ on voluminous debugging which will be printed on standard error, type:
.LP
.nf
.ft tt
@@ -61,7 +49,7 @@ index b739f4d..e2a1a00 100644
.ft
.fi
.LP
-@@ -336,7 +336,7 @@ To test whether the configuration file is correct or not, type:
+@@ -351,7 +351,7 @@ To test whether the configuration file is correct or not, type:
.LP
.nf
.ft tt
diff --git a/user/openldap/libressl.patch b/user/openldap/libressl.patch
deleted file mode 100644
index ac0106418..000000000
--- a/user/openldap/libressl.patch
+++ /dev/null
@@ -1,65 +0,0 @@
---- a/libraries/libldap/tls_o.c.orig 2017-06-04 16:31:28 UTC
-+++ b/libraries/libldap/tls_o.c
-@@ -47,7 +47,7 @@
- #include <ssl.h>
- #endif
-
--#if OPENSSL_VERSION_NUMBER >= 0x10100000
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000 && !defined(LIBRESSL_VERSION_NUMBER)
- #define ASN1_STRING_data(x) ASN1_STRING_get0_data(x)
- #endif
-
-@@ -157,7 +157,7 @@ tlso_init( void )
- (void) tlso_seed_PRNG( lo->ldo_tls_randfile );
- #endif
-
--#if OPENSSL_VERSION_NUMBER < 0x10100000
-+#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(LIBRESSL_VERSION_NUMBER)
- SSL_load_error_strings();
- SSL_library_init();
- OpenSSL_add_all_digests();
-@@ -205,7 +205,7 @@ static void
- tlso_ctx_ref( tls_ctx *ctx )
- {
- tlso_ctx *c = (tlso_ctx *)ctx;
--#if OPENSSL_VERSION_NUMBER < 0x10100000
-+#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(LIBRESSL_VERSION_NUMBER)
- #define SSL_CTX_up_ref(ctx) CRYPTO_add( &(ctx->references), 1, CRYPTO_LOCK_SSL_CTX )
- #endif
- SSL_CTX_up_ref( c );
-@@ -464,7 +464,7 @@ tlso_session_my_dn( tls_session *sess, struct berval *
- if (!x) return LDAP_INVALID_CREDENTIALS;
-
- xn = X509_get_subject_name(x);
--#if OPENSSL_VERSION_NUMBER < 0x10100000
-+#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(LIBRESSL_VERSION_NUMBER)
- der_dn->bv_len = i2d_X509_NAME( xn, NULL );
- der_dn->bv_val = xn->bytes->data;
- #else
-@@ -500,7 +500,7 @@ tlso_session_peer_dn( tls_session *sess, struct berval
- return LDAP_INVALID_CREDENTIALS;
-
- xn = X509_get_subject_name(x);
--#if OPENSSL_VERSION_NUMBER < 0x10100000
-+#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(LIBRESSL_VERSION_NUMBER)
- der_dn->bv_len = i2d_X509_NAME( xn, NULL );
- der_dn->bv_val = xn->bytes->data;
- #else
-@@ -721,7 +721,7 @@ struct tls_data {
- Sockbuf_IO_Desc *sbiod;
- };
-
--#if OPENSSL_VERSION_NUMBER < 0x10100000
-+#if OPENSSL_VERSION_NUMBER < 0x10100000 || defined(LIBRESSL_VERSION_NUMBER)
- #define BIO_set_init(b, x) b->init = x
- #define BIO_set_data(b, x) b->ptr = x
- #define BIO_clear_flags(b, x) b->flags &= ~(x)
-@@ -822,7 +822,7 @@ tlso_bio_puts( BIO *b, const char *str )
- return tlso_bio_write( b, str, strlen( str ) );
- }
-
--#if OPENSSL_VERSION_NUMBER >= 0x10100000
-+#if OPENSSL_VERSION_NUMBER >= 0x10100000 && !defined(LIBRESSL_VERSION_NUMBER)
- struct bio_method_st {
- int type;
- const char *name;
diff --git a/user/openldap/openldap-2.4-ppolicy.patch b/user/openldap/openldap-2.4-ppolicy.patch
deleted file mode 100644
index c05790e3e..000000000
--- a/user/openldap/openldap-2.4-ppolicy.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff -urN ./clients.orig/tools/common.c ./clients/tools/common.c
---- ./clients.orig/tools/common.c 2007-09-01 01:13:50.000000000 +0200
-+++ ./clients/tools/common.c 2008-01-13 21:50:06.000000000 +0100
-@@ -1262,8 +1262,8 @@
- int nsctrls = 0;
-
- #ifdef LDAP_CONTROL_PASSWORDPOLICYREQUEST
-+ LDAPControl c;
- if ( ppolicy ) {
-- LDAPControl c;
- c.ldctl_oid = LDAP_CONTROL_PASSWORDPOLICYREQUEST;
- c.ldctl_value.bv_val = NULL;
- c.ldctl_value.bv_len = 0;
diff --git a/user/openldap/openldap-2.4.11-libldap_r.patch b/user/openldap/openldap-2.4.11-libldap_r.patch
deleted file mode 100644
index 448249a3b..000000000
--- a/user/openldap/openldap-2.4.11-libldap_r.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Nuar openldap-2.4.11.orig/servers/slapd/slapi/Makefile.in openldap-2.4.11/servers/slapd/slapi/Makefile.in
---- openldap-2.4.11.orig/servers/slapd/slapi/Makefile.in 2008-02-11 15:26:49.000000000 -0800
-+++ openldap-2.4.11/servers/slapd/slapi/Makefile.in 2008-10-14 02:10:18.402799262 -0700
-@@ -37,6 +37,7 @@
- XLIBS = $(LIBRARY)
- XXLIBS =
- NT_LINK_LIBS = $(AC_LIBS)
-+UNIX_LINK_LIBS = ../../../libraries/libldap_r/libldap_r.la $(LTHREAD_LIBS)
-
- XINCPATH = -I$(srcdir)/.. -I$(srcdir)
- XDEFS = $(MODULES_CPPFLAGS)
diff --git a/user/openldap/openldap-mqtt-overlay.patch b/user/openldap/openldap-mqtt-overlay.patch
deleted file mode 100644
index 795480f1e..000000000
--- a/user/openldap/openldap-mqtt-overlay.patch
+++ /dev/null
@@ -1,447 +0,0 @@
-diff --git a/contrib/slapd-modules/mqtt/Makefile b/contrib/slapd-modules/mqtt/Makefile
-new file mode 100644
-index 0000000..2cb4db7
---- /dev/null
-+++ b/contrib/slapd-modules/mqtt/Makefile
-@@ -0,0 +1,45 @@
-+# $OpenLDAP$
-+
-+LDAP_SRC = ../../..
-+LDAP_BUILD = ../../..
-+LDAP_INC = -I$(LDAP_BUILD)/include -I$(LDAP_SRC)/include -I$(LDAP_SRC)/servers/slapd
-+LDAP_LIB = $(LDAP_BUILD)/libraries/libldap_r/libldap_r.la \
-+ $(LDAP_BUILD)/libraries/liblber/liblber.la
-+
-+LIBTOOL = $(LDAP_BUILD)/libtool
-+CC = gcc
-+OPT = -g -O2 -Wall
-+DEFS =
-+INCS = $(LDAP_INC)
-+LIBS = $(LDAP_LIB) -lmosquitto
-+
-+PROGRAMS = mqtt.la
-+LTVER = 0:0:0
-+
-+prefix=/usr/local
-+exec_prefix=$(prefix)
-+ldap_subdir=/openldap
-+
-+libdir=$(exec_prefix)/lib
-+libexecdir=$(exec_prefix)/libexec
-+moduledir = $(libdir)$(ldap_subdir)
-+
-+.SUFFIXES: .c .o .lo
-+
-+.c.lo:
-+ $(LIBTOOL) --mode=compile $(CC) $(OPT) $(DEFS) $(INCS) -c $<
-+
-+all: $(PROGRAMS)
-+
-+mqtt.la: mqtt.lo
-+ $(LIBTOOL) --mode=link $(CC) $(OPT) -version-info $(LTVER) \
-+ -rpath $(moduledir) -module -o $@ $? $(LIBS)
-+
-+clean:
-+ rm -rf *.o *.lo *.la .libs
-+
-+install: $(PROGRAMS)
-+ mkdir -p $(DESTDIR)$(moduledir)
-+ for p in $(PROGRAMS) ; do \
-+ $(LIBTOOL) --mode=install cp $$p $(DESTDIR)$(moduledir) ; \
-+ done
-diff --git a/contrib/slapd-modules/mqtt/mqtt.c b/contrib/slapd-modules/mqtt/mqtt.c
-new file mode 100644
-index 0000000..b3a0a31
---- /dev/null
-+++ b/contrib/slapd-modules/mqtt/mqtt.c
-@@ -0,0 +1,389 @@
-+/* $OpenLDAP$ */
-+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
-+ *
-+ * Copyright 2014 Timo Teräs <timo.teras@iki.fi>.
-+ * All rights reserved.
-+ *
-+ * Redistribution and use in source and binary forms, with or without
-+ * modification, are permitted only as authorized by the OpenLDAP
-+ * Public License.
-+ *
-+ * A copy of this license is available in file LICENSE in the
-+ * top-level directory of the distribution or, alternatively, at
-+ * http://www.OpenLDAP.org/license.html.
-+ */
-+/* mqtt-overlay
-+ *
-+ * This is an OpenLDAP overlay that... */
-+
-+#include <mosquitto.h>
-+#include <unistd.h>
-+
-+#include "portable.h"
-+#include "slap.h"
-+#include "config.h"
-+
-+typedef struct mqtt_notify_t {
-+ struct mqtt_notify_t *next;
-+ char *topic;
-+ char *dn_group_str;
-+ char *oc_group_str;
-+ char *str_member;
-+
-+ struct berval ndn_group;
-+ ObjectClass *oc_group;
-+ AttributeDescription *ad_member;
-+ int notify_pending;
-+} mqtt_notify_t;
-+
-+typedef struct mqtt_t {
-+ struct mosquitto *mq;
-+ int port;
-+ char *hostname, *username, *password;
-+ mqtt_notify_t *notify_map;
-+} mqtt_t;
-+
-+static ConfigDriver mqtt_config_notify;
-+
-+static ConfigTable mqttcfg[] = {
-+ { "mqtt-hostname", "hostname", 2, 2, 0,
-+ ARG_STRING|ARG_OFFSET, (void *)offsetof(mqtt_t, hostname),
-+ "( OLcfgCtAt:5.1 NAME 'olcMqttHostname' "
-+ "DESC 'Hostname of MQTT broker' "
-+ "SYNTAX OMsDirectoryString SINGLE-VALUE )",
-+ NULL, NULL },
-+ { "mqtt-port", "port", 2, 2, 0,
-+ ARG_INT|ARG_OFFSET, (void *)offsetof(mqtt_t, port),
-+ "( OLcfgCtAt:5.2 NAME 'olcMqttPort' "
-+ "DESC 'Port of MQTT broker' "
-+ "SYNTAX OMsInteger SINGLE-VALUE )",
-+ NULL, NULL },
-+ { "mqtt-username", "username", 2, 2, 0,
-+ ARG_STRING|ARG_OFFSET, (void *)offsetof(mqtt_t, username),
-+ "( OLcfgCtAt:5.3 NAME 'olcMqttUsername' "
-+ "DESC 'Username for MQTT broker' "
-+ "SYNTAX OMsDirectoryString SINGLE-VALUE )",
-+ NULL, NULL },
-+ { "mqtt-password", "password", 2, 2, 0,
-+ ARG_STRING|ARG_OFFSET, (void *)offsetof(mqtt_t, password),
-+ "( OLcfgCtAt:5.4 NAME 'olcMqttPassword' "
-+ "DESC 'Password for MQTT broker' "
-+ "SYNTAX OMsDirectoryString SINGLE-VALUE )",
-+ NULL, NULL },
-+ { "mqtt-notify-password", "topic> <group-dn> <group-oc> <member-ad", 2, 5, 0,
-+ ARG_MAGIC, mqtt_config_notify,
-+ "( OLcfgCtAt:5.5 NAME 'olcMqttNotifyPassword' "
-+ "DESC 'Notify password change on <topic>, optionally checking that the object is in the specified group.'"
-+ "SYNTAX OMsDirectoryString X-ORDERED 'VALUES' )",
-+ NULL, NULL },
-+ { NULL, NULL, 0, 0, 0, ARG_IGNORED }
-+};
-+
-+static ConfigOCs mqttocs[] = {
-+ { "( OLcfgCtOc:5.1 "
-+ "NAME 'olcMqttConfig' "
-+ "DESC 'MQTT configuration' "
-+ "SUP olcOverlayConfig "
-+ "MAY ( "
-+ "olcMqttHostname "
-+ "$ olcMqttPort"
-+ "$ olcMqttUsername"
-+ "$ olcMqttPassword"
-+ "$ olcMqttNotifyPassword"
-+ " ) )",
-+ Cft_Overlay, mqttcfg },
-+
-+ { NULL, 0, NULL }
-+};
-+
-+static int mqtt_init(BackendInfo *bi)
-+{
-+ return mosquitto_lib_init();
-+}
-+
-+static int mqtt_destroy(BackendInfo *bi)
-+{
-+ return mosquitto_lib_cleanup();
-+}
-+
-+static const char *ca_arg(ConfigArgs *c, int n)
-+{
-+ return (c->argc <= n) ? NULL : c->argv[n];
-+}
-+
-+static void free_notify(mqtt_notify_t *n)
-+{
-+ ch_free(n->topic);
-+ ch_free(n->oc_group_str);
-+ ch_free(n->str_member);
-+ ch_free(n->dn_group_str);
-+ if (!BER_BVISNULL(&n->ndn_group))
-+ ber_memfree(n->ndn_group.bv_val);
-+ ch_free(n);
-+}
-+
-+static void free_all_notifies(mqtt_t *mqtt)
-+{
-+ mqtt_notify_t *n, *next;
-+
-+ for (n = mqtt->notify_map; n; n = next) {
-+ next = n->next;
-+ free_notify(n);
-+ }
-+ mqtt->notify_map = NULL;
-+}
-+
-+static int mqtt_config_notify(ConfigArgs *c)
-+{
-+ slap_overinst *on = (slap_overinst *)c->bi;
-+ mqtt_t *mqtt = (mqtt_t *) on->on_bi.bi_private;
-+ mqtt_notify_t *n, **pprev;
-+ const char *text = NULL;
-+ struct berval bv = BER_BVNULL, ndn = BER_BVNULL;
-+ int rc, i;
-+
-+ switch (c->op) {
-+ case SLAP_CONFIG_EMIT:
-+ for (i = 0, n = mqtt->notify_map; n; n = n->next, i++) {
-+ char *ptr = c->cr_msg, *end = &c->cr_msg[sizeof(c->cr_msg)-1];
-+
-+ ptr += snprintf(ptr, end-ptr, SLAP_X_ORDERED_FMT "%s", i, n->topic);
-+ if (n->dn_group_str)
-+ ptr += snprintf(ptr, end-ptr, " \"%s\"", n->dn_group_str);
-+ if (n->oc_group_str)
-+ ptr += snprintf(ptr, end-ptr, " \"%s\"", n->oc_group_str);
-+ if (n->str_member)
-+ ptr += snprintf(ptr, end-ptr, " \"%s\"", n->str_member);
-+
-+ bv.bv_val = c->cr_msg;
-+ bv.bv_len = ptr - bv.bv_val;
-+ value_add_one(&c->rvalue_vals, &bv);
-+ }
-+ return 0;
-+ case LDAP_MOD_DELETE:
-+ if (c->valx < 0) {
-+ free_all_notifies(mqtt);
-+ } else {
-+ pprev = &mqtt->notify_map;
-+ n = mqtt->notify_map;
-+ for (i = 0; i < c->valx; i++) {
-+ pprev = &n->next;
-+ n = n->next;
-+ }
-+ *pprev = n->next;
-+ free_notify(n);
-+ }
-+ return 0;
-+ }
-+
-+ const char *groupdn = ca_arg(c, 2);
-+ const char *oc_name = ca_arg(c, 3);
-+ const char *ad_name = ca_arg(c, 4);
-+ ObjectClass *oc = NULL;
-+ AttributeDescription *ad = NULL;
-+
-+ if (groupdn) {
-+ oc = oc_find(oc_name ?: SLAPD_GROUP_CLASS);
-+ if (oc == NULL) {
-+ Debug(LDAP_DEBUG_ANY, "mqtt_db_open: unable to find objectClass=\"%s\"\n",
-+ oc_name, 0, 0);
-+ return 1;
-+ }
-+
-+ rc = slap_str2ad(ad_name ?: SLAPD_GROUP_ATTR, &ad, &text);
-+ if (rc != LDAP_SUCCESS) {
-+ Debug(LDAP_DEBUG_ANY, "mqtt_db_config_notify: unable to find attribute=\"%s\": %s (%d)\n",
-+ ad_name, text, rc);
-+ return rc;
-+ }
-+
-+ ber_str2bv(groupdn, 0, 0, &bv);
-+ rc = dnNormalize(0, NULL, NULL, &bv, &ndn, NULL);
-+ if (rc != LDAP_SUCCESS) {
-+ Debug(LDAP_DEBUG_ANY, "mqtt_db_config_notify: DN normalization failed for \"%s\": %d\n",
-+ groupdn, rc, 0);
-+ return rc;
-+ }
-+ }
-+
-+ n = ch_calloc(1, sizeof(*n));
-+ n->topic = ch_strdup(c->argv[1]);
-+ n->dn_group_str = groupdn ? ch_strdup(groupdn) : NULL;
-+ n->oc_group_str = oc_name ? ch_strdup(oc_name) : NULL;
-+ n->str_member = ad_name ? ch_strdup(ad_name) : NULL;
-+ n->ndn_group = ndn;
-+ n->oc_group = oc;
-+ n->ad_member = ad;
-+
-+ for (pprev = &mqtt->notify_map; *pprev; pprev = &(*pprev)->next);
-+ *pprev = n;
-+
-+ return 0;
-+}
-+
-+static void mqtt_send_notify(mqtt_t *mqtt, mqtt_notify_t *n)
-+{
-+ Debug(LDAP_DEBUG_TRACE, "mqtt_send_notify: pub on topic '%s'\n", n->topic, 0, 0);
-+ n->notify_pending = mosquitto_publish(mqtt->mq, NULL, n->topic, 0, NULL, 1, true) == MOSQ_ERR_NO_CONN;
-+}
-+
-+static void mqtt_on_connect(struct mosquitto *mq, void *obj, int rc)
-+{
-+ slap_overinst *on = (slap_overinst *) obj;
-+ mqtt_t *mqtt = (mqtt_t *) on->on_bi.bi_private;
-+ mqtt_notify_t *n;
-+
-+ Debug(LDAP_DEBUG_TRACE, "mqtt_on_connect: connected with status %d\n", rc, 0, 0);
-+ if (rc != 0)
-+ return;
-+
-+ for (n = mqtt->notify_map; n; n = n->next)
-+ if (n->notify_pending)
-+ mqtt_send_notify(mqtt, n);
-+}
-+
-+static int mqtt_db_init(BackendDB *be, ConfigReply *cr)
-+{
-+ slap_overinst *on = (slap_overinst *) be->bd_info;
-+
-+ Debug(LDAP_DEBUG_TRACE, "mqtt_db_init: initialize overlay\n", 0, 0, 0);
-+ on->on_bi.bi_private = ch_calloc(1, sizeof(mqtt_t));
-+
-+ return 0;
-+}
-+
-+static int mqtt_db_destroy(BackendDB *be, ConfigReply *cr)
-+{
-+ slap_overinst *on = (slap_overinst *) be->bd_info;
-+ mqtt_t *mqtt = on->on_bi.bi_private;
-+
-+ Debug(LDAP_DEBUG_TRACE, "mqtt_db_destroy: destroy overlay\n", 0, 0, 0);
-+ free_all_notifies(mqtt);
-+ ch_free(mqtt);
-+
-+ return 0;
-+}
-+
-+static int mqtt_db_open(BackendDB *be, ConfigReply *cr)
-+{
-+ slap_overinst *on = (slap_overinst *) be->bd_info;
-+ mqtt_t *mqtt = (mqtt_t *) on->on_bi.bi_private;
-+ struct mosquitto *mq;
-+ char id[256];
-+ int n;
-+
-+ n = snprintf(id, sizeof(id), "openldap-mqtt/%d/", getpid());
-+ gethostname(&id[n], sizeof(id) - n);
-+
-+ Debug(LDAP_DEBUG_TRACE, "mqtt_db_open, id='%s'\n", id, 0, 0);
-+ mqtt->mq = mq = mosquitto_new(id, true, on);
-+ if (!mq) return 1;
-+
-+ if (mqtt->username && mqtt->password)
-+ mosquitto_username_pw_set(mq, mqtt->username, mqtt->password);
-+
-+ mosquitto_connect_callback_set(mq, mqtt_on_connect);
-+ mosquitto_connect_async(mq, mqtt->hostname ?: "127.0.0.1", mqtt->port ?: 1883, 60);
-+ mosquitto_loop_start(mq);
-+
-+ return 0;
-+}
-+
-+static int mqtt_db_close(BackendDB *be, ConfigReply *cr)
-+{
-+ slap_overinst *on = (slap_overinst *) be->bd_info;
-+ mqtt_t *mqtt = (mqtt_t *) on->on_bi.bi_private;
-+
-+ Debug(LDAP_DEBUG_TRACE, "mqtt_db_close\n", 0, 0, 0);
-+ mosquitto_disconnect(mqtt->mq);
-+ mosquitto_loop_stop(mqtt->mq, false);
-+ mosquitto_destroy(mqtt->mq);
-+
-+ free(mqtt->hostname); mqtt->hostname = NULL;
-+ free(mqtt->username); mqtt->username = NULL;
-+ free(mqtt->password); mqtt->password = NULL;
-+
-+ return 0;
-+}
-+
-+static int mqtt_response(Operation *op, SlapReply *rs)
-+{
-+ slap_overinst *on = (slap_overinst *) op->o_bd->bd_info;
-+ mqtt_t *mqtt = (mqtt_t *) on->on_bi.bi_private;
-+ Attribute *a;
-+ Modifications *m;
-+ bool change = false;
-+
-+ switch (op->o_tag) {
-+ case LDAP_REQ_ADD:
-+ for (a = op->ora_e->e_attrs; a; a = a->a_next) {
-+ if (a->a_desc == slap_schema.si_ad_userPassword) {
-+ change = true;
-+ break;
-+ }
-+ }
-+ break;
-+ case LDAP_REQ_MODIFY:
-+ for (m = op->orm_modlist; m; m = m->sml_next) {
-+ if (m->sml_desc == slap_schema.si_ad_userPassword) {
-+ change = true;
-+ break;
-+ }
-+ }
-+ break;
-+ case LDAP_REQ_EXTENDED:
-+ if (ber_bvcmp(&slap_EXOP_MODIFY_PASSWD, &op->ore_reqoid) == 0)
-+ change = true;
-+ break;
-+ }
-+
-+ if (change) {
-+ mqtt_notify_t *n;
-+ int r, cache;
-+
-+ for (n = mqtt->notify_map; n; n = n->next) {
-+ if (n->oc_group) {
-+ cache = op->o_do_not_cache;
-+ op->o_do_not_cache = 1;
-+ r = backend_group(op, NULL, &n->ndn_group, &op->o_req_ndn, n->oc_group, n->ad_member);
-+ op->o_do_not_cache = cache;
-+ } else {
-+ r = 0;
-+ }
-+
-+ Debug(LDAP_DEBUG_TRACE, "tested o_req_ndn='%s' in ndn_group='%s' r=%d\n",
-+ op->o_req_ndn.bv_val, n->ndn_group.bv_val, r);
-+
-+ if (r == 0)
-+ mqtt_send_notify(mqtt, n);
-+ }
-+ }
-+
-+ return SLAP_CB_CONTINUE;
-+}
-+
-+static int mqtt_init_overlay()
-+{
-+ static slap_overinst ov;
-+ int rc;
-+
-+ ov.on_bi.bi_type = "mqtt";
-+ ov.on_bi.bi_init = mqtt_init;
-+ ov.on_bi.bi_destroy = mqtt_destroy;
-+ ov.on_bi.bi_db_init = mqtt_db_init;
-+ ov.on_bi.bi_db_destroy = mqtt_db_destroy;
-+ ov.on_bi.bi_db_open = mqtt_db_open;
-+ ov.on_bi.bi_db_close = mqtt_db_close;
-+ ov.on_bi.bi_cf_ocs = mqttocs;
-+ ov.on_response = mqtt_response;
-+
-+ rc = config_register_schema(mqttcfg, mqttocs);
-+ if (rc) return rc;
-+
-+ return overlay_register(&ov);
-+}
-+
-+int init_module(int argc, char *argv[])
-+{
-+ return mqtt_init_overlay();
-+}
-
diff --git a/user/openldap/openldap.pre-install b/user/openldap/openldap.pre-install
index eb6b10fa4..b6bc3c7b4 100644
--- a/user/openldap/openldap.pre-install
+++ b/user/openldap/openldap.pre-install
@@ -1,7 +1,7 @@
#!/bin/sh
-addgroup -S ldap 2>/dev/null
-adduser -S -D -H -h /usr/lib/openldap -s /sbin/nologin -G ldap \
- -g "OpenLdap User" ldap 2>/dev/null
+groupadd -r ldap 2>/dev/null
+useradd -c "OpenLDAP User" -s /sbin/nologin -g ldap \
+ -m -d /usr/lib/openldap -r ldap 2>/dev/null
exit 0
diff --git a/user/openldap/test063.patch b/user/openldap/test063.patch
new file mode 100644
index 000000000..972feba6f
--- /dev/null
+++ b/user/openldap/test063.patch
@@ -0,0 +1,17 @@
+Test #63 fails with a server replication race.
+
+Seen in Debian at https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1010608 -
+thanks to Ryan Tandy for root cause analysis and suggested fix.
+
+--- openldap-2.6.2/tests/scripts/test063-delta-multiprovider 2022-05-04 09:55:23.000000000 -0500
++++ openldap-2.6.2/tests/scripts/test063-delta-multiprovider 2022-06-01 02:14:47.230724205 -0500
+@@ -318,6 +318,9 @@
+ exit $RC
+ fi
+
++echo "Waiting $SLEEP1 seconds for syncrepl to receive changes..."
++sleep $SLEEP1
++
+ THEDN="cn=James A Jones 2,ou=Alumni Association,ou=People,dc=example,dc=com"
+ sleep 1
+ for i in 1 2 3; do
diff --git a/user/openldap/test079.patch b/user/openldap/test079.patch
new file mode 100644
index 000000000..a902ba878
--- /dev/null
+++ b/user/openldap/test079.patch
@@ -0,0 +1,160 @@
+From 0031b8ed342386960ab9d0cd1566196ba0e6ae42 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Wed, 1 Jun 2022 04:36:24 -0500
+Subject: [PATCH] Tests: Use ldapsearch(1) correctly in test079
+
+Before this change, ldapsearch(1) was not being called with the correct
+parameter syntax. This caused the test to fail on musl libc environments
+where getopt(3) is more strict, with messages like:
+
+Error: LDAP connection to remote LDAP server is not found (1)
+
+The test.out file simply stated:
+
+ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
+
+Indeed, strace showed that the `-H` param was missed and we were trying
+to connect to port 389:
+
+connect(3, {sa_family=AF_INET6, sin6_port=htons(389), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "::1", &sin6_addr), sin6_scope_id=0}, 28) = -1 ECONNREFUSED (Connection refused)
+---
+ tests/scripts/test079-proxy-timeout | 40 ++++++++++++++---------------
+ 1 file changed, 20 insertions(+), 20 deletions(-)
+
+diff --git a/tests/scripts/test079-proxy-timeout b/tests/scripts/test079-proxy-timeout
+index 6a8e0c7a8..9ece4c1a1 100755
+--- a/tests/scripts/test079-proxy-timeout
++++ b/tests/scripts/test079-proxy-timeout
+@@ -139,10 +139,10 @@ fi
+
+ echo "Checking that proxy has created connections towards backend (time_t now=`date +%s`)"
+
+-$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \
++$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL \
+ -D "cn=Manager,dc=local,dc=com" \
+ -H $URI2 \
+- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
++ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
+ RC=$?
+ if test $RC != 0 ; then
+ echo "Error: LDAP connection to remote LDAP server is not found ($RC)"
+@@ -150,10 +150,10 @@ if test $RC != 0 ; then
+ exit $RC
+ fi
+
+-$LDAPSEARCH -b "cn=Connections,cn=database 3,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \
++$LDAPSEARCH -b "cn=Connections,cn=database 3,cn=databases,cn=monitor" -s one -LLL \
+ -D "cn=Manager,dc=local,dc=com" \
+ -H $URI2 \
+- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
++ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
+ RC=$?
+ if test $RC != 0 ; then
+ echo "Error: LDAP connection to remote LDAP server is not found ($RC)"
+@@ -171,10 +171,10 @@ sleep `expr $CONN_EXPIRES - $NOW + 2`
+
+ echo "Checking that proxy has closed expired connections towards the remote LDAP server (time_t now=`date +%s`)"
+
+-$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \
++$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL \
+ -D "cn=Manager,dc=local,dc=com" \
+ -H $URI2 \
+- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
++ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
+ RC=$?
+ if test $RC != 1 ; then
+ echo "Error: LDAP connection to remote LDAP server was not closed"
+@@ -182,10 +182,10 @@ if test $RC != 1 ; then
+ exit $RC
+ fi
+
+-$LDAPSEARCH -b "cn=Connections,cn=database 3,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \
++$LDAPSEARCH -b "cn=Connections,cn=database 3,cn=databases,cn=monitor" -s one -LLL \
+ -D "cn=Manager,dc=local,dc=com" \
+ -H $URI2 \
+- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
++ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
+ RC=$?
+ if test $RC != 1 ; then
+ echo "Error: LDAP connection to remote LDAP server was not closed"
+@@ -235,10 +235,10 @@ sleep 2
+
+ echo "Checking that proxy has created connections towards backend (time_t now=`date +%s`)"
+
+-$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \
++$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL \
+ -D "cn=Manager,dc=local,dc=com" \
+ -H $URI2 \
+- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
++ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
+ RC=$?
+ if test $RC != 0 ; then
+ echo "Error: LDAP connection to remote LDAP server is not found ($RC)"
+@@ -246,10 +246,10 @@ if test $RC != 0 ; then
+ exit $RC
+ fi
+
+-$LDAPSEARCH -b "cn=Connections,cn=database 3,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \
++$LDAPSEARCH -b "cn=Connections,cn=database 3,cn=databases,cn=monitor" -s one -LLL \
+ -D "cn=Manager,dc=local,dc=com" \
+ -H $URI2 \
+- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
++ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
+ RC=$?
+ if test $RC != 0 ; then
+ echo "Error: LDAP connection to remote LDAP server is not found ($RC)"
+@@ -267,10 +267,10 @@ sleep `expr $CONN_EXPIRES - $NOW + 2`
+
+ echo "Checking that proxy has closed expired connections towards the remote LDAP server (time_t now=`date +%s`)"
+
+-$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \
++$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL \
+ -D "cn=Manager,dc=local,dc=com" \
+ -H $URI2 \
+- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
++ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
+ RC=$?
+ if test $RC != 1 ; then
+ echo "Error: LDAP connection to remote LDAP server was not closed"
+@@ -278,10 +278,10 @@ if test $RC != 1 ; then
+ exit $RC
+ fi
+
+-$LDAPSEARCH -b "cn=Connections,cn=database 3,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \
++$LDAPSEARCH -b "cn=Connections,cn=database 3,cn=databases,cn=monitor" -s one -LLL \
+ -D "cn=Manager,dc=local,dc=com" \
+ -H $URI2 \
+- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
++ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
+ RC=$?
+ if test $RC != 1 ; then
+ echo "Error: LDAP connection to remote LDAP server was not closed"
+@@ -339,10 +339,10 @@ fi
+ NOW=`date +%s`
+ sleep `expr $CONN_EXPIRES - $NOW - 2`
+ echo "Check that connection is still alive due to idle-timeout reset (time_t now=`date +%s`)"
+-$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \
++$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL \
+ -D "cn=Manager,dc=local,dc=com" \
+ -H $URI2 \
+- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
++ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
+ RC=$?
+ if test $RC != 0 ; then
+ echo "Error: LDAP connection to remote LDAP server is not found ($RC)"
+@@ -354,10 +354,10 @@ fi
+ NOW=`date +%s`
+ sleep `expr $CONN_EXPIRES - $NOW + 2`
+ echo "Check that connection is closed after extended idle-timeout has passed (time_t now=`date +%s`)"
+-$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL olmDbConnURI \
++$LDAPSEARCH -b "cn=Connections,cn=database 2,cn=databases,cn=monitor" -s one -LLL \
+ -D "cn=Manager,dc=local,dc=com" \
+ -H $URI2 \
+- -w $PASSWD 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
++ -w $PASSWD olmDbConnURI 2>&1 | tee -a $TESTOUT | grep ldap://${LOCALHOST}:$PORT1 >/dev/null
+ RC=$?
+ if test $RC != 1 ; then
+ echo "Error: LDAP connection to remote LDAP server was not closed"
+--
+2.32.0 (Apple Git-132)
+
diff --git a/user/openldap/time64.patch b/user/openldap/time64.patch
new file mode 100644
index 000000000..780d67069
--- /dev/null
+++ b/user/openldap/time64.patch
@@ -0,0 +1,198 @@
+diff -ur a/libraries/libldap/os-ip.c b/libraries/libldap/os-ip.c
+--- a/libraries/libldap/os-ip.c 2022-12-12 23:12:56.618567894 -0600
++++ b/libraries/libldap/os-ip.c 2022-12-13 00:07:17.852129075 -0600
+@@ -287,7 +287,7 @@
+ int rc;
+
+
+- Debug2(LDAP_DEBUG_TRACE, "ldap_int_poll: fd: %d tm: %ld\n",
++ Debug2(LDAP_DEBUG_TRACE, "ldap_int_poll: fd: %d tm: %lld\n",
+ s, tvp ? tvp->tv_sec : -1L );
+
+ #ifdef HAVE_POLL
+@@ -439,7 +439,7 @@
+ }
+
+ Debug3(LDAP_DEBUG_TRACE,
+- "ldap_pvt_connect: fd: %d tm: %ld async: %d\n",
++ "ldap_pvt_connect: fd: %d tm: %lld async: %d\n",
+ s, opt_tv ? tv.tv_sec : -1L, async);
+
+ if ( opt_tv && ldap_pvt_ndelay_on(ld, s) == -1 )
+diff -ur a/libraries/libldap/os-local.c b/libraries/libldap/os-local.c
+--- a/libraries/libldap/os-local.c 2022-12-12 23:12:56.618567894 -0600
++++ b/libraries/libldap/os-local.c 2022-12-12 23:36:15.152936427 -0600
+@@ -164,7 +164,7 @@
+ }
+
+ Debug3(LDAP_DEBUG_TRACE,
+- "ldap_connect_timeout: fd: %d tm: %ld async: %d\n",
++ "ldap_connect_timeout: fd: %d tm: %lld async: %d\n",
+ s, opt_tv ? tv.tv_sec : -1L, async);
+
+ if ( ldap_pvt_ndelay_on(ld, s) == -1 ) return -1;
+diff -ur a/libraries/libldap/result.c b/libraries/libldap/result.c
+--- a/libraries/libldap/result.c 2022-12-12 23:12:56.618567894 -0600
++++ b/libraries/libldap/result.c 2022-12-12 23:34:24.977768222 -0600
+@@ -264,8 +264,8 @@
+ Debug2( LDAP_DEBUG_TRACE, "wait4msg ld %p msgid %d (infinite timeout)\n",
+ (void *)ld, msgid );
+ } else {
+- Debug3( LDAP_DEBUG_TRACE, "wait4msg ld %p msgid %d (timeout %ld usec)\n",
+- (void *)ld, msgid, (long)timeout->tv_sec * 1000000 + timeout->tv_usec );
++ Debug3( LDAP_DEBUG_TRACE, "wait4msg ld %p msgid %d (timeout %lld usec)\n",
++ (void *)ld, msgid, (time_t)timeout->tv_sec * 1000000 + timeout->tv_usec );
+ }
+ #endif /* LDAP_DEBUG */
+
+diff -ur a/servers/slapd/back-ldap/bind.c b/servers/slapd/back-ldap/bind.c
+--- a/servers/slapd/back-ldap/bind.c 2022-12-12 23:12:56.614567788 -0600
++++ b/servers/slapd/back-ldap/bind.c 2022-12-12 23:43:22.086371097 -0600
+@@ -2999,14 +2999,14 @@
+ }
+
+ if ( lc->lcb_create_time != 0 ) {
+- len = snprintf( tbuf, sizeof(tbuf), "%ld", lc->lcb_create_time );
++ len = snprintf( tbuf, sizeof(tbuf), "%lld", lc->lcb_create_time );
+ if ( ptr + sizeof(" created=") + len >= end ) return -1;
+ ptr = lutil_strcopy( ptr, " created=" );
+ ptr = lutil_strcopy( ptr, tbuf );
+ }
+
+ if ( lc->lcb_time != 0 ) {
+- len = snprintf( tbuf, sizeof(tbuf), "%ld", lc->lcb_time );
++ len = snprintf( tbuf, sizeof(tbuf), "%lld", lc->lcb_time );
+ if ( ptr + sizeof(" modified=") + len >= end ) return -1;
+ ptr = lutil_strcopy( ptr, " modified=" );
+ ptr = lutil_strcopy( ptr, tbuf );
+@@ -3185,7 +3185,7 @@
+ */
+ slap_wake_listener();
+ Debug( LDAP_DEBUG_TRACE,
+- "ldap_back_conn_prune: scheduled connection expiry timer to %ld sec\n",
++ "ldap_back_conn_prune: scheduled connection expiry timer to %lld sec\n",
+ li->li_conn_expire_task->interval.tv_sec );
+ } else if ( next_timeout == -1 && li->li_conn_expire_task != NULL ) {
+ if ( ldap_pvt_runqueue_isrunning( &slapd_rq, li->li_conn_expire_task ) ) {
+@@ -3221,7 +3221,7 @@
+ "ldap_back_conn_expire_timer" );
+ slap_wake_listener();
+ Debug( LDAP_DEBUG_TRACE,
+- "ldap_back_conn_prune: scheduled connection expiry timer to %ld sec\n",
++ "ldap_back_conn_prune: scheduled connection expiry timer to %lld sec\n",
+ li->li_conn_expire_task->interval.tv_sec );
+ }
+ ldap_pvt_thread_mutex_unlock( &slapd_rq.rq_mutex );
+diff -ur a/servers/slapd/overlays/dds.c b/servers/slapd/overlays/dds.c
+--- a/servers/slapd/overlays/dds.c 2022-12-12 23:12:56.614567788 -0600
++++ b/servers/slapd/overlays/dds.c 2022-12-12 23:42:29.632772350 -0600
+@@ -418,7 +418,7 @@
+ assert( ttl <= DDS_RF2589_MAX_TTL );
+
+ bv.bv_val = ttlbuf;
+- bv.bv_len = snprintf( ttlbuf, sizeof( ttlbuf ), "%ld", ttl );
++ bv.bv_len = snprintf( ttlbuf, sizeof( ttlbuf ), "%lld", ttl );
+ assert( bv.bv_len < sizeof( ttlbuf ) );
+
+ /* FIXME: apparently, values in op->ora_e are malloc'ed
+@@ -696,7 +696,7 @@
+ goto done;
+ }
+
+- bv_entryTtl.bv_len = snprintf( textbuf, sizeof( textbuf ), "%ld", entryTtl );
++ bv_entryTtl.bv_len = snprintf( textbuf, sizeof( textbuf ), "%lld", entryTtl );
+ break;
+
+ default:
+@@ -918,7 +918,7 @@
+ ttl = (ttl < 0) ? 0 : ttl;
+ assert( ttl <= DDS_RF2589_MAX_TTL );
+
+- len = snprintf( ttlbuf, sizeof(ttlbuf), "%ld", ttl );
++ len = snprintf( ttlbuf, sizeof(ttlbuf), "%lld", ttl );
+ if ( len < 0 )
+ {
+ goto done;
+@@ -1178,7 +1178,7 @@
+ ttlmod.sml_values = ttlvalues;
+ ttlmod.sml_numvals = 1;
+ ttlvalues[ 0 ].bv_val = ttlbuf;
+- ttlvalues[ 0 ].bv_len = snprintf( ttlbuf, sizeof( ttlbuf ), "%ld", ttl );
++ ttlvalues[ 0 ].bv_len = snprintf( ttlbuf, sizeof( ttlbuf ), "%lld", ttl );
+ BER_BVZERO( &ttlvalues[ 1 ] );
+
+ /* the entryExpireTimestamp is added by modify */
+@@ -1206,7 +1206,7 @@
+ rs->sr_rspoid = ch_strdup( slap_EXOP_REFRESH.bv_val );
+
+ Log( LDAP_DEBUG_TRACE, LDAP_LEVEL_INFO,
+- "%s REFRESH dn=\"%s\" TTL=%ld\n",
++ "%s REFRESH dn=\"%s\" TTL=%lld\n",
+ op->o_log_prefix, op->o_req_ndn.bv_val, ttl );
+ }
+
+diff -ur a/servers/slapd/overlays/pcache.c b/servers/slapd/overlays/pcache.c
+--- a/servers/slapd/overlays/pcache.c 2022-12-12 23:12:56.614567788 -0600
++++ b/servers/slapd/overlays/pcache.c 2022-12-13 00:07:55.205195373 -0600
+@@ -375,12 +375,12 @@
+ attrset_len = sprintf( attrset_buf,
+ "%lu", (unsigned long)q->qtemp->attr_set_index );
+ expiry_len = sprintf( expiry_buf,
+- "%lu", (unsigned long)q->expiry_time );
++ "%llu", (unsigned long long)q->expiry_time );
+ answerable_len = snprintf( answerable_buf, sizeof( answerable_buf ),
+ "%lu", q->answerable_cnt );
+ if ( q->refresh_time )
+ refresh_len = sprintf( refresh_buf,
+- "%lu", (unsigned long)q->refresh_time );
++ "%llu", (unsigned long long)q->refresh_time );
+ else
+ refresh_len = 0;
+
+@@ -1601,8 +1601,8 @@
+
+ new_cached_query->lru_up = NULL;
+ new_cached_query->lru_down = NULL;
+- Debug( pcache_debug, "Added query expires at %ld (%s)\n",
+- (long) new_cached_query->expiry_time,
++ Debug( pcache_debug, "Added query expires at %lld (%s)\n",
++ (long long) new_cached_query->expiry_time,
+ pc_caching_reason_str[ why ] );
+
+ new_cached_query->scope = query->scope;
+@@ -2729,7 +2729,7 @@
+ pbi->bi_flags |= BI_HASHED;
+ } else {
+ Debug( pcache_debug, "pc_bind_search: cache is stale, "
+- "reftime: %ld, current time: %ld\n",
++ "reftime: %lld, current time: %lld\n",
+ pbi->bi_cq->bindref_time, op->o_time );
+ }
+ } else if ( pbi->bi_si ) {
+@@ -3865,7 +3865,7 @@
+ struct berval bv;
+ switch( c->type ) {
+ case PC_MAIN:
+- bv.bv_len = snprintf( c->cr_msg, sizeof( c->cr_msg ), "%s %d %d %d %ld",
++ bv.bv_len = snprintf( c->cr_msg, sizeof( c->cr_msg ), "%s %d %d %d %lld",
+ cm->db.bd_info->bi_type, cm->max_entries, cm->numattrsets,
+ cm->num_entries_limit, cm->cc_period );
+ bv.bv_val = c->cr_msg;
+@@ -3909,7 +3909,7 @@
+ /* HEADS-UP: always print all;
+ * if optional == 0, ignore */
+ bv.bv_len = snprintf( c->cr_msg, sizeof( c->cr_msg ),
+- " %d %ld %ld %ld %ld",
++ " %d %lld %lld %lld %lld",
+ temp->attr_set_index,
+ temp->ttl,
+ temp->negttl,
+@@ -3931,7 +3931,7 @@
+ for (temp=qm->templates; temp; temp=temp->qmnext) {
+ if ( !temp->bindttr ) continue;
+ bv.bv_len = snprintf( c->cr_msg, sizeof( c->cr_msg ),
+- " %d %ld %s ",
++ " %d %lld %s ",
+ temp->attr_set_index,
+ temp->bindttr,
+ ldap_pvt_scope2str( temp->bindscope ));
diff --git a/user/openmsx/APKBUILD b/user/openmsx/APKBUILD
index e3afba25d..7bc33e5df 100644
--- a/user/openmsx/APKBUILD
+++ b/user/openmsx/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=openmsx
-pkgver=0.3.1
+pkgver=0.4.2
pkgrel=0
pkgdesc="Music files for OpenTTD"
url="https://www.openttd.org/en/"
@@ -11,26 +11,21 @@ license="GPL-2.0-only"
depends=""
makedepends="python3"
subpackages=""
-source="https://binaries.openttd.org/extra/openmsx/0.3.1/openmsx-$pkgver-source.tar.gz
- python3.patch
+source="https://cdn.openttd.org/$pkgname-releases/$pkgver/$pkgname-$pkgver-source.tar.xz
python3-bang.patch
"
builddir="$srcdir/$pkgname-$pkgver-source"
build() {
- cd "$builddir"
make _V="" bundle
}
package() {
- cd "$builddir"/$pkgname-$pkgver
- local _file
- for _file in *.mid openmsx.obm; do
+ for _file in src/*.mid openmsx.obm; do
install -D -m644 -g games $_file \
"$pkgdir"/usr/share/games/openttd/gm/$_file
done
}
-sha512sums="e455f99f32d1daa77157def4f109dd1456169ae2b527290035b6a52f591c13fb7464fd221e00eb46bf03f51e8d0101de08a9e47cebe2430ad05a840ab235973e openmsx-0.3.1-source.tar.gz
-b6690158831cb3da9e0e65a523529ee0bb694a4a8b23c89f615b2481601a71fd84caecf29430054e69afa3ffcb53cf8dd5826358d7ef89429c661dd4d47bbb74 python3.patch
+sha512sums="65a06792032d0a7f6db5c9495bf5b382fdc29ca84db0535b61ea95b57e8ef961820e75dad2f8dc74de0608502839bea7af28fd342756ebfcc12ee8ac1f5553ab openmsx-0.4.2-source.tar.xz
f981aff74f9cd33650641badd977f38c1cbbc749198a45ca016de3be83d8bec6c4f82c0614340a11f7bda7b4b98d48e26fd03a74bbf233af6deb588874d34145 python3-bang.patch"
diff --git a/user/openmsx/python3.patch b/user/openmsx/python3.patch
deleted file mode 100644
index 191aacfd6..000000000
--- a/user/openmsx/python3.patch
+++ /dev/null
@@ -1,265 +0,0 @@
---- openmsx-0.3.1-source/scripts/authorlist.py.old 2010-08-09 22:34:42.000000000 +0000
-+++ openmsx-0.3.1-source/scripts/authorlist.py 2019-01-12 18:12:26.010000000 +0000
-@@ -10,7 +10,6 @@
- # <http://www.gnu.org/licenses/>.
- #
-
--import string
- import sys
-
- while 1:
-@@ -18,10 +17,10 @@
- if data != '':
- # do some processing of the contents of
- # the data variable
-- separate = string.split(data,";")
-- print '%-30s %s' % (separate[1]+":", separate[2])
-+ separate = data.split(";")
-+ print('%-30s %s' % (separate[1]+":", separate[2]))
- # end of data processing command group
-- # sys.stdout.write(res)
-+ # sys.stdout.write(res)
- else:
- sys.stdout.flush()
- break
---- openmsx-0.3.1-source/scripts/md5list.py.old 2010-08-09 22:34:42.000000000 +0000
-+++ openmsx-0.3.1-source/scripts/md5list.py 2019-01-12 18:16:21.260000000 +0000
-@@ -10,7 +10,6 @@
- # <http://www.gnu.org/licenses/>.
- #
-
--import string
- import sys
- import subprocess
- import os
-@@ -18,25 +17,25 @@
- while 1:
- data = sys.stdin.readline()
- if data != '':
-- # leave out all comment lines (lines starting with '#')
-- comment_pos = string.find(data,'#')
-- if comment_pos == 0:
-- continue
-- # separate the single entries by ';'
-- separate = string.split(data,";")
-- if len(separate) != 4:
-- continue
-- systemtype = (os.uname())[0]
-- if systemtype == 'Linux':
-- md5call = ["md5sum"]
-- elif systemtype == 'Darwin':
-- md5call = ["md5", "-r"]
-- else:
-- md5call = ["md5sum"]
-- md5call = md5call + ["src/"+string.strip(separate[1])]
-- md5sum = subprocess.Popen(md5call, stdout=subprocess.PIPE).communicate()[0]
-- md5sum = string.split(md5sum)
-- res = "%-32s = %s\n" % (separate[1], md5sum[0])
-+ # leave out all comment lines (lines starting with '#')
-+ comment_pos = data.find('#')
-+ if comment_pos == 0:
-+ continue
-+ # separate the single entries by ';'
-+ separate = data.split(";")
-+ if len(separate) != 4:
-+ continue
-+ systemtype = (os.uname())[0]
-+ if systemtype == 'Linux':
-+ md5call = ["md5sum"]
-+ elif systemtype == 'Darwin':
-+ md5call = ["md5", "-r"]
-+ else:
-+ md5call = ["md5sum"]
-+ md5call = md5call + ["src/"+separate[1].strip()]
-+ md5sum = subprocess.Popen(md5call, stdout=subprocess.PIPE).communicate()[0]
-+ md5sum = md5sum.split()
-+ res = "%-32s = %s\n" % (separate[1], md5sum[0].decode('utf-8'))
- sys.stdout.write(res)
- else:
- sys.stdout.flush()
---- openmsx-0.3.1-source/scripts/midifiles.py.old 2010-08-09 22:34:42.000000000 +0000
-+++ openmsx-0.3.1-source/scripts/midifiles.py 2019-01-12 18:09:21.660000000 +0000
-@@ -10,23 +10,22 @@
- # <http://www.gnu.org/licenses/>.
- #
-
--import string
- import sys
-
- res = ""
- while 1:
- data = sys.stdin.readline()
- if data != '':
-- # leave out all comment lines (lines starting with '#')
-- comment_pos = string.find(data,'#')
-- if comment_pos == 0:
-- continue
-- # separate the single entries by ';'
-- separate = string.split(data,";")
-- if len(separate) != 4:
-- continue
-- res = res + " src/" + string.strip(separate[1])
-+ # leave out all comment lines (lines starting with '#')
-+ comment_pos = data.find('#')
-+ if comment_pos == 0:
-+ continue
-+ # separate the single entries by ';'
-+ separate = data.split(";")
-+ if len(separate) != 4:
-+ continue
-+ res = res + " src/" + separate[1].strip()
- else:
-- sys.stdout.write(res)
-+ sys.stdout.write(res)
- sys.stdout.flush()
- break
---- openmsx-0.3.1-source/scripts/namelist.py.old 2010-08-09 22:34:42.000000000 +0000
-+++ openmsx-0.3.1-source/scripts/namelist.py 2019-01-12 18:24:41.820000000 +0000
-@@ -10,27 +10,26 @@
- # <http://www.gnu.org/licenses/>.
- #
-
--import string
- import sys
-
- while 1:
- data = sys.stdin.readline()
- if data != '':
-- # leave out all comment lines (lines starting with '#')
-- comment_pos = string.find(data,'#')
-- if comment_pos == 0:
-- continue
-- # separate the single entries by ';'
-- separate = string.split(data,";")
-- if len(separate) != 4:
-- continue
-- res = "%-32s = %s\n" % (separate[1], string.strip(separate[3]))
-+ # leave out all comment lines (lines starting with '#')
-+ comment_pos = data.find('#')
-+ if comment_pos == 0:
-+ continue
-+ # separate the single entries by ';'
-+ separate = data.split(";")
-+ if len(separate) != 4:
-+ continue
-+ res = "%-32s = %s\n" % (separate[1], separate[3].strip())
- sys.stdout.write(res)
- else:
- sys.stdout.flush()
- break
-
- def authorlist(mystr):
-- separate = string.split()
-- for str in separate:
-- print string.strip(str)
-\ No newline at end of file
-+ separate = mystr.split()
-+ for str in separate:
-+ print(str.strip())
---- openmsx-0.3.1-source/scripts/playlist.py.old 2010-08-09 22:34:42.000000000 +0000
-+++ openmsx-0.3.1-source/scripts/playlist.py 2019-01-12 18:24:46.440000000 +0000
-@@ -10,31 +10,30 @@
- # <http://www.gnu.org/licenses/>.
- #
-
--import string
- import sys
-
- while 1:
- data = sys.stdin.readline()
- if data != '':
-- # leave out all comment lines (lines starting with '#')
-- comment_pos = string.find(data,'#')
-- if comment_pos == 0:
-- continue
-- # separate the single entries by ';'
-- separate = string.split(data,";")
-- res = ""
-- # leave out all lines which don't have the proper number of elements
-- if len(separate) >= 1:
-- res = string.strip(separate[0]) + " = "
-- if len(separate) == 4:
-- res = res + separate[1]
-- res = res + "\n"
-+ # leave out all comment lines (lines starting with '#')
-+ comment_pos = data.find('#')
-+ if comment_pos == 0:
-+ continue
-+ # separate the single entries by ';'
-+ separate = data.split(";")
-+ res = ""
-+ # leave out all lines which don't have the proper number of elements
-+ if len(separate) >= 1:
-+ res = separate[0].strip() + " = "
-+ if len(separate) == 4:
-+ res = res + separate[1]
-+ res = res + "\n"
- sys.stdout.write(res)
- else:
- sys.stdout.flush()
- break
-
- def authorlist(mystr):
-- separate = string.split()
-- for str in separate:
-- print string.strip(str)
-\ No newline at end of file
-+ separate = mystr.split()
-+ for str in separate:
-+ print(str.strip())
---- openmsx-0.3.1-source/scripts/sanitize_list.py.old 2010-08-09 22:34:42.000000000 +0000
-+++ openmsx-0.3.1-source/scripts/sanitize_list.py 2019-01-12 18:25:21.200000000 +0000
-@@ -10,34 +10,33 @@
- # <http://www.gnu.org/licenses/>.
- #
-
--import string
- import sys
-
- while 1:
- data = sys.stdin.readline()
- if data != '':
-- # leave out all comment lines (lines starting with '#')
-- comment_pos = string.find(data,'#')
-- if comment_pos == 0:
-- continue
-- # separate the single entries by ';'
-- separate = string.split(data,";")
-- if len(separate) != 4:
-- continue
-- res = ""
-- for str in separate:
-- if res != '':
-- res = res + ";" + string.strip(str)
-- else:
-- res = string.strip(str)
-+ # leave out all comment lines (lines starting with '#')
-+ comment_pos = data.find('#')
-+ if comment_pos == 0:
-+ continue
-+ # separate the single entries by ';'
-+ separate = data.split(";")
-+ if len(separate) != 4:
-+ continue
-+ res = ""
-+ for str in separate:
-+ if res != '':
-+ res = res + ";" + str.strip()
-+ else:
-+ res = str.strip()
- # end of data processing command group
-- res = res + "\n"
-+ res = res + "\n"
- sys.stdout.write(res)
- else:
- sys.stdout.flush()
- break
-
- def authorlist(mystr):
-- separate = string.split()
-- for str in separate:
-- print string.strip(str)
-\ No newline at end of file
-+ separate = mystr.split()
-+ for str in separate:
-+ print(str.strip())
diff --git a/user/opensfx/APKBUILD b/user/opensfx/APKBUILD
index 00093833d..cf52e2a84 100644
--- a/user/opensfx/APKBUILD
+++ b/user/opensfx/APKBUILD
@@ -1,34 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=opensfx
-pkgver=0.2.3
+pkgver=1.0.3
pkgrel=0
pkgdesc="Sound files for OpenTTD"
-url="https://www.openttd.org/en/"
+url="https://www.openttd.org/"
arch="noarch"
+options="!check" # Fails md5sum check because of git hash.
license="CC-Sampling-Plus-1.0"
depends=""
makedepends="catcodec"
subpackages=""
-source="https://binaries.openttd.org/extra/opensfx/0.2.3/opensfx-$pkgver-source.tar.gz"
+source="https://cdn.openttd.org/$pkgname-releases/$pkgver/$pkgname-$pkgver-source.tar.xz"
builddir="$srcdir/$pkgname-$pkgver-source"
build() {
- cd "$builddir"
- make
+ make opensfx.cat
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
- install -D -m644 -g games opensfx.cat \
+ install -D -m644 -g games "$builddir"/opensfx.cat \
"$pkgdir"/usr/share/games/openttd/data/opensfx.cat
- install -D -m644 -g games opensfx.obs \
+ install -D -m644 -g games "$builddir"/opensfx.obs \
"$pkgdir"/usr/share/games/openttd/data/opensfx.obs
}
-sha512sums="7575c8febcbcabe8f9042a1a197ba76b9020e335663bf70b0aaebafe4b0758f82ff7acc624b1dfdc12d38e346f139454b78ea29e18a8bb8bd2afd3d6a209669c opensfx-0.2.3-source.tar.gz"
+sha512sums="a077fcb1676ba17aa5e9e2df32c2d69452fe54895e3ac64a80c2a6247aa3ea2ef37443e2391f88117768eeb3f808793c78c11727c69bb3df2fde57f67964dbff opensfx-1.0.3-source.tar.xz"
diff --git a/user/openttd/APKBUILD b/user/openttd/APKBUILD
index 2c185d8cb..b2802c462 100644
--- a/user/openttd/APKBUILD
+++ b/user/openttd/APKBUILD
@@ -1,33 +1,41 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=openttd
-pkgver=1.9.1
+pkgver=14.1
pkgrel=0
pkgdesc="Simulation game based on Transport Tycoon Deluxe"
url="https://www.openttd.org/en/"
arch="all"
-options="!check" # Test files not shipped in release package.
+#options="!check" # Test files not shipped in release package.
license="GPL-2.0-only"
depends="opengfx openmsx opensfx"
-makedepends="fontconfig-dev freetype-dev icu-dev libpng-dev libxdg-basedir-dev
- lzo-dev sdl-dev xz-dev zlib-dev"
+makedepends="cmake curl-dev dbus-dev fluidsynth-dev fontconfig-dev freetype-dev
+ grfcodec harfbuzz-dev icu-dev libpng-dev lzo-dev mesa-dev sdl2-dev
+ xz-dev zlib-dev"
subpackages="$pkgname-doc"
-source="https://proxy.binaries.openttd.org/openttd-releases/$pkgver/openttd-$pkgver-source.tar.xz"
+source="https://cdn.openttd.org/openttd-releases/$pkgver/openttd-$pkgver-source.tar.xz"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --install-dir="$pkgdir" \
- --disable-strip
- make
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} -B build
+ make -C build
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"
- make install
+ make -C build DESTDIR="$pkgdir" install
}
-sha512sums="44d907299a14fd09ebff980f7c212bbdbd5def880bc56bfe106c3efa8cb32472bbcafdbb145d3f4340a3bc96179418f78fe2ddc62dd067b464eca73313b477c1 openttd-1.9.1-source.tar.xz"
+sha512sums="194135cc01457d9ed069c09d8961ad3de681bc9936533ca81ff23099f394bb9a83ef84a0852e85525e258f6149e14fd41cfc5f8e683c0643515005c42fb77e3b openttd-14.1-source.tar.xz"
diff --git a/user/openvpn/APKBUILD b/user/openvpn/APKBUILD
index 06317735b..a3d86d7b9 100644
--- a/user/openvpn/APKBUILD
+++ b/user/openvpn/APKBUILD
@@ -2,15 +2,15 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Lee Starnes <lee@canned-death.us>
pkgname=openvpn
-pkgver=2.4.6
-pkgrel=1
+pkgver=2.6.12
+pkgrel=0
pkgdesc="A robust, and highly configurable VPN (Virtual Private Network)"
url="https://openvpn.net/"
arch="all"
license="GPL-2.0-only WITH openvpn-openssl-exception"
+depends="iproute2 lz4-libs"
+makedepends="libcap-ng-dev linux-headers linux-pam-dev lz4-dev lzo-dev openssl-dev"
subpackages="$pkgname-doc $pkgname-dev $pkgname-auth-pam:pam $pkgname-openrc"
-depends="iproute2"
-makedepends="openssl-dev lzo-dev linux-pam-dev linux-headers"
install="$pkgname.pre-install"
source="https://swupdate.openvpn.net/community/releases/$pkgname-$pkgver.tar.gz
openvpn.initd
@@ -19,8 +19,20 @@ source="https://swupdate.openvpn.net/community/releases/$pkgname-$pkgver.tar.gz
openvpn.down
"
+# secfixes:
+# 2.6.7-r0:
+# - CVE-2023-46850
+# - CVE-2023-46849
+# 2.5.6-r0:
+# - CVE-2022-0547
+# - CVE-2021-3606
+# - CVE-2020-15078
+# 2.4.11-r0:
+# - CVE-2020-15078
+# 2.4.9-r0:
+# - CVE-2020-11810
+
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,12 +45,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
# install samples
@@ -62,7 +72,7 @@ pam() {
"$subpkgdir"/usr/lib/openvpn/plugins/
}
-sha512sums="cdd70bfd03177bc6cb70d0d614e40389df00816b7097740b4cda9d7bee094d1463fdb5afeaf604c52c7b3167d1edb098a2e095e131a8b9fed0ed8b29da90cbe8 openvpn-2.4.6.tar.gz
+sha512sums="92f548186d9375d6ae47b1387dd191241b8a45aed82294523b3771bdd5e699b94265e1a3bbf3ef2638da0d54c19c783f54c456cbd755c846849bf67913cad6db openvpn-2.6.12.tar.gz
3594937d4cc9d7b87ac6a3af433f651ed9695f41586994f9d9789554fbe3f87f054b997b89486eda4ae0b852d816aac9007222168d585910aa9f255073324bd9 openvpn.initd
6b2353aca9df7f43044e4e37990491b4ba077e259ebe13b8f2eb43e35ca7a617c1a65c5bfb8ab05e87cf12c4444184ae064f01f9abbb3c023dbbc07ff3f9c84e openvpn.confd
cdb73c9a5b1eb56e9cbd29955d94297ce5a87079419cd626d6a0b6680d88cbf310735a53f794886df02030b687eaea553c7c569a8ea1282a149441add1c65760 openvpn.up
diff --git a/user/openvpn/openvpn.pre-install b/user/openvpn/openvpn.pre-install
index c07253531..f17d62880 100644
--- a/user/openvpn/openvpn.pre-install
+++ b/user/openvpn/openvpn.pre-install
@@ -1,6 +1,7 @@
#!/bin/sh
-addgroup -S openvpn 2>/dev/null
-adduser -S -D -H -h /dev/null -s /sbin/nologin -G openvpn -g openvpn openvpn 2>/dev/null
+groupadd -r openvpn 2>/dev/null
+useradd -c openvpn -s /sbin/nologin -g openvpn \
+ -m -d /dev/null -r openvpn 2>/dev/null
exit 0
diff --git a/user/oprofile/APKBUILD b/user/oprofile/APKBUILD
index 90641b0e3..d1083c600 100644
--- a/user/oprofile/APKBUILD
+++ b/user/oprofile/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=oprofile
-pkgver=1.3.0
+pkgver=1.4.0
pkgrel=0
pkgdesc="System profiler for Linux"
url="http://oprofile.sourceforge.net/news/"
@@ -16,7 +16,6 @@ source="https://prdownloads.sourceforge.net/oprofile/oprofile-$pkgver.tar.gz
"
build() {
- cd "$builddir"
CXXFLAGS="$CXXFLAGS" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,15 +27,13 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="02a940cd8d38834dca2a97c8ac0fff04ef95b3819cfdf74a462b9326c7abbf2dc55d2a9b9d1fbefc7f455465bf85516be2b879d7daf1861ba2c4af51214377ba oprofile-1.3.0.tar.gz
+sha512sums="44c0ae55d20d623ea8b4245bfe3e208813dbb8778d7e320378ffe70538ef6af1a6ddaf5d110e29751c216879543f13121dd71cb320023205622b3f0cd6b157df oprofile-1.4.0.tar.gz
9ad0e25f2ab165e6613d8fbd65b652fb82b41beef28f9edca6b763001d50fb5f35e433454a7beeecaa1d0d3adc9c9f16adc6d4d9f20ae9d27cc3120c04906576 disable-regex-test.patch
831fd9b18df0daaa01682c50479f432e81da951550db6d0b11315232b728517493533b41b46fd64f3e74405b8d515fb86d7b4b96898cf45b262a7e790a131740 posixise.patch"
diff --git a/user/optipng/APKBUILD b/user/optipng/APKBUILD
index fcdef5b01..7ad5fbe5f 100644
--- a/user/optipng/APKBUILD
+++ b/user/optipng/APKBUILD
@@ -13,7 +13,6 @@ subpackages="$pkgname-doc"
source="https://downloads.sourceforge.net/optipng/optipng-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
-prefix=/usr \
-mandir=/usr/share/man \
@@ -22,12 +21,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/opus/APKBUILD b/user/opus/APKBUILD
index 2b2a2d887..1fbcc5e17 100644
--- a/user/opus/APKBUILD
+++ b/user/opus/APKBUILD
@@ -4,17 +4,17 @@ pkgname=opus
pkgver=1.3.1
pkgrel=0
pkgdesc="Codec designed for speech and audio transmission"
-url="http://www.opus-codec.org/"
+url="https://www.opus-codec.org/"
arch="all"
license="BSD-3-Clause"
+depends=""
+makedepends=""
subpackages="$pkgname-dev $pkgname-doc"
source="https://archive.mozilla.org/pub/$pkgname/$pkgname-$pkgver.tar.gz"
-builddir="$srcdir/$pkgname-$pkgver"
build() {
- cd "$builddir"
-
- CFLAGS="${CFLAGS/-Os/-O2}" ./configure \
+ CFLAGS="$(printf '%s' "$CFLAGS" | sed 's/-Os/-O2/')" \
+ ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -27,13 +27,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
-
make DESTDIR="$pkgdir" install
install -Dm644 COPYING \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
diff --git a/user/opusfile/APKBUILD b/user/opusfile/APKBUILD
index fa68d8249..030d83d39 100644
--- a/user/opusfile/APKBUILD
+++ b/user/opusfile/APKBUILD
@@ -1,9 +1,9 @@
# Maintainer:
pkgname=opusfile
-pkgver=0.11
+pkgver=0.12
pkgrel=0
pkgdesc="High-level API for decoding and seeking within .opus files"
-url="http://www.opus-codec.org/"
+url="https://www.opus-codec.org/"
arch="all"
license="BSD-3-Clause"
depends=""
@@ -12,8 +12,6 @@ subpackages="$pkgname-dev $pkgname-doc"
source="https://downloads.xiph.org/releases/opus/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
-
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,13 +26,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="ec3e282310cc4f25475c27b7bc8d1652dcb25d3ac6badf87bd1b4e5397fbe106a0dab81c60d88d198003a23d8a2c9bae8b661edc9b31433effeca438ce56a349 opusfile-0.11.tar.gz"
+sha512sums="e25e6968a3183ac0628ce1000840fd6f9f636e92ba984d6a72b76fb2a98ec632d2de4c66a8e4c05ef30655c2a4a13ab35f89606fa7d79a54cfa8506543ca57af opusfile-0.12.tar.gz"
diff --git a/user/orage/APKBUILD b/user/orage/APKBUILD
index 4cb9121e2..663792e24 100644
--- a/user/orage/APKBUILD
+++ b/user/orage/APKBUILD
@@ -1,23 +1,20 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=orage
-pkgver=4.12.1
-pkgrel=1
+pkgver=4.18.0
+pkgrel=0
pkgdesc="Calendaring software for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-2.0+ AND BSD-3-Clause AND (LGPL-2.1-only OR MPL-1.0) AND (GPL-2.0+ OR Artistic-2.0) AND MPL-1.0 AND BSD-2-Clause AND LGPL-2.0+"
-makedepends="intltool gtk+2.0-dev dbus-glib-dev libnotify-dev popt-dev
- xfce4-panel-dev"
-subpackages="$pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/apps/orage/4.12/orage-$pkgver.tar.bz2
- libical-3.patch
- "
+depends=""
+makedepends="intltool dbus-glib-dev libical-dev libnotify-dev libxfce4ui-dev
+ popt-dev xfce4-panel-dev"
+subpackages="$pkgname-lang"
+source="https://archive.xfce.org/src/apps/orage/${pkgver%.*}/orage-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -28,14 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3fec0201171140586cdc9bcf151450a7086515e18b5815afe4fe4c4726ba554c50582b0479e52985b330140c51b7233ef81f678f986f848afbeee74c66b2d196 orage-4.12.1.tar.bz2
-4f46c99ee3354861d2dca34b9a87bdacc8cd9ad0ad935a364b45b850c08b461c32550bb4df185b66c3963c12f8171ba700c46c263baf92ded8eabc2476bb8cc0 libical-3.patch"
+sha512sums="7760219f64ac3e2ba6d73541a626a0c9411b93268c007f2af5d8080a3a3c0b2a08e00dd96b7794b688aa83c567150c02033b9ba46bf38cd71d3d890e8d1e45ad orage-4.18.0.tar.bz2"
diff --git a/user/orage/libical-3.patch b/user/orage/libical-3.patch
deleted file mode 100644
index ad57fd3cb..000000000
--- a/user/orage/libical-3.patch
+++ /dev/null
@@ -1,76 +0,0 @@
-From 58e4bb4d3b982876dec33d55003d591559439598 Mon Sep 17 00:00:00 2001
-From: Stefan Seyfried <seife+dev@b1-systems.com>
-Date: Sat, 3 Mar 2018 20:25:24 +0100
-Subject: [PATCH] fix build with libical version 3
-
----
- src/ical-code.c | 12 ++++++++++++
- 1 file changed, 12 insertions(+)
-
-diff --git a/src/ical-code.c b/src/ical-code.c
-index d5831404..c40042c3 100644
---- a/src/ical-code.c
-+++ b/src/ical-code.c
-@@ -2579,7 +2579,9 @@ static struct icaltimetype count_first_alarm_time(xfical_period per
- * when counting alarm time. */
- if (rel == ICAL_RELATED_START) {
- per.stime.is_date = 0;
-+#if ICAL_MAJOR_VERSION < 3
- per.stime.is_utc = 1;
-+#endif
- per.stime.is_daylight = 0;
- per.stime.zone = utc_icaltimezone;
- per.stime.hour = 0;
-@@ -2588,7 +2590,9 @@ static struct icaltimetype count_first_alarm_time(xfical_period per
- }
- else {
- per.etime.is_date = 0;
-+#if ICAL_MAJOR_VERSION < 3
- per.etime.is_utc = 1;
-+#endif
- per.etime.is_daylight = 0;
- per.etime.zone = utc_icaltimezone;
- per.etime.hour = 0;
-@@ -2613,7 +2617,9 @@ static struct icaltimetype count_next_alarm_time(struct icaltimetype start_time
- /* HACK: convert to UTC time so that we can use time arithmetic
- * when counting alarm time. */
- start_time.is_date = 0;
-+#if ICAL_MAJOR_VERSION < 3
- start_time.is_utc = 1;
-+#endif
- start_time.is_daylight = 0;
- start_time.zone = utc_icaltimezone;
- start_time.hour = 0;
-@@ -2768,7 +2774,9 @@ static alarm_struct *process_alarm_trigger(icalcomponent *c
- */
- if (icaltime_is_date(per.stime)) {
- if (local_icaltimezone != utc_icaltimezone) {
-+#if ICAL_MAJOR_VERSION < 3
- next_alarm_time.is_utc = 0;
-+#endif
- next_alarm_time.is_daylight = 0;
- next_alarm_time.zone = local_icaltimezone;
- }
-@@ -2850,7 +2858,9 @@ orage_message(120, P_N "Alarm rec loop next_start:%s next_alarm:%s per.stime:%s"
- */
- if (icaltime_is_date(per.stime)) {
- if (local_icaltimezone != utc_icaltimezone) {
-+#if ICAL_MAJOR_VERSION < 3
- next_alarm_time.is_utc = 0;
-+#endif
- next_alarm_time.is_daylight = 0;
- next_alarm_time.zone = local_icaltimezone;
- }
-@@ -2944,7 +2954,9 @@ orage_message(120, P_N "*****After loop Alarm %s %s", icaltime_as_ical_string(ne
- */
- if (icaltime_is_date(per.stime)) {
- if (local_icaltimezone != utc_icaltimezone) {
-+#if ICAL_MAJOR_VERSION < 3
- next_alarm_time.is_utc = 0;
-+#endif
- next_alarm_time.is_daylight = 0;
- next_alarm_time.zone = local_icaltimezone;
- }
---
-2.16.2
-
diff --git a/user/orbit2/APKBUILD b/user/orbit2/APKBUILD
index 5b954c654..6ce091c9e 100644
--- a/user/orbit2/APKBUILD
+++ b/user/orbit2/APKBUILD
@@ -1,28 +1,26 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
-# Maintainer:
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=orbit2
pkgver=2.14.19
pkgrel=5
pkgdesc="CORBA implementation for GNOME"
-url="https://projects-old.gnome.org/ORBit2/"
+url="https://gitlab.gnome.org/Archive/orbit2"
arch="all"
+options="!check" # known bug (and this package is so old)
license="LGPL-2.0-only"
-depends=
+depends=""
makedepends="glib-dev libidl-dev"
-install=""
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.gnome.org/sources/ORBit2/${pkgver%.*}/ORBit2-${pkgver}.tar.bz2
glib-2.36.patch"
builddir="$srcdir"/ORBit2-$pkgver
prepare() {
- cd "$builddir"
update_config_sub
default_prepare
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,12 +30,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/orc/APKBUILD b/user/orc/APKBUILD
index 9726ef4f4..18ad500b9 100644
--- a/user/orc/APKBUILD
+++ b/user/orc/APKBUILD
@@ -2,38 +2,29 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=orc
-pkgver=0.4.28
-pkgrel=1
+pkgver=0.4.33
+pkgrel=0
pkgdesc="The Oil Run-time Compiler"
url="https://gstreamer.freedesktop.org/modules/orc.html"
arch="all"
license="BSD-2-Clause AND BSD-3-Clause"
-makedepends="linux-headers"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-compiler"
-source="https://gstreamer.freedesktop.org/src/orc/${pkgname}-${pkgver}.tar.xz
- orc-0.4.28-ppc64-elfv2.patch"
+depends=""
+makedepends="linux-headers meson ninja"
+subpackages="$pkgname-dev $pkgname-compiler"
+source="https://gstreamer.freedesktop.org/src/orc/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --infodir=/usr/share/info \
- --localstatedir=/var
- make
+ meson -Dprefix=/usr \
+ build
+ ninja -C build
}
check() {
- cd "$builddir"
- make check
+ ninja -C build test
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" ninja -C build install
}
dev() {
@@ -48,5 +39,4 @@ compiler() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}
-sha512sums="2ae3100e7d0c03eba9a8a10a8924da4d729e1967b63e5dfdf88c4aee907d7ece82c782d74f4cb7e28a366dd74ce5e1ddc6e2b971e5a2f879b0501cc313b93410 orc-0.4.28.tar.xz
-c7067aff0295a68048cc0c2dbe9d7ce5b0eff6a19fce553fcccb6a358d35fb2f14f1a201f96e995d920f44995483f2eccc779f9d81817b0661794354555b5532 orc-0.4.28-ppc64-elfv2.patch"
+sha512sums="ae8adce5dd62f4054879e6f2db76ce8a7959fd32fef0fb99f73f450ff58c5237e15bca764f6780309a163e40afcf400345f12b0aed5b88dc698064e44f8eede0 orc-0.4.33.tar.xz"
diff --git a/user/orc/orc-0.4.28-ppc64-elfv2.patch b/user/orc/orc-0.4.28-ppc64-elfv2.patch
deleted file mode 100644
index 7f4f8b0d3..000000000
--- a/user/orc/orc-0.4.28-ppc64-elfv2.patch
+++ /dev/null
@@ -1,28 +0,0 @@
---- orc-0.4.28/orc/orcprogram-altivec.c.old 2014-04-11 03:36:22.000000000 -0500
-+++ orc-0.4.28/orc/orcprogram-altivec.c 2018-01-07 23:32:55.065198004 -0600
-@@ -27,12 +27,14 @@
- ORC_ASM_CODE (compiler, "%s:\n", compiler->program->name);
-
- if (compiler->is_64bit) {
-+#if !defined(_CALL_ELF) || _CALL_ELF == 1
- ORC_ASM_CODE (compiler, " .quad .%s,.TOC.@tocbase,0\n",
- compiler->program->name);
- ORC_ASM_CODE (compiler, ".%s:\n", compiler->program->name);
- powerpc_emit (compiler, 0); powerpc_emit (compiler, 0);
- powerpc_emit (compiler, 0); powerpc_emit (compiler, 0);
- powerpc_emit (compiler, 0); powerpc_emit (compiler, 0);
-+#endif
- powerpc_emit_stdu (compiler, POWERPC_R1, POWERPC_R1, -16);
- } else {
- powerpc_emit_stwu (compiler, POWERPC_R1, POWERPC_R1, -16);
---- orc-0.4.28/orc/orcpowerpc.c.old 2014-04-11 03:36:22.000000000 -0500
-+++ orc-0.4.28/orc/orcpowerpc.c 2018-01-07 23:31:53.285259170 -0600
-@@ -423,7 +423,7 @@
- int size = code->code_size;
-
- ptr = code->code;
--#ifdef __powerpc64__
-+#if defined(__powerpc64__) && (!defined(_CALL_ELF) || _CALL_ELF == 1)
- *(unsigned char **) ptr = (unsigned char *) code->exec + 24;
- #endif
- for (i=0;i<size;i+=cache_line_size) {
diff --git a/user/os-prober/APKBUILD b/user/os-prober/APKBUILD
new file mode 100644
index 000000000..016f92168
--- /dev/null
+++ b/user/os-prober/APKBUILD
@@ -0,0 +1,52 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=os-prober
+pkgver=1.77
+pkgrel=0
+pkgdesc="Utility to detect operating systems on hard drives"
+url="http://joeyh.name/code/os-prober/"
+arch="all"
+options="!check" # No test suite.
+license="GPL-2.0+ AND GPL-1.0+"
+depends="/bin/sh grub-mount"
+makedepends=""
+subpackages=""
+source="http://deb.debian.org/debian/pool/main/o/os-prober/os-prober_$pkgver.tar.xz"
+
+build() {
+ make
+}
+
+package() {
+ case $CTARGET_ARCH in
+ i486|i586|pmmx|x86*)
+ PROBE_ARCH=x86;;
+ ppc*)
+ PROBE_ARCH=powerpc;;
+ sparc*)
+ PROBE_ARCH=sparc;;
+ *)
+ PROBE_ARCH=$CTARGET_ARCH;;
+ esac
+ for probes in os-probes os-probes/mounted os-probes/init \
+ linux-boot-probes linux-boot-probes/mounted; do
+ mkdir -p "$pkgdir/usr/lib/$probes"
+ for file in $probes/common/*; do
+ install -Dm755 $file "$pkgdir/usr/lib/$probes"
+ done
+ if [ -e "$probes/${PROBE_ARCH}" ]; then
+ mkdir -p "$pkgdir/usr/lib/$probes/${PROBE_ARCH}"
+ cp -a $probes/${PROBE_ARCH}/* \
+ "$pkgdir/usr/lib/$probes/${PROBE_ARCH}"
+ fi
+ done
+ mkdir -p "$pkgdir"/usr/lib/os-prober "$pkgdir"/usr/bin
+ mkdir -p "$pkgdir"/usr/share/os-prober
+ install -dm700 "$pkgdir"/var/lib/os-prober
+ install -Dm755 newns "$pkgdir"/usr/lib/os-prober/
+ install -Dm755 os-prober "$pkgdir"/usr/bin/
+ install -Dm755 linux-boot-prober "$pkgdir"/usr/bin/
+ install -Dm755 common.sh "$pkgdir"/usr/share/os-prober/
+}
+
+sha512sums="4d9c22ccc4d950644a06a17ec4424aca5ff82aeb20052dc389dd451b6b9a1799c5a9438644a29093153730af42066abbbbb78f593f2564314c9adbd43f60e39b os-prober_1.77.tar.xz"
diff --git a/user/otf-culmus/APKBUILD b/user/otf-culmus/APKBUILD
index d70ab7169..c9a868706 100644
--- a/user/otf-culmus/APKBUILD
+++ b/user/otf-culmus/APKBUILD
@@ -1,19 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=otf-culmus
pkgver=0.133
pkgrel=0
pkgdesc="Culmus collections of Hebrew font families"
-url="https://culmus.sourceforge.net"
+url="http://culmus.sourceforge.net/"
arch="noarch"
-options="!check" # No tests
+options="!check" # No test suite.
license="MIT AND GPL-2.0-only WITH font-exception"
depends="fontconfig"
+makedepends=""
source="https://downloads.sourceforge.net/culmus/culmus-$pkgver.tar.gz"
builddir="$srcdir"/${pkgname#*-}-$pkgver
package() {
- cd "$builddir"
mkdir -p "$pkgdir"/usr/share/fonts/X11/OTF/${pkgname#*-}
for i in *.otf; do
install -Dm644 "$i" "$pkgdir"/usr/share/fonts/X11/OTF/${pkgname#*-}
diff --git a/user/otf-exo/APKBUILD b/user/otf-exo/APKBUILD
index 588a20ec9..01d900e13 100644
--- a/user/otf-exo/APKBUILD
+++ b/user/otf-exo/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=otf-exo
pkgver=2
pkgrel=0
@@ -10,14 +10,12 @@ options="!check" # No tests
license="OFL-1.1"
depends="fontconfig"
makedepends=""
-source="http://ndiscovered.com/archives/exo-$pkgver.zip"
-builddir="$srcdir"
+source="https://web.archive.org/web/20190802223635/http://ndiscovered.com/archives/exo-2.zip"
package() {
- cd "$builddir"
- mkdir -p "$pkgdir"/usr/share/X11/OTF/${pkgname#*-}
- for i in *.otf; do
- install -Dm644 "$i" "$pkgdir"/usr/share/X11/OTF/${pkgname#*-}
+ mkdir -p "$pkgdir"/usr/share/fonts/X11/OTF/${pkgname#*-}
+ for i in "$srcdir"/*.otf; do
+ install -Dm644 "$i" "$pkgdir"/usr/share/fonts/X11/OTF/${pkgname#*-}
done
}
diff --git a/user/otf-office-code-pro/APKBUILD b/user/otf-office-code-pro/APKBUILD
index 6628a1d77..0e3592eb8 100644
--- a/user/otf-office-code-pro/APKBUILD
+++ b/user/otf-office-code-pro/APKBUILD
@@ -1,12 +1,12 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=otf-office-code-pro
pkgver=1.004
pkgrel=0
pkgdesc="Monospaced font family for programming and console users"
url="https://github.com/nathco/Office-Code-Pro"
arch="noarch"
-options="!check" # No tests
+options="!check" # No test suite.
license="OFL-1.1"
depends="fontconfig"
makedepends=""
@@ -14,15 +14,15 @@ source="https://github.com/nathco/Office-Code-Pro/archive/1.004.zip"
builddir="$srcdir/Office-Code-Pro-$pkgver"
package() {
- mkdir -p "$pkgdir"/usr/share/X11/OTF/${pkgname#*-}
+ mkdir -p "$pkgdir"/usr/share/fonts/X11/OTF/${pkgname#*-}
cd "$builddir/Fonts/Office Code Pro/OTF"
for i in *.otf; do
- install -Dm644 "$i" "$pkgdir"/usr/share/X11/OTF/${pkgname#*-}
+ install -Dm644 "$i" "$pkgdir"/usr/share/fonts/X11/OTF/${pkgname#*-}
done
- mkdir -p "$pkgdir"/usr/share/X11/OTF/${pkgname#*-}-d
+ mkdir -p "$pkgdir"/usr/share/fonts/X11/OTF/${pkgname#*-}-d
cd "$builddir/Fonts/Office Code Pro D/OTF"
for i in *.otf; do
- install -Dm644 "$i" "$pkgdir"/usr/share/X11/OTF/${pkgname#*-}-d
+ install -Dm644 "$i" "$pkgdir"/usr/share/fonts/X11/OTF/${pkgname#*-}-d
done
}
diff --git a/user/otf-proggy-vector/APKBUILD b/user/otf-proggy-vector/APKBUILD
index 598f710e8..b78a25b3d 100644
--- a/user/otf-proggy-vector/APKBUILD
+++ b/user/otf-proggy-vector/APKBUILD
@@ -1,12 +1,12 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=otf-proggy-vector
pkgver=1.1.5
pkgrel=0
pkgdesc="Monospaced font family for programming"
url="https://github.com/bluescan/proggyfonts"
arch="noarch"
-options="!check" # No tests
+options="!check" # No test suite.
license="MIT AND Custom"
depends="fontconfig"
makedepends=""
@@ -15,9 +15,9 @@ builddir="$srcdir/proggyfonts-$pkgver"
package() {
cd "$builddir"/ProggyVector
- mkdir -p "$pkgdir"/usr/share/X11/OTF/${pkgname#*-}
+ mkdir -p "$pkgdir"/usr/share/fonts/X11/OTF/${pkgname#*-}
for i in *.otf; do
- install -Dm644 "$i" "$pkgdir"/usr/share/X11/OTF/${pkgname#*-}
+ install -Dm644 "$i" "$pkgdir"/usr/share/fonts/X11/OTF/${pkgname#*-}
done
}
diff --git a/user/otf-source-code-pro/APKBUILD b/user/otf-source-code-pro/APKBUILD
index 442611e3f..bc9d73f25 100644
--- a/user/otf-source-code-pro/APKBUILD
+++ b/user/otf-source-code-pro/APKBUILD
@@ -1,25 +1,25 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=otf-source-code-pro
-pkgver=2.030
-_pkgver=1.050
+pkgver=2.042
+_itver=1.062
+_varver=1.026
pkgrel=0
pkgdesc="Monospaced font family for user interfaces and programming"
url="https://adobe-fonts.github.io/source-code-pro/"
arch="noarch"
-options="!check" # No tests
+options="!check" # No test suite.
license="OFL-1.1"
depends="fontconfig"
makedepends=""
-source="https://github.com/adobe-fonts/source-code-pro/archive/${pkgver}R-ro/${_pkgver}R-it.zip"
-builddir="$srcdir/source-code-pro-${pkgver}R-ro-${_pkgver}R-it"
+source="https://github.com/adobe-fonts/source-code-pro/releases/download/${pkgver}R-u/${_itver}R-i/${_varver}R-vf/OTF-source-code-pro-${pkgver}R-u_${_itver}R-i.zip"
+builddir="$srcdir/OTF"
package() {
- cd "$builddir"/OTF
- mkdir -p "$pkgdir"/usr/share/X11/OTF/${pkgname#*-}
+ mkdir -p "$pkgdir"/usr/share/fonts/X11/OTF/${pkgname#*-}
for i in *.otf; do
- install -Dm644 "$i" "$pkgdir"/usr/share/X11/OTF/${pkgname#*-}
+ install -Dm644 "$i" "$pkgdir"/usr/share/fonts/X11/OTF/${pkgname#*-}
done
}
-sha512sums="b31d4a33482e7817adbe73919fdeeb0e3c0e4564e6dc1b86e7328ca405c5bb1b36338b665b124848ada2e94917b8ce36ee8cc03dd632648b44d1421486c27d02 1.050R-it.zip"
+sha512sums="a961c607557f727ae1099d741318eac49bd177009faca4ff843da86075c2403ccb72fa633050edf86dccd014a7aaa8348260b2af36a7b5e964b1be7b9dabe3d6 OTF-source-code-pro-2.042R-u_1.062R-i.zip"
diff --git a/user/otf-source-sans-pro/APKBUILD b/user/otf-source-sans-pro/APKBUILD
index 497de47fa..a9a03af59 100644
--- a/user/otf-source-sans-pro/APKBUILD
+++ b/user/otf-source-sans-pro/APKBUILD
@@ -1,25 +1,24 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=otf-source-sans-pro
-pkgver=2.045
-_pkgver=1.095
+pkgver=3.052
+_pkgver=${pkgver%.*}v${pkgver#*.}
pkgrel=0
pkgdesc="Sans serif font family for user interfaces"
url="https://adobe-fonts.github.io/source-sans-pro"
arch="noarch"
-options="!check" # No tests
+options="!check" # No test suite.
license="OFL-1.1"
depends="fontconfig"
makedepends=""
-source="https://github.com/adobe-fonts/source-sans-pro/releases/download/2.045R-ro%2F1.095R-it/source-sans-pro-${pkgver}R-ro-${_pkgver}R-it.zip"
-builddir="$srcdir/source-sans-pro-${pkgver}R-ro-${_pkgver}R-it"
+source="https://github.com/adobe-fonts/source-sans-pro/releases/download/${pkgver}R/OTF-source-sans-${pkgver}R.zip"
+builddir="$srcdir/OTF"
package() {
- cd "$builddir"/OTF
- mkdir -p "$pkgdir"/usr/share/X11/OTF/${pkgname#*-}
+ mkdir -p "$pkgdir"/usr/share/fonts/X11/OTF/${pkgname#*-}
for i in *.otf; do
- install -Dm644 "$i" "$pkgdir"/usr/share/X11/OTF/${pkgname#*-}
+ install -Dm644 "$i" "$pkgdir"/usr/share/fonts/X11/OTF/${pkgname#*-}
done
}
-sha512sums="51b4936460b8882134a362af0c6e2200dc929fa94150346628a8fe3b0ecb5b7f97380ba4b8a339b06e0c5d6d92d4454e95b72eccf12195046475d7aed68cf6fc source-sans-pro-2.045R-ro-1.095R-it.zip"
+sha512sums="dcd0c783d6c298f0040ade1d548fa5632ecc04d1e6a30eb387288ee00473f06bff26b7a98323d4306cebeb5a48af143d170c00461057d22d335798c7c48a5e15 OTF-source-sans-3.052R.zip"
diff --git a/user/otf-source-serif-pro/APKBUILD b/user/otf-source-serif-pro/APKBUILD
deleted file mode 100644
index 529c4fd71..000000000
--- a/user/otf-source-serif-pro/APKBUILD
+++ /dev/null
@@ -1,25 +0,0 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-pkgname=otf-source-serif-pro
-pkgver=2.010
-_pkgver=1.010
-pkgrel=0
-pkgdesc="Serif font family for typesetting"
-url="https://adobe-fonts.github.io/source-serif-pro/"
-arch="noarch"
-options="!check" # No tests
-license="OFL-1.1"
-depends="fontconfig"
-makedepends=""
-source="https://github.com/adobe-fonts/source-serif-pro/releases/download/${pkgver}R-ro%2F${_pkgver}R-it/source-serif-pro-${pkgver}R-ro-${_pkgver}R-it.zip"
-builddir="$srcdir/source-serif-pro-${pkgver}R-ro-${_pkgver}R-it"
-
-package() {
- cd "$builddir"/OTF
- mkdir -p "$pkgdir"/usr/share/X11/OTF/${pkgname#*-}
- for i in *.otf; do
- install -Dm644 "$i" "$pkgdir"/usr/share/X11/OTF/${pkgname#*-}
- done
-}
-
-sha512sums="464fe11a928a8d574912a87d6df66c57a0fba554bb39ff8ae7faf607440f2805f8022f40870ed408284e3676cc164ce114a483ba4259e23b4d06efeee4c0fc3f source-serif-pro-2.010R-ro-1.010R-it.zip"
diff --git a/user/otf-source-serif/APKBUILD b/user/otf-source-serif/APKBUILD
new file mode 100644
index 000000000..b85822f28
--- /dev/null
+++ b/user/otf-source-serif/APKBUILD
@@ -0,0 +1,27 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=otf-source-serif
+_pkgreal=${pkgname#*-}
+pkgver=4.005
+pkgrel=0
+pkgdesc="Serif font family for typesetting"
+url="https://adobe-fonts.github.io/source-serif/"
+arch="noarch"
+options="!check" # No test suite.
+license="OFL-1.1"
+depends="fontconfig"
+makedepends=""
+replaces="otf-source-serif-pro"
+provides="otf-source-serif-pro"
+source="https://github.com/adobe-fonts/source-serif/releases/download/${pkgver}R/$_pkgreal-${pkgver}_Desktop.zip"
+builddir="$srcdir/$_pkgreal-${pkgver}_Desktop"
+
+package() {
+ cd "$builddir"/OTF
+ mkdir -p "$pkgdir"/usr/share/fonts/X11/OTF/${pkgname#*-}
+ for i in *.otf; do
+ install -Dm644 "$i" "$pkgdir"/usr/share/fonts/X11/OTF/${pkgname#*-}
+ done
+}
+
+sha512sums="850a0b76b95d53b0256cd40d476252cd7b63a975425322ba3efa1ace67b2e834470c2e56d8fad5ebce60385d90123db66e69f9fe967b8671591d1b52617f0ec5 source-serif-4.005_Desktop.zip"
diff --git a/user/oxygen-fonts/APKBUILD b/user/oxygen-fonts/APKBUILD
index 152a0aae4..bf4202efb 100644
--- a/user/oxygen-fonts/APKBUILD
+++ b/user/oxygen-fonts/APKBUILD
@@ -10,10 +10,9 @@ license="OFL-1.1"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev fontforge-dev"
subpackages=""
-source="http://download.kde.org/stable/plasma/$pkgver/oxygen-fonts-$pkgver.tar.xz"
+source="https://download.kde.org/stable/plasma/$pkgver/oxygen-fonts-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -24,17 +23,15 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/oxygen-icons5/APKBUILD b/user/oxygen-icons5/APKBUILD
index 6c44d063b..686d6b6b1 100644
--- a/user/oxygen-icons5/APKBUILD
+++ b/user/oxygen-icons5/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=oxygen-icons5
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="The KDE Oxygen icon set"
url="https://www.kde.org/"
@@ -14,7 +14,6 @@ subpackages=""
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/oxygen-icons5-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,18 +24,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="5ae34015aebff31cab3192905c388ac5a75c67e7b24ba3bb12075edf6f6cb013f9ace837ea8dd4ef7c5174e27ea1b84e418b34eb983648943c4063dd076d6ccb oxygen-icons5-5.54.0.tar.xz"
+sha512sums="b9906927ec15c422aefaa2e0f287121c51ec16386f60371a8e773c9c4f0530cc1bad99849079cbfff16d78432ac30867ad58d42e9fc6c0b1b07dff810481274d oxygen-icons5-5.94.0.tar.xz"
diff --git a/user/oxygen/APKBUILD b/user/oxygen/APKBUILD
index 6933df4d5..5c7eada1a 100644
--- a/user/oxygen/APKBUILD
+++ b/user/oxygen/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=oxygen
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="'Oxygen' theme for KDE"
url="https://www.kde.org/"
@@ -12,11 +12,10 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev libxcb-dev
frameworkintegration-dev kcmutils-dev kcompletion-dev kconfig-dev
kdecoration-dev kguiaddons-dev ki18n-dev kservice-dev
kwidgetsaddons-dev kwindowsystem-dev"
-subpackages="$pkgname-dev $pkgname-lang"
+subpackages="$pkgname-lang"
source="https://download.kde.org/stable/plasma/$pkgver/oxygen-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="20e448f223c13f60b929d3fe0be4070868ddf9189a1108b2a798ce08ca654db082798c6389e6dbd06dcc72fff061e3178c805c9f1fb595b1649235e0ec5231ff oxygen-5.12.7.tar.xz"
+sha512sums="90df776e36014b07849c9454632bb73a3b75d5d146eeec8d9de88b63d0bdbd68fabd9f1eaac0166f47057a61c48f7b531630f48d6b037d1a266e18e36febbaa2 oxygen-5.24.5.tar.xz"
diff --git a/user/p11-kit/APKBUILD b/user/p11-kit/APKBUILD
index ee6c68cb9..2cd5b0de4 100644
--- a/user/p11-kit/APKBUILD
+++ b/user/p11-kit/APKBUILD
@@ -1,20 +1,18 @@
# Contributor: Fabian Affolter <fabian@affolter-engineering.ch>
# Maintainer:
pkgname=p11-kit
-pkgver=0.23.15
+pkgver=0.23.20
pkgrel=0
pkgdesc="Library for loading and sharing PKCS#11 modules"
url="https://p11-glue.github.io/p11-glue/p11-kit.html"
arch="all"
license="BSD-3-Clause"
depends=""
-makedepends="libtasn1-dev libffi-dev"
-install=""
+makedepends="libffi-dev libtasn1-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-trust"
-source="https://github.com/p11-glue/p11-kit/releases/download/$pkgver/$pkgname-$pkgver.tar.gz"
+source="https://github.com/p11-glue/p11-kit/releases/download/$pkgver/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,12 +24,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -46,4 +42,4 @@ trust() {
"$subpkgdir"/usr/lib/pkcs11/
}
-sha512sums="d703eec12626b79551ce337521f7ea7b1a0b64c211d7a93d831dd28ec1de77c7b58358c1588bf82d70f047c01ad9433fa8a286d1a25ae3f6b0ee6016b8c42950 p11-kit-0.23.15.tar.gz"
+sha512sums="1eb88773fdd49dd48c7e089744e9dbbf6c1033a4863f3bfe75a68d842804baa3c373cb1b28ee625dd69a6e16c89df4ac755e0928495dccf38c007c530f6cfa57 p11-kit-0.23.20.tar.xz"
diff --git a/user/palapeli/APKBUILD b/user/palapeli/APKBUILD
index 5a4ec3dc4..17232dc42 100644
--- a/user/palapeli/APKBUILD
+++ b/user/palapeli/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=palapeli
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Jigsaw puzzle game by KDE"
url="https://www.kde.org/applications/games/palapeli/"
@@ -14,10 +14,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev
knotifications-dev kservice-dev kwidgetsaddons-dev kxmlgui-dev
libkdegames-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/palapeli-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/palapeli-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="69c7e16ca54e39ec1f32f04db54161dcdd88f85089759ef6871707b10aa3f52edfa59d99ab98e3e115ab0c3471af54148d64b9cc2b3939e5c12fd33c3dcd8678 palapeli-18.12.3.tar.xz"
+sha512sums="d4e115250e7833283c059d5db007065e75d9a257e0fdabcbc5a5586ccac6c6b7813d5902b5d9387a57eac5f8966437c06a3ef821114f8c466371e6460f48c059 palapeli-22.04.2.tar.xz"
diff --git a/user/pango/APKBUILD b/user/pango/APKBUILD
index aff854dc0..95e39984f 100644
--- a/user/pango/APKBUILD
+++ b/user/pango/APKBUILD
@@ -1,34 +1,52 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=pango
-pkgver=1.42.4
+pkgver=1.56.3
pkgrel=0
pkgdesc="Library for laying out and rendering text"
url="https://www.pango.org/"
arch="all"
-options="!check" # no tests available
license="LGPL-2.1+"
-subpackages="$pkgname-dev $pkgname-doc"
+depends=""
+checkdepends="cantarell-fonts"
makedepends="$depends_dev cairo-dev expat-dev fontconfig-dev freetype-dev
- fribidi-dev glib-dev gobject-introspection-dev harfbuzz-dev libxft-dev"
+ fribidi-dev glib-dev gobject-introspection-dev harfbuzz-dev libxft-dev
+ meson ninja"
install="$pkgname.pre-deinstall"
triggers="$pkgname.trigger=/usr/lib/pango/*/modules"
+subpackages="$pkgname-dev"
source="https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz"
-build () {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --localstatedir=/var
- make
+# secfixes:
+# 1.42.4-r1:
+# - CVE-2019-1010238
+
+prepare() {
+ default_prepare
+ # Test fails on ppc64 with x-position moved; upstream suggested it was
+ # related to rounding differences in HarfBuzz.
+ rm tests/layouts/valid-20.layout
+}
+
+build() {
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ -Dintrospection=enabled \
+ . build
+ meson compile -C build
+}
+
+check() {
+ meson test -C build
}
package() {
- cd "$builddir"
mkdir -p "$pkgdir"/etc/pango
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" meson install -C build
}
-sha512sums="993e97f647eba0c5ed90bcfcb8228bf67fa3f20b1f4331e4e40a30788d7c3ac55eee1209471bf21df125cb8fc6121acc8062a9da2f8a7d6cbe8e9ad13a9320dc pango-1.42.4.tar.xz"
+sha512sums="adb5aa66ea0c45f7bb112867a77f25d31d39bbb18fd8d41df0c1fd329714def874aa3cb8a49847561a75b0824c2abf8ce09a610d088e88d7de015c36a1536ac0 pango-1.56.3.tar.xz"
diff --git a/user/pangomm/APKBUILD b/user/pangomm/APKBUILD
index 5b2ddd058..ecb6508f7 100644
--- a/user/pangomm/APKBUILD
+++ b/user/pangomm/APKBUILD
@@ -1,37 +1,37 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=pangomm
-pkgver=2.42.0
+pkgver=2.46.3
pkgrel=0
pkgdesc="C++ interfaces for Pango"
url="https://gnome.org"
arch="all"
license="LGPL-2.1+"
depends=""
-makedepends="glibmm-dev cairomm-dev pango-dev"
+makedepends="doxygen glibmm-dev graphviz cairomm-dev meson ninja pango-dev libxslt"
subpackages="$pkgname-dev $pkgname-doc"
source="https://download.gnome.org/sources/pangomm/${pkgver%.*}/pangomm-$pkgver.tar.xz"
+
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
+ meson \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var
- make
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ -Dbuild-documentation=true \
+ build
+ ninja -C build
}
check() {
- cd "$builddir"
- make check
+ ninja -C build test
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" ninja -C build install
}
-sha512sums="2cebf76150414cde96b911eae947a6e1a073352927f01a44ddc276711151dffe0b9d8c54c3df16289d9002f982fa3e3386ddfe002be902f3086b44fff95fdb59 pangomm-2.42.0.tar.xz"
+sha512sums="c0925f295b372bca7b5ede28476ed00e691911e041632969e5e4c30fcf338bac069ba031d4f48601877524b90af47f5238e444e2de7501f1ff25dcda9dd9a9c8 pangomm-2.46.3.tar.xz"
diff --git a/user/papirus-icons/APKBUILD b/user/papirus-icons/APKBUILD
index f506865a1..761ce14e6 100644
--- a/user/papirus-icons/APKBUILD
+++ b/user/papirus-icons/APKBUILD
@@ -1,22 +1,20 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=papirus-icons
-pkgver=20180214
+pkgver=20200702
pkgrel=0
pkgdesc="Material, flat style icon theme"
url="https://store.kde.org/p/1166289/"
arch="noarch"
-license="LGPL-3.0"
options="!check" # Icon set.
+license="LGPL-3.0"
depends=""
makedepends=""
-install=""
-subpackages="$pkgname-light $pkgname-dark $pkgname-adapta"
+subpackages="$pkgname-light $pkgname-dark e$pkgname:epapirus"
source="$pkgname-$pkgver.tar.gz::https://github.com/PapirusDevelopmentTeam/papirus-icon-theme/archive/$pkgver.tar.gz"
builddir="$srcdir/papirus-icon-theme-$pkgver"
package() {
- cd "$builddir"
make IGNORE="ePapirus" DESTDIR="$pkgdir" install
}
@@ -34,12 +32,11 @@ dark() {
mv "$pkgdir"/usr/share/icons/Papirus-Dark "$subpkgdir"/usr/share/icons/
}
-adapta() {
- pkgdesc="$pkgdesc (for Adapta theme)"
+epapirus() {
+ pkgdesc="$pkgdesc"
mkdir -p "$subpkgdir"/usr/share/icons
- mv "$pkgdir"/usr/share/icons/Papirus-Adapta-* \
- "$subpkgdir"/usr/share/icons/
+ mv "$pkgdir"/usr/share/icons/ePapirus "$subpkgdir"/usr/share/icons/
}
-sha512sums="e3cff11cb4e0ad71ff5c44da9ef5135ce7fc2f4bea5e95f4c42963868ef7fce19daf45bc7f5649186bbedeb683d8a56a48f859cda17acacad7c3fbf35fdcd291 papirus-icons-20180214.tar.gz"
+sha512sums="ff2aa30bb70361f2952be203b3e3d00aae248726b5413a3a8e9ad7d6e7d0759e9bfd156cc65520175aba0e5436e9e58453ae0058d7d639d5c9a818e7f158761c papirus-icons-20200702.tar.gz"
diff --git a/user/parole/APKBUILD b/user/parole/APKBUILD
index 496594ae1..2a8722784 100644
--- a/user/parole/APKBUILD
+++ b/user/parole/APKBUILD
@@ -1,21 +1,20 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=parole
-pkgver=1.0.2
+pkgver=4.18.1
pkgrel=0
pkgdesc="GStreamer-based media player for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-2.0+ AND LGPL-2.1+"
+depends=""
makedepends="intltool gtk+3.0-dev dbus-glib-dev libxfce4ui-dev gstreamer-dev
gst-plugins-base-dev libnotify-dev libice-dev"
subpackages="$pkgname-dev $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/apps/parole/1.0/parole-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/apps/parole/${pkgver%.*}/parole-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- LIBS="-lX11" ./configure \
+ LIBS="-lintl -lX11" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d7e989af7f9dab14080e62bd656a2858d8536a056ba82b5d5ac7d26a7d898f478b74c1ba4371779624691b7f42b695580ad53cfb15da0a4dc209d7570c12a66d parole-1.0.2.tar.bz2"
+sha512sums="ec2b8036f2be594dc13c37aca76b7250ec1792c7166501e9a2775efb731e87cf6894196243e68026437e2bbd4a9edf1aa9cfa076886e333e2ecf4523f8f1d647 parole-4.18.1.tar.bz2"
diff --git a/user/partitionmanager/APKBUILD b/user/partitionmanager/APKBUILD
index 33c6e3bdf..be179d3ce 100644
--- a/user/partitionmanager/APKBUILD
+++ b/user/partitionmanager/APKBUILD
@@ -1,10 +1,10 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=partitionmanager
-pkgver=3.3.1
+pkgver=22.04.2
pkgrel=0
pkgdesc="Qt-based partition manager"
-url="https://www.kde.org/applications/system/kdepartitionmanager"
+url="https://www.kde.org/applications/system/partitionmanager"
arch="all"
license="GPL-3.0+"
depends=""
@@ -13,10 +13,9 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev kconfig-dev
kiconthemes-dev kio-dev kjobwidgets-dev kservice-dev kwidgetsaddons-dev
kxmlgui-dev kpmcore-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/partitionmanager/$pkgver/src/partitionmanager-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/partitionmanager-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="9189004c27a118510ddf7f148d2a245a7e17d0d0c038ea7486fc50638f2897f947ef2a2a92f0196c277b14e8dafb2f1e2f20978cce5927c04299232ecf8260b0 partitionmanager-3.3.1.tar.xz"
+sha512sums="09715df9012b5dab83ce635ca1d2e90e13455a1b798fc1c0a260dbfbc85a48d41db2a96652abc4b8d97a0128c292d360208ce0a6763a4ba5c19963dffc16af42 partitionmanager-22.04.2.tar.xz"
diff --git a/user/password-store/APKBUILD b/user/password-store/APKBUILD
index f8830a2ef..292b9a6e8 100644
--- a/user/password-store/APKBUILD
+++ b/user/password-store/APKBUILD
@@ -2,7 +2,7 @@
# Contributor: Johannes Matheis <jomat+alpinebuild@jmt.gr>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=password-store
-pkgver=1.7.3
+pkgver=1.7.4
pkgrel=0
pkgdesc="Stores, retrieves, generates, and synchronizes passwords securely"
url="https://www.passwordstore.org"
@@ -10,8 +10,7 @@ arch="noarch"
options="!check" # this is a shell script and has no tests
license="GPL-2.0+"
depends="bash gnupg libqrencode tree xclip"
-depends_dev=""
-makedepends="$depends_dev"
+makedepends=""
subpackages="$pkgname-doc
$pkgname-contrib
$pkgname-bash-completion:bashcomp
@@ -19,8 +18,11 @@ subpackages="$pkgname-doc
$pkgname-zsh-completion:zshcomp"
source="https://git.zx2c4.com/password-store/snapshot/$pkgname-$pkgver.tar.xz"
+# secfixes:
+# 1.7.4-r0:
+# - CVE-2020-28086
+
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" \
WITH_ALLCOMP=yes install
}
@@ -61,4 +63,4 @@ zshcomp() {
"$subpkgdir"/usr/share/zsh/site-functions
}
-sha512sums="89755a7b02f05d75055a9fc14fd3f456c0a49ec31bdffd097a027f91228c64a98b18c1e80017aeda811773ae3287ff1b9737532da8ded06799d8fe3979ca06f7 password-store-1.7.3.tar.xz"
+sha512sums="1fe108895b224451b54e545d399b6a97040e094049448509f92ae33164a5cf9044a91f52edfc705fcf333f6526df1a478deeebc4df109764d58100f9e3e22681 password-store-1.7.4.tar.xz"
diff --git a/user/patchutils/APKBUILD b/user/patchutils/APKBUILD
index ac1322e2e..eabb82788 100644
--- a/user/patchutils/APKBUILD
+++ b/user/patchutils/APKBUILD
@@ -11,10 +11,8 @@ depends="diffutils"
makedepends="xmlto"
subpackages="$pkgname-doc"
source="http://cyberelk.net/tim/data/patchutils/stable/patchutils-$pkgver.tar.xz"
-builddir="$srcdir/patchutils-$pkgver"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,12 +24,10 @@ build() {
}
check() {
- cd "$builddir"
make -j1 check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/pavucontrol-qt/APKBUILD b/user/pavucontrol-qt/APKBUILD
index 3cbcd2c30..b2b67764a 100644
--- a/user/pavucontrol-qt/APKBUILD
+++ b/user/pavucontrol-qt/APKBUILD
@@ -1,24 +1,23 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=pavucontrol-qt
-pkgver=0.14.1
+pkgver=1.4.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="Qt port of pavucontrol, a PulseAudio mixer"
-url="https://lxqt.org/"
+url="https://lxqt.github.io/"
arch="all"
options="!check" # No test suite.
license="GPL-2.0+"
depends=""
-makedepends="cmake pulseaudio-dev qt5-qtbase-dev liblxqt-dev qt5-qttools-dev
- lxqt-build-tools>=0.6.0"
+makedepends="cmake pulseaudio-dev qt5-qtbase-dev liblxqt-dev>=${pkgver%.*}
+ qt5-qttools-dev lxqt-build-tools>=$_lxqt"
source="https://github.com/lxqt/pavucontrol-qt/releases/download/$pkgver/pavucontrol-qt-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -26,13 +25,12 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="55a8bceb31e07ceac7ab1fbb5f20101dfb087e58578039a238677e77f858e0564dca46efee2d5513a247c0be474f24d31e3afa9cf3cea0734feb0e56c33d5494 pavucontrol-qt-0.14.1.tar.xz"
+sha512sums="cfa878bddd0b0299319c31a4e97aa8b6dc799f040fedf5ca0210d8eeb526f59258aab57ae050987633826c7a94fbbd0e1a1b1fc184fc8693541c799b6118a157 pavucontrol-qt-1.4.0.tar.xz"
diff --git a/user/pavucontrol/APKBUILD b/user/pavucontrol/APKBUILD
index dd02568a7..d93aff609 100644
--- a/user/pavucontrol/APKBUILD
+++ b/user/pavucontrol/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=pavucontrol
pkgver=4.0
pkgrel=0
@@ -10,10 +10,9 @@ license="GPL-2.0+"
depends=""
makedepends="gtkmm+3.0-dev intltool libcanberra-dev lynx pulseaudio-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="http://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-$pkgver.tar.xz"
+source="https://freedesktop.org/software/pulseaudio/pavucontrol/pavucontrol-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,12 +24,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/pciutils/APKBUILD b/user/pciutils/APKBUILD
index f198c08c8..6e3cc00da 100644
--- a/user/pciutils/APKBUILD
+++ b/user/pciutils/APKBUILD
@@ -1,14 +1,14 @@
# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
# Maintainer:
pkgname=pciutils
-pkgver=3.6.2
+pkgver=3.7.0
pkgrel=1
pkgdesc="PCI bus configuration space access library and tools"
url="http://mj.ucw.cz/pciutils.html"
arch="all"
options="!check" # No test suite.
license="GPL-2.0-only"
-depends="hwids-pci"
+depends="hwdata"
makedepends="eudev-dev kmod-dev linux-headers cmd:which"
subpackages="$pkgname-doc $pkgname-dev $pkgname-libs"
source="https://www.kernel.org/pub/software/utils/$pkgname/$pkgname-$pkgver.tar.gz
@@ -17,7 +17,6 @@ source="https://www.kernel.org/pub/software/utils/$pkgname/$pkgname-$pkgver.tar.
"
build() {
- cd "$builddir"
sed -i -e "106s/^/\#/" Makefile
make OPT="$CFLAGS" ZLIB=no \
SHARED=yes \
@@ -28,18 +27,23 @@ build() {
}
package() {
- cd "$builddir"
make PREFIX="$pkgdir"/usr \
SHARED=yes \
SHAREDIR="$pkgdir"/usr/share/hwdata \
MANDIR="$pkgdir"/usr/share/man \
install install-lib
+ mkdir "$pkgdir"/usr/bin/
+ mv "$pkgdir"/usr/sbin/lspci "$pkgdir"/usr/bin/lspci
+ mkdir "$pkgdir"/usr/share/man/man1
+ mv "$pkgdir"/usr/share/man/man8/lspci.8 \
+ "$pkgdir"/usr/share/man/man1/lspci.1
+
rm "$pkgdir"/usr/sbin/update-pciids
rm "$pkgdir"/usr/share/man/man8/update-pciids.8
rm -r "$pkgdir"/usr/share/hwdata
}
-sha512sums="a9332f07755ab8af6ba99a5fa3cf739b0f3688276902673b9fe981955c4fa732c3d0ccaa150942ecaf4b263a10c2653f5454aa87492cac1dd805f33500fac489 pciutils-3.6.2.tar.gz
+sha512sums="37c01619264d299ac1e367a022637d60ab2bf6e5533fe9d37b2d37fdc5070563b78bfedc200b6bcb9192ce43fdec09ff350080c3e3ba504b90766d004398efc5 pciutils-3.7.0.tar.gz
520b39602078e4325d7dac2d460547b360f7b52c668d88cf3d776c59246c8cfcb537b7b4f50575da9d2fcea1e207b3e99626ce4f23df890d2565b7dac1db2d94 fix-linking-pci-malloc-Makefile.patch
aa1d3272500180256929b39a5fc4ea38ddb6a9fad090d732832ded9cc396303cf56efc91cfdeb76edbcfefc9a7c8eb058562c3c2b09a9090a59d3e68c27cec62 pread.patch"
diff --git a/user/pcmanfm-qt/APKBUILD b/user/pcmanfm-qt/APKBUILD
index 75b042e40..98a42393d 100644
--- a/user/pcmanfm-qt/APKBUILD
+++ b/user/pcmanfm-qt/APKBUILD
@@ -1,26 +1,25 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=pcmanfm-qt
-pkgver=0.14.1
+pkgver=1.4.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="File manager and desktop icon manager for LXQt"
-url="https://lxqt.org/"
+url="https://lxqt.github.io/"
arch="all"
options="!check" # No test suite.
license="GPL-2.0+"
-depends=""
-makedepends="cmake extra-cmake-modules lxqt-build-tools>=0.6.0
- liblxqt-dev>=${pkgver%.*}.0 libfm-qt-dev>=${pkgver%.*}.0
+depends="gvfs lxqt-menu-data"
+makedepends="cmake extra-cmake-modules lxqt-build-tools>=$_lxqt
+ liblxqt-dev>=${pkgver%.*} libfm-qt-dev>=${pkgver%.*}.0
qt5-qtx11extras-dev qt5-qttools-dev kwindowsystem-dev"
subpackages="$pkgname-doc"
source="https://github.com/lxqt/pcmanfm-qt/releases/download/$pkgver/pcmanfm-qt-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -28,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="f3d170ab8344332f740a3245cc549ea0c3bddc97a45472dcd46208d59413dd42d3571821f309184417a34a627d2cb093fcaa335f782cf6e526eef3fcad212b3e pcmanfm-qt-0.14.1.tar.xz"
+sha512sums="dbc24092b5ea7f13d484caf4cbefd2267f65db4c5d3b43cecf46114d149f91e58e977bed9fa3dc128e54e0b2bcb1043b8a234d16a7a211a94ae5f123e73ff117 pcmanfm-qt-1.4.0.tar.xz"
diff --git a/user/pcmanfm/APKBUILD b/user/pcmanfm/APKBUILD
index 8ecf6ba0a..bc1af0302 100644
--- a/user/pcmanfm/APKBUILD
+++ b/user/pcmanfm/APKBUILD
@@ -1,18 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=pcmanfm
-pkgver=1.3.1
+pkgver=1.3.2
pkgrel=0
pkgdesc="GTK-based file manager"
url="https://sourceforge.net/projects/pcmanfm/"
arch="all"
license="GPL-2.0+"
+depends=""
makedepends="intltool gtk+2.0-dev libfm-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://downloads.sourceforge.net/pcmanfm/pcmanfm-$pkgver.tar.xz"
build() {
- cd "$builddir"
+ rm po/de.*
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -24,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="68fbc55b3ffd9da17c861d2cc41590a455ec2c0eb590ba4862f8a0ae01caac34a58645d847d318553ff588df20d355bbcbf1138a792cb45922eb04b047f681c4 pcmanfm-1.3.1.tar.xz"
+sha512sums="bcca1af20500e7a84ebfe5f1efd5a1a2945d32ad3ea5fa945ad908794c56614bd85921fac1e7a3b2fc5ef82267d5d3ffc5ad7065e9878a920dd578cb830776c9 pcmanfm-1.3.2.tar.xz"
diff --git a/user/pcmciautils/APKBUILD b/user/pcmciautils/APKBUILD
index f94d49086..1189b7d04 100644
--- a/user/pcmciautils/APKBUILD
+++ b/user/pcmciautils/APKBUILD
@@ -16,12 +16,10 @@ source="https://mirrors.kernel.org/pub/linux/utils/kernel/pcmcia/$pkgname-$pkgve
"
build() {
- cd "$builddir"
make -j1 LEX=flex
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir"/ install
ln -sf pccardctl "$pkgdir"/sbin/lspcmcia
}
diff --git a/user/pcsc-lite/APKBUILD b/user/pcsc-lite/APKBUILD
index 9746a2d46..0ee53d54b 100644
--- a/user/pcsc-lite/APKBUILD
+++ b/user/pcsc-lite/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Contributor: Timo Teräs <timo.teras@iki.fi>
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=pcsc-lite
-pkgver=1.8.25
+pkgver=1.9.5
pkgrel=0
pkgdesc="Middleware to access a smart card using SCard API (PC/SC)"
url="https://pcsclite.apdu.fr/"
@@ -17,7 +17,6 @@ source="https://pcsclite.apdu.fr/files/pcsc-lite-$pkgver.tar.bz2
pcscd.initd"
build() {
- cd "$builddir"
./configure --prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
@@ -36,12 +35,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -D -m755 "$srcdir"/pcscd.initd \
"$pkgdir"/etc/init.d/pcscd
@@ -64,5 +61,5 @@ dev() {
mv "$subpkgdir"/usr/lib/libpcsclite.so "$pkgdir"/usr/lib/libpcsclite.so
}
-sha512sums="0da63cefd70d9524b2afabd62c5f404758c805b84bbe9ef64fb801ef91a8934c38495513022565ea31bd8550b23bc95b9e9b098ddc76930e3d0643c1fbfb5deb pcsc-lite-1.8.25.tar.bz2
+sha512sums="0315c2cf97cc9da0f5faf115f24e523b5a1746cea250a4fe6c4d5d7b2fbfc7c3ea0f068611072ca84866c672eb679e8067101437573148ccd1ac5ad26b18cd78 pcsc-lite-1.9.5.tar.bz2
6810ab357b5bcf07bf1ad76ed17ebb8e92be4599303a4e697b87a05d43b8d2bec5d3c29d44d8ddb5d031910ea62ca52a9868e6de9a255227eaeb29d1a7ee0041 pcscd.initd"
diff --git a/user/pcsc-lite/pcsc-lite.pre-install b/user/pcsc-lite/pcsc-lite.pre-install
index 2e654f28d..d7938a846 100644
--- a/user/pcsc-lite/pcsc-lite.pre-install
+++ b/user/pcsc-lite/pcsc-lite.pre-install
@@ -1,10 +1,7 @@
#!/bin/sh
-username=pcscd
-groupname=$username
-
-addgroup -S $username 2>/dev/null
-adduser -S -D -H -h /var/run/$username -s /sbin/nologin -G $groupname \
- -g $username $username 2>/dev/null
+groupadd -r pcscd 2>/dev/null
+useradd -c pcscd -s /sbin/nologin -g pcscd \
+ -m -d /var/run/pcscd -r pcscd 2>/dev/null
exit 0
diff --git a/user/perl-algorithm-diff/APKBUILD b/user/perl-algorithm-diff/APKBUILD
index 5e0c60775..d9fdac19f 100644
--- a/user/perl-algorithm-diff/APKBUILD
+++ b/user/perl-algorithm-diff/APKBUILD
@@ -1,7 +1,11 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-algorithm-diff
-pkgver=1.1903
+_pkgreal=Algorithm-Diff
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.201
pkgrel=0
pkgdesc="Compute 'intelligent' differences between two files / lists"
url="https://metacpan.org/pod/Algorithm::Diff"
@@ -9,26 +13,22 @@ arch="noarch"
license="Artistic-1.0-Perl AND GPL-2.0"
depends="perl"
makedepends="perl-dev"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/T/TY/TYEMQ/Algorithm-Diff-$pkgver.tar.gz"
-builddir="$srcdir/Algorithm-Diff-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="61632be4c19a03ccacaa218ab7cb8bdbc53a4a6030b8173a59c7611056375536788392c1da00ab88f3df9884fc8a67825efc83b70e2e564664d5187021d6b106 Algorithm-Diff-1.1903.tar.gz"
+sha512sums="b22b55f4e45748da0e8aca556dc2155ef2dbcfe42ac5cbe4aa59e4cc13c95a141e6324a9ab0acd7fbc3d97e761e0778176df0f7e726af837a7b7d075106ad8d0 Algorithm-Diff-1.201.tar.gz"
diff --git a/user/perl-any-moose/APKBUILD b/user/perl-any-moose/APKBUILD
index eed2735ca..eaf3d188f 100644
--- a/user/perl-any-moose/APKBUILD
+++ b/user/perl-any-moose/APKBUILD
@@ -1,32 +1,33 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-any-moose
+_pkgreal=Any-Moose
+_author=ETHER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.27
pkgrel=0
pkgdesc="Deprecated Moose Mouse abstraction layer"
url="https://metacpan.org/pod/Any::Moose"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl perl-mouse"
+checkdepends="perl-moose"
makedepends="perl-dev"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Any-Moose-$pkgver.tar.gz"
-builddir="$srcdir/Any-Moose-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-anyevent/APKBUILD b/user/perl-anyevent/APKBUILD
index 2f67c1edb..c099cf3ce 100644
--- a/user/perl-anyevent/APKBUILD
+++ b/user/perl-anyevent/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-anyevent
-pkgver=7.15
+_pkgreal=AnyEvent
+_author=MLEHMANN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=7.17
pkgrel=0
pkgdesc="The DBI of event loop programming"
-url="https://metacpan.org/pod/AnyEvent"
+url="https://metacpan.org/release/AnyEvent"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl"
makedepends="perl-dev"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/M/ML/MLEHMANN/AnyEvent-$pkgver.tar.gz"
-builddir="$srcdir/AnyEvent-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="90ed9c89313e3ed07461e3426230083850a02ed1796b3c1eaaed1e7e6f77cb24609a36b6cdae7cd907c9867a2a347b8833f73c5718e52832bb57db7a356d3cd1 AnyEvent-7.15.tar.gz"
+sha512sums="c553cce80fa14e2f91031c569d1c30acf470871ddd1c122fa3dd36cd1ba5b7002e7ba1dea4c950d889c7c661b81042dd97975e195a5325190ad644babff81e0a AnyEvent-7.17.tar.gz"
diff --git a/user/perl-apache-logformat-compiler/APKBUILD b/user/perl-apache-logformat-compiler/APKBUILD
index 5acc4ffbc..dd49ee1ea 100644
--- a/user/perl-apache-logformat-compiler/APKBUILD
+++ b/user/perl-apache-logformat-compiler/APKBUILD
@@ -1,35 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-apache-logformat-compiler
-_pkgname=Apache-LogFormat-Compiler
-pkgver=0.35
+_pkgreal=Apache-LogFormat-Compiler
+_author=KAZEBURO
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.36
pkgrel=0
pkgdesc="Compile a log format string to Perl code"
url="https://metacpan.org/release/Apache-LogFormat-Compiler"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-posix-strftime-compiler perl-try-tiny"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-posix-strftime-compiler perl-try-tiny"
checkdepends="perl-http-message perl-test-mocktime"
makedepends="perl-dev perl-module-build-tiny"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/K/KA/KAZEBURO/Apache-LogFormat-Compiler-$pkgver.tar.gz"
-builddir="$srcdir/Apache-LogFormat-Compiler-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs=vendor
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="9a4447e0be864e6ba3a6170daa6f219b0ddd6b765ab6fbe6125a808da76803fb4bf6eed131df793a8cf900378b5c72f11489d5429106b97931f6fbef08f9f349 Apache-LogFormat-Compiler-0.35.tar.gz"
+sha512sums="a6f7f0f9f98401a70e4bb6bd4862e9e520e8b968c5e0f25853da57b12bf6d67357ddc8d2fe985668520758e5745b5d7783f6c656c35efd823f4325f267fdbfee Apache-LogFormat-Compiler-0.36.tar.gz"
diff --git a/user/perl-app-licensecheck/APKBUILD b/user/perl-app-licensecheck/APKBUILD
new file mode 100644
index 000000000..4c2208c42
--- /dev/null
+++ b/user/perl-app-licensecheck/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-app-licensecheck
+_pkgreal=App-Licensecheck
+_author=JONASS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=3.3.9
+pkgrel=0
+pkgdesc="Perl library and utility for checking source-file licensing"
+url="https://metacpan.org/release/App-Licensecheck"
+arch="noarch"
+options="!check" # spurious test failures
+license="GPL-3.0+"
+depends="perl perl-array-intspan perl-encode-locale perl-feature-compat-try
+ perl-getopt-long-descriptive perl-io-interactive perl-list-someutils
+ perl-log-any perl-log-any-adapter-screen perl-moo perl-moox-struct
+ perl-namespace-clean perl-object-pad perl-path-iterator-rule
+ perl-path-tiny perl-pod-constants perl-pod-parser perl-regexp-pattern
+ perl-regexp-pattern-license perl-re-engine-re2 perl-software-license
+ perl-sort-key perl-strictures perl-string-copyright perl-string-escape
+ perl-string-license perl-syntax-keyword-try perl-test-requires
+ perl-test-script perl-try-tiny perl-universal-require
+ perl-xs-parse-keyword perl-xs-parse-sublike"
+checkdepends="perl-test-command-simple perl-pod-parser perl-test-without-module
+ perl-test2-tools-command"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-v$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-v$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="ef120511ce2bbf384d864bd6a72fd06fb1946d8e2fdb4d19b196a32e0b7c5207b84990fc538382b35b18cca815005c616a7bc882934e79d4fef59add9df58d96 App-Licensecheck-v3.3.9.tar.gz"
diff --git a/user/perl-appconfig/APKBUILD b/user/perl-appconfig/APKBUILD
index 3b517cf02..d1b298791 100644
--- a/user/perl-appconfig/APKBUILD
+++ b/user/perl-appconfig/APKBUILD
@@ -1,31 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-appconfig
+_pkgreal=AppConfig
+_author=NEILB
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.71
pkgrel=0
pkgdesc="Perl modules for reading configuration and parsing command line arguments"
url="https://metacpan.org/release/AppConfig"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/N/NE/NEILB/AppConfig-$pkgver.tar.gz"
-builddir="$srcdir/AppConfig-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-array-intspan/APKBUILD b/user/perl-array-intspan/APKBUILD
new file mode 100644
index 000000000..98936fd22
--- /dev/null
+++ b/user/perl-array-intspan/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-array-intspan
+_pkgreal=Array-IntSpan
+_author=DDUMONT
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.004
+pkgrel=0
+pkgdesc="Perl modules for interacting with arrays via integers"
+url="https://metacpan.org/pod/Array::IntSpan"
+arch="noarch"
+license="Artistic-2.0"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DD/DDUMONT/Array-IntSpan-$pkgver.tar.gz"
+builddir="$srcdir/Array-IntSpan-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="52f210e3beec0c1839baa51d68456c6aafbf9764e938f366317895ec26a6101bd4c83b738cf80326bdf975d68e01a796c1fc6ca3c9584ec50aaa45b3e8d7c7ba Array-IntSpan-2.004.tar.gz"
diff --git a/user/perl-b-hooks-endofscope/APKBUILD b/user/perl-b-hooks-endofscope/APKBUILD
index 0d9d641c2..1a0bdeba5 100644
--- a/user/perl-b-hooks-endofscope/APKBUILD
+++ b/user/perl-b-hooks-endofscope/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-b-hooks-endofscope
-pkgver=0.24
+_pkgreal=B-Hooks-EndOfScope
+_author=ETHER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.28
pkgrel=0
pkgdesc="Execute Perl code after a scope finished compilation"
url="https://metacpan.org/release/B-Hooks-EndOfScope"
arch="noarch"
-license="Artistic-1.0-Perl"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
depends="perl-module-implementation perl-sub-exporter-progressive perl-sub-name
- perl-variable-magic"
+ perl-variable-magic perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/B-Hooks-EndOfScope-$pkgver.tar.gz"
-builddir="$srcdir/B-Hooks-EndOfScope-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="5c061a81a3fed88ad868a14a1f817f7952b2f0c9512408174354e0ecf7e3caa5d646054cf75efa8b8c558e6241a8dfebf9400e8826021bdb5cbdf3a00065b147 B-Hooks-EndOfScope-0.24.tar.gz"
+sha512sums="692d6ccc5d86f4fdd23491983ec4358a0be61d9ed23ab2e9a0b767395482447c44ff1a78e10ce72f393f542db3879712bc3077e74dbab13d902c302cae3750fe B-Hooks-EndOfScope-0.28.tar.gz"
diff --git a/user/perl-b-hooks-op-check/APKBUILD b/user/perl-b-hooks-op-check/APKBUILD
new file mode 100644
index 000000000..f5ae7028e
--- /dev/null
+++ b/user/perl-b-hooks-op-check/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-b-hooks-op-check
+_pkgreal=B-Hooks-OP-Check
+_author=ETHER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.22
+pkgrel=0
+pkgdesc="Perl module for wrapping OP check callbacks in XS"
+url="https://metacpan.org/pod/B::Hooks::OP::Check"
+arch="all"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev perl-extutils-depends"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="e68b08a34244afc73d7d3b2b0acdf8fe791b0b1f087b6b0496da0a1e655a9e51552ec8fb0f743c8626a0414fb469a2133d113ff5b4ba9f96217cc87bef877542 B-Hooks-OP-Check-0.22.tar.gz"
diff --git a/user/perl-bareword-filehandles/APKBUILD b/user/perl-bareword-filehandles/APKBUILD
new file mode 100644
index 000000000..05288774b
--- /dev/null
+++ b/user/perl-bareword-filehandles/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-bareword-filehandles
+_pkgreal=bareword-filehandles
+_author=ILMARI
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.007
+pkgrel=0
+pkgdesc="Perl module for disabling support for bareword filehandles"
+url="https://metacpan.org/pod/bareword::filehandles"
+arch="all"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-b-hooks-op-check"
+makedepends="perl-dev perl-extutils-depends"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="e7bd4e2ce32b819086050d1619806a5ffedb08732a25a8786dc70f6c8bea3cb3dab2bcced2d5f02f8248ca816dcccdaa2a20c6c943dc5667f334e9e319dbee6d bareword-filehandles-0.007.tar.gz"
diff --git a/user/perl-bit-vector/APKBUILD b/user/perl-bit-vector/APKBUILD
new file mode 100644
index 000000000..4db1b4839
--- /dev/null
+++ b/user/perl-bit-vector/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Alyx Wolcott <alyx@leuhta.com>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-bit-vector
+_pkgreal=Bit-Vector
+_author=STBEY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=7.4
+pkgrel=0
+pkgdesc="Efficient bit vector, set of integers and 'big int' math library"
+url="https://metacpan.org/release/Bit-Vector"
+arch="all"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev perl-carp-clan"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="80aa49aea8c31c60c14161198eab9d620d738530c3c209104b8ad8f1144822f80c3effb3303c569fc556b2457328659ae5d1aaf511d714c835618b84c722abc5 Bit-Vector-7.4.tar.gz"
diff --git a/user/perl-canary-stability/APKBUILD b/user/perl-canary-stability/APKBUILD
index f68eadfc0..3ede5b89c 100644
--- a/user/perl-canary-stability/APKBUILD
+++ b/user/perl-canary-stability/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-canary-stability
-pkgver=2012
+_pkgreal=Canary-Stability
+_author=MLEHMANN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2013
pkgrel=0
pkgdesc="Canary to check Perl compatibility for schmorp's modules"
url="https://metacpan.org/pod/Canary::Stability"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl"
makedepends="perl-dev"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/M/ML/MLEHMANN/Canary-Stability-$pkgver.tar.gz"
-builddir="$srcdir/Canary-Stability-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="7780731e4142d536182e1820c041c43ae67c5b47c044f15d8dcc060646bbab10a974bddcb703fdb27f427db3cd4dbdff54e131dc708c0260d7275be869eb27b1 Canary-Stability-2012.tar.gz"
+sha512sums="9dfb0e6d136048050aac7c29e1fc79dc2a7703c8800582aa837c5d9b9934c48bfcb0a9ef1c6b5bb7e71a10a709e7f7431b3c79ea12b8d9f374b33bfd4a3e468d Canary-Stability-2013.tar.gz"
diff --git a/user/perl-capture-tiny/APKBUILD b/user/perl-capture-tiny/APKBUILD
index 1ac11f9d0..2df50dec4 100644
--- a/user/perl-capture-tiny/APKBUILD
+++ b/user/perl-capture-tiny/APKBUILD
@@ -1,41 +1,32 @@
-# Automatically generated by apkbuild-cpan, template 1
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-capture-tiny
_pkgreal=Capture-Tiny
+_author=DAGOLDEN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.48
pkgrel=0
pkgdesc="Capture STDOUT and STDERR from Perl, XS or external programs"
url="https://metacpan.org/release/Capture-Tiny"
arch="noarch"
license="Apache-2.0"
-cpandepends=""
-cpanmakedepends=""
-depends="$cpandepends"
-makedepends="perl-dev $cpanmakedepends"
+depends="perl"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DA/DAGOLDEN/$_pkgreal-$pkgver.tar.gz"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
builddir="$srcdir/$_pkgreal-$pkgver"
-prepare() {
- cd "$builddir"
- export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
- PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
-}
-
build() {
- cd "$builddir"
- export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-carp-clan/APKBUILD b/user/perl-carp-clan/APKBUILD
new file mode 100644
index 000000000..eaa8967e9
--- /dev/null
+++ b/user/perl-carp-clan/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Alyx Wolcott <alyx@leuhta.com>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-carp-clan
+_pkgreal=Carp-Clan
+_author=ETHER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=6.08
+pkgrel=0
+pkgdesc="Report modules as a 'clan' in Perl"
+url="https://metacpan.org/pod/Carp::Clan"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="bc7f74d75e1eae0f528d530b47f1841493aae7eecdeeb58f85f5d8ef7a5b4d92c479b45468d0e7175f228056295d3d7159a7b404fecd542cf04c75ddc3a9886f Carp-Clan-6.08.tar.gz"
diff --git a/user/perl-cgi/APKBUILD b/user/perl-cgi/APKBUILD
index 4135379d6..60ba72f59 100644
--- a/user/perl-cgi/APKBUILD
+++ b/user/perl-cgi/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-cgi
-pkgver=4.42
+_pkgreal=CGI
+_author=LEEJO
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=4.62
pkgrel=0
pkgdesc="Handle CGI requests and responses in Perl"
url="https://metacpan.org/release/CGI"
arch="noarch"
-license="Artistic-1.0-Perl"
+license="Artistic-2.0"
depends="perl-html-parser"
-makedepends="perl-dev"
checkdepends="perl-test-deep perl-test-nowarnings perl-test-warn"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/L/LE/LEEJO/CGI-$pkgver.tar.gz"
-builddir="$srcdir/CGI-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="caa5402ffe683b38609aab56fdd1388ddecf97fde449e889cecb9ac6ecbb490a08624ea8b9430d59b46c99133608a79fde6cba584d13ca435a201c741a0b472b CGI-4.42.tar.gz"
+sha512sums="d418cf0b0024de6f29bceed0b4aede5cf2d51386ad6cbc07fe127a255a23e29464c272374fa7361d3cf83f6338f38c6aba0a07c841c5cab9974ef1fa2c5c1261 CGI-4.62.tar.gz"
diff --git a/user/perl-chart/APKBUILD b/user/perl-chart/APKBUILD
index 7945829c0..68033a26d 100644
--- a/user/perl-chart/APKBUILD
+++ b/user/perl-chart/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-chart
-_pkgname=Chart
-pkgver=2.4.10
+_pkgreal=Chart
+_author=LICHTKIND
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.403.9
pkgrel=0
pkgdesc="Series of charting modules for Perl"
url="https://metacpan.org/release/Chart"
arch="noarch"
license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-gd"
+depends="perl perl-gd perl-graphics-toolkit-color"
+checkdepends="perl-test-warn"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/C/CH/CHARTGRP/Chart-$pkgver.tar.gz"
-builddir="$srcdir/Chart-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-v$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-v$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="e8327c46e0cbcea0ed8f723b7b369f4b694c0d7050d3fab35371e0717938292b5bacd3e367ed87e272dc258db020c378690405f93d23ba0ed546dc29dd59e37d Chart-2.4.10.tar.gz"
+sha512sums="bbeb366b93b262e402f42649d9cec470294d87d75b6ee2885d77ce47f26d67d98d45eabfe3fe4c048296df19239b668db05c31969d1984d7cb84c00bdd7d2c64 Chart-v2.403.9.tar.gz"
diff --git a/user/perl-class-accessor-lite/APKBUILD b/user/perl-class-accessor-lite/APKBUILD
index 3fc232824..5cc955cbb 100644
--- a/user/perl-class-accessor-lite/APKBUILD
+++ b/user/perl-class-accessor-lite/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-class-accessor-lite
-_pkgname=Class-Accessor-Lite
+_pkgreal=Class-Accessor-Lite
+_author=KAZUHO
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.08
pkgrel=0
pkgdesc="Lightweight Perl class accessor generator"
url="https://metacpan.org/release/Class-Accessor-Lite"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev perl-module-install"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/K/KA/KAZUHO/Class-Accessor-Lite-$pkgver.tar.gz"
-builddir="$srcdir/Class-Accessor-Lite-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-class-accessor/APKBUILD b/user/perl-class-accessor/APKBUILD
new file mode 100644
index 000000000..2789669c9
--- /dev/null
+++ b/user/perl-class-accessor/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Alyx Wolcott <alyx@leuhta.com>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-class-accessor
+_pkgreal=Class-Accessor
+_author=KASEI
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.51
+pkgrel=0
+pkgdesc="Perl class accessor generator"
+url="https://metacpan.org/release/Class-Accessor"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-sub-name"
+makedepends="perl-dev perl-module-install"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="be11acea4747c59e3e524c75d818e0391756cbc08eebff71dca280e737ce228209e76310649298e536e07db1c856d5a71dd64aefc55b49e33cfcb2b3439eab0b Class-Accessor-0.51.tar.gz"
diff --git a/user/perl-class-data-inheritable/APKBUILD b/user/perl-class-data-inheritable/APKBUILD
index 4e1745f22..198dab68e 100644
--- a/user/perl-class-data-inheritable/APKBUILD
+++ b/user/perl-class-data-inheritable/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-class-data-inheritable
-pkgver=0.08
+_pkgreal=Class-Data-Inheritable
+_author=RSHERER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.09
pkgrel=0
pkgdesc="Inheritable, overridable class data for Perl modules"
url="https://metacpan.org/release/Class-Data-Inheritable"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/T/TM/TMTM/Class-Data-Inheritable-$pkgver.tar.gz"
-builddir="$srcdir/Class-Data-Inheritable-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="bddc61096158b21d4cfa69538d5db0f53617a66c71447ee193141064f4f58194462b21e0a849510e24e4c263b13be3ee1bc6bb8504320e0a86c02b67ad1652c8 Class-Data-Inheritable-0.08.tar.gz"
+sha512sums="2e76aaf12c8d26442d53746e5d74636bb35c55461efb6d9b5ea50a635e3f781707b2d7f9cb3da9113ed31de464d3931f9734c29ace2a7ee5c6e111392b6a97cf Class-Data-Inheritable-0.09.tar.gz"
diff --git a/user/perl-class-inspector/APKBUILD b/user/perl-class-inspector/APKBUILD
index e2255d2ad..fe8bc4681 100644
--- a/user/perl-class-inspector/APKBUILD
+++ b/user/perl-class-inspector/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-class-inspector
-_pkgname=Class-Inspector
-pkgver=1.34
+_pkgreal=Class-Inspector
+_author=PLICEASE
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.36
pkgrel=0
pkgdesc="Inspect Perl classes and structures"
url="https://metacpan.org/release/Class-Inspector"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/P/PL/PLICEASE/Class-Inspector-$pkgver.tar.gz"
-builddir="$srcdir/Class-Inspector-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="c9f3f3dbc10c45811d0dffca3f31b9579200cd3b5288bb878bf97f38c4c153bb665632e5238ecce55bd3c515200c8d9500d5b1e461a9ea47e5ad011783323a80 Class-Inspector-1.34.tar.gz"
+sha512sums="488fcdbc9d135ed833331b0d5feb452997f35400b185341be69996438c278961eeb543648a629940765e779ca5cc87c5c3aa2c61a7fac12d2ecf6c599b68715a Class-Inspector-1.36.tar.gz"
diff --git a/user/perl-class-load-xs/APKBUILD b/user/perl-class-load-xs/APKBUILD
index ebdcca147..e8750bdee 100644
--- a/user/perl-class-load-xs/APKBUILD
+++ b/user/perl-class-load-xs/APKBUILD
@@ -1,6 +1,10 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-class-load-xs
+_pkgreal=Class-Load-XS
+_author=ETHER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.10
pkgrel=0
pkgdesc="Perl XS implementation of Class::Load"
@@ -8,25 +12,22 @@ url="https://metacpan.org/release/Class-Load-XS"
arch="all"
license="Artistic-2.0"
depends="perl-class-load"
-makedepends="perl-dev"
checkdepends="perl-test-fatal perl-test-needs"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Class-Load-XS-$pkgver.tar.gz"
-builddir="$srcdir/Class-Load-XS-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-class-load/APKBUILD b/user/perl-class-load/APKBUILD
index a90d30bff..fa5fdc761 100644
--- a/user/perl-class-load/APKBUILD
+++ b/user/perl-class-load/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-class-load
+_pkgreal=Class-Load
+_author=ETHER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.25
pkgrel=0
pkgdesc="Perl module for loading classes"
url="https://metacpan.org/release/Class-Load"
arch="noarch"
-license="Artistic-1.0-Perl"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl-data-optlist perl-module-implementation perl-module-runtime
perl-package-stash perl-try-tiny"
-makedepends="perl-dev"
checkdepends="perl-test-fatal perl-test-needs"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Class-Load-$pkgver.tar.gz"
-builddir="$srcdir/Class-Load-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-class-method-modifiers/APKBUILD b/user/perl-class-method-modifiers/APKBUILD
index 7d22c357d..bc6829617 100644
--- a/user/perl-class-method-modifiers/APKBUILD
+++ b/user/perl-class-method-modifiers/APKBUILD
@@ -1,35 +1,35 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-class-method-modifiers
-pkgver=2.12
+_pkgreal=Class-Method-Modifiers
+_author=ETHER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.15
pkgrel=0
pkgdesc="Provides Moose-like method modifiers"
url="https://metacpan.org/pod/Class::Method::Modifiers"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl"
+checkdepends="perl-test-fatal perl-test-needs perl-test-requires"
makedepends="perl-dev"
-checkdepends="perl-test-requires perl-test-fatal"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Class-Method-Modifiers-$pkgver.tar.gz"
-builddir="$srcdir/Class-Method-Modifiers-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="18c7cdff214d39a475b116cc5e6dda043c31765bcdfa9a1fa7242ce61e42583c4981d41a43ba556fb5a057e0cfbd5e52dd60048ea7dfae0fec3618dc47876dd4 Class-Method-Modifiers-2.12.tar.gz"
+sha512sums="427d21418516ff296b5a536a2d1f13b81b92d36f1c17c2366bc65fd2f05bf6afc7d02a4257033f53ee14d806b43e8d4322c6eac256d1c0e892926c4e7f878995 Class-Method-Modifiers-2.15.tar.gz"
diff --git a/user/perl-class-singleton/APKBUILD b/user/perl-class-singleton/APKBUILD
index f998c6cb6..a0f359337 100644
--- a/user/perl-class-singleton/APKBUILD
+++ b/user/perl-class-singleton/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-class-singleton
-_pkgname=Class-Singleton
-pkgver=1.5
+_pkgreal=Class-Singleton
+_author=SHAY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.6
pkgrel=0
pkgdesc="Perl implementation of a Singleton class pattern"
url="https://metacpan.org/release/Class-Singleton"
arch="noarch"
license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SH/SHAY/Class-Singleton-$pkgver.tar.gz"
-builddir="$srcdir/Class-Singleton-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="f061a8b92d5f65e4fbcd14ef36ff1216f84443f487de34c98f7d08d6d18148f156c0cbd6249e75ac448c17547d1172dbda8b670a8e7573d3581c9c1196eb4804 Class-Singleton-1.5.tar.gz"
+sha512sums="68b637ba57d5da70ac8e7a8a5e1874481681d6a217bb0c58a232d4329c582f32d29b5ac4c60a131bc863c8faf2852c5249bced9d286e87fefe4960e95f35b1ec Class-Singleton-1.6.tar.gz"
diff --git a/user/perl-class-tiny/APKBUILD b/user/perl-class-tiny/APKBUILD
index 2036473b2..0100c1337 100644
--- a/user/perl-class-tiny/APKBUILD
+++ b/user/perl-class-tiny/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-class-tiny
-_pkgname=Class-Tiny
-pkgver=1.006
+_pkgreal=Class-Tiny
+_author=DAGOLDEN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.008
pkgrel=0
pkgdesc="Minimalist class construction for Perl"
url="https://metacpan.org/release/Class-Tiny"
arch="noarch"
license="Apache-2.0"
-depends=""
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DA/DAGOLDEN/Class-Tiny-$pkgver.tar.gz"
-builddir="$srcdir/Class-Tiny-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="0a6ca0b99bd10a39445bb582bcf89f3668747f05b13b1f7271e934a73781c855a0418ae19a41593c64288b74710f49c1dcda0005be4edf9965e8020139ca0c7e Class-Tiny-1.006.tar.gz"
+sha512sums="908eb8547e01036ef361f0a8623d028b1e733ea003fc227788b9c18d0db544a70dbe47de18822f9699a19156f36eac73caeb4849d44eea14ada1128afdb7efbd Class-Tiny-1.008.tar.gz"
diff --git a/user/perl-class-xsaccessor/APKBUILD b/user/perl-class-xsaccessor/APKBUILD
index 6a4a92ae5..6f181f666 100644
--- a/user/perl-class-xsaccessor/APKBUILD
+++ b/user/perl-class-xsaccessor/APKBUILD
@@ -1,31 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-class-xsaccessor
+_pkgreal=Class-XSAccessor
+_author=SMUELLER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.19
pkgrel=0
pkgdesc="Perl module to generate fast XS accessors without compilation"
url="https://metacpan.org/release/Class-XSAccessor"
arch="all"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SM/SMUELLER/Class-XSAccessor-$pkgver.tar.gz"
-builddir="$srcdir/Class-XSAccessor-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-code-tidyall/APKBUILD b/user/perl-code-tidyall/APKBUILD
index 9cea4c7cc..093e078e4 100644
--- a/user/perl-code-tidyall/APKBUILD
+++ b/user/perl-code-tidyall/APKBUILD
@@ -1,40 +1,41 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-code-tidyall
-pkgver=0.73
+_pkgreal=Code-TidyAll
+_author=DROLSKY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.84
pkgrel=0
pkgdesc="Your all-in-one Perl code tidier and validator"
url="https://metacpan.org/release/Code-TidyAll"
arch="noarch"
-license="Artistic-1.0-Perl"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl-capture-tiny perl-config-ini perl-file-pushd perl-file-which
perl-ipc-run3 perl-ipc-system-simple perl-list-compare
perl-list-someutils perl-log-any perl-module-runtime perl-moo
perl-path-tiny perl-scope-guard perl-specio
perl-specio-library-path-tiny perl-text-diff perl-timedate
perl-time-duration-parse perl-try-tiny"
-makedepends="perl-dev"
checkdepends="perl-lib-relative perl-test-class-most perl-test-differences
perl-test-fatal perl-test-warnings"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Code-TidyAll-$pkgver.tar.gz"
-builddir="$srcdir/Code-TidyAll-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="303635520a7463bf7d5e9c055d08ec50ed3218068f1b33e8113feeeb788b8a373fc4afdc2e2ec00c05be39f9cc76156271b765449c8b3c9bd1a1412e9deb92d8 Code-TidyAll-0.73.tar.gz"
+sha512sums="b1ce060e81b42f80bebec3ea28613fd54b8948df6c22939b2a274b96bcb3c3a36bf3c3d15c8459c377bf98cf6e56258df1eefe75580c46a284d8186c5110cbc5 Code-TidyAll-0.84.tar.gz"
diff --git a/user/perl-commandable/APKBUILD b/user/perl-commandable/APKBUILD
new file mode 100644
index 000000000..d688263c8
--- /dev/null
+++ b/user/perl-commandable/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-commandable
+_pkgreal=Commandable
+_author=PEVANS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.11
+pkgrel=0
+pkgdesc="Represents one invocation of a CLI command"
+url="https://metacpan.org/pod/Commandable"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+checkdepends="perl-test-fatal perl-test-warnings perl-test2-suite
+ perl-test-nowarnings"
+makedepends="perl-module-build perl-module-pluggable"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="cc73431bc58f0c0adc957532c331d34bf9da741e0c290855fe946219dad44bd55f2d9ba018b3d61f35ad43b87012906b0702ab5a0cc1c86cee266f0a276bab7d Commandable-0.11.tar.gz"
diff --git a/user/perl-common-sense/APKBUILD b/user/perl-common-sense/APKBUILD
index 8f159d0b3..b338cef76 100644
--- a/user/perl-common-sense/APKBUILD
+++ b/user/perl-common-sense/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-common-sense
-pkgver=3.74
+_pkgreal=common-sense
+_author=MLEHMANN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=3.75
pkgrel=0
pkgdesc="Implements some (in)sane defaults for Perl programs"
url="https://metacpan.org/pod/common::sense"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl"
makedepends="perl-dev"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/M/ML/MLEHMANN/common-sense-$pkgver.tar.gz"
-builddir="$srcdir/common-sense-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="658ad70a2d1bbd0b26f91c4ea5d69b4cc0b632ede9532b88282987002a5e280f0475d63ee846b7bd2d38ef82f2680e20c2093803e4b62a984750ed447f318d60 common-sense-3.74.tar.gz"
+sha512sums="cb6034d9ff721a4122e0215db8ad5279ec4b189c3364593d427d70a1e84a1583a0e1447e276aa9a4fcaeb2f9d47a465a5bc4c0f842c803d3ddf91755311f4af4 common-sense-3.75.tar.gz"
diff --git a/user/perl-config-ini/APKBUILD b/user/perl-config-ini/APKBUILD
index fd92f0812..4eb0bf1fc 100644
--- a/user/perl-config-ini/APKBUILD
+++ b/user/perl-config-ini/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-config-ini
-pkgver=0.025
+_pkgreal=Config-INI
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.029
pkgrel=0
pkgdesc="Simple .ini file format handler for Perl"
url="https://metacpan.org/release/Config-INI"
arch="noarch"
-license="Artistic-1.0-Perl"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl-mixin-linewise"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Config-INI-$pkgver.tar.gz"
-builddir="$srcdir/Config-INI-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="2831e2611409c1f09029b37e56bcbc875051cf9ac5e458f38fbac29a3e48665f49ea9ac66519eeee71e9b52b2c702507eb801c518a8417bbf0806270b0bc4155 Config-INI-0.025.tar.gz"
+sha512sums="9f787640ada163f8bbdda687c0fdfeb86d749a06937e379cae3732e965b248e6de96e86eba8f86c755293916a0d571c2228c1f7c7a0e15cd0aa0b642269fb5fb Config-INI-0.029.tar.gz"
diff --git a/user/perl-convert-color-xterm/APKBUILD b/user/perl-convert-color-xterm/APKBUILD
new file mode 100644
index 000000000..9b77c8828
--- /dev/null
+++ b/user/perl-convert-color-xterm/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-convert-color-xterm
+_pkgreal=Convert-Color-XTerm
+_author=PEVANS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.06
+pkgrel=0
+pkgdesc="Module for Convert::Color which supports XTerm colour indices"
+url="https://metacpan.org/pod/Convert::Color::XTerm"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+checkdepends=""
+makedepends="perl-convert-color perl-list-utilsby perl-module-build
+ perl-module-pluggable"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="27ac6790f6314dfc0e5f67304f97fdd5ef752721ad82ad493486f99119ea3227a55dc6e479e7086a8c23f1c85fb4c501a06ec1f0638034420c33aaad1facb67a Convert-Color-XTerm-0.06.tar.gz"
diff --git a/user/perl-convert-color/APKBUILD b/user/perl-convert-color/APKBUILD
new file mode 100644
index 000000000..5048462d2
--- /dev/null
+++ b/user/perl-convert-color/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-convert-color
+_pkgreal=Convert-Color
+_author=PEVANS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.17
+pkgrel=0
+pkgdesc="Perl utilities for color conversion"
+url="https://metacpan.org/pod/Convert::Color"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+checkdepends="perl-test-number-delta perl-test2-suite"
+makedepends="perl-list-utilsby perl-module-build perl-module-pluggable"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="edcbdc0d2775b7e5f814fc3fd16d4e089f89a3141a0e8776bf783aade5a7f20fa05cb4a46bd01bf16d2d9f41af46bca72de087c56c02fd088fe8b619bc26cb27 Convert-Color-0.17.tar.gz"
diff --git a/user/perl-cookie-baker/APKBUILD b/user/perl-cookie-baker/APKBUILD
index 38a1ed0ff..8b1858c1e 100644
--- a/user/perl-cookie-baker/APKBUILD
+++ b/user/perl-cookie-baker/APKBUILD
@@ -1,35 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-cookie-baker
-_pkgname=Cookie-Baker
-pkgver=0.10
+_pkgreal=Cookie-Baker
+_author=KAZEBURO
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.12
pkgrel=0
pkgdesc="Cookie string generator and parser for Perl"
url="https://metacpan.org/release/Cookie-Baker"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-uri-escape"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-uri"
checkdepends="perl-test-time"
makedepends="perl-dev perl-module-build-tiny"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/K/KA/KAZEBURO/Cookie-Baker-$pkgver.tar.gz"
-builddir="$srcdir/Cookie-Baker-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs=vendor
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="e149885b3a561436daa8663f4ab55c5ebe41b6fce6ff3332ad58f840a9bb8098e36dbbb3dc15c4ce486245d3c5669a1cc450f112cb76346280a776179d54444f Cookie-Baker-0.10.tar.gz"
+sha512sums="5b859652ff258b47c2078109275264e6d00619ac69b86b245c916c9b93e420ba253628df5d7d8c7a4c3321519cd63981435e571cb87ef8776ee3a94112b8c408 Cookie-Baker-0.12.tar.gz"
diff --git a/user/perl-cpan-changes/APKBUILD b/user/perl-cpan-changes/APKBUILD
new file mode 100644
index 000000000..871f56cff
--- /dev/null
+++ b/user/perl-cpan-changes/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-cpan-changes
+_pkgreal=CPAN-Changes
+_author=HAARG
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.500003
+pkgrel=0
+pkgdesc="Perl module for validating CPAN Changes files"
+url="https://metacpan.org/release/CPAN-Changes"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+makedepends="perl-dev perl-module-runtime perl-moo perl-type-tiny"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="f5a9b088a76579288d69b963e344bf0d3d17d90b2600770bf2b2d74103b960ba71b16a22e0f3279c45474f62f639899611fbd5e25e3d659efa52c7995037b790 CPAN-Changes-0.500003.tar.gz"
diff --git a/user/perl-cpan-meta-check/APKBUILD b/user/perl-cpan-meta-check/APKBUILD
index e23edf9b9..755ca2c00 100644
--- a/user/perl-cpan-meta-check/APKBUILD
+++ b/user/perl-cpan-meta-check/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-cpan-meta-check
-pkgver=0.014
+_pkgreal=CPAN-Meta-Check
+_author=LEONT
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.018
pkgrel=0
pkgdesc="Verify requirements in a Perl CPAN::Meta object"
url="https://metacpan.org/release/CPAN-Meta-Check"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
-makedepends="perl-dev"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
checkdepends="perl-test-deep"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/L/LE/LEONT/CPAN-Meta-Check-$pkgver.tar.gz"
-builddir="$srcdir/CPAN-Meta-Check-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="a10af09a7ce771ca3983adea8053d141750fd09849609a28e7f973831fd3a3ece55281841aec93c099154bb59135986da4983bf612ae4e956c45dbb3f2770f5e CPAN-Meta-Check-0.014.tar.gz"
+sha512sums="ea340287e4f14a5ea00f7fe0decc424ff3ac1af9615cf41905e36be37b1b5f3401d3d44d4aef1d0f4a253f46f0170e1a1607b669ab975ba78d7c1497f0583169 CPAN-Meta-Check-0.018.tar.gz"
diff --git a/user/perl-crypt-des/APKBUILD b/user/perl-crypt-des/APKBUILD
index 7b62e7657..a87d017df 100644
--- a/user/perl-crypt-des/APKBUILD
+++ b/user/perl-crypt-des/APKBUILD
@@ -1,31 +1,31 @@
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-crypt-des
_pkgreal=Crypt-DES
+_author=DPARIS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=2.07
pkgrel=6
pkgdesc="Perl DES encryption module"
url="https://metacpan.org/release/Crypt-DES"
arch="all"
license="BSD-3-Clause"
-depends=""
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://search.cpan.org/CPAN/authors/id/D/DP/DPARIS/$_pkgreal-$pkgver.tar.gz"
+source="https://search.cpan.org/CPAN/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-crypt-rijndael/APKBUILD b/user/perl-crypt-rijndael/APKBUILD
index 5b9e1283a..3cd8604f4 100644
--- a/user/perl-crypt-rijndael/APKBUILD
+++ b/user/perl-crypt-rijndael/APKBUILD
@@ -1,43 +1,33 @@
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-crypt-rijndael
_pkgreal=Crypt-Rijndael
-pkgver=1.13
+_author=LEONT
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.16
pkgrel=0
pkgdesc="Crypt::CBC compliant Rijndael encryption module"
url="https://metacpan.org/release/Crypt-Rijndael"
arch="all"
license="LGPL-3.0+"
-cpandepends="perl-test-manifest"
-cpanmakedepends=""
-depends="$cpandepends"
-makedepends="perl-dev $cpanmakedepends"
+depends="perl perl-test-manifest"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://search.cpan.org/CPAN/authors/id/L/LE/LEONT/$_pkgreal-$pkgver.tar.gz
- use-stdint_h.patch"
-
+source="https://search.cpan.org/CPAN/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
builddir="$srcdir/$_pkgreal-$pkgver"
-prepare() {
- cd "$builddir"
- default_prepare
- PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
-}
-
build() {
- cd "$builddir"
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="46eea4eb6568d9bb70685314c6a29214552787c8cf138adb77271d07b85c16d83ee3faa53e6c3b7d0abb5cb735827407e970f954ae93123dfeaebb5fb34f1329 Crypt-Rijndael-1.13.tar.gz
-4f96e3f326c48bdca94aa721468f6c927a6af39ab9683bc69058a9330d733c96e656883890cf9f2c4588173784d248238dec82a49e8261c0cd9e1d794764d97e use-stdint_h.patch"
+sha512sums="e33cb691cd62d9b98f26c8f0d1365437f8a77154a4100be4969a88ad094074fb2f855fcb11541dc63743f861ef0c45944831b7f887df9bbb0b4ec36d6e0fd66d Crypt-Rijndael-1.16.tar.gz"
diff --git a/user/perl-crypt-rijndael/use-stdint_h.patch b/user/perl-crypt-rijndael/use-stdint_h.patch
deleted file mode 100644
index 76471bee9..000000000
--- a/user/perl-crypt-rijndael/use-stdint_h.patch
+++ /dev/null
@@ -1,18 +0,0 @@
-Only in Crypt-Rijndael-1.11: Rijndael.o
-Only in Crypt-Rijndael-1.11: _rijndael.o
-Only in Crypt-Rijndael-1.11: blib/arch/auto/Crypt/Rijndael/Rijndael.so
-Only in Crypt-Rijndael-1.11: blib/man3/Crypt::Rijndael.3
---- Crypt-Rijndael-1.11.orig/rijndael.h
-+++ Crypt-Rijndael-1.11/rijndael.h
-@@ -72,6 +72,11 @@
- typedef u_char UINT8;
- #endif
-
-+#include <stdint.h>
-+#define _CRYPT_RIJNDAEL_H_TYPES
-+typedef uint32_t UINT32;
-+typedef uint8_t UINT8;
-+
- /* I expect this to be the usual case */
- #if ! defined(_CRYPT_RIJNDAEL_H_TYPES) && ( defined(_SYS_TYPES_H) || defined(_SYS_TYPES_H_) )
- #define _CRYPT_RIJNDAEL_H_TYPES
diff --git a/user/perl-cwd-guard/APKBUILD b/user/perl-cwd-guard/APKBUILD
index 5976741ef..ec068a497 100644
--- a/user/perl-cwd-guard/APKBUILD
+++ b/user/perl-cwd-guard/APKBUILD
@@ -1,37 +1,33 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-cwd-guard
+_pkgreal=Cwd-Guard
+_author=KAZEBURO
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.05
pkgrel=0
pkgdesc="Temporary changing working directory (chdir)"
url="https://metacpan.org/pod/Cwd::Guard"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl"
-makedepends="perl-dev perl-module-build"
checkdepends="perl-test-requires"
-install=""
+makedepends="perl-dev perl-module-build"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/K/KA/KAZEBURO/Cwd-Guard-$pkgver.tar.gz"
-builddir="$srcdir/Cwd-Guard-$pkgver"
-
-prepare() {
- cd "$builddir"
- perl Build.PL installdirs=vendor
-}
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
+ perl Build.PL installdirs=vendor
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-data-dump/APKBUILD b/user/perl-data-dump/APKBUILD
index 5ff3228e7..0ff8bd20a 100644
--- a/user/perl-data-dump/APKBUILD
+++ b/user/perl-data-dump/APKBUILD
@@ -1,32 +1,34 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-data-dump
-pkgver=1.23
+_pkgreal=Data-Dump
+_author=GARU
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.25
pkgrel=0
pkgdesc="Perl module for outputting data structures"
url="https://metacpan.org/pod/Data::Dump"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0+"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/G/GA/GAAS/Data-Dump-$pkgver.tar.gz"
-builddir="$srcdir/Data-Dump-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="6fd6c23bb6df7f7396219149dbfd23132fc2ea1dd344c32f62fc27a1afeeb28d7ebf2d429184bb6d1189f412e218f9e62a966b49fdd9ad5564e5152d67a02b96 Data-Dump-1.23.tar.gz"
+sha512sums="fc859b0f02a44a959da3e162606c8fbaefececf8dbd0aa357d68a5a3143b818ae423dd7862063f2f77161ea000fcaa6841c96a2c4a268b889da9588292b157fe Data-Dump-1.25.tar.gz"
diff --git a/user/perl-data-optlist/APKBUILD b/user/perl-data-optlist/APKBUILD
index c2f5f6308..56a8a7b7d 100644
--- a/user/perl-data-optlist/APKBUILD
+++ b/user/perl-data-optlist/APKBUILD
@@ -1,8 +1,10 @@
-# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-data-optlist
_pkgreal=Data-OptList
-pkgver=0.110
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.114
pkgrel=0
pkgdesc="Parse and validate simple name/value option pairs"
url="https://metacpan.org/release/Data-OptList"
@@ -11,24 +13,21 @@ license="GPL-1.0+ OR Artistic-1.0-Perl"
depends="perl perl-params-util perl-sub-install"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/$_pkgreal-$pkgver.tar.gz"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="68393958a38f509a71cfba61f6dff8303821918ba29ad8492af0c23cfd4f741c6ce98c4f68ad295f27e166287fc546229c430816f0bdd6009d4f60860c967b76 Data-OptList-0.110.tar.gz"
+sha512sums="72f60ad7d9a6d87ffecfbc0f6f6d48dad2816dd4431d7e82e8ab834e0852da27420fd52fb2a1138254d80bf8b98b94b9fa25b878e1bb155221543a78219ee16a Data-OptList-0.114.tar.gz"
diff --git a/user/perl-data-section/APKBUILD b/user/perl-data-section/APKBUILD
new file mode 100644
index 000000000..0cce6039e
--- /dev/null
+++ b/user/perl-data-section/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-data-section
+_pkgreal=Data-Section
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.200008
+pkgrel=0
+pkgdesc="Perl module for reading inline data in chunks"
+url="https://metacpan.org/pod/Data::Section"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-mro-compat perl-sub-exporter perl-test-failwarnings"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="5fc8b25b1af8cdae5dca407bc039578e92bfc0b3bcfa2c01cdddf36ea30840f7eeeb336859a2e50719713c2675f2c1eb74c8832724d99ba4db92c47c65a860e3 Data-Section-0.200008.tar.gz"
diff --git a/user/perl-data-uuid/APKBUILD b/user/perl-data-uuid/APKBUILD
new file mode 100644
index 000000000..a8859855a
--- /dev/null
+++ b/user/perl-data-uuid/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-data-uuid
+_pkgreal=Data-UUID
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.226
+pkgrel=0
+pkgdesc="Perl module for working with UUIDs"
+url="https://metacpan.org/pod/Data::UUID"
+arch="all"
+license="MIT"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="61c13b1aab3263d7bf94ecfde758acbdd986879144adbc436d32e5f5e03d70c8475984458681ab1d73d71bf5169b368c1f21a576ce996e225b6d74b5afd061fe Data-UUID-1.226.tar.gz"
diff --git a/user/perl-datetime-locale/APKBUILD b/user/perl-datetime-locale/APKBUILD
index 829b21dcf..daddfb5a6 100644
--- a/user/perl-datetime-locale/APKBUILD
+++ b/user/perl-datetime-locale/APKBUILD
@@ -1,38 +1,39 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-datetime-locale
-_pkgname=DateTime-Locale
-pkgver=1.24
+_pkgreal=DateTime-Locale
+_author=DROLSKY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.40
pkgrel=0
pkgdesc="Locale support for Perl DateTime"
url="https://metacpan.org/release/DateTime-Locale"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl-dist-checkconflicts perl-file-sharedir perl-file-sharedir-install
perl-ipc-system-simple perl-namespace-autoclean
- perl-params-validationcompiler"
+ perl-params-validationcompiler perl"
checkdepends="perl-specio perl-test-fatal perl-test-file-sharedir
- perl-test-requires perl-test-warnings"
+ perl-test-requires perl-test-warnings perl-test2-suite
+ perl-test2-plugin-nowarnings"
makedepends="perl-dev perl-cpan-meta-check perl-dist-checkconflicts"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/DateTime-Locale-$pkgver.tar.gz"
-builddir="$srcdir/DateTime-Locale-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="0510df7e69bc7e50cb301510224cb084bf9d75f072ceb631d7c94ab07a6f7c11b64247c492054c0be3840bf5b13b6981f09426fd0b8e20a48901308cc0b5ffdb DateTime-Locale-1.24.tar.gz"
+sha512sums="40942acea6e27ea7e84a6c38ec712c868f9009adaa16b9dbfa4ff5d5094a8add4a5fcaafe49b7bbb8530348ad79ac7a910efab68a5085a41e731108797ea1045 DateTime-Locale-1.40.tar.gz"
diff --git a/user/perl-datetime-timezone/APKBUILD b/user/perl-datetime-timezone/APKBUILD
index cccb8ee11..82ed28c5c 100644
--- a/user/perl-datetime-timezone/APKBUILD
+++ b/user/perl-datetime-timezone/APKBUILD
@@ -1,36 +1,38 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-datetime-timezone
-_pkgname=DateTime-TimeZone
-pkgver=2.34
+_pkgreal=DateTime-TimeZone
+_author=DROLSKY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.62
pkgrel=0
pkgdesc="Time zone object class and factory for Perl"
url="https://metacpan.org/release/DateTime-TimeZone"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-class-singleton perl-module-runtime perl-namespace-autoclean
- perl-params-validationcompiler perl-specio perl-try-tiny"
-checkdepends="perl-test-fatal perl-test-requires"
-makedepends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl-class-singleton perl-module-runtime
+ perl-namespace-autoclean perl-params-validationcompiler perl-specio
+ perl-try-tiny perl"
+checkdepends="perl-test-fatal perl-test-output perl-test-requires
+ perl-test-taint"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/DateTime-TimeZone-$pkgver.tar.gz"
-builddir="$srcdir/DateTime-TimeZone-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="8525542dfee39f8b889889db310d455b03dd0f270d391a06c337c46d9d457969e365ebf9b8fa42eef71b1dbf2bbd3e25c1ef710f19701a300729bc1816bcaa0c DateTime-TimeZone-2.34.tar.gz"
+sha512sums="7608a47b5acbf61904f66cc945bd96ff1042af6a6d3077905d238239dfdb8cd4a4dc3c75d21c37308d2ed716c64557c7a0fae41e47403a6771cf2f53cbb22afb DateTime-TimeZone-2.62.tar.gz"
diff --git a/user/perl-datetime/APKBUILD b/user/perl-datetime/APKBUILD
index 9bdd7a945..7857b9653 100644
--- a/user/perl-datetime/APKBUILD
+++ b/user/perl-datetime/APKBUILD
@@ -1,8 +1,11 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-datetime
-_pkgname=DateTime
-pkgver=1.50
+_pkgreal=DateTime
+_author=DROLSKY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.65
pkgrel=0
pkgdesc="Date and time object for Perl"
url="https://metacpan.org/release/DateTime"
@@ -10,28 +13,25 @@ arch="all"
license="Artistic-2.0"
depends="perl-datetime-locale perl-datetime-timezone perl-dist-checkconflicts
perl-namespace-autoclean perl-params-validationcompiler perl-specio
- perl-try-tiny"
-checkdepends="perl-test-fatal perl-test-warnings"
+ perl-try-tiny perl"
+checkdepends="perl-test-fatal perl-test-warnings perl-test-without-module"
makedepends="perl-dev perl-cpan-meta-check"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/DateTime-$pkgver.tar.gz"
-builddir="$srcdir/DateTime-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="fa8f57aac2b736a5b8b70005b74a81ea4bc80143714a79f16896c4214776c591f3db6689841a6b5217070e02ccea6ccf30b565c3bb0acdce9d1ea44eb61fe85a DateTime-1.50.tar.gz"
+sha512sums="53b8bb5085420104d9cd2b6df076d353684ec6f347caf17f858c9c09e052aa19421bf980d130dbbe0094b791ff071ee99d8222509717008e5a3cd354639f7720 DateTime-1.65.tar.gz"
diff --git a/user/perl-dbd-pg/APKBUILD b/user/perl-dbd-pg/APKBUILD
index bf7d3b2a2..b08949330 100644
--- a/user/perl-dbd-pg/APKBUILD
+++ b/user/perl-dbd-pg/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-dbd-pg
-_pkgname=DBD-Pg
-pkgver=3.7.4
+_pkgreal=DBD-Pg
+_author=TURNSTEP
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=3.18.0
pkgrel=0
pkgdesc="PostgreSQL interface for Perl DBI"
url="https://metacpan.org/release/DBD-Pg"
arch="all"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-dbi"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-dbi"
+checkdepends="musl-locales postgresql"
makedepends="perl-dev postgresql-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/T/TU/TURNSTEP/DBD-Pg-$pkgver.tar.gz"
-builddir="$srcdir/DBD-Pg-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="77c629ce89233345f7893b0cc2799a5efc646e86b62ee91986678f196380ac772ece7b9f6c98dae588fbf8f29def1f997335fa85874562ab648af8665cd9add8 DBD-Pg-3.7.4.tar.gz"
+sha512sums="0a81d1993f22a923776ab57f1437dbee2b5c42de091e274355dbcc9bb07e3db0c22126d0037de8de43fafeab9c947db1e3692087127027a0b13eed538fc2e1ee DBD-Pg-3.18.0.tar.gz"
diff --git a/user/perl-devel-checkcompiler/APKBUILD b/user/perl-devel-checkcompiler/APKBUILD
index 6e99b7ced..e667cf80b 100644
--- a/user/perl-devel-checkcompiler/APKBUILD
+++ b/user/perl-devel-checkcompiler/APKBUILD
@@ -1,37 +1,32 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-devel-checkcompiler
+_pkgreal=Devel-CheckCompiler
+_author=SYOHEX
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.07
pkgrel=0
pkgdesc="Check the compiler's availability"
url="https://metacpan.org/pod/Devel::CheckCompiler"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl"
makedepends="perl-dev perl-module-build-tiny"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SY/SYOHEX/Devel-CheckCompiler-$pkgver.tar.gz"
-builddir="$srcdir/Devel-CheckCompiler-$pkgver"
-
-prepare() {
- cd "$builddir"
- perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs=vendor
-}
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
- export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs=vendor
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-devel-cycle/APKBUILD b/user/perl-devel-cycle/APKBUILD
new file mode 100644
index 000000000..622e0380e
--- /dev/null
+++ b/user/perl-devel-cycle/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-devel-cycle
+_pkgreal=Devel-Cycle
+_author=LDS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.12
+pkgrel=0
+pkgdesc="Perl module for finding circular references in objects"
+url="https://metacpan.org/pod/Devel::Cycle"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="e2c83829905449d13c86233ad5bfce28e7b4eca61a8ac1e2f73e3c906a2d8580f66ae84d865ef876c38c2d25f0a5a8adeb05f6e94594274d8a5fa1739842d08d Devel-Cycle-1.12.tar.gz"
diff --git a/user/perl-devel-globaldestruction/APKBUILD b/user/perl-devel-globaldestruction/APKBUILD
index af612cad4..0edad1a79 100644
--- a/user/perl-devel-globaldestruction/APKBUILD
+++ b/user/perl-devel-globaldestruction/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-devel-globaldestruction
+_pkgreal=Devel-GlobalDestruction
+_author=HAARG
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.14
pkgrel=0
pkgdesc="Provides Global Destruction for older perls"
url="https://metacpan.org/pod/Devel::GlobalDestruction"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl perl-sub-exporter-progressive"
makedepends="perl-dev"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/H/HA/HAARG/Devel-GlobalDestruction-$pkgver.tar.gz"
-builddir="$srcdir/Devel-GlobalDestruction-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-devel-hide/APKBUILD b/user/perl-devel-hide/APKBUILD
new file mode 100644
index 000000000..f1c8cc8df
--- /dev/null
+++ b/user/perl-devel-hide/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-devel-hide
+_pkgreal=Devel-Hide
+_author=DCANTRELL
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.0015
+pkgrel=0
+pkgdesc="Perl module for forcing the unavailability of modules for testing"
+url="https://metacpan.org/pod/Devel::Hide"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="6fbd73e21630596c2c398ba2490be4f17b95de5c25af547f3a824cebb87ed57d99cba418ba6caefbb8494f3341c571da5debae13add6b698c9e6ba4e001f60d7 Devel-Hide-0.0015.tar.gz"
diff --git a/user/perl-devel-nytprof/APKBUILD b/user/perl-devel-nytprof/APKBUILD
new file mode 100644
index 000000000..3d6e56a1d
--- /dev/null
+++ b/user/perl-devel-nytprof/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=perl-devel-nytprof
+_pkgreal=Devel-NYTProf
+_author=JKEENAN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=6.11
+pkgrel=0
+pkgdesc="Powerful, fast, feature-rich Perl source code profiler"
+url="https://metacpan.org/release/Devel-NYTProf"
+arch="all"
+license="Artistic-1.0-Perl OR GPL-2.0-only"
+depends="perl perl-file-which perl-json-maybexs"
+checkdepends="perl-test-differences"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="ce364f312fbf2c95be19ad713bfb1c1d5ffed70753a83181169a9544af2bd00b7eb29f135a5e93c834912df23619d769645acfe7bb1225a45ef6b43d2cbeb098 Devel-NYTProf-6.11.tar.gz"
diff --git a/user/perl-devel-overloadinfo/APKBUILD b/user/perl-devel-overloadinfo/APKBUILD
index 98601047e..f68e63fa6 100644
--- a/user/perl-devel-overloadinfo/APKBUILD
+++ b/user/perl-devel-overloadinfo/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-devel-overloadinfo
-pkgver=0.005
+_pkgreal=Devel-OverloadInfo
+_author=ILMARI
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.007
pkgrel=0
pkgdesc="Introspect overloaded Perl operators"
url="https://metacpan.org/release/Devel-OverloadInfo"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends="perl-mro-compat perl-package-stash perl-sub-identify"
-makedepends="perl-dev"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-mro-compat perl-package-stash perl-sub-identify"
checkdepends="perl-test-fatal"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/I/IL/ILMARI/Devel-OverloadInfo-$pkgver.tar.gz"
-builddir="$srcdir/Devel-OverloadInfo-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="66ff0869ecd34b2a80e6c8052e9ba7cf396b85e25f2efa92e42447ae3164ac50f703ca4dbee38ac676b70caf19ce189a6d2a1d6322cf3af342d4edd5c0b336e7 Devel-OverloadInfo-0.005.tar.gz"
+sha512sums="4db830d6f9edb467626213ab4d45b3e4b8fa9b3c38fad1349233f7b420d08be42833e57daa9a8076f4127cafba92f4cfc177ca33bd19cf2a582b644ac1ae7d72 Devel-OverloadInfo-0.007.tar.gz"
diff --git a/user/perl-devel-stacktrace-ashtml/APKBUILD b/user/perl-devel-stacktrace-ashtml/APKBUILD
index 583a868d5..6554edd04 100644
--- a/user/perl-devel-stacktrace-ashtml/APKBUILD
+++ b/user/perl-devel-stacktrace-ashtml/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-devel-stacktrace-ashtml
-_pkgname=Devel-StackTrace-AsHTML
+_pkgreal=Devel-StackTrace-AsHTML
+_author=MIYAGAWA
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.15
pkgrel=0
pkgdesc="Display Perl stack traces in HTML"
url="https://metacpan.org/release/Devel-StackTrace-AsHTML"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-devel-stacktrace"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-devel-stacktrace"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/Devel-StackTrace-AsHTML-$pkgver.tar.gz"
-builddir="$srcdir/Devel-StackTrace-AsHTML-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-devel-stacktrace/APKBUILD b/user/perl-devel-stacktrace/APKBUILD
index 1420b82f3..2691167b0 100644
--- a/user/perl-devel-stacktrace/APKBUILD
+++ b/user/perl-devel-stacktrace/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-devel-stacktrace
-pkgver=2.03
+_pkgreal=Devel-StackTrace
+_author=DROLSKY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.05
pkgrel=0
pkgdesc="A Perl object representing a stack trace"
url="https://metacpan.org/release/Devel-StackTrace"
arch="noarch"
license="Artistic-2.0"
-depends=""
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Devel-StackTrace-$pkgver.tar.gz"
-builddir="$srcdir/Devel-StackTrace-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="a5263ec76f5adb83b83cc4906c18d6c341f50472a254617882a889315597698968988be1bacbbb4c6c0709974ff4ba67a14835d3c2278d672219c52e4c823514 Devel-StackTrace-2.03.tar.gz"
+sha512sums="070f95e731a7ac07a19f0ae0a4dbe04ae2ee72e43c34363e57c2336c856ec2f7fc055ae9fec6b8ee85ca06d6b5558a891a1a6df62c7d1b60493b22be38a020b8 Devel-StackTrace-2.05.tar.gz"
diff --git a/user/perl-devel-symdump/APKBUILD b/user/perl-devel-symdump/APKBUILD
index a56a92cd9..f815fefce 100644
--- a/user/perl-devel-symdump/APKBUILD
+++ b/user/perl-devel-symdump/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-devel-symdump
+_pkgreal=Devel-Symdump
+_author=ANDK
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=2.18
pkgrel=0
pkgdesc="Dump symbol names or the symbol table"
url="https://metacpan.org/pod/Devel::Symdump"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl"
makedepends="perl-dev"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/A/AN/ANDK/Devel-Symdump-$pkgver.tar.gz"
-builddir="$srcdir/Devel-Symdump-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-dir-manifest/APKBUILD b/user/perl-dir-manifest/APKBUILD
new file mode 100644
index 000000000..3df6fdbf8
--- /dev/null
+++ b/user/perl-dir-manifest/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-dir-manifest
+_pkgreal=Dir-Manifest
+_author=SHLOMIF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.6.1
+pkgrel=0
+pkgdesc="Perl module to turn a directory and files into a dictionary"
+url="https://metacpan.org/release/Dir-Manifest"
+arch="noarch"
+license="X11"
+depends="perl perl-moo perl-path-tiny"
+makedepends="perl-dev perl-module-build"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ perl Build.PL installdirs=vendor
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install destdir="$pkgdir"
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="e816d1f656bc992fc1f065b0adff53e83af03da9842987df9382ec12875ca7081ca4aa49d775c84d9f6602cb550acb1b8baf3c1f528a999e3bf39dcea2498efd Dir-Manifest-0.6.1.tar.gz"
diff --git a/user/perl-dist-checkconflicts/APKBUILD b/user/perl-dist-checkconflicts/APKBUILD
index 481277c32..97d498273 100644
--- a/user/perl-dist-checkconflicts/APKBUILD
+++ b/user/perl-dist-checkconflicts/APKBUILD
@@ -1,32 +1,33 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-dist-checkconflicts
+_pkgreal=Dist-CheckConflicts
+_author=DOY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.11
pkgrel=0
pkgdesc="Declare version conflicts for Perl distributions"
url="https://metacpan.org/release/Dist-CheckConflicts"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends="perl-module-runtime"
-makedepends="perl-dev"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-module-runtime"
checkdepends="perl-test-fatal"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DO/DOY/Dist-CheckConflicts-$pkgver.tar.gz"
-builddir="$srcdir/Dist-CheckConflicts-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-email-abstract/APKBUILD b/user/perl-email-abstract/APKBUILD
index 2df402287..0add081e9 100644
--- a/user/perl-email-abstract/APKBUILD
+++ b/user/perl-email-abstract/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-email-abstract
-_pkgname=Email-Abstract
-pkgver=3.008
+_pkgreal=Email-Abstract
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=3.010
pkgrel=0
pkgdesc="Unified interface to email representations in Perl"
url="https://metacpan.org/release/Email-Abstract"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-email-simple perl-mro-compat perl-module-pluggable"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-email-simple perl-mro-compat perl-module-pluggable"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Email-Abstract-$pkgver.tar.gz"
-builddir="$srcdir/Email-Abstract-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="efead64612562fb9d644fa830b2f29e0701af0f3ddeb118992badff7c7a45cb569ad4644a7b226cc625cdabfb3f5db155284eb68042928265bfc5c230f4bf40a Email-Abstract-3.008.tar.gz"
+sha512sums="73c7e9083f583d17c20bcda2a17e6ff7187c587e8168415692618be2ec0a10f0bce2ddb1da8d2cc929022af56da4498d44cf0cc062c1c5b83abac2ecb48a9ae6 Email-Abstract-3.010.tar.gz"
diff --git a/user/perl-email-address-xs/APKBUILD b/user/perl-email-address-xs/APKBUILD
index d50a4098e..8b2623386 100644
--- a/user/perl-email-address-xs/APKBUILD
+++ b/user/perl-email-address-xs/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-email-address-xs
-_pkgname=Email-Address-XS
-pkgver=1.04
+_pkgreal=Email-Address-XS
+_author=PALI
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.05
pkgrel=0
pkgdesc="Parse and format RFC 5322 email addresses in Perl"
url="https://metacpan.org/release/Email-Address-XS"
arch="all"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/P/PA/PALI/Email-Address-XS-$pkgver.tar.gz"
-builddir="$srcdir/Email-Address-XS-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="2dda846f998cdc2112067b7a994e86162de765a0a23f2288cb8292f26b9ac07171452961389badb678d5568c7f4b0966d9dc97c1d91cd4be2b9767f0e615b1d8 Email-Address-XS-1.04.tar.gz"
+sha512sums="129841de4e945f935529e4b67a325b78c1aa9ca2f7623078450ed4d3516dffa4791a1f5ea37c8647ee15677414761475593d17073171623ea322023c9cef44eb Email-Address-XS-1.05.tar.gz"
diff --git a/user/perl-email-address/APKBUILD b/user/perl-email-address/APKBUILD
index a0b6b5380..8abe55c2d 100644
--- a/user/perl-email-address/APKBUILD
+++ b/user/perl-email-address/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-email-address
-_pkgname=Email-Address
-pkgver=1.912
+_pkgreal=Email-Address
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.913
pkgrel=0
pkgdesc="Deprecated RFC 2822 address parsing library for Perl"
url="https://metacpan.org/release/Email-Address"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Email-Address-$pkgver.tar.gz"
-builddir="$srcdir/Email-Address-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="fd8a8c09829f725609aa84c79ad89d1e44cbfb70cc44cae6a9f31174589404f56cf60ab3a4186137f7ff9838a3fe34a95a7c584e0eec2e5d1d79c919610f6e1a Email-Address-1.912.tar.gz"
+sha512sums="3c12c052cf7bc5738763f35e81eb328f990494774703ac204b516cec7faa985d262af79126e4068cb084ee4f3b56b1704bbe219288ff8efe5e61b6a62fcea901 Email-Address-1.913.tar.gz"
diff --git a/user/perl-email-date-format/APKBUILD b/user/perl-email-date-format/APKBUILD
index fb41a6fed..b0b6ce4cb 100644
--- a/user/perl-email-date-format/APKBUILD
+++ b/user/perl-email-date-format/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-email-date-format
-_pkgname=Email-Date-Format
-pkgver=1.005
+_pkgreal=Email-Date-Format
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.008
pkgrel=0
pkgdesc="Produce RFC 2822 date strings in Perl"
url="https://metacpan.org/release/Email-Date-Format"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Email-Date-Format-$pkgver.tar.gz"
-builddir="$srcdir/Email-Date-Format-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="23daefa45874211f053d05ac3c3f3c7c3a86d9b623fdcec3bd9f6f7b4c8e5ad1ac8038146bdc85cc950b21b43b0ad843f8a52ad2183d868d3a62ea96292e34ca Email-Date-Format-1.005.tar.gz"
+sha512sums="24c97cd3b739c2f3c298b9ec168c4614bb71b13a0106f351990443cc86506e4e121f9c647bde6f08080a876f36adeb3fcef566d87ded9bddcbec6f3191f508be Email-Date-Format-1.008.tar.gz"
diff --git a/user/perl-email-messageid/APKBUILD b/user/perl-email-messageid/APKBUILD
index 6283eb5a4..de70563d0 100644
--- a/user/perl-email-messageid/APKBUILD
+++ b/user/perl-email-messageid/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-email-messageid
-_pkgname=Email-MessageID
-pkgver=1.406
+_pkgreal=Email-MessageID
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.408
pkgrel=0
pkgdesc="Generate unique Message-IDs in Perl"
url="https://metacpan.org/release/Email-MessageID"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Email-MessageID-$pkgver.tar.gz"
-builddir="$srcdir/Email-MessageID-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="c36861267a127372076391e5e6458ee19bbdc8d09c3b1ce3131d0cad1a82a6f9b2bc5a29df8bafa2450ea0e5c06993abf98928f2246e694d05875e40b7e36109 Email-MessageID-1.406.tar.gz"
+sha512sums="f2c5acda302a2db3766c3bc5f0ccd1c4a1adefd7c6ebc2ba5372821deff280e4680df0d3461c26acdf923fe20c12e0630b4efd4dedb9604c247f067ec7cfbcb9 Email-MessageID-1.408.tar.gz"
diff --git a/user/perl-email-mime-contenttype/APKBUILD b/user/perl-email-mime-contenttype/APKBUILD
index bccd41537..b14dfe040 100644
--- a/user/perl-email-mime-contenttype/APKBUILD
+++ b/user/perl-email-mime-contenttype/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-email-mime-contenttype
-_pkgname=Email-MIME-ContentType
-pkgver=1.022
+_pkgreal=Email-MIME-ContentType
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.028
pkgrel=0
pkgdesc="Parse MIME Content-Type/Disposition headers in Perl"
url="https://metacpan.org/release/Email-MIME-ContentType"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-text-unidecode"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Email-MIME-ContentType-$pkgver.tar.gz"
-builddir="$srcdir/Email-MIME-ContentType-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="38561922e0dbc180ac24003a3b64ef39e25a5607bbedc75a3e4580490ab84e02bfd5165225eff4884112cf1f82ec46ee62f31c047acea6b9a3cca390deb965be Email-MIME-ContentType-1.022.tar.gz"
+sha512sums="d6d06546fd12c238be431713d610478780866553acc6017963be0993a3796f43f39d5720b922f18cebb4e23b14f3ff03e3f3a5fee5dd9eed7afa75672fedebe5 Email-MIME-ContentType-1.028.tar.gz"
diff --git a/user/perl-email-mime-encodings/APKBUILD b/user/perl-email-mime-encodings/APKBUILD
index 17ad0f379..7619ce345 100644
--- a/user/perl-email-mime-encodings/APKBUILD
+++ b/user/perl-email-mime-encodings/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-email-mime-encodings
-_pkgname=Email-MIME-Encodings
-pkgver=1.315
+_pkgreal=Email-MIME-Encodings
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.317
pkgrel=0
pkgdesc="Unified interface to MIME codecs for Perl"
url="https://metacpan.org/release/Email-MIME-Encodings"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-capture-tiny"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-capture-tiny"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Email-MIME-Encodings-$pkgver.tar.gz"
-builddir="$srcdir/Email-MIME-Encodings-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="4cd787e099617b70963c8ef6372e2a16038c61170fdd343aad88a024ecd15c789fd2c8cc19830c3518b6648e428301eed1ae20f496fa97afbdd8bb7f3ae432aa Email-MIME-Encodings-1.315.tar.gz"
+sha512sums="ff0532381f4268f35c3ac15393f0ec95aafadf6f96ce8434345de87bb70dbc11d7f54be3431ce0fefc33af8c5dd11da8d7d5a591f71d6c6e6a136482e97afbbf Email-MIME-Encodings-1.317.tar.gz"
diff --git a/user/perl-email-mime/APKBUILD b/user/perl-email-mime/APKBUILD
index b091361f0..1ed84165f 100644
--- a/user/perl-email-mime/APKBUILD
+++ b/user/perl-email-mime/APKBUILD
@@ -1,36 +1,36 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-email-mime
-_pkgname=Email-MIME
-pkgver=1.946
+_pkgreal=Email-MIME
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.953
pkgrel=0
pkgdesc="Easy MIME message handling for Perl"
url="https://metacpan.org/release/Email-MIME"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl-email-address-xs perl-email-messageid perl-email-mime-contenttype
perl-email-mime-encodings perl-email-simple perl-mime-types
- perl-module-runtime"
+ perl-module-runtime perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Email-MIME-$pkgver.tar.gz"
-builddir="$srcdir/Email-MIME-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="335a8fd032cca0bb1cdb230899c53fc72037939bd11653d08e66a9ffa6fc5f87aefa2ce28f14b1cbb1a0bacd778b5459445d2829835bedc4f6276ae2ef2d6caa Email-MIME-1.946.tar.gz"
+sha512sums="d88704c7f0173198f94180da81beacaad6ea675e3fcd525f92df7c06a85df8664295c63f71ad6aa14ec517f101f23449e6c3818bbd951c1257b8d0080530c5f7 Email-MIME-1.953.tar.gz"
diff --git a/user/perl-email-reply/APKBUILD b/user/perl-email-reply/APKBUILD
index b0cfc3511..03ce2a53f 100644
--- a/user/perl-email-reply/APKBUILD
+++ b/user/perl-email-reply/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-email-reply
-_pkgname=Email-Reply
+_pkgreal=Email-Reply
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.204
pkgrel=0
pkgdesc="Reply to email from Perl"
url="https://metacpan.org/release/Email-Reply"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-email-abstract perl-email-address perl-email-mime"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-email-abstract perl-email-address perl-email-mime"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Email-Reply-$pkgver.tar.gz"
-builddir="$srcdir/Email-Reply-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-email-sender/APKBUILD b/user/perl-email-sender/APKBUILD
index b058c701c..ed0f49f2e 100644
--- a/user/perl-email-sender/APKBUILD
+++ b/user/perl-email-sender/APKBUILD
@@ -1,37 +1,37 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-email-sender
-_pkgname=Email-Sender
-pkgver=1.300031
+_pkgreal=Email-Sender
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.601
pkgrel=0
pkgdesc="Library for sending email"
url="https://metacpan.org/release/Email-Sender"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-capture-tiny perl-email-abstract perl-email-address
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl-capture-tiny perl-email-abstract perl-email-address-xs
perl-email-simple perl-module-runtime perl-moo
perl-moox-types-mooselike perl-sub-exporter perl-throwable
- perl-try-tiny"
+ perl-try-tiny perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Email-Sender-$pkgver.tar.gz"
-builddir="$srcdir/Email-Sender-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="72aa65d21df9b0a1fa52ba99c9c1c4a660142819ed9658eb2c2b74f1ab70257911af1f071524ecbb3917a7be1464b7a157792b5e03921788ce9f23a86e7874f1 Email-Sender-1.300031.tar.gz"
+sha512sums="ca349761607d4693eaac77c8f385799dffa3713dee642ca81271f377421c44d4b1712f16bc2834204d28448addb97576cbf50c8f28681e24940c691d6208b05a Email-Sender-2.601.tar.gz"
diff --git a/user/perl-email-simple/APKBUILD b/user/perl-email-simple/APKBUILD
index 8a5b75f2a..275b77101 100644
--- a/user/perl-email-simple/APKBUILD
+++ b/user/perl-email-simple/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-email-simple
-_pkgname=Email-Simple
-pkgver=2.216
+_pkgreal=Email-Simple
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.218
pkgrel=0
pkgdesc="Simple parsing of RFC 2822 email messages and headers for Perl"
url="https://metacpan.org/release/Email-Simple"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-email-date-format"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-email-date-format"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Email-Simple-$pkgver.tar.gz"
-builddir="$srcdir/Email-Simple-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="2d729b6ad3cc493d27a8b3f775c046ca16dc53e7fe701fa78c87fbdeb350d3c9fe546ab0721504747f443f0f4e33d395b08b53374b32f89a842ef09a5b1dde70 Email-Simple-2.216.tar.gz"
+sha512sums="402b24000fbcc16f5633062576c484d96a875cdf34a729a5897ee02b1f2195f3cff6475bc45bdd19c6a2b40f106cdcbefd097842e43b312caf0bfc9a05b583fc Email-Simple-2.218.tar.gz"
diff --git a/user/perl-encode-detect/APKBUILD b/user/perl-encode-detect/APKBUILD
index 9925d2845..a983c8fca 100644
--- a/user/perl-encode-detect/APKBUILD
+++ b/user/perl-encode-detect/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-encode-detect
-_pkgname=Encode-Detect
+_pkgreal=Encode-Detect
+_author=JGMYERS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.01
pkgrel=0
pkgdesc="Detect encoding of data in Perl"
url="https://metacpan.org/release/Encode-Detect"
arch="all"
license="MPL-1.1"
-depends=""
+depends="perl"
makedepends="perl-dev perl-module-build"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/J/JG/JGMYERS/Encode-Detect-$pkgver.tar.gz"
-builddir="$srcdir/Encode-Detect-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-env-path/APKBUILD b/user/perl-env-path/APKBUILD
index 8b321c27e..cf6d585fa 100644
--- a/user/perl-env-path/APKBUILD
+++ b/user/perl-env-path/APKBUILD
@@ -1,31 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-env-path
+_pkgreal=Env-Path
+_author=DSB
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.19
pkgrel=0
pkgdesc="Advanced operations on path variables (Perl module)"
url="https://metacpan.org/release/Env-Path"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DS/DSB/Env-Path-$pkgver.tar.gz"
-builddir="$srcdir/Env-Path-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-eval-closure/APKBUILD b/user/perl-eval-closure/APKBUILD
index 93d0f376e..59615e038 100644
--- a/user/perl-eval-closure/APKBUILD
+++ b/user/perl-eval-closure/APKBUILD
@@ -1,32 +1,33 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-eval-closure
+_pkgreal=Eval-Closure
+_author=DOY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.14
pkgrel=0
pkgdesc="Safely and cleanly create Perl closures using string eval"
url="https://metacpan.org/release/Eval-Closure"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
-makedepends="perl-dev"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
checkdepends="perl-test-fatal perl-test-requires"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DO/DOY/Eval-Closure-$pkgver.tar.gz"
-builddir="$srcdir/Eval-Closure-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-exception-class/APKBUILD b/user/perl-exception-class/APKBUILD
index a130d6ed1..abb1bd1b7 100644
--- a/user/perl-exception-class/APKBUILD
+++ b/user/perl-exception-class/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-exception-class
-pkgver=1.44
+_pkgreal=Exception-Class
+_author=DROLSKY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.45
pkgrel=0
pkgdesc="Perl module for declaring 'real' exception classes"
url="https://metacpan.org/release/Exception-Class"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends="perl-class-data-inheritable perl-devel-stacktrace"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-class-data-inheritable perl-devel-stacktrace"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Exception-Class-$pkgver.tar.gz"
-builddir="$srcdir/Exception-Class-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="7ce1e488505dc3d1c6d6365b5ed523b204b93d89d205ad4cdf6c9ee9dbad1a6edc257251a365275f067479e734def56b3b21d588e978822e7714bd8a49ba6bb2 Exception-Class-1.44.tar.gz"
+sha512sums="8eff70c85c8f1cc9e1db2c47b5a815ef902fddd4989783b9fb7e84e3ce75776564cafddd3aedd2c86a5a8b9627021c9cfd094b95ec4956a60dd6703bba3eaf4d Exception-Class-1.45.tar.gz"
diff --git a/user/perl-exporter-lite/APKBUILD b/user/perl-exporter-lite/APKBUILD
index 4831d5f98..a6bfc17cb 100644
--- a/user/perl-exporter-lite/APKBUILD
+++ b/user/perl-exporter-lite/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-exporter-lite
-pkgver=0.08
+_pkgreal=Exporter-Lite
+_author=NEILB
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.09
pkgrel=0
pkgdesc="Lightweight exporting of Perl functions and variables"
url="https://metacpan.org/release/Exporter-Lite"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/N/NE/NEILB/Exporter-Lite-$pkgver.tar.gz"
-builddir="$srcdir/Exporter-Lite-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="8c6ff5a88c1b810d74156c5d84695cfde6f555e0fc663804123e2a96f5e2235a5adeebbf24b18301ed2c3fb57f76788ecfdf301b26263279e92a88a9143b8953 Exporter-Lite-0.08.tar.gz"
+sha512sums="fa540b0aba6178031d0448cdd92bdf21226facd0424ca00329eac8b93086f7e53b9f37daf52a53a74b65fa6afe2b2aa236165d4c44e96d63aad19e0764924f92 Exporter-Lite-0.09.tar.gz"
diff --git a/user/perl-exporter-tiny/APKBUILD b/user/perl-exporter-tiny/APKBUILD
index 7e06cb066..642b09476 100644
--- a/user/perl-exporter-tiny/APKBUILD
+++ b/user/perl-exporter-tiny/APKBUILD
@@ -1,33 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-exporter-tiny
-pkgver=1.002001
+_pkgreal=Exporter-Tiny
+_author=TOBYINK
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.006002
pkgrel=0
pkgdesc="Light-weight exporter with the features of Sub::Exporter"
url="https://metacpan.org/release/Exporter-Tiny"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+checkdepends="perl-test-warnings perl-test-fatal"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/T/TO/TOBYINK/Exporter-Tiny-$pkgver.tar.gz"
-sha512sums="b247e7785e02c3346f231736a430c2d54e5ac93c175892090c40121c86eb255ce4d138c65e31836fd2970b45fb71dc7e68ea3c45a06a9e9c4135b45df48621d8 Exporter-Tiny-1.002001.tar.gz"
-builddir="$srcdir/Exporter-Tiny-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
+sha512sums="684dc97d854686910928f413bd84df3e2d2b351c2304116d5c567ec74eb7384f4085881f2bdeaf96dcf9ade2a959076ebd2bde3977dd5b876f75daaf6ca9d763 Exporter-Tiny-1.006002.tar.gz"
diff --git a/user/perl-extutils-cbuilder/APKBUILD b/user/perl-extutils-cbuilder/APKBUILD
new file mode 100644
index 000000000..7d0d96517
--- /dev/null
+++ b/user/perl-extutils-cbuilder/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-extutils-cbuilder
+_pkgreal=ExtUtils-CBuilder
+_author=AMBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.280236
+pkgrel=0
+pkgdesc="Perl module for writing C code for Perl modules"
+url="https://metacpan.org/pod/ExtUtils::CBuilder"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/ExtUtils-CBuilder-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="5477d2e7c03195fd72f78528808d144701c5de2fb65b14c8b39ed62dd6274bd75b1208d443a075de23fae1f00b8dbf74cf882c85691ae88c592f9acb3627fb96 ExtUtils-CBuilder-0.280236.tar.gz"
diff --git a/user/perl-extutils-cchecker/APKBUILD b/user/perl-extutils-cchecker/APKBUILD
new file mode 100644
index 000000000..f9b5945b0
--- /dev/null
+++ b/user/perl-extutils-cchecker/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-extutils-cchecker
+_pkgreal=ExtUtils-CChecker
+_author=PEVANS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.11
+pkgrel=0
+pkgdesc="Configure-time utilities for checking C headers, libraries, or OS features"
+url="https://metacpan.org/pod/ExtUtils::CChecker"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+checkdepends="perl-test-fatal"
+makedepends="perl-module-build"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="4b638e5082443eafcf2f3586ec8ff20ee62b054f8bc24149dd7a2549f57ca748618f76c057f456eadca4e5c4099071ee2d1c8993a13e2f5ea8924cd92319dd8c ExtUtils-CChecker-0.11.tar.gz"
diff --git a/user/perl-extutils-cppguess/APKBUILD b/user/perl-extutils-cppguess/APKBUILD
new file mode 100644
index 000000000..653135d60
--- /dev/null
+++ b/user/perl-extutils-cppguess/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-extutils-cppguess
+_pkgreal=ExtUtils-CppGuess
+_author=ETJ
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.27
+pkgrel=1
+pkgdesc="Perl module for checking C++ compiler and flags"
+url="https://metacpan.org/pod/ExtUtils::CppGuess"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-capture-tiny perl-extutils-parsexs"
+makedepends="perl-dev perl-module-build perl-extutils-cbuilder"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz
+ fix.patch
+ "
+builddir="$srcdir/ExtUtils-CppGuess-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="289e38f3033b3072ff40dffdea8cb60bc9f91e426ff927de2e8499724cecb03f76c4740b2f868d6c55bf019c9e6eb1a5de20111591c7292e60765f65a249e60c ExtUtils-CppGuess-0.27.tar.gz
+d58f11f617021ff0783f615d5d777890ec379de6a9cb05ed271cae37529e63a7158be7aa83392d8882216971039941441f4d6d14e3155c7a51dd5e764f6c2976 fix.patch"
diff --git a/user/perl-extutils-cppguess/fix.patch b/user/perl-extutils-cppguess/fix.patch
new file mode 100644
index 000000000..13ddb2203
--- /dev/null
+++ b/user/perl-extutils-cppguess/fix.patch
@@ -0,0 +1,60 @@
+Fix MSVC detection. I don't know why I did this, either.
+
+Ref: #1174
+
+--- ExtUtils-CppGuess-0.27/lib/ExtUtils/CppGuess.pm.old 2023-11-19 13:19:51.000000000 -0600
++++ ExtUtils-CppGuess-0.27/lib/ExtUtils/CppGuess.pm 2024-07-10 11:26:59.221777726 -0500
+@@ -257,6 +257,12 @@
+ compiler_command => 'clang++',
+ extra_lflags => '-lc++',
+ );
++ } elsif ( $self->_cc_is_msvc( $c_compiler ) ) {
++ %guess = (
++ compiler_command => 'cl',
++ extra_cflags => '-TP -EHsc',
++ extra_lflags => 'msvcprt.lib',
++ );
+ } elsif( $self->_cc_is_sunstudio( $c_compiler ) ) {
+ %guess = (
+ compiler_command => 'CC',
+@@ -277,12 +283,6 @@
+ # Don't use -lstdc++ if Perl was linked with -static-libstdc++ (ActivePerl 5.18+ on Windows)
+ $guess{extra_lflags} = '-lstdc++'
+ unless ($self->_config->{ldflags} || '') =~ /static-libstdc\+\+/;
+- } elsif ( $self->_cc_is_msvc( $c_compiler ) ) {
+- %guess = (
+- compiler_command => 'cl',
+- extra_cflags => '-TP -EHsc',
+- extra_lflags => 'msvcprt.lib',
+- );
+ }
+ $guess{$ENV2VAL{$_}} = $ENV{$_} for grep defined $ENV{$_}, keys %ENV2VAL;
+ if (!%guess) {
+@@ -383,8 +383,12 @@
+
+ sub _cc_is_msvc {
+ my( $self, $cc ) = @_;
+- $self->{is_msvc}
+- = ($self->_os =~ /MSWin32/ and File::Basename::basename($cc) =~ /^cl/i);
++ $self->{is_msvc} = undef;
++ if (
++ ($self->_os =~ /MSWin32/ and File::Basename::basename($cc) =~ /^cl/i)
++ ) {
++ $self->{is_msvc} = 1;
++ }
+ return $self->{is_msvc};
+ }
+
+--- ExtUtils-CppGuess-0.27/t/002_icpp.t.old 2023-11-19 13:11:06.000000000 -0600
++++ ExtUtils-CppGuess-0.27/t/002_icpp.t 2024-07-10 11:27:48.506428703 -0500
+@@ -9,8 +9,8 @@
+ [
+ { os => 'MSWin32', cc => 'cl', config => {ccflags => ''} },
+ {
+- is_sunstudio => 0,
+- is_msvc => 1, is_gcc => 0, is_clang => 0,
++ is_sunstudio => undef,
++ is_msvc => 1, is_gcc => undef, is_clang => undef,
+ compiler_command => 'cl -TP -EHsc',
+ linker_flags => 'msvcprt.lib',
+ },
diff --git a/user/perl-extutils-depends/APKBUILD b/user/perl-extutils-depends/APKBUILD
index 84a2a30be..c45284811 100644
--- a/user/perl-extutils-depends/APKBUILD
+++ b/user/perl-extutils-depends/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-extutils-depends
-pkgver=0.8000
+_pkgreal=ExtUtils-Depends
+_author=XAOC
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.8001
pkgrel=0
pkgdesc="Easily build XS extensions that depend on XS extensions"
url="https://metacpan.org/release/ExtUtils-Depends"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl"
makedepends="perl-dev"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/X/XA/XAOC/ExtUtils-Depends-$pkgver.tar.gz"
-builddir="$srcdir/ExtUtils-Depends-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="c2823e48fc6ae42677da958d8cbeb561a29839cc387224ecd545e1d81979cd963377210f9c5a9bf314e2fc6e0907190f0b867ed59e91f8eab6df91f8d0c91e5d ExtUtils-Depends-0.8000.tar.gz"
+sha512sums="80141f90fbde7c62b192a55d40d26ce4e442150287ae6fe200388dc84cedba5f5210ee6cd9a40b1a9cda0cc49815b1ba1ab35e75afaa7440de3c3577d01bb733 ExtUtils-Depends-0.8001.tar.gz"
diff --git a/user/perl-extutils-parsexs/APKBUILD b/user/perl-extutils-parsexs/APKBUILD
new file mode 100644
index 000000000..c29e5e2ca
--- /dev/null
+++ b/user/perl-extutils-parsexs/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-extutils-parsexs
+_pkgreal=ExtUtils-ParseXS
+_author=LEONT
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=3.51
+pkgrel=0
+pkgdesc="Perl module for converting XS code into C"
+url="https://metacpan.org/pod/ExtUtils::ParseXS"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/ExtUtils-ParseXS-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="f8e3a064577b62ee17c4b55349c2044da7e4075cd6da20f7b2c6b92a8522209b594a0cecd0853744f15c4fc71cb9bc3d23f05511f84d2b15da05897a86d9f660 ExtUtils-ParseXS-3.51.tar.gz"
diff --git a/user/perl-extutils-pkgconfig/APKBUILD b/user/perl-extutils-pkgconfig/APKBUILD
index 97ab7001c..320f856d4 100644
--- a/user/perl-extutils-pkgconfig/APKBUILD
+++ b/user/perl-extutils-pkgconfig/APKBUILD
@@ -1,41 +1,32 @@
-# Automatically generated by apkbuild-cpan, template 1
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-extutils-pkgconfig
_pkgreal=ExtUtils-PkgConfig
+_author=XAOC
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.16
pkgrel=2
pkgdesc="Perl interface to pkg-config"
url="https://metacpan.org/release/ExtUtils-PkgConfig"
arch="noarch"
license="LGPL-2.1-only"
-cpandepends=""
-cpanmakedepends=""
-depends="$cpandepends"
-makedepends="perl-dev $cpanmakedepends"
+depends="perl"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="http://search.cpan.org/CPAN/authors/id/X/XA/XAOC/$_pkgreal-$pkgver.tar.gz"
+source="http://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
builddir="$srcdir/$_pkgreal-$pkgver"
-prepare() {
- cd "$builddir"
- export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
- PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
-}
-
build() {
- cd "$builddir"
- export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-feature-compat-class/APKBUILD b/user/perl-feature-compat-class/APKBUILD
new file mode 100644
index 000000000..89c19d141
--- /dev/null
+++ b/user/perl-feature-compat-class/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-feature-compat-class
+_pkgreal=Feature-Compat-Class
+_author=PEVANS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.06
+pkgrel=0
+pkgdesc="Perl module for providing class syntax and related keywords"
+url="https://metacpan.org/pod/Feature::Compat::Class"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-object-pad perl-xs-parse-keyword perl-xs-parse-sublike"
+checkdepends="perl-test-fatal"
+makedepends="perl-module-build"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/P/PE/PEVANS/Feature-Compat-Class-$pkgver.tar.gz"
+builddir="$srcdir/Feature-Compat-Class-$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="5b3c933923be62f82b84b5c6ffa5edeaf1e585ba8cf0d166d61eb177df3ec391a709ae1418eea57bac57e7f4be9bdb600998e035cef8b11baaa9e2a55cde07bc Feature-Compat-Class-0.06.tar.gz"
diff --git a/user/perl-feature-compat-try/APKBUILD b/user/perl-feature-compat-try/APKBUILD
new file mode 100644
index 000000000..80e822509
--- /dev/null
+++ b/user/perl-feature-compat-try/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-feature-compat-try
+_pkgreal=Feature-Compat-Try
+_author=PEVANS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.05
+pkgrel=0
+pkgdesc="An implementation of try/catch for Perl"
+url="https://metacpan.org/pod/Feature::Compat::Try"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl perl-syntax-keyword-try"
+checkdepends="perl-xs-parse-keyword"
+makedepends="perl-module-build"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="bf2c87bc29509e902ea4e27a22162efc58e93452a06483a19e17b70ee6db3e2407494209708dc84f2ef9080a91c374870de100cc42038683a4ae7891b07ab683 Feature-Compat-Try-0.05.tar.gz"
diff --git a/user/perl-file-basedir/APKBUILD b/user/perl-file-basedir/APKBUILD
index f1aede61d..071a784b3 100644
--- a/user/perl-file-basedir/APKBUILD
+++ b/user/perl-file-basedir/APKBUILD
@@ -1,35 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-file-basedir
-_pkgname=File-BaseDir
-pkgver=0.08
+_pkgreal=File-BaseDir
+_author=PLICEASE
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.09
pkgrel=0
pkgdesc="Base directory specification support for Perl"
url="https://metacpan.org/release/File-BaseDir"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-ipc-system-simple xdg-user-dirs"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-ipc-system-simple xdg-user-dirs"
checkdepends="perl-file-which"
makedepends="perl-dev perl-module-build"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/K/KI/KIMRYAN/File-BaseDir-$pkgver.tar.gz"
-builddir="$srcdir/File-BaseDir-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="6b44edca34906c34d574933c21c0e3a1a236a431a3ac12caeabcc2638688dfe1c02efc9a1e75a2c2cd522de0dca00df0620cd262c184ec938cc97766d1121f99 File-BaseDir-0.08.tar.gz"
+sha512sums="07b07f43bce392beda6ac10729925c3b6ad850f0af5485c3f540b72353a1e877e7e9b76580057197cf68864086f1a3d1f9459cfcf142f16772f48125426d72db File-BaseDir-0.09.tar.gz"
diff --git a/user/perl-file-chdir/APKBUILD b/user/perl-file-chdir/APKBUILD
new file mode 100644
index 000000000..bbd51e085
--- /dev/null
+++ b/user/perl-file-chdir/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-file-chdir
+_pkgreal=File-chdir
+_author=DAGOLDEN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.1011
+pkgrel=0
+pkgdesc="A more sensible way to change directories in Perl"
+url="https://metacpan.org/pod/File::chdir"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="249181e43faec925406b1fc86fc256afb27c588a4325122defd955f0f5c15c9d484f515841e6ebb3a643ce5e2a188338c88eee0df76a458aea4216c26bb7d6b7 File-chdir-0.1011.tar.gz"
diff --git a/user/perl-file-copy-recursive-reduced/APKBUILD b/user/perl-file-copy-recursive-reduced/APKBUILD
index 76e66d192..24c61fa54 100644
--- a/user/perl-file-copy-recursive-reduced/APKBUILD
+++ b/user/perl-file-copy-recursive-reduced/APKBUILD
@@ -1,35 +1,35 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-file-copy-recursive-reduced
-pkgver=0.006
+_pkgreal=File-Copy-Recursive-Reduced
+_author=JKEENAN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.007
pkgrel=0
pkgdesc="Recursive copying of files and directories within Perl 5 toolchain"
url="https://metacpan.org/pod/File::Copy::Recursive::Reduced"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl"
-makedepends="perl-dev"
checkdepends="perl-capture-tiny perl-path-tiny"
-install=""
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/J/JK/JKEENAN/File-Copy-Recursive-Reduced-$pkgver.tar.gz"
-builddir="$srcdir/File-Copy-Recursive-Reduced-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="7cf888b8c004d9430c87c1cceba25e997cb12974a79c3f4d803b11779abef81f5b686caac4c46a70caadb2eee12a71cb1fb87abfc7d5fec43dc37bbd2ef07694 File-Copy-Recursive-Reduced-0.006.tar.gz"
+sha512sums="7b2029acc3cd4cf5775df60b0d716da3868283bbce4bf4717dcd95fad112973ccd4df25ab88312d5a2a4f332399312d412bb2fd81245f843a619eae0ee5be085 File-Copy-Recursive-Reduced-0.007.tar.gz"
diff --git a/user/perl-file-copy-recursive/APKBUILD b/user/perl-file-copy-recursive/APKBUILD
index 882a25d2f..8abeb6647 100644
--- a/user/perl-file-copy-recursive/APKBUILD
+++ b/user/perl-file-copy-recursive/APKBUILD
@@ -1,35 +1,35 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-file-copy-recursive
-pkgver=0.44
+_pkgreal=File-Copy-Recursive
+_author=DMUEY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.45
pkgrel=0
pkgdesc="Perl extension for recursively copying files and directories"
url="https://metacpan.org/pod/File::Copy::Recursive"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl AND GPL-1.0+"
depends="perl"
-makedepends="perl-dev"
checkdepends="perl-test-fatal perl-test-warnings perl-path-tiny perl-test-deep perl-test-file"
-install=""
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DM/DMUEY/File-Copy-Recursive-$pkgver.tar.gz"
-builddir="$srcdir/File-Copy-Recursive-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="7599c48cee0b9848d5e275a1de00845cb2d4820eda9092d550063d4791974870129ce8d3d9337a8f7ea413ed4c21e533c2eb3134c2fcb5cc412dbbfddd2500e4 File-Copy-Recursive-0.44.tar.gz"
+sha512sums="6d8a6c55bc54bfe5ce3834527776c6b1466d5672f5f8901c27053188bbc78e87dd62bed8d330c04079b02d0967be0a8d0cd779e67973cf79a2c6ff87d5921c60 File-Copy-Recursive-0.45.tar.gz"
diff --git a/user/perl-file-desktopentry/APKBUILD b/user/perl-file-desktopentry/APKBUILD
index ed6e402c8..4a85395c6 100644
--- a/user/perl-file-desktopentry/APKBUILD
+++ b/user/perl-file-desktopentry/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-file-desktopentry
-_pkgname=File-DesktopEntry
+_pkgreal=File-DesktopEntry
+_author=MICHIELB
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.22
pkgrel=0
pkgdesc="Handle .desktop files from Perl"
url="https://metacpan.org/release/File-DesktopEntry"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-file-basedir perl-uri-escape"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-file-basedir perl-uri-escape"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/M/MI/MICHIELB/File-DesktopEntry-$pkgver.tar.gz"
-builddir="$srcdir/File-DesktopEntry-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-file-find-object-rule/APKBUILD b/user/perl-file-find-object-rule/APKBUILD
index 498f0358e..6b959faef 100644
--- a/user/perl-file-find-object-rule/APKBUILD
+++ b/user/perl-file-find-object-rule/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-file-find-object-rule
-pkgver=0.0310
+_pkgreal=File-Find-Object-Rule
+_author=SHLOMIF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.0313
pkgrel=0
pkgdesc="Alternative Perl interface to File::Find::Object"
url="https://metacpan.org/release/File-Find-Object-Rule"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends="perl-class-xsaccessor perl-file-find-object perl-number-compare
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-class-xsaccessor perl-file-find-object perl-number-compare
perl-text-glob"
makedepends="perl-dev perl-module-build"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/File-Find-Object-Rule-$pkgver.tar.gz"
-builddir="$srcdir/File-Find-Object-Rule-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
perl Build.PL installdirs=vendor
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="d77f600a43a45fddf84fd9689666fb90d3dc87fb444e575a111bcebec482d570201e591764513f345941983935f1761bf4e2704d1a70babd6b3ba12ba3d8a74d File-Find-Object-Rule-0.0310.tar.gz"
+sha512sums="cfcd4294e053609c9c6ce50c198ad61a7abb02a8755cef47014d39fdee84ef184e9817a0a9ee90d1beb1c81110a8de51ddba729fa13aeeee223d93faaac196e8 File-Find-Object-Rule-0.0313.tar.gz"
diff --git a/user/perl-file-find-object/APKBUILD b/user/perl-file-find-object/APKBUILD
index b404a5cac..6bbaf3c06 100644
--- a/user/perl-file-find-object/APKBUILD
+++ b/user/perl-file-find-object/APKBUILD
@@ -1,33 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-file-find-object
-pkgver=0.3.2
+_pkgreal=File-Find-Object
+_author=SHLOMIF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.3.8
pkgrel=0
pkgdesc="Object-oriented File::Find replacement for Perl"
url="https://metacpan.org/release/File-Find-Object"
arch="noarch"
license="Artistic-2.0"
-depends="perl-class-xsaccessor"
+depends="perl perl-class-xsaccessor perl-file-treecreate"
+checkdepends="perl-test-file"
makedepends="perl-dev perl-module-build"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/File-Find-Object-v$pkgver.tar.gz"
-builddir="$srcdir/File-Find-Object-v$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="58ca07083da520aee03945259ac89b6b584728d89ad52aea1a6f19a14da73fc92fcfc46c01656130d64fbc9fc9e4b1c5ef56274f30ebe3711972235dd8945956 File-Find-Object-v0.3.2.tar.gz"
+sha512sums="f3a00f6b8ec22e7a7361ef158a4c631e1c834e19fb672cf429bdcffb3d11b35aff94a07a73b1922a8f47bab90f3dbc64c39da7a8899df9337b062a430481827e File-Find-Object-0.3.8.tar.gz"
diff --git a/user/perl-file-finder/APKBUILD b/user/perl-file-finder/APKBUILD
index 83f2ada97..62822603e 100644
--- a/user/perl-file-finder/APKBUILD
+++ b/user/perl-file-finder/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-file-finder
+_pkgreal=File-Finder
+_author=MERLYN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.53
pkgrel=1
pkgdesc="Wrap Perl File::Find"
url="https://metacpan.org/release/File-Finder"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends="perl-text-glob"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-text-glob"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/M/ME/MERLYN/File-Finder-$pkgver.tar.gz
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz
fix-test.patch
"
-builddir="$srcdir/File-Finder-$pkgver"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-file-mimeinfo/APKBUILD b/user/perl-file-mimeinfo/APKBUILD
index f1f6f36f3..d06e075b4 100644
--- a/user/perl-file-mimeinfo/APKBUILD
+++ b/user/perl-file-mimeinfo/APKBUILD
@@ -1,35 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-file-mimeinfo
-_pkgname=File-MimeInfo
-pkgver=0.29
+_pkgreal=File-MimeInfo
+_author=MICHIELB
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.34
pkgrel=0
pkgdesc="Determine file types from Perl"
url="https://metacpan.org/release/File-MimeInfo"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-file-basedir perl-file-desktopentry perl-path-tiny
- shared-mime-info"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-encode-locale perl-file-basedir perl-file-desktopentry
+ perl-path-tiny shared-mime-info"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/M/MI/MICHIELB/File-MimeInfo-$pkgver.tar.gz"
-builddir="$srcdir/File-MimeInfo-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="3b012843a0934e2df78a28e52efec3cbe10b06fd2be7f3d63f64309752240af2e7ef9440a839aa170197f1037baee5fdcf1c1303fd57349841f37ee7001b68dd File-MimeInfo-0.29.tar.gz"
+sha512sums="5ce15976aa5ed59563ae64339aeefed426e97aa22448005e0dd50b8fee32237faafc59308cdad9d7eea6c3e3b58c41032d1f4fa670bc17d4ad58ca07743d015f File-MimeInfo-0.34.tar.gz"
diff --git a/user/perl-file-pushd/APKBUILD b/user/perl-file-pushd/APKBUILD
index e4c1bd0f4..d76e9029c 100644
--- a/user/perl-file-pushd/APKBUILD
+++ b/user/perl-file-pushd/APKBUILD
@@ -1,31 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-file-pushd
+_pkgreal=File-pushd
+_author=DAGOLDEN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.016
pkgrel=0
pkgdesc="Change directory temporarily in Perl for a limited scope"
url="https://metacpan.org/release/File-pushd"
arch="noarch"
license="Apache-2.0"
-depends=""
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DA/DAGOLDEN/File-pushd-$pkgver.tar.gz"
-builddir="$srcdir/File-pushd-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-file-sharedir-install/APKBUILD b/user/perl-file-sharedir-install/APKBUILD
index f2b567b5e..94cd53257 100644
--- a/user/perl-file-sharedir-install/APKBUILD
+++ b/user/perl-file-sharedir-install/APKBUILD
@@ -1,7 +1,11 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-file-sharedir-install
-pkgver=0.13
+_pkgreal=File-ShareDir-Install
+_author=ETHER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.14
pkgrel=0
pkgdesc="Install shared files"
url="https://metacpan.org/pod/File::ShareDir::Install"
@@ -9,26 +13,22 @@ arch="noarch"
license="GPL-1.0+ OR Artistic-1.0-Perl"
depends="perl"
makedepends="perl-dev"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/File-ShareDir-Install-$pkgver.tar.gz"
-builddir="$srcdir/File-ShareDir-Install-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="a119e38491fad8ae0ebd95913e3b608e09a2b99376a5160e75083a28abe4f83c4f6a36df216365527ff87bf8ec095254b16a2f6d2515c69f34609df8672605ca File-ShareDir-Install-0.13.tar.gz"
+sha512sums="92c1c3899bc58d3e1686fef775ac09e9aab7e3ce6b61d1a8e754127dc1f84627cf1e23e78a5d0042934e011685c0676c706ef7964778c06e073e8725155af34d File-ShareDir-Install-0.14.tar.gz"
diff --git a/user/perl-file-sharedir/APKBUILD b/user/perl-file-sharedir/APKBUILD
index 6c914ae59..4f48a1412 100644
--- a/user/perl-file-sharedir/APKBUILD
+++ b/user/perl-file-sharedir/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-file-sharedir
-_pkgname=File-ShareDir
-pkgver=1.116
+_pkgreal=File-ShareDir
+_author=REHSACK
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.118
pkgrel=0
pkgdesc="Locate files shared by Perl modules"
url="https://metacpan.org/release/File-ShareDir"
arch="noarch"
license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-class-inspector perl-file-sharedir-install perl-list-moreutils perl-params-util"
+depends="perl perl-class-inspector perl-file-sharedir-install
+ perl-list-moreutils perl-params-util"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RE/REHSACK/File-ShareDir-$pkgver.tar.gz"
-builddir="$srcdir/File-ShareDir-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="5fcd75254c446f02ee377e6b5848baad95c73779b8525b0ee1699fe675ddd2bd67d0dc057f47b0991ec136de16e06a4891a4b14a78bd96c3e2468640053bbe0e File-ShareDir-1.116.tar.gz"
+sha512sums="890f33e96333f7b07707d722e59e7da9a287112062814ef294594ac67f2f7349f905c009e6cd70d3af3a4de85335b074ec5a61194f9b0495f3e793d6ca635853 File-ShareDir-1.118.tar.gz"
diff --git a/user/perl-file-slurp/APKBUILD b/user/perl-file-slurp/APKBUILD
index cec87b5ac..cad85898a 100644
--- a/user/perl-file-slurp/APKBUILD
+++ b/user/perl-file-slurp/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-file-slurp
-pkgver=9999.27
+_pkgreal=File-Slurp
+_author=CAPOEIRAB
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=9999.32
pkgrel=0
pkgdesc="Simple and efficient file manipulation in Perl"
url="https://metacpan.org/release/File-Slurp"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-#source="https://cpan.metacpan.org/authors/id/U/UR/URI/File-Slurp-$pkgver.tar.gz"
-source="https://cpan.metacpan.org/authors/id/C/CA/CAPOEIRAB/File-Slurp-$pkgver.tar.gz"
-builddir="$srcdir/File-Slurp-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="24a5e2b93f7fda65cbdf0e54687de3af511cfd3909dcf4c79610882bf4f119afdf2bd60de28fcb8d9155b94a29ca4f901e28930a810949e490ba1c584d7a6ee0 File-Slurp-9999.27.tar.gz"
+sha512sums="413337e0257e95e8e8d2aabf684bec81e746000a741809935b058490b8c42b494064f724e618b250330d8bb67a0a7a2a5adad17e3e6c96d4b193531a192a4d56 File-Slurp-9999.32.tar.gz"
diff --git a/user/perl-file-slurper/APKBUILD b/user/perl-file-slurper/APKBUILD
index ae7fc93ec..fe7a16ee9 100644
--- a/user/perl-file-slurper/APKBUILD
+++ b/user/perl-file-slurper/APKBUILD
@@ -1,35 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-file-slurper
-_pkgname=File-Slurper
-pkgver=0.012
+_pkgreal=File-Slurper
+_author=LEONT
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.014
pkgrel=0
pkgdesc="Efficient file slurper for Perl"
url="https://metacpan.org/release/File-Slurper"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
checkdepends="perl-test-warnings"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/L/LE/LEONT/File-Slurper-$pkgver.tar.gz"
-builddir="$srcdir/File-Slurper-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="276b510c85b4e28fff4b8bd77c81031367b073426138743efb5d54fe01fa9825409f86090788779e96625b43207d1f864f348cc11554c51d36868dfed568f2bb File-Slurper-0.012.tar.gz"
+sha512sums="45474865b8c4a360ad04423c510c62f2a796081544499cf9ed335ffefe9d4087a844a1f988dfbd21b38237942eeead045923121e9786607c5270520b2b0af577 File-Slurper-0.014.tar.gz"
diff --git a/user/perl-file-treecreate/APKBUILD b/user/perl-file-treecreate/APKBUILD
new file mode 100644
index 000000000..9e972be1e
--- /dev/null
+++ b/user/perl-file-treecreate/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-file-treecreate
+_author=SHLOMIF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.0.1
+pkgrel=0
+pkgdesc="Perl module for recursively creating a directory tree"
+url="https://metacpan.org/pod/File::TreeCreate"
+arch="noarch"
+license="MIT"
+depends="perl-dev"
+makedepends="perl-module-build"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/File-TreeCreate-$pkgver.tar.gz"
+builddir="$srcdir/File-TreeCreate-$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="736c850db328b74d4ef4ea52e01e76d8e6473243b4676c59549904dc8c7ee486601d7512b3347f67f6e6ee3a7639a38edbe74198ec3526c6b94e1f2227ce524b File-TreeCreate-0.0.1.tar.gz"
diff --git a/user/perl-file-which/APKBUILD b/user/perl-file-which/APKBUILD
index 3bea85095..e827c9cf6 100644
--- a/user/perl-file-which/APKBUILD
+++ b/user/perl-file-which/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-file-which
-pkgver=1.23
+_pkgreal=File-Which
+_author=PLICEASE
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.27
pkgrel=0
pkgdesc="Perl implementation of the which(1) utility as an API"
url="https://metacpan.org/release/File-Which"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/P/PL/PLICEASE/File-Which-$pkgver.tar.gz"
-builddir="$srcdir/File-Which-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="73c48642f448abdab2a3cf39409db50bb311cbd7ea352f5dc70f6e97296d9b09ab7e1738482864aa7f7e300a8f74b19b7ca9949fe3102f61e08fe08c9be2a4ac File-Which-1.23.tar.gz"
+sha512sums="8a6164c4af915e93924b1d62864e492b1c5067856e505c50b9a5cce0600d73bdcda5f7e35a9f37134d9e89949b45bbd0a5426cb56121604aea1a3cfe48d55e5c File-Which-1.27.tar.gz"
diff --git a/user/perl-filesys-notify-simple/APKBUILD b/user/perl-filesys-notify-simple/APKBUILD
index 821374e2f..99bd79f45 100644
--- a/user/perl-filesys-notify-simple/APKBUILD
+++ b/user/perl-filesys-notify-simple/APKBUILD
@@ -1,35 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-filesys-notify-simple
-_pkgname=Filesys-Notify-Simple
-pkgver=0.13
+_pkgreal=Filesys-Notify-Simple
+_author=MIYAGAWA
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.14
pkgrel=0
pkgdesc="Simple file system watcher for Perl"
url="https://metacpan.org/release/Filesys-Notify-Simple"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
checkdepends="perl-test-sharedfork"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/Filesys-Notify-Simple-$pkgver.tar.gz"
-builddir="$srcdir/Filesys-Notify-Simple-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="e8c02428240687d34c7ade45a893baecdd6cfc77e4730d3fe07d2009c7ac441512c494cfd139002b7e49ae2b23cc6323da3903004262930adc89f21077960c88 Filesys-Notify-Simple-0.13.tar.gz"
+sha512sums="45fe097beb925e913af9c48704f5f550931c70673455258249127dff27abe1955e0e968f37c7c0f4c798a20be78b1055362c69ec2906e8e2633b21f68b198208 Filesys-Notify-Simple-0.14.tar.gz"
diff --git a/user/perl-font-afm/APKBUILD b/user/perl-font-afm/APKBUILD
index bfc94a47d..04c694b49 100644
--- a/user/perl-font-afm/APKBUILD
+++ b/user/perl-font-afm/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-font-afm
-_pkgname=Font-AFM
+_pkgreal=Font-AFM
+_author=GAAS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.20
pkgrel=0
pkgdesc="Adobe Font Metrics interface for Perl"
url="https://metacpan.org/release/Font-AFM"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/G/GA/GAAS/Font-AFM-$pkgver.tar.gz"
-builddir="$srcdir/Font-AFM-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-games-solitaire-verify/APKBUILD b/user/perl-games-solitaire-verify/APKBUILD
index 627484d38..c4536a148 100644
--- a/user/perl-games-solitaire-verify/APKBUILD
+++ b/user/perl-games-solitaire-verify/APKBUILD
@@ -1,35 +1,36 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-games-solitaire-verify
-pkgver=0.2000
+_pkgreal=Games-Solitaire-Verify
+_author=SHLOMIF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.2500
pkgrel=0
pkgdesc="Verify solutions to solitaire games"
url="https://metacpan.org/release/Games-Solitaire-Verify"
arch="noarch"
license="MIT"
-depends="perl-class-xsaccessor perl-exception-class perl-list-moreutils"
-makedepends="perl-dev perl-module-build"
+depends="perl-class-xsaccessor perl-dir-manifest perl-exception-class
+ perl-list-moreutils"
checkdepends="perl-test-differences perl-path-tiny"
+makedepends="perl-dev perl-module-build"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Games-Solitaire-Verify-$pkgver.tar.gz"
-builddir="$srcdir/Games-Solitaire-Verify-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
perl Build.PL installdirs=vendor
- export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="4abc5cd68bc57f96115a2f273aa16076b2f2ff50a597a8e1f4bf5b6f6dcb26771346d7cff3cadfc10eb1f8584c79141b06ecd6b07b6b19610405dc80977d9382 Games-Solitaire-Verify-0.2000.tar.gz"
+sha512sums="4ba898d4c4e159e887b4d52bedf35bf7e763dd754735eb3e8ecd9b3703f8e1bbf0c0987c75a842323e800b3671116afd6f1916a8fcd0f0cf5ea0bf43664e35d7 Games-Solitaire-Verify-0.2500.tar.gz"
diff --git a/user/perl-gd/APKBUILD b/user/perl-gd/APKBUILD
index 7f3867c54..74d4457f4 100644
--- a/user/perl-gd/APKBUILD
+++ b/user/perl-gd/APKBUILD
@@ -1,47 +1,37 @@
-# Automatically generated by apkbuild-cpan, template 1
# Contributor: Valery Kartel <valery.kartel@gmail.com>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-gd
_pkgreal=GD
-pkgver=2.71
+_author=RURBAN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.78
pkgrel=0
pkgdesc="Perl module for GD graphics library"
url="https://metacpan.org/release/GD"
arch="all"
-license="GPL-2.0-only OR Artistic-1.0-Perl"
-cpandepends=""
-cpanmakedepends="perl-extutils-pkgconfig"
-depends="$cpandepends"
-makedepends="perl-dev $cpanmakedepends freetype-dev libgd-dev libjpeg-turbo-dev
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+checkdepends="perl-test-nowarnings"
+makedepends="perl-dev perl-extutils-pkgconfig freetype-dev libgd-dev libjpeg-turbo-dev
libpng-dev libwebp-dev zlib-dev"
subpackages="$pkgname-doc"
-source="http://search.cpan.org/CPAN/authors/id/R/RU/RURBAN/$_pkgreal-$pkgver.tar.gz"
+source="http://search.cpan.org/CPAN/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
builddir="$srcdir/$_pkgreal-$pkgver"
-prepare() {
- cd "$builddir"
- if [ -e Build.PL ]; then
- perl Build.PL installdirs=vendor
- else
- PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
- fi
-}
-
build() {
- cd "$builddir"
- export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ export CFLAGS="$(perl -MConfig -E 'say $Config{ccflags}')"
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="3a1555f07e6ab36a7218f24853f4168914be45e8c19ab0fe971ab044725dc0d7efeca75be2e4408406e69601f07e047fd3ea157acc9b9d339c9917a1c3e1f74d GD-2.71.tar.gz"
+sha512sums="ef3df42c003f105fd1c313ea9e8b8b1e75912b4fdb274e73f2e4f5664a0adb8479a2e62fae5a493e37c36865f9dc37207d2d31e96316eb18a3c5384e07858591 GD-2.78.tar.gz"
diff --git a/user/perl-gdgraph/APKBUILD b/user/perl-gdgraph/APKBUILD
index ffde91d01..0b6270231 100644
--- a/user/perl-gdgraph/APKBUILD
+++ b/user/perl-gdgraph/APKBUILD
@@ -1,35 +1,36 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-gdgraph
-_pkgname=GDGraph
-pkgver=1.54
+_pkgreal=GDGraph
+_author=BPS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.56
pkgrel=0
pkgdesc="Produce charts from Perl using GD"
url="https://metacpan.org/release/GDGraph"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-gd perl-gdtextutil"
+options="!check" # testsuite exercises library rather than just itself
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-gd perl-gdtextutil"
checkdepends="perl-capture-tiny perl-test-exception"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RU/RUZ/GDGraph-$pkgver.tar.gz"
-builddir="$srcdir/GDGraph-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="0dd0da5fa0e879cf2addcbfdd02ee8e9e6af715b88b451dc29fe5028f30d7ba7fa0e126d07e7bb4f9a63e40b3be95a9cc0f6c061ea8644ba0ee7fdd2a7964fce GDGraph-1.54.tar.gz"
+sha512sums="4a336e02cf3ca75b41ccef42d8790b00d7ff60c63686f49c3b0d1fe8ff29ce76c52d4603f74c9b2704e1f1d2ca71f2313dcb692ae10261dbf8e0e05a7172dc71 GDGraph-1.56.tar.gz"
diff --git a/user/perl-gdtextutil/APKBUILD b/user/perl-gdtextutil/APKBUILD
index 81f2d34c5..f23059227 100644
--- a/user/perl-gdtextutil/APKBUILD
+++ b/user/perl-gdtextutil/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-gdtextutil
-_pkgname=GDTextUtil
+_pkgreal=GDTextUtil
+_author=MVERB
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.86
pkgrel=0
pkgdesc="Text utilities for use with GD's Perl interface"
url="https://metacpan.org/release/GDTextUtil"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-gd"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-gd"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/M/MV/MVERB/GDTextUtil-$pkgver.tar.gz"
-builddir="$srcdir/GDTextUtil-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-getopt-long-descriptive/APKBUILD b/user/perl-getopt-long-descriptive/APKBUILD
index 92fe31c60..5a42af4b8 100644
--- a/user/perl-getopt-long-descriptive/APKBUILD
+++ b/user/perl-getopt-long-descriptive/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-getopt-long-descriptive
-pkgver=0.103
+_pkgreal=Getopt-Long-Descriptive
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.114
pkgrel=0
pkgdesc="Simpler Perl implementation of Getopt::Long"
url="https://metacpan.org/release/Getopt-Long-Descriptive"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends="perl-params-validate perl-sub-exporter"
-makedepends="perl-dev"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-params-validate perl-sub-exporter"
checkdepends="perl-cpan-meta-check perl-test-fatal perl-test-warnings"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Getopt-Long-Descriptive-$pkgver.tar.gz"
-builddir="$srcdir/Getopt-Long-Descriptive-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="9229575bde794fa1213871fbb33a12222737d7979cf4c290200fd85c7da9e3227539809b8380a88a85675429ceb61e505bac8cc4e1408ca63ba92b4e1b33149f Getopt-Long-Descriptive-0.103.tar.gz"
+sha512sums="f7d640f0ecfc2619036f8df3e5e6a85334a814f05156e7b056cee3add372225898701c7772e7507bcf87174d6c2bf3a699fc3f924e7fdcc8837457598e35ef7a Getopt-Long-Descriptive-0.114.tar.gz"
diff --git a/user/perl-graphics-toolkit-color/APKBUILD b/user/perl-graphics-toolkit-color/APKBUILD
new file mode 100644
index 000000000..732247bae
--- /dev/null
+++ b/user/perl-graphics-toolkit-color/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-graphics-toolkit-color
+_pkgreal=Graphics-Toolkit-Color
+_author=LICHTKIND
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.71
+pkgrel=0
+pkgdesc="Color palette creation helper"
+url="https://metacpan.org/pod/Graphics::Toolkit::Color"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+checkdepends="perl-test-warn"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="77f694d9b384641792c5a368b7443495f2484eeef673dee1d1b0340a96d6259d87d427bc67934beaf31b1ce58d9346e7a77998b685897ba07fc83f5431ae70e7 Graphics-Toolkit-Color-1.71.tar.gz"
diff --git a/user/perl-hash-defhash/APKBUILD b/user/perl-hash-defhash/APKBUILD
new file mode 100644
index 000000000..a7b118c4d
--- /dev/null
+++ b/user/perl-hash-defhash/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-hash-defhash
+_pkgreal=Hash-DefHash
+_author=PERLANCAR
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.072
+pkgrel=0
+pkgdesc="Perl module for providing an OO interface to hashes"
+url="https://metacpan.org/pod/Hash::DefHash"
+arch="noarch"
+license="Artistic-2.0 OR GPL-1.0+"
+depends="perl perl-string-trim-more perl-regexp-pattern-defhash"
+checkdepends="perl-test-exception"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/Hash-DefHash-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="6dac91abd3d7c33e71a0cb54a41eee4d313fe57888c91825c7c2a4e6753c1ed0c0bb5d6def82534acb971a14dc641893ce0fc2a2e99c6e851b8fe1a750161c26 Hash-DefHash-0.072.tar.gz"
diff --git a/user/perl-hash-fieldhash/APKBUILD b/user/perl-hash-fieldhash/APKBUILD
new file mode 100644
index 000000000..d631e7ee7
--- /dev/null
+++ b/user/perl-hash-fieldhash/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-hash-fieldhash
+_pkgreal=Hash-FieldHash
+_author=GFUJI
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.15
+pkgrel=0
+pkgdesc="Lightweight fields for inside-out Perl objects"
+url="https://metacpan.org/pod/Hash::FieldHash"
+arch="all"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+checkdepends="perl-test-leaktrace"
+makedepends="perl-dev perl-module-build"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL5LIB="." perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+}
+
+sha512sums="2f42b0e7efdba03b99c9646882afc47130de1989777eb1ceaf8031769a3a11ebdaa841abedea8288b770aa27c44108846d0765f531a35d707e44a8c1f0f8036e Hash-FieldHash-0.15.tar.gz"
diff --git a/user/perl-hash-multivalue/APKBUILD b/user/perl-hash-multivalue/APKBUILD
index c1fa7dac2..697daf208 100644
--- a/user/perl-hash-multivalue/APKBUILD
+++ b/user/perl-hash-multivalue/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-hash-multivalue
-_pkgname=Hash-MultiValue
+_pkgreal=Hash-MultiValue
+_author=ARISTOTLE
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.16
pkgrel=0
pkgdesc="Multi-hash implementation for Perl"
url="https://metacpan.org/release/Hash-MultiValue"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/A/AR/ARISTOTLE/Hash-MultiValue-$pkgver.tar.gz"
-builddir="$srcdir/Hash-MultiValue-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-heap/APKBUILD b/user/perl-heap/APKBUILD
new file mode 100644
index 000000000..8d39e1833
--- /dev/null
+++ b/user/perl-heap/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-heap
+_pkgreal=Heap
+_author=JMM
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.80
+pkgrel=0
+pkgdesc="Perl extensions for keeping data partially sorted"
+url="https://metacpan.org/pod/Heap"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="133e2668a90de8cea13302464188415fa30e4a0a85fb51af7409ff2e3466e33a6daf172b2466f046c5275db6ab19bb573e8b2d14acf616b110bdd60869865690 Heap-0.80.tar.gz"
diff --git a/user/perl-html-formatter/APKBUILD b/user/perl-html-formatter/APKBUILD
index 9c0eb2b52..5ce565a09 100644
--- a/user/perl-html-formatter/APKBUILD
+++ b/user/perl-html-formatter/APKBUILD
@@ -1,33 +1,33 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-html-formatter
-_pkgname=HTML-Formatter
+_pkgreal=HTML-Formatter
+_author=NIGELM
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=2.16
pkgrel=0
pkgdesc="HTML formatters for Perl"
url="https://metacpan.org/release/HTML-Formatter"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-file-slurper perl-font-afm perl-html-tree"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-file-slurper perl-font-afm perl-html-tree"
checkdepends="perl-test-warnings"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/N/NI/NIGELM/HTML-Formatter-$pkgver.tar.gz"
-builddir="$srcdir/HTML-Formatter-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-html-formattext-withlinks/APKBUILD b/user/perl-html-formattext-withlinks/APKBUILD
index 472ccad5b..b876f9ecd 100644
--- a/user/perl-html-formattext-withlinks/APKBUILD
+++ b/user/perl-html-formattext-withlinks/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-html-formattext-withlinks
-_pkgname=HTML-FormatText-WithLinks
+_pkgreal=HTML-FormatText-WithLinks
+_author=STRUAN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.15
pkgrel=0
pkgdesc="Perl-based HTML-to-text converter with links as footnotes"
url="https://metacpan.org/release/HTML-FormatText-WithLinks"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-html-formatter perl-html-tree perl-uri"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-html-formatter perl-html-tree perl-uri"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/ST/STRUAN/HTML-FormatText-WithLinks-$pkgver.tar.gz"
-builddir="$srcdir/HTML-FormatText-WithLinks-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-html-scrubber/APKBUILD b/user/perl-html-scrubber/APKBUILD
index cbfd27679..a4f971aa2 100644
--- a/user/perl-html-scrubber/APKBUILD
+++ b/user/perl-html-scrubber/APKBUILD
@@ -1,35 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-html-scrubber
-_pkgname=HTML-Scrubber
-pkgver=0.17
+_pkgreal=HTML-Scrubber
+_author=NIGELM
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.19
pkgrel=0
pkgdesc="Perl HTML sanitiser"
url="https://metacpan.org/release/HTML-Scrubber"
arch="noarch"
-options="!check" # insane amount of test pods that no other module uses
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-html-parser"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-html-parser"
+checkdepends="perl-test-differences perl-test-memory-cycle"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/N/NI/NIGELM/HTML-Scrubber-$pkgver.tar.gz"
-builddir="$srcdir/HTML-Scrubber-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="d6e04374d4da390d22cc4d51bfe2910078effc30d6d2ddc36dbc1b94ada12333c2f9c7acb1f444f777f9e268aed90ba8ea15c4c74a8b5ab955fe97ef04469ba7 HTML-Scrubber-0.17.tar.gz"
+sha512sums="6894c58315f38e81d645b999cca180b1e86a64e8ae913df5891a6293c9c4950d99f1d1c5a03b7d584aff381afc49c16fe2e06541203c8dea881479cc981ee262 HTML-Scrubber-0.19.tar.gz"
diff --git a/user/perl-html-tree/APKBUILD b/user/perl-html-tree/APKBUILD
index d83f4dcf5..e7f6c29e3 100644
--- a/user/perl-html-tree/APKBUILD
+++ b/user/perl-html-tree/APKBUILD
@@ -1,33 +1,33 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-html-tree
-_pkgname=HTML-Tree
+_pkgreal=HTML-Tree
+_author=KENTNL
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=5.07
pkgrel=0
pkgdesc="DOM tree structure parser for Perl"
url="https://metacpan.org/release/HTML-Tree"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-html-parser"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-html-parser"
checkdepends="perl-test-fatal"
makedepends="perl-dev perl-module-build"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/K/KE/KENTNL/HTML-Tree-$pkgver.tar.gz"
-builddir="$srcdir/HTML-Tree-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs=vendor
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-http-entity-parser/APKBUILD b/user/perl-http-entity-parser/APKBUILD
index f42d3f7a5..d3df06b28 100644
--- a/user/perl-http-entity-parser/APKBUILD
+++ b/user/perl-http-entity-parser/APKBUILD
@@ -1,36 +1,36 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-http-entity-parser
-_pkgname=HTTP-Entity-Parser
-pkgver=0.21
+_pkgreal=HTTP-Entity-Parser
+_author=KAZEBURO
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.25
pkgrel=0
pkgdesc="PSGI compliant HTTP entity parser for Perl"
url="https://metacpan.org/release/HTTP-Entity-Parser"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-hash-multivalue perl-http-multipartparser perl-json-maybexs
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-hash-multivalue perl-http-multipartparser perl-json-maybexs
perl-stream-buffered perl-www-form-urlencoded"
checkdepends="perl-http-message"
makedepends="perl-dev perl-module-build-tiny"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/K/KA/KAZEBURO/HTTP-Entity-Parser-$pkgver.tar.gz"
-builddir="$srcdir/HTTP-Entity-Parser-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs=vendor
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="3852741017748205d9e030a6a42d5a949e3497c5e119713d81c9bf6ee42f9a0a822e65f4be9b8785840b6e81841c7715d34aabcb9b8d950611ce528f702fffd1 HTTP-Entity-Parser-0.21.tar.gz"
+sha512sums="760bff3ddd818ecb8eeeaee86c2d2bd895820b4011c306135b2d6eb3c2519322b3bd4e20098c9458c2fec7dd944384dcd33bfdd5b2d368a28270ac14e8dab54b HTTP-Entity-Parser-0.25.tar.gz"
diff --git a/user/perl-http-headers-fast/APKBUILD b/user/perl-http-headers-fast/APKBUILD
index ec547543e..6392aa00d 100644
--- a/user/perl-http-headers-fast/APKBUILD
+++ b/user/perl-http-headers-fast/APKBUILD
@@ -1,33 +1,33 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-http-headers-fast
-_pkgname=HTTP-Headers-Fast
+_pkgreal=HTTP-Headers-Fast
+_author=TOKUHIROM
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.22
pkgrel=0
pkgdesc="Fast HTTP header parsing for Perl"
url="https://metacpan.org/release/HTTP-Headers-Fast"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-http-date"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-http-date"
checkdepends="perl-test-requires perl-uri"
makedepends="perl-dev perl-module-build-tiny"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/T/TO/TOKUHIROM/HTTP-Headers-Fast-$pkgver.tar.gz"
-builddir="$srcdir/HTTP-Headers-Fast-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs=vendor
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-http-multipartparser/APKBUILD b/user/perl-http-multipartparser/APKBUILD
index cda615886..c32471140 100644
--- a/user/perl-http-multipartparser/APKBUILD
+++ b/user/perl-http-multipartparser/APKBUILD
@@ -1,33 +1,33 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-http-multipartparser
-_pkgname=HTTP-MultiPartParser
+_pkgreal=HTTP-MultiPartParser
+_author=CHANSEN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.02
pkgrel=0
pkgdesc="Perl module for parsing multi-part HTTP responses"
url="https://metacpan.org/release/HTTP-MultiPartParser"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
checkdepends="perl-test-deep"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/C/CH/CHANSEN/HTTP-MultiPartParser-$pkgver.tar.gz"
-builddir="$srcdir/HTTP-MultiPartParser-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-import-into/APKBUILD b/user/perl-import-into/APKBUILD
index 29ccfb837..164a9a92c 100644
--- a/user/perl-import-into/APKBUILD
+++ b/user/perl-import-into/APKBUILD
@@ -1,31 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-import-into
+_pkgreal=Import-Into
+_author=HAARG
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.002005
pkgrel=0
pkgdesc="Import Perl packages into other packages"
url="https://metacpan.org/release/Import-Into"
arch="noarch"
-license="Artistic-1.0-Perl"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl-module-runtime"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/H/HA/HAARG/Import-Into-$pkgver.tar.gz"
-builddir="$srcdir/Import-Into-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-importer/APKBUILD b/user/perl-importer/APKBUILD
new file mode 100644
index 000000000..acaa6b5ea
--- /dev/null
+++ b/user/perl-importer/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-importer
+_pkgreal=Importer
+_author=EXODIST
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.026
+pkgrel=0
+pkgdesc="Alternative interface to Perl's Exporter module"
+url="https://metacpan.org/pod/Importer"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="f6726b204ee358af00b5c72120bd2131ed575c100a9946b1772552e42b98f78dd38ffcc0119e2cdf721c39e2d83547bc5778adb61c5f84089caf11949c7ef045 Importer-0.026.tar.gz"
diff --git a/user/perl-indirect/APKBUILD b/user/perl-indirect/APKBUILD
new file mode 100644
index 000000000..035dc89c9
--- /dev/null
+++ b/user/perl-indirect/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-indirect
+_pkgreal=indirect
+_author=VPIT
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.39
+pkgrel=0
+pkgdesc="Perl module for lexically warning about indirect method calls"
+url="https://metacpan.org/release/indirect"
+arch="all"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev perl-extutils-depends"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="d3275a2cab2eeceef61756e08947d3072c0ce5cea2e8b70870c5fcbd9c63e56cf70568395002b7d02060cad3482f7f56723b1ad85fcf0a4c4ee2568b5035816c indirect-0.39.tar.gz"
diff --git a/user/perl-inline-c/APKBUILD b/user/perl-inline-c/APKBUILD
index 50d298bb0..72e487ba6 100644
--- a/user/perl-inline-c/APKBUILD
+++ b/user/perl-inline-c/APKBUILD
@@ -1,35 +1,35 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-inline-c
-pkgver=0.78
+_pkgreal=Inline-C
+_author=ETJ
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.82
pkgrel=0
-pkgdesc="C Language Support for Inline"
+pkgdesc="C language support for Inline"
url="https://metacpan.org/pod/Inline::C"
arch="noarch"
license="GPL-1.0+ OR Artistic-1.0-Perl"
depends="perl perl-inline perl-pegex perl-parse-recdescent"
-makedepends="perl-dev perl-file-sharedir-install"
checkdepends="perl-test-warn perl-yaml-libyaml perl-file-copy-recursive"
-install=""
+makedepends="perl-dev perl-file-sharedir-install"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/T/TI/TINITA/Inline-C-$pkgver.tar.gz"
-builddir="$srcdir/Inline-C-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="368e68dfb9f1700534d9b391090e340172e3adde5fe15576f883e9341047fec35cea8660751883b27e128ad91dda363d513547368097a989457d669bbbdc8ce4 Inline-C-0.78.tar.gz"
+sha512sums="1d1e91a63df12b4f3dc631fd1b66f9bd2e006b300002d9aa184ab571a128953722127400a39055d07ee630709f2a7c96dd35ad6e0860959cbb5a6fce3134b357 Inline-C-0.82.tar.gz"
diff --git a/user/perl-inline/APKBUILD b/user/perl-inline/APKBUILD
index c3343d150..d5924df93 100644
--- a/user/perl-inline/APKBUILD
+++ b/user/perl-inline/APKBUILD
@@ -1,35 +1,35 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-inline
-pkgver=0.82
+_pkgreal=Inline
+_author=INGY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.86
pkgrel=0
pkgdesc="Write Perl Subroutines in Other Programming Languages"
url="https://metacpan.org/pod/Inline"
arch="noarch"
license="GPL-1.0+ OR Artistic-1.0-Perl"
depends="perl"
-makedepends="perl-dev"
checkdepends="perl-test-warn"
-install=""
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/T/TI/TINITA/Inline-$pkgver.tar.gz"
-builddir="$srcdir/Inline-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="c53d8ae250e8463bd8973be96cf9bc70cc46fc937fb99990f4c1872c30411356f63ce785a10b55234e0d032a123a88c8192516ad9ad19ed50c0966b77669806a Inline-0.82.tar.gz"
+sha512sums="d7f5a15f66c686c89dbc0b6aa3e2496b939683befeb5033b242b4d5281cc1ed6bb5d7303f51059177e042d6fe8c903e4df535099b60eb16dbef431b50a179ac0 Inline-0.86.tar.gz"
diff --git a/user/perl-io-all/APKBUILD b/user/perl-io-all/APKBUILD
index bfa29c999..2b83c9bf2 100644
--- a/user/perl-io-all/APKBUILD
+++ b/user/perl-io-all/APKBUILD
@@ -1,31 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-io-all
+_pkgreal=IO-All
+_author=FREW
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.87
pkgrel=0
pkgdesc="Simple Perl module for all I/O needs"
url="https://metacpan.org/release/IO-All"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/F/FR/FREW/IO-All-$pkgver.tar.gz"
-builddir="$srcdir/IO-All-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-io-interactive/APKBUILD b/user/perl-io-interactive/APKBUILD
new file mode 100644
index 000000000..9306ad747
--- /dev/null
+++ b/user/perl-io-interactive/APKBUILD
@@ -0,0 +1,29 @@
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-io-interactive
+pkgver=1.025
+pkgrel=0
+pkgdesc="Utilities for interactive I/O"
+url="https://metacpan.org/pod/IO::Interactive"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/B/BD/BDFOY/IO-Interactive-$pkgver.tar.gz"
+builddir="$srcdir/IO-Interactive-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="b9aca9d3920ea256e5b2c3e19559e7626ab076b36b38b58eecf087d8a2614b805a0226246bf035eb41b801a0972dfb19e1c99d2f8105bd403db5017e84b6e2dc IO-Interactive-1.025.tar.gz"
diff --git a/user/perl-io-sessiondata/APKBUILD b/user/perl-io-sessiondata/APKBUILD
index 5016888b4..91850fe15 100644
--- a/user/perl-io-sessiondata/APKBUILD
+++ b/user/perl-io-sessiondata/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-io-sessiondata
-_pkgname=IO-SessionData
+_pkgreal=IO-SessionData
+_author=PHRED
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.03
pkgrel=0
pkgdesc="Support session data in Perl"
url="https://metacpan.org/release/IO-SessionData"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages=""
-source="https://cpan.metacpan.org/authors/id/P/PH/PHRED/IO-SessionData-$pkgver.tar.gz"
-builddir="$srcdir/IO-SessionData-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-io-stringy/APKBUILD b/user/perl-io-stringy/APKBUILD
index e5a271ac7..5b1dc26fb 100644
--- a/user/perl-io-stringy/APKBUILD
+++ b/user/perl-io-stringy/APKBUILD
@@ -1,41 +1,33 @@
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-io-stringy
-_pkgreal=IO-stringy
-pkgver=2.111
+_pkgreal=IO-Stringy
+_author=CAPOEIRAB
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.113
pkgrel=0
pkgdesc="I/O on in-core objects like strings and arrays"
url="https://metacpan.org/release/IO-stringy"
arch="noarch"
license="GPL-1.0+ OR Artistic-1.0-Perl"
-cpandepends=""
-cpanmakedepends=""
-depends="$cpandepends"
-makedepends="perl-dev $cpanmakedepends"
+depends="perl"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DS/DSKOLL/$_pkgreal-$pkgver.tar.gz"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
builddir="$srcdir/$_pkgreal-$pkgver"
-prepare() {
- cd "$builddir"
- export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
- PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
-}
-
build() {
- cd "$builddir"
- export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="9da8fb03945bc4a59cea3b3b2e22b15d56b133470e581d1cb03920bda2b4953e3c9e4a25d095ed8a384efb5a4c58db437c92cca6a81d583791191f1a37691a4a IO-stringy-2.111.tar.gz"
+sha512sums="5af104766c20b4336649dc4a19554ad204506c2476b4bf7d8ad7c2cfab15f0296efadb9019cd57e770a2a3c5f5686f7f010bddbd6efd51d300c54ca36286f094 IO-Stringy-2.113.tar.gz"
diff --git a/user/perl-io-tty/APKBUILD b/user/perl-io-tty/APKBUILD
index d42b831a2..b8e60082a 100644
--- a/user/perl-io-tty/APKBUILD
+++ b/user/perl-io-tty/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-io-tty
-pkgver=1.12
+_pkgreal=IO-Tty
+_author=TODDR
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.20
pkgrel=0
pkgdesc="Low-level allocate a pseudo-tty"
url="https://metacpan.org/pod/IO::Tty"
arch="all"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/T/TO/TODDR/IO-Tty-$pkgver.tar.gz"
-builddir="$srcdir/IO-Tty-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="23733e7832a0de370952420df8a781f85d28ff60eb4cd55be22147337bf5587f4e1ec7fcfc190ae3ad1fd9df0f9697f2d647e00739f4a2927b1ac9c81435454d IO-Tty-1.12.tar.gz"
+sha512sums="a411dcc3da4adf4913ceaca7d97198041c6870ac8b579a1d5c2517d984fab4cc8108962b23ee694da9e0c952f35d695e636ff35589873b95a86c2bf8c1838ee4 IO-Tty-1.20.tar.gz"
diff --git a/user/perl-ipc-run/APKBUILD b/user/perl-ipc-run/APKBUILD
index c78ee10fb..590b3b4d8 100644
--- a/user/perl-ipc-run/APKBUILD
+++ b/user/perl-ipc-run/APKBUILD
@@ -1,7 +1,11 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-ipc-run
-pkgver=20180523.0
+_pkgreal=IPC-Run
+_author=TODDR
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=20231003.0
pkgrel=0
pkgdesc="system() and background procs w/ piping, redirs, ptys"
url="https://metacpan.org/pod/IPC::Run"
@@ -9,26 +13,22 @@ arch="noarch"
license="GPL-1.0+ OR Artistic-1.0-Perl"
depends="perl"
makedepends="perl-dev"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/T/TO/TODDR/IPC-Run-$pkgver.tar.gz"
-builddir="$srcdir/IPC-Run-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="e9d97cbec9f2607d1a89c1a06bd166ae2f030157f201e870df3b88b9f0b915b06a4b0db05b7f50daa4883de255e29c6898b1f9964d706739d4bf7034b53d7f89 IPC-Run-20180523.0.tar.gz"
+sha512sums="81b94715e61f2a302ba4cfbd03f6af14ab66d438dfdf58187ccf8b0f7ff562fd343ef560ad48dad8118342dd493530560ac89beca6de2818663d556d18feff90 IPC-Run-20231003.0.tar.gz"
diff --git a/user/perl-ipc-run3/APKBUILD b/user/perl-ipc-run3/APKBUILD
deleted file mode 100644
index 9abe68fb1..000000000
--- a/user/perl-ipc-run3/APKBUILD
+++ /dev/null
@@ -1,33 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
-pkgname=perl-ipc-run3
-pkgver=0.048
-pkgrel=0
-pkgdesc="Run a subprocess from Perl with I/O redirection"
-url="https://metacpan.org/release/IPC-Run3"
-arch="noarch"
-license="GPL-1.0+ OR BSD-2-Clause OR Artistic-1.0-Perl OR Artistic-2.0"
-depends=""
-makedepends="perl-dev"
-subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/IPC-Run3-$pkgver.tar.gz"
-builddir="$srcdir/IPC-Run3-$pkgver"
-
-build() {
- cd "$builddir"
- PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
- make
-}
-
-check() {
- cd "$builddir"
- make test
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
- find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
-}
-
-sha512sums="50432850d8dccd2e59aa6684d34f3e3242fd7df3eb4d9a5eb02dae389aa46b5fd68cc54114a157c3fe99956e68e74d575ab3db5009b7bf7d5c325f1f109b1262 IPC-Run3-0.048.tar.gz"
diff --git a/user/perl-ipc-system-simple/APKBUILD b/user/perl-ipc-system-simple/APKBUILD
index 938924620..9613f2c13 100644
--- a/user/perl-ipc-system-simple/APKBUILD
+++ b/user/perl-ipc-system-simple/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-ipc-system-simple
-pkgver=1.25
+_pkgreal=IPC-System-Simple
+_author=JKEENAN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.30
pkgrel=0
pkgdesc="Run commands from Perl with detailed diagnostics"
url="https://metacpan.org/release/IPC-System-Simple"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/P/PJ/PJF/IPC-System-Simple-$pkgver.tar.gz"
-builddir="$srcdir/IPC-System-Simple-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="fda275786605eb80acaa6062cc51c32aa0e84f150e7ca7afcfe874f088ce7b8f9a97669e91bec24fdb05426db8b0f05552aa8853e44b08996e625281d1892f72 IPC-System-Simple-1.25.tar.gz"
+sha512sums="82937df80ae38a9c21e43e256a21cdac1482d4a069eae282043d676ece06251a7139b752cd2b379a0f69ea9209ddd075607da86c6cb9b25f19cf90d91c28d72f IPC-System-Simple-1.30.tar.gz"
diff --git a/user/perl-json-rpc/APKBUILD b/user/perl-json-rpc/APKBUILD
index 7815c031b..7ffbe7d49 100644
--- a/user/perl-json-rpc/APKBUILD
+++ b/user/perl-json-rpc/APKBUILD
@@ -1,33 +1,33 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-json-rpc
-_pkgname=JSON-RPC
+_pkgreal=JSON-RPC
+_author=DMAKI
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.06
pkgrel=0
pkgdesc="Perl JSON RPC 2.0 server implementation"
url="https://metacpan.org/release/JSON-RPC"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-cgi perl-class-accessor-lite perl-json perl-libwww perl-plack
- perl-router-simple"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-cgi perl-class-accessor-lite perl-json perl-libwww
+ perl-plack perl-router-simple"
makedepends="perl-dev perl-module-build"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DM/DMAKI/JSON-RPC-$pkgver.tar.gz"
-builddir="$srcdir/JSON-RPC-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
perl Build.PL installdirs=vendor
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-json-xs/APKBUILD b/user/perl-json-xs/APKBUILD
index cd09f8f87..e3552f1f6 100644
--- a/user/perl-json-xs/APKBUILD
+++ b/user/perl-json-xs/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-json-xs
-pkgver=4.02
+_pkgreal=JSON-XS
+_author=MLEHMANN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=4.03
pkgrel=0
pkgdesc="JSON serialising/deserialising, done correctly and fast"
url="https://metacpan.org/pod/JSON::XS"
arch="all"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl perl-common-sense perl-types-serialiser"
makedepends="perl-dev perl-canary-stability"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/M/ML/MLEHMANN/JSON-XS-$pkgver.tar.gz"
-builddir="$srcdir/JSON-XS-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="4a8fdf8d81cdd6e38c3c5672621d38ef6f63a09ca3a74e98fbb21e679273c347d2a3b8c2233c8e813987d2728081fb535223ea3f705d33a7016b76d0e76ffd61 JSON-XS-4.02.tar.gz"
+sha512sums="7d2c20302b0f98bd69e692b61d272b58c13a79741f3e2e44ee0530e21dd239526477f8b02e4afbfe41ee83cb69ab1c5247bf0be355f3f09e9cfe31b2ea4a5155 JSON-XS-4.03.tar.gz"
diff --git a/user/perl-lib-relative/APKBUILD b/user/perl-lib-relative/APKBUILD
index b717ab88f..74582c8b8 100644
--- a/user/perl-lib-relative/APKBUILD
+++ b/user/perl-lib-relative/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-lib-relative
-pkgver=1.000
+_pkgreal=lib-relative
+_author=DBOOK
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.002
pkgrel=0
pkgdesc="Add paths relative to the current file to Perl @INC"
url="https://metacpan.org/release/lib-relative"
arch="noarch"
license="Artistic-2.0"
-depends=""
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DB/DBOOK/lib-relative-$pkgver.tar.gz"
-builddir="$srcdir/lib-relative-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="1b4de00abe4ba5190259414123d8cbdde9bf43a525a32d7ef07f7faa3a88ed9d40babbec6f3c49a0a3550c63ffb8cbf79b0c7a6204568549d30145bbd02f8a55 lib-relative-1.000.tar.gz"
+sha512sums="af015fb454636d40c6364aa898d316387481f08bd5b2b0ff0c2acc1646f38f8766c39249179df59d97f3d4211d952c8acf659b9fc087d89606293d36f1998693 lib-relative-1.002.tar.gz"
diff --git a/user/perl-list-compare/APKBUILD b/user/perl-list-compare/APKBUILD
index 611b3efb3..74d9881ea 100644
--- a/user/perl-list-compare/APKBUILD
+++ b/user/perl-list-compare/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-list-compare
-pkgver=0.53
+_pkgreal=List-Compare
+_author=JKEENAN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.55
pkgrel=0
pkgdesc="Compare elements of two or more Perl lists"
url="https://metacpan.org/release/List-Compare"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-capture-tiny"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/J/JK/JKEENAN/List-Compare-$pkgver.tar.gz"
-builddir="$srcdir/List-Compare-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="b467e9395afa8297f5f59d745d22048373cfd60dc0c8ce56d0ad95e8f9fddcda487d99c906b9fb5ac1b28aa53873a7c9689347866c3aa907aecd31b4a127627a List-Compare-0.53.tar.gz"
+sha512sums="0f7e2325449298940f14b369b0c82c326c6e596123939285b8e7cce9cc36e8a78620eb4ff96594c55c26c1acecb46966d4d40eb5f591e76798614257c300d705 List-Compare-0.55.tar.gz"
diff --git a/user/perl-list-moreutils-xs/APKBUILD b/user/perl-list-moreutils-xs/APKBUILD
index 73f3454a8..1a5973e7e 100644
--- a/user/perl-list-moreutils-xs/APKBUILD
+++ b/user/perl-list-moreutils-xs/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-list-moreutils-xs
-pkgver=0.428
+_pkgreal=List-MoreUtils-XS
+_author=REHSACK
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.430
pkgrel=0
pkgdesc="Provide the stuff missing in List::Util in XS"
url="https://metacpan.org/release/List-MoreUtils-XS"
arch="all"
license="Apache-2.0"
-depends=""
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RE/REHSACK/List-MoreUtils-XS-$pkgver.tar.gz"
-builddir="$srcdir/List-MoreUtils-XS-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="a608568e3c4a2e160e4f9afa26640be5b97ec83e301a6b81849e37951698b9423c0a969d7e8797a49b4fb6c5123780630a3726c64713922b90b21b947682c3dd List-MoreUtils-XS-0.428.tar.gz"
+sha512sums="98260b81f03a425bf8c2e0b63bc3a8d360a0aa2e198b2b7faaeaa48684936183018afdd1e6a04bd7e99a7e728d809709c6206ea578dfe7d8d40c5a4e3e4bb405 List-MoreUtils-XS-0.430.tar.gz"
diff --git a/user/perl-list-moreutils/APKBUILD b/user/perl-list-moreutils/APKBUILD
index 7f20abe32..3af8ad9cc 100644
--- a/user/perl-list-moreutils/APKBUILD
+++ b/user/perl-list-moreutils/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-list-moreutils
-pkgver=0.428
+_pkgreal=List-MoreUtils
+_author=REHSACK
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.430
pkgrel=0
pkgdesc="Provide the stuff missing in List::Util"
url="https://metacpan.org/release/List-MoreUtils"
arch="noarch"
license="Apache-2.0"
-depends="perl-exporter-tiny"
+depends="perl perl-exporter-tiny"
makedepends="perl-dev perl-list-moreutils-xs"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RE/REHSACK/List-MoreUtils-$pkgver.tar.gz"
-builddir="$srcdir/List-MoreUtils-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="f7e11f10f1d7bd3b8f9f8bc2fc325e1a9230056f68591da624aed01fb4e4cbac20caeae0c3e2aa3acc8b71febd6d4149284367f051d3c1e608e3a4ca8b62dbd8 List-MoreUtils-0.428.tar.gz"
+sha512sums="bc9ff033c12251a6f0899a96da0ec8fc314ddb8d6cdf18c37fe1fdcfc38a4c95ed6f8e006bb124e77d07241ae6754f429bc2041f7772b4acfce9378a21283469 List-MoreUtils-0.430.tar.gz"
diff --git a/user/perl-list-someutils-xs/APKBUILD b/user/perl-list-someutils-xs/APKBUILD
index 55e736bbe..a6c499ce0 100644
--- a/user/perl-list-someutils-xs/APKBUILD
+++ b/user/perl-list-someutils-xs/APKBUILD
@@ -1,6 +1,10 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-list-someutils-xs
+_pkgreal=List-SomeUtils-XS
+_author=DROLSKY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.58
pkgrel=0
pkgdesc="XS implementation of Perl List::SomeUtils"
@@ -8,25 +12,22 @@ url="https://metacpan.org/release/List-SomeUtils-XS"
arch="all"
license="Artistic-2.0"
depends=""
-makedepends="perl-dev"
checkdepends="perl-test-leaktrace perl-test-warnings"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/List-SomeUtils-XS-$pkgver.tar.gz"
-builddir="$srcdir/List-SomeUtils-XS-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-list-someutils/APKBUILD b/user/perl-list-someutils/APKBUILD
index 80a5e64ee..21c05ad79 100644
--- a/user/perl-list-someutils/APKBUILD
+++ b/user/perl-list-someutils/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-list-someutils
-pkgver=0.56
+_pkgreal=List-SomeUtils
+_author=DROLSKY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.59
pkgrel=0
pkgdesc="Provide the stuff missing in Perl's List::Util module"
url="https://metacpan.org/release/List-SomeUtils"
arch="noarch"
-license="Artistic-1.0-Perl"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl-list-someutils-xs perl-module-implementation"
-makedepends="perl-dev"
checkdepends="perl-test-leaktrace"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/List-SomeUtils-$pkgver.tar.gz"
-builddir="$srcdir/List-SomeUtils-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="b74c2a97811185d21bfd68fe60606afe8e92c266e98a763d51589021c9b3ae5310275005dc80198b8f9d92118fed569b5251d5ad87643f47af75a478db388503 List-SomeUtils-0.56.tar.gz"
+sha512sums="e8120f3231ae91ec1d60a90281bca6d109fc0df0d98ddb45528fcac186854acb7e5805f77c0cbca589ff0e0f2ecb5eac1a86d10be52e9a4902f59f84fd0a3d79 List-SomeUtils-0.59.tar.gz"
diff --git a/user/perl-list-utilsby/APKBUILD b/user/perl-list-utilsby/APKBUILD
new file mode 100644
index 000000000..9d7b09291
--- /dev/null
+++ b/user/perl-list-utilsby/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-list-utilsby
+_pkgreal=List-UtilsBy
+_author=PEVANS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.12
+pkgrel=0
+pkgdesc="Higher-order list utility functions for Perl"
+url="https://metacpan.org/pod/List::UtilsBy"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+makedepends="perl-module-build"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="8be14ef99a49f3e6ff524d08244522a8724857f7aa7af70db4475befcfc7ab34c75041942ef7c737565567c7f578a0d8ecdde1a61d193572e0010838fb1db0de List-UtilsBy-0.12.tar.gz"
diff --git a/user/perl-log-any-adapter-screen/APKBUILD b/user/perl-log-any-adapter-screen/APKBUILD
new file mode 100644
index 000000000..40a7a5672
--- /dev/null
+++ b/user/perl-log-any-adapter-screen/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-log-any-adapter-screen
+_pkgreal=Log-Any-Adapter-Screen
+_author=PERLANCAR
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.141
+pkgrel=0
+pkgdesc="Perl module for logging to GNU screen"
+url="https://metacpan.org/pod/Log::Any::Adapter::Screen"
+arch="noarch"
+license="Artistic-2.0 OR GPL-1.0+"
+depends="perl perl-log-any screen"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/Log-Any-Adapter-Screen-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="825a3b71bf418c3f79723e96fb5db985182cf054fb07517bc4e1e2594efbfff37f94f3ca69e122b818feb6f8b5e6eca8fdb63b7997cf54a9ce099cce5d096471 Log-Any-Adapter-Screen-0.141.tar.gz"
diff --git a/user/perl-log-any/APKBUILD b/user/perl-log-any/APKBUILD
index 8b0e5a88d..5281776e8 100644
--- a/user/perl-log-any/APKBUILD
+++ b/user/perl-log-any/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-log-any
-pkgver=1.707
+_pkgreal=Log-Any
+_author=PREACTION
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.717
pkgrel=0
pkgdesc="Bring Perl loggers and listeners together"
url="https://metacpan.org/release/Log-Any"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/P/PR/PREACTION/Log-Any-$pkgver.tar.gz"
-builddir="$srcdir/Log-Any-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="b5fc37130b3bb07c9fac896c539657fffad2e80c2055a09816e133e48f3f5db9a3b896ea11bf087b5fe6844a72fb6189656a3033c7761c00f471282747e1c290 Log-Any-1.707.tar.gz"
+sha512sums="feabda26eefebd7fe63ba63750b11e00f217778f0fa801adf3b52342400155230b620b3f2b08630e4b472a328a6c13a84294d35c52968f2fc1206b61fee0d20e Log-Any-1.717.tar.gz"
diff --git a/user/perl-lwp-protocol-https/APKBUILD b/user/perl-lwp-protocol-https/APKBUILD
index ccd4d42fc..495af6396 100644
--- a/user/perl-lwp-protocol-https/APKBUILD
+++ b/user/perl-lwp-protocol-https/APKBUILD
@@ -1,35 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-lwp-protocol-https
-_pkgname=LWP-Protocol-https
-pkgver=6.07
+_pkgreal=LWP-Protocol-https
+_author=OALDERS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=6.13
pkgrel=0
pkgdesc="HTTPS support for Perl LWP"
url="https://metacpan.org/release/LWP-Protocol-https"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-io-socket-ssl perl-libwww perl-mozilla-ca perl-net-http"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-io-socket-ssl perl-libwww perl-mozilla-ca perl-net-http"
checkdepends="perl-test-requiresinternet"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/O/OA/OALDERS/LWP-Protocol-https-$pkgver.tar.gz"
-builddir="$srcdir/LWP-Protocol-https-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="4a07cd8a1c44e31781069a632a77f3af43747933420e831b4fd4a12faac7dc04f0c6b10ea773c3e14ecb66209a547b3587c0e3f481a55b9929db65f7b10343aa LWP-Protocol-https-6.07.tar.gz"
+sha512sums="d80dd4e6395fd254d3365f159a4a9eb8e184e3a8be650e721b5136f912235d9d06505c39eb7ad393ce8da027d44da3e06ad8635a5bee6a06a4af8176f5c2ca92 LWP-Protocol-https-6.13.tar.gz"
diff --git a/user/perl-math-random-isaac/APKBUILD b/user/perl-math-random-isaac/APKBUILD
index fe0543c74..53e482dcb 100644
--- a/user/perl-math-random-isaac/APKBUILD
+++ b/user/perl-math-random-isaac/APKBUILD
@@ -1,33 +1,33 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-math-random-isaac
-_pkgname=Math-Random-ISAAC
+_pkgreal=Math-Random-ISAAC
+_author=JAWNSY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.004
pkgrel=0
pkgdesc="Perl interface to the ISAAC PRNG algorithm"
url="https://metacpan.org/release/Math-Random-ISAAC"
arch="noarch"
license="Public-Domain"
-depends=""
+depends="perl"
checkdepends="perl-test-nowarnings"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/J/JA/JAWNSY/Math-Random-ISAAC-$pkgver.tar.gz"
-builddir="$srcdir/Math-Random-ISAAC-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-mime-types/APKBUILD b/user/perl-mime-types/APKBUILD
index 56e6c0faf..4f5f94cd2 100644
--- a/user/perl-mime-types/APKBUILD
+++ b/user/perl-mime-types/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-mime-types
-_pkgname=MIME-Types
-pkgver=2.17
+_pkgreal=MIME-Types
+_author=MARKOV
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.26
pkgrel=0
pkgdesc="Definition of MIME types for Perl"
url="https://metacpan.org/release/MIME-Types"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/M/MA/MARKOV/MIME-Types-$pkgver.tar.gz"
-builddir="$srcdir/MIME-Types-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="a834ddfa70fbaa5688a2a35626c489a48448e273638312609faaa8fbf07ba656254d1f907ba5f25518e93fd62b7b9265eec700c38c8446876dca24e07d8b15c4 MIME-Types-2.17.tar.gz"
+sha512sums="cde3a8c6cbde16143732cf2ac4d648eff167917970357daf0162370cbba375b2aa546af472a73b2a4b26086919ddcc49bd9da999251946a40aee8abb60af2d75 MIME-Types-2.26.tar.gz"
diff --git a/user/perl-mixin-linewise/APKBUILD b/user/perl-mixin-linewise/APKBUILD
index 7c6a5339f..536b5defd 100644
--- a/user/perl-mixin-linewise/APKBUILD
+++ b/user/perl-mixin-linewise/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-mixin-linewise
-pkgver=0.108
+_pkgreal=Mixin-Linewise
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.111
pkgrel=0
pkgdesc="Line-wise reader and writer for Perl strings"
url="https://metacpan.org/release/Mixin-Linewise"
arch="noarch"
-license="Artistic-1.0-Perl"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl-perlio-utf8_strict perl-sub-exporter"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Mixin-Linewise-$pkgver.tar.gz"
-builddir="$srcdir/Mixin-Linewise-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="2789126737e2798a94ab6d90614503717dbc6c4178d19a9dd1e32689869e8e1298ec168fd6ab53580e65b5ad7ff94e065dca4afb7b71c2bb453810da61d29450 Mixin-Linewise-0.108.tar.gz"
+sha512sums="282c9bbb825ee05f1d916fdfb1caad6c04a917a26c10ae18dc9883706e612915186c49a96209af254329f346bc731547a20ff2db136f0ceaf1edd5d21b120195 Mixin-Linewise-0.111.tar.gz"
diff --git a/user/perl-module-build-xsutil/APKBUILD b/user/perl-module-build-xsutil/APKBUILD
index 80d03b9ed..c7d519f0c 100644
--- a/user/perl-module-build-xsutil/APKBUILD
+++ b/user/perl-module-build-xsutil/APKBUILD
@@ -1,37 +1,33 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-module-build-xsutil
+_pkgreal=Module-Build-XSUtil
+_author=HIDEAKIO
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.19
pkgrel=0
pkgdesc="A Module::Build class for building XS modules"
url="https://metacpan.org/pod/Module::Build::XSUtil"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl perl-module-build perl-devel-checkcompiler"
-makedepends="perl-dev"
checkdepends="perl-capture-tiny perl-cwd-guard perl-file-copy-recursive-reduced"
-install=""
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/H/HI/HIDEAKIO/Module-Build-XSUtil-$pkgver.tar.gz"
-builddir="$srcdir/Module-Build-XSUtil-$pkgver"
-
-prepare() {
- cd "$builddir"
- perl Build.PL installdirs=vendor
-}
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
+ perl Build.PL installdirs=vendor
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-module-implementation/APKBUILD b/user/perl-module-implementation/APKBUILD
index d64f1a35d..05f05ae2d 100644
--- a/user/perl-module-implementation/APKBUILD
+++ b/user/perl-module-implementation/APKBUILD
@@ -1,32 +1,33 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-module-implementation
+_pkgreal=Module-Implementation
+_author=DROLSKY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.09
pkgrel=0
pkgdesc="Loads an underlying implementation of a Perl module"
url="https://metacpan.org/release/Module-Implementation"
arch="noarch"
license="Artistic-2.0"
-depends="perl-module-runtime perl-try-tiny"
-makedepends="perl-dev"
+depends="perl perl-module-runtime perl-try-tiny"
checkdepends="perl-test-fatal perl-test-requires"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Module-Implementation-$pkgver.tar.gz"
-builddir="$srcdir/Module-Implementation-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-module-pluggable/APKBUILD b/user/perl-module-pluggable/APKBUILD
index e12ff2718..24f8ad898 100644
--- a/user/perl-module-pluggable/APKBUILD
+++ b/user/perl-module-pluggable/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-module-pluggable
-_pkgname=Module-Pluggable
+_pkgreal=Module-Pluggable
+_author=SIMONW
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=5.2
pkgrel=0
pkgdesc="Add plugin support to Perl modules"
url="https://metacpan.org/release/Module-Pluggable"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SI/SIMONW/Module-Pluggable-$pkgver.tar.gz"
-builddir="$srcdir/Module-Pluggable-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-module-runtime-conflicts/APKBUILD b/user/perl-module-runtime-conflicts/APKBUILD
index 2fdca3cf1..9144d0964 100644
--- a/user/perl-module-runtime-conflicts/APKBUILD
+++ b/user/perl-module-runtime-conflicts/APKBUILD
@@ -1,31 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-module-runtime-conflicts
+_pkgreal=Module-Runtime-Conflicts
+_author=ETHER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.003
pkgrel=0
pkgdesc="Provides information on conflicts for Module::Runtime"
url="https://metacpan.org/release/Module-Runtime-Conflicts"
arch="noarch"
-license="Artistic-1.0-Perl"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl-dist-checkconflicts perl-module-runtime"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Module-Runtime-Conflicts-$pkgver.tar.gz"
-builddir="$srcdir/Module-Runtime-Conflicts-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-module-runtime/APKBUILD b/user/perl-module-runtime/APKBUILD
index 0430740c3..ba36b42c9 100644
--- a/user/perl-module-runtime/APKBUILD
+++ b/user/perl-module-runtime/APKBUILD
@@ -1,33 +1,33 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-module-runtime
+_pkgreal=Module-Runtime
+_author=ZEFRAM
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.016
pkgrel=0
pkgdesc="Runtime module handling"
url="https://metacpan.org/pod/Module::Runtime"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl"
-makedepends="perl-dev"
checkdepends="perl-test-pod perl-test-pod-coverage"
-install=""
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/Z/ZE/ZEFRAM/Module-Runtime-$pkgver.tar.gz"
-builddir="$srcdir/Module-Runtime-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-moo/APKBUILD b/user/perl-moo/APKBUILD
index 6e419cac2..2731ec9ea 100644
--- a/user/perl-moo/APKBUILD
+++ b/user/perl-moo/APKBUILD
@@ -1,36 +1,36 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-moo
-pkgver=2.003004
+_pkgreal=Moo
+_author=HAARG
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.005005
pkgrel=0
pkgdesc="Minimalist Object Orientation (with Moose compatibility)"
url="https://metacpan.org/pod/Moo"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl perl-module-runtime perl-devel-globaldestruction perl-class-method-modifiers
perl-sub-quote perl-role-tiny"
-makedepends="perl-dev"
checkdepends="perl-test-fatal"
-install=""
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/H/HA/HAARG/Moo-$pkgver.tar.gz"
-builddir="$srcdir/Moo-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="686996e4dd0238cff7483e4e06db5439660e390c67e65ace67c3fd0b05ade379a168d36ae649812c8a5e2b715eefea7cb17e5db323a0cd31b90667d8954eb38a Moo-2.003004.tar.gz"
+sha512sums="e6b6cc491bb55ab0a7a57418d210da52990e8aa559fcf83c25838624caa0de1c919a229bab2b9c7e7c99cc9904706b64db169860d2c404449731e400ea1c5f79 Moo-2.005005.tar.gz"
diff --git a/user/perl-moose/APKBUILD b/user/perl-moose/APKBUILD
index 74ebadf6b..3436200f2 100644
--- a/user/perl-moose/APKBUILD
+++ b/user/perl-moose/APKBUILD
@@ -1,40 +1,42 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-moose
-pkgver=2.2011
+_pkgreal=Moose
+_author=ETHER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.2207
pkgrel=0
pkgdesc="A postmodern object system for Perl 5"
url="https://metacpan.org/release/Moose"
arch="all"
-license="Artistic-1.0-Perl"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl-class-load perl-class-load-xs perl-data-optlist
perl-devel-globaldestruction perl-devel-overloadinfo
perl-devel-stacktrace perl-eval-closure perl-module-runtime
perl-module-runtime-conflicts perl-mro-compat
perl-package-deprecationmanager perl-params-util perl-sub-exporter
perl-sub-identify perl-sub-name perl-try-tiny"
+checkdepends="perl-cpan-meta-check perl-dist-checkconflicts perl-scalar-list-utils
+ perl-test-output perl-test-cleannamespaces perl-test-fatal
+ perl-test-requires perl-test-needs"
makedepends="perl-dev"
-checkdepends="perl-cpan-meta-check perl-dist-checkconflicts
- perl-test-cleannamespaces perl-test-fatal perl-test-requires"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Moose-$pkgver.tar.gz"
-builddir="$srcdir/Moose-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="f94ed23c45a860b9afa8defe7f5067a65fdd9d457d94a85e4ea192640d09ad73bc336a2e54c4c663643ec0efa32872f4b2aa69083e99093e420cecf5430f34a3 Moose-2.2011.tar.gz"
+sha512sums="bc0efe3b9c7fea8ef6bb2976d2ec677250f998b3d8513a7fca59a10291f8ff5f13dd5e1d49d036071d93b5caa19685b704ef3588aa9307cda40ec5ba15b6985a Moose-2.2207.tar.gz"
diff --git a/user/perl-moosex-getopt/APKBUILD b/user/perl-moosex-getopt/APKBUILD
index 4669063ec..da5c1f753 100644
--- a/user/perl-moosex-getopt/APKBUILD
+++ b/user/perl-moosex-getopt/APKBUILD
@@ -1,36 +1,37 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-moosex-getopt
-pkgver=0.74
+_pkgreal=MooseX-Getopt
+_author=ETHER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.76
pkgrel=0
pkgdesc="Perl Moose role for processing command line arguments"
url="https://metacpan.org/release/MooseX-Getopt"
arch="noarch"
-license="Artistic-1.0-Perl"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl-getopt-long-descriptive perl-moose perl-moosex-role-parameterised
- perl-namespace-autoclean perl-try-tiny"
-makedepends="perl-dev perl-module-build-tiny"
+ perl-namespace-autoclean perl-try-tiny perl"
checkdepends="perl-moosex-strictconstructor perl-path-tiny perl-test-deep
perl-test-fatal perl-test-needs perl-test-trap perl-test-warnings"
+makedepends="perl-dev perl-module-build-tiny"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/MooseX-Getopt-$pkgver.tar.gz"
-builddir="$srcdir/MooseX-Getopt-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_FALLBACK_SILENCE_WARNING=1 PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="3b7ea4f75192c62936f7838809a4a3facc4ccc38fb9db5affd46d07273ac1ffadd5ddb0882fe5d29870bf4b8c816916febdc3748747223c837fc87c65faa60ac MooseX-Getopt-0.74.tar.gz"
+sha512sums="96a0bae5d538b4e54a824e2e21e8dedb05e3a30d0de30e85bf3aedb9da45ab5a1859177a562ea838f786e25c50ab63236b27f75077388103af23ef954e1c89f8 MooseX-Getopt-0.76.tar.gz"
diff --git a/user/perl-moosex-role-parameterised/APKBUILD b/user/perl-moosex-role-parameterised/APKBUILD
index de3680532..ba1f32d22 100644
--- a/user/perl-moosex-role-parameterised/APKBUILD
+++ b/user/perl-moosex-role-parameterised/APKBUILD
@@ -1,35 +1,38 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-moosex-role-parameterised
-pkgver=1.10
+_pkgreal=MooseX-Role-Parameterized
+_author=ETHER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.11
pkgrel=0
pkgdesc="Perl Moose roles with composition parameters"
url="https://metacpan.org/release/MooseX-Role-Parameterized"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends="perl-module-runtime perl-moose perl-namespace-autoclean perl-namespace-clean"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-module-runtime perl-moose perl-namespace-autoclean
+ perl-namespace-clean"
+checkdepends="perl-cpan-meta-check perl-dist-checkconflicts perl-test-fatal
+ perl-test-needs perl-test-requires"
makedepends="perl-dev perl-module-build-tiny"
-checkdepends="perl-cpan-meta-check perl-dist-checkconflicts perl-test-fatal perl-test-requires"
provides="perl-moosex-role-parameterized=$pkgver-r$pkgrel"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/MooseX-Role-Parameterized-$pkgver.tar.gz"
-builddir="$srcdir/MooseX-Role-Parameterized-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="10f6b51dd6e09c30e36496469c4a213e0ab6d12529e0b91161f680ae595b312e9dbff035d6c8a2d10dbff7fa55cf7ca6b53cd66b848f75f7e6ac43b6e6eb9e84 MooseX-Role-Parameterized-1.10.tar.gz"
+sha512sums="7442a10f1593cecfcb01e93f314bcb6ebe95b4b9710262ef5dc7d8065ae118a96e0abbbc9f7b8986c33185a8b8aec60cf8639c0fd6eee4fb94f2e33d95eb7ed9 MooseX-Role-Parameterized-1.11.tar.gz"
diff --git a/user/perl-moosex-strictconstructor/APKBUILD b/user/perl-moosex-strictconstructor/APKBUILD
index 964414d4a..ff1932c3f 100644
--- a/user/perl-moosex-strictconstructor/APKBUILD
+++ b/user/perl-moosex-strictconstructor/APKBUILD
@@ -1,32 +1,33 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-moosex-strictconstructor
+_pkgreal=MooseX-StrictConstructor
+_author=DROLSKY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.21
pkgrel=0
pkgdesc="Ensure unknown attributes passed to Perl Moose ctors are errors"
url="https://metacpan.org/release/MooseX-StrictConstructor"
arch="noarch"
license="Artistic-2.0"
-depends="perl-moose perl-namespace-autoclean"
-makedepends="perl-dev"
+depends="perl perl-moose perl-namespace-autoclean"
checkdepends="perl-moo perl-test-fatal perl-test-needs"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/MooseX-StrictConstructor-$pkgver.tar.gz"
-builddir="$srcdir/MooseX-StrictConstructor-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-moox-late/APKBUILD b/user/perl-moox-late/APKBUILD
index f9360c17f..0f9f236b3 100644
--- a/user/perl-moox-late/APKBUILD
+++ b/user/perl-moox-late/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-moox-late
-pkgver=0.015
+_pkgreal=MooX-late
+_author=TOBYINK
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.100
pkgrel=0
pkgdesc="Translate Moose code into Moo"
url="https://metacpan.org/release/MooX-late"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends="perl-moo perl-type-tiny"
-makedepends="perl-dev"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl-moo perl-type-tiny perl-sub-handlesvia"
checkdepends="perl-test-fatal perl-test-requires"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/T/TO/TOBYINK/MooX-late-$pkgver.tar.gz"
-builddir="$srcdir/MooX-late-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="4d685f4e68abe10487a98def8f0e7b0bafbd9928af27e61a5ac410bcafa9833a4aebdc8cd5bdbebd1a6ee53b4b0d5ae9bfa3864cae428b21c926730365fefb6d MooX-late-0.015.tar.gz"
+sha512sums="69450edbe7b2192094608a3ec543348d87223c9a124b86dc04a1cdf74b697adb331e5e1498533a557e5d4eded374770086d6696bdda597afe924520cad0c229c MooX-late-0.100.tar.gz"
diff --git a/user/perl-moox-struct/APKBUILD b/user/perl-moox-struct/APKBUILD
new file mode 100644
index 000000000..bc003aabd
--- /dev/null
+++ b/user/perl-moox-struct/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-moox-struct
+_pkgreal=MooX-Struct
+_author=TOBYINK
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.020
+pkgrel=0
+pkgdesc="Structures for the Moo Perl object framework"
+url="https://metacpan.org/pod/MooX::Struct"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-moo perl-namespace-autoclean perl-object-id perl-type-tiny"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/MooX-Struct-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="a9a14efee9db43b39df02b452aed7f558360812c28581cc245ed8eea68fc328b40fee6a9c8949851048ee6fff3ec9aa99beb5ab63845f9bcb83d9c9d1c7e712e MooX-Struct-0.020.tar.gz"
diff --git a/user/perl-moox-types-mooselike/APKBUILD b/user/perl-moox-types-mooselike/APKBUILD
index 4a8989583..124ef8610 100644
--- a/user/perl-moox-types-mooselike/APKBUILD
+++ b/user/perl-moox-types-mooselike/APKBUILD
@@ -1,33 +1,33 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-moox-types-mooselike
-_pkgname=MooX-Types-MooseLike
+_pkgreal=MooX-Types-MooseLike
+_author=MATEU
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.29
pkgrel=0
pkgdesc="Moose-like types for Perl Moo"
url="https://metacpan.org/release/MooX-Types-MooseLike"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-module-runtime perl-moo"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-module-runtime perl-moo"
checkdepends="perl-test-fatal"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/M/MA/MATEU/MooX-Types-MooseLike-$pkgver.tar.gz"
-builddir="$srcdir/MooX-Types-MooseLike-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-moox/APKBUILD b/user/perl-moox/APKBUILD
index 73cb7d290..0a1c23660 100644
--- a/user/perl-moox/APKBUILD
+++ b/user/perl-moox/APKBUILD
@@ -1,31 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-moox
+_pkgreal=MooX
+_author=GETTY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.101
pkgrel=0
pkgdesc="Perl module for using Moo and MooX:: lazily"
url="https://metacpan.org/release/MooX"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends="perl-data-optlist perl-import-into perl-module-runtime perl-moo"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-data-optlist perl-import-into perl-module-runtime perl-moo"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/G/GE/GETTY/MooX-$pkgver.tar.gz"
-builddir="$srcdir/MooX-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-mouse/APKBUILD b/user/perl-mouse/APKBUILD
index d89d9c3b3..7956d5886 100644
--- a/user/perl-mouse/APKBUILD
+++ b/user/perl-mouse/APKBUILD
@@ -1,40 +1,37 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-mouse
-pkgver=2.5.6
+_pkgreal=Mouse
+_author=SKAJI
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.5.10
pkgrel=0
pkgdesc="Moose minus the antlers"
url="https://metacpan.org/pod/Mouse"
arch="all"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl"
+checkdepends="perl-test-exception perl-test-fatal perl-test-leaktrace
+ perl-test-output perl-test-requires perl-try-tiny"
makedepends="perl-dev perl-module-build-xsutil"
-checkdepends="perl-test-exception perl-test-fatal perl-test-leaktrace perl-test-output perl-test-requires perl-try-tiny"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SK/SKAJI/Mouse-v$pkgver.tar.gz"
-builddir="$srcdir/Mouse-v$pkgver"
-
-prepare() {
- cd "$builddir"
- perl Build.PL installdirs=vendor
-}
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-v$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-v$pkgver"
build() {
- cd "$builddir"
+ perl Build.PL installdirs=vendor
./Build
}
check() {
# most, but not all functionality is tested
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="1f29430badec842c1b3aa5a8a4c4ad785cf26d2e6cc745da82c0fa667b19da0b9e6c364e10ef615fbc03f60cb5020f079113b470162d095d8c514e6cb9ce96e3 Mouse-v2.5.6.tar.gz"
+sha512sums="949a2f18257a5afcf4dbbb84094974f4d80e1e4531b4b9d8618cf141252fd11b09b79daafe1de79faa620905988f649627bc2fceac357ea2f180db74cd48f711 Mouse-v2.5.10.tar.gz"
diff --git a/user/perl-mousex-nativetraits/APKBUILD b/user/perl-mousex-nativetraits/APKBUILD
index 34cd187bc..c784ee1ac 100644
--- a/user/perl-mousex-nativetraits/APKBUILD
+++ b/user/perl-mousex-nativetraits/APKBUILD
@@ -1,33 +1,33 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-mousex-nativetraits
+_pkgreal=MouseX-NativeTraits
+_author=GFUJI
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.09
pkgrel=0
pkgdesc="Extend your attribute interfaces"
url="https://metacpan.org/pod/MouseX::NativeTraits"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl perl-mouse"
makedepends="perl-dev perl-module-install"
checkdepends="perl-test-fatal perl-any-moose"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/G/GF/GFUJI/MouseX-NativeTraits-$pkgver.tar.gz"
-builddir="$srcdir/MouseX-NativeTraits-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-mozilla-ca/APKBUILD b/user/perl-mozilla-ca/APKBUILD
index dc3153400..d41c37392 100644
--- a/user/perl-mozilla-ca/APKBUILD
+++ b/user/perl-mozilla-ca/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-mozilla-ca
-_pkgname=Mozilla-CA
-pkgver=20180117
+_pkgreal=Mozilla-CA
+_author=LWP
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=20231213
pkgrel=0
pkgdesc="Mozilla's CA certificate bundle for Perl"
url="https://metacpan.org/release/Mozilla-CA"
arch="noarch"
license="MPL-2.0-only"
-depends=""
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/A/AB/ABH/Mozilla-CA-$pkgver.tar.gz"
-builddir="$srcdir/Mozilla-CA-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="8b4187f47638ba8d670b3f5cafc1de4040dfec1dde6a932411c79b41a8a454bcd3b66f9818c6d28135e29551ce93bc3ddb61e648c7810b30cb147ea0beaaedba Mozilla-CA-20180117.tar.gz"
+sha512sums="888c0847d4911348a775a25a0cb4609176d521a24e7f4dabe75bad9f286ca1cae9a79e52a4cacab529e306df699937059442cd77e0f560a8e0e731ca25c2e61c Mozilla-CA-20231213.tar.gz"
diff --git a/user/perl-mro-compat/APKBUILD b/user/perl-mro-compat/APKBUILD
index bdd0e6b96..c0a0a6aea 100644
--- a/user/perl-mro-compat/APKBUILD
+++ b/user/perl-mro-compat/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-mro-compat
-pkgver=0.13
+_pkgreal=MRO-Compat
+_author=HAARG
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.15
pkgrel=0
pkgdesc="mro::* interface compatibility for older Perl"
url="https://metacpan.org/release/MRO-Compat"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/H/HA/HAARG/MRO-Compat-$pkgver.tar.gz"
-builddir="$srcdir/MRO-Compat-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="3311c37c8fc73acaf68bae2b12315a448a87de8f756e817c967cf49b753cf218e8c762ecc44890297afd82193d71b2407060db0bc70720d228b31c0a30de10c1 MRO-Compat-0.13.tar.gz"
+sha512sums="0767ea5e98414ce55607c599eecde686fe2defed99ade156ce8db63e508bfcd150aea48952eed7624f969c0ca185652a85eedb8dbcae82b826152d18d4152545 MRO-Compat-0.15.tar.gz"
diff --git a/user/perl-multidimensional/APKBUILD b/user/perl-multidimensional/APKBUILD
new file mode 100644
index 000000000..5076fab02
--- /dev/null
+++ b/user/perl-multidimensional/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-multidimensional
+_pkgreal=multidimensional
+_author=ILMARI
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.014
+pkgrel=0
+pkgdesc="Perl module for disabling multidimensional array emulation"
+url="https://metacpan.org/pod/multidimensional"
+arch="all"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-b-hooks-op-check perl-dev perl-extutils-depends"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="94c9dabb3023165a8dd140ef791e4aab980e3b604eae06ed0e29290aab67a9302f2cde4c8b394de0b4c55c5f78ce4510db902d615d665bf60b12ec409f341043 multidimensional-0.014.tar.gz"
diff --git a/user/perl-namespace-autoclean/APKBUILD b/user/perl-namespace-autoclean/APKBUILD
index 77163cc96..268e7ebb5 100644
--- a/user/perl-namespace-autoclean/APKBUILD
+++ b/user/perl-namespace-autoclean/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-namespace-autoclean
-pkgver=0.28
+_pkgreal=namespace-autoclean
+_author=ETHER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.29
pkgrel=0
pkgdesc="Keep imports out of your Perl namespace"
url="https://metacpan.org/release/namespace-autoclean"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends="perl-b-hooks-endofscope perl-namespace-clean perl-sub-identify"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-b-hooks-endofscope perl-namespace-clean perl-sub-identify"
+checkdepends="perl-moo perl-moose perl-mouse perl-test-requires perl-test-needs"
makedepends="perl-dev"
-checkdepends="perl-moo perl-moose perl-mouse perl-test-requires"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/namespace-autoclean-$pkgver.tar.gz"
-builddir="$srcdir/namespace-autoclean-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="2541f69862b334fcfe30059d025668175de1b182a5c8ee8f2619bf1d661c316a38fe2014f274bb23e887cd36959f98abb297154ac8ceb600e2e93cbd4a75e28d namespace-autoclean-0.28.tar.gz"
+sha512sums="64dee8009c8ab587c1aef504c0b429248a9069e6cfbfcb4062b83ddf56c82121be66f821013f3251e6863935429e0663aec82202352904983db600a79348732c namespace-autoclean-0.29.tar.gz"
diff --git a/user/perl-namespace-clean/APKBUILD b/user/perl-namespace-clean/APKBUILD
index 7c4d0ba43..4503ae652 100644
--- a/user/perl-namespace-clean/APKBUILD
+++ b/user/perl-namespace-clean/APKBUILD
@@ -1,31 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-namespace-clean
+_pkgreal=namespace-clean
+_author=RIBASUSHI
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.27
pkgrel=0
pkgdesc="Keep imports and functions out of your Perl namespace"
url="https://metacpan.org/release/namespace-clean"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends="perl-b-hooks-endofscope perl-package-stash"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-b-hooks-endofscope perl-package-stash"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RI/RIBASUSHI/namespace-clean-$pkgver.tar.gz"
-builddir="$srcdir/namespace-clean-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-net-dbus/APKBUILD b/user/perl-net-dbus/APKBUILD
new file mode 100644
index 000000000..10f897361
--- /dev/null
+++ b/user/perl-net-dbus/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-net-dbus
+_pkgreal=Net-DBus
+_author=DANBERR
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.2.0
+pkgrel=0
+pkgdesc="Perl interface for dbus"
+url="https://metacpan.org/release/Net-DBus"
+arch="all"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl perl-xml-twig"
+checkdepends="perl-cpan-changes perl-test-pod perl-test-pod-coverage"
+makedepends="dbus-dev perl-dev perl-extutils-pkgconfig"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="9dc95288ae81037985020e18db33331de6908b1280fc3b0ca898c183a5b577d21d240f4f1045393f9459a9be6e3425feffa9ea581e6af2bcf165cdf48348b255 Net-DBus-1.2.0.tar.gz"
diff --git a/user/perl-net-snmp/APKBUILD b/user/perl-net-snmp/APKBUILD
index 112d786d7..d1e5f69f9 100644
--- a/user/perl-net-snmp/APKBUILD
+++ b/user/perl-net-snmp/APKBUILD
@@ -1,38 +1,32 @@
-# Automatically generated by apkbuild-cpan, template 1
-# Contributor: Kiyoshi Aman <kiyoshi.aman@gmail.com>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-net-snmp
_pkgreal=Net-SNMP
+_author=DTOWN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=6.0.1
pkgrel=3
pkgdesc="Object oriented interface to SNMP"
url="https://metacpan.org/release/Net-SNMP"
arch="noarch"
-license="GPL-2.0-only OR Artistic-1.0-Perl"
-depends="perl-crypt-des perl-crypt-rijndael perl-digest-hmac perl-digest-sha1"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl perl-crypt-des perl-crypt-rijndael perl-digest-hmac perl-digest-sha1"
makedepends="perl-dev perl-module-build"
subpackages="$pkgname-doc"
-source="https://search.cpan.org/CPAN/authors/id/D/DT/DTOWN/$_pkgreal-v$pkgver.tar.gz"
+source="https://search.cpan.org/CPAN/authors/id/$_a/$_au/$_author/$_pkgreal-v$pkgver.tar.gz"
builddir="$srcdir/$_pkgreal-v$pkgver"
-prepare() {
- cd "$builddir"
- perl Build.PL installdirs=vendor
-}
-
build() {
- cd "$builddir"
- export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ perl Build.PL installdirs=vendor
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-number-compare/APKBUILD b/user/perl-number-compare/APKBUILD
index c88666cc0..04b090389 100644
--- a/user/perl-number-compare/APKBUILD
+++ b/user/perl-number-compare/APKBUILD
@@ -1,31 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-number-compare
+_pkgreal=Number-Compare
+_author=RCLAMP
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.03
pkgrel=0
pkgdesc="Numeric comparisons for Perl"
url="https://metacpan.org/release/Number-Compare"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RC/RCLAMP/Number-Compare-$pkgver.tar.gz"
-builddir="$srcdir/Number-Compare-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-number-range/APKBUILD b/user/perl-number-range/APKBUILD
new file mode 100644
index 000000000..712fd1e56
--- /dev/null
+++ b/user/perl-number-range/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-number-range
+_pkgreal=Number-Range
+_author=LARRYSH
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.12
+pkgrel=0
+pkgdesc="Perl module for working with number ranges"
+url="https://metacpan.org/pod/Number::Range"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="d5c2ed41f2eb6caa013d10f4cad295b73157323fcb0496c4e10f4673507965f65f18433d5f4b03e8180fa2108b7e87cf0e23255c493431b5ddeb49562ed997d8 Number-Range-0.12.tar.gz"
diff --git a/user/perl-object-id/APKBUILD b/user/perl-object-id/APKBUILD
new file mode 100644
index 000000000..dfe698967
--- /dev/null
+++ b/user/perl-object-id/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-object-id
+_pkgreal=Object-ID
+_author=MSCHWERN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.1.2
+pkgrel=0
+pkgdesc="Unique identifiers for Perl objects"
+url="https://metacpan.org/pod/Object::ID"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-module-build perl-hash-fieldhash perl-data-uuid
+ perl-sub-name"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-v$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-v$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="ac43a0c1d5b789052f4740a9dc726ef8bf197d88f1a6410ad98c7d8d5371c0419d763578f19a418bdd81c8c19f8ea43a461c6bbad31a7971d13f0452b48fb206 Object-ID-v0.1.2.tar.gz"
diff --git a/user/perl-object-pad/APKBUILD b/user/perl-object-pad/APKBUILD
new file mode 100644
index 000000000..6bec77d7c
--- /dev/null
+++ b/user/perl-object-pad/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-object-pad
+_pkgreal=Object-Pad
+_author=PEVANS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.808
+pkgrel=0
+pkgdesc="Simple syntax for lexical field-based objects"
+url="https://metacpan.org/pod/Object::Pad"
+arch="all"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+checkdepends="perl-test2-suite perl-test-fatal perl-test-refcount"
+makedepends="perl-dev perl-module-build perl-xs-parse-keyword>=0.39 perl-xs-parse-sublike"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="5fbb53ca6c31d123755658987f10098e67691f5e158c4821cbd198d31857ffb8437850762e0930e83102087519ae153248842b872e6361e69712d966f841680c Object-Pad-0.808.tar.gz"
diff --git a/user/perl-package-deprecationmanager/APKBUILD b/user/perl-package-deprecationmanager/APKBUILD
index 492c684ea..fb3b875a1 100644
--- a/user/perl-package-deprecationmanager/APKBUILD
+++ b/user/perl-package-deprecationmanager/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-package-deprecationmanager
-pkgver=0.17
+_pkgreal=Package-DeprecationManager
+_author=DROLSKY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.18
pkgrel=0
pkgdesc="Manage deprecation warnings for your Perl distribution"
url="https://metacpan.org/release/Package-DeprecationManager"
arch="noarch"
license="Artistic-2.0"
-depends="perl-package-stash perl-params-util perl-sub-install perl-sub-name"
-makedepends="perl-dev"
+depends="perl perl-package-stash perl-params-util perl-sub-install perl-sub-name"
checkdepends="perl-test-fatal perl-test-warnings"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Package-DeprecationManager-$pkgver.tar.gz"
-builddir="$srcdir/Package-DeprecationManager-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="57bf79df657895342ca5b8d13f155d85f34d1a85415570b112138b6c50c5d08b421a1707671fbf807918cc334006e4558a626a7201c60096924fc2200c751cde Package-DeprecationManager-0.17.tar.gz"
+sha512sums="e0e34fd9b90d0266d782b85fe9a74c4bde217009488c75143c0ef2114d8c53f58a01c34214909705628c3816267b288b1b05d341fa8fae7a3fcc6bbdbf2f6031 Package-DeprecationManager-0.18.tar.gz"
diff --git a/user/perl-package-stash-xs/APKBUILD b/user/perl-package-stash-xs/APKBUILD
index 9559d0161..0fab45b0c 100644
--- a/user/perl-package-stash-xs/APKBUILD
+++ b/user/perl-package-stash-xs/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-package-stash-xs
-pkgver=0.29
+_pkgreal=Package-Stash-XS
+_author=ETHER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.30
pkgrel=0
pkgdesc="Faster and more correct implementation of Package::Stash"
url="https://metacpan.org/release/Package-Stash-XS"
arch="all"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+checkdepends="perl-test-fatal perl-test-needs perl-test-requires"
makedepends="perl-dev"
-checkdepends="perl-test-fatal perl-test-requires"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Package-Stash-XS-$pkgver.tar.gz"
-builddir="$srcdir/Package-Stash-XS-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="f7afcf1a67915d9990a8d63e418ebc6b6b48947b90a72a454b8197656233d8cc976f72d44e4179621628e52fa7ab9a9a74f18f95ad1999d3f45181531ed44849 Package-Stash-XS-0.29.tar.gz"
+sha512sums="528faaefa71c5c37d378a9bedf325babf3b2717024995d166fc77bb1fb1ce1aed11da775608029a1c215c903dcd7ac9f68569cd8fd3690681ccd72b47c51b0a3 Package-Stash-XS-0.30.tar.gz"
diff --git a/user/perl-package-stash/APKBUILD b/user/perl-package-stash/APKBUILD
index 3dd369b5a..b00ea4f8f 100644
--- a/user/perl-package-stash/APKBUILD
+++ b/user/perl-package-stash/APKBUILD
@@ -1,34 +1,36 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-package-stash
-pkgver=0.38
+_pkgreal=Package-Stash
+_author=ETHER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.40
pkgrel=0
pkgdesc="Perl routines for manipulating stashes"
url="https://metacpan.org/release/Package-Stash"
arch="noarch"
-license="Artistic-1.0-Perl"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl-module-implementation perl-package-stash-xs"
+checkdepends="perl-cpan-meta-check perl-dist-checkconflicts perl-test-needs
+ perl-test-fatal perl-test-requires"
makedepends="perl-dev"
-checkdepends="perl-dist-checkconflicts perl-test-fatal perl-test-requires"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Package-Stash-$pkgver.tar.gz"
-builddir="$srcdir/Package-Stash-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="4846953a845727d2b987a4625fc96e18c7d68a365ac8dbacfa21388b0a063ebac9c91e43190dc4f91af4b3adca508b32a6c7ec18213096622162c06c11cbb611 Package-Stash-0.38.tar.gz"
+sha512sums="1a1e358c8409ba0bcc2fee9b3cc86b6cd42297c9bd0641a57872bec498567ee18075ad71f7e79bb9b3a789cb47ebbf852163886f8babaf3aa23e7ff9eb2e7080 Package-Stash-0.40.tar.gz"
diff --git a/user/perl-padwalker/APKBUILD b/user/perl-padwalker/APKBUILD
new file mode 100644
index 000000000..efe06e1e0
--- /dev/null
+++ b/user/perl-padwalker/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-padwalker
+_pkgreal=PadWalker
+_author=ROBIN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.5
+pkgrel=0
+pkgdesc="Perl module for inspecting other people's lexical variables"
+url="https://metacpan.org/pod/PadWalker"
+arch="all"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="b0ed680be4a06e5f621b09e57fa02a6516ceca89dca6922bd134f0433f699584a535c0b1155ee54c1a8d857fb989a944dec5013ccb84c41447cac47e12593b90 PadWalker-2.5.tar.gz"
diff --git a/user/perl-parallel-forkmanager/APKBUILD b/user/perl-parallel-forkmanager/APKBUILD
new file mode 100644
index 000000000..528414294
--- /dev/null
+++ b/user/perl-parallel-forkmanager/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-parallel-forkmanager
+_pkgreal=Parallel-ForkManager
+_author=YANICK
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.02
+pkgrel=0
+pkgdesc="Perl library for managing fork()-based parallelization"
+url="https://metacpan.org/pod/Parallel::ForkManager"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-moo"
+checkdepends="perl-test-warn"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="2b390ec8f252e7bf2b6be8d602b231b1fd347bc5256bf7f16a6d56f67256938f3d96b7a28c92c662d8b91441b7fa4cb5922c655e64a7a4a9332eb58f19b6bcfb Parallel-ForkManager-2.02.tar.gz"
diff --git a/user/perl-params-util/APKBUILD b/user/perl-params-util/APKBUILD
index f18775a6f..27bf5498a 100644
--- a/user/perl-params-util/APKBUILD
+++ b/user/perl-params-util/APKBUILD
@@ -1,9 +1,11 @@
-# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-params-util
_pkgreal=Params-Util
-pkgver=1.07
-pkgrel=5
+_author=REHSACK
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.102
+pkgrel=0
pkgdesc="Simple, compact and correct param-checking functions"
url="https://metacpan.org/release/Params-Util"
arch="all"
@@ -11,25 +13,21 @@ license="GPL-1.0+ OR Artistic-1.0-Perl"
depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/A/AD/ADAMK/$_pkgreal-$pkgver.tar.gz"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
- unset CFLAGS
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="ff471b01b33414fc5e1c68d97c21171a95d3418c33e3c45f9910cc768898690e35051506a83ad9403a200336654c14b8efc9d471c4b3fe3321047a7603d6fd56 Params-Util-1.07.tar.gz"
+sha512sums="e2587b62545cf0572cc8f719ea8e5411d710789c3cbcab4038c5b01f86073a010d32191551f6aeea1bdae22d49e7d34358250b4e7ece9f261a598854af187194 Params-Util-1.102.tar.gz"
diff --git a/user/perl-params-validate/APKBUILD b/user/perl-params-validate/APKBUILD
index 64d524648..5bd8a841d 100644
--- a/user/perl-params-validate/APKBUILD
+++ b/user/perl-params-validate/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-params-validate
-pkgver=1.29
+_pkgreal=Params-Validate
+_author=DROLSKY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.31
pkgrel=0
pkgdesc="Validate Perl method/function parameters"
url="https://metacpan.org/release/Params-Validate"
arch="all"
license="Artistic-2.0"
-depends="perl-module-implementation"
-makedepends="perl-dev perl-module-build"
+depends="perl perl-module-implementation"
checkdepends="perl-test-fatal perl-test-requires"
+makedepends="perl-dev perl-module-build"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Params-Validate-$pkgver.tar.gz"
-builddir="$srcdir/Params-Validate-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
perl Build.PL installdirs=vendor
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="afa887d1ce60d38b82cbf3ad88fb892f473e0fa45db528b68e66bbb800058af453180cc96afddae56a2cdad8ec531a587e7aac36b6869c489caa6dd36a57a385 Params-Validate-1.29.tar.gz"
+sha512sums="8b20db8725df35b4dd9201dea764254d993cfa8a73b2ccebd7a9ba492cde36b589f66c26b287fe2f0ec1ebfafd53872cd164bee1727d1453265e030a927556d9 Params-Validate-1.31.tar.gz"
diff --git a/user/perl-params-validationcompiler/APKBUILD b/user/perl-params-validationcompiler/APKBUILD
index cb4c57f34..d5479edbb 100644
--- a/user/perl-params-validationcompiler/APKBUILD
+++ b/user/perl-params-validationcompiler/APKBUILD
@@ -1,36 +1,36 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-params-validationcompiler
-_pkgname=Params-ValidationCompiler
-pkgver=0.30
+_pkgreal=Params-ValidationCompiler
+_author=DROLSKY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.31
pkgrel=0
pkgdesc="Perl subroutine parameter validator compiler"
url="https://metacpan.org/release/Params-ValidationCompiler"
arch="noarch"
-options="!check" # many, many, many unpackaged test deps
license="Artistic-2.0"
-depends="perl-class-xsaccessor perl-eval-closure perl-exception-class"
-checkdepends="perl-specio"
+depends="perl perl-class-xsaccessor perl-eval-closure perl-exception-class"
+checkdepends="perl-specio perl-test-without-module perl-test2-suite
+ perl-test2-plugin-nowarnings"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Params-ValidationCompiler-$pkgver.tar.gz"
-builddir="$srcdir/Params-ValidationCompiler-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="5911f9317f0b72e17c72435420a3b6b9f36780ab70715510c46e847970094e730169b9b3085f29cb23ee0aca2e78f7f9edd0d093859a1062869f35c90172bf05 Params-ValidationCompiler-0.30.tar.gz"
+sha512sums="e3265cc6a5fc9761dd6ae82c3875711c5766242ab0f1edd74cc74296fdac22b6c23e48ba4768e895701ca8a00bd81677056713124b8edaa0b340eae1b33cf9c4 Params-ValidationCompiler-0.31.tar.gz"
diff --git a/user/perl-parse-recdescent/APKBUILD b/user/perl-parse-recdescent/APKBUILD
index 7e9bd3ebd..d64f3125a 100644
--- a/user/perl-parse-recdescent/APKBUILD
+++ b/user/perl-parse-recdescent/APKBUILD
@@ -1,33 +1,33 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-parse-recdescent
+_pkgreal=Parse-RecDescent
+_author=JTBRAUN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.967015
pkgrel=0
pkgdesc="Generate Recursive-Descent Parsers"
url="https://metacpan.org/pod/Parse::RecDescent"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl"
-makedepends="perl-dev"
checkdepends="perl-test-warn perl-test-pod"
-install=""
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/J/JT/JTBRAUN/Parse-RecDescent-$pkgver.tar.gz"
-builddir="$srcdir/Parse-RecDescent-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-patchreader/APKBUILD b/user/perl-patchreader/APKBUILD
index aa4ea118d..4285c0fa3 100644
--- a/user/perl-patchreader/APKBUILD
+++ b/user/perl-patchreader/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-patchreader
-_pkgname=PatchReader
+_pkgreal=PatchReader
+_author=TMANNERM
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.9.6
pkgrel=0
pkgdesc="Read and manipulate patches from Perl"
url="https://metacpan.org/release/PatchReader"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/T/TM/TMANNERM/PatchReader-$pkgver.tar.gz"
-builddir="$srcdir/PatchReader-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-path-iterator-rule/APKBUILD b/user/perl-path-iterator-rule/APKBUILD
new file mode 100644
index 000000000..6cbef36b3
--- /dev/null
+++ b/user/perl-path-iterator-rule/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-path-iterator-rule
+_pkgreal=Path-Iterator-Rule
+_author=DAGOLDEN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.015
+pkgrel=0
+pkgdesc="Perl module for terative, recursive file-finding"
+url="https://metacpan.org/pod/Path::Iterator::Rule"
+arch="noarch"
+license="Apache-2.0"
+depends="perl perl-file-pushd perl-number-compare perl-path-tiny perl-test-deep
+ perl-test-filename perl-text-glob perl-try-tiny"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="cc310fa74855021edc86c1fcd5686684ec372062463d6f0b6e83795313ee4ee69207f20a893fbf8031991abdf40bdaa117529e92f5f3d57fb13c9700a9422481 Path-Iterator-Rule-1.015.tar.gz"
diff --git a/user/perl-path-tiny/APKBUILD b/user/perl-path-tiny/APKBUILD
index 0f32e49eb..7c4546a72 100644
--- a/user/perl-path-tiny/APKBUILD
+++ b/user/perl-path-tiny/APKBUILD
@@ -1,35 +1,35 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-path-tiny
-pkgver=0.108
+_pkgreal=Path-Tiny
+_author=DAGOLDEN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.144
pkgrel=0
pkgdesc="File path utility"
url="https://metacpan.org/pod/Path::Tiny"
arch="noarch"
license="Apache-2.0"
depends="perl"
-makedepends="perl-dev"
checkdepends="perl-test-mockrandom"
-install=""
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DA/DAGOLDEN/Path-Tiny-$pkgver.tar.gz"
-builddir="$srcdir/Path-Tiny-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="21cbc8ec84474a2fc14b77a2c8b659676d4842a87a7572497c0dd6ba1c2e5f91cdefa30fc9578fdc416d8c8ee4155ff302833925c1fdf9242c898ba6a0ebee13 Path-Tiny-0.108.tar.gz"
+sha512sums="a6360ff3c81dac6026a7610b4934a415db04060a7792e37d38eec6f7b46970eeb42840da25fc0b4eab21eaa7b5f011c6d92ba5382dcea49e57e4fc693c4620d5 Path-Tiny-0.144.tar.gz"
diff --git a/user/perl-pegex/APKBUILD b/user/perl-pegex/APKBUILD
index e7bc13966..2fb1b2b5c 100644
--- a/user/perl-pegex/APKBUILD
+++ b/user/perl-pegex/APKBUILD
@@ -1,35 +1,35 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-pegex
-pkgver=0.70
+_pkgreal=Pegex
+_author=INGY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.75
pkgrel=0
pkgdesc="Acmeist PEG Parser Framework"
url="https://metacpan.org/pod/Pegex"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
-depends="perl"
-makedepends="perl-dev perl-file-sharedir-install"
-checkdepends="perl-yaml-libyaml"
-install=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-tie-ixhash"
+checkdepends="perl-yaml-pp perl-xxx perl-test-pod"
+makedepends="perl-file-sharedir-install"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/I/IN/INGY/Pegex-$pkgver.tar.gz"
-builddir="$srcdir/Pegex-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="9a24c27fbbb36f83b2437cb17321e58167b3d5c857383ef0422557c0d4a956b90c24f11048843d29622670ea731ca589dd09f0fd68b48d89b3c885d1c86b5f6e Pegex-0.70.tar.gz"
+sha512sums="ff204b21085bc3ce5cf6dac70636443f206272ae9741055e8972eadb720d52a46e542dee5b6559cc308d9fb597d545bb4d148b02499e2f75fa08a6dc689dc30d Pegex-0.75.tar.gz"
diff --git a/user/perl-perl-tidy/APKBUILD b/user/perl-perl-tidy/APKBUILD
index 0c905e7ce..53f7f171c 100644
--- a/user/perl-perl-tidy/APKBUILD
+++ b/user/perl-perl-tidy/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-perl-tidy
-pkgver=20181120
+_pkgreal=Perl-Tidy
+_author=SHANCOCK
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=20240202
pkgrel=0
pkgdesc="Indent and reformat Perl scripts"
url="https://metacpan.org/release/Perl-Tidy"
arch="noarch"
license="GPL-2.0-only"
-depends=""
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SH/SHANCOCK/Perl-Tidy-$pkgver.tar.gz"
-builddir="$srcdir/Perl-Tidy-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="5b75178f9fd874fa173a562d765091c66a8fc56b1efc16ace9cf0f6215688d7a334b7d68255aad20aa9da87bf79f9cc72604a52c56398952157512f01e53b5ca Perl-Tidy-20181120.tar.gz"
+sha512sums="33d912152285f2ccb304bf7df4f2e055c5f8b3049b9556c7efe5bd2d80123316f9014e8e5f17c9698545394f466f381e306f431450a04e74d767150db43028f5 Perl-Tidy-20240202.tar.gz"
diff --git a/user/perl-perlio-utf8_strict/APKBUILD b/user/perl-perlio-utf8_strict/APKBUILD
index d3efd36ae..82d72c236 100644
--- a/user/perl-perlio-utf8_strict/APKBUILD
+++ b/user/perl-perlio-utf8_strict/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-perlio-utf8_strict
-pkgver=0.007
+_pkgreal=PerlIO-utf8_strict
+_author=LEONT
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.010
pkgrel=0
pkgdesc="Fast and correct UTF-8 I/O for Perl"
url="https://metacpan.org/release/PerlIO-utf8_strict"
arch="all"
-license="Artistic-1.0-Perl"
-depends=""
-makedepends="perl-dev"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
checkdepends="perl-test-exception"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/L/LE/LEONT/PerlIO-utf8_strict-$pkgver.tar.gz"
-builddir="$srcdir/PerlIO-utf8_strict-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="0d39be9bcbab4cea087f59c67dc1af6773b6258c5e836590ff58cc18bf3392ba6e95c55a0c7ce94236e0be7053802b4b1d6010130355e1a973a3698aaf49af0f PerlIO-utf8_strict-0.007.tar.gz"
+sha512sums="623d7ba2f80f87196c172ce2b9ad789b14455cdb18ef8dd388af357e50e299128d9f631a1a034d671e46c6c72770c5900f18c83be4b2796285bb7f56afaa76a0 PerlIO-utf8_strict-0.010.tar.gz"
diff --git a/user/perl-plack/APKBUILD b/user/perl-plack/APKBUILD
index 6230b7d82..4e80e0b0e 100644
--- a/user/perl-plack/APKBUILD
+++ b/user/perl-plack/APKBUILD
@@ -1,40 +1,40 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-plack
-_pkgname=Plack
-pkgver=1.0047
+_pkgreal=Plack
+_author=MIYAGAWA
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.0051
pkgrel=0
pkgdesc="Perl PSGI toolkit"
url="https://metacpan.org/release/Plack"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl-apache-logformat-compiler perl-cookie-baker perl-devel-stacktrace
perl-devel-stacktrace-ashtml perl-file-sharedir
perl-file-sharedir-install perl-filesys-notify-simple
perl-hash-multivalue perl-http-entity-parser perl-http-headers-fast
perl-http-message perl-stream-buffered perl-try-tiny perl-uri
- perl-www-form-urlencoded"
+ perl-www-form-urlencoded perl"
checkdepends="perl-test-requires perl-test-tcp"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/M/MI/MIYAGAWA/Plack-$pkgver.tar.gz"
-builddir="$srcdir/Plack-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="95fa7b7c1cc4d94bc077e69b52a6555e6f62e0119a29cb932f554e70a3466e8bb416b5a8e02c2a11c45f60e87fd01ed469c80a1c19c1a2eba7ba5ad2263e994c Plack-1.0047.tar.gz"
+sha512sums="be4b03f4b2cc6766be4ad06b1405e4513d475676ce8be7b3fd8bcb48cbfeedb7aef67df14a353f49d6b97ecd769f87b0f0787898148c849949f6936486c7ad5b Plack-1.0051.tar.gz"
diff --git a/user/perl-pod-constants/APKBUILD b/user/perl-pod-constants/APKBUILD
new file mode 100644
index 000000000..71b5cc3f5
--- /dev/null
+++ b/user/perl-pod-constants/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-pod-constants
+_pkgreal=Pod-Constants
+_author=MGV
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.19
+pkgrel=0
+pkgdesc="Perl module for pulling constants from POD text"
+url="https://metacpan.org/pod/Pod::Constants"
+arch="noarch"
+license="Artistic-2.0"
+depends="perl"
+makedepends="perl-dev"
+checkdepends="perl-pod-parser"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="4c7b7ccdede87f0069bf100406de5b2320b5f9cb0363d413e90b419e512d4322114851d78fdd7a1bce63347ee5986ecd397b11579b91eee6e46d9b0a82b0b64a Pod-Constants-0.19.tar.gz"
diff --git a/user/perl-pod-coverage/APKBUILD b/user/perl-pod-coverage/APKBUILD
index 39ef36d1b..eaadcd482 100644
--- a/user/perl-pod-coverage/APKBUILD
+++ b/user/perl-pod-coverage/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-pod-coverage
+_pkgreal=Pod-Coverage
+_author=RCLAMP
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.23
pkgrel=0
pkgdesc="Checks if the documentation of a module is comprehensive"
url="https://metacpan.org/pod/Pod::Coverage"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
-depends="perl perl-devel-symdump"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-devel-symdump perl-pod-parser"
makedepends="perl-dev"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RC/RCLAMP/Pod-Coverage-$pkgver.tar.gz"
-builddir="$srcdir/Pod-Coverage-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-pod-parser/APKBUILD b/user/perl-pod-parser/APKBUILD
new file mode 100644
index 000000000..b0a6be916
--- /dev/null
+++ b/user/perl-pod-parser/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-pod-parser
+_pkgreal=Pod-Parser
+_author=MAREKR
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.67
+pkgrel=0
+pkgdesc="Perl package for finding and handling POD documents"
+url="https://metacpan.org/release/Pod-Parser"
+arch="noarch"
+license="Artistic-1.0-Perl"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir"/$_pkgreal-$pkgver
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="62cfbb9da1f4ccb224fb3e3d3f952f6c1579728ad7dcd7f2ef0b0393dabe8caa06cd5e259a875b58066fe0a519b3db1d26a40ae5aa23d1eff06e20547cac1e33 Pod-Parser-1.67.tar.gz"
diff --git a/user/perl-posix-strftime-compiler/APKBUILD b/user/perl-posix-strftime-compiler/APKBUILD
index 55886e7b0..17dac2c8f 100644
--- a/user/perl-posix-strftime-compiler/APKBUILD
+++ b/user/perl-posix-strftime-compiler/APKBUILD
@@ -1,34 +1,36 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-posix-strftime-compiler
-_pkgname=POSIX-strftime-Compiler
-pkgver=0.42
+_pkgreal=POSIX-strftime-Compiler
+_author=KAZEBURO
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.46
pkgrel=0
pkgdesc="Perl strftime compiler"
url="https://metacpan.org/release/POSIX-strftime-Compiler"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
-makedepends="perl-dev perl-module-build"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev perl-module-build-tiny"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/K/KA/KAZEBURO/POSIX-strftime-Compiler-$pkgver.tar.gz"
-builddir="$srcdir/POSIX-strftime-Compiler-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz
+ change-timezone-name.patch"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs=vendor
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="0c07f1b8589b067533c65a023dd634a29640cb8992aae8047aa1063affe6b30b95930479829982a30a13b87bc7c9ebf82ca4837726bd29658d85d718164e3c76 POSIX-strftime-Compiler-0.42.tar.gz"
+sha512sums="cee80a7b2f6b79dbb706898b713a4bb05bc57ecb3ef6c1644bce3682cc35d584c528aced6cd71b926e2fe549c95644ad59ecf780ba064adbb3bc9c54c8d4c459 POSIX-strftime-Compiler-0.46.tar.gz
+372ca8d3b8dfe35cbb6f67023341e59d6bca558d6a8bf8f02e79fb1f44c8d42a7c798b82e3e8732ebe7a46588912f6a533018bd4256419cd32a1257f11f5b467 change-timezone-name.patch"
diff --git a/user/perl-posix-strftime-compiler/change-timezone-name.patch b/user/perl-posix-strftime-compiler/change-timezone-name.patch
new file mode 100644
index 000000000..5ef5598b3
--- /dev/null
+++ b/user/perl-posix-strftime-compiler/change-timezone-name.patch
@@ -0,0 +1,12 @@
+diff -ru a/t/02_timezone.t b/t/02_timezone.t
+--- a/t/02_timezone.t 2021-04-03 11:56:22.696118176 -0300
++++ b/t/02_timezone.t 2021-04-03 11:57:25.279713829 -0300
+@@ -8,7 +8,7 @@
+ my $inc = join ' ', map { "-I\"$_\"" } @INC;
+ my $dir = dirname(__FILE__);
+
+-$ENV{TEST_TZ} = 'CET-1CEST';
++$ENV{TEST_TZ} = 'Europe/Brussels';
+
+ eval {
+ my $d = `"$^X" $inc $dir/02_timezone.pl %z 0 0 0 1 7 112`;
diff --git a/user/perl-probe-perl/APKBUILD b/user/perl-probe-perl/APKBUILD
new file mode 100644
index 000000000..9a0edaf2d
--- /dev/null
+++ b/user/perl-probe-perl/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-probe-perl
+_pkgreal=Probe-Perl
+_author=KWILLIAMS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.03
+pkgrel=0
+pkgdesc="Perl module for acquiring information about the active Perl interpreter"
+url="https://metacpan.org/pod/Probe::Perl"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="739bdb9d1a74eb77ab885a5aca861a1915cadbb1002bb4cb0d21fc6940ae6b3aa64ee52951ac8b2dca41c9e8fe188e17ae5f3c848c4a1caaf66fec5d25bef49c Probe-Perl-0.03.tar.gz"
diff --git a/user/perl-re-engine-re2/APKBUILD b/user/perl-re-engine-re2/APKBUILD
new file mode 100644
index 000000000..2544397ef
--- /dev/null
+++ b/user/perl-re-engine-re2/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-re-engine-re2
+_pkgreal=re-engine-RE2
+_author=DGL
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.18
+pkgrel=0
+pkgdesc="RE2-based regex engine for Perl"
+url="https://metacpan.org/pod/re::engine::RE2"
+arch="all"
+license="(Artistic-1.0 OR GPL-1.0+) AND BSD-3-Clause"
+depends="perl"
+makedepends="perl-dev perl-extutils-cppguess"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/re-engine-RE2-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="3ecfd9cfc68703e23ba96dfb4b9e61afd8eb2f098c3c089b170efe30015425d891cc353362e7c56418e6e36d25e6dcaad96f52f659310458d696351bb0c77f74 re-engine-RE2-0.18.tar.gz"
diff --git a/user/perl-regexp-common/APKBUILD b/user/perl-regexp-common/APKBUILD
new file mode 100644
index 000000000..79822d1c7
--- /dev/null
+++ b/user/perl-regexp-common/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-regexp-common
+_pkgreal=Regexp-Common
+_author=ABIGAIL
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2017060201
+pkgrel=0
+pkgdesc="Perl library for common regular expression utilities"
+url="https://metacpan.org/pod/Regexp::Common"
+arch="noarch"
+license="Artistic-1.0-Perl OR Artistic-2.0 OR BSD-3-Clause OR MIT"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="fd046d775214bdca42f868557559595360b069121a75fc119f45e064091000968d9d84154f8a0f06072ecff169dccecf68be58f99a7196932fcb4ffcbd678608 Regexp-Common-2017060201.tar.gz"
diff --git a/user/perl-regexp-pattern-defhash/APKBUILD b/user/perl-regexp-pattern-defhash/APKBUILD
new file mode 100644
index 000000000..79926fb34
--- /dev/null
+++ b/user/perl-regexp-pattern-defhash/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-regexp-pattern-defhash
+_pkgreal=Regexp-Pattern-DefHash
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.001
+pkgrel=0
+pkgdesc="Regular expressions for DefHash"
+url="https://metacpan.org/pod/Regexp::Pattern::DefHash"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/P/PE/PERLANCAR/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="d1dc846b1c44cfc2c0d7b1e23ac8ba2b9958f2827d777890f429758570f6418eb003a9b708b733a74acea568cf08a66388800f1a950eb5b579dc3dbcad7b5593 Regexp-Pattern-DefHash-0.001.tar.gz"
diff --git a/user/perl-regexp-pattern-license/APKBUILD b/user/perl-regexp-pattern-license/APKBUILD
new file mode 100644
index 000000000..26e70d5fd
--- /dev/null
+++ b/user/perl-regexp-pattern-license/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-regexp-pattern-license
+_pkgreal=Regexp-Pattern-License
+_author=JONASS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=3.11.1
+pkgrel=0
+pkgdesc="Perl module for regex-matching legal licenses"
+url="https://metacpan.org/pod/Regexp::Pattern::License"
+arch="noarch"
+license="GPL-3.0+"
+depends="perl perl-re-engine-re2 perl-regexp-pattern perl-strictures
+ perl-test-regexp-pattern perl-try-tiny"
+checkdepends="perl-test-requires perl-test2-suite perl-test-without-module"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-v$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-v$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="11c30b9673e4d009ecb871d70345e38ce692b1c53e8614d35f8ce4e7b7edfea65c8f18880929138fc1fab6ce1dee3633bb23c06ca456c5dd81928b093c57609d Regexp-Pattern-License-v3.11.1.tar.gz"
diff --git a/user/perl-regexp-pattern/APKBUILD b/user/perl-regexp-pattern/APKBUILD
new file mode 100644
index 000000000..821fa9eed
--- /dev/null
+++ b/user/perl-regexp-pattern/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-regexp-pattern
+_pkgreal=Regexp-Pattern
+_author=PERLANCAR
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.2.14
+pkgrel=0
+pkgdesc="Perl framework for regex collection standardization"
+url="https://metacpan.org/pod/Regexp::Pattern"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-test-exception"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="85386d757982eb374a85c8c12d16a1ad24384b741ed1bd63292d2d3504ff0ec613fa49627a7e7d4d0f53f8e594bd613dd0c5b9da5b3237ad54c0a099ece60b0e Regexp-Pattern-0.2.14.tar.gz"
diff --git a/user/perl-role-hooks/APKBUILD b/user/perl-role-hooks/APKBUILD
new file mode 100644
index 000000000..6348335d2
--- /dev/null
+++ b/user/perl-role-hooks/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-role-hooks
+_pkgreal=Role-Hooks
+_author=TOBYINK
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.008
+pkgrel=0
+pkgdesc="Callbacks for Moo/Moose/Mouse roles"
+url="https://metacpan.org/pod/Role::Hooks"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl perl-class-method-modifiers"
+checkdepends="perl-class-tiny perl-moo perl-moose perl-mouse perl-role-tiny
+ perl-test-requires"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="d614dd26adfe03eeef091554b640a130a574cbe11797ad99185cf86637c4a901628800e16967c6061a479c9385fdced9e2b01ec97e18a4deafe4f098885913e5 Role-Hooks-0.008.tar.gz"
diff --git a/user/perl-role-tiny/APKBUILD b/user/perl-role-tiny/APKBUILD
index b0552ccfb..7fb8e2635 100644
--- a/user/perl-role-tiny/APKBUILD
+++ b/user/perl-role-tiny/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-role-tiny
-pkgver=2.000006
+_pkgreal=Role-Tiny
+_author=HAARG
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.002004
pkgrel=0
pkgdesc="A minimalist role composition tool"
url="https://metacpan.org/pod/Role::Tiny"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl"
makedepends="perl-dev"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/H/HA/HAARG/Role-Tiny-$pkgver.tar.gz"
-builddir="$srcdir/Role-Tiny-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="7640196c4bc1bf7a5437c57f0137f3bbf7c5fb92b9614805f16fec41dfb87a8bf6b7f3348ceade0800bccd72c4e5b72bcd4ab8bf28768ecda9d912c1b4c78047 Role-Tiny-2.000006.tar.gz"
+sha512sums="f66a799a0cd4e989adc173f6d913967df7aa6b9ffda934c2a80c0a91dcfe4edce606bd27cf1b4d857d52d0aa770224315ae4e915e4e735c6a9483a6cf5ce02f1 Role-Tiny-2.002004.tar.gz"
diff --git a/user/perl-router-simple/APKBUILD b/user/perl-router-simple/APKBUILD
index 2d4606311..5eb0f6360 100644
--- a/user/perl-router-simple/APKBUILD
+++ b/user/perl-router-simple/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-router-simple
-_pkgname=Router-Simple
+_pkgreal=Router-Simple
+_author=TOKUHIROM
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.17
pkgrel=0
pkgdesc="Simple HTTP router for Perl"
url="https://metacpan.org/release/Router-Simple"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-class-accessor-lite"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-class-accessor-lite"
makedepends="perl-dev perl-module-build"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/T/TO/TOKUHIROM/Router-Simple-$pkgver.tar.gz"
-builddir="$srcdir/Router-Simple-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs=vendor
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-scalar-list-utils/APKBUILD b/user/perl-scalar-list-utils/APKBUILD
new file mode 100644
index 000000000..eb962dc1f
--- /dev/null
+++ b/user/perl-scalar-list-utils/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-scalar-list-utils
+_pkgreal=Scalar-List-Utils
+_author=PEVANS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.63
+pkgrel=0
+pkgdesc="Perl collection of utility functions for scalars, lists, and subs"
+url="https://metacpan.org/release/Scalar-List-Utils"
+arch="all"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ export CFLAGS="$(perl -MConfig -E 'say $Config{ccflags}')"
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="e9e44a62181153c5e28a39df56ec14e9ed2918c6b398dd8e3d9f79669969828f6c0e5efdd02970abaf71ae258b291ad434dc4c597cf6ba4fba55cda892ac8de8 Scalar-List-Utils-1.63.tar.gz"
diff --git a/user/perl-scope-guard/APKBUILD b/user/perl-scope-guard/APKBUILD
index 121aa0f5f..34ce33a7e 100644
--- a/user/perl-scope-guard/APKBUILD
+++ b/user/perl-scope-guard/APKBUILD
@@ -1,31 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-scope-guard
+_pkgreal=Scope-Guard
+_author=CHOCOLATE
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.21
pkgrel=0
pkgdesc="Lexically-scoped Perl resource management"
url="https://metacpan.org/release/Scope-Guard"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/C/CH/CHOCOLATE/Scope-Guard-$pkgver.tar.gz"
-builddir="$srcdir/Scope-Guard-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-set-intspan/APKBUILD b/user/perl-set-intspan/APKBUILD
new file mode 100644
index 000000000..050496a83
--- /dev/null
+++ b/user/perl-set-intspan/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-set-intspan
+_pkgreal=Set-IntSpan
+_author=SWMCD
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.19
+pkgrel=0
+pkgdesc="Perl module for working with sets of integers"
+url="https://metacpan.org/pod/Set::IntSpan"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="de743bc26e4e9daf0bff636279219776421a31d1b3fa5d8e9232e051f2396cbfdd339dacd4aadc006cf31527935550c8659d8c80cbaed5942895239ab36c9cd9 Set-IntSpan-1.19.tar.gz"
diff --git a/user/perl-soap-lite/APKBUILD b/user/perl-soap-lite/APKBUILD
index fadf68f8d..dcdf4cbe8 100644
--- a/user/perl-soap-lite/APKBUILD
+++ b/user/perl-soap-lite/APKBUILD
@@ -1,35 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-soap-lite
-_pkgname=SOAP-Lite
+_pkgreal=SOAP-Lite
+_author=PHRED
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.27
pkgrel=0
pkgdesc="Perl's Web Services Toolkit"
url="https://metacpan.org/release/SOAP-Lite"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl-class-inspector perl-io-sessiondata perl-io-socket-ssl
perl-libwww perl-lwp-protocol-https perl-task-weaken perl-uri
- perl-xml-parser perl-xml-parser-lite"
+ perl-xml-parser perl-xml-parser-lite perl"
checkdepends="perl-test-warn"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/P/PH/PHRED/SOAP-Lite-$pkgver.tar.gz"
-builddir="$srcdir/SOAP-Lite-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-software-license/APKBUILD b/user/perl-software-license/APKBUILD
new file mode 100644
index 000000000..a7e4797fb
--- /dev/null
+++ b/user/perl-software-license/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-software-license
+_pkgreal=Software-License
+_author=LEONT
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.104006
+pkgrel=0
+pkgdesc="Perl module for generating prefilled license text"
+url="https://metacpan.org/pod/Software::License"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-data-section perl-text-template perl-try-tiny"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="48fbfc5419a978b645c822d529f94c54a49ba65502165cfcc4ee6a6b48ea59eff981e5f64b9a9109007c389897789a9b9651f980b8b2ebd07180310da2e720bb Software-License-0.104006.tar.gz"
diff --git a/user/perl-sort-key/APKBUILD b/user/perl-sort-key/APKBUILD
new file mode 100644
index 000000000..746726cdd
--- /dev/null
+++ b/user/perl-sort-key/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-sort-key
+_pkgreal=Sort-Key
+_author=SALVA
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.33
+pkgrel=0
+pkgdesc="Perl module for fast sorting"
+url="https://metacpan.org/pod/Sort::Key"
+arch="all"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="cf87cd2f5c0eea662dbdaf7faed5646ebd63925c71a093a79a9980d6de290b1128443954675893f263961e68d1db0e9e4ca1412a2734ce8dcdd271bcf4f1be17 Sort-Key-1.33.tar.gz"
diff --git a/user/perl-specio-library-path-tiny/APKBUILD b/user/perl-specio-library-path-tiny/APKBUILD
index 907d3245d..b74b02d7a 100644
--- a/user/perl-specio-library-path-tiny/APKBUILD
+++ b/user/perl-specio-library-path-tiny/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-specio-library-path-tiny
-pkgver=0.04
+_pkgreal=Specio-Library-Path-Tiny
+_author=DROLSKY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.05
pkgrel=0
pkgdesc="Path::Tiny types and coercions for Specio"
url="https://metacpan.org/release/Specio-Library-Path-Tiny"
arch="noarch"
license="Apache-2.0"
-depends="perl-file-pushd perl-path-tiny perl-specio"
+depends="perl perl-file-pushd perl-path-tiny perl-specio"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Specio-Library-Path-Tiny-$pkgver.tar.gz"
-builddir="$srcdir/Specio-Library-Path-Tiny-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="22ecd74d31a2ee4be2deac887b178d571c31aac1867838b38cb362ee6f5deaf3082282d39241a3432bfc14db86651a13283be68b0e23e224cf8ff502503d17de Specio-Library-Path-Tiny-0.04.tar.gz"
+sha512sums="69b67cd71fd0cccf043744f0f79869ca456369773d1a0ecfd41d4d095c8b449a83ba55b52949894410272c151354b57d948beda304a76050c87b743d2ebd0642 Specio-Library-Path-Tiny-0.05.tar.gz"
diff --git a/user/perl-specio/APKBUILD b/user/perl-specio/APKBUILD
index 993c95bcd..f0885ea25 100644
--- a/user/perl-specio/APKBUILD
+++ b/user/perl-specio/APKBUILD
@@ -1,7 +1,11 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-specio
-pkgver=0.43
+_pkgreal=Specio
+_author=DROLSKY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.48
pkgrel=0
pkgdesc="Type constraints and coercions for Perl"
url="https://metacpan.org/release/Specio"
@@ -9,28 +13,25 @@ arch="noarch"
license="Artistic-2.0"
depends="perl-devel-stacktrace perl-eval-closure perl-mro-compat
perl-module-runtime perl-role-tiny perl-sub-quote perl-test-fatal
- perl-try-tiny"
-makedepends="perl-dev"
+ perl-try-tiny perl-xstring"
checkdepends="perl-test-needs"
+makedepends=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DR/DROLSKY/Specio-$pkgver.tar.gz"
-builddir="$srcdir/Specio-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="6523fab79df4a66824da554ee86d6bad1953a4e542a7ef09d1b0727b7449f54e903234ba34587a52592c7397b51cd6d2ae9c555813e121aa7096d60a90998274 Specio-0.43.tar.gz"
+sha512sums="76fd2aa398008238d55714700581782c95b635a4d4198b1c51daecfec770b61b9898351cbc2bf999f4d837691de657c51a94581c0f0b21b67b605770d507729a Specio-0.48.tar.gz"
diff --git a/user/perl-stream-buffered/APKBUILD b/user/perl-stream-buffered/APKBUILD
index 93affdd1a..1a4b0a4e0 100644
--- a/user/perl-stream-buffered/APKBUILD
+++ b/user/perl-stream-buffered/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-stream-buffered
-_pkgname=Stream-Buffered
+_pkgreal=Stream-Buffered
+_author=DOY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.03
pkgrel=0
pkgdesc="Perl stream buffer library"
url="https://metacpan.org/release/Stream-Buffered"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DO/DOY/Stream-Buffered-$pkgver.tar.gz"
-builddir="$srcdir/Stream-Buffered-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-strictures/APKBUILD b/user/perl-strictures/APKBUILD
new file mode 100644
index 000000000..3ee5f23aa
--- /dev/null
+++ b/user/perl-strictures/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-strictures
+_pkgreal=strictures
+_author=HAARG
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.000006
+pkgrel=0
+pkgdesc="Perl module for using strict and fatal warnings"
+url="https://metacpan.org/pod/strictures"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-bareword-filehandles perl-indirect perl-multidimensional"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="670857a491fa58b85b10ee3bb5c6b7be845798926327ff3a32a9b78cb86bbbb95bfcc358983ece766dc8ef19a1eae12091ec9d9a7fef6d3f5d44ee4f8c04b7d2 strictures-2.000006.tar.gz"
diff --git a/user/perl-string-copyright/APKBUILD b/user/perl-string-copyright/APKBUILD
new file mode 100644
index 000000000..be14689aa
--- /dev/null
+++ b/user/perl-string-copyright/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-string-copyright
+_pkgreal=String-Copyright
+_author=JONASS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.003014
+pkgrel=0
+pkgdesc="Perl module for normalizing copyright text"
+url="https://metacpan.org/pod/String::Copyright"
+arch="noarch"
+license="AGPL-3.0+"
+depends="perl perl-exporter-tiny perl-set-intspan"
+checkdepends="perl-test-without-module perl-test2-suite"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="39874b267fcd01e6ffbcdae15af74918fddcb586c2f0708ba30b47957a4e6613689776b9e80a649689374a913b2c6c285ed58823620b6553cd56d6d99e632f08 String-Copyright-0.003014.tar.gz"
diff --git a/user/perl-string-escape/APKBUILD b/user/perl-string-escape/APKBUILD
new file mode 100644
index 000000000..765e0d2f6
--- /dev/null
+++ b/user/perl-string-escape/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-string-escape
+_pkgreal=String-Escape
+_author=EVO
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2010.002
+pkgrel=0
+pkgdesc="Perl module for escaping strings"
+url="https://metacpan.org/pod/String::Escape"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="668e196bbd95b4e9e5fc9ae3aebe0e7f1990362973bd027f2f3728f212786bc2104141ced3e024006b3ed22fa6345b968440029c98b87cbc299ac192221724c7 String-Escape-2010.002.tar.gz"
diff --git a/user/perl-string-license/APKBUILD b/user/perl-string-license/APKBUILD
new file mode 100644
index 000000000..18b6aed3f
--- /dev/null
+++ b/user/perl-string-license/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-string-license
+_pkgreal=String-License
+_author=JONASS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.0.9
+pkgrel=0
+pkgdesc="Perl module for detecting license statements in a text string"
+url="https://metacpan.org/pod/String::License"
+arch="noarch"
+license="AGPL-3.0+"
+depends="perl perl-array-intspan perl-feature-compat-class perl-list-someutils
+ perl-log-any perl-namespace-clean perl-path-tiny perl-regexp-pattern
+ perl-regexp-pattern-license"
+checkdepends="perl-test2-suite perl-test-without-module"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-v$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-v$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="ec6d448122b8b03cbeadddff9886885522abec68fe68f63036c98aa76993db5844509c2170eecbab59de604fa25e6d391b99cce96d53210fca39d299474ebf7c String-License-v0.0.9.tar.gz"
diff --git a/user/perl-string-shellquote/APKBUILD b/user/perl-string-shellquote/APKBUILD
index eb310c686..f01705527 100644
--- a/user/perl-string-shellquote/APKBUILD
+++ b/user/perl-string-shellquote/APKBUILD
@@ -1,31 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-string-shellquote
+_pkgreal=String-ShellQuote
+_author=ROSCH
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.04
pkgrel=0
pkgdesc="Quote strings for passing through to the shell"
url="https://metacpan.org/release/String-ShellQuote"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RO/ROSCH/String-ShellQuote-$pkgver.tar.gz"
-builddir="$srcdir/String-ShellQuote-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-string-tagged-terminal/APKBUILD b/user/perl-string-tagged-terminal/APKBUILD
new file mode 100644
index 000000000..524b3119a
--- /dev/null
+++ b/user/perl-string-tagged-terminal/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-string-tagged-terminal
+_pkgreal=String-Tagged-Terminal
+_author=PEVANS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.07
+pkgrel=0
+pkgdesc="String buffers with value tags on extents"
+url="https://metacpan.org/pod/String::Tagged::Terminal"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+checkdepends="perl-list-utilsby perl-module-pluggable perl-test2-suite"
+makedepends="perl-convert-color perl-convert-color-xterm perl-module-build
+ perl-string-tagged"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="d8120e6be0f5cb688312b196f0af5ca759b7023be0d40cf12a3dfc8bf3f45add452ea1c96d5a126e70706376b0bd8c7a1296b854a056258a1a4e27fcbe698e11 String-Tagged-Terminal-0.07.tar.gz"
diff --git a/user/perl-string-tagged/APKBUILD b/user/perl-string-tagged/APKBUILD
new file mode 100644
index 000000000..04298501f
--- /dev/null
+++ b/user/perl-string-tagged/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-string-tagged
+_pkgreal=String-Tagged
+_author=PEVANS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.22
+pkgrel=0
+pkgdesc="String buffers with value tags on extents"
+url="https://metacpan.org/pod/String::Tagged"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+checkdepends="perl-test-identity perl-test2-suite"
+makedepends="perl-module-build"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="09aaeabb0f2c59b970356023fbedd8111cafec8650bcb8af568b5c5f37dc864120581f2364bdd8d278bb7cce6d8630f331416253efd848b0dda57ca92d6920e5 String-Tagged-0.22.tar.gz"
diff --git a/user/perl-string-trim-more/APKBUILD b/user/perl-string-trim-more/APKBUILD
new file mode 100644
index 000000000..e742bc174
--- /dev/null
+++ b/user/perl-string-trim-more/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-string-trim-more
+_pkgreal=String-Trim-More
+_author=PERLANCAR
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.03
+pkgrel=0
+pkgdesc="Perl utilities for trimming strings"
+url="https://metacpan.org/pod/String::Trim::More"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/String-Trim-More-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="b9c1613bfe736f24b875bd1aaed485d0902ffa7f0e2a8ca65e8e735a37c32199008fca7de6dac5e37cb4aacbee8bf12f61731e0868dddea18620f471548c1493 String-Trim-More-0.03.tar.gz"
diff --git a/user/perl-struct-dumb/APKBUILD b/user/perl-struct-dumb/APKBUILD
new file mode 100644
index 000000000..986a9c254
--- /dev/null
+++ b/user/perl-struct-dumb/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-struct-dumb
+_pkgreal=Struct-Dumb
+_author=PEVANS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.14
+pkgrel=0
+pkgdesc="Perl utilities for lightweight record-like structures"
+url="https://metacpan.org/pod/Struct::Dumb"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+checkdepends="perl-test-fatal perl-test2-suite"
+makedepends="perl-module-build"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="d59e9e63b21ef0afbfc36398a8eeabc3d2bfd7fb94da2d39dd0af8251cca88bc5c1cf476329a35a23012afdfbba3ee40ffa1a6ee53d435405bd81af5e3bfd90d Struct-Dumb-0.14.tar.gz"
diff --git a/user/perl-sub-exporter-progressive/APKBUILD b/user/perl-sub-exporter-progressive/APKBUILD
index a744538c5..e231cb0e5 100644
--- a/user/perl-sub-exporter-progressive/APKBUILD
+++ b/user/perl-sub-exporter-progressive/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-sub-exporter-progressive
+_pkgreal=Sub-Exporter-Progressive
+_author=FREW
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.001013
pkgrel=0
pkgdesc="Only use Sub::Exporter if you need it"
url="https://metacpan.org/pod/Sub::Exporter::Progressive"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl perl-sub-exporter"
makedepends="perl-dev"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/F/FR/FREW/Sub-Exporter-Progressive-$pkgver.tar.gz"
-builddir="$srcdir/Sub-Exporter-Progressive-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-sub-exporter/APKBUILD b/user/perl-sub-exporter/APKBUILD
index 174da8d4b..bd7ddb9f5 100644
--- a/user/perl-sub-exporter/APKBUILD
+++ b/user/perl-sub-exporter/APKBUILD
@@ -1,43 +1,33 @@
-# Automatically generated by apkbuild-cpan, template 1
-# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-sub-exporter
_pkgreal=Sub-Exporter
-pkgver=0.987
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.991
pkgrel=0
pkgdesc="A sophisticated exporter for custom-built routines"
url="https://metacpan.org/release/Sub-Exporter"
arch="noarch"
license="GPL-1.0+ OR Artistic-1.0-Perl"
-cpandepends="perl-data-optlist perl-sub-install perl-params-util"
-cpanmakedepends=""
-depends="$cpandepends"
-makedepends="perl-dev $cpanmakedepends"
+depends="perl-data-optlist perl-sub-install perl-params-util"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/$_pkgreal-$pkgver.tar.gz"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
builddir="$srcdir/$_pkgreal-$pkgver"
-prepare() {
- cd "$builddir"
- export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
- PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
-}
-
build() {
- cd "$builddir"
- export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="6b682d27a0df8ce971ea48aeca5162e1c70929c51cf27119b30361477876b0b86ecb15ab13a6c3cbe5bb85be9e600589fb9e3c9c4e94bad3fc05b675d293adad Sub-Exporter-0.987.tar.gz"
+sha512sums="7829bbca1eb332156ba33dd0cbde7f57c178ad56cc03e76c1b7d5327c94ce15bb5172894eeef011e12e472071a7d7a07f514a1121535d96ae05ed0ef6734b329 Sub-Exporter-0.991.tar.gz"
diff --git a/user/perl-sub-handlesvia/APKBUILD b/user/perl-sub-handlesvia/APKBUILD
new file mode 100644
index 000000000..ca1ce7733
--- /dev/null
+++ b/user/perl-sub-handlesvia/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-sub-handlesvia
+_pkgreal=Sub-HandlesVia
+_author=TOBYINK
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.050000
+pkgrel=0
+pkgdesc="Alternative handles_via implementation for Moo"
+url="https://metacpan.org/pod/Sub::HandlesVia"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-class-method-modifiers perl-class-tiny perl-exporter-tiny
+ perl-role-hooks perl-role-tiny perl-type-tiny"
+checkdepends="perl-moo perl-moose perl-mouse perl-object-pad perl-test-fatal
+ perl-test-requires"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="c91d356d0aa461d446157ebf4819350db13060dd0bcd383b06037a7e05fb36935d71348270aa9e72daf6031a79956a5887a14e284554d83e5e88665146c388e2 Sub-HandlesVia-0.050000.tar.gz"
diff --git a/user/perl-sub-identify/APKBUILD b/user/perl-sub-identify/APKBUILD
index 10e60ed79..9e7adff97 100644
--- a/user/perl-sub-identify/APKBUILD
+++ b/user/perl-sub-identify/APKBUILD
@@ -1,31 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-sub-identify
+_pkgreal=Sub-Identify
+_author=RGARCIA
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.14
pkgrel=0
pkgdesc="Retrieve names of Perl code references"
url="https://metacpan.org/release/Sub-Identify"
arch="all"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RG/RGARCIA/Sub-Identify-$pkgver.tar.gz"
-builddir="$srcdir/Sub-Identify-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-sub-info/APKBUILD b/user/perl-sub-info/APKBUILD
new file mode 100644
index 000000000..7c1d6d238
--- /dev/null
+++ b/user/perl-sub-info/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-sub-info
+_pkgreal=Sub-Info
+_author=EXODIST
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.002
+pkgrel=0
+pkgdesc="Perl module for introspecting subroutines"
+url="https://metacpan.org/pod/Sub::Info"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-importer"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="e3ad2c8b270a44f9de2d5b71845a4a21f363a234edf2ddb9942c2fb2e4d765eedff3653a047f025b9d1dfaeff32ddd58aeff7f81fa42e6f4b57f5ca6311519b3 Sub-Info-0.002.tar.gz"
diff --git a/user/perl-sub-install/APKBUILD b/user/perl-sub-install/APKBUILD
index d0883e0cd..5b49719dc 100644
--- a/user/perl-sub-install/APKBUILD
+++ b/user/perl-sub-install/APKBUILD
@@ -1,34 +1,33 @@
-# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-sub-install
_pkgreal=Sub-Install
-pkgver=0.928
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.929
pkgrel=0
pkgdesc="Install subroutines into packages easily"
url="https://metacpan.org/release/Sub-Install"
arch="noarch"
license="GPL-1.0+ OR Artistic-1.0-Perl"
depends="perl"
-makedepends="perl-dev"
+makedepends=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/$_pkgreal-$pkgver.tar.gz"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$_builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="3f25df9f5992075968830d4235e9f6520c526331b9180391e41483241d43253a61ad8dc381d77aaeb6c6fb841cfc5c097598e62abb46208894275c393a133ade Sub-Install-0.928.tar.gz"
+sha512sums="f51992531607af97ff6b8700bf23a2918261d05f24886781f36e2676c130df5d109a42ad3d6f8d089a6ee2c050af27ec5fc2ef9610ee993eca6549866a4fe8d7 Sub-Install-0.929.tar.gz"
diff --git a/user/perl-sub-name/APKBUILD b/user/perl-sub-name/APKBUILD
index 656a7a7ee..9a6b3cba7 100644
--- a/user/perl-sub-name/APKBUILD
+++ b/user/perl-sub-name/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-sub-name
-pkgver=0.21
+_pkgreal=Sub-Name
+_author=ETHER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.27
pkgrel=0
pkgdesc="Rename a Perl sub"
url="https://metacpan.org/release/Sub-Name"
arch="all"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Sub-Name-$pkgver.tar.gz"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
builddir="$srcdir/Sub-Name-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="94be57b569f6c434ec3ef4fdff1a9d946067cf6c7ee58f716f4bc188764ee103f9a2579ee0ddf4068ec6889c186d9d447d8252a5dd2a0e882719239ac1102294 Sub-Name-0.21.tar.gz"
+sha512sums="766c2b229a222e84c40069f2aba0611f7936a9018c375c66b9ed58c4b3ad074cf102906e23aaf514e6897a8aaeaee1658bc2887d73052b8f67ccdf3cab52f71f Sub-Name-0.27.tar.gz"
diff --git a/user/perl-sub-quote/APKBUILD b/user/perl-sub-quote/APKBUILD
index d8f15cd71..83709959f 100644
--- a/user/perl-sub-quote/APKBUILD
+++ b/user/perl-sub-quote/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-sub-quote
-pkgver=2.006003
+_pkgreal=Sub-Quote
+_author=HAARG
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.006008
pkgrel=0
pkgdesc="Efficient generation of subroutines via string eval"
url="https://metacpan.org/release/Sub-Quote"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl"
-makedepends="perl-dev perl-test-fatal"
-install=""
+checkdepends="perl-test-fatal"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/H/HA/HAARG/Sub-Quote-$pkgver.tar.gz"
-builddir="$srcdir/Sub-Quote-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="d486556750fa8cf8152f86204ed2156ff33dd4ba467955c3f9621b67b68acb543f953eb1476297a85d3ee2bc9755072491ad9d34c33a496d5ba5828c687f6d83 Sub-Quote-2.006003.tar.gz"
+sha512sums="474c02953555e815c64270299a2ea36a172c11ff739d77a3f5133f4c40d5ec48ad60c09465bd93864c254f180ba73d8381752ac649f8d4f729199f3088e71e26 Sub-Quote-2.006008.tar.gz"
diff --git a/user/perl-sub-uplevel/APKBUILD b/user/perl-sub-uplevel/APKBUILD
new file mode 100644
index 000000000..fe85a41e7
--- /dev/null
+++ b/user/perl-sub-uplevel/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-sub-uplevel
+_pkgreal=Sub-Uplevel
+_author=DAGOLDEN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.2800
+pkgrel=0
+pkgdesc="Apparently run subs in a higher stack frame"
+url="https://metacpan.org/pod/Sub::Uplevel"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="655bab9441bc81e4002db2e715b5c1f771ee35a03bc643a44d4a279aca55431fe17e64332919311a51db2dc02c16b5f97c5751595e61ad0ab96cd0a10ac2d230 Sub-Uplevel-0.2800.tar.gz"
diff --git a/user/perl-syntax-keyword-match/APKBUILD b/user/perl-syntax-keyword-match/APKBUILD
new file mode 100644
index 000000000..e6c4db213
--- /dev/null
+++ b/user/perl-syntax-keyword-match/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-syntax-keyword-match
+_pkgreal=Syntax-Keyword-Match
+_author=PEVANS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.13
+pkgrel=0
+pkgdesc="Perl support for match/case keywords"
+url="https://metacpan.org/pod/Syntax::Keyword::Match"
+arch="all"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+checkdepends="perl-test2-suite"
+makedepends="perl-dev perl-module-build perl-xs-parse-keyword"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="472a0b25b8f19a09f0a7d51963bb76382a6273e505b4141148353f0375610e77d2d458fc7cf6e1cb02aa127f252f882559b186bc35b441af5fa1dad7e3aa4e25 Syntax-Keyword-Match-0.13.tar.gz"
diff --git a/user/perl-syntax-keyword-try/APKBUILD b/user/perl-syntax-keyword-try/APKBUILD
new file mode 100644
index 000000000..b85d3d7f4
--- /dev/null
+++ b/user/perl-syntax-keyword-try/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-syntax-keyword-try
+_pkgreal=Syntax-Keyword-Try
+_author=PEVANS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.29
+pkgrel=0
+pkgdesc="An implementation of try/catch/finally for Perl"
+url="https://metacpan.org/pod/Syntax::Keyword::Try"
+arch="all"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+checkdepends="perl-test2-suite"
+makedepends="perl-dev perl-module-build perl-xs-parse-keyword"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="269ea66916c39852262bc60b1661e90adf55489f1369a745a3c3ba24dd4335203a46d8bf8ddd39dcdefc4ae3314ce06b1fa7956d0a4bd23bba6fb809adaa1814 Syntax-Keyword-Try-0.29.tar.gz"
diff --git a/user/perl-task-freecellsolver-testing/APKBUILD b/user/perl-task-freecellsolver-testing/APKBUILD
index c31fc7b7d..0c3bcb792 100644
--- a/user/perl-task-freecellsolver-testing/APKBUILD
+++ b/user/perl-task-freecellsolver-testing/APKBUILD
@@ -1,38 +1,39 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-task-freecellsolver-testing
-pkgver=0.0.11
+_pkgreal=Task-FreecellSolver-Testing
+_author=SHLOMIF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.0.12
pkgrel=0
pkgdesc="Perl module for testing the Freecell Solver package"
url="https://metacpan.org/release/Task-FreecellSolver-Testing"
arch="noarch"
license="MIT"
-depends="perl-code-tidyall perl-env-path perl-file-which
+depends="perl perl-code-tidyall perl-env-path perl-file-which
perl-games-solitaire-verify perl-inline perl-inline-c
perl-list-moreutils perl-moo perl-moox perl-moox-late perl-path-tiny
perl-string-shellquote perl-task-test-run-allplugins
perl-template-toolkit perl-test-data-split perl-test-differences
perl-test-perltidy perl-test-runvalgrind perl-test-trailingspace"
-makedepends="perl-dev perl-module-build"
+makedepends="perl-module-build"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Task-FreecellSolver-Testing-v$pkgver.tar.gz"
-builddir="$srcdir/Task-FreecellSolver-Testing-v$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
perl Build.PL installdirs=vendor
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="85c3d7e68e0fa14abac2442ec7b6e90cc4df9f6733fbd87e5a872043a03a71d8cd3a262c816d861a1c729646ff379665c1d5d6e0bc80ae476db089d9d3793b82 Task-FreecellSolver-Testing-v0.0.11.tar.gz"
+sha512sums="8496e7b56851440bae0a0aba076e84014a8db8260356603b3b02252ecc1fa68b9b773e916c4330d7bc930f04923001bf14539f2efb43cedafa73a0213db6a6f7 Task-FreecellSolver-Testing-0.0.12.tar.gz"
diff --git a/user/perl-task-test-run-allplugins/APKBUILD b/user/perl-task-test-run-allplugins/APKBUILD
index 353fae3b0..0a852bda6 100644
--- a/user/perl-task-test-run-allplugins/APKBUILD
+++ b/user/perl-task-test-run-allplugins/APKBUILD
@@ -1,38 +1,39 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-task-test-run-allplugins
-pkgver=0.0105
+_pkgreal=Task-Test-Run-AllPlugins
+_author=SHLOMIF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.0106
pkgrel=0
pkgdesc="Install all the Test::Run plugins"
url="https://metacpan.org/release/Task-Test-Run-AllPlugins"
arch="noarch"
license="MIT"
-depends="perl-test-run perl-test-run-cmdline
+depends="perl perl-test-run perl-test-run-cmdline
perl-test-run-plugin-alternateinterpreters
perl-test-run-plugin-breakonfailure
perl-test-run-plugin-colourfileverdicts
perl-test-run-plugin-coloursummary
perl-test-run-plugin-trimdisplayedfilenames"
-makedepends="perl-dev"
+makedepends=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Task-Test-Run-AllPlugins-$pkgver.tar.gz"
-builddir="$srcdir/Task-Test-Run-AllPlugins-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="5d2baa82658a3a80b07fd22d1ca2ccf7a1ff528685f8044fe5b152130957465d4bd1b032a2a02c966e7739d3b947b709bffabf96d74b77fe6c65479f6f09f964 Task-Test-Run-AllPlugins-0.0105.tar.gz"
+sha512sums="22c13c064d19aa00816951081c0f1801f84bcf4f1f204598b327ed4a68c75d2ab75f9b1066eaf7fe80fbfcf87dfdb0f839d65603812966776f488871b61141ba Task-Test-Run-AllPlugins-0.0106.tar.gz"
diff --git a/user/perl-task-weaken/APKBUILD b/user/perl-task-weaken/APKBUILD
index d816d62ef..cd6bb9cc4 100644
--- a/user/perl-task-weaken/APKBUILD
+++ b/user/perl-task-weaken/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-task-weaken
-_pkgname=Task-Weaken
+_pkgreal=Task-Weaken
+_author=ETHER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.06
pkgrel=0
pkgdesc="Ensure Perl platform has weaken support"
url="https://metacpan.org/release/Task-Weaken"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-sub-name"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-sub-name"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Task-Weaken-$pkgver.tar.gz"
-builddir="$srcdir/Task-Weaken-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-template-gd/APKBUILD b/user/perl-template-gd/APKBUILD
index fd5dfd789..92370d86b 100644
--- a/user/perl-template-gd/APKBUILD
+++ b/user/perl-template-gd/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-template-gd
-_pkgname=Template-GD
+_pkgreal=Template-GD
+_author=ABW
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=2.66
pkgrel=0
pkgdesc="Use GD from Perl's Template Toolkit"
url="https://metacpan.org/release/Template-GD"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-gd perl-template-toolkit"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-gd perl-template-toolkit"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/A/AB/ABW/Template-GD-$pkgver.tar.gz"
-builddir="$srcdir/Template-GD-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-template-toolkit/APKBUILD b/user/perl-template-toolkit/APKBUILD
index 4d1cdec4c..e3182764f 100644
--- a/user/perl-template-toolkit/APKBUILD
+++ b/user/perl-template-toolkit/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-template-toolkit
-pkgver=2.28
+_pkgreal=Template-Toolkit
+_author=ABW
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=3.101
pkgrel=0
pkgdesc="Comprehensive template processing system"
url="https://metacpan.org/release/Template-Toolkit"
arch="all"
-license="Artistic-1.0-Perl"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl-appconfig"
-makedepends="perl-dev"
checkdepends="perl-cgi perl-test-leaktrace"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/A/AT/ATOOMIC/Template-Toolkit-$pkgver.tar.gz"
-builddir="$srcdir/Template-Toolkit-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="8f18a411e05108cddc4f2c5560c76b663d6b913f101c6b294b584390cd76d79805afa8208e1dfaf01011ff7d6364844a24587b33d8a3d330fb6b410e75e78a1d Template-Toolkit-2.28.tar.gz"
+sha512sums="7e74b1317a7fc113161999c9eeb63bdbee9ed8ff843bd4388039a683976eb71cd4ee2af7fecab639f3be7ef17386a45a6065a4eac6b599b5a0cc2f235d34962f Template-Toolkit-3.101.tar.gz"
diff --git a/user/perl-term-readkey/APKBUILD b/user/perl-term-readkey/APKBUILD
index 6b789b097..8b3120249 100644
--- a/user/perl-term-readkey/APKBUILD
+++ b/user/perl-term-readkey/APKBUILD
@@ -1,7 +1,10 @@
-# Contributor: Luis Ressel <aranea@aixah.de>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Contributor: Mira Ressel <aranea@aixah.de>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-term-readkey
_pkgreal=TermReadKey
+_author=JSTOWE
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=2.38
pkgrel=0
pkgdesc="Change terminal modes, and perform non-blocking reads"
@@ -11,22 +14,19 @@ license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://search.cpan.org/CPAN/authors/id/J/JS/JSTOWE/$_pkgreal-$pkgver.tar.gz"
+source="https://search.cpan.org/CPAN/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-term-size-any/APKBUILD b/user/perl-term-size-any/APKBUILD
new file mode 100644
index 000000000..3774945cc
--- /dev/null
+++ b/user/perl-term-size-any/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-term-size-any
+_pkgreal=Term-Size-Any
+_author=FERREIRA
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.002
+pkgrel=0
+pkgdesc="Perl module for retrieving terminal sizing"
+url="https://metacpan.org/pod/Term::Size::Any"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-devel-hide perl-term-size-perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="e34d7e8d03e71e9f1758551e702711550804560a3165e0e9cea6756a7d87043e0408123b8c7997c79d6d77e7d48f167ed5aa12e4d572b1d787ef638ff71a3a1d Term-Size-Any-0.002.tar.gz"
diff --git a/user/perl-term-size-perl/APKBUILD b/user/perl-term-size-perl/APKBUILD
new file mode 100644
index 000000000..ab8a634bb
--- /dev/null
+++ b/user/perl-term-size-perl/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-term-size-perl
+_pkgreal=Term-Size-Perl
+_author=FERREIRA
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.031
+pkgrel=0
+pkgdesc="Pure Perl module for retrieving terminal sizing"
+url="https://metacpan.org/pod/Term::Size::Perl"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="7babfb7637e795f1826a964a64cdca48bc7d92dc2cdff0fbdf62f2462fcd2be81475703f577baa18ce3df24f6ae8c103ca19ea53aa3b78733391ed456fcb66bc Term-Size-Perl-0.031.tar.gz"
diff --git a/user/perl-term-table/APKBUILD b/user/perl-term-table/APKBUILD
new file mode 100644
index 000000000..594cf9697
--- /dev/null
+++ b/user/perl-term-table/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-term-table
+_pkgreal=Term-Table
+_author=EXODIST
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.018
+pkgrel=0
+pkgdesc="Perl module for producing pretty tables for terminal applications"
+url="https://metacpan.org/pod/Term::Table"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-importer"
+checkdepends="perl-test-simple"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="99670976b884482697d667cf5db3cc3ff60e511270eab7e0df0cd922cfcc38297d143f03579df153a62db201db8d9e81e5f8bdaa94015d0b9ee9a5c033470621 Term-Table-0.018.tar.gz"
diff --git a/user/perl-test-class-most/APKBUILD b/user/perl-test-class-most/APKBUILD
index fe48ea68e..f75d0d3ab 100644
--- a/user/perl-test-class-most/APKBUILD
+++ b/user/perl-test-class-most/APKBUILD
@@ -1,31 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-class-most
+_pkgreal=Test-Class-Most
+_author=OVID
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.08
pkgrel=0
pkgdesc="Test Perl classes the easy way"
url="https://metacpan.org/release/Test-Class-Most"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends="perl-test-class perl-test-most"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-test-class perl-test-most"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/O/OV/OVID/Test-Class-Most-$pkgver.tar.gz"
-builddir="$srcdir/Test-Class-Most-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-test-class/APKBUILD b/user/perl-test-class/APKBUILD
index 6043308d4..8499d5e31 100644
--- a/user/perl-test-class/APKBUILD
+++ b/user/perl-test-class/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-class
-pkgver=0.50
+_pkgreal=Test-Class
+_author=SZABGAB
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.52
pkgrel=0
pkgdesc="Create Perl test classes in xUnit/JUnit style"
url="https://metacpan.org/release/Test-Class"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends="perl-module-runtime perl-mro-compat perl-try-tiny"
-makedepends="perl-dev"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-module-runtime perl-mro-compat perl-try-tiny"
checkdepends="perl-test-exception"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Test-Class-$pkgver.tar.gz"
-builddir="$srcdir/Test-Class-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="27ae19f60a916f5a23cccdc02ff6168e76d5f1cee5df196df4fe50024f7270ee9eaffdf02e9b6de70565c9b6b30606ad0a30477ac8951164b87c641caf960dcc Test-Class-0.50.tar.gz"
+sha512sums="94d38a7cc93b36ea45c0c209afa7fcba01f45006b8ade638e9591be2510ca0d89c04e0dc271ede870e00f834626d4d271d5799b5044060e9f9b670459376b64f Test-Class-0.52.tar.gz"
diff --git a/user/perl-test-cleannamespaces/APKBUILD b/user/perl-test-cleannamespaces/APKBUILD
index 71eb1e9d7..39603bf0b 100644
--- a/user/perl-test-cleannamespaces/APKBUILD
+++ b/user/perl-test-cleannamespaces/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-cleannamespaces
+_pkgreal=Test-CleanNamespaces
+_author=ETHER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.24
pkgrel=0
pkgdesc="Check Perl code for uncleaned imports"
url="https://metacpan.org/release/Test-CleanNamespaces"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends="perl-file-pushd perl-module-runtime perl-namespace-clean
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-file-pushd perl-module-runtime perl-namespace-clean
perl-package-stash perl-sub-identify"
-makedepends="perl-dev"
checkdepends="perl-moo perl-mouse perl-sub-exporter perl-test-deep
perl-test-needs perl-test-warnings"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Test-CleanNamespaces-$pkgver.tar.gz"
-builddir="$srcdir/Test-CleanNamespaces-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-test-command-simple/APKBUILD b/user/perl-test-command-simple/APKBUILD
new file mode 100644
index 000000000..80e5ff098
--- /dev/null
+++ b/user/perl-test-command-simple/APKBUILD
@@ -0,0 +1,30 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-test-command-simple
+pkgver=0.05
+pkgrel=0
+pkgdesc="Simple interface for testing external commands in Perl"
+url="https://metacpan.org/pod/Test::Command::Simple"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/D/DM/DMCBRIDE/Test-Command-Simple-$pkgver.tar.gz"
+builddir="$srcdir/Test-Command-Simple-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="65c921785d775a782dae9d3a3b81350374cb97bb09dd604aab71aeaed4e6818e32d8fd60c97b88d3d11ff9be8e28f0c082246e4c8981f1e36b6268464fc71c9b Test-Command-Simple-0.05.tar.gz"
diff --git a/user/perl-test-command/APKBUILD b/user/perl-test-command/APKBUILD
index 589d61488..63d7316d3 100644
--- a/user/perl-test-command/APKBUILD
+++ b/user/perl-test-command/APKBUILD
@@ -1,45 +1,34 @@
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-command
_pkgreal=Test-Command
+_author=DANBOO
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.11
pkgrel=2
pkgdesc="Test routines for external commands in Perl"
url="https://metacpan.org/release/Test-Command"
arch="noarch"
-license="GPL-2.0-only OR Artistic-1.0-Perl"
-cpandepends=""
-cpanmakedepends="perl-module-build"
-depends="$cpandepends"
-makedepends="perl-dev $cpanmakedepends"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev perl-module-build"
subpackages="$pkgname-doc"
-source="https://search.cpan.org/CPAN/authors/id/D/DA/DANBOO/$_pkgreal-$pkgver.tar.gz"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
builddir="$srcdir/$_pkgreal-$pkgver"
-prepare() {
- cd "$builddir"
- if [ -e Build.PL ]; then
- perl Build.PL installdirs=vendor
- else
- PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
- fi
-}
-
build() {
- cd "$builddir"
- export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ perl Build.PL installdirs=vendor
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-test-data-split/APKBUILD b/user/perl-test-data-split/APKBUILD
index 0e5269e41..8e59b9ab2 100644
--- a/user/perl-test-data-split/APKBUILD
+++ b/user/perl-test-data-split/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-data-split
-pkgver=0.2.1
+_pkgreal=Test-Data-Split
+_author=SHLOMIF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.2.2
pkgrel=0
pkgdesc="Split data-driven Perl tests into several test scripts"
url="https://metacpan.org/release/Test-Data-Split"
arch="noarch"
license="MIT"
-depends="perl-io-all perl-list-moreutils perl-moox perl-moox-late"
-makedepends="perl-dev perl-module-build"
+depends="perl perl-io-all perl-list-moreutils perl-moox perl-moox-late"
checkdepends="perl-test-differences"
+makedepends="perl-dev perl-module-build"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-Data-Split-$pkgver.tar.gz"
-builddir="$srcdir/Test-Data-Split-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="db6ae688318b6cd98cbbdf0c94e7a1d5ea52c96262d7ed5e1aea2a2380cfa851c468d8775c3cd5520f9e5e8bfdc67e367d66d0027f1452d208250c88f76bffae Test-Data-Split-0.2.1.tar.gz"
+sha512sums="3a2b5f4717b525dcd081f1807aac684fe2ff9b02060e3a4726a2a98e1f86db7e16b8cb192fe46ae66a7739660fac6573cde549f68e6c5da2b4d3035da2203dd0 Test-Data-Split-0.2.2.tar.gz"
diff --git a/user/perl-test-deep/APKBUILD b/user/perl-test-deep/APKBUILD
deleted file mode 100644
index 0c488f4e2..000000000
--- a/user/perl-test-deep/APKBUILD
+++ /dev/null
@@ -1,34 +0,0 @@
-# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
-pkgname=perl-test-deep
-pkgver=1.128
-pkgrel=0
-pkgdesc="Extremely flexible deep comparison"
-url="https://metacpan.org/pod/Test::Deep"
-arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
-depends="perl"
-makedepends="perl-dev"
-install=""
-subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Test-Deep-$pkgver.tar.gz"
-builddir="$srcdir/Test-Deep-$pkgver"
-
-build() {
- cd "$builddir"
- PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
- make
-}
-
-check() {
- cd "$builddir"
- make test
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
- find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
-}
-
-sha512sums="d4642b3268a10d8e882beabfbb3b3bf891a57aa7ebb74bc4919a4368df9c9acd2351498401538ae50299071f99e06b4443686d20f8c9f95f5fd588309ccee302 Test-Deep-1.128.tar.gz"
diff --git a/user/perl-test-differences/APKBUILD b/user/perl-test-differences/APKBUILD
index 25948de34..726f88e36 100644
--- a/user/perl-test-differences/APKBUILD
+++ b/user/perl-test-differences/APKBUILD
@@ -1,7 +1,11 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-differences
-pkgver=0.67
+_pkgreal=Test-Differences
+_author=DCANTRELL
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.71
pkgrel=0
pkgdesc="Test strings and data structures and show differences if not ok"
url="https://metacpan.org/pod/Test::Differences"
@@ -9,26 +13,22 @@ arch="noarch"
license="Artistic-1.0-Perl OR GPL-1.0"
depends="perl perl-text-diff perl-capture-tiny perl-test-pod-coverage perl-test-pod"
makedepends="perl-dev"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DC/DCANTRELL/Test-Differences-$pkgver.tar.gz"
-builddir="$srcdir/Test-Differences-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="72f5e70d5ed953f50e7fff36645612b8e531354a217de5e7780ee76d72c95e1aed1f1f23a1aaf447b2893246d0c8d0452f2946afa820966d85b2c99dcf9b5ed9 Test-Differences-0.67.tar.gz"
+sha512sums="6e6c882b41dd25cbb91d28ec947e669f660df0d8e477a347237a39eba51c74c9e8bcabe8ffccaec7d5912c62cf6ae837e2d2f28551bd9fc110d9503acc86e72e Test-Differences-0.71.tar.gz"
diff --git a/user/perl-test-failwarnings/APKBUILD b/user/perl-test-failwarnings/APKBUILD
new file mode 100644
index 000000000..fca983494
--- /dev/null
+++ b/user/perl-test-failwarnings/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-test-failwarnings
+_pkgreal=Test-FailWarnings
+_author=DAGOLDEN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.008
+pkgrel=0
+pkgdesc="Perl module for failing tests on caught warnings"
+url="https://metacpan.org/pod/Test::FailWarnings"
+arch="noarch"
+license="Apache-2.0"
+depends="perl perl-capture-tiny"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="7bffcc18191326095d99ad01be6426f4d9d927f769a156318f9abfea67da6adfecb657bad89390740c9f531fe69c717afa1d250258eed63d127bf10cbbf2bd51 Test-FailWarnings-0.008.tar.gz"
diff --git a/user/perl-test-file-sharedir/APKBUILD b/user/perl-test-file-sharedir/APKBUILD
index 24ecbc048..231c40da9 100644
--- a/user/perl-test-file-sharedir/APKBUILD
+++ b/user/perl-test-file-sharedir/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-file-sharedir
-_pkgname=Test-File-ShareDir
+_pkgreal=Test-File-ShareDir
+_author=KENTNL
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.001002
pkgrel=0
pkgdesc="Module testing support for Perl"
url="https://metacpan.org/release/Test-File-ShareDir"
arch="noarch"
-license="Artistic-1.0-Perl or GPL-2.0-only"
-depends="perl-class-tiny perl-file-copy-recursive perl-file-sharedir
+license="Artistic-1.0-Perl or GPL-1.0+"
+depends="perl perl-class-tiny perl-file-copy-recursive perl-file-sharedir
perl-path-tiny perl-scope-guard"
checkdepends="perl-test-fatal"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/K/KE/KENTNL/Test-File-ShareDir-$pkgver.tar.gz"
-builddir="$srcdir/Test-File-ShareDir-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-test-file/APKBUILD b/user/perl-test-file/APKBUILD
index 947598ca1..b36d96179 100644
--- a/user/perl-test-file/APKBUILD
+++ b/user/perl-test-file/APKBUILD
@@ -1,35 +1,35 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-file
-pkgver=1.443
+_pkgreal=Test-File
+_author=BDFOY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.993
pkgrel=0
pkgdesc="Test file attributes"
url="https://metacpan.org/pod/Test::File"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-2.0"
depends="perl"
-makedepends="perl-dev"
checkdepends="perl-test-pod perl-test-pod-coverage perl-test-utf8"
-install=""
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/B/BD/BDFOY/Test-File-$pkgver.tar.gz"
-builddir="$srcdir/Test-File-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="9ad66b3a9dc1c3752a4ec22934db9139ac010ac3237a3de018d4ec4a65ac047f0152ab9e7979a2615412c1af02a1f2dfa0dbfdf5eba5358628b1b443232c45b2 Test-File-1.443.tar.gz"
+sha512sums="0e14580a11afc2f3115d5594be226237803ad8e462c314a2b775ca96bf491cfeea84bd90ae92a70c58d3d8fc7c0f21d38b54a58d29dd01a2c082c0cbfecb0aaf Test-File-1.993.tar.gz"
diff --git a/user/perl-test-filename/APKBUILD b/user/perl-test-filename/APKBUILD
new file mode 100644
index 000000000..ed1965ca0
--- /dev/null
+++ b/user/perl-test-filename/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-test-filename
+_pkgreal=Test-Filename
+_author=DAGOLDEN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.03
+pkgrel=0
+pkgdesc="Perl module for portable filename comparison"
+url="https://metacpan.org/pod/Test::Filename"
+arch="noarch"
+license="Apache-2.0"
+depends="perl perl-path-tiny perl-try-tiny"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="7ceb0d06937b9701e45629008946fd125fa7a97386f0cbacd8571119ba68699db3acb999d973ed4e401a32ccacbd3ba1f51de7a8c93a95dff6b64605326be235 Test-Filename-0.03.tar.gz"
diff --git a/user/perl-test-identity/APKBUILD b/user/perl-test-identity/APKBUILD
new file mode 100644
index 000000000..94cb785c5
--- /dev/null
+++ b/user/perl-test-identity/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-test-identity
+_pkgreal=Test-Identity
+_author=PEVANS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.01
+pkgrel=0
+pkgdesc="Assert the referential identity of a reference"
+url="https://metacpan.org/pod/Test::Identity"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+makedepends="perl-module-build"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="eee20978e2e39a11c5649b4609840f02686482f8fe4c0c2de639bfd9749ba9a08202f70b660432f1142ff800824ee2a6e9e43873f3f089041cd3e864ff502c32 Test-Identity-0.01.tar.gz"
diff --git a/user/perl-test-manifest/APKBUILD b/user/perl-test-manifest/APKBUILD
index c4a1e71d2..03fb567cd 100644
--- a/user/perl-test-manifest/APKBUILD
+++ b/user/perl-test-manifest/APKBUILD
@@ -1,41 +1,33 @@
-# Automatically generated by apkbuild-cpan, template 1
-# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-manifest
_pkgreal=Test-Manifest
-pkgver=2.021
+_author=BDFOY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.024
pkgrel=0
pkgdesc="Interact with a t/test_manifest file"
url="https://metacpan.org/release/Test-Manifest"
arch="noarch"
license="Artistic-2.0"
-depends=""
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://search.cpan.org/CPAN/authors/id/B/BD/BDFOY/$_pkgreal-$pkgver.tar.gz"
+source="https:///cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
builddir="$srcdir/$_pkgreal-$pkgver"
-prepare() {
- cd "$builddir"
- export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
- PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
-}
-
build() {
- cd "$builddir"
- export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="dca3bef8373b9de119f5d2fa58c8a5fc4d8c1a914ca982300767f84087f8bdeb49a8a33e41f675c347fccbbab6a81f7eae8bc704e3d24e3088776cd0ea9f932c Test-Manifest-2.021.tar.gz"
+sha512sums="e68b6e262296689b882e1c920b9592cd83f285bba11bbae93c5519c2f19504ecd58de8d6593c39a0b99f4c93fbde3a3236735bb6fa526918ffcf49cc8ccfad5e Test-Manifest-2.024.tar.gz"
diff --git a/user/perl-test-memory-cycle/APKBUILD b/user/perl-test-memory-cycle/APKBUILD
new file mode 100644
index 000000000..7ddc9456d
--- /dev/null
+++ b/user/perl-test-memory-cycle/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-test-memory-cycle
+_pkgreal=Test-Memory-Cycle
+_author=PETDANCE
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.06
+pkgrel=0
+pkgdesc="Check for memory leaks and circular references"
+url="https://metacpan.org/pod/Test::Memory::Cycle"
+arch="noarch"
+license="Artistic-2.0"
+depends="perl perl-devel-cycle perl-padwalker"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="d25ffd0439e47e0b57f136489ae200ca24c8434a19473d23f70d0f8a2c8d18a93fe453e9b1b844b5edbd9c788bfe3c83f5413441389dd9b53c780f734afeb804 Test-Memory-Cycle-1.06.tar.gz"
diff --git a/user/perl-test-mockrandom/APKBUILD b/user/perl-test-mockrandom/APKBUILD
index ddf840a56..8da38c0db 100644
--- a/user/perl-test-mockrandom/APKBUILD
+++ b/user/perl-test-mockrandom/APKBUILD
@@ -1,6 +1,10 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-mockrandom
+_pkgreal=Test-MockRandom
+_author=DAGOLDEN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.01
pkgrel=0
pkgdesc="Replaces random number generation with non-random number generation"
@@ -9,24 +13,20 @@ arch="noarch"
license="Apache-2.0"
depends="perl"
makedepends="perl-dev"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DA/DAGOLDEN/Test-MockRandom-$pkgver.tar.gz"
-builddir="$srcdir/Test-MockRandom-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-test-mocktime/APKBUILD b/user/perl-test-mocktime/APKBUILD
index b5c389b7c..19a47b1d6 100644
--- a/user/perl-test-mocktime/APKBUILD
+++ b/user/perl-test-mocktime/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-mocktime
-_pkgname=Test-MockTime
+_pkgreal=Test-MockTime
+_author=DDICK
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.17
pkgrel=0
pkgdesc="Simulate different times for Perl testing"
url="https://metacpan.org/release/Test-MockTime"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/D/DD/DDICK/Test-MockTime-$pkgver.tar.gz"
-builddir="$srcdir/Test-MockTime-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-test-more-utf8/APKBUILD b/user/perl-test-more-utf8/APKBUILD
new file mode 100644
index 000000000..57216cf97
--- /dev/null
+++ b/user/perl-test-more-utf8/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-test-more-utf8
+_pkgreal=Test-More-UTF8
+_author=MONS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.05
+pkgrel=0
+pkgdesc="UTF-8 extensions for Perl Test::More module"
+url="https://metacpan.org/pod/Test::More::UTF8"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="9a1ba4216037aa1517ef57b2e5a40bd78f2f3aaaff3683a4e45f10d4b574b5e2752509a5620d8a76156135b4fa7182320a182a5a6900bf450979d805d7dc05a3 Test-More-UTF8-0.05.tar.gz"
diff --git a/user/perl-test-most/APKBUILD b/user/perl-test-most/APKBUILD
index 34cd800f8..78decf35c 100644
--- a/user/perl-test-most/APKBUILD
+++ b/user/perl-test-most/APKBUILD
@@ -1,33 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-most
-pkgver=0.35
+_pkgreal=Test-Most
+_author=OVID
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.38
pkgrel=0
pkgdesc="Most commonly needed Perl test functions and features"
url="https://metacpan.org/release/Test-Most"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends="perl-exception-class perl-test-deep perl-test-differences perl-test-exception perl-test-warn"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-exception-class perl-test-deep perl-test-differences
+ perl-test-exception perl-test-warn"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/O/OV/OVID/Test-Most-$pkgver.tar.gz"
-builddir="$srcdir/Test-Most-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="1b2d201811e59d7afce47ff5f7da67c170d4685ffbec23360757b5cacc9fe72fc82609bc46cc9d8e351fdb75715696457c201dd94fadaeca70a6f31690236291 Test-Most-0.35.tar.gz"
+sha512sums="cb91e8a1cb61d5ad8d222f077fe2681a68d9b1806263d37989446d42baf911e3b6789cd1fd28fdfb7e4de17ee7766545d5c07356e53e56c5fb6d7c2af9d5d448 Test-Most-0.38.tar.gz"
diff --git a/user/perl-test-number-delta/APKBUILD b/user/perl-test-number-delta/APKBUILD
new file mode 100644
index 000000000..a7735b63f
--- /dev/null
+++ b/user/perl-test-number-delta/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-test-number-delta
+_pkgreal=Test-Number-Delta
+_author=DAGOLDEN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.06
+pkgrel=0
+pkgdesc="Compares the difference between numbers against a given tolerance"
+url="https://metacpan.org/pod/Test::Number::Delta"
+arch="noarch"
+license="Apache-2.0"
+depends="perl"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="87d64aad1ffc180ac9105d8f80aa1086ae9f6d11d7fead6f77daca6b0440320ed49dc628bed88b67836c091116fa43402b4a902e8319997fbad7a0fa19edfd79 Test-Number-Delta-1.06.tar.gz"
diff --git a/user/perl-test-output/APKBUILD b/user/perl-test-output/APKBUILD
index 8454737f3..e9aad5f19 100644
--- a/user/perl-test-output/APKBUILD
+++ b/user/perl-test-output/APKBUILD
@@ -1,44 +1,34 @@
-# Automatically generated by apkbuild-cpan, template 1
-# Contributor: Francesco Colista <fcolista@alpinelinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-output
_pkgreal=Test-Output
-pkgver=1.031
+_author=BDFOY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.034
pkgrel=0
pkgdesc="Utilities to test STDOUT and STDERR messages"
url="https://metacpan.org/release/Test-Output"
arch="noarch"
license="Artistic-2.0"
-cpandepends="perl-capture-tiny perl-sub-exporter perl-test-simple"
-cpanmakedepends=""
-depends="$cpandepends"
-makedepends="perl-dev $cpanmakedepends"
+depends="perl perl-capture-tiny perl-sub-exporter perl-test-simple"
checkdepends="perl-test-pod"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/B/BD/BDFOY/$_pkgreal-$pkgver.tar.gz"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
builddir="$srcdir/$_pkgreal-$pkgver"
-prepare() {
- cd "$builddir"
- export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
- PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
-}
-
build() {
- cd "$builddir"
- export CFLAGS=`perl -MConfig -E 'say $Config{ccflags}'`
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="b443d5a4ab7be1c308b74ebc9a1a50022b404886e8a1dbd2700d974ead506a6976ec6d5c141528cf1c2833174c3afd9023362cb0b4e000f0e878d2e3e9f90e90 Test-Output-1.031.tar.gz"
+sha512sums="f7e6a121dbcaa6644b5128ba27c70894775bcb77e5c4abb3a2546d935cb1a99b3190230b2be76161377d0151665ec97303c48746b224d1b2301803e6082b0283 Test-Output-1.034.tar.gz"
diff --git a/user/perl-test-perltidy/APKBUILD b/user/perl-test-perltidy/APKBUILD
index 428c833cf..e5d1f393f 100644
--- a/user/perl-test-perltidy/APKBUILD
+++ b/user/perl-test-perltidy/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-perltidy
-pkgver=20190402
+_pkgreal=Test-PerlTidy
+_author=SHLOMIF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=20230226
pkgrel=0
pkgdesc="Check all your Perl files for tidiness"
url="https://metacpan.org/release/Test-PerlTidy"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends="perl-file-finder perl-file-slurp perl-perl-tidy perl-text-diff"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-file-finder perl-file-slurp perl-perl-tidy perl-text-diff"
checkdepends="perl-path-tiny"
-makedepends="perl-dev"
+makedepends="perl-dev perl-module-build"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-PerlTidy-$pkgver.tar.gz"
-builddir="$srcdir/Test-PerlTidy-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="0fcdb45fff1f6d29ccd4a88b88e6c81a3e12d32ec618b33cb5751582c5c0580a628f7cddbc7c657e17c6626ac6a4d7c3b259d4d1bede8617a48adadb8985cd1a Test-PerlTidy-20190402.tar.gz"
+sha512sums="d1ae60209f3ec06dc3e11678b6415fd7108b0a90d5babcc388414a967407d9f44f9739a8699e36b9e68bb10dc4f3617c0306d569a2ab4ab42c127d13e8ff8fc8 Test-PerlTidy-20230226.tar.gz"
diff --git a/user/perl-test-pod-coverage/APKBUILD b/user/perl-test-pod-coverage/APKBUILD
index 903724f9b..9c212d268 100644
--- a/user/perl-test-pod-coverage/APKBUILD
+++ b/user/perl-test-pod-coverage/APKBUILD
@@ -1,6 +1,10 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-pod-coverage
+_pkgreal=Test-Pod-Coverage
+_author=NEILB
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.10
pkgrel=0
pkgdesc="Check for pod coverage in your distribution"
@@ -8,26 +12,22 @@ url="https://metacpan.org/pod/Test::Pod::Coverage"
arch="noarch"
license="Artistic-2.0"
depends="perl perl-pod-coverage"
-makedepends="perl-dev"
checkdepends="perl-test-pod"
-install=""
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/N/NE/NEILB/Test-Pod-Coverage-$pkgver.tar.gz"
-builddir="$srcdir/Test-Pod-Coverage-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-test-refcount/APKBUILD b/user/perl-test-refcount/APKBUILD
new file mode 100644
index 000000000..141f3cf6a
--- /dev/null
+++ b/user/perl-test-refcount/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-test-refcount
+_pkgreal=Test-Refcount
+_author=PEVANS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.10
+pkgrel=1
+pkgdesc="Test toolkit for asserting reference counts on objects"
+url="https://metacpan.org/pod/Test::Refcount"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+checkdepends="perl-test-fatal"
+makedepends="perl-module-build"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="7fac2a6bcb96da0ed61c53aaa2278e1ac998bd62314b95f307fe6ee032fd7d89264968f3ad78066186b112af0ba45960d5d1c81822bcd5f218418ea81236c4e1 Test-Refcount-0.10.tar.gz"
diff --git a/user/perl-test-regexp-pattern/APKBUILD b/user/perl-test-regexp-pattern/APKBUILD
new file mode 100644
index 000000000..7ce95cb32
--- /dev/null
+++ b/user/perl-test-regexp-pattern/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-test-regexp-pattern
+_pkgreal=Test-Regexp-Pattern
+_author=PERLANCAR
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.010
+pkgrel=0
+pkgdesc="Perl module for testing regular expression patterns"
+url="https://metacpan.org/pod/Test::Regexp::Pattern"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-hash-defhash perl-regexp-pattern"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/Test-Regexp-Pattern-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="058e35d960b3cf31d1cd37da71825ced74d2d466245afdeba70dffa5e83eef1e0ed4e79b0e58752eaee7063b0aac349010a7913e688de8d11823a445cbcf4a22 Test-Regexp-Pattern-0.010.tar.gz"
diff --git a/user/perl-test-run-cmdline/APKBUILD b/user/perl-test-run-cmdline/APKBUILD
index 42d624844..0c731d775 100644
--- a/user/perl-test-run-cmdline/APKBUILD
+++ b/user/perl-test-run-cmdline/APKBUILD
@@ -1,35 +1,36 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-run-cmdline
-pkgver=0.0131
+_pkgreal=Test-Run-CmdLine
+_author=SHLOMIF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.0132
pkgrel=0
pkgdesc="Analyse tests from the command line using Perl Test::Run"
url="https://metacpan.org/release/Test-Run-CmdLine"
arch="noarch"
license="MIT"
-depends="perl-moose perl-moosex-getopt perl-test-run perl-universal-require
- perl-yaml-libyaml"
-makedepends="perl-dev"
+depends="perl perl-moose perl-moosex-getopt perl-test-run
+ perl-universal-require perl-yaml-libyaml"
checkdepends="perl-test-trap"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-Run-CmdLine-$pkgver.tar.gz"
-builddir="$srcdir/Test-Run-CmdLine-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="b55ccae6a8cd453fa13083eabf63afa0f01eebe2c244cb5d4118b1be3ecab8077b77e03bef768254a84bd38b1cfb00e9f7053349696fd64fbc670ed43bd54357 Test-Run-CmdLine-0.0131.tar.gz"
+sha512sums="0be116c0ffcb61bc5bef6ad2e5e7fbffab337f5942a9903ff46cb219dd566dd720c9107a2358f956c1cc444b03cc9376704e2a0ec80f10364d289c8c629b7f67 Test-Run-CmdLine-0.0132.tar.gz"
diff --git a/user/perl-test-run-plugin-ai/APKBUILD b/user/perl-test-run-plugin-ai/APKBUILD
index 3537a1197..86a9a6c44 100644
--- a/user/perl-test-run-plugin-ai/APKBUILD
+++ b/user/perl-test-run-plugin-ai/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-run-plugin-alternateinterpreters
-pkgver=0.0124
+_pkgreal=Test-Run-Plugin-AlternateInterpreters
+_author=SHLOMIF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.0125
pkgrel=0
pkgdesc="Define different interpreters for test scripts with Perl Test::Run"
url="https://metacpan.org/release/Test-Run-Plugin-AlternateInterpreters"
arch="noarch"
license="MIT"
-depends="perl-moose perl-mro-compat perl-test-run perl-test-run-cmdline"
+depends="perl perl-moose perl-mro-compat perl-test-run perl-test-run-cmdline"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-Run-Plugin-AlternateInterpreters-$pkgver.tar.gz"
-builddir="$srcdir/Test-Run-Plugin-AlternateInterpreters-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="54649bde2b97eb7dfeef5392a63787e4ce10c37474acf27f35ab7b466a05564f98be82d99690963b3249c1585ab986e25ac2cf2be72c13b460d467d90b4de719 Test-Run-Plugin-AlternateInterpreters-0.0124.tar.gz"
+sha512sums="28dc11c21da981ecda40c6cce613a8d1263631f19dcdb6a6527428dcc7d6b145fa2bda6947bad69dc03f61d5348147d8a49bb4a351b6b9b05850bb08bf1f9c4d Test-Run-Plugin-AlternateInterpreters-0.0125.tar.gz"
diff --git a/user/perl-test-run-plugin-bof/APKBUILD b/user/perl-test-run-plugin-bof/APKBUILD
index e776778b6..8e04f65e7 100644
--- a/user/perl-test-run-plugin-bof/APKBUILD
+++ b/user/perl-test-run-plugin-bof/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-run-plugin-breakonfailure
-pkgver=0.0.5
+_pkgreal=Test-Run-Plugin-BreakOnFailure
+_author=SHLOMIF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.0.6
pkgrel=0
pkgdesc="Stop processing entire Test::Run suite on single failure"
url="https://metacpan.org/release/Test-Run-Plugin-BreakOnFailure"
arch="noarch"
license="MIT"
-depends="perl-moose perl-mro-compat perl-test-run perl-test-run-cmdline"
+depends="perl perl-moose perl-mro-compat perl-test-run perl-test-run-cmdline"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-Run-Plugin-BreakOnFailure-v$pkgver.tar.gz"
-builddir="$srcdir/Test-Run-Plugin-BreakOnFailure-v$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-v$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-v$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="a3e25847e0277ea32803b0eec68061471644f7bba03d9dd558d5a15c6dbe8615d933f6d4ee6851f217511434be933be1a848ee0d9b46c545ae37a0abc59a0a72 Test-Run-Plugin-BreakOnFailure-v0.0.5.tar.gz"
+sha512sums="dd8564d82466abdce2bb08324bec2a9fd45196955b61d375958a4ae718a7dc90a97c78e10925a479561a8456824a6bc9caf481284cab3ce7884d294d875546f3 Test-Run-Plugin-BreakOnFailure-v0.0.6.tar.gz"
diff --git a/user/perl-test-run-plugin-cfv/APKBUILD b/user/perl-test-run-plugin-cfv/APKBUILD
index 3fa80c7d2..56f5f2092 100644
--- a/user/perl-test-run-plugin-cfv/APKBUILD
+++ b/user/perl-test-run-plugin-cfv/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-run-plugin-colourfileverdicts
-pkgver=0.0124
+_pkgreal=Test-Run-Plugin-ColorFileVerdicts
+_author=SHLOMIF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.0125
pkgrel=0
pkgdesc="Make Perl Test::Run file verdicts (ok, not ok) colourful"
url="https://metacpan.org/release/Test-Run-Plugin-ColorFileVerdicts"
arch="noarch"
license="MIT"
-depends="perl-moose perl-mro-compat perl-test-run perl-test-run-cmdline"
+depends="perl perl-moose perl-mro-compat perl-test-run perl-test-run-cmdline"
makedepends="perl-dev"
subpackages="$pkgname-doc"
provides="perl-test-run-plugin-colorfileverdicts=$pkgver-r$pkgrel"
-source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-Run-Plugin-ColorFileVerdicts-$pkgver.tar.gz"
-builddir="$srcdir/Test-Run-Plugin-ColorFileVerdicts-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="405eb2e58b6c76fba3f5e0737e5816e8d4ef69d7fb3b7e81d8cfce10cd847d02339bc6802bb935009a27e5eb2ed16f8535280d7abb4ce5b6d1a26c9b2f99f117 Test-Run-Plugin-ColorFileVerdicts-0.0124.tar.gz"
+sha512sums="bd137a3c26737bb6868f3c7a37f6515d39b4809341b97ee3fc722380ed82a8d395ab24680ba7bec867efc92f594f667fb41af1cc94117a0bafe2fdb396dbc570 Test-Run-Plugin-ColorFileVerdicts-0.0125.tar.gz"
diff --git a/user/perl-test-run-plugin-cs/APKBUILD b/user/perl-test-run-plugin-cs/APKBUILD
index 4dff25604..714dcd9df 100644
--- a/user/perl-test-run-plugin-cs/APKBUILD
+++ b/user/perl-test-run-plugin-cs/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-run-plugin-coloursummary
-pkgver=0.0202
+_pkgreal=Test-Run-Plugin-ColorSummary
+_author=SHLOMIF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.0203
pkgrel=0
pkgdesc="Perl Test::Run plugin that colours test summary"
url="https://metacpan.org/release/Test-Run-Plugin-ColorSummary"
arch="noarch"
license="MIT"
-depends="perl-moose perl-mro-compat perl-test-run perl-test-run-cmdline"
+depends="perl perl-moose perl-mro-compat perl-test-run perl-test-run-cmdline"
makedepends="perl-dev"
subpackages="$pkgname-doc"
provides="perl-test-run-plugin-colorsummary=$pkgver-r$pkgrel"
-source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-Run-Plugin-ColorSummary-$pkgver.tar.gz"
-builddir="$srcdir/Test-Run-Plugin-ColorSummary-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
perl Build.PL installdirs=vendor
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="c5ab0c50379a8527f613dd9663573a89f4be2336c51789fa11c9cd2ddb9a416fb60b63b8ce6bdd121b10fae3ecd2fa306f523f0c27e84bcd7b3e234882c1d7ef Test-Run-Plugin-ColorSummary-0.0202.tar.gz"
+sha512sums="95e218ef78e23560b23193c38ae68d2ba1b058950afb9b20c4c274fbe52b679a5cdd50311e26a73adaa98db084ae93127100c7b5c08d773f01134e385e2ad7c2 Test-Run-Plugin-ColorSummary-0.0203.tar.gz"
diff --git a/user/perl-test-run-plugin-tdf/APKBUILD b/user/perl-test-run-plugin-tdf/APKBUILD
index 34b106e39..2991ed16a 100644
--- a/user/perl-test-run-plugin-tdf/APKBUILD
+++ b/user/perl-test-run-plugin-tdf/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-run-plugin-trimdisplayedfilenames
-pkgver=0.0125
+_pkgreal=Test-Run-Plugin-TrimDisplayedFilenames
+_author=SHLOMIF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.0126
pkgrel=0
pkgdesc="Handle excessively long filenames in Perl Test::Run suites"
url="https://metacpan.org/release/Test-Run-Plugin-TrimDisplayedFilenames"
arch="noarch"
license="MIT"
-depends="perl-moose perl-mro-compat perl-test-run perl-test-run-cmdline"
+depends="perl perl-moose perl-mro-compat perl-test-run perl-test-run-cmdline"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-Run-Plugin-TrimDisplayedFilenames-$pkgver.tar.gz"
-builddir="$srcdir/Test-Run-Plugin-TrimDisplayedFilenames-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="79bdfc093e8a4ce16fe933ebe367e71c27eb67500a6fd1ce57e51a5998f35cbf3f6afe143c74ce82e1e5ab700399fec48b0acbb9e23cc7796a8aa5cdc2bd9ea3 Test-Run-Plugin-TrimDisplayedFilenames-0.0125.tar.gz"
+sha512sums="3a38b6de2c3035e6f87236151183d7416855752bc0fc0b117cc7c02db70f8dce32b5fcbc2b369f9699aec284a3fb9cc14c96beb4da30062cc564a31590831728 Test-Run-Plugin-TrimDisplayedFilenames-0.0126.tar.gz"
diff --git a/user/perl-test-run/APKBUILD b/user/perl-test-run/APKBUILD
index ccf3e975d..28450b354 100644
--- a/user/perl-test-run/APKBUILD
+++ b/user/perl-test-run/APKBUILD
@@ -1,35 +1,36 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-run
-pkgver=0.0304
+_pkgreal=Test-Run
+_author=SHLOMIF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.0305
pkgrel=0
pkgdesc="Perl classes to run standard TAP scripts"
url="https://metacpan.org/release/Test-Run"
arch="noarch"
license="MIT"
-depends="perl-ipc-system-simple perl-list-moreutils perl-moose
+depends="perl perl-ipc-system-simple perl-list-moreutils perl-moose
perl-moosex-strictconstructor perl-test-trap perl-text-sprintf-named
perl-universal-require"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-Run-$pkgver.tar.gz"
-builddir="$srcdir/Test-Run-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="05a4f5e621194319263b33a68a5a733062b6f17a0b08c32ad02a1fece4ff7072305ae6305494c9a0d8e03fb9ae2e4b1c9a044e591c1b30968f08adfed0fe3c37 Test-Run-0.0304.tar.gz"
+sha512sums="56a39a9de335d1cbfa75da57e0bf9f7487814507954a3e6f5bbea76fa3b19a154402ced5e0539073d18e3264b5c9f0d816803f509ea79381d2f8488a67f67a46 Test-Run-0.0305.tar.gz"
diff --git a/user/perl-test-runvalgrind/APKBUILD b/user/perl-test-runvalgrind/APKBUILD
index c6f31b336..df4bda7f3 100644
--- a/user/perl-test-runvalgrind/APKBUILD
+++ b/user/perl-test-runvalgrind/APKBUILD
@@ -1,36 +1,37 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-runvalgrind
-pkgver=0.2.0
+_pkgreal=Test-RunValgrind
+_author=SHLOMIF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.2.2
pkgrel=0
pkgdesc="Tests an external program is 'valgrind clean' from Perl"
url="https://metacpan.org/release/Test-RunValgrind"
arch="noarch"
license="MIT"
-depends="perl-path-tiny perl-test-trap"
+depends="perl perl-path-tiny perl-test-trap valgrind"
makedepends="perl-dev perl-module-build"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-RunValgrind-$pkgver.tar.gz
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz
portable-memory-assumptions.patch
"
-builddir="$srcdir/Test-RunValgrind-$pkgver"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
perl Build.PL installdirs=vendor
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="e85547d24fb7c8b0a8fd1a84826eec51d3c4c94d83cbb525517515ecc27b0ba530378a10f8a2ffee9fb1f48eb2e65a6a2654738ee069bd85adcec7f4c205f143 Test-RunValgrind-0.2.0.tar.gz
+sha512sums="6b27657e5ba914fa0bc5d8e4b30c8563e2786e7e91cd8432fa1ff45463a90f0907c2606c25625682e8a2a99c545395cf599a616512d39f4a68a6ec7bdd7c0e0f Test-RunValgrind-0.2.2.tar.gz
f2ebba2310df820666728e5f59c44f5b63cd03efdb42092f22700da13b4f099ae5c911292fb2a0f271f7629343727ea14c5953d2918c98419a580e5a998cb650 portable-memory-assumptions.patch"
diff --git a/user/perl-test-script/APKBUILD b/user/perl-test-script/APKBUILD
new file mode 100644
index 000000000..4ab8c3b4f
--- /dev/null
+++ b/user/perl-test-script/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-test-script
+_pkgreal=Test-Script
+_author=PLICEASE
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.29
+pkgrel=0
+pkgdesc="Perl module for cross-platform script testing"
+url="https://metacpan.org/pod/Test::Script"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-capture-tiny perl-probe-perl perl-test2-suite"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="979fade0abc83f8d7d4c1c094fa928e27bd7c9db52140b156689d3b192d9ea84f5824554d6788c9144cf2923a04b1d8a8bdfdcc05a0be5514de92353c9a7d10f Test-Script-1.29.tar.gz"
diff --git a/user/perl-test-sharedfork/APKBUILD b/user/perl-test-sharedfork/APKBUILD
index aaa8a998b..09466c7cf 100644
--- a/user/perl-test-sharedfork/APKBUILD
+++ b/user/perl-test-sharedfork/APKBUILD
@@ -1,33 +1,33 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-sharedfork
-_pkgname=Test-SharedFork
+_pkgreal=Test-SharedFork
+_author=EXODIST
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.35
pkgrel=0
pkgdesc="Fork during Perl tests"
url="https://metacpan.org/release/Test-SharedFork"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
checkdepends="perl-test-requires"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/EX/EXODIST/Test-SharedFork-$pkgver.tar.gz"
-builddir="$srcdir/Test-SharedFork-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-test-some/APKBUILD b/user/perl-test-some/APKBUILD
new file mode 100644
index 000000000..82e3286f2
--- /dev/null
+++ b/user/perl-test-some/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-test-some
+_pkgreal=Test-Some
+_author=YANICK
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.2.1
+pkgrel=0
+pkgdesc="Perl library for testing a subset of tests"
+url="https://metacpan.org/pod/Test::Some"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-list-moreutils perl-package-stash perl-test-simple"
+checkdepends=""
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="d8dbea9853dfc8390350d2f87b871264e9e518822d3a274a636a34d7b57650d4c6c1f9da80c80987a3b3b02f285bf6183e0fc00a8acd168d49a8487e7e68b103 Test-Some-0.2.1.tar.gz"
diff --git a/user/perl-test-taint/APKBUILD b/user/perl-test-taint/APKBUILD
index 02488dfbf..062597ab2 100644
--- a/user/perl-test-taint/APKBUILD
+++ b/user/perl-test-taint/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-taint
-_pkgname=Test-Taint
-pkgver=1.06
+_pkgreal=Test-Taint
+_author=PETDANCE
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.08
pkgrel=0
pkgdesc="Tools to test taintedness"
url="https://metacpan.org/release/Test-Taint"
arch="all"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/P/PE/PETDANCE/Test-Taint-$pkgver.tar.gz"
-builddir="$srcdir/Test-Taint-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="58221b0145d9b908994c093168ca547a18cd56113f4923a4662bb9c113635378740363914d1fd43602f15c76a23cfe26d0682ed6ce22836d712692f439e782c2 Test-Taint-1.06.tar.gz"
+sha512sums="2a7e3a60756c802dc33ac0b2a4102463de59fe92ba3cd83cb02e01e9f7aa13978c7a8ac7dcfdcf3c0d934af40e5189421874da819be9258e91080b777be71b20 Test-Taint-1.08.tar.gz"
diff --git a/user/perl-test-tcp/APKBUILD b/user/perl-test-tcp/APKBUILD
index 1be5ffa02..e850c5405 100644
--- a/user/perl-test-tcp/APKBUILD
+++ b/user/perl-test-tcp/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-tcp
-_pkgname=Test-TCP
-pkgver=2.19
+_pkgreal=Test-TCP
+_author=MIYAGAWA
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.22
pkgrel=0
pkgdesc="Testing library for Perl code using TCP"
url="https://metacpan.org/release/Test-TCP"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-test-sharedfork"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-test-sharedfork"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/T/TO/TOKUHIROM/Test-TCP-$pkgver.tar.gz"
-builddir="$srcdir/Test-TCP-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="1de76f5dc456697d8ea0799bb60d858b0e1c0089f066d1a446c46708e6cb3441849e264526082a066c31519ded4731cde9310b8a493f571ed670c2fbb60a3e85 Test-TCP-2.19.tar.gz"
+sha512sums="2e0c8cf710f9702eee9b00422d7133efe87575805361d72becd2c3de671c765baf84827b601d26091e8a6b8595e6d9f168f90b7cfda402d668deb6fc277e37ad Test-TCP-2.22.tar.gz"
diff --git a/user/perl-test-time/APKBUILD b/user/perl-test-time/APKBUILD
index f1b847587..9f135ca07 100644
--- a/user/perl-test-time/APKBUILD
+++ b/user/perl-test-time/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-time
-_pkgname=Test-Time
-pkgver=0.07
+_pkgreal=Test-Time
+_author=ANATOFUZ
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.092
pkgrel=0
pkgdesc="Override Perl functions for testing"
url="https://metacpan.org/release/Test-Time"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SA/SATOH/Test-Time-$pkgver.tar.gz"
-builddir="$srcdir/Test-Time-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="b5ad87ea43eaae6b474be4aa7d153fe89bb9cc86254257e68073ff214b901846096037634a8d73b1e0852d5bf51fbee58e32c742c0726702ddb06d79679a65f9 Test-Time-0.07.tar.gz"
+sha512sums="1eda8619bbe2e71992b0cf057ec33a610be9db70cc0708fa429686c7158985b28b593bc2fe9ca0f6b79862ac19bb124f763e40787e2f09e0f11adfd64ac50944 Test-Time-0.092.tar.gz"
diff --git a/user/perl-test-trailingspace/APKBUILD b/user/perl-test-trailingspace/APKBUILD
index ccaf8e873..4cebf8171 100644
--- a/user/perl-test-trailingspace/APKBUILD
+++ b/user/perl-test-trailingspace/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-trailingspace
-pkgver=0.0301
+_pkgreal=Test-TrailingSpace
+_author=SHLOMIF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.0601
pkgrel=0
pkgdesc="Test for trailing spaces in Perl source files"
url="https://metacpan.org/release/Test-TrailingSpace"
arch="noarch"
license="MIT"
-depends="perl-file-find-object-rule"
+depends="perl perl-file-find-object-rule"
makedepends="perl-dev perl-module-build"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Test-TrailingSpace-$pkgver.tar.gz"
-builddir="$srcdir/Test-TrailingSpace-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="9ec511759b12265c2a98a06a54081e0ca0377e707b29174fb874fd505330e0abfafebe910f7ceba9f8a6bcbfcf5d74fc8ffdca2e17b9cad15c207213449085d4 Test-TrailingSpace-0.0301.tar.gz"
+sha512sums="71a207be6d3d0791ca3f7784cda053a1de33969a531805afea3d2ce4985eb745afa5ab8cc9aa8642e236eb516dafe5962c3a433c2b53910d0b272e94efb5586b Test-TrailingSpace-0.0601.tar.gz"
diff --git a/user/perl-test-trap/APKBUILD b/user/perl-test-trap/APKBUILD
index 6f777f969..0b8ed06ba 100644
--- a/user/perl-test-trap/APKBUILD
+++ b/user/perl-test-trap/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-trap
-pkgver=0.3.4
+_pkgreal=Test-Trap
+_author=EBHANSSEN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.3.5
pkgrel=0
pkgdesc="Trap Perl exit codes, exceptions, and output"
url="https://metacpan.org/release/Test-Trap"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends="perl-data-dump"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-data-dump"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/EB/EBHANSSEN/Test-Trap-v$pkgver.tar.gz"
-builddir="$srcdir/Test-Trap-v$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-v$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-v$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="cac4412a55511c820a1813a277afa802769a64219bf306190d83fea775c53bcd1d7faa275cb7f1b435e5ae274b6c1f78dd862525a6426040e51fdaf537e720ff Test-Trap-v0.3.4.tar.gz"
+sha512sums="02836ed9c91448cb5aa84246c17d72d119844e072289656529d87e944ad1c26fa7e18e7b45290cdffdabaff7abdad4547233156331194ce375da0b902811313e Test-Trap-v0.3.5.tar.gz"
diff --git a/user/perl-test-utf8/APKBUILD b/user/perl-test-utf8/APKBUILD
index ee562a170..b4bb3a5d7 100644
--- a/user/perl-test-utf8/APKBUILD
+++ b/user/perl-test-utf8/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-test-utf8
-pkgver=1.01
+_pkgreal=Test-utf8
+_author=MARKF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.02
pkgrel=0
pkgdesc="Handy UTF8 tests"
url="https://metacpan.org/pod/Test::utf8"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl"
makedepends="perl-dev perl-module-install"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/M/MA/MARKF/Test-utf8-$pkgver.tar.gz"
-builddir="$srcdir/Test-utf8-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="07dcd5ed98a63f7d96bb0fc629b168773d02bb4c93c5bc44ec60738fc29669794547dfde5913f9de682cd583cf85f4d82b6151398aaebcfec9278525447b9c4e Test-utf8-1.01.tar.gz"
+sha512sums="f544174ad570c5e027acf66dcf335ddc4be3727488559933a389dbd7f2214e66490f96d0e816677310468076719d891fa3da80524b2b10345d8be8eebf4a1469 Test-utf8-1.02.tar.gz"
diff --git a/user/perl-test-warn/APKBUILD b/user/perl-test-warn/APKBUILD
new file mode 100644
index 000000000..d27f2e747
--- /dev/null
+++ b/user/perl-test-warn/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-test-warn
+_pkgreal=Test-Warn
+_author=BIGJ
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.37
+pkgrel=0
+pkgdesc="Test for warnings"
+url="https://metacpan.org/pod/Test::Warn"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-sub-uplevel"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="908f3c5c68463ab72f70759032116465f4f63519dd5112666dd6ddcfd5e52163fd433d9eb459dafd721d85c64464549476c6e0bfcfff56d27cf44689fadfce67 Test-Warn-0.37.tar.gz"
diff --git a/user/perl-test-warnings/APKBUILD b/user/perl-test-warnings/APKBUILD
deleted file mode 100644
index 9b65d822e..000000000
--- a/user/perl-test-warnings/APKBUILD
+++ /dev/null
@@ -1,34 +0,0 @@
-# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
-pkgname=perl-test-warnings
-pkgver=0.026
-pkgrel=0
-pkgdesc="Test for warnings and the lack of them"
-url="https://metacpan.org/pod/Test::Warnings"
-arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
-depends="perl"
-makedepends="perl-dev"
-install=""
-subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/E/ET/ETHER/Test-Warnings-$pkgver.tar.gz"
-builddir="$srcdir/Test-Warnings-$pkgver"
-
-build() {
- cd "$builddir"
- PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
- make
-}
-
-check() {
- cd "$builddir"
- make test
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
- find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
-}
-
-sha512sums="510e182299173fa01482cde642fe5d84a77ea2f3b1761c7d8bf855caed963f276134357b4d7662bb3fbf09621ac6e11451fe19bf0ba2cf96bc841c280a624cd4 Test-Warnings-0.026.tar.gz"
diff --git a/user/perl-test2-plugin-nowarnings/APKBUILD b/user/perl-test2-plugin-nowarnings/APKBUILD
new file mode 100644
index 000000000..74ba100a0
--- /dev/null
+++ b/user/perl-test2-plugin-nowarnings/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-test2-plugin-nowarnings
+_pkgreal=Test2-Plugin-NoWarnings
+_author=DROLSKY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.09
+pkgrel=0
+pkgdesc="Plugin for ensuring that tests fail if they produce a warning"
+url="https://metacpan.org/pod/Test2::Plugin::NoWarnings"
+arch="noarch"
+license="Artistic-2.0"
+depends="perl perl-test2-suite"
+checkdepends="perl-ipc-run3"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="3b93d6c4522e913c4bc9d589b650f784327bed1a36a0dc18943dd2ea34654215333753cb532d5ffff6f0ef0af9ce0859e9744637cff89a1a1a5b936149f9b455 Test2-Plugin-NoWarnings-0.09.tar.gz"
diff --git a/user/perl-test2-suite/APKBUILD b/user/perl-test2-suite/APKBUILD
new file mode 100644
index 000000000..5245a3504
--- /dev/null
+++ b/user/perl-test2-suite/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-test2-suite
+_pkgreal=Test2-Suite
+_author=EXODIST
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.000159
+pkgrel=0
+pkgdesc="Collection of Perl modules in the Test2 namespace"
+url="https://metacpan.org/pod/Test2::Suite"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-importer perl-module-pluggable perl-scope-guard
+ perl-sub-info perl-term-table perl-test-simple>=1.302176
+
+ perl-sub-name perl-term-readkey perl-term-size-any
+ perl-unicode-linebreak"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="ab132e87f0db5dde0ebd95b260236d95120445c89db497e92519335e989d8571481f2497898cd5fae25cb2065db1aa8902a9f2d37cf2163475caca1298629a3f Test2-Suite-0.000159.tar.gz"
diff --git a/user/perl-test2-tools-command/APKBUILD b/user/perl-test2-tools-command/APKBUILD
new file mode 100644
index 000000000..8241a30ec
--- /dev/null
+++ b/user/perl-test2-tools-command/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-test2-tools-command
+_pkgreal=Test2-Tools-Command
+_author=JMATES
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.20
+pkgrel=0
+pkgdesc="Perl module for testing commands"
+url="https://metacpan.org/pod/Test2::Tools::Command"
+arch="noarch"
+license="BSD-3-Clause"
+depends="perl perl-test2-suite perl-file-chdir"
+makedepends="perl-module-build"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="8b7396521fb533e331cdcd97cce2a19808ce91339b900f1743a2179769729b30f23d54ec91babb1d9ea5be291a90687520ef434d5deaf7f9771ad7e80eef94a1 Test2-Tools-Command-0.20.tar.gz"
diff --git a/user/perl-text-diff/APKBUILD b/user/perl-text-diff/APKBUILD
index 303106e54..47563d037 100644
--- a/user/perl-text-diff/APKBUILD
+++ b/user/perl-text-diff/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-text-diff
+_pkgreal=Text-Diff
+_author=NEILB
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.45
pkgrel=0
pkgdesc="Perform diffs on files and record sets"
url="https://metacpan.org/pod/Text::Diff"
arch="noarch"
-license="GPL-2.0+ OR Artistic-1.0-Perl"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
depends="perl perl-algorithm-diff"
makedepends="perl-dev"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/N/NE/NEILB/Text-Diff-$pkgver.tar.gz"
-builddir="$srcdir/Text-Diff-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-text-glob/APKBUILD b/user/perl-text-glob/APKBUILD
index 85bbc7a9b..87fe7a418 100644
--- a/user/perl-text-glob/APKBUILD
+++ b/user/perl-text-glob/APKBUILD
@@ -1,31 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-text-glob
+_pkgreal=Text-Glob
+_author=RCLAMP
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.11
pkgrel=0
pkgdesc="glob(3) style string matching for Perl"
url="https://metacpan.org/release/Text-Glob"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RC/RCLAMP/Text-Glob-$pkgver.tar.gz"
-builddir="$srcdir/Text-Glob-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-text-sprintf-named/APKBUILD b/user/perl-text-sprintf-named/APKBUILD
index 210880dd4..24ab2c1c9 100644
--- a/user/perl-text-sprintf-named/APKBUILD
+++ b/user/perl-text-sprintf-named/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-text-sprintf-named
-pkgver=0.0403
+_pkgreal=Text-Sprintf-Named
+_author=SHLOMIF
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.0405
pkgrel=0
pkgdesc="sprintf-like function for Perl with named conversions"
url="https://metacpan.org/release/Text-Sprintf-Named"
arch="noarch"
license="MIT"
-depends="perl-module-build"
-makedepends="perl-dev"
+depends="perl perl-module-build"
checkdepends="perl-test-warn"
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/S/SH/SHLOMIF/Text-Sprintf-Named-$pkgver.tar.gz"
-builddir="$srcdir/Text-Sprintf-Named-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="93e56c8850274625e3156826f57d40820632dde24e9ebbfdf502d83d29c9796faac25a422e5a15d0c97fb67424f9d9abd93437e3eb0818c8338f42a59bc3adb3 Text-Sprintf-Named-0.0403.tar.gz"
+sha512sums="dfcc12e4ffeddfc8b30840c262265e4517c9fb5c9bdb67973df16132ad11ce14aab4e1b8eace3b31404e8cefd7f81611a13bd2e94f9b510a9c34030f05665cae Text-Sprintf-Named-0.0405.tar.gz"
diff --git a/user/perl-text-template/APKBUILD b/user/perl-text-template/APKBUILD
new file mode 100644
index 000000000..b06484431
--- /dev/null
+++ b/user/perl-text-template/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-text-template
+_pkgreal=Text-Template
+_author=MSCHOUT
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.61
+pkgrel=0
+pkgdesc="Perl module for expanding embedded Perl in templates"
+url="https://metacpan.org/pod/Text::Template"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-test-more-utf8 perl-test-warnings"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="b527f587fc3fee48fed495b7dcbb1da0db1e423873ab99f9360f4b1a2727d85aa9b06ef8ab59a90d575d9731821e1a0263db8d0d357b01965633c58257c556b4 Text-Template-1.61.tar.gz"
diff --git a/user/perl-text-unidecode/APKBUILD b/user/perl-text-unidecode/APKBUILD
new file mode 100644
index 000000000..b0ccc4d90
--- /dev/null
+++ b/user/perl-text-unidecode/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-text-unidecode
+_pkgreal=Text-Unidecode
+_author=SBURKE
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.30
+pkgrel=0
+pkgdesc="Transliterate Unicode text to ASCII"
+url="https://metacpan.org/release/Text-Unidecode"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="194f8aba0dcdc7a53338b86370b7cfb6c60d4a8982ada6084f0eb0ccd66ce461b831b6daf04932f039ff1b983dc3cd0c0ced1e8b455955d2699c36120b41a526 Text-Unidecode-1.30.tar.gz"
diff --git a/user/perl-throwable/APKBUILD b/user/perl-throwable/APKBUILD
index 65c63e5bf..0516b265e 100644
--- a/user/perl-throwable/APKBUILD
+++ b/user/perl-throwable/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-throwable
-_pkgname=Throwable
-pkgver=0.200013
+_pkgreal=Throwable
+_author=RJBS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.001
pkgrel=0
pkgdesc="Role for Perl classes that can be thrown"
url="https://metacpan.org/release/Throwable"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-devel-stacktrace perl-module-runtime perl-moo perl-sub-quote"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-devel-stacktrace perl-module-runtime perl-moo
+ perl-sub-quote"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/R/RJ/RJBS/Throwable-$pkgver.tar.gz"
-builddir="$srcdir/Throwable-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="81ce73709c7c6a0160da42b00ce06ddf4cce79a6801df7aa90ddcce67efed6ace17b06171ac42b2737a98515c17ab46b5a3b7fd9e5bd3079b109a977dc6c0963 Throwable-0.200013.tar.gz"
+sha512sums="b0b8d906c1cf7d4f5ea985b91bb2eca191056cd41b12c37560504c825bf57fe4a0cf4423ad53da04a9cd43edeba52321d407f03e556033156071b0c3ef97001a Throwable-1.001.tar.gz"
diff --git a/user/perl-tie-ixhash/APKBUILD b/user/perl-tie-ixhash/APKBUILD
new file mode 100644
index 000000000..53b79fdc5
--- /dev/null
+++ b/user/perl-tie-ixhash/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-tie-ixhash
+_pkgreal=Tie-IxHash
+_author=CHORNY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.23
+pkgrel=0
+pkgdesc="Ordered associative arrays for Perl"
+url="https://metacpan.org/pod/Tie::IxHash"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="13e5015cf4e11e3ba828279a5090704b8e4bed26a04e1f486a9d3a63c41eaf38d54d233b20ef5d1886b56e857208c229fd145c4c676b681e3e9c1ed3c252f195 Tie-IxHash-1.23.tar.gz"
diff --git a/user/perl-time-duration-parse/APKBUILD b/user/perl-time-duration-parse/APKBUILD
index 22fbfbe7e..931644747 100644
--- a/user/perl-time-duration-parse/APKBUILD
+++ b/user/perl-time-duration-parse/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-time-duration-parse
-pkgver=0.14
+_pkgreal=Time-Duration-Parse
+_author=NEILB
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.16
pkgrel=0
pkgdesc="Parse strings in Perl that represent time durations"
url="https://metacpan.org/release/Time-Duration-Parse"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends="perl-exporter-lite perl-time-duration"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-exporter-lite perl-time-duration"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/N/NE/NEILB/Time-Duration-Parse-$pkgver.tar.gz"
-builddir="$srcdir/Time-Duration-Parse-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="49dcb7d3979df7e84141ebf9262b2283dfe535502b71633d95424376146d81bbf5d6932035dde878a5b1bef265d84a029412ff0187927569cf48ad193ea2f8e3 Time-Duration-Parse-0.14.tar.gz"
+sha512sums="947c7ce0a1a013c86b3c9e464e4c56bb0cc98572c3854d9b6ab33e8dac2270982b72efcd5e2601490e5a23104543ac343033f06294eb88282d0473378117faed Time-Duration-Parse-0.16.tar.gz"
diff --git a/user/perl-time-duration/APKBUILD b/user/perl-time-duration/APKBUILD
index daf931ee5..ebc1c35ba 100644
--- a/user/perl-time-duration/APKBUILD
+++ b/user/perl-time-duration/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-time-duration
-pkgver=1.20
+_pkgreal=Time-Duration
+_author=NEILB
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.21
pkgrel=0
pkgdesc="Rounded or exact English expression of time durations in Perl"
url="https://metacpan.org/release/Time-Duration"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/N/NE/NEILB/Time-Duration-$pkgver.tar.gz"
-builddir="$srcdir/Time-Duration-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="74bdcbc2b65061ad30540a95467de24f552235cea2367a7770309d9ffefeb35717f438e4f7ebf6a1d63f338cd714ffe16b3f45808514995db9753d643892d5f9 Time-Duration-1.20.tar.gz"
+sha512sums="2d03d73096967265f16f4ebde2d9fbb83fce591e15fa01f5f4f750123f27a4571bbd01d5d93f785f78ee8810aca9d945241e6a767b65f45abb4608d321108020 Time-Duration-1.21.tar.gz"
diff --git a/user/perl-timedate/APKBUILD b/user/perl-timedate/APKBUILD
index 9ecfd67ae..5f2e8c146 100644
--- a/user/perl-timedate/APKBUILD
+++ b/user/perl-timedate/APKBUILD
@@ -1,33 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-timedate
-pkgver=2.30
+_pkgreal=TimeDate
+_author=ATOOMIC
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.33
pkgrel=0
pkgdesc="Date and time handling routines for Perl"
url="https://metacpan.org/release/TimeDate"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/G/GB/GBARR/TimeDate-$pkgver.tar.gz"
-builddir="$srcdir/TimeDate-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz
+ "
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="c6aa7d57fbe82260c7455f74f6dfda55f7c93d7a75914bafb9d09ebfb83b5f57f6bc1e332ab0764d7688d857eb022b0f5e92cf5b685d809c63cdfa93a8d2c221 TimeDate-2.30.tar.gz"
+sha512sums="a3a20a0d9439e68bf621c66fad0598e6257345727be79c87c7cc99994b3a58eb738787fedb720beb069e9758ad1347c15313f64411806dd0f4dfbcca5061c820 TimeDate-2.33.tar.gz"
diff --git a/user/perl-type-tiny/APKBUILD b/user/perl-type-tiny/APKBUILD
index 825483cce..a70acda21 100644
--- a/user/perl-type-tiny/APKBUILD
+++ b/user/perl-type-tiny/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-type-tiny
-pkgver=1.004004
+_pkgreal=Type-Tiny
+_author=TOBYINK
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.004000
pkgrel=0
pkgdesc="Tiny Moo(se) compatible type constraint"
url="https://metacpan.org/release/Type-Tiny"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends="perl-exporter-tiny"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-exporter-tiny"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/T/TO/TOBYINK/Type-Tiny-$pkgver.tar.gz"
-builddir="$srcdir/Type-Tiny-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="a1e09c5a3369e0a9ea8e172d86e68e818a720c5c4d633103a442fe389f7a8a7b4a03b2487ffd09f184caf4eca94ef471cc9293b04557b8d4dd260649b4121673 Type-Tiny-1.004004.tar.gz"
+sha512sums="a28a0fdfe48c8ce7f7313bfa6645094337dfb12d76401d9947a649763379a912f480ff418f0023d1e0c5851ffa347823669192a9eb8081341db7525d84c82220 Type-Tiny-2.004000.tar.gz"
diff --git a/user/perl-types-serialiser/APKBUILD b/user/perl-types-serialiser/APKBUILD
index 6c34d8215..0fa20eb4b 100644
--- a/user/perl-types-serialiser/APKBUILD
+++ b/user/perl-types-serialiser/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-types-serialiser
-pkgver=1.0
+_pkgreal=Types-Serialiser
+_author=MLEHMANN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.01
pkgrel=0
pkgdesc="Simple data types for common serialisation formats"
url="https://metacpan.org/pod/Types::Serialiser"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl perl-common-sense"
makedepends="perl-dev"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/M/ML/MLEHMANN/Types-Serialiser-$pkgver.tar.gz"
-builddir="$srcdir/Types-Serialiser-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="b786bcd3ee976a6ad948cc98a9c71d2cdcd30f485528eff059091f6d86ae7078c10ba2dc2982326fcf0184dbfbdddea84daff324c6ec6a129fe6aac01253c8fb Types-Serialiser-1.0.tar.gz"
+sha512sums="419b24cae85fba045de2f4593e1d17784f2016d5f9cd9ea96d23bbeaa86c1c6b866875871a787cacba1299616d371cc8806760e4c53e4f635deec4bc28fa81b5 Types-Serialiser-1.01.tar.gz"
diff --git a/user/perl-universal-require/APKBUILD b/user/perl-universal-require/APKBUILD
index 4bf801678..1f5f4038a 100644
--- a/user/perl-universal-require/APKBUILD
+++ b/user/perl-universal-require/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-universal-require
-pkgver=0.18
+_pkgreal=UNIVERSAL-require
+_author=NEILB
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.19
pkgrel=0
pkgdesc="require() Perl modules from a variable"
url="https://metacpan.org/release/UNIVERSAL-require"
arch="noarch"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/N/NE/NEILB/UNIVERSAL-require-$pkgver.tar.gz"
-builddir="$srcdir/UNIVERSAL-require-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="4e1dbb62f850a2f3da3301e37862d03ad89106e9fd55ac8161ae56eff936948f87b9215c734c103d8031e1b712847bff86de43329f65f00e7e34ee83bb66c22d UNIVERSAL-require-0.18.tar.gz"
+sha512sums="065a361a7605aa2827ad14eeecea23a2238df2cc477c73ea2facd475953000d0c6f8773db886333295501e6d2602dd08e2f9a81d77b4f3a4c3926dcc57358cb2 UNIVERSAL-require-0.19.tar.gz"
diff --git a/user/perl-variable-magic/APKBUILD b/user/perl-variable-magic/APKBUILD
index 605369668..db7b8bc1f 100644
--- a/user/perl-variable-magic/APKBUILD
+++ b/user/perl-variable-magic/APKBUILD
@@ -1,33 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-variable-magic
-pkgver=0.62
+_pkgreal=Variable-Magic
+_author=VPIT
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.63
pkgrel=0
pkgdesc="Associate user-defined magic to variables from Perl"
url="https://metacpan.org/release/Variable-Magic"
arch="all"
-license="Artistic-1.0-Perl"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/V/VP/VPIT/Variable-Magic-$pkgver.tar.gz"
-builddir="$srcdir/Variable-Magic-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="fdaad8ab1a16a4723e30a155086f7f9ecad60b021b0ca5d449a0bc001b858a53e2857cfdc3fc4e3dcc28e2f59a14f3531afd93e3f71fda3b8fcaa8bc50d0c380 Variable-Magic-0.62.tar.gz"
+sha512sums="f815d71ffda0fc88b75716fb843a5dcb122b678ce0cb58ac23411af88b7b01180d401519db1b9801c5ee2942ae7b81d6c3d4284ceb57ed3f51d546fb77135611 Variable-Magic-0.63.tar.gz"
diff --git a/user/perl-www-form-urlencoded/APKBUILD b/user/perl-www-form-urlencoded/APKBUILD
index fae02c4f4..b1b9004d9 100644
--- a/user/perl-www-form-urlencoded/APKBUILD
+++ b/user/perl-www-form-urlencoded/APKBUILD
@@ -1,34 +1,35 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-www-form-urlencoded
-_pkgname=WWW-Form-UrlEncoded
-pkgver=0.25
+_pkgreal=WWW-Form-UrlEncoded
+_author=KAZEBURO
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.26
pkgrel=0
pkgdesc="Perl library for URL-encoded HTTP forms"
url="https://metacpan.org/release/WWW-Form-UrlEncoded"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev perl-module-build"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/K/KA/KAZEBURO/WWW-Form-UrlEncoded-$pkgver.tar.gz"
-builddir="$srcdir/WWW-Form-UrlEncoded-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs=vendor
+ export BREAK_BACKWARD_COMPAT=YesPlease
./Build
}
check() {
- cd "$builddir"
./Build test
}
package() {
- cd "$builddir"
./Build install destdir="$pkgdir"
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="3d962434e6a104110412956a1523e1ca30462855665ebbfccbcd136f80aa788e835adf1472b5f94c1e6f177758c10bb4b06ea693ffd8ff5f262e731930e5a727 WWW-Form-UrlEncoded-0.25.tar.gz"
+sha512sums="7980b42f53a7801fe02db30b87552ce4d5e7398413640a94d9abad2779085ebfc6208804ed66099161d8c3ba5e47ecb4bf8e8fa1f36f2e7297b864a25f3ac924 WWW-Form-UrlEncoded-0.26.tar.gz"
diff --git a/user/perl-x11-xcb/APKBUILD b/user/perl-x11-xcb/APKBUILD
index 586a8959d..37c03c309 100644
--- a/user/perl-x11-xcb/APKBUILD
+++ b/user/perl-x11-xcb/APKBUILD
@@ -1,38 +1,39 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-x11-xcb
-pkgver=0.18
+_pkgreal=X11-XCB
+_author=ZHMYLOVE
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.22
pkgrel=0
pkgdesc="Perl bindings for libxcb"
url="https://metacpan.org/pod/X11::XCB"
arch="all"
-license="Artistic-1.0-Perl AND GPL-2.0"
+options="!check" # Tests require a running X server
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl perl-extutils-pkgconfig perl-extutils-depends
perl-xs-object-magic perl-data-dump perl-xml-simple
perl-xml-descent perl-mouse perl-mousex-nativetraits"
+checkdepends="perl-test-deep perl-test-exception"
makedepends="perl-dev perl-xs-object-magic-dev libxcb-dev
xcb-util-dev xcb-util-wm-dev"
-checkdepends="perl-test-deep perl-test-exception"
-options="!check" # Tests require a running X server
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/M/MS/MSTPLBG/X11-XCB-$pkgver.tar.gz"
-builddir="$srcdir/X11-XCB-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make -j1
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="eeecd8fbf080a6ca2f28b8fe4b64c97339f27b27c9c70d1a8e7c0f56af193243295aa1fc65039d24c81396126befc27ca114ca4cd1641139a788c46fe600f3ba X11-XCB-0.18.tar.gz"
+sha512sums="ac38d98067e49f15ff7e8f3d902208af059ab2b2113f585044488a6eb8dac020a5010b876b41069397f1fdf30717df02752f648390d1923d38a0db4b703a4b35 X11-XCB-0.22.tar.gz"
diff --git a/user/perl-xml-descent/APKBUILD b/user/perl-xml-descent/APKBUILD
index 846a4361e..1fbc39e9f 100644
--- a/user/perl-xml-descent/APKBUILD
+++ b/user/perl-xml-descent/APKBUILD
@@ -1,35 +1,35 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-xml-descent
+_pkgreal=XML-Descent
+_author=ANDYA
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.04
pkgrel=0
pkgdesc="Recursive descent XML parsing"
url="https://metacpan.org/pod/XML::Descent"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl perl-xml-tokeparser"
-makedepends="perl-dev"
checkdepends="perl-test-pod perl-test-differences"
-install=""
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/A/AN/ANDYA/XML-Descent-$pkgver.tar.gz"
-sha512sums="779a476907ecfbe9c279fa1f476c3aa64de626c515719643be21fef8b945cdd5c1f654a189bf7ea9a6964a88818e101e1eddc019439a5dcb397f56b13bdfa415 XML-Descent-1.04.tar.gz"
-builddir="$srcdir/XML-Descent-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
+sha512sums="779a476907ecfbe9c279fa1f476c3aa64de626c515719643be21fef8b945cdd5c1f654a189bf7ea9a6964a88818e101e1eddc019439a5dcb397f56b13bdfa415 XML-Descent-1.04.tar.gz"
diff --git a/user/perl-xml-namespacesupport/APKBUILD b/user/perl-xml-namespacesupport/APKBUILD
index e155f6b32..3fea01156 100644
--- a/user/perl-xml-namespacesupport/APKBUILD
+++ b/user/perl-xml-namespacesupport/APKBUILD
@@ -1,30 +1,32 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-xml-namespacesupport
+_pkgreal=XML-NamespaceSupport
+_author=PERIGRIN
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.12
pkgrel=0
pkgdesc="A Perl module for processing XML namespaces"
url="https://metacpan.org/pod/XML::NamespaceSupport"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0+"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl"
+makedepends=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/P/PE/PERIGRIN/XML-NamespaceSupport-$pkgver.tar.gz"
-builddir="$srcdir/XML-NamespaceSupport-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-xml-parser-lite/APKBUILD b/user/perl-xml-parser-lite/APKBUILD
index e14e0c175..dec03d012 100644
--- a/user/perl-xml-parser-lite/APKBUILD
+++ b/user/perl-xml-parser-lite/APKBUILD
@@ -1,33 +1,33 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-xml-parser-lite
-_pkgname=XML-Parser-Lite
+_pkgreal=XML-Parser-Lite
+_author=PHRED
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.722
pkgrel=0
pkgdesc="Lightweight, pure-Perl XML parser"
url="https://metacpan.org/release/XML-Parser-Lite"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
checkdepends="perl-test-requires"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/P/PH/PHRED/XML-Parser-Lite-$pkgver.tar.gz"
-builddir="$srcdir/XML-Parser-Lite-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-xml-parser/APKBUILD b/user/perl-xml-parser/APKBUILD
index 92367af8b..eb3ff7056 100644
--- a/user/perl-xml-parser/APKBUILD
+++ b/user/perl-xml-parser/APKBUILD
@@ -1,40 +1,33 @@
-# Automatically generated by apkbuild-cpan, template 1
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-xml-parser
_pkgreal=XML-Parser
-pkgver=2.44
-pkgrel=5
+_author=TODDR
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=2.47
+pkgrel=0
pkgdesc="Perl module for parsing XML documents"
url="https://metacpan.org/release/XML-Parser"
arch="all"
-license="Artistic-2.0-Perl OR GPL-2.0-only"
-cpandepends="perl-libwww"
-cpanmakedepends=""
-depends="$cpandepends"
-makedepends="perl-dev expat-dev $cpanmakedepends"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl-libwww"
+makedepends="perl-dev expat-dev"
subpackages="$pkgname-doc"
-source="http://search.cpan.org/CPAN/authors/id/T/TO/TODDR/$_pkgreal-$pkgver.tar.gz"
+source="http://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
builddir="$srcdir/$_pkgreal-$pkgver"
-prepare() {
- cd "$builddir"
- PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
-}
-
build() {
- cd "$builddir"
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="4790d20d89478880b18255679727e5b2fb2860bb4de67d5032c805fd44c9f90697a240a612aba51255325192253aa578b346d658b29f631a4e92ad96e7d65b61 XML-Parser-2.44.tar.gz"
+sha512sums="3f9de53341bc85b87c88ad31e04b13f1f95516eec0d7e5fd1c1a3b3e66a91ca3d4de7c649978599219a4d4372f6218764ab5e1805b7155b5ca200006e1b0908f XML-Parser-2.47.tar.gz"
diff --git a/user/perl-xml-sax-base/APKBUILD b/user/perl-xml-sax-base/APKBUILD
index e303436bd..3f57370c7 100644
--- a/user/perl-xml-sax-base/APKBUILD
+++ b/user/perl-xml-sax-base/APKBUILD
@@ -1,31 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-xml-sax-base
+_pkgreal=XML-SAX-Base
+_author=GRANTM
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=1.09
pkgrel=0
pkgdesc="Driver for Perl SAX parser"
url="https://metacpan.org/release/XML-SAX-Base"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends=""
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/G/GR/GRANTM/XML-SAX-Base-$pkgver.tar.gz"
-builddir="$srcdir/XML-SAX-Base-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-xml-sax/APKBUILD b/user/perl-xml-sax/APKBUILD
index 5f6559057..d9d645ac2 100644
--- a/user/perl-xml-sax/APKBUILD
+++ b/user/perl-xml-sax/APKBUILD
@@ -1,37 +1,38 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-xml-sax
-pkgver=1.00
+_pkgreal=XML-SAX
+_author=GRANTM
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=1.02
pkgrel=0
pkgdesc="Perl SAX parser"
url="https://metacpan.org/release/XML-SAX"
arch="noarch"
license="Artistic-1.0-Perl OR GPL-1.0+"
-depends="perl-xml-namespacesupport perl-xml-sax-base"
+depends="perl perl-xml-namespacesupport perl-xml-sax-base"
makedepends="perl-dev"
-install="$pkgname.post-install $pkgname.pre-deinstall"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/G/GR/GRANTM/XML-SAX-$pkgver.tar.gz
+install="$pkgname.post-install $pkgname.pre-deinstall"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz
install-fix.patch
"
-builddir="$srcdir/XML-SAX-$pkgver"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="95553c9693d8a310747b4b86d4e80a58d4056b18cfc334f6979c98d0e9034a34253bfb17daecfc5bb28b1bd65e6baf52136f5135a969fadba86aa4148ea9bc1d XML-SAX-1.00.tar.gz
-a2177f0aa00bb31c41298f0c622f800ac0dddb1d30bc1bf86e035cfd8327fa8078baf46587ffd4a782c22fba0783709f2459c81b95a8ef86e1fd4e4058e3a166 install-fix.patch"
+sha512sums="bb30ddbbcf27803825d2f0936257e102999a197cb14bd77fa8b7a469f3a24fb7d861ef4eb03230e5581e4ed88beb8676cbb907b2cb63e9ef1a64b2c211ebdc5a XML-SAX-1.02.tar.gz
+3e9dad12d33111203153739326e784ffc3597ce78ef10cbfe9efa3151d892bac7aaaff085a92a2f9229b4fdcc0aeccbb3155ca1eebe4963b47fcd3ca16836c14 install-fix.patch"
diff --git a/user/perl-xml-sax/install-fix.patch b/user/perl-xml-sax/install-fix.patch
index c28d48b3a..7a3349cc0 100644
--- a/user/perl-xml-sax/install-fix.patch
+++ b/user/perl-xml-sax/install-fix.patch
@@ -1,6 +1,6 @@
--- XML-SAX-1.00/Makefile.PL.old 2018-02-15 09:44:15.000000000 +0000
+++ XML-SAX-1.00/Makefile.PL 2019-01-11 20:58:06.250000000 +0000
-@@ -23,7 +23,7 @@
+@@ -33,7 +33,7 @@
eval { require XML::SAX };
if ($@) {
diff --git a/user/perl-xml-simple/APKBUILD b/user/perl-xml-simple/APKBUILD
index 9327c5fc3..8fd1a3073 100644
--- a/user/perl-xml-simple/APKBUILD
+++ b/user/perl-xml-simple/APKBUILD
@@ -1,30 +1,32 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-xml-simple
+_pkgreal=XML-Simple
+_author=GRANTM
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=2.25
pkgrel=0
pkgdesc="A Perl module for parsing XML"
url="https://metacpan.org/pod/XML::Simple"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0+"
-depends="perl perl-xml-parser perl-xml-namespacesupport"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl-xml-parser perl-xml-namespacesupport"
+makedepends=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/G/GR/GRANTM/XML-Simple-$pkgver.tar.gz"
-builddir="$srcdir/XML-Simple-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-xml-tokeparser/APKBUILD b/user/perl-xml-tokeparser/APKBUILD
index a797ee9e4..41b5eec29 100644
--- a/user/perl-xml-tokeparser/APKBUILD
+++ b/user/perl-xml-tokeparser/APKBUILD
@@ -1,34 +1,34 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-xml-tokeparser
+_pkgreal=XML-TokeParser
+_author=PODMASTER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.05
pkgrel=0
pkgdesc="Simplified interface to XML::Parser"
url="https://metacpan.org/pod/XML::TokeParser"
arch="noarch"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl perl-xml-parser"
makedepends="perl-dev"
-install=""
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/P/PO/PODMASTER/XML-TokeParser-$pkgver.tar.gz"
-sha512sums="c19be15013a04908ae863ec1095af34785ad6050c8f895759e98053a0c097c9a80f5c99d33e30675c003cde7eb3b9340e866bc90c5fbcfcad93666df42439a7a XML-TokeParser-0.05.tar.gz"
-builddir="$srcdir/XML-TokeParser-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
+sha512sums="c19be15013a04908ae863ec1095af34785ad6050c8f895759e98053a0c097c9a80f5c99d33e30675c003cde7eb3b9340e866bc90c5fbcfcad93666df42439a7a XML-TokeParser-0.05.tar.gz"
diff --git a/user/perl-xml-twig/APKBUILD b/user/perl-xml-twig/APKBUILD
index 1966fd173..e628878ba 100644
--- a/user/perl-xml-twig/APKBUILD
+++ b/user/perl-xml-twig/APKBUILD
@@ -1,32 +1,32 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-xml-twig
-_pkgname=XML-Twig
+_pkgreal=XML-Twig
+_author=MIROD
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=3.52
pkgrel=0
pkgdesc="XML, the Perl way"
url="https://metacpan.org/release/XML-Twig"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-xml-parser"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-xml-parser"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/M/MI/MIROD/XML-Twig-$pkgver.tar.gz"
-builddir="$srcdir/XML-Twig-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-xmlrpc-lite/APKBUILD b/user/perl-xmlrpc-lite/APKBUILD
index 2f83d1649..d3b15cb46 100644
--- a/user/perl-xmlrpc-lite/APKBUILD
+++ b/user/perl-xmlrpc-lite/APKBUILD
@@ -1,32 +1,34 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-xmlrpc-lite
-_pkgname=XMLRPC-Lite
+_pkgreal=XMLRPC-Lite
+_author=PHRED
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
pkgver=0.717
pkgrel=0
pkgdesc="Lightweight Perl implementation of XML-RPC"
url="https://metacpan.org/release/XMLRPC-Lite"
arch="noarch"
-license="Artistic-1.0-Perl OR GPL-2.0-only"
-depends="perl-soap-lite"
+options="!check" # https://rt.cpan.org/Public/Bug/Display.html?id=127761
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-soap-lite"
+checkdepends="perl-dev"
makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/P/PH/PHRED/XMLRPC-Lite-$pkgver.tar.gz"
-builddir="$srcdir/XMLRPC-Lite-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
diff --git a/user/perl-xs-object-magic/APKBUILD b/user/perl-xs-object-magic/APKBUILD
index f36be4872..d90d3fa8a 100644
--- a/user/perl-xs-object-magic/APKBUILD
+++ b/user/perl-xs-object-magic/APKBUILD
@@ -1,36 +1,35 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-xs-object-magic
-pkgver=0.04
+_pkgreal=XS-Object-Magic
+_author=ETHER
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.05
pkgrel=0
pkgdesc="Opaque, extensible XS pointer backed objects using sv_magic"
url="https://metacpan.org/pod/XS::Object::Magic"
arch="all"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl perl-module-install perl-extutils-depends"
-depends_dev=""
-makedepends="$depends_dev perl-dev"
checkdepends="perl-test-fatal"
-install=""
+makedepends="perl-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/F/FL/FLORA/XS-Object-Magic-$pkgver.tar.gz"
-sha512sums="315288496c0bab79f16d010f7f140dc1483bb3a1053a7fc41a048308aa1f9ae01b03795be28f132c856360176372d2251315ae62db950e377be88ff222a441dd XS-Object-Magic-0.04.tar.gz"
-builddir="$srcdir/XS-Object-Magic-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
+sha512sums="8927ab903f95d4f14a1602b3b4040dc9351f3348249a37e93dbf5cc2417bbde3b5c9a7512436e58b6a16fa48f6f4b55a300951560971d457814e8ef5044e6469 XS-Object-Magic-0.05.tar.gz"
diff --git a/user/perl-xs-parse-keyword/APKBUILD b/user/perl-xs-parse-keyword/APKBUILD
new file mode 100644
index 000000000..44bd9161a
--- /dev/null
+++ b/user/perl-xs-parse-keyword/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-xs-parse-keyword
+_pkgreal=XS-Parse-Keyword
+_author=PEVANS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.39
+pkgrel=0
+pkgdesc="XS functions to aid in parsing keywords"
+url="https://metacpan.org/pod/XS::Parse::Keyword"
+arch="all"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+checkdepends="perl-test2-suite"
+makedepends="perl-dev perl-extutils-cchecker perl-module-build"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="41ac31707b473d729a7e63d4607caa77fca9da00580b931576361416d78002f56acd04a0fee0c4dd09ffc1796a914f6ae934bdbce8fcc4c9222064c6e419b7ce XS-Parse-Keyword-0.39.tar.gz"
diff --git a/user/perl-xs-parse-sublike/APKBUILD b/user/perl-xs-parse-sublike/APKBUILD
new file mode 100644
index 000000000..a2c66f8f5
--- /dev/null
+++ b/user/perl-xs-parse-sublike/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-xs-parse-sublike
+_pkgreal=XS-Parse-Sublike
+_author=PEVANS
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.21
+pkgrel=0
+pkgdesc="XS functions to aid in parsing sub-like syntax"
+url="https://metacpan.org/pod/XS::Parse::Sublike"
+arch="all"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+checkdepends="perl-test-fatal perl-test2-suite"
+makedepends="perl-dev perl-extutils-cchecker perl-module-build"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ perl Build.PL --destdir="$pkgdir" --prefix="/usr" --installdirs="vendor"
+ ./Build
+}
+
+check() {
+ ./Build test
+}
+
+package() {
+ ./Build install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="78c94fbfafbd763ea6ee03638710734889d75233abd48537b53bb3c5ceaeda261bfce4a43e3ad91854aa942c382b320fb2fef186ec3a5bb9c66767681033b410 XS-Parse-Sublike-0.21.tar.gz"
diff --git a/user/perl-xstring/APKBUILD b/user/perl-xstring/APKBUILD
new file mode 100644
index 000000000..815897d8b
--- /dev/null
+++ b/user/perl-xstring/APKBUILD
@@ -0,0 +1,30 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-xstring
+pkgver=0.005
+pkgrel=0
+pkgdesc="String helpers originally from B-namespace modules"
+url="https://metacpan.org/pod/XString"
+arch="all"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+makedepends="perl-dev"
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/A/AT/ATOOMIC/XString-$pkgver.tar.gz"
+builddir="$srcdir/XString-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="4a6055e9e59169b77e04e8b890944b3a7bc4ff9844ad6b2557f7181f7b1c8576a7aab7ebee351044cbac8f3bff2d37dea2af4bc7ff775fbc3a398c9785c53aaf XString-0.005.tar.gz"
diff --git a/user/perl-xxx/APKBUILD b/user/perl-xxx/APKBUILD
new file mode 100644
index 000000000..96b5264ac
--- /dev/null
+++ b/user/perl-xxx/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-xxx
+_pkgreal=XXX
+_author=INGY
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.38
+pkgrel=0
+pkgdesc="See raw data structures anywhere in Perl"
+url="https://metacpan.org/pod/XXX"
+arch="noarch"
+license="Artistic-1.0-Perl OR GPL-1.0+"
+depends="perl perl-yaml-pp"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="bb157d2efed5a832633481c52de0486780bf4f16cfc39f76d983d4ee3dc6cb6a6e88b7d28357884bce39befc1b6571525ba68332b2e44b35565160cd911d09bc XXX-0.38.tar.gz"
diff --git a/user/perl-yaml-libyaml/APKBUILD b/user/perl-yaml-libyaml/APKBUILD
index 87a8c5a80..46c66acf1 100644
--- a/user/perl-yaml-libyaml/APKBUILD
+++ b/user/perl-yaml-libyaml/APKBUILD
@@ -1,36 +1,34 @@
# Contributor: Dan Theisen <djt@hxx.in>
-# Maintainer: Adélie Perl Team <adelie-perl@lists.adelielinux.org>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=perl-yaml-libyaml
-pkgver=0.77
+_pkgreal=YAML-LibYAML
+_author=TINITA
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.89
pkgrel=0
pkgdesc="Perl YAML Serialization using XS and libyaml"
url="https://metacpan.org/pod/YAML::LibYAML"
arch="all"
-license="Artistic-1.0-Perl AND GPL-2.0"
+license="Artistic-1.0-Perl OR GPL-1.0+"
depends="perl"
-depends_dev=""
-makedepends="$depends_dev perl-dev"
-install=""
+makedepends="perl-dev"
subpackages="$pkgname-doc"
-source="https://cpan.metacpan.org/authors/id/T/TI/TINITA/YAML-LibYAML-$pkgver.tar.gz"
-#source="https://cpan.metacpan.org/authors/id/I/IN/INGY/YAML-LibYAML-$pkgver.tar.gz"
-builddir="$srcdir/YAML-LibYAML-$pkgver"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-$pkgver"
build() {
- cd "$builddir"
PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
-sha512sums="20d35718ebd318c2e7cfd618274dafb9c4489596e6ee77ca957f58d4971b7c712cbbf71517c9b29f316d0059b1b9f375aab57facc895c61c200cc0e40589de33 YAML-LibYAML-0.77.tar.gz"
+sha512sums="24697f9625534facf23c22a96af26468c48cc91225af9879baa3039db8158fe0ff740acea527d33651d90e1c8ce24e804b02744812b72aae7b28aa6d88ba68c7 YAML-LibYAML-0.89.tar.gz"
diff --git a/user/perl-yaml-pp/APKBUILD b/user/perl-yaml-pp/APKBUILD
new file mode 100644
index 000000000..dddd817cb
--- /dev/null
+++ b/user/perl-yaml-pp/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=perl-yaml-pp
+_pkgreal=YAML-PP
+_author=TINITA
+_au=${_author%%"${_author#??}"}
+_a=${_author%%"${_author#?}"}
+pkgver=0.38.0
+pkgrel=0
+pkgdesc="Pure-Perl YAML 1.2 library"
+url="https://metacpan.org/pod/YAML::PP"
+arch="noarch"
+license="GPL-1.0+ OR Artistic-1.0-Perl"
+depends="perl"
+checkdepends="perl-test-deep perl-test-warn"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://cpan.metacpan.org/authors/id/$_a/$_au/$_author/$_pkgreal-v$pkgver.tar.gz"
+builddir="$srcdir/$_pkgreal-v$pkgver"
+
+build() {
+ PERL_MM_USE_DEFAULT=1 perl Makefile.PL INSTALLDIRS=vendor
+ make
+}
+
+check() {
+ make test
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
+}
+
+sha512sums="2c503e675068d3c2903c3a862651417a1320647469cae74a029bc80e5a67dd7694264711aa00a2ff074b2fd0dd9ea631d5010980fb9166709e82dd9cc366dfa9 YAML-PP-v0.38.0.tar.gz"
diff --git a/user/phonon-vlc/APKBUILD b/user/phonon-vlc/APKBUILD
index 19a7ec59e..1eb6fc9b4 100644
--- a/user/phonon-vlc/APKBUILD
+++ b/user/phonon-vlc/APKBUILD
@@ -1,15 +1,19 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=phonon-vlc
-pkgver=0.10.2
-pkgrel=0
+pkgver=0.11.1
+pkgrel=1
pkgdesc="Phonon backend utilising VLC for media playback"
url="https://www.kde.org/"
arch="all"
license="LGPL-2.1+"
depends="vlc"
-makedepends="cmake extra-cmake-modules qt5-qtbase-dev phonon-dev vlc-dev"
-source="https://download.kde.org/stable/phonon/phonon-backend-vlc/$pkgver/phonon-backend-vlc-$pkgver.tar.xz"
+makedepends="cmake extra-cmake-modules phonon-dev qt5-qtbase-dev
+ qt5-qttools-dev vlc-dev"
+subpackages="$pkgname-lang"
+source="https://download.kde.org/stable/phonon/phonon-backend-vlc/$pkgver/phonon-backend-vlc-$pkgver.tar.xz
+ ecm.patch
+ "
builddir="$srcdir/phonon-backend-vlc-$pkgver"
build() {
@@ -24,7 +28,7 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DPHONON_BUILD_PHONON4QT5=True \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
@@ -36,4 +40,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="3c4e7c60582d7871b209f4b38b139f43ab5f97618399164ecc649cd0e077a1d4c7848bc5c5c213d747cf7e5f1252ff53ded745880dfd36247494479840789ba5 phonon-backend-vlc-0.10.2.tar.xz"
+sha512sums="4a068478eb1467477cf5c21813723779742eb15766aee2df8184da8c0b58598c5eff8aecefdcfed8e6136495f3caf7691c99d43e98226ab477c162ff19e1fa4e phonon-backend-vlc-0.11.1.tar.xz
+cfbbe25bd2225754a616dccd9f009027880da8d795dfe43a691d95710069af12a6729cd799f75ff66e01369bb96c31d83eb4d4408743f9a06d35e6daa4233ed0 ecm.patch"
diff --git a/user/phonon-vlc/ecm.patch b/user/phonon-vlc/ecm.patch
new file mode 100644
index 000000000..8ec7a3555
--- /dev/null
+++ b/user/phonon-vlc/ecm.patch
@@ -0,0 +1,11 @@
+--- phonon-backend-vlc-0.11.1/CMakeLists.txt.old 2019-09-26 10:29:50.000000000 +0000
++++ phonon-backend-vlc-0.11.1/CMakeLists.txt 2019-09-30 21:10:21.617593323 +0000
+@@ -6,7 +6,7 @@
+ include(FeatureSummary)
+
+ # ECM
+-find_package(ECM 5.60 NO_MODULE)
++find_package(ECM 5.54 NO_MODULE)
+ set_package_properties(ECM PROPERTIES
+ TYPE REQUIRED
+ DESCRIPTION "Extra CMake Modules"
diff --git a/user/phonon/APKBUILD b/user/phonon/APKBUILD
index c89f68a37..6a371bc68 100644
--- a/user/phonon/APKBUILD
+++ b/user/phonon/APKBUILD
@@ -1,16 +1,16 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=phonon
-pkgver=4.10.2
-pkgrel=0
+pkgver=4.11.1
+pkgrel=1
pkgdesc="Qt library for playing multimedia files"
url="https://phonon.kde.org/"
arch="all"
license="LGPL-2.1-only OR LGPL-3.0-only"
depends=""
-makedepends="cmake extra-cmake-modules pulseaudio-dev
- qt5-qtbase-dev qt5-qttools-dev"
-subpackages="$pkgname-dev $pkgname-designer"
+makedepends="cmake extra-cmake-modules pulseaudio-dev qt5-qtbase-dev
+ qt5-qttools-dev"
+subpackages="$pkgname-dev $pkgname-designer $pkgname-lang"
source="https://download.kde.org/stable/phonon/$pkgver/phonon-$pkgver.tar.xz"
build() {
@@ -24,11 +24,7 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- -DPHONON_INSTALL_QT_EXTENSIONS_INTO_SYSTEM_QT=TRUE \
- -DWITH_GLIB2=TRUE \
- -DWITH_PulseAudio=TRUE \
- -DPHONON_BUILD_PHONON4QT5=TRUE \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
@@ -42,11 +38,11 @@ package() {
designer() {
pkgdesc="$pkgdesc (Qt Designer plugin)"
- install_if="$pkgname=$pkgver-$pkgrel qt5-qttools"
+ install_if="$pkgname=$pkgver-r$pkgrel qt5-qttools"
mkdir -p "$subpkgdir"/usr/lib/qt5/plugins/
mv "$pkgdir"/usr/lib/qt5/plugins/designer \
"$subpkgdir"/usr/lib/qt5/plugins/
rmdir "$pkgdir"/usr/lib/qt5/plugins || true # Never mind
}
-sha512sums="205c2f41691ed37a2b24aa5e900f7720ba024d2046ea4bf0a9b9c46235ffd72dfb4010287ccf753b13e395f84c2a202cbb76454806de3519faf52c3ac7001c4e phonon-4.10.2.tar.xz"
+sha512sums="858b2b0d7b0336af76d226b30f3acd1914e7297e0879d5a417fa1b87b13c812f9aab7e20adcad33ce1a03624ce78323dd9968b4b277caf85f800ca60aa134f74 phonon-4.11.1.tar.xz"
diff --git a/user/php7-apcu/APKBUILD b/user/php7-apcu/APKBUILD
index 4398a424d..94f95e03f 100644
--- a/user/php7-apcu/APKBUILD
+++ b/user/php7-apcu/APKBUILD
@@ -1,21 +1,20 @@
# Contributor: zlg <zlg+adelie@zlg.space>
-# Maintainer:
+# Maintainer: Max Rees <maxcrees@me.com>
pkgname=php7-apcu
_pkgname=${pkgname#php7-}
-pkgver=5.1.15
+pkgver=5.1.18
pkgrel=0
pkgdesc="Userland cache for PHP"
-url="https://github.com/krakjoe/apcu"
+url="https://pecl.php.net/package/APCu"
arch="all"
license="PHP-3.01"
depends="php7"
makedepends="php7-dev"
subpackages=""
-source="$pkgname-$pkgver.tar.gz::https://github.com/krakjoe/${_pkgname}/archive/v${pkgver}.tar.gz"
+source="https://pecl.php.net/get/$_pkgname-$pkgver.tgz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
phpize
./configure \
--build=$CBUILD \
@@ -28,15 +27,16 @@ build() {
}
check() {
- cd "$builddir"
# The tests have a prompt at the end for sending stats
make NO_INTERACTION=1 test
}
package() {
- cd "$builddir"
# It didn't listen to DESTDIR
make INSTALL_ROOT="$pkgdir" install
+
+ install -d "$pkgdir"/etc/php/conf.d/
+ echo 'extension=apcu.so' > "$pkgdir"/etc/php/conf.d/00_apcu.ini
}
-sha512sums="d95ab6a8a073acfc6af2f83b038f68e4150a1eb518369c163f4d1bc0c8b006c84754759fa9b72ac6f7ca008c27802a3a2aca14ae9d7ca23c02078d720a530b1c php7-apcu-5.1.15.tar.gz"
+sha512sums="5e9c5b4540be7abdf2f473d2f8955d8708934a1d6e05cb2c99154cc7ba8a2bbf9afde51769e20f46ef278efd6f60b9172e0864c31e0976b9d3096a337035e7a9 apcu-5.1.18.tgz"
diff --git a/user/php7/APKBUILD b/user/php7/APKBUILD
index 187646dd3..7d1f5fddf 100644
--- a/user/php7/APKBUILD
+++ b/user/php7/APKBUILD
@@ -8,10 +8,10 @@
# ----------+---------+------------------------+---------
# bcmath | LGPL2 | ext/bcmath/libbcmath | used
# date | MIT | ext/date/lib | used
-# gd | BSD | ext/gd/libgd | used
+# gd | BSD | ext/gd/libgd | not used
# file | BSD | ext/fileinfo/libmagic | used
# libmbfl | LGPLv2 | ext/mbstring/libmbfl | used
-# oniguruma | BSD | ext/mbstring/oniguruma | used
+# oniguruma | BSD | ext/mbstring/oniguruma | not used
# pcre | BSD | ext/pcre/pcrelib | not used
# sqlite3 | Public | ext/sqlite3/libsqlite | not used
# libzip | BSD | ext/zip/lib | not used
@@ -23,211 +23,235 @@
# ----------+--------------------------------------------
# zlib | https://bugs.alpinelinux.org/issues/8299
-# secfixes:
-# 7.2.16-r0:
-# - CVE-2016-10166
-# - CVE-2018-20783
-# - CVE-2019-6977
-# - CVE-2019-9020
-# - CVE-2019-9021
-# - CVE-2019-9022
-# - CVE-2019-9023
-# - CVE-2019-9024
-
pkgname=php7
_pkgname=php
-pkgver=7.2.16
-pkgrel=0
-_apiver=20170718
+pkgver=7.4.30
+pkgrel=1
+_apiver=20190902
+_zendver=20190902
+_pdover=20170320
pkgdesc="The PHP7 language runtime engine"
url="https://php.net/"
arch="all"
license="PHP-3.01 AND Zend-2.0 AND Custom:TSRM AND LGPL-2.1+ AND MIT AND Beerware AND Public-Domain AND BSD-3-Clause AND Apache-1.0 AND PostgreSQL AND BSD-2-Clause AND Zlib AND BSD-4-Clause"
+options="!check"
depends=""
depends_dev="$pkgname=$pkgver-r$pkgrel autoconf icu-dev libedit-dev libxml2-dev
- pcre-dev zlib-dev"
+ pcre2-dev zlib-dev"
makedepends="autoconf
apache-httpd-dev
aspell-dev
+ automake
bison
bzip2-dev
+ cmd:which
curl-dev
db-dev
enchant-dev
freetds-dev
- freetype-dev
gdbm-dev
gettext-tiny
gmp-dev
icu-dev
krb5-dev
libedit-dev
+ libgd-dev
libical-dev
- libjpeg-turbo-dev
- libpng-dev
openssl-dev
- libwebp-dev
libxml2-dev
- libxpm-dev
libxslt-dev
libzip-dev
net-snmp-dev
+ oniguruma-dev
openldap-dev
- pcre-dev
+ pcre2-dev
postgresql-dev
re2c
sqlite-dev
unixodbc-dev
- zlib-dev"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-apache $pkgname-phpdbg
- $pkgname-embed $pkgname-litespeed $pkgname-cgi $pkgname-fpm
+ zlib-dev
+ "
+subpackages="$pkgname-dev $pkgname-doc $pkgname-phpdbg
+ $pkgname-embed $pkgname-cgi $pkgname-fpm $pkgname-apache
$pkgname-pear::noarch $pkgname-dbg"
-source="http://php.net/distributions/$_pkgname-$pkgver.tar.bz2
+source="https://www.php.net/distributions/$_pkgname-$pkgver.tar.bz2
$_pkgname-fpm.initd
$_pkgname-fpm.logrotate
$_pkgname-module.conf
disabled-tests.list
- install-pear.patch
+ enchant-2.patch
fpm-paths.patch
- allow-build-recode-and-imap-together.patch
- fix-tests-devserver.patch
- pwbuflen.patch
- enchant-2.patch"
+ gh14834.patch
+ install-pear.patch
+ libgd-unused-constants.patch
+ no-max-ent-size.patch
+ test-fixes.patch
+ zend_bool.patch
+ "
builddir="$srcdir/$_pkgname-$pkgver"
_libdir="/usr/lib/$_pkgname"
_extension_dir="$_libdir/modules"
_extension_confd="/etc/$_pkgname/conf.d"
-# Usage: add_ext [with|enable] name [extension dependencies...] [configure options...]
-add_ext() {
- local ext="$1"
+# secfixes: php
+# 7.2.16-r0:
+# - CVE-2019-6977
+# - CVE-2019-9020
+# - CVE-2019-9021
+# - CVE-2019-9022
+# - CVE-2019-9023
+# - CVE-2019-9024
+# - CVE-2016-10166
+# - CVE-2018-20783
+# 7.2.19-r0:
+# - CVE-2019-11036
+# - CVE-2019-11038
+# - CVE-2019-11039
+# - CVE-2019-11040
+# 7.2.21-r0:
+# - CVE-2019-11041
+# - CVE-2019-11042
+# 7.4.4-r0:
+# - CVE-2020-7059
+# - CVE-2020-7060
+# - CVE-2020-7062
+# - CVE-2020-7063
+# - CVE-2020-7064
+# - CVE-2020-7066
+# - CVE-2019-11043
+# - CVE-2019-11045
+# - CVE-2019-11046
+# - CVE-2019-11047
+# - CVE-2019-11050
+# - CVE-2019-13224
+# 7.4.29-r0:
+# - CVE-2020-7067
+# - CVE-2020-7068
+# - CVE-2020-7069
+# - CVE-2020-7070
+# - CVE-2020-7071
+# - CVE-2019-11048
+# - CVE-2021-21702
+# - CVE-2021-21703
+# - CVE-2021-21704
+# - CVE-2021-21705
+# - CVE-2021-21706
+# - CVE-2021-21707
+# - CVE-2021-21708
+
+# Usage: _add_ext [with|enable] name [extension dependencies...] [configure options...]
+_add_ext() {
+ _ext="$1"
shift
- # add_ext [with|enable] name -> --[with|enable]-name=shared
- if [ "$ext" = "with" ] || [ "$ext" = "enable" ]; then
- _configure_ext_opts="$_configure_ext_opts --$ext-$1=shared"
- ext="$1"
+ # _add_ext [with|enable] name -> --[with|enable]-name=shared
+ case "$_ext" in
+ with|enable)
+ _configure_ext_opts="$_configure_ext_opts --$_ext-$1=shared"
+ _ext="$1"
shift
- fi
+ ;;
+ esac
- case "$ext" in
- phar) subpackages="$subpackages $pkgname-$ext:$ext";;
- *) subpackages="$subpackages $pkgname-$ext:_extension";;
+ case "$_ext" in
+ phar) subpackages="$subpackages $pkgname-$_ext:$_ext";;
+ *) subpackages="$subpackages $pkgname-$_ext:_extension";;
esac
- _extensions="$_extensions $ext"
+ _extensions="$_extensions $_ext"
- local opt
- local prev
- for opt in $@; do
- case "$opt" in
+ for _opt; do
+ case "$_opt" in
-*)
# Add more configure options
- _configure_ext_opts="$_configure_ext_opts $opt"
+ _configure_ext_opts="$_configure_ext_opts $_opt"
;;
license:*)
# Add custom license
- opt="$(printf '%s' "${opt#license:}" | sed 's/:/ AND /g')"
- eval "_licenses_$ext='$opt'"
+ _opt="$(printf '%s' "${_opt#license:}" | sed 's/:/ AND /g')"
+ eval "_licenses_$_ext='$_opt'"
;;
*)
# Add dependencies
- prev="$(eval echo \$_deps_$ext)"
- eval "_deps_$ext='$prev $opt'"
+ eval "_deps_$_ext=\"\$_deps_$_ext $_opt\""
;;
- esac
+ esac
done
}
-enable_ext() { add_ext enable $@; }
-with_ext() { add_ext with $@; }
+_enable_ext() { _add_ext enable "$@"; }
+_with_ext() { _add_ext with "$@"; }
-enable_ext 'bcmath' \
+_enable_ext bcmath \
license:LGPL-2.0+:PHP-3.01
-with_ext 'bz2'
-enable_ext 'calendar'
-enable_ext 'ctype'
-with_ext 'curl'
-enable_ext 'dba' \
+_with_ext bz2
+_enable_ext calendar
+_enable_ext ctype
+_with_ext curl
+_enable_ext dba \
--with-db4 \
--with-dbmaker=shared \
--with-gdbm
-enable_ext 'dom'
-with_ext 'enchant'
-enable_ext 'exif' mbstring
-enable_ext 'fileinfo' \
+_enable_ext dom
+_with_ext enchant
+_enable_ext exif mbstring
+_enable_ext fileinfo \
license:PHP-3.0:BSD-2-Clause:BSD-3-Clause:Public-Domain
-enable_ext 'ftp'
-with_ext 'gd' \
- --with-freetype-dir=/usr \
- --disable-gd-jis-conv \
- --with-jpeg-dir=/usr \
- --with-png-dir=/usr \
- --with-webp-dir=/usr \
- --with-xpm-dir=/usr
-with_ext 'gettext'
-with_ext 'gmp'
-with_ext 'iconv'
-# Needs makedepeneds=imap-dev
-#with_ext 'imap' \
-# --with-imap-ssl
-enable_ext 'intl'
-enable_ext 'json'
-with_ext 'ldap' \
+_enable_ext ftp
+_enable_ext gd \
+ --with-external-gd
+_with_ext gettext
+_with_ext gmp
+_with_ext iconv
+_enable_ext intl
+_enable_ext json
+_with_ext ldap \
--with-ldap-sasl
-enable_ext 'mbstring' \
+_enable_ext mbstring \
license:PHP-3.01:OLDAP-2.8:BSD-2-Clause:Public-Domain:LGPL-2.0-only:LGPL-2.1-only
-add_ext 'mysqli' mysqlnd openssl \
+_add_ext mysqli mysqlnd openssl \
--with-mysqli=shared,mysqlnd \
--with-mysql-sock=/run/mysqld/mysqld.sock
-enable_ext 'mysqlnd' openssl
-add_ext 'odbc' \
+_enable_ext mysqlnd openssl
+_add_ext odbc \
--with-unixODBC=shared,/usr
-enable_ext 'opcache'
-with_ext 'openssl' \
+_enable_ext opcache
+_with_ext openssl \
--with-system-ciphers \
--with-kerberos
-enable_ext 'pcntl'
-enable_ext 'pdo'
-add_ext 'pdo_dblib' pdo \
+_enable_ext pcntl
+_enable_ext pdo
+_add_ext pdo_dblib pdo \
--with-pdo-dblib=shared
-add_ext 'pdo_mysql' pdo mysqlnd \
+_add_ext pdo_mysql pdo mysqlnd \
--with-pdo-mysql=shared,mysqlnd
-add_ext 'pdo_odbc' pdo \
+_add_ext pdo_odbc pdo \
license:PHP-3.0 \
--with-pdo-odbc=shared,unixODBC,/usr
-add_ext 'pdo_pgsql' pdo \
+_add_ext pdo_pgsql pdo \
--with-pdo-pgsql=shared
-add_ext 'pdo_sqlite' pdo \
+_add_ext pdo_sqlite pdo \
--with-pdo-sqlite=shared,/usr
-with_ext 'pgsql'
-enable_ext 'phar'
-enable_ext 'posix'
-with_ext 'pspell'
-# Needs makedepends=recode-dev
-#with_ext 'recode'
-enable_ext 'session'
-enable_ext 'shmop'
-enable_ext 'simplexml'
-with_ext 'snmp'
-enable_ext 'soap' \
+_with_ext pgsql
+_enable_ext phar
+_enable_ext posix
+_with_ext pspell
+_enable_ext session
+_enable_ext shmop
+_enable_ext simplexml
+_with_ext snmp
+_enable_ext soap \
license:PHP-3.01:PHP-2.02
-# Needs makedepends=libsodium-dev
-#with_ext 'sodium'
-enable_ext 'sockets'
-add_ext 'sqlite3' \
+_enable_ext sockets
+_add_ext sqlite3 \
--with-sqlite3=shared,/usr
-enable_ext 'sysvmsg'
-enable_ext 'sysvsem'
-enable_ext 'sysvshm'
-# Needs makedepends=tidyhtml-dev
-#with_ext 'tidy'
-enable_ext 'tokenizer'
-enable_ext 'wddx' xml
-enable_ext 'xml'
-enable_ext 'xmlreader' dom
-with_ext 'xmlrpc' xml
-enable_ext 'xmlwriter'
-with_ext 'xsl' dom
-enable_ext 'zip' \
- --with-libzip=/usr
+_enable_ext sysvmsg
+_enable_ext sysvsem
+_enable_ext sysvshm
+_enable_ext tokenizer
+_enable_ext xml
+_enable_ext xmlreader dom
+_with_ext xmlrpc xml
+_enable_ext xmlwriter
+_with_ext xsl dom
+_with_ext zip
# secfixes:
# 7.2.5-r0:
@@ -240,13 +264,23 @@ enable_ext 'zip' \
prepare() {
default_prepare
- update_config_sub
- local vapi=$(sed -n '/#define PHP_API_VERSION/{s/.* //;p}' main/php.h)
- if [ "$vapi" != "$_apiver" ]; then
- error "Upstreram API version is now $vapi. Expecting $_apiver"
- error "After updating _apiver, all 3rd-party extensions must be rebuilt."
- return 1
+ _vapi="$(sed -n '/#define PHP_API_VERSION/{s/.* //;p}' main/php.h)"
+ if [ "$_vapi" != "$_apiver" ]; then
+ error "Upstream API version $_vapi != $_apiver"
+ die "All third-party extensions must be rebuilt"
+ fi
+
+ _zapi="$(sed -n '/#define ZEND_MODULE_API_NO/{s/^[^0-9]*//;p;}' Zend/zend_modules.h)"
+ if [ "$_zapi" != "$_zendver" ]; then
+ error "Upstream Zend API version $_zapi != $_zendver"
+ die "All third-party extensions must be rebuilt"
+ fi
+
+ _papi="$(sed -n '/#define PDO_DRIVER_API/{s/.*[ ]//;p}' ext/pdo/php_pdo_driver.h)"
+ if [ "$_papi" != "$_pdover" ]; then
+ error "Upstream PDO API version $_papi != $_pdover"
+ die "All third-party extensions must be rebuilt"
fi
# https://bugs.php.net/63362 - Not needed but installed headers.
@@ -263,21 +297,17 @@ prepare() {
# Fix some bogus permissions.
find . -name '*.[ch]' -exec chmod 644 {} +
- # XXX: Delete failing tests.
- sed -n '/^[^#]/p' "$srcdir/disabled-tests.list" | while read item; do
- rm $item
+ # XXX: Disable failing tests.
+ sed -n '/^[^#]/p' "$srcdir/disabled-tests.list" | while read _test; do
+ mv "$_test" "${_test}d"
done
autoconf
}
-# Notes:
-# * gd-jis-conv breaks any non-latin font rendering (vakartel).
-# * libxml cannot be build as shared.
-# * Doesn't work with system-provided onigurama, some tests fail (invalid code
-# point); probably because bundled onigurama is version 5.x, but we have 6.x.
_build() {
- EXTENSION_DIR=$_extension_dir ./configure \
+ # libxml cannot be build as shared.
+ EXTENSION_DIR="$_extension_dir" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -293,62 +323,68 @@ _build() {
--with-config-file-path=/etc/$_pkgname \
--with-config-file-scan-dir=$_extension_confd \
--disable-short-tags \
- --with-icu-dir=/usr \
--with-libedit \
--without-readline \
- --enable-libxml \
- --with-libxml-dir=/usr \
- --with-pcre-regex=/usr \
+ --with-external-pcre \
--with-zlib \
--with-zlib-dir=/usr \
$_configure_ext_opts \
- $@
+ "$@"
make
}
build() {
- # phpdbg
- _build --enable-phpdbg \
- --enable-phpdbg-webhelper \
- --disable-cgi \
- --disable-cli
+ export CFLAGS="$CFLAGS -fno-strict-aliasing -Wno-pointer-sign"
+ export CXXFLAGS="$CXXFLAGS -std=c++17"
# apache-httpd module
- _build --disable-phpdbg \
+ _build --disable-fpm \
+ --disable-embed \
+ --disable-phpdbg \
--disable-cgi \
--disable-cli \
--with-apxs2
mv libs/libphp7.so sapi/apache2handler/mod_php.so
- # cgi, cli, fpm, embed, litespeed
- _build --disable-phpdbg \
- --enable-fpm \
- --enable-embed \
- --with-litespeed
+ _build --enable-fpm=yes \
+ --enable-embed=yes \
+ --enable-phpdbg=yes \
+ --enable-phpdbg-webhelper=yes
}
check() {
# PHP is so stupid that it's not able to resolve dependencies
# between extensions and load them in correct order, so we must
# help it...
- # opcache is Zend extension, it's handled specially in Makefile
- local php_modules="$(_extensions_by_load_order \
- | grep -vx opcache \
- | xargs -n 1 printf "'$builddir/modules/%s.la' ")"
- sed -i "/^PHP_TEST_SHARED_EXTENSIONS/,/extension=/ \
- s|in \$(PHP_MODULES)\"*|in $php_modules|" Makefile
+ #
+ # * opcache is Zend extension, it's handled specially in Makefile
+ # * skip pdo_dblib since it slowly tries to connect to nonexistent
+ # * ditto snmp
+
+ cat > php-check.ini <<-EOF
+ extension_dir=$builddir/modules
+ $(_extensions_by_load_order \
+ | grep -vxe opcache -e pdo_dblib -e snmp \
+ | sed -e 's/^/extension=/' -e 's/$/.so/')
+ EOF
+
+ # Note: We use the combination of PHPRC=... and
+ # PHP_MODULES=(nothing) so we can set the module load order
+ # correctly. Cf. test-fixes.patch
NO_INTERACTION=1 REPORT_EXIT_STATUS=1 \
SKIP_SLOW_TESTS=1 SKIP_ONLINE_TESTS=1 TEST_TIMEOUT=10 \
+ TEST_PHP_ARGS="-j$JOBS -W test.log" \
TZ= LANG= LC_ALL= \
- make test
+ PHPRC="$builddir"/php-check.ini \
+ make test PHP_MODULES=
echo 'NOTE: We have skipped quite a lot tests, see disabled-tests.list.'
}
package() {
- make -j1 INSTALL_ROOT="$pkgdir" install
+ make -j1 INSTALL_ROOT="$pkgdir" V=1 VERBOSE=1 install
install -Dm644 php.ini-production "$pkgdir"/etc/$_pkgname/php.ini
find "$pkgdir" -name '.*' | xargs rm -rf
@@ -368,14 +404,13 @@ doc() {
cd "$builddir"
mkdir -p "$subpkgdir/usr/share/doc/$_pkgname"
- cp CODING_STANDARDS CREDITS EXTENSIONS INSTALL LICENSE NEWS \
- README* UPGRADING* \
+ cp EXTENSIONS LICENSE NEWS README* UPGRADING* \
"$subpkgdir/usr/share/doc/$_pkgname/"
}
apache() {
pkgdesc="PHP7 Module for apache-httpd"
- depends="$pkgname apache-httpd"
+ depends="$pkgname=$pkgver-r$pkgrel apache-httpd"
install -D -m 755 "$builddir"/sapi/apache2handler/mod_php.so \
"$subpkgdir"/usr/libexec/apache2/mod_php.so
@@ -385,37 +420,26 @@ apache() {
phpdbg() {
pkgdesc="Interactive PHP7 debugger"
- #depends="$pkgname" ?
- install -Dm755 "$builddir"/sapi/phpdbg/phpdbg \
- "$subpkgdir"/usr/bin/phpdbg
+ _mv "$pkgdir"/usr/bin/phpdbg "$subpkgdir"/usr/bin/
}
embed() {
pkgdesc="PHP7 Embedded Library"
- #depends="$pkgname" ?
_mv "$pkgdir"/usr/lib/libphp*.so "$subpkgdir"/usr/lib/
}
-litespeed() {
- pkgdesc="PHP7 LiteSpeed SAPI"
- #depends="$pkgname" ?
-
- mkdir -p "$subpkgdir"/usr/bin
- mv "$pkgdir"/usr/bin/lsphp "$subpkgdir"/usr/bin
-}
-
cgi() {
pkgdesc="PHP7 Common Gateway Interface"
- depends="$pkgname"
+ depends="$pkgname=$pkgver-r$pkgrel"
_mv "$pkgdir"/usr/bin/php-cgi "$subpkgdir"/usr/bin/
}
fpm() {
pkgdesc="PHP7 FastCGI Process Manager"
- depends="$pkgname"
+ depends="$pkgname=$pkgver-r$pkgrel"
cd "$pkgdir"
_mv var "$subpkgdir"/
@@ -423,9 +447,9 @@ fpm() {
_mv usr/sbin "$subpkgdir"/usr/
_mv etc/$_pkgname/php-fpm* "$subpkgdir"/etc/$_pkgname/
- local file; for file in php-fpm.conf php-fpm.d/www.conf; do
- mv "$subpkgdir"/etc/$_pkgname/$file.default \
- "$subpkgdir"/etc/$_pkgname/$file
+ for _file in php-fpm.conf php-fpm.d/www.conf; do
+ mv "$subpkgdir/etc/$_pkgname/$_file.default" \
+ "$subpkgdir/etc/$_pkgname/$_file"
done
install -D -m 755 "$srcdir"/$_pkgname-fpm.initd \
@@ -439,7 +463,7 @@ fpm() {
pear() {
pkgdesc="PHP7 Extension and Application Repository"
- depends="$pkgname $pkgname-xml"
+ depends="$pkgname=$pkgver-r$pkgrel $pkgname-xml=$pkgver-r$pkgrel"
cd "$pkgdir"
# pecl needs xml extension and since we build it as shared, it must be
@@ -447,8 +471,8 @@ pear() {
sed -i 's/\$INCARG/& -d extension=xml.so/' usr/bin/pecl
mkdir -p "$subpkgdir"/usr/bin
- local file; for file in pecl pear peardev; do
- mv usr/bin/$file "$subpkgdir"/usr/bin/$file
+ for _file in pecl pear peardev; do
+ mv "usr/bin/$_file" "$subpkgdir/usr/bin/$_file"
done
_mv etc/php/pear.conf "$subpkgdir"/etc/php/
@@ -467,73 +491,70 @@ phar() {
}
_extension() {
- local ext="${subpkgname#$pkgname-}"
- local extdesc="$(head -n1 "$builddir"/ext/$ext/CREDITS 2>/dev/null ||:)"
- depends="$pkgname"
- local dep; for dep in $(eval echo \$_deps_$ext); do
- depends="$depends $pkgname-$dep"
+ _ext="${subpkgname#$pkgname-}"
+
+ depends="$pkgname=$pkgver-r$pkgrel"
+ for _dep in $(eval echo \$_deps_$_ext); do
+ depends="$depends $pkgname-$_dep=$pkgver-r$pkgrel"
done
- pkgdesc="PHP7 extension: ${extdesc:-$ext}"
- if [ -n "$(eval echo \$_licenses_$ext)" ]; then
- license="$(eval echo \$_licenses_$ext)"
- fi
- local load_order=$(_extension_load_order "$ext")
+ pkgdesc="$(head -n1 "$builddir/_ext/$_ext/CREDITS" 2>/dev/null ||:)"
+ pkgdesc="PHP7 extension: ${pkgdesc:-$_ext}"
- # extension prefix
- local prefix=
- [ "$ext" = "opcache" ] && prefix="zend_"
+ if [ -n "$(eval echo \$_licenses_$_ext)" ]; then
+ license="$(eval echo \$_licenses_$_ext)"
+ fi
- _mv "$pkgdir"/$_extension_dir/$ext.so \
- "$subpkgdir"/$_extension_dir/
+ _mv "$pkgdir/$_extension_dir/$_ext.so" \
+ "$subpkgdir/$_extension_dir/"
- mkdir -p "$subpkgdir"/$_extension_confd
- echo "${prefix}extension=$ext.so" \
- > "$subpkgdir"/$_extension_confd/$(printf %02d $load_order)_$ext.ini
+ _load_order="$(printf %02d "$(_extension_load_order "$_ext")")"
+ case "$_ext" in
+ opcache) _prefix=zend_;;
+ *) _prefix=;;
+ esac
+ mkdir -p "$subpkgdir/$_extension_confd"
+ cat > "$subpkgdir/$_extension_confd/${_load_order}_$_ext.ini" <<-EOF
+ ${_prefix}extension=$_ext.so
+ EOF
}
# Prints a load order (0-based integer) for the given extension name. Extension
# with lower load order should be loaded before exts with higher load order.
-# It's based on number of dependencies of the extension (with exception for
-# "imap"), which is flawed, but simple and good enough for now.
+# It's based on number of dependencies of the extension which is flawed,
+# but simple and good enough for now.
_extension_load_order() {
- local ext="$1"
- local deps="$(eval echo \$_deps_$ext)"
-
- case "$ext" in
- # This must be loaded after recode, even though it does
- # not depend on it.
- imap) echo 1;;
- # depends=$pkgname
- phar) echo 1;;
- *) echo "$deps" | wc -w;;
+ _ext="$1"
+ case "$_ext" in
+ # depends=$pkgname
+ phar) echo 1;;
+ *) echo "$(eval echo \$_deps_$_ext)" | wc -w;;
esac
}
# Prints $_extensions sorted by load order and name.
_extensions_by_load_order() {
- local deps list ext
-
- for ext in $_extensions; do
- list="$list $(_extension_load_order $ext);$ext"
- done
- printf '%s\n' $list | sort -t ';' -k 1 | sed -E 's/\d+;//'
+ for _ext in $_extensions; do
+ printf '%s\n' "$(_extension_load_order $_ext);$_ext"
+ done | sort -t ';' -k 1 | sed -E 's/[0-9]+;//'
}
_mv() {
- local dest; for dest; do true; done # get last argument
- mkdir -p "$dest"
- mv $@
+ for _dest; do true; done # get last argument
+ mkdir -p "$_dest"
+ mv "$@"
}
-sha512sums="f97545905a3ec4bc1ce431e306bffb2d7b6357164ea035a6899ea1589d8df4e6617af3924fa1abcb5da428ad691967504c3f94187d4cae6f2ef285e963d07e3d php-7.2.16.tar.bz2
-23df4e779c809db3e3b8e5b0353b1aafaad2f3dc56f2d1cd45f9b0e3ad71b32e40700d6ebfe914b3c87e8e0b670d0dc862ded1e5c898adf160e33dea372e044f php-fpm.initd
+sha512sums="5d5c273805d4563ea91619a2aa21bb6f7aa3600c2e1238a37312cb7610c9aad8c6a8c3f5c9d90fda94a7bfaff6d8f26de52913b70c40a7bf23651ba64979a5dc php-7.4.30.tar.bz2
+cb3ba48fbd412f12d98ef1f88b509b40bc4ca44a16779a06d43e4db3cb8d24d54404b9e11ca941b5339af8d3281ca9c8ea3ba5ced4339f91fb40608b5ce9a647 php-fpm.initd
01d4ba3ef104ea378eb0e8cbb7bdee3fdf65e4bd6865eb3bc6c0dc4af31c2d52887abdf0150b5ef984b877860285a3b1af84b11ffebb5b8b722ea9faf83edfeb php-fpm.logrotate
a7f9ba5e11652fd1cb9e756c3269269a95de083ecb5be936a85c7a09c1396db9088e0251c6a643c40235c0e776fce2a471e5c7f5a033b85c7d3b3110c2b39e48 php-module.conf
-b1008eabc86fcff88336fe2961e3229c159c930a05d97359136c381c5c1cc572a33110308a3e5ef5e31c60327f76c9ef02b375cd2ea8ff9caa7deeddc216f4ce disabled-tests.list
-f1177cbf6b1f44402f421c3d317aab1a2a40d0b1209c11519c1158df337c8945f3a313d689c939768584f3e4edbe52e8bd6103fb6777462326a9d94e8ab1f505 install-pear.patch
-a77dd3bdf9dc7a0f2c06ff3e7c425d062bbaa29902c17402ce98701dc99499be863ad543aa5e6a7d1c249702d6afb193398dd3199ae58e42b32b95d434fb1883 fpm-paths.patch
-f8ecae241a90cbc3e98aa4deb3d5d35ef555f51380e29f4e182a8060dffeb84be74f030a14c6b452668471030d78964f52795ca74275db05543ccad20ef1f2cc allow-build-recode-and-imap-together.patch
-f8bb322e56df79dd9f391737fb8737945cc730b14c7dc2ae8688979c565a9b97f5f2a12c9fcd0d8124624a9d09bd10228147d9e999bb94909bbe249f0a50646c fix-tests-devserver.patch
-8e538063d872f6770a57cdb844226a771ccda3d387dd1f199bb08c274b94fbe12ec0ef6df75c32071f308cb8f4ab51b91b520c7c2ed687adf96d0d322788e463 pwbuflen.patch
-03de56676449ddc1ba1fc9c4fee2b2ed620cd1a8ce52d288c91b42e081182871ade55c8dbbe1c8286bc4eadcd92d497a62ac7b689ea8d6b1bcb5eb25225595c4 enchant-2.patch"
+587057aaf93feec2936e2851dbb42ba78310fc012e340d90c58a8912437a8b6a15585895490c31ac31cf36969ea1f2999993c5ca42031c378f31fb83d361fd73 disabled-tests.list
+7c8c3cac9efce81d525cb5a70e1402e393881b83ef4c7b5d39d3565803d21cd283daf3d74e9a8b059ecac66cf339756acc63608ffcb83d960dba86583bd45108 enchant-2.patch
+846932c7bc2725c36ad319af41c8ba0e587dc2f87b40c812b1c75b73ff78da61c579d1a276b3ff70ccfee42bc69496c403423a1ed8895ba8c87776f4766061df fpm-paths.patch
+aa16fbaaae386035bfa77b3e085b055714e5660addc1d20cd0869d680f81cac53b25249550924288cfcfa6379a8dfacc075242f84f6ee532d6bc0d3529809e33 gh14834.patch
+951fa8445c20513aa48bf7c7d773c6b4012322e7e7592c13d965758e761b9898c484f0dbc5ae565c05787e6ab868769c97c71504624b10c9570e1d4214f75b10 install-pear.patch
+441305a96329bf8442a6b633c0a8b8e53af0e6cd5fc673057cbb6b5aeb687542894a7a068073dad0a8d8dc75aa8ca42e6b0a32e29d2a7a69c115714a75127e97 libgd-unused-constants.patch
+0e88f432d273103bff203b439cc3464d34613092007c88ec8806d82c3e317ba267d70c84e5ebc3c8b2c739fa498816e0e102a22b191ee387a42146f4ecc60481 no-max-ent-size.patch
+9160e5c6b8bf2d87299f38421caf498519eb42243118570754a5764b5e682c546309548e76df6163df49e841ff51fb07e50fadeed1687da5d73dec1810c393ee test-fixes.patch
+d214722c394ef69ba91920e408f2fb694d7233bfe5fd4abe9764d91733a00e2b58d530cf82c2183d59f925f7a8f995e343dc9ce1c20457f7adf3b9789f9e18c3 zend_bool.patch"
diff --git a/user/php7/allow-build-recode-and-imap-together.patch b/user/php7/allow-build-recode-and-imap-together.patch
deleted file mode 100644
index 555092f45..000000000
--- a/user/php7/allow-build-recode-and-imap-together.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Extensions recode and imap can't be loaded together, but they can be build
-together, and that's what we want.
-
-Source: https://src.fedoraproject.org/cgit/rpms/php.git/tree/php-5.3.0-recode.patch?h=f26
---- a/ext/recode/config9.m4
-+++ b/ext/recode/config9.m4
-@@ -4,13 +4,6 @@ dnl
-
- dnl Check for extensions with which Recode can not work
- if test "$PHP_RECODE" != "no"; then
-- test "$PHP_IMAP" != "no" && recode_conflict="$recode_conflict imap"
--
-- if test -n "$MYSQL_LIBNAME"; then
-- PHP_CHECK_LIBRARY($MYSQL_LIBNAME, hash_insert, [
-- recode_conflict="$recode_conflict mysql"
-- ])
-- fi
-
- if test -n "$recode_conflict"; then
- AC_MSG_ERROR([recode extension can not be configured together with:$recode_conflict])
diff --git a/user/php7/disabled-tests.list b/user/php7/disabled-tests.list
index 10117801e..fc1386e2e 100644
--- a/user/php7/disabled-tests.list
+++ b/user/php7/disabled-tests.list
@@ -1,18 +1,14 @@
# Dumb failures
# Expects permissions on /etc to be 40755
ext/standard/tests/file/006_error.phpt
-# session_start() missing - needs session.so
-# Test manually using the following:
-# test.ini contains "extension=./modules/session.so"
-# TEST_PHP_EXECUTABLE=sapi/cli/php sapi/cli/php run-tests.php -c test.ini $f
-Zend/tests/unset_cv05.phpt
-Zend/tests/unset_cv06.phpt
# Tests undefined behavior (integer underflow or overflow)
Zend/tests/dval_to_lval_32.phpt
Zend/tests/int_underflow_32bit.phpt
ext/date/tests/bug53437_var3.phpt
ext/date/tests/bug53437_var5.phpt
ext/date/tests/bug53437_var6.phpt
+ext/exif/tests/bug79046.phpt
+ext/exif/tests/float_cast_overflow.phpt
# General glibc/musl incompatibility related failures
# stdout printed in wrong order
@@ -25,10 +21,17 @@ ext/standard/tests/strings/007.phpt
ext/standard/tests/file/popen_pclose_error.phpt
# "Address in use" instead of "Address already in use" printed for EADDRINUSE
sapi/fpm/tests/socket-ipv4-fallback.phpt
+# strerror differences
+ext/sockets/tests/socket_strerror.phpt
+ext/sockets/tests/socket_create_pair-wrongparams.phpt
+# socket_addrinfo_explain has unexpected ai_canonname member
+ext/sockets/tests/socket_addrinfo_explain.phpt
# locale related failures
# LC_NUMERIC unsupported
ext/standard/tests/strings/sprintf_f_3.phpt
+ext/intl/tests/bug67052.phpt
+ext/json/tests/bug41403.phpt
tests/lang/034.phpt
tests/lang/bug30638.phpt
# LC_ALL unsupported
@@ -43,8 +46,10 @@ ext/standard/tests/strings/htmlentities03.phpt
ext/standard/tests/strings/htmlentities04.phpt
ext/standard/tests/strings/htmlentities15.phpt
ext/standard/tests/strings/strtoupper.phpt
+ext/fileinfo/tests/bug74170.phpt
# LC_MONETARY unsupported
ext/standard/tests/strings/moneyformat.phpt
+ext/soap/tests/bugs/bug39815.phpt
# locale: command not found
ext/standard/tests/strings/setlocale_basic1.phpt
ext/standard/tests/strings/setlocale_basic2.phpt
@@ -53,6 +58,17 @@ ext/standard/tests/strings/setlocale_variation1.phpt
ext/standard/tests/strings/setlocale_variation2.phpt
# setlocale allows "en_US.invalid"
ext/standard/tests/strings/setlocale_error.phpt
+# bind_textdomain_codeset is a stub
+ext/gettext/tests/gettext_bind_textdomain_codeset-retval.phpt
+# //IGNORE
+ext/iconv/tests/bug48147.phpt
+ext/iconv/tests/bug76249.phpt
+# //TRANSLIT
+ext/iconv/tests/iconv_basic_001.phpt
+# misc musl iconv incompatibilities
+ext/iconv/tests/bug52211.phpt
+ext/iconv/tests/eucjp2iso2022jp.phpt
+ext/iconv/tests/iconv_mime_encode.phpt
# strftime and strptime related failures
# strftime %Z (timezone abbreviation) returns a single space
@@ -91,5 +107,64 @@ ext/standard/tests/crypt/des_fallback_invalid_salt.phpt
#sapi/fpm/tests/015.phpt
# Times out on builders but runs fine manually
+ext/zlib/tests/bug67724.phpt
ext/zlib/tests/inflate_add_basic.phpt
sapi/cli/tests/upload_2G.phpt
+
+# gd errors more verbose than expected
+ext/gd/tests/bug39780_extern.phpt
+ext/gd/tests/bug45799.phpt
+ext/gd/tests/bug77973.phpt
+ext/gd/tests/createfromwbmp2_extern.phpt
+ext/gd/tests/libgd00086_extern.phpt
+
+# no XPM support in system gd
+ext/gd/tests/xpm2gd.phpt
+ext/gd/tests/xpm2jpg.phpt
+ext/gd/tests/xpm2png.phpt
+
+# misc differences when using system gd
+ext/gd/tests/bug43073.phpt
+ext/gd/tests/bug48732-mb.phpt
+ext/gd/tests/bug48732.phpt
+ext/gd/tests/bug48801-mb.phpt
+ext/gd/tests/bug48801.phpt
+ext/gd/tests/bug53504.phpt
+ext/gd/tests/bug65148.phpt
+ext/gd/tests/bug73272.phpt
+ext/gd/tests/bug73869.phpt
+ext/gd/tests/bug79067.phpt
+ext/gd/tests/bug79068.phpt
+
+# requires a default route to be set, which isn't the case during
+# network isolation
+ext/sockets/tests/bug63000.phpt
+
+# This should be skipped like long_columns.phpt is but it's missing the
+# additional checks
+ext/pdo_odbc/tests/max_columns.phpt
+
+# enchant-2 doesn't support enchant_broker_(get|set)_dict_path
+# https://news-web.php.net/php.internals/100882
+ext/enchant/tests/bug53070.phpt
+
+# Warning: zend_signal: handler was replaced
+ext/readline/tests/libedit_callback_handler_install_001.phpt
+ext/readline/tests/libedit_callback_handler_remove_001.phpt
+
+# soap server's sum is not accumulating
+ext/soap/tests/server009.phpt
+
+# "Resource bundle source files are compiled with the genrb tool into a
+# binary runtime form (.res files) that is portable among platforms with
+# the same charset family (ASCII vs. EBCDIC) and **endianness**."
+#
+# Therefore these tests which use little-endian .res files will not work
+# on our big endian arches...
+ext/intl/tests/resourcebundle_arrayaccess.phpt
+ext/intl/tests/resourcebundle_countable.phpt
+ext/intl/tests/resourcebundle_create.phpt
+ext/intl/tests/resourcebundle_individual.phpt
+ext/intl/tests/resourcebundle_iterator.phpt
+ext/intl/tests/resourcebundle_locales.phpt
+ext/intl/tests/resourcebundle_traversable.phpt
diff --git a/user/php7/enchant-2.patch b/user/php7/enchant-2.patch
index ed048de28..9d421c3bf 100644
--- a/user/php7/enchant-2.patch
+++ b/user/php7/enchant-2.patch
@@ -1,31 +1,33 @@
-Lifted from Arch: https://git.archlinux.org/svntogit/packages.git/tree/trunk/enchant-2.patch?h=packages/php
-
---- php-7.1.13/ext/enchant/config.m4.orig 2018-01-03 02:32:29.000000000 +0000
-+++ php-7.1.13/ext/enchant/config.m4 2018-01-21 22:10:03.788875780 +0000
-@@ -14,9 +14,9 @@
- ENCHANT_SEARCH_DIRS="/usr/local /usr"
- fi
- for i in $ENCHANT_SEARCH_DIRS; do
-- if test -f $i/include/enchant/enchant.h; then
-+ if test -f $i/include/enchant-2/enchant.h; then
- ENCHANT_DIR=$i
-- ENCHANT_INCDIR=$i/include/enchant
-+ ENCHANT_INCDIR=$i/include/enchant-2
- elif test -f $i/include/enchant.h; then
- ENCHANT_DIR=$i
- ENCHANT_INCDIR=$i/include
-@@ -31,7 +31,7 @@
-
- AC_DEFINE(HAVE_ENCHANT,1,[ ])
- PHP_SUBST(ENCHANT_SHARED_LIBADD)
-- PHP_ADD_LIBRARY_WITH_PATH(enchant, $ENCHANT_LIBDIR, ENCHANT_SHARED_LIBADD)
-+ PHP_ADD_LIBRARY_WITH_PATH(enchant-2, $ENCHANT_LIBDIR, ENCHANT_SHARED_LIBADD)
- PHP_ADD_INCLUDE($ENCHANT_INCDIR)
- PHP_CHECK_LIBRARY(enchant, enchant_broker_set_param,
- [
---- php-7.2.1/ext/enchant/enchant.c.orig 2018-01-02 22:36:05.000000000 +0000
-+++ php-7.2.1/ext/enchant/enchant.c 2018-01-21 22:34:50.205791491 +0000
-@@ -741,7 +741,7 @@
+--- php-7.4.4/ext/enchant/config.m4 2020-03-17 10:40:22.000000000 +0000
++++ php-7.4.4/ext/enchant/config.m4 2020-03-27 21:25:27.754470703 +0000
+@@ -4,21 +4,21 @@ PHP_ARG_WITH([enchant],
+ [Include Enchant support])])
+
+ if test "$PHP_ENCHANT" != "no"; then
+- PKG_CHECK_MODULES([ENCHANT], [enchant])
++ PKG_CHECK_MODULES([ENCHANT], [enchant-2])
+
+ PHP_EVAL_INCLINE($ENCHANT_CFLAGS)
+ PHP_EVAL_LIBLINE($ENCHANT_LIBS, ENCHANT_SHARED_LIBADD)
+
+ AC_DEFINE(HAVE_ENCHANT, 1, [ ])
+
+- PHP_CHECK_LIBRARY(enchant, enchant_get_version,
++ PHP_CHECK_LIBRARY(enchant-2, enchant_get_version,
+ [
+ AC_DEFINE(HAVE_ENCHANT_GET_VERSION, 1, [ ])
+ ], [ ], [
+ $ENCHANT_LIBS
+ ])
+
+- PHP_CHECK_LIBRARY(enchant, enchant_broker_set_param,
++ PHP_CHECK_LIBRARY(enchant-2, enchant_broker_set_param,
+ [
+ AC_DEFINE(HAVE_ENCHANT_BROKER_SET_PARAM, 1, [ ])
+ ], [ ], [
+--- a/ext/enchant/enchant.c.orig
++++ b/ext/enchant/enchant.c
+@@ -738,7 +738,7 @@
for (i = 0; i < n_sugg; i++) {
add_next_index_string(sugg, suggs[i]);
}
@@ -34,7 +36,7 @@ Lifted from Arch: https://git.archlinux.org/svntogit/packages.git/tree/trunk/enc
}
-@@ -798,7 +798,7 @@
+@@ -793,7 +793,7 @@
add_next_index_string(return_value, suggs[i]);
}
@@ -43,7 +45,7 @@ Lifted from Arch: https://git.archlinux.org/svntogit/packages.git/tree/trunk/enc
}
}
/* }}} */
-@@ -818,7 +818,7 @@
+@@ -813,7 +813,7 @@
PHP_ENCHANT_GET_DICT;
@@ -52,7 +54,7 @@ Lifted from Arch: https://git.archlinux.org/svntogit/packages.git/tree/trunk/enc
}
/* }}} */
-@@ -856,7 +856,7 @@
+@@ -851,7 +851,7 @@
PHP_ENCHANT_GET_DICT;
@@ -61,3 +63,14 @@ Lifted from Arch: https://git.archlinux.org/svntogit/packages.git/tree/trunk/enc
}
/* }}} */
+--- php-7.4.4/build/php.m4 2020-03-17 06:40:21.000000000 -0400
++++ php-7.4.4/build/php.m4 2020-04-05 09:27:14.634620646 -0400
+@@ -1541,7 +1541,7 @@ AC_DEFUN([PHP_CHECK_LIBRARY], [
+ ],[
+ LDFLAGS=$save_old_LDFLAGS
+ ext_shared=$save_ext_shared
+- unset ac_cv_lib_$1[]_$2
++ unset ac_cv_lib_[]translit($1, -, _)_$2
+ $4
+ ])dnl
+ ])
diff --git a/user/php7/fix-tests-devserver.patch b/user/php7/fix-tests-devserver.patch
deleted file mode 100644
index 80a72f0f1..000000000
--- a/user/php7/fix-tests-devserver.patch
+++ /dev/null
@@ -1,23 +0,0 @@
-From: Jakub Jirutka <jakub@jirutka.cz>
-Date: Mon, 01 May 2017 01:33:00 +0200
-Subject: [PATCH] Fix tests failing due to extra message from built-in web server
-
-Remove messages like:
-
- PHP 7.1.4 Development Server started at Mon May 1 00:42:39 2017
-
-from test outputs, because tests do not expect them. I have no clue what
-happens here...
-
---- a/run-tests.php
-+++ b/run-tests.php
-@@ -2005,6 +2005,9 @@
- // Does the output match what is expected?
- $output = preg_replace("/\r\n/", "\n", trim($out));
-
-+ // Remove message from built-in development server.
-+ $output = preg_replace("/^PHP [0-9.]+ Development Server started at .*\n\n?/m", "", $output);
-+
- /* when using CGI, strip the headers from the output */
- $headers = array();
-
diff --git a/user/php7/fpm-paths.patch b/user/php7/fpm-paths.patch
index 56d40298b..eeaeaeda1 100644
--- a/user/php7/fpm-paths.patch
+++ b/user/php7/fpm-paths.patch
@@ -1,6 +1,6 @@
--- a/sapi/fpm/fpm/fpm_conf.c
+++ b/sapi/fpm/fpm/fpm_conf.c
-@@ -1205,7 +1205,7 @@
+@@ -1212,7 +1212,7 @@
}
if (!fpm_global_config.error_log) {
@@ -9,7 +9,7 @@
}
#ifdef HAVE_SYSTEMD
-@@ -1710,7 +1710,7 @@
+@@ -1722,7 +1722,7 @@
if (fpm_globals.prefix == NULL) {
spprintf(&tmp, 0, "%s/php-fpm.conf", PHP_SYSCONFDIR);
} else {
@@ -30,7 +30,7 @@
--- a/sapi/fpm/www.conf.in
+++ b/sapi/fpm/www.conf.in
-@@ -256,7 +256,7 @@
+@@ -257,7 +257,7 @@
; The access log file
; Default: not set
@@ -39,7 +39,7 @@
; The access log format.
; The following syntax is allowed
-@@ -320,7 +320,7 @@
+@@ -321,7 +321,7 @@
; The log file for slow requests
; Default Value: not set
; Note: slowlog is mandatory if request_slowlog_timeout is set
@@ -48,7 +48,7 @@
; The timeout for serving a single request after which a PHP backtrace will be
; dumped to the 'slowlog' file. A value of '0s' means 'off'.
-@@ -418,6 +418,6 @@
+@@ -434,6 +434,6 @@
; specified at startup with the -d argument
;php_admin_value[sendmail_path] = /usr/sbin/sendmail -t -i -f www@my.domain.com
;php_flag[display_errors] = off
diff --git a/user/php7/gh14834.patch b/user/php7/gh14834.patch
new file mode 100644
index 000000000..258b5e8f9
--- /dev/null
+++ b/user/php7/gh14834.patch
@@ -0,0 +1,62 @@
+From dc2ce0df9be530e7ee91b0dfa6eb6ce2d5e5baad Mon Sep 17 00:00:00 2001
+From: Niels Dossche <7771979+nielsdos@users.noreply.github.com>
+Date: Fri, 5 Jul 2024 23:34:09 +0200
+Subject: [PATCH] Fix GH-14834: Error installing PHP when --with-pear is used
+
+libxml2 2.13 makes changes to how the parsing state is set, update our
+code accordingly. In particular, it started reporting entities within
+attributes, while it should only report entities inside text nodes.
+---
+ ext/xml/compat.c | 2 +-
+ ext/xml/tests/gh14834.phpt | 29 +++++++++++++++++++++++++++++
+ 2 files changed, 30 insertions(+), 1 deletion(-)
+ create mode 100644 ext/xml/tests/gh14834.phpt
+
+diff --git a/ext/xml/compat.c b/ext/xml/compat.c
+index 7b463ebb5112e..7ca015acc5421 100644
+--- a/ext/xml/compat.c
++++ b/ext/xml/compat.c
+@@ -376,7 +376,7 @@ _get_entity(void *user, const xmlChar *name)
+ if (ret == NULL)
+ ret = xmlGetDocEntity(parser->parser->myDoc, name);
+
+- if (ret == NULL || (parser->parser->instate != XML_PARSER_ENTITY_VALUE && parser->parser->instate != XML_PARSER_ATTRIBUTE_VALUE)) {
++ if (ret == NULL || parser->parser->instate == XML_PARSER_CONTENT) {
+ if (ret == NULL || ret->etype == XML_INTERNAL_GENERAL_ENTITY || ret->etype == XML_INTERNAL_PARAMETER_ENTITY || ret->etype == XML_INTERNAL_PREDEFINED_ENTITY) {
+ /* Predefined entities will expand unless no cdata handler is present */
+ if (parser->h_default && ! (ret && ret->etype == XML_INTERNAL_PREDEFINED_ENTITY && parser->h_cdata)) {
+diff --git a/ext/xml/tests/gh14834.phpt b/ext/xml/tests/gh14834.phpt
+new file mode 100644
+index 0000000000000..2781ba2ed0941
+--- /dev/null
++++ b/ext/xml/tests/gh14834.phpt
+@@ -0,0 +1,29 @@
++--TEST--
++GH-14834 (Error installing PHP when --with-pear is used)
++--EXTENSIONS--
++xml
++--FILE--
++<?php
++$xml = <<<XML
++<?xml version="1.0" encoding="UTF-8"?>
++<!DOCTYPE root [
++ <!ENTITY foo "ent">
++]>
++<root>
++ <element hint="hello&apos;world">&foo;<![CDATA[ &amp; ]]><?x &amp; ?></element>
++</root>
++XML;
++
++$parser = xml_parser_create();
++xml_set_character_data_handler($parser, function($_, $data) {
++ var_dump($data);
++});
++xml_parse($parser, $xml, true);
++?>
++--EXPECT--
++string(3) "
++ "
++string(3) "ent"
++string(7) " &amp; "
++string(1) "
++"
diff --git a/user/php7/install-pear.patch b/user/php7/install-pear.patch
index 18747be94..8f5fb3444 100644
--- a/user/php7/install-pear.patch
+++ b/user/php7/install-pear.patch
@@ -1,7 +1,6 @@
---- ./pear/Makefile.frag.orig 2013-04-12 07:02:27.041602514 +0000
-+++ ./pear/Makefile.frag 2013-04-12 07:04:09.065836822 +0000
-@@ -2,8 +2,11 @@
-
+--- php-7.4.4/pear/Makefile.frag 2020-03-17 10:40:21.000000000 +0000
++++ php-7.4.4/pear/Makefile.frag 2020-03-25 03:57:55.940744663 +0000
+@@ -1,7 +1,10 @@
peardir=$(PEAR_INSTALLDIR)
+# help the built php to find xml extension so we can install pear
diff --git a/user/php7/libgd-unused-constants.patch b/user/php7/libgd-unused-constants.patch
new file mode 100644
index 000000000..2b5ef2f83
--- /dev/null
+++ b/user/php7/libgd-unused-constants.patch
@@ -0,0 +1,51 @@
+Backport of https://github.com/php/php-src/commit/b3646440b1808abf0874b6f89027ce53ec5da03f
+
+Affects libgd <= 2.3.3
+
+See also https://github.com/libgd/libgd/commit/f4bc1f5c26925548662946ed7cfa473c190a104a
+
+--- php-7.4.29/ext/gd/gd.c 2022-04-12 10:55:40.000000000 +0000
++++ php-7.4.29/ext/gd/gd.c 2022-05-27 16:40:42.048499508 +0000
+@@ -90,6 +90,10 @@ static int le_gd, le_gd_font;
+ #ifndef M_PI
+ #define M_PI 3.14159265358979323846
+ #endif
++/* don't used libgd constants, not used, so going to be removed */
++#define PHP_GD_FLIP_HORIZONTAL 1
++#define PHP_GD_FLIP_VERTICAL 2
++#define PHP_GD_FLIP_BOTH 3
+
+ #ifdef HAVE_GD_FREETYPE
+ static void php_imagettftext_common(INTERNAL_FUNCTION_PARAMETERS, int, int);
+@@ -1137,9 +1141,9 @@ PHP_MINIT_FUNCTION(gd)
+ /* GD2 image format types */
+ REGISTER_LONG_CONSTANT("IMG_GD2_RAW", GD2_FMT_RAW, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IMG_GD2_COMPRESSED", GD2_FMT_COMPRESSED, CONST_CS | CONST_PERSISTENT);
+- REGISTER_LONG_CONSTANT("IMG_FLIP_HORIZONTAL", GD_FLIP_HORINZONTAL, CONST_CS | CONST_PERSISTENT);
+- REGISTER_LONG_CONSTANT("IMG_FLIP_VERTICAL", GD_FLIP_VERTICAL, CONST_CS | CONST_PERSISTENT);
+- REGISTER_LONG_CONSTANT("IMG_FLIP_BOTH", GD_FLIP_BOTH, CONST_CS | CONST_PERSISTENT);
++ REGISTER_LONG_CONSTANT("IMG_FLIP_HORIZONTAL", PHP_GD_FLIP_HORIZONTAL, CONST_CS | CONST_PERSISTENT);
++ REGISTER_LONG_CONSTANT("IMG_FLIP_VERTICAL", PHP_GD_FLIP_VERTICAL, CONST_CS | CONST_PERSISTENT);
++ REGISTER_LONG_CONSTANT("IMG_FLIP_BOTH", PHP_GD_FLIP_BOTH, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IMG_EFFECT_REPLACE", gdEffectReplace, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IMG_EFFECT_ALPHABLEND", gdEffectAlphaBlend, CONST_CS | CONST_PERSISTENT);
+ REGISTER_LONG_CONSTANT("IMG_EFFECT_NORMAL", gdEffectNormal, CONST_CS | CONST_PERSISTENT);
+@@ -4696,15 +4700,15 @@ PHP_FUNCTION(imageflip)
+ }
+
+ switch (mode) {
+- case GD_FLIP_VERTICAL:
++ case PHP_GD_FLIP_VERTICAL:
+ gdImageFlipVertical(im);
+ break;
+
+- case GD_FLIP_HORINZONTAL:
++ case PHP_GD_FLIP_HORIZONTAL:
+ gdImageFlipHorizontal(im);
+ break;
+
+- case GD_FLIP_BOTH:
++ case PHP_GD_FLIP_BOTH:
+ gdImageFlipBoth(im);
+ break;
+
diff --git a/user/php7/no-max-ent-size.patch b/user/php7/no-max-ent-size.patch
new file mode 100644
index 000000000..d6552cf1c
--- /dev/null
+++ b/user/php7/no-max-ent-size.patch
@@ -0,0 +1,183 @@
+--- php-7.4.29/ext/posix/posix.c 2022-04-12 10:55:39.000000000 +0000
++++ php-7.4.29/ext/posix/posix.c 2022-05-27 16:10:31.374379930 +0000
+@@ -1094,8 +1094,11 @@ PHP_FUNCTION(posix_getgrnam)
+ ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
+
+ #if defined(ZTS) && defined(HAVE_GETGRNAM_R) && defined(_SC_GETGR_R_SIZE_MAX)
++ errno = 0;
+ buflen = sysconf(_SC_GETGR_R_SIZE_MAX);
+- if (buflen < 1) {
++ if (buflen == -1 && errno == 0) {
++ buflen = 1024;
++ } else if (buflen < 1) {
+ RETURN_FALSE;
+ }
+ buf = emalloc(buflen);
+@@ -1151,8 +1154,11 @@ PHP_FUNCTION(posix_getgrgid)
+
+ #if defined(ZTS) && defined(HAVE_GETGRGID_R) && defined(_SC_GETGR_R_SIZE_MAX)
+
++ errno = 0;
+ grbuflen = sysconf(_SC_GETGR_R_SIZE_MAX);
+- if (grbuflen < 1) {
++ if (grbuflen == -1 && errno == 0) {
++ grbuflen = 1024;
++ } else if (grbuflen < 1) {
+ RETURN_FALSE;
+ }
+
+@@ -1226,8 +1232,11 @@ PHP_FUNCTION(posix_getpwnam)
+ ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
+
+ #if defined(ZTS) && defined(_SC_GETPW_R_SIZE_MAX) && defined(HAVE_GETPWNAM_R)
++ errno = 0;
+ buflen = sysconf(_SC_GETPW_R_SIZE_MAX);
+- if (buflen < 1) {
++ if (buflen == -1 && errno == 0) {
++ buflen = 1024;
++ } else if (buflen < 1) {
+ RETURN_FALSE;
+ }
+ buf = emalloc(buflen);
+@@ -1282,8 +1291,11 @@ PHP_FUNCTION(posix_getpwuid)
+ ZEND_PARSE_PARAMETERS_END_EX(RETURN_FALSE);
+
+ #if defined(ZTS) && defined(_SC_GETPW_R_SIZE_MAX) && defined(HAVE_GETPWUID_R)
++ errno = 0;
+ pwbuflen = sysconf(_SC_GETPW_R_SIZE_MAX);
+- if (pwbuflen < 1) {
++ if (pwbuflen == -1 && errno == 0) {
++ pwbuflen = 1024;
++ } else if (pwbuflen < 1) {
+ RETURN_FALSE;
+ }
+ pwbuf = emalloc(pwbuflen);
+--- php-7.4.29/ext/standard/filestat.c 2022-04-12 10:55:45.000000000 +0000
++++ php-7.4.29/ext/standard/filestat.c 2022-05-27 16:12:23.176939839 +0000
+@@ -310,15 +310,25 @@ PHPAPI int php_get_gid_by_name(const cha
+ #if defined(ZTS) && defined(HAVE_GETGRNAM_R) && defined(_SC_GETGR_R_SIZE_MAX)
+ struct group gr;
+ struct group *retgrptr;
++ errno = 0;
+ long grbuflen = sysconf(_SC_GETGR_R_SIZE_MAX);
+ char *grbuf;
+
+- if (grbuflen < 1) {
++ if (grbuflen == -1 && errno == 0) {
++ grbuflen = 1024;
++ } else if (grbuflen < 1) {
+ return FAILURE;
+ }
+
+ grbuf = emalloc(grbuflen);
+- if (getgrnam_r(name, &gr, grbuf, grbuflen, &retgrptr) != 0 || retgrptr == NULL) {
++try_again:
++ retgrptr = &gr;
++ if (getgrnam_r(name, &gr, grbuf, grbuflen, &retgrptr) || retgrptr == NULL) {
++ if (errno == ERANGE) {
++ grbuflen *= 2;
++ grbuf = erealloc(grbuf, grbuflen);
++ goto try_again;
++ }
+ efree(grbuf);
+ return FAILURE;
+ }
+@@ -446,15 +456,25 @@ PHPAPI uid_t php_get_uid_by_name(const c
+ #if defined(ZTS) && defined(_SC_GETPW_R_SIZE_MAX) && defined(HAVE_GETPWNAM_R)
+ struct passwd pw;
+ struct passwd *retpwptr = NULL;
++ errno = 0;
+ long pwbuflen = sysconf(_SC_GETPW_R_SIZE_MAX);
+ char *pwbuf;
+
+- if (pwbuflen < 1) {
++ if (pwbuflen == -1 && errno == 0) {
++ pwbuflen = 1024;
++ } else if (pwbuflen < 1) {
+ return FAILURE;
+ }
+
+ pwbuf = emalloc(pwbuflen);
+- if (getpwnam_r(name, &pw, pwbuf, pwbuflen, &retpwptr) != 0 || retpwptr == NULL) {
++try_again:
++ retpwptr = &pw;
++ if (getpwnam_r(name, &pw, pwbuf, pwbuflen, &retpwptr) || retpwptr == NULL) {
++ if (errno == ERANGE) {
++ pwbuflen *= 2;
++ pwbuf = erealloc(pwbuf, pwbuflen);
++ goto try_again;
++ }
+ efree(pwbuf);
+ return FAILURE;
+ }
+--- php-7.4.29/main/fopen_wrappers.c 2022-04-12 10:55:38.000000000 +0000
++++ php-7.4.29/main/fopen_wrappers.c 2022-05-27 16:13:13.063261295 +0000
+@@ -375,10 +375,13 @@ PHPAPI int php_fopen_primary_script(zend
+ struct passwd *pw;
+ #if defined(ZTS) && defined(HAVE_GETPWNAM_R) && defined(_SC_GETPW_R_SIZE_MAX)
+ struct passwd pwstruc;
++ errno = 0;
+ long pwbuflen = sysconf(_SC_GETPW_R_SIZE_MAX);
+ char *pwbuf;
+
+- if (pwbuflen < 1) {
++ if (pwbuflen == -1 && errno == 0) {
++ pwbuflen = 1024;
++ } else if (pwbuflen < 1) {
+ return FAILURE;
+ }
+
+@@ -391,7 +394,14 @@ PHPAPI int php_fopen_primary_script(zend
+ memcpy(user, path_info + 2, length);
+ user[length] = '\0';
+ #if defined(ZTS) && defined(HAVE_GETPWNAM_R) && defined(_SC_GETPW_R_SIZE_MAX)
+- if (getpwnam_r(user, &pwstruc, pwbuf, pwbuflen, &pw)) {
++try_again:
++ pw = &pwstruc;
++ if (getpwnam_r(user, pw, pwbuf, pwbuflen, &pw) || pw == NULL) {
++ if (errno == ERANGE) {
++ pwbuflen *= 2;
++ pwbuf = erealloc(pwbuf, pwbuflen);
++ goto try_again;
++ }
+ efree(pwbuf);
+ return FAILURE;
+ }
+--- php-7.4.29/main/main.c 2022-04-12 10:55:38.000000000 +0000
++++ php-7.4.29/main/main.c 2022-05-27 16:14:26.862749793 +0000
+@@ -1534,23 +1534,27 @@ PHPAPI char *php_get_current_user(void)
+ struct passwd *pwd;
+ #if defined(ZTS) && defined(HAVE_GETPWUID_R) && defined(_SC_GETPW_R_SIZE_MAX)
+ struct passwd _pw;
+- struct passwd *retpwptr = NULL;
++ errno = 0;
+ int pwbuflen = sysconf(_SC_GETPW_R_SIZE_MAX);
+ char *pwbuf;
+
+- if (pwbuflen < 1) {
++ if (pwbuflen == -1 && errno == 0) {
++ pwbuflen = 1024;
++ } else if (pwbuflen < 1) {
+ return "";
+ }
+ pwbuf = emalloc(pwbuflen);
+- if (getpwuid_r(pstat->st_uid, &_pw, pwbuf, pwbuflen, &retpwptr) != 0) {
+- efree(pwbuf);
+- return "";
+- }
+- if (retpwptr == NULL) {
++try_again:
++ pwd = &_pw;
++ if (getpwuid_r(pstat->st_uid, pwd, pwbuf, pwbuflen, &pwd) || pwd == NULL) {
++ if (errno == ERANGE) {
++ pwbuflen *= 2;
++ pwbuf = erealloc(pwbuf, pwbuflen);
++ goto try_again;
++ }
+ efree(pwbuf);
+ return "";
+ }
+- pwd = &_pw;
+ #else
+ if ((pwd=getpwuid(pstat->st_uid))==NULL) {
+ return "";
diff --git a/user/php7/php-fpm.initd b/user/php7/php-fpm.initd
index 46c65ec2e..88a87d458 100644
--- a/user/php7/php-fpm.initd
+++ b/user/php7/php-fpm.initd
@@ -51,9 +51,10 @@ start_pre() {
# If unix socket is used (instead of TCP/IP), then ensure that the
# directory exists and has correct privileges.
local listen="$(conf_get listen)"
- if [ "${listen:0:1}" = "/" ]; then
- checkpath -d -o $user:$group "$(dirname "$listen")"
- fi
+ case "$listen" in
+ /*)
+ checkpath -d -o $user:$group "$(dirname "$listen")";;
+ esac
checkpath -d "$(dirname "$pidfile")"
}
diff --git a/user/php7/pwbuflen.patch b/user/php7/pwbuflen.patch
deleted file mode 100644
index 7d2685b55..000000000
--- a/user/php7/pwbuflen.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-sysconf(_SC_GETPW_R_SIZE_MAX) returns -1 on musl and 1024 on glibc.
-
---- php-7.2.6/main/main.c 2018-06-04 23:30:18.790089810 -0400
-+++ php-7.2.6/main/main.c 2018-06-04 23:30:14.660089806 -0400
-@@ -1315,7 +1315,9 @@
- int pwbuflen = sysconf(_SC_GETPW_R_SIZE_MAX);
- char *pwbuf;
-
-- if (pwbuflen < 1) {
-+ if (pwbuflen == -1) {
-+ pwbuflen = 1024;
-+ } else if (pwbuflen < 1) {
- return "";
- }
- pwbuf = emalloc(pwbuflen);
diff --git a/user/php7/test-fixes.patch b/user/php7/test-fixes.patch
new file mode 100644
index 000000000..976783d77
--- /dev/null
+++ b/user/php7/test-fixes.patch
@@ -0,0 +1,71 @@
+Don't filter out "extension=" settings from INI files during check() so
+we can inject our own module load order.
+
+--- php-7.4.4/build/Makefile.global 2020-03-17 10:40:21.000000000 +0000
++++ php-7.4.4/build/Makefile.global 2020-03-27 06:11:09.713603308 +0000
+@@ -83,7 +83,7 @@ PHP_TEST_SHARED_EXTENSIONS = ` \
+ . $$i; $(top_srcdir)/build/shtool echo -n -- " -d zend_extension=$(top_builddir)/modules/$$dlname"; \
+ done; \
+ fi`
+-PHP_DEPRECATED_DIRECTIVES_REGEX = '^(magic_quotes_(gpc|runtime|sybase)?|(zend_)?extension(_debug)?(_ts)?)[\t\ ]*='
++PHP_DEPRECATED_DIRECTIVES_REGEX = '^(magic_quotes_(gpc|runtime|sybase)?)[\t\ ]*='
+
+ test: all
+ @if test ! -z "$(PHP_EXECUTABLE)" && test -x "$(PHP_EXECUTABLE)"; then \
+
+
+
+
+Likewise, make sure these settings are honored for these tests.
+
+--- php-7.4.4/ext/opcache/tests/php_cli_server.inc 2020-03-17 10:40:23.000000000 +0000
++++ php-7.4.4/ext/opcache/tests/php_cli_server.inc 2020-03-27 22:36:13.054537829 +0000
+@@ -11,7 +11,7 @@ function php_cli_server_start($ini = "")
+ $ini_array = array_map(function($arg) {
+ return trim($arg, '\'"');
+ }, $ini_array);
+- $cmd = [$php_executable, '-t', $doc_root, '-n', ...$ini_array, '-S', PHP_CLI_SERVER_ADDRESS];
++ $cmd = [$php_executable, '-d', 'extension_dir='.ini_get('extension_dir'), '-t', $doc_root, '-n', ...$ini_array, '-S', PHP_CLI_SERVER_ADDRESS];
+ $descriptorspec = array(
+ 0 => STDIN,
+ 1 => STDOUT,
+--- php-7.4.4/ext/session/tests/session_regenerate_id_cookie.phpt 2020-03-17 10:40:28.000000000 +0000
++++ php-7.4.4/ext/session/tests/session_regenerate_id_cookie.phpt 2020-03-27 06:43:24.043633893 +0000
+@@ -56,7 +56,7 @@ var_dump(session_destroy());
+ ob_end_flush();
+ ?>');
+
+-var_dump(`$php -n -d session.name=PHPSESSID $file`);
++var_dump(`$php -c php-check.ini -d session.name=PHPSESSID $file`);
+
+ unlink($file);
+
+--- php-7.4.4/ext/soap/tests/bug73037.phpt 2020-03-17 10:40:24.000000000 +0000
++++ php-7.4.4/ext/soap/tests/bug73037.phpt 2020-03-27 23:02:05.964562383 +0000
+@@ -63,8 +63,7 @@ function get_data($max)
+ }
+
+ $router = "bug73037_server.php";
+-$args = substr(PHP_OS, 0, 3) == 'WIN'
+- ? ["-d", "extension_dir=" . ini_get("extension_dir"), "-d", "extension=php_soap.dll"] : [];
++$args = ["-d", "extension_dir=" . ini_get("extension_dir"), "-d", "extension=soap.so"];
+ $code = <<<'PHP'
+ $s = new SoapServer(NULL, array('uri' => 'http://here'));
+ $s->setObject(new stdclass());
+
+
+
+Don't include useless message on startup which will break every test.
+
+--- php-7.4.4/run-tests.php 2020-03-17 10:40:21.000000000 +0000
++++ php-7.4.4/run-tests.php 2020-03-25 04:01:26.320747990 +0000
+@@ -2503,6 +2503,9 @@ COMMAND $cmd
+ // Does the output match what is expected?
+ $output = preg_replace("/\r\n/", "\n", trim($out));
+
++ // Remove message from built-in development server.
++ $output = preg_replace("/^PHP [0-9.]+ Development Server started at .*\n\n?/m", "", $output);
++
+ /* when using CGI, strip the headers from the output */
+ $headers = array();
+
diff --git a/user/php7/zend_bool.patch b/user/php7/zend_bool.patch
new file mode 100644
index 000000000..cdea08533
--- /dev/null
+++ b/user/php7/zend_bool.patch
@@ -0,0 +1,19 @@
+zend_parse_parameters can't be passed &int if it's expecting zend_bool
+("b", unsigned char).
+
+Ironically, this code (Reflect::export) is scheduled to be removed in
+the next 7.4 release[1], so don't bother forwarding.
+
+[1] https://github.com/php/php-src/pull/5188
+
+--- php-7.4.4/ext/reflection/php_reflection.c 2020-03-17 06:40:26.000000000 -0400
++++ php-7.4.4/ext/reflection/php_reflection.c 2020-03-30 01:00:27.938405046 -0400
+@@ -1318,7 +1318,7 @@ static void _reflection_export(INTERNAL_
+ zval *argument_ptr, *argument2_ptr;
+ zval retval, params[2];
+ int result;
+- int return_output = 0;
++ zend_bool return_output = 0;
+ zend_fcall_info fci;
+ zend_fcall_info_cache fcc;
+
diff --git a/user/physfs/APKBUILD b/user/physfs/APKBUILD
index 86f57e0cc..827e65a44 100644
--- a/user/physfs/APKBUILD
+++ b/user/physfs/APKBUILD
@@ -8,7 +8,7 @@ url="https://www.icculus.org/physfs"
arch="all"
license="Zlib"
depends=""
-makedepends=""
+makedepends="cmake"
subpackages="$pkgname-dev $pkgname-tools"
source="https://icculus.org/physfs/downloads/physfs-$pkgver.tar.bz2"
@@ -18,12 +18,11 @@ build() {
fi
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_INSTALL_LIBDIR=lib \
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
diff --git a/user/physlock/APKBUILD b/user/physlock/APKBUILD
index a2c4e471f..19858bde7 100644
--- a/user/physlock/APKBUILD
+++ b/user/physlock/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Max Rees <maxcrees@me.com>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=physlock
-pkgver=11
+pkgver=13
pkgrel=0
pkgdesc="Lightweight Linux console-locking tool"
url="https://github.com/muennich/physlock"
@@ -12,17 +12,18 @@ depends=""
makedepends="linux-headers linux-pam-dev utmps-dev"
subpackages="$pkgname-doc"
source="$pkgname-$pkgver.tar.gz::https://github.com/muennich/physlock/archive/v$pkgver.tar.gz
- utmps.patch"
+ utmps.patch
+ makefile.patch
+ "
build() {
- cd "$builddir"
make
}
package() {
- cd "$builddir"
make PREFIX="/usr" DESTDIR="$pkgdir" install
}
-sha512sums="d3badf5c99e4e3e16f4e7ec5c59ee8320c845f1b180463900d816206362ce1aa8652f2489453ad5e190cceee2ed61a90acc52e25bb6b4c4a9dc8c4ebd3054938 physlock-11.tar.gz
-d461b462dedfb7505f506ce1050d5140b8729f50a383157157e4f65465f63174cc11dc0a46cc1eed57cec0293006c5ec6cc6e96af9acab009ab3c9fe5e2381d5 utmps.patch"
+sha512sums="85c291fb7b146fbd81aacbf94d8af07e727dd9b37b458988eaee5f7a51f9923871f9b19fd9438428635963864de67d3f2a72f938d99ffe6dc3015c3a1b99ea1c physlock-13.tar.gz
+69367872c48985db31f2d84b038089da71e48ca79db0b0089f4a94f0cd853409bf9253fd5ee0b0729c01d9252072be1998141fad675baee97e93af1100ce71e6 utmps.patch
+54119c1059231f15ab5ea5543583e12f7e3f9907e9c71b3ec76b10ee5df64a0303d6caf88be9c768d7b679cfcaf0a374c924a3232f221329bc54d22b31c771ce makefile.patch"
diff --git a/user/physlock/makefile.patch b/user/physlock/makefile.patch
new file mode 100644
index 000000000..9cae82168
--- /dev/null
+++ b/user/physlock/makefile.patch
@@ -0,0 +1,14 @@
+--- physlock-13/Makefile 2019-01-28 18:46:20.000000000 +0000
++++ physlock-13/Makefile 2019-04-18 07:17:28.779909174 +0000
+@@ -7,9 +7,9 @@
+ MANPREFIX = $(PREFIX)/share/man
+
+ # enable user detection using libsystemd
+-HAVE_SYSTEMD = 1
++HAVE_SYSTEMD = 0
+
+-cflags = -Wall -pedantic $(CFLAGS)
++cflags = -D_GNU_SOURCE -Wall -pedantic $(CFLAGS)
+ cppflags = -I. $(CPPFLAGS) -D_XOPEN_SOURCE=500
+
+ lib_systemd_0 =
diff --git a/user/physlock/utmps.patch b/user/physlock/utmps.patch
index efae166a9..f3ba5e575 100644
--- a/user/physlock/utmps.patch
+++ b/user/physlock/utmps.patch
@@ -1,31 +1,23 @@
---- physlock-11/auth.c 2017-07-13 07:23:52.000000000 +0000
-+++ physlock-11/auth.c 2018-09-21 21:21:36.240024566 +0000
-@@ -16,13 +16,14 @@
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- */
-
-+#define _GNU_SOURCE
- #include <paths.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
+--- physlock-13/session.c 2019-01-28 18:46:20.000000000 +0000
++++ physlock-13/session.c 2019-04-18 07:11:54.749911535 +0000
+@@ -6,7 +7,7 @@
#include <pwd.h>
#include <unistd.h>
+ #include <errno.h>
-#include <utmp.h>
+#include <utmpx.h>
- #include <errno.h>
- #include <security/pam_misc.h>
-
-@@ -41,12 +42,12 @@ static void get_pam(userinfo_t *uinfo) {
- void get_user(userinfo_t *uinfo, int vt, uid_t owner) {
+ #if HAVE_SYSTEMD
+ #include <systemd/sd-login.h>
+@@ -50,11 +51,11 @@
+ int get_user_utmp(userinfo_t *uinfo, int vt) {
+ int ret = -1;
FILE *uf;
- struct utmp r;
+ struct utmpx r;
- struct passwd *pw;
- char tty[16], name[UT_NAMESIZE+1];
+ char tty[UT_LINESIZE+1], name[UT_NAMESIZE+1];
- uinfo->name = NULL;
+ name[0] = '\0';
- while ((uf = fopen(_PATH_UTMP, "r")) == NULL && errno == EINTR);
+ while ((uf = fopen(UTMPX_FILE, "r")) == NULL && errno == EINTR);
diff --git a/user/picmi/APKBUILD b/user/picmi/APKBUILD
new file mode 100644
index 000000000..2698a8989
--- /dev/null
+++ b/user/picmi/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=picmi
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="Single-player logic/pattern game"
+url="https://kde.org/applications/games/org.kde.picmi"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="qt5-qtbase-dev qt5-qtsvg-dev cmake extra-cmake-modules
+ qt5-qtdeclarative-dev kcoreaddons-dev kcrash-dev kdbusaddons-dev
+ kdeclarative-dev kdoctools-dev ki18n-dev kio-dev knewstuff-dev
+ kxmlgui-dev libkdegames-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/picmi-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ -Bbuild .
+ make -C build
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
+}
+
+package() {
+ make DESTDIR="$pkgdir" -C build install
+}
+
+sha512sums="10c3ffe181a2aa16aa2f6d7cf2bc4c739bfd586265312484247e658a3d02042af81dce67bf9da9b776bf2785f97d213dd2ee3f0175e2fbaf07a85b1b980045ae picmi-22.04.2.tar.xz"
diff --git a/user/picocom/APKBUILD b/user/picocom/APKBUILD
index 274d2e894..3e8588fb1 100644
--- a/user/picocom/APKBUILD
+++ b/user/picocom/APKBUILD
@@ -1,12 +1,12 @@
-# Contributor: Luis Ressel <aranea@aixah.de>
-# Maintainer: Luis Ressel <aranea@aixah.de>
+# Contributor: Mira Ressel <aranea@aixah.de>
+# Maintainer:
pkgname=picocom
pkgver=3.1
pkgrel=0
pkgdesc="Minimal dumb-terminal emulation program"
url="https://github.com/npat-efault/picocom"
arch="all"
-options="!check" # No test suite
+options="!check" # No test suite.
license="BSD-2-Clause AND GPL-2.0+"
depends=""
makedepends=""
diff --git a/user/pidgin-otr/APKBUILD b/user/pidgin-otr/APKBUILD
index a1369188d..ee3d24c82 100644
--- a/user/pidgin-otr/APKBUILD
+++ b/user/pidgin-otr/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=pidgin-otr
pkgver=4.0.2
-pkgrel=0
+pkgrel=1
pkgdesc="Enables encrypted, secure messaging in Pidgin IM"
url="https://otr.cypherpunks.ca/"
arch="all"
@@ -13,7 +13,6 @@ subpackages=""
source="https://otr.cypherpunks.ca/pidgin-otr-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,12 +24,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/pidgin/APKBUILD b/user/pidgin/APKBUILD
index 5921247b8..9cb65dc8e 100644
--- a/user/pidgin/APKBUILD
+++ b/user/pidgin/APKBUILD
@@ -1,21 +1,23 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=pidgin
-pkgver=2.13.0
+pkgver=2.14.8
pkgrel=1
pkgdesc="Multi-protocol instant messaging client"
-url="http://pidgin.im/"
+url="https://pidgin.im/"
arch="all"
license="GPL-2.0-only"
depends="gst-plugins-base"
-makedepends="gtk+-dev perl-dev libsm-dev startup-notification-dev gtkspell-dev
+checkdepends="check-dev"
+makedepends="gtk+2.0-dev perl-dev libsm-dev startup-notification-dev
libxml2-dev libidn-dev gnutls-dev dbus-dev dbus-glib-dev gstreamer-dev
- cyrus-sasl-dev ncurses-dev nss-dev tcl-dev tk-dev intltool
- gst-plugins-base-dev farstream-dev"
+ cyrus-sasl-dev ncurses-dev nss-dev tcl-dev tk-dev intltool gtkspell-dev
+ gst-plugins-base-dev farstream-dev libgnt-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang finch libpurple"
-source="https://bitbucket.org/pidgin/main/downloads/$pkgname-$pkgver.tar.bz2"
+source="https://downloads.sourceforge.net/pidgin/$pkgname-$pkgver.tar.bz2
+ pidgin-2.14.8-libpurple_test_fix.patch
+ "
build() {
- cd "$builddir"
LIBS="-lX11 -ltinfo" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,7 +30,6 @@ build() {
--disable-meanwhile \
--disable-nm \
--enable-perl \
- --disable-python \
--disable-schemas-install \
--disable-screensaver \
--enable-tcl \
@@ -37,26 +38,23 @@ build() {
--enable-gstreamer-interfaces \
--enable-farstream \
--enable-cyrus-sasl \
- --enable-nss
+ --enable-nss \
+ --disable-gevolution
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
finch() {
pkgdesc="Text-based multi-protocol instant messaging client"
mkdir -p "$subpkgdir"/usr/lib "$subpkgdir"/usr/bin
- mv "$pkgdir"/usr/lib/gnt "$pkgdir"/usr/lib/libgnt.so.* \
- "$pkgdir"/usr/lib/finch \
- "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/lib/finch "$subpkgdir"/usr/lib/
mv "$pkgdir"/usr/bin/finch "$subpkgdir"/usr/bin/
}
@@ -68,4 +66,5 @@ libpurple() {
"$subpkgdir"/usr/share/
}
-sha512sums="68b3d1eefee111544c7eb347386d0aea4f47c3e320d5963a4e0d833ed6af7b1be243a7bcd6a38c9234b58601d10a9aebf8541f1d97decfeca754fa78dc693047 pidgin-2.13.0.tar.bz2"
+sha512sums="23975501b07d14829edab7b92628703962d7a8f90849b303e2a765ec6e47d1fcbdeff62539811e26682e300a2f94520193369844de3b1c0e87f99721ca0255e6 pidgin-2.14.8.tar.bz2
+9b328516173c8c81bc99c3045fc91c1cd99a4b74a26b37b93ba9ec2fbfb7560bcaf0c5b8890a8ee02bbb19052a774f608d9a4061eb9966f70e5b19cd1dc144eb pidgin-2.14.8-libpurple_test_fix.patch"
diff --git a/user/pidgin/pidgin-2.14.8-libpurple_test_fix.patch b/user/pidgin/pidgin-2.14.8-libpurple_test_fix.patch
new file mode 100644
index 000000000..30caaa92e
--- /dev/null
+++ b/user/pidgin/pidgin-2.14.8-libpurple_test_fix.patch
@@ -0,0 +1,52 @@
+# HG changeset patch
+# Node ID e8f8e1558e11
+# Parent 930e4fb71321
+diff --git a/libpurple/tests/test_util.c b/libpurple/tests/test_util.c
+--- a/libpurple/tests/test_util.c
++++ b/libpurple/tests/test_util.c
+@@ -172,7 +172,7 @@
+ fail_unless(1282941722 == purple_str_to_time("2010-08-27.204202", TRUE, NULL, NULL, NULL));
+ fail_unless(1175919261 == purple_str_to_time("20070407T04:14:21.3234", TRUE, NULL, NULL, NULL));
+ fail_unless(1175919261 == purple_str_to_time("20070407T04:14:21Z", TRUE, NULL, NULL, NULL));
+- fail_unless(1631512800 == purple_str_to_time("09-13-2021", TRUE, NULL, NULL, NULL));
++ fail_unless(1631491200 == purple_str_to_time("09-13-2021", TRUE, NULL, NULL, NULL));
+
+ /* For testing local time we use Asia/Kathmandu because it's +05:45 and
+ * doesn't have DST which means the test should always pass regardless of
+@@ -195,9 +195,14 @@
+ * localtime.
+ */
+ timestamp = purple_str_to_time("09/13/202115:34:34", TRUE, NULL, NULL, &rest);
+- fail_unless(1631470500 == timestamp);
++ fail_unless(1631491200 == timestamp);
+ assert_string_equal("15:34:34", rest);
+
++ timestamp = purple_str_to_time("2010-08-27.134202-0700PDT", FALSE, &tm, &tz_off, &rest);
++ fail_unless(1282941722 == timestamp);
++ fail_unless((-7 * 60 * 60) == tz_off);
++ assert_string_equal("PDT", rest);
++
+ /* finally revert the TZ environment variable */
+ if(oldtz != NULL) {
+ g_setenv("TZ", oldtz, TRUE);
+diff --git a/libpurple/util.c b/libpurple/util.c
+--- a/libpurple/util.c
++++ b/libpurple/util.c
+@@ -887,6 +887,17 @@
+ t.tm_isdst = -1; /* -1 means dst info is not available */
+ }
+ }
++ } else {
++ /* If we have a time, figure out if we need to adjust our tz offset. */
++ if(!mktime_with_utc) {
++ if(utc) {
++ mktime_with_utc = TRUE;
++ tzoff = 0;
++ } else {
++ /* Local Time */
++ t.tm_isdst = -1; /* -1 means dst info is not available */
++ }
++ }
+ }
+
+ g_free(hours);
diff --git a/user/pigz/APKBUILD b/user/pigz/APKBUILD
deleted file mode 100644
index 107019248..000000000
--- a/user/pigz/APKBUILD
+++ /dev/null
@@ -1,35 +0,0 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=pigz
-pkgver=2.4
-pkgrel=0
-pkgdesc="Parallel implementation of gzip"
-url="http://zlib.net/pigz/"
-arch="all"
-license="zlib"
-makedepends="zlib-dev"
-subpackages="$pkgname-doc"
-source="http://zlib.net/pigz/pigz-$pkgver.tar.gz"
-
-build() {
- cd "$builddir"
- export CXXFLAGS="$CXXFLAGS -std=gnu++98"
- make
-}
-
-check() {
- cd "$builddir"
- make tests
-}
-
-package() {
- cd "$builddir"
- mkdir -p "$pkgdir"/usr/bin
- mkdir -p "$pkgdir"/usr/share/man/man1
- for i in pigz unpigz; do
- install -m755 $i "$pkgdir"/usr/bin
- done
- install -m644 pigz.1 "$pkgdir"/usr/share/man/man1
-}
-
-sha512sums="79b2357176f93b9f3e2bc07fee393fc4d79b7bd0041808f8ddfd23eafccde72e60ca95e97595bb624a4f732fe3612bf46d57c44541c36ae62f9aa6336abe16ba pigz-2.4.tar.gz"
diff --git a/user/pimcommon/APKBUILD b/user/pimcommon/APKBUILD
new file mode 100644
index 000000000..aab8be84c
--- /dev/null
+++ b/user/pimcommon/APKBUILD
@@ -0,0 +1,48 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=pimcommon
+pkgver=22.04.2
+pkgrel=0
+pkgdesc="Common files for KDE PIM software"
+url="https://kontact.kde.org/"
+arch="all"
+license="LGPL-2.0+ AND GPL-2.0+"
+depends=""
+makedepends="qt5-qtbase-dev qt5-qttools-dev cmake extra-cmake-modules boost-dev
+ karchive-dev kauth-dev kbookmarks-dev kcmutils-dev kcodecs-dev
+ kcompletion-dev kconfig-dev kconfigwidgets-dev kcontacts-dev
+ kcoreaddons-dev ki18n-dev kimap-dev kio-dev kitemmodels-dev
+ kitemviews-dev kjobwidgets-dev kldap-dev kmime-dev knewstuff-dev
+ kpimtextedit-dev kservice-dev ktextwidgets-dev kwidgetsaddons-dev
+ kwindowsystem-dev kxmlgui-dev libkdepim-dev purpose-dev solid-dev
+ akonadi-dev akonadi-contacts-dev akonadi-mime-dev akonadi-search-dev
+ attica-dev grantlee-dev grantleetheme-dev kcalendarcore-dev libxslt-dev
+ sonnet-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://download.kde.org/stable/release-service/$pkgver/src/pimcommon-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ QT_QPA_PLATFORM=offscreen CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="6b6d80ffb2748bf930b256e1514c406ab57a6fcf5904487e7ff550eed5acae519a2c865bc0bc638fc7f8199d59de48653cad771793642d15a0274375a6aa4faa pimcommon-22.04.2.tar.xz"
diff --git a/user/pinentry/APKBUILD b/user/pinentry/APKBUILD
index 4bacb46e7..5ec93c500 100644
--- a/user/pinentry/APKBUILD
+++ b/user/pinentry/APKBUILD
@@ -1,21 +1,21 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=pinentry
-pkgver=1.1.0
-pkgrel=1
+pkgver=1.2.1
+pkgrel=0
pkgdesc="Collection of passphrase entry handlers for the Assuan protocol"
url="https://www.gnupg.org/related_software/pinentry/"
arch="all"
license="GPL-2.0+"
depends=""
-makedepends="gtk+-dev libassuan-dev libcap-dev libgpg-error-dev ncurses-dev
+makedepends="gtk+2.0-dev libassuan-dev libcap-dev libgpg-error-dev ncurses-dev
qt5-qtbase-dev"
subpackages="$pkgname-doc $pkgname-gtk $pkgname-qt5"
source="ftp://ftp.gnupg.org/gcrypt/$pkgname/$pkgname-$pkgver.tar.bz2
- pinentry"
+ pinentry
+ "
build () {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,12 +29,10 @@ build () {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
rm -f "$pkgdir"/usr/bin/pinentry
@@ -57,5 +55,5 @@ qt5() {
"$subpkgdir"/usr/bin/
}
-sha512sums="5012672925bcb5f683358c259e55e4b87c67cf063ad52c759308933733025c33f7ce08e5b8019ffc101cbf7ef30499040ef2fd34a7611698e65e1593f80948cd pinentry-1.1.0.tar.bz2
+sha512sums="a665315628f4dcf07e16a22db3f3be15d7e7e93b3deec0546c7275b71b0e3bd65535a08af5e12d6339fd6595132df86529401d9d12bd17c428a3466e8dfafab6 pinentry-1.2.1.tar.bz2
3a6fbbe2ccdbf8d6ed5fddd960fabe9276b04d8ca1a14dded8a5f0de4b8de1636dee2cd343f2db8ff78a66b339faa6d517316f296ca924b8b2add9666f80c433 pinentry"
diff --git a/user/pixman/APKBUILD b/user/pixman/APKBUILD
index 0e545f547..b8bf2ba58 100644
--- a/user/pixman/APKBUILD
+++ b/user/pixman/APKBUILD
@@ -1,23 +1,30 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=pixman
-pkgver=0.38.4
+pkgver=0.42.2
pkgrel=0
pkgdesc="Low-level pixel manipulation library"
url="https://www.X.Org/"
arch="all"
license="MIT"
+depends=""
+makedepends="libpng-dev perl linux-headers"
subpackages="$pkgname-dev $pkgname-dbg"
-makedepends="perl linux-headers"
-source="https://www.X.Org/releases/individual/lib/$pkgname-$pkgver.tar.bz2
+source="https://www.X.Org/releases/individual/lib/$pkgname-$pkgver.tar.xz
stacksize-reduction.patch
"
+# secfixes:
+# 0.42.2-r0:
+# - CVE-2022-44638
+
build() {
+ # Static is needed by qemu
+
./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
- --disable-static \
+ --enable-static \
--disable-openmp \
--disable-arm-iwmmxt
make
@@ -31,5 +38,5 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="0683b7f67caa0881b23188b7e6f8487c7e0a1257a912686616b7d862efd5a9efdb51641c81ec54905a6f6b1029d796ca4e25c0909db28fc29fa3617bf09f9cf9 pixman-0.38.4.tar.bz2
-3d75e7328e6eaaa6e8f4defa4402db815764369f94b81be38fba07933267fe24b03b591dd4c3f3544cb090650153728bfbdd81a91acaf19524c3d08f61427f63 stacksize-reduction.patch"
+sha512sums="3476e2676e66756b1af61b1e532cd80c985c191fb7956eb01702b419726cce99e79163b7f287f74f66414680e7396d13c3fee525cd663f12b6ac4877070ff4e8 pixman-0.42.2.tar.xz
+0dc8cf94690381d32c1bebf33925475891888f19403ebe2e0dc82841ddba3689284fd88d68d751cbf8179aa968b5238455a21047a3c60a0dd6aeac615020ebdd stacksize-reduction.patch"
diff --git a/user/pixman/stacksize-reduction.patch b/user/pixman/stacksize-reduction.patch
index 38da9b3ff..ef90847ac 100644
--- a/user/pixman/stacksize-reduction.patch
+++ b/user/pixman/stacksize-reduction.patch
@@ -2,8 +2,8 @@ Reduce the stack footprint of pixman's function
general_composite_rect() which allocates a large buffer
`stack_scanline_buffer`. Make it `static __thread` instead.
---- a/pixman/pixman-general.c 2015-12-27 21:37:37.000000000 +0100
-+++ b/pixman/pixman-general.c 2016-05-05 12:24:47.346661080 +0200
+--- pixman-0.42.2/pixman/pixman-general.c.old 2022-02-01 14:51:25.000000000 -0600
++++ pixman-0.42.2/pixman/pixman-general.c 2022-11-20 22:12:40.313477382 -0600
@@ -128,8 +128,8 @@
pixman_composite_info_t *info)
{
@@ -15,7 +15,7 @@ general_composite_rect() which allocates a large buffer
uint8_t *src_buffer, *mask_buffer, *dest_buffer;
pixman_iter_t src_iter, mask_iter, dest_iter;
pixman_combine_32_func_t compose;
-@@ -158,7 +158,7 @@
+@@ -159,7 +159,7 @@
if (width <= 0 || _pixman_multiply_overflows_int (width, Bpp * 3))
return;
@@ -24,7 +24,16 @@ general_composite_rect() which allocates a large buffer
{
scanline_buffer = pixman_malloc_ab_plus_c (width, Bpp * 3, 15 * 3);
-@@ -232,7 +232,7 @@
+@@ -170,7 +170,7 @@
+ }
+ else
+ {
+- memset (stack_scanline_buffer, 0, sizeof (stack_scanline_buffer));
++ memset (static_scanline_buffer, 0, sizeof (static_scanline_buffer));
+ }
+
+ src_buffer = ALIGN (scanline_buffer);
+@@ -239,7 +239,7 @@
if (dest_iter.fini)
dest_iter.fini (&dest_iter);
diff --git a/user/plasma-browser-integration/APKBUILD b/user/plasma-browser-integration/APKBUILD
new file mode 100644
index 000000000..0b75508aa
--- /dev/null
+++ b/user/plasma-browser-integration/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=plasma-browser-integration
+pkgver=5.24.5
+pkgrel=0
+pkgdesc="Integrate Web browsers into the KDE Plasma desktop"
+url="https://www.kde.org/"
+arch="all"
+license="GPL-3.0+"
+depends=""
+makedepends="cmake extra-cmake-modules kactivities-dev kconfig-dev kcrash-dev
+ kdbusaddons-dev kfilemetadata-dev ki18n-dev kio-dev knotifications-dev
+ krunner-dev plasma-workspace-dev purpose-dev qt5-qtbase-dev"
+subpackages="$pkgname-lang"
+source="https://download.kde.org/stable/plasma/$pkgver/plasma-browser-integration-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ rm -r "$pkgdir"/etc
+}
+
+sha512sums="f34885920f1d4859d57ce3c96523c46d392f5835bce6b7d73afb30ea60827e5d520c168ccf45d2d46cec8027b0d9abe2bfc0c5b4ecfbf3b4433bb3ed0b405497 plasma-browser-integration-5.24.5.tar.xz"
diff --git a/user/plasma-desktop/APKBUILD b/user/plasma-desktop/APKBUILD
index 963cfc1dd..4623429b6 100644
--- a/user/plasma-desktop/APKBUILD
+++ b/user/plasma-desktop/APKBUILD
@@ -1,34 +1,38 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=plasma-desktop
-pkgver=5.12.7
-pkgrel=0
+pkgver=5.24.5
+pkgrel=1
pkgdesc="Modern, functional, integrated libre desktop environment"
url="https://www.kde.org/plasma-desktop"
arch="all"
options="!check" # Test suite fails due to keyboard layouts
-license="GPL-2.0 LGPL-2.1"
+license="BSD-3-Clause AND CC0-1.0 AND GFDL-1.2+ AND GPL-2.0-only AND GPL-2.0+ AND GPL-3.0-only AND LGPL-2.0-only AND LGPL-2.0+ AND LGPL-2.1-only AND LGPL-2.1+ AND LGPL-3.0-only"
# theme/visual dependencies
-depends="breeze breeze-icons oxygen ttf-liberation"
+depends="breeze breeze-icons kirigami2 oxygen qt5-qtquickcontrols2
+ qqc2-desktop-style ttf-liberation"
# shell/QML dependencies
depends="$depends kde-cli-tools kded kwin qt5-qtgraphicaleffects setxkbmap"
# Good Ideas™ to have
-depends="$depends consolekit kdeclarative"
+depends="$depends elogind kdeclarative polkit-kde-agent-1 xdg-user-dirs"
makedepends="cmake qt5-qtbase-dev qt5-qtdeclarative-dev qt5-qtx11extras-dev
qt5-qtsvg-dev kdelibs4support-dev xf86-input-synaptics-dev
- kauth-dev plasma-framework-dev kdoctools-dev ki18n-dev
+ kauth-dev plasma-framework-dev kdoctools-dev ki18n-dev libkworkspace-dev
kcmutils-dev knewstuff-dev knotifications-dev knotifyconfig-dev
attica-dev kwallet-dev krunner-dev kglobalaccel-dev kdeclarative-dev
kpeople-dev kdbusaddons-dev kactivities-dev kactivities-stats-dev
kconfig-dev kitemmodels-dev plasma-workspace-dev xf86-input-evdev-dev
libxkbcommon-dev pulseaudio-dev libcanberra-dev libxkbfile-dev
xorg-server-dev kwin-dev kscreenlocker-dev baloo-dev xcb-util-image-dev
- xf86-input-libinput-dev breeze-dev xkeyboard-config extra-cmake-modules"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/plasma/$pkgver/plasma-desktop-$pkgver.tar.xz"
+ xf86-input-libinput-dev breeze-dev xkeyboard-config extra-cmake-modules
+ kirigami2-dev libksysguard-dev qt5-qtquickcontrols2-dev
+ kuserfeedback-dev qqc2-desktop-style-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/plasma/$pkgver/plasma-desktop-$pkgver.tar.xz
+ remove-discover-from-taskmanager.patch
+ "
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -40,18 +44,17 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_TESTING=OFF \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="671108c3c1c46bc0dfdbc2eb1438654c84ee3bc098c137466ab28d230651f20251894b3008a030a0c3bf2aa4904cca61418c458f41a023042630c6f80d4bf41d plasma-desktop-5.12.7.tar.xz"
+sha512sums="3bb770023b47dcc3c51dbdacfe9cb93adc2f514d8d19f54fed10023d9440bed956ec3beb18d9979cb408ab2e6e960ca383d215fd072ba2df34e4e0b5f6c55270 plasma-desktop-5.24.5.tar.xz
+962139886d2d8a2828ff17576cac42ae3cb72ca709f1d387962da0b0adf5c8cb017f362dadc269867968da68680db5647065bdb9221dd69ff96194af0ce62238 remove-discover-from-taskmanager.patch"
diff --git a/user/plasma-desktop/remove-discover-from-taskmanager.patch b/user/plasma-desktop/remove-discover-from-taskmanager.patch
new file mode 100644
index 000000000..76e37ac85
--- /dev/null
+++ b/user/plasma-desktop/remove-discover-from-taskmanager.patch
@@ -0,0 +1,16 @@
+We don't ship Discover right now, and this gives users a broken app icon
+by default.
+
+See-also: https://git.adelielinux.org/adelie/packages/-/issues/1115
+
+--- plasma-desktop-5.24.5/applets/taskmanager/package/contents/config/main.xml.old 2022-05-03 05:31:25.000000000 -0500
++++ plasma-desktop-5.24.5/applets/taskmanager/package/contents/config/main.xml 2023-11-25 06:21:00.002184051 -0600
+@@ -81,7 +81,7 @@
+ </entry>
+ <entry name="launchers" type="StringList">
+ <label>The list of launcher tasks on the widget. Usually .desktop file or executable URLs. Special URLs such as preferred://browser that expand to default applications are supported.</label>
+- <default>applications:systemsettings.desktop,applications:org.kde.discover.desktop,preferred://filemanager,preferred://browser</default>
++ <default>applications:systemsettings.desktop,preferred://filemanager,preferred://browser</default>
+ </entry>
+ <entry name="middleClickAction" type="Enum">
+ <label>What to do on middle-mouse click on a task button.</label>
diff --git a/user/plasma-framework/APKBUILD b/user/plasma-framework/APKBUILD
index a0f00850a..865e30359 100644
--- a/user/plasma-framework/APKBUILD
+++ b/user/plasma-framework/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=plasma-framework
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Frameworks for the KDE Plasma 5 desktop environment"
url="https://www.kde.org/"
@@ -11,17 +11,17 @@ license="LGPL-2.1+ AND GPL-2.0+"
depends="qt5-qtquickcontrols"
depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev kconfig-dev kcoreaddons-dev
kpackage-dev kservice-dev kwindowsystem-dev"
+docdepends="kservice-doc kpackage-doc kconfig-doc kcoreaddons-doc"
makedepends="$depends_dev cmake extra-cmake-modules python3 doxygen libx11-dev
libxcb-dev graphviz qt5-qtsvg-dev qt5-qttools-dev kdoctools-dev kio-dev
kactivities-dev karchive-dev kconfigwidgets-dev kdbusaddons-dev
kdeclarative-dev kglobalaccel-dev kguiaddons-dev kiconthemes-dev
- kirigami2-dev ki18n-dev knotifications-dev kwayland-dev
- qt5-qtquickcontrols2-dev"
+ kirigami2-dev ki18n-dev knotifications-dev qt5-qtquickcontrols2-dev
+ kwayland-dev $docdepends"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/plasma-framework-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -33,18 +33,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="618f2beb3b8a25cacf7c11339ba15cae10db461c61e278a5ba845e9afac7e9edb48fde16bd78b4bb7d16c07001f8d9fbdbf5bfd58593488a544fa183b3df8c15 plasma-framework-5.54.0.tar.xz"
+sha512sums="071e0ce261516e4a7ab1105f86304e5dae7c16a9663980222cf60922ae6bf785cd2b0447b7a2f2a57e2a2396c1de15655c8a7c02568d81652da946a6384b9eb7 plasma-framework-5.94.0.tar.xz"
diff --git a/user/plasma-integration/APKBUILD b/user/plasma-integration/APKBUILD
index 2b3981303..a2922c75f 100644
--- a/user/plasma-integration/APKBUILD
+++ b/user/plasma-integration/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=plasma-integration
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="Qt platform theme plugin for Plasma"
url="https://www.kde.org/"
@@ -17,7 +17,6 @@ subpackages="$pkgname-lang"
source="https://download.kde.org/stable/plasma/$pkgver/plasma-integration-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -30,18 +29,16 @@ build() {
-DCMAKE_C_FLAGS="$CFLAGS" \
-DCMAKE_DISABLE_FIND_PACKAGE_FontNotoSans=true \
-DCMAKE_DISABLE_FIND_PACKAGE_FontHack=true \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b33b1b2d044f36b3dad8bf854acb9a1f94be527c9c9b84d18a58323ab249a63276ee91553b6d92fd77b347a52d6dc4c10c080e0333dd31d4ef1f6058cb557fe0 plasma-integration-5.12.7.tar.xz"
+sha512sums="6c60eff349d6b60fd8f781e162768d7cfb45d042687c1206f3f2c9e7af0c5719ff70555eff181782607ac53755844b0968ee7b9a75c87d6bd65b489a3a9dc348 plasma-integration-5.24.5.tar.xz"
diff --git a/user/plasma-meta/APKBUILD b/user/plasma-meta/APKBUILD
new file mode 100644
index 000000000..8526dde71
--- /dev/null
+++ b/user/plasma-meta/APKBUILD
@@ -0,0 +1,21 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=plasma-meta
+pkgver=5.24.5
+pkgrel=1
+pkgdesc="Metapackage for optional KDE Plasma dependencies"
+url="https://www.adelielinux.org/"
+arch="noarch"
+options="!check" # No tests, it's a metapackage.
+license="Public-Domain"
+depends="bluedevil breeze-grub drkonqi plasma-browser-integration plasma-pa
+ plasma-systemmonitor plasma-thunderbolt plasma-vault systemsettings
+ kscreen"
+makedepends=""
+subpackages=""
+source=""
+
+package() {
+ mkdir -p "$pkgdir"
+}
+
diff --git a/user/plasma-nm/APKBUILD b/user/plasma-nm/APKBUILD
new file mode 100644
index 000000000..850b6cb09
--- /dev/null
+++ b/user/plasma-nm/APKBUILD
@@ -0,0 +1,47 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=plasma-nm
+pkgver=5.24.5
+pkgrel=0
+pkgdesc="NetworkManager integration for KDE Plasma desktop"
+url="https://www.kde.org/"
+arch="all"
+license="(LGPL-2.1-only OR LGPL-3.0-only) AND GPL-2.0-only AND GPL-2.0+ AND LGPL-2.0+"
+depends="kirigami2 mobile-broadband-provider-info prison-quick"
+makedepends="cmake extra-cmake-modules kauth-dev kcodecs-dev kcompletion-dev
+ kconfigwidgets-dev kcoreaddons-dev kdbusaddons-dev kdeclarative-dev
+ ki18n-dev kiconthemes-dev kio-dev kitemviews-dev kjobwidgets-dev
+ knotifications-dev kpackage-dev kservice-dev kwallet-dev
+ kwidgetsaddons-dev kwindowsystem-dev kxmlgui-dev modemmanager-qt-dev
+ networkmanager-dev networkmanager-qt-dev plasma-framework-dev
+ prison-dev qca-dev qt5-qtbase-dev qt5-qtdeclarative-dev solid-dev"
+subpackages="$pkgname-lang"
+# We don't want to pull NM into plasma-meta, so we do this as a workaround.
+install_if="plasma-desktop networkmanager"
+source="https://download.kde.org/stable/plasma/$pkgver/plasma-nm-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="0b64b2f231d7e97f901251e274bebd53b22c19ddcfa67cc66947f48adebe61c6bde21f339896f267af22f4112b9a392d331345999000c43cb5b1e51680668ec8 plasma-nm-5.24.5.tar.xz"
diff --git a/user/plasma-pa/APKBUILD b/user/plasma-pa/APKBUILD
new file mode 100644
index 000000000..e0954a0d1
--- /dev/null
+++ b/user/plasma-pa/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=plasma-pa
+pkgver=5.24.5
+pkgrel=0
+pkgdesc="PulseAudio integration for KDE Plasma desktop"
+url="https://www.kde.org/"
+arch="all"
+license="LGPL-2.1-only OR LGPL-3.0-only"
+depends="kirigami2 libcanberra-pulse sound-theme-freedesktop"
+makedepends="cmake extra-cmake-modules glib-dev kcoreaddons-dev kdeclarative-dev
+ kdoctools-dev kglobalaccel-dev ki18n-dev knotifications-dev
+ libcanberra-dev plasma-framework-dev pulseaudio-dev qt5-qtbase-dev
+ qt5-qtdeclarative-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://download.kde.org/stable/plasma/$pkgver/plasma-pa-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="fdf18b0baa1fb43a8d576d454ba6625bf7d376eb30fcbe8e09df388441a04d1b373b6d53a56b4f14552fc06cbdddea193248044d0cc5e3b71fb90651708afaa1 plasma-pa-5.24.5.tar.xz"
diff --git a/user/plasma-systemmonitor/APKBUILD b/user/plasma-systemmonitor/APKBUILD
new file mode 100644
index 000000000..9670ff432
--- /dev/null
+++ b/user/plasma-systemmonitor/APKBUILD
@@ -0,0 +1,41 @@
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
+pkgname=plasma-systemmonitor
+pkgver=5.24.5
+pkgrel=0
+pkgdesc="System monitor tool for KDE Plasma"
+url="https://www.kde.org/plasma-desktop/"
+arch="all"
+license="LGPL-2.0+"
+depends="kirigami2 ksystemstats qt5-qtquickcontrols2"
+makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
+ kconfig-dev kdbusaddons-dev kdeclarative-dev kglobalaccel-dev ki18n-dev
+ kio-dev kitemmodels-dev knewstuff-dev kservice-dev kirigami2-dev
+ libksysguard-dev qt5-qtquickcontrols2-dev"
+subpackages="$pkgname-lang"
+source="https://download.kde.org/stable/plasma/$pkgver/$pkgname-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="b8c4a959eb587b25d8d503b3b2d05e6c8ced3b0cb146e08f0351f424962d059b70c8dd323d55b31ef903157b71bad6f20f969840a860ed25ebdafeb3db18489d plasma-systemmonitor-5.24.5.tar.xz"
diff --git a/user/plasma-thunderbolt/APKBUILD b/user/plasma-thunderbolt/APKBUILD
new file mode 100644
index 000000000..540d65560
--- /dev/null
+++ b/user/plasma-thunderbolt/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=plasma-thunderbolt
+pkgver=5.24.5
+pkgrel=0
+pkgdesc="Thunderbolt device integration for KDE Plasma desktop"
+url="https://www.kde.org/"
+arch="all"
+options="!check" # Requires running D-Bus.
+license="GPL-2.0-only"
+depends="bolt"
+makedepends="cmake extra-cmake-modules kcmutils-dev kcoreaddons-dev
+ knotifications-dev qt5-qtbase-dev qt5-qtdeclarative-dev"
+subpackages="$pkgname-lang"
+source="https://download.kde.org/stable/plasma/$pkgver/plasma-thunderbolt-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="b1096fac09800e33b87e79a2e774eaf19afa063263e71f772ec0081fda714c63dd07a0000489c36c3f7deead3ee563880bc12f336b8ea599b396613d28cc08f5 plasma-thunderbolt-5.24.5.tar.xz"
diff --git a/user/plasma-vault/APKBUILD b/user/plasma-vault/APKBUILD
new file mode 100644
index 000000000..4b37a00c2
--- /dev/null
+++ b/user/plasma-vault/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=plasma-vault
+pkgver=5.24.5
+pkgrel=0
+pkgdesc="Secure storage plugin for KDE Plasma desktop"
+url="https://www.kde.org/"
+arch="all"
+license="GPL-2.0-only AND (LGPL-2.1-only OR LGPL-3.0-only)"
+depends="encfs"
+makedepends="cmake extra-cmake-modules kactivities-dev kconfig-dev
+ kconfigwidgets-dev kcoreaddons-dev kdbusaddons-dev ki18n-dev kio-dev
+ kwidgetsaddons-dev libksysguard-dev networkmanager-qt-dev
+ plasma-framework-dev qt5-qtbase-dev qt5-qtdeclarative-dev"
+subpackages="$pkgname-lang"
+source="https://download.kde.org/stable/plasma/$pkgver/plasma-vault-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ -Bbuild
+ make -C build
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
+}
+
+package() {
+ make DESTDIR="$pkgdir" -C build install
+}
+
+sha512sums="6495f94f060f139e91a25cbecf432d5bf9ee5ae949438278966c11cd7e725feb63aee6955dce5b46b816b0c57f5253b2cf215ad70efd592bf6e579ad6acb4cd2 plasma-vault-5.24.5.tar.xz"
diff --git a/user/plasma-wayland-protocols/APKBUILD b/user/plasma-wayland-protocols/APKBUILD
new file mode 100644
index 000000000..fba126944
--- /dev/null
+++ b/user/plasma-wayland-protocols/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=plasma-wayland-protocols
+pkgver=1.7.0
+pkgrel=0
+pkgdesc="KDE accessories for X12"
+url="https://www.kde.org/"
+arch="noarch"
+license="LGPL-2.1+"
+depends=""
+makedepends="cmake extra-cmake-modules"
+subpackages=""
+source="https://download.kde.org/stable/plasma-wayland-protocols/plasma-wayland-protocols-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="1ed01ce6af375c4012b3367377cea172446f2a7f1bef01c2e56dc2482c378955f9507e4e3bbb2ab316ba116ec181beaf9287f5b81199a02d5fd9eefb658bcb9c plasma-wayland-protocols-1.7.0.tar.xz"
diff --git a/user/plasma-workspace-wallpapers/APKBUILD b/user/plasma-workspace-wallpapers/APKBUILD
index d4d5fc2d3..bd69db0ad 100644
--- a/user/plasma-workspace-wallpapers/APKBUILD
+++ b/user/plasma-workspace-wallpapers/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=plasma-workspace-wallpapers
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="Default wallpapers from KDE"
url="https://www.KDE.org/"
@@ -13,7 +13,6 @@ subpackages=""
source="https://download.kde.org/stable/plasma/$pkgver/plasma-workspace-wallpapers-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -24,18 +23,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="7abda6e4cf223a72222ab2f2b3d8deb631b7ce1e6a415697c367acb53ae5f653fc8dbf6ddd631ff7a1888c2293d102bc0ba1753e50419138f7c9d7d2ea5f08a9 plasma-workspace-wallpapers-5.12.7.tar.xz"
+sha512sums="8b22bb8a2c093f3f7b7da8b0db55c688fa6d602326429db3e32960d7596c0f79e79d1a724bdb914d55caeffa36f422eea6678afdd62e2bb89f3afa479d056873 plasma-workspace-wallpapers-5.24.5.tar.xz"
diff --git a/user/plasma-workspace/APKBUILD b/user/plasma-workspace/APKBUILD
index 3d60e96e2..06b2acbd3 100644
--- a/user/plasma-workspace/APKBUILD
+++ b/user/plasma-workspace/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=plasma-workspace
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="KDE Plasma 5 workspace"
url="https://www.kde.org/plasma-desktop"
@@ -13,26 +13,35 @@ depends="kinit qdbus qtpaths xmessage xprop xset xsetroot"
# font installation stuff
depends="$depends mkfontdir"
# QML deps
-depends="$depends qt5-qtgraphicaleffects qt5-qtquickcontrols solid"
+depends="$depends kquickcharts qt5-qtgraphicaleffects qt5-qtquickcontrols solid"
# other runtime deps / plugins
depends="$depends libdbusmenu-qt kcmutils kde-cli-tools kded kdesu kio-extras
- ksysguard kwin milou plasma-integration pulseaudio-utils iso-codes xrdb"
+ ksystemstats kwin milou plasma-integration pulseaudio-utils iso-codes
+ breeze plasma-framework prison xrdb"
depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev kdelibs4support-dev
kitemmodels-dev kservice-dev kwindowsystem-dev"
makedepends="$depends_dev cmake extra-cmake-modules qt5-qtscript-dev
- iso-codes-dev libdbusmenu-qt-dev libxtst-dev xcb-util-image-dev
+ iso-codes-dev libdbusmenu-qt-dev libqalculate-dev libxtst-dev
+ xcb-util-image-dev libkworkspace-dev networkmanager-qt-dev
baloo-dev kactivities-dev kcmutils-dev kcrash-dev kdbusaddons-dev
kdeclarative-dev kdesu-dev kdoctools-dev kglobalaccel-dev kholidays-dev
kidletime-dev kjsembed-dev knewstuff-dev knotifyconfig-dev kpackage-dev
krunner-dev kscreenlocker-dev ktexteditor-dev ktextwidgets-dev
kwallet-dev kwayland-dev kwin-dev kxmlrpcclient-dev libksysguard-dev
- plasma-framework-dev prison-dev"
+ plasma-framework-dev prison-dev kactivities-stats-dev kpeople-dev
+ kirigami2-dev kquickcharts-dev kuserfeedback-dev libkscreen-dev
+ breeze-dev fontconfig-dev layer-shell-qt-dev qt5-qtwayland-tools
+ libxkbcommon-dev libxft-dev qt5-qtwayland-dev wayland-dev"
+provides="user-manager=$pkgver-r$pkgrel"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/plasma/$pkgver/plasma-workspace-$pkgver.tar.xz"
+source="https://download.kde.org/stable/plasma/$pkgver/plasma-workspace-$pkgver.tar.xz
+ libkworkspace.patch
+ backport1.patch
+ backport2.patch
+ "
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -44,18 +53,19 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_TESTING=OFF \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e9d4a85b11264eebbce0845eefa5d01818e944c2179d5cbc3e23b720118894d88fbfe96467c68849a3fa89728cecff248cd7f9dfc0ab133e50dad28ecc957623 plasma-workspace-5.12.7.tar.xz"
+sha512sums="ae40fe545b03e42e9f8fe2e8885d3853f4b52d4fd2ed3ecf7d24fa59b4924b8f8b389e8713ec6a3a875bc66df3952de9157d4a5631b283105a9329a1a1825996 plasma-workspace-5.24.5.tar.xz
+f58b88928fd68518bc0524db35388cb0f0dbc2a55d85fc47e92ce7fcbaf9b155482736e282bd84104ceecc625406845840128c8d0fcd2a4d5a854673964cd94f libkworkspace.patch
+022f1407c538f396cdd1fd9c228a56450ed868e0f16e42333cd10fca238fb5e12b38596f65b06159b573628c290f86d8af8dca136b1acafe4042d4c0d91e8a63 backport1.patch
+3cc5228b5f2fdcb21a2e877fccde1e5316a9e2efae1523c68dff4a6a2efa5cc42782340b7ae491a5ea77ef642aa4b7ce35e58068d9e124b286c431105bad8821 backport2.patch"
diff --git a/user/plasma-workspace/backport1.patch b/user/plasma-workspace/backport1.patch
new file mode 100644
index 000000000..c2ccc0f62
--- /dev/null
+++ b/user/plasma-workspace/backport1.patch
@@ -0,0 +1,40 @@
+From 4d3f99558cff95259590e70dfbf854a479f772ce Mon Sep 17 00:00:00 2001
+From: Nate Graham <nate@kde.org>
+Date: Wed, 4 May 2022 10:45:52 -0600
+Subject: [PATCH] applets/appmenu: fix top-level menu text coloration
+
+28537cf3ff3cd9210f7568f40334ac3a2c9bed18 made the color dynamic, but
+neglected to respect the Plasma color scheme, if any. This causes
+problems with Plasma themes that have their own colors and don't
+respect the systemwide color scheme, such as Breeze Twilight.
+
+Fix it by using the appropriate colors from the PlasmaCore color scheme
+object, not the systemwide object provided by Qt.
+
+BUG: 453348
+FIXED-IN: 5.24.6
+
+
+(cherry picked from commit 19d9bc7e395d8c6e007afdc3b3b5c11a7d02190e)
+---
+ applets/appmenu/package/contents/ui/MenuDelegate.qml | 5 +----
+ 1 file changed, 1 insertion(+), 4 deletions(-)
+
+diff --git a/applets/appmenu/package/contents/ui/MenuDelegate.qml b/applets/appmenu/package/contents/ui/MenuDelegate.qml
+index 441e99016..afb37589a 100644
+--- a/applets/appmenu/package/contents/ui/MenuDelegate.qml
++++ b/applets/appmenu/package/contents/ui/MenuDelegate.qml
+@@ -66,9 +66,6 @@ AbstractButton {
+
+ contentItem: PC3.Label {
+ text: controlRoot.Kirigami.MnemonicData.richTextLabel
+- // Kirigami.Theme.highlightedTextColor returns different colors
+- // depending on window focus, which does not apply to this applet
+- // instead, we use palette.highlightedText here, which returns consistent result
+- color: background.state == MenuDelegate.State.Rest ? palette.windowText : palette.highlightedText
++ color: background.state == MenuDelegate.State.Rest ? PlasmaCore.Theme.textColor : PlasmaCore.Theme.highlightedTextColor
+ }
+ }
+--
+GitLab
+
diff --git a/user/plasma-workspace/backport2.patch b/user/plasma-workspace/backport2.patch
new file mode 100644
index 000000000..352bed917
--- /dev/null
+++ b/user/plasma-workspace/backport2.patch
@@ -0,0 +1,41 @@
+From f77b7284e39b14b0e9a8b4d2b77c0b93b2c9ea59 Mon Sep 17 00:00:00 2001
+From: Fushan Wen <qydwhotmail@gmail.com>
+Date: Mon, 16 May 2022 16:18:00 +0800
+Subject: [PATCH] kcms/desktoptheme: find metadata.json when loading
+ ThemesModel
+
+Before this commit ThemesModel only finds metadata.desktop, but after
+KF5.94, the default theme metadata files have been ported to json format.
+
+BUG: 453830
+
+
+(cherry picked from commit 10aa9bb8dca91e92e3009ed57613d43d610da63e)
+---
+ kcms/desktoptheme/themesmodel.cpp | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/kcms/desktoptheme/themesmodel.cpp b/kcms/desktoptheme/themesmodel.cpp
+index 6f0ecf4e3..296951742 100644
+--- a/kcms/desktoptheme/themesmodel.cpp
++++ b/kcms/desktoptheme/themesmodel.cpp
+@@ -155,7 +155,15 @@ void ThemesModel::load()
+ const QDir cd(ppath);
+ const QStringList &entries = cd.entryList(QDir::Dirs | QDir::Hidden | QDir::NoDotAndDotDot);
+ for (const QString &pack : entries) {
+- const QString _metadata = ppath + QLatin1Char('/') + pack + QStringLiteral("/metadata.desktop");
++ const QString prefix = QStringLiteral("%1%2%3%4metadata.").arg(ppath, QDir::separator(), pack, QDir::separator());
++
++ QString _metadata = QStringLiteral("%1json").arg(prefix);
++ if (QFile::exists(_metadata)) {
++ themes << _metadata;
++ continue;
++ }
++
++ _metadata = QStringLiteral("%1desktop").arg(prefix);
+ if (QFile::exists(_metadata)) {
+ themes << _metadata;
+ }
+--
+GitLab
+
diff --git a/user/plasma-workspace/libkworkspace.patch b/user/plasma-workspace/libkworkspace.patch
new file mode 100644
index 000000000..e8e3d93b6
--- /dev/null
+++ b/user/plasma-workspace/libkworkspace.patch
@@ -0,0 +1,35 @@
+From 4717089b68c386446be240f463f2f13e7024468b Mon Sep 17 00:00:00 2001
+From: Andreas Sturmlechner <andreas.sturmlechner@gmail.com>
+Date: Mon, 22 Oct 2018 10:35:10 +0200
+Subject: [PATCH] libkworkspace: Allow standalone build
+
+---
+ CMakeLists.txt | 6 +++-
+ 1 file changed, 5 insertions(+), 1 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e587a386..d1a63527 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -63,6 +63,7 @@ set_package_properties(KF5Baloo PROPERTIES DESCRIPTION "File Searching"
+
+ find_package(KF5TextEditor)
+ find_package(KWinDBusInterface CONFIG REQUIRED)
++find_package(LibKWorkspace 5.17.90)
+
+ find_package(KScreenLocker 5.17.90 REQUIRED)
+ find_package(ScreenSaverDBusInterface CONFIG REQUIRED)
+@@ -151,7 +151,10 @@ endif()
+ add_definitions(-DQT_NO_URL_CAST_FROM_STRING)
+
+ add_subdirectory(doc)
+-add_subdirectory(libkworkspace)
++if(NOT LibKWorkspace_FOUND)
++ message(STATUS "System LibKWorkspace not found, using bundled.")
++ add_subdirectory(libkworkspace)
++endif()
+ add_subdirectory(libdbusmenuqt)
+ add_subdirectory(appmenu)
+
+--
+2.19.1
diff --git a/user/plib/APKBUILD b/user/plib/APKBUILD
index fe02621ac..d33532fa2 100644
--- a/user/plib/APKBUILD
+++ b/user/plib/APKBUILD
@@ -2,20 +2,21 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=plib
pkgver=1.8.5
-pkgrel=0
+pkgrel=1
pkgdesc="Portable game libraries"
-url="http://plib.sourceforge.net/"
+url="https://plib.sourceforge.net/"
arch="all"
options="!dbg" # No shared libraries
license="LGPL-2.0+"
depends=""
-makedepends="libxi-dev libxmu-dev libxt-dev mesa-dev"
+makedepends="autoconf automake libtool libglvnd-dev libxi-dev libxmu-dev
+ libxt-dev"
subpackages="$pkgname-dev"
-source="http://plib.sourceforge.net/dist/plib-$pkgver.tar.gz
+source="https://plib.sourceforge.net/dist/plib-$pkgver.tar.gz
fix-openflight.patch
joystick.patch
- plib-1.8.5-CVE-2011-4620.patch
- plib-1.8.5-CVE-2012-4552.patch
+ CVE-2011-4620.patch
+ CVE-2012-4552.patch
shared.patch
"
@@ -25,7 +26,6 @@ prepare() {
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -37,18 +37,16 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
sha512sums="17154cc77243fe576c2bcbcb0285b98aef1a0634658f5473e95fe0ac8fa3ed477dbe5620e44ccf0b7cc616f812af0cd44d6fcbba0c563180d3b61c9d6f158e1d plib-1.8.5.tar.gz
fac9c78a57a0c564c46d586ebf541b45cf7dc838387498f3263bac78f0f78c53c85000667d6dfd349e328b1cd4254ac0d786dd825aefbe957f94e6d3b91ec41b fix-openflight.patch
d9909c81fe2ed696c639623c532cb16a1378b0e2843ccbef00bb16bc6459cc7c708b2b0903dbdc89e6fb05522debd79f0f88b311bf12c3d415e303591033f0a8 joystick.patch
-c046cf65e80629f238aaba724f522c31b434f5c9687ea02b019846ce3469c6b074bd014f81a7a4e6b43db7b084f4dcd9d4c04b557dbc1b8b8ca00f2d782fdf1c plib-1.8.5-CVE-2011-4620.patch
-a09462ecb085703aae7cd3b77954cc800410aa37a9616255cca2f21456e6d5dcf8ead3f684c98236deb1455c6a034dc8ec874bafdbab003f7a63517ea1f8350d plib-1.8.5-CVE-2012-4552.patch
+c046cf65e80629f238aaba724f522c31b434f5c9687ea02b019846ce3469c6b074bd014f81a7a4e6b43db7b084f4dcd9d4c04b557dbc1b8b8ca00f2d782fdf1c CVE-2011-4620.patch
+a09462ecb085703aae7cd3b77954cc800410aa37a9616255cca2f21456e6d5dcf8ead3f684c98236deb1455c6a034dc8ec874bafdbab003f7a63517ea1f8350d CVE-2012-4552.patch
8f4fcbf3a07f64212b3ce891a4629fb45b1c62b251730a9d5f7da6e6fe65c39540f80519e97cf6a45c32f950f25e4d383ba891a6c0a92ae8a37089e51c0c5020 shared.patch"
diff --git a/user/plib/plib-1.8.5-CVE-2011-4620.patch b/user/plib/CVE-2011-4620.patch
index 41fac5fe4..41fac5fe4 100644
--- a/user/plib/plib-1.8.5-CVE-2011-4620.patch
+++ b/user/plib/CVE-2011-4620.patch
diff --git a/user/plib/plib-1.8.5-CVE-2012-4552.patch b/user/plib/CVE-2012-4552.patch
index 78f1b22ae..78f1b22ae 100644
--- a/user/plib/plib-1.8.5-CVE-2012-4552.patch
+++ b/user/plib/CVE-2012-4552.patch
diff --git a/user/pluma-plugins/APKBUILD b/user/pluma-plugins/APKBUILD
new file mode 100644
index 000000000..61d0d050e
--- /dev/null
+++ b/user/pluma-plugins/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=pluma-plugins
+pkgver=1.26.0
+pkgrel=0
+pkgdesc="Plugins for Pluma"
+url="https://www.mate-desktop.org"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="itstool pluma-dev py3-pygobject vte-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://pub.mate-desktop.org/releases/1.26/pluma-plugins-$pkgver.tar.xz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="ee59d52e0f879a5adf745c4be4a274f5c5b5403d7a9485236879e6e6db1c8f743de74be379fe84d2da73efe3eeb63bfa089a28f73762a6f0ceee0dbbbc464fa4 pluma-plugins-1.26.0.tar.xz"
diff --git a/user/pluma/APKBUILD b/user/pluma/APKBUILD
index 4e6d80e39..3390db43c 100644
--- a/user/pluma/APKBUILD
+++ b/user/pluma/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=pluma
-pkgver=1.22.0
+pkgver=1.26.1
pkgrel=0
pkgdesc="Text editor for the MATE desktop environment"
url="https://mate-desktop.org"
@@ -9,13 +9,14 @@ arch="all"
options="!check" # tests fail due to schema being requested but not available
license="GPL-2.0+ AND GPL-2.0-only AND LGPL-2.0+"
depends=""
-makedepends="gtk+3.0-dev gtksourceview-3.0-dev enchant-dev intltool
- itstool iso-codes-dev libpeas-dev libsm-dev libxml2-dev libxml2-utils"
+makedepends="gtk+3.0-dev gtksourceview4-dev enchant-dev intltool
+ itstool iso-codes-dev libpeas-dev libsm-dev libxml2-dev libxml2-utils
+ wayland-protocols"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://pub.mate-desktop.org/releases/${pkgver%.*}/pluma-$pkgver.tar.xz"
build() {
- cd "$builddir"
+ rm -r help/ru
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,13 +28,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="7c74c2ce0a89ec3813c936449d3114957e7b319433875ef567ecc508a28a1d3ddc3d0da418b2eb1278b6dc9dbaa3c75a279524f5a061b5aecb52955edcf28f51 pluma-1.22.0.tar.xz"
+sha512sums="bc4f621736d93df07fc2dc434a25c5a5acaf0d2c958eac43bd0061d4b664cae9b9eac1fffc47afa1509fd64b3c93a77ca62737428b034ca25997ebee432d5eb3 pluma-1.26.1.tar.xz"
diff --git a/user/pm-quirks/APKBUILD b/user/pm-quirks/APKBUILD
index 9b90ead00..c74eb36fd 100644
--- a/user/pm-quirks/APKBUILD
+++ b/user/pm-quirks/APKBUILD
@@ -6,16 +6,15 @@ pkgrel=0
pkgdesc="Quirks data for pm-utils"
url="https://pm-utils.freedesktop.org/wiki/"
arch="noarch"
-options="!check" # this is a bunch of data files for pm-utils, nothing to check
-license="GPL-2.0-only" # same as pm-utils, hopefully
+options="!check" # This is a bunch of data files for pm-utils, nothing to check
+license="GPL-2.0-only" # same as pm-utils, hopefully
depends="pm-utils"
makedepends=""
source="https://pm-utils.freedesktop.org/releases/$pkgname-$pkgver.tar.gz"
package() {
- cd "$srcdir"
install -m755 -d ${pkgdir}/usr/lib/pm-utils/video-quirks
- install -m644 video-quirks/*.quirkdb ${pkgdir}/usr/lib/pm-utils/video-quirks/
+ install -m644 "$srcdir"/video-quirks/*.quirkdb ${pkgdir}/usr/lib/pm-utils/video-quirks/
}
sha512sums="e20244fb72475945e08010d7ec19db2c017c1a04fa01d3d08c03d704d7f07f9c087bac6a5a44242cc8ed6cec5db47bc06a8862dd0f74088a565d37b6d7b95afc pm-quirks-20100619.tar.gz"
diff --git a/user/pm-utils/APKBUILD b/user/pm-utils/APKBUILD
index 6ff9fb41a..1ce9ff1d5 100644
--- a/user/pm-utils/APKBUILD
+++ b/user/pm-utils/APKBUILD
@@ -14,7 +14,6 @@ subpackages="$pkgname-dev $pkgname-doc"
source="https://pm-utils.freedesktop.org/releases/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,7 +25,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/polkit-kde-agent-1/APKBUILD b/user/polkit-kde-agent-1/APKBUILD
new file mode 100644
index 000000000..e56f054d7
--- /dev/null
+++ b/user/polkit-kde-agent-1/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=polkit-kde-agent-1
+pkgver=5.24.5
+pkgrel=0
+pkgdesc="PolKit agent for KDE"
+url="https://www.kde.org/"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="cmake extra-cmake-modules kcoreaddons-dev kcrash-dev
+ kdbusaddons-dev ki18n-dev kiconthemes-dev kwidgetsaddons-dev
+ kwindowsystem-dev polkit-qt-1-dev qt5-qtbase-dev"
+subpackages="$pkgname-lang"
+source="https://download.kde.org/stable/plasma/$pkgver/polkit-kde-agent-1-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="8182271a4463e28001c5806156afffa8436c9fce0ead257c60b413bf54565d8271e8356f5670e8eb2aea5c3d2a308e31f14f6eff4c6903e1936e6395d8502a93 polkit-kde-agent-1-5.24.5.tar.xz"
diff --git a/user/polkit-qt-1/APKBUILD b/user/polkit-qt-1/APKBUILD
index bbfcde4f2..f50285a88 100644
--- a/user/polkit-qt-1/APKBUILD
+++ b/user/polkit-qt-1/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=polkit-qt-1
-pkgver=0.112.0
+pkgver=0.113.0
pkgrel=0
pkgdesc="Qt wrapper library for PolicyKit"
url="https://www.kde.org/"
@@ -12,10 +12,9 @@ depends=""
depends_dev="polkit-dev glib-dev"
makedepends="$depends_dev cmake qt5-qtbase-dev"
subpackages="$pkgname-dev"
-source="https://download.kde.org/stable/apps/KDE4.x/admin/polkit-qt-1-$pkgver.tar.bz2"
+source="https://download.kde.org/stable/$pkgname/polkit-qt-1-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,14 +25,12 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- -DUSE_QT5=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="4cb17389b54a09c53052f6d72aa5cbfe09ccb19f7fd4edf8b43ccd4751f5e88609c5f89777f4af92167d32eb2ce1e78537cea7bcfb60a90072d1fe02d6a59b50 polkit-qt-1-0.112.0.tar.bz2"
+sha512sums="deea5d75f547eaa0279c664ec9608b65f464db97fd5fdea27437f8ed4ec033de2b9f91d967deacb28bf0a1e54f131f997acb862cc3e1f8dfcb1f6c337e719b38 polkit-qt-1-0.113.0.tar.xz"
diff --git a/user/polkit/0001-make-netgroup-support-optional.patch b/user/polkit/0001-make-netgroup-support-optional.patch
deleted file mode 100644
index 1a7716c45..000000000
--- a/user/polkit/0001-make-netgroup-support-optional.patch
+++ /dev/null
@@ -1,480 +0,0 @@
-From aafb9fd0e79775146186ee1d7ffef1f76cdbc1bb Mon Sep 17 00:00:00 2001
-From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
-Date: Wed, 11 Jul 2018 04:54:26 -0500
-Subject: [PATCH] make netgroup support optional
-
-On at least Linux/musl and Linux/uclibc, netgroup support is not
-available. PolKit fails to compile on these systems for that reason.
-
-This change makes netgroup support conditional on the presence of the
-setnetgrent(3) function which is required for the support to work. If
-that function is not available on the system, an error will be returned
-to the administrator if unix-netgroup: is specified in configuration.
-
-Fixes bug 50145.
----
- 0001-make-netgroup-support-optional.patch | 226 ++++++++++++++++++
- configure.ac | 2 +-
- src/polkit/polkitidentity.c | 16 ++
- src/polkit/polkitunixnetgroup.c | 3 +
- .../polkitbackendinteractiveauthority.c | 14 +-
- .../polkitbackendjsauthority.cpp | 2 +
- test/polkit/polkitidentitytest.c | 9 +-
- test/polkit/polkitunixnetgrouptest.c | 3 +
- .../test-polkitbackendjsauthority.c | 2 +
- 9 files changed, 269 insertions(+), 8 deletions(-)
- create mode 100644 0001-make-netgroup-support-optional.patch
-
-diff --git a/0001-make-netgroup-support-optional.patch b/0001-make-netgroup-support-optional.patch
-new file mode 100644
-index 0000000..dedc5f7
---- /dev/null
-+++ b/0001-make-netgroup-support-optional.patch
-@@ -0,0 +1,226 @@
-+From 73eada88dd344333cc1d1f9c5c35413fcee1dd67 Mon Sep 17 00:00:00 2001
-+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
-+Date: Wed, 11 Jul 2018 04:54:26 -0500
-+Subject: [PATCH] make netgroup support optional
-+
-+On at least Linux/musl and Linux/uclibc, netgroup support is not
-+available. PolKit fails to compile on these systems for that reason.
-+
-+This change makes netgroup support conditional on the presence of the
-+setnetgrent(3) function which is required for the support to work. If
-+that function is not available on the system, an error will be returned
-+to the administrator if unix-netgroup: is specified in configuration.
-+
-+Fixes bug 50145.
-+---
-+ configure.ac | 2 +-
-+ src/polkit/polkitidentity.c | 16 ++++++++++++++++
-+ src/polkit/polkitunixnetgroup.c | 3 +++
-+ .../polkitbackendinteractiveauthority.c | 14 ++++++++------
-+ src/polkitbackend/polkitbackendjsauthority.cpp | 2 ++
-+ test/polkit/polkitidentitytest.c | 9 ++++++++-
-+ test/polkit/polkitunixnetgrouptest.c | 3 +++
-+ 7 files changed, 41 insertions(+), 8 deletions(-)
-+
-+diff --git a/configure.ac b/configure.ac
-+index bfa87dd..cb86ac7 100644
-+--- a/configure.ac
-++++ b/configure.ac
-+@@ -99,7 +99,7 @@ AC_CHECK_LIB(expat,XML_ParserCreate,[EXPAT_LIBS="-lexpat"],
-+ [AC_MSG_ERROR([Can't find expat library. Please install expat.])])
-+ AC_SUBST(EXPAT_LIBS)
-+
-+-AC_CHECK_FUNCS(clearenv fdatasync)
-++AC_CHECK_FUNCS(clearenv fdatasync setnetgrent)
-+
-+ if test "x$GCC" = "xyes"; then
-+ LDFLAGS="-Wl,--as-needed $LDFLAGS"
-+diff --git a/src/polkit/polkitidentity.c b/src/polkit/polkitidentity.c
-+index 3aa1f7f..10e9c17 100644
-+--- a/src/polkit/polkitidentity.c
-++++ b/src/polkit/polkitidentity.c
-+@@ -182,7 +182,15 @@ polkit_identity_from_string (const gchar *str,
-+ }
-+ else if (g_str_has_prefix (str, "unix-netgroup:"))
-+ {
-++#ifndef HAVE_SETNETGRENT
-++ g_set_error (error,
-++ POLKIT_ERROR,
-++ POLKIT_ERROR_FAILED,
-++ "Netgroups are not available on this machine ('%s')",
-++ str);
-++#else
-+ identity = polkit_unix_netgroup_new (str + sizeof "unix-netgroup:" - 1);
-++#endif
-+ }
-+
-+ if (identity == NULL && (error != NULL && *error == NULL))
-+@@ -344,6 +352,13 @@ polkit_identity_new_for_gvariant (GVariant *variant,
-+ GVariant *v;
-+ const char *name;
-+
-++#ifndef HAVE_SETNETGRENT
-++ g_set_error (error,
-++ POLKIT_ERROR,
-++ POLKIT_ERROR_FAILED,
-++ "Netgroups are not available on this machine");
-++ goto out;
-++#else
-+ v = lookup_asv (details_gvariant, "name", G_VARIANT_TYPE_STRING, error);
-+ if (v == NULL)
-+ {
-+@@ -353,6 +368,7 @@ polkit_identity_new_for_gvariant (GVariant *variant,
-+ name = g_variant_get_string (v, NULL);
-+ ret = polkit_unix_netgroup_new (name);
-+ g_variant_unref (v);
-++#endif
-+ }
-+ else
-+ {
-+diff --git a/src/polkit/polkitunixnetgroup.c b/src/polkit/polkitunixnetgroup.c
-+index 8a2b369..83f8d4a 100644
-+--- a/src/polkit/polkitunixnetgroup.c
-++++ b/src/polkit/polkitunixnetgroup.c
-+@@ -194,6 +194,9 @@ polkit_unix_netgroup_set_name (PolkitUnixNetgroup *group,
-+ PolkitIdentity *
-+ polkit_unix_netgroup_new (const gchar *name)
-+ {
-++#ifndef HAVE_SETNETGRENT
-++ g_assert_not_reached();
-++#endif
-+ g_return_val_if_fail (name != NULL, NULL);
-+ return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_NETGROUP,
-+ "name", name,
-+diff --git a/src/polkitbackend/polkitbackendinteractiveauthority.c b/src/polkitbackend/polkitbackendinteractiveauthority.c
-+index cb6fdab..ab47a98 100644
-+--- a/src/polkitbackend/polkitbackendinteractiveauthority.c
-++++ b/src/polkitbackend/polkitbackendinteractiveauthority.c
-+@@ -2233,25 +2233,26 @@ get_users_in_net_group (PolkitIdentity *group,
-+ GList *ret;
-+
-+ ret = NULL;
-++#ifdef HAVE_SETNETGRENT
-+ name = polkit_unix_netgroup_get_name (POLKIT_UNIX_NETGROUP (group));
-+
-+-#ifdef HAVE_SETNETGRENT_RETURN
-++# ifdef HAVE_SETNETGRENT_RETURN
-+ if (setnetgrent (name) == 0)
-+ {
-+ g_warning ("Error looking up net group with name %s: %s", name, g_strerror (errno));
-+ goto out;
-+ }
-+-#else
-++# else
-+ setnetgrent (name);
-+-#endif
-++# endif /* HAVE_SETNETGRENT_RETURN */
-+
-+ for (;;)
-+ {
-+-#if defined(HAVE_NETBSD) || defined(HAVE_OPENBSD)
-++# if defined(HAVE_NETBSD) || defined(HAVE_OPENBSD)
-+ const char *hostname, *username, *domainname;
-+-#else
-++# else
-+ char *hostname, *username, *domainname;
-+-#endif
-++# endif /* defined(HAVE_NETBSD) || defined(HAVE_OPENBSD) */
-+ PolkitIdentity *user;
-+ GError *error = NULL;
-+
-+@@ -2282,6 +2283,7 @@ get_users_in_net_group (PolkitIdentity *group,
-+
-+ out:
-+ endnetgrent ();
-++#endif /* HAVE_SETNETGRENT */
-+ return ret;
-+ }
-+
-+diff --git a/src/polkitbackend/polkitbackendjsauthority.cpp b/src/polkitbackend/polkitbackendjsauthority.cpp
-+index 517f3c6..45b0378 100644
-+--- a/src/polkitbackend/polkitbackendjsauthority.cpp
-++++ b/src/polkitbackend/polkitbackendjsauthority.cpp
-+@@ -1499,6 +1499,7 @@ js_polkit_user_is_in_netgroup (JSContext *cx,
-+
-+ JS::CallArgs args = JS::CallArgsFromVp (argc, vp);
-+
-++#ifdef HAVE_SETNETGRENT
-+ user = JS_EncodeString (cx, args[0].toString());
-+ netgroup = JS_EncodeString (cx, args[1].toString());
-+
-+@@ -1512,6 +1513,7 @@ js_polkit_user_is_in_netgroup (JSContext *cx,
-+
-+ JS_free (cx, netgroup);
-+ JS_free (cx, user);
-++#endif
-+
-+ ret = true;
-+
-+diff --git a/test/polkit/polkitidentitytest.c b/test/polkit/polkitidentitytest.c
-+index e91967b..e829aaa 100644
-+--- a/test/polkit/polkitidentitytest.c
-++++ b/test/polkit/polkitidentitytest.c
-+@@ -19,6 +19,7 @@
-+ * Author: Nikki VonHollen <vonhollen@google.com>
-+ */
-+
-++#include "config.h"
-+ #include "glib.h"
-+ #include <polkit/polkit.h>
-+ #include <polkit/polkitprivate.h>
-+@@ -145,11 +146,15 @@ struct ComparisonTestData comparison_test_data [] = {
-+ {"unix-group:root", "unix-group:jane", FALSE},
-+ {"unix-group:jane", "unix-group:jane", TRUE},
-+
-++#ifdef HAVE_SETNETGRENT
-+ {"unix-netgroup:foo", "unix-netgroup:foo", TRUE},
-+ {"unix-netgroup:foo", "unix-netgroup:bar", FALSE},
-++#endif
-+
-+ {"unix-user:root", "unix-group:root", FALSE},
-++#ifdef HAVE_SETNETGRENT
-+ {"unix-user:jane", "unix-netgroup:foo", FALSE},
-++#endif
-+
-+ {NULL},
-+ };
-+@@ -181,11 +186,13 @@ main (int argc, char *argv[])
-+ g_test_add_data_func ("/PolkitIdentity/group_string_2", "unix-group:jane", test_string);
-+ g_test_add_data_func ("/PolkitIdentity/group_string_3", "unix-group:users", test_string);
-+
-++#ifdef HAVE_SETNETGRENT
-+ g_test_add_data_func ("/PolkitIdentity/netgroup_string", "unix-netgroup:foo", test_string);
-++ g_test_add_data_func ("/PolkitIdentity/netgroup_gvariant", "unix-netgroup:foo", test_gvariant);
-++#endif
-+
-+ g_test_add_data_func ("/PolkitIdentity/user_gvariant", "unix-user:root", test_gvariant);
-+ g_test_add_data_func ("/PolkitIdentity/group_gvariant", "unix-group:root", test_gvariant);
-+- g_test_add_data_func ("/PolkitIdentity/netgroup_gvariant", "unix-netgroup:foo", test_gvariant);
-+
-+ add_comparison_tests ();
-+
-+diff --git a/test/polkit/polkitunixnetgrouptest.c b/test/polkit/polkitunixnetgrouptest.c
-+index 3701ba1..e3352eb 100644
-+--- a/test/polkit/polkitunixnetgrouptest.c
-++++ b/test/polkit/polkitunixnetgrouptest.c
-+@@ -19,6 +19,7 @@
-+ * Author: Nikki VonHollen <vonhollen@google.com>
-+ */
-+
-++#include "config.h"
-+ #include "glib.h"
-+ #include <polkit/polkit.h>
-+ #include <string.h>
-+@@ -69,7 +70,9 @@ int
-+ main (int argc, char *argv[])
-+ {
-+ g_test_init (&argc, &argv, NULL);
-++#ifdef HAVE_SETNETGRENT
-+ g_test_add_func ("/PolkitUnixNetgroup/new", test_new);
-+ g_test_add_func ("/PolkitUnixNetgroup/set_name", test_set_name);
-++#endif
-+ return g_test_run ();
-+ }
-+--
-+2.17.1
-+
-diff --git a/configure.ac b/configure.ac
-index bfa87dd..cb86ac7 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -99,7 +99,7 @@ AC_CHECK_LIB(expat,XML_ParserCreate,[EXPAT_LIBS="-lexpat"],
- [AC_MSG_ERROR([Can't find expat library. Please install expat.])])
- AC_SUBST(EXPAT_LIBS)
-
--AC_CHECK_FUNCS(clearenv fdatasync)
-+AC_CHECK_FUNCS(clearenv fdatasync setnetgrent)
-
- if test "x$GCC" = "xyes"; then
- LDFLAGS="-Wl,--as-needed $LDFLAGS"
-diff --git a/src/polkit/polkitidentity.c b/src/polkit/polkitidentity.c
-index 3aa1f7f..10e9c17 100644
---- a/src/polkit/polkitidentity.c
-+++ b/src/polkit/polkitidentity.c
-@@ -182,7 +182,15 @@ polkit_identity_from_string (const gchar *str,
- }
- else if (g_str_has_prefix (str, "unix-netgroup:"))
- {
-+#ifndef HAVE_SETNETGRENT
-+ g_set_error (error,
-+ POLKIT_ERROR,
-+ POLKIT_ERROR_FAILED,
-+ "Netgroups are not available on this machine ('%s')",
-+ str);
-+#else
- identity = polkit_unix_netgroup_new (str + sizeof "unix-netgroup:" - 1);
-+#endif
- }
-
- if (identity == NULL && (error != NULL && *error == NULL))
-@@ -344,6 +352,13 @@ polkit_identity_new_for_gvariant (GVariant *variant,
- GVariant *v;
- const char *name;
-
-+#ifndef HAVE_SETNETGRENT
-+ g_set_error (error,
-+ POLKIT_ERROR,
-+ POLKIT_ERROR_FAILED,
-+ "Netgroups are not available on this machine");
-+ goto out;
-+#else
- v = lookup_asv (details_gvariant, "name", G_VARIANT_TYPE_STRING, error);
- if (v == NULL)
- {
-@@ -353,6 +368,7 @@ polkit_identity_new_for_gvariant (GVariant *variant,
- name = g_variant_get_string (v, NULL);
- ret = polkit_unix_netgroup_new (name);
- g_variant_unref (v);
-+#endif
- }
- else
- {
-diff --git a/src/polkit/polkitunixnetgroup.c b/src/polkit/polkitunixnetgroup.c
-index 8a2b369..83f8d4a 100644
---- a/src/polkit/polkitunixnetgroup.c
-+++ b/src/polkit/polkitunixnetgroup.c
-@@ -194,6 +194,9 @@ polkit_unix_netgroup_set_name (PolkitUnixNetgroup *group,
- PolkitIdentity *
- polkit_unix_netgroup_new (const gchar *name)
- {
-+#ifndef HAVE_SETNETGRENT
-+ g_assert_not_reached();
-+#endif
- g_return_val_if_fail (name != NULL, NULL);
- return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_NETGROUP,
- "name", name,
-diff --git a/src/polkitbackend/polkitbackendinteractiveauthority.c b/src/polkitbackend/polkitbackendinteractiveauthority.c
-index cb6fdab..ab47a98 100644
---- a/src/polkitbackend/polkitbackendinteractiveauthority.c
-+++ b/src/polkitbackend/polkitbackendinteractiveauthority.c
-@@ -2233,25 +2233,26 @@ get_users_in_net_group (PolkitIdentity *group,
- GList *ret;
-
- ret = NULL;
-+#ifdef HAVE_SETNETGRENT
- name = polkit_unix_netgroup_get_name (POLKIT_UNIX_NETGROUP (group));
-
--#ifdef HAVE_SETNETGRENT_RETURN
-+# ifdef HAVE_SETNETGRENT_RETURN
- if (setnetgrent (name) == 0)
- {
- g_warning ("Error looking up net group with name %s: %s", name, g_strerror (errno));
- goto out;
- }
--#else
-+# else
- setnetgrent (name);
--#endif
-+# endif /* HAVE_SETNETGRENT_RETURN */
-
- for (;;)
- {
--#if defined(HAVE_NETBSD) || defined(HAVE_OPENBSD)
-+# if defined(HAVE_NETBSD) || defined(HAVE_OPENBSD)
- const char *hostname, *username, *domainname;
--#else
-+# else
- char *hostname, *username, *domainname;
--#endif
-+# endif /* defined(HAVE_NETBSD) || defined(HAVE_OPENBSD) */
- PolkitIdentity *user;
- GError *error = NULL;
-
-@@ -2282,6 +2283,7 @@ get_users_in_net_group (PolkitIdentity *group,
-
- out:
- endnetgrent ();
-+#endif /* HAVE_SETNETGRENT */
- return ret;
- }
-
-diff --git a/src/polkitbackend/polkitbackendjsauthority.cpp b/src/polkitbackend/polkitbackendjsauthority.cpp
-index 517f3c6..45b0378 100644
---- a/src/polkitbackend/polkitbackendjsauthority.cpp
-+++ b/src/polkitbackend/polkitbackendjsauthority.cpp
-@@ -1499,6 +1499,7 @@ js_polkit_user_is_in_netgroup (JSContext *cx,
-
- JS::CallArgs args = JS::CallArgsFromVp (argc, vp);
-
-+#ifdef HAVE_SETNETGRENT
- user = JS_EncodeString (cx, args[0].toString());
- netgroup = JS_EncodeString (cx, args[1].toString());
-
-@@ -1512,6 +1513,7 @@ js_polkit_user_is_in_netgroup (JSContext *cx,
-
- JS_free (cx, netgroup);
- JS_free (cx, user);
-+#endif
-
- ret = true;
-
-diff --git a/test/polkit/polkitidentitytest.c b/test/polkit/polkitidentitytest.c
-index e91967b..e829aaa 100644
---- a/test/polkit/polkitidentitytest.c
-+++ b/test/polkit/polkitidentitytest.c
-@@ -19,6 +19,7 @@
- * Author: Nikki VonHollen <vonhollen@google.com>
- */
-
-+#include "config.h"
- #include "glib.h"
- #include <polkit/polkit.h>
- #include <polkit/polkitprivate.h>
-@@ -145,11 +146,15 @@ struct ComparisonTestData comparison_test_data [] = {
- {"unix-group:root", "unix-group:jane", FALSE},
- {"unix-group:jane", "unix-group:jane", TRUE},
-
-+#ifdef HAVE_SETNETGRENT
- {"unix-netgroup:foo", "unix-netgroup:foo", TRUE},
- {"unix-netgroup:foo", "unix-netgroup:bar", FALSE},
-+#endif
-
- {"unix-user:root", "unix-group:root", FALSE},
-+#ifdef HAVE_SETNETGRENT
- {"unix-user:jane", "unix-netgroup:foo", FALSE},
-+#endif
-
- {NULL},
- };
-@@ -181,11 +186,13 @@ main (int argc, char *argv[])
- g_test_add_data_func ("/PolkitIdentity/group_string_2", "unix-group:jane", test_string);
- g_test_add_data_func ("/PolkitIdentity/group_string_3", "unix-group:users", test_string);
-
-+#ifdef HAVE_SETNETGRENT
- g_test_add_data_func ("/PolkitIdentity/netgroup_string", "unix-netgroup:foo", test_string);
-+ g_test_add_data_func ("/PolkitIdentity/netgroup_gvariant", "unix-netgroup:foo", test_gvariant);
-+#endif
-
- g_test_add_data_func ("/PolkitIdentity/user_gvariant", "unix-user:root", test_gvariant);
- g_test_add_data_func ("/PolkitIdentity/group_gvariant", "unix-group:root", test_gvariant);
-- g_test_add_data_func ("/PolkitIdentity/netgroup_gvariant", "unix-netgroup:foo", test_gvariant);
-
- add_comparison_tests ();
-
-diff --git a/test/polkit/polkitunixnetgrouptest.c b/test/polkit/polkitunixnetgrouptest.c
-index 3701ba1..e3352eb 100644
---- a/test/polkit/polkitunixnetgrouptest.c
-+++ b/test/polkit/polkitunixnetgrouptest.c
-@@ -19,6 +19,7 @@
- * Author: Nikki VonHollen <vonhollen@google.com>
- */
-
-+#include "config.h"
- #include "glib.h"
- #include <polkit/polkit.h>
- #include <string.h>
-@@ -69,7 +70,9 @@ int
- main (int argc, char *argv[])
- {
- g_test_init (&argc, &argv, NULL);
-+#ifdef HAVE_SETNETGRENT
- g_test_add_func ("/PolkitUnixNetgroup/new", test_new);
- g_test_add_func ("/PolkitUnixNetgroup/set_name", test_set_name);
-+#endif
- return g_test_run ();
- }
-diff --git a/test/polkitbackend/test-polkitbackendjsauthority.c b/test/polkitbackend/test-polkitbackendjsauthority.c
-index b484a26..01e4907 100644
---- a/test/polkitbackend/test-polkitbackendjsauthority.c
-+++ b/test/polkitbackend/test-polkitbackendjsauthority.c
-@@ -137,12 +137,14 @@ test_get_admin_identities (void)
- "unix-group:users"
- }
- },
-+#ifdef HAVE_SETNETGRENT
- {
- "net.company.action3",
- {
- "unix-netgroup:foo"
- }
- },
-+#endif
- };
- guint n;
-
---
-2.17.1
-
diff --git a/user/polkit/APKBUILD b/user/polkit/APKBUILD
index 5b5dfdacd..683571a77 100644
--- a/user/polkit/APKBUILD
+++ b/user/polkit/APKBUILD
@@ -1,73 +1,47 @@
-# Contributor: Carlo Landmeter
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=polkit
-pkgver=0.115
-pkgrel=3
+pkgver=123
+pkgrel=0
pkgdesc="Toolkit for controlling system-wide privileges"
url="https://www.freedesktop.org/wiki/Software/polkit/"
arch="all"
options="!check suid" # Requires running ConsoleKit and PolKit for JS backend
license="LGPL-2.0+"
depends=""
-makedepends="glib-dev gobject-introspection-dev gtk-doc intltool linux-pam-dev
- mozjs-dev"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+makedepends="glib-dev gobject-introspection-dev gtk-doc linux-pam-dev meson
+ duktape-dev elogind-dev"
pkgusers="polkitd"
pkggroups="polkitd"
install="$pkgname.pre-install $pkgname.pre-upgrade"
-source="https://www.freedesktop.org/software/polkit/releases/polkit-$pkgver.tar.gz
- 0001-make-netgroup-support-optional.patch
- CVE-2018-19788.patch
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://gitlab.freedesktop.org/polkit/polkit/-/archive/$pkgver/polkit-$pkgver.tar.bz2
fix-consolekit-db-stat.patch
fix-test-fgetpwent.patch
"
# secfixes:
+# 0.123-r0:
+# - CVE-2021-4034
# 0.115-r2:
# - CVE-2018-19788
-prepare() {
- cd "$builddir"
- default_prepare
- autoreconf -vif
-}
-
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --infodir=/usr/share/info \
- --libexecdir=/usr/lib/polkit-1 \
- --localstatedir=/var \
- --disable-static \
- --enable-nls \
- --enable-introspection \
- --enable-man-pages \
- --with-pam-include=base-auth \
- --disable-gtk-doc-html \
- --disable-gtk-doc-pdf \
- --disable-libsystemd-login \
- --disable-libelogind
-
- make
+ meson setup . build \
+ -Dsession_tracking=libelogind \
+ -Dman=true \
+ -Dpam_include='base-auth'
+ meson compile -C build
}
check() {
- cd "$builddir"
- make check
+ meson test -C build
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ meson install -C build --destdir="$pkgdir"
}
-sha512sums="1153011fa93145b2c184e6b3446d3ca21b38918641aeccd8fac3985ac3e30ec6bc75be6973985fde90f2a24236592f1595be259155061c2d33358dd17c4ee4fc polkit-0.115.tar.gz
-6d68d90e6dc9594175631c99699d4d949fba6d2d1ad66680897f9a17e9dc3c17b44f2bc06ed4f6149931e17a96baaf481981fb0698aace7c81a67c06c2806c29 0001-make-netgroup-support-optional.patch
-4a2a11c1de8ef11def9c32b4b595fd45066aeaeb0cb42665846e3c7b8c6f5b7d3a782d722a25889afdb6a4414abed0837a359692342baaeb770d0e9712818ce1 CVE-2018-19788.patch
-95493ef842b46ce9e724933a5d86083589075fb452435057b8f629643cac7c7eff67a24fd188087987e98057f0130757fad546d0c090767da3d71ebaf8485a24 fix-consolekit-db-stat.patch
+sha512sums="4306363d3ed7311243de462832199bd10ddda35e36449104daff0895725d8189b07a4c88340f28607846fdf761c23470da2d43288199c46aa816426384124bb6 polkit-123.tar.bz2
+bfefe2398f97138391ed34630e2994670dddaa0b13585e2e7cb101e7d11e3054dd491244ec84116b908d0f126a69032c467d83a0c52b0bb980d9b10290600745 fix-consolekit-db-stat.patch
966825aded565432f4fda9e54113a773b514ebf7ee7faa83bcb8b97d218ae84a8707d6747bbc3cb8a828638d692fdef34c05038f150ad38e02a29f2c782aba5b fix-test-fgetpwent.patch"
diff --git a/user/polkit/CVE-2018-19788.patch b/user/polkit/CVE-2018-19788.patch
deleted file mode 100644
index 6a2845aca..000000000
--- a/user/polkit/CVE-2018-19788.patch
+++ /dev/null
@@ -1,183 +0,0 @@
-From 35af308b530f36c1a0a912387106a59b3ab92027 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 3 Dec 2018 10:28:58 +0100
-Subject: [PATCH 1/2] Use default of -1 for uid/gid in class initialization
-
-This doesn't seem to change anything in polkitd behaviour, but it
-seems cleaner to default to -1 which here means "unset".
----
- src/polkit/polkitunixgroup.c | 4 ++--
- src/polkit/polkitunixuser.c | 4 ++--
- 2 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/src/polkit/polkitunixgroup.c b/src/polkit/polkitunixgroup.c
-index c57a1aa..095cca0 100644
---- a/src/polkit/polkitunixgroup.c
-+++ b/src/polkit/polkitunixgroup.c
-@@ -131,9 +131,9 @@ polkit_unix_group_class_init (PolkitUnixGroupClass *klass)
- g_param_spec_int ("gid",
- "Group ID",
- "The UNIX group ID",
-- 0,
-+ -1,
- G_MAXINT,
-- 0,
-+ -1,
- G_PARAM_CONSTRUCT |
- G_PARAM_READWRITE |
- G_PARAM_STATIC_NAME |
-diff --git a/src/polkit/polkitunixuser.c b/src/polkit/polkitunixuser.c
-index 8bfd3a1..a5285f4 100644
---- a/src/polkit/polkitunixuser.c
-+++ b/src/polkit/polkitunixuser.c
-@@ -144,9 +144,9 @@ polkit_unix_user_class_init (PolkitUnixUserClass *klass)
- g_param_spec_int ("uid",
- "User ID",
- "The UNIX user ID",
-- 0,
-+ -1,
- G_MAXINT,
-- 0,
-+ -1,
- G_PARAM_CONSTRUCT |
- G_PARAM_READWRITE |
- G_PARAM_STATIC_NAME |
---
-2.18.1
-
-
-From fbaab32cb4ed9ed5f1e3eea6cd317d443aa427dc Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= <zbyszek@in.waw.pl>
-Date: Mon, 3 Dec 2018 12:51:26 +0100
-Subject: [PATCH 2/2] Check gid and uid initalization in PolkitUnixUser and
- Group objects
-
-When a user or group above INT32_MAX is created, the numeric uid or
-gid wraps around to negative when the value is assigned to gint, and
-polkit gets confused. Let's refuse such uids and gids.
-
-This patch just refuses to initialize uid and gid values to negative.
-A nicer fix is to change the underlying type to e.g. gint64 to allow
-the full range of values in uid_t and gid_t to be represented. But
-this cannot be done without breaking the API, so likely new functions
-will have to be added (a polkit_unix_user_new variant that takes a
-gint64, and the same for _group_new, _set_uid, _get_uid, _set_gid,
-_get_gid, etc.). This will require a bigger patch.
-
-Fixes https://gitlab.freedesktop.org/polkit/polkit/issues/74.
-
-Example sessions from uid=4000000000:
-
-Dec 03 14:35:08 krowka polkitd[21432]: system-bus-name::1.41869 is inquiring whether system-bus-name::1.79432 is authorized for org.freedesktop.systemd1.manage-units
-Dec 03 14:35:08 krowka polkitd[21432]: user of caller is unix-user:root
-Dec 03 14:35:08 krowka polkitd[21432]: polkit_unix_user_new: assertion 'uid >= 0' failed
-Dec 03 14:35:08 krowka polkitd[21432]: polkit_identity_to_string: assertion 'POLKIT_IS_IDENTITY (identity)' failed
-Dec 03 14:35:08 krowka polkitd[21432]: user of subject is (null)
-Dec 03 14:35:08 krowka polkitd[21432]: polkit_identity_equal: assertion 'POLKIT_IS_IDENTITY (b)' failed
-Dec 03 14:35:08 krowka polkitd[21432]: checking whether system-bus-name::1.79432 is authorized for org.freedesktop.systemd1.manage-units
-Dec 03 14:35:08 krowka polkitd[21432]: polkit_unix_user_new: assertion 'uid >= 0' failed
-Dec 03 14:35:08 krowka polkitd[21432]:
-Dec 03 14:35:08 krowka polkitd[21432]: polkit_authorization_result_get_is_challenge: assertion 'POLKIT_IS_AUTHORIZATION_RESULT (result)' failed
-Dec 03 14:35:08 krowka polkitd[21432]: g_object_ref: assertion 'G_IS_OBJECT (object)' failed
-Dec 03 14:35:08 krowka polkitd[21432]: g_object_ref: assertion 'G_IS_OBJECT (object)' failed
-Dec 03 14:35:08 krowka polkitd[21432]: polkit_authorization_result_get_details: assertion 'POLKIT_IS_AUTHORIZATION_RESULT (result)' failed
-Dec 03 14:35:08 krowka polkitd[21432]: polkit_authorization_result_get_is_challenge: assertion 'POLKIT_IS_AUTHORIZATION_RESULT (result)' failed
-Dec 03 14:35:08 krowka polkitd[21432]: polkit_authorization_result_get_is_authorized: assertion 'POLKIT_IS_AUTHORIZATION_RESULT (result)' failed
-Dec 03 14:35:08 krowka polkitd[21432]: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
-Dec 03 14:35:08 krowka polkitd[21432]: g_object_unref: assertion 'G_IS_OBJECT (object)' failed
----
- src/polkit/polkitunixgroup.c | 9 ++++++++-
- src/polkit/polkitunixuser.c | 7 +++++++
- 2 files changed, 15 insertions(+), 1 deletion(-)
-
-diff --git a/src/polkit/polkitunixgroup.c b/src/polkit/polkitunixgroup.c
-index 095cca0..53db862 100644
---- a/src/polkit/polkitunixgroup.c
-+++ b/src/polkit/polkitunixgroup.c
-@@ -71,6 +71,7 @@ G_DEFINE_TYPE_WITH_CODE (PolkitUnixGroup, polkit_unix_group, G_TYPE_OBJECT,
- static void
- polkit_unix_group_init (PolkitUnixGroup *unix_group)
- {
-+ unix_group->gid = -1;
- }
-
- static void
-@@ -100,11 +101,14 @@ polkit_unix_group_set_property (GObject *object,
- GParamSpec *pspec)
- {
- PolkitUnixGroup *unix_group = POLKIT_UNIX_GROUP (object);
-+ gint val;
-
- switch (prop_id)
- {
- case PROP_GID:
-- unix_group->gid = g_value_get_int (value);
-+ val = g_value_get_int (value);
-+ g_return_if_fail (val >= 0);
-+ unix_group->gid = val;
- break;
-
- default:
-@@ -169,6 +173,7 @@ polkit_unix_group_set_gid (PolkitUnixGroup *group,
- gint gid)
- {
- g_return_if_fail (POLKIT_IS_UNIX_GROUP (group));
-+ g_return_if_fail (gid >= 0);
- group->gid = gid;
- }
-
-@@ -183,6 +188,8 @@ polkit_unix_group_set_gid (PolkitUnixGroup *group,
- PolkitIdentity *
- polkit_unix_group_new (gint gid)
- {
-+ g_return_val_if_fail (gid >= 0, NULL);
-+
- return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_GROUP,
- "gid", gid,
- NULL));
-diff --git a/src/polkit/polkitunixuser.c b/src/polkit/polkitunixuser.c
-index a5285f4..ef6403e 100644
---- a/src/polkit/polkitunixuser.c
-+++ b/src/polkit/polkitunixuser.c
-@@ -72,6 +72,7 @@ G_DEFINE_TYPE_WITH_CODE (PolkitUnixUser, polkit_unix_user, G_TYPE_OBJECT,
- static void
- polkit_unix_user_init (PolkitUnixUser *unix_user)
- {
-+ unix_user->uid = -1;
- unix_user->name = NULL;
- }
-
-@@ -112,10 +113,13 @@ polkit_unix_user_set_property (GObject *object,
- GParamSpec *pspec)
- {
- PolkitUnixUser *unix_user = POLKIT_UNIX_USER (object);
-+ gint val;
-
- switch (prop_id)
- {
- case PROP_UID:
-+ val = g_value_get_int (value);
-+ g_return_if_fail (val >= 0);
- unix_user->uid = g_value_get_int (value);
- break;
-
-@@ -182,6 +186,7 @@ polkit_unix_user_set_uid (PolkitUnixUser *user,
- gint uid)
- {
- g_return_if_fail (POLKIT_IS_UNIX_USER (user));
-+ g_return_if_fail (uid >= 0);
- user->uid = uid;
- }
-
-@@ -196,6 +201,8 @@ polkit_unix_user_set_uid (PolkitUnixUser *user,
- PolkitIdentity *
- polkit_unix_user_new (gint uid)
- {
-+ g_return_val_if_fail (uid >= 0, NULL);
-+
- return POLKIT_IDENTITY (g_object_new (POLKIT_TYPE_UNIX_USER,
- "uid", uid,
- NULL));
---
-2.18.1
-
diff --git a/user/polkit/fix-consolekit-db-stat.patch b/user/polkit/fix-consolekit-db-stat.patch
index 3deceb639..d06ce7ae7 100644
--- a/user/polkit/fix-consolekit-db-stat.patch
+++ b/user/polkit/fix-consolekit-db-stat.patch
@@ -1,6 +1,6 @@
--- polkit-0.105.orig/src/polkitbackend/polkitbackendsessionmonitor.c 2012-04-24 19:05:34.000000000 +0300
+++ polkit-0.105/src/polkitbackend/polkitbackendsessionmonitor.c 2015-08-17 14:50:51.428580856 +0300
-@@ -47,7 +47,7 @@ struct _PolkitBackendSessionMonitor
+@@ -48,7 +48,7 @@ struct _PolkitBackendSessionMonitor
GKeyFile *database;
GFileMonitor *database_monitor;
@@ -9,7 +9,7 @@
};
struct _PolkitBackendSessionMonitorClass
-@@ -95,7 +95,7 @@ reload_database (PolkitBackendSessionMon
+@@ -96,7 +96,7 @@ reload_database (PolkitBackendSessionMon
goto out;
}
@@ -18,7 +18,7 @@
monitor->database = g_key_file_new ();
if (!g_key_file_load_from_file (monitor->database,
-@@ -131,7 +131,8 @@ ensure_database (PolkitBackendSessionMon
+@@ -132,7 +132,8 @@ ensure_database (PolkitBackendSessionMon
strerror (errno));
goto out;
}
diff --git a/user/polkit/fix-parallel-make.patch b/user/polkit/fix-parallel-make.patch
deleted file mode 100644
index b693a34dd..000000000
--- a/user/polkit/fix-parallel-make.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From 7bd30764a5230684c7c979a08a83dfa6e327f719 Mon Sep 17 00:00:00 2001
-From: Ryan Lortie <desrt@velocity.(none)>
-Date: Tue, 13 Nov 2012 16:50:14 +0000
-Subject: build: Fix .gir generation for parallel make
-
-As per the intructions in the introspection Makefile, we should have a
-line declaring a dependency between the .gir and .la files.
-
-https://bugs.freedesktop.org/show_bug.cgi?id=57077
-
-Signed-off-by: David Zeuthen <zeuthen@gmail.com>
----
-diff --git a/src/polkit/Makefile.am b/src/polkit/Makefile.am
-index 39d6d84..d648d29 100644
---- a/src/polkit/Makefile.am
-+++ b/src/polkit/Makefile.am
-@@ -106,6 +106,8 @@ if HAVE_INTROSPECTION
-
- INTROSPECTION_GIRS = Polkit-1.0.gir
-
-+Polkit-1.0.gir: libpolkit-gobject-1.la
-+
- girdir = $(INTROSPECTION_GIRDIR)
- gir_DATA = Polkit-1.0.gir
-
-diff --git a/src/polkitagent/Makefile.am b/src/polkitagent/Makefile.am
-index 1cfb73c..5b7d4c7 100644
---- a/src/polkitagent/Makefile.am
-+++ b/src/polkitagent/Makefile.am
-@@ -108,6 +108,8 @@ if HAVE_INTROSPECTION
- girdir = $(INTROSPECTION_GIRDIR)
- gir_DATA = PolkitAgent-1.0.gir
-
-+PolkitAgent-1.0.gir: libpolkit-agent-1.la
-+
- typelibsdir = $(INTROSPECTION_TYPELIBDIR)
- typelibs_DATA = PolkitAgent-1.0.typelib
-
---
-cgit v0.9.0.2-2-gbebe
diff --git a/user/ponysay/APKBUILD b/user/ponysay/APKBUILD
index ffb32bf57..d0928a344 100644
--- a/user/ponysay/APKBUILD
+++ b/user/ponysay/APKBUILD
@@ -14,12 +14,10 @@ subpackages="$pkgname-doc $pkgname-bash-completion:bashcomp:noarch
source="ponysay-$pkgver.tar.gz::https://github.com/erkin/ponysay/archive/$pkgver.tar.gz"
check() {
- cd "$builddir"
./dependency-test.sh
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --destdir="$pkgdir" --with-man \
--freedom=sloppy --without-fish --with-custom-env-python=python3
}
diff --git a/user/poppler-qt5/APKBUILD b/user/poppler-qt5/APKBUILD
index 8e62189f4..10fea800e 100644
--- a/user/poppler-qt5/APKBUILD
+++ b/user/poppler-qt5/APKBUILD
@@ -1,40 +1,60 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=poppler-qt5
_realname=poppler
-pkgver=0.74.0
+pkgver=22.11.0
pkgrel=0
+_testver=01c92874
pkgdesc="PDF rendering library based on xpdf 3.0 (Qt 5 bindings)"
url="https://poppler.freedesktop.org/"
arch="all"
-options="!check" # Test data not included in tarball
license="GPL-2.0+"
-makedepends="libjpeg-turbo-dev cairo-dev libxml2-dev fontconfig-dev
- qt5-qtbase-dev poppler-dev~$pkgver lcms2-dev openjpeg-dev"
depends=""
depends_dev="$makedepends"
+makedepends="libjpeg-turbo-dev cairo-dev libxml2-dev fontconfig-dev boost-dev
+ qt5-qtbase-dev poppler-dev~$pkgver lcms2-dev openjpeg-dev cmake"
subpackages="$pkgname-dev"
-source="https://poppler.freedesktop.org/poppler-$pkgver.tar.xz"
+source="https://poppler.freedesktop.org/poppler-$pkgver.tar.xz
+ https://distfiles.adelielinux.org/source/poppler-test-$_testver.tar.gz
+ "
builddir="$srcdir"/$_realname-$pkgver
-prepare() {
- mkdir -p build
-}
+# secfixes: poppler
+# 0.77.0-r0:
+# - CVE-2019-9200
+# - CVE-2019-9631
+# - CVE-2019-9903
+# - CVE-2019-10872
+# - CVE-2019-10873
+# - CVE-2019-11026
+# - CVE-2019-12293
+# 0.80.0-r0:
+# - CVE-2019-9959
+# - CVE-2019-14494
build() {
- cd "$builddir"/build
- cmake \
+ cmake -Bbuild \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_LIBDIR=/usr/lib \
- ..
- make
+ -DTESTDATADIR="$srcdir/poppler-test-$_testver" \
+ .
+ make -C build
+}
+
+check() {
+ # check_qt5_annotations: fails on ppc64 and x86_64 as of 0.80.0-r0
+ # FAIL! : TestAnnotations::checkFontSizeAndColor() Compared values are not the same
+ # Actual (textAnnot->contents()): "\u00C3\u00BE\u00C3\u00BF\u0000f\u0000o\u0000o\u0000b\u0000a\u0000r"
+ # Expected (contents) : "foobar"
+ # Loc: [src/poppler-0.77.0/qt5/tests/check_annotations.cpp(100)]
+ ctest --output-on-failure \
+ -E check_qt5_annotations
}
package() {
- cd "$builddir"/build
- install -D -m644 poppler-qt5.pc "$pkgdir"/usr/lib/pkgconfig/poppler-qt5.pc
- cd qt5
- make DESTDIR="$pkgdir" install
+ install -D -m644 build/poppler-qt5.pc "$pkgdir"/usr/lib/pkgconfig/poppler-qt5.pc
+ make -C build/qt5 DESTDIR="$pkgdir" install
}
-sha512sums="4e48e2ffb559863ee693930db3b8594fd7e60e4b4ca3cdeb198faf90a6f4dbb5e102461492a12058221bc1218fe7e17c9085afb9e7956ae4bf26c11674315e66 poppler-0.74.0.tar.xz"
+sha512sums="a173681782b4f6c4528140ce73d1f4c0ca89a018eab7197d69f1a76ab3e6115c7c03f82e99a8b3e5729c0f75b82896e59b38762ed460dd29b704ab4a03926e7b poppler-22.11.0.tar.xz
+5275541ffa0fef9c55a0c02411947c610b2e7eb621f0a0fa9529810f8b09e2b0194c1da4b64eb9641b2c3af7b099e6bb7d1212b9087a21cf3af893090a10506b poppler-test-01c92874.tar.gz"
diff --git a/user/poppler/APKBUILD b/user/poppler/APKBUILD
index b1a6bf526..ae413f3ab 100644
--- a/user/poppler/APKBUILD
+++ b/user/poppler/APKBUILD
@@ -1,38 +1,45 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=poppler
-pkgver=0.74.0
+pkgver=22.11.0
pkgrel=0
pkgdesc="PDF rendering library based on xpdf 3.0"
url="https://poppler.freedesktop.org/"
arch="all"
-options="!check" # Test data is available in Git only.
+options="!check" # Tests only cover Qt5 component.
license="GPL-2.0+"
depends=""
depends_dev="cairo-dev glib-dev"
makedepends="$depends_dev libjpeg-turbo-dev cairo-dev libxml2-dev openjpeg-dev
fontconfig-dev gobject-introspection-dev lcms2-dev libpng-dev tiff-dev
- zlib-dev cmake"
+ zlib-dev boost-dev cmake"
subpackages="$pkgname-dev $pkgname-doc $pkgname-utils $pkgname-glib"
source="https://poppler.freedesktop.org/poppler-$pkgver.tar.xz"
-builddir="$srcdir"/$pkgname-$pkgver/build
-prepare() {
- default_prepare
- mkdir "$builddir"
-}
+# secfixes:
+# 0.77.0-r0:
+# - CVE-2019-9200
+# - CVE-2019-9631
+# - CVE-2019-9903
+# - CVE-2019-10872
+# - CVE-2019-10873
+# - CVE-2019-11026
+# - CVE-2019-12293
+# 0.80.0-r0:
+# - CVE-2019-9959
+# - CVE-2019-14494
build() {
- cmake \
+ cmake -Bbuild \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
-DCMAKE_INSTALL_LIBDIR=/usr/lib \
-DENABLE_UNSTABLE_API_ABI_HEADERS=ON \
- ..
- make
+ .
+ make -C build
}
package() {
- make DESTDIR="$pkgdir" install
+ make -C build DESTDIR="$pkgdir" install
}
utils() {
@@ -50,11 +57,4 @@ glib() {
"$subpkgdir"/usr/lib/
}
-_cpp() {
- pkgdesc="Pure C++ wrapper for poppler"
- mkdir -p "$subpkgdir"/usr/lib
- mv "$pkgdir"/usr/lib/libpoppler-cpp.so.* \
- "$subpkgdir"/usr/lib/
-}
-
-sha512sums="4e48e2ffb559863ee693930db3b8594fd7e60e4b4ca3cdeb198faf90a6f4dbb5e102461492a12058221bc1218fe7e17c9085afb9e7956ae4bf26c11674315e66 poppler-0.74.0.tar.xz"
+sha512sums="a173681782b4f6c4528140ce73d1f4c0ca89a018eab7197d69f1a76ab3e6115c7c03f82e99a8b3e5729c0f75b82896e59b38762ed460dd29b704ab4a03926e7b poppler-22.11.0.tar.xz"
diff --git a/user/postfix/APKBUILD b/user/postfix/APKBUILD
index a0c2d1533..65b12463e 100644
--- a/user/postfix/APKBUILD
+++ b/user/postfix/APKBUILD
@@ -1,28 +1,29 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=postfix
-pkgver=3.3.2
-pkgrel=2
+pkgver=3.9.0
+pkgrel=1
pkgdesc="Mail server (MTA) that is Sendmail outside and Qmail inside"
-url="http://www.postfix.org/"
+url="https://www.postfix.org/"
arch="all"
+pkgusers="postfix"
+pkggroups="postfix postdrop"
options="!check suid" # No test suite.
license="EPL-2.0 AND IPL-1.0"
depends=""
makedepends="cyrus-sasl-dev db-dev icu-dev linux-pam-dev lmdb-dev openldap-dev
- openssl-dev pcre-dev perl postgresql-dev sqlite-dev"
-install="$pkgname.pre-install"
+ openssl-dev pcre-dev perl postgresql-dev sqlite-dev m4"
subpackages="$pkgname-doc $pkgname-ldap $pkgname-lmdb $pkgname-openrc
$pkgname-pgsql $pkgname-sqlite"
-pkgusers="postfix"
-pkggroups="postfix postdrop"
-source="http://www.namesdir.com/mirrors/postfix-release/official/postfix-$pkgver.tar.gz
+install="$pkgname.pre-install"
+provider_priority=1
+provides="sendmail"
+source="https://postfix-mirror.horus-it.com/postfix-release/official/$pkgname-$pkgver.tar.gz
honour-config-directory.patch
postfix.initd
"
build() {
- cd "$builddir"
local CCARGS="-DHAS_LDAP -DHAS_LMDB -DHAS_PCRE -DHAS_PGSQL -I$(pg_config --includedir) -DHAS_SQLITE -DNO_NIS -DUSE_CYRUS_SASL -DUSE_SASL_AUTH -I/usr/include/sasl -DUSE_LDAP_SASL -DUSE_TLS -Wno-comment"
local AUXLIBS="-lpam $(pcre-config --libs) -lsasl2 -lssl -lcrypto"
make DEBUG="" shared=yes dynamicmaps=yes pie=yes \
@@ -39,7 +40,6 @@ build() {
}
package() {
- cd "$builddir"
make install_root="$pkgdir" manpage_directory="/usr/share/man" \
command_directory="/usr/sbin" mailq_path="/usr/bin/mailq" \
newaliases_path="/usr/bin/newaliases" \
@@ -56,7 +56,8 @@ package() {
"$pkgdir"/var/lib/postfix
chown -R postfix:postfix \
"$pkgdir"/var/spool/postfix
- chgrp postdrop "$pkgdir"/var/spool/postfix/{public,maildrop}
+ chgrp postdrop "$pkgdir"/var/spool/postfix/public \
+ "$pkgdir"/var/spool/postfix/maildrop
chmod 0750 "$pkgdir"/var/lib/postfix
chgrp postdrop "$pkgdir"/usr/sbin/postdrop "$pkgdir"/usr/sbin/postqueue
chmod 2755 "$pkgdir"/usr/sbin/postdrop "$pkgdir"/usr/sbin/postqueue
@@ -91,6 +92,6 @@ sqlite() {
_database "sqlite" "SQLite 3"
}
-sha512sums="df67eb978751900d357597def16f744dae990f5cc4e48af8dca57f84b0140e05416712727c1760b8f557ed3564cd593620756561b0a6f31db4b54d928e15293f postfix-3.3.2.tar.gz
-63ea7fe461fca1306088e9984acfab6ab3e919dafa2b606d43fbca472969e6ec232800071f939f5a4482c01c6d7b53a86de9e7e893ab94f4cb135d16ff5763cc honour-config-directory.patch
+sha512sums="46faaf529a6d2edc5ea747ee0d73a028f7061a923da0ea4b1e1828d935b15f5782d83f7a8472e7c74b45ea0e96666c871efd352934bead28a88ddd3561ade324 postfix-3.9.0.tar.gz
+c79334a2d4989990bf0bc26341332611521d7cd06f1dcacc7a3baef6bf2ddd5f90208f39b26b26a07b134a2398d669a40d5322b4be6c053947fc9a962ddf7111 honour-config-directory.patch
2ad1b053bbb51d4f480dbf5a01252e8e99a82ec14a75ff49336b2b190ea55bc02400542b109fa0cc4ebfe6b42eaabbc45f70f2ea581f1eb9c4189c439b825592 postfix.initd"
diff --git a/user/postfix/honour-config-directory.patch b/user/postfix/honour-config-directory.patch
index a32c588ee..ad9d7ea3d 100644
--- a/user/postfix/honour-config-directory.patch
+++ b/user/postfix/honour-config-directory.patch
@@ -1,6 +1,6 @@
--- postfix-3.3.2/postfix-install
+++ postfix-3.3.2/postfix-install
-@@ -832,7 +832,7 @@
+@@ -846,7 +846,7 @@
# the wrong place when Postfix is being upgraded.
case "$mail_version" in
diff --git a/user/postgresql/APKBUILD b/user/postgresql/APKBUILD
index 7fed2351e..b5f40acbb 100644
--- a/user/postgresql/APKBUILD
+++ b/user/postgresql/APKBUILD
@@ -2,7 +2,7 @@
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=postgresql
-pkgver=10.5
+pkgver=14.15
pkgrel=0
pkgdesc="Featureful object-relational database system (RDBMS)"
url="https://www.postgresql.org/"
@@ -22,7 +22,6 @@ subpackages="$pkgname-contrib $pkgname-dev $pkgname-doc libpq $pkgname-libs
$pkgname-plpython3 $pkgname-plpython3-contrib:plpython3_contrib"
install="$pkgname.pre-upgrade"
source="https://ftp.postgresql.org/pub/source/v$pkgver/$pkgname-$pkgver.tar.bz2
- initdb.patch
perl-rpath.patch
conf-unix_socket_directories.patch
disable-broken-tests.patch
@@ -35,37 +34,43 @@ source="https://ftp.postgresql.org/pub/source/v$pkgver/$pkgname-$pkgver.tar.bz2
# secfixes:
# 9.6.4-r0:
-# - CVE-2017-7546
-# - CVE-2017-7547
-# - CVE-2017-7548
+# - CVE-2017-7546
+# - CVE-2017-7547
+# - CVE-2017-7548
# 9.6.3-r0:
-# - CVE-2017-7484
-# - CVE-2017-7485
-# - CVE-2017-7486
+# - CVE-2017-7484
+# - CVE-2017-7485
+# - CVE-2017-7486
# 10.1-r0:
-# - CVE-2017-15098
-# - CVE-2017-15099
+# - CVE-2017-15098
+# - CVE-2017-15099
# 10.2-r0:
-# - CVE-2018-1052
-# - CVE-2018-1053
+# - CVE-2018-1052
+# - CVE-2018-1053
# 10.3-r0:
-# - CVE-2018-1058
+# - CVE-2018-1058
# 10.4-r0:
-# - CVE-2018-1115
+# - CVE-2018-1115
+# 10.8-r0:
+# - CVE-2018-16850
+# - CVE-2019-10130
+# 10.9-r0:
+# - CVE-2019-10164
+# 10.10-r0:
+# - CVE-2019-10208
prepare() {
default_prepare
- cd "$builddir"
- local file; for file in $pkgname.initd $pkgname.confd; do
+ for file in $pkgname.initd $pkgname.confd; do
sed "s|@VERSION@|${pkgver%.*}|" "$srcdir"/$file > $file
done
}
build() {
export PYTHON=/usr/bin/python3
- export CFLAGS="${CFLAGS/-Os/-O2}"
- export CPPFLAGS="${CPPFLAGS/-Os/-O2}"
+ export CFLAGS="$(printf '%s' "$CFLAGS" | sed 's/-Os/-O2/')"
+ export CFLAGS="$(printf '%s' "$CPPFLAGS" | sed 's/-Os/-O2/')"
./configure \
--build=$CBUILD \
@@ -86,16 +91,12 @@ build() {
}
check() {
- cd "$builddir"
-
_run_tests src/test
_run_tests src/pl
_run_tests contrib
}
package() {
- cd "$builddir"
-
make DESTDIR="$pkgdir" install install-docs
cd "$pkgdir"
@@ -160,7 +161,6 @@ contrib() {
depends=""
cd "$builddir"
-
# Avoid installing plperl and plpython extensions, these will be
# installed into separate subpackages.
sed -Ei -e 's/(.*_plperl)/#\1/' \
@@ -243,18 +243,17 @@ _run_tests() {
}
_submv() {
- local path; for path in "$@"; do
+ for path in "$@"; do
mkdir -p "$subpkgdir/${path%/*}"
mv "$pkgdir"/$path "$subpkgdir"/${path%/*}/
done
}
-sha512sums="1bad30ae88beca66f7e8b99b82e7f02aac1e9230b328e6e5a762a704cdd9dc767d924f5a66c68c93586badfef91b7ff336120a567ce970eaa58bb44c662ad48c postgresql-10.5.tar.bz2
-1f8e7dc58f5b0a12427cf2fd904ffa898a34f23f3332c8382b94e0d991c007289e7913a69e04498f3d93fc5701855796c207b4b1cc4a0b366f586050124d7fcc initdb.patch
-5f9d8bb4957194069d01af8ab3abc6d4d83a7e7f8bd7ebe1caae5361d621a3e58f91b14b952958138a794e0a80bc154fbb7e3e78d211e2a95b9b7901335de854 perl-rpath.patch
+sha512sums="227f9551167ee62e5185d6f6777e100ecc09f497b9ee1b5a8e659de8d4c237b0f9a97005706bbf64c3e839271e2630f6a417ba98dfce47bcb4c27e8641a7c6ef postgresql-14.15.tar.bz2
+5772c54378f885fd2924be431f577bcbc134481d17a1331afd42ebeea2995e52364601ca2e2839d3c1dd78c51e4483424d1ed8ef8cdf43889a5a209861396efc perl-rpath.patch
8439a6fdfdea0a4867daeb8bc23d6c825f30c00d91d4c39f48653f5ee77341f23282ce03a77aad94b5369700f11d2cb28d5aee360e59138352a9ab331a9f9d0f conf-unix_socket_directories.patch
-1966b2a3971f56fbecd8daa45965236d487683e13300e5c000e595bbadbbe9d0e1301fbbfa034f452abe8a4e4a427781f772370b9ff392bb03fc11ee43c9dee7 disable-broken-tests.patch
-224e80f9e62843fd248e625abdd0d9fe477729ff3f9a64fc5c86dd37bb7176d3504107fbed7ce578e3a1db7f60b8cf2abf5fe4862c81f76b6d026e29ca495cfc postgresql.initd
+323ea2f3b6d71b858153d1f8ae62a98548ce8b2d1e0d9214dd32e858e4ad9bd0194b8b2f6e9540ce6324e394a08f496b2822004c1c3fef11184f267fa401a087 disable-broken-tests.patch
+2c3aab4b24e0e1f60c3bd5aa2e24d93d3480711389e48454ed7cd7713eb27df7e1b29970ba1931ad0ae810458fae9e5cc7b6b6e2a24924eb4c493c6e7088ae75 postgresql.initd
a6d9cba5c7270484b3a22083b2b37742faefb01b6643040050c92235840c601b2e206ebda32804937b729c6cf42c79a558b921900e52fc420df2a03b5f29e1f7 postgresql.confd
f5a1cba051e7d846c2d16703514601cb25729ed96b677c9bd0c199d64552120a8b14b238af01917fdb87106681e12dee6fff7447558155ba273e4f96be5e2892 pg-restore.initd
c14a5684e914abb3b0ee71bbf15eed71a9264deacaa404a6e3af6bfc330d93e7598624d0ed11a94263106cc660f7f54c8ff57e759033cf606a795f69ff6c1c7c pg-restore.confd
diff --git a/user/postgresql/disable-broken-tests.patch b/user/postgresql/disable-broken-tests.patch
index 0bb5b03fa..20d94d5d5 100644
--- a/user/postgresql/disable-broken-tests.patch
+++ b/user/postgresql/disable-broken-tests.patch
@@ -64,17 +64,18 @@ These symbols are really not provided by libpq.
I wasted one day trying to figure out what's going on here, but still
have no idea. :(
---- a/src/test/regress/parallel_schedule
-+++ b/src/test/regress/parallel_schedule
-@@ -84,7 +84,7 @@
+diff -ur a/src/test/regress/parallel_schedule b/src/test/regress/parallel_schedule
+--- a/src/test/regress/parallel_schedule 2022-01-08 00:25:45.290000000 +0000
++++ b/src/test/regress/parallel_schedule 2022-01-08 00:26:01.950000000 +0000
+@@ -76,7 +76,7 @@
# ----------
# Another group of parallel tests
# ----------
--test: brin gin gist spgist privileges init_privs security_label collate matview lock replica_identity rowsecurity object_address tablesample groupingsets drop_operator password
-+test: brin gin gist spgist privileges init_privs security_label collate matview lock replica_identity rowsecurity tablesample groupingsets drop_operator password
+-test: brin gin gist spgist privileges init_privs security_label collate matview lock replica_identity rowsecurity object_address tablesample groupingsets drop_operator password identity generated join_hash
++test: brin gin gist spgist privileges init_privs security_label collate matview lock replica_identity rowsecurity tablesample groupingsets drop_operator password identity generated join_hash
# ----------
- # Another group of parallel tests
+ # Additional BRIN tests
@@ -98,7 +98,7 @@
test: select_parallel
diff --git a/user/postgresql/initdb.patch b/user/postgresql/initdb.patch
deleted file mode 100644
index 59a872a49..000000000
--- a/user/postgresql/initdb.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/src/bin/initdb/initdb.c b/src/bin/initdb/initdb.c
---- a/src/bin/initdb/initdb.c
-+++ b/src/bin/initdb/initdb.c
-@@ -3259,9 +3259,7 @@
- /* translator: This is a placeholder in a shell command. */
- appendPQExpBuffer(start_db_cmd, " -l %s start", _("logfile"));
-
-- printf(_("\nSuccess. You can now start the database server using:\n\n"
-- " %s\n\n"),
-- start_db_cmd->data);
-+ printf(_("\nSuccess.\n\n"));
-
- destroyPQExpBuffer(start_db_cmd);
-
diff --git a/user/postgresql/perl-rpath.patch b/user/postgresql/perl-rpath.patch
index a2505acf7..f1354488e 100644
--- a/user/postgresql/perl-rpath.patch
+++ b/user/postgresql/perl-rpath.patch
@@ -1,22 +1,12 @@
-We configure Postgres with --disable-rpath because for the most part we
-want to leave it to ldconfig to determine where libraries are. However,
-for some reason the Perl package puts libperl.so in a nonstandard place
-and doesn't add that place to the ldconfig search path. I think this
-is a Perl packaging bug, myself, but apparently it's not going to change.
-So work around it by adding an rpath spec to plperl.so (only).
-
-Alpine notes:
-This patch is copied from Fedora.
-
---- a/src/pl/plperl/GNUmakefile
-+++ b/src/pl/plperl/GNUmakefile
-@@ -43,6 +43,9 @@
+diff -ur a/src/pl/plperl/GNUmakefile b/src/pl/plperl/GNUmakefile
+--- a/src/pl/plperl/GNUmakefile 2022-01-08 00:23:39.350000000 +0000
++++ b/src/pl/plperl/GNUmakefile 2022-01-08 00:24:13.230000000 +0000
+@@ -53,7 +53,7 @@
+ endif # win32
- SHLIB_LINK = $(perl_embed_ldflags)
-+# Force rpath to be used even though we disable it everywhere else
-+SHLIB_LINK += $(rpath)
-+
- REGRESS_OPTS = --dbname=$(PL_TESTDB) --load-extension=plperl --load-extension=plperlu
- REGRESS = plperl plperl_lc plperl_trigger plperl_shared plperl_elog plperl_util plperl_init plperlu plperl_array
- # if Perl can support two interpreters in one backend,
+-SHLIB_LINK = $(perl_embed_ldflags)
++SHLIB_LINK = $(perl_embed_ldflags) $(rpath)
+
+ REGRESS_OPTS = --dbname=$(PL_TESTDB)
+ REGRESS = plperl_setup plperl plperl_lc plperl_trigger plperl_shared \
diff --git a/user/postgresql/postgresql.initd b/user/postgresql/postgresql.initd
index 846229a40..1c1a5dcf9 100644
--- a/user/postgresql/postgresql.initd
+++ b/user/postgresql/postgresql.initd
@@ -63,8 +63,8 @@ start_pre() {
fi
fi
- local socket_dirs=$(get_config "unix_socket_directories" "/run/postgresql")
- local port=$(get_config "port" "$port")
+ local socket_dirs="$(get_config "unix_socket_directories" "/run/postgresql")"
+ local port="$(get_config "port" "$port")"
start_stop_daemon_args="$start_stop_daemon_args --env PGPORT=$port"
@@ -124,7 +124,7 @@ stop() {
&& retry="$retry/SIGQUIT/$force_timeout" \
|| force_timeout=0
- local seconds=$(( $nice_timeout + $rude_timeout + $force_timeout ))
+ local seconds="$(( $nice_timeout + $rude_timeout + $force_timeout ))"
ebegin "Stopping PostgreSQL (this can take up to $seconds seconds)"
diff --git a/user/powerdevil/APKBUILD b/user/powerdevil/APKBUILD
index 91da76bb6..d010e03f9 100644
--- a/user/powerdevil/APKBUILD
+++ b/user/powerdevil/APKBUILD
@@ -1,22 +1,22 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=powerdevil
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="KDE Plasma power management utilities"
url="https://www.kde.org/"
arch="all"
license="GPL-2.0+ AND LGPL-2.0+ AND (LGPL-2.1-only OR LGPL-3.0-only)"
-depends=""
+depends="kirigami2"
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtx11extras-dev
kactivities-dev kauth-dev kconfig-dev kdbusaddons-dev kglobalaccel-dev
ki18n-dev kidletime-dev kio-dev knotifyconfig-dev kdelibs4support-dev
- kwayland-dev libkscreen-dev plasma-workspace-dev solid-dev eudev-dev"
+ kwayland-dev libkscreen-dev libkworkspace-dev solid-dev eudev-dev
+ bluez-qt-dev kirigami2-dev libcap-dev networkmanager-qt-dev"
subpackages="$pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/plasma/$pkgver/powerdevil-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e85f93f494d2ce86676269c1bfe49d59a855bbcd5f260bc3205e3b2ef38de5dd17ee47397eca3280e9dcb484c80b79c670a1b2e089891d5090e9ee935504d4c9 powerdevil-5.12.7.tar.xz"
+sha512sums="2f3e6888be7039bf7beb754ef117d09e79ceb4e5ef73d74f982d37785adbd7a489fc86641c9df9ea4a34fabd2ccac737f5e7ee08958d2dd03b5a676f22aa4c15 powerdevil-5.24.5.tar.xz"
diff --git a/user/powerpc-utils/APKBUILD b/user/powerpc-utils/APKBUILD
index c16fd2d05..0823e4a47 100644
--- a/user/powerpc-utils/APKBUILD
+++ b/user/powerpc-utils/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=powerpc-utils
-pkgver=1.3.6
+pkgver=1.3.7
pkgrel=0
pkgdesc="Maintenance utilities for PowerPC computers"
url="https://github.com/ibm-power-utilities/powerpc-utils"
@@ -27,4 +27,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="a30516ccdfe19a198cd5c1a7ad3646d15b599fb40f772cbc7ac95c6d3b364575a3ebb16708022886ba3bcd3184070a3f4d72b649427879fcdd2655406470e977 powerpc-utils-1.3.6.tar.gz"
+sha512sums="e7ced7568d4a033131a4a543bf3128ffc1d5b1f5baf358b7bb73003e713145d3191dddee63b73d475dc0e257d54dd2470b02b15ba6ba9e49bb1d110091f2a541 powerpc-utils-1.3.7.tar.gz"
diff --git a/user/ppp/03_all_use_internal_logwtmp.patch b/user/ppp/03_all_use_internal_logwtmp.patch
new file mode 100644
index 000000000..d9ecddf25
--- /dev/null
+++ b/user/ppp/03_all_use_internal_logwtmp.patch
@@ -0,0 +1,22 @@
+Use internal implementation of logwtmp function to prevent
+utilities from sys-apps/coreutils to not detect authorized users
+
+Patch by: Sergey Popov <pinkbyte@gentoo.org>
+
+--- a/pppd/sys-linux.c
++++ b/pppd/sys-linux.c
+@@ -2196,7 +2197,6 @@
+ return ok;
+ }
+
+-#ifndef HAVE_LOGWTMP
+ /********************************************************************
+ *
+ * Update the wtmp file with the appropriate user name and tty device.
+@@ -2270,7 +2270,7 @@
+ }
+ #endif
+ }
+-#endif /* HAVE_LOGWTMP */
++
+
diff --git a/user/ppp/04_all_mpls.patch b/user/ppp/04_all_mpls.patch
new file mode 100644
index 000000000..dd316974e
--- /dev/null
+++ b/user/ppp/04_all_mpls.patch
@@ -0,0 +1,427 @@
+--- ppp-2.4.5/pppd/main.c
++++ ppp-2.4.5/pppd/main.c
+@@ -95,6 +95,9 @@
+ #include "fsm.h"
+ #include "lcp.h"
+ #include "ipcp.h"
++
++#include "mplscp.h"
++
+ #ifdef INET6
+ #include "ipv6cp.h"
+ #endif
+@@ -283,6 +286,7 @@
+ &cbcp_protent,
+ #endif
+ &ipcp_protent,
++ &mplscp_protent,
+ #ifdef INET6
+ &ipv6cp_protent,
+ #endif
+--- ppp-2.4.5/pppd/Makefile.linux
++++ ppp-2.4.5/pppd/Makefile.linux
+@@ -13,16 +13,16 @@
+
+ PPPDSRCS = main.c magic.c fsm.c lcp.c ipcp.c upap.c chap-new.c md5.c ccp.c \
+ ecp.c ipxcp.c auth.c options.c sys-linux.c md4.c chap_ms.c \
+- demand.c utils.c tty.c eap.c chap-md5.c session.c
++ demand.c utils.c tty.c eap.c chap-md5.c session.c mplscp.c
+
+ HEADERS = ccp.h session.h chap-new.h ecp.h fsm.h ipcp.h \
+ ipxcp.h lcp.h magic.h md5.h patchlevel.h pathnames.h pppd.h \
+- upap.h eap.h
++ upap.h eap.h mplscp.h
+
+ MANPAGES = pppd.8
+ PPPDOBJS = main.o magic.o fsm.o lcp.o ipcp.o upap.o chap-new.o md5.o ccp.o \
+ ecp.o auth.o options.o demand.o utils.o sys-linux.o ipxcp.o tty.o \
+- eap.o chap-md5.o session.o
++ eap.o chap-md5.o session.o mplscp.o
+
+ #
+ # include dependencies if present
+--- ppp-2.4.5/pppd/mplscp.c
++++ ppp-2.4.5/pppd/mplscp.c
+@@ -0,0 +1,371 @@
++
++/* MPLSCP - Serge.Krier@advalvas.be (C) 2001 */
++
++#include <stdio.h>
++#include <string.h>
++#include <netdb.h>
++#include <sys/param.h>
++#include <sys/types.h>
++#include <sys/socket.h>
++#include <netinet/in.h>
++#include <arpa/inet.h>
++
++#include "pppd.h"
++#include "fsm.h"
++#include "mplscp.h"
++
++
++/* local vars */
++/* static int mplscp_is_up; */ /* have called np_up() */
++
++/*
++ * Callbacks for fsm code. (CI = Configuration Information)
++ */
++static void mplscp_resetci __P((fsm *)); /* Reset our CI */
++static int mplscp_cilen __P((fsm *)); /* Return length of our CI */
++static void mplscp_addci __P((fsm *, u_char *, int *)); /* Add our CI */
++static int mplscp_ackci __P((fsm *, u_char *, int)); /* Peer ack'd our CI */
++static int mplscp_nakci __P((fsm *, u_char *, int)); /* Peer nak'd our CI */
++static int mplscp_rejci __P((fsm *, u_char *, int)); /* Peer rej'd our CI */
++static int mplscp_reqci __P((fsm *, u_char *, int *, int)); /* Rcv CI */
++static void mplscp_up __P((fsm *)); /* We're UP */
++static void mplscp_down __P((fsm *)); /* We're DOWN */
++static void mplscp_finished __P((fsm *)); /* Don't need lower layer */
++
++fsm mplscp_fsm[NUM_PPP]; /* MPLSCP fsm structure */
++
++static fsm_callbacks mplscp_callbacks = { /* MPLSCP callback routines */
++ mplscp_resetci, /* Reset our Configuration Information */
++ mplscp_cilen, /* Length of our Configuration Information */
++ mplscp_addci, /* Add our Configuration Information */
++ mplscp_ackci, /* ACK our Configuration Information */
++ mplscp_nakci, /* NAK our Configuration Information */
++ mplscp_rejci, /* Reject our Configuration Information */
++ mplscp_reqci, /* Request peer's Configuration Information */
++ mplscp_up, /* Called when fsm reaches OPENED state */
++ mplscp_down, /* Called when fsm leaves OPENED state */
++ NULL, /* Called when we want the lower layer up */
++ mplscp_finished, /* Called when we want the lower layer down */
++ NULL, /* Called when Protocol-Reject received */
++ NULL, /* Retransmission is necessary */
++ NULL, /* Called to handle protocol-specific codes */
++ "MPLSCP" /* String name of protocol */
++};
++
++static option_t mplscp_option_list[] = {
++ { "mpls", o_bool, &mplscp_protent.enabled_flag,
++ "Enable MPLSCP (and MPLS)", 1 },
++ { NULL } };
++
++/*
++ * Protocol entry points from main code.
++ */
++
++static void mplscp_init __P((int));
++static void mplscp_open __P((int));
++static void mplscp_close __P((int, char *));
++static void mplscp_lowerup __P((int));
++static void mplscp_lowerdown __P((int));
++static void mplscp_input __P((int, u_char *, int));
++static void mplscp_protrej __P((int));
++static int mplscp_printpkt __P((u_char *, int,
++ void (*) __P((void *, char *, ...)), void *));
++
++struct protent mplscp_protent = {
++ PPP_MPLSCP,
++ mplscp_init,
++ mplscp_input,
++ mplscp_protrej,
++ mplscp_lowerup,
++ mplscp_lowerdown,
++ mplscp_open,
++ mplscp_close,
++ mplscp_printpkt,
++ NULL,
++ 0, /* MPLS not enabled by default */
++ "MPLSCP",
++ "MPLS",
++ mplscp_option_list,
++ NULL,
++ NULL,
++ NULL
++};
++
++/*
++ * mplscp_init - Initialize MPLSCP.
++ */
++static void
++mplscp_init(int unit) {
++
++ fsm *f = &mplscp_fsm[unit];
++
++ f->unit = unit;
++ f->protocol = PPP_MPLSCP;
++ f->callbacks = &mplscp_callbacks;
++ fsm_init(&mplscp_fsm[unit]);
++
++}
++
++/*
++ * mplscp_open - MPLSCP is allowed to come up.
++ */
++static void
++mplscp_open(int unit) {
++
++ fsm_open(&mplscp_fsm[unit]);
++
++}
++
++/*
++ * mplscp_close - Take MPLSCP down.
++ */
++static void
++mplscp_close(int unit, char *reason) {
++
++ fsm_close(&mplscp_fsm[unit], reason);
++
++}
++
++/*
++ * mplscp_lowerup - The lower layer is up.
++ */
++static void
++mplscp_lowerup(int unit) {
++
++ fsm_lowerup(&mplscp_fsm[unit]);
++}
++
++/*
++ * mplscp_lowerdown - The lower layer is down.
++ */
++static void
++mplscp_lowerdown(int unit) {
++
++ fsm_lowerdown(&mplscp_fsm[unit]);
++}
++
++/*
++ * mplscp_input - Input MPLSCP packet.
++ */
++static void
++mplscp_input(int unit, u_char *p, int len) {
++
++ fsm_input(&mplscp_fsm[unit], p, len);
++}
++
++/*
++ * mplscp_protrej - A Protocol-Reject was received for MPLSCP.
++ * Pretend the lower layer went down, so we shut up.
++ */
++static void
++mplscp_protrej(int unit) {
++
++ fsm_lowerdown(&mplscp_fsm[unit]);
++}
++
++/*
++ * mplscp_resetci - Reset our CI.
++ * Called by fsm_sconfreq, Send Configure Request.
++ */
++static void
++mplscp_resetci(fsm *f) {
++
++ return;
++}
++
++/*
++ * mplscp_cilen - Return length of our CI.
++ * Called by fsm_sconfreq, Send Configure Request.
++ */
++static int
++mplscp_cilen(fsm *f) {
++
++ return 0;
++}
++
++/*
++ * mplscp_addci - Add our desired CIs to a packet.
++ * Called by fsm_sconfreq, Send Configure Request.
++ */
++static void
++mplscp_addci(fsm *f, u_char *ucp, int *lenp) {
++
++}
++
++/*
++ * ipcp_ackci - Ack our CIs.
++ * Called by fsm_rconfack, Receive Configure ACK.
++ *
++ * Returns:
++ * 0 - Ack was bad.
++ * 1 - Ack was good.
++ */
++static int
++mplscp_ackci(fsm *f, u_char *p, int len) {
++
++ return 1;
++
++}
++
++/*
++ * mplscp_nakci - Peer has sent a NAK for some of our CIs.
++ * This should not modify any state if the Nak is bad
++ * or if MPLSCP is in the OPENED state.
++ * Calback from fsm_rconfnakrej - Receive Configure-Nak or Configure-Reject.
++ *
++ * Returns:
++ * 0 - Nak was bad.
++ * 1 - Nak was good.
++ */
++static int
++mplscp_nakci(fsm *f, u_char *p, int len) {
++
++ return 1;
++}
++
++/*
++ * MPLSVP_rejci - Reject some of our CIs.
++ * Callback from fsm_rconfnakrej.
++ */
++static int
++mplscp_rejci(fsm *f, u_char *p, int len) {
++
++ return 1;
++
++}
++
++/*
++ * mplscp_reqci - Check the peer's requested CIs and send appropriate response.
++ * Callback from fsm_rconfreq, Receive Configure Request
++ *
++ * Returns: CONFACK, CONFNAK or CONFREJ and input packet modified
++ * appropriately. If reject_if_disagree is non-zero, doesn't return
++ * CONFNAK; returns CONFREJ if it can't return CONFACK.
++ */
++static int
++mplscp_reqci(fsm *f, u_char *inp, int *len, int reject_if_disagree) {
++
++
++ int rc = CONFACK; /* Final packet return code */
++
++ PUTCHAR(CONFACK,inp);
++
++ return rc;
++
++}
++
++static void
++mplscp_up(fsm *f) {
++
++ sifnpmode(f->unit, PPP_MPLS_UC, NPMODE_PASS);
++ /* sifnpmode(f->unit, PPP_MPLS_MC, NPMODE_PASS);*/
++
++ np_up(f->unit, PPP_MPLS_UC);
++ /* np_up(f->unit, PPP_MPLS_MC);*/
++ /* ipcp_is_up = 1;*/
++
++
++#if 1
++ printf("MPLSCP is OPENED\n");
++#endif
++
++}
++
++static void
++mplscp_down(fsm *f) {
++
++ sifnpmode(f->unit, PPP_MPLS_UC, NPMODE_DROP);
++ /* sifnpmode(f->unit, PPP_MPLS_MC, NPMODE_DROP);*/
++
++ sifdown(f->unit);
++
++#if 1
++ printf("MPLSCP is CLOSED\n");
++#endif
++
++
++}
++
++static void
++mplscp_finished(fsm *f) {
++
++ np_finished(f->unit, PPP_MPLS_UC);
++ /* np_finished(f->unit, PPP_MPLS_MC);*/
++
++}
++
++/*
++ * mpls_printpkt - print the contents of an MPLSCP packet.
++ */
++static char *mplscp_codenames[] = {
++ "ConfReq", "ConfAck", "ConfNak", "ConfRej",
++ "TermReq", "TermAck", "CodeRej"
++};
++
++static int
++mplscp_printpkt(u_char *p, int plen,
++ void (*printer) __P((void *, char *, ...)),
++ void *arg) {
++
++ int code, id, len, olen;
++ u_char *pstart, *optend;
++
++ if (plen < HEADERLEN)
++ return 0;
++ pstart = p;
++ GETCHAR(code, p);
++ GETCHAR(id, p);
++ GETSHORT(len, p);
++ if (len < HEADERLEN || len > plen)
++ return 0;
++
++ if (code >= 1 && code <= sizeof(mplscp_codenames) / sizeof(char *))
++ printer(arg, " %s", mplscp_codenames[code-1]);
++ else
++ printer(arg, " code=0x%x", code);
++ printer(arg, " id=0x%x", id);
++ len -= HEADERLEN;
++ switch (code) {
++ case CONFREQ:
++ case CONFACK:
++ case CONFNAK:
++ case CONFREJ:
++ /* print option list */
++ while (len >= 2) {
++ GETCHAR(code, p);
++ GETCHAR(olen, p);
++ p -= 2;
++ if (olen < 2 || olen > len) {
++ break;
++ }
++ printer(arg, " <");
++ len -= olen;
++ optend = p + olen;
++ while (p < optend) {
++ GETCHAR(code, p);
++ printer(arg, " %.2x", code);
++ }
++ printer(arg, ">");
++ }
++ break;
++
++ case TERMACK:
++ case TERMREQ:
++ if (len > 0 && *p >= ' ' && *p < 0x7f) {
++ printer(arg, " ");
++ print_string((char *)p, len, printer, arg);
++ p += len;
++ len = 0;
++ }
++ break;
++ }
++
++ /* print the rest of the bytes in the packet */
++ for (; len > 0; --len) {
++ GETCHAR(code, p);
++ printer(arg, " %.2x", code);
++ }
++
++ return p - pstart;
++
++}
+--- ppp-2.4.5/pppd/mplscp.h
++++ ppp-2.4.5/pppd/mplscp.h
+@@ -0,0 +1,8 @@
++
++/* MPLSCP - Serge.Krier@advalvas.be (C) 2001 */
++
++#define PPP_MPLSCP 0x8281
++#define PPP_MPLS_UC 0x0281
++#define PPP_MPLS_MC 0x0283
++
++extern struct protent mplscp_protent;
diff --git a/user/ppp/06_all_killaddr-smarter.patch b/user/ppp/06_all_killaddr-smarter.patch
new file mode 100644
index 000000000..d86534843
--- /dev/null
+++ b/user/ppp/06_all_killaddr-smarter.patch
@@ -0,0 +1,131 @@
+--- ppp-2.4.5/pppd/options.c
++++ ppp-2.4.5/pppd/options.c
+@@ -100,6 +100,9 @@
+ char user[MAXNAMELEN]; /* Username for PAP */
+ char passwd[MAXSECRETLEN]; /* Password for PAP */
+ bool persist = 0; /* Reopen link after it goes down */
++bool killoldaddr = 0; /* If our IP is reassigned on
++ reconnect, kill active TCP
++ connections using the old IP. */
+ char our_name[MAXNAMELEN]; /* Our name for authentication purposes */
+ bool demand = 0; /* do dial-on-demand */
+ char *ipparam = NULL; /* Extra parameter for ip up/down scripts */
+@@ -231,6 +234,11 @@
+ { "demand", o_bool, &demand,
+ "Dial on demand", OPT_INITONLY | 1, &persist },
+
++ { "killoldaddr", o_bool, &killoldaddr,
++ "Kill connections from an old source address", 1},
++ { "nokilloldaddr", o_bool,&killoldaddr,
++ "Don't kill connections from an old source address" },
++
+ { "--version", o_special_noarg, (void *)showversion,
+ "Show version number" },
+ { "--help", o_special_noarg, (void *)showhelp,
+--- ppp-2.4.5/pppd/pppd.h
++++ ppp-2.4.5/pppd/pppd.h
+@@ -298,6 +298,9 @@
+ extern char remote_name[MAXNAMELEN]; /* Peer's name for authentication */
+ extern bool explicit_remote;/* remote_name specified with remotename opt */
+ extern bool demand; /* Do dial-on-demand */
++extern bool killoldaddr; /* If our IP is reassigned on
++ reconnect, kill active TCP
++ connections using the old IP. */
+ extern char *ipparam; /* Extra parameter for ip up/down scripts */
+ extern bool cryptpap; /* Others' PAP passwords are encrypted */
+ extern int idle_time_limit;/* Shut down link if idle for this long */
+--- ppp-2.4.5/pppd/sys-linux.c
++++ ppp-2.4.5/pppd/sys-linux.c
+@@ -165,6 +165,10 @@
+
+ #endif /* INET6 */
+
++#ifndef SIOCKILLADDR
++#define SIOCKILLADDR 0x8939
++#endif
++
+ /* We can get an EIO error on an ioctl if the modem has hung up */
+ #define ok_error(num) ((num)==EIO)
+
+@@ -209,6 +213,7 @@
+ static u_int32_t proxy_arp_addr; /* Addr for proxy arp entry added */
+ static char proxy_arp_dev[16]; /* Device for proxy arp entry */
+ static u_int32_t our_old_addr; /* for detecting address changes */
++static u_int32_t our_current_addr;
+ static int dynaddr_set; /* 1 if ip_dynaddr set */
+ static int looped; /* 1 if using loop */
+ static int link_mtu; /* mtu for the link (not bundle) */
+@@ -537,6 +542,27 @@
+ return -1;
+ }
+
++static void do_killaddr(u_int32_t oldaddr)
++{
++ struct ifreq ifr;
++
++ memset(&ifr,0,sizeof ifr);
++
++ SET_SA_FAMILY (ifr.ifr_addr, AF_INET);
++ SET_SA_FAMILY (ifr.ifr_dstaddr, AF_INET);
++ SET_SA_FAMILY (ifr.ifr_netmask, AF_INET);
++
++ SIN_ADDR(ifr.ifr_addr) = oldaddr;
++
++ strlcpy(ifr.ifr_name, ifname, sizeof (ifr.ifr_name));
++
++ if(ioctl(sock_fd,SIOCKILLADDR,&ifr) < 0) {
++ if (!ok_error (errno))
++ error("ioctl(SIOCKILLADDR): %m(%d)", errno);
++ return;
++ }
++}
++
+ /********************************************************************
+ *
+ * tty_disestablish_ppp - Restore the serial port to normal operation.
+@@ -2385,21 +2411,29 @@
+ }
+ }
+
+- /* set ip_dynaddr in demand mode if address changes */
+- if (demand && tune_kernel && !dynaddr_set
+- && our_old_addr && our_old_addr != our_adr) {
++ if(persist && our_old_addr && our_old_addr != our_adr) {
++
++ if(killoldaddr)
++ do_killaddr(our_old_addr);
++
++
++ /* set ip_dynaddr in persist mode if address changes */
++ if (tune_kernel && !dynaddr_set) {
+ /* set ip_dynaddr if possible */
+ char *path;
+ int fd;
+
+ path = path_to_procfs("/sys/net/ipv4/ip_dynaddr");
+ if (path != 0 && (fd = open(path, O_WRONLY)) >= 0) {
+- if (write(fd, "1", 1) != 1)
+- error("Couldn't enable dynamic IP addressing: %m");
+- close(fd);
++ if (write(fd, "1", 1) != 1)
++ error("Couldn't enable dynamic IP addressing: %m");
++ close(fd);
+ }
+ dynaddr_set = 1; /* only 1 attempt */
++ }
+ }
++
++ our_current_addr = our_adr;
+ our_old_addr = 0;
+
+ return 1;
+@@ -2455,7 +2489,8 @@
+ }
+
+ our_old_addr = our_adr;
+-
++ our_current_addr = 0;
++
+ return 1;
+ }
+
diff --git a/user/ppp/08_all_wait-children.patch b/user/ppp/08_all_wait-children.patch
new file mode 100644
index 000000000..708cf04d6
--- /dev/null
+++ b/user/ppp/08_all_wait-children.patch
@@ -0,0 +1,76 @@
+--- ppp-2.4.5/pppd/main.c
++++ ppp-2.4.5/pppd/main.c
+@@ -249,6 +249,7 @@
+ static void forget_child __P((int pid, int status));
+ static int reap_kids __P((void));
+ static void childwait_end __P((void *));
++static void wait_children __P((void));
+
+ #ifdef USE_TDB
+ static void update_db_entry __P((void));
+@@ -580,25 +581,11 @@
+ if (!persist)
+ break;
+ }
++
++ wait_children();
+ }
+
+- /* Wait for scripts to finish */
+- reap_kids();
+- if (n_children > 0) {
+- if (child_wait > 0)
+- TIMEOUT(childwait_end, NULL, child_wait);
+- if (debug) {
+- struct subprocess *chp;
+- dbglog("Waiting for %d child processes...", n_children);
+- for (chp = children; chp != NULL; chp = chp->next)
+- dbglog(" script %s, pid %d", chp->prog, chp->pid);
+- }
+- while (n_children > 0 && !childwait_done) {
+- handle_events();
+- if (kill_link && !childwait_done)
+- childwait_end(NULL);
+- }
+- }
++ wait_children();
+
+ die(status);
+ return 0;
+@@ -1794,6 +1781,36 @@
+ }
+
+ /*
++ * wait_children - wait for scripts to finish.
++ * if child_wait is 0, wait indefinitely.
++ * else, kill'em all at the end of timeout
++ */
++static void
++wait_children()
++{
++ /* Wait for scripts to finish */
++ reap_kids();
++ if (n_children > 0) {
++ childwait_done = 0;
++ if (child_wait > 0)
++ TIMEOUT(childwait_end, NULL, child_wait);
++ if (debug) {
++ struct subprocess *chp;
++ dbglog("Waiting for %d child processes...", n_children);
++ for (chp = children; chp != NULL; chp = chp->next)
++ dbglog(" script %s, pid %d", chp->prog, chp->pid);
++ }
++ while (n_children > 0 && !childwait_done) {
++ handle_events();
++ if (asked_to_quit && !childwait_done)
++ childwait_end(NULL);
++ }
++ if (child_wait > 0)
++ UNTIMEOUT(childwait_end, NULL);
++ }
++}
++
++/*
+ * childwait_end - we got fed up waiting for the child processes to
+ * exit, send them all a SIGTERM.
+ */
diff --git a/user/ppp/12_all_linkpidfile.patch b/user/ppp/12_all_linkpidfile.patch
new file mode 100644
index 000000000..9c5769c8f
--- /dev/null
+++ b/user/ppp/12_all_linkpidfile.patch
@@ -0,0 +1,93 @@
+--- ppp-2.4.5/pppd/auth.c
++++ ppp-2.4.5/pppd/auth.c
+@@ -637,7 +637,7 @@
+ * we delete its pid file.
+ */
+ if (!doing_multilink && !demand)
+- remove_pidfiles();
++ remove_pidfile(pidfilename);
+
+ /*
+ * If we may want to bring the link up again, transfer
+--- ppp-2.4.5/pppd/main.c
++++ ppp-2.4.5/pppd/main.c
+@@ -134,7 +134,7 @@
+
+ char *progname; /* Name of this program */
+ char hostname[MAXNAMELEN]; /* Our hostname */
+-static char pidfilename[MAXPATHLEN]; /* name of pid file */
++char pidfilename[MAXPATHLEN]; /* name of pid file */
+ static char linkpidfile[MAXPATHLEN]; /* name of linkname pid file */
+ char ppp_devnam[MAXPATHLEN]; /* name of PPP tty (maybe ttypx) */
+ uid_t uid; /* Our real user-id */
+@@ -245,6 +245,7 @@
+ static void toggle_debug __P((int));
+ static void open_ccp __P((int));
+ static void bad_signal __P((int));
++static void remove_pidfilenames __P((void));
+ static void holdoff_end __P((void *));
+ static void forget_child __P((int pid, int status));
+ static int reap_kids __P((void));
+@@ -835,16 +836,24 @@
+ }
+
+ /*
+- * remove_pidfile - remove our pid files
++ * remove_pidfile - remove one of the 2 pidfiles (pidfilename or linkpidfile)
+ */
+-void remove_pidfiles()
++void
++remove_pidfile(filename)
++ char* filename;
+ {
+- if (pidfilename[0] != 0 && unlink(pidfilename) < 0 && errno != ENOENT)
+- warn("unable to delete pid file %s: %m", pidfilename);
+- pidfilename[0] = 0;
+- if (linkpidfile[0] != 0 && unlink(linkpidfile) < 0 && errno != ENOENT)
+- warn("unable to delete pid file %s: %m", linkpidfile);
+- linkpidfile[0] = 0;
++ if (filename[0] != 0 && unlink(filename) < 0 && errno != ENOENT)
++ warn("unable to delete pid file %s: %m", filename);
++ filename[0] = 0;
++}
++
++/*
++ * remove_pidfiles - remove our pid files
++ */
++static void remove_pidfiles()
++{
++ remove_pidfile(pidfilename);
++ remove_pidfile(linkpidfile);
+ }
+
+ /*
+--- ppp-2.4.5/pppd/multilink.c
++++ ppp-2.4.5/pppd/multilink.c
+@@ -267,7 +267,7 @@
+ notice("Connection terminated.");
+ print_link_stats();
+ if (!demand) {
+- remove_pidfiles();
++ remove_pidfile(pidfilename);
+ script_unsetenv("IFNAME");
+ }
+
+--- ppp-2.4.5/pppd/pppd.h
++++ ppp-2.4.5/pppd/pppd.h
+@@ -214,6 +214,7 @@
+ extern int ifunit; /* Interface unit number */
+ extern char ifname[]; /* Interface name */
+ extern char hostname[]; /* Our hostname */
++extern char pidfilename[]; /* name of pid file */
+ extern u_char outpacket_buf[]; /* Buffer for outgoing packets */
+ extern int devfd; /* fd of underlying device */
+ extern int fd_ppp; /* fd for talking PPP */
+@@ -497,7 +498,7 @@
+ int ppp_send_config __P((int, int, u_int32_t, int, int));
+ int ppp_recv_config __P((int, int, u_int32_t, int, int));
+ const char *protocol_name __P((int));
+-void remove_pidfiles __P((void));
++void remove_pidfile __P((char *));
+ void lock_db __P((void));
+ void unlock_db __P((void));
+
diff --git a/user/ppp/16_all_auth-fail.patch b/user/ppp/16_all_auth-fail.patch
new file mode 100644
index 000000000..8ae238035
--- /dev/null
+++ b/user/ppp/16_all_auth-fail.patch
@@ -0,0 +1,138 @@
+--- ppp-2.4.5/pppd/auth.c
++++ ppp-2.4.5/pppd/auth.c
+@@ -259,7 +259,7 @@
+ struct wordlist **, struct wordlist **,
+ char *, int));
+ static void free_wordlist __P((struct wordlist *));
+-static void auth_script __P((char *));
++static void auth_script __P((char *, int));
+ static void auth_script_done __P((void *));
+ static void set_allowed_addrs __P((int, struct wordlist *, struct wordlist *));
+ static int some_ip_ok __P((struct wordlist *));
+@@ -690,7 +690,7 @@
+ if (auth_script_state == s_up && auth_script_pid == 0) {
+ update_link_stats(unit);
+ auth_script_state = s_down;
+- auth_script(_PATH_AUTHDOWN);
++ auth_script(_PATH_AUTHDOWN, 0);
+ }
+ }
+ if (!doing_multilink) {
+@@ -822,7 +822,7 @@
+ auth_state = s_up;
+ if (auth_script_state == s_down && auth_script_pid == 0) {
+ auth_script_state = s_up;
+- auth_script(_PATH_AUTHUP);
++ auth_script(_PATH_AUTHUP, 0);
+ }
+ }
+
+@@ -923,6 +923,7 @@
+ * Authentication failure: take the link down
+ */
+ status = EXIT_PEER_AUTH_FAILED;
++ auth_script(_PATH_AUTHFAIL, 1);
+ lcp_close(unit, "Authentication failed");
+ }
+
+@@ -1001,6 +1002,7 @@
+ * authentication secrets.
+ */
+ status = EXIT_AUTH_TOPEER_FAILED;
++ auth_script(_PATH_AUTHFAIL, 1);
+ lcp_close(unit, "Failed to authenticate ourselves to peer");
+ }
+
+@@ -1233,6 +1235,8 @@
+ if (user[0] == 0 && !explicit_user)
+ strlcpy(user, our_name, sizeof(user));
+
++ script_setenv("LOCALNAME", user, 0);
++
+ /*
+ * If we have a default route, require the peer to authenticate
+ * unless the noauth option was given or the real user is root.
+@@ -2314,13 +2318,13 @@
+ case s_up:
+ if (auth_state == s_down) {
+ auth_script_state = s_down;
+- auth_script(_PATH_AUTHDOWN);
++ auth_script(_PATH_AUTHDOWN, 0);
+ }
+ break;
+ case s_down:
+ if (auth_state == s_up) {
+ auth_script_state = s_up;
+- auth_script(_PATH_AUTHUP);
++ auth_script(_PATH_AUTHUP, 0);
+ }
+ break;
+ }
+@@ -2331,8 +2335,9 @@
+ * interface-name peer-name real-user tty speed
+ */
+ static void
+-auth_script(script)
++auth_script(script, wait)
+ char *script;
++ int wait;
+ {
+ char strspeed[32];
+ struct passwd *pw;
+@@ -2356,5 +2361,8 @@
+ argv[5] = strspeed;
+ argv[6] = NULL;
+
+- auth_script_pid = run_program(script, argv, 0, auth_script_done, NULL, 0);
++ if (wait)
++ run_program(script, argv, 0, NULL, NULL, 1);
++ else
++ auth_script_pid = run_program(script, argv, 0, auth_script_done, NULL, 0);
+ }
+--- ppp-2.4.5/pppd/pathnames.h
++++ ppp-2.4.5/pppd/pathnames.h
+@@ -27,6 +27,7 @@
+ #define _PATH_IPPREUP _ROOT_PATH "/etc/ppp/ip-pre-up"
+ #define _PATH_AUTHUP _ROOT_PATH "/etc/ppp/auth-up"
+ #define _PATH_AUTHDOWN _ROOT_PATH "/etc/ppp/auth-down"
++#define _PATH_AUTHFAIL _ROOT_PATH "/etc/ppp/auth-fail"
+ #define _PATH_TTYOPT _ROOT_PATH "/etc/ppp/options."
+ #define _PATH_CONNERRS _ROOT_PATH "/etc/ppp/connect-errors"
+ #define _PATH_PEERFILES _ROOT_PATH "/etc/ppp/peers/"
+--- ppp-2.4.5/pppd/pppd.8
++++ ppp-2.4.5/pppd/pppd.8
+@@ -1553,8 +1553,8 @@
+ Pppd invokes scripts at various stages in its processing which can be
+ used to perform site-specific ancillary processing. These scripts are
+ usually shell scripts, but could be executable code files instead.
+-Pppd does not wait for the scripts to finish (except for the ip-pre-up
+-script). The scripts are
++Pppd does not wait for the scripts to finish (except for the ip-pre-up,
++and auth-fail scripts). The scripts are
+ executed as root (with the real and effective user-id set to 0), so
+ that they can do things such as update routing tables or run
+ privileged daemons. Be careful that the contents of these scripts do
+@@ -1582,6 +1582,11 @@
+ The authenticated name of the peer. This is only set if the peer
+ authenticates itself.
+ .TP
++.B LOCALNAME
++The username passed to the user option of the pppd daemon. This is
++handy to identify which account was used for authentication purposes
++when multiple accounts are available.
++.TP
+ .B SPEED
+ The baud rate of the tty device.
+ .TP
+@@ -1634,6 +1639,11 @@
+ /etc/ppp/auth\-up was previously executed. It is executed in the same
+ manner with the same parameters as /etc/ppp/auth\-up.
+ .TP
++.B /etc/ppp/auth\-fail
++A program or script which is executed should authentication fail. pppd
++waits for this script to finish. It is executed in the same manner, with
++the same parameters as /etc/ppp/auth\-up.
++.TP
+ .B /etc/ppp/ip\-pre\-up
+ A program or script which is executed just before the ppp network
+ interface is brought up. It is executed with the same parameters as
diff --git a/user/ppp/19_all_radius_pid_overflow.patch b/user/ppp/19_all_radius_pid_overflow.patch
new file mode 100644
index 000000000..b5078bdb9
--- /dev/null
+++ b/user/ppp/19_all_radius_pid_overflow.patch
@@ -0,0 +1,14 @@
+https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=782450
+https://bugs.gentoo.org/546554
+
+--- ppp-2.4.7/pppd/plugins/radius/util.c
++++ ppp-2.4.7/pppd/plugins/radius/util.c
+@@ -77,7 +77,7 @@
+ static unsigned short int cnt = 0;
+ sprintf (buf, "%08lX%04X%02hX",
+ (unsigned long int) time (NULL),
+- (unsigned int) getpid (),
++ (unsigned int) getpid () % 65535,
+ cnt & 0xFF);
+ cnt++;
+ return buf;
diff --git a/user/ppp/20_all_dev-ppp.patch b/user/ppp/20_all_dev-ppp.patch
new file mode 100644
index 000000000..eff3e37f0
--- /dev/null
+++ b/user/ppp/20_all_dev-ppp.patch
@@ -0,0 +1,20 @@
+--- ppp-2.4.6/pppd/sys-linux.c
++++ ppp-2.4.6/pppd/sys-linux.c
+@@ -2031,6 +2031,17 @@
+ kernel_version = KVERSION(osmaj, osmin, ospatch);
+
+ fd = open("/dev/ppp", O_RDWR);
++ if (fd < 0) {
++ /* try making it and see if that helps. */
++ if (errno == ENOENT && mknod("/dev/ppp", S_IFCHR | S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP,
++ makedev(108, 0)) >= 0) {
++ fd = open("/dev/ppp", O_RDWR);
++ if (fd >= 0)
++ info("Created /dev/ppp device node");
++ else
++ unlink("/dev/ppp"); /* didn't work, undo the mknod */
++ }
++ }
+ if (fd >= 0) {
+ new_style_driver = 1;
+
diff --git a/user/ppp/24_all_passwordfd-read-early.patch b/user/ppp/24_all_passwordfd-read-early.patch
new file mode 100644
index 000000000..f549540dc
--- /dev/null
+++ b/user/ppp/24_all_passwordfd-read-early.patch
@@ -0,0 +1,84 @@
+--- ppp-2.4.5/pppd/plugins/passwordfd.c
++++ ppp-2.4.5/pppd/plugins/passwordfd.c
+@@ -16,11 +16,11 @@
+
+ char pppd_version[] = VERSION;
+
+-static int passwdfd = -1;
+ static char save_passwd[MAXSECRETLEN];
+
++static int readpassword __P((char **));
+ static option_t options[] = {
+- { "passwordfd", o_int, &passwdfd,
++ { "passwordfd", o_special, (void *)readpassword,
+ "Receive password on this file descriptor" },
+ { NULL }
+ };
+@@ -30,43 +30,39 @@
+ return 1;
+ }
+
+-static int pwfd_passwd (char *user, char *passwd)
++static int readpassword(char **argv)
+ {
+- int readgood, red;
+-
+- if (passwdfd == -1)
+- return -1;
+-
+- if (passwd == NULL)
+- return 1;
+-
+- if (passwdfd == -2) {
+- strcpy (passwd, save_passwd);
+- return 1;
++ char *arg = *argv;
++ int passwdfd = -1;
++ int chunk, len;
++
++ if (sscanf(arg, "%d", &passwdfd) != 1 || passwdfd < 0)
++ {
++ error ("\"%s\" is not a valid file descriptor number", arg);
++ return 0;
+ }
+
+- readgood = 0;
++ len = 0;
+ do {
+- red = read (passwdfd, passwd + readgood, MAXSECRETLEN - 1 - readgood);
+- if (red == 0)
+- break;
+- if (red < 0) {
+- error ("Can't read secret from fd\n");
+- readgood = -1;
++ chunk = read (passwdfd, save_passwd + len, MAXSECRETLEN - 1 - len);
++ if (chunk == 0)
+ break;
++ if (chunk < 0) {
++ error ("Can't read secret from fd %d", passwdfd);
++ return 0;
+ }
+- readgood += red;
+- } while (readgood < MAXSECRETLEN - 1);
+-
++ len += chunk;
++ } while (len < MAXSECRETLEN - 1);
++ save_passwd[len] = 0;
+ close (passwdfd);
+
+- if (readgood < 0)
+- return 0;
+-
+- passwd[readgood] = 0;
+- strcpy (save_passwd, passwd);
+- passwdfd = -2;
++ return 1;
++}
+
++static int pwfd_passwd (char *user, char *passwd)
++{
++ if (passwd != NULL)
++ strcpy (passwd, save_passwd);
+ return 1;
+ }
+
diff --git a/user/ppp/26_all_pppd-usepeerwins.patch b/user/ppp/26_all_pppd-usepeerwins.patch
new file mode 100644
index 000000000..d66fbe0b1
--- /dev/null
+++ b/user/ppp/26_all_pppd-usepeerwins.patch
@@ -0,0 +1,256 @@
+--- ppp-2.4.6/pppd/ipcp.c
++++ ppp-2.4.6/pppd/ipcp.c
+@@ -91,6 +91,7 @@
+ static int default_route_set[NUM_PPP]; /* Have set up a default route */
+ static int proxy_arp_set[NUM_PPP]; /* Have created proxy arp entry */
+ static bool usepeerdns; /* Ask peer for DNS addrs */
++static bool usepeerwins; /* Ask peer for WINS addrs */
+ static int ipcp_is_up; /* have called np_up() */
+ static int ipcp_is_open; /* haven't called np_finished() */
+ static bool ask_for_local; /* request our address from peer */
+@@ -210,6 +211,9 @@
+ { "usepeerdns", o_bool, &usepeerdns,
+ "Ask peer for DNS address(es)", 1 },
+
++ { "usepeerwins", o_bool, &usepeerwins,
++ "Ask peer for WINS address(es)", 1 },
++
+ { "netmask", o_special, (void *)setnetmask,
+ "set netmask", OPT_PRIO | OPT_A2STRVAL | OPT_STATIC, netmask_str },
+
+@@ -703,6 +707,8 @@
+ wo->accept_remote = 1;
+ wo->req_dns1 = usepeerdns; /* Request DNS addresses from the peer */
+ wo->req_dns2 = usepeerdns;
++ wo->req_wins1 = usepeerwins; /* Request WINS addresses from the peer */
++ wo->req_wins2 = usepeerwins;
+ *go = *wo;
+ if (!ask_for_local)
+ go->ouraddr = 0;
+@@ -755,8 +761,8 @@
+ LENCIADDR(go->neg_addr) +
+ LENCIDNS(go->req_dns1) +
+ LENCIDNS(go->req_dns2) +
+- LENCIWINS(go->winsaddr[0]) +
+- LENCIWINS(go->winsaddr[1])) ;
++ LENCIWINS(go->req_wins1) +
++ LENCIWINS(go->req_wins2)) ;
+ }
+
+
+@@ -830,8 +836,8 @@
+ neg = 0; \
+ }
+
+-#define ADDCIWINS(opt, addr) \
+- if (addr) { \
++#define ADDCIWINS(opt, neg, addr) \
++ if (neg) { \
+ if (len >= CILEN_ADDR) { \
+ u_int32_t l; \
+ PUTCHAR(opt, ucp); \
+@@ -840,7 +846,7 @@
+ PUTLONG(l, ucp); \
+ len -= CILEN_ADDR; \
+ } else \
+- addr = 0; \
++ neg = 0; \
+ }
+
+ ADDCIADDRS(CI_ADDRS, !go->neg_addr && go->old_addrs, go->ouraddr,
+@@ -855,9 +861,9 @@
+
+ ADDCIDNS(CI_MS_DNS2, go->req_dns2, go->dnsaddr[1]);
+
+- ADDCIWINS(CI_MS_WINS1, go->winsaddr[0]);
++ ADDCIWINS(CI_MS_WINS1, go->req_wins1, go->winsaddr[0]);
+
+- ADDCIWINS(CI_MS_WINS2, go->winsaddr[1]);
++ ADDCIWINS(CI_MS_WINS2, go->req_wins2, go->winsaddr[1]);
+
+ *lenp -= len;
+ }
+@@ -962,8 +968,8 @@
+ goto bad; \
+ }
+
+-#define ACKCIWINS(opt, addr) \
+- if (addr) { \
++#define ACKCIWINS(opt, neg, addr) \
++ if (neg) { \
+ u_int32_t l; \
+ if ((len -= CILEN_ADDR) < 0) \
+ goto bad; \
+@@ -989,9 +995,9 @@
+
+ ACKCIDNS(CI_MS_DNS2, go->req_dns2, go->dnsaddr[1]);
+
+- ACKCIWINS(CI_MS_WINS1, go->winsaddr[0]);
++ ACKCIWINS(CI_MS_WINS1, go->req_wins1, go->winsaddr[0]);
+
+- ACKCIWINS(CI_MS_WINS2, go->winsaddr[1]);
++ ACKCIWINS(CI_MS_WINS2, go->req_wins2, go->winsaddr[1]);
+
+ /*
+ * If there are any remaining CIs, then this packet is bad.
+@@ -1026,7 +1032,7 @@
+ u_char cimaxslotindex, cicflag;
+ u_char citype, cilen, *next;
+ u_short cishort;
+- u_int32_t ciaddr1, ciaddr2, l, cidnsaddr;
++ u_int32_t ciaddr1, ciaddr2, l, cidnsaddr, ciwinsaddr;
+ ipcp_options no; /* options we've seen Naks for */
+ ipcp_options try; /* options to request next time */
+
+@@ -1091,6 +1097,19 @@
+ code \
+ }
+
++#define NAKCIWINS(opt, neg, code) \
++ if (go->neg && \
++ ((cilen = p[1]) == CILEN_ADDR) && \
++ len >= cilen && \
++ p[0] == opt) { \
++ len -= cilen; \
++ INCPTR(2, p); \
++ GETLONG(l, p); \
++ ciwinsaddr = htonl(l); \
++ no.neg = 1; \
++ code \
++ }
++
+ /*
+ * Accept the peer's idea of {our,his} address, if different
+ * from our idea, only if the accept_{local,remote} flag is set.
+@@ -1167,6 +1186,22 @@
+ }
+ );
+
++ NAKCIWINS(CI_MS_WINS1, req_wins1,
++ if (treat_as_reject) {
++ try.req_wins1 = 0;
++ } else {
++ try.winsaddr[0] = ciwinsaddr;
++ }
++ );
++
++ NAKCIWINS(CI_MS_WINS2, req_wins2,
++ if (treat_as_reject) {
++ try.req_wins2 = 0;
++ } else {
++ try.winsaddr[1] = ciwinsaddr;
++ }
++ );
++
+ /*
+ * There may be remaining CIs, if the peer is requesting negotiation
+ * on an option that we didn't include in our request packet.
+@@ -1259,7 +1294,6 @@
+ return 0;
+ }
+
+-
+ /*
+ * ipcp_rejci - Reject some of our CIs.
+ * Callback from fsm_rconfnakrej.
+@@ -1357,8 +1391,8 @@
+ try.neg = 0; \
+ }
+
+-#define REJCIWINS(opt, addr) \
+- if (addr && \
++#define REJCIWINS(opt, neg, addr) \
++ if (go->neg && \
+ ((cilen = p[1]) == CILEN_ADDR) && \
+ len >= cilen && \
+ p[0] == opt) { \
+@@ -1370,7 +1404,7 @@
+ /* Check rejected value. */ \
+ if (cilong != addr) \
+ goto bad; \
+- try.winsaddr[opt == CI_MS_WINS2] = 0; \
++ try.neg = 0; \
+ }
+
+ REJCIADDRS(CI_ADDRS, !go->neg_addr && go->old_addrs,
+@@ -1385,9 +1419,9 @@
+
+ REJCIDNS(CI_MS_DNS2, req_dns2, go->dnsaddr[1]);
+
+- REJCIWINS(CI_MS_WINS1, go->winsaddr[0]);
++ REJCIWINS(CI_MS_WINS1, req_wins1, go->winsaddr[0]);
+
+- REJCIWINS(CI_MS_WINS2, go->winsaddr[1]);
++ REJCIWINS(CI_MS_WINS2, req_wins2, go->winsaddr[1]);
+
+ /*
+ * If there are any remaining CIs, then this packet is bad.
+@@ -1581,7 +1615,7 @@
+ /* Microsoft primary or secondary WINS request */
+ d = citype == CI_MS_WINS2;
+
+- /* If we do not have a DNS address then we cannot send it */
++ /* If we do not have a WINS address then we cannot send it */
+ if (ao->winsaddr[d] == 0 ||
+ cilen != CILEN_ADDR) { /* Check CI length */
+ orc = CONFREJ; /* Reject CI */
+@@ -1830,6 +1864,13 @@
+ create_resolv(go->dnsaddr[0], go->dnsaddr[1]);
+ }
+
++ if (go->winsaddr[0])
++ script_setenv("WINS1", ip_ntoa(go->winsaddr[0]), 0);
++ if (go->winsaddr[1])
++ script_setenv("WINS2", ip_ntoa(go->winsaddr[1]), 0);
++ if (usepeerwins && (go->winsaddr[0] || go->winsaddr[1]))
++ script_setenv("USEPEERWINS", "1", 0);
++
+ /*
+ * Check that the peer is allowed to use the IP address it wants.
+ */
+--- ppp-2.4.6/pppd/ipcp.h
++++ ppp-2.4.6/pppd/ipcp.h
+@@ -77,6 +77,8 @@
+ bool accept_remote; /* accept peer's value for hisaddr */
+ bool req_dns1; /* Ask peer to send primary DNS address? */
+ bool req_dns2; /* Ask peer to send secondary DNS address? */
++ bool req_wins1; /* Ask peer to send primary WINS address? */
++ bool req_wins2; /* Ask peer to send secondary WINS address? */
+ int vj_protocol; /* protocol value to use in VJ option */
+ int maxslotindex; /* values for RFC1332 VJ compression neg. */
+ bool cflag;
+--- ppp-2.4.6/pppd/pppd.8
++++ ppp-2.4.6/pppd/pppd.8
+@@ -1102,6 +1102,16 @@
+ /etc/ppp/resolv.conf file containing one or two nameserver lines with
+ the address(es) supplied by the peer.
+ .TP
++.B usepeerwins
++Ask the peer for up to 2 WINS server addresses. The addresses supplied
++by the peer (if any) are passed to the /etc/ppp/ip\-up script in the
++environment variables WINS1 and WINS2, and the environment variable
++USEPEERWINS will be set to 1.
++.LP
++Please note that some modems (like the Huawei E220) requires this option in
++order to avoid a race condition that results in the incorrect DNS servers
++being assigned.
++.TP
+ .B user \fIname
+ Sets the name used for authenticating the local system to the peer to
+ \fIname\fR.
+@@ -1650,6 +1660,15 @@
+ If the peer supplies DNS server addresses, this variable is set to the
+ second DNS server address supplied (whether or not the usepeerdns
+ option was given).
++.TP
++.B WINS1
++If the peer supplies WINS server addresses, this variable is set to the
++first WINS server address supplied.
++.TP
++.B WINS2
++If the peer supplies WINS server addresses, this variable is set to the
++second WINS server address supplied.
++.P
+ .P
+ Pppd invokes the following scripts, if they exist. It is not an error
+ if they don't exist.
diff --git a/user/ppp/28_all_connect-errors.patch b/user/ppp/28_all_connect-errors.patch
new file mode 100644
index 000000000..b87acef5d
--- /dev/null
+++ b/user/ppp/28_all_connect-errors.patch
@@ -0,0 +1,11 @@
+--- ppp-2.4.5/pppd/pathnames.h
++++ ppp-2.4.5/pppd/pathnames.h
+@@ -29,7 +29,7 @@
+ #define _PATH_AUTHDOWN _ROOT_PATH "/etc/ppp/auth-down"
+ #define _PATH_AUTHFAIL _ROOT_PATH "/etc/ppp/auth-fail"
+ #define _PATH_TTYOPT _ROOT_PATH "/etc/ppp/options."
+-#define _PATH_CONNERRS _ROOT_PATH "/etc/ppp/connect-errors"
++#define _PATH_CONNERRS _ROOT_PATH "/var/log/ppp-connect-errors"
+ #define _PATH_PEERFILES _ROOT_PATH "/etc/ppp/peers/"
+ #define _PATH_RESOLV _ROOT_PATH "/etc/ppp/resolv.conf"
+
diff --git a/user/ppp/32_all_pado-timeout.patch b/user/ppp/32_all_pado-timeout.patch
new file mode 100644
index 000000000..e17658456
--- /dev/null
+++ b/user/ppp/32_all_pado-timeout.patch
@@ -0,0 +1,220 @@
+--- ppp-2.4.6/pppd/plugins/rp-pppoe/discovery.c
++++ ppp-2.4.6/pppd/plugins/rp-pppoe/discovery.c
+@@ -39,6 +39,7 @@
+ #endif
+
+ #include <signal.h>
++#include <time.h>
+
+ /* Calculate time remaining until *exp, return 0 if now >= *exp */
+ static int time_left(struct timeval *diff, struct timeval *exp)
+@@ -251,6 +252,80 @@
+ }
+
+ /***********************************************************************
++*%FUNCTION: recvPacketForMe
++*%ARGUMENTS:
++* packet -- output parameter
++* len -- output parameter length
++* conn -- connection
++* start -- operation startup timestamp
++* timeout -- how long to wait (in seconds)
++*%RETURNS:
++* -1: error
++* 0: timed out
++* 1: packet received
++*%DESCRIPTION:
++* receive and filter junk packets
++***********************************************************************/
++
++static int
++recvPacketForMe(PPPoEPacket *packet, int *len, PPPoEConnection *conn, time_t start, int timeout)
++{
++ fd_set readable;
++ int r;
++ struct timeval tv;
++ time_t now;
++ int time_remain;
++
++ do {
++ time(&now);
++ time_remain = timeout - (int)difftime(now, start);
++ if (time_remain <= 0) return 0; /* Timed out */
++
++ if (BPF_BUFFER_IS_EMPTY) {
++ tv.tv_sec = time_remain;
++ tv.tv_usec = 0;
++
++ FD_ZERO(&readable);
++ FD_SET(conn->discoverySocket, &readable);
++
++ r = select(conn->discoverySocket+1, &readable, NULL, NULL, &tv);
++ if (r < 0)
++ {
++ if (errno == EINTR)
++ {
++ continue; /* interrupted, so retry */
++ }else
++ {
++ error("pppoe: recvPacketForMe: select: %m");
++ return -1;
++ }
++ }
++
++ if (r == 0) return 0; /* Timed out */
++ }
++
++ /* Get the packet */
++ receivePacket(conn->discoverySocket, packet, len);
++
++ /* Check length */
++ if (ntohs(packet->length) + HDR_SIZE > *len) {
++ error("Bogus PPPoE length field (%u)",
++ (unsigned int) ntohs(packet->length));
++ continue;
++ }
++
++#ifdef USE_BPF
++ /* If it's not a Discovery packet, loop again */
++ if (etherType(&packet) != Eth_PPPOE_Discovery) continue;
++#endif
++ /* If it's not for us, loop again */
++ }while ( ! packetIsForMe(conn, packet));
++
++ return 1;
++}
++
++
++/***********************************************************************
+ *%FUNCTION: sendPADI
+ *%ARGUMENTS:
+ * conn -- PPPoEConnection structure
+@@ -344,13 +419,12 @@
+ void
+ waitForPADO(PPPoEConnection *conn, int timeout)
+ {
+- fd_set readable;
+ int r;
+- struct timeval tv;
+ struct timeval expire_at;
+
+ PPPoEPacket packet;
+ int len;
++ time_t start;
+
+ struct PacketCriteria pc;
+ pc.conn = conn;
+@@ -367,43 +441,10 @@
+ }
+ expire_at.tv_sec += timeout;
+
++ time(&start);
+ do {
+- if (BPF_BUFFER_IS_EMPTY) {
+- if (!time_left(&tv, &expire_at))
+- return; /* Timed out */
+-
+- FD_ZERO(&readable);
+- FD_SET(conn->discoverySocket, &readable);
+-
+- while(1) {
+- r = select(conn->discoverySocket+1, &readable, NULL, NULL, &tv);
+- if (r >= 0 || errno != EINTR) break;
+- }
+- if (r < 0) {
+- error("select (waitForPADO): %m");
+- return;
+- }
+- if (r == 0)
+- return; /* Timed out */
+- }
+-
+- /* Get the packet */
+- receivePacket(conn->discoverySocket, &packet, &len);
+-
+- /* Check length */
+- if (ntohs(packet.length) + HDR_SIZE > len) {
+- error("Bogus PPPoE length field (%u)",
+- (unsigned int) ntohs(packet.length));
+- continue;
+- }
+-
+-#ifdef USE_BPF
+- /* If it's not a Discovery packet, loop again */
+- if (etherType(&packet) != Eth_PPPOE_Discovery) continue;
+-#endif
+-
+- /* If it's not for us, loop again */
+- if (!packetIsForMe(conn, &packet)) continue;
++ r = recvPacketForMe(&packet, &len, conn, start, timeout);
++ if (r<=0) return; /* Timed out or error */
+
+ if (packet.code == CODE_PADO) {
+ if (NOT_UNICAST(packet.ethHdr.h_source)) {
+@@ -537,13 +578,12 @@
+ static void
+ waitForPADS(PPPoEConnection *conn, int timeout)
+ {
+- fd_set readable;
+ int r;
+- struct timeval tv;
+ struct timeval expire_at;
+
+ PPPoEPacket packet;
+ int len;
++ time_t start;
+
+ if (gettimeofday(&expire_at, NULL) < 0) {
+ error("gettimeofday (waitForPADS): %m");
+@@ -551,48 +591,15 @@
+ }
+ expire_at.tv_sec += timeout;
+
++ time(&start);
+ conn->error = 0;
+ do {
+- if (BPF_BUFFER_IS_EMPTY) {
+- if (!time_left(&tv, &expire_at))
+- return; /* Timed out */
+-
+- FD_ZERO(&readable);
+- FD_SET(conn->discoverySocket, &readable);
+-
+- while(1) {
+- r = select(conn->discoverySocket+1, &readable, NULL, NULL, &tv);
+- if (r >= 0 || errno != EINTR) break;
+- }
+- if (r < 0) {
+- error("select (waitForPADS): %m");
+- return;
+- }
+- if (r == 0)
+- return; /* Timed out */
+- }
+-
+- /* Get the packet */
+- receivePacket(conn->discoverySocket, &packet, &len);
+-
+- /* Check length */
+- if (ntohs(packet.length) + HDR_SIZE > len) {
+- error("Bogus PPPoE length field (%u)",
+- (unsigned int) ntohs(packet.length));
+- continue;
+- }
+-
+-#ifdef USE_BPF
+- /* If it's not a Discovery packet, loop again */
+- if (etherType(&packet) != Eth_PPPOE_Discovery) continue;
+-#endif
++ r = recvPacketForMe(&packet, &len, conn, start, timeout);
++ if (r<=0) return; /* Timed out or error */
+
+ /* If it's not from the AC, it's not for me */
+ if (memcmp(packet.ethHdr.h_source, conn->peerEth, ETH_ALEN)) continue;
+
+- /* If it's not for us, loop again */
+- if (!packetIsForMe(conn, &packet)) continue;
+-
+ /* Is it PADS? */
+ if (packet.code == CODE_PADS) {
+ /* Parse for goodies */
diff --git a/user/ppp/34_all_lcp-echo-adaptive.patch b/user/ppp/34_all_lcp-echo-adaptive.patch
new file mode 100644
index 000000000..6faf19a27
--- /dev/null
+++ b/user/ppp/34_all_lcp-echo-adaptive.patch
@@ -0,0 +1,56 @@
+--- ppp-2.4.5/pppd/lcp.c
++++ ppp-2.4.5/pppd/lcp.c
+@@ -73,6 +73,7 @@
+ */
+ int lcp_echo_interval = 0; /* Interval between LCP echo-requests */
+ int lcp_echo_fails = 0; /* Tolerance to unanswered echo-requests */
++bool lcp_echo_adaptive = 0; /* request echo only if the link was idle */
+ bool lax_recv = 0; /* accept control chars in asyncmap */
+ bool noendpoint = 0; /* don't send/accept endpoint discriminator */
+
+@@ -151,6 +152,8 @@
+ OPT_PRIO },
+ { "lcp-echo-interval", o_int, &lcp_echo_interval,
+ "Set time in seconds between LCP echo requests", OPT_PRIO },
++ { "lcp-echo-adaptive", o_bool, &lcp_echo_adaptive,
++ "Suppress LCP echo requests if traffic was received", 1 },
+ { "lcp-restart", o_int, &lcp_fsm[0].timeouttime,
+ "Set time in seconds between LCP retransmissions", OPT_PRIO },
+ { "lcp-max-terminate", o_int, &lcp_fsm[0].maxtermtransmits,
+@@ -2322,6 +2325,22 @@
+ }
+
+ /*
++ * If adaptive echos have been enabled, only send the echo request if
++ * no traffic was received since the last one.
++ */
++ if (lcp_echo_adaptive) {
++ static unsigned int last_pkts_in = 0;
++
++ update_link_stats(f->unit);
++ link_stats_valid = 0;
++
++ if (link_stats.pkts_in != last_pkts_in) {
++ last_pkts_in = link_stats.pkts_in;
++ return;
++ }
++ }
++
++ /*
+ * Make and send the echo request frame.
+ */
+ if (f->state == OPENED) {
+--- ppp-2.4.5/pppd/pppd.8
++++ ppp-2.4.5/pppd/pppd.8
+@@ -549,6 +549,11 @@
+ dynamic IP address option (i.e. set /proc/sys/net/ipv4/ip_dynaddr to
+ 1) in demand mode if the local address changes.
+ .TP
++.B lcp\-echo\-adaptive
++If this option is used with the \fIlcp\-echo\-failure\fR option then
++pppd will send LCP echo\-request frames only if no traffic was received
++from the peer since the last echo\-request was sent.
++.TP
+ .B lcp\-echo\-failure \fIn
+ If this option is given, pppd will presume the peer to be dead
+ if \fIn\fR LCP echo\-requests are sent without receiving a valid LCP
diff --git a/user/ppp/80_all_eaptls-mppe-1.101a.patch b/user/ppp/80_all_eaptls-mppe-1.101a.patch
new file mode 100644
index 000000000..f22b63a86
--- /dev/null
+++ b/user/ppp/80_all_eaptls-mppe-1.101a.patch
@@ -0,0 +1,3233 @@
+diff -Naur ppp-2.4.7/README.eap-tls ppp-2.4.7-eaptls-mppe-1.101b/README.eap-tls
+--- ppp-2.4.7/README.eap-tls 1970-01-01 01:00:00.000000000 +0100
++++ ppp-2.4.7-eaptls-mppe-1.101b/README.eap-tls 2018-06-02 01:42:04.021165440 +0200
+@@ -0,0 +1,286 @@
++EAP-TLS authentication support for PPP
++======================================
++
++1. Intro
++
++ The Extensible Authentication Protocol (EAP; RFC 3748) is a
++ security protocol that can be used with PPP. It provides a means
++ to plug in multiple optional authentication methods.
++
++ Transport Level Security (TLS; RFC 2246) provides for mutual
++ authentication, integrity-protected ciphersuite negotiation and
++ key exchange between two endpoints. It also provides for optional
++ MPPE encryption.
++
++ EAP-TLS (RFC 2716) incapsulates the TLS messages in EAP packets,
++ allowing TLS mutual authentication to be used as a generic EAP
++ mechanism. It also provides optional encryption using the MPPE
++ protocol.
++
++ This patch provide EAP-TLS support to pppd.
++ This authentication method can be used in both client or server
++ mode.
++
++2. Building
++
++ To build pppd with EAP-TLS support, OpenSSL (http://www.openssl.org)
++ is required. Any version from 0.9.7 should work.
++
++ Configure, compile, and install as usual.
++
++3. Configuration
++
++ On the client side there are two ways to configure EAP-TLS:
++
++ 1. supply the appropriate 'ca', 'cert' and 'key' command-line parameters
++
++ 2. edit the /etc/ppp/eaptls-client file.
++ Insert a line for each system with which you use EAP-TLS.
++ The line is composed of this fields separated by tab:
++
++ - Client name
++ The name used by the client for authentication, can be *
++ - Server name
++ The name of the server, can be *
++ - Client certificate file
++ The file containing the certificate chain for the
++ client in PEM format
++ - Server certificate file
++ If you want to specify the certificate that the
++ server is allowed to use, put the certificate file name.
++ Else put a dash '-'.
++ - CA certificate file
++ The file containing the trusted CA certificates in PEM
++ format.
++ - Client private key file
++ The file containing the client private key in PEM format.
++
++
++ On the server side edit the /etc/ppp/eaptls-server file.
++ Insert a line for each system with which you use EAP-TLS.
++ The line is composed of this fields separated by tab:
++
++ - Client name
++ The name used by the client for authentication, can be *
++ - Server name
++ The name of the server, can be *
++ - Client certificate file
++ If you want to specify the certificate that the
++ client is allowed to use, put the certificate file name.
++ Else put a dash '-'.
++ - Server certificate file
++ The file containing the certificate chain for the
++ server in PEM format
++ - CA certificate file
++ The file containing the trusted CA certificates in PEM format.
++ - Client private key file
++ The file containing the server private key in PEM format.
++ - addresses
++ A list of IP addresses the client is allowed to use.
++
++
++ OpenSSL engine support is included starting with v0.95 of this patch.
++ Currently the only engine tested is the 'pkcs11' engine (hardware token
++ support). To use the 'pksc11' engine:
++ - Use a special private key fileiname in the /etc/ppp/eaptls-client file:
++ <engine>:<identifier>
++ e.g.
++ pkcs11:123456
++
++ - The certificate can also be loaded from the 'pkcs11' engine using
++ a special client certificate filename in the /etc/ppp/eaptls-client file:
++ <engine>:<identifier>
++ e.g.
++ pkcs11:123456
++
++ - Create an /etc/ppp/openssl.cnf file to load the right OpenSSL engine prior
++ to starting 'pppd'. A sample openssl.cnf file is
++
++ openssl_conf = openssl_def
++
++ [ openssl_def ]
++ engines = engine_section
++
++ [ engine_section ]
++ pkcs11 = pkcs11_section
++
++ [ pkcs11_section ]
++ engine_id = pkcs11
++ dynamic_path = /usr/lib64/openssl/engines/engine_pkcs11.so
++ MODULE_PATH = /usr/lib64/libeTPkcs11.so
++ init = 0
++
++ - There are two ways to specify a password/PIN for the PKCS11 engine:
++ - inside the openssl.cnf file using
++ PIN = your-secret-pin
++ Note The keyword 'PIN' is case sensitive!
++ - Using the 'password' in the ppp options file.
++ From v0.97 of the eap-tls patch the password can also be supplied
++ using the appropriate 'eaptls_passwd_hook' (see plugins/passprompt.c
++ for an example).
++
++
++4. Options
++
++ These pppd options are available:
++
++ ca <ca-file>
++ Use the CA public certificate found in <ca-file> in PEM format
++ cert <cert-file>
++ Use the client public certificate found in <cert-file> in PEM format
++ or in engine:engine_id format
++ key <key-file>
++ Use the client private key found in <key-file> in PEM format
++ or in engine:engine_id format
++ crl <crl-file>
++ Use the Certificate Revocation List (CRL) file <crl-file> in PEM format.
++ crl-dir <dir>
++ Use CRL files from directory <dir>. It contains CRL files in PEM
++ format and each file contains a CRL. The files are looked up
++ by the issuer name hash value. Use the c_rehash utility
++ to create necessary links.
++ need-peer-eap
++ If the peer doesn't ask us to authenticate or doesn't use eap
++ to authenticate us, disconnect.
++
++ Note:
++ password-encrypted certificates can be used as of v0.94 of this
++ patch. The password for the eap-tls.key file is specified using
++ the regular
++ password ....
++ statement in the ppp options file, or by using the appropriate
++ plugin which supplies a 'eaptls_passwd_hook' routine.
++
++5. Connecting
++
++ If you're setting up a pppd server, edit the EAP-TLS configuration file
++ as written above and then run pppd with the 'auth' option to authenticate
++ the client. The EAP-TLS method will be used if the other eap methods can't
++ be used (no secrets).
++
++ If you're setting up a client, edit the configuration file and then run
++ pppd with 'remotename' option to specify the server name. Add the
++ 'need-peer-eap' option if you want to be sure the peer ask you to
++ authenticate (and to use eap) and to disconnect if it doesn't.
++
++6. Example
++
++ The following example can be used to connect a Linux client with the 'pptp'
++ package to a Linux server running the 'pptpd' (PoPToP) package. The server
++ was configured with a certificate with name (CN) 'pptp-server', the client
++ was configured with a certificate with name (CN) 'pptp-client', both
++ signed by the same Certificate Authority (CA).
++
++ Server side:
++ - /etc/pptpd.conf file:
++ option /etc/ppp/options-pptpd-eaptls
++ localip 172.16.1.1
++ remoteip 172.16.1.10-20
++ - /etc/ppp/options-pptpd-eaptls file:
++ name pptp-server
++ lock
++ mtu 1500
++ mru 1450
++ auth
++ lcp-echo-failure 3
++ lcp-echo-interval 5
++ nodeflate
++ nobsdcomp
++ nopredictor1
++ nopcomp
++ noaccomp
++
++ require-eap
++ require-mppe-128
++
++ crl /home/janjust/ppp/keys/crl.pem
++
++ debug
++ logfile /tmp/pppd.log
++
++ - /etc/ppp/eaptls-server file:
++ * pptp-server - /etc/ppp/pptp-server.crt /etc/ppp/ca.crt /etc/ppp/pptp-server.key *
++
++ - On the server, run
++ pptdp --conf /etc/pptpd.conf
++
++ Client side:
++ - Run
++ pppd noauth require-eap require-mppe-128 \
++ ipcp-accept-local ipcp-accept-remote noipdefault \
++ cert /etc/ppp/keys/pptp-client.crt \
++ key /etc/ppp/keys/pptp-client.key \
++ ca /etc/ppp/keys/ca.crt \
++ name pptp-client remotename pptp-server \
++ debug logfile /tmp/pppd.log
++ pty "pptp pptp-server.example.com --nolaunchpppd"
++
++ Check /var/log/messages and the files /tmp/pppd.log on both sides for debugging info.
++
++7. Notes
++
++ This is experimental code.
++ Send suggestions and comments to Jan Just Keijser <janjust@nikhef.nl>
++
++8. Changelog of ppp-<>-eaptls-mppe-* patches
++
++v0.7 (22-Nov-2005)
++ - First version of the patch to include MPPE support
++ - ppp-2.4.3 only
++v0.9 (25-Jul-2006)
++ - Bug fixes
++ - First version for ppp-2.4.4
++v0.91 (03-Sep-2006)
++ - Added missing #include for md5.h
++ - Last version for ppp-2.4.3
++v0.92 (22-Apr-2008)
++ - Fix for openssl 0.9.8 issue with md5 function overload.
++v0.93 (14-Aug-2008)
++ - Make sure 'noauth' option can be used to bypass server certificate verification.
++v0.94 (15-Oct-2008)
++ - Added support for password-protected private keys by (ab)using the 'password' field.
++v0.95 (23-Dec-2009)
++ - First version with OpenSSL engine support.
++v0.96 (27-Jan-2010)
++ - Added fully functional support for OpenSSL engines (PKCS#11)
++ - First version for ppp-2.4.5
++v0.97 (20-Apr-2010)
++ - Some bug fixes for v0.96
++ - Added support for entering the password via a plugin. The sample plugin
++ .../pppd/plugins/passprompt.c has been extended with EAP-TLS support.
++ The "old" methods using the password option or the /etc/ppp/openssl.cnf file still work.
++ - Added support for specifying the client CA, certificate and private key on the command-line
++ or via the ppp config file.
++v0.98 (20-Apr-2010)
++ - Fix initialisation bug when using ca/cert/key command-line options.
++ - Last version for ppp-2.4.4
++v0.99 (05-Oct-2010)
++ - Fix coredump when using multilink option.
++v0.991 (08-Aug-2011)
++ - Fix compilation issue with openssl 1.0.
++v0.992 (01-Dec-2011)
++ - Fix compilation issue with eaptls_check_hook and passwordfd plugin.
++v0.993 (24-Apr-2012)
++ - Fix compilation issue when EAP_TLS=n in pppd/Makefile.
++v0.994 (11-Jun-2012)
++ - Fix compilation issue on Ubuntu 11.10.
++v0.995 (27-May-2014)
++ - Add support for a CRL file using the command-line option 'crl'
++ (prior only 'crl-dir' was supported).
++ - Fix segfault when pkcs11 enginename was not specified correctly.
++ - Fix segfault when client was misconfigured.
++ - Disable SSL Session Ticket support as Windows 8 does not support this.
++v0.996 (28-May-2014)
++ - Fix minor bug where SessionTicket message was printed as 'Unknown SSL3 code 4'
++ - Add EAP-TLS-specific options to pppd.8 manual page.
++ - Updated README.eap-tls file with new options and provide an example.
++v0.997 (19-Jun-2014)
++ - Change SSL_OP_NO_TICKETS to SSL_OP_NO_TICKET
++ - Fix bug in initialisation code with fragmented packets.
++v0.998 (13-Mar-2015)
++ - Added fix for https://bugzilla.redhat.com/show_bug.cgi?id=1023620
++v0.999 (11-May-2017)
++ - Added support for OpenSSL 1.1: the code will now compile against OpenSSL 1.0.x or 1.1.x.
++v1.101 (1-Jun-2018)
++ - Fix vulnerabilities CVE-2018-11574.
++
+diff -Naur ppp-2.4.7/etc.ppp/eaptls-client ppp-2.4.7-eaptls-mppe-1.101b/etc.ppp/eaptls-client
+--- ppp-2.4.7/etc.ppp/eaptls-client 1970-01-01 01:00:00.000000000 +0100
++++ ppp-2.4.7-eaptls-mppe-1.101b/etc.ppp/eaptls-client 2018-06-02 01:42:04.021165440 +0200
+@@ -0,0 +1,10 @@
++# Parameters for authentication using EAP-TLS (client)
++
++# client name (can be *)
++# server name (can be *)
++# client certificate file (required)
++# server certificate file (optional, if unused put '-')
++# CA certificate file (required)
++# client private key file (required)
++
++#client server /root/cert/client.crt - /root/cert/ca.crt /root/cert/client.key
+diff -Naur ppp-2.4.7/etc.ppp/eaptls-server ppp-2.4.7-eaptls-mppe-1.101b/etc.ppp/eaptls-server
+--- ppp-2.4.7/etc.ppp/eaptls-server 1970-01-01 01:00:00.000000000 +0100
++++ ppp-2.4.7-eaptls-mppe-1.101b/etc.ppp/eaptls-server 2018-06-02 01:42:04.021165440 +0200
+@@ -0,0 +1,11 @@
++# Parameters for authentication using EAP-TLS (server)
++
++# client name (can be *)
++# server name (can be *)
++# client certificate file (optional, if unused put '-')
++# server certificate file (required)
++# CA certificate file (required)
++# server private key file (required)
++# allowed addresses (required, can be *)
++
++#client server - /root/cert/server.crt /root/cert/ca.crt /root/cert/server.key 192.168.1.0/24
+diff -Naur ppp-2.4.7/etc.ppp/openssl.cnf ppp-2.4.7-eaptls-mppe-1.101b/etc.ppp/openssl.cnf
+--- ppp-2.4.7/etc.ppp/openssl.cnf 1970-01-01 01:00:00.000000000 +0100
++++ ppp-2.4.7-eaptls-mppe-1.101b/etc.ppp/openssl.cnf 2018-06-02 01:42:04.021165440 +0200
+@@ -0,0 +1,14 @@
++openssl_conf = openssl_def
++
++[ openssl_def ]
++engines = engine_section
++
++[ engine_section ]
++pkcs11 = pkcs11_section
++
++[ pkcs11_section ]
++engine_id = pkcs11
++dynamic_path = /usr/lib64/openssl/engines/engine_pkcs11.so
++MODULE_PATH = /usr/lib64/libeTPkcs11.so
++init = 0
++
+diff -Naur ppp-2.4.7/linux/Makefile.top ppp-2.4.7-eaptls-mppe-1.101b/linux/Makefile.top
+--- ppp-2.4.7/linux/Makefile.top 2014-08-09 14:31:39.000000000 +0200
++++ ppp-2.4.7-eaptls-mppe-1.101b/linux/Makefile.top 2018-06-02 01:42:04.021165440 +0200
+@@ -26,7 +26,7 @@
+ cd pppdump; $(MAKE) $(MFLAGS) install
+
+ install-etcppp: $(ETCDIR) $(ETCDIR)/options $(ETCDIR)/pap-secrets \
+- $(ETCDIR)/chap-secrets
++ $(ETCDIR)/chap-secrets $(ETCDIR)/eaptls-server $(ETCDIR)/eaptls-client
+
+ install-devel:
+ cd pppd; $(MAKE) $(MFLAGS) install-devel
+@@ -37,6 +37,10 @@
+ $(INSTALL) -c -m 600 etc.ppp/pap-secrets $@
+ $(ETCDIR)/chap-secrets:
+ $(INSTALL) -c -m 600 etc.ppp/chap-secrets $@
++$(ETCDIR)/eaptls-server:
++ $(INSTALL) -c -m 600 etc.ppp/eaptls-server $@
++$(ETCDIR)/eaptls-client:
++ $(INSTALL) -c -m 600 etc.ppp/eaptls-client $@
+
+ $(BINDIR):
+ $(INSTALL) -d -m 755 $@
+diff -Naur ppp-2.4.7/pppd/Makefile.linux ppp-2.4.7-eaptls-mppe-1.101b/pppd/Makefile.linux
+--- ppp-2.4.7/pppd/Makefile.linux 2014-08-09 14:31:39.000000000 +0200
++++ ppp-2.4.7-eaptls-mppe-1.101b/pppd/Makefile.linux 2018-06-02 01:42:04.021165440 +0200
+@@ -76,6 +76,9 @@
+ # Use libutil
+ USE_LIBUTIL=y
+
++# Enable EAP-TLS authentication (requires libssl and libcrypto)
++USE_EAPTLS=y
++
+ MAXOCTETS=y
+
+ INCLUDE_DIRS= -I../include
+@@ -115,6 +118,15 @@
+ PPPDOBJS += sha1.o
+ endif
+
++# EAP-TLS
++ifdef USE_EAPTLS
++CFLAGS += -DUSE_EAPTLS=1 -I/usr/kerberos/include
++LIBS += -lssl -lcrypto
++PPPDSRC += eap-tls.c
++HEADERS += eap-tls.h
++PPPDOBJS += eap-tls.o
++endif
++
+ ifdef HAS_SHADOW
+ CFLAGS += -DHAS_SHADOW
+ #LIBS += -lshadow $(LIBS)
+diff -Naur ppp-2.4.7/pppd/auth.c ppp-2.4.7-eaptls-mppe-1.101b/pppd/auth.c
+--- ppp-2.4.7/pppd/auth.c 2014-08-09 14:31:39.000000000 +0200
++++ ppp-2.4.7-eaptls-mppe-1.101b/pppd/auth.c 2018-06-02 01:42:04.022165436 +0200
+@@ -109,6 +109,9 @@
+ #include "upap.h"
+ #include "chap-new.h"
+ #include "eap.h"
++#ifdef USE_EAPTLS
++#include "eap-tls.h"
++#endif
+ #ifdef CBCP_SUPPORT
+ #include "cbcp.h"
+ #endif
+@@ -183,6 +186,11 @@
+ /* Hook for a plugin to get the CHAP password for authenticating us */
+ int (*chap_passwd_hook) __P((char *user, char *passwd)) = NULL;
+
++#ifdef USE_EAPTLS
++/* Hook for a plugin to get the EAP-TLS password for authenticating us */
++int (*eaptls_passwd_hook) __P((char *user, char *passwd)) = NULL;
++#endif
++
+ /* Hook for a plugin to say whether it is OK if the peer
+ refuses to authenticate. */
+ int (*null_auth_hook) __P((struct wordlist **paddrs,
+@@ -238,6 +246,14 @@
+ bool explicit_user = 0; /* Set if "user" option supplied */
+ bool explicit_passwd = 0; /* Set if "password" option supplied */
+ char remote_name[MAXNAMELEN]; /* Peer's name for authentication */
++#ifdef USE_EAPTLS
++char *cacert_file = NULL; /* CA certificate file (pem format) */
++char *cert_file = NULL; /* client certificate file (pem format) */
++char *privkey_file = NULL; /* client private key file (pem format) */
++char *crl_dir = NULL; /* directory containing CRL files */
++char *crl_file = NULL; /* Certificate Revocation List (CRL) file (pem format) */
++bool need_peer_eap = 0; /* Require peer to authenticate us */
++#endif
+
+ static char *uafname; /* name of most recent +ua file */
+
+@@ -254,6 +270,19 @@
+ static int have_chap_secret __P((char *, char *, int, int *));
+ static int have_srp_secret __P((char *client, char *server, int need_ip,
+ int *lacks_ipp));
++
++#ifdef USE_EAPTLS
++static int have_eaptls_secret_server
++__P((char *client, char *server, int need_ip, int *lacks_ipp));
++static int have_eaptls_secret_client __P((char *client, char *server));
++static int scan_authfile_eaptls __P((FILE * f, char *client, char *server,
++ char *cli_cert, char *serv_cert,
++ char *ca_cert, char *pk,
++ struct wordlist ** addrs,
++ struct wordlist ** opts,
++ char *filename, int flags));
++#endif
++
+ static int ip_addr_check __P((u_int32_t, struct permitted_ip *));
+ static int scan_authfile __P((FILE *, char *, char *, char *,
+ struct wordlist **, struct wordlist **,
+@@ -401,6 +430,15 @@
+ "Set telephone number(s) which are allowed to connect",
+ OPT_PRIV | OPT_A2LIST },
+
++#ifdef USE_EAPTLS
++ { "ca", o_string, &cacert_file, "EAP-TLS CA certificate in PEM format" },
++ { "cert", o_string, &cert_file, "EAP-TLS client certificate in PEM format" },
++ { "key", o_string, &privkey_file, "EAP-TLS client private key in PEM format" },
++ { "crl-dir", o_string, &crl_dir, "Use CRLs in directory" },
++ { "crl", o_string, &crl_file, "Use specific CRL file" },
++ { "need-peer-eap", o_bool, &need_peer_eap,
++ "Require the peer to authenticate us", 1 },
++#endif /* USE_EAPTLS */
+ { NULL }
+ };
+
+@@ -730,6 +768,9 @@
+ lcp_options *wo = &lcp_wantoptions[unit];
+ lcp_options *go = &lcp_gotoptions[unit];
+ lcp_options *ho = &lcp_hisoptions[unit];
++#ifdef USE_EAPTLS
++ lcp_options *ao = &lcp_allowoptions[unit];
++#endif
+ int i;
+ struct protent *protp;
+
+@@ -764,6 +805,22 @@
+ }
+ }
+
++#ifdef USE_EAPTLS
++ if (need_peer_eap && !ao->neg_eap) {
++ warn("eap required to authenticate us but no suitable secrets");
++ lcp_close(unit, "couldn't negotiate eap");
++ status = EXIT_AUTH_TOPEER_FAILED;
++ return;
++ }
++
++ if (need_peer_eap && !ho->neg_eap) {
++ warn("peer doesn't want to authenticate us with eap");
++ lcp_close(unit, "couldn't negotiate eap");
++ status = EXIT_PEER_AUTH_FAILED;
++ return;
++ }
++#endif
++
+ new_phase(PHASE_AUTHENTICATE);
+ auth = 0;
+ if (go->neg_eap) {
+@@ -1277,6 +1334,15 @@
+ our_name, 1, &lacks_ip);
+ }
+
++#ifdef USE_EAPTLS
++ if (!can_auth && wo->neg_eap) {
++ can_auth =
++ have_eaptls_secret_server((explicit_remote ? remote_name :
++ NULL), our_name, 1, &lacks_ip);
++
++ }
++#endif
++
+ if (auth_required && !can_auth && noauth_addrs == NULL) {
+ if (default_auth) {
+ option_error(
+@@ -1331,7 +1397,11 @@
+ passwd[0] != 0 ||
+ (hadchap == 1 || (hadchap == -1 && have_chap_secret(user,
+ (explicit_remote? remote_name: NULL), 0, NULL))) ||
+- have_srp_secret(user, (explicit_remote? remote_name: NULL), 0, NULL));
++ have_srp_secret(user, (explicit_remote? remote_name: NULL), 0, NULL)
++#ifdef USE_EAPTLS
++ || have_eaptls_secret_client(user, (explicit_remote? remote_name: NULL))
++#endif
++ );
+
+ hadchap = -1;
+ if (go->neg_upap && !uselogin && !have_pap_secret(NULL))
+@@ -1346,8 +1416,14 @@
+ !have_chap_secret((explicit_remote? remote_name: NULL), our_name,
+ 1, NULL))) &&
+ !have_srp_secret((explicit_remote? remote_name: NULL), our_name, 1,
+- NULL))
++ NULL)
++#ifdef USE_EAPTLS
++ && !have_eaptls_secret_server((explicit_remote? remote_name: NULL),
++ our_name, 1, NULL)
++#endif
++ )
+ go->neg_eap = 0;
++
+ }
+
+
+@@ -1707,6 +1783,7 @@
+ }
+
+
++
+ /*
+ * get_secret - open the CHAP secret file and return the secret
+ * for authenticating the given client on the given server.
+@@ -2359,3 +2436,335 @@
+
+ auth_script_pid = run_program(script, argv, 0, auth_script_done, NULL, 0);
+ }
++
++
++#ifdef USE_EAPTLS
++static int
++have_eaptls_secret_server(client, server, need_ip, lacks_ipp)
++ char *client;
++ char *server;
++ int need_ip;
++ int *lacks_ipp;
++{
++ FILE *f;
++ int ret;
++ char *filename;
++ struct wordlist *addrs;
++ char servcertfile[MAXWORDLEN];
++ char clicertfile[MAXWORDLEN];
++ char cacertfile[MAXWORDLEN];
++ char pkfile[MAXWORDLEN];
++
++ filename = _PATH_EAPTLSSERVFILE;
++ f = fopen(filename, "r");
++ if (f == NULL)
++ return 0;
++
++ if (client != NULL && client[0] == 0)
++ client = NULL;
++ else if (server != NULL && server[0] == 0)
++ server = NULL;
++
++ ret =
++ scan_authfile_eaptls(f, client, server, clicertfile, servcertfile,
++ cacertfile, pkfile, &addrs, NULL, filename,
++ 0);
++
++ fclose(f);
++
++/*
++ if (ret >= 0 && !eaptls_init_ssl(1, cacertfile, servcertfile,
++ clicertfile, pkfile))
++ ret = -1;
++*/
++
++ if (ret >= 0 && need_ip && !some_ip_ok(addrs)) {
++ if (lacks_ipp != 0)
++ *lacks_ipp = 1;
++ ret = -1;
++ }
++ if (addrs != 0)
++ free_wordlist(addrs);
++
++ return ret >= 0;
++}
++
++
++static int
++have_eaptls_secret_client(client, server)
++ char *client;
++ char *server;
++{
++ FILE *f;
++ int ret;
++ char *filename;
++ struct wordlist *addrs = NULL;
++ char servcertfile[MAXWORDLEN];
++ char clicertfile[MAXWORDLEN];
++ char cacertfile[MAXWORDLEN];
++ char pkfile[MAXWORDLEN];
++
++ if (client != NULL && client[0] == 0)
++ client = NULL;
++ else if (server != NULL && server[0] == 0)
++ server = NULL;
++
++ if (cacert_file && cert_file && privkey_file)
++ return 1;
++
++ filename = _PATH_EAPTLSCLIFILE;
++ f = fopen(filename, "r");
++ if (f == NULL)
++ return 0;
++
++ ret =
++ scan_authfile_eaptls(f, client, server, clicertfile, servcertfile,
++ cacertfile, pkfile, &addrs, NULL, filename,
++ 0);
++ fclose(f);
++
++/*
++ if (ret >= 0 && !eaptls_init_ssl(0, cacertfile, clicertfile,
++ servcertfile, pkfile))
++ ret = -1;
++*/
++
++ if (addrs != 0)
++ free_wordlist(addrs);
++
++ return ret >= 0;
++}
++
++
++static int
++scan_authfile_eaptls(f, client, server, cli_cert, serv_cert, ca_cert, pk,
++ addrs, opts, filename, flags)
++ FILE *f;
++ char *client;
++ char *server;
++ char *cli_cert;
++ char *serv_cert;
++ char *ca_cert;
++ char *pk;
++ struct wordlist **addrs;
++ struct wordlist **opts;
++ char *filename;
++ int flags;
++{
++ int newline;
++ int got_flag, best_flag;
++ struct wordlist *ap, *addr_list, *alist, **app;
++ char word[MAXWORDLEN];
++
++ if (addrs != NULL)
++ *addrs = NULL;
++ if (opts != NULL)
++ *opts = NULL;
++ addr_list = NULL;
++ if (!getword(f, word, &newline, filename))
++ return -1; /* file is empty??? */
++ newline = 1;
++ best_flag = -1;
++ for (;;) {
++ /*
++ * Skip until we find a word at the start of a line.
++ */
++ while (!newline && getword(f, word, &newline, filename));
++ if (!newline)
++ break; /* got to end of file */
++
++ /*
++ * Got a client - check if it's a match or a wildcard.
++ */
++ got_flag = 0;
++ if (client != NULL && strcmp(word, client) != 0 && !ISWILD(word)) {
++ newline = 0;
++ continue;
++ }
++ if (!ISWILD(word))
++ got_flag = NONWILD_CLIENT;
++
++ /*
++ * Now get a server and check if it matches.
++ */
++ if (!getword(f, word, &newline, filename))
++ break;
++ if (newline)
++ continue;
++ if (!ISWILD(word)) {
++ if (server != NULL && strcmp(word, server) != 0)
++ continue;
++ got_flag |= NONWILD_SERVER;
++ }
++
++ /*
++ * Got some sort of a match - see if it's better than what
++ * we have already.
++ */
++ if (got_flag <= best_flag)
++ continue;
++
++ /*
++ * Get the cli_cert
++ */
++ if (!getword(f, word, &newline, filename))
++ break;
++ if (newline)
++ continue;
++ if (strcmp(word, "-") != 0) {
++ strlcpy(cli_cert, word, MAXWORDLEN);
++ } else
++ cli_cert[0] = 0;
++
++ /*
++ * Get serv_cert
++ */
++ if (!getword(f, word, &newline, filename))
++ break;
++ if (newline)
++ continue;
++ if (strcmp(word, "-") != 0) {
++ strlcpy(serv_cert, word, MAXWORDLEN);
++ } else
++ serv_cert[0] = 0;
++
++ /*
++ * Get ca_cert
++ */
++ if (!getword(f, word, &newline, filename))
++ break;
++ if (newline)
++ continue;
++ strlcpy(ca_cert, word, MAXWORDLEN);
++
++ /*
++ * Get pk
++ */
++ if (!getword(f, word, &newline, filename))
++ break;
++ if (newline)
++ continue;
++ strlcpy(pk, word, MAXWORDLEN);
++
++
++ /*
++ * Now read address authorization info and make a wordlist.
++ */
++ app = &alist;
++ for (;;) {
++ if (!getword(f, word, &newline, filename) || newline)
++ break;
++ ap = (struct wordlist *)
++ malloc(sizeof(struct wordlist) + strlen(word) + 1);
++ if (ap == NULL)
++ novm("authorized addresses");
++ ap->word = (char *) (ap + 1);
++ strcpy(ap->word, word);
++ *app = ap;
++ app = &ap->next;
++ }
++ *app = NULL;
++ /*
++ * This is the best so far; remember it.
++ */
++ best_flag = got_flag;
++ if (addr_list)
++ free_wordlist(addr_list);
++ addr_list = alist;
++
++ if (!newline)
++ break;
++ }
++
++ /* scan for a -- word indicating the start of options */
++ for (app = &addr_list; (ap = *app) != NULL; app = &ap->next)
++ if (strcmp(ap->word, "--") == 0)
++ break;
++ /* ap = start of options */
++ if (ap != NULL) {
++ ap = ap->next; /* first option */
++ free(*app); /* free the "--" word */
++ *app = NULL; /* terminate addr list */
++ }
++ if (opts != NULL)
++ *opts = ap;
++ else if (ap != NULL)
++ free_wordlist(ap);
++ if (addrs != NULL)
++ *addrs = addr_list;
++ else if (addr_list != NULL)
++ free_wordlist(addr_list);
++
++ return best_flag;
++}
++
++
++int
++get_eaptls_secret(unit, client, server, clicertfile, servcertfile,
++ cacertfile, pkfile, am_server)
++ int unit;
++ char *client;
++ char *server;
++ char *clicertfile;
++ char *servcertfile;
++ char *cacertfile;
++ char *pkfile;
++ int am_server;
++{
++ FILE *fp;
++ int ret;
++ char *filename = NULL;
++ struct wordlist *addrs = NULL;
++ struct wordlist *opts = NULL;
++
++ /* in client mode the ca+cert+privkey can also be specified as options */
++ if (!am_server && cacert_file && cert_file && privkey_file )
++ {
++ strlcpy( clicertfile, cert_file, MAXWORDLEN );
++ strlcpy( cacertfile, cacert_file, MAXWORDLEN );
++ strlcpy( pkfile, privkey_file, MAXWORDLEN );
++ servcertfile[0] = '\0';
++ }
++ else
++ {
++ filename = (am_server ? _PATH_EAPTLSSERVFILE : _PATH_EAPTLSCLIFILE);
++ addrs = NULL;
++
++ fp = fopen(filename, "r");
++ if (fp == NULL)
++ {
++ error("Can't open eap-tls secret file %s: %m", filename);
++ return 0;
++ }
++
++ check_access(fp, filename);
++
++ ret = scan_authfile_eaptls(fp, client, server, clicertfile, servcertfile,
++ cacertfile, pkfile, &addrs, &opts, filename, 0);
++
++ fclose(fp);
++
++ if (ret < 0) return 0;
++ }
++
++ if (eaptls_passwd_hook)
++ {
++ dbglog( "Calling eaptls password hook" );
++ if ( (*eaptls_passwd_hook)(pkfile, passwd) < 0)
++ {
++ error("Unable to obtain EAP-TLS password for %s (%s) from plugin",
++ client, pkfile);
++ return 0;
++ }
++ }
++ if (am_server)
++ set_allowed_addrs(unit, addrs, opts);
++ else if (opts != NULL)
++ free_wordlist(opts);
++ if (addrs != NULL)
++ free_wordlist(addrs);
++
++ return 1;
++}
++#endif
++
+diff -Naur ppp-2.4.7/pppd/ccp.c ppp-2.4.7-eaptls-mppe-1.101b/pppd/ccp.c
+--- ppp-2.4.7/pppd/ccp.c 2014-08-09 14:31:39.000000000 +0200
++++ ppp-2.4.7-eaptls-mppe-1.101b/pppd/ccp.c 2018-06-02 01:42:04.022165436 +0200
+@@ -540,6 +540,9 @@
+ if (go->mppe) {
+ ccp_options *ao = &ccp_allowoptions[f->unit];
+ int auth_mschap_bits = auth_done[f->unit];
++#ifdef USE_EAPTLS
++ int auth_eap_bits = auth_done[f->unit];
++#endif
+ int numbits;
+
+ /*
+@@ -567,8 +570,23 @@
+ lcp_close(f->unit, "MPPE required but not available");
+ return;
+ }
++
++#ifdef USE_EAPTLS
++ /*
++ * MPPE is also possible in combination with EAP-TLS.
++ * It is not possible to detect if we're doing EAP or EAP-TLS
++ * at this stage, hence we accept all forms of EAP. If TLS is
++ * not used then the MPPE keys will not be derived anyway.
++ */
++ /* Leave only the eap auth bits set */
++ auth_eap_bits &= (EAP_WITHPEER | EAP_PEER );
++
++ if ((numbits == 0) && (auth_eap_bits == 0)) {
++ error("MPPE required, but MS-CHAP[v2] nor EAP-TLS auth are performed.");
++#else
+ if (!numbits) {
+- error("MPPE required, but MS-CHAP[v2] auth not performed.");
++ error("MPPE required, but MS-CHAP[v2] auth not performed.");
++#endif
+ lcp_close(f->unit, "MPPE required but not available");
+ return;
+ }
+diff -Naur ppp-2.4.7/pppd/chap-md5.c ppp-2.4.7-eaptls-mppe-1.101b/pppd/chap-md5.c
+--- ppp-2.4.7/pppd/chap-md5.c 2014-08-09 14:31:39.000000000 +0200
++++ ppp-2.4.7-eaptls-mppe-1.101b/pppd/chap-md5.c 2018-06-02 01:42:04.022165436 +0200
+@@ -36,7 +36,11 @@
+ #include "chap-new.h"
+ #include "chap-md5.h"
+ #include "magic.h"
++#ifdef USE_EAPTLS
++#include "eap-tls.h"
++#else
+ #include "md5.h"
++#endif /* USE_EAPTLS */
+
+ #define MD5_HASH_SIZE 16
+ #define MD5_MIN_CHALLENGE 16
+diff -Naur ppp-2.4.7/pppd/eap-tls.c ppp-2.4.7-eaptls-mppe-1.101b/pppd/eap-tls.c
+--- ppp-2.4.7/pppd/eap-tls.c 1970-01-01 01:00:00.000000000 +0100
++++ ppp-2.4.7-eaptls-mppe-1.101b/pppd/eap-tls.c 2018-06-02 01:42:16.790124406 +0200
+@@ -0,0 +1,1313 @@
++/*
++ * eap-tls.c - EAP-TLS implementation for PPP
++ *
++ * Copyright (c) Beniamino Galvani 2005 All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * 2. Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in
++ * the documentation and/or other materials provided with the
++ * distribution.
++ *
++ * 3. The name(s) of the authors of this software must not be used to
++ * endorse or promote products derived from this software without
++ * prior written permission.
++ *
++ * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
++ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
++ * AND FITNESS, IN NO EVENT SHALL THE AUTHORS 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.
++ *
++ */
++
++#include <string.h>
++#include <unistd.h>
++#include <sys/types.h>
++#include <sys/stat.h>
++#include <fcntl.h>
++
++#include <openssl/conf.h>
++#include <openssl/engine.h>
++#include <openssl/hmac.h>
++#include <openssl/err.h>
++#include <openssl/x509v3.h>
++
++#include "pppd.h"
++#include "eap.h"
++#include "eap-tls.h"
++#include "fsm.h"
++#include "lcp.h"
++#include "pathnames.h"
++
++/* The openssl configuration file and engines can be loaded only once */
++static CONF *ssl_config = NULL;
++static ENGINE *cert_engine = NULL;
++static ENGINE *pkey_engine = NULL;
++
++#ifdef MPPE
++
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
++
++/*
++ * https://wiki.openssl.org/index.php/1.1_API_Changes
++ * tries to provide some guidance but ultimately falls short.
++ */
++
++
++static void HMAC_CTX_free(HMAC_CTX *ctx)
++{
++ if (ctx != NULL) {
++ HMAC_CTX_cleanup(ctx);
++ OPENSSL_free(ctx);
++ }
++}
++
++static HMAC_CTX *HMAC_CTX_new(void)
++{
++ HMAC_CTX *ctx = OPENSSL_malloc(sizeof(*ctx));
++ if (ctx != NULL)
++ HMAC_CTX_init(ctx);
++ return ctx;
++}
++
++/*
++ * These were basically jacked directly from the OpenSSL tree
++ * without adjustments.
++ */
++
++static size_t SSL_get_client_random(const SSL *ssl, unsigned char *out,
++ size_t outlen)
++{
++ if (outlen == 0)
++ return sizeof(ssl->s3->client_random);
++ if (outlen > sizeof(ssl->s3->client_random))
++ outlen = sizeof(ssl->s3->client_random);
++ memcpy(out, ssl->s3->client_random, outlen);
++ return outlen;
++}
++
++static size_t SSL_get_server_random(const SSL *ssl, unsigned char *out,
++ size_t outlen)
++{
++ if (outlen == 0)
++ return sizeof(ssl->s3->server_random);
++ if (outlen > sizeof(ssl->s3->server_random))
++ outlen = sizeof(ssl->s3->server_random);
++ memcpy(out, ssl->s3->server_random, outlen);
++ return outlen;
++}
++
++static size_t SSL_SESSION_get_master_key(const SSL_SESSION *session,
++ unsigned char *out, size_t outlen)
++{
++ if (outlen == 0)
++ return session->master_key_length;
++ if (outlen > session->master_key_length)
++ outlen = session->master_key_length;
++ memcpy(out, session->master_key, outlen);
++ return outlen;
++}
++
++/* Avoid a deprecated warning in OpenSSL 1.1 whilst still allowing to build against 1.0.x */
++#define TLS_method TLSv1_method
++
++#endif /* OPENSSL_VERSION_NUMBER < 0x10100000L */
++
++/*
++ * TLS PRF from RFC 2246
++ */
++static void P_hash(const EVP_MD *evp_md,
++ const unsigned char *secret, unsigned int secret_len,
++ const unsigned char *seed, unsigned int seed_len,
++ unsigned char *out, unsigned int out_len)
++{
++ HMAC_CTX *ctx_a, *ctx_out;
++ unsigned char a[HMAC_MAX_MD_CBLOCK];
++ unsigned int size;
++
++ ctx_a = HMAC_CTX_new();
++ ctx_out = HMAC_CTX_new();
++ HMAC_Init_ex(ctx_a, secret, secret_len, evp_md, NULL);
++ HMAC_Init_ex(ctx_out, secret, secret_len, evp_md, NULL);
++
++ size = HMAC_size(ctx_out);
++
++ /* Calculate A(1) */
++ HMAC_Update(ctx_a, seed, seed_len);
++ HMAC_Final(ctx_a, a, NULL);
++
++ while (1) {
++ /* Calculate next part of output */
++ HMAC_Update(ctx_out, a, size);
++ HMAC_Update(ctx_out, seed, seed_len);
++
++ /* Check if last part */
++ if (out_len < size) {
++ HMAC_Final(ctx_out, a, NULL);
++ memcpy(out, a, out_len);
++ break;
++ }
++
++ /* Place digest in output buffer */
++ HMAC_Final(ctx_out, out, NULL);
++ HMAC_Init_ex(ctx_out, NULL, 0, NULL, NULL);
++ out += size;
++ out_len -= size;
++
++ /* Calculate next A(i) */
++ HMAC_Init_ex(ctx_a, NULL, 0, NULL, NULL);
++ HMAC_Update(ctx_a, a, size);
++ HMAC_Final(ctx_a, a, NULL);
++ }
++
++ HMAC_CTX_free(ctx_a);
++ HMAC_CTX_free(ctx_out);
++ memset(a, 0, sizeof(a));
++}
++
++static void PRF(const unsigned char *secret, unsigned int secret_len,
++ const unsigned char *seed, unsigned int seed_len,
++ unsigned char *out, unsigned char *buf, unsigned int out_len)
++{
++ unsigned int i;
++ unsigned int len = (secret_len + 1) / 2;
++ const unsigned char *s1 = secret;
++ const unsigned char *s2 = secret + (secret_len - len);
++
++ P_hash(EVP_md5(), s1, len, seed, seed_len, out, out_len);
++ P_hash(EVP_sha1(), s2, len, seed, seed_len, buf, out_len);
++
++ for (i=0; i < out_len; i++) {
++ out[i] ^= buf[i];
++ }
++}
++
++#define EAPTLS_MPPE_KEY_LEN 32
++
++/*
++ * Generate keys according to RFC 2716 and add to reply
++ */
++void eaptls_gen_mppe_keys(struct eaptls_session *ets, const char *prf_label,
++ int client)
++{
++ unsigned char out[4*EAPTLS_MPPE_KEY_LEN], buf[4*EAPTLS_MPPE_KEY_LEN];
++ unsigned char seed[64 + 2*SSL3_RANDOM_SIZE];
++ unsigned char *p = seed;
++ SSL *s = ets->ssl;
++ size_t prf_size;
++ unsigned char master_key[SSL_MAX_MASTER_KEY_LENGTH];
++ size_t master_key_length;
++
++ prf_size = strlen(prf_label);
++
++ memcpy(p, prf_label, prf_size);
++ p += prf_size;
++
++ prf_size += SSL_get_client_random(s, p, SSL3_RANDOM_SIZE);
++ p += SSL3_RANDOM_SIZE;
++
++ prf_size += SSL_get_server_random(s, p, SSL3_RANDOM_SIZE);
++
++ master_key_length = SSL_SESSION_get_master_key(SSL_get_session(s), master_key,
++ sizeof(master_key));
++ PRF(master_key, master_key_length, seed, prf_size, out, buf, sizeof(out));
++
++ /*
++ * We now have the master send and receive keys.
++ * From these, generate the session send and receive keys.
++ * (see RFC3079 / draft-ietf-pppext-mppe-keys-03.txt for details)
++ */
++ if (client)
++ {
++ p = out;
++ BCOPY( p, mppe_send_key, sizeof(mppe_send_key) );
++ p += EAPTLS_MPPE_KEY_LEN;
++ BCOPY( p, mppe_recv_key, sizeof(mppe_recv_key) );
++ }
++ else
++ {
++ p = out;
++ BCOPY( p, mppe_recv_key, sizeof(mppe_recv_key) );
++ p += EAPTLS_MPPE_KEY_LEN;
++ BCOPY( p, mppe_send_key, sizeof(mppe_send_key) );
++ }
++
++ mppe_keys_set = 1;
++}
++
++#endif
++
++void log_ssl_errors( void )
++{
++ unsigned long ssl_err = ERR_get_error();
++
++ if (ssl_err != 0)
++ dbglog("EAP-TLS SSL error stack:");
++ while (ssl_err != 0) {
++ dbglog( ERR_error_string( ssl_err, NULL ) );
++ ssl_err = ERR_get_error();
++ }
++}
++
++
++int password_callback (char *buf, int size, int rwflag, void *u)
++{
++ if (buf)
++ {
++ strncpy (buf, passwd, size);
++ return strlen (buf);
++ }
++ return 0;
++}
++
++
++CONF *eaptls_ssl_load_config( void )
++{
++ CONF *config;
++ int ret_code;
++ long error_line = 33;
++
++ config = NCONF_new( NULL );
++ dbglog( "Loading OpenSSL config file" );
++ ret_code = NCONF_load( config, _PATH_OPENSSLCONFFILE, &error_line );
++ if (ret_code == 0)
++ {
++ warn( "EAP-TLS: Error in OpenSSL config file %s at line %d", _PATH_OPENSSLCONFFILE, error_line );
++ NCONF_free( config );
++ config = NULL;
++ ERR_clear_error();
++ }
++
++ dbglog( "Loading OpenSSL built-ins" );
++ ENGINE_load_builtin_engines();
++ OPENSSL_load_builtin_modules();
++
++ dbglog( "Loading OpenSSL configured modules" );
++ if (CONF_modules_load( config, NULL, 0 ) <= 0 )
++ {
++ warn( "EAP-TLS: Error loading OpenSSL modules" );
++ log_ssl_errors();
++ config = NULL;
++ }
++
++ return config;
++}
++
++ENGINE *eaptls_ssl_load_engine( char *engine_name )
++{
++ ENGINE *e = NULL;
++
++ dbglog( "Enabling OpenSSL auto engines" );
++ ENGINE_register_all_complete();
++
++ dbglog( "Loading OpenSSL '%s' engine support", engine_name );
++ e = ENGINE_by_id( engine_name );
++ if (!e)
++ {
++ dbglog( "EAP-TLS: Cannot load '%s' engine support, trying 'dynamic'", engine_name );
++ e = ENGINE_by_id( "dynamic" );
++ if (e)
++ {
++ if (!ENGINE_ctrl_cmd_string(e, "SO_PATH", engine_name, 0)
++ || !ENGINE_ctrl_cmd_string(e, "LOAD", NULL, 0))
++ {
++ warn( "EAP-TLS: Error loading dynamic engine '%s'", engine_name );
++ log_ssl_errors();
++ ENGINE_free(e);
++ e = NULL;
++ }
++ }
++ else
++ {
++ warn( "EAP-TLS: Cannot load dynamic engine support" );
++ }
++ }
++
++ if (e)
++ {
++ dbglog( "Initialising engine" );
++ if(!ENGINE_set_default(e, ENGINE_METHOD_ALL))
++ {
++ warn( "EAP-TLS: Cannot use that engine" );
++ log_ssl_errors();
++ ENGINE_free(e);
++ e = NULL;
++ }
++ }
++
++ return e;
++}
++
++/*
++ * Initialize the SSL stacks and tests if certificates, key and crl
++ * for client or server use can be loaded.
++ */
++SSL_CTX *eaptls_init_ssl(int init_server, char *cacertfile,
++ char *certfile, char *peer_certfile, char *privkeyfile)
++{
++ char *cert_engine_name = NULL;
++ char *cert_identifier = NULL;
++ char *pkey_engine_name = NULL;
++ char *pkey_identifier = NULL;
++ SSL_CTX *ctx;
++ X509_STORE *certstore;
++ X509_LOOKUP *lookup;
++ X509 *tmp;
++
++ /*
++ * Without these can't continue
++ */
++ if (!cacertfile[0])
++ {
++ error("EAP-TLS: CA certificate missing");
++ return NULL;
++ }
++
++ if (!certfile[0])
++ {
++ error("EAP-TLS: User certificate missing");
++ return NULL;
++ }
++
++ if (!privkeyfile[0])
++ {
++ error("EAP-TLS: User private key missing");
++ return NULL;
++ }
++
++ SSL_library_init();
++ SSL_load_error_strings();
++
++ ctx = SSL_CTX_new(TLS_method());
++
++ if (!ctx) {
++ error("EAP-TLS: Cannot initialize SSL CTX context");
++ goto fail;
++ }
++
++ /* if the certificate filename is of the form engine:id. e.g.
++ pkcs11:12345
++ then we try to load and use this engine.
++ If the certificate filename starts with a / or . then we
++ ALWAYS assume it is a file and not an engine/pkcs11 identifier
++ */
++ if ( index( certfile, '/' ) == NULL && index( certfile, '.') == NULL )
++ {
++ cert_identifier = index( certfile, ':' );
++
++ if (cert_identifier)
++ {
++ cert_engine_name = certfile;
++ *cert_identifier = '\0';
++ cert_identifier++;
++
++ dbglog( "Found certificate engine '%s'", cert_engine_name );
++ dbglog( "Found certificate identifier '%s'", cert_identifier );
++ }
++ }
++
++ /* if the privatekey filename is of the form engine:id. e.g.
++ pkcs11:12345
++ then we try to load and use this engine.
++ If the privatekey filename starts with a / or . then we
++ ALWAYS assume it is a file and not an engine/pkcs11 identifier
++ */
++ if ( index( privkeyfile, '/' ) == NULL && index( privkeyfile, '.') == NULL )
++ {
++ pkey_identifier = index( privkeyfile, ':' );
++
++ if (pkey_identifier)
++ {
++ pkey_engine_name = privkeyfile;
++ *pkey_identifier = '\0';
++ pkey_identifier++;
++
++ dbglog( "Found privatekey engine '%s'", pkey_engine_name );
++ dbglog( "Found privatekey identifier '%s'", pkey_identifier );
++ }
++ }
++
++ if (cert_identifier && pkey_identifier)
++ {
++ if (strlen( cert_identifier ) == 0)
++ {
++ if (strlen( pkey_identifier ) == 0)
++ error( "EAP-TLS: both the certificate and privatekey identifiers are missing!" );
++ else
++ {
++ dbglog( "Substituting privatekey identifier for certificate identifier" );
++ cert_identifier = pkey_identifier;
++ }
++ }
++ else
++ {
++ if (strlen( pkey_identifier ) == 0)
++ {
++ dbglog( "Substituting certificate identifier for privatekey identifier" );
++ pkey_identifier = cert_identifier;
++ }
++ }
++
++ }
++
++ /* load the openssl config file only once */
++ if (!ssl_config)
++ {
++ if (cert_engine_name || pkey_engine_name)
++ ssl_config = eaptls_ssl_load_config();
++
++ if (ssl_config && cert_engine_name)
++ cert_engine = eaptls_ssl_load_engine( cert_engine_name );
++
++ if (ssl_config && pkey_engine_name)
++ {
++ /* don't load the same engine twice */
++ if ( cert_engine && strcmp( cert_engine_name, pkey_engine_name) == 0 )
++ pkey_engine = cert_engine;
++ else
++ pkey_engine = eaptls_ssl_load_engine( pkey_engine_name );
++ }
++ }
++
++ SSL_CTX_set_default_passwd_cb (ctx, password_callback);
++
++ if (!SSL_CTX_load_verify_locations(ctx, cacertfile, NULL))
++ {
++ error("EAP-TLS: Cannot load or verify CA file %s", cacertfile);
++ goto fail;
++ }
++
++ if (init_server)
++ SSL_CTX_set_client_CA_list(ctx, SSL_load_client_CA_file(cacertfile));
++
++ if (cert_engine)
++ {
++ struct
++ {
++ const char *s_slot_cert_id;
++ X509 *cert;
++ } cert_info;
++
++ cert_info.s_slot_cert_id = cert_identifier;
++ cert_info.cert = NULL;
++
++ if (!ENGINE_ctrl_cmd( cert_engine, "LOAD_CERT_CTRL", 0, &cert_info, NULL, 0 ) )
++ {
++ error( "EAP-TLS: Error loading certificate with id '%s' from engine", cert_identifier );
++ goto fail;
++ }
++
++ if (cert_info.cert)
++ {
++ dbglog( "Got the certificate, adding it to SSL context" );
++ dbglog( "subject = %s", X509_NAME_oneline( X509_get_subject_name( cert_info.cert ), NULL, 0 ) );
++ if (SSL_CTX_use_certificate(ctx, cert_info.cert) <= 0)
++ {
++ error("EAP-TLS: Cannot use PKCS11 certificate %s", cert_identifier);
++ goto fail;
++ }
++ }
++ else
++ {
++ warn("EAP-TLS: Cannot load PKCS11 key %s", cert_identifier);
++ log_ssl_errors();
++ }
++ }
++ else
++ {
++ if (!SSL_CTX_use_certificate_file(ctx, certfile, SSL_FILETYPE_PEM))
++ {
++ error( "EAP-TLS: Cannot use public certificate %s", certfile );
++ goto fail;
++ }
++ }
++
++ if (pkey_engine)
++ {
++ EVP_PKEY *pkey = NULL;
++ PW_CB_DATA cb_data;
++
++ cb_data.password = passwd;
++ cb_data.prompt_info = pkey_identifier;
++
++ dbglog( "Loading private key '%s' from engine", pkey_identifier );
++ pkey = ENGINE_load_private_key(pkey_engine, pkey_identifier, NULL, &cb_data);
++ if (pkey)
++ {
++ dbglog( "Got the private key, adding it to SSL context" );
++ if (SSL_CTX_use_PrivateKey(ctx, pkey) <= 0)
++ {
++ error("EAP-TLS: Cannot use PKCS11 key %s", pkey_identifier);
++ goto fail;
++ }
++ }
++ else
++ {
++ warn("EAP-TLS: Cannot load PKCS11 key %s", pkey_identifier);
++ log_ssl_errors();
++ }
++ }
++ else
++ {
++ if (!SSL_CTX_use_PrivateKey_file(ctx, privkeyfile, SSL_FILETYPE_PEM))
++ {
++ error("EAP-TLS: Cannot use private key %s", privkeyfile);
++ goto fail;
++ }
++ }
++
++ if (SSL_CTX_check_private_key(ctx) != 1) {
++ error("EAP-TLS: Private key %s fails security check", privkeyfile);
++ goto fail;
++ }
++
++ /* Explicitly set the NO_TICKETS flag to support Win7/Win8 clients */
++ SSL_CTX_set_options(ctx, SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3
++#ifdef SSL_OP_NO_TICKET
++ | SSL_OP_NO_TICKET
++#endif
++);
++ SSL_CTX_set_verify_depth(ctx, 5);
++ SSL_CTX_set_verify(ctx,
++ SSL_VERIFY_PEER |
++ SSL_VERIFY_FAIL_IF_NO_PEER_CERT,
++ &ssl_verify_callback);
++
++ if (crl_dir) {
++ if (!(certstore = SSL_CTX_get_cert_store(ctx))) {
++ error("EAP-TLS: Failed to get certificate store");
++ goto fail;
++ }
++
++ if (!(lookup =
++ X509_STORE_add_lookup(certstore, X509_LOOKUP_hash_dir()))) {
++ error("EAP-TLS: Store lookup for CRL failed");
++
++ goto fail;
++ }
++
++ X509_LOOKUP_add_dir(lookup, crl_dir, X509_FILETYPE_PEM);
++ X509_STORE_set_flags(certstore, X509_V_FLAG_CRL_CHECK);
++ }
++
++ if (crl_file) {
++ FILE *fp = NULL;
++ X509_CRL *crl = NULL;
++
++ fp = fopen(crl_file, "r");
++ if (!fp) {
++ error("EAP-TLS: Cannot open CRL file '%s'", crl_file);
++ goto fail;
++ }
++
++ crl = PEM_read_X509_CRL(fp, NULL, NULL, NULL);
++ if (!crl) {
++ error("EAP-TLS: Cannot read CRL file '%s'", crl_file);
++ goto fail;
++ }
++
++ if (!(certstore = SSL_CTX_get_cert_store(ctx))) {
++ error("EAP-TLS: Failed to get certificate store");
++ goto fail;
++ }
++ if (!X509_STORE_add_crl(certstore, crl)) {
++ error("EAP-TLS: Cannot add CRL to certificate store");
++ goto fail;
++ }
++ X509_STORE_set_flags(certstore, X509_V_FLAG_CRL_CHECK);
++
++ }
++
++ /*
++ * If a peer certificate file was specified, it must be valid, else fail
++ */
++ if (peer_certfile[0]) {
++ if (!(tmp = get_X509_from_file(peer_certfile))) {
++ error("EAP-TLS: Error loading client certificate from file %s",
++ peer_certfile);
++ goto fail;
++ }
++ X509_free(tmp);
++ }
++
++ return ctx;
++
++fail:
++ log_ssl_errors();
++ SSL_CTX_free(ctx);
++ return NULL;
++}
++
++/*
++ * Determine the maximum packet size by looking at the LCP handshake
++ */
++
++int eaptls_get_mtu(int unit)
++{
++ int mtu, mru;
++
++ lcp_options *wo = &lcp_wantoptions[unit];
++ lcp_options *go = &lcp_gotoptions[unit];
++ lcp_options *ho = &lcp_hisoptions[unit];
++ lcp_options *ao = &lcp_allowoptions[unit];
++
++ mtu = ho->neg_mru? ho->mru: PPP_MRU;
++ mru = go->neg_mru? MAX(wo->mru, go->mru): PPP_MRU;
++ mtu = MIN(MIN(mtu, mru), ao->mru)- PPP_HDRLEN - 10;
++
++ dbglog("MTU = %d", mtu);
++ return mtu;
++}
++
++
++/*
++ * Init the ssl handshake (server mode)
++ */
++int eaptls_init_ssl_server(eap_state * esp)
++{
++ struct eaptls_session *ets;
++ char servcertfile[MAXWORDLEN];
++ char clicertfile[MAXWORDLEN];
++ char cacertfile[MAXWORDLEN];
++ char pkfile[MAXWORDLEN];
++ /*
++ * Allocate new eaptls session
++ */
++ esp->es_server.ea_session = malloc(sizeof(struct eaptls_session));
++ if (!esp->es_server.ea_session)
++ fatal("Allocation error");
++ ets = esp->es_server.ea_session;
++
++ if (!esp->es_server.ea_peer) {
++ error("EAP-TLS: Error: client name not set (BUG)");
++ return 0;
++ }
++
++ strncpy(ets->peer, esp->es_server.ea_peer, MAXWORDLEN);
++
++ dbglog( "getting eaptls secret" );
++ if (!get_eaptls_secret(esp->es_unit, esp->es_server.ea_peer,
++ esp->es_server.ea_name, clicertfile,
++ servcertfile, cacertfile, pkfile, 1)) {
++ error( "EAP-TLS: Cannot get secret/password for client \"%s\", server \"%s\"",
++ esp->es_server.ea_peer, esp->es_server.ea_name );
++ return 0;
++ }
++
++ ets->mtu = eaptls_get_mtu(esp->es_unit);
++
++ ets->ctx = eaptls_init_ssl(1, cacertfile, servcertfile, clicertfile, pkfile);
++ if (!ets->ctx)
++ goto fail;
++
++ if (!(ets->ssl = SSL_new(ets->ctx)))
++ goto fail;
++
++ /*
++ * Set auto-retry to avoid timeouts on BIO_read
++ */
++ SSL_set_mode(ets->ssl, SSL_MODE_AUTO_RETRY);
++
++ /*
++ * Initialize the BIOs we use to read/write to ssl engine
++ */
++ ets->into_ssl = BIO_new(BIO_s_mem());
++ ets->from_ssl = BIO_new(BIO_s_mem());
++ SSL_set_bio(ets->ssl, ets->into_ssl, ets->from_ssl);
++
++ SSL_set_msg_callback(ets->ssl, ssl_msg_callback);
++ SSL_set_msg_callback_arg(ets->ssl, ets);
++
++ /*
++ * Attach the session struct to the connection, so we can later
++ * retrieve it when doing certificate verification
++ */
++ SSL_set_ex_data(ets->ssl, 0, ets);
++
++ SSL_set_accept_state(ets->ssl);
++
++ ets->data = NULL;
++ ets->datalen = 0;
++ ets->alert_sent = 0;
++ ets->alert_recv = 0;
++
++ /*
++ * If we specified the client certificate file, store it in ets->peercertfile,
++ * so we can check it later in ssl_verify_callback()
++ */
++ if (clicertfile[0])
++ strncpy(&ets->peercertfile[0], clicertfile, MAXWORDLEN);
++ else
++ ets->peercertfile[0] = 0;
++
++ return 1;
++
++fail:
++ SSL_CTX_free(ets->ctx);
++ return 0;
++}
++
++/*
++ * Init the ssl handshake (client mode)
++ */
++int eaptls_init_ssl_client(eap_state * esp)
++{
++ struct eaptls_session *ets;
++ char servcertfile[MAXWORDLEN];
++ char clicertfile[MAXWORDLEN];
++ char cacertfile[MAXWORDLEN];
++ char pkfile[MAXWORDLEN];
++
++ /*
++ * Allocate new eaptls session
++ */
++ esp->es_client.ea_session = malloc(sizeof(struct eaptls_session));
++ if (!esp->es_client.ea_session)
++ fatal("Allocation error");
++ ets = esp->es_client.ea_session;
++
++ /*
++ * If available, copy server name in ets; it will be used in cert
++ * verify
++ */
++ if (esp->es_client.ea_peer)
++ strncpy(ets->peer, esp->es_client.ea_peer, MAXWORDLEN);
++ else
++ ets->peer[0] = 0;
++
++ ets->mtu = eaptls_get_mtu(esp->es_unit);
++
++ dbglog( "calling get_eaptls_secret" );
++ if (!get_eaptls_secret(esp->es_unit, esp->es_client.ea_name,
++ ets->peer, clicertfile,
++ servcertfile, cacertfile, pkfile, 0)) {
++ error( "EAP-TLS: Cannot get secret/password for client \"%s\", server \"%s\"",
++ esp->es_client.ea_name, ets->peer );
++ return 0;
++ }
++
++ dbglog( "calling eaptls_init_ssl" );
++ ets->ctx = eaptls_init_ssl(0, cacertfile, clicertfile, servcertfile, pkfile);
++ if (!ets->ctx)
++ goto fail;
++
++ ets->ssl = SSL_new(ets->ctx);
++
++ if (!ets->ssl)
++ goto fail;
++
++ /*
++ * Initialize the BIOs we use to read/write to ssl engine
++ */
++ dbglog( "Initializing SSL BIOs" );
++ ets->into_ssl = BIO_new(BIO_s_mem());
++ ets->from_ssl = BIO_new(BIO_s_mem());
++ SSL_set_bio(ets->ssl, ets->into_ssl, ets->from_ssl);
++
++ SSL_set_msg_callback(ets->ssl, ssl_msg_callback);
++ SSL_set_msg_callback_arg(ets->ssl, ets);
++
++ /*
++ * Attach the session struct to the connection, so we can later
++ * retrieve it when doing certificate verification
++ */
++ SSL_set_ex_data(ets->ssl, 0, ets);
++
++ SSL_set_connect_state(ets->ssl);
++
++ ets->data = NULL;
++ ets->datalen = 0;
++ ets->alert_sent = 0;
++ ets->alert_recv = 0;
++
++ /*
++ * If we specified the server certificate file, store it in
++ * ets->peercertfile, so we can check it later in
++ * ssl_verify_callback()
++ */
++ if (servcertfile[0])
++ strncpy(ets->peercertfile, servcertfile, MAXWORDLEN);
++ else
++ ets->peercertfile[0] = 0;
++
++ return 1;
++
++fail:
++ dbglog( "eaptls_init_ssl_client: fail" );
++ SSL_CTX_free(ets->ctx);
++ return 0;
++
++}
++
++void eaptls_free_session(struct eaptls_session *ets)
++{
++ if (ets->ssl)
++ SSL_free(ets->ssl);
++
++ if (ets->ctx)
++ SSL_CTX_free(ets->ctx);
++
++ free(ets);
++}
++
++/*
++ * Handle a received packet, reassembling fragmented messages and
++ * passing them to the ssl engine
++ */
++int eaptls_receive(struct eaptls_session *ets, u_char * inp, int len)
++{
++ u_char flags;
++ u_int tlslen = 0;
++ u_char dummy[65536];
++
++ if (len < 1) {
++ warn("EAP-TLS: received no or invalid data");
++ return 1;
++ }
++
++ GETCHAR(flags, inp);
++ len--;
++
++ if (flags & EAP_TLS_FLAGS_LI && len >= 4) {
++ /*
++ * LenghtIncluded flag set -> this is the first packet of a message
++ */
++
++ /*
++ * the first 4 octets are the length of the EAP-TLS message
++ */
++ GETLONG(tlslen, inp);
++ len -= 4;
++
++ if (!ets->data) {
++
++ if (tlslen > EAP_TLS_MAX_LEN) {
++ error("EAP-TLS: TLS message length > %d, truncated", EAP_TLS_MAX_LEN);
++ tlslen = EAP_TLS_MAX_LEN;
++ }
++
++ /*
++ * Allocate memory for the whole message
++ */
++ ets->data = malloc(tlslen);
++ if (!ets->data)
++ fatal("EAP-TLS: allocation error\n");
++
++ ets->datalen = 0;
++ ets->tlslen = tlslen;
++ }
++ else
++ warn("EAP-TLS: non-first LI packet? that's odd...");
++ }
++ else if (!ets->data) {
++ /*
++ * A non fragmented message without LI flag
++ */
++
++ ets->data = malloc(len);
++ if (!ets->data)
++ fatal("EAP-TLS: allocation error\n");
++
++ ets->datalen = 0;
++ ets->tlslen = len;
++ }
++
++ if (flags & EAP_TLS_FLAGS_MF)
++ ets->frag = 1;
++ else
++ ets->frag = 0;
++
++ if (len < 0) {
++ warn("EAP-TLS: received malformed data");
++ return 1;
++ }
++
++ if (len + ets->datalen > ets->tlslen) {
++ warn("EAP-TLS: received data > TLS message length");
++ return 1;
++ }
++
++ BCOPY(inp, ets->data + ets->datalen, len);
++ ets->datalen += len;
++
++ if (!ets->frag) {
++
++ /*
++ * If we have the whole message, pass it to ssl
++ */
++
++ if (ets->datalen != ets->tlslen) {
++ warn("EAP-TLS: received data != TLS message length");
++ return 1;
++ }
++
++ if (BIO_write(ets->into_ssl, ets->data, ets->datalen) == -1)
++ log_ssl_errors();
++
++ SSL_read(ets->ssl, dummy, 65536);
++
++ free(ets->data);
++ ets->data = NULL;
++ ets->datalen = 0;
++ }
++
++ return 0;
++}
++
++/*
++ * Return an eap-tls packet in outp.
++ * A TLS message read from the ssl engine is buffered in ets->data.
++ * At each call we control if there is buffered data and send a
++ * packet of mtu bytes.
++ */
++int eaptls_send(struct eaptls_session *ets, u_char ** outp)
++{
++ bool first = 0;
++ int size;
++ u_char fromtls[65536];
++ int res;
++ u_char *start;
++
++ start = *outp;
++
++ if (!ets->data) {
++
++ if(!ets->alert_sent)
++ SSL_read(ets->ssl, fromtls, 65536);
++
++ /*
++ * Read from ssl
++ */
++ if ((res = BIO_read(ets->from_ssl, fromtls, 65536)) == -1)
++ fatal("No data from BIO_read");
++
++ ets->datalen = res;
++
++ ets->data = malloc(ets->datalen);
++ BCOPY(fromtls, ets->data, ets->datalen);
++
++ ets->offset = 0;
++ first = 1;
++
++ }
++
++ size = ets->datalen - ets->offset;
++
++ if (size > ets->mtu) {
++ size = ets->mtu;
++ ets->frag = 1;
++ } else
++ ets->frag = 0;
++
++ PUTCHAR(EAPT_TLS, *outp);
++
++ /*
++ * Set right flags and length if necessary
++ */
++ if (ets->frag && first) {
++ PUTCHAR(EAP_TLS_FLAGS_LI | EAP_TLS_FLAGS_MF, *outp);
++ PUTLONG(ets->datalen, *outp);
++ } else if (ets->frag) {
++ PUTCHAR(EAP_TLS_FLAGS_MF, *outp);
++ } else
++ PUTCHAR(0, *outp);
++
++ /*
++ * Copy the data in outp
++ */
++ BCOPY(ets->data + ets->offset, *outp, size);
++ INCPTR(size, *outp);
++
++ /*
++ * Copy the packet in retransmission buffer
++ */
++ BCOPY(start, &ets->rtx[0], *outp - start);
++ ets->rtx_len = *outp - start;
++
++ ets->offset += size;
++
++ if (ets->offset >= ets->datalen) {
++
++ /*
++ * The whole message has been sent
++ */
++
++ free(ets->data);
++ ets->data = NULL;
++ ets->datalen = 0;
++ ets->offset = 0;
++ }
++
++ return 0;
++}
++
++/*
++ * Get the sent packet from the retransmission buffer
++ */
++void eaptls_retransmit(struct eaptls_session *ets, u_char ** outp)
++{
++ BCOPY(ets->rtx, *outp, ets->rtx_len);
++ INCPTR(ets->rtx_len, *outp);
++}
++
++/*
++ * Verify a certificate.
++ * Most of the work (signatures and issuer attributes checking)
++ * is done by ssl; we check the CN in the peer certificate
++ * against the peer name.
++ */
++int ssl_verify_callback(int preverify_ok, X509_STORE_CTX * ctx)
++{
++ char subject[256];
++ char cn_str[256];
++ X509 *peer_cert;
++ int err, depth;
++ int ok = preverify_ok;
++ SSL *ssl;
++ struct eaptls_session *ets;
++
++ peer_cert = X509_STORE_CTX_get_current_cert(ctx);
++ err = X509_STORE_CTX_get_error(ctx);
++ depth = X509_STORE_CTX_get_error_depth(ctx);
++
++ dbglog("certificate verify depth: %d", depth);
++
++ if (auth_required && !ok) {
++ X509_NAME_oneline(X509_get_subject_name(peer_cert),
++ subject, 256);
++
++ X509_NAME_get_text_by_NID(X509_get_subject_name(peer_cert),
++ NID_commonName, cn_str, 256);
++
++ dbglog("Certificate verification error:\n depth: %d CN: %s"
++ "\n err: %d (%s)\n", depth, cn_str, err,
++ X509_verify_cert_error_string(err));
++
++ return 0;
++ }
++
++ ssl = X509_STORE_CTX_get_ex_data(ctx,
++ SSL_get_ex_data_X509_STORE_CTX_idx());
++
++ ets = (struct eaptls_session *)SSL_get_ex_data(ssl, 0);
++
++ if (ets == NULL) {
++ error("Error: SSL_get_ex_data returned NULL");
++ return 0;
++ }
++
++ log_ssl_errors();
++
++ if (!depth) { /* This is the peer certificate */
++
++ X509_NAME_oneline(X509_get_subject_name(peer_cert),
++ subject, 256);
++
++ X509_NAME_get_text_by_NID(X509_get_subject_name(peer_cert),
++ NID_commonName, cn_str, 256);
++
++ /*
++ * If acting as client and the name of the server wasn't specified
++ * explicitely, we can't verify the server authenticity
++ */
++ if (!ets->peer[0]) {
++ warn("Peer name not specified: no check");
++ return 1;
++ }
++
++ /*
++ * Check the CN
++ */
++ if (strcmp(cn_str, ets->peer)) {
++ error
++ ("Certificate verification error: CN (%s) != peer_name (%s)",
++ cn_str, ets->peer);
++ return 0;
++ }
++
++ warn("Certificate CN: %s , peer name %s", cn_str, ets->peer);
++
++ /*
++ * If a peer certificate file was specified, here we check it
++ */
++ if (ets->peercertfile[0]) {
++ if (ssl_cmp_certs(&ets->peercertfile[0], peer_cert)
++ != 0) {
++ error
++ ("Peer certificate doesn't match stored certificate");
++ return 0;
++ }
++ }
++ }
++
++ return 1;
++}
++
++/*
++ * Compare a certificate with the one stored in a file
++ */
++int ssl_cmp_certs(char *filename, X509 * a)
++{
++ X509 *b;
++ int ret;
++
++ if (!(b = get_X509_from_file(filename)))
++ return 1;
++
++ ret = X509_cmp(a, b);
++ X509_free(b);
++
++ return ret;
++
++}
++
++X509 *get_X509_from_file(char *filename)
++{
++ FILE *fp;
++ X509 *ret;
++
++ if (!(fp = fopen(filename, "r")))
++ return NULL;
++
++ ret = PEM_read_X509(fp, NULL, NULL, NULL);
++
++ fclose(fp);
++
++ return ret;
++}
++
++/*
++ * Every sent & received message this callback function is invoked,
++ * so we know when alert messages have arrived or are sent and
++ * we can print debug information about TLS handshake.
++ */
++void
++ssl_msg_callback(int write_p, int version, int content_type,
++ const void *buf, size_t len, SSL * ssl, void *arg)
++{
++ char string[256];
++ struct eaptls_session *ets = (struct eaptls_session *)arg;
++ unsigned char code;
++ const unsigned char*msg = buf;
++ int hvers = msg[1] << 8 | msg[2];
++
++ if(write_p)
++ strcpy(string, " -> ");
++ else
++ strcpy(string, " <- ");
++
++ switch(content_type) {
++
++ case SSL3_RT_HEADER:
++ strcat(string, "SSL/TLS Header: ");
++ switch(hvers) {
++ case SSL3_VERSION:
++ strcat(string, "SSL 3.0");
++ break;
++ case TLS1_VERSION:
++ strcat(string, "TLS 1.0");
++ break;
++ case TLS1_1_VERSION:
++ strcat(string, "TLS 1.1");
++ break;
++ case TLS1_2_VERSION:
++ strcat(string, "TLS 1.2");
++ break;
++ case DTLS1_VERSION:
++ strcat(string, "DTLS 1.0");
++ break;
++ case DTLS1_2_VERSION:
++ strcat(string, "DTLS 1.2");
++ break;
++ default:
++ strcat(string, "Unknown version");
++ }
++ break;
++
++ case SSL3_RT_ALERT:
++ strcat(string, "Alert: ");
++ code = msg[1];
++
++ if (write_p) {
++ ets->alert_sent = 1;
++ ets->alert_sent_desc = code;
++ } else {
++ ets->alert_recv = 1;
++ ets->alert_recv_desc = code;
++ }
++
++ strcat(string, SSL_alert_desc_string_long(code));
++ break;
++
++ case SSL3_RT_CHANGE_CIPHER_SPEC:
++ strcat(string, "ChangeCipherSpec");
++ break;
++
++ case SSL3_RT_HANDSHAKE:
++
++ strcat(string, "Handshake: ");
++ code = msg[0];
++
++ switch(code) {
++ case SSL3_MT_HELLO_REQUEST:
++ strcat(string,"Hello Request");
++ break;
++ case SSL3_MT_CLIENT_HELLO:
++ strcat(string,"Client Hello");
++ break;
++ case SSL3_MT_SERVER_HELLO:
++ strcat(string,"Server Hello");
++ break;
++#ifdef SSL3_MT_NEWSESSION_TICKET
++ case SSL3_MT_NEWSESSION_TICKET:
++ strcat(string,"New Session Ticket");
++ break;
++#endif
++ case SSL3_MT_CERTIFICATE:
++ strcat(string,"Certificate");
++ break;
++ case SSL3_MT_SERVER_KEY_EXCHANGE:
++ strcat(string,"Server Key Exchange");
++ break;
++ case SSL3_MT_CERTIFICATE_REQUEST:
++ strcat(string,"Certificate Request");
++ break;
++ case SSL3_MT_SERVER_DONE:
++ strcat(string,"Server Hello Done");
++ break;
++ case SSL3_MT_CERTIFICATE_VERIFY:
++ strcat(string,"Certificate Verify");
++ break;
++ case SSL3_MT_CLIENT_KEY_EXCHANGE:
++ strcat(string,"Client Key Exchange");
++ break;
++ case SSL3_MT_FINISHED:
++ strcat(string,"Finished");
++ break;
++
++ default:
++ sprintf( string, "Handshake: Unknown SSL3 code received: %d", code );
++ }
++ break;
++
++ default:
++ sprintf( string, "SSL message contains unknown content type: %d", content_type );
++
++ }
++
++ /* Alert messages must always be displayed */
++ if(content_type == SSL3_RT_ALERT)
++ error("%s", string);
++ else
++ dbglog("%s", string);
++}
++
+diff -Naur ppp-2.4.7/pppd/eap-tls.h ppp-2.4.7-eaptls-mppe-1.101b/pppd/eap-tls.h
+--- ppp-2.4.7/pppd/eap-tls.h 1970-01-01 01:00:00.000000000 +0100
++++ ppp-2.4.7-eaptls-mppe-1.101b/pppd/eap-tls.h 2018-06-02 01:42:04.023165433 +0200
+@@ -0,0 +1,107 @@
++/*
++ * eap-tls.h
++ *
++ * Copyright (c) Beniamino Galvani 2005 All rights reserved.
++ *
++ * Redistribution and use in source and binary forms, with or without
++ * modification, are permitted provided that the following conditions
++ * are met:
++ *
++ * 1. Redistributions of source code must retain the above copyright
++ * notice, this list of conditions and the following disclaimer.
++ *
++ * 2. Redistributions in binary form must reproduce the above copyright
++ * notice, this list of conditions and the following disclaimer in
++ * the documentation and/or other materials provided with the
++ * distribution.
++ *
++ * 3. The name(s) of the authors of this software must not be used to
++ * endorse or promote products derived from this software without
++ * prior written permission.
++ *
++ * THE AUTHORS OF THIS SOFTWARE DISCLAIM ALL WARRANTIES WITH REGARD TO
++ * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
++ * AND FITNESS, IN NO EVENT SHALL THE AUTHORS 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.
++ *
++ */
++
++#ifndef __EAP_TLS_H__
++#define __EAP_TLS_H__
++
++#include "eap.h"
++
++#include <openssl/ssl.h>
++#include <openssl/bio.h>
++#include <openssl/md5.h>
++
++#define EAP_TLS_FLAGS_LI 128 /* length included flag */
++#define EAP_TLS_FLAGS_MF 64 /* more fragments flag */
++#define EAP_TLS_FLAGS_START 32 /* start flag */
++
++#define EAP_TLS_MAX_LEN 65536 /* max eap tls packet size */
++
++struct eaptls_session
++{
++ u_char *data; /* buffered data */
++ int datalen; /* buffered data len */
++ int offset; /* from where to send */
++ int tlslen; /* total length of tls data */
++ bool frag; /* packet is fragmented */
++ SSL_CTX *ctx;
++ SSL *ssl; /* ssl connection */
++ BIO *from_ssl;
++ BIO *into_ssl;
++ char peer[MAXWORDLEN]; /* peer name */
++ char peercertfile[MAXWORDLEN];
++ bool alert_sent;
++ u_char alert_sent_desc;
++ bool alert_recv;
++ u_char alert_recv_desc;
++ char rtx[65536]; /* retransmission buffer */
++ int rtx_len;
++ int mtu; /* unit mtu */
++};
++
++typedef struct pw_cb_data
++{
++ const void *password;
++ const char *prompt_info;
++} PW_CB_DATA;
++
++
++int ssl_verify_callback(int, X509_STORE_CTX *);
++void ssl_msg_callback(int write_p, int version, int ct, const void *buf,
++ size_t len, SSL * ssl, void *arg);
++
++X509 *get_X509_from_file(char *filename);
++int ssl_cmp_certs(char *filename, X509 * a);
++
++SSL_CTX *eaptls_init_ssl(int init_server, char *cacertfile,
++ char *certfile, char *peer_certfile, char *privkeyfile);
++int eaptls_init_ssl_server(eap_state * esp);
++int eaptls_init_ssl_client(eap_state * esp);
++void eaptls_free_session(struct eaptls_session *ets);
++
++int eaptls_receive(struct eaptls_session *ets, u_char * inp, int len);
++int eaptls_send(struct eaptls_session *ets, u_char ** outp);
++void eaptls_retransmit(struct eaptls_session *ets, u_char ** outp);
++
++int get_eaptls_secret(int unit, char *client, char *server,
++ char *clicertfile, char *servcertfile, char *cacertfile,
++ char *pkfile, int am_server);
++
++#ifdef MPPE
++#include "mppe.h" /* MPPE_MAX_KEY_LEN */
++extern u_char mppe_send_key[MPPE_MAX_KEY_LEN];
++extern u_char mppe_recv_key[MPPE_MAX_KEY_LEN];
++extern int mppe_keys_set;
++
++void eaptls_gen_mppe_keys(struct eaptls_session *ets, const char *prf_label, int client);
++
++#endif
++
++#endif
+diff -Naur ppp-2.4.7/pppd/eap.c ppp-2.4.7-eaptls-mppe-1.101b/pppd/eap.c
+--- ppp-2.4.7/pppd/eap.c 2014-08-09 14:31:39.000000000 +0200
++++ ppp-2.4.7-eaptls-mppe-1.101b/pppd/eap.c 2018-06-02 01:42:04.023165433 +0200
+@@ -43,6 +43,11 @@
+ * Based on draft-ietf-pppext-eap-srp-03.txt.
+ */
+
++/*
++ * Modification by Beniamino Galvani, Mar 2005
++ * Implemented EAP-TLS authentication
++ */
++
+ #define RCSID "$Id: eap.c,v 1.4 2004/11/09 22:39:25 paulus Exp $"
+
+ /*
+@@ -62,8 +67,12 @@
+
+ #include "pppd.h"
+ #include "pathnames.h"
+-#include "md5.h"
+ #include "eap.h"
++#ifdef USE_EAPTLS
++#include "eap-tls.h"
++#else
++#include "md5.h"
++#endif /* USE_EAPTLS */
+
+ #ifdef USE_SRP
+ #include <t_pwd.h>
+@@ -209,6 +218,9 @@
+ esp->es_server.ea_id = (u_char)(drand48() * 0x100);
+ esp->es_client.ea_timeout = EAP_DEFREQTIME;
+ esp->es_client.ea_maxrequests = EAP_DEFALLOWREQ;
++#ifdef USE_EAPTLS
++ esp->es_client.ea_using_eaptls = 0;
++#endif /* USE_EAPTLS */
+ }
+
+ /*
+@@ -436,8 +448,16 @@
+ u_char vals[2];
+ struct b64state bs;
+ #endif /* USE_SRP */
++#ifdef USE_EAPTLS
++ struct eaptls_session *ets;
++ int secret_len;
++ char secret[MAXWORDLEN];
++#endif /* USE_EAPTLS */
+
+ esp->es_server.ea_timeout = esp->es_savedtime;
++#ifdef USE_EAPTLS
++ esp->es_server.ea_prev_state = esp->es_server.ea_state;
++#endif /* USE_EAPTLS */
+ switch (esp->es_server.ea_state) {
+ case eapBadAuth:
+ return;
+@@ -562,9 +582,79 @@
+ break;
+ }
+ #endif /* USE_SRP */
++#ifdef USE_EAPTLS
++ if (!get_secret(esp->es_unit, esp->es_server.ea_peer,
++ esp->es_server.ea_name, secret, &secret_len, 1)) {
++
++ esp->es_server.ea_state = eapTlsStart;
++ break;
++ }
++#endif /* USE_EAPTLS */
++
+ esp->es_server.ea_state = eapMD5Chall;
+ break;
+
++#ifdef USE_EAPTLS
++ case eapTlsStart:
++ /* Initialize ssl session */
++ if(!eaptls_init_ssl_server(esp)) {
++ esp->es_server.ea_state = eapBadAuth;
++ break;
++ }
++
++ esp->es_server.ea_state = eapTlsRecv;
++ break;
++
++ case eapTlsRecv:
++ ets = (struct eaptls_session *) esp->es_server.ea_session;
++
++ if(ets->alert_sent) {
++ esp->es_server.ea_state = eapTlsSendAlert;
++ break;
++ }
++
++ if (status) {
++ esp->es_server.ea_state = eapBadAuth;
++ break;
++ }
++ ets = (struct eaptls_session *) esp->es_server.ea_session;
++
++ if(ets->frag)
++ esp->es_server.ea_state = eapTlsSendAck;
++ else
++ esp->es_server.ea_state = eapTlsSend;
++ break;
++
++ case eapTlsSend:
++ ets = (struct eaptls_session *) esp->es_server.ea_session;
++
++ if(ets->frag)
++ esp->es_server.ea_state = eapTlsRecvAck;
++ else
++ if(SSL_is_init_finished(ets->ssl))
++ esp->es_server.ea_state = eapTlsRecvClient;
++ else
++ esp->es_server.ea_state = eapTlsRecv;
++ break;
++
++ case eapTlsSendAck:
++ esp->es_server.ea_state = eapTlsRecv;
++ break;
++
++ case eapTlsRecvAck:
++ if (status) {
++ esp->es_server.ea_state = eapBadAuth;
++ break;
++ }
++
++ esp->es_server.ea_state = eapTlsSend;
++ break;
++
++ case eapTlsSendAlert:
++ esp->es_server.ea_state = eapTlsRecvAlertAck;
++ break;
++#endif /* USE_EAPTLS */
++
+ case eapSRP1:
+ #ifdef USE_SRP
+ ts = (struct t_server *)esp->es_server.ea_session;
+@@ -718,6 +808,30 @@
+ INCPTR(esp->es_server.ea_namelen, outp);
+ break;
+
++#ifdef USE_EAPTLS
++ case eapTlsStart:
++ PUTCHAR(EAPT_TLS, outp);
++ PUTCHAR(EAP_TLS_FLAGS_START, outp);
++ eap_figure_next_state(esp, 0);
++ break;
++
++ case eapTlsSend:
++ eaptls_send(esp->es_server.ea_session, &outp);
++ eap_figure_next_state(esp, 0);
++ break;
++
++ case eapTlsSendAck:
++ PUTCHAR(EAPT_TLS, outp);
++ PUTCHAR(0, outp);
++ eap_figure_next_state(esp, 0);
++ break;
++
++ case eapTlsSendAlert:
++ eaptls_send(esp->es_server.ea_session, &outp);
++ eap_figure_next_state(esp, 0);
++ break;
++#endif /* USE_EAPTLS */
++
+ #ifdef USE_SRP
+ case eapSRP1:
+ PUTCHAR(EAPT_SRP, outp);
+@@ -904,11 +1018,57 @@
+ eap_server_timeout(arg)
+ void *arg;
+ {
++#ifdef USE_EAPTLS
++ u_char *outp;
++ u_char *lenloc;
++ int outlen;
++#endif /* USE_EAPTLS */
++
+ eap_state *esp = (eap_state *) arg;
+
+ if (!eap_server_active(esp))
+ return;
+
++#ifdef USE_EAPTLS
++ switch(esp->es_server.ea_prev_state) {
++
++ /*
++ * In eap-tls the state changes after a request, so we return to
++ * previous state ...
++ */
++ case(eapTlsStart):
++ case(eapTlsSendAck):
++ esp->es_server.ea_state = esp->es_server.ea_prev_state;
++ break;
++
++ /*
++ * ... or resend the stored data
++ */
++ case(eapTlsSend):
++ case(eapTlsSendAlert):
++ outp = outpacket_buf;
++ MAKEHEADER(outp, PPP_EAP);
++ PUTCHAR(EAP_REQUEST, outp);
++ PUTCHAR(esp->es_server.ea_id, outp);
++ lenloc = outp;
++ INCPTR(2, outp);
++
++ eaptls_retransmit(esp->es_server.ea_session, &outp);
++
++ outlen = (outp - outpacket_buf) - PPP_HDRLEN;
++ PUTSHORT(outlen, lenloc);
++ output(esp->es_unit, outpacket_buf, outlen + PPP_HDRLEN);
++ esp->es_server.ea_requests++;
++
++ if (esp->es_server.ea_timeout > 0)
++ TIMEOUT(eap_server_timeout, esp, esp->es_server.ea_timeout);
++
++ return;
++ default:
++ break;
++ }
++#endif /* USE_EAPTLS */
++
+ /* EAP ID number must not change on timeout. */
+ eap_send_request(esp);
+ }
+@@ -1166,6 +1326,81 @@
+ }
+ #endif /* USE_SRP */
+
++#ifdef USE_EAPTLS
++/*
++ * Send an EAP-TLS response message with tls data
++ */
++static void
++eap_tls_response(esp, id)
++eap_state *esp;
++u_char id;
++{
++ u_char *outp;
++ int outlen;
++ u_char *lenloc;
++
++ outp = outpacket_buf;
++
++ MAKEHEADER(outp, PPP_EAP);
++
++ PUTCHAR(EAP_RESPONSE, outp);
++ PUTCHAR(id, outp);
++
++ lenloc = outp;
++ INCPTR(2, outp);
++
++ /*
++ If the id in the request is unchanged, we must retransmit
++ the old data
++ */
++ if(id == esp->es_client.ea_id)
++ eaptls_retransmit(esp->es_client.ea_session, &outp);
++ else
++ eaptls_send(esp->es_client.ea_session, &outp);
++
++ outlen = (outp - outpacket_buf) - PPP_HDRLEN;
++ PUTSHORT(outlen, lenloc);
++
++ output(esp->es_unit, outpacket_buf, PPP_HDRLEN + outlen);
++
++ esp->es_client.ea_id = id;
++
++}
++
++/*
++ * Send an EAP-TLS ack
++ */
++static void
++eap_tls_sendack(esp, id)
++eap_state *esp;
++u_char id;
++{
++ u_char *outp;
++ int outlen;
++ u_char *lenloc;
++
++ outp = outpacket_buf;
++
++ MAKEHEADER(outp, PPP_EAP);
++
++ PUTCHAR(EAP_RESPONSE, outp);
++ PUTCHAR(id, outp);
++ esp->es_client.ea_id = id;
++
++ lenloc = outp;
++ INCPTR(2, outp);
++
++ PUTCHAR(EAPT_TLS, outp);
++ PUTCHAR(0, outp);
++
++ outlen = (outp - outpacket_buf) - PPP_HDRLEN;
++ PUTSHORT(outlen, lenloc);
++
++ output(esp->es_unit, outpacket_buf, PPP_HDRLEN + outlen);
++
++}
++#endif /* USE_EAPTLS */
++
+ static void
+ eap_send_nak(esp, id, type)
+ eap_state *esp;
+@@ -1320,6 +1555,11 @@
+ char rhostname[256];
+ MD5_CTX mdContext;
+ u_char hash[MD5_SIGNATURE_SIZE];
++#ifdef USE_EAPTLS
++ u_char flags;
++ struct eaptls_session *ets = esp->es_client.ea_session;
++#endif /* USE_EAPTLS */
++
+ #ifdef USE_SRP
+ struct t_client *tc;
+ struct t_num sval, gval, Nval, *Ap, Bval;
+@@ -1456,6 +1696,100 @@
+ esp->es_client.ea_namelen);
+ break;
+
++#ifdef USE_EAPTLS
++ case EAPT_TLS:
++
++ switch(esp->es_client.ea_state) {
++
++ case eapListen:
++
++ if (len < 1) {
++ error("EAP: received EAP-TLS Listen packet with no data");
++ /* Bogus request; wait for something real. */
++ return;
++ }
++ GETCHAR(flags, inp);
++ if(flags & EAP_TLS_FLAGS_START){
++
++ esp->es_client.ea_using_eaptls = 1;
++
++ if (explicit_remote){
++ esp->es_client.ea_peer = strdup(remote_name);
++ esp->es_client.ea_peerlen = strlen(remote_name);
++ } else
++ esp->es_client.ea_peer = NULL;
++
++ /* Init ssl session */
++ if(!eaptls_init_ssl_client(esp)) {
++ dbglog("cannot init ssl");
++ eap_send_nak(esp, id, EAPT_TLS);
++ esp->es_client.ea_using_eaptls = 0;
++ break;
++ }
++
++ ets = esp->es_client.ea_session;
++ eap_tls_response(esp, id);
++ esp->es_client.ea_state = (ets->frag ? eapTlsRecvAck :
++ eapTlsRecv);
++ break;
++ }
++
++ /* The server has sent a bad start packet. */
++ eap_send_nak(esp, id, EAPT_TLS);
++ break;
++
++ case eapTlsRecvAck:
++ eap_tls_response(esp, id);
++ esp->es_client.ea_state = (ets->frag ? eapTlsRecvAck :
++ eapTlsRecv);
++ break;
++
++ case eapTlsRecv:
++ if (len < 1) {
++ error("EAP: discarding EAP-TLS Receive packet with no data");
++ /* Bogus request; wait for something real. */
++ return;
++ }
++ eaptls_receive(ets, inp, len);
++
++ if(ets->frag) {
++ eap_tls_sendack(esp, id);
++ esp->es_client.ea_state = eapTlsRecv;
++ break;
++ }
++
++ if(ets->alert_recv) {
++ eap_tls_sendack(esp, id);
++ esp->es_client.ea_state = eapTlsRecvFailure;
++ break;
++ }
++
++ /* Check if TLS handshake is finished */
++ if(SSL_is_init_finished(ets->ssl)){
++#ifdef MPPE
++ eaptls_gen_mppe_keys( ets, "client EAP encryption", 1 );
++#endif
++ eaptls_free_session(ets);
++ eap_tls_sendack(esp, id);
++ esp->es_client.ea_state = eapTlsRecvSuccess;
++ break;
++ }
++
++ eap_tls_response(esp,id);
++ esp->es_client.ea_state = (ets->frag ? eapTlsRecvAck :
++ eapTlsRecv);
++
++ break;
++
++ default:
++ eap_send_nak(esp, id, EAPT_TLS);
++ esp->es_client.ea_using_eaptls = 0;
++ break;
++ }
++
++ break;
++#endif /* USE_EAPTLS */
++
+ #ifdef USE_SRP
+ case EAPT_SRP:
+ if (len < 1) {
+@@ -1737,6 +2071,11 @@
+ u_char dig[SHA_DIGESTSIZE];
+ #endif /* USE_SRP */
+
++#ifdef USE_EAPTLS
++ struct eaptls_session *ets;
++ u_char flags;
++#endif /* USE_EAPTLS */
++
+ if (esp->es_server.ea_id != id) {
+ dbglog("EAP: discarding Response %d; expected ID %d", id,
+ esp->es_server.ea_id);
+@@ -1776,6 +2115,64 @@
+ eap_figure_next_state(esp, 0);
+ break;
+
++#ifdef USE_EAPTLS
++ case EAPT_TLS:
++ switch(esp->es_server.ea_state) {
++
++ case eapTlsRecv:
++
++ ets = (struct eaptls_session *) esp->es_server.ea_session;
++ eap_figure_next_state(esp,
++ eaptls_receive(esp->es_server.ea_session, inp, len));
++
++ if(ets->alert_recv) {
++ eap_send_failure(esp);
++ break;
++ }
++ break;
++
++ case eapTlsRecvAck:
++ if(len > 1) {
++ dbglog("EAP-TLS ACK with extra data");
++ }
++ eap_figure_next_state(esp, 0);
++ break;
++
++ case eapTlsRecvClient:
++ /* Receive authentication response from client */
++
++ if (len > 0) {
++ GETCHAR(flags, inp);
++
++ if(len == 1 && !flags) { /* Ack = ok */
++#ifdef MPPE
++ eaptls_gen_mppe_keys( esp->es_server.ea_session, "client EAP encryption", 0 );
++#endif
++ eap_send_success(esp);
++ }
++ else { /* failure */
++ warn("Server authentication failed");
++ eap_send_failure(esp);
++ }
++ }
++ else
++ warn("Bogus EAP-TLS packet received from client");
++
++ eaptls_free_session(esp->es_server.ea_session);
++
++ break;
++
++ case eapTlsRecvAlertAck:
++ eap_send_failure(esp);
++ break;
++
++ default:
++ eap_figure_next_state(esp, 1);
++ break;
++ }
++ break;
++#endif /* USE_EAPTLS */
++
+ case EAPT_NOTIFICATION:
+ dbglog("EAP unexpected Notification; response discarded");
+ break;
+@@ -1807,6 +2204,13 @@
+ esp->es_server.ea_state = eapMD5Chall;
+ break;
+
++#ifdef USE_EAPTLS
++ /* Send EAP-TLS start packet */
++ case EAPT_TLS:
++ esp->es_server.ea_state = eapTlsStart;
++ break;
++#endif /* USE_EAPTLS */
++
+ default:
+ dbglog("EAP: peer requesting unknown Type %d", vallen);
+ switch (esp->es_server.ea_state) {
+@@ -2018,13 +2422,27 @@
+ int id;
+ int len;
+ {
+- if (esp->es_client.ea_state != eapOpen && !eap_client_active(esp)) {
++ if (esp->es_client.ea_state != eapOpen && !eap_client_active(esp)
++#ifdef USE_EAPTLS
++ && esp->es_client.ea_state != eapTlsRecvSuccess
++#endif /* USE_EAPTLS */
++ ) {
+ dbglog("EAP unexpected success message in state %s (%d)",
+ eap_state_name(esp->es_client.ea_state),
+ esp->es_client.ea_state);
+ return;
+ }
+
++#ifdef USE_EAPTLS
++ if(esp->es_client.ea_using_eaptls && esp->es_client.ea_state !=
++ eapTlsRecvSuccess) {
++ dbglog("EAP-TLS unexpected success message in state %s (%d)",
++ eap_state_name(esp->es_client.ea_state),
++ esp->es_client.ea_state);
++ return;
++ }
++#endif /* USE_EAPTLS */
++
+ if (esp->es_client.ea_timeout > 0) {
+ UNTIMEOUT(eap_client_timeout, (void *)esp);
+ }
+@@ -2150,6 +2568,9 @@
+ int code, id, len, rtype, vallen;
+ u_char *pstart;
+ u_int32_t uval;
++#ifdef USE_EAPTLS
++ u_char flags;
++#endif /* USE_EAPTLS */
+
+ if (inlen < EAP_HEADERLEN)
+ return (0);
+@@ -2214,6 +2635,24 @@
+ }
+ break;
+
++#ifdef USE_EAPTLS
++ case EAPT_TLS:
++ if (len < 1)
++ break;
++ GETCHAR(flags, inp);
++ len--;
++
++ if(flags == 0 && len == 0){
++ printer(arg, " Ack");
++ break;
++ }
++
++ printer(arg, flags & EAP_TLS_FLAGS_LI ? " L":" -");
++ printer(arg, flags & EAP_TLS_FLAGS_MF ? "M":"-");
++ printer(arg, flags & EAP_TLS_FLAGS_START ? "S":"- ");
++ break;
++#endif /* USE_EAPTLS */
++
+ case EAPT_SRP:
+ if (len < 3)
+ goto truncated;
+@@ -2325,6 +2764,25 @@
+ }
+ break;
+
++#ifdef USE_EAPTLS
++ case EAPT_TLS:
++ if (len < 1)
++ break;
++ GETCHAR(flags, inp);
++ len--;
++
++ if(flags == 0 && len == 0){
++ printer(arg, " Ack");
++ break;
++ }
++
++ printer(arg, flags & EAP_TLS_FLAGS_LI ? " L":" -");
++ printer(arg, flags & EAP_TLS_FLAGS_MF ? "M":"-");
++ printer(arg, flags & EAP_TLS_FLAGS_START ? "S":"- ");
++
++ break;
++#endif /* USE_EAPTLS */
++
+ case EAPT_NAK:
+ if (len <= 0) {
+ printer(arg, " <missing hint>");
+@@ -2426,3 +2884,4 @@
+
+ return (inp - pstart);
+ }
++
+diff -Naur ppp-2.4.7/pppd/eap.h ppp-2.4.7-eaptls-mppe-1.101b/pppd/eap.h
+--- ppp-2.4.7/pppd/eap.h 2014-08-09 14:31:39.000000000 +0200
++++ ppp-2.4.7-eaptls-mppe-1.101b/pppd/eap.h 2018-06-02 01:42:04.023165433 +0200
+@@ -84,6 +84,16 @@
+ eapClosed, /* Authentication not in use */
+ eapListen, /* Client ready (and timer running) */
+ eapIdentify, /* EAP Identify sent */
++ eapTlsStart, /* Send EAP-TLS start packet */
++ eapTlsRecv, /* Receive EAP-TLS tls data */
++ eapTlsSendAck, /* Send EAP-TLS ack */
++ eapTlsSend, /* Send EAP-TLS tls data */
++ eapTlsRecvAck, /* Receive EAP-TLS ack */
++ eapTlsRecvClient, /* Receive EAP-TLS auth response from client*/
++ eapTlsSendAlert, /* Send EAP-TLS tls alert (server)*/
++ eapTlsRecvAlertAck, /* Receive EAP-TLS ack after sending alert */
++ eapTlsRecvSuccess, /* Receive EAP success */
++ eapTlsRecvFailure, /* Receive EAP failure */
+ eapSRP1, /* Sent EAP SRP-SHA1 Subtype 1 */
+ eapSRP2, /* Sent EAP SRP-SHA1 Subtype 2 */
+ eapSRP3, /* Sent EAP SRP-SHA1 Subtype 3 */
+@@ -95,9 +105,18 @@
+
+ #define EAP_STATES \
+ "Initial", "Pending", "Closed", "Listen", "Identify", \
++ "TlsStart", "TlsRecv", "TlsSendAck", "TlsSend", "TlsRecvAck", "TlsRecvClient",\
++ "TlsSendAlert", "TlsRecvAlertAck" , "TlsRecvSuccess", "TlsRecvFailure", \
+ "SRP1", "SRP2", "SRP3", "MD5Chall", "Open", "SRP4", "BadAuth"
+
+-#define eap_client_active(esp) ((esp)->es_client.ea_state == eapListen)
++#ifdef USE_EAPTLS
++#define eap_client_active(esp) ((esp)->es_client.ea_state != eapInitial &&\
++ (esp)->es_client.ea_state != eapPending &&\
++ (esp)->es_client.ea_state != eapClosed)
++#else
++#define eap_client_active(esp) ((esp)->es_client.ea_state == eapListen)
++#endif /* USE_EAPTLS */
++
+ #define eap_server_active(esp) \
+ ((esp)->es_server.ea_state >= eapIdentify && \
+ (esp)->es_server.ea_state <= eapMD5Chall)
+@@ -112,11 +131,17 @@
+ u_short ea_namelen; /* Length of our name */
+ u_short ea_peerlen; /* Length of peer's name */
+ enum eap_state_code ea_state;
++#ifdef USE_EAPTLS
++ enum eap_state_code ea_prev_state;
++#endif
+ u_char ea_id; /* Current id */
+ u_char ea_requests; /* Number of Requests sent/received */
+ u_char ea_responses; /* Number of Responses */
+ u_char ea_type; /* One of EAPT_* */
+ u_int32_t ea_keyflags; /* SRP shared key usage flags */
++#ifdef USE_EAPTLS
++ bool ea_using_eaptls;
++#endif
+ };
+
+ /*
+@@ -139,7 +164,12 @@
+ * Timeouts.
+ */
+ #define EAP_DEFTIMEOUT 3 /* Timeout (seconds) for rexmit */
++#ifdef USE_EAPTLS
++#define EAP_DEFTRANSMITS 30 /* max # times to transmit */
++ /* certificates can be long ... */
++#else
+ #define EAP_DEFTRANSMITS 10 /* max # times to transmit */
++#endif /* USE_EAPTLS */
+ #define EAP_DEFREQTIME 20 /* Time to wait for peer request */
+ #define EAP_DEFALLOWREQ 20 /* max # times to accept requests */
+
+diff -Naur ppp-2.4.7/pppd/md5.c ppp-2.4.7-eaptls-mppe-1.101b/pppd/md5.c
+--- ppp-2.4.7/pppd/md5.c 2014-08-09 14:31:39.000000000 +0200
++++ ppp-2.4.7-eaptls-mppe-1.101b/pppd/md5.c 2018-06-02 01:42:04.023165433 +0200
+@@ -33,6 +33,8 @@
+ ***********************************************************************
+ */
+
++#ifndef USE_EAPTLS
++
+ #include <string.h>
+ #include "md5.h"
+
+@@ -305,3 +307,5 @@
+ ** End of md5.c **
+ ******************************** (cut) ********************************
+ */
++#endif /* USE_EAPTLS */
++
+diff -Naur ppp-2.4.7/pppd/md5.h ppp-2.4.7-eaptls-mppe-1.101b/pppd/md5.h
+--- ppp-2.4.7/pppd/md5.h 2014-08-09 14:31:39.000000000 +0200
++++ ppp-2.4.7-eaptls-mppe-1.101b/pppd/md5.h 2018-06-02 01:42:04.024165430 +0200
+@@ -36,6 +36,7 @@
+ ** documentation and/or software. **
+ ***********************************************************************
+ */
++#ifndef USE_EAPTLS
+
+ #ifndef __MD5_INCLUDE__
+
+@@ -63,3 +64,5 @@
+
+ #define __MD5_INCLUDE__
+ #endif /* __MD5_INCLUDE__ */
++
++#endif /* USE_EAPTLS */
+diff -Naur ppp-2.4.7/pppd/pathnames.h ppp-2.4.7-eaptls-mppe-1.101b/pppd/pathnames.h
+--- ppp-2.4.7/pppd/pathnames.h 2014-08-09 14:31:39.000000000 +0200
++++ ppp-2.4.7-eaptls-mppe-1.101b/pppd/pathnames.h 2018-06-02 01:42:04.024165430 +0200
+@@ -21,6 +21,13 @@
+ #define _PATH_UPAPFILE _ROOT_PATH "/etc/ppp/pap-secrets"
+ #define _PATH_CHAPFILE _ROOT_PATH "/etc/ppp/chap-secrets"
+ #define _PATH_SRPFILE _ROOT_PATH "/etc/ppp/srp-secrets"
++
++#ifdef USE_EAPTLS
++#define _PATH_EAPTLSCLIFILE _ROOT_PATH "/etc/ppp/eaptls-client"
++#define _PATH_EAPTLSSERVFILE _ROOT_PATH "/etc/ppp/eaptls-server"
++#define _PATH_OPENSSLCONFFILE _ROOT_PATH "/etc/ppp/openssl.cnf"
++#endif /* USE_EAPTLS */
++
+ #define _PATH_SYSOPTIONS _ROOT_PATH "/etc/ppp/options"
+ #define _PATH_IPUP _ROOT_PATH "/etc/ppp/ip-up"
+ #define _PATH_IPDOWN _ROOT_PATH "/etc/ppp/ip-down"
+diff -Naur ppp-2.4.7/pppd/plugins/Makefile.linux ppp-2.4.7-eaptls-mppe-1.101b/pppd/plugins/Makefile.linux
+--- ppp-2.4.7/pppd/plugins/Makefile.linux 2014-08-09 14:31:39.000000000 +0200
++++ ppp-2.4.7-eaptls-mppe-1.101b/pppd/plugins/Makefile.linux 2018-06-02 01:42:04.024165430 +0200
+@@ -4,6 +4,9 @@
+ LDFLAGS = -shared
+ INSTALL = install
+
++# EAP-TLS
++CFLAGS += -DUSE_EAPTLS=1
++
+ DESTDIR = $(INSTROOT)@DESTDIR@
+ BINDIR = $(DESTDIR)/sbin
+ MANDIR = $(DESTDIR)/share/man/man8
+diff -Naur ppp-2.4.7/pppd/plugins/passprompt.c ppp-2.4.7-eaptls-mppe-1.101b/pppd/plugins/passprompt.c
+--- ppp-2.4.7/pppd/plugins/passprompt.c 2014-08-09 14:31:39.000000000 +0200
++++ ppp-2.4.7-eaptls-mppe-1.101b/pppd/plugins/passprompt.c 2018-06-02 01:42:04.024165430 +0200
+@@ -107,4 +107,7 @@
+ {
+ add_options(options);
+ pap_passwd_hook = promptpass;
++#ifdef USE_EAPTLS
++ eaptls_passwd_hook = promptpass;
++#endif
+ }
+diff -Naur ppp-2.4.7/pppd/plugins/passwordfd.c ppp-2.4.7-eaptls-mppe-1.101b/pppd/plugins/passwordfd.c
+--- ppp-2.4.7/pppd/plugins/passwordfd.c 2014-08-09 14:31:39.000000000 +0200
++++ ppp-2.4.7-eaptls-mppe-1.101b/pppd/plugins/passwordfd.c 2018-06-02 01:42:04.024165430 +0200
+@@ -79,4 +79,8 @@
+
+ chap_check_hook = pwfd_check;
+ chap_passwd_hook = pwfd_passwd;
++
++#ifdef USE_EAPTLS
++ eaptls_passwd_hook = pwfd_passwd;
++#endif
+ }
+diff -Naur ppp-2.4.7/pppd/pppd.8 ppp-2.4.7-eaptls-mppe-1.101b/pppd/pppd.8
+--- ppp-2.4.7/pppd/pppd.8 2014-08-09 14:31:39.000000000 +0200
++++ ppp-2.4.7-eaptls-mppe-1.101b/pppd/pppd.8 2018-06-02 01:42:04.025165427 +0200
+@@ -248,6 +248,12 @@
+ compression in the corresponding direction. Use \fInobsdcomp\fR or
+ \fIbsdcomp 0\fR to disable BSD-Compress compression entirely.
+ .TP
++.B ca \fIca-file
++(EAP-TLS) Use the file \fIca-file\fR as the X.509 Certificate Authority
++(CA) file (in PEM format), needed for setting up an EAP-TLS connection.
++This option is used on the client-side in conjunction with the \fBcert\fR
++and \fBkey\fR options.
++.TP
+ .B cdtrcts
+ Use a non-standard hardware flow control (i.e. DTR/CTS) to control
+ the flow of data on the serial port. If neither the \fIcrtscts\fR,
+@@ -259,6 +265,12 @@
+ bi-directional flow control. The sacrifice is that this flow
+ control mode does not permit using DTR as a modem control line.
+ .TP
++.B cert \fIcertfile
++(EAP-TLS) Use the file \fIcertfile\fR as the X.509 certificate (in PEM
++format), needed for setting up an EAP-TLS connection. This option is
++used on the client-side in conjunction with the \fBca\fR and
++\fBkey\fR options.
++.TP
+ .B chap\-interval \fIn
+ If this option is given, pppd will rechallenge the peer every \fIn\fR
+ seconds.
+@@ -287,6 +299,18 @@
+ 1000 (1 second). This wait period only applies if the \fBconnect\fR
+ or \fBpty\fR option is used.
+ .TP
++.B crl \fIfilename
++(EAP-TLS) Use the file \fIfilename\fR as the Certificate Revocation List
++to check for the validity of the peer's certificate. This option is not
++mandatory for setting up an EAP-TLS connection. Also see the \fBcrl-dir\fR
++option.
++.TP
++.B crl-dir \fIdirectory
++(EAP-TLS) Use the directory \fIdirectory\fR to scan for CRL files in
++has format ($hash.r0) to check for the validity of the peer's certificate.
++This option is not mandatory for setting up an EAP-TLS connection.
++Also see the \fBcrl\fR option.
++.TP
+ .B debug
+ Enables connection debugging facilities.
+ If this option is given, pppd will log the contents of all
+@@ -551,6 +575,12 @@
+ the kernel are logged by syslog(1) to a file as directed in the
+ /etc/syslog.conf configuration file.
+ .TP
++.B key \fIkeyfile
++(EAP-TLS) Use the file \fIkeyfile\fR as the private key file (in PEM
++format), needed for setting up an EAP-TLS connection. This option is
++used on the client-side in conjunction with the \fBca\fR and
++\fBcert\fR options.
++.TP
+ .B ktune
+ Enables pppd to alter kernel settings as appropriate. Under Linux,
+ pppd will enable IP forwarding (i.e. set /proc/sys/net/ipv4/ip_forward
+@@ -709,6 +739,9 @@
+ Disable Address/Control compression in both directions (send and
+ receive).
+ .TP
++.B need-peer-eap
++(EAP-TLS) Require the peer to verify our authentication credentials.
++.TP
+ .B noauth
+ Do not require the peer to authenticate itself. This option is
+ privileged.
+diff -Naur ppp-2.4.7/pppd/pppd.h ppp-2.4.7-eaptls-mppe-1.101b/pppd/pppd.h
+--- ppp-2.4.7/pppd/pppd.h 2014-08-09 14:31:39.000000000 +0200
++++ ppp-2.4.7-eaptls-mppe-1.101b/pppd/pppd.h 2018-06-02 01:42:04.025165427 +0200
+@@ -325,6 +325,11 @@
+ extern bool dryrun; /* check everything, print options, exit */
+ extern int child_wait; /* # seconds to wait for children at end */
+
++#ifdef USE_EAPTLS
++extern char *crl_dir;
++extern char *crl_file;
++#endif /* USE_EAPTLS */
++
+ #ifdef MAXOCTETS
+ extern unsigned int maxoctets; /* Maximum octetes per session (in bytes) */
+ extern int maxoctets_dir; /* Direction :
+@@ -741,6 +746,10 @@
+ extern int (*chap_passwd_hook) __P((char *user, char *passwd));
+ extern void (*multilink_join_hook) __P((void));
+
++#ifdef USE_EAPTLS
++extern int (*eaptls_passwd_hook) __P((char *user, char *passwd));
++#endif
++
+ /* Let a plugin snoop sent and received packets. Useful for L2TP */
+ extern void (*snoop_recv_hook) __P((unsigned char *p, int len));
+ extern void (*snoop_send_hook) __P((unsigned char *p, int len));
+
+
+
diff --git a/user/ppp/85_all_dhcp-make-vars.patch b/user/ppp/85_all_dhcp-make-vars.patch
new file mode 100644
index 000000000..68af3aaf3
--- /dev/null
+++ b/user/ppp/85_all_dhcp-make-vars.patch
@@ -0,0 +1,19 @@
+--- ppp-2.4.3/pppd/plugins/dhcp/Makefile.linux
++++ ppp-2.4.3/pppd/plugins/dhcp/Makefile.linux
+@@ -1,6 +1,6 @@
+
+ PLUGIN=dhcpc.so
+-CFLAGS=-I../.. -I../../../include -O2
++CFLAGS=$(COPTS) -I../.. -I../../../include -fPIC
+
+ all: $(PLUGIN)
+
+@@ -9,7 +9,7 @@
+ $(INSTALL) -s -c -m 755 dhcpc.so $(LIBDIR)
+
+ dhcpc.so: dhcpc.o clientpacket.o packet.o socket.o options.o
+- gcc -o dhcpc.so -shared dhcpc.o clientpacket.o packet.o socket.o options.o
++ $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^
+
+
+ clean:
diff --git a/user/ppp/86_all_dhcp-sys_error_to_strerror.patch b/user/ppp/86_all_dhcp-sys_error_to_strerror.patch
new file mode 100644
index 000000000..e0d0937b2
--- /dev/null
+++ b/user/ppp/86_all_dhcp-sys_error_to_strerror.patch
@@ -0,0 +1,128 @@
+--- ppp-2.4.2/pppd/plugins/dhcp/dhcpc.c
++++ ppp-2.4.2/pppd/plugins/dhcp/dhcpc.c
+@@ -144,7 +144,7 @@
+ fd = raw_socket(client_config.ifindex);
+
+ if (listen_mode != LISTEN_NONE && fd < 0) {
+- fatal("DHCPC: couldn't listen on socket, %s", sys_errlist[errno]);
++ fatal("DHCPC: couldn't listen on socket, %s", strerror(errno));
+ }
+
+ }
+@@ -208,7 +208,7 @@
+ len = get_packet(&packet, fd);
+
+ if (len == -1 && errno != EINTR) {
+- dbglog("DHCPC: error on read, %s, reopening socket", sys_errlist[errno]);
++ dbglog("DHCPC: error on read, %s, reopening socket", strerror(errno));
+ change_mode(LISTEN_KERNEL);
+ }
+ if (len < 0) continue;
+@@ -380,7 +380,7 @@
+ else len = get_raw_packet(&packet, fd);
+
+ if (len == -1 && errno != EINTR) {
+- dbglog("DHCPC: error on read, %s, reopening socket", sys_errlist[errno]);
++ dbglog("DHCPC: error on read, %s, reopening socket", strerror(errno));
+ change_mode(listen_mode); /* just close and reopen */
+ }
+ if (len < 0) continue;
+@@ -445,7 +445,7 @@
+
+ } else {
+ /* An error occured */
+- dbglog("DHCPC: error on select, %s, reopening socket", sys_errlist[errno]);
++ dbglog("DHCPC: error on select, %s, reopening socket", strerror(errno));
+ change_mode(listen_mode); /* just close and reopen */
+ }
+
+--- ppp-2.4.2/pppd/plugins/dhcp/packet.c
++++ ppp-2.4.2/pppd/plugins/dhcp/packet.c
+@@ -125,7 +125,7 @@
+ return kernel_packet(payload,payload->giaddr,CLIENT_PORT,dest_ip,dest_port);
+
+ if ((fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP))) < 0) {
+- DEBUG(LOG_ERR, "socket call failed: %s", sys_errlist[errno]);
++ DEBUG(LOG_ERR, "socket call failed: %s", strerror(errno));
+ return -1;
+ }
+
+@@ -138,7 +138,7 @@
+ dest.sll_halen = 6;
+ memcpy(dest.sll_addr, dest_arp, 6);
+ if (bind(fd, (struct sockaddr *)&dest, sizeof(struct sockaddr_ll)) < 0) {
+- DEBUG(LOG_ERR, "bind call failed: %s", sys_errlist[errno]);
++ DEBUG(LOG_ERR, "bind call failed: %s", strerror(errno));
+ close(fd);
+ return -1;
+ }
+@@ -161,7 +161,7 @@
+
+ result = sendto(fd, &packet, sizeof(struct udp_dhcp_packet), 0, (struct sockaddr *) &dest, sizeof(dest));
+ if (result <= 0) {
+- DEBUG(LOG_ERR, "write on socket failed: %s", sys_errlist[errno]);
++ DEBUG(LOG_ERR, "write on socket failed: %s", strerror(errno));
+ }
+ close(fd);
+ return result;
+--- ppp-2.4.2/pppd/plugins/dhcp/socket.c
++++ ppp-2.4.2/pppd/plugins/dhcp/socket.c
+@@ -60,7 +60,7 @@
+ *addr = sin->sin_addr.s_addr;
+ DEBUG(LOG_INFO, "%s (our ip) = %s", ifr.ifr_name, inet_ntoa(sin->sin_addr));
+ } else {
+- LOG(LOG_ERR, "SIOCGIFADDR failed!: %s", sys_errlist[errno]);
++ LOG(LOG_ERR, "SIOCGIFADDR failed!: %s", strerror(errno));
+ return -1;
+ }
+ }
+@@ -69,7 +69,7 @@
+ DEBUG(LOG_INFO, "adapter index %d", ifr.ifr_ifindex);
+ *ifindex = ifr.ifr_ifindex;
+ } else {
+- LOG(LOG_ERR, "SIOCGIFINDEX failed!: %s", sys_errlist[errno]);
++ LOG(LOG_ERR, "SIOCGIFINDEX failed!: %s", strerror(errno));
+ return -1;
+ }
+ if (ioctl(fd, SIOCGIFHWADDR, &ifr) == 0) {
+@@ -77,11 +77,11 @@
+ DEBUG(LOG_INFO, "adapter hardware address %02x:%02x:%02x:%02x:%02x:%02x",
+ arp[0], arp[1], arp[2], arp[3], arp[4], arp[5]);
+ } else {
+- LOG(LOG_ERR, "SIOCGIFHWADDR failed!: %s", sys_errlist[errno]);
++ LOG(LOG_ERR, "SIOCGIFHWADDR failed!: %s", strerror(errno));
+ return -1;
+ }
+ } else {
+- LOG(LOG_ERR, "socket failed!: %s", sys_errlist[errno]);
++ LOG(LOG_ERR, "socket failed!: %s", strerror(errno));
+ return -1;
+ }
+ close(fd);
+@@ -98,7 +98,7 @@
+
+ DEBUG(LOG_INFO, "Opening listen socket on 0x%08x:%d %s\n", ip, port, inf ? inf : "*");
+ if ((fd = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) {
+- DEBUG(LOG_ERR, "socket call failed: %s", sys_errlist[errno]);
++ DEBUG(LOG_ERR, "socket call failed: %s", strerror(errno));
+ return -1;
+ }
+
+@@ -144,7 +144,7 @@
+
+ DEBUG(LOG_INFO, "Opening raw socket on ifindex %d\n", ifindex);
+ if ((fd = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_IP))) < 0) {
+- DEBUG(LOG_ERR, "socket call failed: %s", sys_errlist[errno]);
++ DEBUG(LOG_ERR, "socket call failed: %s", strerror(errno));
+ return -1;
+ }
+
+@@ -152,7 +152,7 @@
+ sock.sll_protocol = htons(ETH_P_IP);
+ sock.sll_ifindex = ifindex;
+ if (bind(fd, (struct sockaddr *) &sock, sizeof(sock)) < 0) {
+- DEBUG(LOG_ERR, "bind call failed: %s", sys_errlist[errno]);
++ DEBUG(LOG_ERR, "bind call failed: %s", strerror(errno));
+ close(fd);
+ return -1;
+ }
diff --git a/user/ppp/APKBUILD b/user/ppp/APKBUILD
new file mode 100644
index 000000000..50aead456
--- /dev/null
+++ b/user/ppp/APKBUILD
@@ -0,0 +1,121 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=ppp
+pkgver=2.4.8
+pkgrel=1
+pkgdesc="Point-to-Point Protocol (PPP) implementation for serial networking"
+url="https://ppp.samba.org/"
+arch="all"
+options="!check" # No test suite.
+license="BSD-4-Clause AND GPL-2.0-only AND GPL-2.0+ AND zlib AND LGPL-2.0+"
+depends=""
+makedepends="bsd-compat-headers linux-pam-dev libpcap-dev openssl-dev utmps-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-openrc"
+source="https://github.com/paulusmack/ppp/archive/ppp-$pkgver.tar.gz
+ http://distfiles.gentoo.org/distfiles/ppp-dhcpc.tgz
+ 03_all_use_internal_logwtmp.patch
+ 04_all_mpls.patch
+ 06_all_killaddr-smarter.patch
+ 08_all_wait-children.patch
+ 12_all_linkpidfile.patch
+ 16_all_auth-fail.patch
+ 19_all_radius_pid_overflow.patch
+ 20_all_dev-ppp.patch
+ 24_all_passwordfd-read-early.patch
+ 26_all_pppd-usepeerwins.patch
+ 28_all_connect-errors.patch
+ 32_all_pado-timeout.patch
+ 34_all_lcp-echo-adaptive.patch
+ 80_all_eaptls-mppe-1.101a.patch
+ 85_all_dhcp-make-vars.patch
+ 86_all_dhcp-sys_error_to_strerror.patch
+ adelie.patch
+ CVE-2020-8597.patch
+ dhcp.patch
+ install-path.patch
+ musl-fix-headers.patch
+ utmpx.patch
+ fix-linux-5.15-include.patch
+
+ ppp.mod
+ ppp.pamd
+ pppd.initd
+ "
+builddir="$srcdir"/ppp-ppp-$pkgver
+
+# secfixes:
+# 2.4.8-r0:
+# - CVE-2020-8597
+
+prepare() {
+ mv "$srcdir"/dhcp "$builddir"/pppd/plugins
+ default_prepare
+}
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make COPTS="$CFLAGS -D_GNU_SOURCE" \
+ LIBS="-lutmps -lskarnet -lcrypto -lssl -lpam -lpcap"
+ make -C contrib/pppgetpass pppgetpass.vt
+}
+
+package() {
+ make INSTROOT="$pkgdir" install
+
+ install -Dm 0644 -t "$pkgdir"/usr/include/net/ include/net/ppp_defs.h
+
+ install -d "$pkgdir"/etc/ppp/peers
+ install -m 0600 etc.ppp/pap-secrets \
+ "$pkgdir"/etc/ppp/pap-secrets.example
+ install -m 0600 etc.ppp/chap-secrets \
+ "$pkgdir"/etc/ppp/chap-secrets.example
+ install -m 0644 etc.ppp/options "$pkgdir"/etc/ppp/options
+
+ install -Dm 0644 "$srcdir"/ppp.pamd "$pkgdir"/etc/pam.d/ppp
+ install -Dm 0755 -t "$pkgdir"/usr/bin/ scripts/pon \
+ scripts/poff scripts/plog
+ install -Dm 0644 -t "$pkgdir"/usr/share/man/man1/ scripts/pon.1
+
+ install -Dm 0755 contrib/pppgetpass/pppgetpass.vt \
+ "$pkgdir"/usr/sbin/pppgetpass
+ install -Dm 0644 -t "$pkgdir"/usr/share/man/man8/ \
+ contrib/pppgetpass/pppgetpass.8
+
+ install -Dm 0644 "$srcdir"/ppp.mod "$pkgdir"/etc/modprobe.d/ppp.conf
+ install -Dm 0755 "$srcdir"/pppd.initd "$pkgdir"/etc/init.d/pppd
+}
+
+sha512sums="a99b3b6c7bd80cd133bda4e29d33c793a76f3b67e1f8db774547e88932ce29564fad390a4f51d3fe30a75e006499b95000b042ae0f64cd360548426f8091a478 ppp-2.4.8.tar.gz
+aeaf791b14f5a09c0e2079072a157e65132cbff46e608bc0724e6a5827a01da934f5006e2774eb7105f83e607a52cb4987238f4385cf6f5cc86cbe305a556738 ppp-dhcpc.tgz
+4c4a5cc6fd8ce3203c41ff07fc0ce5f0468985c779fe05030898d36c404d2086ce7a49336ac58e6502fc2fd14c4de9006028fe19c500d2cac890a16a55c723e8 03_all_use_internal_logwtmp.patch
+df263b6a8395be1f3aa0a87aca8fe7bcda1395208df8df73de98decdb59a70a67242a4f7a7227db2c4b470fc1b44d771967d8c91c16cfaffaa3eb41110dc3b28 04_all_mpls.patch
+b49086401c1b395ee6caba0418272b2d1b2ab9dcf6f1fc7e7f1280e94fcf17c8fdb884a19f4ef911bd7849a9cceb4cc07fc75438726340cd8c17265d4c2bd4d8 06_all_killaddr-smarter.patch
+807707ee9795ef4300b92bacdeba6b9e7332b6ce5a355de3ce77ddcc6dafce069f024131fd3ef282e38be3499e4230ad50fdda2b96e00891f5df1696234b775b 08_all_wait-children.patch
+122b9e3dbc3a9accacb31c653b3c0d368e8cdf3d954a6c93d04ac26ca8f3cb5bfcf8a01881d1cf08e855a1d2d0bd86e7fadba22bb5ada1a86f78e6b9820e6687 12_all_linkpidfile.patch
+3a23ef3619b2840eb3f1f7e14bd4765526b09acdfa8ab4d659ad8525a6f96d0cfb7c9fef042cde99ba1de8cf5caa74faa32e2a988453b4b17a70d5cc9a4bcf41 16_all_auth-fail.patch
+9fdb3346ef13b250f91f1af55c0efa0f836a60abe9e62fceed30df4e431a3bccdd33b083c2662c45e2091085438ba2221cdc4ae51fc1b05a666d77f74d461214 19_all_radius_pid_overflow.patch
+82c80701095a2d9707afbf5fc29bdf2fc3f92252b7de5de1d639f8607096a9d34ce90ffd0a2f770512b590a27dec56f2b03e5e9f4c9e56e1f362a2387d9fb568 20_all_dev-ppp.patch
+2508cf1285a086c917ba5deffc96c1c29a511f1c1a0ef94c811b2bf139aed0218f34d7c1f1004890e105c47dffc5834a049dbe7686611d0fc8b8607ccdc86105 24_all_passwordfd-read-early.patch
+3eb55fb681e7fecf4e09b53683f509d2db3779599dd60fb89f88cd644c92d779f4720114546ba458262e8239581061e4a450143338c4725ada18b7ca314e12b0 26_all_pppd-usepeerwins.patch
+2e0bd81124bcd7c1234089f11e0b607b19047d279dc436ced3a4b8d793bcee4fcececd948b6a0755a02f68542c5c5e30b6f8541f90b998c09da8d50362827520 28_all_connect-errors.patch
+32c77c938cd607e44bd358cbc3f0eaf99178084d936bf8e6b8aeb20e881ac9d734008cfb93ff3b1fd2783dae0c46e963c3ee1d1b128712b4ba342db069e26636 32_all_pado-timeout.patch
+0bd928f45708f10835250fd6a6162f6e148dca172c810511c1f4b1fe56602c4869e7f622e95a3f4a41e5502ddefd0cf6054cd57211bc83426d5da5b5f10dac26 34_all_lcp-echo-adaptive.patch
+977b247e87557c4c57a871470c40670457e285ca59357dabab854ab16cc5578526ddf880410aa2efc7078e16d32d7afea4b69928af14ac4449523f6a591284f1 80_all_eaptls-mppe-1.101a.patch
+2d294bfe455648949cedb47a12a07913f0395aadbe2566c1e90d70fc37baa8635a667ab45195a697567f8d52de88771c499adffee82cde2e9e318ed858b6007b 85_all_dhcp-make-vars.patch
+44d5528c057d0abf2b45ba04943a52b6b94209434a06aa565f8a74acdd660efd86fe13280d540383168eaedad9f627673410bb8468860b64adb3145030e12889 86_all_dhcp-sys_error_to_strerror.patch
+350ed598c9690aa2f357ead34eb17a67dc5e34a5bd7529809288c5e0151728882158f32734041f2005413ac701db84d76501edabdcc6c64750dfce2927e2aa2a adelie.patch
+e5638fd6e7b573552a7354fad3c91a8bde86760fb17d510e7e925ee8c1f60f7d39efe95134cb0a1c46b1e9fb14c987f224b4adbb1f3c75633b2bea0eccaff7c6 CVE-2020-8597.patch
+6d22e4b601dd3eabd55751408b03c4036815ca64184f9c9f07f2368d2f5a6a9081ce7a88e5c7d5ee60708c430c9cf55070e105ce00adb1325b60cddada4bf562 dhcp.patch
+fb4ae2c2ba4ecdd1c85f6e5f730fd9659cf1fbc7a8a004b09042adafee7e4af6238df8deb3dbd3dc9c69407d9ebc4c82e1792a43b4aaf8ac18ebe18268b50597 install-path.patch
+ba240d483ada6865bf52497ce00cb9ae8d750e8f650e501d0d068b132d364ae4d09ac2e290b903e246aa35d33cf984aa29a6be41906df355b1c1e2b7637dc8b0 musl-fix-headers.patch
+723ff3dd0aee13f9878559aa433b314af6043523a2bafd5957258809a645942f7d34b5bd659869a1528cf7b1a462ad7cc2dbf18e7986220f5f685f2c1ea1d36b utmpx.patch
+cb73d66244e457bb8b01f5ddc3132f1599542e872033f392841d7218749de6863083eb2746e43da7bbdabb292c012016e59dc29963040a0dfea5a8bfec287d36 fix-linux-5.15-include.patch
+58bf5d6d286a08bd6dd595b39ee425efedd5745dddf33a9c90505891546eb46f4cf1306d83911bef61bc4611816aa0f6aef5d3e0f14c2f4ddd0a588780570041 ppp.mod
+e30a397392d467ac3c78f6533f3adff5de7d38f0372d8d6f7b186db4ec69ddf12463d467d8a86eb5867effeb7dd6bd16942a98fb3a3ab59ff754a123e16d0938 ppp.pamd
+bd6f43588b037367ffdb57f5e331492dcaa5969003e219c2dc8b90e6be1aa407282ff6114b91d1379ebeff766983fa0622456520cc0ac592b4f0b1496acf21bf pppd.initd"
diff --git a/user/ppp/CVE-2020-8597.patch b/user/ppp/CVE-2020-8597.patch
new file mode 100644
index 000000000..5d7c51bca
--- /dev/null
+++ b/user/ppp/CVE-2020-8597.patch
@@ -0,0 +1,37 @@
+From 8d7970b8f3db727fe798b65f3377fe6787575426 Mon Sep 17 00:00:00 2001
+From: Paul Mackerras <paulus@ozlabs.org>
+Date: Mon, 3 Feb 2020 15:53:28 +1100
+Subject: [PATCH] pppd: Fix bounds check in EAP code
+
+Given that we have just checked vallen < len, it can never be the case
+that vallen >= len + sizeof(rhostname). This fixes the check so we
+actually avoid overflowing the rhostname array.
+
+Reported-by: Ilja Van Sprundel <ivansprundel@ioactive.com>
+Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
+---
+ pppd/eap.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/pppd/eap.c b/pppd/eap.c
+index 94407f56..1b93db01 100644
+--- a/pppd/eap.c
++++ b/pppd/eap.c
+@@ -1420,7 +1420,7 @@ int len;
+ }
+
+ /* Not so likely to happen. */
+- if (vallen >= len + sizeof (rhostname)) {
++ if (len - vallen >= sizeof (rhostname)) {
+ dbglog("EAP: trimming really long peer name down");
+ BCOPY(inp + vallen, rhostname, sizeof (rhostname) - 1);
+ rhostname[sizeof (rhostname) - 1] = '\0';
+@@ -1846,7 +1846,7 @@ int len;
+ }
+
+ /* Not so likely to happen. */
+- if (vallen >= len + sizeof (rhostname)) {
++ if (len - vallen >= sizeof (rhostname)) {
+ dbglog("EAP: trimming really long peer name down");
+ BCOPY(inp + vallen, rhostname, sizeof (rhostname) - 1);
+ rhostname[sizeof (rhostname) - 1] = '\0';
diff --git a/user/ppp/adelie.patch b/user/ppp/adelie.patch
new file mode 100644
index 000000000..a89dd4063
--- /dev/null
+++ b/user/ppp/adelie.patch
@@ -0,0 +1,79 @@
+--- ppp-2.4.7/pppd/Makefile.linux.old 2019-05-09 20:32:30.959257140 +0000
++++ ppp-2.4.7/pppd/Makefile.linux 2019-05-09 20:34:48.964184093 +0000
+@@ -61,14 +61,14 @@
+ USE_TDB=y
+
+ HAS_SHADOW=y
+-#USE_PAM=y
++USE_PAM=y
+ HAVE_INET6=y
+
+ # Enable plugins
+ PLUGIN=y
+
+ # Enable Microsoft proprietary Callback Control Protocol
+-#CBCP=y
++CBCP=y
+
+ # Enable EAP SRP-SHA1 authentication (requires libsrp)
+ #USE_SRP=y
+@@ -102,8 +102,8 @@
+
+ # EAP SRP-SHA1
+ ifdef USE_SRP
+-CFLAGS += -DUSE_SRP -DOPENSSL -I/usr/local/ssl/include
+-LIBS += -lsrp -L/usr/local/ssl/lib -lcrypto
++CFLAGS += -DUSE_SRP -DOPENSSL
++LIBS += -lsrp `$(PKG_CONFIG) --libs libcrypto`
+ TARGETS += srp-entry
+ EXTRAINSTALL = $(INSTALL) -s -c -m 555 srp-entry $(BINDIR)/srp-entry
+ MANPAGES += srp-entry.8
+--- ppp-2.4.7/pppd/plugins/radius/pathnames.h.old 2014-08-09 12:31:39.000000000 +0000
++++ ppp-2.4.7/pppd/plugins/radius/pathnames.h 2019-05-09 20:35:39.258690873 +0000
+@@ -22,7 +22,7 @@
+
+ /* normally defined in the Makefile */
+ #ifndef _PATH_ETC_RADIUSCLIENT_CONF
+-#define _PATH_ETC_RADIUSCLIENT_CONF "/etc/radiusclient.conf"
++#define _PATH_ETC_RADIUSCLIENT_CONF "/etc/radiusclient/radiusclient.conf"
+ #endif
+
+ #endif /* PATHNAMES_H */
+--- ppp-2.4.7/pppd/plugins/radius/etc/radiusclient.conf.old 2014-08-09 12:31:39.000000000 +0000
++++ ppp-2.4.7/pppd/plugins/radius/etc/radiusclient.conf 2019-05-09 20:37:29.676630906 +0000
+@@ -22,7 +22,7 @@
+
+ # name of the issue file. it's only display when no username is passed
+ # on the radlogin command line (default /etc/radiusclient/issue)
+-issue /usr/local/etc/radiusclient/issue
++issue /etc/radiusclient/issue
+
+ # RADIUS settings
+
+@@ -43,22 +43,22 @@
+
+ # file holding shared secrets used for the communication
+ # between the RADIUS client and server
+-servers /usr/local/etc/radiusclient/servers
++servers /etc/radiusclient/servers
+
+ # dictionary of allowed attributes and values
+ # just like in the normal RADIUS distributions
+-dictionary /usr/local/etc/radiusclient/dictionary
++dictionary /etc/radiusclient/dictionary
+
+ # program to call for a RADIUS authenticated login
+ # (default /usr/sbin/login.radius)
+-login_radius /usr/local/sbin/login.radius
++login_radius /usr/sbin/login.radius
+
+ # file which holds sequence number for communication with the
+ # RADIUS server
+ seqfile /var/run/radius.seq
+
+ # file which specifies mapping between ttyname and NAS-Port attribute
+-mapfile /usr/local/etc/radiusclient/port-id-map
++mapfile /etc/radiusclient/port-id-map
+
+ # default authentication realm to append to all usernames if no
+ # realm was explicitly specified by the user
diff --git a/user/ppp/dhcp.patch b/user/ppp/dhcp.patch
new file mode 100644
index 000000000..8ef76d2a0
--- /dev/null
+++ b/user/ppp/dhcp.patch
@@ -0,0 +1,335 @@
+--- ppp-2.4.7/pppd/plugins/Makefile.linux.old 2019-05-09 23:06:56.499058276 +0000
++++ ppp-2.4.7/pppd/plugins/Makefile.linux 2019-05-09 23:11:21.040252628 +0000
+@@ -16,7 +16,7 @@
+ MANDIR = $(DESTDIR)/share/man/man8
+ LIBDIR = $(DESTDIR)/lib/pppd/$(VERSION)
+
+-SUBDIRS := rp-pppoe pppoatm pppol2tp
++SUBDIRS := dhcp rp-pppoe pppoatm pppol2tp
+ # Uncomment the next line to include the radius authentication plugin
+ SUBDIRS += radius
+ PLUGINS := minconn.so passprompt.so passwordfd.so winbind.so
+--- ppp-2.4.7/pppd/plugins/dhcp/README.old 2002-09-30 11:33:49.000000000 +0000
++++ ppp-2.4.7/pppd/plugins/dhcp/README 2019-05-09 23:11:37.408470308 +0000
+@@ -37,7 +37,7 @@
+
+ This option specified the local IP address of the system running
+ this proxy, as should be identified to the DHCP server in the
+- 'giaddr' field of DHCP requests. Normal server behavor should
++ 'giaddr' field of DHCP requests. Normal server behaviour should
+ be to send DHCP responses to this address. The default is the
+ primary address bound to the dhcp interface.
+
+diff -Naur ppp-2.4.7/pppd/plugins/dhcp.old/clientpacket.c ppp-2.4.7/pppd/plugins/dhcp/clientpacket.c
+--- ppp-2.4.7/pppd/plugins/dhcp.old/clientpacket.c 2002-08-31 12:19:20.000000000 +0000
++++ ppp-2.4.7/pppd/plugins/dhcp/clientpacket.c 2019-05-09 23:42:33.566347764 +0000
+@@ -179,8 +179,8 @@
+ {
+ int bytes;
+ struct udp_dhcp_packet packet;
+- u_int32_t source, dest;
+- u_int16_t check;
++ uint32_t source, dest;
++ uint16_t check;
+
+ memset(&packet, 0, sizeof(struct udp_dhcp_packet));
+ bytes = read(fd, &packet, sizeof(struct udp_dhcp_packet));
+diff -Naur ppp-2.4.7/pppd/plugins/dhcp.old/dhcpc.c ppp-2.4.7/pppd/plugins/dhcp/dhcpc.c
+--- ppp-2.4.7/pppd/plugins/dhcp.old/dhcpc.c 2019-05-09 23:41:38.732319544 +0000
++++ ppp-2.4.7/pppd/plugins/dhcp/dhcpc.c 2019-05-09 23:42:33.566347764 +0000
+@@ -56,11 +56,11 @@
+ #include "socket.h"
+ #include "debug.h"
+
+-static void (*dhcp_old_ip_choose_hook)(u_int32_t *addrp);
++static void (*dhcp_old_ip_choose_hook)(uint32_t *addrp);
+
+ static int dhcp_state;
+-static u_int32_t requested_ip; /* = 0 */
+-u_int32_t assigned_ip; /* value supplied to remote ppp */
++static uint32_t requested_ip; /* = 0 */
++uint32_t assigned_ip; /* value supplied to remote ppp */
+ static unsigned long server_addr;
+ unsigned long lease, renew_timeout;
+ unsigned long xid = 0;
+@@ -118,7 +118,7 @@
+ void dhcp_release(void *ptr, int arg);
+ void dhcp_renew(void *dummy);
+ void dhcp_request_new();
+-void dhcp_ip_choose(u_int32_t *addrp);
++void dhcp_ip_choose(uint32_t *addrp);
+ void dhcp_read_options(void);
+
+
+@@ -453,8 +453,8 @@
+ return;
+ }
+
+-void dhcp_ip_choose(u_int32_t *addrp) {
+- u_int32_t entryvalue;
++void dhcp_ip_choose(uint32_t *addrp) {
++ uint32_t entryvalue;
+
+ dbglog("DHCPC: ip_choose_hook entered with peer name %s",peer_authname);
+
+diff -Naur ppp-2.4.7/pppd/plugins/dhcp.old/dhcpc.h ppp-2.4.7/pppd/plugins/dhcp/dhcpc.h
+--- ppp-2.4.7/pppd/plugins/dhcp.old/dhcpc.h 2002-08-31 11:54:23.000000000 +0000
++++ ppp-2.4.7/pppd/plugins/dhcp/dhcpc.h 2019-05-09 23:42:33.566347764 +0000
+@@ -24,9 +24,9 @@
+ unsigned char *hostname; /* Optional hostname to use */
+ int ifindex; /* Index number of the interface to use */
+ unsigned char arp[6]; /* Our arp address */
+- u_int32_t giaddr; /* Fill in this value on all packets we generate */
+- u_int32_t siaddr; /* If defined, only talk to this server (never broadcast) */
+- u_int32_t subnet_selection; /* If non zero, send and require SS option */
++ uint32_t giaddr; /* Fill in this value on all packets we generate */
++ uint32_t siaddr; /* If defined, only talk to this server (never broadcast) */
++ uint32_t subnet_selection; /* If non zero, send and require SS option */
+ };
+
+ extern struct client_config_t client_config;
+diff -Naur ppp-2.4.7/pppd/plugins/dhcp.old/dhcpd.h ppp-2.4.7/pppd/plugins/dhcp/dhcpd.h
+--- ppp-2.4.7/pppd/plugins/dhcp.old/dhcpd.h 2002-08-31 11:52:31.000000000 +0000
++++ ppp-2.4.7/pppd/plugins/dhcp/dhcpd.h 2019-05-09 23:42:33.566347764 +0000
+@@ -101,9 +101,9 @@
+ };
+
+ struct server_config_t {
+- u_int32_t server; /* Our IP, in network order */
+- u_int32_t start; /* Start address of leases, network order */
+- u_int32_t end; /* End of leases, network order */
++ uint32_t server; /* Our IP, in network order */
++ uint32_t start; /* Start address of leases, network order */
++ uint32_t end; /* End of leases, network order */
+ struct option_set *options; /* List of DHCP options loaded from the config file */
+ char *interface; /* The name of the interface to use */
+ int ifindex; /* Index number of the interface to use */
+@@ -122,7 +122,7 @@
+ char *lease_file;
+ char *pidfile;
+ char *notify_file; /* What to run whenever leases are written */
+- u_int32_t siaddr; /* next server bootp option */
++ uint32_t siaddr; /* next server bootp option */
+ char *sname; /* bootp server name */
+ char *boot_file; /* bootp boot file option */
+ };
+diff -Naur ppp-2.4.7/pppd/plugins/dhcp.old/leases.h ppp-2.4.7/pppd/plugins/dhcp/leases.h
+--- ppp-2.4.7/pppd/plugins/dhcp.old/leases.h 2002-08-23 13:17:14.000000000 +0000
++++ ppp-2.4.7/pppd/plugins/dhcp/leases.h 2019-05-09 23:42:33.566347764 +0000
+@@ -4,20 +4,20 @@
+
+
+ struct dhcpOfferedAddr {
+- u_int8_t chaddr[16];
+- u_int32_t yiaddr; /* network order */
+- u_int32_t expires; /* host order */
++ uint8_t chaddr[16];
++ uint32_t yiaddr; /* network order */
++ uint32_t expires; /* host order */
+ };
+
+
+-void clear_lease(u_int8_t *chaddr, u_int32_t yiaddr);
+-struct dhcpOfferedAddr *add_lease(u_int8_t *chaddr, u_int32_t yiaddr, unsigned long lease);
++void clear_lease(uint8_t *chaddr, uint32_t yiaddr);
++struct dhcpOfferedAddr *add_lease(uint8_t *chaddr, uint32_t yiaddr, unsigned long lease);
+ int lease_expired(struct dhcpOfferedAddr *lease);
+ struct dhcpOfferedAddr *oldest_expired_lease(void);
+-struct dhcpOfferedAddr *find_lease_by_chaddr(u_int8_t *chaddr);
+-struct dhcpOfferedAddr *find_lease_by_yiaddr(u_int32_t yiaddr);
+-u_int32_t find_address(int check_expired);
+-int check_ip(u_int32_t addr);
++struct dhcpOfferedAddr *find_lease_by_chaddr(uint8_t *chaddr);
++struct dhcpOfferedAddr *find_lease_by_yiaddr(uint32_t yiaddr);
++uint32_t find_address(int check_expired);
++int check_ip(uint32_t addr);
+
+
+ #endif
+diff -Naur ppp-2.4.7/pppd/plugins/dhcp.old/options.c ppp-2.4.7/pppd/plugins/dhcp/options.c
+--- ppp-2.4.7/pppd/plugins/dhcp.old/options.c 2002-08-31 11:52:37.000000000 +0000
++++ ppp-2.4.7/pppd/plugins/dhcp/options.c 2019-05-09 23:42:33.566347764 +0000
+@@ -148,17 +148,17 @@
+
+
+ /* add a one to four byte option to a packet */
+-int add_simple_option(unsigned char *optionptr, unsigned char code, u_int32_t data)
++int add_simple_option(unsigned char *optionptr, unsigned char code, uint32_t data)
+ {
+ char length = 0;
+ int i;
+ unsigned char option[2 + 4];
+ unsigned char *u8;
+- u_int16_t *u16;
+- u_int32_t *u32;
+- u_int32_t aligned;
++ uint16_t *u16;
++ uint32_t *u32;
++ uint32_t aligned;
+ u8 = (unsigned char *) &aligned;
+- u16 = (u_int16_t *) &aligned;
++ u16 = (uint16_t *) &aligned;
+ u32 = &aligned;
+
+ for (i = 0; options[i].code; i++)
+diff -Naur ppp-2.4.7/pppd/plugins/dhcp.old/options.h ppp-2.4.7/pppd/plugins/dhcp/options.h
+--- ppp-2.4.7/pppd/plugins/dhcp.old/options.h 2002-08-23 13:06:28.000000000 +0000
++++ ppp-2.4.7/pppd/plugins/dhcp/options.h 2019-05-09 23:42:33.566347764 +0000
+@@ -33,7 +33,7 @@
+ unsigned char *get_option(struct dhcpMessage *packet, int code);
+ int end_option(unsigned char *optionptr);
+ int add_option_string(unsigned char *optionptr, unsigned char *string);
+-int add_simple_option(unsigned char *optionptr, unsigned char code, u_int32_t data);
++int add_simple_option(unsigned char *optionptr, unsigned char code, uint32_t data);
+ struct option_set *find_option(struct option_set *opt_list, char code);
+ void attach_option(struct option_set **opt_list, struct dhcp_option *option, char *buffer, int length);
+
+diff -Naur ppp-2.4.7/pppd/plugins/dhcp.old/packet.c ppp-2.4.7/pppd/plugins/dhcp/packet.c
+--- ppp-2.4.7/pppd/plugins/dhcp.old/packet.c 2019-05-09 23:41:38.732319544 +0000
++++ ppp-2.4.7/pppd/plugins/dhcp/packet.c 2019-05-09 23:42:33.566347764 +0000
+@@ -83,13 +83,13 @@
+ }
+
+
+-u_int16_t checksum(void *addr, int count)
++uint16_t checksum(void *addr, int count)
+ {
+ /* Compute Internet Checksum for "count" bytes
+ * beginning at location "addr".
+ */
+ register int32_t sum = 0;
+- u_int16_t *source = (u_int16_t *) addr;
++ uint16_t *source = (uint16_t *) addr;
+
+ while( count > 1 ) {
+ /* This is the inner loop */
+@@ -110,8 +110,8 @@
+
+
+ /* Constuct a ip/udp header for a packet, and specify the source and dest hardware address */
+-int raw_packet(struct dhcpMessage *payload, u_int32_t source_ip, int source_port,
+- u_int32_t dest_ip, int dest_port, unsigned char *dest_arp, int ifindex)
++int raw_packet(struct dhcpMessage *payload, uint32_t source_ip, int source_port,
++ uint32_t dest_ip, int dest_port, unsigned char *dest_arp, int ifindex)
+ {
+ int fd;
+ int result;
+@@ -169,8 +169,8 @@
+
+
+ /* Let the kernel do all the work for packet generation */
+-int kernel_packet(struct dhcpMessage *payload, u_int32_t source_ip, int source_port,
+- u_int32_t dest_ip, int dest_port)
++int kernel_packet(struct dhcpMessage *payload, uint32_t source_ip, int source_port,
++ uint32_t dest_ip, int dest_port)
+ {
+ int n = 1;
+ int fd, result;
+diff -Naur ppp-2.4.7/pppd/plugins/dhcp.old/packet.h ppp-2.4.7/pppd/plugins/dhcp/packet.h
+--- ppp-2.4.7/pppd/plugins/dhcp.old/packet.h 2002-08-23 13:04:56.000000000 +0000
++++ ppp-2.4.7/pppd/plugins/dhcp/packet.h 2019-05-09 23:42:33.566347764 +0000
+@@ -5,22 +5,22 @@
+ #include <netinet/ip.h>
+
+ struct dhcpMessage {
+- u_int8_t op;
+- u_int8_t htype;
+- u_int8_t hlen;
+- u_int8_t hops;
+- u_int32_t xid;
+- u_int16_t secs;
+- u_int16_t flags;
+- u_int32_t ciaddr;
+- u_int32_t yiaddr;
+- u_int32_t siaddr;
+- u_int32_t giaddr;
+- u_int8_t chaddr[16];
+- u_int8_t sname[64];
+- u_int8_t file[128];
+- u_int32_t cookie;
+- u_int8_t options[308]; /* 312 - cookie */
++ uint8_t op;
++ uint8_t htype;
++ uint8_t hlen;
++ uint8_t hops;
++ uint32_t xid;
++ uint16_t secs;
++ uint16_t flags;
++ uint32_t ciaddr;
++ uint32_t yiaddr;
++ uint32_t siaddr;
++ uint32_t giaddr;
++ uint8_t chaddr[16];
++ uint8_t sname[64];
++ uint8_t file[128];
++ uint32_t cookie;
++ uint8_t options[308]; /* 312 - cookie */
+ };
+
+ struct udp_dhcp_packet {
+@@ -31,11 +31,11 @@
+
+ void init_header(struct dhcpMessage *packet, char type);
+ int get_packet(struct dhcpMessage *packet, int fd);
+-u_int16_t checksum(void *addr, int count);
+-int raw_packet(struct dhcpMessage *payload, u_int32_t source_ip, int source_port,
+- u_int32_t dest_ip, int dest_port, unsigned char *dest_arp, int ifindex);
+-int kernel_packet(struct dhcpMessage *payload, u_int32_t source_ip, int source_port,
+- u_int32_t dest_ip, int dest_port);
++uint16_t checksum(void *addr, int count);
++int raw_packet(struct dhcpMessage *payload, uint32_t source_ip, int source_port,
++ uint32_t dest_ip, int dest_port, unsigned char *dest_arp, int ifindex);
++int kernel_packet(struct dhcpMessage *payload, uint32_t source_ip, int source_port,
++ uint32_t dest_ip, int dest_port);
+
+
+ #endif
+diff -Naur ppp-2.4.7/pppd/plugins/dhcp.old/socket.c ppp-2.4.7/pppd/plugins/dhcp/socket.c
+--- ppp-2.4.7/pppd/plugins/dhcp.old/socket.c 2019-05-09 23:41:38.732319544 +0000
++++ ppp-2.4.7/pppd/plugins/dhcp/socket.c 2019-05-09 23:42:33.566347764 +0000
+@@ -43,7 +43,7 @@
+
+ #include "debug.h"
+
+-int read_interface(char *interface, int *ifindex, u_int32_t *addr, unsigned char *arp)
++int read_interface(char *interface, int *ifindex, uint32_t *addr, unsigned char *arp)
+ {
+ int fd;
+ struct ifreq ifr;
+diff -Naur ppp-2.4.7/pppd/plugins/dhcp.old/socket.h ppp-2.4.7/pppd/plugins/dhcp/socket.h
+--- ppp-2.4.7/pppd/plugins/dhcp.old/socket.h 2002-08-23 13:06:28.000000000 +0000
++++ ppp-2.4.7/pppd/plugins/dhcp/socket.h 2019-05-09 23:42:33.566347764 +0000
+@@ -2,7 +2,7 @@
+ #ifndef _SOCKET_H
+ #define _SOCKET_H
+
+-int read_interface(char *interface, int *ifindex, u_int32_t *addr, unsigned char *arp);
++int read_interface(char *interface, int *ifindex, uint32_t *addr, unsigned char *arp);
+ int listen_socket(unsigned int ip, int port, char *inf);
+ int raw_socket(int ifindex);
+
+--- ppp-2.4.7/pppd/plugins/dhcp/Makefile.linux.old 2019-05-09 23:54:56.595427092 +0000
++++ ppp-2.4.7/pppd/plugins/dhcp/Makefile.linux 2019-05-09 23:56:53.012746364 +0000
+@@ -1,6 +1,11 @@
+
+ PLUGIN=dhcpc.so
+ CFLAGS=$(COPTS) -I../.. -I../../../include -fPIC
++INSTALL = install
++DESTDIR = $(INSTROOT)/usr
++LIBDIR = $(DESTDIR)/lib/pppd/$(VERSION)
++
++VERSION = $(shell awk -F '"' '/VERSION/ { print $$2; }' ../../patchlevel.h)
+
+ all: $(PLUGIN)
+
+--- ppp-ppp-2.4.8/pppd/plugins/dhcp/Makefile.linux.old 2020-02-26 04:02:43.528569753 +0000
++++ ppp-ppp-2.4.8/pppd/plugins/dhcp/Makefile.linux 2020-02-26 04:03:07.425957036 +0000
+@@ -14,7 +14,7 @@
+ $(INSTALL) -s -c -m 755 dhcpc.so $(LIBDIR)
+
+ dhcpc.so: dhcpc.o clientpacket.o packet.o socket.o options.o
+- $(CC) $(LDFLAGS) $(CFLAGS) -o $@ $^
++ $(CC) $(LDFLAGS) -shared $(CFLAGS) -o $@ $^
+
+
+ clean:
diff --git a/user/ppp/fix-linux-5.15-include.patch b/user/ppp/fix-linux-5.15-include.patch
new file mode 100644
index 000000000..080c306b4
--- /dev/null
+++ b/user/ppp/fix-linux-5.15-include.patch
@@ -0,0 +1,12 @@
+diff -ur a/pppd/Makefile.linux b/pppd/Makefile.linux
+--- a/pppd/Makefile.linux 2022-04-30 17:56:16.092083205 +0000
++++ b/pppd/Makefile.linux 2022-04-30 17:56:55.423147553 +0000
+@@ -88,7 +88,7 @@
+
+ INCLUDE_DIRS= -I../include
+
+-COMPILE_FLAGS= -DHAVE_PATHS_H -DIPX_CHANGE -DHAVE_MMAP
++COMPILE_FLAGS= -DHAVE_PATHS_H -DHAVE_MMAP
+
+ CFLAGS= $(COPTS) $(COMPILE_FLAGS) $(INCLUDE_DIRS) '-DDESTDIR="@DESTDIR@"'
+
diff --git a/user/ppp/install-path.patch b/user/ppp/install-path.patch
new file mode 100644
index 000000000..845729fd5
--- /dev/null
+++ b/user/ppp/install-path.patch
@@ -0,0 +1,11 @@
+--- ppp-2.4.7/pppd/plugins/pppol2tp/Makefile.linux.old 2019-05-09 22:28:24.640793389 +0000
++++ ppp-2.4.7/pppd/plugins/pppol2tp/Makefile.linux 2019-05-09 23:02:56.955142166 +0000
+@@ -4,7 +4,7 @@
+
+ #***********************************************************************
+
+-DESTDIR = @DESTDIR@
++DESTDIR = $(INSTROOT)@DESTDIR@
+ LIBDIR = $(DESTDIR)/lib/pppd/$(VERSION)
+
+ VERSION = $(shell awk -F '"' '/VERSION/ { print $$2; }' ../../patchlevel.h)
diff --git a/user/ppp/musl-fix-headers.patch b/user/ppp/musl-fix-headers.patch
new file mode 100644
index 000000000..5b26fc29c
--- /dev/null
+++ b/user/ppp/musl-fix-headers.patch
@@ -0,0 +1,99 @@
+diff --git a/include/net/ppp_defs.h b/include/net/ppp_defs.h
+index b06eda5..dafa36c 100644
+--- a/include/net/ppp_defs.h
++++ b/include/net/ppp_defs.h
+@@ -38,6 +38,8 @@
+ #ifndef _PPP_DEFS_H_
+ #define _PPP_DEFS_H_
+
++#include <sys/time.h>
++
+ /*
+ * The basic PPP frame.
+ */
+diff --git a/pppd/Makefile.linux b/pppd/Makefile.linux
+index a74c914..7acd2cf 100644
+--- a/pppd/Makefile.linux
++++ b/pppd/Makefile.linux
+@@ -126,7 +126,7 @@ LIBS += -lcrypt
+ endif
+
+ ifdef USE_LIBUTIL
+-CFLAGS += -DHAVE_LOGWTMP=1
++#CFLAGS += -DHAVE_LOGWTMP=1
+ LIBS += -lutil
+ endif
+
+diff --git a/pppd/magic.h b/pppd/magic.h
+index c81213b..305aece 100644
+--- a/pppd/magic.h
++++ b/pppd/magic.h
+@@ -43,5 +43,7 @@
+ */
+
++#include <sys/cdefs.h>
++
+ void magic_init (void); /* Initialize the magic number generator */
+ u_int32_t magic (void); /* Returns the next magic number */
+
+diff --git a/pppd/plugins/rp-pppoe/if.c b/pppd/plugins/rp-pppoe/if.c
+index 91e9a57..9c0fac3 100644
+--- a/pppd/plugins/rp-pppoe/if.c
++++ b/pppd/plugins/rp-pppoe/if.c
+@@ -30,10 +30,6 @@ static char const RCSID[] =
+ #include <linux/if_packet.h>
+ #endif
+
+-#ifdef HAVE_NET_ETHERNET_H
+-#include <net/ethernet.h>
+-#endif
+-
+ #ifdef HAVE_ASM_TYPES_H
+ #include <asm/types.h>
+ #endif
+diff --git a/pppd/plugins/rp-pppoe/plugin.c b/pppd/plugins/rp-pppoe/plugin.c
+index a8c2bb4..ca34d79 100644
+--- a/pppd/plugins/rp-pppoe/plugin.c
++++ b/pppd/plugins/rp-pppoe/plugin.c
+@@ -46,7 +46,6 @@ static char const RCSID[] =
+ #include <unistd.h>
+ #include <fcntl.h>
+ #include <signal.h>
+-#include <net/ethernet.h>
+ #include <net/if_arp.h>
+ #include <linux/ppp_defs.h>
+ #include <linux/if_pppox.h>
+diff --git a/pppd/plugins/rp-pppoe/pppoe-discovery.c b/pppd/plugins/rp-pppoe/pppoe-discovery.c
+index 3d3bf4e..b5f82d3 100644
+--- a/pppd/plugins/rp-pppoe/pppoe-discovery.c
++++ b/pppd/plugins/rp-pppoe/pppoe-discovery.c
+@@ -27,10 +27,6 @@
+ #include <linux/if_packet.h>
+ #endif
+
+-#ifdef HAVE_NET_ETHERNET_H
+-#include <net/ethernet.h>
+-#endif
+-
+ #ifdef HAVE_ASM_TYPES_H
+ #include <asm/types.h>
+ #endif
+@@ -55,6 +51,8 @@ void die(int status)
+ exit(status);
+ }
+
++#define error(x...) fprintf(stderr, x)
++
+ /* Initialize frame types to RFC 2516 values. Some broken peers apparently
+ use different frame types... sigh... */
+
+--- ppp-ppp-2.4.8/pppd/plugins/rp-pppoe/pppoe.h.old 2019-12-31 01:31:26.000000000 +0000
++++ ppp-ppp-2.4.8/pppd/plugins/rp-pppoe/pppoe.h 2020-02-26 04:01:48.414595401 +0000
+@@ -46,6 +46,7 @@
+ /* This has to be included before Linux 4.8's linux/in.h
+ * gets dragged in. */
+ #include <netinet/in.h>
++#include <netinet/if_ether.h>
+
+ /* Ugly header files on some Linux boxes... */
+ #if defined(HAVE_LINUX_IF_H)
diff --git a/user/ppp/ppp.mod b/user/ppp/ppp.mod
new file mode 100644
index 000000000..e936041c6
--- /dev/null
+++ b/user/ppp/ppp.mod
@@ -0,0 +1,10 @@
+alias char-major-108 ppp_generic
+alias /dev/ppp ppp_generic
+alias tty-ldisc-3 ppp_async
+alias tty-ldisc-13 n_hdlc
+alias tty-ldisc-14 ppp_synctty
+alias ppp-compress-18 ppp_mppe
+alias ppp-compress-21 bsd_comp
+alias ppp-compress-24 ppp_deflate
+alias ppp-compress-26 ppp_deflate
+alias net-pf-24 pppoe
diff --git a/user/ppp/ppp.pamd b/user/ppp/ppp.pamd
new file mode 100644
index 000000000..ac86d9512
--- /dev/null
+++ b/user/ppp/ppp.pamd
@@ -0,0 +1,7 @@
+# Welcome to Adélie Linux.
+
+# This file ensures PPP uses the system-wide PAM configuration.
+
+auth include base-auth
+account include base-account
+session include base-session-noninteractive
diff --git a/user/ppp/pppd.initd b/user/ppp/pppd.initd
new file mode 100644
index 000000000..30bd641da
--- /dev/null
+++ b/user/ppp/pppd.initd
@@ -0,0 +1,13 @@
+#!/sbin/openrc-run
+
+name="pppd"
+command="/usr/sbin/${SVCNAME}"
+command_args="nodetach ${PPPD_OPTS}"
+pidfile="/var/run/$SVCNAME.pid"
+command_background=true
+
+start_pre() {
+ checkpath --directory /var/run/ppp
+ modprobe pptp
+}
+
diff --git a/user/ppp/utmpx.patch b/user/ppp/utmpx.patch
new file mode 100644
index 000000000..2914bc4be
--- /dev/null
+++ b/user/ppp/utmpx.patch
@@ -0,0 +1,142 @@
+--- ppp-2.4.7/pppd/utils.c.old 2014-08-09 12:31:39.000000000 +0000
++++ ppp-2.4.7/pppd/utils.c 2019-05-09 22:13:47.546342436 +0000
+@@ -41,7 +41,7 @@
+ #include <syslog.h>
+ #include <netdb.h>
+ #include <time.h>
+-#include <utmp.h>
++#include <utmpx.h>
+ #include <pwd.h>
+ #include <sys/param.h>
+ #include <sys/types.h>
+--- ppp-2.4.7/pppd/auth.c.old 2019-05-09 22:07:26.737835517 +0000
++++ ppp-2.4.7/pppd/auth.c 2019-05-09 22:14:11.833696617 +0000
+@@ -81,7 +81,7 @@
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <sys/socket.h>
+-#include <utmp.h>
++#include <utmpx.h>
+ #include <fcntl.h>
+ #if defined(_PATH_LASTLOG) && defined(__linux__)
+ #include <lastlog.h>
+--- ppp-2.4.7/pppd/sys-linux.c.old 2019-05-09 22:07:26.747834427 +0000
++++ ppp-2.4.7/pppd/sys-linux.c 2019-05-09 22:15:20.616203578 +0000
+@@ -85,7 +85,7 @@
+ #include <string.h>
+ #include <time.h>
+ #include <memory.h>
+-#include <utmp.h>
++#include <utmpx.h>
+ #include <mntent.h>
+ #include <signal.h>
+ #include <fcntl.h>
+@@ -2230,75 +2230,6 @@
+ * Update the wtmp file with the appropriate user name and tty device.
+ */
+
+-void logwtmp (const char *line, const char *name, const char *host)
+-{
+- struct utmp ut, *utp;
+- pid_t mypid = getpid();
+-#if __GLIBC__ < 2
+- int wtmp;
+-#endif
+-
+-/*
+- * Update the signon database for users.
+- * Christoph Lameter: Copied from poeigl-1.36 Jan 3, 1996
+- */
+- utmpname(_PATH_UTMP);
+- setutent();
+- while ((utp = getutent()) && (utp->ut_pid != mypid))
+- /* nothing */;
+-
+- if (utp)
+- memcpy(&ut, utp, sizeof(ut));
+- else
+- /* some gettys/telnetds don't initialize utmp... */
+- memset(&ut, 0, sizeof(ut));
+-
+- if (ut.ut_id[0] == 0)
+- strncpy(ut.ut_id, line + 3, sizeof(ut.ut_id));
+-
+- strncpy(ut.ut_user, name, sizeof(ut.ut_user));
+- strncpy(ut.ut_line, line, sizeof(ut.ut_line));
+-
+- time(&ut.ut_time);
+-
+- ut.ut_type = USER_PROCESS;
+- ut.ut_pid = mypid;
+-
+- /* Insert the host name if one is supplied */
+- if (*host)
+- strncpy (ut.ut_host, host, sizeof(ut.ut_host));
+-
+- /* Insert the IP address of the remote system if IP is enabled */
+- if (ipcp_protent.enabled_flag && ipcp_hisoptions[0].neg_addr)
+- memcpy(&ut.ut_addr, (char *) &ipcp_hisoptions[0].hisaddr,
+- sizeof(ut.ut_addr));
+-
+- /* CL: Makes sure that the logout works */
+- if (*host == 0 && *name==0)
+- ut.ut_host[0]=0;
+-
+- pututline(&ut);
+- endutent();
+-/*
+- * Update the wtmp file.
+- */
+-#if __GLIBC__ >= 2
+- updwtmp(_PATH_WTMP, &ut);
+-#else
+- wtmp = open(_PATH_WTMP, O_APPEND|O_WRONLY);
+- if (wtmp >= 0) {
+- flock(wtmp, LOCK_EX);
+-
+- if (write (wtmp, (char *)&ut, sizeof(ut)) != sizeof(ut))
+- warn("error writing %s: %m", _PATH_WTMP);
+-
+- flock(wtmp, LOCK_UN);
+-
+- close (wtmp);
+- }
+-#endif
+-}
+-
+
+ /********************************************************************
+ *
+--- ppp-2.4.7/pppd/tty.c.old 2014-08-09 12:31:39.000000000 +0000
++++ ppp-2.4.7/pppd/tty.c 2019-05-09 22:15:34.854652468 +0000
+@@ -81,7 +81,7 @@
+ #include <fcntl.h>
+ #include <syslog.h>
+ #include <netdb.h>
+-#include <utmp.h>
++#include <utmpx.h>
+ #include <pwd.h>
+ #include <setjmp.h>
+ #include <sys/param.h>
+--- ppp-2.4.7/pppd/session.c.old 2014-08-09 12:31:39.000000000 +0000
++++ ppp-2.4.7/pppd/session.c 2019-05-09 22:15:52.692709222 +0000
+@@ -77,7 +77,7 @@
+ #include <shadow.h>
+ #endif
+ #include <time.h>
+-#include <utmp.h>
++#include <utmpx.h>
+ #include <fcntl.h>
+ #include <unistd.h>
+ #include "pppd.h"
+--- ppp-2.4.7/pppd/main.c.old 2019-05-09 22:07:26.717837696 +0000
++++ ppp-2.4.7/pppd/main.c 2019-05-09 22:16:06.881163559 +0000
+@@ -78,7 +78,7 @@
+ #include <fcntl.h>
+ #include <syslog.h>
+ #include <netdb.h>
+-#include <utmp.h>
++#include <utmpx.h>
+ #include <pwd.h>
+ #include <setjmp.h>
+ #include <sys/param.h>
diff --git a/user/prison/APKBUILD b/user/prison/APKBUILD
index d6bb9b46f..a84a1ea2d 100644
--- a/user/prison/APKBUILD
+++ b/user/prison/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=prison
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Qt Barcode library for programatically creating QR codes"
url="https://www.kde.org/"
@@ -10,12 +10,14 @@ license="MIT"
depends=""
depends_dev="qt5-qtbase-dev libqrencode-dev libdmtx-dev"
makedepends="$depends_dev cmake extra-cmake-modules doxygen graphviz
- qt5-qtdeclarative-dev qt5-qttools-dev"
+ qt5-qtdeclarative-dev qt5-qtmultimedia-dev qt5-qttools-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-quick"
-source="https://download.kde.org/stable/frameworks/${pkgver%.*}/prison-$pkgver.tar.xz"
+source="https://download.kde.org/stable/frameworks/${pkgver%.*}/prison-$pkgver.tar.xz
+ code128.patch
+ endian.patch
+ "
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,17 +29,15 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -47,4 +47,6 @@ quick() {
mv "$pkgdir"/usr/lib/qt5/qml "$subpkgdir"/usr/lib/qt5/
}
-sha512sums="6ffdeb4c8196a9ec6c845ebe1d58801c02d570f831bf5c1a2bd8f30d048cc0d62aa8e8273fc8db4689c6ac45caa35906bad82b211e58108b7ed8cf42649acf16 prison-5.54.0.tar.xz"
+sha512sums="7de7f528d686ddcf1ff987786ca06d431944deed49f89075a0438982408843249882fc931003f91b4646513ff4515df9104d97ba662a87eeee6394cc93bd3969 prison-5.94.0.tar.xz
+a9d43722cab473ce132047523162f6532b5c84ff1446fdec262a434396aaf1fd83e87fff06c37ead01037488863805989ccd39412d72116485a2f9713733173f code128.patch
+b0614c9045864781daab75c7bb6e352431b3a4cdb167a7cfeafe8ff5a8a62c8f28f78db3a42175d230d3655877c7f49cf7f2774b189c1b11107217d74c0d7820 endian.patch"
diff --git a/user/prison/code128.patch b/user/prison/code128.patch
new file mode 100644
index 000000000..0c7731e06
--- /dev/null
+++ b/user/prison/code128.patch
@@ -0,0 +1,245 @@
+From a76354819cc2de05b0a63abc4786a0a3bfe4cafa Mon Sep 17 00:00:00 2001
+From: ivan tkachenko <me@ratijas.tk>
+Date: Sat, 2 Oct 2021 13:53:11 +0300
+Subject: [PATCH] Convert code128 data table to binary literals
+
+...and add a trailing comma, finally.
+---
+ src/lib/code128barcode.cpp | 220 ++++++++++++++++++-------------------
+ 1 file changed, 109 insertions(+), 111 deletions(-)
+
+diff --git a/src/lib/code128barcode.cpp b/src/lib/code128barcode.cpp
+index f379c09..cea724a 100644
+--- a/src/lib/code128barcode.cpp
++++ b/src/lib/code128barcode.cpp
+@@ -64,118 +64,116 @@ QImage Code128Barcode::paintImage(const QSizeF &size)
+ }
+
+ // Code 128 symbol table
+-// ### this is the perfect use-case for binary literals (as the binary pattern
+-// corresponds to the line pattern), adjust this once KF5 moves to C++14
+ static const uint16_t code128_symbols[] = {
+- 1740, // 0b11011001100 // 0
+- 1644, // 0b11001101100
+- 1638, // 0b11001100110
+- 1176, // 0b10010011000
+- 1164, // 0b10010001100
+- 1100, // 0b10001001100
+- 1224, // 0b10011001000
+- 1220, // 0b10011000100
+- 1124, // 0b10001100100
+- 1608, // 0b11001001000
+- 1604, // 0b11001000100 // 10
+- 1572, // 0b11000100100
+- 1436, // 0b10110011100
+- 1244, // 0b10011011100
+- 1230, // 0b10011001110
+- 1484, // 0b10111001100
+- 1260, // 0b10011101100
+- 1254, // 0b10011100110
+- 1650, // 0b11001110010
+- 1628, // 0b11001011100
+- 1614, // 0b11001001110 // 20
+- 1764, // 0b11011100100
+- 1652, // 0b11001110100
+- 1902, // 0b11101101110
+- 1868, // 0b11101001100
+- 1836, // 0b11100101100
+- 1830, // 0b11100100110
+- 1892, // 0b11101100100
+- 1844, // 0b11100110100
+- 1842, // 0b11100110010
+- 1752, // 0b11011011000 // 30
+- 1734, // 0b11011000110
+- 1590, // 0b11000110110
+- 1304, // 0b10100011000
+- 1112, // 0b10001011000
+- 1094, // 0b10001000110
+- 1416, // 0b10110001000
+- 1128, // 0b10001101000
+- 1122, // 0b10001100010
+- 1672, // 0b11010001000
+- 1576, // 0b11000101000 // 40
+- 1570, // 0b11000100010
+- 1464, // 0b10110111000
+- 1422, // 0b10110001110
+- 1134, // 0b10001101110
+- 1496, // 0b10111011000
+- 1478, // 0b10111000110
+- 1142, // 0b10001110110
+- 1910, // 0b11101110110
+- 1678, // 0b11010001110
+- 1582, // 0b11000101110 // 50
+- 1768, // 0b11011101000
+- 1762, // 0b11011100010
+- 1774, // 0b11011101110
+- 1880, // 0b11101011000
+- 1862, // 0b11101000110
+- 1814, // 0b11100010110
+- 1896, // 0b11101101000
+- 1890, // 0b11101100010
+- 1818, // 0b11100011010
+- 1914, // 0b11101111010 // 60
+- 1602, // 0b11001000010
+- 1930, // 0b11110001010
+- 1328, // 0b10100110000
+- 1292, // 0b10100001100
+- 1200, // 0b10010110000
+- 1158, // 0b10010000110
+- 1068, // 0b10000101100
+- 1062, // 0b10000100110
+- 1424, // 0b10110010000
+- 1412, // 0b10110000100 // 70
+- 1232, // 0b10011010000
+- 1218, // 0b10011000010
+- 1076, // 0b10000110100
+- 1074, // 0b10000110010
+- 1554, // 0b11000010010
+- 1616, // 0b11001010000
+- 1978, // 0b11110111010
+- 1556, // 0b11000010100
+- 1146, // 0b10001111010
+- 1340, // 0b10100111100 // 80
+- 1212, // 0b10010111100
+- 1182, // 0b10010011110
+- 1508, // 0b10111100100
+- 1268, // 0b10011110100
+- 1266, // 0b10011110010
+- 1956, // 0b11110100100
+- 1940, // 0b11110010100
+- 1938, // 0b11110010010
+- 1758, // 0b11011011110
+- 1782, // 0b11011110110 // 90
+- 1974, // 0b11110110110
+- 1400, // 0b10101111000
+- 1310, // 0b10100011110
+- 1118, // 0b10001011110
+- 1512, // 0b10111101000
+- 1506, // 0b10111100010
+- 1960, // 0b11110101000
+- 1954, // 0b11110100010
+- 1502, // 0b10111011110
+- 1518, // 0b10111101110 // 100
+- 1886, // 0b11101011110
+- 1966, // 0b11110101110
+- 1668, // 0b11010000100
+- 1680, // 0b11010010000
+- 1692, // 0b11010011100
+- 1594, // 0b11000111010
+- 1720, // 0b11010111000
+- 6379 // 0b1100011101011
++ 0b11011001100, // 0
++ 0b11001101100,
++ 0b11001100110,
++ 0b10010011000,
++ 0b10010001100,
++ 0b10001001100,
++ 0b10011001000,
++ 0b10011000100,
++ 0b10001100100,
++ 0b11001001000,
++ 0b11001000100, // 10
++ 0b11000100100,
++ 0b10110011100,
++ 0b10011011100,
++ 0b10011001110,
++ 0b10111001100,
++ 0b10011101100,
++ 0b10011100110,
++ 0b11001110010,
++ 0b11001011100,
++ 0b11001001110, // 20
++ 0b11011100100,
++ 0b11001110100,
++ 0b11101101110,
++ 0b11101001100,
++ 0b11100101100,
++ 0b11100100110,
++ 0b11101100100,
++ 0b11100110100,
++ 0b11100110010,
++ 0b11011011000, // 30
++ 0b11011000110,
++ 0b11000110110,
++ 0b10100011000,
++ 0b10001011000,
++ 0b10001000110,
++ 0b10110001000,
++ 0b10001101000,
++ 0b10001100010,
++ 0b11010001000,
++ 0b11000101000, // 40
++ 0b11000100010,
++ 0b10110111000,
++ 0b10110001110,
++ 0b10001101110,
++ 0b10111011000,
++ 0b10111000110,
++ 0b10001110110,
++ 0b11101110110,
++ 0b11010001110,
++ 0b11000101110, // 50
++ 0b11011101000,
++ 0b11011100010,
++ 0b11011101110,
++ 0b11101011000,
++ 0b11101000110,
++ 0b11100010110,
++ 0b11101101000,
++ 0b11101100010,
++ 0b11100011010,
++ 0b11101111010, // 60
++ 0b11001000010,
++ 0b11110001010,
++ 0b10100110000,
++ 0b10100001100,
++ 0b10010110000,
++ 0b10010000110,
++ 0b10000101100,
++ 0b10000100110,
++ 0b10110010000,
++ 0b10110000100, // 70
++ 0b10011010000,
++ 0b10011000010,
++ 0b10000110100,
++ 0b10000110010,
++ 0b11000010010,
++ 0b11001010000,
++ 0b11110111010,
++ 0b11000010100,
++ 0b10001111010,
++ 0b10100111100, // 80
++ 0b10010111100,
++ 0b10010011110,
++ 0b10111100100,
++ 0b10011110100,
++ 0b10011110010,
++ 0b11110100100,
++ 0b11110010100,
++ 0b11110010010,
++ 0b11011011110,
++ 0b11011110110, // 90
++ 0b11110110110,
++ 0b10101111000,
++ 0b10100011110,
++ 0b10001011110,
++ 0b10111101000,
++ 0b10111100010,
++ 0b11110101000,
++ 0b11110100010,
++ 0b10111011110,
++ 0b10111101110, // 100
++ 0b11101011110,
++ 0b11110101110,
++ 0b11010000100,
++ 0b11010010000,
++ 0b11010011100,
++ 0b11000111010,
++ 0b11010111000,
++ 0b1100011101011,
+ };
+
+ static uint8_t symbolForCharacter(const QByteArray &data, int index, CodeSet set)
+--
+GitLab
+
diff --git a/user/prison/endian.patch b/user/prison/endian.patch
new file mode 100644
index 000000000..b812bc46e
--- /dev/null
+++ b/user/prison/endian.patch
@@ -0,0 +1,33 @@
+We write things in byte ordering-dependent format, so use that.
+
+--- prison-5.94.0/src/lib/qrcodebarcode.cpp.old 2022-05-06 06:22:05.000000000 -0500
++++ prison-5.94.0/src/lib/qrcodebarcode.cpp 2022-06-04 16:38:40.211478102 -0500
+@@ -93,7 +93,7 @@
+ }
+
+ const auto result =
+- QImage(img, code->width + 2 * margin, code->width + 2 * margin, QImage::Format_ARGB32).copy(); // deep copy as we are going to delete img
++ QImage(img, code->width + 2 * margin, code->width + 2 * margin, QImage::Format_RGBA8888).copy(); // deep copy as we are going to delete img
+ delete[] img;
+ return result;
+ }
+--- prison-5.94.0/src/lib/datamatrixbarcode.cpp.old 2022-05-06 06:22:05.000000000 -0500
++++ prison-5.94.0/src/lib/datamatrixbarcode.cpp 2022-06-04 16:39:00.459255774 -0500
+@@ -37,7 +37,7 @@
+ QImage ret;
+
+ if (foregroundColor() == Qt::black && backgroundColor() == Qt::white) {
+- QImage tmp(enc->image->pxl, enc->image->width, enc->image->height, QImage::Format_ARGB32);
++ QImage tmp(enc->image->pxl, enc->image->width, enc->image->height, QImage::Format_RGBA8888);
+ // we need to copy, because QImage generated from a char pointer requires the
+ // char pointer to be kept around forever, and manually deleted.
+ ret = tmp.copy();
+@@ -66,7 +66,7 @@
+ img[i - 1 + j] = color[j];
+ }
+ }
+- QImage tmp(img, enc->image->width, enc->image->height, QImage::Format_ARGB32);
++ QImage tmp(img, enc->image->width, enc->image->height, QImage::Format_RGBA8888);
+ // we need to copy, because QImage generated from a char pointer requires the
+ // char pointer to be kept around forever, and manually deleted.
+ ret = tmp.copy();
diff --git a/user/prosody/APKBUILD b/user/prosody/APKBUILD
index 8fc6ce35c..636c3037d 100644
--- a/user/prosody/APKBUILD
+++ b/user/prosody/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Mika Havela <mika.havela@gmail.com>
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=prosody
-pkgver=0.11.2
+pkgver=0.11.13
pkgrel=0
pkgdesc="Lua based Jabber/XMPP server"
url="http://prosody.im/"
@@ -20,8 +20,14 @@ source="https://prosody.im/downloads/source/$pkgname-$pkgver.tar.gz
$pkgname.initd
"
+# secfixes:
+# 0.11.13-r0:
+# - CVE-2021-32917
+# - CVE-2021-32919
+# - CVE-2021-32920
+# - CVE-2021-37601
+
build() {
- cd "$builddir"
./configure \
--prefix=/usr \
--sysconfdir=/etc/prosody \
@@ -37,12 +43,10 @@ build() {
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -d -o prosody -g prosody "$pkgdir/var/log/prosody"
@@ -52,6 +56,6 @@ package() {
install -D -m755 "$srcdir"/"$pkgname".initd "$pkgdir"/etc/init.d/"$pkgname"
}
-sha512sums="22e55a551a40c92f38a1ed1de5fdcad574d699d58c2e27f93c3d465b55487b8e923c2ba088daf93c7140cbafb0d429687e0b662c8bb1c1aba4b79ac1ea271cd1 prosody-0.11.2.tar.gz
+sha512sums="7616785536b7b51767a26963a80c961ef2403609e1e78dda3f88cf68c00d5bb899278c70a22b006b58c36c62cbb1bbd390a9298bad5b8d6524928a1cd5457813 prosody-0.11.13.tar.gz
a6ca168fe3d11ee3b05295fb36dfaf8240c60a85507032b2502f9a97d3fd055f7eee38ba6efbb8f79472fc7cdd3556922194d0bd7099f7fb809be01890acc511 prosody.cfg.lua.patch
-24360603dbd5d2a92758e6c4b4aab4f02cbd05373580cba2df76df98b6045891e8108e8c2d16af9508e93968ed5880db952e7a21b2742ebeec6f14b167968c2c prosody.initd"
+11b0f5e4fa488e047c26aa5e51c35983100cdbf7ebbf7c8b6d003c8db7f52e797f93e4744d54b3094c82d722d5e4de62b5734376cb5e69a4c6127f8cb07a4347 prosody.initd"
diff --git a/user/prosody/luasec-0.6-fix.patch b/user/prosody/luasec-0.6-fix.patch
deleted file mode 100644
index c8e37d091..000000000
--- a/user/prosody/luasec-0.6-fix.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/util/dependencies.lua b/util/dependencies.lua
-index 4d50cf6..9ea211d 100644
---- a/util/dependencies.lua
-+++ b/util/dependencies.lua
-@@ -99,6 +99,9 @@ function check_dependencies()
- ["luarocks"] = "luarocks install luasec";
- ["Source"] = "http://www.inf.puc-rio.br/~brunoos/luasec/";
- }, "SSL/TLS support will not be available");
-+ elseif not _G.ssl then
-+ _G.ssl = ssl;
-+ _G.ssl.context = require "ssl.context";
- end
-
- local encodings, err = softreq "util.encodings"
diff --git a/user/prosody/mallinfo.patch b/user/prosody/mallinfo.patch
deleted file mode 100644
index 4f9247c9b..000000000
--- a/user/prosody/mallinfo.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/util-src/pposix.c b/util-src/pposix.c
-index e70a9d7..b9729ab 100644
---- a/util-src/pposix.c
-+++ b/util-src/pposix.c
-@@ -52,7 +52,7 @@
- #include <linux/falloc.h>
- #endif
-
--#if !defined(WITHOUT_MALLINFO) && defined(__linux__)
-+#ifdef __GLIBC__
- #include <malloc.h>
- #define WITH_MALLINFO
- #endif
diff --git a/user/prosody/prosody.initd b/user/prosody/prosody.initd
index 1d835daca..c0557bd81 100644
--- a/user/prosody/prosody.initd
+++ b/user/prosody/prosody.initd
@@ -19,7 +19,7 @@ checkconfig() {
eerror "You need a /etc/prosody/prosody.cfg.lua file to run prosody"
return 1
fi
- luac5.2 -p /etc/prosody/prosody.cfg.lua
+ luac -p /etc/prosody/prosody.cfg.lua
return $?
}
diff --git a/user/prosody/prosody.pre-install b/user/prosody/prosody.pre-install
index 39d9cfadd..d7b34c634 100644
--- a/user/prosody/prosody.pre-install
+++ b/user/prosody/prosody.pre-install
@@ -1,11 +1,7 @@
#!/bin/sh
-addgroup -S prosody 2>/dev/null
-adduser -S -D \
- -h /var/lib/prosody \
- -s /sbin/nologin \
- -G prosody \
- -g "Prosody XMPP Server" \
- prosody 2>/dev/null
+groupadd -r prosody 2>/dev/null
+useradd -c "Prosody XMPP Server" -s /sbin/nologin -g prosody \
+ -m -d /var/lib/prosody -r prosody 2>/dev/null
exit 0
diff --git a/user/prosody/prosodyctl.patch b/user/prosody/prosodyctl.patch
deleted file mode 100644
index 18333dd52..000000000
--- a/user/prosody/prosodyctl.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- prosody-0.9.10.q/prosodyctl
-+++ prosody-0.9.10/prosodyctl
-@@ -244,7 +244,7 @@
- local modulemanager = require "core.modulemanager"
-
- local prosodyctl = require "util.prosodyctl"
--require "socket"
-+local socket = require "socket"
- -----------------------
-
- -- FIXME: Duplicate code waiting for util.startup
diff --git a/user/protobuf/32bit.patch b/user/protobuf/32bit.patch
new file mode 100644
index 000000000..4630d8afa
--- /dev/null
+++ b/user/protobuf/32bit.patch
@@ -0,0 +1,121 @@
+From 5f4a52d9bff7595ec47fb6727662a1cada3cd404 Mon Sep 17 00:00:00 2001
+From: Mike Kruskal <mkruskal@google.com>
+Date: Thu, 15 Sep 2022 10:23:23 -0700
+Subject: [PATCH 3/7] Patching static assert test failure
+
+---
+ src/google/protobuf/extension_set_unittest.cc | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/google/protobuf/extension_set_unittest.cc b/src/google/protobuf/extension_set_unittest.cc
+index 8b436bc20c9..84da3c5465a 100644
+--- a/src/google/protobuf/extension_set_unittest.cc
++++ b/src/google/protobuf/extension_set_unittest.cc
+@@ -855,8 +855,10 @@ TEST(ExtensionSetTest, SpaceUsedExcludingSelf) {
+ const size_t old_capacity = \
+ message->GetRepeatedExtension(unittest::repeated_##type##_extension) \
+ .Capacity(); \
+- EXPECT_GE(old_capacity, \
+- (RepeatedFieldLowerClampLimit<cpptype, sizeof(void*)>())); \
++ EXPECT_GE( \
++ old_capacity, \
++ (RepeatedFieldLowerClampLimit<cpptype, std::max(sizeof(cpptype), \
++ sizeof(void*))>())); \
+ for (int i = 0; i < 16; ++i) { \
+ message->AddExtension(unittest::repeated_##type##_extension, value); \
+ } \
+
+From c94b66706bec17d918495f4715183a5eaf0f8044 Mon Sep 17 00:00:00 2001
+From: Mike Kruskal <mkruskal@google.com>
+Date: Thu, 15 Sep 2022 11:31:31 -0700
+Subject: [PATCH 4/7] Test fixes for 32-bit architectures
+
+---
+ .../protobuf/io/zero_copy_stream_unittest.cc | 3 ++
+ .../protobuf/repeated_field_unittest.cc | 4 +--
+ src/google/protobuf/util/time_util_test.cc | 28 +++++++++++--------
+ 3 files changed, 22 insertions(+), 13 deletions(-)
+
+diff --git a/src/google/protobuf/io/zero_copy_stream_unittest.cc b/src/google/protobuf/io/zero_copy_stream_unittest.cc
+index d82354e571b..d656da5f13b 100644
+--- a/src/google/protobuf/io/zero_copy_stream_unittest.cc
++++ b/src/google/protobuf/io/zero_copy_stream_unittest.cc
+@@ -720,6 +720,9 @@ TEST_F(IoTest, StringIo) {
+
+ // Verifies that outputs up to kint32max can be created.
+ TEST_F(IoTest, LargeOutput) {
++ // Filter out this test on 32-bit architectures.
++ if(sizeof(void*) < 8) return;
++
+ std::string str;
+ StringOutputStream output(&str);
+ void* unused_data;
+diff --git a/src/google/protobuf/repeated_field_unittest.cc b/src/google/protobuf/repeated_field_unittest.cc
+index eb0b9091cf8..3baf6f25bb2 100644
+--- a/src/google/protobuf/repeated_field_unittest.cc
++++ b/src/google/protobuf/repeated_field_unittest.cc
+@@ -429,14 +429,14 @@ TEST(RepeatedField, ReserveNothing) {
+
+ TEST(RepeatedField, ReserveLowerClamp) {
+ int clamped_value = internal::CalculateReserveSize<bool, sizeof(void*)>(0, 1);
+- EXPECT_GE(clamped_value, 8 / sizeof(bool));
++ EXPECT_GE(clamped_value, sizeof(void*) / sizeof(bool));
+ EXPECT_EQ((internal::RepeatedFieldLowerClampLimit<bool, sizeof(void*)>()),
+ clamped_value);
+ // EXPECT_EQ(clamped_value, (internal::CalculateReserveSize<bool,
+ // sizeof(void*)>( clamped_value, 2)));
+
+ clamped_value = internal::CalculateReserveSize<int, sizeof(void*)>(0, 1);
+- EXPECT_GE(clamped_value, 8 / sizeof(int));
++ EXPECT_GE(clamped_value, sizeof(void*) / sizeof(int));
+ EXPECT_EQ((internal::RepeatedFieldLowerClampLimit<int, sizeof(void*)>()),
+ clamped_value);
+ // EXPECT_EQ(clamped_value, (internal::CalculateReserveSize<int,
+diff --git a/src/google/protobuf/util/time_util_test.cc b/src/google/protobuf/util/time_util_test.cc
+index 464e57b4ee5..dceb6dbe2bf 100644
+--- a/src/google/protobuf/util/time_util_test.cc
++++ b/src/google/protobuf/util/time_util_test.cc
+@@ -48,15 +48,18 @@ using google::protobuf::Timestamp;
+ namespace {
+
+ TEST(TimeUtilTest, TimestampStringFormat) {
+- Timestamp begin, end;
+- EXPECT_TRUE(TimeUtil::FromString("0001-01-01T00:00:00Z", &begin));
+- EXPECT_EQ(TimeUtil::kTimestampMinSeconds, begin.seconds());
+- EXPECT_EQ(0, begin.nanos());
+- EXPECT_TRUE(TimeUtil::FromString("9999-12-31T23:59:59.999999999Z", &end));
+- EXPECT_EQ(TimeUtil::kTimestampMaxSeconds, end.seconds());
+- EXPECT_EQ(999999999, end.nanos());
+- EXPECT_EQ("0001-01-01T00:00:00Z", TimeUtil::ToString(begin));
+- EXPECT_EQ("9999-12-31T23:59:59.999999999Z", TimeUtil::ToString(end));
++ // These these are out of bounds for 32-bit architectures.
++ if(sizeof(time_t) >= sizeof(uint64_t)) {
++ Timestamp begin, end;
++ EXPECT_TRUE(TimeUtil::FromString("0001-01-01T00:00:00Z", &begin));
++ EXPECT_EQ(TimeUtil::kTimestampMinSeconds, begin.seconds());
++ EXPECT_EQ(0, begin.nanos());
++ EXPECT_TRUE(TimeUtil::FromString("9999-12-31T23:59:59.999999999Z", &end));
++ EXPECT_EQ(TimeUtil::kTimestampMaxSeconds, end.seconds());
++ EXPECT_EQ(999999999, end.nanos());
++ EXPECT_EQ("0001-01-01T00:00:00Z", TimeUtil::ToString(begin));
++ EXPECT_EQ("9999-12-31T23:59:59.999999999Z", TimeUtil::ToString(end));
++ }
+
+ // Test negative timestamps.
+ Timestamp time = TimeUtil::NanosecondsToTimestamp(-1);
+@@ -94,9 +97,12 @@ TEST(TimeUtilTest, DurationStringFormat) {
+ EXPECT_TRUE(TimeUtil::FromString("0001-01-01T00:00:00Z", &begin));
+ EXPECT_TRUE(TimeUtil::FromString("9999-12-31T23:59:59.999999999Z", &end));
+
+- EXPECT_EQ("315537897599.999999999s", TimeUtil::ToString(end - begin));
++ // These these are out of bounds for 32-bit architectures.
++ if(sizeof(time_t) >= sizeof(uint64_t)) {
++ EXPECT_EQ("315537897599.999999999s", TimeUtil::ToString(end - begin));
++ EXPECT_EQ("-315537897599.999999999s", TimeUtil::ToString(begin - end));
++ }
+ EXPECT_EQ(999999999, (end - begin).nanos());
+- EXPECT_EQ("-315537897599.999999999s", TimeUtil::ToString(begin - end));
+ EXPECT_EQ(-999999999, (begin - end).nanos());
+
+ // Generated output should contain 3, 6, or 9 fractional digits.
+
diff --git a/user/protobuf/APKBUILD b/user/protobuf/APKBUILD
index f8ff737a6..57708bda2 100644
--- a/user/protobuf/APKBUILD
+++ b/user/protobuf/APKBUILD
@@ -1,53 +1,61 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
-# TODO: Build Python module, and clean up Ruby build process
pkgname=protobuf
_gemname=google-protobuf
-pkgver=3.6.1
-_tstver=1.8.0
-pkgrel=0
+pkgver=3.20.3
+_tstver=8d51dc50eb7e7698427fed81b85edad0e032112e
+pkgrel=1
pkgdesc="Library for extensible, efficient structure packing"
url="https://github.com/google/protobuf"
arch="all"
+options="!check" # Broken everywhere.
license="BSD-3-Clause"
depends_dev="zlib-dev"
-makedepends="$depends_dev autoconf automake libtool ruby ruby-dev ruby-rake"
-subpackages="ruby-$_gemname:_ruby $pkgname-dev $pkgname-vim::noarch"
+makedepends="$depends_dev autoconf automake libtool ruby ruby-dev ruby-rake
+ ruby-rake-compiler ruby-io-console ruby-irb ruby-power_assert
+ ruby-rake-compiler ruby-test-unit ruby-reline ruby-rubygems-tasks
+ python3 python3-dev cmake"
+checkdepends="ruby-json ruby-test-unit"
+subpackages="ruby-$_gemname:_ruby py3-$pkgname:_python $pkgname-dev $pkgname-vim::noarch"
source="$pkgname-$pkgver.tar.gz::https://github.com/google/$pkgname/archive/v$pkgver.tar.gz
- googletest-$_tstver.tar.gz::https://github.com/google/googletest/archive/release-$_tstver.tar.gz
- musl-fix.patch
- trim-rakefile.patch"
-builddir="$srcdir/$pkgname-$pkgver"
+ googletest-$_tstver.tar.gz::https://github.com/google/googletest/archive/$_tstver.tar.gz
+ cxx14.patch
+ 32bit.patch
+ python-311.patch
+ "
prepare() {
default_prepare
- cd "$builddir"
- ./autogen.sh
-
# symlink tests to the test directory
- rm -rf third_party/*
- ln -sf "$srcdir"/googletest-release-$_tstver \
+ rm -rf third_party/googletest
+ ln -sf "$srcdir"/googletest-$_tstver \
"$builddir"/third_party/googletest
}
build() {
- cd "$builddir"
-
- CXXFLAGS="$CXXFLAGS -fno-delete-null-pointer-checks" LDFLAGS="$LDFLAGS -latomic" \
- ./configure --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --infodir=/usr/share/info \
- --localstatedir=/var
- make
-
+ # Build Protobuf
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} cmake
+ make -j1
+
+ # Build for Ruby
cd "$builddir"/ruby
-
# Generate proto files for built-in protocols.
- rake genproto
-
+ export LD_LIBRARY_PATH=${builddir}
+ export CPPFLAGS="-L${builddir}"
+ export PATH="${builddir}:$PATH"
+ rake
gem build $_gemname.gemspec
gem install --local \
--install-dir dist \
@@ -56,23 +64,25 @@ build() {
--verbose \
$_gemname
- # build test-suite
- local test; for test in googletest googlemock; do
- cd "$builddir/third_party/googletest/$test"
- autoreconf -vfi
- ./configure
- make
- done
+ # Build for Python 3
+ cd "$builddir"/python
+ python3 setup.py build --cpp_implementation
+
+ # Build test-suite
+ cd "$builddir"/third_party/googletest/
+ cmake .
+ make -j1
}
-# TODO: Run tests for ruby gem.
check() {
- cd "$builddir"
make check
+ cd "$builddir"/ruby
+ rake test
+ cd "$builddir"/python
+ python3 setup.py test --cpp_implementation
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -93,6 +103,14 @@ _ruby() {
rm -r ext/ tests/
}
+_python() {
+ pkgdesc="Python bindings to Google's data interchange format"
+
+ cd "$builddir"/python
+ python3 setup.py install --prefix=/usr --root="$subpkgdir" \
+ --cpp_implementation
+}
+
vim() {
pkgdesc="Vim syntax for $pkgname"
depends=""
@@ -102,7 +120,8 @@ vim() {
"$subpkgdir"/usr/share/vim/vimfiles/syntax/proto.vim
}
-sha512sums="1bc175d24b49de1b1e41eaf39598194e583afffb924c86c8d2e569d935af21874be76b2cbd4d9655a1d38bac3d4cd811de88bc2c72d81bad79115e69e5b0d839 protobuf-3.6.1.tar.gz
-1dbece324473e53a83a60601b02c92c089f5d314761351974e097b2cf4d24af4296f9eb8653b6b03b1e363d9c5f793897acae1f0c7ac40149216035c4d395d9d googletest-1.8.0.tar.gz
-875592bc5dc5efe9087ea1b340673f54c984ecd5aa3b110a2da136bdc28009af7ce1a9c57f4747ff809fc02eb6c39a0209c277177172af467a54172d9700188a musl-fix.patch
-d1d11fe76d2a1ae92f47f9eb1e0d94c67b7192a9dc4a382b6c0835f4fe4dbc2f98ca1b3c5095ad5b4e368581072330f943209c0decea02ebb47938588543fdb1 trim-rakefile.patch"
+sha512sums="01d6703bdbe769a1200ee6e4ebcdcb99688ec21f576988c60d82ec36e0822820fb245fcb4ca53293143d53e666d748b5a0c6937bc659fb3cdc4cd9b05ed12a1c protobuf-3.20.3.tar.gz
+f7f804abf68af5e4e6cd767151773394fb8297d7d7fc878532ebb22b8c41d13554f68fa38a27470d458b590259a939e93cee7e5f5f6de8f1726c7ce85a606099 googletest-8d51dc50eb7e7698427fed81b85edad0e032112e.tar.gz
+faf8962f0c7f1e4053b28a712b31ac9b254b17986326d2188d6edcc609f4b52f4cb85766c4bc02c6b9bc7bc30e2061f940a3089db54eb6056f729a80c1cfa891 cxx14.patch
+2dfb540395460f0ea9fad663851633b29fa368a6ec99a88a42e31d7547034191679ef868c0ec67613d070659d4e322dc942b54b21793764e3d2342927977c7eb 32bit.patch
+acb8f0bfec92ff969699c909e509f28c1b8c95acb739ce9c3fedaa3f961e2b799190d9eeb4c6022b7cc9244aa7e6c47640cec077dff9382960ea3fc65b24e906 python-311.patch"
diff --git a/user/protobuf/cxx14.patch b/user/protobuf/cxx14.patch
new file mode 100644
index 000000000..bd7b5c374
--- /dev/null
+++ b/user/protobuf/cxx14.patch
@@ -0,0 +1,115 @@
+From 500cbd7b90fa7eb5716a3bbc6aa788ada028a1bf Mon Sep 17 00:00:00 2001
+From: Adam Cozzette <acozzette@google.com>
+Date: Thu, 11 Aug 2022 18:22:15 -0700
+Subject: [PATCH] Upgrade third_party/googletest submodule to current main
+ branch (#10393)
+
+* Upgrade third_party/googletest submodule to current main branch
+
+We can finally do this upgrade now that we have dropped our autotools
+build. Googletest recommends living at head, so let's go straight to the
+most recent commit on main. For some reason the googletest archive is
+not present in the Bazel build mirror, so I removed that entry and just
+left the GitHub download link in our WORKSPACE file.
+
+Googletest now requires C++14, so I updated all the C++11 flags I could
+find to C++14 instead. I added a .bazelrc file to add -std=c++14 for all
+our Bazel builds.
+
+* Delete the empty //src/google/protobuf:protobuf_test target
+
+* Avoid building C++ unit tests in aarch64 jobs for Python and Ruby
+---
+ .bazelrc | 1 +
+ CMakeLists.txt | 8 ++++----
+ WORKSPACE | 7 +++----
+ examples/Makefile | 4 ++--
+ python/setup.py | 2 +-
+ 5 files changed, 14 insertions(+), 24 deletions(-)
+ create mode 100644 .bazelrc
+
+diff --git a/.bazelrc b/.bazelrc
+new file mode 100644
+index 00000000000..f93facf00a8
+--- /dev/null
++++ b/.bazelrc
+@@ -0,0 +1 @@
++build --cxxopt=-std=c++14
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 345d7d05a49..b343c64e48e 100644
+--- a/cmake/CMakeLists.txt
++++ b/cmake/CMakeLists.txt
+@@ -32,11 +32,11 @@ if(protobuf_DEPRECATED_CMAKE_SUBDIRECTORY_USAGE)
+ get_filename_component(protobuf_SOURCE_DIR ${protobuf_SOURCE_DIR} DIRECTORY)
+ endif()
+
+-# Add c++11 flags
++# Add c++14 flags
+ if (CYGWIN)
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++11")
++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=gnu++14")
+ else()
+- set(CMAKE_CXX_STANDARD 11)
++ set(CMAKE_CXX_STANDARD 14)
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
+ set(CMAKE_CXX_EXTENSIONS OFF)
+ endif()
+@@ -187,7 +187,7 @@ set(protobuf_LINK_LIBATOMIC false)
+ if (NOT MSVC)
+ include(CheckCXXSourceCompiles)
+ set(OLD_CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS})
+- set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} -std=c++11)
++ set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS} -std=c++14)
+ check_cxx_source_compiles("
+ #include <atomic>
+ int main() {
+diff --git a/WORKSPACE b/WORKSPACE
+index ebe53315f03..20e7415a629 100644
+--- a/WORKSPACE
++++ b/WORKSPACE
+@@ -9,11 +9,10 @@ local_repository(
+
+ http_archive(
+ name = "com_google_googletest",
+- sha256 = "9dc9157a9a1551ec7a7e43daea9a694a0bb5fb8bec81235d8a1e6ef64c716dcb",
+- strip_prefix = "googletest-release-1.10.0",
++ sha256 = "ea54c9845568cb31c03f2eddc7a40f7f83912d04ab977ff50ec33278119548dd",
++ strip_prefix = "googletest-4c9a3bb62bf3ba1f1010bf96f9c8ed767b363774",
+ urls = [
+- "https://mirror.bazel.build/github.com/google/googletest/archive/release-1.10.0.tar.gz",
+- "https://github.com/google/googletest/archive/release-1.10.0.tar.gz",
++ "https://github.com/google/googletest/archive/4c9a3bb62bf3ba1f1010bf96f9c8ed767b363774.tar.gz",
+ ],
+ )
+
+diff --git a/examples/Makefile b/examples/Makefile
+index 2a64b64fe37..ef7a4ef58e9 100644
+--- a/examples/Makefile
++++ b/examples/Makefile
+@@ -41,11 +41,11 @@ protoc_middleman_dart: addressbook.proto
+
+ add_person_cpp: add_person.cc protoc_middleman
+ pkg-config --cflags protobuf # fails if protobuf is not installed
+- c++ -std=c++11 add_person.cc addressbook.pb.cc -o add_person_cpp `pkg-config --cflags --libs protobuf`
++ c++ -std=c++14 add_person.cc addressbook.pb.cc -o add_person_cpp `pkg-config --cflags --libs protobuf`
+
+ list_people_cpp: list_people.cc protoc_middleman
+ pkg-config --cflags protobuf # fails if protobuf is not installed
+- c++ -std=c++11 list_people.cc addressbook.pb.cc -o list_people_cpp `pkg-config --cflags --libs protobuf`
++ c++ -std=c++14 list_people.cc addressbook.pb.cc -o list_people_cpp `pkg-config --cflags --libs protobuf`
+
+ add_person_dart: add_person.dart protoc_middleman_dart
+
+diff --git a/python/setup.py b/python/setup.py
+index 283c99af607..3364ba9f7ad 100755
+--- a/python/setup.py
++++ b/python/setup.py
+@@ -331,7 +331,7 @@ def HasLibraryDirsOpt():
+ extra_compile_args.append('-Wno-invalid-offsetof')
+ extra_compile_args.append('-Wno-sign-compare')
+ extra_compile_args.append('-Wno-unused-variable')
+- extra_compile_args.append('-std=c++11')
++ extra_compile_args.append('-std=c++14')
+
+ if sys.platform == 'darwin':
+ extra_compile_args.append('-Wno-shorten-64-to-32')
diff --git a/user/protobuf/musl-fix.patch b/user/protobuf/musl-fix.patch
deleted file mode 100644
index 442ca20ed..000000000
--- a/user/protobuf/musl-fix.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-seems like both musl libc and android has byteswap.h
-
---- a/src/google/protobuf/stubs/port.h
-+++ b/src/google/protobuf/stubs/port.h
-@@ -94,7 +94,7 @@
- #include <intrin.h>
- #elif defined(__APPLE__)
- #include <libkern/OSByteOrder.h>
--#elif defined(__GLIBC__) || defined(__BIONIC__) || defined(__CYGWIN__)
-+#elif defined(__linux__) || defined(__BIONIC__) || defined(__CYGWIN__)
- #include <byteswap.h> // IWYU pragma: export
- #endif
-
-@@ -380,7 +380,7 @@ inline void GOOGLE_UNALIGNED_STORE64(voi
- #define bswap_32(x) OSSwapInt32(x)
- #define bswap_64(x) OSSwapInt64(x)
-
--#elif !defined(__GLIBC__) && !defined(__BIONIC__) && !defined(__CYGWIN__)
-+#elif !defined(__linux__) && !defined(__BIONIC__) && !defined(__CYGWIN__)
-
- static inline uint16 bswap_16(uint16 x) {
- return static_cast<uint16>(((x & 0xFF) << 8) | ((x & 0xFF00) >> 8));
diff --git a/user/protobuf/python-311.patch b/user/protobuf/python-311.patch
new file mode 100644
index 000000000..f0a68dadd
--- /dev/null
+++ b/user/protobuf/python-311.patch
@@ -0,0 +1,134 @@
+https://github.com/protocolbuffers/protobuf/pull/10403
+
+From da973aff2adab60a9e516d3202c111dbdde1a50f Mon Sep 17 00:00:00 2001
+From: Alexander Shadchin <alexandr.shadchin@gmail.com>
+Date: Sun, 14 Aug 2022 21:13:49 +0300
+Subject: [PATCH] Fix build with Python 3.11
+
+The PyFrameObject structure members have been removed from the public C API.
+---
+ python/google/protobuf/pyext/descriptor.cc | 75 ++++++++++++++++++----
+ 1 file changed, 62 insertions(+), 13 deletions(-)
+
+diff --git a/python/google/protobuf/pyext/descriptor.cc b/python/google/protobuf/pyext/descriptor.cc
+index fc83acf01a7..fc97b0fa6c1 100644
+--- a/python/google/protobuf/pyext/descriptor.cc
++++ b/python/google/protobuf/pyext/descriptor.cc
+@@ -58,6 +58,37 @@
+ : 0) \
+ : PyBytes_AsStringAndSize(ob, (charpp), (sizep)))
+
++#if PY_VERSION_HEX < 0x030900B1 && !defined(PYPY_VERSION)
++static PyCodeObject* PyFrame_GetCode(PyFrameObject *frame)
++{
++ Py_INCREF(frame->f_code);
++ return frame->f_code;
++}
++
++static PyFrameObject* PyFrame_GetBack(PyFrameObject *frame)
++{
++ Py_XINCREF(frame->f_back);
++ return frame->f_back;
++}
++#endif
++
++#if PY_VERSION_HEX < 0x030B00A7 && !defined(PYPY_VERSION)
++static PyObject* PyFrame_GetLocals(PyFrameObject *frame)
++{
++ if (PyFrame_FastToLocalsWithError(frame) < 0) {
++ return NULL;
++ }
++ Py_INCREF(frame->f_locals);
++ return frame->f_locals;
++}
++
++static PyObject* PyFrame_GetGlobals(PyFrameObject *frame)
++{
++ Py_INCREF(frame->f_globals);
++ return frame->f_globals;
++}
++#endif
++
+ namespace google {
+ namespace protobuf {
+ namespace python {
+@@ -96,48 +127,66 @@ bool _CalledFromGeneratedFile(int stacklevel) {
+ // This check is not critical and is somewhat difficult to implement correctly
+ // in PyPy.
+ PyFrameObject* frame = PyEval_GetFrame();
++ PyCodeObject* frame_code = nullptr;
++ PyObject* frame_globals = nullptr;
++ PyObject* frame_locals = nullptr;
++ bool result = false;
++
+ if (frame == nullptr) {
+- return false;
++ goto exit;
+ }
++ Py_INCREF(frame);
+ while (stacklevel-- > 0) {
+- frame = frame->f_back;
++ PyFrameObject* next_frame = PyFrame_GetBack(frame);
++ Py_DECREF(frame);
++ frame = next_frame;
+ if (frame == nullptr) {
+- return false;
++ goto exit;
+ }
+ }
+
+- if (frame->f_code->co_filename == nullptr) {
+- return false;
++ frame_code = PyFrame_GetCode(frame);
++ if (frame_code->co_filename == nullptr) {
++ goto exit;
+ }
+ char* filename;
+ Py_ssize_t filename_size;
+- if (PyString_AsStringAndSize(frame->f_code->co_filename,
++ if (PyString_AsStringAndSize(frame_code->co_filename,
+ &filename, &filename_size) < 0) {
+ // filename is not a string.
+ PyErr_Clear();
+- return false;
++ goto exit;
+ }
+ if ((filename_size < 3) ||
+ (strcmp(&filename[filename_size - 3], ".py") != 0)) {
+ // Cython's stack does not have .py file name and is not at global module
+ // scope.
+- return true;
++ result = true;
++ goto exit;
+ }
+ if (filename_size < 7) {
+ // filename is too short.
+- return false;
++ goto exit;
+ }
+ if (strcmp(&filename[filename_size - 7], "_pb2.py") != 0) {
+ // Filename is not ending with _pb2.
+- return false;
++ goto exit;
+ }
+
+- if (frame->f_globals != frame->f_locals) {
++ frame_globals = PyFrame_GetGlobals(frame);
++ frame_locals = PyFrame_GetLocals(frame);
++ if (frame_globals != frame_locals) {
+ // Not at global module scope
+- return false;
++ goto exit;
+ }
+ #endif
+- return true;
++ result = true;
++exit:
++ Py_XDECREF(frame_globals);
++ Py_XDECREF(frame_locals);
++ Py_XDECREF(frame_code);
++ Py_XDECREF(frame);
++ return result;
+ }
+
+ // If the calling code is not a _pb2.py file, raise AttributeError.
diff --git a/user/protobuf/trim-rakefile.patch b/user/protobuf/trim-rakefile.patch
deleted file mode 100644
index 7f53d7099..000000000
--- a/user/protobuf/trim-rakefile.patch
+++ /dev/null
@@ -1,72 +0,0 @@
-Remove code that we don't use to avoid installing additional dependencies.
---- a/ruby/Rakefile
-+++ b/ruby/Rakefile
-@@ -1,6 +1,4 @@
- require "rubygems"
--require "rubygems/package_task"
--require "rake/extensiontask" unless RUBY_PLATFORM == "java"
- require "rake/testtask"
-
- spec = Gem::Specification.load("google-protobuf.gemspec")
-@@ -39,51 +37,6 @@
- end
- end
-
--if RUBY_PLATFORM == "java"
-- if `which mvn` == ''
-- raise ArgumentError, "maven needs to be installed"
-- end
-- task :clean do
-- system("mvn --batch-mode clean")
-- end
--
-- task :compile do
-- system("mvn --batch-mode package")
-- end
--else
-- Rake::ExtensionTask.new("protobuf_c", spec) do |ext|
-- unless RUBY_PLATFORM =~ /darwin/
-- # TODO: also set "no_native to true" for mac if possible. As is,
-- # "no_native" can only be set if the RUBY_PLATFORM doing
-- # cross-compilation is contained in the "ext.cross_platform" array.
-- ext.no_native = true
-- end
-- ext.ext_dir = "ext/google/protobuf_c"
-- ext.lib_dir = "lib/google"
-- ext.cross_compile = true
-- ext.cross_platform = [
-- 'x86-mingw32', 'x64-mingw32',
-- 'x86_64-linux', 'x86-linux',
-- 'universal-darwin'
-- ]
-- end
--
-- task 'gem:windows' do
-- require 'rake_compiler_dock'
-- RakeCompilerDock.sh "bundle && IN_DOCKER=true rake cross native gem RUBY_CC_VERSION=2.5.0:2.4.0:2.3.0:2.2.2:2.1.6:2.0.0"
-- end
--
-- if RUBY_PLATFORM =~ /darwin/
-- task 'gem:native' do
-- system "rake genproto"
-- system "rake cross native gem RUBY_CC_VERSION=2.5.0:2.4.0:2.3.0:2.2.2:2.1.6:2.0.0"
-- end
-- else
-- task 'gem:native' => [:genproto, 'gem:windows']
-- end
--end
--
--
- # Proto for tests.
- genproto_output << "tests/generated_code.rb"
- genproto_output << "tests/test_import.rb"
-@@ -104,9 +57,6 @@
-
- task :clean do
- sh "rm -f #{genproto_output.join(' ')}"
--end
--
--Gem::PackageTask.new(spec) do |pkg|
- end
-
- Rake::TestTask.new(:test => :build) do |t|
diff --git a/user/proxymngr/APKBUILD b/user/proxymngr/APKBUILD
deleted file mode 100644
index 00215b164..000000000
--- a/user/proxymngr/APKBUILD
+++ /dev/null
@@ -1,37 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=proxymngr
-pkgver=1.0.4
-pkgrel=0
-pkgdesc="X11 proxy manager service"
-url="https://www.X.Org/"
-arch="all"
-license="X11"
-depends="lbxproxy"
-makedepends="libice-dev libxt-dev util-macros xorgproto-dev"
-subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/proxymngr-$pkgver.tar.bz2"
-
-build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
-}
-
-check() {
- cd "$builddir"
- make check
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
-}
-
-sha512sums="dce0d93558e674ce82197476d204488505079c8aa5192387e57c06844c4ea83da1cf45238e0a63e2bbf9867388ca1175125b6d7b4036085be89b3de353887fd2 proxymngr-1.0.4.tar.bz2"
diff --git a/user/pulseaudio/APKBUILD b/user/pulseaudio/APKBUILD
index bacaab731..25843d68c 100644
--- a/user/pulseaudio/APKBUILD
+++ b/user/pulseaudio/APKBUILD
@@ -2,8 +2,8 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=pulseaudio
-pkgver=12.2
-pkgrel=3
+pkgver=13.0
+pkgrel=1
pkgdesc="A featureful, general-purpose sound server"
url="https://www.freedesktop.org/wiki/Software/PulseAudio"
pkgusers="pulse"
@@ -13,7 +13,7 @@ options="!check" # Complains about permissions in /var/tmp.
license="LGPL-2.1+"
makedepends="alsa-lib-dev bash bluez-dev check-dev dbus-dev eudev-dev fftw-dev
gconf-dev gtk+3.0-dev intltool libcap-dev libsndfile-dev m4 openssl-dev
- orc-compiler orc-dev sbc-dev speexdsp-dev cmd:which"
+ orc-compiler orc-dev sbc-dev speexdsp-dev cmd:which libltdl libtool"
checkdepends="check-dev"
install="$pkgname.pre-install $pkgname.pre-upgrade"
subpackages="$pkgname-dev $pkgname-doc $pkgname-libs $pkgname-bluez
@@ -27,7 +27,10 @@ source="https://freedesktop.org/software/pulseaudio/releases/pulseaudio-$pkgver.
"
build() {
- cd "$builddir"
+ case "${CTARGET_ARCH}" in
+ armv7) arch_opt="--disable-neon-opt"; ;;
+ esac
+
LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -36,7 +39,6 @@ build() {
--mandir=/usr/share/man \
--localstatedir=/var \
--enable-bluez5 \
- --disable-bluez4 \
--enable-nls \
--enable-orc \
--enable-largefile \
@@ -45,17 +47,16 @@ build() {
--enable-udev \
--enable-ipv6 \
--enable-gconf \
- --with-fftw
+ --with-fftw \
+ ${arch_opt}
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
}
@@ -131,7 +132,7 @@ zshcomp() {
mv "$pkgdir"/usr/share/zsh "$subpkgdir"/usr/share
}
-sha512sums="877754c1838b3cb042dbc18a5f1cc3cf313ffcaee7a64703330406d1f86279c34f1107634ac3083b158365e6757fbacf5ec406bc3c5788d291de67b77a561a4e pulseaudio-12.2.tar.xz
+sha512sums="d445b8ccd43029a0ca0e456fc9291a79d3434d6496ead7eb329ab348d5249235e8bde6cf2be68765d8f761452dbe1486fb10c739e40b1e67ed75787bbd24ac0c pulseaudio-13.0.tar.xz
34fe54ece5df60ce63a7955cd828a2716670fef71f40960698ae5518fdaf9cd599f4d8f8852e2c88d715600a9ad06a38984415e5eb320071012e5eb6e5c1b8b1 pulseaudio.initd
75b54581591519d63a3362b155c0f9b0501a60763ab394693a456c44d0216138cf3a40bdd0f7442028663bc045e9ffee286f8f8eaf2ee3bb17379b43615fee0e pulseaudio.confd
dcb50f7c4fd86b0311ab050f7f0340dcf54379a685903951f22e24df6aee5486ee5e02f866c9e53dd55a54ba302658ad282114ce37f169d185855dc37dae0349 disable-flat-volume.patch"
diff --git a/user/pulseaudio/pulseaudio.pre-install b/user/pulseaudio/pulseaudio.pre-install
index 7a1a18d59..ae20dce54 100644
--- a/user/pulseaudio/pulseaudio.pre-install
+++ b/user/pulseaudio/pulseaudio.pre-install
@@ -1,8 +1,8 @@
#!/bin/sh
-addgroup -S pulse 2>/dev/null
-addgroup -S pulse-access 2>/dev/null
-adduser -S -D -H -h /var/empty -s /sbin/nologin -G pulse -g "PulseAudio daemon" pulse 2>/dev/null
-addgroup pulse pulse-access 2>/dev/null
+groupadd -r pulse 2>/dev/null
+groupadd -r pulse-access 2>/dev/null
+useradd -c "PulseAudio daemon" -s /sbin/nologin -g pulse -G pulse-access \
+ -m -d /var/empty -r pulse 2>/dev/null
exit 0
diff --git a/user/purple-plugin-pack/APKBUILD b/user/purple-plugin-pack/APKBUILD
index 22b797908..c49bf6e7d 100644
--- a/user/purple-plugin-pack/APKBUILD
+++ b/user/purple-plugin-pack/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=purple-plugin-pack
pkgver=2.7.0
-pkgrel=0
+pkgrel=1
pkgdesc="Collection of plugins to enhance Pidgin and Finch"
url="https://bitbucket.org/rekkanoryo/purple-plugin-pack/"
arch="all"
@@ -10,7 +10,7 @@ license="GPL-2.0-only"
depends=""
makedepends="gtkspell-dev intltool pidgin-dev"
subpackages="$pkgname-lang"
-source="https://bitbucket.org/rekkanoryo/purple-plugin-pack/downloads/purple-plugin-pack-$pkgver.tar.bz2
+source="https://master.dl.sourceforge.net/project/pidgin/purple%20plugin%20pack/$pkgver/$pkgname-$pkgver.tar.bz2
python.patch
"
@@ -20,7 +20,6 @@ prepare() {
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,12 +32,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/purpose/APKBUILD b/user/purpose/APKBUILD
new file mode 100644
index 000000000..8759d00ce
--- /dev/null
+++ b/user/purpose/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=purpose
+pkgver=5.94.0
+pkgrel=0
+pkgdesc="KDE context menu framework"
+url="https://www.kde.org/"
+arch="all"
+license="GPL-2.0+ AND LGPL-2.0+ AND LGPL-2.1+"
+depends="kdeclarative"
+makedepends="cmake extra-cmake-modules kconfig-dev kcoreaddons-dev ki18n-dev
+ kio-dev kirigami2-dev knotifications-dev qt5-qtbase-dev
+ qt5-qtdeclarative-dev"
+subpackages="$pkgname-dev $pkgname-lang"
+source="https://download.kde.org/stable/frameworks/${pkgver%.*}/purpose-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ # menutest requires X11
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E menutest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="04bb9c29b9084e2d13f5463874aec8dca5942d6f7f25a63766451e9e4141ce5dc314afda56ab24a9621861052973245a264ebea06d864c0714c3d9829593c522 purpose-5.94.0.tar.xz"
diff --git a/user/pv/APKBUILD b/user/pv/APKBUILD
new file mode 100644
index 000000000..b78efcd77
--- /dev/null
+++ b/user/pv/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: CyberLeo <cyberleo@cyberleo.net>
+# Maintainer: CyberLeo <cyberleo@cyberleo.net>
+pkgname=pv
+pkgver=1.6.6
+pkgrel=0
+pkgdesc="Pipe Viewer - a terminal-based tool for monitoring the progress of data through a pipeline."
+url="https://www.ivarch.com/programs/pv.shtml"
+arch="all"
+license="Artistic-2.0"
+depends=""
+makedepends=""
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://www.ivarch.com/programs/sources/pv-$pkgver.tar.bz2"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="cc841b4bd00e4e8fcaed97da094ebac4a11af1c3f843ce5f73d0c3ab20aca29498c6b1a224c653d40127304d8269d96f413df66b980809e9278ff9544c834a26 pv-1.6.6.tar.bz2"
diff --git a/user/py3-alabaster/APKBUILD b/user/py3-alabaster/APKBUILD
index 65356c103..becfde6d2 100644
--- a/user/py3-alabaster/APKBUILD
+++ b/user/py3-alabaster/APKBUILD
@@ -2,6 +2,8 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-alabaster
_pkgname=alabaster
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
pkgver=0.7.12
pkgrel=0
pkgdesc="Default theme for Sphinx Documentation Generator"
@@ -11,24 +13,21 @@ arch="noarch"
license="BSD-3-Clause"
depends="python3 py3-pygments"
makedepends="python3-dev"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+subpackages=""
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
# Zero tests currently.
python3 setup.py test
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
-
}
sha512sums="e3bfd0c92ce01f08d5e6d9dc1ef0967ca1f54827e08756f4a0ba7be8d3b8bec7f2e53a169b831ff5ce2d2548f7f52c6e518bcc513e49bb3e4c38274293aebbac py3-alabaster-0.7.12.tar.gz"
diff --git a/user/py3-apkkit/APKBUILD b/user/py3-apkkit/APKBUILD
new file mode 100644
index 000000000..a407ba767
--- /dev/null
+++ b/user/py3-apkkit/APKBUILD
@@ -0,0 +1,25 @@
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=py3-apkkit
+_pkgname=${pkgname#py3-}
+pkgver=0.6.0.1
+pkgrel=0
+pkgdesc="Python library for manipulating and verifying APK packages"
+url="https://git.adelielinux.org/adelie/apkkit"
+arch="noarch"
+options="!check" # No test suite.
+license="NCSA"
+depends="python3"
+makedepends=""
+source="https://files.pythonhosted.org/packages/source/a/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+ rm "$pkgdir"/usr/README.rst
+}
+
+sha512sums="ef33047ce765d86872e0b4eb9204ec8741e1bbf3c93257797b2c7a0720bb090a90b83380e5f3194b3788557b9693dd32392e6be8235f82ab2eaf118cba8166e2 apkkit-0.6.0.1.tar.gz"
diff --git a/user/py3-appdirs/APKBUILD b/user/py3-appdirs/APKBUILD
new file mode 100644
index 000000000..8f2450db4
--- /dev/null
+++ b/user/py3-appdirs/APKBUILD
@@ -0,0 +1,28 @@
+# Contributor: TBK <alpine@jjtc.eu>
+# Contributor: Keith Maxwell <keith.maxwell@gmail.com>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=py3-appdirs
+_pkgname=appdirs
+pkgver=1.4.4
+pkgrel=0
+pkgdesc="A small Python module for determining appropriate platform-specific dirs."
+url="https://pypi.org/project/appdirs/"
+arch="noarch"
+license="MIT"
+depends="python3"
+source="https://files.pythonhosted.org/packages/source/a/appdirs/appdirs-$pkgver.tar.gz"
+builddir="$srcdir"/$_pkgname-$pkgver
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ PYTHONPATH="$PWD/build/lib" python3 test/test_api.py
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="8b0cdd9fd471d45b186aa47607691cf378dabd3edc7b7026a57bd6d6f57698e86f440818a5e23ba4288b35d6bb8cb6eb0106eae8aab09d8863ee15025d300883 appdirs-1.4.4.tar.gz"
diff --git a/user/py3-asn1crypto/APKBUILD b/user/py3-asn1crypto/APKBUILD
index fc90861c4..16aad45a7 100644
--- a/user/py3-asn1crypto/APKBUILD
+++ b/user/py3-asn1crypto/APKBUILD
@@ -1,8 +1,9 @@
# Contributor: André Klitzing <aklitzing@gmail.com>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-asn1crypto
_pkgname=${pkgname#py3-}
-pkgver=0.24.0
+pkgver=1.2.0
pkgrel=0
pkgdesc="Python ASN.1 library with a focus on performance and a pythonic API"
url="https://github.com/wbond/asn1crypto"
@@ -15,19 +16,15 @@ source="$_pkgname-$pkgver.tar.gz::https://github.com/wbond/asn1crypto/archive/$p
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 run.py tests
}
package() {
- mkdir -p "$pkgdir"
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="426cc380903b4dd7aadd7b831e3a11ee3442c961a33b856d4aa8d9060e829f2e0ad905a60c4d6504569718fe2cee01d9be31628c89ef030bc34281e381c898e8 asn1crypto-0.24.0.tar.gz"
+sha512sums="00d7d67e717fde9651aacc35141b872e4fcb6c46457af5e971aceae7f9acf1d018dfef94eddfa05eac7c7f3a4c768edc8a1ca0474101c1e77ee377aa4771274b asn1crypto-1.2.0.tar.gz"
diff --git a/user/py3-atomicwrites/APKBUILD b/user/py3-atomicwrites/APKBUILD
index 06dc535c1..4605ecca8 100644
--- a/user/py3-atomicwrites/APKBUILD
+++ b/user/py3-atomicwrites/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=py3-atomicwrites
_pkgname=atomicwrites
-pkgver=1.2.1
+pkgver=1.3.0
pkgrel=0
pkgdesc="Powerful Python library for atomic file writes"
url="https://pypi.org/project/atomicwrites/"
@@ -17,18 +17,15 @@ source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
PYTHONPATH="$builddir/build/lib:$PYTHONPATH" pytest
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="4df7ee97e0817a80378b273ced310b8ad88eb6ced93a594a6e3dc38ad1e7208226fde01b6d282f85583c57a50859e82c85bacaae8a7c64fce55e6965f74b12c5 py3-atomicwrites-1.2.1.tar.gz"
+sha512sums="9b619b622f4509c2a41ad340f91bd6e74f238cf9a35f4662fa70f1f957a78069cb89f9bf16f8da70a597bc43a0c6c4fdea6afd0d157364a53a2fa5d8f4272a61 py3-atomicwrites-1.3.0.tar.gz"
diff --git a/user/py3-attrs/APKBUILD b/user/py3-attrs/APKBUILD
index ec2bb62c3..bd923750f 100644
--- a/user/py3-attrs/APKBUILD
+++ b/user/py3-attrs/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Jean-Louis Fuchs <ganwell@fangorn.ch>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=py3-attrs
-pkgver=18.2.0
+pkgver=19.3.0
pkgrel=0
pkgdesc="Python classes without boilerplate"
url="https://www.attrs.org"
@@ -11,23 +11,20 @@ options="!check" # Circular dependency with py3-pytest. Passes on x86_64
license="MIT"
depends="python3"
makedepends="python3-dev"
-#checkdepends="py3-pytest py3-hypothesis py3-six"
+#checkdepends="py3-pytest py3-hypothesis py3-six py3-zope-interface"
source="$pkgname-$pkgver.tar.gz::https://github.com/python-attrs/attrs/archive/$pkgver.tar.gz"
builddir="$srcdir/attrs-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
pytest
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="01bcd8d492f0b7e64ae42e311b0e443d2b365d98021d8c15f8003da084f48cd20456c12defd734d3386979bb69ac2bebafa1d14692c6dad69b084929992b2c2d py3-attrs-18.2.0.tar.gz"
+sha512sums="f050ff707cb95f0639b239435b65dacc164a540b5a456d27be5f47615ee7a860ae38096cd16769b0d07fe8e5e952ccaa5af0eb0aafb5166421f9eb3edf248425 py3-attrs-19.3.0.tar.gz"
diff --git a/user/py3-babel/APKBUILD b/user/py3-babel/APKBUILD
index b9ce036aa..d9997a352 100644
--- a/user/py3-babel/APKBUILD
+++ b/user/py3-babel/APKBUILD
@@ -2,32 +2,32 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-babel
_pkgname=Babel
-pkgver=2.6.0
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=2.10.1
pkgrel=0
pkgdesc="Internationalization tools for Python"
url="https://pypi.python.org/pypi/Babel"
arch="noarch"
license="BSD-3-Clause"
depends="python3"
-makedepends="python3-dev"
-checkdepends="py3-pytest py3-freezegun py3-python-dateutil py3-tz"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+options="!check"
+makedepends="python3-dev py3-iniconfig py3-toml"
+checkdepends="py3-pytest py3-freezegun py3-python-dateutil py3-tz"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py test
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="a87f26c25f1e48a64d1e7ee112bc0c325a6268e0e716a81cb6814a53f0add8f3d579babd2ba064f160298ebe3ac9711aa5d28f112582ee287767b6ed8427b6e0 py3-babel-2.6.0.tar.gz"
+sha512sums="d6f8876bc47d2ad88277f5a9512abb177518b79d4f477cdba11d1cd1af8fb92bfd033c2c05c7a6c32dbd087a28189288f8ac80f9b654027b3e026a06c4ade127 py3-babel-2.10.1.tar.gz"
diff --git a/user/py3-bcrypt/APKBUILD b/user/py3-bcrypt/APKBUILD
new file mode 100644
index 000000000..852f2275b
--- /dev/null
+++ b/user/py3-bcrypt/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-bcrypt
+_pkgname=bcrypt
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=3.2.0
+pkgrel=0
+pkgdesc="bcrypt password hashing library for Python"
+url="https://pypi.org/project/bcrypt/"
+arch="all"
+license="Apache-2.0"
+depends="python3 py3-cffi"
+checkdepends="py3-six py3-pytest"
+makedepends="python3-dev"
+subpackages=""
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/bcrypt-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ python3 setup.py test
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="aa782aa6a725434e0b0737973e33e6c2bf4e82d39e8dfba0913da5d7dd051d55217adab8004c3eaf896fc3c3e145ba543da1b5162a667a3d82a4eb6b07430b80 bcrypt-3.2.0.tar.gz"
diff --git a/user/py3-certifi/APKBUILD b/user/py3-certifi/APKBUILD
index 26f6b81f5..2aa56f348 100644
--- a/user/py3-certifi/APKBUILD
+++ b/user/py3-certifi/APKBUILD
@@ -1,7 +1,8 @@
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-certifi
_pkgname=${pkgname#py3-}
-pkgver=2019.3.9
+pkgver=2019.11.28
pkgrel=0
pkgdesc="Python package for providing Mozilla's CA Bundle"
url="https://pypi.org/project/certifi"
@@ -11,20 +12,17 @@ license="MPL-2.0"
depends="python3 ca-certificates"
makedepends="python3-dev"
subpackages=""
-source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz
+source="https://files.pythonhosted.org/packages/source/c/$_pkgname/$_pkgname-$pkgver.tar.gz
use-system-certs.patch"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
package() {
- mkdir -p "$pkgdir"
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="d86559b0d384f8114245b169391c73d5e6df02ba411cf9706c9d4e5958eeef610b6550bcb5eb519856b8fa25f3f5eb1cea02c0df1f6df72e16da8201732b0dd9 certifi-2019.3.9.tar.gz
-afa381a68bbf117fcebb4cd020d8134dcf7c641a3258231249804c4b66d1c2c59fafe2dc1e55f0ddc2e269ad5f49ab10b96fd73d243d7b1df78f15fe70f279e4 use-system-certs.patch"
+sha512sums="6821444f02db0d9d03ab1891731178af1d7858df3c729f079147a9c588cf97a456e050da3421a0d2a3559145610826669034a8d46cd50b7c76e90249db1b09ad certifi-2019.11.28.tar.gz
+f9c7d953b08d6ef87bae07605e2c09e9de1d1e60285fa1f5043beeae1d9f00f3b70fdf598585cd350df2632e22c0197ea2e8b76127e2927ad53880b60b349c9c use-system-certs.patch"
diff --git a/user/py3-certifi/use-system-certs.patch b/user/py3-certifi/use-system-certs.patch
index 231e8c94d..a46e1c605 100644
--- a/user/py3-certifi/use-system-certs.patch
+++ b/user/py3-certifi/use-system-certs.patch
@@ -1,6 +1,6 @@
--- a/certifi/core.py
+++ b/certifi/core.py
-@@ -12,5 +12,3 @@
+@@ -11,5 +11,3 @@
def where():
- f = os.path.dirname(__file__)
diff --git a/user/py3-cffi/APKBUILD b/user/py3-cffi/APKBUILD
index 90d72670f..47f536fd0 100644
--- a/user/py3-cffi/APKBUILD
+++ b/user/py3-cffi/APKBUILD
@@ -1,18 +1,21 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=py3-cffi
-pkgver=1.12.2
+_pkgname=cffi
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=1.14.1
pkgrel=0
pkgdesc="Interface for Python to call in to C code"
url="https://cffi.readthedocs.io/"
arch="all"
license="MIT"
depends="python3 py3-cparser"
-makedepends="libffi-dev python3-dev"
+makedepends="libffi-dev python3-dev py3-iniconfig"
checkdepends="py3-pytest"
subpackages=""
-source="https://files.pythonhosted.org/packages/64/7c/27367b38e6cc3e1f49f193deb761fe75cda9f95da37b67b422e62281fcac/cffi-1.12.2.tar.gz"
-builddir="$srcdir/cffi-$pkgver"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgname-$pkgver"
build() {
python3 setup.py build
@@ -26,4 +29,4 @@ package() {
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="af4fe47cf5d6f1126222898365cfa21e9f11d0e71b87d869014dbb37af30dca9ddf50c989030d0f610f50e8099e8dfd08a688d8c3629abbcc4f0294f5f91b817 cffi-1.12.2.tar.gz"
+sha512sums="bf000904e3d1ece122f49b8c166636c67987e9bf2e34b613d8e013692ed319581f393cd9570d7f050e5c492a8bc1c4cb5bb56eb50c68f9feea973c1e56c951c0 py3-cffi-1.14.1.tar.gz"
diff --git a/user/py3-chardet/APKBUILD b/user/py3-chardet/APKBUILD
index cf07aea4c..e9d6fce3f 100644
--- a/user/py3-chardet/APKBUILD
+++ b/user/py3-chardet/APKBUILD
@@ -1,29 +1,36 @@
# Contributor: <xmingske@gmail.com>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-chardet
_pkgname=${pkgname#py3-}
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
pkgver=3.0.4
pkgrel=0
pkgdesc="The Universal Character Encoding Detector"
url="https://github.com/chardet/chardet/"
arch="noarch"
-options="!check" # tests use hypothesis; deep rabbit hole
license="LGPL-2.1-only"
depends="python3"
+checkdepends="py3-hypothesis py3-pytest"
makedepends="python3-dev"
subpackages=""
-source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz
+ pytest.patch
+ "
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
+check() {
+ python3 setup.py test
+}
+
package() {
- mkdir -p "$pkgdir"
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir" --optimize=1
}
-sha512sums="61a03b23447a2bfe52ceed4dd1b9afdb5784da1933a623776883ee9f297e341f633e27f0ce0230bd5fdc5fdb5382105ab42736a74a417ddeb9f83af57455dba5 chardet-3.0.4.tar.gz"
+sha512sums="61a03b23447a2bfe52ceed4dd1b9afdb5784da1933a623776883ee9f297e341f633e27f0ce0230bd5fdc5fdb5382105ab42736a74a417ddeb9f83af57455dba5 chardet-3.0.4.tar.gz
+57bfeb5752123fbf9f9f61386039b7ceb9255290225f73453d2d52f2366e1949ed92692912571c8b451b521aedfa8b605879b2742aec7f1fdce4db10705cbe53 pytest.patch"
diff --git a/user/py3-chardet/pytest.patch b/user/py3-chardet/pytest.patch
new file mode 100644
index 000000000..039816b78
--- /dev/null
+++ b/user/py3-chardet/pytest.patch
@@ -0,0 +1,24 @@
+From 440828f8faafdb58700c64a9ea8f6a30b154c08b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
+Date: Mon, 11 Nov 2019 21:02:51 +0100
+Subject: [PATCH] Support pytest 4, don't apply marks directly to parameters
+ (#174)
+
+Fixes https://github.com/chardet/chardet/issues/173
+---
+ test.py | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/test.py b/test.py
+index 9833307..ad2b753 100644
+--- a/test.py
++++ b/test.py
+@@ -59,7 +59,7 @@ def gen_test_params():
+ full_path = join(path, file_name)
+ test_case = full_path, encoding
+ if full_path in EXPECTED_FAILURES:
+- test_case = pytest.mark.xfail(test_case)
++ test_case = pytest.param(*test_case, marks=pytest.mark.xfail)
+ yield test_case
+
+
diff --git a/user/py3-commonmark/APKBUILD b/user/py3-commonmark/APKBUILD
index 90bc7fe56..ea88dccbf 100644
--- a/user/py3-commonmark/APKBUILD
+++ b/user/py3-commonmark/APKBUILD
@@ -2,16 +2,18 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=py3-commonmark
_pkgname=commonmark
-pkgver=0.8.1
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=0.9.1
pkgrel=0
pkgdesc="Python parser for the CommonMark Markdown flavour"
-url="https://pypi.org/project/CommonMark/"
+url="https://pypi.org/project/commonmark/"
arch="noarch"
license="BSD-3-Clause"
depends="python3"
makedepends=""
subpackages=""
-source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
@@ -26,4 +28,4 @@ package() {
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="dbab51d45c1973a8d0906148d785fb8ddc2b52177dfe0e69fe79bef2a5eb05a5a7ab8693852f4aaa8545af19d741569d04a24f06ea65171e6e80d9f66af47fdf commonmark-0.8.1.tar.gz"
+sha512sums="bacf5ef387a0c330a2128f42c42c29c1a48ae623683e6e56ad28a1621aabd72e29cd3e2d661e8207b8cc0c347d267f262a55f2145fc58f8c8aeff91e7a283324 commonmark-0.9.1.tar.gz"
diff --git a/user/py3-configargparse/APKBUILD b/user/py3-configargparse/APKBUILD
index 4641df6e8..4781c2c27 100644
--- a/user/py3-configargparse/APKBUILD
+++ b/user/py3-configargparse/APKBUILD
@@ -1,37 +1,34 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Contributor: Stuart Cardall <developer@it-offshore.co.uk>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-configargparse
_pkgname=ConfigArgParse
-pkgver=0.14.0
+pkgver=0.15.2
pkgrel=0
pkgdesc="A drop-in replacement for argparse"
url="https://github.com/bw2/ConfigArgParse"
arch="noarch"
+options="!check" # https://github.com/bw2/ConfigArgParse/issues/146
license="MIT"
depends="python3"
makedepends="python3-dev python3-tests"
subpackages=""
-source="$pkgname-$pkgver.tar.gz::https://github.com/bw2/$_pkgname/archive/$pkgver.tar.gz
- python3.patch"
+source="$pkgname-$pkgver.tar.gz::https://github.com/bw2/$_pkgname/archive/$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py test
}
package() {
mkdir -p "$pkgdir"
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="e48ca61027abf0e0acb8414b6d89b276b186b4f714368b8c33975537c2264bb2d81f18cf3013b99d9ce752014361afa973f704b3f6957ca4b98319bb0ca5ca8c py3-configargparse-0.14.0.tar.gz
-df324cbc12d0d5cf3cf8bfe494e358d366d8a7891183e9a7922d5331f86e30cbe5810b709ad93dfd41f33cd08c1d87371b9aa13c92d7637d4459d83db41be33f python3.patch"
+sha512sums="c8403751506b3ce096d707067659492422ecef8e684107935ab26f2e518c7c2c4baca8882cac55dd1961a86e5ad95b73389bc1a681cd2a67b5000bd6d626d2d9 py3-configargparse-0.15.2.tar.gz"
diff --git a/user/py3-configargparse/python3.patch b/user/py3-configargparse/python3.patch
deleted file mode 100644
index b102e166f..000000000
--- a/user/py3-configargparse/python3.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/setup.py 2018-02-04 10:00:01.000000000 -0800
-+++ b/setup.py 2018-11-20 21:08:21.339299614 -0800
-@@ -78,7 +78,7 @@
- 'ordereddict',
- ])
- tests_require.extend([
-- 'unittest2',
-+ 'unittest',
- ])
-
-
diff --git a/user/py3-configobj/APKBUILD b/user/py3-configobj/APKBUILD
index 6077aa8ec..4fa196a19 100644
--- a/user/py3-configobj/APKBUILD
+++ b/user/py3-configobj/APKBUILD
@@ -1,5 +1,6 @@
# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-configobj
_pkgname=${pkgname#py3-}
pkgver=5.0.6
@@ -7,22 +8,19 @@ pkgrel=0
pkgdesc="Python library for reading and writing of configuration files (ini)"
url="https://github.com/DiffSK/configobj"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="BSD-3-Clause"
depends="python3 py3-six"
makedepends="python3-dev"
subpackages=""
source="$pkgname-$pkgver.tar.gz::https://github.com/DiffSK/configobj/archive/v$pkgver.tar.gz"
-
builddir="$srcdir"/$_pkgname-$pkgver
build() {
- cd "$builddir"
python3 setup.py build
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
diff --git a/user/py3-cparser/APKBUILD b/user/py3-cparser/APKBUILD
index d08071bf2..49f9ce944 100644
--- a/user/py3-cparser/APKBUILD
+++ b/user/py3-cparser/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=py3-cparser
-pkgver=2.19
+pkgver=2.20
pkgrel=0
pkgdesc="C99 parser in pure Python"
url="https://github.com/eliben/pycparser"
@@ -14,18 +14,15 @@ source="py3-cparser-$pkgver.tar.gz::https://github.com/eliben/pycparser/archive/
builddir="$srcdir/pycparser-release_v$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 tests/all_tests.py
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="88fe63c1a7a344c564dfd3b4f99735a4159c8a3f5738bab839943ea7fcbf1f5340f67326550b7e66508ea5862897e5bcdf363c2a8d47eccb50890573a2640a98 py3-cparser-2.19.tar.gz"
+sha512sums="d2dc48727750ec0a80d5e3b0c9fba390c3647416a3e18cad59429edb9f55d043c7695c52301b037c93af5d96ffc85fcba7cd54d376abdb89e973759c59fa189d py3-cparser-2.20.tar.gz"
diff --git a/user/py3-cryptography/APKBUILD b/user/py3-cryptography/APKBUILD
index 7d006ac76..9268e3edb 100644
--- a/user/py3-cryptography/APKBUILD
+++ b/user/py3-cryptography/APKBUILD
@@ -1,29 +1,35 @@
# Contributor: August Klein <amatcoder@gmail.com>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-cryptography
_pkgname=${pkgname#py3-}
-pkgver=2.6.1
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=2.9.2
pkgrel=0
pkgdesc="A package which provides cryptographic recipes and primitives"
url="https://pypi.org/project/cryptography"
arch="all"
-options="!check" # tests want hypothesis; deep rabbit hole
+options="!check" # See checkdepends comment below.
license="Apache-2.0 OR BSD-3-Clause"
depends="python3 py3-cffi py3-asn1crypto py3-six"
+# requires unpackaged py3-cryptography_vectors which makes no sense to package
+#checkdepends="py3-attrs py3-hypothesis py3-pretend py3-pytest py3-tz"
makedepends="python3-dev libffi-dev openssl-dev"
subpackages=""
-source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
+check() {
+ python3 setup.py test
+}
+
package() {
- mkdir -p "$pkgdir"
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="f14319e24d9dca52e74548cada5b78a6235f089ef875dbff4799e862f94da8b087f1b6e03e84dcef9fc7d7693c4a349c5f0cd54b8535806da777420ce8757d39 cryptography-2.6.1.tar.gz"
+sha512sums="a8cb7ba229cddfa15bf4ed00d40e76e2ece57958203b9c50c3f782c7977e1c725fa147a1eebc31d50684a622d53e73f97864e1a935753472ea4b2d89eb6ffb6a cryptography-2.9.2.tar.gz"
diff --git a/user/py3-cython/APKBUILD b/user/py3-cython/APKBUILD
new file mode 100644
index 000000000..0bcb58dc6
--- /dev/null
+++ b/user/py3-cython/APKBUILD
@@ -0,0 +1,31 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-cython
+_pkgname=Cython
+pkgver=0.29.32
+pkgrel=0
+pkgdesc="Compiler for writing C extensions for the Python language"
+url="https://cython.org/"
+arch="all"
+options="net !check" # downloads numpy at least
+license="Apache-2.0"
+depends="python3"
+makedepends="python3-dev"
+subpackages=""
+source="https://pypi.io/packages/source/C/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ python3 runtests.py --shard_count=${JOBS}
+}
+
+package() {
+ mkdir -p "$pkgdir"
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="2c21e4f130e33ab79a8c2c71e4e14a443c59f35b2ca8ae675ca4c7ccff9e9d940e6724e1fd79b4b23dd94c769c1a94734802200dd6320d0ec4ac5748472a9b03 Cython-0.29.32.tar.gz"
diff --git a/user/py3-dbus-python/APKBUILD b/user/py3-dbus-python/APKBUILD
new file mode 100644
index 000000000..d45fa91b7
--- /dev/null
+++ b/user/py3-dbus-python/APKBUILD
@@ -0,0 +1,25 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-dbus-python
+_pkgname=${pkgname##py3-}
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=1.2.16
+pkgrel=0
+pkgdesc="D-Bus bindings for Python 3"
+url="https://dbus.freedesktop.org/doc/dbus-python/"
+arch="all"
+options="!check"
+license="MIT"
+depends="python3"
+makedepends="dbus-dev glib-dev python3-dev"
+subpackages=""
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+package() {
+ mkdir -p "$pkgdir"
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="e76c00c5fd3fe6884e4c24f258987fd3b80d21bd4e0f96aa8fda152078a860b62321324f6efcbfe7226d5ab2521a14b5bda7cf2468d2cae5f376c124a71aa05c dbus-python-1.2.16.tar.gz"
diff --git a/user/py3-decorator/APKBUILD b/user/py3-decorator/APKBUILD
new file mode 100644
index 000000000..ac00bece2
--- /dev/null
+++ b/user/py3-decorator/APKBUILD
@@ -0,0 +1,31 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-decorator
+_pkgname=decorator
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=4.4.2
+pkgrel=0
+pkgdesc="Python decorators for humans"
+url="https://pypi.org/project/decorator/"
+arch="noarch"
+license="BSD-2-Clause"
+depends="python3"
+makedepends=""
+subpackages=""
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/decorator-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ python3 setup.py test
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="c068efd4e70764ac447b772c9c29625c2180dad256b2b4e46a50a8479fc1d7de09b114c2ba11bb37dd58774ed9460d2e0ea9fa76061833a2d3c2676ac91a0db1 decorator-4.4.2.tar.gz"
diff --git a/user/py3-distutils-extra/APKBUILD b/user/py3-distutils-extra/APKBUILD
index 557658b55..605f1e484 100644
--- a/user/py3-distutils-extra/APKBUILD
+++ b/user/py3-distutils-extra/APKBUILD
@@ -1,29 +1,27 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=py3-distutils-extra
-pkgver=2.42
+pkgver=3.0
pkgrel=0
pkgdesc="Python distutils extras for gettext, themed icons, and scrollkeepr docs"
url="https://launchpad.net/python-distutils-extra"
arch="noarch"
license="GPL-2.0-only"
depends="python3"
-source="https://salsa.debian.org/debian/python-distutils-extra/-/archive/$pkgver/python-distutils-extra-$pkgver.tar.bz2"
+makedepends=""
+source="https://salsa.debian.org/python-team/modules/python-distutils-extra/-/archive/$pkgver/python-distutils-extra-$pkgver.tar.bz2"
builddir="$srcdir/python-distutils-extra-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py check
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="3f69aa3617c4b6f33bee989f8b3612aa12b4ce3c5e07f47799209aa402640078d738e15a1e883afb7062d177ed70ff235af6b09910e4f2cc890e013998eca832 python-distutils-extra-2.42.tar.bz2"
+sha512sums="b9e40766c31c3417152df021b6a9fdf31eaf022765b85a5ccf1f79653a0b30e2b5ebdc94afe267bd469bbd7a93548bc522be9b650cbcd12aa974abf9e142bec1 python-distutils-extra-3.0.tar.bz2"
diff --git a/user/py3-docopt/APKBUILD b/user/py3-docopt/APKBUILD
new file mode 100644
index 000000000..cf1616ad2
--- /dev/null
+++ b/user/py3-docopt/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-docopt
+_pkgname=${pkgname#py3-}
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=0.6.2
+pkgrel=0
+pkgdesc="Expressive Python argument parsing library"
+url="https://pypi.org/project/docopt/"
+arch="noarch"
+license="MIT"
+depends="python3"
+makedepends="python3-dev"
+subpackages=""
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ python3 setup.py test
+}
+
+package() {
+ mkdir -p "$pkgdir"
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="af138feccf8c37b374ee44fcda4938a88107d434df13c173214021b1a3348b152a595095a86982b66ac03a11db8e0f1e9e6a3a65c98deea92330311daeb831a3 docopt-0.6.2.tar.gz"
diff --git a/user/py3-docutils/APKBUILD b/user/py3-docutils/APKBUILD
index febab9f74..34006c824 100644
--- a/user/py3-docutils/APKBUILD
+++ b/user/py3-docutils/APKBUILD
@@ -2,31 +2,33 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=py3-docutils
_pkgname=docutils
-pkgver=0.14
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=0.17.1
pkgrel=0
pkgdesc="Documentation utilities for Python"
url="https://pypi.python.org/pypi/docutils"
arch="noarch"
# Certified net clean
license="Custom"
-depends="python3 py3-pillow py3-roman"
+depends="python3 py3-pillow"
makedepends="python3-dev"
subpackages="$pkgname-doc"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz
+ py311-test.patch
+ "
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir/test3"
+ cd "$builddir/test"
python3 alltests.py
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
# Remove .py extension from executable files.
@@ -36,17 +38,18 @@ package() {
}
doc() {
- cd "$builddir"
+ default_doc
- local docdir="$subpkgdir/usr/share/doc/$pkgname"
+ docdir="$subpkgdir/usr/share/doc/$pkgname"
mkdir -p "$docdir"
- cp -R docs/* "$docdir"
- cp *.txt "$docdir"
+ cp -R "$builddir"/docs/* "$docdir"
+ cp "$builddir"/*.txt "$docdir"
- local licdir="$subpkgdir/usr/share/licenses/$pkgname"
+ licdir="$subpkgdir/usr/share/licenses/$pkgname"
mkdir -p "$licdir"
- rm -f licenses/docutils.conf
- cp licenses/* "$licdir"
+ rm -f "$builddir"/licenses/docutils.conf
+ cp "$builddir"/licenses/* "$licdir"
}
-sha512sums="1ed72c2ef7d2ca38d1c6f3154b7986ea46f599d9bd826405a5257fdd7740c8626957d6298aa95fb0edea8a24515de22f1ad9b2ecbd59341a1ab7a2bab30f500c py3-docutils-0.14.tar.gz"
+sha512sums="5ec2087116bd5356fdffc54f07f6b0355aac5fa9d6caeefa77e8d201fd4706c0d419193c4d9a3964ae493da3091fe2c7dc36b74f81a1e1b9282173658b06e71b py3-docutils-0.17.1.tar.gz
+9842be1028d6430c74ba2537eeee151eff459bac52b04934a165cc9776d9a6ad4e602b97d556b337a8f38d46f181878dd325565afb259b481abc3b7648d897ac py311-test.patch"
diff --git a/user/py3-docutils/py311-test.patch b/user/py3-docutils/py311-test.patch
new file mode 100644
index 000000000..4975b65ba
--- /dev/null
+++ b/user/py3-docutils/py311-test.patch
@@ -0,0 +1,246 @@
+From de1e14dd9374cf9932be4ee43970083ad332cd98 Mon Sep 17 00:00:00 2001
+From: milde <milde@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>
+Date: Sat, 27 Nov 2021 16:28:38 +0000
+Subject: [PATCH] Special-casing for Python 3.11: Null char valid in CSV.
+
+First part of a fix for bug #436.
+
+git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8909 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
+---
+ test/DocutilsTestSupport.py | 1 +
+ .../test_rst/test_directives/test_tables.py | 88 ++++++++++++++++++----
+ 2 files changed, 76 insertions(+), 13 deletions(-)
+
+diff --git a/test/DocutilsTestSupport.py b/test/DocutilsTestSupport.py
+index 592d3f9df..e1f33aa7a 100644
+--- a/test/DocutilsTestSupport.py
++++ b/test/DocutilsTestSupport.py
+@@ -818,6 +818,7 @@ def exception_data(func, *args, **kwds):
+ except Exception as detail:
+ return (detail, detail.args,
+ '%s: %s' % (detail.__class__.__name__, detail))
++ return None, [], "No exception"
+
+
+ def _format_str(*args):
+diff --git a/test/test_parsers/test_rst/test_directives/test_tables.py b/test/test_parsers/test_rst/test_directives/test_tables.py
+index 07be0122f..b030e7552 100755
+--- a/test/test_parsers/test_rst/test_directives/test_tables.py
++++ b/test/test_parsers/test_rst/test_directives/test_tables.py
+@@ -65,6 +65,79 @@ def null_bytes():
+ next(reader)
+
+ null_bytes_exception = DocutilsTestSupport.exception_data(null_bytes)[0]
++# Null bytes are valid in Python 3.11+:
++if null_bytes_exception is None:
++ bad_encoding_result = """\
++<document source="test data">
++<document source="test data">
++ <table>
++ <title>
++ good encoding
++ <tgroup cols="3">
++ <colspec colwidth="33">
++ <colspec colwidth="33">
++ <colspec colwidth="33">
++ <thead>
++ <row>
++ <entry>
++ <paragraph>
++ Treat
++ <entry>
++ <paragraph>
++ Quantity
++ <entry>
++ <paragraph>
++ Description
++ <tbody>
++ <row>
++ <entry>
++ <paragraph>
++ Albatr\u00b0\u00df
++ <entry>
++ <paragraph>
++ 2.99
++ <entry>
++ <paragraph>
++ \u00a1On a \u03c3\u03c4\u03b9\u03ba!
++ <row>
++ <entry>
++ <paragraph>
++ Crunchy Frog
++ <entry>
++ <paragraph>
++ 1.49
++ <entry>
++ <paragraph>
++ If we took the b\u00f6nes out, it wouldn\u2019t be
++ crunchy, now would it?
++ <row>
++ <entry>
++ <paragraph>
++ Gannet Ripple
++ <entry>
++ <paragraph>
++ 1.99
++ <entry>
++ <paragraph>
++ \u00bfOn a \u03c3\u03c4\u03b9\u03ba?
++ <paragraph>
++ (7- and 8-bit text encoded as UTF-16 has lots of null/zero bytes.)
++""" % (null_bytes_exception, utf_16_csv)
++else:
++ bad_encoding_result = """\
++<document source="test data">
++ <system_message level="3" line="1" source="test data" type="ERROR">
++ <paragraph>
++ Error with CSV data in "csv-table" directive:
++ %s
++ <literal_block xml:space="preserve">
++ .. csv-table:: bad encoding
++ :file: %s
++ :encoding: latin-1
++ <paragraph>
++ (7- and 8-bit text encoded as UTF-16 has lots of null/zero bytes.)
++""" % (null_bytes_exception, utf_16_csv)
++
+
+ totest = {}
+
+@@ -1031,19 +1104,8 @@ u"""\
+
+ (7- and 8-bit text encoded as UTF-16 has lots of null/zero bytes.)
+ """ % utf_16_csv,
+-"""\
+-<document source="test data">
+- <system_message level="3" line="1" source="test data" type="ERROR">
+- <paragraph>
+- Error with CSV data in "csv-table" directive:
+- %s
+- <literal_block xml:space="preserve">
+- .. csv-table:: bad encoding
+- :file: %s
+- :encoding: latin-1
+- <paragraph>
+- (7- and 8-bit text encoded as UTF-16 has lots of null/zero bytes.)
+-""" % (null_bytes_exception, utf_16_csv)],
++bad_encoding_result
++],
+ ["""\
+ .. csv-table:: good encoding
+ :file: %s
+--
+2.11.4.GIT
+
+From 83b6811e753947c9d8576d410c635b36d515657c Mon Sep 17 00:00:00 2001
+From: grubert <grubert@929543f6-e4f2-0310-98a6-ba3bd3dd1d04>
+Date: Sat, 27 Nov 2021 21:16:41 +0000
+Subject: [PATCH] Change
+ test/test_parsers/test_rst/test_directives/test_tables.py for python 3.11.0a2
+ csv modules supports null character.
+
+git-svn-id: http://svn.code.sf.net/p/docutils/code/trunk@8910 929543f6-e4f2-0310-98a6-ba3bd3dd1d04
+---
+ .../test_rst/test_directives/test_tables.py | 51 ++++++++++++++--------
+ 1 file changed, 31 insertions(+), 20 deletions(-)
+
+diff --git a/test/test_parsers/test_rst/test_directives/test_tables.py b/test/test_parsers/test_rst/test_directives/test_tables.py
+index b030e7552..73724ed7e 100755
+--- a/test/test_parsers/test_rst/test_directives/test_tables.py
++++ b/test/test_parsers/test_rst/test_directives/test_tables.py
+@@ -69,60 +69,73 @@ null_bytes_exception = DocutilsTestSupport.exception_data(null_bytes)[0]
+ if null_bytes_exception is None:
+ bad_encoding_result = """\
+ <document source="test data">
+-<document source="test data">
+ <table>
+ <title>
+- good encoding
+- <tgroup cols="3">
+- <colspec colwidth="33">
+- <colspec colwidth="33">
+- <colspec colwidth="33">
+- <thead>
++ bad encoding
++ <tgroup cols="4">
++ <colspec colwidth="25">
++ <colspec colwidth="25">
++ <colspec colwidth="25">
++ <colspec colwidth="25">
++ <tbody>
+ <row>
+ <entry>
+ <paragraph>
+- Treat
++ \xfe\xff"Treat"
+ <entry>
+ <paragraph>
+- Quantity
++ "Quantity"
+ <entry>
+ <paragraph>
+- Description
+- <tbody>
++ "Description"
++ <entry>
+ <row>
+ <entry>
+ <paragraph>
+- Albatr\u00b0\u00df
++ "Albatr\u00b0\u00df"
+ <entry>
+ <paragraph>
+ 2.99
+ <entry>
+ <paragraph>
+- \u00a1On a \u03c3\u03c4\u03b9\u03ba!
++ "\u00a1Ona\x03\xc3\x03\xc4\x03\xb9\x03\xba!"
++ <entry>
+ <row>
+ <entry>
+ <paragraph>
+- Crunchy Frog
++ "CrunchyFrog"
+ <entry>
+ <paragraph>
+ 1.49
+ <entry>
+ <paragraph>
+- If we took the b\u00f6nes out, it wouldn\u2019t be
+- crunchy, now would it?
++ "Ifwetooktheb\u00f6nesout
++ <entry>
++ <paragraph>
++ itwouldn\x20\x19tbe
+ <row>
+ <entry>
+ <paragraph>
+- Gannet Ripple
++ crunchy
++ <entry>
++ <paragraph>
++ nowwouldit?"
++ <entry>
++ <entry>
++ <row>
++ <entry>
++ <paragraph>
++ "GannetRipple"
+ <entry>
+ <paragraph>
+ 1.99
+ <entry>
+ <paragraph>
+- \u00bfOn a \u03c3\u03c4\u03b9\u03ba?
++ "\xbfOna\x03\xc3\x03\xc4\x03\xb9\x03\xba?"
++ <entry>
+ <paragraph>
+ (7- and 8-bit text encoded as UTF-16 has lots of null/zero bytes.)
+-""" % (null_bytes_exception, utf_16_csv)
++"""
+ else:
+ bad_encoding_result = """\
+ <document source="test data">
+--
+2.11.4.GIT
+
diff --git a/user/py3-flup/APKBUILD b/user/py3-flup/APKBUILD
new file mode 100644
index 000000000..c9b0013f7
--- /dev/null
+++ b/user/py3-flup/APKBUILD
@@ -0,0 +1,24 @@
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=py3-flup
+_pkgname=${pkgname#py3-}
+pkgver=1.0.3
+pkgrel=0
+pkgdesc="Python WSGI module collection"
+url="https://www.saddi.com/software/flup/"
+arch="noarch"
+options="!check" # No test suite.
+license="BSD-2-Clause"
+depends="python3"
+makedepends=""
+source="https://files.pythonhosted.org/packages/source/f/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="f165685b39a8539d29d48d0ad3c9c0495f428892b8935545a128730687c658a1e8b74a09c8084dd4a2490b1d26f1382b48c95ba43401171fd46876b068ba2f8e flup-1.0.3.tar.gz"
diff --git a/user/py3-freezegun/APKBUILD b/user/py3-freezegun/APKBUILD
index 4148189a0..4c5bd8624 100644
--- a/user/py3-freezegun/APKBUILD
+++ b/user/py3-freezegun/APKBUILD
@@ -2,7 +2,9 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-freezegun
_pkgname=freezegun
-pkgver=0.3.11
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=0.3.15
pkgrel=0
pkgdesc="Let your Python tests travel through time"
url="https://pypi.python.org/pypi/freezegun"
@@ -12,23 +14,20 @@ license="Apache-2.0"
depends="python3 py3-six"
makedepends="python3-dev"
checkdepends="py3-python-dateutil py3-pytest py3-mock py3-pbr"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py test
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="e8b392176641d52f6ed795c9af5fbc0a62892aeedf32b42375b56ab44a9ad7a5ecd3bb81363ed0ae65204aff2ef894cd7f2e17f42be72f31d3409b2bffa59ab8 py3-freezegun-0.3.11.tar.gz"
+sha512sums="9f3836f8c9f207d9bccbcaec3f1af977b26aa3699ad5f792d052e105a0de530c6dda1641480c9cd551627186bf0c65d92bf39a6f4a61f458f762d8aa999180ba py3-freezegun-0.3.15.tar.gz"
diff --git a/user/py3-future/APKBUILD b/user/py3-future/APKBUILD
index 7f433a4fc..d34548a8f 100644
--- a/user/py3-future/APKBUILD
+++ b/user/py3-future/APKBUILD
@@ -1,8 +1,11 @@
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-future
_pkgname=${pkgname##py3-}
-pkgver=0.17.1
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=0.18.2
pkgrel=0
pkgdesc="Easy, clean, reliable Python 2/3 compatibility"
url="http://python-future.org/"
@@ -12,18 +15,16 @@ license="MIT"
depends="python3"
makedepends="python3-dev"
subpackages=""
-source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
package() {
mkdir -p "$pkgdir"
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="50094c44db81afbfd37ee25e1710ed11ecb2c2d64ad076fb62a2688dd36a9696ab26b0d7989bf1ecb10da251961a0ee6bb37c4dbd115f70384cd8c9a675d0b2d future-0.17.1.tar.gz"
+sha512sums="91c025f7d94bcdf93df838fab67053165a414fc84e8496f92ecbb910dd55f6b6af5e360bbd051444066880c5a6877e75157bd95e150ead46e5c605930dfc50f2 future-0.18.2.tar.gz"
diff --git a/user/py3-html5lib/APKBUILD b/user/py3-html5lib/APKBUILD
index f65096fad..f4f5f7781 100644
--- a/user/py3-html5lib/APKBUILD
+++ b/user/py3-html5lib/APKBUILD
@@ -2,32 +2,34 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-html5lib
_pkgname=html5lib
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
pkgver=1.0.1
pkgrel=0
pkgdesc="HTML parser based on the WHATWG HTML specification"
url="https://pypi.python.org/pypi/html5lib"
arch="noarch"
+options="!check" # https://github.com/html5lib/html5lib-python/issues/433
license="MIT"
depends="python3 py3-six py3-webencodings"
-makedepends="python3-dev"
checkdepends="py3-pytest py3-mock py3-pytest-expect"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+makedepends="python3-dev"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz
+ pytest.patch
+ "
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
pytest
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
-
}
-sha512sums="35939b4450893864da04e735ee5e0addacf1dd34bae6a6909c76572abf6bfded446a78a713dfde91c1485ba45867d7abeb6a45cf0545c16ea968707be7de5dd2 py3-html5lib-1.0.1.tar.gz"
+sha512sums="35939b4450893864da04e735ee5e0addacf1dd34bae6a6909c76572abf6bfded446a78a713dfde91c1485ba45867d7abeb6a45cf0545c16ea968707be7de5dd2 py3-html5lib-1.0.1.tar.gz
+89be46d5eb7b4a9ada22fa30576ae4f92d705b77988a47d52cbd876bf36240b461e7a0057c865a6b1798a3117343159ecbca43faf5316b446e5a80b8486a7e86 pytest.patch"
diff --git a/user/py3-html5lib/pytest.patch b/user/py3-html5lib/pytest.patch
new file mode 100644
index 000000000..fd6f99649
--- /dev/null
+++ b/user/py3-html5lib/pytest.patch
@@ -0,0 +1,163 @@
+From 2699544837e68b12f1740a7eb56882a0dc0a4008 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Miro=20Hron=C4=8Dok?= <miro@hroncok.cz>
+Date: Thu, 28 Mar 2019 01:45:43 +0100
+Subject: [PATCH] Support pytest 4
+
+Fixes https://github.com/html5lib/html5lib-python/issues/411
+---
+ html5lib/tests/test_encoding.py | 4 ++--
+ html5lib/tests/test_sanitizer.py | 14 +++++++-------
+ html5lib/tests/test_serializer.py | 2 +-
+ html5lib/tests/test_stream.py | 7 ++++---
+ html5lib/tests/test_treewalkers.py | 2 +-
+ requirements-test.txt | 2 +-
+ 6 files changed, 16 insertions(+), 15 deletions(-)
+
+diff --git a/html5lib/tests/test_encoding.py b/html5lib/tests/test_encoding.py
+index 9a411c77..97b6ca2a 100644
+--- a/html5lib/tests/test_encoding.py
++++ b/html5lib/tests/test_encoding.py
+@@ -99,8 +99,8 @@ def test_encoding():
+ for filename in get_data_files("encoding"):
+ tests = _TestData(filename, b"data", encoding=None)
+ for test in tests:
+- yield (runParserEncodingTest, test[b'data'], test[b'encoding'])
+- yield (runPreScanEncodingTest, test[b'data'], test[b'encoding'])
++ runParserEncodingTest(test[b'data'], test[b'encoding'])
++ runPreScanEncodingTest(test[b'data'], test[b'encoding'])
+
+
+ # pylint:disable=wrong-import-position
+diff --git a/html5lib/tests/test_sanitizer.py b/html5lib/tests/test_sanitizer.py
+index 45046d57..1b7285fc 100644
+--- a/html5lib/tests/test_sanitizer.py
++++ b/html5lib/tests/test_sanitizer.py
+@@ -67,19 +67,19 @@ def test_sanitizer():
+ 'tfoot', 'th', 'thead', 'tr', 'select']:
+ continue # TODO
+ if tag_name == 'image':
+- yield (runSanitizerTest, "test_should_allow_%s_tag" % tag_name,
++ runSanitizerTest("test_should_allow_%s_tag" % tag_name,
+ "<img title=\"1\"/>foo &lt;bad&gt;bar&lt;/bad&gt; baz",
+ "<%s title='1'>foo <bad>bar</bad> baz</%s>" % (tag_name, tag_name))
+ elif tag_name == 'br':
+- yield (runSanitizerTest, "test_should_allow_%s_tag" % tag_name,
++ runSanitizerTest("test_should_allow_%s_tag" % tag_name,
+ "<br title=\"1\"/>foo &lt;bad&gt;bar&lt;/bad&gt; baz<br/>",
+ "<%s title='1'>foo <bad>bar</bad> baz</%s>" % (tag_name, tag_name))
+ elif tag_name in constants.voidElements:
+- yield (runSanitizerTest, "test_should_allow_%s_tag" % tag_name,
++ runSanitizerTest("test_should_allow_%s_tag" % tag_name,
+ "<%s title=\"1\"/>foo &lt;bad&gt;bar&lt;/bad&gt; baz" % tag_name,
+ "<%s title='1'>foo <bad>bar</bad> baz</%s>" % (tag_name, tag_name))
+ else:
+- yield (runSanitizerTest, "test_should_allow_%s_tag" % tag_name,
++ runSanitizerTest("test_should_allow_%s_tag" % tag_name,
+ "<%s title=\"1\">foo &lt;bad&gt;bar&lt;/bad&gt; baz</%s>" % (tag_name, tag_name),
+ "<%s title='1'>foo <bad>bar</bad> baz</%s>" % (tag_name, tag_name))
+
+@@ -93,7 +93,7 @@ def test_sanitizer():
+ attribute_value = 'foo'
+ if attribute_name in sanitizer.attr_val_is_uri:
+ attribute_value = '%s://sub.domain.tld/path/object.ext' % sanitizer.allowed_protocols[0]
+- yield (runSanitizerTest, "test_should_allow_%s_attribute" % attribute_name,
++ runSanitizerTest("test_should_allow_%s_attribute" % attribute_name,
+ "<p %s=\"%s\">foo &lt;bad&gt;bar&lt;/bad&gt; baz</p>" % (attribute_name, attribute_value),
+ "<p %s='%s'>foo <bad>bar</bad> baz</p>" % (attribute_name, attribute_value))
+
+@@ -101,7 +101,7 @@ def test_sanitizer():
+ rest_of_uri = '//sub.domain.tld/path/object.ext'
+ if protocol == 'data':
+ rest_of_uri = 'image/png;base64,aGVsbG8gd29ybGQ='
+- yield (runSanitizerTest, "test_should_allow_uppercase_%s_uris" % protocol,
++ runSanitizerTest("test_should_allow_uppercase_%s_uris" % protocol,
+ "<img src=\"%s:%s\">foo</a>" % (protocol, rest_of_uri),
+ """<img src="%s:%s">foo</a>""" % (protocol, rest_of_uri))
+
+@@ -110,7 +110,7 @@ def test_sanitizer():
+ if protocol == 'data':
+ rest_of_uri = 'image/png;base64,aGVsbG8gd29ybGQ='
+ protocol = protocol.upper()
+- yield (runSanitizerTest, "test_should_allow_uppercase_%s_uris" % protocol,
++ runSanitizerTest("test_should_allow_uppercase_%s_uris" % protocol,
+ "<img src=\"%s:%s\">foo</a>" % (protocol, rest_of_uri),
+ """<img src="%s:%s">foo</a>""" % (protocol, rest_of_uri))
+
+diff --git a/html5lib/tests/test_serializer.py b/html5lib/tests/test_serializer.py
+index c23592af..a4250935 100644
+--- a/html5lib/tests/test_serializer.py
++++ b/html5lib/tests/test_serializer.py
+@@ -222,4 +222,4 @@ def test_serializer():
+ with open(filename) as fp:
+ tests = json.load(fp)
+ for test in tests['tests']:
+- yield runSerializerTest, test["input"], test["expected"], test.get("options", {})
++ runSerializerTest(test["input"], test["expected"], test.get("options", {}))
+diff --git a/html5lib/tests/test_stream.py b/html5lib/tests/test_stream.py
+index 27c39538..a9b3ebbe 100644
+--- a/html5lib/tests/test_stream.py
++++ b/html5lib/tests/test_stream.py
+@@ -308,9 +308,10 @@ def test_invalid_codepoints(inp, num):
+ ("'\\uD800\\uD800\\uD800'", 3),
+ ("'a\\uD800a\\uD800a\\uD800a'", 3),
+ ("'\\uDFFF\\uDBFF'", 2),
+- pytest.mark.skipif(sys.maxunicode == 0xFFFF,
+- ("'\\uDBFF\\uDFFF'", 2),
+- reason="narrow Python")])
++ pytest.param(
++ "'\\uDBFF\\uDFFF'", 2,
++ mark=pytest.mark.skipif(sys.maxunicode == 0xFFFF,
++ reason="narrow Python"))])
+ def test_invalid_codepoints_surrogates(inp, num):
+ inp = eval(inp) # pylint:disable=eval-used
+ fp = StringIO(inp)
+diff --git a/html5lib/tests/test_treewalkers.py b/html5lib/tests/test_treewalkers.py
+index 67fc89e5..c2323b7e 100644
+--- a/html5lib/tests/test_treewalkers.py
++++ b/html5lib/tests/test_treewalkers.py
+@@ -99,7 +99,7 @@ def test_treewalker_six_mix():
+
+ for tree in sorted(treeTypes.items()):
+ for intext, attrs, expected in sm_tests:
+- yield runTreewalkerEditTest, intext, expected, attrs, tree
++ runTreewalkerEditTest(intext, expected, attrs, tree)
+
+
+ @pytest.mark.parametrize("tree,char", itertools.product(sorted(treeTypes.items()), ["x", "\u1234"]))
+diff --git a/requirements-test.txt b/requirements-test.txt
+index 4e223a3f..b936e0fa 100644
+--- a/requirements-test.txt
++++ b/requirements-test.txt
+@@ -4,7 +4,7 @@ tox
+
+ flake8<3.0
+
+-pytest==3.2.5
++pytest>=4.3,<4.4
+ coverage
+ pytest-expect>=1.1,<2.0
+ mock
+From 29bb168659da16f7c03ce635a8fbb4cdc2502667 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Mat=C4=9Bj=20Cepl?= <mcepl@cepl.eu>
+Date: Mon, 6 Jan 2020 10:55:49 +0100
+Subject: [PATCH] marks not mark
+
+---
+ html5lib/tests/test_stream.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/html5lib/tests/test_stream.py b/html5lib/tests/test_stream.py
+index a9b3ebbe..06663b8c 100644
+--- a/html5lib/tests/test_stream.py
++++ b/html5lib/tests/test_stream.py
+@@ -310,8 +310,8 @@ def test_invalid_codepoints(inp, num):
+ ("'\\uDFFF\\uDBFF'", 2),
+ pytest.param(
+ "'\\uDBFF\\uDFFF'", 2,
+- mark=pytest.mark.skipif(sys.maxunicode == 0xFFFF,
+- reason="narrow Python"))])
++ marks=pytest.mark.skipif(sys.maxunicode == 0xFFFF,
++ reason="narrow Python"))])
+ def test_invalid_codepoints_surrogates(inp, num):
+ inp = eval(inp) # pylint:disable=eval-used
+ fp = StringIO(inp)
diff --git a/user/py3-hypothesis/APKBUILD b/user/py3-hypothesis/APKBUILD
index 808a84296..a165c08c5 100644
--- a/user/py3-hypothesis/APKBUILD
+++ b/user/py3-hypothesis/APKBUILD
@@ -2,33 +2,32 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-hypothesis
_pkgname=hypothesis
-pkgver=4.14.3
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=4.56.3
pkgrel=0
pkgdesc="A library for property based testing"
url="https://pypi.python.org/pypi/hypothesis"
arch="noarch"
options="!check" # Tests are missing from release packages due to possible packaging bug?
license="MPL-2.0"
-depends="python3"
-makedepends="python3-dev"
+depends="python3 py3-sortedcontainers"
checkdepends="py3-pytest py3-attrs"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+makedepends="python3-dev"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py test
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="6cf0713a416c51286e4c707c6b32705b2dd53ff1a5c88ceab0cdd970e8932078c9e13436ac4aa66f94a5badf0a2f93a20e8221f77cf4fb0c8b42a707b52fb0f2 py3-hypothesis-4.14.3.tar.gz"
+sha512sums="221515d945669c34b676a9f57ab783e30d998b877b6e5bba27fec45cd95f5ed21e60cb4b019687f884b87c0bcad065f881fb0ca2a8d00bb216c43290bbd7d157 py3-hypothesis-4.56.3.tar.gz"
diff --git a/user/py3-idna/APKBUILD b/user/py3-idna/APKBUILD
index 0fd7e1e8e..2dcf01370 100644
--- a/user/py3-idna/APKBUILD
+++ b/user/py3-idna/APKBUILD
@@ -1,6 +1,7 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-idna
_pkgname=${pkgname#py3-}
pkgver=2.8
@@ -16,18 +17,14 @@ source="idna-$pkgver.tar.gz::https://github.com/kjd/idna/archive/v$pkgver.tar.gz
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py test
}
package() {
- mkdir -p "$pkgdir"
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
diff --git a/user/py3-imagesize/APKBUILD b/user/py3-imagesize/APKBUILD
index c47afd26f..1403a702b 100644
--- a/user/py3-imagesize/APKBUILD
+++ b/user/py3-imagesize/APKBUILD
@@ -2,6 +2,8 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-imagesize
_pkgname=imagesize
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
pkgver=1.1.0
pkgrel=0
pkgdesc="Parse image file header and return image size"
@@ -11,21 +13,18 @@ license="MIT"
depends="python3"
makedepends="python3-dev"
#subpackages="$pkgname-doc"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py test
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
diff --git a/user/py3-incremental/APKBUILD b/user/py3-incremental/APKBUILD
index ff3ed3cb7..8843380f5 100644
--- a/user/py3-incremental/APKBUILD
+++ b/user/py3-incremental/APKBUILD
@@ -14,17 +14,14 @@ source="https://files.pythonhosted.org/packages/8f/26/02c4016aa95f45479eea37c90c
builddir="$srcdir/incremental-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py test
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
diff --git a/user/py3-iniconfig/APKBUILD b/user/py3-iniconfig/APKBUILD
new file mode 100644
index 000000000..773284ec6
--- /dev/null
+++ b/user/py3-iniconfig/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: Justin Berthault <justin.berthault@zaclys.net>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=py3-iniconfig
+_pyname=iniconfig
+pkgver=1.1.1
+pkgrel=0
+pkgdesc="Simple INI configuration parsing for Python"
+url="https://github.com/RonnyPfannschmidt/iniconfig"
+arch="noarch"
+options="!check" # Requires PyTest, which requires iniconfig.
+license="MIT"
+depends="python3"
+makedepends="py3-py"
+source="https://files.pythonhosted.org/packages/source/i/$_pyname/$_pyname-$pkgver.tar.gz
+ version.patch
+ "
+builddir="$srcdir/$_pyname-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ python3 setup.py test
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="c9341db7e3ec2204b6a674fca7824cbeb492e3576d5ac3f084b234c82842b28f2f6acbfdb812e183f4334a95b990551f942a4caf548f5ce7ef14885f931535ee iniconfig-1.1.1.tar.gz
+bcc29e3ab250a8b9aaa496b2bb8f52a03f56faf8a73268c388959ee1090cd5fc86f11b5c6c339f1b9b9c9697984f3a956425b9d392507b69ec0e4aa543e97a92 version.patch"
diff --git a/user/py3-iniconfig/version.patch b/user/py3-iniconfig/version.patch
new file mode 100644
index 000000000..33bf819cf
--- /dev/null
+++ b/user/py3-iniconfig/version.patch
@@ -0,0 +1,23 @@
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Sun, 12 Jun 2022 22:48:18 -0500
+Subject: [PATCH] Use correct version when packaging
+
+Using scm_version installs an egg of version 0.0.0 (or whatever the
+containing Git repository describes as). We want to have the actual
+version available when building packages.
+
+--- iniconfig-1.1.1/setup.py.old 2020-10-14 05:19:54.000000000 -0500
++++ iniconfig-1.1.1/setup.py 2022-06-12 22:52:45.840000000 -0500
+@@ -14,11 +14,11 @@
+ readme = fp.read()
+ setup(
+ name='iniconfig',
++ version='1.1.1',
+ packages=['iniconfig'],
+ package_dir={'': 'src'},
+ description='iniconfig: brain-dead simple config-ini parsing',
+ long_description=readme,
+- use_scm_version=True,
+ url='http://github.com/RonnyPfannschmidt/iniconfig',
+ license='MIT License',
+ platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
diff --git a/user/py3-invoke/APKBUILD b/user/py3-invoke/APKBUILD
new file mode 100644
index 000000000..df5373408
--- /dev/null
+++ b/user/py3-invoke/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-invoke
+_pkgname=invoke
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=1.4.1
+pkgrel=0
+pkgdesc="Pythonic task execution"
+url="https://www.pyinvoke.org/"
+arch="noarch"
+options="!check" # Terribly broken.
+license="Apache-2.0"
+depends="python3"
+makedepends=""
+subpackages=""
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/invoke-$pkgver"
+
+prepare() {
+ default_prepare
+ rm -r "$builddir"/invoke/vendor/yaml2
+}
+
+build() {
+ python3 setup.py build
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="9076a1e643e3496b180d486de48efe599eddafc3e8ac32ab5cfcb27c5aabfd4ea360c0e2e59f96aceb65f3453b5ff2c228bf7d76635fe62854fe092b1ebdf3b2 invoke-1.4.1.tar.gz"
diff --git a/user/py3-jinja2/APKBUILD b/user/py3-jinja2/APKBUILD
index 5f54488f5..9e71c2713 100644
--- a/user/py3-jinja2/APKBUILD
+++ b/user/py3-jinja2/APKBUILD
@@ -1,33 +1,35 @@
# Contributor: Brandon Bergren <git@bdragon.rtk0.net>
-# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=py3-jinja2
_pkgname=Jinja2
-pkgver=2.10
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=3.0.3
pkgrel=0
pkgdesc="A small but fast and easy to use stand-alone template engine written in pure python."
url="https://pypi.python.org/pypi/Jinja2"
arch="noarch"
license="BSD-3-Clause"
-depends="python3"
-makedepends="python3-dev"
-checkdepends="py3-pytest py3-markupsafe"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+depends="python3 py3-markupsafe"
+makedepends="python3-dev py3-iniconfig py3-toml"
+checkdepends="py3-pytest"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
+# secfixes: jinja2
+# 2.10.1-r0:
+# - CVE-2019-10906
+
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
- PYTHONPATH="$builddir:$PYTHONPATH" pytest
+ PYTHONPATH="$builddir/build/lib:$PYTHONPATH" pytest
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
-
}
-sha512sums="0ea7371be67ffcf19e46dfd06523a45a0806e678a407d54f5f2f3e573982f0959cf82ec5d07b203670309928a62ef71109701ab16547a9bba2ebcdc178cb67f2 py3-jinja2-2.10.tar.gz"
+sha512sums="51703d396ffe35155ed216922294441e20d44cd1ab69674140146375d4964654cdb32b38945f22916e0de917bbc0cf406cb680c2e569f9225dbe1fe4063be0b0 py3-jinja2-3.0.3.tar.gz"
diff --git a/user/py3-josepy/APKBUILD b/user/py3-josepy/APKBUILD
index 511139b5b..d29a050a7 100644
--- a/user/py3-josepy/APKBUILD
+++ b/user/py3-josepy/APKBUILD
@@ -1,8 +1,9 @@
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-josepy
_pkgname=${pkgname#py3-}
-pkgver=1.1.0
+pkgver=1.3.0
pkgrel=0
pkgdesc="JOSE protocol implementation in Python"
url="https://github.com/jezdez/josepy"
@@ -16,13 +17,12 @@ source="$_pkgname-$pkgver.tar.gz::https://github.com/certbot/$_pkgname/archive/v
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
package() {
mkdir -p "$pkgdir"
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="86533e896c7ca35f035ebb9e3667e36511c6ba693c7e056a0fdc28bec282643ade2eb5223271a7a6a4110b70b82ee5b788cfded8946f0c1133ecb050ca457b77 josepy-1.1.0.tar.gz"
+
+sha512sums="93d8ca09243ed273c532e1c5c413f356dca3e85db45614b88d82665a947088950d3c4d6304fec51bdc502a25722955a9fac47b7bc608a69cc1226a512f69c229 josepy-1.3.0.tar.gz"
diff --git a/user/py3-lxml/APKBUILD b/user/py3-lxml/APKBUILD
index fd522ca47..3ebb370f0 100644
--- a/user/py3-lxml/APKBUILD
+++ b/user/py3-lxml/APKBUILD
@@ -3,16 +3,19 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=py3-lxml
_pkgname=lxml
-pkgver=4.3.3
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=4.9.1
pkgrel=0
pkgdesc="Python LXML Library"
url="https://lxml.de/"
arch="all"
options="!check" # No test suite.
+# Certified net clean
license="BSD-3-Clause"
depends=""
makedepends="python3-dev libxml2-dev libxslt-dev"
-source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
@@ -23,4 +26,4 @@ package() {
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="cbc1cd30bac4b9ac845d99949c8c231a7870398f942695df5a00586d70d0f6b6ebd457a1a9306806af7d0fd521a14c54d266902943263927a0d940abc3cdf5c0 lxml-4.3.3.tar.gz"
+sha512sums="d7ec55c7db2c63a716ca5f4d833706d90fc76c944885e010fcdb96786bcfe796994e438450cf4e8e6e75d702e21fb16971f28f854d7a1f76c34e4ae315414d84 lxml-4.9.1.tar.gz"
diff --git a/user/py3-mako/APKBUILD b/user/py3-mako/APKBUILD
index 9cb68ea75..e9937c9e8 100644
--- a/user/py3-mako/APKBUILD
+++ b/user/py3-mako/APKBUILD
@@ -2,17 +2,20 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=py3-mako
_pkgname=Mako
-pkgver=1.0.8
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=1.2.4
pkgrel=0
pkgdesc="Fast templating language for Python"
url="http://www.makotemplates.org/"
arch="noarch"
+# Certified net clean
license="MIT"
depends="python3"
makedepends="python3-dev"
checkdepends="py3-markupsafe py3-mock py3-pbr py3-pluggy py3-py py3-pytest
- py3-six"
-source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+ py3-six py3-iniconfig py3-toml"
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir"/$_pkgname-$pkgver
build() {
@@ -20,11 +23,11 @@ build() {
}
check() {
- python3 setup.py test
+ py.test
}
package() {
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="84da36cf798421528156a93c1b722fe604df5811a9db66244a9085af9ae17ce13d1e8057b3e53aa1af61acf457ce9d13ae240ebade3a7e60ea3cde1f1d9bf264 Mako-1.0.8.tar.gz"
+sha512sums="9a90d245f2c8b5e5efa283d91f762a2fffa40b7f71e7a4b66de7f66f894ad5ba2fa5c04080200b6633bb61d4308db5b5e763b26ae7d93d18efe4aebb2178006a Mako-1.2.4.tar.gz"
diff --git a/user/py3-markdown/APKBUILD b/user/py3-markdown/APKBUILD
index ef362e1f9..5fbdbb8de 100644
--- a/user/py3-markdown/APKBUILD
+++ b/user/py3-markdown/APKBUILD
@@ -1,28 +1,28 @@
# Contributor: Fabian Affolter <fabian@affolter-engineering.ch>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-markdown
_pkgname=Markdown
-pkgver=3.0.1
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=3.2.2
pkgrel=0
pkgdesc="A Python implementation of Markdown"
url="https://python-markdown.github.io/"
arch="noarch"
-options="!check" # needs flake8
+options="!check" # needs flake8
license="BSD-3-Clause"
depends="python3"
makedepends="python3-dev"
subpackages=""
-source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
package() {
- cd "$builddir"
python3 setup.py install --root="$pkgdir"
}
-sha512sums="c648c1b8ecb3c907ff2bd636ec6c08b4b629967fb916913f77db641f6d61b83d16929af2f15f5695c8cdb9614031606110e02a7e0bbb3aab0be38a8e285f12f1 Markdown-3.0.1.tar.gz"
+sha512sums="72ce79b0daed4df2d09a458dad24da3e303143307640fb15d15cb10edc6c641d422dcf5043380c1572c4b9ed8f5fc11ec52e28928d8215d687309e4ce9ae3d7c Markdown-3.2.2.tar.gz"
diff --git a/user/py3-markupsafe/APKBUILD b/user/py3-markupsafe/APKBUILD
index 9d2c46b51..7e9ab6bb1 100644
--- a/user/py3-markupsafe/APKBUILD
+++ b/user/py3-markupsafe/APKBUILD
@@ -2,32 +2,31 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-markupsafe
_pkgname=MarkupSafe
-pkgver=1.1.1
-pkgrel=0
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=2.0.1
+pkgrel=1
pkgdesc="Safely add untrusted strings to HTML/XML markup."
url="https://pypi.python.org/pypi/MarkupSafe"
arch="all"
license="BSD-3-Clause"
depends="python3"
-makedepends="python3-dev"
checkdepends="py3-pytest"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+makedepends="python3-dev py3-iniconfig"
+subpackages=""
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
PYTHONPATH="$PYTHONPATH:$(echo build/lib.*)" pytest
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
-
}
-sha512sums="f3014e6131a3ab866914c5635b5397ef71906bffb1b6f8c5f2ed2acf167429ff7914236d38943e872683a57a9be9669f4c5aace6274f3307ab21ef25373db0b6 py3-markupsafe-1.1.1.tar.gz"
+sha512sums="77249bda784111ece15d59eb3de1cbb37a58fb9f22902fe6b73fea9eb0f23857ccbe53dc55463278e3b91f78dc35e2b027fd823ca50d88d8985d5a98ce2327f1 py3-markupsafe-2.0.1.tar.gz"
diff --git a/user/py3-mock/APKBUILD b/user/py3-mock/APKBUILD
index 26248b73f..4445df141 100644
--- a/user/py3-mock/APKBUILD
+++ b/user/py3-mock/APKBUILD
@@ -1,7 +1,10 @@
# Contributor: Fabian Affolter <fabian@affolter-engineering.ch>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-mock
_pkgname=${pkgname#py3-}
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
pkgver=2.0.0
pkgrel=0
pkgdesc="A Python Mocking and Patching Library for Testing"
@@ -12,17 +15,15 @@ license="BSD-2-Clause"
depends="python3 py3-pbr py3-six"
makedepends="python3-dev"
subpackages=""
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
package() {
mkdir -p "$pkgdir"
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
diff --git a/user/py3-monotonic/APKBUILD b/user/py3-monotonic/APKBUILD
new file mode 100644
index 000000000..473c12f1e
--- /dev/null
+++ b/user/py3-monotonic/APKBUILD
@@ -0,0 +1,31 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-monotonic
+_pkgname=monotonic
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=1.5
+pkgrel=0
+pkgdesc="Monotonic clock for Python"
+url="https://pypi.org/project/monotonic/"
+arch="noarch"
+license="Apache-2.0"
+depends="python3"
+makedepends=""
+subpackages=""
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/monotonic-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ python3 setup.py test
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="05485e0baa51df95f9812d463306ce0bbe7228170b43aed8faa9d77d2b613ffede6b57b3dd273c352e0d1c04782043bec2f36be88cb1acde182a5aeb0538f970 monotonic-1.5.tar.gz"
diff --git a/user/py3-more-itertools/APKBUILD b/user/py3-more-itertools/APKBUILD
index 3bd3d229d..93998cf89 100644
--- a/user/py3-more-itertools/APKBUILD
+++ b/user/py3-more-itertools/APKBUILD
@@ -2,33 +2,28 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=py3-more-itertools
_pkgname=more-itertools
-pkgver=4.3.0
+pkgver=8.12.0
pkgrel=0
pkgdesc="More routines for operating on iterables, beyond itertools"
url="https://pypi.org/project/more-itertools"
arch="noarch"
# Certified net clean
license="MIT"
-depends="python3 py3-six"
+depends="python3"
makedepends=""
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/m/$_pkgname/$_pkgname-$pkgver.tar.gz
- fix-test-32bit-overflow.patch"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/m/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 -m unittest discover -v
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="5fee3d99fd796b0f0f6b5aa99a8db22e219d3dced71fef6f4b16286fe67061dce280389b3638c55c6e5f6c828ef1286cee845d76a6861d2af66d90e995d5aa4e py3-more-itertools-4.3.0.tar.gz
-3b9e6b7e8d5abd1f7edf27e8501576612cc6c84deed10f14ca8321c42a77c6d4db1b109d900a4474c2c66b6d6397da8c9d70d8df0f64813d895ca3faf9f4db08 fix-test-32bit-overflow.patch"
+sha512sums="73759f05d178bd6fe98cadac401707faf90a4f7b456c4aac3f0b3f6c13a2284600971e0b271f1768cacd3ae9b69848404f85432199ca51b8160fbe67045dfd17 py3-more-itertools-8.12.0.tar.gz"
diff --git a/user/py3-more-itertools/fix-test-32bit-overflow.patch b/user/py3-more-itertools/fix-test-32bit-overflow.patch
deleted file mode 100644
index 1ca1775f1..000000000
--- a/user/py3-more-itertools/fix-test-32bit-overflow.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 27a6dd8272e4fc1b74f0e8dd3746764ae8901523 Mon Sep 17 00:00:00 2001
-From: Efraim Flashner <efraim@flashner.co.il>
-Date: Thu, 11 Oct 2018 20:36:05 +0300
-Subject: [PATCH] Fix overflow error on 32-bit hardware
-
-Addresses bug#234
----
- more_itertools/tests/test_more.py | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/more_itertools/tests/test_more.py b/more_itertools/tests/test_more.py
-index f94170b..5fbeec3 100644
---- a/more_itertools/tests/test_more.py
-+++ b/more_itertools/tests/test_more.py
-@@ -2016,8 +2016,8 @@ def test_custom_pred(self):
- self.assertEqual(actual, expected)
-
- def test_efficient_reversal(self):
-- iterable = range(10 ** 10) # Is efficiently reversible
-- target = 10 ** 10 - 2
-+ iterable = range(9 ** 9) # Is efficiently reversible
-+ target = 9 ** 9 - 2
- pred = lambda x: x == target # Find-able from the right
- actual = next(mi.rlocate(iterable, pred))
- self.assertEqual(actual, target)
diff --git a/user/py3-ncclient/APKBUILD b/user/py3-ncclient/APKBUILD
new file mode 100644
index 000000000..1322f9e2f
--- /dev/null
+++ b/user/py3-ncclient/APKBUILD
@@ -0,0 +1,49 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-ncclient
+_pkgname=ncclient
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=0.6.9
+pkgrel=0
+pkgdesc="Python library for NETCONF clients"
+url="https://pypi.org/project/ncclient/"
+arch="noarch"
+license="Apache-2.0"
+depends="python3 py3-lxml py3-paramiko"
+checkdepends="py3-pytest py3-mock py3-iniconfig py3-toml"
+makedepends="libxml2-dev libxslt-dev"
+subpackages=""
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz
+ https://raw.githubusercontent.com/ncclient/ncclient/v${pkgver}/test/unit/transport/rpc-reply/get-software-information-rfc.xml
+ https://raw.githubusercontent.com/ncclient/ncclient/v${pkgver}/test/unit/transport/rpc-reply/get-software-information.xml
+ https://raw.githubusercontent.com/ncclient/ncclient/v${pkgver}/test/unit/ssh_config
+ "
+builddir="$srcdir/ncclient-$pkgver"
+
+unpack() {
+ default_unpack
+ mkdir -p "$builddir"/test/unit/transport/rpc-reply
+ mv "$srcdir"/*.xml "$builddir"/test/unit/transport/rpc-reply/
+ mv "$srcdir"/ssh_config "$builddir"/test/unit/
+}
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ # Requires nose
+ rm "$builddir"/test/unit/test_xml_.py
+
+ pytest
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="ea5abc0dae81c337dbb22b8a15a63b6af8a3d5fbae9b621137957cc33c4688c4930a941f568a02be10256bcead9047bbe4a3fd8b29639f6a7626bb28244358a9 ncclient-0.6.9.tar.gz
+88cdb37bcc1991abdb09d71ee182754f881247ae580fdb866e16047d7ec0117daa2916405504ee92e9defb398794dc8fb8e5d2fb937498c5cfacae203b721979 get-software-information-rfc.xml
+c89ef648818e0c7e815b96a923fb48f8a7f3f72ef4d3e4a1dc6d5d5a368327ff06a4a2870d81bd5076ad0f25e8849ae00faa5fbf74294c7ebada8a5a84aa9a1a get-software-information.xml
+d94e0263c757647a14771fb5e12e843a4bcda1cc4f5ac0afa87d07f5abe8050c464867dc0a70f1f4c6503be844b2fb0701b449d1d89a358bc74139a543087be3 ssh_config"
diff --git a/user/py3-netconf/APKBUILD b/user/py3-netconf/APKBUILD
new file mode 100644
index 000000000..1108f9102
--- /dev/null
+++ b/user/py3-netconf/APKBUILD
@@ -0,0 +1,31 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-netconf
+_pkgname=netconf
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=2.1.0
+pkgrel=0
+pkgdesc="NETCONF library for Python"
+url="https://pypi.org/project/netconf/"
+arch="noarch"
+license="Apache-2.0"
+depends="python3 py3-lxml py3-monotonic py3-paramiko py3-sshutil"
+makedepends=""
+subpackages=""
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/netconf-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ python3 setup.py test
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="a641538a4ea55e66205a5568cc1df80ff704c8b5b53dff7f6809cfe7c532c66996892e3aeb3aaaadd224012b4ad8e2ba1b14c1d6b66fc3fd5079a1969d49a122 netconf-2.1.0.tar.gz"
diff --git a/user/py3-netifaces/APKBUILD b/user/py3-netifaces/APKBUILD
new file mode 100644
index 000000000..154b5e462
--- /dev/null
+++ b/user/py3-netifaces/APKBUILD
@@ -0,0 +1,28 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-netifaces
+_pkgname=netifaces
+pkgver=0.10.9
+pkgrel=0
+pkgdesc="Portable network interface information"
+url="https://pypi.org/project/netifaces/"
+arch="all"
+license="MIT"
+depends="python3"
+makedepends="python3-dev"
+source="https://pypi.io/packages/source/n/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ python3 setup.py test
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="8fc593de4d2cbda46a3e2430ede031360f1abfc64d47d00fbec09f3395fd83479bf29d97cb6834b1df06850c9ac2745c9344b6814f34be5975d4d5df98e05e87 netifaces-0.10.9.tar.gz"
diff --git a/user/py3-olefile/APKBUILD b/user/py3-olefile/APKBUILD
index c44ee5842..a890d231f 100644
--- a/user/py3-olefile/APKBUILD
+++ b/user/py3-olefile/APKBUILD
@@ -11,21 +11,19 @@ arch="noarch"
license="BSD-2-Clause AND Custom"
depends="python3"
makedepends="python3-dev unzip"
+subpackages=""
source="$pkgname-$pkgver.zip::https://files.pythonhosted.org/packages/source/o/$_pkgname/$_pkgname-$pkgver.zip"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
PYTHONPATH="build/lib" python3 tests/test_olefile.py
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
install -Dm644 LICENSE.txt "$pkgdir/usr/share/licenses/$pkgname/LICENSE.txt"
}
diff --git a/user/py3-openssl/APKBUILD b/user/py3-openssl/APKBUILD
index b19a1d09d..dd3fe06ae 100644
--- a/user/py3-openssl/APKBUILD
+++ b/user/py3-openssl/APKBUILD
@@ -1,8 +1,11 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-openssl
_pkgname=pyOpenSSL
-pkgver=19.0.0
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=19.1.0
pkgrel=0
pkgdesc="Python wrapper module around the OpenSSL library"
url="https://github.com/pyca/pyopenssl"
@@ -12,18 +15,15 @@ license="Apache-2.0"
depends="python3 py3-cryptography py3-six"
makedepends="python3-dev"
subpackages=""
-source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
package() {
- mkdir -p "$pkgdir"
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="a7e12bf5be725ccebd1223d567a9b9e8bd35f79cbf3a0409108fa6f00e10ab137dd6876369e9dede02b2abc7d700786cc905532ca5c31b6e246f6df8b24e2818 pyOpenSSL-19.0.0.tar.gz"
+sha512sums="4acd96f287d72eb11bd812697d28cd6eb6a96a4653248b65f967187830a6b17cc1254775a18a3405469f3d45abdae6f02d165f2f35f035f3174c2826fba82916 pyOpenSSL-19.1.0.tar.gz"
diff --git a/user/py3-ordered-set/APKBUILD b/user/py3-ordered-set/APKBUILD
new file mode 100644
index 000000000..4adac33f0
--- /dev/null
+++ b/user/py3-ordered-set/APKBUILD
@@ -0,0 +1,24 @@
+# Contributor: Leo <thinkabit.ukim@gmail.com>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=py3-ordered-set
+pkgver=4.0.2
+pkgrel=0
+pkgdesc="MutableSet that remembers its order"
+url="https://github.com/LuminosoInsight/ordered-set"
+arch="noarch"
+options="!check" # Circular dependencies.
+license="MIT"
+depends="python3"
+makedepends=""
+source="https://pypi.io/packages/source/o/ordered-set/ordered-set-$pkgver.tar.gz"
+builddir="$srcdir/ordered-set-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="d7031ae90fdaf116c27415170a7197be34ff4b977a03684a6fb53dc453845a97cd32b9666ed3ae58fb7bc722ff3b2b4f2e156578841033759b490b359a5619b4 ordered-set-4.0.2.tar.gz"
diff --git a/user/py3-packaging/APKBUILD b/user/py3-packaging/APKBUILD
index 08936d2a5..c8379180b 100644
--- a/user/py3-packaging/APKBUILD
+++ b/user/py3-packaging/APKBUILD
@@ -2,32 +2,35 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-packaging
_pkgname=packaging
-pkgver=19.0
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=19.2
pkgrel=0
pkgdesc="Core utilities for Python packages"
url="https://pypi.python.org/pypi/packaging"
arch="noarch"
+options="!check" # Cyclic dependency with py3-pytest.
+# Certified net clean
license="Apache-2.0 AND BSD-2-Clause"
-depends="python3"
+depends="python3 py3-attrs py3-pyparsing py3-six"
makedepends="python3-dev"
-checkdepends="py3-pytest py3-pretend py3-pyparsing"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+#checkdepends="py3-pytest py3-pretend"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz
+ test-glibc.patch"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir/tests"
- python3 -m pytest
+ PYTHONPATH="$builddir" pytest
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="aa55b6fbca764e7de2992e294b7be9dc90b25f88b64ba0cd2d1d93042402d4360b4c2cdc134a94b083da0c0bc83de8fa7185c0856bcc96fa25828c10a793fba7 py3-packaging-19.0.tar.gz"
+sha512sums="af7312a85292f577d3e6e57154f10fb380bbdee749344ba4b226a09f22bf5ca664ed63c62cd5b4dea0be5eb5cff5c17ad04415aab8c925fa90dcae2e1c6dee5a py3-packaging-19.2.tar.gz
+d67e8f3eae1b7571edf705ba532e1c9a6dc4c241cb01dfeda8addb587c2039114b0e21e73140369e4a30d0256a2073ac877737458cb95006029e7ce44d0bae93 test-glibc.patch"
diff --git a/user/py3-packaging/test-glibc.patch b/user/py3-packaging/test-glibc.patch
new file mode 100644
index 000000000..b8c3f2fee
--- /dev/null
+++ b/user/py3-packaging/test-glibc.patch
@@ -0,0 +1,10 @@
+--- packaging-19.1/tests/test_tags.py 2019-07-20 01:03:21.000000000 -0400
++++ packaging-19.1/tests/test_tags.py 2019-08-06 09:08:16.490018542 -0400
+@@ -474,6 +474,7 @@ def test_glibc_version_string(version_st
+ assert tags._glibc_version_string() is None
+
+
++@pytest.mark.skip(reason="musl is not glibc")
+ def test_have_compatible_glibc(monkeypatch):
+ if platform.system() == "Linux":
+ # Assuming no one is running this test with a version of glibc released in
diff --git a/user/py3-paho-mqtt/APKBUILD b/user/py3-paho-mqtt/APKBUILD
new file mode 100644
index 000000000..0d8c6b1dc
--- /dev/null
+++ b/user/py3-paho-mqtt/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Fabian Affolter <fabian@affolter-engineering.ch>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=py3-paho-mqtt
+_pkgname=paho.mqtt.python
+pkgver=1.5.0
+pkgrel=0
+pkgdesc="MQTT version 3.1.1 client class for Python"
+url="https://www.eclipse.org/paho/"
+# Certified net clean
+arch="noarch"
+license="EPL-1.0 AND EDL-1.0"
+depends="python3"
+checkdepends="py3-pytest py3-iniconfig"
+makedepends=""
+# Use GitHub tarball since PyPI doesn't include tests
+source="$pkgname-$pkgver.tar.gz::https://github.com/eclipse/paho.mqtt.python/archive/v$pkgver.tar.gz
+ setup.patch"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ PYTHONPATH="$builddir"/src pytest
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="7e52180bf1783ee1f39aa5248730e82fae47fe3db7c4579b0b7207a29f5337c7c0af58d58aac1c265b1ed91fa9c240187d5e3005f55c6e28623e6cbc36750294 py3-paho-mqtt-1.5.0.tar.gz
+690f18379f1d920c9eb63a14dfa1331e8400d95db5a6038df85aaa78756d965a303a5b00877615b1546cefb804994dec99c4067564d899421aceb0e0ad3c3e68 setup.patch"
diff --git a/user/py3-paho-mqtt/setup.patch b/user/py3-paho-mqtt/setup.patch
new file mode 100644
index 000000000..17a2243a9
--- /dev/null
+++ b/user/py3-paho-mqtt/setup.patch
@@ -0,0 +1,25 @@
+--- paho.mqtt.python-1.4.0/setup.py 2018-09-02 11:20:42.000000000 +0000
++++ paho.mqtt.python-1.4.0/setup.py 2019-08-28 02:51:55.690633661 +0000
+@@ -11,10 +11,9 @@ with open('README.rst', 'rb') as readme_
+ readme = readme_file.read().decode('utf-8')
+
+ requirements = []
+-test_requirements = ['pytest', 'pylama', 'six']
+-needs_pytest = {'pytest', 'test', 'ptr'}.intersection(sys.argv)
+-setup_requirements = ['pytest-runner'] if needs_pytest else []
++test_requirements = ['pytest']
++setup_requirements = []
+ extra_requirements = {'proxy': ['PySocks']}
+
+ if sys.version_info < (3, 0):
+ test_requirements += ['mock']
+--- paho.mqtt.python-1.4.0/setup.cfg 2018-09-02 11:20:42.000000000 +0000
++++ paho.mqtt.python-1.4.0/setup.cfg 2019-08-28 02:50:19.540632984 +0000
+@@ -1,7 +1,6 @@
+ [aliases]
+ test=pytest
+ [tool:pytest]
+-addopts=-r xs --pylama
+ strict=True
+ testpaths=tests src
+ [pylama]
diff --git a/user/py3-paramiko/APKBUILD b/user/py3-paramiko/APKBUILD
new file mode 100644
index 000000000..83fcf8cbd
--- /dev/null
+++ b/user/py3-paramiko/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-paramiko
+_pkgname=paramiko
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=2.7.1
+pkgrel=0
+pkgdesc="Python implementation of the SSHv2 protocol"
+url="https://www.paramiko.org/"
+arch="noarch"
+license="LGPL-2.1+"
+depends="python3 py3-cryptography py3-bcrypt py3-pynacl"
+checkdepends="py3-mock py3-pytest py3-invoke py3-pytest-relaxed py3-iniconfig py3-toml"
+makedepends=""
+subpackages=""
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/paramiko-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ pytest -k "not TestMatch and not TestHostname and not TestComplexMatching and not TestSSHConfig"
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="80068c8f72ab8c98d84188caa074deecead9fb459b1a71cedb3cfa627736730928a2b9c6eb2b5a8b60acb9bccb0f68aefbef9d0d55554001c835b5cf897751ab paramiko-2.7.1.tar.gz"
diff --git a/user/py3-parsedatetime/APKBUILD b/user/py3-parsedatetime/APKBUILD
index 777e90df7..8f50cf353 100644
--- a/user/py3-parsedatetime/APKBUILD
+++ b/user/py3-parsedatetime/APKBUILD
@@ -1,9 +1,10 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Contributor: Roberto Oliveira <robertoguimaraes8@gmail.com>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-parsedatetime
_pkgname=parsedatetime
-pkgver=2.4
+pkgver=2.6
pkgrel=0
pkgdesc="Parse human-readable date/time strings"
url="https://github.com/bear/parsedatetime"
@@ -13,17 +14,14 @@ license="Apache-2.0"
depends="python3 py3-future"
makedepends="python3-dev"
source="$_pkgname-$pkgver.tar.gz::https://github.com/bear/$_pkgname/archive/v$pkgver.tar.gz"
-
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="0fd8bfa3411476a20d8874b44036bc162735fb7865d39ca98b0a608daec39daac47100314279dbf66229ec333821492744f7505315d955f58216fdaa75cbf046 parsedatetime-2.4.tar.gz"
+sha512sums="ed7649feb8773fdb33d609ef0abe4d20f555744bd70e9766aba6b9a79d8415c7e2efea1d7ef5c6b5906f3bc90bff124ef92992ce17d83fe70575da2db918e543 parsedatetime-2.6.tar.gz"
diff --git a/user/py3-passlib/APKBUILD b/user/py3-passlib/APKBUILD
new file mode 100644
index 000000000..18d0d23bd
--- /dev/null
+++ b/user/py3-passlib/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-passlib
+_pkgname=${pkgname#py3-}
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=1.7.2
+pkgrel=0
+pkgdesc="Python password hashing framework"
+url="https://pypi.org/project/passlib/"
+arch="noarch"
+options="!check" # needs nose
+license="BSD-3-Clause"
+depends="python3"
+checkdepends="py3-nose"
+makedepends="python3-dev"
+subpackages=""
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ python3 setup.py test
+}
+
+package() {
+ mkdir -p "$pkgdir"
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="1ea0654b177b5ab2e1a7e5c3949642c34805ace6e4e4a0f82fafdb3f374edd99c667906ce598c335b668da049860648d5cbebb3e62d775898d5b0cb8cfc7bf53 passlib-1.7.2.tar.gz"
diff --git a/user/py3-pbr/APKBUILD b/user/py3-pbr/APKBUILD
index d92c97139..e89eb50b9 100644
--- a/user/py3-pbr/APKBUILD
+++ b/user/py3-pbr/APKBUILD
@@ -1,8 +1,11 @@
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=py3-pbr
_pkgname=${pkgname#py3-}
-pkgver=5.1.3
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=5.8.0
pkgrel=0
pkgdesc="Python Build Reasonableness"
url="https://pypi.org/project/pbr"
@@ -12,18 +15,16 @@ license="Apache-2.0"
depends="python3"
makedepends="python3-dev"
subpackages=""
-source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
package() {
mkdir -p "$pkgdir"
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="66927b835058efb24182806e9ba16ee2066798ec7a1bc8dc0e5ec2b9260297515f0cfae192eef665a16e866462a88d379bb56bea21e86083df71b05868219675 pbr-5.1.3.tar.gz"
+sha512sums="61a8eb63bb76ce8515c4203d60df7c973e02ea61b603d155b611724efb2b15c42416bf8a0285451d3378056d390bbf63d991cec32cc4114ae5cc30ebae0a5a69 pbr-5.8.0.tar.gz"
diff --git a/user/py3-pexpect/APKBUILD b/user/py3-pexpect/APKBUILD
index 2394872d5..eb0bbdc4f 100644
--- a/user/py3-pexpect/APKBUILD
+++ b/user/py3-pexpect/APKBUILD
@@ -1,8 +1,10 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=py3-pexpect
_pkgname=${pkgname#*-}
-pkgver=4.7.0
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=4.9.0
pkgrel=0
pkgdesc="Python library for managing console applications"
url="https://pexpect.readthedocs.io/"
@@ -10,22 +12,19 @@ arch="noarch"
license="ISC"
depends="python3 py3-ptyprocess"
makedepends=""
-source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/pexpect-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py check
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="4cea4229332c1f3de26dfcad596877665b3c02e91d51ca3c45c1f9b44462adb7c82abc7b76eb09a73822c2d1ccc9d812574cf79bf6bc8fb0b7d2f1093962cc3f pexpect-4.7.0.tar.gz"
+sha512sums="0e4b3a6978b94aee221ff23cd7bd771517e0e0f1a1a8b17f77f15bf78edd3130ad093d925b7d1e86fe6ba7eb956205d4c616b4e52b2fcfa1e944d4860dd7b3a0 pexpect-4.9.0.tar.gz"
diff --git a/user/py3-pillow/APKBUILD b/user/py3-pillow/APKBUILD
index e137a6b0f..aed901aae 100644
--- a/user/py3-pillow/APKBUILD
+++ b/user/py3-pillow/APKBUILD
@@ -2,41 +2,78 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=py3-pillow
_pkgname=Pillow
-pkgver=5.3.0
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=9.1.1
pkgrel=0
pkgdesc="A Python Imaging Library"
url="https://pypi.org/project/Pillow"
arch="all"
# Certified net clean
-license="Custom"
+license="HPND"
depends="py3-olefile python3"
makedepends="python3-dev freetype-dev libjpeg-turbo-dev libwebp-dev
tiff-dev libpng-dev lcms2-dev openjpeg-dev zlib-dev"
subpackages="$pkgname-doc"
-_scripts_rev="f578e2c"
+_scripts_rev="b24479c"
source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/P/$_pkgname/$_pkgname-$pkgver.tar.gz
- $pkgname-scripts-$_scripts_rev.tar.gz::https://github.com/python-pillow/pillow-scripts/archive/$_scripts_rev.tar.gz"
+ https://dev.sick.bike/dist/$pkgname-scripts-$_scripts_rev.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
+# secfixes: pillow
+# 9.1.1-r0:
+# - CVE-2020-10177
+# - CVE-2020-10378
+# - CVE-2020-10379
+# - CVE-2020-10994
+# - CVE-2020-11538
+# - CVE-2020-35653
+# - CVE-2020-35654
+# - CVE-2020-35655
+# - CVE-2021-23437
+# - CVE-2021-25287
+# - CVE-2021-25288
+# - CVE-2021-25289
+# - CVE-2021-25290
+# - CVE-2021-25291
+# - CVE-2021-25292
+# - CVE-2021-25293
+# - CVE-2021-27921
+# - CVE-2021-27922
+# - CVE-2021-27923
+# - CVE-2021-28675
+# - CVE-2021-28676
+# - CVE-2021-28677
+# - CVE-2021-28678
+# - CVE-2021-34552
+# - CVE-2022-22815
+# - CVE-2022-22816
+# - CVE-2022-22817
+# - CVE-2022-24303
+# - CVE-2022-30595
+# 6.2.2-r0:
+# - CVE-2019-19911
+# - CVE-2020-5310
+# - CVE-2020-5311
+# - CVE-2020-5312
+# - CVE-2020-5313
+
unpack() {
default_unpack
mv pillow-scripts-*/Scripts "$builddir/Scripts"
}
build() {
- cd "$builddir"
# zlib resides in lib
export CFLAGS="$CFLAGS -L/lib"
python3 setup.py build
}
check() {
- cd "$builddir"
PYTHONPATH="$(find 'build' -name 'lib.*')" python3 selftest.py
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
@@ -44,12 +81,11 @@ doc() {
pkgdesc="Example scripts for $pkgname"
depends="$pkgname"
- cd "$builddir"
- local destdir="$subpkgdir/usr/share/doc/$pkgname"
+ destdir="$subpkgdir/usr/share/doc/$pkgname"
install -d "$destdir"/Scripts
- install -m 644 Scripts/* "$destdir"/Scripts/
- install -Dm644 LICENSE "$subpkgdir/usr/share/licenses/$pkgname/LICENSE"
+ install -m 644 "$builddir"/Scripts/* "$destdir"/Scripts/
+ install -Dm644 "$builddir"/LICENSE "$subpkgdir/usr/share/licenses/$pkgname/LICENSE"
}
-sha512sums="0596207069a87a645f7694b19ea5100d753dbb7553148fa5982b073e4e1163b5bd83ddf8b1c783a90a0b718576f08d3f15352f2742d46a425cf639de2409c4ab py3-pillow-5.3.0.tar.gz
-1a2e6dc45127b3f0b706d5be4fdc8ddeb09a9e046a182eb48239572e1bdc62d1b1f1a1f11ef1f1f23766aaac1b498556cc9a9cf11d3b943c9f2834c9b41612e0 py3-pillow-scripts-f578e2c.tar.gz"
+sha512sums="5fbb94cb3046c002e996f61bfbfaca0b30e9e068aa7ab13083cd2ff8c3e9cc18c5aab04ecc3de5a83eb985186f90dacbd42bad1905b0e89f0e34238af54b304e py3-pillow-9.1.1.tar.gz
+c01e83a7cef6653a33f60acbcbc737f0d40ff0dbc792ce0b2ce52f21092d3071845830fa0f64b27a1c5e679c53df57e0ec2e89867ee717f938d4e6f19db77790 py3-pillow-scripts-b24479c.tar.gz"
diff --git a/user/py3-pluggy/APKBUILD b/user/py3-pluggy/APKBUILD
index 552956797..ffbe870bf 100644
--- a/user/py3-pluggy/APKBUILD
+++ b/user/py3-pluggy/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=py3-pluggy
_pkgname=pluggy
-pkgver=0.7.1
+pkgver=1.0.0
pkgrel=0
pkgdesc="Plugin management and hook calling for Python"
url="https://pypi.python.org/pypi/pluggy"
@@ -11,26 +11,21 @@ options="!check" # Cyclic dependency with py3-pytest. Passes on x86_64
# Certified net clean
license="MIT"
depends="python3"
+checkdepends="py3-pytest"
makedepends="python3-dev"
-#checkdepends="py3-pytest"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/p/$_pkgname/$_pkgname-$pkgver.tar.gz
- scm.patch"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
PYTHONPATH="$builddir/build/lib:$PYTHONPATH" pytest testing
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="e19f6c1b3f2e711df1c8b075a2b802751afd218f1b692f08b2434c01d71c402331ff8c937550fbdfece2098f6d6856422d485f193e188916b365ded2e4087697 py3-pluggy-0.7.1.tar.gz
-6b805de27cf1255e0279e076fbcb94ef0494ab0d8bc73999ab45afdb026108d249b730932e28b723b9a0d63aba1746da6e72901cebb9ab6bd91ea3b5e9e64d3b scm.patch"
+sha512sums="cf0bcbb4330c24ce473614befa19548f33fb39fa0ad094e1eae786202d7adadc28e16499f80ab96b630091765404ca5c5b6f9a55bc605e03514d8ab50cf9ae00 py3-pluggy-1.0.0.tar.gz"
diff --git a/user/py3-pluggy/scm.patch b/user/py3-pluggy/scm.patch
deleted file mode 100644
index 5e42a72e4..000000000
--- a/user/py3-pluggy/scm.patch
+++ /dev/null
@@ -1,14 +0,0 @@
---- pluggy-0.7.1/setup.py 2018-07-28 22:45:12.000000000 +0000
-+++ pluggy-0.7.1/setup.py 2018-10-11 04:54:18.590233336 +0000
-@@ -24,10 +24,7 @@
- name='pluggy',
- description='plugin and hook calling mechanisms for python',
- long_description=long_description,
-- use_scm_version={
-- 'write_to': 'pluggy/_version.py',
-- },
-- setup_requires=['setuptools-scm'],
-+ version='0.7.1',
- license='MIT license',
- platforms=['unix', 'linux', 'osx', 'win32'],
- author='Holger Krekel',
diff --git a/user/py3-ply/APKBUILD b/user/py3-ply/APKBUILD
index 495a66d53..351c11b03 100644
--- a/user/py3-ply/APKBUILD
+++ b/user/py3-ply/APKBUILD
@@ -14,17 +14,14 @@ source="http://www.dabeaz.com/ply/ply-$pkgver.tar.gz"
builddir="$srcdir/ply-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py check
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
diff --git a/user/py3-pretend/APKBUILD b/user/py3-pretend/APKBUILD
index 7cf86f96f..5a7b8e175 100644
--- a/user/py3-pretend/APKBUILD
+++ b/user/py3-pretend/APKBUILD
@@ -2,6 +2,8 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-pretend
_pkgname=pretend
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
pkgver=1.0.9
pkgrel=0
pkgdesc="A library for stubbing in Python"
@@ -10,23 +12,20 @@ arch="noarch"
options="!check" # Test script missing from tarball
license="BSD-3-Clause"
depends="python3"
-makedepends="python3-dev"
checkdepends="py3-pytest"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+makedepends="python3-dev"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 test_pretend.py
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
diff --git a/user/py3-psutil/APKBUILD b/user/py3-psutil/APKBUILD
new file mode 100644
index 000000000..082b0fd9e
--- /dev/null
+++ b/user/py3-psutil/APKBUILD
@@ -0,0 +1,30 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-psutil
+_pkgname=${pkgname#py3-}
+pkgver=5.7.2
+pkgrel=0
+pkgdesc="Process and system utilities"
+url="https://pypi.org/project/psutil/"
+arch="all"
+options="!check" # Requires itself to be installed first
+license="BSD-3-Clause"
+depends="python3"
+makedepends="python3-dev utmps-dev"
+subpackages=""
+source="https://files.pythonhosted.org/packages/source/p/$_pkgname/$_pkgname-$pkgver.tar.gz
+ utmpx.patch
+ "
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ LIBS="-lutmps -lskarnet" python3 setup.py build
+}
+
+package() {
+ mkdir -p "$pkgdir"
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="b0c9b6bceffc031b230d656f76eca555e5cd481d8dc70de1c6068ec31f1ffd74314aa35c8e11903901f58c326152128749ff9525064ecca117df258311d27320 psutil-5.7.2.tar.gz
+5b0eea07856afeb0eff3268dc78bd3daf3491022e8a08c422db3eaad1b5e0da71429fe9e2e4b23f3eabf9669e7e4fb5a187c96aedbfe994692bb3e5a98fe2fc2 utmpx.patch"
diff --git a/user/py3-psutil/utmpx.patch b/user/py3-psutil/utmpx.patch
new file mode 100644
index 000000000..e7881e8f2
--- /dev/null
+++ b/user/py3-psutil/utmpx.patch
@@ -0,0 +1,87 @@
+--- psutil-5.6.2/psutil/_psutil_linux.c.old 2019-04-11 21:10:12.000000000 +0000
++++ psutil-5.6.2/psutil/_psutil_linux.c 2019-06-14 20:19:26.804374285 +0000
+@@ -14,7 +14,7 @@
+ #include <stdlib.h>
+ #include <mntent.h>
+ #include <features.h>
+-#include <utmp.h>
++#include <utmpx.h>
+ #include <sched.h>
+ #include <linux/version.h>
+ #include <sys/syscall.h>
+@@ -454,7 +454,7 @@
+ */
+ static PyObject *
+ psutil_users(PyObject *self, PyObject *args) {
+- struct utmp *ut;
++ struct utmpx *utx;
+ PyObject *py_retlist = PyList_New(0);
+ PyObject *py_tuple = NULL;
+ PyObject *py_username = NULL;
+@@ -465,20 +465,20 @@
+ if (py_retlist == NULL)
+ return NULL;
+- setutent();
++ setutxent();
+- while (NULL != (ut = getutent())) {
++ while (NULL != (utx = getutxent())) {
+ py_tuple = NULL;
+ py_user_proc = NULL;
+- if (ut->ut_type == USER_PROCESS)
++ if (utx->ut_type == USER_PROCESS)
+ py_user_proc = Py_True;
+ else
+ py_user_proc = Py_False;
+- py_username = PyUnicode_DecodeFSDefault(ut->ut_user);
++ py_username = PyUnicode_DecodeFSDefault(utx->ut_user);
+ if (! py_username)
+ goto error;
+- py_tty = PyUnicode_DecodeFSDefault(ut->ut_line);
++ py_tty = PyUnicode_DecodeFSDefault(utx->ut_line);
+ if (! py_tty)
+ goto error;
+- py_hostname = PyUnicode_DecodeFSDefault(ut->ut_host);
++ py_hostname = PyUnicode_DecodeFSDefault(utx->ut_host);
+ if (! py_hostname)
+ goto error;
+ py_tuple = Py_BuildValue(
+@@ -486,9 +486,9 @@
+ py_username, // username
+ py_tty, // tty
+ py_hostname, // hostname
+- (float)ut->ut_tv.tv_sec, // tstamp
++ (float)utx->ut_tv.tv_sec, // tstamp
+ py_user_proc, // (bool) user process
+- ut->ut_pid // process id
++ utx->ut_pid // process id
+ );
+ if (! py_tuple)
+ goto error;
+@@ -499,7 +499,7 @@
+ Py_DECREF(py_hostname);
+ Py_DECREF(py_tuple);
+ }
+- endutent();
++ endutxent();
+ return py_retlist;
+
+ error:
+@@ -508,7 +508,7 @@
+ Py_XDECREF(py_hostname);
+ Py_XDECREF(py_tuple);
+ Py_DECREF(py_retlist);
+- endutent();
++ endutxent();
+ return NULL;
+ }
+
+--- psutil-5.6.2/setup.py.old 2019-04-11 21:10:12.000000000 +0000
++++ psutil-5.6.2/setup.py 2019-06-14 20:25:29.994927919 +0000
+@@ -227,6 +227,7 @@
+ ext = Extension(
+ 'psutil._psutil_linux',
+ sources=sources + ['psutil/_psutil_linux.c'],
++ libraries=['utmps', 'skarnet'],
+ define_macros=macros)
+
+ elif SUNOS:
diff --git a/user/py3-psycopg2/APKBUILD b/user/py3-psycopg2/APKBUILD
new file mode 100644
index 000000000..6e0a3899e
--- /dev/null
+++ b/user/py3-psycopg2/APKBUILD
@@ -0,0 +1,28 @@
+# Contributor: Fabian Affolter <fabian@affolter-engineering.ch>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=py3-psycopg2
+_pkgname=psycopg2
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=2.9.5
+pkgrel=0
+pkgdesc="PostgreSQL adapter for python"
+url="https://www.psycopg.org/"
+arch="all"
+options="!check" # Requires a running PostgreSQL server.
+# Certified net clean
+license="LGPL-3.0+ WITH OpenSSL-link-exception"
+depends="python3"
+makedepends="postgresql-dev python3-dev"
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="61e431ceeba0830597b6a02882d670fef216d3d5ee5c6c1ce7a6ecdd13a8e04ee6637f7cb2ee39517b465f1ad014c48ddbba44154bd1dfc7f3fd08bd9ea82e43 psycopg2-2.9.5.tar.gz"
diff --git a/user/py3-ptyprocess/APKBUILD b/user/py3-ptyprocess/APKBUILD
index 981976f23..34c8f16ca 100644
--- a/user/py3-ptyprocess/APKBUILD
+++ b/user/py3-ptyprocess/APKBUILD
@@ -1,7 +1,10 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=py3-ptyprocess
-pkgver=0.6.0
+_pkgname=${pkgname#*-}
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=0.7.0
pkgrel=0
pkgdesc="Python library for using pseudo-terminals (ptys)"
url="https://github.com/pexpect/ptyprocess"
@@ -9,22 +12,19 @@ arch="noarch"
license="ISC"
depends="python3"
makedepends=""
-source="https://files.pythonhosted.org/packages/7d/2d/e4b8733cf79b7309d84c9081a4ab558c89d8c89da5961bf4ddb050ca1ce0/ptyprocess-$pkgver.tar.gz"
-sha512sums="b34b6bca977f09d1443b210e338e1300e12d6ef35857f9543b3a116ef3b500ad4844357a7a283321756f886af41bddb1f02b27bf200ef1e82a96fd9e431bed86 ptyprocess-0.6.0.tar.gz"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/ptyprocess-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py check
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
+sha512sums="791d8f2e79900627215ce80ce67ee9c79173dbc08297c6219d5058f9b80c5e323b93049e6836a70c4073f43548d22e3cf310f2e9948ef12f96bcaa15b0ddb2f3 py3-ptyprocess-0.7.0.tar.gz"
diff --git a/user/py3-py/APKBUILD b/user/py3-py/APKBUILD
index a38f90caf..6c1912664 100644
--- a/user/py3-py/APKBUILD
+++ b/user/py3-py/APKBUILD
@@ -2,35 +2,32 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=py3-py
_pkgname=py
-pkgver=1.7.0
+_p=p
+pkgver=1.11.0
pkgrel=0
pkgdesc="A python library with cross-python path, ini-parsing, io, code, log facilities"
url="https://pypi.python.org/project/py"
arch="noarch"
-options="!checkroot !check" # Circular dependency with py3-pytest. Passes on x86_64
+options="!check" # Circular dependency with py3-pytest.
+# And nobody seems to care about it. (some failures with pytest deprecation)
# Certified net clean
license="MIT"
depends="python3"
makedepends="python3-dev"
#checkdepends="py3-pytest"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz
- scm.patch"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
PYTHONPATH="$builddir/build/lib:$PYTHONPATH" pytest
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="c522be926c5716d866cb800eaa398a55518889da207a00575212254642eda2107e68c286e72b99cf94ecec1c8dcde1f763e2d8f296ab7e7673ae2671e70d5548 py3-py-1.7.0.tar.gz
-08a1645832d46ffab5b1fb2e7ef480c55a0d4ac266d53857d9ddae5c46ba11232b04bc0cb035bb9e3d08f9d439e844a623340882080555206811fe0624c61bc1 scm.patch"
+sha512sums="ce8dd791f9f6dd7e60a6caad32ff5cb816389a0840436efdedf4e0d4b0bfa09f7aea9e7c31d89903c72fe6ef17170a85af480525ba92c458ed73501a0420f2c4 py3-py-1.11.0.tar.gz"
diff --git a/user/py3-py/scm.patch b/user/py3-py/scm.patch
deleted file mode 100644
index 44665748f..000000000
--- a/user/py3-py/scm.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- py-1.7.0/setup.py 2018-08-27 20:39:51.000000000 +0000
-+++ py-1.7.0/setup.py 2018-10-11 05:07:12.560247181 +0000
-@@ -6,8 +6,7 @@ def main():
- name='py',
- description='library with cross-python path, ini-parsing, io, code, log facilities',
- long_description=open('README.rst').read(),
-- use_scm_version={"write_to": "py/_version.py"},
-- setup_requires=["setuptools-scm"],
-+ version='1.7.0',
- url='http://py.readthedocs.io/',
- license='MIT license',
- platforms=['unix', 'linux', 'osx', 'cygwin', 'win32'],
diff --git a/user/py3-pyang/APKBUILD b/user/py3-pyang/APKBUILD
new file mode 100644
index 000000000..8be0b9f77
--- /dev/null
+++ b/user/py3-pyang/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-pyang
+_pkgname=pyang
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=2.5.3
+pkgrel=0
+pkgdesc="YANG tooling for Python"
+url="https://pypi.org/project/pyang/"
+arch="noarch"
+license="ISC"
+depends="python3 py3-lxml"
+makedepends=""
+subpackages="$pkgname-doc $pkgname-bash-completion:bashcomp"
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/pyang-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ python3 setup.py test
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+bashcomp() {
+ pkgdesc="$pkgdesc (Bash completions)"
+ depends="py3-pyang"
+ install_if="$pkgname=$pkgver-r$pkgrel bash-completion"
+
+ mkdir "$subpkgdir"
+ mv "$pkgdir"/usr/etc "$subpkgdir"/
+}
+
+sha512sums="651f6f405018c3798a8ead870427eb6241b3466c6c29310e1d5c867599d8e9ed4898020316e397ad4d7c12abcf59b1a7a826dd2710546251b49973f6e8f32a9d pyang-2.5.3.tar.gz"
diff --git a/user/py3-pycairo/APKBUILD b/user/py3-pycairo/APKBUILD
index 9dce8a2ed..1319e1ce9 100644
--- a/user/py3-pycairo/APKBUILD
+++ b/user/py3-pycairo/APKBUILD
@@ -1,22 +1,21 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=py3-pycairo
-pkgver=1.18.0
+pkgver=1.26.0
pkgrel=0
pkgdesc="Python bindings for Cairo"
url="https://pycairo.readthedocs.io/"
arch="all"
+options="!check" # Test suite requires unpackaged py3-flake8.
license="MIT AND (LGPL-2.1-only OR MPL-1.1)"
depends=""
+checkdepends="py3-pytest"
makedepends="python3-dev cairo-dev meson"
subpackages="$pkgname-dev"
-source="https://files.pythonhosted.org/packages/source/p/pycairo/pycairo-$pkgver.tar.gz
- meson-idiocy.patch
- "
+source="https://files.pythonhosted.org/packages/source/p/pycairo/pycairo-$pkgver.tar.gz"
builddir="$srcdir/pycairo-$pkgver"
build() {
- cd "$builddir"
meson \
--prefix=/usr \
--sysconfdir=/etc \
@@ -28,13 +27,11 @@ build() {
}
check() {
- cd "$builddir"
+ ninja -C output test
}
package() {
- cd "$builddir"
DESTDIR="$pkgdir" ninja -C output install
}
-sha512sums="29af1eff8fc3ca942c6d7fcda8e5e004f01d1bfdab911f4ebb34213520922cf35c12d07bd18fe74a2c6d3c7f5a1aefd7fb5fe9b7cd310e6707b7451d5d5e18b0 pycairo-1.18.0.tar.gz
-33d400b1c27c549f0962d08e50ca4a6614e714896f5cca76128f8b4d3aac4c07b50bab03ee611de2e17d4c0001bbe3f4f02137e8988b040e9deea911607ad917 meson-idiocy.patch"
+sha512sums="5313f0d408a6e6ce6e70ac92291be5dd8651e01fbf9411d0467061afa21849cde27db273f2a13b4c3c931183f63f75f31fc0f0d3283b8f339ba88e71eab432f1 pycairo-1.26.0.tar.gz"
diff --git a/user/py3-pycairo/meson-idiocy.patch b/user/py3-pycairo/meson-idiocy.patch
deleted file mode 100644
index 99ed7d71c..000000000
--- a/user/py3-pycairo/meson-idiocy.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 878932bf9c1545d659822961459a2601287b1675 Mon Sep 17 00:00:00 2001
-From: Christoph Reiter <reiter.christoph@gmail.com>
-Date: Sat, 23 Mar 2019 22:26:01 +0100
-Subject: [PATCH] meson: fix configure error with meson 0.50 re absolute paths.
- Fixes #144
-
-The newest meson version has started to fail:
-meson.build:62:0: ERROR: Subdir keyword must not be an absolute path.
-
-Fix by using install_dir instead of subdir.
----
- cairo/meson.build | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/cairo/meson.build b/cairo/meson.build
-index 6a1bde3..3e3b2cc 100644
---- a/cairo/meson.build
-+++ b/cairo/meson.build
-@@ -61,7 +61,7 @@ header_file = configure_file(
-
- install_headers(
- [header_file],
-- subdir: join_paths(python.get_install_dir(), 'cairo', 'include'),
-+ install_dir: join_paths(python.get_install_dir(), 'cairo', 'include'),
- )
- install_headers([header_file], subdir: 'pycairo')
-
diff --git a/user/py3-pycotap/APKBUILD b/user/py3-pycotap/APKBUILD
index a2731dc39..1a1ced5c9 100644
--- a/user/py3-pycotap/APKBUILD
+++ b/user/py3-pycotap/APKBUILD
@@ -15,17 +15,14 @@ source="https://files.pythonhosted.org/packages/a1/99/f1dfa70ffe1140f701ba979763
builddir="$srcdir/$_pipname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py check
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
diff --git a/user/py3-pygments/APKBUILD b/user/py3-pygments/APKBUILD
index 59055ed48..da51a4136 100644
--- a/user/py3-pygments/APKBUILD
+++ b/user/py3-pygments/APKBUILD
@@ -1,41 +1,40 @@
# Contributor: Peter Bui <pnutzh4x0r@gmail.com>
# Contributor: Matt Smith <mcs@darkregion.net>
-# Maintainer: zlg <zlg+packages@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-pygments
_pkgname=Pygments
-pkgver=2.2.0
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=2.6.1
pkgrel=0
-pkgdesc="A syntax highlighting package written in Python."
-url="http://pygments.org/"
+pkgdesc="A syntax highlighting package written in Python"
+url="https://pygments.org/"
arch="noarch"
options="!check" # needs nose, flake8
license="BSD-2-Clause"
depends="python3"
makedepends="python3-dev"
subpackages=""
-source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
# Reactivate once nose and flake8 are packaged
check() {
- cd "$builddir"
sed -i -e 's:python:python3:' Makefile
make test
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
doc() {
- cd "$builddir"
install -m 644 -D doc/pygmentize.1 "$pkgdir"/usr/share/man/man1/pygmentize.1
}
-sha512sums="cc0a4f73e19fa6cbf46314de2e809460c807c631e39ba05cbe5edb5f40db1a687aafcd9715585a0ed45f791710eb6038305e273f282f8682df76f30e63710b29 Pygments-2.2.0.tar.gz"
+sha512sums="0d793bb6eabe43645541347e44932ee50ccd4309f40e7a327422bcbe57d40a7cb8bbf2fb0911744ed6f316c6c08f4216462be88d79192a2ea004d6da51329932 Pygments-2.6.1.tar.gz"
diff --git a/user/py3-pygobject/APKBUILD b/user/py3-pygobject/APKBUILD
index 33b068899..309e024d1 100644
--- a/user/py3-pygobject/APKBUILD
+++ b/user/py3-pygobject/APKBUILD
@@ -1,31 +1,28 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=py3-pygobject
-pkgver=3.32.0
+pkgver=3.46.0
pkgrel=0
pkgdesc="Python bindings for GObject libraries"
-url="https://pygobject.readthedocs.io/"
+url="https://wiki.gnome.org/Projects/PyGObject"
arch="all"
license="LGPL-2.1+ AND LGPL-2.1-only"
depends="py3-pycairo"
makedepends="python3-dev gobject-introspection-dev py3-pycairo-dev"
subpackages="$pkgname-dev"
-source="https://gitlab.gnome.org/GNOME/pygobject/-/archive/$pkgver/pygobject-$pkgver.tar.bz2"
+source="https://ftp.gnome.org/pub/GNOME/sources/pygobject/${pkgver%.*}/pygobject-$pkgver.tar.xz"
builddir="$srcdir/pygobject-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py check
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="c231c8aa19657a3d2eed7f3c707cfb8c55d37dc828d8046a66e0d8c91b98291ee786115bb29f37cf78c9191e2b640828a72940fad1a27989e6e7ef04d508f379 pygobject-3.32.0.tar.bz2"
+sha512sums="48293c193ba5aece38d99f45d325d0329ac33e88442bf00848fe818a7c838977b8d2cf50a404c30e8852ccc0b4a44dfda07751d51acc21f740aa2ab6aa3ce661 pygobject-3.46.0.tar.xz"
diff --git a/user/py3-pyirc/APKBUILD b/user/py3-pyirc/APKBUILD
new file mode 100644
index 000000000..25d340f7b
--- /dev/null
+++ b/user/py3-pyirc/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Max Rees <maxcrees@me.com>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=py3-pyirc
+_pkgname=PyIRC
+reporev="e327ef9a8e7801ab9a418b10fe3c3df6738e4ea7"
+verbase=3.0b1
+pkgver=${verbase}_git20190929
+pkgrel=0
+pkgdesc="An extensible and easy-to-use IRC library for Python"
+url="https://foxkit-us.github.io/PyIRC/"
+arch="noarch"
+license="WTFPL OR LPRAB"
+depends="python3 py3-taillight"
+makedepends=""
+giturl="https://code.foxkit.us/IRC/PyIRC"
+source="https://dev.sick.bike/dist/$pkgname-$pkgver.tar.gz
+ new-taillight.patch
+ "
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ python3 -m unittest discover -s tests
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="0198aeae59e37f3bd94f96bedc294006049794dc208d6a7d18a0e07095d36fa921af08fb8a50be91022305a01304bb6202eb464b8861e595c71c5cf14f7c7850 py3-pyirc-3.0b1_git20190929.tar.gz
+249c99ff2f4194bc431429fbca92eb473e7f54c0a49a5ebfb5778494332eb6b94378e727e31b112a4d2fcabcbf5d8d5ca95fe48777ea56afba4c2285fab7e5ca new-taillight.patch"
diff --git a/user/py3-pyirc/new-taillight.patch b/user/py3-pyirc/new-taillight.patch
new file mode 100644
index 000000000..51ca7f8e0
--- /dev/null
+++ b/user/py3-pyirc/new-taillight.patch
@@ -0,0 +1,21 @@
+Update priority enum for Taillight >= 0.4.
+
+--- py3-pyirc-3.0b1_git20190929/PyIRC/signal.py.old 2019-09-29 17:01:50.000000000 +0000
++++ py3-pyirc-3.0b1_git20190929/PyIRC/signal.py 2022-12-04 00:44:03.697227554 +0000
+@@ -12,14 +12,14 @@
+ from inspect import getmembers
+ from logging import getLogger
+
+-from taillight.signal import UnsharedSignal
++from taillight.signal import SignalPriority, UnsharedSignal
+ from taillight import ANY
+
+
+ _logger = getLogger(__name__) # pylint: disable=invalid-name
+
+
+-def event(hclass, event_name, priority=UnsharedSignal.PRIORITY_NORMAL,
++def event(hclass, event_name, priority=SignalPriority.PRIORITY_NORMAL,
+ listener=ANY):
+ """Tag a function as an event for later binding.
+
diff --git a/user/py3-pynacl/APKBUILD b/user/py3-pynacl/APKBUILD
new file mode 100644
index 000000000..5374d7d58
--- /dev/null
+++ b/user/py3-pynacl/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-pynacl
+_pkgname=PyNaCl
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=1.4.0
+pkgrel=0
+pkgdesc="Python binding to the Networking and Cryptography library (NaCl)"
+url="https://pypi.org/project/PyNaCl/"
+arch="all"
+license="Apache-2.0"
+depends="python3 py3-cffi"
+checkdepends="py3-six py3-hypothesis py3-pytest"
+makedepends="python3-dev libsodium-dev"
+subpackages=""
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/PyNaCl-$pkgver"
+
+build() {
+ SODIUM_INSTALL=system python3 setup.py build
+}
+
+check() {
+ python3 setup.py test
+}
+
+package() {
+ SODIUM_INSTALL=system python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="355b974010f94d551f631a2dd5ae792da3d4d0abf8ed70b6decc78aad24a9f965636988aebd14947b137ea14cdcbb73531775f08b1b4d5a9d72b5df3dba0b022 PyNaCl-1.4.0.tar.gz"
diff --git a/user/py3-pyparsing/APKBUILD b/user/py3-pyparsing/APKBUILD
index f84545871..41331a9ff 100644
--- a/user/py3-pyparsing/APKBUILD
+++ b/user/py3-pyparsing/APKBUILD
@@ -2,7 +2,9 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-pyparsing
_pkgname=pyparsing
-pkgver=2.3.1
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=2.4.7
pkgrel=0
pkgdesc="Python parsing module"
url="https://pypi.python.org/pypi/pyparsing"
@@ -12,23 +14,20 @@ license="MIT"
depends="python3"
makedepends="python3-dev"
checkdepends="py3-pytest"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py test
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="fc8342780c38fd08c07d0b885c4d6c77d59f38098aa13c3abd05a790ee6caf2065a0bdab33bc290a6e2da123f4ac7e38c049e389b740546499dc48eba7ae431f py3-pyparsing-2.3.1.tar.gz"
+sha512sums="0b9f8f18907f65cb3af1b48ed57989e183f28d71646f2b2f820e772476f596ca15ee1a689f3042f18458206457f4683d10daa6e73dfd3ae82d5e4405882f9dd2 py3-pyparsing-2.4.7.tar.gz"
diff --git a/user/py3-pysocks/APKBUILD b/user/py3-pysocks/APKBUILD
index 131e9e353..aaefdb947 100644
--- a/user/py3-pysocks/APKBUILD
+++ b/user/py3-pysocks/APKBUILD
@@ -1,8 +1,11 @@
# Contributor: zlg <zlg+adelie@zlg.space>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-pysocks
_pkgname=PySocks
-pkgver=1.6.8
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=1.7.1
pkgrel=0
pkgdesc="SOCKS client module for Python"
url="https://github.com/Anorov/PySocks"
@@ -13,17 +16,15 @@ depends="python3"
makedepends="python3-dev py3-atomicwrites py3-attrs py3-more-itertools
py3-pluggy py3-py py3-pytest"
subpackages=""
-source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/PySocks-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="9b544cf11464142a5f347cd5688b48422249363a425ccf3887117152f2f1969713674c4bba714242432ae85f3d62e03edeb9cb7b73ebd225ed3b47b3da6896d5 PySocks-1.6.8.tar.gz"
+sha512sums="cef4a5ce8c67fb485644696a23bf68a721db47f3211212de2d4431eaf9ebd26077dd5a06f6dfa7fde2dcb9d7c1ed551facd014e999929cb4d7b504972c464016 PySocks-1.7.1.tar.gz"
diff --git a/user/py3-pytest-expect/APKBUILD b/user/py3-pytest-expect/APKBUILD
index a8fcfadcf..2b82dc863 100644
--- a/user/py3-pytest-expect/APKBUILD
+++ b/user/py3-pytest-expect/APKBUILD
@@ -2,6 +2,8 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-pytest-expect
_pkgname=pytest-expect
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
pkgver=1.1.0
pkgrel=0
pkgdesc="py.test plugin to store test expectations and mark tests based on them"
@@ -10,24 +12,20 @@ arch="noarch"
license="MIT"
depends="python3 py3-pytest py3-u-msgpack-python"
makedepends="python3-dev"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
# No tests available
python3 setup.py test
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
-
}
sha512sums="41d2b296844e9dab9429f34eec37fe106a4e6c2039824c37067ed048dcc328b13e666b22d3482ccfc6153af4e44b5d895f3011ec45df55ffa07a98459e3caefd py3-pytest-expect-1.1.0.tar.gz"
diff --git a/user/py3-pytest-relaxed/APKBUILD b/user/py3-pytest-relaxed/APKBUILD
new file mode 100644
index 000000000..9f280b080
--- /dev/null
+++ b/user/py3-pytest-relaxed/APKBUILD
@@ -0,0 +1,32 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-pytest-relaxed
+_pkgname=pytest-relaxed
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=1.1.5
+pkgrel=0
+pkgdesc="Relaxed test discovery for pytest"
+url="https://pytest-relaxed.readthedocs.io/en/latest/"
+arch="noarch"
+options="!check" # of course a test lib fails its own tests.
+license="BSD-2-Clause"
+depends="python3 py3-pytest py3-six py3-decorator"
+makedepends=""
+subpackages=""
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/pytest-relaxed-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ PYTHONPATH=. pytest
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="c4eb981e8969ec9e85c5f390227b5ee2e1c88da6bb331ac4ce7b97b0e0fc435a388f592439281e60d41be9e2858601bee11b527f5c29e496445f7d072e14eaad pytest-relaxed-1.1.5.tar.gz"
diff --git a/user/py3-pytest/APKBUILD b/user/py3-pytest/APKBUILD
index 6965bf73a..a96f40e3c 100644
--- a/user/py3-pytest/APKBUILD
+++ b/user/py3-pytest/APKBUILD
@@ -2,37 +2,33 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=py3-pytest
_pkgname=pytest
-pkgver=3.9.1
-pkgrel=0
-pkgdesc="A python test library"
+pkgver=6.2.5
+pkgrel=1
+pkgdesc="Python test library"
url="https://pypi.python.org/pypi/pytest"
arch="noarch"
-options="!checkroot !check" # Cyclic dependency with itself. Passes on x86_64
+options="!check" # Cyclic dependency with itself. Passes on x86_64
# Certified net clean
license="MIT"
-depends="python3 py3-atomicwrites py3-attrs py3-more-itertools
- py3-pluggy py3-py py3-six"
+depends="python3 py3-atomicwrites py3-attrs py3-iniconfig py3-more-itertools
+ py3-packaging py3-pluggy py3-py py3-six py3-wcwidth"
makedepends="python3-dev"
-#checkdepends="py3-pytest py3-hypothesis"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/p/$_pkgname/$_pkgname-$pkgver.tar.gz
- scm.patch"
+checkdepends="py3-pytest py3-hypothesis"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
+ rm -f testing/test_junitxml.py
# You would think you could get away with "python3 -m pytest" but no...
PYTHONPATH="$builddir/build/lib:$PYTHONPATH" pytest
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="0a3a6842fb549c8223f0ddf56ca28eb200a21a4cadf382fbcd2ab930c58d57c55c77d5869e84bd79bf611d959cba6d363ace3b5fd33d5ce44259fd580b1a9369 py3-pytest-3.9.1.tar.gz
-7fc2cd75f55caa661fb4bed578955511ee38cd28a25fcb405c29eb7227a382c33c0fc52a4eeb8950315793dfc0eb02235b140415deebd113f24df1a320b25959 scm.patch"
+sha512sums="7624563a9d967da4cbf82cfff90bae8c0cca07b32e291dc7c5efa787725ed1a255edd066bf0d5fbd89b8cbed8cf5b619fe7c7017f44a7f8a014e3310c06bdbf9 py3-pytest-6.2.5.tar.gz"
diff --git a/user/py3-pytest/scm.patch b/user/py3-pytest/scm.patch
deleted file mode 100644
index 799eefac0..000000000
--- a/user/py3-pytest/scm.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- pytest-3.9.1/setup.py 2018-10-16 15:46:37.000000000 -0400
-+++ pytest-3.9.1/setup.py 2018-10-22 19:32:49.261592294 -0400
-@@ -25,8 +25,8 @@ if "_PYTEST_SETUP_SKIP_PLUGGY_DEP" not i
-
- def main():
- setup(
-- use_scm_version={"write_to": "src/_pytest/_version.py"},
-- setup_requires=["setuptools-scm", "setuptools>=30.3"],
-+ setup_requires=["setuptools>=30.3"],
-+ version="3.9.1",
- package_dir={"": "src"},
- install_requires=INSTALL_REQUIRES,
- )
diff --git a/user/py3-python-dateutil/APKBUILD b/user/py3-python-dateutil/APKBUILD
index 0e47c9ce1..d9158cac0 100644
--- a/user/py3-python-dateutil/APKBUILD
+++ b/user/py3-python-dateutil/APKBUILD
@@ -2,32 +2,34 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-python-dateutil
_pkgname=python-dateutil
-pkgver=2.8.0
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=2.8.2
pkgrel=0
pkgdesc="Extensions to the standard Python datetime module"
url="https://pypi.python.org/pypi/python-dateutil"
arch="noarch"
+options="!check" # conflict
license="Apache-2.0 AND BSD-3-Clause"
depends="python3"
-makedepends="python3-dev"
-checkdepends="py3-pytest py3-hypothesis py3-freezegun"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+makedepends="python3-dev py3-iniconfig py3-toml"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
- pytest
+ # Required with PyTest >=4.8, see:
+ # https://bugzilla.redhat.com/show_bug.cgi?id=1734775
+ # https://github.com/pytest-dev/pytest/issues/5678
+ pytest -W ignore::pytest.PytestUnknownMarkWarning
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="ec7da86203572582f883a4686acf8a732a2de4f396d809057eb51b2c60dbca5623a7fa90c2c0618c281a2282c60841739bd837731a51cc876f4ff369297f2f81 py3-python-dateutil-2.8.0.tar.gz"
+sha512sums="6538858e4a3e2d1de1bf25b6d8b25e3a8d20bf60fb85e32d07ac491c90ce193e268bb5641371b8a79fb0f033a184bac9896b3bc643c1aca9ee9c6478286ac20c py3-python-dateutil-2.8.2.tar.gz"
diff --git a/user/py3-pyyaml/APKBUILD b/user/py3-pyyaml/APKBUILD
index 6dece19c3..afbf6f336 100644
--- a/user/py3-pyyaml/APKBUILD
+++ b/user/py3-pyyaml/APKBUILD
@@ -1,12 +1,13 @@
# Contributor: zlg <zlg+adelie@zlg.space>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-pyyaml
_pkgname=pyyaml
-pkgver=5.1
+pkgver=5.3.1
pkgrel=0
pkgdesc="YAML parser and emitter for Python"
url="https://pyyaml.org/wiki/PyYAML"
arch="noarch"
+# Certified net clean
license="MIT"
depends="python3 yaml"
makedepends="python3-dev yaml yaml-dev"
@@ -14,21 +15,22 @@ subpackages=""
source="$pkgname-$pkgver.tar.gz::https://github.com/yaml/$_pkgname/archive/$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
+# secfixes:
+# 5.3.1-r0:
+# - CVE-2020-1747
+
build() {
- cd "$builddir"
# Seems like they need Cython to build the C extension now, so it falls back to pure Python.
# Once we ship Cython we can probably change this.
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py test
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="e49f593b9f60018efa19629b902ad1e56f79537106a4cd019baa324a74a8af7563d294db012280261fc7fa9d686dd5af656e22fb4bf6a6ccfd0084515b9591d5 py3-pyyaml-5.1.tar.gz"
+sha512sums="27d97e8493c7660c7c0c471e20a8aa46c85431e4559a98bcbdafc2bd89a67fd04c6f2090e54ff6b206c868b33635ef8be68070a4c25d17a25c97fd5ad3549556 py3-pyyaml-5.3.1.tar.gz"
diff --git a/user/py3-random2/APKBUILD b/user/py3-random2/APKBUILD
index 9293281ed..776c0889d 100644
--- a/user/py3-random2/APKBUILD
+++ b/user/py3-random2/APKBUILD
@@ -2,30 +2,37 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=py3-random2
_pkgname=random2
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
pkgver=1.0.1
-pkgrel=0
+pkgrel=1
pkgdesc="A Python module implementing Python 2's RNG"
-url="https://pypi.python.org/pypi/random2"
+url="https://pypi.org/project/random2/"
arch="noarch"
license="Python-2.0"
depends="python3"
makedepends="python3-dev"
-install=""
-source="$pkgname-$pkgver.zip::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.zip"
+source="$pkgname-$pkgver.zip::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.zip"
builddir="$srcdir/$_pkgname-$pkgver"
+prepare() {
+ default_prepare
+
+ # Remove a test that is invalid as of python 3.9
+ # Taken from Fedora .spec
+ # https://src.fedoraproject.org/rpms/python-random2/blob/rawhide/f/python-random2.spec
+ sed -i '/self\.gen\.getrandbits, 0/d' src/tests.py
+}
+
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
PYTHONPATH="build/lib" python3 setup.py test
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
diff --git a/user/py3-recommonmark/APKBUILD b/user/py3-recommonmark/APKBUILD
index 2b0d6db68..2286dc298 100644
--- a/user/py3-recommonmark/APKBUILD
+++ b/user/py3-recommonmark/APKBUILD
@@ -2,7 +2,9 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=py3-recommonmark
_pkgname=recommonmark
-pkgver=0.5.0
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=0.6.0
pkgrel=0
pkgdesc="Bridge between CommonMark and docutils"
url="https://pypi.org/project/recommonmark/"
@@ -13,7 +15,7 @@ depends="python3 py3-commonmark py3-docutils py3-sphinx"
checkdepends="py3-future"
makedepends=""
subpackages=""
-source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
@@ -28,4 +30,4 @@ package() {
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="581b3492e082ab4f0a53e50df0c9cfa3badda7ba9ee28dadbea85c55de96304257790e6aa06ebc793fba1d9ac399ce470fe821492106150b3a0db10dc734ee4b recommonmark-0.5.0.tar.gz"
+sha512sums="f94f1ee426015478a95c2ed4b6ea87a75012447ae65d6623445f923d9d616b34efb055bcfde157862fcce38749c827905b839194fa1af3a1fe1cb7e11f18835a recommonmark-0.6.0.tar.gz"
diff --git a/user/py3-requests-toolbelt/APKBUILD b/user/py3-requests-toolbelt/APKBUILD
index eeef959c8..8ecddaa88 100644
--- a/user/py3-requests-toolbelt/APKBUILD
+++ b/user/py3-requests-toolbelt/APKBUILD
@@ -1,5 +1,6 @@
# Contributor: Roberto Oliveira <robertoguimaraes8@gmail.com>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-requests-toolbelt
_pkgname=${pkgname##*-}
pkgver=0.9.1
@@ -7,7 +8,7 @@ pkgrel=0
pkgdesc="Useful classes and functions to be used with python-requests"
url="https://github.com/requests/toolbelt"
arch="noarch"
-options="!check" # needs betamax
+options="!check" # Needs betamax
license="Apache-2.0"
depends="python3"
makedepends="python3-dev"
@@ -16,13 +17,11 @@ source="$pkgname-$pkgver.tar.gz::https://github.com/requests/$_pkgname/archive/$
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
package() {
mkdir -p "$pkgdir"
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
diff --git a/user/py3-requests/APKBUILD b/user/py3-requests/APKBUILD
index 1746a8256..2638dbc67 100644
--- a/user/py3-requests/APKBUILD
+++ b/user/py3-requests/APKBUILD
@@ -1,30 +1,30 @@
# Contributor: Peter Bui <pnutzh4x0r@gmail.com>
-# Contributor: William Pitcock <nenolod@dereferenced.org>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-requests
_pkgname=${pkgname#py3-}
-pkgver=2.21.0
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=2.22.0
pkgrel=0
pkgdesc="A HTTP request library for Python"
-url="http://www.python-requests.org/"
+url="https://2.python-requests.org/"
arch="noarch"
license="Apache-2.0"
options="!check" # tests connect to remote sites
depends="python3 py3-chardet py3-idna py3-certifi py3-urllib3"
makedepends="python3-dev"
subpackages=""
-source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
package() {
- mkdir -p "$pkgdir"
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="385e1d80993a21c09e7c4682500ca8c24155962ba41ecd8e73612722b2ff6618b736e827fc48ad1683b0d2bc7a420cfe680f5107860aca52656ef777f1d60104 requests-2.21.0.tar.gz"
+sha512sums="8b8e9da8a0c816fb4ff39be89ac7e1a9d5a99503ed93e44a0d78b28818f1c0eb253b151972a144151a616ba1b4bc5595245458a8268c5161391db54f740ac9a5 requests-2.22.0.tar.gz"
diff --git a/user/py3-rfc3339/APKBUILD b/user/py3-rfc3339/APKBUILD
index 928996f5e..5af94e017 100644
--- a/user/py3-rfc3339/APKBUILD
+++ b/user/py3-rfc3339/APKBUILD
@@ -1,8 +1,11 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Contributor: Roberto Oliveira <robertoguimaraes8@gmail.com>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-rfc3339
_pkgname=pyRFC3339
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
pkgver=1.1
pkgrel=0
pkgdesc="Generate and parse RFC 3339 timestamps"
@@ -13,17 +16,15 @@ license="MIT"
depends="python3 py3-tz"
makedepends="python3-dev"
subpackages=""
-source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
package() {
mkdir -p "$pkgdir"
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
diff --git a/user/py3-roman/APKBUILD b/user/py3-roman/APKBUILD
index 0105c986a..899f7e622 100644
--- a/user/py3-roman/APKBUILD
+++ b/user/py3-roman/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=py3-roman
_pkgname=roman
-pkgver=3.0
+pkgver=3.3
pkgrel=0
pkgdesc="Python library to convert integers to Roman numerals"
url="https://pypi.org/project/roman/"
@@ -15,19 +15,16 @@ source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
# Do not bootstrap - tries to access web
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py test
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="468a4ac7188cdf3155698f260de5ecc5bb2072c120c79d046618ac07b6de6f777cfc69661f2e0df4ca66359bb20169d22599b3f342edaa48f8575bdc17b40c08 py3-roman-3.0.tar.gz"
+sha512sums="8d2952640519052ce629a3881cb871448fc7921eb5f45525305c43ef9fb2672062d0ca96ab16d7aaa95f5eebcad028fdcf519f224f3631734fbb6a4a314f3a49 py3-roman-3.3.tar.gz"
diff --git a/user/py3-six/APKBUILD b/user/py3-six/APKBUILD
index 94ece5835..382546a1c 100644
--- a/user/py3-six/APKBUILD
+++ b/user/py3-six/APKBUILD
@@ -1,4 +1,4 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Maintainer:
pkgname=py3-six
_pkgname=six
@@ -10,23 +10,20 @@ arch="noarch"
options="!check" # Circular dependency with py3-pytest
license="MIT"
depends=""
-makedepends="python3-dev"
#checkdepends="py3-pluggy py3-pytest"
+makedepends="python3-dev"
source="$pkgname-$pkgver.tar.gz::https://github.com/benjaminp/$_pkgname/archive/$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py test
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
diff --git a/user/py3-smartypants/APKBUILD b/user/py3-smartypants/APKBUILD
new file mode 100644
index 000000000..b6943bb9a
--- /dev/null
+++ b/user/py3-smartypants/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-smartypants
+_pkgname=smartypants.py
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=2.0.1
+pkgrel=0
+pkgdesc="Python module for translating ASCII punctuation into HTML entities"
+url="https://pypi.org/project/smartypants/"
+arch="noarch"
+license="BSD-3-Clause AND BSD-2-Clause"
+depends="python3"
+checkdepends="py3-docutils py3-pygments"
+makedepends=""
+subpackages=""
+source="$pkgname-$pkgver.tar.gz::https://github.com/leohemsted/smartypants.py/archive/refs/tags/v$pkgver.tar.gz
+ hashbang.patch
+ "
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ PYTHONPATH=. python3 setup.py test
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="d47a866a5478c3520251f87a93a468a5eea10318b24b2e8d4bc918d533b5a5789aa56d3a8d5fb8ccff9572fb63e5b6f2eafc44f93fb57a19e6621ebef5d64d9d py3-smartypants-2.0.1.tar.gz
+9e0ee42854b7ed0eeed8f0ac6969a93f7aec593bad416ca4f11f1d8a85bcc9ae9907fab98274720ddc7f927ea9a2ab9f4267afba04498670746ca41a4c316d15 hashbang.patch"
diff --git a/user/py3-smartypants/hashbang.patch b/user/py3-smartypants/hashbang.patch
new file mode 100644
index 000000000..420f37f3c
--- /dev/null
+++ b/user/py3-smartypants/hashbang.patch
@@ -0,0 +1,8 @@
+--- smartypants.py-2.0.1/smartypants.old 2017-12-20 08:34:50.000000000 -0600
++++ smartypants.py-2.0.1/smartypants 2022-07-02 21:33:28.758176655 -0500
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+ # Copyright (c) 2017 Leo Hemsted
+ # Licensed under the BSD License, for detailed license information, see COPYING
+
diff --git a/user/py3-snowballstemmer/APKBUILD b/user/py3-snowballstemmer/APKBUILD
index 5e24c7788..e85a50f1c 100644
--- a/user/py3-snowballstemmer/APKBUILD
+++ b/user/py3-snowballstemmer/APKBUILD
@@ -2,7 +2,9 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-snowballstemmer
_pkgname=snowballstemmer
-pkgver=1.2.1
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=1.9.0
pkgrel=0
pkgdesc="This package provides 16 stemmer algorithms (15 + Poerter English stemmer) generated from Snowball algorithms."
url="https://pypi.python.org/pypi/snowballstemmer"
@@ -11,23 +13,20 @@ options="!check" # Test script nowhere to be found
license="BSD-2-Clause"
depends="python3"
makedepends="python3-dev"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py test
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="09f860f383d84d12a83c87ef6654fba4ac10bca07e8d2ce88dd428c72754110d56a4b698e125a18818699a289455bf61cf67ea68e349ee8a12d6dfff0a3fbed9 py3-snowballstemmer-1.2.1.tar.gz"
+sha512sums="7af4963ffb88477f64bd477bf4ea958cf9b7613393f01ea873f4a8e1891d1f331c288e59632b271dd5b53b604c8291780990600ccf22aed1d2151809cd8608df py3-snowballstemmer-1.9.0.tar.gz"
diff --git a/user/py3-sortedcontainers/APKBUILD b/user/py3-sortedcontainers/APKBUILD
new file mode 100644
index 000000000..77f96e8fa
--- /dev/null
+++ b/user/py3-sortedcontainers/APKBUILD
@@ -0,0 +1,30 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Contributor: André Klitzing <aklitzing@gmail.com>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-sortedcontainers
+_pkgname=sortedcontainers
+pkgver=2.4.0
+pkgrel=0
+pkgdesc="Python library for sorting collections and containers"
+url="http://www.grantjenks.com/docs/sortedcontainers"
+arch="noarch"
+options="!check" # No tests included.
+license="Apache-2.0"
+depends="python3"
+checkdepends="py3-pytest"
+makedepends="py3-iniconfig"
+source="https://files.pythonhosted.org/packages/source/s/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ PYTHONPATH="$PWD"/build/lib python3 -m pytest
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir" --skip-build
+}
+sha512sums="4c01522bc01367a27bb005f16a487c127459f949f3d9fa7094e559993ceb074b3f84dda167f300778f46bdc15669f05866b6117ff6c369ca9a561ae20ab7c53f sortedcontainers-2.4.0.tar.gz"
diff --git a/user/py3-sphinx-rtd-theme/APKBUILD b/user/py3-sphinx-rtd-theme/APKBUILD
index 58f55ff89..c21c16f88 100644
--- a/user/py3-sphinx-rtd-theme/APKBUILD
+++ b/user/py3-sphinx-rtd-theme/APKBUILD
@@ -8,7 +8,7 @@ pkgdesc="Sphinx documentation theme: Read the Docs"
url="https://pypi.org/project/sphinx-rtd-theme/"
arch="noarch"
license="MIT"
-depends="python3 py3-sphinx"
+depends="python3 py3-sphinx py3-iniconfig"
checkdepends="py3-pytest"
makedepends=""
subpackages=""
diff --git a/user/py3-sphinx/APKBUILD b/user/py3-sphinx/APKBUILD
index 8fe5a9944..d42d67825 100644
--- a/user/py3-sphinx/APKBUILD
+++ b/user/py3-sphinx/APKBUILD
@@ -2,8 +2,10 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-sphinx
_pkgname=Sphinx
-pkgver=2.0.0
-pkgrel=1
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=2.1.2
+pkgrel=0
pkgdesc="Sphinx Python Documentation Generator"
url="https://pypi.python.org/pypi/Sphinx"
arch="noarch"
@@ -11,30 +13,25 @@ options="!check" # Some latex tests failing on 2.0.0 due to translation bug, see
# Main software is BSD-2-Clause.
license="BSD-2-Clause AND BSD-3-Clause AND MIT"
depends="python3 py3-alabaster py3-babel py3-pygments py3-docutils py3-imagesize py3-jinja2 py3-packaging py3-pyparsing py3-requests py3-snowballstemmer py3-tz py3-sphinxcontrib-applehelp py3-sphinxcontrib-devhelp py3-sphinxcontrib-htmlhelp py3-sphinxcontrib-jsmath py3-sphinxcontrib-qthelp py3-sphinxcontrib-serializinghtml imagemagick"
-makedepends="python3-dev"
checkdepends="py3-pytest py3-docutils py3-html5lib"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+makedepends="python3-dev"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
# settings borrowed from tox.ini.
PYTHONPATH="build/lib:$PYTHONPATH" PYTHONWARNINGS="all,ignore::ImportWarning:pkgutil,ignore::ImportWarning:importlib._bootstrap,ignore::ImportWarning:importlib._bootstrap_external,ignore::ImportWarning:pytest_cov.plugin,ignore::DeprecationWarning:site,ignore::DeprecationWarning:_pytest.assertion.rewrite,ignore::DeprecationWarning:_pytest.fixtures,ignore::DeprecationWarning:distutils" pytest --durations 25
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
doc() {
- cd "$builddir"
-
local docdir="$subpkgdir/usr/share/doc/$pkgname"
mkdir -p "$docdir"
cp -R docs/* "$docdir"
@@ -46,4 +43,4 @@ doc() {
cp licenses/* "$licdir"
}
-sha512sums="283e18514262366e0aebc23f1e48ce7fa3591e48572525c832f96ec4f943463e19904c67ab06a4b3244119750c63dc496d4a4142e1e4a55e0b4ebdc748cf6aa6 py3-sphinx-2.0.0.tar.gz"
+sha512sums="22696cd143b75c497c36e08b81b10981e80ad10a4f9f42a29165bfed18bacbc33dc2f477926fe795faf9918dce9d283cd1acf03f7289bd50fa93a86e7979d9f1 py3-sphinx-2.1.2.tar.gz"
diff --git a/user/py3-sphinxcontrib-applehelp/APKBUILD b/user/py3-sphinxcontrib-applehelp/APKBUILD
index 20e2a4430..d22b3c48a 100644
--- a/user/py3-sphinxcontrib-applehelp/APKBUILD
+++ b/user/py3-sphinxcontrib-applehelp/APKBUILD
@@ -2,7 +2,9 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-sphinxcontrib-applehelp
_pkgname=sphinxcontrib-applehelp
-pkgver=1.0.1
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=1.0.2
pkgrel=0
pkgdesc="A Sphinx extension to output Apple help books"
url="https://pypi.python.org/pypi/sphinxcontrib-applehelp"
@@ -10,25 +12,22 @@ arch="noarch"
options="!check" # Cyclic dependency with sphinx
license="BSD-2-Clause"
depends="python3"
-makedepends="python3-dev"
checkdepends="py3-sphinx py3-pytest"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+makedepends="python3-dev"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
PYTHONWARNINGS="all,ignore::DeprecationWarning:docutils.io" pytest --durations 25
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="a6500bc2899f25c0b04c8649e86a6f688823e573a3f58f2b786117768e8b415acffbe79b99cff8aeb6ae3c74dd244254de120b82b7432cf61c5fabdd38f21603 py3-sphinxcontrib-applehelp-1.0.1.tar.gz"
+sha512sums="1325ac83ff15dd28d6f2791caf64e6c08d1dd2f0946dc8891f5c4d8fd062a1e8650c9c39a7459195ef41f3b425f5b8d6c5e277ea85621a36dd870ca5162508da py3-sphinxcontrib-applehelp-1.0.2.tar.gz"
diff --git a/user/py3-sphinxcontrib-asyncio/APKBUILD b/user/py3-sphinxcontrib-asyncio/APKBUILD
new file mode 100644
index 000000000..8723f312c
--- /dev/null
+++ b/user/py3-sphinxcontrib-asyncio/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-sphinxcontrib-asyncio
+_pkgname=${pkgname#py3-}
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=0.2.0
+pkgrel=0
+pkgdesc="Sphinx extension for using asyncio coroutines in markup"
+url="https://pypi.org/project/sphinxcontrib-asyncio/"
+arch="noarch"
+options="!check" # Tests not included in tarball.
+license="Apache-2.0"
+depends="python3"
+checkdepends="py3-pytest"
+makedepends="python3-dev"
+subpackages=""
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ python3 setup.py test
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="2ca25717c03385ae9bf879b8efeab8d508292d07f96d941032720d755d3db2e7bbc3c9a33c6103af9d83849ed8878bea1048d349bd0873288ee2addfee9756b7 sphinxcontrib-asyncio-0.2.0.tar.gz"
diff --git a/user/py3-sphinxcontrib-devhelp/APKBUILD b/user/py3-sphinxcontrib-devhelp/APKBUILD
index 01bfdf037..aa36c4377 100644
--- a/user/py3-sphinxcontrib-devhelp/APKBUILD
+++ b/user/py3-sphinxcontrib-devhelp/APKBUILD
@@ -2,7 +2,9 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-sphinxcontrib-devhelp
_pkgname=sphinxcontrib-devhelp
-pkgver=1.0.1
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=1.0.2
pkgrel=0
pkgdesc="A sphinx extension to output Devhelp documents"
url="https://pypi.python.org/pypi/sphinxcontrib-devhelp"
@@ -10,25 +12,22 @@ arch="noarch"
options="!check" # Cyclic dependency with sphinx
license="BSD-2-Clause"
depends="python3"
-makedepends="python3-dev"
checkdepends="py3-sphinx py3-pytest"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+makedepends="python3-dev"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
PYTHONWARNINGS="all,ignore::DeprecationWarning:docutils.io" pytest --durations 25
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="135d6405e330cc245391646d4055988cf762d82f6473e58c64a76f3a88e7f33a66baba366e7f29e1378320bd0c374af92b0f972bceeec8c05ad0fe652a81e984 py3-sphinxcontrib-devhelp-1.0.1.tar.gz"
+sha512sums="83b46eaf26df3932ea2136cfda1c0fca4fc08ce8bca564845b3efe5bb00d6c8c93991f4edd4913d4ec796e2d85bd2c7265adf28e98f42e8094daeb5ac11a0eb1 py3-sphinxcontrib-devhelp-1.0.2.tar.gz"
diff --git a/user/py3-sphinxcontrib-htmlhelp/APKBUILD b/user/py3-sphinxcontrib-htmlhelp/APKBUILD
index 66e2da105..c7098fc01 100644
--- a/user/py3-sphinxcontrib-htmlhelp/APKBUILD
+++ b/user/py3-sphinxcontrib-htmlhelp/APKBUILD
@@ -2,7 +2,9 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-sphinxcontrib-htmlhelp
_pkgname=sphinxcontrib-htmlhelp
-pkgver=1.0.1
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=1.0.3
pkgrel=0
pkgdesc="A sphinx extension to output HtmlHelp"
url="https://pypi.python.org/pypi/sphinxcontrib-htmlhelp"
@@ -10,25 +12,22 @@ arch="noarch"
options="!check" # Cyclic dependency with sphinx
license="BSD-2-Clause"
depends="python3"
-makedepends="python3-dev"
checkdepends="py3-sphinx py3-pytest py3-html5lib"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+makedepends="python3-dev"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
PYTHONWARNINGS="all,ignore::DeprecationWarning:docutils.io" pytest --durations 25
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="a364a490e5043e767a8b498b5b621f3f3c64bf15f65847097489d3d2ba8620adea2045024d5189a68d97af6f68161f714f09a712cdd9fc6d06524ea818cf2e1a py3-sphinxcontrib-htmlhelp-1.0.1.tar.gz"
+sha512sums="f37542c5789340bb26c41b84512e08998e4ef45ff2eb0fdb0e10f585cff27a145d5821b8eb3766d009e2b5a38c3d7efb127ab898982e1b6fd1d4ff7e26907db4 py3-sphinxcontrib-htmlhelp-1.0.3.tar.gz"
diff --git a/user/py3-sphinxcontrib-jsmath/APKBUILD b/user/py3-sphinxcontrib-jsmath/APKBUILD
index 0a760859f..c8c8d5f25 100644
--- a/user/py3-sphinxcontrib-jsmath/APKBUILD
+++ b/user/py3-sphinxcontrib-jsmath/APKBUILD
@@ -2,6 +2,8 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-sphinxcontrib-jsmath
_pkgname=sphinxcontrib-jsmath
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
pkgver=1.0.1
pkgrel=0
pkgdesc="A sphinx extension which renders display math in HTML via JavaScript"
@@ -10,23 +12,20 @@ arch="noarch"
options="!check" # Cyclic dependency on sphinx
license="BSD-2-Clause"
depends="python3"
-makedepends="python3-dev"
checkdepends="py3-sphinx py3-pytest"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+makedepends="python3-dev"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
PYTHONWARNINGS="all,ignore::DeprecationWarning:docutils.io" pytest --durations 25
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
diff --git a/user/py3-sphinxcontrib-qthelp/APKBUILD b/user/py3-sphinxcontrib-qthelp/APKBUILD
index 9feee1eae..eb2953251 100644
--- a/user/py3-sphinxcontrib-qthelp/APKBUILD
+++ b/user/py3-sphinxcontrib-qthelp/APKBUILD
@@ -2,7 +2,9 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-sphinxcontrib-qthelp
_pkgname=sphinxcontrib-qthelp
-pkgver=1.0.2
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=1.0.3
pkgrel=0
pkgdesc="A Sphinx extension to output QtHelp documents."
url="https://pypi.python.org/pypi/sphinxcontrib-qthelp"
@@ -10,25 +12,22 @@ arch="noarch"
options="!check" # Cyclic dependency with sphinx
license="BSD-2-Clause"
depends="python3"
-makedepends="python3-dev"
checkdepends="py3-sphinx py3-pytest"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+makedepends="python3-dev"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
PYTHONWARNINGS="all,ignore::DeprecationWarning:docutils.io" pytest --durations 25
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="8fe840e011fabd596194f539d27a502b77ae8a6030ae1a7646b1af9f203d3578b7420ead655297b2a752f0cb0e6803247c7a79b2ccd2d4662ed9f58398947864 py3-sphinxcontrib-qthelp-1.0.2.tar.gz"
+sha512sums="29f77e4b3f1a4868c2a34dbd853415e5d813f482cd23b982aeed42d53acba09b896d77ba930c34cce8af043bb7d64a19acff610430e942038d95a410b6e0b5fa py3-sphinxcontrib-qthelp-1.0.3.tar.gz"
diff --git a/user/py3-sphinxcontrib-serializinghtml/APKBUILD b/user/py3-sphinxcontrib-serializinghtml/APKBUILD
index d576f8de8..fec38ab4e 100644
--- a/user/py3-sphinxcontrib-serializinghtml/APKBUILD
+++ b/user/py3-sphinxcontrib-serializinghtml/APKBUILD
@@ -2,7 +2,9 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-sphinxcontrib-serializinghtml
_pkgname=sphinxcontrib-serializinghtml
-pkgver=1.1.3
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=1.1.4
pkgrel=0
pkgdesc="A Sphinx extension to output serialized HTML (json and pickle)"
url="https://pypi.python.org/pypi/sphinxcontrib-serializinghtml"
@@ -10,25 +12,22 @@ arch="noarch"
options="!check" # Cyclic dependency with sphinx
license="BSD-2-Clause"
depends="python3 py3-markupsafe"
-makedepends="python3-dev"
checkdepends="py3-sphinx py3-pytest"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+makedepends="python3-dev"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
PYTHONWARNINGS="all,ignore::DeprecationWarning:docutils.io" pytest --durations 25
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="984d1760c61886408fe16c717aa1daea6591721928291267d519ea9c6eeab65d8a46d018a7c57aa8508ca408c9e919b7094d2580d30141ce7bacf5a18504cb55 py3-sphinxcontrib-serializinghtml-1.1.3.tar.gz"
+sha512sums="d132f75f1e0491167cd6d0f5b3697ac0fc1b16e63fd3dcd480b961e332b521932e405679a695522a4aeb56f57949eb9b1ed7635e9807dd059ae44a6384bdc6d0 py3-sphinxcontrib-serializinghtml-1.1.4.tar.gz"
diff --git a/user/py3-sshutil/APKBUILD b/user/py3-sshutil/APKBUILD
new file mode 100644
index 000000000..674b8b3b4
--- /dev/null
+++ b/user/py3-sshutil/APKBUILD
@@ -0,0 +1,31 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-sshutil
+_pkgname=sshutil
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=1.5.0
+pkgrel=0
+pkgdesc="SSH utility functions for Python"
+url="https://pypi.org/project/sshutil/"
+arch="noarch"
+license="Apache-2.0"
+depends="python3 py3-paramiko"
+makedepends=""
+subpackages=""
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/sshutil-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ python3 setup.py test
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="14cc921e52e1f8f6c7b3031e57d6fc416d6e469c5b1b026ffc64078c51a8d05590579bf25515cda2e1224b7ca7d39e712738742a0cd9f05eb42639b25ecce27c sshutil-1.5.0.tar.gz"
diff --git a/user/py3-taillight/APKBUILD b/user/py3-taillight/APKBUILD
new file mode 100644
index 000000000..9e9324146
--- /dev/null
+++ b/user/py3-taillight/APKBUILD
@@ -0,0 +1,29 @@
+# Contributor: Max Rees <maxcrees@me.com>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=py3-taillight
+_pkgname=taillight
+pkgver=0.5.2
+pkgrel=0
+pkgdesc="Lightweight, thread-safe signal/slots system with priorities"
+url="https://github.com/Elizafox/taillight"
+arch="noarch"
+license="WTFPL OR LPRAB"
+depends="python3"
+makedepends=""
+# PyPI download doesn't include tests/
+source="https://distfiles.adelielinux.org/source/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ python3 -m unittest discover -s tests
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="fbae0af9b1104495714c266f7d8a9ddd097b52aea9b97c1839c861b829817cd15db55a3ca4b5f84a19b3b5edfdb2fb50da8cdd1cc5bd0129a5f26be094464649 taillight-0.5.2.tar.gz"
diff --git a/user/py3-toml/APKBUILD b/user/py3-toml/APKBUILD
new file mode 100644
index 000000000..2705dcde0
--- /dev/null
+++ b/user/py3-toml/APKBUILD
@@ -0,0 +1,28 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=py3-toml
+_pyname=toml
+pkgver=0.10.2
+pkgrel=0
+pkgdesc="Python 3 library for TOML"
+url="https://pypi.org/project/toml/"
+arch="noarch"
+license="MIT"
+depends="python3"
+checkdepends="py3-pytest"
+makedepends="py3-iniconfig"
+source="https://files.pythonhosted.org/packages/source/${_pyname%${_pyname#?}}/$_pyname/$_pyname-$pkgver.tar.gz"
+builddir="$srcdir/"$_pyname-$pkgver
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ python3 setup.py test
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+sha512sums="ede2c8fed610a3827dba828f6e7ab7a8dbd5745e8ef7c0cd955219afdc83b9caea714deee09e853627f05ad1c525dc60426a6e9e16f58758aa028cb4d3db4b39 toml-0.10.2.tar.gz"
diff --git a/user/py3-tox/APKBUILD b/user/py3-tox/APKBUILD
index 6776b8de6..204af0e7e 100644
--- a/user/py3-tox/APKBUILD
+++ b/user/py3-tox/APKBUILD
@@ -1,8 +1,10 @@
# Contributor: Max Rees <maxcrees@me.com>
-# Maintainer: Max Rees <maxcrees@me.com>
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=py3-tox
_pkgname=tox
-pkgver=3.0.0
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=3.24.5
pkgrel=0
pkgdesc="virtualenv management and test command line tool"
url="https://pypi.python.org/pypi/tox"
@@ -12,22 +14,19 @@ license="MIT"
depends="py3-py py3-pluggy py3-virtualenv py3-six python3"
makedepends="python3-dev"
#checkdepends="py3-pytest py3-tox"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
tox -e py36
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="3bce42561a032b9d1bcc6086093ab79e2ba84ca55b4a6b646485ed3ec4a5b7349d8fc4e47758d2dd7998fc943824a99a251447e13b9ccc396b9d2d87f367f6cd py3-tox-3.0.0.tar.gz"
+sha512sums="2b047c5682c2c57268fb46055207388d060fb31511d6e442dc49244a5ac53c4d2fecd7bb9a8e33bb02b580192926592523dfb991c4bd8b216559f71a1c548f9a py3-tox-3.24.5.tar.gz"
diff --git a/user/py3-transitions/APKBUILD b/user/py3-transitions/APKBUILD
new file mode 100644
index 000000000..d59df486f
--- /dev/null
+++ b/user/py3-transitions/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-transitions
+_pkgname=${pkgname#py3-}
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=0.7.2
+pkgrel=0
+pkgdesc="Python state machine library"
+url="https://pypi.org/project/transitions/"
+arch="noarch"
+options="!check" # requires nose, pygraphviz
+license="MIT"
+depends="python3"
+makedepends="python3-dev"
+subpackages=""
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ python3 setup.py test
+}
+
+package() {
+ mkdir -p "$pkgdir"
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="c33eaec3e338b6febd924d803b85436df3ec3ab728315290fe81c73fb328aedcdb15e8f19f0e3d9d3a7d62750671686ae65bad560c48cfd113481dfe702a4204 transitions-0.7.2.tar.gz"
diff --git a/user/py3-twisted/APKBUILD b/user/py3-twisted/APKBUILD
index e9d38cf7a..8bc9e72dd 100644
--- a/user/py3-twisted/APKBUILD
+++ b/user/py3-twisted/APKBUILD
@@ -2,31 +2,45 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=py3-twisted
_pkgname=Twisted
-pkgver=18.9.0
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=19.10.0
pkgrel=0
pkgdesc="Asynchronous networking framework written in Python"
url="https://twistedmatrix.com/"
arch="all"
+# FIXME: constantly, automat, hyperlink, and PyHamcrest
+# also need to be packaged and added to depends=
+options="net"
license="MIT"
-depends="py3-incremental"
+depends="python3 py3-attrs py3-cython py3-incremental py3-zope-interface"
makedepends="python3-dev"
subpackages=""
-source="https://files.pythonhosted.org/packages/5d/0e/a72d85a55761c2c3ff1cb968143a2fd5f360220779ed90e0fadf4106d4f2/Twisted-$pkgver.tar.bz2"
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.bz2
+ CVE-2020-10108-and-2020-10109.patch
+ "
builddir="$srcdir/Twisted-$pkgver"
+# secfixes: twisted
+# 19.10.0-r0:
+# - CVE-2019-9512
+# - CVE-2019-9514
+# - CVE-2019-9515
+# - CVE-2020-10108
+# - CVE-2020-10109
+
build() {
- cd "$builddir"
+ (cd "$builddir"/src/twisted/test && cython raiser.pyx)
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py test
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="a9878750f46207b8758f5407a0e4332d9e367bd3ed4e18001825982c3ba78c56372934e634f1866805b9b9bc452698ad36396285172b61cf84da0de5efa7cc29 Twisted-18.9.0.tar.bz2"
+sha512sums="de8d7fd0b2081cebeff68b060c8469377011648bc563a94a993d3530fb007ed42c3a54925c9a10c465ee7a3065cc9108ace12d10d358223fab13494becb9ac4b Twisted-19.10.0.tar.bz2
+dcc22af0a72bce5cca3c9f5ee739b17f14275ac8e776c658743746239c793ad9585fb0333203945912fd4994bd001b7244905562c4389304a707a2a4430faa40 CVE-2020-10108-and-2020-10109.patch"
diff --git a/user/py3-twisted/CVE-2020-10108-and-2020-10109.patch b/user/py3-twisted/CVE-2020-10108-and-2020-10109.patch
new file mode 100644
index 000000000..9a58f5584
--- /dev/null
+++ b/user/py3-twisted/CVE-2020-10108-and-2020-10109.patch
@@ -0,0 +1,260 @@
+From 4a7d22e490bb8ff836892cc99a1f54b85ccb0281 Mon Sep 17 00:00:00 2001
+From: Mark Williams <mrw@enotuniq.org>
+Date: Sun, 16 Feb 2020 19:00:10 -0800
+Subject: [PATCH] Fix several request smuggling attacks.
+
+1. Requests with multiple Content-Length headers were allowed (thanks
+to Jake Miller from Bishop Fox and ZeddYu Lu) and now fail with a 400;
+
+2. Requests with a Content-Length header and a Transfer-Encoding
+header honored the first header (thanks to Jake Miller from Bishop
+Fox) and now fail with a 400;
+
+3. Requests whose Transfer-Encoding header had a value other than
+"chunked" and "identity" (thanks to ZeddYu Lu) were allowed and now fail
+with a 400.
+---
+ src/twisted/web/http.py | 64 +++++++---
+ src/twisted/web/newsfragments/9770.bugfix | 1 +
+ src/twisted/web/test/test_http.py | 137 ++++++++++++++++++++++
+ 3 files changed, 187 insertions(+), 15 deletions(-)
+ create mode 100644 src/twisted/web/newsfragments/9770.bugfix
+
+diff --git a/src/twisted/web/http.py b/src/twisted/web/http.py
+index f0fb05b4d69..06d830fe30f 100644
+--- a/src/twisted/web/http.py
++++ b/src/twisted/web/http.py
+@@ -2171,6 +2171,51 @@ def _finishRequestBody(self, data):
+ self.allContentReceived()
+ self._dataBuffer.append(data)
+
++ def _maybeChooseTransferDecoder(self, header, data):
++ """
++ If the provided header is C{content-length} or
++ C{transfer-encoding}, choose the appropriate decoder if any.
++
++ Returns L{True} if the request can proceed and L{False} if not.
++ """
++
++ def fail():
++ self._respondToBadRequestAndDisconnect()
++ self.length = None
++
++ # Can this header determine the length?
++ if header == b'content-length':
++ try:
++ length = int(data)
++ except ValueError:
++ fail()
++ return False
++ newTransferDecoder = _IdentityTransferDecoder(
++ length, self.requests[-1].handleContentChunk, self._finishRequestBody)
++ elif header == b'transfer-encoding':
++ # XXX Rather poorly tested code block, apparently only exercised by
++ # test_chunkedEncoding
++ if data.lower() == b'chunked':
++ length = None
++ newTransferDecoder = _ChunkedTransferDecoder(
++ self.requests[-1].handleContentChunk, self._finishRequestBody)
++ elif data.lower() == b'identity':
++ return True
++ else:
++ fail()
++ return False
++ else:
++ # It's not a length related header, so exit
++ return True
++
++ if self._transferDecoder is not None:
++ fail()
++ return False
++ else:
++ self.length = length
++ self._transferDecoder = newTransferDecoder
++ return True
++
+
+ def headerReceived(self, line):
+ """
+@@ -2196,21 +2241,10 @@ def headerReceived(self, line):
+
+ header = header.lower()
+ data = data.strip()
+- if header == b'content-length':
+- try:
+- self.length = int(data)
+- except ValueError:
+- self._respondToBadRequestAndDisconnect()
+- self.length = None
+- return False
+- self._transferDecoder = _IdentityTransferDecoder(
+- self.length, self.requests[-1].handleContentChunk, self._finishRequestBody)
+- elif header == b'transfer-encoding' and data.lower() == b'chunked':
+- # XXX Rather poorly tested code block, apparently only exercised by
+- # test_chunkedEncoding
+- self.length = None
+- self._transferDecoder = _ChunkedTransferDecoder(
+- self.requests[-1].handleContentChunk, self._finishRequestBody)
++
++ if not self._maybeChooseTransferDecoder(header, data):
++ return False
++
+ reqHeaders = self.requests[-1].requestHeaders
+ values = reqHeaders.getRawHeaders(header)
+ if values is not None:
+diff --git a/src/twisted/web/newsfragments/9770.bugfix b/src/twisted/web/newsfragments/9770.bugfix
+new file mode 100644
+index 00000000000..4f1be97de8a
+--- /dev/null
++++ b/src/twisted/web/newsfragments/9770.bugfix
+@@ -0,0 +1 @@
++Fix several request smuggling attacks: requests with multiple Content-Length headers were allowed (thanks to Jake Miller from Bishop Fox and ZeddYu Lu) and now fail with a 400; requests with a Content-Length header and a Transfer-Encoding header honored the first header (thanks to Jake Miller from Bishop Fox) and now fail with a 400; requests whose Transfer-Encoding header had a value other than "chunked" and "identity" (thanks to ZeddYu Lu) were allowed and now fail a 400.
+\ No newline at end of file
+diff --git a/src/twisted/web/test/test_http.py b/src/twisted/web/test/test_http.py
+index 0a0db09b750..578cb500cda 100644
+--- a/src/twisted/web/test/test_http.py
++++ b/src/twisted/web/test/test_http.py
+@@ -2252,6 +2252,143 @@ def process(self):
+ self.flushLoggedErrors(AttributeError)
+
+
++ def assertDisconnectingBadRequest(self, request):
++ """
++ Assert that the given request bytes fail with a 400 bad
++ request without calling L{Request.process}.
++
++ @param request: A raw HTTP request
++ @type request: L{bytes}
++ """
++ class FailedRequest(http.Request):
++ processed = False
++ def process(self):
++ FailedRequest.processed = True
++
++ channel = self.runRequest(request, FailedRequest, success=False)
++ self.assertFalse(FailedRequest.processed, "Request.process called")
++ self.assertEqual(
++ channel.transport.value(),
++ b"HTTP/1.1 400 Bad Request\r\n\r\n")
++ self.assertTrue(channel.transport.disconnecting)
++
++
++ def test_duplicateContentLengths(self):
++ """
++ A request which includes multiple C{content-length} headers
++ fails with a 400 response without calling L{Request.process}.
++ """
++ self.assertRequestRejected([
++ b'GET /a HTTP/1.1',
++ b'Content-Length: 56',
++ b'Content-Length: 0',
++ b'Host: host.invalid',
++ b'',
++ b'',
++ ])
++
++
++ def test_duplicateContentLengthsWithPipelinedRequests(self):
++ """
++ Two pipelined requests, the first of which includes multiple
++ C{content-length} headers, trigger a 400 response without
++ calling L{Request.process}.
++ """
++ self.assertRequestRejected([
++ b'GET /a HTTP/1.1',
++ b'Content-Length: 56',
++ b'Content-Length: 0',
++ b'Host: host.invalid',
++ b'',
++ b'',
++ b'GET /a HTTP/1.1',
++ b'Host: host.invalid',
++ b'',
++ b'',
++ ])
++
++
++ def test_contentLengthAndTransferEncoding(self):
++ """
++ A request that includes both C{content-length} and
++ C{transfer-encoding} headers fails with a 400 response without
++ calling L{Request.process}.
++ """
++ self.assertRequestRejected([
++ b'GET /a HTTP/1.1',
++ b'Transfer-Encoding: chunked',
++ b'Content-Length: 0',
++ b'Host: host.invalid',
++ b'',
++ b'',
++ ])
++
++
++ def test_contentLengthAndTransferEncodingWithPipelinedRequests(self):
++ """
++ Two pipelined requests, the first of which includes both
++ C{content-length} and C{transfer-encoding} headers, triggers a
++ 400 response without calling L{Request.process}.
++ """
++ self.assertRequestRejected([
++ b'GET /a HTTP/1.1',
++ b'Transfer-Encoding: chunked',
++ b'Content-Length: 0',
++ b'Host: host.invalid',
++ b'',
++ b'',
++ b'GET /a HTTP/1.1',
++ b'Host: host.invalid',
++ b'',
++ b'',
++ ])
++
++
++ def test_unknownTransferEncoding(self):
++ """
++ A request whose C{transfer-encoding} header includes a value
++ other than C{chunked} or C{identity} fails with a 400 response
++ without calling L{Request.process}.
++ """
++ self.assertRequestRejected([
++ b'GET /a HTTP/1.1',
++ b'Transfer-Encoding: unknown',
++ b'Host: host.invalid',
++ b'',
++ b'',
++ ])
++
++
++ def test_transferEncodingIdentity(self):
++ """
++ A request with a valid C{content-length} and a
++ C{transfer-encoding} whose value is C{identity} succeeds.
++ """
++ body = []
++
++ class SuccessfulRequest(http.Request):
++ processed = False
++ def process(self):
++ body.append(self.content.read())
++ self.setHeader(b'content-length', b'0')
++ self.finish()
++
++ request = b'''\
++GET / HTTP/1.1
++Host: host.invalid
++Content-Length: 2
++Transfer-Encoding: identity
++
++ok
++'''
++ channel = self.runRequest(request, SuccessfulRequest, False)
++ self.assertEqual(body, [b'ok'])
++ self.assertEqual(
++ channel.transport.value(),
++ b'HTTP/1.1 200 OK\r\nContent-Length: 0\r\n\r\n',
++ )
++
++
+
+ class QueryArgumentsTests(unittest.TestCase):
+ def testParseqs(self):
diff --git a/user/py3-typogrify/APKBUILD b/user/py3-typogrify/APKBUILD
new file mode 100644
index 000000000..6d68cbeec
--- /dev/null
+++ b/user/py3-typogrify/APKBUILD
@@ -0,0 +1,28 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-typogrify
+_pkgname=typogrify
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=2.0.7
+pkgrel=0
+pkgdesc="Python text filters to enhance Web typography"
+url="https://pypi.org/project/typogrify/"
+arch="noarch"
+options="!check" # Test requires Django.
+license="BSD-3-Clause"
+depends="python3 py3-smartypants"
+makedepends=""
+subpackages=""
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="6212024a88372f1b14e5932c0541ec4d5a2ada7514c1327dc8f3775cd7adf3372cae0037c4310ed4a03fd0657a91eb4c0d114b74172190f7f84d82908441ddd0 typogrify-2.0.7.tar.gz"
diff --git a/user/py3-tz/APKBUILD b/user/py3-tz/APKBUILD
index d8182670c..ed4b36ff3 100644
--- a/user/py3-tz/APKBUILD
+++ b/user/py3-tz/APKBUILD
@@ -1,9 +1,10 @@
# Contributor: Peter Bui <pnutzh4x0r@gmail.com>
# Contributor: Fabian Affolter <fabian@affolter-engineering.ch>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-tz
_pkgname=pytz
-pkgver=2018.9
+pkgver=2020.1
pkgrel=0
pkgdesc="Timezone definitions for Python"
url="http://pytz.sourceforge.net/"
@@ -13,21 +14,19 @@ options="!check" # flake8, sphinx
depends="python3 tzdata"
makedepends="python3-dev unzip"
subpackages=""
-source="https://pypi.io/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz
+source="https://pypi.io/packages/source/p/$_pkgname/$_pkgname-$pkgver.tar.gz
zoneinfo-noinstall.patch
zoneinfo-fix.patch"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
package() {
mkdir -p "$pkgdir"
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="c3dabe61d04539245761a5c4e3bfb614df1c3b8ccc2ffa1cf320c5ad642242c29b3321fe7855d32a2ae55c739acbbe8c0e1813df5b3c757b8f56fff910fee159 pytz-2018.9.tar.gz
+sha512sums="4f652ab400bac0bd83ed305be7540094e674029a0cbde7da280adfd911b8c0a44023799b7c61971a5a61a1d6e3992c5b621e5e95bbfe962f310d5f26d4fda3ce pytz-2020.1.tar.gz
be61b829014be0d0d7db0c544481d378a95324c1f5968cbbcd7887c6ee8ce52a0b47ae734e16fc5fb2429d8d49c8ef199b6b3b7194f9e654699bb73ab8f3a10d zoneinfo-noinstall.patch
-a09467dbb00c1ab9f7e7527d9b020a6d913b8da2380a5359e782f27ccf9ec4dd4f50bfc92c95dc2e793904242c8139793c15e78e651d2777fb3b3abc48fcd640 zoneinfo-fix.patch"
+7629da5d76056789e7c29a4f047d25fe77586d4a78e8a1ce7ad7c513507d286098666edb24ee5cadc9b0a4d5623336bba8a6b0f786072ce741177022201fdc54 zoneinfo-fix.patch"
diff --git a/user/py3-tz/zoneinfo-fix.patch b/user/py3-tz/zoneinfo-fix.patch
index a0a3a1190..404e81c9f 100644
--- a/user/py3-tz/zoneinfo-fix.patch
+++ b/user/py3-tz/zoneinfo-fix.patch
@@ -1,7 +1,7 @@
Patch pulled from Gentoo. Forces package to use system tzinfo
--- a/pytz/__init__.py
+++ b/pytz/__init__.py
-@@ -91,8 +91,7 @@
+@@ -92,8 +92,7 @@
if zoneinfo_dir is not None:
filename = os.path.join(zoneinfo_dir, *name_parts)
else:
diff --git a/user/py3-u-msgpack-python/APKBUILD b/user/py3-u-msgpack-python/APKBUILD
index 1f7f03e82..477d5d76f 100644
--- a/user/py3-u-msgpack-python/APKBUILD
+++ b/user/py3-u-msgpack-python/APKBUILD
@@ -2,32 +2,30 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-u-msgpack-python
_pkgname=u-msgpack-python
-pkgver=2.5.1
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=2.5.2
pkgrel=0
pkgdesc="A portable, lightweight MessagePack serializer and deserializer written in pure Python."
url="https://pypi.python.org/pypi/u-msgpack-python"
arch="noarch"
license="MIT"
depends="python3"
+checkdepends="py3-pytest py3-iniconfig"
makedepends="python3-dev"
-checkdepends="py3-pytest"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
pytest
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
-
}
-sha512sums="80c9c08dd3fc7451fc84c7ba7cebada608aa7db057bedaf7875dc9c1f6771f0cd1b15dba79b1e24510e2286f792c0878b4015ba03784a41ed520139e7f27d1a9 py3-u-msgpack-python-2.5.1.tar.gz"
+sha512sums="cefba7ed86d2b7c37b0d92e3a4fb4ec62c89dffee0be078c783010638413e6ce1af7ab959b43dfedb6fd8cf2943185c18fc2201a4a9764c423e8242bcedf21a9 py3-u-msgpack-python-2.5.2.tar.gz"
diff --git a/user/py3-urllib3/APKBUILD b/user/py3-urllib3/APKBUILD
index 68ea652b2..a981d5655 100644
--- a/user/py3-urllib3/APKBUILD
+++ b/user/py3-urllib3/APKBUILD
@@ -1,9 +1,10 @@
# Contributor: Yura Kushnir <kushnir.yura@gmail.com>
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-urllib3
_pkgname=${pkgname#py3-}
-pkgver=1.24.1
+pkgver=1.25.10
pkgrel=0
pkgdesc="HTTP library with thread-safe connection pooling, file post, and more"
url="https://github.com/shazow/urllib3"
@@ -17,14 +18,11 @@ source="$pkgname-$pkgver.tar.gz::https://github.com/urllib3/urllib3/archive/$pkg
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
package() {
- mkdir -p "$pkgdir"
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="2f5453cf0ec1b65de9a9fca0fdb45664f7481507c875b7115c063cb177628b4b611377e588508ab8433e0797fc78b60fd3ea5cc5ac0a3f105d36bfff9a56f1f4 py3-urllib3-1.24.1.tar.gz"
+sha512sums="7927e58de8ef24474179297e6ef7700bb3026a13d578e5bb01e32c6c4b6b5e70cc35980a815e3bcd976678e344250222d38fb86abe0f956e5023deb0f80bc1a1 py3-urllib3-1.25.10.tar.gz"
diff --git a/user/py3-virtualenv/APKBUILD b/user/py3-virtualenv/APKBUILD
index d78f6e7e7..aa3e78fc7 100644
--- a/user/py3-virtualenv/APKBUILD
+++ b/user/py3-virtualenv/APKBUILD
@@ -2,37 +2,30 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=py3-virtualenv
_pkgname=virtualenv
-pkgver=16.0.0
+pkgver=20.8.1
pkgrel=0
pkgdesc="Virtual Python Environment builder"
url="https://pypi.org/project/virtualenv"
arch="noarch"
-options="net"
+options="!check"
+# Certified net clean
license="MIT"
depends="python3"
-makedepends="python3-dev"
+makedepends="python3-dev py3-iniconfig py3-toml"
checkdepends="py3-pytest cmd:which"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/v/$_pkgname/$_pkgname-$pkgver.tar.gz
- test-python3.6.patch"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/v/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
- sed -ie "s/env python$/env python3/" virtualenv.py
}
check() {
- cd "$builddir"
- python3 setup.py test
- cd tests
- ./test_activate.sh
+ PIP_NO_INDEX=true PYTHONPATH="$builddir" pytest
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="43bc37f1da1b65e9a2df5a8813a801f27f5783b7211219d441d1c2132789917df42fdc0aba1d5ec51e3d6f7583af9474d59c1f532d8880c8c325ccc96e73b3df py3-virtualenv-16.0.0.tar.gz
-9c68dcda515dfc974433c9a68d81be0b028a7967eebb1b6d1d912c3859c7925fe970f1668ac9e406768de91ed32b27b3b8ea7a4939f8adc7a09e1bf904df10b9 test-python3.6.patch"
+sha512sums="db373bdb68efce0ce26cefe508e452b62d4336ccf74f08a51aa61272127c8cd43639443342f42cacb62d7bfd1381bc1204211218c486dfcdb165d8486a2e728b py3-virtualenv-20.8.1.tar.gz"
diff --git a/user/py3-virtualenv/test-python3.6.patch b/user/py3-virtualenv/test-python3.6.patch
deleted file mode 100644
index 782aca2c5..000000000
--- a/user/py3-virtualenv/test-python3.6.patch
+++ /dev/null
@@ -1,96 +0,0 @@
---- virtualenv-15.1.0/tests/test_activate_output.expected 2016-11-16 02:39:30.000000000 +0000
-+++ virtualenv-15.1.0/tests/test_activate_output.expected 2018-01-10 23:31:17.840000000 +0000
-@@ -1,2 +1,4 @@
--New python executable in /tmp/test_virtualenv_activate.venv/bin/python
-+Using base prefix '/usr'
-+New python executable in /tmp/test_virtualenv_activate.venv/bin/python3
-+Also creating executable in /tmp/test_virtualenv_activate.venv/bin/python
- Installing setuptools, pip, wheel...done.
---- virtualenv-15.1.0/tests/test_virtualenv.py 2016-11-16 02:39:30.000000000 +0000
-+++ virtualenv-15.1.0/tests/test_virtualenv.py 2018-01-11 03:40:22.270000000 +0000
-@@ -58,13 +58,13 @@
- def test_activate_after_future_statements():
- """Should insert activation line after last future statement"""
- script = [
-- '#!/usr/bin/env python',
-+ '#!/usr/bin/env python3',
- 'from __future__ import with_statement',
- 'from __future__ import print_function',
- 'print("Hello, world!")'
- ]
- assert virtualenv.relative_script(script) == [
-- '#!/usr/bin/env python',
-+ '#!/usr/bin/env python3',
- 'from __future__ import with_statement',
- 'from __future__ import print_function',
- '',
-@@ -110,7 +110,7 @@
- if virtualenv.is_win:
- required_executables = ['python.exe', 'pythonw.exe']
- else:
-- py_exe_no_version = 'python'
-+ py_exe_no_version = 'python3'
- py_exe_version_major = 'python%s' % sys.version_info[0]
- py_exe_version_major_minor = 'python%s.%s' % (
- sys.version_info[0], sys.version_info[1])
---- virtualenv-15.1.0/tests/test_activate.sh 2016-11-16 02:39:30.000000000 +0000
-+++ virtualenv-15.1.0/tests/test_activate.sh 2018-01-11 03:49:05.070000000 +0000
-@@ -19,7 +19,7 @@
- echo "$0: Created virtualenv ${TESTENV}." 1>&2
-
- echo "$0: Activating ${TESTENV}..." 1>&2
--. ${TESTENV}/bin/activate
-+PS1="${PS1:-}" . ${TESTENV}/bin/activate
- echo "$0: Activated ${TESTENV}." 1>&2
-
- echo "$0: Checking value of \$VIRTUAL_ENV..." 1>&2
-@@ -31,14 +31,14 @@
-
- echo "$0: \$VIRTUAL_ENV = \"${VIRTUAL_ENV}\" -- OK." 1>&2
-
--echo "$0: Checking output of \$(which python)..." 1>&2
-+echo "$0: Checking output of \$(which python3)..." 1>&2
-
--if [ "$(which python)" != "${TESTENV}/bin/python" ]; then
-- echo "$0: Expected \$(which python) to return \"${TESTENV}/bin/python\"; actual value: \"$(which python)\"!" 1>&2
-+if [ "$(which python3)" != "${TESTENV}/bin/python3" ]; then
-+ echo "$0: Expected \$(which python3) to return \"${TESTENV}/bin/python3\"; actual value: \"$(which python3)\"!" 1>&2
- exit 3
- fi
-
--echo "$0: Output of \$(which python) is OK." 1>&2
-+echo "$0: Output of \$(which python3) is OK." 1>&2
-
- echo "$0: Checking output of \$(which pip)..." 1>&2
-
-@@ -60,7 +60,7 @@
-
- echo "$0: Executing a simple Python program..." 1>&2
-
--TESTENV=${TESTENV} python <<__END__
-+TESTENV=${TESTENV} python3 <<__END__
- import os, sys
-
- expected_site_packages = os.path.join(os.environ['TESTENV'], 'lib','python%s' % sys.version[:3], 'site-packages')
---- virtualenv-16.0.0/setup.py 2018-05-16 19:36:07.000000000 -0400
-+++ virtualenv-16.0.0/setup.py 2018-10-22 20:56:04.691681656 -0400
-@@ -33,7 +33,7 @@ try:
- },
- 'zip_safe': False,
- 'cmdclass': {'test': PyTest},
-- 'tests_require': ['pytest', 'mock'],
-+ 'tests_require': ['pytest'],
- }
- except ImportError:
- from distutils.core import setup
---- virtualenv-16.0.0/tests/test_virtualenv.py 2018-05-16 19:36:07.000000000 -0400
-+++ virtualenv-16.0.0/tests/test_virtualenv.py 2018-10-22 20:56:38.771682266 -0400
-@@ -7,7 +7,7 @@ import tempfile
- import pytest
- import platform # noqa
-
--from mock import patch, Mock
-+from unittest.mock import patch, Mock
-
-
- def test_version():
diff --git a/user/py3-wcwidth/APKBUILD b/user/py3-wcwidth/APKBUILD
new file mode 100644
index 000000000..620c158e7
--- /dev/null
+++ b/user/py3-wcwidth/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Max Rees <maxcrees@me.com>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=py3-wcwidth
+_pkgname=wcwidth
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=0.1.7
+pkgrel=0
+pkgdesc="Wide-character terminal column cell measurement"
+url="https://pypi.python.org/pypi/wcwidth"
+arch="noarch"
+# Certified net clean
+license="MIT"
+depends="python3"
+makedepends=""
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz
+ run-tests.patch"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ PYTHONPATH="$builddir" python3 "$builddir/wcwidth/tests/test_core.py"
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+
+}
+
+sha512sums="5bc9625fbd10721a50a3ac7d7f91012cca8e4f83533f265cf56890498bc52a53b155c82e67d6bc5523a5593c8d7992a1dec2a0f590318170eddf987c56f9c368 py3-wcwidth-0.1.7.tar.gz
+f221823b0a7c70e45dd4cba806db5b463425e067f12395ec88370f884a652b1b3959a52d57b830dfe25229afb2d5ea9d8bd97c33c8a97766953f8458997c07f8 run-tests.patch"
diff --git a/user/py3-wcwidth/run-tests.patch b/user/py3-wcwidth/run-tests.patch
new file mode 100644
index 000000000..8d62e0962
--- /dev/null
+++ b/user/py3-wcwidth/run-tests.patch
@@ -0,0 +1,16 @@
+--- wcwidth-0.1.7/wcwidth/tests/test_core.py 2016-07-02 00:13:27.000000000 -0400
++++ wcwidth-0.1.7/wcwidth/tests/test_core.py 2019-08-06 08:38:15.420011741 -0400
+@@ -136,3 +136,13 @@ def test_combining_spacing():
+ # verify,
+ assert length_each == expect_length_each
+ assert length_phrase == expect_length_phrase
++
++if __name__ == "__main__":
++ test_hello_jp()
++ test_wcswidth_substr()
++ test_null_width_0()
++ test_control_c0_width_negative_1()
++ test_combining_width_negative_1()
++ test_combining_cafe()
++ test_combining_enclosing()
++ test_combining_spacing()
diff --git a/user/py3-webencodings/APKBUILD b/user/py3-webencodings/APKBUILD
index 8802cc1eb..e7c424adb 100644
--- a/user/py3-webencodings/APKBUILD
+++ b/user/py3-webencodings/APKBUILD
@@ -2,6 +2,8 @@
# Maintainer: Brandon Bergren <git@bdragon.rtk0.net>
pkgname=py3-webencodings
_pkgname=webencodings
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
pkgver=0.5.1
pkgrel=0
pkgdesc="Character encoding aliases for legacy web content"
@@ -10,25 +12,21 @@ arch="noarch"
# Packaging error, see https://github.com/gsnedders/python-webencodings/blob/master/LICENSE
license="BSD-3-Clause"
depends="python3"
+checkdepends="py3-pytest py3-iniconfig"
makedepends="python3-dev"
-checkdepends="py3-pytest"
-source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
PYTHONPATH="build/lib:$PYTHONPATH" pytest webencodings/tests.py
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
-
}
sha512sums="b727b01bac6ec79bca517960d27b4c0668b295f25559471b9641c2c33dab55db6dac9c990952177964c6418382c22831b14d57df5e632d51d7abf97b61f24326 py3-webencodings-0.5.1.tar.gz"
diff --git a/user/py3-websockets/APKBUILD b/user/py3-websockets/APKBUILD
new file mode 100644
index 000000000..89fa0d503
--- /dev/null
+++ b/user/py3-websockets/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=py3-websockets
+_pkgname=${pkgname#py3-}
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=8.1
+pkgrel=0
+pkgdesc="Python implementation of RFCs 6455 and 7692"
+url="https://pypi.org/project/websockets/"
+arch="all"
+# Certified net clean
+license="BSD-3-Clause"
+depends="python3"
+makedepends="python3-dev"
+subpackages=""
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ python3 setup.py test
+}
+
+package() {
+ mkdir -p "$pkgdir"
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="408e35d7a908830d51b3b9b73a1c34b1b2dbabbbbd2431515bc0fba7f6ec7db402a55fd00dc737d344549fd5d5f2d90e27cef7cd5f7847e4a1545d3c74db007c websockets-8.1.tar.gz"
diff --git a/user/py3-wheel/APKBUILD b/user/py3-wheel/APKBUILD
new file mode 100644
index 000000000..baaf858b7
--- /dev/null
+++ b/user/py3-wheel/APKBUILD
@@ -0,0 +1,30 @@
+# Contributor: Antoine Fontaine <antoine.fontaine@epfl.ch>
+# Contributor: psykose <alice@ayaya.dev>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=py3-wheel
+_pkgname=${pkgname#*-}
+pkgver=0.37.1
+pkgrel=0
+pkgdesc="Reference implementation of Python wheel packaging standard"
+url="https://wheel.readthedocs.io/en/stable/"
+arch="noarch"
+license="MIT"
+depends="python3"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://files.pythonhosted.org/packages/source/w/$_pkgname/$_pkgname-$pkgver.tar.gz"
+builddir="$srcdir"/$_pkgname-$pkgver
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ python3 setup.py test
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+ install -Dm 0644 "$srcdir"/$_pkgname-$pkgver/docs/index.rst "$pkgdir/usr/share/doc/py3-wheel"
+}
+sha512sums="c977a740c17abd1fa4b4c2382a33f3ff887baa4231c36990d988cb8531496074e39744786ef6ac0da9c9af4977bce5b2da145377a3ac15eea918f8125bff66ec wheel-0.37.1.tar.gz"
diff --git a/user/py3-zipp/APKBUILD b/user/py3-zipp/APKBUILD
new file mode 100644
index 000000000..aa57d3dc3
--- /dev/null
+++ b/user/py3-zipp/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Max Rees <maxcrees@me.com>
+# Maintainer: Max Rees <maxcrees@me.com>
+# FIXME: drop after python3 >= 3.8.0
+pkgname=py3-zipp
+_pkgname=zipp
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=0.6.0
+pkgrel=0
+pkgdesc="Backport of Python 3.7's zip.Path"
+url="https://pypi.python.org/pypi/zipp"
+arch="noarch"
+# Certified net clean
+license="MIT"
+depends="python3 py3-more-itertools"
+makedepends=""
+source="$pkgname-$pkgver.tar.gz::https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz
+ scm.patch"
+builddir="$srcdir/$_pkgname-$pkgver"
+
+build() {
+ python3 setup.py build
+}
+
+check() {
+ python3 setup.py test
+}
+
+package() {
+ python3 setup.py install --prefix=/usr --root="$pkgdir"
+}
+
+sha512sums="18bef5aa3388ab3901bf08888127fc9cc17d8972a52f23ccf9a8035f09ee5598e17ddff833a10b81b2118461e0c517e88413518736763425a728cd0b19cc2052 py3-zipp-0.6.0.tar.gz
+6eee026c1a7a1a84c1b7584b86d4e95d1c7ba0cbed3554260196de842944a303be2f05a1c4492c95fb9592bef96906fbc643ce638a931d7d69f3e74a6647b935 scm.patch"
diff --git a/user/py3-zipp/scm.patch b/user/py3-zipp/scm.patch
new file mode 100644
index 000000000..82c6f7e55
--- /dev/null
+++ b/user/py3-zipp/scm.patch
@@ -0,0 +1,19 @@
+--- zipp-0.5.2/setup.cfg 2019-07-07 17:14:00.000000000 -0400
++++ zipp-0.5.2/setup.cfg 2019-08-06 05:03:34.500180967 -0400
+@@ -22,7 +22,7 @@ packages = find:
+ python_requires = >=2.7
+ install_requires =
+ more_itertools
+-setup_requires = setuptools_scm >= 1.15.0
++setup_requires =
+
+ [options.extras_require]
+ testing =
+--- zipp-0.5.2/setup.py 2019-07-07 17:13:42.000000000 -0400
++++ zipp-0.5.2/setup.py 2019-08-06 05:03:01.970180844 -0400
+@@ -3,4 +3,4 @@
+ import setuptools
+
+ if __name__ == "__main__":
+- setuptools.setup(use_scm_version=True)
++ setuptools.setup(version='0.6.0')
diff --git a/user/py3-zope-component/APKBUILD b/user/py3-zope-component/APKBUILD
index 6c283d12c..1553b39ed 100644
--- a/user/py3-zope-component/APKBUILD
+++ b/user/py3-zope-component/APKBUILD
@@ -1,5 +1,6 @@
# Contributor: Fabian Affolter <fabian@affolter-engineering.ch>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-zope-component
_pkgname=zope.component
pkgver=4.5
@@ -7,7 +8,7 @@ pkgrel=1
pkgdesc="Zope Component Architecture"
url="https://pypi.python.org/pypi/zope.component"
arch="noarch"
-options="!check" # needs nose
+options="!check" # needs nose
license="ZPL-2.1"
depends="python3 py3-zope-deferredimport py3-zope-deprecation py3-zope-event py3-zope-hookable py3-zope-interface py3-zope-proxy"
makedepends="python3-dev"
@@ -16,12 +17,10 @@ source="$_pkgname-$pkgver.tar.gz::https://github.com/zopefoundation/$_pkgname/ar
builddir="$srcdir"/$_pkgname-$pkgver
build() {
- cd "$builddir"
python3 setup.py build
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
diff --git a/user/py3-zope-deferredimport/APKBUILD b/user/py3-zope-deferredimport/APKBUILD
index f93a4d611..dff95a0ec 100644
--- a/user/py3-zope-deferredimport/APKBUILD
+++ b/user/py3-zope-deferredimport/APKBUILD
@@ -1,13 +1,13 @@
# Contributor: zlg <zlg+adelie@zlg.space>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-zope-deferredimport
_pkgname=zope.deferredimport
-pkgver=4.3
+pkgver=4.3.1
pkgrel=0
pkgdesc="Zope module that allows for lazy module importing"
url="https://github.com/zopefoundation/zope.deferredimport"
arch="noarch"
-options="!check" # needs zope.testrunner
+options="!check" # needs zope.testrunner
license="ZPL-2.1"
depends="python3"
makedepends="python3-dev py3-zope-proxy"
@@ -16,13 +16,11 @@ source="$_pkgname-$pkgver.tar.gz::https://github.com/zopefoundation/$_pkgname/ar
builddir="$srcdir"/$_pkgname-$pkgver
build() {
- cd "$builddir"
python3 setup.py build
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="0b62cf6caa7709dbb6b0ae85bf9c5e24909c79af57da8e3d081e69ff9f73fc60fbe5a83cdfe795551eeee3c045d3783a09cb3e6eb3964a44e6fbbea149ca3f8a zope.deferredimport-4.3.tar.gz"
+sha512sums="1c367def232ec79ad10a9d8f1e068598d2fdb49b067c2c3f44c9ad25c198afbbf2d52659c3795aad76f8c82d212e49086b81ab1c1dcc6aac2e3ce66c35ff5750 zope.deferredimport-4.3.1.tar.gz"
diff --git a/user/py3-zope-deprecation/APKBUILD b/user/py3-zope-deprecation/APKBUILD
index f21a1fdeb..faf402240 100644
--- a/user/py3-zope-deprecation/APKBUILD
+++ b/user/py3-zope-deprecation/APKBUILD
@@ -1,5 +1,5 @@
# Contributor: zlg <zlg+adelie@zlg.space>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-zope-deprecation
_pkgname=zope.deprecation
pkgver=4.4.0
@@ -7,7 +7,7 @@ pkgrel=0
pkgdesc="A function to mark deprecated parts of an API"
url="https://github.com/zopefoundation/zope.deprecation"
arch="noarch"
-options="!check" # needs zope.testrunner
+options="!check" # needs zope.testrunner
license="ZPL-2.1"
depends="python3"
makedepends="python3-dev"
@@ -16,12 +16,10 @@ source="$_pkgname-$pkgver.tar.gz::https://github.com/zopefoundation/$_pkgname/ar
builddir="$srcdir"/$_pkgname-$pkgver
build() {
- cd "$builddir"
python3 setup.py build
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
diff --git a/user/py3-zope-event/APKBUILD b/user/py3-zope-event/APKBUILD
index d03bc400e..723998139 100644
--- a/user/py3-zope-event/APKBUILD
+++ b/user/py3-zope-event/APKBUILD
@@ -1,33 +1,30 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-zope-event
_pkgname=zope.event
-pkgver=4.4
+pkgver=4.5.0
pkgrel=0
pkgdesc="Event publishing / dispatch, used by Zope Component Architecture"
url="https://github.com/zopefoundation/zope.event"
arch="noarch"
-options="!check" # needs nose
+options="!check" # needs nose
license="ZPL-2.1"
depends="python3"
makedepends="python3-dev"
source="$_pkgname-$pkgver.tar.gz::https://github.com/zopefoundation/$_pkgname/archive/$pkgver.tar.gz"
-
builddir="$srcdir"/$_pkgname-$pkgver
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py test
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="653273d021a43dca6d77900a3e2928f1621fd9c47a536ddd186e00b601670a4ac72042a1eadf18cf9912609025b491cee41508e8eb53bf2dc2ada2c5d3d5bb70 zope.event-4.4.tar.gz"
+sha512sums="2414a283988dc646e48153e389688b8eec4db528f7ac9ff45f982ce42295d390985825ac0f9db566fc5600fe4c96a8297a9c5718a16abc6d1831c72ee42c163d zope.event-4.5.0.tar.gz"
diff --git a/user/py3-zope-hookable/APKBUILD b/user/py3-zope-hookable/APKBUILD
index a2b4493be..8ecb797d1 100644
--- a/user/py3-zope-hookable/APKBUILD
+++ b/user/py3-zope-hookable/APKBUILD
@@ -1,28 +1,30 @@
# Contributor: zlg <zlg+adelie@zlg.space>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-zope-hookable
_pkgname=zope.hookable
-pkgver=4.2.0
+pkgver=5.1.0
pkgrel=0
pkgdesc="A library that provides an interface for hookable functions"
url="https://github.com/zopefoundation/zope.hookable"
arch="all"
-options="!check" # needs zope.testing
+# Certified net clean
license="ZPL-2.1"
depends="python3"
-makedepends="python3-dev py3-tox coverage"
+makedepends="python3-dev"
subpackages=""
source="$_pkgname-$pkgver.tar.gz::https://github.com/zopefoundation/$_pkgname/archive/$pkgver.tar.gz"
builddir="$srcdir"/$_pkgname-$pkgver
build() {
- cd "$builddir"
python3 setup.py build
}
+check() {
+ python3 setup.py test
+}
+
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="aeeafff7e5c7cbe3d5944864278896f926086514e75be1d5956e32fc0a3769ac11b008c3855a0816084c7deb64f14c65db49852dac2beaf06420a304af6ebb69 zope.hookable-4.2.0.tar.gz"
+sha512sums="cfcd9fc698fc165317ab1b89a1a82b1c1e08d4dbea6c4f8a2459736150bfb0d82eda4d6c448ac966f2853fe12ec714a782a5947f1c5bc3cd89a573889db564fb zope.hookable-5.1.0.tar.gz"
diff --git a/user/py3-zope-interface/APKBUILD b/user/py3-zope-interface/APKBUILD
index b5e612068..75ca18c2f 100644
--- a/user/py3-zope-interface/APKBUILD
+++ b/user/py3-zope-interface/APKBUILD
@@ -1,8 +1,11 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Contributor: zlg <zlg+adelie@zlg.space>
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=py3-zope-interface
_pkgname=zope.interface
-pkgver=4.6.0
+_p="${_pkgname#?}"
+_p="${_pkgname%"$_p"}"
+pkgver=5.4.0
pkgrel=0
pkgdesc="Separate distribution of the zope.interface package used in Zope"
url="https://zopeinterface.readthedocs.io"
@@ -10,23 +13,21 @@ arch="all"
license="ZPL-2.1"
depends="python3 py3-zope-event"
makedepends="python3-dev"
+checkdepends="py3-wheel"
subpackages=""
-source="https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz"
+source="https://files.pythonhosted.org/packages/source/$_p/$_pkgname/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
python3 setup.py build
}
check() {
- cd "$builddir"
python3 setup.py test
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="cb82144f0b228dd4d2f7cbfba130ee190265bf809d4e928262935c3b5551a3a298df4eba2dfe7ecde96fed27f39f59ab95e9c11f3eadf0fdc13f61b5c046f78f zope.interface-4.6.0.tar.gz"
+sha512sums="ef15d63397e05ad9fc44b2d5d786b0399b6973bb5f4866fab839ff612756f3157f2099d0f5c0469b574a5c8b5920a7c2a5c6eab8e8f84c24d5c43e816669bffe zope.interface-5.4.0.tar.gz"
diff --git a/user/py3-zope-proxy/APKBUILD b/user/py3-zope-proxy/APKBUILD
index 37a7b35b2..c75daac07 100644
--- a/user/py3-zope-proxy/APKBUILD
+++ b/user/py3-zope-proxy/APKBUILD
@@ -1,13 +1,13 @@
# Contributor: zlg <zlg+adelie@zlg.space>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Maintainer:
pkgname=py3-zope-proxy
_pkgname=zope.proxy
-pkgver=4.3.1
+pkgver=4.3.5
pkgrel=0
pkgdesc="Zope module for class and function proxies"
url="https://github.com/zopefoundation/zope.proxy"
arch="all"
-options="!check" # needs zope.testrunner, zope.security
+options="!check" # needs zope.testrunner, zope.security
license="ZPL-2.1"
depends="python3 py3-zope-interface"
makedepends="python3-dev"
@@ -16,13 +16,11 @@ source="$_pkgname-$pkgver.tar.gz::https://github.com/zopefoundation/$_pkgname/ar
builddir="$srcdir"/$_pkgname-$pkgver
build() {
- cd "$builddir"
python3 setup.py build
}
package() {
- cd "$builddir"
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="1072258c35bf23162c4f347060ea79979cbfc551c308e809b7e63f1d9434f566b665954edf3d2ab0b72161fb74b0e707c5904775876188306411ed0401424612 zope.proxy-4.3.1.tar.gz"
+sha512sums="08b48cd284b07ddbceebd689ca8c96c0e9ec3521c8984ab37443d2fb48f9ddcae415ce6cfcc2415f29016e1825c4f5178b90637961e265993731000d450debc9 zope.proxy-4.3.5.tar.gz"
diff --git a/user/qastools/APKBUILD b/user/qastools/APKBUILD
index 1e35fe052..fc15db669 100644
--- a/user/qastools/APKBUILD
+++ b/user/qastools/APKBUILD
@@ -1,22 +1,21 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qastools
-pkgver=0.21.0
+pkgver=0.23.0
pkgrel=0
pkgdesc="ALSA mixer and utilities for Qt"
-url="https://xwmw.org/qastools/index.html"
+url="https://gitlab.com/sebholt/qastools"
arch="all"
-license="GPL-3.0-only"
+license="MIT"
depends="bash"
makedepends="alsa-lib-dev cmake eudev-dev qt5-qtbase-dev qt5-qtsvg-dev
qt5-qttools-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://downloads.sourceforge.net/qastools/qastools_$pkgver.tar.xz"
-builddir="$srcdir/${pkgname}_${pkgver}"
langdir="/usr/share/qastools/l10n"
+source="https://gitlab.com/sebholt/qastools/-/archive/v$pkgver/qastools-v$pkgver.tar.bz2"
+builddir="$srcdir/$pkgname-v$pkgver"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,19 +24,16 @@ build() {
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
- -DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="17c837ef508a5bf1853f597abd38c3c950914c8cefe98f83a47a911462e1da11f410e3fe3f8426e3f17a3aac8980ee6459f50de2480120813202b342a1e3509b qastools_0.21.0.tar.xz"
+sha512sums="543e2f6407ba36f7cb0ce811ee1ceac14652960c58636671fabeaca25d154db263b654d07795ec2a81232b1e177469cbb45617099d40af47d6ab1148443582fb qastools-v0.23.0.tar.bz2"
diff --git a/user/qca/APKBUILD b/user/qca/APKBUILD
index 4eaf94630..c142f5f42 100644
--- a/user/qca/APKBUILD
+++ b/user/qca/APKBUILD
@@ -1,8 +1,8 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qca
-pkgver=2.1.3
-pkgrel=6
+pkgver=2.2.1
+pkgrel=1
pkgdesc="Qt cryptographic architecture"
url="https://userbase.kde.org/QCA"
arch="all"
@@ -10,25 +10,28 @@ license="LGPL-2.1+"
depends=""
makedepends="cmake cyrus-sasl-dev qt5-qtbase-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://download.kde.org/stable/qca/$pkgver/src/qca-${pkgver}.tar.xz"
+source="https://download.kde.org/stable/qca/$pkgver/qca-${pkgver}.tar.xz
+ gcc11.patch
+ test.patch
+ "
build() {
- cd "$builddir"
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DWITH_cyrus-sasl_PLUGIN=yes \
.
make
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="0aec277e0695da2e45298f0a9006213829fe4c449a79969e472947db54f45000ba6e22361b782465bdc03f269b7301d318c843f5a83db459a118e58a03f3116a qca-2.1.3.tar.xz"
+sha512sums="3a0e8aa7cf3ea9a7244facaf1d521ebca2753af37636e7bf5f21c57ae880ac9682ae7d6d9fa5ce41b73568ff9538214956b89cd41228c2cb828d9068c2031a9c qca-2.2.1.tar.xz
+ff21970831239f17813c96d47ab690cc15afbc6a8da68c9c1f65d90f7314963ead2778b609ea74e3f26df4046a58907e726f51c31227714bb50c182c66a26e58 gcc11.patch
+158e75c4b3940cd74b1bbcdffc2c281d771734169cf61e091c78fec40b218fe4f141c2978a33c121b354cb81235a60eecfca070e375d1e54563a354cd98c22e5 test.patch"
diff --git a/user/qca/gcc11.patch b/user/qca/gcc11.patch
new file mode 100644
index 000000000..4fc43d818
--- /dev/null
+++ b/user/qca/gcc11.patch
@@ -0,0 +1,26 @@
+From 32275f1a74c161d2fed8c056b2dd9555687a22f2 Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <aacid@kde.org>
+Date: Sun, 24 Jan 2021 18:43:39 +0100
+Subject: [PATCH] Move moc include outside the QCA namespace
+
+It's the right thing to do and also fixes build with gcc 11
+---
+ src/qca_default.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/qca_default.cpp b/src/qca_default.cpp
+index 7c2a8f89..e31ce3e1 100644
+--- a/src/qca_default.cpp
++++ b/src/qca_default.cpp
+@@ -1358,6 +1358,6 @@ QStringList plugin_priorities(Provider *defaultProvider)
+ return that->shared.plugin_priorities();
+ }
+
+-#include "qca_default.moc"
+-
+ }
++
++#include "qca_default.moc"
+--
+GitLab
+
diff --git a/user/qca/test.patch b/user/qca/test.patch
new file mode 100644
index 000000000..6b9fb12ef
--- /dev/null
+++ b/user/qca/test.patch
@@ -0,0 +1,77 @@
+From b9d914bb3b5b0ecf8568adf1b4610d4da2cde244 Mon Sep 17 00:00:00 2001
+From: Fabian Vogt <fabian@ritter-vogt.de>
+Date: Wed, 15 Sep 2021 10:34:08 +0200
+Subject: [PATCH] Make filewatchunittest much quicker
+
+Use QSignalSpy::wait to avoid waiting needlessly.
+Reduce time to wait for (expected and unexpected) signals to 2s.
+---
+ .../filewatchunittest/filewatchunittest.cpp | 19 +++++++++----------
+ 1 file changed, 9 insertions(+), 10 deletions(-)
+
+diff --git a/unittest/filewatchunittest/filewatchunittest.cpp b/unittest/filewatchunittest/filewatchunittest.cpp
+index d1bc117c..63baa655 100644
+--- a/unittest/filewatchunittest/filewatchunittest.cpp
++++ b/unittest/filewatchunittest/filewatchunittest.cpp
+@@ -40,7 +40,7 @@ void FileWatchUnitTest::cleanupTestCase()
+
+ void FileWatchUnitTest::filewatchTest()
+ {
+- QWARN("Unittest will take about 1 minute. Please wait.");
++ QWARN("Unittest will take about 10 seconds. Please wait.");
+
+ QCA::FileWatch watcher;
+ QCOMPARE( watcher.fileName(), QString() );
+@@ -55,41 +55,40 @@ void FileWatchUnitTest::filewatchTest()
+
+ watcher.setFileName( tempFile->fileName() );
+ QCOMPARE( watcher.fileName(), tempFile->fileName() );
+- QTest::qWait(7000);
++ QVERIFY(!spy.wait(2000));
+ QCOMPARE( spy.count(), 0 );
+ tempFile->close();
+- QTest::qWait(7000);
++ QVERIFY(!spy.wait(2000));
+ QCOMPARE( spy.count(), 0 );
+
+ tempFile->open();
+ tempFile->write("foo");
+ tempFile->flush();
+- QTest::qWait(7000);
++ QVERIFY(spy.wait(2000));
+ QCOMPARE( spy.count(), 1 );
+
+ tempFile->close();
+- QTest::qWait(7000);
+-
++ QVERIFY(!spy.wait(2000));
+ QCOMPARE( spy.count(), 1 );
+
+ tempFile->open();
+ tempFile->write("foo");
+ tempFile->flush();
+- QTest::qWait(7000);
++ QVERIFY(spy.wait(2000));
+ QCOMPARE( spy.count(), 2 );
+
+ tempFile->write("bar");
+ tempFile->flush();
+- QTest::qWait(7000);
++ QVERIFY(spy.wait(2000));
+ QCOMPARE( spy.count(), 3 );
+
+ tempFile->close();
+- QTest::qWait(7000);
++ QVERIFY(!spy.wait(2000));
+
+ QCOMPARE( spy.count(), 3 );
+
+ delete tempFile;
+- QTest::qWait(7000);
++ QVERIFY(spy.wait(2000));
+ QCOMPARE( spy.count(), 4 );
+ }
+
+--
+GitLab
+
diff --git a/user/qemu/APKBUILD b/user/qemu/APKBUILD
index 9d7239c45..5e716695d 100644
--- a/user/qemu/APKBUILD
+++ b/user/qemu/APKBUILD
@@ -1,11 +1,12 @@
-# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
+# Contributor: Sergey Lukin <sergej.lukin@gmail.com>
# Contributor: Valery Kartel <valery.kartel@gmail.com>
# Contributor: Jakub Jirutka <jakub@jirutka.cz>
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Contributor: Max Rees <maxcrees@me.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qemu
-pkgver=3.0.0
-pkgrel=2
+pkgver=4.2.0
+pkgrel=3
pkgdesc="Machine emulator and virtualisation software"
url="https://www.qemu.org/"
arch="all"
@@ -27,13 +28,14 @@ makedepends="
libjpeg-turbo-dev
libnfs-dev
libpng-dev
- libssh2-dev
+ libslirp-dev
libusb-dev
libx11-dev
libxml2-dev
linux-headers
lzo-dev
ncurses-dev
+ py3-sphinx
python3
snappy-dev
spice-dev
@@ -109,7 +111,6 @@ _system_subsystems="
system-or1k
system-ppc
system-ppc64
- system-ppcemb
system-riscv32
system-riscv64
system-s390x
@@ -151,12 +152,16 @@ source="https://download.qemu.org/$pkgname-$pkgver.tar.xz
ncurses.patch
ignore-signals-33-and-64-to-allow-golang-emulation.patch
0001-linux-user-fix-build-with-musl-on-ppc64le.patch
- fix-sockios-header.patch
test-crypto-ivgen-skip-essiv.patch
ppc32-musl-support.patch
signal-fixes.patch
sysinfo-header.patch
fix-lm32-underlinking.patch
+ fix-no-pie-ld-flag.patch
+ time64.patch
+ MAP_SYNC-fix.patch
+ CVE-2020-1711.patch
+ CVE-2020-11102.patch
$pkgname-guest-agent.confd
$pkgname-guest-agent.initd
@@ -167,31 +172,68 @@ builddir="$srcdir/$pkgname-$pkgver"
# secfixes:
# 2.8.1-r1:
-# - CVE-2016-7994
-# - CVE-2016-7995
-# - CVE-2016-8576
-# - CVE-2016-8577
-# - CVE-2016-8578
-# - CVE-2016-8668
-# - CVE-2016-8909
-# - CVE-2016-8910
-# - CVE-2016-9101
-# - CVE-2016-9102
-# - CVE-2016-9103
-# - CVE-2016-9104
-# - CVE-2016-9105
-# - CVE-2016-9106
-# - CVE-2017-2615
-# - CVE-2017-2620
-# - CVE-2017-5525
-# - CVE-2017-5552
-# - CVE-2017-5578
-# - CVE-2017-5579
-# - CVE-2017-5667
-# - CVE-2017-5856
-# - CVE-2017-5857
-# - CVE-2017-5898
-# - CVE-2017-5931
+# - CVE-2016-7994
+# - CVE-2016-7995
+# - CVE-2016-8576
+# - CVE-2016-8577
+# - CVE-2016-8578
+# - CVE-2016-8668
+# - CVE-2016-8909
+# - CVE-2016-8910
+# - CVE-2016-9101
+# - CVE-2016-9102
+# - CVE-2016-9103
+# - CVE-2016-9104
+# - CVE-2016-9105
+# - CVE-2016-9106
+# - CVE-2017-2615
+# - CVE-2017-2620
+# - CVE-2017-5525
+# - CVE-2017-5552
+# - CVE-2017-5578
+# - CVE-2017-5579
+# - CVE-2017-5667
+# - CVE-2017-5856
+# - CVE-2017-5857
+# - CVE-2017-5898
+# - CVE-2017-5931
+# 4.2.0-r0:
+# - CVE-2018-10839
+# - CVE-2018-16847
+# - CVE-2018-16867
+# - CVE-2018-16872
+# - CVE-2018-17958
+# - CVE-2018-17962
+# - CVE-2018-17963
+# - CVE-2018-18849
+# - CVE-2018-18954
+# - CVE-2018-19364
+# - CVE-2018-19489
+# - CVE-2018-20123
+# - CVE-2018-20124
+# - CVE-2018-20125
+# - CVE-2018-20126
+# - CVE-2018-20191
+# - CVE-2018-20216
+# - CVE-2018-20815
+# - CVE-2019-3812
+# - CVE-2019-5008
+# - CVE-2019-6501
+# - CVE-2019-6778
+# - CVE-2019-8934
+# - CVE-2019-9824
+# - CVE-2019-12068
+# - CVE-2019-12155
+# - CVE-2019-13164
+# - CVE-2019-14378
+# - CVE-2019-15034
+# - CVE-2019-15890
+# - CVE-2019-20382
+# - CVE-2020-1711
+# - CVE-2020-7039
+# - CVE-2020-8608
+# 4.2.0-r1:
+# - CVE-2020-11102
prepare() {
default_prepare # apply patches
@@ -217,6 +259,7 @@ _compile_common() {
--disable-gcrypt \
--cc="${CC:-gcc}" \
--python="/usr/bin/python3" \
+ --enable-slirp=system \
"$@"
make ARFLAGS="rc"
}
@@ -232,7 +275,6 @@ _compile_system() {
--enable-cap-ng \
--enable-linux-aio \
--enable-usb-redir \
- --enable-libssh2 \
--enable-vhost-net \
--enable-snappy \
--enable-tpm \
@@ -247,16 +289,19 @@ _compile_system() {
build() {
local systems
+
mkdir -p "$builddir"/build \
"$builddir"/build-user \
"$builddir"/build-gtk
+ msg "Building -user..."
cd "$builddir"/build-user
_compile_common \
--enable-linux-user \
--disable-system \
--static
+ msg "Building -system..."
cd "$builddir"/build
_compile_system \
--enable-vnc \
@@ -267,10 +312,10 @@ build() {
--disable-gtk
if [ -n "$_arch" ]; then
+ msg "Building -gtk..."
cd "$builddir"/build-gtk
_compile_system \
--enable-gtk \
- --with-gtkabi=3.0 \
--disable-vnc \
--disable-spice \
--disable-guest-agent \
@@ -286,9 +331,11 @@ check() {
}
package() {
+ msg "Installing -user..."
cd "$builddir"/build-user
make DESTDIR="$pkgdir" install
+ msg "Installing -system..."
cd "$builddir"/build
make DESTDIR="$pkgdir" install
@@ -314,8 +361,8 @@ package() {
}
_subsys() {
- local name=${1:-"${subpkgname#$pkgname-}"}
- pkgdesc="Qemu ${name/-/ } emulator"
+ local name="${1:-"${subpkgname#$pkgname-}"}"
+ pkgdesc="Qemu $(printf '%s' "$name" | tr - ' ') emulator"
options=""
depends=""
case "$name" in
@@ -394,7 +441,7 @@ guest() {
"$subpkgdir"/etc/conf.d/$pkgname-guest-agent
}
-sha512sums="a764302f50b9aca4134bbbc1f361b98e71240cdc7b25600dfe733bf4cf17bd86000bd28357697b08f3b656899dceb9e459350b8d55557817444ed5d7fa380a5a qemu-3.0.0.tar.xz
+sha512sums="2a79973c2b07c53e8c57a808ea8add7b6b2cbca96488ed5d4b669ead8c9318907dec2b6109f180fc8ca8f04c0f73a56e82b3a527b5626b799d7e849f2474ec56 qemu-4.2.0.tar.xz
405008589cad1c8b609eca004d520bf944366e8525f85a19fc6e283c95b84b6c2429822ba064675823ab69f1406a57377266a65021623d1cd581e7db000134fd 0001-elfload-load-PIE-executables-to-right-address.patch
1ac043312864309e19f839a699ab2485bca51bbf3d5fdb39f1a87b87e3cbdd8cbda1a56e6b5c9ffccd65a8ac2f600da9ceb8713f4dbba26f245bc52bcd8a1c56 0001-linux-user-fix-build-with-musl-on-aarch64.patch
224f5b44da749921e8a821359478c5238d8b6e24a9c0b4c5738c34e82f3062ec4639d495b8b5883d304af4a0d567e38aa6623aac1aa3a7164a5757c036528ac0 musl-F_SHLCK-and-F_EXLCK.patch
@@ -403,12 +450,16 @@ sha512sums="a764302f50b9aca4134bbbc1f361b98e71240cdc7b25600dfe733bf4cf17bd86000b
b6ed02aaf95a9bb30a5f107d35371207967edca058f3ca11348b0b629ea7a9c4baa618db68a3df72199eea6d86d14ced74a5a229d17604cc3f0adedcfeae7a73 ncurses.patch
fd178f2913639a0c33199b3880cb17536961f2b3ff171c12b27f4be6bca032d6b88fd16302d09c692bb34883346babef5c44407a6804b20a39a465bb2bc85136 ignore-signals-33-and-64-to-allow-golang-emulation.patch
d8933df9484158c2b4888254e62117d78f8ed7c18527b249419f39c2b2ab1afa148010884b40661f8965f1ef3105580fceffdfddbb2c9221dc1c62066722ba65 0001-linux-user-fix-build-with-musl-on-ppc64le.patch
-39590476a4ebd7c1e79a4f0451b24c75b1817a2a83abaa1f71bb60b225d772152f0af8f3e51ff65645e378c536ffa6ff551dade52884d03a14b7c6a19c5c97d4 fix-sockios-header.patch
8b8db136f78bd26b5da171effa9e11016ec2bc3e2fc8107228b5543b47aa370978ed883794aa4f917f334e284a5b49e82070e1da2d31d49301195b6713a48eff test-crypto-ivgen-skip-essiv.patch
fb0130fa4e8771b23ae337ea3e5e29fd5f7dcfe7f9f7a68968f5b059bb4dd1336b0d04c118840d55885bc784a96a99b28aeacbc6a5549b2e6750c9d3099a897c ppc32-musl-support.patch
c6436b1cc986788baccd5fe0f9d23c7db9026f6b723260611cf894bd94ee830140a17ee5859efe0dad0ca3bfe9caae1269bc5c9ab4c6e696f35c7857c1b5c86b signal-fixes.patch
698f6b134f4ca87f4de62caf7a656841a40a451b8686ca95928f67a296e58a7493d432d9baa5f6360917865aa4929600baf1699993b0600923a066ca9d45d1da sysinfo-header.patch
2828cc612539aa93b5789de7de6d4f85d3cf82311484c0fe91fdd3efeb972057e2baa2a3809ed633d6caa1785642d49196cb282b095d7553c510c47ce7d6a702 fix-lm32-underlinking.patch
+61a0bc1c3cc902f3ead47c4f3a7651768e8f01d655494c53600f28cecf27cdb3d2f3e3778750154bb54e92006005b6ca629e30683c47d18dd4a20feafa64c8cd fix-no-pie-ld-flag.patch
+44db77cab330075da601cc6083678c5f3ed1528936a8fd81148875bc67ed53332b21466c79ac6e5cf2b2e7d3824392dd7a52d0aaed03689be9b2dfddd5abba06 time64.patch
+d7de79ea74e36702cac4a59e472564a55f0a663be7e63c3755e32b4b5dfbc04b390ee79f09f43f6ae706ee2aec9e005eade3c0fd4a202db60d11f436874a17d7 MAP_SYNC-fix.patch
+0ea3745c45507c00c3c036241992d594b5f7e9aa1f0fa9b425dd222390066e1ea2d0aa4923bde0e7f27b7cc2f759a122ae4b600c2fa682a5aad509e7d03ccad9 CVE-2020-1711.patch
+5d9e7e065c6716024eab4984331071f42dcd5363c5456023f81a3ef0329ae578348d0f875868f85c9e1fee5e435d86e2eb7e342a957c36cd099cb5d5d9f3a78d CVE-2020-11102.patch
d90c034cae3f9097466854ed1a9f32ab4b02089fcdf7320e8f4da13b2b1ff65067233f48809911485e4431d7ec1a22448b934121bc9522a2dc489009e87e2b1f qemu-guest-agent.confd
1cd24c2444c5935a763c501af2b0da31635aad9cf62e55416d6477fcec153cddbe7de205d99616def11b085e0dd366ba22463d2270f831d884edbc307c7864a6 qemu-guest-agent.initd
9b7a89b20fcf737832cb7b4d5dc7d8301dd88169cbe5339eda69fbb51c2e537d8cb9ec7cf37600899e734209e63410d50d0821bce97e401421db39c294d97be2 80-kvm.rules
diff --git a/user/qemu/CVE-2020-11102.patch b/user/qemu/CVE-2020-11102.patch
new file mode 100644
index 000000000..c437a7d47
--- /dev/null
+++ b/user/qemu/CVE-2020-11102.patch
@@ -0,0 +1,144 @@
+From 8ffb7265af64ec81748335ec8f20e7ab542c3850 Mon Sep 17 00:00:00 2001
+From: Prasad J Pandit <pjp@fedoraproject.org>
+Date: Tue, 24 Mar 2020 22:57:22 +0530
+Subject: [PATCH 1/1] net: tulip: check frame size and r/w data length
+
+Tulip network driver while copying tx/rx buffers does not check
+frame size against r/w data length. This may lead to OOB buffer
+access. Add check to avoid it.
+
+Limit iterations over descriptors to avoid potential infinite
+loop issue in tulip_xmit_list_update.
+
+Reported-by: Li Qiang <pangpei.lq@antfin.com>
+Reported-by: Ziming Zhang <ezrakiez@gmail.com>
+Reported-by: Jason Wang <jasowang@redhat.com>
+Tested-by: Li Qiang <liq3ea@gmail.com>
+Reviewed-by: Li Qiang <liq3ea@gmail.com>
+Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org>
+Signed-off-by: Jason Wang <jasowang@redhat.com>
+---
+ hw/net/tulip.c | 36 +++++++++++++++++++++++++++---------
+ 1 file changed, 27 insertions(+), 9 deletions(-)
+
+diff --git a/hw/net/tulip.c b/hw/net/tulip.c
+index cfac271..1295f51 100644
+--- a/hw/net/tulip.c
++++ b/hw/net/tulip.c
+@@ -170,6 +170,10 @@ static void tulip_copy_rx_bytes(TULIPState *s, struct tulip_descriptor *desc)
+ } else {
+ len = s->rx_frame_len;
+ }
++
++ if (s->rx_frame_len + len > sizeof(s->rx_frame)) {
++ return;
++ }
+ pci_dma_write(&s->dev, desc->buf_addr1, s->rx_frame +
+ (s->rx_frame_size - s->rx_frame_len), len);
+ s->rx_frame_len -= len;
+@@ -181,6 +185,10 @@ static void tulip_copy_rx_bytes(TULIPState *s, struct tulip_descriptor *desc)
+ } else {
+ len = s->rx_frame_len;
+ }
++
++ if (s->rx_frame_len + len > sizeof(s->rx_frame)) {
++ return;
++ }
+ pci_dma_write(&s->dev, desc->buf_addr2, s->rx_frame +
+ (s->rx_frame_size - s->rx_frame_len), len);
+ s->rx_frame_len -= len;
+@@ -227,7 +235,8 @@ static ssize_t tulip_receive(TULIPState *s, const uint8_t *buf, size_t size)
+
+ trace_tulip_receive(buf, size);
+
+- if (size < 14 || size > 2048 || s->rx_frame_len || tulip_rx_stopped(s)) {
++ if (size < 14 || size > sizeof(s->rx_frame) - 4
++ || s->rx_frame_len || tulip_rx_stopped(s)) {
+ return 0;
+ }
+
+@@ -275,7 +284,6 @@ static ssize_t tulip_receive_nc(NetClientState *nc,
+ return tulip_receive(qemu_get_nic_opaque(nc), buf, size);
+ }
+
+-
+ static NetClientInfo net_tulip_info = {
+ .type = NET_CLIENT_DRIVER_NIC,
+ .size = sizeof(NICState),
+@@ -558,7 +566,7 @@ static void tulip_tx(TULIPState *s, struct tulip_descriptor *desc)
+ if ((s->csr[6] >> CSR6_OM_SHIFT) & CSR6_OM_MASK) {
+ /* Internal or external Loopback */
+ tulip_receive(s, s->tx_frame, s->tx_frame_len);
+- } else {
++ } else if (s->tx_frame_len <= sizeof(s->tx_frame)) {
+ qemu_send_packet(qemu_get_queue(s->nic),
+ s->tx_frame, s->tx_frame_len);
+ }
+@@ -570,23 +578,31 @@ static void tulip_tx(TULIPState *s, struct tulip_descriptor *desc)
+ }
+ }
+
+-static void tulip_copy_tx_buffers(TULIPState *s, struct tulip_descriptor *desc)
++static int tulip_copy_tx_buffers(TULIPState *s, struct tulip_descriptor *desc)
+ {
+ int len1 = (desc->control >> TDES1_BUF1_SIZE_SHIFT) & TDES1_BUF1_SIZE_MASK;
+ int len2 = (desc->control >> TDES1_BUF2_SIZE_SHIFT) & TDES1_BUF2_SIZE_MASK;
+
++ if (s->tx_frame_len + len1 > sizeof(s->tx_frame)) {
++ return -1;
++ }
+ if (len1) {
+ pci_dma_read(&s->dev, desc->buf_addr1,
+ s->tx_frame + s->tx_frame_len, len1);
+ s->tx_frame_len += len1;
+ }
+
++ if (s->tx_frame_len + len2 > sizeof(s->tx_frame)) {
++ return -1;
++ }
+ if (len2) {
+ pci_dma_read(&s->dev, desc->buf_addr2,
+ s->tx_frame + s->tx_frame_len, len2);
+ s->tx_frame_len += len2;
+ }
+ desc->status = (len1 + len2) ? 0 : 0x7fffffff;
++
++ return 0;
+ }
+
+ static void tulip_setup_filter_addr(TULIPState *s, uint8_t *buf, int n)
+@@ -651,13 +667,15 @@ static uint32_t tulip_ts(TULIPState *s)
+
+ static void tulip_xmit_list_update(TULIPState *s)
+ {
++#define TULIP_DESC_MAX 128
++ uint8_t i = 0;
+ struct tulip_descriptor desc;
+
+ if (tulip_ts(s) != CSR5_TS_SUSPENDED) {
+ return;
+ }
+
+- for (;;) {
++ for (i = 0; i < TULIP_DESC_MAX; i++) {
+ tulip_desc_read(s, s->current_tx_desc, &desc);
+ tulip_dump_tx_descriptor(s, &desc);
+
+@@ -675,10 +693,10 @@ static void tulip_xmit_list_update(TULIPState *s)
+ s->tx_frame_len = 0;
+ }
+
+- tulip_copy_tx_buffers(s, &desc);
+-
+- if (desc.control & TDES1_LS) {
+- tulip_tx(s, &desc);
++ if (!tulip_copy_tx_buffers(s, &desc)) {
++ if (desc.control & TDES1_LS) {
++ tulip_tx(s, &desc);
++ }
+ }
+ }
+ tulip_desc_write(s, s->current_tx_desc, &desc);
+--
+1.8.3.1
+
diff --git a/user/qemu/CVE-2020-1711.patch b/user/qemu/CVE-2020-1711.patch
new file mode 100644
index 000000000..c57b5c984
--- /dev/null
+++ b/user/qemu/CVE-2020-1711.patch
@@ -0,0 +1,61 @@
+From 693fd2acdf14dd86c0bf852610f1c2cca80a74dc Mon Sep 17 00:00:00 2001
+From: Felipe Franciosi <felipe@nutanix.com>
+Date: Thu, 23 Jan 2020 12:44:59 +0000
+Subject: [PATCH] iscsi: Cap block count from GET LBA STATUS (CVE-2020-1711)
+
+When querying an iSCSI server for the provisioning status of blocks (via
+GET LBA STATUS), Qemu only validates that the response descriptor zero's
+LBA matches the one requested. Given the SCSI spec allows servers to
+respond with the status of blocks beyond the end of the LUN, Qemu may
+have its heap corrupted by clearing/setting too many bits at the end of
+its allocmap for the LUN.
+
+A malicious guest in control of the iSCSI server could carefully program
+Qemu's heap (by selectively setting the bitmap) and then smash it.
+
+This limits the number of bits that iscsi_co_block_status() will try to
+update in the allocmap so it can't overflow the bitmap.
+
+Fixes: CVE-2020-1711
+Cc: qemu-stable@nongnu.org
+Signed-off-by: Felipe Franciosi <felipe@nutanix.com>
+Signed-off-by: Peter Turschmid <peter.turschm@nutanix.com>
+Signed-off-by: Raphael Norwitz <raphael.norwitz@nutanix.com>
+Signed-off-by: Kevin Wolf <kwolf@redhat.com>
+---
+ block/iscsi.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/block/iscsi.c b/block/iscsi.c
+index 2aea7e3f13..cbd57294ab 100644
+--- a/block/iscsi.c
++++ b/block/iscsi.c
+@@ -701,7 +701,7 @@ static int coroutine_fn iscsi_co_block_status(BlockDriverState *bs,
+ struct scsi_get_lba_status *lbas = NULL;
+ struct scsi_lba_status_descriptor *lbasd = NULL;
+ struct IscsiTask iTask;
+- uint64_t lba;
++ uint64_t lba, max_bytes;
+ int ret;
+
+ iscsi_co_init_iscsitask(iscsilun, &iTask);
+@@ -721,6 +721,7 @@ static int coroutine_fn iscsi_co_block_status(BlockDriverState *bs,
+ }
+
+ lba = offset / iscsilun->block_size;
++ max_bytes = (iscsilun->num_blocks - lba) * iscsilun->block_size;
+
+ qemu_mutex_lock(&iscsilun->mutex);
+ retry:
+@@ -764,7 +765,7 @@ retry:
+ goto out_unlock;
+ }
+
+- *pnum = (int64_t) lbasd->num_blocks * iscsilun->block_size;
++ *pnum = MIN((int64_t) lbasd->num_blocks * iscsilun->block_size, max_bytes);
+
+ if (lbasd->provisioning == SCSI_PROVISIONING_TYPE_DEALLOCATED ||
+ lbasd->provisioning == SCSI_PROVISIONING_TYPE_ANCHORED) {
+--
+2.25.1
+
diff --git a/user/qemu/MAP_SYNC-fix.patch b/user/qemu/MAP_SYNC-fix.patch
new file mode 100644
index 000000000..e13609d73
--- /dev/null
+++ b/user/qemu/MAP_SYNC-fix.patch
@@ -0,0 +1,22 @@
+diff --git a/util/mmap-alloc.c b/util/mmap-alloc.c
+index f7f177d..7598960 100644
+--- a/util/mmap-alloc.c
++++ b/util/mmap-alloc.c
+@@ -10,14 +10,16 @@
+ * later. See the COPYING file in the top-level directory.
+ */
+
++#include "qemu/osdep.h"
++
+ #ifdef CONFIG_LINUX
+ #include <linux/mman.h>
++#include <asm-generic/mman.h> /* for ppc64le */
+ #else /* !CONFIG_LINUX */
+ #define MAP_SYNC 0x0
+ #define MAP_SHARED_VALIDATE 0x0
+ #endif /* CONFIG_LINUX */
+
+-#include "qemu/osdep.h"
+ #include "qemu/mmap-alloc.h"
+ #include "qemu/host-utils.h"
+
diff --git a/user/qemu/fix-no-pie-ld-flag.patch b/user/qemu/fix-no-pie-ld-flag.patch
new file mode 100644
index 000000000..5501a267f
--- /dev/null
+++ b/user/qemu/fix-no-pie-ld-flag.patch
@@ -0,0 +1,71 @@
+This patch differs from upstream in the following way:
+
+ * It applies to 4.2.0
+
+From bbd2d5a8120771ec59b86a80a1f51884e0a26e53 Mon Sep 17 00:00:00 2001
+From: Christian Ehrhardt <christian.ehrhardt@canonical.com>
+Date: Mon, 14 Dec 2020 16:09:38 +0100
+Subject: [PATCH] build: -no-pie is no functional linker flag
+
+Recent binutils changes dropping unsupported options [1] caused a build
+issue in regard to the optionroms.
+
+ ld -m elf_i386 -T /<<PKGBUILDDIR>>/pc-bios/optionrom//flat.lds -no-pie \
+ -s -o multiboot.img multiboot.o
+ ld.bfd: Error: unable to disambiguate: -no-pie (did you mean --no-pie ?)
+
+This isn't really a regression in ld.bfd, filing the bug upstream
+revealed that this never worked as a ld flag [2] - in fact it seems we
+were by accident setting --nmagic).
+
+Since it never had the wanted effect this usage of LDFLAGS_NOPIE, should be
+droppable without any effect. This also is the only use-case of LDFLAGS_NOPIE
+in .mak, therefore we can also remove it from being added there.
+
+[1]: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=983d925d
+[2]: https://sourceware.org/bugzilla/show_bug.cgi?id=27050#c5
+
+Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
+Message-Id: <20201214150938.1297512-1-christian.ehrhardt@canonical.com>
+Cc: qemu-stable@nongnu.org
+Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
+---
+ configure | 3 ---
+ pc-bios/optionrom/Makefile | 1 -
+ 2 files changed, 4 deletions(-)
+
+diff -ur a/configure b/configure
+--- a/configure 2023-10-05 04:04:33.203940722 +0000
++++ b/configure 2023-10-05 04:04:58.968996416 +0000
+@@ -2045,7 +2045,6 @@
+ # check we support --no-pie first...
+ if compile_prog "-Werror -fno-pie" "-no-pie"; then
+ CFLAGS_NOPIE="-fno-pie"
+- LDFLAGS_NOPIE="-nopie"
+ fi
+
+ if compile_prog "-fPIE -DPIE" "-pie"; then
+@@ -7515,7 +7514,6 @@
+ echo "QEMU_CFLAGS += -Wbitwise -Wno-transparent-union -Wno-old-initializer -Wno-non-pointer-null" >> $config_host_mak
+ fi
+ echo "LDFLAGS=$LDFLAGS" >> $config_host_mak
+-echo "LDFLAGS_NOPIE=$LDFLAGS_NOPIE" >> $config_host_mak
+ echo "QEMU_LDFLAGS=$QEMU_LDFLAGS" >> $config_host_mak
+ echo "LD_REL_FLAGS=$LD_REL_FLAGS" >> $config_host_mak
+ echo "LD_I386_EMULATION=$ld_i386_emulation" >> $config_host_mak
+diff -ur a/pc-bios/optionrom/Makefile b/pc-bios/optionrom/Makefile
+--- a/pc-bios/optionrom/Makefile 2023-10-05 04:04:34.143979321 +0000
++++ b/pc-bios/optionrom/Makefile 2023-10-05 04:06:01.267530732 +0000
+@@ -47,10 +47,10 @@
+ $(call quiet-command,$(CPP) $(QEMU_INCLUDES) $(QEMU_DGFLAGS) -c -o - $< | $(AS) $(ASFLAGS) -o $@,"AS","$(TARGET_DIR)$@")
+
+ pvh.img: pvh.o pvh_main.o
+- $(call quiet-command,$(LD) $(LDFLAGS_NOPIE) -m $(LD_I386_EMULATION) -T $(SRC_PATH)/pc-bios/optionrom/flat.lds -s -o $@ $^,"BUILD","$(TARGET_DIR)$@")
++ $(call quiet-command,$(LD) -m $(LD_I386_EMULATION) -T $(SRC_PATH)/pc-bios/optionrom/flat.lds -s -o $@ $^,"BUILD","$(TARGET_DIR)$@")
+
+ %.img: %.o
+- $(call quiet-command,$(LD) $(LDFLAGS_NOPIE) -m $(LD_I386_EMULATION) -T $(SRC_PATH)/pc-bios/optionrom/flat.lds -s -o $@ $<,"BUILD","$(TARGET_DIR)$@")
++ $(call quiet-command,$(LD) -m $(LD_I386_EMULATION) -T $(SRC_PATH)/pc-bios/optionrom/flat.lds -s -o $@ $<,"BUILD","$(TARGET_DIR)$@")
+
+ %.raw: %.img
+ $(call quiet-command,$(OBJCOPY) -O binary -j .text $< $@,"BUILD","$(TARGET_DIR)$@")
diff --git a/user/qemu/fix-sockios-header.patch b/user/qemu/fix-sockios-header.patch
deleted file mode 100644
index 1f3cd767c..000000000
--- a/user/qemu/fix-sockios-header.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/linux-user/syscall.c b/linux-user/syscall.c
-index 43d0562..afa0ac4 100644
---- a/linux-user/syscall.c
-+++ b/linux-user/syscall.c
-@@ -59,6 +59,7 @@ int __clone2(int (*fn)(void *), void *child_stack_base,
- #include <linux/icmp.h>
- #include <linux/icmpv6.h>
- #include <linux/errqueue.h>
-+#include <linux/sockios.h>
- #include <linux/random.h>
- #include "qemu-common.h"
- #ifdef CONFIG_TIMERFD
- #include <sys/timerfd.h>
diff --git a/user/qemu/qemu.pre-install b/user/qemu/qemu.pre-install
index 2ef9b5366..2927f9aff 100644
--- a/user/qemu/qemu.pre-install
+++ b/user/qemu/qemu.pre-install
@@ -1,6 +1,6 @@
#!/bin/sh
-addgroup -S -g 34 kvm 2>/dev/null
-addgroup -S -g 36 qemu 2>/dev/null
+groupadd -r -g 34 kvm 2>/dev/null
+groupadd -r -g 36 qemu 2>/dev/null
exit 0
diff --git a/user/qemu/time64.patch b/user/qemu/time64.patch
new file mode 100644
index 000000000..342231146
--- /dev/null
+++ b/user/qemu/time64.patch
@@ -0,0 +1,40 @@
+--- qemu-3.0.0/hw/input/virtio-input-host.c.old 2018-08-14 19:10:34.000000000 +0000
++++ qemu-3.0.0/hw/input/virtio-input-host.c 2020-01-24 06:12:08.788062930 +0000
+@@ -193,13 +193,16 @@
+ {
+ VirtIOInputHost *vih = VIRTIO_INPUT_HOST(vinput);
+ struct input_event evdev;
++ struct timeval tv;
+ int rc;
+
+- if (gettimeofday(&evdev.time, NULL)) {
++ if (gettimeofday(&tv, NULL)) {
+ perror("virtio_input_host_handle_status: gettimeofday");
+ return;
+ }
+
++ evdev.input_event_sec = tv.tv_sec;
++ evdev.input_event_usec = tv.tv_usec;
+ evdev.type = le16_to_cpu(event->type);
+ evdev.code = le16_to_cpu(event->code);
+ evdev.value = le32_to_cpu(event->value);
+--- qemu-4.2.0/contrib/vhost-user-input/main.c.old 2019-12-12 18:20:47.000000000 +0000
++++ qemu-4.2.0/contrib/vhost-user-input/main.c 2020-06-15 04:46:15.198762807 +0000
+@@ -115,13 +115,16 @@
+ static void vi_handle_status(VuInput *vi, virtio_input_event *event)
+ {
+ struct input_event evdev;
++ struct timeval tv;
+ int rc;
+
+- if (gettimeofday(&evdev.time, NULL)) {
++ if (gettimeofday(&tv, NULL)) {
+ perror("vi_handle_status: gettimeofday");
+ return;
+ }
+
++ evdev.input_event_sec = tv.tv_sec;
++ evdev.input_event_usec = tv.tv_usec;
+ evdev.type = le16toh(event->type);
+ evdev.code = le16toh(event->code);
+ evdev.value = le32toh(event->value);
diff --git a/user/qml-box2d/APKBUILD b/user/qml-box2d/APKBUILD
index 701e06871..1919cb10a 100644
--- a/user/qml-box2d/APKBUILD
+++ b/user/qml-box2d/APKBUILD
@@ -15,13 +15,11 @@ source="qml-box2d-$pkgver.tar.gz::https://github.com/qml-box2d/qml-box2d/archive
builddir="$srcdir/qml-box2d-$_hash"
build() {
- cd "$builddir"
qmake
make
}
package() {
- cd "$builddir"
make install INSTALL_ROOT="$pkgdir"
}
diff --git a/user/qpdf/APKBUILD b/user/qpdf/APKBUILD
index 663813fcc..17f0a600b 100644
--- a/user/qpdf/APKBUILD
+++ b/user/qpdf/APKBUILD
@@ -1,17 +1,19 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=qpdf
-pkgver=8.4.0
+pkgver=8.4.2
pkgrel=0
pkgdesc="Command-line tools and library for transforming PDF files"
url="http://qpdf.sourceforge.net"
arch="all"
license="Apache-2.0 OR Artistic-2.0"
depends=""
-makedepends="bash libjpeg-turbo-dev zlib-dev"
checkdepends="coreutils perl"
+makedepends="bash libjpeg-turbo-dev zlib-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-libs
$pkgname-fix-qdf:fix_qdf:noarch"
-source="https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz"
+source="https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz
+ fix-deprecated-use-of-egrep.patch
+ "
# secfixes:
# 7.0.0-r0:
@@ -57,4 +59,5 @@ fix_qdf() {
mv "$pkgdir"/usr/bin/fix-qdf "$subpkgdir"/usr/bin/
}
-sha512sums="13225c6285311e8fe89970971b082b9613e70d474ee71dd5572f1ae268234d366c2c9c7bf427c4758a746a1a27ecc0127d31044ab501dbc08885c8aa0a514028 qpdf-8.4.0.tar.gz"
+sha512sums="9cde046fb5e42dc331933294155583fb20408704a0cab3075cc3e97bd4643e3178e4162b8de7434aa2304097e7734f985fdc8e7b05cc028c37193dce91797f7a qpdf-8.4.2.tar.gz
+7fe1d3fd8161f1a757e08fdfa921b78c04f7af0bccc0ec37f15c21bfb4b86b945883920b1e476078476c60abea0b045839f0648274f6ddb04e4150708dfde31f fix-deprecated-use-of-egrep.patch"
diff --git a/user/qpdf/fix-deprecated-use-of-egrep.patch b/user/qpdf/fix-deprecated-use-of-egrep.patch
new file mode 100644
index 000000000..a07b89a36
--- /dev/null
+++ b/user/qpdf/fix-deprecated-use-of-egrep.patch
@@ -0,0 +1,22 @@
+diff -ur a/qpdf/qtest/qpdf/diff-encrypted b/qpdf/qtest/qpdf/diff-encrypted
+--- a/qpdf/qtest/qpdf/diff-encrypted 2023-04-10 14:03:24.943059112 +0000
++++ b/qpdf/qtest/qpdf/diff-encrypted 2023-04-10 14:04:26.012776963 +0000
+@@ -1,5 +1,5 @@
+ #!/bin/sh
+-lines=$(expr 0 + $(diff "$1" "$2" | egrep '^[<>]' | egrep -v '(Date|InstanceID)' | wc -l))
++lines=$(expr 0 + $(diff "$1" "$2" | grep -E '^[<>]' | grep -E -v '(Date|InstanceID)' | wc -l))
+ if [ "$lines" = "0" ]; then
+ echo okay
+ else
+diff -ur a/qpdf/qtest/qpdf/diff-ignore-ID-version b/qpdf/qtest/qpdf/diff-ignore-ID-version
+--- a/qpdf/qtest/qpdf/diff-ignore-ID-version 2023-04-10 14:03:24.939059262 +0000
++++ b/qpdf/qtest/qpdf/diff-ignore-ID-version 2023-04-10 14:04:51.635819337 +0000
+@@ -1,6 +1,6 @@
+ #!/bin/sh
+-lines=$(expr 0 + $(diff "$1" "$2" | egrep '^[<>]' | \
+- egrep -v '/ID' | egrep -v '%PDF-' | wc -l))
++lines=$(expr 0 + $(diff "$1" "$2" | grep -E '^[<>]' | \
++ grep -E -v '/ID' | grep -E -v '%PDF-' | wc -l))
+ if [ "$lines" = "0" ]; then
+ echo okay
+ else
diff --git a/user/qpdfview/APKBUILD b/user/qpdfview/APKBUILD
index 612cb251e..5e6f4d467 100644
--- a/user/qpdfview/APKBUILD
+++ b/user/qpdfview/APKBUILD
@@ -1,29 +1,30 @@
# Contributor: Max Rees <maxcrees@me.com>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=qpdfview
-pkgver=0.4.16
-pkgrel=1
+pkgver=0.4.18
+pkgrel=2
pkgdesc="A tabbed document viewer"
url="https://launchpad.net/qpdfview"
arch="all"
options="!check" # No test suite.
license="GPL-2.0+"
depends=""
-makedepends="cups-dev gnutls-dev poppler-qt5-dev qt5-qttools-dev qt5-qtbase-dev
- qt5-qtsvg-dev"
+makedepends="cups-dev djvulibre-dev gnutls-dev libspectre-dev poppler-dev
+ poppler-qt5-dev qt5-qttools-dev qt5-qtbase-dev qt5-qtsvg-dev"
subpackages="$pkgname-doc"
-source="$url/trunk/$pkgver/+download/qpdfview-$pkgver.tar.gz"
+source="https://launchpad.net/qpdfview/trunk/$pkgver/+download/$pkgname-$pkgver.tar.gz
+ qpdfview-0.4.18-qt-5.15.patch
+ "
build() {
- cd "$builddir"
lrelease qpdfview.pro
- qmake CONFIG+="without_ps without_djvu" qpdfview.pro
+ qmake qpdfview.pro
make
}
package() {
- cd "$builddir"
make INSTALL_ROOT="$pkgdir" install
}
-sha512sums="d3ac05fc51d48533e44e58cd19e5d222a8bfbc9da4df02ece6a405d2fdd3346eb4614816ae91e89facf28e107b920ff3ce7b2ccc8c9b7832ae2595ef70d65584 qpdfview-0.4.16.tar.gz"
+sha512sums="38741520b20e3ed7100e52982930abac26e994a69df68c54dfa7180be8b2a4f377b91ba03993bab67b0a505ad79d62164f0f168a6715f4306b635ceba6840d66 qpdfview-0.4.18.tar.gz
+ac6a742b957eb192117aece45cef8f2a9d76fe45d4cc87246dba8e52a15ac11c6892175fd73c8af3bd22a34ff36645828a5f12d66c240b6305d9621387fc3261 qpdfview-0.4.18-qt-5.15.patch"
diff --git a/user/qpdfview/qpdfview-0.4.18-qt-5.15.patch b/user/qpdfview/qpdfview-0.4.18-qt-5.15.patch
new file mode 100644
index 000000000..b19f247a7
--- /dev/null
+++ b/user/qpdfview/qpdfview-0.4.18-qt-5.15.patch
@@ -0,0 +1,11 @@
+diff -ur qpdfview-0.4.18.orig/sources/model.h qpdfview-0.4.18/sources/model.h
+--- a/sources/model.h 2019-07-24 21:18:33.000000000 +0200
++++ b/sources/model.h 2020-05-29 11:44:33.012891583 +0200
+@@ -27,6 +27,7 @@
+ #include <QtPlugin>
+ #include <QWidget>
+ #include <QVector>
++#include <QPainterPath>
+
+ class QAbstractItemModel;
+ class QColor;
diff --git a/user/qps/APKBUILD b/user/qps/APKBUILD
index 550bb8352..6c82561f7 100644
--- a/user/qps/APKBUILD
+++ b/user/qps/APKBUILD
@@ -1,26 +1,28 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=qps
-pkgver=1.10.20
+pkgver=2.8.0
+_lxqt_build=0.13.0
+_lxqt=1.4
pkgrel=0
pkgdesc="Qt-based task manager"
-url="https://lxqt.org"
+url="https://lxqt.github.io/"
arch="all"
options="!check" # No test suite.
license="GPL-2.0+"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtx11extras-dev
- qt5-qttools-dev libxrender-dev lxqt-build-tools>=0.6.0"
+ qt5-qttools-dev libxrender-dev lxqt-build-tools>=$_lxqt_build
+ liblxqt-dev>=$_lxqt kwindowsystem-dev"
subpackages="$pkgname-doc"
source="https://github.com/lxqt/qps/releases/download/$pkgver/qps-$pkgver.tar.xz
- qps-1.10.17-compile-fixes.patch"
+ qps-1.10.17-compile-fixes.patch
+ "
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -28,19 +30,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="407130ac12f1e68da3e22543634d101c7a8353363ff1d9c6edbf98ce5d48f149aa5d937985f00109b40bd3cdb0b9a8e9745e845dd921be4aaf119022632bb9ef qps-1.10.20.tar.xz
+sha512sums="1dc4e0018eec82a70f33604d3f5b58a20892f1d97bb0334596d9ca47bc9d4e51c5acbdc8f72289612ab12a9a180c04b87de5f91a2fc0872791f68d0e6a1a2129 qps-2.8.0.tar.xz
32c154f1d3c9e74dda3eabfd2e3b9e9f3c1d77f808dfacc9dd05c904066832d92d361ca56ef9d784d945fad60cf67d6c909cbb730a0ffed1fea3bf44c3aad5a2 qps-1.10.17-compile-fixes.patch"
diff --git a/user/qqc2-desktop-style/APKBUILD b/user/qqc2-desktop-style/APKBUILD
new file mode 100644
index 000000000..6eea53516
--- /dev/null
+++ b/user/qqc2-desktop-style/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=qqc2-desktop-style
+pkgver=5.94.0
+pkgrel=0
+pkgdesc="QtQuickControls 2 style that uses QWidget's QStyle for painting"
+url="https://www.kde.org/"
+arch="all"
+license="GPL-2.0-only AND LGPL-3.0-only"
+depends="sonnet"
+makedepends="cmake extra-cmake-modules kconfig-dev kconfigwidgets-dev
+ kiconthemes-dev kirigami2-dev qt5-qtbase-dev qt5-qtdeclarative-dev
+ qt5-qtquickcontrols2-dev qt5-qtx11extras-dev sonnet-dev"
+subpackages="$pkgname-dev"
+source="https://download.kde.org/stable/frameworks/${pkgver%.*}/qqc2-desktop-style-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ -Bbuild .
+ make -C build
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
+}
+
+package() {
+ make DESTDIR="$pkgdir" -C build install
+}
+
+sha512sums="8f68423603d7de0a286dbf78441b077fc48197d9bc6863e7b13be358f68697f1ad95559e0e0705edb034c54df75ff74ca41f5b2fe70ba94e55e7c30b13c6989f qqc2-desktop-style-5.94.0.tar.xz"
diff --git a/user/qt-creator/APKBUILD b/user/qt-creator/APKBUILD
index 1ef39bd3f..32717276c 100644
--- a/user/qt-creator/APKBUILD
+++ b/user/qt-creator/APKBUILD
@@ -1,8 +1,9 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt-creator
-pkgver=4.8.2
-pkgrel=0
+pkgver=4.15.2
+_llvmver=18
+pkgrel=3
pkgdesc="Cross-platform multi-language programming IDE"
url="https://doc.qt.io/qtcreator/index.html"
arch="all"
@@ -10,23 +11,41 @@ options="!check" # No test suite.
license="LGPL-2.0 WITH Qt-LGPL-exception-1.1"
depends="qt5-qtquickcontrols"
makedepends="qt5-qtbase-dev qt5-qtdeclarative-dev qt5-qtserialport-dev
- qt5-qtscript-dev qt5-qttools-dev clang-dev llvm7-dev python3
+ qt5-qtscript-dev qt5-qttools-dev clang-dev llvm${_llvmver}-dev python3
libexecinfo-dev"
subpackages="$pkgname-dev"
-source="https://download.qt.io/official_releases/qtcreator/${pkgver%.*}/$pkgver/qt-creator-opensource-src-$pkgver.tar.gz"
+source="https://download.qt.io/official_releases/qtcreator/${pkgver%.*}/$pkgver/$pkgname-opensource-src-$pkgver.tar.xz
+ llvm13.patch
+ llvm15.patch
+ llvm16.patch
+ llvm16-deux.patch
+ llvm17.patch
+ llvm18.patch
+ llvm19.patch
+ malloc_trim.patch
+ cstdint.patch
+ "
ldpath="/usr/lib/qtcreator"
builddir="$srcdir/$pkgname-opensource-src-$pkgver"
build() {
- cd "$builddir"
+ export LLVM_CONFIG="$(command -v llvm${_llvmver}-config)"
export LLVM_INSTALL_DIR=/usr
qmake -r "QMAKE_CFLAGS += $CFLAGS" "QMAKE_CXXFLAGS += $CXXFLAGS" "QMAKE_LFLAGS += $LDFLAGS" "QMAKE_LIBS += -lexecinfo"
make
}
package() {
- cd "$builddir"
make install INSTALL_ROOT="$pkgdir"/usr
}
-sha512sums="dfaa620caa0f92adc095c661b9e1688d4e42b8fab2520d14a2b524f14af376d61683519e5dc50165dd7e47d98c55cf47890ca712c71b83a5a13aa3c9a6f9505e qt-creator-opensource-src-4.8.2.tar.gz"
+sha512sums="b29d5d97a1faa8d5756069d90c18d6d367e09057b97bd75c774bc2d1e373f9f4dcc24211188259f8d397bb932a65daaacda433bced796fd165654f5c3c621258 qt-creator-opensource-src-4.15.2.tar.xz
+c38cf1aea69bc52864d5aa4b6fbc01b5e91b1514a616056b270fcccc2744bb418eb93a470462823c05e00e44f44c45d8e26effd8aa72a6817402ddd9a6dd0cc4 llvm13.patch
+9bcb1a67ea28fa4b3a9abf120d96c44e9949da083f0010b1a32ff27873e290a419b4994503826ba721587ba9b9bb97eb81c59e9d192e916bcf6430e21b1b7feb llvm15.patch
+0a986139b3ba25d4c5430bfde1ca10cb024666150c9dac4eb1b3f5bbf099c4017332745d2277837395b1761fca1f598a1807b6d21342b497d4800bb988236250 llvm16.patch
+566307ecbc725863149c2407617ef5d2021c9cd6a5e69a8ccf3f9a7188e27fc77b5cca12e92c35255ce03f925f7e0370412c1f255e03b34dd165abee959d9eec llvm16-deux.patch
+be2a3e99e1a7b72d3b8d092edaffc60249efbbe27d5037cebba388d36f0d404e8d109489336c83f684195532eb23d73ea89f57da31b3499a1ee84a86ce3653b7 llvm17.patch
+02d0ac36e4c9fd5682d45ef5f040f6ef11c25b3c9a0865cb8a1ef660dfb067a3dbeac1187246da79a506db6c24379b77a7d8510edcf10c9a56c6a9de1b507672 llvm18.patch
+ce849abae28a3fd946b490e55cc44f4c19fe3ccf167e936c9e01b7c240c98b7f7af27336549ccbe18995fd2ae81366278a8345f54d3d87127232c06649af0e71 llvm19.patch
+7fcb9b293daecc4c0f294d372507db9a6282479c4cf45999446193d9f35552db2532d47dedc9c5666a10855e20d0fe655f0ee0408abca8cc8ffbf121a230960f malloc_trim.patch
+7d7a739cf98c1bc4232d9d14334e3c3a319746db931aaad4d441c903351c56869015ce427e2098fbe930d56a2dd433b1869fbbf5a78f91c10a94f5a47a778ea0 cstdint.patch"
diff --git a/user/qt-creator/cstdint.patch b/user/qt-creator/cstdint.patch
new file mode 100644
index 000000000..39558e90f
--- /dev/null
+++ b/user/qt-creator/cstdint.patch
@@ -0,0 +1,27 @@
+--- qt-creator-opensource-src-4.15.2/src/libs/qlitehtml/src/3rdparty/litehtml/include/litehtml/html.h.old 2021-07-12 21:12:54.000000000 -0500
++++ qt-creator-opensource-src-4.15.2/src/libs/qlitehtml/src/3rdparty/litehtml/include/litehtml/html.h 2024-05-30 18:51:05.965117572 -0500
+@@ -9,6 +9,7 @@
+ #include <cstring>
+ #include <algorithm>
+ #include <sstream>
++#include <cstdint>
+ #include "os_types.h"
+ #include "types.h"
+ #include "background.h"
+--- qt-creator-opensource-src-4.15.2/src/libs/qlitehtml/src/3rdparty/litehtml/include/litehtml/num_cvt.h.old 2021-07-12 21:12:54.000000000 -0500
++++ qt-creator-opensource-src-4.15.2/src/libs/qlitehtml/src/3rdparty/litehtml/include/litehtml/num_cvt.h 2024-05-30 18:54:29.873560575 -0500
+@@ -2,6 +2,7 @@
+ #define NUM_CVT_H
+
+ #include <string>
++#include <cstdint>
+ #include "os_types.h"
+
+ namespace litehtml
+@@ -16,4 +17,4 @@
+ }
+ }
+
+-#endif // NUM_CVT_H
+\ No newline at end of file
++#endif // NUM_CVT_H
diff --git a/user/qt-creator/llvm13.patch b/user/qt-creator/llvm13.patch
new file mode 100644
index 000000000..b4a6998d8
--- /dev/null
+++ b/user/qt-creator/llvm13.patch
@@ -0,0 +1,71 @@
+From 14eb5b382cabf90352634393c19bf87a4c15766a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B6rn=20Sch=C3=A4pers?= <bjoern@hazardy.de>
+Date: Mon, 8 Mar 2021 21:56:06 +0100
+Subject: [PATCH] clangformat: Fix build with LLVM 13
+
+Change-Id: I5eaad17a6f240aa1e3f246492b69f093b4f59fee
+Reviewed-by: David Schulz <david.schulz@qt.io>
+---
+ src/plugins/clangformat/clangformatbaseindenter.cpp | 4 ++++
+ src/plugins/clangformat/clangformatutils.cpp | 4 ++++
+ 2 files changed, 8 insertions(+)
+
+diff --git a/src/plugins/clangformat/clangformatbaseindenter.cpp b/src/plugins/clangformat/clangformatbaseindenter.cpp
+index fb8e6938096..6378b2af530 100644
+--- a/src/plugins/clangformat/clangformatbaseindenter.cpp
++++ b/src/plugins/clangformat/clangformatbaseindenter.cpp
+@@ -42,7 +42,11 @@ void adjustFormatStyleForLineBreak(clang::format::FormatStyle &style,
+ ReplacementsToKeep replacementsToKeep)
+ {
+ style.MaxEmptyLinesToKeep = 100;
++#if LLVM_VERSION_MAJOR >= 13
++ style.SortIncludes = clang::format::FormatStyle::SI_Never;
++#else
+ style.SortIncludes = false;
++#endif
+ style.SortUsingDeclarations = false;
+
+ // This is a separate pass, don't do it unless it's the full formatting.
+diff --git a/src/plugins/clangformat/clangformatutils.cpp b/src/plugins/clangformat/clangformatutils.cpp
+index a249327d0ed..770e75908c8 100644
+--- a/src/plugins/clangformat/clangformatutils.cpp
++++ b/src/plugins/clangformat/clangformatutils.cpp
+@@ -145,7 +145,11 @@ static clang::format::FormatStyle qtcStyle()
+ style.PenaltyReturnTypeOnItsOwnLine = 300;
+ style.PointerAlignment = FormatStyle::PAS_Right;
+ style.ReflowComments = false;
++#if LLVM_VERSION_MAJOR >= 13
++ style.SortIncludes = FormatStyle::SI_CaseSensitive;
++#else
+ style.SortIncludes = true;
++#endif
+ style.SortUsingDeclarations = true;
+ style.SpaceAfterCStyleCast = true;
+ style.SpaceAfterTemplateKeyword = false;
+From 55b91a76172a3235b4879daf0b675519d5b02db7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B6rn=20Sch=C3=A4pers?= <bjoern@hazardy.de>
+Date: Wed, 16 Jun 2021 20:59:29 +0200
+Subject: [PATCH] clangformat: Fix build with LLVM 13
+
+Change-Id: Ia9db10696fd129c8b989ecc4c9ecbb7f1f10e68c
+Reviewed-by: David Schulz <david.schulz@qt.io>
+---
+ src/plugins/clangformat/clangformatutils.cpp | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/plugins/clangformat/clangformatutils.cpp b/src/plugins/clangformat/clangformatutils.cpp
+index 2f9a306b99c..3905ae5f6a5 100644
+--- a/src/plugins/clangformat/clangformatutils.cpp
++++ b/src/plugins/clangformat/clangformatutils.cpp
+@@ -157,7 +157,11 @@ static clang::format::FormatStyle qtcStyle()
+ style.SpaceBeforeParens = FormatStyle::SBPO_ControlStatements;
+ style.SpaceInEmptyParentheses = false;
+ style.SpacesBeforeTrailingComments = 1;
++#if LLVM_VERSION_MAJOR >= 13
++ style.SpacesInAngles = FormatStyle::SIAS_Never;
++#else
+ style.SpacesInAngles = false;
++#endif
+ style.SpacesInContainerLiterals = false;
+ style.SpacesInCStyleCastParentheses = false;
+ style.SpacesInParentheses = false;
diff --git a/user/qt-creator/llvm15.patch b/user/qt-creator/llvm15.patch
new file mode 100644
index 000000000..a35912171
--- /dev/null
+++ b/user/qt-creator/llvm15.patch
@@ -0,0 +1,29 @@
+From c7cdd55dea1f30b4d236d532bdadcf36bd174640 Mon Sep 17 00:00:00 2001
+From: Cristian Adam <cristian.adam@qt.io>
+Date: Tue, 16 Aug 2022 21:04:39 +0200
+Subject: [PATCH] ClangFormat: Fix build for LLVM 15.0.0
+
+This fixes the CMake build of Qt Creator against LLVM 15.0.0
+
+Change-Id: Icecd45821091c8c2b565246cb17ce5a6e5c49f36
+Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
+Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
+---
+ src/plugins/clangformat/CMakeLists.txt | 2 ++
+ src/plugins/clangformat/clangformatutils.cpp | 2 ++
+ 2 files changed, 4 insertions(+)
+
+diff --git a/src/plugins/clangformat/clangformatutils.cpp b/src/plugins/clangformat/clangformatutils.cpp
+index 230078558e5..973c1050772 100644
+--- a/src/plugins/clangformat/clangformatutils.cpp
++++ b/src/plugins/clangformat/clangformatutils.cpp
+@@ -111,7 +111,9 @@ clang::format::FormatStyle qtcStyle()
+ style.ColumnLimit = 100;
+ style.CommentPragmas = "^ IWYU pragma:";
+ style.CompactNamespaces = false;
++#if LLVM_VERSION_MAJOR < 15
+ style.ConstructorInitializerAllOnOneLineOrOnePerLine = false;
++#endif
+ style.ConstructorInitializerIndentWidth = 4;
+ style.ContinuationIndentWidth = 4;
+ style.Cpp11BracedListStyle = true;
diff --git a/user/qt-creator/llvm16-deux.patch b/user/qt-creator/llvm16-deux.patch
new file mode 100644
index 000000000..00f35016c
--- /dev/null
+++ b/user/qt-creator/llvm16-deux.patch
@@ -0,0 +1,45 @@
+From f4545807defdfb493c1d66a19430a69d81afa40b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B6rn=20Sch=C3=A4pers?= <schaepers@kuennecke.com>
+Date: Fri, 4 Nov 2022 07:18:50 +0100
+Subject: [PATCH] clang-format: Adapt to LLVM 16
+
+Change-Id: I2e35f92db6de10b1e4bf173f0864f0cd893a011f
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
+---
+ src/plugins/clangformat/clangformatbaseindenter.cpp | 4 ++++
+ src/plugins/clangformat/clangformatutils.cpp | 4 ++++
+ 2 files changed, 8 insertions(+)
+
+diff --git a/src/plugins/clangformat/clangformatbaseindenter.cpp b/src/plugins/clangformat/clangformatbaseindenter.cpp
+index 7c83c8e43b2..6072082c8c7 100644
+--- a/src/plugins/clangformat/clangformatbaseindenter.cpp
++++ b/src/plugins/clangformat/clangformatbaseindenter.cpp
+@@ -55,7 +55,11 @@ void adjustFormatStyleForLineBreak(clang::format::FormatStyle &style,
+
+ // This is a separate pass, don't do it unless it's the full formatting.
+ style.FixNamespaceComments = false;
++#if LLVM_VERSION_MAJOR >= 16
++ style.AlignTrailingComments = {clang::format::FormatStyle::TCAS_Never, 0};
++#else
+ style.AlignTrailingComments = false;
++#endif
+
+ if (replacementsToKeep == ReplacementsToKeep::IndentAndBefore)
+ return;
+diff --git a/src/plugins/clangformat/clangformatutils.cpp b/src/plugins/clangformat/clangformatutils.cpp
+index dbc4a6a347e..3b2901bcc8b 100644
+--- a/src/plugins/clangformat/clangformatutils.cpp
++++ b/src/plugins/clangformat/clangformatutils.cpp
+@@ -64,7 +64,11 @@ clang::format::FormatStyle qtcStyle()
+ #else
+ style.AlignOperands = true;
+ #endif
++#if LLVM_VERSION_MAJOR >= 16
++ style.AlignTrailingComments = {FormatStyle::TCAS_Always, 0};
++#else
+ style.AlignTrailingComments = true;
++#endif
+ style.AllowAllParametersOfDeclarationOnNextLine = true;
+ #if LLVM_VERSION_MAJOR >= 10
+ style.AllowShortBlocksOnASingleLine = FormatStyle::SBS_Never;
diff --git a/user/qt-creator/llvm16.patch b/user/qt-creator/llvm16.patch
new file mode 100644
index 000000000..dc9c53940
--- /dev/null
+++ b/user/qt-creator/llvm16.patch
@@ -0,0 +1,44 @@
+From e20bdfae4de90401a518135bc22958549dceda66 Mon Sep 17 00:00:00 2001
+From: Christian Stenger <christian.stenger@qt.io>
+Date: Tue, 31 Jan 2023 08:11:29 +0100
+Subject: [PATCH] ClangFormat: Adapt to changes in LLVM 16
+
+Change-Id: Ia4a2cf21e351095609d8858f1f9355c6607470f3
+Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
+---
+ src/plugins/clangformat/clangformatbaseindenter.cpp | 4 ++++
+ src/plugins/clangformat/clangformatutils.cpp | 4 ++++
+ 2 files changed, 8 insertions(+)
+
+diff --git a/src/plugins/clangformat/clangformatbaseindenter.cpp b/src/plugins/clangformat/clangformatbaseindenter.cpp
+index d61cbf2f1a8..fc08158d2d1 100644
+--- a/src/plugins/clangformat/clangformatbaseindenter.cpp
++++ b/src/plugins/clangformat/clangformatbaseindenter.cpp
+@@ -38,7 +38,11 @@ void adjustFormatStyleForLineBreak(clang::format::FormatStyle &style,
+ #else
+ style.SortIncludes = false;
+ #endif
++#if LLVM_VERSION_MAJOR >= 16
++ style.SortUsingDeclarations = clang::format::FormatStyle::SUD_Never;
++#else
+ style.SortUsingDeclarations = false;
++#endif
+
+ // This is a separate pass, don't do it unless it's the full formatting.
+ style.FixNamespaceComments = false;
+diff --git a/src/plugins/clangformat/clangformatutils.cpp b/src/plugins/clangformat/clangformatutils.cpp
+index c7eb900fed5..d1d6bee684b 100644
+--- a/src/plugins/clangformat/clangformatutils.cpp
++++ b/src/plugins/clangformat/clangformatutils.cpp
+@@ -152,7 +152,11 @@ clang::format::FormatStyle qtcStyle()
+ #else
+ style.SortIncludes = true;
+ #endif
++#if LLVM_VERSION_MAJOR >= 16
++ style.SortUsingDeclarations = FormatStyle::SUD_Lexicographic;
++#else
+ style.SortUsingDeclarations = true;
++#endif
+ style.SpaceAfterCStyleCast = true;
+ style.SpaceAfterTemplateKeyword = false;
+ style.SpaceBeforeAssignmentOperators = true;
diff --git a/user/qt-creator/llvm17.patch b/user/qt-creator/llvm17.patch
new file mode 100644
index 000000000..3e4803bbf
--- /dev/null
+++ b/user/qt-creator/llvm17.patch
@@ -0,0 +1,38 @@
+From 9ad9e49ccf6e0d7f4ba5765cff3af63fbbed60e8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B6rn=20Sch=C3=A4pers?= <bjoern@hazardy.de>
+Date: Wed, 2 Aug 2023 12:39:13 +0200
+Subject: [PATCH] clang-format: Fix build with LLVM 17
+
+Change-Id: Ie6377be3be4a8c785d53f1eceabcc4811db4229d
+Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
+---
+ src/plugins/clangformat/clangformatutils.cpp | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/plugins/clangformat/clangformatutils.cpp b/src/plugins/clangformat/clangformatutils.cpp
+index 928d30d241e..1aae91a186f 100644
+--- a/src/plugins/clangformat/clangformatutils.cpp
++++ b/src/plugins/clangformat/clangformatutils.cpp
+@@ -165,7 +165,9 @@ clang::format::FormatStyle qtcStyle()
+ style.SpaceAfterTemplateKeyword = false;
+ style.SpaceBeforeAssignmentOperators = true;
+ style.SpaceBeforeParens = FormatStyle::SBPO_ControlStatements;
++#if LLVM_VERSION_MAJOR < 17
+ style.SpaceInEmptyParentheses = false;
++#endif
+ style.SpacesBeforeTrailingComments = 1;
+ #if LLVM_VERSION_MAJOR >= 13
+ style.SpacesInAngles = FormatStyle::SIAS_Never;
+@@ -173,8 +175,12 @@ clang::format::FormatStyle qtcStyle()
+ style.SpacesInAngles = false;
+ #endif
+ style.SpacesInContainerLiterals = false;
++#if LLVM_VERSION_MAJOR >= 17
++ style.SpacesInParens = FormatStyle::SIPO_Never;
++#else
+ style.SpacesInCStyleCastParentheses = false;
+ style.SpacesInParentheses = false;
++#endif
+ style.SpacesInSquareBrackets = false;
+ addQtcStatementMacros(style);
+ style.Standard = FormatStyle::LS_Cpp11;
diff --git a/user/qt-creator/llvm18.patch b/user/qt-creator/llvm18.patch
new file mode 100644
index 000000000..7294dec49
--- /dev/null
+++ b/user/qt-creator/llvm18.patch
@@ -0,0 +1,30 @@
+From 7457b623125f4bcdb7941769a385cfbfc0dcbf2b Mon Sep 17 00:00:00 2001
+From: hjk <hjk@qt.io>
+Date: Fri, 8 Nov 2024 12:50:30 +0100
+Subject: [PATCH] ClangFormat: Fix warning on uninitialized struct member
+
+Clang 18's AlignConsecutiveStyle has a new bool AlignFunctionPointers member.
+
+Change-Id: I5d72d9caa4a6e58ffa09674d2d3b976a95ea5dd0
+Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
+---
+ src/plugins/clangformat/clangformatutils.cpp | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+--- qt-creator-opensource-src-4.15.2/src/plugins/clangformat/clangformatutils.cpp.old 2024-12-04 16:32:21.224382015 -0600
++++ qt-creator-opensource-src-4.15.2/src/plugins/clangformat/clangformatutils.cpp 2024-12-04 17:12:21.181020408 -0600
+@@ -51,7 +51,13 @@
+ style.Language = FormatStyle::LK_Cpp;
+ style.AccessModifierOffset = -4;
+ style.AlignAfterOpenBracket = FormatStyle::BAS_Align;
+-#if LLVM_VERSION_MAJOR >= 12
++#if LLVM_VERSION_MAJOR >= 18
++ style.AlignConsecutiveAssignments = {false, false, false, false, false, false};
++ style.AlignConsecutiveDeclarations = {false, false, false, false, false, false};
++#elif LLVM_VERSION_MAJOR >= 15
++ style.AlignConsecutiveAssignments = {false, false, false, false, false};
++ style.AlignConsecutiveDeclarations = {false, false, false, false, false};
++#elif LLVM_VERSION_MAJOR >= 12
+ style.AlignConsecutiveAssignments = FormatStyle::ACS_None;
+ style.AlignConsecutiveDeclarations = FormatStyle::ACS_None;
+ #else
diff --git a/user/qt-creator/llvm19.patch b/user/qt-creator/llvm19.patch
new file mode 100644
index 000000000..7dff56df4
--- /dev/null
+++ b/user/qt-creator/llvm19.patch
@@ -0,0 +1,28 @@
+From cc9ffdb685119a7c11248f08cf88308927252b85 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Bj=C3=B6rn=20Sch=C3=A4pers?= <bjoern@hazardy.de>
+Date: Tue, 30 Apr 2024 16:06:28 +0200
+Subject: [PATCH] ClangFormat: Fix compiliation with LLVM19
+
+Change-Id: I4b166da2e477ffd101a5c4b9aa07c710f7698da9
+Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
+---
+ src/plugins/clangformat/clangformatbaseindenter.cpp | 4 ++++
+ src/plugins/clangformat/llvmfilesystem.h | 6 +++++-
+ 2 files changed, 9 insertions(+), 1 deletion(-)
+
+diff --git a/src/plugins/clangformat/clangformatbaseindenter.cpp b/src/plugins/clangformat/clangformatbaseindenter.cpp
+index 1d5dc2730c3..b491bd293f1 100644
+--- a/src/plugins/clangformat/clangformatbaseindenter.cpp
++++ b/src/plugins/clangformat/clangformatbaseindenter.cpp
+@@ -73,7 +73,11 @@ static void adjustFormatStyleForLineBreak(clang::format::FormatStyle &style,
+
+ static llvm::StringRef clearExtraNewline(llvm::StringRef text)
+ {
++#if LLVM_VERSION_MAJOR >= 16
++ while (text.starts_with("\n\n"))
++#else
+ while (text.startswith("\n\n"))
++#endif
+ text = text.drop_front();
+ return text;
+ }
diff --git a/user/qt-creator/malloc_trim.patch b/user/qt-creator/malloc_trim.patch
new file mode 100644
index 000000000..f7a012750
--- /dev/null
+++ b/user/qt-creator/malloc_trim.patch
@@ -0,0 +1,12 @@
+malloc_trim is not available on musl and it isn't needed anyway.
+--- qt-creator-opensource-src-4.15.2/src/app/main.cpp.old 2021-07-12 21:12:53.000000000 -0500
++++ qt-creator-opensource-src-4.15.2/src/app/main.cpp 2022-11-22 00:29:21.110626363 -0600
+@@ -782,7 +782,7 @@
+ // shutdown plugin manager on the exit
+ QObject::connect(&app, &QCoreApplication::aboutToQuit, &pluginManager, &PluginManager::shutdown);
+
+-#ifdef Q_OS_LINUX
++#if defined(Q_OS_LINUX) && defined(__GLIBC__)
+ class MemoryTrimmer : public QObject
+ {
+ public:
diff --git a/user/qt5-qtbase/APKBUILD b/user/qt5-qtbase/APKBUILD
index 08e623af5..0ba98bd30 100644
--- a/user/qt5-qtbase/APKBUILD
+++ b/user/qt5-qtbase/APKBUILD
@@ -1,17 +1,18 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtbase
-_pkgname=qtbase-opensource-src
-pkgver=5.9.7
-pkgrel=0
-pkgdesc="Qt 5.9 base components"
+_pkgname=qtbase-everywhere
+pkgver=5.15.4
+pkgrel=1
+pkgdesc="Cross-platform application and UI framework"
url="https://www.qt.io/"
arch="all"
-license="LGPL-2.0 with exceptions OR GPL-3.0 with exceptions"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
_sub="$pkgname-sqlite $pkgname-odbc $pkgname-postgresql
$pkgname-tds $pkgname-x11"
+depends=""
depends_dev="dbus-dev fontconfig-dev freetype-dev glib-dev libice-dev
- libpng-dev libsm-dev libx11-dev libxext-dev mesa-dev openssl-dev perl
- sqlite-dev zlib-dev $_sub"
+ libglvnd-dev libpng-dev libsm-dev libx11-dev libxext-dev mesa-dev
+ openssl-dev perl sqlite-dev zlib-dev $_sub"
makedepends="$depends_dev
at-spi2-core-dev bison cups-dev eudev-dev flex freetds-dev freetype-dev
gperf gtk+2.0-dev harfbuzz-dev hicolor-icon-theme icu-dev
@@ -21,18 +22,34 @@ makedepends="$depends_dev
xcb-util-keysyms-dev xcb-util-wm-dev xcb-util-renderutil-dev cmd:which
"
subpackages="$pkgname-dev $pkgname-doc $_sub"
-source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz
+ kde-lts.patch
+ big-endian-scroll-wheel.patch
link-to-execinfo.patch
qt-musl-iconv-no-bom.patch
"
+# secfixes: qt
+# 5.9.7-r0:
+# - CVE-2018-15518
+# - CVE-2018-19869
+# - CVE-2018-19870
+# - CVE-2018-19871
+# - CVE-2018-19873
+# 5.12.6-r1:
+# - CVE-2020-0569
+# - CVE-2020-0570
+# 5.12.9-r0:
+# - CVE-2015-9541
+# - CVE-2020-13962
+# - CVE-2020-17507
+
_qt5_prefix=/usr/lib/qt5
_qt5_datadir=/usr/share/qt5
-builddir="$srcdir"/$_pkgname-$pkgver
+builddir="$srcdir"/$_pkgname-src-$pkgver
prepare() {
default_prepare
- cd "$builddir"
sed -i -e "s|-O2|$CXXFLAGS|" \
-e "/^QMAKE_RPATH/s| -Wl,-rpath,||g" \
-e "/^QMAKE_LFLAGS\s/s|+=|+= $LDFLAGS|g" \
@@ -40,9 +57,7 @@ prepare() {
}
build() {
- cd "$builddir"
-
- local ARCH_OPTS=""
+ ARCH_OPTS=""
[ ${CTARGET_ARCH} != "pmmx" ] || ARCH_OPTS="-no-sse2"
./configure -confirm-license -opensource \
@@ -55,6 +70,7 @@ build() {
-glib \
-icu \
-importdir "$_qt5_prefix"/imports \
+ -kms \
-libexecdir "$_qt5_prefix"/libexec \
-no-pch \
-no-rpath \
@@ -76,25 +92,21 @@ build() {
-system-libpng \
-system-pcre \
-system-sqlite \
- -system-xcb \
-system-zlib \
-translationdir "$_qt5_datadir"/translations \
-no-reduce-relocations \
- -debug -optimize-debug -force-debug-info \
+ -force-debug-info \
$ARCH_OPTS
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make INSTALL_ROOT="$pkgdir" install
mkdir -p "$pkgdir"/usr/bin/
- local i
for i in "$pkgdir"/$_qt5_prefix/bin/*; do
ln -s ../lib/qt5/bin/"$(basename $i)" \
"$pkgdir"/usr/bin/"$(basename $i)"
@@ -102,15 +114,14 @@ package() {
}
_mv_files() {
- local i
- for i; do
+ for i in "$@"; do
mkdir -p "$subpkgdir"/${i%/*}
- mv "$pkgdir"/$i "$subpkgdir"/$i
+ mv "$pkgdir"/$i "$subpkgdir"/${i%/*}
done
}
dev() {
- cd "$pkgdir"
+ cd "$pkgdir" # Required for the 'find' command to work properly.
_mv_files usr/lib/qt5/mkspecs \
usr/lib/cmake \
usr/lib/qt5/bin \
@@ -121,38 +132,32 @@ dev() {
sqlite() {
pkgdesc="SQLite driver for Qt5's SQL classes"
- cd "$pkgdir"
_mv_files usr/lib/qt5/plugins/sqldrivers/libqsqlite*
}
odbc() {
pkgdesc="ODBC driver for Qt5's SQL classes"
- cd "$pkgdir"
_mv_files usr/lib/qt5/plugins/sqldrivers/libqsqlodbc*
}
postgresql() {
pkgdesc="PostgreSQL driver for Qt5's SQL classes"
- cd "$pkgdir"
_mv_files usr/lib/qt5/plugins/sqldrivers/libqsqlpsql*
}
mysql() {
pkgdesc="MySQL driver for Qt5's SQL classes"
- cd "$pkgdir"
_mv_files usr/lib/qt5/plugins/sqldrivers/libqsqlmysql*
}
tds() {
pkgdesc="TDS driver for Qt5's SQL classes"
- cd "$pkgdir"
_mv_files usr/lib/qt5/plugins/sqldrivers/libqsqltds*
}
x11() {
pkgdesc="Qt5 GUI-related libraries"
depends="hicolor-icon-theme"
- cd "$pkgdir"
_mv_files \
usr/lib/libQt5EglFSDeviceIntegration.so.* \
usr/lib/libQt5EglFsKmsSupport.so.* \
@@ -168,10 +173,12 @@ x11() {
usr/lib/qt5/plugins/printsupport* \
usr/lib/qt5/plugins/xcbglintegrations
- scanelf -Rn usr/ | egrep '(libX|libQt5Gui|libGL)' && return 1
+ scanelf -Rn "$pkgdir"/usr/ | grep -E '(libX|libQt5Gui|libGL)' && return 1
return 0
}
-sha512sums="7121837501b810f31863fbb3a6ea7189d3e38789ff25eb49b639a69b73913761c8cba18b65046519693d2f5c8755c2197feff1df1ec3d88676d00c649a326e1e qtbase-opensource-src-5.9.7.tar.xz
+sha512sums="91a1d95c2891939ae55134e8897cbc423142bd8eda954a1e65bb563b0932ed9e2da34db374fd86858b4a819e8abe824a967b31f4fb316528ec8aaf15016c6ad3 qtbase-everywhere-opensource-src-5.15.4.tar.xz
+44c4ec3a3e62041f948f1234492e0c6ce855be72efaee80cad010f6ee9ff7460f45924a8441747c0082236fef3745fcdebecb6fc26c6490d99f2b7bb714f1b1f kde-lts.patch
+d00dc607b71a93132f756b952871df9197cfd6d78cc3617544bfa11d7f0eea21ce5dd0d1aeb69dd2702a5694a63d3802accc76499dbf414c01eb56421698cb0c big-endian-scroll-wheel.patch
ee78a44e28ba5f728914bfc3d8d5b467896c7de11a02d54b0bce11e40a4338b1f776c1fcc30cbd436df4f548c1ab0b4fe801f01b162ddd5c0f892893e227acfd link-to-execinfo.patch
-7d68421a14f0259535c977d8a521c98918193c107b76ac664571b12f5b0d7588a0d0e1297af412a26753a393b21f3f44c3274fa8ab5bc87f03705a3a03acb444 qt-musl-iconv-no-bom.patch"
+e3982b2df2ab4ba53b7a1329a9eb928eb1fee813c61cf6ac03d3300a767ffb57f019ac0fd89f633cac2330549446ff3d43344871296bf362815e7ebffadefa6b qt-musl-iconv-no-bom.patch"
diff --git a/user/qt5-qtbase/big-endian-scroll-wheel.patch b/user/qt5-qtbase/big-endian-scroll-wheel.patch
new file mode 100644
index 000000000..4cfa4f7b8
--- /dev/null
+++ b/user/qt5-qtbase/big-endian-scroll-wheel.patch
@@ -0,0 +1,55 @@
+--- qtbase-everywhere-src-5.12.3/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp.orig 2019-08-02 17:27:00.011197696 +0200
++++ qtbase-everywhere-src-5.12.3/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp 2019-08-02 17:29:36.336019411 +0200
+@@ -43,6 +43,7 @@
+ #include "qxcbwindow.h"
+ #include "qtouchdevice.h"
+ #include "QtCore/qmetaobject.h"
++#include "QtCore/qendian.h"
+ #include <qpa/qwindowsysteminterface_p.h>
+ #include <QDebug>
+ #include <cmath>
+@@ -66,6 +67,7 @@
+ xiEventMask.mask = XCB_INPUT_XI_EVENT_MASK_HIERARCHY;
+ xiEventMask.mask |= XCB_INPUT_XI_EVENT_MASK_DEVICE_CHANGED;
+ xiEventMask.mask |= XCB_INPUT_XI_EVENT_MASK_PROPERTY;
++ xiEventMask.mask = qToLittleEndian(xiEventMask.mask);
+ xcb_input_xi_select_events(xcb_connection(), rootWindow(), 1, &xiEventMask.header);
+ }
+
+@@ -90,7 +92,7 @@
+ qt_xcb_input_event_mask_t mask;
+ mask.header.deviceid = XCB_INPUT_DEVICE_ALL_MASTER;
+ mask.header.mask_len = 1;
+- mask.mask = bitMask;
++ mask.mask = qToLittleEndian(bitMask);
+ xcb_void_cookie_t cookie =
+ xcb_input_xi_select_events_checked(xcb_connection(), window, 1, &mask.header);
+ xcb_generic_error_t *error = xcb_request_check(xcb_connection(), cookie);
+@@ -363,7 +365,7 @@
+ qt_xcb_input_event_mask_t xiMask;
+ xiMask.header.deviceid = XCB_INPUT_DEVICE_ALL_MASTER;
+ xiMask.header.mask_len = 1;
+- xiMask.mask = mask;
++ xiMask.mask = qToLittleEndian(mask);
+
+ xcb_void_cookie_t cookie =
+ xcb_input_xi_select_events_checked(xcb_connection(), window, 1, &xiMask.header);
+@@ -390,7 +392,7 @@
+ tabletDevices.insert(deviceId);
+ xiEventMask[i].header.deviceid = deviceId;
+ xiEventMask[i].header.mask_len = 1;
+- xiEventMask[i].mask = mask;
++ xiEventMask[i].mask = qToLittleEndian(mask);
+ }
+ xcb_input_xi_select_events(xcb_connection(), window, nrTablets, &(xiEventMask.data()->header));
+ }
+@@ -406,7 +408,7 @@
+ #endif
+ xiEventMask[i].header.deviceid = scrollingDevice.deviceId;
+ xiEventMask[i].header.mask_len = 1;
+- xiEventMask[i].mask = mask;
++ xiEventMask[i].mask = qToLittleEndian(mask);
+ i++;
+ }
+ xcb_input_xi_select_events(xcb_connection(), window, i, &(xiEventMask.data()->header));
+
diff --git a/user/qt5-qtbase/kde-lts.patch b/user/qt5-qtbase/kde-lts.patch
new file mode 100644
index 000000000..a70f59cb0
--- /dev/null
+++ b/user/qt5-qtbase/kde-lts.patch
@@ -0,0 +1,64884 @@
+From 0319838faf39d3d8354349eebc61830f6885f60b Mon Sep 17 00:00:00 2001
+From: Thiago Macieira <thiago.macieira@intel.com>
+Date: Mon, 18 Jan 2021 07:40:54 -0800
+Subject: [PATCH 001/146] Fix build with GCC 11: include <limits>
+
+Fixes: QTBUG-90395
+Change-Id: Iecc74d2000eb40dfbe7bfffd165b5dd3708b7a40
+(cherry picked from commit 9c56d4da2ff631a8c1c30475bd792f6c86bda53c)
+Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
+(cherry picked from commit b2af6332ea37e45ab230a7a5d2d278f86d961b83)
+---
+ src/corelib/global/qendian.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/corelib/global/qendian.h b/src/corelib/global/qendian.h
+index a97776c761..339f53abb6 100644
+--- a/src/corelib/global/qendian.h
++++ b/src/corelib/global/qendian.h
+@@ -1,7 +1,7 @@
+ /****************************************************************************
+ **
+-** Copyright (C) 2016 The Qt Company Ltd.
+-** Copyright (C) 2016 Intel Corporation.
++** Copyright (C) 2021 The Qt Company Ltd.
++** Copyright (C) 2021 Intel Corporation.
+ ** Contact: https://www.qt.io/licensing/
+ **
+ ** This file is part of the QtCore module of the Qt Toolkit.
+--
+2.36.0
+
+From ccc0f5cd016eb17e4ff0db03ffed76ad32c8894d Mon Sep 17 00:00:00 2001
+From: Ville Voutilainen <ville.voutilainen@qt.io>
+Date: Mon, 18 Jan 2021 09:58:17 +0200
+Subject: [PATCH 002/146] Build fixes for GCC 11
+
+Task-number: QTBUG-89977
+Change-Id: Ic1b7ddbffb8a0a00f8c621d09a868f1d94a52c21
+Reviewed-by: Lars Knoll <lars.knoll@qt.io>
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit 813a928c7c3cf98670b6043149880ed5c955efb9)
+---
+ src/corelib/text/qbytearraymatcher.h | 2 ++
+ src/corelib/tools/qsharedpointer_impl.h | 3 ---
+ src/plugins/platforms/xcb/qxcbwindow.cpp | 2 +-
+ 3 files changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/src/corelib/text/qbytearraymatcher.h b/src/corelib/text/qbytearraymatcher.h
+index 0eedfc1d20..f5f9bef7b8 100644
+--- a/src/corelib/text/qbytearraymatcher.h
++++ b/src/corelib/text/qbytearraymatcher.h
+@@ -42,6 +42,8 @@
+
+ #include <QtCore/qbytearray.h>
+
++#include <limits>
++
+ QT_BEGIN_NAMESPACE
+
+
+diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h
+index 790c187cb9..4aee98af53 100644
+--- a/src/corelib/tools/qsharedpointer_impl.h
++++ b/src/corelib/tools/qsharedpointer_impl.h
+@@ -155,9 +155,6 @@ namespace QtSharedPointer {
+ #endif
+ inline void checkQObjectShared(...) { }
+ inline void setQObjectShared(...) { }
+-
+- inline void operator delete(void *ptr) { ::operator delete(ptr); }
+- inline void operator delete(void *, void *) { }
+ };
+ // sizeof(ExternalRefCountData) = 12 (32-bit) / 16 (64-bit)
+
+diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp
+index 050182537d..c27da3cbc8 100644
+--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
++++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
+@@ -698,7 +698,7 @@ void QXcbWindow::show()
+ if (isTransient(window())) {
+ const QWindow *tp = window()->transientParent();
+ if (tp && tp->handle())
+- transientXcbParent = static_cast<const QXcbWindow *>(tp->handle())->winId();
++ transientXcbParent = tp->handle()->winId();
+ // Default to client leader if there is no transient parent, else modal dialogs can
+ // be hidden by their parents.
+ if (!transientXcbParent)
+--
+2.36.0
+
+From b07ebeaada5d5f2fcfa16c7a2aaa2cb923255acd Mon Sep 17 00:00:00 2001
+From: Ulf Hermann <ulf.hermann@qt.io>
+Date: Wed, 20 Jan 2021 10:42:36 +0100
+Subject: [PATCH 003/146] Partially revert
+ 813a928c7c3cf98670b6043149880ed5c955efb9
+
+Otherwise ASAN complains about mismatched new/delete.
+
+Change-Id: I76ddcc388309e20055c93c68b9b6fa8a11b884e1
+Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
+Reviewed-by: Ville Voutilainen <ville.voutilainen@qt.io>
+(cherry picked from commit 606b03d0a35e71565c3a91588ef2db45b9262e27)
+---
+ src/corelib/tools/qsharedpointer_impl.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h
+index 4aee98af53..790c187cb9 100644
+--- a/src/corelib/tools/qsharedpointer_impl.h
++++ b/src/corelib/tools/qsharedpointer_impl.h
+@@ -155,6 +155,9 @@ namespace QtSharedPointer {
+ #endif
+ inline void checkQObjectShared(...) { }
+ inline void setQObjectShared(...) { }
++
++ inline void operator delete(void *ptr) { ::operator delete(ptr); }
++ inline void operator delete(void *, void *) { }
+ };
+ // sizeof(ExternalRefCountData) = 12 (32-bit) / 16 (64-bit)
+
+--
+2.36.0
+
+From afc7fa164706de8782596012327470663faca90a Mon Sep 17 00:00:00 2001
+From: ChunLin Wang <wangchunlin@uniontech.com>
+Date: Wed, 31 Mar 2021 17:54:49 +0800
+Subject: [PATCH 004/146] Fix get out of bounds index in
+ QSortFilterProxyModel::filterAcceptsRow
+
+Before calling the index function, we need to check the validity of the parameters.
+
+Fixes: QTBUG-91878
+Change-Id: I9ec7265fff3f81b8a288c4ba8fae606a2ec808a6
+Reviewed-by: David Faure <david.faure@kdab.com>
+(cherry picked from commit b8802071ed00689373da5817fc4824a30b5fcf86)
+(cherry picked from commit 0a5326a6c292df9cda313e0dcbe75f69f2f7072d)
+---
+ .../itemmodels/qsortfilterproxymodel.cpp | 8 +++++---
+ .../tst_qconcatenatetablesproxymodel.cpp | 17 +++++++++++++++++
+ 2 files changed, 22 insertions(+), 3 deletions(-)
+
+diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.cpp b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
+index 1abdafcdbe..3b07c7b9cf 100644
+--- a/src/corelib/itemmodels/qsortfilterproxymodel.cpp
++++ b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
+@@ -3089,8 +3089,9 @@ bool QSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex &
+
+ if (d->filter_data.isEmpty())
+ return true;
++
++ int column_count = d->model->columnCount(source_parent);
+ if (d->filter_column == -1) {
+- int column_count = d->model->columnCount(source_parent);
+ for (int column = 0; column < column_count; ++column) {
+ QModelIndex source_index = d->model->index(source_row, column, source_parent);
+ QString key = d->model->data(source_index, d->filter_role).toString();
+@@ -3099,9 +3100,10 @@ bool QSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex &
+ }
+ return false;
+ }
+- QModelIndex source_index = d->model->index(source_row, d->filter_column, source_parent);
+- if (!source_index.isValid()) // the column may not exist
++
++ if (d->filter_column >= column_count) // the column may not exist
+ return true;
++ QModelIndex source_index = d->model->index(source_row, d->filter_column, source_parent);
+ QString key = d->model->data(source_index, d->filter_role).toString();
+ return d->filter_data.hasMatch(key);
+ }
+diff --git a/tests/auto/corelib/itemmodels/qconcatenatetablesproxymodel/tst_qconcatenatetablesproxymodel.cpp b/tests/auto/corelib/itemmodels/qconcatenatetablesproxymodel/tst_qconcatenatetablesproxymodel.cpp
+index e1ea7a4552..90972caa57 100644
+--- a/tests/auto/corelib/itemmodels/qconcatenatetablesproxymodel/tst_qconcatenatetablesproxymodel.cpp
++++ b/tests/auto/corelib/itemmodels/qconcatenatetablesproxymodel/tst_qconcatenatetablesproxymodel.cpp
+@@ -117,6 +117,7 @@ private Q_SLOTS:
+ void shouldPropagateDropAfterLastRow_data();
+ void shouldPropagateDropAfterLastRow();
+ void qtbug91788();
++ void qtbug91878();
+
+ private:
+ QStandardItemModel mod;
+@@ -843,6 +844,22 @@ void tst_QConcatenateTablesProxyModel::qtbug91788()
+ QCOMPARE(proxyConcat.columnCount(), 0);
+ }
+
++void tst_QConcatenateTablesProxyModel::qtbug91878()
++{
++ QStandardItemModel m;
++ m.setRowCount(4);
++ m.setColumnCount(4);
++
++ QConcatenateTablesProxyModel pm;
++ QSortFilterProxyModel proxyFilter;
++ proxyFilter.setSourceModel(&pm);
++ proxyFilter.setFilterFixedString("something");
++ pm.addSourceModel(&m); // This should not assert
++
++ QCOMPARE(pm.columnCount(), 4);
++ QCOMPARE(pm.rowCount(), 4);
++}
++
+ QTEST_GUILESS_MAIN(tst_QConcatenateTablesProxyModel)
+
+ #include "tst_qconcatenatetablesproxymodel.moc"
+--
+2.36.0
+
+From 1841e0227e527fe446cc822dd89a2a65fe491c29 Mon Sep 17 00:00:00 2001
+From: Edward Welbourne <edward.welbourne@qt.io>
+Date: Mon, 8 Feb 2021 12:13:13 +0100
+Subject: [PATCH 005/146] Fix handling of surrogates in QBidiAlgorithm
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Prior code was naively assuming the character after a high surrogate
+would necessarily be a low surrogate, which is buggy.
+Fixes oss-fuzz issue 29718.
+
+Pick-to: 6.0 6.1 5.15
+Change-Id: I10f023c4b5024a0d76fea0a3672001063591ec6d
+Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
+Reviewed-by: Robert Löhning <robert.loehning@qt.io>
+Reviewed-by: Lars Knoll <lars.knoll@qt.io>
+(cherry picked from commit aeeaab1a5ac0b4d91c9f9b542035b8970e4c61dd)
+---
+ src/gui/text/qtextengine.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
+index 8af64f9cf8..ab5ea3a3d6 100644
+--- a/src/gui/text/qtextengine.cpp
++++ b/src/gui/text/qtextengine.cpp
+@@ -1,6 +1,6 @@
+ /****************************************************************************
+ **
+-** Copyright (C) 2016 The Qt Company Ltd.
++** Copyright (C) 2021 The Qt Company Ltd.
+ ** Contact: https://www.qt.io/licensing/
+ **
+ ** This file is part of the QtGui module of the Qt Toolkit.
+@@ -258,7 +258,7 @@ struct QBidiAlgorithm {
+ for (int i = 0; i < length; ++i) {
+ int pos = i;
+ uint uc = text[i].unicode();
+- if (QChar::isHighSurrogate(uc) && i < length - 1) {
++ if (QChar::isHighSurrogate(uc) && i < length - 1 && text[i + 1].isLowSurrogate()) {
+ ++i;
+ analysis[i].bidiDirection = QChar::DirNSM;
+ uc = QChar::surrogateToUcs4(ushort(uc), text[i].unicode());
+--
+2.36.0
+
+From 2fe3dd9d51e8b75b00ac14db5d9bd2145ca906da Mon Sep 17 00:00:00 2001
+From: Ilya Fedin <fedin-ilja2010@ya.ru>
+Date: Mon, 12 Apr 2021 12:09:59 +0400
+Subject: [PATCH 006/146] Don't own unique name for QDBusTrayIcon
+
+Flatpak doesn't allow to own random name with PID. Even after adding
+such a permission into manifest, all flatpaked apps have PID 2, so only
+one Qt application at a time can have tray icon.
+
+Even though unique name is a part of the spec, no tray hosts really
+check it and SNI implementations without unique name run just fine
+inside and outside of Flatpak.
+
+This fixes the inability of Qt applications to have tray icon in Flatpak
+outside of KDE.
+
+Pick-to: 6.0 6.1 5.15
+Change-Id: Ieea6dc335b7a74537a51929f6e70ca68c84228fb
+Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
+Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
+(cherry picked from commit 9db7cc79a26ced4997277b5c206ca15949133240)
+---
+ .../dbusmenu/qdbusmenuconnection.cpp | 17 ++++-------------
+ .../dbusmenu/qdbusmenuconnection_p.h | 2 +-
+ 2 files changed, 5 insertions(+), 14 deletions(-)
+
+diff --git a/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection.cpp b/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection.cpp
+index 09470bccc6..345a853b1b 100644
+--- a/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection.cpp
++++ b/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection.cpp
+@@ -105,13 +105,7 @@ void QDBusMenuConnection::unregisterTrayIconMenu(QDBusTrayIcon *item)
+
+ bool QDBusMenuConnection::registerTrayIcon(QDBusTrayIcon *item)
+ {
+- bool success = connection().registerService(item->instanceId());
+- if (!success) {
+- qWarning() << "failed to register service" << item->instanceId();
+- return false;
+- }
+-
+- success = connection().registerObject(StatusNotifierItemPath, item);
++ bool success = connection().registerObject(StatusNotifierItemPath, item);
+ if (!success) {
+ unregisterTrayIcon(item);
+ qWarning() << "failed to register" << item->instanceId() << StatusNotifierItemPath;
+@@ -126,21 +120,18 @@ bool QDBusMenuConnection::registerTrayIcon(QDBusTrayIcon *item)
+
+ bool QDBusMenuConnection::registerTrayIconWithWatcher(QDBusTrayIcon *item)
+ {
++ Q_UNUSED(item);
+ QDBusMessage registerMethod = QDBusMessage::createMethodCall(
+ StatusNotifierWatcherService, StatusNotifierWatcherPath, StatusNotifierWatcherService,
+ QLatin1String("RegisterStatusNotifierItem"));
+- registerMethod.setArguments(QVariantList() << item->instanceId());
++ registerMethod.setArguments(QVariantList() << m_connection.baseService());
+ return m_connection.callWithCallback(registerMethod, this, SIGNAL(trayIconRegistered()), SLOT(dbusError(QDBusError)));
+ }
+
+-bool QDBusMenuConnection::unregisterTrayIcon(QDBusTrayIcon *item)
++void QDBusMenuConnection::unregisterTrayIcon(QDBusTrayIcon *item)
+ {
+ unregisterTrayIconMenu(item);
+ connection().unregisterObject(StatusNotifierItemPath);
+- bool success = connection().unregisterService(item->instanceId());
+- if (!success)
+- qWarning() << "failed to unregister service" << item->instanceId();
+- return success;
+ }
+ #endif // QT_NO_SYSTEMTRAYICON
+
+diff --git a/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection_p.h b/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection_p.h
+index f484795fbb..11c7e56534 100644
+--- a/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection_p.h
++++ b/src/platformsupport/themes/genericunix/dbusmenu/qdbusmenuconnection_p.h
+@@ -78,7 +78,7 @@ public:
+ void unregisterTrayIconMenu(QDBusTrayIcon *item);
+ bool registerTrayIcon(QDBusTrayIcon *item);
+ bool registerTrayIconWithWatcher(QDBusTrayIcon *item);
+- bool unregisterTrayIcon(QDBusTrayIcon *item);
++ void unregisterTrayIcon(QDBusTrayIcon *item);
+ #endif // QT_NO_SYSTEMTRAYICON
+
+ Q_SIGNALS:
+--
+2.36.0
+
+From ba23cfbda1c14f4871b384be5415d9df4b5f573a Mon Sep 17 00:00:00 2001
+From: Luca Beldi <v.ronin@yahoo.it>
+Date: Thu, 15 Apr 2021 23:41:28 +0100
+Subject: [PATCH 007/146] Fix QAbstractItemModelTester false positive
+
+When rows are removed from a model with no columns,
+the test should not report a problem if indexes are invalid
+
+Fixes: QTBUG-92886
+Change-Id: I7a042dfdb2575f87208a00cbed13db3869807f84
+Reviewed-by: David Faure <david.faure@kdab.com>
+(cherry picked from commit fed2c0d23614df1b96dcc8746223501b07597a52)
+Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
+(cherry picked from commit cbec5527903a6ee8fc711b1a352dc17b6efada71)
+---
+ src/testlib/qabstractitemmodeltester.cpp | 4 ++--
+ .../tst_qabstractitemmodeltester.cpp | 7 +++++--
+ 2 files changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/src/testlib/qabstractitemmodeltester.cpp b/src/testlib/qabstractitemmodeltester.cpp
+index a85b291220..a2c643660a 100644
+--- a/src/testlib/qabstractitemmodeltester.cpp
++++ b/src/testlib/qabstractitemmodeltester.cpp
+@@ -720,12 +720,12 @@ void QAbstractItemModelTesterPrivate::rowsAboutToBeRemoved(const QModelIndex &pa
+ Changing c;
+ c.parent = parent;
+ c.oldSize = model->rowCount(parent);
+- if (start > 0) {
++ if (start > 0 && model->columnCount(parent) > 0) {
+ const QModelIndex startIndex = model->index(start - 1, 0, parent);
+ MODELTESTER_VERIFY(startIndex.isValid());
+ c.last = model->data(startIndex);
+ }
+- if (end < c.oldSize - 1) {
++ if (end < c.oldSize - 1 && model->columnCount(parent) > 0) {
+ const QModelIndex endIndex = model->index(end + 1, 0, parent);
+ MODELTESTER_VERIFY(endIndex.isValid());
+ c.next = model->data(endIndex);
+diff --git a/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp b/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp
+index 08419b335e..4aa3f8d60b 100644
+--- a/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp
++++ b/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp
+@@ -105,13 +105,16 @@ void tst_QAbstractItemModelTester::standardItemModel()
+ model.insertColumns(0, 5, model.index(1, 3));
+ }
+
+-void tst_QAbstractItemModelTester::standardItemModelZeroColumns() // QTBUG-92220
++void tst_QAbstractItemModelTester::standardItemModelZeroColumns()
+ {
+ QStandardItemModel model;
+-
+ QAbstractItemModelTester t1(&model);
++ // QTBUG-92220
+ model.insertRows(0, 5);
+ model.removeRows(0, 5);
++ // QTBUG-92886
++ model.insertRows(0, 5);
++ model.removeRows(1, 2);
+ }
+
+ void tst_QAbstractItemModelTester::testInsertThroughProxy()
+--
+2.36.0
+
+From 5ea1dc898497506efbc3206ca987dd4c8cf9b740 Mon Sep 17 00:00:00 2001
+From: Lars Knoll <lars.knoll@qt.io>
+Date: Fri, 4 Sep 2020 10:40:29 +0200
+Subject: [PATCH 008/146] Deprecate QMutex in recursive mode
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Use QRecursiveMutex instead.
+
+Pick-to: 5.15
+Change-Id: I862fc2b3143deeb5c96dc8d445be5f9fa2535670
+Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+(cherry picked from commit 0e681064b54a6873bef5ddb7edef7e2efc317efc)
+---
+ src/corelib/thread/qmutex.cpp | 4 +++-
+ src/corelib/thread/qmutex.h | 11 ++++++++---
+ src/corelib/thread/qwaitcondition_unix.cpp | 2 +-
+ 3 files changed, 12 insertions(+), 5 deletions(-)
+
+diff --git a/src/corelib/thread/qmutex.cpp b/src/corelib/thread/qmutex.cpp
+index 310d1cb14f..7097122d8e 100644
+--- a/src/corelib/thread/qmutex.cpp
++++ b/src/corelib/thread/qmutex.cpp
+@@ -152,6 +152,7 @@ public:
+
+ /*!
+ \enum QMutex::RecursionMode
++ \obsolete Use QRecursiveMutex to create a recursive mutex.
+
+ \value Recursive In this mode, a thread can lock the same mutex
+ multiple times and the mutex won't be unlocked
+@@ -173,6 +174,7 @@ public:
+
+ /*!
+ Constructs a new mutex. The mutex is created in an unlocked state.
++ \obsolete Use QRecursiveMutex to create a recursive mutex.
+
+ If \a mode is QMutex::Recursive, a thread can lock the same mutex
+ multiple times and the mutex won't be unlocked until a
+@@ -197,7 +199,7 @@ QMutex::QMutex(RecursionMode mode)
+ QMutex::~QMutex()
+ {
+ QMutexData *d = d_ptr.loadRelaxed();
+- if (isRecursive()) {
++ if (QBasicMutex::isRecursive()) {
+ delete static_cast<QRecursiveMutexPrivate *>(d);
+ } else if (d) {
+ #ifndef QT_LINUX_FUTEX
+diff --git a/src/corelib/thread/qmutex.h b/src/corelib/thread/qmutex.h
+index 73c9e00663..b2e2640ba2 100644
+--- a/src/corelib/thread/qmutex.h
++++ b/src/corelib/thread/qmutex.h
+@@ -134,8 +134,16 @@ public:
+ #else
+ QMutex() { d_ptr.storeRelaxed(nullptr); }
+ #endif
++#if QT_DEPRECATED_SINCE(5,15)
+ enum RecursionMode { NonRecursive, Recursive };
++ QT_DEPRECATED_VERSION_X(5, 15, "Use QRecursiveMutex instead of a recursive QMutex")
+ explicit QMutex(RecursionMode mode);
++
++ QT_DEPRECATED_VERSION_X(5, 15, "Use QRecursiveMutex instead of a recursive QMutex")
++ bool isRecursive() const noexcept
++ { return QBasicMutex::isRecursive(); }
++#endif
++
+ ~QMutex();
+
+ // BasicLockable concept
+@@ -166,9 +174,6 @@ public:
+ }
+ #endif
+
+- bool isRecursive() const noexcept
+- { return QBasicMutex::isRecursive(); }
+-
+ private:
+ Q_DISABLE_COPY(QMutex)
+ friend class QMutexLocker;
+diff --git a/src/corelib/thread/qwaitcondition_unix.cpp b/src/corelib/thread/qwaitcondition_unix.cpp
+index 88b058f410..0f1da4dc9b 100644
+--- a/src/corelib/thread/qwaitcondition_unix.cpp
++++ b/src/corelib/thread/qwaitcondition_unix.cpp
+@@ -213,7 +213,7 @@ bool QWaitCondition::wait(QMutex *mutex, QDeadlineTimer deadline)
+ {
+ if (! mutex)
+ return false;
+- if (mutex->isRecursive()) {
++ if (static_cast<QBasicMutex *>(mutex)->isRecursive()) {
+ qWarning("QWaitCondition: cannot wait on recursive mutexes");
+ return false;
+ }
+--
+2.36.0
+
+From 7ab08a8e26d8f959be05e4af3b8e16d77d548e27 Mon Sep 17 00:00:00 2001
+From: Luca Beldi <v.ronin@yahoo.it>
+Date: Fri, 23 Apr 2021 15:35:29 +0100
+Subject: [PATCH 009/146] Fix QAbstractItemModelTester false positive
+
+When inserting rows to a branch with no columns
+the tester should not complain about indexes being invalid
+
+Pick-to: 6.1 6.0 5.15
+Change-Id: I466f4e5140b10f6dcf65a71f109c2d3be7336507
+Reviewed-by: David Faure <david.faure@kdab.com>
+(cherry picked from commit fcea8e7aa8a65de9e80136c2d603478831b246d0)
+---
+ src/testlib/qabstractitemmodeltester.cpp | 2 +-
+ .../qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp | 4 ++++
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/testlib/qabstractitemmodeltester.cpp b/src/testlib/qabstractitemmodeltester.cpp
+index a2c643660a..2c3d6a5586 100644
+--- a/src/testlib/qabstractitemmodeltester.cpp
++++ b/src/testlib/qabstractitemmodeltester.cpp
+@@ -454,7 +454,7 @@ void QAbstractItemModelTesterPrivate::parent()
+
+ // Common error test #2, make sure that a second level index has a parent
+ // that is the first level index.
+- if (model->rowCount(topIndex) > 0) {
++ if (model->rowCount(topIndex) > 0 && model->columnCount(topIndex) > 0) {
+ QModelIndex childIndex = model->index(0, 0, topIndex);
+ MODELTESTER_VERIFY(childIndex.isValid());
+ MODELTESTER_COMPARE(model->parent(childIndex), topIndex);
+diff --git a/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp b/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp
+index 4aa3f8d60b..d2050a61aa 100644
+--- a/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp
++++ b/tests/auto/testlib/qabstractitemmodeltester/tst_qabstractitemmodeltester.cpp
+@@ -115,6 +115,10 @@ void tst_QAbstractItemModelTester::standardItemModelZeroColumns()
+ // QTBUG-92886
+ model.insertRows(0, 5);
+ model.removeRows(1, 2);
++
++ const QModelIndex parentIndex = model.index(0, 0);
++ model.insertRows(0, 5, parentIndex);
++ model.removeRows(1, 2, parentIndex);
+ }
+
+ void tst_QAbstractItemModelTester::testInsertThroughProxy()
+--
+2.36.0
+
+From 31857c77d3d622fabd3b6c4c18269e4128a9c3b3 Mon Sep 17 00:00:00 2001
+From: Luca Beldi <v.ronin@yahoo.it>
+Date: Fri, 23 Apr 2021 20:30:17 +0100
+Subject: [PATCH 010/146] Fix QTreeModel calling beginRemoveRows twice
+
+For items that are children of other items, removeRows calls
+beginRemoveRows directly and then once again inside takeChild()
+The signal blocker that dates back to the monolitic import from Nokia
+prevents the model from emitting extra signals
+but the persistent indexes are corrupted nonetheless.
+
+Fixes: QTBUG-90030
+Pick-to: 6.1 6.0 5.15
+Change-Id: I5bc4b2598bf13247683b113faeec22471f1f04a4
+Reviewed-by: David Faure <david.faure@kdab.com>
+(cherry picked from commit 6ec3fa2842b5c4714dc9a3953b2721ef70dd957b)
+---
+ src/widgets/itemviews/qtreewidget.cpp | 18 +++++++-----------
+ .../itemviews/qtreewidget/tst_qtreewidget.cpp | 16 ++++++++++++++++
+ 2 files changed, 23 insertions(+), 11 deletions(-)
+
+diff --git a/src/widgets/itemviews/qtreewidget.cpp b/src/widgets/itemviews/qtreewidget.cpp
+index b795b79c28..81aed27361 100644
+--- a/src/widgets/itemviews/qtreewidget.cpp
++++ b/src/widgets/itemviews/qtreewidget.cpp
+@@ -508,22 +508,18 @@ bool QTreeModel::insertColumns(int column, int count, const QModelIndex &parent)
+ bool QTreeModel::removeRows(int row, int count, const QModelIndex &parent) {
+ if (count < 1 || row < 0 || (row + count) > rowCount(parent))
+ return false;
+-
+- beginRemoveRows(parent, row, row + count - 1);
+-
+- QSignalBlocker blocker(this);
+-
+- QTreeWidgetItem *itm = item(parent);
++ QTreeWidgetItem *parentItem = item(parent);
++ // if parentItem is valid, begin/end RemoveRows is handled by takeChild below
++ if (!parentItem)
++ beginRemoveRows(parent, row, row + count - 1);
+ for (int i = row + count - 1; i >= row; --i) {
+- QTreeWidgetItem *child = itm ? itm->takeChild(i) : rootItem->children.takeAt(i);
++ QTreeWidgetItem *child = parentItem ? parentItem->takeChild(i) : rootItem->children.takeAt(i);
+ Q_ASSERT(child);
+ child->view = nullptr;
+ delete child;
+- child = nullptr;
+ }
+- blocker.unblock();
+-
+- endRemoveRows();
++ if (!parentItem)
++ endRemoveRows();
+ return true;
+ }
+
+diff --git a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp
+index 7da56ab797..b129868bbd 100644
+--- a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp
++++ b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp
+@@ -151,6 +151,7 @@ private slots:
+ void getMimeDataWithInvalidItem();
+ void testVisualItemRect();
+ void reparentHiddenItem();
++ void persistentChildIndex();
+ #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+ void clearItemData();
+ #endif
+@@ -3597,6 +3598,21 @@ void tst_QTreeWidget::reparentHiddenItem()
+ QVERIFY(grandChild->isHidden());
+ }
+
++void tst_QTreeWidget::persistentChildIndex() // QTBUG-90030
++{
++ QTreeWidget tree;
++ QTreeWidgetItem *toplevel = new QTreeWidgetItem(QStringList{QStringLiteral("toplevel")});
++ tree.addTopLevelItem(toplevel);
++ QModelIndex firstIndex = tree.model()->index(0, 0);
++ QTreeWidgetItem *child1 = new QTreeWidgetItem(QStringList{QStringLiteral("child1")});
++ QTreeWidgetItem *child2 = new QTreeWidgetItem(QStringList{QStringLiteral("child2")});
++ toplevel->addChildren({child1, child2});
++ QPersistentModelIndex persistentIdx = tree.model()->index(1, 0, firstIndex);
++ QCOMPARE(persistentIdx.data().toString(), QStringLiteral("child2"));
++ tree.model()->removeRows(0, 1, firstIndex);
++ QCOMPARE(persistentIdx.data().toString(), QStringLiteral("child2"));
++}
++
+ #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)
+ void tst_QTreeWidget::clearItemData()
+ {
+--
+2.36.0
+
+From c6900954754ab088c6b58e2fd317cd7bd2c47b85 Mon Sep 17 00:00:00 2001
+From: Christian Ehrlicher <ch.ehrlicher@gmx.de>
+Date: Fri, 4 Dec 2020 23:13:15 +0100
+Subject: [PATCH 011/146] QTableView: honor spans when calculating height/width
+ hint
+
+QTableViewPrivate::heightHintForIndex()/widthHintForIndex() did not
+honor spans and therefore returned too big values.
+
+Fixes: QTBUG-89116
+Change-Id: I52948902b7eaaa27c092ed39da68950c3840e8e4
+Pick-to: 5.15
+Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
+(cherry picked from commit 0e4cc2aca7eb77879d20142e761773a891b33f10)
+---
+ src/widgets/itemviews/qtableview.cpp | 17 +++++
+ .../itemviews/qtableview/tst_qtableview.cpp | 65 +++++++++++++++++++
+ 2 files changed, 82 insertions(+)
+
+diff --git a/src/widgets/itemviews/qtableview.cpp b/src/widgets/itemviews/qtableview.cpp
+index 934ac581b2..f79bb24249 100644
+--- a/src/widgets/itemviews/qtableview.cpp
++++ b/src/widgets/itemviews/qtableview.cpp
+@@ -1013,6 +1013,7 @@ void QTableViewPrivate::drawCell(QPainter *painter, const QStyleOptionViewItem &
+ int QTableViewPrivate::widthHintForIndex(const QModelIndex &index, int hint, const QStyleOptionViewItem &option) const
+ {
+ Q_Q(const QTableView);
++ const int oldHint = hint;
+ QWidget *editor = editorForIndex(index).widget.data();
+ if (editor && persistent.contains(editor)) {
+ hint = qMax(hint, editor->sizeHint().width());
+@@ -1021,6 +1022,17 @@ int QTableViewPrivate::widthHintForIndex(const QModelIndex &index, int hint, con
+ hint = qBound(min, hint, max);
+ }
+ hint = qMax(hint, q->itemDelegate(index)->sizeHint(option, index).width());
++
++ if (hasSpans()) {
++ auto span = spans.spanAt(index.column(), index.row());
++ if (span && span->m_left == index.column() && span->m_top == index.row()) {
++ // spans are screwed up when sections are moved
++ const auto left = logicalColumn(span->m_left);
++ for (int i = 1; i <= span->width(); ++i)
++ hint -= q->columnWidth(visualColumn(left + i));
++ }
++ hint = std::max(hint, oldHint);
++ }
+ return hint;
+ }
+
+@@ -1053,6 +1065,11 @@ int QTableViewPrivate::heightHintForIndex(const QModelIndex &index, int hint, QS
+ option.rect.setHeight(height);
+ option.rect.setX(q->columnViewportPosition(index.column()));
+ option.rect.setWidth(q->columnWidth(index.column()));
++ if (hasSpans()) {
++ auto span = spans.spanAt(index.column(), index.row());
++ if (span && span->m_left == index.column() && span->m_top == index.row())
++ option.rect.setWidth(std::max(option.rect.width(), visualSpanRect(*span).width()));
++ }
+ // 1px less space when grid is shown (see drawCell)
+ if (showGrid)
+ option.rect.setWidth(option.rect.width() - 1);
+diff --git a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp
+index 761357b252..06bb706074 100644
+--- a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp
++++ b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp
+@@ -397,6 +397,7 @@ private slots:
+ void checkHeaderMinSize();
+
+ void resizeToContents();
++ void resizeToContentsSpans();
+
+ void tabFocus();
+ void bigModel();
+@@ -3721,6 +3722,70 @@ void tst_QTableView::resizeToContents()
+
+ }
+
++
++class SpanModel : public QAbstractTableModel
++{
++public:
++ SpanModel(bool sectionsMoved)
++ : _sectionsMoved(sectionsMoved)
++ {}
++ int columnCount(const QModelIndex & = {}) const override { return 2; }
++ int rowCount(const QModelIndex & = {}) const override { return 1; }
++ QVariant data(const QModelIndex &idx, int role = Qt::DisplayRole) const override
++ {
++ if (role != Qt::DisplayRole)
++ return QVariant();
++ const int col = _sectionsMoved ? 1 - idx.column() : idx.column();
++ if (col == 0)
++ return "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.";
++ return QVariant();
++ }
++private:
++ bool _sectionsMoved;
++};
++
++
++void tst_QTableView::resizeToContentsSpans()
++{
++ SpanModel model1(false);
++ SpanModel model2(true);
++ QTableView view1, view2, view3;
++ view1.setModel(&model1);
++ view2.setModel(&model2);
++ view2.horizontalHeader()->moveSection(0, 1);
++ view3.setModel(&model1);
++
++ view1.setSpan(0, 0, 1, 2);
++ view2.setSpan(0, 1, 1, 2);
++ view1.show();
++ view2.show();
++ view3.show();
++ QVERIFY(QTest::qWaitForWindowExposed(&view1));
++ QVERIFY(QTest::qWaitForWindowExposed(&view2));
++ QVERIFY(QTest::qWaitForWindowExposed(&view3));
++ view1.setColumnWidth(0, 100);
++ view1.setColumnWidth(1, 100);
++ view2.setColumnWidth(0, 100);
++ view2.setColumnWidth(1, 100);
++ view3.setColumnWidth(0, 200);
++
++ view1.resizeRowToContents(0);
++ view2.resizeRowToContents(0);
++ view3.resizeRowToContents(0);
++ QCOMPARE(view1.rowHeight(0), view3.rowHeight(0));
++ QCOMPARE(view2.rowHeight(0), view3.rowHeight(0));
++
++ view3.resizeColumnToContents(0);
++ view3.resizeRowToContents(0);
++ // height should be only 1 text line for easy testing
++ view1.setRowHeight(0, view3.verticalHeader()->sectionSize(0));
++ view2.setRowHeight(0, view3.verticalHeader()->sectionSize(0));
++ view1.resizeColumnToContents(0);
++ view2.resizeColumnToContents(1);
++ QCOMPARE(view1.columnWidth(0), view3.columnWidth(0) - view1.columnWidth(1));
++ QCOMPARE(view2.columnWidth(0), view3.columnWidth(0) - view2.columnWidth(1));
++}
++
+ QT_BEGIN_NAMESPACE
+ extern bool Q_WIDGETS_EXPORT qt_tab_all_widgets(); // qapplication.cpp
+ QT_END_NAMESPACE
+--
+2.36.0
+
+From 467219e9e281b1b8baa2c491480e80d5055e6628 Mon Sep 17 00:00:00 2001
+From: Andrey Butirsky <butirsky@gmail.com>
+Date: Wed, 24 Mar 2021 02:03:36 +0300
+Subject: [PATCH 012/146] Fix no mapping for SysReq key
+
+XKB_KEY_Sys_Req keysym is currently unmapped to any Qt::Key.
+Implication of this it is uncapable to participate in any keyboard
+shortcuts.
+This patch adds the missing mapping.
+
+Detected by testXkb KWin unit test
+
+Fixes: QTBUG-92087
+Pick-to: 5.15 6.0 6.1
+Change-Id: I2440c218e265c5636fc1d2703f14d8bfe033967e
+Reviewed-by: Andrey Butirsky <butirsky@gmail.com>
+Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
+Reviewed-by: Liang Qi <liang.qi@qt.io>
+Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
+(cherry picked from commit 40193c2b6919875a714e84f5029ba2bcc1f9e258)
+---
+ src/platformsupport/input/xkbcommon/qxkbcommon.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/platformsupport/input/xkbcommon/qxkbcommon.cpp b/src/platformsupport/input/xkbcommon/qxkbcommon.cpp
+index 877c5d848f..6a692a2456 100644
+--- a/src/platformsupport/input/xkbcommon/qxkbcommon.cpp
++++ b/src/platformsupport/input/xkbcommon/qxkbcommon.cpp
+@@ -93,6 +93,7 @@ static constexpr const auto KeyTbl = qMakeArray(
+ Xkb2Qt<XKB_KEY_Clear, Qt::Key_Delete>,
+ Xkb2Qt<XKB_KEY_Pause, Qt::Key_Pause>,
+ Xkb2Qt<XKB_KEY_Print, Qt::Key_Print>,
++ Xkb2Qt<XKB_KEY_Sys_Req, Qt::Key_SysReq>,
+ Xkb2Qt<0x1005FF60, Qt::Key_SysReq>, // hardcoded Sun SysReq
+ Xkb2Qt<0x1007ff00, Qt::Key_SysReq>, // hardcoded X386 SysReq
+
+--
+2.36.0
+
+From 117148d44d1a77d031424b6dddc0f2ed1a5519e9 Mon Sep 17 00:00:00 2001
+From: David Faure <david.faure@kdab.com>
+Date: Sun, 2 May 2021 00:59:49 +0200
+Subject: [PATCH 013/146] qdbus: add support for "aay" (QByteArrayList)
+
+(I wish these common mappings were centralized though, so that
+annotations in the XML file wouldn't be needed)
+
+Pick-to: 6.0 6.1 5.15
+Change-Id: Ie3e8731e44b6e0338c8a044408c34160cf0a3a1e
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit 831aea1ce1a3f08188bed005d239e367917acf2a)
+---
+ src/dbus/qdbusmetaobject.cpp | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/dbus/qdbusmetaobject.cpp b/src/dbus/qdbusmetaobject.cpp
+index 5265568f42..7e9f0f1acc 100644
+--- a/src/dbus/qdbusmetaobject.cpp
++++ b/src/dbus/qdbusmetaobject.cpp
+@@ -210,6 +210,9 @@ QDBusMetaObjectGenerator::findType(const QByteArray &signature,
+ } else if (signature == "a{ss}") {
+ result.name = "QMap<QString,QString>";
+ type = qMetaTypeId<QMap<QString, QString> >();
++ } else if (signature == "aay") {
++ result.name = "QByteArrayList";
++ type = qMetaTypeId<QByteArrayList>();
+ } else {
+ result.name = "{D-Bus type \"" + signature + "\"}";
+ type = registerComplexDBusType(result.name);
+--
+2.36.0
+
+From 15b7e92d6b216b64dce3bd20799b0d8ca3b34318 Mon Sep 17 00:00:00 2001
+From: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
+Date: Sat, 1 May 2021 16:58:21 +0200
+Subject: [PATCH 014/146] QRandom: drop a usage of std::is_literal_type
+
+It's deprecated/removed, and indeed doesn't check anything that it's
+not also already being checked by the previous line.
+
+Change-Id: Ic80ca43f390dd989ced69f196efa7313069e7c6d
+Pick-to: 5.15 6.0 6.1
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit 6351b5433da083890e47faa62e21fb40fd042c79)
+---
+ src/corelib/global/qrandom.cpp | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/corelib/global/qrandom.cpp b/src/corelib/global/qrandom.cpp
+index 10672c1f92..25f87c7e6a 100644
+--- a/src/corelib/global/qrandom.cpp
++++ b/src/corelib/global/qrandom.cpp
+@@ -383,7 +383,6 @@ struct QRandomGenerator::SystemAndGlobalGenerators
+
+ constexpr SystemAndGlobalGenerators g = {};
+ Q_UNUSED(g);
+- Q_STATIC_ASSERT(std::is_literal_type<SystemAndGlobalGenerators>::value);
+ #endif
+ }
+
+--
+2.36.0
+
+From 0768d6eb4cc804eb13e117ce5fab0dfa56e8db23 Mon Sep 17 00:00:00 2001
+From: Gong Heng <gongheng@uniontech.com>
+Date: Thu, 18 Mar 2021 16:53:11 +0800
+Subject: [PATCH 015/146] =?UTF-8?q?fix:=20Optimize=20the=20performance=20o?=
+ =?UTF-8?q?f=20the=20inotify=20file=20system=20monitoring=20program?=
+ =?UTF-8?q?=E3=80=82?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+When the ioctl() functions is executed correctly, the value of buffSize may be 0.
+In this situation, there is no need to execute the following code.
+This modification can solve two benefits:
+1. The readFromInotify function runs frequently, and this modification can improve the
+efficiency of the program.
+2. When the buffSize is equal to 0, "read(inotifyFd, buffer.data(), buffSize)" function will
+be stuck.(I have encountered this kind of problem)
+
+Pick-to: 5.15 6.0 6.1
+Change-Id: I9f85491ec91e336b4a1bec5c99b911835c5c06a5
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+(cherry picked from commit bb8fc324d16278c27a211093fb47bafcc4fe7874)
+---
+ src/corelib/io/qfilesystemwatcher_inotify.cpp | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/corelib/io/qfilesystemwatcher_inotify.cpp b/src/corelib/io/qfilesystemwatcher_inotify.cpp
+index 94d9d06bcb..27e0b13b0b 100644
+--- a/src/corelib/io/qfilesystemwatcher_inotify.cpp
++++ b/src/corelib/io/qfilesystemwatcher_inotify.cpp
+@@ -366,7 +366,9 @@ void QInotifyFileSystemWatcherEngine::readFromInotify()
+ // qDebug("QInotifyFileSystemWatcherEngine::readFromInotify");
+
+ int buffSize = 0;
+- ioctl(inotifyFd, FIONREAD, (char *) &buffSize);
++ if (ioctl(inotifyFd, FIONREAD, (char *) &buffSize) == -1 || buffSize == 0)
++ return;
++
+ QVarLengthArray<char, 4096> buffer(buffSize);
+ buffSize = read(inotifyFd, buffer.data(), buffSize);
+ char *at = buffer.data();
+--
+2.36.0
+
+From ea16aca5c3646df0ddbed2d057470789d3090314 Mon Sep 17 00:00:00 2001
+From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+Date: Wed, 19 May 2021 09:48:41 +0200
+Subject: [PATCH 016/146] Fix memory leak when using small caps font
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The small caps version of a font is kept as a QFontPrivate*
+which is manually reference counted, but we neglected to
+actually delete it when the reference count went to 0.
+
+[ChangeLog][Fonts] Fixed a memory leak when initializing
+a small caps font.
+
+Fixes: QTBUG-93068
+Pick-to: 6.1 5.15
+Change-Id: Icc7fb7a59bf523da84d2e6fa026940a7d1230525
+Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
+Reviewed-by: Robert Löhning <robert.loehning@qt.io>
+(cherry picked from commit 11a40defff51dae2476e0da9f2b995a3a0f3bda8)
+---
+ src/gui/text/qfont.cpp | 12 ++++++++----
+ 1 file changed, 8 insertions(+), 4 deletions(-)
+
+diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp
+index 5a1fa36e5c..3d044edd5a 100644
+--- a/src/gui/text/qfont.cpp
++++ b/src/gui/text/qfont.cpp
+@@ -220,8 +220,10 @@ QFontPrivate::~QFontPrivate()
+ if (engineData && !engineData->ref.deref())
+ delete engineData;
+ engineData = nullptr;
+- if (scFont && scFont != this)
+- scFont->ref.deref();
++ if (scFont && scFont != this) {
++ if (!scFont->ref.deref())
++ delete scFont;
++ }
+ scFont = nullptr;
+ }
+
+@@ -630,8 +632,10 @@ void QFont::detach()
+ if (d->engineData && !d->engineData->ref.deref())
+ delete d->engineData;
+ d->engineData = nullptr;
+- if (d->scFont && d->scFont != d.data())
+- d->scFont->ref.deref();
++ if (d->scFont && d->scFont != d.data()) {
++ if (!d->scFont->ref.deref())
++ delete d->scFont;
++ }
+ d->scFont = nullptr;
+ return;
+ }
+--
+2.36.0
+
+From cf554449687041f6dec98ba06bb28d444ec80ca7 Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <albert.astals.cid@kdab.com>
+Date: Fri, 7 May 2021 16:38:13 +0200
+Subject: [PATCH 017/146] Make sure _q_printerChanged is called even if only
+ pdf printer is available
+
+Otherwise things like the pagesRadioButton don't get properly disabled
+
+Change-Id: Idc0693b6747f13da5afb22e2187af310a5b454f8
+Pick-to: 6.1 5.15
+Reviewed-by: Andy Shaw <andy.shaw@qt.io>
+(cherry picked from commit 973700c54678803a2600dfa60112f29f15705197)
+---
+ src/printsupport/dialogs/qprintdialog_unix.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/printsupport/dialogs/qprintdialog_unix.cpp b/src/printsupport/dialogs/qprintdialog_unix.cpp
+index bf77666c41..c5b845f4ec 100644
+--- a/src/printsupport/dialogs/qprintdialog_unix.cpp
++++ b/src/printsupport/dialogs/qprintdialog_unix.cpp
+@@ -1184,6 +1184,8 @@ void QUnixPrintWidgetPrivate::updateWidget()
+ widget.printers->insertSeparator(widget.printers->count());
+ widget.printers->addItem(QPrintDialog::tr("Print to File (PDF)"));
+ filePrintersAdded = true;
++ if (widget.printers->count() == 1)
++ _q_printerChanged(0);
+ }
+ if (!printToFile && filePrintersAdded) {
+ widget.printers->removeItem(widget.printers->count()-1);
+--
+2.36.0
+
+From fc638f3353c0076f08fa4aba9c2db5a2b44c61e1 Mon Sep 17 00:00:00 2001
+From: Andrey Butirsky <butirsky@gmail.com>
+Date: Thu, 18 Mar 2021 17:42:51 +0300
+Subject: [PATCH 018/146] fix Alt+` shortcut on non-US layouts
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Make it possible for non-letter-keys with Latin 1 symbols (`, !, @ etc.)
+to participate in shortcuts also, when the keys generate national
+symbols on non-Latin layout.
+For example, in Russian layout, "`" key generates cyrillic "ё" letter of
+national alphabet, so shortcuts with the key should still work
+regardless of the actual layout.
+
+Fixes: QTBUG-90611
+Change-Id: Id9a505210ff33a94b82511b88c30ef79f3d03913
+Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
+(cherry picked from commit 62e697fd568f6acdae7144a58efa08990eb7d9ab)
+---
+ src/platformsupport/input/xkbcommon/qxkbcommon.cpp | 12 ++++++------
+ src/platformsupport/input/xkbcommon/qxkbcommon_p.h | 4 ++--
+ 2 files changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/src/platformsupport/input/xkbcommon/qxkbcommon.cpp b/src/platformsupport/input/xkbcommon/qxkbcommon.cpp
+index 6a692a2456..f1e478274c 100644
+--- a/src/platformsupport/input/xkbcommon/qxkbcommon.cpp
++++ b/src/platformsupport/input/xkbcommon/qxkbcommon.cpp
+@@ -470,7 +470,7 @@ QVector<xkb_keysym_t> QXkbCommon::toKeysym(QKeyEvent *event)
+ } else if (event->modifiers() & Qt::KeypadModifier) {
+ if (qtKey >= Qt::Key_0 && qtKey <= Qt::Key_9)
+ keysyms.append(XKB_KEY_KP_0 + (qtKey - Qt::Key_0));
+- } else if (isLatin(qtKey) && event->text().isUpper()) {
++ } else if (isLatin1(qtKey) && event->text().isUpper()) {
+ keysyms.append(qtKey);
+ }
+
+@@ -522,7 +522,7 @@ int QXkbCommon::keysymToQtKey(xkb_keysym_t keysym, Qt::KeyboardModifiers modifie
+ // With standard shortcuts we should prefer a latin character, this is
+ // for checks like "some qkeyevent == QKeySequence::Copy" to work even
+ // when using for example 'russian' keyboard layout.
+- if (!QXkbCommon::isLatin(keysym)) {
++ if (!QXkbCommon::isLatin1(keysym)) {
+ xkb_keysym_t latinKeysym = QXkbCommon::lookupLatinKeysym(state, code);
+ if (latinKeysym != XKB_KEY_NoSymbol)
+ keysym = latinKeysym;
+@@ -545,7 +545,7 @@ static int keysymToQtKey_internal(xkb_keysym_t keysym, Qt::KeyboardModifiers mod
+ } else if (keysym >= XKB_KEY_KP_0 && keysym <= XKB_KEY_KP_9) {
+ // numeric keypad keys
+ qtKey = Qt::Key_0 + (keysym - XKB_KEY_KP_0);
+- } else if (QXkbCommon::isLatin(keysym)) {
++ } else if (QXkbCommon::isLatin1(keysym)) {
+ qtKey = QXkbCommon::qxkbcommon_xkb_keysym_to_upper(keysym);
+ } else {
+ // check if we have a direct mapping
+@@ -675,7 +675,7 @@ QList<int> QXkbCommon::possibleKeys(xkb_state *state, const QKeyEvent *event,
+ Qt::KeyboardModifiers neededMods = ModsTbl[i];
+ if ((modifiers & neededMods) == neededMods) {
+ if (i == 8) {
+- if (isLatin(baseQtKey))
++ if (isLatin1(baseQtKey))
+ continue;
+ // add a latin key as a fall back key
+ sym = lookupLatinKeysym(state, keycode);
+@@ -730,7 +730,7 @@ void QXkbCommon::verifyHasLatinLayout(xkb_keymap *keymap)
+ for (xkb_layout_index_t layout = 0; layout < layoutCount; ++layout) {
+ for (xkb_keycode_t code = minKeycode; code < maxKeycode; ++code) {
+ xkb_keymap_key_get_syms_by_level(keymap, code, layout, 0, &keysyms);
+- if (keysyms && isLatin(keysyms[0]))
++ if (keysyms && isLatin1(keysyms[0]))
+ nrLatinKeys++;
+ if (nrLatinKeys > 10) // arbitrarily chosen threshold
+ return;
+@@ -763,7 +763,7 @@ xkb_keysym_t QXkbCommon::lookupLatinKeysym(xkb_state *state, xkb_keycode_t keyco
+ xkb_level_index_t level = xkb_state_key_get_level(state, keycode, layout);
+ if (xkb_keymap_key_get_syms_by_level(keymap, keycode, layout, level, &syms) != 1)
+ continue;
+- if (isLatin(syms[0])) {
++ if (isLatin1(syms[0])) {
+ sym = syms[0];
+ break;
+ }
+diff --git a/src/platformsupport/input/xkbcommon/qxkbcommon_p.h b/src/platformsupport/input/xkbcommon/qxkbcommon_p.h
+index 561eae03db..8389bd8f5a 100644
+--- a/src/platformsupport/input/xkbcommon/qxkbcommon_p.h
++++ b/src/platformsupport/input/xkbcommon/qxkbcommon_p.h
+@@ -94,8 +94,8 @@ public:
+ static void verifyHasLatinLayout(xkb_keymap *keymap);
+ static xkb_keysym_t lookupLatinKeysym(xkb_state *state, xkb_keycode_t keycode);
+
+- static bool isLatin(xkb_keysym_t sym) {
+- return ((sym >= 'a' && sym <= 'z') || (sym >= 'A' && sym <= 'Z'));
++ static bool isLatin1(xkb_keysym_t sym) {
++ return sym <= 0xff;
+ }
+ static bool isKeypad(xkb_keysym_t sym) {
+ return sym >= XKB_KEY_KP_Space && sym <= XKB_KEY_KP_9;
+--
+2.36.0
+
+From 8061c8e42868b0dea1aa84b9d85b166e163dace1 Mon Sep 17 00:00:00 2001
+From: Edward Welbourne <edward.welbourne@qt.io>
+Date: Wed, 2 Jun 2021 12:14:31 +0200
+Subject: [PATCH 019/146] Fix copy-and-paste bug in QDTEP::getMaximum()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+It had a copy of a line from getMinimum().
+The results were predictably broken.
+
+Pick-to: 5.15 6.1
+Change-Id: I3582edb08696bec4311f43fc426f7e54dc069f53
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+(cherry picked from commit a15a3fef0b5dae4e83bd94b23dd2418208159d05)
+---
+ src/widgets/widgets/qdatetimeedit_p.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/widgets/widgets/qdatetimeedit_p.h b/src/widgets/widgets/qdatetimeedit_p.h
+index 7df2b59710..e0df5b5158 100644
+--- a/src/widgets/widgets/qdatetimeedit_p.h
++++ b/src/widgets/widgets/qdatetimeedit_p.h
+@@ -1,6 +1,6 @@
+ /****************************************************************************
+ **
+-** Copyright (C) 2018 The Qt Company Ltd.
++** Copyright (C) 2021 The Qt Company Ltd.
+ ** Contact: https://www.qt.io/licensing/
+ **
+ ** This file is part of the QtWidgets module of the Qt Toolkit.
+@@ -107,7 +107,7 @@ public:
+ if (keyboardTracking)
+ return maximum.toDateTime();
+ if (spec != Qt::LocalTime)
+- return QDateTime(QDATETIMEEDIT_DATE_MIN.startOfDay(spec));
++ return QDateTime(QDATETIMEEDIT_DATE_MAX.endOfDay(spec));
+ return QDateTimeParser::getMaximum();
+ }
+ QLocale locale() const override { return q_func()->locale(); }
+--
+2.36.0
+
+From e0ab2b79df7846311d18034b7764d656f85c14ed Mon Sep 17 00:00:00 2001
+From: David Faure <david.faure@kdab.com>
+Date: Mon, 17 May 2021 18:37:58 +0200
+Subject: [PATCH 020/146] QSortFilterProxyModel: create mappings on demand
+ again
+
+Calling create_mapping in setSourceModel as introduced by 8455bfee76ed3f1bd3bba8bd3688a7afa94ae0bb
+can lead to an early call to filterAcceptsRow, and some existing applications may crash.
+It is also an incomplete solution since it was only done for the
+toplevel index but not for child indexes.
+
+Instead, go back to creating mappings on demand.
+This means coming up with a different fix for QTBUG-87781 (dataChanged
+not emitted for indexes that haven't been mapped yet, i.e. not queried
+or shown anywhere).
+
+When this happens, we can't know if the index was previously filtered
+out or not (for lack of a dataAboutToBeChanged signal...). Creating
+the mapping with the new data only gives us the new state of affairs,
+there's no reference state to compare to. Therefore, when the mapping
+is missing (during dataChanged handling), create it, but skip all the
+logic about row insertion/removal, just forward the dataChanged signal
+if the row isn't filtered out.
+
+Creating the mapping might require creating first mappings for parents,
+recursively, which wasn't done anywhere in QSFPM yet, hence the new
+create_mapping_recursive() method.
+
+In addition to all this, the handling of removed items was incorrect,
+remove_source_items did nothing if the parent was gone, and then
+source_items_removed was trying to adjust indexes in an incorrect list.
+If the parent is gone, clear the proxy_to_source list, so there's
+nothing to adjust afterwards. This bug actually doesn't happen anymore
+in this version of the patch, but the change still seems right and might
+prevent repeating a long debugging session in the future.
+
+Thanks to ChunLin Wang for the unittest in this commit.
+
+Done-with: ChunLin Wang
+Pick-to: 6.1 6.0 5.15
+Change-Id: Id543d0cc98f1a03b5852bda01d2f49b980e06be7
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
+(cherry picked from commit 4ec5622e62e6fd521e1193f1d6084901f09e7e9e)
+---
+ .../itemmodels/qsortfilterproxymodel.cpp | 54 +++++++++++++++----
+ .../tst_qsortfilterproxymodel.cpp | 34 ++++++++++++
+ .../tst_qsortfilterproxymodel.h | 1 +
+ 3 files changed, 79 insertions(+), 10 deletions(-)
+
+diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.cpp b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
+index 3b07c7b9cf..6fc4b7d84e 100644
+--- a/src/corelib/itemmodels/qsortfilterproxymodel.cpp
++++ b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
+@@ -307,6 +307,8 @@ public:
+
+ QHash<QModelIndex, Mapping *>::const_iterator create_mapping(
+ const QModelIndex &source_parent) const;
++ QHash<QModelIndex, Mapping *>::const_iterator create_mapping_recursive(
++ const QModelIndex &source_parent) const;
+ QModelIndex proxy_to_source(const QModelIndex &proxyIndex) const;
+ QModelIndex source_to_proxy(const QModelIndex &sourceIndex) const;
+ bool can_create_mapping(const QModelIndex &source_parent) const;
+@@ -533,6 +535,29 @@ IndexMap::const_iterator QSortFilterProxyModelPrivate::create_mapping(
+ return it;
+ }
+
++// Go up the tree, creating mappings, unless of course the parent is filtered out
++IndexMap::const_iterator QSortFilterProxyModelPrivate::create_mapping_recursive(const QModelIndex &source_parent) const
++{
++ if (source_parent.isValid()) {
++ const QModelIndex source_grand_parent = source_parent.parent();
++ IndexMap::const_iterator it = source_index_mapping.constFind(source_grand_parent);
++ IndexMap::const_iterator end = source_index_mapping.constEnd();
++ if (it == end) {
++ it = create_mapping_recursive(source_grand_parent);
++ end = source_index_mapping.constEnd();
++ if (it == end)
++ return end;
++ }
++ Mapping *gm = it.value();
++ if (gm->proxy_rows.at(source_parent.row()) == -1 ||
++ gm->proxy_columns.at(source_parent.column()) == -1) {
++ // Can't do, parent is filtered
++ return end;
++ }
++ }
++ return create_mapping(source_parent);
++}
++
+ QModelIndex QSortFilterProxyModelPrivate::proxy_to_source(const QModelIndex &proxy_index) const
+ {
+ if (!proxy_index.isValid())
+@@ -751,8 +776,10 @@ void QSortFilterProxyModelPrivate::remove_source_items(
+ {
+ Q_Q(QSortFilterProxyModel);
+ QModelIndex proxy_parent = q->mapFromSource(source_parent);
+- if (!proxy_parent.isValid() && source_parent.isValid())
++ if (!proxy_parent.isValid() && source_parent.isValid()) {
++ proxy_to_source.clear();
+ return; // nothing to do (already removed)
++ }
+
+ const auto proxy_intervals = proxy_intervals_for_source_items(
+ source_to_proxy, source_items);
+@@ -1404,11 +1431,20 @@ void QSortFilterProxyModelPrivate::_q_sourceDataChanged(const QModelIndex &sourc
+ const QModelIndex &source_bottom_right = data_changed.bottomRight;
+ const QModelIndex source_parent = source_top_left.parent();
+
++ bool change_in_unmapped_parent = false;
+ IndexMap::const_iterator it = source_index_mapping.constFind(source_parent);
+ if (it == source_index_mapping.constEnd()) {
+- // Don't care, since we don't have mapping for this index
+- continue;
++ // We don't have mapping for this index, so we cannot know how things
++ // changed (in case the change affects filtering) in order to forward
++ // the change correctly.
++ // But we can at least forward the signal "as is", if the row isn't
++ // filtered out, this is better than nothing.
++ it = create_mapping_recursive(source_parent);
++ if (it == source_index_mapping.constEnd())
++ continue;
++ change_in_unmapped_parent = true;
+ }
++
+ Mapping *m = it.value();
+
+ // Figure out how the source changes affect us
+@@ -1418,7 +1454,7 @@ void QSortFilterProxyModelPrivate::_q_sourceDataChanged(const QModelIndex &sourc
+ QVector<int> source_rows_resort;
+ int end = qMin(source_bottom_right.row(), m->proxy_rows.count() - 1);
+ for (int source_row = source_top_left.row(); source_row <= end; ++source_row) {
+- if (dynamic_sortfilter) {
++ if (dynamic_sortfilter && !change_in_unmapped_parent) {
+ if (m->proxy_rows.at(source_row) != -1) {
+ if (!filterAcceptsRowInternal(source_row, source_parent)) {
+ // This source row no longer satisfies the filter, so it must be removed
+@@ -1568,7 +1604,6 @@ void QSortFilterProxyModelPrivate::_q_sourceReset()
+ _q_clearMapping();
+ // All internal structures are deleted in clear()
+ q->endResetModel();
+- create_mapping(QModelIndex());
+ update_source_sort_column();
+ if (dynamic_sortfilter && update_source_sort_column())
+ sort();
+@@ -1634,8 +1669,8 @@ void QSortFilterProxyModelPrivate::_q_sourceRowsAboutToBeInserted(
+
+ const bool toplevel = !source_parent.isValid();
+ const bool recursive_accepted = filter_recursive && !toplevel && filterAcceptsRowInternal(source_parent.row(), source_parent.parent());
+- //Force the creation of a mapping now, even if its empty.
+- //We need it because the proxy can be acessed at the moment it emits rowsAboutToBeInserted in insert_source_items
++ //Force the creation of a mapping now, even if it's empty.
++ //We need it because the proxy can be accessed at the moment it emits rowsAboutToBeInserted in insert_source_items
+ if (!filter_recursive || toplevel || recursive_accepted) {
+ if (can_create_mapping(source_parent))
+ create_mapping(source_parent);
+@@ -1754,8 +1789,8 @@ void QSortFilterProxyModelPrivate::_q_sourceColumnsAboutToBeInserted(
+ {
+ Q_UNUSED(start);
+ Q_UNUSED(end);
+- //Force the creation of a mapping now, even if its empty.
+- //We need it because the proxy can be acessed at the moment it emits columnsAboutToBeInserted in insert_source_items
++ //Force the creation of a mapping now, even if it's empty.
++ //We need it because the proxy can be accessed at the moment it emits columnsAboutToBeInserted in insert_source_items
+ if (can_create_mapping(source_parent))
+ create_mapping(source_parent);
+ }
+@@ -2149,7 +2184,6 @@ void QSortFilterProxyModel::setSourceModel(QAbstractItemModel *sourceModel)
+ connect(d->model, SIGNAL(modelReset()), this, SLOT(_q_sourceReset()));
+
+ endResetModel();
+- d->create_mapping(QModelIndex());
+ if (d->update_source_sort_column() && d->dynamic_sortfilter)
+ d->sort();
+ }
+diff --git a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.cpp b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.cpp
+index 6f608854ae..a6e1f49be2 100644
+--- a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.cpp
++++ b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.cpp
+@@ -2220,6 +2220,40 @@ void tst_QSortFilterProxyModel::changeSourceDataProxySendDataChanged_qtbug87781(
+ QCOMPARE(afterDataChangedSpy.size(), 1);
+ }
+
++void tst_QSortFilterProxyModel::changeSourceDataTreeModel()
++{
++ QStandardItemModel treeModel;
++ QSortFilterProxyModel treeProxyModelBefore;
++ QSortFilterProxyModel treeProxyModelAfter;
++
++ QSignalSpy treeBaseDataChangedSpy(&treeModel, &QStandardItemModel::dataChanged);
++ QSignalSpy treeBeforeDataChangedSpy(&treeProxyModelBefore, &QSortFilterProxyModel::dataChanged);
++ QSignalSpy treeAfterDataChangedSpy(&treeProxyModelAfter, &QSortFilterProxyModel::dataChanged);
++
++ QVERIFY(treeBaseDataChangedSpy.isValid());
++ QVERIFY(treeBeforeDataChangedSpy.isValid());
++ QVERIFY(treeAfterDataChangedSpy.isValid());
++
++ treeProxyModelBefore.setSourceModel(&treeModel);
++ QStandardItem treeNode1("data1");
++ QStandardItem treeNode11("data11");
++ QStandardItem treeNode111("data111");
++
++ treeNode1.appendRow(&treeNode11);
++ treeNode11.appendRow(&treeNode111);
++ treeModel.appendRow(&treeNode1);
++ treeProxyModelAfter.setSourceModel(&treeModel);
++
++ QCOMPARE(treeBaseDataChangedSpy.size(), 0);
++ QCOMPARE(treeBeforeDataChangedSpy.size(), 0);
++ QCOMPARE(treeAfterDataChangedSpy.size(), 0);
++
++ treeNode111.setData(QStringLiteral("new data"), Qt::DisplayRole);
++ QCOMPARE(treeBaseDataChangedSpy.size(), 1);
++ QCOMPARE(treeBeforeDataChangedSpy.size(), 1);
++ QCOMPARE(treeAfterDataChangedSpy.size(), 1);
++}
++
+ void tst_QSortFilterProxyModel::changeSourceDataProxyFilterSingleColumn()
+ {
+ enum modelRow { Row0, Row1, RowCount };
+diff --git a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.h b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.h
+index 7bf87a86c2..97862e804b 100644
+--- a/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.h
++++ b/tests/auto/corelib/itemmodels/qsortfilterproxymodel_common/tst_qsortfilterproxymodel.h
+@@ -91,6 +91,7 @@ private slots:
+ void changeSourceDataKeepsStableSorting_qtbug1548();
+ void changeSourceDataForwardsRoles_qtbug35440();
+ void changeSourceDataProxySendDataChanged_qtbug87781();
++ void changeSourceDataTreeModel();
+ void changeSourceDataProxyFilterSingleColumn();
+ void changeSourceDataProxyFilterMultipleColumns();
+ void resortingDoesNotBreakTreeModels();
+--
+2.36.0
+
+From 835dec0c458d3f8e51b9b1328bef76969916bf28 Mon Sep 17 00:00:00 2001
+From: Igor Kushnir <igorkuo@gmail.com>
+Date: Mon, 29 Mar 2021 18:58:19 +0300
+Subject: [PATCH 021/146] Optimize quadratic-time insertion in
+ QSortFilterProxyModel
+
+Let N = proxy_to_source.size() before the code modified in this commit.
+Let M = (N - proxy_start). Let K = source_items.size(). The algorithmic
+complexity of the removed loop is O(N+K+K*M), assuming the number of
+O(N+K) reallocations is a constant. The complexity of the QList::insert
+and std::copy implementation is O(N+K). This is much faster in practice
+when K and M are of the same order of magnitude as N.
+
+For example, this quadratic complexity issue results in noticeable
+slowdown in the following scenario:
+ * a QSortFilterProxyModel is used only for filtering, not sorting;
+ * first set a filter that matches a single item in the middle of a
+ huge number of items (about one million) - this is reasonably fast
+ (takes about a second);
+ * then clear the filter (i.e. set an empty filter so that no item is
+ filtered out) and watch your application's UI freeze for a minute.
+
+The "Add QSortFilterProxyModel clear-filter benchmark" commit (with
+Change-Id I419a5521dd0be7676fbb09b34b4069d4a76423b1) adds a benchmark
+that runs much faster with this performance fix.
+
+Pick-to: 6.0 6.1
+Change-Id: Ieaec173e6910f5d21eaee49402087f7711abbedf
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
+(cherry picked from commit 7d92ef63d7c2d9d017d89905a2ee0d1e9226b15c)
+---
+ src/corelib/itemmodels/qsortfilterproxymodel.cpp | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.cpp b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
+index 6fc4b7d84e..c5e287ee84 100644
+--- a/src/corelib/itemmodels/qsortfilterproxymodel.cpp
++++ b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
+@@ -939,8 +939,9 @@ void QSortFilterProxyModelPrivate::insert_source_items(
+ q->beginInsertColumns(proxy_parent, proxy_start, proxy_end);
+ }
+
+- for (int i = 0; i < source_items.size(); ++i)
+- proxy_to_source.insert(proxy_start + i, source_items.at(i));
++ // TODO: use the range QList::insert() overload once it is implemented (QTBUG-58633).
++ proxy_to_source.insert(proxy_start, source_items.size(), 0);
++ std::copy(source_items.cbegin(), source_items.cend(), proxy_to_source.begin() + proxy_start);
+
+ build_source_to_proxy_mapping(proxy_to_source, source_to_proxy);
+
+--
+2.36.0
+
+From 1418a79735bac042b26be8468ac81d5b209c406b Mon Sep 17 00:00:00 2001
+From: David Faure <david.faure@kdab.com>
+Date: Thu, 24 Jun 2021 18:53:15 +0200
+Subject: [PATCH 022/146] Update shared-mime-info to the 2.1 release, adjust
+ implementation
+
+The spec hasn't changed, but I made the same mistake in xdgmime
+(the reference implementation) and in Qt: when multiple globs match,
+and the result from magic sniffing is unrelated to any of those globs,
+then I used the magic result, but that's wrong, globs have priority
+and one of them should be picked up.
+
+This is now fixed in xdgmime
+(https://gitlab.freedesktop.org/xdg/xdgmime/-/merge_requests/3)
+and in the expected results in shared-mime-info
+(https://gitlab.freedesktop.org/xdg/shared-mime-info/-/merge_requests/99)
+which this commit is also tested against.
+
+This change also optimizes QMimeBinaryProvider::addFileNameMatches
+to have the same logic as xdgmime for glob matching:
+literals > extensions > other globs
+As soon as one category matches, we can stop there.
+This makes no difference in the overall results, in practice.
+
+The user bug report (against the Qt implementation, actually)
+is https://gitlab.freedesktop.org/xdg/shared-mime-info/-/issues/138
+as well as https://bugs.kde.org/show_bug.cgi?id=411718
+
+Pick-to: 6.0 5.15
+Change-Id: Ia0a34080427daff43c732609443ee6df8f41447c
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit 0cbbba2aa5b472241d45b4be6959a792062fbc30)
+---
+ .../mime/packages/freedesktop.org.xml | 15895 +++++++++-------
+ src/corelib/mimetypes/qmimedatabase.cpp | 11 +-
+ src/corelib/mimetypes/qmimeglobpattern.cpp | 5 +-
+ src/corelib/mimetypes/qmimeprovider.cpp | 17 +-
+ .../qmimedatabase/tst_qmimedatabase.cpp | 21 +-
+ 5 files changed, 8888 insertions(+), 7061 deletions(-)
+
+diff --git a/src/corelib/mimetypes/mime/packages/freedesktop.org.xml b/src/corelib/mimetypes/mime/packages/freedesktop.org.xml
+index d384ffb2d5..e73929c9bb 100644
+--- a/src/corelib/mimetypes/mime/packages/freedesktop.org.xml
++++ b/src/corelib/mimetypes/mime/packages/freedesktop.org.xml
+@@ -1,183 +1,177 @@
+-<?xml version="1.0" encoding="UTF-8"?>
++<?xml version="1.0" encoding="utf-8"?>
+ <!DOCTYPE mime-info [
+- <!ELEMENT mime-info (mime-type)+>
+- <!ATTLIST mime-info xmlns CDATA #FIXED "http://www.freedesktop.org/standards/shared-mime-info">
+-
+- <!ELEMENT mime-type (comment+, (acronym,expanded-acronym)? , (icon? | generic-icon? | glob | magic | treemagic | root-XML | alias | sub-class-of)*)>
+- <!ATTLIST mime-type type CDATA #REQUIRED>
+-
+- <!-- a comment describing a document with the respective MIME type. Example: "WMV video" -->
+- <!ELEMENT comment (#PCDATA)>
+- <!ATTLIST comment xml:lang CDATA #IMPLIED>
+-
+- <!-- a comment describing the respective unexpanded MIME type acronym. Example: "WMV" -->
+- <!ELEMENT acronym (#PCDATA)>
+- <!ATTLIST acronym xml:lang CDATA #IMPLIED>
+-
+- <!-- a comment describing the respective expanded MIME type acronym. Example: "Windows Media Video" -->
+- <!ELEMENT expanded-acronym (#PCDATA)>
+- <!ATTLIST expanded-acronym xml:lang CDATA #IMPLIED>
+-
+- <!ELEMENT icon EMPTY>
+- <!ATTLIST icon name CDATA #REQUIRED>
+-
+- <!-- a generic icon name as per the Icon Naming Specification, only required if computing
+- it from the mime-type would not work, See "generic-icon" in the Shared Mime Specification -->
+- <!ELEMENT generic-icon EMPTY>
+- <!ATTLIST generic-icon name (application-x-executable|audio-x-generic|folder|font-x-generic|image-x-generic|package-x-generic|text-html|text-x-generic|text-x-generic-template|text-x-script|video-x-generic|x-office-address-book|x-office-calendar|x-office-document|x-office-presentation|x-office-spreadsheet) #REQUIRED>
+-
+- <!ELEMENT glob EMPTY>
+- <!ATTLIST glob pattern CDATA #REQUIRED>
+- <!ATTLIST glob weight CDATA "50">
+- <!ATTLIST glob case-sensitive CDATA #IMPLIED>
+-
+- <!ELEMENT magic (match)+>
+- <!ATTLIST magic priority CDATA "50">
+-
+- <!ELEMENT match (match)*>
+- <!ATTLIST match offset CDATA #REQUIRED>
+- <!ATTLIST match type (string|big16|big32|little16|little32|host16|host32|byte) #REQUIRED>
+- <!ATTLIST match value CDATA #REQUIRED>
+- <!ATTLIST match mask CDATA #IMPLIED>
+-
+- <!ELEMENT treemagic (treematch)+>
+- <!ATTLIST treemagic priority CDATA "50">
++<!ELEMENT mime-info (mime-type)+>
++<!ATTLIST mime-info xmlns CDATA #FIXED "http://www.freedesktop.org/standards/shared-mime-info">
++<!ELEMENT mime-type (comment+ , (acronym , expanded-acronym)? , (icon | generic-icon | glob | magic | treemagic | root-XML | alias | sub-class-of)*)>
++<!ATTLIST mime-type type CDATA #REQUIRED>
++<!-- a comment describing a document with the respective MIME type. Example: "WMV video" --><!ELEMENT comment (#PCDATA)>
++<!ATTLIST comment xml:lang CDATA #IMPLIED>
++<!-- a comment describing the respective unexpanded MIME type acronym. Example: "WMV" --><!ELEMENT acronym (#PCDATA)>
++<!-- a comment describing the respective expanded MIME type acronym. Example: "Windows Media Video" --><!ELEMENT expanded-acronym (#PCDATA)>
++<!ELEMENT icon EMPTY>
++<!ATTLIST icon name CDATA #REQUIRED>
++<!-- a generic icon name as per the Icon Naming Specification, only required if computing
++ it from the mime-type would not work, See "generic-icon" in the Shared Mime Specification --><!ELEMENT generic-icon EMPTY>
++<!ATTLIST generic-icon name (application-x-executable | audio-x-generic | folder | font-x-generic | image-x-generic | package-x-generic | text-html | text-x-generic | text-x-generic-template | text-x-script | video-x-generic | x-office-address-book | x-office-calendar | x-office-document | x-office-presentation | x-office-spreadsheet) #REQUIRED>
++<!ELEMENT glob EMPTY>
++<!ATTLIST glob pattern CDATA #REQUIRED>
++<!ATTLIST glob weight CDATA "50">
++<!ATTLIST glob case-sensitive CDATA #IMPLIED>
++<!ELEMENT magic (match)+>
++<!ATTLIST magic priority CDATA "50">
++<!ELEMENT match (match)*>
++<!ATTLIST match offset CDATA #REQUIRED>
++<!ATTLIST match type (string | big16 | big32 | little16 | little32 | host16 | host32 | byte) #REQUIRED>
++<!ATTLIST match value CDATA #REQUIRED>
++<!ATTLIST match mask CDATA #IMPLIED>
++<!ELEMENT treemagic (treematch)+>
++<!ATTLIST treemagic priority CDATA "50">
++<!ELEMENT treematch (treematch)*>
++<!ATTLIST treematch path CDATA #REQUIRED>
++<!ATTLIST treematch type (file | directory | link) #IMPLIED>
++<!ATTLIST treematch match-case (true | false) #IMPLIED>
++<!ATTLIST treematch executable (true | false) #IMPLIED>
++<!ATTLIST treematch non-empty (true | false) #IMPLIED>
++<!ATTLIST treematch mimetype CDATA #IMPLIED>
++<!ELEMENT root-XML EMPTY>
++<!ATTLIST root-XML namespaceURI CDATA #REQUIRED>
++<!ATTLIST root-XML localName CDATA #REQUIRED>
++<!ELEMENT alias EMPTY>
++<!ATTLIST alias type CDATA #REQUIRED>
++<!ELEMENT sub-class-of EMPTY>
++<!ATTLIST sub-class-of type CDATA #REQUIRED>
++]>
++<!--
++The freedesktop.org shared MIME database (this file) was created by merging
++several existing MIME databases (all released under the GPL).
+
+- <!ELEMENT treematch (treematch)*>
+- <!ATTLIST treematch path CDATA #REQUIRED>
+- <!ATTLIST treematch type (file|directory|link) #IMPLIED>
+- <!ATTLIST treematch match-case (true|false) #IMPLIED>
+- <!ATTLIST treematch executable (true|false) #IMPLIED>
+- <!ATTLIST treematch non-empty (true|false) #IMPLIED>
+- <!ATTLIST treematch mimetype CDATA #IMPLIED>
++It comes with ABSOLUTELY NO WARRANTY, to the extent permitted by law. You may
++redistribute copies of update-mime-database under the terms of the GNU General
++Public License. For more information about these matters, see the file named
++COPYING.
+
+- <!ELEMENT root-XML EMPTY>
+- <!ATTLIST root-XML namespaceURI CDATA #REQUIRED>
+- <!ATTLIST root-XML localName CDATA #REQUIRED>
++The latest version is available from:
+
+- <!ELEMENT alias EMPTY>
+- <!ATTLIST alias type CDATA #REQUIRED>
++ http://www.freedesktop.org/wiki/Software/shared-mime-info/
+
+- <!ELEMENT sub-class-of EMPTY>
+- <!ATTLIST sub-class-of type CDATA #REQUIRED>
+-]>
++To extend this database, users and applications should create additional
++XML files in the 'packages' directory and run the update-mime-database
++command to generate the output files.
++-->
+ <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
+ <mime-type type="application/x-atari-2600-rom">
+- <comment>Atari 2600</comment>
+- <comment xml:lang="ast">Atari 2600</comment>
+- <comment xml:lang="ca">Atari 2600</comment>
+- <comment xml:lang="cs">Atari 2600</comment>
+- <comment xml:lang="da">Atari 2600</comment>
+- <comment xml:lang="de">Atari 2600</comment>
+- <comment xml:lang="en_GB">Atari 2600</comment>
+- <comment xml:lang="es">Atari 2600</comment>
+- <comment xml:lang="eu">Atari 2600</comment>
+- <comment xml:lang="fi">Atari 2600</comment>
+- <comment xml:lang="fr">Atari 2600</comment>
+- <comment xml:lang="ga">Atari 2600</comment>
+- <comment xml:lang="he">אטארי 2600</comment>
+- <comment xml:lang="hr">Atari 2600</comment>
+- <comment xml:lang="hu">Atari 2600</comment>
+- <comment xml:lang="id">Atari 2600</comment>
+- <comment xml:lang="it">Atari 2600</comment>
+- <comment xml:lang="kk">Atari 2600</comment>
+- <comment xml:lang="ko">Atari 2600</comment>
+- <comment xml:lang="oc">Atari 2600</comment>
+- <comment xml:lang="pl">Atari 2600</comment>
+- <comment xml:lang="pt_BR">Atari 2600</comment>
+- <comment xml:lang="ru">Atari 2600</comment>
+- <comment xml:lang="sk">Atari 2600</comment>
+- <comment xml:lang="sr">Атари 2600</comment>
+- <comment xml:lang="sv">Atari 2600</comment>
+- <comment xml:lang="tr">Atari 2600</comment>
+- <comment xml:lang="uk">Atari 2600</comment>
+- <comment xml:lang="zh_CN">雅达利 2600</comment>
+- <comment xml:lang="zh_TW">Atari 2600</comment>
++ <comment>Atari 2600 ROM</comment>
++ <comment xml:lang="bg">ROM — Atari 2600</comment>
++ <comment xml:lang="ca">ROM d'Atari 2600</comment>
++ <comment xml:lang="da">Atari 2600-ROM</comment>
++ <comment xml:lang="de">Atari 2600 ROM</comment>
++ <comment xml:lang="en-GB">Atari 2600 ROM</comment>
++ <comment xml:lang="es">ROM de Atari 2600</comment>
++ <comment xml:lang="eu">Atari 2600 ROMa</comment>
++ <comment xml:lang="fi">Atari 2600 ROM</comment>
++ <comment xml:lang="fr">ROM Atari 2600</comment>
++ <comment xml:lang="fur">ROM Atari 2600</comment>
++ <comment xml:lang="hr">Atari 2600 ROM</comment>
++ <comment xml:lang="hu">Atari 2600 ROM</comment>
++ <comment xml:lang="id">Atari 2600 ROM</comment>
++ <comment xml:lang="it">ROM Atari 2600</comment>
++ <comment xml:lang="kk">Atari 2600 ROM</comment>
++ <comment xml:lang="ko">아타리 2600 롬</comment>
++ <comment xml:lang="pl">Plik ROM konsoli Atari 2600</comment>
++ <comment xml:lang="pt">ROM Atari 2600</comment>
++ <comment xml:lang="pt-BR">ROM do Atari 2600</comment>
++ <comment xml:lang="sl">Atari 2600 ROM</comment>
++ <comment xml:lang="sv">Atari 2600-rom</comment>
++ <comment xml:lang="tr">Atari 2600 ROM</comment>
++ <comment xml:lang="uk">Atari 2600 ROM</comment>
++ <comment xml:lang="zh-CN">雅达利 2600 ROM</comment>
++ <comment xml:lang="zh-TW">雅達利 2600 ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.a26"/>
+ </mime-type>
+ <mime-type type="application/x-atari-7800-rom">
+- <comment>Atari 7800</comment>
+- <comment xml:lang="ast">Atari 7800</comment>
+- <comment xml:lang="ca">Atari 7800</comment>
+- <comment xml:lang="cs">Atari 7800</comment>
+- <comment xml:lang="da">Atari 7800</comment>
+- <comment xml:lang="de">Atari 7800</comment>
+- <comment xml:lang="en_GB">Atari 7800</comment>
+- <comment xml:lang="es">Atari 7800</comment>
+- <comment xml:lang="eu">Atari 7800</comment>
+- <comment xml:lang="fi">Atari 7800</comment>
+- <comment xml:lang="fr">Atari 7800</comment>
+- <comment xml:lang="ga">Atari 7800</comment>
+- <comment xml:lang="he">אטארי 7800</comment>
+- <comment xml:lang="hr">Atari 7800</comment>
+- <comment xml:lang="hu">Atari 7800</comment>
+- <comment xml:lang="id">Atari 7800</comment>
+- <comment xml:lang="it">Atari 7800</comment>
+- <comment xml:lang="kk">Atari 7800</comment>
+- <comment xml:lang="ko">Atari 7800</comment>
+- <comment xml:lang="oc">Atari 7800</comment>
+- <comment xml:lang="pl">Atari 7800</comment>
+- <comment xml:lang="pt_BR">Atari 7800</comment>
+- <comment xml:lang="ru">Atari 7800</comment>
+- <comment xml:lang="sk">Atari 7800</comment>
+- <comment xml:lang="sr">Атари 7800</comment>
+- <comment xml:lang="sv">Atari 7800</comment>
+- <comment xml:lang="tr">Atari 7800</comment>
+- <comment xml:lang="uk">Atari 7800</comment>
+- <comment xml:lang="zh_CN">雅达利 7800</comment>
+- <comment xml:lang="zh_TW">Atari 7800</comment>
++ <comment>Atari 7800 ROM</comment>
++ <comment xml:lang="bg">ROM — Atari 7800</comment>
++ <comment xml:lang="ca">ROM d'Atari 7800</comment>
++ <comment xml:lang="da">Atari 7800-ROM</comment>
++ <comment xml:lang="de">Atari 7800 ROM</comment>
++ <comment xml:lang="en-GB">Atari 7800 ROM</comment>
++ <comment xml:lang="es">ROM de Atari 7800</comment>
++ <comment xml:lang="eu">Atari 7800 ROMa</comment>
++ <comment xml:lang="fi">Atari 7800 ROM</comment>
++ <comment xml:lang="fr">ROM Atari 7800</comment>
++ <comment xml:lang="fur">ROM Atari 7800</comment>
++ <comment xml:lang="hr">Atari 7800 ROM</comment>
++ <comment xml:lang="hu">Atari 7800 ROM</comment>
++ <comment xml:lang="id">Atari 7800 ROM</comment>
++ <comment xml:lang="it">ROM Atari 7800</comment>
++ <comment xml:lang="kk">Atari 7800 ROM</comment>
++ <comment xml:lang="ko">아타리 7800 롬</comment>
++ <comment xml:lang="pl">Plik ROM konsoli Atari 7800</comment>
++ <comment xml:lang="pt">ROM Atari 7800</comment>
++ <comment xml:lang="pt-BR">ROM do Atari 7800</comment>
++ <comment xml:lang="sl">Atari 7800 ROM</comment>
++ <comment xml:lang="sv">Atari 7800-rom</comment>
++ <comment xml:lang="tr">Atari 7800 ROM</comment>
++ <comment xml:lang="uk">Atari 7800 ROM</comment>
++ <comment xml:lang="zh-CN">雅达利 7800 ROM</comment>
++ <comment xml:lang="zh-TW">雅達利 7800 ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.a78"/>
+ <magic>
+- <match value="ATARI7800" type="string" offset="1"/>
++ <match type="string" value="ATARI7800" offset="1"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-atari-lynx-rom">
+- <comment>Atari Lynx</comment>
+- <comment xml:lang="ast">Atari Lynx</comment>
+- <comment xml:lang="ca">Atari Lynx</comment>
+- <comment xml:lang="cs">Atari Lynx</comment>
+- <comment xml:lang="de">Atari Lynx</comment>
+- <comment xml:lang="en_GB">Atari Lynx</comment>
+- <comment xml:lang="es">Atari Lynx</comment>
+- <comment xml:lang="fi">Atari Lynx</comment>
+- <comment xml:lang="hr">Atari Lynx</comment>
+- <comment xml:lang="hu">Atari Lynx</comment>
+- <comment xml:lang="id">Atari Lynx</comment>
+- <comment xml:lang="it">Atari Lynx</comment>
+- <comment xml:lang="kk">Atari Lynx</comment>
+- <comment xml:lang="ko">Atari Lynx</comment>
+- <comment xml:lang="pl">Atari Lynx</comment>
+- <comment xml:lang="pt_BR">Atari Lynx</comment>
+- <comment xml:lang="ru">Atari Lynx</comment>
+- <comment xml:lang="sk">Atari Lynx</comment>
+- <comment xml:lang="sv">Atari Lynx</comment>
+- <comment xml:lang="uk">Atari Lynx</comment>
+- <comment xml:lang="zh_CN">雅达利 Lynx</comment>
+- <comment xml:lang="zh_TW">Atari Lynx</comment>
++ <comment>Atari Lynx ROM</comment>
++ <comment xml:lang="bg">ROM — Atari Lynx</comment>
++ <comment xml:lang="ca">ROM d'Atari Lynx</comment>
++ <comment xml:lang="da">Atari Lynx-ROM</comment>
++ <comment xml:lang="de">Atari Lynx ROM</comment>
++ <comment xml:lang="en-GB">Atari Lynx ROM</comment>
++ <comment xml:lang="es">ROM de Atari Lynx</comment>
++ <comment xml:lang="eu">Atari Lynx ROMa</comment>
++ <comment xml:lang="fi">Atari Lynx ROM</comment>
++ <comment xml:lang="fr">ROM Atari Lynx</comment>
++ <comment xml:lang="fur">ROM Atari Lynx</comment>
++ <comment xml:lang="hr">Atari Lynx ROM</comment>
++ <comment xml:lang="hu">Atari Lynx ROM</comment>
++ <comment xml:lang="id">Atari Lynx ROM</comment>
++ <comment xml:lang="it">ROM Atari Lynx</comment>
++ <comment xml:lang="kk">Atari Lynx ROM</comment>
++ <comment xml:lang="ko">아타리 링스 롬</comment>
++ <comment xml:lang="pl">Plik ROM konsoli Atari Lynx</comment>
++ <comment xml:lang="pt">ROM Atari Lynx</comment>
++ <comment xml:lang="pt-BR">ROM do Atari Lynx</comment>
++ <comment xml:lang="sl">Atari Lynx ROM</comment>
++ <comment xml:lang="sv">Atari Lynx-rom</comment>
++ <comment xml:lang="tr">Atari Lynx ROM</comment>
++ <comment xml:lang="uk">Atari Lynx ROM</comment>
++ <comment xml:lang="zh-CN">雅达利 Lynx ROM</comment>
++ <comment xml:lang="zh-TW">雅達利 Lynx ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.lnx"/>
+ <magic>
+- <match value="LYNX" type="string" offset="0"/>
++ <match type="string" value="LYNX" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/andrew-inset">
+ <comment>ATK inset</comment>
+ <comment xml:lang="ar">شكل ATK</comment>
+- <comment xml:lang="be@latin">Ustaŭka ATK</comment>
+- <comment xml:lang="bg">Сбор — ATK</comment>
++ <comment xml:lang="be-Latn">Ustaŭka ATK</comment>
++ <comment xml:lang="bg">Притурка — ATK</comment>
+ <comment xml:lang="ca">ATK inset</comment>
+ <comment xml:lang="cs">vložka ATK</comment>
+ <comment xml:lang="da">ATK-indsættelse</comment>
+ <comment xml:lang="de">ATK-Inset</comment>
+ <comment xml:lang="el">Ένθετο ATK</comment>
+- <comment xml:lang="en_GB">ATK inset</comment>
++ <comment xml:lang="en-GB">ATK inset</comment>
+ <comment xml:lang="es">inserción ATK</comment>
+ <comment xml:lang="eu">ATK sartzapena</comment>
+ <comment xml:lang="fi">ATK-osio</comment>
+ <comment xml:lang="fo">ATK innskot</comment>
+ <comment xml:lang="fr">encart ATK</comment>
++ <comment xml:lang="fur">inset ATK</comment>
+ <comment xml:lang="ga">intlis ATK</comment>
+ <comment xml:lang="gl">conxunto ATK</comment>
+ <comment xml:lang="he">תוספת ATK</comment>
+@@ -197,7 +191,7 @@
+ <comment xml:lang="oc">encart ATK</comment>
+ <comment xml:lang="pl">Wstawka ATK</comment>
+ <comment xml:lang="pt">Suplemento ATK</comment>
+- <comment xml:lang="pt_BR">Conjunto de entrada do ATK</comment>
++ <comment xml:lang="pt-BR">Conjunto de entrada do ATK</comment>
+ <comment xml:lang="ro">Inset ATK</comment>
+ <comment xml:lang="ru">Вкладка ATK</comment>
+ <comment xml:lang="sk">Vložka ATK</comment>
+@@ -208,8 +202,8 @@
+ <comment xml:lang="tr">ATK iç metni</comment>
+ <comment xml:lang="uk">вкладка ATK</comment>
+ <comment xml:lang="vi">Bộ dát ATK</comment>
+- <comment xml:lang="zh_CN">ATK 嵌入对象</comment>
+- <comment xml:lang="zh_TW">ATK 內嵌</comment>
++ <comment xml:lang="zh-CN">ATK 嵌入对象</comment>
++ <comment xml:lang="zh-TW">ATK 內嵌</comment>
+ <acronym>ATK</acronym>
+ <expanded-acronym>Andrew Toolkit</expanded-acronym>
+ <generic-icon name="x-office-document"/>
+@@ -217,21 +211,23 @@
+ </mime-type>
+ <mime-type type="application/epub+zip">
+ <comment>electronic book document</comment>
++ <comment xml:lang="af">elektronieseboekdokument</comment>
+ <comment xml:lang="ar">مستند كتاب إلكتروني</comment>
+ <comment xml:lang="ast">documentu de llibru electrónicu</comment>
+- <comment xml:lang="be@latin">elektronnaja kniha</comment>
++ <comment xml:lang="be-Latn">elektronnaja kniha</comment>
+ <comment xml:lang="bg">Документ — електронна книга</comment>
+ <comment xml:lang="ca">document de llibre electrònic</comment>
+ <comment xml:lang="cs">dokument elektronické knihy</comment>
+ <comment xml:lang="da">elektronisk bogdokument</comment>
+ <comment xml:lang="de">Elektronisches Buch</comment>
+ <comment xml:lang="el">Έγγραφο ηλεκτρονικού βιβλίου</comment>
+- <comment xml:lang="en_GB">electronic book document</comment>
++ <comment xml:lang="en-GB">electronic book document</comment>
+ <comment xml:lang="es">documento de libro electrónico</comment>
+ <comment xml:lang="eu">liburu elektronikoaren dokumentua</comment>
+ <comment xml:lang="fi">elektroninen kirja</comment>
+ <comment xml:lang="fo">elektroniskbóka skjal</comment>
+ <comment xml:lang="fr">document livre électronique</comment>
++ <comment xml:lang="fur">document libri eletronic</comment>
+ <comment xml:lang="ga">leabhar leictreonach</comment>
+ <comment xml:lang="gl">documento de libro electrónico</comment>
+ <comment xml:lang="he">מסמך מסוג ספר אלקטרוני</comment>
+@@ -250,7 +246,7 @@
+ <comment xml:lang="oc">document libre electronic</comment>
+ <comment xml:lang="pl">Dokument książki elektronicznej</comment>
+ <comment xml:lang="pt">documento de livro eletrónico</comment>
+- <comment xml:lang="pt_BR">Documento de livro eletrônico</comment>
++ <comment xml:lang="pt-BR">Documento de livro eletrônico</comment>
+ <comment xml:lang="ro">document carte electronică</comment>
+ <comment xml:lang="ru">Электронная книга</comment>
+ <comment xml:lang="sk">Dokument elektronickej knihy</comment>
+@@ -261,45 +257,77 @@
+ <comment xml:lang="tr">elektronik kitap belgesi</comment>
+ <comment xml:lang="uk">документ електронної книги</comment>
+ <comment xml:lang="vi">tài liệu cuốn sách điện tử</comment>
+- <comment xml:lang="zh_CN">电子书文档</comment>
+- <comment xml:lang="zh_TW">電子書文件</comment>
++ <comment xml:lang="zh-CN">电子书文档</comment>
++ <comment xml:lang="zh-TW">電子書文件</comment>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/epub+zip" type="string" offset="38"/>
+- <match value="application/epub+zip" type="string" offset="43"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/epub+zip" offset="38"/>
++ <match type="string" value="application/epub+zip" offset="43"/>
+ </match>
+ </match>
+ </magic>
+ <glob pattern="*.epub"/>
+ </mime-type>
++ <mime-type type="application/vnd.amazon.mobi8-ebook">
++ <comment>Kindle book document</comment>
++ <comment xml:lang="ca">document de llibre Kindle</comment>
++ <comment xml:lang="da">Kindle-bogdokument</comment>
++ <comment xml:lang="de">Kindle-Buch-Dokument</comment>
++ <comment xml:lang="en-GB">Kindle book document</comment>
++ <comment xml:lang="es">documento de libro de Kindle</comment>
++ <comment xml:lang="fi">Kindle book -asiakirja</comment>
++ <comment xml:lang="fr">document livre Kindle</comment>
++ <comment xml:lang="hr">Dokument Kindle knjige</comment>
++ <comment xml:lang="hu">Kindle könyvdokumentum</comment>
++ <comment xml:lang="id">Dokumen buku Kindle</comment>
++ <comment xml:lang="it">Documento libro Kindle</comment>
++ <comment xml:lang="kk">Kindle кітап құжаты</comment>
++ <comment xml:lang="ko">Kindle 책 문서</comment>
++ <comment xml:lang="lt">Kindle knygos dokumentas</comment>
++ <comment xml:lang="pl">Dokument książki Kindle</comment>
++ <comment xml:lang="pt">documento de livro eletrónico do Kindle</comment>
++ <comment xml:lang="pt-BR">Documento livro do Kindle</comment>
++ <comment xml:lang="ru">Электронная книга Kindle</comment>
++ <comment xml:lang="sv">Kindle-bokdokument</comment>
++ <comment xml:lang="tr">Kindle kitap belgesi</comment>
++ <comment xml:lang="uk">документ книги Kindle</comment>
++ <comment xml:lang="zh-CN">Kindle 电子书文档</comment>
++ <comment xml:lang="zh-TW">Kindle 書文件</comment>
++ <sub-class-of type="application/x-mobipocket-ebook"/>
++ <glob pattern="*.azw3"/>
++ <glob pattern="*.kfx"/>
++ <alias type="application/x-mobi8-ebook"/>
++ </mime-type>
+ <mime-type type="application/illustrator">
+ <comment>Adobe Illustrator document</comment>
++ <comment xml:lang="af">Adobe Illustrator-dokument</comment>
+ <comment xml:lang="ar">مستند أدوبي المصور</comment>
+ <comment xml:lang="ast">Documentu d'Adobe Illustrator</comment>
+- <comment xml:lang="be@latin">Dakument Adobe Illustrator</comment>
++ <comment xml:lang="be-Latn">Dakument Adobe Illustrator</comment>
+ <comment xml:lang="bg">Документ — Adobe Illustrator</comment>
+ <comment xml:lang="ca">document d'Adobe Illustrator</comment>
+ <comment xml:lang="cs">dokument Adobe Illustrator</comment>
+ <comment xml:lang="da">Adobe Illustrator-dokument</comment>
+ <comment xml:lang="de">Adobe-Illustrator-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Adobe Illustrator</comment>
+- <comment xml:lang="en_GB">Adobe Illustrator document</comment>
++ <comment xml:lang="en-GB">Adobe Illustrator document</comment>
+ <comment xml:lang="eo">dokumento de Adobe Illustrator</comment>
+ <comment xml:lang="es">documento de Adobe Illustrator</comment>
+ <comment xml:lang="eu">Adobe Illustrator dokumentua</comment>
+ <comment xml:lang="fi">Adobe Illustrator -asiakirja</comment>
+ <comment xml:lang="fo">Adobe Illustrator skjal</comment>
+ <comment xml:lang="fr">document Adobe Illustrator</comment>
++ <comment xml:lang="fur">document Adobe Illustrator</comment>
+ <comment xml:lang="ga">cáipéis Adobe Illustrator</comment>
+ <comment xml:lang="gl">documento de Adobe Ilustrator</comment>
+ <comment xml:lang="he">מסמך Adobe Ill</comment>
+ <comment xml:lang="hr">Adobe Illustrator dokument</comment>
+ <comment xml:lang="hu">Adobe Illustrator-dokumentum</comment>
+ <comment xml:lang="ia">Documento Adobe Illustrator</comment>
+- <comment xml:lang="id">dokumen Adobe Illustrator</comment>
++ <comment xml:lang="id">Dokumen Adobe Illustrator</comment>
+ <comment xml:lang="it">Documento Adobe Illustrator</comment>
+ <comment xml:lang="ja">Adobe Illustrator ドキュメント</comment>
+ <comment xml:lang="ka">Adobe Illustrator-ის დოკუმენტი</comment>
+@@ -314,7 +342,7 @@
+ <comment xml:lang="oc">document Adobe Illustrator</comment>
+ <comment xml:lang="pl">Dokument Adobe Illustrator</comment>
+ <comment xml:lang="pt">documento Adobe Illustrator</comment>
+- <comment xml:lang="pt_BR">Documento do Adobe Illustrator</comment>
++ <comment xml:lang="pt-BR">Documento do Adobe Illustrator</comment>
+ <comment xml:lang="ro">Document Adobe Illustrator</comment>
+ <comment xml:lang="ru">Документ Adobe Illustrator</comment>
+ <comment xml:lang="sk">Dokument Adobe Illustrator</comment>
+@@ -325,18 +353,19 @@
+ <comment xml:lang="tr">Adobe Illustrator belgesi</comment>
+ <comment xml:lang="uk">документ Adobe Illustrator</comment>
+ <comment xml:lang="vi">Tài liệu Adobe Illustrator</comment>
+- <comment xml:lang="zh_CN">Adobe Illustrator 文档</comment>
+- <comment xml:lang="zh_TW">Adobe Illustrator 文件</comment>
++ <comment xml:lang="zh-CN">Adobe Illustrator 文档</comment>
++ <comment xml:lang="zh-TW">Adobe Illustrator 文件</comment>
+ <generic-icon name="image-x-generic"/>
+ <glob pattern="*.ai"/>
+ <alias type="application/vnd.adobe.illustrator"/>
+ </mime-type>
+ <mime-type type="application/mac-binhex40">
+ <comment>Macintosh BinHex-encoded file</comment>
++ <comment xml:lang="af">Macintosh BinHex-geënkodeerde lêer</comment>
+ <comment xml:lang="ar">ملف Macintosh BinHex مشفر</comment>
+ <comment xml:lang="ast">Ficheru codificáu en BinHex de Machintosh</comment>
+ <comment xml:lang="az">Macintosh BinHex-kodlanmış fayl</comment>
+- <comment xml:lang="be@latin">Fajł Macintosh, BinHex-zakadavany</comment>
++ <comment xml:lang="be-Latn">Fajł Macintosh, BinHex-zakadavany</comment>
+ <comment xml:lang="bg">Файл — кодиран във формат BinHex за Macintosh</comment>
+ <comment xml:lang="ca">fitxer amb codificació BinHex de Macintosh</comment>
+ <comment xml:lang="cs">soubor kódovaný pomocí Macintosh BinHex</comment>
+@@ -344,20 +373,21 @@
+ <comment xml:lang="da">Macintosh BinHex-kodet fil</comment>
+ <comment xml:lang="de">Macintosh-Datei (BinHex-kodiert)</comment>
+ <comment xml:lang="el">Αρχείο Macintosh κωδικοποίησης BinHex</comment>
+- <comment xml:lang="en_GB">Macintosh BinHex-encoded file</comment>
++ <comment xml:lang="en-GB">Macintosh BinHex-encoded file</comment>
+ <comment xml:lang="eo">dosiero kodigita laŭ Macintosh BinHex</comment>
+ <comment xml:lang="es">archivo Macintosh codificado con BinHex</comment>
+ <comment xml:lang="eu">Macintosh BinHex-ekin kodetutako fitxategia</comment>
+ <comment xml:lang="fi">Macintosh BinHex -koodattu tiedosto</comment>
+ <comment xml:lang="fo">Macintosh BinHex-bronglað fíla</comment>
+ <comment xml:lang="fr">fichier codé Macintosh BinHex</comment>
++ <comment xml:lang="fur">file di Macintosh codificât BinHex</comment>
+ <comment xml:lang="ga">comhad ionchódaithe le Macintosh BinHex</comment>
+ <comment xml:lang="gl">ficheiro de Macintosh codificado con BinHex</comment>
+ <comment xml:lang="he">קובץ בקידוד Macintosh BinHex</comment>
+ <comment xml:lang="hr">Macintosh BinHex-kôdirana datoteka</comment>
+ <comment xml:lang="hu">Macintosh BinHex kódolású fájl</comment>
+ <comment xml:lang="ia">File codificate in BinHex de Macintosh</comment>
+- <comment xml:lang="id">berkas tersandi Macintosh BinHex</comment>
++ <comment xml:lang="id">Berkas tersandi Macintosh BinHex</comment>
+ <comment xml:lang="it">File Macintosh codificato BinHex</comment>
+ <comment xml:lang="ja">Macintosh BinHex エンコードファイル</comment>
+ <comment xml:lang="kk">Macintosh BinHex кодталған файлы</comment>
+@@ -371,7 +401,7 @@
+ <comment xml:lang="oc">fichièr encodat Macintosh BinHex</comment>
+ <comment xml:lang="pl">Zakodowany w BinHex plik Macintosh</comment>
+ <comment xml:lang="pt">ficheiro codificado em BinHex de Macintosh</comment>
+- <comment xml:lang="pt_BR">Arquivo do Macintosh codificado com BinHex</comment>
++ <comment xml:lang="pt-BR">Arquivo do Macintosh codificado com BinHex</comment>
+ <comment xml:lang="ro">Fișier codat Macintosh BinHex</comment>
+ <comment xml:lang="ru">Файл (закодированный Macintosh BinHex)</comment>
+ <comment xml:lang="sk">Súbor kódovaný pomocou Macintosh BinHex</comment>
+@@ -382,61 +412,40 @@
+ <comment xml:lang="tr">Macintosh BinHex-şifreli dosya</comment>
+ <comment xml:lang="uk">файл закодований Macintosh BinHex</comment>
+ <comment xml:lang="vi">Tập tin đã mã hoá BinHex của Macintosh</comment>
+- <comment xml:lang="zh_CN">Macintosh BinHex 编码的文件</comment>
+- <comment xml:lang="zh_TW">Macintosh BinHex 編碼檔</comment>
++ <comment xml:lang="zh-CN">Macintosh BinHex 编码的文件</comment>
++ <comment xml:lang="zh-TW">Macintosh BinHex 編碼檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="50">
+- <match value="must be converted with BinHex" type="string" offset="11"/>
++ <match type="string" value="must be converted with BinHex" offset="11"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/mathematica">
+- <comment>Mathematica Notebook</comment>
+- <comment xml:lang="ar">مذكرة رياضيات</comment>
+- <comment xml:lang="be@latin">Natatnik Mathematica</comment>
+- <comment xml:lang="bg">Тетрадка — Mathematica</comment>
+- <comment xml:lang="ca">llibreta de notes de Mathematica</comment>
+- <comment xml:lang="cs">sešit Mathematica</comment>
+- <comment xml:lang="da">Mathematica Notebook</comment>
+- <comment xml:lang="de">Mathematica-Dokument</comment>
+- <comment xml:lang="el">Σημειωματάριο Mathematica</comment>
+- <comment xml:lang="en_GB">Mathematica Notebook</comment>
+- <comment xml:lang="es">libreta de Mathematica</comment>
+- <comment xml:lang="eu">Mathematica Notebook</comment>
+- <comment xml:lang="fi">Mathematica-muistilehtiö</comment>
+- <comment xml:lang="fo">Mathematica skriviblokkur</comment>
+- <comment xml:lang="fr">carnet de notes Mathematica</comment>
+- <comment xml:lang="ga">leabhar nótaí Mathematica</comment>
+- <comment xml:lang="gl">notebook de Mathematica</comment>
+- <comment xml:lang="he">מחברת מתמטיקה</comment>
+- <comment xml:lang="hr">Matematička bilježnica</comment>
+- <comment xml:lang="hu">Mathematica notesz</comment>
+- <comment xml:lang="ia">Carnet de notas Mathematica</comment>
+- <comment xml:lang="id">Mathematica Notebook</comment>
+- <comment xml:lang="it">Notebook Mathematica</comment>
+- <comment xml:lang="ja">Mathematica ノートブック</comment>
+- <comment xml:lang="kk">Mathematica Notebook</comment>
+- <comment xml:lang="ko">Mathematica 노트북</comment>
+- <comment xml:lang="lt">Mathematica užrašinė</comment>
+- <comment xml:lang="lv">Mathematica bloknots</comment>
+- <comment xml:lang="nb">Mathematica notisblokk</comment>
+- <comment xml:lang="nl">Mathematica-notitieboek</comment>
+- <comment xml:lang="nn">Mathematica-notatbok</comment>
+- <comment xml:lang="oc">quasernet de nòtas Mathematica</comment>
+- <comment xml:lang="pl">Notatnik Mathematica</comment>
+- <comment xml:lang="pt">Bloco notas Mathematica</comment>
+- <comment xml:lang="pt_BR">Caderno do Mathematica</comment>
+- <comment xml:lang="ro">Carnețel Mathematica</comment>
+- <comment xml:lang="ru">Mathematica Notebook</comment>
+- <comment xml:lang="sk">Zošit programu Mathematica</comment>
+- <comment xml:lang="sl">Datoteka dokumenta Mathematica</comment>
+- <comment xml:lang="sq">Notebook matematike</comment>
+- <comment xml:lang="sr">бележница Математике</comment>
+- <comment xml:lang="sv">Mathematica Notebook-dokument</comment>
+- <comment xml:lang="tr">Mathematica Defteri</comment>
+- <comment xml:lang="uk">математичний записник</comment>
+- <comment xml:lang="vi">Cuốn vở Mathematica</comment>
+- <comment xml:lang="zh_CN">Mathematica 笔记本</comment>
+- <comment xml:lang="zh_TW">Mathematica Notebook</comment>
++ <comment>Mathematica Notebook file</comment>
++ <comment xml:lang="bg">Скицник — Mathematica</comment>
++ <comment xml:lang="ca">llibreta de Mathematica Notebook</comment>
++ <comment xml:lang="da">Mathematica Notebook-fil</comment>
++ <comment xml:lang="de">Mathematica-Notebook-Datei</comment>
++ <comment xml:lang="en-GB">Mathematica Notebook file</comment>
++ <comment xml:lang="es">archivo de Mathematica Notebook</comment>
++ <comment xml:lang="eu">Mathematica Notebook fitxategia</comment>
++ <comment xml:lang="fi">Mathematica Notebook -tiedosto</comment>
++ <comment xml:lang="fr">fichier carnet Mathematica</comment>
++ <comment xml:lang="hr">Mathematica Notebook datoteka</comment>
++ <comment xml:lang="hu">Mathematica munkafüzetfájl</comment>
++ <comment xml:lang="id">Berkas Mathematica Notebook</comment>
++ <comment xml:lang="it">File Mathematica Notebook</comment>
++ <comment xml:lang="kk">Mathematica блокнот файлы</comment>
++ <comment xml:lang="ko">매쓰매티카 기록장 파일</comment>
++ <comment xml:lang="pl">Plik notatnika Mathematica</comment>
++ <comment xml:lang="pt">ficheiro de Mathematica Notebook do Wolfram</comment>
++ <comment xml:lang="pt-BR">Arquivo Notebook do Mathematica</comment>
++ <comment xml:lang="ru">Файл Mathematica Notebook</comment>
++ <comment xml:lang="sl">Datoteka Mathematica Notebook</comment>
++ <comment xml:lang="sv">Mathematica-anteckningsboksfil</comment>
++ <comment xml:lang="tr">Mathematica Notebook dosyası</comment>
++ <comment xml:lang="uk">файл нотатника Mathematica</comment>
++ <comment xml:lang="zh-CN">Mathematica 笔记本文件</comment>
++ <comment xml:lang="zh-TW">Mathematica 筆記本檔案</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.nb"/>
+@@ -449,10 +458,11 @@
+ </mime-type>
+ <mime-type type="application/mathml+xml">
+ <comment>MathML document</comment>
++ <comment xml:lang="af">MathML-dokument</comment>
+ <comment xml:lang="ar">مستند MathML</comment>
+ <comment xml:lang="ast">Documentu MathML</comment>
+ <comment xml:lang="az">MathML sənədi</comment>
+- <comment xml:lang="be@latin">Dakument MathML</comment>
++ <comment xml:lang="be-Latn">Dakument MathML</comment>
+ <comment xml:lang="bg">Документ — MathML</comment>
+ <comment xml:lang="ca">document MathML</comment>
+ <comment xml:lang="cs">dokument MathML</comment>
+@@ -460,20 +470,21 @@
+ <comment xml:lang="da">MathML-dokument</comment>
+ <comment xml:lang="de">MathML-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο MathML</comment>
+- <comment xml:lang="en_GB">MathML document</comment>
++ <comment xml:lang="en-GB">MathML document</comment>
+ <comment xml:lang="eo">MathML-dokumento</comment>
+ <comment xml:lang="es">documento MathML</comment>
+ <comment xml:lang="eu">MathML dokumentua</comment>
+ <comment xml:lang="fi">MathML-asiakirja</comment>
+ <comment xml:lang="fo">MathML skjal</comment>
+ <comment xml:lang="fr">document MathML</comment>
++ <comment xml:lang="fur">document MathML</comment>
+ <comment xml:lang="ga">cáipéis MathML</comment>
+ <comment xml:lang="gl">documento de MathML</comment>
+ <comment xml:lang="he">מסמך MathML</comment>
+ <comment xml:lang="hr">MathML dokument</comment>
+ <comment xml:lang="hu">MathML-dokumentum</comment>
+ <comment xml:lang="ia">Documento MathML</comment>
+- <comment xml:lang="id">dokumen MathML</comment>
++ <comment xml:lang="id">Dokumen MathML</comment>
+ <comment xml:lang="it">Documento MathML</comment>
+ <comment xml:lang="ja">MathML ドキュメント</comment>
+ <comment xml:lang="ka">MathML-ის დოკუმენტი</comment>
+@@ -488,7 +499,7 @@
+ <comment xml:lang="oc">document MathML</comment>
+ <comment xml:lang="pl">Dokument MathML</comment>
+ <comment xml:lang="pt">documento MathML</comment>
+- <comment xml:lang="pt_BR">Documento do MathML</comment>
++ <comment xml:lang="pt-BR">Documento do MathML</comment>
+ <comment xml:lang="ro">Document MathML</comment>
+ <comment xml:lang="ru">Документ MathML</comment>
+ <comment xml:lang="sk">Dokument MathML</comment>
+@@ -499,8 +510,8 @@
+ <comment xml:lang="tr">MathML belgesi</comment>
+ <comment xml:lang="uk">документ MathML</comment>
+ <comment xml:lang="vi">Tài liệu MathML</comment>
+- <comment xml:lang="zh_CN">MathML 文档</comment>
+- <comment xml:lang="zh_TW">MathML 文件</comment>
++ <comment xml:lang="zh-CN">MathML 文档</comment>
++ <comment xml:lang="zh-TW">MathML 文件</comment>
+ <acronym>MathML</acronym>
+ <expanded-acronym>Mathematical Markup Language</expanded-acronym>
+ <alias type="text/mathml"/>
+@@ -510,20 +521,22 @@
+ </mime-type>
+ <mime-type type="application/mbox">
+ <comment>mailbox file</comment>
++ <comment xml:lang="af">mailbox-lêer</comment>
+ <comment xml:lang="ar">ملف صندوق البريد</comment>
+- <comment xml:lang="be@latin">fajł paštovaj skryni</comment>
++ <comment xml:lang="be-Latn">fajł paštovaj skryni</comment>
+ <comment xml:lang="bg">Файл — Mailbox</comment>
+ <comment xml:lang="ca">fitxer mailbox</comment>
+ <comment xml:lang="cs">soubor mailbox</comment>
+ <comment xml:lang="da">postkassefil</comment>
+ <comment xml:lang="de">Mailbox-Datei</comment>
+ <comment xml:lang="el">Αρχείο mailbox</comment>
+- <comment xml:lang="en_GB">mailbox file</comment>
++ <comment xml:lang="en-GB">mailbox file</comment>
+ <comment xml:lang="es">archivo de buzón de correo</comment>
+ <comment xml:lang="eu">mailbox fitxategia</comment>
+ <comment xml:lang="fi">mailbox-tiedosto</comment>
+ <comment xml:lang="fo">postkassafíla</comment>
+ <comment xml:lang="fr">fichier boîte aux lettres</comment>
++ <comment xml:lang="fur">file mailbox</comment>
+ <comment xml:lang="ga">comhad bhosca poist</comment>
+ <comment xml:lang="gl">ficheiro de caixa de correo</comment>
+ <comment xml:lang="he">קובץ תיבת-דואר</comment>
+@@ -543,7 +556,7 @@
+ <comment xml:lang="oc">fichièr bóstia de letras</comment>
+ <comment xml:lang="pl">Plik poczty (Mailbox)</comment>
+ <comment xml:lang="pt">ficheiro de caixa de correio</comment>
+- <comment xml:lang="pt_BR">Arquivo de caixa de correio</comment>
++ <comment xml:lang="pt-BR">Arquivo de caixa de correio</comment>
+ <comment xml:lang="ro">fișier căsuță poștală</comment>
+ <comment xml:lang="ru">Файл почтового ящика</comment>
+ <comment xml:lang="sk">Súbor mailbox</comment>
+@@ -551,20 +564,21 @@
+ <comment xml:lang="sq">File mailbox</comment>
+ <comment xml:lang="sr">датотека поштанског сандучета</comment>
+ <comment xml:lang="sv">brevlådefil</comment>
+- <comment xml:lang="tr">posta kutusu dosyası</comment>
++ <comment xml:lang="tr">mailbox dosyası</comment>
+ <comment xml:lang="uk">файл поштової скриньки</comment>
+ <comment xml:lang="vi">tập tin hộp thư</comment>
+- <comment xml:lang="zh_CN">邮箱文件</comment>
+- <comment xml:lang="zh_TW">郵箱檔</comment>
++ <comment xml:lang="zh-CN">邮箱文件</comment>
++ <comment xml:lang="zh-TW">郵箱檔</comment>
+ <generic-icon name="text-x-generic"/>
+ <sub-class-of type="text/plain"/>
+ <magic priority="20">
+- <match value="From " type="string" offset="0"/>
++ <match type="string" value="From " offset="0"/>
+ </magic>
+ <glob pattern="*.mbox"/>
+ </mime-type>
+ <mime-type type="application/metalink+xml">
+ <comment>Metalink file</comment>
++ <comment xml:lang="af">Metalink-lêer</comment>
+ <comment xml:lang="ar">ملف ميتالنك</comment>
+ <comment xml:lang="ast">Ficheru d'enllaz meta</comment>
+ <comment xml:lang="bg">Изтегляне — Metalink</comment>
+@@ -573,20 +587,21 @@
+ <comment xml:lang="da">Metahenvisningsfil</comment>
+ <comment xml:lang="de">Metalink-Datei</comment>
+ <comment xml:lang="el">Αρχείο Metalink</comment>
+- <comment xml:lang="en_GB">Metalink file</comment>
++ <comment xml:lang="en-GB">Metalink file</comment>
+ <comment xml:lang="eo">Metalink-dosiero</comment>
+ <comment xml:lang="es">archivo de Metalink</comment>
+ <comment xml:lang="eu">Metaestekaren fitxategia</comment>
+ <comment xml:lang="fi">Metalink-tiedosto</comment>
+ <comment xml:lang="fo">Metalink fíla</comment>
+ <comment xml:lang="fr">fichier metalink</comment>
++ <comment xml:lang="fur">file Metalink</comment>
+ <comment xml:lang="ga">comhad Metalink</comment>
+ <comment xml:lang="gl">ficheiro Metalink</comment>
+ <comment xml:lang="he">קובץ Metalink</comment>
+ <comment xml:lang="hr">Datoteka meta poveznice</comment>
+ <comment xml:lang="hu">Metalink fájl</comment>
+ <comment xml:lang="ia">File Metalink</comment>
+- <comment xml:lang="id">berkas Metalink</comment>
++ <comment xml:lang="id">Berkas Metalink</comment>
+ <comment xml:lang="it">File Metalink</comment>
+ <comment xml:lang="ja">Metalink ファイル</comment>
+ <comment xml:lang="kk">Metalink файлы</comment>
+@@ -597,7 +612,7 @@
+ <comment xml:lang="oc">fichièr metalink</comment>
+ <comment xml:lang="pl">Plik Metalink</comment>
+ <comment xml:lang="pt">ficheiro Metalink</comment>
+- <comment xml:lang="pt_BR">Arquivo Metalink</comment>
++ <comment xml:lang="pt-BR">Arquivo Metalink</comment>
+ <comment xml:lang="ro">Fișier Metalink</comment>
+ <comment xml:lang="ru">Файл Metalink</comment>
+ <comment xml:lang="sk">Súbor Metalink</comment>
+@@ -606,17 +621,18 @@
+ <comment xml:lang="sv">Metalink-fil</comment>
+ <comment xml:lang="tr">Metalink dosyası</comment>
+ <comment xml:lang="uk">файл метапосилання</comment>
+- <comment xml:lang="zh_CN">Metalink 文件</comment>
+- <comment xml:lang="zh_TW">Metalink 檔案</comment>
++ <comment xml:lang="zh-CN">Metalink 文件</comment>
++ <comment xml:lang="zh-TW">Metalink 檔案</comment>
+ <sub-class-of type="application/xml"/>
+ <magic priority="50">
+- <match value="&lt;metalink version=&quot;3.0&quot;" type="string" offset="0:256"/>
++ <match type="string" value="&lt;metalink version=&quot;3.0&quot;" offset="0:256"/>
+ </magic>
+ <glob pattern="*.metalink"/>
+ <root-XML namespaceURI="http://www.metalinker.org/" localName="metalink"/>
+ </mime-type>
+ <mime-type type="application/metalink4+xml">
+ <comment>Metalink file</comment>
++ <comment xml:lang="af">Metalink-lêer</comment>
+ <comment xml:lang="ar">ملف ميتالنك</comment>
+ <comment xml:lang="ast">Ficheru d'enllaz meta</comment>
+ <comment xml:lang="bg">Изтегляне — Metalink</comment>
+@@ -625,20 +641,21 @@
+ <comment xml:lang="da">Metahenvisningsfil</comment>
+ <comment xml:lang="de">Metalink-Datei</comment>
+ <comment xml:lang="el">Αρχείο Metalink</comment>
+- <comment xml:lang="en_GB">Metalink file</comment>
++ <comment xml:lang="en-GB">Metalink file</comment>
+ <comment xml:lang="eo">Metalink-dosiero</comment>
+ <comment xml:lang="es">archivo de Metalink</comment>
+ <comment xml:lang="eu">Metaestekaren fitxategia</comment>
+ <comment xml:lang="fi">Metalink-tiedosto</comment>
+ <comment xml:lang="fo">Metalink fíla</comment>
+ <comment xml:lang="fr">fichier metalink</comment>
++ <comment xml:lang="fur">file Metalink</comment>
+ <comment xml:lang="ga">comhad Metalink</comment>
+ <comment xml:lang="gl">ficheiro Metalink</comment>
+ <comment xml:lang="he">קובץ Metalink</comment>
+ <comment xml:lang="hr">Datoteka meta poveznice</comment>
+ <comment xml:lang="hu">Metalink fájl</comment>
+ <comment xml:lang="ia">File Metalink</comment>
+- <comment xml:lang="id">berkas Metalink</comment>
++ <comment xml:lang="id">Berkas Metalink</comment>
+ <comment xml:lang="it">File Metalink</comment>
+ <comment xml:lang="ja">Metalink ファイル</comment>
+ <comment xml:lang="kk">Metalink файлы</comment>
+@@ -649,7 +666,7 @@
+ <comment xml:lang="oc">fichièr metalink</comment>
+ <comment xml:lang="pl">Plik Metalink</comment>
+ <comment xml:lang="pt">ficheiro Metalink</comment>
+- <comment xml:lang="pt_BR">Arquivo Metalink</comment>
++ <comment xml:lang="pt-BR">Arquivo Metalink</comment>
+ <comment xml:lang="ro">Fișier Metalink</comment>
+ <comment xml:lang="ru">Файл Metalink</comment>
+ <comment xml:lang="sk">Súbor Metalink</comment>
+@@ -658,33 +675,35 @@
+ <comment xml:lang="sv">Metalink-fil</comment>
+ <comment xml:lang="tr">Metalink dosyası</comment>
+ <comment xml:lang="uk">файл метапосилання</comment>
+- <comment xml:lang="zh_CN">Metalink 文件</comment>
+- <comment xml:lang="zh_TW">Metalink 檔案</comment>
++ <comment xml:lang="zh-CN">Metalink 文件</comment>
++ <comment xml:lang="zh-TW">Metalink 檔案</comment>
+ <sub-class-of type="application/xml"/>
+ <magic priority="50">
+- <match value="&lt;metalink xmlns=&quot;urn" type="string" offset="0:256"/>
++ <match type="string" value="&lt;metalink xmlns=&quot;urn" offset="0:256"/>
+ </magic>
+ <glob pattern="*.meta4"/>
+ <root-XML namespaceURI="urn:ietf:params:xml:ns:metalink" localName="metalink"/>
+ </mime-type>
+ <mime-type type="application/octet-stream">
+ <comment>unknown</comment>
++ <comment xml:lang="af">onbekend</comment>
+ <comment xml:lang="ar">مجهول</comment>
+ <comment xml:lang="ast">desconozse</comment>
+- <comment xml:lang="be@latin">nieviadomy</comment>
++ <comment xml:lang="be-Latn">nieviadomy</comment>
+ <comment xml:lang="bg">Неизвестен тип</comment>
+ <comment xml:lang="ca">desconegut</comment>
+ <comment xml:lang="cs">neznámý</comment>
+ <comment xml:lang="da">ukendt</comment>
+ <comment xml:lang="de">unbekannt</comment>
+ <comment xml:lang="el">Άγνωστο</comment>
+- <comment xml:lang="en_GB">unknown</comment>
++ <comment xml:lang="en-GB">unknown</comment>
+ <comment xml:lang="eo">nekonate</comment>
+ <comment xml:lang="es">desconocido</comment>
+ <comment xml:lang="eu">ezezaguna</comment>
+ <comment xml:lang="fi">tuntematon</comment>
+ <comment xml:lang="fo">ókent</comment>
+ <comment xml:lang="fr">inconnu</comment>
++ <comment xml:lang="fur">no cognossût</comment>
+ <comment xml:lang="ga">anaithnid</comment>
+ <comment xml:lang="gl">descoñecido</comment>
+ <comment xml:lang="he">לא ידוע</comment>
+@@ -706,7 +725,7 @@
+ <comment xml:lang="oc">desconegut</comment>
+ <comment xml:lang="pl">Nieznany typ</comment>
+ <comment xml:lang="pt">desconhecido</comment>
+- <comment xml:lang="pt_BR">Desconhecido</comment>
++ <comment xml:lang="pt-BR">Desconhecido</comment>
+ <comment xml:lang="ro">necunoscut</comment>
+ <comment xml:lang="ru">Неизвестно</comment>
+ <comment xml:lang="sk">Neznámy</comment>
+@@ -717,22 +736,25 @@
+ <comment xml:lang="tr">bilinmeyen</comment>
+ <comment xml:lang="uk">невідомо</comment>
+ <comment xml:lang="vi">không rõ</comment>
+- <comment xml:lang="zh_CN">未知</comment>
+- <comment xml:lang="zh_TW">不明</comment>
++ <comment xml:lang="zh-CN">未知</comment>
++ <comment xml:lang="zh-TW">不明</comment>
+ </mime-type>
+ <mime-type type="application/x-partial-download">
+ <comment>Partially downloaded file</comment>
++ <comment xml:lang="af">Gedeeltelik afgelaaide lêer</comment>
+ <comment xml:lang="ast">Ficheru baxáu parcialmente</comment>
++ <comment xml:lang="bg">Частично изтеглен файл</comment>
+ <comment xml:lang="ca">fitxer baixat parcialment</comment>
+ <comment xml:lang="cs">částečně stažený soubor</comment>
+- <comment xml:lang="da">Delvist hentet fil</comment>
++ <comment xml:lang="da">Delvist downloadet fil</comment>
+ <comment xml:lang="de">Teilweise heruntergeladene Datei</comment>
+ <comment xml:lang="el">Μερικώς ληφθέντο αρχείο</comment>
+- <comment xml:lang="en_GB">Partially downloaded file</comment>
++ <comment xml:lang="en-GB">Partially downloaded file</comment>
+ <comment xml:lang="es">archivo descargado parcialmente</comment>
+ <comment xml:lang="eu">Partzialki deskargatutako fitxategia</comment>
+ <comment xml:lang="fi">Osittain ladattu tiedosto</comment>
+ <comment xml:lang="fr">fichier partiellement téléchargé</comment>
++ <comment xml:lang="fur">file no discjariât dal dut</comment>
+ <comment xml:lang="ga">Comhad leath-íoslódáilte</comment>
+ <comment xml:lang="gl">Ficheiro descargado parcialmente</comment>
+ <comment xml:lang="he">קובץ שהתקבל חלקית</comment>
+@@ -743,10 +765,11 @@
+ <comment xml:lang="it">File parzialmente scaricato</comment>
+ <comment xml:lang="kk">Жартылай жүктелген файл</comment>
+ <comment xml:lang="ko">일부 다운로드한 파일</comment>
++ <comment xml:lang="lt">Dalinai atsiųstas failas</comment>
+ <comment xml:lang="oc">fichièr parcialament telecargat</comment>
+ <comment xml:lang="pl">Częściowo pobrany plik</comment>
+- <comment xml:lang="pt">Ficheiro parcialmente transferido</comment>
+- <comment xml:lang="pt_BR">Arquivo baixado parcialmente</comment>
++ <comment xml:lang="pt">ficheiro descarregado parcialmente</comment>
++ <comment xml:lang="pt-BR">Arquivo baixado parcialmente</comment>
+ <comment xml:lang="ru">Частично загруженный файл</comment>
+ <comment xml:lang="sk">Čiastočne stiahnutý súbor</comment>
+ <comment xml:lang="sl">Delno prenesena datoteka</comment>
+@@ -754,8 +777,8 @@
+ <comment xml:lang="sv">Delvis hämtad fil</comment>
+ <comment xml:lang="tr">Kısmen indirilmiş dosya</comment>
+ <comment xml:lang="uk">частково отриманий файл</comment>
+- <comment xml:lang="zh_CN">部分下载的文件</comment>
+- <comment xml:lang="zh_TW">已部份下載的檔案</comment>
++ <comment xml:lang="zh-CN">部分下载的文件</comment>
++ <comment xml:lang="zh-TW">已部份下載的檔案</comment>
+ <generic-icon name="package-x-generic"/>
+ <glob pattern="*.wkdownload"/>
+ <glob pattern="*.crdownload"/>
+@@ -763,10 +786,11 @@
+ </mime-type>
+ <mime-type type="application/oda">
+ <comment>ODA document</comment>
++ <comment xml:lang="af">ODA-dokument</comment>
+ <comment xml:lang="ar">مستند ODA</comment>
+ <comment xml:lang="ast">Documentu ODA</comment>
+ <comment xml:lang="az">ODA sənədi</comment>
+- <comment xml:lang="be@latin">Dakument ODA</comment>
++ <comment xml:lang="be-Latn">Dakument ODA</comment>
+ <comment xml:lang="bg">Документ — ODA</comment>
+ <comment xml:lang="ca">document ODA</comment>
+ <comment xml:lang="cs">dokument ODA</comment>
+@@ -774,13 +798,14 @@
+ <comment xml:lang="da">ODA-dokument</comment>
+ <comment xml:lang="de">ODA-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο ODA</comment>
+- <comment xml:lang="en_GB">ODA document</comment>
++ <comment xml:lang="en-GB">ODA document</comment>
+ <comment xml:lang="eo">ODA-dokumento</comment>
+ <comment xml:lang="es">documento ODA</comment>
+ <comment xml:lang="eu">ODA dokumentua</comment>
+ <comment xml:lang="fi">ODA-asiakirja</comment>
+ <comment xml:lang="fo">ODA skjal</comment>
+ <comment xml:lang="fr">document ODA</comment>
++ <comment xml:lang="fur">document ODA</comment>
+ <comment xml:lang="ga">cáipéis ODA</comment>
+ <comment xml:lang="gl">documento ODA</comment>
+ <comment xml:lang="he">מסמך ODA</comment>
+@@ -802,7 +827,7 @@
+ <comment xml:lang="oc">document ODA</comment>
+ <comment xml:lang="pl">Dokument ODA</comment>
+ <comment xml:lang="pt">documento ODA</comment>
+- <comment xml:lang="pt_BR">Documento ODA</comment>
++ <comment xml:lang="pt-BR">Documento ODA</comment>
+ <comment xml:lang="ro">Document ODA</comment>
+ <comment xml:lang="ru">Документ ODA</comment>
+ <comment xml:lang="sk">Dokument ODA</comment>
+@@ -813,8 +838,8 @@
+ <comment xml:lang="tr">ODA belgesi</comment>
+ <comment xml:lang="uk">документ ODA</comment>
+ <comment xml:lang="vi">Tài liệu ODA</comment>
+- <comment xml:lang="zh_CN">ODA 文档</comment>
+- <comment xml:lang="zh_TW">ODA 文件</comment>
++ <comment xml:lang="zh-CN">ODA 文档</comment>
++ <comment xml:lang="zh-TW">ODA 文件</comment>
+ <acronym>ODA</acronym>
+ <expanded-acronym>Office Document Architecture</expanded-acronym>
+ <generic-icon name="x-office-document"/>
+@@ -822,6 +847,7 @@
+ </mime-type>
+ <mime-type type="application/x-wwf">
+ <comment>WWF document</comment>
++ <comment xml:lang="af">WWF-dokument</comment>
+ <comment xml:lang="ast">Documentu WWF</comment>
+ <comment xml:lang="bg">Документ — WWF</comment>
+ <comment xml:lang="ca">document WWF</comment>
+@@ -829,12 +855,13 @@
+ <comment xml:lang="da">WWF-dokument</comment>
+ <comment xml:lang="de">WWF-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο WWF</comment>
+- <comment xml:lang="en_GB">WWF document</comment>
++ <comment xml:lang="en-GB">WWF document</comment>
+ <comment xml:lang="eo">WWF-dokumento</comment>
+ <comment xml:lang="es">documento WWF</comment>
+ <comment xml:lang="eu">WWF dokumentua</comment>
+ <comment xml:lang="fi">WWF-asiakirja</comment>
+ <comment xml:lang="fr">document WWF</comment>
++ <comment xml:lang="fur">document WWF</comment>
+ <comment xml:lang="ga">cáipéis WWF</comment>
+ <comment xml:lang="gl">documento de WWF</comment>
+ <comment xml:lang="he">מסמך WWF</comment>
+@@ -847,12 +874,13 @@
+ <comment xml:lang="ka">WWF დოკუმენტი</comment>
+ <comment xml:lang="kk">WWF құжаты</comment>
+ <comment xml:lang="ko">WWF 문서</comment>
++ <comment xml:lang="lt">WWF dokumentas</comment>
+ <comment xml:lang="lv">WWF dokuments</comment>
+ <comment xml:lang="nl">WWF document</comment>
+ <comment xml:lang="oc">document WWF</comment>
+ <comment xml:lang="pl">Dokument WWF</comment>
+ <comment xml:lang="pt">documento WWF</comment>
+- <comment xml:lang="pt_BR">Documento WWF</comment>
++ <comment xml:lang="pt-BR">Documento WWF</comment>
+ <comment xml:lang="ru">Документ WWF</comment>
+ <comment xml:lang="sk">Dokument WWF</comment>
+ <comment xml:lang="sl">Dokument WWF</comment>
+@@ -860,8 +888,8 @@
+ <comment xml:lang="sv">WWF-dokument</comment>
+ <comment xml:lang="tr">WWF belgesi</comment>
+ <comment xml:lang="uk">документ WWF</comment>
+- <comment xml:lang="zh_CN">WWF</comment>
+- <comment xml:lang="zh_TW">WWF 文件</comment>
++ <comment xml:lang="zh-CN">WWF</comment>
++ <comment xml:lang="zh-TW">WWF 文件</comment>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.wwf"/>
+ <sub-class-of type="application/pdf"/>
+@@ -869,9 +897,10 @@
+ </mime-type>
+ <mime-type type="application/pdf">
+ <comment>PDF document</comment>
++ <comment xml:lang="af">PDF-dokument</comment>
+ <comment xml:lang="ar">مستند PDF</comment>
+ <comment xml:lang="ast">Documentu PDF</comment>
+- <comment xml:lang="be@latin">Dakument PDF</comment>
++ <comment xml:lang="be-Latn">Dakument PDF</comment>
+ <comment xml:lang="bg">Документ — PDF</comment>
+ <comment xml:lang="ca">document PDF</comment>
+ <comment xml:lang="cs">dokument PDF</comment>
+@@ -879,13 +908,14 @@
+ <comment xml:lang="da">PDF-dokument</comment>
+ <comment xml:lang="de">PDF-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο PDF</comment>
+- <comment xml:lang="en_GB">PDF document</comment>
++ <comment xml:lang="en-GB">PDF document</comment>
+ <comment xml:lang="eo">PDF-dokumento</comment>
+ <comment xml:lang="es">documento PDF</comment>
+ <comment xml:lang="eu">PDF dokumentua</comment>
+ <comment xml:lang="fi">PDF-asiakirja</comment>
+ <comment xml:lang="fo">PDF skjal</comment>
+ <comment xml:lang="fr">document PDF</comment>
++ <comment xml:lang="fur">document PDF</comment>
+ <comment xml:lang="ga">cáipéis PDF</comment>
+ <comment xml:lang="gl">documento PDF</comment>
+ <comment xml:lang="he">מסמך PDF</comment>
+@@ -906,7 +936,7 @@
+ <comment xml:lang="oc">document PDF</comment>
+ <comment xml:lang="pl">Dokument PDF</comment>
+ <comment xml:lang="pt">documento PDF</comment>
+- <comment xml:lang="pt_BR">Documento PDF</comment>
++ <comment xml:lang="pt-BR">Documento PDF</comment>
+ <comment xml:lang="ro">Document PDF</comment>
+ <comment xml:lang="ru">Документ PDF</comment>
+ <comment xml:lang="sk">Dokument PDF</comment>
+@@ -917,13 +947,13 @@
+ <comment xml:lang="tr">PDF belgesi</comment>
+ <comment xml:lang="uk">документ PDF</comment>
+ <comment xml:lang="vi">Tài liệu PDF</comment>
+- <comment xml:lang="zh_CN">PDF 文档</comment>
+- <comment xml:lang="zh_TW">PDF 文件</comment>
++ <comment xml:lang="zh-CN">PDF 文档</comment>
++ <comment xml:lang="zh-TW">PDF 文件</comment>
+ <acronym>PDF</acronym>
+ <expanded-acronym>Portable Document Format</expanded-acronym>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="%PDF-" type="string" offset="0:1024"/>
++ <match type="string" value="%PDF-" offset="0:1024"/>
+ </magic>
+ <glob pattern="*.pdf"/>
+ <alias type="application/x-pdf"/>
+@@ -933,22 +963,24 @@
+ </mime-type>
+ <mime-type type="application/xspf+xml">
+ <comment>XSPF playlist</comment>
++ <comment xml:lang="af">XSPF-speellys</comment>
+ <comment xml:lang="ar">قائمة تشغيل XSPF</comment>
+ <comment xml:lang="ast">Llista de reproducción XSPF</comment>
+- <comment xml:lang="be@latin">Śpis piesień XSPF</comment>
++ <comment xml:lang="be-Latn">Śpis piesień XSPF</comment>
+ <comment xml:lang="bg">Списък за изпълнение — XSPF</comment>
+ <comment xml:lang="ca">llista de reproducció XSPF</comment>
+ <comment xml:lang="cs">seznam k přehrání XSPF</comment>
+ <comment xml:lang="da">XSPF-afspilningsliste</comment>
+ <comment xml:lang="de">XSPF-Wiedergabeliste</comment>
+ <comment xml:lang="el">Λίστα αναπαραγωγής XSPF</comment>
+- <comment xml:lang="en_GB">XSPF playlist</comment>
++ <comment xml:lang="en-GB">XSPF playlist</comment>
+ <comment xml:lang="eo">XSPF-ludlisto</comment>
+ <comment xml:lang="es">lista de reproducción XSPF</comment>
+ <comment xml:lang="eu">XSPF erreprodukzio-zerrenda</comment>
+ <comment xml:lang="fi">XSPF-soittolista</comment>
+ <comment xml:lang="fo">XSPF avspælingarlisti</comment>
+ <comment xml:lang="fr">liste de lecture XSPF</comment>
++ <comment xml:lang="fur">liste di riproduzion XSPF</comment>
+ <comment xml:lang="ga">seinmliosta XSPF</comment>
+ <comment xml:lang="gl">lista de reprodución XSPF</comment>
+ <comment xml:lang="he">רשימת נגינה XSPF</comment>
+@@ -968,7 +1000,7 @@
+ <comment xml:lang="oc">lista de lectura XSPF</comment>
+ <comment xml:lang="pl">Lista odtwarzania XSPF</comment>
+ <comment xml:lang="pt">lista de reprodução XSPF</comment>
+- <comment xml:lang="pt_BR">Lista de reprodução XSPF</comment>
++ <comment xml:lang="pt-BR">Lista de reprodução XSPF</comment>
+ <comment xml:lang="ro">Listă XSPF</comment>
+ <comment xml:lang="ru">Список воспроизведения XSPF</comment>
+ <comment xml:lang="sk">Zoznam skladieb XSPF</comment>
+@@ -979,15 +1011,15 @@
+ <comment xml:lang="tr">XSPF çalma listesi</comment>
+ <comment xml:lang="uk">список програвання XSPF</comment>
+ <comment xml:lang="vi">Danh mục nhạc XSPF</comment>
+- <comment xml:lang="zh_CN">XSPF 播放列表</comment>
+- <comment xml:lang="zh_TW">XSPF 播放清單</comment>
++ <comment xml:lang="zh-CN">XSPF 播放列表</comment>
++ <comment xml:lang="zh-TW">XSPF 播放清單</comment>
+ <acronym>XSPF</acronym>
+ <expanded-acronym>XML Shareable Playlist Format</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+ <generic-icon name="audio-x-generic"/>
+ <magic priority="50">
+- <match value="&lt;playlist version=&quot;1" type="string" offset="0:64"/>
+- <match value="&lt;playlist version='1" type="string" offset="0:64"/>
++ <match type="string" value="&lt;playlist version=&quot;1" offset="0:64"/>
++ <match type="string" value="&lt;playlist version='1" offset="0:64"/>
+ </magic>
+ <glob pattern="*.xspf"/>
+ <root-XML namespaceURI="http://xspf.org/ns/0/" localName="playlist"/>
+@@ -995,6 +1027,7 @@
+ </mime-type>
+ <mime-type type="application/x-windows-themepack">
+ <comment>Microsoft Windows theme pack</comment>
++ <comment xml:lang="af">Microsoft Windows-temapak</comment>
+ <comment xml:lang="ar">حزمة سمات Microsoft Works</comment>
+ <comment xml:lang="ast">Paquete de temes de Microsoft Windows</comment>
+ <comment xml:lang="bg">Пакет с тема — Microsoft Windows</comment>
+@@ -1003,12 +1036,13 @@
+ <comment xml:lang="da">Microsoft Windows-temapakke</comment>
+ <comment xml:lang="de">Microsoft-Windows-Themenpaket</comment>
+ <comment xml:lang="el">Πακέτο θέματος Microsoft Windows</comment>
+- <comment xml:lang="en_GB">Microsoft Windows theme pack</comment>
++ <comment xml:lang="en-GB">Microsoft Windows theme pack</comment>
+ <comment xml:lang="es">paquete de tema para Microsoft Windows</comment>
+ <comment xml:lang="eu">Microsoft Windows-en gaiaren paketea</comment>
+ <comment xml:lang="fi">Microsoft Windows -teemapaketti</comment>
+ <comment xml:lang="fo">Microsoft Windows tema pakki</comment>
+ <comment xml:lang="fr">paquet de thèmes Microsoft Windows</comment>
++ <comment xml:lang="fur">pachet temis di Microsoft Windows</comment>
+ <comment xml:lang="ga">paca téamaí Microsoft Windows</comment>
+ <comment xml:lang="gl">paquete de tema de Microsoft Windows</comment>
+ <comment xml:lang="he">חבילת ערכות נושא של Microsoft Windows</comment>
+@@ -1027,7 +1061,7 @@
+ <comment xml:lang="oc">paquet de tèmas Microsoft Windows</comment>
+ <comment xml:lang="pl">Pakiet motywu Microsoft Windows</comment>
+ <comment xml:lang="pt">pacote de tema Microsoft Windows</comment>
+- <comment xml:lang="pt_BR">Pacote de temas do Microsoft Windows</comment>
++ <comment xml:lang="pt-BR">Pacote de temas do Microsoft Windows</comment>
+ <comment xml:lang="ro">Pachet de teme Microsoft Windows</comment>
+ <comment xml:lang="ru">Пакет темы Microsoft Windows</comment>
+ <comment xml:lang="sk">Balík tém Microsoft Windows</comment>
+@@ -1036,24 +1070,28 @@
+ <comment xml:lang="sv">Microsoft Windows-temapaket</comment>
+ <comment xml:lang="tr">Microsoft Windows tema paketi</comment>
+ <comment xml:lang="uk">пакунок з темою Microsoft Windows</comment>
+- <comment xml:lang="zh_CN">Microsoft Windows 主题包</comment>
+- <comment xml:lang="zh_TW">微軟視窗佈景主題包</comment>
++ <comment xml:lang="zh-CN">Microsoft Windows 主题包</comment>
++ <comment xml:lang="zh-TW">微軟視窗佈景主題包</comment>
+ <sub-class-of type="application/vnd.ms-cab-compressed"/>
+ <generic-icon name="package-x-generic"/>
+ <glob pattern="*.themepack"/>
+ </mime-type>
+ <mime-type type="audio/x-amzxml">
+ <comment>AmazonMP3 download file</comment>
++ <comment xml:lang="af">AmazonMP3-aflaailêer</comment>
+ <comment xml:lang="ast">Ficheru de descarga AmazonMP3</comment>
++ <comment xml:lang="bg">Файл за изтегляне — AmazonMP3</comment>
+ <comment xml:lang="ca">fitxer baixat d'AmazonMP3</comment>
+ <comment xml:lang="cs">soubor stahování AmazonMP3</comment>
+ <comment xml:lang="da">AmazonMP3-downloadfil</comment>
+ <comment xml:lang="de">AmazonMP3-Herunterladedatei</comment>
+ <comment xml:lang="el">Αρχείο λήψης AmazonMP3</comment>
+- <comment xml:lang="en_GB">AmazonMP3 download file</comment>
++ <comment xml:lang="en-GB">AmazonMP3 download file</comment>
+ <comment xml:lang="es">archivo de descarga de AmazonMP3</comment>
+ <comment xml:lang="eu">AmazonMP3 deskarga fitxategia</comment>
++ <comment xml:lang="fi">AmazonMP3-lataustiedosto</comment>
+ <comment xml:lang="fr">fichier téléchargé AmazonMP3</comment>
++ <comment xml:lang="fur">file discjariât AmazonMP3</comment>
+ <comment xml:lang="ga">comhad íoslódáilte AmazonMP3</comment>
+ <comment xml:lang="gl">Ficheiro de descarga de AmazonMP3</comment>
+ <comment xml:lang="he">קובץ הורדת AmazonMP3</comment>
+@@ -1069,7 +1107,7 @@
+ <comment xml:lang="oc">fichièr telecargat AmazonMP3</comment>
+ <comment xml:lang="pl">Pobrany plik AmazonMP3</comment>
+ <comment xml:lang="pt">ficheiro transferido AmazonMP3</comment>
+- <comment xml:lang="pt_BR">Arquivo de download AmazonMP3</comment>
++ <comment xml:lang="pt-BR">Arquivo de download AmazonMP3</comment>
+ <comment xml:lang="ru">Файл загрузки AmazonMP3</comment>
+ <comment xml:lang="sk">Stiahnutý súbor AmazonMP3 </comment>
+ <comment xml:lang="sl">Datoteka prenosa AmazonMP3</comment>
+@@ -1077,12 +1115,13 @@
+ <comment xml:lang="sv">AmazonMP3-hämtningsfil</comment>
+ <comment xml:lang="tr">AmazonMP3 indirme dosyası</comment>
+ <comment xml:lang="uk">файл завантаження AmazonMP3</comment>
+- <comment xml:lang="zh_CN">AmazonMP3 下载文件</comment>
+- <comment xml:lang="zh_TW">AmazonMP3 下載檔</comment>
++ <comment xml:lang="zh-CN">AmazonMP3 下载文件</comment>
++ <comment xml:lang="zh-TW">AmazonMP3 下載檔</comment>
+ <glob pattern="*.amz"/>
+ </mime-type>
+ <mime-type type="audio/x-gsm">
+ <comment>GSM 06.10 audio</comment>
++ <comment xml:lang="af">GSM 06.10-oudio</comment>
+ <comment xml:lang="ar">GSM 06.10 سمعي</comment>
+ <comment xml:lang="ast">Audiu GSM 6.10</comment>
+ <comment xml:lang="bg">Аудио — GSM 06.10</comment>
+@@ -1091,12 +1130,13 @@
+ <comment xml:lang="da">GSM 06.10-lyd</comment>
+ <comment xml:lang="de">GSM-06.10-Audio</comment>
+ <comment xml:lang="el">Ήχος GSM 06.10</comment>
+- <comment xml:lang="en_GB">GSM 06.10 audio</comment>
+- <comment xml:lang="es">sonido GSM 06.10</comment>
++ <comment xml:lang="en-GB">GSM 06.10 audio</comment>
++ <comment xml:lang="es">audio GSM 06.10</comment>
+ <comment xml:lang="eu">GSM 06.10 audioa</comment>
+ <comment xml:lang="fi">GSM 06.10 -ääni</comment>
+ <comment xml:lang="fo">GSM 06.10 ljóður</comment>
+ <comment xml:lang="fr">audio GSM 06.10</comment>
++ <comment xml:lang="fur">audio GSM 06.10</comment>
+ <comment xml:lang="ga">fuaim GSM 06.10</comment>
+ <comment xml:lang="gl">son de GSM 06.10</comment>
+ <comment xml:lang="he">שמע GSM 06.10</comment>
+@@ -1115,7 +1155,7 @@
+ <comment xml:lang="oc">àudio GSM 06.10</comment>
+ <comment xml:lang="pl">Plik dźwiękowy GSM 06.10</comment>
+ <comment xml:lang="pt">áudio GSM 06.10</comment>
+- <comment xml:lang="pt_BR">Áudio GSM 06.10</comment>
++ <comment xml:lang="pt-BR">Áudio GSM 06.10</comment>
+ <comment xml:lang="ro">GSM 06.10 audio</comment>
+ <comment xml:lang="ru">Аудио GSM 06.10</comment>
+ <comment xml:lang="sk">Zvuk GSM 06.10</comment>
+@@ -1125,85 +1165,65 @@
+ <comment xml:lang="tr">GSM 06.10 ses dosyası</comment>
+ <comment xml:lang="uk">звук GSM 06.10</comment>
+ <comment xml:lang="vi">Âm thanh GSM 06.10</comment>
+- <comment xml:lang="zh_CN">GSM 06.10 音频</comment>
+- <comment xml:lang="zh_TW">GSM 06.10 音訊</comment>
++ <comment xml:lang="zh-CN">GSM 06.10 音频</comment>
++ <comment xml:lang="zh-TW">GSM 06.10 音訊</comment>
+ <acronym>GSM</acronym>
+ <expanded-acronym>Global System for Mobile communications</expanded-acronym>
+ <glob pattern="*.gsm"/>
+ </mime-type>
+ <mime-type type="audio/x-iriver-pla">
+- <comment>iRiver Playlist</comment>
+- <comment xml:lang="ar">قائمة تشغيل iRiver</comment>
+- <comment xml:lang="ast">Llista de reproducción iRiver</comment>
+- <comment xml:lang="be@latin">Śpis piesień iRiver</comment>
++ <comment>iRiver playlist</comment>
+ <comment xml:lang="bg">Списък за изпълнение — iRiver</comment>
+ <comment xml:lang="ca">llista de reproducció iRiver</comment>
+- <comment xml:lang="cs">seznam k přehrání iRiver</comment>
+ <comment xml:lang="da">iRiver-afspilningsliste</comment>
+ <comment xml:lang="de">iRiver-Wiedergabeliste</comment>
+- <comment xml:lang="el">Λίστα αναπαραγωγής iRiver</comment>
+- <comment xml:lang="en_GB">iRiver Playlist</comment>
+- <comment xml:lang="eo">iRiver-ludlisto</comment>
++ <comment xml:lang="en-GB">iRiver playlist</comment>
+ <comment xml:lang="es">lista de reproducción de iRiver</comment>
+ <comment xml:lang="eu">iRiver erreprodukzio-zerrenda</comment>
+ <comment xml:lang="fi">iRiver-soittolista</comment>
+- <comment xml:lang="fo">iRiver avspælingarlisti</comment>
+ <comment xml:lang="fr">liste de lecture iRiver</comment>
+- <comment xml:lang="ga">seinmliosta iRiver</comment>
+- <comment xml:lang="gl">lista de reprodución de iRiver</comment>
+- <comment xml:lang="he">רשימת נגינה של iRiver</comment>
+ <comment xml:lang="hr">iRiver popis izvođenja</comment>
+ <comment xml:lang="hu">iRiver lejátszólista</comment>
+- <comment xml:lang="ia">Lista de selection iRiver</comment>
+- <comment xml:lang="id">iRiver Playlist</comment>
++ <comment xml:lang="id">daftar putar iRiver</comment>
+ <comment xml:lang="it">Playlist iRiver</comment>
+- <comment xml:lang="ja">iRiver 再生リスト</comment>
+ <comment xml:lang="kk">iRiver ойнау тізімі</comment>
+- <comment xml:lang="ko">iRiver 재생 목록</comment>
+- <comment xml:lang="lt">iRiver grojaraštis</comment>
+- <comment xml:lang="lv">iRiver repertuārs</comment>
+- <comment xml:lang="nb">iRiver-spilleliste</comment>
+- <comment xml:lang="nl">iRiver-afspeellijst</comment>
+- <comment xml:lang="nn">iRiver speleliste</comment>
+- <comment xml:lang="oc">lista de lectura iRiver</comment>
++ <comment xml:lang="ko">아이리버 재생 목록</comment>
+ <comment xml:lang="pl">Lista odtwarzania iRiver</comment>
+- <comment xml:lang="pt">lista de reprodução iRiver</comment>
+- <comment xml:lang="pt_BR">Lista de reprodução do iRiver</comment>
+- <comment xml:lang="ro">Listă iRiver</comment>
++ <comment xml:lang="pt">lista de reprodução do iRiver</comment>
++ <comment xml:lang="pt-BR">Lista de reprodução do iRiver</comment>
+ <comment xml:lang="ru">Список воспроизведения iRiver</comment>
+ <comment xml:lang="sk">Zoznam skladieb iRiver</comment>
+ <comment xml:lang="sl">Seznam predvajanja iRiver</comment>
+- <comment xml:lang="sq">Listë titujsh iRiver</comment>
+- <comment xml:lang="sr">иРивер списак нумера</comment>
+ <comment xml:lang="sv">iRiver-spellista</comment>
+- <comment xml:lang="tr">iRiver Çalma Listesini</comment>
+- <comment xml:lang="uk">список програвання iRiver</comment>
+- <comment xml:lang="vi">danh mục nhạc iRiver</comment>
+- <comment xml:lang="zh_CN">iRiver 播放列表</comment>
+- <comment xml:lang="zh_TW">iRiver 播放清單</comment>
++ <comment xml:lang="tr">iRiver çalma listesi</comment>
++ <comment xml:lang="uk">список відтворення iRiver</comment>
++ <comment xml:lang="zh-CN">iRiver 播放列表</comment>
++ <comment xml:lang="zh-TW">iRiver 播放清單</comment>
+ <magic priority="50">
+- <match value="iriver UMS PLA" type="string" offset="4"/>
++ <match type="string" value="iriver UMS PLA" offset="4"/>
+ </magic>
+ <glob pattern="*.pla"/>
+ </mime-type>
+ <mime-type type="application/pgp-encrypted">
+ <comment>PGP/MIME-encrypted message header</comment>
++ <comment xml:lang="af">Kop van PGP/MIME-geënkripteerde boodskap</comment>
+ <comment xml:lang="ar">ترويسة رسالة PGP/MIME-مشفرة</comment>
+ <comment xml:lang="ast">Testera de mensaxe cifrada en PGP/MIME</comment>
+- <comment xml:lang="be@latin">Zahałovak paviedamleńnia, zašyfravany ŭ PGP/MIME</comment>
++ <comment xml:lang="be-Latn">Zahałovak paviedamleńnia, zašyfravany ŭ PGP/MIME</comment>
+ <comment xml:lang="bg">Заглавна част на шифрирано съобщение — PGP/MIME</comment>
+ <comment xml:lang="ca">capçalera de missatge amb xifrat PGP/MIME</comment>
+ <comment xml:lang="cs">záhlaví zprávy zašifrované pomocí PGP/MIME</comment>
+ <comment xml:lang="da">PGP-/MIME-krypteret meddelelseshoved</comment>
+ <comment xml:lang="de">PGP/MIME-verschlüsselter Nachrichtenkopf</comment>
+ <comment xml:lang="el">Κεφαλίδα μηνύματος κρυπτογραφημένου κατά PGP/MIME</comment>
+- <comment xml:lang="en_GB">PGP/MIME-encrypted message header</comment>
++ <comment xml:lang="en-GB">PGP/MIME-encrypted message header</comment>
+ <comment xml:lang="eo">PGP/MIME-ĉifrita ĉapo de mesaĝo</comment>
+ <comment xml:lang="es">cabecera de mensaje cifrado PGP/MIME</comment>
+- <comment xml:lang="eu">PGP/MIME enkriptatutako mezu-goiburua</comment>
++ <comment xml:lang="eu">PGP/MIME zifratutako mezu-goiburua</comment>
+ <comment xml:lang="fi">PGP/MIME-salattu viestiotsikko</comment>
+ <comment xml:lang="fo">PGP/MIME-encrypted boð tekshøvd</comment>
+ <comment xml:lang="fr">en-tête de message codé PGP/MIME</comment>
++ <comment xml:lang="fur">intestazion messaç cifrât in PGP/MIME</comment>
+ <comment xml:lang="ga">ceanntásc teachtaireachta ionchódaithe le PGP/MIME</comment>
+ <comment xml:lang="gl">cabeceira de mensaxe cifrado PGP/MIME</comment>
+ <comment xml:lang="he">כותר של קובץ מוצפן מסוג PGP/MIME</comment>
+@@ -1224,7 +1244,7 @@
+ <comment xml:lang="oc">entèsta de messatge encodat PGP/MIME</comment>
+ <comment xml:lang="pl">Nagłówek listu zaszyfrowanego PGP/MIME</comment>
+ <comment xml:lang="pt">cabeçalho de mensagem encriptada com PGP/MIME</comment>
+- <comment xml:lang="pt_BR">Cabeçalho de mensagem criptografada PGP/MIME</comment>
++ <comment xml:lang="pt-BR">Cabeçalho de mensagem criptografada PGP/MIME</comment>
+ <comment xml:lang="ro">Antet de mesaj encriptat PGP/MIME</comment>
+ <comment xml:lang="ru">Заголовок сообщения, зашифрованный PGP/MIME</comment>
+ <comment xml:lang="sk">Hlavičke správy zašifrovaná pomocou PGP/MIME</comment>
+@@ -1235,24 +1255,25 @@
+ <comment xml:lang="tr">PGP/MIME-şifreli ileti başlığı</comment>
+ <comment xml:lang="uk">заголовок шифрованого PGP/MIME повідомлення</comment>
+ <comment xml:lang="vi">Phần đầu thông điệp đã mật mã bằng PGP/MIME</comment>
+- <comment xml:lang="zh_CN">PGP/MIME 加密的信件头</comment>
+- <comment xml:lang="zh_TW">PGP/MIME 加密訊息標頭</comment>
++ <comment xml:lang="zh-CN">PGP/MIME 加密的信件头</comment>
++ <comment xml:lang="zh-TW">PGP/MIME 加密訊息標頭</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-generic"/>
+ <magic priority="50">
+- <match value="-----BEGIN PGP MESSAGE-----" type="string" offset="0"/>
++ <match type="string" value="-----BEGIN PGP MESSAGE-----" offset="0"/>
+ </magic>
+ <glob pattern="*.pgp"/>
+ <glob pattern="*.gpg"/>
+- <glob weight="10" pattern="*.asc"/>
++ <glob pattern="*.asc" weight="10"/>
+ <alias type="application/pgp"/>
+ </mime-type>
+ <mime-type type="application/pgp-keys">
+ <comment>PGP keys</comment>
++ <comment xml:lang="af">PGP-sleutels</comment>
+ <comment xml:lang="ar">مفاتيح PGP</comment>
+ <comment xml:lang="ast">Claves PGP</comment>
+ <comment xml:lang="az">PGP açarları</comment>
+- <comment xml:lang="be@latin">Klučy PGP</comment>
++ <comment xml:lang="be-Latn">Klučy PGP</comment>
+ <comment xml:lang="bg">Ключове — PGP</comment>
+ <comment xml:lang="ca">claus PGP</comment>
+ <comment xml:lang="cs">klíče PGP</comment>
+@@ -1260,13 +1281,14 @@
+ <comment xml:lang="da">PGP-nøgler</comment>
+ <comment xml:lang="de">PGP-Schlüssel</comment>
+ <comment xml:lang="el">Κλειδιά PGP</comment>
+- <comment xml:lang="en_GB">PGP keys</comment>
++ <comment xml:lang="en-GB">PGP keys</comment>
+ <comment xml:lang="eo">PGP-ŝlosiloj</comment>
+ <comment xml:lang="es">claves PGP</comment>
+ <comment xml:lang="eu">PGP giltzak</comment>
+ <comment xml:lang="fi">PGP-avainrengas</comment>
+ <comment xml:lang="fo">PGP lyklar</comment>
+ <comment xml:lang="fr">clés PGP</comment>
++ <comment xml:lang="fur">clâfs PGP</comment>
+ <comment xml:lang="ga">eochracha PGP</comment>
+ <comment xml:lang="gl">Chaves PGP</comment>
+ <comment xml:lang="he">מפתחות PGP</comment>
+@@ -1287,7 +1309,7 @@
+ <comment xml:lang="oc">claus PGP</comment>
+ <comment xml:lang="pl">Klucze PGP</comment>
+ <comment xml:lang="pt">chaves PGP</comment>
+- <comment xml:lang="pt_BR">Chaves PGP</comment>
++ <comment xml:lang="pt-BR">Chaves PGP</comment>
+ <comment xml:lang="ro">Chei PGP</comment>
+ <comment xml:lang="ru">Ключи PGP</comment>
+ <comment xml:lang="sk">Kľúče PGP</comment>
+@@ -1298,43 +1320,46 @@
+ <comment xml:lang="tr">PGP anahtarları</comment>
+ <comment xml:lang="uk">ключі PGP</comment>
+ <comment xml:lang="vi">Khoá PGP</comment>
+- <comment xml:lang="zh_CN">PGP 密钥</comment>
+- <comment xml:lang="zh_TW">PGP 鑰匙</comment>
++ <comment xml:lang="zh-CN">PGP 密钥</comment>
++ <comment xml:lang="zh-TW">PGP 金鑰</comment>
+ <acronym>PGP</acronym>
+ <expanded-acronym>Pretty Good Privacy</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-generic"/>
+ <magic priority="50">
+- <match value="-----BEGIN PGP PUBLIC KEY BLOCK-----" type="string" offset="0"/>
+- <match value="-----BEGIN PGP PRIVATE KEY BLOCK-----" type="string" offset="0"/>
+- <match value="0x9501" type="big16" offset="0"/>
+- <match value="0x9500" type="big16" offset="0"/>
+- <match value="0x9900" type="big16" offset="0"/>
+- <match value="0x9901" type="big16" offset="0"/>
++ <match type="string" value="-----BEGIN PGP PUBLIC KEY BLOCK-----" offset="0"/>
++ <match type="string" value="-----BEGIN PGP PRIVATE KEY BLOCK-----" offset="0"/>
++ <match type="big16" value="0x9501" offset="0"/>
++ <match type="big16" value="0x9500" offset="0"/>
++ <match type="big16" value="0x9900" offset="0"/>
++ <match type="big16" value="0x9901" offset="0"/>
+ </magic>
+ <glob pattern="*.skr"/>
+ <glob pattern="*.pkr"/>
+- <glob weight="10" pattern="*.asc"/>
++ <glob pattern="*.asc" weight="10"/>
+ <glob pattern="*.pgp"/>
+ <glob pattern="*.gpg"/>
++ <glob pattern="*.key"/>
+ </mime-type>
+ <mime-type type="application/pgp-signature">
+ <comment>detached OpenPGP signature</comment>
++ <comment xml:lang="af">losstaande OpenPGP-handtekening</comment>
+ <comment xml:lang="ar">إمضاء OpenPGP مفصول</comment>
+- <comment xml:lang="be@latin">adłučany podpis OpenPGP</comment>
+- <comment xml:lang="bg">Отделен подпис — OpenPGP</comment>
++ <comment xml:lang="be-Latn">adłučany podpis OpenPGP</comment>
++ <comment xml:lang="bg">Отделѐн подпис — OpenPGP</comment>
+ <comment xml:lang="ca">signatura OpenPGP abstreta</comment>
+ <comment xml:lang="cs">oddělený podpis OpenPGP</comment>
+ <comment xml:lang="da">frigjort OpenPGP-signatur</comment>
+ <comment xml:lang="de">isolierte OpenPGP-Signatur</comment>
+ <comment xml:lang="el">Αποκομμένη υπογραφή OpenPGP</comment>
+- <comment xml:lang="en_GB">detached OpenPGP signature</comment>
++ <comment xml:lang="en-GB">detached OpenPGP signature</comment>
+ <comment xml:lang="eo">dekroĉa OpenPGP-subskribo</comment>
+ <comment xml:lang="es">firma OpenPGP separada</comment>
+ <comment xml:lang="eu">desuzturtako OpenPGP sinadura</comment>
+ <comment xml:lang="fi">erillinen OpenPGP-allekirjoitus</comment>
+ <comment xml:lang="fo">skild OpenPGP undirskrift</comment>
+ <comment xml:lang="fr">signature OpenPGP détachée</comment>
++ <comment xml:lang="fur">firme OpenPGP distacade</comment>
+ <comment xml:lang="ga">síniú OpenPGP scartha</comment>
+ <comment xml:lang="gl">sinatura de OpenPGP independente</comment>
+ <comment xml:lang="he">חתימת OpenPGP מנותקת</comment>
+@@ -1355,7 +1380,7 @@
+ <comment xml:lang="oc">signatura OpenPGP destacada</comment>
+ <comment xml:lang="pl">Oddzielony podpis OpenPGP</comment>
+ <comment xml:lang="pt">assinatura OpenPGP solta</comment>
+- <comment xml:lang="pt_BR">Assinatura OpenPGP destacada</comment>
++ <comment xml:lang="pt-BR">Assinatura OpenPGP destacada</comment>
+ <comment xml:lang="ro">semnătură OpenPGP detașată</comment>
+ <comment xml:lang="ru">Отсоединённая подпись OpenPGP</comment>
+ <comment xml:lang="sk">Oddelený podpis OpenPGP</comment>
+@@ -1366,57 +1391,48 @@
+ <comment xml:lang="tr">müstakil OpenPGP imzası</comment>
+ <comment xml:lang="uk">відокремлений OpenPGP підпис</comment>
+ <comment xml:lang="vi">chữ ký OpenPGP tách rời</comment>
+- <comment xml:lang="zh_CN">分离的 OpenPGP 签名</comment>
+- <comment xml:lang="zh_TW">分離的 OpenPGP 簽章</comment>
++ <comment xml:lang="zh-CN">分离的 OpenPGP 签名</comment>
++ <comment xml:lang="zh-TW">分離的 OpenPGP 簽章</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-generic"/>
+ <magic priority="50">
+- <match value="-----BEGIN PGP SIGNATURE-----" type="string" offset="0"/>
++ <match type="string" value="-----BEGIN PGP SIGNATURE-----" offset="0"/>
+ </magic>
+- <glob weight="10" pattern="*.asc"/>
++ <glob pattern="*.asc" weight="10"/>
+ <glob pattern="*.sig"/>
+ <glob pattern="*.pgp"/>
+ <glob pattern="*.gpg"/>
+ </mime-type>
+-
++ <!-- defined in RFC 2311 -->
+ <mime-type type="application/pkcs7-mime">
+- <comment>PKCS#7 Message or Certificate</comment>
+- <comment xml:lang="ast">Mensaxe o certificáu PKCS#7</comment>
+- <comment xml:lang="ca">missatge o certificat PKCS#7</comment>
+- <comment xml:lang="cs">zpráva nebo certifikát PKCS#7</comment>
+- <comment xml:lang="da">PKCS#7-besked eller certifikat</comment>
+- <comment xml:lang="de">PKCS#7 Nachricht oder Zertifikat</comment>
+- <comment xml:lang="el">Μήνυμα ή πιστοποιητικό PKCS#7</comment>
+- <comment xml:lang="en_GB">PKCS#7 Message or Certificate</comment>
+- <comment xml:lang="es">mensaje o certificado PKCS#7</comment>
+- <comment xml:lang="eu">PKCS#7 mezu edo zertifikazioa</comment>
+- <comment xml:lang="fi">PKCS#7-viesti tai -varmenne</comment>
+- <comment xml:lang="fr">Message ou certificat PKCS#7</comment>
+- <comment xml:lang="ga">Teachtaireacht nó Teastas PKCS#7</comment>
+- <comment xml:lang="gl">Mensaxe ou certificado PKCS#7</comment>
+- <comment xml:lang="he">הודעה או אישור מסוג PKCS#7</comment>
+- <comment xml:lang="hr">PKCS#7 poruka ili vjerodajnica</comment>
+- <comment xml:lang="hu">PKCS#7 üzenet vagy tanúsítvány</comment>
+- <comment xml:lang="ia">Message o certificato PKCS#7</comment>
+- <comment xml:lang="id">Sertifikat atau Pesan PKCS#7</comment>
+- <comment xml:lang="it">Messaggio o certificato PKCS#7</comment>
+- <comment xml:lang="ja">PKCS#7 メッセージまたは証明書</comment>
+- <comment xml:lang="kk">PKCS#7 хабарламасы не сертификаты</comment>
+- <comment xml:lang="ko">PKCS#7 메시지 또는 인증서</comment>
+- <comment xml:lang="lv">PKCS#7 ziņojums vai sertifikāts</comment>
+- <comment xml:lang="oc">Messatge o certificat PKCS#7</comment>
+- <comment xml:lang="pl">Wiadomość lub certyfikat PKCS#7</comment>
+- <comment xml:lang="pt">Mensagem ou certificado PKCS#7</comment>
+- <comment xml:lang="pt_BR">Certificado ou Mensagem PKCS#7</comment>
+- <comment xml:lang="ru">Сообщение или сертификат PKCS#7</comment>
+- <comment xml:lang="sk">Správa alebo certifikát PKCS#7</comment>
+- <comment xml:lang="sl">Sporočilo ali dovoljenje PKCS#7</comment>
+- <comment xml:lang="sr">ПКЦС#7 порука или уверење</comment>
+- <comment xml:lang="sv">PKCS#7-meddelande eller -certifikat</comment>
+- <comment xml:lang="tr">PKCS#7 İletisi veya Sertifikası</comment>
+- <comment xml:lang="uk">повідомлення або сертифікат PKCS#7</comment>
+- <comment xml:lang="zh_CN">PKCS#7 消息或证书</comment>
+- <comment xml:lang="zh_TW">PKCS#7 訊息或憑證</comment>
++ <comment>PKCS#7 file</comment>
++ <comment xml:lang="bg">Файл за PKCS#7</comment>
++ <comment xml:lang="ca">fitxer PKCS#7</comment>
++ <comment xml:lang="da">PKCS#7-fil</comment>
++ <comment xml:lang="de">PKCS#7-Datei</comment>
++ <comment xml:lang="en-GB">PKCS#7 file</comment>
++ <comment xml:lang="es">archivo PKCS#7</comment>
++ <comment xml:lang="eu">PKCS#7 fitxategia</comment>
++ <comment xml:lang="fi">PKCS#7-tiedosto</comment>
++ <comment xml:lang="fr">fichier PKCS#7</comment>
++ <comment xml:lang="hr">PKCS#7 datoteka</comment>
++ <comment xml:lang="hu">PKCS#7 fájl</comment>
++ <comment xml:lang="id">Berkas PKCS#7</comment>
++ <comment xml:lang="it">File PKCS#7</comment>
++ <comment xml:lang="kk">PKCS#7 файлы</comment>
++ <comment xml:lang="ko">PKCS#7 파일</comment>
++ <comment xml:lang="lt">PKCS#7 failas</comment>
++ <comment xml:lang="pl">Plik PKCS#7</comment>
++ <comment xml:lang="pt">ficheiro PKCS#7</comment>
++ <comment xml:lang="pt-BR">Arquivo PKCS#7</comment>
++ <comment xml:lang="ru">Файл PKCS#7</comment>
++ <comment xml:lang="sk">Súbor PKCS#7</comment>
++ <comment xml:lang="sl">Datoteka PKCS#7</comment>
++ <comment xml:lang="sv">PKCS#7-fil</comment>
++ <comment xml:lang="tr">PKCS#7 dosyası</comment>
++ <comment xml:lang="uk">файл PKCS#7</comment>
++ <comment xml:lang="zh-CN">PKCS#7 文件</comment>
++ <comment xml:lang="zh-TW">PKCS#7 檔案</comment>
+ <acronym>PKCS</acronym>
+ <expanded-acronym>Public-Key Cryptography Standards</expanded-acronym>
+ <generic-icon name="text-x-generic"/>
+@@ -1425,21 +1441,23 @@
+ </mime-type>
+ <mime-type type="application/pkcs7-signature">
+ <comment>detached S/MIME signature</comment>
++ <comment xml:lang="af">losstaande S/MIME-handtekening</comment>
+ <comment xml:lang="ar">إمضاء S/MIME مفصول</comment>
+- <comment xml:lang="be@latin">adłučany podpis S/MIME</comment>
+- <comment xml:lang="bg">Отделен подпис — S/MIME</comment>
++ <comment xml:lang="be-Latn">adłučany podpis S/MIME</comment>
++ <comment xml:lang="bg">Отделѐн подпис — S/MIME</comment>
+ <comment xml:lang="ca">signatura S/MIME abstreta</comment>
+ <comment xml:lang="cs">oddělený podpis S/MIME</comment>
+ <comment xml:lang="da">frigjort S/MIME-signatur</comment>
+ <comment xml:lang="de">isolierte S/MIME-Signatur</comment>
+ <comment xml:lang="el">Αποκομμένη υπογραφή S/MIME</comment>
+- <comment xml:lang="en_GB">detached S/MIME signature</comment>
++ <comment xml:lang="en-GB">detached S/MIME signature</comment>
+ <comment xml:lang="eo">dekroĉa S/MIME-subskribo</comment>
+ <comment xml:lang="es">firma S/MIME separada</comment>
+ <comment xml:lang="eu">desuzturtako S/MIME sinadura</comment>
+ <comment xml:lang="fi">erillinen S/MIME-allekirjoitus</comment>
+ <comment xml:lang="fo">skild S/MIME undirskrift</comment>
+ <comment xml:lang="fr">signature S/MIME détachée</comment>
++ <comment xml:lang="fur">firme S/MIME distacade</comment>
+ <comment xml:lang="ga">síniú S/MIME scartha</comment>
+ <comment xml:lang="gl">sinatura S/MIME independente</comment>
+ <comment xml:lang="he">חתימת S/MIME מנותקת</comment>
+@@ -1460,7 +1478,7 @@
+ <comment xml:lang="oc">signatura S/MIME destacada</comment>
+ <comment xml:lang="pl">Oddzielony podpis S/MIME</comment>
+ <comment xml:lang="pt">assinatura S/MIME solta</comment>
+- <comment xml:lang="pt_BR">Assinatura S/MIME destacada</comment>
++ <comment xml:lang="pt-BR">Assinatura S/MIME destacada</comment>
+ <comment xml:lang="ro">semnătură S/MIME detașată</comment>
+ <comment xml:lang="ru">Отсоединённая подпись S/MIME</comment>
+ <comment xml:lang="sk">Oddelený podpis S/MIME</comment>
+@@ -1471,8 +1489,8 @@
+ <comment xml:lang="tr">müstakil S/MIME imzası</comment>
+ <comment xml:lang="uk">відокремлений S/MIME підпис</comment>
+ <comment xml:lang="vi">chữ ký S/MIME tách rời</comment>
+- <comment xml:lang="zh_CN">分离的 S/MIME 签名</comment>
+- <comment xml:lang="zh_TW">分離的 S/MIME 簽章</comment>
++ <comment xml:lang="zh-CN">分离的 S/MIME 签名</comment>
++ <comment xml:lang="zh-TW">分離的 S/MIME 簽章</comment>
+ <acronym>S/MIME</acronym>
+ <expanded-acronym>Secure/Multipurpose Internet Mail Extensions</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+@@ -1481,19 +1499,21 @@
+ </mime-type>
+ <mime-type type="application/pkcs8">
+ <comment>PKCS#8 private key</comment>
++ <comment xml:lang="af">PKCS#8- private sleutel</comment>
+ <comment xml:lang="ar">رزمة الشهادة PKCS#8</comment>
+- <comment xml:lang="bg">Ключ, частен — PKCS#8</comment>
++ <comment xml:lang="bg">Ключ — PKCS#8, частен</comment>
+ <comment xml:lang="ca">clau privada PKCS#8</comment>
+ <comment xml:lang="cs">soukromý klíč PKCS#8</comment>
+ <comment xml:lang="da">PKCS#8-privat nøgle</comment>
+- <comment xml:lang="de">PKCS#8 Geheimer Schlüssel</comment>
++ <comment xml:lang="de">PKCS#8 privater Schlüssel</comment>
+ <comment xml:lang="el">Ιδιωτικό κλειδί PKCS#8</comment>
+- <comment xml:lang="en_GB">PKCS#8 private key</comment>
++ <comment xml:lang="en-GB">PKCS#8 private key</comment>
+ <comment xml:lang="es">clave privada PCKS#8</comment>
+ <comment xml:lang="eu">PKCS#8 gako pribatua</comment>
+ <comment xml:lang="fi">PKCS#8 yksityinen avain</comment>
+ <comment xml:lang="fo">PKCS#8 privatur lykil</comment>
+ <comment xml:lang="fr">clé privée PKCS#8</comment>
++ <comment xml:lang="fur">clâf privade PKCS#8</comment>
+ <comment xml:lang="ga">eochair phríobháideach PKCS#8</comment>
+ <comment xml:lang="gl">Chave privada PKCS#8</comment>
+ <comment xml:lang="he">מפתח פרטי של PKCS#8</comment>
+@@ -1511,7 +1531,7 @@
+ <comment xml:lang="oc">clau privada PKCS#8</comment>
+ <comment xml:lang="pl">Klucz prywatny PKCS#8</comment>
+ <comment xml:lang="pt">chave privada PKCS#8</comment>
+- <comment xml:lang="pt_BR">Chave privada PKCS#8</comment>
++ <comment xml:lang="pt-BR">Chave privada PKCS#8</comment>
+ <comment xml:lang="ro">Cheie privată PKCS#8</comment>
+ <comment xml:lang="ru">Личный ключ PKCS#8</comment>
+ <comment xml:lang="sk">Súkromný kľúč PKCS#8</comment>
+@@ -1520,34 +1540,66 @@
+ <comment xml:lang="sv">Privat PKCS#8-nyckel</comment>
+ <comment xml:lang="tr">PKCS#8 özel anahtarı</comment>
+ <comment xml:lang="uk">закритий ключ PKCS#8</comment>
+- <comment xml:lang="zh_CN">PKCS#8 私钥</comment>
+- <comment xml:lang="zh_TW">PKCS#8 私人金鑰</comment>
++ <comment xml:lang="zh-CN">PKCS#8 私钥</comment>
++ <comment xml:lang="zh-TW">PKCS#8 私人金鑰</comment>
+ <acronym>PKCS</acronym>
+ <expanded-acronym>Public-Key Cryptography Standards</expanded-acronym>
+ <glob pattern="*.p8"/>
+ </mime-type>
+ <mime-type type="application/pkcs8-encrypted">
+ <comment>PKCS#8 private key (encrypted)</comment>
++ <comment xml:lang="af">PKCS#8- private sleutel (geënkripteer)</comment>
++ <comment xml:lang="bg">Ключ — PKCS#8, частен, шифриран</comment>
++ <comment xml:lang="ca">clau privada PKCS#8 (xifrada)</comment>
++ <comment xml:lang="cs">soukromý klíč PKCS#8 (zašifrovaný)</comment>
++ <comment xml:lang="da">PKCS#8-privat nøgle (krypteret)</comment>
++ <comment xml:lang="de">PKCS#8 privater Schlüssel (verschlüsselt)</comment>
++ <comment xml:lang="en-GB">PKCS#8 private key (encrypted)</comment>
++ <comment xml:lang="es">clave privada PKCS#8 (cifrada)</comment>
++ <comment xml:lang="eu">PKCS#8 gako pribatua (zifratua)</comment>
++ <comment xml:lang="fi">PKCS#8 yksityinen avain (salattu)</comment>
++ <comment xml:lang="fr">clé privée PKCS#8 (chiffrée)</comment>
++ <comment xml:lang="fur">clâf privade PKCS#8 (cifrade)</comment>
++ <comment xml:lang="ga">eochair phríobháideach PKCS#8 (criptithe)</comment>
++ <comment xml:lang="hr">PKCS#8 privatni ključ (šifriran)</comment>
++ <comment xml:lang="hu">PKCS#8 személyes kulcs (titkosított)</comment>
++ <comment xml:lang="id">Kunci privat PKCS#8 (terenkripsi)</comment>
++ <comment xml:lang="it">Chiave privata PKCS#8 (cifrata)</comment>
++ <comment xml:lang="kk">PKCS#8 жеке кілті (шифрленген)</comment>
++ <comment xml:lang="ko">PKCS#8 개인 키(암호화됨)</comment>
++ <comment xml:lang="pl">Klucz prywatny PKCS#8 (zaszyfrowany)</comment>
++ <comment xml:lang="pt">chave privada PKCS#8 (encriptada)</comment>
++ <comment xml:lang="pt-BR">Chave privada PKCS#8 (criptografada)</comment>
++ <comment xml:lang="ru">Личный ключ PKCS#8 (зашифрованный)</comment>
++ <comment xml:lang="sk">Súkromný kľúč PKCS#8 (šifrovaný)</comment>
++ <comment xml:lang="sl">Zasebni ključ PKCS#8 (širfirano)</comment>
++ <comment xml:lang="sv">Privat PKCS#8-nyckel (krypterad)</comment>
++ <comment xml:lang="tr">PKCS#8 özel anahtar (şifrelenmiş)</comment>
++ <comment xml:lang="uk">закритий ключ PKCS#8 (зашифрований)</comment>
++ <comment xml:lang="zh-CN">PKCS#8 私钥(已加密)</comment>
++ <comment xml:lang="zh-TW">PKCS#8 私人金鑰 (加密)</comment>
+ <acronym>PKCS</acronym>
+ <expanded-acronym>Public-Key Cryptography Standards</expanded-acronym>
+ <glob pattern="*.p8e"/>
+ </mime-type>
+ <mime-type type="application/pkcs10">
+ <comment>PKCS#10 certification request</comment>
++ <comment xml:lang="af">PKCS#10-sertifiseringsversoek</comment>
+ <comment xml:lang="ar">طلب شهادة PKCS#10</comment>
+- <comment xml:lang="be@latin">Zapyt sertyfikacyi PKCS#10</comment>
++ <comment xml:lang="be-Latn">Zapyt sertyfikacyi PKCS#10</comment>
+ <comment xml:lang="bg">Заявка за сертификат — PKCS#10</comment>
+ <comment xml:lang="ca">sol·licitud de certificació PKCS#10</comment>
+ <comment xml:lang="cs">žádost o certifikát PKCS#10</comment>
+ <comment xml:lang="da">PKCS#10-certifikatanmodning</comment>
+ <comment xml:lang="de">PKCS#10-Zertifikatanfrage</comment>
+ <comment xml:lang="el">Αίτηση πιστοποίησης PKCS#10</comment>
+- <comment xml:lang="en_GB">PKCS#10 certification request</comment>
++ <comment xml:lang="en-GB">PKCS#10 certification request</comment>
+ <comment xml:lang="es">petición de certificados PKCS#10</comment>
+ <comment xml:lang="eu">PKCS#10 ziurtagirien eskaera</comment>
+ <comment xml:lang="fi">PKCS#10-varmennepyyntö</comment>
+ <comment xml:lang="fo">PKCS#10 váttanarumbøn</comment>
+ <comment xml:lang="fr">requête de certification PKCS#10</comment>
++ <comment xml:lang="fur">richieste certificazion PKCS#10</comment>
+ <comment xml:lang="ga">iarratas dheimhniúchán PKCS#10</comment>
+ <comment xml:lang="gl">Solicitude de certificado PKCS#10</comment>
+ <comment xml:lang="he">בקשה מוסמכת PLCS#10</comment>
+@@ -1567,7 +1619,7 @@
+ <comment xml:lang="oc">requèsta de certificacion PKCS#10</comment>
+ <comment xml:lang="pl">Żądanie certyfikatu PKCS#10</comment>
+ <comment xml:lang="pt">pedido de certificação PKCS#10</comment>
+- <comment xml:lang="pt_BR">Pedido de certificação PKCS#12</comment>
++ <comment xml:lang="pt-BR">Pedido de certificação PKCS#12</comment>
+ <comment xml:lang="ro">Cerere de certificat PKCS#10</comment>
+ <comment xml:lang="ru">Запрос сертификации PKCS#10</comment>
+ <comment xml:lang="sk">Požiadavka na certifikát PKCS#10</comment>
+@@ -1578,8 +1630,8 @@
+ <comment xml:lang="tr">PKCS#10 sertifika isteği</comment>
+ <comment xml:lang="uk">комплект сертифікатів PKCS#10</comment>
+ <comment xml:lang="vi">Yêu cầu chứng nhận PKCS#10</comment>
+- <comment xml:lang="zh_CN">PKCS#10 认证请求</comment>
+- <comment xml:lang="zh_TW">PKCS#10 憑證請求</comment>
++ <comment xml:lang="zh-CN">PKCS#10 认证请求</comment>
++ <comment xml:lang="zh-TW">PKCS#10 憑證請求</comment>
+ <acronym>PKCS</acronym>
+ <expanded-acronym>Public-Key Cryptography Standards</expanded-acronym>
+ <generic-icon name="text-x-generic"/>
+@@ -1587,6 +1639,7 @@
+ </mime-type>
+ <mime-type type="application/pkix-cert">
+ <comment>X.509 certificate</comment>
++ <comment xml:lang="af">X.509-sertifikaat</comment>
+ <comment xml:lang="ar">شهادة X.509</comment>
+ <comment xml:lang="ast">Certificáu X.509</comment>
+ <comment xml:lang="bg">Сертификат — X.509</comment>
+@@ -1595,12 +1648,13 @@
+ <comment xml:lang="da">X.509-certifikat</comment>
+ <comment xml:lang="de">X.509-Zertifikat</comment>
+ <comment xml:lang="el">Πιστοποιητικό X.509</comment>
+- <comment xml:lang="en_GB">X.509 certificate</comment>
++ <comment xml:lang="en-GB">X.509 certificate</comment>
+ <comment xml:lang="es">certificado X.509</comment>
+ <comment xml:lang="eu">X.509 ziurtagiria</comment>
+ <comment xml:lang="fi">X.509-varmenne</comment>
+ <comment xml:lang="fo">X.509 prógv</comment>
+ <comment xml:lang="fr">certificat X.509</comment>
++ <comment xml:lang="fur">certificât X.509</comment>
+ <comment xml:lang="ga">teastas X.509</comment>
+ <comment xml:lang="gl">Certificado X.509</comment>
+ <comment xml:lang="he">אישור X.509</comment>
+@@ -1618,7 +1672,7 @@
+ <comment xml:lang="oc">certificat X.509</comment>
+ <comment xml:lang="pl">Certyfikat X.509</comment>
+ <comment xml:lang="pt">certificado X.509</comment>
+- <comment xml:lang="pt_BR">Certificado X.509</comment>
++ <comment xml:lang="pt-BR">Certificado X.509</comment>
+ <comment xml:lang="ro">Certificat X.509</comment>
+ <comment xml:lang="ru">Сертификат X.509</comment>
+ <comment xml:lang="sk">Certifikát X.509</comment>
+@@ -1627,58 +1681,41 @@
+ <comment xml:lang="sv">X.509-certifikat</comment>
+ <comment xml:lang="tr">X.509 sertifikası</comment>
+ <comment xml:lang="uk">сертифікат X.509</comment>
+- <comment xml:lang="zh_CN">X.509 证书</comment>
+- <comment xml:lang="zh_TW">X.509 憑證</comment>
++ <comment xml:lang="zh-CN">X.509 证书</comment>
++ <comment xml:lang="zh-TW">X.509 憑證</comment>
+ <glob pattern="*.cer"/>
+ </mime-type>
+ <mime-type type="application/pkix-crl">
+- <comment>Certificate revocation list</comment>
+- <comment xml:lang="ar">قائمة إبطال الشهادات</comment>
+- <comment xml:lang="ast">Llistáu de revocación de certificaos</comment>
++ <comment>certificate revocation list</comment>
+ <comment xml:lang="bg">Списък с отхвърлени сертификати</comment>
+ <comment xml:lang="ca">llista de revocació de certificats</comment>
+- <comment xml:lang="cs">seznam odvolaných certifikátů</comment>
+- <comment xml:lang="da">Certifikattilbagekaldelsesliste</comment>
+- <comment xml:lang="de">Liste widerrufener Zertifikate</comment>
+- <comment xml:lang="el">Λίστα ανάκλησης πιστοποιητικού</comment>
+- <comment xml:lang="en_GB">Certificate revocation list</comment>
++ <comment xml:lang="da">certifikat tilbagetrækkelsesliste</comment>
++ <comment xml:lang="de">Zertifikatsperrliste</comment>
++ <comment xml:lang="en-GB">certificate revocation list</comment>
+ <comment xml:lang="es">lista de revocación de certificados</comment>
+- <comment xml:lang="eu">Ziurtagiri-errebokatzeen zerrenda</comment>
++ <comment xml:lang="eu">ziurtagiri-errebokatzeen zerrenda</comment>
+ <comment xml:lang="fi">Varmenteiden sulkulista</comment>
+- <comment xml:lang="fo">Prógv afturtøkulisti</comment>
+ <comment xml:lang="fr">liste de révocation de certificat</comment>
+- <comment xml:lang="ga">Liosta teastas cúlghairmthe</comment>
+- <comment xml:lang="gl">lista de certificados de revogación</comment>
+- <comment xml:lang="he">רשימת אישורים מבוטלים</comment>
+ <comment xml:lang="hr">Popis opozvanih vjerodajnica</comment>
+- <comment xml:lang="hu">Tanúsítvány-visszavonási lista</comment>
+- <comment xml:lang="ia">Lista de revocation de certificatos</comment>
+- <comment xml:lang="id">Daftar pencabutan sertificat (CRL)</comment>
++ <comment xml:lang="hu">tanúsítvány visszavonási lista</comment>
++ <comment xml:lang="id">daftar pencabutan sertifikat</comment>
+ <comment xml:lang="it">Elenco certificati di revoca</comment>
+- <comment xml:lang="ja">証明書失効リスト</comment>
+- <comment xml:lang="kk">Сертификатты қайта шақыру тізімі</comment>
++ <comment xml:lang="kk">сертификатты қайта шақыру тізімі</comment>
+ <comment xml:lang="ko">인증서 철회 목록</comment>
+- <comment xml:lang="lt">Panaikintų liudijimų sąrašas</comment>
+- <comment xml:lang="lv">Sertifikātu atsaukšanu saraksts</comment>
+- <comment xml:lang="nl">Certificaat revocation lijst</comment>
+- <comment xml:lang="oc">lista de revocacion de certificat</comment>
+ <comment xml:lang="pl">Lista unieważnień certyfikatów</comment>
+ <comment xml:lang="pt">lista de revogação de certificados</comment>
+- <comment xml:lang="pt_BR">Lista de revogação de certificado</comment>
+- <comment xml:lang="ro">Listă de revocare a certificatelor</comment>
+- <comment xml:lang="ru">Список аннулирования сертификатов</comment>
+- <comment xml:lang="sk">Zoznam zrušených certifikátov</comment>
+- <comment xml:lang="sl">Datoteka seznama preklica potrdil</comment>
+- <comment xml:lang="sr">списак повлачења уверења</comment>
+- <comment xml:lang="sv">Spärrlista för certifikat</comment>
+- <comment xml:lang="tr">Sertifika iptal listesi</comment>
++ <comment xml:lang="pt-BR">Lista de revogação de certificados</comment>
++ <comment xml:lang="ru">список аннулирования сертификатов</comment>
++ <comment xml:lang="sv">certifikatåterkallningslista</comment>
++ <comment xml:lang="tr">sertifika iptal listesi</comment>
+ <comment xml:lang="uk">список відкликання сертифікатів</comment>
+- <comment xml:lang="zh_CN">证书吊销列表</comment>
+- <comment xml:lang="zh_TW">憑證撤銷清單</comment>
++ <comment xml:lang="zh-CN">证书吊销列表</comment>
++ <comment xml:lang="zh-TW">憑證撤銷清單</comment>
+ <glob pattern="*.crl"/>
+ </mime-type>
+ <mime-type type="application/pkix-pkipath">
+ <comment>PkiPath certification path</comment>
++ <comment xml:lang="af">PkiPath-sertifiseringspad</comment>
+ <comment xml:lang="ar">مسار شهادة PkiPath</comment>
+ <comment xml:lang="ast">Camín de certificación PkiPath</comment>
+ <comment xml:lang="bg">Сертификационна верига — PkiPath</comment>
+@@ -1687,12 +1724,13 @@
+ <comment xml:lang="da">PkiPath-certifikationssti</comment>
+ <comment xml:lang="de">PkiPath-Zertifikatspfad</comment>
+ <comment xml:lang="el">Διαδρομή πιστοποιητικού PkiPath</comment>
+- <comment xml:lang="en_GB">PkiPath certification path</comment>
++ <comment xml:lang="en-GB">PkiPath certification path</comment>
+ <comment xml:lang="es">ruta de certificación PkiPath</comment>
+ <comment xml:lang="eu">PkiPath ziurtagirien bide-izena</comment>
+ <comment xml:lang="fi">PkiPath-varmennepolku</comment>
+ <comment xml:lang="fo">PkiPath váttanleið</comment>
+ <comment xml:lang="fr">chemin de certification PkiPath</comment>
++ <comment xml:lang="fur">percors di certificazion PkiPath</comment>
+ <comment xml:lang="ga">conair dheimhniúcháin PkiPath</comment>
+ <comment xml:lang="gl">Ruta de certificación PkiPath</comment>
+ <comment xml:lang="he">נתיב מאושר של PkiPath</comment>
+@@ -1710,7 +1748,7 @@
+ <comment xml:lang="oc">camin de certificacion PkiPath</comment>
+ <comment xml:lang="pl">Ścieżka certyfikacji PkiPath</comment>
+ <comment xml:lang="pt">caminho de certificação PkiPath</comment>
+- <comment xml:lang="pt_BR">Pedido de certificação PkiPath</comment>
++ <comment xml:lang="pt-BR">Pedido de certificação PkiPath</comment>
+ <comment xml:lang="ro">Cale certificare PkiPath</comment>
+ <comment xml:lang="ru">Путь сертификации PkiPath</comment>
+ <comment xml:lang="sk">Cesta k certifikátu PkiPath</comment>
+@@ -1720,88 +1758,67 @@
+ <comment xml:lang="tr">PkiPath sertifika yolu</comment>
+ <comment xml:lang="uk">шлях сертифікації PkiPath</comment>
+ <comment xml:lang="vi">Đường dẫn cấp chứng nhận PkiPath</comment>
+- <comment xml:lang="zh_CN">PkiPath 证书目录</comment>
+- <comment xml:lang="zh_TW">PkiPath 憑證路徑</comment>
++ <comment xml:lang="zh-CN">PkiPath 证书目录</comment>
++ <comment xml:lang="zh-TW">PkiPath 憑證路徑</comment>
+ <glob pattern="*.pkipath"/>
+ </mime-type>
+ <mime-type type="application/postscript">
+- <comment>PS document</comment>
+- <comment xml:lang="ar">مستند PS</comment>
+- <comment xml:lang="ast">Documentu PS</comment>
+- <comment xml:lang="be@latin">Dakument PS</comment>
+- <comment xml:lang="bg">Документ — PS</comment>
+- <comment xml:lang="ca">document PS</comment>
+- <comment xml:lang="cs">dokument PS</comment>
+- <comment xml:lang="da">PS-dokument</comment>
+- <comment xml:lang="de">PS-Dokument</comment>
+- <comment xml:lang="el">Έγγραφο PS</comment>
+- <comment xml:lang="en_GB">PS document</comment>
+- <comment xml:lang="eo">PS-dokumento</comment>
+- <comment xml:lang="es">documento PS</comment>
+- <comment xml:lang="eu">PS dokumentua</comment>
+- <comment xml:lang="fi">PS-asiakirja</comment>
+- <comment xml:lang="fo">PS skjal</comment>
+- <comment xml:lang="fr">document PS</comment>
+- <comment xml:lang="ga">cáipéis PS</comment>
+- <comment xml:lang="gl">documento PS</comment>
+- <comment xml:lang="he">מסמך PS</comment>
+- <comment xml:lang="hr">PS dokument</comment>
+- <comment xml:lang="hu">PS dokumentum</comment>
+- <comment xml:lang="ia">Documento PS</comment>
+- <comment xml:lang="id">Dokumen PS</comment>
+- <comment xml:lang="it">Documento PS</comment>
+- <comment xml:lang="ja">PS ドキュメント</comment>
+- <comment xml:lang="kk">PS құжаты</comment>
+- <comment xml:lang="ko">PS 문서</comment>
+- <comment xml:lang="lt">PS dokumentas</comment>
+- <comment xml:lang="lv">PS dokuments</comment>
+- <comment xml:lang="nb">PS-dokument</comment>
+- <comment xml:lang="nl">PS-document</comment>
+- <comment xml:lang="nn">PS-dokument</comment>
+- <comment xml:lang="oc">document PS</comment>
+- <comment xml:lang="pl">Dokument PS</comment>
+- <comment xml:lang="pt">documento PS</comment>
+- <comment xml:lang="pt_BR">Documento PS</comment>
+- <comment xml:lang="ro">Document PS</comment>
+- <comment xml:lang="ru">Документ PS</comment>
+- <comment xml:lang="sk">Dokument PS</comment>
+- <comment xml:lang="sl">Dokument PS</comment>
+- <comment xml:lang="sq">Dokument PS</comment>
+- <comment xml:lang="sr">ПС документ</comment>
+- <comment xml:lang="sv">PS-dokument</comment>
+- <comment xml:lang="tr">PS belgesi</comment>
+- <comment xml:lang="uk">документ PS</comment>
+- <comment xml:lang="vi">Tài liệu PS</comment>
+- <comment xml:lang="zh_CN">PS 文档</comment>
+- <comment xml:lang="zh_TW">Ps 文件</comment>
+- <acronym>PS</acronym>
+- <expanded-acronym>PostScript</expanded-acronym>
++ <comment>PostScript document</comment>
++ <comment xml:lang="bg">Документ — PostScrip</comment>
++ <comment xml:lang="ca">document PostScript</comment>
++ <comment xml:lang="da">PostScript-dokument</comment>
++ <comment xml:lang="de">PostScript-Dokument</comment>
++ <comment xml:lang="en-GB">PostScript document</comment>
++ <comment xml:lang="es">documento PostScript</comment>
++ <comment xml:lang="eu">PostScript dokumentua</comment>
++ <comment xml:lang="fi">PostScript-asiakirja</comment>
++ <comment xml:lang="fr">document PostScript</comment>
++ <comment xml:lang="hr">PostScript dokument</comment>
++ <comment xml:lang="hu">PostScript dokumentum</comment>
++ <comment xml:lang="id">Dokumen PostScript</comment>
++ <comment xml:lang="it">Documento PostScript</comment>
++ <comment xml:lang="kk">PostScript құжаты</comment>
++ <comment xml:lang="ko">포스트스크립트 문서</comment>
++ <comment xml:lang="lt">PostScript dokumentas</comment>
++ <comment xml:lang="pl">Dokument PostScript</comment>
++ <comment xml:lang="pt">documento PostScript</comment>
++ <comment xml:lang="pt-BR">Documento PostScript</comment>
++ <comment xml:lang="ru">Документ PostScript</comment>
++ <comment xml:lang="sk">Dokument PostScript</comment>
++ <comment xml:lang="sl">Dokument PostScript</comment>
++ <comment xml:lang="sv">Postscript-dokument</comment>
++ <comment xml:lang="tr">PostScript belgesi</comment>
++ <comment xml:lang="uk">документ PostScript</comment>
++ <comment xml:lang="zh-CN">PostScript 文档</comment>
++ <comment xml:lang="zh-TW">PostScript 文件</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="\004%!" type="string" offset="0"/>
+- <match value="%!" type="string" offset="0"/>
++ <match type="string" value="\004%!" offset="0"/>
++ <match type="string" value="%!" offset="0"/>
+ </magic>
+ <glob pattern="*.ps"/>
+ </mime-type>
+ <mime-type type="application/prs.plucker">
+ <comment>Plucker document</comment>
++ <comment xml:lang="af">Plucker-dokument</comment>
+ <comment xml:lang="ar">مستند Plucker</comment>
+ <comment xml:lang="ast">Documentu Plucker</comment>
+- <comment xml:lang="be@latin">Dakument Plucker</comment>
++ <comment xml:lang="be-Latn">Dakument Plucker</comment>
+ <comment xml:lang="bg">Документ — Plucker</comment>
+ <comment xml:lang="ca">document Plucker</comment>
+ <comment xml:lang="cs">dokument Plucker</comment>
+ <comment xml:lang="da">Pluckerdokument</comment>
+ <comment xml:lang="de">Plucker-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Plucker</comment>
+- <comment xml:lang="en_GB">Plucker document</comment>
++ <comment xml:lang="en-GB">Plucker document</comment>
+ <comment xml:lang="eo">Plucker-dokumento</comment>
+ <comment xml:lang="es">documento de Plucker</comment>
+ <comment xml:lang="eu">Plucker dokumentua</comment>
+ <comment xml:lang="fi">Plucker-asiakirja</comment>
+ <comment xml:lang="fo">Plucker skjal</comment>
+ <comment xml:lang="fr">document Plucker</comment>
++ <comment xml:lang="fur">document Plucker</comment>
+ <comment xml:lang="ga">cáipéis Plucker</comment>
+ <comment xml:lang="gl">documento de Plucker</comment>
+ <comment xml:lang="he">מסמך של Plucker</comment>
+@@ -1821,7 +1838,7 @@
+ <comment xml:lang="oc">document Plucker</comment>
+ <comment xml:lang="pl">Dokument Plucker</comment>
+ <comment xml:lang="pt">documento Plucker</comment>
+- <comment xml:lang="pt_BR">Documento do Plucker</comment>
++ <comment xml:lang="pt-BR">Documento do Plucker</comment>
+ <comment xml:lang="ro">Document Plucker</comment>
+ <comment xml:lang="ru">Документ Plucker</comment>
+ <comment xml:lang="sk">Dokument Plucker</comment>
+@@ -1832,54 +1849,61 @@
+ <comment xml:lang="tr">Plucker belgesi</comment>
+ <comment xml:lang="uk">документ Plucker</comment>
+ <comment xml:lang="vi">Tài liệu Plucker</comment>
+- <comment xml:lang="zh_CN">Plucker 文档</comment>
+- <comment xml:lang="zh_TW">Plucker 文件</comment>
++ <comment xml:lang="zh-CN">Plucker 文档</comment>
++ <comment xml:lang="zh-TW">Plucker 文件</comment>
+ <generic-icon name="x-office-document"/>
+ <magic priority="80">
+- <match value="DataPlkr" type="string" offset="60"/>
++ <match type="string" value="DataPlkr" offset="60"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/raml+yaml">
+ <comment>RAML document</comment>
++ <comment xml:lang="af">RAML-dokument</comment>
+ <comment xml:lang="ast">Documentu RAML</comment>
++ <comment xml:lang="bg">Документ — RAML</comment>
+ <comment xml:lang="ca">document RAML</comment>
+ <comment xml:lang="cs">dokument RAML</comment>
+ <comment xml:lang="da">RAML-dokument</comment>
+ <comment xml:lang="de">RAML-Dokument</comment>
+- <comment xml:lang="en_GB">RAML document</comment>
++ <comment xml:lang="en-GB">RAML document</comment>
+ <comment xml:lang="es">documento RAML</comment>
+ <comment xml:lang="eu">RAML dokumentua</comment>
+ <comment xml:lang="fi">RAML-asiakirja</comment>
+ <comment xml:lang="fr">document RAML</comment>
++ <comment xml:lang="fur">document RAML</comment>
+ <comment xml:lang="ga">cáipéis RAML</comment>
+ <comment xml:lang="he">מסמך RAML</comment>
+ <comment xml:lang="hr">RAML dokument</comment>
+ <comment xml:lang="hu">RAML dokumentum</comment>
+- <comment xml:lang="id">dokumen RAML</comment>
++ <comment xml:lang="id">Dokumen RAML</comment>
+ <comment xml:lang="it">Documento RAML</comment>
+ <comment xml:lang="kk">RAML құжаты</comment>
+ <comment xml:lang="ko">RAML 문서</comment>
++ <comment xml:lang="lt">RAML dokumentas</comment>
+ <comment xml:lang="oc">Document RAML</comment>
+ <comment xml:lang="pl">Dokument RAML</comment>
+- <comment xml:lang="pt_BR">Documento RAML</comment>
++ <comment xml:lang="pt">documento RAML</comment>
++ <comment xml:lang="pt-BR">Documento RAML</comment>
+ <comment xml:lang="ru">Документ RAML</comment>
+ <comment xml:lang="sk">Dokument RAML</comment>
++ <comment xml:lang="sl">Dokument RAML</comment>
+ <comment xml:lang="sr">РАМЛ документ</comment>
+ <comment xml:lang="sv">RAML-dokument</comment>
+ <comment xml:lang="tr">RAML belgesi</comment>
+ <comment xml:lang="uk">документ RAML</comment>
+- <comment xml:lang="zh_CN">RAML 文档</comment>
+- <comment xml:lang="zh_TW">RAML 文件</comment>
++ <comment xml:lang="zh-CN">RAML 文档</comment>
++ <comment xml:lang="zh-TW">RAML 文件</comment>
+ <acronym>RAML</acronym>
+ <expanded-acronym>RESTful API Modeling Language</expanded-acronym>
+ <sub-class-of type="application/x-yaml"/>
+ <magic>
+- <match value="#%RAML " type="string" offset="0"/>
++ <match type="string" value="#%RAML " offset="0"/>
+ </magic>
+ <glob pattern="*.raml"/>
+ </mime-type>
+ <mime-type type="application/relax-ng-compact-syntax">
+ <comment>RELAX NG XML schema</comment>
++ <comment xml:lang="af">RELAX NG XML-skema</comment>
+ <comment xml:lang="ar">مخطط RELAX NG XML</comment>
+ <comment xml:lang="bg">Схема за XML — RELAX NG</comment>
+ <comment xml:lang="ca">esquema XML en RELAX NG</comment>
+@@ -1887,11 +1911,12 @@
+ <comment xml:lang="da">RELAX NG XML-skema</comment>
+ <comment xml:lang="de">RELAX NG XML-Schema</comment>
+ <comment xml:lang="el">Σχήμα RELAX NG XML</comment>
+- <comment xml:lang="en_GB">RELAX NG XML schema</comment>
++ <comment xml:lang="en-GB">RELAX NG XML schema</comment>
+ <comment xml:lang="es">esquema XML RELAX NG</comment>
+ <comment xml:lang="eu">RELAX NG XML eskema</comment>
+ <comment xml:lang="fi">RELAX NG XML-skeema</comment>
+ <comment xml:lang="fr">schéma XML RELAX NG</comment>
++ <comment xml:lang="fur">scheme XML RELAX NG</comment>
+ <comment xml:lang="ga">scéimre XML RELAX NG</comment>
+ <comment xml:lang="gl">Esquema XML RELAX NG</comment>
+ <comment xml:lang="he">סכנת RELAX NG XML</comment>
+@@ -1909,7 +1934,7 @@
+ <comment xml:lang="oc">esquèma XML RELAX NG</comment>
+ <comment xml:lang="pl">Schemat XML RELAX NG</comment>
+ <comment xml:lang="pt">Esquema RELAX NG XML</comment>
+- <comment xml:lang="pt_BR">Esquema XML de RELAX NG</comment>
++ <comment xml:lang="pt-BR">Esquema XML de RELAX NG</comment>
+ <comment xml:lang="ro">Schemă RELAX NG XML</comment>
+ <comment xml:lang="ru">XML-схема RELAX NG</comment>
+ <comment xml:lang="sk">XML schéma RELAX NG</comment>
+@@ -1918,8 +1943,8 @@
+ <comment xml:lang="sv">RELAX NG XML-schema</comment>
+ <comment xml:lang="tr">RELAX NG XML şeması</comment>
+ <comment xml:lang="uk">XML-схема RELAX NG</comment>
+- <comment xml:lang="zh_CN">RELAX NG XML 模式</comment>
+- <comment xml:lang="zh_TW">RELAX NG XML schema</comment>
++ <comment xml:lang="zh-CN">RELAX NG XML 模式</comment>
++ <comment xml:lang="zh-TW">RELAX NG XML 綱要</comment>
+ <acronym>RELAX NG</acronym>
+ <expanded-acronym>REgular LAnguage for XML Next Generation</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+@@ -1929,22 +1954,24 @@
+ </mime-type>
+ <mime-type type="application/rtf">
+ <comment>RTF document</comment>
++ <comment xml:lang="af">RTF-dokument</comment>
+ <comment xml:lang="ar">مستند RTF</comment>
+ <comment xml:lang="ast">Documentu RTF</comment>
+- <comment xml:lang="be@latin">Dakument RTF</comment>
++ <comment xml:lang="be-Latn">Dakument RTF</comment>
+ <comment xml:lang="bg">Документ — RTF</comment>
+ <comment xml:lang="ca">document RTF</comment>
+ <comment xml:lang="cs">dokument RTF</comment>
+ <comment xml:lang="da">RTF-dokument</comment>
+ <comment xml:lang="de">RTF-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο RTF</comment>
+- <comment xml:lang="en_GB">RTF document</comment>
++ <comment xml:lang="en-GB">RTF document</comment>
+ <comment xml:lang="eo">RTF-dokumento</comment>
+ <comment xml:lang="es">documento RTF</comment>
+ <comment xml:lang="eu">RTF dokumentua</comment>
+ <comment xml:lang="fi">RTF-asiakirja</comment>
+ <comment xml:lang="fo">RTF skjal</comment>
+ <comment xml:lang="fr">document RTF</comment>
++ <comment xml:lang="fur">document RTF</comment>
+ <comment xml:lang="ga">cáipéis RTF</comment>
+ <comment xml:lang="gl">documento RTF</comment>
+ <comment xml:lang="he">מסמך RTF</comment>
+@@ -1964,7 +1991,7 @@
+ <comment xml:lang="oc">document RTF</comment>
+ <comment xml:lang="pl">Dokument RTF</comment>
+ <comment xml:lang="pt">documento RTF</comment>
+- <comment xml:lang="pt_BR">Documento RTF</comment>
++ <comment xml:lang="pt-BR">Documento RTF</comment>
+ <comment xml:lang="ro">Document RTF</comment>
+ <comment xml:lang="ru">Документ RTF</comment>
+ <comment xml:lang="sk">Dokument RTF</comment>
+@@ -1975,33 +2002,35 @@
+ <comment xml:lang="tr">RTF belgesi</comment>
+ <comment xml:lang="uk">документ RTF</comment>
+ <comment xml:lang="vi">Tài liệu RTF</comment>
+- <comment xml:lang="zh_CN">RTF 文档</comment>
+- <comment xml:lang="zh_TW">RTF 文件</comment>
++ <comment xml:lang="zh-CN">RTF 文档</comment>
++ <comment xml:lang="zh-TW">RTF 文件</comment>
+ <acronym>RTF</acronym>
+ <expanded-acronym>Rich Text Format</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="{\\rtf" type="string" offset="0"/>
++ <match type="string" value="{\\rtf" offset="0"/>
+ </magic>
+ <glob pattern="*.rtf"/>
+ <alias type="text/rtf"/>
+ </mime-type>
+ <mime-type type="application/sieve">
+ <comment>Sieve mail filter script</comment>
++ <comment xml:lang="af">Sieve-posfiltreerskrip</comment>
+ <comment xml:lang="ar">سكربت مرشح بريد Sieve</comment>
+- <comment xml:lang="be@latin">Skrypt filtravańnia pošty Sieve</comment>
++ <comment xml:lang="be-Latn">Skrypt filtravańnia pošty Sieve</comment>
+ <comment xml:lang="bg">Скрипт-филтър за пресяване на поща</comment>
+ <comment xml:lang="ca">script de filtre de correu Sieve</comment>
+ <comment xml:lang="cs">skript poštovního filtru Sieve</comment>
+ <comment xml:lang="da">Sieve e-post-filterprogram</comment>
+ <comment xml:lang="de">Sieve-E-Mail-Filterskript</comment>
+ <comment xml:lang="el">Δέσμη ενεργειών φιλτραρίσματος αλληλογραφίας Sieve</comment>
+- <comment xml:lang="en_GB">Sieve mail filter script</comment>
++ <comment xml:lang="en-GB">Sieve mail filter script</comment>
+ <comment xml:lang="es">secuencia de órdenes de filtro en Sieve</comment>
+ <comment xml:lang="eu">Sieve posta-iragazki script-a</comment>
+ <comment xml:lang="fi">Sieve-postinsuodatuskomentotiedosto</comment>
+ <comment xml:lang="fr">script de filtrage de courriel Sieve</comment>
++ <comment xml:lang="fur">script filtri pueste Sieve</comment>
+ <comment xml:lang="ga">script scagaire r-phost Sieve</comment>
+ <comment xml:lang="gl">Script de filtro de correo Sieve</comment>
+ <comment xml:lang="he">תסריט סינון דואר של Sieve</comment>
+@@ -2021,7 +2050,7 @@
+ <comment xml:lang="oc">escript de filtratge de corrièr electronic Sieve</comment>
+ <comment xml:lang="pl">Skrypt filtra poczty Sieve</comment>
+ <comment xml:lang="pt">Script de filtragem de correio Sieve</comment>
+- <comment xml:lang="pt_BR">Script de filtro de mensagens do Sieve</comment>
++ <comment xml:lang="pt-BR">Script de filtro de mensagens do Sieve</comment>
+ <comment xml:lang="ro">Script filtrare email Sieve</comment>
+ <comment xml:lang="ru">Сценарий почтового фильтра Sieve</comment>
+ <comment xml:lang="sk">Skript poštového filtra Sieve</comment>
+@@ -2029,33 +2058,35 @@
+ <comment xml:lang="sq">Script filtrim poste Sieve</comment>
+ <comment xml:lang="sr">Сјев скрипта пропусника поште</comment>
+ <comment xml:lang="sv">Sieve-epostfilterskript</comment>
+- <comment xml:lang="tr">Sieve posta filtre betiği</comment>
++ <comment xml:lang="tr">Sieve posta süzgeç betiği</comment>
+ <comment xml:lang="uk">скрипт поштового фільтру Sieve</comment>
+ <comment xml:lang="vi">Văn lệnh lọc thư Sieve</comment>
+- <comment xml:lang="zh_CN">Sieve 邮件过滤脚本</comment>
+- <comment xml:lang="zh_TW">Sieve 郵件過濾指令稿</comment>
++ <comment xml:lang="zh-CN">Sieve 邮件过滤脚本</comment>
++ <comment xml:lang="zh-TW">Sieve 郵件篩選指令稿</comment>
+ <sub-class-of type="application/xml"/>
+ <generic-icon name="text-x-script"/>
+ <glob pattern="*.siv"/>
+ </mime-type>
+ <mime-type type="application/smil+xml">
+ <comment>SMIL document</comment>
++ <comment xml:lang="af">SMIL-dokument</comment>
+ <comment xml:lang="ar">مستند SMIL</comment>
+ <comment xml:lang="ast">Documentu SMIL</comment>
+- <comment xml:lang="be@latin">Dakument SMIL</comment>
++ <comment xml:lang="be-Latn">Dakument SMIL</comment>
+ <comment xml:lang="bg">Документ — SMIL</comment>
+ <comment xml:lang="ca">document SMIL</comment>
+ <comment xml:lang="cs">dokument SMIL</comment>
+ <comment xml:lang="da">SMIL-dokument</comment>
+ <comment xml:lang="de">SMIL-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο SMIL</comment>
+- <comment xml:lang="en_GB">SMIL document</comment>
++ <comment xml:lang="en-GB">SMIL document</comment>
+ <comment xml:lang="eo">SMIL-dokumento</comment>
+ <comment xml:lang="es">documento SMIL</comment>
+ <comment xml:lang="eu">SMIL dokumentua</comment>
+ <comment xml:lang="fi">SMIL-asiakirja</comment>
+ <comment xml:lang="fo">SMIL skjal</comment>
+ <comment xml:lang="fr">document SMIL</comment>
++ <comment xml:lang="fur">document SMIL</comment>
+ <comment xml:lang="ga">cáipéis SMIL</comment>
+ <comment xml:lang="gl">documento SMIL</comment>
+ <comment xml:lang="he">מסמך SMIL</comment>
+@@ -2075,7 +2106,7 @@
+ <comment xml:lang="oc">document SMIL</comment>
+ <comment xml:lang="pl">Dokument SMIL</comment>
+ <comment xml:lang="pt">documento SMIL</comment>
+- <comment xml:lang="pt_BR">Documento SMIL</comment>
++ <comment xml:lang="pt-BR">Documento SMIL</comment>
+ <comment xml:lang="ro">Document SMIL</comment>
+ <comment xml:lang="ru">Документ SMIL</comment>
+ <comment xml:lang="sk">Dokument SMIL</comment>
+@@ -2086,8 +2117,8 @@
+ <comment xml:lang="tr">SMIL belgesi</comment>
+ <comment xml:lang="uk">документ SMIL</comment>
+ <comment xml:lang="vi">Tài liệu SMIL</comment>
+- <comment xml:lang="zh_CN">SMIL 文档</comment>
+- <comment xml:lang="zh_TW">SMIL 文件</comment>
++ <comment xml:lang="zh-CN">SMIL 文档</comment>
++ <comment xml:lang="zh-TW">SMIL 文件</comment>
+ <acronym>SMIL</acronym>
+ <expanded-acronym>Synchronized Multimedia Integration Language</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+@@ -2098,7 +2129,7 @@
+ <glob pattern="*.sml"/>
+ <glob pattern="*.kino"/>
+ <magic priority="55">
+- <match value="&lt;smil" type="string" offset="0:256"/>
++ <match type="string" value="&lt;smil" offset="0:256"/>
+ </magic>
+ <root-XML namespaceURI="http://www.w3.org/2001/SMIL20/Language" localName="smil"/>
+ <root-XML namespaceURI="http://www.w3.org/2005/SMIL21/Language" localName="smil"/>
+@@ -2106,6 +2137,7 @@
+ </mime-type>
+ <mime-type type="application/vnd.ms-wpl">
+ <comment>WPL playlist</comment>
++ <comment xml:lang="af">WPL-speellys</comment>
+ <comment xml:lang="ar">قائمة تشغيل WPL</comment>
+ <comment xml:lang="bg">Списък за изпълнение — WPL</comment>
+ <comment xml:lang="ca">llista de reproducció WPL</comment>
+@@ -2113,13 +2145,14 @@
+ <comment xml:lang="da">WPL-afspilningsliste</comment>
+ <comment xml:lang="de">WPL-Wiedergabeliste</comment>
+ <comment xml:lang="el">Λίστα αναπαραγωγής WPL</comment>
+- <comment xml:lang="en_GB">WPL playlist</comment>
++ <comment xml:lang="en-GB">WPL playlist</comment>
+ <comment xml:lang="eo">WPL-ludlisto</comment>
+ <comment xml:lang="es">lista de reproducción WPL</comment>
+ <comment xml:lang="eu">WPL erreprodukzio-zerrenda</comment>
+ <comment xml:lang="fi">WPL-soittolista</comment>
+ <comment xml:lang="fo">WPL avspælingarlisti</comment>
+ <comment xml:lang="fr">liste de lecture WPL</comment>
++ <comment xml:lang="fur">liste di riproduzion WPL</comment>
+ <comment xml:lang="ga">seinmliosta WPL</comment>
+ <comment xml:lang="gl">lista de reprodución WPL</comment>
+ <comment xml:lang="he">רשימת נגינה WPL</comment>
+@@ -2137,7 +2170,7 @@
+ <comment xml:lang="oc">lista de lectura WPL</comment>
+ <comment xml:lang="pl">Lista odtwarzania WPL</comment>
+ <comment xml:lang="pt">lista de reprodução WPL</comment>
+- <comment xml:lang="pt_BR">Lista de reprodução do WPL</comment>
++ <comment xml:lang="pt-BR">Lista de reprodução do WPL</comment>
+ <comment xml:lang="ro">Listă redare WPL</comment>
+ <comment xml:lang="ru">Список воспроизведения WPL</comment>
+ <comment xml:lang="sk">Zoznam skladieb WPL</comment>
+@@ -2147,33 +2180,35 @@
+ <comment xml:lang="tr">WPL çalma listesi</comment>
+ <comment xml:lang="uk">список відтворення WPL</comment>
+ <comment xml:lang="vi">Danh mục nhạc WPL</comment>
+- <comment xml:lang="zh_CN">WPL 播放列表</comment>
+- <comment xml:lang="zh_TW">WPL 播放清單</comment>
++ <comment xml:lang="zh-CN">WPL 播放列表</comment>
++ <comment xml:lang="zh-TW">WPL 播放清單</comment>
+ <acronym>WPL</acronym>
+ <expanded-acronym>Windows Media Player Playlist</expanded-acronym>
+ <generic-icon name="video-x-generic"/>
+ <glob pattern="*.wpl"/>
+ <magic priority="60">
+- <match value="&lt;?wpl" type="string" offset="0:256"/>
++ <match type="string" value="&lt;?wpl" offset="0:256"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-sqlite2">
+ <comment>SQLite2 database</comment>
++ <comment xml:lang="af">SQLite2-databasis</comment>
+ <comment xml:lang="ar">قاعدة بيانات SQLite2</comment>
+- <comment xml:lang="be@latin">Baza źviestak SQLite2</comment>
++ <comment xml:lang="be-Latn">Baza źviestak SQLite2</comment>
+ <comment xml:lang="bg">База от данни — SQLite2</comment>
+ <comment xml:lang="ca">base de dades SQLite2</comment>
+ <comment xml:lang="cs">databáze SQLite2</comment>
+ <comment xml:lang="da">SQLite2-database</comment>
+ <comment xml:lang="de">SQLite2-Datenbank</comment>
+ <comment xml:lang="el">Βάση δεδομένων SQLite2</comment>
+- <comment xml:lang="en_GB">SQLite2 database</comment>
++ <comment xml:lang="en-GB">SQLite2 database</comment>
+ <comment xml:lang="eo">SQLite2-datumbazo</comment>
+ <comment xml:lang="es">base de datos SQLite2</comment>
+ <comment xml:lang="eu">SQLite2 datu-basea</comment>
+ <comment xml:lang="fi">SQLite2-tietokanta</comment>
+ <comment xml:lang="fo">SQLite2 dátustovnur</comment>
+ <comment xml:lang="fr">base de données SQLite2</comment>
++ <comment xml:lang="fur">base di dâts SQLite2</comment>
+ <comment xml:lang="ga">bunachar sonraí SQLite2</comment>
+ <comment xml:lang="gl">base de datos SQLite2</comment>
+ <comment xml:lang="he">מסד נתונים מסוג SQLite2</comment>
+@@ -2193,7 +2228,7 @@
+ <comment xml:lang="oc">banca de donadas SQLite2</comment>
+ <comment xml:lang="pl">Baza danych SQLite2</comment>
+ <comment xml:lang="pt">base de dados SQLite2</comment>
+- <comment xml:lang="pt_BR">Banco de dados SQLite2</comment>
++ <comment xml:lang="pt-BR">Banco de dados SQLite2</comment>
+ <comment xml:lang="ro">Bază de date SQLite2</comment>
+ <comment xml:lang="ru">База данных SQLite2</comment>
+ <comment xml:lang="sk">Databáza SQLite2</comment>
+@@ -2201,33 +2236,35 @@
+ <comment xml:lang="sq">Bazë me të dhëna SQLite2</comment>
+ <comment xml:lang="sr">СКуЛајт2 база података</comment>
+ <comment xml:lang="sv">SQLite2-databas</comment>
+- <comment xml:lang="tr">SQLite2 veritabanı</comment>
++ <comment xml:lang="tr">SQLite2 veri tabanı</comment>
+ <comment xml:lang="uk">База даних SQLite2</comment>
+ <comment xml:lang="vi">Cơ sở dữ liệu SQLite2</comment>
+- <comment xml:lang="zh_CN">SQLite2 数据库</comment>
+- <comment xml:lang="zh_TW">SQLite2 資料庫</comment>
++ <comment xml:lang="zh-CN">SQLite2 数据库</comment>
++ <comment xml:lang="zh-TW">SQLite2 資料庫</comment>
+ <glob pattern="*.sqlite2"/>
+ <magic>
+- <match value="** This file contains an SQLite" type="string" offset="0"/>
++ <match type="string" value="** This file contains an SQLite" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/vnd.sqlite3">
+ <comment>SQLite3 database</comment>
++ <comment xml:lang="af">SQLite3-databasis</comment>
+ <comment xml:lang="ar">قاعدة بيانات SQLite3</comment>
+- <comment xml:lang="be@latin">Baza źviestak SQLite3</comment>
++ <comment xml:lang="be-Latn">Baza źviestak SQLite3</comment>
+ <comment xml:lang="bg">База от данни — SQLite3</comment>
+ <comment xml:lang="ca">base de dades SQLite3</comment>
+ <comment xml:lang="cs">databáze SQLite3</comment>
+ <comment xml:lang="da">SQLite3-database</comment>
+ <comment xml:lang="de">SQLite3-Datenbank</comment>
+ <comment xml:lang="el">Βάση δεδομένων SQLite3</comment>
+- <comment xml:lang="en_GB">SQLite3 database</comment>
++ <comment xml:lang="en-GB">SQLite3 database</comment>
+ <comment xml:lang="eo">SQLite3-datumbazo</comment>
+ <comment xml:lang="es">base de datos SQLite3</comment>
+ <comment xml:lang="eu">SQLite3 datu-basea</comment>
+ <comment xml:lang="fi">SQLite3-tietokanta</comment>
+ <comment xml:lang="fo">SQLite3 dátustovnur</comment>
+ <comment xml:lang="fr">base de données SQLite3</comment>
++ <comment xml:lang="fur">base di dâts SQLite3</comment>
+ <comment xml:lang="ga">bunachar sonraí SQLite3</comment>
+ <comment xml:lang="gl">base de datos SQLite3</comment>
+ <comment xml:lang="he">מסד נתונים מסוג SQLite3</comment>
+@@ -2247,7 +2284,7 @@
+ <comment xml:lang="oc">banca de donadas SQLite3</comment>
+ <comment xml:lang="pl">Baza danych SQLite3</comment>
+ <comment xml:lang="pt">base de dados SQLite3</comment>
+- <comment xml:lang="pt_BR">Banco de dados SQLite3</comment>
++ <comment xml:lang="pt-BR">Banco de dados SQLite3</comment>
+ <comment xml:lang="ro">Bază de date SQLite3</comment>
+ <comment xml:lang="ru">База данных SQLite3</comment>
+ <comment xml:lang="sk">Databáza SQLite3</comment>
+@@ -2255,33 +2292,57 @@
+ <comment xml:lang="sq">Bazë me të dhëna SQLite3</comment>
+ <comment xml:lang="sr">СКуЛајт3 база података</comment>
+ <comment xml:lang="sv">SQLite3-databas</comment>
+- <comment xml:lang="tr">SQLite3 veritabanı</comment>
++ <comment xml:lang="tr">SQLite3 veri tabanı</comment>
+ <comment xml:lang="uk">база даних SQLite3</comment>
+ <comment xml:lang="vi">Cơ sở dữ liệu SQLite3</comment>
+- <comment xml:lang="zh_CN">SQLite3 数据库</comment>
+- <comment xml:lang="zh_TW">SQLite3 資料庫</comment>
++ <comment xml:lang="zh-CN">SQLite3 数据库</comment>
++ <comment xml:lang="zh-TW">SQLite3 資料庫</comment>
+ <glob pattern="*.sqlite3"/>
+ <magic>
+- <match value="SQLite format 3" type="string" offset="0"/>
++ <match type="string" value="SQLite format 3" offset="0"/>
+ </magic>
+ <alias type="application/x-sqlite3"/>
+ </mime-type>
++ <mime-type type="application/x-apple-systemprofiler+xml">
++ <comment>Apple System Profiler</comment>
++ <comment xml:lang="ca">System Profiler d'Apple</comment>
++ <comment xml:lang="da">Apple System Profiler</comment>
++ <comment xml:lang="de">Apple-Systeminformationen</comment>
++ <comment xml:lang="en-GB">Apple System Profiler</comment>
++ <comment xml:lang="es">perfil del sistema de Apple</comment>
++ <comment xml:lang="fi">Applen järjestelmän profiloija</comment>
++ <comment xml:lang="hr">Apple profiler sustava</comment>
++ <comment xml:lang="it">Profiler di sistema Apple</comment>
++ <comment xml:lang="pl">Profiler komputera Apple</comment>
++ <comment xml:lang="pt">Perfilador do sistema Apple</comment>
++ <comment xml:lang="sv">Apple Systeminformation</comment>
++ <comment xml:lang="uk">засіб профілювання системи Apple</comment>
++ <comment xml:lang="zh-CN">Apple 系统概述</comment>
++ <sub-class-of type="application/xml"/>
++ <magic priority="50">
++ <match type="string" value="&lt;plist version=&quot;1.0&quot;" offset="0:256"/>
++ </magic>
++ <glob pattern="*.spx" weight="40"/>
++ <root-XML namespaceURI="http://www.apple.com/DTDs/PropertyList-1.0.dtd" localName="plist"/>
++ </mime-type>
+ <mime-type type="application/x-gedcom">
+ <comment>GEDCOM family history</comment>
++ <comment xml:lang="af">GEDCOM-familiegeskiedenis</comment>
+ <comment xml:lang="ar">تاريخ عائلة GEDCOM</comment>
+- <comment xml:lang="be@latin">Siamiejnaja historyja GEDCOM</comment>
++ <comment xml:lang="be-Latn">Siamiejnaja historyja GEDCOM</comment>
+ <comment xml:lang="bg">Родословно дърво — GEDCOM</comment>
+ <comment xml:lang="ca">antecedents familiars GEDCOM</comment>
+ <comment xml:lang="cs">rodokmen GEDCOM</comment>
+ <comment xml:lang="da">GEDCOM-familiehistorie</comment>
+ <comment xml:lang="de">GEDCOM-Stammbaum</comment>
+ <comment xml:lang="el">Οικογενειακό ιστορικό GEDCOM</comment>
+- <comment xml:lang="en_GB">GEDCOM family history</comment>
++ <comment xml:lang="en-GB">GEDCOM family history</comment>
+ <comment xml:lang="es">historial familiar de GEDCOM</comment>
+ <comment xml:lang="eu">GEDCOM famili historia</comment>
+ <comment xml:lang="fi">GEDCOM-sukuhistoria</comment>
+ <comment xml:lang="fo">GEDCOM familjusøga</comment>
+ <comment xml:lang="fr">généalogie GEDCOM</comment>
++ <comment xml:lang="fur">gjenealogjie GEDCOM</comment>
+ <comment xml:lang="ga">stair theaghlach GEDCOM</comment>
+ <comment xml:lang="gl">historial de familia GEDCOM</comment>
+ <comment xml:lang="he">היסטוריה משפחתית של GEDCOM</comment>
+@@ -2302,7 +2363,7 @@
+ <comment xml:lang="oc">genealogia GEDCOM</comment>
+ <comment xml:lang="pl">Plik historii rodziny GEDCOM</comment>
+ <comment xml:lang="pt">história familiar GEDCOM</comment>
+- <comment xml:lang="pt_BR">Histórico familiar do GEDCOM</comment>
++ <comment xml:lang="pt-BR">Histórico familiar do GEDCOM</comment>
+ <comment xml:lang="ro">Tablou genealogic GEDCOM</comment>
+ <comment xml:lang="ru">История семьи GEDCOM</comment>
+ <comment xml:lang="sk">Rodokmeň GEDCOM</comment>
+@@ -2313,13 +2374,13 @@
+ <comment xml:lang="tr">GEDCOM aile geçmişi</comment>
+ <comment xml:lang="uk">історія родини GEDCOM</comment>
+ <comment xml:lang="vi">Lịch sử gia đình GEDCOM</comment>
+- <comment xml:lang="zh_CN">GEDCOM 家谱</comment>
+- <comment xml:lang="zh_TW">GEDCOM 家族史</comment>
++ <comment xml:lang="zh-CN">GEDCOM 家谱</comment>
++ <comment xml:lang="zh-TW">GEDCOM 族譜</comment>
+ <acronym>GEDCOM</acronym>
+ <expanded-acronym>GEnealogical Data COMmunication</expanded-acronym>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="0 HEAD" type="string" offset="0"/>
++ <match type="string" value="0 HEAD" offset="0"/>
+ </magic>
+ <glob pattern="*.ged"/>
+ <glob pattern="*.gedcom"/>
+@@ -2327,22 +2388,24 @@
+ </mime-type>
+ <mime-type type="video/x-flv">
+ <comment>Flash video</comment>
++ <comment xml:lang="af">Flash-video</comment>
+ <comment xml:lang="ar">Flash مرئي</comment>
+ <comment xml:lang="ast">Videu en Flash</comment>
+- <comment xml:lang="be@latin">Videa Flash</comment>
++ <comment xml:lang="be-Latn">Videa Flash</comment>
+ <comment xml:lang="bg">Видео — Flash</comment>
+ <comment xml:lang="ca">vídeo de Flash</comment>
+ <comment xml:lang="cs">video Flash</comment>
+ <comment xml:lang="da">Flashvideo</comment>
+ <comment xml:lang="de">Flash-Video</comment>
+ <comment xml:lang="el">Βίντεο Flash</comment>
+- <comment xml:lang="en_GB">Flash video</comment>
++ <comment xml:lang="en-GB">Flash video</comment>
+ <comment xml:lang="eo">Flash-video</comment>
+ <comment xml:lang="es">vídeo Flash</comment>
+ <comment xml:lang="eu">Flash bideoa</comment>
+ <comment xml:lang="fi">Flash-video</comment>
+ <comment xml:lang="fo">Flash video</comment>
+ <comment xml:lang="fr">vidéo Flash</comment>
++ <comment xml:lang="fur">video Flash</comment>
+ <comment xml:lang="ga">físeán Flash</comment>
+ <comment xml:lang="gl">vídeo Flash</comment>
+ <comment xml:lang="he">וידאו של פלאש</comment>
+@@ -2363,7 +2426,7 @@
+ <comment xml:lang="oc">vidèo Flash</comment>
+ <comment xml:lang="pl">Plik wideo Flash</comment>
+ <comment xml:lang="pt">vídeo Flash</comment>
+- <comment xml:lang="pt_BR">Vídeo Flash</comment>
++ <comment xml:lang="pt-BR">Vídeo Flash</comment>
+ <comment xml:lang="ro">Video Flash</comment>
+ <comment xml:lang="ru">Видео Flash</comment>
+ <comment xml:lang="sk">Video Flash</comment>
+@@ -2374,11 +2437,11 @@
+ <comment xml:lang="tr">Flash video</comment>
+ <comment xml:lang="uk">відеокліп Flash</comment>
+ <comment xml:lang="vi">Ảnh động Flash</comment>
+- <comment xml:lang="zh_CN">Flash 视频</comment>
+- <comment xml:lang="zh_TW">Flash 視訊</comment>
++ <comment xml:lang="zh-CN">Flash 视频</comment>
++ <comment xml:lang="zh-TW">Flash 視訊</comment>
+ <generic-icon name="video-x-generic"/>
+ <magic priority="50">
+- <match value="FLV" type="string" offset="0"/>
++ <match type="string" value="FLV" offset="0"/>
+ </magic>
+ <glob pattern="*.flv"/>
+ <alias type="application/x-flash-video"/>
+@@ -2387,6 +2450,7 @@
+ </mime-type>
+ <mime-type type="video/x-javafx">
+ <comment>JavaFX video</comment>
++ <comment xml:lang="af">JavaFX-video</comment>
+ <comment xml:lang="ast">Videu en JavaFX</comment>
+ <comment xml:lang="bg">Видео — JavaFX</comment>
+ <comment xml:lang="ca">vídeo de JavaFX</comment>
+@@ -2394,13 +2458,14 @@
+ <comment xml:lang="da">JavaFX-video</comment>
+ <comment xml:lang="de">JavaFX-Video</comment>
+ <comment xml:lang="el">Βίντεο JavaFX</comment>
+- <comment xml:lang="en_GB">JavaFX video</comment>
++ <comment xml:lang="en-GB">JavaFX video</comment>
+ <comment xml:lang="eo">JavaFX-video</comment>
+ <comment xml:lang="es">vídeo JavaFX</comment>
+ <comment xml:lang="eu">JavaFX bideoa</comment>
+ <comment xml:lang="fi">JavaFX-video</comment>
+ <comment xml:lang="fo">JavaFX video</comment>
+ <comment xml:lang="fr">vidéo JavaFX</comment>
++ <comment xml:lang="fur">video JavaFX</comment>
+ <comment xml:lang="ga">físeán JavaFX</comment>
+ <comment xml:lang="gl">vídeo JavaFX</comment>
+ <comment xml:lang="he">וידאו JavaFX</comment>
+@@ -2412,12 +2477,13 @@
+ <comment xml:lang="ja">JavaFX 動画</comment>
+ <comment xml:lang="kk">JavaFX аудиосы</comment>
+ <comment xml:lang="ko">JavaFX 동영상</comment>
++ <comment xml:lang="lt">JavaFX vaizdo įrašas</comment>
+ <comment xml:lang="lv">JavaFX video</comment>
+ <comment xml:lang="nl">JavaFX video</comment>
+ <comment xml:lang="oc">vidèo JavaFX</comment>
+ <comment xml:lang="pl">Plik wideo JavaFX</comment>
+ <comment xml:lang="pt">vídeo JavaFX</comment>
+- <comment xml:lang="pt_BR">Vídeo JavaFX</comment>
++ <comment xml:lang="pt-BR">Vídeo JavaFX</comment>
+ <comment xml:lang="ro">Video JavaFX</comment>
+ <comment xml:lang="ru">Видео JavaFX</comment>
+ <comment xml:lang="sk">Video JavaFX</comment>
+@@ -2426,32 +2492,36 @@
+ <comment xml:lang="sv">JavaFX-video</comment>
+ <comment xml:lang="tr">JavaFX video</comment>
+ <comment xml:lang="uk">відеокліп JavaFX</comment>
+- <comment xml:lang="zh_CN">JavaFX 视频</comment>
+- <comment xml:lang="zh_TW">JavaFX 視訊</comment>
++ <comment xml:lang="zh-CN">JavaFX 视频</comment>
++ <comment xml:lang="zh-TW">JavaFX 視訊</comment>
+ <generic-icon name="video-x-generic"/>
+ <magic priority="40">
+- <match value="FLV" type="string" offset="0"/>
++ <match type="string" value="FLV" offset="0"/>
+ </magic>
+ <glob pattern="*.fxm"/>
+ <sub-class-of type="video/x-flv"/>
+ </mime-type>
+ <mime-type type="application/x-go-sgf">
+-
++ <!-- translators: a record is in this context a description of a board game
++ that has been played, and that can be played back again:
++ http://www.red-bean.com/sgf/ -->
+ <comment>SGF record</comment>
++ <comment xml:lang="af">SGF-rekord</comment>
+ <comment xml:lang="ar">تسجيلة SGF</comment>
+- <comment xml:lang="be@latin">Zapisanaja hulnia SGF</comment>
++ <comment xml:lang="be-Latn">Zapisanaja hulnia SGF</comment>
+ <comment xml:lang="bg">Запис — SGF</comment>
+ <comment xml:lang="ca">registre SGF</comment>
+ <comment xml:lang="cs">nahrávka SGF</comment>
+ <comment xml:lang="da">SGF-optagelse</comment>
+ <comment xml:lang="de">SGF-Aufzeichnung</comment>
+ <comment xml:lang="el">Εγγραφή SGF</comment>
+- <comment xml:lang="en_GB">SGF record</comment>
++ <comment xml:lang="en-GB">SGF record</comment>
+ <comment xml:lang="es">grabación SGF</comment>
+ <comment xml:lang="eu">SGF erregistroa</comment>
+ <comment xml:lang="fi">SGF-nauhoitus</comment>
+ <comment xml:lang="fo">SGF met</comment>
+ <comment xml:lang="fr">partie SGF</comment>
++ <comment xml:lang="fur">regjistrazion SGF</comment>
+ <comment xml:lang="ga">taifead SGF</comment>
+ <comment xml:lang="gl">Grabación SGF</comment>
+ <comment xml:lang="he">הקלטת SGF</comment>
+@@ -2471,7 +2541,7 @@
+ <comment xml:lang="oc">partida SGF</comment>
+ <comment xml:lang="pl">Zapis gry SGF</comment>
+ <comment xml:lang="pt">gravação SGF</comment>
+- <comment xml:lang="pt_BR">Gravação SGF</comment>
++ <comment xml:lang="pt-BR">Gravação SGF</comment>
+ <comment xml:lang="ro">Înregistrare SGF</comment>
+ <comment xml:lang="ru">Запись SGF</comment>
+ <comment xml:lang="sk">Záznam SGF</comment>
+@@ -2482,35 +2552,37 @@
+ <comment xml:lang="tr">SGF kaydı</comment>
+ <comment xml:lang="uk">запис SGF</comment>
+ <comment xml:lang="vi">Mục ghi SGF</comment>
+- <comment xml:lang="zh_CN">SGF 记录</comment>
+- <comment xml:lang="zh_TW">SGF 紀錄</comment>
++ <comment xml:lang="zh-CN">SGF 记录</comment>
++ <comment xml:lang="zh-TW">SGF 紀錄</comment>
+ <acronym>SGF</acronym>
+ <expanded-acronym>Smart Game Format</expanded-acronym>
+ <generic-icon name="text-x-generic"/>
+ <glob pattern="*.sgf"/>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="(;FF[3]" type="string" offset="0"/>
+- <match value="(;FF[4]" type="string" offset="0"/>
++ <match type="string" value="(;FF[3]" offset="0"/>
++ <match type="string" value="(;FF[4]" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/xliff+xml">
+ <comment>XLIFF translation file</comment>
++ <comment xml:lang="af">XLIFF-vertaallêer</comment>
+ <comment xml:lang="ar">ملف ترجمة XLIFF</comment>
+ <comment xml:lang="ast">Ficheru de traducciones XLIFF</comment>
+- <comment xml:lang="be@latin">Fajł pierakładu XLIFF</comment>
++ <comment xml:lang="be-Latn">Fajł pierakładu XLIFF</comment>
+ <comment xml:lang="bg">Превод — XLIFF</comment>
+ <comment xml:lang="ca">fitxer de traducció XLIFF</comment>
+ <comment xml:lang="cs">soubor překladu XLIFF</comment>
+ <comment xml:lang="da">XLIFF-oversættelsesfil</comment>
+ <comment xml:lang="de">XLIFF-Übersetzung</comment>
+ <comment xml:lang="el">Αρχείο μετάφρασης XLIFF</comment>
+- <comment xml:lang="en_GB">XLIFF translation file</comment>
++ <comment xml:lang="en-GB">XLIFF translation file</comment>
+ <comment xml:lang="es">archivo de traducción XLIFF</comment>
+ <comment xml:lang="eu">XLIFF itzulpen-fitxategia</comment>
+ <comment xml:lang="fi">XLIFF-käännöstiedosto</comment>
+ <comment xml:lang="fo">XLIFF týðingarfíla</comment>
+ <comment xml:lang="fr">fichier de traduction XLIFF</comment>
++ <comment xml:lang="fur">file di traduzion XLIFF</comment>
+ <comment xml:lang="ga">comhad aistriúcháin XLIFF</comment>
+ <comment xml:lang="gl">ficheiro de tradución XLIFF</comment>
+ <comment xml:lang="he">קובץ תרגום CLIFF</comment>
+@@ -2530,7 +2602,7 @@
+ <comment xml:lang="oc">fichièr de traduccion XLIFF</comment>
+ <comment xml:lang="pl">Plik tłumaczenia XLIFF</comment>
+ <comment xml:lang="pt">ficheiro de tradução XLIFF</comment>
+- <comment xml:lang="pt_BR">Arquivo de tradução XLIFF</comment>
++ <comment xml:lang="pt-BR">Arquivo de tradução XLIFF</comment>
+ <comment xml:lang="ro">Fișier de traducere XLIFF</comment>
+ <comment xml:lang="ru">Файл перевода XLIFF</comment>
+ <comment xml:lang="sk">Súbor prekladu XLIFF</comment>
+@@ -2541,8 +2613,8 @@
+ <comment xml:lang="tr">XLIFF çeviri dosyası</comment>
+ <comment xml:lang="uk">файл перекладу XLIFF</comment>
+ <comment xml:lang="vi">Tập tin dịch XLIFF</comment>
+- <comment xml:lang="zh_CN">XLIFF 翻译文件</comment>
+- <comment xml:lang="zh_TW">XLIFF 翻譯檔</comment>
++ <comment xml:lang="zh-CN">XLIFF 翻译文件</comment>
++ <comment xml:lang="zh-TW">XLIFF 翻譯檔</comment>
+ <acronym>XLIFF</acronym>
+ <expanded-acronym>XML Localization Interchange File Format</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+@@ -2550,13 +2622,14 @@
+ <glob pattern="*.xlf"/>
+ <glob pattern="*.xliff"/>
+ <magic priority="80">
+- <match value="&lt;xliff" type="string" offset="0:256"/>
++ <match type="string" value="&lt;xliff" offset="0:256"/>
+ </magic>
+- <root-XML namespaceURI='urn:oasis:names:tc:xliff:document:1.1' localName='xliff'/>
++ <root-XML namespaceURI="urn:oasis:names:tc:xliff:document:1.1" localName="xliff"/>
+ <alias type="application/x-xliff"/>
+ </mime-type>
+ <mime-type type="application/x-yaml">
+ <comment>YAML document</comment>
++ <comment xml:lang="af">YAML-dokument</comment>
+ <comment xml:lang="ar">مستند YAML</comment>
+ <comment xml:lang="ast">Documentu YAML</comment>
+ <comment xml:lang="bg">Документ — YAML</comment>
+@@ -2565,13 +2638,14 @@
+ <comment xml:lang="da">YAML-dokument</comment>
+ <comment xml:lang="de">YAML-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο YAML</comment>
+- <comment xml:lang="en_GB">YAML document</comment>
++ <comment xml:lang="en-GB">YAML document</comment>
+ <comment xml:lang="eo">YAML-dokumento</comment>
+ <comment xml:lang="es">documento YAML</comment>
+ <comment xml:lang="eu">YAML dokumentua</comment>
+ <comment xml:lang="fi">YAML-asiakirja</comment>
+ <comment xml:lang="fo">YAML skjal</comment>
+ <comment xml:lang="fr">document YAML</comment>
++ <comment xml:lang="fur">document YAML</comment>
+ <comment xml:lang="ga">cáipéis YAML</comment>
+ <comment xml:lang="gl">documento YAML</comment>
+ <comment xml:lang="he">מסמך YAML</comment>
+@@ -2589,7 +2663,7 @@
+ <comment xml:lang="oc">document YAML</comment>
+ <comment xml:lang="pl">Dokument YAML</comment>
+ <comment xml:lang="pt">documento YAML</comment>
+- <comment xml:lang="pt_BR">Documento YAML</comment>
++ <comment xml:lang="pt-BR">Documento YAML</comment>
+ <comment xml:lang="ro">Document YAML</comment>
+ <comment xml:lang="ru">Документ YAML</comment>
+ <comment xml:lang="sk">Dokument YAML</comment>
+@@ -2598,14 +2672,14 @@
+ <comment xml:lang="sv">YAML-dokument</comment>
+ <comment xml:lang="tr">YAML belgesi</comment>
+ <comment xml:lang="uk">документ YAML</comment>
+- <comment xml:lang="zh_CN">YAML 文档</comment>
+- <comment xml:lang="zh_TW">YAML 文件</comment>
++ <comment xml:lang="zh-CN">YAML 文档</comment>
++ <comment xml:lang="zh-TW">YAML 文件</comment>
+ <acronym>YAML</acronym>
+ <expanded-acronym>YAML Ain't Markup Language</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-generic"/>
+ <magic>
+- <match value="%YAML" type="string" offset="0"/>
++ <match type="string" value="%YAML" offset="0"/>
+ </magic>
+ <glob pattern="*.yaml"/>
+ <glob pattern="*.yml"/>
+@@ -2614,10 +2688,11 @@
+ </mime-type>
+ <mime-type type="application/vnd.corel-draw">
+ <comment>Corel Draw drawing</comment>
++ <comment xml:lang="af">Corel Draw-tekening</comment>
+ <comment xml:lang="ar">تصميم Corel Draw</comment>
+ <comment xml:lang="ast">Dibuxu de Corel Draw</comment>
+ <comment xml:lang="az">Corel Draw çəkimi</comment>
+- <comment xml:lang="be@latin">Rysunak Corel Draw</comment>
++ <comment xml:lang="be-Latn">Rysunak Corel Draw</comment>
+ <comment xml:lang="bg">Чертеж — Corel Draw</comment>
+ <comment xml:lang="ca">dibuix de Corel Draw</comment>
+ <comment xml:lang="cs">kresba Corel Draw</comment>
+@@ -2625,13 +2700,14 @@
+ <comment xml:lang="da">Corel Draw-tegning</comment>
+ <comment xml:lang="de">Corel-Draw-Zeichnung</comment>
+ <comment xml:lang="el">Σχέδιο Corel Draw </comment>
+- <comment xml:lang="en_GB">Corel Draw drawing</comment>
++ <comment xml:lang="en-GB">Corel Draw drawing</comment>
+ <comment xml:lang="eo">grafikaĵo de Corel Draw</comment>
+ <comment xml:lang="es">dibujo de Corel Draw</comment>
+ <comment xml:lang="eu">Corel Draw-eko marrazkia</comment>
+ <comment xml:lang="fi">Corel Draw -piirros</comment>
+ <comment xml:lang="fo">Corel Draw tekning</comment>
+ <comment xml:lang="fr">dessin Corel Draw</comment>
++ <comment xml:lang="fur">dissen Corel Draw</comment>
+ <comment xml:lang="ga">líníocht Corel Draw</comment>
+ <comment xml:lang="gl">debuxo de Corel Draw</comment>
+ <comment xml:lang="he">ציור של Corel Draw</comment>
+@@ -2643,7 +2719,7 @@
+ <comment xml:lang="ja">Corel Draw ドロー</comment>
+ <comment xml:lang="ka">Corel Draw-ის ნახაზი</comment>
+ <comment xml:lang="kk">Corel Draw суреті</comment>
+- <comment xml:lang="ko">코렐 드로우 드로잉</comment>
++ <comment xml:lang="ko">Corel Draw 드로잉</comment>
+ <comment xml:lang="lt">Corel Draw piešinys</comment>
+ <comment xml:lang="lv">Corel Draw zīmējums</comment>
+ <comment xml:lang="ms">Lukisan Corel Draw</comment>
+@@ -2653,7 +2729,7 @@
+ <comment xml:lang="oc">dessenh Corel Draw</comment>
+ <comment xml:lang="pl">Rysunek Corel Draw</comment>
+ <comment xml:lang="pt">desenho Corel Drawdesenho Corel Draw</comment>
+- <comment xml:lang="pt_BR">Desenho do Corel Draw</comment>
++ <comment xml:lang="pt-BR">Desenho do Corel Draw</comment>
+ <comment xml:lang="ro">Desen Corel Draw</comment>
+ <comment xml:lang="ru">Рисунок Corel Draw</comment>
+ <comment xml:lang="sk">Kresba Corel Draw</comment>
+@@ -2664,11 +2740,11 @@
+ <comment xml:lang="tr">Corel Draw çizimi</comment>
+ <comment xml:lang="uk">малюнок Corel Draw</comment>
+ <comment xml:lang="vi">Bản vẽ Corel Draw</comment>
+- <comment xml:lang="zh_CN">Corel Draw 绘图</comment>
+- <comment xml:lang="zh_TW">Corel Draw 繪圖</comment>
++ <comment xml:lang="zh-CN">Corel Draw 绘图</comment>
++ <comment xml:lang="zh-TW">Corel Draw 繪圖</comment>
+ <generic-icon name="image-x-generic"/>
+ <magic priority="80">
+- <match value="CDRXvrsn" type="string" offset="8" mask="0xffffff00ffffffff"/>
++ <match type="string" value="CDRXvrsn" mask="0xffffff00ffffffff" offset="8"/>
+ </magic>
+ <glob pattern="*.cdr"/>
+ <alias type="application/cdr"/>
+@@ -2681,22 +2757,24 @@
+ </mime-type>
+ <mime-type type="application/vnd.hp-hpgl">
+ <comment>HPGL file</comment>
++ <comment xml:lang="af">HPGL-lêer</comment>
+ <comment xml:lang="ar">ملف HPGL</comment>
+ <comment xml:lang="ast">Ficheru HPGL</comment>
+- <comment xml:lang="be@latin">Fajł HPGL</comment>
++ <comment xml:lang="be-Latn">Fajł HPGL</comment>
+ <comment xml:lang="bg">Файл — HPGL</comment>
+ <comment xml:lang="ca">fitxer HPGL</comment>
+ <comment xml:lang="cs">soubor HPGL</comment>
+ <comment xml:lang="da">HPGL-fil</comment>
+ <comment xml:lang="de">HPGL-Datei</comment>
+ <comment xml:lang="el">Αρχείο HPGL</comment>
+- <comment xml:lang="en_GB">HPGL file</comment>
++ <comment xml:lang="en-GB">HPGL file</comment>
+ <comment xml:lang="eo">HPGL-dosiero</comment>
+ <comment xml:lang="es">archivo HPGL</comment>
+ <comment xml:lang="eu">HPGL fitxategia</comment>
+ <comment xml:lang="fi">HPGL-tiedosto</comment>
+ <comment xml:lang="fo">HPGL fíla</comment>
+ <comment xml:lang="fr">fichier HPGL</comment>
++ <comment xml:lang="fur">file HPGL</comment>
+ <comment xml:lang="ga">comhad HPGL</comment>
+ <comment xml:lang="gl">ficheiro HPGL</comment>
+ <comment xml:lang="he">קובץ HGPL</comment>
+@@ -2716,7 +2794,7 @@
+ <comment xml:lang="oc">fichièr HPGL</comment>
+ <comment xml:lang="pl">Plik HPGL</comment>
+ <comment xml:lang="pt">ficheiro HPGL</comment>
+- <comment xml:lang="pt_BR">Arquivo HPGL</comment>
++ <comment xml:lang="pt-BR">Arquivo HPGL</comment>
+ <comment xml:lang="ro">Fișier HPGL</comment>
+ <comment xml:lang="ru">Файл HPGL</comment>
+ <comment xml:lang="sk">Súbor HPGL</comment>
+@@ -2727,8 +2805,8 @@
+ <comment xml:lang="tr">HPGL dosyası</comment>
+ <comment xml:lang="uk">файл HPGL</comment>
+ <comment xml:lang="vi">Tập tin HPGL</comment>
+- <comment xml:lang="zh_CN">HPGL 文件</comment>
+- <comment xml:lang="zh_TW">HPGL 檔案</comment>
++ <comment xml:lang="zh-CN">HPGL 文件</comment>
++ <comment xml:lang="zh-TW">HPGL 檔案</comment>
+ <acronym>HPGL</acronym>
+ <expanded-acronym>HP Graphics Language</expanded-acronym>
+ <generic-icon name="image-x-generic"/>
+@@ -2736,22 +2814,24 @@
+ </mime-type>
+ <mime-type type="application/vnd.hp-pcl">
+ <comment>PCL file</comment>
++ <comment xml:lang="af">PCL-lêer</comment>
+ <comment xml:lang="ar">ملف PCL</comment>
+ <comment xml:lang="ast">FIcheru PCL</comment>
+- <comment xml:lang="be@latin">Fajł PCL</comment>
++ <comment xml:lang="be-Latn">Fajł PCL</comment>
+ <comment xml:lang="bg">Файл — PCL</comment>
+ <comment xml:lang="ca">fitxer PCL</comment>
+ <comment xml:lang="cs">soubor PCL</comment>
+ <comment xml:lang="da">PCL-fil</comment>
+ <comment xml:lang="de">PCL-Datei</comment>
+ <comment xml:lang="el">Αρχείο PCL</comment>
+- <comment xml:lang="en_GB">PCL file</comment>
++ <comment xml:lang="en-GB">PCL file</comment>
+ <comment xml:lang="eo">PCL-dosiero</comment>
+ <comment xml:lang="es">archivo PCL</comment>
+ <comment xml:lang="eu">PCL fitxategia</comment>
+ <comment xml:lang="fi">PCL-tiedosto</comment>
+ <comment xml:lang="fo">PCL fíla</comment>
+ <comment xml:lang="fr">fichier PCL</comment>
++ <comment xml:lang="fur">file PCL</comment>
+ <comment xml:lang="ga">comhad PCL</comment>
+ <comment xml:lang="gl">ficheiro PCL</comment>
+ <comment xml:lang="he">קובץ PCL</comment>
+@@ -2771,7 +2851,7 @@
+ <comment xml:lang="oc">fichièr PCL</comment>
+ <comment xml:lang="pl">Plik PCL</comment>
+ <comment xml:lang="pt">ficheiro PCL</comment>
+- <comment xml:lang="pt_BR">Arquivo PCL</comment>
++ <comment xml:lang="pt-BR">Arquivo PCL</comment>
+ <comment xml:lang="ro">Fișier PCL</comment>
+ <comment xml:lang="ru">Файл PCL</comment>
+ <comment xml:lang="sk">Súbor PCL</comment>
+@@ -2782,8 +2862,8 @@
+ <comment xml:lang="tr">PCL dosyası</comment>
+ <comment xml:lang="uk">файл PCL</comment>
+ <comment xml:lang="vi">Tập tin PCL</comment>
+- <comment xml:lang="zh_CN">PCL 文件</comment>
+- <comment xml:lang="zh_TW">PCL 檔</comment>
++ <comment xml:lang="zh-CN">PCL 文件</comment>
++ <comment xml:lang="zh-TW">PCL 檔</comment>
+ <acronym>PCL</acronym>
+ <expanded-acronym>HP Printer Control Language</expanded-acronym>
+ <generic-icon name="image-x-generic"/>
+@@ -2791,10 +2871,11 @@
+ </mime-type>
+ <mime-type type="application/vnd.lotus-1-2-3">
+ <comment>Lotus 1-2-3 spreadsheet</comment>
++ <comment xml:lang="af">Lotus 1-2-3 sigblad</comment>
+ <comment xml:lang="ar">جدول Lotus 1-2-3</comment>
+ <comment xml:lang="ast">Fueya de cálculu de Lotus 1-2-3</comment>
+ <comment xml:lang="az">Lotus 1-2-3 hesab cədvəli</comment>
+- <comment xml:lang="be@latin">Raźlikovy arkuš Lotus 1-2-3</comment>
++ <comment xml:lang="be-Latn">Raźlikovy arkuš Lotus 1-2-3</comment>
+ <comment xml:lang="bg">Таблица — Lotus 1-2-3</comment>
+ <comment xml:lang="ca">full de càlcul de Lotus 1-2-3</comment>
+ <comment xml:lang="cs">sešit Lotus 1-2-3</comment>
+@@ -2802,13 +2883,14 @@
+ <comment xml:lang="da">Lotus 1-2-3-regneark</comment>
+ <comment xml:lang="de">Lotus-1-2-3-Tabelle</comment>
+ <comment xml:lang="el">Λογιστικό φύλλο Lotus 1-2-3</comment>
+- <comment xml:lang="en_GB">Lotus 1-2-3 spreadsheet</comment>
++ <comment xml:lang="en-GB">Lotus 1-2-3 spreadsheet</comment>
+ <comment xml:lang="eo">Kalkultabelo de Lotus 1-2-3</comment>
+ <comment xml:lang="es">hoja de cálculo de Lotus 1-2-3</comment>
+ <comment xml:lang="eu">Lotus 1-2-3 kalkulu-orria</comment>
+ <comment xml:lang="fi">Lotus 1-2-3 -taulukko</comment>
+ <comment xml:lang="fo">Lotus 1-2-3 rokniark</comment>
+ <comment xml:lang="fr">feuille de calcul Lotus 1-2-3</comment>
++ <comment xml:lang="fur">sfuei di calcul Lotus 1-2-3</comment>
+ <comment xml:lang="ga">scarbhileog Lotus 1-2-3</comment>
+ <comment xml:lang="gl">folla de cálculo de Lotus 1-2-3</comment>
+ <comment xml:lang="he">גיליון נתונים של Lotus 1-2-3</comment>
+@@ -2829,7 +2911,7 @@
+ <comment xml:lang="oc">fuèlh de calcul Lotus 1-2-3</comment>
+ <comment xml:lang="pl">Arkusz Lotus 1-2-3</comment>
+ <comment xml:lang="pt">folha de cálculo Lotus 1-2-3</comment>
+- <comment xml:lang="pt_BR">Planilha do Lotus 1-2-3</comment>
++ <comment xml:lang="pt-BR">Planilha do Lotus 1-2-3</comment>
+ <comment xml:lang="ro">Foaie de calcul Lotus 1-2-3</comment>
+ <comment xml:lang="ru">Электронная таблица Lotus 1-2-3</comment>
+ <comment xml:lang="sk">Zošit Lotus 1-2-3</comment>
+@@ -2837,14 +2919,14 @@
+ <comment xml:lang="sq">Fletë llogaritjesh Lotus 1-2-3</comment>
+ <comment xml:lang="sr">Лотусова 1-2-3 табела</comment>
+ <comment xml:lang="sv">Lotus 1-2-3-kalkylblad</comment>
+- <comment xml:lang="tr">Lotus 1-2-3 hesap tablosu</comment>
++ <comment xml:lang="tr">Lotus 1-2-3 hesap çizelgesi</comment>
+ <comment xml:lang="uk">ел. таблиця Lotus 1-2-3</comment>
+ <comment xml:lang="vi">Bảng tính Lotus 1-2-3</comment>
+- <comment xml:lang="zh_CN">Lotus 1-2-3 电子表格</comment>
+- <comment xml:lang="zh_TW">Lotus 1-2-3 試算表</comment>
++ <comment xml:lang="zh-CN">Lotus 1-2-3 电子表格</comment>
++ <comment xml:lang="zh-TW">Lotus 1-2-3 試算表</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <magic priority="50">
+- <match value="\x00\x00\x02\x00\x06\x04\x06\x00\x08\x00\x00\x00\x00\x00" type="string" offset="0"/>
++ <match type="string" value="\x00\x00\x02\x00\x06\x04\x06\x00\x08\x00\x00\x00\x00\x00" offset="0"/>
+ </magic>
+ <glob pattern="*.123"/>
+ <glob pattern="*.wk1"/>
+@@ -2858,67 +2940,59 @@
+ <alias type="zz-application/zz-winassoc-123"/>
+ </mime-type>
+ <mime-type type="application/vnd.lotus-wordpro">
+- <comment>Lotus Word Pro</comment>
+- <comment xml:lang="ast">Lotus Word Pro</comment>
+- <comment xml:lang="ca">Lotus Word Pro</comment>
+- <comment xml:lang="cs">Lotus Word Pro</comment>
+- <comment xml:lang="da">Lotus Word Pro</comment>
+- <comment xml:lang="de">Lotus Word Pro</comment>
+- <comment xml:lang="el">Lotus Word Pro</comment>
+- <comment xml:lang="en_GB">Lotus Word Pro</comment>
+- <comment xml:lang="es">Lotus Word Pro</comment>
+- <comment xml:lang="eu">Lotus Word Pro</comment>
+- <comment xml:lang="fi">Lotus Word Pro</comment>
+- <comment xml:lang="fr">Lotus Word Pro</comment>
+- <comment xml:lang="ga">Lotus Word Pro</comment>
+- <comment xml:lang="gl">Lotus Word Pro</comment>
+- <comment xml:lang="he">Lotus Word Pro</comment>
+- <comment xml:lang="hr">Lotus Word Pro</comment>
+- <comment xml:lang="hu">Lotus Word Pro</comment>
+- <comment xml:lang="ia">Lotus Word Pro</comment>
+- <comment xml:lang="id">Lotus Word Pro</comment>
+- <comment xml:lang="it">Lotus Word Pro</comment>
+- <comment xml:lang="ja">Lotus Word Pro</comment>
+- <comment xml:lang="kk">Lotus Word Pro</comment>
+- <comment xml:lang="ko">Lotus Word Pro</comment>
+- <comment xml:lang="lv">Lotus Word Pro</comment>
+- <comment xml:lang="oc">Lotus Word Pro</comment>
+- <comment xml:lang="pl">Lotus Word Pro</comment>
+- <comment xml:lang="pt">Lotus Word Pro</comment>
+- <comment xml:lang="pt_BR">Lotus Word Pro</comment>
+- <comment xml:lang="ru">Lotus Word Pro</comment>
+- <comment xml:lang="sk">Lotus Word Pro</comment>
+- <comment xml:lang="sl">Lotus Word Pro</comment>
+- <comment xml:lang="sr">Лотусов Писац Про</comment>
+- <comment xml:lang="sv">Lotus Word Pro</comment>
+- <comment xml:lang="tr">Lotus Word Pro</comment>
+- <comment xml:lang="uk">Lotus Word Pro</comment>
+- <comment xml:lang="zh_CN">Lotus Word Pro</comment>
+- <comment xml:lang="zh_TW">Lotus Word Pro</comment>
++ <comment>Lotus Word Pro document</comment>
++ <comment xml:lang="bg">Документ — Lotus Word Pro</comment>
++ <comment xml:lang="ca">document de Lotus Word Pro</comment>
++ <comment xml:lang="da">Lotus Word Pro-dokument</comment>
++ <comment xml:lang="de">Lotus-Word-Pro-Dokument</comment>
++ <comment xml:lang="en-GB">Lotus Word Pro document</comment>
++ <comment xml:lang="es">documento de Lotus Word Pro</comment>
++ <comment xml:lang="eu">Lotus Word Pro dokumentua</comment>
++ <comment xml:lang="fi">Lotus Word Pro -asiakirja</comment>
++ <comment xml:lang="fr">document Lotus Word Pro</comment>
++ <comment xml:lang="hr">Lotus Word Pro dokument</comment>
++ <comment xml:lang="hu">Lotus Word Pro dokumentum</comment>
++ <comment xml:lang="id">Dokumen Lotus Word Pro</comment>
++ <comment xml:lang="it">Documento Lotus Word Pro</comment>
++ <comment xml:lang="kk">Lotus Word Pro құжаты</comment>
++ <comment xml:lang="ko">로투스 워드 프로 문서</comment>
++ <comment xml:lang="pl">Dokument Lotus Word Pro</comment>
++ <comment xml:lang="pt">documento Lotus Word Pro</comment>
++ <comment xml:lang="pt-BR">Documento do Lotus Word Pro</comment>
++ <comment xml:lang="ru">Документ Lotus Word Pro</comment>
++ <comment xml:lang="sk">Dokument Lotus Word Pro</comment>
++ <comment xml:lang="sl">Dokument Lotus Word Pro</comment>
++ <comment xml:lang="sv">Lotus Word Pro-dokument</comment>
++ <comment xml:lang="tr">Lotus Word Pro belgesi</comment>
++ <comment xml:lang="uk">документ Lotus Word Pro</comment>
++ <comment xml:lang="zh-CN">Lotus Word Pro 文档</comment>
++ <comment xml:lang="zh-TW">Lotus Word Pro 文件</comment>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="WordPro" type="string" offset="0"/>
++ <match type="string" value="WordPro" offset="0"/>
+ </magic>
+ <glob pattern="*.lwp"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-access">
+ <comment>JET database</comment>
++ <comment xml:lang="af">JET-databasis</comment>
+ <comment xml:lang="ar">قاعدة بيانات JET</comment>
+ <comment xml:lang="ast">Base de datos JETº</comment>
+- <comment xml:lang="be@latin">Baza źviestak JET</comment>
++ <comment xml:lang="be-Latn">Baza źviestak JET</comment>
+ <comment xml:lang="bg">База от данни — JET</comment>
+ <comment xml:lang="ca">base de dades JET</comment>
+ <comment xml:lang="cs">databáze JET</comment>
+ <comment xml:lang="da">JET-database</comment>
+ <comment xml:lang="de">JET-Datenbank</comment>
+ <comment xml:lang="el">Βάση δεδομένων JET</comment>
+- <comment xml:lang="en_GB">JET database</comment>
++ <comment xml:lang="en-GB">JET database</comment>
+ <comment xml:lang="eo">JET-datumbazo</comment>
+ <comment xml:lang="es">base de datos JET</comment>
+ <comment xml:lang="eu">JET datu-basea</comment>
+ <comment xml:lang="fi">JET-tietokanta</comment>
+ <comment xml:lang="fo">JET dátustovnur</comment>
+ <comment xml:lang="fr">base de données JET</comment>
++ <comment xml:lang="fur">base di dâts JET</comment>
+ <comment xml:lang="ga">bunachar sonraí JET</comment>
+ <comment xml:lang="gl">base de datos JET</comment>
+ <comment xml:lang="he">מסד נתונים מסוג JET</comment>
+@@ -2938,7 +3012,7 @@
+ <comment xml:lang="oc">banca de donadas JET</comment>
+ <comment xml:lang="pl">Baza Danych JET</comment>
+ <comment xml:lang="pt">base de dados JET</comment>
+- <comment xml:lang="pt_BR">Banco de dados JET</comment>
++ <comment xml:lang="pt-BR">Banco de dados JET</comment>
+ <comment xml:lang="ro">Bază de date JET</comment>
+ <comment xml:lang="ru">База данных JET</comment>
+ <comment xml:lang="sk">Databáza JET</comment>
+@@ -2946,19 +3020,18 @@
+ <comment xml:lang="sq">Bazë me të dhëna JET</comment>
+ <comment xml:lang="sr">ЈЕТ база података</comment>
+ <comment xml:lang="sv">JET-databas</comment>
+- <comment xml:lang="tr">JET veritabanı</comment>
++ <comment xml:lang="tr">JET veri tabanı</comment>
+ <comment xml:lang="uk">База даних JET</comment>
+ <comment xml:lang="vi">Cơ sở dữ liệu JET</comment>
+- <comment xml:lang="zh_CN">JET 数据库</comment>
+- <comment xml:lang="zh_TW">JET 資料庫</comment>
++ <comment xml:lang="zh-CN">JET 数据库</comment>
++ <comment xml:lang="zh-TW">JET 資料庫</comment>
+ <acronym>JET</acronym>
+ <expanded-acronym>Joint Engine Technology</expanded-acronym>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="\x00\x01\x00\x00Standard Jet DB" type="string" offset="0"/>
++ <match offset="0" type="string" value="\x00\x01\x00\x00Standard Jet DB"/>
+ </magic>
+ <glob pattern="*.mdb"/>
+- <alias type="application/x-msaccess"/>
+ <alias type="application/msaccess"/>
+ <alias type="application/vnd.msaccess"/>
+ <alias type="application/x-msaccess"/>
+@@ -2968,6 +3041,7 @@
+ </mime-type>
+ <mime-type type="application/vnd.ms-cab-compressed">
+ <comment>Microsoft Cabinet archive</comment>
++ <comment xml:lang="af">Microsoft Cabinet-argief</comment>
+ <comment xml:lang="ar">أرشيف Microsoft Cabinet</comment>
+ <comment xml:lang="bg">Архив — Microsoft Cabinet</comment>
+ <comment xml:lang="ca">arxiu de Microsoft Cabinet</comment>
+@@ -2975,12 +3049,13 @@
+ <comment xml:lang="da">Microsoft Cabinet-arkiv</comment>
+ <comment xml:lang="de">Microsoft-Cabinet-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο Microsoft Cabinet</comment>
+- <comment xml:lang="en_GB">Microsoft Cabinet archive</comment>
++ <comment xml:lang="en-GB">Microsoft Cabinet archive</comment>
+ <comment xml:lang="es">archivador Cabinet de Microsoft</comment>
+ <comment xml:lang="eu">Microsoft Cabinet artxiboa</comment>
+ <comment xml:lang="fi">Microsoft Cabinet -arkisto</comment>
+ <comment xml:lang="fo">Microsoft Cabinet skjalasavn</comment>
+ <comment xml:lang="fr">archive Cab Microsoft</comment>
++ <comment xml:lang="fur">archivi Cabinet Microsoft</comment>
+ <comment xml:lang="ga">cartlann Microsoft Cabinet</comment>
+ <comment xml:lang="gl">arquivo de Microsoft Cabinet</comment>
+ <comment xml:lang="he">ארכיון CAB (מיקרוסופט)</comment>
+@@ -2992,14 +3067,14 @@
+ <comment xml:lang="ja">Microsoft Cabinet アーカイブ</comment>
+ <comment xml:lang="ka">Microsoft-ის Cabinet არქივი</comment>
+ <comment xml:lang="kk">Microsoft Cabinet архиві</comment>
+- <comment xml:lang="ko">Microsoft Cabinte 압축 파일</comment>
++ <comment xml:lang="ko">Microsoft Cabinet 압축 파일</comment>
+ <comment xml:lang="lt">Microsoft Cabinet archyvas</comment>
+ <comment xml:lang="lv">Microsoft kabineta arhīvs</comment>
+ <comment xml:lang="nl">Microsoft Cabinet-archief</comment>
+ <comment xml:lang="oc">archiu Cab Microsoft</comment>
+ <comment xml:lang="pl">Archiwum Microsoft Cabinet</comment>
+ <comment xml:lang="pt">arquivo Microsoft Cabinet</comment>
+- <comment xml:lang="pt_BR">Pacote Cabinet da Microsoft</comment>
++ <comment xml:lang="pt-BR">Pacote Cabinet da Microsoft</comment>
+ <comment xml:lang="ro">Arhivă Microsoft Cabinet</comment>
+ <comment xml:lang="ru">Архив Microsoft Cabinet</comment>
+ <comment xml:lang="sk">Archív Microsoft Cabinet</comment>
+@@ -3009,32 +3084,34 @@
+ <comment xml:lang="tr">Microsoft Cabinet arşivi</comment>
+ <comment xml:lang="uk">архів Cabinet Microsoft</comment>
+ <comment xml:lang="vi">Kho lưu Cabinet Microsoft</comment>
+- <comment xml:lang="zh_CN">Microsoft Cabinet 归档文件</comment>
+- <comment xml:lang="zh_TW">微軟 Cabinet 封存檔</comment>
++ <comment xml:lang="zh-CN">Microsoft Cabinet 归档文件</comment>
++ <comment xml:lang="zh-TW">微軟 Cabinet 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="60">
+- <match value="MSCF\0\0\0\0" type="string" offset="0"/>
++ <match offset="0" type="string" value="MSCF\0\0\0\0"/>
+ </magic>
+ <glob pattern="*.cab"/>
+ <alias type="zz-application/zz-winassoc-cab"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-excel">
+ <comment>Excel spreadsheet</comment>
++ <comment xml:lang="af">Excel-sigblad</comment>
+ <comment xml:lang="ar">جدول Excel</comment>
+- <comment xml:lang="be@latin">Raźlikovy akruš Excel</comment>
++ <comment xml:lang="be-Latn">Raźlikovy akruš Excel</comment>
+ <comment xml:lang="bg">Таблица — Excel</comment>
+ <comment xml:lang="ca">full de càlcul d'Excel</comment>
+ <comment xml:lang="cs">sešit Excel</comment>
+ <comment xml:lang="da">Excelregneark</comment>
+ <comment xml:lang="de">Excel-Tabelle</comment>
+ <comment xml:lang="el">Λογιστικό φύλλο Excel</comment>
+- <comment xml:lang="en_GB">Excel spreadsheet</comment>
++ <comment xml:lang="en-GB">Excel spreadsheet</comment>
+ <comment xml:lang="eo">Excel-kalkultabelo</comment>
+ <comment xml:lang="es">hoja de cálculo de Excel</comment>
+ <comment xml:lang="eu">Excel kalkulu-orria</comment>
+ <comment xml:lang="fi">Excel-taulukko</comment>
+ <comment xml:lang="fo">Excel rokniark</comment>
+ <comment xml:lang="fr">feuille de calcul Excel</comment>
++ <comment xml:lang="fur">sfuei di calcul Excel</comment>
+ <comment xml:lang="ga">scarbhileog Excel</comment>
+ <comment xml:lang="gl">folla de cálculo de Excel</comment>
+ <comment xml:lang="he">גליון נתונים של Excel</comment>
+@@ -3055,7 +3132,7 @@
+ <comment xml:lang="oc">fuèlh de calcul Excel</comment>
+ <comment xml:lang="pl">Arkusz Excel</comment>
+ <comment xml:lang="pt">folha de cálculo Excel</comment>
+- <comment xml:lang="pt_BR">Planilha do Excel</comment>
++ <comment xml:lang="pt-BR">Planilha do Excel</comment>
+ <comment xml:lang="ro">Foaie de calcul Excel</comment>
+ <comment xml:lang="ru">Электронная таблица Excel</comment>
+ <comment xml:lang="sk">Zošit Excel</comment>
+@@ -3063,14 +3140,14 @@
+ <comment xml:lang="sq">Fletë llogaritje Excel</comment>
+ <comment xml:lang="sr">Екселова табела</comment>
+ <comment xml:lang="sv">Excel-kalkylblad</comment>
+- <comment xml:lang="tr">Excel çalışma sayfası</comment>
++ <comment xml:lang="tr">Excel hesap çizelgesi</comment>
+ <comment xml:lang="uk">ел. таблиця Excel</comment>
+ <comment xml:lang="vi">Bảng tính Excel</comment>
+- <comment xml:lang="zh_CN">Excel 电子表格</comment>
+- <comment xml:lang="zh_TW">Excel 試算表</comment>
++ <comment xml:lang="zh-CN">Excel 电子表格</comment>
++ <comment xml:lang="zh-TW">Excel 試算表</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <magic priority="50">
+- <match value="Microsoft Excel 5.0 Worksheet" type="string" offset="2080"/>
++ <match type="string" value="Microsoft Excel 5.0 Worksheet" offset="2080"/>
+ </magic>
+ <glob pattern="*.xls"/>
+ <glob pattern="*.xlc"/>
+@@ -3086,17 +3163,19 @@
+ </mime-type>
+ <mime-type type="application/vnd.ms-excel.addin.macroEnabled.12">
+ <comment>Excel add-in</comment>
++ <comment xml:lang="af">Excel-byvoeging</comment>
+ <comment xml:lang="bg">Приставка — Excel</comment>
+ <comment xml:lang="ca">complement d'Excel</comment>
+ <comment xml:lang="cs">doplněk aplikace Excel</comment>
+ <comment xml:lang="da">Excel-tilføjelse</comment>
+ <comment xml:lang="de">Excel Add-in</comment>
+ <comment xml:lang="el">Πρόσθετο Excel</comment>
+- <comment xml:lang="en_GB">Excel add-in</comment>
++ <comment xml:lang="en-GB">Excel add-in</comment>
+ <comment xml:lang="es">complemento de Excel</comment>
+ <comment xml:lang="eu">Excel gehigarria</comment>
+ <comment xml:lang="fi">Excel-lisäosa</comment>
+ <comment xml:lang="fr">complément Excel</comment>
++ <comment xml:lang="fur">zonte Excel</comment>
+ <comment xml:lang="ga">breiseán Excel</comment>
+ <comment xml:lang="gl">complemento de Excel</comment>
+ <comment xml:lang="he">תוסף של Excel</comment>
+@@ -3114,7 +3193,7 @@
+ <comment xml:lang="oc">complement Excel</comment>
+ <comment xml:lang="pl">Dodatek Excel</comment>
+ <comment xml:lang="pt">Extensão Excel</comment>
+- <comment xml:lang="pt_BR">Suplemento do Excel</comment>
++ <comment xml:lang="pt-BR">Suplemento do Excel</comment>
+ <comment xml:lang="ru">Дополнение Excel</comment>
+ <comment xml:lang="sk">Doplnok aplikácie Excel</comment>
+ <comment xml:lang="sl">Vstavek Excel</comment>
+@@ -3122,25 +3201,27 @@
+ <comment xml:lang="sv">Excel-tillägg</comment>
+ <comment xml:lang="tr">Excel eklentisi</comment>
+ <comment xml:lang="uk">додаток Excel</comment>
+- <comment xml:lang="zh_CN">Excel 外接程序</comment>
+- <comment xml:lang="zh_TW">Excel 增益集</comment>
++ <comment xml:lang="zh-CN">Excel 外接程序</comment>
++ <comment xml:lang="zh-TW">Excel 增益集</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <glob pattern="*.xlam"/>
+ <sub-class-of type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-excel.sheet.binary.macroEnabled.12">
+ <comment>Excel 2007 binary spreadsheet</comment>
++ <comment xml:lang="af">Excel 2007 binêre sigblad</comment>
+ <comment xml:lang="bg">Таблица — Excel 2007, двоична</comment>
+ <comment xml:lang="ca">full de càlcul binari d'Excel 2007</comment>
+ <comment xml:lang="cs">binární formát sešitu Excel 2007</comment>
+ <comment xml:lang="da">Binært Excel 2007-regneark</comment>
+ <comment xml:lang="de">Excel-2007-Tabelle (binär)</comment>
+ <comment xml:lang="el">Δυαδικό λογιστικό φύλλο Excel 2007</comment>
+- <comment xml:lang="en_GB">Excel 2007 binary spreadsheet</comment>
++ <comment xml:lang="en-GB">Excel 2007 binary spreadsheet</comment>
+ <comment xml:lang="es">hoja de cálculo binaria de Excel 2007</comment>
+ <comment xml:lang="eu">Excel 2007 kalkulu-orri binarioa</comment>
+ <comment xml:lang="fi">Excel 2007:n binaarinen taulukko</comment>
+ <comment xml:lang="fr">feuille de calcul binaire Excel 2007</comment>
++ <comment xml:lang="fur">sfuei di calcul binari Excel 2007</comment>
+ <comment xml:lang="ga">scarbhileog dhénártha Excel 2007</comment>
+ <comment xml:lang="gl">ficheiro binario de folla de cálculo Excel 2007</comment>
+ <comment xml:lang="he">גיליון נתונים בינרי של Excel 2007</comment>
+@@ -3158,37 +3239,39 @@
+ <comment xml:lang="oc">fuèlh de calcul binaire Excel 2007</comment>
+ <comment xml:lang="pl">Binarny arkusz Excel 2007</comment>
+ <comment xml:lang="pt">folha de cálculo binária Excel 2007</comment>
+- <comment xml:lang="pt_BR">Planilha binária do Excel 2007</comment>
++ <comment xml:lang="pt-BR">Planilha binária do Excel 2007</comment>
+ <comment xml:lang="ru">Двоичная электронная таблица Excel 2007</comment>
+ <comment xml:lang="sk">Binárny zošit Excel 2007</comment>
+ <comment xml:lang="sl">Binarna preglednica Excel 2007</comment>
+ <comment xml:lang="sr">Ексел 2007 бинарна табела</comment>
+ <comment xml:lang="sv">Binärt Excel 2007-kalkylblad</comment>
+- <comment xml:lang="tr">Excel 2007 ikilik çalışma sayfası</comment>
++ <comment xml:lang="tr">Excel 2007 ikilik hesap çizelgesi</comment>
+ <comment xml:lang="uk">бінарна електронна таблиця Excel 2007</comment>
+- <comment xml:lang="zh_CN">Excel 2007 二进制电子表格</comment>
+- <comment xml:lang="zh_TW">Excel 2007 二進位試算表</comment>
++ <comment xml:lang="zh-CN">Excel 2007 二进制电子表格</comment>
++ <comment xml:lang="zh-TW">Excel 2007 二進位試算表</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <glob pattern="*.xlsb"/>
+ <sub-class-of type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-excel.sheet.macroEnabled.12">
+ <comment>Excel spreadsheet</comment>
++ <comment xml:lang="af">Excel-sigblad</comment>
+ <comment xml:lang="ar">جدول Excel</comment>
+- <comment xml:lang="be@latin">Raźlikovy akruš Excel</comment>
++ <comment xml:lang="be-Latn">Raźlikovy akruš Excel</comment>
+ <comment xml:lang="bg">Таблица — Excel</comment>
+ <comment xml:lang="ca">full de càlcul d'Excel</comment>
+ <comment xml:lang="cs">sešit Excel</comment>
+ <comment xml:lang="da">Excelregneark</comment>
+ <comment xml:lang="de">Excel-Tabelle</comment>
+ <comment xml:lang="el">Λογιστικό φύλλο Excel</comment>
+- <comment xml:lang="en_GB">Excel spreadsheet</comment>
++ <comment xml:lang="en-GB">Excel spreadsheet</comment>
+ <comment xml:lang="eo">Excel-kalkultabelo</comment>
+ <comment xml:lang="es">hoja de cálculo de Excel</comment>
+ <comment xml:lang="eu">Excel kalkulu-orria</comment>
+ <comment xml:lang="fi">Excel-taulukko</comment>
+ <comment xml:lang="fo">Excel rokniark</comment>
+ <comment xml:lang="fr">feuille de calcul Excel</comment>
++ <comment xml:lang="fur">sfuei di calcul Excel</comment>
+ <comment xml:lang="ga">scarbhileog Excel</comment>
+ <comment xml:lang="gl">folla de cálculo de Excel</comment>
+ <comment xml:lang="he">גליון נתונים של Excel</comment>
+@@ -3209,7 +3292,7 @@
+ <comment xml:lang="oc">fuèlh de calcul Excel</comment>
+ <comment xml:lang="pl">Arkusz Excel</comment>
+ <comment xml:lang="pt">folha de cálculo Excel</comment>
+- <comment xml:lang="pt_BR">Planilha do Excel</comment>
++ <comment xml:lang="pt-BR">Planilha do Excel</comment>
+ <comment xml:lang="ro">Foaie de calcul Excel</comment>
+ <comment xml:lang="ru">Электронная таблица Excel</comment>
+ <comment xml:lang="sk">Zošit Excel</comment>
+@@ -3217,27 +3300,30 @@
+ <comment xml:lang="sq">Fletë llogaritje Excel</comment>
+ <comment xml:lang="sr">Екселова табела</comment>
+ <comment xml:lang="sv">Excel-kalkylblad</comment>
+- <comment xml:lang="tr">Excel çalışma sayfası</comment>
++ <comment xml:lang="tr">Excel hesap çizelgesi</comment>
+ <comment xml:lang="uk">ел. таблиця Excel</comment>
+ <comment xml:lang="vi">Bảng tính Excel</comment>
+- <comment xml:lang="zh_CN">Excel 电子表格</comment>
+- <comment xml:lang="zh_TW">Excel 試算表</comment>
++ <comment xml:lang="zh-CN">Excel 电子表格</comment>
++ <comment xml:lang="zh-TW">Excel 試算表</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <glob pattern="*.xlsm"/>
+ <sub-class-of type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-excel.template.macroEnabled.12">
+ <comment>Excel spreadsheet template</comment>
++ <comment xml:lang="af">Excel-sigbladsjabloon</comment>
++ <comment xml:lang="bg">Шаблон за таблица — Excel</comment>
+ <comment xml:lang="ca">plantilla de full de càlcul d'Excel</comment>
+ <comment xml:lang="cs">šablona tabulky Excel</comment>
+ <comment xml:lang="da">Excel-regnearksskabelon</comment>
+ <comment xml:lang="de">Excel-Tabellenvorlage</comment>
+ <comment xml:lang="el">Πρότυπο λογιστικού φύλλου Excel</comment>
+- <comment xml:lang="en_GB">Excel spreadsheet template</comment>
+- <comment xml:lang="es">plantilla de libro de Excel</comment>
++ <comment xml:lang="en-GB">Excel spreadsheet template</comment>
++ <comment xml:lang="es">plantilla de hoja de cálculo de Excel</comment>
+ <comment xml:lang="eu">Excel kalkulu-orri txantiloia</comment>
+ <comment xml:lang="fi">Excel-taulukkomalli</comment>
+ <comment xml:lang="fr">modèle de feuille de calcul Excel</comment>
++ <comment xml:lang="fur">model sfuei di calcul Excel</comment>
+ <comment xml:lang="ga">teimpléad scarbhileoige Excel</comment>
+ <comment xml:lang="he">תבנית גיליון נתונים של Excel</comment>
+ <comment xml:lang="hr">Predložak Excel proračunske tablice</comment>
+@@ -3249,37 +3335,40 @@
+ <comment xml:lang="ko">Excel 스프레드시트 서식</comment>
+ <comment xml:lang="oc">Modèl de fuèlh de calcul Excel</comment>
+ <comment xml:lang="pl">Szablon arkusza Excel</comment>
+- <comment xml:lang="pt">modelo de folha de cálculo Excel</comment>
+- <comment xml:lang="pt_BR">Modelo de planilha do Excel</comment>
++ <comment xml:lang="pt">predefinição da folha de cálculo Excel</comment>
++ <comment xml:lang="pt-BR">Modelo de planilha do Excel</comment>
+ <comment xml:lang="ru">Шаблон таблицы Excel</comment>
+ <comment xml:lang="sk">Šablóna tabuľky aplikácie Excel</comment>
++ <comment xml:lang="sl">Predloga preglednice Excel</comment>
+ <comment xml:lang="sr">Екселов шаблон табеле</comment>
+ <comment xml:lang="sv">Excel-kalkylarksmall</comment>
+- <comment xml:lang="tr">Excel hesap tablosu şablonu</comment>
++ <comment xml:lang="tr">Excel hesap çizelgesi şablonu</comment>
+ <comment xml:lang="uk">шаблон електронної таблиці Excel</comment>
+- <comment xml:lang="zh_CN">Excel 电子表格模板</comment>
+- <comment xml:lang="zh_TW">Excel 試算表範本</comment>
++ <comment xml:lang="zh-CN">Excel 电子表格模板</comment>
++ <comment xml:lang="zh-TW">Excel 試算表範本</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <glob pattern="*.xltm"/>
+ <sub-class-of type="application/vnd.openxmlformats-officedocument.spreadsheetml.template"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-powerpoint">
+ <comment>PowerPoint presentation</comment>
++ <comment xml:lang="af">PowerPoint-voorlegging</comment>
+ <comment xml:lang="ar">عرض تقديمي PowerPoint</comment>
+- <comment xml:lang="be@latin">Prezentacyja PowerPoint</comment>
++ <comment xml:lang="be-Latn">Prezentacyja PowerPoint</comment>
+ <comment xml:lang="bg">Презентация — PowerPoint</comment>
+ <comment xml:lang="ca">presentació de PowerPoint</comment>
+ <comment xml:lang="cs">prezentace PowerPoint</comment>
+ <comment xml:lang="da">PowerPoint-præsentation</comment>
+ <comment xml:lang="de">PowerPoint-Präsentation</comment>
+ <comment xml:lang="el">Παρουσίαση PowerPoint</comment>
+- <comment xml:lang="en_GB">PowerPoint presentation</comment>
++ <comment xml:lang="en-GB">PowerPoint presentation</comment>
+ <comment xml:lang="eo">PowerPoint-prezentaĵo</comment>
+ <comment xml:lang="es">presentación de PowerPoint</comment>
+ <comment xml:lang="eu">PowerPoint aurkezpena</comment>
+ <comment xml:lang="fi">PowerPoint-esitys</comment>
+ <comment xml:lang="fo">PowerPoint framløga</comment>
+ <comment xml:lang="fr">présentation PowerPoint</comment>
++ <comment xml:lang="fur">presentazion PowerPoint</comment>
+ <comment xml:lang="ga">láithreoireacht PowerPoint</comment>
+ <comment xml:lang="gl">presentación de PowerPoint</comment>
+ <comment xml:lang="he">מצגת PowerPoint</comment>
+@@ -3299,7 +3388,7 @@
+ <comment xml:lang="oc">presentacion PowerPoint</comment>
+ <comment xml:lang="pl">Prezentacja PowerPoint</comment>
+ <comment xml:lang="pt">apresentação PowerPoint</comment>
+- <comment xml:lang="pt_BR">Apresentação do PowerPoint</comment>
++ <comment xml:lang="pt-BR">Apresentação do PowerPoint</comment>
+ <comment xml:lang="ro">Prezentare PowerPoint</comment>
+ <comment xml:lang="ru">Презентация PowerPoint</comment>
+ <comment xml:lang="sk">Prezentácia PowerPoint</comment>
+@@ -3310,8 +3399,8 @@
+ <comment xml:lang="tr">PowerPoint sunumu</comment>
+ <comment xml:lang="uk">презентація PowerPoint</comment>
+ <comment xml:lang="vi">Trình diễn PowerPoint</comment>
+- <comment xml:lang="zh_CN">PowerPoint 演示文稿</comment>
+- <comment xml:lang="zh_TW">PowerPoint 簡報</comment>
++ <comment xml:lang="zh-CN">PowerPoint 演示文稿</comment>
++ <comment xml:lang="zh-TW">PowerPoint 簡報</comment>
+ <generic-icon name="x-office-presentation"/>
+ <glob pattern="*.ppz"/>
+ <glob pattern="*.ppt"/>
+@@ -3323,17 +3412,19 @@
+ </mime-type>
+ <mime-type type="application/vnd.ms-powerpoint.addin.macroEnabled.12">
+ <comment>PowerPoint add-in</comment>
++ <comment xml:lang="af">PowerPoint-byvoeging</comment>
+ <comment xml:lang="bg">Приставка — PowerPoint</comment>
+ <comment xml:lang="ca">complement de PowerPoint</comment>
+ <comment xml:lang="cs">doplněk PowerPoint</comment>
+ <comment xml:lang="da">PowerPoint-tilføjelse</comment>
+ <comment xml:lang="de">PowerPoint Add-in</comment>
+ <comment xml:lang="el">Πρόσθετο PowerPoint</comment>
+- <comment xml:lang="en_GB">PowerPoint add-in</comment>
++ <comment xml:lang="en-GB">PowerPoint add-in</comment>
+ <comment xml:lang="es">complemento de PowerPoint</comment>
+ <comment xml:lang="eu">PowerPoint gehigarria</comment>
+ <comment xml:lang="fi">PowerPoint-lisäosa</comment>
+ <comment xml:lang="fr">complément PowerPoint</comment>
++ <comment xml:lang="fur">zonte PowerPoint</comment>
+ <comment xml:lang="ga">breiseán PowerPoint</comment>
+ <comment xml:lang="gl">complemento de PowerPoint</comment>
+ <comment xml:lang="he">תוסף של PowerPoint</comment>
+@@ -3351,7 +3442,7 @@
+ <comment xml:lang="oc">complement PowerPoint</comment>
+ <comment xml:lang="pl">Dodatek PowerPoint</comment>
+ <comment xml:lang="pt">extensão PowerPoint</comment>
+- <comment xml:lang="pt_BR">Suplemento do PowerPoint</comment>
++ <comment xml:lang="pt-BR">Suplemento do PowerPoint</comment>
+ <comment xml:lang="ru">Дополнение PowerPoint</comment>
+ <comment xml:lang="sk">Doplnok aplikácie PowerPoint </comment>
+ <comment xml:lang="sl">Vstavek PowerPoint</comment>
+@@ -3359,28 +3450,30 @@
+ <comment xml:lang="sv">PowerPoint-tillägg</comment>
+ <comment xml:lang="tr">PowerPoint eklentisi</comment>
+ <comment xml:lang="uk">додаток PowerPoint</comment>
+- <comment xml:lang="zh_CN">PowerPoint 外接程序</comment>
+- <comment xml:lang="zh_TW">PowerPoint 增益集</comment>
++ <comment xml:lang="zh-CN">PowerPoint 外接程序</comment>
++ <comment xml:lang="zh-TW">PowerPoint 增益集</comment>
+ <generic-icon name="x-office-presentation"/>
+ <glob pattern="*.ppam"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-powerpoint.presentation.macroEnabled.12">
+ <comment>PowerPoint presentation</comment>
++ <comment xml:lang="af">PowerPoint-voorlegging</comment>
+ <comment xml:lang="ar">عرض تقديمي PowerPoint</comment>
+- <comment xml:lang="be@latin">Prezentacyja PowerPoint</comment>
++ <comment xml:lang="be-Latn">Prezentacyja PowerPoint</comment>
+ <comment xml:lang="bg">Презентация — PowerPoint</comment>
+ <comment xml:lang="ca">presentació de PowerPoint</comment>
+ <comment xml:lang="cs">prezentace PowerPoint</comment>
+ <comment xml:lang="da">PowerPoint-præsentation</comment>
+ <comment xml:lang="de">PowerPoint-Präsentation</comment>
+ <comment xml:lang="el">Παρουσίαση PowerPoint</comment>
+- <comment xml:lang="en_GB">PowerPoint presentation</comment>
++ <comment xml:lang="en-GB">PowerPoint presentation</comment>
+ <comment xml:lang="eo">PowerPoint-prezentaĵo</comment>
+ <comment xml:lang="es">presentación de PowerPoint</comment>
+ <comment xml:lang="eu">PowerPoint aurkezpena</comment>
+ <comment xml:lang="fi">PowerPoint-esitys</comment>
+ <comment xml:lang="fo">PowerPoint framløga</comment>
+ <comment xml:lang="fr">présentation PowerPoint</comment>
++ <comment xml:lang="fur">presentazion PowerPoint</comment>
+ <comment xml:lang="ga">láithreoireacht PowerPoint</comment>
+ <comment xml:lang="gl">presentación de PowerPoint</comment>
+ <comment xml:lang="he">מצגת PowerPoint</comment>
+@@ -3400,7 +3493,7 @@
+ <comment xml:lang="oc">presentacion PowerPoint</comment>
+ <comment xml:lang="pl">Prezentacja PowerPoint</comment>
+ <comment xml:lang="pt">apresentação PowerPoint</comment>
+- <comment xml:lang="pt_BR">Apresentação do PowerPoint</comment>
++ <comment xml:lang="pt-BR">Apresentação do PowerPoint</comment>
+ <comment xml:lang="ro">Prezentare PowerPoint</comment>
+ <comment xml:lang="ru">Презентация PowerPoint</comment>
+ <comment xml:lang="sk">Prezentácia PowerPoint</comment>
+@@ -3411,25 +3504,28 @@
+ <comment xml:lang="tr">PowerPoint sunumu</comment>
+ <comment xml:lang="uk">презентація PowerPoint</comment>
+ <comment xml:lang="vi">Trình diễn PowerPoint</comment>
+- <comment xml:lang="zh_CN">PowerPoint 演示文稿</comment>
+- <comment xml:lang="zh_TW">PowerPoint 簡報</comment>
++ <comment xml:lang="zh-CN">PowerPoint 演示文稿</comment>
++ <comment xml:lang="zh-TW">PowerPoint 簡報</comment>
+ <generic-icon name="x-office-presentation"/>
+ <glob pattern="*.pptm"/>
+ <sub-class-of type="application/vnd.openxmlformats-officedocument.presentationml.presentation"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-powerpoint.slide.macroEnabled.12">
+ <comment>PowerPoint slide</comment>
++ <comment xml:lang="af">PowerPoint-skyfie</comment>
+ <comment xml:lang="ast">Diapositiva de PowerPoint</comment>
++ <comment xml:lang="bg">Кадър — PowerPoint</comment>
+ <comment xml:lang="ca">dispositiva de PowerPoint</comment>
+ <comment xml:lang="cs">promítání PowerPoint</comment>
+ <comment xml:lang="da">PowerPoint-dias</comment>
+ <comment xml:lang="de">PowerPoint-Folie</comment>
+ <comment xml:lang="el">Διαφάνεια PowerPoint</comment>
+- <comment xml:lang="en_GB">PowerPoint slide</comment>
++ <comment xml:lang="en-GB">PowerPoint slide</comment>
+ <comment xml:lang="es">diapositiva de PowerPoint</comment>
+ <comment xml:lang="eu">PowerPoint diapositiba</comment>
+ <comment xml:lang="fi">PowerPoint-dia</comment>
+ <comment xml:lang="fr">diapositive PowerPoint</comment>
++ <comment xml:lang="fur">diapositive PowerPoint</comment>
+ <comment xml:lang="ga">sleamhnán PowerPoint</comment>
+ <comment xml:lang="he">שקופית של PowerPoint</comment>
+ <comment xml:lang="hr">PowerPoint prezentacija</comment>
+@@ -3438,40 +3534,43 @@
+ <comment xml:lang="id">Salindia PowerPoint</comment>
+ <comment xml:lang="it">Diapositiva PowerPoint</comment>
+ <comment xml:lang="kk">PowerPoint слайды</comment>
+- <comment xml:lang="ko">파워포인트 슬라이드</comment>
++ <comment xml:lang="ko">PowerPoint 슬라이드</comment>
+ <comment xml:lang="oc">Diapositiva PowerPoint</comment>
+ <comment xml:lang="pl">Slajd PowerPoint</comment>
+ <comment xml:lang="pt">diapositivo PowerPoint</comment>
+- <comment xml:lang="pt_BR">Slide do PowerPoint</comment>
++ <comment xml:lang="pt-BR">Slide do PowerPoint</comment>
+ <comment xml:lang="ru">Слайд PowerPoint</comment>
+ <comment xml:lang="sk">Snímka aplikácie PowerPoint</comment>
++ <comment xml:lang="sl">Prosojnica PowerPoint</comment>
+ <comment xml:lang="sr">Пауер поинт слајд</comment>
+ <comment xml:lang="sv">PowerPoint-bildspel</comment>
+ <comment xml:lang="tr">PowerPoint sunusu</comment>
+ <comment xml:lang="uk">слайд PowerPoint</comment>
+- <comment xml:lang="zh_CN">PowerPoint 幻灯片</comment>
+- <comment xml:lang="zh_TW">PowerPoint 投影片</comment>
++ <comment xml:lang="zh-CN">PowerPoint 幻灯片</comment>
++ <comment xml:lang="zh-TW">PowerPoint 投影片</comment>
+ <generic-icon name="x-office-presentation"/>
+ <glob pattern="*.sldm"/>
+ <sub-class-of type="application/vnd.openxmlformats-officedocument.presentationml.slide"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-powerpoint.slideshow.macroEnabled.12">
+ <comment>PowerPoint presentation</comment>
++ <comment xml:lang="af">PowerPoint-voorlegging</comment>
+ <comment xml:lang="ar">عرض تقديمي PowerPoint</comment>
+- <comment xml:lang="be@latin">Prezentacyja PowerPoint</comment>
++ <comment xml:lang="be-Latn">Prezentacyja PowerPoint</comment>
+ <comment xml:lang="bg">Презентация — PowerPoint</comment>
+ <comment xml:lang="ca">presentació de PowerPoint</comment>
+ <comment xml:lang="cs">prezentace PowerPoint</comment>
+ <comment xml:lang="da">PowerPoint-præsentation</comment>
+ <comment xml:lang="de">PowerPoint-Präsentation</comment>
+ <comment xml:lang="el">Παρουσίαση PowerPoint</comment>
+- <comment xml:lang="en_GB">PowerPoint presentation</comment>
++ <comment xml:lang="en-GB">PowerPoint presentation</comment>
+ <comment xml:lang="eo">PowerPoint-prezentaĵo</comment>
+ <comment xml:lang="es">presentación de PowerPoint</comment>
+ <comment xml:lang="eu">PowerPoint aurkezpena</comment>
+ <comment xml:lang="fi">PowerPoint-esitys</comment>
+ <comment xml:lang="fo">PowerPoint framløga</comment>
+ <comment xml:lang="fr">présentation PowerPoint</comment>
++ <comment xml:lang="fur">presentazion PowerPoint</comment>
+ <comment xml:lang="ga">láithreoireacht PowerPoint</comment>
+ <comment xml:lang="gl">presentación de PowerPoint</comment>
+ <comment xml:lang="he">מצגת PowerPoint</comment>
+@@ -3491,7 +3590,7 @@
+ <comment xml:lang="oc">presentacion PowerPoint</comment>
+ <comment xml:lang="pl">Prezentacja PowerPoint</comment>
+ <comment xml:lang="pt">apresentação PowerPoint</comment>
+- <comment xml:lang="pt_BR">Apresentação do PowerPoint</comment>
++ <comment xml:lang="pt-BR">Apresentação do PowerPoint</comment>
+ <comment xml:lang="ro">Prezentare PowerPoint</comment>
+ <comment xml:lang="ru">Презентация PowerPoint</comment>
+ <comment xml:lang="sk">Prezentácia PowerPoint</comment>
+@@ -3502,25 +3601,28 @@
+ <comment xml:lang="tr">PowerPoint sunumu</comment>
+ <comment xml:lang="uk">презентація PowerPoint</comment>
+ <comment xml:lang="vi">Trình diễn PowerPoint</comment>
+- <comment xml:lang="zh_CN">PowerPoint 演示文稿</comment>
+- <comment xml:lang="zh_TW">PowerPoint 簡報</comment>
++ <comment xml:lang="zh-CN">PowerPoint 演示文稿</comment>
++ <comment xml:lang="zh-TW">PowerPoint 簡報</comment>
+ <generic-icon name="x-office-presentation"/>
+ <glob pattern="*.ppsm"/>
+ <sub-class-of type="application/vnd.openxmlformats-officedocument.presentationml.slideshow"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-powerpoint.template.macroEnabled.12">
+ <comment>PowerPoint presentation template</comment>
++ <comment xml:lang="af">PowerPoint-voorleggingsjabloon</comment>
+ <comment xml:lang="ast">Plantía de presentaciones de PowerPoint</comment>
++ <comment xml:lang="bg">Шаблон за презентация — PowerPoint</comment>
+ <comment xml:lang="ca">plantilla de presentació de PowerPoint</comment>
+ <comment xml:lang="cs">šablona prezentace PowerPoint</comment>
+ <comment xml:lang="da">PowerPoint-præsentationsskabelon</comment>
+ <comment xml:lang="de">PowerPoint-Präsentationsvorlage</comment>
+ <comment xml:lang="el">Πρότυπο παρουσίασης PowerPoint</comment>
+- <comment xml:lang="en_GB">PowerPoint presentation template</comment>
++ <comment xml:lang="en-GB">PowerPoint presentation template</comment>
+ <comment xml:lang="es">plantilla de presentación de PowerPoint</comment>
+ <comment xml:lang="eu">PowerPoint aurkezpen txantiloia</comment>
+ <comment xml:lang="fi">PowerPoint-esitysmalli</comment>
+ <comment xml:lang="fr">modèle de présentation PowerPoint</comment>
++ <comment xml:lang="fur">model di presentazion PowerPoint</comment>
+ <comment xml:lang="ga">teimpléad láithreoireachta PowerPoint</comment>
+ <comment xml:lang="he">תבנית מצגת PowerPoint</comment>
+ <comment xml:lang="hr">Predložak PowerPoint prezentacije</comment>
+@@ -3529,255 +3631,230 @@
+ <comment xml:lang="id">Templat presentasi PowerPoint</comment>
+ <comment xml:lang="it">Modello presentazione PowerPoint</comment>
+ <comment xml:lang="kk">PowerPoint презентация үлгісі</comment>
+- <comment xml:lang="ko">PowerPoint 프리젠테이션 서식</comment>
++ <comment xml:lang="ko">PowerPoint 프레젠테이션 서식</comment>
+ <comment xml:lang="oc">Modèl de presentacion PowerPoint</comment>
+ <comment xml:lang="pl">Szablon prezentacji PowerPoint</comment>
+- <comment xml:lang="pt">modelo de apresentação PowerPoint</comment>
+- <comment xml:lang="pt_BR">Modelo de apresentação do PowerPoint</comment>
++ <comment xml:lang="pt">predefinição de apresentação PowerPoint</comment>
++ <comment xml:lang="pt-BR">Modelo de apresentação do PowerPoint</comment>
+ <comment xml:lang="ru">Шаблон презентации PowerPoint</comment>
+ <comment xml:lang="sk">Šablóna prezentácie aplikácie PowerPoint</comment>
++ <comment xml:lang="sl">Predloga predstavitve PowerPoint</comment>
+ <comment xml:lang="sr">Шаблон презентације Пауер поинта</comment>
+ <comment xml:lang="sv">PowerPoint-presentationsmall</comment>
+ <comment xml:lang="tr">PowerPoint sunum şablonu</comment>
+ <comment xml:lang="uk">шаблон презентації PowerPoint</comment>
+- <comment xml:lang="zh_CN">PowerPoint 演示文稿模板</comment>
+- <comment xml:lang="zh_TW">PowerPoint 簡報範本</comment>
++ <comment xml:lang="zh-CN">PowerPoint 演示文稿模板</comment>
++ <comment xml:lang="zh-TW">PowerPoint 簡報範本</comment>
+ <generic-icon name="x-office-presentation"/>
+ <glob pattern="*.potm"/>
+ <sub-class-of type="application/vnd.openxmlformats-officedocument.presentationml.template"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-visio.drawing.main+xml">
+- <comment>Office Open XML Visio Drawing</comment>
++ <comment>Office Open XML Visio drawing</comment>
++ <comment xml:lang="bg">Чертеж — Office Open XML Visio</comment>
+ <comment xml:lang="ca">dibuix en Office Open XML de Visio</comment>
+- <comment xml:lang="cs">kresba Office Open XML Visio</comment>
+ <comment xml:lang="da">Office Open XML Visio-tegning</comment>
+ <comment xml:lang="de">Office-Open-XML-Visio-Zeichnung</comment>
+- <comment xml:lang="el">Σχέδιο Office Open XML Visio</comment>
+- <comment xml:lang="en_GB">Office Open XML Visio Drawing</comment>
+- <comment xml:lang="es">dibujo en OOXML de Visio</comment>
++ <comment xml:lang="en-GB">Office Open XML Visio drawing</comment>
++ <comment xml:lang="es">dibujo Office Open XML de Visio</comment>
+ <comment xml:lang="eu">Office Open XML Visio marrazkia</comment>
+ <comment xml:lang="fi">Office Open XML Visio -piirros</comment>
+ <comment xml:lang="fr">dessin Visio Office Open XML</comment>
+- <comment xml:lang="ga">Líníocht Office Open XML Visio</comment>
+- <comment xml:lang="he">ציור Visio ב־Open XML מבית Office</comment>
+ <comment xml:lang="hr">Office Open XML Visio crtež</comment>
+ <comment xml:lang="hu">Office Open XML Visio rajz</comment>
+- <comment xml:lang="ia">Designo Office Open XML Visio</comment>
+- <comment xml:lang="id">Gambar Visio Office Open XML</comment>
++ <comment xml:lang="id">Gambar Office Open XML Visio</comment>
+ <comment xml:lang="it">Disegno Visio Office Open XML</comment>
+ <comment xml:lang="kk">Office Open XML Visio суреті</comment>
+ <comment xml:lang="ko">오피스 오픈 XML 비지오 드로잉</comment>
+ <comment xml:lang="pl">Rysunek Office Open XML Visio</comment>
+- <comment xml:lang="pt">desenho Office Open XML Visio</comment>
+- <comment xml:lang="pt_BR">Desenho do Visio em Office Open XML</comment>
++ <comment xml:lang="pt">desenho Visio do Open Office XML</comment>
++ <comment xml:lang="pt-BR">Desenho do Office Open XML Visio</comment>
+ <comment xml:lang="ru">Рисунок Visio формата Office Open XML</comment>
+- <comment xml:lang="sk">Kresba aplikácie Visio Office Open XML</comment>
+- <comment xml:lang="sr">Офисов отворени ИксМЛ Визио цртеж</comment>
+- <comment xml:lang="sv">Office Open XML Visio-teckning</comment>
+- <comment xml:lang="tr">Office Open XML Visio Çizimi</comment>
+- <comment xml:lang="uk">схема VIisio у форматі Office Open XML</comment>
+- <comment xml:lang="zh_CN">Office Open XML Visio 绘图</comment>
+- <comment xml:lang="zh_TW">Office Open XML Visio 繪圖</comment>
++ <comment xml:lang="sk">Kresba aplikácie Office Open XML Visio</comment>
++ <comment xml:lang="sl">Risba Office Open XML Visio</comment>
++ <comment xml:lang="sv">Office Open XML Visio-ritning</comment>
++ <comment xml:lang="tr">Office Open XML Visio çizimi</comment>
++ <comment xml:lang="uk">малюнок Visio Office Open у XML</comment>
++ <comment xml:lang="zh-CN">Office Open XML Visio 绘图</comment>
++ <comment xml:lang="zh-TW">Office Open XML Visio 繪圖</comment>
+ <generic-icon name="image-x-generic"/>
+ <glob pattern="*.vsdx"/>
+ <sub-class-of type="application/zip"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-visio.template.main+xml">
+- <comment>Office Open XML Visio Template</comment>
++ <comment>Office Open XML Visio template</comment>
++ <comment xml:lang="bg">Шаблон за чертеж — Office Open XML Visio</comment>
+ <comment xml:lang="ca">plantilla en Office Open XML de Visio</comment>
+- <comment xml:lang="cs">šablona Office Open XML Visio</comment>
+ <comment xml:lang="da">Office Open XML Visio-skabelon</comment>
+ <comment xml:lang="de">Office-Open-XML-Visio-Vorlage</comment>
+- <comment xml:lang="el">Πρότυπο Office Open XML Visio</comment>
+- <comment xml:lang="en_GB">Office Open XML Visio Template</comment>
+- <comment xml:lang="es">plantilla en OOXML de Visio</comment>
++ <comment xml:lang="en-GB">Office Open XML Visio template</comment>
++ <comment xml:lang="es">plantilla Office Open XML de Visio</comment>
+ <comment xml:lang="eu">Office Open XML Visio txantiloia</comment>
+ <comment xml:lang="fi">Office Open XML Visio -malli</comment>
+ <comment xml:lang="fr">modèle Visio Office Open XML</comment>
+- <comment xml:lang="ga">Teimpléad Office Open XML Visio</comment>
+- <comment xml:lang="he">תבנית Visio ב־Open XML מבית Office</comment>
+- <comment xml:lang="hr">Predložak Office Open XML Visio</comment>
++ <comment xml:lang="hr">Office Open XML Visio predložak</comment>
+ <comment xml:lang="hu">Office Open XML Visio sablon</comment>
+- <comment xml:lang="ia">Patrono Office Open XML Visio</comment>
+- <comment xml:lang="id">Templat Visio Office Open XML</comment>
++ <comment xml:lang="id">Templat Office Open XML Visio</comment>
+ <comment xml:lang="it">Modello Visio Office Open XML</comment>
+ <comment xml:lang="kk">Office Open XML Visio үлгісі</comment>
+- <comment xml:lang="ko">오피스 오픈 XML 비지오 서식</comment>
++ <comment xml:lang="ko">오피스 오픈 XML 비지오 양식</comment>
+ <comment xml:lang="pl">Szablon Office Open XML Visio</comment>
+- <comment xml:lang="pt">modelo Office Open XML Visio</comment>
+- <comment xml:lang="pt_BR">Modelo do Visio em Office Open XML</comment>
++ <comment xml:lang="pt">predefinição Visio do Open Office XML</comment>
++ <comment xml:lang="pt-BR">Modelo Office Open XML Visio</comment>
+ <comment xml:lang="ru">Шаблон Visio формата Office Open XML</comment>
+- <comment xml:lang="sk">Šablóna aplikácie Visio Office Open XML</comment>
+- <comment xml:lang="sr">Офисов отворени ИксМЛ Визио шаблон</comment>
++ <comment xml:lang="sk">Šablóna aplikácie Office Open XML Visio</comment>
++ <comment xml:lang="sl">Predloga Office Open XML Visio</comment>
+ <comment xml:lang="sv">Office Open XML Visio-mall</comment>
+- <comment xml:lang="tr">Office Open XML Visio Şablonu</comment>
+- <comment xml:lang="uk">шаблон Visio у форматі Office Open XML</comment>
+- <comment xml:lang="zh_CN">Office Open XML Visio 模板</comment>
+- <comment xml:lang="zh_TW">Office Open XML Visio 範本</comment>
++ <comment xml:lang="tr">Office Open XML Visio şablonu</comment>
++ <comment xml:lang="uk">шаблон Visio Office Open у XML</comment>
++ <comment xml:lang="zh-CN">Office Open XML Visio 模板</comment>
++ <comment xml:lang="zh-TW">Office Open XML Visio 範本</comment>
+ <generic-icon name="image-x-generic"/>
+ <glob pattern="*.vstx"/>
+ <sub-class-of type="application/zip"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-visio.stencil.main+xml">
+- <comment>Office Open XML Visio Stencil</comment>
++ <comment>Office Open XML Visio stencil</comment>
++ <comment xml:lang="bg">Образци — Office Open XML Visio</comment>
+ <comment xml:lang="ca">patró en Office Open XML de Visio</comment>
+- <comment xml:lang="cs">objekty Office Open XML Visio</comment>
+ <comment xml:lang="da">Office Open XML Visio-stencil</comment>
+ <comment xml:lang="de">Office-Open-XML-Visio-Schablone</comment>
+- <comment xml:lang="en_GB">Office Open XML Visio Stencil</comment>
+- <comment xml:lang="es">esténcil en OOXML de Visio</comment>
++ <comment xml:lang="en-GB">Office Open XML Visio stencil</comment>
++ <comment xml:lang="es">galería de símbolos Office Open XML de Visio</comment>
+ <comment xml:lang="eu">Office Open XML Visio txantiloia</comment>
+- <comment xml:lang="fi">Office Open XML Visio -kaavio</comment>
++ <comment xml:lang="fi">Office Open XML Visio -malli</comment>
+ <comment xml:lang="fr">stencil Visio Office Open XML</comment>
+- <comment xml:lang="ga">Stionsal Office Open XML Visio</comment>
+- <comment xml:lang="he">דגם ל־Visio ב־Open XML מבית Office</comment>
+ <comment xml:lang="hr">Office Open XML Visio šablona</comment>
+ <comment xml:lang="hu">Office Open XML Visio stencil</comment>
+- <comment xml:lang="ia">Stencil Office Open XML Visio</comment>
+- <comment xml:lang="id">Stensil Visio Office Open XML</comment>
++ <comment xml:lang="id">Stensil Office Open XML Visio</comment>
+ <comment xml:lang="it">Stencil Visio Office Open XML</comment>
+- <comment xml:lang="kk">Office Open XML пішімінің Visio трафареті</comment>
++ <comment xml:lang="kk">Office Open XML Visio трафареті</comment>
+ <comment xml:lang="ko">오피스 오픈 XML 비지오 스텐실</comment>
+ <comment xml:lang="pl">Wzór Office Open XML Visio</comment>
+- <comment xml:lang="pt">Stencil Office Open XML Visio</comment>
+- <comment xml:lang="pt_BR">Estêncil do Visio em Office Open XML</comment>
++ <comment xml:lang="pt">estêncil Visio do Open Office XML</comment>
++ <comment xml:lang="pt-BR">Estêncil do Office Open XML Visio</comment>
+ <comment xml:lang="ru">Трафарет Visio формата Office Open XML</comment>
+- <comment xml:lang="sk">Objekt aplikácie Visio Office Open XML</comment>
+- <comment xml:lang="sr">Офисов отворени ИксМЛ Визио шаблон</comment>
+ <comment xml:lang="sv">Office Open XML Visio-stencil</comment>
+- <comment xml:lang="tr">Office Open XML Visio Kalıbı</comment>
+- <comment xml:lang="uk">трафарет Visio у форматі Office Open XML</comment>
+- <comment xml:lang="zh_CN">Office Open XML Visio 模具</comment>
+- <comment xml:lang="zh_TW">Office Open XML Visio 圖形樣本</comment>
++ <comment xml:lang="tr">Office Open XML Visio kalıbı</comment>
++ <comment xml:lang="uk">трафарет Visio Office Open у XML</comment>
++ <comment xml:lang="zh-CN">Office Open XML Visio 模具</comment>
+ <generic-icon name="image-x-generic"/>
+ <glob pattern="*.vssx"/>
+ <sub-class-of type="application/zip"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-visio.drawing.macroEnabled.main+xml">
+- <comment>Office Open XML Visio Drawing</comment>
++ <comment>Office Open XML Visio drawing</comment>
++ <comment xml:lang="bg">Чертеж — Office Open XML Visio</comment>
+ <comment xml:lang="ca">dibuix en Office Open XML de Visio</comment>
+- <comment xml:lang="cs">kresba Office Open XML Visio</comment>
+ <comment xml:lang="da">Office Open XML Visio-tegning</comment>
+ <comment xml:lang="de">Office-Open-XML-Visio-Zeichnung</comment>
+- <comment xml:lang="el">Σχέδιο Office Open XML Visio</comment>
+- <comment xml:lang="en_GB">Office Open XML Visio Drawing</comment>
+- <comment xml:lang="es">dibujo en OOXML de Visio</comment>
++ <comment xml:lang="en-GB">Office Open XML Visio drawing</comment>
++ <comment xml:lang="es">dibujo Office Open XML de Visio</comment>
+ <comment xml:lang="eu">Office Open XML Visio marrazkia</comment>
+ <comment xml:lang="fi">Office Open XML Visio -piirros</comment>
+ <comment xml:lang="fr">dessin Visio Office Open XML</comment>
+- <comment xml:lang="ga">Líníocht Office Open XML Visio</comment>
+- <comment xml:lang="he">ציור Visio ב־Open XML מבית Office</comment>
+ <comment xml:lang="hr">Office Open XML Visio crtež</comment>
+ <comment xml:lang="hu">Office Open XML Visio rajz</comment>
+- <comment xml:lang="ia">Designo Office Open XML Visio</comment>
+- <comment xml:lang="id">Gambar Visio Office Open XML</comment>
++ <comment xml:lang="id">Gambar Office Open XML Visio</comment>
+ <comment xml:lang="it">Disegno Visio Office Open XML</comment>
+ <comment xml:lang="kk">Office Open XML Visio суреті</comment>
+ <comment xml:lang="ko">오피스 오픈 XML 비지오 드로잉</comment>
+ <comment xml:lang="pl">Rysunek Office Open XML Visio</comment>
+- <comment xml:lang="pt">desenho Office Open XML Visio</comment>
+- <comment xml:lang="pt_BR">Desenho do Visio em Office Open XML</comment>
++ <comment xml:lang="pt">desenho Visio do Open Office XML</comment>
++ <comment xml:lang="pt-BR">Desenho do Office Open XML Visio</comment>
+ <comment xml:lang="ru">Рисунок Visio формата Office Open XML</comment>
+- <comment xml:lang="sk">Kresba aplikácie Visio Office Open XML</comment>
+- <comment xml:lang="sr">Офисов отворени ИксМЛ Визио цртеж</comment>
+- <comment xml:lang="sv">Office Open XML Visio-teckning</comment>
+- <comment xml:lang="tr">Office Open XML Visio Çizimi</comment>
+- <comment xml:lang="uk">схема VIisio у форматі Office Open XML</comment>
+- <comment xml:lang="zh_CN">Office Open XML Visio 绘图</comment>
+- <comment xml:lang="zh_TW">Office Open XML Visio 繪圖</comment>
++ <comment xml:lang="sk">Kresba aplikácie Office Open XML Visio</comment>
++ <comment xml:lang="sl">Risba Office Open XML Visio</comment>
++ <comment xml:lang="sv">Office Open XML Visio-ritning</comment>
++ <comment xml:lang="tr">Office Open XML Visio çizimi</comment>
++ <comment xml:lang="uk">малюнок Visio Office Open у XML</comment>
++ <comment xml:lang="zh-CN">Office Open XML Visio 绘图</comment>
++ <comment xml:lang="zh-TW">Office Open XML Visio 繪圖</comment>
+ <generic-icon name="image-x-generic"/>
+ <glob pattern="*.vsdm"/>
+ <sub-class-of type="application/zip"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-visio.template.macroEnabled.main+xml">
+- <comment>Office Open XML Visio Template</comment>
++ <comment>Office Open XML Visio template</comment>
++ <comment xml:lang="bg">Шаблон за чертеж — Office Open XML Visio</comment>
+ <comment xml:lang="ca">plantilla en Office Open XML de Visio</comment>
+- <comment xml:lang="cs">šablona Office Open XML Visio</comment>
+ <comment xml:lang="da">Office Open XML Visio-skabelon</comment>
+ <comment xml:lang="de">Office-Open-XML-Visio-Vorlage</comment>
+- <comment xml:lang="el">Πρότυπο Office Open XML Visio</comment>
+- <comment xml:lang="en_GB">Office Open XML Visio Template</comment>
+- <comment xml:lang="es">plantilla en OOXML de Visio</comment>
++ <comment xml:lang="en-GB">Office Open XML Visio template</comment>
++ <comment xml:lang="es">plantilla Office Open XML de Visio</comment>
+ <comment xml:lang="eu">Office Open XML Visio txantiloia</comment>
+ <comment xml:lang="fi">Office Open XML Visio -malli</comment>
+ <comment xml:lang="fr">modèle Visio Office Open XML</comment>
+- <comment xml:lang="ga">Teimpléad Office Open XML Visio</comment>
+- <comment xml:lang="he">תבנית Visio ב־Open XML מבית Office</comment>
+- <comment xml:lang="hr">Predložak Office Open XML Visio</comment>
++ <comment xml:lang="hr">Office Open XML Visio predložak</comment>
+ <comment xml:lang="hu">Office Open XML Visio sablon</comment>
+- <comment xml:lang="ia">Patrono Office Open XML Visio</comment>
+- <comment xml:lang="id">Templat Visio Office Open XML</comment>
++ <comment xml:lang="id">Templat Office Open XML Visio</comment>
+ <comment xml:lang="it">Modello Visio Office Open XML</comment>
+ <comment xml:lang="kk">Office Open XML Visio үлгісі</comment>
+- <comment xml:lang="ko">오피스 오픈 XML 비지오 서식</comment>
++ <comment xml:lang="ko">오피스 오픈 XML 비지오 양식</comment>
+ <comment xml:lang="pl">Szablon Office Open XML Visio</comment>
+- <comment xml:lang="pt">modelo Office Open XML Visio</comment>
+- <comment xml:lang="pt_BR">Modelo do Visio em Office Open XML</comment>
++ <comment xml:lang="pt">predefinição Visio do Open Office XML</comment>
++ <comment xml:lang="pt-BR">Modelo Office Open XML Visio</comment>
+ <comment xml:lang="ru">Шаблон Visio формата Office Open XML</comment>
+- <comment xml:lang="sk">Šablóna aplikácie Visio Office Open XML</comment>
+- <comment xml:lang="sr">Офисов отворени ИксМЛ Визио шаблон</comment>
++ <comment xml:lang="sk">Šablóna aplikácie Office Open XML Visio</comment>
++ <comment xml:lang="sl">Predloga Office Open XML Visio</comment>
+ <comment xml:lang="sv">Office Open XML Visio-mall</comment>
+- <comment xml:lang="tr">Office Open XML Visio Şablonu</comment>
+- <comment xml:lang="uk">шаблон Visio у форматі Office Open XML</comment>
+- <comment xml:lang="zh_CN">Office Open XML Visio 模板</comment>
+- <comment xml:lang="zh_TW">Office Open XML Visio 範本</comment>
++ <comment xml:lang="tr">Office Open XML Visio şablonu</comment>
++ <comment xml:lang="uk">шаблон Visio Office Open у XML</comment>
++ <comment xml:lang="zh-CN">Office Open XML Visio 模板</comment>
++ <comment xml:lang="zh-TW">Office Open XML Visio 範本</comment>
+ <generic-icon name="image-x-generic"/>
+ <glob pattern="*.vstm"/>
+ <sub-class-of type="application/zip"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-visio.stencil.macroEnabled.main+xml">
+- <comment>Office Open XML Visio Stencil</comment>
++ <comment>Office Open XML Visio stencil</comment>
++ <comment xml:lang="bg">Образци — Office Open XML Visio</comment>
+ <comment xml:lang="ca">patró en Office Open XML de Visio</comment>
+- <comment xml:lang="cs">objekty Office Open XML Visio</comment>
+ <comment xml:lang="da">Office Open XML Visio-stencil</comment>
+ <comment xml:lang="de">Office-Open-XML-Visio-Schablone</comment>
+- <comment xml:lang="en_GB">Office Open XML Visio Stencil</comment>
+- <comment xml:lang="es">esténcil en OOXML de Visio</comment>
++ <comment xml:lang="en-GB">Office Open XML Visio stencil</comment>
++ <comment xml:lang="es">galería de símbolos Office Open XML de Visio</comment>
+ <comment xml:lang="eu">Office Open XML Visio txantiloia</comment>
+- <comment xml:lang="fi">Office Open XML Visio -kaavio</comment>
++ <comment xml:lang="fi">Office Open XML Visio -malli</comment>
+ <comment xml:lang="fr">stencil Visio Office Open XML</comment>
+- <comment xml:lang="ga">Stionsal Office Open XML Visio</comment>
+- <comment xml:lang="he">דגם ל־Visio ב־Open XML מבית Office</comment>
+ <comment xml:lang="hr">Office Open XML Visio šablona</comment>
+ <comment xml:lang="hu">Office Open XML Visio stencil</comment>
+- <comment xml:lang="ia">Stencil Office Open XML Visio</comment>
+- <comment xml:lang="id">Stensil Visio Office Open XML</comment>
++ <comment xml:lang="id">Stensil Office Open XML Visio</comment>
+ <comment xml:lang="it">Stencil Visio Office Open XML</comment>
+- <comment xml:lang="kk">Office Open XML пішімінің Visio трафареті</comment>
++ <comment xml:lang="kk">Office Open XML Visio трафареті</comment>
+ <comment xml:lang="ko">오피스 오픈 XML 비지오 스텐실</comment>
+ <comment xml:lang="pl">Wzór Office Open XML Visio</comment>
+- <comment xml:lang="pt">Stencil Office Open XML Visio</comment>
+- <comment xml:lang="pt_BR">Estêncil do Visio em Office Open XML</comment>
++ <comment xml:lang="pt">estêncil Visio do Open Office XML</comment>
++ <comment xml:lang="pt-BR">Estêncil do Office Open XML Visio</comment>
+ <comment xml:lang="ru">Трафарет Visio формата Office Open XML</comment>
+- <comment xml:lang="sk">Objekt aplikácie Visio Office Open XML</comment>
+- <comment xml:lang="sr">Офисов отворени ИксМЛ Визио шаблон</comment>
+ <comment xml:lang="sv">Office Open XML Visio-stencil</comment>
+- <comment xml:lang="tr">Office Open XML Visio Kalıbı</comment>
+- <comment xml:lang="uk">трафарет Visio у форматі Office Open XML</comment>
+- <comment xml:lang="zh_CN">Office Open XML Visio 模具</comment>
+- <comment xml:lang="zh_TW">Office Open XML Visio 圖形樣本</comment>
++ <comment xml:lang="tr">Office Open XML Visio kalıbı</comment>
++ <comment xml:lang="uk">трафарет Visio Office Open у XML</comment>
++ <comment xml:lang="zh-CN">Office Open XML Visio 模具</comment>
+ <generic-icon name="image-x-generic"/>
+ <glob pattern="*.vssm"/>
+ <sub-class-of type="application/zip"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-word.document.macroEnabled.12">
+ <comment>Word document</comment>
++ <comment xml:lang="af">Word-dokument</comment>
+ <comment xml:lang="ar">مستند Word</comment>
+ <comment xml:lang="ast">Documentu de Word</comment>
+- <comment xml:lang="be@latin">Dakument Word</comment>
++ <comment xml:lang="be-Latn">Dakument Word</comment>
+ <comment xml:lang="bg">Документ — Word</comment>
+ <comment xml:lang="ca">document Word</comment>
+ <comment xml:lang="cs">dokument Word</comment>
+ <comment xml:lang="da">Worddokument</comment>
+ <comment xml:lang="de">Word-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Word</comment>
+- <comment xml:lang="en_GB">Word document</comment>
++ <comment xml:lang="en-GB">Word document</comment>
+ <comment xml:lang="eo">Word-dokumento</comment>
+ <comment xml:lang="es">documento de Word</comment>
+ <comment xml:lang="eu">Word dokumentua</comment>
+ <comment xml:lang="fi">Word-asiakirja</comment>
+ <comment xml:lang="fo">Word skjal</comment>
+ <comment xml:lang="fr">document Word</comment>
++ <comment xml:lang="fur">document Word</comment>
+ <comment xml:lang="ga">cáipéis Word</comment>
+ <comment xml:lang="gl">documento de Word</comment>
+ <comment xml:lang="he">מסמך Word</comment>
+@@ -3797,7 +3874,7 @@
+ <comment xml:lang="oc">document Word</comment>
+ <comment xml:lang="pl">Dokument Word</comment>
+ <comment xml:lang="pt">documento Word</comment>
+- <comment xml:lang="pt_BR">Documento do Word</comment>
++ <comment xml:lang="pt-BR">Documento do Word</comment>
+ <comment xml:lang="ro">Document Word</comment>
+ <comment xml:lang="ru">Документ Word</comment>
+ <comment xml:lang="sk">Dokument Word</comment>
+@@ -3808,25 +3885,28 @@
+ <comment xml:lang="tr">Word belgesi</comment>
+ <comment xml:lang="uk">документ Word</comment>
+ <comment xml:lang="vi">Tài liệu Word</comment>
+- <comment xml:lang="zh_CN">Word 文档</comment>
+- <comment xml:lang="zh_TW">Word 文件</comment>
++ <comment xml:lang="zh-CN">Word 文档</comment>
++ <comment xml:lang="zh-TW">Word 文件</comment>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.docm"/>
+ <sub-class-of type="application/vnd.openxmlformats-officedocument.wordprocessingml.document"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-word.template.macroEnabled.12">
+ <comment>Word document template</comment>
++ <comment xml:lang="af">Word-dokumentsjabloon</comment>
+ <comment xml:lang="ast">Plantía de documentu de Word</comment>
++ <comment xml:lang="bg">Шаблон за документ — Word</comment>
+ <comment xml:lang="ca">plantilla de document Word</comment>
+ <comment xml:lang="cs">šablona dokumentu Word</comment>
+ <comment xml:lang="da">Word-dokumentskabelon</comment>
+ <comment xml:lang="de">Word-Dokumentvorlage</comment>
+ <comment xml:lang="el">Πρότυπο έγγραφο Word</comment>
+- <comment xml:lang="en_GB">Word document template</comment>
++ <comment xml:lang="en-GB">Word document template</comment>
+ <comment xml:lang="es">plantilla de documento de Word</comment>
+ <comment xml:lang="eu">Word dokumentuaren txantiloia</comment>
+ <comment xml:lang="fi">Word-asiakirjamalli</comment>
+ <comment xml:lang="fr">modèle de document Word</comment>
++ <comment xml:lang="fur">model di document Word</comment>
+ <comment xml:lang="ga">teimpléad Word</comment>
+ <comment xml:lang="he">תבנית מסמך Word</comment>
+ <comment xml:lang="hr">Predložak Word dokumenta</comment>
+@@ -3839,37 +3919,48 @@
+ <comment xml:lang="oc">modèl de document Word</comment>
+ <comment xml:lang="pl">Szablon dokumentu Word</comment>
+ <comment xml:lang="pt">modelo de documento Word</comment>
+- <comment xml:lang="pt_BR">Modelo de documento do Word</comment>
++ <comment xml:lang="pt-BR">Modelo de documento do Word</comment>
+ <comment xml:lang="ru">Шаблон документа Word</comment>
+ <comment xml:lang="sk">Šablóna dokumentu aplikácie Word</comment>
++ <comment xml:lang="sl">Predloga dokumenta Word</comment>
+ <comment xml:lang="sr">Шаблон Ворд документа</comment>
+ <comment xml:lang="sv">Word-dokumentmall</comment>
+ <comment xml:lang="tr">Word belgesi şablonu</comment>
+ <comment xml:lang="uk">шаблон документа Word</comment>
+- <comment xml:lang="zh_CN">Word 文档模板</comment>
+- <comment xml:lang="zh_TW">Word 文件範本</comment>
++ <comment xml:lang="zh-CN">Word 文档模板</comment>
++ <comment xml:lang="zh-TW">Word 文件範本</comment>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.dotm"/>
+ <sub-class-of type="application/vnd.openxmlformats-officedocument.wordprocessingml.template"/>
+ </mime-type>
+ <mime-type type="application/oxps">
++ <comment>OpenXPS document</comment>
++ <acronym>OpenXPS</acronym>
++ <expanded-acronym>Open XML Paper Specification</expanded-acronym>
++ <sub-class-of type="application/zip"/>
++ <generic-icon name="x-office-document"/>
++ <glob pattern="*.oxps"/>
++ </mime-type>
++ <mime-type type="application/vnd.ms-xpsdocument">
+ <comment>XPS document</comment>
++ <comment xml:lang="af">XPS-dokument</comment>
+ <comment xml:lang="ar">مستند XPS</comment>
+ <comment xml:lang="ast">Documentu XPS</comment>
+- <comment xml:lang="be@latin">Dakument XPS</comment>
++ <comment xml:lang="be-Latn">Dakument XPS</comment>
+ <comment xml:lang="bg">Документ — XPS</comment>
+ <comment xml:lang="ca">document XPS</comment>
+ <comment xml:lang="cs">dokument XPS</comment>
+ <comment xml:lang="da">XPS-dokument</comment>
+ <comment xml:lang="de">XPS-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο XPS</comment>
+- <comment xml:lang="en_GB">XPS document</comment>
++ <comment xml:lang="en-GB">XPS document</comment>
+ <comment xml:lang="eo">XPS-dokumento</comment>
+ <comment xml:lang="es">documento XPS</comment>
+ <comment xml:lang="eu">XPS dokumentua</comment>
+ <comment xml:lang="fi">XPS-asiakirja</comment>
+ <comment xml:lang="fo">XPS skjal</comment>
+ <comment xml:lang="fr">document XPS</comment>
++ <comment xml:lang="fur">document XPS</comment>
+ <comment xml:lang="ga">cáipéis XPS</comment>
+ <comment xml:lang="gl">documento XPS</comment>
+ <comment xml:lang="he">מסמך XPS</comment>
+@@ -3889,7 +3980,7 @@
+ <comment xml:lang="oc">document XPS</comment>
+ <comment xml:lang="pl">Dokument XPS</comment>
+ <comment xml:lang="pt">documento XPS</comment>
+- <comment xml:lang="pt_BR">Documento XPS</comment>
++ <comment xml:lang="pt-BR">Documento XPS</comment>
+ <comment xml:lang="ro">Document XPS</comment>
+ <comment xml:lang="ru">Документ XPS</comment>
+ <comment xml:lang="sk">Dokument XPS</comment>
+@@ -3900,34 +3991,34 @@
+ <comment xml:lang="tr">XPS belgesi</comment>
+ <comment xml:lang="uk">документ XPS</comment>
+ <comment xml:lang="vi">Tài liệu XPS</comment>
+- <comment xml:lang="zh_CN">XPS 文档</comment>
+- <comment xml:lang="zh_TW">XPS 文件</comment>
++ <comment xml:lang="zh-CN">XPS 文档</comment>
++ <comment xml:lang="zh-TW">XPS 文件</comment>
+ <acronym>XPS</acronym>
+- <expanded-acronym>Open XML Paper Specification</expanded-acronym>
++ <expanded-acronym>XML Paper Specification</expanded-acronym>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-document"/>
+- <glob pattern="*.oxps"/>
+ <glob pattern="*.xps"/>
+- <alias type="application/vnd.ms-xpsdocument"/>
+ <alias type="application/xps"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-works">
+ <comment>Microsoft Works document</comment>
++ <comment xml:lang="af">Microsoft Works-dokument</comment>
+ <comment xml:lang="ar">مستند Microsoft Works</comment>
+ <comment xml:lang="ast">Documentu de Microsoft Works</comment>
+- <comment xml:lang="be@latin">Dakument Microsoft Works</comment>
++ <comment xml:lang="be-Latn">Dakument Microsoft Works</comment>
+ <comment xml:lang="bg">Документ — Microsoft Works</comment>
+ <comment xml:lang="ca">document de Microsoft Works</comment>
+ <comment xml:lang="cs">dokument Microsoft Works</comment>
+ <comment xml:lang="da">Microsoft Works-dokument</comment>
+ <comment xml:lang="de">Microsoft-Works-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Microsoft Works</comment>
+- <comment xml:lang="en_GB">Microsoft Works document</comment>
++ <comment xml:lang="en-GB">Microsoft Works document</comment>
+ <comment xml:lang="es">documento de Microsoft Works</comment>
+ <comment xml:lang="eu">Microsoft Works dokumentua</comment>
+ <comment xml:lang="fi">Microsoft Works -asiakirja</comment>
+ <comment xml:lang="fo">Microsoft Works skjal</comment>
+ <comment xml:lang="fr">document Microsoft Works</comment>
++ <comment xml:lang="fur">document Microsoft Works</comment>
+ <comment xml:lang="ga">cáipéis Microsoft Works</comment>
+ <comment xml:lang="gl">documento de Microsoft Works</comment>
+ <comment xml:lang="he">מסמך Microsoft Works</comment>
+@@ -3948,7 +4039,7 @@
+ <comment xml:lang="oc">document Microsoft Works</comment>
+ <comment xml:lang="pl">Dokument Microsoft Works</comment>
+ <comment xml:lang="pt">documento Microsoft Works</comment>
+- <comment xml:lang="pt_BR">Documento do Microsoft Works</comment>
++ <comment xml:lang="pt-BR">Documento do Microsoft Works</comment>
+ <comment xml:lang="ro">Document Microsoft Works</comment>
+ <comment xml:lang="ru">Документ Microsoft Works</comment>
+ <comment xml:lang="sk">Dokument Microsoft Works</comment>
+@@ -3959,8 +4050,8 @@
+ <comment xml:lang="tr">Microsoft Works belgesi</comment>
+ <comment xml:lang="uk">документ Microsoft Works</comment>
+ <comment xml:lang="vi">Tài liệu Microsoft Works</comment>
+- <comment xml:lang="zh_CN">Microsoft Works 文档</comment>
+- <comment xml:lang="zh_TW">微軟 Works 文件</comment>
++ <comment xml:lang="zh-CN">Microsoft Works 文档</comment>
++ <comment xml:lang="zh-TW">微軟 Works 文件</comment>
+ <sub-class-of type="application/x-ole-storage"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.wcm"/>
+@@ -3971,6 +4062,7 @@
+ </mime-type>
+ <mime-type type="application/vnd.visio">
+ <comment>Microsoft Visio document</comment>
++ <comment xml:lang="af">Microsoft Visio-dokument</comment>
+ <comment xml:lang="ast">Documentu de Microsoft Visio</comment>
+ <comment xml:lang="bg">Документ — Microsoft Visio</comment>
+ <comment xml:lang="ca">document de Microsoft Visio</comment>
+@@ -3978,11 +4070,12 @@
+ <comment xml:lang="da">Microsoft Visio-dokument</comment>
+ <comment xml:lang="de">Microsoft-Visio-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Microsoft Visio</comment>
+- <comment xml:lang="en_GB">Microsoft Visio document</comment>
++ <comment xml:lang="en-GB">Microsoft Visio document</comment>
+ <comment xml:lang="es">documento de Microsoft Visio</comment>
+ <comment xml:lang="eu">Microsoft Visio dokumentua</comment>
+ <comment xml:lang="fi">Microsoft Visio -asiakirja</comment>
+ <comment xml:lang="fr">document Microsoft Visio</comment>
++ <comment xml:lang="fur">document Microsoft Visio</comment>
+ <comment xml:lang="ga">cáipéis Microsoft Visio</comment>
+ <comment xml:lang="gl">Documento de Microsoft Visio</comment>
+ <comment xml:lang="he">מסמך </comment>
+@@ -4000,7 +4093,7 @@
+ <comment xml:lang="oc">document Microsoft Visio</comment>
+ <comment xml:lang="pl">Dokument Microsoft Visio</comment>
+ <comment xml:lang="pt">documento Microsoft Visio</comment>
+- <comment xml:lang="pt_BR">Documento do Microsoft Visio</comment>
++ <comment xml:lang="pt-BR">Documento do Microsoft Visio</comment>
+ <comment xml:lang="ru">Документ Microsoft Visio</comment>
+ <comment xml:lang="sk">Dokument Microsoft Visio</comment>
+ <comment xml:lang="sl">Dokument Microsoft Visio</comment>
+@@ -4008,8 +4101,8 @@
+ <comment xml:lang="sv">Microsoft Visio-dokument</comment>
+ <comment xml:lang="tr">Microsoft Visio belgesi</comment>
+ <comment xml:lang="uk">документ Microsoft Visio</comment>
+- <comment xml:lang="zh_CN">Microsoft Visio 文档</comment>
+- <comment xml:lang="zh_TW">Microsoft Visio文件</comment>
++ <comment xml:lang="zh-CN">Microsoft Visio 文档</comment>
++ <comment xml:lang="zh-TW">微軟 Visio 文件</comment>
+ <sub-class-of type="application/x-ole-storage"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.vsd"/>
+@@ -4019,22 +4112,24 @@
+ </mime-type>
+ <mime-type type="application/msword">
+ <comment>Word document</comment>
++ <comment xml:lang="af">Word-dokument</comment>
+ <comment xml:lang="ar">مستند Word</comment>
+ <comment xml:lang="ast">Documentu de Word</comment>
+- <comment xml:lang="be@latin">Dakument Word</comment>
++ <comment xml:lang="be-Latn">Dakument Word</comment>
+ <comment xml:lang="bg">Документ — Word</comment>
+ <comment xml:lang="ca">document Word</comment>
+ <comment xml:lang="cs">dokument Word</comment>
+ <comment xml:lang="da">Worddokument</comment>
+ <comment xml:lang="de">Word-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Word</comment>
+- <comment xml:lang="en_GB">Word document</comment>
++ <comment xml:lang="en-GB">Word document</comment>
+ <comment xml:lang="eo">Word-dokumento</comment>
+ <comment xml:lang="es">documento de Word</comment>
+ <comment xml:lang="eu">Word dokumentua</comment>
+ <comment xml:lang="fi">Word-asiakirja</comment>
+ <comment xml:lang="fo">Word skjal</comment>
+ <comment xml:lang="fr">document Word</comment>
++ <comment xml:lang="fur">document Word</comment>
+ <comment xml:lang="ga">cáipéis Word</comment>
+ <comment xml:lang="gl">documento de Word</comment>
+ <comment xml:lang="he">מסמך Word</comment>
+@@ -4054,7 +4149,7 @@
+ <comment xml:lang="oc">document Word</comment>
+ <comment xml:lang="pl">Dokument Word</comment>
+ <comment xml:lang="pt">documento Word</comment>
+- <comment xml:lang="pt_BR">Documento do Word</comment>
++ <comment xml:lang="pt-BR">Documento do Word</comment>
+ <comment xml:lang="ro">Document Word</comment>
+ <comment xml:lang="ru">Документ Word</comment>
+ <comment xml:lang="sk">Dokument Word</comment>
+@@ -4065,20 +4160,20 @@
+ <comment xml:lang="tr">Word belgesi</comment>
+ <comment xml:lang="uk">документ Word</comment>
+ <comment xml:lang="vi">Tài liệu Word</comment>
+- <comment xml:lang="zh_CN">Word 文档</comment>
+- <comment xml:lang="zh_TW">Word 文件</comment>
++ <comment xml:lang="zh-CN">Word 文档</comment>
++ <comment xml:lang="zh-TW">Word 文件</comment>
+ <sub-class-of type="application/x-ole-storage"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="60">
+- <match value="\x31\xbe\x00\x00" type="string" offset="0"/>
+- <match value="PO^Q`" type="string" offset="0"/>
+- <match value="\376\067\0\043" type="string" offset="0"/>
+- <match value="\333\245-\0\0\0" type="string" offset="0"/>
+- <match value="MSWordDoc" type="string" offset="2112"/>
+- <match value="MSWordDoc" type="string" offset="2108"/>
+- <match value="Microsoft Word document data" type="string" offset="2112"/>
+- <match value="bjbj" type="string" offset="546"/>
+- <match value="jbjb" type="string" offset="546"/>
++ <match type="string" value="\x31\xbe\x00\x00" offset="0"/>
++ <match type="string" value="PO^Q`" offset="0"/>
++ <match type="string" value="\376\067\0\043" offset="0"/>
++ <match type="string" value="\333\245-\0\0\0" offset="0"/>
++ <match type="string" value="MSWordDoc" offset="2112"/>
++ <match type="string" value="MSWordDoc" offset="2108"/>
++ <match type="string" value="Microsoft Word document data" offset="2112"/>
++ <match type="string" value="bjbj" offset="546"/>
++ <match type="string" value="jbjb" offset="546"/>
+ </magic>
+ <glob pattern="*.doc"/>
+ <alias type="application/vnd.ms-word"/>
+@@ -4087,22 +4182,24 @@
+ </mime-type>
+ <mime-type type="application/msword-template">
+ <comment>Word template</comment>
++ <comment xml:lang="af">Word-sjabloon</comment>
+ <comment xml:lang="ar">قالب Word</comment>
+ <comment xml:lang="ast">Plantía de Word</comment>
+- <comment xml:lang="be@latin">Šablon Word</comment>
++ <comment xml:lang="be-Latn">Šablon Word</comment>
+ <comment xml:lang="bg">Шаблон за документи — Word</comment>
+ <comment xml:lang="ca">plantilla de Word</comment>
+ <comment xml:lang="cs">šablona Word</comment>
+ <comment xml:lang="da">Wordskabelon</comment>
+ <comment xml:lang="de">Word-Vorlage</comment>
+ <comment xml:lang="el">Πρότυπο έγγραφο Word</comment>
+- <comment xml:lang="en_GB">Word template</comment>
++ <comment xml:lang="en-GB">Word template</comment>
+ <comment xml:lang="eo">Word-ŝablono</comment>
+ <comment xml:lang="es">plantilla de Word</comment>
+ <comment xml:lang="eu">Word txantiloia</comment>
+ <comment xml:lang="fi">Word-malli</comment>
+ <comment xml:lang="fo">Word formur</comment>
+ <comment xml:lang="fr">modèle Word</comment>
++ <comment xml:lang="fur">model Word</comment>
+ <comment xml:lang="ga">teimpléad Word</comment>
+ <comment xml:lang="gl">Plantilla de Word</comment>
+ <comment xml:lang="he">תבנית Word</comment>
+@@ -4122,7 +4219,7 @@
+ <comment xml:lang="oc">modèl Word</comment>
+ <comment xml:lang="pl">Szablon Word</comment>
+ <comment xml:lang="pt">modelo Word</comment>
+- <comment xml:lang="pt_BR">Modelo do Word</comment>
++ <comment xml:lang="pt-BR">Modelo do Word</comment>
+ <comment xml:lang="ro">Șablon Word</comment>
+ <comment xml:lang="ru">Шаблон Word</comment>
+ <comment xml:lang="sk">Šablóna Word</comment>
+@@ -4133,25 +4230,28 @@
+ <comment xml:lang="tr">Word şablonu</comment>
+ <comment xml:lang="uk">шаблон Word</comment>
+ <comment xml:lang="vi">Mẫu Word</comment>
+- <comment xml:lang="zh_CN">Word 模板</comment>
+- <comment xml:lang="zh_TW">Word 範本</comment>
++ <comment xml:lang="zh-CN">Word 模板</comment>
++ <comment xml:lang="zh-TW">Word 範本</comment>
+ <sub-class-of type="application/msword"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.dot"/>
+ </mime-type>
+ <mime-type type="application/gml+xml">
+ <comment>GML document</comment>
++ <comment xml:lang="af">GML-dokument</comment>
+ <comment xml:lang="ast">Documentu GML</comment>
++ <comment xml:lang="bg">Документ — GML</comment>
+ <comment xml:lang="ca">document GML</comment>
+ <comment xml:lang="cs">dokument GML</comment>
+ <comment xml:lang="da">GML-dokument</comment>
+ <comment xml:lang="de">GML-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο GML</comment>
+- <comment xml:lang="en_GB">GML document</comment>
++ <comment xml:lang="en-GB">GML document</comment>
+ <comment xml:lang="es">documento GML</comment>
+ <comment xml:lang="eu">GML dokumentua</comment>
+ <comment xml:lang="fi">GML-asiakirja</comment>
+ <comment xml:lang="fr">document GML</comment>
++ <comment xml:lang="fur">document GML</comment>
+ <comment xml:lang="ga">cáipéis GML</comment>
+ <comment xml:lang="gl">Documento GML</comment>
+ <comment xml:lang="he">מסמך GML</comment>
+@@ -4163,11 +4263,12 @@
+ <comment xml:lang="ja">GML ドキュメント</comment>
+ <comment xml:lang="kk">GML құжаты</comment>
+ <comment xml:lang="ko">GML 문서</comment>
++ <comment xml:lang="lt">GML dokumentas</comment>
+ <comment xml:lang="lv">GML dokuments</comment>
+ <comment xml:lang="oc">document GML</comment>
+ <comment xml:lang="pl">Dokument GML</comment>
+ <comment xml:lang="pt">documento GML</comment>
+- <comment xml:lang="pt_BR">Documento GML</comment>
++ <comment xml:lang="pt-BR">Documento GML</comment>
+ <comment xml:lang="ru">Документ GML</comment>
+ <comment xml:lang="sk">Dokument GML</comment>
+ <comment xml:lang="sl">Dokument GML</comment>
+@@ -4175,8 +4276,8 @@
+ <comment xml:lang="sv">GML-dokument</comment>
+ <comment xml:lang="tr">GML belgesi</comment>
+ <comment xml:lang="uk">документ GML</comment>
+- <comment xml:lang="zh_CN">GML 文档</comment>
+- <comment xml:lang="zh_TW">GML 文件</comment>
++ <comment xml:lang="zh-CN">GML 文档</comment>
++ <comment xml:lang="zh-TW">GML 文件</comment>
+ <acronym>GML</acronym>
+ <expanded-acronym>Geography Markup Language</expanded-acronym>
+ <glob pattern="*.gml"/>
+@@ -4185,20 +4286,22 @@
+ </mime-type>
+ <mime-type type="application/gnunet-directory">
+ <comment>GNUnet search file</comment>
++ <comment xml:lang="af">GNUnet-soeklêer</comment>
+ <comment xml:lang="ar">ملف بحث GNUnet</comment>
+- <comment xml:lang="be@latin">fajł pošuku GNUnet</comment>
++ <comment xml:lang="be-Latn">fajł pošuku GNUnet</comment>
+ <comment xml:lang="bg">Указател за търсене — GNUnet</comment>
+ <comment xml:lang="ca">fitxer de cerca GNUnet</comment>
+ <comment xml:lang="cs">vyhledávací soubor GNUnet</comment>
+ <comment xml:lang="da">GNunet-søgefil</comment>
+ <comment xml:lang="de">GNUnet-Suchdatei</comment>
+ <comment xml:lang="el">Αρχείο αναζήτησης GNUnet</comment>
+- <comment xml:lang="en_GB">GNUnet search file</comment>
++ <comment xml:lang="en-GB">GNUnet search file</comment>
+ <comment xml:lang="es">archivo de búsqueda GNUnet</comment>
+ <comment xml:lang="eu">GNUnet bilaketako fitxategia</comment>
+ <comment xml:lang="fi">GNUnet-hakutiedosto</comment>
+ <comment xml:lang="fo">GNUnet leitifíla</comment>
+ <comment xml:lang="fr">fichier de recherche GNUnet</comment>
++ <comment xml:lang="fur">file di ricercje GNUnet</comment>
+ <comment xml:lang="ga">comhad cuardaigh GNUnet</comment>
+ <comment xml:lang="gl">ficheiro de busca de GNUnet</comment>
+ <comment xml:lang="he">קובץ חיפוש של GNUnet</comment>
+@@ -4219,7 +4322,7 @@
+ <comment xml:lang="oc">fichièr de recèrca GNUnet</comment>
+ <comment xml:lang="pl">Plik wyszukiwania GNUnet</comment>
+ <comment xml:lang="pt">ficheiro de procura GNUnet</comment>
+- <comment xml:lang="pt_BR">Arquivo de pesquisa do GNUnet</comment>
++ <comment xml:lang="pt-BR">Arquivo de pesquisa do GNUnet</comment>
+ <comment xml:lang="ro">Fișier căutare GNUnet</comment>
+ <comment xml:lang="ru">Файл поиска GNUnet</comment>
+ <comment xml:lang="sk">Vyhľadávací súbor GNUnet</comment>
+@@ -4230,30 +4333,32 @@
+ <comment xml:lang="tr">GNUnet arama dosyası</comment>
+ <comment xml:lang="uk">файл пошуку GNUnet</comment>
+ <comment xml:lang="vi">Tập tin tìm kiếm GNUnet</comment>
+- <comment xml:lang="zh_CN">GNUnet 搜索文件</comment>
+- <comment xml:lang="zh_TW">GNUnet 搜尋檔案</comment>
++ <comment xml:lang="zh-CN">GNUnet 搜索文件</comment>
++ <comment xml:lang="zh-TW">GNUnet 搜尋檔案</comment>
+ <magic priority="50">
+- <match value="\211GND\r\n\032\n" type="string" offset="0"/>
++ <match type="string" value="\211GND\r\n\032\n" offset="0"/>
+ </magic>
+ <glob pattern="*.gnd"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-tnef">
+ <comment>TNEF message</comment>
++ <comment xml:lang="af">TNEF-boodskap</comment>
+ <comment xml:lang="ar">رسالة TNEF</comment>
+ <comment xml:lang="ast">Mensaxe TNEF</comment>
+- <comment xml:lang="be@latin">List TNEF</comment>
++ <comment xml:lang="be-Latn">List TNEF</comment>
+ <comment xml:lang="bg">Съобщение — TNEF</comment>
+ <comment xml:lang="ca">missatge TNEF</comment>
+ <comment xml:lang="cs">zpráva TNEF</comment>
+ <comment xml:lang="da">TNEF-meddelelse</comment>
+ <comment xml:lang="de">TNEF-Nachricht</comment>
+ <comment xml:lang="el">Μήνυμα TNEF</comment>
+- <comment xml:lang="en_GB">TNEF message</comment>
++ <comment xml:lang="en-GB">TNEF message</comment>
+ <comment xml:lang="es">mensaje TNEF</comment>
+ <comment xml:lang="eu">TNEF mezua</comment>
+ <comment xml:lang="fi">TNEF-viesti</comment>
+ <comment xml:lang="fo">TNEF boð</comment>
+ <comment xml:lang="fr">message TNEF</comment>
++ <comment xml:lang="fur">messaç TNEF</comment>
+ <comment xml:lang="ga">teachtaireacht TNEF</comment>
+ <comment xml:lang="gl">mensaxe TNEF</comment>
+ <comment xml:lang="he">הודעת TNEF</comment>
+@@ -4273,7 +4378,7 @@
+ <comment xml:lang="oc">messatge TNEF</comment>
+ <comment xml:lang="pl">Wiadomość TNEF</comment>
+ <comment xml:lang="pt">mensagem TNEF</comment>
+- <comment xml:lang="pt_BR">Mensagem TNEF</comment>
++ <comment xml:lang="pt-BR">Mensagem TNEF</comment>
+ <comment xml:lang="ro">Mesaj TNEF</comment>
+ <comment xml:lang="ru">Сообщение TNEF</comment>
+ <comment xml:lang="sk">Správa TNEF</comment>
+@@ -4284,12 +4389,12 @@
+ <comment xml:lang="tr">TNEF iletisi</comment>
+ <comment xml:lang="uk">повідомлення TNEF</comment>
+ <comment xml:lang="vi">Thông điệp TNEF</comment>
+- <comment xml:lang="zh_CN">TNEF 信件</comment>
+- <comment xml:lang="zh_TW">TNEF 訊息</comment>
++ <comment xml:lang="zh-CN">TNEF 信件</comment>
++ <comment xml:lang="zh-TW">TNEF 訊息</comment>
+ <acronym>TNEF</acronym>
+ <expanded-acronym>Transport Neutral Encapsulation Format</expanded-acronym>
+ <magic priority="50">
+- <match value="0x223e9f78" type="little32" offset="0"/>
++ <match type="little32" value="0x223e9f78" offset="0"/>
+ </magic>
+ <glob pattern="*.tnef"/>
+ <glob pattern="*.tnf"/>
+@@ -4298,9 +4403,10 @@
+ </mime-type>
+ <mime-type type="application/vnd.stardivision.calc">
+ <comment>StarCalc spreadsheet</comment>
++ <comment xml:lang="af">StarCalc-sigblad</comment>
+ <comment xml:lang="ar">جدول StarCalc</comment>
+ <comment xml:lang="az">StarCalc hesab cədvəli</comment>
+- <comment xml:lang="be@latin">Raźlikovy arkuš StarCalc</comment>
++ <comment xml:lang="be-Latn">Raźlikovy arkuš StarCalc</comment>
+ <comment xml:lang="bg">Таблица — StarCalc</comment>
+ <comment xml:lang="ca">full de càlcul de StarCalc</comment>
+ <comment xml:lang="cs">sešit StarCalc</comment>
+@@ -4308,13 +4414,14 @@
+ <comment xml:lang="da">StarCalc-regneark</comment>
+ <comment xml:lang="de">StarCalc-Tabelle</comment>
+ <comment xml:lang="el">Λογιστικό φύλλο StarCalc</comment>
+- <comment xml:lang="en_GB">StarCalc spreadsheet</comment>
++ <comment xml:lang="en-GB">StarCalc spreadsheet</comment>
+ <comment xml:lang="eo">StarCalc-kalkultabelo</comment>
+ <comment xml:lang="es">hoja de cálculo de StarCalc</comment>
+ <comment xml:lang="eu">StarCalc kalkulu-orria</comment>
+ <comment xml:lang="fi">StarCalc-taulukko</comment>
+ <comment xml:lang="fo">StarCalc rokniark</comment>
+ <comment xml:lang="fr">feuille de calcul StarCalc</comment>
++ <comment xml:lang="fur">sfuei di calcul StarCalc</comment>
+ <comment xml:lang="ga">scarbhileog StarCalc</comment>
+ <comment xml:lang="gl">folla de cálculo de StarCalc</comment>
+ <comment xml:lang="he">גליון נתונים של StarCalc</comment>
+@@ -4335,7 +4442,7 @@
+ <comment xml:lang="oc">fuèlh de calcul StarCalc</comment>
+ <comment xml:lang="pl">Arkusz StarCalc</comment>
+ <comment xml:lang="pt">folha de cálculo do StarCalc</comment>
+- <comment xml:lang="pt_BR">Planilha do StarCalc</comment>
++ <comment xml:lang="pt-BR">Planilha do StarCalc</comment>
+ <comment xml:lang="ro">Foaie de calcul StarCalc</comment>
+ <comment xml:lang="ru">Электронная таблица StarCalc</comment>
+ <comment xml:lang="sk">Zošit StarCalc</comment>
+@@ -4343,19 +4450,20 @@
+ <comment xml:lang="sq">Fletë llogaritjesh StarCalc</comment>
+ <comment xml:lang="sr">Стар калк табела</comment>
+ <comment xml:lang="sv">StarCalc-kalkylblad</comment>
+- <comment xml:lang="tr">StarCalc çalışma sayfası</comment>
++ <comment xml:lang="tr">StarCalc hesap çizelgesi</comment>
+ <comment xml:lang="uk">ел. таблиця StarCalc</comment>
+ <comment xml:lang="vi">Bảng tính StarCalc</comment>
+- <comment xml:lang="zh_CN">StarCalc 电子表格</comment>
+- <comment xml:lang="zh_TW">StarCalc 試算表</comment>
++ <comment xml:lang="zh-CN">StarCalc 电子表格</comment>
++ <comment xml:lang="zh-TW">StarCalc 試算表</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <glob pattern="*.sdc"/>
+ </mime-type>
+ <mime-type type="application/vnd.stardivision.chart">
+ <comment>StarChart chart</comment>
++ <comment xml:lang="af">StarChart-grafiek</comment>
+ <comment xml:lang="ar">مخطط StarChart</comment>
+ <comment xml:lang="az">StarChart cədvəli</comment>
+- <comment xml:lang="be@latin">Dyjahrama StarChart</comment>
++ <comment xml:lang="be-Latn">Dyjahrama StarChart</comment>
+ <comment xml:lang="bg">Диаграма — StarChart</comment>
+ <comment xml:lang="ca">diagrama de StarChart</comment>
+ <comment xml:lang="cs">graf StarChart</comment>
+@@ -4363,13 +4471,14 @@
+ <comment xml:lang="da">StarChart-diagram</comment>
+ <comment xml:lang="de">StarChart-Diagramm</comment>
+ <comment xml:lang="el">Γράφημα StarChart</comment>
+- <comment xml:lang="en_GB">StarChart chart</comment>
++ <comment xml:lang="en-GB">StarChart chart</comment>
+ <comment xml:lang="eo">StarChart-diagramo</comment>
+ <comment xml:lang="es">gráfico de StarChart</comment>
+ <comment xml:lang="eu">StarChart diagrama</comment>
+ <comment xml:lang="fi">StarChart-kaavio</comment>
+ <comment xml:lang="fo">StarChart strikumynd</comment>
+ <comment xml:lang="fr">graphique StarChart</comment>
++ <comment xml:lang="fur">grafic StarChart</comment>
+ <comment xml:lang="ga">cairt StarChart</comment>
+ <comment xml:lang="gl">gráfica de StarChart</comment>
+ <comment xml:lang="he">טבלה של StarChart</comment>
+@@ -4390,7 +4499,7 @@
+ <comment xml:lang="oc">grafic StarChart</comment>
+ <comment xml:lang="pl">Wykres StarChart</comment>
+ <comment xml:lang="pt">gráfico do StarChart</comment>
+- <comment xml:lang="pt_BR">Gráfico do StarChart</comment>
++ <comment xml:lang="pt-BR">Gráfico do StarChart</comment>
+ <comment xml:lang="ro">Diagramă StarChart</comment>
+ <comment xml:lang="ru">Диаграмма StarChart</comment>
+ <comment xml:lang="sk">Graf StarChart</comment>
+@@ -4398,19 +4507,20 @@
+ <comment xml:lang="sq">Grafik StarChart</comment>
+ <comment xml:lang="sr">График Стар Графика</comment>
+ <comment xml:lang="sv">StarChart-diagram</comment>
+- <comment xml:lang="tr">StarChart çizgelgesi</comment>
++ <comment xml:lang="tr">StarChart çizgesi</comment>
+ <comment xml:lang="uk">діаграма StarChart</comment>
+ <comment xml:lang="vi">Đồ thị StarChart</comment>
+- <comment xml:lang="zh_CN">StarCalc 图表</comment>
+- <comment xml:lang="zh_TW">StarChart 圖表</comment>
++ <comment xml:lang="zh-CN">StarCalc 图表</comment>
++ <comment xml:lang="zh-TW">StarChart 圖表</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <glob pattern="*.sds"/>
+ </mime-type>
+ <mime-type type="application/vnd.stardivision.draw">
+ <comment>StarDraw drawing</comment>
++ <comment xml:lang="af">StarDraw-tekening</comment>
+ <comment xml:lang="ar">تصميم StarDraw</comment>
+ <comment xml:lang="az">StarDraw çəkimi</comment>
+- <comment xml:lang="be@latin">Rysunak StarDraw</comment>
++ <comment xml:lang="be-Latn">Rysunak StarDraw</comment>
+ <comment xml:lang="bg">Чертеж — StarDraw</comment>
+ <comment xml:lang="ca">dibuix de StarDraw</comment>
+ <comment xml:lang="cs">kresba StarDraw</comment>
+@@ -4418,13 +4528,14 @@
+ <comment xml:lang="da">StarDraw-tegning</comment>
+ <comment xml:lang="de">StarDraw-Zeichnung</comment>
+ <comment xml:lang="el">Σχέδιο StarDraw</comment>
+- <comment xml:lang="en_GB">StarDraw drawing</comment>
++ <comment xml:lang="en-GB">StarDraw drawing</comment>
+ <comment xml:lang="eo">StarDraw-grafikaĵo</comment>
+ <comment xml:lang="es">dibujo de StarDraw</comment>
+ <comment xml:lang="eu">StarDraw marrazkia</comment>
+ <comment xml:lang="fi">StarDraw-piirros</comment>
+ <comment xml:lang="fo">StarDraw tekning</comment>
+ <comment xml:lang="fr">dessin StarDraw</comment>
++ <comment xml:lang="fur">dissen StarDraw</comment>
+ <comment xml:lang="ga">líníocht StarDraw</comment>
+ <comment xml:lang="gl">debuxo de StarDraw</comment>
+ <comment xml:lang="he">ציור של StarDrawing</comment>
+@@ -4445,7 +4556,7 @@
+ <comment xml:lang="oc">dessenh StarDraw</comment>
+ <comment xml:lang="pl">Rysunek StarDraw</comment>
+ <comment xml:lang="pt">desenho do StarDraw</comment>
+- <comment xml:lang="pt_BR">Desenho do StarDraw</comment>
++ <comment xml:lang="pt-BR">Desenho do StarDraw</comment>
+ <comment xml:lang="ro">Desen StarDraw</comment>
+ <comment xml:lang="ru">Рисунок StarDraw</comment>
+ <comment xml:lang="sk">Kresba StarDraw</comment>
+@@ -4456,16 +4567,17 @@
+ <comment xml:lang="tr">StarDraw çizimi</comment>
+ <comment xml:lang="uk">малюнок StarDraw</comment>
+ <comment xml:lang="vi">Bản vẽ StarDraw</comment>
+- <comment xml:lang="zh_CN">StarDraw 绘图</comment>
+- <comment xml:lang="zh_TW">StarDraw 繪圖</comment>
++ <comment xml:lang="zh-CN">StarDraw 绘图</comment>
++ <comment xml:lang="zh-TW">StarDraw 繪圖</comment>
+ <generic-icon name="image-x-generic"/>
+ <glob pattern="*.sda"/>
+ </mime-type>
+ <mime-type type="application/vnd.stardivision.impress">
+ <comment>StarImpress presentation</comment>
++ <comment xml:lang="af">StarImpress-voorlegging</comment>
+ <comment xml:lang="ar">عرض تقديمي StarImpress</comment>
+ <comment xml:lang="az">StarImpress təqdimatı</comment>
+- <comment xml:lang="be@latin">Prezentacyja StarImpress</comment>
++ <comment xml:lang="be-Latn">Prezentacyja StarImpress</comment>
+ <comment xml:lang="bg">Презентация — StarImpress</comment>
+ <comment xml:lang="ca">presentació de StarImpress</comment>
+ <comment xml:lang="cs">prezentace StarImpress</comment>
+@@ -4473,13 +4585,14 @@
+ <comment xml:lang="da">StarImpress-præsentation</comment>
+ <comment xml:lang="de">StarImpress-Präsentation</comment>
+ <comment xml:lang="el">Παρουσίαση StarImpress</comment>
+- <comment xml:lang="en_GB">StarImpress presentation</comment>
++ <comment xml:lang="en-GB">StarImpress presentation</comment>
+ <comment xml:lang="eo">StarImpress-prezentaĵo</comment>
+ <comment xml:lang="es">presentación de StarImpress</comment>
+ <comment xml:lang="eu">StarImpress aurkezpena</comment>
+ <comment xml:lang="fi">StarImpress-esitys</comment>
+ <comment xml:lang="fo">StarImpress framløga</comment>
+ <comment xml:lang="fr">présentation StarImpress</comment>
++ <comment xml:lang="fur">presentazion StarImpress</comment>
+ <comment xml:lang="ga">láithreoireacht StarImpress</comment>
+ <comment xml:lang="gl">presentación de StarImpress</comment>
+ <comment xml:lang="he">מצגת של StarImpress</comment>
+@@ -4500,7 +4613,7 @@
+ <comment xml:lang="oc">presentacion StarImpress</comment>
+ <comment xml:lang="pl">Prezentacja StarImpress</comment>
+ <comment xml:lang="pt">apresentação do StarImpress</comment>
+- <comment xml:lang="pt_BR">Apresentação do StarImpress</comment>
++ <comment xml:lang="pt-BR">Apresentação do StarImpress</comment>
+ <comment xml:lang="ro">Prezentare StarImpress</comment>
+ <comment xml:lang="ru">Презентация StarImpress</comment>
+ <comment xml:lang="sk">Prezentácia StarImpress</comment>
+@@ -4511,29 +4624,31 @@
+ <comment xml:lang="tr">StarImpress sunumu</comment>
+ <comment xml:lang="uk">презентація StarImpress</comment>
+ <comment xml:lang="vi">Trình diễn StarImpress</comment>
+- <comment xml:lang="zh_CN">StarImpress 演示文稿</comment>
+- <comment xml:lang="zh_TW">StarImpress 簡報檔</comment>
++ <comment xml:lang="zh-CN">StarImpress 演示文稿</comment>
++ <comment xml:lang="zh-TW">StarImpress 簡報</comment>
+ <generic-icon name="x-office-presentation"/>
+ <glob pattern="*.sdd"/>
+ <glob pattern="*.sdp"/>
+ </mime-type>
+ <mime-type type="application/vnd.stardivision.mail">
+ <comment>StarMail email</comment>
++ <comment xml:lang="af">StarMail-e-pos</comment>
+ <comment xml:lang="ar">بريد StarMail الإلكتروني</comment>
+- <comment xml:lang="be@latin">Email StarMail</comment>
++ <comment xml:lang="be-Latn">Email StarMail</comment>
+ <comment xml:lang="bg">Електронно писмо — StarMail</comment>
+ <comment xml:lang="ca">correu electrònic de StarMail</comment>
+ <comment xml:lang="cs">e-mail StarMail</comment>
+ <comment xml:lang="da">StarMail-e-brev</comment>
+ <comment xml:lang="de">StarMail-E-Mail</comment>
+ <comment xml:lang="el">Ηλ. μήνυμα StarMail</comment>
+- <comment xml:lang="en_GB">StarMail email</comment>
++ <comment xml:lang="en-GB">StarMail email</comment>
+ <comment xml:lang="eo">StarMail-retpoŝto</comment>
+ <comment xml:lang="es">correo electrónico de StarMail</comment>
+ <comment xml:lang="eu">StarMail helb.el.</comment>
+ <comment xml:lang="fi">StarMail-sähköposti</comment>
+ <comment xml:lang="fo">StarMail t-postur</comment>
+ <comment xml:lang="fr">courriel StarMail</comment>
++ <comment xml:lang="fur">e-mail StarMail</comment>
+ <comment xml:lang="ga">ríomhphost StarMail</comment>
+ <comment xml:lang="gl">Correo electrónico de StarMail</comment>
+ <comment xml:lang="he">דוא״ל של StarMail</comment>
+@@ -4554,7 +4669,7 @@
+ <comment xml:lang="oc">corrièr electronic StarMail</comment>
+ <comment xml:lang="pl">E-Mail StarMail</comment>
+ <comment xml:lang="pt">email do StarMail</comment>
+- <comment xml:lang="pt_BR">E-mail do StarMail</comment>
++ <comment xml:lang="pt-BR">E-mail do StarMail</comment>
+ <comment xml:lang="ro">Email StarEmail</comment>
+ <comment xml:lang="ru">Электронное письмо StarMail</comment>
+ <comment xml:lang="sk">E-mail StarMail</comment>
+@@ -4565,27 +4680,29 @@
+ <comment xml:lang="tr">StarMail epostası</comment>
+ <comment xml:lang="uk">поштове повідомлення StarMail</comment>
+ <comment xml:lang="vi">Thư điện tử StarMail</comment>
+- <comment xml:lang="zh_CN">StarMail 电子邮件</comment>
+- <comment xml:lang="zh_TW">StarMail 郵件</comment>
++ <comment xml:lang="zh-CN">StarMail 电子邮件</comment>
++ <comment xml:lang="zh-TW">StarMail 郵件</comment>
+ <glob pattern="*.smd"/>
+ </mime-type>
+ <mime-type type="application/vnd.stardivision.math">
+ <comment>StarMath formula</comment>
++ <comment xml:lang="af">StarMath-formule</comment>
+ <comment xml:lang="ar">صيغة StarMath</comment>
+- <comment xml:lang="be@latin">Formuła StarMath</comment>
++ <comment xml:lang="be-Latn">Formuła StarMath</comment>
+ <comment xml:lang="bg">Формула — StarMath</comment>
+ <comment xml:lang="ca">fórmula de StarMath</comment>
+ <comment xml:lang="cs">vzorec StarMath</comment>
+ <comment xml:lang="da">StarMath-formel</comment>
+ <comment xml:lang="de">StarMath-Formel</comment>
+ <comment xml:lang="el">Μαθηματικός τύπος StarMath</comment>
+- <comment xml:lang="en_GB">StarMath formula</comment>
++ <comment xml:lang="en-GB">StarMath formula</comment>
+ <comment xml:lang="eo">StarMath-formulo</comment>
+ <comment xml:lang="es">fórmula de StarMath</comment>
+ <comment xml:lang="eu">StarMath formula</comment>
+ <comment xml:lang="fi">StarMath-kaava</comment>
+ <comment xml:lang="fo">StarMath frymil</comment>
+ <comment xml:lang="fr">formule StarMath</comment>
++ <comment xml:lang="fur">formule StarMath</comment>
+ <comment xml:lang="ga">foirmle StarMath</comment>
+ <comment xml:lang="gl">fórmula de StarMath</comment>
+ <comment xml:lang="he">נוסחה של StarMath</comment>
+@@ -4606,7 +4723,7 @@
+ <comment xml:lang="oc">formula StarMath</comment>
+ <comment xml:lang="pl">Formuła StarMath</comment>
+ <comment xml:lang="pt">fórmula do StarMath</comment>
+- <comment xml:lang="pt_BR">Fórmula do StarMath</comment>
++ <comment xml:lang="pt-BR">Fórmula do StarMath</comment>
+ <comment xml:lang="ro">Formulă StarMath</comment>
+ <comment xml:lang="ru">Формула StarMath</comment>
+ <comment xml:lang="sk">Vzorec StarMath</comment>
+@@ -4617,17 +4734,18 @@
+ <comment xml:lang="tr">StarMath formülü</comment>
+ <comment xml:lang="uk">формула StarMath</comment>
+ <comment xml:lang="vi">Công thức StarMath</comment>
+- <comment xml:lang="zh_CN">StarMath 公式</comment>
+- <comment xml:lang="zh_TW">StarMath 公式</comment>
++ <comment xml:lang="zh-CN">StarMath 公式</comment>
++ <comment xml:lang="zh-TW">StarMath 公式</comment>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.smf"/>
+ </mime-type>
+ <mime-type type="application/vnd.stardivision.writer">
+ <comment>StarWriter document</comment>
++ <comment xml:lang="af">StarWriter-dokument</comment>
+ <comment xml:lang="ar">مستند StarWriter</comment>
+ <comment xml:lang="ast">Documentu de StarWriter</comment>
+ <comment xml:lang="az">StarWriter sənədi</comment>
+- <comment xml:lang="be@latin">Dakument StarWriter</comment>
++ <comment xml:lang="be-Latn">Dakument StarWriter</comment>
+ <comment xml:lang="bg">Документ — StarWriter</comment>
+ <comment xml:lang="ca">document StarWriter</comment>
+ <comment xml:lang="cs">dokument StarWriter</comment>
+@@ -4635,13 +4753,14 @@
+ <comment xml:lang="da">StarWriter-dokument</comment>
+ <comment xml:lang="de">StarWriter-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο StarWriter</comment>
+- <comment xml:lang="en_GB">StarWriter document</comment>
++ <comment xml:lang="en-GB">StarWriter document</comment>
+ <comment xml:lang="eo">StarWriter-dokumento</comment>
+ <comment xml:lang="es">documento de StarWriter</comment>
+ <comment xml:lang="eu">StarWriter dokumentua</comment>
+ <comment xml:lang="fi">StarWriter-asiakirja</comment>
+ <comment xml:lang="fo">StarWriter skjal</comment>
+ <comment xml:lang="fr">document StarWriter</comment>
++ <comment xml:lang="fur">document StarWriter</comment>
+ <comment xml:lang="ga">cáipéis StarWriter</comment>
+ <comment xml:lang="gl">documento de StarWriter</comment>
+ <comment xml:lang="he">מסמך של StarWriter</comment>
+@@ -4662,7 +4781,7 @@
+ <comment xml:lang="oc">document StarWriter</comment>
+ <comment xml:lang="pl">Dokument StarWriter</comment>
+ <comment xml:lang="pt">documento do StarWriter</comment>
+- <comment xml:lang="pt_BR">Documento do StarWriter</comment>
++ <comment xml:lang="pt-BR">Documento do StarWriter</comment>
+ <comment xml:lang="ro">Document StarWriter</comment>
+ <comment xml:lang="ru">Документ StarWriter</comment>
+ <comment xml:lang="sk">Dokument StarWriter</comment>
+@@ -4673,33 +4792,35 @@
+ <comment xml:lang="tr">StarWriter belgesi</comment>
+ <comment xml:lang="uk">документ StarWriter</comment>
+ <comment xml:lang="vi">Tài liệu StarWriter</comment>
+- <comment xml:lang="zh_CN">StarWriter 文档</comment>
+- <comment xml:lang="zh_TW">StarWriter 文件</comment>
++ <comment xml:lang="zh-CN">StarWriter 文档</comment>
++ <comment xml:lang="zh-TW">StarWriter 文件</comment>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.sdw"/>
+ <glob pattern="*.vor"/>
+ <glob pattern="*.sgl"/>
+ <magic priority="90">
+- <match value="StarWriter" type="string" offset="2089"/>
++ <match type="string" value="StarWriter" offset="2089"/>
+ </magic>
+ <alias type="application/vnd.stardivision.writer-global"/>
+ </mime-type>
+ <mime-type type="application/vnd.sun.xml.calc">
+ <comment>OpenOffice Calc spreadsheet</comment>
++ <comment xml:lang="af">OpenOffice Calc-sigblad</comment>
+ <comment xml:lang="ar">جدول Calc المكتب المفتوح</comment>
+- <comment xml:lang="be@latin">Raźlikovy arkuš OpenOffice Calc</comment>
++ <comment xml:lang="be-Latn">Raźlikovy arkuš OpenOffice Calc</comment>
+ <comment xml:lang="bg">Таблица — OpenOffice Calc</comment>
+ <comment xml:lang="ca">full de càlcul d'OpenOffice Calc</comment>
+ <comment xml:lang="cs">sešit OpenOffice Calc</comment>
+ <comment xml:lang="da">OpenOffice Calc-regneark</comment>
+ <comment xml:lang="de">OpenOffice-Calc-Tabelle</comment>
+ <comment xml:lang="el">Λογιστικό φύλλο OpenOffice Calc</comment>
+- <comment xml:lang="en_GB">OpenOffice Calc spreadsheet</comment>
+- <comment xml:lang="es">hoja de cálculo de OpenOffice Calc</comment>
++ <comment xml:lang="en-GB">OpenOffice Calc spreadsheet</comment>
++ <comment xml:lang="es">hoja de cálculo de LibreOffice Calc</comment>
+ <comment xml:lang="eu">OpenOffice.org Calc kalkulu-orria</comment>
+ <comment xml:lang="fi">OpenOffice Calc -taulukko</comment>
+ <comment xml:lang="fo">OpenOffice Calc rokniark</comment>
+ <comment xml:lang="fr">feuille de calcul OpenOffice Calc</comment>
++ <comment xml:lang="fur">sfuei di calcul OpenOffice Calc</comment>
+ <comment xml:lang="ga">scarbhileog OpenOffice Calc</comment>
+ <comment xml:lang="gl">folla de cálculo de OpenOffice Calc</comment>
+ <comment xml:lang="he">גליון נתונים של OpenOffice Calc</comment>
+@@ -4718,9 +4839,9 @@
+ <comment xml:lang="nl">OpenOffice.org Calc-rekenblad</comment>
+ <comment xml:lang="nn">OpenOffice Calc-rekneark</comment>
+ <comment xml:lang="oc">fuèlh de calcul OpenOffice Calc</comment>
+- <comment xml:lang="pl">Arkusz kalkulacyjny OpenOffice.org Calc</comment>
++ <comment xml:lang="pl">Arkusz OpenOffice.org Calc</comment>
+ <comment xml:lang="pt">folha de cálculo OpenOffice Calc</comment>
+- <comment xml:lang="pt_BR">Planilha do OpenOffice Calc</comment>
++ <comment xml:lang="pt-BR">Planilha do OpenOffice Calc</comment>
+ <comment xml:lang="ro">Foaie de calcul OpenOffice Calc</comment>
+ <comment xml:lang="ru">Электронная таблица OpenOffice Calc</comment>
+ <comment xml:lang="sk">Zošit OpenOffice Calc</comment>
+@@ -4728,17 +4849,17 @@
+ <comment xml:lang="sq">Fletë llogaritjesh OpenOffice Calc</comment>
+ <comment xml:lang="sr">Табела Опен Офис Рачуна</comment>
+ <comment xml:lang="sv">OpenOffice Calc-kalkylblad</comment>
+- <comment xml:lang="tr">OpenOffice Calc çalışma sayfası</comment>
++ <comment xml:lang="tr">OpenOffice Calc hesap çizelgesi</comment>
+ <comment xml:lang="uk">ел. таблиця OpenOffice Calc</comment>
+ <comment xml:lang="vi">Bảng tính Calc của OpenOffice.org</comment>
+- <comment xml:lang="zh_CN">OpenOffice Calc 电子表格</comment>
+- <comment xml:lang="zh_TW">OpenOffice Calc 試算表</comment>
++ <comment xml:lang="zh-CN">OpenOffice Calc 电子表格</comment>
++ <comment xml:lang="zh-TW">OpenOffice Calc 試算表</comment>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-spreadsheet"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.sun.xml.calc" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" offset="38" value="application/vnd.sun.xml.calc"/>
+ </match>
+ </match>
+ </magic>
+@@ -4746,20 +4867,22 @@
+ </mime-type>
+ <mime-type type="application/vnd.sun.xml.calc.template">
+ <comment>OpenOffice Calc template</comment>
++ <comment xml:lang="af">OpenOffice Calc-sjabloon</comment>
+ <comment xml:lang="ar">قالب Calc المكتب المفتوح</comment>
+- <comment xml:lang="be@latin">Šablon OpenOffice Calc</comment>
++ <comment xml:lang="be-Latn">Šablon OpenOffice Calc</comment>
+ <comment xml:lang="bg">Шаблон за таблици — OpenOffice Calc</comment>
+ <comment xml:lang="ca">plantilla d'OpenOffice Calc</comment>
+ <comment xml:lang="cs">šablona OpenOffice Calc</comment>
+ <comment xml:lang="da">OpenOffice Calc-skabelon</comment>
+ <comment xml:lang="de">OpenOffice-Calc-Vorlage</comment>
+ <comment xml:lang="el">Πρότυπο OpenOffice Calc</comment>
+- <comment xml:lang="en_GB">OpenOffice Calc template</comment>
+- <comment xml:lang="es">plantilla de OpenOffice Calc</comment>
++ <comment xml:lang="en-GB">OpenOffice Calc template</comment>
++ <comment xml:lang="es">plantilla de LibreOffice Calc</comment>
+ <comment xml:lang="eu">OpenOffice Calc txantiloia</comment>
+ <comment xml:lang="fi">OpenOffice Calc -malli</comment>
+ <comment xml:lang="fo">OpenOffice Calc formur</comment>
+ <comment xml:lang="fr">modèle OpenOffice Calc</comment>
++ <comment xml:lang="fur">model OpenOffice Calc</comment>
+ <comment xml:lang="ga">teimpléad OpenOffice Calc</comment>
+ <comment xml:lang="gl">modelo de OpenOffice Calc</comment>
+ <comment xml:lang="he">תבנית של OpenOffice Calc</comment>
+@@ -4780,7 +4903,7 @@
+ <comment xml:lang="oc">modèl OpenOffice Calc</comment>
+ <comment xml:lang="pl">Szablon arkusza OpenOffice.org Calc</comment>
+ <comment xml:lang="pt">modelo OpenOffice Calc</comment>
+- <comment xml:lang="pt_BR">Modelo do OpenOffice Calc</comment>
++ <comment xml:lang="pt-BR">Modelo do OpenOffice Calc</comment>
+ <comment xml:lang="ro">Șablon OpenOffice Calc</comment>
+ <comment xml:lang="ru">Шаблон OpenOffice Calc</comment>
+ <comment xml:lang="sk">Šablóna OpenOffice Calc</comment>
+@@ -4791,14 +4914,14 @@
+ <comment xml:lang="tr">OpenOffice Calc şablonu</comment>
+ <comment xml:lang="uk">шаблон ел.таблиці OpenOffice Calc</comment>
+ <comment xml:lang="vi">Mẫu bảng tính Calc của OpenOffice.org</comment>
+- <comment xml:lang="zh_CN">OpenOffice Calc 模板</comment>
+- <comment xml:lang="zh_TW">OpenOffice Calc 範本</comment>
++ <comment xml:lang="zh-CN">OpenOffice Calc 模板</comment>
++ <comment xml:lang="zh-TW">OpenOffice Calc 範本</comment>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-spreadsheet"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.sun.xml.calc" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" offset="38" value="application/vnd.sun.xml.calc"/>
+ </match>
+ </match>
+ </magic>
+@@ -4806,20 +4929,22 @@
+ </mime-type>
+ <mime-type type="application/vnd.sun.xml.draw">
+ <comment>OpenOffice Draw drawing</comment>
++ <comment xml:lang="af">OpenOffice Draw-tekening</comment>
+ <comment xml:lang="ar">تصميم Draw المكتب المفتوح</comment>
+- <comment xml:lang="be@latin">Rysunak OpenOffice Draw</comment>
++ <comment xml:lang="be-Latn">Rysunak OpenOffice Draw</comment>
+ <comment xml:lang="bg">Чертеж — OpenOffice Draw</comment>
+ <comment xml:lang="ca">dibuix d'OpenOffice Draw</comment>
+ <comment xml:lang="cs">kresba OpenOffice Draw</comment>
+ <comment xml:lang="da">OpenOffice Draw-tegning</comment>
+ <comment xml:lang="de">OpenOffice-Draw-Zeichnung</comment>
+ <comment xml:lang="el">Σχέδιο OpenOffice Draw</comment>
+- <comment xml:lang="en_GB">OpenOffice Draw drawing</comment>
+- <comment xml:lang="es">dibujo de OpenOffice Draw</comment>
++ <comment xml:lang="en-GB">OpenOffice Draw drawing</comment>
++ <comment xml:lang="es">dibujo de LibreOffice Draw</comment>
+ <comment xml:lang="eu">OpenOffice.org Draw marrazkia</comment>
+ <comment xml:lang="fi">OpenOffice Draw -piirros</comment>
+ <comment xml:lang="fo">OpenOffice Draw tekning</comment>
+ <comment xml:lang="fr">dessin OpenOffice Draw</comment>
++ <comment xml:lang="fur">dissen OpenOffice Draw</comment>
+ <comment xml:lang="ga">líníocht OpenOffice Draw</comment>
+ <comment xml:lang="gl">debuxo de OpenOffice Draw</comment>
+ <comment xml:lang="he">ציור של OpenOffice Draw</comment>
+@@ -4840,7 +4965,7 @@
+ <comment xml:lang="oc">dessenh OpenOffice Draw</comment>
+ <comment xml:lang="pl">Rysunek OpenOffice.org Draw</comment>
+ <comment xml:lang="pt">desenho OpenOffice Draw</comment>
+- <comment xml:lang="pt_BR">Desenho do OpenOffice Draw</comment>
++ <comment xml:lang="pt-BR">Desenho do OpenOffice Draw</comment>
+ <comment xml:lang="ro">Desen OpenOffice Draw</comment>
+ <comment xml:lang="ru">Рисунок OpenOffice Draw</comment>
+ <comment xml:lang="sk">Kresba OpenOffice Draw</comment>
+@@ -4851,14 +4976,14 @@
+ <comment xml:lang="tr">OpenOffice Draw çizimi</comment>
+ <comment xml:lang="uk">малюнок OpenOffice Draw</comment>
+ <comment xml:lang="vi">Bản vẽ Draw của OpenOffice.org</comment>
+- <comment xml:lang="zh_CN">OpenOffice Draw 绘图</comment>
+- <comment xml:lang="zh_TW">OpenOffice Draw 繪圖</comment>
++ <comment xml:lang="zh-CN">OpenOffice Draw 绘图</comment>
++ <comment xml:lang="zh-TW">OpenOffice Draw 繪圖</comment>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="image-x-generic"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.sun.xml.draw" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" offset="38" value="application/vnd.sun.xml.draw"/>
+ </match>
+ </match>
+ </magic>
+@@ -4866,20 +4991,22 @@
+ </mime-type>
+ <mime-type type="application/vnd.sun.xml.draw.template">
+ <comment>OpenOffice Draw template</comment>
++ <comment xml:lang="af">OpenOffice Draw-sjabloon</comment>
+ <comment xml:lang="ar">قالب Draw المكتب المفتوح</comment>
+- <comment xml:lang="be@latin">Šablon OpenOffice Draw</comment>
++ <comment xml:lang="be-Latn">Šablon OpenOffice Draw</comment>
+ <comment xml:lang="bg">Шаблон за чертежи — OpenOffice Draw</comment>
+ <comment xml:lang="ca">plantilla d'OpenOffice Draw</comment>
+ <comment xml:lang="cs">šablona OpenOffice Draw</comment>
+ <comment xml:lang="da">OpenOffice Draw-skabelon</comment>
+ <comment xml:lang="de">OpenOffice-Draw-Vorlage</comment>
+ <comment xml:lang="el">Πρότυπο OpenOffice Draw</comment>
+- <comment xml:lang="en_GB">OpenOffice Draw template</comment>
+- <comment xml:lang="es">plantilla de OpenOffice Draw</comment>
++ <comment xml:lang="en-GB">OpenOffice Draw template</comment>
++ <comment xml:lang="es">plantilla de LibreOffice Draw</comment>
+ <comment xml:lang="eu">OpenOffice Draw txantiloia</comment>
+ <comment xml:lang="fi">OpenOffice Draw -malli</comment>
+ <comment xml:lang="fo">OpenOffice Draw formur</comment>
+ <comment xml:lang="fr">modèle OpenOffice Draw</comment>
++ <comment xml:lang="fur">model OpenOffice Draw </comment>
+ <comment xml:lang="ga">teimpléad OpenOffice Draw</comment>
+ <comment xml:lang="gl">modelo de OpenOffice Draw</comment>
+ <comment xml:lang="he">תבנית של OpenOffice Draw</comment>
+@@ -4900,7 +5027,7 @@
+ <comment xml:lang="oc">modèl OpenOffice Draw</comment>
+ <comment xml:lang="pl">Szablon rysunku OpenOffice.org Draw</comment>
+ <comment xml:lang="pt">modelo OpenOffice Draw</comment>
+- <comment xml:lang="pt_BR">Modelo do OpenOffice Draw</comment>
++ <comment xml:lang="pt-BR">Modelo do OpenOffice Draw</comment>
+ <comment xml:lang="ro">Șablon OpenOffice Draw</comment>
+ <comment xml:lang="ru">Шаблон OpenOffice Draw</comment>
+ <comment xml:lang="sk">Šablóna OpenOffice Draw</comment>
+@@ -4911,14 +5038,14 @@
+ <comment xml:lang="tr">OpenOffice Draw şablonu</comment>
+ <comment xml:lang="uk">шаблон малюнку OpenOffice Draw</comment>
+ <comment xml:lang="vi">Mẫu bản vẽ Draw của OpenOffice.org</comment>
+- <comment xml:lang="zh_CN">OpenOffice Draw 模板</comment>
+- <comment xml:lang="zh_TW">OpenOffice Draw 範本</comment>
++ <comment xml:lang="zh-CN">OpenOffice Draw 模板</comment>
++ <comment xml:lang="zh-TW">OpenOffice Draw 範本</comment>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="image-x-generic"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.sun.xml.draw" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" offset="38" value="application/vnd.sun.xml.draw"/>
+ </match>
+ </match>
+ </magic>
+@@ -4926,9 +5053,10 @@
+ </mime-type>
+ <mime-type type="application/vnd.sun.xml.impress">
+ <comment>OpenOffice Impress presentation</comment>
++ <comment xml:lang="af">OpenOffice Impress-voorlegging</comment>
+ <comment xml:lang="ar">عرض تقديمي Impress المكتب المفتوح</comment>
+ <comment xml:lang="az">OpenOffice Impress sənədi</comment>
+- <comment xml:lang="be@latin">Prezentacyja OpenOffice Impress</comment>
++ <comment xml:lang="be-Latn">Prezentacyja OpenOffice Impress</comment>
+ <comment xml:lang="bg">Презентация — OpenOffice Impress</comment>
+ <comment xml:lang="ca">presentació d'OpenOffice Impress</comment>
+ <comment xml:lang="cs">prezentace OpenOffice Impress</comment>
+@@ -4936,12 +5064,13 @@
+ <comment xml:lang="da">OpenOffice Impress-præsentation</comment>
+ <comment xml:lang="de">OpenOffice-Impress-Vorlage</comment>
+ <comment xml:lang="el">Παρουσίαση OpenOffice Impress</comment>
+- <comment xml:lang="en_GB">OpenOffice Impress presentation</comment>
+- <comment xml:lang="es">presentación de OpenOffice Impress</comment>
++ <comment xml:lang="en-GB">OpenOffice Impress presentation</comment>
++ <comment xml:lang="es">presentación de LibreOffice Impress</comment>
+ <comment xml:lang="eu">OpenOffice.org Impress aurkezpena</comment>
+ <comment xml:lang="fi">OpenOffice Impress -esitys</comment>
+ <comment xml:lang="fo">OpenOffice Impress framløga</comment>
+ <comment xml:lang="fr">présentation OpenOffice Impress</comment>
++ <comment xml:lang="fur">presentazion OpenOffice Impress</comment>
+ <comment xml:lang="ga">láithreoireacht OpenOffice Impress</comment>
+ <comment xml:lang="gl">presentación de de OpenOffice Impress</comment>
+ <comment xml:lang="he">מצגת של OpenOffice Impress</comment>
+@@ -4962,7 +5091,7 @@
+ <comment xml:lang="oc">presentacion OpenOffice Impress</comment>
+ <comment xml:lang="pl">Prezentacja OpenOffice.org Impress</comment>
+ <comment xml:lang="pt">apresentação OpenOffice Impress</comment>
+- <comment xml:lang="pt_BR">Apresentação do OpenOffice Impress</comment>
++ <comment xml:lang="pt-BR">Apresentação do OpenOffice Impress</comment>
+ <comment xml:lang="ro">Prezentare OpenOffice Impress</comment>
+ <comment xml:lang="ru">Презентация OpenOffice Impress</comment>
+ <comment xml:lang="sk">Prezentácia OpenOffice Impress</comment>
+@@ -4973,14 +5102,14 @@
+ <comment xml:lang="tr">OpenOffice Impress sunumu</comment>
+ <comment xml:lang="uk">презентація OpenOffice Impress</comment>
+ <comment xml:lang="vi">Trình diễn Impress của OpenOffice.org</comment>
+- <comment xml:lang="zh_CN">OpenOffice Impress 演示文稿</comment>
+- <comment xml:lang="zh_TW">OpenOffice Impress 簡報</comment>
++ <comment xml:lang="zh-CN">OpenOffice Impress 演示文稿</comment>
++ <comment xml:lang="zh-TW">OpenOffice Impress 簡報</comment>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-presentation"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.sun.xml.impress" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" offset="38" value="application/vnd.sun.xml.impress"/>
+ </match>
+ </match>
+ </magic>
+@@ -4988,20 +5117,22 @@
+ </mime-type>
+ <mime-type type="application/vnd.sun.xml.impress.template">
+ <comment>OpenOffice Impress template</comment>
++ <comment xml:lang="af">OpenOffice Impress-sjabloon</comment>
+ <comment xml:lang="ar">قالب Impress المكتب المفتوح</comment>
+- <comment xml:lang="be@latin">Šablon OpenOffice Impress</comment>
++ <comment xml:lang="be-Latn">Šablon OpenOffice Impress</comment>
+ <comment xml:lang="bg">Шаблон за презентации — OpenOffice Impress</comment>
+ <comment xml:lang="ca">plantilla d'OpenOffice Impress</comment>
+ <comment xml:lang="cs">šablona OpenOffice Impress</comment>
+ <comment xml:lang="da">OpenOffice Impress-skabelon</comment>
+ <comment xml:lang="de">OpenOffice-Impress-Vorlage</comment>
+ <comment xml:lang="el">Πρότυπο OpenOffice Impress</comment>
+- <comment xml:lang="en_GB">OpenOffice Impress template</comment>
+- <comment xml:lang="es">plantilla de OpenOffice Impress</comment>
++ <comment xml:lang="en-GB">OpenOffice Impress template</comment>
++ <comment xml:lang="es">plantilla de LibreOffice Impress</comment>
+ <comment xml:lang="eu">OpenOffice Impress txantiloia</comment>
+ <comment xml:lang="fi">OpenOffice Impress -malli</comment>
+ <comment xml:lang="fo">OpenOffice Impress formur</comment>
+ <comment xml:lang="fr">modèle OpenOffice Impress</comment>
++ <comment xml:lang="fur">model OpenOffice Impress</comment>
+ <comment xml:lang="ga">teimpléad OpenOffice Impress</comment>
+ <comment xml:lang="gl">modelo de OpenOffice Impress</comment>
+ <comment xml:lang="he">תבנית של OpenOffice Impress</comment>
+@@ -5022,7 +5153,7 @@
+ <comment xml:lang="oc">modèl OpenOffice Impress</comment>
+ <comment xml:lang="pl">Szablon prezentacji OpenOffice.org Impress</comment>
+ <comment xml:lang="pt">modelo OpenOffice Impress</comment>
+- <comment xml:lang="pt_BR">Modelo do OpenOffice Impress</comment>
++ <comment xml:lang="pt-BR">Modelo do OpenOffice Impress</comment>
+ <comment xml:lang="ro">Șablon OpenOffice Impress</comment>
+ <comment xml:lang="ru">Шаблон OpenOffice Impress</comment>
+ <comment xml:lang="sk">Šablóna OpenOffice Impress</comment>
+@@ -5033,14 +5164,14 @@
+ <comment xml:lang="tr">OpenOffice Impress şablonu</comment>
+ <comment xml:lang="uk">шаблон презентації OpenOffice Impress</comment>
+ <comment xml:lang="vi">Mẫu trình diễn Impress của OpenOffice.org</comment>
+- <comment xml:lang="zh_CN">OpenOffice Impress 模板</comment>
+- <comment xml:lang="zh_TW">OpenOffice Impress 範本</comment>
++ <comment xml:lang="zh-CN">OpenOffice Impress 模板</comment>
++ <comment xml:lang="zh-TW">OpenOffice Impress 範本</comment>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-presentation"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.sun.xml.impress" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" offset="38" value="application/vnd.sun.xml.impress"/>
+ </match>
+ </match>
+ </magic>
+@@ -5048,20 +5179,22 @@
+ </mime-type>
+ <mime-type type="application/vnd.sun.xml.math">
+ <comment>OpenOffice Math formula</comment>
++ <comment xml:lang="af">OpenOffice Math-formule</comment>
+ <comment xml:lang="ar">صيغة Math المكتب المفتوح</comment>
+- <comment xml:lang="be@latin">Formuła OpenOffice Math</comment>
++ <comment xml:lang="be-Latn">Formuła OpenOffice Math</comment>
+ <comment xml:lang="bg">Формула — OpenOffice Math</comment>
+ <comment xml:lang="ca">fórmula d'OpenOffice Math</comment>
+ <comment xml:lang="cs">vzorec OpenOffice Math</comment>
+ <comment xml:lang="da">OpenOffice Math-formel</comment>
+ <comment xml:lang="de">OpenOffice-Math-Formel</comment>
+ <comment xml:lang="el">Μαθηματικός τύπος OpenOffice Math</comment>
+- <comment xml:lang="en_GB">OpenOffice Math formula</comment>
+- <comment xml:lang="es">fórmula de OpenOffice Math</comment>
++ <comment xml:lang="en-GB">OpenOffice Math formula</comment>
++ <comment xml:lang="es">fórmula de LibreOffice Math</comment>
+ <comment xml:lang="eu">OpenOffice.org Math formula</comment>
+ <comment xml:lang="fi">OpenOffice Math -kaava</comment>
+ <comment xml:lang="fo">OpenOffice Math frymil</comment>
+ <comment xml:lang="fr">formule OpenOffice Math</comment>
++ <comment xml:lang="fur">formule OpenOffice Math</comment>
+ <comment xml:lang="ga">foirmle OpenOffice Math</comment>
+ <comment xml:lang="gl">fórmula de OpenOffice Math</comment>
+ <comment xml:lang="he">נוסחה של OpenOffice Math</comment>
+@@ -5082,7 +5215,7 @@
+ <comment xml:lang="oc">formula OpenOffice Math</comment>
+ <comment xml:lang="pl">Formuła OpenOffice.org Math</comment>
+ <comment xml:lang="pt">fórmula OpenOffice Math</comment>
+- <comment xml:lang="pt_BR">Fórmula do OpenOffice Math</comment>
++ <comment xml:lang="pt-BR">Fórmula do OpenOffice Math</comment>
+ <comment xml:lang="ro">Formulă OpenOffice Math</comment>
+ <comment xml:lang="ru">Формула OpenOffice Math</comment>
+ <comment xml:lang="sk">Vzorec OpenOffice Math</comment>
+@@ -5093,14 +5226,14 @@
+ <comment xml:lang="tr">OpenOffice Math formülü</comment>
+ <comment xml:lang="uk">формула OpenOffice Math</comment>
+ <comment xml:lang="vi">Công thức Math của OpenOffice.org</comment>
+- <comment xml:lang="zh_CN">OpenOffice Math 公式</comment>
+- <comment xml:lang="zh_TW">OpenOffice Math 公式</comment>
++ <comment xml:lang="zh-CN">OpenOffice Math 公式</comment>
++ <comment xml:lang="zh-TW">OpenOffice Math 公式</comment>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.sun.xml.math" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" offset="38" value="application/vnd.sun.xml.math"/>
+ </match>
+ </match>
+ </magic>
+@@ -5108,10 +5241,11 @@
+ </mime-type>
+ <mime-type type="application/vnd.sun.xml.writer">
+ <comment>OpenOffice Writer document</comment>
++ <comment xml:lang="af">OpenOffice Writer-dokument</comment>
+ <comment xml:lang="ar">مستند Writer المكتب المفتوح</comment>
+ <comment xml:lang="ast">Documentu d'OpenOffice Writer</comment>
+ <comment xml:lang="az">OpenOffice Writer sənədi</comment>
+- <comment xml:lang="be@latin">Dakument OpenOffice Writer</comment>
++ <comment xml:lang="be-Latn">Dakument OpenOffice Writer</comment>
+ <comment xml:lang="bg">Документ — OpenOffice Writer</comment>
+ <comment xml:lang="ca">document d'OpenOffice Writer</comment>
+ <comment xml:lang="cs">dokument OpenOffice Writer</comment>
+@@ -5119,12 +5253,13 @@
+ <comment xml:lang="da">OpenOffice Writer-dokument</comment>
+ <comment xml:lang="de">OpenOffice-Writer-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο OpenOffice Writer</comment>
+- <comment xml:lang="en_GB">OpenOffice Writer document</comment>
+- <comment xml:lang="es">documento de OpenOffice Writer</comment>
++ <comment xml:lang="en-GB">OpenOffice Writer document</comment>
++ <comment xml:lang="es">documento de LibreOffice Writer</comment>
+ <comment xml:lang="eu">OpenOffice.org Writer dokumentua</comment>
+ <comment xml:lang="fi">OpenOffice Writer -asiakirja</comment>
+ <comment xml:lang="fo">OpenOffice Writer skjal</comment>
+ <comment xml:lang="fr">document OpenOffice Writer</comment>
++ <comment xml:lang="fur">document OpenOffice Writer</comment>
+ <comment xml:lang="ga">cáipéis OpenOffice Writer</comment>
+ <comment xml:lang="gl">documento de OpenOffice Writer</comment>
+ <comment xml:lang="he">מסמך של OpenOffice Writer</comment>
+@@ -5145,7 +5280,7 @@
+ <comment xml:lang="oc">document OpenOffice Writer</comment>
+ <comment xml:lang="pl">Dokument OpenOffice.org Writer</comment>
+ <comment xml:lang="pt">documento OpenOffice Writer</comment>
+- <comment xml:lang="pt_BR">Documento do OpenOffice Writer</comment>
++ <comment xml:lang="pt-BR">Documento do OpenOffice Writer</comment>
+ <comment xml:lang="ro">Document OpenOffice Writer</comment>
+ <comment xml:lang="ru">Документ OpenOffice Writer</comment>
+ <comment xml:lang="sk">Dokument OpenOffice Writer</comment>
+@@ -5156,14 +5291,14 @@
+ <comment xml:lang="tr">OpenOffice Writer belgesi</comment>
+ <comment xml:lang="uk">документ OpenOffice Writer</comment>
+ <comment xml:lang="vi">Tài liệu Writer của OpenOffice.org</comment>
+- <comment xml:lang="zh_CN">OpenOffice Writer 文档</comment>
+- <comment xml:lang="zh_TW">OpenOffice Writer 文件</comment>
++ <comment xml:lang="zh-CN">OpenOffice Writer 文档</comment>
++ <comment xml:lang="zh-TW">OpenOffice Writer 文件</comment>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.sun.xml.writer" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" offset="38" value="application/vnd.sun.xml.writer"/>
+ </match>
+ </match>
+ </magic>
+@@ -5171,23 +5306,25 @@
+ </mime-type>
+ <mime-type type="application/vnd.sun.xml.writer.global">
+ <comment>OpenOffice Writer global document</comment>
++ <comment xml:lang="af">OpenOffice Writer globale dokument</comment>
+ <comment xml:lang="ar">مستند المكتب المفتوح Writer العالمي</comment>
+ <comment xml:lang="ast">Documentu global d'OpenOffice Writer</comment>
+ <comment xml:lang="az">OpenOffice Writer qlobal sənədi</comment>
+- <comment xml:lang="be@latin">Hlabalny dakument OpenOffice Writer</comment>
+- <comment xml:lang="bg">Документ - глобален — OpenOffice Writer</comment>
++ <comment xml:lang="be-Latn">Hlabalny dakument OpenOffice Writer</comment>
++ <comment xml:lang="bg">Глобален документ — OpenOffice Writer</comment>
+ <comment xml:lang="ca">document global d'OpenOffice Writer</comment>
+ <comment xml:lang="cs">globální dokument OpenOffice Writer</comment>
+ <comment xml:lang="cy">Dogfen eang OpenOffice (Writer)</comment>
+ <comment xml:lang="da">OpenOffice Writer-globalt dokument</comment>
+ <comment xml:lang="de">OpenOffice-Writer-Globaldokument</comment>
+ <comment xml:lang="el">Καθολικό έγγραφο OpenOffice Writer</comment>
+- <comment xml:lang="en_GB">OpenOffice Writer global document</comment>
+- <comment xml:lang="es">documento global de OpenOffice Writer</comment>
++ <comment xml:lang="en-GB">OpenOffice Writer global document</comment>
++ <comment xml:lang="es">documento global de LibreOffice Writer</comment>
+ <comment xml:lang="eu">OpenOffice.org Writer dokumentu globala</comment>
+ <comment xml:lang="fi">OpenOffice Writer - yleinen asiakirja</comment>
+ <comment xml:lang="fo">OpenOffice Writer heiltøkt skjal</comment>
+ <comment xml:lang="fr">document global OpenOffice Writer</comment>
++ <comment xml:lang="fur">document globâl OpenOffice Writer</comment>
+ <comment xml:lang="ga">cáipéis chomhchoiteann OpenOffice Writer</comment>
+ <comment xml:lang="gl">documento global de OpenOffice Writer</comment>
+ <comment xml:lang="he">מסמך גלובלי של OpenOffice Writer</comment>
+@@ -5208,7 +5345,7 @@
+ <comment xml:lang="oc">document global OpenOffice Writer</comment>
+ <comment xml:lang="pl">Globalny dokument OpenOffice.org Writer</comment>
+ <comment xml:lang="pt">documento global OpenOffice Writer</comment>
+- <comment xml:lang="pt_BR">Documento global do OpenOffice Writer</comment>
++ <comment xml:lang="pt-BR">Documento global do OpenOffice Writer</comment>
+ <comment xml:lang="ro">Document global OpenOffice Writer</comment>
+ <comment xml:lang="ru">Основной документ OpenOffice Writer</comment>
+ <comment xml:lang="sk">Globálny dokument OpenOffice Writer</comment>
+@@ -5219,14 +5356,14 @@
+ <comment xml:lang="tr">OpenOffice Writer global belgesi</comment>
+ <comment xml:lang="uk">загальний документ OpenOffice Writer</comment>
+ <comment xml:lang="vi">Tài liệu toàn cục Writer của OpenOffice.org</comment>
+- <comment xml:lang="zh_CN">OpenOffice Writer 全局文档</comment>
+- <comment xml:lang="zh_TW">OpenOffice Writer 主控文件</comment>
++ <comment xml:lang="zh-CN">OpenOffice Writer 全局文档</comment>
++ <comment xml:lang="zh-TW">OpenOffice Writer 主控文件</comment>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.sun.xml.writer" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" offset="38" value="application/vnd.sun.xml.writer"/>
+ </match>
+ </match>
+ </magic>
+@@ -5234,9 +5371,10 @@
+ </mime-type>
+ <mime-type type="application/vnd.sun.xml.writer.template">
+ <comment>OpenOffice Writer template</comment>
++ <comment xml:lang="af">OpenOffice Writer-sjabloon</comment>
+ <comment xml:lang="ar">قالب Writer المكتب المفتوح</comment>
+ <comment xml:lang="az">OpenOffice Writer şablonu</comment>
+- <comment xml:lang="be@latin">Šablon OpenOffice Writer</comment>
++ <comment xml:lang="be-Latn">Šablon OpenOffice Writer</comment>
+ <comment xml:lang="bg">Шаблон за документи — OpenOffice Writer</comment>
+ <comment xml:lang="ca">plantilla d'OpenOffice Writer</comment>
+ <comment xml:lang="cs">šablona OpenOffice Writer</comment>
+@@ -5244,12 +5382,13 @@
+ <comment xml:lang="da">OpenOffice Writer-skabelon</comment>
+ <comment xml:lang="de">OpenOffice-Writer-Vorlage</comment>
+ <comment xml:lang="el">Πρότυπο OpenOffice Writer</comment>
+- <comment xml:lang="en_GB">OpenOffice Writer template</comment>
+- <comment xml:lang="es">plantilla de OpenOffice Writer</comment>
++ <comment xml:lang="en-GB">OpenOffice Writer template</comment>
++ <comment xml:lang="es">plantilla de LibreOffice Writer</comment>
+ <comment xml:lang="eu">OpenOffice Writer txantiloia</comment>
+ <comment xml:lang="fi">OpenOffice Writer -malli</comment>
+ <comment xml:lang="fo">OpenOffice Writer formur</comment>
+ <comment xml:lang="fr">modèle OpenOffice Writer</comment>
++ <comment xml:lang="fur">model OpenOffice Writer</comment>
+ <comment xml:lang="ga">teimpléad OpenOffice Writer</comment>
+ <comment xml:lang="gl">modelo de OpenOffice Writer</comment>
+ <comment xml:lang="he">תסנית של OpenOffice Writer</comment>
+@@ -5271,7 +5410,7 @@
+ <comment xml:lang="oc">modèl OpenOffice Writer</comment>
+ <comment xml:lang="pl">Szablon dokumentu OpenOffice.org Writer</comment>
+ <comment xml:lang="pt">modelo OpenOffice Writer</comment>
+- <comment xml:lang="pt_BR">Modelo do OpenOffice Writer</comment>
++ <comment xml:lang="pt-BR">Modelo do OpenOffice Writer</comment>
+ <comment xml:lang="ro">Șablon OpenOffice Writer</comment>
+ <comment xml:lang="ru">Шаблон OpenOffice Writer</comment>
+ <comment xml:lang="sk">Šablóna OpenOffice Writer</comment>
+@@ -5282,14 +5421,14 @@
+ <comment xml:lang="tr">OpenOffice Writer şablonu</comment>
+ <comment xml:lang="uk">шаблон документа OpenOffice Writer</comment>
+ <comment xml:lang="vi">Mẫu tài liệu Writer của OpenOffice.org</comment>
+- <comment xml:lang="zh_CN">OpenOffice Writer 模板</comment>
+- <comment xml:lang="zh_TW">OpenOffice Writer 範本</comment>
++ <comment xml:lang="zh-CN">OpenOffice Writer 模板</comment>
++ <comment xml:lang="zh-TW">OpenOffice Writer 範本</comment>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.sun.xml.writer" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" offset="38" value="application/vnd.sun.xml.writer"/>
+ </match>
+ </match>
+ </magic>
+@@ -5297,22 +5436,24 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.text">
+ <comment>ODT document</comment>
++ <comment xml:lang="af">ODT-dokument</comment>
+ <comment xml:lang="ar">مستند ODT</comment>
+ <comment xml:lang="ast">Documentu ODT</comment>
+- <comment xml:lang="be@latin">Dakument ODT</comment>
++ <comment xml:lang="be-Latn">Dakument ODT</comment>
+ <comment xml:lang="bg">Документ — ODT</comment>
+ <comment xml:lang="ca">document ODT</comment>
+ <comment xml:lang="cs">dokument ODT</comment>
+ <comment xml:lang="da">ODT-dokument</comment>
+ <comment xml:lang="de">ODT-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο ODT</comment>
+- <comment xml:lang="en_GB">ODT document</comment>
++ <comment xml:lang="en-GB">ODT document</comment>
+ <comment xml:lang="eo">ODT-dokumento</comment>
+ <comment xml:lang="es">documento ODT</comment>
+ <comment xml:lang="eu">ODT dokumentua</comment>
+ <comment xml:lang="fi">ODT-asiakirja</comment>
+ <comment xml:lang="fo">ODT skjal</comment>
+ <comment xml:lang="fr">document ODT</comment>
++ <comment xml:lang="fur">document ODT</comment>
+ <comment xml:lang="ga">cáipéis ODT</comment>
+ <comment xml:lang="gl">documento ODT</comment>
+ <comment xml:lang="he">מסמך ODT</comment>
+@@ -5333,7 +5474,7 @@
+ <comment xml:lang="oc">document ODT</comment>
+ <comment xml:lang="pl">Dokument ODT</comment>
+ <comment xml:lang="pt">documento ODT</comment>
+- <comment xml:lang="pt_BR">Documento ODT</comment>
++ <comment xml:lang="pt-BR">Documento ODT</comment>
+ <comment xml:lang="ro">Document ODT</comment>
+ <comment xml:lang="ru">Документ ODT</comment>
+ <comment xml:lang="sk">Dokument ODT</comment>
+@@ -5344,16 +5485,16 @@
+ <comment xml:lang="tr">ODT belgesi</comment>
+ <comment xml:lang="uk">документ ODT</comment>
+ <comment xml:lang="vi">Tài liệu ODT</comment>
+- <comment xml:lang="zh_CN">ODT 文档</comment>
+- <comment xml:lang="zh_TW">ODT 文件</comment>
++ <comment xml:lang="zh-CN">ODT 文档</comment>
++ <comment xml:lang="zh-TW">ODT 文件</comment>
+ <acronym>ODT</acronym>
+ <expanded-acronym>OpenDocument Text</expanded-acronym>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.oasis.opendocument.text" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/vnd.oasis.opendocument.text" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -5361,6 +5502,7 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.text-flat-xml">
+ <comment>ODT document (Flat XML)</comment>
++ <comment xml:lang="af">ODT-dokument (plat XML)</comment>
+ <comment xml:lang="ar">مستند ODT (Flat XML)</comment>
+ <comment xml:lang="ast">Documentu ODT (XML planu)</comment>
+ <comment xml:lang="bg">Документ — ODT (само XML)</comment>
+@@ -5369,12 +5511,13 @@
+ <comment xml:lang="da">ODT-dokument (flad XML)</comment>
+ <comment xml:lang="de">ODT-Dokument (Unkomprimiertes XML)</comment>
+ <comment xml:lang="el">Έγγραφο ODT (Flat XML)</comment>
+- <comment xml:lang="en_GB">ODT document (Flat XML)</comment>
++ <comment xml:lang="en-GB">ODT document (Flat XML)</comment>
+ <comment xml:lang="es">documento ODT (XML plano)</comment>
+ <comment xml:lang="eu">ODT dokumentua (XML soila)</comment>
+ <comment xml:lang="fi">ODT-asiakirja (Flat XML)</comment>
+ <comment xml:lang="fo">ODT skjal (Flat XML)</comment>
+ <comment xml:lang="fr">document ODT (XML plat)</comment>
++ <comment xml:lang="fur">document ODT (XML sempliç)</comment>
+ <comment xml:lang="ga">cáipéis ODT (XML cothrom)</comment>
+ <comment xml:lang="gl">documento ODT (XML plano)</comment>
+ <comment xml:lang="he">מסמך ODT‏ (Flat XML)</comment>
+@@ -5393,7 +5536,7 @@
+ <comment xml:lang="oc">document ODT (XML plat)</comment>
+ <comment xml:lang="pl">Dokument ODT (prosty XML)</comment>
+ <comment xml:lang="pt">documento ODT (XML plano)</comment>
+- <comment xml:lang="pt_BR">Documento ODT (Flat XML)</comment>
++ <comment xml:lang="pt-BR">Documento ODT (Flat XML)</comment>
+ <comment xml:lang="ro">Document ODT (XML simplu)</comment>
+ <comment xml:lang="ru">Документ ODT (простой XML)</comment>
+ <comment xml:lang="sk">Dokument ODT (čisté XML)</comment>
+@@ -5402,8 +5545,8 @@
+ <comment xml:lang="sv">ODT-dokument (platt XML)</comment>
+ <comment xml:lang="tr">ODT belgesi (Düz XML)</comment>
+ <comment xml:lang="uk">документ ODT (Flat XML)</comment>
+- <comment xml:lang="zh_CN">ODT 文档(Flat XML)</comment>
+- <comment xml:lang="zh_TW">ODT 文件 (Flat XML)</comment>
++ <comment xml:lang="zh-CN">ODT 文档(Flat XML)</comment>
++ <comment xml:lang="zh-TW">ODT 文件 (Flat XML)</comment>
+ <acronym>FODT</acronym>
+ <expanded-acronym>OpenDocument Text (Flat XML)</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+@@ -5412,21 +5555,23 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.text-template">
+ <comment>ODT template</comment>
++ <comment xml:lang="af">ODT-sjabloon</comment>
+ <comment xml:lang="ar">قالب ODT</comment>
+- <comment xml:lang="be@latin">Šablon ODT</comment>
++ <comment xml:lang="be-Latn">Šablon ODT</comment>
+ <comment xml:lang="bg">Шаблон за документи — ODT</comment>
+ <comment xml:lang="ca">plantilla ODT</comment>
+ <comment xml:lang="cs">šablona ODT</comment>
+ <comment xml:lang="da">ODT-skabelon</comment>
+ <comment xml:lang="de">ODT-Vorlage</comment>
+ <comment xml:lang="el">Πρότυπο ODT</comment>
+- <comment xml:lang="en_GB">ODT template</comment>
++ <comment xml:lang="en-GB">ODT template</comment>
+ <comment xml:lang="eo">ODT-ŝablono</comment>
+ <comment xml:lang="es">plantilla ODT</comment>
+ <comment xml:lang="eu">ODT txantiloia</comment>
+ <comment xml:lang="fi">ODT-malli</comment>
+ <comment xml:lang="fo">ODT formur</comment>
+ <comment xml:lang="fr">modèle ODT</comment>
++ <comment xml:lang="fur">model ODT</comment>
+ <comment xml:lang="ga">teimpléad ODT</comment>
+ <comment xml:lang="gl">modelo ODT</comment>
+ <comment xml:lang="he">תבנית ODT</comment>
+@@ -5447,7 +5592,7 @@
+ <comment xml:lang="oc">modèl ODT</comment>
+ <comment xml:lang="pl">Szablon ODT</comment>
+ <comment xml:lang="pt">modelo ODT</comment>
+- <comment xml:lang="pt_BR">Modelo ODT</comment>
++ <comment xml:lang="pt-BR">Modelo ODT</comment>
+ <comment xml:lang="ro">Șablon ODT</comment>
+ <comment xml:lang="ru">Шаблон ODT</comment>
+ <comment xml:lang="sk">Šablóna ODT</comment>
+@@ -5458,16 +5603,16 @@
+ <comment xml:lang="tr">ODT şablonu</comment>
+ <comment xml:lang="uk">шаблон ODT</comment>
+ <comment xml:lang="vi">Mẫu ODT</comment>
+- <comment xml:lang="zh_CN">ODT 模板</comment>
+- <comment xml:lang="zh_TW">ODT 範本</comment>
++ <comment xml:lang="zh-CN">ODT 模板</comment>
++ <comment xml:lang="zh-TW">ODT 範本</comment>
+ <acronym>ODT</acronym>
+ <expanded-acronym>OpenDocument Text</expanded-acronym>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.oasis.opendocument.text-template" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/vnd.oasis.opendocument.text-template" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -5475,21 +5620,23 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.text-web">
+ <comment>OTH template</comment>
++ <comment xml:lang="af">OTH-sjabloon</comment>
+ <comment xml:lang="ar">قالب OTH</comment>
+- <comment xml:lang="be@latin">Šablon OTH</comment>
++ <comment xml:lang="be-Latn">Šablon OTH</comment>
+ <comment xml:lang="bg">Шаблон за страници — OTH</comment>
+ <comment xml:lang="ca">plantilla OTH</comment>
+ <comment xml:lang="cs">šablona OTH</comment>
+ <comment xml:lang="da">OTH-skabelon</comment>
+ <comment xml:lang="de">OTH-Vorlage</comment>
+ <comment xml:lang="el">Πρότυπο OTH</comment>
+- <comment xml:lang="en_GB">OTH template</comment>
++ <comment xml:lang="en-GB">OTH template</comment>
+ <comment xml:lang="eo">OTH-ŝablono</comment>
+ <comment xml:lang="es">plantilla OTH</comment>
+ <comment xml:lang="eu">OTH txantiloia</comment>
+ <comment xml:lang="fi">OTH-malli</comment>
+ <comment xml:lang="fo">OTH formur</comment>
+ <comment xml:lang="fr">modèle OTH</comment>
++ <comment xml:lang="fur">model OTH</comment>
+ <comment xml:lang="ga">teimpléad OTH</comment>
+ <comment xml:lang="gl">modelo OTH</comment>
+ <comment xml:lang="he">תבנית OTH</comment>
+@@ -5510,7 +5657,7 @@
+ <comment xml:lang="oc">modèl OTH</comment>
+ <comment xml:lang="pl">Szablon OTH</comment>
+ <comment xml:lang="pt">modelo OTH</comment>
+- <comment xml:lang="pt_BR">Modelo OTH</comment>
++ <comment xml:lang="pt-BR">Modelo OTH</comment>
+ <comment xml:lang="ro">Șablon OTH</comment>
+ <comment xml:lang="ru">Шаблон OTH</comment>
+ <comment xml:lang="sk">Šablóna OTH</comment>
+@@ -5521,16 +5668,16 @@
+ <comment xml:lang="tr">OTH şablonu</comment>
+ <comment xml:lang="uk">шаблон OTH</comment>
+ <comment xml:lang="vi">Mẫu ODH</comment>
+- <comment xml:lang="zh_CN">OTH 模板</comment>
+- <comment xml:lang="zh_TW">OTH 範本</comment>
++ <comment xml:lang="zh-CN">OTH 模板</comment>
++ <comment xml:lang="zh-TW">OTH 範本</comment>
+ <acronym>OTH</acronym>
+ <expanded-acronym>OpenDocument HTML</expanded-acronym>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="text-html"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.oasis.opendocument.text-web" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/vnd.oasis.opendocument.text-web" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -5538,22 +5685,24 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.text-master">
+ <comment>ODM document</comment>
++ <comment xml:lang="af">ODM-dokument</comment>
+ <comment xml:lang="ar">مستند ODM</comment>
+ <comment xml:lang="ast">Documentu ODM</comment>
+- <comment xml:lang="be@latin">Dakument ODM</comment>
++ <comment xml:lang="be-Latn">Dakument ODM</comment>
+ <comment xml:lang="bg">Документ — ODM</comment>
+ <comment xml:lang="ca">document ODM</comment>
+ <comment xml:lang="cs">dokument ODM</comment>
+ <comment xml:lang="da">ODM-dokument</comment>
+ <comment xml:lang="de">ODM-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο ODM</comment>
+- <comment xml:lang="en_GB">ODM document</comment>
++ <comment xml:lang="en-GB">ODM document</comment>
+ <comment xml:lang="eo">ODM-dokumento</comment>
+ <comment xml:lang="es">documento ODM</comment>
+ <comment xml:lang="eu">ODM dokumentua</comment>
+ <comment xml:lang="fi">ODM-asiakirja</comment>
+ <comment xml:lang="fo">ODM skjal</comment>
+ <comment xml:lang="fr">document ODM</comment>
++ <comment xml:lang="fur">document ODM</comment>
+ <comment xml:lang="ga">cáipéis ODM</comment>
+ <comment xml:lang="gl">documento ODM</comment>
+ <comment xml:lang="he">מסמך ODM</comment>
+@@ -5574,7 +5723,7 @@
+ <comment xml:lang="oc">document ODM</comment>
+ <comment xml:lang="pl">Dokument ODM</comment>
+ <comment xml:lang="pt">documento ODM</comment>
+- <comment xml:lang="pt_BR">Documento ODM</comment>
++ <comment xml:lang="pt-BR">Documento ODM</comment>
+ <comment xml:lang="ro">Document ODM</comment>
+ <comment xml:lang="ru">Документ ODM</comment>
+ <comment xml:lang="sk">Dokument ODM</comment>
+@@ -5585,16 +5734,16 @@
+ <comment xml:lang="tr">ODM belgesi</comment>
+ <comment xml:lang="uk">документ ODM</comment>
+ <comment xml:lang="vi">Tài liệu ODM</comment>
+- <comment xml:lang="zh_CN">ODM 文档</comment>
+- <comment xml:lang="zh_TW">ODM 文件</comment>
++ <comment xml:lang="zh-CN">ODM 文档</comment>
++ <comment xml:lang="zh-TW">ODM 文件</comment>
+ <acronym>ODM</acronym>
+ <expanded-acronym>OpenDocument Master</expanded-acronym>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.oasis.opendocument.text-master" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/vnd.oasis.opendocument.text-master" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -5602,21 +5751,23 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.graphics">
+ <comment>ODG drawing</comment>
++ <comment xml:lang="af">ODG-tekening</comment>
+ <comment xml:lang="ar">تصميم ODG</comment>
+- <comment xml:lang="be@latin">Rysunak ODG</comment>
++ <comment xml:lang="be-Latn">Rysunak ODG</comment>
+ <comment xml:lang="bg">Чертеж — ODG</comment>
+ <comment xml:lang="ca">dibuix ODG</comment>
+ <comment xml:lang="cs">kresba ODG</comment>
+ <comment xml:lang="da">ODG-tegning</comment>
+ <comment xml:lang="de">ODG-Zeichnung</comment>
+ <comment xml:lang="el">Σχέδιο ODG</comment>
+- <comment xml:lang="en_GB">ODG drawing</comment>
++ <comment xml:lang="en-GB">ODG drawing</comment>
+ <comment xml:lang="eo">ODG-desegnaĵo</comment>
+ <comment xml:lang="es">dibujo ODG</comment>
+ <comment xml:lang="eu">ODG marrazkia</comment>
+ <comment xml:lang="fi">ODG-piirros</comment>
+ <comment xml:lang="fo">ODG tekning</comment>
+ <comment xml:lang="fr">dessin ODG</comment>
++ <comment xml:lang="fur">dissen ODG</comment>
+ <comment xml:lang="ga">líníocht ODG</comment>
+ <comment xml:lang="gl">debuxo ODG</comment>
+ <comment xml:lang="he">ציור ODG</comment>
+@@ -5637,7 +5788,7 @@
+ <comment xml:lang="oc">dessenh ODG</comment>
+ <comment xml:lang="pl">Rysunek ODG</comment>
+ <comment xml:lang="pt">desenho ODG</comment>
+- <comment xml:lang="pt_BR">Desenho ODG</comment>
++ <comment xml:lang="pt-BR">Desenho ODG</comment>
+ <comment xml:lang="ro">Desen ODG</comment>
+ <comment xml:lang="ru">Рисунок ODG</comment>
+ <comment xml:lang="sk">Kresba ODG</comment>
+@@ -5648,16 +5799,16 @@
+ <comment xml:lang="tr">ODG çizimi</comment>
+ <comment xml:lang="uk">малюнок ODG</comment>
+ <comment xml:lang="vi">Bản vẽ ODG</comment>
+- <comment xml:lang="zh_CN">ODG 绘图</comment>
+- <comment xml:lang="zh_TW">ODG 繪圖</comment>
++ <comment xml:lang="zh-CN">ODG 绘图</comment>
++ <comment xml:lang="zh-TW">ODG 繪圖</comment>
+ <acronym>ODG</acronym>
+ <expanded-acronym>OpenDocument Drawing</expanded-acronym>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="image-x-generic"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.oasis.opendocument.graphics" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/vnd.oasis.opendocument.graphics" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -5665,6 +5816,7 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.graphics-flat-xml">
+ <comment>ODG drawing (Flat XML)</comment>
++ <comment xml:lang="af">ODG-tekening (plat XML)</comment>
+ <comment xml:lang="ar">رسمة ODG (Flat XML)</comment>
+ <comment xml:lang="bg">Чертеж — ODG (само XML)</comment>
+ <comment xml:lang="ca">dibuix ODG (XML pla) </comment>
+@@ -5672,12 +5824,13 @@
+ <comment xml:lang="da">ODG-tegning (flad XML)</comment>
+ <comment xml:lang="de">ODG-Zeichnung (Unkomprimiertes XML)</comment>
+ <comment xml:lang="el">Σχέδιο ODG (Flat XML)</comment>
+- <comment xml:lang="en_GB">ODG drawing (Flat XML)</comment>
++ <comment xml:lang="en-GB">ODG drawing (Flat XML)</comment>
+ <comment xml:lang="es">dibujo ODG (XML plano)</comment>
+ <comment xml:lang="eu">ODG marrazkia (XML soila)</comment>
+ <comment xml:lang="fi">ODG-piirros (Flat XML)</comment>
+ <comment xml:lang="fo">ODG tekning (Flat XML)</comment>
+ <comment xml:lang="fr">dessin ODG (XML plat)</comment>
++ <comment xml:lang="fur">dissen ODG (XML sempliç)</comment>
+ <comment xml:lang="ga">líníocht ODG (XML cothrom)</comment>
+ <comment xml:lang="gl">debuxo ODB (XML plano)</comment>
+ <comment xml:lang="he">ציור ODG (Flat XML(</comment>
+@@ -5696,7 +5849,7 @@
+ <comment xml:lang="oc">dessenh ODG (XML plat)</comment>
+ <comment xml:lang="pl">Rysunek ODG (prosty XML)</comment>
+ <comment xml:lang="pt">desenho ODG (XML plano)</comment>
+- <comment xml:lang="pt_BR">Desenho ODG (Flat XML)</comment>
++ <comment xml:lang="pt-BR">Desenho ODG (Flat XML)</comment>
+ <comment xml:lang="ro">Desen ODG (XML simplu)</comment>
+ <comment xml:lang="ru">Рисунок ODG (простой XML)</comment>
+ <comment xml:lang="sk">Kresba ODG (čisté XML)</comment>
+@@ -5704,9 +5857,9 @@
+ <comment xml:lang="sr">ОДГ цртеж (Обичан ИксМЛ)</comment>
+ <comment xml:lang="sv">ODG-teckning (platt XML)</comment>
+ <comment xml:lang="tr">ODG çizimi (Düz XML)</comment>
+- <comment xml:lang="uk">малюнок ODG (Flat XML)</comment>
+- <comment xml:lang="zh_CN">ODG 绘图(Flat XML)</comment>
+- <comment xml:lang="zh_TW">ODG 繪圖 (Flat XML)</comment>
++ <comment xml:lang="uk">малюнок ODG (простий XML)</comment>
++ <comment xml:lang="zh-CN">ODG 绘图(Flat XML)</comment>
++ <comment xml:lang="zh-TW">ODG 繪圖 (Flat XML)</comment>
+ <acronym>FODG</acronym>
+ <expanded-acronym>OpenDocument Drawing (Flat XML)</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+@@ -5715,21 +5868,23 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.graphics-template">
+ <comment>ODG template</comment>
++ <comment xml:lang="af">ODG-sjabloon</comment>
+ <comment xml:lang="ar">قالب ODG</comment>
+- <comment xml:lang="be@latin">Šablon ODG</comment>
++ <comment xml:lang="be-Latn">Šablon ODG</comment>
+ <comment xml:lang="bg">Шаблон за чертежи — ODG</comment>
+ <comment xml:lang="ca">plantilla ODG</comment>
+ <comment xml:lang="cs">šablona ODG</comment>
+ <comment xml:lang="da">ODG-skabelon</comment>
+ <comment xml:lang="de">ODG-Vorlage</comment>
+ <comment xml:lang="el">Πρότυπο ODG</comment>
+- <comment xml:lang="en_GB">ODG template</comment>
++ <comment xml:lang="en-GB">ODG template</comment>
+ <comment xml:lang="eo">ODG-ŝablono</comment>
+ <comment xml:lang="es">plantilla ODG</comment>
+ <comment xml:lang="eu">ODG txantiloia</comment>
+ <comment xml:lang="fi">ODG-malli</comment>
+ <comment xml:lang="fo">ODG formur</comment>
+ <comment xml:lang="fr">modèle ODG</comment>
++ <comment xml:lang="fur">model ODG</comment>
+ <comment xml:lang="ga">teimpléad ODG</comment>
+ <comment xml:lang="gl">modelo ODG</comment>
+ <comment xml:lang="he">תבנית ODG</comment>
+@@ -5750,7 +5905,7 @@
+ <comment xml:lang="oc">modèl ODG</comment>
+ <comment xml:lang="pl">Szablon ODG</comment>
+ <comment xml:lang="pt">modelo ODG</comment>
+- <comment xml:lang="pt_BR">Modelo ODG</comment>
++ <comment xml:lang="pt-BR">Modelo ODG</comment>
+ <comment xml:lang="ro">Șablon ODG</comment>
+ <comment xml:lang="ru">Шаблон ODG</comment>
+ <comment xml:lang="sk">Šablóna ODG</comment>
+@@ -5761,16 +5916,16 @@
+ <comment xml:lang="tr">ODG şablonu</comment>
+ <comment xml:lang="uk">шаблон ODG</comment>
+ <comment xml:lang="vi">Mẫu ODG</comment>
+- <comment xml:lang="zh_CN">ODG 模板</comment>
+- <comment xml:lang="zh_TW">ODG 範本</comment>
++ <comment xml:lang="zh-CN">ODG 模板</comment>
++ <comment xml:lang="zh-TW">ODG 範本</comment>
+ <acronym>ODG</acronym>
+ <expanded-acronym>OpenDocument Drawing</expanded-acronym>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="image-x-generic"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.oasis.opendocument.graphics-template" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/vnd.oasis.opendocument.graphics-template" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -5778,21 +5933,23 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.presentation">
+ <comment>ODP presentation</comment>
++ <comment xml:lang="af">ODP-voorlegging</comment>
+ <comment xml:lang="ar">عرض تقديمي ODP</comment>
+- <comment xml:lang="be@latin">Prezentacyja ODP</comment>
++ <comment xml:lang="be-Latn">Prezentacyja ODP</comment>
+ <comment xml:lang="bg">Презентация — ODP</comment>
+ <comment xml:lang="ca">presentació ODP</comment>
+ <comment xml:lang="cs">prezentace ODP</comment>
+ <comment xml:lang="da">ODP-præsentation</comment>
+ <comment xml:lang="de">ODP-Präsentation</comment>
+ <comment xml:lang="el">Παρουσίαση ODP</comment>
+- <comment xml:lang="en_GB">ODP presentation</comment>
++ <comment xml:lang="en-GB">ODP presentation</comment>
+ <comment xml:lang="eo">ODP-prezentaĵo</comment>
+ <comment xml:lang="es">presentación ODP</comment>
+ <comment xml:lang="eu">ODP aurkezpena</comment>
+ <comment xml:lang="fi">ODP-esitys</comment>
+ <comment xml:lang="fo">ODP framløga</comment>
+ <comment xml:lang="fr">présentation ODP</comment>
++ <comment xml:lang="fur">presentazion ODP</comment>
+ <comment xml:lang="ga">láithreoireacht ODP</comment>
+ <comment xml:lang="gl">presentación ODP</comment>
+ <comment xml:lang="he">מצגת ODP</comment>
+@@ -5813,7 +5970,7 @@
+ <comment xml:lang="oc">presentacion ODP</comment>
+ <comment xml:lang="pl">Prezentacja ODP</comment>
+ <comment xml:lang="pt">apresentação ODP</comment>
+- <comment xml:lang="pt_BR">Apresentação ODP</comment>
++ <comment xml:lang="pt-BR">Apresentação ODP</comment>
+ <comment xml:lang="ro">Prezentare ODP</comment>
+ <comment xml:lang="ru">Презентация ODP</comment>
+ <comment xml:lang="sk">Prezentácia ODP</comment>
+@@ -5824,16 +5981,16 @@
+ <comment xml:lang="tr">ODP sunumu</comment>
+ <comment xml:lang="uk">презентація ODP</comment>
+ <comment xml:lang="vi">Trình diễn ODM</comment>
+- <comment xml:lang="zh_CN">ODP 演示文稿</comment>
+- <comment xml:lang="zh_TW">ODP 簡報</comment>
++ <comment xml:lang="zh-CN">ODP 演示文稿</comment>
++ <comment xml:lang="zh-TW">ODP 簡報</comment>
+ <acronym>ODP</acronym>
+ <expanded-acronym>OpenDocument Presentation</expanded-acronym>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-presentation"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.oasis.opendocument.presentation" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/vnd.oasis.opendocument.presentation" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -5841,6 +5998,7 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.presentation-flat-xml">
+ <comment>ODP presentation (Flat XML)</comment>
++ <comment xml:lang="af">ODP-voorlegging (plat XML)</comment>
+ <comment xml:lang="ar">عرض ODP (Flat XML)</comment>
+ <comment xml:lang="bg">Презентация — ODP (само XML)</comment>
+ <comment xml:lang="ca">presentació ODP (XML pla)</comment>
+@@ -5848,12 +6006,13 @@
+ <comment xml:lang="da">ODP-præsentation (flad XML)</comment>
+ <comment xml:lang="de">ODP-Präsentation (Unkomprimiertes XML)</comment>
+ <comment xml:lang="el">Παρουσίαση ODP (Flat XML)</comment>
+- <comment xml:lang="en_GB">ODP presentation (Flat XML)</comment>
++ <comment xml:lang="en-GB">ODP presentation (Flat XML)</comment>
+ <comment xml:lang="es">presentación ODP (XML plano)</comment>
+ <comment xml:lang="eu">ODP aurkezpena (XML soila)</comment>
+ <comment xml:lang="fi">ODP-esitys (Flat XML)</comment>
+ <comment xml:lang="fo">ODP framløga (Flat XML)</comment>
+ <comment xml:lang="fr">présentation ODP (XML plat)</comment>
++ <comment xml:lang="fur">presentazion ODP (XML sempliç)</comment>
+ <comment xml:lang="ga">láithreoireacht ODP (XML cothrom)</comment>
+ <comment xml:lang="gl">presentación ODP (XML plano)</comment>
+ <comment xml:lang="he">מצגת ODP‏ (Flat XML)</comment>
+@@ -5872,7 +6031,7 @@
+ <comment xml:lang="oc">presentacion ODP (XML plat)</comment>
+ <comment xml:lang="pl">Prezentacja ODP (prosty XML)</comment>
+ <comment xml:lang="pt">apresentação ODP (XML plano)</comment>
+- <comment xml:lang="pt_BR">Apresentação ODP (Flat XML)</comment>
++ <comment xml:lang="pt-BR">Apresentação ODP (Flat XML)</comment>
+ <comment xml:lang="ro">Prezentare ODP (XML simplu)</comment>
+ <comment xml:lang="ru">Презентация ODP (простой XML)</comment>
+ <comment xml:lang="sk">Prezentácia ODP (čisté XML)</comment>
+@@ -5881,8 +6040,8 @@
+ <comment xml:lang="sv">ODP-presentation (platt XML)</comment>
+ <comment xml:lang="tr">ODP sunumu (Düz XML)</comment>
+ <comment xml:lang="uk">презентація ODP (Flat XML)</comment>
+- <comment xml:lang="zh_CN">ODP 演示文稿(Flat XML)</comment>
+- <comment xml:lang="zh_TW">ODP 範本 (Flat XML)</comment>
++ <comment xml:lang="zh-CN">ODP 演示文稿(Flat XML)</comment>
++ <comment xml:lang="zh-TW">ODP 範本 (Flat XML)</comment>
+ <acronym>FODP</acronym>
+ <expanded-acronym>OpenDocument Presentation (Flat XML)</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+@@ -5891,21 +6050,23 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.presentation-template">
+ <comment>ODP template</comment>
++ <comment xml:lang="af">ODP-sjabloon</comment>
+ <comment xml:lang="ar">قالب ODP</comment>
+- <comment xml:lang="be@latin">Šablon ODP</comment>
++ <comment xml:lang="be-Latn">Šablon ODP</comment>
+ <comment xml:lang="bg">Шаблон за презентации — ODP</comment>
+ <comment xml:lang="ca">plantilla ODP</comment>
+ <comment xml:lang="cs">šablona ODP</comment>
+ <comment xml:lang="da">ODP-skabelon</comment>
+ <comment xml:lang="de">ODP-Vorlage</comment>
+ <comment xml:lang="el">Πρότυπο ODP</comment>
+- <comment xml:lang="en_GB">ODP template</comment>
++ <comment xml:lang="en-GB">ODP template</comment>
+ <comment xml:lang="eo">ODP-ŝablono</comment>
+ <comment xml:lang="es">plantilla ODP</comment>
+ <comment xml:lang="eu">ODP txantiloia</comment>
+ <comment xml:lang="fi">ODP-malli</comment>
+ <comment xml:lang="fo">ODP formur</comment>
+ <comment xml:lang="fr">modèle ODP</comment>
++ <comment xml:lang="fur">model ODP</comment>
+ <comment xml:lang="ga">teimpléad ODP</comment>
+ <comment xml:lang="gl">modelo ODP</comment>
+ <comment xml:lang="he">תבנית ODP</comment>
+@@ -5926,7 +6087,7 @@
+ <comment xml:lang="oc">modèl ODP</comment>
+ <comment xml:lang="pl">Szablon ODP</comment>
+ <comment xml:lang="pt">modelo ODP</comment>
+- <comment xml:lang="pt_BR">Modelo ODP</comment>
++ <comment xml:lang="pt-BR">Modelo ODP</comment>
+ <comment xml:lang="ro">Șablon ODP</comment>
+ <comment xml:lang="ru">Шаблон ODP</comment>
+ <comment xml:lang="sk">Šablóna ODP</comment>
+@@ -5937,16 +6098,16 @@
+ <comment xml:lang="tr">ODP şablonu</comment>
+ <comment xml:lang="uk">шаблон ODP</comment>
+ <comment xml:lang="vi">Mẫu ODP</comment>
+- <comment xml:lang="zh_CN">ODP 模板</comment>
+- <comment xml:lang="zh_TW">ODP 範本</comment>
++ <comment xml:lang="zh-CN">ODP 模板</comment>
++ <comment xml:lang="zh-TW">ODP 範本</comment>
+ <acronym>ODP</acronym>
+ <expanded-acronym>OpenDocument Presentation</expanded-acronym>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-presentation"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.oasis.opendocument.presentation-template" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/vnd.oasis.opendocument.presentation-template" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -5954,21 +6115,23 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.spreadsheet">
+ <comment>ODS spreadsheet</comment>
++ <comment xml:lang="af">ODS-sigblad</comment>
+ <comment xml:lang="ar">جدول ODS</comment>
+- <comment xml:lang="be@latin">Raźlikovy arkuš ODS</comment>
++ <comment xml:lang="be-Latn">Raźlikovy arkuš ODS</comment>
+ <comment xml:lang="bg">Таблица — ODS</comment>
+ <comment xml:lang="ca">full de càlcul ODS</comment>
+ <comment xml:lang="cs">sešit ODS</comment>
+ <comment xml:lang="da">ODS-regneark</comment>
+ <comment xml:lang="de">ODS-Tabelle</comment>
+ <comment xml:lang="el">Λογιστικό φύλλο ODS</comment>
+- <comment xml:lang="en_GB">ODS spreadsheet</comment>
++ <comment xml:lang="en-GB">ODS spreadsheet</comment>
+ <comment xml:lang="eo">ODS-kalkultabelo</comment>
+ <comment xml:lang="es">hoja de cálculo ODS</comment>
+ <comment xml:lang="eu">ODS kalkulu-orria</comment>
+ <comment xml:lang="fi">ODS-taulukko</comment>
+ <comment xml:lang="fo">ODS rokniark</comment>
+ <comment xml:lang="fr">feuille de calcul ODS</comment>
++ <comment xml:lang="fur">sfuei di calcul ODS</comment>
+ <comment xml:lang="ga">scarbhileog ODS</comment>
+ <comment xml:lang="gl">folla de cálculo ODS</comment>
+ <comment xml:lang="he">גליון נתונים ODS</comment>
+@@ -5989,7 +6152,7 @@
+ <comment xml:lang="oc">fuèlh de calcul ODS</comment>
+ <comment xml:lang="pl">Arkusz ODS</comment>
+ <comment xml:lang="pt">folha de cálculo ODS</comment>
+- <comment xml:lang="pt_BR">Planilha ODS</comment>
++ <comment xml:lang="pt-BR">Planilha ODS</comment>
+ <comment xml:lang="ro">Foaie de calcul ODS</comment>
+ <comment xml:lang="ru">Электронная таблица ODS</comment>
+ <comment xml:lang="sk">Zošit ODS</comment>
+@@ -5997,19 +6160,19 @@
+ <comment xml:lang="sq">Fletë llogaritjesh ODS</comment>
+ <comment xml:lang="sr">ОДС табела</comment>
+ <comment xml:lang="sv">ODS-kalkylblad</comment>
+- <comment xml:lang="tr">ODS çalışma sayfası</comment>
++ <comment xml:lang="tr">ODS hesap çizelgesi</comment>
+ <comment xml:lang="uk">ел. таблиця ODS</comment>
+ <comment xml:lang="vi">Bảng tính ODS</comment>
+- <comment xml:lang="zh_CN">ODS 电子表格</comment>
+- <comment xml:lang="zh_TW">ODS 試算表</comment>
++ <comment xml:lang="zh-CN">ODS 电子表格</comment>
++ <comment xml:lang="zh-TW">ODS 試算表</comment>
+ <acronym>ODS</acronym>
+ <expanded-acronym>OpenDocument Spreadsheet</expanded-acronym>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-spreadsheet"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.oasis.opendocument.spreadsheet" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/vnd.oasis.opendocument.spreadsheet" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -6017,6 +6180,7 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.spreadsheet-flat-xml">
+ <comment>ODS spreadsheet (Flat XML)</comment>
++ <comment xml:lang="af">ODS-sigblad (plat XML)</comment>
+ <comment xml:lang="ar">جدول ODS (Flat XML)</comment>
+ <comment xml:lang="bg">Таблица — ODS (само XML)</comment>
+ <comment xml:lang="ca">full de càlcul ODS (XML pla)</comment>
+@@ -6024,12 +6188,13 @@
+ <comment xml:lang="da">ODS-regneark (flad XML)</comment>
+ <comment xml:lang="de">ODS-Tabelle (Unkomprimiertes XML)</comment>
+ <comment xml:lang="el">Λογιστικό φύλλο ODS (Flat XML)</comment>
+- <comment xml:lang="en_GB">ODS spreadsheet (Flat XML)</comment>
++ <comment xml:lang="en-GB">ODS spreadsheet (Flat XML)</comment>
+ <comment xml:lang="es">hoja de cálculo ODS (XML plano)</comment>
+ <comment xml:lang="eu">ODS kalkulu-orria (XML soila)</comment>
+ <comment xml:lang="fi">ODS-laskentataulukko (Flat XML)</comment>
+ <comment xml:lang="fo">ODS rokniark (Flat XML)</comment>
+ <comment xml:lang="fr">feuille de calcul ODS (XML plat)</comment>
++ <comment xml:lang="fur">sfuei di calcul ODS (XML sempliç)</comment>
+ <comment xml:lang="ga">scarbhileog ODS (XML cothrom)</comment>
+ <comment xml:lang="gl">folla de cálculo ODS (XML plano)</comment>
+ <comment xml:lang="he">גליון נתונים ODS‏ (XML פשוט)</comment>
+@@ -6048,17 +6213,17 @@
+ <comment xml:lang="oc">fuèlh de calcul ODS (XML plat)</comment>
+ <comment xml:lang="pl">Arkusz ODS (prosty XML)</comment>
+ <comment xml:lang="pt">folha de cálculo ODS (XML plano)</comment>
+- <comment xml:lang="pt_BR">Planilha ODS (Flat XML)</comment>
++ <comment xml:lang="pt-BR">Planilha ODS (Flat XML)</comment>
+ <comment xml:lang="ro">Foaie de calcul ODS (XML simplu)</comment>
+ <comment xml:lang="ru">Электронная таблица ODS (простой XML)</comment>
+ <comment xml:lang="sk">Zošit ODS (čisté XML)</comment>
+ <comment xml:lang="sl">Preglednica ODS (nepovezan XML)</comment>
+ <comment xml:lang="sr">ОДС табела (обични ИксМЛ)</comment>
+ <comment xml:lang="sv">ODS-kalkylblad (platt XML)</comment>
+- <comment xml:lang="tr">ODS sunumu (Düz XML)</comment>
++ <comment xml:lang="tr">ODS hesap çizelgesi (Düz XML)</comment>
+ <comment xml:lang="uk">ел. таблиця ODS (Flat XML)</comment>
+- <comment xml:lang="zh_CN">ODS 电子表格 (Flat XML)</comment>
+- <comment xml:lang="zh_TW">ODS 試算表 (Flat XML)</comment>
++ <comment xml:lang="zh-CN">ODS 电子表格 (Flat XML)</comment>
++ <comment xml:lang="zh-TW">ODS 試算表 (Flat XML)</comment>
+ <acronym>FODS</acronym>
+ <expanded-acronym>OpenDocument Spreadsheet (Flat XML)</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+@@ -6067,21 +6232,23 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.spreadsheet-template">
+ <comment>ODS template</comment>
++ <comment xml:lang="af">ODS-sjabloon</comment>
+ <comment xml:lang="ar">قالب ODS</comment>
+- <comment xml:lang="be@latin">Šablon ODS</comment>
++ <comment xml:lang="be-Latn">Šablon ODS</comment>
+ <comment xml:lang="bg">Шаблон за таблици — ODS</comment>
+ <comment xml:lang="ca">plantilla ODS</comment>
+ <comment xml:lang="cs">šablona ODS</comment>
+ <comment xml:lang="da">ODS-skabelon</comment>
+ <comment xml:lang="de">ODS-Vorlage</comment>
+ <comment xml:lang="el">Πρότυπο ODS</comment>
+- <comment xml:lang="en_GB">ODS template</comment>
++ <comment xml:lang="en-GB">ODS template</comment>
+ <comment xml:lang="eo">ODS-ŝablono</comment>
+ <comment xml:lang="es">plantilla ODS</comment>
+ <comment xml:lang="eu">ODS txantiloia</comment>
+ <comment xml:lang="fi">ODS-malli</comment>
+ <comment xml:lang="fo">ODS formur</comment>
+ <comment xml:lang="fr">modèle ODS</comment>
++ <comment xml:lang="fur">model ODS</comment>
+ <comment xml:lang="ga">teimpléad ODS</comment>
+ <comment xml:lang="gl">modelo ODS</comment>
+ <comment xml:lang="he">תבנית ODS</comment>
+@@ -6102,7 +6269,7 @@
+ <comment xml:lang="oc">modèl ODS</comment>
+ <comment xml:lang="pl">Szablon ODS</comment>
+ <comment xml:lang="pt">modelo ODS</comment>
+- <comment xml:lang="pt_BR">Modelo ODS</comment>
++ <comment xml:lang="pt-BR">Modelo ODS</comment>
+ <comment xml:lang="ro">Șablon ODS</comment>
+ <comment xml:lang="ru">Шаблон ODS</comment>
+ <comment xml:lang="sk">Šablóna ODS</comment>
+@@ -6113,16 +6280,16 @@
+ <comment xml:lang="tr">ODS şablonu</comment>
+ <comment xml:lang="uk">шаблон ODS</comment>
+ <comment xml:lang="vi">Mẫu ODS</comment>
+- <comment xml:lang="zh_CN">ODS 模板</comment>
+- <comment xml:lang="zh_TW">ODS 範本</comment>
++ <comment xml:lang="zh-CN">ODS 模板</comment>
++ <comment xml:lang="zh-TW">ODS 範本</comment>
+ <acronym>ODS</acronym>
+ <expanded-acronym>OpenDocument Spreadsheet</expanded-acronym>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-spreadsheet"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.oasis.opendocument.spreadsheet-template" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/vnd.oasis.opendocument.spreadsheet-template" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -6130,21 +6297,23 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.chart">
+ <comment>ODC chart</comment>
++ <comment xml:lang="af">ODC-grafiek</comment>
+ <comment xml:lang="ar">مخطط ODC</comment>
+- <comment xml:lang="be@latin">Dyjahrama ODC</comment>
++ <comment xml:lang="be-Latn">Dyjahrama ODC</comment>
+ <comment xml:lang="bg">Диаграма — ODC</comment>
+ <comment xml:lang="ca">diagrama ODC</comment>
+ <comment xml:lang="cs">graf ODC</comment>
+ <comment xml:lang="da">ODC-diagram</comment>
+ <comment xml:lang="de">ODC-Diagramm</comment>
+ <comment xml:lang="el">Διάγραμμα ODC</comment>
+- <comment xml:lang="en_GB">ODC chart</comment>
++ <comment xml:lang="en-GB">ODC chart</comment>
+ <comment xml:lang="eo">ODC-diagramo</comment>
+ <comment xml:lang="es">gráfico ODC</comment>
+ <comment xml:lang="eu">ODC diagrama</comment>
+ <comment xml:lang="fi">ODC-kaavio</comment>
+ <comment xml:lang="fo">ODC strikumynd</comment>
+ <comment xml:lang="fr">graphique ODC</comment>
++ <comment xml:lang="fur">grafic ODC</comment>
+ <comment xml:lang="ga">cairt ODC</comment>
+ <comment xml:lang="gl">gráfica ODC</comment>
+ <comment xml:lang="he">תו ODC</comment>
+@@ -6164,7 +6333,7 @@
+ <comment xml:lang="oc">grafic ODC</comment>
+ <comment xml:lang="pl">Wykres ODC</comment>
+ <comment xml:lang="pt">gráfico ODC</comment>
+- <comment xml:lang="pt_BR">Gráfico ODC</comment>
++ <comment xml:lang="pt-BR">Gráfico ODC</comment>
+ <comment xml:lang="ro">Diagramă ODC</comment>
+ <comment xml:lang="ru">Диаграмма ODC</comment>
+ <comment xml:lang="sk">Graf ODC</comment>
+@@ -6172,19 +6341,19 @@
+ <comment xml:lang="sq">Grafik ODC</comment>
+ <comment xml:lang="sr">ОДЦ график</comment>
+ <comment xml:lang="sv">ODC-diagram</comment>
+- <comment xml:lang="tr">ODC çizelgesi</comment>
++ <comment xml:lang="tr">ODC çizgesi</comment>
+ <comment xml:lang="uk">діаграма ODC</comment>
+ <comment xml:lang="vi">Sơ đồ ODC</comment>
+- <comment xml:lang="zh_CN">ODC 图表</comment>
+- <comment xml:lang="zh_TW">ODC 圖表</comment>
++ <comment xml:lang="zh-CN">ODC 图表</comment>
++ <comment xml:lang="zh-TW">ODC 圖表</comment>
+ <acronym>ODC</acronym>
+ <expanded-acronym>OpenDocument Chart</expanded-acronym>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-spreadsheet"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.oasis.opendocument.chart" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/vnd.oasis.opendocument.chart" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -6192,6 +6361,7 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.chart-template">
+ <comment>ODC template</comment>
++ <comment xml:lang="af">ODC-sjabloon</comment>
+ <comment xml:lang="ar">قالب ODC</comment>
+ <comment xml:lang="bg">Шаблон за диаграми — ODC</comment>
+ <comment xml:lang="ca">plantilla ODC</comment>
+@@ -6199,13 +6369,14 @@
+ <comment xml:lang="da">ODC-skabelon</comment>
+ <comment xml:lang="de">ODC-Vorlage</comment>
+ <comment xml:lang="el">Πρότυπο ODC</comment>
+- <comment xml:lang="en_GB">ODC template</comment>
++ <comment xml:lang="en-GB">ODC template</comment>
+ <comment xml:lang="eo">ODC-ŝablono</comment>
+ <comment xml:lang="es">plantilla ODC</comment>
+ <comment xml:lang="eu">ODC txantiloia</comment>
+ <comment xml:lang="fi">ODC-malli</comment>
+ <comment xml:lang="fo">ODC formur</comment>
+ <comment xml:lang="fr">modèle ODC</comment>
++ <comment xml:lang="fur">model ODC</comment>
+ <comment xml:lang="ga">teimpléad ODC</comment>
+ <comment xml:lang="gl">modelo ODC</comment>
+ <comment xml:lang="he">תבנית ODC</comment>
+@@ -6224,7 +6395,7 @@
+ <comment xml:lang="oc">modèl ODC</comment>
+ <comment xml:lang="pl">Szablon ODC</comment>
+ <comment xml:lang="pt">modelo ODC</comment>
+- <comment xml:lang="pt_BR">Modelo ODC</comment>
++ <comment xml:lang="pt-BR">Modelo ODC</comment>
+ <comment xml:lang="ro">Șablon ODC</comment>
+ <comment xml:lang="ru">Шаблон ODC</comment>
+ <comment xml:lang="sk">Šablóna ODC</comment>
+@@ -6234,16 +6405,16 @@
+ <comment xml:lang="tr">ODC şablonu</comment>
+ <comment xml:lang="uk">шаблон ODC</comment>
+ <comment xml:lang="vi">Mẫu ODC</comment>
+- <comment xml:lang="zh_CN">ODC 模板</comment>
+- <comment xml:lang="zh_TW">ODC 範本</comment>
++ <comment xml:lang="zh-CN">ODC 模板</comment>
++ <comment xml:lang="zh-TW">ODC 範本</comment>
+ <acronym>ODC</acronym>
+ <expanded-acronym>OpenDocument Chart</expanded-acronym>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-spreadsheet"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.oasis.opendocument.chart-template" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/vnd.oasis.opendocument.chart-template" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -6251,21 +6422,23 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.formula">
+ <comment>ODF formula</comment>
++ <comment xml:lang="af">ODF-formule</comment>
+ <comment xml:lang="ar">صيغة ODF</comment>
+- <comment xml:lang="be@latin">Formuła ODF</comment>
++ <comment xml:lang="be-Latn">Formuła ODF</comment>
+ <comment xml:lang="bg">Формула — ODF</comment>
+ <comment xml:lang="ca">fórmula ODF</comment>
+ <comment xml:lang="cs">vzorec ODF</comment>
+ <comment xml:lang="da">ODF-formel</comment>
+ <comment xml:lang="de">ODF-Formel</comment>
+ <comment xml:lang="el">Μαθηματικός τύπος ODF</comment>
+- <comment xml:lang="en_GB">ODF formula</comment>
++ <comment xml:lang="en-GB">ODF formula</comment>
+ <comment xml:lang="eo">ODF-formulo</comment>
+ <comment xml:lang="es">fórmula ODF</comment>
+ <comment xml:lang="eu">ODF formula</comment>
+ <comment xml:lang="fi">ODF-kaava</comment>
+ <comment xml:lang="fo">ODF frymil</comment>
+ <comment xml:lang="fr">formule ODF</comment>
++ <comment xml:lang="fur">formule ODF</comment>
+ <comment xml:lang="ga">foirmle ODF</comment>
+ <comment xml:lang="gl">Fórula ODF</comment>
+ <comment xml:lang="he">נוסחת ODF</comment>
+@@ -6286,7 +6459,7 @@
+ <comment xml:lang="oc">formula ODF</comment>
+ <comment xml:lang="pl">Formuła ODF</comment>
+ <comment xml:lang="pt">fórmula ODF</comment>
+- <comment xml:lang="pt_BR">Fórmula ODF</comment>
++ <comment xml:lang="pt-BR">Fórmula ODF</comment>
+ <comment xml:lang="ro">Formulă ODF</comment>
+ <comment xml:lang="ru">Формула ODF</comment>
+ <comment xml:lang="sk">Vzorec ODF</comment>
+@@ -6297,16 +6470,16 @@
+ <comment xml:lang="tr">ODF formülü</comment>
+ <comment xml:lang="uk">формула ODF</comment>
+ <comment xml:lang="vi">Công thức ODF</comment>
+- <comment xml:lang="zh_CN">ODF 公式</comment>
+- <comment xml:lang="zh_TW">ODF 公式</comment>
++ <comment xml:lang="zh-CN">ODF 公式</comment>
++ <comment xml:lang="zh-TW">ODF 公式</comment>
+ <acronym>ODF</acronym>
+ <expanded-acronym>OpenDocument Formula</expanded-acronym>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.oasis.opendocument.formula" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/vnd.oasis.opendocument.formula" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -6314,6 +6487,7 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.formula-template">
+ <comment>ODF template</comment>
++ <comment xml:lang="af">ODF-sjabloon</comment>
+ <comment xml:lang="ar">قالب ODF</comment>
+ <comment xml:lang="bg">Шаблон за формули — ODF</comment>
+ <comment xml:lang="ca">plantilla ODF</comment>
+@@ -6321,13 +6495,14 @@
+ <comment xml:lang="da">ODF-skabelon</comment>
+ <comment xml:lang="de">ODF-Vorlage</comment>
+ <comment xml:lang="el">Πρότυπο ODF</comment>
+- <comment xml:lang="en_GB">ODF template</comment>
++ <comment xml:lang="en-GB">ODF template</comment>
+ <comment xml:lang="eo">ODF-ŝablono</comment>
+ <comment xml:lang="es">plantilla ODF</comment>
+ <comment xml:lang="eu">ODF txantiloia</comment>
+ <comment xml:lang="fi">ODF-malli</comment>
+ <comment xml:lang="fo">ODF formur</comment>
+ <comment xml:lang="fr">modèle ODF</comment>
++ <comment xml:lang="fur">model ODF</comment>
+ <comment xml:lang="ga">teimpléad ODF</comment>
+ <comment xml:lang="gl">modelo ODF</comment>
+ <comment xml:lang="he">תבנית ODF</comment>
+@@ -6346,7 +6521,7 @@
+ <comment xml:lang="oc">modèl ODF</comment>
+ <comment xml:lang="pl">Szablon ODF</comment>
+ <comment xml:lang="pt">modelo ODF</comment>
+- <comment xml:lang="pt_BR">Modelo ODF</comment>
++ <comment xml:lang="pt-BR">Modelo ODF</comment>
+ <comment xml:lang="ro">Șablon ODF</comment>
+ <comment xml:lang="ru">Шаблон ODF</comment>
+ <comment xml:lang="sk">Šablóna ODF</comment>
+@@ -6356,16 +6531,16 @@
+ <comment xml:lang="tr">ODF şablonu</comment>
+ <comment xml:lang="uk">шаблон ODF</comment>
+ <comment xml:lang="vi">Mẫu ODF</comment>
+- <comment xml:lang="zh_CN">ODF 模板</comment>
+- <comment xml:lang="zh_TW">ODF 範本</comment>
++ <comment xml:lang="zh-CN">ODF 模板</comment>
++ <comment xml:lang="zh-TW">ODF 範本</comment>
+ <acronym>ODF</acronym>
+ <expanded-acronym>OpenDocument Formula</expanded-acronym>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.oasis.opendocument.formula-template" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/vnd.oasis.opendocument.formula-template" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -6373,21 +6548,23 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.database">
+ <comment>ODB database</comment>
++ <comment xml:lang="af">ODB-databasis</comment>
+ <comment xml:lang="ar">قاعدة بيانات ODB</comment>
+- <comment xml:lang="be@latin">Baza źviestak ODB</comment>
++ <comment xml:lang="be-Latn">Baza źviestak ODB</comment>
+ <comment xml:lang="bg">База от данни — ODB</comment>
+ <comment xml:lang="ca">base de dades ODB</comment>
+ <comment xml:lang="cs">databáze ODB</comment>
+ <comment xml:lang="da">ODB-database</comment>
+ <comment xml:lang="de">ODB-Datenbank</comment>
+ <comment xml:lang="el">Βάση δεδομένων ODB</comment>
+- <comment xml:lang="en_GB">ODB database</comment>
++ <comment xml:lang="en-GB">ODB database</comment>
+ <comment xml:lang="eo">ODB-datumbazo</comment>
+ <comment xml:lang="es">base de datos ODB</comment>
+ <comment xml:lang="eu">ODB datu-basea</comment>
+ <comment xml:lang="fi">ODB-tietokanta</comment>
+ <comment xml:lang="fo">ODB dátustovnur</comment>
+ <comment xml:lang="fr">base de données ODB</comment>
++ <comment xml:lang="fur">base di dâts ODB</comment>
+ <comment xml:lang="ga">bunachar sonraí ODB</comment>
+ <comment xml:lang="gl">base de datos ODB</comment>
+ <comment xml:lang="he">מסד נתונים ODB</comment>
+@@ -6408,7 +6585,7 @@
+ <comment xml:lang="oc">banca de donadas ODB</comment>
+ <comment xml:lang="pl">Baza danych ODB</comment>
+ <comment xml:lang="pt">base de dados ODB</comment>
+- <comment xml:lang="pt_BR">Banco de dados ODB</comment>
++ <comment xml:lang="pt-BR">Banco de dados ODB</comment>
+ <comment xml:lang="ro">Bază de date ODB</comment>
+ <comment xml:lang="ru">База данных ODB</comment>
+ <comment xml:lang="sk">Databáza ODB</comment>
+@@ -6416,19 +6593,19 @@
+ <comment xml:lang="sq">Bazë me të dhëna ODB</comment>
+ <comment xml:lang="sr">ОДБ база података</comment>
+ <comment xml:lang="sv">ODB-databas</comment>
+- <comment xml:lang="tr">ODB veritabanı</comment>
++ <comment xml:lang="tr">ODB veri tabanı</comment>
+ <comment xml:lang="uk">база даних ODB</comment>
+ <comment xml:lang="vi">Cơ sở dữ liệu ODB</comment>
+- <comment xml:lang="zh_CN">ODB 数据库</comment>
+- <comment xml:lang="zh_TW">ODB 資料庫</comment>
++ <comment xml:lang="zh-CN">ODB 数据库</comment>
++ <comment xml:lang="zh-TW">ODB 資料庫</comment>
+ <acronym>ODB</acronym>
+ <expanded-acronym>OpenDocument Database</expanded-acronym>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.oasis.opendocument.base" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/vnd.oasis.opendocument.base" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -6437,22 +6614,24 @@
+ </mime-type>
+ <mime-type type="application/vnd.oasis.opendocument.image">
+ <comment>ODI image</comment>
++ <comment xml:lang="af">ODI-beeld</comment>
+ <comment xml:lang="ar">صورة ODI</comment>
+ <comment xml:lang="ast">Imaxe ODI</comment>
+- <comment xml:lang="be@latin">Vyjava ODI</comment>
++ <comment xml:lang="be-Latn">Vyjava ODI</comment>
+ <comment xml:lang="bg">Изображение — ODI</comment>
+ <comment xml:lang="ca">imatge ODI</comment>
+ <comment xml:lang="cs">obrázek ODI</comment>
+ <comment xml:lang="da">ODI-billede</comment>
+ <comment xml:lang="de">ODI-Bild</comment>
+ <comment xml:lang="el">Εικόνα ODI</comment>
+- <comment xml:lang="en_GB">ODI image</comment>
++ <comment xml:lang="en-GB">ODI image</comment>
+ <comment xml:lang="eo">ODI-bildo</comment>
+ <comment xml:lang="es">imagen ODI</comment>
+ <comment xml:lang="eu">ODI irudia</comment>
+ <comment xml:lang="fi">ODI-kuva</comment>
+ <comment xml:lang="fo">ODI mynd</comment>
+ <comment xml:lang="fr">image ODI</comment>
++ <comment xml:lang="fur">imagjin ODI</comment>
+ <comment xml:lang="ga">íomhá ODI</comment>
+ <comment xml:lang="gl">imaxe ODI</comment>
+ <comment xml:lang="he">תמונת ODI</comment>
+@@ -6473,7 +6652,7 @@
+ <comment xml:lang="oc">imatge ODI</comment>
+ <comment xml:lang="pl">Obraz ODI</comment>
+ <comment xml:lang="pt">imagem ODI</comment>
+- <comment xml:lang="pt_BR">Imagem ODI</comment>
++ <comment xml:lang="pt-BR">Imagem ODI</comment>
+ <comment xml:lang="ro">Imagine ODI</comment>
+ <comment xml:lang="ru">Изображение ODI</comment>
+ <comment xml:lang="sk">Obrázok ODI</comment>
+@@ -6484,16 +6663,16 @@
+ <comment xml:lang="tr">ODI görüntüsü</comment>
+ <comment xml:lang="uk">зображення ODI</comment>
+ <comment xml:lang="vi">Ảnh ODI</comment>
+- <comment xml:lang="zh_CN">ODI 图像</comment>
+- <comment xml:lang="zh_TW">ODI 影像</comment>
++ <comment xml:lang="zh-CN">ODI 图像</comment>
++ <comment xml:lang="zh-TW">ODI 影像</comment>
+ <acronym>ODI</acronym>
+ <expanded-acronym>OpenDocument Image</expanded-acronym>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="image-x-generic"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/vnd.oasis.opendocument.image" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/vnd.oasis.opendocument.image" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -6501,21 +6680,23 @@
+ </mime-type>
+ <mime-type type="application/vnd.openofficeorg.extension">
+ <comment>OpenOffice.org extension</comment>
++ <comment xml:lang="af">OpenOffice.org-uitbreiding</comment>
+ <comment xml:lang="ar">امتداد OpenOffice.org</comment>
+ <comment xml:lang="ast">Estensión d'OpenOffice.org</comment>
+- <comment xml:lang="be@latin">Pašyreńnie OpenOffice.org</comment>
+- <comment xml:lang="bg">Разширение — OpenOffice</comment>
++ <comment xml:lang="be-Latn">Pašyreńnie OpenOffice.org</comment>
++ <comment xml:lang="bg">Приставка — OpenOffice</comment>
+ <comment xml:lang="ca">extensió d'OpenOffice.org</comment>
+ <comment xml:lang="cs">rozšíření OpenOffice.org</comment>
+ <comment xml:lang="da">OpenOffice.org-udvidelse</comment>
+ <comment xml:lang="de">OpenOffice.org-Erweiterung</comment>
+ <comment xml:lang="el">Επέκταση OpenOffice.org</comment>
+- <comment xml:lang="en_GB">OpenOffice.org extension</comment>
++ <comment xml:lang="en-GB">OpenOffice.org extension</comment>
+ <comment xml:lang="es">extensión de LibreOffice</comment>
+ <comment xml:lang="eu">OpenOffice.org luzapena</comment>
+ <comment xml:lang="fi">OpenOffice.org-laajennus</comment>
+ <comment xml:lang="fo">OpenOffice.org víðkan</comment>
+ <comment xml:lang="fr">extension OpenOffice.org</comment>
++ <comment xml:lang="fur">estension OpenOffice.org</comment>
+ <comment xml:lang="ga">eisínteacht OpenOffice.org</comment>
+ <comment xml:lang="gl">Extensión de OpenOffice.org</comment>
+ <comment xml:lang="he">הרחבה של OpenOffice.org</comment>
+@@ -6535,7 +6716,7 @@
+ <comment xml:lang="oc">extension OpenOffice.org</comment>
+ <comment xml:lang="pl">Rozszerzenie OpenOffice.org</comment>
+ <comment xml:lang="pt">extensão OpenOffice.org</comment>
+- <comment xml:lang="pt_BR">Extensão do OpenOffice</comment>
++ <comment xml:lang="pt-BR">Extensão do OpenOffice</comment>
+ <comment xml:lang="ro">Extensie OpenOffice.org</comment>
+ <comment xml:lang="ru">Расширение OpenOffice.org</comment>
+ <comment xml:lang="sk">Rozšírenie OpenOffice.org</comment>
+@@ -6546,14 +6727,15 @@
+ <comment xml:lang="tr">OpenOffice.org eklentisi</comment>
+ <comment xml:lang="uk">розширення OpenOffice.org</comment>
+ <comment xml:lang="vi">Phần mở rộng của OpenOffice.org</comment>
+- <comment xml:lang="zh_CN">OpenOffice.org 扩展</comment>
+- <comment xml:lang="zh_TW">OpenOffice.org 擴充套件</comment>
++ <comment xml:lang="zh-CN">OpenOffice.org 扩展</comment>
++ <comment xml:lang="zh-TW">OpenOffice.org 擴充套件</comment>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.oxt"/>
+ </mime-type>
+ <mime-type type="application/vnd.android.package-archive">
+ <comment>Android package</comment>
++ <comment xml:lang="af">Android-pakket</comment>
+ <comment xml:lang="ast">Paquete d'Android</comment>
+ <comment xml:lang="bg">Пакет — Android</comment>
+ <comment xml:lang="ca">paquet d'Android</comment>
+@@ -6561,12 +6743,13 @@
+ <comment xml:lang="da">Android-pakke</comment>
+ <comment xml:lang="de">Android-Paket</comment>
+ <comment xml:lang="el">Πακέτο Android</comment>
+- <comment xml:lang="en_GB">Android package</comment>
++ <comment xml:lang="en-GB">Android package</comment>
+ <comment xml:lang="eo">Android-pakaĵo</comment>
+ <comment xml:lang="es">paquete de Android</comment>
+ <comment xml:lang="eu">Android paketea</comment>
+ <comment xml:lang="fi">Android-paketti</comment>
+ <comment xml:lang="fr">paquet Android</comment>
++ <comment xml:lang="fur">pachet Android</comment>
+ <comment xml:lang="ga">pacáiste Android</comment>
+ <comment xml:lang="gl">paquete de Android</comment>
+ <comment xml:lang="he">חבילת אנדרויד</comment>
+@@ -6579,12 +6762,13 @@
+ <comment xml:lang="ka">Android-ის პაკეტი</comment>
+ <comment xml:lang="kk">Android дестесі</comment>
+ <comment xml:lang="ko">Android 패키지</comment>
++ <comment xml:lang="lt">Android paketas</comment>
+ <comment xml:lang="lv">Android pakotne</comment>
+ <comment xml:lang="nl">Android pakket</comment>
+ <comment xml:lang="oc">paquet Android</comment>
+ <comment xml:lang="pl">Pakiet Androida</comment>
+ <comment xml:lang="pt">pacote Android</comment>
+- <comment xml:lang="pt_BR">Pacote do Android</comment>
++ <comment xml:lang="pt-BR">Pacote do Android</comment>
+ <comment xml:lang="ru">Пакет Android</comment>
+ <comment xml:lang="sk">Balík Android</comment>
+ <comment xml:lang="sl">Paket Android</comment>
+@@ -6592,29 +6776,31 @@
+ <comment xml:lang="sv">Android-paket</comment>
+ <comment xml:lang="tr">Android paketi</comment>
+ <comment xml:lang="uk">пакунок Android</comment>
+- <comment xml:lang="zh_CN">Android 应用包</comment>
+- <comment xml:lang="zh_TW">Android 軟體包</comment>
++ <comment xml:lang="zh-CN">Android 应用包</comment>
++ <comment xml:lang="zh-TW">Android 軟體包</comment>
+ <sub-class-of type="application/x-java-archive"/>
+ <glob pattern="*.apk"/>
+ </mime-type>
+ <mime-type type="application/vnd.symbian.install">
+ <comment>SIS package</comment>
++ <comment xml:lang="af">SIS-pakket</comment>
+ <comment xml:lang="ar">حزمة SIS</comment>
+ <comment xml:lang="ast">Paquete SIS</comment>
+- <comment xml:lang="be@latin">Pakunak SIS</comment>
++ <comment xml:lang="be-Latn">Pakunak SIS</comment>
+ <comment xml:lang="bg">Пакет — SIS</comment>
+ <comment xml:lang="ca">paquet SIS</comment>
+ <comment xml:lang="cs">balíček SIS</comment>
+ <comment xml:lang="da">SIS-pakke</comment>
+ <comment xml:lang="de">SIS-Paket</comment>
+ <comment xml:lang="el">Πακέτο SIS</comment>
+- <comment xml:lang="en_GB">SIS package</comment>
++ <comment xml:lang="en-GB">SIS package</comment>
+ <comment xml:lang="eo">SIS-pakaĵo</comment>
+ <comment xml:lang="es">paquete SIS</comment>
+ <comment xml:lang="eu">SIS paketea</comment>
+ <comment xml:lang="fi">SIS-paketti</comment>
+ <comment xml:lang="fo">SIS pakki</comment>
+ <comment xml:lang="fr">paquet SIS</comment>
++ <comment xml:lang="fur">pachet SIS</comment>
+ <comment xml:lang="ga">pacáiste SIS</comment>
+ <comment xml:lang="gl">paquete SIS</comment>
+ <comment xml:lang="he">חבילת SIS</comment>
+@@ -6634,7 +6820,7 @@
+ <comment xml:lang="oc">paquet SIS</comment>
+ <comment xml:lang="pl">Pakiet SIS</comment>
+ <comment xml:lang="pt">pacote SIS</comment>
+- <comment xml:lang="pt_BR">Pacote SIS</comment>
++ <comment xml:lang="pt-BR">Pacote SIS</comment>
+ <comment xml:lang="ro">Pachet SIS</comment>
+ <comment xml:lang="ru">Пакет SIS</comment>
+ <comment xml:lang="sk">Balíček SIS</comment>
+@@ -6645,34 +6831,36 @@
+ <comment xml:lang="tr">SIS paketi</comment>
+ <comment xml:lang="uk">пакунок SIS</comment>
+ <comment xml:lang="vi">Gói SIS</comment>
+- <comment xml:lang="zh_CN">SIS 软件包</comment>
+- <comment xml:lang="zh_TW">SIS 軟體包</comment>
++ <comment xml:lang="zh-CN">SIS 软件包</comment>
++ <comment xml:lang="zh-TW">SIS 軟體包</comment>
+ <acronym>SIS</acronym>
+ <expanded-acronym>Symbian Installation File</expanded-acronym>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="50">
+- <match value="0x10000419" type="little32" offset="8"/>
++ <match type="little32" value="0x10000419" offset="8"/>
+ </magic>
+ <glob pattern="*.sis"/>
+ </mime-type>
+ <mime-type type="x-epoc/x-sisx-app">
+ <comment>SISX package</comment>
++ <comment xml:lang="af">SISX-pakket</comment>
+ <comment xml:lang="ar">حزمة SISX</comment>
+ <comment xml:lang="ast">Paquete SISX</comment>
+- <comment xml:lang="be@latin">Pakunak SISX</comment>
++ <comment xml:lang="be-Latn">Pakunak SISX</comment>
+ <comment xml:lang="bg">Пакет — SISX</comment>
+ <comment xml:lang="ca">paquet SISX</comment>
+ <comment xml:lang="cs">balíček SISX</comment>
+ <comment xml:lang="da">SISX-pakke</comment>
+ <comment xml:lang="de">SISX-Paket</comment>
+ <comment xml:lang="el">Πακέτο SISX</comment>
+- <comment xml:lang="en_GB">SISX package</comment>
++ <comment xml:lang="en-GB">SISX package</comment>
+ <comment xml:lang="eo">SISX-pakaĵo</comment>
+ <comment xml:lang="es">paquete SISX</comment>
+ <comment xml:lang="eu">SISX paketea</comment>
+ <comment xml:lang="fi">SISX-paketti</comment>
+ <comment xml:lang="fo">SISX pakki</comment>
+ <comment xml:lang="fr">paquet SISX</comment>
++ <comment xml:lang="fur">pachet SISX</comment>
+ <comment xml:lang="ga">pacáiste SISX</comment>
+ <comment xml:lang="gl">paquete SISX</comment>
+ <comment xml:lang="he">חבילת SISX</comment>
+@@ -6692,7 +6880,7 @@
+ <comment xml:lang="oc">paquet SISX</comment>
+ <comment xml:lang="pl">Pakiet SISX</comment>
+ <comment xml:lang="pt">pacote SISX</comment>
+- <comment xml:lang="pt_BR">Pacote SISX</comment>
++ <comment xml:lang="pt-BR">Pacote SISX</comment>
+ <comment xml:lang="ro">Pachet SISX</comment>
+ <comment xml:lang="ru">Пакет SISX</comment>
+ <comment xml:lang="sk">Balíček SISX</comment>
+@@ -6703,59 +6891,44 @@
+ <comment xml:lang="tr">SISX paketi</comment>
+ <comment xml:lang="uk">пакунок SISX</comment>
+ <comment xml:lang="vi">Gói SISX</comment>
+- <comment xml:lang="zh_CN">SISX 软件包</comment>
+- <comment xml:lang="zh_TW">SISX 軟體包</comment>
++ <comment xml:lang="zh-CN">SISX 软件包</comment>
++ <comment xml:lang="zh-TW">SISX 軟體包</comment>
+ <acronym>SIS</acronym>
+ <expanded-acronym>Symbian Installation File</expanded-acronym>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="50">
+- <match value="0x10201a7a" type="little32" offset="0"/>
++ <match type="little32" value="0x10201a7a" offset="0"/>
+ </magic>
+ <glob pattern="*.sisx"/>
+ </mime-type>
+ <mime-type type="application/vnd.tcpdump.pcap">
+- <comment>Network Packet Capture</comment>
+- <comment xml:lang="bg">Прихванати пакети по мрежата</comment>
++ <comment>network packet capture</comment>
++ <comment xml:lang="bg">Прихванати мрежови пакети</comment>
+ <comment xml:lang="ca">captura de paquets de xarxa</comment>
+- <comment xml:lang="cs">Network Packet Capture</comment>
+- <comment xml:lang="da">Netværkspakkeoptegnelse</comment>
+- <comment xml:lang="de">Netzwerk-Paketmitschnitt</comment>
+- <comment xml:lang="el">Σύλληψη πακέτων δικτύου</comment>
+- <comment xml:lang="en_GB">Network Packet Capture</comment>
+- <comment xml:lang="es">captura de paquete de red</comment>
+- <comment xml:lang="eu">Sareko pakete kaptura</comment>
+- <comment xml:lang="fi">Verkkopakettien kaappaus</comment>
++ <comment xml:lang="da">Netværkspakkeoptagelse</comment>
++ <comment xml:lang="de">Netzwerkpaketmitschnitt</comment>
++ <comment xml:lang="en-GB">network packet capture</comment>
++ <comment xml:lang="es">captura de paquetes de red</comment>
++ <comment xml:lang="eu">sareko pakete kaptura</comment>
++ <comment xml:lang="fi">verkkopakettien kaappaus</comment>
+ <comment xml:lang="fr">capture de paquet réseau</comment>
+- <comment xml:lang="ga">Gabháltas Paicéid Líonra</comment>
+- <comment xml:lang="gl">Captura de Network Packet</comment>
+- <comment xml:lang="he">לכידה של מנות נתונים ברשת</comment>
+ <comment xml:lang="hr">Mrežno hvatanje paketa</comment>
+- <comment xml:lang="hu">Hálózati csomagelfogás</comment>
+- <comment xml:lang="ia">Captura de pacchettos de rete</comment>
+- <comment xml:lang="id">Tangkapan Paket Jaringan</comment>
++ <comment xml:lang="hu">hálózaticsomag-rögzítés</comment>
++ <comment xml:lang="id">tangkapan paket jaringan</comment>
+ <comment xml:lang="it">Cattura pacchetti rete</comment>
+- <comment xml:lang="ja">ネットワークパケットキャプチャー</comment>
+- <comment xml:lang="ka">ქსელური პაკეტის ანაბეჭდი</comment>
+ <comment xml:lang="kk">ұсталған желілік пакеттер</comment>
+ <comment xml:lang="ko">네트워크 패킷 캡처</comment>
+- <comment xml:lang="lv">Network Packet Capture</comment>
+- <comment xml:lang="nl">Network Packet Capture</comment>
+- <comment xml:lang="oc">captura de paquet ret</comment>
+ <comment xml:lang="pl">Przechwycenie pakietu sieciowego</comment>
+- <comment xml:lang="pt">captura Network Packet</comment>
+- <comment xml:lang="pt_BR">Pacote de captura de rede</comment>
+- <comment xml:lang="ru">Захваченные сетевые пакеты</comment>
+- <comment xml:lang="sk">Zachytené sieťové pakety</comment>
+- <comment xml:lang="sl">Zajem omrežnih paketov</comment>
+- <comment xml:lang="sr">Снимање мрежног пакета</comment>
+- <comment xml:lang="sv">Fångst av nätverkspaket</comment>
+- <comment xml:lang="tr">Ağ Paket Yakalaması</comment>
+- <comment xml:lang="uk">перехоплені дані мережевих пакетів</comment>
+- <comment xml:lang="zh_CN">网络包抓取</comment>
+- <comment xml:lang="zh_TW">網路封包捕捉</comment>
+- <magic priority="50">
+- <match value="0xa1b2c3d4" type="host32" offset="0"/>
+- <match value="0xd4c3b2a1" type="host32" offset="0"/>
++ <comment xml:lang="pt">captura dos pacotes de rede</comment>
++ <comment xml:lang="pt-BR">Captura de pacotes de rede</comment>
++ <comment xml:lang="ru">захваченные сетевые пакеты</comment>
++ <comment xml:lang="sv">nätverkspaketsspårning</comment>
++ <comment xml:lang="tr">ağ paket yakalaması</comment>
++ <comment xml:lang="uk">перехоплення мережевого пакета</comment>
++ <comment xml:lang="zh-CN">网络数据包抓取</comment>
++ <magic priority="50">
++ <match type="host32" value="0xa1b2c3d4" offset="0"/>
++ <match type="host32" value="0xd4c3b2a1" offset="0"/>
+ </magic>
+ <glob pattern="*.pcap"/>
+ <glob pattern="*.cap"/>
+@@ -6765,10 +6938,11 @@
+ </mime-type>
+ <mime-type type="application/vnd.wordperfect">
+ <comment>WordPerfect document</comment>
++ <comment xml:lang="af">WordPerfect-dokument</comment>
+ <comment xml:lang="ar">مستند WordPerfect</comment>
+ <comment xml:lang="ast">Documentu de WordPerfect</comment>
+ <comment xml:lang="az">WordPerfect sənədi</comment>
+- <comment xml:lang="be@latin">Dakument WordPerfect</comment>
++ <comment xml:lang="be-Latn">Dakument WordPerfect</comment>
+ <comment xml:lang="bg">Документ — WordPerfect</comment>
+ <comment xml:lang="ca">document WordPerfect</comment>
+ <comment xml:lang="cs">dokument WordPerfect</comment>
+@@ -6776,13 +6950,14 @@
+ <comment xml:lang="da">WordPerfect-dokument</comment>
+ <comment xml:lang="de">WordPerfect-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο WordPerfect</comment>
+- <comment xml:lang="en_GB">WordPerfect document</comment>
++ <comment xml:lang="en-GB">WordPerfect document</comment>
+ <comment xml:lang="eo">WordPerfect-dokumento</comment>
+ <comment xml:lang="es">documento de WordPerfect</comment>
+ <comment xml:lang="eu">WordPerfect dokumentua</comment>
+ <comment xml:lang="fi">WordPerfect-asiakirja</comment>
+ <comment xml:lang="fo">WordPerfect skjal</comment>
+ <comment xml:lang="fr">document WordPerfect</comment>
++ <comment xml:lang="fur">document WordPerfect</comment>
+ <comment xml:lang="ga">cáipéis WordPerfect</comment>
+ <comment xml:lang="gl">documento de WordPerfect</comment>
+ <comment xml:lang="he">מסמך WordPerfect</comment>
+@@ -6803,7 +6978,7 @@
+ <comment xml:lang="oc">document WordPerfect</comment>
+ <comment xml:lang="pl">Dokument WordPerfect</comment>
+ <comment xml:lang="pt">documento WordPerfect</comment>
+- <comment xml:lang="pt_BR">Documento do WordPerfect</comment>
++ <comment xml:lang="pt-BR">Documento do WordPerfect</comment>
+ <comment xml:lang="ro">Document WordPerfect</comment>
+ <comment xml:lang="ru">Документ WordPerfect</comment>
+ <comment xml:lang="sk">Dokument WordPerfect</comment>
+@@ -6814,14 +6989,14 @@
+ <comment xml:lang="tr">WordPerfect belgesi</comment>
+ <comment xml:lang="uk">документ WordPerfect</comment>
+ <comment xml:lang="vi">Tài liệu WordPerfect</comment>
+- <comment xml:lang="zh_CN">WordPerfect 文档</comment>
+- <comment xml:lang="zh_TW">WordPerfect 文件</comment>
++ <comment xml:lang="zh-CN">WordPerfect 文档</comment>
++ <comment xml:lang="zh-TW">WordPerfect 文件</comment>
+ <alias type="application/x-wordperfect"/>
+ <alias type="application/wordperfect"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="WPC" type="string" offset="1"/>
+-
++ <match type="string" value="WPC" offset="1"/>
++ <!-- <match type="big32" value="0xff575053c405" offset="0"/> -->
+ </magic>
+ <glob pattern="*.wp"/>
+ <glob pattern="*.wp4"/>
+@@ -6831,126 +7006,125 @@
+ <glob pattern="*.wpp"/>
+ </mime-type>
+ <mime-type type="application/vnd.youtube.yt">
+- <comment>YouTube Media Archive</comment>
++ <comment>YouTube media archive</comment>
++ <comment xml:lang="bg">Медиен архив — YouTube</comment>
++ <comment xml:lang="ca">arxiu de mitjans de YouTube</comment>
++ <comment xml:lang="da">YouTube-mediearkiv</comment>
++ <comment xml:lang="de">YouTube-Medienarchiv</comment>
++ <comment xml:lang="en-GB">YouTube media archive</comment>
++ <comment xml:lang="es">archivador multimedia de YouTube</comment>
++ <comment xml:lang="eu">YouTube media fitxategia</comment>
++ <comment xml:lang="fi">YouTube-media-arkisto</comment>
++ <comment xml:lang="fr">archive média YouTube</comment>
++ <comment xml:lang="hr">YouTube medijska arhiva</comment>
++ <comment xml:lang="hu">YouTube médiaarchívum</comment>
++ <comment xml:lang="id">Arsip media YouTube</comment>
++ <comment xml:lang="it">Archivio multimediale YouTube</comment>
++ <comment xml:lang="kk">YouTube медиа архиві</comment>
++ <comment xml:lang="ko">유튜브 미디어 저장 파일</comment>
++ <comment xml:lang="pl">Archiwum multimediów YouTube</comment>
++ <comment xml:lang="pt">arquivo multimédia do YouTube</comment>
++ <comment xml:lang="pt-BR">Arquivo de mídia do Youtube</comment>
++ <comment xml:lang="ru">Медиа-архив YouTube</comment>
++ <comment xml:lang="sk">Archív médií YouTube</comment>
++ <comment xml:lang="sv">YouTube-mediaarkiv</comment>
++ <comment xml:lang="tr">YouTube ortam arşivi</comment>
++ <comment xml:lang="uk">мультимедійний архів YouTube</comment>
++ <comment xml:lang="zh-CN">YouTube 媒体存档</comment>
+ <generic-icon name="video-x-generic"/>
+ <glob pattern="*.yt"/>
+ <sub-class-of type="application/zip"/>
+ </mime-type>
+ <mime-type type="application/x-spss-por">
+- <comment>SPSS Portable Data File</comment>
+- <comment xml:lang="ar">ملف بيانات SPSS متنقلة</comment>
++ <comment>SPSS portable data file</comment>
+ <comment xml:lang="bg">Данни — SPSS, преносими</comment>
+ <comment xml:lang="ca">fitxer de dades portables SPSS</comment>
+- <comment xml:lang="cs">soubor přenositelných dat SPSS</comment>
+- <comment xml:lang="da">Portabel SPSS-datafil</comment>
++ <comment xml:lang="da">SPSS portable data-fil</comment>
+ <comment xml:lang="de">SPSS portable Datendatei</comment>
+- <comment xml:lang="el">Φορητό αρχείο δεδομένων SPSS</comment>
+- <comment xml:lang="en_GB">SPSS Portable Data File</comment>
+- <comment xml:lang="es">archivo de datos portátil de SPSS</comment>
+- <comment xml:lang="eu">SPSS datuen fitxategi eramangarria</comment>
+- <comment xml:lang="fo">SPSS flytifør dátufíla</comment>
++ <comment xml:lang="en-GB">SPSS portable data file</comment>
++ <comment xml:lang="es">archivo de datos portátiles de SPSS</comment>
++ <comment xml:lang="eu">SPSS datu fitxategi eramangarria</comment>
++ <comment xml:lang="fi">Siirrettävä SPSS-tiedosto</comment>
+ <comment xml:lang="fr">fichier portable de données SPSS</comment>
+- <comment xml:lang="ga">comhad iniompartha sonraí SPSS</comment>
+- <comment xml:lang="gl">ficheiro de datos portábel SPSS</comment>
+- <comment xml:lang="he">קובץ מידע נייד SPSS</comment>
+ <comment xml:lang="hr">SPSS prenosiva podatkovna datoteka</comment>
+ <comment xml:lang="hu">SPSS hordozható adatfájl</comment>
+- <comment xml:lang="ia">File portabile de datos SPSS</comment>
+- <comment xml:lang="id">Berkas Data Portabel SPSS</comment>
++ <comment xml:lang="id">Berkas data portabel SPSS</comment>
+ <comment xml:lang="it">File dati SPSS Portable</comment>
+- <comment xml:lang="ja">SPSS ポータブルデータファイル</comment>
+- <comment xml:lang="kk">SPSS тасымалы ақпарат файлы</comment>
+- <comment xml:lang="ko">SPSS 이동식 데이터 파일</comment>
+- <comment xml:lang="lt">SPSS perkeliamų duomenų failas</comment>
+- <comment xml:lang="lv">SPSS pārvietojamu datu datne</comment>
+- <comment xml:lang="nl">SPSS Portable Databestand</comment>
+- <comment xml:lang="oc">fichièr portable de donadas SPSS</comment>
++ <comment xml:lang="kk">SPSS тасымалы деректер файлы</comment>
++ <comment xml:lang="ko">SPSS 휴대 데이터 파일</comment>
+ <comment xml:lang="pl">Plik przenośnych danych SPSS</comment>
+ <comment xml:lang="pt">ficheiro de dados portátil SPSS</comment>
+- <comment xml:lang="pt_BR">Arquivo de Dados Portáteis SPSS</comment>
+- <comment xml:lang="ro">Fișier portabil de date SPSS</comment>
++ <comment xml:lang="pt-BR">Arquivo de dados portáteis SPSS</comment>
+ <comment xml:lang="ru">Файл переносимых данных SPSS</comment>
+- <comment xml:lang="sk">Súbor prenosných dát SPSS</comment>
+- <comment xml:lang="sl">Prenosna podatkovna datoteka SPSS</comment>
+- <comment xml:lang="sr">СПСС датотека преносних података</comment>
+- <comment xml:lang="sv">Portabel SPSS-datafil</comment>
+- <comment xml:lang="tr">SPSS Taşınabilir Veri Dosyası</comment>
+- <comment xml:lang="uk">файл даних SPSS Portable</comment>
+- <comment xml:lang="zh_CN">SPSS 便携式数据文件</comment>
+- <comment xml:lang="zh_TW">SPSS 可攜式資料檔</comment>
++ <comment xml:lang="sk">Súbor prenosných údajov SPSS</comment>
++ <comment xml:lang="sv">SPSS portabel datafil</comment>
++ <comment xml:lang="tr">SPSS taşınabilir veri dosyası</comment>
++ <comment xml:lang="uk">портативний файл даних SPSS</comment>
++ <comment xml:lang="zh-CN">SPSS 便携式数据文件</comment>
++ <comment xml:lang="zh-TW">SPSS 可攜資料檔</comment>
++ <acronym>SPSS</acronym>
++ <expanded-acronym>Statistical Package for the Social Sciences</expanded-acronym>
+ <magic priority="50">
+- <match value="ASCII SPSS PORT FILE" type="string" offset="40"/>
++ <match type="string" offset="40" value="ASCII SPSS PORT FILE"/>
+ </magic>
+ <glob pattern="*.por"/>
+ </mime-type>
+ <mime-type type="application/x-spss-sav">
+- <comment>SPSS Data File</comment>
+- <comment xml:lang="ar">ملف بيانات SPSS</comment>
++ <comment>SPSS data file</comment>
+ <comment xml:lang="bg">Данни — SPSS</comment>
+ <comment xml:lang="ca">fitxer de dades SPSS</comment>
+- <comment xml:lang="cs">datový soubor SPSS</comment>
+- <comment xml:lang="da">SPSS-datafil</comment>
++ <comment xml:lang="da">SPSS data-fil</comment>
+ <comment xml:lang="de">SPSS-Datendatei</comment>
+- <comment xml:lang="el">Αρχείο δεδομένων SPSS</comment>
+- <comment xml:lang="en_GB">SPSS Data File</comment>
+- <comment xml:lang="es">archivo de datos SPSS</comment>
+- <comment xml:lang="eu">SPSS datuen fitxategia</comment>
++ <comment xml:lang="en-GB">SPSS data file</comment>
++ <comment xml:lang="es">archivo de datos de SPSS</comment>
++ <comment xml:lang="eu">SPSS datu fitxategia</comment>
+ <comment xml:lang="fi">SPSS-datatiedosto</comment>
+- <comment xml:lang="fo">SPSS dátufíla</comment>
+ <comment xml:lang="fr">fichier de données SPSS</comment>
+- <comment xml:lang="ga">comhad sonraí SPSS</comment>
+- <comment xml:lang="gl">ficheiro de datos SPSS</comment>
+- <comment xml:lang="he">קובץ מידע SPSS</comment>
+ <comment xml:lang="hr">SPSS podatkovna datoteka</comment>
+ <comment xml:lang="hu">SPSS adatfájl</comment>
+- <comment xml:lang="ia">File de datos SPSS</comment>
+- <comment xml:lang="id">Berkas Data SPSS</comment>
++ <comment xml:lang="id">Berkas data SPSS</comment>
+ <comment xml:lang="it">File dati SPSS</comment>
+- <comment xml:lang="ja">SPSS データファイル</comment>
+- <comment xml:lang="kk">SPSS ақпарат файлы</comment>
++ <comment xml:lang="kk">SPSS деректер файлы</comment>
+ <comment xml:lang="ko">SPSS 데이터 파일</comment>
+- <comment xml:lang="lt">SPSS duomenų failas</comment>
+- <comment xml:lang="lv">SPSS datu datne</comment>
+- <comment xml:lang="nl">SPSS Databstand</comment>
+- <comment xml:lang="oc">fichièr de donadas SPSS</comment>
+ <comment xml:lang="pl">Plik danych SPSS</comment>
+ <comment xml:lang="pt">ficheiro de dados SPSS</comment>
+- <comment xml:lang="pt_BR">Arquivo de dados SPSS</comment>
+- <comment xml:lang="ro">Fișier date SPSS</comment>
++ <comment xml:lang="pt-BR">Arquivo de dados SPSS</comment>
+ <comment xml:lang="ru">Файл данных SPSS</comment>
+- <comment xml:lang="sk">Dátový súbor SPSS</comment>
+- <comment xml:lang="sl">Podatkovna datoteka SPSS</comment>
+- <comment xml:lang="sr">СПСС датотека података</comment>
++ <comment xml:lang="sk">Súbor údajov SPSS</comment>
+ <comment xml:lang="sv">SPSS-datafil</comment>
+- <comment xml:lang="tr">SPSS Veri Dosyası</comment>
++ <comment xml:lang="tr">SPSS veri dosyası</comment>
+ <comment xml:lang="uk">файл даних SPSS</comment>
+- <comment xml:lang="zh_CN">SPSS 数据文件</comment>
+- <comment xml:lang="zh_TW">SPSS 資料檔</comment>
++ <comment xml:lang="zh-CN">SPSS 数据文件</comment>
++ <comment xml:lang="zh-TW">SPSS 資料檔</comment>
++ <acronym>SPSS</acronym>
++ <expanded-acronym>Statistical Package for the Social Sciences</expanded-acronym>
+ <alias type="application/x-spss-savefile"/>
+ <magic priority="50">
+- <match value="$FL2" type="string" offset="0"/>
+- <match value="$FL3" type="string" offset="0"/>
++ <match type="string" offset="0" value="$FL2"/>
++ <match type="string" offset="0" value="$FL3"/>
+ </magic>
+ <glob pattern="*.sav"/>
+ <glob pattern="*.zsav"/>
+ </mime-type>
+ <mime-type type="application/x-xbel">
+ <comment>XBEL bookmarks</comment>
++ <comment xml:lang="af">XBEL-boekmerke</comment>
+ <comment xml:lang="ar">علامات XBEL</comment>
+- <comment xml:lang="be@latin">Zakładki XBEL</comment>
++ <comment xml:lang="be-Latn">Zakładki XBEL</comment>
+ <comment xml:lang="bg">Отметки — XBEL</comment>
+ <comment xml:lang="ca">llista d'adreces d'interès XBEL</comment>
+ <comment xml:lang="cs">záložky XBEL</comment>
+ <comment xml:lang="da">XBEL-bogmærker</comment>
+ <comment xml:lang="de">XBEL-Lesezeichen</comment>
+ <comment xml:lang="el">Σελιδοδείκτες XBEL</comment>
+- <comment xml:lang="en_GB">XBEL bookmarks</comment>
++ <comment xml:lang="en-GB">XBEL bookmarks</comment>
+ <comment xml:lang="eo">XBEL-legosignoj</comment>
+ <comment xml:lang="es">marcadores XBEL</comment>
+ <comment xml:lang="eu">XBEL laster-markak</comment>
+ <comment xml:lang="fi">XBEL-kirjanmerkit</comment>
+ <comment xml:lang="fo">XBEL bókamerki</comment>
+ <comment xml:lang="fr">marque-pages XBEL</comment>
++ <comment xml:lang="fur">segnelibris XBEL</comment>
+ <comment xml:lang="ga">leabharmharcanna XBEL</comment>
+ <comment xml:lang="gl">Marcadores XBEL</comment>
+ <comment xml:lang="he">סימניית XBEL</comment>
+@@ -6971,7 +7145,7 @@
+ <comment xml:lang="oc">marcapaginas XBEL</comment>
+ <comment xml:lang="pl">Zakładki XBEL</comment>
+ <comment xml:lang="pt">marcadores XBEL</comment>
+- <comment xml:lang="pt_BR">Marcadores do XBEL</comment>
++ <comment xml:lang="pt-BR">Marcadores do XBEL</comment>
+ <comment xml:lang="ro">Semne de carte XBEL</comment>
+ <comment xml:lang="ru">Закладки XBEL</comment>
+ <comment xml:lang="sk">Záložky XBEL</comment>
+@@ -6982,35 +7156,37 @@
+ <comment xml:lang="tr">XBEL yer imleri</comment>
+ <comment xml:lang="uk">закладки XBEL</comment>
+ <comment xml:lang="vi">Liên kết đã lưu XBEL</comment>
+- <comment xml:lang="zh_CN">XBEL 书签</comment>
+- <comment xml:lang="zh_TW">XBEL 格式書籤</comment>
++ <comment xml:lang="zh-CN">XBEL 书签</comment>
++ <comment xml:lang="zh-TW">XBEL 格式書籤</comment>
+ <acronym>XBEL</acronym>
+ <expanded-acronym>XML Bookmark Exchange Language</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+ <generic-icon name="text-html"/>
+ <magic priority="50">
+- <match value="&lt;!DOCTYPE\ xbel" type="string" offset="0:256"/>
++ <match type="string" value="&lt;!DOCTYPE\ xbel" offset="0:256"/>
+ </magic>
+ <glob pattern="*.xbel"/>
+ </mime-type>
+ <mime-type type="application/x-7z-compressed">
+ <comment>7-zip archive</comment>
++ <comment xml:lang="af">7-zip-argief</comment>
+ <comment xml:lang="ar">أرشيف 7-zip</comment>
+ <comment xml:lang="ast">Archivu 7-zip</comment>
+- <comment xml:lang="be@latin">Archiŭ 7-zip</comment>
++ <comment xml:lang="be-Latn">Archiŭ 7-zip</comment>
+ <comment xml:lang="bg">Архив — 7-zip</comment>
+ <comment xml:lang="ca">arxiu 7-zip</comment>
+ <comment xml:lang="cs">archiv 7-zip</comment>
+ <comment xml:lang="da">7-zip-arkiv</comment>
+ <comment xml:lang="de">7zip-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο 7-zip</comment>
+- <comment xml:lang="en_GB">7-zip archive</comment>
++ <comment xml:lang="en-GB">7-zip archive</comment>
+ <comment xml:lang="eo">7z-arkivo</comment>
+ <comment xml:lang="es">archivador 7-zip</comment>
+ <comment xml:lang="eu">7-zip artxiboa</comment>
+ <comment xml:lang="fi">7-zip-arkisto</comment>
+ <comment xml:lang="fo">7-zip skjalasavn</comment>
+ <comment xml:lang="fr">archive 7-zip</comment>
++ <comment xml:lang="fur">archivi 7-zip</comment>
+ <comment xml:lang="ga">cartlann 7-zip</comment>
+ <comment xml:lang="gl">arquivo 7-zip</comment>
+ <comment xml:lang="he">ארכיון 7-zip</comment>
+@@ -7031,7 +7207,7 @@
+ <comment xml:lang="oc">archiu 7-zip</comment>
+ <comment xml:lang="pl">Archiwum 7-zip</comment>
+ <comment xml:lang="pt">arquivo 7-zip</comment>
+- <comment xml:lang="pt_BR">Pacote 7-Zip</comment>
++ <comment xml:lang="pt-BR">Pacote 7-Zip</comment>
+ <comment xml:lang="ro">Arhivă 7-zip</comment>
+ <comment xml:lang="ru">Архив 7-zip</comment>
+ <comment xml:lang="sk">Archív 7-zip</comment>
+@@ -7042,32 +7218,34 @@
+ <comment xml:lang="tr">7-Zip arşivi</comment>
+ <comment xml:lang="uk">архів 7-zip</comment>
+ <comment xml:lang="vi">Kho nén 7-zip</comment>
+- <comment xml:lang="zh_CN">7-zip 归档文件</comment>
+- <comment xml:lang="zh_TW">7-zip 封存檔</comment>
++ <comment xml:lang="zh-CN">7-zip 归档文件</comment>
++ <comment xml:lang="zh-TW">7-zip 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="60">
+- <match value="7z\274\257\047\034" type="string" offset="0"/>
++ <match type="string" value="7z\274\257\047\034" offset="0"/>
+ </magic>
+ <glob pattern="*.7z"/>
+ </mime-type>
+ <mime-type type="application/x-abiword">
+ <comment>AbiWord document</comment>
++ <comment xml:lang="af">AbiWord-dokument</comment>
+ <comment xml:lang="ar">مستند آبي وورد</comment>
+ <comment xml:lang="ast">Documentu d'AbiWord</comment>
+- <comment xml:lang="be@latin">Dakument AbiWord</comment>
++ <comment xml:lang="be-Latn">Dakument AbiWord</comment>
+ <comment xml:lang="bg">Документ — AbiWord</comment>
+ <comment xml:lang="ca">document AbiWord</comment>
+ <comment xml:lang="cs">dokument AbiWord</comment>
+ <comment xml:lang="da">AbiWord-dokument</comment>
+ <comment xml:lang="de">AbiWord-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο AbiWord</comment>
+- <comment xml:lang="en_GB">AbiWord document</comment>
++ <comment xml:lang="en-GB">AbiWord document</comment>
+ <comment xml:lang="eo">AbiWord-dokumento</comment>
+ <comment xml:lang="es">documento de Abiword</comment>
+ <comment xml:lang="eu">AbiWord dokumentua</comment>
+ <comment xml:lang="fi">AbiWord-asiakirja</comment>
+ <comment xml:lang="fo">AbiWord skjal</comment>
+ <comment xml:lang="fr">document AbiWord</comment>
++ <comment xml:lang="fur">document AbiWord</comment>
+ <comment xml:lang="ga">cáipéis AbiWord</comment>
+ <comment xml:lang="gl">documento de AbiWord</comment>
+ <comment xml:lang="he">מסמך AbiWord</comment>
+@@ -7089,7 +7267,7 @@
+ <comment xml:lang="oc">document AbiWord</comment>
+ <comment xml:lang="pl">Dokument AbiWord</comment>
+ <comment xml:lang="pt">documento AbiWord</comment>
+- <comment xml:lang="pt_BR">Documento do AbiWord</comment>
++ <comment xml:lang="pt-BR">Documento do AbiWord</comment>
+ <comment xml:lang="ro">Document AbiWord</comment>
+ <comment xml:lang="ru">Документ AbiWord</comment>
+ <comment xml:lang="sk">Dokument AbiWord</comment>
+@@ -7100,13 +7278,13 @@
+ <comment xml:lang="tr">AbiWord belgesi</comment>
+ <comment xml:lang="uk">документ AbiWord</comment>
+ <comment xml:lang="vi">Tài liệu AbiWord</comment>
+- <comment xml:lang="zh_CN">AbiWord 文档</comment>
+- <comment xml:lang="zh_TW">AbiWord 文件</comment>
++ <comment xml:lang="zh-CN">AbiWord 文档</comment>
++ <comment xml:lang="zh-TW">AbiWord 文件</comment>
+ <sub-class-of type="application/xml"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="&lt;abiword" type="string" offset="0:256"/>
+- <match value="&lt;!DOCTYPE abiword" type="string" offset="0:256"/>
++ <match type="string" value="&lt;abiword" offset="0:256"/>
++ <match type="string" value="&lt;!DOCTYPE abiword" offset="0:256"/>
+ </magic>
+ <glob pattern="*.abw"/>
+ <glob pattern="*.abw.CRASHED"/>
+@@ -7117,18 +7295,19 @@
+ <mime-type type="application/x-cue">
+ <comment>CD image cuesheet</comment>
+ <comment xml:lang="ar">صفيحة صورة الـCD جديلة</comment>
+- <comment xml:lang="be@latin">Infarmacyjny arkuš vyjavy CD</comment>
+- <comment xml:lang="bg">Описание на изображение на CD</comment>
++ <comment xml:lang="be-Latn">Infarmacyjny arkuš vyjavy CD</comment>
++ <comment xml:lang="bg">Съдържание на CD</comment>
+ <comment xml:lang="ca">«cuesheet» d'imatge de CD</comment>
+ <comment xml:lang="cs">rozvržení stop obrazu CD</comment>
+ <comment xml:lang="da">Cd-aftrykscuesheet</comment>
+ <comment xml:lang="de">CD-Abbild-Cuesheet</comment>
+ <comment xml:lang="el">Φύλλο cue εικόνας CD</comment>
+- <comment xml:lang="en_GB">CD image cuesheet</comment>
++ <comment xml:lang="en-GB">CD image cuesheet</comment>
+ <comment xml:lang="es">hoja CUE de imagen de CD</comment>
+ <comment xml:lang="eu">CD irudiaren CUE orria</comment>
+ <comment xml:lang="fi">CD-vedos cuesheet</comment>
+ <comment xml:lang="fr">index de pistes de CD</comment>
++ <comment xml:lang="fur">sfuei-brivade CUE de imagjin CD</comment>
+ <comment xml:lang="ga">bileog chiúála íomhá CD</comment>
+ <comment xml:lang="gl">cue sheet dunha imaxe de CD</comment>
+ <comment xml:lang="he">גליון נתונים לתמונת דיסק</comment>
+@@ -7147,8 +7326,8 @@
+ <comment xml:lang="nn">CD-bilete-indeksfil</comment>
+ <comment xml:lang="oc">indèx de pistas de CD</comment>
+ <comment xml:lang="pl">Obraz cuesheet płyty CD</comment>
+- <comment xml:lang="pt">índice de CD de imagem</comment>
+- <comment xml:lang="pt_BR">Índice de Imagem de CD</comment>
++ <comment xml:lang="pt">índice de imagem do CD</comment>
++ <comment xml:lang="pt-BR">Índice de Imagem de CD</comment>
+ <comment xml:lang="ro">Imagine CD cuesheet</comment>
+ <comment xml:lang="ru">Таблица содержания образа CD</comment>
+ <comment xml:lang="sk">Rozvrhnutie stôp obrazu CD</comment>
+@@ -7156,21 +7335,22 @@
+ <comment xml:lang="sq">Cuesheet imazhi CD</comment>
+ <comment xml:lang="sr">Кју лист ЦД одраза</comment>
+ <comment xml:lang="sv">Indexblad för cd-avbild</comment>
+- <comment xml:lang="tr">CD görüntüsü belgesi</comment>
++ <comment xml:lang="tr">CD görüntüsü çizelgesi</comment>
+ <comment xml:lang="uk">таблиця CUE образу CD</comment>
+ <comment xml:lang="vi">Tờ tín hiệu báo ảnh CD</comment>
+- <comment xml:lang="zh_CN">CD 映像标记文件</comment>
+- <comment xml:lang="zh_TW">CD 映像指示表</comment>
++ <comment xml:lang="zh-CN">CD 映像标记文件</comment>
++ <comment xml:lang="zh-TW">CD 映像指示表</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-generic"/>
+ <glob pattern="*.cue"/>
+ </mime-type>
+ <mime-type type="application/x-amipro">
+ <comment>Lotus AmiPro document</comment>
++ <comment xml:lang="af">Lotus AmiPro-dokument</comment>
+ <comment xml:lang="ar">مستند Lotus AmiPro</comment>
+ <comment xml:lang="ast">Documentu de Lotus AmiPro</comment>
+ <comment xml:lang="az">Lotus AmiPro sənədi</comment>
+- <comment xml:lang="be@latin">Dakument Lotus AmiPro</comment>
++ <comment xml:lang="be-Latn">Dakument Lotus AmiPro</comment>
+ <comment xml:lang="bg">Документ — Lotus AmiPro</comment>
+ <comment xml:lang="ca">document de Lotus AmiPro</comment>
+ <comment xml:lang="cs">dokument Lotus AmiPro</comment>
+@@ -7178,13 +7358,14 @@
+ <comment xml:lang="da">Lotus AmiPro-dokument</comment>
+ <comment xml:lang="de">Lotus-AmiPro-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Lotus AmiPro</comment>
+- <comment xml:lang="en_GB">Lotus AmiPro document</comment>
++ <comment xml:lang="en-GB">Lotus AmiPro document</comment>
+ <comment xml:lang="eo">dokumento de Lotus AmiPro</comment>
+ <comment xml:lang="es">documento de Lotus AmiPro</comment>
+ <comment xml:lang="eu">Lotus AmiPro dokumentua</comment>
+ <comment xml:lang="fi">Lotus AmiPro -asiakirja</comment>
+ <comment xml:lang="fo">Lotus AmiPro skjal</comment>
+ <comment xml:lang="fr">document Lotus AmiPro</comment>
++ <comment xml:lang="fur">document Lotus AmiPro</comment>
+ <comment xml:lang="ga">cáipéis Lotus AmiPro</comment>
+ <comment xml:lang="gl">documento de Lotus AmiPro</comment>
+ <comment xml:lang="he">מסמך של Lotus AmiPro</comment>
+@@ -7205,7 +7386,7 @@
+ <comment xml:lang="oc">document Lotus AmiPro</comment>
+ <comment xml:lang="pl">Dokument Lotus AmiPro</comment>
+ <comment xml:lang="pt">documento Lotus AmiPro</comment>
+- <comment xml:lang="pt_BR">Documento do Lotus AmiPro</comment>
++ <comment xml:lang="pt-BR">Documento do Lotus AmiPro</comment>
+ <comment xml:lang="ro">Document Lotus AmiPro</comment>
+ <comment xml:lang="ru">Документ Lotus AmiPro</comment>
+ <comment xml:lang="sk">Dokument Lotus AmiPro</comment>
+@@ -7216,13 +7397,14 @@
+ <comment xml:lang="tr">Lotus AmiPro belgesi</comment>
+ <comment xml:lang="uk">документ Lotus AmiPro</comment>
+ <comment xml:lang="vi">Tài liệu Lotus AmiPro</comment>
+- <comment xml:lang="zh_CN">Lotus AmiPro 文档</comment>
+- <comment xml:lang="zh_TW">Lotus AmiPro 文件</comment>
++ <comment xml:lang="zh-CN">Lotus AmiPro 文档</comment>
++ <comment xml:lang="zh-TW">Lotus AmiPro 文件</comment>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.sam"/>
+ </mime-type>
+ <mime-type type="application/x-aportisdoc">
+ <comment>AportisDoc document</comment>
++ <comment xml:lang="af">AportisDoc-dokument</comment>
+ <comment xml:lang="ar">مستند AportisDoc</comment>
+ <comment xml:lang="ast">Documentu d'AportisDoc</comment>
+ <comment xml:lang="bg">Документ — AportisDoc</comment>
+@@ -7231,13 +7413,14 @@
+ <comment xml:lang="da">AportisDoc-dokument</comment>
+ <comment xml:lang="de">AportisDoc-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο AportisDoc</comment>
+- <comment xml:lang="en_GB">AportisDoc document</comment>
++ <comment xml:lang="en-GB">AportisDoc document</comment>
+ <comment xml:lang="eo">AportisDoc-dokumento</comment>
+ <comment xml:lang="es">documento de AportisDoc</comment>
+ <comment xml:lang="eu">AportisDoc dokumentua</comment>
+ <comment xml:lang="fi">AportisDoc-asiakirja</comment>
+ <comment xml:lang="fo">AportisDoc skjal</comment>
+ <comment xml:lang="fr">document AportisDoc</comment>
++ <comment xml:lang="fur">document AportisDoc</comment>
+ <comment xml:lang="ga">cáipéis AportisDoc</comment>
+ <comment xml:lang="gl">documento de AportiDoc</comment>
+ <comment xml:lang="he">מסמך AportisDoc</comment>
+@@ -7256,7 +7439,7 @@
+ <comment xml:lang="oc">document AportisDoc</comment>
+ <comment xml:lang="pl">Dokument AportisDoc</comment>
+ <comment xml:lang="pt">documento AportisDoc</comment>
+- <comment xml:lang="pt_BR">Documento do AportisDoc</comment>
++ <comment xml:lang="pt-BR">Documento do AportisDoc</comment>
+ <comment xml:lang="ro">Document AportisDoc</comment>
+ <comment xml:lang="ru">Документ AportisDoc</comment>
+ <comment xml:lang="sk">Dokument AportisDoc</comment>
+@@ -7266,34 +7449,36 @@
+ <comment xml:lang="tr">AportisDoc belgesi</comment>
+ <comment xml:lang="uk">документ AportisDoc</comment>
+ <comment xml:lang="vi">Tài liệu AportisDoc</comment>
+- <comment xml:lang="zh_CN">AportisDoc 文档</comment>
+- <comment xml:lang="zh_TW">AportisDoc 文件</comment>
++ <comment xml:lang="zh-CN">AportisDoc 文档</comment>
++ <comment xml:lang="zh-TW">AportisDoc 文件</comment>
+ <sub-class-of type="application/vnd.palm"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="TEXtREAd" type="string" offset="60"/>
+- <match value="TEXtTlDc" type="string" offset="60"/>
++ <match type="string" value="TEXtREAd" offset="60"/>
++ <match type="string" value="TEXtTlDc" offset="60"/>
+ </magic>
+ <glob pattern="*.pdb"/>
+ <glob pattern="*.pdc"/>
+ </mime-type>
+ <mime-type type="application/x-applix-spreadsheet">
+ <comment>Applix Spreadsheets spreadsheet</comment>
++ <comment xml:lang="af">Applix Spreadsheets-sigblad</comment>
+ <comment xml:lang="ar">جداول بيانات Applix</comment>
+- <comment xml:lang="be@latin">Raźlikovy arkuš Applix Spreadsheets</comment>
++ <comment xml:lang="be-Latn">Raźlikovy arkuš Applix Spreadsheets</comment>
+ <comment xml:lang="bg">Таблица — Applix Spreadsheets</comment>
+ <comment xml:lang="ca">full de càlcul d'Applix Spreadsheets</comment>
+ <comment xml:lang="cs">sešit Applix Spreadsheets</comment>
+ <comment xml:lang="da">Applix Spreadsheets-regneark</comment>
+ <comment xml:lang="de">Applix-Spreadsheets-Tabelle</comment>
+ <comment xml:lang="el">Λογιστικό φύλλο Applix Spreadsheets</comment>
+- <comment xml:lang="en_GB">Applix Spreadsheets spreadsheet</comment>
++ <comment xml:lang="en-GB">Applix Spreadsheets spreadsheet</comment>
+ <comment xml:lang="eo">sterntabelo de Applix Spreadsheets</comment>
+ <comment xml:lang="es">hoja de cálculo de Applix Spreadsheets</comment>
+ <comment xml:lang="eu">Applix Spreadsheets kalkulu-orria</comment>
+ <comment xml:lang="fi">Applix Spreadsheets -taulukko</comment>
+ <comment xml:lang="fo">Applix Spreadsheets rokniark</comment>
+ <comment xml:lang="fr">feuille de calcul Applix</comment>
++ <comment xml:lang="fur">sfuei di calcul Applix Spreadsheets</comment>
+ <comment xml:lang="ga">scarbhileog Applix Spreadsheets</comment>
+ <comment xml:lang="gl">folla de cálculo de Applix</comment>
+ <comment xml:lang="he">גליון נתונים של Applix Spreadsheets</comment>
+@@ -7315,7 +7500,7 @@
+ <comment xml:lang="oc">fuèlh de calcul Applix</comment>
+ <comment xml:lang="pl">Arkusz Applix Spreadsheets</comment>
+ <comment xml:lang="pt">folha de cálculo Applix Spreadsheets</comment>
+- <comment xml:lang="pt_BR">Planilha do Applix Spreadsheets</comment>
++ <comment xml:lang="pt-BR">Planilha do Applix Spreadsheets</comment>
+ <comment xml:lang="ro">Foaie de calcul Applix</comment>
+ <comment xml:lang="ru">Электронная таблица Applix Spreadsheets</comment>
+ <comment xml:lang="sk">Zošit Applix Spreadsheets</comment>
+@@ -7323,26 +7508,27 @@
+ <comment xml:lang="sq">Fletë llogaritjesh Applix Spreadsheets</comment>
+ <comment xml:lang="sr">документ Апликсове Табеле</comment>
+ <comment xml:lang="sv">Applix Spreadsheets-kalkylblad</comment>
+- <comment xml:lang="tr">Applix Spreadsheets çalışma sayfası</comment>
++ <comment xml:lang="tr">Applix Spreadsheets hesap çizelgesi</comment>
+ <comment xml:lang="uk">ел. таблиця Applix Spreadsheets</comment>
+ <comment xml:lang="vi">Bảng tính Applix Spreadsheets</comment>
+- <comment xml:lang="zh_CN">Applix Spreadsheets 电子表格</comment>
+- <comment xml:lang="zh_TW">Applix Spreadsheets 試算表</comment>
++ <comment xml:lang="zh-CN">Applix Spreadsheets 电子表格</comment>
++ <comment xml:lang="zh-TW">Applix Spreadsheets 試算表</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <magic priority="50">
+- <match value="*BEGIN SPREADSHEETS" type="string" offset="0"/>
+- <match value="*BEGIN" type="string" offset="0">
+- <match value="SPREADSHEETS" type="string" offset="7"/>
++ <match type="string" value="*BEGIN SPREADSHEETS" offset="0"/>
++ <match type="string" value="*BEGIN" offset="0">
++ <match type="string" value="SPREADSHEETS" offset="7"/>
+ </match>
+ </magic>
+ <glob pattern="*.as"/>
+ </mime-type>
+ <mime-type type="application/x-applix-word">
+ <comment>Applix Words document</comment>
++ <comment xml:lang="af">Applix Words-dokument</comment>
+ <comment xml:lang="ar">مستند كلمات Applix</comment>
+ <comment xml:lang="ast">Documentu d'Applix Words</comment>
+ <comment xml:lang="az">Applix Words sənədi</comment>
+- <comment xml:lang="be@latin">Dakument Applix Words</comment>
++ <comment xml:lang="be-Latn">Dakument Applix Words</comment>
+ <comment xml:lang="bg">Документ — Applix Words</comment>
+ <comment xml:lang="ca">document d'Applix Words</comment>
+ <comment xml:lang="cs">dokument Applix Words</comment>
+@@ -7350,13 +7536,14 @@
+ <comment xml:lang="da">Applix Words-dokument</comment>
+ <comment xml:lang="de">Applix-Words-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Applix Words</comment>
+- <comment xml:lang="en_GB">Applix Words document</comment>
++ <comment xml:lang="en-GB">Applix Words document</comment>
+ <comment xml:lang="eo">dokumento de Applix Words</comment>
+ <comment xml:lang="es">documento de Applix Words</comment>
+ <comment xml:lang="eu">Applix Words dokumentua</comment>
+ <comment xml:lang="fi">Applix Words -asiakirja</comment>
+ <comment xml:lang="fo">Applix Words skjal</comment>
+ <comment xml:lang="fr">document Applix Words</comment>
++ <comment xml:lang="fur">document Applix Words</comment>
+ <comment xml:lang="ga">cáipéis Applix Words</comment>
+ <comment xml:lang="gl">documento de Applix Words</comment>
+ <comment xml:lang="he">מסמך של Applix Words</comment>
+@@ -7378,7 +7565,7 @@
+ <comment xml:lang="oc">document Applix Words</comment>
+ <comment xml:lang="pl">Dokument Applix Words</comment>
+ <comment xml:lang="pt">documento Applix Words</comment>
+- <comment xml:lang="pt_BR">Documento do Applix Words</comment>
++ <comment xml:lang="pt-BR">Documento do Applix Words</comment>
+ <comment xml:lang="ro">Document Applix Words</comment>
+ <comment xml:lang="ru">Документ Applix Words</comment>
+ <comment xml:lang="sk">Dokument Applix Words</comment>
+@@ -7389,33 +7576,35 @@
+ <comment xml:lang="tr">Applix Words belgesi</comment>
+ <comment xml:lang="uk">документ Applix Words</comment>
+ <comment xml:lang="vi">Tài liệu Applix Words</comment>
+- <comment xml:lang="zh_CN">Applix Words 文档</comment>
+- <comment xml:lang="zh_TW">Applix Words 文件</comment>
++ <comment xml:lang="zh-CN">Applix Words 文档</comment>
++ <comment xml:lang="zh-TW">Applix Words 文件</comment>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="*BEGIN" type="string" offset="0">
+- <match value="WORDS" type="string" offset="7"/>
++ <match type="string" value="*BEGIN" offset="0">
++ <match type="string" value="WORDS" offset="7"/>
+ </match>
+ </magic>
+ <glob pattern="*.aw"/>
+ </mime-type>
+ <mime-type type="application/x-arc">
+ <comment>ARC archive</comment>
++ <comment xml:lang="af">ARC-argief</comment>
+ <comment xml:lang="ar">أرشيف ARC</comment>
+- <comment xml:lang="be@latin">Archiŭ ARC</comment>
++ <comment xml:lang="be-Latn">Archiŭ ARC</comment>
+ <comment xml:lang="bg">Архив — ARC</comment>
+ <comment xml:lang="ca">arxiu ARC</comment>
+ <comment xml:lang="cs">archiv ARC</comment>
+ <comment xml:lang="da">ARC-arkiv</comment>
+ <comment xml:lang="de">ARC-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο ARC</comment>
+- <comment xml:lang="en_GB">ARC archive</comment>
++ <comment xml:lang="en-GB">ARC archive</comment>
+ <comment xml:lang="eo">ARC-arkivo</comment>
+ <comment xml:lang="es">archivador ARC</comment>
+ <comment xml:lang="eu">ARC artxiboa</comment>
+ <comment xml:lang="fi">ARC-arkisto</comment>
+ <comment xml:lang="fo">ARC skjalasavn</comment>
+ <comment xml:lang="fr">archive ARC</comment>
++ <comment xml:lang="fur">archivi ARC</comment>
+ <comment xml:lang="ga">cartlann ARC</comment>
+ <comment xml:lang="gl">arquivo ARC</comment>
+ <comment xml:lang="he">ארכיון ARC</comment>
+@@ -7436,7 +7625,7 @@
+ <comment xml:lang="oc">archiu ARC</comment>
+ <comment xml:lang="pl">Archiwum ARC</comment>
+ <comment xml:lang="pt">arquivo ARC</comment>
+- <comment xml:lang="pt_BR">Pacote ARC</comment>
++ <comment xml:lang="pt-BR">Pacote ARC</comment>
+ <comment xml:lang="ro">Arhivă ARC</comment>
+ <comment xml:lang="ru">Архив ARC</comment>
+ <comment xml:lang="sk">Archív ARC</comment>
+@@ -7447,35 +7636,37 @@
+ <comment xml:lang="tr">ARC arşivi</comment>
+ <comment xml:lang="uk">архів ARC</comment>
+ <comment xml:lang="vi">Kho nén ARC</comment>
+- <comment xml:lang="zh_CN">ARC 归档文件</comment>
+- <comment xml:lang="zh_TW">ARC 封存檔</comment>
++ <comment xml:lang="zh-CN">ARC 归档文件</comment>
++ <comment xml:lang="zh-TW">ARC 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="60">
+- <match value="0x0000081a" type="little32" offset="0" mask="0x8080ffff"/>
+- <match value="0x0000091a" type="little32" offset="0" mask="0x8080ffff"/>
+- <match value="0x0000021a" type="little32" offset="0" mask="0x8080ffff"/>
+- <match value="0x0000031a" type="little32" offset="0" mask="0x8080ffff"/>
+- <match value="0x0000041a" type="little32" offset="0" mask="0x8080ffff"/>
+- <match value="0x0000061a" type="little32" offset="0" mask="0x8080ffff"/>
++ <match type="little32" mask="0x8080ffff" value="0x0000081a" offset="0"/>
++ <match type="little32" mask="0x8080ffff" value="0x0000091a" offset="0"/>
++ <match type="little32" mask="0x8080ffff" value="0x0000021a" offset="0"/>
++ <match type="little32" mask="0x8080ffff" value="0x0000031a" offset="0"/>
++ <match type="little32" mask="0x8080ffff" value="0x0000041a" offset="0"/>
++ <match type="little32" mask="0x8080ffff" value="0x0000061a" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-archive">
+ <comment>AR archive</comment>
++ <comment xml:lang="af">AR-argief</comment>
+ <comment xml:lang="ar">أرشيف AR</comment>
+- <comment xml:lang="be@latin">Archiŭ AR</comment>
++ <comment xml:lang="be-Latn">Archiŭ AR</comment>
+ <comment xml:lang="bg">Архив — AR</comment>
+ <comment xml:lang="ca">arxiu AR</comment>
+ <comment xml:lang="cs">archiv AR</comment>
+ <comment xml:lang="da">AR-arkiv</comment>
+ <comment xml:lang="de">AR-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο AR</comment>
+- <comment xml:lang="en_GB">AR archive</comment>
++ <comment xml:lang="en-GB">AR archive</comment>
+ <comment xml:lang="eo">AR-arkivo</comment>
+ <comment xml:lang="es">archivador AR</comment>
+ <comment xml:lang="eu">AR artxiboa</comment>
+ <comment xml:lang="fi">AR-arkisto</comment>
+ <comment xml:lang="fo">AR skjalasavn</comment>
+ <comment xml:lang="fr">archive AR</comment>
++ <comment xml:lang="fur">archivi AR</comment>
+ <comment xml:lang="ga">cartlann AR</comment>
+ <comment xml:lang="gl">arquivo AR</comment>
+ <comment xml:lang="he">ארכיון AR</comment>
+@@ -7497,7 +7688,7 @@
+ <comment xml:lang="oc">archiu AR</comment>
+ <comment xml:lang="pl">Archiwum AR</comment>
+ <comment xml:lang="pt">arquivo AR</comment>
+- <comment xml:lang="pt_BR">Pacote AR</comment>
++ <comment xml:lang="pt-BR">Pacote AR</comment>
+ <comment xml:lang="ro">Arhivă AR</comment>
+ <comment xml:lang="ru">Архив AR</comment>
+ <comment xml:lang="sk">Archív AR</comment>
+@@ -7508,21 +7699,22 @@
+ <comment xml:lang="tr">AR arşivi</comment>
+ <comment xml:lang="uk">архів AR</comment>
+ <comment xml:lang="vi">Kho nén AR</comment>
+- <comment xml:lang="zh_CN">AR 归档文件</comment>
+- <comment xml:lang="zh_TW">AR 封存檔</comment>
++ <comment xml:lang="zh-CN">AR 归档文件</comment>
++ <comment xml:lang="zh-TW">AR 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="45">
+- <match value="&lt;ar&gt;" type="string" offset="0"/>
+- <match value="!&lt;arch&gt;" type="string" offset="0"/>
++ <match type="string" value="&lt;ar&gt;" offset="0"/>
++ <match type="string" value="!&lt;arch&gt;" offset="0"/>
+ </magic>
+ <glob pattern="*.a"/>
+ <glob pattern="*.ar"/>
+ </mime-type>
+ <mime-type type="application/x-arj">
+ <comment>ARJ archive</comment>
++ <comment xml:lang="af">ARJ-argief</comment>
+ <comment xml:lang="ar">أرشيف ARJ</comment>
+ <comment xml:lang="az">ARJ arxivi</comment>
+- <comment xml:lang="be@latin">Archiŭ ARJ</comment>
++ <comment xml:lang="be-Latn">Archiŭ ARJ</comment>
+ <comment xml:lang="bg">Архив — ARJ</comment>
+ <comment xml:lang="ca">arxiu ARJ</comment>
+ <comment xml:lang="cs">archiv ARJ</comment>
+@@ -7530,13 +7722,14 @@
+ <comment xml:lang="da">ARJ-arkiv</comment>
+ <comment xml:lang="de">ARJ-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο ARJ</comment>
+- <comment xml:lang="en_GB">ARJ archive</comment>
++ <comment xml:lang="en-GB">ARJ archive</comment>
+ <comment xml:lang="eo">ARJ-arkivo</comment>
+ <comment xml:lang="es">archivador ARJ</comment>
+ <comment xml:lang="eu">ARJ artxiboa</comment>
+ <comment xml:lang="fi">ARJ-arkisto</comment>
+ <comment xml:lang="fo">ARJ skjalasavn</comment>
+ <comment xml:lang="fr">archive ARJ</comment>
++ <comment xml:lang="fur">archivi ARJ</comment>
+ <comment xml:lang="ga">cartlann ARJ</comment>
+ <comment xml:lang="gl">arquivo ARJ</comment>
+ <comment xml:lang="he">ארכיון ARJ</comment>
+@@ -7558,7 +7751,7 @@
+ <comment xml:lang="oc">archiu ARJ</comment>
+ <comment xml:lang="pl">Archiwum ARJ</comment>
+ <comment xml:lang="pt">arquivo ARJ</comment>
+- <comment xml:lang="pt_BR">Pacote ARJ</comment>
++ <comment xml:lang="pt-BR">Pacote ARJ</comment>
+ <comment xml:lang="ro">Arhivă ARJ</comment>
+ <comment xml:lang="ru">Архив ARJ</comment>
+ <comment xml:lang="sk">Archív ARJ</comment>
+@@ -7569,34 +7762,36 @@
+ <comment xml:lang="tr">ARJ arşivi</comment>
+ <comment xml:lang="uk">архів ARJ</comment>
+ <comment xml:lang="vi">Kho nén ARJ</comment>
+- <comment xml:lang="zh_CN">ARJ 归档文件</comment>
+- <comment xml:lang="zh_TW">ARJ 封存檔</comment>
++ <comment xml:lang="zh-CN">ARJ 归档文件</comment>
++ <comment xml:lang="zh-TW">ARJ 封存檔</comment>
+ <acronym>ARJ</acronym>
+ <expanded-acronym>Archived by Robert Jung</expanded-acronym>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="50">
+- <match value="0xea60" type="little16" offset="0"/>
++ <match type="little16" value="0xea60" offset="0"/>
+ </magic>
+ <glob pattern="*.arj"/>
+ </mime-type>
+ <mime-type type="application/x-asp">
+ <comment>ASP page</comment>
++ <comment xml:lang="af">ASP-bladsy</comment>
+ <comment xml:lang="ar">صفحة ASP</comment>
+ <comment xml:lang="ast">Páxina ASP</comment>
+- <comment xml:lang="be@latin">Staronka ASP</comment>
++ <comment xml:lang="be-Latn">Staronka ASP</comment>
+ <comment xml:lang="bg">Страница — ASP</comment>
+ <comment xml:lang="ca">pàgina ASP</comment>
+ <comment xml:lang="cs">stránka ASP</comment>
+ <comment xml:lang="da">ASP-side</comment>
+ <comment xml:lang="de">ASP-Seite</comment>
+ <comment xml:lang="el">Σελίδα ASP</comment>
+- <comment xml:lang="en_GB">ASP page</comment>
++ <comment xml:lang="en-GB">ASP page</comment>
+ <comment xml:lang="eo">ASP-paĝo</comment>
+ <comment xml:lang="es">página ASP</comment>
+ <comment xml:lang="eu">ASP orria</comment>
+ <comment xml:lang="fi">ASP-sivu</comment>
+ <comment xml:lang="fo">ASP síða</comment>
+ <comment xml:lang="fr">page ASP</comment>
++ <comment xml:lang="fur">pagjine ASP</comment>
+ <comment xml:lang="ga">leathanach ASP</comment>
+ <comment xml:lang="gl">páxina ASP</comment>
+ <comment xml:lang="he">עמוד ASP</comment>
+@@ -7617,7 +7812,7 @@
+ <comment xml:lang="oc">pagina ASP</comment>
+ <comment xml:lang="pl">Strona ASP</comment>
+ <comment xml:lang="pt">página ASP</comment>
+- <comment xml:lang="pt_BR">Página ASP</comment>
++ <comment xml:lang="pt-BR">Página ASP</comment>
+ <comment xml:lang="ro">Pagină ASP</comment>
+ <comment xml:lang="ru">Страница ASP</comment>
+ <comment xml:lang="sk">Stránka ASP</comment>
+@@ -7628,8 +7823,8 @@
+ <comment xml:lang="tr">ASP sayfası</comment>
+ <comment xml:lang="uk">сторінка ASP</comment>
+ <comment xml:lang="vi">Trang ASP</comment>
+- <comment xml:lang="zh_CN">ASP 页面</comment>
+- <comment xml:lang="zh_TW">ASP 頁面</comment>
++ <comment xml:lang="zh-CN">ASP 页面</comment>
++ <comment xml:lang="zh-TW">ASP 頁面</comment>
+ <acronym>ASP</acronym>
+ <expanded-acronym>Active Server Page</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+@@ -7638,10 +7833,11 @@
+ </mime-type>
+ <mime-type type="application/x-awk">
+ <comment>AWK script</comment>
++ <comment xml:lang="af">AWK-skrip</comment>
+ <comment xml:lang="ar">سكربت AWK</comment>
+ <comment xml:lang="ast">Script AWK</comment>
+ <comment xml:lang="az">AWK skripti</comment>
+- <comment xml:lang="be@latin">Skrypt AWK</comment>
++ <comment xml:lang="be-Latn">Skrypt AWK</comment>
+ <comment xml:lang="bg">Скрипт — AWK</comment>
+ <comment xml:lang="ca">script AWK</comment>
+ <comment xml:lang="cs">skript AWK</comment>
+@@ -7649,13 +7845,14 @@
+ <comment xml:lang="da">AWK-program</comment>
+ <comment xml:lang="de">AWK-Skript</comment>
+ <comment xml:lang="el">Δέσμη ενεργειών AWK</comment>
+- <comment xml:lang="en_GB">AWK script</comment>
++ <comment xml:lang="en-GB">AWK script</comment>
+ <comment xml:lang="eo">AWK-skripto</comment>
+ <comment xml:lang="es">secuencia de órdenes en AWK</comment>
+ <comment xml:lang="eu">AWK script-a</comment>
+ <comment xml:lang="fi">AWK-komentotiedosto</comment>
+ <comment xml:lang="fo">AWK boðrøð</comment>
+ <comment xml:lang="fr">script AWK</comment>
++ <comment xml:lang="fur">script AWK</comment>
+ <comment xml:lang="ga">script AWK</comment>
+ <comment xml:lang="gl">script de AWK</comment>
+ <comment xml:lang="he">תסריט AWK</comment>
+@@ -7677,7 +7874,7 @@
+ <comment xml:lang="oc">escript AWK</comment>
+ <comment xml:lang="pl">Skrypt AWK</comment>
+ <comment xml:lang="pt">script AWK</comment>
+- <comment xml:lang="pt_BR">Script AWK</comment>
++ <comment xml:lang="pt-BR">Script AWK</comment>
+ <comment xml:lang="ro">Script AWK</comment>
+ <comment xml:lang="ru">Сценарий AWK</comment>
+ <comment xml:lang="sk">Skript AWK</comment>
+@@ -7688,31 +7885,32 @@
+ <comment xml:lang="tr">AWK betiği</comment>
+ <comment xml:lang="uk">скрипт AWK</comment>
+ <comment xml:lang="vi">Văn lệnh AWK</comment>
+- <comment xml:lang="zh_CN">AWK 脚本</comment>
+- <comment xml:lang="zh_TW">AWK 指令稿</comment>
++ <comment xml:lang="zh-CN">AWK 脚本</comment>
++ <comment xml:lang="zh-TW">AWK 指令稿</comment>
+ <sub-class-of type="application/x-executable"/>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-script"/>
+ <magic priority="50">
+- <match value="#!/bin/gawk" type="string" offset="0"/>
+- <match value="#! /bin/gawk" type="string" offset="0"/>
+- <match value="#!/usr/bin/gawk" type="string" offset="0"/>
+- <match value="#! /usr/bin/gawk" type="string" offset="0"/>
+- <match value="#!/usr/local/bin/gawk" type="string" offset="0"/>
+- <match value="#! /usr/local/bin/gawk" type="string" offset="0"/>
+- <match value="#!/bin/awk" type="string" offset="0"/>
+- <match value="#! /bin/awk" type="string" offset="0"/>
+- <match value="#!/usr/bin/awk" type="string" offset="0"/>
+- <match value="#! /usr/bin/awk" type="string" offset="0"/>
++ <match type="string" value="#!/bin/gawk" offset="0"/>
++ <match type="string" value="#! /bin/gawk" offset="0"/>
++ <match type="string" value="#!/usr/bin/gawk" offset="0"/>
++ <match type="string" value="#! /usr/bin/gawk" offset="0"/>
++ <match type="string" value="#!/usr/local/bin/gawk" offset="0"/>
++ <match type="string" value="#! /usr/local/bin/gawk" offset="0"/>
++ <match type="string" value="#!/bin/awk" offset="0"/>
++ <match type="string" value="#! /bin/awk" offset="0"/>
++ <match type="string" value="#!/usr/bin/awk" offset="0"/>
++ <match type="string" value="#! /usr/bin/awk" offset="0"/>
+ </magic>
+ <glob pattern="*.awk"/>
+ </mime-type>
+ <mime-type type="application/x-bcpio">
+ <comment>BCPIO document</comment>
++ <comment xml:lang="af">BCPIO-dokument</comment>
+ <comment xml:lang="ar">مستند BCPIO</comment>
+ <comment xml:lang="ast">Documentu BCPIO</comment>
+ <comment xml:lang="az">BCPIO sənədi</comment>
+- <comment xml:lang="be@latin">Dakument BCPIO</comment>
++ <comment xml:lang="be-Latn">Dakument BCPIO</comment>
+ <comment xml:lang="bg">Документ — BCPIO</comment>
+ <comment xml:lang="ca">document BCPIO</comment>
+ <comment xml:lang="cs">dokument BCPIO</comment>
+@@ -7720,13 +7918,14 @@
+ <comment xml:lang="da">BCPIO-dokument</comment>
+ <comment xml:lang="de">BCPIO-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο BCPIO</comment>
+- <comment xml:lang="en_GB">BCPIO document</comment>
++ <comment xml:lang="en-GB">BCPIO document</comment>
+ <comment xml:lang="eo">BCPIO-dokumento</comment>
+ <comment xml:lang="es">documento BCPIO</comment>
+ <comment xml:lang="eu">BCPIO dokumentua</comment>
+ <comment xml:lang="fi">BCPIO-asiakirja</comment>
+ <comment xml:lang="fo">BCPIO skjal</comment>
+ <comment xml:lang="fr">document BCPIO</comment>
++ <comment xml:lang="fur">document BCPIO</comment>
+ <comment xml:lang="ga">cáipéis BCPIO</comment>
+ <comment xml:lang="gl">documento BCPIO</comment>
+ <comment xml:lang="he">מסמך של BCPO</comment>
+@@ -7748,7 +7947,7 @@
+ <comment xml:lang="oc">document BCPIO</comment>
+ <comment xml:lang="pl">Dokument BCPIO</comment>
+ <comment xml:lang="pt">documento BCPIO</comment>
+- <comment xml:lang="pt_BR">Documento BCPIO</comment>
++ <comment xml:lang="pt-BR">Documento BCPIO</comment>
+ <comment xml:lang="ro">Document BCPIO</comment>
+ <comment xml:lang="ru">Документ BCPIO</comment>
+ <comment xml:lang="sk">Dokument BCPIO</comment>
+@@ -7759,8 +7958,8 @@
+ <comment xml:lang="tr">BCPIO belgesi</comment>
+ <comment xml:lang="uk">документ BCPIO</comment>
+ <comment xml:lang="vi">Tài liệu BCPIO</comment>
+- <comment xml:lang="zh_CN">BCPIO 文档</comment>
+- <comment xml:lang="zh_TW">BCPIO 文件</comment>
++ <comment xml:lang="zh-CN">BCPIO 文档</comment>
++ <comment xml:lang="zh-TW">BCPIO 文件</comment>
+ <acronym>BCPIO</acronym>
+ <expanded-acronym>Binary CPIO</expanded-acronym>
+ <generic-icon name="package-x-generic"/>
+@@ -7768,9 +7967,10 @@
+ </mime-type>
+ <mime-type type="application/x-bittorrent">
+ <comment>BitTorrent seed file</comment>
++ <comment xml:lang="af">BitTorrent-saadlêer</comment>
+ <comment xml:lang="ar">ملف باذر البت تورنت</comment>
+ <comment xml:lang="az">BitTorrent seed faylı</comment>
+- <comment xml:lang="be@latin">Fajł krynicy BitTorrent</comment>
++ <comment xml:lang="be-Latn">Fajł krynicy BitTorrent</comment>
+ <comment xml:lang="bg">Файл-източник — BitTorrent</comment>
+ <comment xml:lang="ca">fitxer de llavor BitTorrent</comment>
+ <comment xml:lang="cs">soubor BitTorrent</comment>
+@@ -7778,13 +7978,14 @@
+ <comment xml:lang="da">BitTorrent-frøfil</comment>
+ <comment xml:lang="de">BitTorrent-Seed-Datei</comment>
+ <comment xml:lang="el">Αρχείο BitTorrent seed</comment>
+- <comment xml:lang="en_GB">BitTorrent seed file</comment>
++ <comment xml:lang="en-GB">BitTorrent seed file</comment>
+ <comment xml:lang="eo">BitTorrent-semdosiero</comment>
+ <comment xml:lang="es">archivo semilla de BitTorrent</comment>
+ <comment xml:lang="eu">BitTorrent hazi-fitxategia</comment>
+ <comment xml:lang="fi">BitTorrent-siementiedosto</comment>
+ <comment xml:lang="fo">BitTorrent seed fíla</comment>
+ <comment xml:lang="fr">fichier graine BitTorrent</comment>
++ <comment xml:lang="fur">file semence di BitTorrent</comment>
+ <comment xml:lang="ga">comhad síl BitTorrent</comment>
+ <comment xml:lang="gl">ficheiro de orixe BitTorrent</comment>
+ <comment xml:lang="he">קובץ זריעה של BitTorrent</comment>
+@@ -7805,7 +8006,7 @@
+ <comment xml:lang="oc">fichièr grana BitTorrent</comment>
+ <comment xml:lang="pl">Plik ziarna BitTorrent</comment>
+ <comment xml:lang="pt">ficheiro de semente BitTorrent</comment>
+- <comment xml:lang="pt_BR">Arquivo semente BitTorrent</comment>
++ <comment xml:lang="pt-BR">Arquivo semente BitTorrent</comment>
+ <comment xml:lang="ro">Fișier sursă-completă BitTorrent</comment>
+ <comment xml:lang="ru">Файл источника BitTorrent</comment>
+ <comment xml:lang="sk">Súbor BitTorrent</comment>
+@@ -7816,31 +8017,33 @@
+ <comment xml:lang="tr">BitTorrent tohum dosyası</comment>
+ <comment xml:lang="uk">файл поширення BitTorrent</comment>
+ <comment xml:lang="vi">Tải tập hạt BitTorrent</comment>
+- <comment xml:lang="zh_CN">BitTorrent 种子文件</comment>
+- <comment xml:lang="zh_TW">BitTorrent 種子檔</comment>
++ <comment xml:lang="zh-CN">BitTorrent 种子文件</comment>
++ <comment xml:lang="zh-TW">BitTorrent 種子檔</comment>
+ <magic priority="50">
+- <match value="d8:announce" type="string" offset="0"/>
++ <match type="string" value="d8:announce" offset="0"/>
+ </magic>
+ <glob pattern="*.torrent"/>
+ </mime-type>
+ <mime-type type="application/x-blender">
+ <comment>Blender scene</comment>
++ <comment xml:lang="af">Blender-toneel</comment>
+ <comment xml:lang="ar">مشهد بلندر</comment>
+ <comment xml:lang="ast">Escena de Blender</comment>
+- <comment xml:lang="be@latin">Scena Blender</comment>
++ <comment xml:lang="be-Latn">Scena Blender</comment>
+ <comment xml:lang="bg">Сцена — Blender</comment>
+ <comment xml:lang="ca">escena de Blender</comment>
+ <comment xml:lang="cs">scéna Blender</comment>
+ <comment xml:lang="da">Blenderscene</comment>
+ <comment xml:lang="de">Blender-Szene</comment>
+ <comment xml:lang="el">Σκηνή Blender</comment>
+- <comment xml:lang="en_GB">Blender scene</comment>
++ <comment xml:lang="en-GB">Blender scene</comment>
+ <comment xml:lang="eo">Blender-sceno</comment>
+ <comment xml:lang="es">escena de Blender</comment>
+ <comment xml:lang="eu">Blender-eko fitxategia</comment>
+ <comment xml:lang="fi">Blender-näkymä</comment>
+ <comment xml:lang="fo">Blender leikmynd</comment>
+ <comment xml:lang="fr">scène Blender</comment>
++ <comment xml:lang="fur">sene Blender</comment>
+ <comment xml:lang="ga">radharc Blender</comment>
+ <comment xml:lang="gl">escena de Blender</comment>
+ <comment xml:lang="he">סצנת Blender</comment>
+@@ -7862,7 +8065,7 @@
+ <comment xml:lang="oc">scèna Blender</comment>
+ <comment xml:lang="pl">Scena programu Blender</comment>
+ <comment xml:lang="pt">cenário Blender</comment>
+- <comment xml:lang="pt_BR">Cena do Blender</comment>
++ <comment xml:lang="pt-BR">Cena do Blender</comment>
+ <comment xml:lang="ro">Scenă Blender</comment>
+ <comment xml:lang="ru">Сцена Blender</comment>
+ <comment xml:lang="sk">Scéna Blender</comment>
+@@ -7873,38 +8076,40 @@
+ <comment xml:lang="tr">Blender sahnesi</comment>
+ <comment xml:lang="uk">сцена Blender</comment>
+ <comment xml:lang="vi">Cảnh Blender</comment>
+- <comment xml:lang="zh_CN">Blender 场景</comment>
+- <comment xml:lang="zh_TW">Blender 場景</comment>
++ <comment xml:lang="zh-CN">Blender 场景</comment>
++ <comment xml:lang="zh-TW">Blender 場景</comment>
+ <generic-icon name="image-x-generic"/>
+ <glob pattern="*.blender"/>
+ <glob pattern="*.blend"/>
+ <glob pattern="*.BLEND"/>
+ <magic priority="50">
+- <match value="BLENDER" type="string" offset="0"/>
++ <match type="string" value="BLENDER" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-bzdvi">
+ <comment>TeX DVI document (bzip-compressed)</comment>
++ <comment xml:lang="af">TeX DVI-dokument (bzip-saamgepers)</comment>
+ <comment xml:lang="ar">مستند TeX DVI (مضغوط-bzip)</comment>
+ <comment xml:lang="ast">Documentu Tex DVI (comprimíu en bzip)</comment>
+- <comment xml:lang="be@latin">Dakument TeX DVI (bzip-skampresavany)</comment>
++ <comment xml:lang="be-Latn">Dakument TeX DVI (bzip-skampresavany)</comment>
+ <comment xml:lang="bg">Документ — TeX DVI, компресиран с bzip</comment>
+ <comment xml:lang="ca">document de TeX DVI (amb compressió bzip)</comment>
+ <comment xml:lang="cs">dokument TeX DVI (komprimovaný pomocí bzip)</comment>
+ <comment xml:lang="da">TeX DVI-dokument (bzip-komprimeret)</comment>
+ <comment xml:lang="de">TeX-DVI-Dokument (bzip-komprimiert)</comment>
+ <comment xml:lang="el">Αρχείο TeX DVI (συμπιεσμένο με bzip)</comment>
+- <comment xml:lang="en_GB">TeX DVI document (bzip-compressed)</comment>
++ <comment xml:lang="en-GB">TeX DVI document (bzip-compressed)</comment>
+ <comment xml:lang="es">documento DVI de TeX (comprimido con bzip)</comment>
+ <comment xml:lang="eu">TeX DVI dokumentua (bzip-ekin konprimitua)</comment>
+ <comment xml:lang="fi">TeX DVI -asiakirja (bzip-pakattu)</comment>
+ <comment xml:lang="fo">TeX DVI skjal (bzip-stappað)</comment>
+ <comment xml:lang="fr">document DVI TeX (compressé bzip)</comment>
++ <comment xml:lang="fur">document DVI TeX (comprimût cun bzip)</comment>
+ <comment xml:lang="ga">cáipéis DVI TeX (comhbhrúite le bzip)</comment>
+ <comment xml:lang="gl">documento DVI de TeX (comprimido con bzip)</comment>
+ <comment xml:lang="he">מסמך מסוג TeX DVI (מכווץ ע״י bzip)</comment>
+ <comment xml:lang="hr">TeX DVI dokument (bzip sažeto)</comment>
+- <comment xml:lang="hu">TeX DVI dokumentum (bzip-pel tömörítve)</comment>
++ <comment xml:lang="hu">TeX DVI dokumentum (bzip tömörítésű)</comment>
+ <comment xml:lang="ia">Documento TeX DVI (comprimite con bzip)</comment>
+ <comment xml:lang="id">Dokumen TeX DVI (terkompresi bzip)</comment>
+ <comment xml:lang="it">Documento TeX DVI (compresso con bzip)</comment>
+@@ -7919,7 +8124,7 @@
+ <comment xml:lang="oc">document DVI TeX (compressat bzip)</comment>
+ <comment xml:lang="pl">Dokument TeX DVI (kompresja bzip)</comment>
+ <comment xml:lang="pt">documento TeX DVI (compressão bzip)</comment>
+- <comment xml:lang="pt_BR">Documento DVI TeX (compactado com bzip)</comment>
++ <comment xml:lang="pt-BR">Documento DVI TeX (compactado com bzip)</comment>
+ <comment xml:lang="ro">Document TeX DVI (comprimat bzip)</comment>
+ <comment xml:lang="ru">Документ TeX DVI (сжатый bzip)</comment>
+ <comment xml:lang="sk">Dokument TeX DVI (komprimovaný pomocou bzip)</comment>
+@@ -7930,30 +8135,32 @@
+ <comment xml:lang="tr">TeX DVI belgesi (bzip ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">документ TeX DVI (стиснений bzip)</comment>
+ <comment xml:lang="vi">Tài liệu DVI TeX (đã nén bzip)</comment>
+- <comment xml:lang="zh_CN">TeX DVI 文档(gzip 压缩)</comment>
+- <comment xml:lang="zh_TW">TeX DVI 文件 (bzip 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">TeX DVI 文档(gzip 压缩)</comment>
++ <comment xml:lang="zh-TW">TeX DVI 文件 (bzip 壓縮)</comment>
+ <sub-class-of type="application/x-bzip"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.dvi.bz2"/>
+ </mime-type>
+ <mime-type type="application/x-bzip">
+ <comment>Bzip archive</comment>
++ <comment xml:lang="af">Bzip-argief</comment>
+ <comment xml:lang="ar">أرشيف Bzip</comment>
+ <comment xml:lang="ast">Archivu Bzip</comment>
+- <comment xml:lang="be@latin">Archiŭ bzip</comment>
++ <comment xml:lang="be-Latn">Archiŭ bzip</comment>
+ <comment xml:lang="bg">Архив — bzip</comment>
+ <comment xml:lang="ca">arxiu bzip</comment>
+ <comment xml:lang="cs">archiv bzip</comment>
+ <comment xml:lang="da">Bzip-arkiv</comment>
+ <comment xml:lang="de">Bzip-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο Bzip</comment>
+- <comment xml:lang="en_GB">Bzip archive</comment>
++ <comment xml:lang="en-GB">Bzip archive</comment>
+ <comment xml:lang="eo">Bzip-arkivo</comment>
+ <comment xml:lang="es">archivador Bzip</comment>
+ <comment xml:lang="eu">Bzip artxiboa</comment>
+ <comment xml:lang="fi">Bzip-arkisto</comment>
+ <comment xml:lang="fo">Bzip skjalasavn</comment>
+ <comment xml:lang="fr">archive bzip</comment>
++ <comment xml:lang="fur">archivi Bzip</comment>
+ <comment xml:lang="ga">cartlann Bzip</comment>
+ <comment xml:lang="gl">arquivo Bzip</comment>
+ <comment xml:lang="he">ארכיון Bzip</comment>
+@@ -7974,10 +8181,10 @@
+ <comment xml:lang="oc">archiu bzip</comment>
+ <comment xml:lang="pl">Archiwum bzip</comment>
+ <comment xml:lang="pt">arquivo Bzip</comment>
+- <comment xml:lang="pt_BR">Pacote Bzip</comment>
++ <comment xml:lang="pt-BR">Pacote Bzip</comment>
+ <comment xml:lang="ro">Arhivă Bzip</comment>
+ <comment xml:lang="ru">Архив BZIP</comment>
+- <comment xml:lang="sk">Archív bzip</comment>
++ <comment xml:lang="sk">Archív Bzip</comment>
+ <comment xml:lang="sl">Datoteka arhiva Bzip</comment>
+ <comment xml:lang="sq">Arkiv bzip</comment>
+ <comment xml:lang="sr">Бзип архива</comment>
+@@ -7985,38 +8192,41 @@
+ <comment xml:lang="tr">Bzip arşivi</comment>
+ <comment xml:lang="uk">архів bzip</comment>
+ <comment xml:lang="vi">Kho nén bzip</comment>
+- <comment xml:lang="zh_CN">Bzip 归档文件</comment>
+- <comment xml:lang="zh_TW">Bzip 封存檔</comment>
++ <comment xml:lang="zh-CN">Bzip 归档文件</comment>
++ <comment xml:lang="zh-TW">Bzip 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="50">
+- <match value="BZh" type="string" offset="0"/>
++ <match type="string" value="BZh" offset="0"/>
+ </magic>
+ <glob pattern="*.bz2"/>
+ <glob pattern="*.bz"/>
+ <alias type="application/x-bzip2"/>
++ <alias type="application/bzip2"/>
+ </mime-type>
+ <mime-type type="application/x-bzip-compressed-tar">
+ <comment>Tar archive (bzip-compressed)</comment>
++ <comment xml:lang="af">Tar-argief (bzip-saamgepers)</comment>
+ <comment xml:lang="ar">أرشيف Tar (مضغوط-bzip)</comment>
+ <comment xml:lang="ast">Archivu Tar (comprimíu en bzip)</comment>
+- <comment xml:lang="be@latin">Archiŭ tar (bzip-skampresavany)</comment>
++ <comment xml:lang="be-Latn">Archiŭ tar (bzip-skampresavany)</comment>
+ <comment xml:lang="bg">Архив — tar, компресиран с bzip</comment>
+ <comment xml:lang="ca">arxiu tar (amb compressió bzip)</comment>
+ <comment xml:lang="cs">archiv Tar (komprimovaný pomocí bzip)</comment>
+ <comment xml:lang="da">Tar-arkiv (bzip-komprimeret)</comment>
+ <comment xml:lang="de">Tar-Archiv (bzip-komprimiert)</comment>
+ <comment xml:lang="el">Αρχείο Tar (συμπιεσμένο με bzip)</comment>
+- <comment xml:lang="en_GB">Tar archive (bzip-compressed)</comment>
++ <comment xml:lang="en-GB">Tar archive (bzip-compressed)</comment>
+ <comment xml:lang="es">archivador Tar (comprimido con bzip)</comment>
+ <comment xml:lang="eu">Tar artxiboa (bzip-ekin konprimitua)</comment>
+ <comment xml:lang="fi">Tar-arkisto (bzip-pakattu)</comment>
+ <comment xml:lang="fo">Tar skjalasavn (bzip-stappað)</comment>
+ <comment xml:lang="fr">archive tar (compressée bzip)</comment>
++ <comment xml:lang="fur">archivi Tar (comprimût cun bzip)</comment>
+ <comment xml:lang="ga">cartlann Tar (comhbhrúite le bzip)</comment>
+ <comment xml:lang="gl">arquivo Tar (comprimido con bzip)</comment>
+ <comment xml:lang="he">ארכיון Tar (מכווץ ע״י bzip)</comment>
+ <comment xml:lang="hr">Tar arhiva (bzip sažeto)</comment>
+- <comment xml:lang="hu">Tar archívum (bzip-pel tömörítve)</comment>
++ <comment xml:lang="hu">Tar archívum (bzip tömörítésű)</comment>
+ <comment xml:lang="ia">Archivo Tar (comprimite con bzip)</comment>
+ <comment xml:lang="id">Arsip Tar (terkompresi bzip)</comment>
+ <comment xml:lang="it">Archivio tar (compresso con bzip)</comment>
+@@ -8031,10 +8241,10 @@
+ <comment xml:lang="oc">archiu tar (compressat bzip)</comment>
+ <comment xml:lang="pl">Archiwum tar (kompresja bzip)</comment>
+ <comment xml:lang="pt">arquivo Tar (compressão bzip)</comment>
+- <comment xml:lang="pt_BR">Pacote Tar (compactado com bzip)</comment>
++ <comment xml:lang="pt-BR">Pacote Tar (compactado com bzip)</comment>
+ <comment xml:lang="ro">Arhivă Tar (comprimată bzip)</comment>
+ <comment xml:lang="ru">Архив TAR (сжатый bzip)</comment>
+- <comment xml:lang="sk">Archív tar (komprimovaný pomocou bzip)</comment>
++ <comment xml:lang="sk">Archív Tar (komprimovaný pomocou bzip)</comment>
+ <comment xml:lang="sl">Datoteka arhiva Tar (stisnjen z bzip)</comment>
+ <comment xml:lang="sq">Arkiv tar (i kompresuar me bzip)</comment>
+ <comment xml:lang="sr">Тар архива (запакована бзипом)</comment>
+@@ -8042,8 +8252,8 @@
+ <comment xml:lang="tr">Tar arşivi (bzip ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">архів tar (стиснений bzip)</comment>
+ <comment xml:lang="vi">Kho nén tar (đã nén bzip)</comment>
+- <comment xml:lang="zh_CN">Tar 归档文件(bzip 压缩)</comment>
+- <comment xml:lang="zh_TW">Tar 封存檔 (bzip 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">Tar 归档文件(bzip 压缩)</comment>
++ <comment xml:lang="zh-TW">Tar 封存檔 (bzip 壓縮)</comment>
+ <generic-icon name="package-x-generic"/>
+ <sub-class-of type="application/x-bzip"/>
+ <glob pattern="*.tar.bz2"/>
+@@ -8054,26 +8264,28 @@
+ </mime-type>
+ <mime-type type="application/x-bzpdf">
+ <comment>PDF document (bzip-compressed)</comment>
++ <comment xml:lang="af">PDF-dokument (bzip-saamgepers)</comment>
+ <comment xml:lang="ar">مستند PDF (مضغوط-bzip)</comment>
+ <comment xml:lang="ast">Documentu PDF (comprimíu en bzip)</comment>
+- <comment xml:lang="be@latin">Dakument PDF (bzip-skampresavany)</comment>
++ <comment xml:lang="be-Latn">Dakument PDF (bzip-skampresavany)</comment>
+ <comment xml:lang="bg">Документ — PDF, компресиран с bzip</comment>
+ <comment xml:lang="ca">document PDF (amb compressió bzip)</comment>
+ <comment xml:lang="cs">dokument PDF (komprimovaný pomocí bzip)</comment>
+ <comment xml:lang="da">PDF-dokument (bzip-komprimeret)</comment>
+ <comment xml:lang="de">PDF-Dokument (bzip-komprimiert)</comment>
+ <comment xml:lang="el">Έγγραφο PDF (συμπιεσμένο με bzip)</comment>
+- <comment xml:lang="en_GB">PDF document (bzip-compressed)</comment>
++ <comment xml:lang="en-GB">PDF document (bzip-compressed)</comment>
+ <comment xml:lang="es">documento PDF (comprimido con bzip)</comment>
+ <comment xml:lang="eu">PostScript dokumentua (bzip-ekin konprimitua)</comment>
+ <comment xml:lang="fi">PDF-asiakirja (bzip-pakattu)</comment>
+ <comment xml:lang="fo">PDF skjal (bzip-stappað)</comment>
+ <comment xml:lang="fr">document PDF (compressé bzip)</comment>
++ <comment xml:lang="fur">document PDF (comprimût cun bzip)</comment>
+ <comment xml:lang="ga">cáipéis PDF (comhbhrúite le bzip)</comment>
+ <comment xml:lang="gl">documento PDF (comprimido en bzip)</comment>
+ <comment xml:lang="he">מסמך PDF (מכווץ ע״י bzip)</comment>
+ <comment xml:lang="hr">PDF dokument (bzip sažet)</comment>
+- <comment xml:lang="hu">PDF dokumentum (bzip-tömörítésű)</comment>
++ <comment xml:lang="hu">PDF dokumentum (bzip tömörítésű)</comment>
+ <comment xml:lang="ia">Documento PDF (comprimite con bzip)</comment>
+ <comment xml:lang="id">Dokumen PDF (terkompresi bzip)</comment>
+ <comment xml:lang="it">Documento PDF (compresso con bzip)</comment>
+@@ -8088,7 +8300,7 @@
+ <comment xml:lang="oc">document PDF (compressat bzip)</comment>
+ <comment xml:lang="pl">Dokument PDF (kompresja bzip)</comment>
+ <comment xml:lang="pt">documento PDF (compressão bzip)</comment>
+- <comment xml:lang="pt_BR">Documento PDF (compactado com bzip)</comment>
++ <comment xml:lang="pt-BR">Documento PDF (compactado com bzip)</comment>
+ <comment xml:lang="ro">Document PDF (comprimat bzip)</comment>
+ <comment xml:lang="ru">Документ PDF (сжатый bzip)</comment>
+ <comment xml:lang="sk">Dokument PDF (komprimovaný pomocou bzip)</comment>
+@@ -8099,34 +8311,36 @@
+ <comment xml:lang="tr">PDF belgesi (bzip ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">документ PDF (стиснений bzip)</comment>
+ <comment xml:lang="vi">Tài liệu PDF (đã nén bzip)</comment>
+- <comment xml:lang="zh_CN">PDF 文档(bzip 压缩)</comment>
+- <comment xml:lang="zh_TW">PDF 文件 (bzip 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">PDF 文档(bzip 压缩)</comment>
++ <comment xml:lang="zh-TW">PDF 文件 (bzip 壓縮)</comment>
+ <sub-class-of type="application/x-bzip"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.pdf.bz2"/>
+ </mime-type>
+ <mime-type type="application/x-bzpostscript">
+ <comment>PostScript document (bzip-compressed)</comment>
++ <comment xml:lang="af">PostScript-dokument (bzip-saamgepers)</comment>
+ <comment xml:lang="ar">مستند PostScript (مضغوط-bzip)</comment>
+ <comment xml:lang="ast">Documentu PostScript (comprimíu en bzip)</comment>
+- <comment xml:lang="be@latin">Dakument PostScript (bzip-skampresavany)</comment>
++ <comment xml:lang="be-Latn">Dakument PostScript (bzip-skampresavany)</comment>
+ <comment xml:lang="bg">Документ — PostScript, компресиран с bzip</comment>
+ <comment xml:lang="ca">document PostScript (amb compressió bzip)</comment>
+ <comment xml:lang="cs">dokument PostScript (komprimovaný pomocí bzip)</comment>
+ <comment xml:lang="da">PostScript-dokument (bzip-komprimeret)</comment>
+ <comment xml:lang="de">PostScript-Dokument (bzip-komprimiert)</comment>
+ <comment xml:lang="el">Έγγραφο PostScript (συμπιεσμένο με bzip)</comment>
+- <comment xml:lang="en_GB">PostScript document (bzip-compressed)</comment>
++ <comment xml:lang="en-GB">PostScript document (bzip-compressed)</comment>
+ <comment xml:lang="es">documento PostScript (comprimido con bzip)</comment>
+ <comment xml:lang="eu">PostScript dokumentua (bzip-ekin konprimitua)</comment>
+ <comment xml:lang="fi">PostScript-asiakirja (bzip-pakattu)</comment>
+ <comment xml:lang="fo">PostScript skjal (bzip-stappað)</comment>
+ <comment xml:lang="fr">document PostScript (compressé bzip)</comment>
++ <comment xml:lang="fur">document PostScript (comprimût cun bzip)</comment>
+ <comment xml:lang="ga">cáipéis PostScript (comhbhrúite le bzip)</comment>
+ <comment xml:lang="gl">documento PostScript (comprimido con bzip)</comment>
+ <comment xml:lang="he">מסמך PostDcript (מכווץ ע״י bzip)</comment>
+ <comment xml:lang="hr">PostScript dokument (bzip sažet)</comment>
+- <comment xml:lang="hu">PostScript dokumentum (bzip-tömörítésű)</comment>
++ <comment xml:lang="hu">PostScript dokumentum (bzip tömörítésű)</comment>
+ <comment xml:lang="ia">Documento PostScript (comprimite con bzip)</comment>
+ <comment xml:lang="id">Dokumen PostScript (terkompresi bzip)</comment>
+ <comment xml:lang="it">Documento PostScript (compresso con bzip)</comment>
+@@ -8139,9 +8353,9 @@
+ <comment xml:lang="nl">PostScript-document (ingepakt met bzip)</comment>
+ <comment xml:lang="nn">PostScript-dokument (pakka med bzip)</comment>
+ <comment xml:lang="oc">document PostEscript (compressat bzip)</comment>
+- <comment xml:lang="pl">Dokument Postscript (kompresja bzip)</comment>
++ <comment xml:lang="pl">Dokument PostScript (kompresja bzip)</comment>
+ <comment xml:lang="pt">documento PostScript (compressão bzip)</comment>
+- <comment xml:lang="pt_BR">Documento PostScript (compactado com bzip)</comment>
++ <comment xml:lang="pt-BR">Documento PostScript (compactado com bzip)</comment>
+ <comment xml:lang="ro">Document PostScript (comprimat bzip)</comment>
+ <comment xml:lang="ru">Документ PostScript (сжатый bzip)</comment>
+ <comment xml:lang="sk">Dokument PostScript (komprimovaný pomocou bzip)</comment>
+@@ -8152,28 +8366,30 @@
+ <comment xml:lang="tr">PostScript belgesi (bzip ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">документ PostScript (стиснене bzip)</comment>
+ <comment xml:lang="vi">Tài liệu PostScript (đã nén bzip)</comment>
+- <comment xml:lang="zh_CN">PostScript 文档(bzip 压缩)</comment>
+- <comment xml:lang="zh_TW">PostScript 文件 (bzip 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">PostScript 文档(bzip 压缩)</comment>
++ <comment xml:lang="zh-TW">PostScript 文件 (bzip 壓縮)</comment>
+ <sub-class-of type="application/x-bzip"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.ps.bz2"/>
+ </mime-type>
+ <mime-type type="application/vnd.comicbook-rar">
+ <comment>comic book archive</comment>
++ <comment xml:lang="af">strokiesprent-argief</comment>
+ <comment xml:lang="ar">أرشيف comic book</comment>
+- <comment xml:lang="be@latin">archiŭ komiksaŭ</comment>
++ <comment xml:lang="be-Latn">archiŭ komiksaŭ</comment>
+ <comment xml:lang="bg">Архив — комикси</comment>
+ <comment xml:lang="ca">arxiu comic book</comment>
+ <comment xml:lang="cs">archiv knihy komiksů</comment>
+ <comment xml:lang="da">comic book-arkiv</comment>
+ <comment xml:lang="de">Comic-Book-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο κόμικ</comment>
+- <comment xml:lang="en_GB">comic book archive</comment>
++ <comment xml:lang="en-GB">comic book archive</comment>
+ <comment xml:lang="es">archivador de libro de cómic</comment>
+ <comment xml:lang="eu">komiki artxiboa</comment>
+ <comment xml:lang="fi">sarjakuva-arkisto</comment>
+ <comment xml:lang="fo">teknisøgubóka skjalasavn</comment>
+ <comment xml:lang="fr">archive Comic Book</comment>
++ <comment xml:lang="fur">archivi di fumets</comment>
+ <comment xml:lang="ga">cartlann chartúin</comment>
+ <comment xml:lang="gl">ficheiro de libro de banda deseñada</comment>
+ <comment xml:lang="he">ארכיון ספר קומי</comment>
+@@ -8193,7 +8409,7 @@
+ <comment xml:lang="oc">archiu Comic Book</comment>
+ <comment xml:lang="pl">Archiwum komiksu</comment>
+ <comment xml:lang="pt">arquivo de banda desenhada</comment>
+- <comment xml:lang="pt_BR">Pacote de histórias em quadrinhos</comment>
++ <comment xml:lang="pt-BR">Pacote de histórias em quadrinhos</comment>
+ <comment xml:lang="ro">arhivă benzi desenate</comment>
+ <comment xml:lang="ru">Архив комиксов</comment>
+ <comment xml:lang="sk">Archív knihy komiksov</comment>
+@@ -8204,8 +8420,8 @@
+ <comment xml:lang="tr">çizgi roman arşivi</comment>
+ <comment xml:lang="uk">архів коміксів</comment>
+ <comment xml:lang="vi">Kho nén sách tranh chuyện vui</comment>
+- <comment xml:lang="zh_CN">漫画书归档文件</comment>
+- <comment xml:lang="zh_TW">漫畫書封存檔</comment>
++ <comment xml:lang="zh-CN">漫画书归档文件</comment>
++ <comment xml:lang="zh-TW">漫畫書封存檔</comment>
+ <sub-class-of type="application/vnd.rar"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.cbr"/>
+@@ -8213,20 +8429,22 @@
+ </mime-type>
+ <mime-type type="application/x-cb7">
+ <comment>comic book archive</comment>
++ <comment xml:lang="af">strokiesprent-argief</comment>
+ <comment xml:lang="ar">أرشيف comic book</comment>
+- <comment xml:lang="be@latin">archiŭ komiksaŭ</comment>
++ <comment xml:lang="be-Latn">archiŭ komiksaŭ</comment>
+ <comment xml:lang="bg">Архив — комикси</comment>
+ <comment xml:lang="ca">arxiu comic book</comment>
+ <comment xml:lang="cs">archiv knihy komiksů</comment>
+ <comment xml:lang="da">comic book-arkiv</comment>
+ <comment xml:lang="de">Comic-Book-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο κόμικ</comment>
+- <comment xml:lang="en_GB">comic book archive</comment>
++ <comment xml:lang="en-GB">comic book archive</comment>
+ <comment xml:lang="es">archivador de libro de cómic</comment>
+ <comment xml:lang="eu">komiki artxiboa</comment>
+ <comment xml:lang="fi">sarjakuva-arkisto</comment>
+ <comment xml:lang="fo">teknisøgubóka skjalasavn</comment>
+ <comment xml:lang="fr">archive Comic Book</comment>
++ <comment xml:lang="fur">archivi di fumets</comment>
+ <comment xml:lang="ga">cartlann chartúin</comment>
+ <comment xml:lang="gl">ficheiro de libro de banda deseñada</comment>
+ <comment xml:lang="he">ארכיון ספר קומי</comment>
+@@ -8246,7 +8464,7 @@
+ <comment xml:lang="oc">archiu Comic Book</comment>
+ <comment xml:lang="pl">Archiwum komiksu</comment>
+ <comment xml:lang="pt">arquivo de banda desenhada</comment>
+- <comment xml:lang="pt_BR">Pacote de histórias em quadrinhos</comment>
++ <comment xml:lang="pt-BR">Pacote de histórias em quadrinhos</comment>
+ <comment xml:lang="ro">arhivă benzi desenate</comment>
+ <comment xml:lang="ru">Архив комиксов</comment>
+ <comment xml:lang="sk">Archív knihy komiksov</comment>
+@@ -8257,28 +8475,30 @@
+ <comment xml:lang="tr">çizgi roman arşivi</comment>
+ <comment xml:lang="uk">архів коміксів</comment>
+ <comment xml:lang="vi">Kho nén sách tranh chuyện vui</comment>
+- <comment xml:lang="zh_CN">漫画书归档文件</comment>
+- <comment xml:lang="zh_TW">漫畫書封存檔</comment>
++ <comment xml:lang="zh-CN">漫画书归档文件</comment>
++ <comment xml:lang="zh-TW">漫畫書封存檔</comment>
+ <sub-class-of type="application/x-7z-compressed"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.cb7"/>
+ </mime-type>
+ <mime-type type="application/x-cbt">
+ <comment>comic book archive</comment>
++ <comment xml:lang="af">strokiesprent-argief</comment>
+ <comment xml:lang="ar">أرشيف comic book</comment>
+- <comment xml:lang="be@latin">archiŭ komiksaŭ</comment>
++ <comment xml:lang="be-Latn">archiŭ komiksaŭ</comment>
+ <comment xml:lang="bg">Архив — комикси</comment>
+ <comment xml:lang="ca">arxiu comic book</comment>
+ <comment xml:lang="cs">archiv knihy komiksů</comment>
+ <comment xml:lang="da">comic book-arkiv</comment>
+ <comment xml:lang="de">Comic-Book-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο κόμικ</comment>
+- <comment xml:lang="en_GB">comic book archive</comment>
++ <comment xml:lang="en-GB">comic book archive</comment>
+ <comment xml:lang="es">archivador de libro de cómic</comment>
+ <comment xml:lang="eu">komiki artxiboa</comment>
+ <comment xml:lang="fi">sarjakuva-arkisto</comment>
+ <comment xml:lang="fo">teknisøgubóka skjalasavn</comment>
+ <comment xml:lang="fr">archive Comic Book</comment>
++ <comment xml:lang="fur">archivi di fumets</comment>
+ <comment xml:lang="ga">cartlann chartúin</comment>
+ <comment xml:lang="gl">ficheiro de libro de banda deseñada</comment>
+ <comment xml:lang="he">ארכיון ספר קומי</comment>
+@@ -8298,7 +8518,7 @@
+ <comment xml:lang="oc">archiu Comic Book</comment>
+ <comment xml:lang="pl">Archiwum komiksu</comment>
+ <comment xml:lang="pt">arquivo de banda desenhada</comment>
+- <comment xml:lang="pt_BR">Pacote de histórias em quadrinhos</comment>
++ <comment xml:lang="pt-BR">Pacote de histórias em quadrinhos</comment>
+ <comment xml:lang="ro">arhivă benzi desenate</comment>
+ <comment xml:lang="ru">Архив комиксов</comment>
+ <comment xml:lang="sk">Archív knihy komiksov</comment>
+@@ -8309,28 +8529,30 @@
+ <comment xml:lang="tr">çizgi roman arşivi</comment>
+ <comment xml:lang="uk">архів коміксів</comment>
+ <comment xml:lang="vi">Kho nén sách tranh chuyện vui</comment>
+- <comment xml:lang="zh_CN">漫画书归档文件</comment>
+- <comment xml:lang="zh_TW">漫畫書封存檔</comment>
++ <comment xml:lang="zh-CN">漫画书归档文件</comment>
++ <comment xml:lang="zh-TW">漫畫書封存檔</comment>
+ <sub-class-of type="application/x-tar"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.cbt"/>
+ </mime-type>
+ <mime-type type="application/vnd.comicbook+zip">
+ <comment>comic book archive</comment>
++ <comment xml:lang="af">strokiesprent-argief</comment>
+ <comment xml:lang="ar">أرشيف comic book</comment>
+- <comment xml:lang="be@latin">archiŭ komiksaŭ</comment>
++ <comment xml:lang="be-Latn">archiŭ komiksaŭ</comment>
+ <comment xml:lang="bg">Архив — комикси</comment>
+ <comment xml:lang="ca">arxiu comic book</comment>
+ <comment xml:lang="cs">archiv knihy komiksů</comment>
+ <comment xml:lang="da">comic book-arkiv</comment>
+ <comment xml:lang="de">Comic-Book-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο κόμικ</comment>
+- <comment xml:lang="en_GB">comic book archive</comment>
++ <comment xml:lang="en-GB">comic book archive</comment>
+ <comment xml:lang="es">archivador de libro de cómic</comment>
+ <comment xml:lang="eu">komiki artxiboa</comment>
+ <comment xml:lang="fi">sarjakuva-arkisto</comment>
+ <comment xml:lang="fo">teknisøgubóka skjalasavn</comment>
+ <comment xml:lang="fr">archive Comic Book</comment>
++ <comment xml:lang="fur">archivi di fumets</comment>
+ <comment xml:lang="ga">cartlann chartúin</comment>
+ <comment xml:lang="gl">ficheiro de libro de banda deseñada</comment>
+ <comment xml:lang="he">ארכיון ספר קומי</comment>
+@@ -8350,7 +8572,7 @@
+ <comment xml:lang="oc">archiu Comic Book</comment>
+ <comment xml:lang="pl">Archiwum komiksu</comment>
+ <comment xml:lang="pt">arquivo de banda desenhada</comment>
+- <comment xml:lang="pt_BR">Pacote de histórias em quadrinhos</comment>
++ <comment xml:lang="pt-BR">Pacote de histórias em quadrinhos</comment>
+ <comment xml:lang="ro">arhivă benzi desenate</comment>
+ <comment xml:lang="ru">Архив комиксов</comment>
+ <comment xml:lang="sk">Archív knihy komiksov</comment>
+@@ -8361,8 +8583,8 @@
+ <comment xml:lang="tr">çizgi roman arşivi</comment>
+ <comment xml:lang="uk">архів коміксів</comment>
+ <comment xml:lang="vi">Kho nén sách tranh chuyện vui</comment>
+- <comment xml:lang="zh_CN">漫画书归档文件</comment>
+- <comment xml:lang="zh_TW">漫畫書封存檔</comment>
++ <comment xml:lang="zh-CN">漫画书归档文件</comment>
++ <comment xml:lang="zh-TW">漫畫書封存檔</comment>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.cbz"/>
+@@ -8370,6 +8592,7 @@
+ </mime-type>
+ <mime-type type="application/x-lrzip">
+ <comment>Lrzip archive</comment>
++ <comment xml:lang="af">Lrzip-argief</comment>
+ <comment xml:lang="ar">أرشيف Lrzip</comment>
+ <comment xml:lang="bg">Архив — lrzip</comment>
+ <comment xml:lang="ca">arxiu lrzip</comment>
+@@ -8377,13 +8600,14 @@
+ <comment xml:lang="da">Lrzip-arkiv</comment>
+ <comment xml:lang="de">Lrzip-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο Lrzip</comment>
+- <comment xml:lang="en_GB">Lrzip archive</comment>
++ <comment xml:lang="en-GB">Lrzip archive</comment>
+ <comment xml:lang="eo">Lrzip-arkivo</comment>
+ <comment xml:lang="es">archivador Lrzip</comment>
+ <comment xml:lang="eu">Lrzip artxiboa</comment>
+ <comment xml:lang="fi">Lrzip-arkisto</comment>
+ <comment xml:lang="fo">Lrzip skjalasavn</comment>
+ <comment xml:lang="fr">archive lrzip</comment>
++ <comment xml:lang="fur">archivi Lrzip</comment>
+ <comment xml:lang="ga">cartlann Lrzip</comment>
+ <comment xml:lang="gl">arquivo Lrzip</comment>
+ <comment xml:lang="he">ארכיון Lrzip</comment>
+@@ -8401,7 +8625,7 @@
+ <comment xml:lang="oc">archiu lrzip</comment>
+ <comment xml:lang="pl">Archiwum lrzip</comment>
+ <comment xml:lang="pt">arquivo Lrzip</comment>
+- <comment xml:lang="pt_BR">Pacote Lrzip</comment>
++ <comment xml:lang="pt-BR">Pacote Lrzip</comment>
+ <comment xml:lang="ro">Arhivă Lrzip</comment>
+ <comment xml:lang="ru">Архив LRZIP</comment>
+ <comment xml:lang="sk">Archív Lrzip</comment>
+@@ -8410,16 +8634,17 @@
+ <comment xml:lang="sv">Lrzip-arkiv</comment>
+ <comment xml:lang="tr">Lrzip arşivi</comment>
+ <comment xml:lang="uk">архів lrzip</comment>
+- <comment xml:lang="zh_CN">Lrzip 归档文件</comment>
+- <comment xml:lang="zh_TW">Lrzip 封存檔</comment>
++ <comment xml:lang="zh-CN">Lrzip 归档文件</comment>
++ <comment xml:lang="zh-TW">Lrzip 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="60">
+- <match value="LRZI" type="string" offset="0"/>
++ <match type="string" value="LRZI" offset="0"/>
+ </magic>
+ <glob pattern="*.lrz"/>
+ </mime-type>
+ <mime-type type="application/x-lrzip-compressed-tar">
+ <comment>Tar archive (lrzip-compressed)</comment>
++ <comment xml:lang="af">Tar-argief (lrzip-saamgepers)</comment>
+ <comment xml:lang="ar">أرشيف Tar (مضغوط-lrzip)</comment>
+ <comment xml:lang="bg">Архив — tar, компресиран с lrzip</comment>
+ <comment xml:lang="ca">arxiu tar (amb compressió lrzip)</comment>
+@@ -8427,17 +8652,18 @@
+ <comment xml:lang="da">Tar-arkiv (lrzip-komprimeret)</comment>
+ <comment xml:lang="de">Tar-Archiv (lrzip-komprimiert)</comment>
+ <comment xml:lang="el">Αρχείο Tar (συμπιεσμένο με lrzip)</comment>
+- <comment xml:lang="en_GB">Tar archive (lrzip-compressed)</comment>
++ <comment xml:lang="en-GB">Tar archive (lrzip-compressed)</comment>
+ <comment xml:lang="es">archivador Tar (comprimido con lrzip)</comment>
+ <comment xml:lang="eu">Tar artxiboa (lrzip-ekin konprimitua)</comment>
+ <comment xml:lang="fi">Tar-arkisto (lrzip-pakattu)</comment>
+ <comment xml:lang="fo">Tar skjalasavn (lrzip-stappað)</comment>
+ <comment xml:lang="fr">archive tar (compressée lrzip)</comment>
++ <comment xml:lang="fur">archivi Tar (comprimût cun lrzip)</comment>
+ <comment xml:lang="ga">cartlann Tar (comhbhrúite le lrzip)</comment>
+ <comment xml:lang="gl">arquivo Tar (comprimido con lrzip)</comment>
+ <comment xml:lang="he">ארכיון Tar (מכווץ ע״י lrzip)</comment>
+ <comment xml:lang="hr">Tar arhiva (lrzip sažeta)</comment>
+- <comment xml:lang="hu">Tar archívum (lrzip-pel tömörítve)</comment>
++ <comment xml:lang="hu">Tar archívum (lrzip tömörítésű)</comment>
+ <comment xml:lang="ia">Archivo Tar (comprimite con lrzip)</comment>
+ <comment xml:lang="id">Arsip Tar (terkompresi lrzip)</comment>
+ <comment xml:lang="it">Archivio tar (compresso con lrzip)</comment>
+@@ -8450,17 +8676,17 @@
+ <comment xml:lang="oc">archiu tar (compressat lrzip)</comment>
+ <comment xml:lang="pl">Archiwum tar (kompresja lrzip)</comment>
+ <comment xml:lang="pt">arquivo Tar (compressão Lrzip)</comment>
+- <comment xml:lang="pt_BR">Pacote Tar (compactado com lrzip)</comment>
++ <comment xml:lang="pt-BR">Pacote Tar (compactado com lrzip)</comment>
+ <comment xml:lang="ro">Arhivă Tar (comprimată lrzip)</comment>
+ <comment xml:lang="ru">Архив TAR (сжатый lrzip)</comment>
+- <comment xml:lang="sk">Archív tar (komprimovaný pomocou lrzip)</comment>
++ <comment xml:lang="sk">Archív Tar (komprimovaný pomocou lrzip)</comment>
+ <comment xml:lang="sl">Datoteka arhiva Tar (stisnjen z lrzip)</comment>
+ <comment xml:lang="sr">Тар архива (запакована лрзипом)</comment>
+ <comment xml:lang="sv">Tar-arkiv (lrzip-komprimerat)</comment>
+ <comment xml:lang="tr">Tar arşivi (lrzip ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">архів tar (стиснений lrzip)</comment>
+- <comment xml:lang="zh_CN">Tar 归档文件(lrzip 压缩)</comment>
+- <comment xml:lang="zh_TW">Tar 封存檔 (lrzip 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">Tar 归档文件(lrzip 压缩)</comment>
++ <comment xml:lang="zh-TW">Tar 封存檔 (lrzip 格式壓縮)</comment>
+ <generic-icon name="package-x-generic"/>
+ <sub-class-of type="application/x-lrzip"/>
+ <glob pattern="*.tar.lrz"/>
+@@ -8468,6 +8694,7 @@
+ </mime-type>
+ <mime-type type="application/x-apple-diskimage">
+ <comment>Apple disk image</comment>
++ <comment xml:lang="af">Apple-skyfbeeldlêer</comment>
+ <comment xml:lang="ast">Imaxe de discu d'Apple</comment>
+ <comment xml:lang="bg">Диск — Apple</comment>
+ <comment xml:lang="ca">imatge de disc d'Apple</comment>
+@@ -8475,11 +8702,12 @@
+ <comment xml:lang="da">Apple-diskaftryk</comment>
+ <comment xml:lang="de">Apple-Datenträgerabbild</comment>
+ <comment xml:lang="el">Εικόνα δίσκου Apple</comment>
+- <comment xml:lang="en_GB">Apple disk image</comment>
++ <comment xml:lang="en-GB">Apple disk image</comment>
+ <comment xml:lang="es">imagen de disco de Apple</comment>
+ <comment xml:lang="eu">Apple disko irudia</comment>
+ <comment xml:lang="fi">Apple-levytiedosto</comment>
+ <comment xml:lang="fr">image disque Apple</comment>
++ <comment xml:lang="fur">imagjin disc Apple</comment>
+ <comment xml:lang="ga">íomhá diosca Apple</comment>
+ <comment xml:lang="gl">imaxe de disco de Appl</comment>
+ <comment xml:lang="he">תמונת כונן Apple</comment>
+@@ -8497,7 +8725,7 @@
+ <comment xml:lang="oc">imatge disc Apple</comment>
+ <comment xml:lang="pl">Obraz dysku Apple</comment>
+ <comment xml:lang="pt">imagem de disco Apple</comment>
+- <comment xml:lang="pt_BR">Imagem de disco Apple</comment>
++ <comment xml:lang="pt-BR">Imagem de disco Apple</comment>
+ <comment xml:lang="ru">Образ диска Apple Mac OS X</comment>
+ <comment xml:lang="sk">Obraz disku Apple</comment>
+ <comment xml:lang="sl">Odtis diska Apple</comment>
+@@ -8505,23 +8733,26 @@
+ <comment xml:lang="sv">Apple-diskavbild</comment>
+ <comment xml:lang="tr">Apple disk görüntüsü</comment>
+ <comment xml:lang="uk">образ диска Apple</comment>
+- <comment xml:lang="zh_CN">Apple 磁盘映像</comment>
+- <comment xml:lang="zh_TW">Apple 磁碟映像檔</comment>
++ <comment xml:lang="zh-CN">Apple 磁盘映像</comment>
++ <comment xml:lang="zh-TW">Apple 磁碟映像檔</comment>
+ <glob pattern="*.dmg"/>
+ </mime-type>
+ <mime-type type="application/x-raw-disk-image">
+ <comment>Raw disk image</comment>
++ <comment xml:lang="af">Rou skyfbeeldlêer</comment>
+ <comment xml:lang="ast">Imaxe de discu en bruto</comment>
++ <comment xml:lang="bg">Диск — raw</comment>
+ <comment xml:lang="ca">imatge de disc RAW</comment>
+ <comment xml:lang="cs">surový obraz disku</comment>
+- <comment xml:lang="da">Rå diskaftryk</comment>
++ <comment xml:lang="da">Raw-diskaftryk</comment>
+ <comment xml:lang="de">Rohes Datenträgerabbild</comment>
+ <comment xml:lang="el">Ανεπεξέργαστη εικόνα δίσκου</comment>
+- <comment xml:lang="en_GB">Raw disk image</comment>
++ <comment xml:lang="en-GB">Raw disk image</comment>
+ <comment xml:lang="es">imagen de disco en bruto</comment>
+ <comment xml:lang="eu">Disko gordinaren irudia</comment>
+ <comment xml:lang="fi">Raaka levytiedosto</comment>
+ <comment xml:lang="fr">image disque Raw</comment>
++ <comment xml:lang="fur">imagjin disc grese</comment>
+ <comment xml:lang="ga">Amhíomha diosca</comment>
+ <comment xml:lang="gl">Imaxe de disco en bruto</comment>
+ <comment xml:lang="he">דמות גולמית של כונן</comment>
+@@ -8535,21 +8766,50 @@
+ <comment xml:lang="oc">imatge disc Raw</comment>
+ <comment xml:lang="pl">Surowy obraz dysku</comment>
+ <comment xml:lang="pt">imagem de disco Raw</comment>
+- <comment xml:lang="pt_BR">Imagem bruta de disco</comment>
++ <comment xml:lang="pt-BR">Imagem bruta de disco</comment>
+ <comment xml:lang="ru">Необработанный образ диска</comment>
+ <comment xml:lang="sk">Obraz disku</comment>
+ <comment xml:lang="sl">Surovi odtis diska</comment>
+ <comment xml:lang="sr">сиров одраз диска</comment>
+ <comment xml:lang="sv">Rå diskavbild</comment>
+- <comment xml:lang="tr">İşlem görmemiş disk imajı</comment>
++ <comment xml:lang="tr">Ham disk görüntüsü</comment>
+ <comment xml:lang="uk">простий образ диска</comment>
+- <comment xml:lang="zh_CN">原始磁盘映像</comment>
+- <comment xml:lang="zh_TW">原生磁碟映像檔</comment>
++ <comment xml:lang="zh-CN">原始磁盘映像</comment>
++ <comment xml:lang="zh-TW">原始磁碟映像檔</comment>
+ <glob pattern="*.raw-disk-image"/>
+ <glob pattern="*.img"/>
+ </mime-type>
+ <mime-type type="application/x-raw-floppy-disk-image">
+ <comment>Floppy disk image</comment>
++ <comment xml:lang="af">Disket-skyfbeeldlêer</comment>
++ <comment xml:lang="bg">Диск — флопи</comment>
++ <comment xml:lang="ca">imatge de disquet</comment>
++ <comment xml:lang="cs">obraz diskety</comment>
++ <comment xml:lang="da">Floppy-diskaftryk</comment>
++ <comment xml:lang="de">Diskettenabbild</comment>
++ <comment xml:lang="en-GB">Floppy disk image</comment>
++ <comment xml:lang="es">imagen de disquete</comment>
++ <comment xml:lang="eu">Diskete disko irudia</comment>
++ <comment xml:lang="fi">Disketin levykuva</comment>
++ <comment xml:lang="fr">image disquette</comment>
++ <comment xml:lang="fur">imagjin disc floppy</comment>
++ <comment xml:lang="ga">íomhá diosca fhlapaigh</comment>
++ <comment xml:lang="hr">Slika diskete</comment>
++ <comment xml:lang="hu">Flopi lemezkép</comment>
++ <comment xml:lang="id">Image disk floppy</comment>
++ <comment xml:lang="it">Immagine disco floppy</comment>
++ <comment xml:lang="kk">Иілгіш диск бейнесі</comment>
++ <comment xml:lang="ko">플로피 디스크 이미지</comment>
++ <comment xml:lang="pl">Obraz dyskietki</comment>
++ <comment xml:lang="pt">imagem da disquete</comment>
++ <comment xml:lang="pt-BR">Imagem de disco flexível</comment>
++ <comment xml:lang="ru">Образ гибкого диска</comment>
++ <comment xml:lang="sk">Obraz pružného disku</comment>
++ <comment xml:lang="sv">Diskettavbild</comment>
++ <comment xml:lang="tr">Disket görüntüsü</comment>
++ <comment xml:lang="uk">образ дискети</comment>
++ <comment xml:lang="zh-CN">软盘映像</comment>
++ <comment xml:lang="zh-TW">Floppy 軟碟映像檔</comment>
+ <sub-class-of type="application/x-raw-disk-image"/>
+ <alias type="application/x-fd-file"/>
+ <glob pattern="*.fd"/>
+@@ -8557,22 +8817,25 @@
+ </mime-type>
+ <mime-type type="application/x-raw-disk-image-xz-compressed">
+ <comment>Raw disk image (XZ-compressed)</comment>
++ <comment xml:lang="af">Rou skyfbeeldlêer (XZ-saamgepers)</comment>
+ <comment xml:lang="ast">Imaxe de discu en bruto (comprimida en XZ)</comment>
++ <comment xml:lang="bg">Диск — raw, компресиран с xz</comment>
+ <comment xml:lang="ca">imatge de disc RAW (amb compressió XZ)</comment>
+ <comment xml:lang="cs">surový obraz disku (komprimovaný pomocí XZ)</comment>
+- <comment xml:lang="da">Rå diskaftryk (XZ-komprimeret)</comment>
++ <comment xml:lang="da">Raw-diskaftryk (XZ-komprimeret)</comment>
+ <comment xml:lang="de">Rohes Datenträgerabbild (XZ-komprimiert)</comment>
+ <comment xml:lang="el">Ανεπεξέργαστη εικόνα δίσκου (συμπιεσμένη XZ)</comment>
+- <comment xml:lang="en_GB">Raw disk image (XZ-compressed)</comment>
++ <comment xml:lang="en-GB">Raw disk image (XZ-compressed)</comment>
+ <comment xml:lang="es">imagen de disco en bruto (comprimida con XZ)</comment>
+ <comment xml:lang="eu">Disko gordinaren irudia (XZ-rekin konprimitua)</comment>
+ <comment xml:lang="fi">Raaka levytiedosto (XZ-pakattu)</comment>
+ <comment xml:lang="fr">image disque Raw (compression XZ)</comment>
++ <comment xml:lang="fur">imagjin disc grese (comprimude cun XZ)</comment>
+ <comment xml:lang="ga">Amhíomhá (comhbhrúite le XZ)</comment>
+ <comment xml:lang="gl">Imaxe de disco en bruto (comprimida en XZ)</comment>
+ <comment xml:lang="he">דמות גולמית של כונן (בדחיסת XZ)</comment>
+ <comment xml:lang="hr">Osnovna slika diska (XZ sažeta)</comment>
+- <comment xml:lang="hu">Nyers lemezkép (XZ-vel tömörítve)</comment>
++ <comment xml:lang="hu">Nyers lemezkép (XZ tömörítésű)</comment>
+ <comment xml:lang="ia">Imagine de disco crude (comprimite con XZ)</comment>
+ <comment xml:lang="id">Image disk mentah (terkompresi XZ)</comment>
+ <comment xml:lang="it">Immagine disco raw (compressa XZ)</comment>
+@@ -8581,38 +8844,40 @@
+ <comment xml:lang="oc">imatge disc Raw (compression XZ)</comment>
+ <comment xml:lang="pl">Surowy obraz dysku (kompresja XZ)</comment>
+ <comment xml:lang="pt">imagem de disco Raw (compressão XZ)</comment>
+- <comment xml:lang="pt_BR">Imagem bruta de disco (compactada com XZ)</comment>
++ <comment xml:lang="pt-BR">Imagem bruta de disco (compactada com XZ)</comment>
+ <comment xml:lang="ru">Необработанный образ диска (сжатый xz)</comment>
+ <comment xml:lang="sk">Obraz disku (komprimovaný pomocou XZ)</comment>
+ <comment xml:lang="sl">Surovi odtis diska (stisnjeno z XZ)</comment>
+ <comment xml:lang="sr">сиров одраз диска (запакована ИксЗ-ом)</comment>
+ <comment xml:lang="sv">Rå diskavbild (XZ-komprimerad)</comment>
+- <comment xml:lang="tr">İşlem görmemiş disk imajı (XZ ile sıkıştırılmış)</comment>
++ <comment xml:lang="tr">Ham disk görüntüsü (XZ ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">простий образ диска (стиснений XZ)</comment>
+- <comment xml:lang="zh_CN">原始磁盘映像(XZ 压缩)</comment>
+- <comment xml:lang="zh_TW">原生磁碟映像 (XZ 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">原始磁盘映像(XZ 压缩)</comment>
++ <comment xml:lang="zh-TW">原始磁碟映像檔 (XZ 壓縮)</comment>
+ <sub-class-of type="application/x-xz"/>
+ <glob pattern="*.raw-disk-image.xz"/>
+ <glob pattern="*.img.xz"/>
+ </mime-type>
+ <mime-type type="application/x-cd-image">
+ <comment>raw CD image</comment>
++ <comment xml:lang="af">rou CD-beeldlêer</comment>
+ <comment xml:lang="ar">صورة CD خامة</comment>
+ <comment xml:lang="ast">imaxe de CD en bruto</comment>
+- <comment xml:lang="be@latin">suvoraja vyjava CD</comment>
+- <comment xml:lang="bg">Изображение — raw CD</comment>
++ <comment xml:lang="be-Latn">suvoraja vyjava CD</comment>
++ <comment xml:lang="bg">Диск — raw CD</comment>
+ <comment xml:lang="ca">imatge de CD en cru</comment>
+ <comment xml:lang="cs">surový obraz CD</comment>
+- <comment xml:lang="da">rå cd-aftryk</comment>
++ <comment xml:lang="da">raw cd-aftryk</comment>
+ <comment xml:lang="de">CD-Roh-Abbild</comment>
+ <comment xml:lang="el">Εικόνα περιεχομένου ψηφιακού δίσκου</comment>
+- <comment xml:lang="en_GB">raw CD image</comment>
++ <comment xml:lang="en-GB">raw CD image</comment>
+ <comment xml:lang="eo">kruda lumdiskbildo</comment>
+ <comment xml:lang="es">imagen de CD en bruto</comment>
+ <comment xml:lang="eu">CD gordinaren irudia </comment>
+ <comment xml:lang="fi">raaka CD-vedos</comment>
+ <comment xml:lang="fo">rá CD mynd</comment>
+ <comment xml:lang="fr">image CD brute</comment>
++ <comment xml:lang="fur">imagjin CD grese</comment>
+ <comment xml:lang="ga">amhíomhá dhlúthdhiosca</comment>
+ <comment xml:lang="gl">imaxe de CD en bruto</comment>
+ <comment xml:lang="he">תמונת דיסק גולמית</comment>
+@@ -8633,7 +8898,7 @@
+ <comment xml:lang="oc">imatge CD brut</comment>
+ <comment xml:lang="pl">Surowy obraz CD</comment>
+ <comment xml:lang="pt">imagem em bruto de CD</comment>
+- <comment xml:lang="pt_BR">Imagem bruta de CD</comment>
++ <comment xml:lang="pt-BR">Imagem bruta de CD</comment>
+ <comment xml:lang="ro">imagine de CD brută</comment>
+ <comment xml:lang="ru">Необработанный образ компакт-диска</comment>
+ <comment xml:lang="sk">Surový obraz CD</comment>
+@@ -8641,48 +8906,64 @@
+ <comment xml:lang="sq">Imazh raw CD</comment>
+ <comment xml:lang="sr">сиров одраз ЦД-а</comment>
+ <comment xml:lang="sv">rå cd-avbild</comment>
+- <comment xml:lang="tr">Ham CD görüntüsü</comment>
++ <comment xml:lang="tr">ham CD görüntüsü</comment>
+ <comment xml:lang="uk">образ raw CD</comment>
+ <comment xml:lang="vi">ảnh đĩa CD thô</comment>
+- <comment xml:lang="zh_CN">原始 CD 映像</comment>
+- <comment xml:lang="zh_TW">原生 CD 映像檔</comment>
++ <comment xml:lang="zh-CN">原始 CD 映像</comment>
++ <comment xml:lang="zh-TW">原生 CD 映像檔</comment>
+ <sub-class-of type="application/x-raw-disk-image"/>
+ <alias type="application/x-iso9660-image"/>
+-
+- <glob weight="80" pattern="*.iso"/>
++ <!-- No magic, see https://bugs.freedesktop.org/show_bug.cgi?id=10049 -->
++ <glob pattern="*.iso" weight="80"/>
+ <glob pattern="*.iso9660"/>
+ </mime-type>
++ <mime-type type="application/x-compressed-iso">
++ <comment>Compressed CD image</comment>
++ <comment xml:lang="ca">imatge de CD amb compressió</comment>
++ <comment xml:lang="fi">Pakattu CD-levykuva</comment>
++ <comment xml:lang="it">Immagine CD compressa</comment>
++ <comment xml:lang="pl">Skompresowany obraz płyty CD</comment>
++ <comment xml:lang="uk">стиснений образ CD</comment>
++ <magic priority="50">
++ <match value="CISO" type="string" offset="0"/>
++ </magic>
++ <glob pattern="*.cso"/>
++ </mime-type>
+ <mime-type type="application/x-iso9660-appimage">
+ <comment>AppImage application bundle</comment>
++ <comment xml:lang="af">AppImage-toepassingsbundel</comment>
++ <comment xml:lang="bg">Програмен пакет — AppImage</comment>
+ <comment xml:lang="ca">paquet d'aplicació AppImage</comment>
+ <comment xml:lang="cs">balíček AppImage s aplikací</comment>
+- <comment xml:lang="da">Applmage-programsamling</comment>
++ <comment xml:lang="da">AppImage-programsamling</comment>
+ <comment xml:lang="de">AppImage-Anwendungspaket</comment>
+- <comment xml:lang="en_GB">AppImage application bundle</comment>
++ <comment xml:lang="en-GB">AppImage application bundle</comment>
+ <comment xml:lang="es">paquete de aplicación AppImage</comment>
+ <comment xml:lang="eu">AppImage aplikazio bilduma</comment>
+ <comment xml:lang="fi">AppImage-sovelluspaketti</comment>
+ <comment xml:lang="fr">lot applicatif AppImage</comment>
++ <comment xml:lang="fur">côl di aplicazions AppImage</comment>
+ <comment xml:lang="ga">burla feidhmchláir AppImage</comment>
+ <comment xml:lang="he">חבילת יישומי AppImage</comment>
+ <comment xml:lang="hr">AppImage paket aplikacije</comment>
+ <comment xml:lang="hu">AppImage alkalmazáscsomag</comment>
+- <comment xml:lang="id">bundel aplikasi AppImage</comment>
++ <comment xml:lang="id">Bundel aplikasi AppImage</comment>
+ <comment xml:lang="it">Bundle applicazione AppImage</comment>
+ <comment xml:lang="kk">AppImage қолданбалар дестесі</comment>
+ <comment xml:lang="ko">AppImage 프로그램 번들</comment>
+ <comment xml:lang="pl">Pakiet programu AppImage</comment>
+- <comment xml:lang="pt_BR">Pacote de aplicativo AppImage</comment>
++ <comment xml:lang="pt">pacote de aplicação AppImage</comment>
++ <comment xml:lang="pt-BR">Pacote de aplicativo AppImage</comment>
+ <comment xml:lang="ru">Пакет приложения AppImage</comment>
+ <comment xml:lang="sk">Balík aplikácií AppImage</comment>
+ <comment xml:lang="sr">скуп програма Ап-слике</comment>
+ <comment xml:lang="sv">AppImage-programbunt</comment>
+ <comment xml:lang="tr">AppImage uygulama paketi</comment>
+ <comment xml:lang="uk">пакунок із програмами AppImage</comment>
+- <comment xml:lang="zh_CN">AppImage 应用组合包</comment>
+- <comment xml:lang="zh_TW">AppImage 應用程式套組</comment>
++ <comment xml:lang="zh-CN">AppImage 应用组合包</comment>
++ <comment xml:lang="zh-TW">AppImage 應用程式套組</comment>
+ <sub-class-of type="application/x-executable"/>
+- <sub-class-of type="application/x-iso9660-image"/>
++ <sub-class-of type="application/x-cd-image"/>
+ <generic-icon name="application-x-executable"/>
+ <magic priority="50">
+ <match value="ELF" type="string" offset="1">
+@@ -8697,20 +8978,22 @@
+ </mime-type>
+ <mime-type type="application/x-cdrdao-toc">
+ <comment>CD Table Of Contents</comment>
++ <comment xml:lang="af">CD-inhoudsopgawe</comment>
+ <comment xml:lang="ar">جدول محتويات الـ CD</comment>
+- <comment xml:lang="be@latin">Źmieściva CD</comment>
++ <comment xml:lang="be-Latn">Źmieściva CD</comment>
+ <comment xml:lang="bg">Съдържание на CD</comment>
+ <comment xml:lang="ca">taula de continguts de CD</comment>
+ <comment xml:lang="cs">obsah CD</comment>
+- <comment xml:lang="da">Cd-indholdsfotegnelse</comment>
++ <comment xml:lang="da">Cd-indholdsfortegnelse</comment>
+ <comment xml:lang="de">CD-Inhaltsverzeichnis</comment>
+ <comment xml:lang="el">Πίνακας περιεχομένων CD</comment>
+- <comment xml:lang="en_GB">CD Table Of Contents</comment>
++ <comment xml:lang="en-GB">CD Table Of Contents</comment>
+ <comment xml:lang="es">índice de contenido de CD</comment>
+ <comment xml:lang="eu">CDaren edukien aurkibidea</comment>
+ <comment xml:lang="fi">CD-sisällysluettelo</comment>
+ <comment xml:lang="fo">CD innihaldsyvurlit</comment>
+ <comment xml:lang="fr">table des matières de CD</comment>
++ <comment xml:lang="fur">tabele dai contignûts di CD</comment>
+ <comment xml:lang="ga">clár ábhar dlúthdhiosca</comment>
+ <comment xml:lang="gl">táboa de contidos de CD</comment>
+ <comment xml:lang="he">תוכן עניינים של דיסק</comment>
+@@ -8730,7 +9013,7 @@
+ <comment xml:lang="oc">ensenhador de CD</comment>
+ <comment xml:lang="pl">Plik zawartości płyty CD</comment>
+ <comment xml:lang="pt">Tabela de conteúdos de CD</comment>
+- <comment xml:lang="pt_BR">Sumário de CD</comment>
++ <comment xml:lang="pt-BR">Sumário de CD</comment>
+ <comment xml:lang="ro">Tabel conținut CD</comment>
+ <comment xml:lang="ru">Таблица содержания CD</comment>
+ <comment xml:lang="sk">Obsah CD</comment>
+@@ -8741,37 +9024,64 @@
+ <comment xml:lang="tr">CD İçindekiler Tablosu</comment>
+ <comment xml:lang="uk">зміст CD</comment>
+ <comment xml:lang="vi">Mục Lục của đĩa CD</comment>
+- <comment xml:lang="zh_CN">CD 索引</comment>
+- <comment xml:lang="zh_TW">CD 內容目錄</comment>
++ <comment xml:lang="zh-CN">CD 索引</comment>
++ <comment xml:lang="zh-TW">CD 內容目錄</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-generic"/>
+ <magic priority="50">
+- <match value="CD_ROM\n" type="string" offset="0"/>
+- <match value="CD_DA\n" type="string" offset="0"/>
+- <match value="CD_ROM_XA\n" type="string" offset="0"/>
+- <match value="CD_TEXT " type="string" offset="0"/>
+- <match value="CATALOG &quot;" type="string" offset="0">
+- <match value="&quot;" type="string" offset="22"/>
++ <match type="string" value="CD_ROM\n" offset="0"/>
++ <match type="string" value="CD_DA\n" offset="0"/>
++ <match type="string" value="CD_ROM_XA\n" offset="0"/>
++ <match type="string" value="CD_TEXT " offset="0"/>
++ <match type="string" value="CATALOG &quot;" offset="0">
++ <match type="string" value="&quot;" offset="22"/>
+ </match>
+ </magic>
+ <glob pattern="*.toc"/>
+ </mime-type>
++ <mime-type type="application/x-gd-rom-cue">
++ <comment>GD-ROM image cuesheet</comment>
++ <comment xml:lang="ca">«cuesheet» d'imatge de GD-ROM</comment>
++ <comment xml:lang="fi">GD-ROM levykuvan taulukko</comment>
++ <comment xml:lang="it">Cuesheet immagine GD-ROM</comment>
++ <comment xml:lang="pl">Obraz cuesheet płyty GD-ROM</comment>
++ <comment xml:lang="uk">таблиця CUE образу GD-ROM</comment>
++ <!-- It is a non-standard cuesheet used only for Dreamcast GD-ROM images, it
++ is typically surrounded by the .bin and .raw files it lists, each one
++ matching a disc track.
++ The first file should have the application/x-dreamcast-rom type. -->
++ <sub-class-of type="text/plain"/>
++ <generic-icon name="text-x-generic"/>
++ <glob pattern="*.gdi"/>
++ </mime-type>
++ <mime-type type="application/x-discjuggler-cd-image">
++ <comment>Padus DiscJuggler CD image</comment>
++ <comment xml:lang="ca">imatge de CD de Padus DiscJuggler</comment>
++ <comment xml:lang="fi">Padus DiscJuggler CD-levykuva</comment>
++ <comment xml:lang="it">Immagine CD DiscJuggler Padus</comment>
++ <comment xml:lang="pl">Obraz płyty CD programu Padus DiscJuggler</comment>
++ <comment xml:lang="pt-BR">Imagem de CD do Padus DiscJuggler</comment>
++ <comment xml:lang="uk">образ CD Padus DiscJuggler</comment>
++ <glob pattern="*.cdi"/>
++ </mime-type>
+ <mime-type type="application/vnd.chess-pgn">
+ <comment>PGN chess game notation</comment>
++ <comment xml:lang="af">PGN-skaakspelnotasie</comment>
+ <comment xml:lang="ar">تدوينة لعبة الشطرنج PGN</comment>
+- <comment xml:lang="be@latin">Zaciem ab šachmatnaj partyi PGN</comment>
++ <comment xml:lang="be-Latn">Zaciem ab šachmatnaj partyi PGN</comment>
+ <comment xml:lang="bg">Игра шах — PGN</comment>
+ <comment xml:lang="ca">notació de joc d'escacs PGN</comment>
+ <comment xml:lang="cs">šachová notace PGN</comment>
+ <comment xml:lang="da">PGN-skakspilsnotation</comment>
+ <comment xml:lang="de">PGN-Schachspielnotation</comment>
+ <comment xml:lang="el">Σημειογραφία παιχνιδιού σκακιού PGN</comment>
+- <comment xml:lang="en_GB">PGN chess game notation</comment>
++ <comment xml:lang="en-GB">PGN chess game notation</comment>
+ <comment xml:lang="es">notación para juegos de ajedrez PGN</comment>
+ <comment xml:lang="eu">PGN xake jokoaren notazioa</comment>
+ <comment xml:lang="fi">PGN-šakkipelinotaatio</comment>
+ <comment xml:lang="fo">PGN talv teknskipan</comment>
+ <comment xml:lang="fr">notation de jeu d'échecs PGN</comment>
++ <comment xml:lang="fur">notazion par zûc di scacs PGN</comment>
+ <comment xml:lang="ga">nodaireacht chluiche ficheall PGN</comment>
+ <comment xml:lang="gl">Notación de xogo de xadrez PGN</comment>
+ <comment xml:lang="he">סימון משחק שח PGN</comment>
+@@ -8791,7 +9101,7 @@
+ <comment xml:lang="oc">notacion de jòc d'escacs PGN</comment>
+ <comment xml:lang="pl">Plik PGN notacji gry w szachy</comment>
+ <comment xml:lang="pt">notação de jogo de xadrez PGN</comment>
+- <comment xml:lang="pt_BR">Notação de jogo de xadrez PGN</comment>
++ <comment xml:lang="pt-BR">Notação de jogo de xadrez PGN</comment>
+ <comment xml:lang="ro">Notație joc șah PGN</comment>
+ <comment xml:lang="ru">Шахматная партия PGN</comment>
+ <comment xml:lang="sk">Šachová notácia PGN</comment>
+@@ -8802,36 +9112,38 @@
+ <comment xml:lang="tr">PGN satranç oyun gösterimi</comment>
+ <comment xml:lang="uk">запис гри у шахи PGN</comment>
+ <comment xml:lang="vi">Cách ghi lượt chơi cờ PGN</comment>
+- <comment xml:lang="zh_CN">PGN 象棋游戏注记</comment>
+- <comment xml:lang="zh_TW">PGN 國際象棋棋譜</comment>
++ <comment xml:lang="zh-CN">PGN 象棋游戏注记</comment>
++ <comment xml:lang="zh-TW">PGN 國際象棋棋譜</comment>
+ <acronym>PGN</acronym>
+ <expanded-acronym>Portable Game Notation</expanded-acronym>
+ <generic-icon name="text-x-generic"/>
+ <glob pattern="*.pgn"/>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="[Event " type="string" offset="0"/>
++ <match type="string" value="[Event " offset="0"/>
+ </magic>
+ <alias type="application/x-chess-pgn"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-htmlhelp">
+ <comment>CHM document</comment>
++ <comment xml:lang="af">CHM-dokument</comment>
+ <comment xml:lang="ar">مستند CHM</comment>
+ <comment xml:lang="ast">Documentu CHM</comment>
+- <comment xml:lang="be@latin">Dakument CHM</comment>
++ <comment xml:lang="be-Latn">Dakument CHM</comment>
+ <comment xml:lang="bg">Документ — CHM</comment>
+ <comment xml:lang="ca">document CHM</comment>
+ <comment xml:lang="cs">dokument CHM</comment>
+ <comment xml:lang="da">CHM-dokument</comment>
+ <comment xml:lang="de">CHM-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο CHM</comment>
+- <comment xml:lang="en_GB">CHM document</comment>
++ <comment xml:lang="en-GB">CHM document</comment>
+ <comment xml:lang="eo">CHM-dokumento</comment>
+ <comment xml:lang="es">documento CHM</comment>
+ <comment xml:lang="eu">CHM dokumentua</comment>
+ <comment xml:lang="fi">CHM-asiakirja</comment>
+ <comment xml:lang="fo">CHM skjal</comment>
+ <comment xml:lang="fr">document CHM</comment>
++ <comment xml:lang="fur">document CHM</comment>
+ <comment xml:lang="ga">cáipéis CHM</comment>
+ <comment xml:lang="gl">documento CHM</comment>
+ <comment xml:lang="he">מסמך CHM</comment>
+@@ -8852,7 +9164,7 @@
+ <comment xml:lang="oc">document CHM</comment>
+ <comment xml:lang="pl">Dokument CHM</comment>
+ <comment xml:lang="pt">documento CHM</comment>
+- <comment xml:lang="pt_BR">Documento CHM</comment>
++ <comment xml:lang="pt-BR">Documento CHM</comment>
+ <comment xml:lang="ro">Document CHM</comment>
+ <comment xml:lang="ru">Документ CHM</comment>
+ <comment xml:lang="sk">Dokument CHM</comment>
+@@ -8863,8 +9175,8 @@
+ <comment xml:lang="tr">CHM belgesi</comment>
+ <comment xml:lang="uk">документ CHM</comment>
+ <comment xml:lang="vi">Tài liệu CHM</comment>
+- <comment xml:lang="zh_CN">CHM 文档</comment>
+- <comment xml:lang="zh_TW">CHM 文件</comment>
++ <comment xml:lang="zh-CN">CHM 文档</comment>
++ <comment xml:lang="zh-TW">CHM 文件</comment>
+ <acronym>CHM</acronym>
+ <expanded-acronym>Compiled Help Modules</expanded-acronym>
+ <generic-icon name="x-office-document"/>
+@@ -8873,23 +9185,25 @@
+ </mime-type>
+ <mime-type type="application/x-class-file">
+ <comment>Java byte code</comment>
++ <comment xml:lang="af">Java binêre kode</comment>
+ <comment xml:lang="ar">رمز بايت الـJava</comment>
+ <comment xml:lang="az">Java bayt kodu</comment>
+- <comment xml:lang="be@latin">Bajtavy kod Java</comment>
++ <comment xml:lang="be-Latn">Bajtavy kod Java</comment>
+ <comment xml:lang="bg">Байт код за Java</comment>
+- <comment xml:lang="ca">Bytecode de Java</comment>
++ <comment xml:lang="ca">bytecode de Java</comment>
+ <comment xml:lang="cs">bajtový kód Java</comment>
+ <comment xml:lang="cy">Côd beit Java</comment>
+- <comment xml:lang="da">Javabytekode</comment>
++ <comment xml:lang="da">Java-bytekode</comment>
+ <comment xml:lang="de">Java-Bytecode</comment>
+ <comment xml:lang="el">Συμβολοκώδικας Java</comment>
+- <comment xml:lang="en_GB">Java byte code</comment>
++ <comment xml:lang="en-GB">Java byte code</comment>
+ <comment xml:lang="eo">Java-bajtkodo</comment>
+ <comment xml:lang="es">bytecode de Java</comment>
+ <comment xml:lang="eu">Java byte-kodea</comment>
+ <comment xml:lang="fi">Java-tavukoodi</comment>
+ <comment xml:lang="fo">Java býtkota</comment>
+ <comment xml:lang="fr">code Java binaire</comment>
++ <comment xml:lang="fur">bytecode di Java</comment>
+ <comment xml:lang="ga">beartchód Java</comment>
+ <comment xml:lang="gl">byte code de Java</comment>
+ <comment xml:lang="he">קוד Java byte</comment>
+@@ -8910,7 +9224,7 @@
+ <comment xml:lang="oc">còde Java binari</comment>
+ <comment xml:lang="pl">Kod bajtowy Java</comment>
+ <comment xml:lang="pt">byte-code Java</comment>
+- <comment xml:lang="pt_BR">Código compilado Java</comment>
++ <comment xml:lang="pt-BR">Código compilado Java</comment>
+ <comment xml:lang="ro">Bytecode Java</comment>
+ <comment xml:lang="ru">Байт-код Java</comment>
+ <comment xml:lang="sk">Bajtový kód Java</comment>
+@@ -8921,31 +9235,33 @@
+ <comment xml:lang="tr">Java derlenmiş kodu</comment>
+ <comment xml:lang="uk">Байт-код Java</comment>
+ <comment xml:lang="vi">Mã byte Java</comment>
+- <comment xml:lang="zh_CN">Java 字节码</comment>
+- <comment xml:lang="zh_TW">Java 位元組碼</comment>
++ <comment xml:lang="zh-CN">Java 字节码</comment>
++ <comment xml:lang="zh-TW">Java 位元組碼</comment>
+ </mime-type>
+ <mime-type type="application/x-compress">
+ <comment>UNIX-compressed file</comment>
++ <comment xml:lang="af">UNIX-saamgepersde lêer</comment>
+ <comment xml:lang="ar">ملف يونكس-مضغوط</comment>
+- <comment xml:lang="be@latin">Skampresavany UNIX-fajł</comment>
++ <comment xml:lang="be-Latn">Skampresavany UNIX-fajł</comment>
+ <comment xml:lang="bg">Файл — компресиран за UNIX</comment>
+ <comment xml:lang="ca">fitxer amb compressió UNIX</comment>
+ <comment xml:lang="cs">soubor komprimovaný v Unixu</comment>
+ <comment xml:lang="da">UNIX-komprimeret fil</comment>
+ <comment xml:lang="de">UNIX-komprimierte Datei</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο UNIX</comment>
+- <comment xml:lang="en_GB">UNIX-compressed file</comment>
++ <comment xml:lang="en-GB">UNIX-compressed file</comment>
+ <comment xml:lang="eo">UNIX-kunpremita dosiero</comment>
+ <comment xml:lang="es">archivo comprimido de Unix</comment>
+ <comment xml:lang="eu">UNIX-en konprimitutako fitxategia</comment>
+ <comment xml:lang="fi">UNIX-pakattu tiedosto</comment>
+ <comment xml:lang="fo">UNIX-stappað fíla</comment>
+ <comment xml:lang="fr">fichier compressé UNIX</comment>
++ <comment xml:lang="fur">file comprimût di UNIX</comment>
+ <comment xml:lang="ga">comhad UNIX-comhbhrúite</comment>
+ <comment xml:lang="gl">ficheiro comprimido de UNIX</comment>
+ <comment xml:lang="he">קובץ בכיווץ UNIX</comment>
+ <comment xml:lang="hr">UNIX sažeta datoteka</comment>
+- <comment xml:lang="hu">Tömörített UNIX-fájl</comment>
++ <comment xml:lang="hu">UNIX tömörítésű fájl</comment>
+ <comment xml:lang="ia">File comprimite de UNIX</comment>
+ <comment xml:lang="id">Berkas terkompresi UNIX</comment>
+ <comment xml:lang="it">File compresso-UNIX</comment>
+@@ -8961,7 +9277,7 @@
+ <comment xml:lang="oc">fichièr compressat UNIX</comment>
+ <comment xml:lang="pl">Skompresowany plik systemu UNIX</comment>
+ <comment xml:lang="pt">ficheiro comprimido UNIX</comment>
+- <comment xml:lang="pt_BR">Arquivo compactado do UNIX</comment>
++ <comment xml:lang="pt-BR">Arquivo compactado do UNIX</comment>
+ <comment xml:lang="ro">Fișier comprimat UNIX</comment>
+ <comment xml:lang="ru">Файл (UNIX-сжатый)</comment>
+ <comment xml:lang="sk">Súbor komprimovaný v Unixe</comment>
+@@ -8972,35 +9288,37 @@
+ <comment xml:lang="tr">UNIX-sıkıştırılmış dosyası</comment>
+ <comment xml:lang="uk">стиснений файл UNIX</comment>
+ <comment xml:lang="vi">Tập tin đã nén UNIX</comment>
+- <comment xml:lang="zh_CN">UNIX 压缩文件</comment>
+- <comment xml:lang="zh_TW">UNIX 格式壓縮檔</comment>
++ <comment xml:lang="zh-CN">UNIX 压缩文件</comment>
++ <comment xml:lang="zh-TW">UNIX 壓縮檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="50">
+- <match value="\037\235" type="string" offset="0"/>
++ <match type="string" value="\037\235" offset="0"/>
+ </magic>
+ <glob pattern="*.Z"/>
+ </mime-type>
+ <mime-type type="application/x-compressed-tar">
+ <comment>Tar archive (gzip-compressed)</comment>
++ <comment xml:lang="af">Tar-argief (gzip-saamgepers)</comment>
+ <comment xml:lang="ar">أرشيف Tar (مضغوط-gzip)</comment>
+- <comment xml:lang="be@latin">Archiŭ tar (gzip-skampresavany)</comment>
++ <comment xml:lang="be-Latn">Archiŭ tar (gzip-skampresavany)</comment>
+ <comment xml:lang="bg">Архив — tar, компресиран с gzip</comment>
+ <comment xml:lang="ca">arxiu tar (amb compressió gzip)</comment>
+ <comment xml:lang="cs">archiv tar (komprimovaný pomocí gzip)</comment>
+ <comment xml:lang="da">Tar-arkiv (gzip-komprimeret)</comment>
+ <comment xml:lang="de">Tar-Archiv (gzip-komprimiert)</comment>
+ <comment xml:lang="el">Αρχείο Tar (συμπιεσμένο με gzip)</comment>
+- <comment xml:lang="en_GB">Tar archive (gzip-compressed)</comment>
++ <comment xml:lang="en-GB">Tar archive (gzip-compressed)</comment>
+ <comment xml:lang="es">archivador Tar (comprimido con gzip)</comment>
+ <comment xml:lang="eu">Tar artxiboa (gzip-ekin konprimitua)</comment>
+ <comment xml:lang="fi">Tar-arkisto (gzip-pakattu)</comment>
+ <comment xml:lang="fo">Tar skjalasavn (gzip-stappað)</comment>
+ <comment xml:lang="fr">archive tar (compressée gzip)</comment>
++ <comment xml:lang="fur">archivi Tar (comprimût cun gzip)</comment>
+ <comment xml:lang="ga">cartlann Tar (comhbhrúite le gzip)</comment>
+ <comment xml:lang="gl">arquivo Tar (comprimido con gzip)</comment>
+ <comment xml:lang="he">ארכיון Tar (מכווץ ע״י gzip)</comment>
+ <comment xml:lang="hr">Tar arhiva (gzip sažeta)</comment>
+- <comment xml:lang="hu">Tar archívum (gzip-pel tömörítve)</comment>
++ <comment xml:lang="hu">Tar archívum (gzip tömörítésű)</comment>
+ <comment xml:lang="ia">Archivo Tar (comprimite con gzip)</comment>
+ <comment xml:lang="id">Arsip Tar (terkompresi gzip)</comment>
+ <comment xml:lang="it">Archivio tar (compresso con gzip)</comment>
+@@ -9015,10 +9333,10 @@
+ <comment xml:lang="oc">archiu tar (compressat gzip)</comment>
+ <comment xml:lang="pl">Archiwum tar (kompresja gzip)</comment>
+ <comment xml:lang="pt">arquivo Tar (compressão gzip)</comment>
+- <comment xml:lang="pt_BR">Pacote Tar (compactado com gzip)</comment>
++ <comment xml:lang="pt-BR">Pacote Tar (compactado com gzip)</comment>
+ <comment xml:lang="ro">Arhivă Tar (comprimată gzip)</comment>
+ <comment xml:lang="ru">Архив TAR (сжатый gzip)</comment>
+- <comment xml:lang="sk">Archív tar (komprimovaný pomocou gzip)</comment>
++ <comment xml:lang="sk">Archív Tar (komprimovaný pomocou gzip)</comment>
+ <comment xml:lang="sl">Datoteka arhiva Tar (stisnjen z gzip)</comment>
+ <comment xml:lang="sq">Arkiv tar (i kompresuar me gzip)</comment>
+ <comment xml:lang="sr">Тар архива (запакована гзипом)</comment>
+@@ -9026,8 +9344,8 @@
+ <comment xml:lang="tr">Tar arşivi (gzip ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">архів tar (стиснений gzip)</comment>
+ <comment xml:lang="vi">Kho nén tar (đã nén gzip)</comment>
+- <comment xml:lang="zh_CN">Tar 归档文件(gzip 压缩)</comment>
+- <comment xml:lang="zh_TW">Tar 封存檔 (gzip 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">Tar 归档文件(gzip 压缩)</comment>
++ <comment xml:lang="zh-TW">Tar 封存檔 (gzip 壓縮)</comment>
+ <sub-class-of type="application/gzip"/>
+ <generic-icon name="package-x-generic"/>
+ <glob pattern="*.tar.gz"/>
+@@ -9035,21 +9353,23 @@
+ </mime-type>
+ <mime-type type="application/x-core">
+ <comment>program crash data</comment>
++ <comment xml:lang="af">programomvaldata</comment>
+ <comment xml:lang="ar">معلومات انهيار البرنامج</comment>
+- <comment xml:lang="be@latin">źviestki złamanaj prahramy</comment>
++ <comment xml:lang="be-Latn">źviestki złamanaj prahramy</comment>
+ <comment xml:lang="bg">Данни от забиване на програма</comment>
+ <comment xml:lang="ca">dades de fallada de programa</comment>
+ <comment xml:lang="cs">data o pádu programu</comment>
+ <comment xml:lang="da">programnedbrudsdata</comment>
+ <comment xml:lang="de">Daten zu Programmabsturz</comment>
+ <comment xml:lang="el">δεδομένα από την κατάρρευση προγράμματος</comment>
+- <comment xml:lang="en_GB">program crash data</comment>
++ <comment xml:lang="en-GB">program crash data</comment>
+ <comment xml:lang="eo">datumo pri kraŝo de programo</comment>
+ <comment xml:lang="es">datos de cuelgue de programa</comment>
+ <comment xml:lang="eu">programaren kraskaduraren datuak</comment>
+ <comment xml:lang="fi">ohjelman kaatumistiedot</comment>
+ <comment xml:lang="fo">forrits sordáta</comment>
+ <comment xml:lang="fr">données de plantage de programme</comment>
++ <comment xml:lang="fur">dâts di colàs di program</comment>
+ <comment xml:lang="ga">sonraí tuairte ríomhchláir</comment>
+ <comment xml:lang="gl">datos de colgue do programa</comment>
+ <comment xml:lang="he">מידע מקריסת תכנית</comment>
+@@ -9070,7 +9390,7 @@
+ <comment xml:lang="oc">donadas de plantage de programa</comment>
+ <comment xml:lang="pl">Dane awarii programu</comment>
+ <comment xml:lang="pt">dados de rebentamento de aplicação</comment>
+- <comment xml:lang="pt_BR">Dados de travamento de programa</comment>
++ <comment xml:lang="pt-BR">Dados de travamento de programa</comment>
+ <comment xml:lang="ro">date eroare program</comment>
+ <comment xml:lang="ru">Данные аварийного завершения программы</comment>
+ <comment xml:lang="sk">Údaje o páde programu</comment>
+@@ -9081,31 +9401,32 @@
+ <comment xml:lang="tr">program çökme verisi</comment>
+ <comment xml:lang="uk">аварійні дані про програму</comment>
+ <comment xml:lang="vi">dữ liệu sụp đổ chương trình</comment>
+- <comment xml:lang="zh_CN">程序崩溃数据</comment>
+- <comment xml:lang="zh_TW">程式當掉資料</comment>
++ <comment xml:lang="zh-CN">程序崩溃数据</comment>
++ <comment xml:lang="zh-TW">程式當掉資料</comment>
+ <magic priority="50">
+- <match value="\177ELF \004" type="string" offset="0" mask="0xffffffff000000000000000000000000ff"/>
+- <match value="\177ELF" type="string" offset="0">
+- <match value="1" type="byte" offset="5">
+- <match value="4" type="little16" offset="16"/>
++ <match type="string" mask="0xffffffff000000000000000000000000ff" value="\177ELF \004" offset="0"/>
++ <match type="string" value="\177ELF" offset="0">
++ <match type="byte" value="1" offset="5">
++ <match type="little16" value="4" offset="16"/>
+ </match>
+ </match>
+- <match value="\177ELF" type="string" offset="0">
+- <match value="2" type="byte" offset="5">
+- <match value="4" type="big16" offset="16"/>
++ <match type="string" value="\177ELF" offset="0">
++ <match type="byte" value="2" offset="5">
++ <match type="big16" value="4" offset="16"/>
+ </match>
+ </match>
+- <match value="Core\001" type="string" offset="0"/>
+- <match value="Core\002" type="string" offset="0"/>
++ <match type="string" value="Core\001" offset="0"/>
++ <match type="string" value="Core\002" offset="0"/>
+ </magic>
+ <glob pattern="core" case-sensitive="true"/>
+ </mime-type>
+ <mime-type type="application/x-cpio">
+ <comment>CPIO archive</comment>
++ <comment xml:lang="af">CPIO-argief</comment>
+ <comment xml:lang="ar">أرشيف CPIO</comment>
+ <comment xml:lang="ast">Archivu CPIO</comment>
+ <comment xml:lang="az">CPIO arxivi</comment>
+- <comment xml:lang="be@latin">Archiŭ CPIO</comment>
++ <comment xml:lang="be-Latn">Archiŭ CPIO</comment>
+ <comment xml:lang="bg">Архив — CPIO</comment>
+ <comment xml:lang="ca">arxiu CPIO</comment>
+ <comment xml:lang="cs">archiv CPIO</comment>
+@@ -9113,13 +9434,14 @@
+ <comment xml:lang="da">CPIO-arkiv</comment>
+ <comment xml:lang="de">CPIO-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο CPIO</comment>
+- <comment xml:lang="en_GB">CPIO archive</comment>
++ <comment xml:lang="en-GB">CPIO archive</comment>
+ <comment xml:lang="eo">CPIO-arkivo</comment>
+ <comment xml:lang="es">archivador CPIO</comment>
+ <comment xml:lang="eu">CPIO artxiboa</comment>
+ <comment xml:lang="fi">CPIO-arkisto</comment>
+ <comment xml:lang="fo">CPIO skjalasavn</comment>
+ <comment xml:lang="fr">archive CPIO</comment>
++ <comment xml:lang="fur">archivi CPIO</comment>
+ <comment xml:lang="ga">cartlann CPIO</comment>
+ <comment xml:lang="gl">arquivo CPIO</comment>
+ <comment xml:lang="he">ארכיון CPIO</comment>
+@@ -9141,7 +9463,7 @@
+ <comment xml:lang="oc">archiu CPIO</comment>
+ <comment xml:lang="pl">Archiwum CPIO</comment>
+ <comment xml:lang="pt">arquivo CPIO</comment>
+- <comment xml:lang="pt_BR">Pacote CPIO</comment>
++ <comment xml:lang="pt-BR">Pacote CPIO</comment>
+ <comment xml:lang="ro">Arhivă CPIO</comment>
+ <comment xml:lang="ru">Архив CPIO</comment>
+ <comment xml:lang="sk">Archív CPIO</comment>
+@@ -9152,22 +9474,23 @@
+ <comment xml:lang="tr">CPIO arşivi</comment>
+ <comment xml:lang="uk">архів CPIO</comment>
+ <comment xml:lang="vi">Kho nén CPIO</comment>
+- <comment xml:lang="zh_CN">CPIO 归档文件</comment>
+- <comment xml:lang="zh_TW">CPIO 封存檔</comment>
++ <comment xml:lang="zh-CN">CPIO 归档文件</comment>
++ <comment xml:lang="zh-TW">CPIO 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="60">
+- <match value="070707" type="host16" offset="0"/>
+- <match value="070701" type="string" offset="0"/>
+- <match value="070702" type="string" offset="0"/>
+- <match value="0143561" type="host16" offset="0"/>
++ <match type="host16" value="070707" offset="0"/>
++ <match type="string" value="070701" offset="0"/>
++ <match type="string" value="070702" offset="0"/>
++ <match type="host16" value="0143561" offset="0"/>
+ </magic>
+ <glob pattern="*.cpio"/>
+ </mime-type>
+ <mime-type type="application/x-cpio-compressed">
+ <comment>CPIO archive (gzip-compressed)</comment>
++ <comment xml:lang="af">CPIO-argief (gzip-saamgepers)</comment>
+ <comment xml:lang="ar">أرشيف CPIO (مضغوط-gzip)</comment>
+ <comment xml:lang="az">CPIO arxivi (gzip ilə sıxışdırılmış)</comment>
+- <comment xml:lang="be@latin">Archiŭ CPIO (gzip-skampresavany)</comment>
++ <comment xml:lang="be-Latn">Archiŭ CPIO (gzip-skampresavany)</comment>
+ <comment xml:lang="bg">Архив — CPIO, компресиран с gzip</comment>
+ <comment xml:lang="ca">arxiu CPIO (amb compressió gzip)</comment>
+ <comment xml:lang="cs">archiv CPIO (komprimovaný pomocí gzip)</comment>
+@@ -9175,18 +9498,19 @@
+ <comment xml:lang="da">CPIO-arkiv (gzip-komprimeret)</comment>
+ <comment xml:lang="de">CPIO-Archiv (gzip-komprimiert)</comment>
+ <comment xml:lang="el">Αρχείο CPIO (συμπιεσμένο με gzip)</comment>
+- <comment xml:lang="en_GB">CPIO archive (gzip-compressed)</comment>
++ <comment xml:lang="en-GB">CPIO archive (gzip-compressed)</comment>
+ <comment xml:lang="eo">CPIO-arkivo (kunpremita per gzip)</comment>
+ <comment xml:lang="es">archivador CPIO (comprimido con gzip)</comment>
+ <comment xml:lang="eu">CPIO artxiboa (gzip-ekin konprimitua)</comment>
+ <comment xml:lang="fi">CPIO-arkisto (gzip-pakattu)</comment>
+ <comment xml:lang="fo">CPIO skjalasavn (gzip-stappað)</comment>
+ <comment xml:lang="fr">archive CPIO (compressé gzip)</comment>
++ <comment xml:lang="fur">archivi CPIO (comprimût cun gzip)</comment>
+ <comment xml:lang="ga">cartlann CPIO (comhbhrúite le gzip)</comment>
+ <comment xml:lang="gl">arquivo CPIO (comprimido con gzip)</comment>
+ <comment xml:lang="he">ארכיון CPIO (מכווץ ע״י gzip)</comment>
+ <comment xml:lang="hr">CPIO arhiva (gzip sažeta)</comment>
+- <comment xml:lang="hu">CPIO-archívum (gzip-pel tömörítve)</comment>
++ <comment xml:lang="hu">CPIO archívum (gzip tömörítésű)</comment>
+ <comment xml:lang="ia">Archivo CPIO (comprimite con gzip)</comment>
+ <comment xml:lang="id">Arsip CPIO (terkompresi gzip)</comment>
+ <comment xml:lang="it">Archivio CPIO (compresso con gzip)</comment>
+@@ -9203,7 +9527,7 @@
+ <comment xml:lang="oc">archiu CPIO (compressat gzip)</comment>
+ <comment xml:lang="pl">Archiwum CPIO (kompresja gzip)</comment>
+ <comment xml:lang="pt">arquivo CPIO (compressão gzip)</comment>
+- <comment xml:lang="pt_BR">Pacote CPIO (compactado com gzip)</comment>
++ <comment xml:lang="pt-BR">Pacote CPIO (compactado com gzip)</comment>
+ <comment xml:lang="ro">Arhivă CPIO (compresie gzip)</comment>
+ <comment xml:lang="ru">Архив CPIO (сжатый gzip)</comment>
+ <comment xml:lang="sk">Archív CPIO (komprimovaný pomocou gzip)</comment>
+@@ -9214,17 +9538,18 @@
+ <comment xml:lang="tr">CPIO arşivi (gzip ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">архів CPIO (стиснений gzip)</comment>
+ <comment xml:lang="vi">Kho nén CPIO (đã nén gzip)</comment>
+- <comment xml:lang="zh_CN">CPIO 归档文件(gzip 压缩)</comment>
+- <comment xml:lang="zh_TW">CPIO 封存檔 (gzip 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">CPIO 归档文件(gzip 压缩)</comment>
++ <comment xml:lang="zh-TW">CPIO 封存檔 (gzip 壓縮)</comment>
+ <sub-class-of type="application/gzip"/>
+ <generic-icon name="package-x-generic"/>
+ <glob pattern="*.cpio.gz"/>
+ </mime-type>
+ <mime-type type="application/x-csh">
+ <comment>C shell script</comment>
++ <comment xml:lang="af">C shell-skrip</comment>
+ <comment xml:lang="ar">سكربت شِل سي</comment>
+ <comment xml:lang="az">C qabıq skripti</comment>
+- <comment xml:lang="be@latin">Skrypt abałonki C</comment>
++ <comment xml:lang="be-Latn">Skrypt abałonki C</comment>
+ <comment xml:lang="bg">Скрипт — обвивка C</comment>
+ <comment xml:lang="ca">script C shell</comment>
+ <comment xml:lang="cs">skript shellu C</comment>
+@@ -9232,13 +9557,14 @@
+ <comment xml:lang="da">C-skalprogram</comment>
+ <comment xml:lang="de">C-Shell-Skript</comment>
+ <comment xml:lang="el">Δέσμη ενεργειών κελύφους C</comment>
+- <comment xml:lang="en_GB">C shell script</comment>
++ <comment xml:lang="en-GB">C shell script</comment>
+ <comment xml:lang="eo">skripto de C-ŝelo</comment>
+ <comment xml:lang="es">secuencia de órdenes de consola en C</comment>
+ <comment xml:lang="eu">C shell script-a</comment>
+ <comment xml:lang="fi">Csh-komentotiedosto</comment>
+ <comment xml:lang="fo">C skel boðrøð</comment>
+ <comment xml:lang="fr">script C shell</comment>
++ <comment xml:lang="fur">script di shell in C</comment>
+ <comment xml:lang="ga">script bhlaoisce C</comment>
+ <comment xml:lang="gl">script de C shell</comment>
+ <comment xml:lang="he">תסריט מעטפת C</comment>
+@@ -9259,7 +9585,7 @@
+ <comment xml:lang="oc">escript C shell</comment>
+ <comment xml:lang="pl">Skrypt powłoki C</comment>
+ <comment xml:lang="pt">script de terminal C</comment>
+- <comment xml:lang="pt_BR">Script de shell C</comment>
++ <comment xml:lang="pt-BR">Script de shell C</comment>
+ <comment xml:lang="ro">Script C shell</comment>
+ <comment xml:lang="ru">Сценарий C shell</comment>
+ <comment xml:lang="sk">Skript shellu C</comment>
+@@ -9270,37 +9596,39 @@
+ <comment xml:lang="tr">C kabuk betiği</comment>
+ <comment xml:lang="uk">скрипт оболонки C</comment>
+ <comment xml:lang="vi">Văn lệnh trình bao C</comment>
+- <comment xml:lang="zh_CN">C shell 脚本</comment>
+- <comment xml:lang="zh_TW">C shell 指令稿</comment>
++ <comment xml:lang="zh-CN">C shell 脚本</comment>
++ <comment xml:lang="zh-TW">C shell 指令稿</comment>
+ <sub-class-of type="application/x-shellscript"/>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-script"/>
+ <magic>
+- <match value="/bin/tcsh" type="string" offset="2:16"/>
+- <match value="/bin/csh" type="string" offset="2:16"/>
+- <match value="/bin/env csh" type="string" offset="2:16"/>
+- <match value="/bin/env tcsh" type="string" offset="2:16"/>
++ <match type="string" value="/bin/tcsh" offset="2:16"/>
++ <match type="string" value="/bin/csh" offset="2:16"/>
++ <match type="string" value="/bin/env csh" offset="2:16"/>
++ <match type="string" value="/bin/env tcsh" offset="2:16"/>
+ </magic>
+ <glob pattern="*.csh"/>
+ </mime-type>
+ <mime-type type="application/x-dbf">
+ <comment>Xbase document</comment>
++ <comment xml:lang="af">Xbase-dokument</comment>
+ <comment xml:lang="ar">مستند Xbase</comment>
+ <comment xml:lang="ast">Documentu Xbase</comment>
+- <comment xml:lang="be@latin">Dakument Xbase</comment>
++ <comment xml:lang="be-Latn">Dakument Xbase</comment>
+ <comment xml:lang="bg">Документ — Xbase</comment>
+ <comment xml:lang="ca">document Xbase</comment>
+ <comment xml:lang="cs">dokument Xbase</comment>
+ <comment xml:lang="da">Xbasedokument</comment>
+ <comment xml:lang="de">Xbase-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Xbase</comment>
+- <comment xml:lang="en_GB">Xbase document</comment>
++ <comment xml:lang="en-GB">Xbase document</comment>
+ <comment xml:lang="eo">Xbase-dokumento</comment>
+ <comment xml:lang="es">documento Xbase</comment>
+ <comment xml:lang="eu">Xbase dokumentua</comment>
+ <comment xml:lang="fi">Xbase-asiakirja</comment>
+ <comment xml:lang="fo">Xbase skjal</comment>
+ <comment xml:lang="fr">document Xbase</comment>
++ <comment xml:lang="fur">document Xbase</comment>
+ <comment xml:lang="ga">cáipéis Xbase</comment>
+ <comment xml:lang="gl">documento Xbase</comment>
+ <comment xml:lang="he">מסמך Xbase</comment>
+@@ -9320,7 +9648,7 @@
+ <comment xml:lang="oc">document Xbase</comment>
+ <comment xml:lang="pl">Dokument Xbase</comment>
+ <comment xml:lang="pt">documento Xbase</comment>
+- <comment xml:lang="pt_BR">Documento do Xbase</comment>
++ <comment xml:lang="pt-BR">Documento do Xbase</comment>
+ <comment xml:lang="ro">Document Xbase</comment>
+ <comment xml:lang="ru">Документ Xbase</comment>
+ <comment xml:lang="sk">Dokument Xbase</comment>
+@@ -9331,8 +9659,8 @@
+ <comment xml:lang="tr">Xbase belgesi</comment>
+ <comment xml:lang="uk">документ Xbase</comment>
+ <comment xml:lang="vi">Tài liệu Xbase</comment>
+- <comment xml:lang="zh_CN">Xbase 文档</comment>
+- <comment xml:lang="zh_TW">Xbase 文件</comment>
++ <comment xml:lang="zh-CN">Xbase 文档</comment>
++ <comment xml:lang="zh-TW">Xbase 文件</comment>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.dbf"/>
+ <alias type="application/x-dbase"/>
+@@ -9341,20 +9669,22 @@
+ </mime-type>
+ <mime-type type="application/ecmascript">
+ <comment>ECMAScript program</comment>
++ <comment xml:lang="af">ECMAScript-program</comment>
+ <comment xml:lang="ar">برنامج ECMAScript</comment>
+- <comment xml:lang="be@latin">Prahrama ECMAScript</comment>
++ <comment xml:lang="be-Latn">Prahrama ECMAScript</comment>
+ <comment xml:lang="bg">Програма — ECMAScript</comment>
+ <comment xml:lang="ca">programa ECMAScript</comment>
+ <comment xml:lang="cs">program v jazyce ECMAScript</comment>
+- <comment xml:lang="da">ECMA-program</comment>
++ <comment xml:lang="da">ECMAScript-program</comment>
+ <comment xml:lang="de">ECMAScript-Programm</comment>
+ <comment xml:lang="el">Πρόγραμμα ECMAScript</comment>
+- <comment xml:lang="en_GB">ECMAScript program</comment>
++ <comment xml:lang="en-GB">ECMAScript program</comment>
+ <comment xml:lang="es">programa en ECMAScript</comment>
+ <comment xml:lang="eu">ECMAScript programa</comment>
+ <comment xml:lang="fi">ECMAScript-ohjelma</comment>
+ <comment xml:lang="fo">ECMAScript forrit</comment>
+ <comment xml:lang="fr">programme ECMAScript</comment>
++ <comment xml:lang="fur">program ECMAScript</comment>
+ <comment xml:lang="ga">ríomhchlár ECMAScript</comment>
+ <comment xml:lang="gl">programa en ECMAScript</comment>
+ <comment xml:lang="he">תכנית EMCAScript</comment>
+@@ -9375,7 +9705,7 @@
+ <comment xml:lang="oc">programa ECMAEscript</comment>
+ <comment xml:lang="pl">Pogram ECMAScript</comment>
+ <comment xml:lang="pt">programa ECMAScript</comment>
+- <comment xml:lang="pt_BR">Programa ECMAScript</comment>
++ <comment xml:lang="pt-BR">Programa ECMAScript</comment>
+ <comment xml:lang="ro">Program ECMAScript</comment>
+ <comment xml:lang="ru">Программа ECMAScript</comment>
+ <comment xml:lang="sk">Program ECMAScript</comment>
+@@ -9386,105 +9716,131 @@
+ <comment xml:lang="tr">ECMAScript programı</comment>
+ <comment xml:lang="uk">програма мовою ECMAScript</comment>
+ <comment xml:lang="vi">Chương trình ECMAScript</comment>
+- <comment xml:lang="zh_CN">ECMAScript 程序</comment>
+- <comment xml:lang="zh_TW">ECMAScript 程式</comment>
++ <comment xml:lang="zh-CN">ECMAScript 程序</comment>
++ <comment xml:lang="zh-TW">ECMAScript 程式</comment>
+ <alias type="text/ecmascript"/>
+- <sub-class-of type='application/x-executable'/>
++ <sub-class-of type="application/x-executable"/>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-script"/>
+ <glob pattern="*.es"/>
+ </mime-type>
++ <mime-type type="application/x-mame-chd">
++ <comment>MAME compressed hard disk image</comment>
++ <comment xml:lang="ca">imatge de disc dur MAME amb compressió</comment>
++ <comment xml:lang="fi">MAME-pakatun kiintolevyn levykuva</comment>
++ <comment xml:lang="it">Immagine disco MAME compressa</comment>
++ <comment xml:lang="pl">Skompresowany obraz dysku twardego MAME</comment>
++ <comment xml:lang="uk">стиснений образ жорсткого диска MAME</comment>
++ <generic-icon name="application-x-executable"/>
++ <magic priority="50">
++ <match type="string" value="MComprHD" offset="0"/>
++ </magic>
++ <glob pattern="*.chd"/>
++ </mime-type>
+ <mime-type type="application/x-sega-cd-rom">
+-
++ <!-- Translate this to Mega-CD if the console was known as such in your locale
++ Should be Mega-CD in all but en_US, Mexico, Canada and Brazil: https://en.wikipedia.org/wiki/Sega_CD -->
+ <comment>Sega CD disc image</comment>
++ <comment xml:lang="af">Mega CD-skyfbeeldlêer</comment>
+ <comment xml:lang="ast">Imaxe de discu de Sega CD</comment>
++ <comment xml:lang="bg">Диск — Mega-CD (Sega)</comment>
+ <comment xml:lang="ca">imatge de disc de Sega CD</comment>
+ <comment xml:lang="cs">obraz disku CD pro Sega</comment>
+ <comment xml:lang="da">Sega CD-diskaftryk</comment>
+ <comment xml:lang="de">Sega-CD-Datenträgerabbild</comment>
+- <comment xml:lang="en_GB">Sega CD disc image</comment>
++ <comment xml:lang="en-GB">Sega CD disc image</comment>
+ <comment xml:lang="es">imagen de disco CD de Sega</comment>
+ <comment xml:lang="eu">Sega CD disko irudia</comment>
+ <comment xml:lang="fi">Sega CD -levykuva</comment>
+ <comment xml:lang="fr">image disque Sega CD</comment>
++ <comment xml:lang="fur">imagjin disc CD Sega</comment>
+ <comment xml:lang="ga">íomhá dlúthdhiosca Sega</comment>
+ <comment xml:lang="he">דמות כונן Sega CD</comment>
+ <comment xml:lang="hr">Sega CD slika diska</comment>
+ <comment xml:lang="hu">Sega CD-lemezkép</comment>
+- <comment xml:lang="id">image cakram CD Sega</comment>
++ <comment xml:lang="id">Image cakram CD Sega</comment>
+ <comment xml:lang="it">Immagine disco Sega Mega CD</comment>
+ <comment xml:lang="kk">Sega CD диск бейнесі</comment>
+ <comment xml:lang="ko">세가 CD 디스크 이미지</comment>
+ <comment xml:lang="pl">Obraz płyty konsoli Mega-CD</comment>
+- <comment xml:lang="pt_BR">Imagem de disco Sega CD</comment>
++ <comment xml:lang="pt">imagem de disco Mega-CD</comment>
++ <comment xml:lang="pt-BR">Imagem de disco Sega CD</comment>
+ <comment xml:lang="ru">Образ диска CD Sega</comment>
+ <comment xml:lang="sk">Obraz disku CD Sega</comment>
+ <comment xml:lang="sr">одраз диска Сега ЦД-а</comment>
+ <comment xml:lang="sv">Mega-CD-skivavbild</comment>
+- <comment xml:lang="tr">Sega CD disk kalıbı</comment>
++ <comment xml:lang="tr">Sega CD disk görüntüsü</comment>
+ <comment xml:lang="uk">образ диска Sega CD</comment>
+- <comment xml:lang="zh_CN">Sega CD 光盘映像</comment>
+- <comment xml:lang="zh_TW">Sega CD 光碟映像檔</comment>
++ <comment xml:lang="zh-CN">Sega CD 光盘映像</comment>
++ <comment xml:lang="zh-TW">Sega CD 光碟映像檔</comment>
+ <generic-icon name="application-x-executable"/>
+-
++ <!-- Also matches the application/x-genesis-rom magic values, hence the higher priority -->
+ <magic priority="60">
+- <match value="SEGADISCSYSTEM" type="string" offset="0">
+- <match value="SEGA" type="string" offset="256"/>
++ <match type="string" value="SEGADISCSYSTEM" offset="0">
++ <match type="string" value="SEGA" offset="256"/>
+ </match>
+- <match value="SEGADISCSYSTEM" type="string" offset="16">
+- <match value="SEGA" type="string" offset="272"/>
++ <match type="string" value="SEGADISCSYSTEM" offset="16">
++ <match type="string" value="SEGA" offset="272"/>
+ </match>
+ </magic>
+- <glob pattern="*.bin"/>
+ <glob pattern="*.iso"/>
+ </mime-type>
+ <mime-type type="application/x-sega-pico-rom">
+-
++ <!-- Translate this to Kids Computer Pico if the console was known as such in your locale
++ Should be Sega Pico in all but Japan: https://en.wikipedia.org/wiki/Sega_Pico -->
+ <comment>Sega Pico ROM</comment>
+ <comment xml:lang="ast">ROM de Sega Pico</comment>
++ <comment xml:lang="bg">ROM — Sega Pico</comment>
+ <comment xml:lang="ca">ROM de Sega Pico</comment>
+ <comment xml:lang="cs">ROM pro Sega Pico</comment>
++ <comment xml:lang="da">Sega Pico-ROM</comment>
+ <comment xml:lang="de">Sega Pico ROM</comment>
+- <comment xml:lang="en_GB">Sega Pico ROM</comment>
++ <comment xml:lang="en-GB">Sega Pico ROM</comment>
+ <comment xml:lang="es">ROM de Sega Pico</comment>
+ <comment xml:lang="eu">Sega Pico ROM</comment>
+ <comment xml:lang="fi">Sega Pico ROM</comment>
+ <comment xml:lang="fr">ROM Sega Pico</comment>
++ <comment xml:lang="fur">ROM Sega Pico</comment>
+ <comment xml:lang="ga">ROM Sega Pico</comment>
+ <comment xml:lang="hr">Sega Pico ROM</comment>
+ <comment xml:lang="hu">Sega Pico ROM</comment>
+ <comment xml:lang="id">ROM Sega Pico</comment>
+ <comment xml:lang="it">ROM Sega Pico</comment>
+ <comment xml:lang="kk">Sega Pico ROM</comment>
+- <comment xml:lang="ko">세카 피코 롬</comment>
++ <comment xml:lang="ko">세가 피코 롬</comment>
+ <comment xml:lang="pl">Plik ROM konsoli Sega Pico</comment>
+- <comment xml:lang="pt_BR">ROM de Sega Pico</comment>
++ <comment xml:lang="pt">ROM Sega Pico</comment>
++ <comment xml:lang="pt-BR">ROM de Sega Pico</comment>
+ <comment xml:lang="ru">Sega Pico ROM</comment>
+ <comment xml:lang="sk">ROM pre Sega Pico</comment>
+ <comment xml:lang="sr">Сега Пико РОМ</comment>
+ <comment xml:lang="sv">Sega Pico-rom</comment>
+ <comment xml:lang="tr">Sega Pico ROM</comment>
+ <comment xml:lang="uk">ППП Sega Pico</comment>
+- <comment xml:lang="zh_CN">Sega Pico ROM</comment>
+- <comment xml:lang="zh_TW">Sega Pico ROM</comment>
++ <comment xml:lang="zh-CN">Sega Pico ROM</comment>
++ <comment xml:lang="zh-TW">Sega Pico ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <magic priority="50">
+- <match value="SEGA PICO" type="string" offset="256"/>
++ <match type="string" value="SEGA PICO" offset="256"/>
+ </magic>
++ <glob pattern="*.iso"/>
+ </mime-type>
+ <mime-type type="application/x-saturn-rom">
+ <comment>Sega Saturn disc image</comment>
++ <comment xml:lang="af">Sega Saturn-skyfbeeldlêer</comment>
+ <comment xml:lang="ast">Imaxe de discu de Sega Saturn</comment>
++ <comment xml:lang="bg">Диск — Sega Saturn</comment>
+ <comment xml:lang="ca">imatge de disc de Sega Saturn</comment>
+ <comment xml:lang="cs">obraz disku pro Sega Saturn</comment>
+ <comment xml:lang="da">Sega Saturn-diskaftryk</comment>
+ <comment xml:lang="de">Sega-Saturn-Datenträgerabbild</comment>
+ <comment xml:lang="el">Εικόνα δίσκου Sega Saturn</comment>
+- <comment xml:lang="en_GB">Sega Saturn disc image</comment>
++ <comment xml:lang="en-GB">Sega Saturn disc image</comment>
+ <comment xml:lang="es">imagen de disco de Sega Saturn</comment>
+ <comment xml:lang="eu">Sega Saturn disko irudia</comment>
+ <comment xml:lang="fi">Sega Saturn -levykuva</comment>
+ <comment xml:lang="fr">image disque Sega Saturn</comment>
++ <comment xml:lang="fur">imagjin disc Sega Saturn</comment>
+ <comment xml:lang="ga">íomhá diosca Sega Saturn</comment>
+ <comment xml:lang="he">דמות כונן Sega Saturn</comment>
+ <comment xml:lang="hr">Sega Saturn slika diska</comment>
+@@ -9497,76 +9853,73 @@
+ <comment xml:lang="oc">imatge disc Sega Saturn</comment>
+ <comment xml:lang="pl">Obraz płyty konsoli Sega Saturn</comment>
+ <comment xml:lang="pt">imagem de disco Sega Saturn</comment>
+- <comment xml:lang="pt_BR">Imagem de disco do Sega Saturn</comment>
++ <comment xml:lang="pt-BR">Imagem de disco do Sega Saturn</comment>
+ <comment xml:lang="ru">Образ диска Sega Saturn</comment>
+ <comment xml:lang="sk">Obraz disku Sega Saturn</comment>
+ <comment xml:lang="sr">одраз диска Сега Сатурна</comment>
+ <comment xml:lang="sv">Sega Saturn-skivavbild</comment>
+- <comment xml:lang="tr">Sega Saturn disk kalıbı</comment>
++ <comment xml:lang="tr">Sega Saturn disk görüntüsü</comment>
+ <comment xml:lang="uk">образ диска Sega Saturn</comment>
+- <comment xml:lang="zh_CN">Sega Saturn 光盘映像</comment>
+- <comment xml:lang="zh_TW">Sega Saturn 光碟映像檔</comment>
++ <comment xml:lang="zh-CN">Sega Saturn 光盘映像</comment>
++ <comment xml:lang="zh-TW">Sega Saturn 光碟映像檔</comment>
+ <generic-icon name="application-x-executable"/>
+ <magic priority="50">
+- <match value="SEGA SEGASATURN" type="string" offset="0"/>
+- <match value="SEGA SEGASATURN" type="string" offset="16"/>
++ <match type="string" value="SEGA SEGASATURN" offset="0"/>
++ <match type="string" value="SEGA SEGASATURN" offset="16"/>
+ </magic>
+- <glob pattern="*.bin"/>
+ <glob pattern="*.iso"/>
+ </mime-type>
+- <mime-type type="application/x-dc-rom">
+- <comment>Dreamcast GD-ROM</comment>
+- <comment xml:lang="ast">GD-ROM de Dreamcast</comment>
+- <comment xml:lang="ca">GD-ROM de Dreamcast</comment>
+- <comment xml:lang="cs">GD-ROM pro Dreamcast</comment>
+- <comment xml:lang="da">Dreamcast GD-ROM</comment>
+- <comment xml:lang="de">Dreamcast GD-ROM</comment>
+- <comment xml:lang="el">Dreamcast GD-ROM</comment>
+- <comment xml:lang="en_GB">Dreamcast GD-ROM</comment>
+- <comment xml:lang="es">GD-ROM de Dreamcast</comment>
+- <comment xml:lang="eu">Dreamcast GD-ROM</comment>
+- <comment xml:lang="fr">GD-ROM Dreamcast</comment>
+- <comment xml:lang="ga">GD-ROM Dreamcast</comment>
+- <comment xml:lang="he">Dreamcast GD-ROM</comment>
+- <comment xml:lang="hr">Dreamcast GD-ROM</comment>
+- <comment xml:lang="hu">Dreamcast GD-ROM</comment>
+- <comment xml:lang="ia">GD-ROM Dreamcast</comment>
+- <comment xml:lang="id">GD-ROM Dreamcast</comment>
+- <comment xml:lang="it">GD-ROM Dreamcast</comment>
+- <comment xml:lang="kk">Dreamcast GD-ROM</comment>
+- <comment xml:lang="ko">드림캐스트 GD-ROM</comment>
+- <comment xml:lang="oc">GD-ROM Dreamcast</comment>
+- <comment xml:lang="pl">Plik GD-ROM konsoli Dreamcast</comment>
+- <comment xml:lang="pt">GD-ROM Dreamcast</comment>
+- <comment xml:lang="pt_BR">GD-ROM de Dreamcast</comment>
+- <comment xml:lang="ru">Dreamcast GD-ROM</comment>
+- <comment xml:lang="sk">Dreamcast GD-ROM</comment>
+- <comment xml:lang="sr">Дримкаст ГД-РОМ</comment>
+- <comment xml:lang="sv">Dreamcast-gd-rom</comment>
+- <comment xml:lang="tr">Dreamcast GD-ROM</comment>
+- <comment xml:lang="uk">GD-ROM Dreamcast</comment>
+- <comment xml:lang="zh_CN">Dreamcast CD-ROM</comment>
+- <comment xml:lang="zh_TW">Dreamcast GD-ROM</comment>
++ <mime-type type="application/x-dreamcast-rom">
++ <comment>Dreamcast disc image</comment>
++ <comment xml:lang="bg">Диск — Dreamcast</comment>
++ <comment xml:lang="ca">imatge de disc de Dreamcast</comment>
++ <comment xml:lang="da">Dreamcast-diskaftryk</comment>
++ <comment xml:lang="de">Dreamcast-Datenträgerabbild</comment>
++ <comment xml:lang="en-GB">Dreamcast disc image</comment>
++ <comment xml:lang="es">imagen de disco de Dreamcast</comment>
++ <comment xml:lang="eu">Dreamcast disko irudia</comment>
++ <comment xml:lang="fi">Dreamcast-levykuva</comment>
++ <comment xml:lang="fr">image disque Dreamcast</comment>
++ <comment xml:lang="hr">Dreamcast slika disa</comment>
++ <comment xml:lang="hu">Dreamcast lemezkép</comment>
++ <comment xml:lang="id">Image cakram Dreamcast</comment>
++ <comment xml:lang="it">Immagine disco Dreamcast</comment>
++ <comment xml:lang="kk">Dreamcast диск бейнесі</comment>
++ <comment xml:lang="ko">드림캐스트 디스크 이미지</comment>
++ <comment xml:lang="pl">Obraz płyty konsoli Dreamcast</comment>
++ <comment xml:lang="pt">imagem de disco Dreamcast</comment>
++ <comment xml:lang="pt-BR">Imagem de disco do Dreamcast</comment>
++ <comment xml:lang="ru">Образ диска Dreamcast</comment>
++ <comment xml:lang="sk">Obraz disku Dreamcast</comment>
++ <comment xml:lang="sv">Dreamcast-skivavbild</comment>
++ <comment xml:lang="tr">Dreamcast disk görüntüsü</comment>
++ <comment xml:lang="uk">образ диска Dreamcast</comment>
++ <comment xml:lang="zh-CN">Dreamcast 光盘映像</comment>
++ <comment xml:lang="zh-TW">Dreamcast 光碟映像檔</comment>
+ <generic-icon name="application-x-executable"/>
+- <glob pattern="*.dc"/>
++ <magic priority="50">
++ <match type="string" value="SEGA SEGAKATANA" offset="16"/>
++ </magic>
++ <glob pattern="*.iso"/>
+ </mime-type>
+ <mime-type type="application/x-nintendo-ds-rom">
+ <comment>Nintendo DS ROM</comment>
+ <comment xml:lang="ar">Nintendo DS ROM</comment>
+ <comment xml:lang="ast">ROM de Nintendo DS</comment>
+- <comment xml:lang="be@latin">Nintendo DS ROM</comment>
++ <comment xml:lang="be-Latn">Nintendo DS ROM</comment>
+ <comment xml:lang="bg">ROM — Nintendo DS</comment>
+ <comment xml:lang="ca">ROM de Nintendo DS</comment>
+ <comment xml:lang="cs">ROM pro Nintendo DS</comment>
+- <comment xml:lang="da">Nintendo DS-rom</comment>
++ <comment xml:lang="da">Nintendo DS-ROM</comment>
+ <comment xml:lang="de">Nintendo DS ROM</comment>
+ <comment xml:lang="el">Nintendo DS ROM</comment>
+- <comment xml:lang="en_GB">Nintendo DS ROM</comment>
++ <comment xml:lang="en-GB">Nintendo DS ROM</comment>
+ <comment xml:lang="es">ROM de Nintendo DS</comment>
+ <comment xml:lang="eu">Nintendo DS-ko ROMa</comment>
+ <comment xml:lang="fi">Nintendo DS-ROM</comment>
+ <comment xml:lang="fo">Nintendo DS ROM</comment>
+ <comment xml:lang="fr">ROM Nintendo DS</comment>
++ <comment xml:lang="fur">ROM Nintendo DS</comment>
+ <comment xml:lang="ga">ROM Nintendo DS</comment>
+ <comment xml:lang="gl">ROM de Nintendo DS</comment>
+ <comment xml:lang="he">ROM של Nintendo</comment>
+@@ -9586,7 +9939,7 @@
+ <comment xml:lang="oc">ROM Nintendo DS</comment>
+ <comment xml:lang="pl">Plik ROM konsoli Nintendo DS</comment>
+ <comment xml:lang="pt">ROM Nintendo DS</comment>
+- <comment xml:lang="pt_BR">ROM de Nintendo DS</comment>
++ <comment xml:lang="pt-BR">ROM de Nintendo DS</comment>
+ <comment xml:lang="ro">ROM Nintendo DS</comment>
+ <comment xml:lang="ru">Nintendo DS ROM</comment>
+ <comment xml:lang="sk">ROM pre Nintendo DS</comment>
+@@ -9597,24 +9950,54 @@
+ <comment xml:lang="tr">Nintendo DS ROM</comment>
+ <comment xml:lang="uk">ППП Nintendo</comment>
+ <comment xml:lang="vi">ROM DS Nintendo</comment>
+- <comment xml:lang="zh_CN">任天堂 DS ROM</comment>
+- <comment xml:lang="zh_TW">任天堂 DS ROM</comment>
++ <comment xml:lang="zh-CN">任天堂 DS ROM</comment>
++ <comment xml:lang="zh-TW">任天堂 DS ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.nds"/>
+ </mime-type>
++ <mime-type type="application/x-nintendo-3ds-rom">
++ <comment>Nintendo 3DS ROM</comment>
++ <comment xml:lang="ca">ROM de Nintendo 3DS</comment>
++ <comment xml:lang="fi">Nintendo 3DS ROM</comment>
++ <comment xml:lang="it">ROM Nintendo 3DS</comment>
++ <comment xml:lang="pl">Plik ROM konsoli Nintendo 3DS</comment>
++ <comment xml:lang="pt-BR">ROM do Nintendo 3DS</comment>
++ <comment xml:lang="uk">ППП Nintendo 3DS</comment>
++ <generic-icon name="application-x-executable"/>
++ <glob pattern="*.3ds"/>
++ <glob pattern="*.cci"/>
++ <magic>
++ <match offset="256" type="string" value="NCSD"/>
++ </magic>
++ </mime-type>
++ <mime-type type="application/x-nintendo-3ds-executable">
++ <comment>Nintendo 3DS Executable</comment>
++ <comment xml:lang="ca">executable de Nintendo 3DS</comment>
++ <comment xml:lang="fi">Nintendo 3DS suoritettava</comment>
++ <comment xml:lang="it">Eseguibile Nintendo 3DS</comment>
++ <comment xml:lang="pl">Plik wykonywalny konsoli Nintendo 3DS</comment>
++ <comment xml:lang="uk">виконуваний файл Nintendo 3DS</comment>
++ <generic-icon name="application-x-executable"/>
++ <glob pattern="*.3dsx"/>
++ <magic priority="40">
++ <match offset="0" type="string" value="3DSX"/>
++ </magic>
++ </mime-type>
+ <mime-type type="application/x-pc-engine-rom">
+ <comment>PC Engine ROM</comment>
+ <comment xml:lang="ast">ROM de PC Engine</comment>
++ <comment xml:lang="bg">ROM — PC Engine</comment>
+ <comment xml:lang="ca">ROM de PC Engine</comment>
+ <comment xml:lang="cs">ROM pro PC Engine</comment>
+- <comment xml:lang="da">PC Engine ROM</comment>
++ <comment xml:lang="da">PC Engine-ROM</comment>
+ <comment xml:lang="de">PC Engine ROM</comment>
+ <comment xml:lang="el">PC Engine ROM</comment>
+- <comment xml:lang="en_GB">PC Engine ROM</comment>
++ <comment xml:lang="en-GB">PC Engine ROM</comment>
+ <comment xml:lang="es">ROM de PC Engine</comment>
+ <comment xml:lang="eu">PC Engine ROM</comment>
+ <comment xml:lang="fi">PC Engine ROM</comment>
+ <comment xml:lang="fr">ROM PC Engine</comment>
++ <comment xml:lang="fur">ROM PC Engine</comment>
+ <comment xml:lang="ga">ROM PC Engine</comment>
+ <comment xml:lang="gl">ROM de máquina de PC</comment>
+ <comment xml:lang="he">ROM של PC Engine</comment>
+@@ -9628,7 +10011,7 @@
+ <comment xml:lang="oc">ROM PC Engine</comment>
+ <comment xml:lang="pl">Plik ROM konsoli PC Engine</comment>
+ <comment xml:lang="pt">ROM PC Engine</comment>
+- <comment xml:lang="pt_BR">ROM de PC Engine</comment>
++ <comment xml:lang="pt-BR">ROM de PC Engine</comment>
+ <comment xml:lang="ru">PC Engine ROM</comment>
+ <comment xml:lang="sk">PC Engine ROM</comment>
+ <comment xml:lang="sl">Pomnilnik PC Engine ROM</comment>
+@@ -9636,24 +10019,27 @@
+ <comment xml:lang="sv">PC Engine-rom</comment>
+ <comment xml:lang="tr">PC Engine ROM</comment>
+ <comment xml:lang="uk">ROM для рушія на ПК</comment>
+- <comment xml:lang="zh_CN">PC Engine ROM</comment>
+- <comment xml:lang="zh_TW">PC Engine ROM</comment>
++ <comment xml:lang="zh-CN">PC Engine ROM</comment>
++ <comment xml:lang="zh-TW">PC Engine ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.pce"/>
+ </mime-type>
+ <mime-type type="application/x-wii-rom">
+ <comment>Wii disc image</comment>
++ <comment xml:lang="af">Wii-skyfbeeldlêer</comment>
+ <comment xml:lang="ast">Imaxe de discu de Wii</comment>
++ <comment xml:lang="bg">Диск — Wii</comment>
+ <comment xml:lang="ca">imatge de disc de Wii</comment>
+ <comment xml:lang="cs">obraz disku pro Wii</comment>
+ <comment xml:lang="da">Wii-diskaftryk</comment>
+ <comment xml:lang="de">Wii-Datenträgerabbild</comment>
+ <comment xml:lang="el">Εικόνα δίσκου Wii</comment>
+- <comment xml:lang="en_GB">Wii disc image</comment>
++ <comment xml:lang="en-GB">Wii disc image</comment>
+ <comment xml:lang="es">imagen de disco de Wii</comment>
+ <comment xml:lang="eu">Wii disko irudia</comment>
+ <comment xml:lang="fi">Wii-levykuva</comment>
+ <comment xml:lang="fr">image disque Wii</comment>
++ <comment xml:lang="fur">imagjin disc Wii</comment>
+ <comment xml:lang="ga">íomhá diosca Wii</comment>
+ <comment xml:lang="gl">Imaxe de disco de Wii</comment>
+ <comment xml:lang="he">דמות כונן Wii</comment>
+@@ -9667,7 +10053,7 @@
+ <comment xml:lang="oc">imatge disc Wii</comment>
+ <comment xml:lang="pl">Obraz płyty konsoli Wii</comment>
+ <comment xml:lang="pt">imagem de disco Wii</comment>
+- <comment xml:lang="pt_BR">Imagem de disco Wii</comment>
++ <comment xml:lang="pt-BR">Imagem de disco Wii</comment>
+ <comment xml:lang="ru">Образ диска Wii</comment>
+ <comment xml:lang="sk">Obraz disku Wii</comment>
+ <comment xml:lang="sl">Odtis diska Wii</comment>
+@@ -9675,29 +10061,33 @@
+ <comment xml:lang="sv">Wii-skivavbild</comment>
+ <comment xml:lang="tr">Wii disk görüntüsü</comment>
+ <comment xml:lang="uk">образ диска Wii</comment>
+- <comment xml:lang="zh_CN">Wii 光盘映像</comment>
+- <comment xml:lang="zh_TW">Wii 光碟映像檔</comment>
++ <comment xml:lang="zh-CN">Wii 光盘映像</comment>
++ <comment xml:lang="zh-TW">Wii 光碟映像檔</comment>
+ <alias type="application/x-wii-iso-image"/>
+ <alias type="application/x-wbfs"/>
+ <alias type="application/x-wia"/>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.iso"/>
+ <magic priority="50">
+- <match value="0x5d1c9ea3" type="big32" offset="24"/>
+- <match value="WBFS" type="string" offset="0"/>
+- <match value="WII\001DISC" type="string" offset="0"/>
++ <match offset="24" type="big32" value="0x5d1c9ea3"/>
++ <match offset="0" type="string" value="WBFS"/>
++ <match offset="0" type="string" value="WII\001DISC"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-wii-wad">
+ <comment>WiiWare bundle</comment>
++ <comment xml:lang="af">WiiWare-bundel</comment>
++ <comment xml:lang="bg">Програмен пакет — WiiWare</comment>
+ <comment xml:lang="ca">paquet de WiiWare</comment>
+ <comment xml:lang="cs">balíček pro WiiWare</comment>
+ <comment xml:lang="da">WiiWare-samling</comment>
+ <comment xml:lang="de">WiiWare-Paket</comment>
+- <comment xml:lang="en_GB">WiiWare bundle</comment>
++ <comment xml:lang="en-GB">WiiWare bundle</comment>
+ <comment xml:lang="es">conjunto de WiiWare</comment>
+ <comment xml:lang="eu">WiiWare bilduma</comment>
++ <comment xml:lang="fi">WiiWare-lisäpaketti</comment>
+ <comment xml:lang="fr">lot WiiWare</comment>
++ <comment xml:lang="fur">côl WiiWare</comment>
+ <comment xml:lang="ga">burla WiiWare</comment>
+ <comment xml:lang="he">מאגד WiiWare</comment>
+ <comment xml:lang="hr">WiiWare paket</comment>
+@@ -9706,39 +10096,42 @@
+ <comment xml:lang="id">Bundel WiiWare</comment>
+ <comment xml:lang="it">Bundle WiiWare</comment>
+ <comment xml:lang="kk">WiiWare дестесі</comment>
+- <comment xml:lang="ko">위-웨어 번들</comment>
++ <comment xml:lang="ko">WiiWare 번들</comment>
+ <comment xml:lang="oc">lòt WiiWare</comment>
+ <comment xml:lang="pl">Pakiet WiiWare</comment>
+ <comment xml:lang="pt">pacote WiiWare</comment>
+- <comment xml:lang="pt_BR">Pacote WiiWare</comment>
++ <comment xml:lang="pt-BR">Pacote WiiWare</comment>
+ <comment xml:lang="ru">Пакет WiiWare</comment>
+ <comment xml:lang="sk">Balík WiiWare</comment>
+ <comment xml:lang="sr">ВииВер комплет</comment>
+ <comment xml:lang="sv">WiiWare-paket</comment>
+ <comment xml:lang="tr">WiiWare paketi</comment>
+ <comment xml:lang="uk">пакет WiiWare</comment>
+- <comment xml:lang="zh_CN">WiiWare 捆绑包</comment>
+- <comment xml:lang="zh_TW">WiiWare 綁包</comment>
++ <comment xml:lang="zh-CN">WiiWare 捆绑包</comment>
++ <comment xml:lang="zh-TW">WiiWare 綁包</comment>
+ <generic-icon name="application-x-executable"/>
+ <magic priority="50">
+- <match value="Is\0\0" type="string" offset="4"/>
+- <match value="ib\0\0" type="string" offset="4"/>
+- <match value="Bk\0\0" type="string" offset="4"/>
++ <match type="string" value="Is\0\0" offset="4"/>
++ <match type="string" value="ib\0\0" offset="4"/>
++ <match type="string" value="Bk\0\0" offset="4"/>
+ </magic>
+ <glob pattern="*.wad"/>
+ </mime-type>
+ <mime-type type="application/x-gamecube-rom">
+ <comment>GameCube disc image</comment>
++ <comment xml:lang="af">GameCube-skyfbeeldlêer</comment>
++ <comment xml:lang="bg">Диск — GameCube</comment>
+ <comment xml:lang="ca">imatge de disc de GameCube</comment>
+ <comment xml:lang="cs">obraz disku pro GameCube</comment>
+ <comment xml:lang="da">GameCube-diskaftryk</comment>
+ <comment xml:lang="de">GameCube-Datenträgerabbild</comment>
+ <comment xml:lang="el">Εικόνα δίσκου GameCube</comment>
+- <comment xml:lang="en_GB">GameCube disc image</comment>
++ <comment xml:lang="en-GB">GameCube disc image</comment>
+ <comment xml:lang="es">imagen de disco de GameCube</comment>
+ <comment xml:lang="eu">GameCube disko irudia</comment>
+ <comment xml:lang="fi">GameCube-levykuva</comment>
+ <comment xml:lang="fr">image disque GameCube</comment>
++ <comment xml:lang="fur">imagjin disc GameCube</comment>
+ <comment xml:lang="ga">íomhá diosca GameCube</comment>
+ <comment xml:lang="gl">Imae de disco de GameCube</comment>
+ <comment xml:lang="he">דמות כונן GameCube</comment>
+@@ -9752,7 +10145,7 @@
+ <comment xml:lang="oc">imatge disc GameCube</comment>
+ <comment xml:lang="pl">Obraz płyty konsoli GameCube</comment>
+ <comment xml:lang="pt">imagem de disco GameCube</comment>
+- <comment xml:lang="pt_BR">Imagem de disco GameCube</comment>
++ <comment xml:lang="pt-BR">Imagem de disco GameCube</comment>
+ <comment xml:lang="ru">Образ диска GameCube</comment>
+ <comment xml:lang="sk">Obraz disku GameCube</comment>
+ <comment xml:lang="sl">Odtis diska GameCube</comment>
+@@ -9760,144 +10153,169 @@
+ <comment xml:lang="sv">GameCube-skivavbild</comment>
+ <comment xml:lang="tr">GameCube disk görüntüsü</comment>
+ <comment xml:lang="uk">образ диска GameCube</comment>
+- <comment xml:lang="zh_CN">GameCube 光盘映像</comment>
+- <comment xml:lang="zh_TW">GameCube 光碟映像檔</comment>
++ <comment xml:lang="zh-CN">GameCube 光盘映像</comment>
++ <comment xml:lang="zh-TW">GameCube 光碟映像檔</comment>
+ <generic-icon name="application-x-executable"/>
+ <alias type="application/x-gamecube-iso-image"/>
+ <glob pattern="*.iso"/>
+ <magic priority="50">
+- <match value="0xc2339f3d" type="big32" offset="28"/>
++ <match offset="28" type="big32" value="0xc2339f3d"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-thomson-cartridge-memo7">
+ <comment>Thomson Mémo7 cartridge</comment>
++ <comment xml:lang="bg">Касета — Thomson Mémo7</comment>
+ <comment xml:lang="ca">cartutx Thomson Mémo7</comment>
+ <comment xml:lang="cs">Kazeta Thomson Mémo7</comment>
++ <comment xml:lang="da">Thomson Mémo7-kassette</comment>
+ <comment xml:lang="de">Thomson-Mémo7-Steckmodul</comment>
+- <comment xml:lang="en_GB">Thomson Mémo7 cartridge</comment>
++ <comment xml:lang="en-GB">Thomson Mémo7 cartridge</comment>
+ <comment xml:lang="es">cartucho Mémo7 de Thomson</comment>
++ <comment xml:lang="eu">Thomson Mémo7 kartutxoa</comment>
++ <comment xml:lang="fi">Thomson Mémo7 -patruuna</comment>
+ <comment xml:lang="fr">cartouche Thomson Mémo7</comment>
++ <comment xml:lang="fur">cartucje Mémo7 Thomson</comment>
+ <comment xml:lang="ga">cartús Thomson Mémo7</comment>
+ <comment xml:lang="hr">Thomson Mémo7 uložak</comment>
+ <comment xml:lang="hu">Thomson Mémo7 kazetta</comment>
+- <comment xml:lang="id">cartridge Thomson Mémo7</comment>
++ <comment xml:lang="id">Cartridge Thomson Mémo7</comment>
+ <comment xml:lang="it">Cartuccia Thomson Mémo7</comment>
+ <comment xml:lang="kk">Thomson Mémo7 картриджі</comment>
+- <comment xml:lang="ko">톰슨 메모7 카트릿지</comment>
++ <comment xml:lang="ko">톰슨 Mémo7 카트리지</comment>
+ <comment xml:lang="pl">Kartridż Thomson Mémo7</comment>
+- <comment xml:lang="pt_BR">Cartucho Thomson Mémo7</comment>
++ <comment xml:lang="pt">cartucho Thomson Mémo7</comment>
++ <comment xml:lang="pt-BR">Cartucho Thomson Mémo7</comment>
+ <comment xml:lang="ru">Картридж Thomson Mémo7</comment>
+ <comment xml:lang="sk">Kazeta Thomson Mémo7</comment>
+ <comment xml:lang="sr">Томсон Мемо7 кертриџ</comment>
+ <comment xml:lang="sv">Thomson Mémo7-spelkassett</comment>
+ <comment xml:lang="tr">Thomson Mémo7 kartuşu</comment>
+ <comment xml:lang="uk">картридж Thomson Mémo7</comment>
+- <comment xml:lang="zh_CN">Thomson Mémo7 卡带</comment>
+- <comment xml:lang="zh_TW">Thomson Mémo7 卡匣</comment>
++ <comment xml:lang="zh-CN">Thomson Mémo7 卡带</comment>
++ <comment xml:lang="zh-TW">Thomson Mémo7 卡匣</comment>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.m7"/>
+ </mime-type>
+ <mime-type type="application/x-thomson-cassette">
+ <comment>Thomson cassette</comment>
++ <comment xml:lang="bg">Касета — Thomson</comment>
+ <comment xml:lang="ca">cinta de casset Thomson</comment>
+ <comment xml:lang="cs">Kazeta Thomson</comment>
++ <comment xml:lang="da">Thomson-kassette</comment>
+ <comment xml:lang="de">Thomson-Kassette</comment>
+- <comment xml:lang="en_GB">Thomson cassette</comment>
++ <comment xml:lang="en-GB">Thomson cassette</comment>
+ <comment xml:lang="es">casete de Thomson</comment>
++ <comment xml:lang="eu">Thomson kasetea</comment>
++ <comment xml:lang="fi">Thomson-kasetti</comment>
+ <comment xml:lang="fr">cassette Thomson</comment>
++ <comment xml:lang="fur">cassete Thomson</comment>
+ <comment xml:lang="ga">caiséad Thomson</comment>
+ <comment xml:lang="hr">Thomson kaseta</comment>
+ <comment xml:lang="hu">Thomson kazetta</comment>
+- <comment xml:lang="id">kaset Thomson</comment>
++ <comment xml:lang="id">Kaset Thomson</comment>
+ <comment xml:lang="it">Cassetta Thomson</comment>
+ <comment xml:lang="kk">Thomson кассетасы</comment>
+- <comment xml:lang="ko">톰슨 카셋트</comment>
++ <comment xml:lang="ko">톰슨 카세트</comment>
+ <comment xml:lang="pl">Kaseta Thomson</comment>
+- <comment xml:lang="pt_BR">Cassete Thomson</comment>
++ <comment xml:lang="pt">cassete Thomson</comment>
++ <comment xml:lang="pt-BR">Cassete Thomson</comment>
+ <comment xml:lang="ru">Кассета Thomson</comment>
+ <comment xml:lang="sk">Kazeta Thomson</comment>
+ <comment xml:lang="sr">Томсон касете</comment>
+ <comment xml:lang="sv">Thomson-kassett</comment>
+ <comment xml:lang="tr">Thomson kaset</comment>
+ <comment xml:lang="uk">касета Thomson</comment>
+- <comment xml:lang="zh_CN">Thomson 磁带</comment>
+- <comment xml:lang="zh_TW">Thomson 卡匣</comment>
++ <comment xml:lang="zh-CN">Thomson 磁带</comment>
++ <comment xml:lang="zh-TW">Thomson 卡匣</comment>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.k7"/>
+ </mime-type>
+ <mime-type type="application/x-hfe-floppy-image">
+ <comment>HFE floppy disk image</comment>
++ <comment xml:lang="bg">Диск — флопи, HFE</comment>
+ <comment xml:lang="ca">imatge de disquet HFE</comment>
+ <comment xml:lang="cs">Obraz diskety HFE</comment>
++ <comment xml:lang="da">HFE-floppydiskaftryk</comment>
+ <comment xml:lang="de">HFE-Diskettenabbild</comment>
+- <comment xml:lang="en_GB">HFE floppy disk image</comment>
++ <comment xml:lang="en-GB">HFE floppy disk image</comment>
+ <comment xml:lang="es">imagen de disquete HFE</comment>
++ <comment xml:lang="eu">HFE diskete disko irudia</comment>
++ <comment xml:lang="fi">HFE disketti-levykuva</comment>
+ <comment xml:lang="fr">image disquette HFE</comment>
++ <comment xml:lang="fur">imagjin disc floppy HFE</comment>
+ <comment xml:lang="ga">íomhá diosca fhlapaigh HFE</comment>
+ <comment xml:lang="hr">HFE slika diskete</comment>
+ <comment xml:lang="hu">HFE flopi lemezkép</comment>
+- <comment xml:lang="id">image disk floppy HFE</comment>
++ <comment xml:lang="id">Image disk floppy HFE</comment>
+ <comment xml:lang="it">Immagine disco floppy HFE</comment>
+ <comment xml:lang="kk">HFE иілгіш диск бейнесі</comment>
+ <comment xml:lang="ko">HFE 플로피 디스크 이미지</comment>
+ <comment xml:lang="pl">Obraz dyskietki HFE</comment>
+- <comment xml:lang="pt_BR">Imagem de disco flexível HFE</comment>
++ <comment xml:lang="pt">imagem de disquete HFE</comment>
++ <comment xml:lang="pt-BR">Imagem de disco flexível HFE</comment>
+ <comment xml:lang="ru">Образ гибкого диска HFE</comment>
+ <comment xml:lang="sk">Obraz pružného disku HFE</comment>
+ <comment xml:lang="sr">ХФЕ слика флопи диска</comment>
+ <comment xml:lang="sv">HFE-diskavbild</comment>
+- <comment xml:lang="tr">HFE disket kalıbı</comment>
++ <comment xml:lang="tr">HFE disket görüntüsü</comment>
+ <comment xml:lang="uk">образ дискети HFE</comment>
+- <comment xml:lang="zh_CN">HFE 软盘映像</comment>
+- <comment xml:lang="zh_TW">HFE 軟碟映像檔</comment>
++ <comment xml:lang="zh-CN">HFE 软盘映像</comment>
++ <comment xml:lang="zh-TW">HFE 軟碟映像檔</comment>
+ <acronym>HFE</acronym>
+ <expanded-acronym>HxC Floppy Emulator</expanded-acronym>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.hfe"/>
+ <magic>
+- <match value="HXCPICFE" type="string" offset="0"/>
++ <match offset="0" type="string" value="HXCPICFE"/>
+ </magic>
+ <alias type="application/x-hfe-file"/>
+ </mime-type>
+ <mime-type type="application/x-thomson-sap-image">
+ <comment>SAP Thomson floppy disk image</comment>
++ <comment xml:lang="bg">Диск — флопи, SAP Thomson</comment>
+ <comment xml:lang="ca">imatge de disquet SAP Thomson</comment>
+ <comment xml:lang="cs">Obraz diskety SAP Thomson</comment>
++ <comment xml:lang="da">SAP Thomson-floppydiskaftryk</comment>
+ <comment xml:lang="de">SAP-Thomson-Diskettenabbild</comment>
+- <comment xml:lang="en_GB">SAP Thomson floppy disk image</comment>
++ <comment xml:lang="en-GB">SAP Thomson floppy disk image</comment>
+ <comment xml:lang="es">imagen de disquete SAP de Thomson</comment>
++ <comment xml:lang="eu">SAP Thomson diskete disko irudia</comment>
++ <comment xml:lang="fi">SAP Thomson disketti-levykuva</comment>
+ <comment xml:lang="fr">image disquette SAP Thomson</comment>
++ <comment xml:lang="fur">imagjin disc floppy SAP Thomson</comment>
+ <comment xml:lang="ga">íomhá diosca fhlapaigh SAP Thomson</comment>
+ <comment xml:lang="hr">SAP Thomson slika diskete</comment>
+ <comment xml:lang="hu">SAP Thomson flopi lemezkép</comment>
+- <comment xml:lang="id">image disk floppy SAP Thomson</comment>
++ <comment xml:lang="id">Image disk floppy SAP Thomson</comment>
+ <comment xml:lang="it">Immagine disco floppy Thomson SAP</comment>
+ <comment xml:lang="kk">SAP Thomson иілгіш диск бейнесі</comment>
+ <comment xml:lang="ko">SAP 톰슨 플로피 디스크 이미지</comment>
+ <comment xml:lang="pl">Obraz dyskietki SAP Thomson</comment>
+- <comment xml:lang="pt_BR">Imagem de disco flexível SAP Thomson</comment>
++ <comment xml:lang="pt">imagem de disquete SAP Thomson</comment>
++ <comment xml:lang="pt-BR">Imagem de disco flexível SAP Thomson</comment>
+ <comment xml:lang="ru">Образ гибкого диска SAP Thomson</comment>
+ <comment xml:lang="sk">Obraz pružného disku SAP Thomson</comment>
+ <comment xml:lang="sr">САП Томсон слика флопи диска</comment>
+ <comment xml:lang="sv">SAP Thomson-diskavbild</comment>
+- <comment xml:lang="tr">SAP Thomson disket kalıbı</comment>
++ <comment xml:lang="tr">SAP Thomson disket görüntüsü</comment>
+ <comment xml:lang="uk">образ дискети Thomson SAP</comment>
+- <comment xml:lang="zh_CN">SAP Thomson 软盘映像</comment>
+- <comment xml:lang="zh_TW">SAP Thomson 軟碟映像檔</comment>
++ <comment xml:lang="zh-CN">SAP Thomson 软盘映像</comment>
++ <comment xml:lang="zh-TW">SAP Thomson 軟碟映像檔</comment>
+ <acronym>SAP</acronym>
+ <expanded-acronym>Système d'Archivage Pukall</expanded-acronym>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.sap"/>
+ <magic>
+- <match value="SYSTEME D'ARCHIVAGE PUKALL S.A.P. (c) Alexandre PUKALL Avril 1998" type="string" offset="1"/>
++ <match offset="1" type="string" value="SYSTEME D'ARCHIVAGE PUKALL S.A.P. (c) Alexandre PUKALL Avril 1998"/>
+ </magic>
+ <alias type="application/x-sap-file"/>
+ </mime-type>
+ <mime-type type="application/vnd.debian.binary-package">
+ <comment>Debian package</comment>
++ <comment xml:lang="af">Debian-pakket</comment>
+ <comment xml:lang="ar">حزمة ديبيان</comment>
+ <comment xml:lang="az">Debian paketi</comment>
+- <comment xml:lang="be@latin">Pakunak Debian</comment>
++ <comment xml:lang="be-Latn">Pakunak Debian</comment>
+ <comment xml:lang="bg">Пакет — Debian</comment>
+ <comment xml:lang="ca">paquet Debian</comment>
+ <comment xml:lang="cs">balíček Debianu</comment>
+@@ -9905,13 +10323,14 @@
+ <comment xml:lang="da">Debianpakke</comment>
+ <comment xml:lang="de">Debian-Paket</comment>
+ <comment xml:lang="el">Πακέτο Debian</comment>
+- <comment xml:lang="en_GB">Debian package</comment>
++ <comment xml:lang="en-GB">Debian package</comment>
+ <comment xml:lang="eo">Debian-pakaĵo</comment>
+ <comment xml:lang="es">paquete de Debian</comment>
+ <comment xml:lang="eu">Debian paketea</comment>
+ <comment xml:lang="fi">Debian-paketti</comment>
+ <comment xml:lang="fo">Debian pakki</comment>
+ <comment xml:lang="fr">paquet Debian</comment>
++ <comment xml:lang="fur">pachet Debian</comment>
+ <comment xml:lang="ga">pacáiste Debian</comment>
+ <comment xml:lang="gl">paquete de Debian</comment>
+ <comment xml:lang="he">חבילת דביאן</comment>
+@@ -9933,7 +10352,7 @@
+ <comment xml:lang="oc">paquet Debian</comment>
+ <comment xml:lang="pl">Pakiet Debiana</comment>
+ <comment xml:lang="pt">pacote Debian</comment>
+- <comment xml:lang="pt_BR">Pacote Debian</comment>
++ <comment xml:lang="pt-BR">Pacote Debian</comment>
+ <comment xml:lang="ro">Pachet Debian</comment>
+ <comment xml:lang="ru">Пакет Debian</comment>
+ <comment xml:lang="sk">Balíček Debianu</comment>
+@@ -9944,90 +10363,78 @@
+ <comment xml:lang="tr">Debian paketi</comment>
+ <comment xml:lang="uk">пакунок Debian</comment>
+ <comment xml:lang="vi">Gói Debian</comment>
+- <comment xml:lang="zh_CN">Debian 软件包</comment>
+- <comment xml:lang="zh_TW">Debian 軟體包</comment>
++ <comment xml:lang="zh-CN">Debian 软件包</comment>
++ <comment xml:lang="zh-TW">Debian 軟體包</comment>
+ <alias type="application/x-deb"/>
+ <alias type="application/x-debian-package"/>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="50">
+- <match value="!&lt;arch&gt;" type="string" offset="0">
+- <match value="debian" type="string" offset="8"/>
++ <match type="string" value="!&lt;arch&gt;" offset="0">
++ <match type="string" value="debian" offset="8"/>
+ </match>
+ </magic>
+ <glob pattern="*.deb"/>
+ <glob pattern="*.udeb"/>
+ </mime-type>
+ <mime-type type="application/x-designer">
+- <comment>Qt Designer file</comment>
+- <comment xml:lang="ar">ملف Qt Designer</comment>
+- <comment xml:lang="be@latin">Fajł Qt Designer</comment>
+- <comment xml:lang="bg">Файл — Qt Designer</comment>
+- <comment xml:lang="ca">fitxer de Qt Designer</comment>
+- <comment xml:lang="cs">soubor Qt Designer</comment>
+- <comment xml:lang="da">Qt Designer-fil</comment>
+- <comment xml:lang="de">Qt-Designer-Datei</comment>
+- <comment xml:lang="el">Αρχείο Qt Designer</comment>
+- <comment xml:lang="en_GB">Qt Designer file</comment>
+- <comment xml:lang="eo">dosiero de Qt Designer</comment>
+- <comment xml:lang="es">archivo de Qt Designer</comment>
+- <comment xml:lang="eu">Qt Designer Fitxategia</comment>
+- <comment xml:lang="fi">Qt Designer -tiedosto</comment>
+- <comment xml:lang="fo">Qt Designer fíla</comment>
+- <comment xml:lang="fr">fichier Qt Designer</comment>
+- <comment xml:lang="ga">comhad Qt Designer</comment>
+- <comment xml:lang="gl">ficheiro de Qt Designer</comment>
+- <comment xml:lang="he">קובץ של Qt Designer</comment>
+- <comment xml:lang="hr">Qt Designer datoteka</comment>
+- <comment xml:lang="hu">Qt Designer-fájl</comment>
+- <comment xml:lang="ia">File Qt Designer</comment>
+- <comment xml:lang="id">Berkas Qt Designer</comment>
+- <comment xml:lang="it">File Qt Designer</comment>
+- <comment xml:lang="ja">Qt Designer ファイル</comment>
+- <comment xml:lang="kk">Qt Designer файлы</comment>
+- <comment xml:lang="ko">Qt 디자이너 파일</comment>
+- <comment xml:lang="lt">Qt Designer failas</comment>
+- <comment xml:lang="lv">Qt Designer datne</comment>
+- <comment xml:lang="ms">Fail Qt Designer</comment>
+- <comment xml:lang="nb">Qt Designer-fil</comment>
+- <comment xml:lang="nl">Qt Designer-bestand</comment>
+- <comment xml:lang="nn">Qt Designer-fil</comment>
+- <comment xml:lang="oc">fichièr Qt Designer</comment>
+- <comment xml:lang="pl">Plik Qt Designer</comment>
+- <comment xml:lang="pt">ficheiro do Qt Designer</comment>
+- <comment xml:lang="pt_BR">Arquivo do Qt Designer</comment>
+- <comment xml:lang="ro">Fișier Qt Designer</comment>
+- <comment xml:lang="ru">Файл Qt Designer</comment>
+- <comment xml:lang="sk">Súbor Qt Designer</comment>
+- <comment xml:lang="sl">Datoteka Qt Designer</comment>
+- <comment xml:lang="sq">File Qt Designer</comment>
+- <comment xml:lang="sr">датотека Кут дизајнера</comment>
+- <comment xml:lang="sv">Qt Designer-fil</comment>
+- <comment xml:lang="tr">Qt Tasarımcı dosyası</comment>
+- <comment xml:lang="uk">файл програми Qt-дизайнер</comment>
+- <comment xml:lang="vi">Tập tin thiết kế Qt Designer</comment>
+- <comment xml:lang="zh_CN">Qt Designer 文件</comment>
+- <comment xml:lang="zh_TW">Qt Designer 檔案</comment>
++ <comment>Qt Designer interface document</comment>
++ <comment xml:lang="bg">Документ — интерфейс, Qt Designer</comment>
++ <comment xml:lang="ca">document d'interfície Qt Designer</comment>
++ <comment xml:lang="da">Qt Designer-brugerflade-dokument</comment>
++ <comment xml:lang="de">Qt-Designer-Oberflächendokument</comment>
++ <comment xml:lang="en-GB">Qt Designer interface document</comment>
++ <comment xml:lang="es">documento de interfaz de Qt Designer</comment>
++ <comment xml:lang="eu">Qt Designer interfaze dokumentua</comment>
++ <comment xml:lang="fi">Qt Designer -käyttöliittymän asiakirja</comment>
++ <comment xml:lang="fr">document d'interface Qt Designer</comment>
++ <comment xml:lang="hr">Qt Designer dokument sučelja</comment>
++ <comment xml:lang="hu">Qt Designer felületleíró dokumentum</comment>
++ <comment xml:lang="id">Dokumen antarmuka Qt Designer</comment>
++ <comment xml:lang="it">Documento interfaccia Qt Designer</comment>
++ <comment xml:lang="kk">Qt Designer интерфейс құжаты</comment>
++ <comment xml:lang="ko">Qt 디자이너 인터페이스 문서</comment>
++ <comment xml:lang="pl">Dokument interfejsu Qt Designer</comment>
++ <comment xml:lang="pt">documento de interface Qt Designer</comment>
++ <comment xml:lang="pt-BR">Documento de interface do Qt Designer</comment>
++ <comment xml:lang="ru">Документ интерфейса Qt Designer</comment>
++ <comment xml:lang="sv">Qt Designer-gränssnittsdokument</comment>
++ <comment xml:lang="tr">Qt Designer arayüz belgesi</comment>
++ <comment xml:lang="uk">документ інтерфейсу Qt Designer</comment>
++ <comment xml:lang="zh-CN">Qt Designer 界面文档</comment>
++ <comment xml:lang="zh-TW">Qt Designer 介面文件</comment>
+ <generic-icon name="x-office-document"/>
+ <sub-class-of type="application/xml"/>
+ <magic>
+- <match value="&lt;ui " type="string" offset="0:256"/>
+- <match value="&lt;UI " type="string" offset="0:256"/>
++ <match type="string" value="&lt;ui " offset="0:256"/>
++ <match type="string" value="&lt;UI " offset="0:256"/>
+ </magic>
+ <glob pattern="*.ui"/>
+ </mime-type>
++ <mime-type type="text/x-kaitai-struct">
++ <comment>Kaitai Struct definition file</comment>
++ <comment xml:lang="ca">fitxer de definicions Kaitai Struct</comment>
++ <comment xml:lang="fi">Kaitai Struct määritystiedosto</comment>
++ <comment xml:lang="it">File definizione Kaitai Struct</comment>
++ <comment xml:lang="pl">Plik definicji Kaitai Struct</comment>
++ <comment xml:lang="uk">файл визначень Kaitai Struct</comment>
++ <sub-class-of type="application/x-yaml"/>
++ <glob pattern="*.ksy"/>
++ </mime-type>
+ <mime-type type="text/x-qml">
+ <comment>Qt Markup Language file</comment>
+- <comment xml:lang="bg">Файл — Qt Markup</comment>
++ <comment xml:lang="af">Qt Markup Language-lêer</comment>
++ <comment xml:lang="bg">Интерфейс — Qt Markup</comment>
+ <comment xml:lang="ca">fitxer de llenguatge de marcadors Qt</comment>
+ <comment xml:lang="cs">soubor Qt Markup Language</comment>
+ <comment xml:lang="da">Qt Markup Language-fil</comment>
+ <comment xml:lang="de">Qt-Auszeichnungssprachendatei</comment>
+ <comment xml:lang="el">Αρχείο Qt Markup Language</comment>
+- <comment xml:lang="en_GB">Qt Markup Language file</comment>
++ <comment xml:lang="en-GB">Qt Markup Language file</comment>
+ <comment xml:lang="es">archivo de lenguaje de marcado Qt</comment>
+ <comment xml:lang="eu">Qt Markup lengoai fitxategia</comment>
+ <comment xml:lang="fi">QML-tiedosto</comment>
+ <comment xml:lang="fr">fichier Qt Markup Language</comment>
++ <comment xml:lang="fur">file Qt Markup Language</comment>
+ <comment xml:lang="ga">comhad teanga mharcála Qt</comment>
+ <comment xml:lang="gl">ficheiro de linguaxe de marcado Qt</comment>
+ <comment xml:lang="he">קובץ שפת סימון של Qt</comment>
+@@ -10044,7 +10451,7 @@
+ <comment xml:lang="oc">fichièr Qt Markup Language</comment>
+ <comment xml:lang="pl">Plik języka znaczników Qt</comment>
+ <comment xml:lang="pt">ficheiro de linguagem Qt Markup</comment>
+- <comment xml:lang="pt_BR">Arquivo de Qt Markup Language</comment>
++ <comment xml:lang="pt-BR">Arquivo de Qt Markup Language</comment>
+ <comment xml:lang="ru">Файл Qt Markup Language</comment>
+ <comment xml:lang="sk">Súbor značkovacieho jazyka Qt</comment>
+ <comment xml:lang="sl">Datoteka označevalnega jezika Qt</comment>
+@@ -10052,15 +10459,15 @@
+ <comment xml:lang="sv">Qt-märkspråksfil</comment>
+ <comment xml:lang="tr">Qt İşaretleme Dili dosyası</comment>
+ <comment xml:lang="uk">файл мови розмітки Qt</comment>
+- <comment xml:lang="zh_CN">Qt Markup Language 文件</comment>
+- <comment xml:lang="zh_TW">Qt 標記語言檔</comment>
++ <comment xml:lang="zh-CN">Qt Markup Language 文件</comment>
++ <comment xml:lang="zh-TW">Qt 標記語言檔</comment>
+ <magic priority="80">
+- <match value="/bin/env qml" type="string" offset="2:16"/>
+- <match value="import Qt" type="string" offset="0:3000">
+- <match value="{" type="string" offset="9:3009"/>
++ <match type="string" value="/bin/env qml" offset="2:16"/>
++ <match type="string" value="import Qt" offset="0:3000">
++ <match type="string" value="{" offset="9:3009"/>
+ </match>
+- <match value="import Qml" type="string" offset="0:3000">
+- <match value="{" type="string" offset="9:3009"/>
++ <match type="string" value="import Qml" offset="0:3000">
++ <match type="string" value="{" offset="9:3009"/>
+ </match>
+ </magic>
+ <glob pattern="*.qml"/>
+@@ -10070,24 +10477,25 @@
+ <mime-type type="application/x-desktop">
+ <comment>desktop configuration file</comment>
+ <comment xml:lang="ar">ملف تضبيط سطح المكتب</comment>
+- <comment xml:lang="be@latin">kanfihuracyjny fajł asiarodździa</comment>
+- <comment xml:lang="bg">Файл с информация за работния плот</comment>
++ <comment xml:lang="be-Latn">kanfihuracyjny fajł asiarodździa</comment>
++ <comment xml:lang="bg">Информация за работния плот</comment>
+ <comment xml:lang="ca">fitxer de configuració d'escriptori</comment>
+ <comment xml:lang="cs">soubor nastavení pracovní plochy</comment>
+ <comment xml:lang="da">skrivebordskonfigurationsfil</comment>
+ <comment xml:lang="de">Desktop-Konfigurationsdatei</comment>
+ <comment xml:lang="el">Αρχείο ρυθμίσεων επιφάνειας εργασίας</comment>
+- <comment xml:lang="en_GB">desktop configuration file</comment>
++ <comment xml:lang="en-GB">desktop configuration file</comment>
+ <comment xml:lang="eo">dosiero de agordoj de labortablo</comment>
+ <comment xml:lang="es">archivo de configuración del escritorio</comment>
+ <comment xml:lang="eu">Mahaigainaren konfigurazio-fitxategia</comment>
+ <comment xml:lang="fi">työpöydän asetustiedosto</comment>
+ <comment xml:lang="fo">skriviborðssamansetingarfíla</comment>
+ <comment xml:lang="fr">fichier de configuration desktop</comment>
++ <comment xml:lang="fur">file di configurazion scritori</comment>
+ <comment xml:lang="ga">comhad cumraíochta deisce</comment>
+ <comment xml:lang="gl">ficheiro de configuración de escritorio</comment>
+ <comment xml:lang="he">קובץ הגדרות שולחן עבודה</comment>
+- <comment xml:lang="hr">Datoteka prečaca radne površine</comment>
++ <comment xml:lang="hr">datoteka podešavanja radne površine</comment>
+ <comment xml:lang="hu">asztalbeállító fájl</comment>
+ <comment xml:lang="ia">File de configuration de scriptorio</comment>
+ <comment xml:lang="id">berkas konfigurasi destop</comment>
+@@ -10104,7 +10512,7 @@
+ <comment xml:lang="oc">fichièr de configuracion desktop</comment>
+ <comment xml:lang="pl">Plik konfiguracji środowiska</comment>
+ <comment xml:lang="pt">ficheiro de configuração de área de trabalho</comment>
+- <comment xml:lang="pt_BR">Arquivo de configuração desktop</comment>
++ <comment xml:lang="pt-BR">Arquivo de configuração desktop</comment>
+ <comment xml:lang="ro">fișier de configurare al desktopului</comment>
+ <comment xml:lang="ru">Файл настроек рабочего стола</comment>
+ <comment xml:lang="sk">Súbor nastavení pracovnej plochy</comment>
+@@ -10112,19 +10520,19 @@
+ <comment xml:lang="sq">File konfigurimi desktop</comment>
+ <comment xml:lang="sr">датотека подешавања радне површи</comment>
+ <comment xml:lang="sv">skrivbordskonfigurationsfil</comment>
+- <comment xml:lang="tr">masa üstü yapılandırma dosyası</comment>
++ <comment xml:lang="tr">masaüstü yapılandırma dosyası</comment>
+ <comment xml:lang="uk">файл конфігурації стільниці</comment>
+ <comment xml:lang="vi">tập tin cấu hình môi trường</comment>
+- <comment xml:lang="zh_CN">桌面配置文件</comment>
+- <comment xml:lang="zh_TW">桌面組態檔</comment>
++ <comment xml:lang="zh-CN">桌面配置文件</comment>
++ <comment xml:lang="zh-TW">桌面組態檔</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-generic"/>
+ <magic priority="50">
+- <match value="[Desktop Entry]" type="string" offset="0:32"/>
+- <match value="[Desktop Action" type="string" offset="0"/>
+- <match value="[KDE Desktop Entry]" type="string" offset="0"/>
+- <match value="# Config File" type="string" offset="0"/>
+- <match value="# KDE Config File" type="string" offset="0"/>
++ <match type="string" value="[Desktop Entry]" offset="0:32"/>
++ <match type="string" value="[Desktop Action" offset="0"/>
++ <match type="string" value="[KDE Desktop Entry]" offset="0"/>
++ <match type="string" value="# Config File" offset="0"/>
++ <match type="string" value="# KDE Config File" offset="0"/>
+ </magic>
+ <glob pattern="*.desktop"/>
+ <glob pattern="*.kdelnk"/>
+@@ -10132,6 +10540,7 @@
+ </mime-type>
+ <mime-type type="application/x-fictionbook+xml">
+ <comment>FictionBook document</comment>
++ <comment xml:lang="af">FictionBook-dokument</comment>
+ <comment xml:lang="ar">مستند FictionBook</comment>
+ <comment xml:lang="ast">Documentu de FictionBook</comment>
+ <comment xml:lang="bg">Документ — FictionBook</comment>
+@@ -10140,13 +10549,14 @@
+ <comment xml:lang="da">FictionBook-dokument</comment>
+ <comment xml:lang="de">FictionBook-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο FictionBook</comment>
+- <comment xml:lang="en_GB">FictionBook document</comment>
++ <comment xml:lang="en-GB">FictionBook document</comment>
+ <comment xml:lang="eo">FictionBook-dokumento</comment>
+ <comment xml:lang="es">documento FictionBook</comment>
+ <comment xml:lang="eu">FictionBook dokumentua</comment>
+ <comment xml:lang="fi">FictionBook-asiakirja</comment>
+ <comment xml:lang="fo">FictionBook skjal</comment>
+ <comment xml:lang="fr">document FictionBook</comment>
++ <comment xml:lang="fur">document FictionBook</comment>
+ <comment xml:lang="ga">cáipéis FictionBook</comment>
+ <comment xml:lang="gl">documento de FictionBook</comment>
+ <comment xml:lang="he">מסמך FictionBook</comment>
+@@ -10165,7 +10575,7 @@
+ <comment xml:lang="oc">document FictionBook</comment>
+ <comment xml:lang="pl">Dokument FictionBook</comment>
+ <comment xml:lang="pt">documento FictionBook</comment>
+- <comment xml:lang="pt_BR">Documento FictionBook</comment>
++ <comment xml:lang="pt-BR">Documento FictionBook</comment>
+ <comment xml:lang="ro">Document FictionBook</comment>
+ <comment xml:lang="ru">Документ FictionBook</comment>
+ <comment xml:lang="sk">Dokument FictionBook</comment>
+@@ -10175,29 +10585,32 @@
+ <comment xml:lang="tr">FictionBook belgesi</comment>
+ <comment xml:lang="uk">документ FictionBook</comment>
+ <comment xml:lang="vi">Tài liệu FictionBook</comment>
+- <comment xml:lang="zh_CN">FictionBook 文档</comment>
+- <comment xml:lang="zh_TW">FictionBook 文件</comment>
++ <comment xml:lang="zh-CN">FictionBook 文档</comment>
++ <comment xml:lang="zh-TW">FictionBook 文件</comment>
+ <sub-class-of type="application/xml"/>
+ <glob pattern="*.fb2"/>
+ <magic priority="80">
+- <match value="&lt;FictionBook" type="string" offset="0:256"/>
++ <match type="string" value="&lt;FictionBook" offset="0:256"/>
+ </magic>
+ <alias type="application/x-fictionbook"/>
+ <root-XML namespaceURI="http://www.gribuser.ru/xml/fictionbook/2.0" localName="FictionBook"/>
+ </mime-type>
+ <mime-type type="application/x-zip-compressed-fb2">
+ <comment>Compressed FictionBook document</comment>
++ <comment xml:lang="af">Saamgepersde FictionBook-dokument</comment>
+ <comment xml:lang="ast">Documentu comprimíu de FictionBook</comment>
++ <comment xml:lang="bg">Документ — FictionBook, компресиран</comment>
+ <comment xml:lang="ca">document FictionBook amb compressió</comment>
+ <comment xml:lang="cs">komprimovaný dokument FictionBook</comment>
+ <comment xml:lang="da">Komprimeret FictionBook-dokument</comment>
+ <comment xml:lang="de">Komprimiertes FictionBook-Dokument</comment>
+ <comment xml:lang="el">Συμπιεσμένο έγγραφο FictionBook</comment>
+- <comment xml:lang="en_GB">Compressed FictionBook document</comment>
++ <comment xml:lang="en-GB">Compressed FictionBook document</comment>
+ <comment xml:lang="es">documento comprimido de FictionBook</comment>
+ <comment xml:lang="eu">Konprimitutako FictionBook dokumentua</comment>
+ <comment xml:lang="fi">Pakattu FictionBook-asiakirja</comment>
+ <comment xml:lang="fr">document FictionBook compressé</comment>
++ <comment xml:lang="fur">document FictionBook comprimût</comment>
+ <comment xml:lang="ga">cáipéis chomhbhrúite FictionBook</comment>
+ <comment xml:lang="gl">Documento de FictionBook comprimida</comment>
+ <comment xml:lang="he">מסמך FictionBook מכווץ</comment>
+@@ -10211,30 +10624,31 @@
+ <comment xml:lang="oc">document FictionBook compressat</comment>
+ <comment xml:lang="pl">Skompresowany dokument FictionBook</comment>
+ <comment xml:lang="pt">documento comprimido FictionBook</comment>
+- <comment xml:lang="pt_BR">Documento FictionBook comprimido</comment>
++ <comment xml:lang="pt-BR">Documento FictionBook comprimido</comment>
+ <comment xml:lang="ru">Сжатый документ FictionBook</comment>
+ <comment xml:lang="sk">Komprimovaný dokument FictionBook</comment>
+ <comment xml:lang="sl">Stisnjeni dokument FictionBook</comment>
+ <comment xml:lang="sr">запаковани документ Фикшон Књиге</comment>
+ <comment xml:lang="sv">Komprimerat FictionBook-dokument</comment>
+- <comment xml:lang="tr">Sıkıştırılmış KurguKitap belgesi</comment>
++ <comment xml:lang="tr">Sıkıştırılmış FictionBook belgesi</comment>
+ <comment xml:lang="uk">стиснений документ FictionBook</comment>
+- <comment xml:lang="zh_CN">压缩的 FictionBook 文档</comment>
+- <comment xml:lang="zh_TW">壓縮版 FictionBook 文件</comment>
++ <comment xml:lang="zh-CN">压缩的 FictionBook 文档</comment>
++ <comment xml:lang="zh-TW">壓縮版 FictionBook 文件</comment>
+ <sub-class-of type="application/zip"/>
+ <glob pattern="*.fb2.zip"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+-
+- <match value=".fb2" type="string" offset="30:256"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <!-- Okay, this is not ideal, but it should be good enough for normal cases -->
++ <match type="string" value=".fb2" offset="30:256"/>
+ </match>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-dia-diagram">
+ <comment>Dia diagram</comment>
++ <comment xml:lang="af">Dia-diagram</comment>
+ <comment xml:lang="ar">خطاطة Dia</comment>
+ <comment xml:lang="az">Dia diaqramı</comment>
+- <comment xml:lang="be@latin">Dyjahrama Dia</comment>
++ <comment xml:lang="be-Latn">Dyjahrama Dia</comment>
+ <comment xml:lang="bg">Диаграма — Dia</comment>
+ <comment xml:lang="ca">diagrama de Dia</comment>
+ <comment xml:lang="cs">diagram Dia</comment>
+@@ -10242,13 +10656,14 @@
+ <comment xml:lang="da">Dia-diagram</comment>
+ <comment xml:lang="de">Dia-Diagramm</comment>
+ <comment xml:lang="el">Διάγραμμα Dia</comment>
+- <comment xml:lang="en_GB">Dia diagram</comment>
++ <comment xml:lang="en-GB">Dia diagram</comment>
+ <comment xml:lang="eo">Dia-diagramo</comment>
+ <comment xml:lang="es">diagrama de Dia</comment>
+ <comment xml:lang="eu">Dia diagrama</comment>
+ <comment xml:lang="fi">Dia-kaavio</comment>
+ <comment xml:lang="fo">Dia ritmynd</comment>
+ <comment xml:lang="fr">diagramme Dia</comment>
++ <comment xml:lang="fur">diagram Dia</comment>
+ <comment xml:lang="ga">léaráid Dia</comment>
+ <comment xml:lang="gl">diagrama de Dia</comment>
+ <comment xml:lang="he">גרף של Dia</comment>
+@@ -10270,7 +10685,7 @@
+ <comment xml:lang="oc">diagrama Dia</comment>
+ <comment xml:lang="pl">Diagram Dia</comment>
+ <comment xml:lang="pt">diagrama Dia</comment>
+- <comment xml:lang="pt_BR">Diagrama do Dia</comment>
++ <comment xml:lang="pt-BR">Diagrama do Dia</comment>
+ <comment xml:lang="ro">Diagramă Dia</comment>
+ <comment xml:lang="ru">Диаграмма Dia</comment>
+ <comment xml:lang="sk">Diagram Dia</comment>
+@@ -10281,18 +10696,19 @@
+ <comment xml:lang="tr">Dia çizimi</comment>
+ <comment xml:lang="uk">діаграма Dia</comment>
+ <comment xml:lang="vi">Biểu đồ Dia</comment>
+- <comment xml:lang="zh_CN">Dia 图表</comment>
+- <comment xml:lang="zh_TW">Dia 圖表</comment>
++ <comment xml:lang="zh-CN">Dia 图表</comment>
++ <comment xml:lang="zh-TW">Dia 圖表</comment>
+ <generic-icon name="image-x-generic"/>
+ <sub-class-of type="application/xml"/>
+ <glob pattern="*.dia"/>
+ <magic priority="50">
+- <match value="&lt;dia:" type="string" offset="5:100"/>
++ <match offset="5:100" type="string" value="&lt;dia:"/>
+ </magic>
+ <root-XML namespaceURI="http://www.lysator.liu.se/~alla/dia/" localName="diagram"/>
+ </mime-type>
+ <mime-type type="application/x-dia-shape">
+ <comment>Dia shape</comment>
++ <comment xml:lang="af">Dia-vorm</comment>
+ <comment xml:lang="ar">شكل Dia</comment>
+ <comment xml:lang="bg">Фигура — Dia</comment>
+ <comment xml:lang="ca">forma de Dia</comment>
+@@ -10300,12 +10716,13 @@
+ <comment xml:lang="da">Dia-figur</comment>
+ <comment xml:lang="de">Dia-Form</comment>
+ <comment xml:lang="el">Σχήμα Dia</comment>
+- <comment xml:lang="en_GB">Dia shape</comment>
++ <comment xml:lang="en-GB">Dia shape</comment>
+ <comment xml:lang="es">forma de Dia</comment>
+ <comment xml:lang="eu">Dia-ren forma</comment>
+ <comment xml:lang="fi">Dia-muoto</comment>
+ <comment xml:lang="fo">Dia skapur</comment>
+ <comment xml:lang="fr">forme Dia</comment>
++ <comment xml:lang="fur">sagome Dia</comment>
+ <comment xml:lang="ga">cruth Dia</comment>
+ <comment xml:lang="gl">forma de Dia</comment>
+ <comment xml:lang="he">צורה של Dia</comment>
+@@ -10323,7 +10740,7 @@
+ <comment xml:lang="oc">forma Dia</comment>
+ <comment xml:lang="pl">Kształt Dia</comment>
+ <comment xml:lang="pt">forma Dia</comment>
+- <comment xml:lang="pt_BR">Formato Dia</comment>
++ <comment xml:lang="pt-BR">Formato Dia</comment>
+ <comment xml:lang="ro">Figură Dia</comment>
+ <comment xml:lang="ru">Фигура Dia</comment>
+ <comment xml:lang="sk">Tvar Dia</comment>
+@@ -10332,34 +10749,36 @@
+ <comment xml:lang="sv">Dia-figur</comment>
+ <comment xml:lang="tr">Dia şekli</comment>
+ <comment xml:lang="uk">форма Dia</comment>
+- <comment xml:lang="zh_CN">Dia 形状</comment>
+- <comment xml:lang="zh_TW">Dia 形狀</comment>
++ <comment xml:lang="zh-CN">Dia 形状</comment>
++ <comment xml:lang="zh-TW">Dia 形狀</comment>
+ <generic-icon name="image-x-generic"/>
+ <sub-class-of type="application/xml"/>
+ <glob pattern="*.shape"/>
+ <magic priority="50">
+- <match value="&lt;shape" type="string" offset="5:100"/>
++ <match offset="5:100" type="string" value="&lt;shape"/>
+ </magic>
+ <root-XML namespaceURI="http://www.daa.com.au/~james/dia-shape-ns" localName="shape"/>
+ </mime-type>
+ <mime-type type="application/x-dvi">
+ <comment>TeX DVI document</comment>
++ <comment xml:lang="af">TeX DVI-dokument</comment>
+ <comment xml:lang="ar">مستند TeX DVI</comment>
+ <comment xml:lang="ast">Documentu Tex DVI</comment>
+- <comment xml:lang="be@latin">Dakument TeX DVI</comment>
++ <comment xml:lang="be-Latn">Dakument TeX DVI</comment>
+ <comment xml:lang="bg">Документ — TeX DVI</comment>
+ <comment xml:lang="ca">document DVI de TeX</comment>
+ <comment xml:lang="cs">dokument TeX DVI</comment>
+ <comment xml:lang="da">TeX DVI-dokument</comment>
+ <comment xml:lang="de">TeX-DVI-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο TeX DVI</comment>
+- <comment xml:lang="en_GB">TeX DVI document</comment>
++ <comment xml:lang="en-GB">TeX DVI document</comment>
+ <comment xml:lang="eo">DVI-dokumento de TeX</comment>
+ <comment xml:lang="es">documento TeX DVI</comment>
+ <comment xml:lang="eu">TeX DVI dokumentua</comment>
+ <comment xml:lang="fi">TeX DVI -asiakirja</comment>
+ <comment xml:lang="fo">TeX DVI skjal</comment>
+ <comment xml:lang="fr">document TeX DVI</comment>
++ <comment xml:lang="fur">document DVI TeX</comment>
+ <comment xml:lang="ga">cáipéis DVI TeX</comment>
+ <comment xml:lang="gl">documento TeX DVI</comment>
+ <comment xml:lang="he">מסמך מסוג TeX DVI</comment>
+@@ -10380,7 +10799,7 @@
+ <comment xml:lang="oc">document TeX DVI</comment>
+ <comment xml:lang="pl">Dokument TeX DVI</comment>
+ <comment xml:lang="pt">documento TeX DVI</comment>
+- <comment xml:lang="pt_BR">Documento DVI TeX</comment>
++ <comment xml:lang="pt-BR">Documento DVI TeX</comment>
+ <comment xml:lang="ro">Document Tex DVI</comment>
+ <comment xml:lang="ru">Документ TeX DVI</comment>
+ <comment xml:lang="sk">Dokument TeX DVI</comment>
+@@ -10391,21 +10810,22 @@
+ <comment xml:lang="tr">TeX DVI belgesi</comment>
+ <comment xml:lang="uk">документ TeX DVI</comment>
+ <comment xml:lang="vi">Tài liệu DVI Tex</comment>
+- <comment xml:lang="zh_CN">TeX DVI 文档</comment>
+- <comment xml:lang="zh_TW">TeX DVI 文件</comment>
++ <comment xml:lang="zh-CN">TeX DVI 文档</comment>
++ <comment xml:lang="zh-TW">TeX DVI 文件</comment>
+ <acronym>DVI</acronym>
+ <expanded-acronym>Device independent file format</expanded-acronym>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="0x02f7" type="little16" offset="0"/>
++ <match type="little16" value="0x02f7" offset="0"/>
+ </magic>
+ <glob pattern="*.dvi"/>
+ </mime-type>
+ <mime-type type="application/x-e-theme">
+ <comment>Enlightenment theme</comment>
++ <comment xml:lang="af">Enlightenment-tema</comment>
+ <comment xml:lang="ar">سمة Enlightenment</comment>
+ <comment xml:lang="az">Enlightenment örtüyü</comment>
+- <comment xml:lang="be@latin">Matyŭ Enlightenment</comment>
++ <comment xml:lang="be-Latn">Matyŭ Enlightenment</comment>
+ <comment xml:lang="bg">Тема — Enlightenment</comment>
+ <comment xml:lang="ca">tema d'Enlightenment</comment>
+ <comment xml:lang="cs">motiv Enlightenment</comment>
+@@ -10413,13 +10833,14 @@
+ <comment xml:lang="da">Enlightenmenttema</comment>
+ <comment xml:lang="de">Enlightenment-Thema</comment>
+ <comment xml:lang="el">Θέμα Enlightenment</comment>
+- <comment xml:lang="en_GB">Enlightenment theme</comment>
++ <comment xml:lang="en-GB">Enlightenment theme</comment>
+ <comment xml:lang="eo">etoso de Enlightenment</comment>
+ <comment xml:lang="es">tema de Enlightenment</comment>
+ <comment xml:lang="eu">Enlightenment gaia</comment>
+ <comment xml:lang="fi">Enlightenment-teema</comment>
+ <comment xml:lang="fo">Enlightenment tema</comment>
+ <comment xml:lang="fr">thème Enlightenment</comment>
++ <comment xml:lang="fur">teme di Enlightenment</comment>
+ <comment xml:lang="ga">téama Enlightenment</comment>
+ <comment xml:lang="gl">tema de Enlightenment</comment>
+ <comment xml:lang="he">ערכת נושא של Enlightenment</comment>
+@@ -10441,7 +10862,7 @@
+ <comment xml:lang="oc">tèma Enlightenment</comment>
+ <comment xml:lang="pl">Motyw Enlightenment</comment>
+ <comment xml:lang="pt">tema Enlightenment</comment>
+- <comment xml:lang="pt_BR">Tema do Enlightenment</comment>
++ <comment xml:lang="pt-BR">Tema do Enlightenment</comment>
+ <comment xml:lang="ro">Temă Enlightenment</comment>
+ <comment xml:lang="ru">Тема Enlightenment</comment>
+ <comment xml:lang="sk">Motív Enlightenment</comment>
+@@ -10452,27 +10873,28 @@
+ <comment xml:lang="tr">Enlightenment teması</comment>
+ <comment xml:lang="uk">тема Enlightenment</comment>
+ <comment xml:lang="vi">Sắc thái Enlightenment</comment>
+- <comment xml:lang="zh_CN">Enlightenment 主题</comment>
+- <comment xml:lang="zh_TW">Enlightenment 佈景主題</comment>
++ <comment xml:lang="zh-CN">Enlightenment 主题</comment>
++ <comment xml:lang="zh-TW">Enlightenment 佈景主題</comment>
+ <glob pattern="*.etheme"/>
+ </mime-type>
+ <mime-type type="application/x-egon">
+ <comment>Egon Animator animation</comment>
+ <comment xml:lang="ar">تحريكة محرك Egon</comment>
+- <comment xml:lang="be@latin">Animacyja Egon Animator</comment>
++ <comment xml:lang="be-Latn">Animacyja Egon Animator</comment>
+ <comment xml:lang="bg">Анимация — Egon Animator</comment>
+ <comment xml:lang="ca">animació d'Egon Animator</comment>
+ <comment xml:lang="cs">animace Egon Animator</comment>
+ <comment xml:lang="da">Egon Animator-animation</comment>
+ <comment xml:lang="de">Egon-Animator-Animation</comment>
+ <comment xml:lang="el">Κινούμενο σχέδιο Egon Animator</comment>
+- <comment xml:lang="en_GB">Egon Animator animation</comment>
++ <comment xml:lang="en-GB">Egon Animator animation</comment>
+ <comment xml:lang="eo">animacio de Egon Animator</comment>
+ <comment xml:lang="es">animación de Egon Animator</comment>
+ <comment xml:lang="eu">Egon Animator-eko animazioa</comment>
+ <comment xml:lang="fi">Egon Animator -animaatio</comment>
+ <comment xml:lang="fo">Egon Animator teknimyndagerð</comment>
+ <comment xml:lang="fr">animation Egon Animator</comment>
++ <comment xml:lang="fur">animazion Egon Animator</comment>
+ <comment xml:lang="ga">beochan Egon Animator</comment>
+ <comment xml:lang="gl">animación de Egon Animator</comment>
+ <comment xml:lang="he">אנימצייה של Egon Animator</comment>
+@@ -10494,7 +10916,7 @@
+ <comment xml:lang="oc">animacion Egon Animator</comment>
+ <comment xml:lang="pl">Animacja Egon Animator</comment>
+ <comment xml:lang="pt">animação Egon Animator</comment>
+- <comment xml:lang="pt_BR">Animação do Egon Animator</comment>
++ <comment xml:lang="pt-BR">Animação do Egon Animator</comment>
+ <comment xml:lang="ro">Animație Egon Animator</comment>
+ <comment xml:lang="ru">Анимация Egon Animator</comment>
+ <comment xml:lang="sk">Animácia Egon Animator</comment>
+@@ -10505,28 +10927,30 @@
+ <comment xml:lang="tr">Egon Animator canlandırması</comment>
+ <comment xml:lang="uk">анімація Egon Animator</comment>
+ <comment xml:lang="vi">Hoạt ảnh Egon Animator</comment>
+- <comment xml:lang="zh_CN">Egon Animator 动画</comment>
+- <comment xml:lang="zh_TW">Egon Animator 動畫</comment>
++ <comment xml:lang="zh-CN">Egon Animator 动画</comment>
++ <comment xml:lang="zh-TW">Egon Animator 動畫</comment>
+ <generic-icon name="image-x-generic"/>
+ <glob pattern="*.egon"/>
+ </mime-type>
+ <mime-type type="application/x-executable">
+ <comment>executable</comment>
++ <comment xml:lang="af">uitvoerbaar</comment>
+ <comment xml:lang="ar">تنفيذي</comment>
+- <comment xml:lang="be@latin">vykonvalny fajł</comment>
++ <comment xml:lang="be-Latn">vykonvalny fajł</comment>
+ <comment xml:lang="bg">Изпълним файл</comment>
+ <comment xml:lang="ca">executable</comment>
+ <comment xml:lang="cs">spustitelný soubor</comment>
+ <comment xml:lang="da">kørbar</comment>
+ <comment xml:lang="de">Programm</comment>
+ <comment xml:lang="el">Εκτελέσιμο</comment>
+- <comment xml:lang="en_GB">executable</comment>
++ <comment xml:lang="en-GB">executable</comment>
+ <comment xml:lang="eo">plenumebla</comment>
+ <comment xml:lang="es">ejecutable</comment>
+ <comment xml:lang="eu">exekutagarria</comment>
+ <comment xml:lang="fi">suoritettava ohjelma</comment>
+ <comment xml:lang="fo">inningarfør</comment>
+ <comment xml:lang="fr">exécutable</comment>
++ <comment xml:lang="fur">eseguibil</comment>
+ <comment xml:lang="ga">comhad inrite</comment>
+ <comment xml:lang="gl">executábel</comment>
+ <comment xml:lang="he">קובץ הרצה</comment>
+@@ -10547,7 +10971,7 @@
+ <comment xml:lang="oc">executable</comment>
+ <comment xml:lang="pl">Program</comment>
+ <comment xml:lang="pt">executável</comment>
+- <comment xml:lang="pt_BR">Executável</comment>
++ <comment xml:lang="pt-BR">Executável</comment>
+ <comment xml:lang="ro">executabil</comment>
+ <comment xml:lang="ru">Исполняемый</comment>
+ <comment xml:lang="sk">Spustiteľný súbor</comment>
+@@ -10558,43 +10982,41 @@
+ <comment xml:lang="tr">çalıştırılabilir</comment>
+ <comment xml:lang="uk">виконуваний файл</comment>
+ <comment xml:lang="vi">thực hiện được</comment>
+- <comment xml:lang="zh_CN">可执行文件</comment>
+- <comment xml:lang="zh_TW">可執行檔</comment>
++ <comment xml:lang="zh-CN">可执行文件</comment>
++ <comment xml:lang="zh-TW">可執行檔</comment>
+ <generic-icon name="application-x-executable"/>
+ <magic priority="40">
+- <match value="\177ELF" type="string" offset="0">
+- <match value="1" type="byte" offset="5">
+- <match value="2" type="little16" offset="16"/>
+- </match>
++ <match type="string" value="\177ELF" offset="0">
++ <match type="byte" value="1" offset="5"/>
+ </match>
+- <match value="\177ELF" type="string" offset="0">
+- <match value="2" type="byte" offset="5">
+- <match value="2" type="big16" offset="16"/>
+- </match>
++ <match type="string" value="\177ELF" offset="0">
++ <match type="byte" value="2" offset="5"/>
+ </match>
+- <match value="MZ" type="string" offset="0"/>
+- <match value="0x521c" type="little16" offset="0"/>
+- <match value="0420" type="host16" offset="0"/>
+- <match value="0421" type="host16" offset="0"/>
+- <match value="0603" type="little16" offset="0"/>
++ <match type="string" value="MZ" offset="0"/>
++ <match type="little16" value="0x521c" offset="0"/>
++ <match type="host16" value="0420" offset="0"/>
++ <match type="host16" value="0421" offset="0"/>
++ <match type="little16" value="0603" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-fluid">
+ <comment>FLTK Fluid file</comment>
++ <comment xml:lang="af">FLTK Fluit-lêer</comment>
+ <comment xml:lang="ar">ملف FLTK Fluid</comment>
+- <comment xml:lang="be@latin">Fajł FLTK Fluid</comment>
++ <comment xml:lang="be-Latn">Fajł FLTK Fluid</comment>
+ <comment xml:lang="bg">Интерфейс — FLTK Fluid</comment>
+ <comment xml:lang="ca">fitxer FLTK Fluid</comment>
+ <comment xml:lang="cs">soubor FLTK Fluid</comment>
+ <comment xml:lang="da">FLTK Fluid-fil</comment>
+ <comment xml:lang="de">FLTK-Fluid-Datei</comment>
+ <comment xml:lang="el">Αρχείο FLTK Fluid</comment>
+- <comment xml:lang="en_GB">FLTK Fluid file</comment>
++ <comment xml:lang="en-GB">FLTK Fluid file</comment>
+ <comment xml:lang="es">archivo FLTK Fluid</comment>
+ <comment xml:lang="eu">FLTK Fluid fitxategia</comment>
+ <comment xml:lang="fi">FLTK Fluid -tiedosto</comment>
+ <comment xml:lang="fo">FLTK Fluid fíla</comment>
+ <comment xml:lang="fr">fichier Fluid FLTK</comment>
++ <comment xml:lang="fur">file FLTK Fluid</comment>
+ <comment xml:lang="ga">comhad FLTK Fluid</comment>
+ <comment xml:lang="gl">ficheiro FLTK Fluid</comment>
+ <comment xml:lang="he">קובץ FLTK Fluid</comment>
+@@ -10615,7 +11037,7 @@
+ <comment xml:lang="oc">fichièr Fluid FLTK</comment>
+ <comment xml:lang="pl">Plik Fluid FLTK</comment>
+ <comment xml:lang="pt">ficheiro FLTK Fluid</comment>
+- <comment xml:lang="pt_BR">Arquivo Fluid do FLTK</comment>
++ <comment xml:lang="pt-BR">Arquivo Fluid do FLTK</comment>
+ <comment xml:lang="ro">Fișier FLTK Fluid</comment>
+ <comment xml:lang="ru">Файл FLTK Fluid</comment>
+ <comment xml:lang="sk">Súbor FLTK Fluid</comment>
+@@ -10626,34 +11048,37 @@
+ <comment xml:lang="tr">FLTK Fluid dosyası</comment>
+ <comment xml:lang="uk">файл FLTK Fluid</comment>
+ <comment xml:lang="vi">Tập tin Fluid FLTK</comment>
+- <comment xml:lang="zh_CN">FLTK 流体文档</comment>
+- <comment xml:lang="zh_TW">FLTK Fluid 檔</comment>
++ <comment xml:lang="zh-CN">FLTK 流体文档</comment>
++ <comment xml:lang="zh-TW">FLTK Fluid 檔</comment>
+ <acronym>FLTK</acronym>
+ <expanded-acronym>Fast Light Toolkit</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="# data file for the Fltk" type="string" offset="0"/>
++ <match type="string" value="# data file for the Fltk" offset="0"/>
+ </magic>
+ <glob pattern="*.fl"/>
+ </mime-type>
+ <mime-type type="font/woff">
+ <comment>WOFF font</comment>
++ <comment xml:lang="af">WOFF-skriftipe</comment>
+ <comment xml:lang="ast">Fonte WOFF</comment>
++ <comment xml:lang="bg">Шрифт — WOFF</comment>
+ <comment xml:lang="ca">lletra WOFF</comment>
+ <comment xml:lang="cs">font WOFF</comment>
+ <comment xml:lang="da">WOFF-skrifttype</comment>
+ <comment xml:lang="de">WOFF-Schrift</comment>
+ <comment xml:lang="el">Γραμματοσειρά WOFF</comment>
+- <comment xml:lang="en_GB">WOFF font</comment>
++ <comment xml:lang="en-GB">WOFF font</comment>
+ <comment xml:lang="es">tipo de letra WOFF</comment>
+ <comment xml:lang="eu">WOFF letra-tipoa</comment>
+ <comment xml:lang="fi">WOFF-fontti</comment>
+ <comment xml:lang="fr">police WOFF</comment>
++ <comment xml:lang="fur">caratar WOFF</comment>
+ <comment xml:lang="ga">cló WOFF</comment>
+ <comment xml:lang="gl">Tipo de letra WOFF</comment>
+ <comment xml:lang="he">גופן WOFF</comment>
+- <comment xml:lang="hr">WOFF slovo</comment>
++ <comment xml:lang="hr">WOFF font</comment>
+ <comment xml:lang="hu">WOFF-betűkészlet</comment>
+ <comment xml:lang="ia">Typo de litteras WOFF</comment>
+ <comment xml:lang="id">Fonta WOFF</comment>
+@@ -10661,11 +11086,12 @@
+ <comment xml:lang="ja">WOFF フォント</comment>
+ <comment xml:lang="kk">WOFF қарібі</comment>
+ <comment xml:lang="ko">WOFF 글꼴</comment>
++ <comment xml:lang="lt">WOFF šriftas</comment>
+ <comment xml:lang="lv">WOFF fonts</comment>
+ <comment xml:lang="oc">poliça WOFF</comment>
+ <comment xml:lang="pl">Czcionka WOFF</comment>
+ <comment xml:lang="pt">letra WOFF</comment>
+- <comment xml:lang="pt_BR">Fonte WOFF</comment>
++ <comment xml:lang="pt-BR">Fonte WOFF</comment>
+ <comment xml:lang="ru">Шрифт WOFF</comment>
+ <comment xml:lang="sk">Písmo WOFF</comment>
+ <comment xml:lang="sl">Pisava WOFF</comment>
+@@ -10673,83 +11099,100 @@
+ <comment xml:lang="sv">WOFF-typsnitt</comment>
+ <comment xml:lang="tr">WOFF yazı tipi</comment>
+ <comment xml:lang="uk">шрифт WOFF</comment>
+- <comment xml:lang="zh_CN">WOFF 字体</comment>
+- <comment xml:lang="zh_TW">WOFF 字型</comment>
++ <comment xml:lang="zh-CN">WOFF 字体</comment>
++ <comment xml:lang="zh-TW">WOFF 字型</comment>
+ <acronym>WOFF</acronym>
+ <expanded-acronym>Web Open Font Format</expanded-acronym>
+ <generic-icon name="font-x-generic"/>
+ <magic priority="50">
+- <match value="0x774f4646" type="big32" offset="0"/>
++ <match type="big32" value="0x774f4646" offset="0"/>
+ </magic>
+ <glob pattern="*.woff"/>
+ <alias type="application/font-woff"/>
+ </mime-type>
+- <mime-type type="font/woff">
++ <mime-type type="font/woff2">
+ <comment>WOFF2 font</comment>
++ <comment xml:lang="af">WOFF2-skriftipe</comment>
+ <comment xml:lang="ast">Fonte WOFF2</comment>
++ <comment xml:lang="bg">Шрифт — WOFF2</comment>
+ <comment xml:lang="ca">lletra WOFF2</comment>
+ <comment xml:lang="cs">font WOFF2</comment>
++ <comment xml:lang="da">WOFF2-skrifttype</comment>
+ <comment xml:lang="de">WOFF2-Schrift</comment>
+- <comment xml:lang="en_GB">WOFF2 font</comment>
++ <comment xml:lang="en-GB">WOFF2 font</comment>
+ <comment xml:lang="es">tipo de letra WOFF2</comment>
++ <comment xml:lang="eu">WOFF2 letra-tipoa</comment>
+ <comment xml:lang="fi">WOFF2-fontti</comment>
+- <comment xml:lang="hr">WOFF2 slovo</comment>
++ <comment xml:lang="fr">police WOFF2</comment>
++ <comment xml:lang="fur">caratar WOFF2</comment>
++ <comment xml:lang="ga">cló WOFF2</comment>
++ <comment xml:lang="hr">WOFF2 font</comment>
+ <comment xml:lang="hu">WOFF2 betűkészlet</comment>
+ <comment xml:lang="id">Fonta WOFF2</comment>
+ <comment xml:lang="it">Carattere WOFF2</comment>
+ <comment xml:lang="kk">WOFF2 қарібі</comment>
+ <comment xml:lang="ko">WOFF2 글꼴</comment>
++ <comment xml:lang="lt">WOFF2 šriftas</comment>
+ <comment xml:lang="pl">Czcionka WOFF2</comment>
+- <comment xml:lang="pt_BR">Fonte WOFF2</comment>
++ <comment xml:lang="pt">letra WOFF2</comment>
++ <comment xml:lang="pt-BR">Fonte WOFF2</comment>
+ <comment xml:lang="ru">Шрифт WOFF2</comment>
+ <comment xml:lang="sk">Písmo WOFF2</comment>
++ <comment xml:lang="sl">Pisava WOFF2</comment>
+ <comment xml:lang="sv">WOFF2-typsnitt</comment>
++ <comment xml:lang="tr">WOFF2 yazı tipi</comment>
+ <comment xml:lang="uk">шрифт WOFF2</comment>
+- <comment xml:lang="zh_CN">WOFF2 字体</comment>
+- <comment xml:lang="zh_TW">WOFF2 字型</comment>
++ <comment xml:lang="zh-CN">WOFF2 字体</comment>
++ <comment xml:lang="zh-TW">WOFF2 字型</comment>
+ <acronym>WOFF2</acronym>
+ <expanded-acronym>Web Open Font Format 2.0</expanded-acronym>
+ <generic-icon name="font-x-generic"/>
+ <magic priority="50">
+- <match value="0x774f4632" type="big32" offset="0"/>
++ <match type="big32" value="0x774f4632" offset="0"/>
+ </magic>
+ <glob pattern="*.woff2"/>
+ </mime-type>
+ <mime-type type="application/x-font-type1">
+ <comment>PostScript type-1 font</comment>
++ <comment xml:lang="af">PostScript tipe 1-skriftipe</comment>
++ <comment xml:lang="bg">Шрифт — PostScript type-1</comment>
+ <comment xml:lang="ca">lletra type-1 de PostScript</comment>
+ <comment xml:lang="cs">font PostScript type-1</comment>
++ <comment xml:lang="da">PostScript type-1-skrifttype</comment>
+ <comment xml:lang="de">PostScript-Typ-1-Schrift</comment>
+- <comment xml:lang="en_GB">PostScript type-1 font</comment>
++ <comment xml:lang="en-GB">PostScript type-1 font</comment>
+ <comment xml:lang="es">tipo de letra PostScript Type-1</comment>
+ <comment xml:lang="eu">PostScript type-1 letra-tipoa</comment>
++ <comment xml:lang="fi">PostScript type-1 -fontti</comment>
+ <comment xml:lang="fr">police PostScript Type 1</comment>
++ <comment xml:lang="fur">caratar PostScript type-1</comment>
+ <comment xml:lang="ga">cló PostScript type-1</comment>
+- <comment xml:lang="hr">PostScript type-1 slovo</comment>
++ <comment xml:lang="hr">PostScript type-1 font</comment>
+ <comment xml:lang="hu">PostScript type-1 betűkészlet</comment>
+- <comment xml:lang="id">fonta PostScript type-1</comment>
++ <comment xml:lang="id">Fonta PostScript type-1</comment>
+ <comment xml:lang="it">Carattere PostScript type-1</comment>
+ <comment xml:lang="kk">PostScript type-1 қарібі</comment>
+ <comment xml:lang="ko">PostScript Type-1 글꼴</comment>
+ <comment xml:lang="pl">Czcionka PostScript Type-1</comment>
+- <comment xml:lang="pt_BR">Fonte PostScript tipo-1</comment>
++ <comment xml:lang="pt">letra PostScript Tipo 1</comment>
++ <comment xml:lang="pt-BR">Fonte PostScript tipo-1</comment>
+ <comment xml:lang="ru">Шрифт PostScript Type-1</comment>
+ <comment xml:lang="sk">Písmo PostScript typu 1</comment>
+ <comment xml:lang="sr">слова Постскрипта врсте-1</comment>
+ <comment xml:lang="sv">PostScript type-1-typsnitt</comment>
+ <comment xml:lang="tr">PostScript tip-1 yazı tipi</comment>
+ <comment xml:lang="uk">шрифт type-1 PostScript</comment>
+- <comment xml:lang="zh_CN">PostScript type-1 字体</comment>
+- <comment xml:lang="zh_TW">PostScript type-1 字型</comment>
++ <comment xml:lang="zh-CN">PostScript type-1 字体</comment>
++ <comment xml:lang="zh-TW">PostScript type-1 字型</comment>
+ <sub-class-of type="application/postscript"/>
+ <generic-icon name="font-x-generic"/>
+ <magic priority="60">
+- <match value="LWFN" type="string" offset="0"/>
+- <match value="LWFN" type="string" offset="65"/>
+- <match value="%!PS-AdobeFont-1." type="string" offset="0"/>
+- <match value="%!PS-AdobeFont-1." type="string" offset="6"/>
+- <match value="%!FontType1-1." type="string" offset="0"/>
+- <match value="%!FontType1-1." type="string" offset="6"/>
++ <match type="string" value="LWFN" offset="0"/>
++ <match type="string" value="LWFN" offset="65"/>
++ <match type="string" value="%!PS-AdobeFont-1." offset="0"/>
++ <match type="string" value="%!PS-AdobeFont-1." offset="6"/>
++ <match type="string" value="%!FontType1-1." offset="0"/>
++ <match type="string" value="%!FontType1-1." offset="6"/>
+ </magic>
+ <glob pattern="*.pfa"/>
+ <glob pattern="*.pfb"/>
+@@ -10757,9 +11200,10 @@
+ </mime-type>
+ <mime-type type="application/x-font-afm">
+ <comment>Adobe font metrics</comment>
++ <comment xml:lang="af">Adobe skriftipe-afmetings</comment>
+ <comment xml:lang="ar">مقاييس خط أدوبي</comment>
+ <comment xml:lang="az">Adobe yazı növü metrikləri</comment>
+- <comment xml:lang="be@latin">Metryka šryftu Adobe</comment>
++ <comment xml:lang="be-Latn">Metryka šryftu Adobe</comment>
+ <comment xml:lang="bg">Шрифтова метрика — Adobe</comment>
+ <comment xml:lang="ca">mètrica de lletra d'Adobe</comment>
+ <comment xml:lang="cs">metrika fontu Adobe</comment>
+@@ -10767,16 +11211,17 @@
+ <comment xml:lang="da">Adobe skrifttypefil</comment>
+ <comment xml:lang="de">Adobe-Schriftmetriken</comment>
+ <comment xml:lang="el">Μετρικά γραμματοσειράς Adobe</comment>
+- <comment xml:lang="en_GB">Adobe font metrics</comment>
++ <comment xml:lang="en-GB">Adobe font metrics</comment>
+ <comment xml:lang="eo">metrikoj de Adobe-tiparo</comment>
+ <comment xml:lang="es">métricas tipográficas de Adobe</comment>
+ <comment xml:lang="eu">Adobe letra-tipoen neurriak</comment>
+ <comment xml:lang="fi">Adobe-fonttimitat</comment>
+ <comment xml:lang="fr">métriques de police Adobe</comment>
++ <comment xml:lang="fur">metrichis caratar Adobe</comment>
+ <comment xml:lang="ga">meadarachtaí cló Adobe</comment>
+ <comment xml:lang="gl">métricas de fonte de Adobe</comment>
+ <comment xml:lang="he">מדדי גופן של Adobe</comment>
+- <comment xml:lang="hr">Adobe mjere slova</comment>
++ <comment xml:lang="hr">Metrika Adobe fonta</comment>
+ <comment xml:lang="hu">Adobe-betűmetrika</comment>
+ <comment xml:lang="ia">Metricas de typo de litteras Adobe</comment>
+ <comment xml:lang="id">Metrik fonta Adobe</comment>
+@@ -10793,7 +11238,7 @@
+ <comment xml:lang="oc">metricas de poliça Adobe</comment>
+ <comment xml:lang="pl">Metryka czcionki Adobe</comment>
+ <comment xml:lang="pt">métrica de letras Adobe</comment>
+- <comment xml:lang="pt_BR">Métricas de fonte Adobe</comment>
++ <comment xml:lang="pt-BR">Métricas de fonte Adobe</comment>
+ <comment xml:lang="ro">Dimensiuni font Adobe</comment>
+ <comment xml:lang="ru">Метрика шрифта Adobe</comment>
+ <comment xml:lang="sk">Metrika písma Adobe</comment>
+@@ -10801,19 +11246,20 @@
+ <comment xml:lang="sq">Metrik lloj gërmash Adobe</comment>
+ <comment xml:lang="sr">метрика Адобе слова</comment>
+ <comment xml:lang="sv">Adobe-typsnittsmetrik</comment>
+- <comment xml:lang="tr">Adobe yazıtipi ölçüleri</comment>
++ <comment xml:lang="tr">Adobe yazı tipi ölçüleri</comment>
+ <comment xml:lang="uk">метрики шрифту Adobe</comment>
+ <comment xml:lang="vi">Cách đo phông chữ Adobe</comment>
+- <comment xml:lang="zh_CN">Adobe 字体规格</comment>
+- <comment xml:lang="zh_TW">Adobe 字型描述檔</comment>
++ <comment xml:lang="zh-CN">Adobe 字体规格</comment>
++ <comment xml:lang="zh-TW">Adobe 字型描述檔</comment>
+ <generic-icon name="font-x-generic"/>
+ <glob pattern="*.afm"/>
+ </mime-type>
+ <mime-type type="application/x-font-bdf">
+ <comment>BDF font</comment>
++ <comment xml:lang="af">BDF-skriftipe</comment>
+ <comment xml:lang="ar">خط BDF</comment>
+ <comment xml:lang="az">BDF yazı növü</comment>
+- <comment xml:lang="be@latin">Šryft BDF</comment>
++ <comment xml:lang="be-Latn">Šryft BDF</comment>
+ <comment xml:lang="bg">Шрифт — BDF</comment>
+ <comment xml:lang="ca">lletra BDF</comment>
+ <comment xml:lang="cs">font BDF</comment>
+@@ -10821,17 +11267,18 @@
+ <comment xml:lang="da">BDF-skrifttype</comment>
+ <comment xml:lang="de">BDF-Schrift</comment>
+ <comment xml:lang="el">Γραμματοσειρά BDF</comment>
+- <comment xml:lang="en_GB">BDF font</comment>
++ <comment xml:lang="en-GB">BDF font</comment>
+ <comment xml:lang="eo">BDF-tiparo</comment>
+ <comment xml:lang="es">tipo de letra BDF</comment>
+ <comment xml:lang="eu">BDF letra-tipoa</comment>
+ <comment xml:lang="fi">BDF-fontti</comment>
+ <comment xml:lang="fo">BDF stavasnið</comment>
+ <comment xml:lang="fr">police BDF</comment>
++ <comment xml:lang="fur">caratar BDF</comment>
+ <comment xml:lang="ga">cló BDF</comment>
+ <comment xml:lang="gl">tipo de fonte BDF</comment>
+ <comment xml:lang="he">גופן BDF</comment>
+- <comment xml:lang="hr">BDF slovo</comment>
++ <comment xml:lang="hr">BDF font</comment>
+ <comment xml:lang="hu">BDF-betűkészlet</comment>
+ <comment xml:lang="ia">Typo de litteras BDF</comment>
+ <comment xml:lang="id">Fonta BDF</comment>
+@@ -10848,7 +11295,7 @@
+ <comment xml:lang="oc">poliça BDF</comment>
+ <comment xml:lang="pl">Czcionka BDF</comment>
+ <comment xml:lang="pt">letra BDF</comment>
+- <comment xml:lang="pt_BR">Fonte BDF</comment>
++ <comment xml:lang="pt-BR">Fonte BDF</comment>
+ <comment xml:lang="ro">Font BDF</comment>
+ <comment xml:lang="ru">Шрифт BDF</comment>
+ <comment xml:lang="sk">Písmo BDF</comment>
+@@ -10856,22 +11303,23 @@
+ <comment xml:lang="sq">Lloj gërme BDF</comment>
+ <comment xml:lang="sr">БДФ слова</comment>
+ <comment xml:lang="sv">BDF-typsnitt</comment>
+- <comment xml:lang="tr">BDF fontu</comment>
++ <comment xml:lang="tr">BDF yazı tipi</comment>
+ <comment xml:lang="uk">шрифт BDF</comment>
+ <comment xml:lang="vi">Phông chữ BDF</comment>
+- <comment xml:lang="zh_CN">BDF 字体</comment>
+- <comment xml:lang="zh_TW">BDF 字型</comment>
++ <comment xml:lang="zh-CN">BDF 字体</comment>
++ <comment xml:lang="zh-TW">BDF 字型</comment>
+ <generic-icon name="font-x-generic"/>
+ <magic priority="50">
+- <match value="STARTFONT\040" type="string" offset="0"/>
++ <match type="string" value="STARTFONT\040" offset="0"/>
+ </magic>
+ <glob pattern="*.bdf"/>
+ </mime-type>
+ <mime-type type="application/x-font-dos">
+ <comment>DOS font</comment>
++ <comment xml:lang="af">DOS-skriftipe</comment>
+ <comment xml:lang="ar">خط DOS</comment>
+ <comment xml:lang="az">DOS yazı növü</comment>
+- <comment xml:lang="be@latin">Šryft DOS</comment>
++ <comment xml:lang="be-Latn">Šryft DOS</comment>
+ <comment xml:lang="bg">Шрифт — DOS</comment>
+ <comment xml:lang="ca">lletra DOS</comment>
+ <comment xml:lang="cs">font pro DOS</comment>
+@@ -10879,17 +11327,18 @@
+ <comment xml:lang="da">DOS-skrifttype</comment>
+ <comment xml:lang="de">DOS-Schrift</comment>
+ <comment xml:lang="el">Γραμματοσειρά DOS</comment>
+- <comment xml:lang="en_GB">DOS font</comment>
++ <comment xml:lang="en-GB">DOS font</comment>
+ <comment xml:lang="eo">DOS-tiparo</comment>
+ <comment xml:lang="es">tipo de letra de DOS</comment>
+ <comment xml:lang="eu">DOS letra-tipoa</comment>
+ <comment xml:lang="fi">DOS-fontti</comment>
+ <comment xml:lang="fo">DOS stavasnið</comment>
+ <comment xml:lang="fr">police DOS</comment>
++ <comment xml:lang="fur">caratar DOS</comment>
+ <comment xml:lang="ga">cló DOS</comment>
+ <comment xml:lang="gl">tipo de fonte de DOS</comment>
+ <comment xml:lang="he">גופן DOS</comment>
+- <comment xml:lang="hr">DOS slovo</comment>
++ <comment xml:lang="hr">DOS font</comment>
+ <comment xml:lang="hu">DOS-betűkészlet</comment>
+ <comment xml:lang="ia">Typo de litteras DOS</comment>
+ <comment xml:lang="id">Fonta DOS</comment>
+@@ -10906,7 +11355,7 @@
+ <comment xml:lang="oc">poliça DOS</comment>
+ <comment xml:lang="pl">Czcionka DOS</comment>
+ <comment xml:lang="pt">letra DOS</comment>
+- <comment xml:lang="pt_BR">Fonte do DOS</comment>
++ <comment xml:lang="pt-BR">Fonte do DOS</comment>
+ <comment xml:lang="ro">Font DOS</comment>
+ <comment xml:lang="ru">Шрифт DOS</comment>
+ <comment xml:lang="sk">Písmo pre DOS</comment>
+@@ -10914,23 +11363,24 @@
+ <comment xml:lang="sq">Gërmë DOS</comment>
+ <comment xml:lang="sr">ДОС слова</comment>
+ <comment xml:lang="sv">DOS-typsnitt</comment>
+- <comment xml:lang="tr">DOS fontu</comment>
++ <comment xml:lang="tr">DOS yazı tipi</comment>
+ <comment xml:lang="uk">шрифт DOS</comment>
+ <comment xml:lang="vi">Phông chữ DOS</comment>
+- <comment xml:lang="zh_CN">DOS 字体</comment>
+- <comment xml:lang="zh_TW">DOS 字型</comment>
++ <comment xml:lang="zh-CN">DOS 字体</comment>
++ <comment xml:lang="zh-TW">DOS 字型</comment>
+ <generic-icon name="font-x-generic"/>
+ <magic priority="50">
+- <match value="\xff\x46\x4f\x4e" type="string" offset="0"/>
+- <match value="\x00\x45\x47\x41" type="string" offset="7"/>
+- <match value="\x00\x56\x49\x44" type="string" offset="7"/>
++ <match type="string" value="\xff\x46\x4f\x4e" offset="0"/>
++ <match type="string" value="\x00\x45\x47\x41" offset="7"/>
++ <match type="string" value="\x00\x56\x49\x44" offset="7"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-font-framemaker">
+ <comment>Adobe FrameMaker font</comment>
++ <comment xml:lang="af">Adobe FrameMaker-skriftipe</comment>
+ <comment xml:lang="ar">خط أدوبي الصانع للإطارات</comment>
+ <comment xml:lang="az">Adobe FrameMaker yazı növü</comment>
+- <comment xml:lang="be@latin">Šryft Adobe FrameMaker</comment>
++ <comment xml:lang="be-Latn">Šryft Adobe FrameMaker</comment>
+ <comment xml:lang="bg">Шрифт — Adobe FrameMaker</comment>
+ <comment xml:lang="ca">lletra d'Adobe FrameMaker</comment>
+ <comment xml:lang="cs">font Adobe FrameMaker</comment>
+@@ -10938,17 +11388,18 @@
+ <comment xml:lang="da">Adobe FrameMaker-skrifttype</comment>
+ <comment xml:lang="de">Adobe-FrameMaker-Schrift</comment>
+ <comment xml:lang="el">Γραμματοσειρά Adobe FrameMaker</comment>
+- <comment xml:lang="en_GB">Adobe FrameMaker font</comment>
++ <comment xml:lang="en-GB">Adobe FrameMaker font</comment>
+ <comment xml:lang="eo">Tiparo de Adobe FrameMaker</comment>
+ <comment xml:lang="es">tipo de letra de Adobe FrameMaker</comment>
+ <comment xml:lang="eu">Adobe FrameMaker-en letra-tipoa</comment>
+ <comment xml:lang="fi">Adobe FrameMaker -fontti</comment>
+ <comment xml:lang="fo">Adobe FrameMaker stavasnið</comment>
+ <comment xml:lang="fr">police Adobe FrameMaker</comment>
++ <comment xml:lang="fur">caratar Adobe FrameMaker</comment>
+ <comment xml:lang="ga">cló Adobe FrameMaker</comment>
+ <comment xml:lang="gl">tipo de fonte de Adobe FrameMaker</comment>
+ <comment xml:lang="he">גופן של Adobe FrameMaker</comment>
+- <comment xml:lang="hr">Adobe FrameMaker slovo</comment>
++ <comment xml:lang="hr">Adobe FrameMaker font</comment>
+ <comment xml:lang="hu">Adobe FrameMaker-betűkészlet</comment>
+ <comment xml:lang="ia">Typo de litteras pro Adobe FrameMaker</comment>
+ <comment xml:lang="id">Fonta Adobe FrameMaker</comment>
+@@ -10965,7 +11416,7 @@
+ <comment xml:lang="oc">poliça Adobe FrameMaker</comment>
+ <comment xml:lang="pl">Czcionka Adobe FrameMaker</comment>
+ <comment xml:lang="pt">letra Adobe FrameMaker</comment>
+- <comment xml:lang="pt_BR">Fonte do Adobe FrameMaker</comment>
++ <comment xml:lang="pt-BR">Fonte do Adobe FrameMaker</comment>
+ <comment xml:lang="ro">Font Adobe FrameMaker</comment>
+ <comment xml:lang="ru">Шрифт Adobe FrameMaker</comment>
+ <comment xml:lang="sk">Písmo Adobe FrameMaker</comment>
+@@ -10976,18 +11427,19 @@
+ <comment xml:lang="tr">Adobe FrameMaker yazı tipi</comment>
+ <comment xml:lang="uk">шрифт Adobe FrameMaker</comment>
+ <comment xml:lang="vi">Phông chữ Adobe FrameMaker</comment>
+- <comment xml:lang="zh_CN">Adobe FrameMaker 字体</comment>
+- <comment xml:lang="zh_TW">Adobe FrameMaker 字型</comment>
++ <comment xml:lang="zh-CN">Adobe FrameMaker 字体</comment>
++ <comment xml:lang="zh-TW">Adobe FrameMaker 字型</comment>
+ <generic-icon name="font-x-generic"/>
+ <magic priority="50">
+- <match value="&lt;MakerScreenFont" type="string" offset="0"/>
++ <match type="string" value="&lt;MakerScreenFont" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-font-libgrx">
+ <comment>LIBGRX font</comment>
++ <comment xml:lang="af">LIBGRX-skriftipe</comment>
+ <comment xml:lang="ar">خط LIBGRX</comment>
+ <comment xml:lang="az">LIBGRX yazı növü</comment>
+- <comment xml:lang="be@latin">Šryft LIBGRX</comment>
++ <comment xml:lang="be-Latn">Šryft LIBGRX</comment>
+ <comment xml:lang="bg">Шрифт — LIBGRX</comment>
+ <comment xml:lang="ca">lletra LIBGRX</comment>
+ <comment xml:lang="cs">font LIBGRX</comment>
+@@ -10995,17 +11447,18 @@
+ <comment xml:lang="da">LIBGRX-skrifttype</comment>
+ <comment xml:lang="de">LIBGRX-Schrift</comment>
+ <comment xml:lang="el">Γραμματοσειρά LIBGRX</comment>
+- <comment xml:lang="en_GB">LIBGRX font</comment>
++ <comment xml:lang="en-GB">LIBGRX font</comment>
+ <comment xml:lang="eo">LIBGRX-tiparo</comment>
+ <comment xml:lang="es">tipo de letra LIBGRX</comment>
+ <comment xml:lang="eu">LIBGRX letra-tipoa</comment>
+ <comment xml:lang="fi">LIBGRX-fontti</comment>
+ <comment xml:lang="fo">LIBGRX stavasnið</comment>
+ <comment xml:lang="fr">police LIBGRX</comment>
++ <comment xml:lang="fur">caratar LIBGRX</comment>
+ <comment xml:lang="ga">cló LIBGRX</comment>
+ <comment xml:lang="gl">tipo de fonte en LIBGRX</comment>
+ <comment xml:lang="he">גופן LIBGRX</comment>
+- <comment xml:lang="hr">LIBGRX slovo</comment>
++ <comment xml:lang="hr">LIBGRX font</comment>
+ <comment xml:lang="hu">LIBGRX-betűkészlet</comment>
+ <comment xml:lang="ia">Typo de litteras LIBGRX</comment>
+ <comment xml:lang="id">Fonta LIBGRX</comment>
+@@ -11022,7 +11475,7 @@
+ <comment xml:lang="oc">poliça LIBGRX</comment>
+ <comment xml:lang="pl">Czcionka LIBGRX</comment>
+ <comment xml:lang="pt">letra LIBGRX</comment>
+- <comment xml:lang="pt_BR">Fonte LIBGRX</comment>
++ <comment xml:lang="pt-BR">Fonte LIBGRX</comment>
+ <comment xml:lang="ro">Font LIBGRX</comment>
+ <comment xml:lang="ru">Шрифт LIBGRX</comment>
+ <comment xml:lang="sk">Písmo LIBGRX</comment>
+@@ -11030,21 +11483,22 @@
+ <comment xml:lang="sq">Lloj gërme LIBGRX</comment>
+ <comment xml:lang="sr">ЛИБГРИкс слова</comment>
+ <comment xml:lang="sv">LIBGRX-typsnitt</comment>
+- <comment xml:lang="tr">LIBGRX fontu</comment>
++ <comment xml:lang="tr">LIBGRX yazı tipi</comment>
+ <comment xml:lang="uk">шрифт LIBGRX</comment>
+ <comment xml:lang="vi">Phông chữ LIBGRX</comment>
+- <comment xml:lang="zh_CN">LIBGRX 字体</comment>
+- <comment xml:lang="zh_TW">LIBGRX 字型</comment>
++ <comment xml:lang="zh-CN">LIBGRX 字体</comment>
++ <comment xml:lang="zh-TW">LIBGRX 字型</comment>
+ <generic-icon name="font-x-generic"/>
+ <magic priority="50">
+- <match value="\x14\x02\x59\x19" type="string" offset="0"/>
++ <match type="string" value="\x14\x02\x59\x19" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-font-linux-psf">
+ <comment>Linux PSF console font</comment>
++ <comment xml:lang="af">Linux PSF-konsoleskriftipe</comment>
+ <comment xml:lang="ar">خط كونسول PSF لينكس</comment>
+ <comment xml:lang="az">Linux PSF konsol yazı növü</comment>
+- <comment xml:lang="be@latin">Kansolny šryft PSF dla Linuksa</comment>
++ <comment xml:lang="be-Latn">Kansolny šryft PSF dla Linuksa</comment>
+ <comment xml:lang="bg">Шрифт — PSF, за конзолата на Линукс</comment>
+ <comment xml:lang="ca">lletra de consola PSF de Linux</comment>
+ <comment xml:lang="cs">font PSF pro konzolu Linuxu</comment>
+@@ -11052,17 +11506,18 @@
+ <comment xml:lang="da">Linux PSF-konsolskrifttype</comment>
+ <comment xml:lang="de">Linux-PSF-Konsolenschrift</comment>
+ <comment xml:lang="el">Γραμματοσειρά κονσόλας PSF Linux</comment>
+- <comment xml:lang="en_GB">Linux PSF console font</comment>
++ <comment xml:lang="en-GB">Linux PSF console font</comment>
+ <comment xml:lang="eo">PSF-tiparo de Linux-konzolo</comment>
+ <comment xml:lang="es">tipo de letra de consola Linux PSF</comment>
+ <comment xml:lang="eu">Linux PSF kontsolako letra-tipoa</comment>
+ <comment xml:lang="fi">Linux PSF -konsolifontti</comment>
+ <comment xml:lang="fo">Linux PSF stýristøðs stavasnið</comment>
+ <comment xml:lang="fr">police console Linux PSF</comment>
++ <comment xml:lang="fur">caratar console Linux PSF</comment>
+ <comment xml:lang="ga">cló consóil Linux PSF</comment>
+ <comment xml:lang="gl">tipo de fonte de consola Linux PSF</comment>
+ <comment xml:lang="he">גופן לקונסול מסוג Linux PSF</comment>
+- <comment xml:lang="hr">Linux PSF konzolno slovo</comment>
++ <comment xml:lang="hr">Linux PSF font konzole</comment>
+ <comment xml:lang="hu">Linux PSF konzolos betűkészlet</comment>
+ <comment xml:lang="ia">Typo de litteras console Linux PSF</comment>
+ <comment xml:lang="id">Fonta konsol Linux PSF</comment>
+@@ -11079,7 +11534,7 @@
+ <comment xml:lang="oc">poliça consòla Linux PSF</comment>
+ <comment xml:lang="pl">Czcionka konsoli PSF Linux</comment>
+ <comment xml:lang="pt">letra de consola Linux PSF</comment>
+- <comment xml:lang="pt_BR">Fonte de console Linux PSF</comment>
++ <comment xml:lang="pt-BR">Fonte de console Linux PSF</comment>
+ <comment xml:lang="ro">Font consolă Linux PSF</comment>
+ <comment xml:lang="ru">Консольный шрифт Linux PSF</comment>
+ <comment xml:lang="sk">Písmo PSF pre konzolu Linuxu</comment>
+@@ -11087,38 +11542,40 @@
+ <comment xml:lang="sq">Lloj gërme për konsolë Linux PSF</comment>
+ <comment xml:lang="sr">слова Линуксове ПСФ конзоле</comment>
+ <comment xml:lang="sv">Linux PSF-konsoltypsnitt</comment>
+- <comment xml:lang="tr">Linux PSF konsol fontu</comment>
++ <comment xml:lang="tr">Linux PSF konsol yazı tipi</comment>
+ <comment xml:lang="uk">консольний шрифт Linux PSF</comment>
+ <comment xml:lang="vi">Phông chữ bàn giao tiếp PSF Linux</comment>
+- <comment xml:lang="zh_CN">Linux PSF 控制台字体</comment>
+- <comment xml:lang="zh_TW">Linux PSF console 字型</comment>
++ <comment xml:lang="zh-CN">Linux PSF 控制台字体</comment>
++ <comment xml:lang="zh-TW">Linux PSF console 字型</comment>
+ <generic-icon name="font-x-generic"/>
+ <magic priority="50">
+- <match value="\x36\x04" type="string" offset="0"/>
++ <match type="string" value="\x36\x04" offset="0"/>
+ </magic>
+ <glob pattern="*.psf"/>
+ </mime-type>
+ <mime-type type="application/x-gz-font-linux-psf">
+ <comment>Linux PSF console font (gzip-compressed)</comment>
++ <comment xml:lang="af">Linux PSF-konsoleskriftipe (gzip-saamgepers)</comment>
+ <comment xml:lang="ar">خط كونسول PSF لينكس (مضغوط-gzip)</comment>
+- <comment xml:lang="be@latin">Kansolny šryft PSF dla Linuksa (gzip-skampresavany)</comment>
++ <comment xml:lang="be-Latn">Kansolny šryft PSF dla Linuksa (gzip-skampresavany)</comment>
+ <comment xml:lang="bg">Шрифт — Linux PSF, компресиран с gzip</comment>
+ <comment xml:lang="ca">lletra de consola PSF de Linux (amb compressió gzip)</comment>
+ <comment xml:lang="cs">font PSF pro konzolu Linuxu (komprimace gzip)</comment>
+ <comment xml:lang="da">Linux PSF-konsolskrifttype (gzip-komprimeret)</comment>
+ <comment xml:lang="de">Linux-PSF-Konsolenschrift (gzip-komprimiert)</comment>
+ <comment xml:lang="el">Γραμματοσειρά κονσόλας PSF Linux (συμπιεσμένη με gzip)</comment>
+- <comment xml:lang="en_GB">Linux PSF console font (gzip-compressed)</comment>
++ <comment xml:lang="en-GB">Linux PSF console font (gzip-compressed)</comment>
+ <comment xml:lang="es">tipo de letra de consola Linux PSF (comprimido con gzip)</comment>
+ <comment xml:lang="eu">Linux PSF kontsolako letra-tipoa (gzip-ekin konprimitua)</comment>
+ <comment xml:lang="fi">Linux PSF -konsolifontti (gzip-pakattu)</comment>
+ <comment xml:lang="fo">Linux PSF stýristøðs stavasnið (gzip-stappað)</comment>
+ <comment xml:lang="fr">police console Linux PSF (compressée gzip)</comment>
++ <comment xml:lang="fur">caratar console Linux PSF (comprimût cun gzip)</comment>
+ <comment xml:lang="ga">cló consóil Linux PSF (comhbhrúite le gzip)</comment>
+ <comment xml:lang="gl">tipo de fonte de consola Linux PSF (comprimida con gzip)</comment>
+ <comment xml:lang="he">גופן למסוף מסוג Linux PSF (מכווץ ע״י gzip)</comment>
+- <comment xml:lang="hr">Linux PSF konzolno slovo (gzip sažeto)</comment>
+- <comment xml:lang="hu">Linux PSF konzolos betűkészlet (gzip-tömörítésű)</comment>
++ <comment xml:lang="hr">Linux PSF font konzolne (gzip komprimirano)</comment>
++ <comment xml:lang="hu">Linux PSF konzolos betűkészlet (gzip tömörítésű)</comment>
+ <comment xml:lang="ia">Typo de litteras console Linux PSF (comprimite con gzip)</comment>
+ <comment xml:lang="id">Fonta konsol Linux PSF (terkompresi gzip)</comment>
+ <comment xml:lang="it">Carattere console Linux PSF (compresso con gzip)</comment>
+@@ -11133,7 +11590,7 @@
+ <comment xml:lang="oc">poliça consòla Linux PSF (compressat gzip)</comment>
+ <comment xml:lang="pl">Czcionka konsoli PSF Linux (kompresja gzip)</comment>
+ <comment xml:lang="pt">letra de consola Linux PSF (compressão gzip)</comment>
+- <comment xml:lang="pt_BR">Fonte de console Linux PSF (compactada com gzip)</comment>
++ <comment xml:lang="pt-BR">Fonte de console Linux PSF (compactada com gzip)</comment>
+ <comment xml:lang="ro">Font consolă Linux PSF (compresie gzip)</comment>
+ <comment xml:lang="ru">Консольный шрифт Linux PSF (сжатый gzip)</comment>
+ <comment xml:lang="sk">Písmo PSF pre konzolu Linuxu (komprimované pomocou gzip)</comment>
+@@ -11141,20 +11598,21 @@
+ <comment xml:lang="sq">Lloj gërme për konsolë Linux PSF (komresuar me gzip)</comment>
+ <comment xml:lang="sr">слова Линуксове ПСФ конзоле (запакована гзип-ом)</comment>
+ <comment xml:lang="sv">Linux PSF-konsoltypsnitt (gzip-komprimerat)</comment>
+- <comment xml:lang="tr">Linux PSF konsol fontu (gzip ile sıkıştırılmış)</comment>
++ <comment xml:lang="tr">Linux PSF konsol yazı tipi (gzip ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">консольний шрифт Linux PSF (стиснений gzip)</comment>
+ <comment xml:lang="vi">Phông chữ bàn giao tiếp PSF Linux (đã nén gzip)</comment>
+- <comment xml:lang="zh_CN">Linux PSF 控制台字体(gzip 压缩)</comment>
+- <comment xml:lang="zh_TW">Linux PSF console 字型 (gzip 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">Linux PSF 控制台字体(gzip 压缩)</comment>
++ <comment xml:lang="zh-TW">Linux PSF console 字型 (gzip 壓縮)</comment>
+ <sub-class-of type="application/gzip"/>
+ <generic-icon name="font-x-generic"/>
+ <glob pattern="*.psf.gz"/>
+ </mime-type>
+ <mime-type type="application/x-font-pcf">
+ <comment>PCF font</comment>
++ <comment xml:lang="af">PCF-skriftipe</comment>
+ <comment xml:lang="ar">خط PCF</comment>
+ <comment xml:lang="az">PCF yazı növü</comment>
+- <comment xml:lang="be@latin">Šryft PCF</comment>
++ <comment xml:lang="be-Latn">Šryft PCF</comment>
+ <comment xml:lang="bg">Шрифт — PCF</comment>
+ <comment xml:lang="ca">lletra PCF</comment>
+ <comment xml:lang="cs">font PCF</comment>
+@@ -11162,17 +11620,18 @@
+ <comment xml:lang="da">PCF-skrifttype</comment>
+ <comment xml:lang="de">PCF-Schrift</comment>
+ <comment xml:lang="el">Γραμματοσειρά PCF</comment>
+- <comment xml:lang="en_GB">PCF font</comment>
++ <comment xml:lang="en-GB">PCF font</comment>
+ <comment xml:lang="eo">PCF-tiparo</comment>
+ <comment xml:lang="es">tipo de letra PCF</comment>
+ <comment xml:lang="eu">PCF letra-tipoa</comment>
+ <comment xml:lang="fi">PCF-fontti</comment>
+ <comment xml:lang="fo">PCF stavasnið</comment>
+ <comment xml:lang="fr">police PCF</comment>
++ <comment xml:lang="fur">caratar PCF</comment>
+ <comment xml:lang="ga">cló PCF</comment>
+ <comment xml:lang="gl">tipo de letra PCF</comment>
+ <comment xml:lang="he">גופן PCF</comment>
+- <comment xml:lang="hr">PCF slovo</comment>
++ <comment xml:lang="hr">PCF font</comment>
+ <comment xml:lang="hu">PCF-betűkészlet</comment>
+ <comment xml:lang="ia">Typo de litteras PCF</comment>
+ <comment xml:lang="id">Fonta PCF</comment>
+@@ -11189,7 +11648,7 @@
+ <comment xml:lang="oc">poliça PCF</comment>
+ <comment xml:lang="pl">Czcionka PCF</comment>
+ <comment xml:lang="pt">letra PCF</comment>
+- <comment xml:lang="pt_BR">Fonte PCF</comment>
++ <comment xml:lang="pt-BR">Fonte PCF</comment>
+ <comment xml:lang="ro">Font PCF</comment>
+ <comment xml:lang="ru">Шрифт PCF</comment>
+ <comment xml:lang="sk">Písmo PCF</comment>
+@@ -11197,14 +11656,14 @@
+ <comment xml:lang="sq">Gërma PCF</comment>
+ <comment xml:lang="sr">ПЦФ слова</comment>
+ <comment xml:lang="sv">PCF-typsnitt</comment>
+- <comment xml:lang="tr">PCF fontu</comment>
++ <comment xml:lang="tr">PCF yazı tipi</comment>
+ <comment xml:lang="uk">шрифт PCF</comment>
+ <comment xml:lang="vi">Phông chữ PCF</comment>
+- <comment xml:lang="zh_CN">PCF 字体</comment>
+- <comment xml:lang="zh_TW">PCF 字型</comment>
++ <comment xml:lang="zh-CN">PCF 字体</comment>
++ <comment xml:lang="zh-TW">PCF 字型</comment>
+ <generic-icon name="font-x-generic"/>
+ <magic priority="50">
+- <match value="\001fcp" type="string" offset="0"/>
++ <match type="string" value="\001fcp" offset="0"/>
+ </magic>
+ <glob pattern="*.pcf"/>
+ <glob pattern="*.pcf.Z"/>
+@@ -11212,9 +11671,10 @@
+ </mime-type>
+ <mime-type type="font/otf">
+ <comment>OpenType font</comment>
++ <comment xml:lang="af">OpenType-skriftipe</comment>
+ <comment xml:lang="ar">خط OpenType</comment>
+ <comment xml:lang="az">OpenType yazı növü</comment>
+- <comment xml:lang="be@latin">Šryft OpenType</comment>
++ <comment xml:lang="be-Latn">Šryft OpenType</comment>
+ <comment xml:lang="bg">Шрифт — OpenType</comment>
+ <comment xml:lang="ca">lletra OpenType</comment>
+ <comment xml:lang="cs">font OpenType</comment>
+@@ -11222,17 +11682,18 @@
+ <comment xml:lang="da">OpenType-skrifttype</comment>
+ <comment xml:lang="de">OpenType-Schrift</comment>
+ <comment xml:lang="el">Γραμματοσειρά OpenType </comment>
+- <comment xml:lang="en_GB">OpenType font</comment>
++ <comment xml:lang="en-GB">OpenType font</comment>
+ <comment xml:lang="eo">OpenType-tiparo</comment>
+ <comment xml:lang="es">tipo de letra OpenType</comment>
+ <comment xml:lang="eu">OpenType letra-tipoa</comment>
+ <comment xml:lang="fi">OpenType-fontti</comment>
+ <comment xml:lang="fo">OpenType stavasnið</comment>
+ <comment xml:lang="fr">police OpenType</comment>
++ <comment xml:lang="fur">caratar OpenType</comment>
+ <comment xml:lang="ga">cló OpenType</comment>
+ <comment xml:lang="gl">tipo de fonte OpenType</comment>
+ <comment xml:lang="he">גופן של OpenType</comment>
+- <comment xml:lang="hr">OpenType slovo</comment>
++ <comment xml:lang="hr">OpenType font</comment>
+ <comment xml:lang="hu">OpenType-betűkészlet</comment>
+ <comment xml:lang="ia">Typo de litteras OpenType</comment>
+ <comment xml:lang="id">Fonta OpenType</comment>
+@@ -11249,7 +11710,7 @@
+ <comment xml:lang="oc">poliça OpenType</comment>
+ <comment xml:lang="pl">Czcionka OpenType</comment>
+ <comment xml:lang="pt">letra OpenType</comment>
+- <comment xml:lang="pt_BR">Fonte OpenType</comment>
++ <comment xml:lang="pt-BR">Fonte OpenType</comment>
+ <comment xml:lang="ro">Font OpenType</comment>
+ <comment xml:lang="ru">Шрифт OpenType</comment>
+ <comment xml:lang="sk">Písmo OpenType</comment>
+@@ -11257,24 +11718,25 @@
+ <comment xml:lang="sq">Gërma OpenType</comment>
+ <comment xml:lang="sr">слова Отворене Врсте</comment>
+ <comment xml:lang="sv">OpenType-typsnitt</comment>
+- <comment xml:lang="tr">OpenType fontu</comment>
++ <comment xml:lang="tr">OpenType yazı tipi</comment>
+ <comment xml:lang="uk">шрифт OpenType</comment>
+ <comment xml:lang="vi">Phông chữ OpenType</comment>
+- <comment xml:lang="zh_CN">OpenType 字体</comment>
+- <comment xml:lang="zh_TW">OpenType 字型</comment>
++ <comment xml:lang="zh-CN">OpenType 字体</comment>
++ <comment xml:lang="zh-TW">OpenType 字型</comment>
+ <sub-class-of type="font/ttf"/>
+ <generic-icon name="font-x-generic"/>
+ <magic priority="50">
+- <match value="OTTO" type="string" offset="0"/>
++ <match type="string" value="OTTO" offset="0"/>
+ </magic>
+ <glob pattern="*.otf"/>
+ <alias type="application/x-font-otf"/>
+ </mime-type>
+ <mime-type type="application/x-font-speedo">
+ <comment>Speedo font</comment>
++ <comment xml:lang="af">Speedo-skriftipe</comment>
+ <comment xml:lang="ar">خط Speedo</comment>
+ <comment xml:lang="az">Speedo yazı növü</comment>
+- <comment xml:lang="be@latin">Šryft Speedo</comment>
++ <comment xml:lang="be-Latn">Šryft Speedo</comment>
+ <comment xml:lang="bg">Шрифт — Speedo</comment>
+ <comment xml:lang="ca">lletra Speedo</comment>
+ <comment xml:lang="cs">font Speedo</comment>
+@@ -11282,17 +11744,18 @@
+ <comment xml:lang="da">Speedoskrifttype</comment>
+ <comment xml:lang="de">Speedo-Schrift</comment>
+ <comment xml:lang="el">Γραμματοσειρά Speedo</comment>
+- <comment xml:lang="en_GB">Speedo font</comment>
++ <comment xml:lang="en-GB">Speedo font</comment>
+ <comment xml:lang="eo">Speedo-tiparo</comment>
+ <comment xml:lang="es">tipo de letra de Speedo</comment>
+ <comment xml:lang="eu">Speedo letra-tipoa</comment>
+ <comment xml:lang="fi">Speedo-fontti</comment>
+ <comment xml:lang="fo">Speedo stavasnið</comment>
+ <comment xml:lang="fr">police Speedo</comment>
++ <comment xml:lang="fur">caratar Speedo</comment>
+ <comment xml:lang="ga">cló Speedo</comment>
+ <comment xml:lang="gl">tipo de letra Speedo</comment>
+ <comment xml:lang="he">גופן של Speedo</comment>
+- <comment xml:lang="hr">Speedo slovo</comment>
++ <comment xml:lang="hr">Speedo font</comment>
+ <comment xml:lang="hu">Speedo-betűkészlet</comment>
+ <comment xml:lang="ia">Typo de litteras Speedo</comment>
+ <comment xml:lang="id">Fonta Speedo</comment>
+@@ -11309,7 +11772,7 @@
+ <comment xml:lang="oc">poliça Speedo</comment>
+ <comment xml:lang="pl">Czcionka Speedo</comment>
+ <comment xml:lang="pt">letra Speedo</comment>
+- <comment xml:lang="pt_BR">Fonte Speedo</comment>
++ <comment xml:lang="pt-BR">Fonte Speedo</comment>
+ <comment xml:lang="ro">Font Speedo</comment>
+ <comment xml:lang="ru">Шрифт Speedo</comment>
+ <comment xml:lang="sk">Písmo Speedo</comment>
+@@ -11317,22 +11780,23 @@
+ <comment xml:lang="sq">Gërma Speedo</comment>
+ <comment xml:lang="sr">Спидо слова</comment>
+ <comment xml:lang="sv">Speedo-typsnitt</comment>
+- <comment xml:lang="tr">Speedo fontu</comment>
++ <comment xml:lang="tr">Speedo yazı tipi</comment>
+ <comment xml:lang="uk">шрифт Speedo</comment>
+ <comment xml:lang="vi">Phông chữ Speedo</comment>
+- <comment xml:lang="zh_CN">Speedo 字体</comment>
+- <comment xml:lang="zh_TW">Speedo 字型</comment>
++ <comment xml:lang="zh-CN">Speedo 字体</comment>
++ <comment xml:lang="zh-TW">Speedo 字型</comment>
+ <generic-icon name="font-x-generic"/>
+ <magic priority="50">
+- <match value="D1.0\015" type="string" offset="0"/>
++ <match type="string" value="D1.0\015" offset="0"/>
+ </magic>
+ <glob pattern="*.spd"/>
+ </mime-type>
+ <mime-type type="application/x-font-sunos-news">
+ <comment>SunOS News font</comment>
++ <comment xml:lang="af">SunOS News-skriftipe</comment>
+ <comment xml:lang="ar">خط SunOS News</comment>
+ <comment xml:lang="az">SunOS News yazı növü</comment>
+- <comment xml:lang="be@latin">Šryft SunOS News</comment>
++ <comment xml:lang="be-Latn">Šryft SunOS News</comment>
+ <comment xml:lang="bg">Шрифт — SunOS News</comment>
+ <comment xml:lang="ca">lletra News de SunOS</comment>
+ <comment xml:lang="cs">font SunOS News</comment>
+@@ -11340,17 +11804,18 @@
+ <comment xml:lang="da">SunOS News-skrifttype</comment>
+ <comment xml:lang="de">SunOS-News-Schrift</comment>
+ <comment xml:lang="el">Γραμματοσειρά SunOS News</comment>
+- <comment xml:lang="en_GB">SunOS News font</comment>
++ <comment xml:lang="en-GB">SunOS News font</comment>
+ <comment xml:lang="eo">tiparo de SunOS News</comment>
+ <comment xml:lang="es">tipo de letra para NeWS de SunOS</comment>
+ <comment xml:lang="eu">SunOs News letra-tipoa</comment>
+ <comment xml:lang="fi">SunOS News -fontti</comment>
+ <comment xml:lang="fo">SunOS News stavasnið</comment>
+ <comment xml:lang="fr">police SunOS News</comment>
++ <comment xml:lang="fur">caratar SunOS News</comment>
+ <comment xml:lang="ga">cló SunOS News</comment>
+ <comment xml:lang="gl">tipo de letra SunOS News</comment>
+ <comment xml:lang="he">גופן של SunOS News</comment>
+- <comment xml:lang="hr">SunOS News slovo</comment>
++ <comment xml:lang="hr">SunOS News font</comment>
+ <comment xml:lang="hu">SunOS News-betűkészlet</comment>
+ <comment xml:lang="ia">Typo de litteras SunOS News</comment>
+ <comment xml:lang="id">Fonta SunOS News</comment>
+@@ -11367,7 +11832,7 @@
+ <comment xml:lang="oc">poliça SunOS News</comment>
+ <comment xml:lang="pl">Czcionka SunOS News</comment>
+ <comment xml:lang="pt">letra SunOS News</comment>
+- <comment xml:lang="pt_BR">Fonte SunOS News</comment>
++ <comment xml:lang="pt-BR">Fonte SunOS News</comment>
+ <comment xml:lang="ro">Font SunOS News</comment>
+ <comment xml:lang="ru">Шрифт SunOS News</comment>
+ <comment xml:lang="sk">Písmo SunOS News</comment>
+@@ -11378,20 +11843,21 @@
+ <comment xml:lang="tr">SunOS News yazı tipi</comment>
+ <comment xml:lang="uk">шрифт SunOS News</comment>
+ <comment xml:lang="vi">Phông chữ SunOS News</comment>
+- <comment xml:lang="zh_CN">SunOS News 字体</comment>
+- <comment xml:lang="zh_TW">SunOS News 字型</comment>
++ <comment xml:lang="zh-CN">SunOS News 字体</comment>
++ <comment xml:lang="zh-TW">SunOS News 字型</comment>
+ <generic-icon name="font-x-generic"/>
+ <magic priority="50">
+- <match value="StartFont" type="string" offset="0"/>
+- <match value="\x13\x7A\x29" type="string" offset="0"/>
+- <match value="\x13\x7A\x2B" type="string" offset="8"/>
++ <match type="string" value="StartFont" offset="0"/>
++ <match type="string" value="\x13\x7A\x29" offset="0"/>
++ <match type="string" value="\x13\x7A\x2B" offset="8"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-font-tex">
+ <comment>TeX font</comment>
++ <comment xml:lang="af">TeX-skriftipe</comment>
+ <comment xml:lang="ar">خط TeX</comment>
+ <comment xml:lang="az">TeX yazı növü</comment>
+- <comment xml:lang="be@latin">Šryft TeX</comment>
++ <comment xml:lang="be-Latn">Šryft TeX</comment>
+ <comment xml:lang="bg">Шрифт — TeX</comment>
+ <comment xml:lang="ca">lletra TeX</comment>
+ <comment xml:lang="cs">font TeX</comment>
+@@ -11399,17 +11865,18 @@
+ <comment xml:lang="da">TeX-skrifttype</comment>
+ <comment xml:lang="de">TeX-Schrift</comment>
+ <comment xml:lang="el">Γραμματοσειρά TeX</comment>
+- <comment xml:lang="en_GB">TeX font</comment>
++ <comment xml:lang="en-GB">TeX font</comment>
+ <comment xml:lang="eo">TeX-tiparo</comment>
+ <comment xml:lang="es">tipo de letra de TeX</comment>
+ <comment xml:lang="eu">TeX letra-tipoa</comment>
+ <comment xml:lang="fi">TeX-fontti</comment>
+ <comment xml:lang="fo">TeX stavasnið</comment>
+ <comment xml:lang="fr">police TeX</comment>
++ <comment xml:lang="fur">caratar TeX</comment>
+ <comment xml:lang="ga">cló TeX</comment>
+ <comment xml:lang="gl">tipo de letra de TeX</comment>
+ <comment xml:lang="he">גופן TeX</comment>
+- <comment xml:lang="hr">TeX slovo</comment>
++ <comment xml:lang="hr">TeX font</comment>
+ <comment xml:lang="hu">TeX-betűkészlet</comment>
+ <comment xml:lang="ia">Typo de litteras TeX</comment>
+ <comment xml:lang="id">Fonta TeX</comment>
+@@ -11426,7 +11893,7 @@
+ <comment xml:lang="oc">poliça TeX</comment>
+ <comment xml:lang="pl">Czcionka TeX</comment>
+ <comment xml:lang="pt">letra TeX</comment>
+- <comment xml:lang="pt_BR">Fonte TeX</comment>
++ <comment xml:lang="pt-BR">Fonte TeX</comment>
+ <comment xml:lang="ro">Font TeX</comment>
+ <comment xml:lang="ru">Шрифт TeX</comment>
+ <comment xml:lang="sk">Písmo TeX</comment>
+@@ -11434,23 +11901,24 @@
+ <comment xml:lang="sq">Gërma TeX</comment>
+ <comment xml:lang="sr">ТеКс слова</comment>
+ <comment xml:lang="sv">TeX-typsnitt</comment>
+- <comment xml:lang="tr">TeX fontu</comment>
++ <comment xml:lang="tr">TeX yazı tipi</comment>
+ <comment xml:lang="uk">шрифт TeX</comment>
+ <comment xml:lang="vi">Phông chữ TeX</comment>
+- <comment xml:lang="zh_CN">TeX 字体</comment>
+- <comment xml:lang="zh_TW">TeX 字型</comment>
++ <comment xml:lang="zh-CN">TeX 字体</comment>
++ <comment xml:lang="zh-TW">TeX 字型</comment>
+ <generic-icon name="font-x-generic"/>
+ <magic priority="50">
+- <match value="\367\203" type="string" offset="0"/>
+- <match value="\367\131" type="string" offset="0"/>
+- <match value="\367\312" type="string" offset="0"/>
++ <match type="string" value="\367\203" offset="0"/>
++ <match type="string" value="\367\131" offset="0"/>
++ <match type="string" value="\367\312" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-font-tex-tfm">
+ <comment>TeX font metrics</comment>
++ <comment xml:lang="af">TeX-skriftipeafmetings</comment>
+ <comment xml:lang="ar">مقاييس خط TeX</comment>
+ <comment xml:lang="az">TeX yazı növü metrikləri</comment>
+- <comment xml:lang="be@latin">Metryka šryftu TeX</comment>
++ <comment xml:lang="be-Latn">Metryka šryftu TeX</comment>
+ <comment xml:lang="bg">Шрифтова метрика — TeX</comment>
+ <comment xml:lang="ca">mètrica de lletra de TeX</comment>
+ <comment xml:lang="cs">metrika fontu TeX</comment>
+@@ -11458,16 +11926,17 @@
+ <comment xml:lang="da">TeX-skrifttypeinformation</comment>
+ <comment xml:lang="de">TeX-Schriftmetriken</comment>
+ <comment xml:lang="el">Μετρικά γραμματοσειράς TeX</comment>
+- <comment xml:lang="en_GB">TeX font metrics</comment>
++ <comment xml:lang="en-GB">TeX font metrics</comment>
+ <comment xml:lang="eo">metrikoj de TeX-tiparo</comment>
+ <comment xml:lang="es">métricas tipográficas de TeX</comment>
+ <comment xml:lang="eu">TeX letra-tipoen neurriak</comment>
+ <comment xml:lang="fi">TeX-fonttimitat</comment>
+ <comment xml:lang="fr">métriques de police TeX</comment>
++ <comment xml:lang="fur">metrichis caratar TeX</comment>
+ <comment xml:lang="ga">meadarachtaí cló TeX</comment>
+ <comment xml:lang="gl">Métricas de tipo de letra de TeX</comment>
+ <comment xml:lang="he">ממדי גופן של TeX</comment>
+- <comment xml:lang="hr">TeX mjere slova</comment>
++ <comment xml:lang="hr">Metrika TeX fonta</comment>
+ <comment xml:lang="hu">TeX-betűmetrika</comment>
+ <comment xml:lang="ia">Metricas de typo de litteras TeX</comment>
+ <comment xml:lang="id">Fonta metrik TeX</comment>
+@@ -11484,7 +11953,7 @@
+ <comment xml:lang="oc">metricas de poliça TeX</comment>
+ <comment xml:lang="pl">Metryki czcionki TeX</comment>
+ <comment xml:lang="pt">métricas de letra TeX</comment>
+- <comment xml:lang="pt_BR">Métrica de fonte TeX</comment>
++ <comment xml:lang="pt-BR">Métrica de fonte TeX</comment>
+ <comment xml:lang="ro">Dimensiuni font TeX</comment>
+ <comment xml:lang="ru">Метрика шрифта TeX</comment>
+ <comment xml:lang="sk">Metrika písma TeX</comment>
+@@ -11495,35 +11964,37 @@
+ <comment xml:lang="tr">TeX yazı tipi ölçüleri</comment>
+ <comment xml:lang="uk">метрики шрифту TeX</comment>
+ <comment xml:lang="vi">Cách đo phông chữ TeX</comment>
+- <comment xml:lang="zh_CN">TeX 字体规格</comment>
+- <comment xml:lang="zh_TW">TeX 字型描述檔</comment>
++ <comment xml:lang="zh-CN">TeX 字体规格</comment>
++ <comment xml:lang="zh-TW">TeX 字型描述檔</comment>
+ <generic-icon name="font-x-generic"/>
+ <magic priority="50">
+- <match value="\000\021" type="string" offset="2"/>
+- <match value="\000\022" type="string" offset="2"/>
++ <match type="string" value="\000\021" offset="2"/>
++ <match type="string" value="\000\022" offset="2"/>
+ </magic>
+ </mime-type>
+ <mime-type type="font/ttf">
+ <comment>TrueType font</comment>
++ <comment xml:lang="af">TrueType-skriftipe</comment>
+ <comment xml:lang="ar">خط TrueType</comment>
+- <comment xml:lang="be@latin">Šryft TrueType</comment>
++ <comment xml:lang="be-Latn">Šryft TrueType</comment>
+ <comment xml:lang="bg">Шрифт — TrueType</comment>
+ <comment xml:lang="ca">lletra TrueType</comment>
+ <comment xml:lang="cs">font TrueType</comment>
+ <comment xml:lang="da">TrueType-skrifttype</comment>
+ <comment xml:lang="de">TrueType-Schrift</comment>
+ <comment xml:lang="el">Γραμματοσειρά TrueType</comment>
+- <comment xml:lang="en_GB">TrueType font</comment>
++ <comment xml:lang="en-GB">TrueType font</comment>
+ <comment xml:lang="eo">TrueType-tiparo</comment>
+ <comment xml:lang="es">tipo de letra TrueType</comment>
+ <comment xml:lang="eu">TrueType letra-tipoa</comment>
+ <comment xml:lang="fi">TrueType-fontti</comment>
+ <comment xml:lang="fo">TrueType stavasnið</comment>
+ <comment xml:lang="fr">police Truetype</comment>
++ <comment xml:lang="fur">caratar TrueType</comment>
+ <comment xml:lang="ga">cló TrueType</comment>
+ <comment xml:lang="gl">tipo de letra TrueType</comment>
+ <comment xml:lang="he">גופן מסוג TrueType</comment>
+- <comment xml:lang="hr">TrueType slovo</comment>
++ <comment xml:lang="hr">TrueType font</comment>
+ <comment xml:lang="hu">TrueType-betűkészlet</comment>
+ <comment xml:lang="ia">Typo de litteras TrueType</comment>
+ <comment xml:lang="id">Fonta TrueType</comment>
+@@ -11540,7 +12011,7 @@
+ <comment xml:lang="oc">poliça Truetype</comment>
+ <comment xml:lang="pl">Czcionka TrueType</comment>
+ <comment xml:lang="pt">letra TrueType</comment>
+- <comment xml:lang="pt_BR">Fonte TrueType</comment>
++ <comment xml:lang="pt-BR">Fonte TrueType</comment>
+ <comment xml:lang="ro">Font TrueType</comment>
+ <comment xml:lang="ru">Шрифт TrueType</comment>
+ <comment xml:lang="sk">Písmo TrueType</comment>
+@@ -11548,65 +12019,77 @@
+ <comment xml:lang="sq">Lloj gërme TrueType</comment>
+ <comment xml:lang="sr">Трутајп слова</comment>
+ <comment xml:lang="sv">Truetype-typsnitt</comment>
+- <comment xml:lang="tr">TrueType fontu</comment>
++ <comment xml:lang="tr">TrueType yazı tipi</comment>
+ <comment xml:lang="uk">шрифт TrueType</comment>
+ <comment xml:lang="vi">Phông chữ TrueType</comment>
+- <comment xml:lang="zh_CN">TrueType 字体</comment>
+- <comment xml:lang="zh_TW">TrueType 字型</comment>
++ <comment xml:lang="zh-CN">TrueType 字体</comment>
++ <comment xml:lang="zh-TW">TrueType 字型</comment>
+ <generic-icon name="font-x-generic"/>
+ <magic priority="50">
+- <match value="FFIL" type="string" offset="0"/>
+- <match value="FFIL" type="string" offset="65"/>
+- <match value="\000\001\000\000\000" type="string" offset="0"/>
++ <match type="string" value="FFIL" offset="0"/>
++ <match type="string" value="FFIL" offset="65"/>
++ <match type="string" value="\000\001\000\000\000" offset="0"/>
+ </magic>
+ <glob pattern="*.ttf"/>
+ <alias type="application/x-font-ttf"/>
+ </mime-type>
+ <mime-type type="font/collection">
+ <comment>Font collection</comment>
++ <comment xml:lang="af">Skriftipeversameling</comment>
++ <comment xml:lang="bg">Шрифтова колекция</comment>
+ <comment xml:lang="ca">ccol·lecció de lletres</comment>
+ <comment xml:lang="cs">kolekce fontů</comment>
++ <comment xml:lang="da">Skrifttypesamling</comment>
+ <comment xml:lang="de">Schriftsammlung</comment>
+- <comment xml:lang="en_GB">Font collection</comment>
++ <comment xml:lang="en-GB">Font collection</comment>
+ <comment xml:lang="es">colección tipográfica</comment>
++ <comment xml:lang="eu">Letra-tipo bilduma</comment>
+ <comment xml:lang="fi">Fonttikokoelma</comment>
+- <comment xml:lang="hr">Kolekcija slova</comment>
++ <comment xml:lang="fr">Collection de polices</comment>
++ <comment xml:lang="fur">colezion di caratars</comment>
++ <comment xml:lang="ga">bailiúchán clónna</comment>
++ <comment xml:lang="hr">Zbirka fontova</comment>
+ <comment xml:lang="hu">Betűkészlet-gyűjtemény</comment>
+ <comment xml:lang="id">Koleksi fonta</comment>
+ <comment xml:lang="it">Raccolta di caratteri</comment>
+ <comment xml:lang="kk">Қаріптер жинағы</comment>
+ <comment xml:lang="ko">글꼴 모음</comment>
+ <comment xml:lang="pl">Kolekcja czcionek</comment>
+- <comment xml:lang="pt_BR">coleção de fontes</comment>
++ <comment xml:lang="pt">coleção de letras</comment>
++ <comment xml:lang="pt-BR">coleção de fontes</comment>
+ <comment xml:lang="ru">Коллекция шрифтов</comment>
+ <comment xml:lang="sk">Zbierka písiem</comment>
++ <comment xml:lang="sl">Zbirka pisav</comment>
+ <comment xml:lang="sv">Typsnittssamling</comment>
++ <comment xml:lang="tr">Yazı tipi derlemi</comment>
+ <comment xml:lang="uk">збірка шрифтів</comment>
+- <comment xml:lang="zh_CN">字体集</comment>
+- <comment xml:lang="zh_TW">字型集</comment>
++ <comment xml:lang="zh-CN">字体集</comment>
++ <comment xml:lang="zh-TW">字型集</comment>
+ <generic-icon name="font-x-generic"/>
+ <glob pattern="*.ttc"/>
+ </mime-type>
+ <mime-type type="application/x-font-ttx">
+ <comment>TrueType XML font</comment>
++ <comment xml:lang="af">TrueType XML-skriftipe</comment>
+ <comment xml:lang="ar">خط TrueType XML</comment>
+- <comment xml:lang="be@latin">Šryft TrueType XML</comment>
++ <comment xml:lang="be-Latn">Šryft TrueType XML</comment>
+ <comment xml:lang="bg">Шрифт — TrueType XML</comment>
+ <comment xml:lang="ca">lletra XML de TrueType</comment>
+ <comment xml:lang="cs">font TrueType XML</comment>
+ <comment xml:lang="da">TrueType XML-skrifttype</comment>
+ <comment xml:lang="de">TrueType-XML-Schrift</comment>
+ <comment xml:lang="el">Γραμματοσειρά XML TrueType</comment>
+- <comment xml:lang="en_GB">TrueType XML font</comment>
++ <comment xml:lang="en-GB">TrueType XML font</comment>
+ <comment xml:lang="es">tipo de letra TrueType XML</comment>
+ <comment xml:lang="eu">TrueType XML letra-tipoa</comment>
+ <comment xml:lang="fi">TrueType-XML-fontti</comment>
+ <comment xml:lang="fo">TrueType XML stavasnið</comment>
+ <comment xml:lang="fr">police Truetype XML</comment>
++ <comment xml:lang="fur">caratar TrueType XML</comment>
+ <comment xml:lang="ga">cló XML TrueType</comment>
+ <comment xml:lang="gl">tipo de letra TrueType XML</comment>
+ <comment xml:lang="he">גופן XML מסוג TrueType</comment>
+- <comment xml:lang="hr">TrueType XML slovo</comment>
++ <comment xml:lang="hr">TrueType XML font</comment>
+ <comment xml:lang="hu">TrueType XML betűkészlet</comment>
+ <comment xml:lang="ia">Typo de litteras TrueType XML</comment>
+ <comment xml:lang="id">Fonta TrueType XML</comment>
+@@ -11622,7 +12105,7 @@
+ <comment xml:lang="oc">poliça Truetype XML</comment>
+ <comment xml:lang="pl">Czcionka TrueType XML</comment>
+ <comment xml:lang="pt">letra TrueType XML</comment>
+- <comment xml:lang="pt_BR">Fonte TrueType XML</comment>
++ <comment xml:lang="pt-BR">Fonte TrueType XML</comment>
+ <comment xml:lang="ro">Font XML TrueType</comment>
+ <comment xml:lang="ru">Шрифт TrueType XML</comment>
+ <comment xml:lang="sk">Písmo TrueType XML</comment>
+@@ -11630,23 +12113,24 @@
+ <comment xml:lang="sq">Lloj gërme TrueType XML</comment>
+ <comment xml:lang="sr">Трутајп ИксМЛ слова</comment>
+ <comment xml:lang="sv">Truetype XML-typsnitt</comment>
+- <comment xml:lang="tr">TrueType XML fontu</comment>
++ <comment xml:lang="tr">TrueType XML yazı tipi</comment>
+ <comment xml:lang="uk">шрифт TrueType XML</comment>
+ <comment xml:lang="vi">Phông chữ XML TrueType</comment>
+- <comment xml:lang="zh_CN">TrueType XML 字体</comment>
+- <comment xml:lang="zh_TW">TrueType XML 字型</comment>
++ <comment xml:lang="zh-CN">TrueType XML 字体</comment>
++ <comment xml:lang="zh-TW">TrueType XML 字型</comment>
+ <sub-class-of type="application/xml"/>
+ <generic-icon name="font-x-generic"/>
+ <magic priority="50">
+- <match value="&lt;ttFont sfntVersion=&quot;\\x00\\x01\\x00\\x00&quot; ttLibVersion=&quot;" type="string" offset="0:256"/>
++ <match type="string" value="&lt;ttFont sfntVersion=&quot;\\x00\\x01\\x00\\x00&quot; ttLibVersion=&quot;" offset="0:256"/>
+ </magic>
+ <glob pattern="*.ttx"/>
+ </mime-type>
+ <mime-type type="application/x-font-vfont">
+ <comment>V font</comment>
++ <comment xml:lang="af">V-skriftipe</comment>
+ <comment xml:lang="ar">خط V</comment>
+ <comment xml:lang="az">V yazı növü</comment>
+- <comment xml:lang="be@latin">Šryft V</comment>
++ <comment xml:lang="be-Latn">Šryft V</comment>
+ <comment xml:lang="bg">Шрифт — V</comment>
+ <comment xml:lang="ca">lletra V</comment>
+ <comment xml:lang="cs">font V</comment>
+@@ -11654,17 +12138,18 @@
+ <comment xml:lang="da">V-skrifttype</comment>
+ <comment xml:lang="de">V-Schrift</comment>
+ <comment xml:lang="el">Γραμματοσειρά V</comment>
+- <comment xml:lang="en_GB">V font</comment>
++ <comment xml:lang="en-GB">V font</comment>
+ <comment xml:lang="eo">V-tiparo</comment>
+ <comment xml:lang="es">tipo de letra V</comment>
+ <comment xml:lang="eu">V letra-tipoa</comment>
+ <comment xml:lang="fi">V-fontti</comment>
+ <comment xml:lang="fo">V stavasnið</comment>
+ <comment xml:lang="fr">police V</comment>
++ <comment xml:lang="fur">caratar V</comment>
+ <comment xml:lang="ga">cló V</comment>
+ <comment xml:lang="gl">tipo de letra V</comment>
+ <comment xml:lang="he">גופן של V</comment>
+- <comment xml:lang="hr">V slovo</comment>
++ <comment xml:lang="hr">V font</comment>
+ <comment xml:lang="hu">V-betűkészlet</comment>
+ <comment xml:lang="ia">Typo de litteras V</comment>
+ <comment xml:lang="id">Fonta V</comment>
+@@ -11681,7 +12166,7 @@
+ <comment xml:lang="oc">poliça V</comment>
+ <comment xml:lang="pl">Czcionka V</comment>
+ <comment xml:lang="pt">letra V</comment>
+- <comment xml:lang="pt_BR">Fonte V</comment>
++ <comment xml:lang="pt-BR">Fonte V</comment>
+ <comment xml:lang="ro">Font V</comment>
+ <comment xml:lang="ru">Шрифт V font</comment>
+ <comment xml:lang="sk">Písmo V</comment>
+@@ -11689,34 +12174,36 @@
+ <comment xml:lang="sq">Gërmë V</comment>
+ <comment xml:lang="sr">В слова</comment>
+ <comment xml:lang="sv">V-typsnitt</comment>
+- <comment xml:lang="tr">V fontu</comment>
++ <comment xml:lang="tr">V yazı tipi</comment>
+ <comment xml:lang="uk">V-шрифт</comment>
+ <comment xml:lang="vi">Phông chữ V</comment>
+- <comment xml:lang="zh_CN">V 字体</comment>
+- <comment xml:lang="zh_TW">V 字型</comment>
++ <comment xml:lang="zh-CN">V 字体</comment>
++ <comment xml:lang="zh-TW">V 字型</comment>
+ <generic-icon name="font-x-generic"/>
+ <magic priority="50">
+- <match value="FONT" type="string" offset="0"/>
++ <match type="string" value="FONT" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/vnd.framemaker">
+ <comment>Adobe FrameMaker document</comment>
++ <comment xml:lang="af">Adobe FrameMaker-dokument</comment>
+ <comment xml:lang="ar">مستند أدوبي الصانع للإطارات</comment>
+ <comment xml:lang="ast">Documentu d'Adobe FrameMaker</comment>
+- <comment xml:lang="be@latin">Dakument Adobe FrameMaker</comment>
++ <comment xml:lang="be-Latn">Dakument Adobe FrameMaker</comment>
+ <comment xml:lang="bg">Документ — Adobe FrameMaker</comment>
+ <comment xml:lang="ca">document d'Adobe FrameMaker</comment>
+ <comment xml:lang="cs">dokument Adobe FrameMaker</comment>
+ <comment xml:lang="da">Adobe FrameMaker-dokument</comment>
+ <comment xml:lang="de">Adobe-FrameMaker-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Adobe FrameMaker</comment>
+- <comment xml:lang="en_GB">Adobe FrameMaker document</comment>
++ <comment xml:lang="en-GB">Adobe FrameMaker document</comment>
+ <comment xml:lang="eo">Dokumento de Adobe FrameMaker</comment>
+ <comment xml:lang="es">documento de Adobe FrameMaker</comment>
+ <comment xml:lang="eu">Adobe FrameMaker-en dokumentua</comment>
+ <comment xml:lang="fi">Adobe FrameMaker -asiakirja</comment>
+ <comment xml:lang="fo">Adobe FrameMaker skjal</comment>
+ <comment xml:lang="fr">document Adobe FrameMaker</comment>
++ <comment xml:lang="fur">document Adobe FrameMaker</comment>
+ <comment xml:lang="ga">cáipéis Adobe FrameMaker</comment>
+ <comment xml:lang="gl">documento de Adobe FrameMaker</comment>
+ <comment xml:lang="he">מסמך Adobe FrameMaker</comment>
+@@ -11737,7 +12224,7 @@
+ <comment xml:lang="oc">document Adobe FrameMaker</comment>
+ <comment xml:lang="pl">Dokument Adobe FrameMaker</comment>
+ <comment xml:lang="pt">documento Adobe FrameMaker</comment>
+- <comment xml:lang="pt_BR">Documento do Adobe FrameMaker</comment>
++ <comment xml:lang="pt-BR">Documento do Adobe FrameMaker</comment>
+ <comment xml:lang="ro">Document Adobe FrameMaker</comment>
+ <comment xml:lang="ru">Документ Adobe FrameMaker</comment>
+ <comment xml:lang="sk">Dokument Adobe FrameMaker</comment>
+@@ -11748,17 +12235,17 @@
+ <comment xml:lang="tr">Adobe FrameMaker belgesi</comment>
+ <comment xml:lang="uk">документ Adobe FrameMaker</comment>
+ <comment xml:lang="vi">Tài liệu Adobe FrameMaker</comment>
+- <comment xml:lang="zh_CN">Adobe FrameMaker 文档</comment>
+- <comment xml:lang="zh_TW">Adobe FrameMaker 文件</comment>
++ <comment xml:lang="zh-CN">Adobe FrameMaker 文档</comment>
++ <comment xml:lang="zh-TW">Adobe FrameMaker 文件</comment>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="&lt;MakerFile" type="string" offset="0"/>
+- <match value="&lt;MIFFile" type="string" offset="0"/>
+- <match value="&lt;MakerDictionary" type="string" offset="0"/>
+- <match value="&lt;MakerScreenFon" type="string" offset="0"/>
+- <match value="&lt;MML" type="string" offset="0"/>
+- <match value="&lt;Book" type="string" offset="0"/>
+- <match value="&lt;Maker" type="string" offset="0"/>
++ <match type="string" value="&lt;MakerFile" offset="0"/>
++ <match type="string" value="&lt;MIFFile" offset="0"/>
++ <match type="string" value="&lt;MakerDictionary" offset="0"/>
++ <match type="string" value="&lt;MakerScreenFon" offset="0"/>
++ <match type="string" value="&lt;MML" offset="0"/>
++ <match type="string" value="&lt;Book" offset="0"/>
++ <match type="string" value="&lt;Maker" offset="0"/>
+ </magic>
+ <glob pattern="*.fm"/>
+ <alias type="application/x-frame"/>
+@@ -11766,20 +12253,21 @@
+ <mime-type type="application/x-gameboy-rom">
+ <comment>Game Boy ROM</comment>
+ <comment xml:lang="ar">Game Boy ROM</comment>
+- <comment xml:lang="be@latin">Game Boy ROM</comment>
++ <comment xml:lang="be-Latn">Game Boy ROM</comment>
+ <comment xml:lang="bg">ROM — Game Boy</comment>
+ <comment xml:lang="ca">ROM de Game Boy</comment>
+ <comment xml:lang="cs">ROM pro Game Boy</comment>
+- <comment xml:lang="da">Game Boy-rom</comment>
++ <comment xml:lang="da">Game Boy-ROM</comment>
+ <comment xml:lang="de">Game Boy ROM</comment>
+ <comment xml:lang="el">Game Boy ROM</comment>
+- <comment xml:lang="en_GB">Game Boy ROM</comment>
++ <comment xml:lang="en-GB">Game Boy ROM</comment>
+ <comment xml:lang="eo">NLM de Game Boy</comment>
+ <comment xml:lang="es">ROM de Game Boy</comment>
+ <comment xml:lang="eu">Game Boy-eko ROMa</comment>
+ <comment xml:lang="fi">Game Boy -ROM</comment>
+ <comment xml:lang="fo">Game Boy ROM</comment>
+ <comment xml:lang="fr">ROM Game Boy</comment>
++ <comment xml:lang="fur">ROM Game Boy</comment>
+ <comment xml:lang="ga">ROM Game Boy</comment>
+ <comment xml:lang="gl">ROM de Game Boy</comment>
+ <comment xml:lang="he">ROM של Game Boy</comment>
+@@ -11801,7 +12289,7 @@
+ <comment xml:lang="oc">ROM Game Boy</comment>
+ <comment xml:lang="pl">Plik ROM konsoli Game Boy</comment>
+ <comment xml:lang="pt">ROM Game Boy</comment>
+- <comment xml:lang="pt_BR">ROM de Game Boy</comment>
++ <comment xml:lang="pt-BR">ROM de Game Boy</comment>
+ <comment xml:lang="ro">ROM Game Boy</comment>
+ <comment xml:lang="ru">Game Boy ROM</comment>
+ <comment xml:lang="sk">ROM pre Game Boy</comment>
+@@ -11812,12 +12300,12 @@
+ <comment xml:lang="tr">Game Boy ROM</comment>
+ <comment xml:lang="uk">ППП Game Boy</comment>
+ <comment xml:lang="vi">ROM Game Boy</comment>
+- <comment xml:lang="zh_CN">Game Boy ROM</comment>
+- <comment xml:lang="zh_TW">Game Boy ROM</comment>
++ <comment xml:lang="zh-CN">Game Boy ROM</comment>
++ <comment xml:lang="zh-TW">Game Boy ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <magic priority="50">
+- <match value="\xce\xed\x66\x66\xcc\x0d\x00\x0b\x03\x73\x00\x83\x00\x0c\x00\x0d\x00\x08\x11\x1f\x88\x89\x00\x0e" type="string" offset="260">
+- <match value="0x0" type="byte" offset="323" mask="0x80"/>
++ <match type="string" value="\xce\xed\x66\x66\xcc\x0d\x00\x0b\x03\x73\x00\x83\x00\x0c\x00\x0d\x00\x08\x11\x1f\x88\x89\x00\x0e" offset="260">
++ <match type="byte" value="0x0" mask="0x80" offset="323"/>
+ </match>
+ </magic>
+ <glob pattern="*.gb"/>
+@@ -11825,15 +12313,17 @@
+ </mime-type>
+ <mime-type type="application/x-gameboy-color-rom">
+ <comment>Game Boy Color ROM</comment>
++ <comment xml:lang="bg">ROM — Game Boy Color</comment>
+ <comment xml:lang="ca">ROM de Game Boy Color</comment>
+ <comment xml:lang="cs">ROM pro Game Boy Color</comment>
+- <comment xml:lang="da">Game Boy Color ROM</comment>
++ <comment xml:lang="da">Game Boy Color-ROM</comment>
+ <comment xml:lang="de">Game Boy Color ROM</comment>
+- <comment xml:lang="en_GB">Game Boy Colour ROM</comment>
++ <comment xml:lang="en-GB">Game Boy Colour ROM</comment>
+ <comment xml:lang="es">ROM de Game Boy Color</comment>
+ <comment xml:lang="eu">Game Boy Color ROM</comment>
+ <comment xml:lang="fi">Game Boy Color -ROM</comment>
+ <comment xml:lang="fr">ROM Game Boy Color</comment>
++ <comment xml:lang="fur">ROM Game Boy Color</comment>
+ <comment xml:lang="ga">ROM Game Boy Color</comment>
+ <comment xml:lang="he">ROM של Game Boy Color</comment>
+ <comment xml:lang="hr">Game Boy Color ROM</comment>
+@@ -11843,19 +12333,19 @@
+ <comment xml:lang="kk">Game Boy Color ROM</comment>
+ <comment xml:lang="ko">게임보이 컬러 롬</comment>
+ <comment xml:lang="pl">Plik ROM konsoli Game Boy Color</comment>
+- <comment xml:lang="pt_BR">ROM de Game Boy Color</comment>
++ <comment xml:lang="pt-BR">ROM de Game Boy Color</comment>
+ <comment xml:lang="ru">Game Boy Color ROM</comment>
+ <comment xml:lang="sk">ROM pre Game Boy Color</comment>
+ <comment xml:lang="sr">Гејм Бој РОМ боје</comment>
+ <comment xml:lang="sv">Game Boy Color-rom</comment>
+ <comment xml:lang="tr">Game Boy Color ROM</comment>
+ <comment xml:lang="uk">ППП Game Boy Color</comment>
+- <comment xml:lang="zh_CN">Game Boy Color ROM</comment>
+- <comment xml:lang="zh_TW">Game Boy Color ROM</comment>
++ <comment xml:lang="zh-CN">Game Boy Color ROM</comment>
++ <comment xml:lang="zh-TW">Game Boy Color ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <magic priority="50">
+- <match value="\xce\xed\x66\x66\xcc\x0d\x00\x0b\x03\x73\x00\x83\x00\x0c\x00\x0d\x00\x08" type="string" offset="260">
+- <match value="0x80" type="byte" offset="323" mask="0x80"/>
++ <match type="string" value="\xce\xed\x66\x66\xcc\x0d\x00\x0b\x03\x73\x00\x83\x00\x0c\x00\x0d\x00\x08" offset="260">
++ <match type="byte" value="0x80" mask="0x80" offset="323"/>
+ </match>
+ </magic>
+ <glob pattern="*.gbc"/>
+@@ -11864,19 +12354,20 @@
+ <mime-type type="application/x-gba-rom">
+ <comment>Game Boy Advance ROM</comment>
+ <comment xml:lang="ar">Game Boy Advance ROM</comment>
+- <comment xml:lang="be@latin">Game Boy Advance ROM</comment>
++ <comment xml:lang="be-Latn">Game Boy Advance ROM</comment>
+ <comment xml:lang="bg">ROM — Game Boy Advance</comment>
+ <comment xml:lang="ca">ROM de Game Boy Advance</comment>
+ <comment xml:lang="cs">ROM pro Game Boy Advance</comment>
+- <comment xml:lang="da">Game Boy Advance-rom</comment>
++ <comment xml:lang="da">Game Boy Advance-ROM</comment>
+ <comment xml:lang="de">Game Boy Advance ROM</comment>
+ <comment xml:lang="el">Game Boy Advance ROM</comment>
+- <comment xml:lang="en_GB">Game Boy Advance ROM</comment>
++ <comment xml:lang="en-GB">Game Boy Advance ROM</comment>
+ <comment xml:lang="es">ROM de Game Boy Advance</comment>
+ <comment xml:lang="eu">Game Boy Advance-ko ROMa</comment>
+ <comment xml:lang="fi">Game Boy Advance -ROM</comment>
+ <comment xml:lang="fo">Game Boy Advance ROM</comment>
+ <comment xml:lang="fr">ROM Game Boy Advance</comment>
++ <comment xml:lang="fur">ROM Game Boy Advance</comment>
+ <comment xml:lang="ga">ROM Game Boy Advance</comment>
+ <comment xml:lang="gl">ROM de Game Boy Advance</comment>
+ <comment xml:lang="he">ROM של Game Boy Advance</comment>
+@@ -11897,7 +12388,7 @@
+ <comment xml:lang="oc">ROM Game Boy Advance</comment>
+ <comment xml:lang="pl">Plik ROM konsoli Game Boy Advance</comment>
+ <comment xml:lang="pt">ROM Game Boy Advance</comment>
+- <comment xml:lang="pt_BR">ROM de Game Boy Advance</comment>
++ <comment xml:lang="pt-BR">ROM de Game Boy Advance</comment>
+ <comment xml:lang="ro">ROM Game Boy Advance</comment>
+ <comment xml:lang="ru">Game Boy Advance ROM</comment>
+ <comment xml:lang="sk">ROM pre Game Boy Advance</comment>
+@@ -11908,19 +12399,26 @@
+ <comment xml:lang="tr">Game Boy Gelişmiş ROM</comment>
+ <comment xml:lang="uk">розширений ППП Game Boy</comment>
+ <comment xml:lang="vi">ROM Game Boy Advance</comment>
+- <comment xml:lang="zh_CN">Game Boy Advance ROM</comment>
+- <comment xml:lang="zh_TW">Game Boy Advance ROM</comment>
++ <comment xml:lang="zh-CN">Game Boy Advance ROM</comment>
++ <comment xml:lang="zh-TW">Game Boy Advance ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.gba"/>
+ <glob pattern="*.agb"/>
+ </mime-type>
+ <mime-type type="application/x-virtual-boy-rom">
+ <comment>Virtual Boy ROM</comment>
++ <comment xml:lang="bg">ROM — Virtual Boy</comment>
+ <comment xml:lang="ca">ROM de Virtual Boy</comment>
+ <comment xml:lang="cs">ROM pro Virtual Boy</comment>
++ <comment xml:lang="da">Virtual Boy-ROM</comment>
+ <comment xml:lang="de">Virtual Boy ROM</comment>
+- <comment xml:lang="en_GB">Virtual Boy ROM</comment>
++ <comment xml:lang="en-GB">Virtual Boy ROM</comment>
+ <comment xml:lang="es">ROM de Virtual Boy</comment>
++ <comment xml:lang="eu">Virtual Boy ROM</comment>
++ <comment xml:lang="fi">Virtual Boy ROM</comment>
++ <comment xml:lang="fr">ROM Virtual Boy</comment>
++ <comment xml:lang="fur">ROM Virtual Boy</comment>
++ <comment xml:lang="ga">ROM Virtual Boy</comment>
+ <comment xml:lang="hr">Virtual Boy ROM</comment>
+ <comment xml:lang="hu">Virtual Boy ROM</comment>
+ <comment xml:lang="id">ROM Virtual Boy</comment>
+@@ -11928,33 +12426,36 @@
+ <comment xml:lang="kk">Virtual Boy ROM</comment>
+ <comment xml:lang="ko">버추얼보이 롬</comment>
+ <comment xml:lang="pl">Plik ROM konsoli Virtual Boy</comment>
+- <comment xml:lang="pt_BR">ROM de Virtual Boy</comment>
++ <comment xml:lang="pt-BR">ROM de Virtual Boy</comment>
+ <comment xml:lang="ru">Virtual Boy ROM</comment>
+ <comment xml:lang="sk">ROM pre Virtual Boy</comment>
+ <comment xml:lang="sv">Virtual Boy-rom</comment>
++ <comment xml:lang="tr">Virtual Boy ROM</comment>
+ <comment xml:lang="uk">ROM Virtual Boy</comment>
+- <comment xml:lang="zh_CN">Virtual Boy ROM</comment>
+- <comment xml:lang="zh_TW">Virtual Boy ROM</comment>
++ <comment xml:lang="zh-CN">Virtual Boy ROM</comment>
++ <comment xml:lang="zh-TW">Virtual Boy ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.vb"/>
+ </mime-type>
+ <mime-type type="application/x-gdbm">
+ <comment>GDBM database</comment>
++ <comment xml:lang="af">GDBM-databasis</comment>
+ <comment xml:lang="ar">قاعدة بيانات GDBM</comment>
+- <comment xml:lang="be@latin">Baza źviestak GDBM</comment>
++ <comment xml:lang="be-Latn">Baza źviestak GDBM</comment>
+ <comment xml:lang="bg">База от данни — GDBM</comment>
+ <comment xml:lang="ca">base de dades GDBM</comment>
+ <comment xml:lang="cs">databáze GDBM</comment>
+ <comment xml:lang="da">GDBM-database</comment>
+ <comment xml:lang="de">GDBM-Datenbank</comment>
+ <comment xml:lang="el">Βάση δεδομένων GDBM</comment>
+- <comment xml:lang="en_GB">GDBM database</comment>
++ <comment xml:lang="en-GB">GDBM database</comment>
+ <comment xml:lang="eo">GDBM-datumbazo</comment>
+ <comment xml:lang="es">base de datos GDBM</comment>
+ <comment xml:lang="eu">GDBM datu-basea</comment>
+ <comment xml:lang="fi">GDBM-tietokanta</comment>
+ <comment xml:lang="fo">GDBM dátustovnur</comment>
+ <comment xml:lang="fr">base de données GDBM</comment>
++ <comment xml:lang="fur">base di dâts GDBM</comment>
+ <comment xml:lang="ga">bunachar sonraí GDBM</comment>
+ <comment xml:lang="gl">base de datos GDBM</comment>
+ <comment xml:lang="he">מסד נתונים GDBM</comment>
+@@ -11975,7 +12476,7 @@
+ <comment xml:lang="oc">banca de donadas GDBM</comment>
+ <comment xml:lang="pl">Baza danych GDBM</comment>
+ <comment xml:lang="pt">base de dados GDMB</comment>
+- <comment xml:lang="pt_BR">Banco de dados GDBM</comment>
++ <comment xml:lang="pt-BR">Banco de dados GDBM</comment>
+ <comment xml:lang="ro">Bază de date GDBM</comment>
+ <comment xml:lang="ru">База данных GDBM</comment>
+ <comment xml:lang="sk">Databáza GDBM</comment>
+@@ -11983,37 +12484,39 @@
+ <comment xml:lang="sq">Bazë me të dhëna GDBM</comment>
+ <comment xml:lang="sr">ГДБМ база података</comment>
+ <comment xml:lang="sv">GDBM-databas</comment>
+- <comment xml:lang="tr">GDBM veritabanı</comment>
++ <comment xml:lang="tr">GDBM veri tabanı</comment>
+ <comment xml:lang="uk">база даних GDBM</comment>
+ <comment xml:lang="vi">Cơ sở dữ liệu GDBM</comment>
+- <comment xml:lang="zh_CN">GDBM 数据库</comment>
+- <comment xml:lang="zh_TW">GDBM 資料庫</comment>
++ <comment xml:lang="zh-CN">GDBM 数据库</comment>
++ <comment xml:lang="zh-TW">GDBM 資料庫</comment>
+ <acronym>GDBM</acronym>
+ <expanded-acronym>GNU Database Manager</expanded-acronym>
+ <magic priority="50">
+- <match value="0x13579ace" type="big32" offset="0"/>
+- <match value="0x13579ace" type="little32" offset="0"/>
+- <match value="GDBM" type="string" offset="0"/>
++ <match type="big32" value="0x13579ace" offset="0"/>
++ <match type="little32" value="0x13579ace" offset="0"/>
++ <match type="string" value="GDBM" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-genesis-rom">
+-
++ <!-- Translate this to Mega Drive if the console was known as such in your locale
++ Should be Mega Drive in all but en_US, Mexico and Canada: https://en.wikipedia.org/wiki/Sega_Genesis#History -->
+ <comment>Genesis ROM</comment>
+ <comment xml:lang="ar">Genesis ROM</comment>
+- <comment xml:lang="be@latin">Genesis ROM</comment>
++ <comment xml:lang="be-Latn">Genesis ROM</comment>
+ <comment xml:lang="bg">ROM — Genesis</comment>
+ <comment xml:lang="ca">ROM de Genesis</comment>
+ <comment xml:lang="cs">ROM pro Genesis</comment>
+- <comment xml:lang="da">Genesis-rom</comment>
++ <comment xml:lang="da">Genesis-ROM</comment>
+ <comment xml:lang="de">Genesis ROM</comment>
+ <comment xml:lang="el">Genesis ROM</comment>
+- <comment xml:lang="en_GB">Genesis ROM</comment>
++ <comment xml:lang="en-GB">Genesis ROM</comment>
+ <comment xml:lang="eo">Genesis-NLM</comment>
+ <comment xml:lang="es">ROM de Genesis (Mega Drive)</comment>
+ <comment xml:lang="eu">Genesis-eko ROMa</comment>
+ <comment xml:lang="fi">Genesis-ROM</comment>
+ <comment xml:lang="fo">Genesis ROM</comment>
+ <comment xml:lang="fr">ROM Mega Drive/Genesis</comment>
++ <comment xml:lang="fur">ROM Sega Mega Drive</comment>
+ <comment xml:lang="ga">ROM Genesis</comment>
+ <comment xml:lang="gl">ROM xenérica</comment>
+ <comment xml:lang="he">ROM מסוג Genesis</comment>
+@@ -12034,7 +12537,7 @@
+ <comment xml:lang="oc">ROM Mega Drive/Genesis</comment>
+ <comment xml:lang="pl">Plik ROM konsoli Mega Drive</comment>
+ <comment xml:lang="pt">ROM Mega Drive</comment>
+- <comment xml:lang="pt_BR">ROM de Genesis (Mega Drive)</comment>
++ <comment xml:lang="pt-BR">ROM de Genesis (Mega Drive)</comment>
+ <comment xml:lang="ro">ROM Genesis</comment>
+ <comment xml:lang="ru">Genesis ROM</comment>
+ <comment xml:lang="sk">ROM pre Megadrive</comment>
+@@ -12045,30 +12548,35 @@
+ <comment xml:lang="tr">Genesis ROM</comment>
+ <comment xml:lang="uk">ППП Genesis</comment>
+ <comment xml:lang="vi">ROM Genesis</comment>
+- <comment xml:lang="zh_CN">Genesis ROM</comment>
+- <comment xml:lang="zh_TW">Genesis ROM</comment>
++ <comment xml:lang="zh-CN">Genesis ROM</comment>
++ <comment xml:lang="zh-TW">Genesis ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <magic priority="50">
+- <match value="SEGA GENESIS" type="string" offset="256"/>
+- <match value="SEGA MEGA DRIVE" type="string" offset="256"/>
+- <match value="EAGN" type="string" offset="640"/>
+- <match value="EAMG" type="string" offset="640"/>
++ <match type="string" value="SEGA GENESIS" offset="256"/>
++ <match type="string" value="SEGA MEGA DRIVE" offset="256"/>
++ <match type="string" value="SEGA_MEGA_DRIVE" offset="256"/>
++ <match type="string" value="EAGN" offset="640"/>
++ <match type="string" value="EAMG" offset="640"/>
+ </magic>
+ <glob pattern="*.gen"/>
+ <glob pattern="*.smd"/>
++ <glob pattern="*.sgd"/>
+ </mime-type>
+ <mime-type type="application/x-genesis-32x-rom">
+-
++ <!-- Translate this to Super 32X, Mega Drive 32X or Mega 32X if the system was known as such in your locale
++ Should be Super 32X in Japan, Mega Drive 32X in PAL region and Mega 32X in Brazil: https://en.wikipedia.org/wiki/32X -->
+ <comment>Genesis 32X ROM</comment>
++ <comment xml:lang="bg">ROM — Genesis 32X</comment>
+ <comment xml:lang="ca">ROM de Genesis 32X</comment>
+ <comment xml:lang="cs">ROM pro Genesis 32X</comment>
+- <comment xml:lang="da">Genesis 32X ROM</comment>
++ <comment xml:lang="da">Genesis 32X-ROM</comment>
+ <comment xml:lang="de">Genesis 32X ROM</comment>
+- <comment xml:lang="en_GB">Genesis 32X ROM</comment>
++ <comment xml:lang="en-GB">Genesis 32X ROM</comment>
+ <comment xml:lang="es">ROM de Genesis 32X</comment>
+ <comment xml:lang="eu">Genesis 32X ROM</comment>
+ <comment xml:lang="fi">Genesis 32X -ROM</comment>
+ <comment xml:lang="fr">ROM Genesis 32X</comment>
++ <comment xml:lang="fur">ROM Sega Mega Drive 32X</comment>
+ <comment xml:lang="ga">ROM Genesis 32X</comment>
+ <comment xml:lang="he">ROM מסוג Genesis 32X</comment>
+ <comment xml:lang="hr">Genesis 32X ROM</comment>
+@@ -12078,39 +12586,41 @@
+ <comment xml:lang="kk">Genesis 32X ROM</comment>
+ <comment xml:lang="ko">제네시스 32X 롬</comment>
+ <comment xml:lang="pl">Plik ROM konsoli Mega Drive 32X</comment>
+- <comment xml:lang="pt_BR">ROM de Genesis 32X</comment>
++ <comment xml:lang="pt-BR">ROM de Genesis 32X</comment>
+ <comment xml:lang="ru">Genesis 32X ROM</comment>
+ <comment xml:lang="sk">ROM pre Genesis 32X</comment>
+ <comment xml:lang="sr">Џенезис 32X РОМ</comment>
+ <comment xml:lang="sv">Mega Drive 32X-rom</comment>
+ <comment xml:lang="tr">Genesis 32X ROM</comment>
+ <comment xml:lang="uk">ППП Genesis 32X</comment>
+- <comment xml:lang="zh_CN">Genesis 32X ROM</comment>
+- <comment xml:lang="zh_TW">Genesis 32X ROM</comment>
++ <comment xml:lang="zh-CN">Genesis 32X ROM</comment>
++ <comment xml:lang="zh-TW">Genesis 32X ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <magic priority="50">
+- <match value="SEGA 32X" type="string" offset="256"/>
++ <match type="string" value="SEGA 32X" offset="256"/>
+ </magic>
+ <glob pattern="*.32x"/>
+ <glob pattern="*.mdx"/>
+ </mime-type>
+ <mime-type type="application/x-gettext-translation">
+ <comment>translated messages (machine-readable)</comment>
++ <comment xml:lang="af">vertaalde boodskappe (masjienleesbaar)</comment>
+ <comment xml:lang="ar">رسائل مترجمة (مقروءة آليا)</comment>
+- <comment xml:lang="be@latin">pierakładzienyja paviedamleńni (dla čytańnia kamputaram)</comment>
++ <comment xml:lang="be-Latn">pierakładzienyja paviedamleńni (dla čytańnia kamputaram)</comment>
+ <comment xml:lang="bg">Преведени съобщения — машинен формат</comment>
+ <comment xml:lang="ca">missatges traduïts (llegible per màquina)</comment>
+ <comment xml:lang="cs">přeložené zprávy (strojově čitelné)</comment>
+ <comment xml:lang="da">oversatte meddelelser (maskinlæsbare)</comment>
+ <comment xml:lang="de">Übersetzte Meldungen (maschinenlesbar)</comment>
+ <comment xml:lang="el">Μεταφρασμένα μηνύματα (για μηχανική ανάγνωση)</comment>
+- <comment xml:lang="en_GB">translated messages (machine-readable)</comment>
++ <comment xml:lang="en-GB">translated messages (machine-readable)</comment>
+ <comment xml:lang="eo">tradukitaj mesaĝoj (maŝinlegebla)</comment>
+ <comment xml:lang="es">mensajes traducidos (legibles por máquinas)</comment>
+ <comment xml:lang="eu">itzulitako mezuak (ordenagailuek irakurtzeko)</comment>
+ <comment xml:lang="fi">käännetyt viestit (koneluettava)</comment>
+ <comment xml:lang="fo">týdd boð (maskin-lesifør)</comment>
+ <comment xml:lang="fr">messages traduits (lisibles par machine)</comment>
++ <comment xml:lang="fur">messaçs tradots (leibii de machine)</comment>
+ <comment xml:lang="ga">teachtaireachtaí aistrithe (inléite ag meaisín)</comment>
+ <comment xml:lang="gl">mensaxes traducidos (lexíbeis por máquinas)</comment>
+ <comment xml:lang="he">הודעות מתורגמות (מובן ע״י מכונה)</comment>
+@@ -12132,7 +12642,7 @@
+ <comment xml:lang="oc">messatges tradusits (legibles per maquina)</comment>
+ <comment xml:lang="pl">Przetłumaczone komunikaty (czytelne dla komputera)</comment>
+ <comment xml:lang="pt">mensagens traduzidas (leitura pelo computador)</comment>
+- <comment xml:lang="pt_BR">Mensagens traduzidas (legível pelo computador)</comment>
++ <comment xml:lang="pt-BR">Mensagens traduzidas (legível pelo computador)</comment>
+ <comment xml:lang="ro">mesaje traduse (citite de calculator)</comment>
+ <comment xml:lang="ru">Переводы сообщений (откомпилированые)</comment>
+ <comment xml:lang="sk">Preložené správy (strojovo čitateľné)</comment>
+@@ -12143,64 +12653,53 @@
+ <comment xml:lang="tr">çevrilmiş iletiler (makine tarafından okunabilir)</comment>
+ <comment xml:lang="uk">перекладені повідомлення (у машинній формі)</comment>
+ <comment xml:lang="vi">thông điệp đã dịch (máy đọc được)</comment>
+- <comment xml:lang="zh_CN">已翻译消息(机读)</comment>
+- <comment xml:lang="zh_TW">翻譯訊息 (程式讀取格式)</comment>
++ <comment xml:lang="zh-CN">已翻译消息(机读)</comment>
++ <comment xml:lang="zh-TW">翻譯訊息 (程式讀取格式)</comment>
+ <magic priority="50">
+- <match value="\336\22\4\225" type="string" offset="0"/>
+- <match value="\225\4\22\336" type="string" offset="0"/>
++ <match type="string" value="\336\22\4\225" offset="0"/>
++ <match type="string" value="\225\4\22\336" offset="0"/>
+ </magic>
+ <glob pattern="*.gmo"/>
+ <glob pattern="*.mo"/>
+ </mime-type>
+ <mime-type type="application/x-gtk-builder">
+- <comment>GTK+ Builder</comment>
+- <comment xml:lang="ca">constructor de GTK+</comment>
+- <comment xml:lang="cs">GTK+ Builder</comment>
+- <comment xml:lang="da">GTK+ Builder</comment>
+- <comment xml:lang="de">GTK+ Builder</comment>
+- <comment xml:lang="el">Δομητής GTK+</comment>
+- <comment xml:lang="en_GB">GTK+ Builder</comment>
+- <comment xml:lang="es">GTK+ Builder</comment>
+- <comment xml:lang="eu">GTK+ Builder</comment>
+- <comment xml:lang="fi">GTK+ Builder</comment>
+- <comment xml:lang="fr">GTK+ Builder</comment>
+- <comment xml:lang="ga">Tógálaí GTK+</comment>
+- <comment xml:lang="gl">Construtor de GTK+</comment>
+- <comment xml:lang="he">בנייה של GTK+‎</comment>
+- <comment xml:lang="hr">GTK+ Builder</comment>
+- <comment xml:lang="hu">GTK+ Builder</comment>
+- <comment xml:lang="ia">GTK+ Builder</comment>
+- <comment xml:lang="id">GTK+ Builder</comment>
+- <comment xml:lang="it">GTK+ Builder</comment>
+- <comment xml:lang="ja">GTK+ Builder</comment>
+- <comment xml:lang="kk">GTK+ Builder</comment>
+- <comment xml:lang="ko">GTK+ 빌더</comment>
+- <comment xml:lang="lv">GTK+ būvētājs</comment>
+- <comment xml:lang="oc">GTK+ Builder</comment>
+- <comment xml:lang="pl">GTK+ Builder</comment>
+- <comment xml:lang="pt">Construtor GTK+</comment>
+- <comment xml:lang="pt_BR">GTK+ Builder</comment>
+- <comment xml:lang="ru">GTK+ Builder</comment>
+- <comment xml:lang="sk">GTK+ Builder</comment>
+- <comment xml:lang="sl">GTK+ Builder</comment>
+- <comment xml:lang="sr">ГТК+ Градитељ</comment>
+- <comment xml:lang="sv">GTK+ Builder</comment>
+- <comment xml:lang="tr">GTK+ İnşa Edici</comment>
+- <comment xml:lang="uk">GTK+ Builder</comment>
+- <comment xml:lang="zh_CN">GTK+ Builder</comment>
+- <comment xml:lang="zh_TW">GTK+ Builder</comment>
++ <comment>GTK+ Builder interface document</comment>
++ <comment xml:lang="bg">Интерфейс — GTK+ Builder</comment>
++ <comment xml:lang="ca">document d'interfície GTK+ Builder</comment>
++ <comment xml:lang="da">GTK+ Builder-brugerflade-dokument</comment>
++ <comment xml:lang="de">GTK+-Builder-Oberflächendokument</comment>
++ <comment xml:lang="en-GB">GTK+ Builder interface document</comment>
++ <comment xml:lang="es">documento de interfaz de GTK Builder</comment>
++ <comment xml:lang="eu">GTK+ Builder interfaze dokumentua</comment>
++ <comment xml:lang="fi">GTK+ Builder -käyttöliittymän asiakirja</comment>
++ <comment xml:lang="fr">document d'interface GTK+ Builder</comment>
++ <comment xml:lang="hr">GTK+ Graditelj dokument sučelja</comment>
++ <comment xml:lang="hu">GTK+ Builder felületleíró dokumentum</comment>
++ <comment xml:lang="id">Dokumen antarmuka GTK+ Builder</comment>
++ <comment xml:lang="it">Documento interfaccia GTK+ Builder</comment>
++ <comment xml:lang="kk">GTK+ Builder интерфейс құжаты</comment>
++ <comment xml:lang="ko">GTK+ 빌더 인터페이스 문서</comment>
++ <comment xml:lang="pl">Dokument interfejsu GTK Builder</comment>
++ <comment xml:lang="pt-BR">Documento de interface do GTK+ Builder</comment>
++ <comment xml:lang="ru">Документ интерфейса GTK+ Builder</comment>
++ <comment xml:lang="sv">GTK+-Builder-gränssnittsdokument</comment>
++ <comment xml:lang="tr">GTK+ Builder arayüz belgesi</comment>
++ <comment xml:lang="uk">документ інтерфейсу GTK+ Builder</comment>
++ <comment xml:lang="zh-CN">GTK+ Builder 界面文档</comment>
++ <comment xml:lang="zh-TW">GTK+ Builder 介面文件</comment>
+ <sub-class-of type="application/xml"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.ui"/>
+ <magic priority="50">
+- <match value="&lt;interface" type="string" offset="0:256"/>
++ <match type="string" value="&lt;interface" offset="0:256"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-glade">
+ <comment>Glade project</comment>
++ <comment xml:lang="af">Glade-projek</comment>
+ <comment xml:lang="ar">مشروع Glade</comment>
+ <comment xml:lang="az">Glade layihəsi</comment>
+- <comment xml:lang="be@latin">Prajekt Glade</comment>
++ <comment xml:lang="be-Latn">Prajekt Glade</comment>
+ <comment xml:lang="bg">Проект — Glade</comment>
+ <comment xml:lang="ca">projecte de Glade</comment>
+ <comment xml:lang="cs">projekt Glade</comment>
+@@ -12208,13 +12707,14 @@
+ <comment xml:lang="da">Gladeprojekt</comment>
+ <comment xml:lang="de">Glade-Projekt</comment>
+ <comment xml:lang="el">Έργο Glade</comment>
+- <comment xml:lang="en_GB">Glade project</comment>
++ <comment xml:lang="en-GB">Glade project</comment>
+ <comment xml:lang="eo">Glade-projekto</comment>
+ <comment xml:lang="es">proyecto de Glade</comment>
+ <comment xml:lang="eu">Glade proiektua</comment>
+ <comment xml:lang="fi">Glade-projekti</comment>
+ <comment xml:lang="fo">Glade verkætlan</comment>
+ <comment xml:lang="fr">projet Glade</comment>
++ <comment xml:lang="fur">progjet Glade</comment>
+ <comment xml:lang="ga">tionscadal Glade</comment>
+ <comment xml:lang="gl">proxecto de Glade</comment>
+ <comment xml:lang="he">מיזם Glade</comment>
+@@ -12235,7 +12735,7 @@
+ <comment xml:lang="oc">projècte Glade</comment>
+ <comment xml:lang="pl">Projekt Glade</comment>
+ <comment xml:lang="pt">projecto Glade</comment>
+- <comment xml:lang="pt_BR">Projeto do Glade</comment>
++ <comment xml:lang="pt-BR">Projeto do Glade</comment>
+ <comment xml:lang="ro">Proiect Glade</comment>
+ <comment xml:lang="ru">Проект Glade</comment>
+ <comment xml:lang="sk">Projekt Glade</comment>
+@@ -12244,19 +12744,20 @@
+ <comment xml:lang="sr">Глејдов пројекат</comment>
+ <comment xml:lang="sv">Glade-projekt</comment>
+ <comment xml:lang="tr">Glade projesi</comment>
+- <comment xml:lang="uk">проект Glade</comment>
++ <comment xml:lang="uk">проєкт Glade</comment>
+ <comment xml:lang="vi">Dự án Glade</comment>
+- <comment xml:lang="zh_CN">Glade 工程</comment>
+- <comment xml:lang="zh_TW">Glade 專案</comment>
++ <comment xml:lang="zh-CN">Glade 工程</comment>
++ <comment xml:lang="zh-TW">Glade 專案</comment>
+ <sub-class-of type="application/xml"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.glade"/>
+ <magic priority="50">
+- <match value="&lt;glade-interface" type="string" offset="0:256"/>
++ <match type="string" value="&lt;glade-interface" offset="0:256"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-gnucash">
+ <comment>GnuCash financial data</comment>
++ <comment xml:lang="af">GnuCash finansiële data</comment>
+ <comment xml:lang="ar">معلومات GnuCash المالية</comment>
+ <comment xml:lang="bg">Финансови данни — GnuCash</comment>
+ <comment xml:lang="ca">dades financeres de GnuCash</comment>
+@@ -12264,12 +12765,13 @@
+ <comment xml:lang="da">Finansielle data til GnuCash</comment>
+ <comment xml:lang="de">GnuCash-Finanzdaten</comment>
+ <comment xml:lang="el">Οικονομικά στοιχεία GnuCash</comment>
+- <comment xml:lang="en_GB">GnuCash financial data</comment>
++ <comment xml:lang="en-GB">GnuCash financial data</comment>
+ <comment xml:lang="es">datos financieros de GnuCash</comment>
+ <comment xml:lang="eu">GnuCash finantzako datuak</comment>
+ <comment xml:lang="fi">GnuCash-taloustiedot</comment>
+ <comment xml:lang="fo">GnuCash fíggjarligar dátur</comment>
+ <comment xml:lang="fr">données financières GnuCash</comment>
++ <comment xml:lang="fur">dâts finanziaris GnuCash</comment>
+ <comment xml:lang="ga">sonraí airgeadúla GnuCash</comment>
+ <comment xml:lang="gl">datos financeiros de GNUCash</comment>
+ <comment xml:lang="he">מידע כלכלי של GnuCash</comment>
+@@ -12287,7 +12789,7 @@
+ <comment xml:lang="oc">donadas financières GnuCash</comment>
+ <comment xml:lang="pl">Dane finansowe GnuCash</comment>
+ <comment xml:lang="pt">dados financeiros GnuCash</comment>
+- <comment xml:lang="pt_BR">Dados financeiros do GnuCash</comment>
++ <comment xml:lang="pt-BR">Dados financeiros do GnuCash</comment>
+ <comment xml:lang="ro">Date financiare GnuCash</comment>
+ <comment xml:lang="ru">Финансовые данные GnuCash</comment>
+ <comment xml:lang="sk">Finančné údaje GnuCash</comment>
+@@ -12297,8 +12799,8 @@
+ <comment xml:lang="tr">GnuCash mali verisi</comment>
+ <comment xml:lang="uk">фінансові дані GnuCash</comment>
+ <comment xml:lang="vi">Dữ liệu tài chính GnuCash</comment>
+- <comment xml:lang="zh_CN">GnuCash 财务数据</comment>
+- <comment xml:lang="zh_TW">GnuCash 財務資料</comment>
++ <comment xml:lang="zh-CN">GnuCash 财务数据</comment>
++ <comment xml:lang="zh-TW">GnuCash 財務資料</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <glob pattern="*.gnucash"/>
+ <glob pattern="*.gnc"/>
+@@ -12306,21 +12808,23 @@
+ </mime-type>
+ <mime-type type="application/x-gnumeric">
+ <comment>Gnumeric spreadsheet</comment>
++ <comment xml:lang="af">Gnumeric-sigblad</comment>
+ <comment xml:lang="ar">جدول Gnumeric</comment>
+- <comment xml:lang="be@latin">Raźlikovy arkuš Gnumeric</comment>
++ <comment xml:lang="be-Latn">Raźlikovy arkuš Gnumeric</comment>
+ <comment xml:lang="bg">Таблица — Gnumeric</comment>
+ <comment xml:lang="ca">full de càlcul de Gnumeric</comment>
+ <comment xml:lang="cs">sešit Gnumeric</comment>
+ <comment xml:lang="da">Gnumeric-regneark</comment>
+ <comment xml:lang="de">Gnumeric-Tabelle</comment>
+ <comment xml:lang="el">Λογιστικό φύλλο Gnumeric</comment>
+- <comment xml:lang="en_GB">Gnumeric spreadsheet</comment>
++ <comment xml:lang="en-GB">Gnumeric spreadsheet</comment>
+ <comment xml:lang="eo">Gnumeric-kalkultabelo</comment>
+ <comment xml:lang="es">hoja de cálculo de Gnumeric</comment>
+ <comment xml:lang="eu">Gnumeric kalkulu-orria</comment>
+ <comment xml:lang="fi">Gnumeric-taulukko</comment>
+ <comment xml:lang="fo">Gnumeric rokniark</comment>
+ <comment xml:lang="fr">feuille de calcul Gnumeric</comment>
++ <comment xml:lang="fur">sfuei di calcul Gnumeric</comment>
+ <comment xml:lang="ga">scarbhileog Gnumeric</comment>
+ <comment xml:lang="gl">folla de cálculo de Gnumeric</comment>
+ <comment xml:lang="he">גליון עבודה Gnumeric</comment>
+@@ -12341,7 +12845,7 @@
+ <comment xml:lang="oc">fuèlh de calcul Gnumeric</comment>
+ <comment xml:lang="pl">Arkusz Gnumeric</comment>
+ <comment xml:lang="pt">folha de cálculo Gnumeric</comment>
+- <comment xml:lang="pt_BR">Planilha do Gnumeric</comment>
++ <comment xml:lang="pt-BR">Planilha do Gnumeric</comment>
+ <comment xml:lang="ro">Foaie de calcul Gnumeric</comment>
+ <comment xml:lang="ru">Электронная таблица Gnumeric</comment>
+ <comment xml:lang="sk">Zošit Gnumeric</comment>
+@@ -12349,36 +12853,38 @@
+ <comment xml:lang="sq">Fletë llogaritjesh Gnumeric</comment>
+ <comment xml:lang="sr">табела Гномовог бројевника</comment>
+ <comment xml:lang="sv">Gnumeric-kalkylblad</comment>
+- <comment xml:lang="tr">Gnumeric çalışma sayfası</comment>
++ <comment xml:lang="tr">Gnumeric hesap çizelgesi</comment>
+ <comment xml:lang="uk">ел. таблиця Gnumeric</comment>
+ <comment xml:lang="vi">Bảng tính Gnumeric.</comment>
+- <comment xml:lang="zh_CN">Gnumeric 电子表格</comment>
+- <comment xml:lang="zh_TW">Gnumeric 試算表</comment>
++ <comment xml:lang="zh-CN">Gnumeric 电子表格</comment>
++ <comment xml:lang="zh-TW">Gnumeric 試算表</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <magic priority="50">
+- <match value="gmr:Workbook" type="string" offset="0:64"/>
+- <match value="gnm:Workbook" type="string" offset="0:64"/>
++ <match type="string" value="gmr:Workbook" offset="0:64"/>
++ <match type="string" value="gnm:Workbook" offset="0:64"/>
+ </magic>
+ <glob pattern="*.gnumeric"/>
+ </mime-type>
+ <mime-type type="application/x-gnuplot">
+ <comment>Gnuplot document</comment>
++ <comment xml:lang="af">Gnuplot-dokument</comment>
+ <comment xml:lang="ar">مستند Gnuplot</comment>
+ <comment xml:lang="ast">Documentu de Gnuplot</comment>
+- <comment xml:lang="be@latin">Dakument Gnuplot</comment>
++ <comment xml:lang="be-Latn">Dakument Gnuplot</comment>
+ <comment xml:lang="bg">Документ — Gnuplot</comment>
+ <comment xml:lang="ca">document gnuplot</comment>
+ <comment xml:lang="cs">dokument Gnuplot</comment>
+- <comment xml:lang="da">Gnuplotdokument</comment>
++ <comment xml:lang="da">Gnuplot-dokument</comment>
+ <comment xml:lang="de">Gnuplot-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Gnuplot</comment>
+- <comment xml:lang="en_GB">Gnuplot document</comment>
++ <comment xml:lang="en-GB">Gnuplot document</comment>
+ <comment xml:lang="eo">Gnuplot-dokumento</comment>
+ <comment xml:lang="es">documento de Gnuplot</comment>
+ <comment xml:lang="eu">Gnuplot dokumentua</comment>
+ <comment xml:lang="fi">Gnuplot-asiakirja</comment>
+ <comment xml:lang="fo">Gnuplot skjal</comment>
+ <comment xml:lang="fr">document Gnuplot</comment>
++ <comment xml:lang="fur">document Gnuplot</comment>
+ <comment xml:lang="ga">cáipéis Gnuplot</comment>
+ <comment xml:lang="gl">documento de Gnuplot</comment>
+ <comment xml:lang="he">מסמך Gnuplot</comment>
+@@ -12398,7 +12904,7 @@
+ <comment xml:lang="oc">document Gnuplot</comment>
+ <comment xml:lang="pl">Dokument Gnuplot</comment>
+ <comment xml:lang="pt">documento Gnuplot</comment>
+- <comment xml:lang="pt_BR">Documento do Gnuplot</comment>
++ <comment xml:lang="pt-BR">Documento do Gnuplot</comment>
+ <comment xml:lang="ro">Document Gnuplot</comment>
+ <comment xml:lang="ru">Документ Gnuplot</comment>
+ <comment xml:lang="sk">Dokument Gnuplot</comment>
+@@ -12409,8 +12915,8 @@
+ <comment xml:lang="tr">Gnuplot belgesi</comment>
+ <comment xml:lang="uk">документ Gnuplot</comment>
+ <comment xml:lang="vi">Tài liệu Gnuplot</comment>
+- <comment xml:lang="zh_CN">Gnuplot 文档</comment>
+- <comment xml:lang="zh_TW">Gnuplot 文件</comment>
++ <comment xml:lang="zh-CN">Gnuplot 文档</comment>
++ <comment xml:lang="zh-TW">Gnuplot 文件</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.gp"/>
+@@ -12420,20 +12926,21 @@
+ <mime-type type="application/x-graphite">
+ <comment>Graphite scientific graph</comment>
+ <comment xml:lang="ar">مبيان الجرافيت العلمي</comment>
+- <comment xml:lang="be@latin">Navukovy hrafik Graphite</comment>
++ <comment xml:lang="be-Latn">Navukovy hrafik Graphite</comment>
+ <comment xml:lang="bg">Графика — Graphite</comment>
+ <comment xml:lang="ca">gràfic científic Graphite</comment>
+ <comment xml:lang="cs">vědecký graf Graphite</comment>
+ <comment xml:lang="da">Graphite videnskabelig graf</comment>
+ <comment xml:lang="de">Wissenschaftlicher Graphite-Graph</comment>
+ <comment xml:lang="el">Επιστημονικό γράφημα Graphite</comment>
+- <comment xml:lang="en_GB">Graphite scientific graph</comment>
++ <comment xml:lang="en-GB">Graphite scientific graph</comment>
+ <comment xml:lang="eo">scienca grafikaĵo de Graphite</comment>
+ <comment xml:lang="es">gráfico científico de Graphite</comment>
+ <comment xml:lang="eu">Graphite - grafiko zientifikoak</comment>
+ <comment xml:lang="fi">Graphite- tieteellinen graafi</comment>
+ <comment xml:lang="fo">Grapite vísindarlig ritmynd</comment>
+ <comment xml:lang="fr">graphe Graphite scientific</comment>
++ <comment xml:lang="fur">grafic sientific Graphite</comment>
+ <comment xml:lang="ga">graf eolaíochta Graphite</comment>
+ <comment xml:lang="gl">gráfica científica de Graphite</comment>
+ <comment xml:lang="he">תרשים מדעי של Graphite</comment>
+@@ -12454,7 +12961,7 @@
+ <comment xml:lang="oc">graphe Graphite scientific</comment>
+ <comment xml:lang="pl">Wykres naukowy Graphite</comment>
+ <comment xml:lang="pt">gráfico científico Graphite</comment>
+- <comment xml:lang="pt_BR">Gráfico científico do Graphite</comment>
++ <comment xml:lang="pt-BR">Gráfico científico do Graphite</comment>
+ <comment xml:lang="ro">Grafic științific Graphite</comment>
+ <comment xml:lang="ru">Научная диаграмма Graphite</comment>
+ <comment xml:lang="sk">Vedecký graf Graphite</comment>
+@@ -12465,28 +12972,29 @@
+ <comment xml:lang="tr">Graphite bilimsel grafiği</comment>
+ <comment xml:lang="uk">наукова графіка Graphite</comment>
+ <comment xml:lang="vi">Biểu đồ khoa học Graphite</comment>
+- <comment xml:lang="zh_CN">Graphite 科学图形</comment>
+- <comment xml:lang="zh_TW">Graphite 科學圖表</comment>
++ <comment xml:lang="zh-CN">Graphite 科学图形</comment>
++ <comment xml:lang="zh-TW">Graphite 科學圖表</comment>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.gra"/>
+ </mime-type>
+ <mime-type type="application/x-gtktalog">
+ <comment>GTKtalog catalog</comment>
+ <comment xml:lang="ar">كتالوج GTKtalog</comment>
+- <comment xml:lang="be@latin">Kataloh GTKtalog</comment>
++ <comment xml:lang="be-Latn">Kataloh GTKtalog</comment>
+ <comment xml:lang="bg">Каталог — Gtktalog</comment>
+ <comment xml:lang="ca">catàleg de GTKtalog</comment>
+ <comment xml:lang="cs">katalog GTKtalog</comment>
+ <comment xml:lang="da">GTKtalog-katalog</comment>
+ <comment xml:lang="de">GTKtalog-Katalog</comment>
+ <comment xml:lang="el">Κατάλογος GTKtalog</comment>
+- <comment xml:lang="en_GB">GTKtalog catalogue</comment>
++ <comment xml:lang="en-GB">GTKtalog catalogue</comment>
+ <comment xml:lang="eo">katalogo de GTKtalog</comment>
+ <comment xml:lang="es">catálogo de GTKtalog</comment>
+ <comment xml:lang="eu">Gtktalog katalogoa</comment>
+ <comment xml:lang="fi">GTKtalog-luettelo</comment>
+ <comment xml:lang="fo">GTKtalog skrá</comment>
+ <comment xml:lang="fr">catalogue Gtktalog</comment>
++ <comment xml:lang="fur">catalic GTKtalog</comment>
+ <comment xml:lang="ga">catalóg GTKtalog</comment>
+ <comment xml:lang="gl">catálogo de GTKtalog</comment>
+ <comment xml:lang="he">קטלוג GTKtalog</comment>
+@@ -12508,7 +13016,7 @@
+ <comment xml:lang="oc">catalòg Gtktalog</comment>
+ <comment xml:lang="pl">Katalog programu GTKtalog</comment>
+ <comment xml:lang="pt">catálogo GTKtalog</comment>
+- <comment xml:lang="pt_BR">Catálogo GTKtalog</comment>
++ <comment xml:lang="pt-BR">Catálogo GTKtalog</comment>
+ <comment xml:lang="ro">Catalog GTKalog</comment>
+ <comment xml:lang="ru">Каталог GTKtalog</comment>
+ <comment xml:lang="sk">Katalóg GTKtalog</comment>
+@@ -12516,38 +13024,40 @@
+ <comment xml:lang="sq">Katallog GTKtalog</comment>
+ <comment xml:lang="sr">каталог ГТКталога</comment>
+ <comment xml:lang="sv">GTKtalog-katalog</comment>
+- <comment xml:lang="tr">Gtktalog kataloğu</comment>
++ <comment xml:lang="tr">GTKtalog kataloğu</comment>
+ <comment xml:lang="uk">каталог GTKtalog</comment>
+ <comment xml:lang="vi">Phân loại GTKtalog</comment>
+- <comment xml:lang="zh_CN">GTKtalog 目录</comment>
+- <comment xml:lang="zh_TW">GTKtalog 光碟目錄</comment>
++ <comment xml:lang="zh-CN">GTKtalog 目录</comment>
++ <comment xml:lang="zh-TW">GTKtalog 光碟目錄</comment>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="gtktalog " type="string" offset="4"/>
++ <match type="string" value="gtktalog " offset="4"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-gzdvi">
+ <comment>TeX DVI document (gzip-compressed)</comment>
++ <comment xml:lang="af">TeX DVI-dokument (gzip-saamgepers)</comment>
+ <comment xml:lang="ar">مستند TeX DVI (مضغوط-gzip)</comment>
+ <comment xml:lang="ast">Documentu Tex DVI (comprimíu en gzip)</comment>
+- <comment xml:lang="be@latin">Dakument TeX DVI (gzip-skampresavany)</comment>
++ <comment xml:lang="be-Latn">Dakument TeX DVI (gzip-skampresavany)</comment>
+ <comment xml:lang="bg">Документ — TeX DVI, компресиран с gzip</comment>
+ <comment xml:lang="ca">document DVI de TeX (amb compressió gzip)</comment>
+ <comment xml:lang="cs">dokument TeX DVI (komprimovaný pomocí gzip)</comment>
+ <comment xml:lang="da">TeX DVI-dokument (gzip-komprimeret)</comment>
+ <comment xml:lang="de">TeX-DVI-Dokument (gzip-komprimiert)</comment>
+ <comment xml:lang="el">Έγγραφο TeX DVI (συμπιεσμένο με gzip)</comment>
+- <comment xml:lang="en_GB">TeX DVI document (gzip-compressed)</comment>
++ <comment xml:lang="en-GB">TeX DVI document (gzip-compressed)</comment>
+ <comment xml:lang="es">documento DVI de TeX (comprimido con gzip)</comment>
+ <comment xml:lang="eu">TeX DVI dokumentua (gzip-ekin konprimitua)</comment>
+ <comment xml:lang="fi">TeX DVI -asiakirja (gzip-pakattu)</comment>
+ <comment xml:lang="fo">TeX DVI skjal (gzip-stappað)</comment>
+ <comment xml:lang="fr">document DVI TeX (compressé gzip)</comment>
++ <comment xml:lang="fur">document DVI TeX (comprimût cun gzip)</comment>
+ <comment xml:lang="ga">cáipéis DVI TeX (comhbhrúite le gzip)</comment>
+ <comment xml:lang="gl">documento DVI de TeX (comprimido con gzip)</comment>
+ <comment xml:lang="he">מסמך מסוג TeX DVI (מכווץ ע״י gzip)</comment>
+ <comment xml:lang="hr">TeX DVI dokument (gzip sažet)</comment>
+- <comment xml:lang="hu">TeX DVI dokumentum (gzip-pel tömörítve)</comment>
++ <comment xml:lang="hu">TeX DVI dokumentum (gzip tömörítésű)</comment>
+ <comment xml:lang="ia">Documento TeX DVI (comprimite con gzip)</comment>
+ <comment xml:lang="id">Dokumen TeX DVI (terkompresi gzip)</comment>
+ <comment xml:lang="it">Documento Tex DVI (compresso con gzip)</comment>
+@@ -12562,7 +13072,7 @@
+ <comment xml:lang="oc">document DVI TeX (compressat gzip)</comment>
+ <comment xml:lang="pl">Dokument TeX DVI (kompresja gzip)</comment>
+ <comment xml:lang="pt">documento TeX DVI (compressão gzip)</comment>
+- <comment xml:lang="pt_BR">Documento DVI TeX (compactado com gzip)</comment>
++ <comment xml:lang="pt-BR">Documento DVI TeX (compactado com gzip)</comment>
+ <comment xml:lang="ro">Document TeX DVI (comprimat gzip)</comment>
+ <comment xml:lang="ru">Документ TeX DVI (сжатый gzip)</comment>
+ <comment xml:lang="sk">Dokument TeX DVI (komprimovaný pomocou gzip)</comment>
+@@ -12573,29 +13083,31 @@
+ <comment xml:lang="tr">TeX DVI belgesi (gzip ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">документ TeX DVI (стиснений gzip)</comment>
+ <comment xml:lang="vi">Tài liệu DVI TeX (đã nén gzip)</comment>
+- <comment xml:lang="zh_CN">TeX DVI 文档(gzip 压缩)</comment>
+- <comment xml:lang="zh_TW">TeX DVI 文件 (gzip 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">TeX DVI 文档(gzip 压缩)</comment>
++ <comment xml:lang="zh-TW">TeX DVI 文件 (gzip 壓縮)</comment>
+ <sub-class-of type="application/gzip"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.dvi.gz"/>
+ </mime-type>
+ <mime-type type="application/gzip">
+ <comment>Gzip archive</comment>
++ <comment xml:lang="af">Gzip-argief</comment>
+ <comment xml:lang="ar">أرشيف Gzip</comment>
+- <comment xml:lang="be@latin">Archiŭ gzip</comment>
++ <comment xml:lang="be-Latn">Archiŭ gzip</comment>
+ <comment xml:lang="bg">Архив — gzip</comment>
+ <comment xml:lang="ca">arxiu gzip</comment>
+ <comment xml:lang="cs">archiv gzip</comment>
+ <comment xml:lang="da">Gzip-arkiv</comment>
+ <comment xml:lang="de">Gzip-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο Gzip</comment>
+- <comment xml:lang="en_GB">Gzip archive</comment>
++ <comment xml:lang="en-GB">Gzip archive</comment>
+ <comment xml:lang="eo">Gzip-arkivo</comment>
+ <comment xml:lang="es">archivador Gzip</comment>
+ <comment xml:lang="eu">Gzip artxiboa</comment>
+ <comment xml:lang="fi">Gzip-arkisto</comment>
+ <comment xml:lang="fo">Gzip skjalasavn</comment>
+ <comment xml:lang="fr">archive gzip</comment>
++ <comment xml:lang="fur">archivi Gzip</comment>
+ <comment xml:lang="ga">cartlann Gzip</comment>
+ <comment xml:lang="gl">arquivo Gzip</comment>
+ <comment xml:lang="he">ארכיון Gzip</comment>
+@@ -12615,10 +13127,10 @@
+ <comment xml:lang="oc">archiu gzip</comment>
+ <comment xml:lang="pl">Archiwum gzip</comment>
+ <comment xml:lang="pt">arquivo Gzip</comment>
+- <comment xml:lang="pt_BR">Pacote Gzip</comment>
++ <comment xml:lang="pt-BR">Pacote Gzip</comment>
+ <comment xml:lang="ro">Arhivă Gzip</comment>
+ <comment xml:lang="ru">Архив GZIP</comment>
+- <comment xml:lang="sk">Archív gzip</comment>
++ <comment xml:lang="sk">Archív Gzip</comment>
+ <comment xml:lang="sl">Datoteka arhiva Gzip</comment>
+ <comment xml:lang="sq">Arkiv gzip</comment>
+ <comment xml:lang="sr">Гзип архива</comment>
+@@ -12626,37 +13138,39 @@
+ <comment xml:lang="tr">Gzip arşivi</comment>
+ <comment xml:lang="uk">архів gzip</comment>
+ <comment xml:lang="vi">Kho nén gzip</comment>
+- <comment xml:lang="zh_CN">Gzip 归档文件</comment>
+- <comment xml:lang="zh_TW">Gzip 封存檔</comment>
++ <comment xml:lang="zh-CN">Gzip 归档文件</comment>
++ <comment xml:lang="zh-TW">Gzip 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="50">
+- <match value="\037\213" type="string" offset="0"/>
++ <match type="string" value="\037\213" offset="0"/>
+ </magic>
+ <glob pattern="*.gz"/>
+ <alias type="application/x-gzip"/>
+ </mime-type>
+ <mime-type type="application/x-gzpdf">
+ <comment>PDF document (gzip-compressed)</comment>
++ <comment xml:lang="af">PDF-dokument (gzip-saamgepers)</comment>
+ <comment xml:lang="ar">مستند PDF (مضغوط-gzip)</comment>
+ <comment xml:lang="ast">Documentu PDF (comprimíu en gzip)</comment>
+- <comment xml:lang="be@latin">Dakument PDF (gzip-skampresavany)</comment>
++ <comment xml:lang="be-Latn">Dakument PDF (gzip-skampresavany)</comment>
+ <comment xml:lang="bg">Документ — PDF, компресиран с gzip</comment>
+ <comment xml:lang="ca">document PDF (amb compressió gzip)</comment>
+ <comment xml:lang="cs">dokument PDF (komprimovaný pomocí gzip)</comment>
+ <comment xml:lang="da">PDF-dokument (gzip-komprimeret)</comment>
+ <comment xml:lang="de">PDF-Dokument (gzip-komprimiert)</comment>
+ <comment xml:lang="el">Έγγραφο PDF (συμπιεσμένο με gzip)</comment>
+- <comment xml:lang="en_GB">PDF document (gzip-compressed)</comment>
++ <comment xml:lang="en-GB">PDF document (gzip-compressed)</comment>
+ <comment xml:lang="es">documento PDF (comprimido con gzip)</comment>
+ <comment xml:lang="eu">PDF dokumentua (gzip-ekin konprimitua)</comment>
+ <comment xml:lang="fi">PDF-asiakirja (gzip-pakattu)</comment>
+ <comment xml:lang="fo">PDF skjal (gzip-stappað)</comment>
+ <comment xml:lang="fr">document PDF (compressé gzip)</comment>
++ <comment xml:lang="fur">document PDF (comprimût cun gzip)</comment>
+ <comment xml:lang="ga">cáipéis PDF (comhbhrúite le gzip)</comment>
+ <comment xml:lang="gl">documento PDF (comprimido en gzip)</comment>
+ <comment xml:lang="he">מסמך PDF (מכווץ ע״י gzip)</comment>
+ <comment xml:lang="hr">PDF dokument (gzip sažet)</comment>
+- <comment xml:lang="hu">PDF dokumentum (gzip-tömörítésű)</comment>
++ <comment xml:lang="hu">PDF dokumentum (gzip tömörítésű)</comment>
+ <comment xml:lang="ia">Documento PDF (comprimite con gzip)</comment>
+ <comment xml:lang="id">Dokumen PDF (terkompresi gzip)</comment>
+ <comment xml:lang="it">Documento PDF (compresso con gzip)</comment>
+@@ -12671,7 +13185,7 @@
+ <comment xml:lang="oc">document PDF (compressat gzip)</comment>
+ <comment xml:lang="pl">Dokument PDF (kompresja gzip)</comment>
+ <comment xml:lang="pt">documento PDF (compressão gzip)</comment>
+- <comment xml:lang="pt_BR">Documento PDF (compactado com gzip)</comment>
++ <comment xml:lang="pt-BR">Documento PDF (compactado com gzip)</comment>
+ <comment xml:lang="ro">Document PDF (comprimat gzip)</comment>
+ <comment xml:lang="ru">Документ PDF (сжатый gzip)</comment>
+ <comment xml:lang="sk">Dokument PDF (komprimovaný pomocou gzip)</comment>
+@@ -12682,35 +13196,37 @@
+ <comment xml:lang="tr">PDF belgesi (gzip ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">документ PDF (стиснений gzip)</comment>
+ <comment xml:lang="vi">Tài liệu PDF (đã nén gzip)</comment>
+- <comment xml:lang="zh_CN">PDF 文档(gzip 压缩)</comment>
+- <comment xml:lang="zh_TW">PDF 文件 (gzip 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">PDF 文档(gzip 压缩)</comment>
++ <comment xml:lang="zh-TW">PDF 文件 (gzip 壓縮)</comment>
+ <sub-class-of type="application/gzip"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.pdf.gz"/>
+ </mime-type>
+ <mime-type type="application/x-gzpostscript">
+ <comment>PostScript document (gzip-compressed)</comment>
++ <comment xml:lang="af">PostScript-dokument (gzip-saamgepers)</comment>
+ <comment xml:lang="ar">مستند PostScript (مضغوط-gzip)</comment>
+ <comment xml:lang="ast">Documentu PostScript (comprimíu en gzip)</comment>
+- <comment xml:lang="be@latin">Dakument PostScript (gzip-skampresavany)</comment>
++ <comment xml:lang="be-Latn">Dakument PostScript (gzip-skampresavany)</comment>
+ <comment xml:lang="bg">Документ — PostScript, компресиран с gzip</comment>
+ <comment xml:lang="ca">document PostScript (amb compressió gzip)</comment>
+ <comment xml:lang="cs">dokument PostScript (komprimovaný pomocí gzip)</comment>
+ <comment xml:lang="da">PostScript-dokument (gzip-komprimeret)</comment>
+ <comment xml:lang="de">PostScript-Dokument (gzip-komprimiert)</comment>
+ <comment xml:lang="el">Έγγραφο PostScript (συμπιεσμένο με gzip)</comment>
+- <comment xml:lang="en_GB">PostScript document (gzip-compressed)</comment>
++ <comment xml:lang="en-GB">PostScript document (gzip-compressed)</comment>
+ <comment xml:lang="eo">PostScript-dokumento (kunpremita per gzip)</comment>
+ <comment xml:lang="es">documento PostScript (comprimido con gzip)</comment>
+ <comment xml:lang="eu">PostScript dokumentua (gzip-konprimitua)</comment>
+ <comment xml:lang="fi">PostScript-asiakirja (gzip-pakattu)</comment>
+ <comment xml:lang="fo">PostScript skjal (gzip-stappað)</comment>
+ <comment xml:lang="fr">document PostScript (compressé gzip)</comment>
++ <comment xml:lang="fur">document PostScript (comprimût cun gzip)</comment>
+ <comment xml:lang="ga">cáipéis PostScript (comhbhrúite le gzip)</comment>
+ <comment xml:lang="gl">documento PostScript (comprimido con gzip)</comment>
+ <comment xml:lang="he">מסמך PostScript (מכוות ע״י gzip)</comment>
+ <comment xml:lang="hr">PostScript dokument (gzip sažet)</comment>
+- <comment xml:lang="hu">PostScript-dokumentum (gzip-pel tömörítve)</comment>
++ <comment xml:lang="hu">PostScript-dokumentum (gzip tömörítésű)</comment>
+ <comment xml:lang="ia">Documento PostScript (comprimite con gzip)</comment>
+ <comment xml:lang="id">Dokumen PostScript (terkompresi gzip)</comment>
+ <comment xml:lang="it">Documento PostScript (compresso con gzip)</comment>
+@@ -12724,9 +13240,9 @@
+ <comment xml:lang="nl">PostScript-document (ingepakt met gzip)</comment>
+ <comment xml:lang="nn">PostScript-dokument (pakka med gzip)</comment>
+ <comment xml:lang="oc">document PostEscript (compressat gzip)</comment>
+- <comment xml:lang="pl">Dokument Postscript (kompresja gzip)</comment>
++ <comment xml:lang="pl">Dokument PostScript (kompresja gzip)</comment>
+ <comment xml:lang="pt">documento PostScript (compressão gzip)</comment>
+- <comment xml:lang="pt_BR">Documento PostScript (compactado com gzip)</comment>
++ <comment xml:lang="pt-BR">Documento PostScript (compactado com gzip)</comment>
+ <comment xml:lang="ro">Document PostScript (comprimat gzip)</comment>
+ <comment xml:lang="ru">Документ PostScript (сжатый gzip)</comment>
+ <comment xml:lang="sk">Dokument PostScript (komprimovaný pomocou gzip)</comment>
+@@ -12737,18 +13253,19 @@
+ <comment xml:lang="tr">PostScript belgesi (gzip ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">документ PostScript (стиснене gzip)</comment>
+ <comment xml:lang="vi">Tài liệu PostScript (đã nén gzip)</comment>
+- <comment xml:lang="zh_CN">PostScript 文档(gzip 压缩)</comment>
+- <comment xml:lang="zh_TW">PostScript 文件 (gzip 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">PostScript 文档(gzip 压缩)</comment>
++ <comment xml:lang="zh-TW">PostScript 文件 (gzip 壓縮)</comment>
+ <sub-class-of type="application/gzip"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.ps.gz"/>
+ </mime-type>
+ <mime-type type="application/x-hdf">
+ <comment>HDF document</comment>
++ <comment xml:lang="af">HDF-dokument</comment>
+ <comment xml:lang="ar">مستند HDF</comment>
+ <comment xml:lang="ast">Documentu HDF</comment>
+ <comment xml:lang="az">HDF sənədi</comment>
+- <comment xml:lang="be@latin">Dakument HDF</comment>
++ <comment xml:lang="be-Latn">Dakument HDF</comment>
+ <comment xml:lang="bg">Документ — HDF</comment>
+ <comment xml:lang="ca">document HDF</comment>
+ <comment xml:lang="cs">dokument HDF</comment>
+@@ -12756,13 +13273,14 @@
+ <comment xml:lang="da">HDF-dokument</comment>
+ <comment xml:lang="de">HDF-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο HDF</comment>
+- <comment xml:lang="en_GB">HDF document</comment>
++ <comment xml:lang="en-GB">HDF document</comment>
+ <comment xml:lang="eo">HDF-dokumento</comment>
+ <comment xml:lang="es">documento HDF</comment>
+ <comment xml:lang="eu">HDF dokumentua</comment>
+ <comment xml:lang="fi">HDF-asiakirja</comment>
+ <comment xml:lang="fo">HDF skjal</comment>
+ <comment xml:lang="fr">document HDF</comment>
++ <comment xml:lang="fur">document HDF</comment>
+ <comment xml:lang="ga">cáipéis HDF</comment>
+ <comment xml:lang="gl">documento HDF</comment>
+ <comment xml:lang="he">מסמך HDF</comment>
+@@ -12783,7 +13301,7 @@
+ <comment xml:lang="oc">document HDF</comment>
+ <comment xml:lang="pl">Dokument HDF</comment>
+ <comment xml:lang="pt">documento HDF</comment>
+- <comment xml:lang="pt_BR">Documento HDF</comment>
++ <comment xml:lang="pt-BR">Documento HDF</comment>
+ <comment xml:lang="ro">Document HDF</comment>
+ <comment xml:lang="ru">Документ HDF</comment>
+ <comment xml:lang="sk">Dokument HDF</comment>
+@@ -12794,14 +13312,14 @@
+ <comment xml:lang="tr">HDF belgesi</comment>
+ <comment xml:lang="uk">документ HDF</comment>
+ <comment xml:lang="vi">Tài liệu HDF</comment>
+- <comment xml:lang="zh_CN">HDF 文档</comment>
+- <comment xml:lang="zh_TW">HDF 文件</comment>
++ <comment xml:lang="zh-CN">HDF 文档</comment>
++ <comment xml:lang="zh-TW">HDF 文件</comment>
+ <acronym>HDF</acronym>
+ <expanded-acronym>Hierarchical Data Format</expanded-acronym>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="\211HDF\r\n\032\n" type="string" offset="0"/>
+- <match value="\016\003\023\001" type="string" offset="0"/>
++ <match type="string" offset="0" value="\211HDF\r\n\032\n"/>
++ <match type="string" offset="0" value="\016\003\023\001"/>
+ </magic>
+ <glob pattern="*.hdf"/>
+ <glob pattern="*.hdf4"/>
+@@ -12811,16 +13329,19 @@
+ </mime-type>
+ <mime-type type="application/x-iff">
+ <comment>IFF file</comment>
++ <comment xml:lang="af">IFF-lêer</comment>
++ <comment xml:lang="bg">Пакет — IFF</comment>
+ <comment xml:lang="ca">fitxer IFF</comment>
+ <comment xml:lang="cs">soubor IFF</comment>
+ <comment xml:lang="da">IFF-fil</comment>
+ <comment xml:lang="de">IFF-Datei</comment>
+ <comment xml:lang="el">Αρχείο IFF</comment>
+- <comment xml:lang="en_GB">IFF file</comment>
++ <comment xml:lang="en-GB">IFF file</comment>
+ <comment xml:lang="es">archivo IFF</comment>
+ <comment xml:lang="eu">IFF fitxtegia</comment>
+ <comment xml:lang="fi">IFF-tiedosto</comment>
+ <comment xml:lang="fr">fichier IFF</comment>
++ <comment xml:lang="fur">file IFF</comment>
+ <comment xml:lang="ga">comhad IFF</comment>
+ <comment xml:lang="gl">Ficheiro IFF</comment>
+ <comment xml:lang="he">קובץ IFF</comment>
+@@ -12836,7 +13357,7 @@
+ <comment xml:lang="oc">fichièr IFF</comment>
+ <comment xml:lang="pl">Plik IFF</comment>
+ <comment xml:lang="pt">ficheiro IFF</comment>
+- <comment xml:lang="pt_BR">Arquivo IFF</comment>
++ <comment xml:lang="pt-BR">Arquivo IFF</comment>
+ <comment xml:lang="ru">Файл IFF</comment>
+ <comment xml:lang="sk">Súbor IFF</comment>
+ <comment xml:lang="sl">Datoteka IFF</comment>
+@@ -12844,31 +13365,32 @@
+ <comment xml:lang="sv">IFF-fil</comment>
+ <comment xml:lang="tr">IFF dosyası</comment>
+ <comment xml:lang="uk">файл IFF</comment>
+- <comment xml:lang="zh_CN">IFF 文件</comment>
+- <comment xml:lang="zh_TW">IFF 檔案</comment>
++ <comment xml:lang="zh-CN">IFF 文件</comment>
++ <comment xml:lang="zh-TW">IFF 檔案</comment>
+ <acronym>IFF</acronym>
+ <expanded-acronym>Interchange File Format</expanded-acronym>
+ <magic priority="40">
+- <match value="FORM" type="string" offset="0"/>
++ <match type="string" value="FORM" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-ipod-firmware">
+ <comment>iPod firmware</comment>
+ <comment xml:lang="ar">برنامج عتاد الـiPod</comment>
+- <comment xml:lang="be@latin">Firmware iPod</comment>
+- <comment xml:lang="bg">Фърмуер за iPod</comment>
++ <comment xml:lang="be-Latn">Firmware iPod</comment>
++ <comment xml:lang="bg">Фърмуер — iPod</comment>
+ <comment xml:lang="ca">microprogramari d'iPod</comment>
+ <comment xml:lang="cs">firmware iPod</comment>
+ <comment xml:lang="da">iPod-styreprogram</comment>
+ <comment xml:lang="de">iPod-Firmware</comment>
+ <comment xml:lang="el">Υλικολογισμικό iPod</comment>
+- <comment xml:lang="en_GB">iPod firmware</comment>
++ <comment xml:lang="en-GB">iPod firmware</comment>
+ <comment xml:lang="eo">iPod-mikroprogramaro</comment>
+ <comment xml:lang="es">firmware de iPod</comment>
+ <comment xml:lang="eu">iPod firmwarea</comment>
+ <comment xml:lang="fi">iPod-laiteohjelmisto</comment>
+ <comment xml:lang="fo">iPod fastbúnaður</comment>
+ <comment xml:lang="fr">firmware iPod</comment>
++ <comment xml:lang="fur">firmware iPod</comment>
+ <comment xml:lang="ga">dochtearraí iPod</comment>
+ <comment xml:lang="gl">firmware de iPod</comment>
+ <comment xml:lang="he">קושחת ipod</comment>
+@@ -12889,7 +13411,7 @@
+ <comment xml:lang="oc">firmware iPod</comment>
+ <comment xml:lang="pl">Oprogramowanie wewnętrzne iPod</comment>
+ <comment xml:lang="pt">firmware iPod</comment>
+- <comment xml:lang="pt_BR">Firmware do iPod</comment>
++ <comment xml:lang="pt-BR">Firmware do iPod</comment>
+ <comment xml:lang="ro">Firmware iPod</comment>
+ <comment xml:lang="ru">Микропрограмма iPod</comment>
+ <comment xml:lang="sk">Firmware iPod</comment>
+@@ -12897,32 +13419,34 @@
+ <comment xml:lang="sq">Firmware iPod</comment>
+ <comment xml:lang="sr">ајПод-ов уграђени</comment>
+ <comment xml:lang="sv">fast iPod-program</comment>
+- <comment xml:lang="tr">iPod üretici yazılımı</comment>
++ <comment xml:lang="tr">iPod donanım yazılımı</comment>
+ <comment xml:lang="uk">мікропрограма iPod</comment>
+ <comment xml:lang="vi">phần vững iPod</comment>
+- <comment xml:lang="zh_CN">iPod 固件</comment>
+- <comment xml:lang="zh_TW">iPod 韌體</comment>
++ <comment xml:lang="zh-CN">iPod 固件</comment>
++ <comment xml:lang="zh-TW">iPod 韌體</comment>
+ <magic priority="50">
+- <match value="S T O P" type="string" offset="0"/>
++ <match type="string" value="S T O P" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-java-archive">
+ <comment>Java archive</comment>
++ <comment xml:lang="af">Java-argief</comment>
+ <comment xml:lang="ar">أرشيف Java</comment>
+- <comment xml:lang="be@latin">Archiŭ Java</comment>
++ <comment xml:lang="be-Latn">Archiŭ Java</comment>
+ <comment xml:lang="bg">Архив — Java</comment>
+ <comment xml:lang="ca">arxiu de Java</comment>
+ <comment xml:lang="cs">archiv Java</comment>
+- <comment xml:lang="da">Javaarkiv</comment>
++ <comment xml:lang="da">Java-arkiv</comment>
+ <comment xml:lang="de">Java-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο Java</comment>
+- <comment xml:lang="en_GB">Java archive</comment>
++ <comment xml:lang="en-GB">Java archive</comment>
+ <comment xml:lang="eo">Java-arkivo</comment>
+ <comment xml:lang="es">archivador Java</comment>
+ <comment xml:lang="eu">Java artxiboa</comment>
+ <comment xml:lang="fi">Java-arkisto</comment>
+ <comment xml:lang="fo">Java skjalasavn</comment>
+ <comment xml:lang="fr">archive Java</comment>
++ <comment xml:lang="fur">archivi Java</comment>
+ <comment xml:lang="ga">cartlann Java</comment>
+ <comment xml:lang="gl">arquivo Java</comment>
+ <comment xml:lang="he">ארכיון Java</comment>
+@@ -12943,7 +13467,7 @@
+ <comment xml:lang="oc">archiu Java</comment>
+ <comment xml:lang="pl">Archiwum Java</comment>
+ <comment xml:lang="pt">arquivo Java</comment>
+- <comment xml:lang="pt_BR">Pacote Java</comment>
++ <comment xml:lang="pt-BR">Pacote Java</comment>
+ <comment xml:lang="ro">Arhivă Java</comment>
+ <comment xml:lang="ru">Архив Java</comment>
+ <comment xml:lang="sk">Archív Java</comment>
+@@ -12954,8 +13478,8 @@
+ <comment xml:lang="tr">Java arşivi</comment>
+ <comment xml:lang="uk">архів Java</comment>
+ <comment xml:lang="vi">Kho nén Java</comment>
+- <comment xml:lang="zh_CN">Java 归档文件</comment>
+- <comment xml:lang="zh_TW">Java 封存檔</comment>
++ <comment xml:lang="zh-CN">Java 归档文件</comment>
++ <comment xml:lang="zh-TW">Java 封存檔</comment>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="package-x-generic"/>
+ <alias type="application/x-jar"/>
+@@ -12964,21 +13488,23 @@
+ </mime-type>
+ <mime-type type="application/x-java">
+ <comment>Java class</comment>
++ <comment xml:lang="af">Java-klas</comment>
+ <comment xml:lang="ar">صنف java</comment>
+- <comment xml:lang="be@latin">Klasa Java</comment>
+- <comment xml:lang="bg">Клас на Java</comment>
++ <comment xml:lang="be-Latn">Klasa Java</comment>
++ <comment xml:lang="bg">Клас — Java</comment>
+ <comment xml:lang="ca">classe de Java</comment>
+ <comment xml:lang="cs">třída Java</comment>
+- <comment xml:lang="da">Javaklasse</comment>
++ <comment xml:lang="da">Java-klasse</comment>
+ <comment xml:lang="de">Java-Klasse</comment>
+ <comment xml:lang="el">Κλάση Java</comment>
+- <comment xml:lang="en_GB">Java class</comment>
++ <comment xml:lang="en-GB">Java class</comment>
+ <comment xml:lang="eo">Java-klaso</comment>
+ <comment xml:lang="es">clase de Java</comment>
+ <comment xml:lang="eu">Java-ko klasea</comment>
+ <comment xml:lang="fi">Java-luokka</comment>
+ <comment xml:lang="fo">Java flokkur</comment>
+ <comment xml:lang="fr">classe Java</comment>
++ <comment xml:lang="fur">classe Java</comment>
+ <comment xml:lang="ga">aicme Java</comment>
+ <comment xml:lang="gl">clase de Java</comment>
+ <comment xml:lang="he">מחלקת Java</comment>
+@@ -12999,7 +13525,7 @@
+ <comment xml:lang="oc">classa Java</comment>
+ <comment xml:lang="pl">Klasa Java</comment>
+ <comment xml:lang="pt">classe Java</comment>
+- <comment xml:lang="pt_BR">Classe Java</comment>
++ <comment xml:lang="pt-BR">Classe Java</comment>
+ <comment xml:lang="ro">Clasă Java</comment>
+ <comment xml:lang="ru">Класс Java</comment>
+ <comment xml:lang="sk">Trieda Java</comment>
+@@ -13010,10 +13536,10 @@
+ <comment xml:lang="tr">Java sınıfı</comment>
+ <comment xml:lang="uk">клас Java</comment>
+ <comment xml:lang="vi">Hạng Java</comment>
+- <comment xml:lang="zh_CN">Java 类</comment>
+- <comment xml:lang="zh_TW">Java class</comment>
++ <comment xml:lang="zh-CN">Java 类</comment>
++ <comment xml:lang="zh-TW">Java class</comment>
+ <magic priority="50">
+- <match value="0xcafebabe" type="big32" offset="0"/>
++ <match type="big32" value="0xcafebabe" offset="0"/>
+ </magic>
+ <alias type="application/java"/>
+ <alias type="application/java-byte-code"/>
+@@ -13022,23 +13548,90 @@
+ <alias type="application/x-java-vm"/>
+ <glob pattern="*.class"/>
+ </mime-type>
++ <mime-type type="text/x-groovy">
++ <comment>Groovy source code</comment>
++ <comment xml:lang="bg">Изходен код — Groovy</comment>
++ <comment xml:lang="ca">codi font en Groovy</comment>
++ <comment xml:lang="da">Groovy-kildekode</comment>
++ <comment xml:lang="de">Groovy-Quelltext</comment>
++ <comment xml:lang="en-GB">Groovy source code</comment>
++ <comment xml:lang="es">código fuente en Groovy</comment>
++ <comment xml:lang="eu">Groovy iturburu-kodea</comment>
++ <comment xml:lang="fi">Groovy-lähdekoodi</comment>
++ <comment xml:lang="fr">code source Groovy</comment>
++ <comment xml:lang="hr">Groovy izvorni kôd</comment>
++ <comment xml:lang="hu">Groovy forráskód</comment>
++ <comment xml:lang="id">Kode sumber Groovy</comment>
++ <comment xml:lang="it">Codice sorgente Groovy</comment>
++ <comment xml:lang="kk">Groovy бастапқы коды</comment>
++ <comment xml:lang="ko">그루비 소스 코드</comment>
++ <comment xml:lang="pl">Kod źródłowy Groovy</comment>
++ <comment xml:lang="pt-BR">Código-fonte Groovy</comment>
++ <comment xml:lang="ru">Исходный код Groovy</comment>
++ <comment xml:lang="sv">Groovy-källkod</comment>
++ <comment xml:lang="tr">Groovy kaynak kodu</comment>
++ <comment xml:lang="uk">вихідний код мовою Groovy</comment>
++ <comment xml:lang="zh-CN">Groovy 源代码</comment>
++ <comment xml:lang="zh-TW">Groovy 原始碼</comment>
++ <sub-class-of type="text/x-csrc"/>
++ <generic-icon name="text-x-script"/>
++ <glob pattern="*.groovy"/>
++ <glob pattern="*.gvy"/>
++ <glob pattern="*.gy"/>
++ <glob pattern="*.gsh"/>
++ </mime-type>
++ <mime-type type="text/x-gradle">
++ <comment>Gradle scripts</comment>
++ <comment xml:lang="af">Gradle-skrippe</comment>
++ <comment xml:lang="bg">Скрипт — Gradle</comment>
++ <comment xml:lang="ca">scripts Gradle</comment>
++ <comment xml:lang="cs">skript Gradle</comment>
++ <comment xml:lang="da">Gradle-programmer</comment>
++ <comment xml:lang="de">Gradle-Skripte</comment>
++ <comment xml:lang="en-GB">Gradle scripts</comment>
++ <comment xml:lang="es">secuencias de órdenes de Gradle</comment>
++ <comment xml:lang="eu">Gradle script-ak</comment>
++ <comment xml:lang="fi">Gradle scriptit</comment>
++ <comment xml:lang="fr">scripts Gradle</comment>
++ <comment xml:lang="fur">script Gradle</comment>
++ <comment xml:lang="ga">scripteanna Gradle</comment>
++ <comment xml:lang="hr">Gradle skripta</comment>
++ <comment xml:lang="hu">Gradle-parancsfájl</comment>
++ <comment xml:lang="id">Skrip Gradle</comment>
++ <comment xml:lang="it">Script Gradle</comment>
++ <comment xml:lang="kk">Gradle сценарийлері</comment>
++ <comment xml:lang="ko">Gradle 스크립트</comment>
++ <comment xml:lang="pl">Skrypty Gradle</comment>
++ <comment xml:lang="pt-BR">Scripts Gradle</comment>
++ <comment xml:lang="ru">Скрипты Gradle</comment>
++ <comment xml:lang="sk">Skripty Gradle</comment>
++ <comment xml:lang="sv">Gradle-skript</comment>
++ <comment xml:lang="tr">Gradle betikleri</comment>
++ <comment xml:lang="uk">скрипти Gradle</comment>
++ <comment xml:lang="zh-CN">Gradle 脚本</comment>
++ <comment xml:lang="zh-TW">Gradle 指令稿</comment>
++ <sub-class-of type="text/x-groovy"/>
++ <glob pattern="*.gradle"/>
++ </mime-type>
+ <mime-type type="application/x-java-jnlp-file">
+ <comment>JNLP file</comment>
++ <comment xml:lang="af">JNLP-lêer</comment>
+ <comment xml:lang="ar">ملف JNLP</comment>
+- <comment xml:lang="be@latin">Fajł JNLP</comment>
+- <comment xml:lang="bg">Файл — JNLP</comment>
++ <comment xml:lang="be-Latn">Fajł JNLP</comment>
++ <comment xml:lang="bg">Стартер — JNLP</comment>
+ <comment xml:lang="ca">fitxer JNLP</comment>
+ <comment xml:lang="cs">soubor JNLP</comment>
+ <comment xml:lang="da">JNPL-fil</comment>
+ <comment xml:lang="de">JNLP-Datei</comment>
+ <comment xml:lang="el">Αρχείο JNLP</comment>
+- <comment xml:lang="en_GB">JNLP file</comment>
++ <comment xml:lang="en-GB">JNLP file</comment>
+ <comment xml:lang="eo">JNLP-dosiero</comment>
+ <comment xml:lang="es">archivo JNPL</comment>
+ <comment xml:lang="eu">JNLP fitxategia</comment>
+ <comment xml:lang="fi">JNLP-tiedosto</comment>
+ <comment xml:lang="fo">JNLP fíla</comment>
+ <comment xml:lang="fr">fichier JNLP</comment>
++ <comment xml:lang="fur">file JNLP</comment>
+ <comment xml:lang="ga">comhad JNLP</comment>
+ <comment xml:lang="gl">ficheiro JNLP</comment>
+ <comment xml:lang="he">קובץ JNLP</comment>
+@@ -13058,7 +13651,7 @@
+ <comment xml:lang="oc">fichièr JNLP</comment>
+ <comment xml:lang="pl">Plik JNLP</comment>
+ <comment xml:lang="pt">ficheiro JNLP</comment>
+- <comment xml:lang="pt_BR">Arquivo JNLP</comment>
++ <comment xml:lang="pt-BR">Arquivo JNLP</comment>
+ <comment xml:lang="ro">Fișier JNLP</comment>
+ <comment xml:lang="ru">Файл JNLP</comment>
+ <comment xml:lang="sk">Súbor JNLP</comment>
+@@ -13069,15 +13662,15 @@
+ <comment xml:lang="tr">JNLP dosyası</comment>
+ <comment xml:lang="uk">файл JNLP</comment>
+ <comment xml:lang="vi">Tập tin JNLP</comment>
+- <comment xml:lang="zh_CN">JNLP 文件</comment>
+- <comment xml:lang="zh_TW">JNLP 檔案</comment>
++ <comment xml:lang="zh-CN">JNLP 文件</comment>
++ <comment xml:lang="zh-TW">JNLP 檔案</comment>
+ <acronym>JNLP</acronym>
+ <expanded-acronym>Java Network Launching Protocol</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+ <generic-icon name="text-x-script"/>
+ <glob pattern="*.jnlp"/>
+ <magic priority="50">
+- <match value="&lt;jnlp" type="string" offset="0:256"/>
++ <match type="string" value="&lt;jnlp" offset="0:256"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-java-keystore">
+@@ -13086,15 +13679,16 @@
+ <comment xml:lang="bg">Ключодържател — Java</comment>
+ <comment xml:lang="ca">magatzem de claus de Java</comment>
+ <comment xml:lang="cs">úložiště klíčů Java</comment>
+- <comment xml:lang="da">Javanøglelager</comment>
++ <comment xml:lang="da">Java-nøglelager</comment>
+ <comment xml:lang="de">Java-Schlüsselbund</comment>
+ <comment xml:lang="el">Χώρος αποθήκευσης κλειδιών Java</comment>
+- <comment xml:lang="en_GB">Java keystore</comment>
++ <comment xml:lang="en-GB">Java keystore</comment>
+ <comment xml:lang="es">almacén de claves de Java</comment>
+ <comment xml:lang="eu">Java-ren gako-biltegia</comment>
+ <comment xml:lang="fi">Java-avainvarasto</comment>
+ <comment xml:lang="fo">Java lyklagoymsla</comment>
+ <comment xml:lang="fr">stockage de clés Java</comment>
++ <comment xml:lang="fur">archivi di clâfs Java</comment>
+ <comment xml:lang="ga">eochairstór Java</comment>
+ <comment xml:lang="gl">almacén de chaves de Java</comment>
+ <comment xml:lang="he">אחסון מפתחות של Java</comment>
+@@ -13112,19 +13706,19 @@
+ <comment xml:lang="oc">emmagazinatge de claus Java</comment>
+ <comment xml:lang="pl">Baza kluczy Java</comment>
+ <comment xml:lang="pt">armazém de chaves Java</comment>
+- <comment xml:lang="pt_BR">Keystore de Java</comment>
++ <comment xml:lang="pt-BR">Keystore de Java</comment>
+ <comment xml:lang="ro">Stocare chei Java</comment>
+ <comment xml:lang="ru">Хранилище ключей Java</comment>
+ <comment xml:lang="sk">Úložisko kľúčov Java</comment>
+ <comment xml:lang="sl">Datoteka tipkovne razporeditve Java</comment>
+ <comment xml:lang="sr">смештај кључа Јаве</comment>
+ <comment xml:lang="sv">Java-nyckellager</comment>
+- <comment xml:lang="tr">Java deposu</comment>
++ <comment xml:lang="tr">Java anahtar deposu</comment>
+ <comment xml:lang="uk">сховище ключів Java</comment>
+- <comment xml:lang="zh_CN">Java 密钥库</comment>
+- <comment xml:lang="zh_TW">Java 金鑰儲存</comment>
++ <comment xml:lang="zh-CN">Java 密钥库</comment>
++ <comment xml:lang="zh-TW">Java 金鑰儲存</comment>
+ <magic priority="50">
+- <match value="0xfeedfeed" type="big32" offset="0"/>
++ <match type="big32" value="0xfeedfeed" offset="0"/>
+ </magic>
+ <glob pattern="*.jks"/>
+ <glob pattern="*.ks"/>
+@@ -13139,12 +13733,13 @@
+ <comment xml:lang="da">Java JCE-nøglelager</comment>
+ <comment xml:lang="de">Java JCE-Schlüsselbund</comment>
+ <comment xml:lang="el">Αποθήκη κλειδιών Java JCE</comment>
+- <comment xml:lang="en_GB">Java JCE keystore</comment>
++ <comment xml:lang="en-GB">Java JCE keystore</comment>
+ <comment xml:lang="es">almacén de claves JCE de Java</comment>
+ <comment xml:lang="eu">Java JCE-ren gako-biltegia</comment>
+ <comment xml:lang="fi">Java JCE -avainvarasto</comment>
+ <comment xml:lang="fo">Java JCE lyklagoymsla</comment>
+ <comment xml:lang="fr">stockage de clés Java JCE</comment>
++ <comment xml:lang="fur">archivi di clâfs JCE Java</comment>
+ <comment xml:lang="ga">eochairstór Java JCE</comment>
+ <comment xml:lang="gl">almacén de chves JCE de Java</comment>
+ <comment xml:lang="he">אחסון מפתחות של Java JCE</comment>
+@@ -13162,40 +13757,41 @@
+ <comment xml:lang="oc">emmagazinatge de claus Java JCE</comment>
+ <comment xml:lang="pl">Baza kluczy Java JCE</comment>
+ <comment xml:lang="pt">armazém de chaves JavaJCE</comment>
+- <comment xml:lang="pt_BR">Keystore JCE do Java</comment>
++ <comment xml:lang="pt-BR">Keystore JCE do Java</comment>
+ <comment xml:lang="ro">Stocare chei Java JCE</comment>
+ <comment xml:lang="ru">Хранилище ключей Java JCE</comment>
+ <comment xml:lang="sk">Úložisko kľúčov Java JCE</comment>
+ <comment xml:lang="sl">Datoteka tipkovne razporeditve Java JCE</comment>
+ <comment xml:lang="sr">смештај ЈЦЕ кључа Јаве</comment>
+ <comment xml:lang="sv">Java JCE-nyckellager</comment>
+- <comment xml:lang="tr">Java JCE deposu</comment>
++ <comment xml:lang="tr">Java JCE anahtar deposu</comment>
+ <comment xml:lang="uk">сховище ключів JCE Java</comment>
+- <comment xml:lang="zh_CN">Java JCE 密钥库</comment>
+- <comment xml:lang="zh_TW">Java JCE 金鑰儲存</comment>
++ <comment xml:lang="zh-CN">Java JCE 密钥库</comment>
++ <comment xml:lang="zh-TW">Java JCE 金鑰儲存</comment>
+ <acronym>JCE</acronym>
+ <expanded-acronym>Java Cryptography Extension</expanded-acronym>
+ <magic priority="50">
+- <match value="0xcececece" type="host32" offset="0"/>
++ <match type="host32" value="0xcececece" offset="0"/>
+ </magic>
+ <glob pattern="*.jceks"/>
+ </mime-type>
+ <mime-type type="application/x-java-pack200">
+ <comment>Pack200 Java archive</comment>
+ <comment xml:lang="ar">أرشيف Pack200 Java</comment>
+- <comment xml:lang="be@latin">Archiŭ Pack200 Java</comment>
++ <comment xml:lang="be-Latn">Archiŭ Pack200 Java</comment>
+ <comment xml:lang="bg">Архив — Java Pack200</comment>
+ <comment xml:lang="ca">arxiu de Java en Pack200</comment>
+ <comment xml:lang="cs">archiv Java Pack200</comment>
+ <comment xml:lang="da">Pack200 Java-arkiv</comment>
+ <comment xml:lang="de">Pack200-Java-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο Java Pack200</comment>
+- <comment xml:lang="en_GB">Pack200 Java archive</comment>
++ <comment xml:lang="en-GB">Pack200 Java archive</comment>
+ <comment xml:lang="es">archivador Pack200 Java</comment>
+ <comment xml:lang="eu">Pack2000 Java artxiboa</comment>
+ <comment xml:lang="fi">Pack200-Java-arkisto</comment>
+ <comment xml:lang="fo">Pack200 Java skjalasavn</comment>
+ <comment xml:lang="fr">archive Java Pack200</comment>
++ <comment xml:lang="fur">archivi Java Pack200</comment>
+ <comment xml:lang="ga">cartlann Java Pack200</comment>
+ <comment xml:lang="gl">arquivo Pack200 Java</comment>
+ <comment xml:lang="he">ארכיון מסוג Pack200 Java</comment>
+@@ -13215,7 +13811,7 @@
+ <comment xml:lang="oc">archiu Java Pack200</comment>
+ <comment xml:lang="pl">Archiwum Java Pack200</comment>
+ <comment xml:lang="pt">arquivo Java Pack200</comment>
+- <comment xml:lang="pt_BR">Pacote Java Pack200</comment>
++ <comment xml:lang="pt-BR">Pacote Java Pack200</comment>
+ <comment xml:lang="ro">Arhivă Java Pack2000</comment>
+ <comment xml:lang="ru">Архив Java Pack200</comment>
+ <comment xml:lang="sk">Archív Java Pack200</comment>
+@@ -13226,31 +13822,33 @@
+ <comment xml:lang="tr">Pack200 Java arşivi</comment>
+ <comment xml:lang="uk">архів Java Pack200</comment>
+ <comment xml:lang="vi">Kho nén Java Pack200</comment>
+- <comment xml:lang="zh_CN">Pack200 Java 归档文件</comment>
+- <comment xml:lang="zh_TW">Pack200 Java 封存檔</comment>
++ <comment xml:lang="zh-CN">Pack200 Java 归档文件</comment>
++ <comment xml:lang="zh-TW">Pack200 Java 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="60">
+- <match value="0xcafed00d" type="big32" offset="0"/>
++ <match type="big32" value="0xcafed00d" offset="0"/>
+ </magic>
+ <glob pattern="*.pack"/>
+ </mime-type>
+ <mime-type type="application/javascript">
+ <comment>JavaScript program</comment>
++ <comment xml:lang="af">JavaScript-program</comment>
+ <comment xml:lang="ar">برنامج جافاسكربت</comment>
+- <comment xml:lang="be@latin">Prahrama JavaScript</comment>
++ <comment xml:lang="be-Latn">Prahrama JavaScript</comment>
+ <comment xml:lang="bg">Програма на JavaScript</comment>
+ <comment xml:lang="ca">programa JavaScript</comment>
+ <comment xml:lang="cs">program v JavaScriptu</comment>
+ <comment xml:lang="da">JavaScript-program</comment>
+ <comment xml:lang="de">JavaScript-Programm</comment>
+ <comment xml:lang="el">Πρόγραμμα JavaScript</comment>
+- <comment xml:lang="en_GB">JavaScript program</comment>
++ <comment xml:lang="en-GB">JavaScript program</comment>
+ <comment xml:lang="eo">JavaScript-programo</comment>
+ <comment xml:lang="es">programa en JavaScript</comment>
+ <comment xml:lang="eu">JavaScript programa</comment>
+ <comment xml:lang="fi">JavaScript-ohjelma</comment>
+ <comment xml:lang="fo">JavaScript forrit</comment>
+ <comment xml:lang="fr">programme JavaScript</comment>
++ <comment xml:lang="fur">program JavaScript</comment>
+ <comment xml:lang="ga">ríomhchlár JavaScript</comment>
+ <comment xml:lang="gl">programa JavaScript</comment>
+ <comment xml:lang="he">תכנית JavaScript</comment>
+@@ -13271,7 +13869,7 @@
+ <comment xml:lang="oc">programa JavaEscript</comment>
+ <comment xml:lang="pl">Pogram JavaScript</comment>
+ <comment xml:lang="pt">programa JavaScript</comment>
+- <comment xml:lang="pt_BR">Programa JavaScript</comment>
++ <comment xml:lang="pt-BR">Programa JavaScript</comment>
+ <comment xml:lang="ro">Program JavaScript</comment>
+ <comment xml:lang="ru">Программа JavaScript</comment>
+ <comment xml:lang="sk">Program jazyka JavaScript</comment>
+@@ -13282,23 +13880,23 @@
+ <comment xml:lang="tr">JavaScript programı</comment>
+ <comment xml:lang="uk">програма мовою JavaScript</comment>
+ <comment xml:lang="vi">Chương trình JavaScript</comment>
+- <comment xml:lang="zh_CN">JavaScript 程序</comment>
+- <comment xml:lang="zh_TW">JavaScript 程式</comment>
++ <comment xml:lang="zh-CN">JavaScript 程序</comment>
++ <comment xml:lang="zh-TW">JavaScript 程式</comment>
+ <alias type="application/x-javascript"/>
+ <alias type="text/javascript"/>
+ <sub-class-of type="application/ecmascript"/>
+ <generic-icon name="text-x-script"/>
+ <magic priority="50">
+- <match value="#!/bin/gjs" type="string" offset="0"/>
+- <match value="#! /bin/gjs" type="string" offset="0"/>
+- <match value='eval \"exec /bin/gjs' type="string" offset="0"/>
+- <match value="#!/usr/bin/gjs" type="string" offset="0"/>
+- <match value="#! /usr/bin/gjs" type="string" offset="0"/>
+- <match value='eval \"exec /usr/bin/gjs' type="string" offset="0"/>
+- <match value="#!/usr/local/bin/gjs" type="string" offset="0"/>
+- <match value="#! /usr/local/bin/gjs" type="string" offset="0"/>
+- <match value='eval \"exec /usr/local/bin/gjs' type="string" offset="0"/>
+- <match value='/bin/env gjs' type="string" offset="2:16"/>
++ <match type="string" value="#!/bin/gjs" offset="0"/>
++ <match type="string" value="#! /bin/gjs" offset="0"/>
++ <match type="string" value="eval \&quot;exec /bin/gjs" offset="0"/>
++ <match type="string" value="#!/usr/bin/gjs" offset="0"/>
++ <match type="string" value="#! /usr/bin/gjs" offset="0"/>
++ <match type="string" value="eval \&quot;exec /usr/bin/gjs" offset="0"/>
++ <match type="string" value="#!/usr/local/bin/gjs" offset="0"/>
++ <match type="string" value="#! /usr/local/bin/gjs" offset="0"/>
++ <match type="string" value="eval \&quot;exec /usr/local/bin/gjs" offset="0"/>
++ <match type="string" value="/bin/env gjs" offset="2:16"/>
+ </magic>
+ <glob pattern="*.js"/>
+ <glob pattern="*.jsm"/>
+@@ -13306,17 +13904,20 @@
+ </mime-type>
+ <mime-type type="application/json">
+ <comment>JSON document</comment>
++ <comment xml:lang="af">JSON-dokument</comment>
+ <comment xml:lang="ast">Documentu JSON</comment>
++ <comment xml:lang="bg">Документ — JSON</comment>
+ <comment xml:lang="ca">document JSON</comment>
+ <comment xml:lang="cs">dokument JSON</comment>
+ <comment xml:lang="da">JSON-dokument</comment>
+ <comment xml:lang="de">JSON-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο JSON</comment>
+- <comment xml:lang="en_GB">JSON document</comment>
++ <comment xml:lang="en-GB">JSON document</comment>
+ <comment xml:lang="es">documento JSON</comment>
+ <comment xml:lang="eu">JSON dokumentua</comment>
+ <comment xml:lang="fi">JSON-asiakirja</comment>
+ <comment xml:lang="fr">document JSON</comment>
++ <comment xml:lang="fur">document JSON</comment>
+ <comment xml:lang="ga">cáipéis JSON</comment>
+ <comment xml:lang="gl">Documento JSON</comment>
+ <comment xml:lang="he">מסמך JSON</comment>
+@@ -13330,7 +13931,7 @@
+ <comment xml:lang="oc">document JSON</comment>
+ <comment xml:lang="pl">Dokument JSON</comment>
+ <comment xml:lang="pt">documento JSON</comment>
+- <comment xml:lang="pt_BR">Documento JSON</comment>
++ <comment xml:lang="pt-BR">Documento JSON</comment>
+ <comment xml:lang="ru">Документ JSON</comment>
+ <comment xml:lang="sk">Dokument JSON</comment>
+ <comment xml:lang="sl">Dokument JSON</comment>
+@@ -13338,8 +13939,8 @@
+ <comment xml:lang="sv">JSON-dokument</comment>
+ <comment xml:lang="tr">JSON belgesi</comment>
+ <comment xml:lang="uk">документ JSON</comment>
+- <comment xml:lang="zh_CN">JSON 文档</comment>
+- <comment xml:lang="zh_TW">JSON 文件</comment>
++ <comment xml:lang="zh-CN">JSON 文档</comment>
++ <comment xml:lang="zh-TW">JSON 文件</comment>
+ <acronym>JSON</acronym>
+ <expanded-acronym>JavaScript Object Notation</expanded-acronym>
+ <sub-class-of type="application/javascript"/>
+@@ -13348,17 +13949,20 @@
+ </mime-type>
+ <mime-type type="application/jrd+json">
+ <comment>JRD document</comment>
++ <comment xml:lang="af">JRD-dokument</comment>
+ <comment xml:lang="ast">Documentu JRD</comment>
++ <comment xml:lang="bg">Документ — JRD</comment>
+ <comment xml:lang="ca">document JRD</comment>
+ <comment xml:lang="cs">dokument JRD</comment>
+ <comment xml:lang="da">JRD-dokument</comment>
+ <comment xml:lang="de">JRD-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο JRD</comment>
+- <comment xml:lang="en_GB">JRD document</comment>
++ <comment xml:lang="en-GB">JRD document</comment>
+ <comment xml:lang="es">documento JRD</comment>
+ <comment xml:lang="eu">JRD dokumentua</comment>
+ <comment xml:lang="fi">JRD-asiakirja</comment>
+ <comment xml:lang="fr">document JRD</comment>
++ <comment xml:lang="fur">document JRD</comment>
+ <comment xml:lang="ga">cáipéis JRD</comment>
+ <comment xml:lang="he">מסמך JRD</comment>
+ <comment xml:lang="hr">JRD dokument</comment>
+@@ -13371,15 +13975,16 @@
+ <comment xml:lang="oc">document JRD</comment>
+ <comment xml:lang="pl">Dokument JRD</comment>
+ <comment xml:lang="pt">doxumento JRD</comment>
+- <comment xml:lang="pt_BR">Documento JRD</comment>
++ <comment xml:lang="pt-BR">Documento JRD</comment>
+ <comment xml:lang="ru">Документ JRD</comment>
+ <comment xml:lang="sk">Dokument JRD</comment>
++ <comment xml:lang="sl">Dokument JRD</comment>
+ <comment xml:lang="sr">ЈРД документ</comment>
+ <comment xml:lang="sv">JRD-dokument</comment>
+ <comment xml:lang="tr">JRD belgesi</comment>
+ <comment xml:lang="uk">документ JRD</comment>
+- <comment xml:lang="zh_CN">JRD 文档</comment>
+- <comment xml:lang="zh_TW">JRD 文件</comment>
++ <comment xml:lang="zh-CN">JRD 文档</comment>
++ <comment xml:lang="zh-TW">JRD 文件</comment>
+ <acronym>JRD</acronym>
+ <expanded-acronym>JSON Resource Descriptor</expanded-acronym>
+ <sub-class-of type="application/json"/>
+@@ -13388,14 +13993,17 @@
+ </mime-type>
+ <mime-type type="application/json-patch+json">
+ <comment>JSON patch</comment>
++ <comment xml:lang="bg">Кръпка — JSON</comment>
+ <comment xml:lang="ca">pedaç de JSON</comment>
+ <comment xml:lang="cs">cesta JSON</comment>
+ <comment xml:lang="da">JSON-rettelse</comment>
+ <comment xml:lang="de">JSON-Patch</comment>
+- <comment xml:lang="en_GB">JSON patch</comment>
++ <comment xml:lang="en-GB">JSON patch</comment>
+ <comment xml:lang="es">parche en JSON</comment>
+ <comment xml:lang="eu">JSON adabakia</comment>
++ <comment xml:lang="fi">JSON-paikkatiedosto</comment>
+ <comment xml:lang="fr">correctif JSON</comment>
++ <comment xml:lang="fur">blec JSON</comment>
+ <comment xml:lang="ga">paiste JSON</comment>
+ <comment xml:lang="he">טלאי JSON</comment>
+ <comment xml:lang="hr">JSON zakrpa</comment>
+@@ -13408,15 +14016,15 @@
+ <comment xml:lang="oc">correctiu JSON</comment>
+ <comment xml:lang="pl">Łata JSON</comment>
+ <comment xml:lang="pt">patch JSON</comment>
+- <comment xml:lang="pt_BR">Patch JSON</comment>
++ <comment xml:lang="pt-BR">Patch JSON</comment>
+ <comment xml:lang="ru">Патч JSON</comment>
+ <comment xml:lang="sk">Záplata JSON</comment>
+ <comment xml:lang="sr">ЈСОН закрпа</comment>
+ <comment xml:lang="sv">JSON patch</comment>
+ <comment xml:lang="tr">JSON yaması</comment>
+ <comment xml:lang="uk">латка JSON</comment>
+- <comment xml:lang="zh_CN">JSON 补丁</comment>
+- <comment xml:lang="zh_TW">JSON 修補檔</comment>
++ <comment xml:lang="zh-CN">JSON 补丁</comment>
++ <comment xml:lang="zh-TW">JSON 修補檔</comment>
+ <acronym>JSON</acronym>
+ <expanded-acronym>JavaScript Object Notation</expanded-acronym>
+ <sub-class-of type="application/json"/>
+@@ -13426,16 +14034,18 @@
+ <mime-type type="application/ld+json">
+ <comment>JSON-LD document</comment>
+ <comment xml:lang="ast">Documentu JSON-LD</comment>
++ <comment xml:lang="bg">Документ — JSON-LD</comment>
+ <comment xml:lang="ca">document JSON-LD</comment>
+ <comment xml:lang="cs">dokument JSON-LD</comment>
+ <comment xml:lang="da">JSON-LD-dokument</comment>
+ <comment xml:lang="de">JSON-LD-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο JSON-LD</comment>
+- <comment xml:lang="en_GB">JSON-LD document</comment>
++ <comment xml:lang="en-GB">JSON-LD document</comment>
+ <comment xml:lang="es">documento JSON-LD</comment>
+ <comment xml:lang="eu">JSON-LD dokumentua</comment>
+ <comment xml:lang="fi">JSON-LD-asiakirja</comment>
+ <comment xml:lang="fr">document JSON-LD</comment>
++ <comment xml:lang="fur">document JSON-LD</comment>
+ <comment xml:lang="ga">cáipéis JSON-LD</comment>
+ <comment xml:lang="he">מסמך JSON-LD</comment>
+ <comment xml:lang="hr">JSON-LD dokument</comment>
+@@ -13448,15 +14058,16 @@
+ <comment xml:lang="oc">Document JSON-LD</comment>
+ <comment xml:lang="pl">Dokument JSON-LD</comment>
+ <comment xml:lang="pt">documento JSON-LD</comment>
+- <comment xml:lang="pt_BR">Documento JSON-LD</comment>
++ <comment xml:lang="pt-BR">Documento JSON-LD</comment>
+ <comment xml:lang="ru">Документ JSON-LD</comment>
+ <comment xml:lang="sk">Dokument JSON-LD</comment>
++ <comment xml:lang="sl">Dokument JSON-LD</comment>
+ <comment xml:lang="sr">ЈСОН-ЛД документ</comment>
+ <comment xml:lang="sv">JSON-LD-dokument</comment>
+ <comment xml:lang="tr">JSON-LD belgesi</comment>
+ <comment xml:lang="uk">документ JSON-LD</comment>
+- <comment xml:lang="zh_CN">JSON-LD 文档</comment>
+- <comment xml:lang="zh_TW">JSON-LD 文件</comment>
++ <comment xml:lang="zh-CN">JSON-LD 文档</comment>
++ <comment xml:lang="zh-TW">JSON-LD 文件</comment>
+ <acronym>JSON-LD</acronym>
+ <expanded-acronym>JavaScript Object Notation for Linked Data</expanded-acronym>
+ <sub-class-of type="application/json"/>
+@@ -13464,55 +14075,55 @@
+ <glob pattern="*.jsonld"/>
+ </mime-type>
+ <mime-type type="application/x-ipynb+json">
+- <comment>Jupyter Notebook</comment>
+- <comment xml:lang="ca">llibreta de notes de Jupyter</comment>
+- <comment xml:lang="cs">sešit Jupyter</comment>
+- <comment xml:lang="da">Jupyter Notebook</comment>
+- <comment xml:lang="de">Jupyter-Dokument</comment>
+- <comment xml:lang="en_GB">Jupyter Notebook</comment>
+- <comment xml:lang="es">libreta de Jupyter</comment>
+- <comment xml:lang="eu">Jupyter Notebook</comment>
++ <comment>Jupyter notebook document</comment>
++ <comment xml:lang="bg">Скицник — Jupyter</comment>
++ <comment xml:lang="ca">document de llibreta de notes de Jupyter</comment>
++ <comment xml:lang="da">Jupyter notebook-dokument</comment>
++ <comment xml:lang="de">Jupyter-Notebook-Dokument</comment>
++ <comment xml:lang="en-GB">Jupyter notebook document</comment>
++ <comment xml:lang="es">documento de cuaderno de Jupyter</comment>
++ <comment xml:lang="eu">Jupyter notebook dokumentua</comment>
++ <comment xml:lang="fi">Jupyter notebook -asiakirja</comment>
+ <comment xml:lang="fr">carnet de notes Jupyter</comment>
+- <comment xml:lang="ga">Leabhar nótaí Jupyter</comment>
+- <comment xml:lang="he">מחברת Jupyter</comment>
+- <comment xml:lang="hr">Jupyter bilježnica</comment>
+- <comment xml:lang="hu">Jupyter notesz</comment>
+- <comment xml:lang="id">Notebook Jupyter</comment>
+- <comment xml:lang="it">Notebook Jupyter</comment>
+- <comment xml:lang="kk">Jupyter Notebook</comment>
+- <comment xml:lang="ko">Jupyter 노트북</comment>
+- <comment xml:lang="pl">Notatnik Jupyter</comment>
+- <comment xml:lang="pt_BR">Bloco de Notas Jupyter</comment>
+- <comment xml:lang="ru">Jupyter Notebook</comment>
+- <comment xml:lang="sk">Zošit programu Jupyter</comment>
+- <comment xml:lang="sr">Џупитер бележница</comment>
+- <comment xml:lang="sv">Jupyter Notebook-dokument</comment>
+- <comment xml:lang="tr">Jupyter Notebook</comment>
+- <comment xml:lang="uk">записник Jupyter</comment>
+- <comment xml:lang="zh_CN">Jupyter 笔记本</comment>
+- <comment xml:lang="zh_TW">Jupyter 記事本</comment>
++ <comment xml:lang="hr">Jupyter notebook dokument</comment>
++ <comment xml:lang="hu">Jupyter munkafüzet dokumentum</comment>
++ <comment xml:lang="id">Dokumen Jupyter notebook</comment>
++ <comment xml:lang="it">Documento notebook Jupyter</comment>
++ <comment xml:lang="kk">Jupyter блокнот құжаты</comment>
++ <comment xml:lang="ko">주피터 노트북 문서</comment>
++ <comment xml:lang="pl">Dokument notatnika Jupyter</comment>
++ <comment xml:lang="pt-BR">Documento Jupyter Notebook</comment>
++ <comment xml:lang="ru">Документ Jupyter notebook</comment>
++ <comment xml:lang="sv">Jupyter-anteckningsboksdokument</comment>
++ <comment xml:lang="tr">Jupyter notebook belgesi</comment>
++ <comment xml:lang="uk">документ нотатника Jupyter</comment>
++ <comment xml:lang="zh-CN">Jupyter 笔记本文档</comment>
++ <comment xml:lang="zh-TW">Jupyter 記事本文件</comment>
+ <sub-class-of type="application/json"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="{" type="string" offset="0">
+- <match value='"cells":' type="string" offset="1:256"/>
++ <match type="string" value="{" offset="0">
++ <match type="string" value="&quot;cells&quot;:" offset="1:256"/>
+ </match>
+ </magic>
+ <glob pattern="*.ipynb"/>
+ </mime-type>
+ <mime-type type="application/vnd.coffeescript">
+ <comment>CoffeeScript document</comment>
++ <comment xml:lang="af">CoffeeScript-dokument</comment>
+ <comment xml:lang="ast">Documentu de CoffeScript</comment>
++ <comment xml:lang="bg">Документ — CoffeeScript</comment>
+ <comment xml:lang="ca">document CoffeeScript</comment>
+ <comment xml:lang="cs">dokument CoffeeScript</comment>
+ <comment xml:lang="da">CoffeeScript-dokument</comment>
+ <comment xml:lang="de">CoffeeScript-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο CoffeeScript</comment>
+- <comment xml:lang="en_GB">CoffeeScript document</comment>
++ <comment xml:lang="en-GB">CoffeeScript document</comment>
+ <comment xml:lang="es">documento en CoffeeScript</comment>
+ <comment xml:lang="eu">CoffeeScript dokumentua</comment>
+ <comment xml:lang="fi">CoffeeScript-asiakirja</comment>
+ <comment xml:lang="fr">document CoffeeScript</comment>
++ <comment xml:lang="fur">document CoffeeScript</comment>
+ <comment xml:lang="ga">cáipéis CoffeeScript</comment>
+ <comment xml:lang="he">מסמך CoffeeScript</comment>
+ <comment xml:lang="hr">CoffeeScript dokument</comment>
+@@ -13525,36 +14136,39 @@
+ <comment xml:lang="oc">Document CoffeScript</comment>
+ <comment xml:lang="pl">Dokument CoffeeScript</comment>
+ <comment xml:lang="pt">documento CoffeeScript</comment>
+- <comment xml:lang="pt_BR">Documento CoffeeScript</comment>
++ <comment xml:lang="pt-BR">Documento CoffeeScript</comment>
+ <comment xml:lang="ru">Документ CoffeeScript</comment>
+ <comment xml:lang="sk">Dokument CoffeeScript</comment>
++ <comment xml:lang="sl">Dokument CoffeeScript</comment>
+ <comment xml:lang="sr">Кофи скрипт документ</comment>
+ <comment xml:lang="sv">CoffeeScript-dokument</comment>
+ <comment xml:lang="tr">CoffeeScript belgesi</comment>
+ <comment xml:lang="uk">документ CoffeeScript</comment>
+- <comment xml:lang="zh_CN">CoffeeScript 文档</comment>
+- <comment xml:lang="zh_TW">CoffeeScript 文件</comment>
++ <comment xml:lang="zh-CN">CoffeeScript 文档</comment>
++ <comment xml:lang="zh-TW">CoffeeScript 文件</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-script"/>
+ <glob pattern="*.coffee"/>
+ </mime-type>
+ <mime-type type="application/x-jbuilder-project">
+ <comment>JBuilder project</comment>
++ <comment xml:lang="af">JBuilder-projek</comment>
+ <comment xml:lang="ar">مشروع JBuilder</comment>
+- <comment xml:lang="be@latin">Prajekt JBuilder</comment>
++ <comment xml:lang="be-Latn">Prajekt JBuilder</comment>
+ <comment xml:lang="bg">Проект — JBuilder</comment>
+ <comment xml:lang="ca">projecte de JBuilder</comment>
+ <comment xml:lang="cs">projekt JBuilder</comment>
+ <comment xml:lang="da">JBuilder-projekt</comment>
+ <comment xml:lang="de">JBuilder-Projekt</comment>
+ <comment xml:lang="el">Εργο JBuilder</comment>
+- <comment xml:lang="en_GB">JBuilder project</comment>
++ <comment xml:lang="en-GB">JBuilder project</comment>
+ <comment xml:lang="eo">JBuilder-projekto</comment>
+ <comment xml:lang="es">proyecto de JBuilder</comment>
+ <comment xml:lang="eu">JBuilder proiektua</comment>
+ <comment xml:lang="fi">JBuilder-projekti</comment>
+ <comment xml:lang="fo">JBuilder verkætlan</comment>
+ <comment xml:lang="fr">projet JBuilder</comment>
++ <comment xml:lang="fur">progjet JBuilder</comment>
+ <comment xml:lang="ga">tionscadal JBuilder</comment>
+ <comment xml:lang="gl">proxecto de JBuilder</comment>
+ <comment xml:lang="he">מיזם JBuilder</comment>
+@@ -13575,7 +14189,7 @@
+ <comment xml:lang="oc">projècte JBuilder</comment>
+ <comment xml:lang="pl">Projekt JBuilder</comment>
+ <comment xml:lang="pt">projecto JBuilder</comment>
+- <comment xml:lang="pt_BR">Projeto do JBuilder</comment>
++ <comment xml:lang="pt-BR">Projeto do JBuilder</comment>
+ <comment xml:lang="ro">Proiect JBuilder</comment>
+ <comment xml:lang="ru">Проект JBuilder</comment>
+ <comment xml:lang="sk">Projekt JBuilder</comment>
+@@ -13584,31 +14198,33 @@
+ <comment xml:lang="sr">пројекат ЈГрадитеља</comment>
+ <comment xml:lang="sv">JBuilder-projekt</comment>
+ <comment xml:lang="tr">JBuilder projesi</comment>
+- <comment xml:lang="uk">проект JBuilder</comment>
++ <comment xml:lang="uk">проєкт JBuilder</comment>
+ <comment xml:lang="vi">Dự án JBuilder</comment>
+- <comment xml:lang="zh_CN">JBuilder 工程</comment>
+- <comment xml:lang="zh_TW">JBuilder 專案</comment>
++ <comment xml:lang="zh-CN">JBuilder 工程</comment>
++ <comment xml:lang="zh-TW">JBuilder 專案</comment>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.jpr"/>
+ <glob pattern="*.jpx"/>
+ </mime-type>
+ <mime-type type="application/x-karbon">
+ <comment>Karbon14 drawing</comment>
++ <comment xml:lang="af">Karbon14-tekening</comment>
+ <comment xml:lang="ar">تصميم Karbon14</comment>
+- <comment xml:lang="be@latin">Rysunak Karbon14</comment>
++ <comment xml:lang="be-Latn">Rysunak Karbon14</comment>
+ <comment xml:lang="bg">Чертеж — Karbon14</comment>
+ <comment xml:lang="ca">dibuix de Karbon14</comment>
+ <comment xml:lang="cs">kresba Karbon14</comment>
+ <comment xml:lang="da">Karbon14-tegning</comment>
+ <comment xml:lang="de">Karbon14-Zeichnung</comment>
+ <comment xml:lang="el">Σχέδιο Karbon14</comment>
+- <comment xml:lang="en_GB">Karbon14 drawing</comment>
++ <comment xml:lang="en-GB">Karbon14 drawing</comment>
+ <comment xml:lang="eo">Karbon14-grafikaĵo</comment>
+ <comment xml:lang="es">dibujo de Karbon14</comment>
+ <comment xml:lang="eu">Karbon14 marrazkia</comment>
+ <comment xml:lang="fi">Karbon14-piirros</comment>
+ <comment xml:lang="fo">Karbon14 tekning</comment>
+ <comment xml:lang="fr">dessin Karbon14</comment>
++ <comment xml:lang="fur">dissen Karbon14</comment>
+ <comment xml:lang="ga">líníocht Karbon14</comment>
+ <comment xml:lang="gl">debuxo de Karbon14</comment>
+ <comment xml:lang="he">ציור Karbon14</comment>
+@@ -13629,7 +14245,7 @@
+ <comment xml:lang="oc">dessenh Karbon14</comment>
+ <comment xml:lang="pl">Rysunek Karbon14</comment>
+ <comment xml:lang="pt">desenho Karbon14</comment>
+- <comment xml:lang="pt_BR">Desenho do Karbon14</comment>
++ <comment xml:lang="pt-BR">Desenho do Karbon14</comment>
+ <comment xml:lang="ro">Desen Karbon14</comment>
+ <comment xml:lang="ru">Рисунок Karbon14</comment>
+ <comment xml:lang="sk">Kresba Karbon14</comment>
+@@ -13640,18 +14256,18 @@
+ <comment xml:lang="tr">Karbon14 çizimi</comment>
+ <comment xml:lang="uk">малюнок Karbon14</comment>
+ <comment xml:lang="vi">Bản vẽ Karbon14</comment>
+- <comment xml:lang="zh_CN">Karbon14 绘图</comment>
+- <comment xml:lang="zh_TW">Karbon14 繪圖</comment>
++ <comment xml:lang="zh-CN">Karbon14 绘图</comment>
++ <comment xml:lang="zh-TW">Karbon14 繪圖</comment>
+ <generic-icon name="image-x-generic"/>
+ <magic priority="60">
+- <match value="\037\213" type="string" offset="0">
+- <match value="KOffice" type="string" offset="10">
+- <match value="application/x-karbon\004\006" type="string" offset="18"/>
++ <match type="string" value="\037\213" offset="0">
++ <match type="string" value="KOffice" offset="10">
++ <match type="string" value="application/x-karbon\004\006" offset="18"/>
+ </match>
+ </match>
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/x-karbon" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/x-karbon" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -13659,21 +14275,23 @@
+ </mime-type>
+ <mime-type type="application/x-kchart">
+ <comment>KChart chart</comment>
++ <comment xml:lang="af">KChart-grafiek</comment>
+ <comment xml:lang="ar">رسم بياني KChart</comment>
+- <comment xml:lang="be@latin">Hrafik KChart</comment>
++ <comment xml:lang="be-Latn">Hrafik KChart</comment>
+ <comment xml:lang="bg">Диаграма — KChart</comment>
+ <comment xml:lang="ca">diagrama de KChart</comment>
+ <comment xml:lang="cs">graf Chart</comment>
+ <comment xml:lang="da">KChart-diagram</comment>
+ <comment xml:lang="de">KChart-Diagramm</comment>
+ <comment xml:lang="el">Γράφημα KChart</comment>
+- <comment xml:lang="en_GB">KChart chart</comment>
++ <comment xml:lang="en-GB">KChart chart</comment>
+ <comment xml:lang="eo">KChart-diagramo</comment>
+ <comment xml:lang="es">gráfico de KChart</comment>
+ <comment xml:lang="eu">KChart diagrama</comment>
+ <comment xml:lang="fi">KChart-kaavio</comment>
+ <comment xml:lang="fo">KChart strikumynd</comment>
+ <comment xml:lang="fr">graphique KChart</comment>
++ <comment xml:lang="fur">grafic KChart</comment>
+ <comment xml:lang="ga">cairt KChart</comment>
+ <comment xml:lang="gl">gráfica de KChart</comment>
+ <comment xml:lang="he">תרשים KChart</comment>
+@@ -13694,7 +14312,7 @@
+ <comment xml:lang="oc">grafic KChart</comment>
+ <comment xml:lang="pl">Wykres KChart</comment>
+ <comment xml:lang="pt">gráfico KChart</comment>
+- <comment xml:lang="pt_BR">Gráfico do KChart</comment>
++ <comment xml:lang="pt-BR">Gráfico do KChart</comment>
+ <comment xml:lang="ro">Diagramă KChart</comment>
+ <comment xml:lang="ru">Диаграмма KChart</comment>
+ <comment xml:lang="sk">Graf KChart</comment>
+@@ -13705,224 +14323,159 @@
+ <comment xml:lang="tr">KChart çizgesi</comment>
+ <comment xml:lang="uk">діаграма KChart</comment>
+ <comment xml:lang="vi">Sơ đồ KChart</comment>
+- <comment xml:lang="zh_CN">KChart 图表</comment>
+- <comment xml:lang="zh_TW">KChart 圖表</comment>
++ <comment xml:lang="zh-CN">KChart 图表</comment>
++ <comment xml:lang="zh-TW">KChart 圖表</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <magic priority="60">
+- <match value="\037\213" type="string" offset="0">
+- <match value="KOffice" type="string" offset="10">
+- <match value="application/x-kchart\004\006" type="string" offset="18"/>
++ <match type="string" value="\037\213" offset="0">
++ <match type="string" value="KOffice" offset="10">
++ <match type="string" value="application/x-kchart\004\006" offset="18"/>
+ </match>
+ </match>
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/x-kchart" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/x-kchart" offset="38"/>
+ </match>
+ </match>
+ </magic>
+ <glob pattern="*.chrt"/>
+ </mime-type>
+ <mime-type type="application/x-kexi-connectiondata">
+- <comment>Kexi settings for database server connection</comment>
+- <comment xml:lang="ar">إعدادات Kexi للإتصال بخادم قاعدة البيانات</comment>
+- <comment xml:lang="bg">Връзка към база от данни — Kexi</comment>
+- <comment xml:lang="ca">ajusts de Kexi per a la connexió al servidor de bases de dades</comment>
+- <comment xml:lang="cs">nastavení Kexi ke spojení s databázovým serverem</comment>
+- <comment xml:lang="da">Kexiopsætning til forbindelsen for databaseserveren</comment>
+- <comment xml:lang="de">Kexi-Einstellungen für Verbindung zum Datenbankserver</comment>
+- <comment xml:lang="el">Ρυθμίσεις Kexi για σύνδεση με εξυπηρετητή βάσεων δεδομένων</comment>
+- <comment xml:lang="en_GB">Kexi settings for database server connection</comment>
+- <comment xml:lang="es">configuración de Kexi para conectar con un servidor de bases de datos</comment>
+- <comment xml:lang="eu">Kexi-ren ezarpenak datu-basearen zerbitzariarekin konektatzeko</comment>
+- <comment xml:lang="fi">Kexi-tietokantayhteysasetukset</comment>
+- <comment xml:lang="fo">Kexi stillingar fyri dátustovnsambætara sambinding</comment>
+- <comment xml:lang="fr">paramètres Kexi pour connexion au serveur de base de données</comment>
+- <comment xml:lang="ga">socruithe Kexi do cheangal le freastalaí bunachair sonraí</comment>
+- <comment xml:lang="gl">configuración de Kexi para conexión con servidor de base de datos </comment>
+- <comment xml:lang="he">הגדרות של Kexi עבור חיבור שרת למסד נתונים</comment>
+- <comment xml:lang="hr">Kexi postavke za povezeivanje baza podataka poslužitelja</comment>
+- <comment xml:lang="hu">Kexi beállítások adatbáziskiszolgáló-kapcsolathoz</comment>
+- <comment xml:lang="ia">Configuration Kexi pro connexion al servitor de base de datos</comment>
+- <comment xml:lang="id">Tatanan Kexi bagi koneksi server basis data</comment>
+- <comment xml:lang="it">Impostazioni Kexi per connessione a server di database</comment>
+- <comment xml:lang="ja">データベースサーバ接続用の Kexi 設定</comment>
+- <comment xml:lang="kk">Дерекқор серверге байланыс Kexi баптаулары</comment>
+- <comment xml:lang="ko">Kexi 데이터베이스 서버 연결 설정</comment>
+- <comment xml:lang="lt">Kexi duomenų bazės ryšio su serveriu parametrai</comment>
+- <comment xml:lang="lv">Kexi iestatījumi datubāzes servera savienojumam</comment>
+- <comment xml:lang="nl">Kexi instellingen voor database server connectie</comment>
+- <comment xml:lang="oc">paramètres Kexi per connexion al servidor de banca de donadas</comment>
+- <comment xml:lang="pl">Ustawienia Kexi dla połączenia serwera bazy danych</comment>
+- <comment xml:lang="pt">definições Kexi para ligação de servidor de base de dados</comment>
+- <comment xml:lang="pt_BR">Configurações do Kexi para conexão a servidor de banco de dados</comment>
+- <comment xml:lang="ro">Configurări Kexi pentru conexiunea la serverul de baze de date</comment>
+- <comment xml:lang="ru">Параметры Kexi для подключения к серверу БД</comment>
+- <comment xml:lang="sk">Nastavenia Kexi pre pripojenie k databázovému serveru</comment>
+- <comment xml:lang="sl">Strežniška povezava do nastavitvene datoteke Kexi.</comment>
+- <comment xml:lang="sr">подешавања Кексија за везу са сервером базе података</comment>
+- <comment xml:lang="sv">Kexi-inställningar för anslutning till databasserver</comment>
+- <comment xml:lang="tr">Veritabanı sunucu bağlantısı için Kexi ayarları</comment>
+- <comment xml:lang="uk">параметри Kexi для встановлення з’єднання з сервером бази даних</comment>
+- <comment xml:lang="zh_CN">Kexi 数据库服务器连接设置</comment>
+- <comment xml:lang="zh_TW">Kexi 設定值 (資料庫伺服器連線用)</comment>
++ <comment>Kexi settings</comment>
++ <comment xml:lang="bg">Настройки — Kexi</comment>
++ <comment xml:lang="ca">ajusts de Kexi</comment>
++ <comment xml:lang="da">Kexi-indstillinger</comment>
++ <comment xml:lang="de">Kexi-Einstellungen</comment>
++ <comment xml:lang="en-GB">Kexi settings</comment>
++ <comment xml:lang="es">configuración de Kexi</comment>
++ <comment xml:lang="eu">Kexi ezarpenak</comment>
++ <comment xml:lang="fi">Kexi-asetukset</comment>
++ <comment xml:lang="fr">réglages Kexi</comment>
++ <comment xml:lang="hr">Kexi postavke</comment>
++ <comment xml:lang="hu">Kexi beállítások</comment>
++ <comment xml:lang="id">Pengaturan Kexi</comment>
++ <comment xml:lang="it">Impostazioni Kexi</comment>
++ <comment xml:lang="kk">Kexi баптаулары</comment>
++ <comment xml:lang="ko">Kexi 설정</comment>
++ <comment xml:lang="pl">Ustawienia Kexi</comment>
++ <comment xml:lang="pt-BR">Configurações do Kexi</comment>
++ <comment xml:lang="ru">Файл настроек Kexi</comment>
++ <comment xml:lang="sk">Nastavenia Kexi</comment>
++ <comment xml:lang="sl">Nastavitve Kexi</comment>
++ <comment xml:lang="sv">Kexi-inställningar</comment>
++ <comment xml:lang="tr">Kexi ayarları</comment>
++ <comment xml:lang="uk">параметри Kexi</comment>
++ <comment xml:lang="zh-CN">Kexi 设置</comment>
++ <comment xml:lang="zh-TW">Kexi 設定</comment>
+ <glob pattern="*.kexic"/>
+ </mime-type>
+ <mime-type type="application/x-kexiproject-shortcut">
+- <comment>shortcut to Kexi project on database server</comment>
+- <comment xml:lang="ar">اختصار لمشروع Kexi على خادم قاعدة بيانات</comment>
+- <comment xml:lang="bg">Връзка към проект — Kexi</comment>
+- <comment xml:lang="ca">drecera al projecte de Kexi en un servidor de base de dades</comment>
+- <comment xml:lang="cs">zástupce projektu Kexi na databázovém serveru</comment>
+- <comment xml:lang="da">genvej til Kexiprojekt på databaseserver</comment>
+- <comment xml:lang="de">Schnellzugriff zum Kexi-Projekt auf dem Datenbankserver</comment>
+- <comment xml:lang="el">Συντόμευση σε έργο Kexi στον εξυπηρετητή βάσης δεδομένων</comment>
+- <comment xml:lang="en_GB">shortcut to Kexi project on database server</comment>
+- <comment xml:lang="es">acceso directo a proyecto Kexi en el servidor de bases de datos</comment>
+- <comment xml:lang="eu">lasterbidea datu-basearen zerbitzariko Kexi proiekturako</comment>
+- <comment xml:lang="fi">pikakuvake tietokantapalvelimella olevaan Kexi-projektiin</comment>
+- <comment xml:lang="fo">snarvegur til Kexi verkætlan á dátustovnsambætara</comment>
+- <comment xml:lang="fr">raccourci vers projet Kexi sur serveur de base de données</comment>
+- <comment xml:lang="ga">aicearra go tionscadal Kexi ar fhreastalaí bunachair sonraí</comment>
+- <comment xml:lang="gl">acceso directo a proxecto Kexi no servidor de bases de datos</comment>
+- <comment xml:lang="he">קיצור דרך לפרוירט Kexi בשרת נתונים</comment>
+- <comment xml:lang="hr">Prečac do Kexi projekta na poslužitelju baze podataka</comment>
+- <comment xml:lang="hu">indítóikon adatbázis-kiszolgálón lévő Kexi projektre</comment>
+- <comment xml:lang="ia">Ligamine a projecto Kexi in servitor de base de datos</comment>
+- <comment xml:lang="id">pintasan ke projek Kexi pada server basis data</comment>
+- <comment xml:lang="it">Scorciatoia a progetto Kexi su server di database</comment>
+- <comment xml:lang="ja">データベースサーバの Kexi プロジェクトへのショートカット</comment>
+- <comment xml:lang="kk">дерекқор серверіндегі Kexi жобасына сілтеме</comment>
+- <comment xml:lang="ko">데이터베이스 서버의 Kexi 프로젝트 바로 가기</comment>
+- <comment xml:lang="lt">nuoroda į Kexi projektą duomenų bazės serveryje</comment>
+- <comment xml:lang="lv">īsceļš uz Kexi projektu datubāzes serverī</comment>
+- <comment xml:lang="nl">shortcut naar Kexi project op database server</comment>
+- <comment xml:lang="oc">acorchi cap a projècte Kexi sus servidor de banca de donadas</comment>
+- <comment xml:lang="pl">Skrót do projektu Kexi na serwerze bazy danych</comment>
+- <comment xml:lang="pt">atalho para projeto Kexi em servidor de base de dados</comment>
+- <comment xml:lang="pt_BR">Atalho para projeto Kexi no servidor de banco de dados</comment>
+- <comment xml:lang="ro">scurtătură către un proiect Kexi pe un server de baze de date</comment>
+- <comment xml:lang="ru">Ссылка на проект Kexi на сервере БД</comment>
+- <comment xml:lang="sk">Zástupca projektu Kexi na databázovom serveri</comment>
+- <comment xml:lang="sl">bližnjica do Kexi projekta na podatkovnem strežniku</comment>
+- <comment xml:lang="sr">пречица до пројекта Кексија на серверу базе података</comment>
+- <comment xml:lang="sv">genväg till Kexi-projekt på databasserver</comment>
+- <comment xml:lang="tr">veritabanı üzerindeki Kexi projesine kısayol</comment>
+- <comment xml:lang="uk">скорочення для проекту Kexi на сервері бази даних</comment>
+- <comment xml:lang="zh_CN">数据库服务器上 Kexi 项目的快捷方式</comment>
+- <comment xml:lang="zh_TW">資料庫伺服器上 Kexi 專案的捷徑</comment>
++ <comment>Kexi shortcut</comment>
++ <comment xml:lang="bg">Ускорител — Kexi</comment>
++ <comment xml:lang="ca">drecera de Kexi</comment>
++ <comment xml:lang="da">Kexi-genvej</comment>
++ <comment xml:lang="de">Kexi-Verweis</comment>
++ <comment xml:lang="en-GB">Kexi shortcut</comment>
++ <comment xml:lang="es">atajo de Kexi</comment>
++ <comment xml:lang="eu">Kexi lasterbidea</comment>
++ <comment xml:lang="fi">KEXI-pikakuvake</comment>
++ <comment xml:lang="fr">raccourci Kexi</comment>
++ <comment xml:lang="hr">Kexi prečac</comment>
++ <comment xml:lang="hu">Kexi parancsiko</comment>
++ <comment xml:lang="id">Pintasan Kexi</comment>
++ <comment xml:lang="it">Scorciatoia Kexi</comment>
++ <comment xml:lang="kk">Kexi жарлығы</comment>
++ <comment xml:lang="ko">Kexi 바로 가기</comment>
++ <comment xml:lang="pl">Skrót Kexi</comment>
++ <comment xml:lang="pt-BR">Atalho do Kexi</comment>
++ <comment xml:lang="ru">Ссылка Kexi</comment>
++ <comment xml:lang="sk">Odkaz Kexi</comment>
++ <comment xml:lang="sv">Kexi-genväg</comment>
++ <comment xml:lang="tr">Kexi kısayolu</comment>
++ <comment xml:lang="uk">скорочення Kexi</comment>
++ <comment xml:lang="zh-CN">Kexi 快捷方式</comment>
++ <comment xml:lang="zh-TW">Kexi 捷徑</comment>
+ <glob pattern="*.kexis"/>
+ </mime-type>
+ <mime-type type="application/x-kexiproject-sqlite2">
+- <comment>Kexi database file-based project</comment>
+- <comment xml:lang="ar">مشروع قاعدة بيانات Kexi يعتمد على ملفات</comment>
+- <comment xml:lang="bg">Проект с база от данни — Kexi</comment>
+- <comment xml:lang="ca">projecte basat en fitxer de base de dades de Kexi</comment>
+- <comment xml:lang="cs">projekt založený na souboru databáze Kexi</comment>
+- <comment xml:lang="da">Filbaseret projekt for Kexidatabase</comment>
+- <comment xml:lang="de">Dateibasiertes Kexi-Datenbankprojekt</comment>
+- <comment xml:lang="el">Έργο βάσης δεδομένων Kexi βασισμένο σε αρχεία </comment>
+- <comment xml:lang="en_GB">Kexi database file-based project</comment>
+- <comment xml:lang="es">proyecto de base de datos basada en archivos de Kexi</comment>
+- <comment xml:lang="eu">Kexi datu-baseko fitxategian oinarritutako proiektua</comment>
+- <comment xml:lang="fi">Kexin tiedostoperustainen tietokantaprojekti</comment>
+- <comment xml:lang="fo">Kexi dátustovns fílugrundað verkætlan</comment>
+- <comment xml:lang="fr">projet de base de données Kexi en mode fichier</comment>
+- <comment xml:lang="ga">tionscadal bunachair sonraí Kexi bunaithe ar chomhaid</comment>
+- <comment xml:lang="gl">proxecto baseado no ficheiro-base de datos Kexi</comment>
+- <comment xml:lang="he">מיזם מסד נתונים מבוסס-קובץ של Kexi</comment>
+- <comment xml:lang="hr">Kexi baza podataka datotekom temeljen projekt</comment>
+- <comment xml:lang="hu">Kexi adatbázisfájl-alapú projekt</comment>
+- <comment xml:lang="ia">Projecto de base de datos Kexi in modo file</comment>
+- <comment xml:lang="id">Projek berbasis berkas basis data Kexi</comment>
+- <comment xml:lang="it">Progetto su file di database Kexi</comment>
+- <comment xml:lang="ja">Kexi データベース ファイルベースプロジェクト</comment>
+- <comment xml:lang="kk">Файл негізінде жоба үшін Kexi дерекқоры</comment>
+- <comment xml:lang="ko">Kexi 데이터베이스 파일 기반 프로젝트</comment>
+- <comment xml:lang="lt">Kexi duomenų bazės failo tipo projektas</comment>
+- <comment xml:lang="lv">Kexi datubāzes datnes balstīts projekts</comment>
+- <comment xml:lang="nl">Kexi database bestandgebaseerd project</comment>
+- <comment xml:lang="oc">projècte de banca de donadas Kexi en mòde fichièr</comment>
+- <comment xml:lang="pl">Projekt bazy danych Kexi na podstawie plików</comment>
+- <comment xml:lang="pt">projeto Kexi em base de dados baseada em ficheiros</comment>
+- <comment xml:lang="pt_BR">Projeto de banco de dados baseado em arquivo do Kexi</comment>
+- <comment xml:lang="ro">Proiect bazat pe fișiere al bazei de date Kexi</comment>
+- <comment xml:lang="ru">Файловый проект базы данных Kexi</comment>
+- <comment xml:lang="sk">Projekt databázy Kexi s úložiskom typu súbor</comment>
+- <comment xml:lang="sl">Datoteka projekta podatkovne zbirke Kexi</comment>
+- <comment xml:lang="sr">пројекат Кексијеве базе података на основу датотеке</comment>
+- <comment xml:lang="sv">Kexi-databas för filbaserat projekt</comment>
+- <comment xml:lang="tr">Dosya temelli Kexi veritabanı projesi</comment>
+- <comment xml:lang="uk">проект файлової бази даних Kexi</comment>
+- <comment xml:lang="zh_CN">Kexi 基于文件的数据库项目</comment>
+- <comment xml:lang="zh_TW">Kexi 資料庫檔案基礎專案</comment>
++ <comment>Kexi database file</comment>
++ <comment xml:lang="bg">База от данни — Kexi</comment>
++ <comment xml:lang="ca">fitxer de base de dades de Kexi</comment>
++ <comment xml:lang="da">Kexi database-fil</comment>
++ <comment xml:lang="de">Kexi-Datenbankdatei</comment>
++ <comment xml:lang="en-GB">Kexi database file</comment>
++ <comment xml:lang="es">archivo de base de datos de Kexi</comment>
++ <comment xml:lang="eu">Kexi datu-base fitxategia</comment>
++ <comment xml:lang="fi">KEXI-tietokanta</comment>
++ <comment xml:lang="fr">fichier de base de données Kexi</comment>
++ <comment xml:lang="hr">Kexi datoteka baze podataka</comment>
++ <comment xml:lang="hu">Kexi adatbázisfájl</comment>
++ <comment xml:lang="id">Berkas basis data Kexi</comment>
++ <comment xml:lang="it">File database Kexi</comment>
++ <comment xml:lang="kk">Kexi дерекқор файлы</comment>
++ <comment xml:lang="ko">Kexi 데이터베이스 파일</comment>
++ <comment xml:lang="pl">Plik bazy danych Kexi</comment>
++ <comment xml:lang="pt-BR">Arquivo de banco de dados do Kexi</comment>
++ <comment xml:lang="ru">Файл базы данных Kexi</comment>
++ <comment xml:lang="sk">Súbor databázy Kexi</comment>
++ <comment xml:lang="sv">Kexi-databasfil</comment>
++ <comment xml:lang="tr">Kexi veri tabanı dosyası</comment>
++ <comment xml:lang="uk">файл бази даних Kexi</comment>
++ <comment xml:lang="zh-CN">Kexi 数据库文件</comment>
++ <comment xml:lang="zh-TW">Kexi 資料庫檔案</comment>
+ <sub-class-of type="application/x-sqlite2"/>
+ <glob pattern="*.kexi"/>
+ </mime-type>
+ <mime-type type="application/x-kexiproject-sqlite3">
+- <comment>Kexi database file-based project</comment>
+- <comment xml:lang="ar">مشروع قاعدة بيانات Kexi يعتمد على ملفات</comment>
+- <comment xml:lang="bg">Проект с база от данни — Kexi</comment>
+- <comment xml:lang="ca">projecte basat en fitxer de base de dades de Kexi</comment>
+- <comment xml:lang="cs">projekt založený na souboru databáze Kexi</comment>
+- <comment xml:lang="da">Filbaseret projekt for Kexidatabase</comment>
+- <comment xml:lang="de">Dateibasiertes Kexi-Datenbankprojekt</comment>
+- <comment xml:lang="el">Έργο βάσης δεδομένων Kexi βασισμένο σε αρχεία </comment>
+- <comment xml:lang="en_GB">Kexi database file-based project</comment>
+- <comment xml:lang="es">proyecto de base de datos basada en archivos de Kexi</comment>
+- <comment xml:lang="eu">Kexi datu-baseko fitxategian oinarritutako proiektua</comment>
+- <comment xml:lang="fi">Kexin tiedostoperustainen tietokantaprojekti</comment>
+- <comment xml:lang="fo">Kexi dátustovns fílugrundað verkætlan</comment>
+- <comment xml:lang="fr">projet de base de données Kexi en mode fichier</comment>
+- <comment xml:lang="ga">tionscadal bunachair sonraí Kexi bunaithe ar chomhaid</comment>
+- <comment xml:lang="gl">proxecto baseado no ficheiro-base de datos Kexi</comment>
+- <comment xml:lang="he">מיזם מסד נתונים מבוסס-קובץ של Kexi</comment>
+- <comment xml:lang="hr">Kexi baza podataka datotekom temeljen projekt</comment>
+- <comment xml:lang="hu">Kexi adatbázisfájl-alapú projekt</comment>
+- <comment xml:lang="ia">Projecto de base de datos Kexi in modo file</comment>
+- <comment xml:lang="id">Projek berbasis berkas basis data Kexi</comment>
+- <comment xml:lang="it">Progetto su file di database Kexi</comment>
+- <comment xml:lang="ja">Kexi データベース ファイルベースプロジェクト</comment>
+- <comment xml:lang="kk">Файл негізінде жоба үшін Kexi дерекқоры</comment>
+- <comment xml:lang="ko">Kexi 데이터베이스 파일 기반 프로젝트</comment>
+- <comment xml:lang="lt">Kexi duomenų bazės failo tipo projektas</comment>
+- <comment xml:lang="lv">Kexi datubāzes datnes balstīts projekts</comment>
+- <comment xml:lang="nl">Kexi database bestandgebaseerd project</comment>
+- <comment xml:lang="oc">projècte de banca de donadas Kexi en mòde fichièr</comment>
+- <comment xml:lang="pl">Projekt bazy danych Kexi na podstawie plików</comment>
+- <comment xml:lang="pt">projeto Kexi em base de dados baseada em ficheiros</comment>
+- <comment xml:lang="pt_BR">Projeto de banco de dados baseado em arquivo do Kexi</comment>
+- <comment xml:lang="ro">Proiect bazat pe fișiere al bazei de date Kexi</comment>
+- <comment xml:lang="ru">Файловый проект базы данных Kexi</comment>
+- <comment xml:lang="sk">Projekt databázy Kexi s úložiskom typu súbor</comment>
+- <comment xml:lang="sl">Datoteka projekta podatkovne zbirke Kexi</comment>
+- <comment xml:lang="sr">пројекат Кексијеве базе података на основу датотеке</comment>
+- <comment xml:lang="sv">Kexi-databas för filbaserat projekt</comment>
+- <comment xml:lang="tr">Dosya temelli Kexi veritabanı projesi</comment>
+- <comment xml:lang="uk">проект файлової бази даних Kexi</comment>
+- <comment xml:lang="zh_CN">Kexi 基于文件的数据库项目</comment>
+- <comment xml:lang="zh_TW">Kexi 資料庫檔案基礎專案</comment>
+- <sub-class-of type="application/x-sqlite3"/>
++ <comment>Kexi database file</comment>
++ <comment xml:lang="bg">База от данни — Kexi</comment>
++ <comment xml:lang="ca">fitxer de base de dades de Kexi</comment>
++ <comment xml:lang="da">Kexi database-fil</comment>
++ <comment xml:lang="de">Kexi-Datenbankdatei</comment>
++ <comment xml:lang="en-GB">Kexi database file</comment>
++ <comment xml:lang="es">archivo de base de datos de Kexi</comment>
++ <comment xml:lang="eu">Kexi datu-base fitxategia</comment>
++ <comment xml:lang="fi">KEXI-tietokanta</comment>
++ <comment xml:lang="fr">fichier de base de données Kexi</comment>
++ <comment xml:lang="hr">Kexi datoteka baze podataka</comment>
++ <comment xml:lang="hu">Kexi adatbázisfájl</comment>
++ <comment xml:lang="id">Berkas basis data Kexi</comment>
++ <comment xml:lang="it">File database Kexi</comment>
++ <comment xml:lang="kk">Kexi дерекқор файлы</comment>
++ <comment xml:lang="ko">Kexi 데이터베이스 파일</comment>
++ <comment xml:lang="pl">Plik bazy danych Kexi</comment>
++ <comment xml:lang="pt-BR">Arquivo de banco de dados do Kexi</comment>
++ <comment xml:lang="ru">Файл базы данных Kexi</comment>
++ <comment xml:lang="sk">Súbor databázy Kexi</comment>
++ <comment xml:lang="sv">Kexi-databasfil</comment>
++ <comment xml:lang="tr">Kexi veri tabanı dosyası</comment>
++ <comment xml:lang="uk">файл бази даних Kexi</comment>
++ <comment xml:lang="zh-CN">Kexi 数据库文件</comment>
++ <comment xml:lang="zh-TW">Kexi 資料庫檔案</comment>
++ <sub-class-of type="application/vnd.sqlite3"/>
+ <glob pattern="*.kexi"/>
+ <alias type="application/x-vnd.kde.kexi"/>
+ <alias type="application/x-kexiproject-sqlite"/>
+ </mime-type>
+ <mime-type type="application/x-kformula">
+ <comment>KFormula formula</comment>
++ <comment xml:lang="af">KFormula-formule</comment>
+ <comment xml:lang="ar">صيغة KFormula</comment>
+- <comment xml:lang="be@latin">Formuła KFormula</comment>
++ <comment xml:lang="be-Latn">Formuła KFormula</comment>
+ <comment xml:lang="bg">Формула — KFormula</comment>
+ <comment xml:lang="ca">fórmula de KFormula</comment>
+ <comment xml:lang="cs">vzorec KFormula</comment>
+ <comment xml:lang="da">KFormula-formel</comment>
+ <comment xml:lang="de">KFormula-Formel</comment>
+ <comment xml:lang="el">Μαθηματικός τύπος KFormula</comment>
+- <comment xml:lang="en_GB">KFormula formula</comment>
++ <comment xml:lang="en-GB">KFormula formula</comment>
+ <comment xml:lang="eo">KFormula-formulo</comment>
+ <comment xml:lang="es">fórmula de KFormula</comment>
+ <comment xml:lang="eu">KFormula formula</comment>
+ <comment xml:lang="fi">KFormula-kaava</comment>
+ <comment xml:lang="fo">KFormula frymil</comment>
+ <comment xml:lang="fr">formule KFormula</comment>
++ <comment xml:lang="fur">formule KFormula</comment>
+ <comment xml:lang="ga">foirmle KFormula</comment>
+ <comment xml:lang="gl">fórmula de KFormula</comment>
+ <comment xml:lang="he">נוסחת KFormula</comment>
+@@ -13943,7 +14496,7 @@
+ <comment xml:lang="oc">formula KFormula</comment>
+ <comment xml:lang="pl">Formuła KFormula</comment>
+ <comment xml:lang="pt">fórmula KFormula</comment>
+- <comment xml:lang="pt_BR">Fórmula do KFormula</comment>
++ <comment xml:lang="pt-BR">Fórmula do KFormula</comment>
+ <comment xml:lang="ro">Formulă KFormula</comment>
+ <comment xml:lang="ru">Формула KFormula</comment>
+ <comment xml:lang="sk">Vzorec KFormula</comment>
+@@ -13954,18 +14507,18 @@
+ <comment xml:lang="tr">KFormula formülü</comment>
+ <comment xml:lang="uk">формула KFormula</comment>
+ <comment xml:lang="vi">Công thức KFormula</comment>
+- <comment xml:lang="zh_CN">KFormula 公式</comment>
+- <comment xml:lang="zh_TW">KFormula 公式</comment>
++ <comment xml:lang="zh-CN">KFormula 公式</comment>
++ <comment xml:lang="zh-TW">KFormula 公式</comment>
+ <generic-icon name="x-office-document"/>
+ <magic priority="60">
+- <match value="\037\213" type="string" offset="0">
+- <match value="KOffice" type="string" offset="10">
+- <match value="application/x-kformula\004\006" type="string" offset="18"/>
++ <match type="string" value="\037\213" offset="0">
++ <match type="string" value="KOffice" offset="10">
++ <match type="string" value="application/x-kformula\004\006" offset="18"/>
+ </match>
+ </match>
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/x-kformula" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/x-kformula" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -13973,21 +14526,23 @@
+ </mime-type>
+ <mime-type type="application/x-killustrator">
+ <comment>KIllustrator drawing</comment>
++ <comment xml:lang="af">KIllustrator-tekening</comment>
+ <comment xml:lang="ar">تصميم KIllustrator</comment>
+- <comment xml:lang="be@latin">Rysunak KIllustrator</comment>
++ <comment xml:lang="be-Latn">Rysunak KIllustrator</comment>
+ <comment xml:lang="bg">Чертеж — KIllustrator</comment>
+ <comment xml:lang="ca">dibuix de KIllustrator</comment>
+ <comment xml:lang="cs">kresba KIllustrator</comment>
+ <comment xml:lang="da">KIllustrator-tegning</comment>
+ <comment xml:lang="de">KIllustrator-Zeichnung</comment>
+ <comment xml:lang="el">Σχέδιο KIllustrator</comment>
+- <comment xml:lang="en_GB">KIllustrator drawing</comment>
++ <comment xml:lang="en-GB">KIllustrator drawing</comment>
+ <comment xml:lang="eo">KIllustrator-grafikaĵo</comment>
+ <comment xml:lang="es">dibujo de KIllustrator</comment>
+ <comment xml:lang="eu">KIllustrator marrazkia</comment>
+ <comment xml:lang="fi">KIllustrator-piirros</comment>
+ <comment xml:lang="fo">KIllustrator tekning</comment>
+ <comment xml:lang="fr">dessin KIllustrator</comment>
++ <comment xml:lang="fur">dissen KIllustrator</comment>
+ <comment xml:lang="ga">líníocht KIllustrator</comment>
+ <comment xml:lang="gl">debuxo de KIllustrator</comment>
+ <comment xml:lang="he">ציור KIllustrator</comment>
+@@ -14008,7 +14563,7 @@
+ <comment xml:lang="oc">dessenh KIllustrator</comment>
+ <comment xml:lang="pl">Rysunek KIllustrator</comment>
+ <comment xml:lang="pt">desenho KIllustrator</comment>
+- <comment xml:lang="pt_BR">Desenho do KIllustrator</comment>
++ <comment xml:lang="pt-BR">Desenho do KIllustrator</comment>
+ <comment xml:lang="ro">Desen KIllustrator</comment>
+ <comment xml:lang="ru">Рисунок KIllustrator</comment>
+ <comment xml:lang="sk">Kresba KIllustrator</comment>
+@@ -14019,13 +14574,13 @@
+ <comment xml:lang="tr">KIllustrator çizimi</comment>
+ <comment xml:lang="uk">малюнок KIllustrator</comment>
+ <comment xml:lang="vi">Bản vẽ KIllustrator</comment>
+- <comment xml:lang="zh_CN">KIllustrator 绘图</comment>
+- <comment xml:lang="zh_TW">KIllustrator 繪圖</comment>
++ <comment xml:lang="zh-CN">KIllustrator 绘图</comment>
++ <comment xml:lang="zh-TW">KIllustrator 繪圖</comment>
+ <generic-icon name="image-x-generic"/>
+ <magic priority="60">
+- <match value="\037\213" type="string" offset="0">
+- <match value="KOffice" type="string" offset="10">
+- <match value="application/x-killustrator\004\006" type="string" offset="18"/>
++ <match type="string" value="\037\213" offset="0">
++ <match type="string" value="KOffice" offset="10">
++ <match type="string" value="application/x-killustrator\004\006" offset="18"/>
+ </match>
+ </match>
+ </magic>
+@@ -14033,21 +14588,23 @@
+ </mime-type>
+ <mime-type type="application/x-kivio">
+ <comment>Kivio flowchart</comment>
++ <comment xml:lang="af">Kivio-vloeidiagram</comment>
+ <comment xml:lang="ar">قائمة تدفق Kivio</comment>
+- <comment xml:lang="be@latin">Blok-schiema Kivio</comment>
++ <comment xml:lang="be-Latn">Blok-schiema Kivio</comment>
+ <comment xml:lang="bg">Диаграма — Kivio</comment>
+ <comment xml:lang="ca">diagrama de flux de Kivio</comment>
+ <comment xml:lang="cs">vývojový diagram Kivio</comment>
+ <comment xml:lang="da">Kiviorutediagram</comment>
+ <comment xml:lang="de">Kivio-Flussdiagramm</comment>
+ <comment xml:lang="el">Διάγραμμα ροής Kivio</comment>
+- <comment xml:lang="en_GB">Kivio flowchart</comment>
++ <comment xml:lang="en-GB">Kivio flowchart</comment>
+ <comment xml:lang="eo">Kivo-fluskemo</comment>
+ <comment xml:lang="es">diagrama de flujo de Kivio</comment>
+ <comment xml:lang="eu">Kivio diagrama</comment>
+ <comment xml:lang="fi">Kivio-vuokaavio</comment>
+ <comment xml:lang="fo">Kivio leiðarit</comment>
+ <comment xml:lang="fr">diagramme de flux Kivio</comment>
++ <comment xml:lang="fur">diagram di flus Kivio</comment>
+ <comment xml:lang="ga">sreabhchairt Kivio</comment>
+ <comment xml:lang="gl">gráfica de fluxo de Kivio</comment>
+ <comment xml:lang="he">תרשים זרימה של Kivio</comment>
+@@ -14068,7 +14625,7 @@
+ <comment xml:lang="oc">diagrama de flux Kivio</comment>
+ <comment xml:lang="pl">Diagram przepływów Kivio</comment>
+ <comment xml:lang="pt">gráfico de fluxo Kivio</comment>
+- <comment xml:lang="pt_BR">Fluxograma do Kivio</comment>
++ <comment xml:lang="pt-BR">Fluxograma do Kivio</comment>
+ <comment xml:lang="ro">Diagramă Kivio</comment>
+ <comment xml:lang="ru">Диаграмма Kivio</comment>
+ <comment xml:lang="sk">Vývojový diagram Kivio</comment>
+@@ -14076,21 +14633,21 @@
+ <comment xml:lang="sq">Diagramë fluksi Kivio</comment>
+ <comment xml:lang="sr">Кивиов дијаграм тока</comment>
+ <comment xml:lang="sv">Kivio-flödesschema</comment>
+- <comment xml:lang="tr">Kivio akış şeması</comment>
++ <comment xml:lang="tr">Kivio akış çizgesi</comment>
+ <comment xml:lang="uk">блок-схема Kivio</comment>
+ <comment xml:lang="vi">Lược đồ Kivio</comment>
+- <comment xml:lang="zh_CN">Kivio 流程图</comment>
+- <comment xml:lang="zh_TW">Kivio 圖表</comment>
++ <comment xml:lang="zh-CN">Kivio 流程图</comment>
++ <comment xml:lang="zh-TW">Kivio 流程圖</comment>
+ <generic-icon name="x-office-document"/>
+ <magic priority="60">
+- <match value="\037\213" type="string" offset="0">
+- <match value="KOffice" type="string" offset="10">
+- <match value="application/x-kivio\004\006" type="string" offset="18"/>
++ <match type="string" value="\037\213" offset="0">
++ <match type="string" value="KOffice" offset="10">
++ <match type="string" value="application/x-kivio\004\006" offset="18"/>
+ </match>
+ </match>
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/x-kivio" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/x-kivio" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -14098,21 +14655,23 @@
+ </mime-type>
+ <mime-type type="application/x-kontour">
+ <comment>Kontour drawing</comment>
++ <comment xml:lang="af">Kontour-tekening</comment>
+ <comment xml:lang="ar">تصميم Kontour</comment>
+- <comment xml:lang="be@latin">Rysunak Kontour</comment>
++ <comment xml:lang="be-Latn">Rysunak Kontour</comment>
+ <comment xml:lang="bg">Чертеж — Kontour</comment>
+ <comment xml:lang="ca">dibuix de Kontour</comment>
+ <comment xml:lang="cs">kresba Kontour</comment>
+ <comment xml:lang="da">Kontourtegning</comment>
+ <comment xml:lang="de">Kontour-Zeichnung</comment>
+ <comment xml:lang="el">Σχέδιο Kontour</comment>
+- <comment xml:lang="en_GB">Kontour drawing</comment>
++ <comment xml:lang="en-GB">Kontour drawing</comment>
+ <comment xml:lang="eo">Kontour-grafikaĵo</comment>
+ <comment xml:lang="es">dibujo de Kontour</comment>
+ <comment xml:lang="eu">Kontour marrazkia</comment>
+ <comment xml:lang="fi">Kontour-piirros</comment>
+ <comment xml:lang="fo">Kontour tekning</comment>
+ <comment xml:lang="fr">dessin Kontour</comment>
++ <comment xml:lang="fur">dissen Kontour</comment>
+ <comment xml:lang="ga">líníocht Kontour</comment>
+ <comment xml:lang="gl">debuxo de Kontour</comment>
+ <comment xml:lang="he">ציור Kontour</comment>
+@@ -14133,7 +14692,7 @@
+ <comment xml:lang="oc">dessenh Kontour</comment>
+ <comment xml:lang="pl">Rysunek Kontour</comment>
+ <comment xml:lang="pt">desenho Kontour</comment>
+- <comment xml:lang="pt_BR">Desenho do Kontour</comment>
++ <comment xml:lang="pt-BR">Desenho do Kontour</comment>
+ <comment xml:lang="ro">Desen Kontour</comment>
+ <comment xml:lang="ru">Рисунок Kontour</comment>
+ <comment xml:lang="sk">Kresba Kontour</comment>
+@@ -14144,18 +14703,18 @@
+ <comment xml:lang="tr">Kontour çizimi</comment>
+ <comment xml:lang="uk">малюнок Kontour</comment>
+ <comment xml:lang="vi">Bản vẽ Kontour</comment>
+- <comment xml:lang="zh_CN">Kontour 绘图</comment>
+- <comment xml:lang="zh_TW">Kontour 繪圖</comment>
++ <comment xml:lang="zh-CN">Kontour 绘图</comment>
++ <comment xml:lang="zh-TW">Kontour 繪圖</comment>
+ <generic-icon name="image-x-generic"/>
+ <magic priority="60">
+- <match value="\037\213" type="string" offset="0">
+- <match value="KOffice" type="string" offset="10">
+- <match value="application/x-kontour\004\006" type="string" offset="18"/>
++ <match type="string" value="\037\213" offset="0">
++ <match type="string" value="KOffice" offset="10">
++ <match type="string" value="application/x-kontour\004\006" offset="18"/>
+ </match>
+ </match>
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/x-kontour" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/x-kontour" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -14163,21 +14722,23 @@
+ </mime-type>
+ <mime-type type="application/x-kpovmodeler">
+ <comment>KPovModeler scene</comment>
++ <comment xml:lang="af">KPovModeler-toneel</comment>
+ <comment xml:lang="ar">مشهد KPovModeler</comment>
+- <comment xml:lang="be@latin">Scena KPovModeler</comment>
++ <comment xml:lang="be-Latn">Scena KPovModeler</comment>
+ <comment xml:lang="bg">Сцена — KPovModeler</comment>
+ <comment xml:lang="ca">escena de KPovModeler</comment>
+ <comment xml:lang="cs">scéna KPovModeler</comment>
+ <comment xml:lang="da">KPovModeler-scene</comment>
+ <comment xml:lang="de">KPovModeler-Szene</comment>
+ <comment xml:lang="el">Σκηνή KPovModeler</comment>
+- <comment xml:lang="en_GB">KPovModeler scene</comment>
++ <comment xml:lang="en-GB">KPovModeler scene</comment>
+ <comment xml:lang="eo">KPovModeler-sceno</comment>
+ <comment xml:lang="es">escena de KPovModeler</comment>
+ <comment xml:lang="eu">KPovModeler eszena</comment>
+ <comment xml:lang="fi">KPovModeler-näkymä</comment>
+ <comment xml:lang="fo">KPovModeler leikmynd</comment>
+ <comment xml:lang="fr">scène KPovModeler</comment>
++ <comment xml:lang="fur">sene KPovModeler</comment>
+ <comment xml:lang="ga">radharc KPovModeler</comment>
+ <comment xml:lang="gl">escena de KPovModeler</comment>
+ <comment xml:lang="he">סצנת KPovModeler</comment>
+@@ -14198,7 +14759,7 @@
+ <comment xml:lang="oc">scène KPovModeler</comment>
+ <comment xml:lang="pl">Scena KPovModeler</comment>
+ <comment xml:lang="pt">cenário KPovModeler</comment>
+- <comment xml:lang="pt_BR">Cena do KPovModeler</comment>
++ <comment xml:lang="pt-BR">Cena do KPovModeler</comment>
+ <comment xml:lang="ro">Scenă KPovModeler</comment>
+ <comment xml:lang="ru">Сцена KPovModeler</comment>
+ <comment xml:lang="sk">Scéna KPovModeler</comment>
+@@ -14209,28 +14770,30 @@
+ <comment xml:lang="tr">KPovModeler sahnesi</comment>
+ <comment xml:lang="uk">сцена KPovModeler</comment>
+ <comment xml:lang="vi">Cảnh KPovModeler</comment>
+- <comment xml:lang="zh_CN">KPovModeler 场景</comment>
+- <comment xml:lang="zh_TW">KPovModeler 場景</comment>
++ <comment xml:lang="zh-CN">KPovModeler 场景</comment>
++ <comment xml:lang="zh-TW">KPovModeler 場景</comment>
+ <generic-icon name="image-x-generic"/>
+ <glob pattern="*.kpm"/>
+ </mime-type>
+ <mime-type type="application/x-kpresenter">
+ <comment>KPresenter presentation</comment>
++ <comment xml:lang="af">KPresenter-voorlegging</comment>
+ <comment xml:lang="ar">عرض تقديمي KPresenter</comment>
+- <comment xml:lang="be@latin">Prezentacyja KPresenter</comment>
++ <comment xml:lang="be-Latn">Prezentacyja KPresenter</comment>
+ <comment xml:lang="bg">Презентация — KPresenter</comment>
+ <comment xml:lang="ca">presentació de KPresenter</comment>
+ <comment xml:lang="cs">prezentace KPresenter</comment>
+ <comment xml:lang="da">KPresenter-præsentation</comment>
+ <comment xml:lang="de">KPresenter-Präsentation</comment>
+ <comment xml:lang="el">Παρουσίαση KPresenter</comment>
+- <comment xml:lang="en_GB">KPresenter presentation</comment>
++ <comment xml:lang="en-GB">KPresenter presentation</comment>
+ <comment xml:lang="eo">KPresenter-prezentaĵo</comment>
+ <comment xml:lang="es">presentación de KPresenter</comment>
+ <comment xml:lang="eu">Kpresenter aurkezpena</comment>
+ <comment xml:lang="fi">KPresenter-esitys</comment>
+ <comment xml:lang="fo">KPresenter framløga</comment>
+ <comment xml:lang="fr">présentation KPresenter</comment>
++ <comment xml:lang="fur">presentazion KPresenter</comment>
+ <comment xml:lang="ga">láithreoireacht KPresenter</comment>
+ <comment xml:lang="gl">presentación de KPresenter</comment>
+ <comment xml:lang="he">מצגת KPresenter</comment>
+@@ -14251,7 +14814,7 @@
+ <comment xml:lang="oc">presentacion KPresenter</comment>
+ <comment xml:lang="pl">Prezentacja KPresenter</comment>
+ <comment xml:lang="pt">apresentação KPresenter</comment>
+- <comment xml:lang="pt_BR">Apresentação do KPresenter</comment>
++ <comment xml:lang="pt-BR">Apresentação do KPresenter</comment>
+ <comment xml:lang="ro">Prezentare KPresenter</comment>
+ <comment xml:lang="ru">Презентация KPresenter</comment>
+ <comment xml:lang="sk">Prezentácia KPresenter</comment>
+@@ -14262,18 +14825,18 @@
+ <comment xml:lang="tr">KPresenter sunum dosyası</comment>
+ <comment xml:lang="uk">презентація KPresenter</comment>
+ <comment xml:lang="vi">Trình diễn KPresenter</comment>
+- <comment xml:lang="zh_CN">KPresenter 演示文稿</comment>
+- <comment xml:lang="zh_TW">KPresenter 簡報檔</comment>
++ <comment xml:lang="zh-CN">KPresenter 演示文稿</comment>
++ <comment xml:lang="zh-TW">KPresenter 簡報</comment>
+ <generic-icon name="x-office-presentation"/>
+ <magic priority="60">
+- <match value="\037\213" type="string" offset="0">
+- <match value="KOffice" type="string" offset="10">
+- <match value="application/x-kpresenter\004\006" type="string" offset="18"/>
++ <match type="string" value="\037\213" offset="0">
++ <match type="string" value="KOffice" offset="10">
++ <match type="string" value="application/x-kpresenter\004\006" offset="18"/>
+ </match>
+ </match>
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/x-kpresenter" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/x-kpresenter" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -14282,22 +14845,24 @@
+ </mime-type>
+ <mime-type type="application/x-krita">
+ <comment>Krita document</comment>
++ <comment xml:lang="af">Krita-dokument</comment>
+ <comment xml:lang="ar">مستند Krita</comment>
+ <comment xml:lang="ast">Documentu de Krita</comment>
+- <comment xml:lang="be@latin">Dakument Krita</comment>
++ <comment xml:lang="be-Latn">Dakument Krita</comment>
+ <comment xml:lang="bg">Документ — Krita</comment>
+- <comment xml:lang="ca">document Krita</comment>
++ <comment xml:lang="ca">document de Krita</comment>
+ <comment xml:lang="cs">dokument Krita</comment>
+ <comment xml:lang="da">Kritadokument</comment>
+ <comment xml:lang="de">Krita-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Krita</comment>
+- <comment xml:lang="en_GB">Krita document</comment>
++ <comment xml:lang="en-GB">Krita document</comment>
+ <comment xml:lang="eo">Krita-dokumento</comment>
+ <comment xml:lang="es">documento de Krita</comment>
+ <comment xml:lang="eu">Krita dokumentua</comment>
+ <comment xml:lang="fi">Krita-asiakirja</comment>
+ <comment xml:lang="fo">Krita skjal</comment>
+ <comment xml:lang="fr">document Krita</comment>
++ <comment xml:lang="fur">document Krita</comment>
+ <comment xml:lang="ga">cáipéis Krita</comment>
+ <comment xml:lang="gl">documento de Krita</comment>
+ <comment xml:lang="he">מסמך Krita</comment>
+@@ -14318,7 +14883,7 @@
+ <comment xml:lang="oc">document Krita</comment>
+ <comment xml:lang="pl">Dokument Krita</comment>
+ <comment xml:lang="pt">documento Krita</comment>
+- <comment xml:lang="pt_BR">Documento do Krita</comment>
++ <comment xml:lang="pt-BR">Documento do Krita</comment>
+ <comment xml:lang="ro">Document Krita</comment>
+ <comment xml:lang="ru">Документ Krita</comment>
+ <comment xml:lang="sk">Dokument Krita</comment>
+@@ -14329,18 +14894,18 @@
+ <comment xml:lang="tr">Krita belgesi</comment>
+ <comment xml:lang="uk">документ Krita</comment>
+ <comment xml:lang="vi">Tài liệu Krita</comment>
+- <comment xml:lang="zh_CN">Krita 文档</comment>
+- <comment xml:lang="zh_TW">Krita 文件</comment>
++ <comment xml:lang="zh-CN">Krita 文档</comment>
++ <comment xml:lang="zh-TW">Krita 文件</comment>
+ <generic-icon name="x-office-document"/>
+ <magic priority="60">
+- <match value="\037\213" type="string" offset="0">
+- <match value="KOffice" type="string" offset="10">
+- <match value="application/x-krita\004\006" type="string" offset="18"/>
++ <match type="string" value="\037\213" offset="0">
++ <match type="string" value="KOffice" offset="10">
++ <match type="string" value="application/x-krita\004\006" offset="18"/>
+ </match>
+ </match>
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/x-krita" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/x-krita" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -14348,21 +14913,23 @@
+ </mime-type>
+ <mime-type type="application/x-kspread">
+ <comment>KSpread spreadsheet</comment>
++ <comment xml:lang="af">KSpread-sigblad</comment>
+ <comment xml:lang="ar">جدول KSpread</comment>
+- <comment xml:lang="be@latin">Raźlikovy arkuš KSpread</comment>
++ <comment xml:lang="be-Latn">Raźlikovy arkuš KSpread</comment>
+ <comment xml:lang="bg">Таблица — KSpread</comment>
+ <comment xml:lang="ca">full de càlcul de KSpread</comment>
+ <comment xml:lang="cs">sešit KSpread</comment>
+ <comment xml:lang="da">KSpread-regneark</comment>
+ <comment xml:lang="de">KSpread-Tabelle</comment>
+ <comment xml:lang="el">Λογιστικό φύλλο KSpread</comment>
+- <comment xml:lang="en_GB">KSpread spreadsheet</comment>
++ <comment xml:lang="en-GB">KSpread spreadsheet</comment>
+ <comment xml:lang="eo">KSpread-kalkultabelo</comment>
+ <comment xml:lang="es">hoja de cálculo de KSpread</comment>
+ <comment xml:lang="eu">KSpread kalkulu-orria</comment>
+ <comment xml:lang="fi">KSpread-taulukko</comment>
+ <comment xml:lang="fo">KSpread rokniark</comment>
+ <comment xml:lang="fr">feuille de calcul KSpread</comment>
++ <comment xml:lang="fur">sfuei di calcul KSpread</comment>
+ <comment xml:lang="ga">scarbhileog KSpread</comment>
+ <comment xml:lang="gl">folla de cálculo de KSpread</comment>
+ <comment xml:lang="he">גליון נתונים של Kspread</comment>
+@@ -14383,7 +14950,7 @@
+ <comment xml:lang="oc">fuèlh de calcul KSpread</comment>
+ <comment xml:lang="pl">Arkusz KSpread</comment>
+ <comment xml:lang="pt">folha de cálculo KSpread</comment>
+- <comment xml:lang="pt_BR">Planilha do KSpread</comment>
++ <comment xml:lang="pt-BR">Planilha do KSpread</comment>
+ <comment xml:lang="ro">Foaie de calcul KSpread</comment>
+ <comment xml:lang="ru">Электронная таблица KSpread</comment>
+ <comment xml:lang="sk">Zošit KSpread</comment>
+@@ -14391,21 +14958,21 @@
+ <comment xml:lang="sq">Fletë llogaritjesh KSpread</comment>
+ <comment xml:lang="sr">табела К-табеле</comment>
+ <comment xml:lang="sv">KSpread-kalkylblad</comment>
+- <comment xml:lang="tr">KSpread çalışma sayfası</comment>
++ <comment xml:lang="tr">KSpread hesap çizelgesi</comment>
+ <comment xml:lang="uk">ел. таблиця KSpread</comment>
+ <comment xml:lang="vi">Bảng tính KSpread</comment>
+- <comment xml:lang="zh_CN">KSpread 电子表格</comment>
+- <comment xml:lang="zh_TW">KSpread 試算表</comment>
++ <comment xml:lang="zh-CN">KSpread 电子表格</comment>
++ <comment xml:lang="zh-TW">KSpread 試算表</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <magic priority="60">
+- <match value="\037\213" type="string" offset="0">
+- <match value="KOffice" type="string" offset="10">
+- <match value="application/x-kspread\004\006" type="string" offset="18"/>
++ <match type="string" value="\037\213" offset="0">
++ <match type="string" value="KOffice" offset="10">
++ <match type="string" value="application/x-kspread\004\006" offset="18"/>
+ </match>
+ </match>
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/x-kspread" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/x-kspread" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -14413,21 +14980,23 @@
+ </mime-type>
+ <mime-type type="application/x-kspread-crypt">
+ <comment>KSpread spreadsheet (encrypted)</comment>
++ <comment xml:lang="af">KSpread-sigblad (geënkripteer)</comment>
+ <comment xml:lang="ar">جدول KSpread (مشفر)</comment>
+- <comment xml:lang="be@latin">Raźlikovy arkuš KSpread (zašyfravany)</comment>
++ <comment xml:lang="be-Latn">Raźlikovy arkuš KSpread (zašyfravany)</comment>
+ <comment xml:lang="bg">Таблица — KSpread, шифрирана</comment>
+ <comment xml:lang="ca">full de càlcul de KSpread (xifrat)</comment>
+ <comment xml:lang="cs">sešit KSpread (šifrovaný)</comment>
+ <comment xml:lang="da">KSpread-regneark (krypteret)</comment>
+ <comment xml:lang="de">KSpread-Tabelle (verschlüsselt)</comment>
+ <comment xml:lang="el">Λογιστικό φύλλο KSpread (κρυπτογραφημένο)</comment>
+- <comment xml:lang="en_GB">KSpread spreadsheet (encrypted)</comment>
++ <comment xml:lang="en-GB">KSpread spreadsheet (encrypted)</comment>
+ <comment xml:lang="eo">KSpread-kalkultabelo (ĉifrita)</comment>
+ <comment xml:lang="es">hoja de cálculo de KSpread (cifrada)</comment>
+- <comment xml:lang="eu">KSpread kalkulu-orria (enkriptatua)</comment>
++ <comment xml:lang="eu">KSpread kalkulu-orria (zifratuta)</comment>
+ <comment xml:lang="fi">KSpread-taulukko (salattu)</comment>
+ <comment xml:lang="fo">KSpread rokniark (bronglað)</comment>
+ <comment xml:lang="fr">feuille de calcul KSpread (chiffrée)</comment>
++ <comment xml:lang="fur">sfuei di calcul KSpread (cifrât)</comment>
+ <comment xml:lang="ga">scarbhileog KSpread (criptithe)</comment>
+ <comment xml:lang="gl">folla de cálculo de KSpread (cifrada)</comment>
+ <comment xml:lang="he">גליון נתונים של KSpread (מוצפן)</comment>
+@@ -14448,7 +15017,7 @@
+ <comment xml:lang="oc">fuèlh de calcul KSpread (chifrada)</comment>
+ <comment xml:lang="pl">Arkusz KSpread (zaszyfrowany)</comment>
+ <comment xml:lang="pt">folha de cálculo KSpread (encriptada)</comment>
+- <comment xml:lang="pt_BR">Planilha do KSpread (criptografada)</comment>
++ <comment xml:lang="pt-BR">Planilha do KSpread (criptografada)</comment>
+ <comment xml:lang="ro">Foaie de calcul KSpread (criptat)</comment>
+ <comment xml:lang="ru">Электронная таблица KSpread (зашифрованная)</comment>
+ <comment xml:lang="sk">Zošit KSpread (šifrovaný)</comment>
+@@ -14456,32 +15025,33 @@
+ <comment xml:lang="sq">Fletë llogaritjesh KSpread (e kriptuar)</comment>
+ <comment xml:lang="sr">табела К-табеле (шифрована)</comment>
+ <comment xml:lang="sv">KSpread-kalkylblad (krypterat)</comment>
+- <comment xml:lang="tr">KSpread çalışma sayfası (şifreli)</comment>
++ <comment xml:lang="tr">KSpread hesap çizelgesi (şifreli)</comment>
+ <comment xml:lang="uk">ел. таблиця KSpread (зашифрована)</comment>
+ <comment xml:lang="vi">Bảng tính KSpread (đã mật mã)</comment>
+- <comment xml:lang="zh_CN">KSpread 电子表格(加密)</comment>
+- <comment xml:lang="zh_TW">KSpread 試算表 (已加密)</comment>
++ <comment xml:lang="zh-CN">KSpread 电子表格(加密)</comment>
++ <comment xml:lang="zh-TW">KSpread 試算表 (加密)</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <magic priority="50">
+- <match value="0x0d1a2702" type="big32" offset="0"/>
++ <match type="big32" value="0x0d1a2702" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-ksysv-package">
+ <comment>KSysV init package</comment>
+ <comment xml:lang="ar">حزمة KSysV init</comment>
+- <comment xml:lang="be@latin">Inicyjalny pakunak KSysV</comment>
++ <comment xml:lang="be-Latn">Inicyjalny pakunak KSysV</comment>
+ <comment xml:lang="bg">Пакет — KSysV init</comment>
+- <comment xml:lang="ca">paquet d'inici KSysV</comment>
++ <comment xml:lang="ca">paquet de KSysV init</comment>
+ <comment xml:lang="cs">balíček init KSysV</comment>
+ <comment xml:lang="da">KSsV init-pakke</comment>
+ <comment xml:lang="de">KSysV-Init-Paket</comment>
+ <comment xml:lang="el">Αρχικό πακέτο KSysV</comment>
+- <comment xml:lang="en_GB">KSysV init package</comment>
++ <comment xml:lang="en-GB">KSysV init package</comment>
+ <comment xml:lang="es">paquete de configuración de init para KSysV</comment>
+ <comment xml:lang="eu">KSysV hasieratzeko paketea</comment>
+ <comment xml:lang="fi">KSysV init -paketti</comment>
+ <comment xml:lang="fo">KSysV init pakki</comment>
+ <comment xml:lang="fr">paquet d'initialisation KSysV</comment>
++ <comment xml:lang="fur">pachet init KSysV</comment>
+ <comment xml:lang="ga">pacáiste túsaithe KSysV</comment>
+ <comment xml:lang="gl">paquete de KsysV init</comment>
+ <comment xml:lang="he">חבילת KSysV init</comment>
+@@ -14501,7 +15071,7 @@
+ <comment xml:lang="oc">paquet d'initializacion KSysV</comment>
+ <comment xml:lang="pl">Pakiet KSysV init</comment>
+ <comment xml:lang="pt">pacote inicial KSysV</comment>
+- <comment xml:lang="pt_BR">Pacote init do KSysV</comment>
++ <comment xml:lang="pt-BR">Pacote init do KSysV</comment>
+ <comment xml:lang="ro">Pachet KSysV init</comment>
+ <comment xml:lang="ru">Пакет инициализации KSysV</comment>
+ <comment xml:lang="sk">Balíček KSysV init</comment>
+@@ -14512,33 +15082,35 @@
+ <comment xml:lang="tr">KSysV init paketi</comment>
+ <comment xml:lang="uk">пакунок KSysV init</comment>
+ <comment xml:lang="vi">Gói sở khởi KSysV</comment>
+- <comment xml:lang="zh_CN">KSysV init 软件包</comment>
+- <comment xml:lang="zh_TW">KSysV init 軟體包</comment>
++ <comment xml:lang="zh-CN">KSysV init 软件包</comment>
++ <comment xml:lang="zh-TW">KSysV init 軟體包</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="50">
+- <match value="KSysV" type="string" offset="4">
+- <match value="1" type="byte" offset="15"/>
++ <match type="string" value="KSysV" offset="4">
++ <match type="byte" value="1" offset="15"/>
+ </match>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-kugar">
+ <comment>Kugar document</comment>
++ <comment xml:lang="af">Kugar-dokument</comment>
+ <comment xml:lang="ar">مستند Kugar</comment>
+ <comment xml:lang="ast">Documentu de Kugar</comment>
+- <comment xml:lang="be@latin">Dakument Kugar</comment>
++ <comment xml:lang="be-Latn">Dakument Kugar</comment>
+ <comment xml:lang="bg">Документ — Kugar</comment>
+ <comment xml:lang="ca">document Kugar</comment>
+ <comment xml:lang="cs">dokument Kugar</comment>
+ <comment xml:lang="da">Kugardokument</comment>
+ <comment xml:lang="de">Kugar-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Kugar</comment>
+- <comment xml:lang="en_GB">Kugar document</comment>
++ <comment xml:lang="en-GB">Kugar document</comment>
+ <comment xml:lang="eo">Kugar-dokumento</comment>
+ <comment xml:lang="es">documento de Kugar</comment>
+ <comment xml:lang="eu">Kugar dokumentua</comment>
+ <comment xml:lang="fi">Kugar-asiakirja</comment>
+ <comment xml:lang="fo">Kugar skjal</comment>
+ <comment xml:lang="fr">document Kugar</comment>
++ <comment xml:lang="fur">document Kugar</comment>
+ <comment xml:lang="ga">cáipéis Kugar</comment>
+ <comment xml:lang="gl">documento de Kugar</comment>
+ <comment xml:lang="he">מסמך Kugar</comment>
+@@ -14559,7 +15131,7 @@
+ <comment xml:lang="oc">document Kugar</comment>
+ <comment xml:lang="pl">Dokument Kuguar</comment>
+ <comment xml:lang="pt">documento Kugar</comment>
+- <comment xml:lang="pt_BR">Documento do Kugar</comment>
++ <comment xml:lang="pt-BR">Documento do Kugar</comment>
+ <comment xml:lang="ro">Document Kugar</comment>
+ <comment xml:lang="ru">Документ Kugar</comment>
+ <comment xml:lang="sk">Dokument Kugar</comment>
+@@ -14570,16 +15142,17 @@
+ <comment xml:lang="tr">Kugar belgesi</comment>
+ <comment xml:lang="uk">документ Kugar</comment>
+ <comment xml:lang="vi">Tài liệu Kugar</comment>
+- <comment xml:lang="zh_CN">Kugar 文档</comment>
+- <comment xml:lang="zh_TW">Kugar 文件</comment>
++ <comment xml:lang="zh-CN">Kugar 文档</comment>
++ <comment xml:lang="zh-TW">Kugar 文件</comment>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.kud"/>
+ </mime-type>
+ <mime-type type="application/x-kword">
+ <comment>KWord document</comment>
++ <comment xml:lang="af">KWord-dokument</comment>
+ <comment xml:lang="ar">مستند KWord</comment>
+ <comment xml:lang="ast">Documentu de Kword</comment>
+- <comment xml:lang="be@latin">Dakument KWord</comment>
++ <comment xml:lang="be-Latn">Dakument KWord</comment>
+ <comment xml:lang="bg">Документ — KWord</comment>
+ <comment xml:lang="ca">document KWord</comment>
+ <comment xml:lang="cs">dokument KWord</comment>
+@@ -14587,13 +15160,14 @@
+ <comment xml:lang="da">KWord-dokument</comment>
+ <comment xml:lang="de">KWord-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο KWord</comment>
+- <comment xml:lang="en_GB">KWord document</comment>
++ <comment xml:lang="en-GB">KWord document</comment>
+ <comment xml:lang="eo">KWord-dokumento</comment>
+ <comment xml:lang="es">documento de KWord</comment>
+ <comment xml:lang="eu">KWord dokumentua</comment>
+ <comment xml:lang="fi">KWord-asiakirja</comment>
+ <comment xml:lang="fo">KWord skjal</comment>
+ <comment xml:lang="fr">document KWord</comment>
++ <comment xml:lang="fur">document KWord</comment>
+ <comment xml:lang="ga">cáipéis KWord</comment>
+ <comment xml:lang="gl">documento de KWord</comment>
+ <comment xml:lang="he">מסמך KWord</comment>
+@@ -14614,7 +15188,7 @@
+ <comment xml:lang="oc">document KWord</comment>
+ <comment xml:lang="pl">Dokument KWord</comment>
+ <comment xml:lang="pt">documento KWord</comment>
+- <comment xml:lang="pt_BR">Documento do KWord</comment>
++ <comment xml:lang="pt-BR">Documento do KWord</comment>
+ <comment xml:lang="ro">Document KWord</comment>
+ <comment xml:lang="ru">Документ KWord</comment>
+ <comment xml:lang="sk">Dokument KWord</comment>
+@@ -14625,18 +15199,18 @@
+ <comment xml:lang="tr">KWord belgesi</comment>
+ <comment xml:lang="uk">документ KWord</comment>
+ <comment xml:lang="vi">Tài liệu KWord</comment>
+- <comment xml:lang="zh_CN">KWord 文档</comment>
+- <comment xml:lang="zh_TW">KWord 文件</comment>
++ <comment xml:lang="zh-CN">KWord 文档</comment>
++ <comment xml:lang="zh-TW">KWord 文件</comment>
+ <generic-icon name="x-office-document"/>
+ <magic priority="60">
+- <match value="\037\213" type="string" offset="0">
+- <match value="KOffice" type="string" offset="10">
+- <match value="application/x-kword\004\006" type="string" offset="18"/>
++ <match type="string" value="\037\213" offset="0">
++ <match type="string" value="KOffice" offset="10">
++ <match type="string" value="application/x-kword\004\006" offset="18"/>
+ </match>
+ </match>
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="application/x-kword" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="application/x-kword" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -14645,22 +15219,24 @@
+ </mime-type>
+ <mime-type type="application/x-kword-crypt">
+ <comment>KWord document (encrypted)</comment>
++ <comment xml:lang="af">KWord-dokument (geënkripteer)</comment>
+ <comment xml:lang="ar">مستند KWord (مشفر)</comment>
+ <comment xml:lang="ast">Documentu de Kword (cifráu)</comment>
+- <comment xml:lang="be@latin">Dakument KWord (zašyfravany)</comment>
++ <comment xml:lang="be-Latn">Dakument KWord (zašyfravany)</comment>
+ <comment xml:lang="bg">Документ — KWord, шифриран</comment>
+ <comment xml:lang="ca">document KWord (xifrat)</comment>
+ <comment xml:lang="cs">dokument KWord (šifrovaný)</comment>
+ <comment xml:lang="da">KWord-dokument (krypteret)</comment>
+ <comment xml:lang="de">KWord-Dokument (verschlüsselt)</comment>
+ <comment xml:lang="el">Έγγραφο KWord (κρυπτογραφημένο)</comment>
+- <comment xml:lang="en_GB">KWord document (encrypted)</comment>
++ <comment xml:lang="en-GB">KWord document (encrypted)</comment>
+ <comment xml:lang="eo">KWord-dokumento (ĉifrita)</comment>
+ <comment xml:lang="es">documento de KWord (cifrado)</comment>
+- <comment xml:lang="eu">KWord dokumentua (enkriptatua)</comment>
++ <comment xml:lang="eu">KWord dokumentua (zifratuta)</comment>
+ <comment xml:lang="fi">KWord-asiakirja (salattu)</comment>
+ <comment xml:lang="fo">KWord skjal (bronglað)</comment>
+ <comment xml:lang="fr">document KWord (chiffré)</comment>
++ <comment xml:lang="fur">document KWord (cifrât)</comment>
+ <comment xml:lang="ga">cáipéis KWord (criptithe)</comment>
+ <comment xml:lang="gl">documento de KWord (cifrado)</comment>
+ <comment xml:lang="he">מסמך KWord (מוצפן)</comment>
+@@ -14681,7 +15257,7 @@
+ <comment xml:lang="oc">document KWord (chifrat)</comment>
+ <comment xml:lang="pl">Dokument KWord (zaszyfrowany)</comment>
+ <comment xml:lang="pt">documento KWord (encriptado)</comment>
+- <comment xml:lang="pt_BR">Documento do KWord (criptografado)</comment>
++ <comment xml:lang="pt-BR">Documento do KWord (criptografado)</comment>
+ <comment xml:lang="ro">Document KWord (criptat)</comment>
+ <comment xml:lang="ru">Документ KWord (зашифрованный)</comment>
+ <comment xml:lang="sk">Dokument KWord (šifrovaný)</comment>
+@@ -14692,18 +15268,19 @@
+ <comment xml:lang="tr">KWord belgesi (şifreli)</comment>
+ <comment xml:lang="uk">документ KWord (зашифрований)</comment>
+ <comment xml:lang="vi">Tài liệu KWord (đã mật mã)</comment>
+- <comment xml:lang="zh_CN">KWord 文档(加密)</comment>
+- <comment xml:lang="zh_TW">KWord 文件 (已加密)</comment>
++ <comment xml:lang="zh-CN">KWord 文档(加密)</comment>
++ <comment xml:lang="zh-TW">KWord 文件 (加密)</comment>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="0x0d1a2701" type="big32" offset="0"/>
++ <match type="big32" value="0x0d1a2701" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-lha">
+ <comment>LHA archive</comment>
++ <comment xml:lang="af">LHA-argief</comment>
+ <comment xml:lang="ar">أرشيف LHA</comment>
+ <comment xml:lang="az">LHA arxivi</comment>
+- <comment xml:lang="be@latin">Archiŭ LHA</comment>
++ <comment xml:lang="be-Latn">Archiŭ LHA</comment>
+ <comment xml:lang="bg">Архив — LHA</comment>
+ <comment xml:lang="ca">arxiu LHA</comment>
+ <comment xml:lang="cs">archiv LHA</comment>
+@@ -14711,13 +15288,14 @@
+ <comment xml:lang="da">LHA-arkiv</comment>
+ <comment xml:lang="de">LHA-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο LHA</comment>
+- <comment xml:lang="en_GB">LHA archive</comment>
++ <comment xml:lang="en-GB">LHA archive</comment>
+ <comment xml:lang="eo">LHA-arkivo</comment>
+ <comment xml:lang="es">archivador LHA</comment>
+ <comment xml:lang="eu">LHA artxiboa</comment>
+ <comment xml:lang="fi">LHA-arkisto</comment>
+ <comment xml:lang="fo">LHA skjalasavn</comment>
+ <comment xml:lang="fr">archive LHA</comment>
++ <comment xml:lang="fur">archivi LHA</comment>
+ <comment xml:lang="ga">cartlann LHA</comment>
+ <comment xml:lang="gl">arquivo LHA</comment>
+ <comment xml:lang="he">ארכיון LHA</comment>
+@@ -14738,7 +15316,7 @@
+ <comment xml:lang="oc">archiu LHA</comment>
+ <comment xml:lang="pl">Archiwum LHA</comment>
+ <comment xml:lang="pt">arquivo LHA</comment>
+- <comment xml:lang="pt_BR">Pacote LHA</comment>
++ <comment xml:lang="pt-BR">Pacote LHA</comment>
+ <comment xml:lang="ro">Arhivă LHA</comment>
+ <comment xml:lang="ru">Архив LHA</comment>
+ <comment xml:lang="sk">Archív LHA</comment>
+@@ -14749,22 +15327,22 @@
+ <comment xml:lang="tr">LHA arşivi</comment>
+ <comment xml:lang="uk">архів LHA</comment>
+ <comment xml:lang="vi">Kho nén LHA</comment>
+- <comment xml:lang="zh_CN">LHA 归档文件</comment>
+- <comment xml:lang="zh_TW">LHA 封存檔</comment>
++ <comment xml:lang="zh-CN">LHA 归档文件</comment>
++ <comment xml:lang="zh-TW">LHA 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="60">
+- <match value="-lh -" type="string" offset="2"/>
+- <match value="-lh0-" type="string" offset="2"/>
+- <match value="-lh1-" type="string" offset="2"/>
+- <match value="-lh2-" type="string" offset="2"/>
+- <match value="-lh3-" type="string" offset="2"/>
+- <match value="-lh4-" type="string" offset="2"/>
+- <match value="-lh5-" type="string" offset="2"/>
+- <match value="-lh40-" type="string" offset="2"/>
+- <match value="-lhd-" type="string" offset="2"/>
+- <match value="-lz4-" type="string" offset="2"/>
+- <match value="-lz5-" type="string" offset="2"/>
+- <match value="-lzs-" type="string" offset="2"/>
++ <match type="string" value="-lh -" offset="2"/>
++ <match type="string" value="-lh0-" offset="2"/>
++ <match type="string" value="-lh1-" offset="2"/>
++ <match type="string" value="-lh2-" offset="2"/>
++ <match type="string" value="-lh3-" offset="2"/>
++ <match type="string" value="-lh4-" offset="2"/>
++ <match type="string" value="-lh5-" offset="2"/>
++ <match type="string" value="-lh40-" offset="2"/>
++ <match type="string" value="-lhd-" offset="2"/>
++ <match type="string" value="-lz4-" offset="2"/>
++ <match type="string" value="-lz5-" offset="2"/>
++ <match type="string" value="-lzs-" offset="2"/>
+ </magic>
+ <glob pattern="*.lha"/>
+ <glob pattern="*.lzh"/>
+@@ -14772,21 +15350,23 @@
+ </mime-type>
+ <mime-type type="application/x-lhz">
+ <comment>LHZ archive</comment>
++ <comment xml:lang="af">LHZ-argief</comment>
+ <comment xml:lang="ar">أرشيف LHZ</comment>
+- <comment xml:lang="be@latin">Archiŭ LHZ</comment>
++ <comment xml:lang="be-Latn">Archiŭ LHZ</comment>
+ <comment xml:lang="bg">Архив — LHZ</comment>
+ <comment xml:lang="ca">arxiu LHZ</comment>
+ <comment xml:lang="cs">archiv LHZ</comment>
+ <comment xml:lang="da">LHZ-arkiv</comment>
+ <comment xml:lang="de">LHZ-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο LHZ</comment>
+- <comment xml:lang="en_GB">LHZ archive</comment>
++ <comment xml:lang="en-GB">LHZ archive</comment>
+ <comment xml:lang="eo">LHZ-arkivo</comment>
+ <comment xml:lang="es">archivador LHZ</comment>
+ <comment xml:lang="eu">LHZ artxiboa</comment>
+ <comment xml:lang="fi">LHZ-arkisto</comment>
+ <comment xml:lang="fo">LHZ skjalasavn</comment>
+ <comment xml:lang="fr">archive LHZ</comment>
++ <comment xml:lang="fur">archivi LHZ</comment>
+ <comment xml:lang="ga">cartlann LHZ</comment>
+ <comment xml:lang="gl">arquivo LHZ</comment>
+ <comment xml:lang="he">ארכיון LHZ</comment>
+@@ -14807,7 +15387,7 @@
+ <comment xml:lang="oc">archiu LHZ</comment>
+ <comment xml:lang="pl">Archiwum LHZ</comment>
+ <comment xml:lang="pt">arquivo LHZ</comment>
+- <comment xml:lang="pt_BR">Pacote LHZ</comment>
++ <comment xml:lang="pt-BR">Pacote LHZ</comment>
+ <comment xml:lang="ro">Arhivă LHZ</comment>
+ <comment xml:lang="ru">Архив LHZ</comment>
+ <comment xml:lang="sk">Archív LHZ</comment>
+@@ -14818,28 +15398,30 @@
+ <comment xml:lang="tr">LHZ arşivi</comment>
+ <comment xml:lang="uk">архів LHZ</comment>
+ <comment xml:lang="vi">Kho nén LHZ (LHA đã nén)</comment>
+- <comment xml:lang="zh_CN">LHZ 归档文件</comment>
+- <comment xml:lang="zh_TW">LHZ 封存檔</comment>
++ <comment xml:lang="zh-CN">LHZ 归档文件</comment>
++ <comment xml:lang="zh-TW">LHZ 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <glob pattern="*.lhz"/>
+ </mime-type>
+- <mime-type type="text/vnd.qt.linguist">
++ <mime-type type="text/vnd.trolltech.linguist">
+ <comment>message catalog</comment>
++ <comment xml:lang="af">boodskaplêer</comment>
+ <comment xml:lang="ar">كتالوج الرسالة</comment>
+- <comment xml:lang="be@latin">kataloh paviedamleńniaŭ</comment>
++ <comment xml:lang="be-Latn">kataloh paviedamleńniaŭ</comment>
+ <comment xml:lang="bg">Каталог със съобщения</comment>
+ <comment xml:lang="ca">catàleg de missatges</comment>
+ <comment xml:lang="cs">katalog zpráv</comment>
+ <comment xml:lang="da">meddelelseskatalog</comment>
+ <comment xml:lang="de">Nachrichtenkatalog</comment>
+ <comment xml:lang="el">Κατάλογος μηνυμάτων</comment>
+- <comment xml:lang="en_GB">message catalogue</comment>
++ <comment xml:lang="en-GB">message catalogue</comment>
+ <comment xml:lang="eo">katalogo de mesaĝoj</comment>
+ <comment xml:lang="es">catálogo de mensajes</comment>
+ <comment xml:lang="eu">mezuen katalogoa</comment>
+ <comment xml:lang="fi">viestiluettelo</comment>
+ <comment xml:lang="fo">boðskrá</comment>
+ <comment xml:lang="fr">catalogue de messages</comment>
++ <comment xml:lang="fur">catalic di messaçs</comment>
+ <comment xml:lang="ga">catalóg theachtaireachtaí</comment>
+ <comment xml:lang="gl">catálogo de mensaxes</comment>
+ <comment xml:lang="he">קטלוג הודעות</comment>
+@@ -14860,7 +15442,7 @@
+ <comment xml:lang="oc">catalòg de messatges</comment>
+ <comment xml:lang="pl">Katalog wiadomości</comment>
+ <comment xml:lang="pt">catálogo de mensagens</comment>
+- <comment xml:lang="pt_BR">Catálogo de mensagens</comment>
++ <comment xml:lang="pt-BR">Catálogo de mensagens</comment>
+ <comment xml:lang="ro">catalog de mesaje</comment>
+ <comment xml:lang="ru">Каталог сообщений</comment>
+ <comment xml:lang="sk">Katalóg správ</comment>
+@@ -14871,34 +15453,37 @@
+ <comment xml:lang="tr">ileti kataloğu</comment>
+ <comment xml:lang="uk">каталог повідомлень</comment>
+ <comment xml:lang="vi">phân loại thông điệp</comment>
+- <comment xml:lang="zh_CN">消息库</comment>
+- <comment xml:lang="zh_TW">訊息目錄</comment>
++ <comment xml:lang="zh-CN">消息库</comment>
++ <comment xml:lang="zh-TW">訊息目錄</comment>
+ <sub-class-of type="application/xml"/>
+ <magic>
+- <match value="&lt;TS" type="string" offset="0:256"/>
++ <match type="string" value="&lt;TS " offset="0:256"/>
++ <match type="string" value="&lt;TS&gt;" offset="0:256"/>
+ </magic>
+ <glob pattern="*.ts"/>
+ <alias type="application/x-linguist"/>
+- <alias type="text/vnd.trolltech.linguist"/>
++ <alias type="text/vnd.qt.linguist"/>
+ </mime-type>
+ <mime-type type="application/x-lyx">
+ <comment>LyX document</comment>
++ <comment xml:lang="af">LyX-dokument</comment>
+ <comment xml:lang="ar">مستند LyX</comment>
+ <comment xml:lang="ast">Documentu de Lyx</comment>
+- <comment xml:lang="be@latin">Dakument LyX</comment>
++ <comment xml:lang="be-Latn">Dakument LyX</comment>
+ <comment xml:lang="bg">Документ — LyX</comment>
+ <comment xml:lang="ca">document LyX</comment>
+ <comment xml:lang="cs">dokument LyX</comment>
+ <comment xml:lang="da">LyX-dokument</comment>
+ <comment xml:lang="de">LyX-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο LyX</comment>
+- <comment xml:lang="en_GB">LyX document</comment>
++ <comment xml:lang="en-GB">LyX document</comment>
+ <comment xml:lang="eo">LyX-dokumento</comment>
+ <comment xml:lang="es">documento de LyX</comment>
+ <comment xml:lang="eu">LyX dokumentua</comment>
+ <comment xml:lang="fi">LyX-asiakirja</comment>
+ <comment xml:lang="fo">LyX skjal</comment>
+ <comment xml:lang="fr">document LyX</comment>
++ <comment xml:lang="fur">document LyX</comment>
+ <comment xml:lang="ga">cáipéis LyX</comment>
+ <comment xml:lang="gl">documento LyX</comment>
+ <comment xml:lang="he">מסמך Lyx</comment>
+@@ -14919,7 +15504,7 @@
+ <comment xml:lang="oc">document LyX</comment>
+ <comment xml:lang="pl">Dokument LyX</comment>
+ <comment xml:lang="pt">documento LyX</comment>
+- <comment xml:lang="pt_BR">Documento LyX</comment>
++ <comment xml:lang="pt-BR">Documento LyX</comment>
+ <comment xml:lang="ro">Document LyX</comment>
+ <comment xml:lang="ru">Документ LyX</comment>
+ <comment xml:lang="sk">Dokument LyX</comment>
+@@ -14930,28 +15515,31 @@
+ <comment xml:lang="tr">LyX belgesi</comment>
+ <comment xml:lang="uk">документ LyX</comment>
+ <comment xml:lang="vi">Tài liệu LyX</comment>
+- <comment xml:lang="zh_CN">LyX 文档</comment>
+- <comment xml:lang="zh_TW">LyX 文件</comment>
++ <comment xml:lang="zh-CN">LyX 文档</comment>
++ <comment xml:lang="zh-TW">LyX 文件</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="#LyX" type="string" offset="0"/>
++ <match type="string" value="#LyX" offset="0"/>
+ </magic>
+ <glob pattern="*.lyx"/>
+ <alias type="text/x-lyx"/>
+ </mime-type>
+ <mime-type type="application/x-lz4">
+ <comment>LZ4 archive</comment>
++ <comment xml:lang="af">LZ4-argief</comment>
++ <comment xml:lang="bg">Архив — LZ4</comment>
+ <comment xml:lang="ca">arxiu LZ4</comment>
+ <comment xml:lang="cs">archiv LZ4</comment>
+ <comment xml:lang="da">LZ4-arkiv</comment>
+ <comment xml:lang="de">LZ4-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο LZ4</comment>
+- <comment xml:lang="en_GB">LZ4 archive</comment>
++ <comment xml:lang="en-GB">LZ4 archive</comment>
+ <comment xml:lang="es">archivador LZ4</comment>
+ <comment xml:lang="eu">LZ4 artxiboa</comment>
+ <comment xml:lang="fi">LZ4-arkisto</comment>
+ <comment xml:lang="fr">archive LZ4</comment>
++ <comment xml:lang="fur">archivi LZ4</comment>
+ <comment xml:lang="ga">Cartlann LZ4</comment>
+ <comment xml:lang="gl">Arquivo LZ4</comment>
+ <comment xml:lang="he">ארכיון LZ4</comment>
+@@ -14965,7 +15553,7 @@
+ <comment xml:lang="oc">archiu LZ4</comment>
+ <comment xml:lang="pl">Archiwum LZ4</comment>
+ <comment xml:lang="pt">arquivo LZ4</comment>
+- <comment xml:lang="pt_BR">Pacote LZ4</comment>
++ <comment xml:lang="pt-BR">Pacote LZ4</comment>
+ <comment xml:lang="ru">Архив LZ4</comment>
+ <comment xml:lang="sk">Archív LZ4</comment>
+ <comment xml:lang="sl">Datoteka arhiva LZ4</comment>
+@@ -14973,64 +15561,69 @@
+ <comment xml:lang="sv">LZ4-arkiv</comment>
+ <comment xml:lang="tr">LZ4 arşivi</comment>
+ <comment xml:lang="uk">архів LZ4</comment>
+- <comment xml:lang="zh_CN">LZ4 归档文件</comment>
+- <comment xml:lang="zh_TW">LZ4 封存檔</comment>
++ <comment xml:lang="zh-CN">LZ4 归档文件</comment>
++ <comment xml:lang="zh-TW">LZ4 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="60">
+- <match value="0x184d2204" type="little32" offset="0"/>
+- <match value="0x184c2102" type="little32" offset="0"/>
++ <match type="little32" value="0x184d2204" offset="0"/>
++ <match type="little32" value="0x184c2102" offset="0"/>
+ </magic>
+ <glob pattern="*.lz4"/>
+ </mime-type>
+ <mime-type type="application/x-lz4-compressed-tar">
+ <comment>Tar archive (LZ4-compressed)</comment>
++ <comment xml:lang="af">Tar-argief (LZ4-saamgepers)</comment>
++ <comment xml:lang="bg">Архив — tar, компресиран с LZ4</comment>
+ <comment xml:lang="ca">arxiu tar (amb compressió LZ4)</comment>
+ <comment xml:lang="cs">archiv Tar (komprimace LZ4)</comment>
+ <comment xml:lang="da">Tar-arkiv (LZ4-komprimeret)</comment>
+ <comment xml:lang="de">Tar-Archiv (LZ4-komprimiert)</comment>
+- <comment xml:lang="en_GB">Tar archive (LZ4-compressed)</comment>
++ <comment xml:lang="en-GB">Tar archive (LZ4-compressed)</comment>
+ <comment xml:lang="es">archivador Tar (comprimido con LZ4)</comment>
+ <comment xml:lang="eu">Tar artxiboa (LZ4-rekin konprimatua)</comment>
+ <comment xml:lang="fi">Tar-arkisto (LZ4-pakattu)</comment>
+ <comment xml:lang="fr">archive tar (compression LZ4)</comment>
++ <comment xml:lang="fur">archivi Tar (comprimût cun LZ4)</comment>
+ <comment xml:lang="ga">cartlann Tar (comhbhrúite le LZ4)</comment>
+ <comment xml:lang="he">ארכיון Tar (מכווץ ע״י LZ4)</comment>
+ <comment xml:lang="hr">Tar arhiva (LZ4 sažeto)</comment>
+- <comment xml:lang="hu">Tar archívum (LZ4-el tömörítve)</comment>
+- <comment xml:lang="id">arsip tar (terkompresi LZ4)</comment>
++ <comment xml:lang="hu">Tar archívum (LZ4 tömörítésű)</comment>
++ <comment xml:lang="id">Arsip tar (terkompresi LZ4)</comment>
+ <comment xml:lang="it">Archivio tar (compresso con LZ4)</comment>
+ <comment xml:lang="kk">Tar архиві (LZ4-пен сығылған)</comment>
+ <comment xml:lang="ko">Tar 묶음 파일(LZ4 압축)</comment>
+ <comment xml:lang="pl">Archiwum tar (kompresja LZ4)</comment>
+- <comment xml:lang="pt_BR">Arquvio Tar (compactado com LZ4)</comment>
++ <comment xml:lang="pt-BR">Arquivo Tar (compactado com LZ4)</comment>
+ <comment xml:lang="ru">Архив TAR (сжатый lz4)</comment>
+- <comment xml:lang="sk">Archív tar (komprimovaný pomocou LZ4)</comment>
++ <comment xml:lang="sk">Archív Tar (komprimovaný pomocou LZ4)</comment>
+ <comment xml:lang="sr">Тар архива (запакована ЛЗ4-ом)</comment>
+ <comment xml:lang="sv">Tar-arkiv (LZ4-komprimerat)</comment>
+ <comment xml:lang="tr">Tar arşivi (LZ4 ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">архів tar (стиснений LZ4)</comment>
+- <comment xml:lang="zh_CN">Tar 归档文件(LZ4 压缩)</comment>
+- <comment xml:lang="zh_TW">Tar 封存檔 (LZ4 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">Tar 归档文件(LZ4 压缩)</comment>
++ <comment xml:lang="zh-TW">Tar 封存檔 (LZ4 壓縮)</comment>
+ <generic-icon name="package-x-generic"/>
+ <sub-class-of type="application/x-lz4"/>
+ <glob pattern="*.tar.lz4"/>
+ </mime-type>
+ <mime-type type="application/x-lzip">
+ <comment>Lzip archive</comment>
++ <comment xml:lang="af">Lzip-argief</comment>
+ <comment xml:lang="ar">أرشيف Lzip</comment>
+- <comment xml:lang="bg">Архив — lzip</comment>
++ <comment xml:lang="bg">Архив — Lzip</comment>
+ <comment xml:lang="ca">arxiu lzip</comment>
+ <comment xml:lang="cs">archiv Lzip</comment>
+ <comment xml:lang="da">Lzip-arkiv</comment>
+ <comment xml:lang="de">Lzip-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο Lzip</comment>
+- <comment xml:lang="en_GB">Lzip archive</comment>
++ <comment xml:lang="en-GB">Lzip archive</comment>
+ <comment xml:lang="eo">Lzip-arkivo</comment>
+ <comment xml:lang="es">archivador Lzip</comment>
+ <comment xml:lang="eu">Lzip artxiboa</comment>
+ <comment xml:lang="fi">Lzip-arkisto</comment>
+ <comment xml:lang="fo">Lzip skjalasavn</comment>
+ <comment xml:lang="fr">archive lzip</comment>
++ <comment xml:lang="fur">archivi Lzip</comment>
+ <comment xml:lang="ga">cartlann Lzip</comment>
+ <comment xml:lang="gl">arquivo Lzip</comment>
+ <comment xml:lang="he">ארכיון Lzip</comment>
+@@ -15048,7 +15641,7 @@
+ <comment xml:lang="oc">archiu lzip</comment>
+ <comment xml:lang="pl">Archiwum lzip</comment>
+ <comment xml:lang="pt">arquivo LZip</comment>
+- <comment xml:lang="pt_BR">Pacote Lzip</comment>
++ <comment xml:lang="pt-BR">Pacote Lzip</comment>
+ <comment xml:lang="ro">Arhivă Lzip</comment>
+ <comment xml:lang="ru">Архив LZIP</comment>
+ <comment xml:lang="sk">Archív Lzip</comment>
+@@ -15057,96 +15650,105 @@
+ <comment xml:lang="sv">Lzip-arkiv</comment>
+ <comment xml:lang="tr">Lzip arşivi</comment>
+ <comment xml:lang="uk">архів lzip</comment>
+- <comment xml:lang="zh_CN">Lzip 归档文件</comment>
+- <comment xml:lang="zh_TW">Lzip 封存檔</comment>
++ <comment xml:lang="zh-CN">Lzip 归档文件</comment>
++ <comment xml:lang="zh-TW">Lzip 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="60">
+- <match value="LZIP" type="string" offset="0"/>
++ <match type="string" value="LZIP" offset="0"/>
+ </magic>
+ <glob pattern="*.lz"/>
+ </mime-type>
+ <mime-type type="application/x-lzip-compressed-tar">
+ <comment>Tar archive (lzip-compressed)</comment>
++ <comment xml:lang="af">Tar-argief (lzip-saamgepers)</comment>
++ <comment xml:lang="bg">Архив — tar, компресиран с Lzip</comment>
+ <comment xml:lang="ca">arxiu tar (amb compressió lzip)</comment>
+ <comment xml:lang="cs">archiv Tar (komprimace lzip)</comment>
+ <comment xml:lang="da">Tar-arkiv (lzip-komprimeret)</comment>
+ <comment xml:lang="de">Tar-Archiv (lzip-komprimiert)</comment>
+- <comment xml:lang="en_GB">Tar archive (lzip-compressed)</comment>
++ <comment xml:lang="en-GB">Tar archive (lzip-compressed)</comment>
+ <comment xml:lang="es">archivador Tar (comprimido con lzip)</comment>
+ <comment xml:lang="eu">Tar artxiboa (lzip-rekin konprimatua)</comment>
+ <comment xml:lang="fi">Tar-arkisto (lzip-pakattu)</comment>
+ <comment xml:lang="fr">archive tar (compressée lzip)</comment>
++ <comment xml:lang="fur">archivi Tar (comprimût cun lzip)</comment>
+ <comment xml:lang="ga">cartlann Tar (comhbhrúite le lzip)</comment>
+ <comment xml:lang="he">ארכיון Tar (מכווץ ע״י lzip)</comment>
+ <comment xml:lang="hr">Tar arhiva (lzip sažeto)</comment>
+- <comment xml:lang="hu">Tar archívum (lzippel tömörítve)</comment>
+- <comment xml:lang="id">arsip tar (terkompresi lzip)</comment>
++ <comment xml:lang="hu">Tar archívum (lzip tömörítésű)</comment>
++ <comment xml:lang="id">Arsip tar (terkompresi lzip)</comment>
+ <comment xml:lang="it">Archivio tar (compresso con lzip)</comment>
+ <comment xml:lang="kk">Tar архиві (lzip-пен сығылған)</comment>
+ <comment xml:lang="ko">TAR 묶음 파일(LZIP 압축)</comment>
+ <comment xml:lang="pl">Archiwum tar (kompresja lzip)</comment>
+- <comment xml:lang="pt_BR">Arquivo Tar (compactado com lzip)</comment>
++ <comment xml:lang="pt-BR">Arquivo Tar (compactado com lzip)</comment>
+ <comment xml:lang="ru">Архив TAR (сжатый lzip)</comment>
+- <comment xml:lang="sk">Archív tar (komprimovaný pomocou lzip)</comment>
++ <comment xml:lang="sk">Archív Tar (komprimovaný pomocou lzip)</comment>
+ <comment xml:lang="sr">Тар архива (запакована лзипом)</comment>
+ <comment xml:lang="sv">Tar-arkiv (lzip-komprimerat)</comment>
+ <comment xml:lang="tr">Tar arşivi (lzip ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">архів tar (стиснений lzip)</comment>
+- <comment xml:lang="zh_CN">Tar 归档文件(lzip 压缩)</comment>
+- <comment xml:lang="zh_TW">Tar 封存檔 (lzip 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">Tar 归档文件(lzip 压缩)</comment>
++ <comment xml:lang="zh-TW">Tar 封存檔 (lzip 壓縮)</comment>
+ <generic-icon name="package-x-generic"/>
+ <sub-class-of type="application/x-lzip"/>
+ <glob pattern="*.tar.lz"/>
+ </mime-type>
+ <mime-type type="application/x-lzpdf">
+ <comment>PDF document (lzip-compressed)</comment>
++ <comment xml:lang="af">PDF-dokument (lzip-saamgepers)</comment>
+ <comment xml:lang="ast">Documentu PDF (comprimíu en lzip)</comment>
++ <comment xml:lang="bg">Документ — PDF, компресиран с Lzip</comment>
+ <comment xml:lang="ca">document PDF (amb compressió lzip)</comment>
+ <comment xml:lang="cs">dokument PDF (komprimace lzip)</comment>
++ <comment xml:lang="da">PDF-dokument (lzip-komprimeret)</comment>
+ <comment xml:lang="de">PDF-Dokument (lzip-komprimiert)</comment>
+- <comment xml:lang="en_GB">PDF document (lzip-compressed)</comment>
++ <comment xml:lang="en-GB">PDF document (lzip-compressed)</comment>
+ <comment xml:lang="es">documento PDF (comprimido con lzip)</comment>
+ <comment xml:lang="eu">PDF dokumentua (lzip-rekin konprimitua)</comment>
+ <comment xml:lang="fi">PDF-asiakirja (lzip-pakattu)</comment>
+ <comment xml:lang="fr">document PDF (compressé lzip)</comment>
++ <comment xml:lang="fur">document PDF (comprimût cun lzip)</comment>
+ <comment xml:lang="ga">cáipéis PDF (comhbhrúite le lzip)</comment>
+ <comment xml:lang="hr">PDF dokument (lzip sažeto)</comment>
+- <comment xml:lang="hu">PDF dokumentum (lzip-tömörítésű)</comment>
+- <comment xml:lang="id">dokumen PDF (termkompresi lzip)</comment>
++ <comment xml:lang="hu">PDF dokumentum (lzip tömörítésű)</comment>
++ <comment xml:lang="id">Dokumen PDF (termkompresi lzip)</comment>
+ <comment xml:lang="it">Documento PDF (compresso con lzip)</comment>
+ <comment xml:lang="kk">PDF құжаты (lzip-пен сығылған)</comment>
+ <comment xml:lang="ko">PDF 문서(LZIP 압축)</comment>
+ <comment xml:lang="pl">Dokument PDF (kompresja lzip)</comment>
+- <comment xml:lang="pt_BR">Documento PDF (compactado com lzip)</comment>
++ <comment xml:lang="pt-BR">Documento PDF (compactado com lzip)</comment>
+ <comment xml:lang="ru">Документ PDF (сжатый lzip)</comment>
+ <comment xml:lang="sk">Dokument PDF (komprimovaný pomocou lzip)</comment>
+ <comment xml:lang="sr">ПДФ документ (запакован лзип-ом)</comment>
+ <comment xml:lang="sv">PDF-dokument (lzip-komprimerat)</comment>
+ <comment xml:lang="tr">PDF belgesi (lzip ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">документ PDF (стиснений lzip)</comment>
+- <comment xml:lang="zh_CN">PDF 文档(lzip 压缩)</comment>
+- <comment xml:lang="zh_TW">PDF 文件 (lzip 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">PDF 文档(lzip 压缩)</comment>
++ <comment xml:lang="zh-TW">PDF 文件 (lzip 壓縮)</comment>
+ <sub-class-of type="application/x-lzip"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.pdf.lz"/>
+ </mime-type>
+ <mime-type type="application/x-lzma">
+ <comment>LZMA archive</comment>
++ <comment xml:lang="af">LZMA-argief</comment>
+ <comment xml:lang="ar">أرشيف LZMA</comment>
+- <comment xml:lang="be@latin">Archiŭ LZMA</comment>
++ <comment xml:lang="be-Latn">Archiŭ LZMA</comment>
+ <comment xml:lang="bg">Архив — LZMA</comment>
+ <comment xml:lang="ca">arxiu LZMA</comment>
+ <comment xml:lang="cs">archiv LZMA</comment>
+ <comment xml:lang="da">LZHA-arkiv</comment>
+ <comment xml:lang="de">LZMA-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο LZMA</comment>
+- <comment xml:lang="en_GB">LZMA archive</comment>
++ <comment xml:lang="en-GB">LZMA archive</comment>
+ <comment xml:lang="eo">LZMA-arkivo</comment>
+ <comment xml:lang="es">archivador LZMA</comment>
+ <comment xml:lang="eu">LZMA artxiboa</comment>
+ <comment xml:lang="fi">LZMA-arkisto</comment>
+ <comment xml:lang="fo">LZMA skjalasavn</comment>
+ <comment xml:lang="fr">archive LZMA</comment>
++ <comment xml:lang="fur">archivi LZMA</comment>
+ <comment xml:lang="ga">cartlann LZMA</comment>
+ <comment xml:lang="gl">arquivo LZMA</comment>
+ <comment xml:lang="he">ארכיון LZMA</comment>
+@@ -15166,7 +15768,7 @@
+ <comment xml:lang="oc">archiu LZMA</comment>
+ <comment xml:lang="pl">Archiwum LZMA</comment>
+ <comment xml:lang="pt">arquivo LZMA</comment>
+- <comment xml:lang="pt_BR">Pacote LZMA</comment>
++ <comment xml:lang="pt-BR">Pacote LZMA</comment>
+ <comment xml:lang="ro">Arhivă LZMA</comment>
+ <comment xml:lang="ru">Архив LZMA</comment>
+ <comment xml:lang="sk">Archív LZMA</comment>
+@@ -15177,8 +15779,8 @@
+ <comment xml:lang="tr">LZMA arşivi</comment>
+ <comment xml:lang="uk">архів LZMA</comment>
+ <comment xml:lang="vi">Kho nén LZMA</comment>
+- <comment xml:lang="zh_CN">LZMA 归档文件</comment>
+- <comment xml:lang="zh_TW">LZMA 封存檔</comment>
++ <comment xml:lang="zh-CN">LZMA 归档文件</comment>
++ <comment xml:lang="zh-TW">LZMA 封存檔</comment>
+ <acronym>LZMA</acronym>
+ <expanded-acronym>Lempel-Ziv-Markov chain-Algorithm</expanded-acronym>
+ <generic-icon name="package-x-generic"/>
+@@ -15186,25 +15788,27 @@
+ </mime-type>
+ <mime-type type="application/x-lzma-compressed-tar">
+ <comment>Tar archive (LZMA-compressed)</comment>
++ <comment xml:lang="af">Tar-argief (LZMA-saamgepers)</comment>
+ <comment xml:lang="ar">أرشيف Tar (مضغوط-LZMA)</comment>
+- <comment xml:lang="be@latin">Archiŭ tar (LZMA-skampresavany)</comment>
++ <comment xml:lang="be-Latn">Archiŭ tar (LZMA-skampresavany)</comment>
+ <comment xml:lang="bg">Архив — tar, компресиран с LZMA</comment>
+ <comment xml:lang="ca">arxiu tar (amb compressió LZMA)</comment>
+ <comment xml:lang="cs">archiv Tar (komprimace LZMA)</comment>
+ <comment xml:lang="da">Tar-arkiv (LZMA-komprimeret)</comment>
+ <comment xml:lang="de">Tar-Archiv (LZMA-komprimiert)</comment>
+ <comment xml:lang="el">Αρχείο Tar (συμπιεσμένο με LZMA)</comment>
+- <comment xml:lang="en_GB">Tar archive (LZMA-compressed)</comment>
++ <comment xml:lang="en-GB">Tar archive (LZMA-compressed)</comment>
+ <comment xml:lang="es">archivador Tar (comprimido con LZMA)</comment>
+ <comment xml:lang="eu">Tar artxiboa (LZMA-rekin konprimitua)</comment>
+ <comment xml:lang="fi">Tar-arkisto (LZMA-pakattu)</comment>
+ <comment xml:lang="fo">Tar skjalasavn (LZMA-stappað)</comment>
+ <comment xml:lang="fr">archive tar (compression LZMA)</comment>
++ <comment xml:lang="fur">archivi Tar (comprimût cun LZMA)</comment>
+ <comment xml:lang="ga">cartlann Tar (comhbhrúite le LZMA)</comment>
+ <comment xml:lang="gl">arquivo Tar (comprimido con LZMA)</comment>
+ <comment xml:lang="he">ארכיון Tar (מכווץ ע״י LZMA)</comment>
+ <comment xml:lang="hr">Tar arhiva (LZMA sažeta)</comment>
+- <comment xml:lang="hu">Tar archívum (LZMA-val tömörítve)</comment>
++ <comment xml:lang="hu">Tar archívum (LZMA tömörítésű)</comment>
+ <comment xml:lang="ia">Archivo Tar (comprimite con LZMA)</comment>
+ <comment xml:lang="id">Arsip Tar (terkompresi LZMA)</comment>
+ <comment xml:lang="it">Archivio tar (compresso con LZMA)</comment>
+@@ -15219,10 +15823,10 @@
+ <comment xml:lang="oc">archiu tar (compression LZMA)</comment>
+ <comment xml:lang="pl">Archiwum tar (kompresja LZMA)</comment>
+ <comment xml:lang="pt">arquivo Tar (compressão LZMA)</comment>
+- <comment xml:lang="pt_BR">Pacote Tar (compactado com LZMA)</comment>
++ <comment xml:lang="pt-BR">Pacote Tar (compactado com LZMA)</comment>
+ <comment xml:lang="ro">Arhivă Tar (comprimată LZMA)</comment>
+ <comment xml:lang="ru">Архив TAR (сжатый lzma)</comment>
+- <comment xml:lang="sk">Archív tar (komprimovaný pomocou LZMA)</comment>
++ <comment xml:lang="sk">Archív Tar (komprimovaný pomocou LZMA)</comment>
+ <comment xml:lang="sl">Datoteka arhiva Tar (stisnjen z LZMA)</comment>
+ <comment xml:lang="sq">Arkiv tar (i kompresuar me LZMA)</comment>
+ <comment xml:lang="sr">Тар архива (запакована ЛЗМА-ом)</comment>
+@@ -15230,8 +15834,8 @@
+ <comment xml:lang="tr">Tar arşivi (LZMA ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">архів tar (стиснений LZMA)</comment>
+ <comment xml:lang="vi">Kho nén tar (đã nén LZMA)</comment>
+- <comment xml:lang="zh_CN">Tar 归档文件(LZMA 压缩)</comment>
+- <comment xml:lang="zh_TW">Tar 封存檔 (LZMA 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">Tar 归档文件(LZMA 压缩)</comment>
++ <comment xml:lang="zh-TW">Tar 封存檔 (LZMA 壓縮)</comment>
+ <sub-class-of type="application/x-lzma"/>
+ <generic-icon name="package-x-generic"/>
+ <glob pattern="*.tar.lzma"/>
+@@ -15239,21 +15843,23 @@
+ </mime-type>
+ <mime-type type="application/x-lzop">
+ <comment>LZO archive</comment>
++ <comment xml:lang="af">LZO-argief</comment>
+ <comment xml:lang="ar">أرشيف LZO</comment>
+- <comment xml:lang="be@latin">Archiŭ LZO</comment>
++ <comment xml:lang="be-Latn">Archiŭ LZO</comment>
+ <comment xml:lang="bg">Архив — LZO</comment>
+ <comment xml:lang="ca">arxiu LZO</comment>
+ <comment xml:lang="cs">archiv LZO</comment>
+ <comment xml:lang="da">LZO-arkiv</comment>
+ <comment xml:lang="de">LZO-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο LZO</comment>
+- <comment xml:lang="en_GB">LZO archive</comment>
++ <comment xml:lang="en-GB">LZO archive</comment>
+ <comment xml:lang="eo">LZO-arkivo</comment>
+ <comment xml:lang="es">archivador LZO</comment>
+ <comment xml:lang="eu">LZO artxiboa</comment>
+ <comment xml:lang="fi">LZO-arkisto</comment>
+ <comment xml:lang="fo">LZO skjalasavn</comment>
+ <comment xml:lang="fr">archive LZO</comment>
++ <comment xml:lang="fur">archivi LZO</comment>
+ <comment xml:lang="ga">cartlann LZO</comment>
+ <comment xml:lang="gl">arquivo LZO</comment>
+ <comment xml:lang="he">ארכיון LZO</comment>
+@@ -15274,7 +15880,7 @@
+ <comment xml:lang="oc">archiu LZO</comment>
+ <comment xml:lang="pl">Archiwum LZO</comment>
+ <comment xml:lang="pt">arquivo LZO</comment>
+- <comment xml:lang="pt_BR">Pacote LZO</comment>
++ <comment xml:lang="pt-BR">Pacote LZO</comment>
+ <comment xml:lang="ro">Arhivă LZO</comment>
+ <comment xml:lang="ru">Архив LZO</comment>
+ <comment xml:lang="sk">Archív LZO</comment>
+@@ -15285,27 +15891,31 @@
+ <comment xml:lang="tr">LZO arşivi</comment>
+ <comment xml:lang="uk">архів LZO</comment>
+ <comment xml:lang="vi">Kho nén LZO</comment>
+- <comment xml:lang="zh_CN">LZO 归档文件</comment>
+- <comment xml:lang="zh_TW">LZO 封存檔</comment>
++ <comment xml:lang="zh-CN">LZO 归档文件</comment>
++ <comment xml:lang="zh-TW">LZO 封存檔</comment>
+ <acronym>LZO</acronym>
+ <expanded-acronym>Lempel-Ziv-Oberhumer</expanded-acronym>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="60">
+- <match value="\x89\x4c\x5a\x4f\x00\x0d\x0a\x1a\x0a" type="string" offset="0"/>
++ <match type="string" value="\x89\x4c\x5a\x4f\x00\x0d\x0a\x1a\x0a" offset="0"/>
+ </magic>
+ <glob pattern="*.lzo"/>
+ </mime-type>
+ <mime-type type="application/x-qpress">
+ <comment>Qpress archive</comment>
++ <comment xml:lang="af">Qpress-argief</comment>
++ <comment xml:lang="bg">Архив — Qpress</comment>
+ <comment xml:lang="ca">arxiu Qpress</comment>
+ <comment xml:lang="cs">archiv Qpress</comment>
+ <comment xml:lang="da">Qpress-arkiv</comment>
+ <comment xml:lang="de">Qpress-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο Qpress</comment>
+- <comment xml:lang="en_GB">Qpress archive</comment>
++ <comment xml:lang="en-GB">Qpress archive</comment>
+ <comment xml:lang="es">archivador de Qpress</comment>
++ <comment xml:lang="eu">Qpress artxiboa</comment>
+ <comment xml:lang="fi">Qpress-arkisto</comment>
+ <comment xml:lang="fr">Archive Qpress</comment>
++ <comment xml:lang="fur">archivi Qpress</comment>
+ <comment xml:lang="ga">cartlann Qpress</comment>
+ <comment xml:lang="gl">Arquivo Qpress</comment>
+ <comment xml:lang="he">ארכיון Qpress</comment>
+@@ -15319,7 +15929,7 @@
+ <comment xml:lang="oc">Archiu Qpress</comment>
+ <comment xml:lang="pl">Archiwum Qpress</comment>
+ <comment xml:lang="pt">arquivo Qpress</comment>
+- <comment xml:lang="pt_BR">Pacote Qpress</comment>
++ <comment xml:lang="pt-BR">Pacote Qpress</comment>
+ <comment xml:lang="ru">Архив Qpress</comment>
+ <comment xml:lang="sk">Archív Qpress</comment>
+ <comment xml:lang="sl">Datoteka arhiva Qpress</comment>
+@@ -15327,25 +15937,28 @@
+ <comment xml:lang="sv">Qpress-arkiv</comment>
+ <comment xml:lang="tr">Qpress arşivi</comment>
+ <comment xml:lang="uk">архів Qpress</comment>
+- <comment xml:lang="zh_CN">Qpress 归档文件</comment>
+- <comment xml:lang="zh_TW">Qpress 封存檔</comment>
++ <comment xml:lang="zh-CN">Qpress 归档文件</comment>
++ <comment xml:lang="zh-TW">Qpress 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="60">
+- <match value="qpress10" type="string" offset="0"/>
++ <match type="string" value="qpress10" offset="0"/>
+ </magic>
+ <glob pattern="*.qp"/>
+ </mime-type>
+ <mime-type type="application/x-xar">
+ <comment>XAR archive</comment>
++ <comment xml:lang="af">XAR-argief</comment>
++ <comment xml:lang="bg">Архив — XAR</comment>
+ <comment xml:lang="ca">arxiu XAR</comment>
+ <comment xml:lang="cs">archiv XAR</comment>
+ <comment xml:lang="da">XAR-arkiv</comment>
+ <comment xml:lang="de">XAR-Archiv</comment>
+- <comment xml:lang="en_GB">XAR archive</comment>
++ <comment xml:lang="en-GB">XAR archive</comment>
+ <comment xml:lang="es">archivador XAR</comment>
+ <comment xml:lang="eu">XAR artxiboa</comment>
+ <comment xml:lang="fi">XAR-arkisto</comment>
+ <comment xml:lang="fr">archive XAR</comment>
++ <comment xml:lang="fur">archivi XAR</comment>
+ <comment xml:lang="ga">cartlann XAR</comment>
+ <comment xml:lang="he">ארכיון XAR</comment>
+ <comment xml:lang="hr">XAR arhiva</comment>
+@@ -15356,36 +15969,40 @@
+ <comment xml:lang="ko">XAR 아카이브</comment>
+ <comment xml:lang="oc">Archiu XAR</comment>
+ <comment xml:lang="pl">Archiwum XAR</comment>
+- <comment xml:lang="pt_BR">Arquivo XAR</comment>
++ <comment xml:lang="pt-BR">Arquivo XAR</comment>
+ <comment xml:lang="ru">Архив XAR</comment>
+ <comment xml:lang="sk">Archív XAR</comment>
+ <comment xml:lang="sr">ИксАР архива</comment>
+ <comment xml:lang="sv">XAR-arkiv</comment>
+ <comment xml:lang="tr">XAR arşivi</comment>
+ <comment xml:lang="uk">архів XAR</comment>
+- <comment xml:lang="zh_CN">XAR 归档文件</comment>
+- <comment xml:lang="zh_TW">XAR 封存檔</comment>
++ <comment xml:lang="zh-CN">XAR 归档文件</comment>
++ <comment xml:lang="zh-TW">XAR 封存檔</comment>
+ <acronym>XAR</acronym>
+ <expanded-acronym>eXtensible ARchive</expanded-acronym>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="60">
+- <match value="0x78617221" type="big32" offset="0"/>
++ <match type="big32" value="0x78617221" offset="0"/>
+ </magic>
+ <glob pattern="*.xar"/>
+-
++ <!-- OS X 10.5+ installer package -->
+ <glob pattern="*.pkg"/>
+ </mime-type>
+ <mime-type type="application/zlib">
+ <comment>Zlib archive</comment>
++ <comment xml:lang="af">Zlib-argief</comment>
++ <comment xml:lang="bg">Архив — Zlib</comment>
+ <comment xml:lang="ca">arxiu Zlib</comment>
+ <comment xml:lang="cs">archiv Zlib</comment>
+ <comment xml:lang="da">Zlib-arkiv</comment>
+ <comment xml:lang="de">Zlib-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο Zlib</comment>
+- <comment xml:lang="en_GB">Zlib archive</comment>
++ <comment xml:lang="en-GB">Zlib archive</comment>
+ <comment xml:lang="es">archivador Zlib</comment>
++ <comment xml:lang="eu">Zlib artxiboa</comment>
+ <comment xml:lang="fi">Zlib-arkisto</comment>
+ <comment xml:lang="fr">Archive Zlib</comment>
++ <comment xml:lang="fur">archivi Zlib</comment>
+ <comment xml:lang="ga">cartlann Zlib</comment>
+ <comment xml:lang="gl">Arquivo Zlib</comment>
+ <comment xml:lang="he">ארכיון Zlib</comment>
+@@ -15399,7 +16016,7 @@
+ <comment xml:lang="oc">Archiu Zlib</comment>
+ <comment xml:lang="pl">Archiwum Zlib</comment>
+ <comment xml:lang="pt">arquivo Zlib</comment>
+- <comment xml:lang="pt_BR">Pacote Zlib</comment>
++ <comment xml:lang="pt-BR">Pacote Zlib</comment>
+ <comment xml:lang="ru">Архив Zlib</comment>
+ <comment xml:lang="sk">Archív Zlib</comment>
+ <comment xml:lang="sl">Datoteka arhiva Zlib</comment>
+@@ -15407,15 +16024,16 @@
+ <comment xml:lang="sv">Zlib-arkiv</comment>
+ <comment xml:lang="tr">Zlib arşivi</comment>
+ <comment xml:lang="uk">архів zlib</comment>
+- <comment xml:lang="zh_CN">Alzip 归档文件</comment>
+- <comment xml:lang="zh_TW">Zlib 封存檔</comment>
++ <comment xml:lang="zh-CN">Alzip 归档文件</comment>
++ <comment xml:lang="zh-TW">Zlib 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <glob pattern="*.zz"/>
+ </mime-type>
+ <mime-type type="application/x-magicpoint">
+ <comment>MagicPoint presentation</comment>
++ <comment xml:lang="af">MagicPoint-voorlegging</comment>
+ <comment xml:lang="ar">عرض تقديمي MagicPoint</comment>
+- <comment xml:lang="be@latin">Prezentacyja MagicPoint</comment>
++ <comment xml:lang="be-Latn">Prezentacyja MagicPoint</comment>
+ <comment xml:lang="bg">Презентация — MagicPoint</comment>
+ <comment xml:lang="ca">presentació de MagicPoint</comment>
+ <comment xml:lang="cs">prezentace MagicPoint</comment>
+@@ -15423,13 +16041,14 @@
+ <comment xml:lang="da">MagicPoint-præsentation</comment>
+ <comment xml:lang="de">MagicPoint-Präsentation</comment>
+ <comment xml:lang="el">Παρουσίαση MagicPoint</comment>
+- <comment xml:lang="en_GB">MagicPoint presentation</comment>
++ <comment xml:lang="en-GB">MagicPoint presentation</comment>
+ <comment xml:lang="eo">MagicPoint-prezentaĵo</comment>
+ <comment xml:lang="es">presentación de MagicPoint</comment>
+ <comment xml:lang="eu">MagicPoint aurkezpena</comment>
+ <comment xml:lang="fi">MagicPoint-esitys</comment>
+ <comment xml:lang="fo">MagicPoint framløga</comment>
+ <comment xml:lang="fr">présentation MagicPoint</comment>
++ <comment xml:lang="fur">presentazion MagicPoint</comment>
+ <comment xml:lang="ga">láithreoireacht MagicPoint</comment>
+ <comment xml:lang="gl">presentación de MagicPoint</comment>
+ <comment xml:lang="he">מצגת MagicPoint</comment>
+@@ -15451,7 +16070,7 @@
+ <comment xml:lang="oc">presentacion MagicPoint</comment>
+ <comment xml:lang="pl">Prezentacja programu MagicPoint</comment>
+ <comment xml:lang="pt">apresentação MagicPoint</comment>
+- <comment xml:lang="pt_BR">Apresentação do MagicPoint</comment>
++ <comment xml:lang="pt-BR">Apresentação do MagicPoint</comment>
+ <comment xml:lang="ro">Prezentare MagicPoint</comment>
+ <comment xml:lang="ru">Презентация MagicPoint</comment>
+ <comment xml:lang="sk">Prezentácia MagicPoint</comment>
+@@ -15462,29 +16081,31 @@
+ <comment xml:lang="tr">MagicPoint sunumu</comment>
+ <comment xml:lang="uk">презентація MagicPoint</comment>
+ <comment xml:lang="vi">Trình diễn MagicPoint</comment>
+- <comment xml:lang="zh_CN">MagicPoint 演示文稿</comment>
+- <comment xml:lang="zh_TW">MagicPoint 簡報檔</comment>
++ <comment xml:lang="zh-CN">MagicPoint 演示文稿</comment>
++ <comment xml:lang="zh-TW">MagicPoint 簡報</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="x-office-presentation"/>
+ <glob pattern="*.mgp"/>
+ </mime-type>
+ <mime-type type="application/x-macbinary">
+ <comment>Macintosh MacBinary file</comment>
++ <comment xml:lang="af">Macintosh MacBinary-lêer</comment>
+ <comment xml:lang="ar">ملف Macintosh MacBinary</comment>
+- <comment xml:lang="be@latin">Fajł Macintosh MacBinary</comment>
++ <comment xml:lang="be-Latn">Fajł Macintosh MacBinary</comment>
+ <comment xml:lang="bg">Файл — MacBinary</comment>
+ <comment xml:lang="ca">fitxer MacBinary de Macintosh</comment>
+ <comment xml:lang="cs">soubor MacBinary pro Macintosh </comment>
+ <comment xml:lang="da">Macintosh MacBinary-fil</comment>
+ <comment xml:lang="de">Macintosh-MacBinary-Datei</comment>
+ <comment xml:lang="el">Εκτελέσιμο Macintosh MacBinary</comment>
+- <comment xml:lang="en_GB">Macintosh MacBinary file</comment>
++ <comment xml:lang="en-GB">Macintosh MacBinary file</comment>
+ <comment xml:lang="eo">MacBinary-dosiero de Macintosh</comment>
+ <comment xml:lang="es">archivo de Macintosh MacBinary</comment>
+ <comment xml:lang="eu">Macintosh MacBinary fitxategia</comment>
+ <comment xml:lang="fi">Macintosh MacBinary -tiedosto</comment>
+ <comment xml:lang="fo">Macintosh MacBinary fíla</comment>
+ <comment xml:lang="fr">fichier Macintosh MacBinary</comment>
++ <comment xml:lang="fur">file MacBinary di Macintosh</comment>
+ <comment xml:lang="ga">comhad Macintosh MacBinary</comment>
+ <comment xml:lang="gl">ficheiro MacBinary de Macintosh</comment>
+ <comment xml:lang="he">קובץ בינרי של מקינטוש</comment>
+@@ -15505,7 +16126,7 @@
+ <comment xml:lang="oc">fichièr Macintosh MacBinary</comment>
+ <comment xml:lang="pl">Plik MacBinary Macintosh</comment>
+ <comment xml:lang="pt">ficheiro MacBinary de Macintosh</comment>
+- <comment xml:lang="pt_BR">Arquivo do Macintosh MacBinary</comment>
++ <comment xml:lang="pt-BR">Arquivo do Macintosh MacBinary</comment>
+ <comment xml:lang="ro">Fișier Macintosh MacBinary</comment>
+ <comment xml:lang="ru">Файл Macintosh MacBinary</comment>
+ <comment xml:lang="sk">Súbor pre Macintosh MacBinary</comment>
+@@ -15516,29 +16137,31 @@
+ <comment xml:lang="tr">Macintosh MacBinary dosyası</comment>
+ <comment xml:lang="uk">файл Macintosh MacBinary</comment>
+ <comment xml:lang="vi">Tập tin nhị phân MacBinary của Macintosh</comment>
+- <comment xml:lang="zh_CN">Macintosh MacBinary 文件</comment>
+- <comment xml:lang="zh_TW">Macintosh MacBinary 檔</comment>
++ <comment xml:lang="zh-CN">Macintosh MacBinary 文件</comment>
++ <comment xml:lang="zh-TW">Macintosh MacBinary 檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="50">
+- <match value="mBIN" type="string" offset="102"/>
++ <match type="string" value="mBIN" offset="102"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-matroska">
+ <comment>Matroska stream</comment>
++ <comment xml:lang="af">Matroska-stroom</comment>
+ <comment xml:lang="ar">دفق Matroska</comment>
+- <comment xml:lang="be@latin">Płyń Matroska</comment>
++ <comment xml:lang="be-Latn">Płyń Matroska</comment>
+ <comment xml:lang="bg">Поток — Matroska</comment>
+ <comment xml:lang="ca">flux Matroska</comment>
+ <comment xml:lang="cs">proud Matroska</comment>
+- <comment xml:lang="da">Matroskastrøm</comment>
++ <comment xml:lang="da">Matroska-strøm</comment>
+ <comment xml:lang="de">Matroska-Datenstrom</comment>
+ <comment xml:lang="el">Ροή Matroska</comment>
+- <comment xml:lang="en_GB">Matroska stream</comment>
++ <comment xml:lang="en-GB">Matroska stream</comment>
+ <comment xml:lang="es">flujo Matroska</comment>
+ <comment xml:lang="eu">Matroska korrontea</comment>
+ <comment xml:lang="fi">Matroska-virta</comment>
+ <comment xml:lang="fo">Matroska streymur</comment>
+ <comment xml:lang="fr">flux Matroska</comment>
++ <comment xml:lang="fur">flus Matroska</comment>
+ <comment xml:lang="ga">sruth Matroska</comment>
+ <comment xml:lang="gl">fluxo de Matroska</comment>
+ <comment xml:lang="he">זרימת Matroska</comment>
+@@ -15558,7 +16181,7 @@
+ <comment xml:lang="oc">flux Matroska</comment>
+ <comment xml:lang="pl">Strumień Matroska</comment>
+ <comment xml:lang="pt">fluxo Matroska</comment>
+- <comment xml:lang="pt_BR">Transmissão do Matroska</comment>
++ <comment xml:lang="pt-BR">Transmissão do Matroska</comment>
+ <comment xml:lang="ro">Flux Matroska</comment>
+ <comment xml:lang="ru">Поток Matroska</comment>
+ <comment xml:lang="sk">Stream Matroska</comment>
+@@ -15569,38 +16192,40 @@
+ <comment xml:lang="tr">Matroska akışı</comment>
+ <comment xml:lang="uk">потік даних Matroska</comment>
+ <comment xml:lang="vi">Luồng Matroska</comment>
+- <comment xml:lang="zh_CN">Matroska 流</comment>
+- <comment xml:lang="zh_TW">Matroska 串流</comment>
++ <comment xml:lang="zh-CN">Matroska 流</comment>
++ <comment xml:lang="zh-TW">Matroska 串流</comment>
+ <generic-icon name="video-x-generic"/>
+ <magic priority="50">
+-
+- <match value="0x1a45dfa3" type="big32" offset="0">
+-
+- <match value="0x4282" type="big16" offset="5:65">
+-
+- <match value="matroska" type="string" offset="8:75"/>
++ <!-- EBML ID -->
++ <match type="big32" value="0x1a45dfa3" offset="0">
++ <!-- DocumentType ID -->
++ <match type="big16" value="0x4282" offset="5:65">
++ <!-- DocumentType -->
++ <match type="string" value="matroska" offset="8:75"/>
+ </match>
+ </match>
+ </magic>
+ </mime-type>
+ <mime-type type="video/x-matroska">
+ <comment>Matroska video</comment>
++ <comment xml:lang="af">Matroska-video</comment>
+ <comment xml:lang="ar">Matroska مرئي</comment>
+ <comment xml:lang="ast">Videu en Matroska</comment>
+- <comment xml:lang="be@latin">Videa Matroska</comment>
++ <comment xml:lang="be-Latn">Videa Matroska</comment>
+ <comment xml:lang="bg">Видео — Matroska</comment>
+ <comment xml:lang="ca">vídeo Matroska</comment>
+ <comment xml:lang="cs">video Matroska</comment>
+- <comment xml:lang="da">Matroskavideo</comment>
++ <comment xml:lang="da">Matroska-video</comment>
+ <comment xml:lang="de">Matroska-Video</comment>
+ <comment xml:lang="el">Βίντεο Matroska</comment>
+- <comment xml:lang="en_GB">Matroska video</comment>
++ <comment xml:lang="en-GB">Matroska video</comment>
+ <comment xml:lang="eo">Matroska-video</comment>
+ <comment xml:lang="es">vídeo Matroska</comment>
+ <comment xml:lang="eu">Matroska bideoa</comment>
+ <comment xml:lang="fi">Matroska-video</comment>
+ <comment xml:lang="fo">Matroska video</comment>
+ <comment xml:lang="fr">vidéo Matroska</comment>
++ <comment xml:lang="fur">video Matroska</comment>
+ <comment xml:lang="ga">físeán Matroska</comment>
+ <comment xml:lang="gl">vídeo de Matroska</comment>
+ <comment xml:lang="he">וידאו Matroska</comment>
+@@ -15622,7 +16247,7 @@
+ <comment xml:lang="oc">vidèo Matroska</comment>
+ <comment xml:lang="pl">Plik wideo Matroska</comment>
+ <comment xml:lang="pt">vídeo Matroska</comment>
+- <comment xml:lang="pt_BR">Vídeo Matroska</comment>
++ <comment xml:lang="pt-BR">Vídeo Matroska</comment>
+ <comment xml:lang="ro">Video Matroska</comment>
+ <comment xml:lang="ru">Видео Matroska</comment>
+ <comment xml:lang="sk">Video Matroska</comment>
+@@ -15633,24 +16258,27 @@
+ <comment xml:lang="tr">Matroska video</comment>
+ <comment xml:lang="uk">відеокліп Matroska</comment>
+ <comment xml:lang="vi">Ảnh động Matroska</comment>
+- <comment xml:lang="zh_CN">Matroska 视频</comment>
+- <comment xml:lang="zh_TW">Matroska 視訊</comment>
++ <comment xml:lang="zh-CN">Matroska 视频</comment>
++ <comment xml:lang="zh-TW">Matroska 視訊</comment>
+ <glob pattern="*.mkv"/>
+ <sub-class-of type="application/x-matroska"/>
+ </mime-type>
+ <mime-type type="video/x-matroska-3d">
+ <comment>Matroska 3D video</comment>
++ <comment xml:lang="af">Matroska 3D video</comment>
+ <comment xml:lang="ast">Videu en Matroska 3D</comment>
++ <comment xml:lang="bg">Видео — Matroska 3D</comment>
+ <comment xml:lang="ca">vídeo Matroska 3D</comment>
+ <comment xml:lang="cs">3D video Matroska</comment>
+ <comment xml:lang="da">Matroska 3D-video</comment>
+ <comment xml:lang="de">Matroska 3D-Video</comment>
+ <comment xml:lang="el">Βίντεο 3Δ Matroska</comment>
+- <comment xml:lang="en_GB">Matroska 3D video</comment>
++ <comment xml:lang="en-GB">Matroska 3D video</comment>
+ <comment xml:lang="es">vídeo Matroska en 3D</comment>
+ <comment xml:lang="eu">Matroska 3D bideoa</comment>
+ <comment xml:lang="fi">Matroska 3D-video</comment>
+ <comment xml:lang="fr">vidéo Matroska 3D</comment>
++ <comment xml:lang="fur">video 3D Matroska</comment>
+ <comment xml:lang="ga">físeán Matroska 3D</comment>
+ <comment xml:lang="gl">Video Matroska 3D</comment>
+ <comment xml:lang="he">סרטון תלת ממדי מסוג Matroska</comment>
+@@ -15664,7 +16292,7 @@
+ <comment xml:lang="oc">vidèo Matroska 3D</comment>
+ <comment xml:lang="pl">Plik wideo Matroska 3D</comment>
+ <comment xml:lang="pt">vídeo 3D Matroska</comment>
+- <comment xml:lang="pt_BR">Vídeo 3D Matroska</comment>
++ <comment xml:lang="pt-BR">Vídeo 3D Matroska</comment>
+ <comment xml:lang="ru">Видео Matroska 3D</comment>
+ <comment xml:lang="sk">3D video Matroska</comment>
+ <comment xml:lang="sl">Video datoteka Matroska 3D</comment>
+@@ -15672,28 +16300,30 @@
+ <comment xml:lang="sv">Matroska 3D-video</comment>
+ <comment xml:lang="tr">Matroska 3B video</comment>
+ <comment xml:lang="uk">відеокліп Matroska 3D</comment>
+- <comment xml:lang="zh_CN">Matroska 3D 视频</comment>
+- <comment xml:lang="zh_TW">Matroska 3D 視訊</comment>
++ <comment xml:lang="zh-CN">Matroska 3D 视频</comment>
++ <comment xml:lang="zh-TW">Matroska 3D 視訊</comment>
+ <glob pattern="*.mk3d"/>
+ <sub-class-of type="application/x-matroska"/>
+ </mime-type>
+ <mime-type type="audio/x-matroska">
+ <comment>Matroska audio</comment>
++ <comment xml:lang="af">Matroska-oudio</comment>
+ <comment xml:lang="ar">سمعي Matroska</comment>
+- <comment xml:lang="be@latin">Aŭdyjo Matroska</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo Matroska</comment>
+ <comment xml:lang="bg">Аудио — Matroska</comment>
+- <comment xml:lang="ca">àudio de Matroska</comment>
++ <comment xml:lang="ca">àudio Matroska</comment>
+ <comment xml:lang="cs">zvuk Matroska</comment>
+- <comment xml:lang="da">Matroskalyd</comment>
++ <comment xml:lang="da">Matroska-lyd</comment>
+ <comment xml:lang="de">Matroska-Audio</comment>
+ <comment xml:lang="el">Ήχος Matroska</comment>
+- <comment xml:lang="en_GB">Matroska audio</comment>
++ <comment xml:lang="en-GB">Matroska audio</comment>
+ <comment xml:lang="eo">Matroska-sondosiero</comment>
+- <comment xml:lang="es">sonido Matroska</comment>
++ <comment xml:lang="es">audio Matroska</comment>
+ <comment xml:lang="eu">Matroska audioa</comment>
+ <comment xml:lang="fi">Matroska-ääni</comment>
+ <comment xml:lang="fo">Matroska ljóður</comment>
+ <comment xml:lang="fr">audio Matroska</comment>
++ <comment xml:lang="fur">audio Matroska</comment>
+ <comment xml:lang="ga">fuaim Matroska</comment>
+ <comment xml:lang="gl">son de Matroska</comment>
+ <comment xml:lang="he">שמע Matroska</comment>
+@@ -15714,7 +16344,7 @@
+ <comment xml:lang="oc">àudio Matroska</comment>
+ <comment xml:lang="pl">Plik dźwiękowy Matroska</comment>
+ <comment xml:lang="pt">áudio Matroska</comment>
+- <comment xml:lang="pt_BR">Áudio Matroska</comment>
++ <comment xml:lang="pt-BR">Áudio Matroska</comment>
+ <comment xml:lang="ro">Audio Matroska</comment>
+ <comment xml:lang="ru">Аудио Matroska</comment>
+ <comment xml:lang="sk">Zvuk Matroska</comment>
+@@ -15725,13 +16355,14 @@
+ <comment xml:lang="tr">Matroska ses</comment>
+ <comment xml:lang="uk">звук Matroska</comment>
+ <comment xml:lang="vi">Âm thanh Matroska</comment>
+- <comment xml:lang="zh_CN">Matroska 音频</comment>
+- <comment xml:lang="zh_TW">Matroska 音訊</comment>
++ <comment xml:lang="zh-CN">Matroska 音频</comment>
++ <comment xml:lang="zh-TW">Matroska 音訊</comment>
+ <glob pattern="*.mka"/>
+ <sub-class-of type="application/x-matroska"/>
+ </mime-type>
+ <mime-type type="video/webm">
+ <comment>WebM video</comment>
++ <comment xml:lang="af">WebM-video</comment>
+ <comment xml:lang="ar">WebM مرئي</comment>
+ <comment xml:lang="ast">Videu en WebM</comment>
+ <comment xml:lang="bg">Видео — WebM</comment>
+@@ -15740,13 +16371,14 @@
+ <comment xml:lang="da">WebM-video</comment>
+ <comment xml:lang="de">WebM-Video</comment>
+ <comment xml:lang="el">Βίντεο WebM</comment>
+- <comment xml:lang="en_GB">WebM video</comment>
++ <comment xml:lang="en-GB">WebM video</comment>
+ <comment xml:lang="eo">WebM-video</comment>
+ <comment xml:lang="es">vídeo WebM</comment>
+ <comment xml:lang="eu">WebM bideoa</comment>
+ <comment xml:lang="fi">WebM-video</comment>
+ <comment xml:lang="fo">WebM video</comment>
+ <comment xml:lang="fr">vidéo WebM</comment>
++ <comment xml:lang="fur">video WebM</comment>
+ <comment xml:lang="ga">físeán WebM</comment>
+ <comment xml:lang="gl">vídeo WebM</comment>
+ <comment xml:lang="he">וידאו WebM</comment>
+@@ -15764,7 +16396,7 @@
+ <comment xml:lang="oc">vidèo WebM</comment>
+ <comment xml:lang="pl">Plik wideo WebM</comment>
+ <comment xml:lang="pt">vídeo WebM</comment>
+- <comment xml:lang="pt_BR">Vídeo WebM</comment>
++ <comment xml:lang="pt-BR">Vídeo WebM</comment>
+ <comment xml:lang="ro">Video WebM</comment>
+ <comment xml:lang="ru">Видео WebM</comment>
+ <comment xml:lang="sk">Video WebM</comment>
+@@ -15773,36 +16405,38 @@
+ <comment xml:lang="sv">WebM-video</comment>
+ <comment xml:lang="tr">WebM video</comment>
+ <comment xml:lang="uk">відео WebM</comment>
+- <comment xml:lang="zh_CN">WebM 视频</comment>
+- <comment xml:lang="zh_TW">WebM 視訊</comment>
++ <comment xml:lang="zh-CN">WebM 视频</comment>
++ <comment xml:lang="zh-TW">WebM 視訊</comment>
+ <glob pattern="*.webm"/>
+ <magic priority="50">
+-
+- <match value="0x1a45dfa3" type="big32" offset="0">
+-
+- <match value="0x4282" type="big16" offset="5:65">
+-
+- <match value="webm" type="string" offset="8:75"/>
++ <!-- EBML ID -->
++ <match type="big32" value="0x1a45dfa3" offset="0">
++ <!-- DocumentType ID -->
++ <match type="big16" value="0x4282" offset="5:65">
++ <!-- DocumentType -->
++ <match type="string" value="webm" offset="8:75"/>
+ </match>
+ </match>
+ </magic>
+ </mime-type>
+ <mime-type type="audio/webm">
+ <comment>WebM audio</comment>
++ <comment xml:lang="af">WebM-oudio</comment>
+ <comment xml:lang="ar">WebM سمعي</comment>
+ <comment xml:lang="bg">Аудио — WebM</comment>
+- <comment xml:lang="ca">àudio de WebM</comment>
++ <comment xml:lang="ca">àudio WebM</comment>
+ <comment xml:lang="cs">zvuk WebM</comment>
+ <comment xml:lang="da">WebM-lyd</comment>
+ <comment xml:lang="de">WebM-Audio</comment>
+ <comment xml:lang="el">Ήχος WebM</comment>
+- <comment xml:lang="en_GB">WebM audio</comment>
++ <comment xml:lang="en-GB">WebM audio</comment>
+ <comment xml:lang="eo">WebM-sondosiero</comment>
+- <comment xml:lang="es">sonido WebM</comment>
++ <comment xml:lang="es">audio WebM</comment>
+ <comment xml:lang="eu">WebM audioa</comment>
+ <comment xml:lang="fi">WebM-ääni</comment>
+ <comment xml:lang="fo">WebM ljóður</comment>
+ <comment xml:lang="fr">audio WebM</comment>
++ <comment xml:lang="fur">audio WebM</comment>
+ <comment xml:lang="ga">fuaim WebM</comment>
+ <comment xml:lang="gl">son WebM</comment>
+ <comment xml:lang="he">שמע WebM</comment>
+@@ -15820,7 +16454,7 @@
+ <comment xml:lang="oc">àudio WebM</comment>
+ <comment xml:lang="pl">Plik dźwiękowy WebM</comment>
+ <comment xml:lang="pt">áudio WebM</comment>
+- <comment xml:lang="pt_BR">Áudio WebM</comment>
++ <comment xml:lang="pt-BR">Áudio WebM</comment>
+ <comment xml:lang="ro">Audio WebM</comment>
+ <comment xml:lang="ru">Аудио WebM</comment>
+ <comment xml:lang="sk">Zvuk WebM</comment>
+@@ -15829,22 +16463,25 @@
+ <comment xml:lang="sv">WebM-ljud</comment>
+ <comment xml:lang="tr">WebM sesi</comment>
+ <comment xml:lang="uk">звук WebM</comment>
+- <comment xml:lang="zh_CN">WebM 音频</comment>
+- <comment xml:lang="zh_TW">WebM 音訊</comment>
++ <comment xml:lang="zh-CN">WebM 音频</comment>
++ <comment xml:lang="zh-TW">WebM 音訊</comment>
+ <sub-class-of type="video/webm"/>
+ </mime-type>
+ <mime-type type="application/x-mimearchive">
+ <comment>MHTML web archive</comment>
++ <comment xml:lang="af">MHTML-webargief</comment>
++ <comment xml:lang="bg">Архив — MHTML</comment>
+ <comment xml:lang="ca">arxiu web MHTML</comment>
+ <comment xml:lang="cs">webový archiv MHTML</comment>
+- <comment xml:lang="da">MHTML-netarkiv</comment>
++ <comment xml:lang="da">MHTML-webarkiv</comment>
+ <comment xml:lang="de">MHTML-Webarchiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο ιστού MHTML</comment>
+- <comment xml:lang="en_GB">MHTML web archive</comment>
++ <comment xml:lang="en-GB">MHTML web archive</comment>
+ <comment xml:lang="es">archivador web MHTML</comment>
+ <comment xml:lang="eu">MHTML web artxiboa</comment>
+ <comment xml:lang="fi">MHTML-kooste</comment>
+ <comment xml:lang="fr">archive web MHTML</comment>
++ <comment xml:lang="fur">archivi web MHTML</comment>
+ <comment xml:lang="ga">cartlann ghréasáin MHTML</comment>
+ <comment xml:lang="gl">Arquivo web MHTML</comment>
+ <comment xml:lang="he">ארכיון רשת MHTML</comment>
+@@ -15860,7 +16497,7 @@
+ <comment xml:lang="oc">archiu web MHTML</comment>
+ <comment xml:lang="pl">Archiwum witryny MHTML</comment>
+ <comment xml:lang="pt">arquivo web MHTML</comment>
+- <comment xml:lang="pt_BR">Pacote web MHTML</comment>
++ <comment xml:lang="pt-BR">Pacote web MHTML</comment>
+ <comment xml:lang="ru">Веб-архив MHTML</comment>
+ <comment xml:lang="sk">Webový archív MHTML</comment>
+ <comment xml:lang="sl">Spletni arhiv MHTML</comment>
+@@ -15868,8 +16505,8 @@
+ <comment xml:lang="sv">MHTML-webbarkiv</comment>
+ <comment xml:lang="tr">MHTML web arşivi</comment>
+ <comment xml:lang="uk">вебархів MHTML</comment>
+- <comment xml:lang="zh_CN">MHTML 网络归档</comment>
+- <comment xml:lang="zh_TW">MHTML 網頁封存檔</comment>
++ <comment xml:lang="zh-CN">MHTML 网络归档</comment>
++ <comment xml:lang="zh-TW">MHTML 網頁封存檔</comment>
+ <acronym>MHTML</acronym>
+ <expanded-acronym>MIME HTML</expanded-acronym>
+ <glob pattern="*.mhtml"/>
+@@ -15878,6 +16515,7 @@
+ </mime-type>
+ <mime-type type="application/mxf">
+ <comment>MXF video</comment>
++ <comment xml:lang="af">MXF-video</comment>
+ <comment xml:lang="ar">MXF مرئي</comment>
+ <comment xml:lang="ast">Videu en MXF</comment>
+ <comment xml:lang="bg">Видео — MXF</comment>
+@@ -15886,13 +16524,14 @@
+ <comment xml:lang="da">MXF-video</comment>
+ <comment xml:lang="de">MXF-Video</comment>
+ <comment xml:lang="el">Βίντεο MXF</comment>
+- <comment xml:lang="en_GB">MXF video</comment>
++ <comment xml:lang="en-GB">MXF video</comment>
+ <comment xml:lang="eo">MXF-video</comment>
+ <comment xml:lang="es">vídeo MXF</comment>
+ <comment xml:lang="eu">MXF bideoa</comment>
+ <comment xml:lang="fi">MXF-video</comment>
+ <comment xml:lang="fo">MXF video</comment>
+ <comment xml:lang="fr">vidéo MXF</comment>
++ <comment xml:lang="fur">video MXF</comment>
+ <comment xml:lang="ga">físeán MXF</comment>
+ <comment xml:lang="gl">vídeo MXF</comment>
+ <comment xml:lang="he">וידאו MXF</comment>
+@@ -15911,7 +16550,7 @@
+ <comment xml:lang="oc">vidèo MXF</comment>
+ <comment xml:lang="pl">Plik wideo MXF</comment>
+ <comment xml:lang="pt">vídeo MXF</comment>
+- <comment xml:lang="pt_BR">Vídeo MXF</comment>
++ <comment xml:lang="pt-BR">Vídeo MXF</comment>
+ <comment xml:lang="ro">Video MXF</comment>
+ <comment xml:lang="ru">Видео MXF</comment>
+ <comment xml:lang="sk">Video MXF</comment>
+@@ -15920,33 +16559,35 @@
+ <comment xml:lang="sv">MXF-video</comment>
+ <comment xml:lang="tr">MXF video</comment>
+ <comment xml:lang="uk">відеокліп MXF</comment>
+- <comment xml:lang="zh_CN">MXF 视频</comment>
+- <comment xml:lang="zh_TW">MXF 視訊</comment>
++ <comment xml:lang="zh-CN">MXF 视频</comment>
++ <comment xml:lang="zh-TW">MXF 視訊</comment>
+ <acronym>MXF</acronym>
+ <expanded-acronym>Material Exchange Format</expanded-acronym>
+ <generic-icon name="video-x-generic"/>
+ <magic priority="50">
+- <match value="\x06\x0e\x2b\x34\x02\x05\x01\x01\x0d\x01\x02\x01\x01\x02" type="string" offset="0:256"/>
++ <match type="string" value="\x06\x0e\x2b\x34\x02\x05\x01\x01\x0d\x01\x02\x01\x01\x02" offset="0:256"/>
+ </magic>
+ <glob pattern="*.mxf"/>
+ </mime-type>
+ <mime-type type="text/x-ocl">
+ <comment>OCL file</comment>
++ <comment xml:lang="af">OCL-lêer</comment>
+ <comment xml:lang="ar">ملف OCL</comment>
+- <comment xml:lang="be@latin">Fajł OCL</comment>
++ <comment xml:lang="be-Latn">Fajł OCL</comment>
+ <comment xml:lang="bg">Файл — OCL</comment>
+ <comment xml:lang="ca">fitxer OCL</comment>
+ <comment xml:lang="cs">soubor OCL</comment>
+ <comment xml:lang="da">OCL-fil</comment>
+ <comment xml:lang="de">OCL-Datei</comment>
+ <comment xml:lang="el">Αρχείο OCL</comment>
+- <comment xml:lang="en_GB">OCL file</comment>
++ <comment xml:lang="en-GB">OCL file</comment>
+ <comment xml:lang="eo">OCL-dosiero</comment>
+ <comment xml:lang="es">archivo OCL</comment>
+ <comment xml:lang="eu">OCL fitxategia</comment>
+ <comment xml:lang="fi">OCL-tiedosto</comment>
+ <comment xml:lang="fo">OCL fíla</comment>
+ <comment xml:lang="fr">fichier OCL</comment>
++ <comment xml:lang="fur">file OCL</comment>
+ <comment xml:lang="ga">comhad OCL</comment>
+ <comment xml:lang="gl">ficheiro OCL</comment>
+ <comment xml:lang="he">קובץ OCL</comment>
+@@ -15966,7 +16607,7 @@
+ <comment xml:lang="oc">fichièr OCL</comment>
+ <comment xml:lang="pl">Plik OCL</comment>
+ <comment xml:lang="pt">ficheiro OCL</comment>
+- <comment xml:lang="pt_BR">Arquivo OCL</comment>
++ <comment xml:lang="pt-BR">Arquivo OCL</comment>
+ <comment xml:lang="ro">Fișier OCL</comment>
+ <comment xml:lang="ru">Файл OCL</comment>
+ <comment xml:lang="sk">Súbor OCL</comment>
+@@ -15977,54 +16618,39 @@
+ <comment xml:lang="tr">OCL dosyası</comment>
+ <comment xml:lang="uk">файл OCL</comment>
+ <comment xml:lang="vi">Tập tin OCL</comment>
+- <comment xml:lang="zh_CN">OCL 文件</comment>
+- <comment xml:lang="zh_TW">OCL 檔</comment>
++ <comment xml:lang="zh-CN">OCL 文件</comment>
++ <comment xml:lang="zh-TW">OCL 檔</comment>
+ <acronym>OCL</acronym>
+ <expanded-acronym>Object Constraint Language</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.ocl"/>
+ </mime-type>
+ <mime-type type="text/x-cobol">
+- <comment>COBOL source file</comment>
++ <comment>COBOL source code</comment>
+ <comment xml:lang="bg">Изходен код — COBOL</comment>
+ <comment xml:lang="ca">codi font en COBOL</comment>
+- <comment xml:lang="cs">zdrojový soubor COBOL</comment>
+- <comment xml:lang="da">COBOL-kildefil</comment>
+- <comment xml:lang="de">COBOL-Quelldatei</comment>
+- <comment xml:lang="el">Πηγαίο αρχείο COBOL</comment>
+- <comment xml:lang="en_GB">COBOL source file</comment>
+- <comment xml:lang="eo">COBOL-fontdosiero</comment>
+- <comment xml:lang="es">archivo fuente de COBOL</comment>
++ <comment xml:lang="da">COBOL-kildekode</comment>
++ <comment xml:lang="de">COBOL-Quelltext</comment>
++ <comment xml:lang="en-GB">COBOL source code</comment>
++ <comment xml:lang="es">código fuente en COBOL</comment>
+ <comment xml:lang="eu">COBOL iturburu-kodea</comment>
+ <comment xml:lang="fi">COBOL-lähdekoodi</comment>
+- <comment xml:lang="fr">fichier source COBOL</comment>
+- <comment xml:lang="ga">cód foinseach COBOL</comment>
+- <comment xml:lang="gl">ficheiro fonte de COBOL</comment>
+- <comment xml:lang="he">קובץ מקור של COBOL</comment>
+- <comment xml:lang="hr">COBOL izvorna datoteka</comment>
+- <comment xml:lang="hu">COBOL forrásfájl</comment>
+- <comment xml:lang="ia">File de codice fonte COBOL</comment>
+- <comment xml:lang="id">Berkas sumber COBOL</comment>
+- <comment xml:lang="it">File sorgente COBOL</comment>
+- <comment xml:lang="ja">COBOL ソースファイル</comment>
+- <comment xml:lang="ka">COBOL-ის საწყისი ფაილი</comment>
++ <comment xml:lang="fr">code source COBOL</comment>
++ <comment xml:lang="hr">COBOL izvorni kôd</comment>
++ <comment xml:lang="hu">COBOL forráskód</comment>
++ <comment xml:lang="id">Kode sumber COBOL</comment>
++ <comment xml:lang="it">Codice sorgente COBOL</comment>
+ <comment xml:lang="kk">COBOL бастапқы коды</comment>
+- <comment xml:lang="ko">COBOL 소스 파일</comment>
+- <comment xml:lang="lv">COBOL pirmkods</comment>
+- <comment xml:lang="nl">COBOL bronbestand</comment>
+- <comment xml:lang="oc">fichièr font COBOL</comment>
+- <comment xml:lang="pl">Plik źródłowy COBOL</comment>
+- <comment xml:lang="pt">ficheiro origem COBOL</comment>
+- <comment xml:lang="pt_BR">Arquivo de código-fonte em COBOL</comment>
+- <comment xml:lang="ru">Файл исходного кода на COBOL</comment>
+- <comment xml:lang="sk">Zdrojový súbor COBOLu</comment>
+- <comment xml:lang="sl">Izvorna koda COBOL</comment>
+- <comment xml:lang="sr">изворна датотека КОБОЛ-а</comment>
+- <comment xml:lang="sv">COBOL-källkodsfil</comment>
+- <comment xml:lang="tr">COBOL kaynak dosyası</comment>
++ <comment xml:lang="ko">코볼 소스 코드</comment>
++ <comment xml:lang="pl">Kod źródłowy COBOL</comment>
++ <comment xml:lang="pt-BR">Código-fonte COBOL</comment>
++ <comment xml:lang="ru">Исходный код COBOL</comment>
++ <comment xml:lang="sk">Zdrojový kód COBOL</comment>
++ <comment xml:lang="sv">COBOL-källkod</comment>
++ <comment xml:lang="tr">COBOL kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою COBOL</comment>
+- <comment xml:lang="zh_CN">COBOL 源文件</comment>
+- <comment xml:lang="zh_TW">COBOL 源檔</comment>
++ <comment xml:lang="zh-CN">COBOL 源代码</comment>
++ <comment xml:lang="zh-TW">COBOL 原始碼</comment>
+ <acronym>COBOL</acronym>
+ <expanded-acronym>COmmon Business Oriented Language</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+@@ -16033,24 +16659,26 @@
+ </mime-type>
+ <mime-type type="application/x-mobipocket-ebook">
+ <comment>Mobipocket e-book</comment>
++ <comment xml:lang="af">Mobipocket e-boek</comment>
+ <comment xml:lang="bg">Е-книга — Mobipocket</comment>
+ <comment xml:lang="ca">llibre electrònic Mobipocket </comment>
+ <comment xml:lang="cs">elektronická kniha Mobipocket</comment>
+ <comment xml:lang="da">Mobipocket e-bog</comment>
+ <comment xml:lang="de">Mobipocket E-Book</comment>
+ <comment xml:lang="el">Ηλεκτρονικό βιβλίο Mobipocket</comment>
+- <comment xml:lang="en_GB">Mobipocket e-book</comment>
++ <comment xml:lang="en-GB">Mobipocket e-book</comment>
+ <comment xml:lang="es">libro electrónico de Mobipocket</comment>
+ <comment xml:lang="eu">Mobipocket liburua</comment>
+ <comment xml:lang="fi">Mobipocket e-kirja</comment>
+ <comment xml:lang="fr">livre numérique Mobipocket</comment>
++ <comment xml:lang="fur">e-book Mobipocket</comment>
+ <comment xml:lang="ga">r-leabhar Mobipocket</comment>
+ <comment xml:lang="gl">E-book Mobipocket</comment>
+ <comment xml:lang="he">ספר אלקטרוני של Mobipocket</comment>
+ <comment xml:lang="hr">Mobipocket e-knjiga</comment>
+ <comment xml:lang="hu">Mobipocket e-könyv</comment>
+ <comment xml:lang="ia">E-libro Mobipocket</comment>
+- <comment xml:lang="id">e-book Mobipocket</comment>
++ <comment xml:lang="id">E-book Mobipocket</comment>
+ <comment xml:lang="it">E-book Mobipocket</comment>
+ <comment xml:lang="ja">Mobipocket 電子書籍</comment>
+ <comment xml:lang="ka">Mobipocket-ის ელწიგნი</comment>
+@@ -16061,7 +16689,7 @@
+ <comment xml:lang="oc">libre numeric Mobipocket</comment>
+ <comment xml:lang="pl">E-book Mobipocket</comment>
+ <comment xml:lang="pt">ebook Mobipocket</comment>
+- <comment xml:lang="pt_BR">E-book Mobipocket</comment>
++ <comment xml:lang="pt-BR">E-book Mobipocket</comment>
+ <comment xml:lang="ru">Электронная книга Mobipocket</comment>
+ <comment xml:lang="sk">E-kniha Mobipocket</comment>
+ <comment xml:lang="sl">e-knjiga Mobipocket</comment>
+@@ -16069,38 +16697,40 @@
+ <comment xml:lang="sv">Mobipocket-e-bok</comment>
+ <comment xml:lang="tr">Mobipocket e-kitap</comment>
+ <comment xml:lang="uk">електронна книга Mobipocket</comment>
+- <comment xml:lang="zh_CN">Mobipocket 电子书</comment>
+- <comment xml:lang="zh_TW">Mobipocket e-book</comment>
++ <comment xml:lang="zh-CN">Mobipocket 电子书</comment>
++ <comment xml:lang="zh-TW">Mobipocket e-book</comment>
+ <sub-class-of type="application/vnd.palm"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.mobi"/>
+ <glob pattern="*.prc"/>
+ <magic priority="30">
+-
+- <match value="TEXtREAd" type="string" offset="60"/>
++ <!-- This also matches AportisDoc, so lower the priority and prefer extension -->
++ <match type="string" offset="60" value="TEXtREAd"/>
+ </magic>
+ <magic priority="80">
+- <match value="BOOKMOBI" type="string" offset="60"/>
++ <match type="string" offset="60" value="BOOKMOBI"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-mif">
+ <comment>Adobe FrameMaker MIF document</comment>
++ <comment xml:lang="af">Adobe FrameMaker MIF-dokument</comment>
+ <comment xml:lang="ar">مستند أدوبي الصانع للإطارات MIF</comment>
+ <comment xml:lang="ast">Documentu MIF d'Adobe FrameMaker</comment>
+- <comment xml:lang="be@latin">Dakument Adobe FrameMaker MIF</comment>
++ <comment xml:lang="be-Latn">Dakument Adobe FrameMaker MIF</comment>
+ <comment xml:lang="bg">Документ — Adobe FrameMaker MIF</comment>
+ <comment xml:lang="ca">document MIF d'Adobe FrameMaker</comment>
+ <comment xml:lang="cs">dokument Adobe FrameMaker MIF</comment>
+ <comment xml:lang="da">Adobe FrameMaker MIF-dokument</comment>
+ <comment xml:lang="de">Adobe-FrameMaker-MIF-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο MIF του Adobe FrameMaker </comment>
+- <comment xml:lang="en_GB">Adobe FrameMaker MIF document</comment>
++ <comment xml:lang="en-GB">Adobe FrameMaker MIF document</comment>
+ <comment xml:lang="eo">MIF-dokumento de Adobe FrameMaker</comment>
+ <comment xml:lang="es">documento MIF de Adobe FrameMaker</comment>
+ <comment xml:lang="eu">Adobe FrameMaker-en MIF dokumentua</comment>
+ <comment xml:lang="fi">Adobe FrameMaker MIF -asiakirja</comment>
+ <comment xml:lang="fo">Adobe FrameMaker MIF skjal</comment>
+ <comment xml:lang="fr">document MIF Adobe FrameMaker</comment>
++ <comment xml:lang="fur">document MIF di Adobe FrameMaker</comment>
+ <comment xml:lang="ga">cáipéis MIF Adobe FrameMaker</comment>
+ <comment xml:lang="gl">documento MIF de Adobe FrameMaker</comment>
+ <comment xml:lang="he">מסמך MIF של Adobe FrameMaker</comment>
+@@ -16121,7 +16751,7 @@
+ <comment xml:lang="oc">document MIF Adobe FrameMaker</comment>
+ <comment xml:lang="pl">Dokument MIF Adobe FrameMaker</comment>
+ <comment xml:lang="pt">documento Adobe FrameMaker MIF</comment>
+- <comment xml:lang="pt_BR">Documento MIF do Adobe FrameMaker</comment>
++ <comment xml:lang="pt-BR">Documento MIF do Adobe FrameMaker</comment>
+ <comment xml:lang="ro">Document Adobe FrameMaker MIF</comment>
+ <comment xml:lang="ru">Документ Adobe FrameMaker MIF</comment>
+ <comment xml:lang="sk">Dokument Adobe FrameMaker MIF</comment>
+@@ -16132,27 +16762,29 @@
+ <comment xml:lang="tr">Adobe FrameMaker MIF belgesi</comment>
+ <comment xml:lang="uk">документ Adobe FrameMaker MIF</comment>
+ <comment xml:lang="vi">Tài liệu Adobe FrameMaker MIF</comment>
+- <comment xml:lang="zh_CN">Adobe FrameMaker MIF 文档</comment>
+- <comment xml:lang="zh_TW">Adobe FrameMaker MIF 文件</comment>
++ <comment xml:lang="zh-CN">Adobe FrameMaker MIF 文档</comment>
++ <comment xml:lang="zh-TW">Adobe FrameMaker MIF 文件</comment>
+ <glob pattern="*.mif"/>
+ </mime-type>
+ <mime-type type="application/x-mozilla-bookmarks">
+ <comment>Mozilla bookmarks</comment>
++ <comment xml:lang="af">Mozilla-boekmerke</comment>
+ <comment xml:lang="ar">علامات موزيلا</comment>
+- <comment xml:lang="be@latin">Zakładki Mozilla</comment>
++ <comment xml:lang="be-Latn">Zakładki Mozilla</comment>
+ <comment xml:lang="bg">Отметки — Mozilla</comment>
+ <comment xml:lang="ca">llista d'adreces d'interès de Mozilla</comment>
+ <comment xml:lang="cs">záložky Mozilla</comment>
+ <comment xml:lang="da">Mozillabogmærker</comment>
+ <comment xml:lang="de">Mozilla-Lesezeichen</comment>
+ <comment xml:lang="el">Σελιδοδείκτες Mozilla</comment>
+- <comment xml:lang="en_GB">Mozilla bookmarks</comment>
++ <comment xml:lang="en-GB">Mozilla bookmarks</comment>
+ <comment xml:lang="eo">Mozilla-legosignoj</comment>
+ <comment xml:lang="es">marcadores de Mozilla</comment>
+ <comment xml:lang="eu">Mozillako laster-markak</comment>
+ <comment xml:lang="fi">Mozilla-kirjanmerkit</comment>
+ <comment xml:lang="fo">Mozilla bókamerki</comment>
+ <comment xml:lang="fr">marque-pages Mozilla</comment>
++ <comment xml:lang="fur">segnelibris Mozilla</comment>
+ <comment xml:lang="ga">leabharmharcanna Mozilla</comment>
+ <comment xml:lang="gl">Marcadores de Mozilla</comment>
+ <comment xml:lang="he">סימניה של Mozilla</comment>
+@@ -16173,7 +16805,7 @@
+ <comment xml:lang="oc">marcapaginas Mozilla</comment>
+ <comment xml:lang="pl">Zakładki Mozilla</comment>
+ <comment xml:lang="pt">marcadores do Mozilla</comment>
+- <comment xml:lang="pt_BR">Favoritos do Mozilla</comment>
++ <comment xml:lang="pt-BR">Favoritos do Mozilla</comment>
+ <comment xml:lang="ro">Semne de carte Mozilla</comment>
+ <comment xml:lang="ru">Закладки Mozilla</comment>
+ <comment xml:lang="sk">Záložky Mozilla</comment>
+@@ -16184,32 +16816,34 @@
+ <comment xml:lang="tr">Mozilla yer imleri</comment>
+ <comment xml:lang="uk">закладки Mozilla</comment>
+ <comment xml:lang="vi">Liên kết đã lưu Mozilla</comment>
+- <comment xml:lang="zh_CN">Mozilla 书签</comment>
+- <comment xml:lang="zh_TW">Mozilla 書籤</comment>
++ <comment xml:lang="zh-CN">Mozilla 书签</comment>
++ <comment xml:lang="zh-TW">Mozilla 書籤</comment>
+ <sub-class-of type="text/html"/>
+ <generic-icon name="text-html"/>
+ <magic priority="80">
+- <match value="&lt;!DOCTYPE NETSCAPE-Bookmark-file-1&gt;" type="string" offset="0:64"/>
++ <match type="string" value="&lt;!DOCTYPE NETSCAPE-Bookmark-file-1&gt;" offset="0:64"/>
+ </magic>
+ <alias type="application/x-netscape-bookmarks"/>
+ </mime-type>
+ <mime-type type="application/x-ms-dos-executable">
+ <comment>DOS/Windows executable</comment>
++ <comment xml:lang="af">DOS/Windows-uitvoerbaar</comment>
+ <comment xml:lang="ar">تنفيذي DOS/Windows</comment>
+- <comment xml:lang="be@latin">Vykonvalny fajł DOS/Windows</comment>
++ <comment xml:lang="be-Latn">Vykonvalny fajł DOS/Windows</comment>
+ <comment xml:lang="bg">Изпълним файл — DOS/Windows</comment>
+ <comment xml:lang="ca">executable de DOS o de Windows</comment>
+ <comment xml:lang="cs">spustitelný soubor pro DOS/Windows</comment>
+ <comment xml:lang="da">DOS-/Windowskørbar</comment>
+ <comment xml:lang="de">DOS/Windows-Programmdatei</comment>
+ <comment xml:lang="el">Εκτελέσιμο DOS/Windows</comment>
+- <comment xml:lang="en_GB">DOS/Windows executable</comment>
++ <comment xml:lang="en-GB">DOS/Windows executable</comment>
+ <comment xml:lang="eo">DOS/Windows-plenumebla</comment>
+ <comment xml:lang="es">ejecutable de DOS/Windows</comment>
+ <comment xml:lang="eu">DOS/Windows-eko exekutagarria</comment>
+ <comment xml:lang="fi">DOS/Windows-ohjelma</comment>
+ <comment xml:lang="fo">DOS/Windows inningarfør</comment>
+ <comment xml:lang="fr">exécutable DOS/Windows</comment>
++ <comment xml:lang="fur">eseguibil DOS/Windows</comment>
+ <comment xml:lang="ga">comhad inrite DOS/Windows</comment>
+ <comment xml:lang="gl">executábel de DOS/Windows</comment>
+ <comment xml:lang="he">קובץ בר־הרצה של DOS/חלונות</comment>
+@@ -16231,7 +16865,7 @@
+ <comment xml:lang="oc">executable DOS/Windows</comment>
+ <comment xml:lang="pl">Program DOS/Windows</comment>
+ <comment xml:lang="pt">executável DOS/Windows</comment>
+- <comment xml:lang="pt_BR">Executável do DOS/Windows</comment>
++ <comment xml:lang="pt-BR">Executável do DOS/Windows</comment>
+ <comment xml:lang="ro">Executabil DOS/Windows</comment>
+ <comment xml:lang="ru">Исполняемый файл DOS/Windows</comment>
+ <comment xml:lang="sk">Spustiteľný súbor pre DOS/Windows</comment>
+@@ -16239,33 +16873,35 @@
+ <comment xml:lang="sq">I ekzekutueshëm DOS/Windows</comment>
+ <comment xml:lang="sr">ДОС/Виндоуз извршна</comment>
+ <comment xml:lang="sv">Körbar DOS/Windows-fil</comment>
+- <comment xml:lang="tr">DOS/Windows çalıştırılabilir</comment>
++ <comment xml:lang="tr">DOS/Windows çalıştırılabiliri</comment>
+ <comment xml:lang="uk">виконуваний файл DOS/Windows</comment>
+ <comment xml:lang="vi">Tập tin có thực hiện được DOS/Windows</comment>
+- <comment xml:lang="zh_CN">DOS/Windows 可执行文件</comment>
+- <comment xml:lang="zh_TW">DOS/Windows 可執行檔</comment>
++ <comment xml:lang="zh-CN">DOS/Windows 可执行文件</comment>
++ <comment xml:lang="zh-TW">DOS/Windows 可執行檔</comment>
+ <generic-icon name="application-x-executable"/>
+ <magic priority="50">
+- <match value="MZ" type="string" offset="0"/>
++ <match type="string" value="MZ" offset="0"/>
+ </magic>
+ <glob pattern="*.exe"/>
+ </mime-type>
+ <mime-type type="application/x-mswinurl">
+ <comment>Internet shortcut</comment>
++ <comment xml:lang="af">Internet-kortpad</comment>
+ <comment xml:lang="ar">اختصار الإنترنت</comment>
+- <comment xml:lang="be@latin">Sieciŭnaja spasyłka</comment>
++ <comment xml:lang="be-Latn">Sieciŭnaja spasyłka</comment>
+ <comment xml:lang="bg">Адрес в Интернет</comment>
+ <comment xml:lang="ca">drecera d'Internet</comment>
+ <comment xml:lang="cs">odkaz do Internetu</comment>
+ <comment xml:lang="da">Internetgenvej</comment>
+ <comment xml:lang="de">Internet-Verweis</comment>
+ <comment xml:lang="el">Συντόμευση διαδικτύου</comment>
+- <comment xml:lang="en_GB">Internet shortcut</comment>
++ <comment xml:lang="en-GB">Internet shortcut</comment>
+ <comment xml:lang="es">acceso directo a Internet</comment>
+ <comment xml:lang="eu">Interneteko lasterbidea</comment>
+ <comment xml:lang="fi">Internet-pikakuvake</comment>
+ <comment xml:lang="fo">Alnetssnarvegur</comment>
+ <comment xml:lang="fr">raccourci Internet</comment>
++ <comment xml:lang="fur">scurte di internet</comment>
+ <comment xml:lang="ga">aicearra Idirlín</comment>
+ <comment xml:lang="gl">atallo de Internet</comment>
+ <comment xml:lang="he">קיצור דרך של האינטרנט</comment>
+@@ -16285,7 +16921,7 @@
+ <comment xml:lang="oc">acorchi Internet</comment>
+ <comment xml:lang="pl">Skrót internetowy</comment>
+ <comment xml:lang="pt">atalho da Internet</comment>
+- <comment xml:lang="pt_BR">Atalho da Internet</comment>
++ <comment xml:lang="pt-BR">Atalho da Internet</comment>
+ <comment xml:lang="ro">Scurtătură Internet</comment>
+ <comment xml:lang="ru">Интернет-ссылка</comment>
+ <comment xml:lang="sk">Internetový odkaz</comment>
+@@ -16296,34 +16932,36 @@
+ <comment xml:lang="tr">İnternet kısayolu</comment>
+ <comment xml:lang="uk">інтернет-посилання</comment>
+ <comment xml:lang="vi">Lối tắt Internet</comment>
+- <comment xml:lang="zh_CN">Internet 快捷方式</comment>
+- <comment xml:lang="zh_TW">網際網路捷徑</comment>
++ <comment xml:lang="zh-CN">Internet 快捷方式</comment>
++ <comment xml:lang="zh-TW">網際網路捷徑</comment>
+ <magic priority="50">
+- <match value="InternetShortcut" type="string" offset="1"/>
+- <match value="DEFAULT" type="string" offset="1">
+- <match value="BASEURL=" type="string" offset="11"/>
++ <match type="string" value="InternetShortcut" offset="1"/>
++ <match type="string" value="DEFAULT" offset="1">
++ <match type="string" value="BASEURL=" offset="11"/>
+ </match>
+ </magic>
+ <glob pattern="*.url"/>
+ </mime-type>
+ <mime-type type="application/x-mswrite">
+ <comment>WRI document</comment>
++ <comment xml:lang="af">WRI-dokument</comment>
+ <comment xml:lang="ar">مستند WRI</comment>
+ <comment xml:lang="ast">Documentu WRI</comment>
+- <comment xml:lang="be@latin">Dakument WRI</comment>
++ <comment xml:lang="be-Latn">Dakument WRI</comment>
+ <comment xml:lang="bg">Документ — WRI</comment>
+ <comment xml:lang="ca">document WRI</comment>
+ <comment xml:lang="cs">dokument WRI</comment>
+ <comment xml:lang="da">WRI-dokument</comment>
+ <comment xml:lang="de">WRI-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο WRI</comment>
+- <comment xml:lang="en_GB">WRI document</comment>
++ <comment xml:lang="en-GB">WRI document</comment>
+ <comment xml:lang="eo">WRI-dokumento</comment>
+ <comment xml:lang="es">documento WRI</comment>
+ <comment xml:lang="eu">WRI dokumentua</comment>
+ <comment xml:lang="fi">WRI-asiakirja</comment>
+ <comment xml:lang="fo">WRI skjal</comment>
+ <comment xml:lang="fr">document WRI</comment>
++ <comment xml:lang="fur">document WRI</comment>
+ <comment xml:lang="ga">cáipéis WRI</comment>
+ <comment xml:lang="gl">documento WRI</comment>
+ <comment xml:lang="he">מסמך WRI</comment>
+@@ -16343,7 +16981,7 @@
+ <comment xml:lang="oc">document WRI</comment>
+ <comment xml:lang="pl">Dokument WRI</comment>
+ <comment xml:lang="pt">documento WRI</comment>
+- <comment xml:lang="pt_BR">Documento WRI</comment>
++ <comment xml:lang="pt-BR">Documento WRI</comment>
+ <comment xml:lang="ro">Document WRI</comment>
+ <comment xml:lang="ru">Документ WRI</comment>
+ <comment xml:lang="sk">Dokument WRI</comment>
+@@ -16354,29 +16992,30 @@
+ <comment xml:lang="tr">WRI belgesi</comment>
+ <comment xml:lang="uk">документ WRI</comment>
+ <comment xml:lang="vi">Tài liệu WRI</comment>
+- <comment xml:lang="zh_CN">WRI 文档</comment>
+- <comment xml:lang="zh_TW">WRI 文件</comment>
++ <comment xml:lang="zh-CN">WRI 文档</comment>
++ <comment xml:lang="zh-TW">WRI 文件</comment>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.wri"/>
+ </mime-type>
+ <mime-type type="application/x-msx-rom">
+ <comment>MSX ROM</comment>
+ <comment xml:lang="ar">MSX ROM</comment>
+- <comment xml:lang="be@latin">MSX ROM</comment>
++ <comment xml:lang="be-Latn">MSX ROM</comment>
+ <comment xml:lang="bg">ROM — MSX</comment>
+ <comment xml:lang="ca">ROM de MSX</comment>
+ <comment xml:lang="cs">ROM pro MSX</comment>
+ <comment xml:lang="cy">ROM MSX</comment>
+- <comment xml:lang="da">MSX-rom</comment>
++ <comment xml:lang="da">MSX-ROM</comment>
+ <comment xml:lang="de">MSX ROM</comment>
+ <comment xml:lang="el">MSX ROM</comment>
+- <comment xml:lang="en_GB">MSX ROM</comment>
++ <comment xml:lang="en-GB">MSX ROM</comment>
+ <comment xml:lang="eo">MSX-NLM</comment>
+ <comment xml:lang="es">ROM de MSX</comment>
+ <comment xml:lang="eu">MSX-ko ROMa</comment>
+ <comment xml:lang="fi">MSX-ROM</comment>
+ <comment xml:lang="fo">MSX ROM</comment>
+ <comment xml:lang="fr">ROM MSX</comment>
++ <comment xml:lang="fur">ROM MSX</comment>
+ <comment xml:lang="ga">ROM MSX</comment>
+ <comment xml:lang="gl">ROM de MSX</comment>
+ <comment xml:lang="he">MSX ROM</comment>
+@@ -16398,7 +17037,7 @@
+ <comment xml:lang="oc">ROM MSX</comment>
+ <comment xml:lang="pl">Plik ROM konsoli MSX</comment>
+ <comment xml:lang="pt">ROM MSX</comment>
+- <comment xml:lang="pt_BR">ROM de MSX</comment>
++ <comment xml:lang="pt-BR">ROM de MSX</comment>
+ <comment xml:lang="ro">ROM MSX</comment>
+ <comment xml:lang="ru">MSX ROM</comment>
+ <comment xml:lang="sk">ROM pre MSX</comment>
+@@ -16409,27 +17048,29 @@
+ <comment xml:lang="tr">MSX ROM</comment>
+ <comment xml:lang="uk">ППП MSX</comment>
+ <comment xml:lang="vi">ROM MSX</comment>
+- <comment xml:lang="zh_CN">MSX ROM</comment>
+- <comment xml:lang="zh_TW">MSX ROM</comment>
++ <comment xml:lang="zh-CN">MSX ROM</comment>
++ <comment xml:lang="zh-TW">MSX ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.msx"/>
+ </mime-type>
+ <mime-type type="application/x-m4">
+ <comment>M4 macro</comment>
++ <comment xml:lang="af">M4-makro</comment>
+ <comment xml:lang="ar">M4 macro</comment>
+- <comment xml:lang="be@latin">Makras M4</comment>
++ <comment xml:lang="be-Latn">Makras M4</comment>
+ <comment xml:lang="bg">Макроси — M4</comment>
+ <comment xml:lang="ca">macro M4</comment>
+ <comment xml:lang="cs">makro M4</comment>
+ <comment xml:lang="da">M4-makro</comment>
+ <comment xml:lang="de">M4-Makro</comment>
+ <comment xml:lang="el">Μακροεντολή m4</comment>
+- <comment xml:lang="en_GB">M4 macro</comment>
++ <comment xml:lang="en-GB">M4 macro</comment>
+ <comment xml:lang="es">macro M4</comment>
+ <comment xml:lang="eu">M4 makroa</comment>
+ <comment xml:lang="fi">M4-makro</comment>
+ <comment xml:lang="fo">M4 fjølvi</comment>
+ <comment xml:lang="fr">macro M4</comment>
++ <comment xml:lang="fur">macro M4</comment>
+ <comment xml:lang="ga">macra M4</comment>
+ <comment xml:lang="gl">macro M4</comment>
+ <comment xml:lang="he">מאקרו M4</comment>
+@@ -16449,7 +17090,7 @@
+ <comment xml:lang="oc">macro M4</comment>
+ <comment xml:lang="pl">Makro M4</comment>
+ <comment xml:lang="pt">macro M4</comment>
+- <comment xml:lang="pt_BR">Macro M4</comment>
++ <comment xml:lang="pt-BR">Macro M4</comment>
+ <comment xml:lang="ro">Macro M4</comment>
+ <comment xml:lang="ru">Макрос M4</comment>
+ <comment xml:lang="sk">Makro M4</comment>
+@@ -16460,8 +17101,8 @@
+ <comment xml:lang="tr">M4 makrosu</comment>
+ <comment xml:lang="uk">макрос M4</comment>
+ <comment xml:lang="vi">Vĩ lệnh M4</comment>
+- <comment xml:lang="zh_CN">M4 宏</comment>
+- <comment xml:lang="zh_TW">M4 巨集</comment>
++ <comment xml:lang="zh-CN">M4 宏</comment>
++ <comment xml:lang="zh-TW">M4 巨集</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-script"/>
+ <glob pattern="*.m4"/>
+@@ -16469,20 +17110,21 @@
+ <mime-type type="application/x-n64-rom">
+ <comment>Nintendo64 ROM</comment>
+ <comment xml:lang="ar">Nintendo64 ROM</comment>
+- <comment xml:lang="be@latin">Nintendo64 ROM</comment>
++ <comment xml:lang="be-Latn">Nintendo64 ROM</comment>
+ <comment xml:lang="bg">ROM — Nintendo64</comment>
+ <comment xml:lang="ca">ROM de Nintendo64</comment>
+ <comment xml:lang="cs">ROM pro Nintendo64</comment>
+- <comment xml:lang="da">Nintendo64-rom</comment>
++ <comment xml:lang="da">Nintendo64-ROM</comment>
+ <comment xml:lang="de">Nintendo64 ROM</comment>
+ <comment xml:lang="el">Nintendo64 ROM</comment>
+- <comment xml:lang="en_GB">Nintendo64 ROM</comment>
++ <comment xml:lang="en-GB">Nintendo64 ROM</comment>
+ <comment xml:lang="eo">Nintendo64-NLM</comment>
+ <comment xml:lang="es">ROM de Nintendo64</comment>
+ <comment xml:lang="eu">Nintendo64-ko ROMa</comment>
+ <comment xml:lang="fi">Nintendo64-ROM</comment>
+ <comment xml:lang="fo">Nintendo64 ROM</comment>
+ <comment xml:lang="fr">ROM Nintendo64</comment>
++ <comment xml:lang="fur">ROM Nintendo64</comment>
+ <comment xml:lang="ga">ROM Nintendo64</comment>
+ <comment xml:lang="gl">ROM de Nintendo64</comment>
+ <comment xml:lang="he">ROM של Nintendo64</comment>
+@@ -16503,7 +17145,7 @@
+ <comment xml:lang="oc">ROM Nintendo64</comment>
+ <comment xml:lang="pl">Plik ROM konsoli Nintendo64</comment>
+ <comment xml:lang="pt">ROM Nintendo64</comment>
+- <comment xml:lang="pt_BR">ROM de Nintendo64</comment>
++ <comment xml:lang="pt-BR">ROM de Nintendo64</comment>
+ <comment xml:lang="ro">ROM Nintendo64</comment>
+ <comment xml:lang="ru">Nintendo64 ROM</comment>
+ <comment xml:lang="sk">ROM pre Nintendo64</comment>
+@@ -16514,26 +17156,27 @@
+ <comment xml:lang="tr">Nintendo64 ROM</comment>
+ <comment xml:lang="uk">ППП Nintendo64</comment>
+ <comment xml:lang="vi">ROM Nintendo64</comment>
+- <comment xml:lang="zh_CN">任天堂 64 ROM</comment>
+- <comment xml:lang="zh_TW">Nintendo64 ROM</comment>
++ <comment xml:lang="zh-CN">任天堂 64 ROM</comment>
++ <comment xml:lang="zh-TW">Nintendo64 ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.n64"/>
+ <glob pattern="*.z64"/>
+ <glob pattern="*.v64"/>
+ <magic>
+-
+- <match value="0x80371240" type="big32" offset="0"/>
+-
+- <match value="0x37804012" type="big32" offset="0"/>
+-
+- <match value="0x40123780" type="big32" offset="0"/>
++ <!-- native *.z64 -->
++ <match type="big32" offset="0" value="0x80371240"/>
++ <!-- byteswapped [BADC] *.v64 -->
++ <match type="big32" offset="0" value="0x37804012"/>
++ <!-- wordswapped [DCBA] *.n64 -->
++ <match type="big32" offset="0" value="0x40123780"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-nautilus-link">
+ <comment>Nautilus link</comment>
++ <comment xml:lang="af">Nautilus-skakel</comment>
+ <comment xml:lang="ar">وصلة Nautilus</comment>
+ <comment xml:lang="az">Nautilus körpüsü</comment>
+- <comment xml:lang="be@latin">Spasyłka Nautilus</comment>
++ <comment xml:lang="be-Latn">Spasyłka Nautilus</comment>
+ <comment xml:lang="bg">Връзка — Nautilus</comment>
+ <comment xml:lang="ca">enllaç de Nautilus</comment>
+ <comment xml:lang="cs">odkaz Nautilus</comment>
+@@ -16541,13 +17184,14 @@
+ <comment xml:lang="da">Nautilus-henvisning</comment>
+ <comment xml:lang="de">Nautilus-Verknüpfung</comment>
+ <comment xml:lang="el">Σύνδεσμος Nautilus</comment>
+- <comment xml:lang="en_GB">Nautilus link</comment>
++ <comment xml:lang="en-GB">Nautilus link</comment>
+ <comment xml:lang="eo">Nautilus-ligilo</comment>
+ <comment xml:lang="es">enlace de Nautilus</comment>
+ <comment xml:lang="eu">Nautilus esteka</comment>
+ <comment xml:lang="fi">Nautilus-linkki</comment>
+ <comment xml:lang="fo">Nautilus leinkja</comment>
+ <comment xml:lang="fr">lien Nautilus</comment>
++ <comment xml:lang="fur">colegament Nautilus</comment>
+ <comment xml:lang="ga">nasc Nautilus</comment>
+ <comment xml:lang="gl">ligazón de nautilus</comment>
+ <comment xml:lang="he">קישור של Nautilus</comment>
+@@ -16568,7 +17212,7 @@
+ <comment xml:lang="oc">ligam Nautilus</comment>
+ <comment xml:lang="pl">Odnośnik Nautilus</comment>
+ <comment xml:lang="pt">atalho Nautilus</comment>
+- <comment xml:lang="pt_BR">Link do Nautilus</comment>
++ <comment xml:lang="pt-BR">Link do Nautilus</comment>
+ <comment xml:lang="ro">Legătură Nautilus</comment>
+ <comment xml:lang="ru">Ссылка Nautilus</comment>
+ <comment xml:lang="sk">Odkaz Nautilus</comment>
+@@ -16579,25 +17223,27 @@
+ <comment xml:lang="tr">Nautilus bağlantısı</comment>
+ <comment xml:lang="uk">посилання Nautilus</comment>
+ <comment xml:lang="vi">Liên kết Nautilus</comment>
+- <comment xml:lang="zh_CN">Nautilus 链接</comment>
+- <comment xml:lang="zh_TW">Nautilus 鏈結</comment>
++ <comment xml:lang="zh-CN">Nautilus 链接</comment>
++ <comment xml:lang="zh-TW">Nautilus 連結</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-generic"/>
+ <magic priority="50">
+- <match value="&lt;nautilus_object nautilus_link" type="string" offset="0:32"/>
++ <match type="string" value="&lt;nautilus_object nautilus_link" offset="0:32"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-neo-geo-pocket-rom">
+ <comment>Neo-Geo Pocket ROM</comment>
++ <comment xml:lang="bg">ROM — Neo-Geo Pocket</comment>
+ <comment xml:lang="ca">ROM de Neo-Geo Pocket</comment>
+ <comment xml:lang="cs">ROM pro Neo-Geo Pocket</comment>
+- <comment xml:lang="da">Neo-Geo Pocket ROM</comment>
++ <comment xml:lang="da">Neo-Geo Pocket-ROM</comment>
+ <comment xml:lang="de">Neo-Geo Pocket ROM</comment>
+- <comment xml:lang="en_GB">Neo-Geo Pocket ROM</comment>
++ <comment xml:lang="en-GB">Neo-Geo Pocket ROM</comment>
+ <comment xml:lang="es">ROM de Neo-Geo Pocket</comment>
+ <comment xml:lang="eu">Neo-Geo Pocket ROM</comment>
+ <comment xml:lang="fi">Neo-Geo Pocket -ROM</comment>
+ <comment xml:lang="fr">ROM Neo-Geo Pocket</comment>
++ <comment xml:lang="fur">ROM Neo-Geo Pocket</comment>
+ <comment xml:lang="ga">ROM Neo-Geo Pocket</comment>
+ <comment xml:lang="hr">Neo-Geo Pocket ROM</comment>
+ <comment xml:lang="hu">Neo-Geo Pocket ROM</comment>
+@@ -16606,54 +17252,82 @@
+ <comment xml:lang="kk">Neo-Geo Pocket ROM</comment>
+ <comment xml:lang="ko">네오지오 포켓 롬</comment>
+ <comment xml:lang="pl">Plik ROM konsoli Neo-Geo Pocket</comment>
+- <comment xml:lang="pt_BR">ROM de Neo-Geo Pocket</comment>
++ <comment xml:lang="pt-BR">ROM de Neo-Geo Pocket</comment>
+ <comment xml:lang="ru">Neo-Geo Pocket ROM</comment>
+ <comment xml:lang="sk">ROM pre Neo-Geo Pocket</comment>
+ <comment xml:lang="sr">Нео-Гео Покет РОМ</comment>
+ <comment xml:lang="sv">Neo-Geo Pocket-rom</comment>
+ <comment xml:lang="tr">Neo-Geo Pocket ROM</comment>
+ <comment xml:lang="uk">ППП Neo-Geo Pocket</comment>
+- <comment xml:lang="zh_CN">Neo-Geo Pocket ROM</comment>
+- <comment xml:lang="zh_TW">Neo-Geo Pocket ROM</comment>
++ <comment xml:lang="zh-CN">Neo-Geo Pocket ROM</comment>
++ <comment xml:lang="zh-TW">Neo-Geo Pocket ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.ngp"/>
+ <magic>
+- <match value="0x0" type="byte" offset="35">
+- <match value="COPYRIGHT BY SNK CORPORATION" type="string" offset="0"/>
+- <match value=" LICENSED BY SNK CORPORATION" type="string" offset="0"/>
++ <match offset="35" type="byte" value="0x0">
++ <match offset="0" type="string" value="COPYRIGHT BY SNK CORPORATION"/>
++ <match offset="0" type="string" value=" LICENSED BY SNK CORPORATION"/>
+ </match>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-neo-geo-pocket-color-rom">
+ <comment>Neo-Geo Pocket Color ROM</comment>
++ <comment xml:lang="bg">ROM — Neo-Geo Pocket Color</comment>
++ <comment xml:lang="ca">ROM de Neo-Geo Pocket Color</comment>
++ <comment xml:lang="cs">ROM pro Neo-Geo Pocket Color</comment>
++ <comment xml:lang="da">Neo-Geo Pocket Color-ROM</comment>
++ <comment xml:lang="de">Neo-Geo Pocket Color ROM</comment>
++ <comment xml:lang="en-GB">Neo-Geo Pocket Colour ROM</comment>
++ <comment xml:lang="es">ROM de Neo-Geo Pocket Color</comment>
++ <comment xml:lang="eu">Neo-Geo Pocket Color ROM</comment>
++ <comment xml:lang="fi">Neo-Geo Pocket Color ROM</comment>
++ <comment xml:lang="fr">ROM Neo-Geo Pocket Color</comment>
++ <comment xml:lang="fur">ROM Neo-Geo Pocket Color</comment>
++ <comment xml:lang="ga">ROM datha Neo-Geo Pocket</comment>
++ <comment xml:lang="hr">Neo-Geo Pocket Color ROM</comment>
++ <comment xml:lang="hu">Neo-Geo Pocket Color ROM</comment>
++ <comment xml:lang="id">ROM Neo-Geo Pocket Color</comment>
++ <comment xml:lang="it">ROM Neo-Geo Pocket Color</comment>
++ <comment xml:lang="kk">Neo-Geo Pocket Color ROM</comment>
++ <comment xml:lang="ko">네오지오 포켓 컬러 롬</comment>
++ <comment xml:lang="pl">Plik ROM konsoli Neo-Geo Pocket Color</comment>
++ <comment xml:lang="pt-BR">ROM de Neo-Geo Pocket Color</comment>
++ <comment xml:lang="ru">Neo-Geo Pocket Color ROM</comment>
++ <comment xml:lang="sk">ROM pre Neo-Geo Pocket Color</comment>
++ <comment xml:lang="sv">Neo-Geo Pocket Color ROM</comment>
++ <comment xml:lang="tr">Neo-Geo Pocket Color ROM</comment>
++ <comment xml:lang="uk">ППП Neo-Geo Pocket Color</comment>
++ <comment xml:lang="zh-CN">Neo-Geo Pocket Color ROM</comment>
++ <comment xml:lang="zh-TW">Neo-Geo Pocket Color ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.ngc"/>
+ <magic>
+- <match value="0x10" type="byte" offset="35">
+- <match value="COPYRIGHT BY SNK CORPORATION" type="string" offset="0"/>
+- <match value=" LICENSED BY SNK CORPORATION" type="string" offset="0"/>
++ <match offset="35" type="byte" value="0x10">
++ <match offset="0" type="string" value="COPYRIGHT BY SNK CORPORATION"/>
++ <match offset="0" type="string" value=" LICENSED BY SNK CORPORATION"/>
+ </match>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-nes-rom">
+-
++ <!-- Translate this to Famicom if the console was known as such in your locale -->
+ <comment>NES ROM</comment>
+ <comment xml:lang="ar">NES ROM</comment>
+- <comment xml:lang="be@latin">NES ROM</comment>
++ <comment xml:lang="be-Latn">NES ROM</comment>
+ <comment xml:lang="bg">ROM — NES</comment>
+ <comment xml:lang="ca">ROM de NES</comment>
+ <comment xml:lang="cs">ROM pro NES</comment>
+ <comment xml:lang="cy">ROM NES</comment>
+- <comment xml:lang="da">NES-rom</comment>
++ <comment xml:lang="da">NES-ROM</comment>
+ <comment xml:lang="de">NES ROM</comment>
+ <comment xml:lang="el">NES ROM</comment>
+- <comment xml:lang="en_GB">NES ROM</comment>
++ <comment xml:lang="en-GB">NES ROM</comment>
+ <comment xml:lang="eo">NES-NLM</comment>
+ <comment xml:lang="es">ROM de NES</comment>
+ <comment xml:lang="eu">NES-eko ROMa</comment>
+ <comment xml:lang="fi">NES-ROM</comment>
+ <comment xml:lang="fo">NES ROM</comment>
+ <comment xml:lang="fr">ROM NES</comment>
++ <comment xml:lang="fur">ROM NES</comment>
+ <comment xml:lang="ga">ROM NES</comment>
+ <comment xml:lang="gl">ROM de NES</comment>
+ <comment xml:lang="he">ROM של NES</comment>
+@@ -16674,7 +17348,7 @@
+ <comment xml:lang="oc">ROM NES</comment>
+ <comment xml:lang="pl">Plik ROM konsoli NES</comment>
+ <comment xml:lang="pt">ROM NES</comment>
+- <comment xml:lang="pt_BR">ROM de NES</comment>
++ <comment xml:lang="pt-BR">ROM de NES</comment>
+ <comment xml:lang="ro">ROM NES</comment>
+ <comment xml:lang="ru">NES ROM</comment>
+ <comment xml:lang="sk">ROM pre NES</comment>
+@@ -16685,8 +17359,8 @@
+ <comment xml:lang="tr">NES ROM</comment>
+ <comment xml:lang="uk">ППП NES</comment>
+ <comment xml:lang="vi">ROM NES</comment>
+- <comment xml:lang="zh_CN">NES ROM</comment>
+- <comment xml:lang="zh_TW">任天堂 ROM</comment>
++ <comment xml:lang="zh-CN">NES ROM</comment>
++ <comment xml:lang="zh-TW">任天堂紅白機 ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.nes"/>
+ <glob pattern="*.nez"/>
+@@ -16697,20 +17371,21 @@
+ <comment>Unidata NetCDF document</comment>
+ <comment xml:lang="ar">مستند Unidata NetCDF</comment>
+ <comment xml:lang="ast">Documentu NetCDF d'Unidata</comment>
+- <comment xml:lang="be@latin">Dakument Unidata NetCDF</comment>
++ <comment xml:lang="be-Latn">Dakument Unidata NetCDF</comment>
+ <comment xml:lang="bg">Документ — Unidata NetCDF</comment>
+ <comment xml:lang="ca">document d'Unidata NetCDF</comment>
+ <comment xml:lang="cs">dokument Unidata NetCDF</comment>
+ <comment xml:lang="da">Unidata NetCDF-dokument</comment>
+ <comment xml:lang="de">Unidata-NetCDF-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Unidata NetCDF</comment>
+- <comment xml:lang="en_GB">Unidata NetCDF document</comment>
++ <comment xml:lang="en-GB">Unidata NetCDF document</comment>
+ <comment xml:lang="eo">dokumento en NetCDF-formato de Unidata</comment>
+ <comment xml:lang="es">documento de Unidata NetCDF</comment>
+ <comment xml:lang="eu">Unidata NetCDF dokumentua</comment>
+ <comment xml:lang="fi">Unidata NetCDF -asiakirja</comment>
+ <comment xml:lang="fo">Unidata NetCDF skjal</comment>
+ <comment xml:lang="fr">document Unidata NetCDF</comment>
++ <comment xml:lang="fur">document Unidata NetCDF</comment>
+ <comment xml:lang="ga">cáipéis Unidata NetCDF</comment>
+ <comment xml:lang="gl">Documentno de Unixdata NetCDF</comment>
+ <comment xml:lang="he">מסמך של Unidata NetCDF</comment>
+@@ -16731,7 +17406,7 @@
+ <comment xml:lang="oc">document Unidata NetCDF</comment>
+ <comment xml:lang="pl">Dokument Unidata NetCDF</comment>
+ <comment xml:lang="pt">documento Unidata NetCDF</comment>
+- <comment xml:lang="pt_BR">Documento do Unidata NetCDF</comment>
++ <comment xml:lang="pt-BR">Documento do Unidata NetCDF</comment>
+ <comment xml:lang="ro">Document Unidata NetCDF</comment>
+ <comment xml:lang="ru">Документ Unidata NetCDF</comment>
+ <comment xml:lang="sk">Dokument Unidata NetCDF</comment>
+@@ -16742,8 +17417,8 @@
+ <comment xml:lang="tr">Unidata NetCDF belgesi</comment>
+ <comment xml:lang="uk">документ Unidata NetCDF</comment>
+ <comment xml:lang="vi">Tài liệu NetCDF Unidata</comment>
+- <comment xml:lang="zh_CN">Unidata NetCDF 文档</comment>
+- <comment xml:lang="zh_TW">Unidata NetCDF 文件</comment>
++ <comment xml:lang="zh-CN">Unidata NetCDF 文档</comment>
++ <comment xml:lang="zh-TW">Unidata NetCDF 文件</comment>
+ <acronym>NetCDF</acronym>
+ <expanded-acronym>Network Common Data Form</expanded-acronym>
+ <generic-icon name="x-office-document"/>
+@@ -16755,13 +17430,15 @@
+ <comment xml:lang="bg">Индекс — Usenet, NewzBin</comment>
+ <comment xml:lang="ca">índex d'Usenet NewzBin</comment>
+ <comment xml:lang="cs">index NewzBin diskuzních skupin Usenet</comment>
+- <comment xml:lang="da">NewzBin-brugernetindex</comment>
++ <comment xml:lang="da">NewzBin usenet-indeks</comment>
+ <comment xml:lang="de">NewzBin-Usenet-Index</comment>
+ <comment xml:lang="el">Ευρετήριο usenet NewzBin</comment>
+- <comment xml:lang="en_GB">NewzBin usenet index</comment>
++ <comment xml:lang="en-GB">NewzBin usenet index</comment>
+ <comment xml:lang="es">índice NewzBin de usenet</comment>
+ <comment xml:lang="eu">NewzBin usenet indizea</comment>
++ <comment xml:lang="fi">NewzBin usenet indeksi</comment>
+ <comment xml:lang="fr">index usenet </comment>
++ <comment xml:lang="fur">tabele usenet NewzBin</comment>
+ <comment xml:lang="ga">innéacs usenet NewzBin</comment>
+ <comment xml:lang="gl">Índice de usenet NEwzBin</comment>
+ <comment xml:lang="he">אינדקס שרתי חדשות NewzBin</comment>
+@@ -16778,7 +17455,7 @@
+ <comment xml:lang="oc">indèx usenet NewzBin</comment>
+ <comment xml:lang="pl">Indeks grup dyskusyjnych NewzBin</comment>
+ <comment xml:lang="pt">índice usenet NewzBin</comment>
+- <comment xml:lang="pt_BR">Índice de usenet NewzBin</comment>
++ <comment xml:lang="pt-BR">Índice de usenet NewzBin</comment>
+ <comment xml:lang="ru">Индекс usenet NewzBin</comment>
+ <comment xml:lang="sk">Index Usenetu NewzBin</comment>
+ <comment xml:lang="sl">Kazalo usenet NewzBin</comment>
+@@ -16786,30 +17463,32 @@
+ <comment xml:lang="sv">NewzBin-usenetindex</comment>
+ <comment xml:lang="tr">NewzBin usenet dizini</comment>
+ <comment xml:lang="uk">покажчик usenet NewzBin</comment>
+- <comment xml:lang="zh_CN">NewzBin Usenet 索引</comment>
+- <comment xml:lang="zh_TW">NewzBin usenet 索引</comment>
++ <comment xml:lang="zh-CN">NewzBin Usenet 索引</comment>
++ <comment xml:lang="zh-TW">NewzBin usenet 索引</comment>
+ <sub-class-of type="application/xml"/>
+ <magic priority="80">
+- <match value="&lt;nzb" type="string" offset="0:256"/>
++ <match type="string" value="&lt;nzb" offset="0:256"/>
+ </magic>
+ <glob pattern="*.nzb"/>
+ </mime-type>
+ <mime-type type="application/x-object">
+ <comment>object code</comment>
++ <comment xml:lang="af">objekkode</comment>
+ <comment xml:lang="ar">رمز الكائن</comment>
+- <comment xml:lang="be@latin">abjektny kod</comment>
++ <comment xml:lang="be-Latn">abjektny kod</comment>
+ <comment xml:lang="bg">Обектен код</comment>
+ <comment xml:lang="ca">codi objecte</comment>
+ <comment xml:lang="cs">objektový kód</comment>
+ <comment xml:lang="da">objektkode</comment>
+ <comment xml:lang="de">Objektcode</comment>
+ <comment xml:lang="el">Μεταφρασμένος κώδικας</comment>
+- <comment xml:lang="en_GB">object code</comment>
++ <comment xml:lang="en-GB">object code</comment>
+ <comment xml:lang="eo">celkodo</comment>
+ <comment xml:lang="es">código objeto</comment>
+ <comment xml:lang="eu">objektu kodea</comment>
+ <comment xml:lang="fi">objektikoodi</comment>
+ <comment xml:lang="fr">code objet</comment>
++ <comment xml:lang="fur">codiç ogjet</comment>
+ <comment xml:lang="ga">cód réada</comment>
+ <comment xml:lang="gl">código obxecto</comment>
+ <comment xml:lang="he">קוד אובייקט</comment>
+@@ -16830,7 +17509,7 @@
+ <comment xml:lang="oc">còde objet</comment>
+ <comment xml:lang="pl">Kod obiektowy</comment>
+ <comment xml:lang="pt">código de objeto</comment>
+- <comment xml:lang="pt_BR">Código-objeto</comment>
++ <comment xml:lang="pt-BR">Código-objeto</comment>
+ <comment xml:lang="ro">cod sursă obiect</comment>
+ <comment xml:lang="ru">Объектный код</comment>
+ <comment xml:lang="sk">Objektový kód</comment>
+@@ -16841,18 +17520,18 @@
+ <comment xml:lang="tr">nesne kodu</comment>
+ <comment xml:lang="uk">об'єктний код</comment>
+ <comment xml:lang="vi">mã đối tượng</comment>
+- <comment xml:lang="zh_CN">目标代码</comment>
+- <comment xml:lang="zh_TW">目的碼</comment>
++ <comment xml:lang="zh-CN">目标代码</comment>
++ <comment xml:lang="zh-TW">目的碼</comment>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="\177ELF" type="string" offset="0">
+- <match value="1" type="byte" offset="5">
+- <match value="1" type="little16" offset="16"/>
++ <match type="string" value="\177ELF" offset="0">
++ <match type="byte" value="1" offset="5">
++ <match type="little16" value="1" offset="16"/>
+ </match>
+ </match>
+- <match value="\177ELF" type="string" offset="0">
+- <match value="2" type="byte" offset="5">
+- <match value="1" type="big16" offset="16"/>
++ <match type="string" value="\177ELF" offset="0">
++ <match type="byte" value="2" offset="5">
++ <match type="big16" value="1" offset="16"/>
+ </match>
+ </match>
+ </magic>
+@@ -16867,12 +17546,13 @@
+ <comment xml:lang="da">Udvekslingsformat for Annodex</comment>
+ <comment xml:lang="de">Annodex-Wechselformat</comment>
+ <comment xml:lang="el">Μορφή ανταλλαγής Annodex</comment>
+- <comment xml:lang="en_GB">Annodex exchange format</comment>
++ <comment xml:lang="en-GB">Annodex exchange format</comment>
+ <comment xml:lang="es">formato de intercambio de Annodex</comment>
+ <comment xml:lang="eu">Annodex trukatze-formatua</comment>
+ <comment xml:lang="fi">Annodex-siirtomuoto</comment>
+ <comment xml:lang="fo">Annodex umbýtingarsnið</comment>
+ <comment xml:lang="fr">format d'échange Annodex</comment>
++ <comment xml:lang="fur">formât di scambi Annodex</comment>
+ <comment xml:lang="ga">formáid mhalairte Annodex</comment>
+ <comment xml:lang="gl">formato intercambiábel de Annodex</comment>
+ <comment xml:lang="he">תבנית החלפת Annodex</comment>
+@@ -16891,7 +17571,7 @@
+ <comment xml:lang="oc">format d'escambi Annodex</comment>
+ <comment xml:lang="pl">Format wymiany Annodex</comment>
+ <comment xml:lang="pt">formato de troca Annodex</comment>
+- <comment xml:lang="pt_BR">Formato de troca Annodex</comment>
++ <comment xml:lang="pt-BR">Formato de troca Annodex</comment>
+ <comment xml:lang="ro">Format schimb Annodex</comment>
+ <comment xml:lang="ru">Формат обмена Annodex</comment>
+ <comment xml:lang="sk">Formát pre výmenu Annodex</comment>
+@@ -16901,13 +17581,13 @@
+ <comment xml:lang="tr">Annodex değişim biçimi</comment>
+ <comment xml:lang="uk">формат обміну даними Annodex</comment>
+ <comment xml:lang="vi">Định dạng trao đổi Annodex</comment>
+- <comment xml:lang="zh_CN">Annodex 交换格式</comment>
+- <comment xml:lang="zh_TW">Annodex 交換格式</comment>
++ <comment xml:lang="zh-CN">Annodex 交换格式</comment>
++ <comment xml:lang="zh-TW">Annodex 交換格式</comment>
+ <generic-icon name="video-x-generic"/>
+ <magic priority="50">
+- <match value="OggS" type="string" offset="0">
+- <match value="fishead\0" type="string" offset="28">
+- <match value="CMML\0\0\0\0" type="string" offset="56:512"/>
++ <match type="string" value="OggS" offset="0">
++ <match type="string" value="fishead\0" offset="28">
++ <match type="string" value="CMML\0\0\0\0" offset="56:512"/>
+ </match>
+ </match>
+ </magic>
+@@ -16915,57 +17595,35 @@
+ <alias type="application/x-annodex"/>
+ </mime-type>
+ <mime-type type="video/annodex">
+- <comment>Annodex Video</comment>
+- <comment xml:lang="ar">Annodex مرئي</comment>
+- <comment xml:lang="ast">Videu n'Annodex</comment>
++ <comment>Annodex video</comment>
+ <comment xml:lang="bg">Видео — Annodex</comment>
+- <comment xml:lang="ca">Annodex Video</comment>
+- <comment xml:lang="cs">video Annodex</comment>
+- <comment xml:lang="da">Annodexvideo</comment>
++ <comment xml:lang="ca">vídeo Annodex</comment>
++ <comment xml:lang="da">Annodex-video</comment>
+ <comment xml:lang="de">Annodex-Video</comment>
+- <comment xml:lang="el">Βίντεο Annodex</comment>
+- <comment xml:lang="en_GB">Annodex Video</comment>
+- <comment xml:lang="eo">Annodex-video</comment>
++ <comment xml:lang="en-GB">Annodex video</comment>
+ <comment xml:lang="es">vídeo Annodex</comment>
+ <comment xml:lang="eu">Annodex bideoa</comment>
+- <comment xml:lang="fi">Annodex-video</comment>
+- <comment xml:lang="fo">Annodex video</comment>
++ <comment xml:lang="fi">Annodex video</comment>
+ <comment xml:lang="fr">vidéo Annodex</comment>
+- <comment xml:lang="ga">Físeán Annodex</comment>
+- <comment xml:lang="gl">vídeo de Annodex</comment>
+- <comment xml:lang="he">וידאו Annodex</comment>
+ <comment xml:lang="hr">Annodex video snimka</comment>
+ <comment xml:lang="hu">Annodex videó</comment>
+- <comment xml:lang="ia">Video Annodex</comment>
+ <comment xml:lang="id">Video Annodex</comment>
+ <comment xml:lang="it">Video Annodex</comment>
+- <comment xml:lang="ja">Annodex 動画</comment>
+- <comment xml:lang="ka">Annodex-ის ვიდეო</comment>
+ <comment xml:lang="kk">Annodex видеосы</comment>
+ <comment xml:lang="ko">Annodex 동영상</comment>
+- <comment xml:lang="lt">Annodex vaizdo įrašas</comment>
+- <comment xml:lang="lv">Annodex video</comment>
+- <comment xml:lang="nl">Annodex Video</comment>
+- <comment xml:lang="oc">vidèo Annodex</comment>
+ <comment xml:lang="pl">Plik wideo Annodex</comment>
+- <comment xml:lang="pt">vídeo Annodex</comment>
+- <comment xml:lang="pt_BR">Vídeo Annodex</comment>
+- <comment xml:lang="ro">Video Annodex</comment>
++ <comment xml:lang="pt-BR">Vídeo Annodex</comment>
+ <comment xml:lang="ru">Видео Annodex</comment>
+- <comment xml:lang="sk">Video Annodex</comment>
+- <comment xml:lang="sl">Video datoteka Annodex</comment>
+- <comment xml:lang="sr">Анодекс видео</comment>
+ <comment xml:lang="sv">Annodex-video</comment>
+- <comment xml:lang="tr">Annodex Video</comment>
+- <comment xml:lang="uk">відеокліп Annodex</comment>
+- <comment xml:lang="vi">Ảnh động Annodex</comment>
+- <comment xml:lang="zh_CN">Annodex 视频</comment>
+- <comment xml:lang="zh_TW">Annodex 視訊</comment>
++ <comment xml:lang="tr">Annodex video</comment>
++ <comment xml:lang="uk">відео Annodex</comment>
++ <comment xml:lang="zh-CN">Annodex 视频</comment>
++ <comment xml:lang="zh-TW">Annodex 視訊</comment>
+ <sub-class-of type="application/annodex"/>
+ <magic priority="50">
+- <match value="OggS" type="string" offset="0">
+- <match value="fishead\0" type="string" offset="28">
+- <match value="CMML\0\0\0\0" type="string" offset="56:512"/>
++ <match type="string" value="OggS" offset="0">
++ <match type="string" value="fishead\0" offset="28">
++ <match type="string" value="CMML\0\0\0\0" offset="56:512"/>
+ </match>
+ </match>
+ </magic>
+@@ -16973,56 +17631,35 @@
+ <alias type="video/x-annodex"/>
+ </mime-type>
+ <mime-type type="audio/annodex">
+- <comment>Annodex Audio</comment>
+- <comment xml:lang="ar">Annodex سمعي</comment>
++ <comment>Annodex audio</comment>
+ <comment xml:lang="bg">Аудио — Annodex</comment>
+- <comment xml:lang="ca">Annodex Audio</comment>
+- <comment xml:lang="cs">zvuk Annodex</comment>
+- <comment xml:lang="da">Annodexlyd</comment>
++ <comment xml:lang="ca">àudio Annodex</comment>
++ <comment xml:lang="da">Annodex-lyd</comment>
+ <comment xml:lang="de">Annodex-Audio</comment>
+- <comment xml:lang="el">Ήχος Annodex</comment>
+- <comment xml:lang="en_GB">Annodex Audio</comment>
+- <comment xml:lang="eo">Annodex-sondosiero</comment>
+- <comment xml:lang="es">sonido Annodex</comment>
++ <comment xml:lang="en-GB">Annodex audio</comment>
++ <comment xml:lang="es">audio Annodex</comment>
+ <comment xml:lang="eu">Annodex audioa</comment>
+- <comment xml:lang="fi">Annodex-ääni</comment>
+- <comment xml:lang="fo">Annodex ljóður</comment>
++ <comment xml:lang="fi">Annodex ääni</comment>
+ <comment xml:lang="fr">audio Annodex</comment>
+- <comment xml:lang="ga">Fuaim Annodex</comment>
+- <comment xml:lang="gl">son de Annodex</comment>
+- <comment xml:lang="he">שמע Annodex</comment>
+ <comment xml:lang="hr">Annodex zvučni zapis</comment>
+ <comment xml:lang="hu">Annodex hang</comment>
+- <comment xml:lang="ia">Audio Annodex</comment>
+ <comment xml:lang="id">Audio Annodex</comment>
+ <comment xml:lang="it">Audio Annodex</comment>
+- <comment xml:lang="ja">Annodex オーディオ</comment>
+- <comment xml:lang="ka">Annodex-ის აუდიო</comment>
+ <comment xml:lang="kk">Annodex аудиосы</comment>
+ <comment xml:lang="ko">Annodex 오디오</comment>
+- <comment xml:lang="lt">Annodex garso įrašas</comment>
+- <comment xml:lang="lv">Annodex audio</comment>
+- <comment xml:lang="nl">Annodex Audio</comment>
+- <comment xml:lang="oc">àudio Annodex</comment>
+ <comment xml:lang="pl">Plik dźwiękowy Annodex</comment>
+- <comment xml:lang="pt">áudio Annodex</comment>
+- <comment xml:lang="pt_BR">Áudio Annodex</comment>
+- <comment xml:lang="ro">Audio Annodex</comment>
++ <comment xml:lang="pt-BR">Áudio Annodex</comment>
+ <comment xml:lang="ru">Аудио Annodex</comment>
+- <comment xml:lang="sk">Zvuk Annodex</comment>
+- <comment xml:lang="sl">Zvočna datoteka Annodex</comment>
+- <comment xml:lang="sr">Анодекс аудио</comment>
+ <comment xml:lang="sv">Annodex-ljud</comment>
+- <comment xml:lang="tr">Annodex Sesi</comment>
++ <comment xml:lang="tr">Annodex sesi</comment>
+ <comment xml:lang="uk">звук Annodex</comment>
+- <comment xml:lang="vi">Âm thanh Annodex</comment>
+- <comment xml:lang="zh_CN">Annodex 音频</comment>
+- <comment xml:lang="zh_TW">Annodex 音訊</comment>
++ <comment xml:lang="zh-CN">Annodex 音频</comment>
++ <comment xml:lang="zh-TW">Annodex 音訊</comment>
+ <sub-class-of type="application/annodex"/>
+ <magic priority="50">
+- <match value="OggS" type="string" offset="0">
+- <match value="fishead\0" type="string" offset="28">
+- <match value="CMML\0\0\0\0" type="string" offset="56:512"/>
++ <match type="string" value="OggS" offset="0">
++ <match type="string" value="fishead\0" offset="28">
++ <match type="string" value="CMML\0\0\0\0" offset="56:512"/>
+ </match>
+ </match>
+ </magic>
+@@ -17031,20 +17668,22 @@
+ </mime-type>
+ <mime-type type="application/ogg">
+ <comment>Ogg multimedia file</comment>
++ <comment xml:lang="af">Ogg-multimedialêer</comment>
+ <comment xml:lang="ar">ملف وسائط متعددة Ogg</comment>
+- <comment xml:lang="be@latin">Multymedyjny fajł Ogg</comment>
++ <comment xml:lang="be-Latn">Multymedyjny fajł Ogg</comment>
+ <comment xml:lang="bg">Мултимедия — Ogg</comment>
+ <comment xml:lang="ca">fitxer multimèdia Ogg</comment>
+ <comment xml:lang="cs">multimediální soubor Ogg</comment>
+ <comment xml:lang="da">Ogg multimedie-fil</comment>
+ <comment xml:lang="de">Ogg-Multimediadatei</comment>
+ <comment xml:lang="el">Αρχείο πολυμέσων Ogg</comment>
+- <comment xml:lang="en_GB">Ogg multimedia file</comment>
++ <comment xml:lang="en-GB">Ogg multimedia file</comment>
+ <comment xml:lang="es">archivo multimedia Ogg</comment>
+ <comment xml:lang="eu">Ogg multimediako fitxategia</comment>
+ <comment xml:lang="fi">Ogg-multimediatiedosto</comment>
+ <comment xml:lang="fo">Ogg margmiðlafíla</comment>
+ <comment xml:lang="fr">fichier multimédia Ogg</comment>
++ <comment xml:lang="fur">file multimediâl Ogg</comment>
+ <comment xml:lang="ga">comhad ilmheán Ogg</comment>
+ <comment xml:lang="gl">ficheiro multimedia Ogg</comment>
+ <comment xml:lang="he">קובץ מולטימדיה Ogg</comment>
+@@ -17065,7 +17704,7 @@
+ <comment xml:lang="oc">fichièr multimèdia Ogg</comment>
+ <comment xml:lang="pl">Plik multimedialny Ogg</comment>
+ <comment xml:lang="pt">ficheiro multimédia Ogg</comment>
+- <comment xml:lang="pt_BR">Arquivo multimídia Ogg</comment>
++ <comment xml:lang="pt-BR">Arquivo multimídia Ogg</comment>
+ <comment xml:lang="ro">Fișier multimedia Ogg</comment>
+ <comment xml:lang="ru">Мультимедийный файл Ogg</comment>
+ <comment xml:lang="sk">Súbor multimédií Ogg</comment>
+@@ -17073,70 +17712,47 @@
+ <comment xml:lang="sq">File multimedial Ogg</comment>
+ <comment xml:lang="sr">Огг мултимедијална датотека</comment>
+ <comment xml:lang="sv">Ogg-multimediafil</comment>
+- <comment xml:lang="tr">Ogg çokluortam dosyası</comment>
++ <comment xml:lang="tr">Ogg çoklu ortam dosyası</comment>
+ <comment xml:lang="uk">мультимедійний файл Ogg</comment>
+ <comment xml:lang="vi">Tập tin đa phương tiện Ogg</comment>
+- <comment xml:lang="zh_CN">Ogg 多媒体文件</comment>
+- <comment xml:lang="zh_TW">Ogg 多媒體檔案</comment>
++ <comment xml:lang="zh-CN">Ogg 多媒体文件</comment>
++ <comment xml:lang="zh-TW">Ogg 多媒體檔案</comment>
+ <generic-icon name="video-x-generic"/>
+ <alias type="application/x-ogg"/>
+ <magic priority="50">
+- <match value="OggS" type="string" offset="0"/>
++ <match type="string" value="OggS" offset="0"/>
+ </magic>
+ <glob pattern="*.ogx"/>
+ </mime-type>
+ <mime-type type="audio/ogg">
+- <comment>Ogg Audio</comment>
+- <comment xml:lang="ar">Ogg سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo Ogg</comment>
++ <comment>Ogg audio</comment>
+ <comment xml:lang="bg">Аудио — Ogg</comment>
+- <comment xml:lang="ca">àudio d'Ogg</comment>
+- <comment xml:lang="cs">zvuk Ogg</comment>
++ <comment xml:lang="ca">àudio Ogg</comment>
+ <comment xml:lang="da">Ogg-lyd</comment>
+ <comment xml:lang="de">Ogg-Audio</comment>
+- <comment xml:lang="el">Ήχος Ogg</comment>
+- <comment xml:lang="en_GB">Ogg Audio</comment>
+- <comment xml:lang="es">sonido Ogg</comment>
++ <comment xml:lang="en-GB">Ogg audio</comment>
++ <comment xml:lang="es">audio Ogg</comment>
+ <comment xml:lang="eu">Ogg audioa</comment>
+ <comment xml:lang="fi">Ogg-ääni</comment>
+- <comment xml:lang="fo">Ogg ljóður</comment>
+ <comment xml:lang="fr">audio Ogg</comment>
+- <comment xml:lang="ga">Fuaim Ogg</comment>
+- <comment xml:lang="gl">son Ogg</comment>
+- <comment xml:lang="he">שמע Ogg</comment>
+ <comment xml:lang="hr">Ogg zvučni zapis</comment>
+ <comment xml:lang="hu">Ogg hang</comment>
+- <comment xml:lang="ia">Audio Ogg</comment>
+ <comment xml:lang="id">Audio Ogg</comment>
+ <comment xml:lang="it">Audio Ogg</comment>
+- <comment xml:lang="ja">Ogg オーディオ</comment>
+- <comment xml:lang="ka">Ogg-ის აუდიო</comment>
+- <comment xml:lang="kk">Ogg аудиосы</comment>
++ <comment xml:lang="kk">Ogg аулиосы</comment>
+ <comment xml:lang="ko">Ogg 오디오</comment>
+- <comment xml:lang="lt">Ogg garso įrašas</comment>
+- <comment xml:lang="lv">Ogg audio</comment>
+- <comment xml:lang="nb">Ogg lyd</comment>
+- <comment xml:lang="nl">Ogg-audio</comment>
+- <comment xml:lang="nn">Ogg-lyd</comment>
+- <comment xml:lang="oc">àudio Ogg</comment>
+ <comment xml:lang="pl">Plik dźwiękowy Ogg</comment>
+- <comment xml:lang="pt">áudio Ogg</comment>
+- <comment xml:lang="pt_BR">Áudio Ogg</comment>
+- <comment xml:lang="ro">Audio Ogg</comment>
++ <comment xml:lang="pt-BR">Áudio Ogg</comment>
+ <comment xml:lang="ru">Аудио Ogg</comment>
+ <comment xml:lang="sk">Zvuk Ogg</comment>
+- <comment xml:lang="sl">Zvočna datoteka Ogg</comment>
+- <comment xml:lang="sq">Audio Ogg</comment>
+- <comment xml:lang="sr">Огг звук</comment>
+ <comment xml:lang="sv">Ogg-ljud</comment>
+- <comment xml:lang="tr">Ogg Sesi</comment>
++ <comment xml:lang="tr">Ogg sesi</comment>
+ <comment xml:lang="uk">звук ogg</comment>
+- <comment xml:lang="vi">Âm thanh Ogg</comment>
+- <comment xml:lang="zh_CN">Ogg 音频</comment>
+- <comment xml:lang="zh_TW">Ogg 音訊</comment>
++ <comment xml:lang="zh-CN">Ogg 音频</comment>
++ <comment xml:lang="zh-TW">Ogg 音訊</comment>
+ <sub-class-of type="application/ogg"/>
+ <magic priority="50">
+- <match value="OggS" type="string" offset="0"/>
++ <match type="string" value="OggS" offset="0"/>
+ </magic>
+ <glob pattern="*.oga"/>
+ <glob pattern="*.ogg"/>
+@@ -17144,58 +17760,34 @@
+ <alias type="audio/x-ogg"/>
+ </mime-type>
+ <mime-type type="video/ogg">
+- <comment>Ogg Video</comment>
+- <comment xml:lang="ar">Ogg مرئي</comment>
+- <comment xml:lang="ast">Videu n'Ogg</comment>
+- <comment xml:lang="be@latin">Videa Ogg</comment>
++ <comment>Ogg video</comment>
+ <comment xml:lang="bg">Видео — Ogg</comment>
+ <comment xml:lang="ca">vídeo Ogg</comment>
+- <comment xml:lang="cs">video Ogg</comment>
+ <comment xml:lang="da">Ogg-video</comment>
+ <comment xml:lang="de">Ogg-Video</comment>
+- <comment xml:lang="el">Βίντεο Ogg</comment>
+- <comment xml:lang="en_GB">Ogg Video</comment>
++ <comment xml:lang="en-GB">Ogg video</comment>
+ <comment xml:lang="es">vídeo Ogg</comment>
+ <comment xml:lang="eu">Ogg bideoa</comment>
+ <comment xml:lang="fi">Ogg-video</comment>
+- <comment xml:lang="fo">Ogg Video</comment>
+ <comment xml:lang="fr">vidéo Ogg</comment>
+- <comment xml:lang="ga">Físeán Ogg</comment>
+- <comment xml:lang="gl">vídeo Ogg</comment>
+- <comment xml:lang="he">וידאו Ogg</comment>
+ <comment xml:lang="hr">Ogg video snimka</comment>
+ <comment xml:lang="hu">Ogg videó</comment>
+- <comment xml:lang="ia">Video Ogg</comment>
+ <comment xml:lang="id">Video Ogg</comment>
+ <comment xml:lang="it">Video Ogg</comment>
+- <comment xml:lang="ja">Ogg 動画</comment>
+- <comment xml:lang="ka">Ogg ვიდეო</comment>
+ <comment xml:lang="kk">Ogg видеосы</comment>
+ <comment xml:lang="ko">Ogg 동영상</comment>
+- <comment xml:lang="lt">Ogg vaizdo įrašas</comment>
+- <comment xml:lang="lv">Ogg video</comment>
+- <comment xml:lang="nb">Ogg video</comment>
+- <comment xml:lang="nl">Ogg-video</comment>
+- <comment xml:lang="nn">Ogg-video</comment>
+- <comment xml:lang="oc">vidèo Ogg</comment>
+ <comment xml:lang="pl">Plik wideo Ogg</comment>
+- <comment xml:lang="pt">vídeo Ogg</comment>
+- <comment xml:lang="pt_BR">Vídeo Ogg</comment>
+- <comment xml:lang="ro">Video Ogg</comment>
++ <comment xml:lang="pt-BR">Vídeo Ogg</comment>
+ <comment xml:lang="ru">Видео Ogg</comment>
+ <comment xml:lang="sk">Video Ogg</comment>
+- <comment xml:lang="sl">Video datoteka Ogg</comment>
+- <comment xml:lang="sq">Video Ogg</comment>
+- <comment xml:lang="sr">Огг снимак</comment>
+ <comment xml:lang="sv">Ogg-video</comment>
+- <comment xml:lang="tr">Ogg Video</comment>
+- <comment xml:lang="uk">відеокліп ogg</comment>
+- <comment xml:lang="vi">Ảnh động Ogg</comment>
+- <comment xml:lang="zh_CN">Ogg 视频</comment>
+- <comment xml:lang="zh_TW">Ogg 視訊</comment>
++ <comment xml:lang="tr">Ogg video</comment>
++ <comment xml:lang="uk">відео ogg</comment>
++ <comment xml:lang="zh-CN">Ogg 视频</comment>
++ <comment xml:lang="zh-TW">Ogg 視訊</comment>
+ <sub-class-of type="application/ogg"/>
+ <magic priority="50">
+- <match value="OggS" type="string" offset="0"/>
++ <match type="string" value="OggS" offset="0"/>
+ </magic>
+ <glob pattern="*.ogv"/>
+ <glob pattern="*.ogg"/>
+@@ -17203,23 +17795,25 @@
+ </mime-type>
+ <mime-type type="audio/x-vorbis+ogg">
+ <comment>Ogg Vorbis audio</comment>
++ <comment xml:lang="af">Ogg Vorbis-oudio</comment>
+ <comment xml:lang="ar">Ogg Vorbis سمعي</comment>
+ <comment xml:lang="az">Ogg Vorbis audio faylı</comment>
+- <comment xml:lang="be@latin">Aŭdyjo Ogg Vorbis</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo Ogg Vorbis</comment>
+ <comment xml:lang="bg">Аудио — Ogg Vorbis</comment>
+- <comment xml:lang="ca">àudio d'Ogg Vorbis</comment>
++ <comment xml:lang="ca">àudio Ogg Vorbis</comment>
+ <comment xml:lang="cs">zvuk Ogg Vorbis</comment>
+ <comment xml:lang="cy">Sain Ogg Vorbis</comment>
+ <comment xml:lang="da">Ogg Vorbis-lyd</comment>
+ <comment xml:lang="de">Ogg-Vorbis-Audio</comment>
+ <comment xml:lang="el">Ήχος Ogg Vobris</comment>
+- <comment xml:lang="en_GB">Ogg Vorbis audio</comment>
++ <comment xml:lang="en-GB">Ogg Vorbis audio</comment>
+ <comment xml:lang="eo">Ogg-Vorbis-sondosiero</comment>
+- <comment xml:lang="es">sonido Ogg Vorbis</comment>
++ <comment xml:lang="es">audio Ogg Vorbis</comment>
+ <comment xml:lang="eu">Ogg Vorbis audioa</comment>
+ <comment xml:lang="fi">Ogg Vorbis -ääni</comment>
+ <comment xml:lang="fo">Ogg Vorbis ljóður</comment>
+ <comment xml:lang="fr">audio Ogg Vorbis</comment>
++ <comment xml:lang="fur">audio Ogg Vorbis</comment>
+ <comment xml:lang="ga">fuaim Ogg Vorbis</comment>
+ <comment xml:lang="gl">son Ogg Vorbis</comment>
+ <comment xml:lang="he">שמע Ogg Vorbis</comment>
+@@ -17241,7 +17835,7 @@
+ <comment xml:lang="oc">àudio Ogg Vorbis</comment>
+ <comment xml:lang="pl">Plik dźwiękowy Ogg Vorbis</comment>
+ <comment xml:lang="pt">áudio Ogg Vorbis</comment>
+- <comment xml:lang="pt_BR">Áudio Ogg Vorbis</comment>
++ <comment xml:lang="pt-BR">Áudio Ogg Vorbis</comment>
+ <comment xml:lang="ro">Audio Ogg Vorbis</comment>
+ <comment xml:lang="ru">Аудио Ogg Vorbis</comment>
+ <comment xml:lang="sk">Zvuk Ogg Vorbis</comment>
+@@ -17252,14 +17846,14 @@
+ <comment xml:lang="tr">Ogg Vorbis sesi</comment>
+ <comment xml:lang="uk">звук ogg Vorbis</comment>
+ <comment xml:lang="vi">Âm thanh Vorbis Ogg</comment>
+- <comment xml:lang="zh_CN">Ogg Vorbis 音频</comment>
+- <comment xml:lang="zh_TW">Ogg Vorbis 音訊</comment>
++ <comment xml:lang="zh-CN">Ogg Vorbis 音频</comment>
++ <comment xml:lang="zh-TW">Ogg Vorbis 音訊</comment>
+ <sub-class-of type="audio/ogg"/>
+ <alias type="audio/vorbis"/>
+ <alias type="audio/x-vorbis"/>
+ <magic priority="80">
+- <match value="OggS" type="string" offset="0">
+- <match value="\x01vorbis" type="string" offset="28"/>
++ <match type="string" value="OggS" offset="0">
++ <match type="string" value="\x01vorbis" offset="28"/>
+ </match>
+ </magic>
+ <glob pattern="*.oga"/>
+@@ -17267,20 +17861,22 @@
+ </mime-type>
+ <mime-type type="audio/x-flac+ogg">
+ <comment>Ogg FLAC audio</comment>
++ <comment xml:lang="af">Ogg FLAC-oudio</comment>
+ <comment xml:lang="ar">Ogg FLAC سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo Ogg FLAC</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo Ogg FLAC</comment>
+ <comment xml:lang="bg">Аудио — Ogg FLAC</comment>
+- <comment xml:lang="ca">àudio FLAC d'Ogg</comment>
++ <comment xml:lang="ca">àudio Ogg FLAC</comment>
+ <comment xml:lang="cs">zvuk Ogg FLAC</comment>
+ <comment xml:lang="da">Ogg FLAC-lyd</comment>
+ <comment xml:lang="de">Ogg-FLAC-Audio</comment>
+ <comment xml:lang="el">Ήχος Ogg FLAC</comment>
+- <comment xml:lang="en_GB">Ogg FLAC audio</comment>
+- <comment xml:lang="es">sonido Ogg FLAC</comment>
++ <comment xml:lang="en-GB">Ogg FLAC audio</comment>
++ <comment xml:lang="es">audio Ogg FLAC</comment>
+ <comment xml:lang="eu">Ogg FLAC audioa</comment>
+ <comment xml:lang="fi">Ogg FLAC -ääni</comment>
+ <comment xml:lang="fo">Ogg FLAC ljóður</comment>
+ <comment xml:lang="fr">audio Ogg FLAC</comment>
++ <comment xml:lang="fur">audio Ogg FLAC</comment>
+ <comment xml:lang="ga">fuaim Ogg FLAC</comment>
+ <comment xml:lang="gl">son Ogg FLAC</comment>
+ <comment xml:lang="he">שמע Ogg FLAC</comment>
+@@ -17301,7 +17897,7 @@
+ <comment xml:lang="oc">àudio Ogg FLAC</comment>
+ <comment xml:lang="pl">Plik dźwiękowy Ogg FLAC</comment>
+ <comment xml:lang="pt">áudio Ogg FLAC</comment>
+- <comment xml:lang="pt_BR">Áudio Ogg FLAC</comment>
++ <comment xml:lang="pt-BR">Áudio Ogg FLAC</comment>
+ <comment xml:lang="ro">Audio Ogg FLAC</comment>
+ <comment xml:lang="ru">Аудио Ogg FLAC</comment>
+ <comment xml:lang="sk">Zvuk Ogg FLAC</comment>
+@@ -17312,13 +17908,13 @@
+ <comment xml:lang="tr">Ogg FLAC sesi</comment>
+ <comment xml:lang="uk">звук ogg FLAC</comment>
+ <comment xml:lang="vi">Âm thanh FLAC Ogg</comment>
+- <comment xml:lang="zh_CN">Ogg FLAC 音频</comment>
+- <comment xml:lang="zh_TW">Ogg FLAC 音訊</comment>
++ <comment xml:lang="zh-CN">Ogg FLAC 音频</comment>
++ <comment xml:lang="zh-TW">Ogg FLAC 音訊</comment>
+ <sub-class-of type="audio/ogg"/>
+ <alias type="audio/x-oggflac"/>
+ <magic priority="80">
+- <match value="OggS" type="string" offset="0">
+- <match value="fLaC" type="string" offset="28"/>
++ <match type="string" value="OggS" offset="0">
++ <match type="string" value="fLaC" offset="28"/>
+ </match>
+ <match value="OggS" type="string" offset="0">
+ <match value="\177FLAC" type="string" offset="28"/>
+@@ -17329,16 +17925,19 @@
+ </mime-type>
+ <mime-type type="audio/x-opus+ogg">
+ <comment>Opus audio</comment>
+- <comment xml:lang="ca">àudio d'Opus</comment>
++ <comment xml:lang="af">Opus-oudio</comment>
++ <comment xml:lang="bg">Аудио — Opus</comment>
++ <comment xml:lang="ca">àudio Opus</comment>
+ <comment xml:lang="cs">zvuk Opus</comment>
+ <comment xml:lang="da">Opus-lyd</comment>
+ <comment xml:lang="de">Opus-Audio</comment>
+ <comment xml:lang="el">Ήχος Opus </comment>
+- <comment xml:lang="en_GB">Opus audio</comment>
+- <comment xml:lang="es">sonido Opus</comment>
++ <comment xml:lang="en-GB">Opus audio</comment>
++ <comment xml:lang="es">audio Opus</comment>
+ <comment xml:lang="eu">Opus audioa</comment>
+ <comment xml:lang="fi">Opus-ääni</comment>
+ <comment xml:lang="fr">audio Opus</comment>
++ <comment xml:lang="fur">audio Opus</comment>
+ <comment xml:lang="ga">fuaim Opus</comment>
+ <comment xml:lang="gl">Son Opus</comment>
+ <comment xml:lang="he">שמע Opus</comment>
+@@ -17352,7 +17951,7 @@
+ <comment xml:lang="oc">àudio Opus</comment>
+ <comment xml:lang="pl">Plik dźwiękowy Opus</comment>
+ <comment xml:lang="pt">áudio Opus</comment>
+- <comment xml:lang="pt_BR">Áudio Opus</comment>
++ <comment xml:lang="pt-BR">Áudio Opus</comment>
+ <comment xml:lang="ru">Аудио Opus</comment>
+ <comment xml:lang="sk">Zvuk Opu</comment>
+ <comment xml:lang="sl">Zvočna datoteka Opus</comment>
+@@ -17360,32 +17959,34 @@
+ <comment xml:lang="sv">Opus-ljud</comment>
+ <comment xml:lang="tr">Opus sesi</comment>
+ <comment xml:lang="uk">звук Opus</comment>
+- <comment xml:lang="zh_CN">Opus 音频</comment>
+- <comment xml:lang="zh_TW">Opus 音訊</comment>
++ <comment xml:lang="zh-CN">Opus 音频</comment>
++ <comment xml:lang="zh-TW">Opus 音訊</comment>
+ <sub-class-of type="audio/ogg"/>
+ <magic priority="80">
+- <match value="OggS" type="string" offset="0">
+- <match value="OpusHead" type="string" offset="28"/>
++ <match type="string" value="OggS" offset="0">
++ <match type="string" value="OpusHead" offset="28"/>
+ </match>
+ </magic>
+ <glob pattern="*.opus"/>
+ </mime-type>
+ <mime-type type="audio/x-speex+ogg">
+ <comment>Ogg Speex audio</comment>
++ <comment xml:lang="af">Ogg Speex-oudio</comment>
+ <comment xml:lang="ar">Ogg Speex سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo Ogg Speex</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo Ogg Speex</comment>
+ <comment xml:lang="bg">Аудио — Ogg Speex</comment>
+- <comment xml:lang="ca">àudio Speex d'Ogg</comment>
++ <comment xml:lang="ca">àudio Ogg Speex</comment>
+ <comment xml:lang="cs">zvuk Ogg Speex</comment>
+ <comment xml:lang="da">Ogg Speex-lyd</comment>
+ <comment xml:lang="de">Ogg-Speex-Audio</comment>
+ <comment xml:lang="el">Ήχος Ogg Speex</comment>
+- <comment xml:lang="en_GB">Ogg Speex audio</comment>
+- <comment xml:lang="es">sonido Ogg Speex</comment>
++ <comment xml:lang="en-GB">Ogg Speex audio</comment>
++ <comment xml:lang="es">audio Ogg Speex</comment>
+ <comment xml:lang="eu">Ogg Speex audioa</comment>
+ <comment xml:lang="fi">Ogg Speex -ääni</comment>
+ <comment xml:lang="fo">Ogg Speex ljóður</comment>
+ <comment xml:lang="fr">audio Ogg Speex</comment>
++ <comment xml:lang="fur">audio Ogg Speex</comment>
+ <comment xml:lang="ga">fuaim Ogg Speex</comment>
+ <comment xml:lang="gl">son Ogg Speex</comment>
+ <comment xml:lang="he">שמע Ogg Speex</comment>
+@@ -17406,7 +18007,7 @@
+ <comment xml:lang="oc">àudio Ogg Speex</comment>
+ <comment xml:lang="pl">Plik dźwiękowy Ogg Speex</comment>
+ <comment xml:lang="pt">áudio Ogg Speex</comment>
+- <comment xml:lang="pt_BR">Áudio Ogg Speex</comment>
++ <comment xml:lang="pt-BR">Áudio Ogg Speex</comment>
+ <comment xml:lang="ro">Audio Ogg Speex</comment>
+ <comment xml:lang="ru">Аудио Ogg Speex</comment>
+ <comment xml:lang="sk">Zvuk Ogg Speex</comment>
+@@ -17417,33 +18018,36 @@
+ <comment xml:lang="tr">Ogg Speex sesi</comment>
+ <comment xml:lang="uk">звук ogg Speex</comment>
+ <comment xml:lang="vi">Âm thanh Speex Ogg</comment>
+- <comment xml:lang="zh_CN">Ogg Speex 音频</comment>
+- <comment xml:lang="zh_TW">Ogg Speex 音訊</comment>
++ <comment xml:lang="zh-CN">Ogg Speex 音频</comment>
++ <comment xml:lang="zh-TW">Ogg Speex 音訊</comment>
+ <sub-class-of type="audio/ogg"/>
+ <magic priority="80">
+- <match value="OggS" type="string" offset="0">
+- <match value="Speex " type="string" offset="28"/>
++ <match type="string" value="OggS" offset="0">
++ <match type="string" value="Speex " offset="28"/>
+ </match>
+ </magic>
+ <glob pattern="*.oga"/>
+ <glob pattern="*.ogg"/>
++ <glob pattern="*.spx"/>
+ </mime-type>
+ <mime-type type="audio/x-speex">
+ <comment>Speex audio</comment>
++ <comment xml:lang="af">Speex-oudio</comment>
+ <comment xml:lang="ar">Speex سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo Speex</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo Speex</comment>
+ <comment xml:lang="bg">Аудио — Speex</comment>
+- <comment xml:lang="ca">àudio de Speex</comment>
++ <comment xml:lang="ca">àudio Speex</comment>
+ <comment xml:lang="cs">zvuk Speex</comment>
+- <comment xml:lang="da">Speexlyd</comment>
++ <comment xml:lang="da">Speex-lyd</comment>
+ <comment xml:lang="de">Speex-Audio</comment>
+ <comment xml:lang="el">Ήχος Speex</comment>
+- <comment xml:lang="en_GB">Speex audio</comment>
+- <comment xml:lang="es">sonido Speex</comment>
++ <comment xml:lang="en-GB">Speex audio</comment>
++ <comment xml:lang="es">audio Speex</comment>
+ <comment xml:lang="eu">Speex audioa</comment>
+ <comment xml:lang="fi">Speex-ääni</comment>
+ <comment xml:lang="fo">Speex ljóður</comment>
+ <comment xml:lang="fr">audio Speex</comment>
++ <comment xml:lang="fur">audio Speex</comment>
+ <comment xml:lang="ga">fuaim Speex</comment>
+ <comment xml:lang="gl">son Speex</comment>
+ <comment xml:lang="he">שמע של Speex</comment>
+@@ -17463,7 +18067,7 @@
+ <comment xml:lang="oc">àudio Speex</comment>
+ <comment xml:lang="pl">Plik dźwiękowy Speex</comment>
+ <comment xml:lang="pt">áudio Speex</comment>
+- <comment xml:lang="pt_BR">Áudio Speex</comment>
++ <comment xml:lang="pt-BR">Áudio Speex</comment>
+ <comment xml:lang="ro">Audio Speex</comment>
+ <comment xml:lang="ru">Аудио Speex</comment>
+ <comment xml:lang="sk">Zvuk Speex</comment>
+@@ -17474,30 +18078,32 @@
+ <comment xml:lang="tr">Speex sesi</comment>
+ <comment xml:lang="uk">звук Speex</comment>
+ <comment xml:lang="vi">Âm thanh Speex</comment>
+- <comment xml:lang="zh_CN">Speex 音频</comment>
+- <comment xml:lang="zh_TW">Speex 音訊</comment>
++ <comment xml:lang="zh-CN">Speex 音频</comment>
++ <comment xml:lang="zh-TW">Speex 音訊</comment>
+ <magic priority="50">
+- <match value="Speex" type="string" offset="0"/>
++ <match type="string" value="Speex" offset="0"/>
+ </magic>
+ <glob pattern="*.spx"/>
+ </mime-type>
+ <mime-type type="video/x-theora+ogg">
+ <comment>Ogg Theora video</comment>
++ <comment xml:lang="af">Ogg Theora-video</comment>
+ <comment xml:lang="ar">Ogg Theora مرئي</comment>
+ <comment xml:lang="ast">Videu n'Ogg Theora</comment>
+- <comment xml:lang="be@latin">Videa Ogg Theora</comment>
++ <comment xml:lang="be-Latn">Videa Ogg Theora</comment>
+ <comment xml:lang="bg">Видео — Ogg Theora</comment>
+ <comment xml:lang="ca">vídeo Ogg Theora</comment>
+ <comment xml:lang="cs">video Ogg Theora</comment>
+ <comment xml:lang="da">Ogg Theora-video</comment>
+ <comment xml:lang="de">Ogg-Theora-Video</comment>
+ <comment xml:lang="el">Βίντεο Ogg Theora</comment>
+- <comment xml:lang="en_GB">Ogg Theora video</comment>
++ <comment xml:lang="en-GB">Ogg Theora video</comment>
+ <comment xml:lang="es">vídeo Ogg Theora</comment>
+ <comment xml:lang="eu">Ogg Theora bideoa</comment>
+ <comment xml:lang="fi">Ogg Theora -video</comment>
+ <comment xml:lang="fo">Ogg Theora video</comment>
+ <comment xml:lang="fr">vidéo Ogg Theora</comment>
++ <comment xml:lang="fur">video Ogg Theora</comment>
+ <comment xml:lang="ga">físeán Ogg Theora</comment>
+ <comment xml:lang="gl">vídeo Ogg Theora</comment>
+ <comment xml:lang="he">שמע Ogg Theora</comment>
+@@ -17518,7 +18124,7 @@
+ <comment xml:lang="oc">vidèo Ogg Theora</comment>
+ <comment xml:lang="pl">Plik wideo Ogg Theora</comment>
+ <comment xml:lang="pt">vídeo Ogg Theora</comment>
+- <comment xml:lang="pt_BR">Vídeo Ogg Theora</comment>
++ <comment xml:lang="pt-BR">Vídeo Ogg Theora</comment>
+ <comment xml:lang="ro">Video Ogg Theora</comment>
+ <comment xml:lang="ru">Видео Ogg Theora</comment>
+ <comment xml:lang="sk">Video Ogg Theora</comment>
+@@ -17529,35 +18135,37 @@
+ <comment xml:lang="tr">Ogg Theora video</comment>
+ <comment xml:lang="uk">відеокліп ogg Theora</comment>
+ <comment xml:lang="vi">Ảnh động Theora Ogg</comment>
+- <comment xml:lang="zh_CN">Ogg Theora 视频</comment>
+- <comment xml:lang="zh_TW">Ogg Theora 視訊</comment>
++ <comment xml:lang="zh-CN">Ogg Theora 视频</comment>
++ <comment xml:lang="zh-TW">Ogg Theora 視訊</comment>
+ <sub-class-of type="video/ogg"/>
+ <alias type="video/x-theora"/>
+ <magic priority="80">
+- <match value="OggS" type="string" offset="0">
+- <match value="\x80theora" type="string" offset="28"/>
++ <match type="string" value="OggS" offset="0">
++ <match type="string" value="\x80theora" offset="28"/>
+ </match>
+ </magic>
+ <glob pattern="*.ogg"/>
+ </mime-type>
+ <mime-type type="video/x-ogm+ogg">
+ <comment>OGM video</comment>
++ <comment xml:lang="af">OGM-video</comment>
+ <comment xml:lang="ar">OGM مرئي</comment>
+ <comment xml:lang="ast">Videu n'OGM</comment>
+- <comment xml:lang="be@latin">Videa OGM</comment>
++ <comment xml:lang="be-Latn">Videa OGM</comment>
+ <comment xml:lang="bg">Видео — OGM</comment>
+ <comment xml:lang="ca">vídeo OGM</comment>
+ <comment xml:lang="cs">video OGM</comment>
+ <comment xml:lang="da">OGM-video</comment>
+ <comment xml:lang="de">OGM-Video</comment>
+ <comment xml:lang="el">Βίντεο OGM</comment>
+- <comment xml:lang="en_GB">OGM video</comment>
++ <comment xml:lang="en-GB">OGM video</comment>
+ <comment xml:lang="eo">OGM-video</comment>
+ <comment xml:lang="es">vídeo OGM</comment>
+ <comment xml:lang="eu">OGM bideoa</comment>
+ <comment xml:lang="fi">OGM-video</comment>
+ <comment xml:lang="fo">OGM video</comment>
+ <comment xml:lang="fr">vidéo OGM</comment>
++ <comment xml:lang="fur">video OGM</comment>
+ <comment xml:lang="ga">físeán OGM</comment>
+ <comment xml:lang="gl">vídeo OGM</comment>
+ <comment xml:lang="he">וידאו OGM</comment>
+@@ -17578,7 +18186,7 @@
+ <comment xml:lang="oc">vidèo OGM</comment>
+ <comment xml:lang="pl">Plik wideo OGM</comment>
+ <comment xml:lang="pt">vídeo OGM</comment>
+- <comment xml:lang="pt_BR">Vídeo OGM</comment>
++ <comment xml:lang="pt-BR">Vídeo OGM</comment>
+ <comment xml:lang="ro">Video OGM</comment>
+ <comment xml:lang="ru">Видео OGM</comment>
+ <comment xml:lang="sk">Video OGM</comment>
+@@ -17589,43 +18197,45 @@
+ <comment xml:lang="tr">OGM video</comment>
+ <comment xml:lang="uk">відеокліп OGM</comment>
+ <comment xml:lang="vi">Ảnh động OGM</comment>
+- <comment xml:lang="zh_CN">OGM 视频</comment>
+- <comment xml:lang="zh_TW">OGM 視訊</comment>
++ <comment xml:lang="zh-CN">OGM 视频</comment>
++ <comment xml:lang="zh-TW">OGM 視訊</comment>
+ <sub-class-of type="video/ogg"/>
+ <alias type="video/x-ogm"/>
+ <magic priority="80">
+- <match value="OggS" type="string" offset="0">
+- <match value="video" type="string" offset="29"/>
++ <match type="string" value="OggS" offset="0">
++ <match type="string" value="video" offset="29"/>
+ </match>
+ </magic>
+ <glob pattern="*.ogm"/>
+ </mime-type>
+-
++ <!-- These are typically compount document of various types, so prefer
++ extensions for these -->
+ <mime-type type="application/x-ole-storage">
+ <comment>OLE2 compound document storage</comment>
+ <comment xml:lang="ar">تخزين مجمع مستند OLE2</comment>
+ <comment xml:lang="ast">Almacenamientu de documentos compuestu por OLE2</comment>
+- <comment xml:lang="be@latin">Schovišča dla kampanentaŭ dakumentu OLE2</comment>
++ <comment xml:lang="be-Latn">Schovišča dla kampanentaŭ dakumentu OLE2</comment>
+ <comment xml:lang="bg">Съставен документ-хранилище — OLE2</comment>
+ <comment xml:lang="ca">emmagatzematge de documents compostos OLE2</comment>
+ <comment xml:lang="cs">úložiště složeného dokumentu OLE2</comment>
+ <comment xml:lang="da">OLE2-sammensat dokumentlager</comment>
+ <comment xml:lang="de">OLE2-Verbunddokumentenspeicher</comment>
+ <comment xml:lang="el">Αρχείο συμπαγούς αποθήκευσης εγγράφων OLE2</comment>
+- <comment xml:lang="en_GB">OLE2 compound document storage</comment>
++ <comment xml:lang="en-GB">OLE2 compound document storage</comment>
+ <comment xml:lang="eo">OLE2-deponejo de parentezaj dokumentoj</comment>
+ <comment xml:lang="es">almacenamiento de documentos compuestos OLE2</comment>
+ <comment xml:lang="eu">OLE2 konposatutako dokumentu-bilduma</comment>
+ <comment xml:lang="fi">OLE2-yhdisteasiakirjatallenne</comment>
+ <comment xml:lang="fo">OLE2 samansett skjalagoymsla</comment>
+ <comment xml:lang="fr">document de stockage composé OLE2</comment>
++ <comment xml:lang="fur">memorizazion document compost OLE2</comment>
+ <comment xml:lang="ga">stóras cáipéisí comhshuite OLE2</comment>
+ <comment xml:lang="gl">almacenamento de documento composto OLE2</comment>
+ <comment xml:lang="he">אחסון מסמך משותף OLE2</comment>
+ <comment xml:lang="hr">OLE2 pohrana složenog dokumenta</comment>
+ <comment xml:lang="hu">OLE2 összetett dokumentumtároló</comment>
+ <comment xml:lang="ia">Magazin de documentos composite OLE2</comment>
+- <comment xml:lang="id">penyimpan dokumen kompon OLE2</comment>
++ <comment xml:lang="id">Penyimpan dokumen kompon OLE2</comment>
+ <comment xml:lang="it">Memorizzazione documento composto OLE2</comment>
+ <comment xml:lang="ja">OLE2 複合ドキュメントストレージ</comment>
+ <comment xml:lang="kk">OLE2 құрама құжаттар қоймасы</comment>
+@@ -17639,7 +18249,7 @@
+ <comment xml:lang="oc">document d'emmagazinatge compausat OLE2</comment>
+ <comment xml:lang="pl">Magazyn dokumentu złożonego OLE2</comment>
+ <comment xml:lang="pt">armazenamento de documento composto OLE2</comment>
+- <comment xml:lang="pt_BR">Armazenamento de documento composto OLE2</comment>
++ <comment xml:lang="pt-BR">Armazenamento de documento composto OLE2</comment>
+ <comment xml:lang="ro">Document de stocare compus OLE2</comment>
+ <comment xml:lang="ru">Хранилище составных документов OLE2</comment>
+ <comment xml:lang="sk">Úložisko zloženého dokumentu OLE2</comment>
+@@ -17650,27 +18260,30 @@
+ <comment xml:lang="tr">OLE2 bileşik belge depolama</comment>
+ <comment xml:lang="uk">сховище складних документів OLE2</comment>
+ <comment xml:lang="vi">Kho lưu tài liệu ghép OLE2</comment>
+- <comment xml:lang="zh_CN">OLE2 组合文档存储</comment>
+- <comment xml:lang="zh_TW">OLE2 複合文件儲存</comment>
++ <comment xml:lang="zh-CN">OLE2 组合文档存储</comment>
++ <comment xml:lang="zh-TW">OLE2 複合文件儲存</comment>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="\320\317\021\340\241\261\032\341" type="string" offset="0"/>
+- <match value="0xe011cfd0" type="little32" offset="0"/>
++ <match type="string" value="\320\317\021\340\241\261\032\341" offset="0"/>
++ <match type="little32" value="0xe011cfd0" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/vnd.ms-publisher">
+ <comment>Microsoft Publisher document</comment>
++ <comment xml:lang="af">Microsoft Publisher-dokument</comment>
+ <comment xml:lang="ast">Documentu de Microsoft Publisher</comment>
++ <comment xml:lang="bg">Документ — Microsoft Publisher</comment>
+ <comment xml:lang="ca">document de Microsoft Publisher</comment>
+ <comment xml:lang="cs">dokument Microsoft Publisher</comment>
+ <comment xml:lang="da">Microsoft Publisher-dokument</comment>
+ <comment xml:lang="de">Microsoft-Publisher-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Microsoft Publisher</comment>
+- <comment xml:lang="en_GB">Microsoft Publisher document</comment>
++ <comment xml:lang="en-GB">Microsoft Publisher document</comment>
+ <comment xml:lang="es">documento de Microsoft Publisher</comment>
+ <comment xml:lang="eu">Microsoft Publisher dokumentua</comment>
+ <comment xml:lang="fi">Microsoft Publisher -asiakirja</comment>
+ <comment xml:lang="fr">document Microsoft Publisher</comment>
++ <comment xml:lang="fur">document Microsoft Publisher</comment>
+ <comment xml:lang="ga">cáipéis Microsoft Publisher</comment>
+ <comment xml:lang="gl">Documento de Microsoft Publisher</comment>
+ <comment xml:lang="he">מסמך Microsoft Publisher</comment>
+@@ -17684,7 +18297,7 @@
+ <comment xml:lang="oc">document Microsoft Publisher</comment>
+ <comment xml:lang="pl">Dokument Microsoft Publisher</comment>
+ <comment xml:lang="pt">documento Microsoft Publisher</comment>
+- <comment xml:lang="pt_BR">Documento do Microsoft Publisher</comment>
++ <comment xml:lang="pt-BR">Documento do Microsoft Publisher</comment>
+ <comment xml:lang="ru">Документ Microsoft Publisher</comment>
+ <comment xml:lang="sk">Dokument Microsoft Publisher</comment>
+ <comment xml:lang="sl">Dokument Microsoft Publisher</comment>
+@@ -17692,27 +18305,29 @@
+ <comment xml:lang="sv">Microsoft Publisher-dokument</comment>
+ <comment xml:lang="tr">Microsoft Publisher belgesi</comment>
+ <comment xml:lang="uk">документ Microsoft Publisher</comment>
+- <comment xml:lang="zh_CN">Microsoft Publisher 文档</comment>
+- <comment xml:lang="zh_TW">Microsoft Publisher 文件</comment>
++ <comment xml:lang="zh-CN">Microsoft Publisher 文档</comment>
++ <comment xml:lang="zh-TW">微軟 Publisher 文件</comment>
+ <sub-class-of type="application/x-ole-storage"/>
+ <glob pattern="*.pub"/>
+ </mime-type>
+ <mime-type type="application/x-msi">
+ <comment>Windows Installer package</comment>
++ <comment xml:lang="af">Windows-installeerpakket</comment>
+ <comment xml:lang="ar">حزمة مثبّت ويندوز</comment>
+- <comment xml:lang="be@latin">Pakunak Windows Installer</comment>
++ <comment xml:lang="be-Latn">Pakunak Windows Installer</comment>
+ <comment xml:lang="bg">Пакет — инсталация за Windows</comment>
+ <comment xml:lang="ca">paquet de Windows Installer</comment>
+ <comment xml:lang="cs">balíček Windows Installer</comment>
+- <comment xml:lang="da">Windows Installer-pakke</comment>
++ <comment xml:lang="da">Windows installationsprogram-pakke</comment>
+ <comment xml:lang="de">Windows-Installationspaket</comment>
+ <comment xml:lang="el">Πακέτο Windows Installer</comment>
+- <comment xml:lang="en_GB">Windows Installer package</comment>
++ <comment xml:lang="en-GB">Windows Installer package</comment>
+ <comment xml:lang="es">paquete de instalación de Windows</comment>
+ <comment xml:lang="eu">Windows-eko pakete instalatzailea</comment>
+ <comment xml:lang="fi">Windows-asennuspaketti</comment>
+ <comment xml:lang="fo">Windows innleggingarpakki</comment>
+ <comment xml:lang="fr">paquet d'installation Windows</comment>
++ <comment xml:lang="fur">pachet Windows Installer</comment>
+ <comment xml:lang="ga">pacáiste Windows Installer</comment>
+ <comment xml:lang="gl">paquete de instalación de Windows</comment>
+ <comment xml:lang="he">חבילה של Windows Installer</comment>
+@@ -17731,7 +18346,7 @@
+ <comment xml:lang="oc">paquet d'installacion Windows</comment>
+ <comment xml:lang="pl">Pakiet instalatora Windows</comment>
+ <comment xml:lang="pt">pacote de instalação Windows</comment>
+- <comment xml:lang="pt_BR">Pacote do Windows Installer</comment>
++ <comment xml:lang="pt-BR">Pacote do Windows Installer</comment>
+ <comment xml:lang="ro">Pachet instalator Windows</comment>
+ <comment xml:lang="ru">Пакет Windows Installer</comment>
+ <comment xml:lang="sk">Balík Windows Installer</comment>
+@@ -17742,28 +18357,30 @@
+ <comment xml:lang="tr">Windows Installer paketi</comment>
+ <comment xml:lang="uk">пакунок Windows Installer</comment>
+ <comment xml:lang="vi">Gói cài đặt Windows</comment>
+- <comment xml:lang="zh_CN">Windows 程序安装包</comment>
+- <comment xml:lang="zh_TW">Windows Installer 軟體包</comment>
++ <comment xml:lang="zh-CN">Windows 程序安装包</comment>
++ <comment xml:lang="zh-TW">Windows Installer 軟體包</comment>
+ <sub-class-of type="application/x-ole-storage"/>
+ <glob pattern="*.msi"/>
+ </mime-type>
+ <mime-type type="application/x-oleo">
+ <comment>GNU Oleo spreadsheet</comment>
++ <comment xml:lang="af">GNU Oleo-sigblad</comment>
+ <comment xml:lang="ar">جدول جنو Oleo</comment>
+- <comment xml:lang="be@latin">Raźlikovy arkuš GNU Oleo</comment>
++ <comment xml:lang="be-Latn">Raźlikovy arkuš GNU Oleo</comment>
+ <comment xml:lang="bg">Таблица — GNU Oleo</comment>
+ <comment xml:lang="ca">full de càlcul de GNU Oleo</comment>
+ <comment xml:lang="cs">sešit GNU Oleo</comment>
+ <comment xml:lang="da">GNU Oleo-regneark</comment>
+ <comment xml:lang="de">GNU-Oleo-Tabelle</comment>
+ <comment xml:lang="el">Λογιστικό φύλλο GNU Oleo</comment>
+- <comment xml:lang="en_GB">GNU Oleo spreadsheet</comment>
++ <comment xml:lang="en-GB">GNU Oleo spreadsheet</comment>
+ <comment xml:lang="eo">Kalkultabelo de GNU Oleo</comment>
+ <comment xml:lang="es">hoja de cálculo de GNU Oleo</comment>
+ <comment xml:lang="eu">GNU Oleo kalkulu-orria</comment>
+ <comment xml:lang="fi">GNU Oleo -taulukko</comment>
+ <comment xml:lang="fo">GNU Oleo rokniark</comment>
+ <comment xml:lang="fr">feuille de calcul GNU Oleo</comment>
++ <comment xml:lang="fur">sfuei di calcul GNU Oleo</comment>
+ <comment xml:lang="ga">scarbhileog GNU Oleo</comment>
+ <comment xml:lang="gl">folla de cálculo de Oleo GNU</comment>
+ <comment xml:lang="he">גליון נתונים של GNU Oleo</comment>
+@@ -17785,7 +18402,7 @@
+ <comment xml:lang="oc">fuèlh de calcul GNU Oleo</comment>
+ <comment xml:lang="pl">Arkusz GNU Oleo</comment>
+ <comment xml:lang="pt">folha de cálculo GNU Oleo</comment>
+- <comment xml:lang="pt_BR">Planilha do GNU Oleo</comment>
++ <comment xml:lang="pt-BR">Planilha do GNU Oleo</comment>
+ <comment xml:lang="ro">Foaie de calcul GNU Oleo</comment>
+ <comment xml:lang="ru">Электронная таблица GNU Oleo</comment>
+ <comment xml:lang="sk">Zošit GNU Oleo</comment>
+@@ -17793,34 +18410,36 @@
+ <comment xml:lang="sq">Fletë llogaritje GNU Oleo</comment>
+ <comment xml:lang="sr">ГНУ Олео табела</comment>
+ <comment xml:lang="sv">GNU Oleo-kalkylblad</comment>
+- <comment xml:lang="tr">GNU Oleo çalışma sayfası</comment>
++ <comment xml:lang="tr">GNU Oleo hesap çizelgesi</comment>
+ <comment xml:lang="uk">ел. таблиця GNU Oleo</comment>
+ <comment xml:lang="vi">Bảng tính Oleo của GNU</comment>
+- <comment xml:lang="zh_CN">GNU Oleo 电子表格</comment>
+- <comment xml:lang="zh_TW">GNU Oleo 試算表</comment>
++ <comment xml:lang="zh-CN">GNU Oleo 电子表格</comment>
++ <comment xml:lang="zh-TW">GNU Oleo 試算表</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <magic priority="50">
+- <match value="Oleo" type="string" offset="31"/>
++ <match type="string" value="Oleo" offset="31"/>
+ </magic>
+ <glob pattern="*.oleo"/>
+ </mime-type>
+ <mime-type type="application/x-pak">
+ <comment>PAK archive</comment>
++ <comment xml:lang="af">PAK-argief</comment>
+ <comment xml:lang="ar">أرشيف PAK</comment>
+- <comment xml:lang="be@latin">Archiŭ PAK</comment>
++ <comment xml:lang="be-Latn">Archiŭ PAK</comment>
+ <comment xml:lang="bg">Архив — PAK</comment>
+ <comment xml:lang="ca">arxiu PAK</comment>
+ <comment xml:lang="cs">archiv PAK</comment>
+ <comment xml:lang="da">PAK-arkiv</comment>
+ <comment xml:lang="de">PAK-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο PAK</comment>
+- <comment xml:lang="en_GB">PAK archive</comment>
++ <comment xml:lang="en-GB">PAK archive</comment>
+ <comment xml:lang="eo">PAK-arkivo</comment>
+ <comment xml:lang="es">archivador PAK</comment>
+ <comment xml:lang="eu">PAK artxiboa</comment>
+ <comment xml:lang="fi">PAK-arkisto</comment>
+ <comment xml:lang="fo">PAK skjalasavn</comment>
+ <comment xml:lang="fr">archive PAK</comment>
++ <comment xml:lang="fur">archivi PAK</comment>
+ <comment xml:lang="ga">cartlann PAK</comment>
+ <comment xml:lang="gl">arquivo PAK</comment>
+ <comment xml:lang="he">ארכיון PAK</comment>
+@@ -17841,7 +18460,7 @@
+ <comment xml:lang="oc">archiu PAK</comment>
+ <comment xml:lang="pl">Archiwum PAK</comment>
+ <comment xml:lang="pt">arquivo PAK</comment>
+- <comment xml:lang="pt_BR">Pacote PAK</comment>
++ <comment xml:lang="pt-BR">Pacote PAK</comment>
+ <comment xml:lang="ro">Arhivă PAK</comment>
+ <comment xml:lang="ru">Архив PAK</comment>
+ <comment xml:lang="sk">Archív PAK</comment>
+@@ -17852,19 +18471,20 @@
+ <comment xml:lang="tr">PAK arşivi</comment>
+ <comment xml:lang="uk">архів PAK</comment>
+ <comment xml:lang="vi">Kho nén PAK</comment>
+- <comment xml:lang="zh_CN">PAK 归档文件</comment>
+- <comment xml:lang="zh_TW">PAK 封存檔</comment>
++ <comment xml:lang="zh-CN">PAK 归档文件</comment>
++ <comment xml:lang="zh-TW">PAK 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="80">
+- <match value="PACK" type="string" offset="0"/>
++ <match offset="0" type="string" value="PACK"/>
+ </magic>
+ <glob pattern="*.pak"/>
+ </mime-type>
+ <mime-type type="application/vnd.palm">
+ <comment>Palm OS database</comment>
++ <comment xml:lang="af">Palm OS-databasis</comment>
+ <comment xml:lang="ar">قاعدة بيانات Palm OS</comment>
+ <comment xml:lang="az">Palm OS mə'lumat bazası</comment>
+- <comment xml:lang="be@latin">Baza źviestak Palm OS</comment>
++ <comment xml:lang="be-Latn">Baza źviestak Palm OS</comment>
+ <comment xml:lang="bg">База от данни — Palm OS</comment>
+ <comment xml:lang="ca">base de dades Palm OS</comment>
+ <comment xml:lang="cs">databáze Palm OS</comment>
+@@ -17872,13 +18492,14 @@
+ <comment xml:lang="da">Palm OS-database</comment>
+ <comment xml:lang="de">Palm-OS-Datenbank</comment>
+ <comment xml:lang="el">Βάση δεδομένων Palm OS</comment>
+- <comment xml:lang="en_GB">Palm OS database</comment>
++ <comment xml:lang="en-GB">Palm OS database</comment>
+ <comment xml:lang="eo">datumbazo de Palm OS</comment>
+ <comment xml:lang="es">base de datos de Palm OS</comment>
+ <comment xml:lang="eu">Palm OS datu-basea</comment>
+ <comment xml:lang="fi">Palm OS -tietokanta</comment>
+ <comment xml:lang="fo">Palm OS dátustovnur</comment>
+ <comment xml:lang="fr">base de données Palm OS</comment>
++ <comment xml:lang="fur">base di dâts Palm OS</comment>
+ <comment xml:lang="ga">bunachar sonraí Palm OS</comment>
+ <comment xml:lang="gl">base de datos de Palm OS</comment>
+ <comment xml:lang="he">מסד נתונים של Palm OS</comment>
+@@ -17899,7 +18520,7 @@
+ <comment xml:lang="oc">banca de donadas Palm OS</comment>
+ <comment xml:lang="pl">Baza danych Palm OS</comment>
+ <comment xml:lang="pt">base de dados Palm OS</comment>
+- <comment xml:lang="pt_BR">Banco de dados do Palm OS</comment>
++ <comment xml:lang="pt-BR">Banco de dados do Palm OS</comment>
+ <comment xml:lang="ro">Bază de date Palm OS</comment>
+ <comment xml:lang="ru">База данных Palm OS</comment>
+ <comment xml:lang="sk">Databáza Palm OS</comment>
+@@ -17907,11 +18528,11 @@
+ <comment xml:lang="sq">Bankë me të dhëna Palm OS</comment>
+ <comment xml:lang="sr">база података Палм ОС-а</comment>
+ <comment xml:lang="sv">Palm OS-databas</comment>
+- <comment xml:lang="tr">Palm OS veritabanı</comment>
++ <comment xml:lang="tr">Palm OS veri tabanı</comment>
+ <comment xml:lang="uk">база даних Palm OS</comment>
+ <comment xml:lang="vi">Cơ sở dữ liệu PalmOS</comment>
+- <comment xml:lang="zh_CN">Palm OS 数据库</comment>
+- <comment xml:lang="zh_TW">Palm OS 資料庫</comment>
++ <comment xml:lang="zh-CN">Palm OS 数据库</comment>
++ <comment xml:lang="zh-TW">Palm OS 資料庫</comment>
+ <glob pattern="*.prc"/>
+ <glob pattern="*.pdb"/>
+ <glob pattern="*.pqa"/>
+@@ -17920,20 +18541,22 @@
+ </mime-type>
+ <mime-type type="application/x-par2">
+ <comment>Parchive archive</comment>
++ <comment xml:lang="af">Parchive-argief</comment>
+ <comment xml:lang="ar">أرشيف Parchive</comment>
+- <comment xml:lang="be@latin">Archiŭ Parchive</comment>
++ <comment xml:lang="be-Latn">Archiŭ Parchive</comment>
+ <comment xml:lang="bg">Архив — parchive</comment>
+ <comment xml:lang="ca">arxiu Parchive</comment>
+ <comment xml:lang="cs">archiv Parchive</comment>
+ <comment xml:lang="da">Parchive-arkiv</comment>
+ <comment xml:lang="de">Parchive-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο Parchive</comment>
+- <comment xml:lang="en_GB">Parchive archive</comment>
++ <comment xml:lang="en-GB">Parchive archive</comment>
+ <comment xml:lang="es">archivador Parchive</comment>
+ <comment xml:lang="eu">Parchive artxiboa</comment>
+ <comment xml:lang="fi">Parchive-arkisto</comment>
+ <comment xml:lang="fo">Parchive skjalasavn</comment>
+ <comment xml:lang="fr">archive Parchive</comment>
++ <comment xml:lang="fur">archivi Parchive</comment>
+ <comment xml:lang="ga">cartlann Parchive</comment>
+ <comment xml:lang="gl">arquivo Parchive</comment>
+ <comment xml:lang="he">ארכיון של Parchive</comment>
+@@ -17953,7 +18576,7 @@
+ <comment xml:lang="oc">archiu Parchive</comment>
+ <comment xml:lang="pl">Archiwum parchive</comment>
+ <comment xml:lang="pt">arquivo Parchive</comment>
+- <comment xml:lang="pt_BR">Pacote Parchive</comment>
++ <comment xml:lang="pt-BR">Pacote Parchive</comment>
+ <comment xml:lang="ro">Arhivă Parchive</comment>
+ <comment xml:lang="ru">Архив Parchive</comment>
+ <comment xml:lang="sk">Archív Parchive</comment>
+@@ -17964,34 +18587,36 @@
+ <comment xml:lang="tr">Parchive arşivi</comment>
+ <comment xml:lang="uk">архів Parchive</comment>
+ <comment xml:lang="vi">Kho nén Parchive</comment>
+- <comment xml:lang="zh_CN">Parchive 归档文件</comment>
+- <comment xml:lang="zh_TW">Parchive 封存檔</comment>
++ <comment xml:lang="zh-CN">Parchive 归档文件</comment>
++ <comment xml:lang="zh-TW">Parchive 封存檔</comment>
+ <acronym>Parchive</acronym>
+ <expanded-acronym>Parity Volume Set Archive</expanded-acronym>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="60">
+- <match value="PAR2" type="string" offset="0"/>
++ <match offset="0" type="string" value="PAR2"/>
+ </magic>
+ <glob pattern="*.PAR2"/>
+ <glob pattern="*.par2"/>
+ </mime-type>
+ <mime-type type="application/x-pef-executable">
+ <comment>PEF executable</comment>
++ <comment xml:lang="af">PEF-uitvoerbaar</comment>
+ <comment xml:lang="ar">PEF تنفيذي</comment>
+- <comment xml:lang="be@latin">Vykonvalny fajł PEF</comment>
++ <comment xml:lang="be-Latn">Vykonvalny fajł PEF</comment>
+ <comment xml:lang="bg">Изпълним файл — PEF</comment>
+ <comment xml:lang="ca">executable PEF</comment>
+ <comment xml:lang="cs">spustitelný soubor PEF</comment>
+ <comment xml:lang="da">PEF-kørbar</comment>
+ <comment xml:lang="de">PEF-Programm</comment>
+ <comment xml:lang="el">Εκτελέσιμο PEF</comment>
+- <comment xml:lang="en_GB">PEF executable</comment>
++ <comment xml:lang="en-GB">PEF executable</comment>
+ <comment xml:lang="eo">PEF-plenumebla</comment>
+ <comment xml:lang="es">ejecutable PEF</comment>
+ <comment xml:lang="eu">PEF exekutagarria</comment>
+ <comment xml:lang="fi">PEF-ohjelma</comment>
+ <comment xml:lang="fo">PEF inningarfør</comment>
+ <comment xml:lang="fr">exécutable PEF</comment>
++ <comment xml:lang="fur">eseguibil PEF</comment>
+ <comment xml:lang="ga">comhad inrite PEF</comment>
+ <comment xml:lang="gl">Executábel PEF</comment>
+ <comment xml:lang="he">קובץ הרצה PEF</comment>
+@@ -18012,7 +18637,7 @@
+ <comment xml:lang="oc">executable PEF</comment>
+ <comment xml:lang="pl">Program PEF</comment>
+ <comment xml:lang="pt">executável PEF</comment>
+- <comment xml:lang="pt_BR">Executável PEF</comment>
++ <comment xml:lang="pt-BR">Executável PEF</comment>
+ <comment xml:lang="ro">Executabil PEF</comment>
+ <comment xml:lang="ru">Исполняемый файл PEF</comment>
+ <comment xml:lang="sk">Spustiteľný súbor PEF</comment>
+@@ -18023,31 +18648,33 @@
+ <comment xml:lang="tr">PEF çalıştırılabilir</comment>
+ <comment xml:lang="uk">виконуваний файл PEF</comment>
+ <comment xml:lang="vi">Tập tin thực hiện được PEF</comment>
+- <comment xml:lang="zh_CN">PEF 可执行文件</comment>
+- <comment xml:lang="zh_TW">PEF 可執行檔</comment>
++ <comment xml:lang="zh-CN">PEF 可执行文件</comment>
++ <comment xml:lang="zh-TW">PEF 可執行檔</comment>
+ <generic-icon name="application-x-executable"/>
+ <magic priority="50">
+- <match value="Joy!" type="string" offset="0"/>
++ <match type="string" value="Joy!" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-perl">
+ <comment>Perl script</comment>
++ <comment xml:lang="af">Perl-skrip</comment>
+ <comment xml:lang="ar">سكربت بيرل</comment>
+- <comment xml:lang="be@latin">Skrypt Perl</comment>
++ <comment xml:lang="be-Latn">Skrypt Perl</comment>
+ <comment xml:lang="bg">Скрипт — Perl</comment>
+ <comment xml:lang="ca">script Perl</comment>
+ <comment xml:lang="cs">skript v Perlu</comment>
+ <comment xml:lang="cy">Sgript Perl</comment>
+- <comment xml:lang="da">Perlprogram</comment>
++ <comment xml:lang="da">Perl-program</comment>
+ <comment xml:lang="de">Perl-Skript</comment>
+ <comment xml:lang="el">Δέσμη ενεργειών Perl</comment>
+- <comment xml:lang="en_GB">Perl script</comment>
++ <comment xml:lang="en-GB">Perl script</comment>
+ <comment xml:lang="eo">Perl-skripto</comment>
+ <comment xml:lang="es">secuencia de órdenes en Perl</comment>
+ <comment xml:lang="eu">Perl script-a</comment>
+ <comment xml:lang="fi">Perl-komentotiedosto</comment>
+ <comment xml:lang="fo">Perl boðrøð</comment>
+ <comment xml:lang="fr">script Perl</comment>
++ <comment xml:lang="fur">script Perl</comment>
+ <comment xml:lang="ga">script Perl</comment>
+ <comment xml:lang="gl">Script de Perl</comment>
+ <comment xml:lang="he">תסריט מעטפת של Perl</comment>
+@@ -18068,7 +18695,7 @@
+ <comment xml:lang="oc">escript Perl</comment>
+ <comment xml:lang="pl">Skrypt Perl</comment>
+ <comment xml:lang="pt">script Perl</comment>
+- <comment xml:lang="pt_BR">Script Perl</comment>
++ <comment xml:lang="pt-BR">Script Perl</comment>
+ <comment xml:lang="ro">Script Perl</comment>
+ <comment xml:lang="ru">Сценарий Perl</comment>
+ <comment xml:lang="sk">Skript jazyka Perl</comment>
+@@ -18079,40 +18706,41 @@
+ <comment xml:lang="tr">Perl betiği</comment>
+ <comment xml:lang="uk">скрипт на Perl</comment>
+ <comment xml:lang="vi">Văn lệnh Perl</comment>
+- <comment xml:lang="zh_CN">Perl 脚本</comment>
+- <comment xml:lang="zh_TW">Perl 指令稿</comment>
++ <comment xml:lang="zh-CN">Perl 脚本</comment>
++ <comment xml:lang="zh-TW">Perl 指令稿</comment>
+ <sub-class-of type="application/x-executable"/>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-script"/>
+ <alias type="text/x-perl"/>
+ <magic priority="50">
+- <match value='eval \"exec /usr/local/bin/perl' type="string" offset="0"/>
+- <match value="/bin/perl" type="string" offset="2:16"/>
+- <match value="/bin/env perl" type="string" offset="2:16"/>
+- <match value="use strict" type="string" offset="0:256"/>
+- <match value="use warnings" type="string" offset="0:256"/>
+- <match value="use diagnostics" type="string" offset="0:256"/>
+- <match value="use Test::" type="string" offset="0:256"/>
+- <match value="BEGIN {" type="string" offset="0:256"/>
++ <match type="string" value="eval \&quot;exec /usr/local/bin/perl" offset="0"/>
++ <match type="string" value="/bin/perl" offset="2:16"/>
++ <match type="string" value="/bin/env perl" offset="2:16"/>
++ <match type="string" value="use Test::" offset="0:256"/>
++ <match type="string" value="BEGIN {" offset="0:256"/>
+ </magic>
+ <magic priority="40">
+- <match value="\n=pod" type="string" offset="0:256"/>
+- <match value="\n=head1 NAME" type="string" offset="0:256"/>
+- <match value="\n=head1 DESCRIPTION" type="string" offset="0:256"/>
++ <match type="string" value="use strict" offset="0:256"/>
++ <match type="string" value="use warnings" offset="0:256"/>
++ <match type="string" value="use diagnostics" offset="0:256"/>
++ <match type="string" value="\n=pod" offset="0:256"/>
++ <match type="string" value="\n=head1 NAME" offset="0:256"/>
++ <match type="string" value="\n=head1 DESCRIPTION" offset="0:256"/>
+ </magic>
+ <glob pattern="*.pl"/>
+- <glob pattern="*.PL"/>
+- <glob pattern="*.pm"/>
+- <glob pattern="*.al"/>
++ <glob pattern="*.PL"/><!-- CPAN-style Perl build script -->
++ <glob pattern="*.pm"/><!-- module -->
++ <glob pattern="*.al"/><!-- autoloader -->
+ <glob pattern="*.perl"/>
+- <glob pattern="*.pod"/>
+- <glob weight="10" pattern="*.t"/>
++ <glob pattern="*.pod"/><!-- documentation -->
++ <glob pattern="*.t" weight="10"/><!-- CPAN-style Perl test script -->
+ </mime-type>
+ <mime-type type="application/x-php">
+ <comment>PHP script</comment>
++ <comment xml:lang="af">PHP-skrip</comment>
+ <comment xml:lang="ar">سكربت PHP</comment>
+ <comment xml:lang="az">PHP skripti</comment>
+- <comment xml:lang="be@latin">Skrypt PHP</comment>
++ <comment xml:lang="be-Latn">Skrypt PHP</comment>
+ <comment xml:lang="bg">Скрипт — PHP</comment>
+ <comment xml:lang="ca">script PHP</comment>
+ <comment xml:lang="cs">skript PHP</comment>
+@@ -18120,13 +18748,14 @@
+ <comment xml:lang="da">PHP-program</comment>
+ <comment xml:lang="de">PHP-Skript</comment>
+ <comment xml:lang="el">Δέσμη ενεργειών PHP</comment>
+- <comment xml:lang="en_GB">PHP script</comment>
++ <comment xml:lang="en-GB">PHP script</comment>
+ <comment xml:lang="eo">PHP-skripto</comment>
+ <comment xml:lang="es">secuencia de órdenes en PHP</comment>
+ <comment xml:lang="eu">PHP script-a</comment>
+ <comment xml:lang="fi">PHP-komentotiedosto</comment>
+ <comment xml:lang="fo">PHP boðrøð</comment>
+ <comment xml:lang="fr">script PHP</comment>
++ <comment xml:lang="fur">script PHP</comment>
+ <comment xml:lang="ga">script PHP</comment>
+ <comment xml:lang="gl">Script de PHP</comment>
+ <comment xml:lang="he">תסריט מעטפת של PHP</comment>
+@@ -18147,7 +18776,7 @@
+ <comment xml:lang="oc">escript PHP</comment>
+ <comment xml:lang="pl">Skrypt PHP</comment>
+ <comment xml:lang="pt">script PHP</comment>
+- <comment xml:lang="pt_BR">Script PHP</comment>
++ <comment xml:lang="pt-BR">Script PHP</comment>
+ <comment xml:lang="ro">Script PHP</comment>
+ <comment xml:lang="ru">Сценарий PHP</comment>
+ <comment xml:lang="sk">Skript PHP</comment>
+@@ -18158,12 +18787,12 @@
+ <comment xml:lang="tr">PHP betiği</comment>
+ <comment xml:lang="uk">скрипт PHP</comment>
+ <comment xml:lang="vi">Văn lệnh PHP</comment>
+- <comment xml:lang="zh_CN">PHP 脚本</comment>
+- <comment xml:lang="zh_TW">PHP 指令稿</comment>
++ <comment xml:lang="zh-CN">PHP 脚本</comment>
++ <comment xml:lang="zh-TW">PHP 指令稿</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-script"/>
+ <magic priority="80">
+- <match value="&lt;?php" type="string" offset="0:64"/>
++ <match type="string" value="&lt;?php" offset="0:64"/>
+ </magic>
+ <glob pattern="*.php"/>
+ <glob pattern="*.php3"/>
+@@ -18173,19 +18802,21 @@
+ </mime-type>
+ <mime-type type="application/x-pkcs7-certificates">
+ <comment>PKCS#7 certificate bundle</comment>
++ <comment xml:lang="af">PKCS#7-sertifikaatbundel</comment>
+ <comment xml:lang="ar">رزمة الشهادة PKCS#7</comment>
+- <comment xml:lang="bg">Сбор със сертификати — PKCS#7</comment>
++ <comment xml:lang="bg">Пакет със сертификати — PKCS#7</comment>
+ <comment xml:lang="ca">conjunt de certificats PKCS#7</comment>
+ <comment xml:lang="cs">svazek certifikátů PKCS#7</comment>
+ <comment xml:lang="da">PKCS#7-certifikatbundt</comment>
+ <comment xml:lang="de">PKCS#7-Zertifikatspaket</comment>
+ <comment xml:lang="el">Πακέτο ψηφιακών πιστοποιητικών PKCS#7</comment>
+- <comment xml:lang="en_GB">PKCS#7 certificate bundle</comment>
++ <comment xml:lang="en-GB">PKCS#7 certificate bundle</comment>
+ <comment xml:lang="es">lote de certificados PCKS#7</comment>
+ <comment xml:lang="eu">PKCS#7 zertifikazio sorta</comment>
+ <comment xml:lang="fi">PKCS#7-varmennenippu</comment>
+ <comment xml:lang="fo">PKCS#7 váttanar bundi</comment>
+ <comment xml:lang="fr">lot de certificats PKCS#7</comment>
++ <comment xml:lang="fur">côl di certificâts PKCS#7</comment>
+ <comment xml:lang="ga">burla teastas PKCS#7</comment>
+ <comment xml:lang="gl">paquete de certificado PKCS#7</comment>
+ <comment xml:lang="he">בקשה מוסמכת PKCS#7</comment>
+@@ -18203,7 +18834,7 @@
+ <comment xml:lang="oc">lòt de certificats PKCS#7</comment>
+ <comment xml:lang="pl">Pakiet certyfikatu PKCS#7</comment>
+ <comment xml:lang="pt">pacote de certificação PKCS#7</comment>
+- <comment xml:lang="pt_BR">Pacote de certificados PKCS#7</comment>
++ <comment xml:lang="pt-BR">Pacote de certificados PKCS#7</comment>
+ <comment xml:lang="ro">Pachet certificat PKCS#7</comment>
+ <comment xml:lang="ru">Пакет сертификата PKCS#7</comment>
+ <comment xml:lang="sk">Zväzok certifikátov PKCS#7</comment>
+@@ -18213,8 +18844,8 @@
+ <comment xml:lang="tr">PKCS#7 sertifika paketi</comment>
+ <comment xml:lang="uk">комплект сертифікатів PKCS#7</comment>
+ <comment xml:lang="vi">Bó chứng nhận PKCS#7</comment>
+- <comment xml:lang="zh_CN">PKCS#7 证书束</comment>
+- <comment xml:lang="zh_TW">PKCS#7 憑證綁包</comment>
++ <comment xml:lang="zh-CN">PKCS#7 证书束</comment>
++ <comment xml:lang="zh-TW">PKCS#7 憑證綁包</comment>
+ <acronym>PKCS</acronym>
+ <expanded-acronym>Public-Key Cryptography Standards</expanded-acronym>
+ <glob pattern="*.p7b"/>
+@@ -18222,21 +18853,23 @@
+ </mime-type>
+ <mime-type type="application/pkcs12">
+ <comment>PKCS#12 certificate bundle</comment>
++ <comment xml:lang="af">PKCS#12-sertifikaatbundel</comment>
+ <comment xml:lang="ar">رزمة الشهادة PKCS#12</comment>
+- <comment xml:lang="be@latin">Viazka sertyfikataŭ PKCS#12</comment>
+- <comment xml:lang="bg">Сбор със сертификати — PKCS#12</comment>
++ <comment xml:lang="be-Latn">Viazka sertyfikataŭ PKCS#12</comment>
++ <comment xml:lang="bg">Пакет със сертификати — PKCS#12</comment>
+ <comment xml:lang="ca">conjunt de certificats PKCS#12</comment>
+ <comment xml:lang="cs">svazek certifikátů PKCS#12</comment>
+ <comment xml:lang="da">PKCS#12-certifikatbundt</comment>
+ <comment xml:lang="de">PKCS#12-Zertifikatspaket</comment>
+ <comment xml:lang="el">Πακέτο ψηφιακών πιστοποιητικών PKCS#12</comment>
+- <comment xml:lang="en_GB">PKCS#12 certificate bundle</comment>
++ <comment xml:lang="en-GB">PKCS#12 certificate bundle</comment>
+ <comment xml:lang="eo">ligaĵo de PKCS#12-atestiloj</comment>
+ <comment xml:lang="es">lote de certificados PCKS#12</comment>
+ <comment xml:lang="eu">PKCS#12 zertifikazio sorta</comment>
+ <comment xml:lang="fi">PKCS#12-varmennenippu</comment>
+ <comment xml:lang="fo">PKCS#12 váttanar bundi</comment>
+ <comment xml:lang="fr">lot de certificats PKCS#12</comment>
++ <comment xml:lang="fur">côl di certificâts PKCS#12</comment>
+ <comment xml:lang="ga">burla teastas PKCS#12</comment>
+ <comment xml:lang="gl">paquete de certificado PKCS#12</comment>
+ <comment xml:lang="he">בקשה מוסמכת PKCS#12</comment>
+@@ -18257,7 +18890,7 @@
+ <comment xml:lang="oc">lòt de certificats PKCS#12</comment>
+ <comment xml:lang="pl">Pakiet certyfikatu PKCS#12</comment>
+ <comment xml:lang="pt">pacote de certificação PKCS#12</comment>
+- <comment xml:lang="pt_BR">Pacote de certificados PKCS#12</comment>
++ <comment xml:lang="pt-BR">Pacote de certificados PKCS#12</comment>
+ <comment xml:lang="ro">Certificat împachetat PKCS#12</comment>
+ <comment xml:lang="ru">Пакет сертификата PKCS#12</comment>
+ <comment xml:lang="sk">Zväzok certifikátov PKCS#12</comment>
+@@ -18268,8 +18901,8 @@
+ <comment xml:lang="tr">PKCS#12 sertifika paketi</comment>
+ <comment xml:lang="uk">комплект сертифікатів PKCS#12</comment>
+ <comment xml:lang="vi">Bó chứng nhận PKCS#12</comment>
+- <comment xml:lang="zh_CN">PKCS#12 证书束</comment>
+- <comment xml:lang="zh_TW">PKCS#12 憑證檔綁包</comment>
++ <comment xml:lang="zh-CN">PKCS#12 证书束</comment>
++ <comment xml:lang="zh-TW">PKCS#12 憑證綁包</comment>
+ <acronym>PKCS</acronym>
+ <expanded-acronym>Public-Key Cryptography Standards</expanded-acronym>
+ <glob pattern="*.p12"/>
+@@ -18278,20 +18911,22 @@
+ </mime-type>
+ <mime-type type="application/x-planperfect">
+ <comment>PlanPerfect spreadsheet</comment>
++ <comment xml:lang="af">PlanPerfect-sigblad</comment>
+ <comment xml:lang="ar">جدول PlanPerfect</comment>
+- <comment xml:lang="be@latin">Raźlikovy arkuš PlanPerfect</comment>
++ <comment xml:lang="be-Latn">Raźlikovy arkuš PlanPerfect</comment>
+ <comment xml:lang="bg">Таблица — PlanPerfect</comment>
+ <comment xml:lang="ca">full de càlcul de PlanPerfect</comment>
+ <comment xml:lang="cs">sešit PlanPerfect</comment>
+ <comment xml:lang="da">PlanPerfect-regneark</comment>
+ <comment xml:lang="de">PlanPerfect-Tabelle</comment>
+ <comment xml:lang="el">Φύλλο εργασίας PlanPerfect</comment>
+- <comment xml:lang="en_GB">PlanPerfect spreadsheet</comment>
++ <comment xml:lang="en-GB">PlanPerfect spreadsheet</comment>
+ <comment xml:lang="es">hoja de cálculo de PlanPerfect</comment>
+ <comment xml:lang="eu">PlanPerfect kalkulu-orria</comment>
+ <comment xml:lang="fi">PlanPerfect-taulukko</comment>
+ <comment xml:lang="fo">PlanPerfect rokniark</comment>
+ <comment xml:lang="fr">feuille de calcul PlanPerfect</comment>
++ <comment xml:lang="fur">sfuei di calcul PlanPerfect</comment>
+ <comment xml:lang="ga">scarbhileog PlanPerfect</comment>
+ <comment xml:lang="gl">folla de cálculo de PlanPerfect</comment>
+ <comment xml:lang="he">גליון נתונים של PlanPerfect</comment>
+@@ -18311,7 +18946,7 @@
+ <comment xml:lang="oc">fuèlh de calcul PlanPerfect</comment>
+ <comment xml:lang="pl">Arkusz PlanPerfect</comment>
+ <comment xml:lang="pt">folha de cálculo PlanPerfect</comment>
+- <comment xml:lang="pt_BR">Planilha do PlanPerfect</comment>
++ <comment xml:lang="pt-BR">Planilha do PlanPerfect</comment>
+ <comment xml:lang="ro">Foaie de calcul PlanPerfect</comment>
+ <comment xml:lang="ru">Электронная таблица PlanPerfect</comment>
+ <comment xml:lang="sk">Zošit PlanPerfect</comment>
+@@ -18319,16 +18954,17 @@
+ <comment xml:lang="sq">Fletë llogaritjesh PlanPerfect</comment>
+ <comment xml:lang="sr">табела План Перфекта</comment>
+ <comment xml:lang="sv">PlanPerfect-kalkylblad</comment>
+- <comment xml:lang="tr">PlanPerfect çalışma sayfası</comment>
++ <comment xml:lang="tr">PlanPerfect hesap çizelgesi</comment>
+ <comment xml:lang="uk">ел. таблиця PlanPerfect</comment>
+ <comment xml:lang="vi">Bảng tính PlanPerfect</comment>
+- <comment xml:lang="zh_CN">PlanPerfect 电子表格</comment>
+- <comment xml:lang="zh_TW">PlanPerfect 試算表</comment>
++ <comment xml:lang="zh-CN">PlanPerfect 电子表格</comment>
++ <comment xml:lang="zh-TW">PlanPerfect 試算表</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <glob pattern="*.pln"/>
+ </mime-type>
+ <mime-type type="application/x-pocket-word">
+ <comment>Pocket Word document</comment>
++ <comment xml:lang="af">Pocket Word-dokument</comment>
+ <comment xml:lang="ar">مستند Pocket Word</comment>
+ <comment xml:lang="ast">Documentu de PocketWord</comment>
+ <comment xml:lang="bg">Документ — Pocket Word</comment>
+@@ -18337,12 +18973,13 @@
+ <comment xml:lang="da">Pocket Word-dokument</comment>
+ <comment xml:lang="de">Pocket-Word-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Pocket Word</comment>
+- <comment xml:lang="en_GB">Pocket Word document</comment>
++ <comment xml:lang="en-GB">Pocket Word document</comment>
+ <comment xml:lang="es">documento de Pocket Word</comment>
+ <comment xml:lang="eu">Pocket Word dokumentua</comment>
+ <comment xml:lang="fi">Pocket Word -asiakirja</comment>
+ <comment xml:lang="fo">Pocket Word skjal</comment>
+ <comment xml:lang="fr">document Pocket Word</comment>
++ <comment xml:lang="fur">document Pocket Word</comment>
+ <comment xml:lang="ga">cáipéis Pocket Word</comment>
+ <comment xml:lang="gl">documento de Pocket Word</comment>
+ <comment xml:lang="he">מסמך של Pocket Word</comment>
+@@ -18360,7 +18997,7 @@
+ <comment xml:lang="oc">document Pocket Word</comment>
+ <comment xml:lang="pl">Dokument Pocket Word</comment>
+ <comment xml:lang="pt">documento Pocket Word</comment>
+- <comment xml:lang="pt_BR">Documento do Pocket Word</comment>
++ <comment xml:lang="pt-BR">Documento do Pocket Word</comment>
+ <comment xml:lang="ro">Document Pocket Word</comment>
+ <comment xml:lang="ru">Документ Pocket Word</comment>
+ <comment xml:lang="sk">Dokument Pocket Word</comment>
+@@ -18370,32 +19007,34 @@
+ <comment xml:lang="tr">Pocket Word belgesi</comment>
+ <comment xml:lang="uk">документ Pocket Word</comment>
+ <comment xml:lang="vi">Tài liệu Pocket Word</comment>
+- <comment xml:lang="zh_CN">Pocket Word 文档</comment>
+- <comment xml:lang="zh_TW">Pocket Word 文件</comment>
++ <comment xml:lang="zh-CN">Pocket Word 文档</comment>
++ <comment xml:lang="zh-TW">Pocket Word 文件</comment>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="{\\pwi" type="string" offset="0"/>
++ <match type="string" value="{\\pwi" offset="0"/>
+ </magic>
+ <glob pattern="*.psw"/>
+ </mime-type>
+ <mime-type type="application/x-profile">
+ <comment>profiler results</comment>
++ <comment xml:lang="af">profieldata</comment>
+ <comment xml:lang="ar">نتائج المحلل</comment>
+ <comment xml:lang="az">profiler nəticələri</comment>
+- <comment xml:lang="be@latin">vyniki profilera</comment>
++ <comment xml:lang="be-Latn">vyniki profilera</comment>
+ <comment xml:lang="bg">Резултати от анализатора</comment>
+- <comment xml:lang="ca">resultats de profiler</comment>
++ <comment xml:lang="ca">resultats del perfilador</comment>
+ <comment xml:lang="cs">výsledky profileru</comment>
+ <comment xml:lang="cy">canlyniadau proffeilio</comment>
+ <comment xml:lang="da">profileringsresultater</comment>
+ <comment xml:lang="de">Profiler-Ergebnisse</comment>
+ <comment xml:lang="el">Αποτελέσματα μετρήσεων για την εκτέλεση προγράμματος</comment>
+- <comment xml:lang="en_GB">profiler results</comment>
++ <comment xml:lang="en-GB">profiler results</comment>
+ <comment xml:lang="eo">resultoj de profililo</comment>
+ <comment xml:lang="es">resultados del perfilador</comment>
+ <comment xml:lang="eu">profiler-aren emaitzak</comment>
+ <comment xml:lang="fi">profilointitulokset</comment>
+ <comment xml:lang="fr">résultats de profileur</comment>
++ <comment xml:lang="fur">risultâts profiladôr</comment>
+ <comment xml:lang="ga">torthaí próifíleora</comment>
+ <comment xml:lang="gl">resultados do perfilador</comment>
+ <comment xml:lang="he">תוצאות מאבחן</comment>
+@@ -18416,7 +19055,7 @@
+ <comment xml:lang="oc">resultats de perfilador</comment>
+ <comment xml:lang="pl">Wyniki profilowania</comment>
+ <comment xml:lang="pt">resultados de análise de perfil</comment>
+- <comment xml:lang="pt_BR">Resultados do profiler</comment>
++ <comment xml:lang="pt-BR">Resultados do profiler</comment>
+ <comment xml:lang="ro">rezultate profiler</comment>
+ <comment xml:lang="ru">Результаты профилирования</comment>
+ <comment xml:lang="sk">Výsledky profilera</comment>
+@@ -18424,33 +19063,35 @@
+ <comment xml:lang="sq">Rezultate të profiluesit</comment>
+ <comment xml:lang="sr">резултати профилатора</comment>
+ <comment xml:lang="sv">profilerarresultat</comment>
+- <comment xml:lang="tr">profil sonuçları</comment>
++ <comment xml:lang="tr">profiler sonuçları</comment>
+ <comment xml:lang="uk">результати профілювання</comment>
+ <comment xml:lang="vi">kết quả nét hiện trạng</comment>
+- <comment xml:lang="zh_CN">探查器结果</comment>
+- <comment xml:lang="zh_TW">硬體資訊產生器成果</comment>
++ <comment xml:lang="zh-CN">探查器结果</comment>
++ <comment xml:lang="zh-TW">硬體資訊產生器成果</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-generic"/>
+ <glob pattern="gmon.out"/>
+ </mime-type>
+ <mime-type type="application/x-pw">
+ <comment>Pathetic Writer document</comment>
++ <comment xml:lang="af">Pathetic Writer-dokument</comment>
+ <comment xml:lang="ar">مستند Pathetic Writer</comment>
+ <comment xml:lang="ast">Documentu de Pathetic Writer</comment>
+- <comment xml:lang="be@latin">Dakument Pathetic Writer</comment>
++ <comment xml:lang="be-Latn">Dakument Pathetic Writer</comment>
+ <comment xml:lang="bg">Документ — Pathetic Writer</comment>
+ <comment xml:lang="ca">document de Pathetic Writer</comment>
+ <comment xml:lang="cs">dokument Pathetic Writer</comment>
+ <comment xml:lang="da">Pathetic Writer-dokument</comment>
+ <comment xml:lang="de">Pathetic-Writer-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Pathetic Writer</comment>
+- <comment xml:lang="en_GB">Pathetic Writer document</comment>
++ <comment xml:lang="en-GB">Pathetic Writer document</comment>
+ <comment xml:lang="eo">dokumento de Pathetic Writer</comment>
+ <comment xml:lang="es">documento de Pathetic Writer</comment>
+ <comment xml:lang="eu">Pathetic Writer dokumentua</comment>
+ <comment xml:lang="fi">Pathetic Writer -asiakirja</comment>
+ <comment xml:lang="fo">Pathetic Writer skjal</comment>
+ <comment xml:lang="fr">document Pathetic Writer</comment>
++ <comment xml:lang="fur">document Pathetic Writer</comment>
+ <comment xml:lang="ga">cáipéis Pathetic Writer</comment>
+ <comment xml:lang="gl">documento de Pathetic Writer</comment>
+ <comment xml:lang="he">מסמך של Pathetic Writer</comment>
+@@ -18471,7 +19112,7 @@
+ <comment xml:lang="oc">document Pathetic Writer</comment>
+ <comment xml:lang="pl">Dokument Pathetic Writer</comment>
+ <comment xml:lang="pt">documento do Pathetic Writer</comment>
+- <comment xml:lang="pt_BR">Documento do Pathetic Writer</comment>
++ <comment xml:lang="pt-BR">Documento do Pathetic Writer</comment>
+ <comment xml:lang="ro">Document Pathetic Writer</comment>
+ <comment xml:lang="ru">Документ Pathetic Writer</comment>
+ <comment xml:lang="sk">Dokument Pathetic Writer</comment>
+@@ -18482,30 +19123,32 @@
+ <comment xml:lang="tr">Pathetic Writer belgesi</comment>
+ <comment xml:lang="uk">документ Pathetic Writer</comment>
+ <comment xml:lang="vi">Tài liệu Pathetic Writer</comment>
+- <comment xml:lang="zh_CN">Pathetic Writer 文档</comment>
+- <comment xml:lang="zh_TW">Pathetic Writer 文件</comment>
++ <comment xml:lang="zh-CN">Pathetic Writer 文档</comment>
++ <comment xml:lang="zh-TW">Pathetic Writer 文件</comment>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.pw"/>
+ </mime-type>
+ <mime-type type="application/x-python-bytecode">
+ <comment>Python bytecode</comment>
++ <comment xml:lang="af">Python binêre kode</comment>
+ <comment xml:lang="ar">Python bytecode</comment>
+ <comment xml:lang="az">Python bayt kodu</comment>
+- <comment xml:lang="be@latin">Bajtavy kod Python</comment>
++ <comment xml:lang="be-Latn">Bajtavy kod Python</comment>
+ <comment xml:lang="bg">Байт код — Python</comment>
+ <comment xml:lang="ca">bytecode de Python</comment>
+ <comment xml:lang="cs">bajtový kód Python</comment>
+ <comment xml:lang="cy">Côd beit Python</comment>
+- <comment xml:lang="da">Pythonbytekode</comment>
++ <comment xml:lang="da">Python-bytekode</comment>
+ <comment xml:lang="de">Python-Bytecode</comment>
+ <comment xml:lang="el">Συμβολοκώδικας Python</comment>
+- <comment xml:lang="en_GB">Python bytecode</comment>
++ <comment xml:lang="en-GB">Python bytecode</comment>
+ <comment xml:lang="eo">Python-bajtkodo</comment>
+ <comment xml:lang="es">bytecode de Python</comment>
+ <comment xml:lang="eu">Python byte-kodea</comment>
+ <comment xml:lang="fi">Python-tavukoodi</comment>
+ <comment xml:lang="fo">Python býtkota</comment>
+ <comment xml:lang="fr">bytecode Python</comment>
++ <comment xml:lang="fur">bytecode di Python</comment>
+ <comment xml:lang="ga">beartchód Python</comment>
+ <comment xml:lang="gl">bytecode de Python</comment>
+ <comment xml:lang="he">Bytecode של Python</comment>
+@@ -18526,7 +19169,7 @@
+ <comment xml:lang="oc">bytecode Python</comment>
+ <comment xml:lang="pl">Kod bajtowy Python</comment>
+ <comment xml:lang="pt">código binário Python</comment>
+- <comment xml:lang="pt_BR">Código compilado Python</comment>
++ <comment xml:lang="pt-BR">Código compilado Python</comment>
+ <comment xml:lang="ro">Bytecode Python</comment>
+ <comment xml:lang="ru">Байт-код Python</comment>
+ <comment xml:lang="sk">Bajtový kód Python</comment>
+@@ -18537,27 +19180,30 @@
+ <comment xml:lang="tr">Python bayt kodu</comment>
+ <comment xml:lang="uk">байт-код Python</comment>
+ <comment xml:lang="vi">Mã byte Python</comment>
+- <comment xml:lang="zh_CN">Python 字节码</comment>
+- <comment xml:lang="zh_TW">Python 位元組碼</comment>
++ <comment xml:lang="zh-CN">Python 字节码</comment>
++ <comment xml:lang="zh-TW">Python 位元組碼</comment>
+ <magic priority="50">
+- <match value="0x994e0d0a" type="big32" offset="0"/>
++ <match type="big32" value="0x994e0d0a" offset="0"/>
+ </magic>
+ <glob pattern="*.pyc"/>
+ <glob pattern="*.pyo"/>
+ </mime-type>
+ <mime-type type="application/x-qtiplot">
+ <comment>QtiPlot document</comment>
++ <comment xml:lang="af">QtiPlot-dokument</comment>
+ <comment xml:lang="ast">Documentu de QtiPlot</comment>
++ <comment xml:lang="bg">Документ — QtiPlot</comment>
+ <comment xml:lang="ca">document QtiPlot</comment>
+ <comment xml:lang="cs">dokument GtiPlot</comment>
+ <comment xml:lang="da">QtiPlot-dokument</comment>
+ <comment xml:lang="de">QtiPlot-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο QtiPlot</comment>
+- <comment xml:lang="en_GB">QtiPlot document</comment>
++ <comment xml:lang="en-GB">QtiPlot document</comment>
+ <comment xml:lang="es">documento de QtiPlot</comment>
+ <comment xml:lang="eu">QtiPlot dokumentua</comment>
+ <comment xml:lang="fi">QtiPlot-asiakirja</comment>
+ <comment xml:lang="fr">document QtiPlot</comment>
++ <comment xml:lang="fur">document QtiPlot</comment>
+ <comment xml:lang="ga">cáipéis QtiPlot</comment>
+ <comment xml:lang="gl">Documento de QtiPilot</comment>
+ <comment xml:lang="he">מסמך QtiPlot</comment>
+@@ -18573,7 +19219,7 @@
+ <comment xml:lang="oc">document QtiPlot</comment>
+ <comment xml:lang="pl">Dokument QtiPlot</comment>
+ <comment xml:lang="pt">documento QtiPlot</comment>
+- <comment xml:lang="pt_BR">Documento do QtiPlot</comment>
++ <comment xml:lang="pt-BR">Documento do QtiPlot</comment>
+ <comment xml:lang="ru">Документ QtiPlot</comment>
+ <comment xml:lang="sk">Dokument QtiPlot</comment>
+ <comment xml:lang="sl">Dokument QtiPlot</comment>
+@@ -18581,8 +19227,8 @@
+ <comment xml:lang="sv">QtiPlot-dokument</comment>
+ <comment xml:lang="tr">QtiPlot belgesi</comment>
+ <comment xml:lang="uk">документ QtiPlot</comment>
+- <comment xml:lang="zh_CN">QtiPlot 文档</comment>
+- <comment xml:lang="zh_TW">QtiPlot 文件</comment>
++ <comment xml:lang="zh-CN">QtiPlot 文档</comment>
++ <comment xml:lang="zh-TW">QtiPlot 文件</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+@@ -18593,21 +19239,23 @@
+ </mime-type>
+ <mime-type type="application/x-quattropro">
+ <comment>Quattro Pro spreadsheet</comment>
++ <comment xml:lang="af">Quattro Pro-sigblad</comment>
+ <comment xml:lang="ar">جدول Quattro Pro</comment>
+- <comment xml:lang="be@latin">Raźlikovy arkuš Quattro Pro</comment>
++ <comment xml:lang="be-Latn">Raźlikovy arkuš Quattro Pro</comment>
+ <comment xml:lang="bg">Таблица — Quattro Pro</comment>
+ <comment xml:lang="ca">full de càlcul de Quattro Pro</comment>
+ <comment xml:lang="cs">sešit Quattro Pro</comment>
+ <comment xml:lang="da">Quattro Pro-regneark</comment>
+ <comment xml:lang="de">Quattro-Pro-Tabelle</comment>
+ <comment xml:lang="el">Λογιστικό φύλλο Quattro Pro</comment>
+- <comment xml:lang="en_GB">Quattro Pro spreadsheet</comment>
++ <comment xml:lang="en-GB">Quattro Pro spreadsheet</comment>
+ <comment xml:lang="eo">sterntabelo de Quattro Pro</comment>
+ <comment xml:lang="es">hoja de cálculo de Quattro Pro</comment>
+ <comment xml:lang="eu">Quattro Pro kalkulu-orria</comment>
+ <comment xml:lang="fi">Quattro Pro -taulukko</comment>
+ <comment xml:lang="fo">Quattro Pro rokniark</comment>
+ <comment xml:lang="fr">feuille de calcul Quattro Pro</comment>
++ <comment xml:lang="fur">sfuei di calcul Quattro Pro</comment>
+ <comment xml:lang="ga">scarbhileog Quattro Pro</comment>
+ <comment xml:lang="gl">folla de cálculo Quattro Pro</comment>
+ <comment xml:lang="he">גליון נתונים של Quattro Pro</comment>
+@@ -18628,7 +19276,7 @@
+ <comment xml:lang="oc">fuèlh de calcul Quattro Pro</comment>
+ <comment xml:lang="pl">Arkusz Quattro Pro</comment>
+ <comment xml:lang="pt">folha de cálculo Quattro Pro</comment>
+- <comment xml:lang="pt_BR">Planilha do Quattro Pro</comment>
++ <comment xml:lang="pt-BR">Planilha do Quattro Pro</comment>
+ <comment xml:lang="ro">Foaie de calcul Quattro Pro</comment>
+ <comment xml:lang="ru">Электронная таблица Quattro Pro</comment>
+ <comment xml:lang="sk">Zošit Quattro Pro</comment>
+@@ -18636,70 +19284,48 @@
+ <comment xml:lang="sq">Fletë llogaritjesh Quattro Pro</comment>
+ <comment xml:lang="sr">Кватро Про табела</comment>
+ <comment xml:lang="sv">Quattro Pro-kalkylblad</comment>
+- <comment xml:lang="tr">Quattro Pro çalışma sayfası</comment>
++ <comment xml:lang="tr">Quattro Pro hesap çizelgesi</comment>
+ <comment xml:lang="uk">ел. таблиця Quattro Pro</comment>
+ <comment xml:lang="vi">Bảng tính Quattro Pro</comment>
+- <comment xml:lang="zh_CN">Quattro Pro 电子表格</comment>
+- <comment xml:lang="zh_TW">Quattro Pro 試算表</comment>
++ <comment xml:lang="zh-CN">Quattro Pro 电子表格</comment>
++ <comment xml:lang="zh-TW">Quattro Pro 試算表</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <glob pattern="*.wb1"/>
+ <glob pattern="*.wb2"/>
+ <glob pattern="*.wb3"/>
+ </mime-type>
+ <mime-type type="application/x-quicktime-media-link">
+- <comment>QuickTime metalink playlist</comment>
+- <comment xml:lang="ar">قائمة تشغيل QuickTime metalink</comment>
+- <comment xml:lang="be@latin">śpis metaspasyłak na pieśni QuickTime</comment>
++ <comment>QuickTime playlist</comment>
+ <comment xml:lang="bg">Списък за изпълнение — QuickTime</comment>
+- <comment xml:lang="ca">llista de reproducció de metaenllaços QuickTime</comment>
+- <comment xml:lang="cs">seznam k přehrání metalink QuickTime</comment>
+- <comment xml:lang="da">QuickTime metalink-afspilningsliste</comment>
+- <comment xml:lang="de">QuickTime-Metalink-Wiedergabeliste</comment>
+- <comment xml:lang="el">Λίστα αναπαραγωγής metalinks QuickTime</comment>
+- <comment xml:lang="en_GB">QuickTime metalink playlist</comment>
+- <comment xml:lang="es">lista de reproducción de metaenlaces QuickTime</comment>
+- <comment xml:lang="eu">QuickTime meta-esteken erreprodukzio-zerrenda</comment>
+- <comment xml:lang="fi">QuickTime metalink -soittolista</comment>
+- <comment xml:lang="fo">QuickTime metaleinkju avspælingarlisti</comment>
+- <comment xml:lang="fr">liste de lecture metalink QuickTime</comment>
+- <comment xml:lang="ga">seinmliosta meiteanasc QuickTime</comment>
+- <comment xml:lang="gl">lista de reprodución de metaligazóns QuickTime</comment>
+- <comment xml:lang="he">רשימת השמעה מקושרת של QuickTime</comment>
+- <comment xml:lang="hr">QuickTime meta poveznica popisa izvođenja</comment>
+- <comment xml:lang="hu">QuickTime metalink lejátszólista</comment>
+- <comment xml:lang="ia">Lista de selection Metalink QuickTime</comment>
+- <comment xml:lang="id">Senarai berkas taut meta QuickTime</comment>
+- <comment xml:lang="it">Playlist metalink QuickTime</comment>
+- <comment xml:lang="ja">QuickTime メタリンク再生リスト</comment>
+- <comment xml:lang="kk">QuickTime метасілтемелер ойнау тізімі</comment>
+- <comment xml:lang="ko">퀵타임 메타링크 재생 목록</comment>
+- <comment xml:lang="lt">QuickTime metanuorodos grojaraštis</comment>
+- <comment xml:lang="lv">QuickTime metasaites repertuārs</comment>
+- <comment xml:lang="nb">QuickTime metalink-spilleliste</comment>
+- <comment xml:lang="nl">QuickTime metalink-afspeellijst</comment>
+- <comment xml:lang="nn">QuickTime metalink-speleliste</comment>
+- <comment xml:lang="oc">lista de lectura metalink QuickTime</comment>
+- <comment xml:lang="pl">Lista odtwarzania metaodnośników QuickTime</comment>
+- <comment xml:lang="pt">lista de reprodução QuickTime metalink</comment>
+- <comment xml:lang="pt_BR">Lista de reprodução metalink do QuickTime</comment>
+- <comment xml:lang="ro">Listă cu metalegături QuickTime</comment>
+- <comment xml:lang="ru">Список воспроизведения мета-ссылок QuickTime</comment>
+- <comment xml:lang="sk">Zoznam skladieb metalink QuickTime</comment>
+- <comment xml:lang="sl">Seznam predvajanja QuickTime</comment>
+- <comment xml:lang="sq">Listë titujsh metalink QuickTime</comment>
+- <comment xml:lang="sr">списак нумера мета везе Квик Тајма</comment>
+- <comment xml:lang="sv">QuickTime-metalänkspellista</comment>
+- <comment xml:lang="tr">QuickTime metalink çalma listesi</comment>
+- <comment xml:lang="uk">список відтворення QuickTime metalink</comment>
+- <comment xml:lang="vi">Danh mục nhạc siêu liên kết Quicktime</comment>
+- <comment xml:lang="zh_CN">QuickTime Metalink 播放列表</comment>
+- <comment xml:lang="zh_TW">QuickTime metalink 播放清單</comment>
++ <comment xml:lang="ca">llista de reproducció QuickTime</comment>
++ <comment xml:lang="da">QuickTime-afspilningsliste</comment>
++ <comment xml:lang="de">QuickTime-Wiedergabeliste</comment>
++ <comment xml:lang="en-GB">QuickTime playlist</comment>
++ <comment xml:lang="es">lista de reproducción de QuickTime</comment>
++ <comment xml:lang="eu">QuickTime erreprodukzio-zerrenda</comment>
++ <comment xml:lang="fi">QuickTime-soittolista</comment>
++ <comment xml:lang="fr">liste de lecture QuickTime</comment>
++ <comment xml:lang="hr">QuickTime popis izvođenja</comment>
++ <comment xml:lang="hu">QuickTime lejátszólista</comment>
++ <comment xml:lang="id">Daftar putar QuickTime</comment>
++ <comment xml:lang="it">Playlist QuickTime</comment>
++ <comment xml:lang="kk">QuickTime ойнау тізімі</comment>
++ <comment xml:lang="ko">퀵타임 재생 목록</comment>
++ <comment xml:lang="pl">Lista odtwarzania QuickTime</comment>
++ <comment xml:lang="pt-BR">Lista de reprodução do QuickTime</comment>
++ <comment xml:lang="ru">Список воспроизведения QuickTime</comment>
++ <comment xml:lang="sk">Zoznam skladieb QuickTime</comment>
++ <comment xml:lang="sv">QuickTime-spellista</comment>
++ <comment xml:lang="tr">QuickTime çalma listesi</comment>
++ <comment xml:lang="uk">список відтворення QuickTime</comment>
++ <comment xml:lang="zh-CN">QuickTime 播放列表</comment>
++ <comment xml:lang="zh-TW">QuickTime 播放清單</comment>
+ <generic-icon name="video-x-generic"/>
+ <sub-class-of type="video/quicktime"/>
+ <alias type="application/x-quicktimeplayer"/>
+ <magic priority="60">
+ <match value="&lt;?xml" type="string" offset="0">
+- <match value="&lt;?quicktime" type="string" offset="0:64"/>
++ <match type="string" value="&lt;?quicktime" offset="0:64"/>
+ </match>
+ <match value="RTSPtext" type="string" offset="0"/>
+ <match value="rtsptext" type="string" offset="0"/>
+@@ -18709,10 +19335,11 @@
+ </mime-type>
+ <mime-type type="application/x-qw">
+ <comment>Quicken document</comment>
++ <comment xml:lang="af">Quicken-dokument</comment>
+ <comment xml:lang="ar">مستند Quicken</comment>
+ <comment xml:lang="ast">Documentu de Quicken</comment>
+ <comment xml:lang="az">Quicken sənədi</comment>
+- <comment xml:lang="be@latin">Dakument Quicken</comment>
++ <comment xml:lang="be-Latn">Dakument Quicken</comment>
+ <comment xml:lang="bg">Документ — Quicken</comment>
+ <comment xml:lang="ca">document Quicken</comment>
+ <comment xml:lang="cs">dokument Quicken</comment>
+@@ -18720,13 +19347,14 @@
+ <comment xml:lang="da">Quickendokument</comment>
+ <comment xml:lang="de">Quicken-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Quicken</comment>
+- <comment xml:lang="en_GB">Quicken document</comment>
++ <comment xml:lang="en-GB">Quicken document</comment>
+ <comment xml:lang="eo">Quicken-dokumento</comment>
+ <comment xml:lang="es">documento de Quicken</comment>
+ <comment xml:lang="eu">Quicken dokumentua</comment>
+ <comment xml:lang="fi">Quicken-asiakirja</comment>
+ <comment xml:lang="fo">Quicken skjal</comment>
+ <comment xml:lang="fr">document Quicken</comment>
++ <comment xml:lang="fur">document Quicken</comment>
+ <comment xml:lang="ga">cáipéis Quicken</comment>
+ <comment xml:lang="gl">documento de Quicken</comment>
+ <comment xml:lang="he">מסמך של Quicken</comment>
+@@ -18747,7 +19375,7 @@
+ <comment xml:lang="oc">document Quicken</comment>
+ <comment xml:lang="pl">Dokument Quicken</comment>
+ <comment xml:lang="pt">documento Quicken</comment>
+- <comment xml:lang="pt_BR">Documento do Quicken</comment>
++ <comment xml:lang="pt-BR">Documento do Quicken</comment>
+ <comment xml:lang="ro">Document Quicken</comment>
+ <comment xml:lang="ru">Документ Quicken</comment>
+ <comment xml:lang="sk">Dokument Quicken</comment>
+@@ -18758,15 +19386,16 @@
+ <comment xml:lang="tr">Quicken belgesi</comment>
+ <comment xml:lang="uk">документ Quicken</comment>
+ <comment xml:lang="vi">Tài liệu Quicken</comment>
+- <comment xml:lang="zh_CN">Quicken 文档</comment>
+- <comment xml:lang="zh_TW">Quicken 文件</comment>
++ <comment xml:lang="zh-CN">Quicken 文档</comment>
++ <comment xml:lang="zh-TW">Quicken 文件</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <glob pattern="*.qif"/>
+ </mime-type>
+ <mime-type type="application/vnd.rar">
+ <comment>RAR archive</comment>
++ <comment xml:lang="af">RAR-argief</comment>
+ <comment xml:lang="ar">أرشيف RAR</comment>
+- <comment xml:lang="be@latin">Archiŭ RAR</comment>
++ <comment xml:lang="be-Latn">Archiŭ RAR</comment>
+ <comment xml:lang="bg">Архив — RAR</comment>
+ <comment xml:lang="ca">arxiu RAR</comment>
+ <comment xml:lang="cs">archiv RAR</comment>
+@@ -18774,13 +19403,14 @@
+ <comment xml:lang="da">RAR-arkiv</comment>
+ <comment xml:lang="de">RAR-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο RAR</comment>
+- <comment xml:lang="en_GB">RAR archive</comment>
++ <comment xml:lang="en-GB">RAR archive</comment>
+ <comment xml:lang="eo">RAR-arkivo</comment>
+ <comment xml:lang="es">archivador RAR</comment>
+ <comment xml:lang="eu">RAR artxiboa</comment>
+ <comment xml:lang="fi">RAR-arkisto</comment>
+ <comment xml:lang="fo">RAR skjalasavn</comment>
+ <comment xml:lang="fr">archive RAR</comment>
++ <comment xml:lang="fur">archivi RAR</comment>
+ <comment xml:lang="ga">cartlann RAR</comment>
+ <comment xml:lang="gl">ficheiro RAR</comment>
+ <comment xml:lang="he">ארכיון RAR</comment>
+@@ -18801,7 +19431,7 @@
+ <comment xml:lang="oc">archiu RAR</comment>
+ <comment xml:lang="pl">Archiwum RAR</comment>
+ <comment xml:lang="pt">arquivo RAR</comment>
+- <comment xml:lang="pt_BR">Pacote RAR</comment>
++ <comment xml:lang="pt-BR">Pacote RAR</comment>
+ <comment xml:lang="ro">Arhivă RAR</comment>
+ <comment xml:lang="ru">Архив RAR</comment>
+ <comment xml:lang="sk">Archív RAR</comment>
+@@ -18812,35 +19442,37 @@
+ <comment xml:lang="tr">RAR arşivi</comment>
+ <comment xml:lang="uk">архів RAR</comment>
+ <comment xml:lang="vi">Kho nén RAR</comment>
+- <comment xml:lang="zh_CN">RAR 归档文件</comment>
+- <comment xml:lang="zh_TW">RAR 封存檔</comment>
++ <comment xml:lang="zh-CN">RAR 归档文件</comment>
++ <comment xml:lang="zh-TW">RAR 封存檔</comment>
+ <acronym>RAR</acronym>
+ <expanded-acronym>Roshal ARchive</expanded-acronym>
+ <alias type="application/x-rar"/>
+ <alias type="application/x-rar-compressed"/>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="60">
+- <match value="Rar!" type="string" offset="0"/>
++ <match type="string" value="Rar!" offset="0"/>
+ </magic>
+ <glob pattern="*.rar"/>
+ </mime-type>
+ <mime-type type="application/x-dar">
+ <comment>DAR archive</comment>
++ <comment xml:lang="af">DAR-argief</comment>
+ <comment xml:lang="ar">أرشيف DAR</comment>
+- <comment xml:lang="be@latin">Archiŭ DAR</comment>
++ <comment xml:lang="be-Latn">Archiŭ DAR</comment>
+ <comment xml:lang="bg">Архив — DAR</comment>
+ <comment xml:lang="ca">arxiu DAR</comment>
+ <comment xml:lang="cs">archiv DAR</comment>
+ <comment xml:lang="da">DAR-arkiv</comment>
+ <comment xml:lang="de">DAR-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο DAR</comment>
+- <comment xml:lang="en_GB">DAR archive</comment>
++ <comment xml:lang="en-GB">DAR archive</comment>
+ <comment xml:lang="eo">DAR-arkivo</comment>
+ <comment xml:lang="es">archivador DAR</comment>
+ <comment xml:lang="eu">DAR artxiboa</comment>
+ <comment xml:lang="fi">DAR-arkisto</comment>
+ <comment xml:lang="fo">DAR skjalasavn</comment>
+ <comment xml:lang="fr">archive DAR</comment>
++ <comment xml:lang="fur">archivi DAR</comment>
+ <comment xml:lang="ga">cartlann DAR</comment>
+ <comment xml:lang="gl">arquivo DAR</comment>
+ <comment xml:lang="he">ארכיון DAR</comment>
+@@ -18861,7 +19493,7 @@
+ <comment xml:lang="oc">archiu DAR</comment>
+ <comment xml:lang="pl">Archiwum DAR</comment>
+ <comment xml:lang="pt">arquivo DAR</comment>
+- <comment xml:lang="pt_BR">Pacote DAR</comment>
++ <comment xml:lang="pt-BR">Pacote DAR</comment>
+ <comment xml:lang="ro">Arhivă DAR</comment>
+ <comment xml:lang="ru">Архив DAR</comment>
+ <comment xml:lang="sk">Archív DAR</comment>
+@@ -18872,31 +19504,33 @@
+ <comment xml:lang="tr">DAR arşivi</comment>
+ <comment xml:lang="uk">архів DAR</comment>
+ <comment xml:lang="vi">Kho nén DAR</comment>
+- <comment xml:lang="zh_CN">DAR 归档文件</comment>
+- <comment xml:lang="zh_TW">DAR 封存檔</comment>
++ <comment xml:lang="zh-CN">DAR 归档文件</comment>
++ <comment xml:lang="zh-TW">DAR 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic>
+- <match value="123" type="big32" offset="0"/>
++ <match type="big32" value="123" offset="0"/>
+ </magic>
+ <glob pattern="*.dar"/>
+ </mime-type>
+ <mime-type type="application/x-alz">
+ <comment>Alzip archive</comment>
++ <comment xml:lang="af">Alzip-argief</comment>
+ <comment xml:lang="ar">أرشيف Alzip</comment>
+- <comment xml:lang="be@latin">Archiŭ Alzip</comment>
++ <comment xml:lang="be-Latn">Archiŭ Alzip</comment>
+ <comment xml:lang="bg">Архив — alzip</comment>
+ <comment xml:lang="ca">arxiu Alzip</comment>
+ <comment xml:lang="cs">archiv Alzip</comment>
+- <comment xml:lang="da">Alziparkiv</comment>
++ <comment xml:lang="da">Alzip-arkiv</comment>
+ <comment xml:lang="de">Alzip-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο Alzip</comment>
+- <comment xml:lang="en_GB">Alzip archive</comment>
++ <comment xml:lang="en-GB">Alzip archive</comment>
+ <comment xml:lang="eo">Alzip-arkivo</comment>
+ <comment xml:lang="es">archivador Alzip</comment>
+ <comment xml:lang="eu">Alzip artxiboa</comment>
+ <comment xml:lang="fi">Alzip-arkisto</comment>
+ <comment xml:lang="fo">Alsip skjalasavn</comment>
+ <comment xml:lang="fr">archive alzip</comment>
++ <comment xml:lang="fur">archivi Alzip</comment>
+ <comment xml:lang="ga">cartlann Alzip</comment>
+ <comment xml:lang="gl">arquivo Alzip</comment>
+ <comment xml:lang="he">ארכיון Alzip</comment>
+@@ -18917,7 +19551,7 @@
+ <comment xml:lang="oc">archiu alzip</comment>
+ <comment xml:lang="pl">Archiwum alzip</comment>
+ <comment xml:lang="pt">arquivo Alzip</comment>
+- <comment xml:lang="pt_BR">Pacote Alzip</comment>
++ <comment xml:lang="pt-BR">Pacote Alzip</comment>
+ <comment xml:lang="ro">Arhivă Alzip</comment>
+ <comment xml:lang="ru">Архив ALZIP</comment>
+ <comment xml:lang="sk">Archív Alzip</comment>
+@@ -18928,31 +19562,32 @@
+ <comment xml:lang="tr">Alzip arşivi</comment>
+ <comment xml:lang="uk">архів Alzip</comment>
+ <comment xml:lang="vi">Kho nén Alzip</comment>
+- <comment xml:lang="zh_CN">Alzip 归档文件</comment>
+- <comment xml:lang="zh_TW">Alzip 封存檔</comment>
++ <comment xml:lang="zh-CN">Alzip 归档文件</comment>
++ <comment xml:lang="zh-TW">Alzip 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="50">
+- <match value="ALZ" type="string" offset="0"/>
++ <match type="string" value="ALZ" offset="0"/>
+ </magic>
+ <glob pattern="*.alz"/>
+ </mime-type>
+ <mime-type type="text/x-reject">
+ <comment>rejected patch</comment>
+ <comment xml:lang="ar">رقعة مرفوضة</comment>
+- <comment xml:lang="be@latin">niepryniaty patch</comment>
++ <comment xml:lang="be-Latn">niepryniaty patch</comment>
+ <comment xml:lang="bg">Отхвърлен файл с кръпка</comment>
+ <comment xml:lang="ca">pedaç rebutjat</comment>
+ <comment xml:lang="cs">odmítnutá záplata</comment>
+- <comment xml:lang="da">afvist tekstlap</comment>
++ <comment xml:lang="da">afvist rettelse</comment>
+ <comment xml:lang="de">Abgelehnter Patch</comment>
+ <comment xml:lang="el">Διόρθωση που απορρίφθηκε</comment>
+- <comment xml:lang="en_GB">rejected patch</comment>
++ <comment xml:lang="en-GB">rejected patch</comment>
+ <comment xml:lang="eo">reĵeta flikaĵo</comment>
+ <comment xml:lang="es">parche rechazado</comment>
+ <comment xml:lang="eu">baztertutako adabakia</comment>
+ <comment xml:lang="fi">hylättyjen muutosten tiedosto</comment>
+ <comment xml:lang="fo">vrakað rætting</comment>
+ <comment xml:lang="fr">correctif rejeté</comment>
++ <comment xml:lang="fur">blec refudât</comment>
+ <comment xml:lang="ga">paiste diúltaithe</comment>
+ <comment xml:lang="gl">parche rexeitado</comment>
+ <comment xml:lang="he">טלאי שנדחה</comment>
+@@ -18973,7 +19608,7 @@
+ <comment xml:lang="oc">correctiu regetat</comment>
+ <comment xml:lang="pl">Odrzucona łata</comment>
+ <comment xml:lang="pt">patch rejeitado</comment>
+- <comment xml:lang="pt_BR">Arquivo de patch rejeitado</comment>
++ <comment xml:lang="pt-BR">Arquivo de patch rejeitado</comment>
+ <comment xml:lang="ro">petec respsins</comment>
+ <comment xml:lang="ru">Отклонённый патч</comment>
+ <comment xml:lang="sk">Odmietnutá záplata</comment>
+@@ -18984,8 +19619,8 @@
+ <comment xml:lang="tr">reddedilmiş yama</comment>
+ <comment xml:lang="uk">відхилена латка</comment>
+ <comment xml:lang="vi">đắp vá bị từ chối</comment>
+- <comment xml:lang="zh_CN">拒绝的补丁</comment>
+- <comment xml:lang="zh_TW">回絕的修補</comment>
++ <comment xml:lang="zh-CN">拒绝的补丁</comment>
++ <comment xml:lang="zh-TW">回絕的修補</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-generic"/>
+ <alias type="application/x-reject"/>
+@@ -18993,21 +19628,23 @@
+ </mime-type>
+ <mime-type type="application/x-rpm">
+ <comment>RPM package</comment>
++ <comment xml:lang="af">RPM-pakket</comment>
+ <comment xml:lang="ar">حزمة RPM</comment>
+- <comment xml:lang="be@latin">Pakunak RPM</comment>
++ <comment xml:lang="be-Latn">Pakunak RPM</comment>
+ <comment xml:lang="bg">Пакет — RPM</comment>
+ <comment xml:lang="ca">paquet RPM</comment>
+ <comment xml:lang="cs">balíček RPM</comment>
+ <comment xml:lang="da">RPM-pakke</comment>
+ <comment xml:lang="de">RPM-Paket</comment>
+ <comment xml:lang="el">Πακέτο RPM</comment>
+- <comment xml:lang="en_GB">RPM package</comment>
++ <comment xml:lang="en-GB">RPM package</comment>
+ <comment xml:lang="eo">RPM-pakaĵo</comment>
+ <comment xml:lang="es">paquete RPM</comment>
+ <comment xml:lang="eu">RPM paketea</comment>
+ <comment xml:lang="fi">RPM-paketti</comment>
+ <comment xml:lang="fo">RPM pakki</comment>
+ <comment xml:lang="fr">paquet RPM</comment>
++ <comment xml:lang="fur">pachet RPM</comment>
+ <comment xml:lang="ga">pacáiste RPM</comment>
+ <comment xml:lang="gl">paquete RFM</comment>
+ <comment xml:lang="he">חבילת RPM</comment>
+@@ -19028,7 +19665,7 @@
+ <comment xml:lang="oc">paquet RPM</comment>
+ <comment xml:lang="pl">Pakiet RPM</comment>
+ <comment xml:lang="pt">pacote RPM</comment>
+- <comment xml:lang="pt_BR">Pacote RPM</comment>
++ <comment xml:lang="pt-BR">Pacote RPM</comment>
+ <comment xml:lang="ro">Pachet RPM</comment>
+ <comment xml:lang="ru">Пакет RPM</comment>
+ <comment xml:lang="sk">Balík RPM</comment>
+@@ -19039,27 +19676,30 @@
+ <comment xml:lang="tr">RPM paketi</comment>
+ <comment xml:lang="uk">пакунок RPM</comment>
+ <comment xml:lang="vi">Gói RPM</comment>
+- <comment xml:lang="zh_CN">RPM 软件包</comment>
+- <comment xml:lang="zh_TW">RPM 軟體包</comment>
++ <comment xml:lang="zh-CN">RPM 软件包</comment>
++ <comment xml:lang="zh-TW">RPM 軟體包</comment>
+ <generic-icon name="package-x-generic"/>
+ <alias type="application/x-redhat-package-manager"/>
+ <magic priority="50">
+- <match value="\xed\xab\xee\xdb" type="string" offset="0"/>
++ <match type="string" value="\xed\xab\xee\xdb" offset="0"/>
+ </magic>
+ <glob pattern="*.rpm"/>
+ </mime-type>
+ <mime-type type="application/x-source-rpm">
+ <comment>Source RPM package</comment>
++ <comment xml:lang="af">Bron-RPM-pakket</comment>
++ <comment xml:lang="bg">Пакет — RPM с изходен код</comment>
+ <comment xml:lang="ca">paquet RPM de codi font</comment>
+ <comment xml:lang="cs">zdrojový balíček RPM</comment>
+ <comment xml:lang="da">Kilde RPM-pakke</comment>
+ <comment xml:lang="de">Quell-RPM-Paket</comment>
+ <comment xml:lang="el">Πακέτο πηγής RPM</comment>
+- <comment xml:lang="en_GB">Source RPM package</comment>
++ <comment xml:lang="en-GB">Source RPM package</comment>
+ <comment xml:lang="es">paquete de fuente RPM</comment>
+ <comment xml:lang="eu">Iturburu RPM paketea</comment>
+ <comment xml:lang="fi">RPM-lähdepaketti</comment>
+ <comment xml:lang="fr">paquet source RPM</comment>
++ <comment xml:lang="fur">pachet sorzint RPM</comment>
+ <comment xml:lang="ga">pacáiste foinse RPM</comment>
+ <comment xml:lang="gl">Paquete RPM de fontes</comment>
+ <comment xml:lang="he">חבילת מקור RPM</comment>
+@@ -19075,7 +19715,7 @@
+ <comment xml:lang="oc">paquet font RPM</comment>
+ <comment xml:lang="pl">Źródłowy pakiet RPM</comment>
+ <comment xml:lang="pt">pacote origem RPM</comment>
+- <comment xml:lang="pt_BR">Pacote fonte RPM</comment>
++ <comment xml:lang="pt-BR">Pacote fonte RPM</comment>
+ <comment xml:lang="ru">Пакет RPM с исходным кодом</comment>
+ <comment xml:lang="sk">Zdrojový balík RPM</comment>
+ <comment xml:lang="sl">Paket izvorne kode RPM</comment>
+@@ -19083,8 +19723,8 @@
+ <comment xml:lang="sv">Käll-RPM-paket</comment>
+ <comment xml:lang="tr">Kaynak RPM paketi</comment>
+ <comment xml:lang="uk">пакунок RPM з початковим кодом</comment>
+- <comment xml:lang="zh_CN">源码 RPM 软件包</comment>
+- <comment xml:lang="zh_TW">來源 RPM 軟體包</comment>
++ <comment xml:lang="zh-CN">源码 RPM 软件包</comment>
++ <comment xml:lang="zh-TW">來源 RPM 軟體包</comment>
+ <generic-icon name="package-x-generic"/>
+ <sub-class-of type="application/x-rpm"/>
+ <glob pattern="*.src.rpm"/>
+@@ -19092,21 +19732,23 @@
+ </mime-type>
+ <mime-type type="application/x-ruby">
+ <comment>Ruby script</comment>
++ <comment xml:lang="af">Ruby-skrip</comment>
+ <comment xml:lang="ar">سكربت روبي</comment>
+- <comment xml:lang="be@latin">Skrypt Ruby</comment>
++ <comment xml:lang="be-Latn">Skrypt Ruby</comment>
+ <comment xml:lang="bg">Скрипт — Ruby</comment>
+ <comment xml:lang="ca">script Ruby</comment>
+ <comment xml:lang="cs">skript Ruby</comment>
+- <comment xml:lang="da">Rubyprogram</comment>
++ <comment xml:lang="da">Ruby-program</comment>
+ <comment xml:lang="de">Ruby-Skript</comment>
+ <comment xml:lang="el">Δέσμη ενεργειών Ruby</comment>
+- <comment xml:lang="en_GB">Ruby script</comment>
++ <comment xml:lang="en-GB">Ruby script</comment>
+ <comment xml:lang="eo">Ruby-skripto</comment>
+ <comment xml:lang="es">secuencia de órdenes en Ruby</comment>
+ <comment xml:lang="eu">Ruby script-a</comment>
+ <comment xml:lang="fi">Ruby-komentotiedosto</comment>
+ <comment xml:lang="fo">Ruby boðrøð</comment>
+ <comment xml:lang="fr">script Ruby</comment>
++ <comment xml:lang="fur">script Ruby</comment>
+ <comment xml:lang="ga">script Ruby</comment>
+ <comment xml:lang="gl">Script de Ruby</comment>
+ <comment xml:lang="he">תסריט Ruby</comment>
+@@ -19127,7 +19769,7 @@
+ <comment xml:lang="oc">escript Ruby</comment>
+ <comment xml:lang="pl">Skrypt Ruby</comment>
+ <comment xml:lang="pt">script Ruby</comment>
+- <comment xml:lang="pt_BR">Script Ruby</comment>
++ <comment xml:lang="pt-BR">Script Ruby</comment>
+ <comment xml:lang="ro">Script Ruby</comment>
+ <comment xml:lang="ru">Сценарий Ruby</comment>
+ <comment xml:lang="sk">Skript Ruby</comment>
+@@ -19138,34 +19780,36 @@
+ <comment xml:lang="tr">Ruby betiği</comment>
+ <comment xml:lang="uk">скрипт Ruby</comment>
+ <comment xml:lang="vi">Văn lệnh Ruby</comment>
+- <comment xml:lang="zh_CN">Ruby 脚本</comment>
+- <comment xml:lang="zh_TW">Ruby 指令稿</comment>
++ <comment xml:lang="zh-CN">Ruby 脚本</comment>
++ <comment xml:lang="zh-TW">Ruby 指令稿</comment>
+ <sub-class-of type="application/x-executable"/>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-script"/>
+ <magic>
+- <match value="/bin/env ruby" type="string" offset="2:16"/>
+- <match value="/bin/ruby" type="string" offset="2:16"/>
++ <match type="string" value="/bin/env ruby" offset="2:16"/>
++ <match type="string" value="/bin/ruby" offset="2:16"/>
+ </magic>
+ <glob pattern="*.rb"/>
+ </mime-type>
+ <mime-type type="application/x-markaby">
+ <comment>Markaby script</comment>
++ <comment xml:lang="af">Markaby-skrip</comment>
+ <comment xml:lang="ar">سكربت Markaby</comment>
+- <comment xml:lang="be@latin">Skrypt Markaby</comment>
++ <comment xml:lang="be-Latn">Skrypt Markaby</comment>
+ <comment xml:lang="bg">Скрипт — Markaby</comment>
+ <comment xml:lang="ca">script Markaby</comment>
+ <comment xml:lang="cs">skript Markaby</comment>
+- <comment xml:lang="da">Markabyprogram</comment>
++ <comment xml:lang="da">Markaby-program</comment>
+ <comment xml:lang="de">Markaby-Skript</comment>
+ <comment xml:lang="el">Δέσμη ενεργειών Markaby</comment>
+- <comment xml:lang="en_GB">Markaby script</comment>
++ <comment xml:lang="en-GB">Markaby script</comment>
+ <comment xml:lang="eo">Markaby-skripto</comment>
+ <comment xml:lang="es">secuencia de órdenes en Markaby</comment>
+ <comment xml:lang="eu">Markaby script-a</comment>
+ <comment xml:lang="fi">Markaby-komentotiedosto</comment>
+ <comment xml:lang="fo">Markaby boðrøð</comment>
+ <comment xml:lang="fr">script Markaby</comment>
++ <comment xml:lang="fur">script Markaby</comment>
+ <comment xml:lang="ga">script Markaby</comment>
+ <comment xml:lang="gl">Script de Markaby</comment>
+ <comment xml:lang="he">תסריט Markby</comment>
+@@ -19186,7 +19830,7 @@
+ <comment xml:lang="oc">escript Markaby</comment>
+ <comment xml:lang="pl">Skrypt Markaby</comment>
+ <comment xml:lang="pt">script Markaby</comment>
+- <comment xml:lang="pt_BR">Script Markaby</comment>
++ <comment xml:lang="pt-BR">Script Markaby</comment>
+ <comment xml:lang="ro">Script Markaby</comment>
+ <comment xml:lang="ru">Сценарий Markaby</comment>
+ <comment xml:lang="sk">Skript Markaby</comment>
+@@ -19197,24 +19841,27 @@
+ <comment xml:lang="tr">Markaby betiği</comment>
+ <comment xml:lang="uk">скрипт Markaby</comment>
+ <comment xml:lang="vi">Văn lệnh Markaby</comment>
+- <comment xml:lang="zh_CN">RMarkaby 脚本</comment>
+- <comment xml:lang="zh_TW">Markaby 指令稿</comment>
++ <comment xml:lang="zh-CN">RMarkaby 脚本</comment>
++ <comment xml:lang="zh-TW">Markaby 指令稿</comment>
+ <sub-class-of type="application/x-ruby"/>
+ <generic-icon name="text-x-script"/>
+ <glob pattern="*.mab"/>
+ </mime-type>
+ <mime-type type="text/rust">
+ <comment>Rust source code</comment>
++ <comment xml:lang="af">Rust-bronkode</comment>
++ <comment xml:lang="bg">Изходен код — Rust</comment>
+ <comment xml:lang="ca">codi font en Rust</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce Rust</comment>
+ <comment xml:lang="da">Rust-kildekode</comment>
+ <comment xml:lang="de">Rust-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας Rust</comment>
+- <comment xml:lang="en_GB">Rust source code</comment>
++ <comment xml:lang="en-GB">Rust source code</comment>
+ <comment xml:lang="es">código fuente en Rust</comment>
+ <comment xml:lang="eu">Rust iturburu-kodea</comment>
+ <comment xml:lang="fi">Rust-lähdekoodi</comment>
+ <comment xml:lang="fr">code source Rust</comment>
++ <comment xml:lang="fur">codiç sorzint Rust</comment>
+ <comment xml:lang="ga">cód foinseach Rust</comment>
+ <comment xml:lang="he">קוד מקור של Rust</comment>
+ <comment xml:lang="hr">Rust izvorni kôd</comment>
+@@ -19227,35 +19874,38 @@
+ <comment xml:lang="oc">còde font Rust</comment>
+ <comment xml:lang="pl">Kod źródłowy Rust</comment>
+ <comment xml:lang="pt">código origem Rust</comment>
+- <comment xml:lang="pt_BR">Código-fonte Rust</comment>
++ <comment xml:lang="pt-BR">Código-fonte Rust</comment>
+ <comment xml:lang="ru">Исходный код Rust</comment>
+ <comment xml:lang="sk">Zdrojový kód Rust</comment>
++ <comment xml:lang="sl">Izvorna koda Rust</comment>
+ <comment xml:lang="sr">Раст изворни ко̂д</comment>
+ <comment xml:lang="sv">Rust-källkod</comment>
+ <comment xml:lang="tr">Rust kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою Rust</comment>
+- <comment xml:lang="zh_CN">Rust 源代码</comment>
+- <comment xml:lang="zh_TW">Rust 源碼</comment>
++ <comment xml:lang="zh-CN">Rust 源代码</comment>
++ <comment xml:lang="zh-TW">Rust 源碼</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.rs"/>
+ </mime-type>
+ <mime-type type="application/x-sc">
+ <comment>SC/Xspread spreadsheet</comment>
++ <comment xml:lang="af">SC/Xspread-sigblad</comment>
+ <comment xml:lang="ar">جدول SC/Xspread</comment>
+- <comment xml:lang="be@latin">Raźlikovy arkuš SC/Xspread</comment>
++ <comment xml:lang="be-Latn">Raźlikovy arkuš SC/Xspread</comment>
+ <comment xml:lang="bg">Таблица — SC/Xspread</comment>
+ <comment xml:lang="ca">full de càlcul de SC/Xspread</comment>
+ <comment xml:lang="cs">sešit SC/Xspread</comment>
+ <comment xml:lang="da">SC/Xspread-regneark</comment>
+ <comment xml:lang="de">SX/Xspread-Tabelle</comment>
+ <comment xml:lang="el">Λογιστικό φύλλο SC/Xspread</comment>
+- <comment xml:lang="en_GB">SC/Xspread spreadsheet</comment>
++ <comment xml:lang="en-GB">SC/Xspread spreadsheet</comment>
+ <comment xml:lang="eo">SC/Xspread-kalkultabelo</comment>
+ <comment xml:lang="es">hoja de cálculo SC/Xspread</comment>
+ <comment xml:lang="eu">SC/Xspread kalkulu-orria</comment>
+ <comment xml:lang="fi">SC/Xspread-taulukko</comment>
+ <comment xml:lang="fo">SC/Xspread rokniark</comment>
+ <comment xml:lang="fr">feuille de calcul SC/Xspread</comment>
++ <comment xml:lang="fur">sfuei di calcul SC/Xspread</comment>
+ <comment xml:lang="ga">scarbhileog SC/Xspread</comment>
+ <comment xml:lang="gl">folla de cálculo SC/Xspread</comment>
+ <comment xml:lang="he">גליון נתונים של SC/Xspread</comment>
+@@ -19275,7 +19925,7 @@
+ <comment xml:lang="oc">fuèlh de calcul SC/Xspread</comment>
+ <comment xml:lang="pl">Arkusz SC/Xspread</comment>
+ <comment xml:lang="pt">folha de cálculo SC/Xspread</comment>
+- <comment xml:lang="pt_BR">Planilha do SC/Xspread</comment>
++ <comment xml:lang="pt-BR">Planilha do SC/Xspread</comment>
+ <comment xml:lang="ro">Foaie de calcul SC/Xspread</comment>
+ <comment xml:lang="ru">Электронная таблица SC/Xspread</comment>
+ <comment xml:lang="sk">Zošit SC/Xspread</comment>
+@@ -19283,35 +19933,37 @@
+ <comment xml:lang="sq">Fletë llogaritjesh SC/Xspread</comment>
+ <comment xml:lang="sr">табела СЦ/Икс-табеле</comment>
+ <comment xml:lang="sv">SC/Xspread-kalkylblad</comment>
+- <comment xml:lang="tr">SC/Xspread çalışma sayfası</comment>
++ <comment xml:lang="tr">SC/Xspread hesap çizelgesi</comment>
+ <comment xml:lang="uk">ел. таблиця SC/Xspread</comment>
+ <comment xml:lang="vi">Bảng tính SC/Xspread</comment>
+- <comment xml:lang="zh_CN">SC/Xspread 电子表格</comment>
+- <comment xml:lang="zh_TW">SC/Xspread 試算表</comment>
++ <comment xml:lang="zh-CN">SC/Xspread 电子表格</comment>
++ <comment xml:lang="zh-TW">SC/Xspread 試算表</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <magic priority="50">
+- <match value="Spreadsheet" type="string" offset="38"/>
++ <match type="string" value="Spreadsheet" offset="38"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-shar">
+ <comment>shell archive</comment>
++ <comment xml:lang="af">shell-argief</comment>
+ <comment xml:lang="ar">أرشيف شِل</comment>
+ <comment xml:lang="az">qabıq arxivi</comment>
+- <comment xml:lang="be@latin">archiŭ abałonki</comment>
++ <comment xml:lang="be-Latn">archiŭ abałonki</comment>
+ <comment xml:lang="bg">Архив на обвивката</comment>
+ <comment xml:lang="ca">arxiu de shell</comment>
+ <comment xml:lang="cs">archiv shellu</comment>
+ <comment xml:lang="cy">archif plisgyn</comment>
+- <comment xml:lang="da">skalarkiv</comment>
++ <comment xml:lang="da">skal-arkiv</comment>
+ <comment xml:lang="de">Shell-Archiv</comment>
+ <comment xml:lang="el">Αρχείο κέλυφους</comment>
+- <comment xml:lang="en_GB">shell archive</comment>
++ <comment xml:lang="en-GB">shell archive</comment>
+ <comment xml:lang="eo">ŝel-arkivo</comment>
+ <comment xml:lang="es">archivador shell</comment>
+ <comment xml:lang="eu">shell artxiboa</comment>
+ <comment xml:lang="fi">komentotulkkiarkisto</comment>
+ <comment xml:lang="fo">skel savn</comment>
+ <comment xml:lang="fr">archive shell</comment>
++ <comment xml:lang="fur">archivi shell</comment>
+ <comment xml:lang="ga">cartlann bhlaoisce</comment>
+ <comment xml:lang="gl">ficheiro shell</comment>
+ <comment xml:lang="he">ארכיון מעטפת</comment>
+@@ -19332,7 +19984,7 @@
+ <comment xml:lang="oc">archiu shell</comment>
+ <comment xml:lang="pl">Archiwum powłoki</comment>
+ <comment xml:lang="pt">arquivo de terminal</comment>
+- <comment xml:lang="pt_BR">Pacote shell</comment>
++ <comment xml:lang="pt-BR">Pacote shell</comment>
+ <comment xml:lang="ro">arhivă shell</comment>
+ <comment xml:lang="ru">Архив shell</comment>
+ <comment xml:lang="sk">Archív shellu</comment>
+@@ -19343,27 +19995,29 @@
+ <comment xml:lang="tr">kabuk arşivi</comment>
+ <comment xml:lang="uk">архів оболонки</comment>
+ <comment xml:lang="vi">kho trình bao</comment>
+- <comment xml:lang="zh_CN">shell 归档文件</comment>
+- <comment xml:lang="zh_TW">shell 封存檔</comment>
++ <comment xml:lang="zh-CN">shell 归档文件</comment>
++ <comment xml:lang="zh-TW">shell 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <glob pattern="*.shar"/>
+ </mime-type>
+ <mime-type type="application/x-shared-library-la">
+ <comment>libtool shared library</comment>
++ <comment xml:lang="af">libtool- gedeelde biblioteek</comment>
+ <comment xml:lang="ar">مكتبة libtool المشتركة</comment>
+- <comment xml:lang="be@latin">supolnaja biblijateka libtool</comment>
++ <comment xml:lang="be-Latn">supolnaja biblijateka libtool</comment>
+ <comment xml:lang="bg">Споделена библиотека — libtool</comment>
+ <comment xml:lang="ca">biblioteca compartida libtool</comment>
+ <comment xml:lang="cs">sdílená knihovna libtool</comment>
+ <comment xml:lang="da">libtool delt bibliotek</comment>
+ <comment xml:lang="de">Gemeinsame libtool-Bibliothek</comment>
+ <comment xml:lang="el">Κοινόχρηστη βιβλιοθήκη libtool</comment>
+- <comment xml:lang="en_GB">libtool shared library</comment>
++ <comment xml:lang="en-GB">libtool shared library</comment>
+ <comment xml:lang="es">biblioteca compartida de libtool</comment>
+ <comment xml:lang="eu">libtool partekatutako liburutegia</comment>
+ <comment xml:lang="fi">jaettu libtool-kirjasto</comment>
+ <comment xml:lang="fo">libtool felagssavn</comment>
+ <comment xml:lang="fr">bibliothèque partagée libtool</comment>
++ <comment xml:lang="fur">librarie condividude libtool</comment>
+ <comment xml:lang="ga">comhleabharlann libtool</comment>
+ <comment xml:lang="gl">biblioteca compartida de libtool</comment>
+ <comment xml:lang="he">ספרייה משותפת של libtool</comment>
+@@ -19383,7 +20037,7 @@
+ <comment xml:lang="oc">bibliotèca partejada libtool</comment>
+ <comment xml:lang="pl">Biblioteka współdzielona libtool</comment>
+ <comment xml:lang="pt">biblioteca partilhada libtool</comment>
+- <comment xml:lang="pt_BR">Biblioteca compartilhada libtool</comment>
++ <comment xml:lang="pt-BR">Biblioteca compartilhada libtool</comment>
+ <comment xml:lang="ro">bibliotecă partajată libtool</comment>
+ <comment xml:lang="ru">Разделяемая библиотека libtool</comment>
+ <comment xml:lang="sk">Zdieľaná knižnica libtool</comment>
+@@ -19394,17 +20048,18 @@
+ <comment xml:lang="tr">libtool paylaşımlı kitaplığı</comment>
+ <comment xml:lang="uk">спільна бібліотека libtool</comment>
+ <comment xml:lang="vi">thư viện dùng chung libtool</comment>
+- <comment xml:lang="zh_CN">libtool 共享库</comment>
+- <comment xml:lang="zh_TW">libtool 共享函式庫</comment>
++ <comment xml:lang="zh-CN">libtool 共享库</comment>
++ <comment xml:lang="zh-TW">libtool 共享函式庫</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-script"/>
+ <glob pattern="*.la"/>
+ </mime-type>
+ <mime-type type="application/x-sharedlib">
+ <comment>shared library</comment>
++ <comment xml:lang="af">gedeelde biblioteek</comment>
+ <comment xml:lang="ar">مكتبة مشتركة</comment>
+ <comment xml:lang="az">bölüşülmüş kitabxana</comment>
+- <comment xml:lang="be@latin">supolnaja biblijateka</comment>
++ <comment xml:lang="be-Latn">supolnaja biblijateka</comment>
+ <comment xml:lang="bg">Споделена библиотека</comment>
+ <comment xml:lang="ca">biblioteca compartida</comment>
+ <comment xml:lang="cs">sdílená knihovna</comment>
+@@ -19412,13 +20067,14 @@
+ <comment xml:lang="da">delt bibliotek</comment>
+ <comment xml:lang="de">Gemeinsame Bibliothek</comment>
+ <comment xml:lang="el">Αρχείο κοινόχρηστης βιβλιοθήκης</comment>
+- <comment xml:lang="en_GB">shared library</comment>
++ <comment xml:lang="en-GB">shared library</comment>
+ <comment xml:lang="eo">dinamike bindebla biblioteko</comment>
+ <comment xml:lang="es">biblioteca compartida</comment>
+ <comment xml:lang="eu">partekatutako liburutegia</comment>
+ <comment xml:lang="fi">jaettu kirjasto</comment>
+ <comment xml:lang="fo">felagssavn</comment>
+ <comment xml:lang="fr">bibliothèque partagée</comment>
++ <comment xml:lang="fur">librarie condividude</comment>
+ <comment xml:lang="ga">comhleabharlann</comment>
+ <comment xml:lang="gl">biblioteca compartida</comment>
+ <comment xml:lang="he">ספרייה משותפת</comment>
+@@ -19439,7 +20095,7 @@
+ <comment xml:lang="oc">bibliotèca partejada</comment>
+ <comment xml:lang="pl">Biblioteka współdzielona</comment>
+ <comment xml:lang="pt">biblioteca partilhada</comment>
+- <comment xml:lang="pt_BR">Biblioteca compartilhada</comment>
++ <comment xml:lang="pt-BR">Biblioteca compartilhada</comment>
+ <comment xml:lang="ro">bibliotecă partajată</comment>
+ <comment xml:lang="ru">Разделяемая библиотека</comment>
+ <comment xml:lang="sk">Zdieľaná knižnica</comment>
+@@ -19450,45 +20106,36 @@
+ <comment xml:lang="tr">paylaşımlı kitaplık</comment>
+ <comment xml:lang="uk">спільна бібліотека</comment>
+ <comment xml:lang="vi">thư viện dùng chung</comment>
+- <comment xml:lang="zh_CN">共享库</comment>
+- <comment xml:lang="zh_TW">共享函式庫</comment>
++ <comment xml:lang="zh-CN">共享库</comment>
++ <comment xml:lang="zh-TW">共享函式庫</comment>
+ <magic priority="50">
+- <match value="\177ELF" type="string" offset="0">
+- <match value="1" type="byte" offset="5">
+- <match value="3" type="little16" offset="16"/>
+- </match>
+- </match>
+- <match value="\177ELF" type="string" offset="0">
+- <match value="2" type="byte" offset="5">
+- <match value="3" type="big16" offset="16"/>
+- </match>
+- </match>
+- <match value="0603" type="little16" offset="0">
+- <match value="020000" type="little16" offset="22" mask="030000"/>
++ <match type="little16" value="0603" offset="0">
++ <match type="little16" mask="030000" value="020000" offset="22"/>
+ </match>
+- <match value="\177ELF \003" type="string" offset="0" mask="0xffffffff000000000000000000000000ff"/>
+ </magic>
+ <glob pattern="*.so"/>
+ </mime-type>
+ <mime-type type="application/x-shellscript">
+ <comment>shell script</comment>
++ <comment xml:lang="af">shell-skrip</comment>
+ <comment xml:lang="ar">سكربت شِل</comment>
+ <comment xml:lang="az">qabıq skripti</comment>
+- <comment xml:lang="be@latin">skrypt abałonki</comment>
++ <comment xml:lang="be-Latn">skrypt abałonki</comment>
+ <comment xml:lang="bg">Скрипт на обвивката</comment>
+ <comment xml:lang="ca">script shell</comment>
+ <comment xml:lang="cs">skript shellu</comment>
+ <comment xml:lang="cy">sgript plisgyn</comment>
+- <comment xml:lang="da">skalprogram</comment>
++ <comment xml:lang="da">skal-program</comment>
+ <comment xml:lang="de">Shell-Skript</comment>
+ <comment xml:lang="el">Δέσμη ενεργειών κελύφους</comment>
+- <comment xml:lang="en_GB">shell script</comment>
++ <comment xml:lang="en-GB">shell script</comment>
+ <comment xml:lang="eo">ŝelskripto</comment>
+ <comment xml:lang="es">secuencia de órdenes en shell</comment>
+ <comment xml:lang="eu">shell script-a</comment>
+ <comment xml:lang="fi">komentotulkin komentotiedosto</comment>
+ <comment xml:lang="fo">skel boðrøð</comment>
+ <comment xml:lang="fr">script shell</comment>
++ <comment xml:lang="fur">script shell</comment>
+ <comment xml:lang="ga">script bhlaoisce</comment>
+ <comment xml:lang="gl">script de shell</comment>
+ <comment xml:lang="he">תסריט מעטפת</comment>
+@@ -19509,7 +20156,7 @@
+ <comment xml:lang="oc">escript shell</comment>
+ <comment xml:lang="pl">Skrypt powłoki</comment>
+ <comment xml:lang="pt">script de terminal</comment>
+- <comment xml:lang="pt_BR">Script shell</comment>
++ <comment xml:lang="pt-BR">Script shell</comment>
+ <comment xml:lang="ro">script shell</comment>
+ <comment xml:lang="ru">Сценарий shell</comment>
+ <comment xml:lang="sk">Skript shellu</comment>
+@@ -19520,44 +20167,46 @@
+ <comment xml:lang="tr">kabuk betiği</comment>
+ <comment xml:lang="uk">скрипт оболонки</comment>
+ <comment xml:lang="vi">văn lệnh trình bao</comment>
+- <comment xml:lang="zh_CN">shell 脚本</comment>
+- <comment xml:lang="zh_TW">shell 指令稿</comment>
++ <comment xml:lang="zh-CN">shell 脚本</comment>
++ <comment xml:lang="zh-TW">shell 指令稿</comment>
+ <sub-class-of type="application/x-executable"/>
+ <sub-class-of type="text/plain"/>
+ <alias type="text/x-sh"/>
+ <generic-icon name="text-x-script"/>
+ <magic priority="50">
+- <match value="# This is a shell archive" type="string" offset="10"/>
+- <match value="/bin/bash" type="string" offset="2:16"/>
+- <match value="/bin/nawk" type="string" offset="2:16"/>
+- <match value="/bin/zsh" type="string" offset="2:16"/>
+- <match value="/bin/sh" type="string" offset="2:16"/>
+- <match value="/bin/ksh" type="string" offset="2:16"/>
+- <match value="/bin/dash" type="string" offset="2:16"/>
+- <match value="/bin/env sh" type="string" offset="2:16"/>
+- <match value="/bin/env bash" type="string" offset="2:16"/>
+- <match value="/bin/env zsh" type="string" offset="2:16"/>
+- <match value="/bin/env ksh" type="string" offset="2:16"/>
++ <match type="string" value="# This is a shell archive" offset="10"/>
++ <match type="string" value="/bin/bash" offset="2:16"/>
++ <match type="string" value="/bin/nawk" offset="2:16"/>
++ <match type="string" value="/bin/zsh" offset="2:16"/>
++ <match type="string" value="/bin/sh" offset="2:16"/>
++ <match type="string" value="/bin/ksh" offset="2:16"/>
++ <match type="string" value="/bin/dash" offset="2:16"/>
++ <match type="string" value="/bin/env sh" offset="2:16"/>
++ <match type="string" value="/bin/env bash" offset="2:16"/>
++ <match type="string" value="/bin/env zsh" offset="2:16"/>
++ <match type="string" value="/bin/env ksh" offset="2:16"/>
+ </magic>
+ <glob pattern="*.sh"/>
+ </mime-type>
+ <mime-type type="application/vnd.adobe.flash.movie">
+ <comment>Shockwave Flash file</comment>
++ <comment xml:lang="af">Shockwave Flash-lêer</comment>
+ <comment xml:lang="ar">ملف Shockwave Flash</comment>
+- <comment xml:lang="be@latin">Fajł Shockwave Flash</comment>
++ <comment xml:lang="be-Latn">Fajł Shockwave Flash</comment>
+ <comment xml:lang="bg">Файл — Shockwave Flash</comment>
+ <comment xml:lang="ca">fitxer Shockwave Flash</comment>
+ <comment xml:lang="cs">soubor Shockwave Flash</comment>
+ <comment xml:lang="da">Shockwave Flash-fil</comment>
+ <comment xml:lang="de">Shockwave-Flash-Datei</comment>
+ <comment xml:lang="el">Αρχείο Shockwave Flash</comment>
+- <comment xml:lang="en_GB">Shockwave Flash file</comment>
++ <comment xml:lang="en-GB">Shockwave Flash file</comment>
+ <comment xml:lang="eo">dosiero de Shockwave Flash</comment>
+ <comment xml:lang="es">archivo Shockwave Flash</comment>
+ <comment xml:lang="eu">Shockwave Flash fitxategia</comment>
+ <comment xml:lang="fi">Shockwave Flash -tiedosto</comment>
+ <comment xml:lang="fo">Shockwave Flash fíla</comment>
+ <comment xml:lang="fr">fichier Shockwave Flash</comment>
++ <comment xml:lang="fur">file Shockwave Flash</comment>
+ <comment xml:lang="ga">comhad Shockwave Flash</comment>
+ <comment xml:lang="gl">ficheiro sockwave Flash</comment>
+ <comment xml:lang="he">קובץ של Shockwave Flash</comment>
+@@ -19578,7 +20227,7 @@
+ <comment xml:lang="oc">fichièr Shockwave Flash</comment>
+ <comment xml:lang="pl">Plik Shockwave Flash</comment>
+ <comment xml:lang="pt">ficheiro Shockwave Flash</comment>
+- <comment xml:lang="pt_BR">Arquivo Shockwave Flash</comment>
++ <comment xml:lang="pt-BR">Arquivo Shockwave Flash</comment>
+ <comment xml:lang="ro">Fișier Shockwave Flash</comment>
+ <comment xml:lang="ru">Файл Shockwave Flash</comment>
+ <comment xml:lang="sk">Súbor Shockwave Flash</comment>
+@@ -19589,36 +20238,38 @@
+ <comment xml:lang="tr">Shockwave Flash dosyası</comment>
+ <comment xml:lang="uk">файл Shockwave Flash</comment>
+ <comment xml:lang="vi">Tập tin Flash Shockwave</comment>
+- <comment xml:lang="zh_CN">Shockwave Flash 文件</comment>
+- <comment xml:lang="zh_TW">Shockwave Flash 檔案</comment>
++ <comment xml:lang="zh-CN">Shockwave Flash 文件</comment>
++ <comment xml:lang="zh-TW">Shockwave Flash 檔案</comment>
+ <alias type="application/x-shockwave-flash"/>
+ <alias type="application/futuresplash"/>
+ <generic-icon name="video-x-generic"/>
+ <magic priority="50">
+- <match value="FWS" type="string" offset="0"/>
+- <match value="CWS" type="string" offset="0"/>
++ <match type="string" value="FWS" offset="0"/>
++ <match type="string" value="CWS" offset="0"/>
+ </magic>
+ <glob pattern="*.swf"/>
+ <glob pattern="*.spl"/>
+ </mime-type>
+ <mime-type type="application/x-shorten">
+-
++ <!-- translators: "Shorten" is the name of an audio codec -->
+ <comment>Shorten audio</comment>
++ <comment xml:lang="af">Shorten-oudio</comment>
+ <comment xml:lang="ar">Shorten سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo Shorten</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo Shorten</comment>
+ <comment xml:lang="bg">Аудио — Shorten</comment>
+ <comment xml:lang="ca">àudio de Shorten</comment>
+ <comment xml:lang="cs">zvuk Shorten</comment>
+- <comment xml:lang="da">Shortenlyd</comment>
++ <comment xml:lang="da">Shorten-lyd</comment>
+ <comment xml:lang="de">Shorten-Audio</comment>
+ <comment xml:lang="el">Ήχος Shorten</comment>
+- <comment xml:lang="en_GB">Shorten audio</comment>
++ <comment xml:lang="en-GB">Shorten audio</comment>
+ <comment xml:lang="eo">Shorten-sondosiero</comment>
+- <comment xml:lang="es">sonido Shorten</comment>
++ <comment xml:lang="es">audio Shorten</comment>
+ <comment xml:lang="eu">Shorten audioa</comment>
+ <comment xml:lang="fi">Shorten-ääni</comment>
+ <comment xml:lang="fo">Shorten ljóður</comment>
+ <comment xml:lang="fr">audio Shorten</comment>
++ <comment xml:lang="fur">audio Shorten</comment>
+ <comment xml:lang="ga">fuaim Shorten</comment>
+ <comment xml:lang="gl">son Shorten</comment>
+ <comment xml:lang="he">שמע של Shorten</comment>
+@@ -19638,7 +20289,7 @@
+ <comment xml:lang="oc">àudio Shorten</comment>
+ <comment xml:lang="pl">Plik dźwiękowy Shorten</comment>
+ <comment xml:lang="pt">áudio Shorten</comment>
+- <comment xml:lang="pt_BR">Áudio Shorten</comment>
++ <comment xml:lang="pt-BR">Áudio Shorten</comment>
+ <comment xml:lang="ro">Audio Shorten</comment>
+ <comment xml:lang="ru">Аудио Shorten</comment>
+ <comment xml:lang="sk">Zvuk Shorten</comment>
+@@ -19646,35 +20297,37 @@
+ <comment xml:lang="sq">Audio Shorten</comment>
+ <comment xml:lang="sr">Шортен звук</comment>
+ <comment xml:lang="sv">Shorten-ljud</comment>
+- <comment xml:lang="tr">Kısaltılmış ses</comment>
++ <comment xml:lang="tr">Shorten sesi</comment>
+ <comment xml:lang="uk">звук Shorten</comment>
+ <comment xml:lang="vi">Âm thanh Shorten</comment>
+- <comment xml:lang="zh_CN">Shorten 音频</comment>
+- <comment xml:lang="zh_TW">Shorten 音訊</comment>
++ <comment xml:lang="zh-CN">Shorten 音频</comment>
++ <comment xml:lang="zh-TW">Shorten 音訊</comment>
+ <generic-icon name="audio-x-generic"/>
+ <magic priority="50">
+- <match value="ajkg" type="string" offset="0"/>
++ <match type="string" value="ajkg" offset="0"/>
+ </magic>
+ <glob pattern="*.shn"/>
+ <alias type="audio/x-shorten"/>
+ </mime-type>
+ <mime-type type="application/x-siag">
+ <comment>Siag spreadsheet</comment>
++ <comment xml:lang="af">Siag-sigblad</comment>
+ <comment xml:lang="ar">جدول Siag</comment>
+- <comment xml:lang="be@latin">Raźlikovy arkuš Siag</comment>
++ <comment xml:lang="be-Latn">Raźlikovy arkuš Siag</comment>
+ <comment xml:lang="bg">Таблица — Siag</comment>
+ <comment xml:lang="ca">full de càlcul Siag</comment>
+ <comment xml:lang="cs">sešit Siag</comment>
+ <comment xml:lang="da">Siagregneark</comment>
+ <comment xml:lang="de">Siag-Tabelle</comment>
+ <comment xml:lang="el">Λογιστικό φύλλο Siag</comment>
+- <comment xml:lang="en_GB">Siag spreadsheet</comment>
++ <comment xml:lang="en-GB">Siag spreadsheet</comment>
+ <comment xml:lang="eo">Siag-kalkultabelo</comment>
+ <comment xml:lang="es">hoja de cálculo de Siag</comment>
+ <comment xml:lang="eu">Siag kalkulu-orria</comment>
+ <comment xml:lang="fi">Siag-taulukko</comment>
+ <comment xml:lang="fo">Siag rokniark</comment>
+ <comment xml:lang="fr">feuille de calcul Siag</comment>
++ <comment xml:lang="fur">sfuei di calcul Siag</comment>
+ <comment xml:lang="ga">scarbhileog Siag</comment>
+ <comment xml:lang="gl">folla de cálculo de Siag</comment>
+ <comment xml:lang="he">גליון נתונים של Siag</comment>
+@@ -19695,7 +20348,7 @@
+ <comment xml:lang="oc">fuèlh de calcul Siag</comment>
+ <comment xml:lang="pl">Arkusz Siag</comment>
+ <comment xml:lang="pt">folha de cálculo Siag</comment>
+- <comment xml:lang="pt_BR">Planilha do Siag</comment>
++ <comment xml:lang="pt-BR">Planilha do Siag</comment>
+ <comment xml:lang="ro">Foaie de calcul Siag</comment>
+ <comment xml:lang="ru">Электронная таблица Siag</comment>
+ <comment xml:lang="sk">Zošit Siag</comment>
+@@ -19703,32 +20356,34 @@
+ <comment xml:lang="sq">Fletë llogaritjesh Siag</comment>
+ <comment xml:lang="sr">Сјаг табела</comment>
+ <comment xml:lang="sv">Siag-kalkylblad</comment>
+- <comment xml:lang="tr">Siag çalışma sayfası</comment>
++ <comment xml:lang="tr">Siag hesap çizelgesi</comment>
+ <comment xml:lang="uk">ел. таблиця Siag</comment>
+ <comment xml:lang="vi">Bảng tính Slag</comment>
+- <comment xml:lang="zh_CN">Siag 电子表格</comment>
+- <comment xml:lang="zh_TW">Siag 試算表</comment>
++ <comment xml:lang="zh-CN">Siag 电子表格</comment>
++ <comment xml:lang="zh-TW">Siag 試算表</comment>
+ <generic-icon name="x-office-spreadsheet"/>
+ <glob pattern="*.siag"/>
+ </mime-type>
+ <mime-type type="image/x-skencil">
+ <comment>Skencil document</comment>
++ <comment xml:lang="af">Skencil-dokument</comment>
+ <comment xml:lang="ar">مستند Skencil</comment>
+ <comment xml:lang="ast">Documentu de Skencil</comment>
+- <comment xml:lang="be@latin">Dakument Skencil</comment>
++ <comment xml:lang="be-Latn">Dakument Skencil</comment>
+ <comment xml:lang="bg">Документ — Skencil</comment>
+ <comment xml:lang="ca">document Skencil</comment>
+ <comment xml:lang="cs">dokument Skencil</comment>
+ <comment xml:lang="da">Skencildokument</comment>
+ <comment xml:lang="de">Skencil-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Skencil</comment>
+- <comment xml:lang="en_GB">Skencil document</comment>
++ <comment xml:lang="en-GB">Skencil document</comment>
+ <comment xml:lang="eo">Skencil-dokumento</comment>
+ <comment xml:lang="es">documento de Skencil</comment>
+ <comment xml:lang="eu">Skencil dokumentua</comment>
+ <comment xml:lang="fi">Skencil-asiakirja</comment>
+ <comment xml:lang="fo">Skencil skjal</comment>
+ <comment xml:lang="fr">document Skencil</comment>
++ <comment xml:lang="fur">document Skencil</comment>
+ <comment xml:lang="ga">cáipéis Skencil</comment>
+ <comment xml:lang="gl">documento Skencil</comment>
+ <comment xml:lang="he">מסמך Skencil</comment>
+@@ -19747,7 +20402,7 @@
+ <comment xml:lang="oc">document Skencil</comment>
+ <comment xml:lang="pl">Dokument Skencil</comment>
+ <comment xml:lang="pt">documento Skencil</comment>
+- <comment xml:lang="pt_BR">Documento do Skencil</comment>
++ <comment xml:lang="pt-BR">Documento do Skencil</comment>
+ <comment xml:lang="ro">Document Skencil</comment>
+ <comment xml:lang="ru">Документ Skencil</comment>
+ <comment xml:lang="sk">Dokument Skencil</comment>
+@@ -19758,19 +20413,20 @@
+ <comment xml:lang="tr">Skencil belgesi</comment>
+ <comment xml:lang="uk">документ Skencil</comment>
+ <comment xml:lang="vi">Tài liệu Skencil</comment>
+- <comment xml:lang="zh_CN">Skencil 文档</comment>
+- <comment xml:lang="zh_TW">Skencil 文件</comment>
++ <comment xml:lang="zh-CN">Skencil 文档</comment>
++ <comment xml:lang="zh-TW">Skencil 文件</comment>
+ <glob pattern="*.sk"/>
+ <glob pattern="*.sk1"/>
+ <magic priority="50">
+- <match value="##Sketch" type="string" offset="0"/>
++ <match type="string" value="##Sketch" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-slp">
+ <comment>Stampede package</comment>
++ <comment xml:lang="af">Stampede-pakket</comment>
+ <comment xml:lang="ar">حزمة Stampede</comment>
+ <comment xml:lang="az">Stampede paketi</comment>
+- <comment xml:lang="be@latin">Pakunak Stampede</comment>
++ <comment xml:lang="be-Latn">Pakunak Stampede</comment>
+ <comment xml:lang="bg">Пакет — Stampede</comment>
+ <comment xml:lang="ca">paquet Stampede</comment>
+ <comment xml:lang="cs">balíček Stampede</comment>
+@@ -19778,13 +20434,14 @@
+ <comment xml:lang="da">Stampedepakke</comment>
+ <comment xml:lang="de">Stampede-Paket</comment>
+ <comment xml:lang="el">Πακέτο Stampede</comment>
+- <comment xml:lang="en_GB">Stampede package</comment>
++ <comment xml:lang="en-GB">Stampede package</comment>
+ <comment xml:lang="eo">Stampede-pakaĵo</comment>
+ <comment xml:lang="es">paquete Stampede</comment>
+ <comment xml:lang="eu">Stampede paketea</comment>
+ <comment xml:lang="fi">Stampede-paketti</comment>
+ <comment xml:lang="fo">Stampede pakki</comment>
+ <comment xml:lang="fr">paquet Stampede</comment>
++ <comment xml:lang="fur">pachet Stampede</comment>
+ <comment xml:lang="ga">pacáiste Stampede</comment>
+ <comment xml:lang="gl">paquete Stampede</comment>
+ <comment xml:lang="he">חבילה של Stampede</comment>
+@@ -19805,7 +20462,7 @@
+ <comment xml:lang="oc">paquet Stampede</comment>
+ <comment xml:lang="pl">Pakiet Stampede</comment>
+ <comment xml:lang="pt">pacote Stampede</comment>
+- <comment xml:lang="pt_BR">Pacote Stampede</comment>
++ <comment xml:lang="pt-BR">Pacote Stampede</comment>
+ <comment xml:lang="ro">Pachet Stampede</comment>
+ <comment xml:lang="ru">Пакет Stampede</comment>
+ <comment xml:lang="sk">Balíček Stampede</comment>
+@@ -19816,21 +20473,23 @@
+ <comment xml:lang="tr">Stampede paketi</comment>
+ <comment xml:lang="uk">пакунок Stampede</comment>
+ <comment xml:lang="vi">Gói Stampede</comment>
+- <comment xml:lang="zh_CN">Stampede 软件包</comment>
+- <comment xml:lang="zh_TW">Stampede 軟體包</comment>
++ <comment xml:lang="zh-CN">Stampede 软件包</comment>
++ <comment xml:lang="zh-TW">Stampede 軟體包</comment>
+ <generic-icon name="package-x-generic"/>
+ </mime-type>
+ <mime-type type="application/x-sg1000-rom">
+ <comment>SG-1000 ROM</comment>
++ <comment xml:lang="bg">ROM — SG-1000</comment>
+ <comment xml:lang="ca">ROM de SG-1000</comment>
+ <comment xml:lang="cs">ROM pro SG-1000</comment>
+- <comment xml:lang="da">SG-1000 ROM</comment>
++ <comment xml:lang="da">SG-1000-ROM</comment>
+ <comment xml:lang="de">SG-1000 ROM</comment>
+- <comment xml:lang="en_GB">SG-1000 ROM</comment>
++ <comment xml:lang="en-GB">SG-1000 ROM</comment>
+ <comment xml:lang="es">ROM de SG-1000</comment>
+ <comment xml:lang="eu">SG-1000 ROM</comment>
+ <comment xml:lang="fi">SG-1000 -ROM</comment>
+ <comment xml:lang="fr">ROM SG-1000</comment>
++ <comment xml:lang="fur">ROM SG-1000</comment>
+ <comment xml:lang="ga">ROM SG-1000</comment>
+ <comment xml:lang="hr">SG-1000 ROM</comment>
+ <comment xml:lang="hu">SG-1000 ROM</comment>
+@@ -19839,30 +20498,33 @@
+ <comment xml:lang="kk">SG-1000 ROM</comment>
+ <comment xml:lang="ko">SG-1000 롬</comment>
+ <comment xml:lang="pl">Plik ROM konsoli SG-1000</comment>
+- <comment xml:lang="pt_BR">ROM de SG-1000</comment>
++ <comment xml:lang="pt-BR">ROM de SG-1000</comment>
+ <comment xml:lang="ru">SG-1000 ROM</comment>
+ <comment xml:lang="sk">ROM pre SG-1000</comment>
++ <comment xml:lang="sl">SG-1000 ROM</comment>
+ <comment xml:lang="sr">СГ-1000 РОМ</comment>
+ <comment xml:lang="sv">SG-1000-rom</comment>
+ <comment xml:lang="tr">SG-1000 ROM</comment>
+ <comment xml:lang="uk">ППП SG-1000</comment>
+- <comment xml:lang="zh_CN">SG-1000 ROM</comment>
+- <comment xml:lang="zh_TW">SG-1000 ROM</comment>
++ <comment xml:lang="zh-CN">SG-1000 ROM</comment>
++ <comment xml:lang="zh-TW">SG-1000 ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.sg"/>
+ </mime-type>
+ <mime-type type="application/x-sms-rom">
+-
++ <!-- Translate this to "Master System/Mark III" if the console was known as such in your locale (probably only in Japan) -->
+ <comment>Master System ROM</comment>
++ <comment xml:lang="bg">ROM — Master System</comment>
+ <comment xml:lang="ca">ROM de Master System</comment>
+ <comment xml:lang="cs">ROM pro Master System</comment>
+- <comment xml:lang="da">Master System ROM</comment>
++ <comment xml:lang="da">Master System-ROM</comment>
+ <comment xml:lang="de">Master System ROM</comment>
+- <comment xml:lang="en_GB">Master System ROM</comment>
++ <comment xml:lang="en-GB">Master System ROM</comment>
+ <comment xml:lang="es">ROM de Master System</comment>
+ <comment xml:lang="eu">Master System ROM</comment>
+ <comment xml:lang="fi">Master System -ROM</comment>
+ <comment xml:lang="fr">ROM Master System</comment>
++ <comment xml:lang="fur">ROM Master System</comment>
+ <comment xml:lang="ga">ROM Master System</comment>
+ <comment xml:lang="hr">Master System ROM</comment>
+ <comment xml:lang="hu">Master System ROM</comment>
+@@ -19871,30 +20533,38 @@
+ <comment xml:lang="kk">Master System ROM</comment>
+ <comment xml:lang="ko">마스터 시스템 롬</comment>
+ <comment xml:lang="pl">Plik ROM konsoli SMS</comment>
+- <comment xml:lang="pt_BR">ROM de Master System</comment>
++ <comment xml:lang="pt-BR">ROM de Master System</comment>
+ <comment xml:lang="ru">Master System ROM</comment>
+ <comment xml:lang="sk">ROM pre Master System</comment>
+ <comment xml:lang="sr">Мастер Систем РОМ</comment>
+ <comment xml:lang="sv">Master System-rom</comment>
+ <comment xml:lang="tr">Master System ROM</comment>
+ <comment xml:lang="uk">ППП Master System</comment>
+- <comment xml:lang="zh_CN">Master System ROM</comment>
+- <comment xml:lang="zh_TW">Master System ROM</comment>
++ <comment xml:lang="zh-CN">Master System ROM</comment>
++ <comment xml:lang="zh-TW">Master System ROM</comment>
+ <generic-icon name="application-x-executable"/>
+-
++ <!-- Disabled, the magic would be too far into the file
++ <magic>
++ <match type="string" value="TMR SEGA" offset="32752">
++ <match type="byte" value="0x30" offset="32767" mask="0xf0"/>
++ <match type="byte" value="0x40" offset="32767" mask="0xf0"/>
++ </match>
++ </magic> -->
+ <glob pattern="*.sms"/>
+ </mime-type>
+ <mime-type type="application/x-gamegear-rom">
+ <comment>Game Gear ROM</comment>
++ <comment xml:lang="bg">ROM — Game Gear</comment>
+ <comment xml:lang="ca">ROM de Game Gear</comment>
+ <comment xml:lang="cs">ROM pro Game Gear</comment>
+- <comment xml:lang="da">Game Gear ROM</comment>
++ <comment xml:lang="da">Game Gear-ROM</comment>
+ <comment xml:lang="de">Game Gear ROM</comment>
+- <comment xml:lang="en_GB">Game Gear ROM</comment>
++ <comment xml:lang="en-GB">Game Gear ROM</comment>
+ <comment xml:lang="es">ROM de Game Gear</comment>
+ <comment xml:lang="eu">Game Gear ROM</comment>
+ <comment xml:lang="fi">Game Gear -ROM</comment>
+ <comment xml:lang="fr">ROM Game Gear</comment>
++ <comment xml:lang="fur">ROM Game Gear</comment>
+ <comment xml:lang="ga">ROM Game Gear</comment>
+ <comment xml:lang="hr">Game Gear ROM</comment>
+ <comment xml:lang="hu">Game Gear ROM</comment>
+@@ -19903,36 +20573,44 @@
+ <comment xml:lang="kk">Game Gear ROM</comment>
+ <comment xml:lang="ko">게임 기어 롬</comment>
+ <comment xml:lang="pl">Plik ROM konsoli Game Gear</comment>
+- <comment xml:lang="pt_BR">ROM de Game Gear</comment>
++ <comment xml:lang="pt-BR">ROM de Game Gear</comment>
+ <comment xml:lang="ru">Game Gear ROM</comment>
+ <comment xml:lang="sk">ROM pre Game Gear</comment>
+ <comment xml:lang="sr">Гејм Гир РОМ</comment>
+ <comment xml:lang="sv">Game Gear-rom</comment>
+ <comment xml:lang="tr">Game Gear ROM</comment>
+ <comment xml:lang="uk">ППП Game Gear</comment>
+- <comment xml:lang="zh_CN">Game Gear ROM</comment>
+- <comment xml:lang="zh_TW">Game Gear ROM</comment>
++ <comment xml:lang="zh-CN">Game Gear ROM</comment>
++ <comment xml:lang="zh-TW">Game Gear ROM</comment>
+ <generic-icon name="application-x-executable"/>
+-
++ <!-- Disabled, the magic would be too far into the file
++ <magic>
++ <match type="string" value="TMR SEGA" offset="32752">
++ <match type="byte" value="0x50" offset="32767" mask="0xf0"/>
++ <match type="byte" value="0x60" offset="32767" mask="0xf0"/>
++ <match type="byte" value="0x70" offset="32767" mask="0xf0"/>
++ </match>
++ </magic> -->
+ <glob pattern="*.gg"/>
+ </mime-type>
+ <mime-type type="application/vnd.nintendo.snes.rom">
+-
++ <!-- Translate this as Super Famicom (in Far East Asia) or Super Nintendo (in Europe) if the console was known as such in your locale -->
+ <comment>Super NES ROM</comment>
+ <comment xml:lang="ar">Super NES ROM</comment>
+- <comment xml:lang="be@latin">Super Nintendo ROM</comment>
++ <comment xml:lang="be-Latn">Super Nintendo ROM</comment>
+ <comment xml:lang="bg">ROM — Super NES</comment>
+ <comment xml:lang="ca">ROM de Super NES</comment>
+ <comment xml:lang="cs">ROM pro Super Nintendo</comment>
+- <comment xml:lang="da">Super NES-rom</comment>
++ <comment xml:lang="da">Super NES-ROM</comment>
+ <comment xml:lang="de">Super NES ROM</comment>
+ <comment xml:lang="el">Super NES ROM</comment>
+- <comment xml:lang="en_GB">Super NES ROM</comment>
++ <comment xml:lang="en-GB">Super NES ROM</comment>
+ <comment xml:lang="es">ROM de Super NES</comment>
+ <comment xml:lang="eu">Super Nintendo-ko ROMa</comment>
+ <comment xml:lang="fi">Super Nintendo -ROM</comment>
+ <comment xml:lang="fo">Super NES ROM</comment>
+ <comment xml:lang="fr">ROM Super Nintendo</comment>
++ <comment xml:lang="fur">ROM Super Nintendo</comment>
+ <comment xml:lang="ga">ROM Super NES</comment>
+ <comment xml:lang="gl">ROM de Super NES</comment>
+ <comment xml:lang="he">ROM של Super NES</comment>
+@@ -19952,7 +20630,7 @@
+ <comment xml:lang="oc">ROM Super Nintendo</comment>
+ <comment xml:lang="pl">Plik ROM konsoli SNES</comment>
+ <comment xml:lang="pt">ROM Super Nintendo</comment>
+- <comment xml:lang="pt_BR">ROM de Super Nintendo</comment>
++ <comment xml:lang="pt-BR">ROM de Super Nintendo</comment>
+ <comment xml:lang="ro">ROM Super Nintendo</comment>
+ <comment xml:lang="ru">Super NES ROM</comment>
+ <comment xml:lang="sk">ROM pre Super Nintendo</comment>
+@@ -19963,8 +20641,8 @@
+ <comment xml:lang="tr">Super NES ROM</comment>
+ <comment xml:lang="uk">ППП Super NES</comment>
+ <comment xml:lang="vi">ROM Super Nintendo</comment>
+- <comment xml:lang="zh_CN">Super NES ROM</comment>
+- <comment xml:lang="zh_TW">超級任天堂 ROM</comment>
++ <comment xml:lang="zh-CN">Super NES ROM</comment>
++ <comment xml:lang="zh-TW">超級任天堂 ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <alias type="application/x-snes-rom"/>
+ <glob pattern="*.sfc"/>
+@@ -19972,21 +20650,23 @@
+ </mime-type>
+ <mime-type type="application/x-stuffit">
+ <comment>StuffIt archive</comment>
++ <comment xml:lang="af">StuffIt-argief</comment>
+ <comment xml:lang="ar">أرشيف StuffIt</comment>
+- <comment xml:lang="be@latin">Archiŭ StuffIt</comment>
++ <comment xml:lang="be-Latn">Archiŭ StuffIt</comment>
+ <comment xml:lang="bg">Архив — StuffIt</comment>
+ <comment xml:lang="ca">arxiu StuffIt</comment>
+ <comment xml:lang="cs">archiv StuffIt</comment>
+ <comment xml:lang="da">StuffIt-arkiv</comment>
+ <comment xml:lang="de">StuffIt-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο StuffIt</comment>
+- <comment xml:lang="en_GB">StuffIt archive</comment>
++ <comment xml:lang="en-GB">StuffIt archive</comment>
+ <comment xml:lang="eo">StuffIt-arkivo</comment>
+ <comment xml:lang="es">archivador de StuffIt</comment>
+ <comment xml:lang="eu">StuffIt artxiboa</comment>
+ <comment xml:lang="fi">StuffIt-arkisto</comment>
+ <comment xml:lang="fo">StuffIt skjalasavn</comment>
+ <comment xml:lang="fr">archive StuffIt</comment>
++ <comment xml:lang="fur">archivi StuffIt</comment>
+ <comment xml:lang="ga">cartlann StuffIt</comment>
+ <comment xml:lang="gl">arquivo StuffIt</comment>
+ <comment xml:lang="he">ארכיון של StuffIt</comment>
+@@ -20006,7 +20686,7 @@
+ <comment xml:lang="oc">archiu StuffIt</comment>
+ <comment xml:lang="pl">Archiwum StuffIt</comment>
+ <comment xml:lang="pt">arquivo StuffIt</comment>
+- <comment xml:lang="pt_BR">Pacote StuffIt</comment>
++ <comment xml:lang="pt-BR">Pacote StuffIt</comment>
+ <comment xml:lang="ro">Arhivă StuffIt</comment>
+ <comment xml:lang="ru">Архив StuffIt</comment>
+ <comment xml:lang="sk">Archív StuffIt</comment>
+@@ -20017,34 +20697,36 @@
+ <comment xml:lang="tr">StuffIt arşivi</comment>
+ <comment xml:lang="uk">архів StuffIt</comment>
+ <comment xml:lang="vi">Kho nén Stuffit</comment>
+- <comment xml:lang="zh_CN">Macintosh StuffIt 归档文件</comment>
+- <comment xml:lang="zh_TW">StuffIt 封存檔</comment>
++ <comment xml:lang="zh-CN">Macintosh StuffIt 归档文件</comment>
++ <comment xml:lang="zh-TW">StuffIt 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <alias type="application/stuffit"/>
+ <alias type="application/x-sit"/>
+ <magic priority="60">
+- <match value="StuffIt " type="string" offset="0"/>
+- <match value="SIT!" type="string" offset="0"/>
++ <match type="string" value="StuffIt " offset="0"/>
++ <match type="string" value="SIT!" offset="0"/>
+ </magic>
+ <glob pattern="*.sit"/>
+ </mime-type>
+ <mime-type type="application/x-subrip">
+ <comment>SubRip subtitles</comment>
++ <comment xml:lang="af">SubRip-onderskrifte</comment>
+ <comment xml:lang="ar">ترجمات SubRip</comment>
+- <comment xml:lang="be@latin">Subtytry SubRip</comment>
++ <comment xml:lang="be-Latn">Subtytry SubRip</comment>
+ <comment xml:lang="bg">Субтитри — SubRip</comment>
+ <comment xml:lang="ca">subtítols SubRip</comment>
+ <comment xml:lang="cs">titulky SubRip</comment>
+ <comment xml:lang="da">SubRip-undertekster</comment>
+ <comment xml:lang="de">SubRip-Untertitel</comment>
+ <comment xml:lang="el">Υπότιτλοι SubRip</comment>
+- <comment xml:lang="en_GB">SubRip subtitles</comment>
++ <comment xml:lang="en-GB">SubRip subtitles</comment>
+ <comment xml:lang="eo">SubRip-subtekstoj</comment>
+ <comment xml:lang="es">subtítulos SubRip</comment>
+ <comment xml:lang="eu">SubRip azpitituluak</comment>
+ <comment xml:lang="fi">SubRip-tekstitykset</comment>
+ <comment xml:lang="fo">SubRip undirtekstir</comment>
+ <comment xml:lang="fr">sous-titres SubRip</comment>
++ <comment xml:lang="fur">sottitui SubRip</comment>
+ <comment xml:lang="ga">fotheidil SubRip</comment>
+ <comment xml:lang="gl">subtítulos SubRip</comment>
+ <comment xml:lang="he">כתוביות של SubRip</comment>
+@@ -20064,7 +20746,7 @@
+ <comment xml:lang="oc">sostítols SubRip</comment>
+ <comment xml:lang="pl">Napisy SubRip</comment>
+ <comment xml:lang="pt">legendas SubRip</comment>
+- <comment xml:lang="pt_BR">Legendas SubRip</comment>
++ <comment xml:lang="pt-BR">Legendas SubRip</comment>
+ <comment xml:lang="ro">Subtitrare SubRip</comment>
+ <comment xml:lang="ru">Субтитры SubRip</comment>
+ <comment xml:lang="sk">Titulky SubRip</comment>
+@@ -20072,34 +20754,36 @@
+ <comment xml:lang="sq">Nëntituj SubRip</comment>
+ <comment xml:lang="sr">Суб Рип преводи</comment>
+ <comment xml:lang="sv">SubRip-undertexter</comment>
+- <comment xml:lang="tr">SubRip altyazıları</comment>
++ <comment xml:lang="tr">SubRip alt yazıları</comment>
+ <comment xml:lang="uk">субтитри SubRip</comment>
+ <comment xml:lang="vi">Phụ đề SubRip</comment>
+- <comment xml:lang="zh_CN">SubRip 字幕</comment>
+- <comment xml:lang="zh_TW">SubRip 字幕</comment>
++ <comment xml:lang="zh-CN">SubRip 字幕</comment>
++ <comment xml:lang="zh-TW">SubRip 字幕</comment>
+ <alias type="application/x-srt"/>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-generic"/>
+ <magic priority="50">
+- <match value="1" type="string" offset="0">
+- <match value=" --> " type="string" offset="0:256"/>
++ <match type="string" value="1" offset="0">
++ <match type="string" value=" --&gt; " offset="0:256"/>
+ </match>
+ </magic>
+ <glob pattern="*.srt"/>
+ </mime-type>
+ <mime-type type="text/vtt">
+ <comment>WebVTT subtitles</comment>
++ <comment xml:lang="af">WebVTT-onderskrifte</comment>
+ <comment xml:lang="bg">Субтитри — WebVTT</comment>
+ <comment xml:lang="ca">subtítols WebVTT</comment>
+ <comment xml:lang="cs">titulky WebVTT</comment>
+ <comment xml:lang="da">WebVTT-undertekster</comment>
+ <comment xml:lang="de">WebVTT-Untertitel</comment>
+ <comment xml:lang="el">Υπότιτλοι WebVTT</comment>
+- <comment xml:lang="en_GB">WebVTT subtitles</comment>
++ <comment xml:lang="en-GB">WebVTT subtitles</comment>
+ <comment xml:lang="es">subtítulos WebVTT</comment>
+ <comment xml:lang="eu">WebVTT azpitituluak</comment>
+ <comment xml:lang="fi">WebVTT-tekstitykset</comment>
+ <comment xml:lang="fr">sous-titres WebVTT</comment>
++ <comment xml:lang="fur">sottitui WebVTT</comment>
+ <comment xml:lang="ga">fotheidil WebVTT</comment>
+ <comment xml:lang="gl">subtítulos WebVTT</comment>
+ <comment xml:lang="he">כתוביות WebVTT</comment>
+@@ -20117,42 +20801,44 @@
+ <comment xml:lang="oc">sostítols WebVTT</comment>
+ <comment xml:lang="pl">Napisy WebVTT</comment>
+ <comment xml:lang="pt">legendas WebVTT</comment>
+- <comment xml:lang="pt_BR">Legendas WebVTT</comment>
++ <comment xml:lang="pt-BR">Legendas WebVTT</comment>
+ <comment xml:lang="ru">Субтитры WebVTT</comment>
+ <comment xml:lang="sk">Titulky WebVTT</comment>
+ <comment xml:lang="sl">Podnapisi WebVTT</comment>
+ <comment xml:lang="sr">Веб ВТТ преводи</comment>
+ <comment xml:lang="sv">WebVTT-undertexter</comment>
+- <comment xml:lang="tr">WebVTT altyazıları</comment>
++ <comment xml:lang="tr">WebVTT alt yazıları</comment>
+ <comment xml:lang="uk">субтитри WebVTT</comment>
+- <comment xml:lang="zh_CN">WebVTT 字幕</comment>
+- <comment xml:lang="zh_TW">WebVTT 字幕</comment>
++ <comment xml:lang="zh-CN">WebVTT 字幕</comment>
++ <comment xml:lang="zh-TW">WebVTT 字幕</comment>
+ <acronym>VTT</acronym>
+ <expanded-acronym>Video Text Tracks</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-generic"/>
+ <magic priority="50">
+- <match value="WEBVTT" type="string" offset="0"/>
++ <match type="string" value="WEBVTT" offset="0"/>
+ </magic>
+ <glob pattern="*.vtt"/>
+ </mime-type>
+ <mime-type type="application/x-sami">
+ <comment>SAMI subtitles</comment>
++ <comment xml:lang="af">SAMI-onderskrifte</comment>
+ <comment xml:lang="ar">ترجمات SAMI</comment>
+- <comment xml:lang="be@latin">Subtytry SAMI</comment>
++ <comment xml:lang="be-Latn">Subtytry SAMI</comment>
+ <comment xml:lang="bg">Субтитри — SAMI</comment>
+ <comment xml:lang="ca">subtítols SAMI</comment>
+ <comment xml:lang="cs">titulky SAMI</comment>
+ <comment xml:lang="da">SAMI-undertekster</comment>
+ <comment xml:lang="de">SAMI-Untertitel</comment>
+ <comment xml:lang="el">Υπότιτλοι SAMI</comment>
+- <comment xml:lang="en_GB">SAMI subtitles</comment>
++ <comment xml:lang="en-GB">SAMI subtitles</comment>
+ <comment xml:lang="eo">SAMI-subtekstoj</comment>
+ <comment xml:lang="es">subtítulos SAMI</comment>
+ <comment xml:lang="eu">SAMI azpitituluak</comment>
+ <comment xml:lang="fi">SAMI-tekstitykset</comment>
+ <comment xml:lang="fo">SAMI undirtekstir</comment>
+ <comment xml:lang="fr">sous-titres SAMI</comment>
++ <comment xml:lang="fur">sottitui SAMI</comment>
+ <comment xml:lang="ga">fotheidil SAMI</comment>
+ <comment xml:lang="gl">subtítulos SAMI</comment>
+ <comment xml:lang="he">כתוביות SAMI</comment>
+@@ -20172,7 +20858,7 @@
+ <comment xml:lang="oc">sostítols SAMI</comment>
+ <comment xml:lang="pl">Napisy SAMI</comment>
+ <comment xml:lang="pt">legendas SAMI</comment>
+- <comment xml:lang="pt_BR">Legendas SAMI</comment>
++ <comment xml:lang="pt-BR">Legendas SAMI</comment>
+ <comment xml:lang="ro">Subtitrări SAMI</comment>
+ <comment xml:lang="ru">Субтитры SAMI</comment>
+ <comment xml:lang="sk">Titulky SAMI</comment>
+@@ -20180,38 +20866,40 @@
+ <comment xml:lang="sq">Nëntituj SAMI</comment>
+ <comment xml:lang="sr">САМИ преводи</comment>
+ <comment xml:lang="sv">SAMI-undertexter</comment>
+- <comment xml:lang="tr">SAMI altyazıları</comment>
++ <comment xml:lang="tr">SAMI alt yazıları</comment>
+ <comment xml:lang="uk">субтитри SAMI</comment>
+ <comment xml:lang="vi">Phụ đề SAMI</comment>
+- <comment xml:lang="zh_CN">SAMI 字幕</comment>
+- <comment xml:lang="zh_TW">SAMI 字幕</comment>
++ <comment xml:lang="zh-CN">SAMI 字幕</comment>
++ <comment xml:lang="zh-TW">SAMI 字幕</comment>
+ <acronym>SAMI</acronym>
+ <expanded-acronym>Synchronized Accessible Media Interchange</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-generic"/>
+ <magic priority="50">
+- <match value="&lt;SAMI&gt;" type="string" offset="0:256"/>
++ <match type="string" value="&lt;SAMI&gt;" offset="0:256"/>
+ </magic>
+ <glob pattern="*.smi"/>
+ <glob pattern="*.sami"/>
+ </mime-type>
+ <mime-type type="text/x-microdvd">
+ <comment>MicroDVD subtitles</comment>
++ <comment xml:lang="af">MicroDVD-onderskrifte</comment>
+ <comment xml:lang="ar">ترجمات MicroDVD</comment>
+- <comment xml:lang="be@latin">Subtytry MicroDVD</comment>
++ <comment xml:lang="be-Latn">Subtytry MicroDVD</comment>
+ <comment xml:lang="bg">Субтитри — MicroDVD</comment>
+ <comment xml:lang="ca">subtítols MicroDVD</comment>
+ <comment xml:lang="cs">titulky MicroDVD</comment>
+ <comment xml:lang="da">MicroDVD-undertekster</comment>
+ <comment xml:lang="de">MicroDVD-Untertitel</comment>
+ <comment xml:lang="el">Υπότιτλοι MicroDVD</comment>
+- <comment xml:lang="en_GB">MicroDVD subtitles</comment>
++ <comment xml:lang="en-GB">MicroDVD subtitles</comment>
+ <comment xml:lang="eo">MicroDVD-subtekstoj</comment>
+ <comment xml:lang="es">subtítulos de MicroDVD</comment>
+ <comment xml:lang="eu">MicroDVD azpitituluak</comment>
+ <comment xml:lang="fi">MicroDVD-tekstitykset</comment>
+ <comment xml:lang="fo">MicroDVD undirtekstir</comment>
+ <comment xml:lang="fr">sous-titres MicroDVD</comment>
++ <comment xml:lang="fur">sottitui MicroDVD</comment>
+ <comment xml:lang="ga">fotheidil MicroDVD</comment>
+ <comment xml:lang="gl">subtítulos de MicroDVD</comment>
+ <comment xml:lang="he">כתוביות של MicroDVD</comment>
+@@ -20232,7 +20920,7 @@
+ <comment xml:lang="oc">sostítols MicroDVD</comment>
+ <comment xml:lang="pl">Napisy MicroDVD</comment>
+ <comment xml:lang="pt">legendas MicroDVD</comment>
+- <comment xml:lang="pt_BR">Legendas MicroDVD</comment>
++ <comment xml:lang="pt-BR">Legendas MicroDVD</comment>
+ <comment xml:lang="ro">Subtitrări MicroDVD</comment>
+ <comment xml:lang="ru">Субтитры MicroDVD</comment>
+ <comment xml:lang="sk">Titulky MicroDVD</comment>
+@@ -20240,36 +20928,38 @@
+ <comment xml:lang="sq">Nëntituj MicroDVD</comment>
+ <comment xml:lang="sr">Микро ДВД преводи</comment>
+ <comment xml:lang="sv">MicroDVD-undertexter</comment>
+- <comment xml:lang="tr">MicroDVD altyazısı</comment>
++ <comment xml:lang="tr">MicroDVD alt yazısı</comment>
+ <comment xml:lang="uk">субтитри MicroDVD</comment>
+ <comment xml:lang="vi">Phụ đề MicroDVD</comment>
+- <comment xml:lang="zh_CN">MicroDVD 字幕</comment>
+- <comment xml:lang="zh_TW">MicroDVD 字幕</comment>
++ <comment xml:lang="zh-CN">MicroDVD 字幕</comment>
++ <comment xml:lang="zh-TW">MicroDVD 字幕</comment>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="{1}" type="string" offset="0"/>
+- <match value="{0}" type="string" offset="0"/>
+- <match value="}{" type="string" offset="0:6"/>
++ <match type="string" value="{1}" offset="0"/>
++ <match type="string" value="{0}" offset="0"/>
++ <match type="string" value="}{" offset="0:6"/>
+ </magic>
+ <glob pattern="*.sub"/>
+ </mime-type>
+ <mime-type type="text/x-mpsub">
+ <comment>MPSub subtitles</comment>
++ <comment xml:lang="af">MPSub-onderskrifte</comment>
+ <comment xml:lang="ar">ترجمات MPSub</comment>
+- <comment xml:lang="be@latin">Subtytry MPSub</comment>
++ <comment xml:lang="be-Latn">Subtytry MPSub</comment>
+ <comment xml:lang="bg">Субтитри — MPSub</comment>
+ <comment xml:lang="ca">subtítols MPSub</comment>
+ <comment xml:lang="cs">titulky MPSub</comment>
+ <comment xml:lang="da">MPSub-undertekster</comment>
+ <comment xml:lang="de">MPSub-Untertitel</comment>
+ <comment xml:lang="el">Υπότιτλοι MPSub</comment>
+- <comment xml:lang="en_GB">MPSub subtitles</comment>
++ <comment xml:lang="en-GB">MPSub subtitles</comment>
+ <comment xml:lang="eo">MPSub-subtekstoj</comment>
+ <comment xml:lang="es">subtítulos MPSub</comment>
+ <comment xml:lang="eu">MPSub azpitituluak</comment>
+ <comment xml:lang="fi">MPSub-tekstitykset</comment>
+ <comment xml:lang="fo">MPSub undirtekstir</comment>
+ <comment xml:lang="fr">sous-titres MPSub</comment>
++ <comment xml:lang="fur">sottitui MPSub</comment>
+ <comment xml:lang="ga">fotheidil MPSub</comment>
+ <comment xml:lang="gl">subtítulos MPSub</comment>
+ <comment xml:lang="he">כתוביות MPSub</comment>
+@@ -20290,7 +20980,7 @@
+ <comment xml:lang="oc">sostítols MPSub</comment>
+ <comment xml:lang="pl">Napisy MPSub</comment>
+ <comment xml:lang="pt">legendas MPSub</comment>
+- <comment xml:lang="pt_BR">Legendas MPSub</comment>
++ <comment xml:lang="pt-BR">Legendas MPSub</comment>
+ <comment xml:lang="ro">Subtitrări MPSub</comment>
+ <comment xml:lang="ru">Субтитры MPSub</comment>
+ <comment xml:lang="sk">Titulky MPSub</comment>
+@@ -20298,36 +20988,38 @@
+ <comment xml:lang="sq">Nëntituj MPSub</comment>
+ <comment xml:lang="sr">МПСуб преводи</comment>
+ <comment xml:lang="sv">MPSub-undertexter</comment>
+- <comment xml:lang="tr">MPSub altyazıları</comment>
++ <comment xml:lang="tr">MPSub alt yazıları</comment>
+ <comment xml:lang="uk">субтитри MPSub</comment>
+ <comment xml:lang="vi">Phụ đề MPSub</comment>
+- <comment xml:lang="zh_CN">MPSub 字幕</comment>
+- <comment xml:lang="zh_TW">MPSub 字幕</comment>
++ <comment xml:lang="zh-CN">MPSub 字幕</comment>
++ <comment xml:lang="zh-TW">MPSub 字幕</comment>
+ <acronym>MPSub</acronym>
+ <expanded-acronym>MPlayer Subtitle</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="FORMAT=" type="string" offset="0:256"/>
++ <match type="string" value="FORMAT=" offset="0:256"/>
+ </magic>
+ <glob pattern="*.sub"/>
+ </mime-type>
+ <mime-type type="text/x-ssa">
+ <comment>SSA subtitles</comment>
++ <comment xml:lang="af">SSA-onderskrifte</comment>
+ <comment xml:lang="ar">ترجمات SSA</comment>
+- <comment xml:lang="be@latin">Subtytry SSA</comment>
++ <comment xml:lang="be-Latn">Subtytry SSA</comment>
+ <comment xml:lang="bg">Субтитри — SSA</comment>
+ <comment xml:lang="ca">subtítols SSA</comment>
+ <comment xml:lang="cs">titulky SSA</comment>
+ <comment xml:lang="da">SSA-undertekster</comment>
+ <comment xml:lang="de">SSA-Untertitel</comment>
+ <comment xml:lang="el">Υπότιτλοι SSA</comment>
+- <comment xml:lang="en_GB">SSA subtitles</comment>
++ <comment xml:lang="en-GB">SSA subtitles</comment>
+ <comment xml:lang="eo">SSA-subtekstoj</comment>
+ <comment xml:lang="es">subtítulos SSA</comment>
+ <comment xml:lang="eu">SSA azpitituluak</comment>
+ <comment xml:lang="fi">SSA-tekstitykset</comment>
+ <comment xml:lang="fo">SSA undirtekstir</comment>
+ <comment xml:lang="fr">sous-titres SSA</comment>
++ <comment xml:lang="fur">sottitui SSA</comment>
+ <comment xml:lang="ga">fotheidil SSA</comment>
+ <comment xml:lang="gl">Subtitulos SSA</comment>
+ <comment xml:lang="he">כתובית SSA</comment>
+@@ -20347,7 +21039,7 @@
+ <comment xml:lang="oc">sostítols SSA</comment>
+ <comment xml:lang="pl">Napisy SSA</comment>
+ <comment xml:lang="pt">legendas SSA</comment>
+- <comment xml:lang="pt_BR">Legendas SSA</comment>
++ <comment xml:lang="pt-BR">Legendas SSA</comment>
+ <comment xml:lang="ro">Subtitrări SSA</comment>
+ <comment xml:lang="ru">Субтитры SSA</comment>
+ <comment xml:lang="sk">Titulky SSA</comment>
+@@ -20355,38 +21047,40 @@
+ <comment xml:lang="sq">Nëntituj SSA</comment>
+ <comment xml:lang="sr">ССА преводи</comment>
+ <comment xml:lang="sv">SSA-undertexter</comment>
+- <comment xml:lang="tr">SSA altyazıları</comment>
++ <comment xml:lang="tr">SSA alt yazıları</comment>
+ <comment xml:lang="uk">субтитри SSA</comment>
+ <comment xml:lang="vi">Phụ đề SSA</comment>
+- <comment xml:lang="zh_CN">SSA 字幕</comment>
+- <comment xml:lang="zh_TW">SSA 字幕</comment>
++ <comment xml:lang="zh-CN">SSA 字幕</comment>
++ <comment xml:lang="zh-TW">SSA 字幕</comment>
+ <acronym>SSA</acronym>
+ <expanded-acronym>SubStation Alpha</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="[Script Info]" type="string" offset="0:256"/>
+- <match value="Dialogue: " type="string" offset="0:256"/>
++ <match type="string" value="[Script Info]" offset="0:256"/>
++ <match type="string" value="Dialogue: " offset="0:256"/>
+ </magic>
+ <glob pattern="*.ssa"/>
+ <glob pattern="*.ass"/>
+ </mime-type>
+ <mime-type type="text/x-subviewer">
+ <comment>SubViewer subtitles</comment>
++ <comment xml:lang="af">SubViewer-onderskrifte</comment>
+ <comment xml:lang="ar">ترجمات SubViewer</comment>
+- <comment xml:lang="be@latin">Subtytry SubViewer</comment>
++ <comment xml:lang="be-Latn">Subtytry SubViewer</comment>
+ <comment xml:lang="bg">Субтитри — SubViewer</comment>
+ <comment xml:lang="ca">subtítols SubViewer</comment>
+ <comment xml:lang="cs">titulky SubViewer</comment>
+ <comment xml:lang="da">SubViewer-undertekster</comment>
+ <comment xml:lang="de">SubViewer-Untertitel</comment>
+ <comment xml:lang="el">Υπότιτλοι SubViewer</comment>
+- <comment xml:lang="en_GB">SubViewer subtitles</comment>
++ <comment xml:lang="en-GB">SubViewer subtitles</comment>
+ <comment xml:lang="eo">SubViewer-subtekstoj</comment>
+ <comment xml:lang="es">subtítulos SubViewer</comment>
+ <comment xml:lang="eu">SubViewer azpitituluak</comment>
+ <comment xml:lang="fi">SubViewer-tekstitykset</comment>
+ <comment xml:lang="fo">SubViewer undirtekstir</comment>
+ <comment xml:lang="fr">sous-titres SubViewer</comment>
++ <comment xml:lang="fur">sottitui SubViewer</comment>
+ <comment xml:lang="ga">fotheidil SubViewer</comment>
+ <comment xml:lang="gl">subtítulos SubViewer</comment>
+ <comment xml:lang="he">כתוביות של SubViewer</comment>
+@@ -20406,7 +21100,7 @@
+ <comment xml:lang="oc">sostítols SubViewer</comment>
+ <comment xml:lang="pl">Napisy SubViewer</comment>
+ <comment xml:lang="pt">legendas SubViewer</comment>
+- <comment xml:lang="pt_BR">Legendas SubViewer</comment>
++ <comment xml:lang="pt-BR">Legendas SubViewer</comment>
+ <comment xml:lang="ro">Subtitrare SubViewer</comment>
+ <comment xml:lang="ru">Субтитры SubViewer</comment>
+ <comment xml:lang="sk">Titulky SubViewer</comment>
+@@ -20414,33 +21108,35 @@
+ <comment xml:lang="sq">Nëntituj SubViewer</comment>
+ <comment xml:lang="sr">Суб Вјивер преводи</comment>
+ <comment xml:lang="sv">SubViewer-undertexter</comment>
+- <comment xml:lang="tr">SubViewer altyazıları</comment>
++ <comment xml:lang="tr">SubViewer alt yazıları</comment>
+ <comment xml:lang="uk">субтитри SubViewer</comment>
+ <comment xml:lang="vi">Phụ đề SubViewer</comment>
+- <comment xml:lang="zh_CN">SubViewer 字幕</comment>
+- <comment xml:lang="zh_TW">SubViewer 字幕</comment>
++ <comment xml:lang="zh-CN">SubViewer 字幕</comment>
++ <comment xml:lang="zh-TW">SubViewer 字幕</comment>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="[INFORMATION]" type="string" offset="0"/>
++ <match type="string" value="[INFORMATION]" offset="0"/>
+ </magic>
+ <glob pattern="*.sub"/>
+ </mime-type>
+ <mime-type type="text/x-iMelody">
+ <comment>iMelody ringtone</comment>
++ <comment xml:lang="af">iMelody-luitoon</comment>
+ <comment xml:lang="ar">نغمة iMelody</comment>
+- <comment xml:lang="be@latin">Rington iMelody</comment>
++ <comment xml:lang="be-Latn">Rington iMelody</comment>
+ <comment xml:lang="bg">Аудио — iMelody</comment>
+ <comment xml:lang="ca">to de trucada iMelody</comment>
+ <comment xml:lang="cs">vyzváněcí melodie iMelody</comment>
+ <comment xml:lang="da">iMelody-ringetone</comment>
+ <comment xml:lang="de">iMelody-Klingelton</comment>
+ <comment xml:lang="el">ringtone iMelody</comment>
+- <comment xml:lang="en_GB">iMelody ringtone</comment>
++ <comment xml:lang="en-GB">iMelody ringtone</comment>
+ <comment xml:lang="es">tono de llamada iMelody</comment>
+ <comment xml:lang="eu">iMelody doinua</comment>
+ <comment xml:lang="fi">iMelody-soittoääni</comment>
+ <comment xml:lang="fo">iMelody ringitóni</comment>
+ <comment xml:lang="fr">sonnerie iMelody</comment>
++ <comment xml:lang="fur">sunarie iMelody</comment>
+ <comment xml:lang="ga">ton buailte iMelody</comment>
+ <comment xml:lang="gl">Melodía de iMelody</comment>
+ <comment xml:lang="he">צלצול של iMelody</comment>
+@@ -20460,7 +21156,7 @@
+ <comment xml:lang="oc">sonariá iMelody</comment>
+ <comment xml:lang="pl">Dzwonek iMelody</comment>
+ <comment xml:lang="pt">toque iMelody</comment>
+- <comment xml:lang="pt_BR">Toque de celular do iMelody</comment>
++ <comment xml:lang="pt-BR">Toque de celular do iMelody</comment>
+ <comment xml:lang="ro">Sonerie iMelody</comment>
+ <comment xml:lang="ru">Мелодия iMelody</comment>
+ <comment xml:lang="sk">Vyzváňacie melódie iMelody</comment>
+@@ -20471,33 +21167,35 @@
+ <comment xml:lang="tr">iMelody melodisi</comment>
+ <comment xml:lang="uk">рінгтон iMelody</comment>
+ <comment xml:lang="vi">tiếng réo iMelody</comment>
+- <comment xml:lang="zh_CN">iMelody 铃声</comment>
+- <comment xml:lang="zh_TW">iMelody 鈴聲</comment>
++ <comment xml:lang="zh-CN">iMelody 铃声</comment>
++ <comment xml:lang="zh-TW">iMelody 鈴聲</comment>
+ <magic priority="50">
+- <match value="BEGIN:IMELODY" type="string" offset="0"/>
++ <match type="string" value="BEGIN:IMELODY" offset="0"/>
+ </magic>
+ <glob pattern="*.imy"/>
+ <glob pattern="*.ime"/>
+ <alias type="audio/x-iMelody"/>
+ <alias type="audio/iMelody"/>
+ </mime-type>
+- <mime-type type="application/x-smaf">
++ <mime-type type="application/vnd.smaf">
+ <comment>SMAF audio</comment>
++ <comment xml:lang="af">SMAF-oudio</comment>
+ <comment xml:lang="ar">SMAF سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo SMAF</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo SMAF</comment>
+ <comment xml:lang="bg">Аудио — SMAF</comment>
+ <comment xml:lang="ca">àudio SMAF</comment>
+ <comment xml:lang="cs">zvuk SMAF</comment>
+ <comment xml:lang="da">SMAF-lyd</comment>
+ <comment xml:lang="de">SMAF-Audio</comment>
+ <comment xml:lang="el">Ήχος SMAF</comment>
+- <comment xml:lang="en_GB">SMAF audio</comment>
++ <comment xml:lang="en-GB">SMAF audio</comment>
+ <comment xml:lang="eo">SMAF-sondosiero</comment>
+- <comment xml:lang="es">sonido SMAF</comment>
++ <comment xml:lang="es">audio SMAF</comment>
+ <comment xml:lang="eu">SMAF audioa</comment>
+ <comment xml:lang="fi">SMAF-ääni</comment>
+ <comment xml:lang="fo">SMAF ljóður</comment>
+ <comment xml:lang="fr">audio SMAF</comment>
++ <comment xml:lang="fur">audio SMAF</comment>
+ <comment xml:lang="ga">fuaim SMAF</comment>
+ <comment xml:lang="gl">son SMAF</comment>
+ <comment xml:lang="he">שמע SMAF</comment>
+@@ -20517,7 +21215,7 @@
+ <comment xml:lang="oc">àudio SMAF</comment>
+ <comment xml:lang="pl">Plik dźwiękowy SMAF</comment>
+ <comment xml:lang="pt">áudio SMAF</comment>
+- <comment xml:lang="pt_BR">Áudio SMAF</comment>
++ <comment xml:lang="pt-BR">Áudio SMAF</comment>
+ <comment xml:lang="ro">Audio SMAF</comment>
+ <comment xml:lang="ru">Аудио SMAF</comment>
+ <comment xml:lang="sk">Zvuk SMAF</comment>
+@@ -20528,35 +21226,37 @@
+ <comment xml:lang="tr">SMAF sesi</comment>
+ <comment xml:lang="uk">звук SMAF</comment>
+ <comment xml:lang="vi">Âm thanh SMAF</comment>
+- <comment xml:lang="zh_CN">SMAF 音频</comment>
+- <comment xml:lang="zh_TW">SMAF 音訊</comment>
++ <comment xml:lang="zh-CN">SMAF 音频</comment>
++ <comment xml:lang="zh-TW">SMAF 音訊</comment>
+ <acronym>SMAF</acronym>
+ <expanded-acronym>Synthetic music Mobile Application Format</expanded-acronym>
+ <generic-icon name="audio-x-generic"/>
+ <magic priority="50">
+- <match value="MMMD" type="string" offset="0"/>
++ <match type="string" value="MMMD" offset="0"/>
+ </magic>
+ <glob pattern="*.mmf"/>
+ <glob pattern="*.smaf"/>
+- <alias type="application/vnd.smaf"/>
++ <alias type="application/x-smaf"/>
+ </mime-type>
+ <mime-type type="text/x-mrml">
+ <comment>MRML playlist</comment>
++ <comment xml:lang="af">MRML-speellys</comment>
+ <comment xml:lang="ar">قائمة تشغيل MRML</comment>
+- <comment xml:lang="be@latin">Śpis piesień MRML</comment>
++ <comment xml:lang="be-Latn">Śpis piesień MRML</comment>
+ <comment xml:lang="bg">Списък за изпълнение — MRML</comment>
+ <comment xml:lang="ca">llista de reproducció MRML</comment>
+ <comment xml:lang="cs">seznam k přehrání MRML</comment>
+ <comment xml:lang="da">MRML-afspilningsliste</comment>
+ <comment xml:lang="de">MRML-Wiedergabeliste</comment>
+ <comment xml:lang="el">Λίστα αναπαραγωγής MRML</comment>
+- <comment xml:lang="en_GB">MRML playlist</comment>
++ <comment xml:lang="en-GB">MRML playlist</comment>
+ <comment xml:lang="eo">MRML-ludlisto</comment>
+ <comment xml:lang="es">lista de reproducción MRML</comment>
+ <comment xml:lang="eu">MRML erreprodukzio-zerrenda</comment>
+ <comment xml:lang="fi">MRML-soittolista</comment>
+ <comment xml:lang="fo">MRML avspælingarlisti</comment>
+ <comment xml:lang="fr">liste de lecture MRML</comment>
++ <comment xml:lang="fur">liste di riproduzion MRML</comment>
+ <comment xml:lang="ga">seinmliosta MRML</comment>
+ <comment xml:lang="gl">lista de reprodución MRML</comment>
+ <comment xml:lang="he">רשימת השמעה MRML</comment>
+@@ -20577,7 +21277,7 @@
+ <comment xml:lang="oc">lista de lectura MRML</comment>
+ <comment xml:lang="pl">Lista odtwarzania MRML</comment>
+ <comment xml:lang="pt">lista de reprodução MRML</comment>
+- <comment xml:lang="pt_BR">Lista de reprodução do MRML</comment>
++ <comment xml:lang="pt-BR">Lista de reprodução do MRML</comment>
+ <comment xml:lang="ro">Listă redare MRML</comment>
+ <comment xml:lang="ru">Список воспроизведения MRML</comment>
+ <comment xml:lang="sk">Zoznam skladieb MRML</comment>
+@@ -20585,36 +21285,38 @@
+ <comment xml:lang="sq">Listë titujsh MRML</comment>
+ <comment xml:lang="sr">МРМЛ списак нумера</comment>
+ <comment xml:lang="sv">MRML-spellista</comment>
+- <comment xml:lang="tr">MRML oynatma listesi</comment>
++ <comment xml:lang="tr">MRML çalma listesi</comment>
+ <comment xml:lang="uk">список відтворення MRML</comment>
+ <comment xml:lang="vi">Danh mục nhạc MRML</comment>
+- <comment xml:lang="zh_CN">MRML 播放列表</comment>
+- <comment xml:lang="zh_TW">MRML 播放清單</comment>
++ <comment xml:lang="zh-CN">MRML 播放列表</comment>
++ <comment xml:lang="zh-TW">MRML 播放清單</comment>
+ <acronym>MRML</acronym>
+ <expanded-acronym>Multimedia Retrieval Markup Language</expanded-acronym>
+ <magic priority="50">
+- <match value="&lt;mrml " type="string" offset="0"/>
++ <match type="string" value="&lt;mrml " offset="0"/>
+ </magic>
+ <glob pattern="*.mrml"/>
+ <glob pattern="*.mrl"/>
+ </mime-type>
+ <mime-type type="audio/x-xmf">
+ <comment>XMF audio</comment>
++ <comment xml:lang="af">XMF-oudio</comment>
+ <comment xml:lang="ar">XMF سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo XMF</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo XMF</comment>
+ <comment xml:lang="bg">Аудио — XMF</comment>
+ <comment xml:lang="ca">àudio XMF</comment>
+ <comment xml:lang="cs">zvuk XMF</comment>
+ <comment xml:lang="da">XMF-lyd</comment>
+ <comment xml:lang="de">XMF-Audio</comment>
+ <comment xml:lang="el">Ήχος XMF</comment>
+- <comment xml:lang="en_GB">XMF audio</comment>
++ <comment xml:lang="en-GB">XMF audio</comment>
+ <comment xml:lang="eo">XMF-sondosiero</comment>
+- <comment xml:lang="es">sonido XMF</comment>
++ <comment xml:lang="es">audio XMF</comment>
+ <comment xml:lang="eu">XMF audioa</comment>
+ <comment xml:lang="fi">XMF-ääni</comment>
+ <comment xml:lang="fo">XMF ljóður</comment>
+ <comment xml:lang="fr">audio XMF</comment>
++ <comment xml:lang="fur">audio XMF</comment>
+ <comment xml:lang="ga">fuaim XMF</comment>
+ <comment xml:lang="gl">son XMF</comment>
+ <comment xml:lang="he">שמע XMF</comment>
+@@ -20634,7 +21336,7 @@
+ <comment xml:lang="oc">àudio XMF</comment>
+ <comment xml:lang="pl">Plik dźwiękowy XMF</comment>
+ <comment xml:lang="pt">aúdio XMF</comment>
+- <comment xml:lang="pt_BR">Áudio XMF</comment>
++ <comment xml:lang="pt-BR">Áudio XMF</comment>
+ <comment xml:lang="ro">Audio XMF</comment>
+ <comment xml:lang="ru">Аудио XMF</comment>
+ <comment xml:lang="sk">Zvuk XMF</comment>
+@@ -20645,13 +21347,13 @@
+ <comment xml:lang="tr">XMF sesi</comment>
+ <comment xml:lang="uk">звук XMF</comment>
+ <comment xml:lang="vi">Âm thanh XMF</comment>
+- <comment xml:lang="zh_CN">XMF 音频</comment>
+- <comment xml:lang="zh_TW">XMF 音訊</comment>
++ <comment xml:lang="zh-CN">XMF 音频</comment>
++ <comment xml:lang="zh-TW">XMF 音訊</comment>
+ <acronym>XMF</acronym>
+ <expanded-acronym>eXtensible Music Format</expanded-acronym>
+ <magic priority="50">
+- <match value="XMF_" type="string" offset="0"/>
+- <match value="\130\115\106\137\062\056\060\060\000\000\000\002" type="string" offset="0"/>
++ <match type="string" value="XMF_" offset="0"/>
++ <match type="string" value="\130\115\106\137\062\056\060\060\000\000\000\002" offset="0"/>
+ </magic>
+ <glob pattern="*.xmf"/>
+ <alias type="audio/xmf"/>
+@@ -20659,23 +21361,25 @@
+ </mime-type>
+ <mime-type type="application/x-sv4cpio">
+ <comment>SV4 CPIO archive</comment>
++ <comment xml:lang="af">SV4 CPIO-argief</comment>
+ <comment xml:lang="ar">أرشيف SV4 CPIO</comment>
+ <comment xml:lang="az">SV4 CPIO arxivi</comment>
+- <comment xml:lang="be@latin">Archiŭ SV4 CPIO</comment>
++ <comment xml:lang="be-Latn">Archiŭ SV4 CPIO</comment>
+ <comment xml:lang="bg">Архив — SV4 CPIO</comment>
+- <comment xml:lang="ca">arxiu CPIO SV4</comment>
++ <comment xml:lang="ca">arxiu SV4 CPIO</comment>
+ <comment xml:lang="cs">archiv SV4 CPIO</comment>
+ <comment xml:lang="cy">Archif CPIO SV4</comment>
+ <comment xml:lang="da">SV4 CPIO-arkiv</comment>
+ <comment xml:lang="de">SV4-CPIO-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο SV4 CPIO</comment>
+- <comment xml:lang="en_GB">SV4 CPIO archive</comment>
++ <comment xml:lang="en-GB">SV4 CPIO archive</comment>
+ <comment xml:lang="eo">SV4-CPIO-arkivo</comment>
+ <comment xml:lang="es">archivador SV4 CPIO</comment>
+ <comment xml:lang="eu">SV4 CPIO artxiboa</comment>
+ <comment xml:lang="fi">SV4 CPIO -arkisto</comment>
+ <comment xml:lang="fo">SV4 CPIO skjalasavn</comment>
+ <comment xml:lang="fr">archive SV4 CPIO</comment>
++ <comment xml:lang="fur">archivi SV4 CPIO</comment>
+ <comment xml:lang="ga">cartlann SV4 CPIO</comment>
+ <comment xml:lang="gl">arquivo SV4 CPIO</comment>
+ <comment xml:lang="he">ארכיון של SV4 SPIO</comment>
+@@ -20696,7 +21400,7 @@
+ <comment xml:lang="oc">archiu SV4 CPIO</comment>
+ <comment xml:lang="pl">Archiwum SV4 CPIO</comment>
+ <comment xml:lang="pt">arquivo SV4 CPIO</comment>
+- <comment xml:lang="pt_BR">Pacote SV4 CPIO</comment>
++ <comment xml:lang="pt-BR">Pacote SV4 CPIO</comment>
+ <comment xml:lang="ro">Arhivă SV4 CPIO</comment>
+ <comment xml:lang="ru">Архив SV4 CPIO</comment>
+ <comment xml:lang="sk">Archív SV4 CPIO</comment>
+@@ -20707,28 +21411,30 @@
+ <comment xml:lang="tr">SV4 CPIO arşivi</comment>
+ <comment xml:lang="uk">архів SV4 CPIO</comment>
+ <comment xml:lang="vi">Kho nén CPIO SV4</comment>
+- <comment xml:lang="zh_CN">SV4 CPIO 归档文件</comment>
+- <comment xml:lang="zh_TW">SV4 CPIO 封存檔</comment>
++ <comment xml:lang="zh-CN">SV4 CPIO 归档文件</comment>
++ <comment xml:lang="zh-TW">SV4 CPIO 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <glob pattern="*.sv4cpio"/>
+ </mime-type>
+ <mime-type type="application/x-sv4crc">
+ <comment>SV4 CPIO archive (with CRC)</comment>
++ <comment xml:lang="af">SV4 CPIO-argief (met CRC)</comment>
+ <comment xml:lang="ar">أرشيف SV4 CPIO (مع CRC)</comment>
+- <comment xml:lang="be@latin">Archiŭ SV4 CPIO (z CRC)</comment>
++ <comment xml:lang="be-Latn">Archiŭ SV4 CPIO (z CRC)</comment>
+ <comment xml:lang="bg">Архив — SV4 CPIO, проверка за грешки CRC</comment>
+- <comment xml:lang="ca">arxiu CPIO SV4 (amb CRC)</comment>
++ <comment xml:lang="ca">arxiu SV4 CPIO (amb CRC)</comment>
+ <comment xml:lang="cs">archiv SV4 CPIO (s CRC)</comment>
+ <comment xml:lang="da">SV4 CPIO-arkiv (med CRC)</comment>
+ <comment xml:lang="de">SV4-CPIO-Archiv (mit CRC)</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο SV4 CPIO (με CRC)</comment>
+- <comment xml:lang="en_GB">SV4 CPIO archive (with CRC)</comment>
++ <comment xml:lang="en-GB">SV4 CPIO archive (with CRC)</comment>
+ <comment xml:lang="eo">SV4-CPIO-arkivo (kun CRC)</comment>
+ <comment xml:lang="es">archivador SV4 CPIO (con CRC)</comment>
+ <comment xml:lang="eu">SV4 CPIO artxiboa (CRC-rekin)</comment>
+ <comment xml:lang="fi">SV4 CPIO -arkisto (CRC:llä)</comment>
+ <comment xml:lang="fo">SV4 CPIO skjalasavn (við CRC)</comment>
+ <comment xml:lang="fr">archive SV4 CPIO (avec CRC)</comment>
++ <comment xml:lang="fur">archivi SV4 CPIO (cun CRC)</comment>
+ <comment xml:lang="ga">cartlann SV4 CPIO (le CRC)</comment>
+ <comment xml:lang="gl">Arquivador SV4 CPIO (con CRC)</comment>
+ <comment xml:lang="he">ארכיון של SV4 SPIO (עם CRC)</comment>
+@@ -20747,9 +21453,9 @@
+ <comment xml:lang="nl">SV4 CPIO-archief (met CRC)</comment>
+ <comment xml:lang="nn">SV4 CPIO arkiv (med CRC)</comment>
+ <comment xml:lang="oc">archiu SV4 CPIO (avec CRC)</comment>
+- <comment xml:lang="pl">Archiwum SV4 CPIO (z sumą kontrolną)</comment>
++ <comment xml:lang="pl">Archiwum SV4 CPIO (z sumą kontrolną)</comment>
+ <comment xml:lang="pt">arquivo SV4 CPIO (com CRC)</comment>
+- <comment xml:lang="pt_BR">Pacote SV4 CPIO (com CRC)</comment>
++ <comment xml:lang="pt-BR">Pacote SV4 CPIO (com CRC)</comment>
+ <comment xml:lang="ro">Arhivă SV4 CPIO (cu CRC)</comment>
+ <comment xml:lang="ru">Архив SV4 CPIO (с CRC)</comment>
+ <comment xml:lang="sk">Archív SV4 CPIO (s CRC)</comment>
+@@ -20760,16 +21466,17 @@
+ <comment xml:lang="tr">SV4 CPIO arşivi (CRC ile)</comment>
+ <comment xml:lang="uk">архів SV4 CPIO (з CRC)</comment>
+ <comment xml:lang="vi">Kho nén CPIO SV4 (với CRC)</comment>
+- <comment xml:lang="zh_CN">SV4 CPIP 归档文件(带 CRC)</comment>
+- <comment xml:lang="zh_TW">SV4 CPIO 封存檔 (具有 CRC)</comment>
++ <comment xml:lang="zh-CN">SV4 CPIP 归档文件(带 CRC)</comment>
++ <comment xml:lang="zh-TW">SV4 CPIO 封存檔 (具有 CRC)</comment>
+ <generic-icon name="package-x-generic"/>
+ <glob pattern="*.sv4crc"/>
+ </mime-type>
+ <mime-type type="application/x-tar">
+ <comment>Tar archive</comment>
++ <comment xml:lang="af">Tar-argief</comment>
+ <comment xml:lang="ar">أرشيف Tar</comment>
+ <comment xml:lang="az">Tar arxivi</comment>
+- <comment xml:lang="be@latin">Archiŭ tar</comment>
++ <comment xml:lang="be-Latn">Archiŭ tar</comment>
+ <comment xml:lang="bg">Архив — tar</comment>
+ <comment xml:lang="ca">arxiu tar</comment>
+ <comment xml:lang="cs">archiv Tar</comment>
+@@ -20777,12 +21484,13 @@
+ <comment xml:lang="da">Tar-arkiv</comment>
+ <comment xml:lang="de">Tar-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο Tar</comment>
+- <comment xml:lang="en_GB">Tar archive</comment>
++ <comment xml:lang="en-GB">Tar archive</comment>
+ <comment xml:lang="es">archivador Tar</comment>
+ <comment xml:lang="eu">Tar artxiboa</comment>
+ <comment xml:lang="fi">Tar-arkisto</comment>
+ <comment xml:lang="fo">Tar skjalasavn</comment>
+ <comment xml:lang="fr">archive tar</comment>
++ <comment xml:lang="fur">archivi Tar</comment>
+ <comment xml:lang="ga">cartlann Tar</comment>
+ <comment xml:lang="gl">arquivo Tar</comment>
+ <comment xml:lang="he">ארכיון Tar</comment>
+@@ -20803,10 +21511,10 @@
+ <comment xml:lang="oc">archiu tar</comment>
+ <comment xml:lang="pl">Archiwum tar</comment>
+ <comment xml:lang="pt">arquivo Tar</comment>
+- <comment xml:lang="pt_BR">Pacote Tar</comment>
++ <comment xml:lang="pt-BR">Pacote Tar</comment>
+ <comment xml:lang="ro">Arhivă Tar</comment>
+ <comment xml:lang="ru">Архив TAR</comment>
+- <comment xml:lang="sk">Archív tar</comment>
++ <comment xml:lang="sk">Archív Tar</comment>
+ <comment xml:lang="sl">Datoteka arhiva Tar</comment>
+ <comment xml:lang="sq">Arkiv tar</comment>
+ <comment xml:lang="sr">Тар архива</comment>
+@@ -20814,13 +21522,13 @@
+ <comment xml:lang="tr">Tar arşivi</comment>
+ <comment xml:lang="uk">архів tar</comment>
+ <comment xml:lang="vi">Kho nén tar</comment>
+- <comment xml:lang="zh_CN">Tar 归档文件</comment>
+- <comment xml:lang="zh_TW">Tar 封存檔</comment>
++ <comment xml:lang="zh-CN">Tar 归档文件</comment>
++ <comment xml:lang="zh-TW">Tar 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <alias type="application/x-gtar"/>
+ <magic priority="60">
+- <match value="ustar\0" type="string" offset="257"/>
+- <match value="ustar\040\040\0" type="string" offset="257"/>
++ <match type="string" value="ustar\0" offset="257"/>
++ <match type="string" value="ustar\040\040\0" offset="257"/>
+ </magic>
+ <glob pattern="*.tar"/>
+ <glob pattern="*.gtar"/>
+@@ -20828,20 +21536,22 @@
+ </mime-type>
+ <mime-type type="application/x-tarz">
+ <comment>Tar archive (compressed)</comment>
++ <comment xml:lang="af">Tar-argief (saamgepers)</comment>
+ <comment xml:lang="ar">أرشيف Tar (مضغوط)</comment>
+- <comment xml:lang="be@latin">Archiŭ tar (skampresavany)</comment>
++ <comment xml:lang="be-Latn">Archiŭ tar (skampresavany)</comment>
+ <comment xml:lang="bg">Архив — tar, компресиран</comment>
+ <comment xml:lang="ca">arxiu tar (amb compressió)</comment>
+ <comment xml:lang="cs">archiv Tar (komprimovaný)</comment>
+ <comment xml:lang="da">Tar-arkiv (komprimeret)</comment>
+ <comment xml:lang="de">Tar-Archiv (komprimiert)</comment>
+ <comment xml:lang="el">Αρχείο Tar (συμπιεσμένο)</comment>
+- <comment xml:lang="en_GB">Tar archive (compressed)</comment>
++ <comment xml:lang="en-GB">Tar archive (compressed)</comment>
+ <comment xml:lang="es">archivador Tar (comprimido)</comment>
+ <comment xml:lang="eu">Tar artxiboa (konprimitua)</comment>
+ <comment xml:lang="fi">Tar-arkisto (pakattu)</comment>
+ <comment xml:lang="fo">Tar skjalasavn (stappað)</comment>
+ <comment xml:lang="fr">archive tar (compressée)</comment>
++ <comment xml:lang="fur">archivi Tar (comprimût)</comment>
+ <comment xml:lang="ga">cartlann Tar (comhbhrúite)</comment>
+ <comment xml:lang="gl">arquivo Tar (comprimido)</comment>
+ <comment xml:lang="he">ארכיון Tar (מכווץ)</comment>
+@@ -20861,10 +21571,10 @@
+ <comment xml:lang="oc">archiu tar (compressat)</comment>
+ <comment xml:lang="pl">Archiwum tar (skompresowane)</comment>
+ <comment xml:lang="pt">arquivo Tar (comprimido)</comment>
+- <comment xml:lang="pt_BR">Pacote Tar (compactado)</comment>
++ <comment xml:lang="pt-BR">Pacote Tar (compactado)</comment>
+ <comment xml:lang="ro">Arhivă Tar (comprimată)</comment>
+ <comment xml:lang="ru">Архив TAR (сжатый)</comment>
+- <comment xml:lang="sk">Archív tar (komprimovaný)</comment>
++ <comment xml:lang="sk">Archív Tar (komprimovaný)</comment>
+ <comment xml:lang="sl">Datoteka arhiva Tar (stisnjen)</comment>
+ <comment xml:lang="sq">Arkiv tar (i kompresuar)</comment>
+ <comment xml:lang="sr">Тар архива (запакована)</comment>
+@@ -20872,8 +21582,8 @@
+ <comment xml:lang="tr">Tar arşivi (sıkıştırılmış)</comment>
+ <comment xml:lang="uk">архів tar (стиснений)</comment>
+ <comment xml:lang="vi">Kho nén tar (đã nén)</comment>
+- <comment xml:lang="zh_CN">Tar 归档文件(压缩)</comment>
+- <comment xml:lang="zh_TW">Tar 封存檔 (UNIX 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">Tar 归档文件(压缩)</comment>
++ <comment xml:lang="zh-TW">Tar 封存檔 (壓縮)</comment>
+ <sub-class-of type="application/x-compress"/>
+ <generic-icon name="package-x-generic"/>
+ <glob pattern="*.tar.Z"/>
+@@ -20881,25 +21591,27 @@
+ </mime-type>
+ <mime-type type="application/x-tex-gf">
+ <comment>generic font file</comment>
++ <comment xml:lang="af">generiese skriftipelêer</comment>
+ <comment xml:lang="ar">ملف الخط العام</comment>
+- <comment xml:lang="be@latin">zvyčajny fajł šryftu</comment>
++ <comment xml:lang="be-Latn">zvyčajny fajł šryftu</comment>
+ <comment xml:lang="bg">Шрифт</comment>
+ <comment xml:lang="ca">fitxer de lletra genèrica</comment>
+ <comment xml:lang="cs">obecný soubor s fontem</comment>
+ <comment xml:lang="da">general skrifttypefil</comment>
+ <comment xml:lang="de">Allgemeine Schriftdatei</comment>
+ <comment xml:lang="el">Γενικό αρχείο γραμματοσειράς</comment>
+- <comment xml:lang="en_GB">generic font file</comment>
++ <comment xml:lang="en-GB">generic font file</comment>
+ <comment xml:lang="eo">genera tipara dosiero</comment>
+ <comment xml:lang="es">tipo de letra genérico</comment>
+ <comment xml:lang="eu">letra-tipo orokorra</comment>
+ <comment xml:lang="fi">yleinen fonttitiedosto</comment>
+ <comment xml:lang="fo">felagsstavasniðsfíla</comment>
+ <comment xml:lang="fr">fichier de polices générique</comment>
++ <comment xml:lang="fur">file di caratar gjeneric</comment>
+ <comment xml:lang="ga">comhad cló ginearálta</comment>
+ <comment xml:lang="gl">ficheiro de tipo de fonte xenérica</comment>
+ <comment xml:lang="he">קובץ גופן גנרי</comment>
+- <comment xml:lang="hr">Izvorna datoteka slova</comment>
++ <comment xml:lang="hr">generička datoteka fonta</comment>
+ <comment xml:lang="hu">általános betűkészletfájl</comment>
+ <comment xml:lang="ia">File de typo de litteras generic</comment>
+ <comment xml:lang="id">berkas fonta generik</comment>
+@@ -20916,7 +21628,7 @@
+ <comment xml:lang="oc">fichièr de poliças generic</comment>
+ <comment xml:lang="pl">Zwykły plik czcionki</comment>
+ <comment xml:lang="pt">ficheiro genérico de letra</comment>
+- <comment xml:lang="pt_BR">Arquivo de fonte genérico</comment>
++ <comment xml:lang="pt-BR">Arquivo de fonte genérico</comment>
+ <comment xml:lang="ro">fișier de font generic</comment>
+ <comment xml:lang="ru">Обычный файл шрифта</comment>
+ <comment xml:lang="sk">Obyčajný súbor písma</comment>
+@@ -20927,32 +21639,34 @@
+ <comment xml:lang="tr">genel yazı tipi dosyası</comment>
+ <comment xml:lang="uk">загальний файл шрифту</comment>
+ <comment xml:lang="vi">tập tin phông giống loài</comment>
+- <comment xml:lang="zh_CN">通用字体文件</comment>
+- <comment xml:lang="zh_TW">通用字型檔</comment>
++ <comment xml:lang="zh-CN">通用字体文件</comment>
++ <comment xml:lang="zh-TW">通用字型檔</comment>
+ <generic-icon name="font-x-generic"/>
+ <glob pattern="*.gf"/>
+ </mime-type>
+ <mime-type type="application/x-tex-pk">
+ <comment>packed font file</comment>
++ <comment xml:lang="af">verpakte skriftipelêer</comment>
+ <comment xml:lang="ar">ملف الخط المرزم</comment>
+- <comment xml:lang="be@latin">zapakavany fajł šryftu</comment>
++ <comment xml:lang="be-Latn">zapakavany fajł šryftu</comment>
+ <comment xml:lang="bg">Шрифт — компресиран</comment>
+ <comment xml:lang="ca">fitxer de lletra empaquetada</comment>
+ <comment xml:lang="cs">komprimovaný soubor s fontem</comment>
+ <comment xml:lang="da">pakket skrifttypefil</comment>
+ <comment xml:lang="de">Gepackte Schriftdatei</comment>
+ <comment xml:lang="el">Αρχείο συμπιεσμένης γραμματοσειράς</comment>
+- <comment xml:lang="en_GB">packed font file</comment>
++ <comment xml:lang="en-GB">packed font file</comment>
+ <comment xml:lang="eo">pakigita tipara dosiero</comment>
+ <comment xml:lang="es">tipo de letra empaquetado</comment>
+ <comment xml:lang="eu">Letra-tipo fitxategi paketatua</comment>
+ <comment xml:lang="fi">pakattu fonttitiedosto</comment>
+ <comment xml:lang="fo">pakkað stavasniðsfíla</comment>
+ <comment xml:lang="fr">fichier de polices empaquetées</comment>
++ <comment xml:lang="fur">file di caratar impachetât</comment>
+ <comment xml:lang="ga">comhad cló pacáilte</comment>
+ <comment xml:lang="gl">ficheiro de fonte empaquetada</comment>
+ <comment xml:lang="he">קובץ גופן ארוז</comment>
+- <comment xml:lang="hr">Zapakirana datoteka slova</comment>
++ <comment xml:lang="hr">zapakirana datoteka fonta</comment>
+ <comment xml:lang="hu">packed font-fájl</comment>
+ <comment xml:lang="ia">File de typos de litteras impacchettate</comment>
+ <comment xml:lang="id">berkas fonta terkemas</comment>
+@@ -20969,7 +21683,7 @@
+ <comment xml:lang="oc">fichièr de poliças empaquetadas</comment>
+ <comment xml:lang="pl">Plik ze spakowaną czcionką</comment>
+ <comment xml:lang="pt">ficheiro de letras empacotadas</comment>
+- <comment xml:lang="pt_BR">Arquivo de fonte empacotado</comment>
++ <comment xml:lang="pt-BR">Arquivo de fonte empacotado</comment>
+ <comment xml:lang="ro">fișier font împachetat</comment>
+ <comment xml:lang="ru">Сжатый файл шрифта</comment>
+ <comment xml:lang="sk">Komprimovaný súbor písma</comment>
+@@ -20980,29 +21694,31 @@
+ <comment xml:lang="tr">paketlenmiş yazı tipi dosyası</comment>
+ <comment xml:lang="uk">запакований файл шрифту</comment>
+ <comment xml:lang="vi">tập tin phông chữ đã đóng gói</comment>
+- <comment xml:lang="zh_CN">打包的字体文件</comment>
+- <comment xml:lang="zh_TW">包裝字型檔</comment>
++ <comment xml:lang="zh-CN">打包的字体文件</comment>
++ <comment xml:lang="zh-TW">包裝字型檔</comment>
+ <generic-icon name="font-x-generic"/>
+ <glob pattern="*.pk"/>
+ </mime-type>
+ <mime-type type="application/x-tgif">
+ <comment>TGIF document</comment>
++ <comment xml:lang="af">TGIF-dokument</comment>
+ <comment xml:lang="ar">مستند TGIF</comment>
+ <comment xml:lang="ast">Documentu de TGIF</comment>
+- <comment xml:lang="be@latin">Dakument TGIF</comment>
++ <comment xml:lang="be-Latn">Dakument TGIF</comment>
+ <comment xml:lang="bg">Документ — TGIF</comment>
+ <comment xml:lang="ca">document TGIF</comment>
+ <comment xml:lang="cs">dokument TGIF</comment>
+ <comment xml:lang="da">TGIF-dokument</comment>
+ <comment xml:lang="de">TGIF-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο TGIF</comment>
+- <comment xml:lang="en_GB">TGIF document</comment>
++ <comment xml:lang="en-GB">TGIF document</comment>
+ <comment xml:lang="eo">TGIF-dokumento</comment>
+ <comment xml:lang="es">documento TGIF</comment>
+ <comment xml:lang="eu">TGIF dokumentua</comment>
+ <comment xml:lang="fi">TGIF-asiakirja</comment>
+ <comment xml:lang="fo">TGIF skjal</comment>
+ <comment xml:lang="fr">document TGIF</comment>
++ <comment xml:lang="fur">document TGIF</comment>
+ <comment xml:lang="ga">cáipéis TGIF</comment>
+ <comment xml:lang="gl">documento TGIF</comment>
+ <comment xml:lang="he">מסמך TGIF</comment>
+@@ -21023,7 +21739,7 @@
+ <comment xml:lang="oc">document TGIF</comment>
+ <comment xml:lang="pl">Dokument TGIF</comment>
+ <comment xml:lang="pt">documento TGIF</comment>
+- <comment xml:lang="pt_BR">Documento TGIF</comment>
++ <comment xml:lang="pt-BR">Documento TGIF</comment>
+ <comment xml:lang="ro">Document TGIF</comment>
+ <comment xml:lang="ru">Документ TGIF</comment>
+ <comment xml:lang="sk">Dokument TGIF</comment>
+@@ -21034,19 +21750,20 @@
+ <comment xml:lang="tr">TGIF belgesi</comment>
+ <comment xml:lang="uk">документ TGIF</comment>
+ <comment xml:lang="vi">Tài liệu TGIF</comment>
+- <comment xml:lang="zh_CN">TGIF 文档</comment>
+- <comment xml:lang="zh_TW">TGIF 文件</comment>
++ <comment xml:lang="zh-CN">TGIF 文档</comment>
++ <comment xml:lang="zh-TW">TGIF 文件</comment>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="%TGIF" type="string" offset="0"/>
++ <match type="string" value="%TGIF" offset="0"/>
+ </magic>
+ <glob pattern="*.obj"/>
+ </mime-type>
+ <mime-type type="application/x-theme">
+ <comment>theme</comment>
++ <comment xml:lang="af">tema</comment>
+ <comment xml:lang="ar">سمة</comment>
+ <comment xml:lang="az">örtük</comment>
+- <comment xml:lang="be@latin">matyŭ</comment>
++ <comment xml:lang="be-Latn">matyŭ</comment>
+ <comment xml:lang="bg">Тема</comment>
+ <comment xml:lang="ca">tema</comment>
+ <comment xml:lang="cs">motiv</comment>
+@@ -21054,13 +21771,14 @@
+ <comment xml:lang="da">tema</comment>
+ <comment xml:lang="de">Thema</comment>
+ <comment xml:lang="el">Θέμα</comment>
+- <comment xml:lang="en_GB">theme</comment>
++ <comment xml:lang="en-GB">theme</comment>
+ <comment xml:lang="eo">etoso</comment>
+ <comment xml:lang="es">tema</comment>
+ <comment xml:lang="eu">gaia</comment>
+ <comment xml:lang="fi">teema</comment>
+ <comment xml:lang="fo">tema</comment>
+ <comment xml:lang="fr">thème</comment>
++ <comment xml:lang="fur">teme</comment>
+ <comment xml:lang="ga">téama</comment>
+ <comment xml:lang="gl">tema</comment>
+ <comment xml:lang="he">ערכת נושא</comment>
+@@ -21082,7 +21800,7 @@
+ <comment xml:lang="oc">tèma</comment>
+ <comment xml:lang="pl">Motyw</comment>
+ <comment xml:lang="pt">tema</comment>
+- <comment xml:lang="pt_BR">Tema</comment>
++ <comment xml:lang="pt-BR">Tema</comment>
+ <comment xml:lang="ro">temă</comment>
+ <comment xml:lang="ru">Тема</comment>
+ <comment xml:lang="sk">Motív</comment>
+@@ -21093,18 +21811,19 @@
+ <comment xml:lang="tr">tema</comment>
+ <comment xml:lang="uk">тема</comment>
+ <comment xml:lang="vi">sắc thái</comment>
+- <comment xml:lang="zh_CN">主题</comment>
+- <comment xml:lang="zh_TW">佈景主題</comment>
++ <comment xml:lang="zh-CN">主题</comment>
++ <comment xml:lang="zh-TW">佈景主題</comment>
+ <sub-class-of type="application/x-desktop"/>
+ <generic-icon name="package-x-generic"/>
+ <glob pattern="*.theme"/>
+ </mime-type>
+ <mime-type type="application/x-toutdoux">
+ <comment>ToutDoux document</comment>
++ <comment xml:lang="af">ToutDoux-dokument</comment>
+ <comment xml:lang="ar">مستند ToutDoux</comment>
+ <comment xml:lang="ast">Documentu de ToutDoux</comment>
+ <comment xml:lang="az">ToutDoux sənədi</comment>
+- <comment xml:lang="be@latin">Dakument ToutDoux</comment>
++ <comment xml:lang="be-Latn">Dakument ToutDoux</comment>
+ <comment xml:lang="bg">Документ — ToutDoux</comment>
+ <comment xml:lang="ca">document ToutDoux</comment>
+ <comment xml:lang="cs">dokument ToutDoux</comment>
+@@ -21112,13 +21831,14 @@
+ <comment xml:lang="da">ToutDoux-dokument</comment>
+ <comment xml:lang="de">ToutDoux-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο ToutDoux</comment>
+- <comment xml:lang="en_GB">ToutDoux document</comment>
++ <comment xml:lang="en-GB">ToutDoux document</comment>
+ <comment xml:lang="eo">ToutDoux-dokumento</comment>
+ <comment xml:lang="es">documento de ToutDoux</comment>
+ <comment xml:lang="eu">ToutDoux dokumentua</comment>
+ <comment xml:lang="fi">ToutDoux-asiakirja</comment>
+ <comment xml:lang="fo">ToutDoux skjal</comment>
+ <comment xml:lang="fr">document ToutDoux</comment>
++ <comment xml:lang="fur">document ToutDoux</comment>
+ <comment xml:lang="ga">cáipéis ToutDoux</comment>
+ <comment xml:lang="gl">documento de ToutDoux</comment>
+ <comment xml:lang="he">מסמך של ToutDoux</comment>
+@@ -21139,7 +21859,7 @@
+ <comment xml:lang="oc">document ToutDoux</comment>
+ <comment xml:lang="pl">Dokument ToutDoux</comment>
+ <comment xml:lang="pt">documento ToutDoux</comment>
+- <comment xml:lang="pt_BR">Documento do ToutDoux</comment>
++ <comment xml:lang="pt-BR">Documento do ToutDoux</comment>
+ <comment xml:lang="ro">Document ToutDoux</comment>
+ <comment xml:lang="ru">Документ ToutDoux</comment>
+ <comment xml:lang="sk">Dokument ToutDoux</comment>
+@@ -21150,27 +21870,29 @@
+ <comment xml:lang="tr">ToutDoux belgesi</comment>
+ <comment xml:lang="uk">документ ToutDoux</comment>
+ <comment xml:lang="vi">Tài liệu ToutDoux</comment>
+- <comment xml:lang="zh_CN">ToutDoux 文档</comment>
+- <comment xml:lang="zh_TW">ToutDoux 文件</comment>
++ <comment xml:lang="zh-CN">ToutDoux 文档</comment>
++ <comment xml:lang="zh-TW">ToutDoux 文件</comment>
+ <generic-icon name="x-office-document"/>
+ </mime-type>
+ <mime-type type="application/x-trash">
+ <comment>backup file</comment>
++ <comment xml:lang="af">rugsteunlêer</comment>
+ <comment xml:lang="ar">ملف النسخ الاحتياطي</comment>
+- <comment xml:lang="be@latin">zapasny fajł</comment>
++ <comment xml:lang="be-Latn">zapasny fajł</comment>
+ <comment xml:lang="bg">Резервно копие</comment>
+ <comment xml:lang="ca">fitxer de còpia de seguretat</comment>
+ <comment xml:lang="cs">záložní soubor</comment>
+ <comment xml:lang="da">sikkerhedskopi</comment>
+ <comment xml:lang="de">Sicherungsdatei</comment>
+ <comment xml:lang="el">Αντίγραφο ασφαλείας</comment>
+- <comment xml:lang="en_GB">backup file</comment>
++ <comment xml:lang="en-GB">backup file</comment>
+ <comment xml:lang="eo">restaŭrkopio</comment>
+ <comment xml:lang="es">archivo de respaldo</comment>
+ <comment xml:lang="eu">babes-kopiako fitxategia</comment>
+ <comment xml:lang="fi">varmuuskopio</comment>
+ <comment xml:lang="fo">trygdarritsfíla</comment>
+ <comment xml:lang="fr">fichier de sauvegarde</comment>
++ <comment xml:lang="fur">file di backup</comment>
+ <comment xml:lang="ga">comhad cúltaca</comment>
+ <comment xml:lang="gl">ficheiro de copia de seguridade</comment>
+ <comment xml:lang="he">קובץ גיבוי</comment>
+@@ -21191,7 +21913,7 @@
+ <comment xml:lang="oc">fichièr de salvament</comment>
+ <comment xml:lang="pl">Plik zapasowy</comment>
+ <comment xml:lang="pt">cópia de segurança</comment>
+- <comment xml:lang="pt_BR">Arquivo de backup</comment>
++ <comment xml:lang="pt-BR">Arquivo de backup</comment>
+ <comment xml:lang="ro">fișier de backup</comment>
+ <comment xml:lang="ru">Резервная копия</comment>
+ <comment xml:lang="sk">Záložný súbor</comment>
+@@ -21202,8 +21924,8 @@
+ <comment xml:lang="tr">yedek dosyası</comment>
+ <comment xml:lang="uk">резервна копія</comment>
+ <comment xml:lang="vi">tập tin sao lưu</comment>
+- <comment xml:lang="zh_CN">备份文件</comment>
+- <comment xml:lang="zh_TW">備份檔</comment>
++ <comment xml:lang="zh-CN">备份文件</comment>
++ <comment xml:lang="zh-TW">備份檔</comment>
+ <glob pattern="*~"/>
+ <glob pattern="*%"/>
+ <glob pattern="*.bak"/>
+@@ -21212,10 +21934,11 @@
+ </mime-type>
+ <mime-type type="text/troff">
+ <comment>Troff document</comment>
++ <comment xml:lang="af">Troff-dokument</comment>
+ <comment xml:lang="ar">مستند Troff</comment>
+ <comment xml:lang="ast">Documentu de Troff</comment>
+ <comment xml:lang="az">Troff sənədi</comment>
+- <comment xml:lang="be@latin">Dakument Troff</comment>
++ <comment xml:lang="be-Latn">Dakument Troff</comment>
+ <comment xml:lang="bg">Документ — Troff</comment>
+ <comment xml:lang="ca">document Troff</comment>
+ <comment xml:lang="cs">dokument Troff</comment>
+@@ -21223,13 +21946,14 @@
+ <comment xml:lang="da">Troffdokument</comment>
+ <comment xml:lang="de">Troff-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο troff</comment>
+- <comment xml:lang="en_GB">Troff document</comment>
++ <comment xml:lang="en-GB">Troff document</comment>
+ <comment xml:lang="eo">Troff-dokumento</comment>
+ <comment xml:lang="es">documento de Troff</comment>
+ <comment xml:lang="eu">Troff dokumentua</comment>
+ <comment xml:lang="fi">Troff-asiakirja</comment>
+ <comment xml:lang="fo">Troff skjal</comment>
+ <comment xml:lang="fr">document Troff</comment>
++ <comment xml:lang="fur">document Troff</comment>
+ <comment xml:lang="ga">cáipéis Troff</comment>
+ <comment xml:lang="gl">documento Troff</comment>
+ <comment xml:lang="he">מסמך Troff</comment>
+@@ -21250,7 +21974,7 @@
+ <comment xml:lang="oc">document Troff</comment>
+ <comment xml:lang="pl">Dokument Troff</comment>
+ <comment xml:lang="pt">documento Troff</comment>
+- <comment xml:lang="pt_BR">Documento Troff</comment>
++ <comment xml:lang="pt-BR">Documento Troff</comment>
+ <comment xml:lang="ro">Document Troff</comment>
+ <comment xml:lang="ru">Документ Troff</comment>
+ <comment xml:lang="sk">Dokument troff</comment>
+@@ -21261,16 +21985,16 @@
+ <comment xml:lang="tr">Troff belgesi</comment>
+ <comment xml:lang="uk">документ Troff</comment>
+ <comment xml:lang="vi">Tài liệu Troff</comment>
+- <comment xml:lang="zh_CN">Troff 文档</comment>
+- <comment xml:lang="zh_TW">Troff 文件</comment>
++ <comment xml:lang="zh-CN">Troff 文档</comment>
++ <comment xml:lang="zh-TW">Troff 文件</comment>
+ <sub-class-of type="text/plain"/>
+ <alias type="application/x-troff"/>
+ <alias type="text/x-troff"/>
+ <magic priority="50">
+- <match value='.\\\"' type="string" offset="0"/>
+- <match value="'\\\&quot;" type="string" offset="0"/>
+- <match value="'.\\\&quot;" type="string" offset="0"/>
+- <match value='\\\"' type="string" offset="0"/>
++ <match type="string" value=".\\\&quot;" offset="0"/>
++ <match type="string" value="'\\\&quot;" offset="0"/>
++ <match type="string" value="'.\\\&quot;" offset="0"/>
++ <match type="string" value="\\\&quot;" offset="0"/>
+ </magic>
+ <glob pattern="*.tr"/>
+ <glob pattern="*.roff"/>
+@@ -21278,15 +22002,19 @@
+ </mime-type>
+ <mime-type type="application/x-troff-man">
+ <comment>Manpage manual document</comment>
++ <comment xml:lang="af">Manpage-handleiding</comment>
++ <comment xml:lang="bg">Страница от ръководството</comment>
+ <comment xml:lang="ca">document de pàgina man</comment>
+ <comment xml:lang="cs">manuálová stránka</comment>
+ <comment xml:lang="da">Manpage-manualdokument</comment>
+ <comment xml:lang="de">Manpage-Handbuchdokument</comment>
+ <comment xml:lang="el">Έγγραφο βοήθειας manpage</comment>
+- <comment xml:lang="en_GB">Manpage manual document</comment>
++ <comment xml:lang="en-GB">Manpage manual document</comment>
+ <comment xml:lang="es">documento de manual de Manpage</comment>
+ <comment xml:lang="eu">Manpage eskuliburu dokumentua</comment>
++ <comment xml:lang="fi">Manpage manuaali dokumentit</comment>
+ <comment xml:lang="fr">document manuel Manpage</comment>
++ <comment xml:lang="fur">document manuâl Manpage</comment>
+ <comment xml:lang="ga">cáipéis lámhleabhair Man</comment>
+ <comment xml:lang="he">מסמך תיעוד man</comment>
+ <comment xml:lang="hr">Manpage dokument priručnika</comment>
+@@ -21295,42 +22023,44 @@
+ <comment xml:lang="id">Dokumen manual manpage</comment>
+ <comment xml:lang="it">Documento di manuale manpage</comment>
+ <comment xml:lang="kk">Manpage нұсқаулық құжаты</comment>
+- <comment xml:lang="ko">맨 페이지 설명서 문서</comment>
++ <comment xml:lang="ko">man 페이지 설명서 문서</comment>
+ <comment xml:lang="oc">document de manual Manpage</comment>
+ <comment xml:lang="pl">Dokument podręcznika stron pomocy</comment>
+ <comment xml:lang="pt">documento de ajuda Manpage</comment>
+- <comment xml:lang="pt_BR">Documento Manpage</comment>
++ <comment xml:lang="pt-BR">Documento Manpage</comment>
+ <comment xml:lang="ru">Документ справочной системы Manpage</comment>
+ <comment xml:lang="sk">Dokument manuálu Manpage</comment>
+ <comment xml:lang="sr">документ упутства странице упутства</comment>
+ <comment xml:lang="sv">Manpage-manualdokument</comment>
+ <comment xml:lang="tr">Man sayfası el kitabı belgesi</comment>
+ <comment xml:lang="uk">документ підручника man</comment>
+- <comment xml:lang="zh_CN">Manpage 手册文档</comment>
+- <comment xml:lang="zh_TW">Manpage 手冊說明文件</comment>
++ <comment xml:lang="zh-CN">Manpage 手册文档</comment>
++ <comment xml:lang="zh-TW">Manpage 手冊說明文件</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-generic"/>
+ <glob pattern="*.man"/>
+ </mime-type>
+ <mime-type type="application/x-troff-man-compressed">
+ <comment>manual page (compressed)</comment>
++ <comment xml:lang="af">handleiding (saamgepers)</comment>
+ <comment xml:lang="ar">صفحة المساعدة (مضغوطة)</comment>
+ <comment xml:lang="az">man səhifəsi (sıxışdırılmış)</comment>
+- <comment xml:lang="be@latin">staronka dapamohi (skampresavanaja)</comment>
+- <comment xml:lang="bg">Страница от справочника, компресирана</comment>
++ <comment xml:lang="be-Latn">staronka dapamohi (skampresavanaja)</comment>
++ <comment xml:lang="bg">Страница от ръководството — компресирана</comment>
+ <comment xml:lang="ca">pàgina de manual (amb compressió)</comment>
+ <comment xml:lang="cs">manuálová stránka (komprimovaná)</comment>
+ <comment xml:lang="cy">tudalen llawlyfr (wedi ei gywasgu)</comment>
+ <comment xml:lang="da">manualside (komprimeret)</comment>
+ <comment xml:lang="de">Handbuchseite (komprimiert)</comment>
+ <comment xml:lang="el">Σελίδα οδηγιών (συμπιεσμένη)</comment>
+- <comment xml:lang="en_GB">manual page (compressed)</comment>
++ <comment xml:lang="en-GB">manual page (compressed)</comment>
+ <comment xml:lang="eo">manpaĝo (kunpremita)</comment>
+ <comment xml:lang="es">página de manual (comprimida)</comment>
+ <comment xml:lang="eu">eskuliburu orria (konprimitua)</comment>
+ <comment xml:lang="fi">manuaalisivu (pakattu)</comment>
+ <comment xml:lang="fo">handbókasíða (stappað)</comment>
+ <comment xml:lang="fr">page de manuel (compressée)</comment>
++ <comment xml:lang="fur">pagjine di manuâl (comprimude)</comment>
+ <comment xml:lang="ga">leathanach lámhleabhair (comhbhrúite)</comment>
+ <comment xml:lang="gl">páxina de manual (comprimida)</comment>
+ <comment xml:lang="he">דף עזר (מכווץ)</comment>
+@@ -21351,7 +22081,7 @@
+ <comment xml:lang="oc">pagina de manual (compressat)</comment>
+ <comment xml:lang="pl">Strona podręcznika (skompresowana)</comment>
+ <comment xml:lang="pt">página de manual (comprimida)</comment>
+- <comment xml:lang="pt_BR">Página de manual (compactada)</comment>
++ <comment xml:lang="pt-BR">Página de manual (compactada)</comment>
+ <comment xml:lang="ro">pagină de manual (comprimată)</comment>
+ <comment xml:lang="ru">Страница руководства (сжатая)</comment>
+ <comment xml:lang="sk">Manuálová stránka (komprimovaná)</comment>
+@@ -21362,31 +22092,33 @@
+ <comment xml:lang="tr">kılavuz dosyası (sıkıştırılmış)</comment>
+ <comment xml:lang="uk">сторінка посібника (стиснена)</comment>
+ <comment xml:lang="vi">trang hướng dẫn (đã nén)</comment>
+- <comment xml:lang="zh_CN">手册页(压缩)</comment>
+- <comment xml:lang="zh_TW">手冊頁面 (壓縮版)</comment>
++ <comment xml:lang="zh-CN">手册页(压缩)</comment>
++ <comment xml:lang="zh-TW">手冊頁面 (壓縮版)</comment>
+ <generic-icon name="text-x-generic"/>
+ </mime-type>
+ <mime-type type="application/x-tzo">
+ <comment>Tar archive (LZO-compressed)</comment>
++ <comment xml:lang="af">Tar-argief (LZO-saamgepers)</comment>
+ <comment xml:lang="ar">أرشيف Tar (مضغوط-LZO)</comment>
+- <comment xml:lang="be@latin">Archiŭ tar (LZO-skampresavany)</comment>
++ <comment xml:lang="be-Latn">Archiŭ tar (LZO-skampresavany)</comment>
+ <comment xml:lang="bg">Архив — tar, компресиран с LZO</comment>
+ <comment xml:lang="ca">arxiu tar (amb compressió LZO)</comment>
+ <comment xml:lang="cs">archiv Tar (komprimovaný pomocí LZO)</comment>
+ <comment xml:lang="da">Tar-arkiv (LZO-komprimeret)</comment>
+ <comment xml:lang="de">Tar-Archiv (LZO-komprimiert)</comment>
+ <comment xml:lang="el">Αρχείο Tar (συμπιεσμένο με LZO)</comment>
+- <comment xml:lang="en_GB">Tar archive (LZO-compressed)</comment>
++ <comment xml:lang="en-GB">Tar archive (LZO-compressed)</comment>
+ <comment xml:lang="es">archivador Tar (comprimido con LZO)</comment>
+ <comment xml:lang="eu">Tar artxiboa (LZO-rekin konprimitua)</comment>
+ <comment xml:lang="fi">Tar-arkisto (LZO-pakattu)</comment>
+ <comment xml:lang="fo">Tar skjalasavn (LZO-stappað)</comment>
+ <comment xml:lang="fr">archive tar (compression LZO)</comment>
++ <comment xml:lang="fur">archivi Tar (comprimût cun LZO)</comment>
+ <comment xml:lang="ga">cartlann Tar (comhbhrúite le LZO)</comment>
+ <comment xml:lang="gl">arquivo Tar (comprimido con LZO)</comment>
+ <comment xml:lang="he">ארכיון Tar (מכווץ ע״י LZO)</comment>
+ <comment xml:lang="hr">Tar arhiva (LZO sažeta)</comment>
+- <comment xml:lang="hu">Tar archívum (LZO-val tömörítve)</comment>
++ <comment xml:lang="hu">Tar archívum (LZO tömörítésű)</comment>
+ <comment xml:lang="ia">Archivo Tar (comprimite con LZO)</comment>
+ <comment xml:lang="id">Arsip Tar (terkompresi LZO)</comment>
+ <comment xml:lang="it">Archivio tar (compresso con LZO)</comment>
+@@ -21401,10 +22133,10 @@
+ <comment xml:lang="oc">archiu tar (compression LZO)</comment>
+ <comment xml:lang="pl">Archiwum tar (kompresja LZO)</comment>
+ <comment xml:lang="pt">arquivo Tar (compressão LZO)</comment>
+- <comment xml:lang="pt_BR">Pacote Tar (compactado com LZO)</comment>
++ <comment xml:lang="pt-BR">Pacote Tar (compactado com LZO)</comment>
+ <comment xml:lang="ro">Arhivă Tar (comprimată LZO)</comment>
+ <comment xml:lang="ru">Архив TAR (сжатый lzo)</comment>
+- <comment xml:lang="sk">Archív tar (komprimovaný pomocou LZO)</comment>
++ <comment xml:lang="sk">Archív Tar (komprimovaný pomocou LZO)</comment>
+ <comment xml:lang="sl">Datoteka arhiva Tar (stisnjen z LZO)</comment>
+ <comment xml:lang="sq">Arkiv tar (i kompresuar me LZO)</comment>
+ <comment xml:lang="sr">Тар архива (запакована ЛЗО-ом)</comment>
+@@ -21412,8 +22144,8 @@
+ <comment xml:lang="tr">Tar arşivi (LZO ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">архів tar (стиснений LZO)</comment>
+ <comment xml:lang="vi">Kho nén tar (đã nén LZO)</comment>
+- <comment xml:lang="zh_CN">Tar 归档文件(LZO 压缩)</comment>
+- <comment xml:lang="zh_TW">Tar 封存檔 (LZO 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">Tar 归档文件(LZO 压缩)</comment>
++ <comment xml:lang="zh-TW">Tar 封存檔 (LZO 壓縮)</comment>
+ <sub-class-of type="application/x-lzop"/>
+ <generic-icon name="package-x-generic"/>
+ <glob pattern="*.tar.lzo"/>
+@@ -21421,6 +22153,7 @@
+ </mime-type>
+ <mime-type type="application/x-xz">
+ <comment>XZ archive</comment>
++ <comment xml:lang="af">XZ-argief</comment>
+ <comment xml:lang="ar">أرشيف XZ</comment>
+ <comment xml:lang="bg">Архив — XZ</comment>
+ <comment xml:lang="ca">arxiu XZ</comment>
+@@ -21428,13 +22161,14 @@
+ <comment xml:lang="da">XZ-arkiv</comment>
+ <comment xml:lang="de">XZ-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο XZ</comment>
+- <comment xml:lang="en_GB">XZ archive</comment>
++ <comment xml:lang="en-GB">XZ archive</comment>
+ <comment xml:lang="eo">XZ-arkivo</comment>
+ <comment xml:lang="es">archivador XZ</comment>
+ <comment xml:lang="eu">XZ artxiboa</comment>
+ <comment xml:lang="fi">XZ-arkisto</comment>
+ <comment xml:lang="fo">XZ skjalasavn</comment>
+ <comment xml:lang="fr">archive XZ</comment>
++ <comment xml:lang="fur">archivi XZ</comment>
+ <comment xml:lang="ga">cartlann XZ</comment>
+ <comment xml:lang="gl">ficheiro XZ</comment>
+ <comment xml:lang="he">ארכיון XZ</comment>
+@@ -21452,7 +22186,7 @@
+ <comment xml:lang="oc">archiu XZ</comment>
+ <comment xml:lang="pl">Archiwum XZ</comment>
+ <comment xml:lang="pt">arquivo XZ</comment>
+- <comment xml:lang="pt_BR">Pacote XZ</comment>
++ <comment xml:lang="pt-BR">Pacote XZ</comment>
+ <comment xml:lang="ro">Arhivă XZ</comment>
+ <comment xml:lang="ru">Архив XZ</comment>
+ <comment xml:lang="sk">Archív XZ</comment>
+@@ -21461,16 +22195,17 @@
+ <comment xml:lang="sv">XZ-arkiv</comment>
+ <comment xml:lang="tr">XZ arşivi</comment>
+ <comment xml:lang="uk">архів XZ</comment>
+- <comment xml:lang="zh_CN">XZ 归档文件</comment>
+- <comment xml:lang="zh_TW">XZ 封存檔</comment>
++ <comment xml:lang="zh-CN">XZ 归档文件</comment>
++ <comment xml:lang="zh-TW">XZ 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="60">
+- <match value="\xfd\x37\x7a\x58\x5a\x00" type="string" offset="0"/>
++ <match type="string" value="\xfd\x37\x7a\x58\x5a\x00" offset="0"/>
+ </magic>
+ <glob pattern="*.xz"/>
+ </mime-type>
+ <mime-type type="application/x-xz-compressed-tar">
+ <comment>Tar archive (XZ-compressed)</comment>
++ <comment xml:lang="af">Tar-argief (XZ-saamgepers)</comment>
+ <comment xml:lang="ar">أرشيف Tar (مضغوط-XZ)</comment>
+ <comment xml:lang="bg">Архив — tar, компресиран с XZ</comment>
+ <comment xml:lang="ca">arxiu tar (amb compressió XZ)</comment>
+@@ -21478,17 +22213,18 @@
+ <comment xml:lang="da">Tar-arkiv (XZ-komprimeret)</comment>
+ <comment xml:lang="de">Tar-Archiv (XZ-komprimiert)</comment>
+ <comment xml:lang="el">Αρχείο Tar (συμπιεσμένο με XZ)</comment>
+- <comment xml:lang="en_GB">Tar archive (XZ-compressed)</comment>
++ <comment xml:lang="en-GB">Tar archive (XZ-compressed)</comment>
+ <comment xml:lang="es">archivador Tar (comprimido con XZ)</comment>
+ <comment xml:lang="eu">Tar artxiboa (XZ-rekin konprimitua)</comment>
+ <comment xml:lang="fi">Tar-arkisto (XZ-pakattu)</comment>
+ <comment xml:lang="fo">Tar skjalasavn(XZ-stappað)</comment>
+ <comment xml:lang="fr">archive tar (compression XZ)</comment>
++ <comment xml:lang="fur">archivi Tar (comprimût cun XZ)</comment>
+ <comment xml:lang="ga">cartlann Tar (comhbhrúite le XZ)</comment>
+ <comment xml:lang="gl">arquivo Tar (comprimido con XZ)</comment>
+ <comment xml:lang="he">ארכיון Tar (מכווץ ע״י XZ)</comment>
+ <comment xml:lang="hr">Tar arhiva ( XZ sažeta)</comment>
+- <comment xml:lang="hu">Tar archívum (XZ-vel tömörítve)</comment>
++ <comment xml:lang="hu">Tar archívum (XZ tömörítésű)</comment>
+ <comment xml:lang="ia">Archivo Tar (comprimite con XZ)</comment>
+ <comment xml:lang="id">Arsip Tar (terkompresi XZ)</comment>
+ <comment xml:lang="it">Archivio tar (compresso con XZ)</comment>
+@@ -21501,24 +22237,91 @@
+ <comment xml:lang="oc">archiu tar (compression XZ)</comment>
+ <comment xml:lang="pl">Archiwum tar (kompresja XZ)</comment>
+ <comment xml:lang="pt">arquivo Tar (compressão XZ)</comment>
+- <comment xml:lang="pt_BR">Pacote Tar (compactado com XZ)</comment>
++ <comment xml:lang="pt-BR">Pacote Tar (compactado com XZ)</comment>
+ <comment xml:lang="ro">Arhivă Tar (comprimată XZ)</comment>
+ <comment xml:lang="ru">Архив TAR (сжатый xz)</comment>
+- <comment xml:lang="sk">Archív tar (komprimovaný pomocou XZ)</comment>
++ <comment xml:lang="sk">Archív Tar (komprimovaný pomocou XZ)</comment>
+ <comment xml:lang="sl">Datoteka arhiva Tar (stisnjen z XZ)</comment>
+ <comment xml:lang="sr">Тар архива (запакована ИксЗ-ом)</comment>
+ <comment xml:lang="sv">Tar-arkiv (XZ-komprimerat)</comment>
+ <comment xml:lang="tr">Tar arşivi (XZ ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">архів tar (стиснений XZ)</comment>
+- <comment xml:lang="zh_CN">Tar 归档文件(XZ 压缩)</comment>
+- <comment xml:lang="zh_TW">Tar 封存檔 (XZ 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">Tar 归档文件(XZ 压缩)</comment>
++ <comment xml:lang="zh-TW">Tar 封存檔 (XZ 壓縮)</comment>
+ <sub-class-of type="application/x-xz"/>
+ <generic-icon name="package-x-generic"/>
+ <glob pattern="*.tar.xz"/>
+ <glob pattern="*.txz"/>
+ </mime-type>
++ <mime-type type="application/zstd">
++ <comment>Zstandard archive</comment>
++ <comment xml:lang="bg">Архив — Zstandard</comment>
++ <comment xml:lang="ca">arxiu Zstandard</comment>
++ <comment xml:lang="cs">archiv Zstandard</comment>
++ <comment xml:lang="da">Zstandard-arkiv</comment>
++ <comment xml:lang="de">Zstandard-Archiv</comment>
++ <comment xml:lang="en-GB">Zstandard archive</comment>
++ <comment xml:lang="es">archivador Zstandard</comment>
++ <comment xml:lang="eu">Zstandard archive</comment>
++ <comment xml:lang="fi">Zstandard-arkisto</comment>
++ <comment xml:lang="fr">archive Zstandard</comment>
++ <comment xml:lang="fur">archivi Zstandard</comment>
++ <comment xml:lang="hr">Zstandard arhiva</comment>
++ <comment xml:lang="hu">Zstandard archívum</comment>
++ <comment xml:lang="id">Arsip Zstandard</comment>
++ <comment xml:lang="it">Archivio Zstandard</comment>
++ <comment xml:lang="kk">Zstandard архиві</comment>
++ <comment xml:lang="ko">Zstandard 압축 파일</comment>
++ <comment xml:lang="pl">Archiwum Zstandard</comment>
++ <comment xml:lang="pt-BR">Pacote Zstandard</comment>
++ <comment xml:lang="ru">Архив Zstandard</comment>
++ <comment xml:lang="sk">Archív Zstandard</comment>
++ <comment xml:lang="sv">Zstandard-arkiv</comment>
++ <comment xml:lang="tr">Zstandard arşivi</comment>
++ <comment xml:lang="uk">архів Zstandard</comment>
++ <comment xml:lang="zh-CN">Zstandard 归档文件</comment>
++ <comment xml:lang="zh-TW">Zstandard 封存檔</comment>
++ <generic-icon name="package-x-generic"/>
++ <magic priority="60">
++ <match type="little32" value="0xFD2FB528" offset="0"/>
++ </magic>
++ <glob pattern="*.zst"/>
++ </mime-type>
++ <mime-type type="application/x-zstd-compressed-tar">
++ <comment>Tar archive (Zstandard-compressed)</comment>
++ <comment xml:lang="bg">Архив — tar, компресиран със Zstandard</comment>
++ <comment xml:lang="ca">arxiu tar (amb compressió Zstandard)</comment>
++ <comment xml:lang="cs">archiv Tar (komprimovaný pomocí Zstandard)</comment>
++ <comment xml:lang="da">Tar-arkiv (Zstandard-komprimeret)</comment>
++ <comment xml:lang="de">Tar-Archiv (Zstandard-komprimiert)</comment>
++ <comment xml:lang="en-GB">Tar archive (Zstandard-compressed)</comment>
++ <comment xml:lang="es">archivador Tar (comprimido con Zstandard)</comment>
++ <comment xml:lang="eu">Tar artxiboa (Zstandard-rekin konprimitua)</comment>
++ <comment xml:lang="fi">Tar-arkisto (Zstandard-pakattu)</comment>
++ <comment xml:lang="fr">archive tar (compression Zstandard)</comment>
++ <comment xml:lang="fur">archivi Tar (comprimût cun Zstandard)</comment>
++ <comment xml:lang="hr">Tar arhiva (Zstandard-sažeta)</comment>
++ <comment xml:lang="hu">Tar archívum (Zstandard tömörítésű)</comment>
++ <comment xml:lang="id">Arsip Tar (terkompresi Zstandard)</comment>
++ <comment xml:lang="it">Archivio tar (compresso con Zstandard)</comment>
++ <comment xml:lang="kk">Tar архиві (Zstandard-пен сығылған)</comment>
++ <comment xml:lang="ko">TAR 묶음 파일(Zstandard 압축)</comment>
++ <comment xml:lang="pl">Archiwum tar (kompresja Zstandard)</comment>
++ <comment xml:lang="pt-BR">Pacote Tar (compactado com Zstandard)</comment>
++ <comment xml:lang="ru">Архив TAR (сжатый zstandard)</comment>
++ <comment xml:lang="sv">Tar-arkiv (Zstandard-komprimerat)</comment>
++ <comment xml:lang="tr">Tar arşivi (Zstandard ile sıkıştırılmış)</comment>
++ <comment xml:lang="uk">архів tar archive (стиснений Zstandard)</comment>
++ <comment xml:lang="zh-CN">Tar 归档文件(Zstandard 压缩)</comment>
++ <comment xml:lang="zh-TW">Tar 封存檔 (Zstandard 壓縮)</comment>
++ <generic-icon name="package-x-generic"/>
++ <sub-class-of type="application/zstd"/>
++ <glob pattern="*.tar.zst"/>
++ <glob pattern="*.tzst"/>
++ </mime-type>
+ <mime-type type="application/x-xzpdf">
+ <comment>PDF document (XZ-compressed)</comment>
++ <comment xml:lang="af">PDF-dokument (XZ-saamgepers)</comment>
+ <comment xml:lang="ast">Documentu PDF (comprimíu en XZ)</comment>
+ <comment xml:lang="bg">Документ — PDF, компресиран с XZ</comment>
+ <comment xml:lang="ca">document PDF (amb compressió XZ)</comment>
+@@ -21526,16 +22329,17 @@
+ <comment xml:lang="da">PDF-dokument (XZ-komprimeret)</comment>
+ <comment xml:lang="de">PDF-Dokument (XZ-komprimiert)</comment>
+ <comment xml:lang="el">Έγγραφο PDF (συμπιεσμένο με XZ)</comment>
+- <comment xml:lang="en_GB">PDF document (XZ-compressed)</comment>
++ <comment xml:lang="en-GB">PDF document (XZ-compressed)</comment>
+ <comment xml:lang="es">documento PDF (comprimido con XZ)</comment>
+ <comment xml:lang="eu">PDF dokumentua (XZ-rekin konprimitua)</comment>
+ <comment xml:lang="fi">PDF-asiakirja (XZ-pakattu)</comment>
+ <comment xml:lang="fr">document PDF (compressé XZ)</comment>
++ <comment xml:lang="fur">document PDF (comprimût cun XZ)</comment>
+ <comment xml:lang="ga">cáipéis PDF (comhbhrúite le XZ)</comment>
+ <comment xml:lang="gl">documento PDF (comprimido en XZ)</comment>
+ <comment xml:lang="he">מסמך PDF (מכווץ ע״י XZ)</comment>
+ <comment xml:lang="hr">PDF dokument ( XZ sažet)</comment>
+- <comment xml:lang="hu">PDF dokumentum (XZ-vel tömörített)</comment>
++ <comment xml:lang="hu">PDF dokumentum (XZ tömörítésű)</comment>
+ <comment xml:lang="ia">Documento PDF (comprimite con XZ)</comment>
+ <comment xml:lang="id">Dokumen PDF (terkompresi XZ)</comment>
+ <comment xml:lang="it">Documento PDF (compresso con XZ)</comment>
+@@ -21548,7 +22352,7 @@
+ <comment xml:lang="oc">document PDF (compressat XZ)</comment>
+ <comment xml:lang="pl">Dokument PDF (kompresja XZ)</comment>
+ <comment xml:lang="pt">documento PDF (compressão XZ)</comment>
+- <comment xml:lang="pt_BR">Documento PDF (compactado com XZ)</comment>
++ <comment xml:lang="pt-BR">Documento PDF (compactado com XZ)</comment>
+ <comment xml:lang="ru">Документ PDF (сжатый xz)</comment>
+ <comment xml:lang="sk">Dokument PDF (komprimovaný pomocou XZ)</comment>
+ <comment xml:lang="sl">Dokument PDF (XZ-stisnjen)</comment>
+@@ -21556,29 +22360,31 @@
+ <comment xml:lang="sv">PDF-dokument (XZ-komprimerat)</comment>
+ <comment xml:lang="tr">PDF belgesi (XZ ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">документ PDF (стиснений xz)</comment>
+- <comment xml:lang="zh_CN">PDF 文档(XZ)</comment>
+- <comment xml:lang="zh_TW">PDF 文件 (XZ 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">PDF 文档(XZ)</comment>
++ <comment xml:lang="zh-TW">PDF 文件 (XZ 壓縮)</comment>
+ <sub-class-of type="application/x-xz"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.pdf.xz"/>
+ </mime-type>
+ <mime-type type="application/x-ustar">
+ <comment>Ustar archive</comment>
++ <comment xml:lang="af">Ustar-argief</comment>
+ <comment xml:lang="ar">أرشيف Ustar</comment>
+- <comment xml:lang="be@latin">Archiŭ ustar</comment>
++ <comment xml:lang="be-Latn">Archiŭ ustar</comment>
+ <comment xml:lang="bg">Архив — ustar</comment>
+ <comment xml:lang="ca">arxiu ustar</comment>
+ <comment xml:lang="cs">archiv Ustar</comment>
+- <comment xml:lang="da">Ustararkiv</comment>
++ <comment xml:lang="da">Ustar-arkiv</comment>
+ <comment xml:lang="de">Ustar-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο Ustar</comment>
+- <comment xml:lang="en_GB">Ustar archive</comment>
++ <comment xml:lang="en-GB">Ustar archive</comment>
+ <comment xml:lang="eo">Ustar-arkivo</comment>
+ <comment xml:lang="es">archivador de Ustar</comment>
+ <comment xml:lang="eu">Ustar artxiboa</comment>
+ <comment xml:lang="fi">Ustar-arkisto</comment>
+ <comment xml:lang="fo">Ustar skjalasavn</comment>
+ <comment xml:lang="fr">archive Ustar</comment>
++ <comment xml:lang="fur">archivi Ustar</comment>
+ <comment xml:lang="ga">cartlann Ustar</comment>
+ <comment xml:lang="gl">arquivo Ustar</comment>
+ <comment xml:lang="he">ארכיון Ustar</comment>
+@@ -21598,10 +22404,10 @@
+ <comment xml:lang="oc">archiu Ustar</comment>
+ <comment xml:lang="pl">Archiwum ustar</comment>
+ <comment xml:lang="pt">arquivo Ustar</comment>
+- <comment xml:lang="pt_BR">Pacote Ustar</comment>
++ <comment xml:lang="pt-BR">Pacote Ustar</comment>
+ <comment xml:lang="ro">Arhivă Ustar</comment>
+ <comment xml:lang="ru">Архив Ustar</comment>
+- <comment xml:lang="sk">Archív ustar</comment>
++ <comment xml:lang="sk">Archív Ustar</comment>
+ <comment xml:lang="sl">Datoteka arhiva Ustar</comment>
+ <comment xml:lang="sq">Arkiv Ustar</comment>
+ <comment xml:lang="sr">Устар архива</comment>
+@@ -21609,16 +22415,17 @@
+ <comment xml:lang="tr">Ustar arşivi</comment>
+ <comment xml:lang="uk">архів ustar</comment>
+ <comment xml:lang="vi">Kho nén ustar</comment>
+- <comment xml:lang="zh_CN">Ustar 归档文件</comment>
+- <comment xml:lang="zh_TW">Ustar 封存檔</comment>
++ <comment xml:lang="zh-CN">Ustar 归档文件</comment>
++ <comment xml:lang="zh-TW">Ustar 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <glob pattern="*.ustar"/>
+ </mime-type>
+ <mime-type type="application/x-wais-source">
+ <comment>WAIS source code</comment>
++ <comment xml:lang="af">WAIS-bronkode</comment>
+ <comment xml:lang="ar">شفرة مصدر WAIS</comment>
+ <comment xml:lang="az">WAIS mənbə faylı</comment>
+- <comment xml:lang="be@latin">Kryničny kod WAIS</comment>
++ <comment xml:lang="be-Latn">Kryničny kod WAIS</comment>
+ <comment xml:lang="bg">Изходен код — WAIS</comment>
+ <comment xml:lang="ca">codi font en WAIS</comment>
+ <comment xml:lang="cs">zdrojový kód WAIS</comment>
+@@ -21626,13 +22433,14 @@
+ <comment xml:lang="da">WAIS-kildekode</comment>
+ <comment xml:lang="de">WAIS-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας WAIS</comment>
+- <comment xml:lang="en_GB">WAIS source code</comment>
++ <comment xml:lang="en-GB">WAIS source code</comment>
+ <comment xml:lang="eo">WAIS-fontkodo</comment>
+ <comment xml:lang="es">código fuente en WAIS</comment>
+ <comment xml:lang="eu">WAIS iturburu-kodea</comment>
+ <comment xml:lang="fi">WAIS-lähdekoodi</comment>
+ <comment xml:lang="fo">WAIS keldukota</comment>
+ <comment xml:lang="fr">code source WAIS</comment>
++ <comment xml:lang="fur">codiç sorzint WAIS</comment>
+ <comment xml:lang="ga">cód foinseach WAIS</comment>
+ <comment xml:lang="gl">código fonte WAIS</comment>
+ <comment xml:lang="he">קוד מקור של WAIS</comment>
+@@ -21651,9 +22459,9 @@
+ <comment xml:lang="nl">WAIS-broncode</comment>
+ <comment xml:lang="nn">WAIS-kjeldekode</comment>
+ <comment xml:lang="oc">còde font WAIS</comment>
+- <comment xml:lang="pl">Plik źródłowy WAIS</comment>
++ <comment xml:lang="pl">Kod źródłowy WAIS</comment>
+ <comment xml:lang="pt">código origem WAIS</comment>
+- <comment xml:lang="pt_BR">Código-fonte WAIS</comment>
++ <comment xml:lang="pt-BR">Código-fonte WAIS</comment>
+ <comment xml:lang="ro">Cod sursă WAIS</comment>
+ <comment xml:lang="ru">Исходный код WAIS</comment>
+ <comment xml:lang="sk">Zdrojový kód WAIS</comment>
+@@ -21664,29 +22472,31 @@
+ <comment xml:lang="tr">WAIS kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою WAIS</comment>
+ <comment xml:lang="vi">Mã nguồn WAIS</comment>
+- <comment xml:lang="zh_CN">WAIS 源代码</comment>
+- <comment xml:lang="zh_TW">WAIS 源碼</comment>
++ <comment xml:lang="zh-CN">WAIS 源代码</comment>
++ <comment xml:lang="zh-TW">WAIS 源碼</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-generic"/>
+ <glob pattern="*.src"/>
+ </mime-type>
+ <mime-type type="application/x-wpg">
+ <comment>WordPerfect/Drawperfect image</comment>
++ <comment xml:lang="af">WordPerfect/Drawperfect-beeld</comment>
+ <comment xml:lang="ar">صورة WordPerfect/Drawperfect</comment>
+- <comment xml:lang="be@latin">Vyjava WordPerfect/Drawperfect</comment>
++ <comment xml:lang="be-Latn">Vyjava WordPerfect/Drawperfect</comment>
+ <comment xml:lang="bg">Изображение — WordPerfect/Drawperfect</comment>
+ <comment xml:lang="ca">imatge de WordPerfect/Drawperfect</comment>
+ <comment xml:lang="cs">obrázek WordPerfect/Drawperfect</comment>
+ <comment xml:lang="da">WordPerfect/Drawperfect-billede</comment>
+ <comment xml:lang="de">WordPerfect/DrawPerfect-Bild</comment>
+ <comment xml:lang="el">Εικόνα WordPerfect/Drawperfect</comment>
+- <comment xml:lang="en_GB">WordPerfect/Drawperfect image</comment>
++ <comment xml:lang="en-GB">WordPerfect/Drawperfect image</comment>
+ <comment xml:lang="eo">WordPerfect/Drawperfect-bildo</comment>
+ <comment xml:lang="es">imagen de WordPerfect/Drawperfect</comment>
+ <comment xml:lang="eu">WordPerfect/Drawperfect irudia</comment>
+ <comment xml:lang="fi">WordPerfect/Drawperfect-kuva</comment>
+ <comment xml:lang="fo">WordPerfect/Drawperfect mynd</comment>
+ <comment xml:lang="fr">image WordPerfect/DrawPerfect</comment>
++ <comment xml:lang="fur">imagjin WordPerfect/Drawperfect</comment>
+ <comment xml:lang="ga">íomhá WordPerfect/Drawperfect</comment>
+ <comment xml:lang="gl">imaxe de WordPerfect/DrawPerfect</comment>
+ <comment xml:lang="he">תמונה של WordPerfect/Drawperfect</comment>
+@@ -21707,7 +22517,7 @@
+ <comment xml:lang="oc">imatge WordPerfect/DrawPerfect</comment>
+ <comment xml:lang="pl">Obraz WordPerfect/DrawPerfect</comment>
+ <comment xml:lang="pt">imagem do WordPerfect/Drawperfect</comment>
+- <comment xml:lang="pt_BR">Imagem do WordPerfect/Drawperfect</comment>
++ <comment xml:lang="pt-BR">Imagem do WordPerfect/Drawperfect</comment>
+ <comment xml:lang="ro">Imagine WordPerfect/Drawperfect</comment>
+ <comment xml:lang="ru">Изображение WordPerfect/Drawperfect</comment>
+ <comment xml:lang="sk">Obrázok WordPerfect/Drawperfect</comment>
+@@ -21718,18 +22528,25 @@
+ <comment xml:lang="tr">WordPerfect/DrawPerfect görüntüsü</comment>
+ <comment xml:lang="uk">зображення WordPerfect/Drawperfect</comment>
+ <comment xml:lang="vi">Ảnh WordPerfect/Drawperfect</comment>
+- <comment xml:lang="zh_CN">WordPerfect/Drawperfect 图像</comment>
+- <comment xml:lang="zh_TW">WordPerfect/Drawperfect 影像</comment>
++ <comment xml:lang="zh-CN">WordPerfect/Drawperfect 图像</comment>
++ <comment xml:lang="zh-TW">WordPerfect/Drawperfect 影像</comment>
+ <generic-icon name="image-x-generic"/>
+ <glob pattern="*.wpg"/>
+ </mime-type>
+ <mime-type type="application/x-wonderswan-rom">
+ <comment>Bandai WonderSwan ROM</comment>
++ <comment xml:lang="bg">ROM — Bandai WonderSwan</comment>
+ <comment xml:lang="ca">ROM de Bandai WonderSwan</comment>
+ <comment xml:lang="cs">ROM pro Bandai WonderSwan</comment>
++ <comment xml:lang="da">Bandai WonderSwan-ROM</comment>
+ <comment xml:lang="de">Bandai WonderSwan ROM</comment>
+- <comment xml:lang="en_GB">Bandai WonderSwan ROM</comment>
++ <comment xml:lang="en-GB">Bandai WonderSwan ROM</comment>
+ <comment xml:lang="es">ROM de Bandai WonderSwan</comment>
++ <comment xml:lang="eu">Bandai WonderSwan ROM</comment>
++ <comment xml:lang="fi">Bandai WonderSwan ROM</comment>
++ <comment xml:lang="fr">ROM Bandai WonderSwan</comment>
++ <comment xml:lang="fur">ROM Bandai WonderSwan</comment>
++ <comment xml:lang="ga">ROM Bandai WonderSwan</comment>
+ <comment xml:lang="hr">Bandai WonderSwan ROM</comment>
+ <comment xml:lang="hu">Bandai WonderSwan ROM</comment>
+ <comment xml:lang="id">ROM Bandai WonderSwan</comment>
+@@ -21737,23 +22554,31 @@
+ <comment xml:lang="kk">Bandai WonderSwan ROM</comment>
+ <comment xml:lang="ko">반다이 원더스완 롬</comment>
+ <comment xml:lang="pl">Plik ROM konsoli Bandai WonderSwan</comment>
+- <comment xml:lang="pt_BR">ROM de WonderSwan da Bandai</comment>
++ <comment xml:lang="pt-BR">ROM de WonderSwan da Bandai</comment>
+ <comment xml:lang="ru">Bandai WonderSwan ROM</comment>
+ <comment xml:lang="sk">ROM pre Bandai WonderSwan</comment>
+ <comment xml:lang="sv">Bandai WonderSwan-rom</comment>
++ <comment xml:lang="tr">Bandai WonderSwan ROM</comment>
+ <comment xml:lang="uk">ROM Bandai WonderSwan</comment>
+- <comment xml:lang="zh_CN">万代 WonderSwan ROM</comment>
+- <comment xml:lang="zh_TW">Bandai WonderSwan ROM</comment>
++ <comment xml:lang="zh-CN">万代 WonderSwan ROM</comment>
++ <comment xml:lang="zh-TW">萬代 WonderSwan ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.ws"/>
+ </mime-type>
+ <mime-type type="application/x-wonderswan-color-rom">
+ <comment>Bandai WonderSwan Color ROM</comment>
++ <comment xml:lang="bg">ROM — Bandai WonderSwan Color</comment>
+ <comment xml:lang="ca">ROM de Bandai WonderSwan Color</comment>
+ <comment xml:lang="cs">ROM pro Bandai WonderSwan Color</comment>
++ <comment xml:lang="da">Bandai WonderSwan Color-ROM</comment>
+ <comment xml:lang="de">Bandai WonderSwan Color ROM</comment>
+- <comment xml:lang="en_GB">Bandai WonderSwan Color ROM</comment>
++ <comment xml:lang="en-GB">Bandai WonderSwan Color ROM</comment>
+ <comment xml:lang="es">ROM de Bandai WonderSwan Color</comment>
++ <comment xml:lang="eu">Bandai WonderSwan Color ROM</comment>
++ <comment xml:lang="fi">Bandai WonderSwan Color ROM</comment>
++ <comment xml:lang="fr">ROM Bandai WonderSwan Color</comment>
++ <comment xml:lang="fur">ROM Bandai WonderSwan Color</comment>
++ <comment xml:lang="ga">ROM datha Bandai WonderSwan</comment>
+ <comment xml:lang="hr">Bandai WonderSwan Color ROM</comment>
+ <comment xml:lang="hu">Bandai WonderSwan Color ROM</comment>
+ <comment xml:lang="id">ROM Bandai WonderSwan Color</comment>
+@@ -21761,33 +22586,36 @@
+ <comment xml:lang="kk">Bandai WonderSwan Color ROM</comment>
+ <comment xml:lang="ko">반다이 원더스완 컬러 롬</comment>
+ <comment xml:lang="pl">Plik ROM konsoli Bandai WonderSwan Color</comment>
+- <comment xml:lang="pt_BR">ROM de WonderSwan Color da Bandai</comment>
++ <comment xml:lang="pt-BR">ROM de WonderSwan Color da Bandai</comment>
+ <comment xml:lang="ru">Bandai WonderSwan Color ROM</comment>
+ <comment xml:lang="sk">ROM pre Bandai WonderSwan Color</comment>
+ <comment xml:lang="sv">Bandai WonderSwan Color-rom</comment>
++ <comment xml:lang="tr">Bandai WonderSwan Color ROM</comment>
+ <comment xml:lang="uk">ROM Bandai WonderSwan Color</comment>
+- <comment xml:lang="zh_CN">万代 WonderSwan Color ROM</comment>
+- <comment xml:lang="zh_TW">Bandai WonderSwan Color ROM</comment>
++ <comment xml:lang="zh-CN">万代 WonderSwan Color ROM</comment>
++ <comment xml:lang="zh-TW">萬代 WonderSwan Color ROM</comment>
+ <generic-icon name="application-x-executable"/>
+ <glob pattern="*.wsc"/>
+ </mime-type>
+ <mime-type type="application/x-x509-ca-cert">
+ <comment>DER/PEM/Netscape-encoded X.509 certificate</comment>
++ <comment xml:lang="af">DER/PEM/Netscape-geënkodeerde X.509-sertifikaat</comment>
+ <comment xml:lang="ar">شهادة DER/PEM/Netscape-encoded X.509</comment>
+- <comment xml:lang="be@latin">Sertyfikat X.509, zakadavany ŭ DER/PEM/Netscape</comment>
++ <comment xml:lang="be-Latn">Sertyfikat X.509, zakadavany ŭ DER/PEM/Netscape</comment>
+ <comment xml:lang="bg">Сертификат — DER/PEM/Netscape X.509</comment>
+ <comment xml:lang="ca">certificat X.509 codificat com DER/PEM/Netscape</comment>
+ <comment xml:lang="cs">certifikát X.509 kódovaný jako DER/PEM/Netscape</comment>
+- <comment xml:lang="da">DER-/PEM-/Netscapekodet X.509-certifikat</comment>
++ <comment xml:lang="da">DER-/PEM-/Netscape-kodet X.509-certifikat</comment>
+ <comment xml:lang="de">DER/PEM/Netscape-kodiertes X.509-Zertifikat</comment>
+ <comment xml:lang="el">Ψηφιακό πιστοποιητικό X.509 κωδικοποιημένο κατά DER/PEM/Netscape</comment>
+- <comment xml:lang="en_GB">DER/PEM/Netscape-encoded X.509 certificate</comment>
++ <comment xml:lang="en-GB">DER/PEM/Netscape-encoded X.509 certificate</comment>
+ <comment xml:lang="eo">DER/PEM/Netscape-kodigita X.509-atestilo</comment>
+ <comment xml:lang="es">certificado X.509 codificado con DER/PEM/Netscape</comment>
+ <comment xml:lang="eu">X.509rekin kodetutako DER, PEM edo Netscape zertifikatua</comment>
+ <comment xml:lang="fi">DER/PEM/Netscape-koodattu X.509-varmenne</comment>
+ <comment xml:lang="fo">DER/PEM/Netscape-encoded X.509 váttan</comment>
+ <comment xml:lang="fr">certificat X.509 codé DER/PEM/Netscape</comment>
++ <comment xml:lang="fur">certificât X.509 codificât cun DER/PEM/Netscape</comment>
+ <comment xml:lang="ga">teastas X.509 ionchódaithe le DER/PEM/Netscape</comment>
+ <comment xml:lang="gl">certificado X.509 codificado con DER/PEM/Netscape</comment>
+ <comment xml:lang="he">אישור מסוג X.509 של DER/PEM/Netscape-encoded</comment>
+@@ -21809,7 +22637,7 @@
+ <comment xml:lang="oc">certificat X.509 encodat DER/PEM/Netscape</comment>
+ <comment xml:lang="pl">Zakodowany w DER/PEM/Netscape certyfikat X.509</comment>
+ <comment xml:lang="pt">certificado X.509 codificado com DER/PEM/Netscape</comment>
+- <comment xml:lang="pt_BR">Certificado X.509 codificado com DER/PEM/Netscape</comment>
++ <comment xml:lang="pt-BR">Certificado X.509 codificado com DER/PEM/Netscape</comment>
+ <comment xml:lang="ro">Certificat DER/PEM/Netscape-codat X.509</comment>
+ <comment xml:lang="ru">Сертификат X.509 (DER/PEM/Netscape-закодированный)</comment>
+ <comment xml:lang="sk">Certifikát X.509 kódovaný ako DER/PEM/Netscape</comment>
+@@ -21820,8 +22648,8 @@
+ <comment xml:lang="tr">DER/PEM/Netscape-kodlanmış X.509 sertfikası</comment>
+ <comment xml:lang="uk">сертифікат X.509 у форматі DER/PEM/Netscape</comment>
+ <comment xml:lang="vi">Chứng nhận X.509 mã hoá bằng Netscape/PEM/DER</comment>
+- <comment xml:lang="zh_CN">DER/PEM/Netscape-encoded X.509 证书</comment>
+- <comment xml:lang="zh_TW">DER/PEM/Netscape 編碼的 X.509 憑證</comment>
++ <comment xml:lang="zh-CN">DER/PEM/Netscape-encoded X.509 证书</comment>
++ <comment xml:lang="zh-TW">DER/PEM/Netscape 編碼的 X.509 憑證</comment>
+ <generic-icon name="text-x-generic"/>
+ <glob pattern="*.der"/>
+ <glob pattern="*.crt"/>
+@@ -21830,22 +22658,24 @@
+ </mime-type>
+ <mime-type type="application/x-zerosize">
+ <comment>empty document</comment>
++ <comment xml:lang="af">leë dokument</comment>
+ <comment xml:lang="ar">مستند فارغ</comment>
+ <comment xml:lang="ast">documentu baleru</comment>
+- <comment xml:lang="be@latin">pusty dakument</comment>
++ <comment xml:lang="be-Latn">pusty dakument</comment>
+ <comment xml:lang="bg">Празен документ</comment>
+ <comment xml:lang="ca">document buit</comment>
+ <comment xml:lang="cs">prázdný dokument</comment>
+ <comment xml:lang="da">tomt dokument</comment>
+ <comment xml:lang="de">Leeres Dokument</comment>
+ <comment xml:lang="el">Κενό έγγραφο</comment>
+- <comment xml:lang="en_GB">empty document</comment>
++ <comment xml:lang="en-GB">empty document</comment>
+ <comment xml:lang="eo">malplena dokumento</comment>
+ <comment xml:lang="es">documento vacío</comment>
+ <comment xml:lang="eu">dokumentu hutsa</comment>
+ <comment xml:lang="fi">tyhjä asiakirja</comment>
+ <comment xml:lang="fo">tómt skjal</comment>
+ <comment xml:lang="fr">document vide</comment>
++ <comment xml:lang="fur">document vueit</comment>
+ <comment xml:lang="ga">cáipéis fholamh</comment>
+ <comment xml:lang="gl">documeto baleiro</comment>
+ <comment xml:lang="he">מסמך ריק</comment>
+@@ -21866,7 +22696,7 @@
+ <comment xml:lang="oc">document void</comment>
+ <comment xml:lang="pl">Pusty dokument</comment>
+ <comment xml:lang="pt">documento vazio</comment>
+- <comment xml:lang="pt_BR">Documento vazio</comment>
++ <comment xml:lang="pt-BR">Documento vazio</comment>
+ <comment xml:lang="ro">document gol</comment>
+ <comment xml:lang="ru">Пустой документ</comment>
+ <comment xml:lang="sk">Prázdny dokument</comment>
+@@ -21877,28 +22707,30 @@
+ <comment xml:lang="tr">boş belge</comment>
+ <comment xml:lang="uk">порожній документ</comment>
+ <comment xml:lang="vi">tài liệu rỗng</comment>
+- <comment xml:lang="zh_CN">空文档</comment>
+- <comment xml:lang="zh_TW">空白文件</comment>
++ <comment xml:lang="zh-CN">空文档</comment>
++ <comment xml:lang="zh-TW">空白文件</comment>
+ </mime-type>
+ <mime-type type="application/x-zoo">
+ <comment>Zoo archive</comment>
++ <comment xml:lang="af">Zoo-argief</comment>
+ <comment xml:lang="ar">أرشيف Zoo</comment>
+ <comment xml:lang="az">Zoo arxivi</comment>
+- <comment xml:lang="be@latin">Archiŭ zoo</comment>
++ <comment xml:lang="be-Latn">Archiŭ zoo</comment>
+ <comment xml:lang="bg">Архив — zoo</comment>
+ <comment xml:lang="ca">arxiu zoo</comment>
+ <comment xml:lang="cs">archiv Zoo</comment>
+ <comment xml:lang="cy">Archif zoo</comment>
+- <comment xml:lang="da">Zooarkiv</comment>
++ <comment xml:lang="da">Zoo-arkiv</comment>
+ <comment xml:lang="de">Zoo-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο Zoo</comment>
+- <comment xml:lang="en_GB">Zoo archive</comment>
++ <comment xml:lang="en-GB">Zoo archive</comment>
+ <comment xml:lang="eo">Zoo-arkivo</comment>
+ <comment xml:lang="es">archivador Zoo</comment>
+ <comment xml:lang="eu">Zoo artxiboa</comment>
+ <comment xml:lang="fi">Zoo-arkisto</comment>
+ <comment xml:lang="fo">Zoo skjalasavn</comment>
+ <comment xml:lang="fr">archive zoo</comment>
++ <comment xml:lang="fur">archivi Zoo</comment>
+ <comment xml:lang="ga">cartlann Zoo</comment>
+ <comment xml:lang="gl">ficheiro Zoo</comment>
+ <comment xml:lang="he">ארכיון Zoo</comment>
+@@ -21918,10 +22750,10 @@
+ <comment xml:lang="oc">archiu zoo</comment>
+ <comment xml:lang="pl">Archiwum zoo</comment>
+ <comment xml:lang="pt">arquivo Zoo</comment>
+- <comment xml:lang="pt_BR">Pacote Zoo</comment>
++ <comment xml:lang="pt-BR">Pacote Zoo</comment>
+ <comment xml:lang="ro">Arhivă Zoo</comment>
+ <comment xml:lang="ru">Архив ZOO</comment>
+- <comment xml:lang="sk">Archív zoo</comment>
++ <comment xml:lang="sk">Archív Zoo</comment>
+ <comment xml:lang="sl">Datoteka arhiva ZOO</comment>
+ <comment xml:lang="sq">Arkiv zoo</comment>
+ <comment xml:lang="sr">Зoo архива</comment>
+@@ -21929,31 +22761,33 @@
+ <comment xml:lang="tr">Zoo arşivi</comment>
+ <comment xml:lang="uk">архів zoo</comment>
+ <comment xml:lang="vi">Kho nén zoo</comment>
+- <comment xml:lang="zh_CN">Zoo 归档文件</comment>
+- <comment xml:lang="zh_TW">Zoo 封存檔</comment>
++ <comment xml:lang="zh-CN">Zoo 归档文件</comment>
++ <comment xml:lang="zh-TW">Zoo 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="60">
+- <match value="0xfdc4a7dc" type="little32" offset="20"/>
++ <match type="little32" value="0xfdc4a7dc" offset="20"/>
+ </magic>
+ <glob pattern="*.zoo"/>
+ </mime-type>
+ <mime-type type="application/xhtml+xml">
+ <comment>XHTML page</comment>
++ <comment xml:lang="af">XHTML-bladsy</comment>
+ <comment xml:lang="ar">صفحة XHTML</comment>
+- <comment xml:lang="be@latin">Staronka XHTML</comment>
++ <comment xml:lang="be-Latn">Staronka XHTML</comment>
+ <comment xml:lang="bg">Страница — XHTML</comment>
+ <comment xml:lang="ca">pàgina XHTML</comment>
+ <comment xml:lang="cs">stránka XHTML</comment>
+ <comment xml:lang="da">XHTML-side</comment>
+ <comment xml:lang="de">XHTML-Seite</comment>
+ <comment xml:lang="el">Σελίδα XHTML</comment>
+- <comment xml:lang="en_GB">XHTML page</comment>
++ <comment xml:lang="en-GB">XHTML page</comment>
+ <comment xml:lang="eo">XHTML-paĝo</comment>
+ <comment xml:lang="es">página XHTML</comment>
+ <comment xml:lang="eu">XHTML orria</comment>
+ <comment xml:lang="fi">XHTML-sivu</comment>
+ <comment xml:lang="fo">XHTML síða</comment>
+ <comment xml:lang="fr">page XHTML</comment>
++ <comment xml:lang="fur">pagjine XHTML</comment>
+ <comment xml:lang="ga">leathanach XHTML</comment>
+ <comment xml:lang="gl">Páxina XHTML</comment>
+ <comment xml:lang="he">דף XHTML</comment>
+@@ -21974,7 +22808,7 @@
+ <comment xml:lang="oc">pagina XHTML</comment>
+ <comment xml:lang="pl">Strona XHTML</comment>
+ <comment xml:lang="pt">página XHTML</comment>
+- <comment xml:lang="pt_BR">Página XHTML</comment>
++ <comment xml:lang="pt-BR">Página XHTML</comment>
+ <comment xml:lang="ro">Pagină XHTML</comment>
+ <comment xml:lang="ru">Страница XHTML</comment>
+ <comment xml:lang="sk">Stránka XHTML</comment>
+@@ -21985,41 +22819,45 @@
+ <comment xml:lang="tr">XHTML sayfası</comment>
+ <comment xml:lang="uk">сторінка XHTML</comment>
+ <comment xml:lang="vi">Trang XHTML</comment>
+- <comment xml:lang="zh_CN">XHTML 页面</comment>
+- <comment xml:lang="zh_TW">XHTML 網頁</comment>
++ <comment xml:lang="zh-CN">XHTML 页面</comment>
++ <comment xml:lang="zh-TW">XHTML 網頁</comment>
+ <acronym>XHTML</acronym>
+ <expanded-acronym>Extensible HyperText Markup Language</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+ <generic-icon name="text-html"/>
+ <glob pattern="*.xhtml"/>
+ <glob pattern="*.xht"/>
++ <glob pattern="*.html"/>
++ <glob pattern="*.htm"/>
+ <magic priority="60">
+- <match value="//W3C//DTD XHTML " type="string" offset="0:256"/>
+- <match value="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" type="string" offset="0:256"/>
+- <match value="&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml" type="string" offset="0:256"/>
+- <match value="&lt;HTML xmlns=&quot;http://www.w3.org/1999/xhtml" type="string" offset="0:256"/>
++ <match type="string" value="//W3C//DTD XHTML " offset="0:256"/>
++ <match type="string" value="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" offset="0:256"/>
++ <match type="string" value="&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml" offset="0:256"/>
++ <match type="string" value="&lt;HTML xmlns=&quot;http://www.w3.org/1999/xhtml" offset="0:256"/>
+ </magic>
+- <root-XML namespaceURI='http://www.w3.org/1999/xhtml' localName='html'/>
++ <root-XML namespaceURI="http://www.w3.org/1999/xhtml" localName="html"/>
+ </mime-type>
+ <mime-type type="application/zip">
+ <comment>Zip archive</comment>
++ <comment xml:lang="af">Zip-argief</comment>
+ <comment xml:lang="ar">أرشيف Zip</comment>
+ <comment xml:lang="az">Zip arxivi</comment>
+- <comment xml:lang="be@latin">Archiŭ zip</comment>
++ <comment xml:lang="be-Latn">Archiŭ zip</comment>
+ <comment xml:lang="bg">Архив — zip</comment>
+ <comment xml:lang="ca">arxiu zip</comment>
+ <comment xml:lang="cs">archiv ZIP</comment>
+ <comment xml:lang="cy">Archif ZIP</comment>
+- <comment xml:lang="da">Ziparkiv</comment>
++ <comment xml:lang="da">Zip-arkiv</comment>
+ <comment xml:lang="de">Zip-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο Zip</comment>
+- <comment xml:lang="en_GB">Zip archive</comment>
++ <comment xml:lang="en-GB">Zip archive</comment>
+ <comment xml:lang="eo">Zip-arkivo</comment>
+ <comment xml:lang="es">archivador Zip</comment>
+ <comment xml:lang="eu">Zip artxiboa</comment>
+ <comment xml:lang="fi">Zip-arkisto</comment>
+ <comment xml:lang="fo">Zip skjalasavn</comment>
+ <comment xml:lang="fr">archive zip</comment>
++ <comment xml:lang="fur">archivi Zip</comment>
+ <comment xml:lang="ga">cartlann Zip</comment>
+ <comment xml:lang="gl">ficheiro Zip</comment>
+ <comment xml:lang="he">ארכיון Zip</comment>
+@@ -22039,7 +22877,7 @@
+ <comment xml:lang="oc">archiu zip</comment>
+ <comment xml:lang="pl">Archiwum ZIP</comment>
+ <comment xml:lang="pt">arquivo Zip</comment>
+- <comment xml:lang="pt_BR">Pacote Zip</comment>
++ <comment xml:lang="pt-BR">Pacote Zip</comment>
+ <comment xml:lang="ro">Arhivă zip</comment>
+ <comment xml:lang="ru">Архив ZIP</comment>
+ <comment xml:lang="sk">Archív ZIP</comment>
+@@ -22050,76 +22888,71 @@
+ <comment xml:lang="tr">Zip arşivi</comment>
+ <comment xml:lang="uk">архів zip</comment>
+ <comment xml:lang="vi">Kho nén zip</comment>
+- <comment xml:lang="zh_CN">Zip 归档文件</comment>
+- <comment xml:lang="zh_TW">Zip 封存檔</comment>
++ <comment xml:lang="zh-CN">Zip 归档文件</comment>
++ <comment xml:lang="zh-TW">Zip 封存檔</comment>
+ <alias type="application/x-zip-compressed"/>
+ <alias type="application/x-zip"/>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="60">
+- <match value="PK\003\004" type="string" offset="0"/>
++ <match type="string" value="PK\003\004" offset="0"/>
+ </magic>
+ <glob pattern="*.zip"/>
+ </mime-type>
+ <mime-type type="application/x-ms-wim">
+- <comment>WIM disk Image</comment>
++ <comment>WIM disk image</comment>
++ <comment xml:lang="bg">Диск — WIM</comment>
+ <comment xml:lang="ca">imatge de disc WIM</comment>
+- <comment xml:lang="cs">obraz disku WIM</comment>
+ <comment xml:lang="da">WIM-diskaftryk</comment>
+ <comment xml:lang="de">WIM-Datenträgerabbild</comment>
+- <comment xml:lang="el">Εικόνα δίσκου WIM</comment>
+- <comment xml:lang="en_GB">WIM disk Image</comment>
++ <comment xml:lang="en-GB">WIM disk image</comment>
+ <comment xml:lang="es">imagen de disco WIM</comment>
+ <comment xml:lang="eu">WIM disko irudia</comment>
+- <comment xml:lang="fi">WIM-levytiedosto</comment>
++ <comment xml:lang="fi">WIM-levykuva</comment>
+ <comment xml:lang="fr">image disque WIM</comment>
+- <comment xml:lang="ga">íomhá diosca WIM</comment>
+- <comment xml:lang="he">דמות דיסק WIM</comment>
+ <comment xml:lang="hr">WIM slika diska</comment>
+ <comment xml:lang="hu">WIM lemezkép</comment>
+- <comment xml:lang="ia">Imagine de disco WIM</comment>
+ <comment xml:lang="id">Image disk WIM</comment>
+ <comment xml:lang="it">Immagine disco WIM</comment>
+ <comment xml:lang="kk">WIM диск бейнесі</comment>
+ <comment xml:lang="ko">WIM 디스크 이미지</comment>
+- <comment xml:lang="oc">imatge disc WIM</comment>
+ <comment xml:lang="pl">Obraz dysku WIM</comment>
+- <comment xml:lang="pt">imagem de disco WIM</comment>
+- <comment xml:lang="pt_BR">Imagem de disco WIM</comment>
++ <comment xml:lang="pt-BR">Imagem de disco WIM</comment>
+ <comment xml:lang="ru">Образ диска WIM</comment>
+ <comment xml:lang="sk">Obraz disku WIM</comment>
+- <comment xml:lang="sr">слика диска ВИМ-а</comment>
+- <comment xml:lang="sv">WIM-diskavbild</comment>
+- <comment xml:lang="tr">WIM disk kalıbı</comment>
++ <comment xml:lang="sv">WIM-diskavbildning</comment>
++ <comment xml:lang="tr">WIM disk görüntüsü</comment>
+ <comment xml:lang="uk">образ диска WIM</comment>
+- <comment xml:lang="zh_CN">WIM 磁盘映像</comment>
+- <comment xml:lang="zh_TW">WIM 磁碟映像檔</comment>
++ <comment xml:lang="zh-CN">WIM 磁盘映像</comment>
++ <comment xml:lang="zh-TW">WIM 磁碟映像檔</comment>
+ <acronym>WIM</acronym>
+ <expanded-acronym>Windows Imaging Format</expanded-acronym>
+ <magic>
+- <match value="MSWIM\000\000\000" type="string" offset="0"/>
++ <match type="string" value="MSWIM\000\000\000" offset="0"/>
+ </magic>
+ <glob pattern="*.wim"/>
+ <glob pattern="*.swm"/>
+ </mime-type>
+ <mime-type type="audio/ac3">
+ <comment>Dolby Digital audio</comment>
++ <comment xml:lang="af">Dolby Digital-oudio</comment>
+ <comment xml:lang="ar">Dolby Digital سمعي</comment>
+ <comment xml:lang="az">Dolby Digital audio</comment>
+- <comment xml:lang="be@latin">Aŭdyjo Dolby Digital</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo Dolby Digital</comment>
+ <comment xml:lang="bg">Аудио — Dolby Digital</comment>
+- <comment xml:lang="ca">àudio de Dolby Digital</comment>
++ <comment xml:lang="ca">àudio Dolby Digital</comment>
+ <comment xml:lang="cs">zvuk Dolby Digital</comment>
+ <comment xml:lang="cy">Sain Dolby Digital</comment>
+ <comment xml:lang="da">Dolby Ditital-lyd</comment>
+ <comment xml:lang="de">Dolby-Digital-Audio</comment>
+ <comment xml:lang="el">Ψηφιακός Ήχος Dolby</comment>
+- <comment xml:lang="en_GB">Dolby Digital audio</comment>
++ <comment xml:lang="en-GB">Dolby Digital audio</comment>
+ <comment xml:lang="eo">Sondosiero en Dolby Digital</comment>
+- <comment xml:lang="es">sonido Dolby Digital</comment>
++ <comment xml:lang="es">audio Dolby Digital</comment>
+ <comment xml:lang="eu">Dolby audio digitala</comment>
+ <comment xml:lang="fi">Dolby Digital -ääni</comment>
+ <comment xml:lang="fo">Dolby Digital ljóður</comment>
+ <comment xml:lang="fr">audio Dolby Digital</comment>
++ <comment xml:lang="fur">audio Dolby Digital</comment>
+ <comment xml:lang="ga">fuaim Dolby Digital</comment>
+ <comment xml:lang="gl">son Dolby Digital</comment>
+ <comment xml:lang="he">שמע Dolby Digital</comment>
+@@ -22141,7 +22974,7 @@
+ <comment xml:lang="oc">àudio Dolby Digital</comment>
+ <comment xml:lang="pl">Plik dźwiękowy Dolby Digital</comment>
+ <comment xml:lang="pt">áudio Dolby Digital</comment>
+- <comment xml:lang="pt_BR">Áudio Dolby Digital</comment>
++ <comment xml:lang="pt-BR">Áudio Dolby Digital</comment>
+ <comment xml:lang="ro">Audio Dolby Digital</comment>
+ <comment xml:lang="ru">Аудио Dolby Digital</comment>
+ <comment xml:lang="sk">Zvuk Dolby Digital</comment>
+@@ -22152,25 +22985,28 @@
+ <comment xml:lang="tr">Dolby Digital sesi</comment>
+ <comment xml:lang="uk">звук Dolby Digital</comment>
+ <comment xml:lang="vi">Âm thanh Dolby Digital</comment>
+- <comment xml:lang="zh_CN">杜比数字音频</comment>
+- <comment xml:lang="zh_TW">杜比數位音訊</comment>
++ <comment xml:lang="zh-CN">杜比数字音频</comment>
++ <comment xml:lang="zh-TW">杜比數位音訊</comment>
+ <magic priority="50">
+- <match value="0x0b77" type="big16" offset="0"/>
++ <match type="big16" value="0x0b77" offset="0"/>
+ </magic>
+ <glob pattern="*.ac3"/>
+ </mime-type>
+ <mime-type type="audio/vnd.dts">
+ <comment>DTS audio</comment>
++ <comment xml:lang="af">DTS-oudio</comment>
++ <comment xml:lang="bg">Аудио — DTS</comment>
+ <comment xml:lang="ca">àudio DTS</comment>
+ <comment xml:lang="cs">zvuk DTS</comment>
+ <comment xml:lang="da">DTS-lyd</comment>
+ <comment xml:lang="de">DTS-Audio</comment>
+ <comment xml:lang="el">Ήχος DTS</comment>
+- <comment xml:lang="en_GB">DTS audio</comment>
+- <comment xml:lang="es">sonido DTS</comment>
++ <comment xml:lang="en-GB">DTS audio</comment>
++ <comment xml:lang="es">audio DTS</comment>
+ <comment xml:lang="eu">DTS audioa</comment>
+ <comment xml:lang="fi">DTS-ääni</comment>
+ <comment xml:lang="fr">audio DTS</comment>
++ <comment xml:lang="fur">audio DTS</comment>
+ <comment xml:lang="ga">fuaim DTS</comment>
+ <comment xml:lang="gl">Son DTS</comment>
+ <comment xml:lang="he">שמע DTS</comment>
+@@ -22186,7 +23022,7 @@
+ <comment xml:lang="oc">àudio DTS</comment>
+ <comment xml:lang="pl">Plik dźwiękowy DTS</comment>
+ <comment xml:lang="pt">aúdio DTS</comment>
+- <comment xml:lang="pt_BR">Áudio DTS</comment>
++ <comment xml:lang="pt-BR">Áudio DTS</comment>
+ <comment xml:lang="ru">Аудио DTS</comment>
+ <comment xml:lang="sk">Zvuk DTS</comment>
+ <comment xml:lang="sl">Zvok DTS</comment>
+@@ -22194,29 +23030,32 @@
+ <comment xml:lang="sv">DTS-ljud</comment>
+ <comment xml:lang="tr">DTS sesi</comment>
+ <comment xml:lang="uk">звукові дані DTS</comment>
+- <comment xml:lang="zh_CN">DTS 音频</comment>
+- <comment xml:lang="zh_TW">DTS 音訊</comment>
++ <comment xml:lang="zh-CN">DTS 音频</comment>
++ <comment xml:lang="zh-TW">DTS 音訊</comment>
+ <magic priority="50">
+- <match value="0x7FFE8001" type="big32" offset="0"/>
+- <match value="0xFE7F0180" type="little32" offset="0"/>
+- <match value="0x1FFFE800" type="big32" offset="0"/>
+- <match value="0xFF1F00E8" type="little32" offset="0"/>
++ <match type="big32" value="0x7FFE8001" offset="0"/> <!-- 16bits core be -->
++ <match type="little32" value="0xFE7F0180" offset="0"/> <!-- 16bits core le -->
++ <match type="big32" value="0x1FFFE800" offset="0"/> <!-- 14bits core be -->
++ <match type="little32" value="0xFF1F00E8" offset="0"/> <!-- 14bits core le -->
+ </magic>
+ <alias type="audio/x-dts"/>
+ <glob pattern="*.dts"/>
+ </mime-type>
+ <mime-type type="audio/vnd.dts.hd">
+ <comment>DTSHD audio</comment>
++ <comment xml:lang="af">DTSHD-oudio</comment>
++ <comment xml:lang="bg">Аудио — DTSHD</comment>
+ <comment xml:lang="ca">àudio DTSHD</comment>
+ <comment xml:lang="cs">zvuk DTSHD</comment>
+ <comment xml:lang="da">DTSDH-lyd</comment>
+ <comment xml:lang="de">DTSHD-Audio</comment>
+ <comment xml:lang="el">Ήχος DTSHD</comment>
+- <comment xml:lang="en_GB">DTSHD audio</comment>
+- <comment xml:lang="es">sonido DTSHD</comment>
++ <comment xml:lang="en-GB">DTSHD audio</comment>
++ <comment xml:lang="es">audio DTSHD</comment>
+ <comment xml:lang="eu">DTSHD audioa</comment>
+ <comment xml:lang="fi">DTS-HD-ääni</comment>
+ <comment xml:lang="fr">audio DTSHD</comment>
++ <comment xml:lang="fur">audio DTSHD</comment>
+ <comment xml:lang="ga">fuaim DTSHD</comment>
+ <comment xml:lang="gl">Son DTSHD</comment>
+ <comment xml:lang="he">שמע DTSHD</comment>
+@@ -22232,7 +23071,7 @@
+ <comment xml:lang="oc">àudio DTSHD</comment>
+ <comment xml:lang="pl">Plik dźwiękowy DTSHD</comment>
+ <comment xml:lang="pt">áudio DTSHD</comment>
+- <comment xml:lang="pt_BR">Áudio DTSHD</comment>
++ <comment xml:lang="pt-BR">Áudio DTSHD</comment>
+ <comment xml:lang="ru">Аудио DTSHD</comment>
+ <comment xml:lang="sk">Zvuk DTSHD</comment>
+ <comment xml:lang="sl">Zvok DTSHD</comment>
+@@ -22240,32 +23079,34 @@
+ <comment xml:lang="sv">DTSHD-ljud</comment>
+ <comment xml:lang="tr">DTSHD sesi</comment>
+ <comment xml:lang="uk">звукові дані DTSHD</comment>
+- <comment xml:lang="zh_CN">DTSHD 音频</comment>
+- <comment xml:lang="zh_TW">DTSHD 音訊</comment>
++ <comment xml:lang="zh-CN">DTSHD 音频</comment>
++ <comment xml:lang="zh-TW">DTSHD 音訊</comment>
+ <sub-class-of type="audio/vnd.dts"/>
+ <magic priority="60">
+- <match value="0x64582025" type="big32" offset="0:18725"/>
++ <match type="big32" value="0x64582025" offset="0:18725"/> <!-- 16bits HD be -->
+ </magic>
+ <alias type="audio/x-dtshd"/>
+ <glob pattern="*.dtshd"/>
+ </mime-type>
+ <mime-type type="audio/AMR">
+ <comment>AMR audio</comment>
++ <comment xml:lang="af">AMR-oudio</comment>
+ <comment xml:lang="ar">AMR سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo AMR</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo AMR</comment>
+ <comment xml:lang="bg">Аудио — AMR</comment>
+ <comment xml:lang="ca">àudio AMR</comment>
+ <comment xml:lang="cs">zvuk AMR</comment>
+ <comment xml:lang="da">AMR-lyd</comment>
+ <comment xml:lang="de">AMR-Audio</comment>
+ <comment xml:lang="el">Ήχος AMR</comment>
+- <comment xml:lang="en_GB">AMR audio</comment>
++ <comment xml:lang="en-GB">AMR audio</comment>
+ <comment xml:lang="eo">AMR-sondosiero</comment>
+- <comment xml:lang="es">sonido AMR</comment>
++ <comment xml:lang="es">audio AMR</comment>
+ <comment xml:lang="eu">AMR audioa</comment>
+ <comment xml:lang="fi">AMR-ääni</comment>
+ <comment xml:lang="fo">AMR ljóður</comment>
+ <comment xml:lang="fr">audio AMR</comment>
++ <comment xml:lang="fur">audio AMR</comment>
+ <comment xml:lang="ga">fuaim AMR</comment>
+ <comment xml:lang="gl">son AMR</comment>
+ <comment xml:lang="he">שמע AMR</comment>
+@@ -22286,7 +23127,7 @@
+ <comment xml:lang="oc">àudio AMR</comment>
+ <comment xml:lang="pl">Plik dźwiękowy AMR</comment>
+ <comment xml:lang="pt">áudio AMR</comment>
+- <comment xml:lang="pt_BR">Áudio AMR</comment>
++ <comment xml:lang="pt-BR">Áudio AMR</comment>
+ <comment xml:lang="ro">Audio AMR</comment>
+ <comment xml:lang="ru">Аудио AMR</comment>
+ <comment xml:lang="sk">Zvuk AMR</comment>
+@@ -22297,34 +23138,36 @@
+ <comment xml:lang="tr">AMR sesi</comment>
+ <comment xml:lang="uk">звук AMR</comment>
+ <comment xml:lang="vi">Âm thanh AMR</comment>
+- <comment xml:lang="zh_CN">AMR 音频</comment>
+- <comment xml:lang="zh_TW">AMR 音訊</comment>
++ <comment xml:lang="zh-CN">AMR 音频</comment>
++ <comment xml:lang="zh-TW">AMR 音訊</comment>
+ <acronym>AMR</acronym>
+ <expanded-acronym>Adaptive Multi-Rate</expanded-acronym>
+ <magic priority="50">
+- <match value="#!AMR\n" type="string" offset="0"/>
+- <match value="#!AMR_MC1.0\n" type="string" offset="0"/>
++ <match type="string" value="#!AMR\n" offset="0"/>
++ <match type="string" value="#!AMR_MC1.0\n" offset="0"/>
+ </magic>
+ <glob pattern="*.amr"/>
+ <alias type="audio/amr-encrypted"/>
+ </mime-type>
+ <mime-type type="audio/AMR-WB">
+ <comment>AMR-WB audio</comment>
++ <comment xml:lang="af">AMR-WB-oudio</comment>
+ <comment xml:lang="ar">AMR-WB سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo AMR-WB</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo AMR-WB</comment>
+ <comment xml:lang="bg">Аудио — AMR-WB</comment>
+ <comment xml:lang="ca">àudio AMR-WB</comment>
+ <comment xml:lang="cs">zvuk AMR-WB</comment>
+ <comment xml:lang="da">AMR-WB-lyd</comment>
+ <comment xml:lang="de">AMR-WB-Audio</comment>
+ <comment xml:lang="el">Ήχος AMR-WB</comment>
+- <comment xml:lang="en_GB">AMR-WB audio</comment>
++ <comment xml:lang="en-GB">AMR-WB audio</comment>
+ <comment xml:lang="eo">AMR-WB-sondosiero</comment>
+- <comment xml:lang="es">sonido AMR-WB</comment>
++ <comment xml:lang="es">audio AMR-WB</comment>
+ <comment xml:lang="eu">AMR-WB audioa</comment>
+ <comment xml:lang="fi">AMR-WB-ääni</comment>
+ <comment xml:lang="fo">AMR-WB ljóður</comment>
+ <comment xml:lang="fr">audio AMR-WB</comment>
++ <comment xml:lang="fur">audio AMR-WB</comment>
+ <comment xml:lang="ga">fuaim AMR-WB</comment>
+ <comment xml:lang="gl">son AMR-WB</comment>
+ <comment xml:lang="he">שמע AMR-WN</comment>
+@@ -22345,7 +23188,7 @@
+ <comment xml:lang="oc">àudio AMR-WB</comment>
+ <comment xml:lang="pl">Plik dźwiękowy AMR-WB</comment>
+ <comment xml:lang="pt">áudio AMR-WB</comment>
+- <comment xml:lang="pt_BR">Áudio AMR-WB</comment>
++ <comment xml:lang="pt-BR">Áudio AMR-WB</comment>
+ <comment xml:lang="ro">Audio AMR-WB</comment>
+ <comment xml:lang="ru">Аудио AMR-WB</comment>
+ <comment xml:lang="sk">Zvuk AMR-WB</comment>
+@@ -22356,22 +23199,23 @@
+ <comment xml:lang="tr">AMR-WB sesi</comment>
+ <comment xml:lang="uk">звук AMR-WB</comment>
+ <comment xml:lang="vi">Âm thanh AMR-WB</comment>
+- <comment xml:lang="zh_CN">AMR-WB 音频</comment>
+- <comment xml:lang="zh_TW">AMR-WB 音訊</comment>
++ <comment xml:lang="zh-CN">AMR-WB 音频</comment>
++ <comment xml:lang="zh-TW">AMR-WB 音訊</comment>
+ <acronym>AMR-WB</acronym>
+ <expanded-acronym>Adaptive Multi-Rate Wideband</expanded-acronym>
+ <magic priority="50">
+- <match value="#!AMR-WB\n" type="string" offset="0"/>
+- <match value="#!AMR-WB_MC1.0\n" type="string" offset="0"/>
++ <match type="string" value="#!AMR-WB\n" offset="0"/>
++ <match type="string" value="#!AMR-WB_MC1.0\n" offset="0"/>
+ </magic>
+ <glob pattern="*.awb"/>
+ <alias type="audio/amr-wb-encrypted"/>
+ </mime-type>
+ <mime-type type="audio/basic">
+ <comment>ULAW (Sun) audio</comment>
++ <comment xml:lang="af">ULAW- (Sun) oudio</comment>
+ <comment xml:lang="ar">ULAW (صن) سمعي</comment>
+ <comment xml:lang="az">ULAW (Sun) audio faylı</comment>
+- <comment xml:lang="be@latin">Aŭdyjo ULAW (Sun)</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo ULAW (Sun)</comment>
+ <comment xml:lang="bg">Аудио — ULAW, Sun</comment>
+ <comment xml:lang="ca">àudio ULAW (Sun)</comment>
+ <comment xml:lang="cs">zvuk ULAW (Sun)</comment>
+@@ -22379,13 +23223,14 @@
+ <comment xml:lang="da">ULAW-lyd (Sun)</comment>
+ <comment xml:lang="de">ULAW-Audio (Sun)</comment>
+ <comment xml:lang="el">Ήχος ULAW (Sun)</comment>
+- <comment xml:lang="en_GB">ULAW (Sun) audio</comment>
++ <comment xml:lang="en-GB">ULAW (Sun) audio</comment>
+ <comment xml:lang="eo">ULAW-sondosiero (Sun)</comment>
+- <comment xml:lang="es">sonido ULAW (Sun)</comment>
++ <comment xml:lang="es">audio ULAW (Sun)</comment>
+ <comment xml:lang="eu">ULAW (sun) audioa</comment>
+ <comment xml:lang="fi">ULAW (Sun) -ääni</comment>
+ <comment xml:lang="fo">ULAW (Sun) ljóður</comment>
+ <comment xml:lang="fr">audio ULAW (Sun)</comment>
++ <comment xml:lang="fur">audio ULAW (Sun)</comment>
+ <comment xml:lang="ga">fuaim ULAW (Sun)</comment>
+ <comment xml:lang="gl">son ULAW (Sun)</comment>
+ <comment xml:lang="he">שמע ULAW (של Sun)</comment>
+@@ -22406,7 +23251,7 @@
+ <comment xml:lang="oc">àudio ULAW (Sun)</comment>
+ <comment xml:lang="pl">Plik dźwiękowy ULAW (Sun)</comment>
+ <comment xml:lang="pt">áudio ULAW (Sun)</comment>
+- <comment xml:lang="pt_BR">Áudio ULAW (Sun)</comment>
++ <comment xml:lang="pt-BR">Áudio ULAW (Sun)</comment>
+ <comment xml:lang="ro">Fișier audio ULAW (Sun)</comment>
+ <comment xml:lang="ru">Аудио ULAW (Sun)</comment>
+ <comment xml:lang="sk">Zvuk ULAW (Sun)</comment>
+@@ -22417,31 +23262,33 @@
+ <comment xml:lang="tr">ULAW (Sun) sesi</comment>
+ <comment xml:lang="uk">звук ULAW (Sun)</comment>
+ <comment xml:lang="vi">Âm thanh ULAW (Sun)</comment>
+- <comment xml:lang="zh_CN">ULAW (Sun) 音频</comment>
+- <comment xml:lang="zh_TW">ULAW (Sun) 音訊</comment>
++ <comment xml:lang="zh-CN">ULAW (Sun) 音频</comment>
++ <comment xml:lang="zh-TW">ULAW (Sun) 音訊</comment>
+ <magic priority="40">
+- <match value=".snd" type="string" offset="0"/>
++ <match type="string" value=".snd" offset="0"/>
+ </magic>
+ <glob pattern="*.au"/>
+ <glob pattern="*.snd"/>
+ </mime-type>
+ <mime-type type="audio/prs.sid">
+ <comment>Commodore 64 audio</comment>
++ <comment xml:lang="af">Commodore 64-oudio</comment>
+ <comment xml:lang="ar">Commodore 64 سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo Commodore 64</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo Commodore 64</comment>
+ <comment xml:lang="bg">Аудио — Commodore 64</comment>
+ <comment xml:lang="ca">àudio de Commodore 64</comment>
+ <comment xml:lang="cs">zvuk Commodore 64</comment>
+ <comment xml:lang="da">Commodore 64-lyd</comment>
+ <comment xml:lang="de">Commodore-64-Audio</comment>
+ <comment xml:lang="el">Ήχος Commodore 64</comment>
+- <comment xml:lang="en_GB">Commodore 64 audio</comment>
++ <comment xml:lang="en-GB">Commodore 64 audio</comment>
+ <comment xml:lang="eo">Sondosiero de Commodore 64</comment>
+- <comment xml:lang="es">sonido de Commodore 64</comment>
++ <comment xml:lang="es">audio de Commodore 64</comment>
+ <comment xml:lang="eu">Commodore 64 Audioa</comment>
+ <comment xml:lang="fi">Commodore 64 -ääni</comment>
+ <comment xml:lang="fo">Commodore 64 ljóð</comment>
+ <comment xml:lang="fr">audio Commodore 64</comment>
++ <comment xml:lang="fur">audio Commodore 64</comment>
+ <comment xml:lang="ga">fuaim Commodore 64</comment>
+ <comment xml:lang="gl">son de Commodore 64</comment>
+ <comment xml:lang="he">שמע של Commodore 64</comment>
+@@ -22463,7 +23310,7 @@
+ <comment xml:lang="oc">àudio Commodore 64</comment>
+ <comment xml:lang="pl">Plik dźwiękowy Commodore 64</comment>
+ <comment xml:lang="pt">áudio Commodore 64</comment>
+- <comment xml:lang="pt_BR">Áudio Commodore 64</comment>
++ <comment xml:lang="pt-BR">Áudio Commodore 64</comment>
+ <comment xml:lang="ro">Audio Commodore 64</comment>
+ <comment xml:lang="ru">Аудио Commodore 64</comment>
+ <comment xml:lang="sk">Zvuk Commodore 64</comment>
+@@ -22474,19 +23321,20 @@
+ <comment xml:lang="tr">Commodore 64 sesi</comment>
+ <comment xml:lang="uk">звук Commodore 64</comment>
+ <comment xml:lang="vi">Âm thanh Commodore 64</comment>
+- <comment xml:lang="zh_CN">Commodore 64 音频</comment>
+- <comment xml:lang="zh_TW">Commodore 64 音訊</comment>
++ <comment xml:lang="zh-CN">Commodore 64 音频</comment>
++ <comment xml:lang="zh-TW">Commodore 64 音訊</comment>
+ <magic priority="50">
+- <match value="PSID" type="string" offset="0"/>
++ <match type="string" value="PSID" offset="0"/>
+ </magic>
+ <glob pattern="*.sid"/>
+ <glob pattern="*.psid"/>
+ </mime-type>
+ <mime-type type="audio/x-adpcm">
+ <comment>PCM audio</comment>
++ <comment xml:lang="af">PCM-oudio</comment>
+ <comment xml:lang="ar">سمعي PCM</comment>
+ <comment xml:lang="az">PCM audio faylı</comment>
+- <comment xml:lang="be@latin">Aŭdyjo PCM</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo PCM</comment>
+ <comment xml:lang="bg">Аудио — PCM</comment>
+ <comment xml:lang="ca">àudio PCM</comment>
+ <comment xml:lang="cs">zvuk PCM</comment>
+@@ -22494,13 +23342,14 @@
+ <comment xml:lang="da">PCM-lyd</comment>
+ <comment xml:lang="de">PCM-Audio</comment>
+ <comment xml:lang="el">Ήχος PCM</comment>
+- <comment xml:lang="en_GB">PCM audio</comment>
++ <comment xml:lang="en-GB">PCM audio</comment>
+ <comment xml:lang="eo">PCM-sondosiero</comment>
+- <comment xml:lang="es">sonido PCM</comment>
++ <comment xml:lang="es">audio PCM</comment>
+ <comment xml:lang="eu">PCM audioa</comment>
+ <comment xml:lang="fi">PCM-ääni</comment>
+ <comment xml:lang="fo">PCM ljóður</comment>
+ <comment xml:lang="fr">audio PCM</comment>
++ <comment xml:lang="fur">audio PCM</comment>
+ <comment xml:lang="ga">fuaim PCM</comment>
+ <comment xml:lang="gl">son PCM</comment>
+ <comment xml:lang="he">שמע PCM</comment>
+@@ -22521,7 +23370,7 @@
+ <comment xml:lang="oc">àudio PCM</comment>
+ <comment xml:lang="pl">Plik dźwiękowy PCM</comment>
+ <comment xml:lang="pt">áudio PCM</comment>
+- <comment xml:lang="pt_BR">Áudio PCM</comment>
++ <comment xml:lang="pt-BR">Áudio PCM</comment>
+ <comment xml:lang="ro">Audio PCM</comment>
+ <comment xml:lang="ru">Аудио PCM</comment>
+ <comment xml:lang="sk">Zvuk PCM</comment>
+@@ -22532,29 +23381,30 @@
+ <comment xml:lang="tr">PCM sesi</comment>
+ <comment xml:lang="uk">звук PCM</comment>
+ <comment xml:lang="vi">Âm thanh PCM</comment>
+- <comment xml:lang="zh_CN">PCM 音频</comment>
+- <comment xml:lang="zh_TW">PCM 音訊</comment>
++ <comment xml:lang="zh-CN">PCM 音频</comment>
++ <comment xml:lang="zh-TW">PCM 音訊</comment>
+ <magic priority="50">
+- <match value=".snd" type="string" offset="0">
+- <match value="23" type="big32" offset="12"/>
++ <match type="string" value=".snd" offset="0">
++ <match type="big32" value="23" offset="12"/>
+ </match>
+- <match value="0x0064732E" type="little32" offset="0">
+- <match value="1" type="little32" offset="12"/>
+- <match value="2" type="little32" offset="12"/>
+- <match value="3" type="little32" offset="12"/>
+- <match value="4" type="little32" offset="12"/>
+- <match value="5" type="little32" offset="12"/>
+- <match value="6" type="little32" offset="12"/>
+- <match value="7" type="little32" offset="12"/>
+- <match value="23" type="little32" offset="12"/>
++ <match type="little32" value="0x0064732E" offset="0">
++ <match type="little32" value="1" offset="12"/>
++ <match type="little32" value="2" offset="12"/>
++ <match type="little32" value="3" offset="12"/>
++ <match type="little32" value="4" offset="12"/>
++ <match type="little32" value="5" offset="12"/>
++ <match type="little32" value="6" offset="12"/>
++ <match type="little32" value="7" offset="12"/>
++ <match type="little32" value="23" offset="12"/>
+ </match>
+ </magic>
+ </mime-type>
+ <mime-type type="audio/x-aifc">
+ <comment>AIFC audio</comment>
++ <comment xml:lang="af">AIFC-oudio</comment>
+ <comment xml:lang="ar">AIFC سمعي</comment>
+ <comment xml:lang="az">AIFC audio faylı</comment>
+- <comment xml:lang="be@latin">Aŭdyjo AIFC</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo AIFC</comment>
+ <comment xml:lang="bg">Аудио — AIFC</comment>
+ <comment xml:lang="ca">àudio AIFC</comment>
+ <comment xml:lang="cs">zvuk AIFC</comment>
+@@ -22562,13 +23412,14 @@
+ <comment xml:lang="da">AIFC-lyd</comment>
+ <comment xml:lang="de">AIFC-Audio</comment>
+ <comment xml:lang="el">Ήχος AIFC</comment>
+- <comment xml:lang="en_GB">AIFC audio</comment>
++ <comment xml:lang="en-GB">AIFC audio</comment>
+ <comment xml:lang="eo">AIFC-sondosiero</comment>
+- <comment xml:lang="es">sonido AIFC</comment>
++ <comment xml:lang="es">audio AIFC</comment>
+ <comment xml:lang="eu">AIFC audioa</comment>
+ <comment xml:lang="fi">AIFC-ääni</comment>
+ <comment xml:lang="fo">AIFC ljóður</comment>
+ <comment xml:lang="fr">audio AIFC</comment>
++ <comment xml:lang="fur">audio AIFC</comment>
+ <comment xml:lang="ga">fuaim AIFC</comment>
+ <comment xml:lang="gl">son AIFC</comment>
+ <comment xml:lang="he">שמע AIFC</comment>
+@@ -22590,7 +23441,7 @@
+ <comment xml:lang="oc">àudio AIFC</comment>
+ <comment xml:lang="pl">Plik dźwiękowy AIFC</comment>
+ <comment xml:lang="pt">áudio AIFC</comment>
+- <comment xml:lang="pt_BR">Áudio AIFC</comment>
++ <comment xml:lang="pt-BR">Áudio AIFC</comment>
+ <comment xml:lang="ro">Fișier audio AIFC</comment>
+ <comment xml:lang="ru">Аудио AIFC</comment>
+ <comment xml:lang="sk">Zvuk AIFC</comment>
+@@ -22601,13 +23452,13 @@
+ <comment xml:lang="tr">AIFC sesi</comment>
+ <comment xml:lang="uk">звук AIFC</comment>
+ <comment xml:lang="vi">Âm thanh AIFC</comment>
+- <comment xml:lang="zh_CN">AIFC 音频</comment>
+- <comment xml:lang="zh_TW">AIFC 音訊</comment>
++ <comment xml:lang="zh-CN">AIFC 音频</comment>
++ <comment xml:lang="zh-TW">AIFC 音訊</comment>
+ <acronym>AIFC</acronym>
+ <expanded-acronym>Audio Interchange File format Compressed</expanded-acronym>
+ <sub-class-of type="application/x-iff"/>
+ <magic priority="50">
+- <match value="AIFC" type="string" offset="8"/>
++ <match type="string" value="AIFC" offset="8"/>
+ </magic>
+ <glob pattern="*.aifc"/>
+ <glob pattern="*.aiffc"/>
+@@ -22615,23 +23466,25 @@
+ </mime-type>
+ <mime-type type="audio/x-aiff">
+ <comment>AIFF/Amiga/Mac audio</comment>
++ <comment xml:lang="af">AIFF/Amiga/Mac-oudio</comment>
+ <comment xml:lang="ar">AIFF/Amiga/Mac سمعي</comment>
+ <comment xml:lang="az">AIFF/Amiga/Mac audio faylı</comment>
+- <comment xml:lang="be@latin">Aŭdyjo AIFF/Amiga/Mac</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo AIFF/Amiga/Mac</comment>
+ <comment xml:lang="bg">Аудио — AIFF/Amiga/Mac</comment>
+ <comment xml:lang="ca">àudio AIFF/Amiga/Mac</comment>
+ <comment xml:lang="cs">zvuk AIFF/Amiga/Mac</comment>
+ <comment xml:lang="cy">Sain AIFF/Amiga/Mac</comment>
+- <comment xml:lang="da">AIFF-/Amiga-/Maclyd</comment>
++ <comment xml:lang="da">AIFF-/Amiga-/Mac-lyd</comment>
+ <comment xml:lang="de">AIFF/Amiga/Mac-Audio</comment>
+ <comment xml:lang="el">Ήχος AIFF/Amiga/Mac</comment>
+- <comment xml:lang="en_GB">AIFF/Amiga/Mac audio</comment>
++ <comment xml:lang="en-GB">AIFF/Amiga/Mac audio</comment>
+ <comment xml:lang="eo">AIFF/Amiga/Mac-sondosiero</comment>
+- <comment xml:lang="es">sonido AIFF/Amiga/Mac</comment>
++ <comment xml:lang="es">audio AIFF/Amiga/Mac</comment>
+ <comment xml:lang="eu">AIFF/Amiga/Mac audioa</comment>
+ <comment xml:lang="fi">AIFF/Amiga/Mac-ääni</comment>
+ <comment xml:lang="fo">AIFF/Amiga/Mac ljóður</comment>
+ <comment xml:lang="fr">audio AIFF/Amiga/Mac</comment>
++ <comment xml:lang="fur">audio AIFF/Amiga/Mac</comment>
+ <comment xml:lang="ga">fuaim AIFF/Amiga/Mac</comment>
+ <comment xml:lang="gl">son AIFF/Amiga/Mac</comment>
+ <comment xml:lang="he">שמע AIFF/Amiga/Mac</comment>
+@@ -22653,7 +23506,7 @@
+ <comment xml:lang="oc">àudio AIFF/Amiga/Mac</comment>
+ <comment xml:lang="pl">Plik dźwiękowy AIFF/Amiga/Mac</comment>
+ <comment xml:lang="pt">áudio AIFF/Amiga/Mac</comment>
+- <comment xml:lang="pt_BR">Áudio AIFF/Amiga/Mac</comment>
++ <comment xml:lang="pt-BR">Áudio AIFF/Amiga/Mac</comment>
+ <comment xml:lang="ro">Audio AIFF/Amiga/Mac</comment>
+ <comment xml:lang="ru">Аудио AIFF/Amiga/Mac</comment>
+ <comment xml:lang="sk">Zvuk AIFF/Amiga/Mac</comment>
+@@ -22664,14 +23517,14 @@
+ <comment xml:lang="tr">AIFF/Amiga/Mac sesi</comment>
+ <comment xml:lang="uk">звук AIFF/Amiga/Mac</comment>
+ <comment xml:lang="vi">Âm thanh AIFF/Amiga/Mac</comment>
+- <comment xml:lang="zh_CN">AIFF/Amiga/Mac 音频</comment>
+- <comment xml:lang="zh_TW">AIFF/Amiga/Mac 音訊</comment>
++ <comment xml:lang="zh-CN">AIFF/Amiga/Mac 音频</comment>
++ <comment xml:lang="zh-TW">AIFF/Amiga/Mac 音訊</comment>
+ <acronym>AIFF</acronym>
+ <expanded-acronym>Audio Interchange File Format</expanded-acronym>
+ <sub-class-of type="application/x-iff"/>
+ <magic priority="50">
+- <match value="AIFF" type="string" offset="8"/>
+- <match value="8SVX" type="string" offset="8"/>
++ <match type="string" value="AIFF" offset="8"/>
++ <match type="string" value="8SVX" offset="8"/>
+ </magic>
+ <glob pattern="*.aiff"/>
+ <glob pattern="*.aif"/>
+@@ -22679,19 +23532,20 @@
+ <mime-type type="audio/x-ape">
+ <comment>Monkey's audio</comment>
+ <comment xml:lang="ar">Monkey سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo Monkey's</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo Monkey's</comment>
+ <comment xml:lang="bg">Аудио — Monkey</comment>
+ <comment xml:lang="ca">àudio de Monkey</comment>
+ <comment xml:lang="cs">zvuk Monkey's</comment>
+- <comment xml:lang="da">Monkeys lyd</comment>
++ <comment xml:lang="da">Monkey's-lyd</comment>
+ <comment xml:lang="de">Monkey's-Audio</comment>
+ <comment xml:lang="el">Ήχος Monkey's</comment>
+- <comment xml:lang="en_GB">Monkey's audio</comment>
+- <comment xml:lang="es">sonido de Monkey</comment>
++ <comment xml:lang="en-GB">Monkey's audio</comment>
++ <comment xml:lang="es">audio de Monkey</comment>
+ <comment xml:lang="eu">Monkey audioa</comment>
+ <comment xml:lang="fi">Monkey's Audio -ääni</comment>
+ <comment xml:lang="fo">Monkey's ljóður</comment>
+ <comment xml:lang="fr">audio Monkey</comment>
++ <comment xml:lang="fur">audio Monkey's</comment>
+ <comment xml:lang="ga">fuaim Monkey's</comment>
+ <comment xml:lang="gl">son de Monkey</comment>
+ <comment xml:lang="he">שמע של Monkey's</comment>
+@@ -22711,7 +23565,7 @@
+ <comment xml:lang="oc">àudio Monkey</comment>
+ <comment xml:lang="pl">Plik dźwiękowy Monkey's Audio</comment>
+ <comment xml:lang="pt">áudio Monkey</comment>
+- <comment xml:lang="pt_BR">Áudio Monkey's</comment>
++ <comment xml:lang="pt-BR">Áudio Monkey's</comment>
+ <comment xml:lang="ro">Audio Monkey's</comment>
+ <comment xml:lang="ru">Аудио Monkey's</comment>
+ <comment xml:lang="sk">Zvuk Monkey's</comment>
+@@ -22722,20 +23576,27 @@
+ <comment xml:lang="tr">Monkey's sesi</comment>
+ <comment xml:lang="uk">звук Monkey's</comment>
+ <comment xml:lang="vi">Âm thanh cua Monkey</comment>
+- <comment xml:lang="zh_CN">Monkey's Audio 音频</comment>
+- <comment xml:lang="zh_TW">Monkey's 音訊</comment>
++ <comment xml:lang="zh-CN">Monkey's Audio 音频</comment>
++ <comment xml:lang="zh-TW">Monkey's 音訊</comment>
+ <magic priority="50">
+- <match value="MAC " type="string" offset="0"/>
++ <match type="string" value="MAC " offset="0"/>
+ </magic>
+ <glob pattern="*.ape"/>
+ </mime-type>
+ <mime-type type="audio/x-pn-audibleaudio">
+ <comment>Audible.Com audio</comment>
+- <comment xml:lang="ca">àudio Audible.Com</comment>
++ <comment xml:lang="bg">Аудио — Audible.Com</comment>
++ <comment xml:lang="ca">àudio d'Audible.Com</comment>
+ <comment xml:lang="cs">zvuk Audible.Com</comment>
++ <comment xml:lang="da">Audible.Com-lyd</comment>
+ <comment xml:lang="de">Audible.Com-Audio</comment>
+- <comment xml:lang="en_GB">Audible.Com audio</comment>
+- <comment xml:lang="es">sonido de Audible.com</comment>
++ <comment xml:lang="en-GB">Audible.Com audio</comment>
++ <comment xml:lang="es">audio de Audible.com</comment>
++ <comment xml:lang="eu">Audible.Com audioa</comment>
++ <comment xml:lang="fi">Audible.Com-ääni</comment>
++ <comment xml:lang="fr">audio Audible.Com</comment>
++ <comment xml:lang="fur">audio Audible.Com</comment>
++ <comment xml:lang="ga">fuaim Audible.Com</comment>
+ <comment xml:lang="hr">Audible.Com zvučni zapis</comment>
+ <comment xml:lang="hu">Audible.Com hang</comment>
+ <comment xml:lang="id">Audio Audible.Com</comment>
+@@ -22743,28 +23604,46 @@
+ <comment xml:lang="kk">Audible.Com аудиосы</comment>
+ <comment xml:lang="ko">Audible.Com 오디오</comment>
+ <comment xml:lang="pl">Plik dźwiękowy Audible.com</comment>
+- <comment xml:lang="pt_BR">Áudio de audible.com</comment>
++ <comment xml:lang="pt-BR">Áudio de audible.com</comment>
+ <comment xml:lang="ru">Аудио Audible.Com</comment>
+ <comment xml:lang="sk">Audio Audible.Com</comment>
+ <comment xml:lang="sv">Audible.Com-ljud</comment>
++ <comment xml:lang="tr">Audible.Com sesi</comment>
+ <comment xml:lang="uk">звук Audible.Com</comment>
+- <comment xml:lang="zh_CN">Audible.Com 音频</comment>
+- <comment xml:lang="zh_TW">Audible.Com 音訊</comment>
++ <comment xml:lang="zh-CN">Audible.Com 音频</comment>
++ <comment xml:lang="zh-TW">Audible.Com 音訊</comment>
+ <magic priority="50">
+-
+- <match value="1469084982" type="big32" offset="4"/>
+- <match value="aax " type="string" offset="8"/>
++ <!-- https://github.com/FFmpeg/FFmpeg/blob/master/libavformat/aadec.c#L33 -->
++ <match type="big32" value="1469084982" offset="4"/>
+ </magic>
+ <glob pattern="*.aa"/>
+- <glob pattern="*.aax"/>
+ <alias type="audio/vnd.audible"/>
+- <alias type="audio/vnd.audible.aax"/>
++ </mime-type>
++ <mime-type type="audio/vnd.audible.aax">
++ <comment>Audible Enhanced audio</comment>
++ <comment xml:lang="ca">àudio d'Audible Enhanced</comment>
++ <comment xml:lang="da">Audible Enhanced-lyd</comment>
++ <comment xml:lang="de">Audible Erweitertes Audio</comment>
++ <comment xml:lang="en-GB">Audible Enhanced audio</comment>
++ <comment xml:lang="es">audio mejorado de Audible</comment>
++ <comment xml:lang="fi">Selvä parannettu ääni</comment>
++ <comment xml:lang="hr">Audible poboljšani zvučni zapis</comment>
++ <comment xml:lang="it">Audio Audible Enhanced</comment>
++ <comment xml:lang="pl">Plik dźwiękowy Audible Enhanced</comment>
++ <comment xml:lang="pt-BR">Áudio Audible Enhanced</comment>
++ <comment xml:lang="sv">Audible förbättrat ljud</comment>
++ <comment xml:lang="uk">звук Audible Enhanced</comment>
++ <comment xml:lang="zh-CN">Audible 增强音频</comment>
++ <magic priority="50">
++ <match type="string" value="ftypaax " offset="4"/>
++ </magic>
++ <glob pattern="*.aax"/>
+ </mime-type>
+ <mime-type type="audio/x-it">
+ <comment>Impulse Tracker audio</comment>
+ <comment xml:lang="ar">Impulse Tracker سمعي</comment>
+ <comment xml:lang="az">Impulse Tracker audio faylı</comment>
+- <comment xml:lang="be@latin">Aŭdyjo Impulse Tracker</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo Impulse Tracker</comment>
+ <comment xml:lang="bg">Аудио — Impulse Tracker</comment>
+ <comment xml:lang="ca">àudio d'Impulse Tracker</comment>
+ <comment xml:lang="cs">zvuk Impulse Tracker</comment>
+@@ -22772,13 +23651,14 @@
+ <comment xml:lang="da">Impulse Tracker-lyd</comment>
+ <comment xml:lang="de">Impulse-Tracker-Audio</comment>
+ <comment xml:lang="el">Ήχος Impulse Tracker</comment>
+- <comment xml:lang="en_GB">Impulse Tracker audio</comment>
++ <comment xml:lang="en-GB">Impulse Tracker audio</comment>
+ <comment xml:lang="eo">Sondosiero de Impulse Tracker</comment>
+- <comment xml:lang="es">sonido de Impulse Tracker</comment>
++ <comment xml:lang="es">audio de Impulse Tracker</comment>
+ <comment xml:lang="eu">Impulse Tracker audioa</comment>
+ <comment xml:lang="fi">Impulse Tracker -ääni</comment>
+ <comment xml:lang="fo">Impulse Tracker ljóður</comment>
+ <comment xml:lang="fr">audio Impulse Tracker</comment>
++ <comment xml:lang="fur">audio Impulse Tracker</comment>
+ <comment xml:lang="ga">fuaim Impulse Tracker</comment>
+ <comment xml:lang="gl">son de Impulse Tracker</comment>
+ <comment xml:lang="he">שמע של Impulse Tracker</comment>
+@@ -22799,7 +23679,7 @@
+ <comment xml:lang="oc">àudio Impulse Tracker</comment>
+ <comment xml:lang="pl">Plik dźwiękowy Impulse Tracker</comment>
+ <comment xml:lang="pt">áudio Impulse Tracker</comment>
+- <comment xml:lang="pt_BR">Áudio Impulse Tracker</comment>
++ <comment xml:lang="pt-BR">Áudio Impulse Tracker</comment>
+ <comment xml:lang="ro">Audio Impulse Tracker</comment>
+ <comment xml:lang="ru">Аудио Impulse Tracker</comment>
+ <comment xml:lang="sk">Zvuk Impulse Tracker</comment>
+@@ -22810,30 +23690,32 @@
+ <comment xml:lang="tr">Impulse Tracker sesi</comment>
+ <comment xml:lang="uk">звук Impulse Tracker</comment>
+ <comment xml:lang="vi">Âm thanh Impulse Tracker</comment>
+- <comment xml:lang="zh_CN">Impulse Tracker 音频</comment>
+- <comment xml:lang="zh_TW">Impulse Tracker 音訊</comment>
++ <comment xml:lang="zh-CN">Impulse Tracker 音频</comment>
++ <comment xml:lang="zh-TW">Impulse Tracker 音訊</comment>
+ <magic priority="50">
+- <match value="IMPM" type="string" offset="0"/>
++ <match type="string" value="IMPM" offset="0"/>
+ </magic>
+ <glob pattern="*.it"/>
+ </mime-type>
+ <mime-type type="audio/flac">
+ <comment>FLAC audio</comment>
++ <comment xml:lang="af">FLAC-oudio</comment>
+ <comment xml:lang="ar">FLAC سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo FLAC</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo FLAC</comment>
+ <comment xml:lang="bg">Аудио — FLAC</comment>
+ <comment xml:lang="ca">àudio FLAC</comment>
+ <comment xml:lang="cs">zvuk FLAC</comment>
+ <comment xml:lang="da">FLAC-lyd</comment>
+ <comment xml:lang="de">FLAC-Audio</comment>
+ <comment xml:lang="el">Ήχος FLAC</comment>
+- <comment xml:lang="en_GB">FLAC audio</comment>
++ <comment xml:lang="en-GB">FLAC audio</comment>
+ <comment xml:lang="eo">FLAC-sondosiero</comment>
+- <comment xml:lang="es">sonido FLAC</comment>
++ <comment xml:lang="es">audio FLAC</comment>
+ <comment xml:lang="eu">FLAC audioa</comment>
+ <comment xml:lang="fi">FLAC-ääni</comment>
+ <comment xml:lang="fo">FLAC ljóður</comment>
+ <comment xml:lang="fr">audio FLAC</comment>
++ <comment xml:lang="fur">audio FLAC</comment>
+ <comment xml:lang="ga">fuaim FLAC</comment>
+ <comment xml:lang="gl">son FLAC</comment>
+ <comment xml:lang="he">קובץ שמע מסוג FLAC</comment>
+@@ -22855,7 +23737,7 @@
+ <comment xml:lang="oc">àudio FLAC</comment>
+ <comment xml:lang="pl">Plik dźwiękowy FLAC</comment>
+ <comment xml:lang="pt">áudio FLAC</comment>
+- <comment xml:lang="pt_BR">Áudio FLAC</comment>
++ <comment xml:lang="pt-BR">Áudio FLAC</comment>
+ <comment xml:lang="ro">Audio FLAC</comment>
+ <comment xml:lang="ru">Аудио FLAC</comment>
+ <comment xml:lang="sk">Zvuk FLAC</comment>
+@@ -22866,8 +23748,8 @@
+ <comment xml:lang="tr">FLAC sesi</comment>
+ <comment xml:lang="uk">звук FLAC</comment>
+ <comment xml:lang="vi">Âm thanh FLAC</comment>
+- <comment xml:lang="zh_CN">FLAC 音频</comment>
+- <comment xml:lang="zh_TW">FLAC 音訊</comment>
++ <comment xml:lang="zh-CN">FLAC 音频</comment>
++ <comment xml:lang="zh-TW">FLAC 音訊</comment>
+ <magic priority="50">
+ <match value="fLaC" type="string" offset="0"/>
+ </magic>
+@@ -22876,21 +23758,23 @@
+ </mime-type>
+ <mime-type type="audio/x-wavpack">
+ <comment>WavPack audio</comment>
++ <comment xml:lang="af">WavPack-oudio</comment>
+ <comment xml:lang="ar">WavPack سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo WavPack</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo WavPack</comment>
+ <comment xml:lang="bg">Аудио — WavPack</comment>
+ <comment xml:lang="ca">àudio de WavPack</comment>
+ <comment xml:lang="cs">zvuk WavPack</comment>
+ <comment xml:lang="da">WavPack-lyd</comment>
+ <comment xml:lang="de">WavPack-Audio</comment>
+ <comment xml:lang="el">Ήχος WavePack</comment>
+- <comment xml:lang="en_GB">WavPack audio</comment>
++ <comment xml:lang="en-GB">WavPack audio</comment>
+ <comment xml:lang="eo">WavPack-sondosiero</comment>
+- <comment xml:lang="es">sonido WavPack</comment>
++ <comment xml:lang="es">audio WavPack</comment>
+ <comment xml:lang="eu">WavPack audioa</comment>
+ <comment xml:lang="fi">WavPack-ääni</comment>
+ <comment xml:lang="fo">WavPack ljóður</comment>
+ <comment xml:lang="fr">audio WavPack</comment>
++ <comment xml:lang="fur">audio WavPack</comment>
+ <comment xml:lang="ga">fuaim WavPack</comment>
+ <comment xml:lang="gl">son WavPack</comment>
+ <comment xml:lang="he">שמע WavPack</comment>
+@@ -22910,7 +23794,7 @@
+ <comment xml:lang="oc">àudio WavPack</comment>
+ <comment xml:lang="pl">Plik dźwiękowy WavPack</comment>
+ <comment xml:lang="pt">áudio WavPack</comment>
+- <comment xml:lang="pt_BR">Áudio WavPack</comment>
++ <comment xml:lang="pt-BR">Áudio WavPack</comment>
+ <comment xml:lang="ro">Audio WavPack</comment>
+ <comment xml:lang="ru">Аудио WavPack</comment>
+ <comment xml:lang="sk">Zvuk WavPack</comment>
+@@ -22921,10 +23805,10 @@
+ <comment xml:lang="tr">WavPack sesi</comment>
+ <comment xml:lang="uk">звук WavPack</comment>
+ <comment xml:lang="vi">Âm thanh WavPack</comment>
+- <comment xml:lang="zh_CN">WavPack 音频</comment>
+- <comment xml:lang="zh_TW">WavPack 音訊</comment>
++ <comment xml:lang="zh-CN">WavPack 音频</comment>
++ <comment xml:lang="zh-TW">WavPack 音訊</comment>
+ <magic priority="50">
+- <match value="wvpk" type="string" offset="0"/>
++ <match type="string" value="wvpk" offset="0"/>
+ </magic>
+ <glob pattern="*.wv"/>
+ <glob pattern="*.wvp"/>
+@@ -22932,19 +23816,20 @@
+ <mime-type type="audio/x-wavpack-correction">
+ <comment>WavPack audio correction file</comment>
+ <comment xml:lang="ar">ملف تصحيح WavPack السمعي</comment>
+- <comment xml:lang="be@latin">Fajł aŭdyjokarekcyi WavPack</comment>
++ <comment xml:lang="be-Latn">Fajł aŭdyjokarekcyi WavPack</comment>
+ <comment xml:lang="bg">Файл за корекции на аудио — WavPack</comment>
+ <comment xml:lang="ca">fitxer de correcció d'àudio de WavPack</comment>
+ <comment xml:lang="cs">opravný zvukový soubor WavPack</comment>
+ <comment xml:lang="da">WavPack-lydkorrektionsfil</comment>
+ <comment xml:lang="de">WavPack-Audiokorrekturdatei</comment>
+ <comment xml:lang="el">Αρχείο διόρθωσης ήχου WavePack</comment>
+- <comment xml:lang="en_GB">WavPack audio correction file</comment>
+- <comment xml:lang="es">archivo de corrección de sonido WavPack</comment>
++ <comment xml:lang="en-GB">WavPack audio correction file</comment>
++ <comment xml:lang="es">archivo de corrección de audio WavPack</comment>
+ <comment xml:lang="eu">WavPack audio-zuzenketaren fitxategia</comment>
+ <comment xml:lang="fi">WavPack-äänikorjaustiedosto</comment>
+ <comment xml:lang="fo">WavPack ljóðrættingarfíla</comment>
+ <comment xml:lang="fr">fichier de correction audio WavPack</comment>
++ <comment xml:lang="fur">file di corezion audio WavPack</comment>
+ <comment xml:lang="ga">comhad ceartúchán fuaime WavPack</comment>
+ <comment xml:lang="gl">ficheiro de corrección de son WavPack</comment>
+ <comment xml:lang="he">קובץ תיקון שמע של WavPack</comment>
+@@ -22964,7 +23849,7 @@
+ <comment xml:lang="oc">fichièr de correccion àudio WavPack</comment>
+ <comment xml:lang="pl">Plik korekcji dźwięku WavPack</comment>
+ <comment xml:lang="pt">ficheiro de correção áudio WavPack</comment>
+- <comment xml:lang="pt_BR">Arquivo de correção de áudio WavPack</comment>
++ <comment xml:lang="pt-BR">Arquivo de correção de áudio WavPack</comment>
+ <comment xml:lang="ro">Fișier audio de corecție WavPack</comment>
+ <comment xml:lang="ru">Файл коррекции аудио WavPack</comment>
+ <comment xml:lang="sk">Opravný zvukový súbor WavPack</comment>
+@@ -22975,18 +23860,19 @@
+ <comment xml:lang="tr">WavPack ses düzeltme dosyası</comment>
+ <comment xml:lang="uk">файл корекції звуку WavPack</comment>
+ <comment xml:lang="vi">Tập tin sửa chữa âm thanh WavPack</comment>
+- <comment xml:lang="zh_CN">WavPack 音频校正文件</comment>
+- <comment xml:lang="zh_TW">WavPack 音訊校正檔</comment>
++ <comment xml:lang="zh-CN">WavPack 音频校正文件</comment>
++ <comment xml:lang="zh-TW">WavPack 音訊校正檔</comment>
+ <magic priority="50">
+- <match value="wvpk" type="string" offset="0"/>
++ <match type="string" value="wvpk" offset="0"/>
+ </magic>
+ <glob pattern="*.wvc"/>
+ </mime-type>
+ <mime-type type="audio/midi">
+ <comment>MIDI audio</comment>
++ <comment xml:lang="af">MIDI-oudio</comment>
+ <comment xml:lang="ar">MIDI سمعي</comment>
+ <comment xml:lang="az">MIDI audio faylı</comment>
+- <comment xml:lang="be@latin">Aŭdyjo MIDI</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo MIDI</comment>
+ <comment xml:lang="bg">Аудио — MIDI</comment>
+ <comment xml:lang="ca">àudio MIDI</comment>
+ <comment xml:lang="cs">zvuk MIDI</comment>
+@@ -22994,13 +23880,14 @@
+ <comment xml:lang="da">MIDI-lyd</comment>
+ <comment xml:lang="de">MIDI-Audio</comment>
+ <comment xml:lang="el">Ήχος MIDI</comment>
+- <comment xml:lang="en_GB">MIDI audio</comment>
++ <comment xml:lang="en-GB">MIDI audio</comment>
+ <comment xml:lang="eo">MIDI-sondosiero</comment>
+- <comment xml:lang="es">sonido MIDI</comment>
++ <comment xml:lang="es">audio MIDI</comment>
+ <comment xml:lang="eu">MIDI audioa</comment>
+ <comment xml:lang="fi">MIDI-ääni</comment>
+ <comment xml:lang="fo">MIDI ljóður</comment>
+ <comment xml:lang="fr">audio MIDI</comment>
++ <comment xml:lang="fur">audio MIDI</comment>
+ <comment xml:lang="ga">fuaim MIDI</comment>
+ <comment xml:lang="gl">son MIDI</comment>
+ <comment xml:lang="he">שמע MIDI</comment>
+@@ -23021,7 +23908,7 @@
+ <comment xml:lang="oc">àudio MIDI</comment>
+ <comment xml:lang="pl">Plik dźwiękowy MIDI</comment>
+ <comment xml:lang="pt">áudio MIDI</comment>
+- <comment xml:lang="pt_BR">Áudio MIDI</comment>
++ <comment xml:lang="pt-BR">Áudio MIDI</comment>
+ <comment xml:lang="ro">Audio MIDI</comment>
+ <comment xml:lang="ru">Аудио MIDI</comment>
+ <comment xml:lang="sk">Zvuk MIDI</comment>
+@@ -23032,11 +23919,11 @@
+ <comment xml:lang="tr">MIDI sesi</comment>
+ <comment xml:lang="uk">звук MIDI</comment>
+ <comment xml:lang="vi">Âm thanh MIDI</comment>
+- <comment xml:lang="zh_CN">MIDI 音频</comment>
+- <comment xml:lang="zh_TW">MIDI 音訊</comment>
++ <comment xml:lang="zh-CN">MIDI 音频</comment>
++ <comment xml:lang="zh-TW">MIDI 音訊</comment>
+ <alias type="audio/x-midi"/>
+ <magic priority="50">
+- <match value="MThd" type="string" offset="0"/>
++ <match type="string" value="MThd" offset="0"/>
+ </magic>
+ <glob pattern="*.mid"/>
+ <glob pattern="*.midi"/>
+@@ -23045,19 +23932,20 @@
+ <mime-type type="audio/x-mo3">
+ <comment>compressed Tracker audio</comment>
+ <comment xml:lang="ar">Tracker سمعي مضغوط</comment>
+- <comment xml:lang="be@latin">aŭdyjo skampresavanaha Trackera</comment>
++ <comment xml:lang="be-Latn">aŭdyjo skampresavanaha Trackera</comment>
+ <comment xml:lang="bg">Аудио — Tracker, компресирано</comment>
+ <comment xml:lang="ca">àudio Tracker amb compressió</comment>
+ <comment xml:lang="cs">komprimovaný zvuk Tracker</comment>
+- <comment xml:lang="da">Trackerkomprimeret lyd</comment>
++ <comment xml:lang="da">komprimeret trackerlyd</comment>
+ <comment xml:lang="de">Komprimiertes Tracker-Audio</comment>
+ <comment xml:lang="el">Συμπιεσμένος ήχος Tracker</comment>
+- <comment xml:lang="en_GB">compressed Tracker audio</comment>
+- <comment xml:lang="es">sonido de Tracker comprimido</comment>
++ <comment xml:lang="en-GB">compressed Tracker audio</comment>
++ <comment xml:lang="es">audio de Tracker comprimido</comment>
+ <comment xml:lang="eu">konprimitutako Tracker audioa</comment>
+ <comment xml:lang="fi">pakattu Tracker-ääni</comment>
+ <comment xml:lang="fo">stappað Tracker ljóður</comment>
+ <comment xml:lang="fr">audio Tracker compressé</comment>
++ <comment xml:lang="fur">audio Tracker comprimût</comment>
+ <comment xml:lang="ga">fuaim chomhbhrúite Tracker</comment>
+ <comment xml:lang="gl">son comprimido de Tracker</comment>
+ <comment xml:lang="he">שמע גשש מכווץ</comment>
+@@ -23076,7 +23964,7 @@
+ <comment xml:lang="oc">àudio Tracker compressat</comment>
+ <comment xml:lang="pl">Skompresowany plik dźwiękowy Tracker</comment>
+ <comment xml:lang="pt">áudio comprimido Tracker</comment>
+- <comment xml:lang="pt_BR">Áudio Tracker compactado</comment>
++ <comment xml:lang="pt-BR">Áudio Tracker compactado</comment>
+ <comment xml:lang="ro">Tracker audio comprimat</comment>
+ <comment xml:lang="ru">Сжатое аудио Tracker</comment>
+ <comment xml:lang="sk">Komprimovaný zvuk Tracker</comment>
+@@ -23087,25 +23975,28 @@
+ <comment xml:lang="tr">sıkıştırılmış Tracker sesi</comment>
+ <comment xml:lang="uk">стиснутий звук Tracker</comment>
+ <comment xml:lang="vi">âm thanh Tracker đã nén</comment>
+- <comment xml:lang="zh_CN">压缩的 Tracker 音频</comment>
+- <comment xml:lang="zh_TW">壓縮版 Tracker 音訊</comment>
++ <comment xml:lang="zh-CN">压缩的 Tracker 音频</comment>
++ <comment xml:lang="zh-TW">壓縮版 Tracker 音訊</comment>
+ <magic priority="50">
+- <match value="MO3" type="string" offset="0"/>
++ <match type="string" value="MO3" offset="0"/>
+ </magic>
+ <glob pattern="*.mo3"/>
+ </mime-type>
+ <mime-type type="audio/aac">
+ <comment>AAC audio</comment>
++ <comment xml:lang="af">AAC-oudio</comment>
++ <comment xml:lang="bg">Аудио — AAC</comment>
+ <comment xml:lang="ca">àudio AAC</comment>
+ <comment xml:lang="cs">zvuk AAC</comment>
+ <comment xml:lang="da">AAC-lyd</comment>
+ <comment xml:lang="de">AAC-Audio</comment>
+ <comment xml:lang="el">Ήχος AAC</comment>
+- <comment xml:lang="en_GB">AAC audio</comment>
+- <comment xml:lang="es">sonido AAC</comment>
++ <comment xml:lang="en-GB">AAC audio</comment>
++ <comment xml:lang="es">audio AAC</comment>
+ <comment xml:lang="eu">AAC audioa</comment>
+ <comment xml:lang="fi">AAC-ääni</comment>
+ <comment xml:lang="fr">audio AAC</comment>
++ <comment xml:lang="fur">audio AAC</comment>
+ <comment xml:lang="ga">fuaim AAC</comment>
+ <comment xml:lang="gl">Son AAC</comment>
+ <comment xml:lang="he">שמע AAC</comment>
+@@ -23121,7 +24012,7 @@
+ <comment xml:lang="oc">àudio AAC</comment>
+ <comment xml:lang="pl">Plik dźwiękowy AAC</comment>
+ <comment xml:lang="pt">áudio AAC</comment>
+- <comment xml:lang="pt_BR">Áudio AAC</comment>
++ <comment xml:lang="pt-BR">Áudio AAC</comment>
+ <comment xml:lang="ru">Аудио AAC</comment>
+ <comment xml:lang="sk">Zvuk AAC</comment>
+ <comment xml:lang="sl">Zvok AAC</comment>
+@@ -23129,21 +24020,49 @@
+ <comment xml:lang="sv">AAC-ljud</comment>
+ <comment xml:lang="tr">AAC sesi</comment>
+ <comment xml:lang="uk">звукові дані AAC</comment>
+- <comment xml:lang="zh_CN">AAC 音频</comment>
+- <comment xml:lang="zh_TW">AAC 音訊</comment>
++ <comment xml:lang="zh-CN">AAC 音频</comment>
++ <comment xml:lang="zh-TW">AAC 音訊</comment>
+ <acronym>AAC</acronym>
+ <expanded-acronym>Advanced Audio Coding</expanded-acronym>
+ <magic priority="50">
+- <match value="ADIF" type="string" offset="0"/>
+- <match value="0xFFF0" type="big16" offset="0" mask="0xFFF6"/>
++ <match type="string" value="ADIF" offset="0"/>
++ <match type="big16" value="0xFFF0" mask="0xFFF6" offset="0"/>
+ </magic>
+ <glob pattern="*.aac"/>
+ <glob pattern="*.adts"/>
+- <glob weight="10" pattern="*.ass"/>
++ <glob pattern="*.ass" weight="10"/>
+ <alias type="audio/x-aac"/>
+ </mime-type>
+ <mime-type type="audio/usac">
+ <comment>USAC audio</comment>
++ <comment xml:lang="af">USAC-oudio</comment>
++ <comment xml:lang="bg">Аудио — USAC</comment>
++ <comment xml:lang="ca">àudio USAC</comment>
++ <comment xml:lang="cs">zvuk USAC</comment>
++ <comment xml:lang="da">USAC-lyd</comment>
++ <comment xml:lang="de">USAC-Audio</comment>
++ <comment xml:lang="en-GB">USAC audio</comment>
++ <comment xml:lang="es">audio USAC</comment>
++ <comment xml:lang="eu">USAC audioa</comment>
++ <comment xml:lang="fi">USAC-ääni</comment>
++ <comment xml:lang="fr">audio USAC</comment>
++ <comment xml:lang="fur">audio USAC</comment>
++ <comment xml:lang="ga">fuaim USAC</comment>
++ <comment xml:lang="hr">USAC zvučni zapis</comment>
++ <comment xml:lang="hu">USAC hang</comment>
++ <comment xml:lang="id">Audio USAC</comment>
++ <comment xml:lang="it">Audio USAC</comment>
++ <comment xml:lang="kk">USAC аудиосы</comment>
++ <comment xml:lang="ko">USAC 오디오</comment>
++ <comment xml:lang="pl">Plik dźwiękowy USAC</comment>
++ <comment xml:lang="pt-BR">Áudio USAC</comment>
++ <comment xml:lang="ru">Аудио USAC</comment>
++ <comment xml:lang="sk">Zvuk USAC</comment>
++ <comment xml:lang="sv">USAC-ljud</comment>
++ <comment xml:lang="tr">USAC sesi</comment>
++ <comment xml:lang="uk">звукові дані USAC</comment>
++ <comment xml:lang="zh-CN">USAC 音频</comment>
++ <comment xml:lang="zh-TW">USAC 音訊</comment>
+ <acronym>USAC</acronym>
+ <expanded-acronym>Unified Speech and Audio Coding</expanded-acronym>
+ <glob pattern="*.loas"/>
+@@ -23151,21 +24070,23 @@
+ </mime-type>
+ <mime-type type="audio/mp4">
+ <comment>MPEG-4 audio</comment>
++ <comment xml:lang="af">MPEG-4-oudio</comment>
+ <comment xml:lang="ar">MPEG-4 سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo MPEG-4</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo MPEG-4</comment>
+ <comment xml:lang="bg">Аудио — MPEG-4</comment>
+ <comment xml:lang="ca">àudio MPEG-4</comment>
+ <comment xml:lang="cs">zvuk MPEG-4</comment>
+ <comment xml:lang="da">MPEG4-lyd</comment>
+ <comment xml:lang="de">MPEG-4-Audio</comment>
+ <comment xml:lang="el">Ήχος MPEG-4</comment>
+- <comment xml:lang="en_GB">MPEG-4 audio</comment>
++ <comment xml:lang="en-GB">MPEG-4 audio</comment>
+ <comment xml:lang="eo">MPEG4-sondosiero</comment>
+- <comment xml:lang="es">sonido MPEG-4</comment>
++ <comment xml:lang="es">audio MPEG-4</comment>
+ <comment xml:lang="eu">MPEG-4 audioa</comment>
+ <comment xml:lang="fi">MPEG-4-ääni</comment>
+ <comment xml:lang="fo">MPEG-4 ljóður</comment>
+ <comment xml:lang="fr">audio MPEG-4</comment>
++ <comment xml:lang="fur">audio MPEG-4</comment>
+ <comment xml:lang="ga">fuaim MPEG-4</comment>
+ <comment xml:lang="gl">son MPEG-4</comment>
+ <comment xml:lang="he">שמע MPEG-4</comment>
+@@ -23186,7 +24107,7 @@
+ <comment xml:lang="oc">àudio MPEG-4</comment>
+ <comment xml:lang="pl">Plik dźwiękowy MPEG-4</comment>
+ <comment xml:lang="pt">áudio MPEG-4</comment>
+- <comment xml:lang="pt_BR">Áudio MPEG-4</comment>
++ <comment xml:lang="pt-BR">Áudio MPEG-4</comment>
+ <comment xml:lang="ro">Audio MPEG-4</comment>
+ <comment xml:lang="ru">Аудио MPEG-4</comment>
+ <comment xml:lang="sk">Zvuk MPEG-4</comment>
+@@ -23197,39 +24118,65 @@
+ <comment xml:lang="tr">MPEG-4 sesi</comment>
+ <comment xml:lang="uk">звук MPEG-4</comment>
+ <comment xml:lang="vi">Âm thanh MPEG-4</comment>
+- <comment xml:lang="zh_CN">MPEG-4 音频</comment>
+- <comment xml:lang="zh_TW">MPEG-4 音訊</comment>
++ <comment xml:lang="zh-CN">MPEG-4 音频</comment>
++ <comment xml:lang="zh-TW">MPEG-4 音訊</comment>
+ <alias type="audio/x-m4a"/>
+ <alias type="audio/m4a"/>
+ <magic priority="50">
+- <match value="ftypM4A" type="string" offset="4"/>
++ <match type="string" value="ftypM4A" offset="4"/>
+ </magic>
+ <glob pattern="*.m4a"/>
+ <glob pattern="*.f4a"/>
+ </mime-type>
+ <mime-type type="audio/x-m4r">
+- <comment>MPEG-4 Ringtone</comment>
++ <comment>MPEG-4 ringtone</comment>
++ <comment xml:lang="bg">Аудио — MPEG-4, звънене</comment>
++ <comment xml:lang="ca">to de trucada MPEG-4</comment>
++ <comment xml:lang="da">MPEG-4-ringetone</comment>
++ <comment xml:lang="de">MPEG-4-Klingelton</comment>
++ <comment xml:lang="en-GB">MPEG-4 ringtone</comment>
++ <comment xml:lang="es">tono de llamada MPEG-4</comment>
++ <comment xml:lang="eu">MPEG-4 dei-tonua</comment>
++ <comment xml:lang="fi">MPEG-4-soittoääni</comment>
++ <comment xml:lang="fr">sonnerie MPEG-4</comment>
++ <comment xml:lang="hr">MPEG-4 melodija zvona</comment>
++ <comment xml:lang="hu">MPEG-4 csengőhang</comment>
++ <comment xml:lang="id">Nada panggil MPEG-4</comment>
++ <comment xml:lang="it">Suoneria MPEG-4</comment>
++ <comment xml:lang="kk">MPEG-4 рингтоны</comment>
++ <comment xml:lang="ko">MPEG-4 벨소리</comment>
++ <comment xml:lang="pl">Dzwonek MPEG-4</comment>
++ <comment xml:lang="pt-BR">Toque MPEG-4</comment>
++ <comment xml:lang="ru">Мелодия MPEG-4</comment>
++ <comment xml:lang="sk">Zvonenie MPEG-4</comment>
++ <comment xml:lang="sv">MPEG-4-ringsignal</comment>
++ <comment xml:lang="tr">MPEG-4 zil sesi</comment>
++ <comment xml:lang="uk">рингтон MPEG-4</comment>
++ <comment xml:lang="zh-CN">MPEG-4 铃声</comment>
++ <comment xml:lang="zh-TW">MPEG-4 鈴聲</comment>
+ <glob pattern="*.m4r"/>
+ <sub-class-of type="video/mp4"/>
+ </mime-type>
+ <mime-type type="video/mp4">
+ <comment>MPEG-4 video</comment>
++ <comment xml:lang="af">MPEG-4-video</comment>
+ <comment xml:lang="ar">MPEG-4 مرئي</comment>
+ <comment xml:lang="ast">Videu en MPEG-4</comment>
+- <comment xml:lang="be@latin">Videa MPEG-4</comment>
++ <comment xml:lang="be-Latn">Videa MPEG-4</comment>
+ <comment xml:lang="bg">Видео — MPEG-4</comment>
+ <comment xml:lang="ca">vídeo MPEG-4</comment>
+ <comment xml:lang="cs">video MPEG-4</comment>
+ <comment xml:lang="da">MPEG4-video</comment>
+ <comment xml:lang="de">MPEG-4-Video</comment>
+ <comment xml:lang="el">Βίντεο MPEG-4</comment>
+- <comment xml:lang="en_GB">MPEG-4 video</comment>
++ <comment xml:lang="en-GB">MPEG-4 video</comment>
+ <comment xml:lang="eo">MPEG-4-video</comment>
+ <comment xml:lang="es">vídeo MPEG-4</comment>
+ <comment xml:lang="eu">MPEG-4 bideoa</comment>
+ <comment xml:lang="fi">MPEG-4-video</comment>
+ <comment xml:lang="fo">MPEG-4 video</comment>
+ <comment xml:lang="fr">vidéo MPEG-4</comment>
++ <comment xml:lang="fur">video MPEG-4</comment>
+ <comment xml:lang="ga">físeán MPEG-4</comment>
+ <comment xml:lang="gl">vídeo MPEG-4</comment>
+ <comment xml:lang="he">וידאו MPEG-4</comment>
+@@ -23250,7 +24197,7 @@
+ <comment xml:lang="oc">vidèo MPEG-4</comment>
+ <comment xml:lang="pl">Plik wideo MPEG-4</comment>
+ <comment xml:lang="pt">vídeo MPEG-4</comment>
+- <comment xml:lang="pt_BR">Vídeo MPEG-4</comment>
++ <comment xml:lang="pt-BR">Vídeo MPEG-4</comment>
+ <comment xml:lang="ro">Video MPEG-4</comment>
+ <comment xml:lang="ru">Видео MPEG-4</comment>
+ <comment xml:lang="sk">Video MPEG-4</comment>
+@@ -23261,15 +24208,16 @@
+ <comment xml:lang="tr">MPEG-4 video</comment>
+ <comment xml:lang="uk">відеокліп MPEG-4</comment>
+ <comment xml:lang="vi">Ảnh động MPEG-4</comment>
+- <comment xml:lang="zh_CN">MPEG-4 视频</comment>
+- <comment xml:lang="zh_TW">MPEG-4 視訊</comment>
++ <comment xml:lang="zh-CN">MPEG-4 视频</comment>
++ <comment xml:lang="zh-TW">MPEG-4 視訊</comment>
+ <alias type="video/mp4v-es"/>
+ <magic priority="50">
+- <match value="ftypisom" type="string" offset="4"/>
+- <match value="ftypmp42" type="string" offset="4"/>
+- <match value="ftypMSNV" type="string" offset="4"/>
+- <match value="ftypM4V " type="string" offset="4"/>
+- <match value="ftypf4v " type="string" offset="4"/>
++ <match type="string" value="ftypisom" offset="4"/>
++ <match type="string" value="ftypmp41" offset="4"/>
++ <match type="string" value="ftypmp42" offset="4"/>
++ <match type="string" value="ftypMSNV" offset="4"/>
++ <match type="string" value="ftypM4V " offset="4"/>
++ <match type="string" value="ftypf4v " offset="4"/>
+ </magic>
+ <glob pattern="*.mp4"/>
+ <glob pattern="*.m4v"/>
+@@ -23279,21 +24227,23 @@
+ </mime-type>
+ <mime-type type="audio/x-m4b">
+ <comment>MPEG-4 audio book</comment>
++ <comment xml:lang="af">MPEG-4-oudioboek</comment>
+ <comment xml:lang="ar">كتاب MPEG-4 السمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjokniha MPEG-4</comment>
++ <comment xml:lang="be-Latn">Aŭdyjokniha MPEG-4</comment>
+ <comment xml:lang="bg">Аудио книга — MPEG-4</comment>
+ <comment xml:lang="ca">llibre d'àudio MPEG-4</comment>
+ <comment xml:lang="cs">zvuková kniha MPEG-4</comment>
+ <comment xml:lang="da">MPEG4-lydbog</comment>
+ <comment xml:lang="de">MPEG-4-Hörbuch</comment>
+ <comment xml:lang="el">Ηχητικό βιβλίο MPEG-4</comment>
+- <comment xml:lang="en_GB">MPEG-4 audio book</comment>
++ <comment xml:lang="en-GB">MPEG-4 audio book</comment>
+ <comment xml:lang="eo">MPEG-4-sonlibro</comment>
+ <comment xml:lang="es">audiolibro MPEG-4</comment>
+ <comment xml:lang="eu">MPEG-4 audio-liburua</comment>
+ <comment xml:lang="fi">MPEG-4-äänikirja</comment>
+ <comment xml:lang="fo">MPEG-4 ljóðbók</comment>
+ <comment xml:lang="fr">livre audio MPEG-4</comment>
++ <comment xml:lang="fur">audio-libri MPEG-4</comment>
+ <comment xml:lang="ga">closleabhar MPEG-4</comment>
+ <comment xml:lang="gl">sonlibro de MPEG-4</comment>
+ <comment xml:lang="he">ספר דיגיטלי MPEG-4</comment>
+@@ -23314,7 +24264,7 @@
+ <comment xml:lang="oc">libre àudio MPEG-4</comment>
+ <comment xml:lang="pl">Książka dźwiękowa MPEG-4</comment>
+ <comment xml:lang="pt">livro áudio MPEG-4</comment>
+- <comment xml:lang="pt_BR">Áudio livro MPEG-4</comment>
++ <comment xml:lang="pt-BR">Áudio livro MPEG-4</comment>
+ <comment xml:lang="ro">Carte audio MPEG-4</comment>
+ <comment xml:lang="ru">Аудиокнига MPEG-4</comment>
+ <comment xml:lang="sk">Zvuková kniha MPEG-4</comment>
+@@ -23325,31 +24275,33 @@
+ <comment xml:lang="tr">MPEG-4 sesli kitabı</comment>
+ <comment xml:lang="uk">аудіокнига MPEG-4</comment>
+ <comment xml:lang="vi">Sách âm thanh MPEG-4</comment>
+- <comment xml:lang="zh_CN">MPEG-4 有声书</comment>
+- <comment xml:lang="zh_TW">MPEG-4 音訊書</comment>
++ <comment xml:lang="zh-CN">MPEG-4 有声书</comment>
++ <comment xml:lang="zh-TW">MPEG-4 音訊書</comment>
+ <sub-class-of type="audio/mp4"/>
+ <magic priority="50">
+- <match value="ftypM4B" type="string" offset="4"/>
++ <match type="string" value="ftypM4B" offset="4"/>
+ </magic>
+ <glob pattern="*.m4b"/>
+ <glob pattern="*.f4b"/>
+ </mime-type>
+ <mime-type type="video/3gpp">
+ <comment>3GPP multimedia file</comment>
++ <comment xml:lang="af">3GPP-multimedialêer</comment>
+ <comment xml:lang="ar">ملف وسائط متعددة 3GPP</comment>
+- <comment xml:lang="be@latin">Multymedyjny fajł 3GPP</comment>
++ <comment xml:lang="be-Latn">Multymedyjny fajł 3GPP</comment>
+ <comment xml:lang="bg">Мултимедия — 3GPP</comment>
+ <comment xml:lang="ca">fitxer multimèdia 3GPP</comment>
+ <comment xml:lang="cs">multimediální soubor 3GPP</comment>
+ <comment xml:lang="da">3GPP multimedie-fil</comment>
+ <comment xml:lang="de">3GPP-Multimediadatei</comment>
+ <comment xml:lang="el">Αρχείο πολυμέσων 3GPP</comment>
+- <comment xml:lang="en_GB">3GPP multimedia file</comment>
++ <comment xml:lang="en-GB">3GPP multimedia file</comment>
+ <comment xml:lang="es">archivo multimedia 3GPP</comment>
+ <comment xml:lang="eu">3GPP multimediako fitxategia</comment>
+ <comment xml:lang="fi">3GPP-multimediatiedosto</comment>
+ <comment xml:lang="fo">3GGP margmiðlafíla</comment>
+ <comment xml:lang="fr">fichier multimédia 3GPP</comment>
++ <comment xml:lang="fur">file multimediâl 3GPP</comment>
+ <comment xml:lang="ga">comhad ilmheán 3GPP</comment>
+ <comment xml:lang="gl">ficheiro multimedia 3GPP</comment>
+ <comment xml:lang="he">קובץ מולטימדיה מסוג 3GPP</comment>
+@@ -23370,7 +24322,7 @@
+ <comment xml:lang="oc">fichièr multimèdia 3GPP</comment>
+ <comment xml:lang="pl">Plik multimedialny 3GPP</comment>
+ <comment xml:lang="pt">ficheiro multimédia 3GPP</comment>
+- <comment xml:lang="pt_BR">Arquivo multimídia 3GPP</comment>
++ <comment xml:lang="pt-BR">Arquivo multimídia 3GPP</comment>
+ <comment xml:lang="ro">Fișier multimedia 3GPP</comment>
+ <comment xml:lang="ru">Мультимедийный файл 3GPP</comment>
+ <comment xml:lang="sk">Súbor multimédií 3GPP</comment>
+@@ -23378,19 +24330,19 @@
+ <comment xml:lang="sq">File multimedial 3GPP</comment>
+ <comment xml:lang="sr">3ГПП мултимедијална датотека</comment>
+ <comment xml:lang="sv">3GPP-multimediafil</comment>
+- <comment xml:lang="tr">3GPP multimedya dosyası</comment>
++ <comment xml:lang="tr">3GPP çoklu ortam dosyası</comment>
+ <comment xml:lang="uk">файл мультимедійних даних 3GPP</comment>
+ <comment xml:lang="vi">Tập tin đa phương tiện 3GPP</comment>
+- <comment xml:lang="zh_CN">3GPP 多媒体文件</comment>
+- <comment xml:lang="zh_TW">3GPP 多媒體檔案</comment>
++ <comment xml:lang="zh-CN">3GPP 多媒体文件</comment>
++ <comment xml:lang="zh-TW">3GPP 多媒體檔案</comment>
+ <acronym>3GPP</acronym>
+ <expanded-acronym>3rd Generation Partnership Project</expanded-acronym>
+ <sub-class-of type="video/mp4"/>
+ <magic priority="50">
+- <match value="ftyp3ge" type="string" offset="4"/>
+- <match value="ftyp3gg" type="string" offset="4"/>
+- <match value="ftyp3gp" type="string" offset="4"/>
+- <match value="ftyp3gs" type="string" offset="4"/>
++ <match type="string" value="ftyp3ge" offset="4"/>
++ <match type="string" value="ftyp3gg" offset="4"/>
++ <match type="string" value="ftyp3gp" offset="4"/>
++ <match type="string" value="ftyp3gs" offset="4"/>
+ </magic>
+ <glob pattern="*.3gp"/>
+ <glob pattern="*.3gpp"/>
+@@ -23406,6 +24358,7 @@
+ </mime-type>
+ <mime-type type="video/3gpp2">
+ <comment>3GPP2 multimedia file</comment>
++ <comment xml:lang="af">3GPP2-multimedialêer</comment>
+ <comment xml:lang="ar">ملف وسائط متعددة 3GPP2</comment>
+ <comment xml:lang="bg">Мултимедия — 3GPP2</comment>
+ <comment xml:lang="ca">fitxer multimèdia 3GPP2</comment>
+@@ -23413,12 +24366,13 @@
+ <comment xml:lang="da">3GPP2 multimedie-fil</comment>
+ <comment xml:lang="de">3GPP2-Multimediadatei</comment>
+ <comment xml:lang="el">Αρχείο πολυμέσων 3GPP2</comment>
+- <comment xml:lang="en_GB">3GPP2 multimedia file</comment>
++ <comment xml:lang="en-GB">3GPP2 multimedia file</comment>
+ <comment xml:lang="es">archivo multimedia 3GPP2</comment>
+ <comment xml:lang="eu">3GPP2 multimediako fitxategia</comment>
+ <comment xml:lang="fi">3GPP2-multimediatiedosto</comment>
+ <comment xml:lang="fo">3GGP2 margmiðlafíla</comment>
+ <comment xml:lang="fr">fichier multimédia 3GPP2</comment>
++ <comment xml:lang="fur">file multimediâl 3GPP2</comment>
+ <comment xml:lang="ga">comhad ilmheán 3GPP2</comment>
+ <comment xml:lang="gl">ficheiro multimedia 3GPP2</comment>
+ <comment xml:lang="he">קובץ מולטימדיה 3GPP2</comment>
+@@ -23436,22 +24390,21 @@
+ <comment xml:lang="oc">fichièr multimèdia 3GPP2</comment>
+ <comment xml:lang="pl">Plik multimedialny 3GPP2</comment>
+ <comment xml:lang="pt">ficheiro multimédia 3GPP2</comment>
+- <comment xml:lang="pt_BR">Arquivo multimídia 3GPP2</comment>
++ <comment xml:lang="pt-BR">Arquivo multimídia 3GPP2</comment>
+ <comment xml:lang="ro">Fișier multimedia 3GPP2</comment>
+ <comment xml:lang="ru">Мультимедийный файл 3GPP2</comment>
+ <comment xml:lang="sk">Súbor multimédií 3GPP2</comment>
+ <comment xml:lang="sl">Večpredstavnostna datoteka 3GPP2</comment>
+ <comment xml:lang="sr">3ГПП2 мултимедијална датотека</comment>
+ <comment xml:lang="sv">3GPP2-multimediafil</comment>
+- <comment xml:lang="tr">3GPP2 multimedya dosyası</comment>
++ <comment xml:lang="tr">3GPP2 çoklu ortam dosyası</comment>
+ <comment xml:lang="uk">файл мультимедійних даних 3GPP2</comment>
+- <comment xml:lang="zh_CN">3GPP2 多媒体文件</comment>
+- <comment xml:lang="zh_TW">3GPP2 多媒體檔案</comment>
++ <comment xml:lang="zh-CN">3GPP2 多媒体文件</comment>
++ <comment xml:lang="zh-TW">3GPP2 多媒體檔案</comment>
+ <acronym>3GPP2</acronym>
+ <expanded-acronym>3rd Generation Partnership Project 2</expanded-acronym>
+- <sub-class-of type="video/mp4"/>
+ <magic priority="50">
+- <match value="ftyp3g2" type="string" offset="4"/>
++ <match type="string" value="ftyp3g2" offset="4"/>
+ </magic>
+ <glob pattern="*.3g2"/>
+ <glob pattern="*.3gp2"/>
+@@ -23461,20 +24414,21 @@
+ <mime-type type="audio/x-mod">
+ <comment>Amiga SoundTracker audio</comment>
+ <comment xml:lang="ar">مقتفي صوت Amiga السمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo Amiga SoundTracker</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo Amiga SoundTracker</comment>
+ <comment xml:lang="bg">Аудио — Amiga SoundTracker</comment>
+ <comment xml:lang="ca">àudio SoundTracker d'Amiga</comment>
+ <comment xml:lang="cs">zvuk Amiga SoundTracker</comment>
+ <comment xml:lang="da">Amiga SoundTracker-lyd</comment>
+ <comment xml:lang="de">Amiga-SoundTracker-Audio</comment>
+ <comment xml:lang="el">Ήχος Amiga SoundTracker</comment>
+- <comment xml:lang="en_GB">Amiga SoundTracker audio</comment>
++ <comment xml:lang="en-GB">Amiga SoundTracker audio</comment>
+ <comment xml:lang="eo">Sondosiero de Amiga SoundTracker</comment>
+- <comment xml:lang="es">sonido de Amiga SoundTracker</comment>
++ <comment xml:lang="es">audio de Amiga SoundTracker</comment>
+ <comment xml:lang="eu">Amiga soundtracker audioa</comment>
+ <comment xml:lang="fi">Amiga SoundTracker -ääni</comment>
+ <comment xml:lang="fo">Amiga SoundTracker ljóður</comment>
+ <comment xml:lang="fr">audio SoundTracker Amiga</comment>
++ <comment xml:lang="fur">audio Amiga SoundTracker</comment>
+ <comment xml:lang="ga">fuaim Amiga SoundTracker</comment>
+ <comment xml:lang="gl">son de Amiga SoundTracker</comment>
+ <comment xml:lang="he">קובץ שמע של Amiga SoundTracker</comment>
+@@ -23496,7 +24450,7 @@
+ <comment xml:lang="oc">àudio SoundTracker Amiga</comment>
+ <comment xml:lang="pl">Plik dźwiękowy Amiga SoundTracker</comment>
+ <comment xml:lang="pt">áudio SoundTracker do Amiga</comment>
+- <comment xml:lang="pt_BR">Áudio Amiga SoundTracker</comment>
++ <comment xml:lang="pt-BR">Áudio Amiga SoundTracker</comment>
+ <comment xml:lang="ro">Audio Amiga SoundTracker</comment>
+ <comment xml:lang="ru">Аудио Amiga SoundTracker</comment>
+ <comment xml:lang="sk">Zvuk Amiga SoundTracker</comment>
+@@ -23507,41 +24461,60 @@
+ <comment xml:lang="tr">Amiga SoundTracker sesi</comment>
+ <comment xml:lang="uk">звук Amiga SoundTracker</comment>
+ <comment xml:lang="vi">Âm thanh Amiga SoundTracker</comment>
+- <comment xml:lang="zh_CN">Amiga SoundTracker 音频</comment>
+- <comment xml:lang="zh_TW">Amiga SoundTracker 音訊</comment>
++ <comment xml:lang="zh-CN">Amiga SoundTracker 音频</comment>
++ <comment xml:lang="zh-TW">Amiga SoundTracker 音訊</comment>
+ <magic priority="40">
+- <match value="MTM" type="string" offset="0"/>
+- <match value="MMD0" type="string" offset="0"/>
+- <match value="MMD1" type="string" offset="0"/>
+- <match value="if" type="string" offset="0">
+-
+- <match value="0x0" type="byte" offset="110" mask="0xc0">
+-
+- <match value="0x0" type="byte" offset="111" mask="0x80"/>
+- <match value="0x80" type="byte" offset="111"/>
+- </match>
+-
+- <match value="0x40" type="byte" offset="110">
+-
+- <match value="0x0" type="byte" offset="111" mask="0x80"/>
+- <match value="0x80" type="byte" offset="111"/>
+- </match>
+- </match>
+- <match value="JN" type="string" offset="0">
+-
+- <match value="0x0" type="byte" offset="110" mask="0xc0">
+-
+- <match value="0x0" type="byte" offset="111" mask="0x80"/>
+- <match value="0x80" type="byte" offset="111"/>
++ <match type="string" value="MTM" offset="0"/>
++ <match type="string" value="MMD0" offset="0"/>
++ <match type="string" value="MMD1" offset="0"/>
++ <!-- 669 composer files: "if" and "JN" -->
++ <match type="byte" value="0x0" mask="0x80" offset="112">
++ <match type="string" value="if" offset="0">
++ <!-- tempo list last byte: 0-31 (0 = known false positive) -->
++ <match type="byte" value="0x0" mask="0xe0" offset="368">
++ <!-- number of samples: 0-63 -->
++ <match type="byte" value="0x0" mask="0xc0" offset="110">
++ <!-- number of patterns: 0-128 -->
++ <match type="byte" value="0x0" mask="0x80" offset="111"/>
++ <match type="byte" value="0x80" offset="111"/>
++ </match>
++ <!-- number of samples: 64 -->
++ <match type="byte" value="0x40" offset="110">
++ <match type="byte" value="0x0" mask="0x80" offset="111"/>
++ <match type="byte" value="0x80" offset="111"/>
++ </match>
++ </match>
++ <!-- tempo list last byte: 32 -->
++ <match type="byte" value="0x20" offset="368">
++ <!-- number of samples: 0-63 -->
++ <match type="byte" value="0x0" mask="0xc0" offset="110">
++ <!-- number of patterns: 0-128 -->
++ <match type="byte" value="0x0" mask="0x80" offset="111"/>
++ <match type="byte" value="0x80" offset="111"/>
++ </match>
++ <!-- number of samples: 64 -->
++ <match type="byte" value="0x40" offset="110">
++ <match type="byte" value="0x0" mask="0x80" offset="111"/>
++ <match type="byte" value="0x80" offset="111"/>
++ </match>
++ </match>
+ </match>
+-
+- <match value="0x40" type="byte" offset="110">
+-
+- <match value="0x0" type="byte" offset="111" mask="0x80"/>
+- <match value="0x80" type="byte" offset="111"/>
++ <match type="string" value="JN" offset="0">
++ <match type="byte" value="0x0" mask="0xe0" offset="368">
++ <match type="byte" value="0x0" mask="0xc0" offset="110">
++ <match type="byte" value="0x0" mask="0x80" offset="111"/>
++ <match type="byte" value="0x80" offset="111"/>
++ </match>
++ </match>
++ <match type="byte" value="0x20" offset="368">
++ <match type="byte" value="0x40" offset="110">
++ <match type="byte" value="0x0" mask="0x80" offset="111"/>
++ <match type="byte" value="0x80" offset="111"/>
++ </match>
++ </match>
+ </match>
+ </match>
+- <match value="MAS_UTrack_V00" type="string" offset="0"/>
++ <match type="string" value="MAS_UTrack_V00" offset="0"/>
+ </magic>
+ <glob pattern="*.mod"/>
+ <glob pattern="*.ult"/>
+@@ -23553,21 +24526,23 @@
+ </mime-type>
+ <mime-type type="audio/mp2">
+ <comment>MP2 audio</comment>
++ <comment xml:lang="af">MP2-oudio</comment>
+ <comment xml:lang="ar">MP2 سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo MP2</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo MP2</comment>
+ <comment xml:lang="bg">Аудио — MP2</comment>
+ <comment xml:lang="ca">àudio MP2</comment>
+ <comment xml:lang="cs">zvuk MP2</comment>
+ <comment xml:lang="da">MP2-lyd</comment>
+ <comment xml:lang="de">MP2-Audio</comment>
+ <comment xml:lang="el">Ήχος MP2</comment>
+- <comment xml:lang="en_GB">MP2 audio</comment>
++ <comment xml:lang="en-GB">MP2 audio</comment>
+ <comment xml:lang="eo">MP2-sondosiero</comment>
+- <comment xml:lang="es">sonido MP2</comment>
++ <comment xml:lang="es">audio MP2</comment>
+ <comment xml:lang="eu">MP2 audioa</comment>
+ <comment xml:lang="fi">MP2-ääni</comment>
+ <comment xml:lang="fo">MP2 ljóður</comment>
+ <comment xml:lang="fr">audio MP2</comment>
++ <comment xml:lang="fur">audio MP2</comment>
+ <comment xml:lang="ga">fuaim MP2</comment>
+ <comment xml:lang="gl">son MP2</comment>
+ <comment xml:lang="he">שמע MP2</comment>
+@@ -23587,7 +24562,7 @@
+ <comment xml:lang="oc">àudio MP2</comment>
+ <comment xml:lang="pl">Plik dźwiękowy MP2</comment>
+ <comment xml:lang="pt">áudio MP2</comment>
+- <comment xml:lang="pt_BR">Áudio MP2</comment>
++ <comment xml:lang="pt-BR">Áudio MP2</comment>
+ <comment xml:lang="ro">Audio MP2</comment>
+ <comment xml:lang="ru">Аудио MP2</comment>
+ <comment xml:lang="sk">Zvuk MP2</comment>
+@@ -23598,16 +24573,17 @@
+ <comment xml:lang="tr">MP2 sesi</comment>
+ <comment xml:lang="uk">звук MP2</comment>
+ <comment xml:lang="vi">Âm thanh MP2</comment>
+- <comment xml:lang="zh_CN">MP2 音频</comment>
+- <comment xml:lang="zh_TW">MP2 音訊</comment>
++ <comment xml:lang="zh-CN">MP2 音频</comment>
++ <comment xml:lang="zh-TW">MP2 音訊</comment>
+ <alias type="audio/x-mp2"/>
+ <glob pattern="*.mp2"/>
+ </mime-type>
+ <mime-type type="audio/mpeg">
+ <comment>MP3 audio</comment>
++ <comment xml:lang="af">MP3-oudio</comment>
+ <comment xml:lang="ar">MP3 سمعي</comment>
+ <comment xml:lang="az">MP3 audio faylı</comment>
+- <comment xml:lang="be@latin">Aŭdyjo MP3</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo MP3</comment>
+ <comment xml:lang="bg">Аудио — MP3</comment>
+ <comment xml:lang="ca">àudio MP3</comment>
+ <comment xml:lang="cs">zvuk MP3</comment>
+@@ -23615,13 +24591,14 @@
+ <comment xml:lang="da">MP3-lyd</comment>
+ <comment xml:lang="de">MP3-Audio</comment>
+ <comment xml:lang="el">Ήχος MP3</comment>
+- <comment xml:lang="en_GB">MP3 audio</comment>
++ <comment xml:lang="en-GB">MP3 audio</comment>
+ <comment xml:lang="eo">MP3-sondosiero</comment>
+- <comment xml:lang="es">sonido MP3</comment>
++ <comment xml:lang="es">audio MP3</comment>
+ <comment xml:lang="eu">MP3 audioa</comment>
+ <comment xml:lang="fi">MP3-ääni</comment>
+ <comment xml:lang="fo">MP3 ljóður</comment>
+ <comment xml:lang="fr">audio MP3</comment>
++ <comment xml:lang="fur">audio MP3</comment>
+ <comment xml:lang="ga">fuaim MP3</comment>
+ <comment xml:lang="gl">son MP3</comment>
+ <comment xml:lang="he">שמע MP3</comment>
+@@ -23643,7 +24620,7 @@
+ <comment xml:lang="oc">àudio MP3</comment>
+ <comment xml:lang="pl">Plik dźwiękowy MP3</comment>
+ <comment xml:lang="pt">áudio MP3</comment>
+- <comment xml:lang="pt_BR">Áudio MP3</comment>
++ <comment xml:lang="pt-BR">Áudio MP3</comment>
+ <comment xml:lang="ro">Audio MP3</comment>
+ <comment xml:lang="ru">Аудио MP3</comment>
+ <comment xml:lang="sk">Zvuk MP3</comment>
+@@ -23654,70 +24631,26 @@
+ <comment xml:lang="tr">MP3 sesi</comment>
+ <comment xml:lang="uk">звук MP3</comment>
+ <comment xml:lang="vi">Âm thanh MP3</comment>
+- <comment xml:lang="zh_CN">MP3 音频</comment>
+- <comment xml:lang="zh_TW">MP3 音訊</comment>
++ <comment xml:lang="zh-CN">MP3 音频</comment>
++ <comment xml:lang="zh-TW">MP3 音訊</comment>
+ <alias type="audio/x-mp3"/>
+ <alias type="audio/x-mpg"/>
+ <alias type="audio/x-mpeg"/>
+ <alias type="audio/mp3"/>
+ <magic priority="50">
+- <match value="0xfffb" type="big16" offset="0"/>
+- <match value="ID3" type="string" offset="0"/>
++ <match type="big16" value="0xfffa" offset="0"/>
++ <match type="big16" value="0xfffb" offset="0"/>
++ <match type="big16" value="0xfff3" offset="0"/>
++ <match type="big16" value="0xfff2" offset="0"/>
++ <match type="big16" value="0xffe3" offset="0"/>
++ <match type="big16" value="0xffe2" offset="0"/>
++ <match type="string" value="ID3" offset="0"/>
+ </magic>
+ <glob pattern="*.mp3"/>
+ <glob pattern="*.mpga"/>
+ </mime-type>
+ <mime-type type="audio/x-mpegurl">
+- <comment>MP3 audio (streamed)</comment>
+- <comment xml:lang="ar">MP3 سمعي (تدفق)</comment>
+- <comment xml:lang="be@latin">Aŭdyjo MP3 (płyń)</comment>
+- <comment xml:lang="bg">Аудио — MP3, поточно</comment>
+- <comment xml:lang="ca">àudio MP3 (flux)</comment>
+- <comment xml:lang="cs">zvuk MP3 (proud)</comment>
+- <comment xml:lang="da">MP3-lyd (strøm)</comment>
+- <comment xml:lang="de">MP3-Audio (Stream)</comment>
+- <comment xml:lang="el">Ήχος MP3 (εκπεμπόμενος)</comment>
+- <comment xml:lang="en_GB">MP3 audio (streamed)</comment>
+- <comment xml:lang="eo">MP3-sondosiero (fluigate)</comment>
+- <comment xml:lang="es">sonido MP3 (en transmisión)</comment>
+- <comment xml:lang="eu">MP3 audioa (korrontea)</comment>
+- <comment xml:lang="fi">MP3-ääni (virtaus)</comment>
+- <comment xml:lang="fo">MP3 ljóður (streymað)</comment>
+- <comment xml:lang="fr">audio MP3 (flux)</comment>
+- <comment xml:lang="ga">fuaim MP3 (sruthaithe)</comment>
+- <comment xml:lang="gl">son MP3 (en stream)</comment>
+- <comment xml:lang="he">שמע MP3 (מוזרם)</comment>
+- <comment xml:lang="hr">MP3 zvučni zapis (strujanje)</comment>
+- <comment xml:lang="hu">MP3 hang (sugárzott)</comment>
+- <comment xml:lang="ia">Audio MP3 (fluxo)</comment>
+- <comment xml:lang="id">Audio MP3 (stream)</comment>
+- <comment xml:lang="it">Audio MP3 (in streaming)</comment>
+- <comment xml:lang="ja">MP3 オーディオ (ストリーム)</comment>
+- <comment xml:lang="ka">MP3 აუდიო (ნაკადი)</comment>
+- <comment xml:lang="kk">MP3 аудиосы (ағымдық)</comment>
+- <comment xml:lang="ko">MP3 오디오(스트림)</comment>
+- <comment xml:lang="lt">MP3 garso įrašas (transliuojamas)</comment>
+- <comment xml:lang="lv">MP3 audio (straumēts)</comment>
+- <comment xml:lang="ms">Audio MP3 (aliran)</comment>
+- <comment xml:lang="nb">MP3-lyd (streaming)</comment>
+- <comment xml:lang="nl">MP3-audio (gestreamd)</comment>
+- <comment xml:lang="nn">Strauma MP3-lyd</comment>
+- <comment xml:lang="oc">àudio MP3 (flux)</comment>
+- <comment xml:lang="pl">Plik dźwiękowy MP3 (strumień)</comment>
+- <comment xml:lang="pt">áudio MP3 (em fluxo)</comment>
+- <comment xml:lang="pt_BR">Áudio MP3 (em fluxo)</comment>
+- <comment xml:lang="ro">Audio MP3 (flux)</comment>
+- <comment xml:lang="ru">Аудио MP3 (потоковое)</comment>
+- <comment xml:lang="sk">Zvuk MP3 (streamovaný)</comment>
+- <comment xml:lang="sl">Zvočna datoteka MP3 (pretočna)</comment>
+- <comment xml:lang="sq">Audio MP3 (streamed)</comment>
+- <comment xml:lang="sr">МП3 звук (проточан)</comment>
+- <comment xml:lang="sv">MP3-ljud (flöde)</comment>
+- <comment xml:lang="tr">MP3 sesi (akış)</comment>
+- <comment xml:lang="uk">звук MP3 (потоковий)</comment>
+- <comment xml:lang="vi">Âm thanh MP3 (chạy luồng)</comment>
+- <comment xml:lang="zh_CN">MP3 音频流媒体</comment>
+- <comment xml:lang="zh_TW">MP3 音訊 (串流)</comment>
++ <comment>Media playlist</comment>
+ <sub-class-of type="text/plain"/>
+ <alias type="audio/mpegurl"/>
+ <alias type="application/m3u"/>
+@@ -23728,77 +24661,38 @@
+ <glob pattern="*.m3u8"/>
+ <glob pattern="*.vlc"/>
+ <magic priority="50">
+- <match value="#EXTM3U" type="string" offset="0"/>
++ <match type="string" value="#EXTM3U" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/vnd.apple.mpegurl">
+- <comment>HTTP Live Streaming playlist</comment>
+- <comment xml:lang="ar">قائمة بث HTTP حية</comment>
+- <comment xml:lang="bg">Списък за изпълнение — поток по HTTP</comment>
+- <comment xml:lang="ca">llista de reproducció en temps real HTTP</comment>
+- <comment xml:lang="cs">seznam k přehrání HTTP Live Streaming</comment>
+- <comment xml:lang="da">Afspilningsliste til HTTP-livestrøm</comment>
+- <comment xml:lang="de">HTTP Live-Streaming-Wiedergabeliste</comment>
+- <comment xml:lang="el">Λίστα αναπαραγωγής ζωντανής μετάδοσης σε HTTP</comment>
+- <comment xml:lang="en_GB">HTTP Live Streaming playlist</comment>
+- <comment xml:lang="es">lista de reproducción de flujo en directo HTTP</comment>
+- <comment xml:lang="eu">HTTP zuzeneko korrontearen erreprodukzio-zerrenda</comment>
+- <comment xml:lang="fo">HTTP beinleiðis streymaður avspælingarlisti</comment>
+- <comment xml:lang="fr">liste de lecture de flux HTTP Live</comment>
+- <comment xml:lang="ga">seinmliosta sruthaithe bheo HTTP</comment>
+- <comment xml:lang="gl">lista de reprodución de fluxo HTTP</comment>
+- <comment xml:lang="he">רשימת השמעה הזרימה של HTTP</comment>
+- <comment xml:lang="hr">HTTP popis izvođenja emitiranja uživo</comment>
+- <comment xml:lang="hu">HTTP élő lejátszólista</comment>
+- <comment xml:lang="ia">Lista de selection HTTP Live Streaming</comment>
+- <comment xml:lang="id">Daftar putar HTTP Live Streaming</comment>
+- <comment xml:lang="it">Playlist Live Steaming HTTP</comment>
+- <comment xml:lang="ja">HTTP ライブストリーミング再生リスト</comment>
+- <comment xml:lang="kk">HTTP тірі ағым ойнау тізімі</comment>
+- <comment xml:lang="ko">HTTP 라이브 스트리밍 재생 목록</comment>
+- <comment xml:lang="lt">HTTP tiesioginio transliavimo grojaraštis</comment>
+- <comment xml:lang="lv">HTTP dzīvās straumēšanas repertuārs</comment>
+- <comment xml:lang="nl">HTTP Live Streaming afspeellijst</comment>
+- <comment xml:lang="oc">lista de lectura de flux HTTP Live</comment>
+- <comment xml:lang="pl">Lista odtwarzania strumieniowego na żywo HTTP</comment>
+- <comment xml:lang="pt">lista de reprodução HTTP Live Streaming</comment>
+- <comment xml:lang="pt_BR">Lista de Reprodução Streaming ao Vivo de HTTP</comment>
+- <comment xml:lang="ro">Listă de redare difuzată ca flux HTTP</comment>
+- <comment xml:lang="ru">Список воспроизведения HTTP-потока</comment>
+- <comment xml:lang="sk">Zoznam stôp HTTP Live Streaming</comment>
+- <comment xml:lang="sl">Seznam predvajanja živega pretoka HTTP</comment>
+- <comment xml:lang="sr">ХТТП списак нумера Живог Протока</comment>
+- <comment xml:lang="sv">HTTP Live Streaming-spellista</comment>
+- <comment xml:lang="tr">HTTP Canlı Akış çalma listesi</comment>
+- <comment xml:lang="uk">список відтворення HTTP Live Streaming</comment>
+- <comment xml:lang="zh_CN">HTTP 实时流播放列表</comment>
+- <comment xml:lang="zh_TW">HTTP 即時串流播放清單</comment>
++ <comment>Media playlist</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.m3u"/>
+ <glob pattern="*.m3u8"/>
+ <magic priority="70">
+- <match value="#EXTM3U" type="string" offset="0">
+- <match value="#EXT-X-TARGETDURATION" type="string" offset="0:128"/>
+- <match value="#EXT-X-STREAM-INF" type="string" offset="0:128"/>
++ <match type="string" value="#EXTM3U" offset="0">
++ <match type="string" value="#EXT-X-TARGETDURATION" offset="0:128"/>
++ <match type="string" value="#EXT-X-STREAM-INF" offset="0:128"/>
+ </match>
+ </magic>
+ </mime-type>
+ <mime-type type="audio/x-ms-asx">
+ <comment>Microsoft ASX playlist</comment>
+ <comment xml:lang="ar">قائمة تشغيل مايكروسوفت ASX</comment>
+- <comment xml:lang="be@latin">Śpis Microsoft ASX</comment>
++ <comment xml:lang="be-Latn">Śpis Microsoft ASX</comment>
+ <comment xml:lang="bg">Списък за изпълнение — Microsoft ASX</comment>
+ <comment xml:lang="ca">llista de reproducció de Microsoft ASX</comment>
+ <comment xml:lang="cs">seznam k přehrání Microsoft ASX</comment>
+ <comment xml:lang="da">Microsoft ASX-afspilningsliste</comment>
+ <comment xml:lang="de">Microsoft-ASX-Wiedergabeliste</comment>
+ <comment xml:lang="el">Λίστα αναπαραγωγής Microsoft ASX</comment>
+- <comment xml:lang="en_GB">Microsoft ASX playlist</comment>
++ <comment xml:lang="en-GB">Microsoft ASX playlist</comment>
+ <comment xml:lang="es">lista de reproducción ASX de Microsoft</comment>
+ <comment xml:lang="eu">Microsoft ASX erreprodukzio-zerrenda</comment>
+ <comment xml:lang="fi">Microsoft ASX -soittolista</comment>
+ <comment xml:lang="fo">Microsoft ASX avspælingarlisti</comment>
+ <comment xml:lang="fr">liste de lecture Microsoft ASX</comment>
++ <comment xml:lang="fur">liste di riproduzion Microsoft ASX</comment>
+ <comment xml:lang="ga">seinmliosta Microsoft ASX</comment>
+ <comment xml:lang="gl">lista de reprodución Microsoft ASX</comment>
+ <comment xml:lang="he">רשימת השמעה ASX (מיקרוסופט)</comment>
+@@ -23819,7 +24713,7 @@
+ <comment xml:lang="oc">lista de lectura Microsoft ASX</comment>
+ <comment xml:lang="pl">Lista odtwarzania Microsoft ASX</comment>
+ <comment xml:lang="pt">lista de reprodução Microsoft ASX</comment>
+- <comment xml:lang="pt_BR">Lista de reprodução do Microsoft ASX</comment>
++ <comment xml:lang="pt-BR">Lista de reprodução do Microsoft ASX</comment>
+ <comment xml:lang="ro">Listă redare Microsoft ASX</comment>
+ <comment xml:lang="ru">Список воспроизведения Microsoft ASX</comment>
+ <comment xml:lang="sk">Zoznam skladieb Microsoft ASX</comment>
+@@ -23830,8 +24724,8 @@
+ <comment xml:lang="tr">Microsoft ASX çalma listesi</comment>
+ <comment xml:lang="uk">список відтворення ASX Microsoft</comment>
+ <comment xml:lang="vi">Danh mục nhạc Microsoft ASX</comment>
+- <comment xml:lang="zh_CN">Microsoft ASX 播放列表</comment>
+- <comment xml:lang="zh_TW">微軟 ASX 播放清單</comment>
++ <comment xml:lang="zh-CN">Microsoft ASX 播放列表</comment>
++ <comment xml:lang="zh-TW">微軟 ASX 播放清單</comment>
+ <alias type="video/x-ms-wvx"/>
+ <alias type="video/x-ms-wax"/>
+ <alias type="video/x-ms-wmx"/>
+@@ -23841,29 +24735,31 @@
+ <glob pattern="*.wvx"/>
+ <glob pattern="*.wmx"/>
+ <magic priority="51">
+- <match value="ASF " type="string" offset="0"/>
+- <match value="&lt;ASX" type="string" offset="0:64"/>
+- <match value="&lt;asx" type="string" offset="0:64"/>
+- <match value="&lt;Asx" type="string" offset="0:64"/>
++ <match type="string" value="ASF " offset="0"/>
++ <match type="string" value="&lt;ASX" offset="0:64"/>
++ <match type="string" value="&lt;asx" offset="0:64"/>
++ <match type="string" value="&lt;Asx" offset="0:64"/>
+ </magic>
+ </mime-type>
+ <mime-type type="audio/x-psf">
+ <comment>PSF audio</comment>
++ <comment xml:lang="af">PSF-oudio</comment>
+ <comment xml:lang="ar">PSF سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo PSF</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo PSF</comment>
+ <comment xml:lang="bg">Аудио — PSF</comment>
+ <comment xml:lang="ca">àudio PSF</comment>
+ <comment xml:lang="cs">zvuk PSF</comment>
+ <comment xml:lang="da">PSF-lyd</comment>
+ <comment xml:lang="de">PSF-Audio</comment>
+ <comment xml:lang="el">Ήχος PSF</comment>
+- <comment xml:lang="en_GB">PSF audio</comment>
++ <comment xml:lang="en-GB">PSF audio</comment>
+ <comment xml:lang="eo">PSF-sondosiero</comment>
+- <comment xml:lang="es">sonido PSF</comment>
++ <comment xml:lang="es">audio PSF</comment>
+ <comment xml:lang="eu">PSF audioa</comment>
+ <comment xml:lang="fi">PSF-ääni</comment>
+ <comment xml:lang="fo">PSF ljóður</comment>
+ <comment xml:lang="fr">audio PSF</comment>
++ <comment xml:lang="fur">audio PSF</comment>
+ <comment xml:lang="ga">fuaim PSF</comment>
+ <comment xml:lang="gl">son PSF</comment>
+ <comment xml:lang="he">שמע PSF</comment>
+@@ -23883,7 +24779,7 @@
+ <comment xml:lang="oc">àudio PSF</comment>
+ <comment xml:lang="pl">Plik dźwiękowy PSF</comment>
+ <comment xml:lang="pt">áudio PSF</comment>
+- <comment xml:lang="pt_BR">Áudio PSF</comment>
++ <comment xml:lang="pt-BR">Áudio PSF</comment>
+ <comment xml:lang="ro">Audio PSF</comment>
+ <comment xml:lang="ru">Аудио PSF</comment>
+ <comment xml:lang="sk">Zvuk PSF</comment>
+@@ -23894,32 +24790,34 @@
+ <comment xml:lang="tr">PSF sesi</comment>
+ <comment xml:lang="uk">звук PSF</comment>
+ <comment xml:lang="vi">Âm thanh PSF</comment>
+- <comment xml:lang="zh_CN">PSF 音频</comment>
+- <comment xml:lang="zh_TW">PSF 音訊</comment>
++ <comment xml:lang="zh-CN">PSF 音频</comment>
++ <comment xml:lang="zh-TW">PSF 音訊</comment>
+ <acronym>PSF</acronym>
+ <expanded-acronym>Portable Sound Format</expanded-acronym>
+ <magic priority="50">
+- <match value="PSF" type="string" offset="0"/>
++ <match type="string" value="PSF" offset="0"/>
+ </magic>
+ <glob pattern="*.psf"/>
+ </mime-type>
+ <mime-type type="audio/x-minipsf">
+ <comment>MiniPSF audio</comment>
++ <comment xml:lang="af">MiniPSF-oudio</comment>
+ <comment xml:lang="ar">MiniPSF سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo MiniPSF</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo MiniPSF</comment>
+ <comment xml:lang="bg">Аудио — MiniPSF</comment>
+ <comment xml:lang="ca">àudio MiniPSF</comment>
+ <comment xml:lang="cs">zvuk MiniPSF</comment>
+ <comment xml:lang="da">MiniPSF-lyd</comment>
+ <comment xml:lang="de">MiniPSF-Audio</comment>
+ <comment xml:lang="el">Ήχος MiniPSF</comment>
+- <comment xml:lang="en_GB">MiniPSF audio</comment>
++ <comment xml:lang="en-GB">MiniPSF audio</comment>
+ <comment xml:lang="eo">MiniPSF-sondosiero</comment>
+- <comment xml:lang="es">sonido MiniPSF</comment>
++ <comment xml:lang="es">audio MiniPSF</comment>
+ <comment xml:lang="eu">MiniPSF audioa</comment>
+ <comment xml:lang="fi">MiniPSF-ääni</comment>
+ <comment xml:lang="fo">MiniPSF ljóður</comment>
+ <comment xml:lang="fr">audio MiniPSF</comment>
++ <comment xml:lang="fur">audio MiniPSF</comment>
+ <comment xml:lang="ga">fuaim MiniPSF</comment>
+ <comment xml:lang="gl">son MiniPSF</comment>
+ <comment xml:lang="he">שמע של MiniPSP</comment>
+@@ -23940,7 +24838,7 @@
+ <comment xml:lang="oc">àudio MiniPSF</comment>
+ <comment xml:lang="pl">Plik dźwiękowy MiniPSF</comment>
+ <comment xml:lang="pt">áudio MiniPSF</comment>
+- <comment xml:lang="pt_BR">Áudio MiniPSF</comment>
++ <comment xml:lang="pt-BR">Áudio MiniPSF</comment>
+ <comment xml:lang="ro">Audio MiniPSF</comment>
+ <comment xml:lang="ru">Аудио MiniPSF</comment>
+ <comment xml:lang="sk">Zvuk MiniPSF</comment>
+@@ -23951,8 +24849,8 @@
+ <comment xml:lang="tr">MiniPSF sesi</comment>
+ <comment xml:lang="uk">звук MiniPSF</comment>
+ <comment xml:lang="vi">Âm thanh MiniPSF</comment>
+- <comment xml:lang="zh_CN">MiniPSF 音频</comment>
+- <comment xml:lang="zh_TW">MiniPSF 音訊</comment>
++ <comment xml:lang="zh-CN">MiniPSF 音频</comment>
++ <comment xml:lang="zh-TW">MiniPSF 音訊</comment>
+ <acronym>MiniPSF</acronym>
+ <expanded-acronym>Miniature Portable Sound Format</expanded-acronym>
+ <sub-class-of type="audio/x-psf"/>
+@@ -23960,20 +24858,22 @@
+ </mime-type>
+ <mime-type type="audio/x-psflib">
+ <comment>PSFlib audio library</comment>
++ <comment xml:lang="af">PSFlib-oudiobiblioteek</comment>
+ <comment xml:lang="ar">مكتبة PSFlib السمعية</comment>
+- <comment xml:lang="be@latin">Aŭdyjobiblijateka PSFlib</comment>
++ <comment xml:lang="be-Latn">Aŭdyjobiblijateka PSFlib</comment>
+ <comment xml:lang="bg">Аудио библиотека — PSFlib</comment>
+ <comment xml:lang="ca">biblioteca d'àudio PSFlib</comment>
+ <comment xml:lang="cs">zvuková knihovna PSFlib</comment>
+ <comment xml:lang="da">PSFlib-lydbibliotek</comment>
+ <comment xml:lang="de">PSFlib-Audiobibliothek</comment>
+ <comment xml:lang="el">Βιβλιοθήκη ήχου PSFlib</comment>
+- <comment xml:lang="en_GB">PSFlib audio library</comment>
+- <comment xml:lang="es">biblioteca de sonido PSFlib</comment>
++ <comment xml:lang="en-GB">PSFlib audio library</comment>
++ <comment xml:lang="es">biblioteca de audio PSFlib</comment>
+ <comment xml:lang="eu">PSFlib audioaren liburutegia</comment>
+ <comment xml:lang="fi">PSFlib-äänikirjasto</comment>
+ <comment xml:lang="fo">PSFlib ljóðsavn</comment>
+ <comment xml:lang="fr">bibliothèque audio PSFlib</comment>
++ <comment xml:lang="fur">librarie audio PSFlib</comment>
+ <comment xml:lang="ga">leabharlann fhuaime PSFlib</comment>
+ <comment xml:lang="gl">Biblioteca de son PSFlib</comment>
+ <comment xml:lang="he">ספריית שמע PSFlib</comment>
+@@ -23993,7 +24893,7 @@
+ <comment xml:lang="oc">bibliotèca àudio PSFlib</comment>
+ <comment xml:lang="pl">Biblioteka dźwiękowa PSFlib</comment>
+ <comment xml:lang="pt">biblioteca áudio PSFlib</comment>
+- <comment xml:lang="pt_BR">Biblioteca de áudio PSFlib</comment>
++ <comment xml:lang="pt-BR">Biblioteca de áudio PSFlib</comment>
+ <comment xml:lang="ro">Bibliotecă audio PSFlib</comment>
+ <comment xml:lang="ru">Фонотека PSFlib</comment>
+ <comment xml:lang="sk">Zvuková knižnica PSFlib</comment>
+@@ -24004,8 +24904,8 @@
+ <comment xml:lang="tr">PSFlib ses kitaplığı</comment>
+ <comment xml:lang="uk">аудіобібліотека PSFlib</comment>
+ <comment xml:lang="vi">Thư viện âm thanh PSFlib</comment>
+- <comment xml:lang="zh_CN">PSFlib 音频库</comment>
+- <comment xml:lang="zh_TW">PSFlib 音訊庫</comment>
++ <comment xml:lang="zh-CN">PSFlib 音频库</comment>
++ <comment xml:lang="zh-TW">PSFlib 音訊庫</comment>
+ <acronym>PSFlib</acronym>
+ <expanded-acronym>Portable Sound Format Library</expanded-acronym>
+ <sub-class-of type="audio/x-psf"/>
+@@ -24013,20 +24913,22 @@
+ </mime-type>
+ <mime-type type="audio/x-ms-wma">
+ <comment>Windows Media audio</comment>
++ <comment xml:lang="af">Windows Media-oudio</comment>
+ <comment xml:lang="ar">Windows Media سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo Windows Media</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo Windows Media</comment>
+ <comment xml:lang="bg">Аудио — Windows Media</comment>
+ <comment xml:lang="ca">àudio de Windows Media</comment>
+ <comment xml:lang="cs">zvuk Windows Media</comment>
+ <comment xml:lang="da">Windows Media-lyd</comment>
+ <comment xml:lang="de">Windows-Media-Audio</comment>
+ <comment xml:lang="el">Ήχος Windows Media</comment>
+- <comment xml:lang="en_GB">Windows Media audio</comment>
+- <comment xml:lang="es">sonido de Windows Media</comment>
++ <comment xml:lang="en-GB">Windows Media audio</comment>
++ <comment xml:lang="es">audio de Windows Media</comment>
+ <comment xml:lang="eu">Windows Media audioa</comment>
+ <comment xml:lang="fi">Windows Media -ääni</comment>
+ <comment xml:lang="fo">Windows Media ljóður</comment>
+ <comment xml:lang="fr">audio Windows Media</comment>
++ <comment xml:lang="fur">audio Windows Media</comment>
+ <comment xml:lang="ga">fuaim Windows Media</comment>
+ <comment xml:lang="gl">son de Windows Media</comment>
+ <comment xml:lang="he">שמע של Windows Media</comment>
+@@ -24046,7 +24948,7 @@
+ <comment xml:lang="oc">àudio Windows Media</comment>
+ <comment xml:lang="pl">Plik dźwiękowy Windows Media</comment>
+ <comment xml:lang="pt">áudio Windows Media</comment>
+- <comment xml:lang="pt_BR">Áudio do Windows Media</comment>
++ <comment xml:lang="pt-BR">Áudio do Windows Media</comment>
+ <comment xml:lang="ro">Audio Windows Media</comment>
+ <comment xml:lang="ru">Аудио Windows Media</comment>
+ <comment xml:lang="sk">Zvuk Windows Media</comment>
+@@ -24057,28 +24959,30 @@
+ <comment xml:lang="tr">Windows Media sesi</comment>
+ <comment xml:lang="uk">звук Windows Media</comment>
+ <comment xml:lang="vi">Âm thanh Windows Media</comment>
+- <comment xml:lang="zh_CN">Windows Media 音频</comment>
+- <comment xml:lang="zh_TW">Windows Media 音訊</comment>
++ <comment xml:lang="zh-CN">Windows Media 音频</comment>
++ <comment xml:lang="zh-TW">Windows Media 音訊</comment>
+ <sub-class-of type="application/vnd.ms-asf"/>
+ <glob pattern="*.wma"/>
+ <alias type="audio/wma"/>
+ </mime-type>
+ <mime-type type="audio/x-musepack">
+ <comment>Musepack audio</comment>
++ <comment xml:lang="af">Musepack-oudio</comment>
+ <comment xml:lang="ar">Musepack سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo Musepack</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo Musepack</comment>
+ <comment xml:lang="bg">Аудио — Musepack</comment>
+ <comment xml:lang="ca">àudio de Musepack</comment>
+ <comment xml:lang="cs">zvuk Musepack</comment>
+- <comment xml:lang="da">Musepacklyd</comment>
++ <comment xml:lang="da">Musepack-lyd</comment>
+ <comment xml:lang="de">Musepack-Audio</comment>
+ <comment xml:lang="el">Ήχος Musepack</comment>
+- <comment xml:lang="en_GB">Musepack audio</comment>
+- <comment xml:lang="es">sonido Musepack</comment>
++ <comment xml:lang="en-GB">Musepack audio</comment>
++ <comment xml:lang="es">audio Musepack</comment>
+ <comment xml:lang="eu">Musepack audioa</comment>
+ <comment xml:lang="fi">Musepack-ääni</comment>
+ <comment xml:lang="fo">Musepack ljóður</comment>
+ <comment xml:lang="fr">audio Musepack</comment>
++ <comment xml:lang="fur">audio Musepack</comment>
+ <comment xml:lang="ga">fuaim Musepack</comment>
+ <comment xml:lang="gl">son de Musepack</comment>
+ <comment xml:lang="he">שמע של Musepack</comment>
+@@ -24098,7 +25002,7 @@
+ <comment xml:lang="oc">àudio Musepack</comment>
+ <comment xml:lang="pl">Plik dźwiękowy Musepack</comment>
+ <comment xml:lang="pt">áudio Musepack</comment>
+- <comment xml:lang="pt_BR">Áudio Musepack</comment>
++ <comment xml:lang="pt-BR">Áudio Musepack</comment>
+ <comment xml:lang="ro">Audio Musepack</comment>
+ <comment xml:lang="ru">Аудио Musepack</comment>
+ <comment xml:lang="sk">Zvuk Musepack</comment>
+@@ -24109,10 +25013,11 @@
+ <comment xml:lang="tr">Musepack sesi</comment>
+ <comment xml:lang="uk">звук Musepack</comment>
+ <comment xml:lang="vi">Âm thanh Musepack</comment>
+- <comment xml:lang="zh_CN">Musepack 音频</comment>
+- <comment xml:lang="zh_TW">Musepack 音訊</comment>
++ <comment xml:lang="zh-CN">Musepack 音频</comment>
++ <comment xml:lang="zh-TW">Musepack 音訊</comment>
+ <magic priority="50">
+- <match value="MP+" type="string" offset="0"/>
++ <match type="string" value="MP+" offset="0"/>
++ <match type="string" value="MPCK" offset="0"/>
+ </magic>
+ <glob pattern="*.mpc"/>
+ <glob pattern="*.mpp"/>
+@@ -24120,22 +25025,24 @@
+ </mime-type>
+ <mime-type type="audio/vnd.rn-realaudio">
+ <comment>RealAudio document</comment>
++ <comment xml:lang="af">RealAudio-dokument</comment>
+ <comment xml:lang="ar">مستند RealAudio</comment>
+ <comment xml:lang="ast">Documentu RealAudio</comment>
+- <comment xml:lang="be@latin">Dakument RealAudio</comment>
++ <comment xml:lang="be-Latn">Dakument RealAudio</comment>
+ <comment xml:lang="bg">Документ — RealAudio</comment>
+ <comment xml:lang="ca">document RealAudio</comment>
+ <comment xml:lang="cs">dokument RealAudio</comment>
+ <comment xml:lang="da">RealAudio-dokument</comment>
+ <comment xml:lang="de">RealAudio-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο RealAudio</comment>
+- <comment xml:lang="en_GB">RealAudio document</comment>
++ <comment xml:lang="en-GB">RealAudio document</comment>
+ <comment xml:lang="eo">RealAudio-dokumento</comment>
+ <comment xml:lang="es">documento RealAudio</comment>
+ <comment xml:lang="eu">RealAudio dokumentua</comment>
+ <comment xml:lang="fi">RealAudio-asiakirja</comment>
+ <comment xml:lang="fo">RealAudio skjal</comment>
+ <comment xml:lang="fr">document RealAudio</comment>
++ <comment xml:lang="fur">document RealAudio</comment>
+ <comment xml:lang="ga">cáipéis RealAudio</comment>
+ <comment xml:lang="gl">documento Realson</comment>
+ <comment xml:lang="he">מסמך של RealAudio</comment>
+@@ -24155,7 +25062,7 @@
+ <comment xml:lang="oc">document RealAudio</comment>
+ <comment xml:lang="pl">Dokument RealAudio</comment>
+ <comment xml:lang="pt">documento RealAudio</comment>
+- <comment xml:lang="pt_BR">Documento RealAudio</comment>
++ <comment xml:lang="pt-BR">Documento RealAudio</comment>
+ <comment xml:lang="ro">Document RealAudio</comment>
+ <comment xml:lang="ru">Документ RealAudio</comment>
+ <comment xml:lang="sk">Dokument RealAudio</comment>
+@@ -24166,81 +25073,61 @@
+ <comment xml:lang="tr">RealAudio belgesi</comment>
+ <comment xml:lang="uk">документ RealAudio</comment>
+ <comment xml:lang="vi">Tài liệu âm thanh RealAudio</comment>
+- <comment xml:lang="zh_CN">RealAudio 文档</comment>
+- <comment xml:lang="zh_TW">RealAudio 文件</comment>
++ <comment xml:lang="zh-CN">RealAudio 文档</comment>
++ <comment xml:lang="zh-TW">RealAudio 文件</comment>
+ <glob pattern="*.ra"/>
+ <glob pattern="*.rax"/>
+ <alias type="audio/x-pn-realaudio"/>
+ <alias type="audio/vnd.m-realaudio"/>
+ </mime-type>
+ <mime-type type="application/ram">
+- <comment>RealMedia Metafile</comment>
+- <comment xml:lang="ar">ملف تعريف RealMedia</comment>
+- <comment xml:lang="be@latin">Metafajł RealMedia</comment>
+- <comment xml:lang="bg">Метафайл — RealMedia</comment>
+- <comment xml:lang="ca">metafitxer RealMedia</comment>
+- <comment xml:lang="cs">RealMedia Metafile</comment>
+- <comment xml:lang="da">RealMedia-metafil</comment>
+- <comment xml:lang="de">RealMedia-Metadatei</comment>
+- <comment xml:lang="el">Metafile RealMedia</comment>
+- <comment xml:lang="en_GB">RealMedia Metafile</comment>
+- <comment xml:lang="es">metaarchivo RealMedia</comment>
+- <comment xml:lang="eu">RealMedia metafitxategia</comment>
+- <comment xml:lang="fi">RealMedia-metatiedosto</comment>
+- <comment xml:lang="fo">RealMedia metafíla</comment>
+- <comment xml:lang="fr">métafichier RealMedia</comment>
+- <comment xml:lang="ga">Meiteachomhad RealMedia</comment>
+- <comment xml:lang="gl">Metaficheiro RealMedia</comment>
+- <comment xml:lang="he">קובץ מטא של RealMedia</comment>
+- <comment xml:lang="hr">RealMedia meta datoteka</comment>
+- <comment xml:lang="hu">RealMedia metafájl</comment>
+- <comment xml:lang="ia">Metafile RealMedia</comment>
+- <comment xml:lang="id">RealMedia Metafile</comment>
+- <comment xml:lang="it">Metafile RealMedia</comment>
+- <comment xml:lang="ja">RealMedia メタファイル</comment>
+- <comment xml:lang="kk">RealMedia метафайлы</comment>
+- <comment xml:lang="ko">RealMedia 메타 파일</comment>
+- <comment xml:lang="lt">RealMedia metafailas</comment>
+- <comment xml:lang="lv">RealMedia metadatne</comment>
+- <comment xml:lang="nb">RealMedia-metafil</comment>
+- <comment xml:lang="nl">RealMedia-metabestand</comment>
+- <comment xml:lang="nn">RealMedia-metafil</comment>
+- <comment xml:lang="oc">metafichièr RealMedia</comment>
+- <comment xml:lang="pl">Metaplik RealMedia</comment>
+- <comment xml:lang="pt">metaficheiro RealMedia</comment>
+- <comment xml:lang="pt_BR">Meta arquivo do RealMedia</comment>
+- <comment xml:lang="ro">Metafișier RealMedia</comment>
+- <comment xml:lang="ru">Мета-файл RealMedia</comment>
+- <comment xml:lang="sk">RealMedia Metafile</comment>
+- <comment xml:lang="sl">Metadatoteka RealMedia</comment>
+- <comment xml:lang="sq">Metafile RealMedia</comment>
+- <comment xml:lang="sr">метадатотека Рил Медија</comment>
+- <comment xml:lang="sv">RealMedia-metafil</comment>
+- <comment xml:lang="tr">RealMedia Meta Dosyası</comment>
+- <comment xml:lang="uk">метафайл RealMedia</comment>
+- <comment xml:lang="vi">Siêu tập tin RealMedia</comment>
+- <comment xml:lang="zh_CN">RealMedia 元文件</comment>
+- <comment xml:lang="zh_TW">RealMedia 中介檔</comment>
++ <comment>RealMedia playlist</comment>
++ <comment xml:lang="bg">Списък за изпълнение — RealMedia</comment>
++ <comment xml:lang="ca">llista de reproducció RealMedia</comment>
++ <comment xml:lang="da">RealMedia-afspilningsliste</comment>
++ <comment xml:lang="de">RealMedia-Wiedergabeliste</comment>
++ <comment xml:lang="en-GB">RealMedia playlist</comment>
++ <comment xml:lang="es">lista de reproducción de RealMedia</comment>
++ <comment xml:lang="eu">RealMedia erreprodukzio-zerrenda</comment>
++ <comment xml:lang="fi">RealMedia-soittolista</comment>
++ <comment xml:lang="fr">liste de lecture RealMedia</comment>
++ <comment xml:lang="hr">RealMedia popis izvođenja</comment>
++ <comment xml:lang="hu">RealMedia lejátszólista</comment>
++ <comment xml:lang="id">Daftar putar RealMedia</comment>
++ <comment xml:lang="it">Playlist RealMedia</comment>
++ <comment xml:lang="kk">RealMedia ойнау тізімі</comment>
++ <comment xml:lang="ko">RealMedia 재생 목록</comment>
++ <comment xml:lang="pl">Lista odtwarzania RealMedia</comment>
++ <comment xml:lang="pt-BR">Lista de reprodução do RealMedia</comment>
++ <comment xml:lang="ru">Список воспроизведения RealMedia</comment>
++ <comment xml:lang="sk">Zoznam skladieb RealMedia</comment>
++ <comment xml:lang="sv">RealMedia-spellista</comment>
++ <comment xml:lang="tr">RealMedia çalma listesi</comment>
++ <comment xml:lang="uk">список відтворення RealMedia</comment>
++ <comment xml:lang="zh-CN">RealMedia 播放列表</comment>
++ <comment xml:lang="zh-TW">RealMedia 播放清單</comment>
+ <glob pattern="*.ram"/>
+ </mime-type>
+ <mime-type type="video/vnd.rn-realvideo">
+ <comment>RealVideo document</comment>
++ <comment xml:lang="af">RealVideo-dokument</comment>
+ <comment xml:lang="ar">مستند RealVideo</comment>
+ <comment xml:lang="ast">Documentu RealVideo</comment>
+- <comment xml:lang="be@latin">Dakument RealVideo</comment>
++ <comment xml:lang="be-Latn">Dakument RealVideo</comment>
+ <comment xml:lang="bg">Документ — RealVideo</comment>
+ <comment xml:lang="ca">document RealVideo</comment>
+ <comment xml:lang="cs">dokument RealVideo</comment>
+ <comment xml:lang="da">RealAudio-dokument</comment>
+ <comment xml:lang="de">RealVideo-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο RealVideo</comment>
+- <comment xml:lang="en_GB">RealVideo document</comment>
++ <comment xml:lang="en-GB">RealVideo document</comment>
+ <comment xml:lang="eo">RealVideo-dokumento</comment>
+ <comment xml:lang="es">documento RealVideo</comment>
+ <comment xml:lang="eu">RealVideo dokumentua</comment>
+ <comment xml:lang="fi">RealVideo-asiakirja</comment>
+ <comment xml:lang="fo">RealVideo skjal</comment>
+ <comment xml:lang="fr">document RealVideo</comment>
++ <comment xml:lang="fur">document RealVideo</comment>
+ <comment xml:lang="ga">cáipéis RealVideo</comment>
+ <comment xml:lang="gl">documento RealVideo</comment>
+ <comment xml:lang="he">מסמך של RealVideo</comment>
+@@ -24260,7 +25147,7 @@
+ <comment xml:lang="oc">document RealVideo</comment>
+ <comment xml:lang="pl">Dokument RealVideo</comment>
+ <comment xml:lang="pt">documento RealVideo</comment>
+- <comment xml:lang="pt_BR">Documento RealVideo</comment>
++ <comment xml:lang="pt-BR">Documento RealVideo</comment>
+ <comment xml:lang="ro">Document RealVideo</comment>
+ <comment xml:lang="ru">Документ RealVideo</comment>
+ <comment xml:lang="sk">Dokument RealVideo</comment>
+@@ -24268,33 +25155,35 @@
+ <comment xml:lang="sq">Dokument RealVideo</comment>
+ <comment xml:lang="sr">документ Рил Видеа</comment>
+ <comment xml:lang="sv">RealVideo-dokument</comment>
+- <comment xml:lang="tr">RealAudio belgesi</comment>
++ <comment xml:lang="tr">RealVideo belgesi</comment>
+ <comment xml:lang="uk">документ RealVideo</comment>
+ <comment xml:lang="vi">Tài liệu ảnh động RealVideo</comment>
+- <comment xml:lang="zh_CN">RealAudio 文档</comment>
+- <comment xml:lang="zh_TW">RealVideo 文件</comment>
++ <comment xml:lang="zh-CN">RealAudio 文档</comment>
++ <comment xml:lang="zh-TW">RealVideo 文件</comment>
+ <glob pattern="*.rv"/>
+ <glob pattern="*.rvx"/>
+ <alias type="video/x-real-video"/>
+ </mime-type>
+ <mime-type type="application/vnd.rn-realmedia">
+ <comment>RealMedia document</comment>
++ <comment xml:lang="af">RealMedia-dokument</comment>
+ <comment xml:lang="ar">مستند RealMedia</comment>
+ <comment xml:lang="ast">Documentu RealMedia</comment>
+- <comment xml:lang="be@latin">Dakument RealMedia</comment>
++ <comment xml:lang="be-Latn">Dakument RealMedia</comment>
+ <comment xml:lang="bg">Документ — RealMedia</comment>
+ <comment xml:lang="ca">document RealMedia</comment>
+ <comment xml:lang="cs">dokument RealMedia</comment>
+ <comment xml:lang="da">RealMedia-dokument</comment>
+ <comment xml:lang="de">RealMedia-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο RealMedia</comment>
+- <comment xml:lang="en_GB">RealMedia document</comment>
++ <comment xml:lang="en-GB">RealMedia document</comment>
+ <comment xml:lang="eo">RealMedia-dokumento</comment>
+ <comment xml:lang="es">documento RealMedia</comment>
+ <comment xml:lang="eu">RealMedia dokumentua</comment>
+ <comment xml:lang="fi">RealMedia-asiakirja</comment>
+ <comment xml:lang="fo">RealMedia skjal</comment>
+ <comment xml:lang="fr">document RealMedia</comment>
++ <comment xml:lang="fur">document RealMedia</comment>
+ <comment xml:lang="ga">cáipéis RealMedia</comment>
+ <comment xml:lang="gl">documento RealMedia</comment>
+ <comment xml:lang="he">מסמך של RealMedia</comment>
+@@ -24314,7 +25203,7 @@
+ <comment xml:lang="oc">document RealMedia</comment>
+ <comment xml:lang="pl">Dokument RealMedia</comment>
+ <comment xml:lang="pt">documento RealMedia</comment>
+- <comment xml:lang="pt_BR">Documento RealMedia</comment>
++ <comment xml:lang="pt-BR">Documento RealMedia</comment>
+ <comment xml:lang="ro">Document RealMedia</comment>
+ <comment xml:lang="ru">Документ RealMedia</comment>
+ <comment xml:lang="sk">Dokument RealMedia</comment>
+@@ -24325,11 +25214,11 @@
+ <comment xml:lang="tr">RealMedia belgesi</comment>
+ <comment xml:lang="uk">документ RealMedia</comment>
+ <comment xml:lang="vi">Tài liệu RealMedia</comment>
+- <comment xml:lang="zh_CN">RealMedia 文档</comment>
+- <comment xml:lang="zh_TW">RealMedia 文件</comment>
++ <comment xml:lang="zh-CN">RealMedia 文档</comment>
++ <comment xml:lang="zh-TW">RealMedia 文件</comment>
+ <generic-icon name="video-x-generic"/>
+ <magic priority="50">
+- <match value=".RMF" type="string" offset="0"/>
++ <match type="string" value=".RMF" offset="0"/>
+ </magic>
+ <glob pattern="*.rm"/>
+ <glob pattern="*.rmj"/>
+@@ -24341,22 +25230,24 @@
+ </mime-type>
+ <mime-type type="image/vnd.rn-realpix">
+ <comment>RealPix document</comment>
++ <comment xml:lang="af">RealPix-dokument</comment>
+ <comment xml:lang="ar">مستند RealPix</comment>
+ <comment xml:lang="ast">Documentu RealPix</comment>
+- <comment xml:lang="be@latin">Dakument RealPix</comment>
++ <comment xml:lang="be-Latn">Dakument RealPix</comment>
+ <comment xml:lang="bg">Документ — RealPix</comment>
+ <comment xml:lang="ca">document RealPix</comment>
+ <comment xml:lang="cs">dokument RealPix</comment>
+ <comment xml:lang="da">RealPix-dokument</comment>
+ <comment xml:lang="de">RealPix-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο RealPix</comment>
+- <comment xml:lang="en_GB">RealPix document</comment>
++ <comment xml:lang="en-GB">RealPix document</comment>
+ <comment xml:lang="eo">RealPix-dokumento</comment>
+ <comment xml:lang="es">documento RealPix</comment>
+ <comment xml:lang="eu">RealPix dokumentua</comment>
+ <comment xml:lang="fi">RealPix-asiakirja</comment>
+ <comment xml:lang="fo">RealPix skjal</comment>
+ <comment xml:lang="fr">document RealPix</comment>
++ <comment xml:lang="fur">document RealPix</comment>
+ <comment xml:lang="ga">cáipéis RealPix</comment>
+ <comment xml:lang="gl">documento RealPix</comment>
+ <comment xml:lang="he">מסמך של RealPix</comment>
+@@ -24376,7 +25267,7 @@
+ <comment xml:lang="oc">document RealPix</comment>
+ <comment xml:lang="pl">Dokument RealPix</comment>
+ <comment xml:lang="pt">documento RealPix</comment>
+- <comment xml:lang="pt_BR">Documento RealPix</comment>
++ <comment xml:lang="pt-BR">Documento RealPix</comment>
+ <comment xml:lang="ro">Document RealPix</comment>
+ <comment xml:lang="ru">Документ RealPix</comment>
+ <comment xml:lang="sk">Dokument RealPix</comment>
+@@ -24387,28 +25278,30 @@
+ <comment xml:lang="tr">RealPix belgesi</comment>
+ <comment xml:lang="uk">документ RealPix</comment>
+ <comment xml:lang="vi">Tài liệu ảnh RealPix</comment>
+- <comment xml:lang="zh_CN">RealPix 文档</comment>
+- <comment xml:lang="zh_TW">RealPix 文件</comment>
++ <comment xml:lang="zh-CN">RealPix 文档</comment>
++ <comment xml:lang="zh-TW">RealPix 文件</comment>
+ <glob pattern="*.rp"/>
+ </mime-type>
+ <mime-type type="text/vnd.rn-realtext">
+ <comment>RealText document</comment>
++ <comment xml:lang="af">RealText-dokument</comment>
+ <comment xml:lang="ar">مستند RealText</comment>
+ <comment xml:lang="ast">Documentu RealText</comment>
+- <comment xml:lang="be@latin">Dakument RealText</comment>
++ <comment xml:lang="be-Latn">Dakument RealText</comment>
+ <comment xml:lang="bg">Документ — RealText</comment>
+ <comment xml:lang="ca">document RealText</comment>
+ <comment xml:lang="cs">dokument RealText</comment>
+ <comment xml:lang="da">RealText-dokument</comment>
+ <comment xml:lang="de">RealText-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο RealText</comment>
+- <comment xml:lang="en_GB">RealText document</comment>
++ <comment xml:lang="en-GB">RealText document</comment>
+ <comment xml:lang="eo">RealText-dokumento</comment>
+ <comment xml:lang="es">documento RealText</comment>
+ <comment xml:lang="eu">RealText dokumentua</comment>
+ <comment xml:lang="fi">RealText-asiakirja</comment>
+ <comment xml:lang="fo">RealText skjal</comment>
+ <comment xml:lang="fr">document RealText</comment>
++ <comment xml:lang="fur">document RealText</comment>
+ <comment xml:lang="ga">cáipéis RealText</comment>
+ <comment xml:lang="gl">documento RealText</comment>
+ <comment xml:lang="he">מסמך של RealText</comment>
+@@ -24428,7 +25321,7 @@
+ <comment xml:lang="oc">document RealText</comment>
+ <comment xml:lang="pl">Dokument RealText</comment>
+ <comment xml:lang="pt">documento RealText</comment>
+- <comment xml:lang="pt_BR">Documento RealText</comment>
++ <comment xml:lang="pt-BR">Documento RealText</comment>
+ <comment xml:lang="ro">Document RealText</comment>
+ <comment xml:lang="ru">Документ RealText</comment>
+ <comment xml:lang="sk">Dokument RealText</comment>
+@@ -24439,15 +25332,16 @@
+ <comment xml:lang="tr">RealText belgesi</comment>
+ <comment xml:lang="uk">документ RealText</comment>
+ <comment xml:lang="vi">Tài liệu văn bản RealText</comment>
+- <comment xml:lang="zh_CN">RealText 文档</comment>
+- <comment xml:lang="zh_TW">RealText 文件</comment>
++ <comment xml:lang="zh-CN">RealText 文档</comment>
++ <comment xml:lang="zh-TW">RealText 文件</comment>
+ <glob pattern="*.rt"/>
+ </mime-type>
+ <mime-type type="audio/x-riff">
+ <comment>RIFF audio</comment>
++ <comment xml:lang="af">RIFF-oudio</comment>
+ <comment xml:lang="ar">RIFF سمعي</comment>
+ <comment xml:lang="az">RIFF audio faylı</comment>
+- <comment xml:lang="be@latin">Aŭdyjo RIFF</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo RIFF</comment>
+ <comment xml:lang="bg">Аудио — RIFF</comment>
+ <comment xml:lang="ca">àudio RIFF</comment>
+ <comment xml:lang="cs">zvuk RIFF</comment>
+@@ -24455,13 +25349,14 @@
+ <comment xml:lang="da">RIFF-lyd</comment>
+ <comment xml:lang="de">RIFF-Audio</comment>
+ <comment xml:lang="el">Ήχος RIFF</comment>
+- <comment xml:lang="en_GB">RIFF audio</comment>
++ <comment xml:lang="en-GB">RIFF audio</comment>
+ <comment xml:lang="eo">RIFF-sondosiero</comment>
+- <comment xml:lang="es">sonido RIFF</comment>
++ <comment xml:lang="es">audio RIFF</comment>
+ <comment xml:lang="eu">RIFF audioa</comment>
+ <comment xml:lang="fi">RIFF-ääni</comment>
+ <comment xml:lang="fo">RIFF ljóð</comment>
+ <comment xml:lang="fr">audio RIFF</comment>
++ <comment xml:lang="fur">audio RIFF</comment>
+ <comment xml:lang="ga">fuaim RIFF</comment>
+ <comment xml:lang="gl">son RIFF</comment>
+ <comment xml:lang="he">שמע RIFF</comment>
+@@ -24482,7 +25377,7 @@
+ <comment xml:lang="oc">àudio RIFF</comment>
+ <comment xml:lang="pl">Plik dźwiękowy RIFF</comment>
+ <comment xml:lang="pt">áudio RIFF</comment>
+- <comment xml:lang="pt_BR">Áudio RIFF</comment>
++ <comment xml:lang="pt-BR">Áudio RIFF</comment>
+ <comment xml:lang="ro">Audio RIFF</comment>
+ <comment xml:lang="ru">Аудио RIFF</comment>
+ <comment xml:lang="sk">Zvuk RIFF</comment>
+@@ -24493,20 +25388,24 @@
+ <comment xml:lang="tr">RIFF sesi</comment>
+ <comment xml:lang="uk">звук RIFF</comment>
+ <comment xml:lang="vi">Âm thanh RIFF</comment>
+- <comment xml:lang="zh_CN">RIFF 音频</comment>
+- <comment xml:lang="zh_TW">RIFF 音訊</comment>
++ <comment xml:lang="zh-CN">RIFF 音频</comment>
++ <comment xml:lang="zh-TW">RIFF 音訊</comment>
+ </mime-type>
+ <mime-type type="application/x-riff">
+ <comment>RIFF container</comment>
++ <comment xml:lang="af">RIFF-houer</comment>
++ <comment xml:lang="bg">Контейнер — RIFF</comment>
+ <comment xml:lang="ca">contenidor RIFF</comment>
+ <comment xml:lang="cs">kontejner RIFF</comment>
+ <comment xml:lang="da">RIFF-container</comment>
+ <comment xml:lang="de">RIFF-Container</comment>
+ <comment xml:lang="el">Περιέκτης RIFF</comment>
+- <comment xml:lang="en_GB">RIFF container</comment>
++ <comment xml:lang="en-GB">RIFF container</comment>
+ <comment xml:lang="es">contenedor RIFF</comment>
+ <comment xml:lang="eu">RIFF edukitzailea</comment>
++ <comment xml:lang="fi">RIFF-kontti</comment>
+ <comment xml:lang="fr">conteneur RIFF</comment>
++ <comment xml:lang="fur">contignidôr RIFF</comment>
+ <comment xml:lang="ga">coimeádán RIFF</comment>
+ <comment xml:lang="gl">Contenedor RIFF</comment>
+ <comment xml:lang="he">מכולת RIFF</comment>
+@@ -24520,7 +25419,7 @@
+ <comment xml:lang="oc">contenidor RIFF</comment>
+ <comment xml:lang="pl">Kontener RIFF</comment>
+ <comment xml:lang="pt">contentor RIFF</comment>
+- <comment xml:lang="pt_BR">Contêiner RIFF</comment>
++ <comment xml:lang="pt-BR">Contêiner RIFF</comment>
+ <comment xml:lang="ru">Контейнер RIFF</comment>
+ <comment xml:lang="sk">Kontajner RIFF</comment>
+ <comment xml:lang="sl">Vsebnik RIFF</comment>
+@@ -24528,18 +25427,18 @@
+ <comment xml:lang="sv">RIFF-behållare</comment>
+ <comment xml:lang="tr">RIFF deposu</comment>
+ <comment xml:lang="uk">контейнер RIFF</comment>
+- <comment xml:lang="zh_CN">RIFF 容器</comment>
+- <comment xml:lang="zh_TW">RIFF 容器</comment>
+-
++ <comment xml:lang="zh-CN">RIFF 容器</comment>
++ <comment xml:lang="zh-TW">RIFF 容器</comment>
++ <!-- need to be lower prio than avi -->
+ <magic priority="45">
+- <match value="RIFF" type="string" offset="0"/>
++ <match type="string" value="RIFF" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="audio/x-s3m">
+ <comment>Scream Tracker 3 audio</comment>
+ <comment xml:lang="ar">Scream Tracker 3 سمعي</comment>
+ <comment xml:lang="az">Scream Tracker 3 audio faylı</comment>
+- <comment xml:lang="be@latin">Aŭdyjo Scream Tracker 3</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo Scream Tracker 3</comment>
+ <comment xml:lang="bg">Аудио — Scream Tracker 3</comment>
+ <comment xml:lang="ca">àudio de Scream Tracker 3</comment>
+ <comment xml:lang="cs">skladba Scream Tracker 3</comment>
+@@ -24547,13 +25446,14 @@
+ <comment xml:lang="da">Scream Tracker 3-lyd</comment>
+ <comment xml:lang="de">Scream-Tracker-3-Audio</comment>
+ <comment xml:lang="el">Ήχος Scream Tracker 3</comment>
+- <comment xml:lang="en_GB">Scream Tracker 3 audio</comment>
++ <comment xml:lang="en-GB">Scream Tracker 3 audio</comment>
+ <comment xml:lang="eo">Sondosiero de Scream Tracker 3</comment>
+- <comment xml:lang="es">sonido Scream Tracker 3</comment>
++ <comment xml:lang="es">audio Scream Tracker 3</comment>
+ <comment xml:lang="eu">Scream Tracker 3 audioa</comment>
+ <comment xml:lang="fi">Scream Tracker 3 -ääni</comment>
+ <comment xml:lang="fo">Scream Tracker 3 ljóður</comment>
+ <comment xml:lang="fr">audio Scream Tracker 3</comment>
++ <comment xml:lang="fur">audio Scream Tracker 3</comment>
+ <comment xml:lang="ga">fuaim Scream Tracker 3</comment>
+ <comment xml:lang="gl">son Scream Tracker 3</comment>
+ <comment xml:lang="he">שמע של Scream Tracker 3</comment>
+@@ -24574,7 +25474,7 @@
+ <comment xml:lang="oc">àudio Scream Tracker 3</comment>
+ <comment xml:lang="pl">Plik dźwiękowy Scream Tracker 3</comment>
+ <comment xml:lang="pt">áudio Scream Tracker 3</comment>
+- <comment xml:lang="pt_BR">Áudio Scream Tracker 3</comment>
++ <comment xml:lang="pt-BR">Áudio Scream Tracker 3</comment>
+ <comment xml:lang="ro">Audio Scream Tracker 3</comment>
+ <comment xml:lang="ru">Аудио Scream Tracker 3</comment>
+ <comment xml:lang="sk">Skladba Scream Tracker 3</comment>
+@@ -24585,8 +25485,8 @@
+ <comment xml:lang="tr">Scream Tracker 3 sesi</comment>
+ <comment xml:lang="uk">звук Scream Tracker 3</comment>
+ <comment xml:lang="vi">Âm thanh Scream Tracker 3</comment>
+- <comment xml:lang="zh_CN">Scheme Tracker 3 音频</comment>
+- <comment xml:lang="zh_TW">Scream Tracker 3 音訊</comment>
++ <comment xml:lang="zh-CN">Scheme Tracker 3 音频</comment>
++ <comment xml:lang="zh-TW">Scream Tracker 3 音訊</comment>
+ <magic priority="50">
+ <match value="SCRM" type="string" offset="44"/>
+ </magic>
+@@ -24595,20 +25495,21 @@
+ <mime-type type="audio/x-scpls">
+ <comment>MP3 ShoutCast playlist</comment>
+ <comment xml:lang="ar">قائمة تشغيل MP3 ShoutCast</comment>
+- <comment xml:lang="be@latin">Śpis piesień dla tranślacyi MP3</comment>
++ <comment xml:lang="be-Latn">Śpis piesień dla tranślacyi MP3</comment>
+ <comment xml:lang="bg">Списък за изпълнение — MP3 ShoutCast</comment>
+ <comment xml:lang="ca">llista de reproducció MP3 ShoutCast</comment>
+ <comment xml:lang="cs">seznam k přehrání MP3 ShoutCast</comment>
+ <comment xml:lang="da">MP3 ShoutCast-afspilningsliste</comment>
+ <comment xml:lang="de">MP3-ShoutCast-Wiedergabeliste</comment>
+ <comment xml:lang="el">Λίστα αναπαραγωγής MP3 ShoutCast</comment>
+- <comment xml:lang="en_GB">MP3 ShoutCast playlist</comment>
++ <comment xml:lang="en-GB">MP3 ShoutCast playlist</comment>
+ <comment xml:lang="eo">MP3-ludlisto de ShoutCast</comment>
+ <comment xml:lang="es">lista de reproducción MP3 ShoutCast</comment>
+ <comment xml:lang="eu">MP3 ShoutCast erreprodukzio-zerrenda</comment>
+ <comment xml:lang="fi">MP3 ShoutCast -soittolista</comment>
+ <comment xml:lang="fo">MP3 ShoutCast avspælingarlisti</comment>
+ <comment xml:lang="fr">liste de lecture MP3 ShoutCast</comment>
++ <comment xml:lang="fur">liste di riproduzion MP3 ShoutCast</comment>
+ <comment xml:lang="ga">seinmliosta MP3 ShoutCast</comment>
+ <comment xml:lang="gl">lista de reprodución MP3 de ShoutCast</comment>
+ <comment xml:lang="he">רשימת השמעה MP3 של ShoutCast</comment>
+@@ -24629,7 +25530,7 @@
+ <comment xml:lang="oc">lista de lectura MP3 ShoutCast</comment>
+ <comment xml:lang="pl">Lista odtwarzania MP3 ShoutCast</comment>
+ <comment xml:lang="pt">lista de reprodução MP3 ShoutCast</comment>
+- <comment xml:lang="pt_BR">Lista de reprodução MP3 ShoutCast</comment>
++ <comment xml:lang="pt-BR">Lista de reprodução MP3 ShoutCast</comment>
+ <comment xml:lang="ro">Listă MP3 ShoutCast</comment>
+ <comment xml:lang="ru">Список воспроизведения MP3 ShoutCast</comment>
+ <comment xml:lang="sk">Zoznam skladieb MP3 ShoutCast</comment>
+@@ -24640,14 +25541,14 @@
+ <comment xml:lang="tr">MP3 ShoutCast çalma listesi</comment>
+ <comment xml:lang="uk">список програвання MP3 ShoutCast</comment>
+ <comment xml:lang="vi">Danh mục nhạc MP3 ShoutCast</comment>
+- <comment xml:lang="zh_CN">MP3 ShoutCast 播放列表</comment>
+- <comment xml:lang="zh_TW">MP3 ShoutCast 播放清單</comment>
++ <comment xml:lang="zh-CN">MP3 ShoutCast 播放列表</comment>
++ <comment xml:lang="zh-TW">MP3 ShoutCast 播放清單</comment>
+ <alias type="application/pls"/>
+ <alias type="audio/scpls"/>
+ <magic priority="50">
+- <match value="[playlist]" type="string" offset="0"/>
+- <match value="[Playlist]" type="string" offset="0"/>
+- <match value="[PLAYLIST]" type="string" offset="0"/>
++ <match type="string" value="[playlist]" offset="0"/>
++ <match type="string" value="[Playlist]" offset="0"/>
++ <match type="string" value="[PLAYLIST]" offset="0"/>
+ </magic>
+ <glob pattern="*.pls"/>
+ </mime-type>
+@@ -24655,7 +25556,7 @@
+ <comment>Scream Tracker audio</comment>
+ <comment xml:lang="ar">Scream Tracker سمعي</comment>
+ <comment xml:lang="az">Scream Tracker audio faylı</comment>
+- <comment xml:lang="be@latin">Aŭdyjo Scream Tracker</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo Scream Tracker</comment>
+ <comment xml:lang="bg">Аудио — Scream Tracker</comment>
+ <comment xml:lang="ca">àudio de Scream Tracker</comment>
+ <comment xml:lang="cs">skladba Scream Tracker</comment>
+@@ -24663,13 +25564,14 @@
+ <comment xml:lang="da">Scream Tracker-lyd</comment>
+ <comment xml:lang="de">Scream-Tracker-Audio</comment>
+ <comment xml:lang="el">Ήχος Scream Tracker</comment>
+- <comment xml:lang="en_GB">Scream Tracker audio</comment>
++ <comment xml:lang="en-GB">Scream Tracker audio</comment>
+ <comment xml:lang="eo">Sondosiero de Scream Tracker</comment>
+- <comment xml:lang="es">sonido Scream Tracker</comment>
++ <comment xml:lang="es">audio Scream Tracker</comment>
+ <comment xml:lang="eu">Scream Tracker audioa</comment>
+ <comment xml:lang="fi">Scream Tracker -ääni</comment>
+ <comment xml:lang="fo">Scream Tracker ljóður</comment>
+ <comment xml:lang="fr">audio Scream Tracker</comment>
++ <comment xml:lang="fur">audio Scream Tracker</comment>
+ <comment xml:lang="ga">fuaim Scream Tracker</comment>
+ <comment xml:lang="gl">son Scream Tracker</comment>
+ <comment xml:lang="he">שמע של Scream Tracker</comment>
+@@ -24690,7 +25592,7 @@
+ <comment xml:lang="oc">àudio Scream Tracker</comment>
+ <comment xml:lang="pl">Plik dźwiękowy Scream Tracker</comment>
+ <comment xml:lang="pt">áudio Scream Tracker</comment>
+- <comment xml:lang="pt_BR">Áudio Scream Tracker</comment>
++ <comment xml:lang="pt-BR">Áudio Scream Tracker</comment>
+ <comment xml:lang="ro">Audio Scream Tracker</comment>
+ <comment xml:lang="ru">Аудио Scream Tracker</comment>
+ <comment xml:lang="sk">Skladba Scream Tracker</comment>
+@@ -24701,20 +25603,21 @@
+ <comment xml:lang="tr">Scream Tracker sesi</comment>
+ <comment xml:lang="uk">звук Scream Tracker</comment>
+ <comment xml:lang="vi">Âm thanh Scream Tracker</comment>
+- <comment xml:lang="zh_CN">Scream Tracker 音频</comment>
+- <comment xml:lang="zh_TW">Scream Tracker 音訊</comment>
++ <comment xml:lang="zh-CN">Scream Tracker 音频</comment>
++ <comment xml:lang="zh-TW">Scream Tracker 音訊</comment>
+ <magic>
+- <match value="!Scream!\x1A" type="string" offset="20"/>
+- <match value="!SCREAM!\x1A" type="string" offset="20"/>
+- <match value="BMOD2STM\x1A" type="string" offset="20"/>
++ <match type="string" value="!Scream!\x1A" offset="20"/>
++ <match type="string" value="!SCREAM!\x1A" offset="20"/>
++ <match type="string" value="BMOD2STM\x1A" offset="20"/>
+ </magic>
+ <glob pattern="*.stm"/>
+ </mime-type>
+ <mime-type type="audio/x-voc">
+ <comment>VOC audio</comment>
++ <comment xml:lang="af">VOC-oudio</comment>
+ <comment xml:lang="ar">VOC سمعي</comment>
+ <comment xml:lang="az">VOC audio faylı</comment>
+- <comment xml:lang="be@latin">Aŭdyjo VOC</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo VOC</comment>
+ <comment xml:lang="bg">Аудио — VOC</comment>
+ <comment xml:lang="ca">àudio VOC</comment>
+ <comment xml:lang="cs">zvuk VOC</comment>
+@@ -24722,13 +25625,14 @@
+ <comment xml:lang="da">VOC-lyd</comment>
+ <comment xml:lang="de">VOC-Audio</comment>
+ <comment xml:lang="el">Ήχος VOC</comment>
+- <comment xml:lang="en_GB">VOC audio</comment>
++ <comment xml:lang="en-GB">VOC audio</comment>
+ <comment xml:lang="eo">VOC-sondosiero</comment>
+- <comment xml:lang="es">sonido VOC</comment>
++ <comment xml:lang="es">audio VOC</comment>
+ <comment xml:lang="eu">VOC audioa</comment>
+ <comment xml:lang="fi">VOC-ääni</comment>
+ <comment xml:lang="fo">VOC ljóður</comment>
+ <comment xml:lang="fr">audio VOC</comment>
++ <comment xml:lang="fur">audio VOC</comment>
+ <comment xml:lang="ga">fuaim VOC</comment>
+ <comment xml:lang="gl">son VOC</comment>
+ <comment xml:lang="he">שמע VOC</comment>
+@@ -24749,7 +25653,7 @@
+ <comment xml:lang="oc">àudio VOC</comment>
+ <comment xml:lang="pl">Plik dźwiękowy VOC</comment>
+ <comment xml:lang="pt">áudio VOC</comment>
+- <comment xml:lang="pt_BR">Áudio VOC</comment>
++ <comment xml:lang="pt-BR">Áudio VOC</comment>
+ <comment xml:lang="ro">Audio VOC</comment>
+ <comment xml:lang="ru">Аудио VOC</comment>
+ <comment xml:lang="sk">Zvuk VOC</comment>
+@@ -24760,15 +25664,16 @@
+ <comment xml:lang="tr">VOC sesi</comment>
+ <comment xml:lang="uk">звук VOC</comment>
+ <comment xml:lang="vi">Âm thanh VOC</comment>
+- <comment xml:lang="zh_CN">VOC 音频</comment>
+- <comment xml:lang="zh_TW">VOC 音訊</comment>
++ <comment xml:lang="zh-CN">VOC 音频</comment>
++ <comment xml:lang="zh-TW">VOC 音訊</comment>
+ <glob pattern="*.voc"/>
+ </mime-type>
+ <mime-type type="audio/x-wav">
+ <comment>WAV audio</comment>
++ <comment xml:lang="af">WAV-oudio</comment>
+ <comment xml:lang="ar">WAV سمعي</comment>
+ <comment xml:lang="az">WAV audio faylı</comment>
+- <comment xml:lang="be@latin">Aŭdyjo WAV</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo WAV</comment>
+ <comment xml:lang="bg">Аудио — WAV</comment>
+ <comment xml:lang="ca">àudio WAV</comment>
+ <comment xml:lang="cs">zvuk WAV</comment>
+@@ -24776,13 +25681,14 @@
+ <comment xml:lang="da">WAV-lyd</comment>
+ <comment xml:lang="de">WAV-Audio</comment>
+ <comment xml:lang="el">Ήχος WAV</comment>
+- <comment xml:lang="en_GB">WAV audio</comment>
++ <comment xml:lang="en-GB">WAV audio</comment>
+ <comment xml:lang="eo">WAV-sonkodo</comment>
+- <comment xml:lang="es">sonido WAV</comment>
++ <comment xml:lang="es">audio WAV</comment>
+ <comment xml:lang="eu">WAV audioa</comment>
+ <comment xml:lang="fi">WAV-ääni</comment>
+ <comment xml:lang="fo">WAV ljóður</comment>
+ <comment xml:lang="fr">audio WAV</comment>
++ <comment xml:lang="fur">audio WAV</comment>
+ <comment xml:lang="ga">fuaim WAV</comment>
+ <comment xml:lang="gl">son WAV</comment>
+ <comment xml:lang="he">שמע WAV</comment>
+@@ -24803,7 +25709,7 @@
+ <comment xml:lang="oc">àudio WAV</comment>
+ <comment xml:lang="pl">Plik dźwiękowy WAV</comment>
+ <comment xml:lang="pt">áudio WAV</comment>
+- <comment xml:lang="pt_BR">Áudio WAV</comment>
++ <comment xml:lang="pt-BR">Áudio WAV</comment>
+ <comment xml:lang="ro">Audio WAV</comment>
+ <comment xml:lang="ru">Аудио WAV</comment>
+ <comment xml:lang="sk">Zvuk WAV</comment>
+@@ -24814,13 +25720,13 @@
+ <comment xml:lang="tr">WAV sesi</comment>
+ <comment xml:lang="uk">звук WAV</comment>
+ <comment xml:lang="vi">Âm thanh WAV</comment>
+- <comment xml:lang="zh_CN">WAV 音频</comment>
+- <comment xml:lang="zh_TW">WAV 音訊</comment>
++ <comment xml:lang="zh-CN">WAV 音频</comment>
++ <comment xml:lang="zh-TW">WAV 音訊</comment>
+ <alias type="audio/wav"/>
+ <alias type="audio/vnd.wave"/>
+ <magic priority="50">
+- <match value="WAVE" type="string" offset="8"/>
+- <match value="WAV " type="string" offset="8"/>
++ <match type="string" value="WAVE" offset="8"/>
++ <match type="string" value="WAV " offset="8"/>
+ </magic>
+ <glob pattern="*.wav"/>
+ </mime-type>
+@@ -24828,7 +25734,7 @@
+ <comment>Scream Tracker instrument</comment>
+ <comment xml:lang="ar">آلة Scream Tracker</comment>
+ <comment xml:lang="az">Scream Tracker instrumenti</comment>
+- <comment xml:lang="be@latin">Instrument Scream Tracker</comment>
++ <comment xml:lang="be-Latn">Instrument Scream Tracker</comment>
+ <comment xml:lang="bg">Инструмент — Scream Tracker</comment>
+ <comment xml:lang="ca">instrument de Scream Tracker</comment>
+ <comment xml:lang="cs">nástroj pro Scream Tracker</comment>
+@@ -24836,13 +25742,14 @@
+ <comment xml:lang="da">Scream Tracker-instrument</comment>
+ <comment xml:lang="de">Scream-Tracker-Instrument</comment>
+ <comment xml:lang="el">Μουσικό όργανο Scream Tracker</comment>
+- <comment xml:lang="en_GB">Scream Tracker instrument</comment>
++ <comment xml:lang="en-GB">Scream Tracker instrument</comment>
+ <comment xml:lang="eo">instrumento de Scream Tracker</comment>
+ <comment xml:lang="es">instrumento Scream Tracker</comment>
+ <comment xml:lang="eu">Scream Tracker instrumentua</comment>
+ <comment xml:lang="fi">Scream Tracker -soitin</comment>
+ <comment xml:lang="fo">Scream Tracker ljóðføri</comment>
+ <comment xml:lang="fr">instrument Scream Tracker</comment>
++ <comment xml:lang="fur">strument Scream Tracker</comment>
+ <comment xml:lang="ga">ionstraim Scream Tracker</comment>
+ <comment xml:lang="gl">Instrumento Scream Tracker</comment>
+ <comment xml:lang="he">כלי של Scream Tracker</comment>
+@@ -24863,7 +25770,7 @@
+ <comment xml:lang="oc">instrument Scream Tracker</comment>
+ <comment xml:lang="pl">Instrument Scream Tracker</comment>
+ <comment xml:lang="pt">instrumento Scream Tracker</comment>
+- <comment xml:lang="pt_BR">Instrumento Scream Tracker</comment>
++ <comment xml:lang="pt-BR">Instrumento Scream Tracker</comment>
+ <comment xml:lang="ro">Instrument Scream Tracker</comment>
+ <comment xml:lang="ru">Инструмент Scream Tracker</comment>
+ <comment xml:lang="sk">Nástroj pre Scream Tracker</comment>
+@@ -24874,8 +25781,8 @@
+ <comment xml:lang="tr">Scream Tracker çalgısı</comment>
+ <comment xml:lang="uk">інструмент Scream Tracker</comment>
+ <comment xml:lang="vi">Nhạc khí Scream Tracker</comment>
+- <comment xml:lang="zh_CN">Scream Tracker 乐器</comment>
+- <comment xml:lang="zh_TW">Scream Tracker 樂器檔</comment>
++ <comment xml:lang="zh-CN">Scream Tracker 乐器</comment>
++ <comment xml:lang="zh-TW">Scream Tracker 樂器檔</comment>
+ <magic priority="50">
+ <match value="Extended Instrument:" type="string" offset="0"/>
+ </magic>
+@@ -24885,7 +25792,7 @@
+ <comment>FastTracker II audio</comment>
+ <comment xml:lang="ar">FastTracker II سمعي</comment>
+ <comment xml:lang="az">FastTracker II audio faylı</comment>
+- <comment xml:lang="be@latin">Aŭdyjo FastTracker II</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo FastTracker II</comment>
+ <comment xml:lang="bg">Аудио — FastTracker II</comment>
+ <comment xml:lang="ca">àudio de FastTracker II</comment>
+ <comment xml:lang="cs">zvuk FastTracker II</comment>
+@@ -24893,13 +25800,14 @@
+ <comment xml:lang="da">FastTracker II-lyd</comment>
+ <comment xml:lang="de">FastTracker-II-Audio</comment>
+ <comment xml:lang="el">Ήχος FastTracker II</comment>
+- <comment xml:lang="en_GB">FastTracker II audio</comment>
++ <comment xml:lang="en-GB">FastTracker II audio</comment>
+ <comment xml:lang="eo">Sondosiero de FastTracker II</comment>
+- <comment xml:lang="es">sonido FastTracker II</comment>
++ <comment xml:lang="es">audio FastTracker II</comment>
+ <comment xml:lang="eu">FastTracker II.ren audioa</comment>
+ <comment xml:lang="fi">FastTracker II -ääni</comment>
+ <comment xml:lang="fo">FastTracker II ljóður</comment>
+ <comment xml:lang="fr">audio FastTracker II</comment>
++ <comment xml:lang="fur">audio FastTracker II</comment>
+ <comment xml:lang="ga">fuaim FastTracker II</comment>
+ <comment xml:lang="gl">son de FastTracker II</comment>
+ <comment xml:lang="he">שמע FastTracker II</comment>
+@@ -24921,7 +25829,7 @@
+ <comment xml:lang="oc">àudio FastTracker II</comment>
+ <comment xml:lang="pl">Plik dźwiękowy FastTracker II</comment>
+ <comment xml:lang="pt">áudio FastTracker II</comment>
+- <comment xml:lang="pt_BR">Áudio FastTracker II</comment>
++ <comment xml:lang="pt-BR">Áudio FastTracker II</comment>
+ <comment xml:lang="ro">Audio FastTracker II</comment>
+ <comment xml:lang="ru">Аудио FastTracker II</comment>
+ <comment xml:lang="sk">Zvuk FastTracker II</comment>
+@@ -24932,8 +25840,8 @@
+ <comment xml:lang="tr">FastTracker II sesi</comment>
+ <comment xml:lang="uk">звук FastTracker II</comment>
+ <comment xml:lang="vi">Âm thanh FastTracker II</comment>
+- <comment xml:lang="zh_CN">FastTracker II 音频</comment>
+- <comment xml:lang="zh_TW">FastTracker II 音訊</comment>
++ <comment xml:lang="zh-CN">FastTracker II 音频</comment>
++ <comment xml:lang="zh-TW">FastTracker II 音訊</comment>
+ <magic priority="50">
+ <match value="Extended Module:" type="string" offset="0"/>
+ </magic>
+@@ -24941,21 +25849,23 @@
+ </mime-type>
+ <mime-type type="audio/x-tta">
+ <comment>TrueAudio audio</comment>
++ <comment xml:lang="af">TrueAudio-oudio</comment>
+ <comment xml:lang="ar">TrueAudio سمعي</comment>
+- <comment xml:lang="be@latin">Aŭdyjo TrueAudio</comment>
++ <comment xml:lang="be-Latn">Aŭdyjo TrueAudio</comment>
+ <comment xml:lang="bg">Аудио — TrueAudio</comment>
+- <comment xml:lang="ca">àudio de TrueAudio</comment>
++ <comment xml:lang="ca">àudio TrueAudio</comment>
+ <comment xml:lang="cs">zvuk TrueAudio</comment>
+ <comment xml:lang="da">TrueAudio-lyd</comment>
+ <comment xml:lang="de">TrueAudio-Audio</comment>
+ <comment xml:lang="el">Ήχος TrueAudio</comment>
+- <comment xml:lang="en_GB">TrueAudio audio</comment>
++ <comment xml:lang="en-GB">TrueAudio audio</comment>
+ <comment xml:lang="eo">TrueAudio-sondosiero</comment>
+- <comment xml:lang="es">sonido TrueAudio</comment>
++ <comment xml:lang="es">audio TrueAudio</comment>
+ <comment xml:lang="eu">TrueAudio audioa</comment>
+ <comment xml:lang="fi">TrueAudio-ääni</comment>
+ <comment xml:lang="fo">TrueAudio ljóður</comment>
+ <comment xml:lang="fr">audio TrueAudio</comment>
++ <comment xml:lang="fur">audio TrueAudio</comment>
+ <comment xml:lang="ga">fuaim TrueAudio</comment>
+ <comment xml:lang="gl">son Trueson</comment>
+ <comment xml:lang="he">שמע TrueAudio</comment>
+@@ -24975,7 +25885,7 @@
+ <comment xml:lang="oc">àudio TrueAudio</comment>
+ <comment xml:lang="pl">Plik dźwiękowy TrueAudio</comment>
+ <comment xml:lang="pt">áudio TrueAudio</comment>
+- <comment xml:lang="pt_BR">Áudio TrueAudio</comment>
++ <comment xml:lang="pt-BR">Áudio TrueAudio</comment>
+ <comment xml:lang="ro">Audio TrueAudio</comment>
+ <comment xml:lang="ru">Аудио TrueAudio</comment>
+ <comment xml:lang="sk">Zvuk TrueAudio</comment>
+@@ -24986,8 +25896,8 @@
+ <comment xml:lang="tr">TrueAudio sesi</comment>
+ <comment xml:lang="uk">звук TrueAudio</comment>
+ <comment xml:lang="vi">Âm thanh TrueAudio</comment>
+- <comment xml:lang="zh_CN">TrueAudio 音频</comment>
+- <comment xml:lang="zh_TW">TrueAudio 音訊</comment>
++ <comment xml:lang="zh-CN">TrueAudio 音频</comment>
++ <comment xml:lang="zh-TW">TrueAudio 音訊</comment>
+ <alias type="audio/tta"/>
+ <magic priority="50">
+ <match value="TTA1" type="string" offset="0"/>
+@@ -24996,9 +25906,10 @@
+ </mime-type>
+ <mime-type type="image/bmp">
+ <comment>Windows BMP image</comment>
++ <comment xml:lang="af">Windows BMP-beeld</comment>
+ <comment xml:lang="ar">صورة Windows BMP</comment>
+ <comment xml:lang="az">Windows BMP rəsmi</comment>
+- <comment xml:lang="be@latin">Vyjava Windows BMP</comment>
++ <comment xml:lang="be-Latn">Vyjava Windows BMP</comment>
+ <comment xml:lang="bg">Изображение — Windows BMP</comment>
+ <comment xml:lang="ca">imatge BMP de Windows</comment>
+ <comment xml:lang="cs">obrázek Windows BMP</comment>
+@@ -25006,13 +25917,14 @@
+ <comment xml:lang="da">Windows BMP-billede</comment>
+ <comment xml:lang="de">Windows-BMP-Bild</comment>
+ <comment xml:lang="el">Εικόνα Windows BMP</comment>
+- <comment xml:lang="en_GB">Windows BMP image</comment>
++ <comment xml:lang="en-GB">Windows BMP image</comment>
+ <comment xml:lang="eo">BMP-bildo de Vindozo</comment>
+ <comment xml:lang="es">imagen BMP de Windows</comment>
+ <comment xml:lang="eu">Windows BMP irudia</comment>
+ <comment xml:lang="fi">Windows BMP -kuva</comment>
+ <comment xml:lang="fo">Windows BMP mynd</comment>
+ <comment xml:lang="fr">image Windows BMP</comment>
++ <comment xml:lang="fur">imagjin Windows BMP</comment>
+ <comment xml:lang="ga">íomhá BMP Windows</comment>
+ <comment xml:lang="gl">imaxe BMP de Windows</comment>
+ <comment xml:lang="he">תמונת BMP של Windows</comment>
+@@ -25033,7 +25945,7 @@
+ <comment xml:lang="oc">imatge Windows BMP</comment>
+ <comment xml:lang="pl">Obraz BMP Windows</comment>
+ <comment xml:lang="pt">imagem BMP Windows</comment>
+- <comment xml:lang="pt_BR">Imagem BMP do Windows</comment>
++ <comment xml:lang="pt-BR">Imagem BMP do Windows</comment>
+ <comment xml:lang="ro">Imagine Windows BMP</comment>
+ <comment xml:lang="ru">Изображение Windows BMP</comment>
+ <comment xml:lang="sk">Obrázok Windows BMP</comment>
+@@ -25044,14 +25956,14 @@
+ <comment xml:lang="tr">Windows BMP görüntüsü</comment>
+ <comment xml:lang="uk">зображення Windows BMP</comment>
+ <comment xml:lang="vi">Ảnh BMP Windows</comment>
+- <comment xml:lang="zh_CN">Windows BMP 图像</comment>
+- <comment xml:lang="zh_TW">Windows BMP 影像</comment>
+- <magic priority="50">
+- <match value="BMxxxx\000\000" type="string" offset="0" mask="0xffff00000000ffff"/>
+- <match value="BM" type="string" offset="0">
+- <match value="12" type="byte" offset="14"/>
+- <match value="64" type="byte" offset="14"/>
+- <match value="40" type="byte" offset="14"/>
++ <comment xml:lang="zh-CN">Windows BMP 图像</comment>
++ <comment xml:lang="zh-TW">Windows BMP 影像</comment>
++ <magic priority="50">
++ <match type="string" mask="0xffff00000000ffff" value="BMxxxx\000\000" offset="0"/>
++ <match type="string" value="BM" offset="0">
++ <match type="byte" value="12" offset="14"/>
++ <match type="byte" value="64" offset="14"/>
++ <match type="byte" value="40" offset="14"/>
+ </match>
+ </magic>
+ <glob pattern="*.bmp"/>
+@@ -25061,21 +25973,23 @@
+ </mime-type>
+ <mime-type type="image/vnd.wap.wbmp">
+ <comment>WBMP image</comment>
++ <comment xml:lang="af">WBMP-beeld</comment>
+ <comment xml:lang="ar">صورة WBMP</comment>
+- <comment xml:lang="be@latin">Vyjava WBMP</comment>
++ <comment xml:lang="be-Latn">Vyjava WBMP</comment>
+ <comment xml:lang="bg">Изображение — WBMP</comment>
+ <comment xml:lang="ca">imatge WBMP</comment>
+ <comment xml:lang="cs">obrázek WBMP</comment>
+ <comment xml:lang="da">WBMP-billede</comment>
+ <comment xml:lang="de">WBMP-Bild</comment>
+ <comment xml:lang="el">Εικόνα WBMP</comment>
+- <comment xml:lang="en_GB">WBMP image</comment>
++ <comment xml:lang="en-GB">WBMP image</comment>
+ <comment xml:lang="eo">WBMP-bildo</comment>
+ <comment xml:lang="es">imagen WBMP</comment>
+ <comment xml:lang="eu">WBMP irudia</comment>
+ <comment xml:lang="fi">WBMP-kuva</comment>
+ <comment xml:lang="fo">WBMP mynd</comment>
+ <comment xml:lang="fr">image WBMP</comment>
++ <comment xml:lang="fur">imagjin WBMP</comment>
+ <comment xml:lang="ga">íomhá WBMP</comment>
+ <comment xml:lang="gl">imaxe WBMP</comment>
+ <comment xml:lang="he">תמונת WBMP</comment>
+@@ -25095,7 +26009,7 @@
+ <comment xml:lang="oc">imatge WBMP</comment>
+ <comment xml:lang="pl">Obraz WBMP</comment>
+ <comment xml:lang="pt">imagem WBMP</comment>
+- <comment xml:lang="pt_BR">Imagem WBMP</comment>
++ <comment xml:lang="pt-BR">Imagem WBMP</comment>
+ <comment xml:lang="ro">Imagine WBMP</comment>
+ <comment xml:lang="ru">Изображение WBMP</comment>
+ <comment xml:lang="sk">Obrázok WBMP</comment>
+@@ -25106,177 +26020,77 @@
+ <comment xml:lang="tr">WBMP görüntüsü</comment>
+ <comment xml:lang="uk">зображення WBMP</comment>
+ <comment xml:lang="vi">Ảnh WBMP</comment>
+- <comment xml:lang="zh_CN">WBMP 图像</comment>
+- <comment xml:lang="zh_TW">WBMP 影像</comment>
++ <comment xml:lang="zh-CN">WBMP 图像</comment>
++ <comment xml:lang="zh-TW">WBMP 影像</comment>
+ <acronym>WBMP</acronym>
+ <expanded-acronym>WAP bitmap</expanded-acronym>
+ <glob pattern="*.wbmp"/>
+ </mime-type>
+ <mime-type type="image/cgm">
+- <comment>Computer Graphics Metafile</comment>
+- <comment xml:lang="ar">ملف تعريف رسوميات الحاسوب</comment>
+- <comment xml:lang="az">Kompüter Qrafikası Meta Faylı</comment>
+- <comment xml:lang="be@latin">Metafajł Computer Graphics</comment>
+- <comment xml:lang="bg">Метафайл — Computer Graphics</comment>
+- <comment xml:lang="ca">metafitxer de Computer Graphics</comment>
+- <comment xml:lang="cs">Computer Graphics Metafile</comment>
+- <comment xml:lang="cy">Delwedd ffurf CGM</comment>
+- <comment xml:lang="da">Computer Graphics-metafil</comment>
+- <comment xml:lang="de">CGM-Datei</comment>
+- <comment xml:lang="el">Αρχείο Computer Graphics Metafile</comment>
+- <comment xml:lang="en_GB">Computer Graphics Metafile</comment>
+- <comment xml:lang="es">metaarchivo de Computer Graphics</comment>
+- <comment xml:lang="eu">Ordenagailuko grafikoen meta-fitxategia</comment>
+- <comment xml:lang="fi">Computer Graphics -metatiedosto</comment>
+- <comment xml:lang="fo">Teldugrafikk metafíla</comment>
+- <comment xml:lang="fr">métafichier Computer Graphics</comment>
+- <comment xml:lang="ga">Meiteachomhad Grafaicí Ríomhaire</comment>
+- <comment xml:lang="gl">metaficheiro de Computer Graphics</comment>
+- <comment xml:lang="he">קובץ-מטה מסוג Computer Graphics</comment>
+- <comment xml:lang="hr">Computer Graphics meta datoteka</comment>
+- <comment xml:lang="hu">Computer Graphics-metafájl</comment>
+- <comment xml:lang="ia">Metafile Computer Graphics</comment>
+- <comment xml:lang="id">Computer Graphics Metafile</comment>
+- <comment xml:lang="it">Computer Graphics Metafile</comment>
+- <comment xml:lang="ja">コンピューターグラフィックメタファイル</comment>
+- <comment xml:lang="kk">компьютерлік графика метафайлы</comment>
+- <comment xml:lang="ko">컴퓨터 그래픽스 메타 파일</comment>
+- <comment xml:lang="lt">Computer Graphics metafailas</comment>
+- <comment xml:lang="lv">Datorgrafikas metadatne</comment>
+- <comment xml:lang="ms">Failmeta Grafik Komputer</comment>
+- <comment xml:lang="nb">Computer Graphics Metafile</comment>
+- <comment xml:lang="nl">Computer Graphics-metabestand</comment>
+- <comment xml:lang="nn">Computer Graphics Metafile</comment>
+- <comment xml:lang="oc">metafichièr Computer Graphics</comment>
+- <comment xml:lang="pl">Metaplik grafiki komputerowej (CGM)</comment>
+- <comment xml:lang="pt">metaficheiro Computer Graphics</comment>
+- <comment xml:lang="pt_BR">Meta-arquivo do Computer Graphics</comment>
+- <comment xml:lang="ro">Metafișier Computer Graphics</comment>
+- <comment xml:lang="ru">Метафайл компьютерной графики</comment>
+- <comment xml:lang="sk">Computer Graphics Metafile</comment>
+- <comment xml:lang="sl">Metadatoteka računalniške grafike (CGM)</comment>
+- <comment xml:lang="sq">Metafile Computer Graphics</comment>
+- <comment xml:lang="sr">Метадатотека рачунарске графике</comment>
+- <comment xml:lang="sv">Computer Graphics Metafil</comment>
+- <comment xml:lang="tr">Computer Graphics Meta dosyası</comment>
+- <comment xml:lang="uk">метафайл комп'ютерної графіки</comment>
+- <comment xml:lang="vi">Siêu tập tin đồ họa máy tính (CMF)</comment>
+- <comment xml:lang="zh_CN">计算机图形图元文件 (CGM)</comment>
+- <comment xml:lang="zh_TW">CGM 影像</comment>
++ <comment>CGM image</comment>
++ <comment xml:lang="bg">Изображение — CGM</comment>
++ <comment xml:lang="ca">imatge CGM</comment>
++ <comment xml:lang="da">CGM-billede</comment>
++ <comment xml:lang="de">CGM-Bild</comment>
++ <comment xml:lang="en-GB">CGM image</comment>
++ <comment xml:lang="es">imagen CGM</comment>
++ <comment xml:lang="eu">CGM irudia</comment>
++ <comment xml:lang="fi">CGM-kuva</comment>
++ <comment xml:lang="fr">image CGM</comment>
++ <comment xml:lang="hr">CGM slika</comment>
++ <comment xml:lang="hu">CGM-kép</comment>
++ <comment xml:lang="id">Citra CGM</comment>
++ <comment xml:lang="it">Immagine CGM</comment>
++ <comment xml:lang="kk">CGM суреті</comment>
++ <comment xml:lang="ko">CGM 이미지</comment>
++ <comment xml:lang="pl">Obraz CGM</comment>
++ <comment xml:lang="pt-BR">Imagem CGM</comment>
++ <comment xml:lang="ru">Изображение CGM</comment>
++ <comment xml:lang="sk">Obrázok CGM</comment>
++ <comment xml:lang="sl">Slika CGM</comment>
++ <comment xml:lang="sv">CGM-bild</comment>
++ <comment xml:lang="tr">CGM görüntüsü</comment>
++ <comment xml:lang="uk">зображення CGM</comment>
++ <comment xml:lang="zh-CN">CGM 图像</comment>
++ <comment xml:lang="zh-TW">CGM 影像</comment>
++ <acronym>CGM</acronym>
++ <expanded-acronym>Computer Graphics Metafile</expanded-acronym>
+ <glob pattern="*.cgm"/>
+ </mime-type>
+- <mime-type type="image/fax-g3">
+- <comment>CCITT G3 fax</comment>
+- <comment xml:lang="ar">فاكس CCITT G3</comment>
+- <comment xml:lang="be@latin">Faks CCITT G3</comment>
+- <comment xml:lang="bg">Факс — CCITT G3</comment>
+- <comment xml:lang="ca">fax CCITT G3</comment>
+- <comment xml:lang="cs">fax CCITT G3</comment>
+- <comment xml:lang="da">CCITT G3-fax</comment>
+- <comment xml:lang="de">CCITT-G3-Fax</comment>
+- <comment xml:lang="el">φαξ σε μορφή CCITT G3</comment>
+- <comment xml:lang="en_GB">CCITT G3 fax</comment>
+- <comment xml:lang="eo">G3-fakso de CCITT</comment>
+- <comment xml:lang="es">fax de CCITT G3</comment>
+- <comment xml:lang="eu">CCITT G3 faxa</comment>
+- <comment xml:lang="fi">CCITT G3 -faksi</comment>
+- <comment xml:lang="fo">CCITT G3 telefaks</comment>
+- <comment xml:lang="fr">télécopie G3 CCITT</comment>
+- <comment xml:lang="ga">facs CCITT G3</comment>
+- <comment xml:lang="gl">fax de CCITT G3</comment>
+- <comment xml:lang="he">פקס של CCITT G3</comment>
+- <comment xml:lang="hr">CCITT G3 faks</comment>
+- <comment xml:lang="hu">CCITT G3-fax</comment>
+- <comment xml:lang="ia">Fax CCITT G3</comment>
+- <comment xml:lang="id">Faks CCITT G3</comment>
+- <comment xml:lang="it">Fax CCITT G3</comment>
+- <comment xml:lang="ja">CCITT G3 FAX</comment>
+- <comment xml:lang="ka">CCITT G3 ფაქსი</comment>
+- <comment xml:lang="kk">CCITT G3 факсі</comment>
+- <comment xml:lang="ko">CCITT G3 팩스</comment>
+- <comment xml:lang="lt">CCITT G3 faksas</comment>
+- <comment xml:lang="lv">CCITT G3 fakss</comment>
+- <comment xml:lang="ms">Faks g3 CCITT</comment>
+- <comment xml:lang="nb">CCITT G3-faks</comment>
+- <comment xml:lang="nl">CCITT G3-fax</comment>
+- <comment xml:lang="nn">CCITT G3-fax</comment>
+- <comment xml:lang="oc">telecòpia G3 CCITT</comment>
+- <comment xml:lang="pl">Faks CCITT G3</comment>
+- <comment xml:lang="pt">fax CCITT G3</comment>
+- <comment xml:lang="pt_BR">Fax do CCITT G3</comment>
+- <comment xml:lang="ro">Fax CCITT G3</comment>
+- <comment xml:lang="ru">Факс CCITT G3</comment>
+- <comment xml:lang="sk">Fax CCITT G3</comment>
+- <comment xml:lang="sl">Datoteka faksimila CCITT G3</comment>
+- <comment xml:lang="sq">Fax CCITT G3</comment>
+- <comment xml:lang="sr">ЦЦИТТ Г3 факс</comment>
+- <comment xml:lang="sv">CCITT G3-fax</comment>
+- <comment xml:lang="tr">CCITT G3 faksı</comment>
+- <comment xml:lang="uk">факс CCITT G3</comment>
+- <comment xml:lang="vi">Điện thư G3 CCITT</comment>
+- <comment xml:lang="zh_CN">CCITT G3 传真</comment>
+- <comment xml:lang="zh_TW">CCITT G3 傳真檔</comment>
+- <glob pattern="*.g3"/>
+- </mime-type>
+ <mime-type type="image/g3fax">
+- <comment>G3 fax image</comment>
+- <comment xml:lang="ar">صورة فاكس G3</comment>
+- <comment xml:lang="az">G3 faks rəsmi</comment>
+- <comment xml:lang="be@latin">Faksavaja vyjava G3</comment>
+- <comment xml:lang="bg">Изображение — факс G3</comment>
+- <comment xml:lang="ca">imatge de fax G3</comment>
+- <comment xml:lang="cs">faxový obrázek G3</comment>
+- <comment xml:lang="cy">Delwedd Ffacs G3</comment>
+- <comment xml:lang="da">G3-faxbillede</comment>
+- <comment xml:lang="de">G3-Faxbild</comment>
+- <comment xml:lang="el">Εικόνα φαξ G3</comment>
+- <comment xml:lang="en_GB">G3 fax image</comment>
+- <comment xml:lang="eo">G3-faksbildo</comment>
+- <comment xml:lang="es">imagen de fax G3</comment>
+- <comment xml:lang="eu">G3 fax-irudia</comment>
+- <comment xml:lang="fi">G3-faksikuva</comment>
+- <comment xml:lang="fo">G3 fax mynd</comment>
+- <comment xml:lang="fr">image de télécopie G3</comment>
+- <comment xml:lang="ga">íomhá fhacs G3</comment>
+- <comment xml:lang="gl">imaxe de fax G3</comment>
+- <comment xml:lang="he">תמונת פקס של G3</comment>
+- <comment xml:lang="hr">G3 slika faksa</comment>
+- <comment xml:lang="hu">G3-faxkép</comment>
+- <comment xml:lang="ia">Imagine de fax G3</comment>
+- <comment xml:lang="id">Citra faks G3</comment>
+- <comment xml:lang="it">Immagine fax G3</comment>
+- <comment xml:lang="ja">G3 FAX 画像</comment>
+- <comment xml:lang="ka">G3 fax გამოსახულება</comment>
+- <comment xml:lang="kk">G3 факс суреті</comment>
+- <comment xml:lang="ko">G3 팩스 그림</comment>
+- <comment xml:lang="lt">G3 fax paveikslėlis</comment>
+- <comment xml:lang="lv">G3 faksa attēls</comment>
+- <comment xml:lang="ms">Imej fax G3</comment>
+- <comment xml:lang="nb">G3-faksbilde</comment>
+- <comment xml:lang="nl">G3 faxafbeelding</comment>
+- <comment xml:lang="nn">G3 faksbilete</comment>
+- <comment xml:lang="oc">imatge de telecòpia G3</comment>
+- <comment xml:lang="pl">Obraz faksowy G3</comment>
+- <comment xml:lang="pt">imagem de fax G3</comment>
+- <comment xml:lang="pt_BR">Imagem de fax G3</comment>
+- <comment xml:lang="ro">Imagine fax G3</comment>
+- <comment xml:lang="ru">Факсовое изображение G3</comment>
+- <comment xml:lang="sk">Obrázok fax G3</comment>
+- <comment xml:lang="sl">Slikovna datoteka G3 fax</comment>
+- <comment xml:lang="sq">Figurë Fax G3</comment>
+- <comment xml:lang="sr">слика Г3 факса</comment>
+- <comment xml:lang="sv">G3-faxbild</comment>
+- <comment xml:lang="tr">G3 fax görüntüsü</comment>
+- <comment xml:lang="uk">факс G3</comment>
+- <comment xml:lang="vi">Ảnh điện thư G3</comment>
+- <comment xml:lang="zh_CN">G3 传真图像</comment>
+- <comment xml:lang="zh_TW">G3 傳真圖</comment>
++ <comment>CCITT G3 fax image</comment>
++ <comment xml:lang="bg">Изображение — CCITT G3, факс</comment>
++ <comment xml:lang="ca">imatge de fax CCITT G3</comment>
++ <comment xml:lang="da">CCITT G3-faxbillede</comment>
++ <comment xml:lang="de">CCITT-G3-Faxbild</comment>
++ <comment xml:lang="en-GB">CCITT G3 fax image</comment>
++ <comment xml:lang="es">imagen de fax CCITT G3</comment>
++ <comment xml:lang="eu">CCITT G3 fax irudia</comment>
++ <comment xml:lang="fi">CCITT G3 -faksikuva</comment>
++ <comment xml:lang="fr">image de télécopie CCITT G3</comment>
++ <comment xml:lang="hr">CCITT G3 slika faksa</comment>
++ <comment xml:lang="hu">CCITT G3-faxkép</comment>
++ <comment xml:lang="id">Citra faks CCITT G3</comment>
++ <comment xml:lang="it">Immagine fax CCIT G3</comment>
++ <comment xml:lang="kk">CCITT G3 факс суреті</comment>
++ <comment xml:lang="ko">CCITT G3 팩스 이미지</comment>
++ <comment xml:lang="pl">Obraz faksowy G3 CCITT</comment>
++ <comment xml:lang="pt-BR">Imagem de fax CCITT G3</comment>
++ <comment xml:lang="ru">Факсовое изображение CCITT G3</comment>
++ <comment xml:lang="sv">CCITT G3 faxbild</comment>
++ <comment xml:lang="tr">CCITT G3 faks görüntüsü</comment>
++ <comment xml:lang="uk">зображення факсу G3 CCITT</comment>
++ <comment xml:lang="zh-CN">CCITT G3 传真图像</comment>
++ <comment xml:lang="zh-TW">CCITT G3 傳真影像</comment>
++ <glob pattern="*.g3"/>
++ <alias type="image/fax-g3"/>
+ </mime-type>
+ <mime-type type="image/gif">
+ <comment>GIF image</comment>
++ <comment xml:lang="af">GIF-beeld</comment>
+ <comment xml:lang="ar">صورة GIF</comment>
+ <comment xml:lang="az">GIF rəsmi</comment>
+- <comment xml:lang="be@latin">Vyjava GIF</comment>
++ <comment xml:lang="be-Latn">Vyjava GIF</comment>
+ <comment xml:lang="bg">Изображение — GIF</comment>
+ <comment xml:lang="ca">imatge GIF</comment>
+ <comment xml:lang="cs">obrázek GIF</comment>
+@@ -25284,13 +26098,14 @@
+ <comment xml:lang="da">GIF-billede</comment>
+ <comment xml:lang="de">GIF-Bild</comment>
+ <comment xml:lang="el">Εικόνα GIF</comment>
+- <comment xml:lang="en_GB">GIF image</comment>
++ <comment xml:lang="en-GB">GIF image</comment>
+ <comment xml:lang="eo">GIF-bildo</comment>
+ <comment xml:lang="es">imagen GIF</comment>
+ <comment xml:lang="eu">GIF irudia</comment>
+ <comment xml:lang="fi">GIF-kuva</comment>
+ <comment xml:lang="fo">GIF mynd</comment>
+ <comment xml:lang="fr">image GIF</comment>
++ <comment xml:lang="fur">imagjin GIF</comment>
+ <comment xml:lang="ga">íomhá GIF</comment>
+ <comment xml:lang="gl">imaxe GIF</comment>
+ <comment xml:lang="he">תמונת GIF</comment>
+@@ -25312,7 +26127,7 @@
+ <comment xml:lang="oc">imatge GIF</comment>
+ <comment xml:lang="pl">Obraz GIF</comment>
+ <comment xml:lang="pt">imagem GIF</comment>
+- <comment xml:lang="pt_BR">Imagem GIF</comment>
++ <comment xml:lang="pt-BR">Imagem GIF</comment>
+ <comment xml:lang="ro">Imagine GIF</comment>
+ <comment xml:lang="ru">Изображение GIF</comment>
+ <comment xml:lang="sk">Obrázok GIF</comment>
+@@ -25323,15 +26138,44 @@
+ <comment xml:lang="tr">GIF görüntüsü</comment>
+ <comment xml:lang="uk">зображення GIF</comment>
+ <comment xml:lang="vi">Ảnh GIF</comment>
+- <comment xml:lang="zh_CN">GIF 图像</comment>
+- <comment xml:lang="zh_TW">GIF 影像</comment>
++ <comment xml:lang="zh-CN">GIF 图像</comment>
++ <comment xml:lang="zh-TW">GIF 影像</comment>
+ <magic priority="50">
+- <match value="GIF8" type="string" offset="0"/>
++ <match type="string" value="GIF8" offset="0"/>
+ </magic>
+ <glob pattern="*.gif"/>
+ </mime-type>
+ <mime-type type="image/heif">
+ <comment>HEIF image</comment>
++ <comment xml:lang="af">HEIF-beeld</comment>
++ <comment xml:lang="bg">Изображение — HEIF</comment>
++ <comment xml:lang="ca">imatge HEIF</comment>
++ <comment xml:lang="cs">obrázek HEIF</comment>
++ <comment xml:lang="da">HEIF-billede</comment>
++ <comment xml:lang="de">HEIF-Bild</comment>
++ <comment xml:lang="en-GB">HEIF image</comment>
++ <comment xml:lang="es">imagen HEIF</comment>
++ <comment xml:lang="eu">HEIF irudia</comment>
++ <comment xml:lang="fi">HEIF-kuva</comment>
++ <comment xml:lang="fr">image HEIF</comment>
++ <comment xml:lang="fur">imagjin HEIF</comment>
++ <comment xml:lang="ga">íomhá HEIF</comment>
++ <comment xml:lang="hr">HEIF slika</comment>
++ <comment xml:lang="hu">HEIF kép</comment>
++ <comment xml:lang="id">Citra HEIF</comment>
++ <comment xml:lang="it">Immagine HEIF</comment>
++ <comment xml:lang="kk">HEIF суреті</comment>
++ <comment xml:lang="ko">HEIF 그림</comment>
++ <comment xml:lang="pl">Obraz HEIF</comment>
++ <comment xml:lang="pt-BR">Imagem HEIF</comment>
++ <comment xml:lang="ru">Изображение HEIF</comment>
++ <comment xml:lang="sk">Obrázok HEIF</comment>
++ <comment xml:lang="sl">Slika HEIF</comment>
++ <comment xml:lang="sv">HEIF-bild</comment>
++ <comment xml:lang="tr">HEIF görüntüsü</comment>
++ <comment xml:lang="uk">зображення HEIF</comment>
++ <comment xml:lang="zh-CN">HEIF 图像</comment>
++ <comment xml:lang="zh-TW">HEIF 影像</comment>
+ <acronym>HEIF</acronym>
+ <expanded-acronym>High Efficiency Image File</expanded-acronym>
+ <glob pattern="*.heic"/>
+@@ -25342,9 +26186,10 @@
+ </mime-type>
+ <mime-type type="image/ief">
+ <comment>IEF image</comment>
++ <comment xml:lang="af">IEF-beeld</comment>
+ <comment xml:lang="ar">صورة IEF</comment>
+ <comment xml:lang="az">IEF rəsmi</comment>
+- <comment xml:lang="be@latin">Vyjava IEF</comment>
++ <comment xml:lang="be-Latn">Vyjava IEF</comment>
+ <comment xml:lang="bg">Изображение — IEF</comment>
+ <comment xml:lang="ca">imatge IEF</comment>
+ <comment xml:lang="cs">obrázek IEF</comment>
+@@ -25352,13 +26197,14 @@
+ <comment xml:lang="da">IEF-billede</comment>
+ <comment xml:lang="de">IEF-Bild</comment>
+ <comment xml:lang="el">Εικόνα IEF</comment>
+- <comment xml:lang="en_GB">IEF image</comment>
++ <comment xml:lang="en-GB">IEF image</comment>
+ <comment xml:lang="eo">IEF-bildo</comment>
+ <comment xml:lang="es">imagen IEF</comment>
+ <comment xml:lang="eu">IEF irudia</comment>
+ <comment xml:lang="fi">IEF-kuva</comment>
+ <comment xml:lang="fo">IEF mynd</comment>
+ <comment xml:lang="fr">image IEF</comment>
++ <comment xml:lang="fur">imagjin IEF</comment>
+ <comment xml:lang="ga">íomhá IEF</comment>
+ <comment xml:lang="gl">imaxe IEF</comment>
+ <comment xml:lang="he">תמונת IEF</comment>
+@@ -25379,7 +26225,7 @@
+ <comment xml:lang="oc">imatge IEF</comment>
+ <comment xml:lang="pl">Obraz IEF</comment>
+ <comment xml:lang="pt">imagem IEF</comment>
+- <comment xml:lang="pt_BR">Imagem IEF</comment>
++ <comment xml:lang="pt-BR">Imagem IEF</comment>
+ <comment xml:lang="ro">Imagine IEF</comment>
+ <comment xml:lang="ru">Изображение IEF</comment>
+ <comment xml:lang="sk">Obrázok IEF</comment>
+@@ -25390,15 +26236,16 @@
+ <comment xml:lang="tr">IEF görüntüsü</comment>
+ <comment xml:lang="uk">зображення IEF</comment>
+ <comment xml:lang="vi">Ảnh IEF</comment>
+- <comment xml:lang="zh_CN">IEF 图像</comment>
+- <comment xml:lang="zh_TW">IEF 影像</comment>
++ <comment xml:lang="zh-CN">IEF 图像</comment>
++ <comment xml:lang="zh-TW">IEF 影像</comment>
+ <glob pattern="*.ief"/>
+ </mime-type>
+ <mime-type type="image/jpeg">
+ <comment>JPEG image</comment>
++ <comment xml:lang="af">JPEG-beeld</comment>
+ <comment xml:lang="ar">صورة JPEG</comment>
+ <comment xml:lang="az">JPEG rəsmi</comment>
+- <comment xml:lang="be@latin">Vyjava JPEG</comment>
++ <comment xml:lang="be-Latn">Vyjava JPEG</comment>
+ <comment xml:lang="bg">Изображение — JPEG</comment>
+ <comment xml:lang="ca">imatge JPEG</comment>
+ <comment xml:lang="cs">obrázek JPEG</comment>
+@@ -25406,13 +26253,14 @@
+ <comment xml:lang="da">JPEG-billede</comment>
+ <comment xml:lang="de">JPEG-Bild</comment>
+ <comment xml:lang="el">Εικόνα JPEG</comment>
+- <comment xml:lang="en_GB">JPEG image</comment>
++ <comment xml:lang="en-GB">JPEG image</comment>
+ <comment xml:lang="eo">JPEG-bildo</comment>
+ <comment xml:lang="es">imagen JPEG</comment>
+ <comment xml:lang="eu">JPEG irudia</comment>
+ <comment xml:lang="fi">JPEG-kuva</comment>
+ <comment xml:lang="fo">JPEG mynd</comment>
+ <comment xml:lang="fr">image JPEG</comment>
++ <comment xml:lang="fur">imagjin JPEG</comment>
+ <comment xml:lang="ga">íomhá JPEG</comment>
+ <comment xml:lang="gl">imaxe JPEG</comment>
+ <comment xml:lang="he">תמונת JPEG</comment>
+@@ -25433,7 +26281,7 @@
+ <comment xml:lang="oc">imatge JPEG</comment>
+ <comment xml:lang="pl">Obraz JPEG</comment>
+ <comment xml:lang="pt">imagem JPEG</comment>
+- <comment xml:lang="pt_BR">Imagem JPEG</comment>
++ <comment xml:lang="pt-BR">Imagem JPEG</comment>
+ <comment xml:lang="ro">Imagine JPEG</comment>
+ <comment xml:lang="ru">Изображение JPEG</comment>
+ <comment xml:lang="sk">Obrázok JPEG</comment>
+@@ -25444,19 +26292,47 @@
+ <comment xml:lang="tr">JPEG görüntüsü</comment>
+ <comment xml:lang="uk">зображення JPEG</comment>
+ <comment xml:lang="vi">Ảnh JPEG</comment>
+- <comment xml:lang="zh_CN">JPEG 图像</comment>
+- <comment xml:lang="zh_TW">JPEG 影像</comment>
++ <comment xml:lang="zh-CN">JPEG 图像</comment>
++ <comment xml:lang="zh-TW">JPEG 影像</comment>
+ <magic priority="50">
+- <match value="\377\330\377" type="string" offset="0"/>
+- <match value="0xffd8" type="big16" offset="0"/>
++ <match type="string" value="\377\330\377" offset="0"/>
++ <match type="big16" value="0xffd8" offset="0"/>
+ </magic>
+- <glob pattern="*.jpeg"/>
+ <glob pattern="*.jpg"/>
++ <glob pattern="*.jpeg"/>
+ <glob pattern="*.jpe"/>
+ <alias type="image/pjpeg"/>
+ </mime-type>
+ <mime-type type="video/x-mjpeg">
+ <comment>MJPEG video stream</comment>
++ <comment xml:lang="af">MJPEG-videostroom</comment>
++ <comment xml:lang="bg">Поток — MJPEG, видео</comment>
++ <comment xml:lang="ca">flux de vídeo MJPEG</comment>
++ <comment xml:lang="cs">datový tok videa MJPEG</comment>
++ <comment xml:lang="da">MJPEG-videostrøm</comment>
++ <comment xml:lang="de">MJPEG-Videodatenstrom</comment>
++ <comment xml:lang="en-GB">MJPEG video stream</comment>
++ <comment xml:lang="es">videotransmisión MJPEG</comment>
++ <comment xml:lang="eu">MJPEG bideo korrontea</comment>
++ <comment xml:lang="fi">MJPEG-videon suoratoisto</comment>
++ <comment xml:lang="fr">flux vidéo MJPEG</comment>
++ <comment xml:lang="fur">trasmission video MJPEG</comment>
++ <comment xml:lang="ga">sruth físe MJPEG</comment>
++ <comment xml:lang="hr">Prijenos MJPEG videa</comment>
++ <comment xml:lang="hu">MJPEG videofolyam</comment>
++ <comment xml:lang="id">Stream video MJPEG</comment>
++ <comment xml:lang="it">Stream video MJPEG</comment>
++ <comment xml:lang="kk">MJPEG видео ағыны</comment>
++ <comment xml:lang="ko">MJPEG 비디오 스트림</comment>
++ <comment xml:lang="pl">Strumień wideo MJPEG</comment>
++ <comment xml:lang="pt-BR">Fluxo de vídeo MPEG</comment>
++ <comment xml:lang="ru">Видеопоток MJPEG</comment>
++ <comment xml:lang="sk">Stream videa MJPEG</comment>
++ <comment xml:lang="sv">MJPEG-videoström</comment>
++ <comment xml:lang="tr">MJPEG video akışı</comment>
++ <comment xml:lang="uk">відеопотік MJPEG</comment>
++ <comment xml:lang="zh-CN">MJPEG 视频流</comment>
++ <comment xml:lang="zh-TW">MJPEG 視訊串流</comment>
+ <acronym>MJPEG</acronym>
+ <expanded-acronym>Motion JPEG</expanded-acronym>
+ <sub-class-of type="image/jpeg"/>
+@@ -25465,27 +26341,35 @@
+ </mime-type>
+ <mime-type type="image/x-jp2-codestream">
+ <comment>JPEG-2000 codestream</comment>
++ <comment xml:lang="bg">Поток — JPEG-2000, кодирано</comment>
+ <comment xml:lang="ca">flux de codis JPEG-2000</comment>
+ <comment xml:lang="cs">datový tok JPEG-2000</comment>
++ <comment xml:lang="da">JPEG-2000-kodestrøm</comment>
+ <comment xml:lang="de">JPEG-2000 Codestream</comment>
+- <comment xml:lang="en_GB">JPEG-2000 codestream</comment>
++ <comment xml:lang="en-GB">JPEG-2000 codestream</comment>
+ <comment xml:lang="es">secuencia de código JPEG-2000</comment>
++ <comment xml:lang="eu">JPEG-2000 kodekorrontea</comment>
++ <comment xml:lang="fi">JPEG-2000-koodivirta</comment>
++ <comment xml:lang="fr">flux de code JPEG-2000</comment>
++ <comment xml:lang="fur">trasmission codiç JPEG-2000</comment>
++ <comment xml:lang="ga">códsruth JPEG-2000</comment>
+ <comment xml:lang="hr">JPEG-2000 kôd strujanja</comment>
+ <comment xml:lang="hu">JPEG-2000 kódfolyam</comment>
+- <comment xml:lang="id">codestream JPEG-2000</comment>
++ <comment xml:lang="id">Codestream JPEG-2000</comment>
+ <comment xml:lang="it">Codestream JPEG-2000</comment>
+ <comment xml:lang="kk">JPEG-2000 код ағыны</comment>
+ <comment xml:lang="ko">JPEG-2000 코드스트림</comment>
+ <comment xml:lang="pl">Strumień kodu JPEG-2000</comment>
+- <comment xml:lang="pt_BR">Imagem JPEG-2000</comment>
++ <comment xml:lang="pt-BR">Imagem JPEG-2000</comment>
+ <comment xml:lang="ru">Кодовый поток JPEG-2000</comment>
+ <comment xml:lang="sk">JPEG-2000 codestream</comment>
+ <comment xml:lang="sv">JPEG-2000-kodström</comment>
++ <comment xml:lang="tr">JPEG-2000 codestream</comment>
+ <comment xml:lang="uk">потік коду JPEG-2000</comment>
+- <comment xml:lang="zh_CN">JPEG-2000 码流</comment>
+- <comment xml:lang="zh_TW">JPEG-2000 代碼串流</comment>
++ <comment xml:lang="zh-CN">JPEG-2000 码流</comment>
++ <comment xml:lang="zh-TW">JPEG-2000 代碼串流</comment>
+ <magic priority="50">
+- <match value="0xff4fff51" type="big32" offset="0"/>
++ <match type="big32" value="0xff4fff51" offset="0"/>
+ </magic>
+ <glob pattern="*.j2c"/>
+ <glob pattern="*.j2k"/>
+@@ -25493,12 +26377,19 @@
+ </mime-type>
+ <mime-type type="image/jp2">
+ <comment>JPEG-2000 JP2 image</comment>
++ <comment xml:lang="af">JPEG-2000 JP2-beeld</comment>
++ <comment xml:lang="bg">Изображение — JPEG-2000 JP2</comment>
+ <comment xml:lang="ca">imatge JPEG-2000 JP2</comment>
+ <comment xml:lang="cs">obrázek JPEG-2000 JP2</comment>
++ <comment xml:lang="da">JPEG-2000 JP2-billede</comment>
+ <comment xml:lang="de">JPEG-2000 JP2-Bild</comment>
+- <comment xml:lang="en_GB">JPEG-2000 JP2 image</comment>
++ <comment xml:lang="en-GB">JPEG-2000 JP2 image</comment>
+ <comment xml:lang="es">imagen JPEG-2000 JP2</comment>
++ <comment xml:lang="eu">JPEG-2000 JP2 irudia</comment>
+ <comment xml:lang="fi">JPEG-2000 JP2 -kuva</comment>
++ <comment xml:lang="fr">image JPEG-2000 JP2</comment>
++ <comment xml:lang="fur">imagjin JPEG-2000 JP2</comment>
++ <comment xml:lang="ga">íomhá JPEG-2000 JP2</comment>
+ <comment xml:lang="hr">JPEG-2000 JP2 slika</comment>
+ <comment xml:lang="hu">JPEG-2000 JP2 kép</comment>
+ <comment xml:lang="id">Citra JPEG-2000 JP2</comment>
+@@ -25506,32 +26397,41 @@
+ <comment xml:lang="kk">JPEG-2000 JP2 суреті</comment>
+ <comment xml:lang="ko">JPEG-2000 JP2 그림</comment>
+ <comment xml:lang="pl">Obraz JP2 JPEG-2000</comment>
+- <comment xml:lang="pt_BR">Imagem JP2 de JPEG-2000</comment>
++ <comment xml:lang="pt-BR">Imagem JP2 de JPEG-2000</comment>
+ <comment xml:lang="ru">Изоражение JPEG-2000 JP2</comment>
+ <comment xml:lang="sk">Obrázok JPEG-2000 JP2</comment>
++ <comment xml:lang="sl">Slika JPEG-2000 JP2</comment>
+ <comment xml:lang="sv">JPEG-2000 JP2-bild</comment>
++ <comment xml:lang="tr">JPEG-2000 JP2 görüntüsü</comment>
+ <comment xml:lang="uk">зображення JP2 JPEG-2000</comment>
+- <comment xml:lang="zh_CN">JPEG-2000 JP2 图像</comment>
+- <comment xml:lang="zh_TW">JPEG-2000 JP2 影像</comment>
++ <comment xml:lang="zh-CN">JPEG-2000 JP2 图像</comment>
++ <comment xml:lang="zh-TW">JPEG-2000 JP2 影像</comment>
+ <acronym>JP2</acronym>
+ <expanded-acronym>JPEG-2000</expanded-acronym>
+ <alias type="image/jpeg2000"/>
+ <alias type="image/jpeg2000-image"/>
+ <alias type="image/x-jpeg2000-image"/>
+ <magic priority="50">
+- <match value="\x00\x00\x00\x0c\x6a\x50\x20\x20\x0d\x0a\x87\x0a jp2\x20" type="string" offset="0" mask="0xffffffffffffffffffffffff0000000000000000ffffffff"/>
++ <match type="string" mask="0xffffffffffffffffffffffff0000000000000000ffffffff" value="\x00\x00\x00\x0c\x6a\x50\x20\x20\x0d\x0a\x87\x0a jp2\x20" offset="0"/>
+ </magic>
+ <glob pattern="*.jp2"/>
+ <glob pattern="*.jpg2"/>
+ </mime-type>
+ <mime-type type="image/jpx">
+ <comment>JPEG-2000 JPX image</comment>
++ <comment xml:lang="af">JPEG-2000 JPX-beeld</comment>
++ <comment xml:lang="bg">Изображение — JPEG-2000 JPX</comment>
+ <comment xml:lang="ca">imatge JPEG-2000 JPX</comment>
+ <comment xml:lang="cs">obrázek JPEG-2000 JPX</comment>
++ <comment xml:lang="da">JPEG-2000 JPX-billede</comment>
+ <comment xml:lang="de">JPEG-2000 JPX-Bild</comment>
+- <comment xml:lang="en_GB">JPEG-2000 JPX image</comment>
++ <comment xml:lang="en-GB">JPEG-2000 JPX image</comment>
+ <comment xml:lang="es">imagen JPEG-2000 JPX</comment>
++ <comment xml:lang="eu">JPEG-2000 JPX irudia</comment>
+ <comment xml:lang="fi">JPEG-2000 JPX -kuva</comment>
++ <comment xml:lang="fr">image JPEG-2000 JPX</comment>
++ <comment xml:lang="fur">imagjinJPEG-2000 JPX</comment>
++ <comment xml:lang="ga">íomhá JPEG-2000 JPX</comment>
+ <comment xml:lang="hr">JPEG-2000 JPX slika</comment>
+ <comment xml:lang="hu">JPEG-2000 JPX kép</comment>
+ <comment xml:lang="id">Citra JPEG-2000 JPX</comment>
+@@ -25539,29 +26439,38 @@
+ <comment xml:lang="kk">JPEG-2000 JPX суреті</comment>
+ <comment xml:lang="ko">JPEG-2000 JPX 그림</comment>
+ <comment xml:lang="pl">Obraz JPX JPEG-2000</comment>
+- <comment xml:lang="pt_BR">Imagem JPX de JPEG-2000</comment>
++ <comment xml:lang="pt-BR">Imagem JPX de JPEG-2000</comment>
+ <comment xml:lang="ru">Изображение JPEG-2000 JPX</comment>
+ <comment xml:lang="sk">Obrázok JPEG-2000 JPX</comment>
++ <comment xml:lang="sl">Slika JPEG-2000 JPX</comment>
+ <comment xml:lang="sv">JPEG-2000 JPX-bild</comment>
++ <comment xml:lang="tr">JPEG-2000 JPX görüntüsü</comment>
+ <comment xml:lang="uk">зображення JPX JPEG-2000</comment>
+- <comment xml:lang="zh_CN">JPEG-2000 JPX 图像</comment>
+- <comment xml:lang="zh_TW">JPEG-2000 JPX 影像</comment>
++ <comment xml:lang="zh-CN">JPEG-2000 JPX 图像</comment>
++ <comment xml:lang="zh-TW">JPEG-2000 JPX 影像</comment>
+ <acronym>JPX</acronym>
+ <expanded-acronym>JPEG-2000 eXtended</expanded-acronym>
+ <magic priority="50">
+- <match value="\x00\x00\x00\x0c\x6a\x50\x20\x20\x0d\x0a\x87\x0a jpx\x20" type="string" offset="0" mask="0xffffffffffffffffffffffff0000000000000000ffffffff"/>
++ <match type="string" mask="0xffffffffffffffffffffffff0000000000000000ffffffff" value="\x00\x00\x00\x0c\x6a\x50\x20\x20\x0d\x0a\x87\x0a jpx\x20" offset="0"/>
+ </magic>
+ <glob pattern="*.jpf"/>
+ <glob pattern="*.jpx"/>
+ </mime-type>
+ <mime-type type="image/jpm">
+ <comment>JPEG-2000 JPM image</comment>
++ <comment xml:lang="af">JPEG-2000 JPM-beeld</comment>
++ <comment xml:lang="bg">Изображение — JPEG-2000 JPM</comment>
+ <comment xml:lang="ca">imatge JPEG-2000 JPM</comment>
+ <comment xml:lang="cs">obrázek JPEG-2000 JPM</comment>
++ <comment xml:lang="da">JPEG-2000 JPM-billede</comment>
+ <comment xml:lang="de">JPEG-2000 JPM-Bild</comment>
+- <comment xml:lang="en_GB">JPEG-2000 JPM image</comment>
++ <comment xml:lang="en-GB">JPEG-2000 JPM image</comment>
+ <comment xml:lang="es">imagen JPEG-2000 JPM</comment>
++ <comment xml:lang="eu">JPEG-2000 JPM irudia</comment>
+ <comment xml:lang="fi">JPEG-2000 JPM -kuva</comment>
++ <comment xml:lang="fr">image JPEG-2000 JPM</comment>
++ <comment xml:lang="fur">imagjin JPEG-2000 JPM</comment>
++ <comment xml:lang="ga">íomhá JPEG-2000 JPM</comment>
+ <comment xml:lang="hr">JPEG-2000 JPM slika</comment>
+ <comment xml:lang="hu">JPEG-2000 JPM kép</comment>
+ <comment xml:lang="id">Citra JPEG-2000 JPM</comment>
+@@ -25569,29 +26478,38 @@
+ <comment xml:lang="kk">JPEG-2000 JPM суреті</comment>
+ <comment xml:lang="ko">JPEG-2000 JPM 그림</comment>
+ <comment xml:lang="pl">Obraz JPM JPEG-2000</comment>
+- <comment xml:lang="pt_BR">Imagem JPM de JPEG-2000</comment>
++ <comment xml:lang="pt-BR">Imagem JPM de JPEG-2000</comment>
+ <comment xml:lang="ru">Изображение JPEG-2000 JPM</comment>
+ <comment xml:lang="sk">Obrázok JPEG-2000 JPM</comment>
++ <comment xml:lang="sl">Slika JPEG-2000 JPM</comment>
+ <comment xml:lang="sv">JPEG-2000 JPM-bild</comment>
++ <comment xml:lang="tr">JPEG-2000 JPM görüntüsü</comment>
+ <comment xml:lang="uk">зображення JPM JPEG-2000</comment>
+- <comment xml:lang="zh_CN">JPEG-2000 JPM 图像</comment>
+- <comment xml:lang="zh_TW">JPEG-2000 JPM 影像</comment>
++ <comment xml:lang="zh-CN">JPEG-2000 JPM 图像</comment>
++ <comment xml:lang="zh-TW">JPEG-2000 JPM 影像</comment>
+ <acronym>JPM</acronym>
+ <expanded-acronym>JPEG-2000 Mixed</expanded-acronym>
+ <magic priority="50">
+- <match value="\x00\x00\x00\x0c\x6a\x50\x20\x20\x0d\x0a\x87\x0a jpm\x20" type="string" offset="0" mask="0xffffffffffffffffffffffff0000000000000000ffffffff"/>
++ <match type="string" mask="0xffffffffffffffffffffffff0000000000000000ffffffff" value="\x00\x00\x00\x0c\x6a\x50\x20\x20\x0d\x0a\x87\x0a jpm\x20" offset="0"/>
+ </magic>
+ <glob pattern="*.jpm"/>
+ <glob pattern="*.jpgm"/>
+ </mime-type>
+ <mime-type type="video/mj2">
+ <comment>JPEG-2000 MJ2 video</comment>
++ <comment xml:lang="af">JPEG-2000 MJ2-video</comment>
++ <comment xml:lang="bg">Видео — JPEG-2000 MJ2</comment>
+ <comment xml:lang="ca">vídeo JPEG-2000 MJ2</comment>
+ <comment xml:lang="cs">video JPEG-2000 MJ2</comment>
++ <comment xml:lang="da">JPEG-2000 MJ2-video</comment>
+ <comment xml:lang="de">JPEG-2000 MJ2-Video</comment>
+- <comment xml:lang="en_GB">JPEG-2000 MJ2 video</comment>
++ <comment xml:lang="en-GB">JPEG-2000 MJ2 video</comment>
+ <comment xml:lang="es">vídeo JPEG-2000 MJ2</comment>
++ <comment xml:lang="eu">JPEG-2000 MJ2 bideoa</comment>
+ <comment xml:lang="fi">JPEG-2000 MJ2 -video</comment>
++ <comment xml:lang="fr">vidéo JPEG-2000 MJ2</comment>
++ <comment xml:lang="fur">video JPEG-2000 MJ2</comment>
++ <comment xml:lang="ga">íomhá JPEG-2000 MJ2</comment>
+ <comment xml:lang="hr">JPEG-2000 MJ2 video snimka</comment>
+ <comment xml:lang="hu">JPEG-2000 MJ2 videó</comment>
+ <comment xml:lang="id">Video JPEG-2000 MJ2</comment>
+@@ -25599,70 +26517,55 @@
+ <comment xml:lang="kk">JPEG-2000 MJ2 видеосы</comment>
+ <comment xml:lang="ko">JPEG-2000 MJ2 동영상</comment>
+ <comment xml:lang="pl">Plik wideo MJ2 JPEG-2000</comment>
+- <comment xml:lang="pt_BR">Imagem MJ2 de JPEG-2000</comment>
++ <comment xml:lang="pt-BR">Imagem MJ2 de JPEG-2000</comment>
+ <comment xml:lang="ru">Видео JPEG-2000 MJ2</comment>
+ <comment xml:lang="sk">Video JPEG-2000 MJ2</comment>
++ <comment xml:lang="sl">Video JPEG-2000 MJ2</comment>
+ <comment xml:lang="sv">JPEG-2000 MJ2-bild</comment>
++ <comment xml:lang="tr">JPEG-2000 MJ2 videosu</comment>
+ <comment xml:lang="uk">зображення MJ2 JPEG-2000</comment>
+- <comment xml:lang="zh_CN">JPEG-2000 MJ2 视频</comment>
+- <comment xml:lang="zh_TW">JPEG-2000 MJ2 視訊</comment>
++ <comment xml:lang="zh-CN">JPEG-2000 MJ2 视频</comment>
++ <comment xml:lang="zh-TW">JPEG-2000 MJ2 視訊</comment>
+ <acronym>MJ2</acronym>
+ <expanded-acronym>Motion JPEG-2000</expanded-acronym>
+ <magic priority="50">
+- <match value="\x00\x00\x00\x0c\x6a\x50\x20\x20\x0d\x0a\x87\x0a mjp2" type="string" offset="0" mask="0xffffffffffffffffffffffff0000000000000000ffffffff"/>
++ <match type="string" mask="0xffffffffffffffffffffffff0000000000000000ffffffff" value="\x00\x00\x00\x0c\x6a\x50\x20\x20\x0d\x0a\x87\x0a mjp2" offset="0"/>
+ </magic>
+ <glob pattern="*.mj2"/>
+ <glob pattern="*.mjp2"/>
+ </mime-type>
+ <mime-type type="image/openraster">
+- <comment>OpenRaster archiving image</comment>
+- <comment xml:lang="ar">صورة أرشيف OpenRaster</comment>
++ <comment>OpenRaster image</comment>
+ <comment xml:lang="bg">Изображение — OpenRaster</comment>
+- <comment xml:lang="ca">imatge d'arxivat OpenRaster</comment>
+- <comment xml:lang="cs">archivační obraz OpenRaster</comment>
+- <comment xml:lang="da">OpenRaster-arkivaftryk</comment>
+- <comment xml:lang="de">OpenRaster-Archivierungsbild</comment>
+- <comment xml:lang="el">Εικόνα αρχειοθέτησης OpenRaster</comment>
+- <comment xml:lang="en_GB">OpenRaster archiving image</comment>
+- <comment xml:lang="es">imagen de archivado de OpenRaster</comment>
+- <comment xml:lang="eu">OpenRaster artxiboaren irudia</comment>
+- <comment xml:lang="fi">OpenRaster-arkistokuva</comment>
+- <comment xml:lang="fo">OpenRaster goymslumynd</comment>
+- <comment xml:lang="fr">image d'archive OpenRaster</comment>
+- <comment xml:lang="ga">íomhá chartlannaithe OpenRaster</comment>
+- <comment xml:lang="gl">imaxe arquivada de OpenRaster</comment>
+- <comment xml:lang="he">תמונת ארכיון של OpenRaster</comment>
+- <comment xml:lang="hr">OpenRaster slika arhive</comment>
+- <comment xml:lang="hu">OpenRaster archiválási kép</comment>
+- <comment xml:lang="ia">Imagine de archivo OpenRaster</comment>
+- <comment xml:lang="id">Gambar pengarsipan OpenRaster</comment>
+- <comment xml:lang="it">Immagine archiviazione OpenRaster</comment>
+- <comment xml:lang="ja">OpenRaster アーカイブイメージ</comment>
+- <comment xml:lang="ka">OpenRaster-ის საარქივო გამოსახულება</comment>
+- <comment xml:lang="kk">OpenRaster архивтеу суреті</comment>
+- <comment xml:lang="ko">OpenRaster 압축 이미지</comment>
+- <comment xml:lang="lt">OpenRaster archyvavimo paveikslėlis</comment>
+- <comment xml:lang="lv">OpenRaster arhivēšanas attēls</comment>
+- <comment xml:lang="nl">OpenRaster archiverings-image</comment>
+- <comment xml:lang="oc">imatge d'archiu OpenRaster</comment>
+- <comment xml:lang="pl">Archiwalny obraz OpenRaster</comment>
+- <comment xml:lang="pt">imagem arquivo OpenRaster</comment>
+- <comment xml:lang="pt_BR">Imagem de arquivamento OpenRaster</comment>
+- <comment xml:lang="ro">Arhivă imagine OpenRaster</comment>
+- <comment xml:lang="ru">Архивное изображение OpenRaster</comment>
+- <comment xml:lang="sk">Archivačný obrázok OpenRaster</comment>
+- <comment xml:lang="sl">Odtis arhiva OpenRaster</comment>
+- <comment xml:lang="sr">слика Опен Растер архивирања</comment>
+- <comment xml:lang="sv">OpenRaster-arkivbild</comment>
+- <comment xml:lang="tr">OpenRaster arşivleme görüntüsü</comment>
+- <comment xml:lang="uk">архівоване зображення OpenRaster</comment>
+- <comment xml:lang="zh_CN">OpenRaster 归档图像</comment>
+- <comment xml:lang="zh_TW">OpenRaster 封存影像</comment>
++ <comment xml:lang="ca">imatge OpenRaster</comment>
++ <comment xml:lang="da">OpenRaster-billede</comment>
++ <comment xml:lang="de">OpenRaster-Bild</comment>
++ <comment xml:lang="en-GB">OpenRaster image</comment>
++ <comment xml:lang="es">imagen OpenRaster</comment>
++ <comment xml:lang="eu">OpenRaster irudia</comment>
++ <comment xml:lang="fi">OpenRaster-kuva</comment>
++ <comment xml:lang="fr">image OpenRaster</comment>
++ <comment xml:lang="hr">OpenRaster slika</comment>
++ <comment xml:lang="hu">OpenRaster kép</comment>
++ <comment xml:lang="id">Citra OpenRaster</comment>
++ <comment xml:lang="it">Immagine OpenRaster</comment>
++ <comment xml:lang="kk">OpenRaster суреті</comment>
++ <comment xml:lang="ko">OpenRaster 그림</comment>
++ <comment xml:lang="pl">Obraz OpenRaster</comment>
++ <comment xml:lang="pt-BR">Imagem OpenRaster</comment>
++ <comment xml:lang="ru">Изображение OpenRaster</comment>
++ <comment xml:lang="sk">Obrázok OpenRaster</comment>
++ <comment xml:lang="sl">Slika OpenRaster</comment>
++ <comment xml:lang="sv">OpenRaster-bild</comment>
++ <comment xml:lang="tr">OpenRaster görüntüsü</comment>
++ <comment xml:lang="uk">зображення OpenRaster</comment>
++ <comment xml:lang="zh-CN">OpenRaster 图像</comment>
++ <comment xml:lang="zh-TW">OpenRaster 影像</comment>
+ <sub-class-of type="application/zip"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="mimetype" type="string" offset="30">
+- <match value="image/openraster" type="string" offset="38"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="mimetype" offset="30">
++ <match type="string" value="image/openraster" offset="38"/>
+ </match>
+ </match>
+ </magic>
+@@ -25671,19 +26574,20 @@
+ <mime-type type="image/x-dds">
+ <comment>DirectDraw surface</comment>
+ <comment xml:lang="ar">مساحة DirectDraw</comment>
+- <comment xml:lang="be@latin">Pavierchnia DirectDraw</comment>
++ <comment xml:lang="be-Latn">Pavierchnia DirectDraw</comment>
+ <comment xml:lang="bg">Изображение — повърхност на DirectDraw</comment>
+ <comment xml:lang="ca">superfície DirectDraw</comment>
+ <comment xml:lang="cs">povrch DirectDraw</comment>
+ <comment xml:lang="da">DirectDraw-overflade</comment>
+ <comment xml:lang="de">DirectDraw-Oberfläche</comment>
+ <comment xml:lang="el">Επιφάνεια DirectDraw</comment>
+- <comment xml:lang="en_GB">DirectDraw surface</comment>
++ <comment xml:lang="en-GB">DirectDraw surface</comment>
+ <comment xml:lang="es">superficie de DirectDraw</comment>
+ <comment xml:lang="eu">DirectDraw gainazala</comment>
+ <comment xml:lang="fi">DirectDraw-piirtoalue</comment>
+ <comment xml:lang="fo">DirectDraw yvirflata</comment>
+ <comment xml:lang="fr">surface DirectDraw</comment>
++ <comment xml:lang="fur">superficie DirectDraw</comment>
+ <comment xml:lang="ga">dromchla DirectDraw</comment>
+ <comment xml:lang="gl">superficie de DirectDraw</comment>
+ <comment xml:lang="he">משטח של DirectDraw</comment>
+@@ -25704,7 +26608,7 @@
+ <comment xml:lang="oc">surfàcia DirectDraw</comment>
+ <comment xml:lang="pl">Powierzchnia DirectDraw</comment>
+ <comment xml:lang="pt">superfície DirectDraw</comment>
+- <comment xml:lang="pt_BR">Superfície do DirectDraw</comment>
++ <comment xml:lang="pt-BR">Superfície do DirectDraw</comment>
+ <comment xml:lang="ro">Suprafață DirectDraw</comment>
+ <comment xml:lang="ru">Плоскость DirectDraw</comment>
+ <comment xml:lang="sk">Plocha DirectDraw</comment>
+@@ -25715,8 +26619,8 @@
+ <comment xml:lang="tr">DirectDraw yüzeyi</comment>
+ <comment xml:lang="uk">поверхня DirectDraw</comment>
+ <comment xml:lang="vi">Mặt DirectDraw</comment>
+- <comment xml:lang="zh_CN">DirectDraw 表面</comment>
+- <comment xml:lang="zh_TW">DirectDraw 表面</comment>
++ <comment xml:lang="zh-CN">DirectDraw 表面</comment>
++ <comment xml:lang="zh-TW">DirectDraw 表面</comment>
+ <magic priority="50">
+ <match value="DDS" type="string" offset="0"/>
+ </magic>
+@@ -25724,20 +26628,22 @@
+ </mime-type>
+ <mime-type type="image/x-xcursor">
+ <comment>X11 cursor</comment>
++ <comment xml:lang="af">X11-wyser</comment>
+ <comment xml:lang="ar">مؤشر X11</comment>
+- <comment xml:lang="be@latin">Kursor X11</comment>
++ <comment xml:lang="be-Latn">Kursor X11</comment>
+ <comment xml:lang="bg">Курсор — X11</comment>
+- <comment xml:lang="ca">cursor X11</comment>
++ <comment xml:lang="ca">cursor de X11</comment>
+ <comment xml:lang="cs">kurzor X11</comment>
+ <comment xml:lang="da">X11-markør</comment>
+ <comment xml:lang="de">X11-Zeiger</comment>
+ <comment xml:lang="el">Δρομέας X11</comment>
+- <comment xml:lang="en_GB">X11 cursor</comment>
++ <comment xml:lang="en-GB">X11 cursor</comment>
+ <comment xml:lang="es">cursor de X11</comment>
+ <comment xml:lang="eu">X11 kurtsorea</comment>
+ <comment xml:lang="fi">X11-osoitin</comment>
+ <comment xml:lang="fo">X11 vísi</comment>
+ <comment xml:lang="fr">curseur X11</comment>
++ <comment xml:lang="fur">cursôr X11</comment>
+ <comment xml:lang="ga">cúrsóir X11</comment>
+ <comment xml:lang="gl">Cursor X11</comment>
+ <comment xml:lang="he">סמן של X11</comment>
+@@ -25757,7 +26663,7 @@
+ <comment xml:lang="oc">cursor X11</comment>
+ <comment xml:lang="pl">Kursor X11</comment>
+ <comment xml:lang="pt">cursor X11</comment>
+- <comment xml:lang="pt_BR">Cursor do X11</comment>
++ <comment xml:lang="pt-BR">Cursor do X11</comment>
+ <comment xml:lang="ro">Cursor X11</comment>
+ <comment xml:lang="ru">Курсор X11</comment>
+ <comment xml:lang="sk">Kurzor X11</comment>
+@@ -25768,29 +26674,31 @@
+ <comment xml:lang="tr">X11 imleci</comment>
+ <comment xml:lang="uk">курсор X11</comment>
+ <comment xml:lang="vi">Con chạy X11</comment>
+- <comment xml:lang="zh_CN">X11 指针</comment>
+- <comment xml:lang="zh_TW">X11 滑鼠游標</comment>
++ <comment xml:lang="zh-CN">X11 指针</comment>
++ <comment xml:lang="zh-TW">X11 滑鼠游標</comment>
+ <magic priority="50">
+- <match value="Xcur" type="string" offset="0"/>
++ <match type="string" value="Xcur" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="image/x-exr">
+ <comment>EXR image</comment>
++ <comment xml:lang="af">EXR-beeld</comment>
+ <comment xml:lang="ar">صورة EXR</comment>
+- <comment xml:lang="be@latin">Vyjava EXR</comment>
++ <comment xml:lang="be-Latn">Vyjava EXR</comment>
+ <comment xml:lang="bg">Изображение — EXR</comment>
+ <comment xml:lang="ca">imatge EXR</comment>
+ <comment xml:lang="cs">obrázek EXR</comment>
+ <comment xml:lang="da">EXR-billede</comment>
+ <comment xml:lang="de">EXR-Bild</comment>
+ <comment xml:lang="el">Εικόνα EXR</comment>
+- <comment xml:lang="en_GB">EXR image</comment>
++ <comment xml:lang="en-GB">EXR image</comment>
+ <comment xml:lang="eo">EXR-bildo</comment>
+ <comment xml:lang="es">imagen EXR</comment>
+ <comment xml:lang="eu">EXR irudia</comment>
+ <comment xml:lang="fi">EXR-kuva</comment>
+ <comment xml:lang="fo">EXR mynd</comment>
+ <comment xml:lang="fr">image EXR</comment>
++ <comment xml:lang="fur">imagjin EXR</comment>
+ <comment xml:lang="ga">íomhá EXR</comment>
+ <comment xml:lang="gl">imaxe EXR</comment>
+ <comment xml:lang="he">תמונת EXR</comment>
+@@ -25811,7 +26719,7 @@
+ <comment xml:lang="oc">imatge EXR</comment>
+ <comment xml:lang="pl">Obraz EXR</comment>
+ <comment xml:lang="pt">imagem EXR</comment>
+- <comment xml:lang="pt_BR">Imagem EXR</comment>
++ <comment xml:lang="pt-BR">Imagem EXR</comment>
+ <comment xml:lang="ro">Imagine EXR</comment>
+ <comment xml:lang="ru">Изображение EXR</comment>
+ <comment xml:lang="sk">Obrázok EXR</comment>
+@@ -25822,30 +26730,32 @@
+ <comment xml:lang="tr">EXR görüntüsü</comment>
+ <comment xml:lang="uk">зображення EXR</comment>
+ <comment xml:lang="vi">Ảnh EXR</comment>
+- <comment xml:lang="zh_CN">EXR 图像</comment>
+- <comment xml:lang="zh_TW">EXR 影像</comment>
++ <comment xml:lang="zh-CN">EXR 图像</comment>
++ <comment xml:lang="zh-TW">EXR 影像</comment>
+ <magic priority="50">
+- <match value="20000630" type="little32" offset="0"/>
++ <match type="little32" value="20000630" offset="0"/>
+ </magic>
+ <glob pattern="*.exr"/>
+ </mime-type>
+ <mime-type type="image/x-pict">
+ <comment>Macintosh Quickdraw/PICT drawing</comment>
++ <comment xml:lang="af">Macintosh Quickdraw/PICT-tekening</comment>
+ <comment xml:lang="ar">رسمة ماكنتوش Quickdraw/PICT</comment>
+- <comment xml:lang="be@latin">Rysunak Macintosh Quickdraw/PICT</comment>
++ <comment xml:lang="be-Latn">Rysunak Macintosh Quickdraw/PICT</comment>
+ <comment xml:lang="bg">Чертеж — Macintosh Quickdraw/PICT</comment>
+ <comment xml:lang="ca">dibuix Quickdraw/PICT de Macintosh</comment>
+ <comment xml:lang="cs">kresba Macintosh Quickdraw/PICT</comment>
+ <comment xml:lang="da">Macintosh Quickdraw/PICT-tegning</comment>
+ <comment xml:lang="de">Macintosh-Quickdraw/PICT-Zeichnung</comment>
+ <comment xml:lang="el">Σχέδιο Macintosh Quickdraw/PICT</comment>
+- <comment xml:lang="en_GB">Macintosh Quickdraw/PICT drawing</comment>
++ <comment xml:lang="en-GB">Macintosh Quickdraw/PICT drawing</comment>
+ <comment xml:lang="eo">Quickdraw/PICT-grafikaĵo de Macintosh</comment>
+ <comment xml:lang="es">dibujo de Macintosh Quickdraw/PICT</comment>
+ <comment xml:lang="eu">Macintosh Quickdraw/PICT marrazkia</comment>
+ <comment xml:lang="fi">Macintosh Quickdraw/PICT -piirros</comment>
+ <comment xml:lang="fo">Macintosh Quickdraw/PICT tekning</comment>
+ <comment xml:lang="fr">dessin Macintosh Quickdraw/PICT</comment>
++ <comment xml:lang="fur">dissen Macintosh Quickdraw/PICT</comment>
+ <comment xml:lang="ga">líníocht Macintosh Quickdraw/PICT</comment>
+ <comment xml:lang="gl">debuxo de Macintosh Quickdraw/PICT</comment>
+ <comment xml:lang="he">ציור של Macintosh Quickdraw/PICT</comment>
+@@ -25866,7 +26776,7 @@
+ <comment xml:lang="oc">dessenh Macintosh Quickdraw/PICT</comment>
+ <comment xml:lang="pl">Rysunek QuickDraw/PICT Macintosh</comment>
+ <comment xml:lang="pt">desenho Quickdraw/PICT de Macintosh</comment>
+- <comment xml:lang="pt_BR">Desenho do Macintosh Quickdraw/PICT</comment>
++ <comment xml:lang="pt-BR">Desenho do Macintosh Quickdraw/PICT</comment>
+ <comment xml:lang="ro">Desen Macintosh Quickdraw/PICT</comment>
+ <comment xml:lang="ru">Рисунок Macintosh Quickdraw/PICT</comment>
+ <comment xml:lang="sk">Kresba Macintosh QuickDraw/PICT</comment>
+@@ -25877,22 +26787,22 @@
+ <comment xml:lang="tr">Macintosh Quickdraw/PICT çizimi</comment>
+ <comment xml:lang="uk">малюнок Macintosh Quickdraw/PICT</comment>
+ <comment xml:lang="vi">Bản vẽ Quickdraw/PICT của Macintosh</comment>
+- <comment xml:lang="zh_CN">Macintosh Quickdraw/PICT 绘图</comment>
+- <comment xml:lang="zh_TW">Macintosh Quickdraw/PICT 繪圖</comment>
++ <comment xml:lang="zh-CN">Macintosh Quickdraw/PICT 绘图</comment>
++ <comment xml:lang="zh-TW">Macintosh Quickdraw/PICT 繪圖</comment>
+ <magic priority="50">
+- <match value="0x0011" type="big16" offset="10">
+- <match value="0x02FF" type="big16" offset="12">
+- <match value="0x0C00" type="big16" offset="14">
+- <match value="0xFFFE" type="big16" offset="16"/>
++ <match type="big16" value="0x0011" offset="10">
++ <match type="big16" value="0x02FF" offset="12">
++ <match type="big16" value="0x0C00" offset="14">
++ <match type="big16" value="0xFFFE" offset="16"/>
+ </match>
+ </match>
+ </match>
+ </magic>
+ <magic priority="50">
+- <match value="0x0011" type="big16" offset="522">
+- <match value="0x02FF" type="big16" offset="524">
+- <match value="0x0C00" type="big16" offset="526">
+- <match value="0xFFFE" type="big16" offset="528"/>
++ <match type="big16" value="0x0011" offset="522">
++ <match type="big16" value="0x02FF" offset="524">
++ <match type="big16" value="0x0C00" offset="526">
++ <match type="big16" value="0xFFFE" offset="528"/>
+ </match>
+ </match>
+ </match>
+@@ -25904,20 +26814,22 @@
+ </mime-type>
+ <mime-type type="application/x-ufraw">
+ <comment>UFRaw ID image</comment>
++ <comment xml:lang="af">UFRaw ID-beeld</comment>
+ <comment xml:lang="ar">صورة UFRaw ID</comment>
+- <comment xml:lang="be@latin">Vyjava UFRaw ID</comment>
++ <comment xml:lang="be-Latn">Vyjava UFRaw ID</comment>
+ <comment xml:lang="bg">Изображение — UFRaw ID</comment>
+ <comment xml:lang="ca">imatge ID UFRaw</comment>
+ <comment xml:lang="cs">obrázek ID UFRaw</comment>
+ <comment xml:lang="da">UFRaw ID-billede</comment>
+ <comment xml:lang="de">UFRaw-Bildbeschreibungsdatei</comment>
+ <comment xml:lang="el">Εικόνα UFRaw</comment>
+- <comment xml:lang="en_GB">UFRaw ID image</comment>
++ <comment xml:lang="en-GB">UFRaw ID image</comment>
+ <comment xml:lang="es">imagen de identificación UFRaw</comment>
+ <comment xml:lang="eu">UFRaw ID irudia</comment>
+ <comment xml:lang="fi">UFRaw ID -kuva</comment>
+ <comment xml:lang="fo">UFRaw ID mynd</comment>
+ <comment xml:lang="fr">image ID UFRaw</comment>
++ <comment xml:lang="fur">imagjin UFRaw ID</comment>
+ <comment xml:lang="ga">íomhá aitheantais UFRaw</comment>
+ <comment xml:lang="gl">imaxe de identificación UFRaw</comment>
+ <comment xml:lang="he">תמונה של UFRaw ID</comment>
+@@ -25937,7 +26849,7 @@
+ <comment xml:lang="oc">imatge ID UFRaw</comment>
+ <comment xml:lang="pl">Obraz UFRaw ID</comment>
+ <comment xml:lang="pt">imagem UFRaw ID</comment>
+- <comment xml:lang="pt_BR">Imagem ID do UFRaw</comment>
++ <comment xml:lang="pt-BR">Imagem ID do UFRaw</comment>
+ <comment xml:lang="ro">ID imagine UFRaw</comment>
+ <comment xml:lang="ru">Изображение UFRaw ID</comment>
+ <comment xml:lang="sk">Obrázok ID UFRaw</comment>
+@@ -25948,8 +26860,8 @@
+ <comment xml:lang="tr">UFRaw ID görüntüsü</comment>
+ <comment xml:lang="uk">зображення UFRaw ID</comment>
+ <comment xml:lang="vi">Ảnh ID UFRaw</comment>
+- <comment xml:lang="zh_CN">UFRaw ID 图像</comment>
+- <comment xml:lang="zh_TW">UFRaw ID 影像</comment>
++ <comment xml:lang="zh-CN">UFRaw ID 图像</comment>
++ <comment xml:lang="zh-TW">UFRaw ID 影像</comment>
+ <acronym>UFRaw</acronym>
+ <expanded-acronym>Unidentified Flying Raw</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+@@ -25958,20 +26870,22 @@
+ </mime-type>
+ <mime-type type="image/x-dcraw">
+ <comment>digital raw image</comment>
++ <comment xml:lang="af">digitale rou beeld</comment>
+ <comment xml:lang="ar">صورة رقمية خامة</comment>
+- <comment xml:lang="be@latin">suvoraja ličbavaja vyjava</comment>
++ <comment xml:lang="be-Latn">suvoraja ličbavaja vyjava</comment>
+ <comment xml:lang="bg">Изображение — digital raw</comment>
+ <comment xml:lang="ca">imatge digital en cru</comment>
+ <comment xml:lang="cs">digitální surový obrázek</comment>
+- <comment xml:lang="da">digitalt råbillede</comment>
++ <comment xml:lang="da">digitalt raw-billede</comment>
+ <comment xml:lang="de">Digitales Rohbild</comment>
+ <comment xml:lang="el">Ανεπεξέργαστη ψηφιακή εικόνα</comment>
+- <comment xml:lang="en_GB">digital raw image</comment>
++ <comment xml:lang="en-GB">digital raw image</comment>
+ <comment xml:lang="es">imagen digital en bruto</comment>
+ <comment xml:lang="eu">irudi gordin digitala</comment>
+ <comment xml:lang="fi">digitaalinen raakakuva</comment>
+ <comment xml:lang="fo">talgild rámynd</comment>
+ <comment xml:lang="fr">image brute numérique</comment>
++ <comment xml:lang="fur">imagjin grese digjitâl</comment>
+ <comment xml:lang="ga">amhíomhá dhigiteach</comment>
+ <comment xml:lang="gl">imaxe en bruto dixital</comment>
+ <comment xml:lang="he">תמונה דיגטלית גולמית</comment>
+@@ -25991,7 +26905,7 @@
+ <comment xml:lang="oc">imatge brut numeric</comment>
+ <comment xml:lang="pl">Surowy obraz cyfrowy</comment>
+ <comment xml:lang="pt">imagem digital em bruto</comment>
+- <comment xml:lang="pt_BR">Imagem digital bruta</comment>
++ <comment xml:lang="pt-BR">Imagem digital bruta</comment>
+ <comment xml:lang="ro">imagine digitală brută</comment>
+ <comment xml:lang="ru">Необработанное цифровое изображение</comment>
+ <comment xml:lang="sk">Digitálny surový obrázok</comment>
+@@ -26002,25 +26916,27 @@
+ <comment xml:lang="tr">sayısal ham görüntü</comment>
+ <comment xml:lang="uk">зображення цифрового негатива</comment>
+ <comment xml:lang="vi">ảnh thô số</comment>
+- <comment xml:lang="zh_CN">数字化原始图像</comment>
+- <comment xml:lang="zh_TW">數位原生影像</comment>
++ <comment xml:lang="zh-CN">数字化原始图像</comment>
++ <comment xml:lang="zh-TW">數位原始影像</comment>
+ </mime-type>
+ <mime-type type="image/x-adobe-dng">
+ <comment>Adobe DNG negative</comment>
++ <comment xml:lang="af">Adobe DNG-negatief</comment>
+ <comment xml:lang="ar">Adobe DNG negative</comment>
+- <comment xml:lang="be@latin">Adobe DNG Negative</comment>
++ <comment xml:lang="be-Latn">Adobe DNG Negative</comment>
+ <comment xml:lang="bg">Изображение — Adobe DNG negative</comment>
+ <comment xml:lang="ca">negatiu DNG d'Adobe</comment>
+ <comment xml:lang="cs">negativ Adobe (DNG)</comment>
+ <comment xml:lang="da">Adobe DNG-negativ</comment>
+ <comment xml:lang="de">Adobe Digitales Negativ</comment>
+ <comment xml:lang="el">Αρνητικό Adobe DNG</comment>
+- <comment xml:lang="en_GB">Adobe DNG negative</comment>
++ <comment xml:lang="en-GB">Adobe DNG negative</comment>
+ <comment xml:lang="es">negativo DNG de Adobe</comment>
+ <comment xml:lang="eu">Adobe DNG negatiboa</comment>
+ <comment xml:lang="fi">Adobe-DNG-negatiivi</comment>
+ <comment xml:lang="fo">Adobe DNG negativ</comment>
+ <comment xml:lang="fr">négatif DNG Adobe</comment>
++ <comment xml:lang="fur">negatîf Adobe DNG</comment>
+ <comment xml:lang="ga">claonchló DNG Adobe</comment>
+ <comment xml:lang="gl">negativo DNG de Adobe</comment>
+ <comment xml:lang="he">תשליל Adobe DNG</comment>
+@@ -26041,7 +26957,7 @@
+ <comment xml:lang="oc">négatif DNG Adobe</comment>
+ <comment xml:lang="pl">Negatyw DNG Adobe</comment>
+ <comment xml:lang="pt">negativo Adobe DNG</comment>
+- <comment xml:lang="pt_BR">Negativo DNG da Adobe</comment>
++ <comment xml:lang="pt-BR">Negativo DNG da Adobe</comment>
+ <comment xml:lang="ro">Negativ Adobe DNG</comment>
+ <comment xml:lang="ru">Негатив Adobe DNG</comment>
+ <comment xml:lang="sk">Adobe Digital Negative (DNG)</comment>
+@@ -26052,32 +26968,34 @@
+ <comment xml:lang="tr">Adobe DNG negatifi</comment>
+ <comment xml:lang="uk">цифровий негатив DNG Adobe</comment>
+ <comment xml:lang="vi">Âm bản Adobe DNG</comment>
+- <comment xml:lang="zh_CN">Adobe DNG 负片</comment>
+- <comment xml:lang="zh_TW">Adobe DNG 負片</comment>
++ <comment xml:lang="zh-CN">Adobe DNG 负片</comment>
++ <comment xml:lang="zh-TW">Adobe DNG 負片</comment>
+ <acronym>DNG</acronym>
+ <expanded-acronym>Digital Negative</expanded-acronym>
+ <sub-class-of type="image/x-dcraw"/>
+ <sub-class-of type="image/tiff"/>
+ <glob pattern="*.dng"/>
+ </mime-type>
+-
+-
++ <!-- Canon has 2 format: CRW and CR2 !-->
++ <!-- CRW is easy !-->
+ <mime-type type="image/x-canon-crw">
+ <comment>Canon CRW raw image</comment>
++ <comment xml:lang="af">Canon CRW rou beeld</comment>
+ <comment xml:lang="ar">صورة Canon CRW خامة</comment>
+- <comment xml:lang="be@latin">Suvoraja vyjava Canon CRW</comment>
++ <comment xml:lang="be-Latn">Suvoraja vyjava Canon CRW</comment>
+ <comment xml:lang="bg">Изображение — Canon CRW raw</comment>
+ <comment xml:lang="ca">imatge en cru de Canon CRW</comment>
+ <comment xml:lang="cs">surový obrázek Canon CRW</comment>
+- <comment xml:lang="da">Canon CRW-råbillede</comment>
++ <comment xml:lang="da">Canon CRW raw-billede</comment>
+ <comment xml:lang="de">Canon-CRW-Rohbild</comment>
+ <comment xml:lang="el">Ανεπεξέργαστη εικόνα Canon CRW</comment>
+- <comment xml:lang="en_GB">Canon CRW raw image</comment>
++ <comment xml:lang="en-GB">Canon CRW raw image</comment>
+ <comment xml:lang="es">imagen en bruto CRW de Canon</comment>
+ <comment xml:lang="eu">Canon CRW irudi gordina</comment>
+ <comment xml:lang="fi">Canon-CRW-raakakuva</comment>
+ <comment xml:lang="fo">Canon CRW rámynd</comment>
+ <comment xml:lang="fr">image brute CRW Canon</comment>
++ <comment xml:lang="fur">imagjin grese Canon CRW</comment>
+ <comment xml:lang="ga">amhíomhá Canon CRW</comment>
+ <comment xml:lang="gl">imaxe en bruto de Canon CRW</comment>
+ <comment xml:lang="he">תמונה גולמית של Canon CRW</comment>
+@@ -26098,7 +27016,7 @@
+ <comment xml:lang="oc">imatge brut CRW Canon</comment>
+ <comment xml:lang="pl">Surowy obraz CRW Canon</comment>
+ <comment xml:lang="pt">imagem em bruto Canon CRW</comment>
+- <comment xml:lang="pt_BR">Imagem bruta CRW da Canon</comment>
++ <comment xml:lang="pt-BR">Imagem bruta CRW da Canon</comment>
+ <comment xml:lang="ro">Imagine brută Canon CRW</comment>
+ <comment xml:lang="ru">Необработанное изображение Canon CRW</comment>
+ <comment xml:lang="sk">Surový obrázok Canon CRW</comment>
+@@ -26109,8 +27027,8 @@
+ <comment xml:lang="tr">Canon CRW ham görüntüsü</comment>
+ <comment xml:lang="uk">цифровий негатив CRW Canon</comment>
+ <comment xml:lang="vi">Ảnh thô Canon CRW</comment>
+- <comment xml:lang="zh_CN">佳能 CRW 原始图像</comment>
+- <comment xml:lang="zh_TW">Canon CRW 原生影像</comment>
++ <comment xml:lang="zh-CN">佳能 CRW 原始图像</comment>
++ <comment xml:lang="zh-TW">Canon CRW 原始影像</comment>
+ <acronym>CRW</acronym>
+ <expanded-acronym>Canon RaW</expanded-acronym>
+ <sub-class-of type="image/x-dcraw"/>
+@@ -26119,23 +27037,25 @@
+ </magic>
+ <glob pattern="*.crw"/>
+ </mime-type>
+-
++ <!-- CR2 is a TIFF !-->
+ <mime-type type="image/x-canon-cr2">
+ <comment>Canon CR2 raw image</comment>
++ <comment xml:lang="af">Canon CR2 rou beeld</comment>
+ <comment xml:lang="ar">صورة Canon CR2 خامة</comment>
+- <comment xml:lang="be@latin">Suvoraja vyjava Canon CR2</comment>
++ <comment xml:lang="be-Latn">Suvoraja vyjava Canon CR2</comment>
+ <comment xml:lang="bg">Изображение — Canon CR2 raw</comment>
+ <comment xml:lang="ca">imatge en cru de Canon CR2</comment>
+ <comment xml:lang="cs">surový obrázek Canon CR2</comment>
+- <comment xml:lang="da">Canon CR2-råbillede</comment>
++ <comment xml:lang="da">Canon CR2 raw-billede</comment>
+ <comment xml:lang="de">Canon-CR2-Rohbild</comment>
+ <comment xml:lang="el">Ανεπεξέργαστη εικόνα Canon CR2</comment>
+- <comment xml:lang="en_GB">Canon CR2 raw image</comment>
++ <comment xml:lang="en-GB">Canon CR2 raw image</comment>
+ <comment xml:lang="es">imagen en bruto CR2 de Canon</comment>
+ <comment xml:lang="eu">Canon CR2 irudi gordina</comment>
+ <comment xml:lang="fi">Canon-CR2-raakakuva</comment>
+ <comment xml:lang="fo">Canon CR2 rámynd</comment>
+ <comment xml:lang="fr">image brute CR2 Canon</comment>
++ <comment xml:lang="fur">imagjin grese Canon CR2</comment>
+ <comment xml:lang="ga">amhíomhá Canon CR2</comment>
+ <comment xml:lang="gl">imaxe en bruto de Canon CR2</comment>
+ <comment xml:lang="he">תמונה גולמית של Canon CR2</comment>
+@@ -26156,7 +27076,7 @@
+ <comment xml:lang="oc">imatge brut CR2 Canon</comment>
+ <comment xml:lang="pl">Surowy obraz CR2 Canon</comment>
+ <comment xml:lang="pt">imagem em bruto Canon CR2</comment>
+- <comment xml:lang="pt_BR">Imagem bruta CR2 da Canon</comment>
++ <comment xml:lang="pt-BR">Imagem bruta CR2 da Canon</comment>
+ <comment xml:lang="ro">Imagine brută Canon CR2</comment>
+ <comment xml:lang="ru">Необработанное изображение Canon CR2</comment>
+ <comment xml:lang="sk">Surový obrázok Canon CR2</comment>
+@@ -26167,8 +27087,8 @@
+ <comment xml:lang="tr">Canon CR2 ham görüntüsü</comment>
+ <comment xml:lang="uk">цифровий негатив CR2 Canon</comment>
+ <comment xml:lang="vi">Ảnh thô Canon CR2</comment>
+- <comment xml:lang="zh_CN">佳能 CR2 原始图像</comment>
+- <comment xml:lang="zh_TW">Canon CR2 原生影像</comment>
++ <comment xml:lang="zh-CN">佳能 CR2 原始图像</comment>
++ <comment xml:lang="zh-TW">Canon CR2 原始影像</comment>
+ <acronym>CR2</acronym>
+ <expanded-acronym>Canon Raw 2</expanded-acronym>
+ <sub-class-of type="image/x-dcraw"/>
+@@ -26177,20 +27097,22 @@
+ </mime-type>
+ <mime-type type="image/x-fuji-raf">
+ <comment>Fuji RAF raw image</comment>
++ <comment xml:lang="af">Fuji RAF rou beeld</comment>
+ <comment xml:lang="ar">صورة Fuji RAF خامة</comment>
+- <comment xml:lang="be@latin">Suvoraja vyjava Fuji RAF</comment>
++ <comment xml:lang="be-Latn">Suvoraja vyjava Fuji RAF</comment>
+ <comment xml:lang="bg">Изображение — Fuji RAF raw</comment>
+ <comment xml:lang="ca">imatge en cru de Fuji RAF</comment>
+ <comment xml:lang="cs">surový obrázek Fuji RAF</comment>
+- <comment xml:lang="da">Fuji RAF-råbillede</comment>
++ <comment xml:lang="da">Fuji RAF raw-billede</comment>
+ <comment xml:lang="de">Fuji-RAF-Rohbild</comment>
+ <comment xml:lang="el">Ανεπεξέργαστη εικόνα Fuji RAF</comment>
+- <comment xml:lang="en_GB">Fuji RAF raw image</comment>
++ <comment xml:lang="en-GB">Fuji RAF raw image</comment>
+ <comment xml:lang="es">imagen en bruto RAF de Fuji</comment>
+ <comment xml:lang="eu">Fuji RAF irudi gordina</comment>
+ <comment xml:lang="fi">Fuji-RAF-raakakuva</comment>
+ <comment xml:lang="fo">Fuji RAF raw mynd</comment>
+ <comment xml:lang="fr">image brute RAF Fuji</comment>
++ <comment xml:lang="fur">imagjin grese Fuji RAF</comment>
+ <comment xml:lang="ga">amhíomhá Fuji RAF</comment>
+ <comment xml:lang="gl">imaxe en bruto de Fuji RAF</comment>
+ <comment xml:lang="he">תמונה גולמית של Fuji RAF</comment>
+@@ -26211,7 +27133,7 @@
+ <comment xml:lang="oc">imatge brut RAF Fuji</comment>
+ <comment xml:lang="pl">Surowy obraz RAF Fuji</comment>
+ <comment xml:lang="pt">imagem em bruto Fuji RAF</comment>
+- <comment xml:lang="pt_BR">Imagem bruta RAF da Fuji</comment>
++ <comment xml:lang="pt-BR">Imagem bruta RAF da Fuji</comment>
+ <comment xml:lang="ro">Imagine brută Fuji RAF</comment>
+ <comment xml:lang="ru">Необработанное изображение Fuji RAF</comment>
+ <comment xml:lang="sk">Surový obrázok Fuji RAF</comment>
+@@ -26222,8 +27144,8 @@
+ <comment xml:lang="tr">Fuji RAF ham görüntüsü</comment>
+ <comment xml:lang="uk">Цифровий негатив RAF Fuji</comment>
+ <comment xml:lang="vi">Ảnh thô Fuji RAF</comment>
+- <comment xml:lang="zh_CN">富士 RAF 原始图像</comment>
+- <comment xml:lang="zh_TW">Fuji RAF 原生影像</comment>
++ <comment xml:lang="zh-CN">富士 RAF 原始图像</comment>
++ <comment xml:lang="zh-TW">Fuji RAF 原始影像</comment>
+ <acronym>RAF</acronym>
+ <expanded-acronym>RAw Format</expanded-acronym>
+ <sub-class-of type="image/x-dcraw"/>
+@@ -26234,20 +27156,22 @@
+ </mime-type>
+ <mime-type type="image/x-kodak-dcr">
+ <comment>Kodak DCR raw image</comment>
++ <comment xml:lang="af">Kodak DCR rou beeld</comment>
+ <comment xml:lang="ar">صورة Kodak DCR خامة</comment>
+- <comment xml:lang="be@latin">Suvoraja vyjava Kodak DCR</comment>
++ <comment xml:lang="be-Latn">Suvoraja vyjava Kodak DCR</comment>
+ <comment xml:lang="bg">Изображение — Kodak DCR raw</comment>
+ <comment xml:lang="ca">imatge en cru de Kodak DCR</comment>
+ <comment xml:lang="cs">surový obrázek Kodak DCR</comment>
+- <comment xml:lang="da">Kodak DCR-råbillede</comment>
++ <comment xml:lang="da">Kodak DCR raw-billede</comment>
+ <comment xml:lang="de">Kodak-DCR-Rohbild</comment>
+ <comment xml:lang="el">Ανεπεξέργαστη εικόνα Kodak DCR</comment>
+- <comment xml:lang="en_GB">Kodak DCR raw image</comment>
++ <comment xml:lang="en-GB">Kodak DCR raw image</comment>
+ <comment xml:lang="es">imagen en bruto DCR de Kodak</comment>
+ <comment xml:lang="eu">Kodak DCR irudi gordina</comment>
+ <comment xml:lang="fi">Kodak-DCR-raakakuva</comment>
+ <comment xml:lang="fo">Kodak DCR rámynd</comment>
+ <comment xml:lang="fr">image brute DCR Kodak</comment>
++ <comment xml:lang="fur">imagjin grese Kodak DCR</comment>
+ <comment xml:lang="ga">amhíomhá Kodak DCR</comment>
+ <comment xml:lang="gl">imaxe en bruto de Kodad DCR</comment>
+ <comment xml:lang="he">תמונה גולמית של Kodak DCR</comment>
+@@ -26267,7 +27191,7 @@
+ <comment xml:lang="oc">imatge brut DCR Kodak</comment>
+ <comment xml:lang="pl">Surowy obraz DCR Kodak</comment>
+ <comment xml:lang="pt">imagem em bruto Kodak DCR</comment>
+- <comment xml:lang="pt_BR">Imagem bruta DCR da Kodak</comment>
++ <comment xml:lang="pt-BR">Imagem bruta DCR da Kodak</comment>
+ <comment xml:lang="ro">Imagine brută Kodak DCR</comment>
+ <comment xml:lang="ru">Необработанное изображение Kodak DCR</comment>
+ <comment xml:lang="sk">Surový obrázok Kodak DCR</comment>
+@@ -26278,8 +27202,8 @@
+ <comment xml:lang="tr">Kodak DCR ham görüntüsü</comment>
+ <comment xml:lang="uk">цифровий негатив DCR Kodak</comment>
+ <comment xml:lang="vi">Ảnh thô Kodak DCR</comment>
+- <comment xml:lang="zh_CN">柯达 DCR 原始图像</comment>
+- <comment xml:lang="zh_TW">Kodak DCR 原生影像</comment>
++ <comment xml:lang="zh-CN">柯达 DCR 原始图像</comment>
++ <comment xml:lang="zh-TW">Kodak DCR 原始影像</comment>
+ <acronym>DCR</acronym>
+ <expanded-acronym>Digital Camera Raw</expanded-acronym>
+ <sub-class-of type="image/x-dcraw"/>
+@@ -26288,20 +27212,22 @@
+ </mime-type>
+ <mime-type type="image/x-kodak-k25">
+ <comment>Kodak K25 raw image</comment>
++ <comment xml:lang="af">Kodak K25 rou beeld</comment>
+ <comment xml:lang="ar">صورة Kodak K25 خامة</comment>
+- <comment xml:lang="be@latin">Suvoraja vyjava Kodak K25</comment>
++ <comment xml:lang="be-Latn">Suvoraja vyjava Kodak K25</comment>
+ <comment xml:lang="bg">Изображение — Kodak K25 raw</comment>
+ <comment xml:lang="ca">imatge en cru de Kodak K25</comment>
+ <comment xml:lang="cs">surový obrázek Kodak K25</comment>
+- <comment xml:lang="da">Kodak K25-råbillede</comment>
++ <comment xml:lang="da">Kodak K25 raw-billede</comment>
+ <comment xml:lang="de">Kodak-K25-Rohbild</comment>
+ <comment xml:lang="el">Ανεπεξέργαστη εικόνα Kodak K25</comment>
+- <comment xml:lang="en_GB">Kodak K25 raw image</comment>
++ <comment xml:lang="en-GB">Kodak K25 raw image</comment>
+ <comment xml:lang="es">imagen en bruto K25 de Kodak</comment>
+ <comment xml:lang="eu">Kodak K25 raw image</comment>
+ <comment xml:lang="fi">Kodak-K25-raakakuva</comment>
+ <comment xml:lang="fo">Kodak K25 rámynd</comment>
+ <comment xml:lang="fr">image brute K25 Kodak</comment>
++ <comment xml:lang="fur">imagjin grese Kodak K25</comment>
+ <comment xml:lang="ga">amhíomhá Kodak K25</comment>
+ <comment xml:lang="gl">imaxe en bruto de Kodad K25</comment>
+ <comment xml:lang="he">תמונה גולמית של Kodak K25</comment>
+@@ -26321,7 +27247,7 @@
+ <comment xml:lang="oc">imatge brut K25 Kodak</comment>
+ <comment xml:lang="pl">Surowy obraz K25 Kodak</comment>
+ <comment xml:lang="pt">imagem em bruto Kodak K25</comment>
+- <comment xml:lang="pt_BR">Imagem bruta K25 da Kodak</comment>
++ <comment xml:lang="pt-BR">Imagem bruta K25 da Kodak</comment>
+ <comment xml:lang="ro">Imagine brută Kodak K25</comment>
+ <comment xml:lang="ru">Необработанное изображение Kodak K25</comment>
+ <comment xml:lang="sk">Surový obrázok Kodak K25</comment>
+@@ -26332,8 +27258,8 @@
+ <comment xml:lang="tr">Kodak K25 ham görüntüsü</comment>
+ <comment xml:lang="uk">цифровий негатив K25 Kodak</comment>
+ <comment xml:lang="vi">Ảnh thô Kodak K25</comment>
+- <comment xml:lang="zh_CN">柯达 K25 原始图像</comment>
+- <comment xml:lang="zh_TW">Kodak K25 原生影像</comment>
++ <comment xml:lang="zh-CN">柯达 K25 原始图像</comment>
++ <comment xml:lang="zh-TW">Kodak K25 原始影像</comment>
+ <acronym>K25</acronym>
+ <expanded-acronym>Kodak DC25</expanded-acronym>
+ <sub-class-of type="image/x-dcraw"/>
+@@ -26342,20 +27268,22 @@
+ </mime-type>
+ <mime-type type="image/x-kodak-kdc">
+ <comment>Kodak KDC raw image</comment>
++ <comment xml:lang="af">Kodak KDC rou beeld</comment>
+ <comment xml:lang="ar">صورة Kodak KDC خامة</comment>
+- <comment xml:lang="be@latin">Suvoraja vyjava Kodak KDC</comment>
++ <comment xml:lang="be-Latn">Suvoraja vyjava Kodak KDC</comment>
+ <comment xml:lang="bg">Изображение — Kodak KDC raw</comment>
+ <comment xml:lang="ca">imatge en cru de Kodak KDC</comment>
+ <comment xml:lang="cs">surový obrázek Kodak KDC</comment>
+- <comment xml:lang="da">Kodak KDC-råbillede</comment>
++ <comment xml:lang="da">Kodak KDC raw-billede</comment>
+ <comment xml:lang="de">Kodak-KDC-Rohbild</comment>
+ <comment xml:lang="el">Ανεπεξέργαστη εικόνα Kodak KDC</comment>
+- <comment xml:lang="en_GB">Kodak KDC raw image</comment>
++ <comment xml:lang="en-GB">Kodak KDC raw image</comment>
+ <comment xml:lang="es">imagen en bruto KDC de Kodak</comment>
+ <comment xml:lang="eu">Kodak KDC irudi gordina</comment>
+ <comment xml:lang="fi">Kodak-KDC-raakakuva</comment>
+ <comment xml:lang="fo">Kodak KDC rámynd</comment>
+ <comment xml:lang="fr">image brute KDC Kodak</comment>
++ <comment xml:lang="fur">imagjin grese Kodak KDC</comment>
+ <comment xml:lang="ga">amhíomhá Kodak KDC</comment>
+ <comment xml:lang="gl">imaxe en bruto de Kodad KDC</comment>
+ <comment xml:lang="he">תמונה גולמית של Kodak KDC</comment>
+@@ -26375,7 +27303,7 @@
+ <comment xml:lang="oc">imatge brut KDC Kodak</comment>
+ <comment xml:lang="pl">Surowy obraz KDC Kodak</comment>
+ <comment xml:lang="pt">imagem em bruto Kodak KDC</comment>
+- <comment xml:lang="pt_BR">Imagem bruta KDC da Kodak</comment>
++ <comment xml:lang="pt-BR">Imagem bruta KDC da Kodak</comment>
+ <comment xml:lang="ro">Imagine brută Kodak KDC</comment>
+ <comment xml:lang="ru">Необработанное изображение Kodak KDC</comment>
+ <comment xml:lang="sk">Surový obrázok Kodak KDC</comment>
+@@ -26386,8 +27314,8 @@
+ <comment xml:lang="tr">Kodak KDC ham görüntüsü</comment>
+ <comment xml:lang="uk">цифровий негатив KDC Kodak</comment>
+ <comment xml:lang="vi">Ảnh thô Kodak KDC</comment>
+- <comment xml:lang="zh_CN">柯达 KDC 原始图像</comment>
+- <comment xml:lang="zh_TW">Kodak KDC 原生影像</comment>
++ <comment xml:lang="zh-CN">柯达 KDC 原始图像</comment>
++ <comment xml:lang="zh-TW">Kodak KDC 原始影像</comment>
+ <acronym>KDC</acronym>
+ <expanded-acronym>Kodak Digital Camera</expanded-acronym>
+ <sub-class-of type="image/x-dcraw"/>
+@@ -26399,20 +27327,22 @@
+ </mime-type>
+ <mime-type type="image/x-minolta-mrw">
+ <comment>Minolta MRW raw image</comment>
++ <comment xml:lang="af">Minolta MRW rou beeld</comment>
+ <comment xml:lang="ar">صورة Minolta MRW خامة</comment>
+- <comment xml:lang="be@latin">Suvoraja vyjava Minolta MRW</comment>
++ <comment xml:lang="be-Latn">Suvoraja vyjava Minolta MRW</comment>
+ <comment xml:lang="bg">Изображение — Minolta MRW raw</comment>
+ <comment xml:lang="ca">imatge en cru de Minolta MRW</comment>
+ <comment xml:lang="cs">surový obrázek Minolta MRW</comment>
+- <comment xml:lang="da">Minolta MRW-råbillede</comment>
++ <comment xml:lang="da">Minolta MRW raw-billede</comment>
+ <comment xml:lang="de">Minolta-MRW-Rohbild</comment>
+ <comment xml:lang="el">Ανεπεξέργαστη εικόνα Minolta MRW</comment>
+- <comment xml:lang="en_GB">Minolta MRW raw image</comment>
++ <comment xml:lang="en-GB">Minolta MRW raw image</comment>
+ <comment xml:lang="es">imagen en bruto MRW de Minolta</comment>
+ <comment xml:lang="eu">Minolta MRW irudi gordina</comment>
+ <comment xml:lang="fi">Minolta-MRW-raakakuva</comment>
+ <comment xml:lang="fo">Minolta MRW rámynd</comment>
+ <comment xml:lang="fr">image brute MRW Minolta</comment>
++ <comment xml:lang="fur">imagjin grese Minolta MRW</comment>
+ <comment xml:lang="ga">amhíomhá Minolta MRW</comment>
+ <comment xml:lang="gl">imaxe RAW de Minolta MRW</comment>
+ <comment xml:lang="he">תמונה גולמית של Minolta MRW</comment>
+@@ -26432,7 +27362,7 @@
+ <comment xml:lang="oc">imatge brut MRW Minolta</comment>
+ <comment xml:lang="pl">Surowy obraz MRW Minolta</comment>
+ <comment xml:lang="pt">imagem em bruto Minolta MRW</comment>
+- <comment xml:lang="pt_BR">Imagem bruta MRW do Minolta</comment>
++ <comment xml:lang="pt-BR">Imagem bruta MRW do Minolta</comment>
+ <comment xml:lang="ro">Imagine brută Minolta MRW</comment>
+ <comment xml:lang="ru">Необработанное изображение Minolta MRW</comment>
+ <comment xml:lang="sk">Surový obrázok Minolta MRW</comment>
+@@ -26443,8 +27373,8 @@
+ <comment xml:lang="tr">Minolta MRW ham görüntüsü</comment>
+ <comment xml:lang="uk">цифровий негатив MRW Minolta</comment>
+ <comment xml:lang="vi">Ảnh thô Minolta MRW</comment>
+- <comment xml:lang="zh_CN">美能达 MRW 原始图像</comment>
+- <comment xml:lang="zh_TW">Minolta MRW 原生影像</comment>
++ <comment xml:lang="zh-CN">美能达 MRW 原始图像</comment>
++ <comment xml:lang="zh-TW">Minolta MRW 原始影像</comment>
+ <acronym>MRW</acronym>
+ <expanded-acronym>Minolta RaW</expanded-acronym>
+ <sub-class-of type="image/x-dcraw"/>
+@@ -26455,20 +27385,22 @@
+ </mime-type>
+ <mime-type type="image/x-nikon-nef">
+ <comment>Nikon NEF raw image</comment>
++ <comment xml:lang="af">Nikon NEF rou beeld</comment>
+ <comment xml:lang="ar">صورة Nikon NEF خامة</comment>
+- <comment xml:lang="be@latin">Suvoraja vyjava Nikon NEF</comment>
++ <comment xml:lang="be-Latn">Suvoraja vyjava Nikon NEF</comment>
+ <comment xml:lang="bg">Изображение — Nikon NEF raw</comment>
+ <comment xml:lang="ca">imatge en cru de Nikon NEF</comment>
+ <comment xml:lang="cs">surový obrázek Nikon NEF</comment>
+- <comment xml:lang="da">Nikon NEF-råbillede</comment>
++ <comment xml:lang="da">Nikon NEF raw-billede</comment>
+ <comment xml:lang="de">Nikon-NEF-Rohbild</comment>
+ <comment xml:lang="el">Ανεπεξέργαστη εικόνα Nikon NEF</comment>
+- <comment xml:lang="en_GB">Nikon NEF raw image</comment>
++ <comment xml:lang="en-GB">Nikon NEF raw image</comment>
+ <comment xml:lang="es">imagen en bruto NEF de Nikon</comment>
+ <comment xml:lang="eu">Nikon NEF irudi gordina</comment>
+ <comment xml:lang="fi">Nikon-NEF-raakakuva</comment>
+ <comment xml:lang="fo">Nikon NEF rámynd</comment>
+ <comment xml:lang="fr">image brute NEF Nikon</comment>
++ <comment xml:lang="fur">imagjin grese Nikon NEF</comment>
+ <comment xml:lang="ga">amhíomhá Nikon NEF</comment>
+ <comment xml:lang="gl">imaxe RAW NEF Nikon</comment>
+ <comment xml:lang="he">תמונה גולמית של Nikon NEF</comment>
+@@ -26488,7 +27420,7 @@
+ <comment xml:lang="oc">imatge brut NEF Nikon</comment>
+ <comment xml:lang="pl">Surowy obraz NEF Nikon</comment>
+ <comment xml:lang="pt">imagem em bruto Nikon NEF</comment>
+- <comment xml:lang="pt_BR">Imagem bruta NEF da Nikon</comment>
++ <comment xml:lang="pt-BR">Imagem bruta NEF da Nikon</comment>
+ <comment xml:lang="ro">Imagine brută Nikon NEF</comment>
+ <comment xml:lang="ru">Необработанное изображение Nikon NEF</comment>
+ <comment xml:lang="sk">Surový obrázok Nikon NEF</comment>
+@@ -26499,8 +27431,8 @@
+ <comment xml:lang="tr">Nikon NEF ham görüntüsü</comment>
+ <comment xml:lang="uk">цифровий негатив NEF Nikon</comment>
+ <comment xml:lang="vi">Ảnh thô Nikon NEF</comment>
+- <comment xml:lang="zh_CN">尼康 NEF 原始图像</comment>
+- <comment xml:lang="zh_TW">Nikon NEF 原生影像</comment>
++ <comment xml:lang="zh-CN">尼康 NEF 原始图像</comment>
++ <comment xml:lang="zh-TW">Nikon NEF 原始影像</comment>
+ <acronym>NEF</acronym>
+ <expanded-acronym>Nikon Electronic Format</expanded-acronym>
+ <sub-class-of type="image/x-dcraw"/>
+@@ -26509,20 +27441,22 @@
+ </mime-type>
+ <mime-type type="image/x-olympus-orf">
+ <comment>Olympus ORF raw image</comment>
++ <comment xml:lang="af">Olympus ORF rou beeld</comment>
+ <comment xml:lang="ar">صورة Olympus ORF خامة</comment>
+- <comment xml:lang="be@latin">Suvoraja vyjava Olympus ORF</comment>
++ <comment xml:lang="be-Latn">Suvoraja vyjava Olympus ORF</comment>
+ <comment xml:lang="bg">Изображение — Olympus ORF raw</comment>
+ <comment xml:lang="ca">imatge en cru d'Olympus ORF</comment>
+ <comment xml:lang="cs">surový obrázek Olympus ORF</comment>
+- <comment xml:lang="da">Olympus ORF-råbillede</comment>
++ <comment xml:lang="da">Olympus ORF raw-billede</comment>
+ <comment xml:lang="de">Olympus-ORF-Rohbild</comment>
+ <comment xml:lang="el">Ανεπεξέργαστη εικόνα Olympus ORF</comment>
+- <comment xml:lang="en_GB">Olympus ORF raw image</comment>
++ <comment xml:lang="en-GB">Olympus ORF raw image</comment>
+ <comment xml:lang="es">imagen en bruto ORF de Olympus</comment>
+ <comment xml:lang="eu">Olympus ORF irudi gordina</comment>
+ <comment xml:lang="fi">Olympus-ORF-raakakuva</comment>
+ <comment xml:lang="fo">Olympus ORF rámynd</comment>
+ <comment xml:lang="fr">image brute ORF Olympus</comment>
++ <comment xml:lang="fur">imagjin grese Olympus ORF</comment>
+ <comment xml:lang="ga">amhíomhá Olympus ORF</comment>
+ <comment xml:lang="gl">imaxe en bruto de Olympus ORF</comment>
+ <comment xml:lang="he">תמונה גולמית של Olympus ORF</comment>
+@@ -26543,7 +27477,7 @@
+ <comment xml:lang="oc">imatge brut ORF Olympus</comment>
+ <comment xml:lang="pl">Surowy obraz Olympus ORF</comment>
+ <comment xml:lang="pt">imagem em bruto Olympus ORF</comment>
+- <comment xml:lang="pt_BR">Imagem bruta ORF da Olympus</comment>
++ <comment xml:lang="pt-BR">Imagem bruta ORF da Olympus</comment>
+ <comment xml:lang="ro">Imagine brută Olympus ORF</comment>
+ <comment xml:lang="ru">Необработанное изображение Olympus ORF</comment>
+ <comment xml:lang="sk">Surový obrázok Olympus ORF</comment>
+@@ -26554,37 +27488,39 @@
+ <comment xml:lang="tr">Olympus ORF ham görüntüsü</comment>
+ <comment xml:lang="uk">цифровий негатив ORF Olympus</comment>
+ <comment xml:lang="vi">Ảnh thô Olympus ORF</comment>
+- <comment xml:lang="zh_CN">奥林巴斯 ORF 原始图像</comment>
+- <comment xml:lang="zh_TW">Olympus ORF 原生影像</comment>
++ <comment xml:lang="zh-CN">奥林巴斯 ORF 原始图像</comment>
++ <comment xml:lang="zh-TW">Olympus ORF 原始影像</comment>
+ <acronym>ORF</acronym>
+ <expanded-acronym>Olympus Raw Format</expanded-acronym>
+ <sub-class-of type="image/x-dcraw"/>
+ <magic priority="50">
+-
+-
+-
+-
+-
++ <!-- an ORF file is basically a TIFF file with a non standard !-->
++ <!-- header IIRO which is not nice since it is only composed !-->
++ <!-- of ASCII codes. Fortunately, the TIFF header is followed !-->
++ <!-- by the offset of the first TIFF ifd which is always !-->
++ <!-- 0x00000008 (Little endian) for an ORF !-->
+ <match value="IIRO\x08\x00\x00\x00" type="string" offset="0"/>
+ </magic>
+ <glob pattern="*.orf"/>
+ </mime-type>
+ <mime-type type="image/x-panasonic-rw">
+ <comment>Panasonic raw image</comment>
++ <comment xml:lang="af">Panasonic rou beeld</comment>
+ <comment xml:lang="ar">صورة Panasonic خامة</comment>
+- <comment xml:lang="be@latin">Suvoraja vyjava Panasonic</comment>
++ <comment xml:lang="be-Latn">Suvoraja vyjava Panasonic</comment>
+ <comment xml:lang="bg">Изображение — Panasonic raw</comment>
+ <comment xml:lang="ca">imatge en cru de Panasonic</comment>
+ <comment xml:lang="cs">surový obrázek Panasonic</comment>
+- <comment xml:lang="da">Panasonicråbillede (raw)</comment>
++ <comment xml:lang="da">Panasonic raw-billede</comment>
+ <comment xml:lang="de">Panasonic-Rohbild</comment>
+ <comment xml:lang="el">Ανεπεξέργαστη εικόνα Panasonic</comment>
+- <comment xml:lang="en_GB">Panasonic raw image</comment>
++ <comment xml:lang="en-GB">Panasonic raw image</comment>
+ <comment xml:lang="es">imagen en bruto de Panasonic</comment>
+ <comment xml:lang="eu">Panasonic irudi gordina</comment>
+ <comment xml:lang="fi">Panasonic-raakakuva</comment>
+ <comment xml:lang="fo">Panasonic rámynd</comment>
+ <comment xml:lang="fr">image brute Panasonic</comment>
++ <comment xml:lang="fur">imagjin grese Panasonic</comment>
+ <comment xml:lang="ga">amhíomhá Panasonic</comment>
+ <comment xml:lang="gl">imaxe en bruto de Panasonic</comment>
+ <comment xml:lang="he">תמונה גולמית של Panasonic</comment>
+@@ -26604,7 +27540,7 @@
+ <comment xml:lang="oc">imatge brut Panasonic</comment>
+ <comment xml:lang="pl">Obraz raw Panasonic</comment>
+ <comment xml:lang="pt">imagem em bruto Panasonic</comment>
+- <comment xml:lang="pt_BR">Imagem bruta da Panasonic</comment>
++ <comment xml:lang="pt-BR">Imagem bruta da Panasonic</comment>
+ <comment xml:lang="ro">Imagine brută Panasonic</comment>
+ <comment xml:lang="ru">Необработанное изображение Panasonic</comment>
+ <comment xml:lang="sk">Surový obrázok Panasonic</comment>
+@@ -26615,58 +27551,69 @@
+ <comment xml:lang="tr">Panasonic ham görüntüsü</comment>
+ <comment xml:lang="uk">цифровий негатив Panasonic</comment>
+ <comment xml:lang="vi">Ảnh thô Panasonic</comment>
+- <comment xml:lang="zh_CN">松下原始图像</comment>
+- <comment xml:lang="zh_TW">Panasonic 原生影像</comment>
++ <comment xml:lang="zh-CN">松下原始图像</comment>
++ <comment xml:lang="zh-TW">Panasonic 原始影像</comment>
+ <sub-class-of type="image/x-dcraw"/>
+ <magic priority="50">
+-
++ <!-- Some kind of TIFF file with a non-standard version in prefix !-->
+ <match value="IIU\x00\x08\x00\x00\x00" type="string" offset="0"/>
+ </magic>
+ <glob pattern="*.raw"/>
+ <alias type="image/x-panasonic-raw"/>
+ </mime-type>
+ <mime-type type="image/x-panasonic-rw2">
+- <comment>Panasonic raw2 image</comment>
+- <comment xml:lang="bg">Изображение — Panasonic raw2</comment>
+- <comment xml:lang="ca">imatge «RAW2» de Panasonic</comment>
+- <comment xml:lang="cs">surový obrázek Panasonic raw2</comment>
+- <comment xml:lang="da">Panasonic-rå2-billede (raw)</comment>
+- <comment xml:lang="de">Panasonic raw2-Bild</comment>
+- <comment xml:lang="el">Ανεπεξέργαστη εικόνα Panasonic (raw2)</comment>
+- <comment xml:lang="en_GB">Panasonic raw2 image</comment>
+- <comment xml:lang="es">imagen en bruto raw2 de Panasonic</comment>
+- <comment xml:lang="eu">Panasonic raw2 irudia</comment>
+- <comment xml:lang="fi">Panasonic raw2 -kuva</comment>
+- <comment xml:lang="fr">image raw2 Panasonic</comment>
+- <comment xml:lang="ga">íomhá raw2 Panasonic</comment>
+- <comment xml:lang="gl">imaxe en bruto raw2 de Panasonic</comment>
+- <comment xml:lang="he">תמונת raw2 של Panasonic</comment>
+- <comment xml:lang="hr">Panasonic raw2 image</comment>
+- <comment xml:lang="hu">Panasonic raw2 kép</comment>
+- <comment xml:lang="ia">Imagine raw2 Panasonic</comment>
+- <comment xml:lang="id">Image Panasonic raw2</comment>
+- <comment xml:lang="it">Immagine raw2 Panasonic</comment>
+- <comment xml:lang="ja">Panasonic raw2 画像</comment>
+- <comment xml:lang="kk">Panasonic raw2 суреті</comment>
+- <comment xml:lang="ko">파나소닉 RAW2 사진</comment>
+- <comment xml:lang="lv">Panasonic raw2 jēlattēls</comment>
+- <comment xml:lang="nl">Panasonic raw2 image</comment>
+- <comment xml:lang="oc">imatge raw2 Panasonic</comment>
+- <comment xml:lang="pl">Obraz raw2 Panasonic</comment>
++ <comment>Panasonic raw image</comment>
++ <comment xml:lang="af">Panasonic rou beeld</comment>
++ <comment xml:lang="ar">صورة Panasonic خامة</comment>
++ <comment xml:lang="be-Latn">Suvoraja vyjava Panasonic</comment>
++ <comment xml:lang="bg">Изображение — Panasonic raw</comment>
++ <comment xml:lang="ca">imatge en cru de Panasonic</comment>
++ <comment xml:lang="cs">surový obrázek Panasonic</comment>
++ <comment xml:lang="da">Panasonic raw-billede</comment>
++ <comment xml:lang="de">Panasonic-Rohbild</comment>
++ <comment xml:lang="el">Ανεπεξέργαστη εικόνα Panasonic</comment>
++ <comment xml:lang="en-GB">Panasonic raw image</comment>
++ <comment xml:lang="es">imagen en bruto de Panasonic</comment>
++ <comment xml:lang="eu">Panasonic irudi gordina</comment>
++ <comment xml:lang="fi">Panasonic-raakakuva</comment>
++ <comment xml:lang="fo">Panasonic rámynd</comment>
++ <comment xml:lang="fr">image brute Panasonic</comment>
++ <comment xml:lang="fur">imagjin grese Panasonic</comment>
++ <comment xml:lang="ga">amhíomhá Panasonic</comment>
++ <comment xml:lang="gl">imaxe en bruto de Panasonic</comment>
++ <comment xml:lang="he">תמונה גולמית של Panasonic</comment>
++ <comment xml:lang="hr">Panasonic osnovna slika</comment>
++ <comment xml:lang="hu">Panasonic nyers kép</comment>
++ <comment xml:lang="ia">Imagine brute Panasonic</comment>
++ <comment xml:lang="id">Citra mentah Panasonic</comment>
++ <comment xml:lang="it">Immagine raw Panasonic</comment>
++ <comment xml:lang="ja">Panasonic raw 画像</comment>
++ <comment xml:lang="kk">Panasonic өңделмеген суреті</comment>
++ <comment xml:lang="ko">파나소닉 RAW 사진</comment>
++ <comment xml:lang="lt">Panasonic neapdorotas paveikslėlis</comment>
++ <comment xml:lang="lv">Panasonic jēlattēls</comment>
++ <comment xml:lang="nb">Panasonic raw-bilde</comment>
++ <comment xml:lang="nl">onbewerkt Panasonic-beeld</comment>
++ <comment xml:lang="nn">Panasonic råbilete</comment>
++ <comment xml:lang="oc">imatge brut Panasonic</comment>
++ <comment xml:lang="pl">Obraz raw Panasonic</comment>
+ <comment xml:lang="pt">imagem em bruto Panasonic</comment>
+- <comment xml:lang="pt_BR">Imagem raw2 da Panasonic</comment>
+- <comment xml:lang="ru">Необработанное изображение Panasonic raw2</comment>
+- <comment xml:lang="sk">Surový obrázok Panasonic raw2</comment>
+- <comment xml:lang="sl">Slikovna datoteka Panasonic raw2</comment>
+- <comment xml:lang="sr">Панасоник сирова2 слика</comment>
+- <comment xml:lang="sv">Panasonic raw2-bild</comment>
+- <comment xml:lang="tr">Panasonic raw2 görüntüsü</comment>
+- <comment xml:lang="uk">зображення формату raw2 Panasonic</comment>
+- <comment xml:lang="zh_CN">松下 raw2 图像</comment>
+- <comment xml:lang="zh_TW">Panasonic raw2 影像</comment>
++ <comment xml:lang="pt-BR">Imagem bruta da Panasonic</comment>
++ <comment xml:lang="ro">Imagine brută Panasonic</comment>
++ <comment xml:lang="ru">Необработанное изображение Panasonic</comment>
++ <comment xml:lang="sk">Surový obrázok Panasonic</comment>
++ <comment xml:lang="sl">Surova slikovna datoteka Panasonic</comment>
++ <comment xml:lang="sq">Figurë raw Panasonic</comment>
++ <comment xml:lang="sr">Панасоник сирова слика</comment>
++ <comment xml:lang="sv">Panasonic-råbild</comment>
++ <comment xml:lang="tr">Panasonic ham görüntüsü</comment>
++ <comment xml:lang="uk">цифровий негатив Panasonic</comment>
++ <comment xml:lang="vi">Ảnh thô Panasonic</comment>
++ <comment xml:lang="zh-CN">松下原始图像</comment>
++ <comment xml:lang="zh-TW">Panasonic 原始影像</comment>
+ <sub-class-of type="image/x-dcraw"/>
+ <magic priority="50">
+-
++ <!-- Some kind of TIFF file with a non-standard version in prefix !-->
+ <match value="IIU\x00\x18\x00\x00\x00" type="string" offset="0"/>
+ </magic>
+ <glob pattern="*.rw2"/>
+@@ -26674,20 +27621,22 @@
+ </mime-type>
+ <mime-type type="image/x-pentax-pef">
+ <comment>Pentax PEF raw image</comment>
++ <comment xml:lang="af">Pentax PEF rou beeld</comment>
+ <comment xml:lang="ar">صورة Pentax PEF خامة</comment>
+- <comment xml:lang="be@latin">Suvoraja vyjava Pentax PEF</comment>
++ <comment xml:lang="be-Latn">Suvoraja vyjava Pentax PEF</comment>
+ <comment xml:lang="bg">Изображение — Pentax PEF raw</comment>
+ <comment xml:lang="ca">imatge en cru de Pentax PEF</comment>
+ <comment xml:lang="cs">surový obrázek Pentax PEF</comment>
+- <comment xml:lang="da">Pentax PEF-råbillede</comment>
++ <comment xml:lang="da">Pentax PEF raw-billede</comment>
+ <comment xml:lang="de">Pentax-PEF-Rohbild</comment>
+ <comment xml:lang="el">Ανεπεξέργαστη εικόνα Pentax PEF</comment>
+- <comment xml:lang="en_GB">Pentax PEF raw image</comment>
++ <comment xml:lang="en-GB">Pentax PEF raw image</comment>
+ <comment xml:lang="es">imagen en bruto PEF de Pentax</comment>
+ <comment xml:lang="eu">Pentax PEF irudi gordina</comment>
+ <comment xml:lang="fi">Pentax-PEF-raakakuva</comment>
+ <comment xml:lang="fo">Pentax PEF rámynd</comment>
+ <comment xml:lang="fr">image brute PEF Pentax</comment>
++ <comment xml:lang="fur">imagjin grese Pentax PEF</comment>
+ <comment xml:lang="ga">amhíomhá Pentax PEF</comment>
+ <comment xml:lang="gl">imaxe en bruto PEF de Pentax</comment>
+ <comment xml:lang="he">תמונה גולמית של Pentax PEF</comment>
+@@ -26707,7 +27656,7 @@
+ <comment xml:lang="oc">imatge brut PEF Pentax</comment>
+ <comment xml:lang="pl">Surowy obraz Pentax PEF</comment>
+ <comment xml:lang="pt">imagem em bruto Pentax PEF</comment>
+- <comment xml:lang="pt_BR">Imagem bruta PEF da Pentax</comment>
++ <comment xml:lang="pt-BR">Imagem bruta PEF da Pentax</comment>
+ <comment xml:lang="ro">Imagine brută Pentax PEF</comment>
+ <comment xml:lang="ru">Необработанное изображение Pentax PEF</comment>
+ <comment xml:lang="sk">Surový obrázok Pentax PEF</comment>
+@@ -26718,8 +27667,8 @@
+ <comment xml:lang="tr">Pentax PEF ham görüntüsü</comment>
+ <comment xml:lang="uk">цифровий негатив PEF Pentax</comment>
+ <comment xml:lang="vi">Ảnh thô Pentax PEF</comment>
+- <comment xml:lang="zh_CN">宾得 PEF 原始图像</comment>
+- <comment xml:lang="zh_TW">Pentax PEF 原生影像</comment>
++ <comment xml:lang="zh-CN">宾得 PEF 原始图像</comment>
++ <comment xml:lang="zh-TW">Pentax PEF 原始影像</comment>
+ <acronym>PEF</acronym>
+ <expanded-acronym>Pentax Electronic Format</expanded-acronym>
+ <sub-class-of type="image/x-dcraw"/>
+@@ -26728,20 +27677,22 @@
+ </mime-type>
+ <mime-type type="image/x-sigma-x3f">
+ <comment>Sigma X3F raw image</comment>
++ <comment xml:lang="af">Sigma X3F rou beeld</comment>
+ <comment xml:lang="ar">صورة Sigma X3F خامة</comment>
+- <comment xml:lang="be@latin">Suvoraja vyjava Sigma X3F</comment>
++ <comment xml:lang="be-Latn">Suvoraja vyjava Sigma X3F</comment>
+ <comment xml:lang="bg">Изображение — Sigma X3F raw</comment>
+ <comment xml:lang="ca">imatge en cru de Sigma X3F</comment>
+ <comment xml:lang="cs">surový obrázek Sigma X3F</comment>
+- <comment xml:lang="da">Sigma X3F-råbillede</comment>
++ <comment xml:lang="da">Sigma X3F raw-billede</comment>
+ <comment xml:lang="de">Sigma-X3F-Rohbild</comment>
+ <comment xml:lang="el">Ανεπεξέργαστη εικόνα Sigma X3F</comment>
+- <comment xml:lang="en_GB">Sigma X3F raw image</comment>
++ <comment xml:lang="en-GB">Sigma X3F raw image</comment>
+ <comment xml:lang="es">imagen en bruto X3F de Sigma</comment>
+ <comment xml:lang="eu">Sigma X3F irudi gordina</comment>
+ <comment xml:lang="fi">Sigma-X3F-raakakuva</comment>
+ <comment xml:lang="fo">Sigma X3F rámynd</comment>
+ <comment xml:lang="fr">image brute X3F Sigma</comment>
++ <comment xml:lang="fur">imagjin grese Sigma X3F</comment>
+ <comment xml:lang="ga">amhíomhá Sigma X3F</comment>
+ <comment xml:lang="gl">imaxe en bruto X3F de Sigma</comment>
+ <comment xml:lang="he">תמונה גולמית של Sigma X3F</comment>
+@@ -26761,7 +27712,7 @@
+ <comment xml:lang="oc">imatge brut X3F Sigma</comment>
+ <comment xml:lang="pl">Surowy obraz X3F Sigma</comment>
+ <comment xml:lang="pt">imagem em bruto Sigma X3F</comment>
+- <comment xml:lang="pt_BR">Imagem bruta X3F da Sigma</comment>
++ <comment xml:lang="pt-BR">Imagem bruta X3F da Sigma</comment>
+ <comment xml:lang="ro">Imagine brută Sigma X3F</comment>
+ <comment xml:lang="ru">Необработанное изображение Sigma X3F</comment>
+ <comment xml:lang="sk">Surový obrázok Sigma X3F</comment>
+@@ -26772,15 +27723,15 @@
+ <comment xml:lang="tr">Sigma X3F ham görüntüsü</comment>
+ <comment xml:lang="uk">цифровий негатив X3F Sigma</comment>
+ <comment xml:lang="vi">Ảnh thô Sigma X3F</comment>
+- <comment xml:lang="zh_CN">适马 X3F 原始图像</comment>
+- <comment xml:lang="zh_TW">Sigma X3F 原生影像</comment>
++ <comment xml:lang="zh-CN">适马 X3F 原始图像</comment>
++ <comment xml:lang="zh-TW">Sigma X3F 原始影像</comment>
+ <acronym>X3F</acronym>
+ <expanded-acronym>X3 Foveon</expanded-acronym>
+ <sub-class-of type="image/x-dcraw"/>
+ <magic priority="50">
+-
++ <!-- The header is "FOVb" (Foveon) !-->
+ <match value="FOVb" type="string" offset="0">
+-
++ <!-- Followed by a 32bit LSB specifying the version number (major.minor) !-->
+ <match value="0x00FF00FF" type="little32" offset="4" mask="0xFF00FF00"/>
+ </match>
+ </magic>
+@@ -26788,20 +27739,22 @@
+ </mime-type>
+ <mime-type type="image/x-sony-srf">
+ <comment>Sony SRF raw image</comment>
++ <comment xml:lang="af">Sony SRF rou beeld</comment>
+ <comment xml:lang="ar">صورة Sony SRF خامة</comment>
+- <comment xml:lang="be@latin">Suvoraja vyjava Sony SRF</comment>
++ <comment xml:lang="be-Latn">Suvoraja vyjava Sony SRF</comment>
+ <comment xml:lang="bg">Изображение — Sony SRF raw</comment>
+ <comment xml:lang="ca">imatge en cru de Sony SRF</comment>
+ <comment xml:lang="cs">surový obrázek Sony SRF</comment>
+- <comment xml:lang="da">Sony SRF-råbillede</comment>
++ <comment xml:lang="da">Sony SRF raw-billede</comment>
+ <comment xml:lang="de">Sony-SRF-Rohbild</comment>
+ <comment xml:lang="el">Ανεπεξέργαστη εικόνα Sony SRF</comment>
+- <comment xml:lang="en_GB">Sony SRF raw image</comment>
++ <comment xml:lang="en-GB">Sony SRF raw image</comment>
+ <comment xml:lang="es">imagen en bruto SRF de Sony</comment>
+ <comment xml:lang="eu">Sony SRF irudi gordina</comment>
+ <comment xml:lang="fi">Sony-SRF-raakakuva</comment>
+ <comment xml:lang="fo">Sony SRF rámynd</comment>
+ <comment xml:lang="fr">image brute SRF Sony</comment>
++ <comment xml:lang="fur">imagjin grese Sony SRF</comment>
+ <comment xml:lang="ga">amhíomhá Sony SRF</comment>
+ <comment xml:lang="gl">imaxe en bruto SRF de sony</comment>
+ <comment xml:lang="he">תמונה גולמית של Sony SRF</comment>
+@@ -26821,7 +27774,7 @@
+ <comment xml:lang="oc">imatge brut SRF Sony</comment>
+ <comment xml:lang="pl">Surowy obraz SRF Sony</comment>
+ <comment xml:lang="pt">imagem em bruto Sony SRF</comment>
+- <comment xml:lang="pt_BR">Imagem bruta SRF da Sony</comment>
++ <comment xml:lang="pt-BR">Imagem bruta SRF da Sony</comment>
+ <comment xml:lang="ro">Imagine brută Sony SRF</comment>
+ <comment xml:lang="ru">Необработанное изображение Sony SRF</comment>
+ <comment xml:lang="sk">Surový obrázok Sony SRF</comment>
+@@ -26832,8 +27785,8 @@
+ <comment xml:lang="tr">Sony SRF ham görüntüsü</comment>
+ <comment xml:lang="uk">цифровий негатив SRF Sony</comment>
+ <comment xml:lang="vi">Ảnh thô Sony SRF</comment>
+- <comment xml:lang="zh_CN">索尼 SRF 原始映像</comment>
+- <comment xml:lang="zh_TW">Sony SRF 原生影像</comment>
++ <comment xml:lang="zh-CN">索尼 SRF 原始映像</comment>
++ <comment xml:lang="zh-TW">Sony SRF 原始影像</comment>
+ <acronym>SRF</acronym>
+ <expanded-acronym>Sony Raw Format</expanded-acronym>
+ <sub-class-of type="image/x-dcraw"/>
+@@ -26842,20 +27795,22 @@
+ </mime-type>
+ <mime-type type="image/x-sony-sr2">
+ <comment>Sony SR2 raw image</comment>
++ <comment xml:lang="af">Sony SR2 rou beeld</comment>
+ <comment xml:lang="ar">صورة Sony SR2 خامة</comment>
+- <comment xml:lang="be@latin">Suvoraja vyjava Sony SR2</comment>
++ <comment xml:lang="be-Latn">Suvoraja vyjava Sony SR2</comment>
+ <comment xml:lang="bg">Изображение — Sony SR2 raw</comment>
+ <comment xml:lang="ca">imatge en cru de Sony SR2</comment>
+ <comment xml:lang="cs">surový obrázek Sony SR2</comment>
+- <comment xml:lang="da">Sony SR2-råbillede</comment>
++ <comment xml:lang="da">Sony SR2 raw-billede</comment>
+ <comment xml:lang="de">Sony-SR2-Rohbild</comment>
+ <comment xml:lang="el">Ανεπεξέργαστη εικόνα Sony SR2</comment>
+- <comment xml:lang="en_GB">Sony SR2 raw image</comment>
++ <comment xml:lang="en-GB">Sony SR2 raw image</comment>
+ <comment xml:lang="es">imagen en bruto SR2 de Sony</comment>
+ <comment xml:lang="eu">Sony SR2 irudi gordina</comment>
+ <comment xml:lang="fi">Sony-SR2-raakakuva</comment>
+ <comment xml:lang="fo">Sony SR2 rámynd</comment>
+ <comment xml:lang="fr">image brute SR2 Sony</comment>
++ <comment xml:lang="fur">imagjin grese Sony SR2</comment>
+ <comment xml:lang="ga">amhíomhá Sony SR2</comment>
+ <comment xml:lang="gl">imaxe en bruto SR2 de sony</comment>
+ <comment xml:lang="he">תמונה גולמית של Sony SR2</comment>
+@@ -26875,7 +27830,7 @@
+ <comment xml:lang="oc">imatge brut SR2 Sony</comment>
+ <comment xml:lang="pl">Surowy obraz SR2 Sony</comment>
+ <comment xml:lang="pt">imagem em bruto Sony SR2</comment>
+- <comment xml:lang="pt_BR">Imagem bruta SR2 da Sony</comment>
++ <comment xml:lang="pt-BR">Imagem bruta SR2 da Sony</comment>
+ <comment xml:lang="ro">Imagine brută Sony SR2</comment>
+ <comment xml:lang="ru">Необработанное изображение Sony SR2</comment>
+ <comment xml:lang="sk">Surový obrázok Sony SR2</comment>
+@@ -26886,8 +27841,8 @@
+ <comment xml:lang="tr">Sony SR2 ham görüntüsü</comment>
+ <comment xml:lang="uk">цифровий негатив SR2 Sony</comment>
+ <comment xml:lang="vi">Ảnh thô Sony SR2</comment>
+- <comment xml:lang="zh_CN">索尼 SR2 原始映像</comment>
+- <comment xml:lang="zh_TW">Sony SR2 原生影像</comment>
++ <comment xml:lang="zh-CN">索尼 SR2 原始映像</comment>
++ <comment xml:lang="zh-TW">Sony SR2 原始影像</comment>
+ <acronym>SR2</acronym>
+ <expanded-acronym>Sony Raw format 2</expanded-acronym>
+ <sub-class-of type="image/x-dcraw"/>
+@@ -26896,20 +27851,22 @@
+ </mime-type>
+ <mime-type type="image/x-sony-arw">
+ <comment>Sony ARW raw image</comment>
++ <comment xml:lang="af">Sony ARW rou beeld</comment>
+ <comment xml:lang="ar">صورة Sony ARW خامة</comment>
+- <comment xml:lang="be@latin">Suvoraja vyjava Sony ARW</comment>
++ <comment xml:lang="be-Latn">Suvoraja vyjava Sony ARW</comment>
+ <comment xml:lang="bg">Изображение — Sony ARW raw</comment>
+ <comment xml:lang="ca">imatge en cru de Sony ARW</comment>
+ <comment xml:lang="cs">surový obrázek Sony ARW</comment>
+- <comment xml:lang="da">Sony ARW-råbillede</comment>
++ <comment xml:lang="da">Sony ARW raw-billede</comment>
+ <comment xml:lang="de">Sony-ARW-Rohbild</comment>
+ <comment xml:lang="el">Ανεπεξέργαστη εικόνα Sony ARW</comment>
+- <comment xml:lang="en_GB">Sony ARW raw image</comment>
++ <comment xml:lang="en-GB">Sony ARW raw image</comment>
+ <comment xml:lang="es">imagen en bruto ARW de Sony</comment>
+ <comment xml:lang="eu">Sony ARW irudi gordina</comment>
+ <comment xml:lang="fi">Sony-ARW-raakakuva</comment>
+ <comment xml:lang="fo">Sony ARW rámynd</comment>
+ <comment xml:lang="fr">image brute ARW Sony</comment>
++ <comment xml:lang="fur">imagjin grese Sony ARW</comment>
+ <comment xml:lang="ga">amhíomhá Sony ARW</comment>
+ <comment xml:lang="gl">imaxe en bruto ARW de sony</comment>
+ <comment xml:lang="he">תמונה גולמית של Sony ARW</comment>
+@@ -26929,7 +27886,7 @@
+ <comment xml:lang="oc">imatge brut ARW Sony</comment>
+ <comment xml:lang="pl">Surowy obraz ARW Sony</comment>
+ <comment xml:lang="pt">imagem em bruto Sony ARW</comment>
+- <comment xml:lang="pt_BR">Imagem bruta ARW da Sony</comment>
++ <comment xml:lang="pt-BR">Imagem bruta ARW da Sony</comment>
+ <comment xml:lang="ro">Imagine brută Sony ARW</comment>
+ <comment xml:lang="ru">Необработанное изображение Sony ARW</comment>
+ <comment xml:lang="sk">Surový obrázok Sony ARW</comment>
+@@ -26940,8 +27897,8 @@
+ <comment xml:lang="tr">Sony ARW ham görüntüsü</comment>
+ <comment xml:lang="uk">цифровий негатив ARW Sony</comment>
+ <comment xml:lang="vi">Ảnh thô Sony ARW</comment>
+- <comment xml:lang="zh_CN">索尼 ARW 原始映像</comment>
+- <comment xml:lang="zh_TW">Sony ARW 原生影像</comment>
++ <comment xml:lang="zh-CN">索尼 ARW 原始映像</comment>
++ <comment xml:lang="zh-TW">Sony ARW 原始影像</comment>
+ <acronym>ARW</acronym>
+ <expanded-acronym>Alpha Raw format</expanded-acronym>
+ <sub-class-of type="image/x-dcraw"/>
+@@ -26950,9 +27907,10 @@
+ </mime-type>
+ <mime-type type="image/png">
+ <comment>PNG image</comment>
++ <comment xml:lang="af">PNG-beeld</comment>
+ <comment xml:lang="ar">صورة PNG</comment>
+ <comment xml:lang="az">PNG rəsmi</comment>
+- <comment xml:lang="be@latin">Vyjava PNG</comment>
++ <comment xml:lang="be-Latn">Vyjava PNG</comment>
+ <comment xml:lang="bg">Изображение — PNG</comment>
+ <comment xml:lang="ca">imatge PNG</comment>
+ <comment xml:lang="cs">obrázek PNG</comment>
+@@ -26960,13 +27918,14 @@
+ <comment xml:lang="da">PNG-billede</comment>
+ <comment xml:lang="de">PNG-Bild</comment>
+ <comment xml:lang="el">Εικόνα PNG</comment>
+- <comment xml:lang="en_GB">PNG image</comment>
++ <comment xml:lang="en-GB">PNG image</comment>
+ <comment xml:lang="eo">PNG-bildo</comment>
+ <comment xml:lang="es">imagen PNG</comment>
+ <comment xml:lang="eu">PNG irudia</comment>
+ <comment xml:lang="fi">PNG-kuva</comment>
+ <comment xml:lang="fo">PNG mynd</comment>
+ <comment xml:lang="fr">image PNG</comment>
++ <comment xml:lang="fur">imagjin PNG</comment>
+ <comment xml:lang="ga">íomhá PNG</comment>
+ <comment xml:lang="gl">imaxe PNG</comment>
+ <comment xml:lang="he">תמונת PNG</comment>
+@@ -26987,7 +27946,7 @@
+ <comment xml:lang="oc">imatge PNG</comment>
+ <comment xml:lang="pl">Obraz PNG</comment>
+ <comment xml:lang="pt">imagem PNG</comment>
+- <comment xml:lang="pt_BR">Imagem PNG</comment>
++ <comment xml:lang="pt-BR">Imagem PNG</comment>
+ <comment xml:lang="ro">Imagine PNG</comment>
+ <comment xml:lang="ru">Изображение PNG</comment>
+ <comment xml:lang="sk">Obrázok PNG</comment>
+@@ -26998,79 +27957,62 @@
+ <comment xml:lang="tr">PNG görüntüsü</comment>
+ <comment xml:lang="uk">зображення PNG</comment>
+ <comment xml:lang="vi">Ảnh PNG</comment>
+- <comment xml:lang="zh_CN">PNG 图像</comment>
+- <comment xml:lang="zh_TW">PNG 影像</comment>
++ <comment xml:lang="zh-CN">PNG 图像</comment>
++ <comment xml:lang="zh-TW">PNG 影像</comment>
+ <magic priority="50">
+- <match value="\x89PNG" type="string" offset="0"/>
++ <match type="string" value="\x89PNG" offset="0"/>
+ </magic>
+ <glob pattern="*.png"/>
+ </mime-type>
+ <mime-type type="image/rle">
+- <comment>Run Length Encoded bitmap image</comment>
+- <comment xml:lang="ar">تشغيل صورة نقطية طولية الترميز</comment>
+- <comment xml:lang="be@latin">Bitmapnaja vyjava, zakadavanaja ŭ Run Length</comment>
+- <comment xml:lang="bg">Изображение — RLE Bitmap</comment>
+- <comment xml:lang="ca">imatge de mapa de bits «Run Lenght Encoded»</comment>
+- <comment xml:lang="cs">obrázek bitové mapy Run Length Encoded</comment>
+- <comment xml:lang="da">Run Length Encoded-bitmapbillede</comment>
++ <comment>RLE bitmap image</comment>
++ <comment xml:lang="bg">Изображение — RLE bitmap</comment>
++ <comment xml:lang="ca">imatge de mapa de bits RLE</comment>
++ <comment xml:lang="da">RLE bitmap-billede</comment>
+ <comment xml:lang="de">Lauflängenkodiertes Bitmap-Bild</comment>
+- <comment xml:lang="el">Εικόνα bitmap κωδικοποιημένου μήκος εκτέλεσης</comment>
+- <comment xml:lang="en_GB">Run Length Encoded bitmap image</comment>
+- <comment xml:lang="es">mapa de bits con codificación del tamaño durante la ejecución</comment>
+- <comment xml:lang="eu">'Run Lenght Encoded' bitmap irudia</comment>
+- <comment xml:lang="fi">RLE-koodattu bittikartta</comment>
+- <comment xml:lang="fr">image matricielle Run Length Encoded</comment>
+- <comment xml:lang="ga">íomhá ghiotánmhapach ionchódaithe fad reatha</comment>
+- <comment xml:lang="gl">mapa de bits con codificación do tamaño durante a execución</comment>
+- <comment xml:lang="he">מקודד מפת סיביות של Run Length</comment>
+- <comment xml:lang="hr">Run Length Encoded bitmap slika</comment>
+- <comment xml:lang="hu">Run Length Encoded bitkép</comment>
+- <comment xml:lang="ia">Imagine raster in codification Run-Length</comment>
+- <comment xml:lang="id">Citra peta bit Run Length Encoded</comment>
+- <comment xml:lang="it">Immagine bitmap RLE (Run Length Encoded)</comment>
+- <comment xml:lang="ja">ランレングス符号化ビットマップ画像</comment>
+- <comment xml:lang="kk">RLE сығылған растрлік суреті</comment>
+- <comment xml:lang="ko">RLE 인코딩된 비트맵 그림</comment>
+- <comment xml:lang="lt">Run Length Encoded rastrinis paveikslėlis</comment>
+- <comment xml:lang="lv">Secīgo atkārtojumu kodēts bitkartes attēls</comment>
+- <comment xml:lang="nb">Run Length Encoded bitmap bilde</comment>
+- <comment xml:lang="nl">RLE-gecodeerde bitmap-afbeelding</comment>
+- <comment xml:lang="nn">Run Length Encoded punktgrafikk</comment>
+- <comment xml:lang="oc">imatge matriciala Run Length Encoded</comment>
++ <comment xml:lang="en-GB">RLE bitmap image</comment>
++ <comment xml:lang="es">imagen de mapa de bits RLE</comment>
++ <comment xml:lang="eu">RLE bitmap irudia</comment>
++ <comment xml:lang="fi">RLE-bittikarttakuva</comment>
++ <comment xml:lang="fr">image matricielle RLE</comment>
++ <comment xml:lang="hr">RLE bitmap slika</comment>
++ <comment xml:lang="hu">RLE bitkép</comment>
++ <comment xml:lang="id">Citra bitmap RLE</comment>
++ <comment xml:lang="it">Immagine bitmap RLE</comment>
++ <comment xml:lang="kk">RLE растрлық суреті</comment>
++ <comment xml:lang="ko">RLE 비트맵 그림</comment>
+ <comment xml:lang="pl">Obraz bitmapy RLE</comment>
+- <comment xml:lang="pt">mapa de bitas Run Length Encoded</comment>
+- <comment xml:lang="pt_BR">Classe de comprimento imagem bitmap codificada</comment>
+- <comment xml:lang="ro">Imagine bitmap codată RLE</comment>
+- <comment xml:lang="ru">Растровое изображение, сжатое RLE</comment>
+- <comment xml:lang="sk">Bitmapový obrázok Run Length Encoded</comment>
+- <comment xml:lang="sl">Zaporedno kodirana bitna slika (RLE)</comment>
+- <comment xml:lang="sq">Figurë bitmap RLE (Run Length Encoded)</comment>
+- <comment xml:lang="sr">битмап слика кодирана дужином скупине</comment>
+- <comment xml:lang="sv">Körlängdskodad bitmappbild</comment>
+- <comment xml:lang="tr">Run Length Encoded bit eşlem görüntüsü</comment>
++ <comment xml:lang="pt-BR">Imagem bitmap RLE</comment>
++ <comment xml:lang="ru">Растровое изображение RLE</comment>
++ <comment xml:lang="sl">Bitna slika RLE</comment>
++ <comment xml:lang="sv">RLE bitmappsbild</comment>
++ <comment xml:lang="tr">RLE bit eşlem görüntüsü</comment>
+ <comment xml:lang="uk">растрове зображення RLE</comment>
+- <comment xml:lang="vi">Ảnh mảng mã hóa chiều dài chạy (RLE)</comment>
+- <comment xml:lang="zh_CN">游程编码位图</comment>
+- <comment xml:lang="zh_TW">Run Length Encoded 點陣影像</comment>
++ <comment xml:lang="zh-CN">RLE 位图图像</comment>
++ <comment xml:lang="zh-TW">RLE 點陣影像</comment>
++ <acronym>RLE</acronym>
++ <expanded-acronym>Run Length Encoded</expanded-acronym>
+ <glob pattern="*.rle"/>
+ </mime-type>
+ <mime-type type="image/svg+xml">
+ <comment>SVG image</comment>
++ <comment xml:lang="af">SVG-beeld</comment>
+ <comment xml:lang="ar">صورة SVG</comment>
+- <comment xml:lang="be@latin">Vyjava SVG</comment>
++ <comment xml:lang="be-Latn">Vyjava SVG</comment>
+ <comment xml:lang="bg">Изображение — SVG</comment>
+ <comment xml:lang="ca">imatge SVG</comment>
+ <comment xml:lang="cs">obrázek SVG</comment>
+ <comment xml:lang="da">SVG-billede</comment>
+ <comment xml:lang="de">SVG-Bild</comment>
+ <comment xml:lang="el">Εικόνα SVG</comment>
+- <comment xml:lang="en_GB">SVG image</comment>
++ <comment xml:lang="en-GB">SVG image</comment>
+ <comment xml:lang="eo">SVG-bildo</comment>
+ <comment xml:lang="es">imagen SVG</comment>
+ <comment xml:lang="eu">SVG irudia</comment>
+ <comment xml:lang="fi">SVG-kuva</comment>
+ <comment xml:lang="fo">SVG mynd</comment>
+ <comment xml:lang="fr">image SVG</comment>
++ <comment xml:lang="fur">imagjin SVG</comment>
+ <comment xml:lang="ga">íomhá SVG</comment>
+ <comment xml:lang="gl">imaxe SVG</comment>
+ <comment xml:lang="he">תמונת SVG</comment>
+@@ -27090,7 +28032,7 @@
+ <comment xml:lang="oc">imatge SVG</comment>
+ <comment xml:lang="pl">Obraz SVG</comment>
+ <comment xml:lang="pt">imagem SVG</comment>
+- <comment xml:lang="pt_BR">Imagem SVG</comment>
++ <comment xml:lang="pt-BR">Imagem SVG</comment>
+ <comment xml:lang="ro">Imagine SVG</comment>
+ <comment xml:lang="ru">Изображение SVG</comment>
+ <comment xml:lang="sk">Obrázok SVG</comment>
+@@ -27101,41 +28043,49 @@
+ <comment xml:lang="tr">SVG görüntüsü</comment>
+ <comment xml:lang="uk">зображення SVG</comment>
+ <comment xml:lang="vi">Ảnh SVG</comment>
+- <comment xml:lang="zh_CN">SVG 图像</comment>
+- <comment xml:lang="zh_TW">SVG 影像</comment>
++ <comment xml:lang="zh-CN">SVG 图像</comment>
++ <comment xml:lang="zh-TW">SVG 影像</comment>
+ <acronym>SVG</acronym>
+ <expanded-acronym>Scalable Vector Graphics</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+ <magic priority="80">
+- <match value="&lt;!DOCTYPE svg" type="string" offset="0:256"/>
+- <match value="&lt;svg" type="string" offset="0:256"/>
++ <match type="string" value="&lt;!DOCTYPE svg" offset="0:256"/>
++ </magic>
++ <magic priority="80">
++ <match type="string" value="&lt;!-- Created with Inkscape" offset="0"/>
++ <match type="string" value="&lt;svg" offset="0"/>
++ </magic>
++ <magic priority="45">
++ <match type="string" value="&lt;svg" offset="1:256"/>
+ </magic>
+ <glob pattern="*.svg"/>
+ <root-XML namespaceURI="http://www.w3.org/2000/svg" localName="svg"/>
+ </mime-type>
+ <mime-type type="image/svg+xml-compressed">
+ <comment>compressed SVG image</comment>
++ <comment xml:lang="af">saamgepersde SVG-beeld</comment>
+ <comment xml:lang="ar">صورة SVG مضغوطة</comment>
+- <comment xml:lang="be@latin">skampresavanaja vyjava SVG</comment>
++ <comment xml:lang="be-Latn">skampresavanaja vyjava SVG</comment>
+ <comment xml:lang="bg">Изображение — SVG, компресирано</comment>
+ <comment xml:lang="ca">imatge SVG amb compressió</comment>
+ <comment xml:lang="cs">komprimovaný obrázek SVG</comment>
+ <comment xml:lang="da">SVG-komprimeret billede</comment>
+ <comment xml:lang="de">Komprimiertes SVG-Bild</comment>
+ <comment xml:lang="el">Συμπιεσμένη εικόνα SVG</comment>
+- <comment xml:lang="en_GB">compressed SVG image</comment>
++ <comment xml:lang="en-GB">compressed SVG image</comment>
+ <comment xml:lang="es">imagen SVG comprimida</comment>
+ <comment xml:lang="eu">konprimitutako SVG irudia</comment>
+ <comment xml:lang="fi">pakattu SVG-kuva</comment>
+ <comment xml:lang="fo">stappað SVG mynd</comment>
+ <comment xml:lang="fr">image SVG compressée</comment>
++ <comment xml:lang="fur">imagjin SVG comprimude</comment>
+ <comment xml:lang="ga">íomhá SVG comhbhrúite</comment>
+ <comment xml:lang="gl">imaxe SVG comprimida</comment>
+ <comment xml:lang="he">תמונת SVG מכווצת</comment>
+ <comment xml:lang="hr">Sažeta SVG slika</comment>
+ <comment xml:lang="hu">tömörített SVG kép</comment>
+ <comment xml:lang="ia">Imagine SVG comprimite</comment>
+- <comment xml:lang="id">Citra SVG terkompresi</comment>
++ <comment xml:lang="id">citra SVG terkompresi</comment>
+ <comment xml:lang="it">Immagine SVG compressa</comment>
+ <comment xml:lang="ja">圧縮 SVG 画像</comment>
+ <comment xml:lang="kk">сығылған SVG суреті</comment>
+@@ -27148,7 +28098,7 @@
+ <comment xml:lang="oc">imatge SVG compressat</comment>
+ <comment xml:lang="pl">Skompresowany obraz SVG</comment>
+ <comment xml:lang="pt">imagem SVG comprimida</comment>
+- <comment xml:lang="pt_BR">Imagem SVG compactada</comment>
++ <comment xml:lang="pt-BR">Imagem SVG compactada</comment>
+ <comment xml:lang="ro">imagine comprimată SVG</comment>
+ <comment xml:lang="ru">Сжатое изображение SVG</comment>
+ <comment xml:lang="sk">Komprimovaný obrázok SVG</comment>
+@@ -27159,8 +28109,8 @@
+ <comment xml:lang="tr">sıkıştırılmış SVG görüntüsü</comment>
+ <comment xml:lang="uk">стиснене зображення SVG</comment>
+ <comment xml:lang="vi">ảnh SVG đã nén</comment>
+- <comment xml:lang="zh_CN">压缩的 SVG 图像</comment>
+- <comment xml:lang="zh_TW">壓縮版 SVG 影像</comment>
++ <comment xml:lang="zh-CN">压缩的 SVG 图像</comment>
++ <comment xml:lang="zh-TW">壓縮版 SVG 影像</comment>
+ <acronym>SVG</acronym>
+ <expanded-acronym>Scalable Vector Graphics</expanded-acronym>
+ <sub-class-of type="application/gzip"/>
+@@ -27168,21 +28118,23 @@
+ </mime-type>
+ <mime-type type="image/tiff">
+ <comment>TIFF image</comment>
++ <comment xml:lang="af">TIFF-beeld</comment>
+ <comment xml:lang="ar">صورة TIFF</comment>
+- <comment xml:lang="be@latin">Vyjava TIFF</comment>
++ <comment xml:lang="be-Latn">Vyjava TIFF</comment>
+ <comment xml:lang="bg">Изображение — TIFF</comment>
+ <comment xml:lang="ca">imatge TIFF</comment>
+ <comment xml:lang="cs">obrázek TIFF</comment>
+ <comment xml:lang="da">TIFF-billede</comment>
+ <comment xml:lang="de">TIFF-Bild</comment>
+ <comment xml:lang="el">Εικόνα TIFF</comment>
+- <comment xml:lang="en_GB">TIFF image</comment>
++ <comment xml:lang="en-GB">TIFF image</comment>
+ <comment xml:lang="eo">TIFF-bildo</comment>
+ <comment xml:lang="es">imagen TIFF</comment>
+ <comment xml:lang="eu">TIFF irudia</comment>
+ <comment xml:lang="fi">TIFF-kuva</comment>
+ <comment xml:lang="fo">TIFF mynd</comment>
+ <comment xml:lang="fr">image TIFF</comment>
++ <comment xml:lang="fur">imagjin TIFF</comment>
+ <comment xml:lang="ga">íomhá TIFF</comment>
+ <comment xml:lang="gl">imaxe TIFF</comment>
+ <comment xml:lang="he">תמונת TIFF</comment>
+@@ -27203,7 +28155,7 @@
+ <comment xml:lang="oc">imatge TIFF</comment>
+ <comment xml:lang="pl">Obraz TIFF</comment>
+ <comment xml:lang="pt">imagem TIFF</comment>
+- <comment xml:lang="pt_BR">Imagem TIFF</comment>
++ <comment xml:lang="pt-BR">Imagem TIFF</comment>
+ <comment xml:lang="ro">Imagine TIFF</comment>
+ <comment xml:lang="ru">Изображение TIFF</comment>
+ <comment xml:lang="sk">Obrázok TIFF</comment>
+@@ -27214,28 +28166,32 @@
+ <comment xml:lang="tr">TIFF görüntüsü</comment>
+ <comment xml:lang="uk">зображення TIFF</comment>
+ <comment xml:lang="vi">Ảnh TIFF</comment>
+- <comment xml:lang="zh_CN">TIFF 图像</comment>
+- <comment xml:lang="zh_TW">TIFF 影像</comment>
++ <comment xml:lang="zh-CN">TIFF 图像</comment>
++ <comment xml:lang="zh-TW">TIFF 影像</comment>
+ <acronym>TIFF</acronym>
+ <expanded-acronym>Tagged Image File Format</expanded-acronym>
+ <magic priority="50">
+- <match value="MM\x00\x2a" type="string" offset="0"/>
+- <match value="II\x2a\x00" type="string" offset="0"/>
++ <match type="string" value="MM\x00\x2a" offset="0"/>
++ <match type="string" value="II\x2a\x00" offset="0"/>
+ </magic>
+ <glob pattern="*.tif"/>
+ <glob pattern="*.tiff"/>
+ </mime-type>
+ <mime-type type="image/x-tiff-multipage">
+ <comment>Multi-page TIFF image</comment>
++ <comment xml:lang="af">Multibladsy TIFF-beeld</comment>
++ <comment xml:lang="bg">Изображение — TIFF, много страници</comment>
+ <comment xml:lang="ca">imatge TIFF multipàgina</comment>
+ <comment xml:lang="cs">vícestránkový obrázek TIFF</comment>
+ <comment xml:lang="da">Flersidet TIFF-billede</comment>
+ <comment xml:lang="de">Mehrseitiges TIFF-Bild</comment>
+ <comment xml:lang="el">Πολυσέλιδη εικόνα TIFF</comment>
+- <comment xml:lang="en_GB">Multi-page TIFF image</comment>
++ <comment xml:lang="en-GB">Multi-page TIFF image</comment>
+ <comment xml:lang="es">imagen TIFF de varias páginas</comment>
++ <comment xml:lang="eu">Multi-page TIFF irudia</comment>
+ <comment xml:lang="fi">Monisivuinen TIFF-kuva</comment>
+ <comment xml:lang="fr">Image TIFF multi-page</comment>
++ <comment xml:lang="fur">imagjin a plui pagjinis TIFF</comment>
+ <comment xml:lang="ga">íomhá il-leathanach TIFF</comment>
+ <comment xml:lang="gl">Imaxe TIFF multipáxina</comment>
+ <comment xml:lang="he">תמונת TIFF עם ריבוי עמודים</comment>
+@@ -27249,7 +28205,7 @@
+ <comment xml:lang="oc">Imatge TIFF multipagina</comment>
+ <comment xml:lang="pl">Wielostronnicowy obraz TIFF</comment>
+ <comment xml:lang="pt">imagem TIFF multipágina</comment>
+- <comment xml:lang="pt_BR">Imagem TIFF multipágina</comment>
++ <comment xml:lang="pt-BR">Imagem TIFF multipágina</comment>
+ <comment xml:lang="ru">Многостраничное изображение TIFF</comment>
+ <comment xml:lang="sk">Viacstránkový obrázok TIFF</comment>
+ <comment xml:lang="sl">Večstranska slika TIFF</comment>
+@@ -27257,17 +28213,18 @@
+ <comment xml:lang="sv">Flersidig TIFF-bild</comment>
+ <comment xml:lang="tr">Çok sayfalı TIFF görüntüsü</comment>
+ <comment xml:lang="uk">багатосторінкове зображення TIFF</comment>
+- <comment xml:lang="zh_CN">多页 TIFF 图像</comment>
+- <comment xml:lang="zh_TW">多頁 TIFF 影像</comment>
++ <comment xml:lang="zh-CN">多页 TIFF 图像</comment>
++ <comment xml:lang="zh-TW">多頁 TIFF 影像</comment>
+ <acronym>TIFF</acronym>
+ <expanded-acronym>Tagged Image File Format</expanded-acronym>
+ <sub-class-of type="image/tiff"/>
+ </mime-type>
+ <mime-type type="image/vnd.dwg">
+ <comment>AutoCAD image</comment>
++ <comment xml:lang="af">AutoCAD-beeld</comment>
+ <comment xml:lang="ar">صورة AutoCAD</comment>
+ <comment xml:lang="az">AutoCAD rəsmi</comment>
+- <comment xml:lang="be@latin">Vyjava AutoCAD</comment>
++ <comment xml:lang="be-Latn">Vyjava AutoCAD</comment>
+ <comment xml:lang="bg">Изображение — AutoCAD</comment>
+ <comment xml:lang="ca">imatge d'AutoCAD</comment>
+ <comment xml:lang="cs">výkres AutoCAD</comment>
+@@ -27275,13 +28232,14 @@
+ <comment xml:lang="da">AutoCAD-billede</comment>
+ <comment xml:lang="de">AutoCAD-Bild</comment>
+ <comment xml:lang="el">Εικόνα AutoCAD</comment>
+- <comment xml:lang="en_GB">AutoCAD image</comment>
++ <comment xml:lang="en-GB">AutoCAD image</comment>
+ <comment xml:lang="eo">AutoCAD-bildo</comment>
+ <comment xml:lang="es">imagen de AutoCAD</comment>
+ <comment xml:lang="eu">AutoCAD-eko irudia</comment>
+ <comment xml:lang="fi">AutoCAD-kuva</comment>
+ <comment xml:lang="fo">AutoCAD mynd</comment>
+ <comment xml:lang="fr">image AutoCAD</comment>
++ <comment xml:lang="fur">imagjin AutoCAD</comment>
+ <comment xml:lang="ga">íomhá AutoCAD</comment>
+ <comment xml:lang="gl">imaxe de AutoCAD</comment>
+ <comment xml:lang="he">תמונה של AutoCAD</comment>
+@@ -27303,7 +28261,7 @@
+ <comment xml:lang="oc">imatge AutoCAD</comment>
+ <comment xml:lang="pl">Obraz AutoCAD</comment>
+ <comment xml:lang="pt">imagem AutoCAD</comment>
+- <comment xml:lang="pt_BR">Imagem do AutoCAD</comment>
++ <comment xml:lang="pt-BR">Imagem do AutoCAD</comment>
+ <comment xml:lang="ro">Imagine AutoCAD</comment>
+ <comment xml:lang="ru">Изображение AutoCAD</comment>
+ <comment xml:lang="sk">Obrázok AutoCAD</comment>
+@@ -27314,27 +28272,29 @@
+ <comment xml:lang="tr">AutoCAD görüntüsü</comment>
+ <comment xml:lang="uk">зображення AutoCAD</comment>
+ <comment xml:lang="vi">Ảnh AutoCAD</comment>
+- <comment xml:lang="zh_CN">AutoCAD 图像</comment>
+- <comment xml:lang="zh_TW">AutoCAD 影像</comment>
++ <comment xml:lang="zh-CN">AutoCAD 图像</comment>
++ <comment xml:lang="zh-TW">AutoCAD 影像</comment>
+ <glob pattern="*.dwg"/>
+ </mime-type>
+ <mime-type type="image/vnd.dxf">
+ <comment>DXF vector image</comment>
++ <comment xml:lang="af">DXF-vektorbeeld</comment>
+ <comment xml:lang="ar">صورة DXF نقطية</comment>
+- <comment xml:lang="be@latin">Vektarnaja vyjava DXF</comment>
++ <comment xml:lang="be-Latn">Vektarnaja vyjava DXF</comment>
+ <comment xml:lang="bg">Изображение — DXF</comment>
+ <comment xml:lang="ca">imatge vectorial DXF</comment>
+ <comment xml:lang="cs">vektorový obrázek DXF</comment>
+ <comment xml:lang="da">DXF-vektorbillede</comment>
+ <comment xml:lang="de">DXF-Vektorbild</comment>
+ <comment xml:lang="el">Διανυσματική εικόνα DXF</comment>
+- <comment xml:lang="en_GB">DXF vector image</comment>
++ <comment xml:lang="en-GB">DXF vector image</comment>
+ <comment xml:lang="eo">vektora DXF-bildo</comment>
+ <comment xml:lang="es">imagen vectorial DXF</comment>
+ <comment xml:lang="eu">DXF bektore-grafikoa</comment>
+ <comment xml:lang="fi">DXF-vektorikuva</comment>
+ <comment xml:lang="fo">DXF vektormynd</comment>
+ <comment xml:lang="fr">image vectorielle DXF</comment>
++ <comment xml:lang="fur">imagjin vetoriâl DXF</comment>
+ <comment xml:lang="ga">íomhá veicteoireach DXF</comment>
+ <comment xml:lang="gl">imaxe de vector DXF</comment>
+ <comment xml:lang="he">תמונת DXF וקטורית</comment>
+@@ -27356,7 +28316,7 @@
+ <comment xml:lang="oc">imatge vectorial DXF</comment>
+ <comment xml:lang="pl">Obraz wektorowy DXF</comment>
+ <comment xml:lang="pt">imagem de vectores DXF</comment>
+- <comment xml:lang="pt_BR">Imagem vetorial DXF</comment>
++ <comment xml:lang="pt-BR">Imagem vetorial DXF</comment>
+ <comment xml:lang="ro">Imagine vectorială DXF</comment>
+ <comment xml:lang="ru">Векторное изображение DXF</comment>
+ <comment xml:lang="sk">Vektorový obrázok DXF</comment>
+@@ -27367,78 +28327,63 @@
+ <comment xml:lang="tr">DXF vektör görüntüsü</comment>
+ <comment xml:lang="uk">векторне зображення DXF</comment>
+ <comment xml:lang="vi">Ảnh véc-tơ DXF</comment>
+- <comment xml:lang="zh_CN">DXF 矢量图像</comment>
+- <comment xml:lang="zh_TW">DXF 向量圖</comment>
++ <comment xml:lang="zh-CN">DXF 矢量图像</comment>
++ <comment xml:lang="zh-TW">DXF 向量圖</comment>
+ <glob pattern="*.dxf"/>
+ <magic priority="50">
+- <match value="\nHEADER\n" type="string" offset="0:64"/>
+- <match value="\x0d\nHEADER\x0d\n" type="string" offset="0:64"/>
++ <match type="string" value="\nHEADER\n" offset="0:64"/>
++ <match type="string" value="\x0d\nHEADER\x0d\n" offset="0:64"/>
+ </magic>
+ </mime-type>
+ <mime-type type="image/vnd.ms-modi">
+- <comment>Microsoft Document Imaging format</comment>
+- <comment xml:lang="ar">صيغة مستند تصوير مايكروسوفت</comment>
+- <comment xml:lang="ast">Formatu d'imáxenes de Microsoft Document</comment>
+- <comment xml:lang="bg">Изображение — Microsoft Document Imaging</comment>
+- <comment xml:lang="ca">format Microsoft Document Imaging</comment>
+- <comment xml:lang="cs">formát Microsoft Document Imaging</comment>
+- <comment xml:lang="da">Microsofts dokumentbilledformat</comment>
+- <comment xml:lang="de">Microsoft-Document-Imaging-Bildformat</comment>
+- <comment xml:lang="el">Μορφή Microsoft Document Imaging</comment>
+- <comment xml:lang="en_GB">Microsoft Document Imaging format</comment>
+- <comment xml:lang="es">formato de imagen para documentos de Microsoft</comment>
+- <comment xml:lang="eu">Microsoft Document Imaging formatua</comment>
+- <comment xml:lang="fi">Microsoft Document Imaging -muoto</comment>
+- <comment xml:lang="fo">Microsoft Document Imaging snið</comment>
+- <comment xml:lang="fr">format Document Imaging Microsoft</comment>
+- <comment xml:lang="ga">formáid Microsoft Document Imaging</comment>
+- <comment xml:lang="gl">formato de Microsoft Document Imaging</comment>
+- <comment xml:lang="he">תבנית של Microsoft Document Imaging</comment>
+- <comment xml:lang="hr">Microsoft Document Imaging format</comment>
+- <comment xml:lang="hu">Microsoft Document Imaging formátum</comment>
+- <comment xml:lang="ia">File in formato Microsoft Document Imaging</comment>
+- <comment xml:lang="id">Format Microsoft Document Imaging</comment>
+- <comment xml:lang="it">Formato MDI (Microsoft Document Imaging)</comment>
+- <comment xml:lang="ja">Microsoft ドキュメントイメージフォーマット</comment>
+- <comment xml:lang="kk">Microsoft Document Imaging пішімі</comment>
+- <comment xml:lang="ko">Microsoft 문서 이미지 형식</comment>
+- <comment xml:lang="lt">Microsoft Document Imaging formatas</comment>
+- <comment xml:lang="lv">Microsoft dokumentu attēlošanas formāts</comment>
+- <comment xml:lang="nl">Microsoft Document Imaging</comment>
+- <comment xml:lang="oc">format Document Imaging Microsoft</comment>
+- <comment xml:lang="pl">Format Microsoft Document Imaging</comment>
+- <comment xml:lang="pt">formato Microsoft Document Imaging</comment>
+- <comment xml:lang="pt_BR">Formato do Microsoft Document Imaging</comment>
+- <comment xml:lang="ro">Format Microsoft Document Imaging</comment>
+- <comment xml:lang="ru">Формат Microsoft Document Imaging</comment>
+- <comment xml:lang="sk">Formát Microsoft Document Imaging</comment>
+- <comment xml:lang="sl">Zapis Microsoft Document Imaging</comment>
+- <comment xml:lang="sr">запис слика Мајкрософтовог документа</comment>
+- <comment xml:lang="sv">Microsoft Document Imaging-format</comment>
+- <comment xml:lang="tr">Microsoft Belge Görüntüleme biçimi</comment>
+- <comment xml:lang="uk">формат Microsoft Document Imaging</comment>
+- <comment xml:lang="vi">Định dạng tạo ảnh tài liệu Microsoft</comment>
+- <comment xml:lang="zh_CN">Microsoft Document Imaging 格式</comment>
+- <comment xml:lang="zh_TW">微軟文件影像格式</comment>
++ <comment>MDI image</comment>
++ <comment xml:lang="bg">Изображение — MDI</comment>
++ <comment xml:lang="ca">imatge MDI</comment>
++ <comment xml:lang="da">MDI-billede</comment>
++ <comment xml:lang="de">MDI-Bild</comment>
++ <comment xml:lang="en-GB">MDI image</comment>
++ <comment xml:lang="es">imagen MDI</comment>
++ <comment xml:lang="eu">MDI irudia</comment>
++ <comment xml:lang="fi">MDI-kuva</comment>
++ <comment xml:lang="fr">image MDI</comment>
++ <comment xml:lang="hr">MDI slika</comment>
++ <comment xml:lang="hu">MDI-kép</comment>
++ <comment xml:lang="id">Citra MDI</comment>
++ <comment xml:lang="it">Immagine MDI</comment>
++ <comment xml:lang="kk">MDI суреті</comment>
++ <comment xml:lang="ko">MDI 그림</comment>
++ <comment xml:lang="pl">Obraz MDI</comment>
++ <comment xml:lang="pt-BR">Imagem MDI</comment>
++ <comment xml:lang="ru">Изображение MDI</comment>
++ <comment xml:lang="sk">Obrázok MDI</comment>
++ <comment xml:lang="sl">Slika MDI</comment>
++ <comment xml:lang="sv">MDI-bild</comment>
++ <comment xml:lang="tr">MDI görüntüsü</comment>
++ <comment xml:lang="uk">зображення MDI</comment>
++ <comment xml:lang="zh-CN">MDI 图像</comment>
++ <comment xml:lang="zh-TW">MDI 影像</comment>
+ <acronym>MDI</acronym>
+ <expanded-acronym>Microsoft Document Imaging</expanded-acronym>
+ <glob pattern="*.mdi"/>
+ <magic priority="50">
+- <match value="\x45\x50\x2A\x00" type="string" offset="0"/>
++ <match type="string" value="\x45\x50\x2A\x00" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="image/webp">
+ <comment>WebP image</comment>
++ <comment xml:lang="af">WebP-beeld</comment>
++ <comment xml:lang="bg">Изображение — WebP</comment>
+ <comment xml:lang="ca">imatge WebP</comment>
+ <comment xml:lang="cs">obrázek WebP</comment>
+ <comment xml:lang="da">WebP-billede</comment>
+ <comment xml:lang="de">WebP-Bild</comment>
+ <comment xml:lang="el">Εικόνα WebP</comment>
+- <comment xml:lang="en_GB">WebP image</comment>
++ <comment xml:lang="en-GB">WebP image</comment>
+ <comment xml:lang="es">imagen WebP</comment>
+ <comment xml:lang="eu">WebP irudia</comment>
+ <comment xml:lang="fi">WebP-kuva</comment>
+ <comment xml:lang="fr">image WebP</comment>
++ <comment xml:lang="fur">imagjin WebP</comment>
+ <comment xml:lang="ga">íomhá WebP</comment>
+ <comment xml:lang="gl">Imaxe WebP</comment>
+ <comment xml:lang="he">תמונת WebP</comment>
+@@ -27452,7 +28397,7 @@
+ <comment xml:lang="oc">imatge WebP</comment>
+ <comment xml:lang="pl">Obraz WebP</comment>
+ <comment xml:lang="pt">imagem WebP</comment>
+- <comment xml:lang="pt_BR">Imagem WebP</comment>
++ <comment xml:lang="pt-BR">Imagem WebP</comment>
+ <comment xml:lang="ru">Изображение WebP</comment>
+ <comment xml:lang="sk">Obrázok WebP</comment>
+ <comment xml:lang="sl">Slika WebP</comment>
+@@ -27460,20 +28405,21 @@
+ <comment xml:lang="sv">WebP-bild</comment>
+ <comment xml:lang="tr">WebP görüntüsü</comment>
+ <comment xml:lang="uk">зображення WebP</comment>
+- <comment xml:lang="zh_CN">WebP 图像</comment>
+- <comment xml:lang="zh_TW">WebP 影像</comment>
++ <comment xml:lang="zh-CN">WebP 图像</comment>
++ <comment xml:lang="zh-TW">WebP 影像</comment>
+ <magic priority="50">
+- <match value="RIFF" type="string" offset="0">
+- <match value="WEBP" type="string" offset="8"/>
++ <match type="string" value="RIFF" offset="0">
++ <match type="string" value="WEBP" offset="8"/>
+ </match>
+ </magic>
+ <glob pattern="*.webp"/>
+ </mime-type>
+ <mime-type type="image/x-3ds">
+ <comment>3D Studio image</comment>
++ <comment xml:lang="af">3D Studio-beeld</comment>
+ <comment xml:lang="ar">صورة استديو ثلاثية الأبعاد</comment>
+ <comment xml:lang="az">3D Studio rəsmi</comment>
+- <comment xml:lang="be@latin">Vyjava 3D Studio</comment>
++ <comment xml:lang="be-Latn">Vyjava 3D Studio</comment>
+ <comment xml:lang="bg">Изображение — 3D Studio</comment>
+ <comment xml:lang="ca">imatge de 3D Studio</comment>
+ <comment xml:lang="cs">obrázek 3D Studio</comment>
+@@ -27481,13 +28427,14 @@
+ <comment xml:lang="da">3D Studio-billede</comment>
+ <comment xml:lang="de">3D-Studio-Bild</comment>
+ <comment xml:lang="el">Εικόνα 3D Studio</comment>
+- <comment xml:lang="en_GB">3D Studio image</comment>
++ <comment xml:lang="en-GB">3D Studio image</comment>
+ <comment xml:lang="eo">bildo de 3D Studio</comment>
+ <comment xml:lang="es">imagen de 3D Studio</comment>
+ <comment xml:lang="eu">3D Studio-ko irudia</comment>
+ <comment xml:lang="fi">3D Studio -kuva</comment>
+ <comment xml:lang="fo">3D Studio mynd</comment>
+ <comment xml:lang="fr">image 3D Studio</comment>
++ <comment xml:lang="fur">imagjin 3D Studio</comment>
+ <comment xml:lang="ga">íomhá 3D Studio</comment>
+ <comment xml:lang="gl">Imaxe de 3D Studio</comment>
+ <comment xml:lang="he">תמונת 3D Studio</comment>
+@@ -27509,7 +28456,7 @@
+ <comment xml:lang="oc">imatge 3D Studio</comment>
+ <comment xml:lang="pl">Obraz 3D Studio</comment>
+ <comment xml:lang="pt">imagem 3D Studio</comment>
+- <comment xml:lang="pt_BR">Imagem do 3D Studio</comment>
++ <comment xml:lang="pt-BR">Imagem do 3D Studio</comment>
+ <comment xml:lang="ro">Imagine 3D Studio</comment>
+ <comment xml:lang="ru">Сцена 3D Studio</comment>
+ <comment xml:lang="sk">Obrázok 3D Studio</comment>
+@@ -27520,27 +28467,32 @@
+ <comment xml:lang="tr">3D Studio görüntüsü</comment>
+ <comment xml:lang="uk">зображення 3D Studio</comment>
+ <comment xml:lang="vi">Ảnh xuởng vẽ 3D</comment>
+- <comment xml:lang="zh_CN">3D Studio 图像</comment>
+- <comment xml:lang="zh_TW">3D Studio 影像</comment>
++ <comment xml:lang="zh-CN">3D Studio 图像</comment>
++ <comment xml:lang="zh-TW">3D Studio 影像</comment>
+ <glob pattern="*.3ds"/>
++ <magic priority="30">
++ <match offset="0" type="big16" value="0x4d4d"/>
++ </magic>
+ </mime-type>
+ <mime-type type="image/x-applix-graphics">
+ <comment>Applix Graphics image</comment>
++ <comment xml:lang="af">Applix Graphics-beeld</comment>
+ <comment xml:lang="ar">صورة رسوميات Applix</comment>
+- <comment xml:lang="be@latin">Vyjava Applix Graphics</comment>
++ <comment xml:lang="be-Latn">Vyjava Applix Graphics</comment>
+ <comment xml:lang="bg">Изображение — Applix Graphics</comment>
+ <comment xml:lang="ca">imatge d'Applix Graphics</comment>
+ <comment xml:lang="cs">obrázek Applix Graphics</comment>
+ <comment xml:lang="da">Applix Graphics-billede</comment>
+ <comment xml:lang="de">Applix-Graphics-Bild</comment>
+ <comment xml:lang="el">Εικόνα Applix Graphics</comment>
+- <comment xml:lang="en_GB">Applix Graphics image</comment>
++ <comment xml:lang="en-GB">Applix Graphics image</comment>
+ <comment xml:lang="eo">bildo de Applix Graphics</comment>
+ <comment xml:lang="es">imagen de Applix Graphics</comment>
+ <comment xml:lang="eu">Applix Graphics irudia</comment>
+ <comment xml:lang="fi">Applix Graphics -kuva</comment>
+ <comment xml:lang="fo">Applix Graphics mynd</comment>
+ <comment xml:lang="fr">image Applix Graphics</comment>
++ <comment xml:lang="fur">imagjin Applix Graphics</comment>
+ <comment xml:lang="ga">íomhá Applix Graphics</comment>
+ <comment xml:lang="gl">imaxe de Applix Graphics</comment>
+ <comment xml:lang="he">תמונה של Applix Graphics</comment>
+@@ -27562,7 +28514,7 @@
+ <comment xml:lang="oc">imatge Applix Graphics</comment>
+ <comment xml:lang="pl">Obraz Applix Graphics</comment>
+ <comment xml:lang="pt">imagem Applix Graphics</comment>
+- <comment xml:lang="pt_BR">Imagem do Applix Graphics</comment>
++ <comment xml:lang="pt-BR">Imagem do Applix Graphics</comment>
+ <comment xml:lang="ro">Imagine Applix Graphics</comment>
+ <comment xml:lang="ru">Изображение Applix Graphics</comment>
+ <comment xml:lang="sk">Obrázok Applix Graphics</comment>
+@@ -27573,36 +28525,38 @@
+ <comment xml:lang="tr">Applix Graphics görüntüsü</comment>
+ <comment xml:lang="uk">зображення Applix Graphics</comment>
+ <comment xml:lang="vi">Ảnh Applix Graphics</comment>
+- <comment xml:lang="zh_CN">Applix Graphics 图像</comment>
+- <comment xml:lang="zh_TW">Applix Graphics 影像</comment>
++ <comment xml:lang="zh-CN">Applix Graphics 图像</comment>
++ <comment xml:lang="zh-TW">Applix Graphics 影像</comment>
+ <magic priority="50">
+- <match value="*BEGIN" type="string" offset="0">
+- <match value="GRAPHICS" type="string" offset="7"/>
++ <match type="string" value="*BEGIN" offset="0">
++ <match type="string" value="GRAPHICS" offset="7"/>
+ </match>
+ </magic>
+ <glob pattern="*.ag"/>
+ </mime-type>
+ <mime-type type="image/x-bzeps">
+ <comment>EPS image (bzip-compressed)</comment>
++ <comment xml:lang="af">EPS-beeld (bzip-saamgepers)</comment>
+ <comment xml:lang="ar">صورة EPS (مضغوط-bzip)</comment>
+- <comment xml:lang="be@latin">Vyjava EPS (bzip-skampresavanaja)</comment>
++ <comment xml:lang="be-Latn">Vyjava EPS (bzip-skampresavanaja)</comment>
+ <comment xml:lang="bg">Изображение — EPS, компресирано с bzip</comment>
+ <comment xml:lang="ca">imatge EPS (amb compressió bzip)</comment>
+ <comment xml:lang="cs">obrázek EPS (komprimovaný pomocí bzip)</comment>
+ <comment xml:lang="da">EPS-billede (bzip-komprimeret)</comment>
+ <comment xml:lang="de">EPS-Bild (bzip-komprimiert)</comment>
+ <comment xml:lang="el">Εικόνα EPS (συμπιεσμένη bzip)</comment>
+- <comment xml:lang="en_GB">EPS image (bzip-compressed)</comment>
++ <comment xml:lang="en-GB">EPS image (bzip-compressed)</comment>
+ <comment xml:lang="es">imagen EPS (comprimida con bzip)</comment>
+ <comment xml:lang="eu">EPS irudia (bzip-ekin konprimitua)</comment>
+ <comment xml:lang="fi">EPS-kuva (bzip-pakattu)</comment>
+ <comment xml:lang="fo">EPS mynd (bzip-stappað)</comment>
+ <comment xml:lang="fr">image EPS (compressée bzip)</comment>
++ <comment xml:lang="fur">imagjin EPS (comprimude cun bzip)</comment>
+ <comment xml:lang="ga">íomhá EPS (comhbhrúite le bzip)</comment>
+ <comment xml:lang="gl">imaxe EPS (comprimida con bzip)</comment>
+ <comment xml:lang="he">תמונת EPS (מכווץ בbzip)</comment>
+ <comment xml:lang="hr">EPS slika (bzip sažeta)</comment>
+- <comment xml:lang="hu">EPS kép (bzip-tömörítésű)</comment>
++ <comment xml:lang="hu">EPS kép (bzip tömörítésű)</comment>
+ <comment xml:lang="ia">Imagine EPS (comprimite con bzip)</comment>
+ <comment xml:lang="id">Citra EPS (terkompresi bzip)</comment>
+ <comment xml:lang="it">Immagine EPS (compressa con bzip)</comment>
+@@ -27618,7 +28572,7 @@
+ <comment xml:lang="oc">imatge EPS (compressat bzip)</comment>
+ <comment xml:lang="pl">Obraz EPS (kompresja bzip)</comment>
+ <comment xml:lang="pt">imagem EPS (compressão bzip)</comment>
+- <comment xml:lang="pt_BR">Imagem EPS (compactada com bzip)</comment>
++ <comment xml:lang="pt-BR">Imagem EPS (compactada com bzip)</comment>
+ <comment xml:lang="ro">Imagine EPS (compresie bzip)</comment>
+ <comment xml:lang="ru">Изображение EPS (сжатое bzip)</comment>
+ <comment xml:lang="sk">Obrázok EPS (komprimovaný pomocou bzip)</comment>
+@@ -27629,8 +28583,8 @@
+ <comment xml:lang="tr">EPS görüntüsü (bzip ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">зображення EPS (стиснене bzip)</comment>
+ <comment xml:lang="vi">Ảnh EPS (đã nén bzip)</comment>
+- <comment xml:lang="zh_CN">EPS 图像(bzip 压缩)</comment>
+- <comment xml:lang="zh_TW">EPS 影像 (bzip 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">EPS 图像(bzip 压缩)</comment>
++ <comment xml:lang="zh-TW">EPS 影像 (bzip 壓縮)</comment>
+ <sub-class-of type="application/x-bzip"/>
+ <glob pattern="*.eps.bz2"/>
+ <glob pattern="*.epsi.bz2"/>
+@@ -27638,9 +28592,10 @@
+ </mime-type>
+ <mime-type type="image/x-cmu-raster">
+ <comment>CMU raster image</comment>
++ <comment xml:lang="af">CMU-roosterbeeld</comment>
+ <comment xml:lang="ar">صورة CMU نقطية</comment>
+ <comment xml:lang="az">CMU raster rəsmi</comment>
+- <comment xml:lang="be@latin">Rastravaja vyjava CMU</comment>
++ <comment xml:lang="be-Latn">Rastravaja vyjava CMU</comment>
+ <comment xml:lang="bg">Изображение — CMU raster</comment>
+ <comment xml:lang="ca">imatge ràster CMU</comment>
+ <comment xml:lang="cs">rastrový obrázek CMU</comment>
+@@ -27648,13 +28603,14 @@
+ <comment xml:lang="da">CMU-rasterbillede</comment>
+ <comment xml:lang="de">CMU-Rasterbild</comment>
+ <comment xml:lang="el">Εικόνα ράστερ CMU</comment>
+- <comment xml:lang="en_GB">CMU raster image</comment>
++ <comment xml:lang="en-GB">CMU raster image</comment>
+ <comment xml:lang="eo">rastruma bildo de CMU</comment>
+ <comment xml:lang="es">imagen ráster CMU</comment>
+ <comment xml:lang="eu">CMU bilbe-irudia</comment>
+ <comment xml:lang="fi">CMU-rasterikuva</comment>
+ <comment xml:lang="fo">CMU raster mynd</comment>
+ <comment xml:lang="fr">image raster CMU</comment>
++ <comment xml:lang="fur">imagjin raster CMU</comment>
+ <comment xml:lang="ga">íomhá rastar CMU</comment>
+ <comment xml:lang="gl">imaxe raster CMU</comment>
+ <comment xml:lang="he">תמונת סריקה CMU</comment>
+@@ -27676,7 +28632,7 @@
+ <comment xml:lang="oc">imatge raster CMU</comment>
+ <comment xml:lang="pl">Obraz rastrowy CMU</comment>
+ <comment xml:lang="pt">imagem raster CMU</comment>
+- <comment xml:lang="pt_BR">Imagem raster CMU</comment>
++ <comment xml:lang="pt-BR">Imagem raster CMU</comment>
+ <comment xml:lang="ro">Imagine raster CMU</comment>
+ <comment xml:lang="ru">Растровое изображение CMU</comment>
+ <comment xml:lang="sk">Rastrový obrázok CMU</comment>
+@@ -27687,33 +28643,35 @@
+ <comment xml:lang="tr">CMU tarama görüntüsü</comment>
+ <comment xml:lang="uk">растрове зображення CMU</comment>
+ <comment xml:lang="vi">Ảnh mành CMU</comment>
+- <comment xml:lang="zh_CN">CMU 光栅图像</comment>
+- <comment xml:lang="zh_TW">CMU raster 影像</comment>
++ <comment xml:lang="zh-CN">CMU 光栅图像</comment>
++ <comment xml:lang="zh-TW">CMU raster 影像</comment>
+ <glob pattern="*.ras"/>
+ </mime-type>
+ <mime-type type="image/x-compressed-xcf">
+ <comment>compressed GIMP image</comment>
++ <comment xml:lang="af">saamgepersde GIMP-beeld</comment>
+ <comment xml:lang="ar">صورة GIMP مضغوطة</comment>
+- <comment xml:lang="be@latin">skampresavanaja vyjava GIMP</comment>
++ <comment xml:lang="be-Latn">skampresavanaja vyjava GIMP</comment>
+ <comment xml:lang="bg">Изображение — GIMP, компресирано</comment>
+ <comment xml:lang="ca">imatge GIMP amb compressió</comment>
+ <comment xml:lang="cs">komprimovaný obrázek GIMP</comment>
+ <comment xml:lang="da">komprimeret GIMP-billede</comment>
+ <comment xml:lang="de">Komprimiertes GIMP-Bild</comment>
+ <comment xml:lang="el">Συμπιεσμένη εικόνα GIMP</comment>
+- <comment xml:lang="en_GB">compressed GIMP image</comment>
++ <comment xml:lang="en-GB">compressed GIMP image</comment>
+ <comment xml:lang="es">imagen GIMP comprimida</comment>
+ <comment xml:lang="eu">konprimitutako GIMP irudia</comment>
+ <comment xml:lang="fi">pakattu GIMP-kuva</comment>
+ <comment xml:lang="fo">stappað GIMP mynd</comment>
+ <comment xml:lang="fr">image GIMP compressée</comment>
++ <comment xml:lang="fur">imagjin GIMP comprimude</comment>
+ <comment xml:lang="ga">íomhá GIMP comhbhrúite</comment>
+ <comment xml:lang="gl">imaxe de GIMP comprimida</comment>
+ <comment xml:lang="he">תמונת GIMP מכווצת</comment>
+ <comment xml:lang="hr">Sažeta GIMP slika</comment>
+ <comment xml:lang="hu">tömörített GIMP kép</comment>
+ <comment xml:lang="ia">Imagine GIMP comprimite</comment>
+- <comment xml:lang="id">Citra GIMP terkompresi</comment>
++ <comment xml:lang="id">citra GIMP terkompresi</comment>
+ <comment xml:lang="it">Immagine GIMP compressa</comment>
+ <comment xml:lang="ja">圧縮 GIMP 画像</comment>
+ <comment xml:lang="kk">сығылған GIMP суреті</comment>
+@@ -27726,7 +28684,7 @@
+ <comment xml:lang="oc">imatge GIMP compressat</comment>
+ <comment xml:lang="pl">Skompresowany obraz GIMP</comment>
+ <comment xml:lang="pt">imagem GIMP comprimida</comment>
+- <comment xml:lang="pt_BR">Imagem do GIMP compactada</comment>
++ <comment xml:lang="pt-BR">Imagem do GIMP compactada</comment>
+ <comment xml:lang="ro">imagine comprimată GIMP</comment>
+ <comment xml:lang="ru">Сжатое изображение GIMP</comment>
+ <comment xml:lang="sk">Komprimovaný obrázok GIMP</comment>
+@@ -27737,28 +28695,30 @@
+ <comment xml:lang="tr">sıkıştırılmış GIMP görüntüsü</comment>
+ <comment xml:lang="uk">стиснене зображення GIMP</comment>
+ <comment xml:lang="vi">ảnh GIMP đã nén</comment>
+- <comment xml:lang="zh_CN">压缩的 GIMP 图像</comment>
+- <comment xml:lang="zh_TW">壓縮版 GIMP 影像</comment>
++ <comment xml:lang="zh-CN">压缩的 GIMP 图像</comment>
++ <comment xml:lang="zh-TW">壓縮版 GIMP 影像</comment>
+ <glob pattern="*.xcf.gz"/>
+ <glob pattern="*.xcf.bz2"/>
+ </mime-type>
+ <mime-type type="application/dicom">
+ <comment>DICOM image</comment>
++ <comment xml:lang="af">DICOM-beeld</comment>
+ <comment xml:lang="ar">صورة DICOM</comment>
+- <comment xml:lang="be@latin">Vyjava DICOM</comment>
++ <comment xml:lang="be-Latn">Vyjava DICOM</comment>
+ <comment xml:lang="bg">Изображение — DICOM</comment>
+ <comment xml:lang="ca">imatge DICOM</comment>
+ <comment xml:lang="cs">obrázek DICOM</comment>
+ <comment xml:lang="da">DICOM-billede</comment>
+ <comment xml:lang="de">DICOM-Bild</comment>
+ <comment xml:lang="el">Εικόνα DICOM</comment>
+- <comment xml:lang="en_GB">DICOM image</comment>
++ <comment xml:lang="en-GB">DICOM image</comment>
+ <comment xml:lang="eo">DICOM-bildo</comment>
+ <comment xml:lang="es">imagen DICOM</comment>
+ <comment xml:lang="eu">DICOM irudia</comment>
+ <comment xml:lang="fi">DICOM-kuva</comment>
+ <comment xml:lang="fo">DICOM mynd</comment>
+ <comment xml:lang="fr">image DICOM</comment>
++ <comment xml:lang="fur">imagjin DICOM</comment>
+ <comment xml:lang="ga">íomhá DICOM</comment>
+ <comment xml:lang="gl">imaxe DICOM</comment>
+ <comment xml:lang="he">תמונת DICOM</comment>
+@@ -27779,7 +28739,7 @@
+ <comment xml:lang="oc">imatge DICOM</comment>
+ <comment xml:lang="pl">Obraz DICOM</comment>
+ <comment xml:lang="pt">imagem DICOM</comment>
+- <comment xml:lang="pt_BR">Imagem DICOM</comment>
++ <comment xml:lang="pt-BR">Imagem DICOM</comment>
+ <comment xml:lang="ro">Imagine DICOM</comment>
+ <comment xml:lang="ru">Изображение DICOM</comment>
+ <comment xml:lang="sk">Obrázok DICOM</comment>
+@@ -27790,35 +28750,37 @@
+ <comment xml:lang="tr">DICOM görüntüsü</comment>
+ <comment xml:lang="uk">зображення DICOM</comment>
+ <comment xml:lang="vi">Ảnh DICOM</comment>
+- <comment xml:lang="zh_CN">DICOM 图像</comment>
+- <comment xml:lang="zh_TW">DICOM 影像</comment>
++ <comment xml:lang="zh-CN">DICOM 图像</comment>
++ <comment xml:lang="zh-TW">DICOM 影像</comment>
+ <acronym>DICOM</acronym>
+ <expanded-acronym>Digital Imaging and Communications in Medicine</expanded-acronym>
+ <generic-icon name="image-x-generic"/>
+ <glob pattern="dicomdir"/>
+ <glob pattern="*.dcm"/>
+ <magic priority="50">
+- <match value="DICM" type="string" offset="128"/>
++ <match type="string" value="DICM" offset="128"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-docbook+xml">
+ <comment>DocBook document</comment>
++ <comment xml:lang="af">DocBook-dokument</comment>
+ <comment xml:lang="ar">مستند DocBook</comment>
+ <comment xml:lang="ast">Documentu DocBook</comment>
+- <comment xml:lang="be@latin">Dakument DocBook</comment>
++ <comment xml:lang="be-Latn">Dakument DocBook</comment>
+ <comment xml:lang="bg">Документ — DocBook</comment>
+ <comment xml:lang="ca">document DocBook</comment>
+ <comment xml:lang="cs">dokument DocBook</comment>
+ <comment xml:lang="da">DocBook-dokument</comment>
+ <comment xml:lang="de">DocBook-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο DocBook</comment>
+- <comment xml:lang="en_GB">DocBook document</comment>
++ <comment xml:lang="en-GB">DocBook document</comment>
+ <comment xml:lang="eo">DocBook-dokumento</comment>
+ <comment xml:lang="es">documento DocBook</comment>
+ <comment xml:lang="eu">DocBook dokumentua</comment>
+ <comment xml:lang="fi">DocBook-asiakirja</comment>
+ <comment xml:lang="fo">DocBook skjal</comment>
+ <comment xml:lang="fr">document DocBook</comment>
++ <comment xml:lang="fur">document DocBook</comment>
+ <comment xml:lang="ga">cáipéis DocBook</comment>
+ <comment xml:lang="gl">documento de DocBook</comment>
+ <comment xml:lang="he">מסמך DocBook</comment>
+@@ -27839,7 +28801,7 @@
+ <comment xml:lang="oc">document DocBook</comment>
+ <comment xml:lang="pl">Dokument DocBook</comment>
+ <comment xml:lang="pt">documento DocBook</comment>
+- <comment xml:lang="pt_BR">Documento DocBook</comment>
++ <comment xml:lang="pt-BR">Documento DocBook</comment>
+ <comment xml:lang="ro">Document DocBook</comment>
+ <comment xml:lang="ru">Документ DocBook</comment>
+ <comment xml:lang="sk">Dokument DocBook</comment>
+@@ -27850,8 +28812,8 @@
+ <comment xml:lang="tr">DocBook belgesi</comment>
+ <comment xml:lang="uk">документ DocBook</comment>
+ <comment xml:lang="vi">Tài liệu DocBook</comment>
+- <comment xml:lang="zh_CN">DocBook 文档</comment>
+- <comment xml:lang="zh_TW">DocBook 文件</comment>
++ <comment xml:lang="zh-CN">DocBook 文档</comment>
++ <comment xml:lang="zh-TW">DocBook 文件</comment>
+ <sub-class-of type="application/xml"/>
+ <generic-icon name="x-office-document"/>
+ <magic priority="90">
+@@ -27867,21 +28829,23 @@
+ </mime-type>
+ <mime-type type="image/x-dib">
+ <comment>DIB image</comment>
++ <comment xml:lang="af">DIB-beeld</comment>
+ <comment xml:lang="ar">صورة DIB</comment>
+- <comment xml:lang="be@latin">Vyjava DIB</comment>
++ <comment xml:lang="be-Latn">Vyjava DIB</comment>
+ <comment xml:lang="bg">Изображение — DIB</comment>
+ <comment xml:lang="ca">imatge DIB</comment>
+ <comment xml:lang="cs">obrázek DIB</comment>
+ <comment xml:lang="da">DIB-billede</comment>
+ <comment xml:lang="de">DIB-Bild</comment>
+ <comment xml:lang="el">Εικόνα DIB</comment>
+- <comment xml:lang="en_GB">DIB image</comment>
++ <comment xml:lang="en-GB">DIB image</comment>
+ <comment xml:lang="eo">DIB-bildo</comment>
+ <comment xml:lang="es">imagen DIB</comment>
+ <comment xml:lang="eu">DIB irudia</comment>
+ <comment xml:lang="fi">DIB-kuva</comment>
+ <comment xml:lang="fo">DIB mynd</comment>
+ <comment xml:lang="fr">image DIB</comment>
++ <comment xml:lang="fur">imagjin DIB</comment>
+ <comment xml:lang="ga">íomhá DIB</comment>
+ <comment xml:lang="gl">imaxe DIB</comment>
+ <comment xml:lang="he">תמונת DIB</comment>
+@@ -27902,7 +28866,7 @@
+ <comment xml:lang="oc">imatge DIB</comment>
+ <comment xml:lang="pl">Obraz DIB</comment>
+ <comment xml:lang="pt">imagem DIB</comment>
+- <comment xml:lang="pt_BR">Imagem DIB</comment>
++ <comment xml:lang="pt-BR">Imagem DIB</comment>
+ <comment xml:lang="ro">Imagine DIB</comment>
+ <comment xml:lang="ru">Изображение DIB</comment>
+ <comment xml:lang="sk">Obrázok DIB</comment>
+@@ -27913,31 +28877,33 @@
+ <comment xml:lang="tr">DIB görüntüsü</comment>
+ <comment xml:lang="uk">зображення DIB</comment>
+ <comment xml:lang="vi">Ảnh DIB</comment>
+- <comment xml:lang="zh_CN">DIB 图像</comment>
+- <comment xml:lang="zh_TW">DIB 影像</comment>
++ <comment xml:lang="zh-CN">DIB 图像</comment>
++ <comment xml:lang="zh-TW">DIB 影像</comment>
+ <acronym>DIB</acronym>
+ <expanded-acronym>Device Independent Bitmap</expanded-acronym>
+ <magic priority="50">
+- <match value="\x28\00\00\00" type="string" offset="0"/>
++ <match type="string" value="\x28\00\00\00" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="image/vnd.djvu">
+ <comment>DjVu image</comment>
++ <comment xml:lang="af">DjVu-beeld</comment>
+ <comment xml:lang="ar">صورة DjVu</comment>
+- <comment xml:lang="be@latin">Vyjava DjVu</comment>
++ <comment xml:lang="be-Latn">Vyjava DjVu</comment>
+ <comment xml:lang="bg">Изображение — DjVu</comment>
+ <comment xml:lang="ca">imatge DjVu</comment>
+ <comment xml:lang="cs">obrázek DjVu</comment>
+ <comment xml:lang="da">DjVu-billede</comment>
+ <comment xml:lang="de">DjVu-Bild</comment>
+ <comment xml:lang="el">Εικόνα DjVu</comment>
+- <comment xml:lang="en_GB">DjVu image</comment>
++ <comment xml:lang="en-GB">DjVu image</comment>
+ <comment xml:lang="eo">DjVu-bildo</comment>
+ <comment xml:lang="es">imagen DjVu</comment>
+ <comment xml:lang="eu">DjVU-ko irudia</comment>
+ <comment xml:lang="fi">DjVu-kuva</comment>
+ <comment xml:lang="fo">DjVu mynd</comment>
+ <comment xml:lang="fr">image DjVu</comment>
++ <comment xml:lang="fur">imagjin DjVu</comment>
+ <comment xml:lang="ga">íomhá DjVu</comment>
+ <comment xml:lang="gl">imaxe de DjVu</comment>
+ <comment xml:lang="he">תמונת DjVu</comment>
+@@ -27959,7 +28925,7 @@
+ <comment xml:lang="oc">imatge DjVu</comment>
+ <comment xml:lang="pl">Obraz DjVu</comment>
+ <comment xml:lang="pt">imagem DjVu</comment>
+- <comment xml:lang="pt_BR">Imagem DjVu</comment>
++ <comment xml:lang="pt-BR">Imagem DjVu</comment>
+ <comment xml:lang="ro">Imagine DjVu</comment>
+ <comment xml:lang="ru">Изображение DjVu</comment>
+ <comment xml:lang="sk">Obrázok DjVu</comment>
+@@ -27970,16 +28936,16 @@
+ <comment xml:lang="tr">DjVu görüntüsü</comment>
+ <comment xml:lang="uk">зображення DjVu</comment>
+ <comment xml:lang="vi">Ảnh DjVu</comment>
+- <comment xml:lang="zh_CN">DjVu 图像</comment>
+- <comment xml:lang="zh_TW">DjVu 影像</comment>
++ <comment xml:lang="zh-CN">DjVu 图像</comment>
++ <comment xml:lang="zh-TW">DjVu 影像</comment>
+ <alias type="image/x-djvu"/>
+ <alias type="image/x.djvu"/>
+ <magic priority="80">
+- <match value="AT&amp;TFORM" type="string" offset="0">
+- <match value="DJVU" type="string" offset="12"/>
++ <match type="string" offset="0" value="AT&amp;TFORM">
++ <match type="string" offset="12" value="DJVU"/>
+ </match>
+- <match value="FORM" type="string" offset="0">
+- <match value="DJVU" type="string" offset="8"/>
++ <match type="string" offset="0" value="FORM">
++ <match type="string" offset="8" value="DJVU"/>
+ </match>
+ </magic>
+ <glob pattern="*.djvu"/>
+@@ -27987,17 +28953,20 @@
+ </mime-type>
+ <mime-type type="image/vnd.djvu+multipage">
+ <comment>DjVu document</comment>
++ <comment xml:lang="af">DjVu-dokument</comment>
+ <comment xml:lang="ast">Documentu DjVu</comment>
++ <comment xml:lang="bg">Документ — DjVu</comment>
+ <comment xml:lang="ca">document DjVu</comment>
+ <comment xml:lang="cs">dokument DjVu</comment>
+ <comment xml:lang="da">DjVu-dokument</comment>
+ <comment xml:lang="de">DjVu-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο DjVu</comment>
+- <comment xml:lang="en_GB">DjVu document</comment>
++ <comment xml:lang="en-GB">DjVu document</comment>
+ <comment xml:lang="es">documento DjVu</comment>
+ <comment xml:lang="eu">DjVu dokumentua</comment>
+ <comment xml:lang="fi">DjVu-asiakirja</comment>
+ <comment xml:lang="fr">document DjVu</comment>
++ <comment xml:lang="fur">document DjVu</comment>
+ <comment xml:lang="ga">cáipéis DjVu</comment>
+ <comment xml:lang="he">מסמך DjVu</comment>
+ <comment xml:lang="hr">DjVu dokument</comment>
+@@ -28010,22 +28979,23 @@
+ <comment xml:lang="oc">document DjVu</comment>
+ <comment xml:lang="pl">Dokument DjVu</comment>
+ <comment xml:lang="pt">documento DjVu</comment>
+- <comment xml:lang="pt_BR">Documento DjVu</comment>
++ <comment xml:lang="pt-BR">Documento DjVu</comment>
+ <comment xml:lang="ru">Документ DjVu</comment>
+ <comment xml:lang="sk">Dokument DjVu</comment>
++ <comment xml:lang="sl">Dokument DjVu</comment>
+ <comment xml:lang="sr">ДјВу документ</comment>
+ <comment xml:lang="sv">DjVu-dokument</comment>
+ <comment xml:lang="tr">DjVu belgesi</comment>
+ <comment xml:lang="uk">документ DjVu</comment>
+- <comment xml:lang="zh_CN">DjVu 文档</comment>
+- <comment xml:lang="zh_TW">DjVu 文件</comment>
++ <comment xml:lang="zh-CN">DjVu 文档</comment>
++ <comment xml:lang="zh-TW">DjVu 文件</comment>
+ <generic-icon name="x-office-document"/>
+ <magic priority="80">
+- <match value="AT&amp;TFORM" type="string" offset="0">
+- <match value="DJVM" type="string" offset="12"/>
++ <match type="string" offset="0" value="AT&amp;TFORM">
++ <match type="string" offset="12" value="DJVM"/>
+ </match>
+- <match value="FORM" type="string" offset="0">
+- <match value="DJVM" type="string" offset="8"/>
++ <match type="string" offset="0" value="FORM">
++ <match type="string" offset="8" value="DJVM"/>
+ </match>
+ </magic>
+ <sub-class-of type="image/vnd.djvu"/>
+@@ -28034,21 +29004,23 @@
+ </mime-type>
+ <mime-type type="image/dpx">
+ <comment>DPX image</comment>
++ <comment xml:lang="af">DPX-beeld</comment>
+ <comment xml:lang="ar">صورة DPX</comment>
+- <comment xml:lang="be@latin">Vyjava DPX</comment>
++ <comment xml:lang="be-Latn">Vyjava DPX</comment>
+ <comment xml:lang="bg">Изображение — DPX</comment>
+ <comment xml:lang="ca">imatge DPX</comment>
+ <comment xml:lang="cs">obrázek DPX</comment>
+ <comment xml:lang="da">DPX-billede</comment>
+ <comment xml:lang="de">DPX-Bild</comment>
+ <comment xml:lang="el">Εικόνα DPX</comment>
+- <comment xml:lang="en_GB">DPX image</comment>
++ <comment xml:lang="en-GB">DPX image</comment>
+ <comment xml:lang="eo">DPX-bildo</comment>
+ <comment xml:lang="es">imagen DPX</comment>
+ <comment xml:lang="eu">DPX irudia</comment>
+ <comment xml:lang="fi">DPX-kuva</comment>
+ <comment xml:lang="fo">DPX mynd</comment>
+ <comment xml:lang="fr">image DPX</comment>
++ <comment xml:lang="fur">imagjin DPX</comment>
+ <comment xml:lang="ga">íomhá DPX</comment>
+ <comment xml:lang="gl">imaxe DPX</comment>
+ <comment xml:lang="he">תמונת DPX</comment>
+@@ -28069,7 +29041,7 @@
+ <comment xml:lang="oc">imatge DPX</comment>
+ <comment xml:lang="pl">Obraz DPX</comment>
+ <comment xml:lang="pt">imagem DPX</comment>
+- <comment xml:lang="pt_BR">Imagem DPX</comment>
++ <comment xml:lang="pt-BR">Imagem DPX</comment>
+ <comment xml:lang="ro">Imagine DPX</comment>
+ <comment xml:lang="ru">Изображение DPX</comment>
+ <comment xml:lang="sk">Obrázok DPX</comment>
+@@ -28080,31 +29052,33 @@
+ <comment xml:lang="tr">DPX görüntüsü</comment>
+ <comment xml:lang="uk">зображення DPX</comment>
+ <comment xml:lang="vi">Ảnh DPX</comment>
+- <comment xml:lang="zh_CN">DPX 图像</comment>
+- <comment xml:lang="zh_TW">DPX 影像</comment>
++ <comment xml:lang="zh-CN">DPX 图像</comment>
++ <comment xml:lang="zh-TW">DPX 影像</comment>
+ <acronym>DPX</acronym>
+ <expanded-acronym>Digital Moving Picture Exchange</expanded-acronym>
+ <magic priority="50">
+- <match value="0x53445058" type="big32" offset="0"/>
++ <match type="big32" value="0x53445058" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="image/x-eps">
+ <comment>EPS image</comment>
++ <comment xml:lang="af">EPS-beeld</comment>
+ <comment xml:lang="ar">صورة EPS</comment>
+- <comment xml:lang="be@latin">Vyjava EPS</comment>
++ <comment xml:lang="be-Latn">Vyjava EPS</comment>
+ <comment xml:lang="bg">Изображение — EPS</comment>
+ <comment xml:lang="ca">imatge EPS</comment>
+ <comment xml:lang="cs">obrázek EPS</comment>
+ <comment xml:lang="da">EPS-billede</comment>
+ <comment xml:lang="de">EPS-Bild</comment>
+ <comment xml:lang="el">Εικόνα EPS</comment>
+- <comment xml:lang="en_GB">EPS image</comment>
++ <comment xml:lang="en-GB">EPS image</comment>
+ <comment xml:lang="eo">EPS-bildo</comment>
+ <comment xml:lang="es">imagen EPS</comment>
+ <comment xml:lang="eu">EPS irudia</comment>
+ <comment xml:lang="fi">EPS-kuva</comment>
+ <comment xml:lang="fo">EPS mynd</comment>
+ <comment xml:lang="fr">image EPS</comment>
++ <comment xml:lang="fur">imagjin EPS</comment>
+ <comment xml:lang="ga">íomhá EPS</comment>
+ <comment xml:lang="gl">imaxe EPS</comment>
+ <comment xml:lang="he">תמונת EPS</comment>
+@@ -28125,7 +29099,7 @@
+ <comment xml:lang="oc">imatge EPS</comment>
+ <comment xml:lang="pl">Obraz EPS</comment>
+ <comment xml:lang="pt">imagem EPS</comment>
+- <comment xml:lang="pt_BR">Imagem EPS</comment>
++ <comment xml:lang="pt-BR">Imagem EPS</comment>
+ <comment xml:lang="ro">Imagine EPS</comment>
+ <comment xml:lang="ru">Изображение EPS</comment>
+ <comment xml:lang="sk">Obrázok EPS</comment>
+@@ -28136,19 +29110,19 @@
+ <comment xml:lang="tr">EPS görüntüsü</comment>
+ <comment xml:lang="uk">зображення EPS</comment>
+ <comment xml:lang="vi">Ảnh EPS</comment>
+- <comment xml:lang="zh_CN">EPS 图像</comment>
+- <comment xml:lang="zh_TW">EPS 影像</comment>
++ <comment xml:lang="zh-CN">EPS 图像</comment>
++ <comment xml:lang="zh-TW">EPS 影像</comment>
+ <acronym>EPS</acronym>
+ <expanded-acronym>Encapsulated PostScript</expanded-acronym>
+ <sub-class-of type="application/postscript"/>
+ <magic priority="90">
+- <match value="%!" type="string" offset="0">
+- <match value="EPS" type="string" offset="15"/>
++ <match type="string" value="%!" offset="0">
++ <match type="string" value="EPS" offset="15"/>
+ </match>
+- <match value="\004%!" type="string" offset="0">
+- <match value="EPS" type="string" offset="16"/>
++ <match type="string" value="\004%!" offset="0">
++ <match type="string" value="EPS" offset="16"/>
+ </match>
+- <match value="0xC5D0D3C6" type="big32" offset="0"/>
++ <match type="big32" value="0xC5D0D3C6" offset="0"/>
+ </magic>
+ <glob pattern="*.eps"/>
+ <glob pattern="*.epsi"/>
+@@ -28156,22 +29130,24 @@
+ </mime-type>
+ <mime-type type="image/fits">
+ <comment>FITS document</comment>
++ <comment xml:lang="af">FITS-dokument</comment>
+ <comment xml:lang="ar">مستند FITS</comment>
+ <comment xml:lang="ast">Documentu FITS</comment>
+- <comment xml:lang="be@latin">Dakument FITS</comment>
++ <comment xml:lang="be-Latn">Dakument FITS</comment>
+ <comment xml:lang="bg">Документ — FITS</comment>
+ <comment xml:lang="ca">document FITS</comment>
+ <comment xml:lang="cs">dokument FITS</comment>
+ <comment xml:lang="da">FITS-dokument</comment>
+ <comment xml:lang="de">FITS-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο FITS</comment>
+- <comment xml:lang="en_GB">FITS document</comment>
++ <comment xml:lang="en-GB">FITS document</comment>
+ <comment xml:lang="eo">FITS-dokumento</comment>
+ <comment xml:lang="es">documento FITS</comment>
+ <comment xml:lang="eu">FITS dokumentua</comment>
+ <comment xml:lang="fi">FITS-asiakirja</comment>
+ <comment xml:lang="fo">FITS skjal</comment>
+ <comment xml:lang="fr">document FITS</comment>
++ <comment xml:lang="fur">document FITS</comment>
+ <comment xml:lang="ga">cáipéis FITS</comment>
+ <comment xml:lang="gl">documento FICT</comment>
+ <comment xml:lang="he">מסמך FITS</comment>
+@@ -28192,7 +29168,7 @@
+ <comment xml:lang="oc">document FITS</comment>
+ <comment xml:lang="pl">Dokument FITS</comment>
+ <comment xml:lang="pt">documento FITS</comment>
+- <comment xml:lang="pt_BR">Documento FITS</comment>
++ <comment xml:lang="pt-BR">Documento FITS</comment>
+ <comment xml:lang="ro">Document FITS</comment>
+ <comment xml:lang="ru">Документ FITS</comment>
+ <comment xml:lang="sk">Dokument FITS</comment>
+@@ -28203,33 +29179,35 @@
+ <comment xml:lang="tr">FITS belgesi</comment>
+ <comment xml:lang="uk">документ FITS</comment>
+ <comment xml:lang="vi">Tài liệu FITS</comment>
+- <comment xml:lang="zh_CN">FITS 文档</comment>
+- <comment xml:lang="zh_TW">FITS 文件</comment>
++ <comment xml:lang="zh-CN">FITS 文档</comment>
++ <comment xml:lang="zh-TW">FITS 文件</comment>
+ <acronym>FITS</acronym>
+ <expanded-acronym>Flexible Image Transport System</expanded-acronym>
+ <magic priority="50">
+- <match value="SIMPLE =" type="string" offset="0"/>
++ <match type="string" value="SIMPLE =" offset="0"/>
+ </magic>
+ <glob pattern="*.fits"/>
+ <alias type="image/x-fits"/>
+ </mime-type>
+ <mime-type type="image/x-fpx">
+ <comment>FPX image</comment>
++ <comment xml:lang="af">FPX-beeld</comment>
+ <comment xml:lang="ar">صورة FPX</comment>
+- <comment xml:lang="be@latin">Vyjava FPX</comment>
++ <comment xml:lang="be-Latn">Vyjava FPX</comment>
+ <comment xml:lang="bg">Изображение — FPX</comment>
+ <comment xml:lang="ca">imatge FPX</comment>
+ <comment xml:lang="cs">obrázek FPX</comment>
+ <comment xml:lang="da">FPX-billede</comment>
+ <comment xml:lang="de">FPX-Bild</comment>
+ <comment xml:lang="el">Εικόνα FPX</comment>
+- <comment xml:lang="en_GB">FPX image</comment>
++ <comment xml:lang="en-GB">FPX image</comment>
+ <comment xml:lang="eo">FPX-bildo</comment>
+ <comment xml:lang="es">imagen FPX</comment>
+ <comment xml:lang="eu">FPX irudia</comment>
+ <comment xml:lang="fi">FPX-kuva</comment>
+ <comment xml:lang="fo">FPX mynd</comment>
+ <comment xml:lang="fr">image FPX</comment>
++ <comment xml:lang="fur">imagjin FPX</comment>
+ <comment xml:lang="ga">íomhá FPX</comment>
+ <comment xml:lang="gl">imaxe FPX</comment>
+ <comment xml:lang="he">תמונת FPX</comment>
+@@ -28250,7 +29228,7 @@
+ <comment xml:lang="oc">imatge FPX</comment>
+ <comment xml:lang="pl">Obraz FPX</comment>
+ <comment xml:lang="pt">imagem FPX</comment>
+- <comment xml:lang="pt_BR">Imagem FPX</comment>
++ <comment xml:lang="pt-BR">Imagem FPX</comment>
+ <comment xml:lang="ro">Imagine FPX</comment>
+ <comment xml:lang="ru">Изображение FPX</comment>
+ <comment xml:lang="sk">Obrázok FPX</comment>
+@@ -28261,35 +29239,37 @@
+ <comment xml:lang="tr">FPX görüntüsü</comment>
+ <comment xml:lang="uk">зображення FPX</comment>
+ <comment xml:lang="vi">Ảnh FPX</comment>
+- <comment xml:lang="zh_CN">FPX 图像</comment>
+- <comment xml:lang="zh_TW">FPX 影像</comment>
++ <comment xml:lang="zh-CN">FPX 图像</comment>
++ <comment xml:lang="zh-TW">FPX 影像</comment>
+ <acronym>FPX</acronym>
+ <expanded-acronym>FlashPiX</expanded-acronym>
+ <magic priority="50">
+- <match value="0x46506978" type="big32" offset="0"/>
++ <match type="big32" value="0x46506978" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="image/x-gzeps">
+ <comment>EPS image (gzip-compressed)</comment>
++ <comment xml:lang="af">EPS-beeld (gzip-saamgepers)</comment>
+ <comment xml:lang="ar">صورة EPS (مضغوط-gzip)</comment>
+- <comment xml:lang="be@latin">Vyjava EPS (gzip-skampresavanaja)</comment>
++ <comment xml:lang="be-Latn">Vyjava EPS (gzip-skampresavanaja)</comment>
+ <comment xml:lang="bg">Изображение — EPS, компресирано с gzip</comment>
+ <comment xml:lang="ca">imatge EPS (amb compressió gzip)</comment>
+ <comment xml:lang="cs">obrázek EPS (komprimovaný pomocí gzip)</comment>
+ <comment xml:lang="da">EPS-billede (gzip-komprimeret)</comment>
+ <comment xml:lang="de">EPS-Bild (gzip-komprimiert)</comment>
+ <comment xml:lang="el">Εικόνα EPS (συμπιεσμένη gzip)</comment>
+- <comment xml:lang="en_GB">EPS image (gzip-compressed)</comment>
++ <comment xml:lang="en-GB">EPS image (gzip-compressed)</comment>
+ <comment xml:lang="es">imagen EPS (comprimida con gzip)</comment>
+ <comment xml:lang="eu">EPS irudia (gzip-ekin konprimitua)</comment>
+ <comment xml:lang="fi">EPS-kuva (gzip-pakattu)</comment>
+ <comment xml:lang="fo">EPS mynd (gzip-stappað)</comment>
+ <comment xml:lang="fr">image EPS (compressée gzip)</comment>
++ <comment xml:lang="fur">imagjin EPS (comprimude cun gzip)</comment>
+ <comment xml:lang="ga">íomhá EPS (comhbhrúite le gzip)</comment>
+ <comment xml:lang="gl">imaxe EPS (comprimida con gzip)</comment>
+ <comment xml:lang="he">תמונת EPS (מכווץ ע״י gzip)</comment>
+ <comment xml:lang="hr">EPS slika (gzip sažeta)</comment>
+- <comment xml:lang="hu">EPS kép (gzip-tömörítésű)</comment>
++ <comment xml:lang="hu">EPS kép (gzip tömörítésű)</comment>
+ <comment xml:lang="ia">Imagine EPS (comprimite con gzip)</comment>
+ <comment xml:lang="id">Citra EPS (terkompresi gzip)</comment>
+ <comment xml:lang="it">Immagine EPS (compressa con gzip)</comment>
+@@ -28305,7 +29285,7 @@
+ <comment xml:lang="oc">imatge EPS (compressat gzip)</comment>
+ <comment xml:lang="pl">Obraz EPS (kompresja gzip)</comment>
+ <comment xml:lang="pt">imagem EPS (compressão gzip)</comment>
+- <comment xml:lang="pt_BR">Imagem EPS (compactada com gzip)</comment>
++ <comment xml:lang="pt-BR">Imagem EPS (compactada com gzip)</comment>
+ <comment xml:lang="ro">Imagine EPS (compresie gzip)</comment>
+ <comment xml:lang="ru">Изображение EPS (сжатое gzip)</comment>
+ <comment xml:lang="sk">Obrázok EPS (komprimovaný pomocou gzip)</comment>
+@@ -28316,8 +29296,8 @@
+ <comment xml:lang="tr">EPS görüntüsü (gzip ile sıkıştırılmış)</comment>
+ <comment xml:lang="uk">зображення EPS (стиснене gzip)</comment>
+ <comment xml:lang="vi">Ảnh EPS (đã nén gzip)</comment>
+- <comment xml:lang="zh_CN">EPS 图像(gzip 压缩)</comment>
+- <comment xml:lang="zh_TW">EPS 影像 (gzip 格式壓縮)</comment>
++ <comment xml:lang="zh-CN">EPS 图像(gzip 压缩)</comment>
++ <comment xml:lang="zh-TW">EPS 影像 (gzip 壓縮)</comment>
+ <sub-class-of type="application/gzip"/>
+ <glob pattern="*.eps.gz"/>
+ <glob pattern="*.epsi.gz"/>
+@@ -28325,16 +29305,19 @@
+ </mime-type>
+ <mime-type type="image/vnd.microsoft.icon">
+ <comment>Windows icon</comment>
++ <comment xml:lang="af">Windows-ikoon</comment>
++ <comment xml:lang="bg">Икона — Windows</comment>
+ <comment xml:lang="ca">icona de Windows</comment>
+ <comment xml:lang="cs">ikona Windows</comment>
+ <comment xml:lang="da">Windows-ikon</comment>
+ <comment xml:lang="de">Windows-Symbol</comment>
+ <comment xml:lang="el">Εικονίδιο Windows</comment>
+- <comment xml:lang="en_GB">Windows icon</comment>
++ <comment xml:lang="en-GB">Windows icon</comment>
+ <comment xml:lang="es">icono de Windows</comment>
+ <comment xml:lang="eu">Windows ikonoa</comment>
+ <comment xml:lang="fi">Windows-kuvake</comment>
+ <comment xml:lang="fr">icône Windows</comment>
++ <comment xml:lang="fur">icone Windows</comment>
+ <comment xml:lang="ga">deilbhín Windows</comment>
+ <comment xml:lang="he">סמל של Windows</comment>
+ <comment xml:lang="hr">Windows ikona</comment>
+@@ -28343,11 +29326,11 @@
+ <comment xml:lang="id">Ikon Windows</comment>
+ <comment xml:lang="it">Icona Windows</comment>
+ <comment xml:lang="kk">Windows таңбашасы</comment>
+- <comment xml:lang="ko">윈도우 아이콘</comment>
++ <comment xml:lang="ko">Windows 아이콘</comment>
+ <comment xml:lang="oc">icòna Windows</comment>
+ <comment xml:lang="pl">Ikona Windows</comment>
+ <comment xml:lang="pt">ícone Windows</comment>
+- <comment xml:lang="pt_BR">Ícone do Windows</comment>
++ <comment xml:lang="pt-BR">Ícone do Windows</comment>
+ <comment xml:lang="ru">Значок Windows</comment>
+ <comment xml:lang="sk">Ikona Windows</comment>
+ <comment xml:lang="sl">Ikona Windows</comment>
+@@ -28355,11 +29338,11 @@
+ <comment xml:lang="sv">Windows-ikon</comment>
+ <comment xml:lang="tr">Windows simgesi</comment>
+ <comment xml:lang="uk">піктограма Windows</comment>
+- <comment xml:lang="zh_CN">Windows 图标</comment>
+- <comment xml:lang="zh_TW">Windows 圖示</comment>
++ <comment xml:lang="zh-CN">Windows 图标</comment>
++ <comment xml:lang="zh-TW">Windows 圖示</comment>
+ <magic priority="50">
+- <match value="\0\0\1\0" type="string" offset="0">
+- <match value="\0" type="string" offset="5"/>
++ <match type="string" value="\0\0\1\0" offset="0">
++ <match type="string" value="\0" offset="5"/>
+ </match>
+ </magic>
+ <glob pattern="*.ico"/>
+@@ -28372,21 +29355,23 @@
+ </mime-type>
+ <mime-type type="image/x-icns">
+ <comment>MacOS X icon</comment>
++ <comment xml:lang="af">MacOS X-ikoon</comment>
+ <comment xml:lang="ar">أيقونة MacOS X</comment>
+- <comment xml:lang="be@latin">Ikona MacOS X</comment>
++ <comment xml:lang="be-Latn">Ikona MacOS X</comment>
+ <comment xml:lang="bg">Икона — MacOS X</comment>
+ <comment xml:lang="ca">icona MacOS X</comment>
+ <comment xml:lang="cs">ikona MacOS X</comment>
+ <comment xml:lang="da">MacOS X-ikon</comment>
+ <comment xml:lang="de">MacOS-X-Symbol</comment>
+ <comment xml:lang="el">Εικονίδιο MacOS X</comment>
+- <comment xml:lang="en_GB">MacOS X icon</comment>
++ <comment xml:lang="en-GB">MacOS X icon</comment>
+ <comment xml:lang="eo">MacOS-X-piktogramo</comment>
+ <comment xml:lang="es">icono de OS X</comment>
+ <comment xml:lang="eu">MacOS X ikonoa</comment>
+ <comment xml:lang="fi">MacOS X -kuvake</comment>
+ <comment xml:lang="fo">MacOS X ímynd</comment>
+ <comment xml:lang="fr">icône MacOS X</comment>
++ <comment xml:lang="fur">icone MacOS X</comment>
+ <comment xml:lang="ga">deilbhín MacOS X</comment>
+ <comment xml:lang="gl">Icona de MacOS X</comment>
+ <comment xml:lang="he">סמל בתקן MacOS X</comment>
+@@ -28407,7 +29392,7 @@
+ <comment xml:lang="oc">icòna MacOS X</comment>
+ <comment xml:lang="pl">Ikona Mac OS X</comment>
+ <comment xml:lang="pt">ćone MacOS X</comment>
+- <comment xml:lang="pt_BR">Ícone do MacOS X</comment>
++ <comment xml:lang="pt-BR">Ícone do MacOS X</comment>
+ <comment xml:lang="ro">Iconiță MacOS X</comment>
+ <comment xml:lang="ru">Значок MacOS X</comment>
+ <comment xml:lang="sk">Ikona MacOS X</comment>
+@@ -28418,18 +29403,19 @@
+ <comment xml:lang="tr">MacOS X simgesi</comment>
+ <comment xml:lang="uk">піктограма MacOS X</comment>
+ <comment xml:lang="vi">Biểu tượng MacOS X</comment>
+- <comment xml:lang="zh_CN">MacOS X 图标</comment>
+- <comment xml:lang="zh_TW">MacOS X 圖示</comment>
++ <comment xml:lang="zh-CN">MacOS X 图标</comment>
++ <comment xml:lang="zh-TW">MacOS X 圖示</comment>
+ <glob pattern="*.icns"/>
+ <magic priority="50">
+- <match value="icns" type="string" offset="0"/>
++ <match type="string" value="icns" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="image/x-ilbm">
+ <comment>ILBM image</comment>
++ <comment xml:lang="af">ILBM-beeld</comment>
+ <comment xml:lang="ar">صورة ILBM</comment>
+ <comment xml:lang="az">ILBM rəsmi</comment>
+- <comment xml:lang="be@latin">Vyjava ILBM</comment>
++ <comment xml:lang="be-Latn">Vyjava ILBM</comment>
+ <comment xml:lang="bg">Изображение — ILBM</comment>
+ <comment xml:lang="ca">imatge ILBM</comment>
+ <comment xml:lang="cs">obrázek ILMB</comment>
+@@ -28437,13 +29423,14 @@
+ <comment xml:lang="da">ILBM-billede</comment>
+ <comment xml:lang="de">ILBM-Bild</comment>
+ <comment xml:lang="el">Εικόνα ILBM</comment>
+- <comment xml:lang="en_GB">ILBM image</comment>
++ <comment xml:lang="en-GB">ILBM image</comment>
+ <comment xml:lang="eo">ILBM-bildo</comment>
+ <comment xml:lang="es">imagen ILBM</comment>
+ <comment xml:lang="eu">ILBM irudia</comment>
+ <comment xml:lang="fi">ILBM-kuva</comment>
+ <comment xml:lang="fo">ILBM mynd</comment>
+ <comment xml:lang="fr">image ILBM</comment>
++ <comment xml:lang="fur">imagjin ILBM</comment>
+ <comment xml:lang="ga">íomhá ILBM</comment>
+ <comment xml:lang="gl">imaxe ILBM</comment>
+ <comment xml:lang="he">תמונת ILBM</comment>
+@@ -28464,7 +29451,7 @@
+ <comment xml:lang="oc">imatge ILBM</comment>
+ <comment xml:lang="pl">Obraz ILBM</comment>
+ <comment xml:lang="pt">imagem ILBM</comment>
+- <comment xml:lang="pt_BR">Imagem ILBM</comment>
++ <comment xml:lang="pt-BR">Imagem ILBM</comment>
+ <comment xml:lang="ro">Imagine ILBM</comment>
+ <comment xml:lang="ru">Изображение ILBM</comment>
+ <comment xml:lang="sk">Obrázok ILMB</comment>
+@@ -28475,8 +29462,8 @@
+ <comment xml:lang="tr">ILBM görüntüsü</comment>
+ <comment xml:lang="uk">зображення ILBM</comment>
+ <comment xml:lang="vi">Ảnh ILBM</comment>
+- <comment xml:lang="zh_CN">ILBM 图像</comment>
+- <comment xml:lang="zh_TW">ILBM 影像</comment>
++ <comment xml:lang="zh-CN">ILBM 图像</comment>
++ <comment xml:lang="zh-TW">ILBM 影像</comment>
+ <acronym>ILBM</acronym>
+ <expanded-acronym>InterLeaved BitMap</expanded-acronym>
+ <sub-class-of type="application/x-iff"/>
+@@ -28491,9 +29478,10 @@
+ </mime-type>
+ <mime-type type="image/x-jng">
+ <comment>JNG image</comment>
++ <comment xml:lang="af">JNG-beeld</comment>
+ <comment xml:lang="ar">صورة JNG</comment>
+ <comment xml:lang="az">JNG rəsmi</comment>
+- <comment xml:lang="be@latin">Vyjava JNG</comment>
++ <comment xml:lang="be-Latn">Vyjava JNG</comment>
+ <comment xml:lang="bg">Изображение — JNG</comment>
+ <comment xml:lang="ca">imatge JNG</comment>
+ <comment xml:lang="cs">obrázek JNG</comment>
+@@ -28501,13 +29489,14 @@
+ <comment xml:lang="da">JNG-billede</comment>
+ <comment xml:lang="de">JNG-Bild</comment>
+ <comment xml:lang="el">Εικόνα JNG</comment>
+- <comment xml:lang="en_GB">JNG image</comment>
++ <comment xml:lang="en-GB">JNG image</comment>
+ <comment xml:lang="eo">JNG-bildo</comment>
+ <comment xml:lang="es">imagen JNG</comment>
+ <comment xml:lang="eu">JNG irudia</comment>
+ <comment xml:lang="fi">JNG-kuva</comment>
+ <comment xml:lang="fo">JNG mynd</comment>
+ <comment xml:lang="fr">image JNG</comment>
++ <comment xml:lang="fur">imagjin JNG</comment>
+ <comment xml:lang="ga">íomhá JNG</comment>
+ <comment xml:lang="gl">imaxe JNG</comment>
+ <comment xml:lang="he">תמונת JNG</comment>
+@@ -28528,7 +29517,7 @@
+ <comment xml:lang="oc">imatge JNG</comment>
+ <comment xml:lang="pl">Obraz JNG</comment>
+ <comment xml:lang="pt">imagem JNG</comment>
+- <comment xml:lang="pt_BR">Imagem JNG</comment>
++ <comment xml:lang="pt-BR">Imagem JNG</comment>
+ <comment xml:lang="ro">Imagine JNG</comment>
+ <comment xml:lang="ru">Изображение JNG</comment>
+ <comment xml:lang="sk">Obrázok JNG</comment>
+@@ -28539,17 +29528,18 @@
+ <comment xml:lang="tr">JNG görüntüsü</comment>
+ <comment xml:lang="uk">зображення JNG</comment>
+ <comment xml:lang="vi">Ảnh JNG</comment>
+- <comment xml:lang="zh_CN">JNG 图像</comment>
+- <comment xml:lang="zh_TW">JNG 影像</comment>
++ <comment xml:lang="zh-CN">JNG 图像</comment>
++ <comment xml:lang="zh-TW">JNG 影像</comment>
+ <acronym>JNG</acronym>
+ <expanded-acronym>JPEG Network Graphics</expanded-acronym>
+ <glob pattern="*.jng"/>
+ </mime-type>
+ <mime-type type="image/x-lwo">
+ <comment>LightWave object</comment>
++ <comment xml:lang="af">LightWave-objek</comment>
+ <comment xml:lang="ar">كائن LightWave</comment>
+ <comment xml:lang="az">LightWave cismi</comment>
+- <comment xml:lang="be@latin">Abjekt LightWave</comment>
++ <comment xml:lang="be-Latn">Abjekt LightWave</comment>
+ <comment xml:lang="bg">Обект — LightWave</comment>
+ <comment xml:lang="ca">objecte de LightWave</comment>
+ <comment xml:lang="cs">objekt LightWave</comment>
+@@ -28557,13 +29547,14 @@
+ <comment xml:lang="da">LightWave-objekt</comment>
+ <comment xml:lang="de">LightWave-Objekt</comment>
+ <comment xml:lang="el">Αντικείμενο LightWave</comment>
+- <comment xml:lang="en_GB">LightWave object</comment>
++ <comment xml:lang="en-GB">LightWave object</comment>
+ <comment xml:lang="eo">LightWave-objekto</comment>
+ <comment xml:lang="es">objeto de LightWave</comment>
+ <comment xml:lang="eu">LightWave objektua</comment>
+ <comment xml:lang="fi">LightWave-esine</comment>
+ <comment xml:lang="fo">LightWave lutur</comment>
+ <comment xml:lang="fr">objet LightWave</comment>
++ <comment xml:lang="fur">ogjet LightWave</comment>
+ <comment xml:lang="ga">réad LightWave</comment>
+ <comment xml:lang="gl">obxecto de LightWave</comment>
+ <comment xml:lang="he">עצם LightWave</comment>
+@@ -28584,7 +29575,7 @@
+ <comment xml:lang="oc">objècte LightWave</comment>
+ <comment xml:lang="pl">Obiekt LightWave</comment>
+ <comment xml:lang="pt">Objecto LightWave</comment>
+- <comment xml:lang="pt_BR">Objeto LightWave</comment>
++ <comment xml:lang="pt-BR">Objeto LightWave</comment>
+ <comment xml:lang="ro">Obiect LightWave</comment>
+ <comment xml:lang="ru">Объект LightWave</comment>
+ <comment xml:lang="sk">Objekt LightWave</comment>
+@@ -28595,16 +29586,17 @@
+ <comment xml:lang="tr">LightWave nesnesi</comment>
+ <comment xml:lang="uk">об'єкт LightWave</comment>
+ <comment xml:lang="vi">Đối tượng LightWave</comment>
+- <comment xml:lang="zh_CN">LightWave 对象</comment>
+- <comment xml:lang="zh_TW">LightWave 物件</comment>
++ <comment xml:lang="zh-CN">LightWave 对象</comment>
++ <comment xml:lang="zh-TW">LightWave 物件</comment>
+ <glob pattern="*.lwo"/>
+ <glob pattern="*.lwob"/>
+ </mime-type>
+ <mime-type type="image/x-lws">
+ <comment>LightWave scene</comment>
++ <comment xml:lang="af">LightWave-toneel</comment>
+ <comment xml:lang="ar">مشهد LightWave</comment>
+ <comment xml:lang="az">LightWave səhnəsi</comment>
+- <comment xml:lang="be@latin">Scena LightWave</comment>
++ <comment xml:lang="be-Latn">Scena LightWave</comment>
+ <comment xml:lang="bg">Сцена — LightWave</comment>
+ <comment xml:lang="ca">escena de LightWave</comment>
+ <comment xml:lang="cs">scéna LightWave</comment>
+@@ -28612,13 +29604,14 @@
+ <comment xml:lang="da">LightWave-scene</comment>
+ <comment xml:lang="de">LightWave-Szene</comment>
+ <comment xml:lang="el">Σκηνή LightWave</comment>
+- <comment xml:lang="en_GB">LightWave scene</comment>
++ <comment xml:lang="en-GB">LightWave scene</comment>
+ <comment xml:lang="eo">LightWave-sceno</comment>
+ <comment xml:lang="es">escena de LightWave</comment>
+ <comment xml:lang="eu">LightWave eszena</comment>
+ <comment xml:lang="fi">LightWave-maisema</comment>
+ <comment xml:lang="fo">LightWave leikmynd</comment>
+ <comment xml:lang="fr">scène LightWave</comment>
++ <comment xml:lang="fur">sene LightWave</comment>
+ <comment xml:lang="ga">radharc LightWave</comment>
+ <comment xml:lang="gl">escena de LightWave</comment>
+ <comment xml:lang="he">סצנה של LightWave</comment>
+@@ -28639,7 +29632,7 @@
+ <comment xml:lang="oc">scèna LightWave</comment>
+ <comment xml:lang="pl">Scena Lightwave</comment>
+ <comment xml:lang="pt">cenário LightWave</comment>
+- <comment xml:lang="pt_BR">Cena LightWave</comment>
++ <comment xml:lang="pt-BR">Cena LightWave</comment>
+ <comment xml:lang="ro">Scenă LightWave</comment>
+ <comment xml:lang="ru">Сцена LightWave</comment>
+ <comment xml:lang="sk">Scéna LightWave</comment>
+@@ -28650,26 +29643,28 @@
+ <comment xml:lang="tr">LightWave sahnesi</comment>
+ <comment xml:lang="uk">сцена LightWave</comment>
+ <comment xml:lang="vi">Cảnh LightWave</comment>
+- <comment xml:lang="zh_CN">LightWave 场景</comment>
+- <comment xml:lang="zh_TW">LightWave 場景</comment>
++ <comment xml:lang="zh-CN">LightWave 场景</comment>
++ <comment xml:lang="zh-TW">LightWave 場景</comment>
+ <glob pattern="*.lws"/>
+ </mime-type>
+ <mime-type type="image/x-macpaint">
+ <comment>MacPaint Bitmap image</comment>
++ <comment xml:lang="af">MacPaint-roosterbeeld</comment>
+ <comment xml:lang="ar">صورة MacPaint Bitmap</comment>
+- <comment xml:lang="be@latin">Bitmapnaja vyjava MacPaint</comment>
++ <comment xml:lang="be-Latn">Bitmapnaja vyjava MacPaint</comment>
+ <comment xml:lang="bg">Изображение — MacPaint Bitmap</comment>
+ <comment xml:lang="ca">imatge de mapa de bits MacPaint</comment>
+ <comment xml:lang="cs">obrázek MacPaint Bitmap</comment>
+ <comment xml:lang="da">MacPaint BitMap-billede</comment>
+ <comment xml:lang="de">MacPaint-Bitmap-Datei</comment>
+ <comment xml:lang="el">Εικόνα Bitmap MacPaint</comment>
+- <comment xml:lang="en_GB">MacPaint Bitmap image</comment>
++ <comment xml:lang="en-GB">MacPaint Bitmap image</comment>
+ <comment xml:lang="es">imagen de mapa de bits de MacPaint</comment>
+ <comment xml:lang="eu">MacPaint Bitmap irudia</comment>
+ <comment xml:lang="fi">MacPaint-bittikartta</comment>
+ <comment xml:lang="fo">MacPaint Bitmap mynd</comment>
+ <comment xml:lang="fr">image matricielle MacPaint</comment>
++ <comment xml:lang="fur">imagjin bitmap MacPaint</comment>
+ <comment xml:lang="ga">íomhá ghiotánmhapach MacPaint</comment>
+ <comment xml:lang="gl">imaxe de mapa de bits MacPaint</comment>
+ <comment xml:lang="he">תמונת מפת-סיביות של MacPaint</comment>
+@@ -28689,7 +29684,7 @@
+ <comment xml:lang="oc">imatge matricial MacPaint</comment>
+ <comment xml:lang="pl">Obraz bitmapowy MacPaint</comment>
+ <comment xml:lang="pt">imagem MacPaint Bitmap</comment>
+- <comment xml:lang="pt_BR">Imagem de bitmap do MacPaint</comment>
++ <comment xml:lang="pt-BR">Imagem de bitmap do MacPaint</comment>
+ <comment xml:lang="ro">Imagine MacPaint Bitmap</comment>
+ <comment xml:lang="ru">Растровое изображение MacPaint</comment>
+ <comment xml:lang="sk">Obrázok MacPaint Bitmap</comment>
+@@ -28700,26 +29695,28 @@
+ <comment xml:lang="tr">MacPaint bit eşlem görüntüsü</comment>
+ <comment xml:lang="uk">растрове зображення MacPaint</comment>
+ <comment xml:lang="vi">Ảnh mảng MacPaint</comment>
+- <comment xml:lang="zh_CN">MacPaint 位图</comment>
+- <comment xml:lang="zh_TW">MacPaint 點陣影像</comment>
++ <comment xml:lang="zh-CN">MacPaint 位图</comment>
++ <comment xml:lang="zh-TW">MacPaint 點陣影像</comment>
+ <glob pattern="*.pntg"/>
+ </mime-type>
+ <mime-type type="image/x-msod">
+ <comment>Office drawing</comment>
++ <comment xml:lang="af">Office-tekening</comment>
+ <comment xml:lang="ar">تصميم أوفيس</comment>
+- <comment xml:lang="be@latin">Ofisny rysunak</comment>
++ <comment xml:lang="be-Latn">Ofisny rysunak</comment>
+ <comment xml:lang="bg">Чертеж — Office</comment>
+ <comment xml:lang="ca">dibuix d'Office</comment>
+ <comment xml:lang="cs">kresba Office</comment>
+ <comment xml:lang="da">Officetegning</comment>
+ <comment xml:lang="de">Office-Zeichnung</comment>
+ <comment xml:lang="el">Σχέδιο Office</comment>
+- <comment xml:lang="en_GB">Office drawing</comment>
++ <comment xml:lang="en-GB">Office drawing</comment>
+ <comment xml:lang="es">dibujo de Office</comment>
+ <comment xml:lang="eu">Office marrazkia</comment>
+ <comment xml:lang="fi">Office-piirros</comment>
+ <comment xml:lang="fo">Office tekning</comment>
+ <comment xml:lang="fr">dessin Office</comment>
++ <comment xml:lang="fur">dissen di Office</comment>
+ <comment xml:lang="ga">líníocht Office</comment>
+ <comment xml:lang="gl">debuxo de Office</comment>
+ <comment xml:lang="he">ציור של Office</comment>
+@@ -28739,7 +29736,7 @@
+ <comment xml:lang="oc">dessenh Office</comment>
+ <comment xml:lang="pl">Rysunek Office</comment>
+ <comment xml:lang="pt">desenho Office</comment>
+- <comment xml:lang="pt_BR">Desenho do Office</comment>
++ <comment xml:lang="pt-BR">Desenho do Office</comment>
+ <comment xml:lang="ro">Desen Office</comment>
+ <comment xml:lang="ru">Рисунок Office</comment>
+ <comment xml:lang="sk">Kresba Office</comment>
+@@ -28750,27 +29747,29 @@
+ <comment xml:lang="tr">Ofis çizimi</comment>
+ <comment xml:lang="uk">малюнок Office</comment>
+ <comment xml:lang="vi">Bản vẽ Office</comment>
+- <comment xml:lang="zh_CN">Office 绘图</comment>
+- <comment xml:lang="zh_TW">Office 繪圖</comment>
++ <comment xml:lang="zh-CN">Office 绘图</comment>
++ <comment xml:lang="zh-TW">Office 繪圖</comment>
+ <glob pattern="*.msod"/>
+ </mime-type>
+ <mime-type type="image/x-niff">
+ <comment>NIFF image</comment>
++ <comment xml:lang="af">NIFF-beeld</comment>
+ <comment xml:lang="ar">صورة NIFF</comment>
+- <comment xml:lang="be@latin">Vyjava NIFF</comment>
++ <comment xml:lang="be-Latn">Vyjava NIFF</comment>
+ <comment xml:lang="bg">Изображение — NIFF</comment>
+ <comment xml:lang="ca">imatge NIFF</comment>
+ <comment xml:lang="cs">obrázek NIFF</comment>
+ <comment xml:lang="da">NIFF-billede</comment>
+ <comment xml:lang="de">NIFF-Bild</comment>
+ <comment xml:lang="el">Εικόνα NIFF</comment>
+- <comment xml:lang="en_GB">NIFF image</comment>
++ <comment xml:lang="en-GB">NIFF image</comment>
+ <comment xml:lang="eo">NIFF-bildo</comment>
+ <comment xml:lang="es">imagen NIFF</comment>
+ <comment xml:lang="eu">NIFF irudia</comment>
+ <comment xml:lang="fi">NIFF-kuva</comment>
+ <comment xml:lang="fo">NIFF mynd</comment>
+ <comment xml:lang="fr">image NIFF</comment>
++ <comment xml:lang="fur">imagjin NIFF</comment>
+ <comment xml:lang="ga">íomhá NIFF</comment>
+ <comment xml:lang="gl">imaxe NIFF</comment>
+ <comment xml:lang="he">תמונת NIFF</comment>
+@@ -28790,7 +29789,7 @@
+ <comment xml:lang="oc">imatge NIFF</comment>
+ <comment xml:lang="pl">Obraz NIFF</comment>
+ <comment xml:lang="pt">imagem NIFF</comment>
+- <comment xml:lang="pt_BR">Imagem NIFF</comment>
++ <comment xml:lang="pt-BR">Imagem NIFF</comment>
+ <comment xml:lang="ro">Imagine NIF</comment>
+ <comment xml:lang="ru">Изображение NIFF</comment>
+ <comment xml:lang="sk">Obrázok NIFF</comment>
+@@ -28801,29 +29800,31 @@
+ <comment xml:lang="tr">NIFF görüntüsü</comment>
+ <comment xml:lang="uk">зображення NIFF</comment>
+ <comment xml:lang="vi">Ảnh NIFF</comment>
+- <comment xml:lang="zh_CN">NIFF 图像</comment>
+- <comment xml:lang="zh_TW">NIFF 影像</comment>
++ <comment xml:lang="zh-CN">NIFF 图像</comment>
++ <comment xml:lang="zh-TW">NIFF 影像</comment>
+ <magic priority="80">
+- <match value="IIN1" type="string" offset="0"/>
++ <match type="string" value="IIN1" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="image/vnd.zbrush.pcx">
+ <comment>PCX image</comment>
++ <comment xml:lang="af">PCX-beeld</comment>
+ <comment xml:lang="ar">صورة PCX</comment>
+- <comment xml:lang="be@latin">Vyjava PCX</comment>
++ <comment xml:lang="be-Latn">Vyjava PCX</comment>
+ <comment xml:lang="bg">Изображение — PCX</comment>
+ <comment xml:lang="ca">imatge PCX</comment>
+ <comment xml:lang="cs">obrázek PCX</comment>
+ <comment xml:lang="da">PCX-billede</comment>
+ <comment xml:lang="de">PCX-Bild</comment>
+ <comment xml:lang="el">Εικόνα PCX</comment>
+- <comment xml:lang="en_GB">PCX image</comment>
++ <comment xml:lang="en-GB">PCX image</comment>
+ <comment xml:lang="eo">PCX-bildo</comment>
+ <comment xml:lang="es">imagen PCX</comment>
+ <comment xml:lang="eu">PCX irudia</comment>
+ <comment xml:lang="fi">PCX-kuva</comment>
+ <comment xml:lang="fo">PCX mynd</comment>
+ <comment xml:lang="fr">image PCX</comment>
++ <comment xml:lang="fur">imagjin PCX</comment>
+ <comment xml:lang="ga">íomhá PCX</comment>
+ <comment xml:lang="gl">imaxe PCX</comment>
+ <comment xml:lang="he">תמונת PCX</comment>
+@@ -28843,7 +29844,7 @@
+ <comment xml:lang="oc">imatge PCX</comment>
+ <comment xml:lang="pl">Obraz PCX</comment>
+ <comment xml:lang="pt">imagem PCX</comment>
+- <comment xml:lang="pt_BR">Imagem PCX</comment>
++ <comment xml:lang="pt-BR">Imagem PCX</comment>
+ <comment xml:lang="ro">Imagine PCX</comment>
+ <comment xml:lang="ru">Изображение PCX</comment>
+ <comment xml:lang="sk">Obrázok PCX</comment>
+@@ -28854,16 +29855,16 @@
+ <comment xml:lang="tr">PCX görüntüsü</comment>
+ <comment xml:lang="uk">зображення PCX</comment>
+ <comment xml:lang="vi">Ảnh PCX</comment>
+- <comment xml:lang="zh_CN">PCX 图像</comment>
+- <comment xml:lang="zh_TW">PCX 影像</comment>
++ <comment xml:lang="zh-CN">PCX 图像</comment>
++ <comment xml:lang="zh-TW">PCX 影像</comment>
+ <acronym>PCX</acronym>
+ <expanded-acronym>PiCture eXchange</expanded-acronym>
+ <magic priority="50">
+- <match value="10" type="byte" offset="0">
+- <match value="0" type="byte" offset="1"/>
+- <match value="2" type="byte" offset="1"/>
+- <match value="3" type="byte" offset="1"/>
+- <match value="5" type="byte" offset="1"/>
++ <match type="byte" value="10" offset="0">
++ <match type="byte" value="0" offset="1"/>
++ <match type="byte" value="2" offset="1"/>
++ <match type="byte" value="3" offset="1"/>
++ <match type="byte" value="5" offset="1"/>
+ </match>
+ </magic>
+ <glob pattern="*.pcx"/>
+@@ -28871,21 +29872,23 @@
+ </mime-type>
+ <mime-type type="image/x-photo-cd">
+ <comment>PCD image</comment>
++ <comment xml:lang="af">PCD-beeld</comment>
+ <comment xml:lang="ar">صورة PCD</comment>
+- <comment xml:lang="be@latin">Vyjava PCD</comment>
++ <comment xml:lang="be-Latn">Vyjava PCD</comment>
+ <comment xml:lang="bg">Изображение — PCD</comment>
+ <comment xml:lang="ca">imatge PCD</comment>
+ <comment xml:lang="cs">obrázek PCD</comment>
+ <comment xml:lang="da">PCD-billede</comment>
+ <comment xml:lang="de">PCD-Bild</comment>
+ <comment xml:lang="el">Εικόνα PCD</comment>
+- <comment xml:lang="en_GB">PCD image</comment>
++ <comment xml:lang="en-GB">PCD image</comment>
+ <comment xml:lang="eo">PCD-bildo</comment>
+ <comment xml:lang="es">imagen PCD</comment>
+ <comment xml:lang="eu">PCD irudia</comment>
+ <comment xml:lang="fi">PCD-kuva</comment>
+ <comment xml:lang="fo">PCD mynd</comment>
+ <comment xml:lang="fr">image PCD</comment>
++ <comment xml:lang="fur">imagjin PCD</comment>
+ <comment xml:lang="ga">íomhá PCD</comment>
+ <comment xml:lang="gl">imaxe PCD</comment>
+ <comment xml:lang="he">תמונת PCD</comment>
+@@ -28906,7 +29909,7 @@
+ <comment xml:lang="oc">imatge PCD</comment>
+ <comment xml:lang="pl">Obraz PCD</comment>
+ <comment xml:lang="pt">imagem PCD</comment>
+- <comment xml:lang="pt_BR">Imagem PCD</comment>
++ <comment xml:lang="pt-BR">Imagem PCD</comment>
+ <comment xml:lang="ro">Imagine PCD</comment>
+ <comment xml:lang="ru">Изображение PCD</comment>
+ <comment xml:lang="sk">Obrázok PCD</comment>
+@@ -28917,17 +29920,18 @@
+ <comment xml:lang="tr">PCD görüntüsü</comment>
+ <comment xml:lang="uk">зображення PCD</comment>
+ <comment xml:lang="vi">Ảnh PCD</comment>
+- <comment xml:lang="zh_CN">PCD 图像</comment>
+- <comment xml:lang="zh_TW">PCD 影像</comment>
++ <comment xml:lang="zh-CN">PCD 图像</comment>
++ <comment xml:lang="zh-TW">PCD 影像</comment>
+ <acronym>PCD</acronym>
+ <expanded-acronym>PhotoCD</expanded-acronym>
+ <glob pattern="*.pcd"/>
+ </mime-type>
+ <mime-type type="image/x-portable-anymap">
+ <comment>PNM image</comment>
++ <comment xml:lang="af">PNM-beeld</comment>
+ <comment xml:lang="ar">صورة PNM</comment>
+ <comment xml:lang="az">PNM rəsmi</comment>
+- <comment xml:lang="be@latin">Vyjava PNM</comment>
++ <comment xml:lang="be-Latn">Vyjava PNM</comment>
+ <comment xml:lang="bg">Изображение — PNM</comment>
+ <comment xml:lang="ca">imatge PNM</comment>
+ <comment xml:lang="cs">obrázek PNM</comment>
+@@ -28935,13 +29939,14 @@
+ <comment xml:lang="da">PNM-billede</comment>
+ <comment xml:lang="de">PNM-Bild</comment>
+ <comment xml:lang="el">Εικόνα PNM</comment>
+- <comment xml:lang="en_GB">PNM image</comment>
++ <comment xml:lang="en-GB">PNM image</comment>
+ <comment xml:lang="eo">PNM-bildo</comment>
+ <comment xml:lang="es">imagen PNM</comment>
+ <comment xml:lang="eu">PNM irudia</comment>
+ <comment xml:lang="fi">PNM-kuva</comment>
+ <comment xml:lang="fo">PNM mynd</comment>
+ <comment xml:lang="fr">image PNM</comment>
++ <comment xml:lang="fur">imagjin PNM</comment>
+ <comment xml:lang="ga">íomhá PNM</comment>
+ <comment xml:lang="gl">imaxe PNM</comment>
+ <comment xml:lang="he">תמונת PNM</comment>
+@@ -28962,7 +29967,7 @@
+ <comment xml:lang="oc">imatge PNM</comment>
+ <comment xml:lang="pl">Obraz PNM</comment>
+ <comment xml:lang="pt">imagem PNM</comment>
+- <comment xml:lang="pt_BR">Imagem PNM</comment>
++ <comment xml:lang="pt-BR">Imagem PNM</comment>
+ <comment xml:lang="ro">Imagine PNM</comment>
+ <comment xml:lang="ru">Изображение PNM</comment>
+ <comment xml:lang="sk">Obrázok PNM</comment>
+@@ -28973,14 +29978,15 @@
+ <comment xml:lang="tr">PNM görüntüsü</comment>
+ <comment xml:lang="uk">зображення PNM</comment>
+ <comment xml:lang="vi">Ảnh PNM</comment>
+- <comment xml:lang="zh_CN">PNM 图像</comment>
+- <comment xml:lang="zh_TW">PNM 影像</comment>
++ <comment xml:lang="zh-CN">PNM 图像</comment>
++ <comment xml:lang="zh-TW">PNM 影像</comment>
+ <glob pattern="*.pnm"/>
+ </mime-type>
+ <mime-type type="image/x-portable-bitmap">
+ <comment>PBM image</comment>
++ <comment xml:lang="af">PBM-beeld</comment>
+ <comment xml:lang="ar">صورة PBM</comment>
+- <comment xml:lang="be@latin">Vyjava PBM</comment>
++ <comment xml:lang="be-Latn">Vyjava PBM</comment>
+ <comment xml:lang="bg">Изображение — PBM</comment>
+ <comment xml:lang="ca">imatge PBM</comment>
+ <comment xml:lang="cs">obrázek PBM</comment>
+@@ -28988,13 +29994,14 @@
+ <comment xml:lang="da">PBM-billede</comment>
+ <comment xml:lang="de">PBM-Bild</comment>
+ <comment xml:lang="el">Εικόνα PBM</comment>
+- <comment xml:lang="en_GB">PBM image</comment>
++ <comment xml:lang="en-GB">PBM image</comment>
+ <comment xml:lang="eo">PBM-bildo</comment>
+ <comment xml:lang="es">imagen PBM</comment>
+ <comment xml:lang="eu">PBM irudia</comment>
+ <comment xml:lang="fi">PBM-kuva</comment>
+ <comment xml:lang="fo">PBM mynd</comment>
+ <comment xml:lang="fr">image PBM</comment>
++ <comment xml:lang="fur">imagjin PBM</comment>
+ <comment xml:lang="ga">íomhá PBM</comment>
+ <comment xml:lang="gl">imaxe PBM</comment>
+ <comment xml:lang="he">תמונת PBM</comment>
+@@ -29015,7 +30022,7 @@
+ <comment xml:lang="oc">imatge PBM</comment>
+ <comment xml:lang="pl">Obraz PBM</comment>
+ <comment xml:lang="pt">imagem PBM</comment>
+- <comment xml:lang="pt_BR">Imagem PBM</comment>
++ <comment xml:lang="pt-BR">Imagem PBM</comment>
+ <comment xml:lang="ro">Imagine PBM</comment>
+ <comment xml:lang="ru">Изображение PBM</comment>
+ <comment xml:lang="sk">Obrázok PBM</comment>
+@@ -29026,31 +30033,32 @@
+ <comment xml:lang="tr">PBM görüntüsü</comment>
+ <comment xml:lang="uk">зображення PBM</comment>
+ <comment xml:lang="vi">Ảnh PBM</comment>
+- <comment xml:lang="zh_CN">PBM 图像</comment>
+- <comment xml:lang="zh_TW">PBM 影像</comment>
++ <comment xml:lang="zh-CN">PBM 图像</comment>
++ <comment xml:lang="zh-TW">PBM 影像</comment>
+ <acronym>PBM</acronym>
+ <expanded-acronym>Portable BitMap</expanded-acronym>
+ <sub-class-of type="image/x-portable-anymap"/>
+ <magic priority="50">
+- <match value="P1" type="string" offset="0">
+- <match value="0x0a" type="byte" offset="2"/>
+- <match value="0x20" type="byte" offset="2"/>
+- <match value="0x09" type="byte" offset="2"/>
+- <match value="0x0d" type="byte" offset="2"/>
++ <match type="string" value="P1" offset="0">
++ <match type="byte" value="0x0a" offset="2"/>
++ <match type="byte" value="0x20" offset="2"/>
++ <match type="byte" value="0x09" offset="2"/>
++ <match type="byte" value="0x0d" offset="2"/>
+ </match>
+- <match value="P4" type="string" offset="0">
+- <match value="0x0a" type="byte" offset="2"/>
+- <match value="0x20" type="byte" offset="2"/>
+- <match value="0x09" type="byte" offset="2"/>
+- <match value="0x0d" type="byte" offset="2"/>
++ <match type="string" value="P4" offset="0">
++ <match type="byte" value="0x0a" offset="2"/>
++ <match type="byte" value="0x20" offset="2"/>
++ <match type="byte" value="0x09" offset="2"/>
++ <match type="byte" value="0x0d" offset="2"/>
+ </match>
+ </magic>
+ <glob pattern="*.pbm"/>
+ </mime-type>
+ <mime-type type="image/x-portable-graymap">
+ <comment>PGM image</comment>
++ <comment xml:lang="af">PGM-beeld</comment>
+ <comment xml:lang="ar">صورة PGM</comment>
+- <comment xml:lang="be@latin">Vyjava PGM</comment>
++ <comment xml:lang="be-Latn">Vyjava PGM</comment>
+ <comment xml:lang="bg">Изображение — PGM</comment>
+ <comment xml:lang="ca">imatge PGM</comment>
+ <comment xml:lang="cs">obrázek PGM</comment>
+@@ -29058,13 +30066,14 @@
+ <comment xml:lang="da">PGM-billede</comment>
+ <comment xml:lang="de">PGM-Bild</comment>
+ <comment xml:lang="el">Εικόνα PGM</comment>
+- <comment xml:lang="en_GB">PGM image</comment>
++ <comment xml:lang="en-GB">PGM image</comment>
+ <comment xml:lang="eo">PGM-bildo</comment>
+ <comment xml:lang="es">imagen PGM</comment>
+ <comment xml:lang="eu">PGM irudia</comment>
+ <comment xml:lang="fi">PGM-kuva</comment>
+ <comment xml:lang="fo">PGM mynd</comment>
+ <comment xml:lang="fr">image PGM</comment>
++ <comment xml:lang="fur">imagjin PGM</comment>
+ <comment xml:lang="ga">íomhá PGM</comment>
+ <comment xml:lang="gl">imaxe PGM</comment>
+ <comment xml:lang="he">תמונת PGM</comment>
+@@ -29084,7 +30093,7 @@
+ <comment xml:lang="oc">imatge PGM</comment>
+ <comment xml:lang="pl">Obraz PGM</comment>
+ <comment xml:lang="pt">imagem PGM</comment>
+- <comment xml:lang="pt_BR">Imagem PGM</comment>
++ <comment xml:lang="pt-BR">Imagem PGM</comment>
+ <comment xml:lang="ro">Imagine PGM</comment>
+ <comment xml:lang="ru">Изображение PGM</comment>
+ <comment xml:lang="sk">Obrázok PGM</comment>
+@@ -29095,31 +30104,32 @@
+ <comment xml:lang="tr">PGM görüntüsü</comment>
+ <comment xml:lang="uk">зображення PGM</comment>
+ <comment xml:lang="vi">Ảnh PGM</comment>
+- <comment xml:lang="zh_CN">PGM 图像</comment>
+- <comment xml:lang="zh_TW">PGM 影像</comment>
++ <comment xml:lang="zh-CN">PGM 图像</comment>
++ <comment xml:lang="zh-TW">PGM 影像</comment>
+ <acronym>PGM</acronym>
+ <expanded-acronym>Portable GrayMap</expanded-acronym>
+ <sub-class-of type="image/x-portable-anymap"/>
+ <magic priority="50">
+- <match value="P2" type="string" offset="0">
+- <match value="0x0a" type="byte" offset="2"/>
+- <match value="0x20" type="byte" offset="2"/>
+- <match value="0x09" type="byte" offset="2"/>
+- <match value="0x0d" type="byte" offset="2"/>
++ <match type="string" value="P2" offset="0">
++ <match type="byte" value="0x0a" offset="2"/>
++ <match type="byte" value="0x20" offset="2"/>
++ <match type="byte" value="0x09" offset="2"/>
++ <match type="byte" value="0x0d" offset="2"/>
+ </match>
+- <match value="P5" type="string" offset="0">
+- <match value="0x0a" type="byte" offset="2"/>
+- <match value="0x20" type="byte" offset="2"/>
+- <match value="0x09" type="byte" offset="2"/>
+- <match value="0x0d" type="byte" offset="2"/>
++ <match type="string" value="P5" offset="0">
++ <match type="byte" value="0x0a" offset="2"/>
++ <match type="byte" value="0x20" offset="2"/>
++ <match type="byte" value="0x09" offset="2"/>
++ <match type="byte" value="0x0d" offset="2"/>
+ </match>
+ </magic>
+ <glob pattern="*.pgm"/>
+ </mime-type>
+ <mime-type type="image/x-portable-pixmap">
+ <comment>PPM image</comment>
++ <comment xml:lang="af">PPM-beeld</comment>
+ <comment xml:lang="ar">صورة PPM</comment>
+- <comment xml:lang="be@latin">Vyjava PPM</comment>
++ <comment xml:lang="be-Latn">Vyjava PPM</comment>
+ <comment xml:lang="bg">Изображение — PPM</comment>
+ <comment xml:lang="ca">imatge PPM</comment>
+ <comment xml:lang="cs">obrázek PPM</comment>
+@@ -29127,13 +30137,14 @@
+ <comment xml:lang="da">PPM-billede</comment>
+ <comment xml:lang="de">PPM-Bild</comment>
+ <comment xml:lang="el">Εικόνα PPM</comment>
+- <comment xml:lang="en_GB">PPM image</comment>
++ <comment xml:lang="en-GB">PPM image</comment>
+ <comment xml:lang="eo">PPM-bildo</comment>
+ <comment xml:lang="es">imagen PPM</comment>
+ <comment xml:lang="eu">PPM irudia</comment>
+ <comment xml:lang="fi">PPM-kuva</comment>
+ <comment xml:lang="fo">PPM mynd</comment>
+ <comment xml:lang="fr">image PPM</comment>
++ <comment xml:lang="fur">imagjin PPM</comment>
+ <comment xml:lang="ga">íomhá PPM</comment>
+ <comment xml:lang="gl">imaxe PPM</comment>
+ <comment xml:lang="he">תמונת PPM</comment>
+@@ -29153,7 +30164,7 @@
+ <comment xml:lang="oc">imatge PPM</comment>
+ <comment xml:lang="pl">Obraz PPM</comment>
+ <comment xml:lang="pt">imagem PPM</comment>
+- <comment xml:lang="pt_BR">Imagem PPM</comment>
++ <comment xml:lang="pt-BR">Imagem PPM</comment>
+ <comment xml:lang="ro">Imagine PPM</comment>
+ <comment xml:lang="ru">Изображение PPM</comment>
+ <comment xml:lang="sk">Obrázok PPM</comment>
+@@ -29164,29 +30175,30 @@
+ <comment xml:lang="tr">PPM görüntüsü</comment>
+ <comment xml:lang="uk">зображення PPM</comment>
+ <comment xml:lang="vi">Ảnh PPM</comment>
+- <comment xml:lang="zh_CN">PPM 图像</comment>
+- <comment xml:lang="zh_TW">PPM 影像</comment>
++ <comment xml:lang="zh-CN">PPM 图像</comment>
++ <comment xml:lang="zh-TW">PPM 影像</comment>
+ <acronym>PPM</acronym>
+ <expanded-acronym>Portable PixMap</expanded-acronym>
+ <sub-class-of type="image/x-portable-anymap"/>
+ <magic priority="50">
+- <match value="P3" type="string" offset="0">
+- <match value="0x0a" type="byte" offset="2"/>
+- <match value="0x20" type="byte" offset="2"/>
+- <match value="0x09" type="byte" offset="2"/>
+- <match value="0x0d" type="byte" offset="2"/>
++ <match type="string" value="P3" offset="0">
++ <match type="byte" value="0x0a" offset="2"/>
++ <match type="byte" value="0x20" offset="2"/>
++ <match type="byte" value="0x09" offset="2"/>
++ <match type="byte" value="0x0d" offset="2"/>
+ </match>
+- <match value="P6" type="string" offset="0">
+- <match value="0x0a" type="byte" offset="2"/>
+- <match value="0x20" type="byte" offset="2"/>
+- <match value="0x09" type="byte" offset="2"/>
+- <match value="0x0d" type="byte" offset="2"/>
++ <match type="string" value="P6" offset="0">
++ <match type="byte" value="0x0a" offset="2"/>
++ <match type="byte" value="0x20" offset="2"/>
++ <match type="byte" value="0x09" offset="2"/>
++ <match type="byte" value="0x0d" offset="2"/>
+ </match>
+ </magic>
+ <glob pattern="*.ppm"/>
+ </mime-type>
+ <mime-type type="image/vnd.adobe.photoshop">
+ <comment>Photoshop image</comment>
++ <comment xml:lang="af">Photoshop-beeld</comment>
+ <comment xml:lang="ar">صورة فوتوشوب</comment>
+ <comment xml:lang="bg">Изображение — Photoshop</comment>
+ <comment xml:lang="ca">imatge de Photoshop</comment>
+@@ -29194,13 +30206,14 @@
+ <comment xml:lang="da">Photoshop-billede</comment>
+ <comment xml:lang="de">Photoshop-Bild</comment>
+ <comment xml:lang="el">Εικόνα Photoshop</comment>
+- <comment xml:lang="en_GB">Photoshop image</comment>
++ <comment xml:lang="en-GB">Photoshop image</comment>
+ <comment xml:lang="eo">Photoshop-bildo</comment>
+ <comment xml:lang="es">imagen de Photoshop</comment>
+ <comment xml:lang="eu">Photoshop irudia</comment>
+ <comment xml:lang="fi">Photoshop-kuva</comment>
+ <comment xml:lang="fo">Photoshop mynd</comment>
+ <comment xml:lang="fr">image Photoshop</comment>
++ <comment xml:lang="fur">imagjin Photoshop</comment>
+ <comment xml:lang="ga">íomhá Photoshop</comment>
+ <comment xml:lang="gl">imaxe de Photoshop</comment>
+ <comment xml:lang="he">תמונת Photoshop</comment>
+@@ -29219,7 +30232,7 @@
+ <comment xml:lang="oc">imatge Photoshop</comment>
+ <comment xml:lang="pl">Obraz Photoshop</comment>
+ <comment xml:lang="pt">imagem Photoshop</comment>
+- <comment xml:lang="pt_BR">Imagem do Photoshop</comment>
++ <comment xml:lang="pt-BR">Imagem do Photoshop</comment>
+ <comment xml:lang="ro">Imagine Photoshop</comment>
+ <comment xml:lang="ru">Изображение Photoshop</comment>
+ <comment xml:lang="sk">Obrázok Photoshop</comment>
+@@ -29229,10 +30242,10 @@
+ <comment xml:lang="tr">Photoshop görüntüsü</comment>
+ <comment xml:lang="uk">зображення Photoshop</comment>
+ <comment xml:lang="vi">Ảnh Photoshop</comment>
+- <comment xml:lang="zh_CN">Photoshop 图像</comment>
+- <comment xml:lang="zh_TW">Photoshop 影像</comment>
++ <comment xml:lang="zh-CN">Photoshop 图像</comment>
++ <comment xml:lang="zh-TW">Photoshop 影像</comment>
+ <magic priority="50">
+- <match value="8BPS \000\000\000\000" type="string" offset="0" mask="0xffffffff0000ffffffff"/>
++ <match type="string" mask="0xffffffff0000ffffffff" value="8BPS \000\000\000\000" offset="0"/>
+ </magic>
+ <glob pattern="*.psd"/>
+ <alias type="image/psd"/>
+@@ -29244,9 +30257,10 @@
+ </mime-type>
+ <mime-type type="image/x-rgb">
+ <comment>RGB image</comment>
++ <comment xml:lang="af">RGB-beeld</comment>
+ <comment xml:lang="ar">صورة RGB</comment>
+ <comment xml:lang="az">RGB rəsmi</comment>
+- <comment xml:lang="be@latin">Vyjava RGB</comment>
++ <comment xml:lang="be-Latn">Vyjava RGB</comment>
+ <comment xml:lang="bg">Изображение — RGB</comment>
+ <comment xml:lang="ca">imatge RGB</comment>
+ <comment xml:lang="cs">obrázek RGB</comment>
+@@ -29254,13 +30268,14 @@
+ <comment xml:lang="da">RGB-billede</comment>
+ <comment xml:lang="de">RGB-Bild</comment>
+ <comment xml:lang="el">Εικόνα RGB</comment>
+- <comment xml:lang="en_GB">RGB image</comment>
++ <comment xml:lang="en-GB">RGB image</comment>
+ <comment xml:lang="eo">RGB-bildo</comment>
+ <comment xml:lang="es">imagen RGB</comment>
+ <comment xml:lang="eu">RGB irudia</comment>
+ <comment xml:lang="fi">RGB-kuva</comment>
+ <comment xml:lang="fo">RGB mynd</comment>
+ <comment xml:lang="fr">image RGB</comment>
++ <comment xml:lang="fur">imagjin RGB</comment>
+ <comment xml:lang="ga">íomhá RGB</comment>
+ <comment xml:lang="gl">imaxe RGB</comment>
+ <comment xml:lang="he">תמונת RGB</comment>
+@@ -29281,7 +30296,7 @@
+ <comment xml:lang="oc">imatge RGB</comment>
+ <comment xml:lang="pl">Obraz RGB</comment>
+ <comment xml:lang="pt">imagem RGB</comment>
+- <comment xml:lang="pt_BR">Imagem RGB</comment>
++ <comment xml:lang="pt-BR">Imagem RGB</comment>
+ <comment xml:lang="ro">Imagine RGB</comment>
+ <comment xml:lang="ru">Изображение RGB</comment>
+ <comment xml:lang="sk">Obrázok RGB</comment>
+@@ -29292,27 +30307,29 @@
+ <comment xml:lang="tr">RGB görüntüsü</comment>
+ <comment xml:lang="uk">зображення RGB</comment>
+ <comment xml:lang="vi">Ảnh kiểu RGB</comment>
+- <comment xml:lang="zh_CN">RGB 图像</comment>
+- <comment xml:lang="zh_TW">RGB 影像</comment>
++ <comment xml:lang="zh-CN">RGB 图像</comment>
++ <comment xml:lang="zh-TW">RGB 影像</comment>
+ <glob pattern="*.rgb"/>
+ </mime-type>
+ <mime-type type="image/x-sgi">
+ <comment>SGI image</comment>
++ <comment xml:lang="af">SGI-beeld</comment>
+ <comment xml:lang="ar">صورة SGI</comment>
+- <comment xml:lang="be@latin">Vyjava SGI</comment>
++ <comment xml:lang="be-Latn">Vyjava SGI</comment>
+ <comment xml:lang="bg">Изображение — SGI</comment>
+ <comment xml:lang="ca">imatge SGI</comment>
+ <comment xml:lang="cs">obrázek SGI</comment>
+ <comment xml:lang="da">SGI-billede</comment>
+ <comment xml:lang="de">SGI-Bild</comment>
+ <comment xml:lang="el">Εικόνα SGI</comment>
+- <comment xml:lang="en_GB">SGI image</comment>
++ <comment xml:lang="en-GB">SGI image</comment>
+ <comment xml:lang="eo">SGI-bildo</comment>
+ <comment xml:lang="es">imagen SGI</comment>
+ <comment xml:lang="eu">SGI irudia</comment>
+ <comment xml:lang="fi">SGI-kuva</comment>
+ <comment xml:lang="fo">SGI mynd</comment>
+ <comment xml:lang="fr">image SGI</comment>
++ <comment xml:lang="fur">imagjin SGI</comment>
+ <comment xml:lang="ga">íomhá SGI</comment>
+ <comment xml:lang="gl">imaxe SGI</comment>
+ <comment xml:lang="he">תמונת SGI</comment>
+@@ -29332,7 +30349,7 @@
+ <comment xml:lang="oc">imatge SGI</comment>
+ <comment xml:lang="pl">Obraz SGI</comment>
+ <comment xml:lang="pt">imagem SGI</comment>
+- <comment xml:lang="pt_BR">Imagem SGI</comment>
++ <comment xml:lang="pt-BR">Imagem SGI</comment>
+ <comment xml:lang="ro">Imagine SGI</comment>
+ <comment xml:lang="ru">Изображение SGI</comment>
+ <comment xml:lang="sk">Obrázok SGI</comment>
+@@ -29343,26 +30360,28 @@
+ <comment xml:lang="tr">SGI görüntüsü</comment>
+ <comment xml:lang="uk">зображення SGI</comment>
+ <comment xml:lang="vi">Ảnh SGI</comment>
+- <comment xml:lang="zh_CN">SGI 图像</comment>
+- <comment xml:lang="zh_TW">SGI 影像</comment>
++ <comment xml:lang="zh-CN">SGI 图像</comment>
++ <comment xml:lang="zh-TW">SGI 影像</comment>
+ <glob pattern="*.sgi"/>
+ </mime-type>
+ <mime-type type="image/x-sun-raster">
+ <comment>Sun raster image</comment>
++ <comment xml:lang="af">Sun-roosterbeeld</comment>
+ <comment xml:lang="ar">صورة Sun raster</comment>
+- <comment xml:lang="be@latin">Rastravaja vyjava Sun</comment>
++ <comment xml:lang="be-Latn">Rastravaja vyjava Sun</comment>
+ <comment xml:lang="bg">Изображение — Sun raster</comment>
+ <comment xml:lang="ca">imatge ràster Sun</comment>
+ <comment xml:lang="cs">rastrový obrázek Sun</comment>
+ <comment xml:lang="da">Sun rasterbillede</comment>
+ <comment xml:lang="de">Sun-Rasterbild</comment>
+ <comment xml:lang="el">Εικόνα Sun raster</comment>
+- <comment xml:lang="en_GB">Sun raster image</comment>
++ <comment xml:lang="en-GB">Sun raster image</comment>
+ <comment xml:lang="es">imagen rasterizada de Sun</comment>
+ <comment xml:lang="eu">Sun raster irudia</comment>
+ <comment xml:lang="fi">Sun-rasterikuva</comment>
+ <comment xml:lang="fo">Sun raster mynd</comment>
+ <comment xml:lang="fr">image raster Sun</comment>
++ <comment xml:lang="fur">imagjin raster Sun</comment>
+ <comment xml:lang="ga">íomhá rastar Sun</comment>
+ <comment xml:lang="gl">imaxe ráster de Sun</comment>
+ <comment xml:lang="he">תמונה סרוקה של Sun</comment>
+@@ -29382,7 +30401,7 @@
+ <comment xml:lang="oc">imatge raster Sun</comment>
+ <comment xml:lang="pl">Obraz rastrowy Sun</comment>
+ <comment xml:lang="pt">imagem raster Sun</comment>
+- <comment xml:lang="pt_BR">Imagem raster da Sun</comment>
++ <comment xml:lang="pt-BR">Imagem raster da Sun</comment>
+ <comment xml:lang="ro">Imagine rasterizată Sun</comment>
+ <comment xml:lang="ru">Растровое изображение Sun</comment>
+ <comment xml:lang="sk">Rastrový obrázok Sun</comment>
+@@ -29393,30 +30412,32 @@
+ <comment xml:lang="tr">Sun raster görüntüsü</comment>
+ <comment xml:lang="uk">растрове зображення Sun</comment>
+ <comment xml:lang="vi">Ảnh mành Sun</comment>
+- <comment xml:lang="zh_CN">Sun 光栅图像</comment>
+- <comment xml:lang="zh_TW">Sun raster 影像</comment>
++ <comment xml:lang="zh-CN">Sun 光栅图像</comment>
++ <comment xml:lang="zh-TW">Sun raster 影像</comment>
+ <magic priority="50">
+- <match value="0x59a66a95" type="big32" offset="0"/>
++ <match type="big32" value="0x59a66a95" offset="0"/>
+ </magic>
+ <glob pattern="*.sun"/>
+ </mime-type>
+ <mime-type type="image/x-tga">
+ <comment>TGA image</comment>
++ <comment xml:lang="af">TGA-beeld</comment>
+ <comment xml:lang="ar">صورة TGA</comment>
+- <comment xml:lang="be@latin">Vyjava TGA</comment>
++ <comment xml:lang="be-Latn">Vyjava TGA</comment>
+ <comment xml:lang="bg">Изображение — TGA</comment>
+ <comment xml:lang="ca">imatge TGA</comment>
+ <comment xml:lang="cs">obrázek TGA</comment>
+ <comment xml:lang="da">TGA-billede</comment>
+ <comment xml:lang="de">TGA-Bild</comment>
+ <comment xml:lang="el">Εικόνα TGA</comment>
+- <comment xml:lang="en_GB">TGA image</comment>
++ <comment xml:lang="en-GB">TGA image</comment>
+ <comment xml:lang="eo">TGA-bildo</comment>
+ <comment xml:lang="es">imagen TGA</comment>
+ <comment xml:lang="eu">TGA irudia</comment>
+ <comment xml:lang="fi">TGA-kuva</comment>
+ <comment xml:lang="fo">TGA mynd</comment>
+ <comment xml:lang="fr">image TGA</comment>
++ <comment xml:lang="fur">imagjin TGA</comment>
+ <comment xml:lang="ga">íomhá TGA</comment>
+ <comment xml:lang="gl">imaxe TGA</comment>
+ <comment xml:lang="he">תמונת TGA</comment>
+@@ -29436,7 +30457,7 @@
+ <comment xml:lang="oc">imatge TGA</comment>
+ <comment xml:lang="pl">Obraz TGA</comment>
+ <comment xml:lang="pt">imagem TGA</comment>
+- <comment xml:lang="pt_BR">Imagem TGA</comment>
++ <comment xml:lang="pt-BR">Imagem TGA</comment>
+ <comment xml:lang="ro">Imagine TGA</comment>
+ <comment xml:lang="ru">Изображение TGA</comment>
+ <comment xml:lang="sk">Obrázok TGA</comment>
+@@ -29447,23 +30468,23 @@
+ <comment xml:lang="tr">TGA görüntüsü</comment>
+ <comment xml:lang="uk">зображення TGA</comment>
+ <comment xml:lang="vi">Ảnh TGA</comment>
+- <comment xml:lang="zh_CN">TGA 图像</comment>
+- <comment xml:lang="zh_TW">TGA 影像</comment>
++ <comment xml:lang="zh-CN">TGA 图像</comment>
++ <comment xml:lang="zh-TW">TGA 影像</comment>
+ <acronym>TGA</acronym>
+ <expanded-acronym>Truevision Graphics Adapter</expanded-acronym>
+ <magic priority="10">
+- <match value="\1\1" type="string" offset="1"/>
+- <match value="\1\11" type="string" offset="1"/>
+- <match value="\0\3" type="string" offset="1"/>
+- <match value="\0\xa" type="string" offset="1"/>
+- <match value="\0\xb" type="string" offset="1"/>
+- </magic>
+- <magic priority="50">
+- <match value="\0\2" type="string" offset="1">
+- <match value="0x08" type="byte" offset="16"/>
+- <match value="0x10" type="byte" offset="16"/>
+- <match value="0x18" type="byte" offset="16"/>
+- <match value="0x20" type="byte" offset="16"/>
++ <match type="string" value="\1\1" offset="1"/>
++ <match type="string" value="\1\11" offset="1"/>
++ <match type="string" value="\0\3" offset="1"/>
++ <match type="string" value="\0\xa" offset="1"/>
++ <match type="string" value="\0\xb" offset="1"/>
++ </magic>
++ <magic priority="50">
++ <match type="string" value="\0\2" offset="1">
++ <match type="byte" value="0x08" offset="16"/>
++ <match type="byte" value="0x10" offset="16"/>
++ <match type="byte" value="0x18" offset="16"/>
++ <match type="byte" value="0x20" offset="16"/>
+ </match>
+ </magic>
+ <glob pattern="*.tga"/>
+@@ -29471,25 +30492,33 @@
+ <glob pattern="*.tpic"/>
+ <glob pattern="*.vda"/>
+ <glob pattern="*.vst"/>
++ <alias type="application/tga"/>
++ <alias type="application/x-targa"/>
++ <alias type="application/x-tga"/>
++ <alias type="image/targa"/>
++ <alias type="image/tga"/>
+ <alias type="image/x-icb"/>
++ <alias type="image/x-targa"/>
+ </mime-type>
+ <mime-type type="image/x-win-bitmap">
+ <comment>Windows cursor</comment>
++ <comment xml:lang="af">Windows-wyser</comment>
+ <comment xml:lang="ar">مؤشر ويندوز</comment>
+- <comment xml:lang="be@latin">Kursor Windows</comment>
++ <comment xml:lang="be-Latn">Kursor Windows</comment>
+ <comment xml:lang="bg">Курсор — Windows</comment>
+ <comment xml:lang="ca">cursor de Windows</comment>
+ <comment xml:lang="cs">kurzor Windows</comment>
+ <comment xml:lang="da">Windowsmarkør</comment>
+ <comment xml:lang="de">Windows-Cursor</comment>
+ <comment xml:lang="el">Δρομέας Windows</comment>
+- <comment xml:lang="en_GB">Windows cursor</comment>
++ <comment xml:lang="en-GB">Windows cursor</comment>
+ <comment xml:lang="eo">Windows-kursoro</comment>
+ <comment xml:lang="es">cursor de Windows</comment>
+ <comment xml:lang="eu">Windows kurtsorea</comment>
+ <comment xml:lang="fi">Windows-osoitin</comment>
+ <comment xml:lang="fo">Windows vísi</comment>
+ <comment xml:lang="fr">curseur Windows</comment>
++ <comment xml:lang="fur">cursôr di Windows</comment>
+ <comment xml:lang="ga">cúrsóir Windows</comment>
+ <comment xml:lang="gl">Cursor de Windows</comment>
+ <comment xml:lang="he">סמן של Windows</comment>
+@@ -29510,7 +30539,7 @@
+ <comment xml:lang="oc">cursor Windows</comment>
+ <comment xml:lang="pl">Kursor Windows</comment>
+ <comment xml:lang="pt">cursor Windows</comment>
+- <comment xml:lang="pt_BR">Cursor do Windows</comment>
++ <comment xml:lang="pt-BR">Cursor do Windows</comment>
+ <comment xml:lang="ro">Cursor Windows</comment>
+ <comment xml:lang="ru">Курсор Windows</comment>
+ <comment xml:lang="sk">Kurzor Windows</comment>
+@@ -29521,31 +30550,33 @@
+ <comment xml:lang="tr">Windows imleci</comment>
+ <comment xml:lang="uk">курсор Windows</comment>
+ <comment xml:lang="vi">Con chạy Windows</comment>
+- <comment xml:lang="zh_CN">Windows 光标</comment>
+- <comment xml:lang="zh_TW">Windows 滑鼠游標</comment>
++ <comment xml:lang="zh-CN">Windows 光标</comment>
++ <comment xml:lang="zh-TW">Windows 滑鼠游標</comment>
+ <magic priority="50">
+- <match value="\0\0\2\0" type="string" offset="0">
+- <match value="\0" type="string" offset="5"/>
++ <match type="string" value="\0\0\2\0" offset="0">
++ <match type="string" value="\0" offset="5"/>
+ </match>
+ </magic>
+ <glob pattern="*.cur"/>
+ </mime-type>
+ <mime-type type="application/x-navi-animation">
+ <comment>Windows animated cursor</comment>
++ <comment xml:lang="af">Windows geanimeerde wyser</comment>
+ <comment xml:lang="ar">مؤشر ويندوز المتحرك</comment>
+- <comment xml:lang="be@latin">Animavany kursor Windows</comment>
++ <comment xml:lang="be-Latn">Animavany kursor Windows</comment>
+ <comment xml:lang="bg">Курсор — Windows, анимиран</comment>
+ <comment xml:lang="ca">cursor animat de Windows</comment>
+ <comment xml:lang="cs">animovaný kurzor Windows</comment>
+ <comment xml:lang="da">Windowsanimeret markør</comment>
+ <comment xml:lang="de">Animierter Windows-Cursor</comment>
+ <comment xml:lang="el">Κινούμενος δρομέας Windows</comment>
+- <comment xml:lang="en_GB">Windows animated cursor</comment>
++ <comment xml:lang="en-GB">Windows animated cursor</comment>
+ <comment xml:lang="es">cursor animado de Windows</comment>
+ <comment xml:lang="eu">Windows-eko kurtsore animatua</comment>
+ <comment xml:lang="fi">animoitu Windows-osoitin</comment>
+ <comment xml:lang="fo">Windows livindaigjørdur vísi</comment>
+ <comment xml:lang="fr">curseur animé Windows</comment>
++ <comment xml:lang="fur">cursôr animât di Windows</comment>
+ <comment xml:lang="ga">cúrsóir beoite Windows</comment>
+ <comment xml:lang="gl">Cursor animado de Windows</comment>
+ <comment xml:lang="he">סמן מונפש של Windows</comment>
+@@ -29564,7 +30595,7 @@
+ <comment xml:lang="oc">cursor animat Windows</comment>
+ <comment xml:lang="pl">Animowany kursor Windows</comment>
+ <comment xml:lang="pt">cursor animado Windows</comment>
+- <comment xml:lang="pt_BR">Cursor animado do Windows</comment>
++ <comment xml:lang="pt-BR">Cursor animado do Windows</comment>
+ <comment xml:lang="ro">Cursor animat Windows</comment>
+ <comment xml:lang="ru">Анимированный курсор Windows</comment>
+ <comment xml:lang="sk">Animovaný kurzor Windows</comment>
+@@ -29575,32 +30606,34 @@
+ <comment xml:lang="tr">Windows canlandırmalı imleci</comment>
+ <comment xml:lang="uk">анімований курсор Windows</comment>
+ <comment xml:lang="vi">Con chạy hoạt họa Windows</comment>
+- <comment xml:lang="zh_CN">Windows 动态光标</comment>
+- <comment xml:lang="zh_TW">Windows 滑鼠動畫游標</comment>
++ <comment xml:lang="zh-CN">Windows 动态光标</comment>
++ <comment xml:lang="zh-TW">Windows 滑鼠動畫游標</comment>
+ <magic priority="50">
+- <match value="RIFF" type="string" offset="0">
+- <match value="ACON" type="string" offset="8"/>
++ <match type="string" value="RIFF" offset="0">
++ <match type="string" value="ACON" offset="8"/>
+ </match>
+ </magic>
+ <glob pattern="*.ani"/>
+ </mime-type>
+ <mime-type type="image/emf">
+ <comment>EMF image</comment>
++ <comment xml:lang="af">EMF-beeld</comment>
+ <comment xml:lang="ar">صورة EMF</comment>
+- <comment xml:lang="be@latin">Vyjava EMF</comment>
++ <comment xml:lang="be-Latn">Vyjava EMF</comment>
+ <comment xml:lang="bg">Изображение — EMF</comment>
+ <comment xml:lang="ca">imatge EMF</comment>
+ <comment xml:lang="cs">obrázek EMF</comment>
+ <comment xml:lang="da">EMF-billede</comment>
+ <comment xml:lang="de">EMF-Bild</comment>
+ <comment xml:lang="el">Εικόνα EMF</comment>
+- <comment xml:lang="en_GB">EMF image</comment>
++ <comment xml:lang="en-GB">EMF image</comment>
+ <comment xml:lang="eo">EMF-bildo</comment>
+ <comment xml:lang="es">imagen EMF</comment>
+ <comment xml:lang="eu">EMF irudia</comment>
+ <comment xml:lang="fi">EMF-kuva</comment>
+ <comment xml:lang="fo">EMF mynd</comment>
+ <comment xml:lang="fr">image EMF</comment>
++ <comment xml:lang="fur">imagjin EMF</comment>
+ <comment xml:lang="ga">íomhá EMF</comment>
+ <comment xml:lang="gl">imaxe EMF</comment>
+ <comment xml:lang="he">תמונת EMF</comment>
+@@ -29621,7 +30654,7 @@
+ <comment xml:lang="oc">imatge EMF</comment>
+ <comment xml:lang="pl">Obraz EMF</comment>
+ <comment xml:lang="pt">imagem EMF</comment>
+- <comment xml:lang="pt_BR">Imagem EMF</comment>
++ <comment xml:lang="pt-BR">Imagem EMF</comment>
+ <comment xml:lang="ro">Imagine EMF</comment>
+ <comment xml:lang="ru">Изображение EMF</comment>
+ <comment xml:lang="sk">Obrázok EMF</comment>
+@@ -29632,8 +30665,8 @@
+ <comment xml:lang="tr">EMF görüntüsü</comment>
+ <comment xml:lang="uk">зображення EMF</comment>
+ <comment xml:lang="vi">Ảnh EMF</comment>
+- <comment xml:lang="zh_CN">EMF 图像</comment>
+- <comment xml:lang="zh_TW">EMF 影像</comment>
++ <comment xml:lang="zh-CN">EMF 图像</comment>
++ <comment xml:lang="zh-TW">EMF 影像</comment>
+ <acronym>EMF</acronym>
+ <expanded-acronym>Enhanced MetaFile</expanded-acronym>
+ <glob pattern="*.emf"/>
+@@ -29641,10 +30674,10 @@
+ <alias type="application/x-emf"/>
+ <alias type="application/emf"/>
+ <magic priority="50">
+- <match value="0x00000001" type="little32" offset="0">
+- <match value="0x464D4520" type="little32" offset="40">
+- <match value="0x00010000" type="little32" offset="44">
+- <match value="0x0000" type="little16" offset="58"/>
++ <match type="little32" offset="0" value="0x00000001">
++ <match type="little32" offset="40" value="0x464D4520">
++ <match type="little32" offset="44" value="0x00010000">
++ <match type="little16" offset="58" value="0x0000"/>
+ </match>
+ </match>
+ </match>
+@@ -29652,21 +30685,23 @@
+ </mime-type>
+ <mime-type type="image/wmf">
+ <comment>WMF image</comment>
++ <comment xml:lang="af">WMF-beeld</comment>
+ <comment xml:lang="ar">صورة WMF</comment>
+- <comment xml:lang="be@latin">Vyjava WMF</comment>
++ <comment xml:lang="be-Latn">Vyjava WMF</comment>
+ <comment xml:lang="bg">Изображение — WMF</comment>
+ <comment xml:lang="ca">imatge WMF</comment>
+ <comment xml:lang="cs">obrázek WMF</comment>
+ <comment xml:lang="da">WMF-billede</comment>
+ <comment xml:lang="de">WMF-Bild</comment>
+ <comment xml:lang="el">Εικόνα WML</comment>
+- <comment xml:lang="en_GB">WMF image</comment>
++ <comment xml:lang="en-GB">WMF image</comment>
+ <comment xml:lang="eo">WMF-bildo</comment>
+ <comment xml:lang="es">imagen WMF</comment>
+ <comment xml:lang="eu">WMF irudia</comment>
+ <comment xml:lang="fi">WMF-kuva</comment>
+ <comment xml:lang="fo">WMF mynd</comment>
+ <comment xml:lang="fr">image WMF</comment>
++ <comment xml:lang="fur">imagjin WMF</comment>
+ <comment xml:lang="ga">íomhá WMF</comment>
+ <comment xml:lang="gl">imaxe WMF</comment>
+ <comment xml:lang="he">תמונת WMF</comment>
+@@ -29686,7 +30721,7 @@
+ <comment xml:lang="oc">imatge WMF</comment>
+ <comment xml:lang="pl">Obraz WMF</comment>
+ <comment xml:lang="pt">imagem WMF</comment>
+- <comment xml:lang="pt_BR">Imagem WMF</comment>
++ <comment xml:lang="pt-BR">Imagem WMF</comment>
+ <comment xml:lang="ro">Imagine WMF</comment>
+ <comment xml:lang="ru">Изображение WMF</comment>
+ <comment xml:lang="sk">Obrázok WMF</comment>
+@@ -29697,21 +30732,21 @@
+ <comment xml:lang="tr">WMF görüntüsü</comment>
+ <comment xml:lang="uk">зображення WMF</comment>
+ <comment xml:lang="vi">Ảnh WMF</comment>
+- <comment xml:lang="zh_CN">WMF 图像</comment>
+- <comment xml:lang="zh_TW">WMF 影像</comment>
++ <comment xml:lang="zh-CN">WMF 图像</comment>
++ <comment xml:lang="zh-TW">WMF 影像</comment>
+ <acronym>WMF</acronym>
+ <expanded-acronym>Windows Metafile</expanded-acronym>
+ <magic priority="50">
+-
+- <match value="0x9AC6CDD7" type="little32" offset="0">
+-
+- <match value="0x0001" type="little16" offset="22">
+- <match value="0x0009" type="little16" offset="24"/>
++ <!-- Placeable Metafile Header !-->
++ <match type="little32" offset="0" value="0x9AC6CDD7">
++ <!-- Followed by the standard Windows Metafile Header !-->
++ <match type="little16" offset="22" value="0x0001">
++ <match type="little16" offset="24" value="0x0009"/>
+ </match>
+ </match>
+-
+- <match value="0x0001" type="little16" offset="0">
+- <match value="0x0009" type="little16" offset="2"/>
++ <!-- or just the standard Windows Metafile Header !-->
++ <match type="little16" offset="0" value="0x0001">
++ <match type="little16" offset="2" value="0x0009"/>
+ </match>
+ </magic>
+ <glob pattern="*.wmf"/>
+@@ -29723,21 +30758,23 @@
+ </mime-type>
+ <mime-type type="image/x-xbitmap">
+ <comment>XBM image</comment>
++ <comment xml:lang="af">XBM-beeld</comment>
+ <comment xml:lang="ar">صورة XBM</comment>
+- <comment xml:lang="be@latin">Vyjava XBM</comment>
++ <comment xml:lang="be-Latn">Vyjava XBM</comment>
+ <comment xml:lang="bg">Изображение — XBM</comment>
+ <comment xml:lang="ca">imatge XBM</comment>
+ <comment xml:lang="cs">obrázek XBM</comment>
+ <comment xml:lang="da">XBM-billede</comment>
+ <comment xml:lang="de">XBM-Bild</comment>
+ <comment xml:lang="el">Εικόνα XBM</comment>
+- <comment xml:lang="en_GB">XBM image</comment>
++ <comment xml:lang="en-GB">XBM image</comment>
+ <comment xml:lang="eo">XBM-bildo</comment>
+ <comment xml:lang="es">imagen XBM</comment>
+ <comment xml:lang="eu">XBM irudia</comment>
+ <comment xml:lang="fi">XBM-kuva</comment>
+ <comment xml:lang="fo">XBM mynd</comment>
+ <comment xml:lang="fr">image XBM</comment>
++ <comment xml:lang="fur">imagjin XBM</comment>
+ <comment xml:lang="ga">íomhá XBM</comment>
+ <comment xml:lang="gl">imaxe XBM</comment>
+ <comment xml:lang="he">תמונת XBM</comment>
+@@ -29757,7 +30794,7 @@
+ <comment xml:lang="oc">imatge XBM</comment>
+ <comment xml:lang="pl">Obraz XBM</comment>
+ <comment xml:lang="pt">imagem XBM</comment>
+- <comment xml:lang="pt_BR">Imagem XBM</comment>
++ <comment xml:lang="pt-BR">Imagem XBM</comment>
+ <comment xml:lang="ro">Imagine XBM</comment>
+ <comment xml:lang="ru">Изображение XBM</comment>
+ <comment xml:lang="sk">Obrázok XBM</comment>
+@@ -29768,29 +30805,31 @@
+ <comment xml:lang="tr">XBM görüntüsü</comment>
+ <comment xml:lang="uk">зображення XBM</comment>
+ <comment xml:lang="vi">Ảnh XBM</comment>
+- <comment xml:lang="zh_CN">XBM 图像</comment>
+- <comment xml:lang="zh_TW">XBM 影像</comment>
++ <comment xml:lang="zh-CN">XBM 图像</comment>
++ <comment xml:lang="zh-TW">XBM 影像</comment>
+ <acronym>XBM</acronym>
+ <expanded-acronym>X BitMap</expanded-acronym>
+ <glob pattern="*.xbm"/>
+ </mime-type>
+ <mime-type type="image/x-xcf">
+ <comment>GIMP image</comment>
++ <comment xml:lang="af">GIMP-beeld</comment>
+ <comment xml:lang="ar">صورة GIMP</comment>
+- <comment xml:lang="be@latin">Vyjava GIMP</comment>
++ <comment xml:lang="be-Latn">Vyjava GIMP</comment>
+ <comment xml:lang="bg">Изображение — GIMP</comment>
+ <comment xml:lang="ca">imatge de GIMP</comment>
+ <comment xml:lang="cs">obrázek GIMP</comment>
+ <comment xml:lang="da">GIMP-billede</comment>
+ <comment xml:lang="de">GIMP-Bild</comment>
+ <comment xml:lang="el">Εικόνα GIMP</comment>
+- <comment xml:lang="en_GB">GIMP image</comment>
++ <comment xml:lang="en-GB">GIMP image</comment>
+ <comment xml:lang="eo">GIMP-bildo</comment>
+ <comment xml:lang="es">imagen del GIMP</comment>
+ <comment xml:lang="eu">GIMP irudia</comment>
+ <comment xml:lang="fi">GIMP-kuva</comment>
+ <comment xml:lang="fo">GIMP mynd</comment>
+ <comment xml:lang="fr">image GIMP</comment>
++ <comment xml:lang="fur">imagjin GIMP</comment>
+ <comment xml:lang="ga">íomhá GIMP</comment>
+ <comment xml:lang="gl">imaxe de GIMP</comment>
+ <comment xml:lang="he">תמונת GIMP</comment>
+@@ -29812,7 +30851,7 @@
+ <comment xml:lang="oc">imatge GIMP</comment>
+ <comment xml:lang="pl">Obraz GIMP</comment>
+ <comment xml:lang="pt">imagem GIMP</comment>
+- <comment xml:lang="pt_BR">Imagem do GIMP</comment>
++ <comment xml:lang="pt-BR">Imagem do GIMP</comment>
+ <comment xml:lang="ro">Imagine GIMP</comment>
+ <comment xml:lang="ru">Изображение GIMP</comment>
+ <comment xml:lang="sk">Obrázok GIMP</comment>
+@@ -29823,21 +30862,29 @@
+ <comment xml:lang="tr">GIMP görüntüsü</comment>
+ <comment xml:lang="uk">зображення GIMP</comment>
+ <comment xml:lang="vi">Ảnh GIMP</comment>
+- <comment xml:lang="zh_CN">GIMP 图像</comment>
+- <comment xml:lang="zh_TW">GIMP 影像</comment>
++ <comment xml:lang="zh-CN">GIMP 图像</comment>
++ <comment xml:lang="zh-TW">GIMP 影像</comment>
+ <glob pattern="*.xcf"/>
+ <magic priority="50">
+- <match value="gimp xcf file" type="string" offset="0"/>
+- <match value="gimp xcf v" type="string" offset="0"/>
++ <match type="string" value="gimp xcf file" offset="0"/>
++ <match type="string" value="gimp xcf v" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="image/x-gimp-gbr">
+ <comment>GIMP brush</comment>
++ <comment xml:lang="af">GIMP-kwas</comment>
++ <comment xml:lang="bg">Четка — GIMP</comment>
+ <comment xml:lang="ca">pinzell de GIMP</comment>
+ <comment xml:lang="cs">štětec GIMP</comment>
++ <comment xml:lang="da">GIMP-pensel</comment>
+ <comment xml:lang="de">GIMP-Pinsel</comment>
+- <comment xml:lang="en_GB">GIMP brush</comment>
++ <comment xml:lang="en-GB">GIMP brush</comment>
+ <comment xml:lang="es">pincel del GIMP</comment>
++ <comment xml:lang="eu">GIMP pintzela</comment>
++ <comment xml:lang="fi">GIMP-sivellin</comment>
++ <comment xml:lang="fr">brosse GIMP</comment>
++ <comment xml:lang="fur">pinel GIMP</comment>
++ <comment xml:lang="ga">scuab GIMP</comment>
+ <comment xml:lang="hr">GIMP kist</comment>
+ <comment xml:lang="hu">GIMP ecset</comment>
+ <comment xml:lang="id">Kuas GIMP</comment>
+@@ -29845,47 +30892,65 @@
+ <comment xml:lang="kk">GIMP бояу жаққышы</comment>
+ <comment xml:lang="ko">GIMP 붓</comment>
+ <comment xml:lang="pl">Pędzel programu GIMP</comment>
+- <comment xml:lang="pt_BR">Pincel do GIMP</comment>
++ <comment xml:lang="pt-BR">Pincel do GIMP</comment>
+ <comment xml:lang="ru">Кисть GIMP</comment>
+ <comment xml:lang="sk">Štetec aplikácie GIMP</comment>
++ <comment xml:lang="sl">Čopič GIMP</comment>
+ <comment xml:lang="sv">GIMP-pensel</comment>
++ <comment xml:lang="tr">GIMP fırçası</comment>
+ <comment xml:lang="uk">пензель GIMP</comment>
+- <comment xml:lang="zh_CN">GIMP 笔刷</comment>
+- <comment xml:lang="zh_TW">GIMP 筆刷</comment>
++ <comment xml:lang="zh-CN">GIMP 笔刷</comment>
++ <comment xml:lang="zh-TW">GIMP 筆刷</comment>
+ <glob pattern="*.gbr"/>
+ <magic priority="50">
+- <match value="GIMP" type="string" offset="20"/>
++ <match type="string" value="GIMP" offset="20"/>
+ </magic>
+ </mime-type>
+ <mime-type type="image/x-gimp-gih">
+ <comment>GIMP brush pipe</comment>
++ <comment xml:lang="bg">Конвейер с четки — GIMP</comment>
+ <comment xml:lang="ca">conducte del pinzell de GIMP</comment>
+ <comment xml:lang="cs">zřetězení štětců GIMP</comment>
++ <comment xml:lang="da">GIMP-penselrør</comment>
+ <comment xml:lang="de">GIMP-Pinselanimation</comment>
+- <comment xml:lang="en_GB">GIMP brush pipe</comment>
++ <comment xml:lang="en-GB">GIMP brush pipe</comment>
+ <comment xml:lang="es">pincel animado del GIMP</comment>
+- <comment xml:lang="hr">GIMP valjkasti kist</comment>
++ <comment xml:lang="eu">GIMP pintzel hodia pipe</comment>
++ <comment xml:lang="fi">GIMP-sivellinputki</comment>
++ <comment xml:lang="fr">brosse animée GIMP</comment>
++ <comment xml:lang="fur">condot pinel GIMP</comment>
++ <comment xml:lang="ga">píopa scuaba GIMP</comment>
++ <comment xml:lang="hr">Proces GIMP kista</comment>
+ <comment xml:lang="hu">GIMP ecsetcsatorna</comment>
+ <comment xml:lang="id">Pipa kuas GIMP</comment>
+ <comment xml:lang="it">Pipe pennello GIMP</comment>
+ <comment xml:lang="kk">GIMP бояу жаққыш түтігі</comment>
+ <comment xml:lang="ko">GIMP 붓 파이프</comment>
+ <comment xml:lang="pl">Potok pędzla programu GIMP</comment>
+- <comment xml:lang="pt_BR">Tubo de pincel do GIMP</comment>
++ <comment xml:lang="pt-BR">Tubo de pincel do GIMP</comment>
+ <comment xml:lang="ru">Анимированная кисть GIMP</comment>
+ <comment xml:lang="sv">GIMP-penselrör</comment>
++ <comment xml:lang="tr">GIMP fırça borusu</comment>
+ <comment xml:lang="uk">канал пензлів GIMP</comment>
+- <comment xml:lang="zh_CN">GIMP 管刷</comment>
+- <comment xml:lang="zh_TW">GIMP 筆刷導管</comment>
++ <comment xml:lang="zh-CN">GIMP 管刷</comment>
++ <comment xml:lang="zh-TW">GIMP 筆刷導管</comment>
+ <glob pattern="*.gih"/>
+ </mime-type>
+ <mime-type type="image/x-gimp-pat">
+ <comment>GIMP pattern</comment>
++ <comment xml:lang="af">GIMP-patroon</comment>
++ <comment xml:lang="bg">Шарка — GIMP</comment>
+ <comment xml:lang="ca">patró de GIMP</comment>
+ <comment xml:lang="cs">vzorek GIMP</comment>
++ <comment xml:lang="da">GIMP-mønster</comment>
+ <comment xml:lang="de">GIMP-Muster</comment>
+- <comment xml:lang="en_GB">GIMP pattern</comment>
++ <comment xml:lang="en-GB">GIMP pattern</comment>
+ <comment xml:lang="es">patrón del GIMP</comment>
++ <comment xml:lang="eu">GIMP eredua</comment>
++ <comment xml:lang="fi">GIMP-kuvio</comment>
++ <comment xml:lang="fr">motif GIMP</comment>
++ <comment xml:lang="fur">motîf GIMP</comment>
++ <comment xml:lang="ga">patrún GIMP</comment>
+ <comment xml:lang="hr">GIMP uzorak</comment>
+ <comment xml:lang="hu">GIMP minta</comment>
+ <comment xml:lang="id">Pola GIMP</comment>
+@@ -29893,35 +30958,39 @@
+ <comment xml:lang="kk">GIMP оюы</comment>
+ <comment xml:lang="ko">GIMP 패턴</comment>
+ <comment xml:lang="pl">Deseń programu GIMP</comment>
+- <comment xml:lang="pt_BR">Textura do GIMP</comment>
++ <comment xml:lang="pt-BR">Textura do GIMP</comment>
+ <comment xml:lang="ru">Шаблон GIMP</comment>
+ <comment xml:lang="sk">Vzor aplikácie GIMP</comment>
++ <comment xml:lang="sl">Vzorec GIMP</comment>
+ <comment xml:lang="sv">GIMP-mönster</comment>
++ <comment xml:lang="tr">GIMP deseni</comment>
+ <comment xml:lang="uk">візерунок GIMP</comment>
+- <comment xml:lang="zh_CN">GIMP 图案</comment>
+- <comment xml:lang="zh_TW">GIMP 樣式</comment>
++ <comment xml:lang="zh-CN">GIMP 图案</comment>
++ <comment xml:lang="zh-TW">GIMP 樣式</comment>
+ <glob pattern="*.pat"/>
+ <magic priority="50">
+- <match value="GPAT" type="string" offset="20"/>
++ <match type="string" value="GPAT" offset="20"/>
+ </magic>
+ </mime-type>
+ <mime-type type="image/x-xfig">
+ <comment>XFig image</comment>
++ <comment xml:lang="af">XFig-beeld</comment>
+ <comment xml:lang="ar">صورة XFig</comment>
+- <comment xml:lang="be@latin">Vyjava XFig</comment>
++ <comment xml:lang="be-Latn">Vyjava XFig</comment>
+ <comment xml:lang="bg">Изображение — XFig</comment>
+ <comment xml:lang="ca">imatge de XFig</comment>
+ <comment xml:lang="cs">obrázek XFig</comment>
+ <comment xml:lang="da">XFig-billede</comment>
+ <comment xml:lang="de">XFig-Bild</comment>
+ <comment xml:lang="el">Εικόνα XFig</comment>
+- <comment xml:lang="en_GB">XFig image</comment>
++ <comment xml:lang="en-GB">XFig image</comment>
+ <comment xml:lang="eo">XFig-bildo</comment>
+ <comment xml:lang="es">imagen de XFig</comment>
+ <comment xml:lang="eu">XFig irudia</comment>
+ <comment xml:lang="fi">XFig-kuva</comment>
+ <comment xml:lang="fo">XFig mynd</comment>
+ <comment xml:lang="fr">image XFig</comment>
++ <comment xml:lang="fur">imagjin XFig</comment>
+ <comment xml:lang="ga">íomhá XFig</comment>
+ <comment xml:lang="gl">imaxe de XFig</comment>
+ <comment xml:lang="he">תמונת XFig</comment>
+@@ -29942,7 +31011,7 @@
+ <comment xml:lang="oc">imatge XFig</comment>
+ <comment xml:lang="pl">Obraz XFig</comment>
+ <comment xml:lang="pt">imagem XFig</comment>
+- <comment xml:lang="pt_BR">Imagem do XFig</comment>
++ <comment xml:lang="pt-BR">Imagem do XFig</comment>
+ <comment xml:lang="ro">Imagine XFig</comment>
+ <comment xml:lang="ru">Изображение XFig</comment>
+ <comment xml:lang="sk">Obrázok XFig</comment>
+@@ -29953,17 +31022,18 @@
+ <comment xml:lang="tr">XFig görüntüsü</comment>
+ <comment xml:lang="uk">зображення XFig</comment>
+ <comment xml:lang="vi">Ảnh XFig</comment>
+- <comment xml:lang="zh_CN">XFig 图像</comment>
+- <comment xml:lang="zh_TW">XFig 影像</comment>
++ <comment xml:lang="zh-CN">XFig 图像</comment>
++ <comment xml:lang="zh-TW">XFig 影像</comment>
+ <glob pattern="*.fig"/>
+ <magic priority="50">
+- <match value="#FIG" type="string" offset="0"/>
++ <match type="string" value="#FIG" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="image/x-xpixmap">
+ <comment>XPM image</comment>
++ <comment xml:lang="af">XPM-beeld</comment>
+ <comment xml:lang="ar">صورة XPM</comment>
+- <comment xml:lang="be@latin">Vyjava XPM</comment>
++ <comment xml:lang="be-Latn">Vyjava XPM</comment>
+ <comment xml:lang="bg">Изображение — XPM</comment>
+ <comment xml:lang="ca">imatge XPM</comment>
+ <comment xml:lang="cs">obrázek XPM</comment>
+@@ -29971,13 +31041,14 @@
+ <comment xml:lang="da">XPM-billede</comment>
+ <comment xml:lang="de">XPM-Bild</comment>
+ <comment xml:lang="el">Εικόνα XPM</comment>
+- <comment xml:lang="en_GB">XPM image</comment>
++ <comment xml:lang="en-GB">XPM image</comment>
+ <comment xml:lang="eo">XPM-bildo</comment>
+ <comment xml:lang="es">imagen XPM</comment>
+ <comment xml:lang="eu">XPM irudia</comment>
+ <comment xml:lang="fi">XPM-kuva</comment>
+ <comment xml:lang="fo">XPM mynd</comment>
+ <comment xml:lang="fr">image XPM</comment>
++ <comment xml:lang="fur">imagjin XPM</comment>
+ <comment xml:lang="ga">íomhá XPM</comment>
+ <comment xml:lang="gl">imaxe XPM</comment>
+ <comment xml:lang="he">תמונת XPM</comment>
+@@ -29997,7 +31068,7 @@
+ <comment xml:lang="oc">imatge XPM</comment>
+ <comment xml:lang="pl">Obraz XPM</comment>
+ <comment xml:lang="pt">imagem XPM</comment>
+- <comment xml:lang="pt_BR">Imagem XPM</comment>
++ <comment xml:lang="pt-BR">Imagem XPM</comment>
+ <comment xml:lang="ro">Imagine XPM</comment>
+ <comment xml:lang="ru">Изображение XPM</comment>
+ <comment xml:lang="sk">Obrázok XPM</comment>
+@@ -30008,21 +31079,22 @@
+ <comment xml:lang="tr">XPM görüntüsü</comment>
+ <comment xml:lang="uk">зображення XPM</comment>
+ <comment xml:lang="vi">Ảnh XPM</comment>
+- <comment xml:lang="zh_CN">XPM 图像</comment>
+- <comment xml:lang="zh_TW">XPM 影像</comment>
++ <comment xml:lang="zh-CN">XPM 图像</comment>
++ <comment xml:lang="zh-TW">XPM 影像</comment>
+ <acronym>XPM</acronym>
+ <expanded-acronym>X PixMap</expanded-acronym>
+ <magic priority="50">
+- <match value="/* XPM" type="string" offset="0"/>
++ <match type="string" value="/* XPM" offset="0"/>
+ </magic>
+ <glob pattern="*.xpm"/>
+ <alias type="image/x-xpm"/>
+ </mime-type>
+ <mime-type type="image/x-xwindowdump">
+ <comment>X window image</comment>
++ <comment xml:lang="af">X window-beeld</comment>
+ <comment xml:lang="ar">صورة X window</comment>
+ <comment xml:lang="az">X window rəsmi</comment>
+- <comment xml:lang="be@latin">Vyjava vakna X</comment>
++ <comment xml:lang="be-Latn">Vyjava vakna X</comment>
+ <comment xml:lang="bg">Изображение — X Window</comment>
+ <comment xml:lang="ca">imatge de X window</comment>
+ <comment xml:lang="cs">obrázek X window</comment>
+@@ -30030,13 +31102,14 @@
+ <comment xml:lang="da">X-billede</comment>
+ <comment xml:lang="de">X-Window-Bild</comment>
+ <comment xml:lang="el">Εικόνα περιβάλλοντος X</comment>
+- <comment xml:lang="en_GB">X window image</comment>
++ <comment xml:lang="en-GB">X window image</comment>
+ <comment xml:lang="eo">bildo de X window</comment>
+ <comment xml:lang="es">imagen de ventana de X</comment>
+ <comment xml:lang="eu">X window irudia</comment>
+ <comment xml:lang="fi">X-ikkunakuva</comment>
+ <comment xml:lang="fo">X vindeyga mynd</comment>
+ <comment xml:lang="fr">image X window</comment>
++ <comment xml:lang="fur">imagjin X window</comment>
+ <comment xml:lang="ga">íomhá X-windows</comment>
+ <comment xml:lang="gl">imaxe de X Window</comment>
+ <comment xml:lang="he">תמונת חלון של X</comment>
+@@ -30057,7 +31130,7 @@
+ <comment xml:lang="oc">imatge X window</comment>
+ <comment xml:lang="pl">Obraz X Window</comment>
+ <comment xml:lang="pt">imagem de janela X</comment>
+- <comment xml:lang="pt_BR">Imagem de janela do X</comment>
++ <comment xml:lang="pt-BR">Imagem de janela do X</comment>
+ <comment xml:lang="ro">Imagine X window</comment>
+ <comment xml:lang="ru">Изображение X window</comment>
+ <comment xml:lang="sk">Obrázok X window</comment>
+@@ -30068,28 +31141,30 @@
+ <comment xml:lang="tr">X pencere görüntüsü</comment>
+ <comment xml:lang="uk">зображення X window</comment>
+ <comment xml:lang="vi">Ảnh cửa sổ X</comment>
+- <comment xml:lang="zh_CN">X Window 图像</comment>
+- <comment xml:lang="zh_TW">X window 影像</comment>
++ <comment xml:lang="zh-CN">X Window 图像</comment>
++ <comment xml:lang="zh-TW">X window 影像</comment>
+ <glob pattern="*.xwd"/>
+ </mime-type>
+ <mime-type type="inode/blockdevice">
+ <comment>block device</comment>
++ <comment xml:lang="af">bloktoestel</comment>
+ <comment xml:lang="ar">جهاز كتلي</comment>
+ <comment xml:lang="ast">preséu de bloques</comment>
+- <comment xml:lang="be@latin">blokavaja pryłada</comment>
++ <comment xml:lang="be-Latn">blokavaja pryłada</comment>
+ <comment xml:lang="bg">Блоково устройство</comment>
+ <comment xml:lang="ca">dispositiu de blocs</comment>
+ <comment xml:lang="cs">blokové zařízení</comment>
+ <comment xml:lang="da">blokenhed</comment>
+ <comment xml:lang="de">Blockorientiertes Gerät</comment>
+ <comment xml:lang="el">Συσκευή block</comment>
+- <comment xml:lang="en_GB">block device</comment>
++ <comment xml:lang="en-GB">block device</comment>
+ <comment xml:lang="eo">bloka disponaĵo</comment>
+ <comment xml:lang="es">dispositivo de bloques</comment>
+ <comment xml:lang="eu">bloke-gailua</comment>
+ <comment xml:lang="fi">laitetiedosto</comment>
+ <comment xml:lang="fo">blokka tóleind</comment>
+ <comment xml:lang="fr">périphérique de blocs</comment>
++ <comment xml:lang="fur">dispositîf a blocs</comment>
+ <comment xml:lang="ga">gléas bloc</comment>
+ <comment xml:lang="gl">dispositivo de bloque</comment>
+ <comment xml:lang="he">התקן בלוק</comment>
+@@ -30110,7 +31185,7 @@
+ <comment xml:lang="oc">periferic de blòts</comment>
+ <comment xml:lang="pl">Urządzenie blokowe</comment>
+ <comment xml:lang="pt">dispositivo de bloco</comment>
+- <comment xml:lang="pt_BR">Dispositivo de bloco</comment>
++ <comment xml:lang="pt-BR">Dispositivo de bloco</comment>
+ <comment xml:lang="ro">dispozitiv bloc</comment>
+ <comment xml:lang="ru">Блочное устройство</comment>
+ <comment xml:lang="sk">Blokové zariadenie</comment>
+@@ -30121,27 +31196,29 @@
+ <comment xml:lang="tr">blok aygıtı</comment>
+ <comment xml:lang="uk">блоковий пристрій</comment>
+ <comment xml:lang="vi">thiết bị khối</comment>
+- <comment xml:lang="zh_CN">块设备</comment>
+- <comment xml:lang="zh_TW">區塊裝置</comment>
++ <comment xml:lang="zh-CN">块设备</comment>
++ <comment xml:lang="zh-TW">區塊裝置</comment>
+ </mime-type>
+ <mime-type type="inode/chardevice">
+ <comment>character device</comment>
++ <comment xml:lang="af">karaktertoestel</comment>
+ <comment xml:lang="ar">جهاز حرفي</comment>
+ <comment xml:lang="ast">preséu de caráuteres</comment>
+- <comment xml:lang="be@latin">znakavaja pryłada</comment>
++ <comment xml:lang="be-Latn">znakavaja pryłada</comment>
+ <comment xml:lang="bg">Символно устройство</comment>
+ <comment xml:lang="ca">dispositiu de caràcters</comment>
+ <comment xml:lang="cs">znakové zařízení</comment>
+ <comment xml:lang="da">tegnenhed</comment>
+ <comment xml:lang="de">Zeichenorientiertes Gerät</comment>
+ <comment xml:lang="el">Συσκευή χαρακτήρων</comment>
+- <comment xml:lang="en_GB">character device</comment>
++ <comment xml:lang="en-GB">character device</comment>
+ <comment xml:lang="eo">signa disponaĵo</comment>
+ <comment xml:lang="es">dispositivo de caracteres</comment>
+ <comment xml:lang="eu">karaktereen gailua</comment>
+ <comment xml:lang="fi">merkkilaite</comment>
+ <comment xml:lang="fo">stavatóleind</comment>
+ <comment xml:lang="fr">périphérique de caractères</comment>
++ <comment xml:lang="fur">dispositîf a caratars</comment>
+ <comment xml:lang="ga">gléas carachtar</comment>
+ <comment xml:lang="gl">dispositivo de caracter</comment>
+ <comment xml:lang="he">התקן תכונה</comment>
+@@ -30162,7 +31239,7 @@
+ <comment xml:lang="oc">periferic de caractèrs</comment>
+ <comment xml:lang="pl">Urządzenie znakowe</comment>
+ <comment xml:lang="pt">dispositivo de caracteres</comment>
+- <comment xml:lang="pt_BR">Dispositivo de caractere</comment>
++ <comment xml:lang="pt-BR">Dispositivo de caractere</comment>
+ <comment xml:lang="ro">dispozitiv caracter</comment>
+ <comment xml:lang="ru">Символьное устройство</comment>
+ <comment xml:lang="sk">Znakové zariadenie</comment>
+@@ -30173,27 +31250,29 @@
+ <comment xml:lang="tr">karakter aygıtı</comment>
+ <comment xml:lang="uk">символьний пристрій</comment>
+ <comment xml:lang="vi">thiết bị ký tự</comment>
+- <comment xml:lang="zh_CN">字符设备</comment>
+- <comment xml:lang="zh_TW">字元裝置</comment>
++ <comment xml:lang="zh-CN">字符设备</comment>
++ <comment xml:lang="zh-TW">字元裝置</comment>
+ </mime-type>
+ <mime-type type="inode/directory">
+ <comment>folder</comment>
++ <comment xml:lang="af">gids</comment>
+ <comment xml:lang="ar">مجلّد</comment>
+ <comment xml:lang="ast">carpeta</comment>
+- <comment xml:lang="be@latin">kataloh</comment>
++ <comment xml:lang="be-Latn">kataloh</comment>
+ <comment xml:lang="bg">Папка</comment>
+ <comment xml:lang="ca">carpeta</comment>
+ <comment xml:lang="cs">složka</comment>
+ <comment xml:lang="da">mappe</comment>
+ <comment xml:lang="de">Ordner</comment>
+ <comment xml:lang="el">Φάκελος</comment>
+- <comment xml:lang="en_GB">folder</comment>
++ <comment xml:lang="en-GB">folder</comment>
+ <comment xml:lang="eo">dosierujo</comment>
+ <comment xml:lang="es">carpeta</comment>
+ <comment xml:lang="eu">karpeta</comment>
+ <comment xml:lang="fi">kansio</comment>
+ <comment xml:lang="fo">mappa</comment>
+ <comment xml:lang="fr">dossier</comment>
++ <comment xml:lang="fur">cartele</comment>
+ <comment xml:lang="ga">fillteán</comment>
+ <comment xml:lang="gl">cartafol</comment>
+ <comment xml:lang="he">תיקייה</comment>
+@@ -30214,7 +31293,7 @@
+ <comment xml:lang="oc">dorsièr</comment>
+ <comment xml:lang="pl">Katalog</comment>
+ <comment xml:lang="pt">pasta</comment>
+- <comment xml:lang="pt_BR">Pasta</comment>
++ <comment xml:lang="pt-BR">Pasta</comment>
+ <comment xml:lang="ro">dosar</comment>
+ <comment xml:lang="ru">Папка</comment>
+ <comment xml:lang="sk">Priečinok</comment>
+@@ -30225,28 +31304,30 @@
+ <comment xml:lang="tr">dizin</comment>
+ <comment xml:lang="uk">тека</comment>
+ <comment xml:lang="vi">thư mục</comment>
+- <comment xml:lang="zh_CN">文件夹</comment>
+- <comment xml:lang="zh_TW">資料夾</comment>
++ <comment xml:lang="zh-CN">文件夹</comment>
++ <comment xml:lang="zh-TW">資料夾</comment>
+ <generic-icon name="folder"/>
+ <alias type="x-directory/normal"/>
+ </mime-type>
+ <mime-type type="inode/fifo">
+ <comment>pipe</comment>
++ <comment xml:lang="af">pyp</comment>
+ <comment xml:lang="ar">إنبوب</comment>
+- <comment xml:lang="be@latin">kanvejer</comment>
++ <comment xml:lang="be-Latn">kanvejer</comment>
+ <comment xml:lang="bg">Конвейер</comment>
+ <comment xml:lang="ca">conducte</comment>
+ <comment xml:lang="cs">roura</comment>
+ <comment xml:lang="da">datakanal</comment>
+ <comment xml:lang="de">Pipe</comment>
+ <comment xml:lang="el">Διοχέτευση</comment>
+- <comment xml:lang="en_GB">pipe</comment>
++ <comment xml:lang="en-GB">pipe</comment>
+ <comment xml:lang="eo">dukto</comment>
+- <comment xml:lang="es">tubería</comment>
++ <comment xml:lang="es">canalización</comment>
+ <comment xml:lang="eu">kanalizazioa</comment>
+ <comment xml:lang="fi">putki</comment>
+ <comment xml:lang="fo">rør</comment>
+ <comment xml:lang="fr">tube</comment>
++ <comment xml:lang="fur">condot</comment>
+ <comment xml:lang="ga">píopa</comment>
+ <comment xml:lang="gl">tubería</comment>
+ <comment xml:lang="he">צינור</comment>
+@@ -30267,7 +31348,7 @@
+ <comment xml:lang="oc">tub</comment>
+ <comment xml:lang="pl">Potok</comment>
+ <comment xml:lang="pt">canal</comment>
+- <comment xml:lang="pt_BR">Pipe</comment>
++ <comment xml:lang="pt-BR">Pipe</comment>
+ <comment xml:lang="ro">canal pipe</comment>
+ <comment xml:lang="ru">Канал</comment>
+ <comment xml:lang="sk">Rúra</comment>
+@@ -30278,27 +31359,29 @@
+ <comment xml:lang="tr">boru</comment>
+ <comment xml:lang="uk">канал</comment>
+ <comment xml:lang="vi">ống dẫn</comment>
+- <comment xml:lang="zh_CN">管道</comment>
+- <comment xml:lang="zh_TW">管線</comment>
++ <comment xml:lang="zh-CN">管道</comment>
++ <comment xml:lang="zh-TW">管線</comment>
+ </mime-type>
+ <mime-type type="inode/mount-point">
+ <comment>mount point</comment>
++ <comment xml:lang="af">hegpunt</comment>
+ <comment xml:lang="ar">نقطة الوصْل</comment>
+ <comment xml:lang="ast">puntu de montaxe</comment>
+- <comment xml:lang="be@latin">punkt mantavańnia</comment>
++ <comment xml:lang="be-Latn">punkt mantavańnia</comment>
+ <comment xml:lang="bg">Точка на монтиране</comment>
+ <comment xml:lang="ca">punt de muntatge</comment>
+ <comment xml:lang="cs">přípojné místo</comment>
+ <comment xml:lang="da">monteringspunkt</comment>
+ <comment xml:lang="de">Einhängepunkt</comment>
+ <comment xml:lang="el">Σημείο προσάρτησης</comment>
+- <comment xml:lang="en_GB">mount point</comment>
++ <comment xml:lang="en-GB">mount point</comment>
+ <comment xml:lang="eo">surmetingo</comment>
+ <comment xml:lang="es">punto de montaje</comment>
+ <comment xml:lang="eu">muntatze-puntua</comment>
+ <comment xml:lang="fi">liitospiste</comment>
+ <comment xml:lang="fo">ísetingarpunkt</comment>
+ <comment xml:lang="fr">point d'accès</comment>
++ <comment xml:lang="fur">pont di montaç</comment>
+ <comment xml:lang="ga">pointe feistithe</comment>
+ <comment xml:lang="gl">punto de montaxe</comment>
+ <comment xml:lang="he">נקודת עיגון</comment>
+@@ -30319,7 +31402,7 @@
+ <comment xml:lang="oc">punt d'accès</comment>
+ <comment xml:lang="pl">Punkt montowania</comment>
+ <comment xml:lang="pt">ponto de montagem</comment>
+- <comment xml:lang="pt_BR">Ponto de montagem</comment>
++ <comment xml:lang="pt-BR">Ponto de montagem</comment>
+ <comment xml:lang="ro">loc montare</comment>
+ <comment xml:lang="ru">Точка монтирования</comment>
+ <comment xml:lang="sk">Miesto pripojenia</comment>
+@@ -30330,27 +31413,29 @@
+ <comment xml:lang="tr">bağlama noktası</comment>
+ <comment xml:lang="uk">точка монтування</comment>
+ <comment xml:lang="vi">điểm lắp</comment>
+- <comment xml:lang="zh_CN">挂载点</comment>
+- <comment xml:lang="zh_TW">掛載點</comment>
++ <comment xml:lang="zh-CN">挂载点</comment>
++ <comment xml:lang="zh-TW">掛載點</comment>
+ <sub-class-of type="inode/directory"/>
+ </mime-type>
+ <mime-type type="inode/socket">
+ <comment>socket</comment>
++ <comment xml:lang="af">sok</comment>
+ <comment xml:lang="ar">مقبس</comment>
+- <comment xml:lang="be@latin">sokiet</comment>
++ <comment xml:lang="be-Latn">sokiet</comment>
+ <comment xml:lang="bg">Гнездо</comment>
+ <comment xml:lang="ca">sòcol</comment>
+ <comment xml:lang="cs">socket</comment>
+ <comment xml:lang="da">sokkel</comment>
+ <comment xml:lang="de">Socket</comment>
+ <comment xml:lang="el">Υποδοχή</comment>
+- <comment xml:lang="en_GB">socket</comment>
++ <comment xml:lang="en-GB">socket</comment>
+ <comment xml:lang="eo">kontaktoskatolo</comment>
+ <comment xml:lang="es">socket</comment>
+ <comment xml:lang="eu">socketa</comment>
+ <comment xml:lang="fi">pistoke</comment>
+ <comment xml:lang="fo">sokkul</comment>
+ <comment xml:lang="fr">connecteur réseau</comment>
++ <comment xml:lang="fur">socket</comment>
+ <comment xml:lang="ga">soicéad</comment>
+ <comment xml:lang="gl">socket</comment>
+ <comment xml:lang="he">נקודת חיבור</comment>
+@@ -30371,7 +31456,7 @@
+ <comment xml:lang="oc">connector ret</comment>
+ <comment xml:lang="pl">Gniazdo</comment>
+ <comment xml:lang="pt">tomada</comment>
+- <comment xml:lang="pt_BR">Socket</comment>
++ <comment xml:lang="pt-BR">Socket</comment>
+ <comment xml:lang="ro">socket</comment>
+ <comment xml:lang="ru">Сокет</comment>
+ <comment xml:lang="sk">Soket</comment>
+@@ -30382,15 +31467,16 @@
+ <comment xml:lang="tr">soket</comment>
+ <comment xml:lang="uk">сокет</comment>
+ <comment xml:lang="vi">ổ cắm</comment>
+- <comment xml:lang="zh_CN">套接字</comment>
+- <comment xml:lang="zh_TW">socket</comment>
++ <comment xml:lang="zh-CN">套接字</comment>
++ <comment xml:lang="zh-TW">socket</comment>
+ </mime-type>
+ <mime-type type="inode/symlink">
+ <comment>symbolic link</comment>
++ <comment xml:lang="af">simboliese skakel</comment>
+ <comment xml:lang="ar">وصلة رمزية</comment>
+ <comment xml:lang="ast">enllaz simbólicu</comment>
+ <comment xml:lang="az">simvolik körpü</comment>
+- <comment xml:lang="be@latin">symbalnaja spasyłka</comment>
++ <comment xml:lang="be-Latn">symbalnaja spasyłka</comment>
+ <comment xml:lang="bg">Символна връзка</comment>
+ <comment xml:lang="ca">enllaç simbòlic</comment>
+ <comment xml:lang="cs">symbolický odkaz</comment>
+@@ -30398,13 +31484,14 @@
+ <comment xml:lang="da">symbolsk henvisning</comment>
+ <comment xml:lang="de">Symbolische Verknüpfung</comment>
+ <comment xml:lang="el">Συμβολικός σύνδεσμος</comment>
+- <comment xml:lang="en_GB">symbolic link</comment>
++ <comment xml:lang="en-GB">symbolic link</comment>
+ <comment xml:lang="eo">simbola ligilo</comment>
+ <comment xml:lang="es">enlace simbólico</comment>
+ <comment xml:lang="eu">esteka sinbolikoa</comment>
+ <comment xml:lang="fi">symbolinen linkki</comment>
+ <comment xml:lang="fo">tykislig leinkja</comment>
+ <comment xml:lang="fr">lien symbolique</comment>
++ <comment xml:lang="fur">colegament simbolic</comment>
+ <comment xml:lang="ga">nasc siombalach</comment>
+ <comment xml:lang="gl">ligazón simbólica</comment>
+ <comment xml:lang="he">קישור סימבולי</comment>
+@@ -30426,7 +31513,7 @@
+ <comment xml:lang="oc">ligam simbolic</comment>
+ <comment xml:lang="pl">Dowiązanie symboliczne</comment>
+ <comment xml:lang="pt">ligação simbólica</comment>
+- <comment xml:lang="pt_BR">Ligação simbólica</comment>
++ <comment xml:lang="pt-BR">Ligação simbólica</comment>
+ <comment xml:lang="ro">legătură simbolică</comment>
+ <comment xml:lang="ru">Символьная ссылка</comment>
+ <comment xml:lang="sk">Symbolický odkaz</comment>
+@@ -30434,17 +31521,18 @@
+ <comment xml:lang="sq">Lidhje simbolike</comment>
+ <comment xml:lang="sr">симболичка веза</comment>
+ <comment xml:lang="sv">symbolisk länk</comment>
+- <comment xml:lang="tr">sembolik bağlantı</comment>
++ <comment xml:lang="tr">simgesel bağlantı</comment>
+ <comment xml:lang="uk">символічне посилання</comment>
+ <comment xml:lang="vi">liên kết tượng trưng</comment>
+- <comment xml:lang="zh_CN">符号链接</comment>
+- <comment xml:lang="zh_TW">符號鏈結</comment>
++ <comment xml:lang="zh-CN">符号链接</comment>
++ <comment xml:lang="zh-TW">符號連結</comment>
+ </mime-type>
+ <mime-type type="message/delivery-status">
+ <comment>mail delivery report</comment>
++ <comment xml:lang="af">posafleweringverslag</comment>
+ <comment xml:lang="ar">تقرير تسليم البريد</comment>
+ <comment xml:lang="az">poçt yollama raportu</comment>
+- <comment xml:lang="be@latin">rapart ab dastaŭcy pošty</comment>
++ <comment xml:lang="be-Latn">rapart ab dastaŭcy pošty</comment>
+ <comment xml:lang="bg">Отчет за пристигналата поща</comment>
+ <comment xml:lang="ca">informe de lliurament de correu</comment>
+ <comment xml:lang="cs">zpráva o doručení pošty</comment>
+@@ -30452,13 +31540,14 @@
+ <comment xml:lang="da">postleveringsrapport</comment>
+ <comment xml:lang="de">E-Mail-Zustellungsbericht</comment>
+ <comment xml:lang="el">Αναφορά παράδοσης μηνύματος</comment>
+- <comment xml:lang="en_GB">mail delivery report</comment>
++ <comment xml:lang="en-GB">mail delivery report</comment>
+ <comment xml:lang="eo">raporto pri transdono de retpoŝto</comment>
+ <comment xml:lang="es">informe de entrega de correo</comment>
+ <comment xml:lang="eu">posta banaketako txostena</comment>
+ <comment xml:lang="fi">viestin jakeluilmoitus</comment>
+ <comment xml:lang="fo">post útberingarfrásøgn</comment>
+ <comment xml:lang="fr">rapport de livraison de courriels</comment>
++ <comment xml:lang="fur">rapuart di consegne pueste</comment>
+ <comment xml:lang="ga">tuairisc sheachadta r-phoist</comment>
+ <comment xml:lang="gl">informe de entrega de correo</comment>
+ <comment xml:lang="he">דוח העברת דואר</comment>
+@@ -30479,7 +31568,7 @@
+ <comment xml:lang="oc">rapòrt de liurason de corrièrs electronics</comment>
+ <comment xml:lang="pl">Raport z dostarczenia poczty</comment>
+ <comment xml:lang="pt">relatório de entrega de email</comment>
+- <comment xml:lang="pt_BR">Relatório de entrega de correspondência</comment>
++ <comment xml:lang="pt-BR">Relatório de entrega de correspondência</comment>
+ <comment xml:lang="ro">raport de trimitere email</comment>
+ <comment xml:lang="ru">Отчёт о доставке сообщения</comment>
+ <comment xml:lang="sk">Správa o doručení pošty</comment>
+@@ -30490,8 +31579,8 @@
+ <comment xml:lang="tr">posta iletim raporu</comment>
+ <comment xml:lang="uk">звіт про доставку пошти</comment>
+ <comment xml:lang="vi">thông báo phát thư</comment>
+- <comment xml:lang="zh_CN">邮件投递报告</comment>
+- <comment xml:lang="zh_TW">郵件寄送回報</comment>
++ <comment xml:lang="zh-CN">邮件投递报告</comment>
++ <comment xml:lang="zh-TW">郵件寄送回報</comment>
+ <generic-icon name="text-x-generic"/>
+ <sub-class-of type="text/plain"/>
+ </mime-type>
+@@ -30499,7 +31588,7 @@
+ <comment>mail disposition report</comment>
+ <comment xml:lang="ar">تقرير ترتيب البريد</comment>
+ <comment xml:lang="az">poçt qayıtma raportu</comment>
+- <comment xml:lang="be@latin">rapart ab raźmiaščeńni pošty</comment>
++ <comment xml:lang="be-Latn">rapart ab raźmiaščeńni pošty</comment>
+ <comment xml:lang="bg">Отчет за състоянието на пощата</comment>
+ <comment xml:lang="ca">informe de disposició de correu</comment>
+ <comment xml:lang="cs">zpráva o předání pošty</comment>
+@@ -30507,13 +31596,14 @@
+ <comment xml:lang="da">postdisponeringsrapport</comment>
+ <comment xml:lang="de">E-Mail-Übertragungsbericht</comment>
+ <comment xml:lang="el">Αναφορά διάθεσης μηνύματος</comment>
+- <comment xml:lang="en_GB">mail disposition report</comment>
++ <comment xml:lang="en-GB">mail disposition report</comment>
+ <comment xml:lang="eo">raporto pri dispono de retpoŝto</comment>
+ <comment xml:lang="es">informe de disposición de correo</comment>
+ <comment xml:lang="eu">posta joerako txostena</comment>
+ <comment xml:lang="fi">viestin kuittausilmoitus</comment>
+ <comment xml:lang="fo">post avhendingarfrásøgn</comment>
+ <comment xml:lang="fr">rapport de disposition de courriels</comment>
++ <comment xml:lang="fur">rapuart di disposizion pueste</comment>
+ <comment xml:lang="ga">tuairisc chóirithe r-phoist</comment>
+ <comment xml:lang="gl">informe de disposición de correo</comment>
+ <comment xml:lang="he">דוח אספקת דואר</comment>
+@@ -30534,7 +31624,7 @@
+ <comment xml:lang="oc">rapòrt de disposicion de corrièrs electronics</comment>
+ <comment xml:lang="pl">Raport z wysyłania poczty</comment>
+ <comment xml:lang="pt">relatório de disposição de email</comment>
+- <comment xml:lang="pt_BR">Relatório de disposição de correspondência</comment>
++ <comment xml:lang="pt-BR">Relatório de disposição de correspondência</comment>
+ <comment xml:lang="ro">confirmare primire email</comment>
+ <comment xml:lang="ru">Отчёт о перемещении почты</comment>
+ <comment xml:lang="sk">Správa o odovzdaní pošty</comment>
+@@ -30545,16 +31635,17 @@
+ <comment xml:lang="tr">posta silinme raporu</comment>
+ <comment xml:lang="uk">звіт про розташування пошти</comment>
+ <comment xml:lang="vi">thông báo chuyển nhượng thư</comment>
+- <comment xml:lang="zh_CN">邮件接收报告</comment>
+- <comment xml:lang="zh_TW">郵件處置回報</comment>
++ <comment xml:lang="zh-CN">邮件接收报告</comment>
++ <comment xml:lang="zh-TW">郵件處置回報</comment>
+ <generic-icon name="text-x-generic"/>
+ <sub-class-of type="text/plain"/>
+ </mime-type>
+ <mime-type type="message/external-body">
+ <comment>reference to remote file</comment>
++ <comment xml:lang="af">verwysing na afgeleë lêer</comment>
+ <comment xml:lang="ar">مرجع إلى ملف بعيد</comment>
+ <comment xml:lang="az">uzaq fayla göstəriş</comment>
+- <comment xml:lang="be@latin">spasyłka da addalenaha fajłu</comment>
++ <comment xml:lang="be-Latn">spasyłka da addalenaha fajłu</comment>
+ <comment xml:lang="bg">Препратка към отдалечен файл</comment>
+ <comment xml:lang="ca">referència a fitxer remot</comment>
+ <comment xml:lang="cs">odkaz na vzdálený soubor</comment>
+@@ -30562,13 +31653,14 @@
+ <comment xml:lang="da">reference til fjern fil</comment>
+ <comment xml:lang="de">Verweis auf entfernte Datei</comment>
+ <comment xml:lang="el">Αναφορά σε απομακρυσμένο αρχείο</comment>
+- <comment xml:lang="en_GB">reference to remote file</comment>
++ <comment xml:lang="en-GB">reference to remote file</comment>
+ <comment xml:lang="eo">referenco al fora dosiero</comment>
+ <comment xml:lang="es">referencia a un archivo remoto</comment>
+ <comment xml:lang="eu">erreferentzia urruneko fitxategiari</comment>
+ <comment xml:lang="fi">viittaus etätiedostoon</comment>
+ <comment xml:lang="fo">tilvísing til fjarfílu</comment>
+ <comment xml:lang="fr">référence au fichier distant</comment>
++ <comment xml:lang="fur">riferiment a file rimot</comment>
+ <comment xml:lang="ga">tagairt do chomhad cianda</comment>
+ <comment xml:lang="gl">referencia a un ficheiro remoto</comment>
+ <comment xml:lang="he">התיחסות לקובץ מרוחק</comment>
+@@ -30589,7 +31681,7 @@
+ <comment xml:lang="oc">referéncia al fichièr distant</comment>
+ <comment xml:lang="pl">Odwołanie do pliku zdalnego</comment>
+ <comment xml:lang="pt">referência a um ficheiro remoto</comment>
+- <comment xml:lang="pt_BR">Referência para arquivo remoto</comment>
++ <comment xml:lang="pt-BR">Referência para arquivo remoto</comment>
+ <comment xml:lang="ro">referință fișier la distanță</comment>
+ <comment xml:lang="ru">Ссылка на удалённый файл</comment>
+ <comment xml:lang="sk">Odkaz na vzdialený súbor</comment>
+@@ -30597,32 +31689,34 @@
+ <comment xml:lang="sq">Referim për tek file në distancë</comment>
+ <comment xml:lang="sr">упута на удаљену датотеку</comment>
+ <comment xml:lang="sv">referens till fjärrfil</comment>
+- <comment xml:lang="tr">uzaktaki dosyaya başvuru</comment>
++ <comment xml:lang="tr">uzaktaki dosyaya atıf</comment>
+ <comment xml:lang="uk">посилання на віддалений файл</comment>
+ <comment xml:lang="vi">tham chiếu đến tập tin ở xa</comment>
+- <comment xml:lang="zh_CN">到远程文件的引用</comment>
+- <comment xml:lang="zh_TW">遠端檔案的參照</comment>
++ <comment xml:lang="zh-CN">到远程文件的引用</comment>
++ <comment xml:lang="zh-TW">遠端檔案的參照</comment>
+ <generic-icon name="text-x-generic"/>
+ </mime-type>
+ <mime-type type="message/news">
+ <comment>Usenet news message</comment>
++ <comment xml:lang="af">Usenet-nuusboodskap</comment>
+ <comment xml:lang="ar">رسالة أخبار Usenet</comment>
+ <comment xml:lang="az">Usenet xəbərlər ismarışı</comment>
+- <comment xml:lang="be@latin">Navina Usenet</comment>
++ <comment xml:lang="be-Latn">Navina Usenet</comment>
+ <comment xml:lang="bg">Съобщение — Usenet</comment>
+ <comment xml:lang="ca">missatge de notícies Usenet</comment>
+ <comment xml:lang="cs">příspěvek do diskusních skupin Usenet</comment>
+ <comment xml:lang="cy">Neges newyddion Usenet</comment>
+- <comment xml:lang="da">Usenetnyhedsmeddelelse</comment>
++ <comment xml:lang="da">Usenet-nyhedsmeddelelse</comment>
+ <comment xml:lang="de">Usenet-News-Nachricht</comment>
+ <comment xml:lang="el">Μήνυμα ομάδων συζητήσεων Usenet</comment>
+- <comment xml:lang="en_GB">Usenet news message</comment>
++ <comment xml:lang="en-GB">Usenet news message</comment>
+ <comment xml:lang="eo">novaĵmesaĝo de Usenet</comment>
+ <comment xml:lang="es">mensaje de noticias de Usenet</comment>
+ <comment xml:lang="eu">Usenet berrien mezua</comment>
+ <comment xml:lang="fi">nyyssiviesti</comment>
+ <comment xml:lang="fo">Usenet news boð</comment>
+ <comment xml:lang="fr">message de groupe d'échange Usenet</comment>
++ <comment xml:lang="fur">messaç gnovis Usenet</comment>
+ <comment xml:lang="ga">teachtaireacht nuachta Usenet</comment>
+ <comment xml:lang="gl">mensaxes de noticias de Usenet</comment>
+ <comment xml:lang="he">הודעת חדשות של Usenet</comment>
+@@ -30643,7 +31737,7 @@
+ <comment xml:lang="oc">messatge de grop d'escambi Usenet</comment>
+ <comment xml:lang="pl">Wiadomość grupy dyskusyjnej</comment>
+ <comment xml:lang="pt">mensagem de notícias Usenet</comment>
+- <comment xml:lang="pt_BR">Mensagem de notícias da Usenet</comment>
++ <comment xml:lang="pt-BR">Mensagem de notícias da Usenet</comment>
+ <comment xml:lang="ro">Mesaj Usenet de știri </comment>
+ <comment xml:lang="ru">Новостное сообщение Usenet</comment>
+ <comment xml:lang="sk">Príspevok do diskusných skupín Usenet</comment>
+@@ -30654,21 +31748,22 @@
+ <comment xml:lang="tr">Usenet haber iletisi</comment>
+ <comment xml:lang="uk">повідомлення новин Usenet</comment>
+ <comment xml:lang="vi">Thông điệp tin tức USENET</comment>
+- <comment xml:lang="zh_CN">Usenet 新闻信</comment>
+- <comment xml:lang="zh_TW">Usenet 新聞訊息</comment>
++ <comment xml:lang="zh-CN">Usenet 新闻信</comment>
++ <comment xml:lang="zh-TW">Usenet 新聞訊息</comment>
+ <generic-icon name="text-x-generic"/>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="Article" type="string" offset="0"/>
+- <match value="Path:" type="string" offset="0"/>
+- <match value="Xref:" type="string" offset="0"/>
++ <match type="string" value="Article" offset="0"/>
++ <match type="string" value="Path:" offset="0"/>
++ <match type="string" value="Xref:" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="message/partial">
+ <comment>partial email message</comment>
++ <comment xml:lang="af">gedeeltelike e-posboodskap</comment>
+ <comment xml:lang="ar">رسالة البريد الإلكتروني الجزئية</comment>
+ <comment xml:lang="az">qismi poçt ismarışı</comment>
+- <comment xml:lang="be@latin">niapoŭny list email</comment>
++ <comment xml:lang="be-Latn">niapoŭny list email</comment>
+ <comment xml:lang="bg">Част от електронно писмо</comment>
+ <comment xml:lang="ca">missatge de correu electrònic parcial</comment>
+ <comment xml:lang="cs">částečná e-mailová zpráva</comment>
+@@ -30676,12 +31771,13 @@
+ <comment xml:lang="da">delvis postmeddelelse</comment>
+ <comment xml:lang="de">E-Mail-Nachrichtenfragment</comment>
+ <comment xml:lang="el">Τμηματικό ηλ. μήνυμα</comment>
+- <comment xml:lang="en_GB">partial email message</comment>
++ <comment xml:lang="en-GB">partial email message</comment>
+ <comment xml:lang="eo">parta retpoŝta mesaĝo</comment>
+ <comment xml:lang="es">mensaje de correo electrónico parcial</comment>
+ <comment xml:lang="eu">posta mezu partziala</comment>
+ <comment xml:lang="fi">osittainen sähköpostiviesti</comment>
+ <comment xml:lang="fr">message partiel de courriel</comment>
++ <comment xml:lang="fur">messaç e-mail parziâl</comment>
+ <comment xml:lang="ga">teachtaireacht ríomhphoist neamhiomlán</comment>
+ <comment xml:lang="gl">mensaxe de correo electrónico parcial</comment>
+ <comment xml:lang="he">מסר דוא״ל חלקי</comment>
+@@ -30702,7 +31798,7 @@
+ <comment xml:lang="oc">messatge parcial de corrièr electronic</comment>
+ <comment xml:lang="pl">Częściowa wiadomość e-mail</comment>
+ <comment xml:lang="pt">mensagem parcial de email</comment>
+- <comment xml:lang="pt_BR">Mensagem de e-mail parcial</comment>
++ <comment xml:lang="pt-BR">Mensagem de e-mail parcial</comment>
+ <comment xml:lang="ro">mesaj de email parțial</comment>
+ <comment xml:lang="ru">Фрагмент сообщения электронной почты</comment>
+ <comment xml:lang="sk">Čiastočná e-mailová správa</comment>
+@@ -30713,28 +31809,30 @@
+ <comment xml:lang="tr">kısmi eposta iletisi</comment>
+ <comment xml:lang="uk">часткове поштове повідомлення</comment>
+ <comment xml:lang="vi">thư điện tử riêng phần</comment>
+- <comment xml:lang="zh_CN">部分电子邮件</comment>
+- <comment xml:lang="zh_TW">部份電子郵件訊息</comment>
++ <comment xml:lang="zh-CN">部分电子邮件</comment>
++ <comment xml:lang="zh-TW">部份電子郵件訊息</comment>
+ <generic-icon name="text-x-generic"/>
+ <sub-class-of type="text/plain"/>
+ </mime-type>
+ <mime-type type="message/rfc822">
+ <comment>email message</comment>
++ <comment xml:lang="af">e-posboodskap</comment>
+ <comment xml:lang="ar">رسالة البريد الإلكتروني</comment>
+- <comment xml:lang="be@latin">list email</comment>
++ <comment xml:lang="be-Latn">list email</comment>
+ <comment xml:lang="bg">Съобщение по електронната поща</comment>
+ <comment xml:lang="ca">missatge de correu electrònic</comment>
+ <comment xml:lang="cs">e-mailová zpráva</comment>
+ <comment xml:lang="da">postmeddelelse</comment>
+ <comment xml:lang="de">E-Mail-Nachricht</comment>
+ <comment xml:lang="el">Ηλ. μήνυμα</comment>
+- <comment xml:lang="en_GB">email message</comment>
++ <comment xml:lang="en-GB">email message</comment>
+ <comment xml:lang="eo">retpoŝta mesaĝo</comment>
+ <comment xml:lang="es">mensaje de correo electrónico</comment>
+ <comment xml:lang="eu">helbide elektronikoen mezua</comment>
+ <comment xml:lang="fi">sähköpostiviesti</comment>
+ <comment xml:lang="fo">t-post boð</comment>
+ <comment xml:lang="fr">message de courriel</comment>
++ <comment xml:lang="fur">messaç e-mail</comment>
+ <comment xml:lang="ga">teachtaireacht ríomhphoist</comment>
+ <comment xml:lang="gl">mensaxe de correo electrónico</comment>
+ <comment xml:lang="he">הודעת דואר אלקטרוני</comment>
+@@ -30755,7 +31853,7 @@
+ <comment xml:lang="oc">messatge de corrièr electronic</comment>
+ <comment xml:lang="pl">Wiadomość e-mail</comment>
+ <comment xml:lang="pt">mensagem de email</comment>
+- <comment xml:lang="pt_BR">Mensagem de e-mail</comment>
++ <comment xml:lang="pt-BR">Mensagem de e-mail</comment>
+ <comment xml:lang="ro">mesaj email</comment>
+ <comment xml:lang="ru">Почтовое сообщение</comment>
+ <comment xml:lang="sk">E-mailová správa</comment>
+@@ -30766,29 +31864,30 @@
+ <comment xml:lang="tr">eposta iletisi</comment>
+ <comment xml:lang="uk">повідомлення email</comment>
+ <comment xml:lang="vi">thư điện tử</comment>
+- <comment xml:lang="zh_CN">电子邮件</comment>
+- <comment xml:lang="zh_TW">電子郵件內容</comment>
++ <comment xml:lang="zh-CN">电子邮件</comment>
++ <comment xml:lang="zh-TW">電子郵件內容</comment>
+ <generic-icon name="text-x-generic"/>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="#! rnews" type="string" offset="0"/>
+- <match value="Forward to" type="string" offset="0"/>
+- <match value="From:" type="string" offset="0"/>
+- <match value="N#! rnews" type="string" offset="0"/>
+- <match value="Pipe to" type="string" offset="0"/>
+- <match value="Received:" type="string" offset="0"/>
+- <match value="Relay-Version:" type="string" offset="0"/>
+- <match value="Return-Path:" type="string" offset="0"/>
+- <match value="Return-path:" type="string" offset="0"/>
+- <match value="Subject: " type="string" offset="0"/>
++ <match type="string" value="#! rnews" offset="0"/>
++ <match type="string" value="Forward to" offset="0"/>
++ <match type="string" value="From:" offset="0"/>
++ <match type="string" value="N#! rnews" offset="0"/>
++ <match type="string" value="Pipe to" offset="0"/>
++ <match type="string" value="Received:" offset="0"/>
++ <match type="string" value="Relay-Version:" offset="0"/>
++ <match type="string" value="Return-Path:" offset="0"/>
++ <match type="string" value="Return-path:" offset="0"/>
++ <match type="string" value="Subject: " offset="0"/>
+ </magic>
+ <glob pattern="*.eml"/>
+ </mime-type>
+ <mime-type type="message/x-gnu-rmail">
+ <comment>GNU mail message</comment>
++ <comment xml:lang="af">GNU-posboodskap</comment>
+ <comment xml:lang="ar">رسالة بريد جنو</comment>
+ <comment xml:lang="az">GNU poçt ismarışı</comment>
+- <comment xml:lang="be@latin">List GNU</comment>
++ <comment xml:lang="be-Latn">List GNU</comment>
+ <comment xml:lang="bg">Съобщение — GNU mail</comment>
+ <comment xml:lang="ca">missatge de GNU mail</comment>
+ <comment xml:lang="cs">zpráva GNU mail</comment>
+@@ -30796,13 +31895,14 @@
+ <comment xml:lang="da">GNU-postmeddelelse</comment>
+ <comment xml:lang="de">GNU-Mail-Nachricht</comment>
+ <comment xml:lang="el">Μήνυμα αλληλογραφίας GNU</comment>
+- <comment xml:lang="en_GB">GNU mail message</comment>
++ <comment xml:lang="en-GB">GNU mail message</comment>
+ <comment xml:lang="eo">mesaĝo de GNU mail</comment>
+ <comment xml:lang="es">mensaje de correo de GNU</comment>
+ <comment xml:lang="eu">GNU posta mezua</comment>
+ <comment xml:lang="fi">GNU-postiviesti</comment>
+ <comment xml:lang="fo">GNU mail boð</comment>
+ <comment xml:lang="fr">message de courriel GNU</comment>
++ <comment xml:lang="fur">messaç di pueste GNU</comment>
+ <comment xml:lang="ga">teachtaireacht r-phoist GNU</comment>
+ <comment xml:lang="gl">mensaxe de correo electrónico de GNU</comment>
+ <comment xml:lang="he">הודעת דואר של GNU</comment>
+@@ -30824,7 +31924,7 @@
+ <comment xml:lang="oc">messatge de corrièr electronic GNU</comment>
+ <comment xml:lang="pl">Wiadomość pocztowa GNU</comment>
+ <comment xml:lang="pt">mensagem de email GNU</comment>
+- <comment xml:lang="pt_BR">Mensagem de e-mail GNU</comment>
++ <comment xml:lang="pt-BR">Mensagem de e-mail GNU</comment>
+ <comment xml:lang="ro">Mesaj GNU mail</comment>
+ <comment xml:lang="ru">Почтовое сообщение GNU</comment>
+ <comment xml:lang="sk">Správa GNU mail</comment>
+@@ -30835,58 +31935,63 @@
+ <comment xml:lang="tr">GNU posta iletisi</comment>
+ <comment xml:lang="uk">поштове повідомлення GNU</comment>
+ <comment xml:lang="vi">Thư điện tử của GNU</comment>
+- <comment xml:lang="zh_CN">GNU mail 信件</comment>
+- <comment xml:lang="zh_TW">GNU 郵件訊息</comment>
++ <comment xml:lang="zh-CN">GNU mail 信件</comment>
++ <comment xml:lang="zh-TW">GNU 郵件訊息</comment>
+ <generic-icon name="text-x-generic"/>
+ <glob pattern="RMAIL"/>
+ </mime-type>
+ <mime-type type="model/iges">
+ <comment>IGES document</comment>
++ <comment xml:lang="af">IGES-dokument</comment>
+ <comment xml:lang="ast">Documentu IGES</comment>
++ <comment xml:lang="bg">Документ — IGES</comment>
+ <comment xml:lang="ca">document IGES</comment>
+ <comment xml:lang="cs">dokument IGES</comment>
+ <comment xml:lang="da">IGES-dokument</comment>
+ <comment xml:lang="de">IGES-Dokument</comment>
+- <comment xml:lang="en_GB">IGES document</comment>
++ <comment xml:lang="en-GB">IGES document</comment>
+ <comment xml:lang="es">documento IGES</comment>
+ <comment xml:lang="eu">IGES dokumentua</comment>
+ <comment xml:lang="fi">IGES-asiakirja</comment>
+ <comment xml:lang="fr">document IGES</comment>
++ <comment xml:lang="fur">document IGES</comment>
+ <comment xml:lang="ga">cáipéis IGES</comment>
+ <comment xml:lang="he">מסמך IGES</comment>
+ <comment xml:lang="hr">IGES dokument</comment>
+ <comment xml:lang="hu">IGES dokumentum</comment>
+- <comment xml:lang="id">dokumen IGES</comment>
++ <comment xml:lang="id">Dokumen IGES</comment>
+ <comment xml:lang="it">Documento IGES</comment>
+ <comment xml:lang="kk">IGES құжаты</comment>
+ <comment xml:lang="ko">IGES 문서</comment>
+ <comment xml:lang="pl">Dokument IGES</comment>
+- <comment xml:lang="pt_BR">Documento IGES</comment>
++ <comment xml:lang="pt-BR">Documento IGES</comment>
+ <comment xml:lang="ru">Документ IGES</comment>
+ <comment xml:lang="sk">Dokument IGES</comment>
++ <comment xml:lang="sl">Dokument IGES</comment>
+ <comment xml:lang="sr">ИГЕС документ</comment>
+ <comment xml:lang="sv">IGES-dokument</comment>
+ <comment xml:lang="tr">IGES belgesi</comment>
+ <comment xml:lang="uk">документ IGES</comment>
+- <comment xml:lang="zh_CN">IGES 文档</comment>
+- <comment xml:lang="zh_TW">IGES 文件</comment>
++ <comment xml:lang="zh-CN">IGES 文档</comment>
++ <comment xml:lang="zh-TW">IGES 文件</comment>
+ <acronym>IGES</acronym>
+ <expanded-acronym>Initial Graphics Exchange Specification</expanded-acronym>
+ <generic-icon name="x-office-document"/>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="S 1\x0a" type="string" offset="72"/>
+- <match value="S0000001\x0a" type="string" offset="72"/>
++ <match type="string" value="S 1\x0a" offset="72"/>
++ <match type="string" value="S0000001\x0a" offset="72"/>
+ </magic>
+ <glob pattern="*.igs"/>
+ <glob pattern="*.iges"/>
+ </mime-type>
+ <mime-type type="model/vrml">
+ <comment>VRML document</comment>
++ <comment xml:lang="af">VRML-dokument</comment>
+ <comment xml:lang="ar">مستند VRML</comment>
+ <comment xml:lang="ast">Documentu VRML</comment>
+ <comment xml:lang="az">VRML sənədi</comment>
+- <comment xml:lang="be@latin">Dakument VRML</comment>
++ <comment xml:lang="be-Latn">Dakument VRML</comment>
+ <comment xml:lang="bg">Документ — VRML</comment>
+ <comment xml:lang="ca">document VRML</comment>
+ <comment xml:lang="cs">dokument VRML</comment>
+@@ -30894,13 +31999,14 @@
+ <comment xml:lang="da">VRML-dokument</comment>
+ <comment xml:lang="de">VRML-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο VRML</comment>
+- <comment xml:lang="en_GB">VRML document</comment>
++ <comment xml:lang="en-GB">VRML document</comment>
+ <comment xml:lang="eo">VRML-dokumento</comment>
+ <comment xml:lang="es">documento VRML</comment>
+ <comment xml:lang="eu">VRML dokumentua</comment>
+ <comment xml:lang="fi">VRML-asiakirja</comment>
+ <comment xml:lang="fo">VRML skjal</comment>
+ <comment xml:lang="fr">document VRML</comment>
++ <comment xml:lang="fur">document VRML</comment>
+ <comment xml:lang="ga">cáipéis VRML</comment>
+ <comment xml:lang="gl">documento VRML</comment>
+ <comment xml:lang="he">מסמך VRML</comment>
+@@ -30921,7 +32027,7 @@
+ <comment xml:lang="oc">document VRML</comment>
+ <comment xml:lang="pl">Dokument VRML</comment>
+ <comment xml:lang="pt">documento VRML</comment>
+- <comment xml:lang="pt_BR">Documento VRML</comment>
++ <comment xml:lang="pt-BR">Documento VRML</comment>
+ <comment xml:lang="ro">Document VRML</comment>
+ <comment xml:lang="ru">Документ VRML</comment>
+ <comment xml:lang="sk">Dokument VRML</comment>
+@@ -30932,14 +32038,14 @@
+ <comment xml:lang="tr">VRML belgesi</comment>
+ <comment xml:lang="uk">документ VRML</comment>
+ <comment xml:lang="vi">Tài liệu VRML</comment>
+- <comment xml:lang="zh_CN">VRML 文档</comment>
+- <comment xml:lang="zh_TW">VRML 文件</comment>
++ <comment xml:lang="zh-CN">VRML 文档</comment>
++ <comment xml:lang="zh-TW">VRML 文件</comment>
+ <acronym>VRML</acronym>
+ <expanded-acronym>Virtual Reality Modeling Language</expanded-acronym>
+ <generic-icon name="x-office-document"/>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="#VRML " type="string" offset="0"/>
++ <match type="string" value="#VRML " offset="0"/>
+ </magic>
+ <glob pattern="*.vrm"/>
+ <glob pattern="*.vrml"/>
+@@ -30947,9 +32053,10 @@
+ </mime-type>
+ <mime-type type="multipart/alternative">
+ <comment>message in several formats</comment>
++ <comment xml:lang="af">boodskap in verskeie formate</comment>
+ <comment xml:lang="ar">رسالة في عدة صيغ</comment>
+ <comment xml:lang="az">verici formatlarında ismarış</comment>
+- <comment xml:lang="be@latin">paviedamleńnie ŭ niekalkich farmatach</comment>
++ <comment xml:lang="be-Latn">paviedamleńnie ŭ niekalkich farmatach</comment>
+ <comment xml:lang="bg">Съобщение в няколко формата</comment>
+ <comment xml:lang="ca">missatge en diversos formats</comment>
+ <comment xml:lang="cs">zpráva v několika formátech</comment>
+@@ -30957,13 +32064,14 @@
+ <comment xml:lang="da">meddelelse i flere formater</comment>
+ <comment xml:lang="de">Nachricht in mehreren Formaten</comment>
+ <comment xml:lang="el">Μήνυμα σε διάφορες μορφές</comment>
+- <comment xml:lang="en_GB">message in several formats</comment>
++ <comment xml:lang="en-GB">message in several formats</comment>
+ <comment xml:lang="eo">mesaĝo en pluraj formatoj</comment>
+ <comment xml:lang="es">mensaje en varios formatos</comment>
+ <comment xml:lang="eu">hainbat formatuko mezua</comment>
+ <comment xml:lang="fi">viesti useissa muodoissa</comment>
+ <comment xml:lang="fo">boð í fleiri sniðum</comment>
+ <comment xml:lang="fr">message en formats divers</comment>
++ <comment xml:lang="fur">messaç in diviers formâts</comment>
+ <comment xml:lang="ga">teachtaireacht i bhformáidí éagsúla</comment>
+ <comment xml:lang="gl">mensaxe en varios formatos</comment>
+ <comment xml:lang="he">הודעה במספר תבניות</comment>
+@@ -30974,7 +32082,7 @@
+ <comment xml:lang="it">Messaggio in diversi formati</comment>
+ <comment xml:lang="ja">いくつかの形式でのメッセージ</comment>
+ <comment xml:lang="kk">бірнеше пішімдегі мәлімдеме</comment>
+- <comment xml:lang="ko">여러가지 형식의 메시지</comment>
++ <comment xml:lang="ko">여러 가지 형식의 메시지</comment>
+ <comment xml:lang="lt">laiškas keletu formatų</comment>
+ <comment xml:lang="lv">ziņojums dažādos formātos</comment>
+ <comment xml:lang="ms">Mesej dalam beberapa format</comment>
+@@ -30984,7 +32092,7 @@
+ <comment xml:lang="oc">messatge en formats divèrses</comment>
+ <comment xml:lang="pl">Wiadomość w wielu formatach</comment>
+ <comment xml:lang="pt">mensagem em vários formatos</comment>
+- <comment xml:lang="pt_BR">Mensagem em vários formatos</comment>
++ <comment xml:lang="pt-BR">Mensagem em vários formatos</comment>
+ <comment xml:lang="ro">mesaj în diferite formate</comment>
+ <comment xml:lang="ru">Сообщение в нескольких форматах</comment>
+ <comment xml:lang="sk">Správa v niekoľkých formátoch</comment>
+@@ -30995,14 +32103,15 @@
+ <comment xml:lang="tr">farklı biçimlerde ileti</comment>
+ <comment xml:lang="uk">повідомлення у кількох форматах</comment>
+ <comment xml:lang="vi">thông điệp có vài định dạng</comment>
+- <comment xml:lang="zh_CN">各种格式的信件</comment>
+- <comment xml:lang="zh_TW">多種格式的訊息</comment>
++ <comment xml:lang="zh-CN">各种格式的信件</comment>
++ <comment xml:lang="zh-TW">多種格式的訊息</comment>
+ </mime-type>
+ <mime-type type="multipart/appledouble">
+ <comment>Macintosh AppleDouble-encoded file</comment>
++ <comment xml:lang="af">Macintosh AppleDouble-geënkodeerde lêer</comment>
+ <comment xml:lang="ar">ملف Macintosh AppleDouble مشفر</comment>
+ <comment xml:lang="az">Macintosh AppleDouble-kodlanmış fayl</comment>
+- <comment xml:lang="be@latin">Fajł Macintosh, AppleDouble-zakadavany</comment>
++ <comment xml:lang="be-Latn">Fajł Macintosh, AppleDouble-zakadavany</comment>
+ <comment xml:lang="bg">Файл — кодиран с Macintosh AppleDouble</comment>
+ <comment xml:lang="ca">fitxer codificat AppleDouble de Macintosh</comment>
+ <comment xml:lang="cs">soubor kódovaný pomocí Macintosh AppleDouble</comment>
+@@ -31010,17 +32119,18 @@
+ <comment xml:lang="da">Macintosh AppleDouble-kodet fil</comment>
+ <comment xml:lang="de">Macintosh-Datei (AppleDouble-kodiert)</comment>
+ <comment xml:lang="el">Αρχείο Macintosh κωδικοποίησης AppleDouble</comment>
+- <comment xml:lang="en_GB">Macintosh AppleDouble-encoded file</comment>
++ <comment xml:lang="en-GB">Macintosh AppleDouble-encoded file</comment>
+ <comment xml:lang="eo">dosiero kodigita laŭ Macintosh AppleDouble</comment>
+ <comment xml:lang="es">archivo Macintosh codificado con AppleDouble</comment>
+ <comment xml:lang="eu">Macintosh AppleDouble-rekin kodetutako fitxategia</comment>
+ <comment xml:lang="fi">Macintosh AppleDouble -koodattu tiedosto</comment>
+ <comment xml:lang="fo">Macintosh AppleDouble-bronglað fíla</comment>
+ <comment xml:lang="fr">fichier codé Macintosh AppleDouble</comment>
++ <comment xml:lang="fur">file codificât in Macintosh AppleDouble</comment>
+ <comment xml:lang="ga">comhad ionchódaithe le Macintosh AppleDouble</comment>
+ <comment xml:lang="gl">ficheiro de Macintosh codificado con AppleDouble</comment>
+ <comment xml:lang="he">קובץ מסוג Macintosh AppleDouble-encoded</comment>
+- <comment xml:lang="hr">Macintosh AppleDouble-kodirana datoteka</comment>
++ <comment xml:lang="hr">Macintosh AppleDouble-kôdirana datoteka</comment>
+ <comment xml:lang="hu">Macintosh AppleDouble kódolású fájl</comment>
+ <comment xml:lang="ia">File codificate in AppleDouble de Macintosh</comment>
+ <comment xml:lang="id">Berkas tersandi Macintosh AppleDouble</comment>
+@@ -31037,7 +32147,7 @@
+ <comment xml:lang="oc">fichièr encodat Macintosh AppleDouble</comment>
+ <comment xml:lang="pl">Zakodowany w AppleDouble plik Macintosh</comment>
+ <comment xml:lang="pt">ficheiro codificado em AppleDouble de Macintosh</comment>
+- <comment xml:lang="pt_BR">Arquivo do Macintosh codificado com AppleDouble</comment>
++ <comment xml:lang="pt-BR">Arquivo do Macintosh codificado com AppleDouble</comment>
+ <comment xml:lang="ro">Fișier codat Macintosh AppleDouble</comment>
+ <comment xml:lang="ru">Файл, закодированный Macintosh AppleDouble</comment>
+ <comment xml:lang="sk">Súbor kódovaný pomocou Macintosh AppleDouble</comment>
+@@ -31048,14 +32158,14 @@
+ <comment xml:lang="tr">Macintosh AppleDouble-şifreli dosyası</comment>
+ <comment xml:lang="uk">файл закодований Macintosh AppleDouble</comment>
+ <comment xml:lang="vi">Tập tin đã mã hoá Apple-Double của Macintosh</comment>
+- <comment xml:lang="zh_CN">Macintosh AppleDouble 编码的文件</comment>
+- <comment xml:lang="zh_TW">Macintosh AppleDouble 編碼檔</comment>
++ <comment xml:lang="zh-CN">Macintosh AppleDouble 编码的文件</comment>
++ <comment xml:lang="zh-TW">Macintosh AppleDouble 編碼檔</comment>
+ </mime-type>
+ <mime-type type="multipart/digest">
+ <comment>message digest</comment>
+ <comment xml:lang="ar">خلاصة الرسالة</comment>
+ <comment xml:lang="az">ismarış daycesti</comment>
+- <comment xml:lang="be@latin">digest paviedamleńniaŭ</comment>
++ <comment xml:lang="be-Latn">digest paviedamleńniaŭ</comment>
+ <comment xml:lang="bg">Извадка от съобщение</comment>
+ <comment xml:lang="ca">recopilació de missatges</comment>
+ <comment xml:lang="cs">přehled zpráv</comment>
+@@ -31063,13 +32173,14 @@
+ <comment xml:lang="da">meddelelsessammendrag</comment>
+ <comment xml:lang="de">Nachrichtensammlung</comment>
+ <comment xml:lang="el">Περίληψη μηνύματος</comment>
+- <comment xml:lang="en_GB">message digest</comment>
++ <comment xml:lang="en-GB">message digest</comment>
+ <comment xml:lang="eo">mesaĝaro</comment>
+ <comment xml:lang="es">recopilación de mensajes</comment>
+ <comment xml:lang="eu">mezu laburra</comment>
+ <comment xml:lang="fi">viestikokoelma</comment>
+ <comment xml:lang="fo">boð samandráttur</comment>
+ <comment xml:lang="fr">condensé de message</comment>
++ <comment xml:lang="fur">sunt di messaç</comment>
+ <comment xml:lang="ga">achoimre theachtaireachtaí</comment>
+ <comment xml:lang="gl">recompilación de mensaxe</comment>
+ <comment xml:lang="he">תקציר ההודעה</comment>
+@@ -31090,7 +32201,7 @@
+ <comment xml:lang="oc">condensé de messatge</comment>
+ <comment xml:lang="pl">Wiadomość przetwarzania</comment>
+ <comment xml:lang="pt">grupo de mensagens</comment>
+- <comment xml:lang="pt_BR">Resumo de mensagem</comment>
++ <comment xml:lang="pt-BR">Resumo de mensagem</comment>
+ <comment xml:lang="ro">colecție mesaje email</comment>
+ <comment xml:lang="ru">Дайджест сообщения</comment>
+ <comment xml:lang="sk">Prehľad správ</comment>
+@@ -31098,17 +32209,18 @@
+ <comment xml:lang="sq">Shpërndarje mesazhesh</comment>
+ <comment xml:lang="sr">гомила порука</comment>
+ <comment xml:lang="sv">meddelandesamling</comment>
+- <comment xml:lang="tr">mesaj özeti</comment>
++ <comment xml:lang="tr">ileti özeti</comment>
+ <comment xml:lang="uk">збірка повідомлень</comment>
+ <comment xml:lang="vi">bản tóm tắt thông điệp</comment>
+- <comment xml:lang="zh_CN">信件摘要</comment>
+- <comment xml:lang="zh_TW">訊息摘要</comment>
++ <comment xml:lang="zh-CN">信件摘要</comment>
++ <comment xml:lang="zh-TW">訊息摘要</comment>
+ </mime-type>
+ <mime-type type="multipart/encrypted">
+ <comment>encrypted message</comment>
++ <comment xml:lang="af">geënkripteerde boodskap</comment>
+ <comment xml:lang="ar">رسالة مشفرة</comment>
+ <comment xml:lang="az">şifrələnmiş ismarış</comment>
+- <comment xml:lang="be@latin">zašyfravanaje paviedamleńnie</comment>
++ <comment xml:lang="be-Latn">zašyfravanaje paviedamleńnie</comment>
+ <comment xml:lang="bg">Шифрирано съобщение</comment>
+ <comment xml:lang="ca">missatge xifrat</comment>
+ <comment xml:lang="cs">zašifrovaná zpráva</comment>
+@@ -31116,13 +32228,14 @@
+ <comment xml:lang="da">krypteret meddelelse</comment>
+ <comment xml:lang="de">Verschlüsselte Nachricht</comment>
+ <comment xml:lang="el">Κρυπτογραφημένο μήνυμα</comment>
+- <comment xml:lang="en_GB">encrypted message</comment>
++ <comment xml:lang="en-GB">encrypted message</comment>
+ <comment xml:lang="eo">ĉifrita mesaĝo</comment>
+ <comment xml:lang="es">mensaje cifrado</comment>
+- <comment xml:lang="eu">mezu enkriptatua</comment>
++ <comment xml:lang="eu">zifratutako mezua</comment>
+ <comment xml:lang="fi">salattu viesti</comment>
+ <comment xml:lang="fo">bronglað boð</comment>
+ <comment xml:lang="fr">message chiffré</comment>
++ <comment xml:lang="fur">messaç cifrât</comment>
+ <comment xml:lang="ga">teachtaireacht chriptithe</comment>
+ <comment xml:lang="gl">mensaxe cifrado</comment>
+ <comment xml:lang="he">הודעה מוצפנת</comment>
+@@ -31143,7 +32256,7 @@
+ <comment xml:lang="oc">messatge chifrat</comment>
+ <comment xml:lang="pl">Wiadomość zaszyfrowana</comment>
+ <comment xml:lang="pt">mensagem encriptada</comment>
+- <comment xml:lang="pt_BR">Mensagem criptografada</comment>
++ <comment xml:lang="pt-BR">Mensagem criptografada</comment>
+ <comment xml:lang="ro">mesaj criptat</comment>
+ <comment xml:lang="ru">Зашифрованное сообщение</comment>
+ <comment xml:lang="sk">Zašifrovaná správa</comment>
+@@ -31151,30 +32264,32 @@
+ <comment xml:lang="sq">Mesazh i kriptuar</comment>
+ <comment xml:lang="sr">шифрована порука</comment>
+ <comment xml:lang="sv">krypterat meddelande</comment>
+- <comment xml:lang="tr">şifrelenmiş mesaj</comment>
++ <comment xml:lang="tr">şifrelenmiş ileti</comment>
+ <comment xml:lang="uk">шифроване повідомлення</comment>
+ <comment xml:lang="vi">thông điệp đã mật mã</comment>
+- <comment xml:lang="zh_CN">加密信件</comment>
+- <comment xml:lang="zh_TW">加密訊息</comment>
++ <comment xml:lang="zh-CN">加密信件</comment>
++ <comment xml:lang="zh-TW">加密訊息</comment>
+ </mime-type>
+ <mime-type type="multipart/mixed">
+ <comment>compound documents</comment>
++ <comment xml:lang="af">saamgestelde dokumente</comment>
+ <comment xml:lang="ar">مستندات مركبة</comment>
+ <comment xml:lang="ast">documentos compuestos</comment>
+- <comment xml:lang="be@latin">składanyja dakumenty</comment>
++ <comment xml:lang="be-Latn">składanyja dakumenty</comment>
+ <comment xml:lang="bg">Съставни документи</comment>
+ <comment xml:lang="ca">documents compostos</comment>
+ <comment xml:lang="cs">složené dokumenty</comment>
+ <comment xml:lang="da">sammensatte dokumenter</comment>
+ <comment xml:lang="de">Verbunddokumente</comment>
+ <comment xml:lang="el">Σύνθετα έγγραφα</comment>
+- <comment xml:lang="en_GB">compound documents</comment>
++ <comment xml:lang="en-GB">compound documents</comment>
+ <comment xml:lang="eo">parentezaj dokumentoj</comment>
+ <comment xml:lang="es">documentos compuestos</comment>
+ <comment xml:lang="eu">konposatutako dokumentuak</comment>
+ <comment xml:lang="fi">yhdisteasiakirjat</comment>
+ <comment xml:lang="fo">samansett skjøl</comment>
+ <comment xml:lang="fr">documents composés</comment>
++ <comment xml:lang="fur">documents composcj</comment>
+ <comment xml:lang="ga">cáipéisí comhshuite</comment>
+ <comment xml:lang="gl">documentos compostos</comment>
+ <comment xml:lang="he">מסמכים מורכבים</comment>
+@@ -31195,7 +32310,7 @@
+ <comment xml:lang="oc">documents compausats</comment>
+ <comment xml:lang="pl">Dokumenty złożone</comment>
+ <comment xml:lang="pt">documentos compostos</comment>
+- <comment xml:lang="pt_BR">Documentos compostos</comment>
++ <comment xml:lang="pt-BR">Documentos compostos</comment>
+ <comment xml:lang="ro">documente compuse</comment>
+ <comment xml:lang="ru">Составные документы</comment>
+ <comment xml:lang="sk">Zložené dokumenty</comment>
+@@ -31203,18 +32318,19 @@
+ <comment xml:lang="sq">dokumente të përbërë</comment>
+ <comment xml:lang="sr">сједињени документи</comment>
+ <comment xml:lang="sv">sammansatta dokument</comment>
+- <comment xml:lang="tr">birleşik belgeleri</comment>
++ <comment xml:lang="tr">bileşik belgeler</comment>
+ <comment xml:lang="uk">складні документи</comment>
+ <comment xml:lang="vi">tài liệu ghép</comment>
+- <comment xml:lang="zh_CN">组合文档</comment>
+- <comment xml:lang="zh_TW">複合文件</comment>
++ <comment xml:lang="zh-CN">组合文档</comment>
++ <comment xml:lang="zh-TW">複合文件</comment>
+ </mime-type>
+ <mime-type type="multipart/related">
+ <comment>compound document</comment>
++ <comment xml:lang="af">saamgestelde dokument</comment>
+ <comment xml:lang="ar">مستند مركب</comment>
+ <comment xml:lang="ast">documentu compuestu</comment>
+ <comment xml:lang="az">birləşik sənəd</comment>
+- <comment xml:lang="be@latin">składany dakument</comment>
++ <comment xml:lang="be-Latn">składany dakument</comment>
+ <comment xml:lang="bg">Съставен документ</comment>
+ <comment xml:lang="ca">document compost</comment>
+ <comment xml:lang="cs">složený dokument</comment>
+@@ -31222,13 +32338,14 @@
+ <comment xml:lang="da">sammensat dokument</comment>
+ <comment xml:lang="de">Verbunddokument</comment>
+ <comment xml:lang="el">Σύνθετο έγγραφο</comment>
+- <comment xml:lang="en_GB">compound document</comment>
++ <comment xml:lang="en-GB">compound document</comment>
+ <comment xml:lang="eo">parenteza dokumento</comment>
+ <comment xml:lang="es">documento compuesto</comment>
+ <comment xml:lang="eu">konposatutako dokumentua</comment>
+ <comment xml:lang="fi">yhdisteasiakirja</comment>
+ <comment xml:lang="fo">samansett skjal</comment>
+ <comment xml:lang="fr">document composé</comment>
++ <comment xml:lang="fur">document compost</comment>
+ <comment xml:lang="ga">cáipéis comhshuite</comment>
+ <comment xml:lang="gl">documento composto</comment>
+ <comment xml:lang="he">מסמך מורכב</comment>
+@@ -31249,7 +32366,7 @@
+ <comment xml:lang="oc">document compausat</comment>
+ <comment xml:lang="pl">Dokument złożony</comment>
+ <comment xml:lang="pt">documento composto</comment>
+- <comment xml:lang="pt_BR">Documento composto</comment>
++ <comment xml:lang="pt-BR">Documento composto</comment>
+ <comment xml:lang="ro">document compus</comment>
+ <comment xml:lang="ru">Составной документ</comment>
+ <comment xml:lang="sk">Zložený dokument</comment>
+@@ -31260,14 +32377,14 @@
+ <comment xml:lang="tr">bileşik belge</comment>
+ <comment xml:lang="uk">складний документ</comment>
+ <comment xml:lang="vi">tài liệu ghép</comment>
+- <comment xml:lang="zh_CN">组合文档</comment>
+- <comment xml:lang="zh_TW">複合文件</comment>
++ <comment xml:lang="zh-CN">组合文档</comment>
++ <comment xml:lang="zh-TW">複合文件</comment>
+ </mime-type>
+ <mime-type type="multipart/report">
+ <comment>mail system report</comment>
+ <comment xml:lang="ar">تقرير نظام البريد</comment>
+ <comment xml:lang="az">poçt sistemi raportu</comment>
+- <comment xml:lang="be@latin">rapart paštovaj systemy</comment>
++ <comment xml:lang="be-Latn">rapart paštovaj systemy</comment>
+ <comment xml:lang="bg">Отчет за пощенската система</comment>
+ <comment xml:lang="ca">informe de sistema de correu</comment>
+ <comment xml:lang="cs">zpráva poštovního systému</comment>
+@@ -31275,13 +32392,14 @@
+ <comment xml:lang="da">postsystemrapport</comment>
+ <comment xml:lang="de">E-Mail-Systembericht</comment>
+ <comment xml:lang="el">Αναφορά συστήματος ηλ. ταχυδρομείου</comment>
+- <comment xml:lang="en_GB">mail system report</comment>
++ <comment xml:lang="en-GB">mail system report</comment>
+ <comment xml:lang="eo">raporto de retpoŝta sistemo</comment>
+ <comment xml:lang="es">informe del sistema de correo</comment>
+ <comment xml:lang="eu">posta sistemako txostena</comment>
+ <comment xml:lang="fi">viestijärjestelmän ilmoitus</comment>
+ <comment xml:lang="fo">postkervisfrásøgn</comment>
+ <comment xml:lang="fr">rapport système de courriels</comment>
++ <comment xml:lang="fur">rapuart di sisteme de pueste</comment>
+ <comment xml:lang="ga">tuairisc chórais r-phoist</comment>
+ <comment xml:lang="gl">informe do sistema de correo</comment>
+ <comment xml:lang="he">דו״ח של מערכת הדואר</comment>
+@@ -31302,7 +32420,7 @@
+ <comment xml:lang="oc">rapòrt sistèma de corrièrs electronics</comment>
+ <comment xml:lang="pl">Raport systemu pocztowego</comment>
+ <comment xml:lang="pt">relatório de sistema de email</comment>
+- <comment xml:lang="pt_BR">Relatório do sistema de correspondência</comment>
++ <comment xml:lang="pt-BR">Relatório do sistema de correspondência</comment>
+ <comment xml:lang="ro">raport sistem email</comment>
+ <comment xml:lang="ru">Отчёт почтовой системы</comment>
+ <comment xml:lang="sk">Správa poštového systému</comment>
+@@ -31313,14 +32431,15 @@
+ <comment xml:lang="tr">posta sistem raporu</comment>
+ <comment xml:lang="uk">звіт поштової системи</comment>
+ <comment xml:lang="vi">thông báo hệ thống thư</comment>
+- <comment xml:lang="zh_CN">邮件系统报告</comment>
+- <comment xml:lang="zh_TW">郵件系統回報</comment>
++ <comment xml:lang="zh-CN">邮件系统报告</comment>
++ <comment xml:lang="zh-TW">郵件系統回報</comment>
+ </mime-type>
+ <mime-type type="multipart/signed">
+ <comment>signed message</comment>
++ <comment xml:lang="af">getekende boodskap</comment>
+ <comment xml:lang="ar">رسالة موقّعة</comment>
+ <comment xml:lang="az">imzalanmış ismarış</comment>
+- <comment xml:lang="be@latin">padpisanaje paviedamleńnie</comment>
++ <comment xml:lang="be-Latn">padpisanaje paviedamleńnie</comment>
+ <comment xml:lang="bg">Подписано съобщение</comment>
+ <comment xml:lang="ca">missatge signat</comment>
+ <comment xml:lang="cs">podepsaná zpráva</comment>
+@@ -31328,13 +32447,14 @@
+ <comment xml:lang="da">signeret meddelelse</comment>
+ <comment xml:lang="de">Signierte Nachricht</comment>
+ <comment xml:lang="el">Υπογεγραμμένο μήνυμα</comment>
+- <comment xml:lang="en_GB">signed message</comment>
++ <comment xml:lang="en-GB">signed message</comment>
+ <comment xml:lang="eo">pruvita mesaĝo</comment>
+ <comment xml:lang="es">mensaje firmado</comment>
+ <comment xml:lang="eu">sinatutako mezua</comment>
+ <comment xml:lang="fi">allekirjoitettu viesti</comment>
+ <comment xml:lang="fo">undirskrivað boð</comment>
+ <comment xml:lang="fr">message signé</comment>
++ <comment xml:lang="fur">messaç firmât</comment>
+ <comment xml:lang="ga">teachtaireacht sínithe</comment>
+ <comment xml:lang="gl">mensaxe firmado</comment>
+ <comment xml:lang="he">הודעה חתומה</comment>
+@@ -31355,7 +32475,7 @@
+ <comment xml:lang="oc">messatge signat</comment>
+ <comment xml:lang="pl">Podpisana wiadomość</comment>
+ <comment xml:lang="pt">mensagem assinada</comment>
+- <comment xml:lang="pt_BR">Mensagem assinada</comment>
++ <comment xml:lang="pt-BR">Mensagem assinada</comment>
+ <comment xml:lang="ro">mesaj semnat</comment>
+ <comment xml:lang="ru">Подписанное сообщение</comment>
+ <comment xml:lang="sk">Podpísaná správa</comment>
+@@ -31366,26 +32486,27 @@
+ <comment xml:lang="tr">imzalı ileti</comment>
+ <comment xml:lang="uk">підписане повідомлення</comment>
+ <comment xml:lang="vi">thông điệp đã ký</comment>
+- <comment xml:lang="zh_CN">签名信件</comment>
+- <comment xml:lang="zh_TW">簽署的訊息</comment>
++ <comment xml:lang="zh-CN">签名信件</comment>
++ <comment xml:lang="zh-TW">已簽署的訊息</comment>
+ </mime-type>
+ <mime-type type="multipart/x-mixed-replace">
+ <comment>stream of data (server push)</comment>
+ <comment xml:lang="ar">دفق بيانات (دفع خادم)</comment>
+- <comment xml:lang="be@latin">płyń źviestak (ad servera)</comment>
+- <comment xml:lang="bg">Поток от данни, от страна на сървър</comment>
++ <comment xml:lang="be-Latn">płyń źviestak (ad servera)</comment>
++ <comment xml:lang="bg">Поток от данни — пратени от сървър</comment>
+ <comment xml:lang="ca">flux de dades (enviat pel servidor)</comment>
+ <comment xml:lang="cs">proud dat (posílaný serverem)</comment>
+ <comment xml:lang="da">datastrøm (serverskubbet)</comment>
+ <comment xml:lang="de">Datenstrom (Server-Push)</comment>
+ <comment xml:lang="el">Ροή δεδομένων (στελλόμενα από διακομιστή)</comment>
+- <comment xml:lang="en_GB">stream of data (server push)</comment>
++ <comment xml:lang="en-GB">stream of data (server push)</comment>
+ <comment xml:lang="eo">datumstrio (puŝata per servilo)</comment>
+ <comment xml:lang="es">flujo de datos (por iniciativa del servidor)</comment>
+ <comment xml:lang="eu">datu-korrontea (zerbitzari igortzailea)</comment>
+ <comment xml:lang="fi">tietovirta (palvelin työntää)</comment>
+ <comment xml:lang="fo">streymur av dáta (ambætara skump)</comment>
+ <comment xml:lang="fr">flux de données (émis par le serveur)</comment>
++ <comment xml:lang="fur">flus di dâts (pe iniziative dal servidôr)</comment>
+ <comment xml:lang="ga">sruth sonraí (brú freastalaí)</comment>
+ <comment xml:lang="gl">fluxo de datos (por iniciativa do servidor)</comment>
+ <comment xml:lang="he">מידע בזרימה (דחיפה ע״י השרת)</comment>
+@@ -31406,7 +32527,7 @@
+ <comment xml:lang="oc">flux de donadas (emés pel servidor)</comment>
+ <comment xml:lang="pl">Strumień danych (wymuszenie serwera)</comment>
+ <comment xml:lang="pt">fluxo de dados (empurrados pelo servidor)</comment>
+- <comment xml:lang="pt_BR">Fluxo de dados (por iniciativa do servidor)</comment>
++ <comment xml:lang="pt-BR">Fluxo de dados (por iniciativa do servidor)</comment>
+ <comment xml:lang="ro">flux de date (de la server)</comment>
+ <comment xml:lang="ru">Поток данных (server push)</comment>
+ <comment xml:lang="sk">Prúd dát (posielaný serverom)</comment>
+@@ -31417,26 +32538,28 @@
+ <comment xml:lang="tr">veri akışı (sunucudan gönderilen)</comment>
+ <comment xml:lang="uk">потік даних (від сервера)</comment>
+ <comment xml:lang="vi">luồng dữ liệu (trình phục vụ đẩy)</comment>
+- <comment xml:lang="zh_CN">数据流(服务器推送)</comment>
+- <comment xml:lang="zh_TW">資料串流 (server push)</comment>
++ <comment xml:lang="zh-CN">数据流(服务器推送)</comment>
++ <comment xml:lang="zh-TW">資料串流 (server push)</comment>
+ </mime-type>
+ <mime-type type="text/calendar">
+ <comment>VCS/ICS calendar</comment>
++ <comment xml:lang="af">VCS/ICS-kalender</comment>
+ <comment xml:lang="ar">سجل VCS/ICS</comment>
+- <comment xml:lang="be@latin">Kalandar VCS/ICS</comment>
++ <comment xml:lang="be-Latn">Kalandar VCS/ICS</comment>
+ <comment xml:lang="bg">Календар — VCS/ICS</comment>
+ <comment xml:lang="ca">calendari VCS/ICS</comment>
+ <comment xml:lang="cs">kalendář VCS/ICS</comment>
+ <comment xml:lang="da">VCS/ICS-kalender</comment>
+ <comment xml:lang="de">VCS/ICS-Kalender</comment>
+ <comment xml:lang="el">Ημερολόγιο VCS/ICS</comment>
+- <comment xml:lang="en_GB">VCS/ICS calendar</comment>
++ <comment xml:lang="en-GB">VCS/ICS calendar</comment>
+ <comment xml:lang="eo">VCS/ICS-kalendaro</comment>
+ <comment xml:lang="es">calendario VCS/ICS</comment>
+ <comment xml:lang="eu">VCS/ICS egutegia</comment>
+ <comment xml:lang="fi">VCS/ICS-kalenteri</comment>
+ <comment xml:lang="fo">VCS/ICS kalendari</comment>
+ <comment xml:lang="fr">calendrier VCS/ICS</comment>
++ <comment xml:lang="fur">calendari VCS/ICS</comment>
+ <comment xml:lang="ga">féilire VCS/ICS</comment>
+ <comment xml:lang="gl">Calendario VCS/ICS</comment>
+ <comment xml:lang="he">לוח שנה VCS/ICS</comment>
+@@ -31456,7 +32579,7 @@
+ <comment xml:lang="oc">calendièr VCS/ICS</comment>
+ <comment xml:lang="pl">Kalendarz VCS/ICS</comment>
+ <comment xml:lang="pt">calendário VCS/ICS</comment>
+- <comment xml:lang="pt_BR">Calendário VCS/ICS</comment>
++ <comment xml:lang="pt-BR">Calendário VCS/ICS</comment>
+ <comment xml:lang="ro">Calendar VCS/ICS</comment>
+ <comment xml:lang="ru">Календарь VCS/ICS</comment>
+ <comment xml:lang="sk">Kalendár VCS/ICS</comment>
+@@ -31467,37 +32590,39 @@
+ <comment xml:lang="tr">VCS/ICS takvimi</comment>
+ <comment xml:lang="uk">календар VCS/ICS</comment>
+ <comment xml:lang="vi">Lịch VCS/ICS</comment>
+- <comment xml:lang="zh_CN">VCS/ICS 日历</comment>
+- <comment xml:lang="zh_TW">VCS/ICS 行事曆</comment>
++ <comment xml:lang="zh-CN">VCS/ICS 日历</comment>
++ <comment xml:lang="zh-TW">VCS/ICS 行事曆</comment>
+ <acronym>VCS/ICS</acronym>
+ <expanded-acronym>vCalendar/iCalendar</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+ <alias type="text/x-vcalendar"/>
+ <alias type="application/ics"/>
+ <magic priority="50">
+- <match value="BEGIN:VCALENDAR" type="string" offset="0"/>
+- <match value="begin:vcalendar" type="string" offset="0"/>
++ <match type="string" value="BEGIN:VCALENDAR" offset="0"/>
++ <match type="string" value="begin:vcalendar" offset="0"/>
+ </magic>
+ <glob pattern="*.vcs"/>
+ <glob pattern="*.ics"/>
+ </mime-type>
+ <mime-type type="text/css">
+ <comment>CSS stylesheet</comment>
++ <comment xml:lang="af">CSS-stylblad</comment>
+ <comment xml:lang="ar">نمط CSS</comment>
+- <comment xml:lang="be@latin">Arkuš stylaŭ CSS</comment>
++ <comment xml:lang="be-Latn">Arkuš stylaŭ CSS</comment>
+ <comment xml:lang="bg">Стилове — CSS</comment>
+ <comment xml:lang="ca">llista d'estil CSS</comment>
+ <comment xml:lang="cs">stylopis CSS</comment>
+ <comment xml:lang="da">CSS-stilark</comment>
+ <comment xml:lang="de">CSS-Stilvorlage</comment>
+ <comment xml:lang="el">Φύλλο στυλ CSS</comment>
+- <comment xml:lang="en_GB">CSS stylesheet</comment>
++ <comment xml:lang="en-GB">CSS stylesheet</comment>
+ <comment xml:lang="eo">CSS-stilfolio</comment>
+ <comment xml:lang="es">hoja de estilos CSS</comment>
+ <comment xml:lang="eu">CSS estilo-orria</comment>
+ <comment xml:lang="fi">CSS-tyylitiedosto</comment>
+ <comment xml:lang="fo">CSS sniðark</comment>
+ <comment xml:lang="fr">feuille de style CSS</comment>
++ <comment xml:lang="fur">sfuei di stîl CSS</comment>
+ <comment xml:lang="ga">stílbhileog CSS</comment>
+ <comment xml:lang="gl">folla de estilos CSS</comment>
+ <comment xml:lang="he">גליון עיצוב CSS</comment>
+@@ -31518,7 +32643,7 @@
+ <comment xml:lang="oc">fuèlh d'estil CSS</comment>
+ <comment xml:lang="pl">Arkusz stylów CSS</comment>
+ <comment xml:lang="pt">folha de estilos CSS</comment>
+- <comment xml:lang="pt_BR">Folha de estilo CSS</comment>
++ <comment xml:lang="pt-BR">Folha de estilo CSS</comment>
+ <comment xml:lang="ro">Pagină de stil CSS</comment>
+ <comment xml:lang="ru">Таблица стилей CSS</comment>
+ <comment xml:lang="sk">Štýly CSS</comment>
+@@ -31529,8 +32654,8 @@
+ <comment xml:lang="tr">CSS stil kağıdı</comment>
+ <comment xml:lang="uk">таблиця стилів CSS</comment>
+ <comment xml:lang="vi">Tờ kiểu dáng CSS</comment>
+- <comment xml:lang="zh_CN">CSS 样式表</comment>
+- <comment xml:lang="zh_TW">CSS 樣式表</comment>
++ <comment xml:lang="zh-CN">CSS 样式表</comment>
++ <comment xml:lang="zh-TW">CSS 樣式表</comment>
+ <acronym>CSS</acronym>
+ <expanded-acronym>Cascading Style Sheets</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+@@ -31538,21 +32663,23 @@
+ </mime-type>
+ <mime-type type="text/vcard">
+ <comment>electronic business card</comment>
++ <comment xml:lang="af">elektroniese beskigheidskaartjie</comment>
+ <comment xml:lang="ar">بطاقة أعمال إلكترونية</comment>
+- <comment xml:lang="be@latin">elektronnaja biznes-kartka</comment>
++ <comment xml:lang="be-Latn">elektronnaja biznes-kartka</comment>
+ <comment xml:lang="bg">Електронна визитна картичка</comment>
+ <comment xml:lang="ca">targeta de visita electrònica</comment>
+ <comment xml:lang="cs">elektronická navštívenka</comment>
+ <comment xml:lang="da">elektronisk visitkort</comment>
+ <comment xml:lang="de">Elektronische Visitenkarte</comment>
+ <comment xml:lang="el">Ηλεκτρονική επαγγελματική κάρτα</comment>
+- <comment xml:lang="en_GB">electronic business card</comment>
++ <comment xml:lang="en-GB">electronic business card</comment>
+ <comment xml:lang="eo">elektronika vizitkarto</comment>
+ <comment xml:lang="es">tarjeta de visita electrónica</comment>
+ <comment xml:lang="eu">enpresako txartel elektronikoa</comment>
+ <comment xml:lang="fi">sähköinen käyntikortti</comment>
+ <comment xml:lang="fo">elektroniskt handilskort</comment>
+ <comment xml:lang="fr">carte de visite électronique</comment>
++ <comment xml:lang="fur">biliet di visite eletronic</comment>
+ <comment xml:lang="ga">cárta gnó leictreonach</comment>
+ <comment xml:lang="gl">tarxeta de negocio electrónica</comment>
+ <comment xml:lang="he">כרטיס ביקור אלקטרוני</comment>
+@@ -31571,7 +32698,7 @@
+ <comment xml:lang="oc">carta de visita electronica</comment>
+ <comment xml:lang="pl">Wizytówka elektroniczna</comment>
+ <comment xml:lang="pt">cartão de visita eletrónico</comment>
+- <comment xml:lang="pt_BR">Cartão de visitas eletrônico</comment>
++ <comment xml:lang="pt-BR">Cartão de visitas eletrônico</comment>
+ <comment xml:lang="ro">carte de vizită electronică</comment>
+ <comment xml:lang="ru">Электронная визитная карточка</comment>
+ <comment xml:lang="sk">Elektronická vizitka</comment>
+@@ -31582,14 +32709,14 @@
+ <comment xml:lang="tr">elektronik iş kartı</comment>
+ <comment xml:lang="uk">електронна бізнес-картка</comment>
+ <comment xml:lang="vi">danh thiếp điện tử</comment>
+- <comment xml:lang="zh_CN">电子商务卡</comment>
+- <comment xml:lang="zh_TW">電子商務名片</comment>
++ <comment xml:lang="zh-CN">电子商务卡</comment>
++ <comment xml:lang="zh-TW">電子商務名片</comment>
+ <alias type="text/directory"/>
+ <alias type="text/x-vcard"/>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="BEGIN:VCARD" type="string" offset="0"/>
+- <match value="begin:vcard" type="string" offset="0"/>
++ <match type="string" value="BEGIN:VCARD" offset="0"/>
++ <match type="string" value="begin:vcard" offset="0"/>
+ </magic>
+ <glob pattern="*.vcard"/>
+ <glob pattern="*.vcf"/>
+@@ -31598,17 +32725,20 @@
+ </mime-type>
+ <mime-type type="text/turtle">
+ <comment>Turtle document</comment>
++ <comment xml:lang="af">Turtle-dokument</comment>
+ <comment xml:lang="ast">Documentu Turtle</comment>
++ <comment xml:lang="bg">Документ — Turtle</comment>
+ <comment xml:lang="ca">document Turtle</comment>
+ <comment xml:lang="cs">dokument Turtle</comment>
+ <comment xml:lang="da">Turtle-dokument</comment>
+ <comment xml:lang="de">Turtle-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Turtle</comment>
+- <comment xml:lang="en_GB">Turtle document</comment>
++ <comment xml:lang="en-GB">Turtle document</comment>
+ <comment xml:lang="es">documento de Turtle</comment>
+ <comment xml:lang="eu">Turtle dokumentua</comment>
+ <comment xml:lang="fi">Turtle-asiakirja</comment>
+ <comment xml:lang="fr">document Turtle</comment>
++ <comment xml:lang="fur">document Turtle</comment>
+ <comment xml:lang="ga">cáipéis Turtle</comment>
+ <comment xml:lang="he">מסמך Turtle</comment>
+ <comment xml:lang="hr">Turtle dokument</comment>
+@@ -31621,43 +32751,46 @@
+ <comment xml:lang="oc">document Turtle</comment>
+ <comment xml:lang="pl">Dokument Turtle</comment>
+ <comment xml:lang="pt">documento Turtle</comment>
+- <comment xml:lang="pt_BR">Documento Turtle</comment>
++ <comment xml:lang="pt-BR">Documento Turtle</comment>
+ <comment xml:lang="ru">Документ Turtle</comment>
+ <comment xml:lang="sk">Dokument Turtle</comment>
++ <comment xml:lang="sl">Dokument Turtle</comment>
+ <comment xml:lang="sr">Тартл документ</comment>
+ <comment xml:lang="sv">Turtle-dokument</comment>
+ <comment xml:lang="tr">Turtle belgesi</comment>
+ <comment xml:lang="uk">документ Turtle</comment>
+- <comment xml:lang="zh_CN">Turtle 文档</comment>
+- <comment xml:lang="zh_TW">Turtle 文件</comment>
++ <comment xml:lang="zh-CN">Turtle 文档</comment>
++ <comment xml:lang="zh-TW">Turtle 文件</comment>
+ <glob pattern="*.ttl"/>
+ <sub-class-of type="text/plain"/>
+ </mime-type>
+ <mime-type type="text/x-txt2tags">
+ <comment>txt2tags document</comment>
++ <comment xml:lang="af">txt2tags-dokument</comment>
+ <comment xml:lang="ar">مستند txt2tags</comment>
+ <comment xml:lang="ast">Documentu txt2tags</comment>
+- <comment xml:lang="be@latin">dakument txt2tags</comment>
++ <comment xml:lang="be-Latn">dakument txt2tags</comment>
+ <comment xml:lang="bg">Документ — txt2tags</comment>
+ <comment xml:lang="ca">document txt2tags</comment>
+ <comment xml:lang="cs">dokument txt2tags</comment>
+ <comment xml:lang="da">txt2tags-dokument</comment>
+ <comment xml:lang="de">txt2tags-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο txt2tags</comment>
+- <comment xml:lang="en_GB">txt2tags document</comment>
++ <comment xml:lang="en-GB">txt2tags document</comment>
+ <comment xml:lang="eo">txt2tags-dokumento</comment>
+ <comment xml:lang="es">documento txt2tags</comment>
+ <comment xml:lang="eu">txt2tags dokumentua</comment>
+ <comment xml:lang="fi">txt2tags-asiakirja</comment>
+ <comment xml:lang="fo">txt2tags skjal</comment>
+ <comment xml:lang="fr">document txt2tags</comment>
++ <comment xml:lang="fur">document txt2tags</comment>
+ <comment xml:lang="ga">cáipéis txt2tags</comment>
+ <comment xml:lang="gl">documento txt2tags</comment>
+ <comment xml:lang="he">מסמך txt2tags</comment>
+ <comment xml:lang="hr">txt2tags dokument</comment>
+ <comment xml:lang="hu">txt2tags dokumentum</comment>
+ <comment xml:lang="ia">Documento txt2tags</comment>
+- <comment xml:lang="id">Dokumen txt2tags</comment>
++ <comment xml:lang="id">dokumen txt2tags</comment>
+ <comment xml:lang="it">Documento txt2tags</comment>
+ <comment xml:lang="ja">txt2tags ドキュメント</comment>
+ <comment xml:lang="ka">txt2tags დოკუმენტი</comment>
+@@ -31671,7 +32804,7 @@
+ <comment xml:lang="oc">document txt2tags</comment>
+ <comment xml:lang="pl">Dokument txt2tags</comment>
+ <comment xml:lang="pt">documento txt2tags</comment>
+- <comment xml:lang="pt_BR">Documento do txt2tags</comment>
++ <comment xml:lang="pt-BR">Documento do txt2tags</comment>
+ <comment xml:lang="ro">document txt2tags</comment>
+ <comment xml:lang="ru">Документ txt2tags</comment>
+ <comment xml:lang="sk">Dokument txt2tags</comment>
+@@ -31682,29 +32815,31 @@
+ <comment xml:lang="tr">txt2tags belgesi</comment>
+ <comment xml:lang="uk">документ txt2tags</comment>
+ <comment xml:lang="vi">tài liệu txt2tags</comment>
+- <comment xml:lang="zh_CN">txt2tags 文档</comment>
+- <comment xml:lang="zh_TW">txt2tags 文件</comment>
++ <comment xml:lang="zh-CN">txt2tags 文档</comment>
++ <comment xml:lang="zh-TW">txt2tags 文件</comment>
+ <sub-class-of type="text/plain"/>
+ <magic priority="60">
+- <match value="%!postproc" type="string" offset="0"/>
+- <match value="%!encoding" type="string" offset="0"/>
++ <match type="string" value="%!postproc" offset="0"/>
++ <match type="string" value="%!encoding" offset="0"/>
+ </magic>
+ <glob pattern="*.t2t"/>
+ </mime-type>
+ <mime-type type="text/x-verilog">
+ <comment>Verilog source code</comment>
++ <comment xml:lang="af">Verilog-bronkode</comment>
+ <comment xml:lang="bg">Изходен код — Verilog</comment>
+ <comment xml:lang="ca">codi font en Verilog</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce Verilog</comment>
+ <comment xml:lang="da">Verilog-kildekode</comment>
+ <comment xml:lang="de">Verilog-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας Verilog</comment>
+- <comment xml:lang="en_GB">Verilog source code</comment>
++ <comment xml:lang="en-GB">Verilog source code</comment>
+ <comment xml:lang="eo">Verilog-fontkodo</comment>
+ <comment xml:lang="es">código fuente en Verilog</comment>
+ <comment xml:lang="eu">Verilog iturburu-kodea</comment>
+ <comment xml:lang="fi">Verilog-lähdekoodi</comment>
+ <comment xml:lang="fr">code source Verilog</comment>
++ <comment xml:lang="fur">codiç sorzint Verilog</comment>
+ <comment xml:lang="ga">cód foinseach Verilog</comment>
+ <comment xml:lang="gl">código fonte en Verilog</comment>
+ <comment xml:lang="he">קוד מקור של </comment>
+@@ -31721,7 +32856,7 @@
+ <comment xml:lang="oc">còde font Verilog</comment>
+ <comment xml:lang="pl">Kod źródłowy Verilog</comment>
+ <comment xml:lang="pt">código origem Verilog</comment>
+- <comment xml:lang="pt_BR">Código-fonte Verilog</comment>
++ <comment xml:lang="pt-BR">Código-fonte Verilog</comment>
+ <comment xml:lang="ru">Исходный код Verilog</comment>
+ <comment xml:lang="sk">Zdrojový kód Verilog</comment>
+ <comment xml:lang="sl">Datoteka izvorne kode Verilog</comment>
+@@ -31729,24 +32864,25 @@
+ <comment xml:lang="sv">Verilog-källkod</comment>
+ <comment xml:lang="tr">Verilog kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою Verilog</comment>
+- <comment xml:lang="zh_CN">Verilog 源代码</comment>
+- <comment xml:lang="zh_TW">Verilog 源碼</comment>
++ <comment xml:lang="zh-CN">Verilog 源代码</comment>
++ <comment xml:lang="zh-TW">Verilog 源碼</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.v"/>
+ </mime-type>
+ <mime-type type="text/x-svhdr">
+ <comment>SystemVerilog header</comment>
+ <comment xml:lang="bg">Заглавен файл — SystemVerilog</comment>
+- <comment xml:lang="ca">capçalera de SystemVerilog</comment>
++ <comment xml:lang="ca">capçalera en SystemVerilog</comment>
+ <comment xml:lang="cs">záhlaví SystemVerilog</comment>
+ <comment xml:lang="da">SystemVerilog-teksthoved</comment>
+ <comment xml:lang="de">SystemVerilog-Header</comment>
+ <comment xml:lang="el">Κεφαλίδα SystemVerilog</comment>
+- <comment xml:lang="en_GB">SystemVerilog header</comment>
++ <comment xml:lang="en-GB">SystemVerilog header</comment>
+ <comment xml:lang="es">cabeceras de SystemVerilog</comment>
+ <comment xml:lang="eu">SystemVerilog goiburua</comment>
+ <comment xml:lang="fi">SystemVerilog-otsake</comment>
+ <comment xml:lang="fr">en-tête </comment>
++ <comment xml:lang="fur">intestazion SystemVerilog</comment>
+ <comment xml:lang="ga">ceanntásc SystemVerilog</comment>
+ <comment xml:lang="gl">Cabeceiras de SystemVerilog</comment>
+ <comment xml:lang="he">כותרת SystemVerilog</comment>
+@@ -31763,7 +32899,7 @@
+ <comment xml:lang="oc">entèsta SystemVerilog</comment>
+ <comment xml:lang="pl">Nagłówek SystemVerilog</comment>
+ <comment xml:lang="pt">cabeçalho SystemVerilog</comment>
+- <comment xml:lang="pt_BR">Cabeçalho de SystemVerilog</comment>
++ <comment xml:lang="pt-BR">Cabeçalho de SystemVerilog</comment>
+ <comment xml:lang="ru">Заголовочный файл SystemVerilog</comment>
+ <comment xml:lang="sk">Hlavičky SystemVerilog</comment>
+ <comment xml:lang="sl">Datoteka glave SystemVerilog</comment>
+@@ -31771,24 +32907,26 @@
+ <comment xml:lang="sv">SystemVerilog-headerfil</comment>
+ <comment xml:lang="tr">SystemVerilog başlığı</comment>
+ <comment xml:lang="uk">заголовки SystemVerilog</comment>
+- <comment xml:lang="zh_CN">SystemVerilog 头文件</comment>
+- <comment xml:lang="zh_TW">SystemVerilog 標頭</comment>
++ <comment xml:lang="zh-CN">SystemVerilog 头文件</comment>
++ <comment xml:lang="zh-TW">SystemVerilog 標頭</comment>
+ <sub-class-of type="text/x-verilog"/>
+ <glob pattern="*.svh"/>
+ </mime-type>
+ <mime-type type="text/x-svsrc">
+ <comment>SystemVerilog source code</comment>
++ <comment xml:lang="af">SystemVerilog-bronkode</comment>
+ <comment xml:lang="bg">Изходен код — SystemVerilog</comment>
+ <comment xml:lang="ca">codi font en SystemVerilog</comment>
+ <comment xml:lang="cs">zdrojový kód SystemVerilog</comment>
+ <comment xml:lang="da">SystemVerilog-kildekode</comment>
+ <comment xml:lang="de">SystemVerilog-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας SystemVerilog</comment>
+- <comment xml:lang="en_GB">SystemVerilog source code</comment>
++ <comment xml:lang="en-GB">SystemVerilog source code</comment>
+ <comment xml:lang="es">código fuente en SystemVerilog</comment>
+ <comment xml:lang="eu">SystemVerilog iturburu-kodea</comment>
+ <comment xml:lang="fi">SystemVerilog-lähdekoodi</comment>
+ <comment xml:lang="fr">code source </comment>
++ <comment xml:lang="fur">codiç sorzint SystemVerilog</comment>
+ <comment xml:lang="ga">cód foinseach SystemVerilog</comment>
+ <comment xml:lang="gl">código fonte en SystemVerilog</comment>
+ <comment xml:lang="he">קוד מקור של SystemVerilog</comment>
+@@ -31805,7 +32943,7 @@
+ <comment xml:lang="oc">còde font SystemVerilog</comment>
+ <comment xml:lang="pl">Kod źródłowy SystemVerilog</comment>
+ <comment xml:lang="pt">código origem SystemVerilog</comment>
+- <comment xml:lang="pt_BR">Código-fonte de SystemVerilog</comment>
++ <comment xml:lang="pt-BR">Código-fonte de SystemVerilog</comment>
+ <comment xml:lang="ru">Исходный код SystemVerilog</comment>
+ <comment xml:lang="sk">Zdrojový kód SystemVerilog</comment>
+ <comment xml:lang="sl">Datoteka izvorne kode SystemVerilog</comment>
+@@ -31813,25 +32951,27 @@
+ <comment xml:lang="sv">SystemVerilog-källkod</comment>
+ <comment xml:lang="tr">SystemVerilog kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний файл мовою SystemVerilog</comment>
+- <comment xml:lang="zh_CN">SystemVerilog 源代码</comment>
+- <comment xml:lang="zh_TW">SystemVerilog 源碼</comment>
++ <comment xml:lang="zh-CN">SystemVerilog 源代码</comment>
++ <comment xml:lang="zh-TW">SystemVerilog 源碼</comment>
+ <sub-class-of type="text/x-verilog"/>
+ <glob pattern="*.sv"/>
+ </mime-type>
+ <mime-type type="text/x-vhdl">
+ <comment>VHDL source code</comment>
++ <comment xml:lang="af">VHDL-bronkode</comment>
+ <comment xml:lang="bg">Изходен код — VHDL</comment>
+ <comment xml:lang="ca">codi font en VHDL</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce VHDL</comment>
+ <comment xml:lang="da">VHDL-kildekode</comment>
+ <comment xml:lang="de">VHDL-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας VHDL</comment>
+- <comment xml:lang="en_GB">VHDL source code</comment>
++ <comment xml:lang="en-GB">VHDL source code</comment>
+ <comment xml:lang="eo">VHDL-fontkodo</comment>
+ <comment xml:lang="es">código fuente en VHDL</comment>
+ <comment xml:lang="eu">VHDL iturburu-kodea</comment>
+ <comment xml:lang="fi">VHDL-lähdekoodi</comment>
+ <comment xml:lang="fr">code source VHDL</comment>
++ <comment xml:lang="fur">codiç sorzint VHDL</comment>
+ <comment xml:lang="ga">cód foinseach VHDL</comment>
+ <comment xml:lang="gl">código fonte en VHDL</comment>
+ <comment xml:lang="he">קוד מקור של VHDL</comment>
+@@ -31848,7 +32988,7 @@
+ <comment xml:lang="oc">còde font VHDL</comment>
+ <comment xml:lang="pl">Kod źródłowy VHDL</comment>
+ <comment xml:lang="pt">código origem VHDL</comment>
+- <comment xml:lang="pt_BR">Código-fonte VHDL</comment>
++ <comment xml:lang="pt-BR">Código-fonte VHDL</comment>
+ <comment xml:lang="ru">Исходный код VHDL</comment>
+ <comment xml:lang="sk">Zdrojový kód VHDL</comment>
+ <comment xml:lang="sl">Datoteka izvorne kode VHDL</comment>
+@@ -31856,8 +32996,8 @@
+ <comment xml:lang="sv">VHDL-källkod</comment>
+ <comment xml:lang="tr">VHDL kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою VHDL</comment>
+- <comment xml:lang="zh_CN">VHDL 源代码</comment>
+- <comment xml:lang="zh_TW">VHDL 源碼</comment>
++ <comment xml:lang="zh-CN">VHDL 源代码</comment>
++ <comment xml:lang="zh-TW">VHDL 源碼</comment>
+ <acronym>VHDL</acronym>
+ <expanded-acronym>Very-High-Speed Integrated Circuit Hardware Description Language</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+@@ -31866,10 +33006,11 @@
+ </mime-type>
+ <mime-type type="text/enriched">
+ <comment>enriched text document</comment>
++ <comment xml:lang="af">verrykte teksdokument</comment>
+ <comment xml:lang="ar">مستند نصي مغنى</comment>
+ <comment xml:lang="ast">documentu de testu arriquecíu</comment>
+ <comment xml:lang="az">zəngin mətn sənədi</comment>
+- <comment xml:lang="be@latin">azdobleny tekstavy dakument</comment>
++ <comment xml:lang="be-Latn">azdobleny tekstavy dakument</comment>
+ <comment xml:lang="bg">Документ с обогатен текст</comment>
+ <comment xml:lang="ca">document de text enriquit</comment>
+ <comment xml:lang="cs">rozšířený textový dokument</comment>
+@@ -31877,13 +33018,14 @@
+ <comment xml:lang="da">beriget tekstdokument</comment>
+ <comment xml:lang="de">Angereichertes Textdokument</comment>
+ <comment xml:lang="el">Έγγραφο εμπλουτισμένου κειμένου</comment>
+- <comment xml:lang="en_GB">enriched text document</comment>
++ <comment xml:lang="en-GB">enriched text document</comment>
+ <comment xml:lang="eo">riĉigita teksta dokumento</comment>
+ <comment xml:lang="es">documento de texto enriquecido</comment>
+ <comment xml:lang="eu">aberastutako testu dokumentua</comment>
+ <comment xml:lang="fi">rikastettu tekstiasiakirja</comment>
+ <comment xml:lang="fo">ríkað tekstskjal</comment>
+ <comment xml:lang="fr">document texte enrichi</comment>
++ <comment xml:lang="fur">document di test inricjît</comment>
+ <comment xml:lang="ga">cáipéis téacs saibhrithe</comment>
+ <comment xml:lang="gl">documento de texto enriquecido</comment>
+ <comment xml:lang="he">מסמך טקסט מועשר</comment>
+@@ -31904,7 +33046,7 @@
+ <comment xml:lang="oc">document tèxte enriquit</comment>
+ <comment xml:lang="pl">Wzbogacony dokument tekstowy</comment>
+ <comment xml:lang="pt">documento de texto rico</comment>
+- <comment xml:lang="pt_BR">Documento de texto enriquecido</comment>
++ <comment xml:lang="pt-BR">Documento de texto enriquecido</comment>
+ <comment xml:lang="ro">document text îmbogățit</comment>
+ <comment xml:lang="ru">Форматированный текстовый документ</comment>
+ <comment xml:lang="sk">Rozšírený textový dokument</comment>
+@@ -31915,15 +33057,16 @@
+ <comment xml:lang="tr">zenginleştirilmiş metin belgesi</comment>
+ <comment xml:lang="uk">форматований текстовий документ</comment>
+ <comment xml:lang="vi">tài liệu văn bản có kiểu dáng</comment>
+- <comment xml:lang="zh_CN">浓缩文本文档 (ETF)</comment>
+- <comment xml:lang="zh_TW">豐富化文字文件</comment>
++ <comment xml:lang="zh-CN">浓缩文本文档 (ETF)</comment>
++ <comment xml:lang="zh-TW">豐富化文字文件</comment>
+ <sub-class-of type="text/plain"/>
+ </mime-type>
+ <mime-type type="text/htmlh">
+ <comment>help page</comment>
++ <comment xml:lang="af">hulpbladsy</comment>
+ <comment xml:lang="ar">صفحة المساعدة</comment>
+ <comment xml:lang="az">yardım səhifəsi</comment>
+- <comment xml:lang="be@latin">staronka dapamohi</comment>
++ <comment xml:lang="be-Latn">staronka dapamohi</comment>
+ <comment xml:lang="bg">Страница от помощта</comment>
+ <comment xml:lang="ca">pàgina d'ajuda</comment>
+ <comment xml:lang="cs">stránka nápovědy</comment>
+@@ -31931,13 +33074,14 @@
+ <comment xml:lang="da">hjælpeside</comment>
+ <comment xml:lang="de">Hilfeseite</comment>
+ <comment xml:lang="el">Σελίδα βοήθειας</comment>
+- <comment xml:lang="en_GB">help page</comment>
++ <comment xml:lang="en-GB">help page</comment>
+ <comment xml:lang="eo">help-paĝo</comment>
+ <comment xml:lang="es">página de ayuda</comment>
+ <comment xml:lang="eu">laguntzako orria</comment>
+ <comment xml:lang="fi">ohjesivu</comment>
+ <comment xml:lang="fo">hjálparsíða</comment>
+ <comment xml:lang="fr">page d'aide</comment>
++ <comment xml:lang="fur">pagjine di jutori</comment>
+ <comment xml:lang="ga">leathanach cabhrach</comment>
+ <comment xml:lang="gl">páxina de axuda</comment>
+ <comment xml:lang="he">דף עזרה</comment>
+@@ -31958,7 +33102,7 @@
+ <comment xml:lang="oc">pagina d'ajuda</comment>
+ <comment xml:lang="pl">Strona pomocy</comment>
+ <comment xml:lang="pt">página de ajuda</comment>
+- <comment xml:lang="pt_BR">Página de ajuda</comment>
++ <comment xml:lang="pt-BR">Página de ajuda</comment>
+ <comment xml:lang="ro">pagină de ajutor</comment>
+ <comment xml:lang="ru">Страница справки</comment>
+ <comment xml:lang="sk">Stránka Pomocníka</comment>
+@@ -31969,27 +33113,29 @@
+ <comment xml:lang="tr">yardım sayfası</comment>
+ <comment xml:lang="uk">сторінка довідки</comment>
+ <comment xml:lang="vi">trang trợ giúp</comment>
+- <comment xml:lang="zh_CN">帮助页面</comment>
+- <comment xml:lang="zh_TW">求助頁面</comment>
++ <comment xml:lang="zh-CN">帮助页面</comment>
++ <comment xml:lang="zh-TW">求助頁面</comment>
+ <sub-class-of type="text/plain"/>
+ </mime-type>
+ <mime-type type="text/plain">
+ <comment>plain text document</comment>
++ <comment xml:lang="af">skoonteksdokument</comment>
+ <comment xml:lang="ar">مستند نصي مجرد</comment>
+ <comment xml:lang="ast">documentu de testu planu</comment>
+- <comment xml:lang="be@latin">prosty tekstavy dakument</comment>
++ <comment xml:lang="be-Latn">prosty tekstavy dakument</comment>
+ <comment xml:lang="bg">Документ с неформатиран текст</comment>
+ <comment xml:lang="ca">document de text pla</comment>
+ <comment xml:lang="cs">prostý textový dokument</comment>
+ <comment xml:lang="da">rent tekstdokument</comment>
+ <comment xml:lang="de">Einfaches Textdokument</comment>
+ <comment xml:lang="el">Έγγραφο απλού κειμένου</comment>
+- <comment xml:lang="en_GB">plain text document</comment>
++ <comment xml:lang="en-GB">plain text document</comment>
+ <comment xml:lang="eo">plata teksta dokumento</comment>
+ <comment xml:lang="es">documento de texto sencillo</comment>
+ <comment xml:lang="eu">testu soileko dokumentua</comment>
+ <comment xml:lang="fi">perustekstiasiakirja</comment>
+ <comment xml:lang="fr">document texte brut</comment>
++ <comment xml:lang="fur">document di test sempliç</comment>
+ <comment xml:lang="ga">cáipéis ghnáth-théacs</comment>
+ <comment xml:lang="gl">documento de texto sinxelo</comment>
+ <comment xml:lang="he">מסמך טקסט פשוט</comment>
+@@ -32010,7 +33156,7 @@
+ <comment xml:lang="oc">document tèxte brut</comment>
+ <comment xml:lang="pl">Zwykły dokument tekstowy</comment>
+ <comment xml:lang="pt">documento em texto simples</comment>
+- <comment xml:lang="pt_BR">Documento de Texto</comment>
++ <comment xml:lang="pt-BR">Documento de Texto</comment>
+ <comment xml:lang="ro">document text simplu</comment>
+ <comment xml:lang="ru">Текстовый документ</comment>
+ <comment xml:lang="sk">Obyčajný textový dokument</comment>
+@@ -32021,11 +33167,11 @@
+ <comment xml:lang="tr">düz metin belgesi</comment>
+ <comment xml:lang="uk">звичайний текстовий документ</comment>
+ <comment xml:lang="vi">tài liệu nhập thô</comment>
+- <comment xml:lang="zh_CN">纯文本文档</comment>
+- <comment xml:lang="zh_TW">純文字文件</comment>
++ <comment xml:lang="zh-CN">纯文本文档</comment>
++ <comment xml:lang="zh-TW">純文字文件</comment>
+ <magic priority="50">
+- <match value="This is TeX," type="string" offset="0"/>
+- <match value="This is METAFONT," type="string" offset="0"/>
++ <match type="string" value="This is TeX," offset="0"/>
++ <match type="string" value="This is METAFONT," offset="0"/>
+ </magic>
+ <glob pattern="*.txt"/>
+ <glob pattern="*.asc"/>
+@@ -32033,21 +33179,23 @@
+ </mime-type>
+ <mime-type type="application/rdf+xml">
+ <comment>RDF file</comment>
++ <comment xml:lang="af">RDF-lêer</comment>
+ <comment xml:lang="ar">ملف RDF</comment>
+- <comment xml:lang="be@latin">Fajł RDF</comment>
++ <comment xml:lang="be-Latn">Fajł RDF</comment>
+ <comment xml:lang="bg">Файл — RDF</comment>
+ <comment xml:lang="ca">fitxer RDF</comment>
+ <comment xml:lang="cs">soubor RDF</comment>
+ <comment xml:lang="da">RDF-fil</comment>
+ <comment xml:lang="de">RDF-Datei</comment>
+ <comment xml:lang="el">Αρχείο RDF</comment>
+- <comment xml:lang="en_GB">RDF file</comment>
++ <comment xml:lang="en-GB">RDF file</comment>
+ <comment xml:lang="eo">RDF-dosiero</comment>
+ <comment xml:lang="es">archivo RDF</comment>
+ <comment xml:lang="eu">RDF fitxategia</comment>
+ <comment xml:lang="fi">RDF-tiedosto</comment>
+ <comment xml:lang="fo">RDF fíla</comment>
+ <comment xml:lang="fr">fichier RDF</comment>
++ <comment xml:lang="fur">file RDF</comment>
+ <comment xml:lang="ga">comhad RDF</comment>
+ <comment xml:lang="gl">ficheiro RDF</comment>
+ <comment xml:lang="he">קובץ RDF</comment>
+@@ -32067,7 +33215,7 @@
+ <comment xml:lang="oc">fichièr RDF</comment>
+ <comment xml:lang="pl">Plik RDF</comment>
+ <comment xml:lang="pt">ficheiro RDF</comment>
+- <comment xml:lang="pt_BR">Arquivo RDF</comment>
++ <comment xml:lang="pt-BR">Arquivo RDF</comment>
+ <comment xml:lang="ro">Fișier RDF</comment>
+ <comment xml:lang="ru">Файл RDF</comment>
+ <comment xml:lang="sk">Súbor RDF</comment>
+@@ -32078,8 +33226,8 @@
+ <comment xml:lang="tr">RDF dosyası</comment>
+ <comment xml:lang="uk">файл RDF</comment>
+ <comment xml:lang="vi">Tập tin RDF</comment>
+- <comment xml:lang="zh_CN">RDF 文件</comment>
+- <comment xml:lang="zh_TW">RDF 檔</comment>
++ <comment xml:lang="zh-CN">RDF 文件</comment>
++ <comment xml:lang="zh-TW">RDF 檔</comment>
+ <acronym>RDF</acronym>
+ <expanded-acronym>Resource Description Framework</expanded-acronym>
+ <alias type="text/rdf"/>
+@@ -32089,17 +33237,55 @@
+ <glob pattern="*.owl"/>
+ <root-XML namespaceURI="http://www.w3.org/1999/02/22-rdf-syntax-ns#" localName="RDF"/>
+ </mime-type>
++ <mime-type type="text/x-rst">
++ <comment>reStructuredText document</comment>
++ <comment xml:lang="af">reStructuredText-dokument</comment>
++ <comment xml:lang="bg">Документ — reStructuredText</comment>
++ <comment xml:lang="ca">document reStructuredText</comment>
++ <comment xml:lang="cs">dokument reStructuredText</comment>
++ <comment xml:lang="da">reStructuredText-dokument</comment>
++ <comment xml:lang="de">reStructuredText-Dokument</comment>
++ <comment xml:lang="en-GB">reStructuredText document</comment>
++ <comment xml:lang="es">documento en reStructuredText</comment>
++ <comment xml:lang="eu">reStructuredText document</comment>
++ <comment xml:lang="fi">reStructuredText-asiakirja</comment>
++ <comment xml:lang="fr">document reStructuredText</comment>
++ <comment xml:lang="fur">document reStructuredText</comment>
++ <comment xml:lang="ga">cáipéis reStructuredText</comment>
++ <comment xml:lang="hr">reStructuredText dokument</comment>
++ <comment xml:lang="hu">reStructuredText dokumentum</comment>
++ <comment xml:lang="id">dokumen reStructuredText</comment>
++ <comment xml:lang="it">Documento reStructuredText</comment>
++ <comment xml:lang="kk">reStructuredText құжаты</comment>
++ <comment xml:lang="ko">reStructuredText 문서</comment>
++ <comment xml:lang="pl">Dokument reStructuredText</comment>
++ <comment xml:lang="pt-BR">Documento reStructuredText</comment>
++ <comment xml:lang="ru">Документ reStructuredText</comment>
++ <comment xml:lang="sk">Dokument reStructuredText</comment>
++ <comment xml:lang="sl">Dokument reStructuredText</comment>
++ <comment xml:lang="sv">reStructuredText-dokument</comment>
++ <comment xml:lang="tr">reStructuredText belgesi</comment>
++ <comment xml:lang="uk">документ reStructuredText</comment>
++ <comment xml:lang="zh-CN">reStructuredText 文档</comment>
++ <comment xml:lang="zh-TW">reStructuredText 文件</comment>
++ <sub-class-of type="text/plain"/>
++ <glob pattern="*.rst"/>
++ </mime-type>
+ <mime-type type="application/owl+xml">
+ <comment>OWL XML file</comment>
++ <comment xml:lang="af">OWL XML-lêer</comment>
++ <comment xml:lang="bg">Файл — OWL XML</comment>
+ <comment xml:lang="ca">fitxer XML OWL</comment>
+ <comment xml:lang="cs">soubor OWL XML</comment>
+ <comment xml:lang="da">OWL XML-fil</comment>
+ <comment xml:lang="de">OWL-XML-Datei</comment>
+ <comment xml:lang="el">Αρχείο OWL XML</comment>
+- <comment xml:lang="en_GB">OWL XML file</comment>
++ <comment xml:lang="en-GB">OWL XML file</comment>
+ <comment xml:lang="es">archivo en XML OWL</comment>
+ <comment xml:lang="eu">OWL XML fitxategia</comment>
++ <comment xml:lang="fi">OWL XML -tiedosto</comment>
+ <comment xml:lang="fr">fichier XML OWL</comment>
++ <comment xml:lang="fur">file OWL XML</comment>
+ <comment xml:lang="ga">comhad XML OWL</comment>
+ <comment xml:lang="hr">OWL XML datoteka</comment>
+ <comment xml:lang="hu">OWL XML-fájl</comment>
+@@ -32111,21 +33297,22 @@
+ <comment xml:lang="oc">fichièr OWL XML</comment>
+ <comment xml:lang="pl">Plik XML OWL</comment>
+ <comment xml:lang="pt">ficheiro OWL XML</comment>
+- <comment xml:lang="pt_BR">Arquivo OWL XML</comment>
++ <comment xml:lang="pt-BR">Arquivo OWL XML</comment>
+ <comment xml:lang="ru">Файл XML OWL</comment>
+ <comment xml:lang="sk">Súbor XML OWL</comment>
++ <comment xml:lang="sl">Datoteka OWL XML</comment>
+ <comment xml:lang="sr">ОВЛ ИксМЛ датотека</comment>
+ <comment xml:lang="sv">OWL XML-fil</comment>
+ <comment xml:lang="tr">OWL XML dosyası</comment>
+ <comment xml:lang="uk">файл XML OWL</comment>
+- <comment xml:lang="zh_CN">OWL XML 文件</comment>
+- <comment xml:lang="zh_TW">OWL XML 檔案</comment>
++ <comment xml:lang="zh-CN">OWL XML 文件</comment>
++ <comment xml:lang="zh-TW">OWL XML 檔案</comment>
+ <acronym>OWL</acronym>
+ <expanded-acronym>Web Ontology Language</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+ <glob pattern="*.owx"/>
+ <magic>
+- <match value="&lt;Ontology" type="string" offset="0:256"/>
++ <match type="string" value="&lt;Ontology" offset="0:256"/>
+ </magic>
+ <root-XML namespaceURI="http://www.w3.org/2002/07/owl#" localName="Ontology"/>
+ </mime-type>
+@@ -32133,7 +33320,7 @@
+ <comment>email headers</comment>
+ <comment xml:lang="ar">ترويسة البريد الإلكتروني</comment>
+ <comment xml:lang="az">epoçt başlıqları</comment>
+- <comment xml:lang="be@latin">paštovyja zahałoŭki</comment>
++ <comment xml:lang="be-Latn">paštovyja zahałoŭki</comment>
+ <comment xml:lang="bg">Заглавни части на електронни писма</comment>
+ <comment xml:lang="ca">capçaleres de correu electrònic</comment>
+ <comment xml:lang="cs">záhlaví e-mailu</comment>
+@@ -32141,13 +33328,14 @@
+ <comment xml:lang="da">posthoveder</comment>
+ <comment xml:lang="de">E-Mail-Kopfzeilen</comment>
+ <comment xml:lang="el">Κεφαλίδες ηλ. μηνυμάτων</comment>
+- <comment xml:lang="en_GB">email headers</comment>
++ <comment xml:lang="en-GB">email headers</comment>
+ <comment xml:lang="eo">retpoŝtaj ĉapoj</comment>
+ <comment xml:lang="es">cabeceras de correo electrónico</comment>
+ <comment xml:lang="eu">helbide elektronikoen goiburuak</comment>
+ <comment xml:lang="fi">sähköpostiotsakkeet</comment>
+ <comment xml:lang="fo">t-post tekshøvd</comment>
+ <comment xml:lang="fr">en-têtes de courriel</comment>
++ <comment xml:lang="fur">intestazions e-mail</comment>
+ <comment xml:lang="ga">ceanntásca ríomhphoist</comment>
+ <comment xml:lang="gl">cabeceiras de correo electrónico</comment>
+ <comment xml:lang="he">כותרת דוא״ל</comment>
+@@ -32168,7 +33356,7 @@
+ <comment xml:lang="oc">entèstas de corrièr electronic</comment>
+ <comment xml:lang="pl">Nagłówki wiadomości e-mail</comment>
+ <comment xml:lang="pt">cabeçalhos de email</comment>
+- <comment xml:lang="pt_BR">Cabeçalhos de e-mail</comment>
++ <comment xml:lang="pt-BR">Cabeçalhos de e-mail</comment>
+ <comment xml:lang="ro">antete email</comment>
+ <comment xml:lang="ru">Почтовые заголовки</comment>
+ <comment xml:lang="sk">Hlavičky e-mailu</comment>
+@@ -32179,16 +33367,17 @@
+ <comment xml:lang="tr">eposta başlığı</comment>
+ <comment xml:lang="uk">заголовки email</comment>
+ <comment xml:lang="vi">dòng đầu thư điện tử</comment>
+- <comment xml:lang="zh_CN">电子邮件头</comment>
+- <comment xml:lang="zh_TW">電子郵件標頭</comment>
++ <comment xml:lang="zh-CN">电子邮件头</comment>
++ <comment xml:lang="zh-TW">電子郵件標頭</comment>
+ <sub-class-of type="text/plain"/>
+ </mime-type>
+ <mime-type type="text/richtext">
+ <comment>rich text document</comment>
++ <comment xml:lang="af">rykteksdokument</comment>
+ <comment xml:lang="ar">مستند نصي غني</comment>
+ <comment xml:lang="ast">documentu de testu ricu</comment>
+ <comment xml:lang="az">zəngin mətn sənədi</comment>
+- <comment xml:lang="be@latin">azdobleny tekstavy dakument</comment>
++ <comment xml:lang="be-Latn">azdobleny tekstavy dakument</comment>
+ <comment xml:lang="bg">Документ — rich text</comment>
+ <comment xml:lang="ca">document de text enriquit</comment>
+ <comment xml:lang="cs">textový dokument RTF</comment>
+@@ -32196,12 +33385,13 @@
+ <comment xml:lang="da">richtekstdokument</comment>
+ <comment xml:lang="de">RTF-Textdokument</comment>
+ <comment xml:lang="el">Έγγραφο εμπλουτισμένου κειμένου (RTF)</comment>
+- <comment xml:lang="en_GB">rich text document</comment>
++ <comment xml:lang="en-GB">rich text document</comment>
+ <comment xml:lang="eo">riĉteksta dokumento</comment>
+ <comment xml:lang="es">documento de texto enriquecido</comment>
+ <comment xml:lang="eu">aberastutako testu formatua</comment>
+ <comment xml:lang="fi">RTF-asiakirja</comment>
+ <comment xml:lang="fr">document « rich text »</comment>
++ <comment xml:lang="fur">document rich text</comment>
+ <comment xml:lang="ga">cáipéis mhéith-théacs</comment>
+ <comment xml:lang="gl">documento do texto enriquecido</comment>
+ <comment xml:lang="he">מסמך טקסט עשיר</comment>
+@@ -32222,7 +33412,7 @@
+ <comment xml:lang="oc">document « rich text »</comment>
+ <comment xml:lang="pl">Dokument Rich Text</comment>
+ <comment xml:lang="pt">documento em texto rico</comment>
+- <comment xml:lang="pt_BR">Documento rich text</comment>
++ <comment xml:lang="pt-BR">Documento rich text</comment>
+ <comment xml:lang="ro">document text îmbogățit</comment>
+ <comment xml:lang="ru">Документ с форматированным текстом</comment>
+ <comment xml:lang="sk">Textový dokument RTF</comment>
+@@ -32233,27 +33423,29 @@
+ <comment xml:lang="tr">zengin metin belgesi</comment>
+ <comment xml:lang="uk">форматований текстовий документ</comment>
+ <comment xml:lang="vi">tài liệu văn bản có kiểu dáng (RTF)</comment>
+- <comment xml:lang="zh_CN">富文本文档 (RTF)</comment>
+- <comment xml:lang="zh_TW">豐富文字文件</comment>
++ <comment xml:lang="zh-CN">富文本文档 (RTF)</comment>
++ <comment xml:lang="zh-TW">豐富文字文件 (RTF)</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.rtx"/>
+ </mime-type>
+ <mime-type type="application/rss+xml">
+ <comment>RSS summary</comment>
++ <comment xml:lang="af">RSS-opsomming</comment>
+ <comment xml:lang="ar">ملخص RSS</comment>
+- <comment xml:lang="be@latin">Karotki ahlad RSS</comment>
++ <comment xml:lang="be-Latn">Karotki ahlad RSS</comment>
+ <comment xml:lang="bg">Обобщение за сайтове — RSS</comment>
+ <comment xml:lang="ca">resum RSS</comment>
+ <comment xml:lang="cs">souhrn RSS</comment>
+ <comment xml:lang="da">RSS-sammendrag</comment>
+ <comment xml:lang="de">RSS-Zusammenfassung</comment>
+ <comment xml:lang="el">Σύνοψη RSS</comment>
+- <comment xml:lang="en_GB">RSS summary</comment>
+- <comment xml:lang="es">resumen de RSS</comment>
++ <comment xml:lang="en-GB">RSS summary</comment>
++ <comment xml:lang="es">suministro RSS</comment>
+ <comment xml:lang="eu">RSS laburpena</comment>
+ <comment xml:lang="fi">RSS-tiivistelmä</comment>
+ <comment xml:lang="fo">RSS samandráttur</comment>
+ <comment xml:lang="fr">résumé RSS</comment>
++ <comment xml:lang="fur">somari RSS</comment>
+ <comment xml:lang="ga">achoimre RSS</comment>
+ <comment xml:lang="gl">Resumo RSS</comment>
+ <comment xml:lang="he">תקציר RSS</comment>
+@@ -32273,7 +33465,7 @@
+ <comment xml:lang="oc">resumit RSS</comment>
+ <comment xml:lang="pl">Podsumowanie RSS</comment>
+ <comment xml:lang="pt">resumo RSS</comment>
+- <comment xml:lang="pt_BR">Resumo RSS</comment>
++ <comment xml:lang="pt-BR">Resumo RSS</comment>
+ <comment xml:lang="ro">Rezumat RSS</comment>
+ <comment xml:lang="ru">Сводка RSS</comment>
+ <comment xml:lang="sk">Súhrn RSS</comment>
+@@ -32284,8 +33476,8 @@
+ <comment xml:lang="tr">RSS özeti</comment>
+ <comment xml:lang="uk">зведення сайту RSS</comment>
+ <comment xml:lang="vi">Bản tóm tắt RSS</comment>
+- <comment xml:lang="zh_CN">RSS 摘要</comment>
+- <comment xml:lang="zh_TW">RSS 摘要</comment>
++ <comment xml:lang="zh-CN">RSS 摘要</comment>
++ <comment xml:lang="zh-TW">RSS 摘要</comment>
+ <acronym>RSS</acronym>
+ <expanded-acronym>RDF Site Summary</expanded-acronym>
+ <alias type="text/rss"/>
+@@ -32293,25 +33485,26 @@
+ <generic-icon name="text-html"/>
+ <glob pattern="*.rss"/>
+ <magic priority="70">
+- <match value="&lt;rss " type="string" offset="0:256"/>
+- <match value="&lt;RSS " type="string" offset="0:256"/>
++ <match type="string" value="&lt;rss " offset="0:256"/>
++ <match type="string" value="&lt;RSS " offset="0:256"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/atom+xml">
+ <comment>Atom syndication feed</comment>
+ <comment xml:lang="ar">مروج تغذية Atom</comment>
+- <comment xml:lang="be@latin">Syndykacyjny kanał navinaŭ Atom</comment>
++ <comment xml:lang="be-Latn">Syndykacyjny kanał navinaŭ Atom</comment>
+ <comment xml:lang="bg">Емисия — Atom</comment>
+ <comment xml:lang="ca">canal de sindicació Atom</comment>
+ <comment xml:lang="cs">kanál Atom</comment>
+- <comment xml:lang="da">Atom syndication-feed</comment>
++ <comment xml:lang="da">Atom-syndikeringsfeed</comment>
+ <comment xml:lang="de">Atom-Nachrichtenquelle</comment>
+ <comment xml:lang="el">Τροφοδοσία διανομής Atom</comment>
+- <comment xml:lang="en_GB">Atom syndication feed</comment>
+- <comment xml:lang="es">canal de noticias Atom</comment>
++ <comment xml:lang="en-GB">Atom syndication feed</comment>
++ <comment xml:lang="es">suministro de sindicación Atom</comment>
+ <comment xml:lang="eu">Atom harpidetze-iturria</comment>
+ <comment xml:lang="fi">Atom-yhdistevirta</comment>
+ <comment xml:lang="fr">fil de syndication Atom</comment>
++ <comment xml:lang="fur">canâl di notiziis Atom</comment>
+ <comment xml:lang="ga">fotha sindeacáitithe Atom</comment>
+ <comment xml:lang="gl">fonte de sindicación Atom</comment>
+ <comment xml:lang="he">הזנה דרך הרשת של Atom</comment>
+@@ -32331,7 +33524,7 @@
+ <comment xml:lang="oc">fial de sindicacion Atom</comment>
+ <comment xml:lang="pl">Kanał Atom</comment>
+ <comment xml:lang="pt">feed Atom</comment>
+- <comment xml:lang="pt_BR">Fonte de notícias Atom</comment>
++ <comment xml:lang="pt-BR">Fonte de notícias Atom</comment>
+ <comment xml:lang="ro">Flux agregare Atom</comment>
+ <comment xml:lang="ru">Лента новостей Atom</comment>
+ <comment xml:lang="sk">Kanál Atom</comment>
+@@ -32342,31 +33535,32 @@
+ <comment xml:lang="tr">Atom besleme kaynağı</comment>
+ <comment xml:lang="uk">трансляція подач Atom</comment>
+ <comment xml:lang="vi">Nguồn tin tức Atom</comment>
+- <comment xml:lang="zh_CN">Atom 聚合种子</comment>
+- <comment xml:lang="zh_TW">Atom 聯合供稿饋流</comment>
++ <comment xml:lang="zh-CN">Atom 聚合种子</comment>
++ <comment xml:lang="zh-TW">Atom 聯合供稿饋流</comment>
+ <sub-class-of type="application/xml"/>
+ <generic-icon name="text-html"/>
+ <glob pattern="*.atom"/>
+ <magic priority="70">
+- <match value="&lt;feed " type="string" offset="0:256"/>
++ <match type="string" value="&lt;feed " offset="0:256"/>
+ </magic>
+ <root-XML namespaceURI="http://www.w3.org/2005/Atom" localName="feed"/>
+ </mime-type>
+ <mime-type type="text/x-opml+xml">
+ <comment>OPML syndication feed</comment>
+ <comment xml:lang="ar">مروج تغذية OPML</comment>
+- <comment xml:lang="be@latin">Syndykacyjny kanał OPML</comment>
++ <comment xml:lang="be-Latn">Syndykacyjny kanał OPML</comment>
+ <comment xml:lang="bg">Емисия — OPML</comment>
+ <comment xml:lang="ca">canal de sindicació OPML</comment>
+ <comment xml:lang="cs">kanál OPML</comment>
+ <comment xml:lang="da">OPML-syndikeringsfeed</comment>
+ <comment xml:lang="de">OPML-Nachrichtenquelle</comment>
+ <comment xml:lang="el">Τροφοδοσία OPML</comment>
+- <comment xml:lang="en_GB">OPML syndication feed</comment>
+- <comment xml:lang="es">canal de noticias OPML</comment>
++ <comment xml:lang="en-GB">OPML syndication feed</comment>
++ <comment xml:lang="es">suministro de sindicación OPML</comment>
+ <comment xml:lang="eu">OPML harpidetze-iturria</comment>
+ <comment xml:lang="fi">OPML-yhdistevirta</comment>
+ <comment xml:lang="fr">fil de syndication OPML</comment>
++ <comment xml:lang="fur">canâl di notiziis OPML</comment>
+ <comment xml:lang="ga">fotha sindeacáitithe OPML</comment>
+ <comment xml:lang="gl">fonte de sindicación OPML</comment>
+ <comment xml:lang="he">הזנה דרך הרשת OPML</comment>
+@@ -32386,7 +33580,7 @@
+ <comment xml:lang="oc">fial de sindicacion OPML</comment>
+ <comment xml:lang="pl">Kanał OPML</comment>
+ <comment xml:lang="pt">feed OPML</comment>
+- <comment xml:lang="pt_BR">Fonte de notícias OPML</comment>
++ <comment xml:lang="pt-BR">Fonte de notícias OPML</comment>
+ <comment xml:lang="ro">Flux OPML syndication</comment>
+ <comment xml:lang="ru">Лента новостей OPML</comment>
+ <comment xml:lang="sk">Kanál OPML</comment>
+@@ -32397,21 +33591,22 @@
+ <comment xml:lang="tr">OPML besleme kaynağı</comment>
+ <comment xml:lang="uk">трансляція подач OPML</comment>
+ <comment xml:lang="vi">Nguồn tin tức OPML</comment>
+- <comment xml:lang="zh_CN">OPML 聚合种子</comment>
+- <comment xml:lang="zh_TW">OPML 聯合供稿饋流</comment>
++ <comment xml:lang="zh-CN">OPML 聚合种子</comment>
++ <comment xml:lang="zh-TW">OPML 聯合供稿饋流</comment>
+ <sub-class-of type="application/xml"/>
+ <alias type="text/x-opml"/>
+ <generic-icon name="text-html"/>
+ <glob pattern="*.opml"/>
+ <magic priority="70">
+- <match value="&lt;opml " type="string" offset="0:256"/>
++ <match type="string" value="&lt;opml " offset="0:256"/>
+ </magic>
+ </mime-type>
+ <mime-type type="text/sgml">
+ <comment>SGML document</comment>
++ <comment xml:lang="af">SGML-dokument</comment>
+ <comment xml:lang="ar">مستند SGML</comment>
+ <comment xml:lang="ast">Documentu SGML</comment>
+- <comment xml:lang="be@latin">Dakument SGML</comment>
++ <comment xml:lang="be-Latn">Dakument SGML</comment>
+ <comment xml:lang="bg">Документ — SGML</comment>
+ <comment xml:lang="ca">document SGML</comment>
+ <comment xml:lang="cs">dokument SGML</comment>
+@@ -32419,13 +33614,14 @@
+ <comment xml:lang="da">SGML-dokument</comment>
+ <comment xml:lang="de">SGML-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο SGML</comment>
+- <comment xml:lang="en_GB">SGML document</comment>
++ <comment xml:lang="en-GB">SGML document</comment>
+ <comment xml:lang="eo">SGML-dokumento</comment>
+ <comment xml:lang="es">documento SGML</comment>
+ <comment xml:lang="eu">SGML dokumentua</comment>
+ <comment xml:lang="fi">SGML-asiakirja</comment>
+ <comment xml:lang="fo">SGML skjal</comment>
+ <comment xml:lang="fr">document SGML</comment>
++ <comment xml:lang="fur">document SGML</comment>
+ <comment xml:lang="ga">cáipéis SGML</comment>
+ <comment xml:lang="gl">documento SGML</comment>
+ <comment xml:lang="he">מסמך SGML</comment>
+@@ -32446,7 +33642,7 @@
+ <comment xml:lang="oc">document SGML</comment>
+ <comment xml:lang="pl">Dokument SGML</comment>
+ <comment xml:lang="pt">documento SGML</comment>
+- <comment xml:lang="pt_BR">Documento SGML</comment>
++ <comment xml:lang="pt-BR">Documento SGML</comment>
+ <comment xml:lang="ro">Document SGML</comment>
+ <comment xml:lang="ru">Документ SGML</comment>
+ <comment xml:lang="sk">Dokument SGML</comment>
+@@ -32457,8 +33653,8 @@
+ <comment xml:lang="tr">SGML belgesi</comment>
+ <comment xml:lang="uk">документ SGML</comment>
+ <comment xml:lang="vi">Tài liệu SGML</comment>
+- <comment xml:lang="zh_CN">SGML 文档</comment>
+- <comment xml:lang="zh_TW">SGML 文件</comment>
++ <comment xml:lang="zh-CN">SGML 文档</comment>
++ <comment xml:lang="zh-TW">SGML 文件</comment>
+ <acronym>SGML</acronym>
+ <expanded-acronym>Standard Generalized Markup Language</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+@@ -32469,19 +33665,20 @@
+ <comment>spreadsheet interchange document</comment>
+ <comment xml:lang="ar">مستند تبادل الجدول</comment>
+ <comment xml:lang="ast">documentu d'intercambéu de fueyes de cálculu</comment>
+- <comment xml:lang="be@latin">dakument dla abmienu raźlikovymi arkušami</comment>
+- <comment xml:lang="bg">Документ за обмяна между програми за електронни таблици</comment>
++ <comment xml:lang="be-Latn">dakument dla abmienu raźlikovymi arkušami</comment>
++ <comment xml:lang="bg">Документ — обмяна между електронни таблици</comment>
+ <comment xml:lang="ca">document d'intercanvi de full de càlcul</comment>
+ <comment xml:lang="cs">sešitový výměnný dokument</comment>
+ <comment xml:lang="da">regnearksudvekslingsdokument</comment>
+ <comment xml:lang="de">Tabellenkalkulations-Austauschdokument</comment>
+ <comment xml:lang="el">Έγγραφο ανταλλαγής λογιστικού φύλλου</comment>
+- <comment xml:lang="en_GB">spreadsheet interchange document</comment>
+- <comment xml:lang="es">documento de intercambio de hojas de cálculo</comment>
++ <comment xml:lang="en-GB">spreadsheet interchange document</comment>
++ <comment xml:lang="es">documento de intercambio de hoja de cálculo</comment>
+ <comment xml:lang="eu">kalkulu-orriak trukatzeko dokumentua</comment>
+ <comment xml:lang="fi">taulukkovälitysasiakirja</comment>
+ <comment xml:lang="fo">rokniarks umbýtisskjal</comment>
+ <comment xml:lang="fr">document d'échange de feuilles de calcul</comment>
++ <comment xml:lang="fur">document di interscambi par sfuei di calcul</comment>
+ <comment xml:lang="ga">cáipéis idirmhalartaithe scarbhileog</comment>
+ <comment xml:lang="gl">documento de intercambio de follas de cálculo</comment>
+ <comment xml:lang="he">מסמך גליון נתונים מתחלף</comment>
+@@ -32501,7 +33698,7 @@
+ <comment xml:lang="oc">document d'escambi de fuèlhs de calcul</comment>
+ <comment xml:lang="pl">Dokument wymiany arkuszy kalkulacyjnych</comment>
+ <comment xml:lang="pt">documento de troca interna de folhas de cálculo</comment>
+- <comment xml:lang="pt_BR">Documento de intercâmbio de planilhas</comment>
++ <comment xml:lang="pt-BR">Documento de intercâmbio de planilhas</comment>
+ <comment xml:lang="ro">document schimb filă de calcul</comment>
+ <comment xml:lang="ru">Документ Spreadsheet Interchange</comment>
+ <comment xml:lang="sk">Zošitový prenosový dokument</comment>
+@@ -32509,35 +33706,37 @@
+ <comment xml:lang="sq">Dokument shkëmbimi për fletë llogaritje</comment>
+ <comment xml:lang="sr">документ размене табеле</comment>
+ <comment xml:lang="sv">spreadsheet interchange-dokument</comment>
+- <comment xml:lang="tr">hesap tablosu değişim belgesi</comment>
++ <comment xml:lang="tr">hesap çizelgesi değişim belgesi</comment>
+ <comment xml:lang="uk">документ обміну ел. таблицями</comment>
+ <comment xml:lang="vi">tài liệu hoán đổi bảng tính</comment>
+- <comment xml:lang="zh_CN">电子表格交换文档</comment>
+- <comment xml:lang="zh_TW">試算表交換文件</comment>
++ <comment xml:lang="zh-CN">电子表格交换文档</comment>
++ <comment xml:lang="zh-TW">試算表交換文件</comment>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="ID;" type="string" offset="0"/>
++ <match type="string" value="ID;" offset="0"/>
+ </magic>
+ <glob pattern="*.sylk"/>
+ <glob pattern="*.slk"/>
+ </mime-type>
+ <mime-type type="text/tab-separated-values">
+ <comment>TSV document</comment>
++ <comment xml:lang="af">TSV-dokument</comment>
+ <comment xml:lang="ar">مستند TSV</comment>
+ <comment xml:lang="ast">Documentu TSV</comment>
+- <comment xml:lang="be@latin">Dakument TSV</comment>
++ <comment xml:lang="be-Latn">Dakument TSV</comment>
+ <comment xml:lang="bg">Документ — TSV</comment>
+ <comment xml:lang="ca">document TSV</comment>
+ <comment xml:lang="cs">dokument TSV</comment>
+ <comment xml:lang="da">TSV-dokument</comment>
+ <comment xml:lang="de">TSV-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο TSV</comment>
+- <comment xml:lang="en_GB">TSV document</comment>
++ <comment xml:lang="en-GB">TSV document</comment>
+ <comment xml:lang="es">documento TSV</comment>
+ <comment xml:lang="eu">TSV dokumentua</comment>
+ <comment xml:lang="fi">TSV-asiakirja</comment>
+ <comment xml:lang="fo">TSV skjal</comment>
+ <comment xml:lang="fr">document TSV</comment>
++ <comment xml:lang="fur">document TSV</comment>
+ <comment xml:lang="ga">cáipéis TSV</comment>
+ <comment xml:lang="gl">documento TSV</comment>
+ <comment xml:lang="he">מסמך TSV</comment>
+@@ -32557,7 +33756,7 @@
+ <comment xml:lang="oc">document TSV</comment>
+ <comment xml:lang="pl">Dokument TSV</comment>
+ <comment xml:lang="pt">documento TSV</comment>
+- <comment xml:lang="pt_BR">Documento TSV</comment>
++ <comment xml:lang="pt-BR">Documento TSV</comment>
+ <comment xml:lang="ro">Document TSV</comment>
+ <comment xml:lang="ru">Документ TSV</comment>
+ <comment xml:lang="sk">Dokument TSV</comment>
+@@ -32568,8 +33767,8 @@
+ <comment xml:lang="tr">TSV belgesi</comment>
+ <comment xml:lang="uk">документ TSV</comment>
+ <comment xml:lang="vi">Tài liệu TSV</comment>
+- <comment xml:lang="zh_CN">TSV 文档</comment>
+- <comment xml:lang="zh_TW">TSV 文件</comment>
++ <comment xml:lang="zh-CN">TSV 文档</comment>
++ <comment xml:lang="zh-TW">TSV 文件</comment>
+ <acronym>TSV</acronym>
+ <expanded-acronym>Tab Separated Values</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+@@ -32577,6 +33776,7 @@
+ </mime-type>
+ <mime-type type="text/vnd.graphviz">
+ <comment>Graphviz DOT graph</comment>
++ <comment xml:lang="af">Graphviz DOT-grafiek</comment>
+ <comment xml:lang="ar">مبيان Graphviz DOT</comment>
+ <comment xml:lang="bg">Граф — Graphviz DOT</comment>
+ <comment xml:lang="ca">gràfic Graphviz DOT</comment>
+@@ -32584,12 +33784,13 @@
+ <comment xml:lang="da">Graphviz DOT-graf</comment>
+ <comment xml:lang="de">Graphviz-DOT-Graph</comment>
+ <comment xml:lang="el">Γράφημα Graphviz DOT</comment>
+- <comment xml:lang="en_GB">Graphviz DOT graph</comment>
++ <comment xml:lang="en-GB">Graphviz DOT graph</comment>
+ <comment xml:lang="es">gráfico de Graphviz DOT</comment>
+ <comment xml:lang="eu">Graphviz DOT grafikoa</comment>
+ <comment xml:lang="fi">Graphviz DOT -graafi</comment>
+ <comment xml:lang="fo">Graphviz DOT ritmynd</comment>
+ <comment xml:lang="fr">graphe Graphviz DOT</comment>
++ <comment xml:lang="fur">grafic Graphviz DOT</comment>
+ <comment xml:lang="ga">graf DOT Graphviz</comment>
+ <comment xml:lang="gl">gráfica DOT de Graphviz</comment>
+ <comment xml:lang="he">תרשים של Graphviz DOT</comment>
+@@ -32607,7 +33808,7 @@
+ <comment xml:lang="oc">graf Graphviz DOT</comment>
+ <comment xml:lang="pl">Wykres DOT Graphviz</comment>
+ <comment xml:lang="pt">gráfico Graphviz DOT</comment>
+- <comment xml:lang="pt_BR">Gráfico do Graphviz DOT</comment>
++ <comment xml:lang="pt-BR">Gráfico do Graphviz DOT</comment>
+ <comment xml:lang="ro">Grafic Graphviz DOT</comment>
+ <comment xml:lang="ru">Диаграмма Graphviz DOT</comment>
+ <comment xml:lang="sk">Graf Graphviz DOT</comment>
+@@ -32617,36 +33818,38 @@
+ <comment xml:lang="tr">Graphviz DOT grafiği</comment>
+ <comment xml:lang="uk">граф DOT Graphviz</comment>
+ <comment xml:lang="vi">Biểu đồ DOT Graphviz</comment>
+- <comment xml:lang="zh_CN">Graphviz DOT 图形</comment>
+- <comment xml:lang="zh_TW">Graphviz DOT 圖</comment>
++ <comment xml:lang="zh-CN">Graphviz DOT 图形</comment>
++ <comment xml:lang="zh-TW">Graphviz DOT 圖表</comment>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="digraph " type="string" offset="0"/>
+- <match value="strict digraph " type="string" offset="0"/>
+- <match value="graph " type="string" offset="0"/>
+- <match value="strict graph " type="string" offset="0"/>
++ <match type="string" value="digraph " offset="0"/>
++ <match type="string" value="strict digraph " offset="0"/>
++ <match type="string" value="graph " offset="0"/>
++ <match type="string" value="strict graph " offset="0"/>
+ </magic>
+ <glob pattern="*.gv"/>
+ <glob pattern="*.dot"/>
+ </mime-type>
+ <mime-type type="text/vnd.sun.j2me.app-descriptor">
+ <comment>JAD document</comment>
++ <comment xml:lang="af">JAD-dokument</comment>
+ <comment xml:lang="ar">مستند JAD</comment>
+ <comment xml:lang="ast">Documentu JAD</comment>
+- <comment xml:lang="be@latin">Dakument JAD</comment>
++ <comment xml:lang="be-Latn">Dakument JAD</comment>
+ <comment xml:lang="bg">Документ — JAD</comment>
+ <comment xml:lang="ca">document JAD</comment>
+ <comment xml:lang="cs">dokument JAD</comment>
+ <comment xml:lang="da">JAD-dokument</comment>
+ <comment xml:lang="de">JAD-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο JAD</comment>
+- <comment xml:lang="en_GB">JAD document</comment>
++ <comment xml:lang="en-GB">JAD document</comment>
+ <comment xml:lang="eo">JAD-dokumento</comment>
+ <comment xml:lang="es">documento JAD</comment>
+ <comment xml:lang="eu">JAD dokumentua</comment>
+ <comment xml:lang="fi">JAD-asiakirja</comment>
+ <comment xml:lang="fo">JAD skjal</comment>
+ <comment xml:lang="fr">document JAD</comment>
++ <comment xml:lang="fur">document JAD</comment>
+ <comment xml:lang="ga">cáipéis JAD</comment>
+ <comment xml:lang="gl">documento JAD</comment>
+ <comment xml:lang="he">מסמך JAD</comment>
+@@ -32666,7 +33869,7 @@
+ <comment xml:lang="oc">document JAD</comment>
+ <comment xml:lang="pl">Dokument JAD</comment>
+ <comment xml:lang="pt">documento JAD</comment>
+- <comment xml:lang="pt_BR">Documento JAD</comment>
++ <comment xml:lang="pt-BR">Documento JAD</comment>
+ <comment xml:lang="ro">Document JAD</comment>
+ <comment xml:lang="ru">Документ JAD</comment>
+ <comment xml:lang="sk">Dokument JAD</comment>
+@@ -32677,21 +33880,22 @@
+ <comment xml:lang="tr">JAD belgesi</comment>
+ <comment xml:lang="uk">документ JAD</comment>
+ <comment xml:lang="vi">Tài liệu JAD</comment>
+- <comment xml:lang="zh_CN">JAD 文档</comment>
+- <comment xml:lang="zh_TW">JAD 文件</comment>
++ <comment xml:lang="zh-CN">JAD 文档</comment>
++ <comment xml:lang="zh-TW">JAD 文件</comment>
+ <acronym>JAD</acronym>
+ <expanded-acronym>Java Application Descriptor</expanded-acronym>
+ <magic priority="50">
+- <match value="MIDlet-" type="string" offset="0"/>
++ <match type="string" value="MIDlet-" offset="0"/>
+ </magic>
+ <glob pattern="*.jad"/>
+ </mime-type>
+ <mime-type type="text/vnd.wap.wml">
+ <comment>WML document</comment>
++ <comment xml:lang="af">WML-dokument</comment>
+ <comment xml:lang="ar">مستند WML</comment>
+ <comment xml:lang="ast">Documentu WML</comment>
+ <comment xml:lang="az">WML sənədi</comment>
+- <comment xml:lang="be@latin">Dakument WML</comment>
++ <comment xml:lang="be-Latn">Dakument WML</comment>
+ <comment xml:lang="bg">Документ — WML</comment>
+ <comment xml:lang="ca">document WML</comment>
+ <comment xml:lang="cs">dokument WML</comment>
+@@ -32699,13 +33903,14 @@
+ <comment xml:lang="da">WML-dokument</comment>
+ <comment xml:lang="de">WML-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο WML</comment>
+- <comment xml:lang="en_GB">WML document</comment>
++ <comment xml:lang="en-GB">WML document</comment>
+ <comment xml:lang="eo">WML-dokumento</comment>
+ <comment xml:lang="es">documento WML</comment>
+ <comment xml:lang="eu">WML dokumentua</comment>
+ <comment xml:lang="fi">WML-asiakirja</comment>
+ <comment xml:lang="fo">WML skjal</comment>
+ <comment xml:lang="fr">document WML</comment>
++ <comment xml:lang="fur">document WML</comment>
+ <comment xml:lang="ga">cáipéis WML</comment>
+ <comment xml:lang="gl">documento WML</comment>
+ <comment xml:lang="he">מסמך WML</comment>
+@@ -32726,7 +33931,7 @@
+ <comment xml:lang="oc">document WML</comment>
+ <comment xml:lang="pl">Dokument WML</comment>
+ <comment xml:lang="pt">documento WML</comment>
+- <comment xml:lang="pt_BR">Documento WML</comment>
++ <comment xml:lang="pt-BR">Documento WML</comment>
+ <comment xml:lang="ro">Document WML</comment>
+ <comment xml:lang="ru">Документ WML</comment>
+ <comment xml:lang="sk">Dokument WML</comment>
+@@ -32737,8 +33942,8 @@
+ <comment xml:lang="tr">WML belgesi</comment>
+ <comment xml:lang="uk">документ WML</comment>
+ <comment xml:lang="vi">Tài liệu WML</comment>
+- <comment xml:lang="zh_CN">WML 文档</comment>
+- <comment xml:lang="zh_TW">WML 文件</comment>
++ <comment xml:lang="zh-CN">WML 文档</comment>
++ <comment xml:lang="zh-TW">WML 文件</comment>
+ <acronym>WML</acronym>
+ <expanded-acronym>Wireless Markup Language</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+@@ -32746,20 +33951,22 @@
+ </mime-type>
+ <mime-type type="text/vnd.wap.wmlscript">
+ <comment>WMLScript program</comment>
++ <comment xml:lang="af">WMLScript-program</comment>
+ <comment xml:lang="ar">برنامج WMLScript</comment>
+- <comment xml:lang="be@latin">Prahrama WMLScript</comment>
++ <comment xml:lang="be-Latn">Prahrama WMLScript</comment>
+ <comment xml:lang="bg">Програма — WMLScript</comment>
+ <comment xml:lang="ca">programa WMLScript</comment>
+ <comment xml:lang="cs">program WMLScript</comment>
+ <comment xml:lang="da">WMLScript-program</comment>
+ <comment xml:lang="de">WMLScript-Programm</comment>
+ <comment xml:lang="el">Πρόγραμμα WMLScript</comment>
+- <comment xml:lang="en_GB">WMLScript program</comment>
++ <comment xml:lang="en-GB">WMLScript program</comment>
+ <comment xml:lang="es">programa en WMLScript</comment>
+ <comment xml:lang="eu">WMLScript programa</comment>
+ <comment xml:lang="fi">WMLScript-ohjelma</comment>
+ <comment xml:lang="fo">WMLScript forrit</comment>
+ <comment xml:lang="fr">programme WMLScript</comment>
++ <comment xml:lang="fur">program WMLScript</comment>
+ <comment xml:lang="ga">ríomhchlár WMLScript</comment>
+ <comment xml:lang="gl">programa en WMLScript</comment>
+ <comment xml:lang="he">תכנית של WMLScript</comment>
+@@ -32779,7 +33986,7 @@
+ <comment xml:lang="oc">programa WMLEscript</comment>
+ <comment xml:lang="pl">Pogram WMLScript</comment>
+ <comment xml:lang="pt">programa WMLScript</comment>
+- <comment xml:lang="pt_BR">Programa WMLScript</comment>
++ <comment xml:lang="pt-BR">Programa WMLScript</comment>
+ <comment xml:lang="ro">Program WMLScript</comment>
+ <comment xml:lang="ru">Программа WMLScript</comment>
+ <comment xml:lang="sk">Program WMLScript</comment>
+@@ -32790,27 +33997,60 @@
+ <comment xml:lang="tr">WMLScript programı</comment>
+ <comment xml:lang="uk">програма мовою WMLScript</comment>
+ <comment xml:lang="vi">Chương trình WMLScript</comment>
+- <comment xml:lang="zh_CN">WMLScript 程序</comment>
+- <comment xml:lang="zh_TW">WMLScript 程式</comment>
++ <comment xml:lang="zh-CN">WMLScript 程序</comment>
++ <comment xml:lang="zh-TW">WMLScript 程式</comment>
+ <glob pattern="*.wmls"/>
+ </mime-type>
++ <mime-type type="text/vnd.senx.warpscript">
++ <comment>WarpScript source code</comment>
++ <comment xml:lang="bg">Изходен код — WarpScript</comment>
++ <comment xml:lang="ca">codi font en WarpScript</comment>
++ <comment xml:lang="cs">zdrojový kód v jazyce WarpScript</comment>
++ <comment xml:lang="da">WarpScript-kildekode</comment>
++ <comment xml:lang="de">WarpScript-Quelltext</comment>
++ <comment xml:lang="en-GB">WarpScript source code</comment>
++ <comment xml:lang="es">código fuente en WarpScript</comment>
++ <comment xml:lang="eu">WarpScript iturburu-kodea</comment>
++ <comment xml:lang="fi">WarpScript-lähdekoodi</comment>
++ <comment xml:lang="fr">code source WarpScript</comment>
++ <comment xml:lang="fur">codiç sorzint WarpScript</comment>
++ <comment xml:lang="hr">WarpScript izvorni kôd</comment>
++ <comment xml:lang="hu">WarpScript forráskód</comment>
++ <comment xml:lang="id">Kode sumber WarpScript</comment>
++ <comment xml:lang="it">Codice sorgente WarpScript</comment>
++ <comment xml:lang="kk">WarpScript бастапқы коды</comment>
++ <comment xml:lang="ko">WarpScript 소스 코드</comment>
++ <comment xml:lang="pl">Kod źródłowy WarpScript</comment>
++ <comment xml:lang="pt-BR">Código-fonte WarpScript</comment>
++ <comment xml:lang="ru">Исходный код WarpScript</comment>
++ <comment xml:lang="sl">Izvorna koda WarpScript</comment>
++ <comment xml:lang="sv">WarpScript-källkod</comment>
++ <comment xml:lang="tr">WarpScript kaynak kodu</comment>
++ <comment xml:lang="uk">вихідний код мовою WarpScript</comment>
++ <comment xml:lang="zh-CN">WarpScript 源代码</comment>
++ <comment xml:lang="zh-TW">WarpScript 原始碼</comment>
++ <sub-class-of type="text/plain"/>
++ <glob pattern="*.mc2"/>
++ </mime-type>
+ <mime-type type="application/x-ace">
+ <comment>ACE archive</comment>
++ <comment xml:lang="af">ACE-argief</comment>
+ <comment xml:lang="ar">أرشيف ACE</comment>
+- <comment xml:lang="be@latin">Archiŭ ACE</comment>
++ <comment xml:lang="be-Latn">Archiŭ ACE</comment>
+ <comment xml:lang="bg">Архив — ACE</comment>
+ <comment xml:lang="ca">arxiu ACE</comment>
+ <comment xml:lang="cs">archiv ACE</comment>
+ <comment xml:lang="da">ACE-arkiv</comment>
+ <comment xml:lang="de">ACE-Archiv</comment>
+ <comment xml:lang="el">Συμπιεσμένο αρχείο ACE</comment>
+- <comment xml:lang="en_GB">ACE archive</comment>
++ <comment xml:lang="en-GB">ACE archive</comment>
+ <comment xml:lang="eo">ACE-arkivo</comment>
+ <comment xml:lang="es">archivador ACE</comment>
+ <comment xml:lang="eu">ACE artxiboa</comment>
+ <comment xml:lang="fi">ACE-arkisto</comment>
+ <comment xml:lang="fo">ACE skjalasavn</comment>
+ <comment xml:lang="fr">archive ACE</comment>
++ <comment xml:lang="fur">archivi ACE</comment>
+ <comment xml:lang="ga">cartlann ACE</comment>
+ <comment xml:lang="gl">arquivo ACE</comment>
+ <comment xml:lang="he">ארכיון ACE</comment>
+@@ -32831,7 +34071,7 @@
+ <comment xml:lang="oc">archiu ACE</comment>
+ <comment xml:lang="pl">Archiwum ACE</comment>
+ <comment xml:lang="pt">arquivo ACE</comment>
+- <comment xml:lang="pt_BR">Pacote ACE</comment>
++ <comment xml:lang="pt-BR">Pacote ACE</comment>
+ <comment xml:lang="ro">Arhivă ACE</comment>
+ <comment xml:lang="ru">Архив ACE</comment>
+ <comment xml:lang="sk">Archív ACE</comment>
+@@ -32842,31 +34082,33 @@
+ <comment xml:lang="tr">ACE arşivi</comment>
+ <comment xml:lang="uk">архів ACE</comment>
+ <comment xml:lang="vi">Kho nén ACE</comment>
+- <comment xml:lang="zh_CN">ACE 归档文件</comment>
+- <comment xml:lang="zh_TW">ACE 封存檔</comment>
++ <comment xml:lang="zh-CN">ACE 归档文件</comment>
++ <comment xml:lang="zh-TW">ACE 封存檔</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="60">
+- <match value="**ACE**" type="string" offset="7"/>
++ <match type="string" value="**ACE**" offset="7"/>
+ </magic>
+ <glob pattern="*.ace"/>
+ </mime-type>
+ <mime-type type="text/x-adasrc">
+ <comment>Ada source code</comment>
++ <comment xml:lang="af">Ada-bronkode</comment>
+ <comment xml:lang="ar">شفرة مصدر Ada</comment>
+- <comment xml:lang="be@latin">Kryničny kod Ada</comment>
++ <comment xml:lang="be-Latn">Kryničny kod Ada</comment>
+ <comment xml:lang="bg">Изходен код — Ada</comment>
+ <comment xml:lang="ca">codi font en Ada</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce Ada</comment>
+ <comment xml:lang="da">Ada-kildekode</comment>
+ <comment xml:lang="de">Ada-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας Ada</comment>
+- <comment xml:lang="en_GB">Ada source code</comment>
++ <comment xml:lang="en-GB">Ada source code</comment>
+ <comment xml:lang="eo">Ada-fontkodo</comment>
+ <comment xml:lang="es">código fuente en Ada</comment>
+ <comment xml:lang="eu">Ada iturburu-kodea</comment>
+ <comment xml:lang="fi">Ada-lähdekoodi</comment>
+ <comment xml:lang="fo">Ada keldukota</comment>
+ <comment xml:lang="fr">code source Ada</comment>
++ <comment xml:lang="fur">codiç sorzint Ada</comment>
+ <comment xml:lang="ga">cód foinseach Ada</comment>
+ <comment xml:lang="gl">código fonte en Ada</comment>
+ <comment xml:lang="he">קוד מקור Ada</comment>
+@@ -32888,7 +34130,7 @@
+ <comment xml:lang="oc">còde font Ada</comment>
+ <comment xml:lang="pl">Kod źródłowy Ada</comment>
+ <comment xml:lang="pt">código origem Ada</comment>
+- <comment xml:lang="pt_BR">Código-fonte Ada</comment>
++ <comment xml:lang="pt-BR">Código-fonte Ada</comment>
+ <comment xml:lang="ro">Cod sursă Ada</comment>
+ <comment xml:lang="ru">Исходный код Ada</comment>
+ <comment xml:lang="sk">Zdrojový kód jazyka Ada</comment>
+@@ -32899,29 +34141,31 @@
+ <comment xml:lang="tr">Ada kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою Ada</comment>
+ <comment xml:lang="vi">Mã nguồn Ada</comment>
+- <comment xml:lang="zh_CN">Ada 源代码</comment>
+- <comment xml:lang="zh_TW">Ada 源碼</comment>
++ <comment xml:lang="zh-CN">Ada 源代码</comment>
++ <comment xml:lang="zh-TW">Ada 源碼</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.adb"/>
+ <glob pattern="*.ads"/>
+ </mime-type>
+ <mime-type type="text/x-authors">
+ <comment>author list</comment>
++ <comment xml:lang="af">outeurlys</comment>
+ <comment xml:lang="ar">لائحة المؤلف</comment>
+- <comment xml:lang="be@latin">śpis aŭtaraŭ</comment>
++ <comment xml:lang="be-Latn">śpis aŭtaraŭ</comment>
+ <comment xml:lang="bg">Списък на авторите</comment>
+ <comment xml:lang="ca">llista d'autors</comment>
+ <comment xml:lang="cs">seznam autorů</comment>
+ <comment xml:lang="da">forfatterliste</comment>
+ <comment xml:lang="de">Autorenliste</comment>
+ <comment xml:lang="el">Κατάλογος συγγραφέων</comment>
+- <comment xml:lang="en_GB">author list</comment>
++ <comment xml:lang="en-GB">author list</comment>
+ <comment xml:lang="eo">listo de aŭtoroj</comment>
+ <comment xml:lang="es">lista de autores</comment>
+ <comment xml:lang="eu">egile-zerrenda</comment>
+ <comment xml:lang="fi">tekijäluettelo</comment>
+ <comment xml:lang="fo">høvundalisti</comment>
+ <comment xml:lang="fr">liste d'auteurs</comment>
++ <comment xml:lang="fur">liste di autôrs</comment>
+ <comment xml:lang="ga">liosta údar</comment>
+ <comment xml:lang="gl">lista de autores</comment>
+ <comment xml:lang="he">רשימת יוצרים</comment>
+@@ -32942,7 +34186,7 @@
+ <comment xml:lang="oc">lista d'autors</comment>
+ <comment xml:lang="pl">Lista autorów</comment>
+ <comment xml:lang="pt">lista de autores</comment>
+- <comment xml:lang="pt_BR">Lista de autores</comment>
++ <comment xml:lang="pt-BR">Lista de autores</comment>
+ <comment xml:lang="ro">listă autori</comment>
+ <comment xml:lang="ru">Список авторов</comment>
+ <comment xml:lang="sk">Zoznam autorov</comment>
+@@ -32953,29 +34197,31 @@
+ <comment xml:lang="tr">yazar listesi</comment>
+ <comment xml:lang="uk">перелік авторів</comment>
+ <comment xml:lang="vi">danh sách tác giả</comment>
+- <comment xml:lang="zh_CN">作者列表</comment>
+- <comment xml:lang="zh_TW">作者清單</comment>
++ <comment xml:lang="zh-CN">作者列表</comment>
++ <comment xml:lang="zh-TW">作者清單</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="AUTHORS"/>
+ </mime-type>
+ <mime-type type="text/x-bibtex">
+ <comment>BibTeX document</comment>
++ <comment xml:lang="af">BibTeX-dokument</comment>
+ <comment xml:lang="ar">مستند BibTeX</comment>
+ <comment xml:lang="ast">Documentu de BibTeX</comment>
+- <comment xml:lang="be@latin">Dakument BibTeX</comment>
++ <comment xml:lang="be-Latn">Dakument BibTeX</comment>
+ <comment xml:lang="bg">Документ — BibTeX</comment>
+ <comment xml:lang="ca">document BibTeX</comment>
+ <comment xml:lang="cs">dokument BibTeX</comment>
+ <comment xml:lang="da">BibTeX-dokument</comment>
+ <comment xml:lang="de">BibTeX-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο BibTeX</comment>
+- <comment xml:lang="en_GB">BibTeX document</comment>
++ <comment xml:lang="en-GB">BibTeX document</comment>
+ <comment xml:lang="eo">BibTeX-dokumento</comment>
+ <comment xml:lang="es">documento BibTeX</comment>
+ <comment xml:lang="eu">BibTeX dokumentua</comment>
+ <comment xml:lang="fi">BibTeX-asiakirja</comment>
+ <comment xml:lang="fo">BibTeX skjal</comment>
+ <comment xml:lang="fr">document BibTeX</comment>
++ <comment xml:lang="fur">document BibTeX</comment>
+ <comment xml:lang="ga">cáipéis BibTeX</comment>
+ <comment xml:lang="gl">documento BibTex</comment>
+ <comment xml:lang="he">מסמך BibTeX</comment>
+@@ -32996,7 +34242,7 @@
+ <comment xml:lang="oc">document BibTeX</comment>
+ <comment xml:lang="pl">Dokument BibTeX</comment>
+ <comment xml:lang="pt">documento BibTeX</comment>
+- <comment xml:lang="pt_BR">Documento BibTeX</comment>
++ <comment xml:lang="pt-BR">Documento BibTeX</comment>
+ <comment xml:lang="ro">Document BibTeX</comment>
+ <comment xml:lang="ru">Документ BibTeX</comment>
+ <comment xml:lang="sk">Dokument BibTeX</comment>
+@@ -33007,30 +34253,31 @@
+ <comment xml:lang="tr">BibTeX belgesi</comment>
+ <comment xml:lang="uk">документ BibTeX</comment>
+ <comment xml:lang="vi">Tài liệu BibTeX</comment>
+- <comment xml:lang="zh_CN">BibTeX 文档</comment>
+- <comment xml:lang="zh_TW">BibTeX 文件</comment>
++ <comment xml:lang="zh-CN">BibTeX 文档</comment>
++ <comment xml:lang="zh-TW">BibTeX 文件</comment>
+ <sub-class-of type="text/plain"/>
+ <magic>
+- <match value="% This file was created with JabRef" type="string" offset="0"/>
++ <match type="string" value="% This file was created with JabRef" offset="0"/>
+ </magic>
+ <glob pattern="*.bib"/>
+ </mime-type>
+ <mime-type type="text/x-c++hdr">
+ <comment>C++ header</comment>
+ <comment xml:lang="ar">ترويسة سي++</comment>
+- <comment xml:lang="be@latin">Zahałoŭny fajł C++</comment>
++ <comment xml:lang="be-Latn">Zahałoŭny fajł C++</comment>
+ <comment xml:lang="bg">Заглавен файл — C++</comment>
+ <comment xml:lang="ca">capçalera en C++</comment>
+ <comment xml:lang="cs">hlavičkový soubor C++</comment>
+ <comment xml:lang="da">C++-posthoved</comment>
+ <comment xml:lang="de">C++-Header</comment>
+ <comment xml:lang="el">Κεφαλίδα C++</comment>
+- <comment xml:lang="en_GB">C++ header</comment>
++ <comment xml:lang="en-GB">C++ header</comment>
+ <comment xml:lang="es">cabecera de código fuente en C++</comment>
+ <comment xml:lang="eu">C++ goiburua</comment>
+ <comment xml:lang="fi">C++-otsake</comment>
+ <comment xml:lang="fo">C++ tekshøvd</comment>
+ <comment xml:lang="fr">en-tête C++</comment>
++ <comment xml:lang="fur">intestazion C++</comment>
+ <comment xml:lang="ga">ceanntásc C++</comment>
+ <comment xml:lang="gl">cabeceira de código fonte en C++</comment>
+ <comment xml:lang="he">כותר C++‎</comment>
+@@ -33051,7 +34298,7 @@
+ <comment xml:lang="oc">entèsta C++</comment>
+ <comment xml:lang="pl">Plik nagłówkowy C++</comment>
+ <comment xml:lang="pt">cabeçalho C++</comment>
+- <comment xml:lang="pt_BR">Cabeçalho C++</comment>
++ <comment xml:lang="pt-BR">Cabeçalho C++</comment>
+ <comment xml:lang="ro">Antet C++</comment>
+ <comment xml:lang="ru">Заголовочный файл C++</comment>
+ <comment xml:lang="sk">Hlavičky jazyka C++</comment>
+@@ -33062,8 +34309,8 @@
+ <comment xml:lang="tr">C++ başlığı</comment>
+ <comment xml:lang="uk">файл заголовків мовою C++</comment>
+ <comment xml:lang="vi">Phần đầu mã nguồn C++</comment>
+- <comment xml:lang="zh_CN">C++ 头文件</comment>
+- <comment xml:lang="zh_TW">C++ 標頭檔</comment>
++ <comment xml:lang="zh-CN">C++ 头文件</comment>
++ <comment xml:lang="zh-TW">C++ 標頭檔</comment>
+ <sub-class-of type="text/x-chdr"/>
+ <glob pattern="*.hh"/>
+ <glob pattern="*.hp"/>
+@@ -33073,21 +34320,23 @@
+ </mime-type>
+ <mime-type type="text/x-c++src">
+ <comment>C++ source code</comment>
++ <comment xml:lang="af">C++-bronkode</comment>
+ <comment xml:lang="ar">شفرة مصدر سي++</comment>
+- <comment xml:lang="be@latin">Kryničny kod C++</comment>
++ <comment xml:lang="be-Latn">Kryničny kod C++</comment>
+ <comment xml:lang="bg">Изходен код — C++</comment>
+ <comment xml:lang="ca">codi font en C++</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce C++</comment>
+ <comment xml:lang="da">C++-kildekode</comment>
+ <comment xml:lang="de">C++-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας C++</comment>
+- <comment xml:lang="en_GB">C++ source code</comment>
++ <comment xml:lang="en-GB">C++ source code</comment>
+ <comment xml:lang="eo">C++-fontkodo</comment>
+ <comment xml:lang="es">código fuente en C++</comment>
+ <comment xml:lang="eu">C++ iturburu-kodea</comment>
+ <comment xml:lang="fi">C++-lähdekoodi</comment>
+ <comment xml:lang="fo">C++ keldukota</comment>
+ <comment xml:lang="fr">code source C++</comment>
++ <comment xml:lang="fur">codiç sorzint C++</comment>
+ <comment xml:lang="ga">cód foinseach C++</comment>
+ <comment xml:lang="gl">código fonte de C++</comment>
+ <comment xml:lang="he">קוד מקור של C++‎</comment>
+@@ -33109,7 +34358,7 @@
+ <comment xml:lang="oc">còde font C++</comment>
+ <comment xml:lang="pl">Kod źródłowy C++</comment>
+ <comment xml:lang="pt">código origem C++</comment>
+- <comment xml:lang="pt_BR">Código-fonte C++</comment>
++ <comment xml:lang="pt-BR">Código-fonte C++</comment>
+ <comment xml:lang="ro">Cod sursă C++</comment>
+ <comment xml:lang="ru">Исходный код C++</comment>
+ <comment xml:lang="sk">Zdrojový kód jazyka C++</comment>
+@@ -33120,8 +34369,8 @@
+ <comment xml:lang="tr">C++ kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою C++</comment>
+ <comment xml:lang="vi">Mã nguồn C++</comment>
+- <comment xml:lang="zh_CN">C++ 源代码</comment>
+- <comment xml:lang="zh_TW">C++ 源碼</comment>
++ <comment xml:lang="zh-CN">C++ 源代码</comment>
++ <comment xml:lang="zh-TW">C++ 源碼</comment>
+ <sub-class-of type="text/x-csrc"/>
+ <glob pattern="*.cpp"/>
+ <glob pattern="*.cxx"/>
+@@ -33131,21 +34380,23 @@
+ </mime-type>
+ <mime-type type="text/x-changelog">
+ <comment>ChangeLog document</comment>
++ <comment xml:lang="af">ChangeLog-dokument</comment>
+ <comment xml:lang="ar">مستند ChangeLog</comment>
+ <comment xml:lang="ast">Documentu de rexistru de cambeos</comment>
+- <comment xml:lang="be@latin">Dakument zafiksavanych źmienaŭ ChangeLog</comment>
++ <comment xml:lang="be-Latn">Dakument zafiksavanych źmienaŭ ChangeLog</comment>
+ <comment xml:lang="bg">Дневник за промени — ChangeLog</comment>
+ <comment xml:lang="ca">document de registre de canvis</comment>
+ <comment xml:lang="cs">dokument ChangeLog</comment>
+ <comment xml:lang="da">ChangeLot-dokument</comment>
+ <comment xml:lang="de">Änderungsprotokoll-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο ChangeLog</comment>
+- <comment xml:lang="en_GB">ChangeLog document</comment>
++ <comment xml:lang="en-GB">ChangeLog document</comment>
+ <comment xml:lang="es">documento de registro de cambios</comment>
+ <comment xml:lang="eu">ChangeLog dokumentua</comment>
+ <comment xml:lang="fi">Muutoslokiasiakirja</comment>
+ <comment xml:lang="fo">ChangeLog skjal</comment>
+ <comment xml:lang="fr">document ChangeLog</comment>
++ <comment xml:lang="fur">document ChangeLog</comment>
+ <comment xml:lang="ga">cáipéis ChangeLog</comment>
+ <comment xml:lang="gl">documento Changelog</comment>
+ <comment xml:lang="he">מסמך של ChangeLog</comment>
+@@ -33166,7 +34417,7 @@
+ <comment xml:lang="oc">document ChangeLog</comment>
+ <comment xml:lang="pl">Dokument zmian (ChangeLog)</comment>
+ <comment xml:lang="pt">documento ChangeLog</comment>
+- <comment xml:lang="pt_BR">Documento ChangeLog</comment>
++ <comment xml:lang="pt-BR">Documento ChangeLog</comment>
+ <comment xml:lang="ro">Document ChangeLog</comment>
+ <comment xml:lang="ru">Протокол изменений</comment>
+ <comment xml:lang="sk">Dokument ChangeLog</comment>
+@@ -33174,30 +34425,31 @@
+ <comment xml:lang="sq">Dokument ChangeLog</comment>
+ <comment xml:lang="sr">документ дневника измена</comment>
+ <comment xml:lang="sv">Ändringsloggsdokument</comment>
+- <comment xml:lang="tr">Değişim Günlüğü belgesi</comment>
++ <comment xml:lang="tr">ChangeLog belgesi</comment>
+ <comment xml:lang="uk">документ ChangeLog</comment>
+ <comment xml:lang="vi">Tài liệu ChangeLog (ghi lưu thay đổi)</comment>
+- <comment xml:lang="zh_CN">变更日志文档</comment>
+- <comment xml:lang="zh_TW">ChangeLog 文件</comment>
++ <comment xml:lang="zh-CN">变更日志文档</comment>
++ <comment xml:lang="zh-TW">ChangeLog 文件</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="ChangeLog"/>
+ </mime-type>
+ <mime-type type="text/x-chdr">
+ <comment>C header</comment>
+ <comment xml:lang="ar">ترويسة C</comment>
+- <comment xml:lang="be@latin">Zahałoŭny fajł C</comment>
++ <comment xml:lang="be-Latn">Zahałoŭny fajł C</comment>
+ <comment xml:lang="bg">Заглавен файл — C</comment>
+ <comment xml:lang="ca">capçalera en C</comment>
+ <comment xml:lang="cs">hlavičkový soubor C</comment>
+ <comment xml:lang="da">C-posthoved</comment>
+ <comment xml:lang="de">C-Header</comment>
+ <comment xml:lang="el">Κεφαλίδα C</comment>
+- <comment xml:lang="en_GB">C header</comment>
++ <comment xml:lang="en-GB">C header</comment>
+ <comment xml:lang="es">cabecera de código fuente en C</comment>
+ <comment xml:lang="eu">C goiburua</comment>
+ <comment xml:lang="fi">C-otsake</comment>
+ <comment xml:lang="fo">C tekshøvd</comment>
+ <comment xml:lang="fr">en-tête C</comment>
++ <comment xml:lang="fur">intestazion C</comment>
+ <comment xml:lang="ga">ceanntásc C</comment>
+ <comment xml:lang="gl">cabeceira de códifo fonte de C</comment>
+ <comment xml:lang="he">כותר C</comment>
+@@ -33218,7 +34470,7 @@
+ <comment xml:lang="oc">entèsta C</comment>
+ <comment xml:lang="pl">Plik nagłówkowy C</comment>
+ <comment xml:lang="pt">cabeçalho C</comment>
+- <comment xml:lang="pt_BR">Cabeçalho C</comment>
++ <comment xml:lang="pt-BR">Cabeçalho C</comment>
+ <comment xml:lang="ro">Antet C</comment>
+ <comment xml:lang="ru">Заголовочный файл C</comment>
+ <comment xml:lang="sk">Hlavičky jazyka C</comment>
+@@ -33229,28 +34481,30 @@
+ <comment xml:lang="tr">C başlığı</comment>
+ <comment xml:lang="uk">файл заголовків мовою C</comment>
+ <comment xml:lang="vi">Phần đầu mã nguồn C</comment>
+- <comment xml:lang="zh_CN">C 程序头文件</comment>
+- <comment xml:lang="zh_TW">C 標頭檔</comment>
++ <comment xml:lang="zh-CN">C 程序头文件</comment>
++ <comment xml:lang="zh-TW">C 標頭檔</comment>
+ <sub-class-of type="text/x-csrc"/>
+ <glob pattern="*.h"/>
+ </mime-type>
+ <mime-type type="text/x-cmake">
+ <comment>CMake source code</comment>
++ <comment xml:lang="af">CMake-bronkode</comment>
+ <comment xml:lang="ar">شفرة مصدر CMake</comment>
+- <comment xml:lang="be@latin">Kryničny kod CMake</comment>
++ <comment xml:lang="be-Latn">Kryničny kod CMake</comment>
+ <comment xml:lang="bg">Изходен код — CMake</comment>
+ <comment xml:lang="ca">codi font en CMake</comment>
+ <comment xml:lang="cs">zdrojový kód CMake</comment>
+ <comment xml:lang="da">CMake-kildekode</comment>
+ <comment xml:lang="de">CMake-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας CMake</comment>
+- <comment xml:lang="en_GB">CMake source code</comment>
++ <comment xml:lang="en-GB">CMake source code</comment>
+ <comment xml:lang="eo">CMake-fontkodo</comment>
+ <comment xml:lang="es">código fuente en CMake</comment>
+ <comment xml:lang="eu">CMake iturburu-kodea</comment>
+ <comment xml:lang="fi">CMake-lähdekoodi</comment>
+ <comment xml:lang="fo">CMake keldukota</comment>
+ <comment xml:lang="fr">code source CMake</comment>
++ <comment xml:lang="fur">codiç sorzint CMake</comment>
+ <comment xml:lang="ga">cód foinseach CMake</comment>
+ <comment xml:lang="gl">código fonte de CMake</comment>
+ <comment xml:lang="he">קוד מקור של CMake</comment>
+@@ -33271,7 +34525,7 @@
+ <comment xml:lang="oc">còde font CMake</comment>
+ <comment xml:lang="pl">Kod źródłowy CMake</comment>
+ <comment xml:lang="pt">código origem CMake</comment>
+- <comment xml:lang="pt_BR">Código-fonte CMake</comment>
++ <comment xml:lang="pt-BR">Código-fonte CMake</comment>
+ <comment xml:lang="ro">Cod sursă CMake</comment>
+ <comment xml:lang="ru">Исходный код CMake</comment>
+ <comment xml:lang="sk">Zdrojový kód CMake</comment>
+@@ -33282,30 +34536,55 @@
+ <comment xml:lang="tr">CMake kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код CMake</comment>
+ <comment xml:lang="vi">Mã nguồn CMake</comment>
+- <comment xml:lang="zh_CN">CMake 源代码</comment>
+- <comment xml:lang="zh_TW">CMake 源碼</comment>
++ <comment xml:lang="zh-CN">CMake 源代码</comment>
++ <comment xml:lang="zh-TW">CMake 源碼</comment>
+ <glob pattern="*.cmake"/>
+ <glob pattern="CMakeLists.txt"/>
+ <sub-class-of type="text/plain"/>
+ </mime-type>
++ <mime-type type="text/x-common-lisp">
++ <comment>Common Lisp source code</comment>
++ <comment xml:lang="ca">codi font en Common Lisp</comment>
++ <comment xml:lang="da">Common Lisp-kildekode</comment>
++ <comment xml:lang="de">Common-Lisp-Quelltext</comment>
++ <comment xml:lang="en-GB">Common Lisp source code</comment>
++ <comment xml:lang="es">código fuente en Common Lisp</comment>
++ <comment xml:lang="fi">Yleinen Lisp-lähdekoodi</comment>
++ <comment xml:lang="fr">code source Common Lisp</comment>
++ <comment xml:lang="hr">Common Lisp izvorni kôd</comment>
++ <comment xml:lang="it">Codice sorgente Common Lisp</comment>
++ <comment xml:lang="pl">Kod źródłowy Common Lisp</comment>
++ <comment xml:lang="pt-BR">Código-fonte Common Lisp</comment>
++ <comment xml:lang="sv">Common Lisp-källkod</comment>
++ <comment xml:lang="uk">вихідний код мовою Common Lisp</comment>
++ <comment xml:lang="zh-CN">Common Lisp 源代码</comment>
++ <comment xml:lang="zh-TW">Common Lisp 源碼</comment>
++ <sub-class-of type="text/plain"/>
++ <glob pattern="*.asd"/>
++ <glob pattern="*.fasl"/>
++ <glob pattern="*.lisp"/>
++ <glob pattern="*.ros"/>
++ </mime-type>
+ <mime-type type="text/csv">
+ <comment>CSV document</comment>
++ <comment xml:lang="af">CSV-dokument</comment>
+ <comment xml:lang="ar">مستند CSV</comment>
+ <comment xml:lang="ast">Documentu CVS</comment>
+- <comment xml:lang="be@latin">Dakument CSV</comment>
++ <comment xml:lang="be-Latn">Dakument CSV</comment>
+ <comment xml:lang="bg">Документ — CSV</comment>
+ <comment xml:lang="ca">document CSV</comment>
+ <comment xml:lang="cs">dokument CSV</comment>
+ <comment xml:lang="da">CSV-dokument</comment>
+ <comment xml:lang="de">CSV-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο CSV</comment>
+- <comment xml:lang="en_GB">CSV document</comment>
++ <comment xml:lang="en-GB">CSV document</comment>
+ <comment xml:lang="eo">CSV-dokumento</comment>
+ <comment xml:lang="es">documento CSV</comment>
+ <comment xml:lang="eu">CSV dokumentua</comment>
+ <comment xml:lang="fi">CSV-asiakirja</comment>
+ <comment xml:lang="fo">CSV skjal</comment>
+ <comment xml:lang="fr">document CSV</comment>
++ <comment xml:lang="fur">document CSV</comment>
+ <comment xml:lang="ga">cáipéis CSV</comment>
+ <comment xml:lang="gl">documento CSV</comment>
+ <comment xml:lang="he">מסמך CSV</comment>
+@@ -33326,7 +34605,7 @@
+ <comment xml:lang="oc">document CSV</comment>
+ <comment xml:lang="pl">Dokument CSV</comment>
+ <comment xml:lang="pt">documento CSV</comment>
+- <comment xml:lang="pt_BR">Documento CSV</comment>
++ <comment xml:lang="pt-BR">Documento CSV</comment>
+ <comment xml:lang="ro">Document CSV</comment>
+ <comment xml:lang="ru">Документ CSV</comment>
+ <comment xml:lang="sk">Dokument CSV</comment>
+@@ -33337,8 +34616,8 @@
+ <comment xml:lang="tr">CSV belgesi</comment>
+ <comment xml:lang="uk">документ CSV</comment>
+ <comment xml:lang="vi">Tài liệu CSV</comment>
+- <comment xml:lang="zh_CN">CSV 文档</comment>
+- <comment xml:lang="zh_TW">CSV 文件</comment>
++ <comment xml:lang="zh-CN">CSV 文档</comment>
++ <comment xml:lang="zh-TW">CSV 文件</comment>
+ <acronym>CSV</acronym>
+ <expanded-acronym>Comma Separated Values</expanded-acronym>
+ <alias type="text/x-comma-separated-values"/>
+@@ -33348,15 +34627,19 @@
+ </mime-type>
+ <mime-type type="text/csv-schema">
+ <comment>CSV Schema document</comment>
++ <comment xml:lang="af">CSV Schema-dokument</comment>
+ <comment xml:lang="ast">Documentu d'esquema CSV</comment>
++ <comment xml:lang="bg">Документ — схема на CSV</comment>
+ <comment xml:lang="ca">document Schema de CSV</comment>
+ <comment xml:lang="cs">dokument schématu CSV</comment>
+ <comment xml:lang="da">CSV Schema-dokument</comment>
+ <comment xml:lang="de">CSV-Schemadokument</comment>
+- <comment xml:lang="en_GB">CSV Schema document</comment>
++ <comment xml:lang="en-GB">CSV Schema document</comment>
+ <comment xml:lang="es">documento esquemático CSV</comment>
+ <comment xml:lang="eu">CSV Schema dokumentua</comment>
++ <comment xml:lang="fi">CSV Schema asiakirja</comment>
+ <comment xml:lang="fr">document schéma CSV</comment>
++ <comment xml:lang="fur">document scheme CSV</comment>
+ <comment xml:lang="ga">cáipéis scéimre CSV</comment>
+ <comment xml:lang="he">מסמך פריסת CSV</comment>
+ <comment xml:lang="hr">CSV Shema dokument</comment>
+@@ -33368,15 +34651,16 @@
+ <comment xml:lang="ko">CSV 스키마 문서</comment>
+ <comment xml:lang="pl">Dokument schematu CSV</comment>
+ <comment xml:lang="pt">documento CSV Schema</comment>
+- <comment xml:lang="pt_BR">Documento CSV Schema</comment>
++ <comment xml:lang="pt-BR">Documento CSV Schema</comment>
+ <comment xml:lang="ru">Документ CSV Schema</comment>
+ <comment xml:lang="sk">Dokument schémy CSV</comment>
++ <comment xml:lang="sl">Dokument CSV Schema</comment>
+ <comment xml:lang="sr">документ ЦСВ шеме</comment>
+ <comment xml:lang="sv">CSV Schema-dokument</comment>
+ <comment xml:lang="tr">CSV Şeması belgesi</comment>
+ <comment xml:lang="uk">документ Schema у форматі CSV</comment>
+- <comment xml:lang="zh_CN">CSV 架构文档</comment>
+- <comment xml:lang="zh_TW">CSV Schema 文件</comment>
++ <comment xml:lang="zh-CN">CSV 架构文档</comment>
++ <comment xml:lang="zh-TW">CSV Schema 文件</comment>
+ <acronym>CSV</acronym>
+ <expanded-acronym>Comma Separated Values</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+@@ -33384,21 +34668,23 @@
+ </mime-type>
+ <mime-type type="text/x-copying">
+ <comment>license terms</comment>
++ <comment xml:lang="af">lisensievoorwaardes</comment>
+ <comment xml:lang="ar">شروط الترخيص</comment>
+ <comment xml:lang="ast">términos de llicencia</comment>
+- <comment xml:lang="be@latin">licenzijnyja ŭmovy</comment>
++ <comment xml:lang="be-Latn">licenzijnyja ŭmovy</comment>
+ <comment xml:lang="bg">Лицензни условия</comment>
+ <comment xml:lang="ca">condicions de llicència</comment>
+ <comment xml:lang="cs">licenční podmínky</comment>
+ <comment xml:lang="da">licensbetingelser</comment>
+ <comment xml:lang="de">Lizenzbedingungen</comment>
+ <comment xml:lang="el">Όροι άδειας</comment>
+- <comment xml:lang="en_GB">licence terms</comment>
++ <comment xml:lang="en-GB">licence terms</comment>
+ <comment xml:lang="es">términos de licencia</comment>
+ <comment xml:lang="eu">lizentzia baldintzak</comment>
+ <comment xml:lang="fi">lisenssiehdot</comment>
+ <comment xml:lang="fo">loyvistreytir</comment>
+ <comment xml:lang="fr">termes de licence</comment>
++ <comment xml:lang="fur">tiermins di licence</comment>
+ <comment xml:lang="ga">téarmaí ceadúnais</comment>
+ <comment xml:lang="gl">termos de licenza</comment>
+ <comment xml:lang="he">תנאי רישיון</comment>
+@@ -33418,7 +34704,7 @@
+ <comment xml:lang="oc">tèrmes de licéncia</comment>
+ <comment xml:lang="pl">Warunki licencji</comment>
+ <comment xml:lang="pt">termos de licença</comment>
+- <comment xml:lang="pt_BR">Termos de licença</comment>
++ <comment xml:lang="pt-BR">Termos de licença</comment>
+ <comment xml:lang="ro">termeni de licență</comment>
+ <comment xml:lang="ru">Лицензионное соглашение</comment>
+ <comment xml:lang="sk">Licenčné podmienky</comment>
+@@ -33429,27 +34715,30 @@
+ <comment xml:lang="tr">lisans koşulları</comment>
+ <comment xml:lang="uk">ліцензійні умови</comment>
+ <comment xml:lang="vi">điều kiện giấy phép</comment>
+- <comment xml:lang="zh_CN">软件许可条款</comment>
+- <comment xml:lang="zh_TW">授權條款</comment>
++ <comment xml:lang="zh-CN">软件许可条款</comment>
++ <comment xml:lang="zh-TW">授權條款</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="COPYING"/>
+ </mime-type>
+ <mime-type type="text/x-credits">
+ <comment>author credits</comment>
++ <comment xml:lang="af">outeurerkenning</comment>
+ <comment xml:lang="ar">شكر وتقدير المؤلف</comment>
+ <comment xml:lang="ast">creitos del autor</comment>
+- <comment xml:lang="be@latin">zasłuhi aŭtara</comment>
++ <comment xml:lang="be-Latn">zasłuhi aŭtara</comment>
+ <comment xml:lang="bg">Благодарности към авторите</comment>
+ <comment xml:lang="ca">atribucions d'autor</comment>
+ <comment xml:lang="cs">autorské zásluhy</comment>
+ <comment xml:lang="da">bidragydere</comment>
+ <comment xml:lang="de">Autorendanksagung</comment>
+ <comment xml:lang="el">Μνεία συγγραφέων</comment>
+- <comment xml:lang="en_GB">author credits</comment>
++ <comment xml:lang="en-GB">author credits</comment>
+ <comment xml:lang="es">reconocimiento de autoría</comment>
++ <comment xml:lang="eu">egile-kredituak</comment>
+ <comment xml:lang="fi">tekijöiden kiitokset</comment>
+ <comment xml:lang="fo">høvundaheiður</comment>
+ <comment xml:lang="fr">remerciements</comment>
++ <comment xml:lang="fur">ricognossiments autôrs</comment>
+ <comment xml:lang="ga">admhálacha údar</comment>
+ <comment xml:lang="gl">créditos de autor</comment>
+ <comment xml:lang="he">קרדיטים של היוצר</comment>
+@@ -33469,7 +34758,7 @@
+ <comment xml:lang="oc">mercejaments</comment>
+ <comment xml:lang="pl">Podziękowania autorów programu</comment>
+ <comment xml:lang="pt">créditos de autor</comment>
+- <comment xml:lang="pt_BR">Créditos do autor</comment>
++ <comment xml:lang="pt-BR">Créditos do autor</comment>
+ <comment xml:lang="ro">mulțumiri autori</comment>
+ <comment xml:lang="ru">Авторы программы</comment>
+ <comment xml:lang="sk">Autorské zásluhy</comment>
+@@ -33480,28 +34769,30 @@
+ <comment xml:lang="tr">yazar bilgileri</comment>
+ <comment xml:lang="uk">подяки авторам програми</comment>
+ <comment xml:lang="vi">công trạng tác giả</comment>
+- <comment xml:lang="zh_CN">软件作者致谢</comment>
+- <comment xml:lang="zh_TW">作者致謝名單</comment>
++ <comment xml:lang="zh-CN">软件作者致谢</comment>
++ <comment xml:lang="zh-TW">作者致謝名單</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="CREDITS"/>
+ </mime-type>
+ <mime-type type="text/x-csrc">
+ <comment>C source code</comment>
++ <comment xml:lang="af">C-bronkode</comment>
+ <comment xml:lang="ar">شفرة مصدر سي</comment>
+- <comment xml:lang="be@latin">Kryničny kod C</comment>
++ <comment xml:lang="be-Latn">Kryničny kod C</comment>
+ <comment xml:lang="bg">Изходен код — C</comment>
+ <comment xml:lang="ca">codi font en C</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce C</comment>
+ <comment xml:lang="da">C-kildekode</comment>
+ <comment xml:lang="de">C-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας C</comment>
+- <comment xml:lang="en_GB">C source code</comment>
++ <comment xml:lang="en-GB">C source code</comment>
+ <comment xml:lang="eo">C-fontkodo</comment>
+ <comment xml:lang="es">código fuente en C</comment>
+ <comment xml:lang="eu">C iturburu-kodea</comment>
+ <comment xml:lang="fi">C-lähdekoodi</comment>
+ <comment xml:lang="fo">C keldukota</comment>
+ <comment xml:lang="fr">code source C</comment>
++ <comment xml:lang="fur">codiç sorzint C</comment>
+ <comment xml:lang="ga">cód foinseach C</comment>
+ <comment xml:lang="gl">código fonte en C</comment>
+ <comment xml:lang="he">קוד מקור של C</comment>
+@@ -33523,7 +34814,7 @@
+ <comment xml:lang="oc">còde font C</comment>
+ <comment xml:lang="pl">Kod źródłowy C</comment>
+ <comment xml:lang="pt">código origem C</comment>
+- <comment xml:lang="pt_BR">Código-fonte C</comment>
++ <comment xml:lang="pt-BR">Código-fonte C</comment>
+ <comment xml:lang="ro">Cod sursă C</comment>
+ <comment xml:lang="ru">Исходный код C</comment>
+ <comment xml:lang="sk">Zdrojový kód jazyka C</comment>
+@@ -33534,34 +34825,36 @@
+ <comment xml:lang="tr">C kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою C</comment>
+ <comment xml:lang="vi">Mã nguồn C</comment>
+- <comment xml:lang="zh_CN">C 源代码</comment>
+- <comment xml:lang="zh_TW">C 源碼</comment>
++ <comment xml:lang="zh-CN">C 源代码</comment>
++ <comment xml:lang="zh-TW">C 源碼</comment>
+ <sub-class-of type="text/plain"/>
+ <alias type="text/x-c"/>
+ <glob pattern="*.c" case-sensitive="true"/>
+ <magic priority="30">
+- <match value="/*" type="string" offset="0"/>
+- <match value="//" type="string" offset="0"/>
+- <match value="#include" type="string" offset="0"/>
++ <match type="string" value="/*" offset="0"/>
++ <match type="string" value="//" offset="0"/>
++ <match type="string" value="#include" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="text/x-csharp">
+ <comment>C# source code</comment>
++ <comment xml:lang="af">C#-bronkode</comment>
+ <comment xml:lang="ar">شفرة مصدر سي#</comment>
+- <comment xml:lang="be@latin">Kryničny kod C#</comment>
++ <comment xml:lang="be-Latn">Kryničny kod C#</comment>
+ <comment xml:lang="bg">Изходен код — C#</comment>
+ <comment xml:lang="ca">codi font en C#</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce C#</comment>
+ <comment xml:lang="da">C#-kildekode</comment>
+ <comment xml:lang="de">C#-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας C#</comment>
+- <comment xml:lang="en_GB">C# source code</comment>
++ <comment xml:lang="en-GB">C# source code</comment>
+ <comment xml:lang="eo">C#-fontkodo</comment>
+ <comment xml:lang="es">código fuente en C#</comment>
+ <comment xml:lang="eu">C# iturburu-kodea</comment>
+ <comment xml:lang="fi">C#-lähdekoodi</comment>
+ <comment xml:lang="fo">C# keldukota</comment>
+ <comment xml:lang="fr">code source C#</comment>
++ <comment xml:lang="fur">codiç sorzint C#</comment>
+ <comment xml:lang="ga">cód foinseach C#</comment>
+ <comment xml:lang="gl">código fonte en C#</comment>
+ <comment xml:lang="he">קוד מקור של C#‎</comment>
+@@ -33583,7 +34876,7 @@
+ <comment xml:lang="oc">còde font C#</comment>
+ <comment xml:lang="pl">Kod źródłowy C#</comment>
+ <comment xml:lang="pt">código origem C#</comment>
+- <comment xml:lang="pt_BR">Código-fonte C#</comment>
++ <comment xml:lang="pt-BR">Código-fonte C#</comment>
+ <comment xml:lang="ro">Cod sursă C#</comment>
+ <comment xml:lang="ru">Исходный код C#</comment>
+ <comment xml:lang="sk">Zdrojový kód jazyka C#</comment>
+@@ -33594,28 +34887,30 @@
+ <comment xml:lang="tr">C# kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою C#</comment>
+ <comment xml:lang="vi">Mã nguồn C#</comment>
+- <comment xml:lang="zh_CN">C# 源代码</comment>
+- <comment xml:lang="zh_TW">C# 源碼</comment>
++ <comment xml:lang="zh-CN">C# 源代码</comment>
++ <comment xml:lang="zh-TW">C# 源碼</comment>
+ <sub-class-of type="text/x-csrc"/>
+ <glob pattern="*.cs"/>
+ </mime-type>
+ <mime-type type="text/x-vala">
+ <comment>Vala source code</comment>
++ <comment xml:lang="af">Vala-bronkode</comment>
+ <comment xml:lang="ar">شفرة مصدر Vala</comment>
+- <comment xml:lang="be@latin">Kryničny kod Vala</comment>
++ <comment xml:lang="be-Latn">Kryničny kod Vala</comment>
+ <comment xml:lang="bg">Изходен код — Vala</comment>
+ <comment xml:lang="ca">codi font en Vala</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce Vala</comment>
+- <comment xml:lang="da">Valakildekode</comment>
++ <comment xml:lang="da">Vala-kildekode</comment>
+ <comment xml:lang="de">Vala-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας Vala</comment>
+- <comment xml:lang="en_GB">Vala source code</comment>
++ <comment xml:lang="en-GB">Vala source code</comment>
+ <comment xml:lang="eo">Vala-fontkodo</comment>
+ <comment xml:lang="es">código fuente en Vala</comment>
+ <comment xml:lang="eu">Vala iturburu-kodea</comment>
+ <comment xml:lang="fi">Vala-lähdekoodi</comment>
+ <comment xml:lang="fo">Vala keldukota</comment>
+ <comment xml:lang="fr">code source Vala</comment>
++ <comment xml:lang="fur">codiç sorzint Vala</comment>
+ <comment xml:lang="ga">cód foinseach Vala</comment>
+ <comment xml:lang="gl">código fonte en Vala</comment>
+ <comment xml:lang="he">קוד מקור של Vala</comment>
+@@ -33635,7 +34930,7 @@
+ <comment xml:lang="oc">còde font Vala</comment>
+ <comment xml:lang="pl">Kod źródłowy Vala</comment>
+ <comment xml:lang="pt">código origem Vala</comment>
+- <comment xml:lang="pt_BR">Código-fonte Vala</comment>
++ <comment xml:lang="pt-BR">Código-fonte Vala</comment>
+ <comment xml:lang="ro">Cod sursă Vala</comment>
+ <comment xml:lang="ru">Исходный код Vala</comment>
+ <comment xml:lang="sk">Zdrojový kód Vala</comment>
+@@ -33646,26 +34941,28 @@
+ <comment xml:lang="tr">Vala kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою Vala</comment>
+ <comment xml:lang="vi">Mã nguồn Vala</comment>
+- <comment xml:lang="zh_CN">Vala 源代码</comment>
+- <comment xml:lang="zh_TW">Vala 源碼</comment>
++ <comment xml:lang="zh-CN">Vala 源代码</comment>
++ <comment xml:lang="zh-TW">Vala 源碼</comment>
+ <sub-class-of type="text/x-csrc"/>
+ <glob pattern="*.vala"/>
+ <glob pattern="*.vapi"/>
+ </mime-type>
+ <mime-type type="text/x-ooc">
+ <comment>OOC source code</comment>
++ <comment xml:lang="af">OOC-bronkode</comment>
+ <comment xml:lang="bg">Изходен код — OOC</comment>
+ <comment xml:lang="ca">codi font en OOC</comment>
+ <comment xml:lang="cs">zdrojový kód OOC</comment>
+ <comment xml:lang="da">OOC-kildekode</comment>
+ <comment xml:lang="de">OOC-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας OOC</comment>
+- <comment xml:lang="en_GB">OOC source code</comment>
++ <comment xml:lang="en-GB">OOC source code</comment>
+ <comment xml:lang="eo">OOC-fontkodo</comment>
+ <comment xml:lang="es">código fuente en OOC</comment>
+ <comment xml:lang="eu">OOC iturburu-kodea</comment>
+ <comment xml:lang="fi">OOC-lähdekoodi</comment>
+ <comment xml:lang="fr">source code OOC</comment>
++ <comment xml:lang="fur">codiç sorzint OOC</comment>
+ <comment xml:lang="ga">cód foinseach OOC</comment>
+ <comment xml:lang="gl">código fonte de OOC</comment>
+ <comment xml:lang="he">קוד מקור של OOC</comment>
+@@ -33683,7 +34980,7 @@
+ <comment xml:lang="oc">font còde OOC</comment>
+ <comment xml:lang="pl">Kod źródłowy OOC</comment>
+ <comment xml:lang="pt">código origem OOC</comment>
+- <comment xml:lang="pt_BR">Código-fonte OOC</comment>
++ <comment xml:lang="pt-BR">Código-fonte OOC</comment>
+ <comment xml:lang="ru">Исходный код OOC</comment>
+ <comment xml:lang="sk">Zdrojový kód OOC</comment>
+ <comment xml:lang="sl">Izvorna koda OOC</comment>
+@@ -33691,8 +34988,8 @@
+ <comment xml:lang="sv">OOC-källkod</comment>
+ <comment xml:lang="tr">OOC kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою OOC</comment>
+- <comment xml:lang="zh_CN">OOC 源代码</comment>
+- <comment xml:lang="zh_TW">OOC 源碼</comment>
++ <comment xml:lang="zh-CN">OOC 源代码</comment>
++ <comment xml:lang="zh-TW">OOC 源碼</comment>
+ <acronym>OOC</acronym>
+ <expanded-acronym>Out Of Class</expanded-acronym>
+ <sub-class-of type="text/x-csrc"/>
+@@ -33700,9 +34997,10 @@
+ </mime-type>
+ <mime-type type="text/x-dcl">
+ <comment>DCL script</comment>
++ <comment xml:lang="af">DCL-skrip</comment>
+ <comment xml:lang="ar">سكربت DCL</comment>
+ <comment xml:lang="az">DCL skripti</comment>
+- <comment xml:lang="be@latin">Skrypt DCL</comment>
++ <comment xml:lang="be-Latn">Skrypt DCL</comment>
+ <comment xml:lang="bg">Скрипт — DCL</comment>
+ <comment xml:lang="ca">script DCL</comment>
+ <comment xml:lang="cs">skript DCL</comment>
+@@ -33710,13 +35008,14 @@
+ <comment xml:lang="da">DCL-program</comment>
+ <comment xml:lang="de">DCL-Skript</comment>
+ <comment xml:lang="el">Δέσμη ενεργειών DCL</comment>
+- <comment xml:lang="en_GB">DCL script</comment>
++ <comment xml:lang="en-GB">DCL script</comment>
+ <comment xml:lang="eo">DCL-skripto</comment>
+ <comment xml:lang="es">secuencia de órdenes en DCL</comment>
+ <comment xml:lang="eu">DCL script-a</comment>
+ <comment xml:lang="fi">DCL-komentotiedosto</comment>
+ <comment xml:lang="fo">DCL boðrøð</comment>
+ <comment xml:lang="fr">script DCL</comment>
++ <comment xml:lang="fur">script DCL</comment>
+ <comment xml:lang="ga">script DCL</comment>
+ <comment xml:lang="gl">script de DCL</comment>
+ <comment xml:lang="he">תסריט DCL</comment>
+@@ -33738,7 +35037,7 @@
+ <comment xml:lang="oc">escript DCL</comment>
+ <comment xml:lang="pl">Skrypt DCL</comment>
+ <comment xml:lang="pt">script DCL</comment>
+- <comment xml:lang="pt_BR">Script DCL</comment>
++ <comment xml:lang="pt-BR">Script DCL</comment>
+ <comment xml:lang="ro">Script DCL</comment>
+ <comment xml:lang="ru">Сценарий DCL</comment>
+ <comment xml:lang="sk">Skript DCL</comment>
+@@ -33749,8 +35048,8 @@
+ <comment xml:lang="tr">DCL betiği</comment>
+ <comment xml:lang="uk">скрипт DCL</comment>
+ <comment xml:lang="vi">Văn lệnh DCL</comment>
+- <comment xml:lang="zh_CN">DCL 脚本</comment>
+- <comment xml:lang="zh_TW">DCL 指令稿</comment>
++ <comment xml:lang="zh-CN">DCL 脚本</comment>
++ <comment xml:lang="zh-TW">DCL 指令稿</comment>
+ <acronym>DCL</acronym>
+ <expanded-acronym>Data Conversion Laboratory</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+@@ -33758,10 +35057,11 @@
+ </mime-type>
+ <mime-type type="text/x-dsl">
+ <comment>DSSSL document</comment>
++ <comment xml:lang="af">DSSSL-dokument</comment>
+ <comment xml:lang="ar">مستند DSSSL</comment>
+ <comment xml:lang="ast">Documentu DSSSL</comment>
+ <comment xml:lang="az">DSSSL sənədi</comment>
+- <comment xml:lang="be@latin">Dakument DSSSL</comment>
++ <comment xml:lang="be-Latn">Dakument DSSSL</comment>
+ <comment xml:lang="bg">Документ — DSSSL</comment>
+ <comment xml:lang="ca">document DSSSL</comment>
+ <comment xml:lang="cs">dokument DSSSL</comment>
+@@ -33769,13 +35069,14 @@
+ <comment xml:lang="da">DSSSL-dokument</comment>
+ <comment xml:lang="de">DSSSL-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο DSSSL</comment>
+- <comment xml:lang="en_GB">DSSSL document</comment>
++ <comment xml:lang="en-GB">DSSSL document</comment>
+ <comment xml:lang="eo">DSSSL-dokumento</comment>
+ <comment xml:lang="es">documento DSSSL</comment>
+ <comment xml:lang="eu">DSSSL dokumentua</comment>
+ <comment xml:lang="fi">DSSSL-asiakirja</comment>
+ <comment xml:lang="fo">DSSSL skjal</comment>
+ <comment xml:lang="fr">document DSSSL</comment>
++ <comment xml:lang="fur">document DSSSL</comment>
+ <comment xml:lang="ga">cáipéis DSSSL</comment>
+ <comment xml:lang="gl">documento DSSSL</comment>
+ <comment xml:lang="he">מסמך DSSSL</comment>
+@@ -33797,7 +35098,7 @@
+ <comment xml:lang="oc">document DSSSL</comment>
+ <comment xml:lang="pl">Dokument DSSSL</comment>
+ <comment xml:lang="pt">documento DSSSL</comment>
+- <comment xml:lang="pt_BR">Documento DSSSL</comment>
++ <comment xml:lang="pt-BR">Documento DSSSL</comment>
+ <comment xml:lang="ro">Document DSSSL</comment>
+ <comment xml:lang="ru">Документ DSSSL</comment>
+ <comment xml:lang="sk">Dokument DSSSL</comment>
+@@ -33808,8 +35109,8 @@
+ <comment xml:lang="tr">DSSSL belgesi</comment>
+ <comment xml:lang="uk">документ DSSSL</comment>
+ <comment xml:lang="vi">Tài liệu DSSSL</comment>
+- <comment xml:lang="zh_CN">DSSSL 文档</comment>
+- <comment xml:lang="zh_TW">DSSSL 文件</comment>
++ <comment xml:lang="zh-CN">DSSSL 文档</comment>
++ <comment xml:lang="zh-TW">DSSSL 文件</comment>
+ <acronym>DSSSL</acronym>
+ <expanded-acronym>Document Style Semantics and Specification Language</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+@@ -33817,21 +35118,23 @@
+ </mime-type>
+ <mime-type type="text/x-dsrc">
+ <comment>D source code</comment>
++ <comment xml:lang="af">D-bronkode</comment>
+ <comment xml:lang="ar">شفرة مصدر D</comment>
+- <comment xml:lang="be@latin">Kryničny kod D</comment>
++ <comment xml:lang="be-Latn">Kryničny kod D</comment>
+ <comment xml:lang="bg">Изходен код — D</comment>
+ <comment xml:lang="ca">codi font en D</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce D</comment>
+ <comment xml:lang="da">D-kildekode</comment>
+ <comment xml:lang="de">D-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας D</comment>
+- <comment xml:lang="en_GB">D source code</comment>
++ <comment xml:lang="en-GB">D source code</comment>
+ <comment xml:lang="eo">D-fontkodo</comment>
+ <comment xml:lang="es">código fuente en D</comment>
+ <comment xml:lang="eu">D iturburu-kodea</comment>
+ <comment xml:lang="fi">D-lähdekoodi</comment>
+ <comment xml:lang="fo">D keldukota</comment>
+ <comment xml:lang="fr">code source D</comment>
++ <comment xml:lang="fur">codiç sorzint D</comment>
+ <comment xml:lang="ga">cód foinseach D</comment>
+ <comment xml:lang="gl">código fonte de D</comment>
+ <comment xml:lang="he">קוד מקור לשפת D</comment>
+@@ -33852,7 +35155,7 @@
+ <comment xml:lang="oc">còde font D</comment>
+ <comment xml:lang="pl">Kod źródłowy D</comment>
+ <comment xml:lang="pt">código origem D</comment>
+- <comment xml:lang="pt_BR">Código-fonte D</comment>
++ <comment xml:lang="pt-BR">Código-fonte D</comment>
+ <comment xml:lang="ro">Cod sursă D</comment>
+ <comment xml:lang="ru">Исходный код D</comment>
+ <comment xml:lang="sk">Zdrojový kód jazyka D</comment>
+@@ -33863,29 +35166,31 @@
+ <comment xml:lang="tr">D kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою D</comment>
+ <comment xml:lang="vi">Mã nguồn D</comment>
+- <comment xml:lang="zh_CN">D 源代码</comment>
+- <comment xml:lang="zh_TW">D 源碼</comment>
++ <comment xml:lang="zh-CN">D 源代码</comment>
++ <comment xml:lang="zh-TW">D 源碼</comment>
+ <sub-class-of type="text/x-csrc"/>
+ <glob pattern="*.d"/>
+ <glob pattern="*.di"/>
+ </mime-type>
+ <mime-type type="application/xml-dtd">
+ <comment>DTD file</comment>
++ <comment xml:lang="af">DTD-lêer</comment>
+ <comment xml:lang="ar">ملف DTD</comment>
+- <comment xml:lang="be@latin">Fajł DTD</comment>
++ <comment xml:lang="be-Latn">Fajł DTD</comment>
+ <comment xml:lang="bg">Документ — DTD</comment>
+ <comment xml:lang="ca">fitxer DTD</comment>
+ <comment xml:lang="cs">soubor DTD</comment>
+ <comment xml:lang="da">DTD-fil</comment>
+ <comment xml:lang="de">DTD-Datei</comment>
+ <comment xml:lang="el">Αρχείο DTD</comment>
+- <comment xml:lang="en_GB">DTD file</comment>
++ <comment xml:lang="en-GB">DTD file</comment>
+ <comment xml:lang="eo">DTD-dosiero</comment>
+ <comment xml:lang="es">archivo DTD</comment>
+ <comment xml:lang="eu">DTD fitxategia</comment>
+ <comment xml:lang="fi">DTD-tiedosto</comment>
+ <comment xml:lang="fo">DTD fíla</comment>
+ <comment xml:lang="fr">fichier DTD</comment>
++ <comment xml:lang="fur">file DTD</comment>
+ <comment xml:lang="ga">comhad DTD</comment>
+ <comment xml:lang="gl">ficheiro DTD</comment>
+ <comment xml:lang="he">מסמך DTD</comment>
+@@ -33906,7 +35211,7 @@
+ <comment xml:lang="oc">fichièr DTD</comment>
+ <comment xml:lang="pl">Plik DTD</comment>
+ <comment xml:lang="pt">ficheiro DTD</comment>
+- <comment xml:lang="pt_BR">Arquivo DTD</comment>
++ <comment xml:lang="pt-BR">Arquivo DTD</comment>
+ <comment xml:lang="ro">Fișier DTD</comment>
+ <comment xml:lang="ru">Файл DTD</comment>
+ <comment xml:lang="sk">Súbor DTD</comment>
+@@ -33917,8 +35222,8 @@
+ <comment xml:lang="tr">DTD dosyası</comment>
+ <comment xml:lang="uk">файл DTD</comment>
+ <comment xml:lang="vi">Tập tin DTD</comment>
+- <comment xml:lang="zh_CN">DTD 文件</comment>
+- <comment xml:lang="zh_TW">DTD 檔</comment>
++ <comment xml:lang="zh-CN">DTD 文件</comment>
++ <comment xml:lang="zh-TW">DTD 檔</comment>
+ <acronym>DTD</acronym>
+ <expanded-acronym>Document Type Definition</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+@@ -33928,21 +35233,23 @@
+ </mime-type>
+ <mime-type type="text/x-eiffel">
+ <comment>Eiffel source code</comment>
++ <comment xml:lang="af">Eiffel-bronkode</comment>
+ <comment xml:lang="ar">شفرة مصدر Eiffel</comment>
+- <comment xml:lang="be@latin">Kryničny kod Eiffel</comment>
++ <comment xml:lang="be-Latn">Kryničny kod Eiffel</comment>
+ <comment xml:lang="bg">Изходен код — Eiffel</comment>
+ <comment xml:lang="ca">codi font en Eiffel</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce Eiffel</comment>
+- <comment xml:lang="da">Eiffelkildekode</comment>
++ <comment xml:lang="da">Eiffel-kildekode</comment>
+ <comment xml:lang="de">Eiffel-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας Eiffel</comment>
+- <comment xml:lang="en_GB">Eiffel source code</comment>
++ <comment xml:lang="en-GB">Eiffel source code</comment>
+ <comment xml:lang="eo">Eiffel-fontkodo</comment>
+ <comment xml:lang="es">código fuente en Eiffel</comment>
+ <comment xml:lang="eu">Eiffel iturburu-kodea</comment>
+ <comment xml:lang="fi">Eiffel-lähdekoodi</comment>
+ <comment xml:lang="fo">Eiffel keldukota</comment>
+ <comment xml:lang="fr">code source Eiffel</comment>
++ <comment xml:lang="fur">codiç sorzint Eiffel</comment>
+ <comment xml:lang="ga">cód foinseach Eiffel</comment>
+ <comment xml:lang="gl">código fone de Eiffel</comment>
+ <comment xml:lang="he">קוד מקור של Eiffel</comment>
+@@ -33963,7 +35270,7 @@
+ <comment xml:lang="oc">còde font Eiffel</comment>
+ <comment xml:lang="pl">Kod źródłowy Eiffel</comment>
+ <comment xml:lang="pt">código origem Eiffel</comment>
+- <comment xml:lang="pt_BR">Código-fonte Eiffel</comment>
++ <comment xml:lang="pt-BR">Código-fonte Eiffel</comment>
+ <comment xml:lang="ro">Cod sursă Eiffel</comment>
+ <comment xml:lang="ru">Исходный код Eiffel</comment>
+ <comment xml:lang="sk">Zdrojový kód Eiffel</comment>
+@@ -33974,17 +35281,18 @@
+ <comment xml:lang="tr">Eiffel kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою Eiffel</comment>
+ <comment xml:lang="vi">Mã nguồn Eiffel</comment>
+- <comment xml:lang="zh_CN">Eiffel 源代码</comment>
+- <comment xml:lang="zh_TW">Eiffel 源碼</comment>
++ <comment xml:lang="zh-CN">Eiffel 源代码</comment>
++ <comment xml:lang="zh-TW">Eiffel 源碼</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.e"/>
+ <glob pattern="*.eif"/>
+ </mime-type>
+ <mime-type type="text/x-emacs-lisp">
+ <comment>Emacs Lisp source code</comment>
++ <comment xml:lang="af">Emacs Lisp-bronkode</comment>
+ <comment xml:lang="ar">شفرة مصدر Emacs Lisp</comment>
+ <comment xml:lang="az">Emacs Lisp mənbə kodu</comment>
+- <comment xml:lang="be@latin">Kryničny kod Emacs Lisp</comment>
++ <comment xml:lang="be-Latn">Kryničny kod Emacs Lisp</comment>
+ <comment xml:lang="bg">Изходен код — Emacs Lisp</comment>
+ <comment xml:lang="ca">codi font en Emacs Lisp</comment>
+ <comment xml:lang="cs">zdrojový kód Emacs Lisp</comment>
+@@ -33992,13 +35300,14 @@
+ <comment xml:lang="da">Emacs Lisp-kildekode</comment>
+ <comment xml:lang="de">Emacs-Lisp-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας Emacs Lisp</comment>
+- <comment xml:lang="en_GB">Emacs Lisp source code</comment>
++ <comment xml:lang="en-GB">Emacs Lisp source code</comment>
+ <comment xml:lang="eo">fontkodo en Emacs Lisp</comment>
+ <comment xml:lang="es">código fuente en Lisp de Emacs</comment>
+ <comment xml:lang="eu">Emacs Lisp iturburu-kodea</comment>
+ <comment xml:lang="fi">Emacs Lisp -lähdekoodi</comment>
+ <comment xml:lang="fo">Emacs Lisp keldukota</comment>
+ <comment xml:lang="fr">code source Emacs Lisp</comment>
++ <comment xml:lang="fur">codiç sorzint Emacs Lisp</comment>
+ <comment xml:lang="ga">cód foinseach Emacs Lisp</comment>
+ <comment xml:lang="gl">código fonte de Emacs Lisp</comment>
+ <comment xml:lang="he">קוד מקור של Emcas Lisp</comment>
+@@ -34018,9 +35327,9 @@
+ <comment xml:lang="nl">Emacs Lisp-broncode</comment>
+ <comment xml:lang="nn">Emacs Lisp kjeldekode</comment>
+ <comment xml:lang="oc">còde font Emacs Lisp</comment>
+- <comment xml:lang="pl">Plik źródłowy Emacs Lisp</comment>
++ <comment xml:lang="pl">Kod źródłowy Emacs Lisp</comment>
+ <comment xml:lang="pt">código origem Emacs Lisp</comment>
+- <comment xml:lang="pt_BR">Código-fonte Lisp do Emacs</comment>
++ <comment xml:lang="pt-BR">Código-fonte Lisp do Emacs</comment>
+ <comment xml:lang="ro">Cod sursă Emacs Lisp</comment>
+ <comment xml:lang="ru">Исходный код Emacs Lisp</comment>
+ <comment xml:lang="sk">Zdrojový kód Emacs Lisp</comment>
+@@ -34031,32 +35340,34 @@
+ <comment xml:lang="tr">Emacs Lisp kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою Emacs Lisp</comment>
+ <comment xml:lang="vi">Mã nguồn Lisp Emacs</comment>
+- <comment xml:lang="zh_CN">Emacs Lisp 源代码</comment>
+- <comment xml:lang="zh_TW">Emacs Lisp 源碼</comment>
++ <comment xml:lang="zh-CN">Emacs Lisp 源代码</comment>
++ <comment xml:lang="zh-TW">Emacs Lisp 源碼</comment>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="\012(" type="string" offset="0"/>
+- <match value=";ELC\023\000\000\000" type="string" offset="0"/>
++ <match type="string" value="\012(" offset="0"/>
++ <match type="string" value=";ELC\023\000\000\000" offset="0"/>
+ </magic>
+ <glob pattern="*.el"/>
+ </mime-type>
+ <mime-type type="text/x-erlang">
+ <comment>Erlang source code</comment>
++ <comment xml:lang="af">Erlang-bronkode</comment>
+ <comment xml:lang="ar">شفرة مصدر Erlang</comment>
+- <comment xml:lang="be@latin">Kryničny kod Erlang</comment>
++ <comment xml:lang="be-Latn">Kryničny kod Erlang</comment>
+ <comment xml:lang="bg">Изходен код — Erlang</comment>
+ <comment xml:lang="ca">codi font en Erlang</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce Erlang</comment>
+- <comment xml:lang="da">Erlangkildekode</comment>
++ <comment xml:lang="da">Erlang-kildekode</comment>
+ <comment xml:lang="de">Erlang-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας Erlang</comment>
+- <comment xml:lang="en_GB">Erlang source code</comment>
++ <comment xml:lang="en-GB">Erlang source code</comment>
+ <comment xml:lang="eo">Erlang-fontkodo</comment>
+ <comment xml:lang="es">código fuente en Erlang</comment>
+ <comment xml:lang="eu">Erlang iturburu-kodea</comment>
+ <comment xml:lang="fi">Erlang-lähdekoodi</comment>
+ <comment xml:lang="fo">Erlang keldukota</comment>
+ <comment xml:lang="fr">code source Erlang</comment>
++ <comment xml:lang="fur">codiç sorzint Erlang</comment>
+ <comment xml:lang="ga">cód foinseach Erlang</comment>
+ <comment xml:lang="gl">código fonte de Erlang</comment>
+ <comment xml:lang="he">קוד מקור של Erlang</comment>
+@@ -34077,7 +35388,7 @@
+ <comment xml:lang="oc">còde font Erlang</comment>
+ <comment xml:lang="pl">Kod źródłowy Erlang</comment>
+ <comment xml:lang="pt">código origem Erlang</comment>
+- <comment xml:lang="pt_BR">Código-fonte Erlang</comment>
++ <comment xml:lang="pt-BR">Código-fonte Erlang</comment>
+ <comment xml:lang="ro">Cod sursă Erlang</comment>
+ <comment xml:lang="ru">Исходный код Erlang</comment>
+ <comment xml:lang="sk">Zdrojový kód Erlang</comment>
+@@ -34088,30 +35399,32 @@
+ <comment xml:lang="tr">Erlang kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою Erlang</comment>
+ <comment xml:lang="vi">Mã nguồn Erlang</comment>
+- <comment xml:lang="zh_CN">Erlang 源代码</comment>
+- <comment xml:lang="zh_TW">Erlang 源碼</comment>
++ <comment xml:lang="zh-CN">Erlang 源代码</comment>
++ <comment xml:lang="zh-TW">Erlang 源碼</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.erl"/>
+ </mime-type>
+ <mime-type type="text/x-fortran">
+ <comment>Fortran source code</comment>
++ <comment xml:lang="af">Fortran-bronkode</comment>
+ <comment xml:lang="ar">شفرة مصدر Fortran</comment>
+ <comment xml:lang="az">Fortran mənbə kodu</comment>
+- <comment xml:lang="be@latin">Kryničny kod Fortran</comment>
++ <comment xml:lang="be-Latn">Kryničny kod Fortran</comment>
+ <comment xml:lang="bg">Изходен код — Fortran</comment>
+ <comment xml:lang="ca">codi font en Fortran</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce Fortran</comment>
+ <comment xml:lang="cy">Ffynhonnell rhaglen FORTRAN</comment>
+- <comment xml:lang="da">Fortrankildekode</comment>
++ <comment xml:lang="da">Fortran-kildekode</comment>
+ <comment xml:lang="de">Fortran-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας Fortran</comment>
+- <comment xml:lang="en_GB">Fortran source code</comment>
++ <comment xml:lang="en-GB">Fortran source code</comment>
+ <comment xml:lang="eo">Fotran-fontkodo</comment>
+ <comment xml:lang="es">código fuente en Fortran</comment>
+ <comment xml:lang="eu">Fortran-en iturburu-kodea</comment>
+ <comment xml:lang="fi">Fortran-lähdekoodi</comment>
+ <comment xml:lang="fo">Fortran keldukota</comment>
+ <comment xml:lang="fr">code source Fortran</comment>
++ <comment xml:lang="fur">codiç sorzint Fortran</comment>
+ <comment xml:lang="ga">cód foinseach Fortran</comment>
+ <comment xml:lang="gl">código fonte de Fortran</comment>
+ <comment xml:lang="he">קוד מקור של Fortran</comment>
+@@ -34133,7 +35446,7 @@
+ <comment xml:lang="oc">còde font Fortran</comment>
+ <comment xml:lang="pl">Kod źródłowy Fortran</comment>
+ <comment xml:lang="pt">código origem Fortran</comment>
+- <comment xml:lang="pt_BR">Código-fonte Fortran</comment>
++ <comment xml:lang="pt-BR">Código-fonte Fortran</comment>
+ <comment xml:lang="ro">Cod sursă Fortran</comment>
+ <comment xml:lang="ru">Исходный код Fortran</comment>
+ <comment xml:lang="sk">Zdrojový kód Fortran</comment>
+@@ -34144,8 +35457,8 @@
+ <comment xml:lang="tr">Fortran kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою Fortran</comment>
+ <comment xml:lang="vi">Mã nguồn Fortran</comment>
+- <comment xml:lang="zh_CN">Fortran 源代码</comment>
+- <comment xml:lang="zh_TW">Fortran 源碼</comment>
++ <comment xml:lang="zh-CN">Fortran 源代码</comment>
++ <comment xml:lang="zh-TW">Fortran 源碼</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.f"/>
+ <glob pattern="*.f90"/>
+@@ -34154,16 +35467,19 @@
+ </mime-type>
+ <mime-type type="text/x-genie">
+ <comment>Genie source code</comment>
+- <comment xml:lang="ca">codi font de Genius</comment>
++ <comment xml:lang="af">Genie-bronkode</comment>
++ <comment xml:lang="bg">Изходен код — Genie</comment>
++ <comment xml:lang="ca">codi font en Genie</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce Genie</comment>
+ <comment xml:lang="da">Genie-kildekode</comment>
+ <comment xml:lang="de">Genie-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας Genie</comment>
+- <comment xml:lang="en_GB">Genie source code</comment>
++ <comment xml:lang="en-GB">Genie source code</comment>
+ <comment xml:lang="es">código fuente en Genie</comment>
+ <comment xml:lang="eu">Genie iturburu-kodea</comment>
+ <comment xml:lang="fi">Genie-lähdekoodi</comment>
+ <comment xml:lang="fr">code source Genie</comment>
++ <comment xml:lang="fur">codiç sorzint Genie</comment>
+ <comment xml:lang="ga">cód foinseach Genie</comment>
+ <comment xml:lang="he">קוד מקור של Genie</comment>
+ <comment xml:lang="hr">Genie izvorni kôd</comment>
+@@ -34176,7 +35492,7 @@
+ <comment xml:lang="oc">còde font Genie</comment>
+ <comment xml:lang="pl">Kod źródłowy Genie</comment>
+ <comment xml:lang="pt">código origem Genie</comment>
+- <comment xml:lang="pt_BR">Código-fonte Genie</comment>
++ <comment xml:lang="pt-BR">Código-fonte Genie</comment>
+ <comment xml:lang="ru">Исходный код Genie</comment>
+ <comment xml:lang="sk">Zdrojový kód Genie</comment>
+ <comment xml:lang="sl">Izvorna koda Genie</comment>
+@@ -34184,30 +35500,32 @@
+ <comment xml:lang="sv">Genie-källkod</comment>
+ <comment xml:lang="tr">Genie kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою Genie</comment>
+- <comment xml:lang="zh_CN">Genie 源代码</comment>
+- <comment xml:lang="zh_TW">Genie 源碼</comment>
++ <comment xml:lang="zh-CN">Genie 源代码</comment>
++ <comment xml:lang="zh-TW">Genie 源碼</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.gs" case-sensitive="true"/>
+ <generic-icon name="text-x-generic"/>
+ </mime-type>
+ <mime-type type="text/x-gettext-translation">
+ <comment>translation file</comment>
++ <comment xml:lang="af">vertaallêer</comment>
+ <comment xml:lang="ar">ملف الترجمة</comment>
+ <comment xml:lang="ast">ficheru de traducción</comment>
+- <comment xml:lang="be@latin">fajł pierakładu</comment>
++ <comment xml:lang="be-Latn">fajł pierakładu</comment>
+ <comment xml:lang="bg">Превод</comment>
+ <comment xml:lang="ca">fitxer de traducció</comment>
+ <comment xml:lang="cs">soubor překladu</comment>
+ <comment xml:lang="da">oversættelsesfil</comment>
+ <comment xml:lang="de">Übersetzungsdatei</comment>
+ <comment xml:lang="el">Αρχείο μετάφρασης</comment>
+- <comment xml:lang="en_GB">translation file</comment>
++ <comment xml:lang="en-GB">translation file</comment>
+ <comment xml:lang="eo">tradukad-dosiero</comment>
+ <comment xml:lang="es">archivo de traducción</comment>
+ <comment xml:lang="eu">itzulpen-fitxategia</comment>
+ <comment xml:lang="fi">käännöstiedosto</comment>
+ <comment xml:lang="fo">týðingarfíla</comment>
+ <comment xml:lang="fr">fichier de traduction</comment>
++ <comment xml:lang="fur">file di traduzion</comment>
+ <comment xml:lang="ga">comhad aistriúcháin</comment>
+ <comment xml:lang="gl">ficheiro de tradución</comment>
+ <comment xml:lang="he">קובץ תרגום</comment>
+@@ -34228,7 +35546,7 @@
+ <comment xml:lang="oc">fichièr de traduccion</comment>
+ <comment xml:lang="pl">Plik tłumaczenia</comment>
+ <comment xml:lang="pt">ficheiro de tradução</comment>
+- <comment xml:lang="pt_BR">Arquivo de tradução</comment>
++ <comment xml:lang="pt-BR">Arquivo de tradução</comment>
+ <comment xml:lang="ro">fișier traducere</comment>
+ <comment xml:lang="ru">Файл переводов</comment>
+ <comment xml:lang="sk">Súbor prekladu</comment>
+@@ -34239,8 +35557,8 @@
+ <comment xml:lang="tr">çeviri dosyası</comment>
+ <comment xml:lang="uk">файл перекладу</comment>
+ <comment xml:lang="vi">tập tin dịch</comment>
+- <comment xml:lang="zh_CN">翻译文件</comment>
+- <comment xml:lang="zh_TW">翻譯檔</comment>
++ <comment xml:lang="zh-CN">翻译文件</comment>
++ <comment xml:lang="zh-TW">翻譯檔</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.po"/>
+ <alias type="text/x-po"/>
+@@ -34248,22 +35566,24 @@
+ </mime-type>
+ <mime-type type="text/x-gettext-translation-template">
+ <comment>translation template</comment>
++ <comment xml:lang="af">vertaalsjabloon</comment>
+ <comment xml:lang="ar">قالب الترجمة</comment>
+ <comment xml:lang="ast">plantía de traducción</comment>
+- <comment xml:lang="be@latin">šablon dla pierakładu</comment>
++ <comment xml:lang="be-Latn">šablon dla pierakładu</comment>
+ <comment xml:lang="bg">Шаблон за преводи</comment>
+ <comment xml:lang="ca">plantilla de traducció</comment>
+ <comment xml:lang="cs">šablona překladu</comment>
+ <comment xml:lang="da">oversættelsesskabelon</comment>
+ <comment xml:lang="de">Übersetzungsvorlage</comment>
+ <comment xml:lang="el">Πρότυπο μετάφρασης</comment>
+- <comment xml:lang="en_GB">translation template</comment>
++ <comment xml:lang="en-GB">translation template</comment>
+ <comment xml:lang="eo">tradukad-ŝablono</comment>
+ <comment xml:lang="es">plantilla de traducción</comment>
+ <comment xml:lang="eu">itzulpenen txantiloia</comment>
+ <comment xml:lang="fi">käännösmalli</comment>
+ <comment xml:lang="fo">týðingarformur</comment>
+ <comment xml:lang="fr">modèle de traduction</comment>
++ <comment xml:lang="fur">model di traduzion</comment>
+ <comment xml:lang="ga">teimpléad aistriúcháin</comment>
+ <comment xml:lang="gl">plantilla de tradución</comment>
+ <comment xml:lang="he">תבנית תרגום</comment>
+@@ -34284,7 +35604,7 @@
+ <comment xml:lang="oc">modèl de traduccion</comment>
+ <comment xml:lang="pl">Szablon tłumaczenia</comment>
+ <comment xml:lang="pt">modelo de tradução</comment>
+- <comment xml:lang="pt_BR">Modelo de tradução</comment>
++ <comment xml:lang="pt-BR">Modelo de tradução</comment>
+ <comment xml:lang="ro">șablon de traducere</comment>
+ <comment xml:lang="ru">Шаблон переводов</comment>
+ <comment xml:lang="sk">Šablóna prekladu</comment>
+@@ -34295,63 +35615,65 @@
+ <comment xml:lang="tr">çeviri şablonu</comment>
+ <comment xml:lang="uk">шаблон перекладу</comment>
+ <comment xml:lang="vi">mẫu dịch</comment>
+- <comment xml:lang="zh_CN">翻译模板</comment>
+- <comment xml:lang="zh_TW">翻譯模版</comment>
++ <comment xml:lang="zh-CN">翻译模板</comment>
++ <comment xml:lang="zh-TW">翻譯模版</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.pot"/>
+ <alias type="text/x-pot"/>
+ <magic priority="50">
+- <match value='#, fuzzy\nmsgid \"\"\nmsgstr \"\"\n\"Project-Id-Version:' type="string" offset="0:256"/>
++ <match type="string" value="#, fuzzy\nmsgid \&quot;\&quot;\nmsgstr \&quot;\&quot;\n\&quot;Project-Id-Version:" offset="0:256"/>
+ </magic>
+ </mime-type>
+ <mime-type type="text/x-gherkin">
+- <comment>feature specification in Gherkin format</comment>
+- <comment xml:lang="ca">especificació de funcionalitat en format Gherkin</comment>
+- <comment xml:lang="cs">specifikace vlastností ve formátu Gherkin</comment>
+- <comment xml:lang="da">funktionspecifikation i Gherkin-format</comment>
+- <comment xml:lang="de">Funktionsspezifikation im Gherkin-Format</comment>
+- <comment xml:lang="en_GB">feature specification in Gherkin format</comment>
+- <comment xml:lang="es">especificación de funcionalidad en formato Gherkin</comment>
+- <comment xml:lang="fr">spécification fonctionnelle au format Gherkin</comment>
+- <comment xml:lang="ga">sonraíocht gnéithe i bhformáid Gherkin</comment>
+- <comment xml:lang="he">פירוט תכונות בתבנית Gherkin</comment>
+- <comment xml:lang="hr">opis značajke u Gherkin formatu</comment>
+- <comment xml:lang="hu">funkcióleírás Gherkin formátumban</comment>
+- <comment xml:lang="id">spesifikasi fitur dalam format Gherkin</comment>
+- <comment xml:lang="it">Specifica di funzionalità in formato Gherkin</comment>
+- <comment xml:lang="kk">Gherkin пішіміндегі функционалды анықтамалар</comment>
+- <comment xml:lang="ko">Gherkin 형식의 기능 명세</comment>
+- <comment xml:lang="pl">Specyfikacja funkcji w formacie Gherkin</comment>
+- <comment xml:lang="pt_BR">Especificação de recurso no formato Gherkin</comment>
+- <comment xml:lang="ru">Функциональные определения в формате Gherkin</comment>
+- <comment xml:lang="sk">Špecifikácia funkcie vo formáte Gherkin</comment>
+- <comment xml:lang="sr">одредба функције у запису Геркина</comment>
+- <comment xml:lang="sv">egenskapsspecifikation i Gherkin-format</comment>
+- <comment xml:lang="tr">Gherkin biçiminde özellik belirtimi</comment>
+- <comment xml:lang="uk">специфікація можливості у форматі Gherkin</comment>
+- <comment xml:lang="zh_CN">Gherkin 格式中的功能规范</comment>
+- <comment xml:lang="zh_TW">Gherkin 格式的特徵規格</comment>
++ <comment>Gherkin document</comment>
++ <comment xml:lang="bg">Документ — Gherkin</comment>
++ <comment xml:lang="ca">document Gherkin</comment>
++ <comment xml:lang="da">Gherkin-dokument</comment>
++ <comment xml:lang="de">Gherkin-Dokument</comment>
++ <comment xml:lang="en-GB">Gherkin document</comment>
++ <comment xml:lang="es">documento de Gherkin</comment>
++ <comment xml:lang="eu">Gherkin dokumentua</comment>
++ <comment xml:lang="fi">Gherkin-asiakirja</comment>
++ <comment xml:lang="fr">document Gherkin</comment>
++ <comment xml:lang="hr">Gherkin dokument</comment>
++ <comment xml:lang="hu">Gherkin dokumentum</comment>
++ <comment xml:lang="id">Dokumen Gherkin</comment>
++ <comment xml:lang="it">Documento Gherkin</comment>
++ <comment xml:lang="kk">Gherkin құжаты</comment>
++ <comment xml:lang="ko">게르킨 문서</comment>
++ <comment xml:lang="pl">Dokument Gherkin</comment>
++ <comment xml:lang="pt-BR">Documento Gherkin</comment>
++ <comment xml:lang="ru">Документ Gherkin</comment>
++ <comment xml:lang="sk">Dokument Gherkin</comment>
++ <comment xml:lang="sl">Dokument Gherkin</comment>
++ <comment xml:lang="sv">Gherkin-dokument</comment>
++ <comment xml:lang="tr">Gherkin belgesi</comment>
++ <comment xml:lang="uk">документ Gherkin</comment>
++ <comment xml:lang="zh-CN">Gherkin 文档</comment>
++ <comment xml:lang="zh-TW">Gherkin 文件</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.feature"/>
+ </mime-type>
+ <mime-type type="text/html">
+ <comment>HTML document</comment>
++ <comment xml:lang="af">HTML-dokument</comment>
+ <comment xml:lang="ar">مستند HTML</comment>
+ <comment xml:lang="ast">Documentu HTML</comment>
+- <comment xml:lang="be@latin">Dakument HTML</comment>
++ <comment xml:lang="be-Latn">Dakument HTML</comment>
+ <comment xml:lang="bg">Документ — HTML</comment>
+ <comment xml:lang="ca">document HTML</comment>
+ <comment xml:lang="cs">dokument HTML</comment>
+ <comment xml:lang="da">HTML-dokument</comment>
+ <comment xml:lang="de">HTML-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο HTML</comment>
+- <comment xml:lang="en_GB">HTML document</comment>
++ <comment xml:lang="en-GB">HTML document</comment>
+ <comment xml:lang="eo">HTML-dokumento</comment>
+ <comment xml:lang="es">documento HTML</comment>
+ <comment xml:lang="eu">HTML dokumentua</comment>
+ <comment xml:lang="fi">HTML-asiakirja</comment>
+ <comment xml:lang="fo">HTML skjal</comment>
+ <comment xml:lang="fr">document HTML</comment>
++ <comment xml:lang="fur">document HTML</comment>
+ <comment xml:lang="ga">cáipéis HTML</comment>
+ <comment xml:lang="gl">documento HTML</comment>
+ <comment xml:lang="he">מסמך HTML</comment>
+@@ -34371,7 +35693,7 @@
+ <comment xml:lang="oc">document HTML</comment>
+ <comment xml:lang="pl">Dokument HTML</comment>
+ <comment xml:lang="pt">documento HTML</comment>
+- <comment xml:lang="pt_BR">Documento HTML</comment>
++ <comment xml:lang="pt-BR">Documento HTML</comment>
+ <comment xml:lang="ro">Document HTML</comment>
+ <comment xml:lang="ru">Документ HTML</comment>
+ <comment xml:lang="sk">Dokument HTML</comment>
+@@ -34382,161 +35704,122 @@
+ <comment xml:lang="tr">HTML belgesi</comment>
+ <comment xml:lang="uk">документ HTML</comment>
+ <comment xml:lang="vi">Tài liệu HTML</comment>
+- <comment xml:lang="zh_CN">HTML 文档</comment>
+- <comment xml:lang="zh_TW">HTML 文件</comment>
++ <comment xml:lang="zh-CN">HTML 文档</comment>
++ <comment xml:lang="zh-TW">HTML 文件</comment>
+ <acronym>HTML</acronym>
+ <expanded-acronym>HyperText Markup Language</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="&lt;!DOCTYPE HTML" type="string" offset="0:256"/>
+- <match value="&lt;!doctype html" type="string" offset="0:256"/>
+- <match value="&lt;HEAD" type="string" offset="0:256"/>
+- <match value="&lt;head" type="string" offset="0:256"/>
+- <match value="&lt;TITLE" type="string" offset="0:256"/>
+- <match value="&lt;title" type="string" offset="0:256"/>
+- <match value="&lt;HTML" type="string" offset="0:256"/>
+- <match value="&lt;html" type="string" offset="0:256"/>
+- <match value="&lt;SCRIPT" type="string" offset="0:256"/>
+- <match value="&lt;script" type="string" offset="0:256"/>
+- <match value="&lt;BODY" type="string" offset="0"/>
+- <match value="&lt;body" type="string" offset="0"/>
+- <match value="&lt;!--" type="string" offset="0"/>
+- <match value="&lt;h1" type="string" offset="0"/>
+- <match value="&lt;H1" type="string" offset="0"/>
+- <match value="&lt;!doctype HTML" type="string" offset="0"/>
+- <match value="&lt;!DOCTYPE html" type="string" offset="0"/>
++ <match type="string" value="&lt;!DOCTYPE HTML" offset="0:256"/>
++ <match type="string" value="&lt;!doctype html" offset="0:256"/>
++ <match type="string" value="&lt;!DOCTYPE html" offset="0:256"/>
++ <match type="string" value="&lt;HEAD" offset="0:256"/>
++ <match type="string" value="&lt;head" offset="0:256"/>
++ <match type="string" value="&lt;HTML" offset="0:256"/>
++ <match type="string" value="&lt;html" offset="0:256"/>
++ <match type="string" value="&lt;SCRIPT" offset="0:256"/>
++ <match type="string" value="&lt;script" offset="0:256"/>
++ <match type="string" value="&lt;BODY" offset="0"/>
++ <match type="string" value="&lt;body" offset="0"/>
++ <match type="string" value="&lt;h1" offset="0"/>
++ <match type="string" value="&lt;H1" offset="0"/>
++ <match type="string" value="&lt;!doctype HTML" offset="0"/>
+ </magic>
+- <glob pattern="*.html"/>
+- <glob pattern="*.htm"/>
++ <magic priority="40">
++ <match type="string" value="&lt;!--" offset="0"/>
++ <match type="string" value="&lt;TITLE" offset="0:256"/>
++ <match type="string" value="&lt;title" offset="0:256"/>
++ </magic>
++ <glob pattern="*.html" weight="80"/>
++ <glob pattern="*.htm" weight="80"/>
+ </mime-type>
+ <mime-type type="text/cache-manifest">
+- <comment>Web application cache manifest</comment>
+- <comment xml:lang="ar">قائمة التخزين الموقت لتطبيق الويب</comment>
+- <comment xml:lang="bg">Манифест за кеша на уеб приложение</comment>
+- <comment xml:lang="ca">manifest de memòria cau d'aplicació Web</comment>
+- <comment xml:lang="cs">manifest mezipaměti webové aplikace</comment>
+- <comment xml:lang="da">Manifest for internetprogrammellemlager</comment>
+- <comment xml:lang="de">Webanwendungscache-Manifest</comment>
+- <comment xml:lang="el">Δηλωτικό λανθάνουσας μνήμης εφαρμογής Ιστού</comment>
+- <comment xml:lang="en_GB">Web application cache manifest</comment>
+- <comment xml:lang="es">manifiesto de antememoria de aplicación web</comment>
+- <comment xml:lang="eu">Web aplikazioaren cache-aren agiria</comment>
+- <comment xml:lang="fo">Net nýtsluskipanarkova manifest</comment>
+- <comment xml:lang="fr">manifeste de cache d'application Web</comment>
+- <comment xml:lang="ga">lastliosta taisce d'fheidhmchlár Gréasáin</comment>
+- <comment xml:lang="gl">manifesto de caché de aplicativo web</comment>
+- <comment xml:lang="he">הצהרה של מטמון של תוכנית ברשת</comment>
+- <comment xml:lang="hr">Web aplikacija prikaza predmemorije</comment>
+- <comment xml:lang="hu">Webalkalmazás gyorsítótár-összefoglalója</comment>
+- <comment xml:lang="ia">Manifesto de cache de application web</comment>
+- <comment xml:lang="id">Manifes singgahan aplikasi web</comment>
+- <comment xml:lang="it">Manifesto cache applicazione Web</comment>
+- <comment xml:lang="ja">Web アプリケーションキャッシュ manifest</comment>
+- <comment xml:lang="kk">Веб қолданбасының кэш манифесті</comment>
+- <comment xml:lang="ko">웹 애플리케이션 캐시 정의</comment>
+- <comment xml:lang="lt">Žiniatinklio programos podėlio manifestas</comment>
+- <comment xml:lang="lv">Tīmekļa lietotņu keša manifests</comment>
+- <comment xml:lang="nl">Webapplicatie cache manifest</comment>
+- <comment xml:lang="oc">manifèste d'escondedor d'aplicacion Web</comment>
+- <comment xml:lang="pl">Manifest pamięci podręcznej aplikacji WWW</comment>
+- <comment xml:lang="pt">manifesto de cache de aplicação web</comment>
+- <comment xml:lang="pt_BR">Manifest de cache de aplicação web</comment>
+- <comment xml:lang="ro">Manifest de cache pentru aplicații web</comment>
+- <comment xml:lang="ru">Манифест кэша веб-приложения</comment>
+- <comment xml:lang="sk">Manifest vyrovnávacej pamäte webovej aplikácie</comment>
+- <comment xml:lang="sl">Predpomnilnik spletnega programa</comment>
+- <comment xml:lang="sr">проглас оставе Веб програма</comment>
+- <comment xml:lang="sv">Cachemanifest för webbapplikation</comment>
+- <comment xml:lang="tr">Web uygulama önbelleği bildirimi</comment>
+- <comment xml:lang="uk">маніфест кешу веб-програми</comment>
+- <comment xml:lang="zh_CN">网络应用程序缓存清单</comment>
+- <comment xml:lang="zh_TW">網頁應用程式快取聲明</comment>
++ <comment>Web application cache file</comment>
++ <comment xml:lang="bg">Кеш — уеб приложение</comment>
++ <comment xml:lang="ca">fitxer de memòria cau d'aplicació Web</comment>
++ <comment xml:lang="da">Webprogrammellemlagerfil</comment>
++ <comment xml:lang="de">Webanwendungscache-Datei</comment>
++ <comment xml:lang="en-GB">Web application cache file</comment>
++ <comment xml:lang="es">archivo de antememoria de aplicación web</comment>
++ <comment xml:lang="eu">Web-aplikazio katxe fitxategia</comment>
++ <comment xml:lang="fi">Web-sovelluksen välimuistitiedosto</comment>
++ <comment xml:lang="fr">fichier de cache d'application Web</comment>
++ <comment xml:lang="hr"> Web aplikacija datoteka predmemorije </comment>
++ <comment xml:lang="hu">Webalkalmazás gyorsítótárfájl</comment>
++ <comment xml:lang="id">Berkas singgahan aplikasi web</comment>
++ <comment xml:lang="it">File cache applicazione Web</comment>
++ <comment xml:lang="kk">Веб қолданбасының кэш файлы</comment>
++ <comment xml:lang="ko">웹 애플리케이션 캐시 파일</comment>
++ <comment xml:lang="pl">Plik pamięci podręcznej aplikacji WWW</comment>
++ <comment xml:lang="pt-BR">Arquivo de cache de aplicativo Web</comment>
++ <comment xml:lang="ru">Файл кэша веб-приложения</comment>
++ <comment xml:lang="sv">Webbapplikation cachefil</comment>
++ <comment xml:lang="tr">Web uygulama önbellek dosyası</comment>
++ <comment xml:lang="uk">файл кешу вебпрограми</comment>
++ <comment xml:lang="zh-CN">Web 应用缓存文件</comment>
+ <sub-class-of type="text/plain"/>
+ <magic>
+- <match value="CACHE MANIFEST" type="string" offset="0">
+- <match value="\x20" type="string" offset="14"/>
+- <match value="\x09" type="string" offset="14"/>
+- <match value="\x0a" type="string" offset="14"/>
+- <match value="\x0d" type="string" offset="14"/>
++ <match type="string" value="CACHE MANIFEST" offset="0">
++ <match type="string" value="\x20" offset="14"/>
++ <match type="string" value="\x09" offset="14"/>
++ <match type="string" value="\x0a" offset="14"/>
++ <match type="string" value="\x0d" offset="14"/>
+ </match>
+ </magic>
+ <glob pattern="*.manifest"/>
+ </mime-type>
+ <mime-type type="text/x-google-video-pointer">
+- <comment>Google Video Pointer</comment>
+- <comment xml:lang="ar">مؤشر فيديو جوجل</comment>
+- <comment xml:lang="ast">Google Video Pointer</comment>
+- <comment xml:lang="be@latin">Pakazalnik Google Video</comment>
+- <comment xml:lang="bg">Документ-указател към видео на Google</comment>
+- <comment xml:lang="ca">apuntador a vídeo de Google</comment>
+- <comment xml:lang="cs">Google Video Pointer</comment>
+- <comment xml:lang="da">Google Video-peger</comment>
+- <comment xml:lang="de">Google Video-Zeiger</comment>
+- <comment xml:lang="el">Google Video Pointer</comment>
+- <comment xml:lang="en_GB">Google Video Pointer</comment>
+- <comment xml:lang="es">lista de reproducción de Google Video (GVP)</comment>
+- <comment xml:lang="eu">Google Video-ren erreprodukzio-zerrenda</comment>
+- <comment xml:lang="fi">Google-video-osoitin</comment>
+- <comment xml:lang="fo">Google Video Pointer</comment>
+- <comment xml:lang="fr">pointeur vidéo Google</comment>
+- <comment xml:lang="ga">pointeoir Google Video</comment>
+- <comment xml:lang="gl">punteiro de vídeo de Google</comment>
+- <comment xml:lang="he">מצביע וידאו של Google</comment>
+- <comment xml:lang="hr">Google Video pretraživač</comment>
+- <comment xml:lang="hu">Google Video Pointer</comment>
+- <comment xml:lang="ia">Punctator Google Video</comment>
+- <comment xml:lang="id">Google Video Pointer</comment>
+- <comment xml:lang="it">Puntatore Google Video</comment>
+- <comment xml:lang="ja">Google ビデオポインター</comment>
+- <comment xml:lang="kk">Google Video Pointer</comment>
+- <comment xml:lang="ko">Google 동영상 포인터</comment>
+- <comment xml:lang="lt">Google Video Pointer</comment>
+- <comment xml:lang="lv">Google Video Pointer</comment>
+- <comment xml:lang="nb">Peker til Google Video</comment>
+- <comment xml:lang="nl">Google-videoverwijzing</comment>
+- <comment xml:lang="nn">Google Video-peikar</comment>
+- <comment xml:lang="oc">puntador vidèo Google</comment>
+- <comment xml:lang="pl">Lista odtwarzania Google Video</comment>
+- <comment xml:lang="pt">Ponteiro Google Video</comment>
+- <comment xml:lang="pt_BR">Ponteiro do Google Vídeo</comment>
+- <comment xml:lang="ro">Indicator Google Video</comment>
+- <comment xml:lang="ru">Google Video Pointer</comment>
+- <comment xml:lang="sk">Google Video Pointer</comment>
+- <comment xml:lang="sl">Kazalec Google Video</comment>
+- <comment xml:lang="sq">Puntues Google Video</comment>
+- <comment xml:lang="sr">Гуглов видео показивач</comment>
+- <comment xml:lang="sv">Google Video-pekare</comment>
+- <comment xml:lang="tr">Google Video İşaretçisi</comment>
+- <comment xml:lang="uk">вказівник відео Google</comment>
+- <comment xml:lang="vi">Con trỏ ảnh động Google</comment>
+- <comment xml:lang="zh_CN">Google 视频指向</comment>
+- <comment xml:lang="zh_TW">Google Video Pointer</comment>
+- <magic priority="50">
+- <match value="#.download.the.free.Google.Video.Player" type="string" offset="0"/>
+- <match value="# download the free Google Video Player" type="string" offset="0"/>
++ <comment>Google Video Pointer shortcut</comment>
++ <comment xml:lang="bg">Отметка — Google Video</comment>
++ <comment xml:lang="ca">drecera d'apuntador a vídeo de Google</comment>
++ <comment xml:lang="da">Google Video Pointer-genvej</comment>
++ <comment xml:lang="de">Google-Video-Zeigerverweis</comment>
++ <comment xml:lang="en-GB">Google Video Pointer shortcut</comment>
++ <comment xml:lang="es">atajo de Google Video Pointer</comment>
++ <comment xml:lang="eu">Google Video Pointer lasterbidea</comment>
++ <comment xml:lang="fi">Google Video Pointer -pikakuvake</comment>
++ <comment xml:lang="fr">raccourci de pointeur vidéo Google</comment>
++ <comment xml:lang="hr">Google Video pretraživač prečac</comment>
++ <comment xml:lang="hu">Google Video Pointer parancsikon</comment>
++ <comment xml:lang="id">Pintasan Google Video Pointer</comment>
++ <comment xml:lang="it">Scorciatoia Google Video Pointer</comment>
++ <comment xml:lang="kk">Google Video Pointer жарлығы</comment>
++ <comment xml:lang="ko">구글 동영상 포인터 바로 가기</comment>
++ <comment xml:lang="pl">Skrót listy odtwarzania Google Video</comment>
++ <comment xml:lang="pt-BR">Atalho do Google Video Pointer</comment>
++ <comment xml:lang="ru">Ссылка Google Video Pointer</comment>
++ <comment xml:lang="sv">Google Video Pointer-genväg</comment>
++ <comment xml:lang="tr">Google Video Pointer kısayolu</comment>
++ <comment xml:lang="uk">скорочення вказівника відео Google</comment>
++ <comment xml:lang="zh-CN">Google Video Pointer 快捷方式</comment>
++ <magic priority="50">
++ <match type="string" value="#.download.the.free.Google.Video.Player" offset="0"/>
++ <match type="string" value="# download the free Google Video Player" offset="0"/>
+ </magic>
+ <glob pattern="*.gvp"/>
+ <alias type="text/google-video-pointer"/>
+ </mime-type>
+ <mime-type type="text/x-haskell">
+ <comment>Haskell source code</comment>
++ <comment xml:lang="af">Haskell-bronkode</comment>
+ <comment xml:lang="ar">شفرة مصدر Haskell</comment>
+ <comment xml:lang="az">Haskell mənbə kodu</comment>
+- <comment xml:lang="be@latin">Kryničny kod Haskell</comment>
+- <comment xml:lang="bg">Изходен код на Haskell</comment>
++ <comment xml:lang="be-Latn">Kryničny kod Haskell</comment>
++ <comment xml:lang="bg">Изходен код — Haskell</comment>
+ <comment xml:lang="ca">codi font en Haskell</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce Haskell</comment>
+ <comment xml:lang="cy">Ffynhonnell rhaglen Haskell</comment>
+- <comment xml:lang="da">Haskellkildekode</comment>
++ <comment xml:lang="da">Haskell-kildekode</comment>
+ <comment xml:lang="de">Haskell-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας Haskell</comment>
+- <comment xml:lang="en_GB">Haskell source code</comment>
++ <comment xml:lang="en-GB">Haskell source code</comment>
+ <comment xml:lang="eo">Haskell-fontkodo</comment>
+ <comment xml:lang="es">código fuente en Haskell</comment>
+ <comment xml:lang="eu">Haskell iturburu-kodea</comment>
+ <comment xml:lang="fi">Haskell-lähdekoodi</comment>
+ <comment xml:lang="fo">Haskell keldukota</comment>
+ <comment xml:lang="fr">code source Haskell</comment>
++ <comment xml:lang="fur">codiç sorzint Haskell</comment>
+ <comment xml:lang="ga">cód foinseach Haskell</comment>
+ <comment xml:lang="gl">código fonte de Haskell</comment>
+ <comment xml:lang="he">קוד מקור של Haskell</comment>
+@@ -34557,7 +35840,7 @@
+ <comment xml:lang="oc">còde font Haskell</comment>
+ <comment xml:lang="pl">Kod źródłowy Haskell</comment>
+ <comment xml:lang="pt">código origem Haskell</comment>
+- <comment xml:lang="pt_BR">Código-fonte Haskell</comment>
++ <comment xml:lang="pt-BR">Código-fonte Haskell</comment>
+ <comment xml:lang="ro">Cod sursă Haskell</comment>
+ <comment xml:lang="ru">Исходный код Haskell</comment>
+ <comment xml:lang="sk">Zdrojový kód Haskell</comment>
+@@ -34568,17 +35851,18 @@
+ <comment xml:lang="tr">Haskell kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою Haskell</comment>
+ <comment xml:lang="vi">Mã nguồn Haskell</comment>
+- <comment xml:lang="zh_CN">Haskell 源代码</comment>
+- <comment xml:lang="zh_TW">Haskell 源碼</comment>
++ <comment xml:lang="zh-CN">Haskell 源代码</comment>
++ <comment xml:lang="zh-TW">Haskell 源碼</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.hs"/>
+ </mime-type>
+ <mime-type type="text/x-idl">
+ <comment>IDL document</comment>
++ <comment xml:lang="af">IDL-dokument</comment>
+ <comment xml:lang="ar">مستند IDL</comment>
+ <comment xml:lang="ast">Documentu IDL</comment>
+ <comment xml:lang="az">IDL sənədi</comment>
+- <comment xml:lang="be@latin">Dakument IDL</comment>
++ <comment xml:lang="be-Latn">Dakument IDL</comment>
+ <comment xml:lang="bg">Документ — IDL</comment>
+ <comment xml:lang="ca">document IDL</comment>
+ <comment xml:lang="cs">dokument IDL</comment>
+@@ -34586,13 +35870,14 @@
+ <comment xml:lang="da">IDL-dokument</comment>
+ <comment xml:lang="de">IDL-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο IDL</comment>
+- <comment xml:lang="en_GB">IDL document</comment>
++ <comment xml:lang="en-GB">IDL document</comment>
+ <comment xml:lang="eo">IDL-dokumento</comment>
+ <comment xml:lang="es">documento IDL</comment>
+ <comment xml:lang="eu">IDL dokumentua</comment>
+ <comment xml:lang="fi">IDL-asiakirja</comment>
+ <comment xml:lang="fo">IDL skjal</comment>
+ <comment xml:lang="fr">document IDL</comment>
++ <comment xml:lang="fur">document IDL</comment>
+ <comment xml:lang="ga">cáipéis IDL</comment>
+ <comment xml:lang="gl">documento IDL</comment>
+ <comment xml:lang="he">מסמך IDL</comment>
+@@ -34613,7 +35898,7 @@
+ <comment xml:lang="oc">document IDL</comment>
+ <comment xml:lang="pl">Dokument IDL</comment>
+ <comment xml:lang="pt">documento IDL</comment>
+- <comment xml:lang="pt_BR">Documento IDL</comment>
++ <comment xml:lang="pt-BR">Documento IDL</comment>
+ <comment xml:lang="ro">Document IDL</comment>
+ <comment xml:lang="ru">Документ IDL</comment>
+ <comment xml:lang="sk">Dokument IDL</comment>
+@@ -34624,8 +35909,8 @@
+ <comment xml:lang="tr">IDL belgesi</comment>
+ <comment xml:lang="uk">документ IDL</comment>
+ <comment xml:lang="vi">Tài liệu IDL</comment>
+- <comment xml:lang="zh_CN">IDL 文档</comment>
+- <comment xml:lang="zh_TW">IDL 文件</comment>
++ <comment xml:lang="zh-CN">IDL 文档</comment>
++ <comment xml:lang="zh-TW">IDL 文件</comment>
+ <acronym>IDL</acronym>
+ <expanded-acronym>Interface Definition Language</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+@@ -34633,21 +35918,23 @@
+ </mime-type>
+ <mime-type type="text/x-install">
+ <comment>installation instructions</comment>
++ <comment xml:lang="af">installasie-instruksies</comment>
+ <comment xml:lang="ar">تعليمات التثبيت</comment>
+ <comment xml:lang="ast">instrucciones d'instalación</comment>
+- <comment xml:lang="be@latin">instrukcyja dla instalavańnia</comment>
++ <comment xml:lang="be-Latn">instrukcyja dla instalavańnia</comment>
+ <comment xml:lang="bg">Инструкции за инсталация</comment>
+ <comment xml:lang="ca">instruccions d'instal·lació</comment>
+ <comment xml:lang="cs">návod k instalaci</comment>
+ <comment xml:lang="da">installationsinstruktioner</comment>
+ <comment xml:lang="de">Installationsanleitung</comment>
+ <comment xml:lang="el">Οδηγίες εγκατάστασης</comment>
+- <comment xml:lang="en_GB">installation instructions</comment>
++ <comment xml:lang="en-GB">installation instructions</comment>
+ <comment xml:lang="es">instrucciones de instalación</comment>
+ <comment xml:lang="eu">instalazioaren instrukzioak</comment>
+ <comment xml:lang="fi">asennusohjeet</comment>
+ <comment xml:lang="fo">innleggingar vegleiðing</comment>
+ <comment xml:lang="fr">instructions d'installation</comment>
++ <comment xml:lang="fur">istruzions di instalazion</comment>
+ <comment xml:lang="ga">treoracha suiteála</comment>
+ <comment xml:lang="gl">instrucións de instalación</comment>
+ <comment xml:lang="he">הוראות התקנה</comment>
+@@ -34667,7 +35954,7 @@
+ <comment xml:lang="oc">instructions d'installacion</comment>
+ <comment xml:lang="pl">Instrukcje instalacji</comment>
+ <comment xml:lang="pt">instruções de instalação</comment>
+- <comment xml:lang="pt_BR">Instruções de instalação</comment>
++ <comment xml:lang="pt-BR">Instruções de instalação</comment>
+ <comment xml:lang="ro">instrucțiuni de instalare</comment>
+ <comment xml:lang="ru">Инструкции по установке</comment>
+ <comment xml:lang="sk">Návod na inštaláciu</comment>
+@@ -34678,28 +35965,30 @@
+ <comment xml:lang="tr">kurulum yönergeleri</comment>
+ <comment xml:lang="uk">інструкції з встановлення</comment>
+ <comment xml:lang="vi">hướng dẫn cài đặt</comment>
+- <comment xml:lang="zh_CN">软件安装指南</comment>
+- <comment xml:lang="zh_TW">安裝指引</comment>
++ <comment xml:lang="zh-CN">软件安装指南</comment>
++ <comment xml:lang="zh-TW">安裝指引</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="INSTALL"/>
+ </mime-type>
+ <mime-type type="text/x-java">
+ <comment>Java source code</comment>
++ <comment xml:lang="af">Java-bronkode</comment>
+ <comment xml:lang="ar">شفرة مصدر Java</comment>
+- <comment xml:lang="be@latin">Kryničny kod Java</comment>
+- <comment xml:lang="bg">Изходен код на Java</comment>
++ <comment xml:lang="be-Latn">Kryničny kod Java</comment>
++ <comment xml:lang="bg">Изходен код — Java</comment>
+ <comment xml:lang="ca">codi font en Java</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce Java</comment>
+- <comment xml:lang="da">Javakildekode</comment>
++ <comment xml:lang="da">Java-kildekode</comment>
+ <comment xml:lang="de">Java-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας Java</comment>
+- <comment xml:lang="en_GB">Java source code</comment>
++ <comment xml:lang="en-GB">Java source code</comment>
+ <comment xml:lang="eo">Java-fontkodo</comment>
+ <comment xml:lang="es">código fuente en Java</comment>
+ <comment xml:lang="eu">Java iturburu-kodea</comment>
+ <comment xml:lang="fi">Java-lähdekoodi</comment>
+ <comment xml:lang="fo">Java keldukota</comment>
+ <comment xml:lang="fr">code source Java</comment>
++ <comment xml:lang="fur">codiç sorzint Java</comment>
+ <comment xml:lang="ga">cód foinseach Java</comment>
+ <comment xml:lang="gl">código fonte de Java</comment>
+ <comment xml:lang="he">קוד מקור ב־Java</comment>
+@@ -34720,7 +36009,7 @@
+ <comment xml:lang="oc">còde font Java</comment>
+ <comment xml:lang="pl">Kod źródłowy Java</comment>
+ <comment xml:lang="pt">código origem Java</comment>
+- <comment xml:lang="pt_BR">Código-fonte Java</comment>
++ <comment xml:lang="pt-BR">Código-fonte Java</comment>
+ <comment xml:lang="ro">Cod sursă Java</comment>
+ <comment xml:lang="ru">Исходный код Java</comment>
+ <comment xml:lang="sk">Zdrojový kód Java</comment>
+@@ -34731,28 +36020,30 @@
+ <comment xml:lang="tr">Java kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою Java</comment>
+ <comment xml:lang="vi">Mã nguồn Java</comment>
+- <comment xml:lang="zh_CN">Java 源代码</comment>
+- <comment xml:lang="zh_TW">Java 源碼</comment>
++ <comment xml:lang="zh-CN">Java 源代码</comment>
++ <comment xml:lang="zh-TW">Java 源碼</comment>
+ <sub-class-of type="text/x-csrc"/>
+ <glob pattern="*.java"/>
+ </mime-type>
+ <mime-type type="text/x-ldif">
+ <comment>LDIF address book</comment>
++ <comment xml:lang="af">LDIF-adresboek</comment>
+ <comment xml:lang="ar">دفتر عناوين LDIF</comment>
+- <comment xml:lang="be@latin">Adrasnaja kniha LDIF</comment>
++ <comment xml:lang="be-Latn">Adrasnaja kniha LDIF</comment>
+ <comment xml:lang="bg">Адресна книга — LDIF</comment>
+ <comment xml:lang="ca">llibreta d'adreces LDIF</comment>
+ <comment xml:lang="cs">adresář LDIF</comment>
+ <comment xml:lang="da">LDIF-adressebog</comment>
+ <comment xml:lang="de">LDIF-Adressbuch</comment>
+ <comment xml:lang="el">Βιβλίο διευθύνσεων LDIF</comment>
+- <comment xml:lang="en_GB">LDIF address book</comment>
++ <comment xml:lang="en-GB">LDIF address book</comment>
+ <comment xml:lang="eo">LDIF-adresaro</comment>
+ <comment xml:lang="es">libreta de direcciones LDIF</comment>
+ <comment xml:lang="eu">LDIF helbide-liburua</comment>
+ <comment xml:lang="fi">LDIF-osoitekirja</comment>
+ <comment xml:lang="fo">LDIF adressubók</comment>
+ <comment xml:lang="fr">carnet d'adresses LDIF</comment>
++ <comment xml:lang="fur">rubriche LDIF</comment>
+ <comment xml:lang="ga">leabhar seoltaí LDIF</comment>
+ <comment xml:lang="gl">lista de enderezos LDIF</comment>
+ <comment xml:lang="he">ספר כתובות של LDIF</comment>
+@@ -34772,7 +36063,7 @@
+ <comment xml:lang="oc">quasernet d'adreças LDIF</comment>
+ <comment xml:lang="pl">Książka adresowa LDIF</comment>
+ <comment xml:lang="pt">livro de endereços LDIF</comment>
+- <comment xml:lang="pt_BR">Livro de endereços LDIF</comment>
++ <comment xml:lang="pt-BR">Livro de endereços LDIF</comment>
+ <comment xml:lang="ro">Agendă LDIF</comment>
+ <comment xml:lang="ru">Адресная книга LDIF</comment>
+ <comment xml:lang="sk">Adresár LDIF</comment>
+@@ -34783,33 +36074,35 @@
+ <comment xml:lang="tr">LDIF adres defteri</comment>
+ <comment xml:lang="uk">адресна книга LDIF</comment>
+ <comment xml:lang="vi">Sổ địa chỉ LDIF</comment>
+- <comment xml:lang="zh_CN">LDIF 地址簿</comment>
+- <comment xml:lang="zh_TW">LDIF 通訊錄</comment>
++ <comment xml:lang="zh-CN">LDIF 地址簿</comment>
++ <comment xml:lang="zh-TW">LDIF 通訊錄</comment>
+ <acronym>LDIF</acronym>
+ <expanded-acronym>LDAP Data Interchange Format</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="dn: cn=" type="string" offset="0"/>
+- <match value="dn: mail=" type="string" offset="0"/>
++ <match type="string" value="dn: cn=" offset="0"/>
++ <match type="string" value="dn: mail=" offset="0"/>
+ </magic>
+ <glob pattern="*.ldif"/>
+ </mime-type>
+ <mime-type type="text/x-lilypond">
+ <comment>Lilypond music sheet</comment>
++ <comment xml:lang="af">Lilypond-musiekblad</comment>
+ <comment xml:lang="ar">صفحة موسيقى Lilypond</comment>
+- <comment xml:lang="be@latin">Muzyčny arkuš Lilypond</comment>
++ <comment xml:lang="be-Latn">Muzyčny arkuš Lilypond</comment>
+ <comment xml:lang="bg">Нотация на Lilypond</comment>
+ <comment xml:lang="ca">full de música Lilypond</comment>
+ <comment xml:lang="cs">notový papír Lilypond</comment>
+ <comment xml:lang="da">Lilypondmusikkort</comment>
+ <comment xml:lang="de">Lilypond-Notenblatt</comment>
+ <comment xml:lang="el">Παρτιτούρα Lilypond</comment>
+- <comment xml:lang="en_GB">Lilypond music sheet</comment>
++ <comment xml:lang="en-GB">Lilypond music sheet</comment>
+ <comment xml:lang="es">partitura de LilyPond</comment>
+ <comment xml:lang="eu">Lilypond musika-orria</comment>
+ <comment xml:lang="fi">Lilypond-nuotit</comment>
+ <comment xml:lang="fo">Lilypond tónleika ark</comment>
+ <comment xml:lang="fr">partition musicale Lilypond</comment>
++ <comment xml:lang="fur">spartît Lilypond</comment>
+ <comment xml:lang="ga">bileog cheoil Lilypond</comment>
+ <comment xml:lang="gl">folla de música de Lilypond</comment>
+ <comment xml:lang="he">דף מוזיקה של Lilypond</comment>
+@@ -34828,7 +36121,7 @@
+ <comment xml:lang="oc">particion musicala Lilypond</comment>
+ <comment xml:lang="pl">Plik partytury Lilypond</comment>
+ <comment xml:lang="pt">folha de música Lilypond</comment>
+- <comment xml:lang="pt_BR">Partitura do Lilypond</comment>
++ <comment xml:lang="pt-BR">Partitura do Lilypond</comment>
+ <comment xml:lang="ro">Fișă muzică Lilypond</comment>
+ <comment xml:lang="ru">Список музыки Lilypond</comment>
+ <comment xml:lang="sk">Notový papier Lilypond</comment>
+@@ -34839,28 +36132,30 @@
+ <comment xml:lang="tr">Lilypond müzik sayfası</comment>
+ <comment xml:lang="uk">нотний запис Lilypond</comment>
+ <comment xml:lang="vi">Bản nhạc Lilypond</comment>
+- <comment xml:lang="zh_CN">Lilypond 乐谱</comment>
+- <comment xml:lang="zh_TW">Lilypond 樂譜</comment>
++ <comment xml:lang="zh-CN">Lilypond 乐谱</comment>
++ <comment xml:lang="zh-TW">Lilypond 樂譜</comment>
+ <glob pattern="*.ly"/>
+ <sub-class-of type="text/plain"/>
+ </mime-type>
+ <mime-type type="text/x-literate-haskell">
+ <comment>LHS source code</comment>
++ <comment xml:lang="af">LHS-bronkode</comment>
+ <comment xml:lang="ar">شفرة مصدر LHS</comment>
+- <comment xml:lang="be@latin">Kryničny kod LHS</comment>
+- <comment xml:lang="bg">Изходен код на LHS</comment>
++ <comment xml:lang="be-Latn">Kryničny kod LHS</comment>
++ <comment xml:lang="bg">Изходен код — LHS</comment>
+ <comment xml:lang="ca">codi font en LHS</comment>
+ <comment xml:lang="cs">zdrojový kód LHS</comment>
+ <comment xml:lang="da">LHS-kildekode</comment>
+ <comment xml:lang="de">LHS-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας LHS</comment>
+- <comment xml:lang="en_GB">LHS source code</comment>
++ <comment xml:lang="en-GB">LHS source code</comment>
+ <comment xml:lang="eo">LHS-fontkodo</comment>
+ <comment xml:lang="es">código fuente en LHS</comment>
+ <comment xml:lang="eu">LHS iturburu-kodea</comment>
+ <comment xml:lang="fi">LHS-lähdekoodi</comment>
+ <comment xml:lang="fo">LHS keld</comment>
+ <comment xml:lang="fr">code source LHS</comment>
++ <comment xml:lang="fur">codiç sorzint LHS</comment>
+ <comment xml:lang="ga">cód foinseach LHS</comment>
+ <comment xml:lang="gl">código fonte en LHS</comment>
+ <comment xml:lang="he">קוד מקור של LHS</comment>
+@@ -34880,7 +36175,7 @@
+ <comment xml:lang="oc">còde font LHS</comment>
+ <comment xml:lang="pl">Kod źródłowy LHS</comment>
+ <comment xml:lang="pt">código origem LHS</comment>
+- <comment xml:lang="pt_BR">Código-fonte LHS</comment>
++ <comment xml:lang="pt-BR">Código-fonte LHS</comment>
+ <comment xml:lang="ro">Cod sursă LHS</comment>
+ <comment xml:lang="ru">Исходный код LHS</comment>
+ <comment xml:lang="sk">Zdrojový kód LHS</comment>
+@@ -34891,8 +36186,8 @@
+ <comment xml:lang="tr">LHS kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код LHS</comment>
+ <comment xml:lang="vi">Mã nguồn LHS</comment>
+- <comment xml:lang="zh_CN">LHS 源代码</comment>
+- <comment xml:lang="zh_TW">LHS 源碼</comment>
++ <comment xml:lang="zh-CN">LHS 源代码</comment>
++ <comment xml:lang="zh-TW">LHS 源碼</comment>
+ <acronym>LHS</acronym>
+ <expanded-acronym>Literate Haskell source code</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+@@ -34902,20 +36197,21 @@
+ <comment>application log</comment>
+ <comment xml:lang="ar">سجل التطبيق</comment>
+ <comment xml:lang="ast">rexistru d'aplicación</comment>
+- <comment xml:lang="be@latin">časopis aplikacyi</comment>
+- <comment xml:lang="bg">Файл-дневник на приложение</comment>
++ <comment xml:lang="be-Latn">časopis aplikacyi</comment>
++ <comment xml:lang="bg">Журнал със съобщения</comment>
+ <comment xml:lang="ca">registre d'aplicació</comment>
+ <comment xml:lang="cs">záznam aplikace</comment>
+ <comment xml:lang="da">programlog</comment>
+ <comment xml:lang="de">Anwendungsprotokoll</comment>
+ <comment xml:lang="el">Καταγραφή εφαρμογή</comment>
+- <comment xml:lang="en_GB">application log</comment>
++ <comment xml:lang="en-GB">application log</comment>
+ <comment xml:lang="eo">protokolo de aplikaĵo</comment>
+ <comment xml:lang="es">registro de aplicación</comment>
+ <comment xml:lang="eu">aplikazio egunkaria</comment>
+ <comment xml:lang="fi">sovelluksen lokitiedosto</comment>
+ <comment xml:lang="fo">nýtsluskipan logg</comment>
+ <comment xml:lang="fr">journal d'application</comment>
++ <comment xml:lang="fur">regjistri aplicazion</comment>
+ <comment xml:lang="ga">logchomhad feidhmchláir</comment>
+ <comment xml:lang="gl">rexistro de aplicativo</comment>
+ <comment xml:lang="he">יומן יישום</comment>
+@@ -34936,7 +36232,7 @@
+ <comment xml:lang="oc">jornal d'aplicacion</comment>
+ <comment xml:lang="pl">Dziennik programu</comment>
+ <comment xml:lang="pt">diário de aplicação</comment>
+- <comment xml:lang="pt_BR">Registro de aplicativo</comment>
++ <comment xml:lang="pt-BR">Registro de aplicativo</comment>
+ <comment xml:lang="ro">înregistrare aplicație</comment>
+ <comment xml:lang="ru">Журнал сообщений</comment>
+ <comment xml:lang="sk">Záznam aplikácie</comment>
+@@ -34947,64 +36243,36 @@
+ <comment xml:lang="tr">uygulama günlüğü</comment>
+ <comment xml:lang="uk">журнал програми</comment>
+ <comment xml:lang="vi">bản ghi ứng dụng</comment>
+- <comment xml:lang="zh_CN">应用程序日志</comment>
+- <comment xml:lang="zh_TW">程式紀錄檔</comment>
++ <comment xml:lang="zh-CN">应用程序日志</comment>
++ <comment xml:lang="zh-TW">程式紀錄檔</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.log"/>
+ </mime-type>
+ <mime-type type="text/x-makefile">
+- <comment>Makefile</comment>
+- <comment xml:lang="ar">ملف Makefile</comment>
+- <comment xml:lang="az">İnşa faylı</comment>
+- <comment xml:lang="be@latin">Makefile</comment>
+- <comment xml:lang="bg">Файл — make</comment>
+- <comment xml:lang="ca">Makefile</comment>
+- <comment xml:lang="cs">Makefile</comment>
+- <comment xml:lang="cy">Ffeil "make"</comment>
+- <comment xml:lang="da">Bygningsfil</comment>
+- <comment xml:lang="de">Makefile</comment>
+- <comment xml:lang="el">Makefile</comment>
+- <comment xml:lang="en_GB">Makefile</comment>
+- <comment xml:lang="eo">Muntodosiero</comment>
+- <comment xml:lang="es">Makefile</comment>
+- <comment xml:lang="eu">Makefile</comment>
+- <comment xml:lang="fi">Makefile</comment>
+- <comment xml:lang="fo">Makefile</comment>
+- <comment xml:lang="fr">makefile</comment>
+- <comment xml:lang="ga">Makefile</comment>
+- <comment xml:lang="gl">Makefile</comment>
+- <comment xml:lang="he">Makefile</comment>
+- <comment xml:lang="hr">Makefile</comment>
+- <comment xml:lang="hu">Makefile</comment>
+- <comment xml:lang="ia">Makefile</comment>
+- <comment xml:lang="id">Makefile</comment>
+- <comment xml:lang="it">Makefile</comment>
+- <comment xml:lang="ja">Makefile</comment>
+- <comment xml:lang="ka">Makefile</comment>
+- <comment xml:lang="kk">Makefile (жинау файлы)</comment>
+- <comment xml:lang="ko">Makefile</comment>
+- <comment xml:lang="lt">Makefile</comment>
+- <comment xml:lang="lv">Makefile</comment>
+- <comment xml:lang="ms">Makefile</comment>
+- <comment xml:lang="nb">Makefile</comment>
+- <comment xml:lang="nl">Makefile</comment>
+- <comment xml:lang="nn">Makefile</comment>
+- <comment xml:lang="oc">makefile</comment>
+- <comment xml:lang="pl">Plik make</comment>
+- <comment xml:lang="pt">Makefile</comment>
+- <comment xml:lang="pt_BR">Makefile (arquivo do make)</comment>
+- <comment xml:lang="ro">Makefile</comment>
+- <comment xml:lang="ru">Файл Makefile</comment>
+- <comment xml:lang="sk">Makefile</comment>
+- <comment xml:lang="sl">Datoteka Makefile</comment>
+- <comment xml:lang="sq">Makefile</comment>
+- <comment xml:lang="sr">датотека стварања</comment>
+- <comment xml:lang="sv">Makefil</comment>
+- <comment xml:lang="tr">Makefile</comment>
+- <comment xml:lang="uk">файл проекту make</comment>
+- <comment xml:lang="vi">Tập tin tạo ứng dụng (Makefile)</comment>
+- <comment xml:lang="zh_CN">Makefile</comment>
+- <comment xml:lang="zh_TW">Makefile</comment>
++ <comment>Makefile build file</comment>
++ <comment xml:lang="bg">Проект — Makefile</comment>
++ <comment xml:lang="ca">fitxer de construcció Makefile</comment>
++ <comment xml:lang="da">Makefile build-fil</comment>
++ <comment xml:lang="de">Makefile Build-Datei</comment>
++ <comment xml:lang="en-GB">Makefile build file</comment>
++ <comment xml:lang="es">archivo de generación Makefile</comment>
++ <comment xml:lang="eu">Makefile build fitxategia</comment>
++ <comment xml:lang="fi">Makefile rakennustiedosto</comment>
++ <comment xml:lang="fr">fichier de construction Makefile</comment>
++ <comment xml:lang="hr">Makefile datoteka izgradnje</comment>
++ <comment xml:lang="hu">Makefile összeállítási fájl</comment>
++ <comment xml:lang="id">Berkas build Makefile</comment>
++ <comment xml:lang="it">File compilazione Makefile</comment>
++ <comment xml:lang="kk">Makefile құрастыру файлы</comment>
++ <comment xml:lang="ko">Makefile 빌드 파일</comment>
++ <comment xml:lang="pl">Plik budowania Makefile</comment>
++ <comment xml:lang="pt-BR">Arquivo de compilação Makefile</comment>
++ <comment xml:lang="ru">Сборочный файл Makefile</comment>
++ <comment xml:lang="sk">Súbor zostavenia Makefile</comment>
++ <comment xml:lang="sv">Makefile-byggfil</comment>
++ <comment xml:lang="tr">Makefile derleme dosyası</comment>
++ <comment xml:lang="uk">файл збирання Makefile</comment>
++ <comment xml:lang="zh-CN">Makefile 构建文件</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="makefile"/>
+ <glob pattern="GNUmakefile"/>
+@@ -35012,12 +36280,13 @@
+ <glob pattern="*.mak"/>
+ <glob weight="10" pattern="Makefile.*"/>
+ <magic priority="50">
+- <match value="#!/usr/bin/make" type="string" offset="0"/>
+- <match value="#! /usr/bin/make" type="string" offset="0"/>
++ <match type="string" value="#!/usr/bin/make" offset="0"/>
++ <match type="string" value="#! /usr/bin/make" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="text/markdown">
+ <comment>Markdown document</comment>
++ <comment xml:lang="af">Markdown-dokument</comment>
+ <comment xml:lang="ast">Documentu Markdown</comment>
+ <comment xml:lang="bg">Документ — Markdown</comment>
+ <comment xml:lang="ca">document Markdown</comment>
+@@ -35025,11 +36294,12 @@
+ <comment xml:lang="da">Markdown-dokument</comment>
+ <comment xml:lang="de">Markdown-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Markdown</comment>
+- <comment xml:lang="en_GB">Markdown document</comment>
++ <comment xml:lang="en-GB">Markdown document</comment>
+ <comment xml:lang="es">documento Markdown</comment>
+ <comment xml:lang="eu">Markdown dokumentua</comment>
+ <comment xml:lang="fi">Markdown-asiakirja</comment>
+ <comment xml:lang="fr">document Markdown</comment>
++ <comment xml:lang="fur">document Markdown</comment>
+ <comment xml:lang="ga">cáipéis Markdown</comment>
+ <comment xml:lang="gl">documento de Markdown</comment>
+ <comment xml:lang="he">מסמך Markdown</comment>
+@@ -35046,7 +36316,7 @@
+ <comment xml:lang="oc">document Markdown</comment>
+ <comment xml:lang="pl">Dokument Markdown</comment>
+ <comment xml:lang="pt">documento Markdown</comment>
+- <comment xml:lang="pt_BR">Documento Markdown</comment>
++ <comment xml:lang="pt-BR">Documento Markdown</comment>
+ <comment xml:lang="ru">Документ Markdown</comment>
+ <comment xml:lang="sk">Dokument Markdown</comment>
+ <comment xml:lang="sl">Dokument Markdown</comment>
+@@ -35054,8 +36324,8 @@
+ <comment xml:lang="sv">Markdown-dokument</comment>
+ <comment xml:lang="tr">Markdown belgesi</comment>
+ <comment xml:lang="uk">документ Markdown</comment>
+- <comment xml:lang="zh_CN">Markdown 文档</comment>
+- <comment xml:lang="zh_TW">Markdown 文件</comment>
++ <comment xml:lang="zh-CN">Markdown 文档</comment>
++ <comment xml:lang="zh-TW">Markdown 文件</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.md"/>
+ <glob pattern="*.mkd"/>
+@@ -35065,19 +36335,20 @@
+ <mime-type type="text/x-moc">
+ <comment>Qt MOC file</comment>
+ <comment xml:lang="ar">ملف Qt MOC</comment>
+- <comment xml:lang="be@latin">Fajł Qt MOC</comment>
++ <comment xml:lang="be-Latn">Fajł Qt MOC</comment>
+ <comment xml:lang="bg">Файл — Qt MOC</comment>
+ <comment xml:lang="ca">fitxer MOC de Qt</comment>
+ <comment xml:lang="cs">soubor Qt MOC</comment>
+ <comment xml:lang="da">Qt MOC-fil</comment>
+ <comment xml:lang="de">Qt-MOC-Datei</comment>
+ <comment xml:lang="el">Αρχείο Qt MOC</comment>
+- <comment xml:lang="en_GB">Qt MOC file</comment>
++ <comment xml:lang="en-GB">Qt MOC file</comment>
+ <comment xml:lang="es">archivo MOC Qt</comment>
+ <comment xml:lang="eu">Qt MOC fitxategia</comment>
+ <comment xml:lang="fi">Qt MOC -tiedosto</comment>
+ <comment xml:lang="fo">Qt MOC fíla</comment>
+ <comment xml:lang="fr">fichier Qt MOC</comment>
++ <comment xml:lang="fur">file Qt MOC</comment>
+ <comment xml:lang="ga">comhad MOC Qt</comment>
+ <comment xml:lang="gl">ficheiro MOC Qt</comment>
+ <comment xml:lang="he">קובץ Qt MOC</comment>
+@@ -35097,7 +36368,7 @@
+ <comment xml:lang="oc">fichièr Qt MOC</comment>
+ <comment xml:lang="pl">Plik Qt MOC</comment>
+ <comment xml:lang="pt">ficheiro Qt MOC</comment>
+- <comment xml:lang="pt_BR">Arquivo Qt MOC</comment>
++ <comment xml:lang="pt-BR">Arquivo Qt MOC</comment>
+ <comment xml:lang="ro">Fișier Qt MOC</comment>
+ <comment xml:lang="ru">Файл Qt MOC</comment>
+ <comment xml:lang="sk">Súbor Qt MOC</comment>
+@@ -35108,8 +36379,8 @@
+ <comment xml:lang="tr">Qt MOC dosyası</comment>
+ <comment xml:lang="uk">файл-метаоб'єкт Qt</comment>
+ <comment xml:lang="vi">Tập tin MOC của Qt</comment>
+- <comment xml:lang="zh_CN">Qt 元对象编译器文件</comment>
+- <comment xml:lang="zh_TW">Qt MOC 檔</comment>
++ <comment xml:lang="zh-CN">Qt 元对象编译器文件</comment>
++ <comment xml:lang="zh-TW">Qt MOC 檔</comment>
+ <acronym>Qt MOC</acronym>
+ <expanded-acronym>Qt Meta Object Compiler</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+@@ -35117,20 +36388,22 @@
+ </mime-type>
+ <mime-type type="text/x-ms-regedit">
+ <comment>Windows Registry extract</comment>
++ <comment xml:lang="af">Windows-registerlêeruittreksel</comment>
+ <comment xml:lang="ar">استخراج مسجل ويندوز</comment>
+- <comment xml:lang="be@latin">Element rehistru Windows</comment>
++ <comment xml:lang="be-Latn">Element rehistru Windows</comment>
+ <comment xml:lang="bg">Извадка от регистъра на Windows</comment>
+ <comment xml:lang="ca">extracte de Windows Registry</comment>
+ <comment xml:lang="cs">výtah registru Windows</comment>
+- <comment xml:lang="da">Windows Registy-udtrækning</comment>
++ <comment xml:lang="da">Windows registreringsdatabase-udtrækning</comment>
+ <comment xml:lang="de">Windows-Registry-Auszug</comment>
+ <comment xml:lang="el">Αποσυμπίεση Windows Registry</comment>
+- <comment xml:lang="en_GB">Windows Registry extract</comment>
++ <comment xml:lang="en-GB">Windows Registry extract</comment>
+ <comment xml:lang="es">extracto del registro de Windows</comment>
+ <comment xml:lang="eu">Windows-eko erregistro erauzlea</comment>
+ <comment xml:lang="fi">Windows-rekisteritietue</comment>
+ <comment xml:lang="fo">Windows Registry úrdráttur</comment>
+ <comment xml:lang="fr">extrait de registre Windows</comment>
++ <comment xml:lang="fur">estrat dal regjistri di Windows</comment>
+ <comment xml:lang="ga">sliocht as Clárlann Windows</comment>
+ <comment xml:lang="gl">Extracto do rexistro de Windows</comment>
+ <comment xml:lang="he">קובץ רשומות מערכת של Windows</comment>
+@@ -35150,7 +36423,7 @@
+ <comment xml:lang="oc">extrait de registre Windows</comment>
+ <comment xml:lang="pl">Wycinek rejestru Windows</comment>
+ <comment xml:lang="pt">extrato do registo do Windows</comment>
+- <comment xml:lang="pt_BR">Extrator de registro do Windows</comment>
++ <comment xml:lang="pt-BR">Extrator de registro do Windows</comment>
+ <comment xml:lang="ro">Extras al registrului Windows</comment>
+ <comment xml:lang="ru">Фрагмент Windows Registry</comment>
+ <comment xml:lang="sk">Časť registrov Windows</comment>
+@@ -35161,138 +36434,99 @@
+ <comment xml:lang="tr">Windows Kayıt Defteri özü</comment>
+ <comment xml:lang="uk">частина реєстру Windows</comment>
+ <comment xml:lang="vi">Bản trích Registry Windows</comment>
+- <comment xml:lang="zh_CN">Windows 注册表提取</comment>
+- <comment xml:lang="zh_TW">Windows Registry 抽出</comment>
++ <comment xml:lang="zh-CN">Windows 注册表提取</comment>
++ <comment xml:lang="zh-TW">Windows Registry 抽出</comment>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="REGEDIT" type="string" offset="0"/>
+- <match value="Windows Registry Editor Version 5.00" type="string" offset="0"/>
+- <match value="\xff\xfeW\x00i\x00n\x00d\x00o\x00w\x00s\x00 \x00R\x00e\x00g\x00i\x00s\x00t\x00r\x00y\x00 \x00E\x00d\x00i\x00t\x00o\x00r\x00" type="string" offset="0"/>
++ <match type="string" value="REGEDIT" offset="0"/>
++ <match type="string" value="Windows Registry Editor Version 5.00" offset="0"/>
++ <match type="string" value="\xff\xfeW\x00i\x00n\x00d\x00o\x00w\x00s\x00 \x00R\x00e\x00g\x00i\x00s\x00t\x00r\x00y\x00 \x00E\x00d\x00i\x00t\x00o\x00r\x00" offset="0"/>
+ </magic>
+ <glob pattern="*.reg"/>
+ </mime-type>
+ <mime-type type="text/x-mof">
+- <comment>Managed Object Format</comment>
+- <comment xml:lang="ar">صيغة كائن مدار</comment>
+- <comment xml:lang="be@latin">Farmat Managed Object</comment>
+- <comment xml:lang="bg">Управлявани обекти — MOF</comment>
+- <comment xml:lang="ca">format d'objecte gestionat</comment>
+- <comment xml:lang="cs">Managed Object Format</comment>
+- <comment xml:lang="da">Håndteret objektformat</comment>
+- <comment xml:lang="de">Managed Object Format</comment>
+- <comment xml:lang="el">Μορφή διαχειριζόμενου αντικειμένου</comment>
+- <comment xml:lang="en_GB">Managed Object Format</comment>
+- <comment xml:lang="es">formato de objeto gestionado</comment>
+- <comment xml:lang="eu">Kudeatutako objektu formatua</comment>
+- <comment xml:lang="fi">Managed Object Format</comment>
+- <comment xml:lang="fr">format Managed Object</comment>
+- <comment xml:lang="ga">formáid réada bainistithe</comment>
+- <comment xml:lang="gl">formato de obxecto xestionado</comment>
+- <comment xml:lang="he">תבנית פריט מנוהל</comment>
+- <comment xml:lang="hr">Managed Object Format</comment>
+- <comment xml:lang="hu">Felügyelt objektum (MO) formátum</comment>
+- <comment xml:lang="ia">File in formato Managed Object</comment>
+- <comment xml:lang="id">Managed Object Format</comment>
+- <comment xml:lang="it">Managed Object Format</comment>
+- <comment xml:lang="ja">管理オブジェクトフォーマット</comment>
+- <comment xml:lang="kk">Басқарылатын объект пішімі</comment>
+- <comment xml:lang="ko">관리되는 객체 형식</comment>
+- <comment xml:lang="lt">Sutvarkytų objektų formatas</comment>
+- <comment xml:lang="lv">Pārvaldītu objektu formāts</comment>
+- <comment xml:lang="nb">Managed Object Format</comment>
+- <comment xml:lang="nl">Managed Object Format</comment>
+- <comment xml:lang="nn">Managed Object Format</comment>
+- <comment xml:lang="oc">format Managed Object</comment>
+- <comment xml:lang="pl">Plik Managed Object Format</comment>
+- <comment xml:lang="pt">formato Managed Object</comment>
+- <comment xml:lang="pt_BR">Formato de objeto gerenciado</comment>
+- <comment xml:lang="ro">Managed Object Format</comment>
+- <comment xml:lang="ru">Формат управляемого объекта</comment>
+- <comment xml:lang="sk">Formát Managed Object</comment>
+- <comment xml:lang="sl">Datoteka Managed Object</comment>
+- <comment xml:lang="sq">Managed Object Format</comment>
+- <comment xml:lang="sr">запис управљаног објекта</comment>
+- <comment xml:lang="sv">Managed Object Format</comment>
+- <comment xml:lang="tr">Yönetilen Nesne Biçimi</comment>
+- <comment xml:lang="uk">формат керування об’єктами</comment>
+- <comment xml:lang="vi">Định dạng Đối tượng đã Quản lý</comment>
+- <comment xml:lang="zh_CN">托管对象格式</comment>
+- <comment xml:lang="zh_TW">Managed Object Format</comment>
++ <comment>MOF file</comment>
++ <comment xml:lang="bg">Модел — MOF</comment>
++ <comment xml:lang="ca">fitxer MOF</comment>
++ <comment xml:lang="da">MOF-fil</comment>
++ <comment xml:lang="de">MOF-Datei</comment>
++ <comment xml:lang="en-GB">MOF file</comment>
++ <comment xml:lang="es">archivo MOF</comment>
++ <comment xml:lang="eu">MOF fitxategia</comment>
++ <comment xml:lang="fi">MOF-tiedosto</comment>
++ <comment xml:lang="fr">fichier MOF</comment>
++ <comment xml:lang="hr">MOF datoteka</comment>
++ <comment xml:lang="hu">MOF fájl</comment>
++ <comment xml:lang="id">Berkas MOF</comment>
++ <comment xml:lang="it">File MOF</comment>
++ <comment xml:lang="kk">MOF файлы</comment>
++ <comment xml:lang="ko">MOF 파일</comment>
++ <comment xml:lang="pl">Plik MOF</comment>
++ <comment xml:lang="pt-BR">Arquivo MOF</comment>
++ <comment xml:lang="ru">Файл MOF</comment>
++ <comment xml:lang="sk">Súbor MOF</comment>
++ <comment xml:lang="sl">Datoteka MOF</comment>
++ <comment xml:lang="sv">MOF-fil</comment>
++ <comment xml:lang="tr">MOF dosyası</comment>
++ <comment xml:lang="uk">файл MOF</comment>
++ <comment xml:lang="zh-CN">MOF 文件</comment>
++ <comment xml:lang="zh-TW">MOF 檔</comment>
++ <acronym>MOF</acronym>
++ <expanded-acronym>Windows Managed Object File</expanded-acronym>
+ <sub-class-of type="text/x-csrc"/>
+ <glob pattern="*.mof"/>
+ </mime-type>
+ <mime-type type="text/x-mup">
+- <comment>Mup publication</comment>
+- <comment xml:lang="ar">منشور Mup</comment>
+- <comment xml:lang="be@latin">Publikacyja Mup</comment>
+- <comment xml:lang="bg">Издание — Mup</comment>
+- <comment xml:lang="ca">publicació Mup</comment>
+- <comment xml:lang="cs">publikace Mup</comment>
+- <comment xml:lang="da">Mupudgivelse</comment>
+- <comment xml:lang="de">Mup-Veröffentlichung</comment>
+- <comment xml:lang="el">Δημοσίευση Mup</comment>
+- <comment xml:lang="en_GB">Mup publication</comment>
+- <comment xml:lang="es">publicación Mup</comment>
+- <comment xml:lang="eu">Mup publikazioa</comment>
+- <comment xml:lang="fi">Mup-julkaisu</comment>
+- <comment xml:lang="fo">Mup útgáva</comment>
+- <comment xml:lang="fr">publication Mup</comment>
+- <comment xml:lang="ga">foilseachán Mup</comment>
+- <comment xml:lang="gl">publicación Mup</comment>
+- <comment xml:lang="he">פרסום של Mup</comment>
+- <comment xml:lang="hr">Mup publikacija</comment>
+- <comment xml:lang="hu">Mup publikáció</comment>
+- <comment xml:lang="ia">Publication Mup</comment>
+- <comment xml:lang="id">Publikasi Mup</comment>
+- <comment xml:lang="it">Pubblicazione Mup</comment>
+- <comment xml:lang="ja">Mup 出版ファイル</comment>
+- <comment xml:lang="kk">Mup жариялымы</comment>
+- <comment xml:lang="ko">Mup 출판물</comment>
+- <comment xml:lang="lt">Mup leidinys</comment>
+- <comment xml:lang="lv">Mup publikācija</comment>
+- <comment xml:lang="nb">Mup publikasjon</comment>
+- <comment xml:lang="nl">Mup-publicatie</comment>
+- <comment xml:lang="nn">Mup-publikasjon</comment>
+- <comment xml:lang="oc">publication Mup</comment>
+- <comment xml:lang="pl">Publikacja Mup</comment>
+- <comment xml:lang="pt">publicação Mup</comment>
+- <comment xml:lang="pt_BR">Publicação do Mup</comment>
+- <comment xml:lang="ro">Publicație Mup</comment>
+- <comment xml:lang="ru">Публикация Mup</comment>
+- <comment xml:lang="sk">Publikácie Mup</comment>
+- <comment xml:lang="sl">Datoteka objave Mup</comment>
+- <comment xml:lang="sq">Publikim Mup</comment>
+- <comment xml:lang="sr">Муп објава</comment>
+- <comment xml:lang="sv">Mup-publicering</comment>
+- <comment xml:lang="tr">Mup uygulaması</comment>
+- <comment xml:lang="uk">публікація Mup</comment>
+- <comment xml:lang="vi">Bản xuất Mup</comment>
+- <comment xml:lang="zh_CN">Mup 应用程序</comment>
+- <comment xml:lang="zh_TW">Mup 出版品</comment>
++ <comment>Mup musical composition document</comment>
++ <comment xml:lang="bg">Музикална композиция — Mup</comment>
++ <comment xml:lang="ca">document de composició musical Mup</comment>
++ <comment xml:lang="da">Mup-musiksamling-dokument</comment>
++ <comment xml:lang="de">Mup-Musikkompositions-Dokument</comment>
++ <comment xml:lang="en-GB">Mup musical composition document</comment>
++ <comment xml:lang="es">documento de composición musical de Mup</comment>
++ <comment xml:lang="eu">Mup konposizio musikal dokumentua</comment>
++ <comment xml:lang="fi">Mup-sävellysdokumentti</comment>
++ <comment xml:lang="fr">document de composition musicale Mup</comment>
++ <comment xml:lang="hr">Mup dokument glazbene kompozicije</comment>
++ <comment xml:lang="hu">Mup zenei kompozíciós dokumentum</comment>
++ <comment xml:lang="id">Dokumen komposisi musik Mup</comment>
++ <comment xml:lang="it">Documento composizione musicale Mup</comment>
++ <comment xml:lang="kk">Mup музыкалық композиция құжаты</comment>
++ <comment xml:lang="ko">mup 작곡 문서</comment>
++ <comment xml:lang="pl">Dokument kompozycji muzycznej Mup</comment>
++ <comment xml:lang="pt-BR">Documento de composição musical Mup</comment>
++ <comment xml:lang="sk">Dokument hudobnej kompozície Mup</comment>
++ <comment xml:lang="sv">Mup musikkompositionsdokument</comment>
++ <comment xml:lang="tr">Mup musical composition belgesi</comment>
++ <comment xml:lang="uk">документ музичного запису твору Mup</comment>
++ <comment xml:lang="zh-CN">Mup 乐曲文档</comment>
++ <comment xml:lang="zh-TW">Mup 音樂組合文件</comment>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="//!Mup" type="string" offset="0"/>
++ <match type="string" value="//!Mup" offset="0"/>
+ </magic>
+ <glob pattern="*.mup"/>
+ <glob pattern="*.not"/>
+ </mime-type>
+ <mime-type type="text/x-objcsrc">
+ <comment>Objective-C source code</comment>
++ <comment xml:lang="af">Objective-C-bronkode</comment>
+ <comment xml:lang="ar">شفرة مصدر الهدف-C </comment>
+- <comment xml:lang="be@latin">Kryničny kod Objective-C</comment>
++ <comment xml:lang="be-Latn">Kryničny kod Objective-C</comment>
+ <comment xml:lang="bg">Изходен код — Objective C</comment>
+ <comment xml:lang="ca">codi font en Objective-C</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce Objective-C</comment>
+ <comment xml:lang="da">Objektiv C-kildekode</comment>
+ <comment xml:lang="de">Objective-C-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας Objective-C</comment>
+- <comment xml:lang="en_GB">Objective-C source code</comment>
++ <comment xml:lang="en-GB">Objective-C source code</comment>
+ <comment xml:lang="eo">fontkodo en Objective-C</comment>
+ <comment xml:lang="es">código fuente en Objective-C</comment>
+ <comment xml:lang="eu">Objective-C iturburu-kodea</comment>
+ <comment xml:lang="fi">Objective-C-lähdekoodi</comment>
+ <comment xml:lang="fo">Objective-C keldukota</comment>
+ <comment xml:lang="fr">code source Objective-C</comment>
++ <comment xml:lang="fur">codiç sorzint Objective-C</comment>
+ <comment xml:lang="ga">cód foinseach Objective-C</comment>
+ <comment xml:lang="gl">código fonte de Objective-C</comment>
+ <comment xml:lang="he">קוד מקור של Objective-C</comment>
+@@ -35314,7 +36548,7 @@
+ <comment xml:lang="oc">còde font Objective-C</comment>
+ <comment xml:lang="pl">Kod źródłowy Objective-C</comment>
+ <comment xml:lang="pt">código origem Objective-C</comment>
+- <comment xml:lang="pt_BR">Código-fonte Objective-C</comment>
++ <comment xml:lang="pt-BR">Código-fonte Objective-C</comment>
+ <comment xml:lang="ro">Cod sursă Objective-C</comment>
+ <comment xml:lang="ru">Исходный код Objective-C</comment>
+ <comment xml:lang="sk">Zdrojový kód Objective-C</comment>
+@@ -35325,31 +36559,33 @@
+ <comment xml:lang="tr">Objective-C kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою Objective-C</comment>
+ <comment xml:lang="vi">Mã nguồn Objective-C</comment>
+- <comment xml:lang="zh_CN">Objective-C 源代码</comment>
+- <comment xml:lang="zh_TW">Objective-C 源碼</comment>
++ <comment xml:lang="zh-CN">Objective-C 源代码</comment>
++ <comment xml:lang="zh-TW">Objective-C 源碼</comment>
+ <sub-class-of type="text/x-csrc"/>
+ <magic priority="30">
+- <match value="#import" type="string" offset="0"/>
++ <match type="string" value="#import" offset="0"/>
+ </magic>
+ <glob pattern="*.m"/>
+ </mime-type>
+ <mime-type type="text/x-ocaml">
+ <comment>OCaml source code</comment>
++ <comment xml:lang="af">OCaml-bronkode</comment>
+ <comment xml:lang="ar">شفرة مصدر OCaml</comment>
+- <comment xml:lang="be@latin">Kryničny kod OCaml</comment>
++ <comment xml:lang="be-Latn">Kryničny kod OCaml</comment>
+ <comment xml:lang="bg">Изходен код — OCaml</comment>
+ <comment xml:lang="ca">codi font en OCaml</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce OCaml</comment>
+ <comment xml:lang="da">OCaml-kildekode</comment>
+ <comment xml:lang="de">OCaml-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας OCaml</comment>
+- <comment xml:lang="en_GB">OCaml source code</comment>
++ <comment xml:lang="en-GB">OCaml source code</comment>
+ <comment xml:lang="eo">OCaml-fontkodo</comment>
+ <comment xml:lang="es">código fuente en OCaml</comment>
+ <comment xml:lang="eu">OCaml iturburu-kodea</comment>
+ <comment xml:lang="fi">OCaml-lähdekoodi</comment>
+ <comment xml:lang="fo">OCaml keldukota</comment>
+ <comment xml:lang="fr">code source OCaml</comment>
++ <comment xml:lang="fur">codiç sorzint OCaml</comment>
+ <comment xml:lang="ga">cód foinseach OCaml</comment>
+ <comment xml:lang="gl">código fonte de OCaml</comment>
+ <comment xml:lang="he">קוד מקור של OCaml</comment>
+@@ -35369,7 +36605,7 @@
+ <comment xml:lang="oc">còde font OCaml</comment>
+ <comment xml:lang="pl">Kod źródłowy OCaml</comment>
+ <comment xml:lang="pt">código origem OCaml</comment>
+- <comment xml:lang="pt_BR">Código-fonte OCaml</comment>
++ <comment xml:lang="pt-BR">Código-fonte OCaml</comment>
+ <comment xml:lang="ro">Cod sursă OCaml</comment>
+ <comment xml:lang="ru">Исходный код OCaml</comment>
+ <comment xml:lang="sk">Zdrojový kód OCaml</comment>
+@@ -35380,19 +36616,26 @@
+ <comment xml:lang="tr">OCaml kaynak kodu</comment>
+ <comment xml:lang="uk">первинний код мовою OCaml</comment>
+ <comment xml:lang="vi">Mã nguồn OCaml</comment>
+- <comment xml:lang="zh_CN">OCaml 源代码</comment>
+- <comment xml:lang="zh_TW">OCaml 源碼</comment>
++ <comment xml:lang="zh-CN">OCaml 源代码</comment>
++ <comment xml:lang="zh-TW">OCaml 源碼</comment>
+ <glob pattern="*.ml"/>
+ <glob pattern="*.mli"/>
+ </mime-type>
+ <mime-type type="text/x-opencl-src">
+ <comment>OpenCL source code</comment>
++ <comment xml:lang="af">OpenCL-bronkode</comment>
++ <comment xml:lang="bg">Изходен код — OpenCL</comment>
+ <comment xml:lang="ca">codi font en OpenCL</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce OpenCL</comment>
++ <comment xml:lang="da">OpenCL-kildekode</comment>
+ <comment xml:lang="de">OpenCL-Quelltext</comment>
+- <comment xml:lang="en_GB">OpenCL source code</comment>
++ <comment xml:lang="en-GB">OpenCL source code</comment>
+ <comment xml:lang="es">código fuente en OpenCL</comment>
++ <comment xml:lang="eu">OpenCL iturburu-kodea</comment>
+ <comment xml:lang="fi">OpenCL-lähdekoodi</comment>
++ <comment xml:lang="fr">code source OpenCL</comment>
++ <comment xml:lang="fur">codiç sorzint OpenCL</comment>
++ <comment xml:lang="ga">cód foinseach OpenCL</comment>
+ <comment xml:lang="hr">OpenCL izvorni kôd</comment>
+ <comment xml:lang="hu">OpenCL forráskód</comment>
+ <comment xml:lang="id">Kode sumber OpenCL</comment>
+@@ -35400,91 +36643,75 @@
+ <comment xml:lang="kk">OpenCL бастапқы коды</comment>
+ <comment xml:lang="ko">OpenCL 소스 코드</comment>
+ <comment xml:lang="pl">Kod źródłowy OpenCL</comment>
+- <comment xml:lang="pt_BR">Código-fonte do OpenCL</comment>
++ <comment xml:lang="pt-BR">Código-fonte OpenCL</comment>
+ <comment xml:lang="ru">Исходный код OpenGL</comment>
+ <comment xml:lang="sk">Zdrojový kód OpenCL</comment>
++ <comment xml:lang="sl">Izvorna koda OpenCL</comment>
+ <comment xml:lang="sv">OpenCL-källkod</comment>
++ <comment xml:lang="tr">OpenCL kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою OpenCL</comment>
+- <comment xml:lang="zh_CN">OpenCL 源代码</comment>
+- <comment xml:lang="zh_TW">OpenCL 源碼</comment>
++ <comment xml:lang="zh-CN">OpenCL 源代码</comment>
++ <comment xml:lang="zh-TW">OpenCL 源碼</comment>
+ <acronym>OpenCL</acronym>
+ <expanded-acronym>Open Computing Language</expanded-acronym>
+ <sub-class-of type="text/x-csrc"/>
+ <glob pattern="*.cl"/>
+ </mime-type>
+ <mime-type type="text/x-matlab">
+- <comment>MATLAB script/function</comment>
+- <comment xml:lang="ar">سكربت/وظيفة MATLAB</comment>
+- <comment xml:lang="be@latin">Skrypt/funkcyja MATLAB</comment>
+- <comment xml:lang="bg">Скрипт/функция — MATLAB</comment>
+- <comment xml:lang="ca">script/funció MATLAB</comment>
+- <comment xml:lang="cs">skript/funkce MATLAB</comment>
+- <comment xml:lang="da">MATLAB-program/-funktion</comment>
+- <comment xml:lang="de">MATLAB-Skript/-Funktion</comment>
+- <comment xml:lang="el">Δέσμη ενεργειών/συνάρτηση MATLAB</comment>
+- <comment xml:lang="en_GB">MATLAB script/function</comment>
+- <comment xml:lang="es">secuencia de órdenes/función de MATLAB</comment>
+- <comment xml:lang="eu">MATLAB script/funtzioa</comment>
+- <comment xml:lang="fi">MATLAB-komentotiedosto/funktio</comment>
+- <comment xml:lang="fo">MATLAB boðrøð/funka</comment>
+- <comment xml:lang="fr">script/fonction MATLAB</comment>
+- <comment xml:lang="ga">script/feidhm MATLAB</comment>
+- <comment xml:lang="gl">función/script de MATLAB</comment>
+- <comment xml:lang="he">תסריט/פונקציית MATLAB</comment>
+- <comment xml:lang="hr">MATLAB skripta/funkcija</comment>
+- <comment xml:lang="hu">MATLAB parancsfájl/funkció</comment>
+- <comment xml:lang="ia">Script/function MATLAB</comment>
+- <comment xml:lang="id">Skrip/fungsi MATLAB</comment>
+- <comment xml:lang="it">Script/Funzione MATLAB</comment>
+- <comment xml:lang="ja">MATLAB スクリプト/関数</comment>
+- <comment xml:lang="kk">MATLAB сценарий/функциясы</comment>
+- <comment xml:lang="ko">MATLAB 스크립트/함수</comment>
+- <comment xml:lang="lt">MATLAB scenarijus / funkcija</comment>
+- <comment xml:lang="lv">MATLAB skripts/funkcija</comment>
+- <comment xml:lang="nb">Skript/funksjon for MATLAB</comment>
+- <comment xml:lang="nl">MATLAB-script/functie</comment>
+- <comment xml:lang="nn">MATLAB-skript/funksjon</comment>
+- <comment xml:lang="oc">escript/fonction MATLAB</comment>
+- <comment xml:lang="pl">Skrypt/funkcja MATLAB</comment>
+- <comment xml:lang="pt">script/função MATLAB</comment>
+- <comment xml:lang="pt_BR">Script/função do MATLAB</comment>
+- <comment xml:lang="ro">Funcție/script MATLAB</comment>
+- <comment xml:lang="ru">Сценарий/функция MATLAB</comment>
+- <comment xml:lang="sk">Skript/funkcia MATLAB</comment>
+- <comment xml:lang="sl">Skriptna datoteka MATLAB</comment>
+- <comment xml:lang="sq">Script/Funksion MATLAB</comment>
+- <comment xml:lang="sr">скрипта/функција МАТЛАБ-а</comment>
+- <comment xml:lang="sv">MATLAB-skript/funktion</comment>
+- <comment xml:lang="tr">MATLAB betiği/fonksiyonu</comment>
+- <comment xml:lang="uk">скрипт/функція MATLAB</comment>
+- <comment xml:lang="vi">Văn lệnh/chức năng MATLAB</comment>
+- <comment xml:lang="zh_CN">MATLAB 脚本/函数</comment>
+- <comment xml:lang="zh_TW">MATLAB 指令稿/函式</comment>
++ <comment>MATLAB file</comment>
++ <comment xml:lang="bg">Файл — MATLAB</comment>
++ <comment xml:lang="ca">fitxer MATLAB</comment>
++ <comment xml:lang="da">MATLAB-fil</comment>
++ <comment xml:lang="de">MATLAB-Datei</comment>
++ <comment xml:lang="en-GB">MATLAB file</comment>
++ <comment xml:lang="es">archivo de MATLAB</comment>
++ <comment xml:lang="eu">MATLAB fitxategia</comment>
++ <comment xml:lang="fi">MATLAB-tiedosto</comment>
++ <comment xml:lang="fr">fichier MATLAB</comment>
++ <comment xml:lang="hr">MATLAB datoteka</comment>
++ <comment xml:lang="hu">MATLAB fájl</comment>
++ <comment xml:lang="id">Berkas MATLAB</comment>
++ <comment xml:lang="it">File MATLAB</comment>
++ <comment xml:lang="kk">MATLAB файлы</comment>
++ <comment xml:lang="ko">MATLAB 파일</comment>
++ <comment xml:lang="pl">Plik MATLAB</comment>
++ <comment xml:lang="pt-BR">Arquivo do MATLAB</comment>
++ <comment xml:lang="ru">Файл MATLAB</comment>
++ <comment xml:lang="sk">Súbor MATLAB</comment>
++ <comment xml:lang="sl">Datoteka MATLAB</comment>
++ <comment xml:lang="sv">MATLAB-fil</comment>
++ <comment xml:lang="tr">MATLAB dosyası</comment>
++ <comment xml:lang="uk">файл MATLAB</comment>
++ <comment xml:lang="zh-CN">MATLAB 文件</comment>
++ <comment xml:lang="zh-TW">MATLAB 檔</comment>
+ <sub-class-of type="text/plain"/>
+ <magic priority="10">
+- <match value="%" type="string" offset="0"/>
++ <match type="string" value="%" offset="0"/>
+ </magic>
+ <magic priority="10">
+- <match value="##" type="string" offset="0"/>
++ <match type="string" value="##" offset="0"/>
+ </magic>
+ <magic priority="50">
+- <match value="function" type="string" offset="0"/>
++ <match type="string" value="function" offset="0"/>
+ </magic>
+ <glob pattern="*.m"/>
+ <alias type="text/x-octave"/>
+ </mime-type>
+ <mime-type type="text/x-meson">
+ <comment>Meson source code</comment>
++ <comment xml:lang="af">Meson-bronkode</comment>
++ <comment xml:lang="bg">Изходен код — Meson</comment>
+ <comment xml:lang="ca">codi font en Meson</comment>
+ <comment xml:lang="cs">zdrojový kód Meson</comment>
+ <comment xml:lang="da">Meson-kildekode</comment>
+ <comment xml:lang="de">Meson-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας Meson</comment>
+- <comment xml:lang="en_GB">Meson source code</comment>
++ <comment xml:lang="en-GB">Meson source code</comment>
+ <comment xml:lang="es">código fuente en Meson</comment>
+ <comment xml:lang="eu">Meson iturburu-kodea</comment>
+ <comment xml:lang="fi">Meson-lähdekoodi</comment>
+ <comment xml:lang="fr">code source Meson</comment>
++ <comment xml:lang="fur">codiç sorzint Meson</comment>
+ <comment xml:lang="ga">cód foinseach Meson</comment>
+ <comment xml:lang="he">קוד מקור Meson</comment>
+ <comment xml:lang="hr">Meson izvorni kôd</comment>
+@@ -35497,31 +36724,35 @@
+ <comment xml:lang="oc">còde font Meson</comment>
+ <comment xml:lang="pl">Kod źródłowy Meson</comment>
+ <comment xml:lang="pt">código origem Meson</comment>
+- <comment xml:lang="pt_BR">Código-fonte Meson</comment>
++ <comment xml:lang="pt-BR">Código-fonte Meson</comment>
+ <comment xml:lang="ru">Исходный код Meson</comment>
+ <comment xml:lang="sk">Zdrojový kód Meson</comment>
++ <comment xml:lang="sl">Izvorna koda Meson</comment>
+ <comment xml:lang="sr">Месон изворни ко̂д</comment>
+ <comment xml:lang="sv">Meson-källkod</comment>
+ <comment xml:lang="tr">Meson kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою Meson</comment>
+- <comment xml:lang="zh_CN">Meson 源代码</comment>
+- <comment xml:lang="zh_TW">Meson 源碼</comment>
++ <comment xml:lang="zh-CN">Meson 源代码</comment>
++ <comment xml:lang="zh-TW">Meson 源碼</comment>
+ <glob pattern="meson.build"/>
+ <glob pattern="meson_options.txt"/>
+ <sub-class-of type="text/plain"/>
+ </mime-type>
+ <mime-type type="text/x-modelica">
+ <comment>Modelica model</comment>
++ <comment xml:lang="af">Modelica-model</comment>
++ <comment xml:lang="bg">Модел — Modelica</comment>
+ <comment xml:lang="ca">model de Modelica</comment>
+ <comment xml:lang="cs">model Modelica</comment>
+ <comment xml:lang="da">Modelica-model</comment>
+ <comment xml:lang="de">Modelica-Modell</comment>
+ <comment xml:lang="el">Μοντέλο Modelica</comment>
+- <comment xml:lang="en_GB">Modelica model</comment>
++ <comment xml:lang="en-GB">Modelica model</comment>
+ <comment xml:lang="es">modelo de Modelica</comment>
+ <comment xml:lang="eu">Modelica modeloa</comment>
+ <comment xml:lang="fi">Modelica-malli</comment>
+ <comment xml:lang="fr">modèle Modelica</comment>
++ <comment xml:lang="fur">model Modelica</comment>
+ <comment xml:lang="ga">samhail Modelica</comment>
+ <comment xml:lang="gl">Modelo de Modelica</comment>
+ <comment xml:lang="he">דגם של Modelica</comment>
+@@ -35537,7 +36768,7 @@
+ <comment xml:lang="oc">modèl Modelica</comment>
+ <comment xml:lang="pl">Model Modelica</comment>
+ <comment xml:lang="pt">modelo Modelica</comment>
+- <comment xml:lang="pt_BR">Modelo da Modelica</comment>
++ <comment xml:lang="pt-BR">Modelo da Modelica</comment>
+ <comment xml:lang="ru">Модель Modelica</comment>
+ <comment xml:lang="sk">Model Modelica</comment>
+ <comment xml:lang="sl">Model Modelica</comment>
+@@ -35545,43 +36776,45 @@
+ <comment xml:lang="sv">Modelica-modell</comment>
+ <comment xml:lang="tr">Modelica modeli</comment>
+ <comment xml:lang="uk">модель Modelica</comment>
+- <comment xml:lang="zh_CN">Modelica 模型</comment>
+- <comment xml:lang="zh_TW">Modelica 模型</comment>
++ <comment xml:lang="zh-CN">Modelica 模型</comment>
++ <comment xml:lang="zh-TW">Modelica 模型</comment>
+ <sub-class-of type="text/plain"/>
+ <magic priority="10">
+- <match value="//" type="string" offset="0"/>
++ <match type="string" value="//" offset="0"/>
+ </magic>
+ <magic priority="50">
+- <match value="function" type="string" offset="0"/>
++ <match type="string" value="function" offset="0"/>
+ </magic>
+ <magic priority="50">
+- <match value="class" type="string" offset="0"/>
++ <match type="string" value="class" offset="0"/>
+ </magic>
+ <magic priority="50">
+- <match value="model" type="string" offset="0"/>
++ <match type="string" value="model" offset="0"/>
+ </magic>
+ <magic priority="50">
+- <match value="record" type="string" offset="0"/>
++ <match type="string" value="record" offset="0"/>
+ </magic>
+ <glob pattern="*.mo"/>
+ </mime-type>
+ <mime-type type="text/x-pascal">
+ <comment>Pascal source code</comment>
++ <comment xml:lang="af">Pascal-bronkode</comment>
+ <comment xml:lang="ar">شفرة مصدر باسكال</comment>
+- <comment xml:lang="be@latin">Kryničny kod Pascal</comment>
++ <comment xml:lang="be-Latn">Kryničny kod Pascal</comment>
+ <comment xml:lang="bg">Изходен код — Pascal</comment>
+ <comment xml:lang="ca">codi font en Pascal</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce Pascal</comment>
+- <comment xml:lang="da">Pascalkildekode</comment>
++ <comment xml:lang="da">Pascal-kildekode</comment>
+ <comment xml:lang="de">Pascal-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας Pascal</comment>
+- <comment xml:lang="en_GB">Pascal source code</comment>
++ <comment xml:lang="en-GB">Pascal source code</comment>
+ <comment xml:lang="eo">Pascal-fontkodo</comment>
+ <comment xml:lang="es">código fuente en Pascal</comment>
+ <comment xml:lang="eu">Pascal iturburu-kodea</comment>
+ <comment xml:lang="fi">Pascal-lähdekoodi</comment>
+ <comment xml:lang="fo">Pascal keldukota</comment>
+ <comment xml:lang="fr">code source Pascal</comment>
++ <comment xml:lang="fur">codiç sorzint Pascal</comment>
+ <comment xml:lang="ga">cód foinseach Pascal</comment>
+ <comment xml:lang="gl">código fonte en Pascal</comment>
+ <comment xml:lang="he">קוד מקור של Pascal</comment>
+@@ -35602,7 +36835,7 @@
+ <comment xml:lang="oc">còde font Pascal</comment>
+ <comment xml:lang="pl">Kod źródłowy Pascal</comment>
+ <comment xml:lang="pt">código origem Pascal</comment>
+- <comment xml:lang="pt_BR">Código-fonte Pascal</comment>
++ <comment xml:lang="pt-BR">Código-fonte Pascal</comment>
+ <comment xml:lang="ro">Cod sursă Pascal</comment>
+ <comment xml:lang="ru">Исходный код Pascal</comment>
+ <comment xml:lang="sk">Zdrojový kód Pascal</comment>
+@@ -35613,29 +36846,31 @@
+ <comment xml:lang="tr">Pascal kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою Pascal</comment>
+ <comment xml:lang="vi">Mã nguồn Pascal</comment>
+- <comment xml:lang="zh_CN">Pascal 源代码</comment>
+- <comment xml:lang="zh_TW">Pascal 源碼</comment>
++ <comment xml:lang="zh-CN">Pascal 源代码</comment>
++ <comment xml:lang="zh-TW">Pascal 源碼</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.p"/>
+ <glob pattern="*.pas"/>
+ </mime-type>
+ <mime-type type="text/x-patch">
+ <comment>differences between files</comment>
++ <comment xml:lang="af">verskille tussen lêers</comment>
+ <comment xml:lang="ar">الاختلافات بين الملفات</comment>
+- <comment xml:lang="be@latin">adroźnieńni pamiž fajłami</comment>
++ <comment xml:lang="be-Latn">adroźnieńni pamiž fajłami</comment>
+ <comment xml:lang="bg">Разлики между файлове</comment>
+ <comment xml:lang="ca">diferències entre fitxers</comment>
+ <comment xml:lang="cs">rozdíly mezi soubory</comment>
+ <comment xml:lang="da">forskel mellem filer</comment>
+ <comment xml:lang="de">Unterschiede zwischen Dateien</comment>
+ <comment xml:lang="el">Διαφορές μεταξύ αρχείων</comment>
+- <comment xml:lang="en_GB">differences between files</comment>
++ <comment xml:lang="en-GB">differences between files</comment>
+ <comment xml:lang="eo">diferencoj inter dosieroj</comment>
+ <comment xml:lang="es">diferencias entre archivos</comment>
+ <comment xml:lang="eu">fitxategien arteko ezberdintasunak</comment>
+ <comment xml:lang="fi">tiedostojen väliset erot</comment>
+ <comment xml:lang="fo">munur millum fílur</comment>
+ <comment xml:lang="fr">différences entre fichiers</comment>
++ <comment xml:lang="fur">diferencis tra file</comment>
+ <comment xml:lang="ga">difríochtaí idir chomhaid</comment>
+ <comment xml:lang="gl">diferenzas entre ficheiros</comment>
+ <comment xml:lang="he">הבדל בין קבצים</comment>
+@@ -35656,7 +36891,7 @@
+ <comment xml:lang="oc">différences entre fichièrs</comment>
+ <comment xml:lang="pl">Różnica pomiędzy plikami</comment>
+ <comment xml:lang="pt">diferenças entre ficheiros</comment>
+- <comment xml:lang="pt_BR">Diferenças entre arquivos</comment>
++ <comment xml:lang="pt-BR">Diferenças entre arquivos</comment>
+ <comment xml:lang="ro">diferențe între fișiere</comment>
+ <comment xml:lang="ru">Различия между файлами</comment>
+ <comment xml:lang="sk">Rozdiely medzi súbormi</comment>
+@@ -35667,39 +36902,41 @@
+ <comment xml:lang="tr">dosyalar arasındaki fark</comment>
+ <comment xml:lang="uk">різниця між файлами</comment>
+ <comment xml:lang="vi">khác biệt giữa các tập tin</comment>
+- <comment xml:lang="zh_CN">文件的区别</comment>
+- <comment xml:lang="zh_TW">檔案內容差異</comment>
++ <comment xml:lang="zh-CN">文件的区别</comment>
++ <comment xml:lang="zh-TW">檔案內容差異</comment>
+ <alias type="text/x-diff"/>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="diff\t" type="string" offset="0"/>
+- <match value="diff " type="string" offset="0"/>
+- <match value="***\t" type="string" offset="0"/>
+- <match value="*** " type="string" offset="0"/>
+- <match value="=== " type="string" offset="0"/>
+- <match value="--- " type="string" offset="0"/>
+- <match value="Only in\t" type="string" offset="0"/>
+- <match value="Only in " type="string" offset="0"/>
+- <match value="Common subdirectories: " type="string" offset="0"/>
+- <match value="Index:" type="string" offset="0"/>
++ <match type="string" value="diff\t" offset="0"/>
++ <match type="string" value="diff " offset="0"/>
++ <match type="string" value="***\t" offset="0"/>
++ <match type="string" value="*** " offset="0"/>
++ <match type="string" value="=== " offset="0"/>
++ <match type="string" value="--- " offset="0"/>
++ <match type="string" value="Only in\t" offset="0"/>
++ <match type="string" value="Only in " offset="0"/>
++ <match type="string" value="Common subdirectories: " offset="0"/>
++ <match type="string" value="Index:" offset="0"/>
+ </magic>
+ <glob pattern="*.diff"/>
+ <glob pattern="*.patch"/>
+ </mime-type>
+ <mime-type type="text/x-go">
+ <comment>Go source code</comment>
++ <comment xml:lang="af">Go-bronkode</comment>
+ <comment xml:lang="bg">Изходен код — Go</comment>
+ <comment xml:lang="ca">codi font en Go</comment>
+ <comment xml:lang="cs">zdrojový kód v jazyce Go</comment>
+ <comment xml:lang="da">Go-kildekode</comment>
+ <comment xml:lang="de">Go-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας Go</comment>
+- <comment xml:lang="en_GB">Go source code</comment>
++ <comment xml:lang="en-GB">Go source code</comment>
+ <comment xml:lang="eo">Go-fontkodo</comment>
+ <comment xml:lang="es">código fuente en Go</comment>
+ <comment xml:lang="eu">Go iturburu-kodea</comment>
+ <comment xml:lang="fi">Go-lähdekoodi</comment>
+ <comment xml:lang="fr">code source Go</comment>
++ <comment xml:lang="fur">codiç sorzint Go</comment>
+ <comment xml:lang="ga">cód foinseach Go</comment>
+ <comment xml:lang="gl">código fonte de Go</comment>
+ <comment xml:lang="he">קוד מקור של Go</comment>
+@@ -35717,7 +36954,7 @@
+ <comment xml:lang="oc">còde font Go</comment>
+ <comment xml:lang="pl">Kod źródłowy Go</comment>
+ <comment xml:lang="pt">cigo origem Go</comment>
+- <comment xml:lang="pt_BR">Código-fonte Go</comment>
++ <comment xml:lang="pt-BR">Código-fonte Go</comment>
+ <comment xml:lang="ru">Исходный код Go</comment>
+ <comment xml:lang="sk">Zdrojový kód Go</comment>
+ <comment xml:lang="sl">Izvorna koda Go</comment>
+@@ -35725,23 +36962,26 @@
+ <comment xml:lang="sv">Go-källkod</comment>
+ <comment xml:lang="tr">Go kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою Go</comment>
+- <comment xml:lang="zh_CN">Go 源代码</comment>
+- <comment xml:lang="zh_TW">Go 源碼</comment>
++ <comment xml:lang="zh-CN">Go 源代码</comment>
++ <comment xml:lang="zh-TW">Go 源碼</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.go"/>
+ </mime-type>
+ <mime-type type="text/x-scons">
+ <comment>SCons configuration file</comment>
++ <comment xml:lang="af">SCons-opstellingslêer</comment>
++ <comment xml:lang="bg">Настройки — SCons</comment>
+ <comment xml:lang="ca">fitxer de configuració de SCons</comment>
+ <comment xml:lang="cs">konfigurační soubor SCons</comment>
+ <comment xml:lang="da">SCons-konfigurationsfil</comment>
+ <comment xml:lang="de">SCons-Konfigurationsdatei</comment>
+ <comment xml:lang="el">Αρχείο ρυθμίσεων SCons</comment>
+- <comment xml:lang="en_GB">SCons configuration file</comment>
++ <comment xml:lang="en-GB">SCons configuration file</comment>
+ <comment xml:lang="es">archivo de configuración de SCons</comment>
+ <comment xml:lang="eu">SCons konfigurazio-fitxategia</comment>
+ <comment xml:lang="fi">SCons-asetustiedosto</comment>
+ <comment xml:lang="fr">fichier de configuration SCons</comment>
++ <comment xml:lang="fur">file di configurazion SCons</comment>
+ <comment xml:lang="ga">comhad cumraíochta SCons</comment>
+ <comment xml:lang="he">קובץ תצורה של SCons</comment>
+ <comment xml:lang="hr">SCons datoteka podešavanja</comment>
+@@ -35754,7 +36994,7 @@
+ <comment xml:lang="oc">fichièr de configuracion SCons</comment>
+ <comment xml:lang="pl">Plik konfiguracji SCons</comment>
+ <comment xml:lang="pt">ficheiro de configuração SCons</comment>
+- <comment xml:lang="pt_BR">Arquivo de configuração do SCons</comment>
++ <comment xml:lang="pt-BR">Arquivo de configuração do SCons</comment>
+ <comment xml:lang="ru">Файл настроек SCons</comment>
+ <comment xml:lang="sk">Konfiguračný súbor SCons</comment>
+ <comment xml:lang="sl">Prilagoditvena datoteka SCons</comment>
+@@ -35762,8 +37002,8 @@
+ <comment xml:lang="sv">SCons-konfigurationsfil</comment>
+ <comment xml:lang="tr">SCons yapılandırma dosyası</comment>
+ <comment xml:lang="uk">файл налаштувань SCons</comment>
+- <comment xml:lang="zh_CN">SCons 配置文件</comment>
+- <comment xml:lang="zh_TW">SCons 組態檔</comment>
++ <comment xml:lang="zh-CN">SCons 配置文件</comment>
++ <comment xml:lang="zh-TW">SCons 組態檔</comment>
+ <sub-class-of type="text/x-python"/>
+ <glob pattern="SConstruct"/>
+ <glob pattern="SConscript"/>
+@@ -35771,12 +37011,19 @@
+ </mime-type>
+ <mime-type type="text/x-python3">
+ <comment>Python 3 script</comment>
++ <comment xml:lang="af">Python 3-skrip</comment>
++ <comment xml:lang="bg">Скрипт — Python 3</comment>
+ <comment xml:lang="ca">script Python 3</comment>
+ <comment xml:lang="cs">skript v jazyce Python 3</comment>
++ <comment xml:lang="da">Python 3-program</comment>
+ <comment xml:lang="de">Python-3-Skript</comment>
+- <comment xml:lang="en_GB">Python 3 script</comment>
++ <comment xml:lang="en-GB">Python 3 script</comment>
+ <comment xml:lang="es">secuencia de órdenes en Python 3</comment>
++ <comment xml:lang="eu">Python 3 script-a</comment>
+ <comment xml:lang="fi">Python 3 -skripti</comment>
++ <comment xml:lang="fr">script Python 3</comment>
++ <comment xml:lang="fur">script Python 3</comment>
++ <comment xml:lang="ga">script Python 3</comment>
+ <comment xml:lang="hr">Python3 skripta</comment>
+ <comment xml:lang="hu">Python 3 parancsfájl</comment>
+ <comment xml:lang="id">Skrip Python 3</comment>
+@@ -35784,47 +37031,51 @@
+ <comment xml:lang="kk">Python 3 скрипті</comment>
+ <comment xml:lang="ko">파이썬 3 스크립트</comment>
+ <comment xml:lang="pl">Skrypt Python 3</comment>
+- <comment xml:lang="pt_BR">Script Python 3</comment>
++ <comment xml:lang="pt-BR">Script Python 3</comment>
+ <comment xml:lang="ru">Сценарий Python 3</comment>
+ <comment xml:lang="sk">Skript Python 3</comment>
++ <comment xml:lang="sl">Skript Python 3</comment>
+ <comment xml:lang="sv">Python 3-skript</comment>
++ <comment xml:lang="tr">Python 3 betiği</comment>
+ <comment xml:lang="uk">скрипт мовою Python 3</comment>
+- <comment xml:lang="zh_CN">Python 3 脚本</comment>
+- <comment xml:lang="zh_TW">Python 3 指令稿</comment>
+- <sub-class-of type='text/x-python'/>
+- <magic priority="60">
+- <match value="#!/bin/python3" type="string" offset="0"/>
+- <match value="#! /bin/python3" type="string" offset="0"/>
+- <match value='eval \"exec /bin/python3' type="string" offset="0"/>
+- <match value="#!/usr/bin/python3" type="string" offset="0"/>
+- <match value="#! /usr/bin/python3" type="string" offset="0"/>
+- <match value='eval \"exec /usr/bin/python3' type="string" offset="0"/>
+- <match value="#!/usr/local/bin/python3" type="string" offset="0"/>
+- <match value="#! /usr/local/bin/python3" type="string" offset="0"/>
+- <match value='eval \"exec /usr/local/bin/python3' type="string" offset="0"/>
+- <match value='/bin/env python3' type="string" offset="2:16"/>
+- </magic>
+- <glob weight="50" pattern="*.py"/>
+- <glob weight="60" pattern="*.py3"/>
+- <glob weight="60" pattern="*.py3x"/>
++ <comment xml:lang="zh-CN">Python 3 脚本</comment>
++ <comment xml:lang="zh-TW">Python 3 指令稿</comment>
++ <sub-class-of type="text/x-python"/>
++ <magic priority="60"><!-- higher priority than text/x-python -->
++ <match type="string" value="#!/bin/python3" offset="0"/>
++ <match type="string" value="#! /bin/python3" offset="0"/>
++ <match type="string" value="eval \&quot;exec /bin/python3" offset="0"/>
++ <match type="string" value="#!/usr/bin/python3" offset="0"/>
++ <match type="string" value="#! /usr/bin/python3" offset="0"/>
++ <match type="string" value="eval \&quot;exec /usr/bin/python3" offset="0"/>
++ <match type="string" value="#!/usr/local/bin/python3" offset="0"/>
++ <match type="string" value="#! /usr/local/bin/python3" offset="0"/>
++ <match type="string" value="eval \&quot;exec /usr/local/bin/python3" offset="0"/>
++ <match type="string" value="/bin/env python3" offset="2:16"/>
++ </magic>
++ <glob pattern="*.py" weight="50"/><!-- lower priority than in text/x-python -->
++ <glob pattern="*.py3" weight="60"/>
++ <glob pattern="*.py3x" weight="60"/>
+ </mime-type>
+ <mime-type type="text/x-python">
+ <comment>Python script</comment>
++ <comment xml:lang="af">Python-skrip</comment>
+ <comment xml:lang="ar">سكربت بايثون</comment>
+- <comment xml:lang="be@latin">Skrypt Python</comment>
++ <comment xml:lang="be-Latn">Skrypt Python</comment>
+ <comment xml:lang="bg">Скрипт — Python</comment>
+ <comment xml:lang="ca">script Python</comment>
+ <comment xml:lang="cs">skript v jazyce Python</comment>
+- <comment xml:lang="da">Pythonprogram</comment>
++ <comment xml:lang="da">Python-program</comment>
+ <comment xml:lang="de">Python-Skript</comment>
+ <comment xml:lang="el">Δέσμη ενεργειών Python</comment>
+- <comment xml:lang="en_GB">Python script</comment>
++ <comment xml:lang="en-GB">Python script</comment>
+ <comment xml:lang="eo">Python-skripto</comment>
+ <comment xml:lang="es">secuencia de órdenes en Python</comment>
+ <comment xml:lang="eu">Python script-a</comment>
+ <comment xml:lang="fi">Python-komentotiedosto</comment>
+ <comment xml:lang="fo">Python boðrøð</comment>
+ <comment xml:lang="fr">script Python</comment>
++ <comment xml:lang="fur">script Python</comment>
+ <comment xml:lang="ga">script Python</comment>
+ <comment xml:lang="gl">Script en Python</comment>
+ <comment xml:lang="he">תסריט Python</comment>
+@@ -35845,7 +37096,7 @@
+ <comment xml:lang="oc">escript Python</comment>
+ <comment xml:lang="pl">Skrypt Python</comment>
+ <comment xml:lang="pt">script Python</comment>
+- <comment xml:lang="pt_BR">Script Python</comment>
++ <comment xml:lang="pt-BR">Script Python</comment>
+ <comment xml:lang="ro">Script Python</comment>
+ <comment xml:lang="ru">Сценарий Python</comment>
+ <comment xml:lang="sk">Skript Python</comment>
+@@ -35856,43 +37107,56 @@
+ <comment xml:lang="tr">Python betiği</comment>
+ <comment xml:lang="uk">скрипт мовою Python</comment>
+ <comment xml:lang="vi">Văn lệnh Python</comment>
+- <comment xml:lang="zh_CN">Python 脚本</comment>
+- <comment xml:lang="zh_TW">Python 指令稿</comment>
+- <sub-class-of type='application/x-executable'/>
++ <comment xml:lang="zh-CN">Python 脚本</comment>
++ <comment xml:lang="zh-TW">Python 指令稿</comment>
++ <sub-class-of type="application/x-executable"/>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="#!/bin/python" type="string" offset="0"/>
+- <match value="#! /bin/python" type="string" offset="0"/>
+- <match value='eval \"exec /bin/python' type="string" offset="0"/>
+- <match value="#!/usr/bin/python" type="string" offset="0"/>
+- <match value="#! /usr/bin/python" type="string" offset="0"/>
+- <match value='eval \"exec /usr/bin/python' type="string" offset="0"/>
+- <match value="#!/usr/local/bin/python" type="string" offset="0"/>
+- <match value="#! /usr/local/bin/python" type="string" offset="0"/>
+- <match value='eval \"exec /usr/local/bin/python' type="string" offset="0"/>
+- <match value='/bin/env python' type="string" offset="2:16"/>
+- </magic>
+- <glob weight="60" pattern="*.py"/>
+- <glob weight="60" pattern="*.pyx"/>
+- <glob weight="60" pattern="*.wsgi"/>
++ <match type="string" value="#!/bin/python" offset="0"/>
++ <match type="string" value="#! /bin/python" offset="0"/>
++ <match type="string" value="eval \&quot;exec /bin/python" offset="0"/>
++ <match type="string" value="#!/usr/bin/python" offset="0"/>
++ <match type="string" value="#! /usr/bin/python" offset="0"/>
++ <match type="string" value="eval \&quot;exec /usr/bin/python" offset="0"/>
++ <match type="string" value="#!/usr/local/bin/python" offset="0"/>
++ <match type="string" value="#! /usr/local/bin/python" offset="0"/>
++ <match type="string" value="eval \&quot;exec /usr/local/bin/python" offset="0"/>
++ <match type="string" value="/bin/env python" offset="2:16"/>
++ </magic>
++ <glob pattern="*.py" weight="60"/>
++ <glob pattern="*.pyx" weight="60"/>
++ <glob pattern="*.wsgi" weight="60"/>
++ </mime-type>
++ <mime-type type="text/x-sagemath">
++ <comment>SageMath script</comment>
++ <comment xml:lang="ca">script SageMath</comment>
++ <comment xml:lang="fi">SageMath skripti</comment>
++ <comment xml:lang="it">Script SageMath</comment>
++ <comment xml:lang="pl">Skrypt SageMath</comment>
++ <comment xml:lang="pt-BR">Script SageMath</comment>
++ <comment xml:lang="uk">скрипт SageMath</comment>
++ <sub-class-of type="text/x-python"/>
++ <glob pattern="*.sage" weight="60"/>
+ </mime-type>
+ <mime-type type="text/x-lua">
+ <comment>Lua script</comment>
++ <comment xml:lang="af">Lua-skrip</comment>
+ <comment xml:lang="ar">سكربت Lua</comment>
+- <comment xml:lang="be@latin">Skrypt Lua</comment>
++ <comment xml:lang="be-Latn">Skrypt Lua</comment>
+ <comment xml:lang="bg">Скрипт на Lua</comment>
+ <comment xml:lang="ca">script Lua</comment>
+ <comment xml:lang="cs">skript v jazyce Lua</comment>
+- <comment xml:lang="da">Luaprogram</comment>
++ <comment xml:lang="da">Lua-program</comment>
+ <comment xml:lang="de">Lua-Skript</comment>
+ <comment xml:lang="el">Δέσμη ενεργειών Lua</comment>
+- <comment xml:lang="en_GB">Lua script</comment>
++ <comment xml:lang="en-GB">Lua script</comment>
+ <comment xml:lang="eo">Lua-skripto</comment>
+ <comment xml:lang="es">secuencia de órdenes en Lua</comment>
+ <comment xml:lang="eu">Lua script-a</comment>
+ <comment xml:lang="fi">Lua-komentotiedosto</comment>
+ <comment xml:lang="fo">Lua boðrøð</comment>
+ <comment xml:lang="fr">script Lua</comment>
++ <comment xml:lang="fur">script Lua</comment>
+ <comment xml:lang="ga">script Lua</comment>
+ <comment xml:lang="gl">script de Lua</comment>
+ <comment xml:lang="he">תסריט Lua</comment>
+@@ -35912,7 +37176,7 @@
+ <comment xml:lang="oc">escript Lua</comment>
+ <comment xml:lang="pl">Skrypt Lua</comment>
+ <comment xml:lang="pt">script Lua</comment>
+- <comment xml:lang="pt_BR">Script Lua</comment>
++ <comment xml:lang="pt-BR">Script Lua</comment>
+ <comment xml:lang="ro">Script Lua</comment>
+ <comment xml:lang="ru">Сценарий Lua</comment>
+ <comment xml:lang="sk">Skript Lua</comment>
+@@ -35923,24 +37187,25 @@
+ <comment xml:lang="tr">Lua betiği</comment>
+ <comment xml:lang="uk">скрипт Lua</comment>
+ <comment xml:lang="vi">Văn lệnh Lua</comment>
+- <comment xml:lang="zh_CN">Lua 脚本</comment>
+- <comment xml:lang="zh_TW">Lua 指令稿</comment>
+- <sub-class-of type='application/x-executable'/>
++ <comment xml:lang="zh-CN">Lua 脚本</comment>
++ <comment xml:lang="zh-TW">Lua 指令稿</comment>
++ <sub-class-of type="application/x-executable"/>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="/bin/lua" type="string" offset="2:16"/>
+- <match value="/bin/luajit" type="string" offset="2:16"/>
+- <match value="/bin/env lua" type="string" offset="2:16"/>
+- <match value="/bin/env luajit" type="string" offset="2:16"/>
++ <match type="string" value="/bin/lua" offset="2:16"/>
++ <match type="string" value="/bin/luajit" offset="2:16"/>
++ <match type="string" value="/bin/env lua" offset="2:16"/>
++ <match type="string" value="/bin/env luajit" offset="2:16"/>
+ </magic>
+ <glob pattern="*.lua"/>
+ </mime-type>
+ <mime-type type="text/x-readme">
+ <comment>README document</comment>
++ <comment xml:lang="af">README-dokument</comment>
+ <comment xml:lang="ar">مستند README</comment>
+ <comment xml:lang="ast">Documentu LLEIME</comment>
+ <comment xml:lang="az">README sənədi</comment>
+- <comment xml:lang="be@latin">Dakument README</comment>
++ <comment xml:lang="be-Latn">Dakument README</comment>
+ <comment xml:lang="bg">Документ — „Да се прочете“</comment>
+ <comment xml:lang="ca">document README</comment>
+ <comment xml:lang="cs">dokument README</comment>
+@@ -35948,13 +37213,14 @@
+ <comment xml:lang="da">README-dokument</comment>
+ <comment xml:lang="de">README-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο README</comment>
+- <comment xml:lang="en_GB">README document</comment>
++ <comment xml:lang="en-GB">README document</comment>
+ <comment xml:lang="eo">README-dokumento</comment>
+ <comment xml:lang="es">documento README</comment>
+ <comment xml:lang="eu">README dokumentua</comment>
+ <comment xml:lang="fi">LUEMINUT-asiakirja</comment>
+ <comment xml:lang="fo">README skjal</comment>
+ <comment xml:lang="fr">document LISEZ-MOI</comment>
++ <comment xml:lang="fur">document README</comment>
+ <comment xml:lang="ga">cáipéis README</comment>
+ <comment xml:lang="gl">documento README</comment>
+ <comment xml:lang="he">מסמך README</comment>
+@@ -35975,7 +37241,7 @@
+ <comment xml:lang="oc">document LISEZ-MOI</comment>
+ <comment xml:lang="pl">Dokument README</comment>
+ <comment xml:lang="pt">documento LEIA-ME</comment>
+- <comment xml:lang="pt_BR">Documento README</comment>
++ <comment xml:lang="pt-BR">Documento README</comment>
+ <comment xml:lang="ro">Document README</comment>
+ <comment xml:lang="ru">Документ README</comment>
+ <comment xml:lang="sk">Dokument README</comment>
+@@ -35983,32 +37249,34 @@
+ <comment xml:lang="sq">Dokument README</comment>
+ <comment xml:lang="sr">документ ПРОЧИТАЈМЕ</comment>
+ <comment xml:lang="sv">README-dokument</comment>
+- <comment xml:lang="tr">BENİOKU belgesi</comment>
++ <comment xml:lang="tr">README belgesi</comment>
+ <comment xml:lang="uk">документ README</comment>
+ <comment xml:lang="vi">Tài liệu Đọc Đi (README)</comment>
+- <comment xml:lang="zh_CN">README 文档</comment>
+- <comment xml:lang="zh_TW">README 說明文件</comment>
++ <comment xml:lang="zh-CN">README 文档</comment>
++ <comment xml:lang="zh-TW">README 說明文件</comment>
+ <sub-class-of type="text/plain"/>
+ <glob weight="10" pattern="README*"/>
+ </mime-type>
+ <mime-type type="text/x-nfo">
+ <comment>NFO document</comment>
++ <comment xml:lang="af">NFO-dokument</comment>
+ <comment xml:lang="ar">مستند NFO</comment>
+ <comment xml:lang="ast">Documentu NFO</comment>
+- <comment xml:lang="be@latin">Dakument NFO</comment>
++ <comment xml:lang="be-Latn">Dakument NFO</comment>
+ <comment xml:lang="bg">Документ — NFO</comment>
+ <comment xml:lang="ca">document NFO</comment>
+ <comment xml:lang="cs">dokument NFO</comment>
+ <comment xml:lang="da">NFO-dokument</comment>
+ <comment xml:lang="de">NFO-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο NFO</comment>
+- <comment xml:lang="en_GB">NFO document</comment>
++ <comment xml:lang="en-GB">NFO document</comment>
+ <comment xml:lang="eo">NFO-dokumento</comment>
+ <comment xml:lang="es">documento NFO</comment>
+ <comment xml:lang="eu">NFO dokumentua</comment>
+ <comment xml:lang="fi">NFO-asiakirja</comment>
+ <comment xml:lang="fo">NFO skjal</comment>
+ <comment xml:lang="fr">document NFO</comment>
++ <comment xml:lang="fur">document NFO</comment>
+ <comment xml:lang="ga">cáipéis NFO</comment>
+ <comment xml:lang="gl">documento NFO</comment>
+ <comment xml:lang="he">מסמך NFO</comment>
+@@ -36028,7 +37296,7 @@
+ <comment xml:lang="oc">document NFO</comment>
+ <comment xml:lang="pl">Dokument NFO</comment>
+ <comment xml:lang="pt">documento NFO</comment>
+- <comment xml:lang="pt_BR">Documento NFO</comment>
++ <comment xml:lang="pt-BR">Documento NFO</comment>
+ <comment xml:lang="ro">Document NFO</comment>
+ <comment xml:lang="ru">Документ NFO</comment>
+ <comment xml:lang="sk">Dokument NFO</comment>
+@@ -36039,27 +37307,29 @@
+ <comment xml:lang="tr">NFO belgesi</comment>
+ <comment xml:lang="uk">документ NFO</comment>
+ <comment xml:lang="vi">Tài liệu NFO</comment>
+- <comment xml:lang="zh_CN">NFO 文档</comment>
+- <comment xml:lang="zh_TW">NFO 文件</comment>
++ <comment xml:lang="zh-CN">NFO 文档</comment>
++ <comment xml:lang="zh-TW">NFO 文件</comment>
+ <sub-class-of type="text/x-readme"/>
+ <glob pattern="*.nfo"/>
+ </mime-type>
+ <mime-type type="text/x-rpm-spec">
+ <comment>RPM spec file</comment>
++ <comment xml:lang="af">RPM-spesifikasielêer</comment>
+ <comment xml:lang="ar">ملف مواصفات RPM</comment>
+- <comment xml:lang="be@latin">Specyfikacyjny fajł RPM</comment>
++ <comment xml:lang="be-Latn">Specyfikacyjny fajł RPM</comment>
+ <comment xml:lang="bg">Файл — спецификация за RPM</comment>
+ <comment xml:lang="ca">fitxer spec RPM</comment>
+ <comment xml:lang="cs">soubor specifikace RPM</comment>
+ <comment xml:lang="da">RPM spec-fil</comment>
+ <comment xml:lang="de">RPM-Spezifikationsdatei</comment>
+ <comment xml:lang="el">Αρχείο spec RPM</comment>
+- <comment xml:lang="en_GB">RPM spec file</comment>
++ <comment xml:lang="en-GB">RPM spec file</comment>
+ <comment xml:lang="es">archivo de especificaciones RPM</comment>
+ <comment xml:lang="eu">RPM espezifikazio fitxategia</comment>
+ <comment xml:lang="fi">RPM spec -tiedosto</comment>
+ <comment xml:lang="fo">RPM tøknilýsingarfíla</comment>
+ <comment xml:lang="fr">fichier de spécification RPM</comment>
++ <comment xml:lang="fur">file di specifiche RPM</comment>
+ <comment xml:lang="ga">comhad spec RPM</comment>
+ <comment xml:lang="gl">ficheiro de especificacións RPM</comment>
+ <comment xml:lang="he">קובץ מפרט RPM</comment>
+@@ -36079,7 +37349,7 @@
+ <comment xml:lang="oc">fichièr d'especificacion RPM</comment>
+ <comment xml:lang="pl">Plik spec RPM</comment>
+ <comment xml:lang="pt">ficheiro de especificações RPM</comment>
+- <comment xml:lang="pt_BR">Arquivo de especificação RPM</comment>
++ <comment xml:lang="pt-BR">Arquivo de especificação RPM</comment>
+ <comment xml:lang="ro">Fișier RPM spec</comment>
+ <comment xml:lang="ru">Файл описания RPM</comment>
+ <comment xml:lang="sk">Súbor RPM spec</comment>
+@@ -36090,61 +37360,70 @@
+ <comment xml:lang="tr">RPM spec dosyası</comment>
+ <comment xml:lang="uk">spec-файл RPM</comment>
+ <comment xml:lang="vi">Tập tin đặc tả RPM</comment>
+- <comment xml:lang="zh_CN">RPM spec 文件</comment>
+- <comment xml:lang="zh_TW">RPM spec 規格檔</comment>
++ <comment xml:lang="zh-CN">RPM spec 文件</comment>
++ <comment xml:lang="zh-TW">RPM spec 規格檔</comment>
+ <acronym>RPM</acronym>
+ <expanded-acronym>Red Hat Package Manager</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.spec"/>
+ <magic priority="50">
+- <match value="Summary: " type="string" offset="0"/>
+- <match value="%define " type="string" offset="0"/>
++ <match type="string" value="Summary: " offset="0"/>
++ <match type="string" value="%define " offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="text/x-sass">
+ <comment>Sass CSS pre-processor file</comment>
++ <comment xml:lang="af">Sass CSS-voorverwerkerlêer</comment>
++ <comment xml:lang="bg">Директиви за препроцесора — Sass CSS</comment>
+ <comment xml:lang="ca">fitxer preprocessador CSS Sass</comment>
+ <comment xml:lang="cs">soubor preprocesoru Sass CSS</comment>
+- <comment xml:lang="da">Sass CSS-forbrænderfil</comment>
++ <comment xml:lang="da">Sass CSS pre-processor-fil</comment>
+ <comment xml:lang="de">Sass-CSS-Präprozessordatei</comment>
+- <comment xml:lang="en_GB">Sass CSS pre-processor file</comment>
++ <comment xml:lang="en-GB">Sass CSS pre-processor file</comment>
+ <comment xml:lang="es">archivo de preprocesador de CSS Sass</comment>
++ <comment xml:lang="eu">Sass CSS fitxategi prozesatu gabea</comment>
++ <comment xml:lang="fi">Sass CSS pre-processor -tiedosto</comment>
+ <comment xml:lang="fr">fichier de prétraitement CSS Sass</comment>
++ <comment xml:lang="fur">file di pre-elaborazion di CSS Sass</comment>
+ <comment xml:lang="ga">comhad réamhphróiseálaí CSS Sass</comment>
+ <comment xml:lang="he">קובץ קדם עיבוד Sass CSS</comment>
+ <comment xml:lang="hr">Sass CSS datoteka predobrade</comment>
+ <comment xml:lang="hu">Sass CSS előfeldolgozó fájl</comment>
+- <comment xml:lang="id">berkas pre-processor Sass CSS</comment>
++ <comment xml:lang="id">Berkas pre-processor Sass CSS</comment>
+ <comment xml:lang="it">File CSS Sass</comment>
+ <comment xml:lang="kk">Sass CSS препроцессор файлы</comment>
+ <comment xml:lang="ko">Sass CSS 전처리기 파일</comment>
+ <comment xml:lang="pl">Plik preprocesora CSS Sass</comment>
+- <comment xml:lang="pt_BR">Arquivo de pré-processamento Sass CSS</comment>
++ <comment xml:lang="pt-BR">Arquivo de pré-processamento Sass CSS</comment>
+ <comment xml:lang="ru">Файл препроцессора Sass CSS</comment>
+ <comment xml:lang="sk">Súbor Sass CSS pre-procesora</comment>
+ <comment xml:lang="sr">датотека Сас ЦСС пре-процесора</comment>
+ <comment xml:lang="sv">Sass CSS-preprocessorfil</comment>
+ <comment xml:lang="tr">Sass CSS önişlemci dosyası</comment>
+ <comment xml:lang="uk">файл препроцесора CSS Sass</comment>
+- <comment xml:lang="zh_CN">Sass CSS 预处理器文件</comment>
+- <comment xml:lang="zh_TW">Sass CSS 處理器前檔案</comment>
++ <comment xml:lang="zh-CN">Sass CSS 预处理器文件</comment>
++ <comment xml:lang="zh-TW">Sass CSS 處理器前檔案</comment>
++ <acronym>Sass</acronym>
++ <expanded-acronym>Syntactically Awesome Style Sheets</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.sass"/>
+ <generic-icon name="text-x-generic"/>
+ </mime-type>
+ <mime-type type="text/x-scala">
+ <comment>Scala source code</comment>
++ <comment xml:lang="af">Scala-bronkode</comment>
+ <comment xml:lang="bg">Изходен код — Scala</comment>
+ <comment xml:lang="ca">codi font en Scala</comment>
+ <comment xml:lang="cs">zdrojový kód Scala</comment>
+ <comment xml:lang="da">Scala-kildekode</comment>
+ <comment xml:lang="de">Scala-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας Scala</comment>
+- <comment xml:lang="en_GB">Scala source code</comment>
++ <comment xml:lang="en-GB">Scala source code</comment>
+ <comment xml:lang="es">código fuente en Scala</comment>
+ <comment xml:lang="eu">Scala iturburu-kodea</comment>
+ <comment xml:lang="fi">Scala-lähdekoodi</comment>
+ <comment xml:lang="fr">code source Scala</comment>
++ <comment xml:lang="fur">codiç sorzint Scala</comment>
+ <comment xml:lang="ga">cód foinseach Scala</comment>
+ <comment xml:lang="gl">código fnote en Scala</comment>
+ <comment xml:lang="he">קוד מקור של Scala</comment>
+@@ -36162,7 +37441,7 @@
+ <comment xml:lang="oc">còde font Scala</comment>
+ <comment xml:lang="pl">Kod źródłowy Scala</comment>
+ <comment xml:lang="pt">código origem Scala</comment>
+- <comment xml:lang="pt_BR">Código-fonte Scala</comment>
++ <comment xml:lang="pt-BR">Código-fonte Scala</comment>
+ <comment xml:lang="ru">Исходный код Scala</comment>
+ <comment xml:lang="sk">Zdrojový kód Scala</comment>
+ <comment xml:lang="sl">Izvorna koda Scala</comment>
+@@ -36170,30 +37449,32 @@
+ <comment xml:lang="sv">Scala-källkod</comment>
+ <comment xml:lang="tr">Scala kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний код мовою Scala</comment>
+- <comment xml:lang="zh_CN">Scala 源代码</comment>
+- <comment xml:lang="zh_TW">Scala 源碼</comment>
++ <comment xml:lang="zh-CN">Scala 源代码</comment>
++ <comment xml:lang="zh-TW">Scala 源碼</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.scala"/>
+ </mime-type>
+ <mime-type type="text/x-scheme">
+ <comment>Scheme source code</comment>
++ <comment xml:lang="af">Scheme-bronkode</comment>
+ <comment xml:lang="ar">شفرة مصدر Scheme</comment>
+ <comment xml:lang="az">Sxem mənbə kodu</comment>
+- <comment xml:lang="be@latin">Kryničny kod Scheme</comment>
++ <comment xml:lang="be-Latn">Kryničny kod Scheme</comment>
+ <comment xml:lang="bg">Изходен код — Scheme</comment>
+ <comment xml:lang="ca">codi font en Scheme</comment>
+ <comment xml:lang="cs">zdrojový kód Scheme</comment>
+ <comment xml:lang="cy">Ffynhonnell Rhaglen Scheme</comment>
+- <comment xml:lang="da">Schemekildekode</comment>
++ <comment xml:lang="da">Scheme-kildekode</comment>
+ <comment xml:lang="de">Scheme-Quelltext</comment>
+ <comment xml:lang="el">Πηγαίος κώδικας Scheme</comment>
+- <comment xml:lang="en_GB">Scheme source code</comment>
++ <comment xml:lang="en-GB">Scheme source code</comment>
+ <comment xml:lang="eo">Scheme-fontkodo</comment>
+ <comment xml:lang="es">código fuente en Scheme</comment>
+ <comment xml:lang="eu">Scheme iturburu-kodea</comment>
+ <comment xml:lang="fi">Scheme-lähdekoodi</comment>
+ <comment xml:lang="fo">Scheme keldukota</comment>
+ <comment xml:lang="fr">code source Scheme</comment>
++ <comment xml:lang="fur">codiç sorzint Scheme</comment>
+ <comment xml:lang="ga">cód foinseach Scheme</comment>
+ <comment xml:lang="gl">código fonte en Scheme</comment>
+ <comment xml:lang="he">קוד מקור של Scheme</comment>
+@@ -36214,7 +37495,7 @@
+ <comment xml:lang="oc">còde font Scheme</comment>
+ <comment xml:lang="pl">Kod źródłowy Scheme</comment>
+ <comment xml:lang="pt">código origem Scheme</comment>
+- <comment xml:lang="pt_BR">Código-fonte Scheme</comment>
++ <comment xml:lang="pt-BR">Código-fonte Scheme</comment>
+ <comment xml:lang="ro">Cod sursă Scheme</comment>
+ <comment xml:lang="ru">Исходный код Scheme</comment>
+ <comment xml:lang="sk">Zdrojový kód Scheme</comment>
+@@ -36225,49 +37506,50 @@
+ <comment xml:lang="tr">Scheme kaynak kodu</comment>
+ <comment xml:lang="uk">вихідний файл мовою Scheme</comment>
+ <comment xml:lang="vi">Mã nguồn Scheme</comment>
+- <comment xml:lang="zh_CN">Scheme 源代码</comment>
+- <comment xml:lang="zh_TW">Scheme 源碼</comment>
++ <comment xml:lang="zh-CN">Scheme 源代码</comment>
++ <comment xml:lang="zh-TW">Scheme 源碼</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.scm"/>
+ <glob pattern="*.ss"/>
+ </mime-type>
+ <mime-type type="text/x-scss">
+- <comment>Sass CSS pre-processor file</comment>
+- <comment xml:lang="ca">fitxer preprocessador CSS Sass</comment>
+- <comment xml:lang="cs">soubor preprocesoru Sass CSS</comment>
+- <comment xml:lang="da">Sass CSS-forbrænderfil</comment>
+- <comment xml:lang="de">Sass-CSS-Präprozessordatei</comment>
+- <comment xml:lang="en_GB">Sass CSS pre-processor file</comment>
+- <comment xml:lang="es">archivo de preprocesador de CSS Sass</comment>
+- <comment xml:lang="fr">fichier de prétraitement CSS Sass</comment>
+- <comment xml:lang="ga">comhad réamhphróiseálaí CSS Sass</comment>
+- <comment xml:lang="he">קובץ קדם עיבוד Sass CSS</comment>
+- <comment xml:lang="hr">Sass CSS datoteka predobrade</comment>
+- <comment xml:lang="hu">Sass CSS előfeldolgozó fájl</comment>
+- <comment xml:lang="id">berkas pre-processor Sass CSS</comment>
+- <comment xml:lang="it">File CSS Sass</comment>
+- <comment xml:lang="kk">Sass CSS препроцессор файлы</comment>
+- <comment xml:lang="ko">Sass CSS 전처리기 파일</comment>
+- <comment xml:lang="pl">Plik preprocesora CSS Sass</comment>
+- <comment xml:lang="pt_BR">Arquivo de pré-processamento Sass CSS</comment>
+- <comment xml:lang="ru">Файл препроцессора Sass CSS</comment>
+- <comment xml:lang="sk">Súbor Sass CSS pre-procesora</comment>
+- <comment xml:lang="sr">датотека Сас ЦСС пре-процесора</comment>
+- <comment xml:lang="sv">Sass CSS-preprocessorfil</comment>
+- <comment xml:lang="tr">Sass CSS önişlemci dosyası</comment>
+- <comment xml:lang="uk">файл препроцесора CSS Sass</comment>
+- <comment xml:lang="zh_CN">Sass CSS 预处理器文件</comment>
+- <comment xml:lang="zh_TW">Sass CSS 處理器前檔案</comment>
++ <comment>SCSS pre-processor file</comment>
++ <comment xml:lang="bg">Директиви за препроцесора — SCSS</comment>
++ <comment xml:lang="ca">fitxer preprocessador SCSS</comment>
++ <comment xml:lang="da">SCSS pre-processor-fil</comment>
++ <comment xml:lang="de">SCSS-Präprozessordatei</comment>
++ <comment xml:lang="en-GB">SCSS pre-processor file</comment>
++ <comment xml:lang="es">archivo de preprocesador SCSS</comment>
++ <comment xml:lang="eu">SCSS fitxategi prozesatu gabea</comment>
++ <comment xml:lang="fi">SCSS pre-processor -tiedosto</comment>
++ <comment xml:lang="fr">fichier de prétraitement SCSS</comment>
++ <comment xml:lang="hr">SCSS datoteka predobrade</comment>
++ <comment xml:lang="hu">SCSS előfeldolgozófájl</comment>
++ <comment xml:lang="id">Berkas preprosesor SCSS</comment>
++ <comment xml:lang="it">File SCSS</comment>
++ <comment xml:lang="kk">SCSS препроцессор файлы</comment>
++ <comment xml:lang="ko">SCSS 전처리 파일</comment>
++ <comment xml:lang="pl">Plik preprocesora SCSS</comment>
++ <comment xml:lang="pt-BR">Arquivo de pré-processamento SCSS</comment>
++ <comment xml:lang="ru">Файл препроцессора SCSS</comment>
++ <comment xml:lang="sv">SCSS förprocessorfil</comment>
++ <comment xml:lang="tr">SCSS ön işleyici dosyası</comment>
++ <comment xml:lang="uk">файл засобу попередньої обробки SCSS</comment>
++ <comment xml:lang="zh-CN">SCSS 预处理文件</comment>
++ <comment xml:lang="zh-TW">SCSS 前處理器檔</comment>
++ <acronym>SCSS</acronym>
++ <expanded-acronym>Sassy CSS</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.scss"/>
+ <generic-icon name="text-x-generic"/>
+ </mime-type>
+ <mime-type type="text/x-setext">
+ <comment>Setext document</comment>
++ <comment xml:lang="af">Setext-dokument</comment>
+ <comment xml:lang="ar">مستند Setext</comment>
+ <comment xml:lang="ast">Documentu Setext</comment>
+ <comment xml:lang="az">Setext sənədi</comment>
+- <comment xml:lang="be@latin">Dakument Setext</comment>
++ <comment xml:lang="be-Latn">Dakument Setext</comment>
+ <comment xml:lang="bg">Документ — Setext</comment>
+ <comment xml:lang="ca">document Setext</comment>
+ <comment xml:lang="cs">dokument Setext</comment>
+@@ -36275,13 +37557,14 @@
+ <comment xml:lang="da">Setextdokument</comment>
+ <comment xml:lang="de">Setext-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Setext</comment>
+- <comment xml:lang="en_GB">Setext document</comment>
++ <comment xml:lang="en-GB">Setext document</comment>
+ <comment xml:lang="eo">Setext-dokumento</comment>
+ <comment xml:lang="es">documento Setext</comment>
+ <comment xml:lang="eu">Setext dokumentua</comment>
+ <comment xml:lang="fi">Setext-asiakirja</comment>
+ <comment xml:lang="fo">Setext skjal</comment>
+ <comment xml:lang="fr">document Setext</comment>
++ <comment xml:lang="fur">document Setext</comment>
+ <comment xml:lang="ga">cáipéis Setext</comment>
+ <comment xml:lang="gl">documento Settext</comment>
+ <comment xml:lang="he">מסמך של Setext</comment>
+@@ -36302,7 +37585,7 @@
+ <comment xml:lang="oc">document Setext</comment>
+ <comment xml:lang="pl">Dokument Setext</comment>
+ <comment xml:lang="pt">documento Setext</comment>
+- <comment xml:lang="pt_BR">Documento Setext</comment>
++ <comment xml:lang="pt-BR">Documento Setext</comment>
+ <comment xml:lang="ro">Document Setext</comment>
+ <comment xml:lang="ru">Документ Setext</comment>
+ <comment xml:lang="sk">Dokument Setext</comment>
+@@ -36313,16 +37596,17 @@
+ <comment xml:lang="tr">Setext belgesi</comment>
+ <comment xml:lang="uk">документ Setext</comment>
+ <comment xml:lang="vi">Tài liệu Setext</comment>
+- <comment xml:lang="zh_CN">Setext 文档</comment>
+- <comment xml:lang="zh_TW">Setext 文件</comment>
++ <comment xml:lang="zh-CN">Setext 文档</comment>
++ <comment xml:lang="zh-TW">Setext 文件</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.etx"/>
+ </mime-type>
+ <mime-type type="application/sql">
+ <comment>SQL code</comment>
++ <comment xml:lang="af">SQL-kode</comment>
+ <comment xml:lang="ar">شفرة SQL</comment>
+ <comment xml:lang="az">SQL kodu</comment>
+- <comment xml:lang="be@latin">Kod SQL</comment>
++ <comment xml:lang="be-Latn">Kod SQL</comment>
+ <comment xml:lang="bg">Код — SQL</comment>
+ <comment xml:lang="ca">codi en SQL</comment>
+ <comment xml:lang="cs">kód SQL</comment>
+@@ -36330,13 +37614,14 @@
+ <comment xml:lang="da">SQL-kode</comment>
+ <comment xml:lang="de">SQL-Befehle</comment>
+ <comment xml:lang="el">Κώδικας SQL</comment>
+- <comment xml:lang="en_GB">SQL code</comment>
++ <comment xml:lang="en-GB">SQL code</comment>
+ <comment xml:lang="eo">SQL-kodo</comment>
+ <comment xml:lang="es">código SQL</comment>
+ <comment xml:lang="eu">SQL kodea</comment>
+ <comment xml:lang="fi">SQL-koodi</comment>
+ <comment xml:lang="fo">SQL kota</comment>
+ <comment xml:lang="fr">code SQL</comment>
++ <comment xml:lang="fur">codiç SQL</comment>
+ <comment xml:lang="ga">cód SQL</comment>
+ <comment xml:lang="gl">código SQL</comment>
+ <comment xml:lang="he">קוד SQL</comment>
+@@ -36357,7 +37642,7 @@
+ <comment xml:lang="oc">còde SQL</comment>
+ <comment xml:lang="pl">Kod SQL</comment>
+ <comment xml:lang="pt">código SQL</comment>
+- <comment xml:lang="pt_BR">Código SQL</comment>
++ <comment xml:lang="pt-BR">Código SQL</comment>
+ <comment xml:lang="ro">Cod SQL</comment>
+ <comment xml:lang="ru">Код SQL</comment>
+ <comment xml:lang="sk">Kód SQL</comment>
+@@ -36368,29 +37653,31 @@
+ <comment xml:lang="tr">SQL kodu</comment>
+ <comment xml:lang="uk">код SQL</comment>
+ <comment xml:lang="vi">Mã SQL</comment>
+- <comment xml:lang="zh_CN">SQL 代码</comment>
+- <comment xml:lang="zh_TW">SQL 程式碼</comment>
++ <comment xml:lang="zh-CN">SQL 代码</comment>
++ <comment xml:lang="zh-TW">SQL 程式碼</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.sql"/>
+ <alias type="text/x-sql"/>
+ </mime-type>
+- <mime-type type="text/x-tcl">
++ <mime-type type="text/tcl">
+ <comment>Tcl script</comment>
++ <comment xml:lang="af">Tcl-skrip</comment>
+ <comment xml:lang="ar">سكربت Tcl</comment>
+- <comment xml:lang="be@latin">Skrypt Tcl</comment>
++ <comment xml:lang="be-Latn">Skrypt Tcl</comment>
+ <comment xml:lang="bg">Скрипт — Tcl</comment>
+ <comment xml:lang="ca">script Tcl</comment>
+ <comment xml:lang="cs">skript Tcl</comment>
+ <comment xml:lang="da">Tcl-program</comment>
+ <comment xml:lang="de">Tcl-Skript</comment>
+ <comment xml:lang="el">Δέσμη ενεργειών Tcl</comment>
+- <comment xml:lang="en_GB">Tcl script</comment>
++ <comment xml:lang="en-GB">Tcl script</comment>
+ <comment xml:lang="eo">Tcl-skripto</comment>
+ <comment xml:lang="es">secuencia de órdenes en Tcl</comment>
+ <comment xml:lang="eu">Tcl script-a</comment>
+ <comment xml:lang="fi">Tcl-komentotiedosto</comment>
+ <comment xml:lang="fo">Tcl boðrøð</comment>
+ <comment xml:lang="fr">script Tcl</comment>
++ <comment xml:lang="fur">script Tcl</comment>
+ <comment xml:lang="ga">script Tcl</comment>
+ <comment xml:lang="gl">Script en Tcl</comment>
+ <comment xml:lang="he">תסריט Tcl</comment>
+@@ -36411,7 +37698,7 @@
+ <comment xml:lang="oc">escript Tcl</comment>
+ <comment xml:lang="pl">Skrypt Tcl</comment>
+ <comment xml:lang="pt">script Tcl</comment>
+- <comment xml:lang="pt_BR">Script Tcl</comment>
++ <comment xml:lang="pt-BR">Script Tcl</comment>
+ <comment xml:lang="ro">Script Tcl</comment>
+ <comment xml:lang="ru">Сценарий Tcl</comment>
+ <comment xml:lang="sk">Skript Tcl</comment>
+@@ -36422,17 +37709,19 @@
+ <comment xml:lang="tr">Tcl betiği</comment>
+ <comment xml:lang="uk">скрипт Tcl</comment>
+ <comment xml:lang="vi">Văn lệnh Tcl</comment>
+- <comment xml:lang="zh_CN">Tcl 脚本</comment>
+- <comment xml:lang="zh_TW">Tcl 描述語言檔</comment>
++ <comment xml:lang="zh-CN">Tcl 脚本</comment>
++ <comment xml:lang="zh-TW">Tcl 描述語言檔</comment>
++ <alias type="text/x-tcl"/>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.tcl"/>
+ <glob pattern="*.tk"/>
+ </mime-type>
+ <mime-type type="text/x-tex">
+ <comment>TeX document</comment>
++ <comment xml:lang="af">TeX-dokument</comment>
+ <comment xml:lang="ar">مستند TeX</comment>
+ <comment xml:lang="ast">Documentu TeX</comment>
+- <comment xml:lang="be@latin">Dakument TeX</comment>
++ <comment xml:lang="be-Latn">Dakument TeX</comment>
+ <comment xml:lang="bg">Документ — TeX</comment>
+ <comment xml:lang="ca">document TeX</comment>
+ <comment xml:lang="cs">dokument TeX</comment>
+@@ -36440,13 +37729,14 @@
+ <comment xml:lang="da">TeX-dokument</comment>
+ <comment xml:lang="de">TeX-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο TeX</comment>
+- <comment xml:lang="en_GB">TeX document</comment>
++ <comment xml:lang="en-GB">TeX document</comment>
+ <comment xml:lang="eo">TeX-dokumento</comment>
+ <comment xml:lang="es">documento de TeX</comment>
+ <comment xml:lang="eu">TeX dokumentua</comment>
+ <comment xml:lang="fi">TeX-asiakirja</comment>
+ <comment xml:lang="fo">TeX skjal</comment>
+ <comment xml:lang="fr">document TeX</comment>
++ <comment xml:lang="fur">document TeX</comment>
+ <comment xml:lang="ga">cáipéis TeX</comment>
+ <comment xml:lang="gl">documenton TeX</comment>
+ <comment xml:lang="he">מסמך TeX</comment>
+@@ -36467,7 +37757,7 @@
+ <comment xml:lang="oc">document TeX</comment>
+ <comment xml:lang="pl">Dokument TeX</comment>
+ <comment xml:lang="pt">documento TeX</comment>
+- <comment xml:lang="pt_BR">Documento TeX</comment>
++ <comment xml:lang="pt-BR">Documento TeX</comment>
+ <comment xml:lang="ro">Document TeX</comment>
+ <comment xml:lang="ru">Документ TeX</comment>
+ <comment xml:lang="sk">Dokument TeX</comment>
+@@ -36478,8 +37768,8 @@
+ <comment xml:lang="tr">TeX belgesi</comment>
+ <comment xml:lang="uk">документ TeX</comment>
+ <comment xml:lang="vi">Tài liệu TeX</comment>
+- <comment xml:lang="zh_CN">TeX 文档</comment>
+- <comment xml:lang="zh_TW">TeX 文件</comment>
++ <comment xml:lang="zh-CN">TeX 文档</comment>
++ <comment xml:lang="zh-TW">TeX 文件</comment>
+ <sub-class-of type="text/plain"/>
+ <alias type="application/x-tex"/>
+ <glob pattern="*.tex"/>
+@@ -36490,18 +37780,19 @@
+ <glob pattern="*.ins"/>
+ <glob pattern="*.latex"/>
+ <magic priority="10">
+- <match value="%" type="string" offset="0"/>
++ <match type="string" value="%" offset="0"/>
+ </magic>
+ <magic priority="50">
+- <match value="documentclass" type="string" offset="1"/>
++ <match type="string" value="documentclass" offset="1"/>
+ </magic>
+ </mime-type>
+ <mime-type type="text/x-texinfo">
+ <comment>TeXInfo document</comment>
++ <comment xml:lang="af">TeXInfo-dokument</comment>
+ <comment xml:lang="ar">مستند TeXInfo</comment>
+ <comment xml:lang="ast">Documentu TeXInfo</comment>
+ <comment xml:lang="az">TeXInfo sənədi</comment>
+- <comment xml:lang="be@latin">Dakument TeXInfo</comment>
++ <comment xml:lang="be-Latn">Dakument TeXInfo</comment>
+ <comment xml:lang="bg">Документ — TeXInfo</comment>
+ <comment xml:lang="ca">document TeXInfo</comment>
+ <comment xml:lang="cs">dokument TeXInfo</comment>
+@@ -36509,13 +37800,14 @@
+ <comment xml:lang="da">TeXInfo-dokument</comment>
+ <comment xml:lang="de">TeXInfo-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο TeXInfo</comment>
+- <comment xml:lang="en_GB">TeXInfo document</comment>
++ <comment xml:lang="en-GB">TeXInfo document</comment>
+ <comment xml:lang="eo">TeXInfo-dokumento</comment>
+ <comment xml:lang="es">documento de TeXInfo</comment>
+ <comment xml:lang="eu">TeXInfo dokumentua</comment>
+ <comment xml:lang="fi">TeXInfo-asiakirja</comment>
+ <comment xml:lang="fo">TeXInfo skjal</comment>
+ <comment xml:lang="fr">document TeXInfo</comment>
++ <comment xml:lang="fur">document TeXInfo</comment>
+ <comment xml:lang="ga">cáipéis TeXInfo</comment>
+ <comment xml:lang="gl">documento TeXInfo</comment>
+ <comment xml:lang="he">מסמך של TeXInfo</comment>
+@@ -36536,7 +37828,7 @@
+ <comment xml:lang="oc">document TeXInfo</comment>
+ <comment xml:lang="pl">Dokument TeXInfo</comment>
+ <comment xml:lang="pt">documento TeXInfo</comment>
+- <comment xml:lang="pt_BR">Documento TeXInfo</comment>
++ <comment xml:lang="pt-BR">Documento TeXInfo</comment>
+ <comment xml:lang="ro">Document TexInfo</comment>
+ <comment xml:lang="ru">Документ TeXInfo</comment>
+ <comment xml:lang="sk">Dokument TeXInfo</comment>
+@@ -36547,30 +37839,32 @@
+ <comment xml:lang="tr">TeXInfo belgesi</comment>
+ <comment xml:lang="uk">документ TeXInfo</comment>
+ <comment xml:lang="vi">Tài liệu TeXInfo</comment>
+- <comment xml:lang="zh_CN">TeXInfo 文档</comment>
+- <comment xml:lang="zh_TW">TeXInfo 文件</comment>
++ <comment xml:lang="zh-CN">TeXInfo 文档</comment>
++ <comment xml:lang="zh-TW">TeXInfo 文件</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.texi"/>
+ <glob pattern="*.texinfo"/>
+ </mime-type>
+ <mime-type type="text/x-troff-me">
+ <comment>Troff ME input document</comment>
++ <comment xml:lang="af">Troff ME-toevoerdokument</comment>
+ <comment xml:lang="ar">مستند Troff ME input</comment>
+ <comment xml:lang="ast">Documentu d'entrada de Troff ME</comment>
+- <comment xml:lang="be@latin">Uvodny dakument Troff ME</comment>
++ <comment xml:lang="be-Latn">Uvodny dakument Troff ME</comment>
+ <comment xml:lang="bg">Изходен документ — Troff ME</comment>
+ <comment xml:lang="ca">document d'entrada Troff ME</comment>
+ <comment xml:lang="cs">vstupní dokument Troff ME</comment>
+ <comment xml:lang="da">Troff ME inddata-dokument</comment>
+ <comment xml:lang="de">Troff-ME-Eingabedokument</comment>
+ <comment xml:lang="el">Έγγραφο εντολών troff ME</comment>
+- <comment xml:lang="en_GB">Troff ME input document</comment>
++ <comment xml:lang="en-GB">Troff ME input document</comment>
+ <comment xml:lang="eo">eniga dokumento de Troff ME</comment>
+ <comment xml:lang="es">documento de entrada Troff ME</comment>
+ <comment xml:lang="eu">Troff ME sarrerako dokumentua</comment>
+ <comment xml:lang="fi">Troff ME -syöteasiakirja</comment>
+ <comment xml:lang="fo">Troff ME inntaksskjal</comment>
+ <comment xml:lang="fr">document d'entrée Troff ME</comment>
++ <comment xml:lang="fur">document di jentrade Troff ME</comment>
+ <comment xml:lang="ga">cáipéis ionchurtha Troff ME</comment>
+ <comment xml:lang="gl">documento de entrada Troff ME</comment>
+ <comment xml:lang="he">מסמך קלט של Troff ME</comment>
+@@ -36591,7 +37885,7 @@
+ <comment xml:lang="oc">document d'entrada Troff ME</comment>
+ <comment xml:lang="pl">Dokument wejściowy Troff ME</comment>
+ <comment xml:lang="pt">documento origem Troff ME</comment>
+- <comment xml:lang="pt_BR">Documento de entrada Troff ME</comment>
++ <comment xml:lang="pt-BR">Documento de entrada Troff ME</comment>
+ <comment xml:lang="ro">Document intrare Troff ME</comment>
+ <comment xml:lang="ru">Входной документ Troff ME</comment>
+ <comment xml:lang="sk">Vstupný dokument Troff ME</comment>
+@@ -36602,29 +37896,31 @@
+ <comment xml:lang="tr">Troff ME girdi belgesi</comment>
+ <comment xml:lang="uk">вхідний документ Troff ME</comment>
+ <comment xml:lang="vi">Tài liệu nhập ME Troff</comment>
+- <comment xml:lang="zh_CN">Troff ME 输入文档</comment>
+- <comment xml:lang="zh_TW">Troff ME 輸入文件</comment>
++ <comment xml:lang="zh-CN">Troff ME 输入文档</comment>
++ <comment xml:lang="zh-TW">Troff ME 輸入文件</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.me"/>
+ </mime-type>
+ <mime-type type="text/x-troff-mm">
+ <comment>Troff MM input document</comment>
++ <comment xml:lang="af">Troff MM-toevoerdokument</comment>
+ <comment xml:lang="ar">مستند Troff MM input</comment>
+ <comment xml:lang="ast">Documentu d'entrada de Troff MM</comment>
+- <comment xml:lang="be@latin">Uvodny dakument Troff MM</comment>
++ <comment xml:lang="be-Latn">Uvodny dakument Troff MM</comment>
+ <comment xml:lang="bg">Изходен документ — Troff MM</comment>
+ <comment xml:lang="ca">document d'entrada Troff MM</comment>
+ <comment xml:lang="cs">vstupní dokument Troff MM</comment>
+ <comment xml:lang="da">Troff MM inddata-dokument</comment>
+ <comment xml:lang="de">Troff-MM-Eingabedokument</comment>
+ <comment xml:lang="el">Έγγραφο εντολών troff MM</comment>
+- <comment xml:lang="en_GB">Troff MM input document</comment>
++ <comment xml:lang="en-GB">Troff MM input document</comment>
+ <comment xml:lang="eo">eniga dokumento de Troff MM</comment>
+ <comment xml:lang="es">documento de entrada Troff MM</comment>
+ <comment xml:lang="eu">Troff MM sarrerako dokumentua</comment>
+ <comment xml:lang="fi">Troff MM -syöteasiakirja</comment>
+ <comment xml:lang="fo">Troff MM inntaksskjal</comment>
+ <comment xml:lang="fr">document d'entrée Troff MM</comment>
++ <comment xml:lang="fur">document di jentrade Troff MM</comment>
+ <comment xml:lang="ga">cáipéis ionchurtha Troff MM</comment>
+ <comment xml:lang="gl">documento de entrada Troff MM</comment>
+ <comment xml:lang="he">מסמך קלט של Troff MM</comment>
+@@ -36645,7 +37941,7 @@
+ <comment xml:lang="oc">document d'entrada Troff MM</comment>
+ <comment xml:lang="pl">Dokument wejściowy Troff MM</comment>
+ <comment xml:lang="pt">documento origem Troff MM</comment>
+- <comment xml:lang="pt_BR">Documento de entrada Troff MM</comment>
++ <comment xml:lang="pt-BR">Documento de entrada Troff MM</comment>
+ <comment xml:lang="ro">Document intrare Troff MM</comment>
+ <comment xml:lang="ru">Входной документ Troff MM</comment>
+ <comment xml:lang="sk">Vstupný dokument Troff MM</comment>
+@@ -36656,29 +37952,31 @@
+ <comment xml:lang="tr">Troff MM girdi belgesi</comment>
+ <comment xml:lang="uk">вхідний документ Troff MM</comment>
+ <comment xml:lang="vi">Tài liệu nhập MM Troff</comment>
+- <comment xml:lang="zh_CN">Troff MM 输入文档</comment>
+- <comment xml:lang="zh_TW">Troff MM 輸入文件</comment>
++ <comment xml:lang="zh-CN">Troff MM 输入文档</comment>
++ <comment xml:lang="zh-TW">Troff MM 輸入文件</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.mm"/>
+ </mime-type>
+ <mime-type type="text/x-troff-ms">
+ <comment>Troff MS input document</comment>
++ <comment xml:lang="af">Troff MS-toevoerdokument</comment>
+ <comment xml:lang="ar">مستند Troff MS input</comment>
+ <comment xml:lang="ast">Documentu d'entrada de Troff MS</comment>
+- <comment xml:lang="be@latin">Uvodny dakument Troff MS</comment>
++ <comment xml:lang="be-Latn">Uvodny dakument Troff MS</comment>
+ <comment xml:lang="bg">Изходен документ — Troff MS</comment>
+ <comment xml:lang="ca">document d'entrada Troff MS</comment>
+ <comment xml:lang="cs">vstupní dokument Troff MS</comment>
+ <comment xml:lang="da">Troff MS inddata-dokument</comment>
+ <comment xml:lang="de">Troff-MS-Eingabedokument</comment>
+ <comment xml:lang="el">Έγγραφο εντολών troff MS</comment>
+- <comment xml:lang="en_GB">Troff MS input document</comment>
++ <comment xml:lang="en-GB">Troff MS input document</comment>
+ <comment xml:lang="eo">eniga dokumento de Troff MS</comment>
+ <comment xml:lang="es">documento de entrada Troff MS</comment>
+ <comment xml:lang="eu">Troff MS sarrerako dokumentua</comment>
+ <comment xml:lang="fi">Troff MS -syöteasiakirja</comment>
+ <comment xml:lang="fo">Troff MS inntaksskjal</comment>
+ <comment xml:lang="fr">document d'entrée Troff MS</comment>
++ <comment xml:lang="fur">document di jentrade Troff MS</comment>
+ <comment xml:lang="ga">cáipéis ionchurtha Troff MS</comment>
+ <comment xml:lang="gl">documento de entrada Troff MS</comment>
+ <comment xml:lang="he">מסמך קלט של Troff MS</comment>
+@@ -36699,7 +37997,7 @@
+ <comment xml:lang="oc">document d'entrada Troff MS</comment>
+ <comment xml:lang="pl">Dokument wejściowy Troff MS</comment>
+ <comment xml:lang="pt">documento origem Troff MS</comment>
+- <comment xml:lang="pt_BR">Documento de entrada Troff MS</comment>
++ <comment xml:lang="pt-BR">Documento de entrada Troff MS</comment>
+ <comment xml:lang="ro">Document intrare Troff MS</comment>
+ <comment xml:lang="ru">Входной документ Troff MS</comment>
+ <comment xml:lang="sk">Vstupný dokument Troff MS</comment>
+@@ -36710,59 +38008,65 @@
+ <comment xml:lang="tr">Troff MS girdi belgesi</comment>
+ <comment xml:lang="uk">вхідний документ Troff MS</comment>
+ <comment xml:lang="vi">Tài liệu nhập MS Troff</comment>
+- <comment xml:lang="zh_CN">Troff MS 输入文档</comment>
+- <comment xml:lang="zh_TW">Troff MS 輸入文件</comment>
++ <comment xml:lang="zh-CN">Troff MS 输入文档</comment>
++ <comment xml:lang="zh-TW">Troff MS 輸入文件</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.ms"/>
+ </mime-type>
+ <mime-type type="text/x-twig">
+ <comment>Twig template</comment>
++ <comment xml:lang="af">Twig-sjabloon</comment>
++ <comment xml:lang="bg">Шаблон — Twig</comment>
+ <comment xml:lang="ca">plantilla Twig</comment>
+ <comment xml:lang="cs">šablona Twig</comment>
+ <comment xml:lang="da">Twig-skabelon</comment>
+ <comment xml:lang="de">Twig-Vorlage</comment>
+- <comment xml:lang="en_GB">Twig template</comment>
++ <comment xml:lang="en-GB">Twig template</comment>
+ <comment xml:lang="es">plantilla de Twig</comment>
+ <comment xml:lang="eu">Twig txantiloia</comment>
++ <comment xml:lang="fi">Twig-malli</comment>
+ <comment xml:lang="fr">modèle Twig</comment>
++ <comment xml:lang="fur">model Twig</comment>
+ <comment xml:lang="ga">teimpléad Twig</comment>
+ <comment xml:lang="he">תבנית Twig</comment>
+ <comment xml:lang="hr">Twig predložak</comment>
+ <comment xml:lang="hu">Twig-sablon</comment>
+- <comment xml:lang="id">templat Twig</comment>
++ <comment xml:lang="id">Templat Twig</comment>
+ <comment xml:lang="it">Modello twig</comment>
+ <comment xml:lang="kk">Twig үлгісі</comment>
+ <comment xml:lang="ko">Twig 문서 서식</comment>
+ <comment xml:lang="pl">Szablon Twig</comment>
+- <comment xml:lang="pt_BR">Modelo Twig</comment>
++ <comment xml:lang="pt-BR">Modelo Twig</comment>
+ <comment xml:lang="ru">Шаблон Twig</comment>
+ <comment xml:lang="sk">Šablóna Twig</comment>
+ <comment xml:lang="sr">Твиг шаблон</comment>
+ <comment xml:lang="sv">Twig-mall</comment>
+ <comment xml:lang="tr">Twig şablonu</comment>
+ <comment xml:lang="uk">шаблон twig</comment>
+- <comment xml:lang="zh_CN">Twig 模板</comment>
+- <comment xml:lang="zh_TW">Twig 範本</comment>
++ <comment xml:lang="zh-CN">Twig 模板</comment>
++ <comment xml:lang="zh-TW">Twig 範本</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.twig"/>
+ <generic-icon name="text-x-generic-template"/>
+ </mime-type>
+ <mime-type type="text/x-uil">
+ <comment>X-Motif UIL table</comment>
++ <comment xml:lang="af">X-Motif UIL-tabel</comment>
+ <comment xml:lang="ar">جدول X-Motif UIL</comment>
+- <comment xml:lang="be@latin">Tablica X-Motif UIL</comment>
++ <comment xml:lang="be-Latn">Tablica X-Motif UIL</comment>
+ <comment xml:lang="bg">Таблица — X-Motif UIL</comment>
+ <comment xml:lang="ca">taula UIL de X-Motif</comment>
+ <comment xml:lang="cs">tabulka X-Motif UIL</comment>
+ <comment xml:lang="da">X-Motif UIL-tabel</comment>
+ <comment xml:lang="de">X-Motif-UIL-Tabelle</comment>
+ <comment xml:lang="el">Πίνακας X-Motif UIL</comment>
+- <comment xml:lang="en_GB">X-Motif UIL table</comment>
++ <comment xml:lang="en-GB">X-Motif UIL table</comment>
+ <comment xml:lang="es">tabla de X-Motif UIL</comment>
+ <comment xml:lang="eu">X-Motif UIL taula</comment>
+ <comment xml:lang="fi">X-Motif UIL -taulukko</comment>
+ <comment xml:lang="fo">X-Motif UIL talva</comment>
+ <comment xml:lang="fr">table X-Motif UIL</comment>
++ <comment xml:lang="fur">tabele X-Motif UIL</comment>
+ <comment xml:lang="ga">tábla X-Motif UIL</comment>
+ <comment xml:lang="gl">Táboa de X-Motif UIL</comment>
+ <comment xml:lang="he">טבלה של X-Motif UIL</comment>
+@@ -36783,7 +38087,7 @@
+ <comment xml:lang="oc">taula X-Motif UIL</comment>
+ <comment xml:lang="pl">Tabela UIL X-Motif</comment>
+ <comment xml:lang="pt">tabela UIL do X-Motif</comment>
+- <comment xml:lang="pt_BR">Tabela UIL do X-Motif</comment>
++ <comment xml:lang="pt-BR">Tabela UIL do X-Motif</comment>
+ <comment xml:lang="ro">Tabel X-Motif UIL</comment>
+ <comment xml:lang="ru">Таблица UIL X-Motif</comment>
+ <comment xml:lang="sk">Tabuľka X-Motif UIL</comment>
+@@ -36794,28 +38098,29 @@
+ <comment xml:lang="tr">X-Motif UIL tablosu</comment>
+ <comment xml:lang="uk">таблиця X-Motif UIL</comment>
+ <comment xml:lang="vi">Bảng UIL X-Motif</comment>
+- <comment xml:lang="zh_CN">X-Motif UIL 表</comment>
+- <comment xml:lang="zh_TW">X-Motif UIL 表格</comment>
++ <comment xml:lang="zh-CN">X-Motif UIL 表</comment>
++ <comment xml:lang="zh-TW">X-Motif UIL 表格</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.uil"/>
+ </mime-type>
+ <mime-type type="text/x-uri">
+ <comment>resource location</comment>
+ <comment xml:lang="ar">موقع المورد</comment>
+- <comment xml:lang="be@latin">pałažeńnie resursu</comment>
++ <comment xml:lang="be-Latn">pałažeńnie resursu</comment>
+ <comment xml:lang="bg">Местоположение на ресурс</comment>
+ <comment xml:lang="ca">localització de recurs</comment>
+ <comment xml:lang="cs">umístění prostředku</comment>
+ <comment xml:lang="da">resurseplacering</comment>
+ <comment xml:lang="de">Ressourcenort</comment>
+ <comment xml:lang="el">Τοποθεσία πόρου</comment>
+- <comment xml:lang="en_GB">resource location</comment>
++ <comment xml:lang="en-GB">resource location</comment>
+ <comment xml:lang="eo">loko de risurco</comment>
+ <comment xml:lang="es">ubicación del recurso</comment>
+ <comment xml:lang="eu">baliabidearen kokalekua</comment>
+ <comment xml:lang="fi">resurssisijainti</comment>
+ <comment xml:lang="fo">tilfeingisstaður</comment>
+ <comment xml:lang="fr">localisation de ressource</comment>
++ <comment xml:lang="fur">posizion risorse</comment>
+ <comment xml:lang="ga">suíomh acmhainne</comment>
+ <comment xml:lang="gl">localización do recurso</comment>
+ <comment xml:lang="he">מיקום של משאב</comment>
+@@ -36836,7 +38141,7 @@
+ <comment xml:lang="oc">localizacion de ressorsa</comment>
+ <comment xml:lang="pl">Położenie zasobu</comment>
+ <comment xml:lang="pt">localização de recurso</comment>
+- <comment xml:lang="pt_BR">Localização de recurso</comment>
++ <comment xml:lang="pt-BR">Localização de recurso</comment>
+ <comment xml:lang="ro">locație de resursă</comment>
+ <comment xml:lang="ru">Расположение ресурса</comment>
+ <comment xml:lang="sk">Umiestnenie zdroja</comment>
+@@ -36847,29 +38152,33 @@
+ <comment xml:lang="tr">kaynak ayırma</comment>
+ <comment xml:lang="uk">розташування ресурсу</comment>
+ <comment xml:lang="vi">địa điểm tài nguyên</comment>
+- <comment xml:lang="zh_CN">资源位置</comment>
+- <comment xml:lang="zh_TW">資源位置</comment>
++ <comment xml:lang="zh-CN">资源位置</comment>
++ <comment xml:lang="zh-TW">資源位置</comment>
+ <sub-class-of type="text/plain"/>
+-
++ <!-- Note: text/uri-list is reserved by the XDND protocol! -->
+ </mime-type>
+ <mime-type type="text/x-uuencode">
+ <comment>uuencoded file</comment>
++ <comment xml:lang="af">uu-geënkodeerde lêer</comment>
++ <comment xml:lang="bg">Файл — кодиран с uuencode</comment>
+ <comment xml:lang="ca">fitxer uuencoded</comment>
+ <comment xml:lang="cs">soubor kódovaný pomocí uuencoding</comment>
+ <comment xml:lang="da">uuencodede-fil</comment>
+ <comment xml:lang="de">Datei im uuencode-Format</comment>
+ <comment xml:lang="el">Αρχείο κωδικοποιημένο unix σε unix (uuencoded)</comment>
+- <comment xml:lang="en_GB">uuencoded file</comment>
++ <comment xml:lang="en-GB">uuencoded file</comment>
+ <comment xml:lang="es">archivo codificado con uuencode</comment>
+ <comment xml:lang="eu">uuencode-aturiko fitxategia</comment>
++ <comment xml:lang="fi">uuencoded tiedosto</comment>
+ <comment xml:lang="fr">fichier uuencodé</comment>
++ <comment xml:lang="fur">file codificât cun uuencode</comment>
+ <comment xml:lang="ga">comhad uuencoded</comment>
+ <comment xml:lang="gl">Ficheiro uuencoded</comment>
+ <comment xml:lang="he">קובץ בקידוד uu</comment>
+ <comment xml:lang="hr">uuencoded datoteka</comment>
+ <comment xml:lang="hu">uuencode-olt fájl</comment>
+ <comment xml:lang="ia">File in uuencode</comment>
+- <comment xml:lang="id">Berkas ter-uuencode</comment>
++ <comment xml:lang="id">berkas ter-uuencode</comment>
+ <comment xml:lang="it">File uuencoded</comment>
+ <comment xml:lang="ja">未エンコードファイル</comment>
+ <comment xml:lang="kk">uuencode кодталған файлы</comment>
+@@ -36878,7 +38187,7 @@
+ <comment xml:lang="oc">fichièr uuencodat</comment>
+ <comment xml:lang="pl">Plik zakodowany za pomocą uuencode</comment>
+ <comment xml:lang="pt">ficheiro uuencoded</comment>
+- <comment xml:lang="pt_BR">Arquivo codificado UUE</comment>
++ <comment xml:lang="pt-BR">Arquivo codificado UUE</comment>
+ <comment xml:lang="ru">Файл, кодированный uuencode</comment>
+ <comment xml:lang="sk">Súbor v kódovaní uuencode</comment>
+ <comment xml:lang="sl">Datoteka uuencode</comment>
+@@ -36886,32 +38195,56 @@
+ <comment xml:lang="sv">uuencode-fil</comment>
+ <comment xml:lang="tr">uuencoded dosyası</comment>
+ <comment xml:lang="uk">файл даних у форматі UUE</comment>
+- <comment xml:lang="zh_CN">Uuencode 文件</comment>
+- <comment xml:lang="zh_TW">uuencoded 檔</comment>
++ <comment xml:lang="zh-CN">Uuencode 文件</comment>
++ <comment xml:lang="zh-TW">uuencoded 檔</comment>
+ <sub-class-of type="text/plain"/>
+ <glob pattern="*.uue"/>
+ <magic priority="50">
+- <match value="begin " type="string" offset="0"/>
++ <match type="string" value="begin " offset="0"/>
+ </magic>
+ <alias type="zz-application/zz-winassoc-uu"/>
+ </mime-type>
++ <mime-type type="text/vbscript">
++ <comment>VBScript program</comment>
++ <comment xml:lang="ca">programa VBScript</comment>
++ <comment xml:lang="da">VBScript-program</comment>
++ <comment xml:lang="de">VBScript-Programm</comment>
++ <comment xml:lang="en-GB">VBScript program</comment>
++ <comment xml:lang="es">programa en VBScript</comment>
++ <comment xml:lang="fi">VBScript-ohjelma</comment>
++ <comment xml:lang="fr">programme VBScript</comment>
++ <comment xml:lang="hr">VBScript program</comment>
++ <comment xml:lang="it">Programma VBScript</comment>
++ <comment xml:lang="pl">Pogram VBScript</comment>
++ <comment xml:lang="pt-BR">Programa VBScript</comment>
++ <comment xml:lang="sv">VBScript-program</comment>
++ <comment xml:lang="uk">програма мовою VBScript</comment>
++ <comment xml:lang="zh-CN">VBScript 程序</comment>
++ <comment xml:lang="zh-TW">VBScript 程式</comment>
++ <alias type="text/vbs"/>
++ <sub-class-of type="text/plain"/>
++ <generic-icon name="text-x-script"/>
++ <glob pattern="*.vbs"/>
++ </mime-type>
+ <mime-type type="text/x-xmi">
+ <comment>XMI file</comment>
++ <comment xml:lang="af">XMI-lêer</comment>
+ <comment xml:lang="ar">ملف XMI</comment>
+- <comment xml:lang="be@latin">Fajł XMI</comment>
++ <comment xml:lang="be-Latn">Fajł XMI</comment>
+ <comment xml:lang="bg">Файл — XMI</comment>
+ <comment xml:lang="ca">fitxer XMI</comment>
+ <comment xml:lang="cs">soubor XMI</comment>
+ <comment xml:lang="da">XMI-fil</comment>
+ <comment xml:lang="de">XMI-Datei</comment>
+ <comment xml:lang="el">Αρχείο XML</comment>
+- <comment xml:lang="en_GB">XMI file</comment>
++ <comment xml:lang="en-GB">XMI file</comment>
+ <comment xml:lang="eo">XMI-dosiero</comment>
+ <comment xml:lang="es">archivo XMI</comment>
+ <comment xml:lang="eu">XMI fitxategia</comment>
+ <comment xml:lang="fi">XMI-tiedosto</comment>
+ <comment xml:lang="fo">XMI fíla</comment>
+ <comment xml:lang="fr">fichier XMI</comment>
++ <comment xml:lang="fur">file XMI</comment>
+ <comment xml:lang="ga">comhad XMI</comment>
+ <comment xml:lang="gl">ficheiro XMI</comment>
+ <comment xml:lang="he">קובץ XMI</comment>
+@@ -36931,7 +38264,7 @@
+ <comment xml:lang="oc">fichièr XMI</comment>
+ <comment xml:lang="pl">Plik XMI</comment>
+ <comment xml:lang="pt">ficheiro XMI</comment>
+- <comment xml:lang="pt_BR">Arquivo XMI</comment>
++ <comment xml:lang="pt-BR">Arquivo XMI</comment>
+ <comment xml:lang="ro">Fișier XMI</comment>
+ <comment xml:lang="ru">Файл XMI</comment>
+ <comment xml:lang="sk">Súbor XMI</comment>
+@@ -36942,8 +38275,8 @@
+ <comment xml:lang="tr">XMI dosyası</comment>
+ <comment xml:lang="uk">файл XMI</comment>
+ <comment xml:lang="vi">Tập tin XMI</comment>
+- <comment xml:lang="zh_CN">XMI 文件</comment>
+- <comment xml:lang="zh_TW">XMI 檔</comment>
++ <comment xml:lang="zh-CN">XMI 文件</comment>
++ <comment xml:lang="zh-TW">XMI 檔</comment>
+ <acronym>XMI</acronym>
+ <expanded-acronym>XML Metadata Interchange</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+@@ -36953,21 +38286,23 @@
+ </mime-type>
+ <mime-type type="text/x-xslfo">
+ <comment>XSL FO file</comment>
++ <comment xml:lang="af">XSL FO-lêer</comment>
+ <comment xml:lang="ar">ملف XSL FO</comment>
+- <comment xml:lang="be@latin">Fajł XSL FO</comment>
++ <comment xml:lang="be-Latn">Fajł XSL FO</comment>
+ <comment xml:lang="bg">Форматиращ файл — XSL FO</comment>
+ <comment xml:lang="ca">fitxer FO XSL</comment>
+ <comment xml:lang="cs">soubor XSL FO</comment>
+ <comment xml:lang="da">XML FO-fil</comment>
+ <comment xml:lang="de">XSL-FO-Datei</comment>
+ <comment xml:lang="el">Αρχείο XSL FO</comment>
+- <comment xml:lang="en_GB">XSL FO file</comment>
++ <comment xml:lang="en-GB">XSL FO file</comment>
+ <comment xml:lang="eo">XSL-FO-dosiero</comment>
+ <comment xml:lang="es">archivo XSL FO</comment>
+ <comment xml:lang="eu">XSL FO fitxategia</comment>
+ <comment xml:lang="fi">XSL FO -tiedosto</comment>
+ <comment xml:lang="fo">XSL FO fíla</comment>
+ <comment xml:lang="fr">fichier XSL FO</comment>
++ <comment xml:lang="fur">file XSL FO</comment>
+ <comment xml:lang="ga">comhad XSL FO</comment>
+ <comment xml:lang="gl">ficheiro XSL FO</comment>
+ <comment xml:lang="he">קובץ XSL FO</comment>
+@@ -36987,7 +38322,7 @@
+ <comment xml:lang="oc">fichièr XSL FO</comment>
+ <comment xml:lang="pl">Plik XSL FO</comment>
+ <comment xml:lang="pt">ficheiro XSL FO</comment>
+- <comment xml:lang="pt_BR">Arquivo XSL FO</comment>
++ <comment xml:lang="pt-BR">Arquivo XSL FO</comment>
+ <comment xml:lang="ro">Fișier XSL FO</comment>
+ <comment xml:lang="ru">Файл XSL FO</comment>
+ <comment xml:lang="sk">Súbor XSL FO</comment>
+@@ -36998,8 +38333,8 @@
+ <comment xml:lang="tr">XSL FO dosyası</comment>
+ <comment xml:lang="uk">файл XSL FO</comment>
+ <comment xml:lang="vi">Tập tin FO của XSL (XFO)</comment>
+- <comment xml:lang="zh_CN">XSL 格式化对象文件</comment>
+- <comment xml:lang="zh_TW">XSL FO 檔</comment>
++ <comment xml:lang="zh-CN">XSL 格式化对象文件</comment>
++ <comment xml:lang="zh-TW">XSL FO 檔</comment>
+ <acronym>XSL FO</acronym>
+ <expanded-acronym>XSL Formatting Objects</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+@@ -37009,21 +38344,23 @@
+ </mime-type>
+ <mime-type type="text/x-iptables">
+ <comment>iptables configuration file</comment>
++ <comment xml:lang="af">iptables-opstellingslêer</comment>
+ <comment xml:lang="ar">ملف تضبيط iptables</comment>
+ <comment xml:lang="ast">ficheru de configuración d'iptables</comment>
+- <comment xml:lang="be@latin">kanfihuracyjny fajł iptables</comment>
++ <comment xml:lang="be-Latn">kanfihuracyjny fajł iptables</comment>
+ <comment xml:lang="bg">Настройки за iptables</comment>
+ <comment xml:lang="ca">fitxer de configuració d'iptables</comment>
+ <comment xml:lang="cs">soubor nastavení iptables</comment>
+ <comment xml:lang="da">iptableskonfigurationsfil</comment>
+ <comment xml:lang="de">iptables-Konfigurationsdatei</comment>
+ <comment xml:lang="el">Αρχείο ρυθμίσεων iptables</comment>
+- <comment xml:lang="en_GB">iptables configuration file</comment>
++ <comment xml:lang="en-GB">iptables configuration file</comment>
+ <comment xml:lang="es">archivo de configuración de iptables</comment>
+ <comment xml:lang="eu">iptables konfigurazio-fitxategia</comment>
+ <comment xml:lang="fi">iptables-asetustiedosto</comment>
+ <comment xml:lang="fo">iptables samansetingarfíla</comment>
+ <comment xml:lang="fr">fichier de configuration iptables</comment>
++ <comment xml:lang="fur">file di configurazion di iptables</comment>
+ <comment xml:lang="ga">comhad cumraíochta iptables</comment>
+ <comment xml:lang="gl">ficheiro de configuración de iptables</comment>
+ <comment xml:lang="he">קובץ הגדרה של iptables</comment>
+@@ -37043,7 +38380,7 @@
+ <comment xml:lang="oc">fichièr de configuracion iptables</comment>
+ <comment xml:lang="pl">Plik konfiguracji iptables</comment>
+ <comment xml:lang="pt">ficheiro de configuração iptables</comment>
+- <comment xml:lang="pt_BR">Arquivo de configuração do iptables</comment>
++ <comment xml:lang="pt-BR">Arquivo de configuração do iptables</comment>
+ <comment xml:lang="ro">fișier configurare iptables</comment>
+ <comment xml:lang="ru">Файл настроек iptables</comment>
+ <comment xml:lang="sk">Súbor nastavení iptables</comment>
+@@ -37054,26 +38391,26 @@
+ <comment xml:lang="tr">iptables yapılandırma dosyası</comment>
+ <comment xml:lang="uk">файл налаштувань iptables</comment>
+ <comment xml:lang="vi">tập tin cấu hình iptables</comment>
+- <comment xml:lang="zh_CN">iptables 防火墙配置文件</comment>
+- <comment xml:lang="zh_TW">iptables 組態檔</comment>
++ <comment xml:lang="zh-CN">iptables 防火墙配置文件</comment>
++ <comment xml:lang="zh-TW">iptables 組態檔</comment>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="/etc/sysconfig/iptables" type="string" offset="0:256"/>
+- <match value="*filter" type="string" offset="0:256">
+- <match value=":INPUT" type="string" offset="0:256">
+- <match value=":FORWARD" type="string" offset="0:256">
+- <match value=":OUTPUT" type="string" offset="0:256"/>
++ <match type="string" value="/etc/sysconfig/iptables" offset="0:256"/>
++ <match type="string" value="*filter" offset="0:256">
++ <match type="string" value=":INPUT" offset="0:256">
++ <match type="string" value=":FORWARD" offset="0:256">
++ <match type="string" value=":OUTPUT" offset="0:256"/>
+ </match>
+ </match>
+ </match>
+- <match value="-A INPUT" type="string" offset="0:256">
+- <match value="-A FORWARD" type="string" offset="0:256">
+- <match value="-A OUTPUT" type="string" offset="0:256"/>
++ <match type="string" value="-A INPUT" offset="0:256">
++ <match type="string" value="-A FORWARD" offset="0:256">
++ <match type="string" value="-A OUTPUT" offset="0:256"/>
+ </match>
+ </match>
+- <match value="-P INPUT" type="string" offset="0:256">
+- <match value="-P FORWARD" type="string" offset="0:256">
+- <match value="-P OUTPUT" type="string" offset="0:256"/>
++ <match type="string" value="-P INPUT" offset="0:256">
++ <match type="string" value="-P FORWARD" offset="0:256">
++ <match type="string" value="-P OUTPUT" offset="0:256"/>
+ </match>
+ </match>
+ </magic>
+@@ -37081,49 +38418,57 @@
+ </mime-type>
+ <mime-type type="text/x-dbus-service">
+ <comment>D-Bus service file</comment>
++ <comment xml:lang="af">D-Bus-dienslêer</comment>
++ <comment xml:lang="bg">Услуга — D-Bus</comment>
+ <comment xml:lang="ca">fitxer de servei de D-Bus</comment>
+ <comment xml:lang="cs">soubor služby D-Bus</comment>
++ <comment xml:lang="da">D-Bus-tjenestefil</comment>
+ <comment xml:lang="de">D-Bus-Dienstdatei</comment>
+- <comment xml:lang="en_GB">D-Bus service file</comment>
++ <comment xml:lang="en-GB">D-Bus service file</comment>
+ <comment xml:lang="es">archivo de servicio de D-Bus</comment>
+ <comment xml:lang="eu">D-Bus zerbitzu fitxategia</comment>
+ <comment xml:lang="fi">D-Bus-palvelutiedosto</comment>
+ <comment xml:lang="fr">fichier de service D-Bus</comment>
++ <comment xml:lang="fur">file di servizi D-Bus</comment>
+ <comment xml:lang="ga">comhad seirbhíse D-Bus</comment>
+ <comment xml:lang="hr">Datoteka D-Bus usluge</comment>
+ <comment xml:lang="hu">D-Bus szolgáltatás fájl</comment>
+- <comment xml:lang="id">berkas layanan D-Bus</comment>
++ <comment xml:lang="id">Berkas layanan D-Bus</comment>
+ <comment xml:lang="it">File servizio D-Bus</comment>
+ <comment xml:lang="kk">D-Bus қызметтік файлы</comment>
+ <comment xml:lang="ko">D-Bus 서비스 파일</comment>
+ <comment xml:lang="pl">Plik usługi D-Bus</comment>
+- <comment xml:lang="pt_BR">Arquivo de serviço do D-Bus</comment>
++ <comment xml:lang="pt-BR">Arquivo de serviço do D-Bus</comment>
+ <comment xml:lang="ru">Файл службы D-Bus</comment>
+ <comment xml:lang="sk">Súbor služby D-Bus</comment>
+ <comment xml:lang="sr">датотека услуге Д-сабирнице</comment>
+ <comment xml:lang="sv">D-BUS-tjänstfil</comment>
+ <comment xml:lang="tr">D-Bus hizmeti dosyası</comment>
+ <comment xml:lang="uk">файл служби D-Bus</comment>
+- <comment xml:lang="zh_CN">D-Bus 服务文件</comment>
+- <comment xml:lang="zh_TW">D-Bus 服務檔</comment>
++ <comment xml:lang="zh-CN">D-Bus 服务文件</comment>
++ <comment xml:lang="zh-TW">D-Bus 服務檔</comment>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="\n[D-BUS Service]\n" type="string" offset="0:256"/>
+- <match value="[D-BUS Service]\n" type="string" offset="0"/>
++ <match type="string" value="\n[D-BUS Service]\n" offset="0:256"/>
++ <match type="string" value="[D-BUS Service]\n" offset="0"/>
+ </magic>
+ <glob pattern="*.service"/>
+ </mime-type>
+ <mime-type type="text/x-systemd-unit">
+ <comment>systemd unit file</comment>
++ <comment xml:lang="af">systemd-eenheidlêer</comment>
+ <comment xml:lang="ast">ficheru d'unidaes de systemd</comment>
++ <comment xml:lang="bg">Елемент — systemd</comment>
+ <comment xml:lang="ca">fitxer d'unitat de systemd</comment>
+ <comment xml:lang="cs">jednotkový soubor systemd</comment>
++ <comment xml:lang="da">systemd unit-fil</comment>
+ <comment xml:lang="de">systemd-Einheitsdatei</comment>
+- <comment xml:lang="en_GB">systemd unit file</comment>
++ <comment xml:lang="en-GB">systemd unit file</comment>
+ <comment xml:lang="es">archivo de unidad de systemd</comment>
+ <comment xml:lang="eu">systemd unitate fitxategia</comment>
+ <comment xml:lang="fi">systemd-yksikkötiedosto</comment>
+ <comment xml:lang="fr">fichier d'unité systemd</comment>
++ <comment xml:lang="fur">file unitât di systemd</comment>
+ <comment xml:lang="ga">comhad aonaid systemd</comment>
+ <comment xml:lang="hr">Datoteka systemd jedinice</comment>
+ <comment xml:lang="hu">systemd egység fájl</comment>
+@@ -37132,44 +38477,44 @@
+ <comment xml:lang="kk">systemd юнит файлы</comment>
+ <comment xml:lang="ko">systemd 유닛 파일</comment>
+ <comment xml:lang="pl">Plik jednostki systemd</comment>
+- <comment xml:lang="pt_BR">Arquivo de unit do systemd</comment>
++ <comment xml:lang="pt-BR">Arquivo de unit do systemd</comment>
+ <comment xml:lang="ru">Модульный файл Systemd</comment>
+ <comment xml:lang="sk">Súbor jednotky systemd</comment>
+ <comment xml:lang="sr">датотека јединице системд-а</comment>
+ <comment xml:lang="sv">systemd-enhetsfil</comment>
+ <comment xml:lang="tr">systemd birim dosyası</comment>
+ <comment xml:lang="uk">файл модуля systemd</comment>
+- <comment xml:lang="zh_CN">systemd 单元文件</comment>
+- <comment xml:lang="zh_TW">systemd 單位檔</comment>
++ <comment xml:lang="zh-CN">systemd 单元文件</comment>
++ <comment xml:lang="zh-TW">systemd 單位檔</comment>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+-
+- <match value="\n[Unit]\n" type="string" offset="0:256"/>
+- <match value="\n[Install]\n" type="string" offset="0:256"/>
+- <match value="\n[Automount]\n" type="string" offset="0:256"/>
+-
+- <match value="\n[Mount]\n" type="string" offset="0:256"/>
+- <match value="\n[Path]\n" type="string" offset="0:256"/>
+- <match value="\n[Scope]\n" type="string" offset="0:256"/>
+- <match value="\n[Service]\n" type="string" offset="0:256"/>
+- <match value="\n[Slice]\n" type="string" offset="0:256"/>
+- <match value="\n[Socket]\n" type="string" offset="0:256"/>
+- <match value="\n[Swap]\n" type="string" offset="0:256"/>
+-
+- <match value="\n[Timer]\n" type="string" offset="0:256"/>
++ <!-- Matches part-way through the file. -->
++ <match type="string" value="\n[Unit]\n" offset="0:256"/>
++ <match type="string" value="\n[Install]\n" offset="0:256"/>
++ <match type="string" value="\n[Automount]\n" offset="0:256"/>
++ <!-- Note no [Device] section exists (https://www.freedesktop.org/software/systemd/man/systemd.device.html) -->
++ <match type="string" value="\n[Mount]\n" offset="0:256"/>
++ <match type="string" value="\n[Path]\n" offset="0:256"/>
++ <match type="string" value="\n[Scope]\n" offset="0:256"/>
++ <match type="string" value="\n[Service]\n" offset="0:256"/>
++ <match type="string" value="\n[Slice]\n" offset="0:256"/>
++ <match type="string" value="\n[Socket]\n" offset="0:256"/>
++ <match type="string" value="\n[Swap]\n" offset="0:256"/>
++ <!-- Note no [Target] section exists (https://www.freedesktop.org/software/systemd/man/systemd.target.html) -->
++ <match type="string" value="\n[Timer]\n" offset="0:256"/>
+
+-
+- <match value="[Unit]\n" type="string" offset="0"/>
+- <match value="[Install]\n" type="string" offset="0"/>
+- <match value="[Automount]\n" type="string" offset="0"/>
+- <match value="[Mount]\n" type="string" offset="0"/>
+- <match value="[Path]\n" type="string" offset="0"/>
+- <match value="[Scope]\n" type="string" offset="0"/>
+- <match value="[Service]\n" type="string" offset="0"/>
+- <match value="[Slice]\n" type="string" offset="0"/>
+- <match value="[Socket]\n" type="string" offset="0"/>
+- <match value="[Swap]\n" type="string" offset="0"/>
+- <match value="[Timer]\n" type="string" offset="0"/>
++ <!-- Matches at the start of the file. -->
++ <match type="string" value="[Unit]\n" offset="0"/>
++ <match type="string" value="[Install]\n" offset="0"/>
++ <match type="string" value="[Automount]\n" offset="0"/>
++ <match type="string" value="[Mount]\n" offset="0"/>
++ <match type="string" value="[Path]\n" offset="0"/>
++ <match type="string" value="[Scope]\n" offset="0"/>
++ <match type="string" value="[Service]\n" offset="0"/>
++ <match type="string" value="[Slice]\n" offset="0"/>
++ <match type="string" value="[Socket]\n" offset="0"/>
++ <match type="string" value="[Swap]\n" offset="0"/>
++ <match type="string" value="[Timer]\n" offset="0"/>
+ </magic>
+ <glob pattern="*.automount"/>
+ <glob pattern="*.device"/>
+@@ -37185,21 +38530,23 @@
+ </mime-type>
+ <mime-type type="application/xslt+xml">
+ <comment>XSLT stylesheet</comment>
++ <comment xml:lang="af">XSLT-stylblad</comment>
+ <comment xml:lang="ar">نمط XSLT</comment>
+- <comment xml:lang="be@latin">Arkuš stylaŭ XSLT</comment>
++ <comment xml:lang="be-Latn">Arkuš stylaŭ XSLT</comment>
+ <comment xml:lang="bg">Стилове — XSLT</comment>
+ <comment xml:lang="ca">full d'estil XSLT</comment>
+ <comment xml:lang="cs">stylopis XSLT</comment>
+ <comment xml:lang="da">XSLT-stilark</comment>
+ <comment xml:lang="de">XSLT-Stylesheet</comment>
+ <comment xml:lang="el">Φύλλο στυλ XSLT</comment>
+- <comment xml:lang="en_GB">XSLT stylesheet</comment>
++ <comment xml:lang="en-GB">XSLT stylesheet</comment>
+ <comment xml:lang="eo">XSLT-stilfolio</comment>
+ <comment xml:lang="es">hoja de estilos XSLT</comment>
+ <comment xml:lang="eu">XSLT estilo-orria</comment>
+ <comment xml:lang="fi">XSLT-tyylitiedosto</comment>
+ <comment xml:lang="fo">XSLT sniðark</comment>
+ <comment xml:lang="fr">feuille de style XSLT</comment>
++ <comment xml:lang="fur">sfuei di calcul XSLT</comment>
+ <comment xml:lang="ga">stílbhileog XSLT</comment>
+ <comment xml:lang="gl">folla de estilo XSLT</comment>
+ <comment xml:lang="he">גליון סגנון XSLT</comment>
+@@ -37220,7 +38567,7 @@
+ <comment xml:lang="oc">fuèlh d'estil XSLT</comment>
+ <comment xml:lang="pl">Arkusz stylów XSLT</comment>
+ <comment xml:lang="pt">folha de estilos XSLT</comment>
+- <comment xml:lang="pt_BR">Folha de estilo XSLT</comment>
++ <comment xml:lang="pt-BR">Folha de estilo XSLT</comment>
+ <comment xml:lang="ro">Fișă de stil XSLT</comment>
+ <comment xml:lang="ru">Таблица стилей XSLT</comment>
+ <comment xml:lang="sk">Štýl XSLT</comment>
+@@ -37231,35 +38578,72 @@
+ <comment xml:lang="tr">XSLT çalışma sayfası</comment>
+ <comment xml:lang="uk">таблиця стилів XSLT</comment>
+ <comment xml:lang="vi">Tờ kiểu dáng XSLT</comment>
+- <comment xml:lang="zh_CN">XSLT 样式表</comment>
+- <comment xml:lang="zh_TW">XSLT 樣式表</comment>
++ <comment xml:lang="zh-CN">XSLT 样式表</comment>
++ <comment xml:lang="zh-TW">XSLT 樣式表</comment>
+ <acronym>XSLT</acronym>
+ <expanded-acronym>eXtensible Stylesheet Language Transformation</expanded-acronym>
+ <generic-icon name="text-x-generic"/>
+ <magic priority="50">
+- <match value="&lt;xsl:stylesheet" type="string" offset="0:256"/>
++ <match type="string" value="&lt;xsl:stylesheet" offset="0:256"/>
+ </magic>
+ <glob pattern="*.xsl"/>
+ <glob pattern="*.xslt"/>
+ <root-XML namespaceURI="http://www.w3.org/1999/XSL/Transform" localName="stylesheet"/>
+ <sub-class-of type="application/xml"/>
+ </mime-type>
++ <mime-type type="text/x-maven+xml">
++ <comment>Maven description file</comment>
++ <comment xml:lang="af">Maven-beskrywingslêer</comment>
++ <comment xml:lang="bg">Модел — Maven</comment>
++ <comment xml:lang="ca">fitxer de descripció Maven</comment>
++ <comment xml:lang="cs">popisný soubor Maven</comment>
++ <comment xml:lang="da">Maven-beskrivelsesfil</comment>
++ <comment xml:lang="de">Maven-Beschreibungsdatei</comment>
++ <comment xml:lang="en-GB">Maven description file</comment>
++ <comment xml:lang="es">archivo de descripción de Maven</comment>
++ <comment xml:lang="eu">Maven azalpen fitxategia</comment>
++ <comment xml:lang="fi">Maven-kuvaustiedosto</comment>
++ <comment xml:lang="fr">fichier de description Maven</comment>
++ <comment xml:lang="fur">file di descrizion Maven</comment>
++ <comment xml:lang="ga">cur síos Maven</comment>
++ <comment xml:lang="hr">Maven datoteka opisa</comment>
++ <comment xml:lang="hu">Maven leírófájl</comment>
++ <comment xml:lang="id">Berkas deskripsi Maven</comment>
++ <comment xml:lang="it">File descrizione Mave</comment>
++ <comment xml:lang="kk">Maven сипаттама файлы</comment>
++ <comment xml:lang="ko">Maven 설명 파일</comment>
++ <comment xml:lang="pl">Plik opisu Maven</comment>
++ <comment xml:lang="pt-BR">Arquivo de descrição Maven</comment>
++ <comment xml:lang="ru">Файл описания Maven</comment>
++ <comment xml:lang="sk">Súbor popisu Maven</comment>
++ <comment xml:lang="sv">Maven-beskrivningsfil</comment>
++ <comment xml:lang="tr">Maven açıklama dosyası</comment>
++ <comment xml:lang="uk">файл опису Maven</comment>
++ <comment xml:lang="zh-CN">Maven 描述文件</comment>
++ <comment xml:lang="zh-TW">Maven 描述檔</comment>
++ <generic-icon name="text-x-generic"/>
++ <glob pattern="pom.xml"/>
++ <glob pattern="settings.xml"/>
++ <sub-class-of type="application/xml"/>
++ </mime-type>
+ <mime-type type="text/xmcd">
+ <comment>XMCD CD database</comment>
++ <comment xml:lang="af">XMCD CD-databasis</comment>
+ <comment xml:lang="ar">قاعدة بيانات XMCD CD</comment>
+- <comment xml:lang="be@latin">Baza źviestak ab dyskach XMCD</comment>
++ <comment xml:lang="be-Latn">Baza źviestak ab dyskach XMCD</comment>
+ <comment xml:lang="bg">База от данни за CD-та — XMCD</comment>
+ <comment xml:lang="ca">base de dades de CD XMCD</comment>
+ <comment xml:lang="cs">databáze XMCD CD</comment>
+ <comment xml:lang="da">XMCD-cd-database</comment>
+ <comment xml:lang="de">XMCD-CD-Datenbank</comment>
+ <comment xml:lang="el">Βάση δεδομένων CD XMCD</comment>
+- <comment xml:lang="en_GB">XMCD CD database</comment>
++ <comment xml:lang="en-GB">XMCD CD database</comment>
+ <comment xml:lang="es">base de datos de CD XMCD</comment>
+ <comment xml:lang="eu">XMCD CD datu-basea</comment>
+ <comment xml:lang="fi">XMCD CD -tietokanta</comment>
+ <comment xml:lang="fo">XMCD fløgu dátustovnur</comment>
+ <comment xml:lang="fr">base de données de CD XMCD</comment>
++ <comment xml:lang="fur">base di dâts XMCD CD</comment>
+ <comment xml:lang="ga">bunachar sonraí XMCD CD</comment>
+ <comment xml:lang="gl">base de datos de CD XMCD</comment>
+ <comment xml:lang="he">מסד נתונים XMCD CD</comment>
+@@ -37279,7 +38663,7 @@
+ <comment xml:lang="oc">banca de donadas de CD XMCD</comment>
+ <comment xml:lang="pl">Baza danych CD XMCD</comment>
+ <comment xml:lang="pt">base de dados XMCD CD</comment>
+- <comment xml:lang="pt_BR">Banco de dados de CD XMCD</comment>
++ <comment xml:lang="pt-BR">Banco de dados de CD XMCD</comment>
+ <comment xml:lang="ro">Bază de date XMCD CD</comment>
+ <comment xml:lang="ru">База данных компакт-дисков XMCD</comment>
+ <comment xml:lang="sk">Databáza XMCD CD</comment>
+@@ -37287,34 +38671,36 @@
+ <comment xml:lang="sq">Bazë me të dhëna XMCD CD</comment>
+ <comment xml:lang="sr">ИксМЦД ЦД база података</comment>
+ <comment xml:lang="sv">XMCD cd-databas</comment>
+- <comment xml:lang="tr">XMCD CD veritabanı</comment>
++ <comment xml:lang="tr">XMCD CD veri tabanı</comment>
+ <comment xml:lang="uk">база даних XMCD CD</comment>
+ <comment xml:lang="vi">Cơ sở dữ liệu CD XMCD</comment>
+- <comment xml:lang="zh_CN">XMCD CD 数据库</comment>
+- <comment xml:lang="zh_TW">XMCD CD 資料庫</comment>
++ <comment xml:lang="zh-CN">XMCD CD 数据库</comment>
++ <comment xml:lang="zh-TW">XMCD CD 資料庫</comment>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="# xmcd" type="string" offset="0"/>
++ <match type="string" value="# xmcd" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/xml">
+ <comment>XML document</comment>
++ <comment xml:lang="af">XML-dokument</comment>
+ <comment xml:lang="ar">مستند XML</comment>
+ <comment xml:lang="ast">Documentu XML</comment>
+- <comment xml:lang="be@latin">Dakument XML</comment>
++ <comment xml:lang="be-Latn">Dakument XML</comment>
+ <comment xml:lang="bg">Документ — XML</comment>
+ <comment xml:lang="ca">document XML</comment>
+ <comment xml:lang="cs">dokument XML</comment>
+ <comment xml:lang="da">XML-dokument</comment>
+ <comment xml:lang="de">XML-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο XML</comment>
+- <comment xml:lang="en_GB">XML document</comment>
++ <comment xml:lang="en-GB">XML document</comment>
+ <comment xml:lang="eo">XML-dokumento</comment>
+ <comment xml:lang="es">documento XML</comment>
+ <comment xml:lang="eu">XML dokumentua</comment>
+ <comment xml:lang="fi">XML-asiakirja</comment>
+ <comment xml:lang="fo">XML skjal</comment>
+ <comment xml:lang="fr">document XML</comment>
++ <comment xml:lang="fur">document XML</comment>
+ <comment xml:lang="ga">cáipéis XML</comment>
+ <comment xml:lang="gl">documento XML</comment>
+ <comment xml:lang="he">מסמך XML</comment>
+@@ -37334,7 +38720,7 @@
+ <comment xml:lang="oc">document XML</comment>
+ <comment xml:lang="pl">Dokument XML</comment>
+ <comment xml:lang="pt">documento XML</comment>
+- <comment xml:lang="pt_BR">Documento XML</comment>
++ <comment xml:lang="pt-BR">Documento XML</comment>
+ <comment xml:lang="ro">Document XML</comment>
+ <comment xml:lang="ru">Документ XML</comment>
+ <comment xml:lang="sk">Dokument XML</comment>
+@@ -37345,15 +38731,14 @@
+ <comment xml:lang="tr">XML belgesi</comment>
+ <comment xml:lang="uk">документ XML</comment>
+ <comment xml:lang="vi">Tài liệu XML</comment>
+- <comment xml:lang="zh_CN">XML 文档</comment>
+- <comment xml:lang="zh_TW">XML 文件</comment>
++ <comment xml:lang="zh-CN">XML 文档</comment>
++ <comment xml:lang="zh-TW">XML 文件</comment>
+ <acronym>XML</acronym>
+ <expanded-acronym>eXtensible Markup Language</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-html"/>
+ <magic priority="40">
+- <match value="&lt;?xml" type="string" offset="0"/>
+- <match value="&lt;!--" type="string" offset="0"/>
++ <match type="string" value="&lt;?xml" offset="0"/>
+ </magic>
+ <glob pattern="*.xml"/>
+ <glob pattern="*.xbl"/>
+@@ -37363,21 +38748,23 @@
+ </mime-type>
+ <mime-type type="application/xml-external-parsed-entity">
+ <comment>XML entities document</comment>
++ <comment xml:lang="af">XML-entiteitedokument</comment>
+ <comment xml:lang="ar">مستند كيانات XML</comment>
+ <comment xml:lang="ast">Documentu d'entidaes XML</comment>
+- <comment xml:lang="be@latin">Dakument elementaŭ XML</comment>
++ <comment xml:lang="be-Latn">Dakument elementaŭ XML</comment>
+ <comment xml:lang="bg">Документ — заместващи последователности в XML</comment>
+ <comment xml:lang="ca">document d'entitats XML</comment>
+ <comment xml:lang="cs">dokument entit XML</comment>
+ <comment xml:lang="da">XML-enhedsdokument</comment>
+ <comment xml:lang="de">XML-Dokument-Entitäten</comment>
+ <comment xml:lang="el">Έγγραφο οντοτήτων XML</comment>
+- <comment xml:lang="en_GB">XML entities document</comment>
++ <comment xml:lang="en-GB">XML entities document</comment>
+ <comment xml:lang="es">documento de entidades XML</comment>
+ <comment xml:lang="eu">XML entitateen dokumentua</comment>
+ <comment xml:lang="fi">XML-entiteettiasiakirja</comment>
+ <comment xml:lang="fo">XML einindisskjal</comment>
+ <comment xml:lang="fr">document d'entités XML</comment>
++ <comment xml:lang="fur">document entitâts XML</comment>
+ <comment xml:lang="ga">cáipéis aonán XML</comment>
+ <comment xml:lang="gl">documento de entidades XML</comment>
+ <comment xml:lang="he">מסמך ישויות XML</comment>
+@@ -37397,7 +38784,7 @@
+ <comment xml:lang="oc">document d'entitats XML</comment>
+ <comment xml:lang="pl">Dokument jednostek XML</comment>
+ <comment xml:lang="pt">documento de entidades XML</comment>
+- <comment xml:lang="pt_BR">Documento de entidades XML</comment>
++ <comment xml:lang="pt-BR">Documento de entidades XML</comment>
+ <comment xml:lang="ro">Document entități XML</comment>
+ <comment xml:lang="ru">Файл сущностей XML</comment>
+ <comment xml:lang="sk">Dokument entít XML</comment>
+@@ -37408,8 +38795,8 @@
+ <comment xml:lang="tr">XML varlıklar belgesi</comment>
+ <comment xml:lang="uk">документ об’єктів XML</comment>
+ <comment xml:lang="vi">Tài liệu thực thể XML</comment>
+- <comment xml:lang="zh_CN">XML 特征文档</comment>
+- <comment xml:lang="zh_TW">XML 實體文件</comment>
++ <comment xml:lang="zh-CN">XML 特征文档</comment>
++ <comment xml:lang="zh-TW">XML 實體文件</comment>
+ <acronym>XML</acronym>
+ <expanded-acronym>eXtensible Markup Language</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+@@ -37419,22 +38806,24 @@
+ </mime-type>
+ <mime-type type="video/dv">
+ <comment>DV video</comment>
++ <comment xml:lang="af">DV-video</comment>
+ <comment xml:lang="ar">DV مرئي</comment>
+ <comment xml:lang="ast">Videu en DV</comment>
+- <comment xml:lang="be@latin">Videa DV</comment>
++ <comment xml:lang="be-Latn">Videa DV</comment>
+ <comment xml:lang="bg">Видео — DV</comment>
+ <comment xml:lang="ca">vídeo DV</comment>
+ <comment xml:lang="cs">video DV</comment>
+ <comment xml:lang="da">DV-video</comment>
+ <comment xml:lang="de">DV-Video</comment>
+ <comment xml:lang="el">Βίντεο DV</comment>
+- <comment xml:lang="en_GB">DV video</comment>
++ <comment xml:lang="en-GB">DV video</comment>
+ <comment xml:lang="eo">DV-video</comment>
+ <comment xml:lang="es">vídeo DV</comment>
+ <comment xml:lang="eu">DV bideoa</comment>
+ <comment xml:lang="fi">DV-video</comment>
+ <comment xml:lang="fo">DV video</comment>
+ <comment xml:lang="fr">vidéo DV</comment>
++ <comment xml:lang="fur">video DV</comment>
+ <comment xml:lang="ga">físeán DV</comment>
+ <comment xml:lang="gl">vídeo DV</comment>
+ <comment xml:lang="he">וידאו DV</comment>
+@@ -37455,7 +38844,7 @@
+ <comment xml:lang="oc">vidèo DV</comment>
+ <comment xml:lang="pl">Plik wideo DV</comment>
+ <comment xml:lang="pt">vídeo DV</comment>
+- <comment xml:lang="pt_BR">Vídeo DV</comment>
++ <comment xml:lang="pt-BR">Vídeo DV</comment>
+ <comment xml:lang="ro">Video DV</comment>
+ <comment xml:lang="ru">Видео DV</comment>
+ <comment xml:lang="sk">Video DV</comment>
+@@ -37466,21 +38855,22 @@
+ <comment xml:lang="tr">DV video</comment>
+ <comment xml:lang="uk">відеокліп DV</comment>
+ <comment xml:lang="vi">Ảnh động DV</comment>
+- <comment xml:lang="zh_CN">DV 视频</comment>
+- <comment xml:lang="zh_TW">DV 視訊</comment>
++ <comment xml:lang="zh-CN">DV 视频</comment>
++ <comment xml:lang="zh-TW">DV 視訊</comment>
+ <acronym>DV</acronym>
+ <expanded-acronym>Digital Video</expanded-acronym>
+ <magic priority="50">
+- <match value="0x1f070000" type="big32" offset="0" mask="0xffffff00"/>
++ <match type="big32" value="0x1f070000" mask="0xffffff00" offset="0"/>
+ </magic>
+ <glob pattern="*.dv"/>
+ </mime-type>
+ <mime-type type="video/isivideo">
+ <comment>ISI video</comment>
++ <comment xml:lang="af">ISI-video</comment>
+ <comment xml:lang="ar">مرئي ISI</comment>
+ <comment xml:lang="ast">Videu n'ISI</comment>
+ <comment xml:lang="az">ISI video faylı</comment>
+- <comment xml:lang="be@latin">Videa ISI</comment>
++ <comment xml:lang="be-Latn">Videa ISI</comment>
+ <comment xml:lang="bg">Видео — ISI</comment>
+ <comment xml:lang="ca">vídeo ISI</comment>
+ <comment xml:lang="cs">video ISI</comment>
+@@ -37488,13 +38878,14 @@
+ <comment xml:lang="da">ISI-video</comment>
+ <comment xml:lang="de">ISI-Video</comment>
+ <comment xml:lang="el">Βίντεο ISI</comment>
+- <comment xml:lang="en_GB">ISI video</comment>
++ <comment xml:lang="en-GB">ISI video</comment>
+ <comment xml:lang="eo">ISI-video</comment>
+ <comment xml:lang="es">vídeo ISI</comment>
+ <comment xml:lang="eu">ISI bideoa</comment>
+ <comment xml:lang="fi">ISI-video</comment>
+ <comment xml:lang="fo">ISI video</comment>
+ <comment xml:lang="fr">vidéo ISI</comment>
++ <comment xml:lang="fur">video ISI</comment>
+ <comment xml:lang="ga">físeán ISI</comment>
+ <comment xml:lang="gl">vídeo ISI</comment>
+ <comment xml:lang="he">וידאו ISI</comment>
+@@ -37515,7 +38906,7 @@
+ <comment xml:lang="oc">vidèo ISI</comment>
+ <comment xml:lang="pl">Plik wideo ISI</comment>
+ <comment xml:lang="pt">vídeo ISI</comment>
+- <comment xml:lang="pt_BR">Vídeo ISI</comment>
++ <comment xml:lang="pt-BR">Vídeo ISI</comment>
+ <comment xml:lang="ro">Video ISI</comment>
+ <comment xml:lang="ru">Видео ISI</comment>
+ <comment xml:lang="sk">Video ISI</comment>
+@@ -37526,11 +38917,12 @@
+ <comment xml:lang="tr">ISI videosu</comment>
+ <comment xml:lang="uk">відеокліп ISI</comment>
+ <comment xml:lang="vi">Ảnh động ISI</comment>
+- <comment xml:lang="zh_CN">ISI 视频</comment>
+- <comment xml:lang="zh_TW">ISI 視訊</comment>
++ <comment xml:lang="zh-CN">ISI 视频</comment>
++ <comment xml:lang="zh-TW">ISI 視訊</comment>
+ </mime-type>
+ <mime-type type="video/mp2t">
+ <comment>MPEG-2 transport stream</comment>
++ <comment xml:lang="af">MPEG-2-vervoerstroom</comment>
+ <comment xml:lang="ar">بث نقل MPEG-2</comment>
+ <comment xml:lang="bg">Поток — транспорт по MPEG-2</comment>
+ <comment xml:lang="ca">flux de transport MPEG-2</comment>
+@@ -37538,12 +38930,13 @@
+ <comment xml:lang="da">MPEG-2-transportstrøm</comment>
+ <comment xml:lang="de">MPEG-2-Transportstrom</comment>
+ <comment xml:lang="el">Ροή μεταφοράς MPEG-2</comment>
+- <comment xml:lang="en_GB">MPEG-2 transport stream</comment>
++ <comment xml:lang="en-GB">MPEG-2 transport stream</comment>
+ <comment xml:lang="es">flujo de transporte MPEG-2</comment>
+ <comment xml:lang="eu">MPEG-2 korronte garraioa</comment>
+ <comment xml:lang="fi">MPEG-2 -siirtobittivirta</comment>
+ <comment xml:lang="fo">MPEG-2 flutningsstreymur</comment>
+ <comment xml:lang="fr">flux de transport MPEG-2</comment>
++ <comment xml:lang="fur">flus di traspuart MPEG-2</comment>
+ <comment xml:lang="ga">sruth aistrithe MPEG-2</comment>
+ <comment xml:lang="gl">fluxo de transporte MPEG-2</comment>
+ <comment xml:lang="he">העברת זרימה של MPEG-2</comment>
+@@ -37562,7 +38955,7 @@
+ <comment xml:lang="oc">flux de transpòrt MPEG-2</comment>
+ <comment xml:lang="pl">Strumień przesyłania MPEG-2</comment>
+ <comment xml:lang="pt">fluxo de transporte MPEG-2</comment>
+- <comment xml:lang="pt_BR">Fluxo de transporte de MPEG-2</comment>
++ <comment xml:lang="pt-BR">Fluxo de transporte de MPEG-2</comment>
+ <comment xml:lang="ro">Flux transport MPEG-2</comment>
+ <comment xml:lang="ru">Транспортный поток MPEG-2</comment>
+ <comment xml:lang="sk">MPEG-2 Transport Stream</comment>
+@@ -37571,25 +38964,25 @@
+ <comment xml:lang="sv">MPEG-2 transportström</comment>
+ <comment xml:lang="tr">MPEG-2 aktarım akışı</comment>
+ <comment xml:lang="uk">потік передавання даних MPEG-2</comment>
+- <comment xml:lang="zh_CN">MPEG-2 传输流</comment>
+- <comment xml:lang="zh_TW">MPEG-2 傳輸串流</comment>
++ <comment xml:lang="zh-CN">MPEG-2 传输流</comment>
++ <comment xml:lang="zh-TW">MPEG-2 傳輸串流</comment>
+ <acronym>MPEG-2 TS</acronym>
+ <expanded-acronym>Moving Picture Experts Group 2 Transport Stream</expanded-acronym>
+ <magic priority="50">
+- <match value="0x47" type="byte" offset="0">
+- <match value="0x47" type="byte" offset="188">
+- <match value="0x47" type="byte" offset="376">
+- <match value="0x47" type="byte" offset="564">
+- <match value="0x47" type="byte" offset="752"/>
++ <match type="byte" value="0x47" offset="0">
++ <match type="byte" value="0x47" offset="188">
++ <match type="byte" value="0x47" offset="376">
++ <match type="byte" value="0x47" offset="564">
++ <match type="byte" value="0x47" offset="752"/>
+ </match>
+ </match>
+ </match>
+ </match>
+- <match value="0x47" type="byte" offset="4">
+- <match value="0x47" type="byte" offset="196">
+- <match value="0x47" type="byte" offset="388">
+- <match value="0x47" type="byte" offset="580">
+- <match value="0x47" type="byte" offset="772"/>
++ <match type="byte" value="0x47" offset="4">
++ <match type="byte" value="0x47" offset="196">
++ <match type="byte" value="0x47" offset="388">
++ <match type="byte" value="0x47" offset="580">
++ <match type="byte" value="0x47" offset="772"/>
+ </match>
+ </match>
+ </match>
+@@ -37608,22 +39001,24 @@
+ </mime-type>
+ <mime-type type="video/mpeg">
+ <comment>MPEG video</comment>
++ <comment xml:lang="af">MPEG-video</comment>
+ <comment xml:lang="ar">MPEG مرئي</comment>
+ <comment xml:lang="ast">Videu en MPEG</comment>
+- <comment xml:lang="be@latin">Videa MPEG</comment>
++ <comment xml:lang="be-Latn">Videa MPEG</comment>
+ <comment xml:lang="bg">Видео — MPEG</comment>
+ <comment xml:lang="ca">vídeo MPEG</comment>
+ <comment xml:lang="cs">video MPEG</comment>
+ <comment xml:lang="da">MPEG-video</comment>
+ <comment xml:lang="de">MPEG-Video</comment>
+ <comment xml:lang="el">Βίντεο MPEG</comment>
+- <comment xml:lang="en_GB">MPEG video</comment>
++ <comment xml:lang="en-GB">MPEG video</comment>
+ <comment xml:lang="eo">MPEG-video</comment>
+ <comment xml:lang="es">vídeo MPEG</comment>
+ <comment xml:lang="eu">MPEG bideoa</comment>
+ <comment xml:lang="fi">MPEG-video</comment>
+ <comment xml:lang="fo">MPEG video</comment>
+ <comment xml:lang="fr">vidéo MPEG</comment>
++ <comment xml:lang="fur">video MPEG</comment>
+ <comment xml:lang="ga">físeán MPEG</comment>
+ <comment xml:lang="gl">vídeo MPEG</comment>
+ <comment xml:lang="he">וידאו MPEG</comment>
+@@ -37645,7 +39040,7 @@
+ <comment xml:lang="oc">vidèo MPEG</comment>
+ <comment xml:lang="pl">Plik wideo MPEG</comment>
+ <comment xml:lang="pt">vídeo MPEG</comment>
+- <comment xml:lang="pt_BR">Vídeo MPEG</comment>
++ <comment xml:lang="pt-BR">Vídeo MPEG</comment>
+ <comment xml:lang="ro">Video MPEG</comment>
+ <comment xml:lang="ru">Видео MPEG</comment>
+ <comment xml:lang="sk">Video MPEG</comment>
+@@ -37656,8 +39051,8 @@
+ <comment xml:lang="tr">MPEG videosu</comment>
+ <comment xml:lang="uk">відеокліп MPEG</comment>
+ <comment xml:lang="vi">Ảnh động MPEG</comment>
+- <comment xml:lang="zh_CN">MPEG 视频</comment>
+- <comment xml:lang="zh_TW">MPEG 視訊</comment>
++ <comment xml:lang="zh-CN">MPEG 视频</comment>
++ <comment xml:lang="zh-TW">MPEG 視訊</comment>
+ <acronym>MPEG</acronym>
+ <expanded-acronym>Moving Picture Experts Group</expanded-acronym>
+ <alias type="video/x-mpeg"/>
+@@ -37665,9 +39060,9 @@
+ <alias type="video/x-mpeg-system"/>
+ <alias type="video/x-mpeg2"/>
+ <magic priority="50">
+- <match value="\x47\x3f\xff\x10" type="string" offset="0"/>
+- <match value="0x000001b3" type="big32" offset="0"/>
+- <match value="0x000001ba" type="big32" offset="0"/>
++ <match type="string" value="\x47\x3f\xff\x10" offset="0"/>
++ <match type="big32" value="0x000001b3" offset="0"/>
++ <match type="big32" value="0x000001ba" offset="0"/>
+ </magic>
+ <glob pattern="*.mpeg"/>
+ <glob pattern="*.mpg"/>
+@@ -37677,50 +39072,11 @@
+ <glob pattern="[0-9][0-9][0-9].vdr"/>
+ </mime-type>
+ <mime-type type="video/vnd.mpegurl">
+- <comment>MPEG video (streamed)</comment>
+- <comment xml:lang="ast">Videu en MPEG (tresmitíu)</comment>
+- <comment xml:lang="bg">Видео — MPEG, поточно</comment>
+- <comment xml:lang="ca">vídeo MPEG (flux)</comment>
+- <comment xml:lang="cs">video MPEG (proud)</comment>
+- <comment xml:lang="da">MPEG-video (streamet)</comment>
+- <comment xml:lang="de">MPEG-Video (Datenstrom)</comment>
+- <comment xml:lang="el">Βίντεο MPEG (εκπεμπόμενο)</comment>
+- <comment xml:lang="en_GB">MPEG video (streamed)</comment>
+- <comment xml:lang="es">vídeo MPEG (transmisión)</comment>
+- <comment xml:lang="eu">MPEG bideoa (korronte bidez)</comment>
+- <comment xml:lang="fi">MPEG-video (virtaus)</comment>
+- <comment xml:lang="fr">vidéo MPEG (flux)</comment>
+- <comment xml:lang="ga">físeán MPEG (sruthaithe)</comment>
+- <comment xml:lang="gl">vídeo MPEG (en stream)</comment>
+- <comment xml:lang="he">קובץ MPEG (בהזרמה)</comment>
+- <comment xml:lang="hr">MPEG video snimka (strujanje)</comment>
+- <comment xml:lang="hu">MPEG videó (szórt)</comment>
+- <comment xml:lang="ia">Video MPEG (in fluxo)</comment>
+- <comment xml:lang="id">Video MPEG (di-stream-kan)</comment>
+- <comment xml:lang="it">Video MPEG (streamed)</comment>
+- <comment xml:lang="ja">MPEG ビデオ(ストリーム)</comment>
+- <comment xml:lang="ka">MPEG ვიდეო (ნაკადი)</comment>
+- <comment xml:lang="kk">MPEG видео (ағымдық)</comment>
+- <comment xml:lang="ko">MPEG 동영상(스트리밍)</comment>
+- <comment xml:lang="lv">MPEG video (straumēts)</comment>
+- <comment xml:lang="nl">MPEG video (streamed)</comment>
+- <comment xml:lang="oc">vidèo MPEG (flux)</comment>
+- <comment xml:lang="pl">Plik wideo MPEG (strumień)</comment>
+- <comment xml:lang="pt">vídeo MPEG (em fluxo)</comment>
+- <comment xml:lang="pt_BR">Vídeo MPEG (fluxo)</comment>
+- <comment xml:lang="ru">Видео MPEG (потоковое)</comment>
+- <comment xml:lang="sk">MPEG video (streamované)</comment>
+- <comment xml:lang="sl">MPEG-video (pretočni)</comment>
+- <comment xml:lang="sr">МПЕГ видео (проточни)</comment>
+- <comment xml:lang="sv">MPEG-video (strömmad)</comment>
+- <comment xml:lang="tr">MPEG videosu (akış)</comment>
+- <comment xml:lang="uk">відеокліп MPEG (потоковий)</comment>
+- <comment xml:lang="zh_CN">MPEG 视频流媒体</comment>
+- <comment xml:lang="zh_TW">MPEG 視訊 (串流)</comment>
++ <comment>Video playlist</comment>
+ <sub-class-of type="text/plain"/>
+ <alias type="video/x-mpegurl"/>
+ <magic priority="50">
+- <match value="#EXTM4U" type="string" offset="0"/>
++ <match type="string" value="#EXTM4U" offset="0"/>
+ </magic>
+ <glob pattern="*.m1u"/>
+ <glob pattern="*.m4u"/>
+@@ -37728,22 +39084,24 @@
+ </mime-type>
+ <mime-type type="video/quicktime">
+ <comment>QuickTime video</comment>
++ <comment xml:lang="af">QuickTime-video</comment>
+ <comment xml:lang="ar">QuickTime مرئي</comment>
+ <comment xml:lang="ast">Videu en QuickTime</comment>
+- <comment xml:lang="be@latin">Videa QuickTime</comment>
++ <comment xml:lang="be-Latn">Videa QuickTime</comment>
+ <comment xml:lang="bg">Видео — QuickTime</comment>
+ <comment xml:lang="ca">vídeo QuickTime</comment>
+ <comment xml:lang="cs">video QuickTime</comment>
+ <comment xml:lang="da">QuickTime-video</comment>
+ <comment xml:lang="de">QuickTime-Video</comment>
+ <comment xml:lang="el">Βίντεο QuickTime</comment>
+- <comment xml:lang="en_GB">QuickTime video</comment>
++ <comment xml:lang="en-GB">QuickTime video</comment>
+ <comment xml:lang="eo">QuickTime-video</comment>
+ <comment xml:lang="es">vídeo QuickTime</comment>
+ <comment xml:lang="eu">QuickTime bideoa</comment>
+ <comment xml:lang="fi">QuickTime-video</comment>
+ <comment xml:lang="fo">QuickTime video</comment>
+ <comment xml:lang="fr">vidéo QuickTime</comment>
++ <comment xml:lang="fur">video QuickTime</comment>
+ <comment xml:lang="ga">físeán QuickTime</comment>
+ <comment xml:lang="gl">vídeo QuickTime</comment>
+ <comment xml:lang="he">וידאו של QuickTime</comment>
+@@ -37764,7 +39122,7 @@
+ <comment xml:lang="oc">vidèo QuickTime</comment>
+ <comment xml:lang="pl">Plik wideo QuickTime</comment>
+ <comment xml:lang="pt">vídeo QuickTime</comment>
+- <comment xml:lang="pt_BR">Vídeo do QuickTime</comment>
++ <comment xml:lang="pt-BR">Vídeo do QuickTime</comment>
+ <comment xml:lang="ro">Video QuickTime</comment>
+ <comment xml:lang="ru">Видео QuickTime</comment>
+ <comment xml:lang="sk">Video QuickTime</comment>
+@@ -37775,13 +39133,13 @@
+ <comment xml:lang="tr">QuickTime videosu</comment>
+ <comment xml:lang="uk">відеокліп QuickTime</comment>
+ <comment xml:lang="vi">Ảnh động QuickTime</comment>
+- <comment xml:lang="zh_CN">QuickTime 视频</comment>
+- <comment xml:lang="zh_TW">QuickTime 視訊</comment>
++ <comment xml:lang="zh-CN">QuickTime 视频</comment>
++ <comment xml:lang="zh-TW">QuickTime 視訊</comment>
+ <magic priority="50">
+- <match value="mdat" type="string" offset="12"/>
+- <match value="mdat" type="string" offset="4"/>
+- <match value="moov" type="string" offset="4"/>
+- <match value="ftypqt" type="string" offset="4"/>
++ <match type="string" value="mdat" offset="12"/>
++ <match type="string" value="mdat" offset="4"/>
++ <match type="string" value="moov" offset="4"/>
++ <match type="string" value="ftypqt" offset="4"/>
+ </magic>
+ <glob pattern="*.qt"/>
+ <glob pattern="*.mov"/>
+@@ -37790,21 +39148,23 @@
+ </mime-type>
+ <mime-type type="image/x-quicktime">
+ <comment>QuickTime image</comment>
++ <comment xml:lang="af">QuickTime-beeld</comment>
+ <comment xml:lang="ar">صورة QuickTime</comment>
+- <comment xml:lang="be@latin">Vyjava QuickTime</comment>
++ <comment xml:lang="be-Latn">Vyjava QuickTime</comment>
+ <comment xml:lang="bg">Изображение — QuickTime</comment>
+ <comment xml:lang="ca">imatge QuickTime</comment>
+ <comment xml:lang="cs">obrázek QuickTime</comment>
+ <comment xml:lang="da">QuickTime-billede</comment>
+ <comment xml:lang="de">QuickTime-Bild</comment>
+ <comment xml:lang="el">Εικόνα QuickTime</comment>
+- <comment xml:lang="en_GB">QuickTime image</comment>
++ <comment xml:lang="en-GB">QuickTime image</comment>
+ <comment xml:lang="eo">QuickTime-bildo</comment>
+ <comment xml:lang="es">imagen de QuickTime</comment>
+ <comment xml:lang="eu">QuickTime irudia</comment>
+ <comment xml:lang="fi">QuickTime-kuva</comment>
+ <comment xml:lang="fo">QuickTime mynd</comment>
+ <comment xml:lang="fr">image QuickTime</comment>
++ <comment xml:lang="fur">imagjin QuickTime</comment>
+ <comment xml:lang="ga">íomhá QuickTime</comment>
+ <comment xml:lang="gl">imaxe QuickTime</comment>
+ <comment xml:lang="he">תמונה של QuickTime</comment>
+@@ -37824,7 +39184,7 @@
+ <comment xml:lang="oc">imatge QuickTime</comment>
+ <comment xml:lang="pl">Obraz QuickTime</comment>
+ <comment xml:lang="pt">imagem QuickTime</comment>
+- <comment xml:lang="pt_BR">Imagem do QuickTime</comment>
++ <comment xml:lang="pt-BR">Imagem do QuickTime</comment>
+ <comment xml:lang="ro">Imagine QuickTime</comment>
+ <comment xml:lang="ru">Изображение QuickTime</comment>
+ <comment xml:lang="sk">Obrázok QuickTime</comment>
+@@ -37835,54 +39195,116 @@
+ <comment xml:lang="tr">QuickTime görüntüsü</comment>
+ <comment xml:lang="uk">зображення QuickTime</comment>
+ <comment xml:lang="vi">Ảnh QuickTime</comment>
+- <comment xml:lang="zh_CN">QuickTime 图像</comment>
+- <comment xml:lang="zh_TW">QuickTime 影像</comment>
++ <comment xml:lang="zh-CN">QuickTime 图像</comment>
++ <comment xml:lang="zh-TW">QuickTime 影像</comment>
+ <magic priority="50">
+- <match value="idat" type="string" offset="4"/>
++ <match type="string" value="idat" offset="4"/>
+ </magic>
+ <glob pattern="*.qtif"/>
+ <glob pattern="*.qif"/>
+ </mime-type>
+ <mime-type type="image/ktx">
+ <comment>Khronos texture image</comment>
++ <comment xml:lang="af">Khronos-tekstuurbeeld</comment>
++ <comment xml:lang="bg">Изображение — текстура за Khronos</comment>
+ <comment xml:lang="ca">imatge de textura de Khronos</comment>
+ <comment xml:lang="cs">obrázek s texturou Khronos</comment>
++ <comment xml:lang="da">Khronos-strukturbillede</comment>
+ <comment xml:lang="de">Khronos-Texturbild</comment>
+- <comment xml:lang="en_GB">Khronos texture image</comment>
++ <comment xml:lang="en-GB">Khronos texture image</comment>
+ <comment xml:lang="es">imagen de textura de Khronos</comment>
++ <comment xml:lang="eu">Khronos testura irudia</comment>
++ <comment xml:lang="fi">Khronos-tekstuurikuva</comment>
+ <comment xml:lang="fr">image de texture Khronos</comment>
++ <comment xml:lang="fur">imagjin di struture/texture Khronos</comment>
+ <comment xml:lang="ga">íomhá uigeachta Khronos</comment>
+ <comment xml:lang="hr">Khronos tekstura slika</comment>
+ <comment xml:lang="hu">Khronos textúra kép</comment>
+- <comment xml:lang="id">citra tekstur Khronos</comment>
++ <comment xml:lang="id">Citra tekstur Khronos</comment>
+ <comment xml:lang="it">Immagine texture Khronos</comment>
+ <comment xml:lang="kk">Khronos текстура суреті</comment>
+ <comment xml:lang="ko">크로노스 텍스처 파일</comment>
+ <comment xml:lang="pl">Obraz tekstury Khronos</comment>
+- <comment xml:lang="pt_BR">Imagem de textura do Khronos</comment>
++ <comment xml:lang="pt-BR">Imagem de textura do Khronos</comment>
+ <comment xml:lang="ru">Изображение текстуры Khronos</comment>
+ <comment xml:lang="sk">Obrázok textúry Khronos</comment>
+ <comment xml:lang="sr">слика Кронос текстуре</comment>
+ <comment xml:lang="sv">Khronos-texturbild</comment>
+ <comment xml:lang="tr">Khronos kaplama görüntüsü</comment>
+ <comment xml:lang="uk">зображення текстури Khronos</comment>
+- <comment xml:lang="zh_CN">Khronos 纹理图像</comment>
+- <comment xml:lang="zh_TW">Khronos 紋理影像</comment>
++ <comment xml:lang="zh-CN">Khronos 纹理图像</comment>
++ <comment xml:lang="zh-TW">Khronos 紋理影像</comment>
+ <magic priority="80">
+- <match value="0xAB4B5458" type="big32" offset="0">
+- <match value="0x203131BB" type="big32" offset="4">
+- <match value="0x0D0A1A0A" type="big32" offset="8"/>
++ <match type="big32" value="0xAB4B5458" offset="0">
++ <match type="big32" value="0x203131BB" offset="4">
++ <match type="big32" value="0x0D0A1A0A" offset="8"/>
+ </match>
+ </match>
+ </magic>
+ <glob pattern="*.ktx"/>
+ </mime-type>
++ <mime-type type="image/ktx2">
++ <comment>Khronos texture image</comment>
++ <comment xml:lang="af">Khronos-tekstuurbeeld</comment>
++ <comment xml:lang="bg">Изображение — текстура за Khronos</comment>
++ <comment xml:lang="ca">imatge de textura de Khronos</comment>
++ <comment xml:lang="cs">obrázek s texturou Khronos</comment>
++ <comment xml:lang="da">Khronos-strukturbillede</comment>
++ <comment xml:lang="de">Khronos-Texturbild</comment>
++ <comment xml:lang="en-GB">Khronos texture image</comment>
++ <comment xml:lang="es">imagen de textura de Khronos</comment>
++ <comment xml:lang="eu">Khronos testura irudia</comment>
++ <comment xml:lang="fi">Khronos-tekstuurikuva</comment>
++ <comment xml:lang="fr">image de texture Khronos</comment>
++ <comment xml:lang="fur">imagjin di struture/texture Khronos</comment>
++ <comment xml:lang="ga">íomhá uigeachta Khronos</comment>
++ <comment xml:lang="hr">Khronos tekstura slika</comment>
++ <comment xml:lang="hu">Khronos textúra kép</comment>
++ <comment xml:lang="id">Citra tekstur Khronos</comment>
++ <comment xml:lang="it">Immagine texture Khronos</comment>
++ <comment xml:lang="kk">Khronos текстура суреті</comment>
++ <comment xml:lang="ko">크로노스 텍스처 파일</comment>
++ <comment xml:lang="pl">Obraz tekstury Khronos</comment>
++ <comment xml:lang="pt-BR">Imagem de textura do Khronos</comment>
++ <comment xml:lang="ru">Изображение текстуры Khronos</comment>
++ <comment xml:lang="sk">Obrázok textúry Khronos</comment>
++ <comment xml:lang="sr">слика Кронос текстуре</comment>
++ <comment xml:lang="sv">Khronos-texturbild</comment>
++ <comment xml:lang="tr">Khronos kaplama görüntüsü</comment>
++ <comment xml:lang="uk">зображення текстури Khronos</comment>
++ <comment xml:lang="zh-CN">Khronos 纹理图像</comment>
++ <comment xml:lang="zh-TW">Khronos 紋理影像</comment>
++ <magic priority="80">
++ <match type="big32" value="0xAB4B5458" offset="0">
++ <match type="big32" value="0x203230BB" offset="4">
++ <match type="big32" value="0x0D0A1A0A" offset="8"/>
++ </match>
++ </match>
++ </magic>
++ <glob pattern="*.ktx2"/>
++ </mime-type>
++ <mime-type type="image/astc">
++ <comment>ASTC texture</comment>
++ <comment xml:lang="ca">textura ASTC</comment>
++ <comment xml:lang="fi">ASTC tekstuuri</comment>
++ <comment xml:lang="it">Texture ASTC</comment>
++ <comment xml:lang="pl">Tekstura ASTC</comment>
++ <comment xml:lang="pt-BR">Textura ASTC</comment>
++ <comment xml:lang="uk">текстура ASTC</comment>
++ <acronym>ASTC</acronym>
++ <expanded-acronym>Advanced Scalable Texture Compression</expanded-acronym>
++ <glob pattern="*.astc"/>
++ <magic priority="80">
++ <match type="little32" value="0x5CA1AB13" offset="0"/>
++ </magic>
++ </mime-type>
+ <mime-type type="video/vnd.vivo">
+ <comment>Vivo video</comment>
++ <comment xml:lang="af">Vivo-video</comment>
+ <comment xml:lang="ar">Vivo مرئي</comment>
+ <comment xml:lang="ast">Videu en Vivo</comment>
+ <comment xml:lang="az">Vivo video faylı</comment>
+- <comment xml:lang="be@latin">Videa Vivo</comment>
++ <comment xml:lang="be-Latn">Videa Vivo</comment>
+ <comment xml:lang="bg">Видео — Vivo</comment>
+ <comment xml:lang="ca">vídeo Vivo</comment>
+ <comment xml:lang="cs">video Vivo</comment>
+@@ -37890,13 +39312,14 @@
+ <comment xml:lang="da">Vivo-video</comment>
+ <comment xml:lang="de">Vivo-Video</comment>
+ <comment xml:lang="el">Βίντεο Vivo</comment>
+- <comment xml:lang="en_GB">Vivo video</comment>
++ <comment xml:lang="en-GB">Vivo video</comment>
+ <comment xml:lang="eo">Vivo-video</comment>
+ <comment xml:lang="es">vídeo Vivo</comment>
+ <comment xml:lang="eu">Vivo bideoa</comment>
+ <comment xml:lang="fi">Vivo-video</comment>
+ <comment xml:lang="fo">Vivo video</comment>
+ <comment xml:lang="fr">vidéo Vivo</comment>
++ <comment xml:lang="fur">video Vivo</comment>
+ <comment xml:lang="ga">físeán Vivo</comment>
+ <comment xml:lang="gl">vídeo Vivo</comment>
+ <comment xml:lang="he">וידאו של Vivo</comment>
+@@ -37917,7 +39340,7 @@
+ <comment xml:lang="oc">vidèo Vivo</comment>
+ <comment xml:lang="pl">Plik wideo Vivo</comment>
+ <comment xml:lang="pt">vídeo Vivo</comment>
+- <comment xml:lang="pt_BR">Vídeo Vivo</comment>
++ <comment xml:lang="pt-BR">Vídeo Vivo</comment>
+ <comment xml:lang="ro">Video Vivo</comment>
+ <comment xml:lang="ru">Видео Vivo</comment>
+ <comment xml:lang="sk">Video Vivo</comment>
+@@ -37928,32 +39351,34 @@
+ <comment xml:lang="tr">Vivo videosu</comment>
+ <comment xml:lang="uk">відео Vivo</comment>
+ <comment xml:lang="vi">Ảnh động Vivo</comment>
+- <comment xml:lang="zh_CN">Vivo 视频</comment>
+- <comment xml:lang="zh_TW">Vivo 視訊</comment>
++ <comment xml:lang="zh-CN">Vivo 视频</comment>
++ <comment xml:lang="zh-TW">Vivo 視訊</comment>
+ <alias type="video/vivo"/>
+ <glob pattern="*.viv"/>
+ <glob pattern="*.vivo"/>
+ </mime-type>
+ <mime-type type="video/wavelet">
+ <comment>Wavelet video</comment>
++ <comment xml:lang="af">Wavelet-video</comment>
+ <comment xml:lang="ar">Wavelet مرئي</comment>
+ <comment xml:lang="ast">Videu en Wavelet</comment>
+ <comment xml:lang="az">Wavelet video faylı</comment>
+- <comment xml:lang="be@latin">Videa Wavelet</comment>
++ <comment xml:lang="be-Latn">Videa Wavelet</comment>
+ <comment xml:lang="bg">Видео — Wavelet</comment>
+ <comment xml:lang="ca">vídeo Wavelet</comment>
+ <comment xml:lang="cs">video Wavelet</comment>
+ <comment xml:lang="cy">Fideo Wavelet</comment>
+- <comment xml:lang="da">Waveletvideo</comment>
++ <comment xml:lang="da">Wavelet-video</comment>
+ <comment xml:lang="de">Wavelet-Video</comment>
+ <comment xml:lang="el">Βίντεο Wavelet</comment>
+- <comment xml:lang="en_GB">Wavelet video</comment>
++ <comment xml:lang="en-GB">Wavelet video</comment>
+ <comment xml:lang="eo">Wavelet-video</comment>
+ <comment xml:lang="es">vídeo Wavelet</comment>
+ <comment xml:lang="eu">Wavelet bideoa</comment>
+ <comment xml:lang="fi">Wavelet-video</comment>
+ <comment xml:lang="fo">Wavelet video</comment>
+ <comment xml:lang="fr">vidéo Wavelet</comment>
++ <comment xml:lang="fur">video Wavelet</comment>
+ <comment xml:lang="ga">físeán Wavelet</comment>
+ <comment xml:lang="gl">vídeo Wavelet</comment>
+ <comment xml:lang="he">וידאו של Wavelet</comment>
+@@ -37974,7 +39399,7 @@
+ <comment xml:lang="oc">vidèo Wavelet</comment>
+ <comment xml:lang="pl">Plik wideo Wavelet</comment>
+ <comment xml:lang="pt">vídeo Wavelet</comment>
+- <comment xml:lang="pt_BR">Vídeo Wavelet</comment>
++ <comment xml:lang="pt-BR">Vídeo Wavelet</comment>
+ <comment xml:lang="ro">Video Wavelet</comment>
+ <comment xml:lang="ru">Видео Wavelet</comment>
+ <comment xml:lang="sk">Video Wavelet</comment>
+@@ -37985,14 +39410,15 @@
+ <comment xml:lang="tr">Wavelet videosu</comment>
+ <comment xml:lang="uk">відеокліп Wavelet</comment>
+ <comment xml:lang="vi">Ảnh động Wavelet</comment>
+- <comment xml:lang="zh_CN">Wavelet 视频</comment>
+- <comment xml:lang="zh_TW">Wavelet 視訊</comment>
++ <comment xml:lang="zh-CN">Wavelet 视频</comment>
++ <comment xml:lang="zh-TW">Wavelet 視訊</comment>
+ </mime-type>
+ <mime-type type="video/x-anim">
+ <comment>ANIM animation</comment>
++ <comment xml:lang="af">ANIM-animasie</comment>
+ <comment xml:lang="ar">تحريكة ANIM</comment>
+ <comment xml:lang="az">ANIM animasiyası</comment>
+- <comment xml:lang="be@latin">Animacyja ANIM</comment>
++ <comment xml:lang="be-Latn">Animacyja ANIM</comment>
+ <comment xml:lang="bg">Анимация — ANIM</comment>
+ <comment xml:lang="ca">animació ANIM</comment>
+ <comment xml:lang="cs">animace ANIM</comment>
+@@ -38000,13 +39426,14 @@
+ <comment xml:lang="da">ANIM-animation</comment>
+ <comment xml:lang="de">ANIM-Animation</comment>
+ <comment xml:lang="el">Κινούμενο σχέδιο ANIM</comment>
+- <comment xml:lang="en_GB">ANIM animation</comment>
++ <comment xml:lang="en-GB">ANIM animation</comment>
+ <comment xml:lang="eo">ANIM-animacio</comment>
+ <comment xml:lang="es">animación ANIM</comment>
+ <comment xml:lang="eu">ANIM animazioa</comment>
+ <comment xml:lang="fi">ANIM-animaatio</comment>
+ <comment xml:lang="fo">ANIM teknmyndagerð</comment>
+ <comment xml:lang="fr">animation ANIM</comment>
++ <comment xml:lang="fur">animazion ANIM</comment>
+ <comment xml:lang="ga">beochan ANIM</comment>
+ <comment xml:lang="gl">animación ANIM</comment>
+ <comment xml:lang="he">הנפשת ANIM</comment>
+@@ -38028,7 +39455,7 @@
+ <comment xml:lang="oc">animacion ANIM</comment>
+ <comment xml:lang="pl">Plik animacji ANIM</comment>
+ <comment xml:lang="pt">animação ANIM</comment>
+- <comment xml:lang="pt_BR">Animação ANIM</comment>
++ <comment xml:lang="pt-BR">Animação ANIM</comment>
+ <comment xml:lang="ro">Animație ANIM</comment>
+ <comment xml:lang="ru">Анимация ANIM</comment>
+ <comment xml:lang="sk">Animácia ANIM</comment>
+@@ -38039,26 +39466,28 @@
+ <comment xml:lang="tr">ANIM canlandırması</comment>
+ <comment xml:lang="uk">анімація ANIM</comment>
+ <comment xml:lang="vi">Hoạt ảnh ANIM</comment>
+- <comment xml:lang="zh_CN">ANIM 动画</comment>
+- <comment xml:lang="zh_TW">ANIM 動畫</comment>
++ <comment xml:lang="zh-CN">ANIM 动画</comment>
++ <comment xml:lang="zh-TW">ANIM 動畫</comment>
+ <glob pattern="*.anim[1-9j]"/>
+ </mime-type>
+ <mime-type type="video/x-flic">
+ <comment>FLIC animation</comment>
++ <comment xml:lang="af">FLIC-animasie</comment>
+ <comment xml:lang="ar">تحريكة FLIC</comment>
+- <comment xml:lang="be@latin">Animacyja FLIC</comment>
++ <comment xml:lang="be-Latn">Animacyja FLIC</comment>
+ <comment xml:lang="bg">Анимация — FLIC</comment>
+ <comment xml:lang="ca">animació FLIC</comment>
+ <comment xml:lang="cs">animace FLIC</comment>
+ <comment xml:lang="da">FLIC-animation</comment>
+ <comment xml:lang="de">FLIC-Animation</comment>
+ <comment xml:lang="el">Κινούμενο σχέδιο FLIC</comment>
+- <comment xml:lang="en_GB">FLIC animation</comment>
++ <comment xml:lang="en-GB">FLIC animation</comment>
+ <comment xml:lang="es">animación FLIC</comment>
+ <comment xml:lang="eu">FLIC animazioa</comment>
+ <comment xml:lang="fi">FLIC-animaatio</comment>
+ <comment xml:lang="fo">FLIC teknimyndagerð</comment>
+ <comment xml:lang="fr">animation FLIC</comment>
++ <comment xml:lang="fur">animazion FLIC</comment>
+ <comment xml:lang="ga">beochan FLIC</comment>
+ <comment xml:lang="gl">animación FLIC</comment>
+ <comment xml:lang="he">הנפשת FLIC</comment>
+@@ -38079,7 +39508,7 @@
+ <comment xml:lang="oc">animacion FLIC</comment>
+ <comment xml:lang="pl">Plik animacji FLIC</comment>
+ <comment xml:lang="pt">animação FLIC</comment>
+- <comment xml:lang="pt_BR">Animação FLIC</comment>
++ <comment xml:lang="pt-BR">Animação FLIC</comment>
+ <comment xml:lang="ro">Animație FLIC</comment>
+ <comment xml:lang="ru">Анимация FLIC</comment>
+ <comment xml:lang="sk">Animácia FLIC</comment>
+@@ -38090,34 +39519,36 @@
+ <comment xml:lang="tr">FLIC animasyonu</comment>
+ <comment xml:lang="uk">анімація FLIC</comment>
+ <comment xml:lang="vi">Hoạt ảnh FLIC</comment>
+- <comment xml:lang="zh_CN">FLIC 动画</comment>
+- <comment xml:lang="zh_TW">FLIC 動畫</comment>
++ <comment xml:lang="zh-CN">FLIC 动画</comment>
++ <comment xml:lang="zh-TW">FLIC 動畫</comment>
+ <alias type="video/fli"/>
+ <alias type="video/x-fli"/>
+ <magic priority="50">
+- <match value="0xAF11" type="little16" offset="0"/>
+- <match value="0xAF12" type="little16" offset="0"/>
++ <match type="little16" value="0xAF11" offset="0"/>
++ <match type="little16" value="0xAF12" offset="0"/>
+ </magic>
+ <glob pattern="*.fli"/>
+ <glob pattern="*.flc"/>
+ </mime-type>
+ <mime-type type="application/x-hwp">
+ <comment>Haansoft Hangul document</comment>
++ <comment xml:lang="af">Haansoft Hangul-dokument</comment>
+ <comment xml:lang="ar">مستند Haansoft Hangul</comment>
+ <comment xml:lang="ast">Documentu de Haansoft Hangul</comment>
+- <comment xml:lang="be@latin">Dakument Haansoft Hangul</comment>
++ <comment xml:lang="be-Latn">Dakument Haansoft Hangul</comment>
+ <comment xml:lang="bg">Документ — Haansoft Hangul</comment>
+ <comment xml:lang="ca">document d'Haansoft Hangul</comment>
+ <comment xml:lang="cs">dokument Haansoft Hangul</comment>
+ <comment xml:lang="da">Haansoft Hangul-dokument</comment>
+ <comment xml:lang="de">Haansoft-Hangul-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Haansoft Hangul</comment>
+- <comment xml:lang="en_GB">Haansoft Hangul document</comment>
++ <comment xml:lang="en-GB">Haansoft Hangul document</comment>
+ <comment xml:lang="es">documento de Haansoft Hangul</comment>
+ <comment xml:lang="eu">Haansoft Hangul dokumentua</comment>
+ <comment xml:lang="fi">Haansoft Hangul -asiakirja</comment>
+ <comment xml:lang="fo">Haansoft Hangul skjal</comment>
+ <comment xml:lang="fr">document Haansoft Hangul</comment>
++ <comment xml:lang="fur">document Haansoft Hangul</comment>
+ <comment xml:lang="ga">cáipéis Haansoft Hangul</comment>
+ <comment xml:lang="gl">documento de Haansoft Hangul</comment>
+ <comment xml:lang="he">מסמך Haansoft Hangul</comment>
+@@ -38137,7 +39568,7 @@
+ <comment xml:lang="oc">document Haansoft Hangul</comment>
+ <comment xml:lang="pl">Dokument Haansoft Hangul</comment>
+ <comment xml:lang="pt">documento Haansoft Hangul</comment>
+- <comment xml:lang="pt_BR">Documento do Haansoft Hangul</comment>
++ <comment xml:lang="pt-BR">Documento do Haansoft Hangul</comment>
+ <comment xml:lang="ro">Document Haansoft Hangul</comment>
+ <comment xml:lang="ru">Документ Haansoft Hangul</comment>
+ <comment xml:lang="sk">Dokument Haansoft Hangul</comment>
+@@ -38148,32 +39579,34 @@
+ <comment xml:lang="tr">Haansoft Hangul belgesi</comment>
+ <comment xml:lang="uk">документ Haansoft Hangul</comment>
+ <comment xml:lang="vi">Tài liệu Hangul Haansoft</comment>
+- <comment xml:lang="zh_CN">Haansoft Hangul 文档</comment>
+- <comment xml:lang="zh_TW">Haansoft 韓文文件</comment>
++ <comment xml:lang="zh-CN">Haansoft Hangul 文档</comment>
++ <comment xml:lang="zh-TW">Haansoft 韓文文件</comment>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="HWP Document File" type="string" offset="0"/>
++ <match type="string" value="HWP Document File" offset="0"/>
+ </magic>
+ <glob pattern="*.hwp"/>
+ <alias type="application/vnd.haansoft-hwp"/>
+ </mime-type>
+ <mime-type type="application/x-hwt">
+ <comment>Haansoft Hangul document template</comment>
++ <comment xml:lang="af">Haansoft Hangul-dokumentsjabloon</comment>
+ <comment xml:lang="ar">قالب مستند Haansoft Hangul</comment>
+ <comment xml:lang="ast">Plantía de documentu de Haansoft Hangul</comment>
+- <comment xml:lang="be@latin">Šablon dakumentu Haansoft Hangul</comment>
++ <comment xml:lang="be-Latn">Šablon dakumentu Haansoft Hangul</comment>
+ <comment xml:lang="bg">Шаблон за документи — Haansoft Hangul</comment>
+ <comment xml:lang="ca">plantilla de document d'Haansoft Hangul</comment>
+ <comment xml:lang="cs">šablona dokumentu Haansoft Hangul</comment>
+ <comment xml:lang="da">Haansoft Hangul-dokumentskabelon</comment>
+ <comment xml:lang="de">Haansoft-Hangul-Dokumentvorlage</comment>
+ <comment xml:lang="el">Πρότυπο εγγράφου Haansoft Hangul</comment>
+- <comment xml:lang="en_GB">Haansoft Hangul document template</comment>
++ <comment xml:lang="en-GB">Haansoft Hangul document template</comment>
+ <comment xml:lang="es">plantilla de documento de Haansoft Hangul</comment>
+ <comment xml:lang="eu">Haansoft Hangul dokumentuaren txantiloia</comment>
+ <comment xml:lang="fi">Haansoft Hangul -asiakirjamalli</comment>
+ <comment xml:lang="fo">Haansoft Hangul skjalaformur</comment>
+ <comment xml:lang="fr">modèle de document Haansoft Hangul</comment>
++ <comment xml:lang="fur">model document Haansoft Hangul</comment>
+ <comment xml:lang="ga">teimpléad cháipéis Haansoft Hangul</comment>
+ <comment xml:lang="gl">modelo de documento de Haansoft Hangul</comment>
+ <comment xml:lang="he">תבנית מסמך של Haansoft Hangul</comment>
+@@ -38193,7 +39626,7 @@
+ <comment xml:lang="oc">modèl de document Haansoft Hangul</comment>
+ <comment xml:lang="pl">Szablon dokumentu Haansoft Hangul</comment>
+ <comment xml:lang="pt">modelo de documento Haansoft Hangul</comment>
+- <comment xml:lang="pt_BR">Modelo de documento do Haansoft Hangul</comment>
++ <comment xml:lang="pt-BR">Modelo de documento do Haansoft Hangul</comment>
+ <comment xml:lang="ro">Document șablon Haansoft Hangul</comment>
+ <comment xml:lang="ru">Шаблон документа Haansoft Hangul</comment>
+ <comment xml:lang="sk">Šablóna dokumentu Haansoft Hangul</comment>
+@@ -38204,29 +39637,31 @@
+ <comment xml:lang="tr">Haansoft Hangul belge şablonu</comment>
+ <comment xml:lang="uk">шаблон документа Haansoft Hangul</comment>
+ <comment xml:lang="vi">Mẫu tài liệu Hangul Haansoft</comment>
+- <comment xml:lang="zh_CN">Haansoft Hangul 文档模板</comment>
+- <comment xml:lang="zh_TW">Haansoft 韓文文件範本</comment>
++ <comment xml:lang="zh-CN">Haansoft Hangul 文档模板</comment>
++ <comment xml:lang="zh-TW">Haansoft 韓文文件範本</comment>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.hwt"/>
+ <alias type="application/vnd.haansoft-hwt"/>
+ </mime-type>
+ <mime-type type="video/x-mng">
+ <comment>MNG animation</comment>
++ <comment xml:lang="af">MNG-animasie</comment>
+ <comment xml:lang="ar">تحريكة MNG</comment>
+- <comment xml:lang="be@latin">Animacyja MNG</comment>
++ <comment xml:lang="be-Latn">Animacyja MNG</comment>
+ <comment xml:lang="bg">Анимация — MNG</comment>
+ <comment xml:lang="ca">animació MNG</comment>
+ <comment xml:lang="cs">animace MNG</comment>
+ <comment xml:lang="da">MNG-animation</comment>
+ <comment xml:lang="de">MNG-Animation</comment>
+ <comment xml:lang="el">Κινούμενο σχέδιο MNG</comment>
+- <comment xml:lang="en_GB">MNG animation</comment>
++ <comment xml:lang="en-GB">MNG animation</comment>
+ <comment xml:lang="eo">MNG-animacio</comment>
+ <comment xml:lang="es">animación MNG</comment>
+ <comment xml:lang="eu">MNG animazioa</comment>
+ <comment xml:lang="fi">MNG-animaatio</comment>
+ <comment xml:lang="fo">MNG teknimyndagerð</comment>
+ <comment xml:lang="fr">animation MNG</comment>
++ <comment xml:lang="fur">animazion MNG</comment>
+ <comment xml:lang="ga">beochan MNG</comment>
+ <comment xml:lang="gl">animación MNG</comment>
+ <comment xml:lang="he">הנפשת MNG</comment>
+@@ -38247,7 +39682,7 @@
+ <comment xml:lang="oc">animacion MNG</comment>
+ <comment xml:lang="pl">Animacja MNG</comment>
+ <comment xml:lang="pt">animação MNG</comment>
+- <comment xml:lang="pt_BR">Animação MNG</comment>
++ <comment xml:lang="pt-BR">Animação MNG</comment>
+ <comment xml:lang="ro">Animație MNG</comment>
+ <comment xml:lang="ru">Анимация MNG</comment>
+ <comment xml:lang="sk">Animácia MNG</comment>
+@@ -38258,33 +39693,35 @@
+ <comment xml:lang="tr">MNG canlandırması</comment>
+ <comment xml:lang="uk">анімація MNG</comment>
+ <comment xml:lang="vi">Hoạt ảnh MNG</comment>
+- <comment xml:lang="zh_CN">MNG 动画</comment>
+- <comment xml:lang="zh_TW">MNG 動畫</comment>
++ <comment xml:lang="zh-CN">MNG 动画</comment>
++ <comment xml:lang="zh-TW">MNG 動畫</comment>
+ <acronym>MNG</acronym>
+ <expanded-acronym>Multiple-Image Network Graphics</expanded-acronym>
+ <magic priority="50">
+- <match value="\x8AMNG\x0D\x0A\x1A\x0A" type="string" offset="0"/>
++ <match type="string" value="\x8AMNG\x0D\x0A\x1A\x0A" offset="0"/>
+ </magic>
+ <glob pattern="*.mng"/>
+ </mime-type>
+ <mime-type type="application/vnd.ms-asf">
+ <comment>ASF video</comment>
++ <comment xml:lang="af">ASF-video</comment>
+ <comment xml:lang="ar">ASF مرئي</comment>
+ <comment xml:lang="ast">Videu n'ASF</comment>
+- <comment xml:lang="be@latin">Videa ASF</comment>
++ <comment xml:lang="be-Latn">Videa ASF</comment>
+ <comment xml:lang="bg">Видео — ASF</comment>
+ <comment xml:lang="ca">vídeo ASF</comment>
+ <comment xml:lang="cs">video ASF</comment>
+ <comment xml:lang="da">ASF-video</comment>
+ <comment xml:lang="de">ASF-Video</comment>
+ <comment xml:lang="el">Βίντεο ASF</comment>
+- <comment xml:lang="en_GB">ASF video</comment>
++ <comment xml:lang="en-GB">ASF video</comment>
+ <comment xml:lang="eo">ASF-video</comment>
+ <comment xml:lang="es">vídeo ASF</comment>
+ <comment xml:lang="eu">ASF bideoa</comment>
+ <comment xml:lang="fi">ASF-video</comment>
+ <comment xml:lang="fo">ASF video</comment>
+ <comment xml:lang="fr">vidéo ASF</comment>
++ <comment xml:lang="fur">video ASF</comment>
+ <comment xml:lang="ga">físeán ASF</comment>
+ <comment xml:lang="gl">vídeo ASF</comment>
+ <comment xml:lang="he">וידאו ASF</comment>
+@@ -38305,7 +39742,7 @@
+ <comment xml:lang="oc">vidèo ASF</comment>
+ <comment xml:lang="pl">Plik wideo ASF</comment>
+ <comment xml:lang="pt">vídeo ASF</comment>
+- <comment xml:lang="pt_BR">Vídeo ASF</comment>
++ <comment xml:lang="pt-BR">Vídeo ASF</comment>
+ <comment xml:lang="ro">Video ASF</comment>
+ <comment xml:lang="ru">Видео ASF</comment>
+ <comment xml:lang="sk">Video ASF</comment>
+@@ -38316,8 +39753,8 @@
+ <comment xml:lang="tr">ASF videosu</comment>
+ <comment xml:lang="uk">відеокліп ASF</comment>
+ <comment xml:lang="vi">Ảnh động ASF</comment>
+- <comment xml:lang="zh_CN">ASF 视频</comment>
+- <comment xml:lang="zh_TW">ASF 視訊</comment>
++ <comment xml:lang="zh-CN">ASF 视频</comment>
++ <comment xml:lang="zh-TW">ASF 視訊</comment>
+ <acronym>ASF</acronym>
+ <expanded-acronym>Advanced Streaming Format</expanded-acronym>
+ <alias type="video/x-ms-wm"/>
+@@ -38325,26 +39762,28 @@
+ <alias type="video/x-ms-asf-plugin"/>
+ <glob pattern="*.asf"/>
+ <magic priority="50">
+- <match value="0x3026b275" type="big32" offset="0"/>
+- <match value="[Reference]" type="string" offset="0"/>
++ <match type="big32" value="0x3026b275" offset="0"/>
++ <match type="string" value="[Reference]" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="application/x-netshow-channel">
+ <comment>Windows Media Station file</comment>
++ <comment xml:lang="af">Windows Media Station-lêer</comment>
+ <comment xml:lang="ar">ملف محطة Windows Media</comment>
+- <comment xml:lang="be@latin">Fajł Windows Media Station</comment>
++ <comment xml:lang="be-Latn">Fajł Windows Media Station</comment>
+ <comment xml:lang="bg">Файл — Windows Media Station</comment>
+ <comment xml:lang="ca">fitxer de Windows Media Station</comment>
+ <comment xml:lang="cs">soubor Windows Media Station</comment>
+ <comment xml:lang="da">Windows Media Station-fil</comment>
+ <comment xml:lang="de">Windows-Media-Streamingbeschreibung</comment>
+ <comment xml:lang="el">Αρχείο Windows Media Station</comment>
+- <comment xml:lang="en_GB">Windows Media Station file</comment>
++ <comment xml:lang="en-GB">Windows Media Station file</comment>
+ <comment xml:lang="es">archivo de emisora de Windows Media</comment>
+ <comment xml:lang="eu">Windows Media Station fitxategia</comment>
+ <comment xml:lang="fi">Windows Media Station-tiedosto</comment>
+ <comment xml:lang="fo">Windows Media Station fíla</comment>
+ <comment xml:lang="fr">fichier Windows Media Station</comment>
++ <comment xml:lang="fur">file Windows Media Station</comment>
+ <comment xml:lang="ga">comhad Windows Media Station</comment>
+ <comment xml:lang="gl">ficheiro de emisora de Windows Media</comment>
+ <comment xml:lang="he">קובץ תחנה של Windows Media</comment>
+@@ -38364,7 +39803,7 @@
+ <comment xml:lang="oc">fichièr Windows Media Station</comment>
+ <comment xml:lang="pl">Plik Windows Media Station</comment>
+ <comment xml:lang="pt">ficheiro Windows Media Station</comment>
+- <comment xml:lang="pt_BR">Arquivo de estação do Windows Media</comment>
++ <comment xml:lang="pt-BR">Arquivo de estação do Windows Media</comment>
+ <comment xml:lang="ro">Fișier Windows Media Station</comment>
+ <comment xml:lang="ru">Файл Windows Media Station</comment>
+ <comment xml:lang="sk">Súbor Windows Media Station</comment>
+@@ -38375,32 +39814,34 @@
+ <comment xml:lang="tr">Windows Media Station dosyası</comment>
+ <comment xml:lang="uk">файл Windows Media Station</comment>
+ <comment xml:lang="vi">Tập tin Windows Media Station</comment>
+- <comment xml:lang="zh_CN">Windows 媒体工作站文件</comment>
+- <comment xml:lang="zh_TW">Windows Media Station 檔</comment>
++ <comment xml:lang="zh-CN">Windows 媒体工作站文件</comment>
++ <comment xml:lang="zh-TW">Windows Media Station 檔</comment>
+ <sub-class-of type="application/vnd.ms-asf"/>
+ <generic-icon name="video-x-generic"/>
+ <glob pattern="*.nsc"/>
+ <magic priority="50">
+- <match value="[Address]" type="string" offset="0"/>
++ <match type="string" value="[Address]" offset="0"/>
+ </magic>
+ </mime-type>
+ <mime-type type="video/x-ms-wmv">
+ <comment>Windows Media video</comment>
++ <comment xml:lang="af">Windows Media-video</comment>
+ <comment xml:lang="ar">Windows Media مرئي</comment>
+ <comment xml:lang="ast">Videu de Windows Media</comment>
+- <comment xml:lang="be@latin">Videa Windows Media</comment>
++ <comment xml:lang="be-Latn">Videa Windows Media</comment>
+ <comment xml:lang="bg">Видео — Windows Media</comment>
+ <comment xml:lang="ca">vídeo de Windows Media</comment>
+ <comment xml:lang="cs">video Windows Media</comment>
+ <comment xml:lang="da">Windows Medie-video</comment>
+ <comment xml:lang="de">Windows-Media-Video</comment>
+ <comment xml:lang="el">Βίντεο Windows Media</comment>
+- <comment xml:lang="en_GB">Windows Media video</comment>
++ <comment xml:lang="en-GB">Windows Media video</comment>
+ <comment xml:lang="es">vídeo de Windows Media</comment>
+ <comment xml:lang="eu">Windows Media bideoa</comment>
+ <comment xml:lang="fi">Windows Media -video</comment>
+ <comment xml:lang="fo">Windows Media video</comment>
+ <comment xml:lang="fr">vidéo Windows Media</comment>
++ <comment xml:lang="fur">video Windows Media</comment>
+ <comment xml:lang="ga">físeán Windows Media</comment>
+ <comment xml:lang="gl">vídeo de Windows Media</comment>
+ <comment xml:lang="he">וידאו של Windows Media</comment>
+@@ -38420,7 +39861,7 @@
+ <comment xml:lang="oc">vidèo Windows Media</comment>
+ <comment xml:lang="pl">Plik wideo Windows Media</comment>
+ <comment xml:lang="pt">vídeo Windows Media</comment>
+- <comment xml:lang="pt_BR">Vídeo do Windows Media</comment>
++ <comment xml:lang="pt-BR">Vídeo do Windows Media</comment>
+ <comment xml:lang="ro">Video Windows Media</comment>
+ <comment xml:lang="ru">Видео Windows Media</comment>
+ <comment xml:lang="sk">Video Windows Media</comment>
+@@ -38431,17 +39872,18 @@
+ <comment xml:lang="tr">Windows Media videosu</comment>
+ <comment xml:lang="uk">відеокліп Windows Media</comment>
+ <comment xml:lang="vi">Ảnh động Windows Media</comment>
+- <comment xml:lang="zh_CN">Windows Media 视频</comment>
+- <comment xml:lang="zh_TW">Windows Media 視訊</comment>
++ <comment xml:lang="zh-CN">Windows Media 视频</comment>
++ <comment xml:lang="zh-TW">Windows Media 視訊</comment>
+ <sub-class-of type="application/vnd.ms-asf"/>
+ <glob pattern="*.wmv"/>
+ </mime-type>
+ <mime-type type="video/x-msvideo">
+ <comment>AVI video</comment>
++ <comment xml:lang="af">AVI-video</comment>
+ <comment xml:lang="ar">AVI مرئي</comment>
+ <comment xml:lang="ast">Videu n'AVI</comment>
+ <comment xml:lang="az">AVI video faylı</comment>
+- <comment xml:lang="be@latin">Videa AVI</comment>
++ <comment xml:lang="be-Latn">Videa AVI</comment>
+ <comment xml:lang="bg">Видео — AVI</comment>
+ <comment xml:lang="ca">vídeo AVI</comment>
+ <comment xml:lang="cs">video AVI</comment>
+@@ -38449,13 +39891,14 @@
+ <comment xml:lang="da">AVI-video</comment>
+ <comment xml:lang="de">AVI-Video</comment>
+ <comment xml:lang="el">Βίντεο AVI</comment>
+- <comment xml:lang="en_GB">AVI video</comment>
++ <comment xml:lang="en-GB">AVI video</comment>
+ <comment xml:lang="eo">AVI-video</comment>
+ <comment xml:lang="es">vídeo AVI</comment>
+ <comment xml:lang="eu">AVI bideoa</comment>
+ <comment xml:lang="fi">AVI-video</comment>
+ <comment xml:lang="fo">AVI video</comment>
+ <comment xml:lang="fr">vidéo AVI</comment>
++ <comment xml:lang="fur">video AVI</comment>
+ <comment xml:lang="ga">físeán AVI</comment>
+ <comment xml:lang="gl">vídeo AVI</comment>
+ <comment xml:lang="he">וידאו AVI</comment>
+@@ -38477,7 +39920,7 @@
+ <comment xml:lang="oc">vidèo AVI</comment>
+ <comment xml:lang="pl">Plik wideo AVI</comment>
+ <comment xml:lang="pt">vídeo AVI</comment>
+- <comment xml:lang="pt_BR">Vídeo AVI</comment>
++ <comment xml:lang="pt-BR">Vídeo AVI</comment>
+ <comment xml:lang="ro">Video AVI</comment>
+ <comment xml:lang="ru">Видео AVI</comment>
+ <comment xml:lang="sk">Video AVI</comment>
+@@ -38488,8 +39931,8 @@
+ <comment xml:lang="tr">AVI videosu</comment>
+ <comment xml:lang="uk">відеокліп AVI</comment>
+ <comment xml:lang="vi">Ảnh động AVI</comment>
+- <comment xml:lang="zh_CN">AVI 视频</comment>
+- <comment xml:lang="zh_TW">AVI 視訊</comment>
++ <comment xml:lang="zh-CN">AVI 视频</comment>
++ <comment xml:lang="zh-TW">AVI 視訊</comment>
+ <acronym>AVI</acronym>
+ <expanded-acronym>Audio Video Interleave</expanded-acronym>
+ <alias type="video/x-avi"/>
+@@ -38498,11 +39941,11 @@
+ <alias type="video/msvideo"/>
+ <alias type="video/vnd.divx"/>
+ <magic priority="50">
+- <match value="RIFF" type="string" offset="0">
+- <match value="AVI " type="string" offset="8"/>
++ <match type="string" value="RIFF" offset="0">
++ <match type="string" value="AVI " offset="8"/>
+ </match>
+- <match value="AVF0" type="string" offset="0">
+- <match value="AVI " type="string" offset="8"/>
++ <match type="string" value="AVF0" offset="0">
++ <match type="string" value="AVI " offset="8"/>
+ </match>
+ </magic>
+ <glob pattern="*.avi"/>
+@@ -38511,22 +39954,24 @@
+ </mime-type>
+ <mime-type type="video/x-nsv">
+ <comment>NullSoft video</comment>
++ <comment xml:lang="af">NullSoft-video</comment>
+ <comment xml:lang="ar">NullSoft مرئي</comment>
+ <comment xml:lang="ast">Videu de NullSoft</comment>
+- <comment xml:lang="be@latin">Videa NullSoft</comment>
++ <comment xml:lang="be-Latn">Videa NullSoft</comment>
+ <comment xml:lang="bg">Видео — NullSoft</comment>
+ <comment xml:lang="ca">vídeo NullSoft</comment>
+ <comment xml:lang="cs">video NullSoft</comment>
+ <comment xml:lang="da">NullSoft-video</comment>
+ <comment xml:lang="de">NullSoft-Video</comment>
+ <comment xml:lang="el">Βίντεο Nullsoft</comment>
+- <comment xml:lang="en_GB">NullSoft video</comment>
++ <comment xml:lang="en-GB">NullSoft video</comment>
+ <comment xml:lang="eo">NullSoft-video</comment>
+ <comment xml:lang="es">vídeo NullSoft</comment>
+ <comment xml:lang="eu">NullSoft bideoa</comment>
+ <comment xml:lang="fi">NullSoft-video</comment>
+ <comment xml:lang="fo">NullSoft video</comment>
+ <comment xml:lang="fr">vidéo NullSoft</comment>
++ <comment xml:lang="fur">video NullSoft</comment>
+ <comment xml:lang="ga">físeán NullSoft</comment>
+ <comment xml:lang="gl">vídeo de NullSoft</comment>
+ <comment xml:lang="he">וידאו של NullSot</comment>
+@@ -38546,7 +39991,7 @@
+ <comment xml:lang="oc">vidèo NullSoft</comment>
+ <comment xml:lang="pl">Plik wideo NullSoft</comment>
+ <comment xml:lang="pt">vídeo NullSoft</comment>
+- <comment xml:lang="pt_BR">Vídeo do NullSoft</comment>
++ <comment xml:lang="pt-BR">Vídeo do NullSoft</comment>
+ <comment xml:lang="ro">Video NullSoft</comment>
+ <comment xml:lang="ru">Видео Nullsoft</comment>
+ <comment xml:lang="sk">Video NullSoft</comment>
+@@ -38557,29 +40002,30 @@
+ <comment xml:lang="tr">Nullsoft videosu</comment>
+ <comment xml:lang="uk">відеокліп NullSoft</comment>
+ <comment xml:lang="vi">Ảnh động NullSoft</comment>
+- <comment xml:lang="zh_CN">NullSoft 视频</comment>
+- <comment xml:lang="zh_TW">NullSoft 視訊</comment>
++ <comment xml:lang="zh-CN">NullSoft 视频</comment>
++ <comment xml:lang="zh-TW">NullSoft 視訊</comment>
+ <magic priority="50">
+- <match value="NSVf" type="string" offset="0"/>
++ <match type="string" value="NSVf" offset="0"/>
+ </magic>
+ <glob pattern="*.nsv"/>
+ </mime-type>
+ <mime-type type="application/sdp">
+ <comment>SDP multicast stream file</comment>
+ <comment xml:lang="ar">ملف دفق متعدد البث SDP</comment>
+- <comment xml:lang="be@latin">Šmatadrasny płynievy fajł SDP</comment>
+- <comment xml:lang="bg">Файл за поток — SDP multicast</comment>
++ <comment xml:lang="be-Latn">Šmatadrasny płynievy fajł SDP</comment>
++ <comment xml:lang="bg">Поток — SDP multicast</comment>
+ <comment xml:lang="ca">fitxer de flux de multidifusió SDP</comment>
+ <comment xml:lang="cs">soubor vícesměrového vysílání proudu SDP</comment>
+ <comment xml:lang="da">SDP multicast-strømfil</comment>
+ <comment xml:lang="de">SDP-Multicast-Datenstromdatei</comment>
+ <comment xml:lang="el">Αρχείο ροής πολλαπλής αναμετάδοσης SDP</comment>
+- <comment xml:lang="en_GB">SDP multicast stream file</comment>
++ <comment xml:lang="en-GB">SDP multicast stream file</comment>
+ <comment xml:lang="es">archivo de flujo multicast SDP</comment>
+ <comment xml:lang="eu">SDP multicast korrontearen fitxategia</comment>
+ <comment xml:lang="fi">SDP-monilähetysvirran tiedosto</comment>
+ <comment xml:lang="fo">SDP margvarpað streymafíla</comment>
+ <comment xml:lang="fr">fichier de flux multidiffusion SDP</comment>
++ <comment xml:lang="fur">file di flus a trasmission multiple SDP</comment>
+ <comment xml:lang="ga">comhad shruth ilchraolacháin SDP</comment>
+ <comment xml:lang="gl">ficheiro de fluxo multicast SDP</comment>
+ <comment xml:lang="he">קובץ שידור בזרימה SDP</comment>
+@@ -38599,7 +40045,7 @@
+ <comment xml:lang="oc">fichièr de flux multidifusion SDP</comment>
+ <comment xml:lang="pl">Plik strumienia multicast SDP</comment>
+ <comment xml:lang="pt">ficheiro de fluxo SDP multicast</comment>
+- <comment xml:lang="pt_BR">Arquivo de canal multicast SDP</comment>
++ <comment xml:lang="pt-BR">Arquivo de canal multicast SDP</comment>
+ <comment xml:lang="ro">Fișier flux multicast SDP</comment>
+ <comment xml:lang="ru">Файл мультикаст-потока SDP</comment>
+ <comment xml:lang="sk">Súbor viacsmerového vysielania prúdu SDP</comment>
+@@ -38610,8 +40056,8 @@
+ <comment xml:lang="tr">SDP çoklu yayın akışı dosyası</comment>
+ <comment xml:lang="uk">файл потокової трансляції SDP</comment>
+ <comment xml:lang="vi">Tập tin luồng truyền một-nhiều SDP</comment>
+- <comment xml:lang="zh_CN">SDP 多播流文件</comment>
+- <comment xml:lang="zh_TW">SDP multicast 串流檔</comment>
++ <comment xml:lang="zh-CN">SDP 多播流文件</comment>
++ <comment xml:lang="zh-TW">SDP multicast 串流檔</comment>
+ <acronym>SDP</acronym>
+ <expanded-acronym>Session Description Protocol</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+@@ -38619,18 +40065,19 @@
+ <alias type="application/vnd.sdp"/>
+ <generic-icon name="video-x-generic"/>
+ <magic priority="50">
+- <match value="v=" type="string" offset="0">
+- <match value="s=" type="string" offset="0:256"/>
++ <match type="string" value="v=" offset="0">
++ <match type="string" value="s=" offset="0:256"/>
+ </match>
+ </magic>
+ <glob pattern="*.sdp"/>
+ </mime-type>
+ <mime-type type="video/x-sgi-movie">
+ <comment>SGI video</comment>
++ <comment xml:lang="af">SGI-video</comment>
+ <comment xml:lang="ar">SGI مرئي</comment>
+ <comment xml:lang="ast">Videu en SGI</comment>
+ <comment xml:lang="az">SGI video faylı</comment>
+- <comment xml:lang="be@latin">Videa SGI</comment>
++ <comment xml:lang="be-Latn">Videa SGI</comment>
+ <comment xml:lang="bg">Видео — SGI</comment>
+ <comment xml:lang="ca">vídeo SGI</comment>
+ <comment xml:lang="cs">video SGI</comment>
+@@ -38638,13 +40085,14 @@
+ <comment xml:lang="da">SGI-video</comment>
+ <comment xml:lang="de">SGI-Video</comment>
+ <comment xml:lang="el">Βίντεο SGI</comment>
+- <comment xml:lang="en_GB">SGI video</comment>
++ <comment xml:lang="en-GB">SGI video</comment>
+ <comment xml:lang="eo">SGI-video</comment>
+ <comment xml:lang="es">vídeo SGI</comment>
+ <comment xml:lang="eu">SGI bideoa</comment>
+ <comment xml:lang="fi">SGI-video</comment>
+ <comment xml:lang="fo">SGI video</comment>
+ <comment xml:lang="fr">vidéo SGI</comment>
++ <comment xml:lang="fur">video SGI</comment>
+ <comment xml:lang="ga">físeán SGI</comment>
+ <comment xml:lang="gl">vídeo SGI</comment>
+ <comment xml:lang="he">וידאו SGI</comment>
+@@ -38665,7 +40113,7 @@
+ <comment xml:lang="oc">vidèo SGI</comment>
+ <comment xml:lang="pl">Plik wideo SGI</comment>
+ <comment xml:lang="pt">vídeo SGI</comment>
+- <comment xml:lang="pt_BR">Vídeo SGI</comment>
++ <comment xml:lang="pt-BR">Vídeo SGI</comment>
+ <comment xml:lang="ro">Video SGI</comment>
+ <comment xml:lang="ru">Видео SGI</comment>
+ <comment xml:lang="sk">Video SGI</comment>
+@@ -38676,29 +40124,31 @@
+ <comment xml:lang="tr">SGI videosu</comment>
+ <comment xml:lang="uk">відеокліп SGI</comment>
+ <comment xml:lang="vi">Ảnh động SGI</comment>
+- <comment xml:lang="zh_CN">SGI 视频</comment>
+- <comment xml:lang="zh_TW">SGI 視訊</comment>
++ <comment xml:lang="zh-CN">SGI 视频</comment>
++ <comment xml:lang="zh-TW">SGI 視訊</comment>
+ <magic priority="50">
+- <match value="MOVI" type="string" offset="0"/>
++ <match type="string" value="MOVI" offset="0"/>
+ </magic>
+ <glob pattern="*.movie"/>
+ </mime-type>
+ <mime-type type="application/vnd.emusic-emusic_package">
+ <comment>eMusic download package</comment>
++ <comment xml:lang="af">eMusic-aflaaipakket</comment>
+ <comment xml:lang="ar">حزمة تنزيل eMusic</comment>
+- <comment xml:lang="be@latin">pakunak zahruzki eMusic</comment>
++ <comment xml:lang="be-Latn">pakunak zahruzki eMusic</comment>
+ <comment xml:lang="bg">Пакет за сваляне — eMusic</comment>
+- <comment xml:lang="ca">paquet de descàrrega eMusic</comment>
++ <comment xml:lang="ca">paquet de baixades d'eMusic</comment>
+ <comment xml:lang="cs">balíček stahování eMusic</comment>
+- <comment xml:lang="da">eMusic-hentpakke</comment>
++ <comment xml:lang="da">eMusic-downloadpakke</comment>
+ <comment xml:lang="de">eMusic-Download-Paket</comment>
+ <comment xml:lang="el">Πακέτο λήψης eMusic</comment>
+- <comment xml:lang="en_GB">eMusic download package</comment>
++ <comment xml:lang="en-GB">eMusic download package</comment>
+ <comment xml:lang="es">paquete de descarga eMusic</comment>
+ <comment xml:lang="eu">eMusic deskargaren paketea</comment>
+ <comment xml:lang="fi">eMusic-imurointipaketti</comment>
+ <comment xml:lang="fo">eMusic niðurtøkupakki</comment>
+ <comment xml:lang="fr">paquet de téléchargement eMusic</comment>
++ <comment xml:lang="fur">pachet di discjariament eMusic</comment>
+ <comment xml:lang="ga">pacáiste íosluchtú eMusic</comment>
+ <comment xml:lang="gl">paquete de descarga de eMusic</comment>
+ <comment xml:lang="he">חבילת הורדה של eMusic</comment>
+@@ -38718,7 +40168,7 @@
+ <comment xml:lang="oc">paquet de telecargament eMusic</comment>
+ <comment xml:lang="pl">Pobrany pakiet eMusic</comment>
+ <comment xml:lang="pt">pacote transferido eMusic</comment>
+- <comment xml:lang="pt_BR">Pacote de download do eMusic</comment>
++ <comment xml:lang="pt-BR">Pacote de download do eMusic</comment>
+ <comment xml:lang="ro">pachet descărcare eMusic</comment>
+ <comment xml:lang="ru">Пакет загрузок eMusic</comment>
+ <comment xml:lang="sk">Balíček sťahovania eMusic</comment>
+@@ -38729,16 +40179,17 @@
+ <comment xml:lang="tr">eMusic indirme paketi</comment>
+ <comment xml:lang="uk">пакунок завантаження eMusic</comment>
+ <comment xml:lang="vi">gói nhạc tải xuống eMusic</comment>
+- <comment xml:lang="zh_CN">eMusic 下载包</comment>
+- <comment xml:lang="zh_TW">eMusic 下載包</comment>
++ <comment xml:lang="zh-CN">eMusic 下载包</comment>
++ <comment xml:lang="zh-TW">eMusic 下載包</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="50">
+- <match value="nF7YLao" type="string" offset="0"/>
++ <match type="string" value="nF7YLao" offset="0"/>
+ </magic>
+ <glob pattern="*.emp"/>
+ </mime-type>
+ <mime-type type="application/vnd.google-earth.kml+xml">
+ <comment>KML geographic data</comment>
++ <comment xml:lang="af">KML geografiese data</comment>
+ <comment xml:lang="ar">بيانات جغرافية KML</comment>
+ <comment xml:lang="bg">Географски данни — KML</comment>
+ <comment xml:lang="ca">dades geogràfiques KML</comment>
+@@ -38746,12 +40197,13 @@
+ <comment xml:lang="da">Geografiske data i KML-format</comment>
+ <comment xml:lang="de">KML geographische Daten</comment>
+ <comment xml:lang="el">Γεωγραφικά δεδομένα KML</comment>
+- <comment xml:lang="en_GB">KML geographic data</comment>
++ <comment xml:lang="en-GB">KML geographic data</comment>
+ <comment xml:lang="es">datos geográficos KML</comment>
+ <comment xml:lang="eu">KML datu geografikoak</comment>
+ <comment xml:lang="fi">KML-paikkatieto</comment>
+ <comment xml:lang="fo">KML landafrøðilig dáta</comment>
+ <comment xml:lang="fr">données géographiques KML</comment>
++ <comment xml:lang="fur">dâts gjeografics KML</comment>
+ <comment xml:lang="ga">sonraí geografacha KML</comment>
+ <comment xml:lang="gl">datos xeográficos KML</comment>
+ <comment xml:lang="he">מידע גאוגרפי KML</comment>
+@@ -38769,7 +40221,7 @@
+ <comment xml:lang="oc">donadas geograficas KML</comment>
+ <comment xml:lang="pl">Dane geograficzne KML</comment>
+ <comment xml:lang="pt">dados geográficos KML</comment>
+- <comment xml:lang="pt_BR">Dados geográficos KML</comment>
++ <comment xml:lang="pt-BR">Dados geográficos KML</comment>
+ <comment xml:lang="ro">Date geografice KML</comment>
+ <comment xml:lang="ru">Географические данные KML</comment>
+ <comment xml:lang="sk">Zemepisné údaje KML</comment>
+@@ -38778,8 +40230,8 @@
+ <comment xml:lang="sv">KML geografisk data</comment>
+ <comment xml:lang="tr">KML coğrafi verisi</comment>
+ <comment xml:lang="uk">географічні дані KML</comment>
+- <comment xml:lang="zh_CN">KML 地理数据</comment>
+- <comment xml:lang="zh_TW">KML 地理資料</comment>
++ <comment xml:lang="zh-CN">KML 地理数据</comment>
++ <comment xml:lang="zh-TW">KML 地理資料</comment>
+ <acronym>KML</acronym>
+ <expanded-acronym>Keyhole Markup Language</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+@@ -38788,6 +40240,7 @@
+ </mime-type>
+ <mime-type type="application/vnd.google-earth.kmz">
+ <comment>KML geographic compressed data</comment>
++ <comment xml:lang="af">KML saamgepersde geografiese data</comment>
+ <comment xml:lang="ar">بيانات جغرافية مضغوطة KML</comment>
+ <comment xml:lang="bg">Географски данни — KML, компресирани</comment>
+ <comment xml:lang="ca">dades geogràfiques KML amb compressió</comment>
+@@ -38795,12 +40248,13 @@
+ <comment xml:lang="da">KML-geografiske komprimerede data</comment>
+ <comment xml:lang="de">KML geographische komprimierte Daten</comment>
+ <comment xml:lang="el">Γεωγραφικά συμπιεσμένα δεδομένα KML</comment>
+- <comment xml:lang="en_GB">KML geographic compressed data</comment>
++ <comment xml:lang="en-GB">KML geographic compressed data</comment>
+ <comment xml:lang="es">datos geográficos comprimidos KML</comment>
+ <comment xml:lang="eu">KML datu geografiko konprimituak</comment>
+ <comment xml:lang="fi">Pakattu KML-paikkatieto</comment>
+ <comment xml:lang="fo">KML landafrøðilig stappað dáta</comment>
+ <comment xml:lang="fr">données géographiques KML compressées</comment>
++ <comment xml:lang="fur">dâts gjeografics KML comprimûts</comment>
+ <comment xml:lang="ga">sonraí comhbhrúite geografacha KML</comment>
+ <comment xml:lang="gl">datos xeográficos KML comprimidos </comment>
+ <comment xml:lang="he">מידע גאוגרפי דחוס KML</comment>
+@@ -38818,7 +40272,7 @@
+ <comment xml:lang="oc">donadas geograficas KML compressats</comment>
+ <comment xml:lang="pl">Skompresowane dane geograficzne KML</comment>
+ <comment xml:lang="pt">dados geográficos comprimidos KML</comment>
+- <comment xml:lang="pt_BR">Dados geográficos KML compactados</comment>
++ <comment xml:lang="pt-BR">Dados geográficos KML compactados</comment>
+ <comment xml:lang="ro">Date geografice comprimate KML</comment>
+ <comment xml:lang="ru">Сжатые географические данные KML</comment>
+ <comment xml:lang="sk">Komprimované zemepisné údaje KML</comment>
+@@ -38827,8 +40281,8 @@
+ <comment xml:lang="sv">KML geografiskt komprimerat data</comment>
+ <comment xml:lang="tr">KML sıkıştırılmış coğrafi verisi</comment>
+ <comment xml:lang="uk">стиснуті географічні дані KML</comment>
+- <comment xml:lang="zh_CN">KML 地理压缩数据</comment>
+- <comment xml:lang="zh_TW">KML 地理壓縮資料</comment>
++ <comment xml:lang="zh-CN">KML 地理压缩数据</comment>
++ <comment xml:lang="zh-TW">KML 地理壓縮資料</comment>
+ <acronym>KML</acronym>
+ <expanded-acronym>Keyhole Markup Language</expanded-acronym>
+ <sub-class-of type="application/zip"/>
+@@ -38836,13 +40290,18 @@
+ </mime-type>
+ <mime-type type="application/geo+json">
+ <comment>GeoJSON geospatial data</comment>
++ <comment xml:lang="af">GeoJSON georuimtelike data</comment>
++ <comment xml:lang="bg">Географски данни — GeoJSON</comment>
+ <comment xml:lang="ca">dades geomàtiques GeoJSON</comment>
+ <comment xml:lang="cs">geoprostorová data GeoJSON</comment>
+ <comment xml:lang="da">GEoJSON-geospatiale data</comment>
+ <comment xml:lang="de">GeoJSON raumbezogene Daten</comment>
+- <comment xml:lang="en_GB">GeoJSON geospatial data</comment>
++ <comment xml:lang="en-GB">GeoJSON geospatial data</comment>
+ <comment xml:lang="es">datos geoespaciales en GeoJSON</comment>
++ <comment xml:lang="eu">GeoJSON geomatika datua</comment>
++ <comment xml:lang="fi">GeoJSON-paikkatiedot</comment>
+ <comment xml:lang="fr">données géospatiales GeoJSON</comment>
++ <comment xml:lang="fur">dâts gjeo-spaziâls GeoJSON</comment>
+ <comment xml:lang="ga">sonraí geospásúla GeoJSON</comment>
+ <comment xml:lang="hr">GeoJSON geoprostorni podaci</comment>
+ <comment xml:lang="hu">GeoJSON téradatok</comment>
+@@ -38851,15 +40310,15 @@
+ <comment xml:lang="kk">GeoJSON геокеңістіктік деректері</comment>
+ <comment xml:lang="ko">GeoJSON 지리 정보 데이터</comment>
+ <comment xml:lang="pl">Dane geoprzestrzenne GeoJSON</comment>
+- <comment xml:lang="pt_BR">Dados geoespaciais GeoJSON</comment>
++ <comment xml:lang="pt-BR">Dados geoespaciais GeoJSON</comment>
+ <comment xml:lang="ru">Геопространственные данные GeoJSON</comment>
+ <comment xml:lang="sk">Geopriestorové údaje GeoJSON</comment>
+ <comment xml:lang="sr">ГеоЈСОН геопросторни подаци</comment>
+ <comment xml:lang="sv">Geospatialt GeoJSON-data</comment>
+- <comment xml:lang="tr">GeoJSON coğrafi veriler</comment>
++ <comment xml:lang="tr">GeoJSON coğrafi verileri</comment>
+ <comment xml:lang="uk">геопросторові дані GeoJSON</comment>
+- <comment xml:lang="zh_CN">GeoJSON 地理空间数据</comment>
+- <comment xml:lang="zh_TW">GeoJSON 地理空間資料</comment>
++ <comment xml:lang="zh-CN">GeoJSON 地理空间数据</comment>
++ <comment xml:lang="zh-TW">GeoJSON 地理空間資料</comment>
+ <sub-class-of type="application/json"/>
+ <glob pattern="*.geojson"/>
+ <glob pattern="*.geo.json"/>
+@@ -38867,15 +40326,18 @@
+ </mime-type>
+ <mime-type type="application/gpx+xml">
+ <comment>GPX geographic data</comment>
++ <comment xml:lang="af">GPX geografiese data</comment>
++ <comment xml:lang="bg">Географски данни — GPX</comment>
+ <comment xml:lang="ca">dades geogràfiques GPX</comment>
+ <comment xml:lang="cs">geografická data GPX</comment>
+ <comment xml:lang="da">GPX-geografiske data</comment>
+ <comment xml:lang="de">GPX geographische Daten</comment>
+- <comment xml:lang="en_GB">GPX geographic data</comment>
++ <comment xml:lang="en-GB">GPX geographic data</comment>
+ <comment xml:lang="es">datos geográficos en GPX</comment>
+ <comment xml:lang="eu">GPX datu geografikoak</comment>
+ <comment xml:lang="fi">GPX-paikkatieto</comment>
+ <comment xml:lang="fr">données géographiques GPX</comment>
++ <comment xml:lang="fur">dâts gjeografics GPX</comment>
+ <comment xml:lang="ga">sonraí geografacha GPX</comment>
+ <comment xml:lang="he">נתונים גאוגרפיים GPX</comment>
+ <comment xml:lang="hr">GPX geografski podaci</comment>
+@@ -38886,15 +40348,15 @@
+ <comment xml:lang="ko">GPX 지리 공간정보 데이터</comment>
+ <comment xml:lang="oc">Donadas geograficas GPX</comment>
+ <comment xml:lang="pl">Dane geograficzne GPX</comment>
+- <comment xml:lang="pt_BR">Dados geográficos GPX</comment>
++ <comment xml:lang="pt-BR">Dados geográficos GPX</comment>
+ <comment xml:lang="ru">Географические данные GPX</comment>
+ <comment xml:lang="sk">Zemepisné údaje GPX</comment>
+ <comment xml:lang="sr">ГПИкс географски подаци</comment>
+ <comment xml:lang="sv">GPX geografisk data</comment>
+ <comment xml:lang="tr">GPX coğrafi verileri</comment>
+ <comment xml:lang="uk">географічні дані GPX</comment>
+- <comment xml:lang="zh_CN">GPX 地理数据</comment>
+- <comment xml:lang="zh_TW">GPX 地理資料</comment>
++ <comment xml:lang="zh-CN">GPX 地理数据</comment>
++ <comment xml:lang="zh-TW">GPX 地理資料</comment>
+ <acronym>GPX</acronym>
+ <expanded-acronym>GPS Exchange Format</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+@@ -38907,20 +40369,22 @@
+ </mime-type>
+ <mime-type type="application/x-ica">
+ <comment>Citrix ICA settings file</comment>
++ <comment xml:lang="af">Citrix ICA-instellingslêer</comment>
+ <comment xml:lang="ar">ملف إعدادات Citrix ICA</comment>
+- <comment xml:lang="be@latin">Fajł naładaŭ Citrix ICA</comment>
++ <comment xml:lang="be-Latn">Fajł naładaŭ Citrix ICA</comment>
+ <comment xml:lang="bg">Настройки — Citrix ICA</comment>
+ <comment xml:lang="ca">fitxer d'ajusts de Citrix ICA</comment>
+ <comment xml:lang="cs">soubor nastavení Citrix ICA</comment>
+ <comment xml:lang="da">Citrix ICA-opsætningsfil</comment>
+ <comment xml:lang="de">Citrix-ICA-Einstellungsdatei</comment>
+ <comment xml:lang="el">Αρχείο ρυθμίσεων Citrix ICA</comment>
+- <comment xml:lang="en_GB">Citrix ICA settings file</comment>
++ <comment xml:lang="en-GB">Citrix ICA settings file</comment>
+ <comment xml:lang="es">archivo de configuración de Citrix ICA</comment>
+ <comment xml:lang="eu">Citrix ICA ezarpenen fitxategia</comment>
+ <comment xml:lang="fi">Citrix ICA -asetustiedosto</comment>
+ <comment xml:lang="fo">Citrix ICA stillingarfíla</comment>
+ <comment xml:lang="fr">fichier de paramètres ICA Citrix</comment>
++ <comment xml:lang="fur">file impostazions Citrix ICA</comment>
+ <comment xml:lang="ga">comhad socruithe Citrix ICA</comment>
+ <comment xml:lang="gl">ficheiro de configuracións de Citrix ICA</comment>
+ <comment xml:lang="he">קובץ הגדרות של Citrix ICA</comment>
+@@ -38941,7 +40405,7 @@
+ <comment xml:lang="oc">fichièr de paramètres ICA Citrix</comment>
+ <comment xml:lang="pl">Plik ustawień Citrix ICA</comment>
+ <comment xml:lang="pt">ficheiro de definições Citrix ICA</comment>
+- <comment xml:lang="pt_BR">Arquivo de configuração do Citrix ICA</comment>
++ <comment xml:lang="pt-BR">Arquivo de configuração do Citrix ICA</comment>
+ <comment xml:lang="ro">Fișier de configurări Citrix ICA</comment>
+ <comment xml:lang="ru">Файл настроек Citrix ICA</comment>
+ <comment xml:lang="sk">Súbor nastavení Citrix ICA</comment>
+@@ -38952,8 +40416,8 @@
+ <comment xml:lang="tr">Citrix ICA ayar dosyası</comment>
+ <comment xml:lang="uk">файл параметрів ICA Citrix</comment>
+ <comment xml:lang="vi">Tập tin thiết lập ICA Citrix</comment>
+- <comment xml:lang="zh_CN">Citrix ICA 设置文件</comment>
+- <comment xml:lang="zh_TW">Citrix ICA 設定值檔案</comment>
++ <comment xml:lang="zh-CN">Citrix ICA 设置文件</comment>
++ <comment xml:lang="zh-TW">Citrix ICA 設定值檔案</comment>
+ <acronym>ICA</acronym>
+ <expanded-acronym>Independent Computing Architecture</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+@@ -38962,21 +40426,23 @@
+ </mime-type>
+ <mime-type type="application/vnd.mozilla.xul+xml">
+ <comment>XUL interface document</comment>
++ <comment xml:lang="af">XUL-koppelvlakdokument</comment>
+ <comment xml:lang="ar">مستند واجهة XUL</comment>
+ <comment xml:lang="ast">Documentu d'interfaz XUL</comment>
+- <comment xml:lang="be@latin">Interfejsny dakument XUL</comment>
+- <comment xml:lang="bg">Документ — интерфейс за XUL</comment>
++ <comment xml:lang="be-Latn">Interfejsny dakument XUL</comment>
++ <comment xml:lang="bg">Документ — интерфейс, XUL</comment>
+ <comment xml:lang="ca">document d'interfície XUL</comment>
+ <comment xml:lang="cs">dokument rozhraní XUL</comment>
+ <comment xml:lang="da">XUL-grænsefladedokument</comment>
+ <comment xml:lang="de">XUL-Oberflächendokument</comment>
+ <comment xml:lang="el">Έγγραφο διεπαφής XUL</comment>
+- <comment xml:lang="en_GB">XUL interface document</comment>
++ <comment xml:lang="en-GB">XUL interface document</comment>
+ <comment xml:lang="es">documento de interfaz XUL</comment>
+ <comment xml:lang="eu">XUL interfazearen dokumentua</comment>
+ <comment xml:lang="fi">XUL-käyttöliittymäasiakirja</comment>
+ <comment xml:lang="fo">XUL markamótsskjal</comment>
+ <comment xml:lang="fr">document d'interface XUL</comment>
++ <comment xml:lang="fur">document di interface XUL</comment>
+ <comment xml:lang="ga">cáipéis chomhéadan XUL</comment>
+ <comment xml:lang="gl">documento de interface XUL</comment>
+ <comment xml:lang="he">מסמך ממשק XUL</comment>
+@@ -38996,7 +40462,7 @@
+ <comment xml:lang="oc">document d'interfàcia XUL</comment>
+ <comment xml:lang="pl">Dokument interfejsu XUL</comment>
+ <comment xml:lang="pt">documento de ambiente XUL</comment>
+- <comment xml:lang="pt_BR">Documento de interface XUL</comment>
++ <comment xml:lang="pt-BR">Documento de interface XUL</comment>
+ <comment xml:lang="ro">Document interfață XUL</comment>
+ <comment xml:lang="ru">Документ интерфейса XUL</comment>
+ <comment xml:lang="sk">Dokument rozhrania XUL</comment>
+@@ -39007,8 +40473,8 @@
+ <comment xml:lang="tr">XUL arayüz belgesi</comment>
+ <comment xml:lang="uk">документ інтерфейсу XUL</comment>
+ <comment xml:lang="vi">Tài liệu giao diện XUL</comment>
+- <comment xml:lang="zh_CN">XUL 界面文档</comment>
+- <comment xml:lang="zh_TW">XUL 介面文件</comment>
++ <comment xml:lang="zh-CN">XUL 界面文档</comment>
++ <comment xml:lang="zh-TW">XUL 介面文件</comment>
+ <acronym>XUL</acronym>
+ <expanded-acronym>XML User interface markup Language</expanded-acronym>
+ <sub-class-of type="application/xml"/>
+@@ -39018,6 +40484,7 @@
+ </mime-type>
+ <mime-type type="application/x-xpinstall">
+ <comment>XPInstall installer module</comment>
++ <comment xml:lang="af">XPInstall-installasiemodule</comment>
+ <comment xml:lang="ar">وحدة مثبت XPInstall </comment>
+ <comment xml:lang="bg">Пакет — инсталация XPInstall</comment>
+ <comment xml:lang="ca">mòdul de l'instal·lador XPinstall</comment>
+@@ -39025,12 +40492,13 @@
+ <comment xml:lang="da">XPInstall-installationsmodul</comment>
+ <comment xml:lang="de">XPInstall-Installationsmodul</comment>
+ <comment xml:lang="el">Άρθρωμα εγκατάστασης XPInstall</comment>
+- <comment xml:lang="en_GB">XPInstall installer module</comment>
++ <comment xml:lang="en-GB">XPInstall installer module</comment>
+ <comment xml:lang="es">módulo del instalador XPInstall</comment>
+ <comment xml:lang="eu">XPInstall instalatzailearen modulua</comment>
+ <comment xml:lang="fi">XPInstall-asennuspaketti</comment>
+ <comment xml:lang="fo">XPInstall innleggjaramótul</comment>
+ <comment xml:lang="fr">module d'installation XPInstall</comment>
++ <comment xml:lang="fur">modul instaladôr XPInstall</comment>
+ <comment xml:lang="ga">modúl suiteála XPInstall</comment>
+ <comment xml:lang="gl">Módulo do instalador XPInstall</comment>
+ <comment xml:lang="he">מודול התקנה של XPInstall</comment>
+@@ -39048,7 +40516,7 @@
+ <comment xml:lang="oc">modul d'installacion XPInstall</comment>
+ <comment xml:lang="pl">Moduł instalatora XPInstall</comment>
+ <comment xml:lang="pt">módulo de instalador XPInstall</comment>
+- <comment xml:lang="pt_BR">Módulo de instalador XPInstall</comment>
++ <comment xml:lang="pt-BR">Módulo de instalador XPInstall</comment>
+ <comment xml:lang="ro">Modul de instalare XPInstall</comment>
+ <comment xml:lang="ru">Модуль установщика XPInstall</comment>
+ <comment xml:lang="sk">Modul inštalátora XPInstall</comment>
+@@ -39057,13 +40525,14 @@
+ <comment xml:lang="sv">XPInstall-installeringsmodul</comment>
+ <comment xml:lang="tr">XPInstall kurulum modülü</comment>
+ <comment xml:lang="uk">модуль засобу встановлення XPInstall</comment>
+- <comment xml:lang="zh_CN">XPInstall 安装工具模块</comment>
+- <comment xml:lang="zh_TW">XPInstall 安裝程式模組</comment>
++ <comment xml:lang="zh-CN">XPInstall 安装工具模块</comment>
++ <comment xml:lang="zh-TW">XPInstall 安裝程式模組</comment>
+ <sub-class-of type="application/zip"/>
+ <glob pattern="*.xpi"/>
+ </mime-type>
+ <mime-type type="application/vnd.openxmlformats-officedocument.wordprocessingml.document">
+ <comment>Word 2007 document</comment>
++ <comment xml:lang="af">Word 2007-dokument</comment>
+ <comment xml:lang="ar">مستند Word 2007</comment>
+ <comment xml:lang="ast">Documentu de Word 2007</comment>
+ <comment xml:lang="bg">Документ — Word 2007</comment>
+@@ -39072,12 +40541,13 @@
+ <comment xml:lang="da">Word 2007-dokument</comment>
+ <comment xml:lang="de">Word-2007-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο Word 2007</comment>
+- <comment xml:lang="en_GB">Word 2007 document</comment>
++ <comment xml:lang="en-GB">Word 2007 document</comment>
+ <comment xml:lang="es">documento de Word 2007</comment>
+ <comment xml:lang="eu">Word 2007 dokumentua</comment>
+ <comment xml:lang="fi">Word 2007 -asiakirja</comment>
+ <comment xml:lang="fo">Word 2007 skjal</comment>
+ <comment xml:lang="fr">document Word 2007</comment>
++ <comment xml:lang="fur">document Word 2007</comment>
+ <comment xml:lang="ga">cáipéis Word 2007</comment>
+ <comment xml:lang="gl">documento de Word 2007</comment>
+ <comment xml:lang="he">מסמך Word 2007</comment>
+@@ -39095,7 +40565,7 @@
+ <comment xml:lang="oc">document Word 2007</comment>
+ <comment xml:lang="pl">Dokument Word 2007</comment>
+ <comment xml:lang="pt">documento Word 2007</comment>
+- <comment xml:lang="pt_BR">Documento do Word 2007</comment>
++ <comment xml:lang="pt-BR">Documento do Word 2007</comment>
+ <comment xml:lang="ro">Document Word 2007</comment>
+ <comment xml:lang="ru">Документ Word 2007</comment>
+ <comment xml:lang="sk">Dokument Word 2007</comment>
+@@ -39105,14 +40575,15 @@
+ <comment xml:lang="tr">Word 2007 belgesi</comment>
+ <comment xml:lang="uk">документ Word 2007</comment>
+ <comment xml:lang="vi">Tài liệu Word 2007</comment>
+- <comment xml:lang="zh_CN">Word 2007 文档</comment>
+- <comment xml:lang="zh_TW">Word 2007 文件</comment>
++ <comment xml:lang="zh-CN">Word 2007 文档</comment>
++ <comment xml:lang="zh-TW">Word 2007 文件</comment>
+ <glob pattern="*.docx"/>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-document"/>
+ </mime-type>
+ <mime-type type="application/vnd.openxmlformats-officedocument.wordprocessingml.template">
+ <comment>Word 2007 document template</comment>
++ <comment xml:lang="af">Word 2007-dokumentsjabloon</comment>
+ <comment xml:lang="ast">Plantía de documentu de Word 2007</comment>
+ <comment xml:lang="bg">Шаблон за документи — Word 2007</comment>
+ <comment xml:lang="ca">plantilla de document de Word 2007</comment>
+@@ -39120,11 +40591,12 @@
+ <comment xml:lang="da">Word 2007-dokumentskabelon</comment>
+ <comment xml:lang="de">Word-2007-Dokumentvorlage</comment>
+ <comment xml:lang="el">Πρότυπο έγγραφο Word 2007</comment>
+- <comment xml:lang="en_GB">Word 2007 document template</comment>
++ <comment xml:lang="en-GB">Word 2007 document template</comment>
+ <comment xml:lang="es">plantilla de documento de Word 2007</comment>
+ <comment xml:lang="eu">Word 2007 dokumentuaren txantiloia</comment>
+ <comment xml:lang="fi">Word 2007 -asiakirjamalli</comment>
+ <comment xml:lang="fr">modèle de document Word 2007</comment>
++ <comment xml:lang="fur">model document Word 2007</comment>
+ <comment xml:lang="ga">teimpléad cháipéis Word 2007</comment>
+ <comment xml:lang="gl">Plantilla de documento de Word 2007</comment>
+ <comment xml:lang="he">תבנית מסמך של Word 2007</comment>
+@@ -39142,7 +40614,7 @@
+ <comment xml:lang="oc">modèl de document Word 2007</comment>
+ <comment xml:lang="pl">Szablon dokumentu Word 2007</comment>
+ <comment xml:lang="pt">modelo de documento Word 2007</comment>
+- <comment xml:lang="pt_BR">Modelo de documento do Word 2007</comment>
++ <comment xml:lang="pt-BR">Modelo de documento do Word 2007</comment>
+ <comment xml:lang="ru">Шаблон документа Word 2007</comment>
+ <comment xml:lang="sk">Šablóna dokumentu Word 2007</comment>
+ <comment xml:lang="sl">Predloga dokumenta Word 2007</comment>
+@@ -39150,14 +40622,15 @@
+ <comment xml:lang="sv">Word 2007-dokumentmall</comment>
+ <comment xml:lang="tr">Word 2007 belge şablonu</comment>
+ <comment xml:lang="uk">шаблон документа Word 2007</comment>
+- <comment xml:lang="zh_CN">Word 2007 文档模板</comment>
+- <comment xml:lang="zh_TW">Word 2007 文件範本</comment>
++ <comment xml:lang="zh-CN">Word 2007 文档模板</comment>
++ <comment xml:lang="zh-TW">Word 2007 文件範本</comment>
+ <glob pattern="*.dotx"/>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-document"/>
+ </mime-type>
+ <mime-type type="application/vnd.openxmlformats-officedocument.presentationml.presentation">
+ <comment>PowerPoint 2007 presentation</comment>
++ <comment xml:lang="af">PowerPoint 2007-voorlegging</comment>
+ <comment xml:lang="ar">عرض تقديمي PowerPoint 2007</comment>
+ <comment xml:lang="bg">Презентация — PowerPoint 2007</comment>
+ <comment xml:lang="ca">presentació de PowerPoint 2007</comment>
+@@ -39165,12 +40638,13 @@
+ <comment xml:lang="da">PowerPoint 2007-præsentation</comment>
+ <comment xml:lang="de">PowerPoint-2007-Präsentation</comment>
+ <comment xml:lang="el">Παρουσίαση PowerPoint 2007</comment>
+- <comment xml:lang="en_GB">PowerPoint 2007 presentation</comment>
++ <comment xml:lang="en-GB">PowerPoint 2007 presentation</comment>
+ <comment xml:lang="es">presentación de PowerPoint 2007</comment>
+ <comment xml:lang="eu">PowerPoint 2007 aurkezpena</comment>
+ <comment xml:lang="fi">PowerPoint 2007 -esitys</comment>
+ <comment xml:lang="fo">PowerPoint 2007 framløga</comment>
+ <comment xml:lang="fr">présentation PowerPoint 2007</comment>
++ <comment xml:lang="fur">presentazion PowerPoint 2007</comment>
+ <comment xml:lang="ga">láithreoireacht PowerPoint 2007</comment>
+ <comment xml:lang="gl">presentación de PowerPoint 2007</comment>
+ <comment xml:lang="he">מצגת של PowerPoint 2007</comment>
+@@ -39188,7 +40662,7 @@
+ <comment xml:lang="oc">presentacion PowerPoint 2007</comment>
+ <comment xml:lang="pl">Prezentacja PowerPoint 2007</comment>
+ <comment xml:lang="pt">apresentação PowerPoint 2007</comment>
+- <comment xml:lang="pt_BR">Apresentação do PowerPoint 2007</comment>
++ <comment xml:lang="pt-BR">Apresentação do PowerPoint 2007</comment>
+ <comment xml:lang="ro">Prezentare PowerPoint 2007</comment>
+ <comment xml:lang="ru">Презентация PowerPoint 2007</comment>
+ <comment xml:lang="sk">Prezentácia PowerPoint 2007</comment>
+@@ -39198,25 +40672,27 @@
+ <comment xml:lang="tr">PowerPoint 2007 sunumu</comment>
+ <comment xml:lang="uk">презентація PowerPoint 2007</comment>
+ <comment xml:lang="vi">Trình diễn PowerPoint 2007</comment>
+- <comment xml:lang="zh_CN">PowerPoint 2007 演示文稿</comment>
+- <comment xml:lang="zh_TW">PowerPoint 2007 簡報</comment>
++ <comment xml:lang="zh-CN">PowerPoint 2007 演示文稿</comment>
++ <comment xml:lang="zh-TW">PowerPoint 2007 簡報</comment>
+ <glob pattern="*.pptx"/>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-presentation"/>
+ </mime-type>
+ <mime-type type="application/vnd.openxmlformats-officedocument.presentationml.slide">
+ <comment>PowerPoint 2007 slide</comment>
++ <comment xml:lang="af">PowerPoint 2007-skyfie</comment>
+ <comment xml:lang="bg">Кадър — PoerPoint 2007</comment>
+ <comment xml:lang="ca">dispositiva de PowerPoint 2007</comment>
+ <comment xml:lang="cs">snímek PowerPoint 2007</comment>
+ <comment xml:lang="da">PowerPoint 2007-slide</comment>
+ <comment xml:lang="de">PowerPoint 2007-Folie</comment>
+ <comment xml:lang="el">Διαφάνεια PowerPoint 2007</comment>
+- <comment xml:lang="en_GB">PowerPoint 2007 slide</comment>
++ <comment xml:lang="en-GB">PowerPoint 2007 slide</comment>
+ <comment xml:lang="es">diapositiva de PowerPoint 2007</comment>
+ <comment xml:lang="eu">PowerPoint 2007 diapositiba</comment>
+ <comment xml:lang="fi">PowerPoint 2007 -dia</comment>
+ <comment xml:lang="fr">diapositive PowerPoint 2007</comment>
++ <comment xml:lang="fur">diapositive PowerPoint 2007</comment>
+ <comment xml:lang="ga">sleamhnán PowerPoint 2007</comment>
+ <comment xml:lang="gl">Diaporama de PowerPoint 2007</comment>
+ <comment xml:lang="he">שקופית של PowerPoint 2007</comment>
+@@ -39234,7 +40710,7 @@
+ <comment xml:lang="oc">diapositive PowerPoint 2007</comment>
+ <comment xml:lang="pl">Slajd PowerPoint 2007</comment>
+ <comment xml:lang="pt">diapositivo PowerPoint 2007</comment>
+- <comment xml:lang="pt_BR">Slide do PowerPoint 2007</comment>
++ <comment xml:lang="pt-BR">Slide do PowerPoint 2007</comment>
+ <comment xml:lang="ru">Слайд PowerPoint 2007</comment>
+ <comment xml:lang="sk">Snímka PowerPoint 2007</comment>
+ <comment xml:lang="sl">Prosojnica PowerPoint 2007</comment>
+@@ -39242,14 +40718,15 @@
+ <comment xml:lang="sv">PowerPoint 2007-bildspel</comment>
+ <comment xml:lang="tr">PowerPoint 2007 slaytı</comment>
+ <comment xml:lang="uk">слайд PowerPoint 2007</comment>
+- <comment xml:lang="zh_CN">PowerPoint 2007 幻灯片</comment>
+- <comment xml:lang="zh_TW">PowerPoint 2007 投影片</comment>
++ <comment xml:lang="zh-CN">PowerPoint 2007 幻灯片</comment>
++ <comment xml:lang="zh-TW">PowerPoint 2007 投影片</comment>
+ <glob pattern="*.sldx"/>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-presentation"/>
+ </mime-type>
+ <mime-type type="application/vnd.openxmlformats-officedocument.presentationml.slideshow">
+ <comment>PowerPoint 2007 show</comment>
++ <comment xml:lang="af">PowerPoint 2007-vertoning</comment>
+ <comment xml:lang="ar">عرض PowerPoint 2007</comment>
+ <comment xml:lang="bg">Презентация-шоу — PowerPoint 2007</comment>
+ <comment xml:lang="ca">exposició de PowerPoint 2007</comment>
+@@ -39257,12 +40734,13 @@
+ <comment xml:lang="da">PowerPoint 2007-dias</comment>
+ <comment xml:lang="de">PowerPoint-2007-Präsentation</comment>
+ <comment xml:lang="el">Παρουσίαση PowerPoint 2007</comment>
+- <comment xml:lang="en_GB">PowerPoint 2007 show</comment>
++ <comment xml:lang="en-GB">PowerPoint 2007 show</comment>
+ <comment xml:lang="es">presentación autoejecutable de PowerPoint 2007</comment>
+ <comment xml:lang="eu">PowerPoint 2007 ikuskizuna</comment>
+ <comment xml:lang="fi">PowerPoint 2007 -diaesitys</comment>
+ <comment xml:lang="fo">PowerPoint 2007 framsýning</comment>
+ <comment xml:lang="fr">diaporama PowerPoint 2007</comment>
++ <comment xml:lang="fur">esecuzion presentazion PowerPoint 2007</comment>
+ <comment xml:lang="ga">taispeántas PowerPoint 2007</comment>
+ <comment xml:lang="gl">Exposición de PowerPoint 2007</comment>
+ <comment xml:lang="he">תצוגה של PowerPoint 2007</comment>
+@@ -39280,7 +40758,7 @@
+ <comment xml:lang="oc">diaporama PowerPoint 2007</comment>
+ <comment xml:lang="pl">Pokaz PowerPoint 2007</comment>
+ <comment xml:lang="pt">espetáculo PowerPoint 2007</comment>
+- <comment xml:lang="pt_BR">Apresentação do PowerPoint 2007</comment>
++ <comment xml:lang="pt-BR">Apresentação do PowerPoint 2007</comment>
+ <comment xml:lang="ro">Prezentare PowerPoint 2007</comment>
+ <comment xml:lang="ru">Презентация PowerPoint 2007</comment>
+ <comment xml:lang="sk">Ukážka PowerPoint 2007</comment>
+@@ -39289,25 +40767,27 @@
+ <comment xml:lang="sv">PowerPoint 2007-visning</comment>
+ <comment xml:lang="tr">PowerPoint 2007 gösterisi</comment>
+ <comment xml:lang="uk">показ слайдів PowerPoint 2007</comment>
+- <comment xml:lang="zh_CN">PowerPoint 2007 放映</comment>
+- <comment xml:lang="zh_TW">PowerPoint 2007 展示</comment>
++ <comment xml:lang="zh-CN">PowerPoint 2007 放映</comment>
++ <comment xml:lang="zh-TW">PowerPoint 2007 展示</comment>
+ <glob pattern="*.ppsx"/>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-presentation"/>
+ </mime-type>
+ <mime-type type="application/vnd.openxmlformats-officedocument.presentationml.template">
+ <comment>PowerPoint 2007 presentation template</comment>
++ <comment xml:lang="af">PowerPoint 2007-voorleggingsjabloon</comment>
+ <comment xml:lang="bg">Шаблон за презентации — PowerPoint 2007</comment>
+ <comment xml:lang="ca">plantilla de presentació de PowerPoint 2007</comment>
+ <comment xml:lang="cs">šablona prezentace PowerPoint 2007</comment>
+ <comment xml:lang="da">PowerPoint 2007-præsentationsskabelon</comment>
+ <comment xml:lang="de">PowerPoint 2007-Präsentationsvorlage</comment>
+ <comment xml:lang="el">Πρότυπο παρουσίασης PowerPoint 2007</comment>
+- <comment xml:lang="en_GB">PowerPoint 2007 presentation template</comment>
++ <comment xml:lang="en-GB">PowerPoint 2007 presentation template</comment>
+ <comment xml:lang="es">plantilla de presentación de PowerPoint 2007</comment>
+ <comment xml:lang="eu">PowerPoint 2007 aurkezpen txantiloia</comment>
+ <comment xml:lang="fi">PowerPoint 2007 -esitysmalli</comment>
+ <comment xml:lang="fr">modèle de présentation PowerPoint 2007</comment>
++ <comment xml:lang="fur">model presentazion PowerPoint 2007</comment>
+ <comment xml:lang="ga">teimpléad láithreoireachta PowerPoint 2007</comment>
+ <comment xml:lang="gl">modelo de presentación de PowerPoint 2007</comment>
+ <comment xml:lang="he">תבנית למצגת של PowerPoint 2007</comment>
+@@ -39325,7 +40805,7 @@
+ <comment xml:lang="oc">modèl de presentacion PowerPoint 2007</comment>
+ <comment xml:lang="pl">Szablon prezentacji PowerPoint 2007</comment>
+ <comment xml:lang="pt">modelo de apresentação PowerPoint 2007</comment>
+- <comment xml:lang="pt_BR">Modelo de apresentação do PowerPoint 2007</comment>
++ <comment xml:lang="pt-BR">Modelo de apresentação do PowerPoint 2007</comment>
+ <comment xml:lang="ru">Шаблон презентации PowerPoint 2007</comment>
+ <comment xml:lang="sk">Šablóna prezentácie PowerPoint 2007</comment>
+ <comment xml:lang="sl">Predloga predstavitve PowerPoint 2007</comment>
+@@ -39333,14 +40813,15 @@
+ <comment xml:lang="sv">PowerPoint 2007-presentationsmall</comment>
+ <comment xml:lang="tr">PowerPoint 2007 sunum şablonu</comment>
+ <comment xml:lang="uk">шаблон презентації PowerPoint 2007</comment>
+- <comment xml:lang="zh_CN">PowerPoint 2007 演示文稿模板</comment>
+- <comment xml:lang="zh_TW">PowerPoint 2007 簡報範本</comment>
++ <comment xml:lang="zh-CN">PowerPoint 2007 演示文稿模板</comment>
++ <comment xml:lang="zh-TW">PowerPoint 2007 簡報範本</comment>
+ <glob pattern="*.potx"/>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-presentation"/>
+ </mime-type>
+ <mime-type type="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet">
+ <comment>Excel 2007 spreadsheet</comment>
++ <comment xml:lang="af">Excel 2007-sigblad</comment>
+ <comment xml:lang="ar">جدول Excel 2007</comment>
+ <comment xml:lang="bg">Таблица — Excel 2007</comment>
+ <comment xml:lang="ca">full de càlcul d'Excel 2007</comment>
+@@ -39348,12 +40829,13 @@
+ <comment xml:lang="da">Excel 2007-regneark</comment>
+ <comment xml:lang="de">Excel-2007-Tabelle</comment>
+ <comment xml:lang="el">Λογιστικό φύλλο Excel 2007</comment>
+- <comment xml:lang="en_GB">Excel 2007 spreadsheet</comment>
++ <comment xml:lang="en-GB">Excel 2007 spreadsheet</comment>
+ <comment xml:lang="es">hoja de cálculo de Excel 2007</comment>
+ <comment xml:lang="eu">Excel 2007 kalkulu-orria</comment>
+ <comment xml:lang="fi">Excel 2007 -taulukko</comment>
+ <comment xml:lang="fo">Excel 2007 rokniark</comment>
+ <comment xml:lang="fr">feuille de calcul Excel 2007</comment>
++ <comment xml:lang="fur">sfuei di calcul Excel 2007</comment>
+ <comment xml:lang="ga">scarbhileog Excel 2007</comment>
+ <comment xml:lang="gl">folla de cálculo de Excel 2007</comment>
+ <comment xml:lang="he">גליון נתונים של Excel 2007</comment>
+@@ -39372,35 +40854,37 @@
+ <comment xml:lang="oc">fuèlh de calcul Excel 2007</comment>
+ <comment xml:lang="pl">Arkusz Excel 2007</comment>
+ <comment xml:lang="pt">folha de cálculo Excel 2007</comment>
+- <comment xml:lang="pt_BR">Planilha do Excel 2007</comment>
++ <comment xml:lang="pt-BR">Planilha do Excel 2007</comment>
+ <comment xml:lang="ro">Foaie de calcul Excel 2007</comment>
+ <comment xml:lang="ru">Электронная таблица Excel 2007</comment>
+ <comment xml:lang="sk">Zošit Excel 2007</comment>
+ <comment xml:lang="sl">Razpredelnica Microsoft Excel 2007</comment>
+ <comment xml:lang="sr">табела Ексела 2007</comment>
+ <comment xml:lang="sv">Excel 2007-kalkylblad</comment>
+- <comment xml:lang="tr">Excel 2007 çalışma sayfası</comment>
++ <comment xml:lang="tr">Excel 2007 hesap çizelgesi sayfası</comment>
+ <comment xml:lang="uk">ел. таблиця Excel 2007</comment>
+ <comment xml:lang="vi">Bảng tính Excel 2007</comment>
+- <comment xml:lang="zh_CN">Excel 2007 电子表格</comment>
+- <comment xml:lang="zh_TW">Excel 2007 試算表</comment>
++ <comment xml:lang="zh-CN">Excel 2007 电子表格</comment>
++ <comment xml:lang="zh-TW">Excel 2007 試算表</comment>
+ <glob pattern="*.xlsx"/>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-spreadsheet"/>
+ </mime-type>
+ <mime-type type="application/vnd.openxmlformats-officedocument.spreadsheetml.template">
+ <comment>Excel 2007 spreadsheet template</comment>
++ <comment xml:lang="af">Excel 2007-sigbladsjabloon</comment>
+ <comment xml:lang="bg">Шаблон за таблици — Excel 2007</comment>
+ <comment xml:lang="ca">plantilla de full de càlcul d'Excel 2007</comment>
+ <comment xml:lang="cs">šablona sešitu Excel 2007</comment>
+ <comment xml:lang="da">Excel 2007-regnearksskabelon</comment>
+ <comment xml:lang="de">Excel 2007-Tabellenvorlage</comment>
+ <comment xml:lang="el">Πρότυπο λογιστικού φύλλου Excel 2007</comment>
+- <comment xml:lang="en_GB">Excel 2007 spreadsheet template</comment>
++ <comment xml:lang="en-GB">Excel 2007 spreadsheet template</comment>
+ <comment xml:lang="es">plantilla de hoja de cálculo de Excel 2007</comment>
+ <comment xml:lang="eu">Excel 2007 kalkulu-orri txantiloia</comment>
+ <comment xml:lang="fi">Excel 2007 -taulukkomalli</comment>
+ <comment xml:lang="fr">modèle de feuille de calcul Excel 2007</comment>
++ <comment xml:lang="fur">model sfuei di calcul Excel 2007</comment>
+ <comment xml:lang="ga">teimpléad scarbhileoige Excel 2007</comment>
+ <comment xml:lang="gl">modelo de folla de cálculo Excel 2007</comment>
+ <comment xml:lang="he">תבנית של גיליון נתונים של Excel 2007</comment>
+@@ -39418,38 +40902,40 @@
+ <comment xml:lang="oc">modèl de fuèlh de calcul Excel 2007</comment>
+ <comment xml:lang="pl">Szablon arkusza Excel 2007</comment>
+ <comment xml:lang="pt">modelo de folha de cálculo Excel 2007</comment>
+- <comment xml:lang="pt_BR">Modelo de planilha do Excel 2007</comment>
++ <comment xml:lang="pt-BR">Modelo de planilha do Excel 2007</comment>
+ <comment xml:lang="ru">Шаблон электронной таблицы Excel 2007</comment>
+ <comment xml:lang="sk">Šablóna zošitu Excel 2007</comment>
+ <comment xml:lang="sl">Predloga razpredelnice Excel 2007</comment>
+ <comment xml:lang="sr">шаблон табеле Ексела 2007</comment>
+ <comment xml:lang="sv">Excel 2007-kalkylarksmall</comment>
+- <comment xml:lang="tr">Excel 2007 çalışma sayfası şablonu</comment>
++ <comment xml:lang="tr">Excel 2007 hesap çizelgesi şablonu</comment>
+ <comment xml:lang="uk">шаблон електронної таблиці Excel 2007</comment>
+- <comment xml:lang="zh_CN">Excel 2007 电子表格模板</comment>
+- <comment xml:lang="zh_TW">Excel 2007 試算表範本</comment>
++ <comment xml:lang="zh-CN">Excel 2007 电子表格模板</comment>
++ <comment xml:lang="zh-TW">Excel 2007 試算表範本</comment>
+ <glob pattern="*.xltx"/>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-spreadsheet"/>
+ </mime-type>
+ <mime-type type="application/x-t602">
+ <comment>T602 document</comment>
++ <comment xml:lang="af">T602-dokument</comment>
+ <comment xml:lang="ar">مستند T602</comment>
+ <comment xml:lang="ast">Documentu T602</comment>
+- <comment xml:lang="be@latin">Dakument T602</comment>
++ <comment xml:lang="be-Latn">Dakument T602</comment>
+ <comment xml:lang="bg">Документ — T602</comment>
+ <comment xml:lang="ca">document T602</comment>
+ <comment xml:lang="cs">dokument T602</comment>
+ <comment xml:lang="da">T602-dokument</comment>
+ <comment xml:lang="de">T602-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο T602</comment>
+- <comment xml:lang="en_GB">T602 document</comment>
++ <comment xml:lang="en-GB">T602 document</comment>
+ <comment xml:lang="eo">T602-dokumento</comment>
+ <comment xml:lang="es">documento T602</comment>
+ <comment xml:lang="eu">T602 dokumentua</comment>
+ <comment xml:lang="fi">T602-asiakirja</comment>
+ <comment xml:lang="fo">T602 skjal</comment>
+ <comment xml:lang="fr">document T602</comment>
++ <comment xml:lang="fur">document T602</comment>
+ <comment xml:lang="ga">cáipéis T602</comment>
+ <comment xml:lang="gl">documento T602</comment>
+ <comment xml:lang="he">מסמך T602</comment>
+@@ -39469,7 +40955,7 @@
+ <comment xml:lang="oc">document T602</comment>
+ <comment xml:lang="pl">Dokument T602</comment>
+ <comment xml:lang="pt">documento T602</comment>
+- <comment xml:lang="pt_BR">Documento T602</comment>
++ <comment xml:lang="pt-BR">Documento T602</comment>
+ <comment xml:lang="ro">Document T602</comment>
+ <comment xml:lang="ru">Документ T602</comment>
+ <comment xml:lang="sk">Dokument T602</comment>
+@@ -39480,75 +40966,54 @@
+ <comment xml:lang="tr">T602 belgesi</comment>
+ <comment xml:lang="uk">документ T602</comment>
+ <comment xml:lang="vi">Tài liệu T602</comment>
+- <comment xml:lang="zh_CN">T602 文档</comment>
+- <comment xml:lang="zh_TW">T602 文件</comment>
++ <comment xml:lang="zh-CN">T602 文档</comment>
++ <comment xml:lang="zh-TW">T602 文件</comment>
+ <generic-icon name="x-office-document"/>
+ <magic priority="50">
+- <match value="@CT 0" type="string" offset="0"/>
+- <match value="@CT 1" type="string" offset="0"/>
+- <match value="@CT 2" type="string" offset="0"/>
++ <match offset="0" type="string" value="@CT 0"/>
++ <match offset="0" type="string" value="@CT 1"/>
++ <match offset="0" type="string" value="@CT 2"/>
+ </magic>
+ <glob pattern="*.602"/>
+ </mime-type>
+ <mime-type type="application/x-cisco-vpn-settings">
+- <comment>Cisco VPN Settings</comment>
+- <comment xml:lang="ar">إعدادات Cisco VPN</comment>
+- <comment xml:lang="be@latin">Nałady Cisco VPN</comment>
++ <comment>Cisco VPN settings</comment>
+ <comment xml:lang="bg">Настройки — ВЧМ на Cisco</comment>
+ <comment xml:lang="ca">ajusts VPN de Cisco</comment>
+- <comment xml:lang="cs">nastavení Cisco VPN</comment>
+- <comment xml:lang="da">Cisco VPN-opsætning</comment>
++ <comment xml:lang="da">Cisco VPN-indstillinger</comment>
+ <comment xml:lang="de">Cisco-VPN-Einstellungen</comment>
+- <comment xml:lang="el">Ρυθμίσεις Cisco VPN</comment>
+- <comment xml:lang="en_GB">Cisco VPN Settings</comment>
+- <comment xml:lang="es">configuración de VPN de Cisco</comment>
++ <comment xml:lang="en-GB">Cisco VPN settings</comment>
++ <comment xml:lang="es">configuración de Cisco VPN</comment>
+ <comment xml:lang="eu">Cisco VPN ezarpenak</comment>
+- <comment xml:lang="fi">Cisco VPN -asetukset</comment>
+- <comment xml:lang="fo">Cisco VPN stillingar</comment>
++ <comment xml:lang="fi">Ciscon VPN-asetukset</comment>
+ <comment xml:lang="fr">paramètres VPN Cisco</comment>
+- <comment xml:lang="ga">socruithe VPN Cisco</comment>
+- <comment xml:lang="gl">configuracións de VPN de Cisco</comment>
+- <comment xml:lang="he">הגדרות של Cisco VPN</comment>
+ <comment xml:lang="hr">Cisco VPN postavke</comment>
+ <comment xml:lang="hu">Cisco VPN beállítások</comment>
+- <comment xml:lang="ia">Configuration VPN Cisco</comment>
+- <comment xml:lang="id">Penataan Cisco VPN</comment>
++ <comment xml:lang="id">Pengaturan VPN Cisco</comment>
+ <comment xml:lang="it">Impostazioni VPN Cisco</comment>
+- <comment xml:lang="ja">Cisco VPN 設定</comment>
+- <comment xml:lang="ka">Cisco VPN-ის პარამეტრები</comment>
+ <comment xml:lang="kk">Cisco VPN баптаулары</comment>
+- <comment xml:lang="ko">Cisco VPN 설정</comment>
+- <comment xml:lang="lt">Cisco VPN parametrai</comment>
+- <comment xml:lang="lv">Cisco VPN iestatījumi</comment>
+- <comment xml:lang="nb">Cisco VPN-innstillinger</comment>
+- <comment xml:lang="nl">Cisco VPN-instellingen</comment>
+- <comment xml:lang="nn">Cisco VPN-innstillingar</comment>
+- <comment xml:lang="oc">paramètres VPN Cisco</comment>
++ <comment xml:lang="ko">시스코 VPN 설정</comment>
+ <comment xml:lang="pl">Ustawienia VPN Cisco</comment>
+- <comment xml:lang="pt">definições de Cisco VPN</comment>
+- <comment xml:lang="pt_BR">Configurações de VPN da Cisco</comment>
+- <comment xml:lang="ro">Configurări VPN Cisco</comment>
++ <comment xml:lang="pt-BR">Configurações de VPN da Cisco</comment>
+ <comment xml:lang="ru">Файл настроек Cisco VPN</comment>
+ <comment xml:lang="sk">Nastavenia Cisco VPN</comment>
+- <comment xml:lang="sl">Datoteka nastavitev Cisco VPN</comment>
+- <comment xml:lang="sq">Rregullime VPN Cisco</comment>
+- <comment xml:lang="sr">подешавања Циско ВПН-а</comment>
++ <comment xml:lang="sl">Nastavitve Cisco VPN</comment>
+ <comment xml:lang="sv">Cisco VPN-inställningar</comment>
+- <comment xml:lang="tr">Cisco VPN Ayarları</comment>
++ <comment xml:lang="tr">Cisco VPN ayarları</comment>
+ <comment xml:lang="uk">параметри VPN Cisco</comment>
+- <comment xml:lang="vi">Thiết lập VPN Cisco</comment>
+- <comment xml:lang="zh_CN">Cisco VPN 设置</comment>
+- <comment xml:lang="zh_TW">Cisco VPN 設定值</comment>
++ <comment xml:lang="zh-CN">Cisco VPN 设置</comment>
++ <comment xml:lang="zh-TW">Cisco VPN 設定</comment>
+ <generic-icon name="text-x-generic"/>
+ <magic priority="50">
+- <match value="[main]" type="string" offset="0">
+- <match value="AuthType=" type="string" offset="0:256"/>
++ <match type="string" value="[main]" offset="0">
++ <match type="string" value="AuthType=" offset="0:256"/>
+ </match>
+ </magic>
+ <glob pattern="*.pcf"/>
+ </mime-type>
+ <mime-type type="application/vnd.iccprofile">
+ <comment>ICC profile</comment>
++ <comment xml:lang="af">ICC-profiel</comment>
+ <comment xml:lang="ar">تشكيلة OCL</comment>
+ <comment xml:lang="ast">Perfil ICC</comment>
+ <comment xml:lang="bg">Цветови профил — OCL</comment>
+@@ -39557,13 +41022,14 @@
+ <comment xml:lang="da">ICC-profil</comment>
+ <comment xml:lang="de">ICC-Profil</comment>
+ <comment xml:lang="el">Προφίλ ICC</comment>
+- <comment xml:lang="en_GB">ICC profile</comment>
++ <comment xml:lang="en-GB">ICC profile</comment>
+ <comment xml:lang="eo">ICC-profilo</comment>
+ <comment xml:lang="es">perfil ICC</comment>
+ <comment xml:lang="eu">ICC profila</comment>
+ <comment xml:lang="fi">ICC-profiili</comment>
+ <comment xml:lang="fo">ICC umhvarv</comment>
+ <comment xml:lang="fr">profil ICC</comment>
++ <comment xml:lang="fur">profîl ICC</comment>
+ <comment xml:lang="ga">próifíl ICC</comment>
+ <comment xml:lang="gl">perfíl ICC</comment>
+ <comment xml:lang="he">פרופיל ICC</comment>
+@@ -39581,7 +41047,7 @@
+ <comment xml:lang="oc">perfil ICC</comment>
+ <comment xml:lang="pl">Profil ICC</comment>
+ <comment xml:lang="pt">perfil ICC</comment>
+- <comment xml:lang="pt_BR">Perfil ICC</comment>
++ <comment xml:lang="pt-BR">Perfil ICC</comment>
+ <comment xml:lang="ro">Profil ICC</comment>
+ <comment xml:lang="ru">Профиль ICC</comment>
+ <comment xml:lang="sk">Profil farieb ICC</comment>
+@@ -39590,10 +41056,10 @@
+ <comment xml:lang="sv">ICC-profil</comment>
+ <comment xml:lang="tr">ICC profili</comment>
+ <comment xml:lang="uk">профіль ICC</comment>
+- <comment xml:lang="zh_CN">ICC 配置文件</comment>
+- <comment xml:lang="zh_TW">ICC 設定檔</comment>
++ <comment xml:lang="zh-CN">ICC 配置文件</comment>
++ <comment xml:lang="zh-TW">ICC 設定組合</comment>
+ <magic priority="50">
+- <match value="acsp" type="string" offset="36"/>
++ <match type="string" value="acsp" offset="36"/>
+ </magic>
+ <glob pattern="*.icc"/>
+ <glob pattern="*.icm"/>
+@@ -39601,18 +41067,19 @@
+ <mime-type type="application/x-it87">
+ <comment>IT 8.7 color calibration file</comment>
+ <comment xml:lang="ar">ملف ضبط ألوان IT 8.7</comment>
+- <comment xml:lang="bg">Файл за цветово калибриране — IT 8.7</comment>
++ <comment xml:lang="bg">Цветово калибриране — IT 8.7</comment>
+ <comment xml:lang="ca">fitxer de calibratge de color IT 8.7</comment>
+ <comment xml:lang="cs">soubor kalibrace barev IT 8.7</comment>
+ <comment xml:lang="da">IT 8.7 farvekalibreringsfil</comment>
+ <comment xml:lang="de">IT 8.7-Farbkalibrierungsdatei</comment>
+ <comment xml:lang="el">Αρχείο βαθμονόμησης χρώματος ΙΤ 8.7</comment>
+- <comment xml:lang="en_GB">IT 8.7 color calibration file</comment>
++ <comment xml:lang="en-GB">IT 8.7 color calibration file</comment>
+ <comment xml:lang="es">archivo de calibración de color IT 8.7</comment>
+ <comment xml:lang="eu">IT 8.7 kolore-kalibrazioaren fitxategia</comment>
+ <comment xml:lang="fi">IT 8.7 -värikalibrointitiedosto</comment>
+ <comment xml:lang="fo">IT 8.7 litstillingarfíla</comment>
+ <comment xml:lang="fr">fichier de calibration couleur IT 8.7</comment>
++ <comment xml:lang="fur">file calibradure colôr IT 8.7</comment>
+ <comment xml:lang="ga">comhad calabraithe dathanna IT 8.7</comment>
+ <comment xml:lang="gl">ficheiro de calibración de cor IT 8.7</comment>
+ <comment xml:lang="he">קובץ כיול צבע IT 8.7</comment>
+@@ -39630,7 +41097,7 @@
+ <comment xml:lang="oc">fichièr de calibracion color IT 8.7</comment>
+ <comment xml:lang="pl">Plik kalibracji kolorów IT 8.7</comment>
+ <comment xml:lang="pt">ficheiro de calibração de cor IT 8.7</comment>
+- <comment xml:lang="pt_BR">Arquivo de calibração de cor IT 8.7</comment>
++ <comment xml:lang="pt-BR">Arquivo de calibração de cor IT 8.7</comment>
+ <comment xml:lang="ro">Fișier de calibrare a culorii IT 8.7</comment>
+ <comment xml:lang="ru">Файл калибровки цвета IT 8.7</comment>
+ <comment xml:lang="sk">Súbor kalibrácie farieb IT 8.7</comment>
+@@ -39639,10 +41106,10 @@
+ <comment xml:lang="sv">IT 8.7-färgkalibreringsfil</comment>
+ <comment xml:lang="tr">IT 8.7 renk kalibrasyon dosyası</comment>
+ <comment xml:lang="uk">файл калібрування кольорів IT 8.7</comment>
+- <comment xml:lang="zh_CN">IT 8.7 色彩校准文件</comment>
+- <comment xml:lang="zh_TW">IT 8.7 色彩校正檔</comment>
++ <comment xml:lang="zh-CN">IT 8.7 色彩校准文件</comment>
++ <comment xml:lang="zh-TW">IT 8.7 色彩校正檔</comment>
+ <magic priority="50">
+- <match value="IT8.7" type="string" offset="0"/>
++ <match type="string" value="IT8.7" offset="0"/>
+ </magic>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-generic"/>
+@@ -39650,16 +41117,18 @@
+ </mime-type>
+ <mime-type type="application/x-ccmx">
+ <comment>CCMX color correction file</comment>
++ <comment xml:lang="bg">Цветови поправки — CCMX</comment>
+ <comment xml:lang="ca">fitxer de correcció de color CCMX</comment>
+ <comment xml:lang="cs">soubor korekce barev CCMX</comment>
+ <comment xml:lang="da">CCMX-farvekorrektionsfil</comment>
+ <comment xml:lang="de">CCMX-Farbkorrekturdatei</comment>
+ <comment xml:lang="el">Αρχείο διόρθωσης χρωμάτων CCMX</comment>
+- <comment xml:lang="en_GB">CCMX colour correction file</comment>
++ <comment xml:lang="en-GB">CCMX colour correction file</comment>
+ <comment xml:lang="es">archivo de corrección de color CCMX</comment>
+ <comment xml:lang="eu">CCMX kolore-kalibrazioaren fitxategia</comment>
+ <comment xml:lang="fi">CCMX-värikorjaustiedosto</comment>
+ <comment xml:lang="fr">fichier de correction colorimétrique CCMX</comment>
++ <comment xml:lang="fur">file corezion colôr CCMX</comment>
+ <comment xml:lang="ga">comhad ceartúchán dathanna CCMX</comment>
+ <comment xml:lang="gl">Ficheiro de corrección de cor CCMX</comment>
+ <comment xml:lang="he">קובץ תיקון צבע מסוג CCMX</comment>
+@@ -39675,7 +41144,7 @@
+ <comment xml:lang="oc">fichièr de correccion colorimetrica CCMX</comment>
+ <comment xml:lang="pl">Plik korekcji kolorów CCMX</comment>
+ <comment xml:lang="pt">ficheiro de correção de cor CCMX</comment>
+- <comment xml:lang="pt_BR">Arquivo de correção de cor CCMX</comment>
++ <comment xml:lang="pt-BR">Arquivo de correção de cor CCMX</comment>
+ <comment xml:lang="ru">Файл цветовой коррекции CCMX</comment>
+ <comment xml:lang="sk">Súbor korekcie farieb CCMX</comment>
+ <comment xml:lang="sl">Datoteka barvne poprave CCMX</comment>
+@@ -39683,10 +41152,10 @@
+ <comment xml:lang="sv">CCMX-färgkorrigeringsfil</comment>
+ <comment xml:lang="tr">CCMX renk düzeltme dosyası</comment>
+ <comment xml:lang="uk">файл даних виправлення кольорів CCMX</comment>
+- <comment xml:lang="zh_CN">CCMX 色彩校准文件</comment>
+- <comment xml:lang="zh_TW">CCMX 色彩校正檔</comment>
++ <comment xml:lang="zh-CN">CCMX 色彩校准文件</comment>
++ <comment xml:lang="zh-TW">CCMX 色彩校正檔</comment>
+ <magic priority="50">
+- <match value="CCMX" type="string" offset="0"/>
++ <match type="string" value="CCMX" offset="0"/>
+ </magic>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-generic"/>
+@@ -39694,16 +41163,19 @@
+ </mime-type>
+ <mime-type type="application/winhlp">
+ <comment>WinHelp help file</comment>
++ <comment xml:lang="af">WinHelp-hulplêer</comment>
++ <comment xml:lang="bg">Помощен файл — WinHelp</comment>
+ <comment xml:lang="ca">fitxer d'ajuda WinHelp</comment>
+ <comment xml:lang="cs">soubor nápovědy WinHelp</comment>
+ <comment xml:lang="da">WinHelp-hjælpefil</comment>
+ <comment xml:lang="de">WinHelp-Hilfedatei</comment>
+ <comment xml:lang="el">Αρχείο βοήθειας WinHelp</comment>
+- <comment xml:lang="en_GB">WinHelp help file</comment>
++ <comment xml:lang="en-GB">WinHelp help file</comment>
+ <comment xml:lang="es">archivo de ayuda de WinHelp</comment>
+ <comment xml:lang="eu">WinHelp laguntza fitxategia</comment>
+ <comment xml:lang="fi">WinHelp-ohjetiedosto</comment>
+ <comment xml:lang="fr">fichier d'aide WinHelp</comment>
++ <comment xml:lang="fur">file di jutori WinHelp</comment>
+ <comment xml:lang="ga">comhad cabhrach WinHelp</comment>
+ <comment xml:lang="gl">Ficheiro de axuda WinHelp</comment>
+ <comment xml:lang="he">קובץ עזרה מסוג WinHelp</comment>
+@@ -39719,7 +41191,7 @@
+ <comment xml:lang="oc">fichièr d'ajuda WinHelp</comment>
+ <comment xml:lang="pl">Plik pomocy WinHelp</comment>
+ <comment xml:lang="pt">ficheiro de ajuda WinHelp</comment>
+- <comment xml:lang="pt_BR">Arquivo de ajuda WinHelp</comment>
++ <comment xml:lang="pt-BR">Arquivo de ajuda WinHelp</comment>
+ <comment xml:lang="ru">Файл справки WinHelp</comment>
+ <comment xml:lang="sk">Súbor Pomocníka WinHelp</comment>
+ <comment xml:lang="sl">Datoteka pomoči WinHelp</comment>
+@@ -39727,24 +41199,27 @@
+ <comment xml:lang="sv">WinHelp-hjälpfil</comment>
+ <comment xml:lang="tr">WinHelp yardım dosyası</comment>
+ <comment xml:lang="uk">файл довідки WinHelp</comment>
+- <comment xml:lang="zh_CN">WinHelp 帮助文件</comment>
+- <comment xml:lang="zh_TW">WinHelp 說明檔</comment>
++ <comment xml:lang="zh-CN">WinHelp 帮助文件</comment>
++ <comment xml:lang="zh-TW">WinHelp 說明檔</comment>
+ <magic priority="50">
+- <match value="0x00035f3f" type="little32" offset="0"/>
++ <match type="little32" value="0x00035f3f" offset="0"/>
+ </magic>
+ <glob pattern="*.hlp"/>
+ <alias type="zz-application/zz-winassoc-hlp"/>
+ </mime-type>
+ <mime-type type="application/x-bsdiff">
+ <comment>binary differences between files</comment>
++ <comment xml:lang="bg">двоична разлика между файлове</comment>
+ <comment xml:lang="ca">diferencies binàries entre fitxers</comment>
+ <comment xml:lang="cs">binární rozdíl mezi soubory</comment>
+ <comment xml:lang="da">binære forskelle mellem filer</comment>
+ <comment xml:lang="de">binäre Unterschiede zwischen Dateien</comment>
+- <comment xml:lang="en_GB">binary differences between files</comment>
++ <comment xml:lang="en-GB">binary differences between files</comment>
+ <comment xml:lang="es">diferencias entre archivos binarios</comment>
+ <comment xml:lang="eu">fitxategi binarioen arteko ezberdinstasunak</comment>
++ <comment xml:lang="fi">binaariset erot tiedostojen välillä</comment>
+ <comment xml:lang="fr">différences binaires entre fichiers</comment>
++ <comment xml:lang="fur">diferencis binariis tra file</comment>
+ <comment xml:lang="ga">difríochtaí dénártha idir comhaid</comment>
+ <comment xml:lang="he">הבדלים בינריים בין קבצים</comment>
+ <comment xml:lang="hr">Binarne razlike između datoteka</comment>
+@@ -39754,40 +41229,42 @@
+ <comment xml:lang="kk">файлдар арасындағы бинарлық айырмашылықтар</comment>
+ <comment xml:lang="ko">바이너리 차이 비교 파일</comment>
+ <comment xml:lang="pl">Binarna różnica pomiędzy plikami</comment>
+- <comment xml:lang="pt_BR">Diferenças binárias entre arquivos</comment>
++ <comment xml:lang="pt-BR">Diferenças binárias entre arquivos</comment>
+ <comment xml:lang="ru">Двоичные различия между файлами</comment>
+ <comment xml:lang="sk">Binárne rozdiely medzi súbormi</comment>
+ <comment xml:lang="sr">бинарне разлике датотека</comment>
+ <comment xml:lang="sv">binära skillnader mellan filer</comment>
+ <comment xml:lang="tr">dosyalar arasındaki ikilik farklar</comment>
+ <comment xml:lang="uk">двійкова різниця між файлами</comment>
+- <comment xml:lang="zh_CN">文件的二进制区别</comment>
+- <comment xml:lang="zh_TW">檔案間的二進位差異</comment>
++ <comment xml:lang="zh-CN">文件的二进制区别</comment>
++ <comment xml:lang="zh-TW">檔案間的二進位差異</comment>
+ <magic>
+- <match value="BSDIFF40" type="string" offset="0"/>
+- <match value="BSDIFN40" type="string" offset="0"/>
++ <match type="string" value="BSDIFF40" offset="0"/>
++ <match type="string" value="BSDIFN40" offset="0"/>
+ </magic>
+ <glob pattern="*.bsdiff"/>
+ </mime-type>
+
+-
++ <!-- Tree content-types -->
+ <mime-type type="x-content/image-dcf">
+-
++ <!-- http://en.wikipedia.org/wiki/Design_rule_for_Camera_File_system -->
+ <comment>digital photos</comment>
++ <comment xml:lang="af">digitale foto’s</comment>
+ <comment xml:lang="ar">الصور الرقمية</comment>
+- <comment xml:lang="be@latin">ličbavyja zdymki</comment>
++ <comment xml:lang="be-Latn">ličbavyja zdymki</comment>
+ <comment xml:lang="bg">Цифрови фотографии</comment>
+ <comment xml:lang="ca">fotos digitals</comment>
+ <comment xml:lang="cs">digitální fotografie</comment>
+ <comment xml:lang="da">digitale billeder</comment>
+ <comment xml:lang="de">Digitale Fotos</comment>
+ <comment xml:lang="el">Ψηφιακές φωτογραφίες</comment>
+- <comment xml:lang="en_GB">digital photos</comment>
++ <comment xml:lang="en-GB">digital photos</comment>
+ <comment xml:lang="es">fotos digitales</comment>
+ <comment xml:lang="eu">argazki digitalak</comment>
+ <comment xml:lang="fi">digivalokuvia</comment>
+ <comment xml:lang="fo">talgildar myndir</comment>
+ <comment xml:lang="fr">photos numériques</comment>
++ <comment xml:lang="fur">fotos digjitâls</comment>
+ <comment xml:lang="ga">grianghraif dhigiteacha</comment>
+ <comment xml:lang="gl">fotos dixitais</comment>
+ <comment xml:lang="he">תמונות דיגיטליות</comment>
+@@ -39806,7 +41283,7 @@
+ <comment xml:lang="oc">fòtos numericas</comment>
+ <comment xml:lang="pl">Zdjęcia cyfrowe</comment>
+ <comment xml:lang="pt">fotografias digitais</comment>
+- <comment xml:lang="pt_BR">Fotos digitais</comment>
++ <comment xml:lang="pt-BR">Fotos digitais</comment>
+ <comment xml:lang="ro">fotografii digitale</comment>
+ <comment xml:lang="ru">Цифровые фотографии</comment>
+ <comment xml:lang="sk">Digitálne fotografie</comment>
+@@ -39817,32 +41294,36 @@
+ <comment xml:lang="tr">sayısal fotoğraflar</comment>
+ <comment xml:lang="uk">цифрові фотографії</comment>
+ <comment xml:lang="vi">ảnh chụp số</comment>
+- <comment xml:lang="zh_CN">数字化图像</comment>
+- <comment xml:lang="zh_TW">數位相片</comment>
++ <comment xml:lang="zh-CN">数字化图像</comment>
++ <comment xml:lang="zh-TW">數位相片</comment>
+ <treemagic>
+- <treematch type="directory" path="dcim" non-empty="true"/>
++ <treematch path="dcim" type="directory" non-empty="true"/>
+ </treemagic>
+ </mime-type>
+
+ <mime-type type="x-content/video-vcd">
+-
++ <!-- TRANSLATORS: This is a brand-name, not a generic term. Please see
++ http://en.wikipedia.org/wiki/Video_CD
++ http://www.herongyang.com/CD-DVD/VCD-Movie-File-Directory-Structure.html -->
+ <comment>Video CD</comment>
++ <comment xml:lang="af">Video-CD</comment>
+ <comment xml:lang="ar">Video CD</comment>
+ <comment xml:lang="ast">CD de videu</comment>
+- <comment xml:lang="be@latin">Videa CD</comment>
++ <comment xml:lang="be-Latn">Videa CD</comment>
+ <comment xml:lang="bg">CD — видео</comment>
+ <comment xml:lang="ca">Video CD</comment>
+ <comment xml:lang="cs">Video CD</comment>
+ <comment xml:lang="da">Video-cd</comment>
+ <comment xml:lang="de">Video-CD</comment>
+ <comment xml:lang="el">Video CD</comment>
+- <comment xml:lang="en_GB">Video CD</comment>
++ <comment xml:lang="en-GB">Video CD</comment>
+ <comment xml:lang="eo">Video-KD</comment>
+ <comment xml:lang="es">Video CD</comment>
+ <comment xml:lang="eu">Bideo CDa</comment>
+ <comment xml:lang="fi">Video CD</comment>
+ <comment xml:lang="fo">Video CD</comment>
+ <comment xml:lang="fr">CD vidéo</comment>
++ <comment xml:lang="fur">Video CD</comment>
+ <comment xml:lang="ga">dlúthdhiosca físe</comment>
+ <comment xml:lang="gl">Video CD</comment>
+ <comment xml:lang="he">תקליטור וידאו</comment>
+@@ -39861,7 +41342,7 @@
+ <comment xml:lang="oc">CD vidèo</comment>
+ <comment xml:lang="pl">Video CD</comment>
+ <comment xml:lang="pt">Video CD</comment>
+- <comment xml:lang="pt_BR">CD de vídeo</comment>
++ <comment xml:lang="pt-BR">CD de vídeo</comment>
+ <comment xml:lang="ro">CD video</comment>
+ <comment xml:lang="ru">Видео CD</comment>
+ <comment xml:lang="sk">Video CD</comment>
+@@ -39872,32 +41353,36 @@
+ <comment xml:lang="tr">Video CD</comment>
+ <comment xml:lang="uk">Video CD</comment>
+ <comment xml:lang="vi">Đĩa CD ảnh động</comment>
+- <comment xml:lang="zh_CN">VCD</comment>
+- <comment xml:lang="zh_TW">Video CD</comment>
++ <comment xml:lang="zh-CN">VCD</comment>
++ <comment xml:lang="zh-TW">Video CD</comment>
+ <treemagic>
+- <treematch type="file" path="mpegav/AVSEQ01.DAT"/>
++ <treematch path="mpegav/AVSEQ01.DAT" type="file"/>
+ </treemagic>
+ </mime-type>
+
+ <mime-type type="x-content/video-svcd">
+-
++ <!-- TRANSLATORS: This is a brand-name, not a generic term. Please see
++ http://en.wikipedia.org/wiki/Super_Video_CD
++ http://everything2.com/index.pl?node_id=1009222 -->
+ <comment>Super Video CD</comment>
++ <comment xml:lang="af">Super Video-CD</comment>
+ <comment xml:lang="ar">Super Video CD</comment>
+ <comment xml:lang="ast">CD de Super Video</comment>
+- <comment xml:lang="be@latin">Super Video CD</comment>
++ <comment xml:lang="be-Latn">Super Video CD</comment>
+ <comment xml:lang="bg">CD — супер видео</comment>
+ <comment xml:lang="ca">Super Video CD</comment>
+ <comment xml:lang="cs">Super Video CD</comment>
+ <comment xml:lang="da">Super Video-cd</comment>
+ <comment xml:lang="de">Super-Video-CD</comment>
+ <comment xml:lang="el">Super Video CD</comment>
+- <comment xml:lang="en_GB">Super Video CD</comment>
++ <comment xml:lang="en-GB">Super Video CD</comment>
+ <comment xml:lang="eo">Super-Video-KD</comment>
+ <comment xml:lang="es">Super Video CD</comment>
+ <comment xml:lang="eu">Super Bideo CDa</comment>
+ <comment xml:lang="fi">Super Video CD</comment>
+ <comment xml:lang="fo">Super Video CD</comment>
+ <comment xml:lang="fr">Super VCD</comment>
++ <comment xml:lang="fur">Super Video CD</comment>
+ <comment xml:lang="ga">dlúthdhiosca Super Video</comment>
+ <comment xml:lang="gl">Super vídeo CD</comment>
+ <comment xml:lang="he">Super Video CD</comment>
+@@ -39916,7 +41401,7 @@
+ <comment xml:lang="oc">Super VCD</comment>
+ <comment xml:lang="pl">Super Video CD</comment>
+ <comment xml:lang="pt">Super Video CD</comment>
+- <comment xml:lang="pt_BR">CD de Super Vídeo (SVCD)</comment>
++ <comment xml:lang="pt-BR">CD de Super Vídeo (SVCD)</comment>
+ <comment xml:lang="ro">Super Video CD</comment>
+ <comment xml:lang="ru">Super Video CD</comment>
+ <comment xml:lang="sk">Super Video CD</comment>
+@@ -39927,32 +41412,34 @@
+ <comment xml:lang="tr">Super Video CD</comment>
+ <comment xml:lang="uk">Super Video CD</comment>
+ <comment xml:lang="vi">Đĩa CD siêu ảnh động</comment>
+- <comment xml:lang="zh_CN">SVCD</comment>
+- <comment xml:lang="zh_TW">Super Video CD</comment>
++ <comment xml:lang="zh-CN">SVCD</comment>
++ <comment xml:lang="zh-TW">Super Video CD</comment>
+ <treemagic>
+- <treematch type="file" path="MPEG2/AVSEQ01.MPG"/>
++ <treematch path="MPEG2/AVSEQ01.MPG" type="file"/>
+ </treemagic>
+ </mime-type>
+
+ <mime-type type="x-content/video-dvd">
+-
++ <!-- http://en.wikipedia.org/wiki/DVD-Video -->
+ <comment>video DVD</comment>
++ <comment xml:lang="af">video-DVD</comment>
+ <comment xml:lang="ar">DVD مرئي</comment>
+ <comment xml:lang="ast">DVD de videu</comment>
+- <comment xml:lang="be@latin">videa DVD</comment>
++ <comment xml:lang="be-Latn">videa DVD</comment>
+ <comment xml:lang="bg">DVD — видео</comment>
+- <comment xml:lang="ca">DVD-Video</comment>
++ <comment xml:lang="ca">DVD de video</comment>
+ <comment xml:lang="cs">videodisk DVD</comment>
+ <comment xml:lang="da">video-dvd</comment>
+ <comment xml:lang="de">Video-DVD</comment>
+ <comment xml:lang="el">Βίντεο DVD</comment>
+- <comment xml:lang="en_GB">video DVD</comment>
++ <comment xml:lang="en-GB">video DVD</comment>
+ <comment xml:lang="eo">video-DVD</comment>
+ <comment xml:lang="es">DVD de vídeo</comment>
+ <comment xml:lang="eu">bideo DVDa</comment>
+ <comment xml:lang="fi">video-DVD</comment>
+ <comment xml:lang="fo">video DVD</comment>
+ <comment xml:lang="fr">DVD vidéo</comment>
++ <comment xml:lang="fur">DVD video</comment>
+ <comment xml:lang="ga">DVD físe</comment>
+ <comment xml:lang="gl">DVD de vídeo</comment>
+ <comment xml:lang="he">DVD וידאו</comment>
+@@ -39972,7 +41459,7 @@
+ <comment xml:lang="oc">DVD vidèo</comment>
+ <comment xml:lang="pl">DVD-Video</comment>
+ <comment xml:lang="pt">DVD vídeo</comment>
+- <comment xml:lang="pt_BR">DVD de vídeo</comment>
++ <comment xml:lang="pt-BR">DVD de vídeo</comment>
+ <comment xml:lang="ro">DVD video</comment>
+ <comment xml:lang="ru">Видео DVD</comment>
+ <comment xml:lang="sk">DVD-Video</comment>
+@@ -39983,34 +41470,36 @@
+ <comment xml:lang="tr">video DVD</comment>
+ <comment xml:lang="uk">відео-DVD</comment>
+ <comment xml:lang="vi">đĩa DVD ảnh động</comment>
+- <comment xml:lang="zh_CN">视频 DVD</comment>
+- <comment xml:lang="zh_TW">視訊 DVD</comment>
++ <comment xml:lang="zh-CN">视频 DVD</comment>
++ <comment xml:lang="zh-TW">視訊 DVD</comment>
+ <treemagic>
+- <treematch type="file" path="VIDEO_TS/VIDEO_TS.IFO"/>
+- <treematch type="file" path="VIDEO_TS/VIDEO_TS.IFO;1"/>
+- <treematch type="file" path="VIDEO_TS.IFO"/>
+- <treematch type="file" path="VIDEO_TS.IFO;1"/>
++ <treematch path="VIDEO_TS/VIDEO_TS.IFO" type="file"/>
++ <treematch path="VIDEO_TS/VIDEO_TS.IFO;1" type="file"/>
++ <treematch path="VIDEO_TS.IFO" type="file"/>
++ <treematch path="VIDEO_TS.IFO;1" type="file"/>
+ </treemagic>
+ </mime-type>
+
+ <mime-type type="x-content/audio-cdda">
+-
++ <!-- http://en.wikipedia.org/wiki/Red_Book_(audio_CD_standard) -->
+ <comment>audio CD</comment>
++ <comment xml:lang="af">oudio-CD</comment>
+ <comment xml:lang="ar">CD سمعي</comment>
+- <comment xml:lang="be@latin">aŭdyjo CD</comment>
++ <comment xml:lang="be-Latn">aŭdyjo CD</comment>
+ <comment xml:lang="bg">CD — аудио</comment>
+ <comment xml:lang="ca">CD d'àudio</comment>
+ <comment xml:lang="cs">zvukové CD</comment>
+ <comment xml:lang="da">lyd-cd</comment>
+ <comment xml:lang="de">Audio-CD</comment>
+ <comment xml:lang="el">CD ήχου</comment>
+- <comment xml:lang="en_GB">audio CD</comment>
++ <comment xml:lang="en-GB">audio CD</comment>
+ <comment xml:lang="eo">Son-KD</comment>
+- <comment xml:lang="es">CD de sonido</comment>
++ <comment xml:lang="es">CD de audio</comment>
+ <comment xml:lang="eu">Audio CDa</comment>
+ <comment xml:lang="fi">ääni-CD</comment>
+ <comment xml:lang="fo">audio CD</comment>
+ <comment xml:lang="fr">CD audio</comment>
++ <comment xml:lang="fur">CD audio</comment>
+ <comment xml:lang="ga">dlúthdhiosca fuaime</comment>
+ <comment xml:lang="gl">CD de son</comment>
+ <comment xml:lang="he">תקליטור שמע</comment>
+@@ -40029,7 +41518,7 @@
+ <comment xml:lang="oc">CD àudio</comment>
+ <comment xml:lang="pl">CD-Audio</comment>
+ <comment xml:lang="pt">CD áudio</comment>
+- <comment xml:lang="pt_BR">CD de áudio</comment>
++ <comment xml:lang="pt-BR">CD de áudio</comment>
+ <comment xml:lang="ro">CD audio</comment>
+ <comment xml:lang="ru">Аудио CD</comment>
+ <comment xml:lang="sk">Zvukové CD</comment>
+@@ -40037,30 +41526,32 @@
+ <comment xml:lang="sq">CD audio</comment>
+ <comment xml:lang="sr">звучни ЦД</comment>
+ <comment xml:lang="sv">ljud-cd</comment>
+- <comment xml:lang="tr">Müzik CD'si</comment>
++ <comment xml:lang="tr">ses CD'si</comment>
+ <comment xml:lang="uk">звуковий CD</comment>
+ <comment xml:lang="vi">đĩa CD âm thanh</comment>
+- <comment xml:lang="zh_CN">音频 CD</comment>
+- <comment xml:lang="zh_TW">音訊 CD</comment>
++ <comment xml:lang="zh-CN">音频 CD</comment>
++ <comment xml:lang="zh-TW">音訊 CD</comment>
+ </mime-type>
+
+ <mime-type type="x-content/blank-cd">
+-
++ <!-- http://en.wikipedia.org/wiki/Compact_Disc -->
+ <comment>blank CD disc</comment>
++ <comment xml:lang="af">skoon CD-skyf</comment>
+ <comment xml:lang="ar">قرص CD فارغ</comment>
+- <comment xml:lang="be@latin">čysty dysk CD</comment>
++ <comment xml:lang="be-Latn">čysty dysk CD</comment>
+ <comment xml:lang="bg">CD — празно</comment>
+ <comment xml:lang="ca">disc CD en blanc</comment>
+ <comment xml:lang="cs">prázdný disk CD</comment>
+ <comment xml:lang="da">tom cd-disk</comment>
+ <comment xml:lang="de">Leere CD</comment>
+ <comment xml:lang="el">Κενό CD</comment>
+- <comment xml:lang="en_GB">blank CD disc</comment>
++ <comment xml:lang="en-GB">blank CD disc</comment>
+ <comment xml:lang="es">disco CD en blanco</comment>
+ <comment xml:lang="eu">CD disko hutsa</comment>
+ <comment xml:lang="fi">tyhjä CD-levy</comment>
+ <comment xml:lang="fo">blonk fløga</comment>
+ <comment xml:lang="fr">CD vierge</comment>
++ <comment xml:lang="fur">disc CD vueit</comment>
+ <comment xml:lang="ga">dlúthdhiosca folamh</comment>
+ <comment xml:lang="gl">disco de CD en brancho</comment>
+ <comment xml:lang="he">תקליטור ריק</comment>
+@@ -40079,7 +41570,7 @@
+ <comment xml:lang="oc">CD verge</comment>
+ <comment xml:lang="pl">Pusta płyta CD</comment>
+ <comment xml:lang="pt">CD vazio</comment>
+- <comment xml:lang="pt_BR">Disco CD vazio</comment>
++ <comment xml:lang="pt-BR">Disco CD vazio</comment>
+ <comment xml:lang="ro">disc gol CD</comment>
+ <comment xml:lang="ru">Чистый диск CD</comment>
+ <comment xml:lang="sk">Prázdny disk CD</comment>
+@@ -40090,27 +41581,29 @@
+ <comment xml:lang="tr">boş CD diski</comment>
+ <comment xml:lang="uk">порожній компакт-диск</comment>
+ <comment xml:lang="vi">đĩa CD trống</comment>
+- <comment xml:lang="zh_CN">空 CD 光盘</comment>
+- <comment xml:lang="zh_TW">空白 CD 光碟</comment>
++ <comment xml:lang="zh-CN">空 CD 光盘</comment>
++ <comment xml:lang="zh-TW">空白 CD 光碟</comment>
+ </mime-type>
+
+ <mime-type type="x-content/blank-dvd">
+-
++ <!-- http://en.wikipedia.org/wiki/DVD -->
+ <comment>blank DVD disc</comment>
++ <comment xml:lang="af">skoon DVD-skyf</comment>
+ <comment xml:lang="ar">قرص DVD فارغ</comment>
+- <comment xml:lang="be@latin">čysty dysk DVD</comment>
++ <comment xml:lang="be-Latn">čysty dysk DVD</comment>
+ <comment xml:lang="bg">DVD — празно</comment>
+ <comment xml:lang="ca">disc DVD en blanc</comment>
+ <comment xml:lang="cs">prázdný disk DVD</comment>
+ <comment xml:lang="da">tom dvd-disk</comment>
+ <comment xml:lang="de">Leere DVD</comment>
+ <comment xml:lang="el">Κενό DVD</comment>
+- <comment xml:lang="en_GB">blank DVD disc</comment>
++ <comment xml:lang="en-GB">blank DVD disc</comment>
+ <comment xml:lang="es">disco DVD en blanco</comment>
+ <comment xml:lang="eu">DVD disko hutsa</comment>
+ <comment xml:lang="fi">tyhjä DVD-levy</comment>
+ <comment xml:lang="fo">blonk margfløga</comment>
+ <comment xml:lang="fr">DVD vierge</comment>
++ <comment xml:lang="fur">disc DVD vueit</comment>
+ <comment xml:lang="ga">DVD folamh</comment>
+ <comment xml:lang="gl">disco de DVD en branco</comment>
+ <comment xml:lang="he">תקליטור DVD ריק</comment>
+@@ -40129,7 +41622,7 @@
+ <comment xml:lang="oc">DVD verge</comment>
+ <comment xml:lang="pl">Pusta płyta DVD</comment>
+ <comment xml:lang="pt">DVD vazio</comment>
+- <comment xml:lang="pt_BR">Disco DVD vazio</comment>
++ <comment xml:lang="pt-BR">Disco DVD vazio</comment>
+ <comment xml:lang="ro">disc gol DVD</comment>
+ <comment xml:lang="ru">Чистый диск DVD</comment>
+ <comment xml:lang="sk">Prázdny disk DVD</comment>
+@@ -40140,27 +41633,29 @@
+ <comment xml:lang="tr">boş DVD diski</comment>
+ <comment xml:lang="uk">порожній диск DVD</comment>
+ <comment xml:lang="vi">đĩa DVD trống</comment>
+- <comment xml:lang="zh_CN">空 DVD 光盘</comment>
+- <comment xml:lang="zh_TW">空白 DVD 光碟</comment>
++ <comment xml:lang="zh-CN">空 DVD 光盘</comment>
++ <comment xml:lang="zh-TW">空白 DVD 光碟</comment>
+ </mime-type>
+
+ <mime-type type="x-content/blank-bd">
+-
++ <!-- http://en.wikipedia.org/wiki/Blu-ray_Disc -->
+ <comment>blank Blu-ray disc</comment>
++ <comment xml:lang="af">skoon Blu-ray-skyf</comment>
+ <comment xml:lang="ar">قرص بلو-راي فارغ</comment>
+- <comment xml:lang="be@latin">čysty dysk Blu-ray</comment>
++ <comment xml:lang="be-Latn">čysty dysk Blu-ray</comment>
+ <comment xml:lang="bg">Blu-ray — празно</comment>
+ <comment xml:lang="ca">disc Blu-Ray en blanc</comment>
+ <comment xml:lang="cs">prázdný disk Blu-ray</comment>
+ <comment xml:lang="da">tom Blu-ray-disk</comment>
+ <comment xml:lang="de">Leere Blu-ray-Scheibe</comment>
+ <comment xml:lang="el">Κενό Blu-ray</comment>
+- <comment xml:lang="en_GB">blank Blu-ray disc</comment>
++ <comment xml:lang="en-GB">blank Blu-ray disc</comment>
+ <comment xml:lang="es">disco Blu-ray en blanco</comment>
+ <comment xml:lang="eu">Blu-ray disko hutsa</comment>
+ <comment xml:lang="fi">tyhjä Blu-ray-levy</comment>
+ <comment xml:lang="fo">blankur Blu-ray diskur</comment>
+ <comment xml:lang="fr">disque Blu-Ray vierge</comment>
++ <comment xml:lang="fur">disc Blu-ray vueit</comment>
+ <comment xml:lang="ga">diosca folamh Blu-Ray</comment>
+ <comment xml:lang="gl">disco Blu-ray en branco</comment>
+ <comment xml:lang="he">תקליטור בלו־ריי ריק</comment>
+@@ -40179,7 +41674,7 @@
+ <comment xml:lang="oc">disc Blu-Ray verge</comment>
+ <comment xml:lang="pl">Pusta płyta Blu-ray</comment>
+ <comment xml:lang="pt">Blu-Ray vazio</comment>
+- <comment xml:lang="pt_BR">Disco Blu-ray vazio</comment>
++ <comment xml:lang="pt-BR">Disco Blu-ray vazio</comment>
+ <comment xml:lang="ro">disc gol Blu-ray</comment>
+ <comment xml:lang="ru">Чистый диск Blu-ray</comment>
+ <comment xml:lang="sk">Prázdny disk Blu-ray</comment>
+@@ -40187,30 +41682,32 @@
+ <comment xml:lang="sq">Disk bosh Blu-ray</comment>
+ <comment xml:lang="sr">празан Блу-реј диск</comment>
+ <comment xml:lang="sv">tom Blu-ray-skiva</comment>
+- <comment xml:lang="tr">boş Blue-ray diski</comment>
++ <comment xml:lang="tr">boş Blu-ray diski</comment>
+ <comment xml:lang="uk">порожній диск Blu-ray</comment>
+ <comment xml:lang="vi">đĩa Blu-ray trống</comment>
+- <comment xml:lang="zh_CN">空蓝光 DVD</comment>
+- <comment xml:lang="zh_TW">空白 Blu-ray 光碟</comment>
++ <comment xml:lang="zh-CN">空蓝光 DVD</comment>
++ <comment xml:lang="zh-TW">空白 Blu-ray 光碟</comment>
+ </mime-type>
+
+ <mime-type type="x-content/blank-hddvd">
+-
++ <!-- http://en.wikipedia.org/wiki/HD_DVD -->
+ <comment>blank HD DVD disc</comment>
++ <comment xml:lang="af">skoon HD-DVD-skyf</comment>
+ <comment xml:lang="ar">قرص HD DVD فارغ</comment>
+- <comment xml:lang="be@latin">čysty dysk HD DVD</comment>
++ <comment xml:lang="be-Latn">čysty dysk HD DVD</comment>
+ <comment xml:lang="bg">HD DVD — празно</comment>
+ <comment xml:lang="ca">disc HD-DVD en blanc</comment>
+ <comment xml:lang="cs">prázdný disk HD DVD</comment>
+ <comment xml:lang="da">tom HD dvd-disk</comment>
+ <comment xml:lang="de">Leere HD-DVD</comment>
+ <comment xml:lang="el">Κενό HD DVD</comment>
+- <comment xml:lang="en_GB">blank HD DVD disc</comment>
++ <comment xml:lang="en-GB">blank HD DVD disc</comment>
+ <comment xml:lang="es">disco HD DVD en blanco</comment>
+ <comment xml:lang="eu">HD DVD disko hutsa</comment>
+ <comment xml:lang="fi">tyhjä HD DVD -levy</comment>
+ <comment xml:lang="fo">blankur HD DVD diskur</comment>
+ <comment xml:lang="fr">disque HD-DVD vierge</comment>
++ <comment xml:lang="fur">disc HD DVD vueit</comment>
+ <comment xml:lang="ga">HD DVD folamh</comment>
+ <comment xml:lang="gl">disco de HD DVD en branco</comment>
+ <comment xml:lang="he">דיסק HD DVD ריק</comment>
+@@ -40229,7 +41726,7 @@
+ <comment xml:lang="oc">disc HD-DVD verge</comment>
+ <comment xml:lang="pl">Pusta płyta HD DVD</comment>
+ <comment xml:lang="pt">HD DVD vazio</comment>
+- <comment xml:lang="pt_BR">Disco HD DVD vazio</comment>
++ <comment xml:lang="pt-BR">Disco HD DVD vazio</comment>
+ <comment xml:lang="ro">disc gol HD DVD</comment>
+ <comment xml:lang="ru">Чистый диск HD DVD</comment>
+ <comment xml:lang="sk">Prázdny disk HD DVD</comment>
+@@ -40240,28 +41737,30 @@
+ <comment xml:lang="tr">boş HD DVD diski</comment>
+ <comment xml:lang="uk">порожній диск HD DVD</comment>
+ <comment xml:lang="vi">đĩa DVD HD trống</comment>
+- <comment xml:lang="zh_CN">空 HD DVD 光盘</comment>
+- <comment xml:lang="zh_TW">空白 HD DVD 光碟</comment>
++ <comment xml:lang="zh-CN">空 HD DVD 光盘</comment>
++ <comment xml:lang="zh-TW">空白 HD DVD 光碟</comment>
+ </mime-type>
+
+ <mime-type type="x-content/audio-dvd">
+-
++ <!-- http://en.wikipedia.org/wiki/DVD-Audio -->
+ <comment>audio DVD</comment>
++ <comment xml:lang="af">oudio-DVD</comment>
+ <comment xml:lang="ar">DVD سمعي</comment>
+- <comment xml:lang="be@latin">aŭdyjo DVD</comment>
++ <comment xml:lang="be-Latn">aŭdyjo DVD</comment>
+ <comment xml:lang="bg">DVD — аудио</comment>
+ <comment xml:lang="ca">DVD d'àudio</comment>
+ <comment xml:lang="cs">zvukové DVD</comment>
+ <comment xml:lang="da">lyd-dvd</comment>
+ <comment xml:lang="de">Audio-DVD</comment>
+ <comment xml:lang="el">DVD ήχου</comment>
+- <comment xml:lang="en_GB">audio DVD</comment>
++ <comment xml:lang="en-GB">audio DVD</comment>
+ <comment xml:lang="eo">Son-DVD</comment>
+- <comment xml:lang="es">DVD de sonido</comment>
++ <comment xml:lang="es">DVD de audio</comment>
+ <comment xml:lang="eu">audio DVDa</comment>
+ <comment xml:lang="fi">ääni-DVD</comment>
+ <comment xml:lang="fo">Ljóð DVD</comment>
+ <comment xml:lang="fr">DVD audio</comment>
++ <comment xml:lang="fur">DVD audio</comment>
+ <comment xml:lang="ga">DVD fuaime</comment>
+ <comment xml:lang="gl">DVD de son</comment>
+ <comment xml:lang="he">DVD שמע</comment>
+@@ -40280,7 +41779,7 @@
+ <comment xml:lang="oc">DVD àudio</comment>
+ <comment xml:lang="pl">DVD-Audio</comment>
+ <comment xml:lang="pt">DVD áudio</comment>
+- <comment xml:lang="pt_BR">DVD de áudio</comment>
++ <comment xml:lang="pt-BR">DVD de áudio</comment>
+ <comment xml:lang="ro">DVD audio</comment>
+ <comment xml:lang="ru">Аудио DVD</comment>
+ <comment xml:lang="sk">Zvukové DVD</comment>
+@@ -40288,35 +41787,38 @@
+ <comment xml:lang="sq">DVD audio</comment>
+ <comment xml:lang="sr">звучни ДВД</comment>
+ <comment xml:lang="sv">ljud-dvd</comment>
+- <comment xml:lang="tr">Müzik DVD'si</comment>
++ <comment xml:lang="tr">ses DVD'si</comment>
+ <comment xml:lang="uk">звуковий DVD</comment>
+ <comment xml:lang="vi">đĩa DVD âm thanh</comment>
+- <comment xml:lang="zh_CN">音频 DVD</comment>
+- <comment xml:lang="zh_TW">音訊 DVD</comment>
++ <comment xml:lang="zh-CN">音频 DVD</comment>
++ <comment xml:lang="zh-TW">音訊 DVD</comment>
+ <treemagic>
+- <treematch type="file" path="AUDIO_TS/AUDIO_TS.IFO"/>
+- <treematch type="file" path="AUDIO_TS/AUDIO_TS.IFO;1"/>
++ <treematch path="AUDIO_TS/AUDIO_TS.IFO" type="file"/>
++ <treematch path="AUDIO_TS/AUDIO_TS.IFO;1" type="file"/>
+ </treemagic>
+ </mime-type>
+
+ <mime-type type="x-content/video-bluray">
+-
++ <!-- http://en.wikipedia.org/wiki/Blu-ray_Disc
++ http://www.blu-raydisc.com/Section-13470/Section-13890/Index.html -->
+ <comment>Blu-ray video disc</comment>
++ <comment xml:lang="af">Blu-ray-videoskyf</comment>
+ <comment xml:lang="ar">قرص بلو-راي مرئي</comment>
+ <comment xml:lang="ast">Discu Blu-ray de videu</comment>
+- <comment xml:lang="be@latin">Videadysk Blu-ray</comment>
++ <comment xml:lang="be-Latn">Videadysk Blu-ray</comment>
+ <comment xml:lang="bg">Blu-ray — видео</comment>
+ <comment xml:lang="ca">disc de vídeo Blu-Ray</comment>
+ <comment xml:lang="cs">videodisk Blu-ray</comment>
+- <comment xml:lang="da">Blu-ray video-disk</comment>
++ <comment xml:lang="da">Blu-ray-videodisk</comment>
+ <comment xml:lang="de">Blu-ray-Videoscheibe</comment>
+ <comment xml:lang="el">Δίσκος βίντεο Blu-ray</comment>
+- <comment xml:lang="en_GB">Blu-ray video disc</comment>
++ <comment xml:lang="en-GB">Blu-ray video disc</comment>
+ <comment xml:lang="es">disco de vídeo Blu-ray</comment>
+ <comment xml:lang="eu">Blu-ray bideo-diskoa</comment>
+ <comment xml:lang="fi">Blu-ray-videolevy</comment>
+ <comment xml:lang="fo">Blu-ray diskur</comment>
+ <comment xml:lang="fr">disque vidéo Blu-Ray</comment>
++ <comment xml:lang="fur">disc video Blu-ray</comment>
+ <comment xml:lang="ga">diosca físe Blu-Ray</comment>
+ <comment xml:lang="gl">disco de vídeo Blu-ray</comment>
+ <comment xml:lang="he">תקליטור וידאו מסוג בלו־ריי</comment>
+@@ -40336,7 +41838,7 @@
+ <comment xml:lang="oc">disc vidèo Blu-Ray</comment>
+ <comment xml:lang="pl">Płyta wideo Blu-ray</comment>
+ <comment xml:lang="pt">Blu-ray de vídeo</comment>
+- <comment xml:lang="pt_BR">Disco de vídeo Blu-ray</comment>
++ <comment xml:lang="pt-BR">Disco de vídeo Blu-ray</comment>
+ <comment xml:lang="ro">Disc video Blu-ray</comment>
+ <comment xml:lang="ru">Видеодиск Blu-ray</comment>
+ <comment xml:lang="sk">Videodisk Blu-ray</comment>
+@@ -40347,32 +41849,35 @@
+ <comment xml:lang="tr">Blu-ray video diski</comment>
+ <comment xml:lang="uk">відеодиск Blu-ray</comment>
+ <comment xml:lang="vi">Đĩa ảnh động Blu-ray</comment>
+- <comment xml:lang="zh_CN">蓝光视频光盘</comment>
+- <comment xml:lang="zh_TW">Blu-ray 視訊光碟</comment>
++ <comment xml:lang="zh-CN">蓝光视频光盘</comment>
++ <comment xml:lang="zh-TW">Blu-ray 視訊光碟</comment>
+ <treemagic>
+- <treematch type="directory" path="BDAV" non-empty="true"/>
+- <treematch type="directory" path="BDMV" non-empty="true"/>
++ <treematch path="BDAV" type="directory" non-empty="true"/>
++ <treematch path="BDMV" type="directory" non-empty="true"/>
+ </treemagic>
+ </mime-type>
+
+ <mime-type type="x-content/video-hddvd">
+-
++ <!-- http://en.wikipedia.org/wiki/HD_DVD
++ http://www.dvdafteredit.com/wiki/The_HVDVD_TS_Folder -->
+ <comment>HD DVD video disc</comment>
++ <comment xml:lang="af">HD-DVD-videoskyf</comment>
+ <comment xml:lang="ar">قرص HD DVD مرئي</comment>
+ <comment xml:lang="ast">Discu HD DVD de videu</comment>
+- <comment xml:lang="be@latin">Videadysk HD DVD</comment>
++ <comment xml:lang="be-Latn">Videadysk HD DVD</comment>
+ <comment xml:lang="bg">HD DVD — видео</comment>
+ <comment xml:lang="ca">disc de vídeo HD-DVD</comment>
+ <comment xml:lang="cs">Videodisk HD DVD</comment>
+ <comment xml:lang="da">HD DVD-videodisk</comment>
+ <comment xml:lang="de">HD-DVD-Videoscheibe</comment>
+ <comment xml:lang="el">Δίσκος βίντεο HD DVD</comment>
+- <comment xml:lang="en_GB">HD DVD video disc</comment>
++ <comment xml:lang="en-GB">HD DVD video disc</comment>
+ <comment xml:lang="es">disco de vídeo HD DVD</comment>
+ <comment xml:lang="eu">HD DVD bideo-diskoa</comment>
+ <comment xml:lang="fi">HD DVD -videolevy</comment>
+ <comment xml:lang="fo">HD DVD video diskur</comment>
+ <comment xml:lang="fr">disque vidéo HD DVD</comment>
++ <comment xml:lang="fur">disc video HD DVD</comment>
+ <comment xml:lang="ga">diosca físe HD DVD</comment>
+ <comment xml:lang="gl">disco de vídeo HD DVD</comment>
+ <comment xml:lang="he">תקליטור וידאו HD DVD</comment>
+@@ -40391,7 +41896,7 @@
+ <comment xml:lang="oc">disc vidèo HD DVD</comment>
+ <comment xml:lang="pl">Płyta wideo HD DVD</comment>
+ <comment xml:lang="pt">HD DVD de vídeo</comment>
+- <comment xml:lang="pt_BR">Disco de vídeo HD DVD</comment>
++ <comment xml:lang="pt-BR">Disco de vídeo HD DVD</comment>
+ <comment xml:lang="ro">Disc video HD DVD</comment>
+ <comment xml:lang="ru">Видеодиск HD DVD</comment>
+ <comment xml:lang="sk">Videodisk HD DVD</comment>
+@@ -40402,36 +41907,38 @@
+ <comment xml:lang="tr">HD DVD vidyo diski</comment>
+ <comment xml:lang="uk">відеодиск HD DVD</comment>
+ <comment xml:lang="vi">Đĩa ảnh động DVD HD</comment>
+- <comment xml:lang="zh_CN">HD DVD 视频光盘</comment>
+- <comment xml:lang="zh_TW">HD DVD 視訊光碟</comment>
++ <comment xml:lang="zh-CN">HD DVD 视频光盘</comment>
++ <comment xml:lang="zh-TW">HD DVD 視訊光碟</comment>
+ <treemagic>
+- <treematch type="file" path="HVDVD_TS/HV000I01.IFO"/>
+- <treematch type="file" path="HVDVD_TS/HV001I01.IFO"/>
+- <treematch type="file" path="HVDVD_TS/HVA00001.VTI"/>
++ <treematch path="HVDVD_TS/HV000I01.IFO" type="file"/>
++ <treematch path="HVDVD_TS/HV001I01.IFO" type="file"/>
++ <treematch path="HVDVD_TS/HVA00001.VTI" type="file"/>
+ </treemagic>
+ </mime-type>
+
+ <mime-type type="x-content/ebook-reader">
+-
++ <!-- see fd.o hal spec -->
+ <comment>e-book reader</comment>
++ <comment xml:lang="af">e-boekleser</comment>
+ <comment xml:lang="bg">Четец на е-книги</comment>
+ <comment xml:lang="ca">lector de llibres electrònics</comment>
+ <comment xml:lang="cs">čtečka elektronických knih</comment>
+ <comment xml:lang="da">e-bogslæser</comment>
+ <comment xml:lang="de">E-Book-Leser</comment>
+ <comment xml:lang="el">Αναγνώστης ηλεκτρονικών βιβλίων</comment>
+- <comment xml:lang="en_GB">e-book reader</comment>
++ <comment xml:lang="en-GB">e-book reader</comment>
+ <comment xml:lang="es">lector de libros electrónicos</comment>
+ <comment xml:lang="eu">e-book irakurlea</comment>
+ <comment xml:lang="fi">e-kirjan lukulaite</comment>
+ <comment xml:lang="fr">lecteur de livre numérique</comment>
++ <comment xml:lang="fur">letôr e-book</comment>
+ <comment xml:lang="ga">léitheoir r-leabhair</comment>
+ <comment xml:lang="gl">lector de libros electrónicos</comment>
+ <comment xml:lang="he">קורא ספרים אלקטרוניים</comment>
+ <comment xml:lang="hr">Čitač e-knjiga</comment>
+ <comment xml:lang="hu">e-könyvolvasó</comment>
+ <comment xml:lang="ia">Lector de libro electronic</comment>
+- <comment xml:lang="id">Pembaca e-book</comment>
++ <comment xml:lang="id">pembaca e-book</comment>
+ <comment xml:lang="it">Lettore e-book</comment>
+ <comment xml:lang="ja">電子書籍リーダー</comment>
+ <comment xml:lang="kk">электронды кітаптарды оқу құрылғысы</comment>
+@@ -40441,7 +41948,7 @@
+ <comment xml:lang="oc">lector de libre numeric</comment>
+ <comment xml:lang="pl">Czytnik e-booków</comment>
+ <comment xml:lang="pt">leitor de ebooks</comment>
+- <comment xml:lang="pt_BR">Leitor de e-book</comment>
++ <comment xml:lang="pt-BR">Leitor de e-book</comment>
+ <comment xml:lang="ru">Устройство для чтения электронных книг</comment>
+ <comment xml:lang="sk">Čítačka e-kníh</comment>
+ <comment xml:lang="sl">Bralnik elektronskih knjig</comment>
+@@ -40449,31 +41956,35 @@
+ <comment xml:lang="sv">e-bokläsare</comment>
+ <comment xml:lang="tr">e-kitap okuyucu</comment>
+ <comment xml:lang="uk">пристрій для читання електронних книг</comment>
+- <comment xml:lang="zh_CN">电子书阅读器</comment>
+- <comment xml:lang="zh_TW">e-book 閱讀器</comment>
++ <comment xml:lang="zh-CN">电子书阅读器</comment>
++ <comment xml:lang="zh-TW">e-book 閱讀器</comment>
+ <treemagic>
+- <treematch type="directory" path=".kobo" non-empty="true"/>
++ <treematch path=".kobo" type="directory" non-empty="true"/>
+ <treematch path="system/com.amazon.ebook.booklet.reader" non-empty="false"/>
+ </treemagic>
+ </mime-type>
+
+ <mime-type type="x-content/image-picturecd">
+-
++ <!-- TRANSLATORS: This is a brand-name, not a generic term. Please see
++ http://en.wikipedia.org/wiki/Picture_CD
++ http://www.re.org/kristin/picturecd.html -->
+ <comment>Picture CD</comment>
++ <comment xml:lang="af">Picture CD</comment>
+ <comment xml:lang="ar">Picture CD</comment>
+- <comment xml:lang="be@latin">Picture CD</comment>
+- <comment xml:lang="bg">CD — изображения</comment>
+- <comment xml:lang="ca">Picture CD</comment>
++ <comment xml:lang="be-Latn">Picture CD</comment>
++ <comment xml:lang="bg">Picture CD — изображения</comment>
++ <comment xml:lang="ca">CD d'imatges</comment>
+ <comment xml:lang="cs">Picture CD</comment>
+ <comment xml:lang="da">Billedcd</comment>
+ <comment xml:lang="de">Picture CD</comment>
+ <comment xml:lang="el">CD εικόνων</comment>
+- <comment xml:lang="en_GB">Picture CD</comment>
++ <comment xml:lang="en-GB">Picture CD</comment>
+ <comment xml:lang="es">Picture CD</comment>
+ <comment xml:lang="eu">Picture CD</comment>
+ <comment xml:lang="fi">Picture CD</comment>
+ <comment xml:lang="fo">Picture CD</comment>
+ <comment xml:lang="fr">CD Picture</comment>
++ <comment xml:lang="fur">Picture CD</comment>
+ <comment xml:lang="ga">dlúthdhiosca grianghraf</comment>
+ <comment xml:lang="gl">Picture CD</comment>
+ <comment xml:lang="he">תקליטור תמונות</comment>
+@@ -40492,7 +42003,7 @@
+ <comment xml:lang="oc">CD Picture</comment>
+ <comment xml:lang="pl">Picture CD</comment>
+ <comment xml:lang="pt">Picture CD</comment>
+- <comment xml:lang="pt_BR">CD de Fotos</comment>
++ <comment xml:lang="pt-BR">CD de Fotos</comment>
+ <comment xml:lang="ro">CD cu fotografii</comment>
+ <comment xml:lang="ru">Picture CD</comment>
+ <comment xml:lang="sk">Picture CD</comment>
+@@ -40503,30 +42014,32 @@
+ <comment xml:lang="tr">Resim CD'si</comment>
+ <comment xml:lang="uk">CD з зображеннями</comment>
+ <comment xml:lang="vi">Đĩa CD ảnh</comment>
+- <comment xml:lang="zh_CN">柯达 Picture CD</comment>
+- <comment xml:lang="zh_TW">圖片 CD</comment>
++ <comment xml:lang="zh-CN">柯达 Picture CD</comment>
++ <comment xml:lang="zh-TW">圖片 CD</comment>
+ <treemagic>
+- <treematch type="directory" path="PICTURES" non-empty="true" match-case="true"/>
++ <treematch path="PICTURES" type="directory" non-empty="true" match-case="true"/>
+ </treemagic>
+ </mime-type>
+
+ <mime-type type="x-content/audio-player">
+-
++ <!-- see fd.o hal spec -->
+ <comment>portable audio player</comment>
++ <comment xml:lang="af">draagbare oudiospeler</comment>
+ <comment xml:lang="ar">مشغل الملفات المسموعة المحمولة</comment>
+- <comment xml:lang="be@latin">pieranosny aŭdyjoplayer</comment>
++ <comment xml:lang="be-Latn">pieranosny aŭdyjoplayer</comment>
+ <comment xml:lang="bg">Преносим аудио плеър</comment>
+ <comment xml:lang="ca">reproductor d'àudio portàtil</comment>
+ <comment xml:lang="cs">přenosný zvukový přehrávač</comment>
+ <comment xml:lang="da">bærbar lydafspiller</comment>
+ <comment xml:lang="de">Portables Audio-Wiedergabegerät</comment>
+ <comment xml:lang="el">Φορητός αναπαραγωγέας μουσικής</comment>
+- <comment xml:lang="en_GB">portable audio player</comment>
+- <comment xml:lang="es">dispositivo de sonido portátil</comment>
++ <comment xml:lang="en-GB">portable audio player</comment>
++ <comment xml:lang="es">reproductor de audio portátil</comment>
+ <comment xml:lang="eu">audio erreproduzigailu eramangarria</comment>
+ <comment xml:lang="fi">siirrettävä äänisoitin</comment>
+ <comment xml:lang="fo">leysur ljóðavspælari</comment>
+ <comment xml:lang="fr">lecteur audio portable</comment>
++ <comment xml:lang="fur">riprodutôr audio portatil</comment>
+ <comment xml:lang="ga">seinnteoir iniompartha fuaime</comment>
+ <comment xml:lang="gl">dispositivo de son portábel</comment>
+ <comment xml:lang="he">נגן מוזיקה נייד</comment>
+@@ -40545,7 +42058,7 @@
+ <comment xml:lang="oc">lector àudio portable</comment>
+ <comment xml:lang="pl">Przenośny odtwarzacz dźwięku</comment>
+ <comment xml:lang="pt">reprodutor áudio portátil</comment>
+- <comment xml:lang="pt_BR">Reprodutor de áudio portátil</comment>
++ <comment xml:lang="pt-BR">Reprodutor de áudio portátil</comment>
+ <comment xml:lang="ro">player audio portabil</comment>
+ <comment xml:lang="ru">Портативный аудиопроигрыватель</comment>
+ <comment xml:lang="sk">Prenosný hudobný prehrávač</comment>
+@@ -40556,27 +42069,62 @@
+ <comment xml:lang="tr">taşınabilir ses oynatıcısı</comment>
+ <comment xml:lang="uk">портативний аудіопрогравач</comment>
+ <comment xml:lang="vi">bộ phát nhạc di động</comment>
+- <comment xml:lang="zh_CN">便携式音频播放器</comment>
+- <comment xml:lang="zh_TW">可攜式音訊播放程式</comment>
++ <comment xml:lang="zh-CN">便携式音频播放器</comment>
++ <comment xml:lang="zh-TW">可攜式音訊播放程式</comment>
++ </mime-type>
++
++ <mime-type type="x-content/ostree-repository">
++ <!-- https://github.com/ostreedev/ostree/blob/master/man/ostree-create-usb.xml -->
++ <comment>OSTree software updates</comment>
++ <comment xml:lang="bg">Обновление — OSTree</comment>
++ <comment xml:lang="ca">actualitzacions de programari OSTree</comment>
++ <comment xml:lang="da">OSTree-softwareopdateringer</comment>
++ <comment xml:lang="de">OSTree-Softwareaktualisierungen</comment>
++ <comment xml:lang="en-GB">OSTree software updates</comment>
++ <comment xml:lang="es">actualizaciones de programas de OSTree</comment>
++ <comment xml:lang="eu">OSTree software eguneraketak</comment>
++ <comment xml:lang="fi">OSTree-ohjelmistopäivitykset</comment>
++ <comment xml:lang="fr">mises à jour logicielles OSTree</comment>
++ <comment xml:lang="hr">OSTree nadopune softvera</comment>
++ <comment xml:lang="hu">OSTree szoftverfrissítések</comment>
++ <comment xml:lang="id">Pemutakhiran perangkat lunak OSTree</comment>
++ <comment xml:lang="it">Aggiornamenti software OSTree</comment>
++ <comment xml:lang="kk">OSTree бағдарламалық қамтама жаңартулары</comment>
++ <comment xml:lang="ko">OSTree 소프트웨어 업데이트</comment>
++ <comment xml:lang="pl">Aktualizacje oprogramowania OSTree</comment>
++ <comment xml:lang="pt-BR">Atualizações de software OSTree</comment>
++ <comment xml:lang="sv">OSTree programvaruuppdateringar</comment>
++ <comment xml:lang="tr">OSTree yazılım güncellemeleri</comment>
++ <comment xml:lang="uk">оновлення програмного забезпечення OSTree</comment>
++ <comment xml:lang="zh-CN">OSTree 软件更新</comment>
++ <comment xml:lang="zh-TW">OSTree 軟體更新</comment>
++ <treemagic>
++ <treematch path=".ostree" type="directory" non-empty="true" match-case="true"/>
++ <treematch path="ostree/repo" type="directory" non-empty="true" match-case="true"/>
++ <treematch path="var/lib/flatpak/repo" type="directory" non-empty="true" match-case="true"/>
++ </treemagic>
+ </mime-type>
+
+ <mime-type type="x-content/software">
+-
++ <!-- http://standards.freedesktop.org/autostart-spec/autostart-spec-latest.html
++ http://bugzilla.gnome.org/show_bug.cgi?id=509823#c3 -->
+ <comment>software</comment>
++ <comment xml:lang="af">sagteware</comment>
+ <comment xml:lang="ar">برنامج</comment>
+- <comment xml:lang="be@latin">prahrama</comment>
++ <comment xml:lang="be-Latn">prahrama</comment>
+ <comment xml:lang="bg">Софтуер</comment>
+ <comment xml:lang="ca">programari</comment>
+ <comment xml:lang="cs">software</comment>
+ <comment xml:lang="da">software</comment>
+ <comment xml:lang="de">Software</comment>
+ <comment xml:lang="el">Λογισμικό</comment>
+- <comment xml:lang="en_GB">software</comment>
++ <comment xml:lang="en-GB">software</comment>
+ <comment xml:lang="es">software</comment>
+ <comment xml:lang="eu">softwarea</comment>
+ <comment xml:lang="fi">ohjelmisto</comment>
+ <comment xml:lang="fo">ritbúnaður</comment>
+ <comment xml:lang="fr">logiciel</comment>
++ <comment xml:lang="fur">software</comment>
+ <comment xml:lang="ga">bogearraí</comment>
+ <comment xml:lang="gl">software</comment>
+ <comment xml:lang="he">תכנה</comment>
+@@ -40596,7 +42144,7 @@
+ <comment xml:lang="oc">logicial</comment>
+ <comment xml:lang="pl">Oprogramowanie</comment>
+ <comment xml:lang="pt">programa</comment>
+- <comment xml:lang="pt_BR">Aplicativo</comment>
++ <comment xml:lang="pt-BR">Aplicativo</comment>
+ <comment xml:lang="ro">software</comment>
+ <comment xml:lang="ru">Программное обеспечение</comment>
+ <comment xml:lang="sk">Softvér</comment>
+@@ -40607,26 +42155,29 @@
+ <comment xml:lang="tr">yazılım</comment>
+ <comment xml:lang="uk">програмне забезпечення</comment>
+ <comment xml:lang="vi">phần mềm</comment>
+- <comment xml:lang="zh_CN">软件</comment>
+- <comment xml:lang="zh_TW">軟體</comment>
++ <comment xml:lang="zh-CN">软件</comment>
++ <comment xml:lang="zh-TW">軟體</comment>
+ </mime-type>
+
+ <mime-type type="x-content/unix-software">
+-
++ <!-- http://standards.freedesktop.org/autostart-spec/autostart-spec-latest.html
++ http://bugzilla.gnome.org/show_bug.cgi?id=509823#c3 -->
+ <comment>UNIX software</comment>
++ <comment xml:lang="af">UNIX-sagteware</comment>
+ <comment xml:lang="ar">برنامج يونكس</comment>
+- <comment xml:lang="bg">Софтуер за UNIX</comment>
++ <comment xml:lang="bg">Софтуер — UNIX</comment>
+ <comment xml:lang="ca">programari d'UNIX</comment>
+ <comment xml:lang="cs">software systému UNIX</comment>
+ <comment xml:lang="da">UNIX-programmer</comment>
+ <comment xml:lang="de">UNIX-Software</comment>
+ <comment xml:lang="el">Λογισμικό UNIX</comment>
+- <comment xml:lang="en_GB">UNIX software</comment>
++ <comment xml:lang="en-GB">UNIX software</comment>
+ <comment xml:lang="es">software de UNIX</comment>
+ <comment xml:lang="eu">UNIXeko softwarea</comment>
+ <comment xml:lang="fi">UNIX-ohjelmisto</comment>
+ <comment xml:lang="fo">UNIX ritbúnaður</comment>
+ <comment xml:lang="fr">logiciel UNIX</comment>
++ <comment xml:lang="fur">software UNIX</comment>
+ <comment xml:lang="ga">bogearraí UNIX</comment>
+ <comment xml:lang="gl">Software de UNIX</comment>
+ <comment xml:lang="he">תכנה ל־UNIX</comment>
+@@ -40644,7 +42195,7 @@
+ <comment xml:lang="oc">logicial UNIX</comment>
+ <comment xml:lang="pl">Oprogramowanie systemu UNIX</comment>
+ <comment xml:lang="pt">programa UNIX</comment>
+- <comment xml:lang="pt_BR">Aplicativo UNIX</comment>
++ <comment xml:lang="pt-BR">Aplicativo UNIX</comment>
+ <comment xml:lang="ro">Software UNIX</comment>
+ <comment xml:lang="ru">Программа UNIX</comment>
+ <comment xml:lang="sk">Softvér UNIX</comment>
+@@ -40653,19 +42204,21 @@
+ <comment xml:lang="sv">UNIX-programvara</comment>
+ <comment xml:lang="tr">UNIX yazılımı</comment>
+ <comment xml:lang="uk">програмне забезпечення UNIX</comment>
+- <comment xml:lang="zh_CN">UNIX 软件</comment>
+- <comment xml:lang="zh_TW">UNIX 軟體</comment>
++ <comment xml:lang="zh-CN">UNIX 软件</comment>
++ <comment xml:lang="zh-TW">UNIX 軟體</comment>
+ <sub-class-of type="x-content/software"/>
+ <treemagic>
+- <treematch type="file" path=".autorun" match-case="true"/>
+- <treematch type="file" path="autorun" match-case="true"/>
+- <treematch type="file" path="autorun.sh" match-case="true"/>
++ <treematch path=".autorun" type="file" match-case="true"/>
++ <treematch path="autorun" type="file" match-case="true"/>
++ <treematch path="autorun.sh" type="file" match-case="true"/>
+ </treemagic>
+ </mime-type>
+
+ <mime-type type="x-content/win32-software">
+-
++ <!-- http://standards.freedesktop.org/autostart-spec/autostart-spec-latest.html
++ http://bugzilla.gnome.org/show_bug.cgi?id=509823#c3 -->
+ <comment>Windows software</comment>
++ <comment xml:lang="af">Windows-sagteware</comment>
+ <comment xml:lang="ar">برنامج ويندوز</comment>
+ <comment xml:lang="bg">Софтуер — Windows</comment>
+ <comment xml:lang="ca">programari de Windows</comment>
+@@ -40673,12 +42226,13 @@
+ <comment xml:lang="da">Windowsprogram</comment>
+ <comment xml:lang="de">Windows-Software</comment>
+ <comment xml:lang="el">Λογισμικό Windows</comment>
+- <comment xml:lang="en_GB">Windows software</comment>
++ <comment xml:lang="en-GB">Windows software</comment>
+ <comment xml:lang="es">software de Windows</comment>
+ <comment xml:lang="eu">Windows-eko softwarea</comment>
+ <comment xml:lang="fi">Windows-ohjelmisto</comment>
+ <comment xml:lang="fo">Windows ritbúnaður</comment>
+ <comment xml:lang="fr">logiciel Windows</comment>
++ <comment xml:lang="fur">software Windows</comment>
+ <comment xml:lang="ga">bogearraí Windows</comment>
+ <comment xml:lang="gl">Software de Windows</comment>
+ <comment xml:lang="he">תכנה ל־Windows</comment>
+@@ -40696,7 +42250,7 @@
+ <comment xml:lang="oc">logicial Windows</comment>
+ <comment xml:lang="pl">Oprogramowanie systemu Windows</comment>
+ <comment xml:lang="pt">programa Windows</comment>
+- <comment xml:lang="pt_BR">Programa do Windows</comment>
++ <comment xml:lang="pt-BR">Programa do Windows</comment>
+ <comment xml:lang="ro">Software Windows</comment>
+ <comment xml:lang="ru">Программа Windows</comment>
+ <comment xml:lang="sk">Softvér Windows</comment>
+@@ -40705,28 +42259,31 @@
+ <comment xml:lang="sv">Windows-program</comment>
+ <comment xml:lang="tr">Windows yazılımı</comment>
+ <comment xml:lang="uk">програмне забезпечення Windows</comment>
+- <comment xml:lang="zh_CN">Windows 软件</comment>
+- <comment xml:lang="zh_TW">Windows 軟體</comment>
++ <comment xml:lang="zh-CN">Windows 软件</comment>
++ <comment xml:lang="zh-TW">Windows 軟體</comment>
+ <sub-class-of type="x-content/software"/>
+ <treemagic>
+- <treematch type="file" path="autorun.exe" executable="true"/>
+- <treematch type="file" path="autorun.inf"/>
++ <treematch path="autorun.exe" type="file" executable="true"/>
++ <treematch path="autorun.inf" type="file"/>
+ </treemagic>
+ </mime-type>
+
+ <mime-type type="application/trig">
+ <comment>TriG RDF document</comment>
++ <comment xml:lang="af">TriG RDF-dokument</comment>
+ <comment xml:lang="ast">Documentu RDF TriG</comment>
++ <comment xml:lang="bg">Документ — TriG RDF</comment>
+ <comment xml:lang="ca">document TriG RDF</comment>
+ <comment xml:lang="cs">dokument Trig RDF</comment>
+ <comment xml:lang="da">TriG RDF-dokument</comment>
+ <comment xml:lang="de">TriG-RDF-Dokument</comment>
+ <comment xml:lang="el">Έγγραφο TriG RDF</comment>
+- <comment xml:lang="en_GB">TriG RDF document</comment>
++ <comment xml:lang="en-GB">TriG RDF document</comment>
+ <comment xml:lang="es">documento RDF de TriG</comment>
+ <comment xml:lang="eu">TriG RDF dokumentua</comment>
+ <comment xml:lang="fi">TriG RDF -asiakirja</comment>
+ <comment xml:lang="fr">document RDF TriG</comment>
++ <comment xml:lang="fur">document TriG RDF</comment>
+ <comment xml:lang="ga">cáipéis RDF TriG</comment>
+ <comment xml:lang="gl">Documento RDF TriG</comment>
+ <comment xml:lang="he">מסמך RDF של TriG</comment>
+@@ -40740,7 +42297,7 @@
+ <comment xml:lang="oc">document RDF TriG</comment>
+ <comment xml:lang="pl">Dokument RDF TriG</comment>
+ <comment xml:lang="pt">documento TriG RDF</comment>
+- <comment xml:lang="pt_BR">Documento RDF do TriG</comment>
++ <comment xml:lang="pt-BR">Documento RDF do TriG</comment>
+ <comment xml:lang="ru">Документ TriG RDF</comment>
+ <comment xml:lang="sk">RDF dokument TriG</comment>
+ <comment xml:lang="sl">Dokument TriG RDF</comment>
+@@ -40748,8 +42305,8 @@
+ <comment xml:lang="sv">TriG RDF-dokument</comment>
+ <comment xml:lang="tr">TriG RDF belgesi</comment>
+ <comment xml:lang="uk">документ RDF TriG</comment>
+- <comment xml:lang="zh_CN">TriG RDF 文档</comment>
+- <comment xml:lang="zh_TW">TriG RDF 文件</comment>
++ <comment xml:lang="zh-CN">TriG RDF 文档</comment>
++ <comment xml:lang="zh-TW">TriG RDF 文件</comment>
+ <acronym>TriG</acronym>
+ <expanded-acronym>TriG RDF Graph Triple Language</expanded-acronym>
+ <sub-class-of type="text/plain"/>
+@@ -40757,18 +42314,21 @@
+ <alias type="application/x-trig"/>
+ </mime-type>
+
+- <mime-type type="application/x-iwork-keynote-sffkey">
++ <mime-type type="application/vnd.apple.keynote">
+ <comment>Apple Keynote 5 presentation</comment>
+- <comment xml:lang="ca">presentació Keynote 5 d'Apple</comment>
++ <comment xml:lang="af">Apple Keynote 5-voorlegging</comment>
++ <comment xml:lang="bg">Презентация — Apple Keynote 5</comment>
++ <comment xml:lang="ca">presentació d'Apple Keynote 5</comment>
+ <comment xml:lang="cs">prezentace Apple Keynote 5</comment>
+ <comment xml:lang="da">Apple Keynote 5-præsentation</comment>
+ <comment xml:lang="de">Apple-Keynote-5-Präsentation</comment>
+ <comment xml:lang="el">Παρουσίαση Apple Keynote 5</comment>
+- <comment xml:lang="en_GB">Apple Keynote 5 presentation</comment>
++ <comment xml:lang="en-GB">Apple Keynote 5 presentation</comment>
+ <comment xml:lang="es">presentación de Apple Keynote 5</comment>
+ <comment xml:lang="eu">Apple Keynote 5 aurkezpena</comment>
+ <comment xml:lang="fi">Apple Keynote 5 -esitys</comment>
+ <comment xml:lang="fr">présentation Apple Keynote 5</comment>
++ <comment xml:lang="fur">presentazion Apple Keynote 5</comment>
+ <comment xml:lang="ga">láithreoireacht Apple Keynote 5</comment>
+ <comment xml:lang="gl">Presentación de Apple Keynote 5</comment>
+ <comment xml:lang="he">מצגת Apple Keynote 5</comment>
+@@ -40782,7 +42342,7 @@
+ <comment xml:lang="oc">presentacion Apple Keynote 5</comment>
+ <comment xml:lang="pl">Prezentacja Apple Keynote 5</comment>
+ <comment xml:lang="pt">apresentação Apple Keynote 5</comment>
+- <comment xml:lang="pt_BR">Apresentação do Apple Keynote 5</comment>
++ <comment xml:lang="pt-BR">Apresentação do Apple Keynote 5</comment>
+ <comment xml:lang="ru">Презентация Apple Keynote 5</comment>
+ <comment xml:lang="sk">Prezentácia Apple Keynote 5</comment>
+ <comment xml:lang="sl">Predstavitev Apple Keynote 5</comment>
+@@ -40790,54 +42350,45 @@
+ <comment xml:lang="sv">Apple Keynote 5-presentation</comment>
+ <comment xml:lang="tr">Apple Keynote 5 sunumu</comment>
+ <comment xml:lang="uk">презентація Apple Keynote 5</comment>
+- <comment xml:lang="zh_CN">Apple Keynote 5 演示文稿</comment>
+- <comment xml:lang="zh_TW">Apple Keynote 5 簡報</comment>
++ <comment xml:lang="zh-CN">Apple Keynote 5 演示文稿</comment>
++ <comment xml:lang="zh-TW">Apple Keynote 5 簡報</comment>
+ <sub-class-of type="application/zip"/>
+ <generic-icon name="x-office-presentation"/>
+ <magic priority="70">
+- <match value="PK\003\004" type="string" offset="0">
+- <match value="index.apxl" type="string" offset="30"/>
++ <match type="string" value="PK\003\004" offset="0">
++ <match type="string" value="index.apxl" offset="30"/>
+ </match>
+ </magic>
+- <glob pattern="*.key"/>
+- <alias type="application/vnd.apple.keynote"/>
++ <glob pattern="*.key" weight="80"/>
++ <alias type="application/x-iwork-keynote-sffkey"/>
+ </mime-type>
+
+ <mime-type type="application/x-pagemaker">
+- <comment>Adobe PageMaker</comment>
+- <comment xml:lang="ca">Adobe PageMaker</comment>
+- <comment xml:lang="cs">Adobe PageMaker</comment>
+- <comment xml:lang="da">Adobe PageMaker</comment>
+- <comment xml:lang="de">Adobe PageMaker</comment>
+- <comment xml:lang="el">Adobe PageMaker</comment>
+- <comment xml:lang="en_GB">Adobe PageMaker</comment>
+- <comment xml:lang="es">Adobe PageMaker</comment>
+- <comment xml:lang="eu">Adobe PageMaker</comment>
+- <comment xml:lang="fi">Adobe PageMaker</comment>
+- <comment xml:lang="fr">Adobe PageMaker</comment>
+- <comment xml:lang="ga">Adobe PageMaker</comment>
+- <comment xml:lang="gl">Adobe PageMaker</comment>
+- <comment xml:lang="he">Adobe PageMaker</comment>
+- <comment xml:lang="hr">Adobe PageMaker</comment>
+- <comment xml:lang="hu">Adobe PageMaker</comment>
+- <comment xml:lang="ia">Adobe PageMaker</comment>
+- <comment xml:lang="id">Adobe PageMaker</comment>
+- <comment xml:lang="it">Adobe PageMaker</comment>
+- <comment xml:lang="kk">Adobe PageMaker</comment>
+- <comment xml:lang="ko">Adobe 페이지메이커</comment>
+- <comment xml:lang="oc">Adobe PageMaker</comment>
+- <comment xml:lang="pl">Adobe PageMaker</comment>
+- <comment xml:lang="pt">Adobe PageMaker</comment>
+- <comment xml:lang="pt_BR">Adobe PageMaker</comment>
+- <comment xml:lang="ru">Adobe PageMaker</comment>
+- <comment xml:lang="sk">Adobe PageMaker</comment>
+- <comment xml:lang="sl">Dokument Adobe PageMaker</comment>
+- <comment xml:lang="sr">Адобе Пејџ Мејкер</comment>
+- <comment xml:lang="sv">Adobe PageMaker</comment>
+- <comment xml:lang="tr">Adobe PageMaker</comment>
+- <comment xml:lang="uk">Adobe PageMaker</comment>
+- <comment xml:lang="zh_CN">Adobe PageMaker</comment>
+- <comment xml:lang="zh_TW">Adobe PageMaker</comment>
++ <comment>Adobe PageMaker document</comment>
++ <comment xml:lang="bg">Документ — Adobe PageMaker</comment>
++ <comment xml:lang="ca">document d'Adobe PageMaker</comment>
++ <comment xml:lang="da">Adobe PageMaker-dokument</comment>
++ <comment xml:lang="de">Adobe-PageMaker-Dokument</comment>
++ <comment xml:lang="en-GB">Adobe PageMaker document</comment>
++ <comment xml:lang="es">documento de Adobe PageMaker</comment>
++ <comment xml:lang="eu">Adobe PageMaker dokumentua</comment>
++ <comment xml:lang="fi">Adobe PageMaker -asiakirja</comment>
++ <comment xml:lang="fr">document Adobe PageMaker</comment>
++ <comment xml:lang="hr">Adobe PageMaker dokument</comment>
++ <comment xml:lang="hu">Adobe PageMaker dokumentum</comment>
++ <comment xml:lang="id">Dokume Adobe PageMaker</comment>
++ <comment xml:lang="it">Documento Adobe PageMaker</comment>
++ <comment xml:lang="kk">Adobe PageMaker құжаты</comment>
++ <comment xml:lang="ko">어도비 페이지메이커 문서</comment>
++ <comment xml:lang="pl">Dokument Adobe PageMaker</comment>
++ <comment xml:lang="pt-BR">Documento do Adobe PageMaker</comment>
++ <comment xml:lang="ru">Документ Adobe PageMaker</comment>
++ <comment xml:lang="sk">Dokument Adobe PageMaker</comment>
++ <comment xml:lang="sv">Adobe PageMaker-dokument</comment>
++ <comment xml:lang="tr">Adobe PageMaker belgesi</comment>
++ <comment xml:lang="uk">документ Adobe PageMaker</comment>
++ <comment xml:lang="zh-CN">Adobe PageMaker 文档</comment>
++ <comment xml:lang="zh-TW">Adobe PageMaker 文件</comment>
+ <sub-class-of type="application/x-ole-storage"/>
+ <generic-icon name="x-office-document"/>
+ <glob pattern="*.p65"/>
+@@ -40847,56 +42398,55 @@
+ </mime-type>
+
+ <mime-type type="application/x-doom-wad">
+- <comment>Doom WAD</comment>
+- <comment xml:lang="ca">WAD de Doom</comment>
+- <comment xml:lang="cs">datový balík WAD hry Doom</comment>
+- <comment xml:lang="da">Doom WAD</comment>
+- <comment xml:lang="de">Doom WAD</comment>
+- <comment xml:lang="en_GB">Doom WAD</comment>
+- <comment xml:lang="es">WAD de Doom</comment>
+- <comment xml:lang="eu">Doom WAD</comment>
+- <comment xml:lang="fr">WAD Doom</comment>
+- <comment xml:lang="ga">WAD Doom</comment>
+- <comment xml:lang="hr">Doom WAD</comment>
+- <comment xml:lang="hu">Doom WAD</comment>
+- <comment xml:lang="ia">WAD pro Doom</comment>
+- <comment xml:lang="id">WAD Doom</comment>
+- <comment xml:lang="it">WAD Doom</comment>
+- <comment xml:lang="kk">Doom WAD</comment>
+- <comment xml:lang="ko">둠 WAD</comment>
++ <comment>Doom WAD file</comment>
++ <comment xml:lang="bg">Ниво — Doom</comment>
++ <comment xml:lang="ca">fitxer WAD de Doom</comment>
++ <comment xml:lang="da">Doom WAD-fil</comment>
++ <comment xml:lang="de">Doom-WAD-Datei</comment>
++ <comment xml:lang="en-GB">Doom WAD file</comment>
++ <comment xml:lang="es">archivo WAD de Doom</comment>
++ <comment xml:lang="eu">Doom WAD fitxategia</comment>
++ <comment xml:lang="fi">Doom WAD -tiedosto</comment>
++ <comment xml:lang="fr">fichier Doom WAD</comment>
++ <comment xml:lang="hr">Doom WAD datoteka</comment>
++ <comment xml:lang="hu">Doom WAD fájl</comment>
++ <comment xml:lang="id">Berkas WAD Doom</comment>
++ <comment xml:lang="it">File WAD Doom</comment>
++ <comment xml:lang="kk">Doom WAD файлы</comment>
++ <comment xml:lang="ko">둠 WAD 파일</comment>
+ <comment xml:lang="pl">Plik WAD gry Doom</comment>
+- <comment xml:lang="pt">Doom WAD</comment>
+- <comment xml:lang="pt_BR">Doom WAD</comment>
+- <comment xml:lang="ru">WAD Doom</comment>
+- <comment xml:lang="sk">Doom WAD</comment>
+- <comment xml:lang="sr">Дум ВАД</comment>
+- <comment xml:lang="sv">Doom-WAD</comment>
+- <comment xml:lang="tr">Doom WAD</comment>
+- <comment xml:lang="uk">WAD Doom</comment>
+- <comment xml:lang="zh_CN">Doom WAD</comment>
+- <comment xml:lang="zh_TW">Doom WAD</comment>
++ <comment xml:lang="pt-BR">Arquivo Doom WAD</comment>
++ <comment xml:lang="ru">Файл Doom WAD</comment>
++ <comment xml:lang="sv">Doom WAD-fil</comment>
++ <comment xml:lang="tr">Doom WAD dosyası</comment>
++ <comment xml:lang="uk">файл WAD Doom</comment>
++ <comment xml:lang="zh-CN">Doom WAD 文件</comment>
++ <comment xml:lang="zh-TW">Doom WAD 檔</comment>
+ <acronym>WAD</acronym>
+ <expanded-acronym>Where's All the Data</expanded-acronym>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="50">
+- <match value="IWAD" type="string" offset="0"/>
+- <match value="PWAD" type="string" offset="0"/>
++ <match type="string" value="IWAD" offset="0"/>
++ <match type="string" value="PWAD" offset="0"/>
+ </magic>
+- <glob weight="80" pattern="*.wad"/>
++ <glob pattern="*.wad" weight="80"/>
+ </mime-type>
+
+ <mime-type type="application/x-amiga-disk-format">
+ <comment>Amiga disk image</comment>
++ <comment xml:lang="af">Amiga-skyfbeeldlêer</comment>
++ <comment xml:lang="bg">Диск — Amiga</comment>
+ <comment xml:lang="ca">imatge de disc d'Amiga</comment>
+ <comment xml:lang="cs">obraz disku pro Amigu</comment>
+ <comment xml:lang="da">Amiga-diskaftryk</comment>
+ <comment xml:lang="de">Amiga-Datenträgerabbild</comment>
+ <comment xml:lang="el">Εικόνα δίσκου Amiga</comment>
+- <comment xml:lang="en_GB">Amiga disk image</comment>
++ <comment xml:lang="en-GB">Amiga disk image</comment>
+ <comment xml:lang="es">imagen de disco de Amiga</comment>
+ <comment xml:lang="eu">Amiga disko irudia</comment>
+ <comment xml:lang="fi">Amiga-levytiedosto</comment>
+ <comment xml:lang="fr">image disque Amiga</comment>
++ <comment xml:lang="fur">imagjin disc Amiga</comment>
+ <comment xml:lang="ga">íomhá diosca Amiga</comment>
+ <comment xml:lang="he">דמות כונן Amiga</comment>
+ <comment xml:lang="hr">Amiga slika diska</comment>
+@@ -40909,54 +42459,57 @@
+ <comment xml:lang="oc">imatge disc Amiga</comment>
+ <comment xml:lang="pl">Obraz dysku Amiga</comment>
+ <comment xml:lang="pt">imagem de disco Amiga</comment>
+- <comment xml:lang="pt_BR">Imagem de disco Amiga</comment>
++ <comment xml:lang="pt-BR">Imagem de disco Amiga</comment>
+ <comment xml:lang="ru">Образ диска Amiga</comment>
+ <comment xml:lang="sk">Obraz disku Amiga</comment>
+ <comment xml:lang="sr">слика диска Амиге</comment>
+ <comment xml:lang="sv">Amiga-diskavbild</comment>
+- <comment xml:lang="tr">Amiga disk kalıbı</comment>
++ <comment xml:lang="tr">Amiga disk görüntüsü</comment>
+ <comment xml:lang="uk">образ диска Amiga</comment>
+- <comment xml:lang="zh_CN">Amiga 磁盘映像</comment>
+- <comment xml:lang="zh_TW">Amiga 磁碟映像檔</comment>
++ <comment xml:lang="zh-CN">Amiga 磁盘映像</comment>
++ <comment xml:lang="zh-TW">Amiga 磁碟映像檔</comment>
+ <magic priority="50">
+- <match value="DOS\x00" type="string" offset="0"/>
++ <match type="string" value="DOS\x00" offset="0"/>
+ </magic>
+ <glob pattern="*.adf"/>
+ </mime-type>
+
+ <mime-type type="application/vnd.flatpak">
+ <comment>Flatpak application bundle</comment>
++ <comment xml:lang="af">Flatpak-toepassingsbundel</comment>
++ <comment xml:lang="bg">Програмен пакет — Flatpak</comment>
+ <comment xml:lang="ca">paquet d'aplicació Flatpak</comment>
+ <comment xml:lang="cs">balíček Flatpak s aplikací</comment>
+ <comment xml:lang="da">Flatpak-programsamling</comment>
+ <comment xml:lang="de">Flatpak-Anwendungspaket</comment>
+- <comment xml:lang="en_GB">Flatpak application bundle</comment>
++ <comment xml:lang="en-GB">Flatpak application bundle</comment>
+ <comment xml:lang="es">paquete de aplicación Flatpak</comment>
+ <comment xml:lang="eu">Flatpak aplikazio bilduma</comment>
+ <comment xml:lang="fi">Flatpak-sovelluspaketti</comment>
+ <comment xml:lang="fr">lot applicatif Flatpak</comment>
++ <comment xml:lang="fur">côl di aplicazions Flatpak</comment>
+ <comment xml:lang="ga">burla feidhmchláir Flatpak</comment>
+ <comment xml:lang="he">חבילת יישומי Flatpak</comment>
+ <comment xml:lang="hr">Flatpak paket aplikacije</comment>
+ <comment xml:lang="hu">Flatpak alkalmazáscsomag</comment>
+- <comment xml:lang="id">bundel aplikasi Flatpak</comment>
++ <comment xml:lang="id">Bundel aplikasi Flatpak</comment>
+ <comment xml:lang="it">Bundle applicazione Flatpak</comment>
+ <comment xml:lang="kk">Flatpak қолданбалар дестесі</comment>
+ <comment xml:lang="ko">Flatpak 프로그램 번들</comment>
+ <comment xml:lang="pl">Pakiet programu Flatpak</comment>
+- <comment xml:lang="pt_BR">Pacote de aplicativo Flatpak</comment>
++ <comment xml:lang="pt-BR">Pacote de aplicativo Flatpak</comment>
+ <comment xml:lang="ru">Пакет приложения Flatpak</comment>
+ <comment xml:lang="sk">Balík aplikácií Flatpak</comment>
+ <comment xml:lang="sr">скуп програма Флатпака</comment>
+ <comment xml:lang="sv">Flatpak-programbunt</comment>
+ <comment xml:lang="tr">Flatpak uygulama paketi</comment>
+ <comment xml:lang="uk">пакунок із програмами Flatpak</comment>
+- <comment xml:lang="zh_CN">Flatpak 应用组合包</comment>
+- <comment xml:lang="zh_TW">Flatpak 應用程式套組</comment>
++ <comment xml:lang="zh-CN">Flatpak 应用组合包</comment>
++ <comment xml:lang="zh-TW">Flatpak 應用程式套組</comment>
+ <generic-icon name="package-x-generic"/>
+ <magic priority="50">
+- <match value="xdg-app\x00\x01\x00\x89\xe5" type="string" offset="0"/>
+- <match value="flatpak\x00\x01\x00\x89\xe5" type="string" offset="0"/>
++ <match type="string" value="xdg-app\x00\x01\x00\x89\xe5" offset="0"/>
++ <match type="string" value="flatpak\x00\x01\x00\x89\xe5" offset="0"/>
+ </magic>
+ <glob pattern="*.flatpak"/>
+ <glob pattern="*.xdgapp"/>
+@@ -40965,142 +42518,148 @@
+
+ <mime-type type="application/vnd.flatpak.repo">
+ <comment>Flatpak repository description</comment>
++ <comment xml:lang="bg">Описание на хранилище — Flatpak</comment>
+ <comment xml:lang="ca">descripció de dipòsit de Flatpak</comment>
+ <comment xml:lang="cs">popis repozitáře Flatpak</comment>
+ <comment xml:lang="da">Flatpak-arkivbeskrivelse</comment>
+ <comment xml:lang="de">Flatpak-Repositoriumsbeschreibung</comment>
+- <comment xml:lang="en_GB">Flatpak repository description</comment>
++ <comment xml:lang="en-GB">Flatpak repository description</comment>
+ <comment xml:lang="es">descripción de repositorio de Flatpak</comment>
+ <comment xml:lang="eu">Flatpak biltegi deskribapena</comment>
+ <comment xml:lang="fi">Flatpak-ohjelmistolähdekuvaus</comment>
+ <comment xml:lang="fr">description de dépôt Flatpak</comment>
++ <comment xml:lang="fur">descrizion dipuesit Flatpak</comment>
+ <comment xml:lang="ga">cur síos ar stórlann Flatpak</comment>
+ <comment xml:lang="he">תיאור מאגר Flatpak</comment>
+ <comment xml:lang="hr">Flatpak opis repozitorija</comment>
+ <comment xml:lang="hu">Flatpak tárolóleírás</comment>
+- <comment xml:lang="id">deskripsi repositori Flatpak</comment>
++ <comment xml:lang="id">Deskripsi repositori Flatpak</comment>
+ <comment xml:lang="it">Descrizione repository Flatpack</comment>
+ <comment xml:lang="kk">Flatpak репозиторийі сипаттамасы</comment>
+ <comment xml:lang="ko">Flatpak 저장소 디스크립션</comment>
+ <comment xml:lang="pl">Opis repozytorium Flatpak</comment>
+- <comment xml:lang="pt_BR">Descrição de repositório Flatpak</comment>
++ <comment xml:lang="pt-BR">Descrição de repositório Flatpak</comment>
+ <comment xml:lang="ru">Описание репозитория Flatpak</comment>
+ <comment xml:lang="sk">Popis repozitára Flatpak</comment>
+ <comment xml:lang="sr">опис ризнице Флатпака</comment>
+ <comment xml:lang="sv">Flatpak-förrådsbeskrivning</comment>
+ <comment xml:lang="tr">Flatpak depo açıklaması</comment>
+ <comment xml:lang="uk">опис сховища Flatpak</comment>
+- <comment xml:lang="zh_CN">Flatpak 软件库描述</comment>
+- <comment xml:lang="zh_TW">Flatpak 軟體庫描述</comment>
++ <comment xml:lang="zh-CN">Flatpak 软件库描述</comment>
++ <comment xml:lang="zh-TW">Flatpak 軟體庫描述</comment>
+ <generic-icon name="package-x-generic"/>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="[Flatpak Repo]" type="string" offset="0:256"/>
++ <match type="string" value="[Flatpak Repo]" offset="0:256"/>
+ </magic>
+ <glob pattern="*.flatpakrepo"/>
+ </mime-type>
+
+ <mime-type type="application/vnd.flatpak.ref">
+ <comment>Flatpak repository reference</comment>
++ <comment xml:lang="bg">Указател към хранилище — Flatpak</comment>
+ <comment xml:lang="ca">referència de dipòsit Flatpak</comment>
+ <comment xml:lang="cs">odkaz na repozitář Flatpak</comment>
++ <comment xml:lang="da">Flatpak-arkivreference</comment>
+ <comment xml:lang="de">Flatpak-Repositoriumsreferenz</comment>
+- <comment xml:lang="en_GB">Flatpak repository reference</comment>
++ <comment xml:lang="en-GB">Flatpak repository reference</comment>
+ <comment xml:lang="es">referencia a repositorio de Flatpak</comment>
+ <comment xml:lang="eu">Flatpak biltegi erreferentzia</comment>
+ <comment xml:lang="fi">Flatpak-ohjelmistolähdeviite</comment>
+ <comment xml:lang="fr">référence de dépôt Flatpak</comment>
++ <comment xml:lang="fur">riferiment dipuesit Flatpak</comment>
+ <comment xml:lang="ga">tagairt do stórlann Flatpak</comment>
+ <comment xml:lang="hr">Flatpak preporučeni repozitorij</comment>
+ <comment xml:lang="hu">Flatpak tárolóhivatkozás</comment>
+- <comment xml:lang="id">acuan repositori Flatpak</comment>
++ <comment xml:lang="id">Acuan repositori Flatpak</comment>
+ <comment xml:lang="it">Riferimento repository Flatpack</comment>
+ <comment xml:lang="kk">Flatpak репозиторийіне сілтеме</comment>
+ <comment xml:lang="ko">Flatpak 저장소 참조</comment>
+ <comment xml:lang="pl">Odwołanie do repozytorium Flatpak</comment>
+- <comment xml:lang="pt_BR">Referência de repositório Flatpak</comment>
++ <comment xml:lang="pt-BR">Referência de repositório Flatpak</comment>
+ <comment xml:lang="ru">Ссылка на репозиторий Flatpak</comment>
+ <comment xml:lang="sk">Referencia repozitára Flatpak</comment>
+ <comment xml:lang="sr">упута ризнице Флатпака</comment>
+ <comment xml:lang="sv">Flatpak-förrådsreferens</comment>
+- <comment xml:lang="tr">Flatpak depo başvurusu</comment>
++ <comment xml:lang="tr">Flatpak depo atfı</comment>
+ <comment xml:lang="uk">посилання на сховище Flatpak</comment>
+- <comment xml:lang="zh_CN">Flatpak 软件库引用</comment>
+- <comment xml:lang="zh_TW">Flatpak 軟體庫參照</comment>
++ <comment xml:lang="zh-CN">Flatpak 软件库引用</comment>
++ <comment xml:lang="zh-TW">Flatpak 軟體庫參照</comment>
+ <generic-icon name="package-x-generic"/>
+ <sub-class-of type="text/plain"/>
+ <magic priority="50">
+- <match value="[Flatpak Ref]" type="string" offset="0:256"/>
++ <match type="string" value="[Flatpak Ref]" offset="0:256"/>
+ </magic>
+ <glob pattern="*.flatpakref"/>
+ </mime-type>
+
+ <mime-type type="application/vnd.squashfs">
+- <comment>Squashfs filesystem</comment>
+- <comment xml:lang="ca">Sistema de fitxers Squashfs</comment>
+- <comment xml:lang="cs">souborový systém Squashfs</comment>
+- <comment xml:lang="da">Squashfs-filsystem</comment>
+- <comment xml:lang="de">Squashfs-Dateisystem</comment>
+- <comment xml:lang="en_GB">Squashfs filesystem</comment>
+- <comment xml:lang="es">sistema de archivos Squashfs</comment>
+- <comment xml:lang="eu">Squashfs fitxategi sistema</comment>
+- <comment xml:lang="fi">Squashfs-tiedostojärjestelmä</comment>
+- <comment xml:lang="fr">système de fichiers Squashfs</comment>
+- <comment xml:lang="ga">córas comhad Squashfs</comment>
+- <comment xml:lang="he">מערכת קבצים Squashfs</comment>
+- <comment xml:lang="hr">Squashfs datotečni sustav</comment>
+- <comment xml:lang="hu">Squashfs fájlrendszer</comment>
+- <comment xml:lang="id">sistem berkas Squashfs</comment>
+- <comment xml:lang="it">File system squashfs</comment>
+- <comment xml:lang="kk">Squashfs файлдық жүйесі</comment>
+- <comment xml:lang="ko">Squashfs 파일 시스템</comment>
+- <comment xml:lang="pl">System plików SquashFS</comment>
+- <comment xml:lang="pt_BR">Sistema de arquivos Squashfs</comment>
+- <comment xml:lang="ru">Файловая система Squashfs</comment>
+- <comment xml:lang="sk">Systém súborov Squashfs</comment>
+- <comment xml:lang="sr">систем датотека Сквошфс</comment>
+- <comment xml:lang="sv">Squashfs-filsystem</comment>
+- <comment xml:lang="tr">Squashfs dosya sistemi</comment>
+- <comment xml:lang="uk">файлова система squashfs</comment>
+- <comment xml:lang="zh_CN">Squashfs 文件系统</comment>
+- <comment xml:lang="zh_TW">Squashfs 檔案系統</comment>
+- <magic priority="50">
+- <match value="sqsh" type="string" offset="0"/>
+- <match value="hsqs" type="string" offset="0"/>
++ <comment>Squashfs filesystem image</comment>
++ <comment xml:lang="bg">Диск — Squashfs</comment>
++ <comment xml:lang="ca">imatge de sistema de fitxers Squashfs</comment>
++ <comment xml:lang="da">Squashfs-filsystemaftryk</comment>
++ <comment xml:lang="de">Squashfs-Dateisystemabbild</comment>
++ <comment xml:lang="en-GB">Squashfs filesystem image</comment>
++ <comment xml:lang="es">imagen de sistema de archivos de Squashfs</comment>
++ <comment xml:lang="eu">Squashfs fitxategi sistema irudia</comment>
++ <comment xml:lang="fi">Squashfs-tiedostojärjestelmän levykuva</comment>
++ <comment xml:lang="fr">image de système de fichiers Squashfs</comment>
++ <comment xml:lang="hr">Squashfs slika datotečnog sustava</comment>
++ <comment xml:lang="hu">Squashfs fájlrenszerkép</comment>
++ <comment xml:lang="id">Image sistem berkas Squashfs</comment>
++ <comment xml:lang="it">Immagine file system squashfs</comment>
++ <comment xml:lang="kk">Squashfs файлдық жүйе бейнесі</comment>
++ <comment xml:lang="ko">Squashfs 파일 시스템 이미지</comment>
++ <comment xml:lang="pl">Obraz systemu plików SquashFS</comment>
++ <comment xml:lang="pt-BR">Imagem de sistema de arquivos Squashfs</comment>
++ <comment xml:lang="ru">Образ файловой системы Squashfs</comment>
++ <comment xml:lang="sk">Obraz systému súborov Squashfs</comment>
++ <comment xml:lang="sv">Squashfs filsystemsavbildning</comment>
++ <comment xml:lang="tr">Squashfs dosya sistemi görüntüsü</comment>
++ <comment xml:lang="uk">образ файлової системи squashfs</comment>
++ <comment xml:lang="zh-CN">Squashfs 文件系统映像</comment>
++ <comment xml:lang="zh-TW">Squashfs 檔案系統映像</comment>
++ <magic priority="50">
++ <match type="string" value="sqsh" offset="0"/>
++ <match type="string" value="hsqs" offset="0"/>
+ </magic>
+ <glob pattern="*.sqsh"/>
+ </mime-type>
+
+-
++ <!-- AppImage application bundle (Type 2) -->
+ <mime-type type="application/vnd.appimage">
+ <comment>AppImage application bundle</comment>
++ <comment xml:lang="af">AppImage-toepassingsbundel</comment>
++ <comment xml:lang="bg">Програмен пакет — AppImage</comment>
+ <comment xml:lang="ca">paquet d'aplicació AppImage</comment>
+ <comment xml:lang="cs">balíček AppImage s aplikací</comment>
+- <comment xml:lang="da">Applmage-programsamling</comment>
++ <comment xml:lang="da">AppImage-programsamling</comment>
+ <comment xml:lang="de">AppImage-Anwendungspaket</comment>
+- <comment xml:lang="en_GB">AppImage application bundle</comment>
++ <comment xml:lang="en-GB">AppImage application bundle</comment>
+ <comment xml:lang="es">paquete de aplicación AppImage</comment>
+ <comment xml:lang="eu">AppImage aplikazio bilduma</comment>
+ <comment xml:lang="fi">AppImage-sovelluspaketti</comment>
+ <comment xml:lang="fr">lot applicatif AppImage</comment>
++ <comment xml:lang="fur">côl di aplicazions AppImage</comment>
+ <comment xml:lang="ga">burla feidhmchláir AppImage</comment>
+ <comment xml:lang="he">חבילת יישומי AppImage</comment>
+ <comment xml:lang="hr">AppImage paket aplikacije</comment>
+ <comment xml:lang="hu">AppImage alkalmazáscsomag</comment>
+- <comment xml:lang="id">bundel aplikasi AppImage</comment>
++ <comment xml:lang="id">Bundel aplikasi AppImage</comment>
+ <comment xml:lang="it">Bundle applicazione AppImage</comment>
+ <comment xml:lang="kk">AppImage қолданбалар дестесі</comment>
+ <comment xml:lang="ko">AppImage 프로그램 번들</comment>
+ <comment xml:lang="pl">Pakiet programu AppImage</comment>
+- <comment xml:lang="pt_BR">Pacote de aplicativo AppImage</comment>
++ <comment xml:lang="pt">pacote de aplicação AppImage</comment>
++ <comment xml:lang="pt-BR">Pacote de aplicativo AppImage</comment>
+ <comment xml:lang="ru">Пакет приложения AppImage</comment>
+ <comment xml:lang="sk">Balík aplikácií AppImage</comment>
+ <comment xml:lang="sr">скуп програма Ап-слике</comment>
+ <comment xml:lang="sv">AppImage-programbunt</comment>
+ <comment xml:lang="tr">AppImage uygulama paketi</comment>
+ <comment xml:lang="uk">пакунок із програмами AppImage</comment>
+- <comment xml:lang="zh_CN">AppImage 应用组合包</comment>
+- <comment xml:lang="zh_TW">AppImage 應用程式套組</comment>
++ <comment xml:lang="zh-CN">AppImage 应用组合包</comment>
++ <comment xml:lang="zh-TW">AppImage 應用程式套組</comment>
+ <sub-class-of type="application/x-executable"/>
+ <sub-class-of type="application/vnd.squashfs"/>
+ <generic-icon name="application-x-executable"/>
+@@ -41118,45 +42677,78 @@
+
+ <mime-type type="application/vnd.snap">
+ <comment>Snap package</comment>
+- <comment xml:lang="ca">Paquet Snap</comment>
++ <comment xml:lang="af">Snap-pakket</comment>
++ <comment xml:lang="bg">Пакет — Snap</comment>
++ <comment xml:lang="ca">paquet snap</comment>
+ <comment xml:lang="cs">balíček Snap</comment>
+ <comment xml:lang="da">Snap-pakke</comment>
+ <comment xml:lang="de">Snap-Paket</comment>
+- <comment xml:lang="en_GB">Snap package</comment>
++ <comment xml:lang="en-GB">Snap package</comment>
+ <comment xml:lang="es">paquete Snap</comment>
+ <comment xml:lang="eu">Snap paketea</comment>
+ <comment xml:lang="fi">Snap-paketti</comment>
+ <comment xml:lang="fr">paquet Snap</comment>
++ <comment xml:lang="fur">pachet Snap</comment>
+ <comment xml:lang="ga">pacáiste Snap</comment>
+ <comment xml:lang="he">חבילת Snap</comment>
+ <comment xml:lang="hr">Snap paket</comment>
+ <comment xml:lang="hu">Snap-csomag</comment>
+- <comment xml:lang="id">paket Snap</comment>
++ <comment xml:lang="id">Paket Snap</comment>
+ <comment xml:lang="it">Pacchetto snap</comment>
+ <comment xml:lang="kk">Snap дестесі</comment>
+ <comment xml:lang="ko">Snap 패키지</comment>
+ <comment xml:lang="pl">Pakiet Snap</comment>
+- <comment xml:lang="pt_BR">Pacote Snap</comment>
++ <comment xml:lang="pt-BR">Pacote Snap</comment>
+ <comment xml:lang="ru">Пакет Snap</comment>
+ <comment xml:lang="sk">Balík Snap</comment>
++ <comment xml:lang="sl">Paket Snap</comment>
+ <comment xml:lang="sr">Снап пакет</comment>
+ <comment xml:lang="sv">Snap-paket</comment>
+ <comment xml:lang="tr">Snap paketi</comment>
+ <comment xml:lang="uk">пакунок snap</comment>
+- <comment xml:lang="zh_CN">Snap 软件包</comment>
+- <comment xml:lang="zh_TW">Snap 軟體包</comment>
++ <comment xml:lang="zh-CN">Snap 软件包</comment>
++ <comment xml:lang="zh-TW">Snap 軟體包</comment>
+ <glob pattern="*.snap"/>
+ <sub-class-of type="application/vnd.squashfs"/>
+ </mime-type>
+
+-
++ <!-- 3D models and GCODEs -->
+ <mime-type type="model/stl">
+ <comment>STL 3D model</comment>
++ <comment xml:lang="af">STL 3D-model</comment>
++ <comment xml:lang="bg">Модел — STL 3D</comment>
++ <comment xml:lang="ca">model 3D STL</comment>
++ <comment xml:lang="cs">3D model STL</comment>
++ <comment xml:lang="da">STL 3D-model</comment>
++ <comment xml:lang="de">STL 3D-Modell</comment>
++ <comment xml:lang="en-GB">STL 3D model</comment>
++ <comment xml:lang="es">modelo 3D de STL</comment>
++ <comment xml:lang="eu">STL 3D modeloa</comment>
++ <comment xml:lang="fi">STL 3D malli</comment>
++ <comment xml:lang="fr">modèle 3D STL</comment>
++ <comment xml:lang="fur">model STL 3D</comment>
++ <comment xml:lang="ga">samhail 3T STL</comment>
++ <comment xml:lang="hr">STL 3D model</comment>
++ <comment xml:lang="hu">STL 3D modell</comment>
++ <comment xml:lang="id">Model 3D STL</comment>
++ <comment xml:lang="it">Modello 3D STL</comment>
++ <comment xml:lang="kk">STL 3D моделі</comment>
++ <comment xml:lang="ko">STL 3D 모델</comment>
++ <comment xml:lang="pl">Model 3D STL</comment>
++ <comment xml:lang="pt-BR">Modelo 3D STL</comment>
++ <comment xml:lang="ru">3D-модель STL</comment>
++ <comment xml:lang="sk">STL 3D model</comment>
++ <comment xml:lang="sl">Model STL 3D</comment>
++ <comment xml:lang="sv">STL-3D-modell</comment>
++ <comment xml:lang="tr">STL 3D modeli</comment>
++ <comment xml:lang="uk">просторова модель STL</comment>
++ <comment xml:lang="zh-CN">STL 3D 模型</comment>
++ <comment xml:lang="zh-TW">STL 3D 模型</comment>
+ <acronym>STL</acronym>
+ <expanded-acronym>StereoLithography</expanded-acronym>
+ <magic priority="50">
+- <match value="solid" type="string" offset="0"/>
+- <match value="SOLID" type="string" offset="0"/>
++ <match type="string" value="solid" offset="0"/>
++ <match type="string" value="SOLID" offset="0"/>
+ </magic>
+ <glob pattern="*.stl"/>
+ <alias type="model/x.stl-ascii"/>
+@@ -41165,31 +42757,35 @@
+
+ <mime-type type="text/x.gcode">
+ <comment>G-code file</comment>
++ <comment xml:lang="bg">Модел — G-code</comment>
+ <comment xml:lang="ca">fitxer G-code</comment>
+ <comment xml:lang="cs">soubor G-code</comment>
++ <comment xml:lang="da">G-code-fil</comment>
+ <comment xml:lang="de">G-Code-Datei</comment>
+- <comment xml:lang="en_GB">G-code file</comment>
++ <comment xml:lang="en-GB">G-code file</comment>
+ <comment xml:lang="es">archivo G-code</comment>
+ <comment xml:lang="eu">G-code fitxategia</comment>
+ <comment xml:lang="fi">G-code-tiedosto</comment>
+ <comment xml:lang="fr">fichier G-code</comment>
++ <comment xml:lang="fur">file G-code</comment>
+ <comment xml:lang="ga">comhad G-code</comment>
+ <comment xml:lang="hr">G-kôd datoteka</comment>
+ <comment xml:lang="hu">G-code fájl</comment>
+- <comment xml:lang="id">berkas G-code</comment>
++ <comment xml:lang="id">Berkas G-code</comment>
+ <comment xml:lang="it">File G-code</comment>
+ <comment xml:lang="kk">G-code файлы</comment>
+- <comment xml:lang="ko">지-코드 파일</comment>
++ <comment xml:lang="ko">G-code 파일</comment>
+ <comment xml:lang="pl">Plik G-code</comment>
+- <comment xml:lang="pt_BR">Arquivo G-code</comment>
++ <comment xml:lang="pt-BR">Arquivo G-code</comment>
+ <comment xml:lang="ru">Файл G-code</comment>
+ <comment xml:lang="sk">Súbor G-code</comment>
++ <comment xml:lang="sl">Datoteka G-code</comment>
+ <comment xml:lang="sr">датотека Г-ко̂да</comment>
+ <comment xml:lang="sv">G-code-fil</comment>
+ <comment xml:lang="tr">G-code dosyası</comment>
+ <comment xml:lang="uk">файл G-code</comment>
+- <comment xml:lang="zh_CN">G-code 文件</comment>
+- <comment xml:lang="zh_TW">G-code 檔案</comment>
++ <comment xml:lang="zh-CN">G-code 文件</comment>
++ <comment xml:lang="zh-TW">G-code 檔案</comment>
+ <sub-class-of type="text/plain"/>
+ <generic-icon name="text-x-generic"/>
+ <glob pattern="*.gcode"/>
+@@ -41197,37 +42793,260 @@
+
+ <mime-type type="application/x-fds-disk">
+ <comment>Nintendo FDS disk image</comment>
+- <comment xml:lang="ca">Imatge de disc Nintendo FDS</comment>
++ <comment xml:lang="af">Nintendo FDS-skyfbeeldlêer</comment>
++ <comment xml:lang="bg">Диск — Nintendo FDS</comment>
++ <comment xml:lang="ca">imatge de disc Nintendo FDS</comment>
+ <comment xml:lang="cs">obraz disku pro Nintendo FDS</comment>
++ <comment xml:lang="da">Nintendo FDS-diskaftryk</comment>
+ <comment xml:lang="de">Nintendo-FDS-Datenträgerabbild</comment>
+- <comment xml:lang="en_GB">Nintendo FDS disk image</comment>
++ <comment xml:lang="en-GB">Nintendo FDS disk image</comment>
+ <comment xml:lang="es">imagen de disco FDS de Nintendo</comment>
+ <comment xml:lang="eu">Nintendo FDS disko irudia</comment>
+ <comment xml:lang="fi">Nintendo FDS -levykuva</comment>
+ <comment xml:lang="fr">image disque Nintendo FDS</comment>
++ <comment xml:lang="fur">imagjin disc Nintendo FDS</comment>
+ <comment xml:lang="ga">íomhá diosca Nintendo FDS</comment>
+ <comment xml:lang="hr">Nintendo FDS slika diska</comment>
+ <comment xml:lang="hu">Nintendo FDS lemezkép</comment>
+- <comment xml:lang="id">image disk Nintendo FDS</comment>
++ <comment xml:lang="id">Image disk Nintendo FDS</comment>
+ <comment xml:lang="it">Immagine disco Nintendo FDS</comment>
+ <comment xml:lang="kk">Nintendo FDS диск бейнесі</comment>
+ <comment xml:lang="ko">닌텐도 FDS 디스크 이미지</comment>
+ <comment xml:lang="pl">Obraz dysku Nintendo FDS</comment>
+- <comment xml:lang="pt_BR">Imagem de disco Nintendo FDS</comment>
++ <comment xml:lang="pt-BR">Imagem de disco Nintendo FDS</comment>
+ <comment xml:lang="ru">Образ диска Nintendo FDS</comment>
+ <comment xml:lang="sk">Obraz disku Nintendo FDS</comment>
+ <comment xml:lang="sr">Нинтендо ФДС слика диска</comment>
+ <comment xml:lang="sv">Nintendo FDS-diskavbild</comment>
+- <comment xml:lang="tr">Nintendo FDS disk kalıbı</comment>
++ <comment xml:lang="tr">Nintendo FDS disk görüntüsü</comment>
+ <comment xml:lang="uk">образ диска FDS Nintendo</comment>
+- <comment xml:lang="zh_CN">任天堂 FDS 磁盘映像</comment>
+- <comment xml:lang="zh_TW">Nintendo FDS 磁碟映像檔</comment>
++ <comment xml:lang="zh-CN">任天堂 FDS 磁盘映像</comment>
++ <comment xml:lang="zh-TW">Nintendo FDS 磁碟映像檔</comment>
+ <acronym>FDS</acronym>
+ <expanded-acronym>Famicom Disk System</expanded-acronym>
+ <glob pattern="*.fds"/>
+ <magic>
+- <match value="*NINTENDO-HVC*" type="string" offset="1"/>
++ <match type="string" value="*NINTENDO-HVC*" offset="1"/>
++ </magic>
++ </mime-type>
++
++ <mime-type type="application/x-qemu-disk">
++ <comment>QEMU QCOW disk image</comment>
++ <comment xml:lang="ca">imatge de disc QEMU QCOW</comment>
++ <comment xml:lang="da">QEMU QCOW-diskaftryk</comment>
++ <comment xml:lang="de">QEMU QCOW-Datenträgerabbild</comment>
++ <comment xml:lang="en-GB">QEMU QCOW disk image</comment>
++ <comment xml:lang="es">imagen de disco QCOW de QEMU</comment>
++ <comment xml:lang="fi">QEMU QCOW -levykuva</comment>
++ <comment xml:lang="fr">image disque QEMU QCOW</comment>
++ <comment xml:lang="hr">QEMU QCOW slika diska</comment>
++ <comment xml:lang="hu">QEMU QCOW lemezkép</comment>
++ <comment xml:lang="id">Image disk QCOW QEMU</comment>
++ <comment xml:lang="it">Immagine disco QEMU QCOW</comment>
++ <comment xml:lang="kk">QEMU QCOW диск бейнесі</comment>
++ <comment xml:lang="ko">QEMU QCOW 디스크 이미지</comment>
++ <comment xml:lang="pl">Obraz dysku QCOW QEMU</comment>
++ <comment xml:lang="pt-BR">Imagem de disco QEMU QCOW</comment>
++ <comment xml:lang="ru">Образ диска QEMU QCOW</comment>
++ <comment xml:lang="sv">QEMU QCOW-diskavbildning</comment>
++ <comment xml:lang="tr">QEMU QCOW disk görüntüsü</comment>
++ <comment xml:lang="uk">образ диска QCOW QEMU</comment>
++ <comment xml:lang="zh-CN">QEMU QCOW 磁盘映像</comment>
++ <comment xml:lang="zh-TW">QEMU QCOW 磁碟映像檔</comment>
++ <acronym>QCOW</acronym>
++ <expanded-acronym>QEMU Copy On Write</expanded-acronym>
++ <glob pattern="*.qcow2"/>
++ <glob pattern="*.qcow"/>
++ <magic>
++ <match type="string" value="QFI" offset="0">
++ <match value="0xfb" type="byte" offset="3"/>
++ </match>
++ </magic>
++ </mime-type>
++
++ <mime-type type="application/x-appleworks-document">
++ <comment>AppleWorks document</comment>
++ <comment xml:lang="ca">document AppleWorks</comment>
++ <comment xml:lang="da">AppleWorks-dokument</comment>
++ <comment xml:lang="de">AppleWorks-Dokument</comment>
++ <comment xml:lang="en-GB">AppleWorks document</comment>
++ <comment xml:lang="es">documento de AppleWorks</comment>
++ <comment xml:lang="fi">AppleWorks-asiakirja</comment>
++ <comment xml:lang="fr">document AppleWorks</comment>
++ <comment xml:lang="hr">AppleWorks dokument</comment>
++ <comment xml:lang="hu">AppleWorks-dokumentum</comment>
++ <comment xml:lang="id">Dokumen AppleWorks</comment>
++ <comment xml:lang="it">Documento AppleWorks</comment>
++ <comment xml:lang="kk">AppleWorks құжаты</comment>
++ <comment xml:lang="ko">AppleWorks 문서</comment>
++ <comment xml:lang="pl">Dokument AppleWorks</comment>
++ <comment xml:lang="pt-BR">Documento AppleWorks</comment>
++ <comment xml:lang="ru">Документ AppleWorks</comment>
++ <comment xml:lang="sl">Dokument AppleWorks</comment>
++ <comment xml:lang="sv">AppleWorks-dokument</comment>
++ <comment xml:lang="tr">AppleWorks belgesi</comment>
++ <comment xml:lang="uk">документ AppleWorks</comment>
++ <comment xml:lang="zh-CN">AppleWorks 文档</comment>
++ <comment xml:lang="zh-TW">AppleWorks 文件</comment>
++ <generic-icon name="x-office-document"/>
++ <glob pattern="*.cwk"/>
++ </mime-type>
++
++ <mime-type type="application/x-bps-patch">
++ <comment>BPS patch</comment>
++ <comment xml:lang="ca">pedaç de BPS</comment>
++ <comment xml:lang="da">BPS-rettelse</comment>
++ <comment xml:lang="de">BPS-Patch</comment>
++ <comment xml:lang="en-GB">BPS patch</comment>
++ <comment xml:lang="es">parche BPS</comment>
++ <comment xml:lang="fi">BPS-korjaus</comment>
++ <comment xml:lang="fr">correctif BPS</comment>
++ <comment xml:lang="hr">BPS zakrpa</comment>
++ <comment xml:lang="hu">BPS javítócsomag</comment>
++ <comment xml:lang="id">Patch BPS</comment>
++ <comment xml:lang="it">Patch BPS</comment>
++ <comment xml:lang="kk">BPS өзгерісі</comment>
++ <comment xml:lang="ko">BPS 패치</comment>
++ <comment xml:lang="pl">Łata BPS</comment>
++ <comment xml:lang="pt-BR">Patch BPS</comment>
++ <comment xml:lang="ru">Патч BPS</comment>
++ <comment xml:lang="sv">BPS patch</comment>
++ <comment xml:lang="tr">BPS yaması</comment>
++ <comment xml:lang="uk">латка BPS</comment>
++ <comment xml:lang="zh-CN">BPS 补丁</comment>
++ <comment xml:lang="zh-TW">BPS 修補檔</comment>
++ <acronym>BPS</acronym>
++ <expanded-acronym>Binary Patching System</expanded-acronym>
++ <glob pattern="*.bps"/>
++ <magic>
++ <match type="string" value="BPS1" offset="0"/>
++ </magic>
++ </mime-type>
++
++ <mime-type type="application/x-ips-patch">
++ <comment>IPS patch</comment>
++ <comment xml:lang="ca">pedaç d'IPS</comment>
++ <comment xml:lang="da">IPS-rettelse</comment>
++ <comment xml:lang="de">IPS-Patch</comment>
++ <comment xml:lang="en-GB">IPS patch</comment>
++ <comment xml:lang="es">parche IPS</comment>
++ <comment xml:lang="fi">IPS-korjaus</comment>
++ <comment xml:lang="fr">correctif IPS</comment>
++ <comment xml:lang="hr">IPS zakrpa</comment>
++ <comment xml:lang="hu">IPS javítócsomag</comment>
++ <comment xml:lang="id">Patch IPS</comment>
++ <comment xml:lang="it">Patch IPS</comment>
++ <comment xml:lang="kk">IPS өзгерісі</comment>
++ <comment xml:lang="ko">IPS 패치</comment>
++ <comment xml:lang="pl">Łata IPS</comment>
++ <comment xml:lang="pt-BR">Patch IPS</comment>
++ <comment xml:lang="ru">Патч IPS</comment>
++ <comment xml:lang="sv">IPS patch</comment>
++ <comment xml:lang="tr">IPS yaması</comment>
++ <comment xml:lang="uk">латка IPS</comment>
++ <comment xml:lang="zh-CN">IPS 补丁</comment>
++ <comment xml:lang="zh-TW">IPS 修補檔</comment>
++ <acronym>IPS</acronym>
++ <expanded-acronym>International Patching System</expanded-acronym>
++ <glob pattern="*.ips"/>
++ <magic>
++ <match type="string" value="PATCH" offset="0"/>
++ </magic>
++ </mime-type>
++
++ <mime-type type="application/x-pyspread-spreadsheet">
++ <comment>Pyspread spreadsheet</comment>
++ <comment xml:lang="ca">full de càlcul de Pyspread</comment>
++ <comment xml:lang="da">Pyspread-regneark</comment>
++ <comment xml:lang="de">Pyspread-Tabelle</comment>
++ <comment xml:lang="en-GB">Pyspread spreadsheet</comment>
++ <comment xml:lang="es">hoja de cálculo de Pyspread</comment>
++ <comment xml:lang="fi">Pyspread-taulukko</comment>
++ <comment xml:lang="fr">feuille de calcul Pyspread</comment>
++ <comment xml:lang="hr">Pyspread proračunska tablica</comment>
++ <comment xml:lang="it">Foglio di calcolo Pyspread</comment>
++ <comment xml:lang="pl">Arkusz pyspread</comment>
++ <comment xml:lang="pt-BR">Planilha do Pyspread</comment>
++ <comment xml:lang="sv">Pyspread-kalkylblad</comment>
++ <comment xml:lang="uk">ел. таблиця Pyspread</comment>
++ <comment xml:lang="zh-CN">Pyspread 电子表格</comment>
++ <comment xml:lang="zh-TW">Pyspread 試算表</comment>
++ <glob pattern="*.pysu"/>
++ <magic>
++ <match type="string" value="[Pyspread save file version]" offset="0"/>
+ </magic>
++ <generic-icon name="x-office-spreadsheet"/>
++ </mime-type>
++ <mime-type type="application/x-pyspread-bz-spreadsheet">
++ <comment>Pyspread spreadsheet (bzip-compressed)</comment>
++ <comment xml:lang="ca">full de càlcul de Pyspread (amb compressió bzip)</comment>
++ <comment xml:lang="da">Pyspread-regneark (bzip-komprimeret)</comment>
++ <comment xml:lang="de">Pyspread-Tabelle (bzip-komprimiert)</comment>
++ <comment xml:lang="en-GB">Pyspread spreadsheet (bzip-compressed)</comment>
++ <comment xml:lang="es">hoja de cálculo de Pyspread (comprimida con bzip)</comment>
++ <comment xml:lang="fi">Pyspread-taulukko (bzip-pakattu)</comment>
++ <comment xml:lang="fr">feuille de calcul Pyspread (compressée bzip)</comment>
++ <comment xml:lang="hr">Pyspread proračunska tablica (bzip sažeta)</comment>
++ <comment xml:lang="it">Foglio di calcolo Pyspread (compresso con bzip)</comment>
++ <comment xml:lang="pl">Arkusz pyspread (kompresja bzip)</comment>
++ <comment xml:lang="pt-BR">Planilha do Pyspread (compactada com bzip)</comment>
++ <comment xml:lang="sv">Pyspread-kalkylblad (bzip-komprimerat)</comment>
++ <comment xml:lang="uk">ел. таблиця Pyspread (стиснена bzip)</comment>
++ <comment xml:lang="zh-CN">Pyspread 电子表格(bzip 压缩)</comment>
++ <comment xml:lang="zh-TW">Pyspread 試算表 (bzip 壓縮)</comment>
++ <sub-class-of type="application/x-bzip"/>
++ <glob pattern="*.pys"/>
++ <generic-icon name="x-office-spreadsheet"/>
++ </mime-type>
++
++ <mime-type type="text/x-kotlin">
++ <comment>Kotlin source code</comment>
++ <comment xml:lang="ca">codi font en Kotlin</comment>
++ <comment xml:lang="da">Kotlin-kildekode</comment>
++ <comment xml:lang="de">Kotlin-Quelltext</comment>
++ <comment xml:lang="en-GB">Kotlin source code</comment>
++ <comment xml:lang="es">código fuente en Kotlin</comment>
++ <comment xml:lang="fi">Kotlin-lähdekoodi</comment>
++ <comment xml:lang="fr">code source Kotlin</comment>
++ <comment xml:lang="hr">Kotlin izvorni kôd</comment>
++ <comment xml:lang="it">Codice sorgente Kotlin</comment>
++ <comment xml:lang="pl">Kod źródłowy Kotlin</comment>
++ <comment xml:lang="pt-BR">Código-fonte Kotlin</comment>
++ <comment xml:lang="sv">Kotlin-källkod</comment>
++ <comment xml:lang="uk">вихідний код мовою Kotlin</comment>
++ <comment xml:lang="zh-CN">Kotlin 源代码</comment>
++ <comment xml:lang="zh-TW">Kotlin 源碼</comment>
++ <sub-class-of type="text/plain"/>
++ <glob pattern="*.kt"/>
+ </mime-type>
+
++ <mime-type type="image/avif">
++ <comment>AV1 Image File Format (AVIF)</comment>
++ <comment xml:lang="ca">format de fitxer d'imatge AV1 (AVIF)</comment>
++ <comment xml:lang="da">AV1-billedfilformat (AVIF)</comment>
++ <comment xml:lang="de">AV1-Bilddateiformat (AVIF)</comment>
++ <comment xml:lang="en-GB">AV1 Image File Format (AVIF)</comment>
++ <comment xml:lang="es">formato de archivo de imagen AV1 (AVIF)</comment>
++ <comment xml:lang="fi">AV1-kuvatiedostomuoto (AVIF)</comment>
++ <comment xml:lang="hr">AV1 format datoteke slike (AVIF)</comment>
++ <comment xml:lang="it">AV1 Image File Format (AVIF)</comment>
++ <comment xml:lang="pl">Format pliku obrazu AV1 (AVIF)</comment>
++ <comment xml:lang="pt-BR">Formato de arquivo de imagem AV1 (AVIF)</comment>
++ <comment xml:lang="sv">AV1-bildfilformat (AVIF)</comment>
++ <comment xml:lang="uk">формат файлів зображень AV1 (AVIF)</comment>
++ <comment xml:lang="zh-CN">AV1 图像文件格式(AVIF)</comment>
++ <comment xml:lang="zh-TW">AV1 影像檔案格式 (AVIF)</comment>
++ <magic priority="50">
++ <match type="string" value="ftypavif" offset="4"/>
++ <match type="string" value="ftypavis" offset="4"/>
++ <match type="string" value="ftypmif1" offset="4">
++ <match type="string" value="avif" offset="16"/>
++ <match type="string" value="avif" offset="20"/>
++ <match type="string" value="avif" offset="24"/>
++ </match>
++ </magic>
++ <glob pattern="*.avif"/>
++ <glob pattern="*.avifs"/>
++ <alias type="image/avif-sequence"/>
++ </mime-type>
+ </mime-info>
+diff --git a/src/corelib/mimetypes/qmimedatabase.cpp b/src/corelib/mimetypes/qmimedatabase.cpp
+index 9de22cef33..ff868a3268 100644
+--- a/src/corelib/mimetypes/qmimedatabase.cpp
++++ b/src/corelib/mimetypes/qmimedatabase.cpp
+@@ -389,20 +389,23 @@ QMimeType QMimeDatabasePrivate::mimeTypeForFileNameAndData(const QString &fileNa
+ // Disambiguate conflicting extensions (if magic matching found something)
+ if (candidateByData.isValid() && magicAccuracy > 0) {
+ const QString sniffedMime = candidateByData.name();
+- // If the sniffedMime matches a glob match, use it
++ // If the sniffedMime matches a highest-weight glob match, use it
+ if (candidatesByName.m_matchingMimeTypes.contains(sniffedMime)) {
+ *accuracyPtr = 100;
+ return candidateByData;
+ }
+- for (const QString &m : qAsConst(candidatesByName.m_matchingMimeTypes)) {
++ for (const QString &m : qAsConst(candidatesByName.m_allMatchingMimeTypes)) {
+ if (inherits(m, sniffedMime)) {
+ // We have magic + pattern pointing to this, so it's a pretty good match
+ *accuracyPtr = 100;
+ return mimeTypeForName(m);
+ }
+ }
+- *accuracyPtr = magicAccuracy;
+- return candidateByData;
++ if (candidatesByName.m_allMatchingMimeTypes.isEmpty()) {
++ // No glob, use magic
++ *accuracyPtr = magicAccuracy;
++ return candidateByData;
++ }
+ }
+ }
+
+diff --git a/src/corelib/mimetypes/qmimeglobpattern.cpp b/src/corelib/mimetypes/qmimeglobpattern.cpp
+index 1016884437..943eb84b94 100644
+--- a/src/corelib/mimetypes/qmimeglobpattern.cpp
++++ b/src/corelib/mimetypes/qmimeglobpattern.cpp
+@@ -83,7 +83,10 @@ void QMimeGlobMatchResult::addMatch(const QString &mimeType, int weight, const Q
+ }
+ if (!m_matchingMimeTypes.contains(mimeType)) {
+ m_matchingMimeTypes.append(mimeType);
+- m_allMatchingMimeTypes.append(mimeType);
++ if (replace)
++ m_allMatchingMimeTypes.prepend(mimeType); // highest-weight first
++ else
++ m_allMatchingMimeTypes.append(mimeType);
+ m_knownSuffixLength = knownSuffixLength;
+ }
+ }
+diff --git a/src/corelib/mimetypes/qmimeprovider.cpp b/src/corelib/mimetypes/qmimeprovider.cpp
+index 12ce442f70..80616cccad 100644
+--- a/src/corelib/mimetypes/qmimeprovider.cpp
++++ b/src/corelib/mimetypes/qmimeprovider.cpp
+@@ -244,15 +244,18 @@ void QMimeBinaryProvider::addFileNameMatches(const QString &fileName, QMimeGlobM
+ const QString lowerFileName = fileName.toLower();
+ // Check literals (e.g. "Makefile")
+ matchGlobList(result, m_cacheFile, m_cacheFile->getUint32(PosLiteralListOffset), fileName);
+- // Check complex globs (e.g. "callgrind.out[0-9]*")
+- matchGlobList(result, m_cacheFile, m_cacheFile->getUint32(PosGlobListOffset), fileName);
+ // Check the very common *.txt cases with the suffix tree
+- const int reverseSuffixTreeOffset = m_cacheFile->getUint32(PosReverseSuffixTreeOffset);
+- const int numRoots = m_cacheFile->getUint32(reverseSuffixTreeOffset);
+- const int firstRootOffset = m_cacheFile->getUint32(reverseSuffixTreeOffset + 4);
+- matchSuffixTree(result, m_cacheFile, numRoots, firstRootOffset, lowerFileName, lowerFileName.length() - 1, false);
++ if (result.m_matchingMimeTypes.isEmpty()) {
++ const int reverseSuffixTreeOffset = m_cacheFile->getUint32(PosReverseSuffixTreeOffset);
++ const int numRoots = m_cacheFile->getUint32(reverseSuffixTreeOffset);
++ const int firstRootOffset = m_cacheFile->getUint32(reverseSuffixTreeOffset + 4);
++ matchSuffixTree(result, m_cacheFile, numRoots, firstRootOffset, lowerFileName, lowerFileName.length() - 1, false);
++ if (result.m_matchingMimeTypes.isEmpty())
++ matchSuffixTree(result, m_cacheFile, numRoots, firstRootOffset, fileName, fileName.length() - 1, true);
++ }
++ // Check complex globs (e.g. "callgrind.out[0-9]*" or "README*")
+ if (result.m_matchingMimeTypes.isEmpty())
+- matchSuffixTree(result, m_cacheFile, numRoots, firstRootOffset, fileName, fileName.length() - 1, true);
++ matchGlobList(result, m_cacheFile, m_cacheFile->getUint32(PosGlobListOffset), fileName);
+ }
+
+ void QMimeBinaryProvider::matchGlobList(QMimeGlobMatchResult &result, CacheFile *cacheFile, int off, const QString &fileName)
+diff --git a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp
+index 0ea422ecbc..1a3256534b 100644
+--- a/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp
++++ b/tests/auto/corelib/mimetypes/qmimedatabase/tst_qmimedatabase.cpp
+@@ -70,15 +70,15 @@ static inline QString testSuiteWarning()
+
+ QString result;
+ QTextStream str(&result);
+- str << "\nCannot find the shared-mime-info test suite\nstarting from: "
++ str << "\nCannot find the shared-mime-info test suite\nin the parent of: "
+ << QDir::toNativeSeparators(QDir::currentPath()) << "\n"
+ "cd " << QDir::toNativeSeparators(QStringLiteral("tests/auto/corelib/mimetypes/qmimedatabase")) << "\n"
+- "wget http://cgit.freedesktop.org/xdg/shared-mime-info/snapshot/Release-1-10.zip\n"
+- "unzip Release-1-10.zip\n";
++ "wget https://gitlab.freedesktop.org/xdg/shared-mime-info/-/archive/2.1/shared-mime-info-2.1.zip\n"
++ "unzip shared-mime-info-2.1.zip\n";
+ #ifdef Q_OS_WIN
+- str << "mkdir testfiles\nxcopy /s Release-1-10 s-m-i\n";
++ str << "mkdir testfiles\nxcopy /s shared-mime-info-2.1 s-m-i\n";
+ #else
+- str << "ln -s Release-1-10 s-m-i\n";
++ str << "ln -s shared-mime-info-2.1 s-m-i\n";
+ #endif
+ return result;
+ }
+@@ -154,7 +154,7 @@ void tst_QMimeDatabase::initTestCase()
+ QVERIFY2(copyResourceFile(xmlFileName, xmlTargetFileName, &errorMessage), qPrintable(errorMessage));
+ #endif
+
+- m_testSuite = QFINDTESTDATA("s-m-i/tests");
++ m_testSuite = QFINDTESTDATA("s-m-i/tests/mime-detection");
+ if (m_testSuite.isEmpty())
+ qWarning("%s", qPrintable(testSuiteWarning()));
+
+@@ -611,7 +611,7 @@ void tst_QMimeDatabase::allMimeTypes()
+ QVERIFY(!lst.isEmpty());
+
+ // Hardcoding this is the only way to check both providers find the same number of mimetypes.
+- QCOMPARE(lst.count(), 779);
++ QCOMPARE(lst.count(), 811);
+
+ foreach (const QMimeType &mime, lst) {
+ const QString name = mime.name();
+@@ -631,10 +631,9 @@ void tst_QMimeDatabase::suffixes_data()
+
+ QTest::newRow("mimetype with a single pattern") << "application/pdf" << "*.pdf" << "pdf";
+ QTest::newRow("mimetype with multiple patterns") << "application/x-kpresenter" << "*.kpr;*.kpt" << "kpr";
+- QTest::newRow("jpeg") << "image/jpeg" << "*.jpe;*.jpg;*.jpeg" << "jpeg";
+- //if (KMimeType::sharedMimeInfoVersion() > KDE_MAKE_VERSION(0, 60, 0)) {
+- QTest::newRow("mimetype with many patterns") << "application/vnd.wordperfect" << "*.wp;*.wp4;*.wp5;*.wp6;*.wpd;*.wpp" << "wp";
+- //}
++ // The preferred suffix for image/jpeg is *.jpg, as per https://bugs.kde.org/show_bug.cgi?id=176737
++ QTest::newRow("jpeg") << "image/jpeg" << "*.jpe;*.jpg;*.jpeg" << "jpg";
++ QTest::newRow("mimetype with many patterns") << "application/vnd.wordperfect" << "*.wp;*.wp4;*.wp5;*.wp6;*.wpd;*.wpp" << "wp";
+ QTest::newRow("oasis text mimetype") << "application/vnd.oasis.opendocument.text" << "*.odt" << "odt";
+ QTest::newRow("oasis presentation mimetype") << "application/vnd.oasis.opendocument.presentation" << "*.odp" << "odp";
+ QTest::newRow("mimetype with multiple patterns") << "text/plain" << "*.asc;*.txt;*,v" << "txt";
+--
+2.36.0
+
+From a5b9fef71275743723da62bbf1e7292dc223d47c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= <tor.arne.vestbo@qt.io>
+Date: Thu, 18 Jun 2020 17:03:03 +0200
+Subject: [PATCH 023/146] xcb: Remove need for QXCBScreen to resolve
+ QXcbGlIntegration
+
+Change-Id: I9de4f47bfdf88c92959f210e05c1fc1e8a459cde
+Reviewed-by: Liang Qi <liang.qi@qt.io>
+(cherry picked from commit 590ac717a2c073292027111d5c99d68fb17b160c)
+---
+ src/plugins/platforms/xcb/qxcbintegration.cpp | 3 +--
+ 1 file changed, 1 insertion(+), 2 deletions(-)
+
+diff --git a/src/plugins/platforms/xcb/qxcbintegration.cpp b/src/plugins/platforms/xcb/qxcbintegration.cpp
+index 76869ced60..02d2eebb56 100644
+--- a/src/plugins/platforms/xcb/qxcbintegration.cpp
++++ b/src/plugins/platforms/xcb/qxcbintegration.cpp
+@@ -274,8 +274,7 @@ QPlatformWindow *QXcbIntegration::createForeignWindow(QWindow *window, WId nativ
+ #ifndef QT_NO_OPENGL
+ QPlatformOpenGLContext *QXcbIntegration::createPlatformOpenGLContext(QOpenGLContext *context) const
+ {
+- QXcbScreen *screen = static_cast<QXcbScreen *>(context->screen()->handle());
+- QXcbGlIntegration *glIntegration = screen->connection()->glIntegration();
++ QXcbGlIntegration *glIntegration = defaultConnection()->glIntegration();
+ if (!glIntegration) {
+ qWarning("QXcbIntegration: Cannot create platform OpenGL context, neither GLX nor EGL are enabled");
+ return nullptr;
+--
+2.36.0
+
+From 53c9a59af4d09abbdb3e824a5593d2812727c581 Mon Sep 17 00:00:00 2001
+From: Nicolas Fella <nicolas.fella@kdab.com>
+Date: Sun, 20 Jun 2021 17:36:41 +0200
+Subject: [PATCH 024/146] Add missing limits include
+
+The code uses std::numeric_limits but is lacking the appropriate include
+
+Pick-to: 5.15 6.1 6.2
+Change-Id: I41fa5ac4d8c4e06f35b5b1551ef2ad8417df80bd
+Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
+(cherry picked from commit 2b2b3155d9f6ba1e4f859741468fbc47db09292b)
+---
+ src/corelib/tools/qoffsetstringarray_p.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/corelib/tools/qoffsetstringarray_p.h b/src/corelib/tools/qoffsetstringarray_p.h
+index 4dd9e9603b..e26a57ff43 100644
+--- a/src/corelib/tools/qoffsetstringarray_p.h
++++ b/src/corelib/tools/qoffsetstringarray_p.h
+@@ -55,6 +55,7 @@
+
+ #include <tuple>
+ #include <array>
++#include <limits>
+
+ QT_BEGIN_NAMESPACE
+
+--
+2.36.0
+
+From b55e1abaaf85636e2d4f6bd10b23129061d72daf Mon Sep 17 00:00:00 2001
+From: Olivier Goffart <ogoffart@woboq.com>
+Date: Thu, 5 Dec 2019 14:05:11 +0100
+Subject: [PATCH 025/146] Fix tst_moc for C++17
+
+The throw() specification is no longer accepted in C++17 mode, so remove that.
+
+Also pass the -std=c++1z to the compiler as Qt is going to require C++17 soon
+
+Change-Id: I6d249e574d90cd1cf5c0ea595830d2db07681050
+Reviewed-by: Lars Knoll <lars.knoll@qt.io>
+(cherry picked from commit b0498b1864829a314b70c4204bb47529ab3654b2)
+---
+ tests/auto/tools/moc/allmocs_baseline_in.json | 44 -----------------
+ tests/auto/tools/moc/moc.pro | 2 +-
+ tests/auto/tools/moc/task189996.h | 47 -------------------
+ tests/auto/tools/moc/tst_moc.cpp | 31 ++----------
+ 4 files changed, 5 insertions(+), 119 deletions(-)
+ delete mode 100644 tests/auto/tools/moc/task189996.h
+
+diff --git a/tests/auto/tools/moc/allmocs_baseline_in.json b/tests/auto/tools/moc/allmocs_baseline_in.json
+index 6d17bebb5f..7fa93b9c47 100644
+--- a/tests/auto/tools/moc/allmocs_baseline_in.json
++++ b/tests/auto/tools/moc/allmocs_baseline_in.json
+@@ -668,50 +668,6 @@
+ "inputFile": "task192552.h",
+ "outputRevision": 67
+ },
+- {
+- "classes": [
+- {
+- "className": "InlineSlotsWithThrowDeclaration",
+- "object": true,
+- "qualifiedClassName": "InlineSlotsWithThrowDeclaration",
+- "slots": [
+- {
+- "access": "public",
+- "name": "a",
+- "returnType": "void"
+- },
+- {
+- "access": "public",
+- "name": "b",
+- "returnType": "void"
+- },
+- {
+- "access": "public",
+- "name": "c",
+- "returnType": "void"
+- },
+- {
+- "access": "public",
+- "name": "d",
+- "returnType": "void"
+- },
+- {
+- "access": "public",
+- "name": "e",
+- "returnType": "void"
+- }
+- ],
+- "superClasses": [
+- {
+- "access": "public",
+- "name": "QObject"
+- }
+- ]
+- }
+- ],
+- "inputFile": "task189996.h",
+- "outputRevision": 67
+- },
+ {
+ "classes": [
+ {
+diff --git a/tests/auto/tools/moc/moc.pro b/tests/auto/tools/moc/moc.pro
+index cafc7bc184..c56179f0ce 100644
+--- a/tests/auto/tools/moc/moc.pro
++++ b/tests/auto/tools/moc/moc.pro
+@@ -15,7 +15,7 @@ cross_compile: DEFINES += MOC_CROSS_COMPILED
+ HEADERS += using-namespaces.h no-keywords.h task87883.h c-comments.h backslash-newlines.h oldstyle-casts.h \
+ slots-with-void-template.h qinvokable.h namespaced-flags.h trigraphs.h \
+ escapes-in-string-literals.h cstyle-enums.h qprivateslots.h gadgetwithnoenums.h \
+- dir-in-include-path.h single_function_keyword.h task192552.h task189996.h \
++ dir-in-include-path.h single_function_keyword.h task192552.h \
+ task234909.h task240368.h pure-virtual-signals.h cxx11-enums.h \
+ cxx11-final-classes.h \
+ cxx11-explicit-override-control.h \
+diff --git a/tests/auto/tools/moc/task189996.h b/tests/auto/tools/moc/task189996.h
+deleted file mode 100644
+index f94a051b3a..0000000000
+--- a/tests/auto/tools/moc/task189996.h
++++ /dev/null
+@@ -1,47 +0,0 @@
+-/****************************************************************************
+-**
+-** Copyright (C) 2016 The Qt Company Ltd.
+-** Contact: https://www.qt.io/licensing/
+-**
+-** This file is part of the test suite of the Qt Toolkit.
+-**
+-** $QT_BEGIN_LICENSE:GPL-EXCEPT$
+-** Commercial License Usage
+-** Licensees holding valid commercial Qt licenses may use this file in
+-** accordance with the commercial license agreement provided with the
+-** Software or, alternatively, in accordance with the terms contained in
+-** a written agreement between you and The Qt Company. For licensing terms
+-** and conditions see https://www.qt.io/terms-conditions. For further
+-** information use the contact form at https://www.qt.io/contact-us.
+-**
+-** GNU General Public License Usage
+-** Alternatively, this file may be used under the terms of the GNU
+-** General Public License version 3 as published by the Free Software
+-** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+-** included in the packaging of this file. Please review the following
+-** information to ensure the GNU General Public License requirements will
+-** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+-**
+-** $QT_END_LICENSE$
+-**
+-****************************************************************************/
+-// inline functions can have throw declarations
+-
+-#ifndef TASK189996_H
+-#define TASK189996_H
+-
+-#include <QObject>
+-
+-class InlineSlotsWithThrowDeclaration : public QObject
+-{
+- Q_OBJECT
+-
+-public slots:
+- void a() throw() { }
+- void b() const throw() { }
+- void c() throw();
+- void d() throw(int) { }
+- void e() const throw(int,double) { }
+-};
+-
+-#endif
+diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp
+index 0f801fe902..a1ad07185f 100644
+--- a/tests/auto/tools/moc/tst_moc.cpp
++++ b/tests/auto/tools/moc/tst_moc.cpp
+@@ -630,7 +630,6 @@ public:
+ private slots:
+ void initTestCase();
+
+- void slotWithException() throw(MyStruct);
+ void dontStripNamespaces();
+ void oldStyleCasts();
+ void warnOnExtraSignalSlotQualifiaction();
+@@ -672,7 +671,6 @@ private slots:
+ void templateGtGt();
+ void qprivateslots();
+ void qprivateproperties();
+- void inlineSlotsWithThrowDeclaration();
+ void warnOnPropertyWithoutREAD();
+ void constructors();
+ void typenameWithUnsigned();
+@@ -782,12 +780,6 @@ void tst_Moc::initTestCase()
+ #endif
+ }
+
+-void tst_Moc::slotWithException() throw(MyStruct)
+-{
+- // be happy
+- QVERIFY(true);
+-}
+-
+ void tst_Moc::dontStripNamespaces()
+ {
+ Sender sender;
+@@ -822,7 +814,7 @@ void tst_Moc::oldStyleCasts()
+
+ QStringList args;
+ args << "-c" << "-x" << "c++" << "-Wold-style-cast" << "-I" << "."
+- << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++11" << "-";
++ << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++1z" << "-";
+ proc.start("gcc", args);
+ QVERIFY(proc.waitForStarted());
+ proc.write(mocOut);
+@@ -892,7 +884,7 @@ void tst_Moc::inputFileNameWithDotsButNoExtension()
+
+ QStringList args;
+ args << "-c" << "-x" << "c++" << "-I" << ".."
+- << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++11" << "-";
++ << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++1z" << "-";
+ proc.start("gcc", args);
+ QVERIFY(proc.waitForStarted());
+ proc.write(mocOut);
+@@ -1172,7 +1164,7 @@ void tst_Moc::ignoreOptionClashes()
+ QStringList gccArgs;
+ gccArgs << "-c" << "-x" << "c++" << "-I" << ".."
+ << "-I" << qtIncludePath << "-I" << includeDir << "-o" << "/dev/null"
+- << "-fPIC" << "-std=c++11" << "-";
++ << "-fPIC" << "-std=c++1z" << "-";
+ proc.start("gcc", gccArgs);
+ QVERIFY(proc.waitForStarted());
+ proc.write(mocOut);
+@@ -1591,21 +1583,6 @@ void tst_Moc::qprivateproperties()
+
+ }
+
+-#include "task189996.h"
+-
+-void InlineSlotsWithThrowDeclaration::c() throw() {}
+-
+-void tst_Moc::inlineSlotsWithThrowDeclaration()
+-{
+- InlineSlotsWithThrowDeclaration tst;
+- const QMetaObject *mobj = tst.metaObject();
+- QVERIFY(mobj->indexOfSlot("a()") != -1);
+- QVERIFY(mobj->indexOfSlot("b()") != -1);
+- QVERIFY(mobj->indexOfSlot("c()") != -1);
+- QVERIFY(mobj->indexOfSlot("d()") != -1);
+- QVERIFY(mobj->indexOfSlot("e()") != -1);
+-}
+-
+ void tst_Moc::warnOnPropertyWithoutREAD()
+ {
+ #ifdef MOC_CROSS_COMPILED
+@@ -1867,7 +1844,7 @@ void tst_Moc::notifyError()
+
+ QStringList args;
+ args << "-c" << "-x" << "c++" << "-I" << "."
+- << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++11" << "-";
++ << "-I" << qtIncludePath << "-o" << "/dev/null" << "-fPIC" << "-std=c++1z" << "-";
+ proc.start("gcc", args);
+ QVERIFY(proc.waitForStarted());
+ proc.write(mocOut);
+--
+2.36.0
+
+From 35d4f3f9f48a2f7e5ed6f4e5ded003a19f1f3d3b Mon Sep 17 00:00:00 2001
+From: Milian Wolff <milian.wolff@kdab.com>
+Date: Thu, 1 Jul 2021 11:01:48 +0200
+Subject: [PATCH 026/146] Fix memory leak of QOffscreenScreen in
+ QOffscreenIntegration
+
+Call handleScreenRemoved when the QOffscreenIntegration is getting
+destroyed. Fixes memory leaks such as this one:
+
+```
+==207317== 368 (40 direct, 328 indirect) bytes in 1 blocks are definitely lost in loss record 157 of 264
+==207317== at 0x483EF3F: operator new(unsigned long) (vg_replace_malloc.c:417)
+==207317== by 0x987C434: QOffscreenIntegration::QOffscreenIntegration() (qoffscreenintegration.cpp:125)
+==207317== by 0x987CE81: QOffscreenX11Integration::QOffscreenX11Integration() (qoffscreenintegration_x11.h:69)
+==207317== by 0x987C8CC: QOffscreenIntegration::createOffscreenIntegration() (qoffscreenintegration.cpp:239)
+==207317== by 0x987BAA8: QOffscreenIntegrationPlugin::create(QString const&, QStringList const&) (main.cpp:58)
+==207317== by 0x5532FEC: QPlatformIntegrationPlugin::create(QString const&, QStringList const&, int&, char**) (qplatformintegrationplugin.cpp:64)
+==207317== by 0x5532AE0: QPlatformIntegration* qLoadPlugin<QPlatformIntegration, QPlatformIntegrationPlugin, QStringList const&, int&, char**&>(QFactoryLoader const*, QString const&, QStringList const&, int&, char**&) (qfactoryloader_p.h:108)
+==207317== by 0x5532301: QPlatformIntegrationFactory::create(QString const&, QStringList const&, int&, char**, QString const&) (qplatformintegrationfactory.cpp:71)
+==207317== by 0x553F502: init_platform(QString const&, QString const&, QString const&, int&, char**) (qguiapplication.cpp:1223)
+==207317== by 0x554280B: QGuiApplicationPrivate::createPlatformIntegration() (qguiapplication.cpp:1481)
+==207317== by 0x554294F: QGuiApplicationPrivate::createEventDispatcher() (qguiapplication.cpp:1498)
+==207317== by 0x4C53D6F: QApplicationPrivate::createEventDispatcher() (qapplication.cpp:167)
+```
+
+Upstream has diverged, fix for 6.2 is available here:
+https://codereview.qt-project.org/c/qt/qtbase/+/357736
+
+Change-Id: Ife36cb079340bb72f5943e87d621af2f8111c238
+---
+ src/plugins/platforms/offscreen/qoffscreenintegration.cpp | 4 +++-
+ src/plugins/platforms/offscreen/qoffscreenintegration.h | 1 +
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/plugins/platforms/offscreen/qoffscreenintegration.cpp b/src/plugins/platforms/offscreen/qoffscreenintegration.cpp
+index 141fb68a23..d4294d425a 100644
+--- a/src/plugins/platforms/offscreen/qoffscreenintegration.cpp
++++ b/src/plugins/platforms/offscreen/qoffscreenintegration.cpp
+@@ -122,11 +122,13 @@ QOffscreenIntegration::QOffscreenIntegration()
+ #endif
+ m_services.reset(new QPlatformServices);
+
+- QWindowSystemInterface::handleScreenAdded(new QOffscreenScreen);
++ m_screen = new QOffscreenScreen;
++ QWindowSystemInterface::handleScreenAdded(m_screen);
+ }
+
+ QOffscreenIntegration::~QOffscreenIntegration()
+ {
++ QWindowSystemInterface::handleScreenRemoved(m_screen);
+ }
+
+ void QOffscreenIntegration::initialize()
+diff --git a/src/plugins/platforms/offscreen/qoffscreenintegration.h b/src/plugins/platforms/offscreen/qoffscreenintegration.h
+index 0ea90f6c2f..fe00fde07c 100644
+--- a/src/plugins/platforms/offscreen/qoffscreenintegration.h
++++ b/src/plugins/platforms/offscreen/qoffscreenintegration.h
+@@ -84,6 +84,7 @@ protected:
+ #endif
+ QScopedPointer<QPlatformInputContext> m_inputContext;
+ QScopedPointer<QPlatformServices> m_services;
++ QPlatformScreen *m_screen;
+ mutable QScopedPointer<QPlatformNativeInterface> m_nativeInterface;
+ };
+
+--
+2.36.0
+
+From 6dafbf538c7c0ea8085f410e7f66c5cd86c11012 Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@kdab.com>
+Date: Fri, 25 Jun 2021 23:54:05 +0200
+Subject: [PATCH 027/146] QVarLengthArray: fix aliasing error in insert(it, n,
+ v)
+
+Taking the copy after the resize is completely pointless: the copy is
+there to ensure that `t`, being a reference potentially aliasing an
+element in [begin(), end()[ before the resize(), isn't invalidated by
+the resize(), so it must be taken before resize().
+
+Add a comment so the next rewrite doesn't cause this to be mixed up
+again.
+
+[ChangeLog][QtCore][QVarLengthArray] Fixed an aliasing bug affecting
+insertions of objects aliasing existing elements.
+
+Pick-to: 6.2 6.1 6.0 5.15 5.12
+Change-Id: I26bc449fa99bf8d09a19147a12a69ac4314cc61d
+Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
+(cherry picked from commit 6e57e41f9aef5ccfa122c10bc6253d47dafd93d2)
+---
+ src/corelib/tools/qvarlengtharray.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h
+index fd0c99c032..0110956b77 100644
+--- a/src/corelib/tools/qvarlengtharray.h
++++ b/src/corelib/tools/qvarlengtharray.h
+@@ -507,8 +507,8 @@ Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthA
+
+ int offset = int(before - ptr);
+ if (n != 0) {
++ const T copy(t); // `t` could alias an element in [begin(), end()[
+ resize(s + n);
+- const T copy(t);
+ if (!QTypeInfoQuery<T>::isRelocatable) {
+ T *b = ptr + offset;
+ T *j = ptr + s;
+--
+2.36.0
+
+From 3f530be825ce070493669df31fe6bc29be1cbac3 Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@kdab.com>
+Date: Fri, 2 Jul 2021 08:55:14 +0200
+Subject: [PATCH 028/146] Fix rvalue overload of qobject_pointer_cast for GCC
+ 9.3
+
+The code assumed that any C++ implementation would implement the
+resolution for LWG2996 in C++20 mode. While that may be the case in
+the future, the current state in GCC 9.3 as shipped in Ubuntu 20.04
+LTS is that it doesn't, which leads to tst_qsharedpointer fail there.
+
+Fix by using the safe version of std::move, std::exchange, which
+guarantees the state of the src object, no matter what the callee
+does.
+
+Pick-to: 6.2 6.1 5.15
+Change-Id: Icc39b527df4d3a7b398ff2b44bcbdf9082b81f2f
+Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
+(cherry picked from commit 0632494bd47e924ce7914b6457791d4612599e5f)
+---
+ src/corelib/tools/qsharedpointer_impl.h | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h
+index 790c187cb9..e334cefe97 100644
+--- a/src/corelib/tools/qsharedpointer_impl.h
++++ b/src/corelib/tools/qsharedpointer_impl.h
+@@ -1012,15 +1012,11 @@ std::shared_ptr<X> qobject_pointer_cast(std::shared_ptr<T> &&src)
+ using element_type = typename std::shared_ptr<X>::element_type;
+ auto castResult = qobject_cast<element_type *>(src.get());
+ if (castResult) {
+- auto result = std::shared_ptr<X>(std::move(src), castResult);
+-#if __cplusplus <= 201703L
+ // C++2a's move aliasing constructor will leave src empty.
+ // Before C++2a we don't really know if the compiler has support for it.
+ // The move aliasing constructor is the resolution for LWG2996,
+ // which does not impose a feature-testing macro. So: clear src.
+- src.reset();
+-#endif
+- return result;
++ return std::shared_ptr<X>(std::exchange(src, nullptr), castResult);
+ }
+ return std::shared_ptr<X>();
+ }
+--
+2.36.0
+
+From e7e2eb0ec4f4c1878e469e142fe4d7296498d326 Mon Sep 17 00:00:00 2001
+From: Liang Qi <liang.qi@qt.io>
+Date: Tue, 6 Jul 2021 12:00:17 +0200
+Subject: [PATCH 029/146] opengl: fix a typo in
+ QOpenGLPaintDevice::dotsPerMeterY()
+
+Fixes: QTBUG-95005
+Pick-to: 6.2 6.1 5.15 5.12
+Change-Id: I88ab9b757a5cfee520e07ac6280e31f9211342f0
+Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
+(cherry picked from commit 85831bcfe6ce36740c524d641ada79c65aadd89b)
+---
+ src/gui/opengl/qopenglpaintdevice.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/gui/opengl/qopenglpaintdevice.cpp b/src/gui/opengl/qopenglpaintdevice.cpp
+index 3920a10467..9e7d2861fd 100644
+--- a/src/gui/opengl/qopenglpaintdevice.cpp
++++ b/src/gui/opengl/qopenglpaintdevice.cpp
+@@ -331,7 +331,7 @@ void QOpenGLPaintDevice::setDotsPerMeterX(qreal dpmx)
+
+ void QOpenGLPaintDevice::setDotsPerMeterY(qreal dpmy)
+ {
+- d_ptr->dpmx = dpmy;
++ d_ptr->dpmy = dpmy;
+ }
+
+ /*!
+--
+2.36.0
+
+From f0ca94c97d2a1d43c0b96ce1ac7d523973f61efa Mon Sep 17 00:00:00 2001
+From: Milian Wolff <milian.wolff@kdab.com>
+Date: Tue, 13 Jul 2021 10:33:30 +0200
+Subject: [PATCH 030/146] Restore C++11 compatibility of QSharedPointer code
+
+Qt5 still needs to compile with C++11, so we cannot use std::exchange
+which is a C++14 feature. Use qExchange instead, which is a drop-in
+replacement.
+
+Change-Id: I1b4f62f2b67f371cfa9c0e6641656d02f03a6520
+---
+ src/corelib/tools/qsharedpointer_impl.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h
+index e334cefe97..8abb57586b 100644
+--- a/src/corelib/tools/qsharedpointer_impl.h
++++ b/src/corelib/tools/qsharedpointer_impl.h
+@@ -1016,7 +1016,7 @@ std::shared_ptr<X> qobject_pointer_cast(std::shared_ptr<T> &&src)
+ // Before C++2a we don't really know if the compiler has support for it.
+ // The move aliasing constructor is the resolution for LWG2996,
+ // which does not impose a feature-testing macro. So: clear src.
+- return std::shared_ptr<X>(std::exchange(src, nullptr), castResult);
++ return std::shared_ptr<X>(qExchange(src, nullptr), castResult);
+ }
+ return std::shared_ptr<X>();
+ }
+--
+2.36.0
+
+From e1d1aafbde70e6754f28ee7b42056ea6d2719abc Mon Sep 17 00:00:00 2001
+From: Timur Pocheptsov <timur.pocheptsov@qt.io>
+Date: Thu, 22 Jul 2021 15:49:30 +0200
+Subject: [PATCH 031/146] doCrypt() - check the error codes
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Disabled (moved into the legacy provider) DES-CBC results in a crash,
+when setting key length.
+
+Pick-to: 6.2 6.1 5.15
+Change-Id: Ie0b49424f11d8042ebecebfd3b6346263f730551
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+(cherry picked from commit b4942f7f0c56f2c5dcd783760a8c915463e8e744)
+---
+ src/network/ssl/qsslkey_openssl.cpp | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/src/network/ssl/qsslkey_openssl.cpp b/src/network/ssl/qsslkey_openssl.cpp
+index 43cb8c6de8..10f6c6c26e 100644
+--- a/src/network/ssl/qsslkey_openssl.cpp
++++ b/src/network/ssl/qsslkey_openssl.cpp
+@@ -348,7 +348,12 @@ static QByteArray doCrypt(QSslKeyPrivate::Cipher cipher, const QByteArray &data,
+
+ EVP_CIPHER_CTX *ctx = q_EVP_CIPHER_CTX_new();
+ q_EVP_CIPHER_CTX_reset(ctx);
+- q_EVP_CipherInit(ctx, type, nullptr, nullptr, enc);
++ if (q_EVP_CipherInit(ctx, type, nullptr, nullptr, enc) != 1) {
++ q_EVP_CIPHER_CTX_free(ctx);
++ QSslSocketBackendPrivate::logAndClearErrorQueue();
++ return {};
++ }
++
+ q_EVP_CIPHER_CTX_set_key_length(ctx, key.size());
+ if (cipher == QSslKeyPrivate::Rc2Cbc)
+ q_EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_SET_RC2_KEY_BITS, 8 * key.size(), nullptr);
+--
+2.36.0
+
+From fc9793a21848ecb51281780f8ee77cc75eefc64c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= <marten.nordheim@qt.io>
+Date: Mon, 2 Aug 2021 14:46:32 +0200
+Subject: [PATCH 032/146] QLibraryInfo: Add MSVC 2022
+
+Pick-to: 6.2 6.1 5.15
+Change-Id: Ie66effde6832152ee2903c467269a2822ded6653
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+Reviewed-by: Oliver Wolff <oliver.wolff@qt.io>
+(cherry picked from commit 11476e5403c0f0ed997f0ecc9e5a82501441a667)
+---
+ src/corelib/global/qlibraryinfo.cpp | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp
+index 8ceb763491..a1558a6abe 100644
+--- a/src/corelib/global/qlibraryinfo.cpp
++++ b/src/corelib/global/qlibraryinfo.cpp
+@@ -333,8 +333,10 @@ QLibraryInfo::buildDate()
+ # define COMPILER_STRING "MSVC 2015"
+ # elif _MSC_VER < 1917
+ # define COMPILER_STRING "MSVC 2017"
+-# elif _MSC_VER < 2000
++# elif _MSC_VER < 1930
+ # define COMPILER_STRING "MSVC 2019"
++# elif _MSC_VER < 2000
++# define COMPILER_STRING "MSVC 2022"
+ # else
+ # define COMPILER_STRING "MSVC _MSC_VER " QT_STRINGIFY(_MSC_VER)
+ # endif
+--
+2.36.0
+
+From 8bc49484cc87c653ae395f3818586195fc20887a Mon Sep 17 00:00:00 2001
+From: Thiago Macieira <thiago.macieira@intel.com>
+Date: Mon, 9 Aug 2021 13:04:45 -0700
+Subject: [PATCH 033/146] MySQL: remove the version number checks in favor of
+ actual functionality
+
+MariaDB library version 3.2 no longer returns the server version in the
+10.x range but the library version itself, which is lower than 4.x. That
+meant we concluded the server did not support prepared statements.
+
+And because of the lack of prepared statements, all QDateTime
+conversions failed, because of the timezone. I don't know if this was
+intended or what, but it's a side issue.
+
+[ChangeLog][QtSql][MySQL] Fixed the detection of whether the client and
+server support prepared statements. This was caused by the mariadb
+connector library reporting its own version numbers (starting in version
+3.2) instead of the server version.
+
+Fixes: QTBUG-95071
+Pick-to: 5.15 6.2
+Change-Id: I4a40ccbd3321467a8429fffd1699bc089ba706e6
+Reviewed-by: Andy Shaw <andy.shaw@qt.io>
+Reviewed-by: Fabian Vogt <fabian@ritter-vogt.de>
+(cherry picked from commit 211369133cf40b2f522caaff259c19069ed23ca4)
+---
+ src/plugins/sqldrivers/mysql/qsql_mysql.cpp | 17 +++++++++++++++--
+ 1 file changed, 15 insertions(+), 2 deletions(-)
+
+diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
+index a641935dc5..7ca055eea2 100644
+--- a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
++++ b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
+@@ -158,6 +158,20 @@ static inline QVariant qDateTimeFromString(QString &val)
+ #endif
+ }
+
++// check if this client and server version of MySQL/MariaDB support prepared statements
++static inline bool checkPreparedQueries(MYSQL *mysql)
++{
++ std::unique_ptr<MYSQL_STMT, decltype(&mysql_stmt_close)> stmt(mysql_stmt_init(mysql), &mysql_stmt_close);
++ if (!stmt)
++ return false;
++
++ static const char dummyQuery[] = "SELECT ? + ?";
++ if (mysql_stmt_prepare(stmt.get(), dummyQuery, sizeof(dummyQuery) - 1))
++ return false;
++
++ return mysql_stmt_param_count(stmt.get()) == 2;
++}
++
+ class QMYSQLResultPrivate;
+
+ class QMYSQLResult : public QSqlResult
+@@ -1371,8 +1385,7 @@ bool QMYSQLDriver::open(const QString& db,
+ }
+ #endif // MYSQL_VERSION_ID >= 50007
+
+- d->preparedQuerysEnabled = mysql_get_client_version() >= 40108
+- && mysql_get_server_version(d->mysql) >= 40100;
++ d->preparedQuerysEnabled = checkPreparedQueries(d->mysql);
+
+ #if QT_CONFIG(thread)
+ mysql_thread_init();
+--
+2.36.0
+
+From 573455fc4fa40250082eec4c877276c480454f42 Mon Sep 17 00:00:00 2001
+From: Antonio Rojas <arojas@archlinux.org>
+Date: Wed, 11 Aug 2021 09:27:15 +0200
+Subject: [PATCH 034/146] Remove another usage of mysql_get_client_version()
+
+As of MariaDB 10.6, mysql_get_client_version returns the C library version, which breaks the version comparison.
+
+This is a partial backport of 8ab3b54fb7038477b9f5d366bcdcdb173e01e219, the Qt 6 commit that (among other things) removes this usage.
+Backporting the full commit seems overkill, we backport only the mysql_get_client_version() removal which should be safe according to upstream devs in https://bugreports.qt.io/browse/QTBUG-95071
+---
+ src/plugins/sqldrivers/mysql/qsql_mysql.cpp | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
+index 7ca055eea2..4b9b396946 100644
+--- a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
++++ b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
+@@ -1369,20 +1369,20 @@ bool QMYSQLDriver::open(const QString& db,
+ }
+
+ #if MYSQL_VERSION_ID >= 50007
+- if (mysql_get_client_version() >= 50503 && mysql_get_server_version(d->mysql) >= 50503) {
+- // force the communication to be utf8mb4 (only utf8mb4 supports 4-byte characters)
+- mysql_set_character_set(d->mysql, "utf8mb4");
++ // force the communication to be utf8mb4 (only utf8mb4 supports 4-byte characters)
++ if (mysql_set_character_set(d->mysql, "utf8mb4")) {
++ // this failed, try forcing it to utf (BMP only)
++ if (mysql_set_character_set(d->mysql, "utf8"))
++ qWarning() << "MySQL: Unable to set the client character set to utf8.";
+ #if QT_CONFIG(textcodec)
+- d->tc = QTextCodec::codecForName("UTF-8");
++ else
++ d->tc = codec(d->mysql);
+ #endif
+- } else
+- {
+- // force the communication to be utf8
+- mysql_set_character_set(d->mysql, "utf8");
++ }
+ #if QT_CONFIG(textcodec)
+- d->tc = codec(d->mysql);
++ else
++ d->tc = QTextCodec::codecForName("UTF-8");
+ #endif
+- }
+ #endif // MYSQL_VERSION_ID >= 50007
+
+ d->preparedQuerysEnabled = checkPreparedQueries(d->mysql);
+--
+2.36.0
+
+From 53d3b0d9d8b9c994485b9f7f6b3f8e741528d714 Mon Sep 17 00:00:00 2001
+From: Liang Qi <liang.qi@qt.io>
+Date: Wed, 7 Jul 2021 13:19:14 +0200
+Subject: [PATCH 035/146] xcb: add a timeout control when reading INCR property
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+For the first call of QXcbClipboard::clipboardReadProperty()
+inside of clipboardReadIncrementalProperty() in getSelection(),
+it will get a XCB_NONE reply before the contents arrived via
+property change. Then we give a chance to read more.
+
+Manually tested with following setups:
+* examples/widgets/mainwindows/application with gvim(gtk3)
+* examples/widgets/widgets/imageviewer with GIMP 2.10.18(based on
+gtk2) and GIMP 2.99.6(based on gtk3 via flatpak)
+
+Fixes: QTBUG-56595
+Pick-to: 5.12 5.15 6.1 6.2
+Done-With: JiDe Zhang <zhangjide@uniontech.com>
+Change-Id: Ib45f08464d39ad79137b1da99808c89b7dca2d08
+Reviewed-by: JiDe Zhang <zhangjide@uniontech.com>
+Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
+(cherry picked from commit 02248eea5562c1df39ee23f195011afacc6759b0)
+---
+ src/plugins/platforms/xcb/qxcbclipboard.cpp | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/src/plugins/platforms/xcb/qxcbclipboard.cpp b/src/plugins/platforms/xcb/qxcbclipboard.cpp
+index 0a4d675606..dabdfcb6c5 100644
+--- a/src/plugins/platforms/xcb/qxcbclipboard.cpp
++++ b/src/plugins/platforms/xcb/qxcbclipboard.cpp
+@@ -835,6 +835,8 @@ QByteArray QXcbClipboard::clipboardReadIncrementalProperty(xcb_window_t win, xcb
+ alloc_error = buf.size() != nbytes+1;
+ }
+
++ QElapsedTimer timer;
++ timer.start();
+ for (;;) {
+ connection()->flush();
+ xcb_generic_event_t *ge = waitForClipboardEvent(win, XCB_PROPERTY_NOTIFY);
+@@ -870,9 +872,11 @@ QByteArray QXcbClipboard::clipboardReadIncrementalProperty(xcb_window_t win, xcb
+ tmp_buf.resize(0);
+ offset += length;
+ }
+- } else {
+- break;
+ }
++
++ const auto elapsed = timer.elapsed();
++ if (elapsed > clipboard_timeout)
++ break;
+ }
+
+ // timed out ... create a new requestor window, otherwise the requestor
+--
+2.36.0
+
+From 55117ba29b794aedc92d7f55a3a1389046b46be4 Mon Sep 17 00:00:00 2001
+From: Eirik Aavitsland <eirik.aavitsland@qt.io>
+Date: Tue, 13 Apr 2021 14:23:45 +0200
+Subject: [PATCH 036/146] Avoid processing-intensive painting of high number of
+ tiny dashes
+
+When stroking a dashed path, an unnecessary amount of processing would
+be spent if there is a huge number of dashes visible, e.g. because of
+scaling. Since the dashes are too small to be indivdually visible
+anyway, just replace with a semi-transparent solid line for such
+cases.
+
+Pick-to: 6.1 6.0 5.15
+Change-Id: I9e9f7861257ad5bce46a0cf113d1a9d7824911e6
+Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
+(cherry picked from commit f4d791b330d02777fcaf02938732892eb3167e9b)
+
+* asturmlechner 2021-08-21:
+Conflict from preceding 94dd2ceb in dev branch:
+ src/gui/painting/qpaintengineex.cpp
+ Resolved via:
+
+ if (pen.style() > Qt::SolidLine) {
+ QRectF cpRect = path.controlPointRect();
+ const QTransform &xf = state()->matrix;
+- if (pen.isCosmetic()) {
++ if (qt_pen_is_cosmetic(pen, state()->renderHints)){
+ clipRect = d->exDeviceRect;
+ cpRect.translate(xf.dx(), xf.dy());
+ } else {
+
+FTBFS from preceding 471e4fcb in dev branch changing QVector to QList:
+ Resolved via:
+
+ QRectF extentRect = cpRect.adjusted(-pw, -pw, pw, pw) & clipRect;
+ qreal extent = qMax(extentRect.width(), extentRect.height());
+ qreal patternLength = 0;
+- const QList<qreal> pattern = pen.dashPattern();
++ const QVector<qreal> pattern = pen.dashPattern();
+ const int patternSize = qMin(pattern.size(), 32);
+ for (int i = 0; i < patternSize; i++)
+ patternLength += qMax(pattern.at(i), qreal(0));
+---
+ src/gui/painting/qpaintengineex.cpp | 44 +++++++++++++++----
+ .../other/lancelot/scripts/tinydashes.qps | 34 ++++++++++++++
+ 2 files changed, 69 insertions(+), 9 deletions(-)
+ create mode 100644 tests/auto/other/lancelot/scripts/tinydashes.qps
+
+diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp
+index 5d8f89eadd..55fdb0c2a0 100644
+--- a/src/gui/painting/qpaintengineex.cpp
++++ b/src/gui/painting/qpaintengineex.cpp
+@@ -385,7 +385,7 @@ QPainterState *QPaintEngineEx::createState(QPainterState *orig) const
+
+ Q_GUI_EXPORT extern bool qt_scaleForTransform(const QTransform &transform, qreal *scale); // qtransform.cpp
+
+-void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &pen)
++void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &inPen)
+ {
+ #ifdef QT_DEBUG_DRAW
+ qDebug() << "QPaintEngineEx::stroke()" << pen;
+@@ -403,6 +403,38 @@ void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &pen)
+ d->stroker.setCubicToHook(qpaintengineex_cubicTo);
+ }
+
++ QRectF clipRect;
++ QPen pen = inPen;
++ if (pen.style() > Qt::SolidLine) {
++ QRectF cpRect = path.controlPointRect();
++ const QTransform &xf = state()->matrix;
++ if (qt_pen_is_cosmetic(pen, state()->renderHints)){
++ clipRect = d->exDeviceRect;
++ cpRect.translate(xf.dx(), xf.dy());
++ } else {
++ clipRect = xf.inverted().mapRect(QRectF(d->exDeviceRect));
++ }
++ // Check to avoid generating unwieldy amount of dashes that will not be visible anyway
++ QRectF extentRect = cpRect & clipRect;
++ qreal extent = qMax(extentRect.width(), extentRect.height());
++ qreal patternLength = 0;
++ const QVector<qreal> pattern = pen.dashPattern();
++ const int patternSize = qMin(pattern.size(), 32);
++ for (int i = 0; i < patternSize; i++)
++ patternLength += qMax(pattern.at(i), qreal(0));
++ if (pen.widthF())
++ patternLength *= pen.widthF();
++ if (qFuzzyIsNull(patternLength)) {
++ pen.setStyle(Qt::NoPen);
++ } else if (extent / patternLength > 10000) {
++ // approximate stream of tiny dashes with semi-transparent solid line
++ pen.setStyle(Qt::SolidLine);
++ QColor color(pen.color());
++ color.setAlpha(color.alpha() / 2);
++ pen.setColor(color);
++ }
++ }
++
+ if (!qpen_fast_equals(pen, d->strokerPen)) {
+ d->strokerPen = pen;
+ d->stroker.setJoinStyle(pen.joinStyle());
+@@ -430,14 +462,8 @@ void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &pen)
+ return;
+ }
+
+- if (pen.style() > Qt::SolidLine) {
+- if (qt_pen_is_cosmetic(pen, state()->renderHints)){
+- d->activeStroker->setClipRect(d->exDeviceRect);
+- } else {
+- QRectF clipRect = state()->matrix.inverted().mapRect(QRectF(d->exDeviceRect));
+- d->activeStroker->setClipRect(clipRect);
+- }
+- }
++ if (!clipRect.isNull())
++ d->activeStroker->setClipRect(clipRect);
+
+ if (d->activeStroker == &d->stroker)
+ d->stroker.setForceOpen(path.hasExplicitOpen());
+diff --git a/tests/auto/other/lancelot/scripts/tinydashes.qps b/tests/auto/other/lancelot/scripts/tinydashes.qps
+new file mode 100644
+index 0000000000..d41ced7f5f
+--- /dev/null
++++ b/tests/auto/other/lancelot/scripts/tinydashes.qps
+@@ -0,0 +1,34 @@
++# Version: 1
++# CheckVsReference: 5%
++
++path_addEllipse mypath 20.0 20.0 200.0 200.0
++
++save
++setPen blue 20 SolidLine FlatCap
++pen_setCosmetic true
++pen_setDashPattern [ 0.0004 0.0004 ]
++setBrush yellow
++
++drawPath mypath
++translate 300 0
++setRenderHint Antialiasing true
++drawPath mypath
++restore
++
++path_addEllipse bigpath 200000.0 200000.0 2000000.0 2000000.0
++
++setPen blue 20 DotLine FlatCap
++setBrush yellow
++
++save
++translate 0 300
++scale 0.0001 0.00011
++drawPath bigpath
++restore
++
++save
++translate 300 300
++setRenderHint Antialiasing true
++scale 0.0001 0.00011
++drawPath bigpath
++restore
+--
+2.36.0
+
+From a2f813d284bb05a68df085b70feaf61c540b9f9a Mon Sep 17 00:00:00 2001
+From: Eirik Aavitsland <eirik.aavitsland@qt.io>
+Date: Fri, 23 Jul 2021 15:53:56 +0200
+Subject: [PATCH 037/146] Improve fix for avoiding huge number of tiny dashes
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Some pathological cases were not caught by the previous fix.
+
+Fixes: QTBUG-95239
+Pick-to: 6.2 6.1 5.15
+Change-Id: I0337ee3923ff93ccb36c4d7b810a9c0667354cc5
+Reviewed-by: Robert Löhning <robert.loehning@qt.io>
+(cherry picked from commit 6b400e3147dcfd8cc3a393ace1bd118c93762e0c)
+---
+ src/gui/painting/qpaintengineex.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp
+index 55fdb0c2a0..19e4b23423 100644
+--- a/src/gui/painting/qpaintengineex.cpp
++++ b/src/gui/painting/qpaintengineex.cpp
+@@ -426,7 +426,7 @@ void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &inPen)
+ patternLength *= pen.widthF();
+ if (qFuzzyIsNull(patternLength)) {
+ pen.setStyle(Qt::NoPen);
+- } else if (extent / patternLength > 10000) {
++ } else if (qFuzzyIsNull(extent) || extent / patternLength > 10000) {
+ // approximate stream of tiny dashes with semi-transparent solid line
+ pen.setStyle(Qt::SolidLine);
+ QColor color(pen.color());
+--
+2.36.0
+
+From e553fb304c0ca91cb6764011868db632756c98bf Mon Sep 17 00:00:00 2001
+From: Eirik Aavitsland <eirik.aavitsland@qt.io>
+Date: Fri, 30 Jul 2021 13:03:49 +0200
+Subject: [PATCH 038/146] Refix for avoiding huge number of tiny dashes
+
+Previous fix hit too widely so some valid horizontal and vertical
+lines were affected; the root problem being that such lines have an
+empty control point rect (width or height is 0). Fix by caculating in
+the pen width.
+
+Pick-to: 6.2 6.1 5.15
+Change-Id: I7a436e873f6d485028f6759d0e2c6456f07eebdc
+Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
+(cherry picked from commit 84aba80944a2e1c3058d7a1372e0e66676411884)
+---
+ src/gui/painting/qpaintengineex.cpp | 8 ++---
+ .../gui/painting/qpainter/tst_qpainter.cpp | 31 +++++++++++++++++++
+ 2 files changed, 35 insertions(+), 4 deletions(-)
+
+diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp
+index 19e4b23423..9fe510827a 100644
+--- a/src/gui/painting/qpaintengineex.cpp
++++ b/src/gui/painting/qpaintengineex.cpp
+@@ -415,18 +415,18 @@ void QPaintEngineEx::stroke(const QVectorPath &path, const QPen &inPen)
+ clipRect = xf.inverted().mapRect(QRectF(d->exDeviceRect));
+ }
+ // Check to avoid generating unwieldy amount of dashes that will not be visible anyway
+- QRectF extentRect = cpRect & clipRect;
++ qreal pw = pen.widthF() ? pen.widthF() : 1;
++ QRectF extentRect = cpRect.adjusted(-pw, -pw, pw, pw) & clipRect;
+ qreal extent = qMax(extentRect.width(), extentRect.height());
+ qreal patternLength = 0;
+ const QVector<qreal> pattern = pen.dashPattern();
+ const int patternSize = qMin(pattern.size(), 32);
+ for (int i = 0; i < patternSize; i++)
+ patternLength += qMax(pattern.at(i), qreal(0));
+- if (pen.widthF())
+- patternLength *= pen.widthF();
++ patternLength *= pw;
+ if (qFuzzyIsNull(patternLength)) {
+ pen.setStyle(Qt::NoPen);
+- } else if (qFuzzyIsNull(extent) || extent / patternLength > 10000) {
++ } else if (extent / patternLength > 10000) {
+ // approximate stream of tiny dashes with semi-transparent solid line
+ pen.setStyle(Qt::SolidLine);
+ QColor color(pen.color());
+diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
+index 42e98ce363..d7c3f95f1d 100644
+--- a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
++++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
+@@ -308,6 +308,7 @@ private slots:
+ void fillPolygon();
+
+ void drawImageAtPointF();
++ void scaledDashes();
+
+ private:
+ void fillData();
+@@ -5468,6 +5469,36 @@ void tst_QPainter::drawImageAtPointF()
+ paint.end();
+ }
+
++void tst_QPainter::scaledDashes()
++{
++ // Test that we do not hit the limit-huge-number-of-dashes path
++ QRgb fore = qRgb(0, 0, 0xff);
++ QRgb back = qRgb(0xff, 0xff, 0);
++ QImage image(5, 32, QImage::Format_RGB32);
++ image.fill(back);
++ QPainter p(&image);
++ QPen pen(QColor(fore), 3, Qt::DotLine);
++ p.setPen(pen);
++ p.scale(1, 2);
++ p.drawLine(2, 0, 2, 16);
++ p.end();
++
++ bool foreFound = false;
++ bool backFound = false;
++ int i = 0;
++ while (i < 32 && (!foreFound || !backFound)) {
++ QRgb pix = image.pixel(3, i);
++ if (pix == fore)
++ foreFound = true;
++ else if (pix == back)
++ backFound = true;
++ i++;
++ }
++
++ QVERIFY(foreFound);
++ QVERIFY(backFound);
++}
++
+ QTEST_MAIN(tst_QPainter)
+
+ #include "tst_qpainter.moc"
+--
+2.36.0
+
+From ea2cd18f60eb32b71b859ff64b62c2d5d1dc3126 Mon Sep 17 00:00:00 2001
+From: Kylie McClain <kylie@somas.is>
+Date: Sat, 30 Nov 2019 19:24:34 -0500
+Subject: [PATCH 039/146] linux-clang/qplatformdefs: fix building with musl
+ libc
+
+This is basically a duplicate of the commit which fixed building with
+musl, but on linux-g++, 813f468a14fb84af43c1f8fc0a1430277358eba2.
+
+Change-Id: I399005ac6947ba3f2b4ed5087472cd9d54a0850d
+Reviewed-by: Joerg Bornemann <joerg.bornemann@qt.io>
+(cherry picked from commit a421e40984a61b7051d045832af07988d692f67d)
+---
+ mkspecs/linux-clang/qplatformdefs.h | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/mkspecs/linux-clang/qplatformdefs.h b/mkspecs/linux-clang/qplatformdefs.h
+index a818d973f0..34cd665883 100644
+--- a/mkspecs/linux-clang/qplatformdefs.h
++++ b/mkspecs/linux-clang/qplatformdefs.h
+@@ -81,11 +81,7 @@
+
+ #undef QT_SOCKLEN_T
+
+-#if defined(__GLIBC__) && (__GLIBC__ >= 2)
+ #define QT_SOCKLEN_T socklen_t
+-#else
+-#define QT_SOCKLEN_T int
+-#endif
+
+ #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
+ #define QT_SNPRINTF ::snprintf
+--
+2.36.0
+
+From aa29e6963cf2cc1a6238cfea62935b579f5d9e0a Mon Sep 17 00:00:00 2001
+From: Joerg Bornemann <joerg.bornemann@qt.io>
+Date: Mon, 20 Apr 2020 07:53:54 +0200
+Subject: [PATCH 040/146] Remove checks for glibc < 2 from qplatformdefs.h
+ files
+
+The last release of glibc 1 was 1995 and can be considered outdated.
+
+Also, the current check prevented building with e.g. musl libc.
+
+Every file that includes common/posix/qplatformdefs.h already has
+QT_SOCKLEN_T defined to socklen_t, so remove the definition from those
+completely.
+
+This is a continuation of 813f468a and a421e409.
+
+Change-Id: Icf2692a8e814286487662e290a8f844872eefe53
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit 1c7950081f926475bbdaa18379c2f51f99fcb3bb)
+---
+ mkspecs/common/android/qplatformdefs.h | 4 ----
+ mkspecs/linux-clang/qplatformdefs.h | 4 ----
+ mkspecs/linux-g++/qplatformdefs.h | 8 --------
+ mkspecs/linux-llvm/qplatformdefs.h | 8 --------
+ mkspecs/linux-lsb-g++/qplatformdefs.h | 7 -------
+ mkspecs/lynxos-g++/qplatformdefs.h | 8 --------
+ 6 files changed, 39 deletions(-)
+
+diff --git a/mkspecs/common/android/qplatformdefs.h b/mkspecs/common/android/qplatformdefs.h
+index f75bc4093b..2bd59410d4 100644
+--- a/mkspecs/common/android/qplatformdefs.h
++++ b/mkspecs/common/android/qplatformdefs.h
+@@ -144,11 +144,7 @@
+ #define QT_SIGNAL_ARGS int
+ #define QT_SIGNAL_IGNORE SIG_IGN
+
+-#if defined(__GLIBC__) && (__GLIBC__ >= 2)
+ #define QT_SOCKLEN_T socklen_t
+-#else
+-#define QT_SOCKLEN_T int
+-#endif
+
+ #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
+ #define QT_SNPRINTF ::snprintf
+diff --git a/mkspecs/linux-clang/qplatformdefs.h b/mkspecs/linux-clang/qplatformdefs.h
+index 34cd665883..c1ab72fbc6 100644
+--- a/mkspecs/linux-clang/qplatformdefs.h
++++ b/mkspecs/linux-clang/qplatformdefs.h
+@@ -79,10 +79,6 @@
+ #define QT_USE_XOPEN_LFS_EXTENSIONS
+ #include "../common/posix/qplatformdefs.h"
+
+-#undef QT_SOCKLEN_T
+-
+-#define QT_SOCKLEN_T socklen_t
+-
+ #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
+ #define QT_SNPRINTF ::snprintf
+ #define QT_VSNPRINTF ::vsnprintf
+diff --git a/mkspecs/linux-g++/qplatformdefs.h b/mkspecs/linux-g++/qplatformdefs.h
+index 13523f0702..4d2750d9ec 100644
+--- a/mkspecs/linux-g++/qplatformdefs.h
++++ b/mkspecs/linux-g++/qplatformdefs.h
+@@ -79,14 +79,6 @@
+ #define QT_USE_XOPEN_LFS_EXTENSIONS
+ #include "../common/posix/qplatformdefs.h"
+
+-#undef QT_SOCKLEN_T
+-
+-#if defined(__GLIBC__) && (__GLIBC__ < 2)
+-#define QT_SOCKLEN_T int
+-#else
+-#define QT_SOCKLEN_T socklen_t
+-#endif
+-
+ #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
+ #define QT_SNPRINTF ::snprintf
+ #define QT_VSNPRINTF ::vsnprintf
+diff --git a/mkspecs/linux-llvm/qplatformdefs.h b/mkspecs/linux-llvm/qplatformdefs.h
+index dc750ab1ef..d3cc39b47f 100644
+--- a/mkspecs/linux-llvm/qplatformdefs.h
++++ b/mkspecs/linux-llvm/qplatformdefs.h
+@@ -80,14 +80,6 @@
+ #define QT_USE_XOPEN_LFS_EXTENSIONS
+ #include "../common/posix/qplatformdefs.h"
+
+-#undef QT_SOCKLEN_T
+-
+-#if defined(__GLIBC__) && (__GLIBC__ >= 2)
+-#define QT_SOCKLEN_T socklen_t
+-#else
+-#define QT_SOCKLEN_T int
+-#endif
+-
+ #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
+ #define QT_SNPRINTF ::snprintf
+ #define QT_VSNPRINTF ::vsnprintf
+diff --git a/mkspecs/linux-lsb-g++/qplatformdefs.h b/mkspecs/linux-lsb-g++/qplatformdefs.h
+index 4c4e53da2a..83baffb3e3 100644
+--- a/mkspecs/linux-lsb-g++/qplatformdefs.h
++++ b/mkspecs/linux-lsb-g++/qplatformdefs.h
+@@ -85,16 +85,9 @@
+ #include "../common/posix/qplatformdefs.h"
+
+ #undef QT_OPEN_LARGEFILE
+-#undef QT_SOCKLEN_T
+
+ #define QT_OPEN_LARGEFILE 0
+
+-#if defined(__GLIBC__) && (__GLIBC__ >= 2)
+-#define QT_SOCKLEN_T socklen_t
+-#else
+-#define QT_SOCKLEN_T int
+-#endif
+-
+ #ifndef SIOCGIFBRDADDR
+ # define SIOCGIFBRDADDR 0x8919
+ #endif
+diff --git a/mkspecs/lynxos-g++/qplatformdefs.h b/mkspecs/lynxos-g++/qplatformdefs.h
+index 4339ea2b23..6007af0055 100644
+--- a/mkspecs/lynxos-g++/qplatformdefs.h
++++ b/mkspecs/lynxos-g++/qplatformdefs.h
+@@ -72,14 +72,6 @@
+
+ #include "../common/posix/qplatformdefs.h"
+
+-#undef QT_SOCKLEN_T
+-
+-#if defined(__GLIBC__) && (__GLIBC__ >= 2)
+-#define QT_SOCKLEN_T socklen_t
+-#else
+-#define QT_SOCKLEN_T int
+-#endif
+-
+ #if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE >= 500)
+ #define QT_SNPRINTF ::snprintf
+ #define QT_VSNPRINTF ::vsnprintf
+--
+2.36.0
+
+From f67b0d8a60c0a705aac7dcfbf84749178a8cdd99 Mon Sep 17 00:00:00 2001
+From: Thiago Macieira <thiago.macieira@intel.com>
+Date: Fri, 13 Aug 2021 15:19:55 -0700
+Subject: [PATCH 041/146] MySQL: treat the MYSQL_FIELD as read-only
+
+The MariaDB-connector-c version 3.2 and MariaDB server version 10.6
+cooperate to avoid re-transferring the query metadata, so the fact that
+we were modifying it was causing it to improperly decode the DATETIME
+data types into string, as we had asked. We ended up with a 7-byte
+string that was actually the date binary-encoded.
+
+References:
+ - https://jira.mariadb.org/browse/MDEV-26271
+ - https://github.com/MythTV/mythtv/issues/373
+ - https://bugs.kde.org/show_bug.cgi?id=440296
+
+Fixes: QTBUG-95639
+Change-Id: I4a40ccbd3321467a8429fffd169afdbb26cf29f6
+Reviewed-by: Andy Shaw <andy.shaw@qt.io>
+(cherry picked from commit 549ee216fd5bf2b3810e940bcbd4bbd8c64ac73f)
+Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
+(cherry picked from commit 94d22e0bcc893448d53b718f4a2732bd13fc21e4)
+---
+ src/plugins/sqldrivers/mysql/qsql_mysql.cpp | 27 ++++++++++-----------
+ 1 file changed, 13 insertions(+), 14 deletions(-)
+
+diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
+index 4b9b396946..ceee4a3a59 100644
+--- a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
++++ b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
+@@ -223,7 +223,7 @@ public:
+ struct QMyField
+ {
+ char *outField = nullptr;
+- MYSQL_FIELD *myField = nullptr;
++ const MYSQL_FIELD *myField = nullptr;
+ QMetaType::Type type = QMetaType::UnknownType;
+ my_bool nullIndicator = false;
+ ulong bufLength = 0ul;
+@@ -361,7 +361,7 @@ static bool qIsInteger(int t)
+ void QMYSQLResultPrivate::bindBlobs()
+ {
+ int i;
+- MYSQL_FIELD *fieldInfo;
++ const MYSQL_FIELD *fieldInfo;
+ MYSQL_BIND *bind;
+
+ for(i = 0; i < fields.count(); ++i) {
+@@ -392,35 +392,34 @@ bool QMYSQLResultPrivate::bindInValues()
+ inBinds = new MYSQL_BIND[fields.size()];
+ memset(inBinds, 0, fields.size() * sizeof(MYSQL_BIND));
+
+- MYSQL_FIELD *fieldInfo;
++ const MYSQL_FIELD *fieldInfo;
+
+ while((fieldInfo = mysql_fetch_field(meta))) {
++ bind = &inBinds[i];
++
+ QMyField &f = fields[i];
+ f.myField = fieldInfo;
+-
++ bind->buffer_length = f.bufLength = fieldInfo->length + 1;
++ bind->buffer_type = fieldInfo->type;
+ f.type = qDecodeMYSQLType(fieldInfo->type, fieldInfo->flags);
+ if (qIsBlob(fieldInfo->type)) {
+ // the size of a blob-field is available as soon as we call
+ // mysql_stmt_store_result()
+ // after mysql_stmt_exec() in QMYSQLResult::exec()
+- fieldInfo->length = 0;
++ bind->buffer_length = f.bufLength = 0;
+ hasBlobs = true;
+ } else if (qIsInteger(f.type)) {
+- fieldInfo->length = 8;
++ bind->buffer_length = f.bufLength = 8;
+ } else {
+- fieldInfo->type = MYSQL_TYPE_STRING;
++ bind->buffer_type = MYSQL_TYPE_STRING;
+ }
+- bind = &inBinds[i];
+- field = new char[fieldInfo->length + 1];
+- memset(field, 0, fieldInfo->length + 1);
+
+- bind->buffer_type = fieldInfo->type;
+- bind->buffer = field;
+- bind->buffer_length = f.bufLength = fieldInfo->length + 1;
+ bind->is_null = &f.nullIndicator;
+ bind->length = &f.bufLength;
+ bind->is_unsigned = fieldInfo->flags & UNSIGNED_FLAG ? 1 : 0;
+- f.outField=field;
++
++ char *field = new char[bind->buffer_length + 1]{};
++ bind->buffer = f.outField = field;
+
+ ++i;
+ }
+--
+2.36.0
+
+From 7a0e9154fef4fa417a6b00b1dae130648e5ee4d7 Mon Sep 17 00:00:00 2001
+From: David Faure <david.faure@kdab.com>
+Date: Thu, 19 Aug 2021 15:07:13 +0200
+Subject: [PATCH 042/146] Revert "QString::lastIndexOf: fix off-by-one for zero
+ length matches"
+
+This reverts commit 3a273ac47f20e82a1f2f63411b210025ca0f4495.
+
+See QTBUG-94215
+
+6cee204d56205e250b0675c9c6d4dd8a2367f3c4 for qtbase/dev changes the
+behaviour even further, I'm pretty sure we don't want that in Qt 5.15.x,
+see discussion in https://codereview.qt-project.org/c/qt/qtbase/+/365179.
+
+Change-Id: I663d74e0d44ebf46291fe0e8a7dc609be82eedc6
+---
+ src/corelib/text/qstring.cpp | 4 ++--
+ tests/auto/corelib/text/qstring/tst_qstring.cpp | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/corelib/text/qstring.cpp b/src/corelib/text/qstring.cpp
+index 3779b90d6f..4be5c6d357 100644
+--- a/src/corelib/text/qstring.cpp
++++ b/src/corelib/text/qstring.cpp
+@@ -4562,13 +4562,13 @@ int QString::lastIndexOf(const QRegularExpression &re, int from, QRegularExpress
+ return -1;
+ }
+
+- int endpos = (from < 0) ? (size() + from + 1) : (from);
++ int endpos = (from < 0) ? (size() + from + 1) : (from + 1);
+ QRegularExpressionMatchIterator iterator = re.globalMatch(*this);
+ int lastIndex = -1;
+ while (iterator.hasNext()) {
+ QRegularExpressionMatch match = iterator.next();
+ int start = match.capturedStart();
+- if (start <= endpos) {
++ if (start < endpos) {
+ lastIndex = start;
+ if (rmatch)
+ *rmatch = std::move(match);
+diff --git a/tests/auto/corelib/text/qstring/tst_qstring.cpp b/tests/auto/corelib/text/qstring/tst_qstring.cpp
+index 8f53824050..4c4a8f0416 100644
+--- a/tests/auto/corelib/text/qstring/tst_qstring.cpp
++++ b/tests/auto/corelib/text/qstring/tst_qstring.cpp
+@@ -1674,7 +1674,7 @@ void tst_QString::lastIndexOf()
+ QCOMPARE(haystack.lastIndexOf(needle.toLatin1(), from, cs), expected);
+ QCOMPARE(haystack.lastIndexOf(needle.toLatin1().data(), from, cs), expected);
+
+- if (from >= -1 && from < haystack.size() && needle.size() > 0) {
++ if (from >= -1 && from < haystack.size()) {
+ // unfortunately, QString and QRegExp don't have the same out of bound semantics
+ // I think QString is wrong -- See file log for contact information.
+ {
+--
+2.36.0
+
+From b68fc2a0048504ad47c8d8c521ba314e5ccbef54 Mon Sep 17 00:00:00 2001
+From: Volker Krause <vkrause@kde.org>
+Date: Sun, 12 Sep 2021 10:02:09 +0200
+Subject: [PATCH 043/146] Fix access to content: URLs with transient read/write
+ permissions
+
+The current code assumed that the lack of persistent permissions means
+we cannot access the file at all. That however isn't the case for
+content: URLs we get e.g. via Intents, those are accessible perfectly
+fine via QFile, we just don't have (and can't obtain) persistent
+permissions for them.
+
+This is done by continuing in the case of not having persistent
+permissions and checking for SecurityExceptions that are thrown when
+accessing content: URLs we really have no permission for.
+
+Pick-to: 6.2 5.15
+Change-Id: I39115a7730d717eb9517e4f1c1a57e40988001a5
+Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
+(cherry picked from commit ec497d5e6587ac247a326fb9a0a11c37bb197786)
+---
+ .../org/qtproject/qt5/android/QtNative.java | 38 ++++++++++---------
+ 1 file changed, 21 insertions(+), 17 deletions(-)
+
+diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
+index dbd356f7a5..09c8af3dad 100644
+--- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
++++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
+@@ -114,6 +114,7 @@ public class QtNative
+ public static QtThread m_qtThread = new QtThread();
+ private static HashMap<String, Uri> m_cachedUris = new HashMap<String, Uri>();
+ private static ArrayList<String> m_knownDirs = new ArrayList<String>();
++ private static final String NoPermissionErrorMessage = "No permissions to open Uri";
+
+ private static final Runnable runPendingCppRunnablesRunnable = new Runnable() {
+ @Override
+@@ -191,11 +192,10 @@ public class QtNative
+ return iterUri;
+ }
+
+- // Android 6 and earlier could still manage to open the file so we can return the
+- // parsed uri here
+- if (Build.VERSION.SDK_INT < 24)
+- return parsedUri;
+- return null;
++ // if we only have transient permissions on uri all the above will fail,
++ // but we will be able to read the file anyway, so continue with uri here anyway
++ // and check for SecurityExceptions later
++ return parsedUri;
+ } catch (SecurityException e) {
+ e.printStackTrace();
+ return null;
+@@ -242,7 +242,7 @@ public class QtNative
+ int error = -1;
+
+ if (uri == null) {
+- Log.e(QtTAG, "openFdForContentUrl(): No permissions to open Uri");
++ Log.e(QtTAG, "openFdForContentUrl(): " + NoPermissionErrorMessage);
+ return error;
+ }
+
+@@ -252,12 +252,13 @@ public class QtNative
+ return fdDesc.detachFd();
+ } catch (FileNotFoundException e) {
+ e.printStackTrace();
+- return error;
+ } catch (IllegalArgumentException e) {
+ Log.e(QtTAG, "openFdForContentUrl(): Invalid Uri");
+ e.printStackTrace();
+- return error;
++ } catch (SecurityException e) {
++ Log.e(QtTAG, NoPermissionErrorMessage);
+ }
++ return error;
+ }
+
+ public static long getSize(Context context, String contentUrl)
+@@ -268,7 +269,7 @@ public class QtNative
+ uri = getUriWithValidPermission(context, contentUrl, "r");
+
+ if (uri == null) {
+- Log.e(QtTAG, "getSize(): No permissions to open Uri");
++ Log.e(QtTAG, NoPermissionErrorMessage);
+ return size;
+ } else if (!m_cachedUris.containsKey(contentUrl)) {
+ m_cachedUris.put(contentUrl, uri);
+@@ -286,12 +287,13 @@ public class QtNative
+ } catch (IllegalArgumentException e) {
+ Log.e(QtTAG, "getSize(): Invalid Uri");
+ e.printStackTrace();
+- return size;
+ } catch (UnsupportedOperationException e) {
+ Log.e(QtTAG, "getSize(): Unsupported operation for given Uri");
+ e.printStackTrace();
+- return size;
++ } catch (SecurityException e) {
++ Log.e(QtTAG, NoPermissionErrorMessage);
+ }
++ return size;
+ }
+
+ public static boolean checkFileExists(Context context, String contentUrl)
+@@ -301,7 +303,7 @@ public class QtNative
+ if (uri == null)
+ uri = getUriWithValidPermission(context, contentUrl, "r");
+ if (uri == null) {
+- Log.e(QtTAG, "checkFileExists(): No permissions to open Uri");
++ Log.e(QtTAG, NoPermissionErrorMessage);
+ return exists;
+ } else {
+ if (!m_cachedUris.containsKey(contentUrl))
+@@ -319,12 +321,13 @@ public class QtNative
+ } catch (IllegalArgumentException e) {
+ Log.e(QtTAG, "checkFileExists(): Invalid Uri");
+ e.printStackTrace();
+- return exists;
+ } catch (UnsupportedOperationException e) {
+ Log.e(QtTAG, "checkFileExists(): Unsupported operation for given Uri");
+ e.printStackTrace();
+- return false;
++ } catch (SecurityException e) {
++ Log.e(QtTAG, NoPermissionErrorMessage);
+ }
++ return exists;
+ }
+
+ public static boolean checkIfWritable(Context context, String contentUrl)
+@@ -342,7 +345,7 @@ public class QtNative
+ uri = getUriWithValidPermission(context, contentUrl, "r");
+ }
+ if (uri == null) {
+- Log.e(QtTAG, "isDir(): No permissions to open Uri");
++ Log.e(QtTAG, NoPermissionErrorMessage);
+ return isDir;
+ } else {
+ if (!m_cachedUris.containsKey(contentUrl))
+@@ -372,12 +375,13 @@ public class QtNative
+ } catch (IllegalArgumentException e) {
+ Log.e(QtTAG, "checkIfDir(): Invalid Uri");
+ e.printStackTrace();
+- return false;
+ } catch (UnsupportedOperationException e) {
+ Log.e(QtTAG, "checkIfDir(): Unsupported operation for given Uri");
+ e.printStackTrace();
+- return false;
++ } catch (SecurityException e) {
++ Log.e(QtTAG, NoPermissionErrorMessage);
+ }
++ return false;
+ }
+ public static String[] listContentsFromTreeUri(Context context, String contentUrl)
+ {
+--
+2.36.0
+
+From 020a30b696c8241671ffb1a3301a5bc3d23141ea Mon Sep 17 00:00:00 2001
+From: David Faure <david.faure@kdab.com>
+Date: Wed, 8 Sep 2021 09:52:50 +0200
+Subject: [PATCH 044/146] QTextOdfWriter: fix exporting pixmaps to ODT
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The QVariant returned by resource() can contain either a QPixmap
+or a QImage. The code here is now more similar to the one in
+qtextimagehandler.cpp.
+
+Also, the quality is 0 when not set, in which case we want a nice PNG
+rather than a very very low quality JPG with just a few large blocks of
+same-color pixels.
+
+Pick-to: 5.15 6.2
+Change-Id: I49db542e2234c8068f85a636a81a7d8cdb7b5876
+Reviewed-by: André Hartmann <aha_1980@gmx.de>
+Reviewed-by: Lars Knoll <lars.knoll@qt.io>
+(cherry picked from commit b67f887a048755bbab24df721636f9c294acb8b0)
+---
+ src/gui/text/qtextodfwriter.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/gui/text/qtextodfwriter.cpp b/src/gui/text/qtextodfwriter.cpp
+index 155ec43c50..b3ec43702c 100644
+--- a/src/gui/text/qtextodfwriter.cpp
++++ b/src/gui/text/qtextodfwriter.cpp
+@@ -455,7 +455,7 @@ void QTextOdfWriter::writeInlineCharacter(QXmlStreamWriter &writer, const QTextF
+ name.prepend(QLatin1String("qrc"));
+ QUrl url = QUrl(name);
+ const QVariant variant = m_document->resource(QTextDocument::ImageResource, url);
+- if (variant.userType() == QMetaType::QImage) {
++ if (variant.userType() == QMetaType::QPixmap || variant.userType() == QMetaType::QImage) {
+ image = qvariant_cast<QImage>(variant);
+ } else if (variant.userType() == QMetaType::QByteArray) {
+ data = variant.toByteArray();
+@@ -476,7 +476,7 @@ void QTextOdfWriter::writeInlineCharacter(QXmlStreamWriter &writer, const QTextF
+ QBuffer imageBytes;
+
+ int imgQuality = imageFormat.quality();
+- if (imgQuality >= 100 || imgQuality < 0 || image.hasAlphaChannel()) {
++ if (imgQuality >= 100 || imgQuality <= 0 || image.hasAlphaChannel()) {
+ QImageWriter imageWriter(&imageBytes, "png");
+ imageWriter.write(image);
+
+--
+2.36.0
+
+From a878335f6f2117e0098180e24797e9fb19955355 Mon Sep 17 00:00:00 2001
+From: Laszlo Agocs <laszlo.agocs@qt.io>
+Date: Mon, 20 Sep 2021 11:16:09 +0200
+Subject: [PATCH 045/146] Cater for upstream changes in eglplatform.h
+
+EGL_NO_X11 has been replaced with USE_X11, thus breaking all existing
+code out there, including Qt:
+https://github.com/KhronosGroup/EGL-Registry/pull/130
+
+Fix this by defining USE_X11 whenever we do not define EGL_NO_X11.
+
+Fixes: QTBUG-96392
+Pick-to: 6.2
+Change-Id: If8b68caa8c9022477d87169ca2e2a0121a9313e0
+Reviewed-by: Andy Nichols <andy.nichols@qt.io>
+(cherry picked from commit 4cc5428548cb8ab973e4b0281dd123d59bfaf6a0)
+---
+ src/gui/configure.json | 3 ++-
+ src/platformsupport/eglconvenience/qt_egl_p.h | 6 +++++-
+ 2 files changed, 7 insertions(+), 2 deletions(-)
+
+diff --git a/src/gui/configure.json b/src/gui/configure.json
+index 1f08795c57..12c95742d2 100644
+--- a/src/gui/configure.json
++++ b/src/gui/configure.json
+@@ -834,7 +834,8 @@
+ "// embedded devices, are not intended to be used together with X. EGL support",
+ "// has to be disabled in plugins like xcb in this case since the native display,",
+ "// window and pixmap types will be different than what an X-based platform",
+- "// plugin would expect."
++ "// plugin would expect.",
++ "#define USE_X11"
+ ],
+ "include": [ "EGL/egl.h", "X11/Xlib.h" ],
+ "main": [
+diff --git a/src/platformsupport/eglconvenience/qt_egl_p.h b/src/platformsupport/eglconvenience/qt_egl_p.h
+index bf37d07fd8..dbd42fb799 100644
+--- a/src/platformsupport/eglconvenience/qt_egl_p.h
++++ b/src/platformsupport/eglconvenience/qt_egl_p.h
+@@ -61,7 +61,11 @@
+ # if !defined(Q_OS_INTEGRITY)
+ # define WIN_INTERFACE_CUSTOM // NV
+ # endif // Q_OS_INTEGRITY
+-#endif // QT_EGL_NO_X11
++#else // QT_EGL_NO_X11
++// If one has an eglplatform.h with https://github.com/KhronosGroup/EGL-Registry/pull/130
++// that needs USE_X11 to be defined.
++# define USE_X11
++#endif
+
+ #ifdef QT_EGL_WAYLAND
+ # define WAYLAND // NV
+--
+2.36.0
+
+From 1c2ad3f2ce30faffc6e6c5b7ffe8d431460783d9 Mon Sep 17 00:00:00 2001
+From: Richard Moe Gustavsen <richard.gustavsen@qt.io>
+Date: Mon, 13 Sep 2021 16:41:08 +0200
+Subject: [PATCH 046/146] QPlatformWindow: fix isAncestorOf not breaking
+ recursion
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The current implementation got stuck always asking for
+the parent of the same child
+
+This patch will make sure we actually walk up the
+parent chain.
+
+Pick-to: 6.2 6.2.0 6.1 5.15
+Change-Id: I9f67f6305e0143526f53952a563d496e760ac2e7
+Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
+(cherry picked from commit f06f39779c11cabc9b4fc281f38c80edb65bd86a)
+---
+ src/gui/kernel/qplatformwindow.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/gui/kernel/qplatformwindow.cpp b/src/gui/kernel/qplatformwindow.cpp
+index e75229324c..7207ff4d7e 100644
+--- a/src/gui/kernel/qplatformwindow.cpp
++++ b/src/gui/kernel/qplatformwindow.cpp
+@@ -229,7 +229,7 @@ bool QPlatformWindow::isActive() const
+ */
+ bool QPlatformWindow::isAncestorOf(const QPlatformWindow *child) const
+ {
+- for (const QPlatformWindow *parent = child->parent(); parent; parent = child->parent()) {
++ for (const QPlatformWindow *parent = child->parent(); parent; parent = parent->parent()) {
+ if (parent == this)
+ return true;
+ }
+--
+2.36.0
+
+From bbe539686b30dce4b883f2548447b8ae05921c0f Mon Sep 17 00:00:00 2001
+From: Allan Sandfeld Jensen <allan.jensen@qt.io>
+Date: Wed, 9 Jun 2021 15:51:54 +0200
+Subject: [PATCH 047/146] Fix reading gamma from PNGs without ICC profile
+
+The decoding of PNG_INFO_gAMA to QColorSpace was incorrect, the PNG
+gamma is the inverse of the gamma value we use. We revert it
+everywhere else, just not here.
+
+BUG: 420357
+Pick-to: 6.2 5.15
+Change-Id: Ic0ae1963b2dde3004cac8a6430ddaf99e7096915
+Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
+(cherry picked from commit de2c3ccd49cb89e0c6912da3b03705a36ef03946)
+---
+ src/gui/image/qpnghandler.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/gui/image/qpnghandler.cpp b/src/gui/image/qpnghandler.cpp
+index bbf44a484f..2811d2e049 100644
+--- a/src/gui/image/qpnghandler.cpp
++++ b/src/gui/image/qpnghandler.cpp
+@@ -649,10 +649,10 @@ bool QPngHandlerPrivate::readPngHeader()
+ }
+ if (primaries.areValid()) {
+ colorSpace = QColorSpace(primaries.whitePoint, primaries.redPoint, primaries.greenPoint, primaries.bluePoint,
+- QColorSpace::TransferFunction::Gamma, fileGamma);
++ QColorSpace::TransferFunction::Gamma, 1.0f / fileGamma);
+ } else {
+ colorSpace = QColorSpace(QColorSpace::Primaries::SRgb,
+- QColorSpace::TransferFunction::Gamma, fileGamma);
++ QColorSpace::TransferFunction::Gamma, 1.0f / fileGamma);
+ }
+ colorSpaceState = GammaChrm;
+ }
+--
+2.36.0
+
+From 1ccd7cdccb0dc7273e2023a5147f5618cfb30198 Mon Sep 17 00:00:00 2001
+From: JiDe Zhang <zhangjide@uniontech.com>
+Date: Tue, 28 Sep 2021 17:46:16 +0800
+Subject: [PATCH 048/146] Fix memory leak
+
+Destroy the QDBusPendingCallWatcher object when received
+the QDBusPendingCallWatcher::finished signal later.
+
+Pick-to: 5.15 6.2
+Change-Id: I1ec67bf7c286f38200c374ad92df2a1579588a8a
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+
+
+(cherry picked from commit 71ba53e3a7b63da1ac8755dba8b9311774d46103)
+---
+ .../xdgdesktopportal/qxdgdesktopportalfiledialog.cpp | 1 +
+ .../platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp | 1 +
+ tests/manual/rhi/cubemap_render/buildshader.bat | 0
+ 3 files changed, 2 insertions(+)
+ mode change 100755 => 100644 tests/manual/rhi/cubemap_render/buildshader.bat
+
+diff --git a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp
+index 0048bbc1e6..81b63a67fd 100644
+--- a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp
++++ b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportalfiledialog.cpp
+@@ -302,6 +302,7 @@ void QXdgDesktopPortalFileDialog::openPortal()
+ this,
+ SLOT(gotResponse(uint,QVariantMap)));
+ }
++ watcher->deleteLater();
+ });
+ }
+
+diff --git a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp
+index fb324afbd8..2fc3167fd5 100644
+--- a/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp
++++ b/src/plugins/platformthemes/xdgdesktopportal/qxdgdesktopportaltheme.cpp
+@@ -111,6 +111,7 @@ QXdgDesktopPortalTheme::QXdgDesktopPortalTheme()
+ if (reply.isValid()) {
+ d->fileChooserPortalVersion = reply.value().toUInt();
+ }
++ watcher->deleteLater();
+ });
+ }
+
+diff --git a/tests/manual/rhi/cubemap_render/buildshader.bat b/tests/manual/rhi/cubemap_render/buildshader.bat
+old mode 100755
+new mode 100644
+--
+2.36.0
+
+From f030c8995f2e4bee3941859c13447228416367cc Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Tor=20Arne=20Vestb=C3=B8?= <tor.arne.vestbo@qt.io>
+Date: Tue, 8 Jun 2021 13:39:26 +0200
+Subject: [PATCH 049/146] qmake: Switch to using Xcode's new build system
+
+Now that inputs (81152194) and outputs (3f0858ed) are explicitly set for
+the preprocess stage we can enable the new build system.
+
+Using the legacy build system will produce a build error in Xcode 13,
+but the build will succeed:
+
+ error: The Legacy Build System will be removed in a future release.
+ You can configure the selected build system and this deprecation
+ message in File > Project Settings.
+
+Fixes: QTBUG-71035
+Change-Id: I108d2103872255d10de2ff5161eef892065da1c4
+Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
+(cherry picked from commit 3d7bdf0d61699cb7fdfcef7fe7b546e3167723b2)
+Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
+---
+ mkspecs/macx-xcode/WorkspaceSettings.xcsettings | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/mkspecs/macx-xcode/WorkspaceSettings.xcsettings b/mkspecs/macx-xcode/WorkspaceSettings.xcsettings
+index a3f43a8b38..08de0be8d3 100644
+--- a/mkspecs/macx-xcode/WorkspaceSettings.xcsettings
++++ b/mkspecs/macx-xcode/WorkspaceSettings.xcsettings
+@@ -2,8 +2,6 @@
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+ <plist version="1.0">
+ <dict>
+- <key>BuildSystemType</key>
+- <string>Original</string>
+ <key>IDEWorkspaceSharedSettings_AutocreateContextsIfNeeded</key>
+ <false/>
+ </dict>
+--
+2.36.0
+
+From c51d0c9ce09fcbd2b1d43ad3cccd989d06eb228b Mon Sep 17 00:00:00 2001
+From: Eirik Aavitsland <eirik.aavitsland@qt.io>
+Date: Thu, 23 Sep 2021 10:04:42 +0200
+Subject: [PATCH 050/146] PDF generation: disentangle native pen from
+ transforms
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+In the PDF engine, transforms are implented with a global pdf
+transform if and only if the current pen is "simple", that is,
+renderable by a native pdf pen. For non-simple pens, the painted
+objects are transformed by QTransform instead. Hence, the internal
+simplePen flag was used to indicate both a pen state and a transform
+state.
+
+This commit splits these two states into separate flags. No behavior
+is changed, but it prepares for an improved implementation of cosmetic
+pen rendering.
+
+Pick-to: 6.2 5.15
+Task-number: QTBUG-86094
+Change-Id: If02e1dfc021778e3db7c9ff9a1ed35b3d6cbf3f8
+Reviewed-by: Lars Knoll <lars.knoll@qt.io>
+Reviewed-by: André de la Rocha <andre.rocha@qt.io>
+(cherry picked from commit 2cb42cd849b60e72e2de44ed469c2b743b154b06)
+---
+ src/gui/painting/qpdf.cpp | 21 ++++++++++++++-------
+ src/gui/painting/qpdf_p.h | 1 +
+ 2 files changed, 15 insertions(+), 7 deletions(-)
+
+diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp
+index de9fc13331..d8882d9969 100644
+--- a/src/gui/painting/qpdf.cpp
++++ b/src/gui/painting/qpdf.cpp
+@@ -920,7 +920,8 @@ void QPdfEngine::drawPath (const QPainterPath &p)
+
+ if (d->simplePen) {
+ // draw strokes natively in this case for better output
+- *d->currentPage << QPdf::generatePath(p, QTransform(), d->hasBrush ? QPdf::FillAndStrokePath : QPdf::StrokePath);
++ *d->currentPage << QPdf::generatePath(p, d->needsTransform ? d->stroker.matrix : QTransform(),
++ d->hasBrush ? QPdf::FillAndStrokePath : QPdf::StrokePath);
+ } else {
+ if (d->hasBrush)
+ *d->currentPage << QPdf::generatePath(p, d->stroker.matrix, QPdf::FillPath);
+@@ -967,7 +968,7 @@ void QPdfEngine::drawPixmap (const QRectF &rectangle, const QPixmap &pixmap, con
+
+ *d->currentPage
+ << QPdf::generateMatrix(QTransform(rectangle.width() / sr.width(), 0, 0, rectangle.height() / sr.height(),
+- rectangle.x(), rectangle.y()) * (d->simplePen ? QTransform() : d->stroker.matrix));
++ rectangle.x(), rectangle.y()) * (!d->needsTransform ? QTransform() : d->stroker.matrix));
+ if (bitmap) {
+ // set current pen as d->brush
+ d->brush = d->pen.brush();
+@@ -1007,7 +1008,7 @@ void QPdfEngine::drawImage(const QRectF &rectangle, const QImage &image, const Q
+
+ *d->currentPage
+ << QPdf::generateMatrix(QTransform(rectangle.width() / sr.width(), 0, 0, rectangle.height() / sr.height(),
+- rectangle.x(), rectangle.y()) * (d->simplePen ? QTransform() : d->stroker.matrix));
++ rectangle.x(), rectangle.y()) * (!d->needsTransform ? QTransform() : d->stroker.matrix));
+ setBrush();
+ d->currentPage->streamImage(im.width(), im.height(), object);
+ *d->currentPage << "Q\n";
+@@ -1056,7 +1057,7 @@ void QPdfEngine::drawTextItem(const QPointF &p, const QTextItem &textItem)
+ }
+
+ *d->currentPage << "q\n";
+- if(!d->simplePen)
++ if (d->needsTransform)
+ *d->currentPage << QPdf::generateMatrix(d->stroker.matrix);
+
+ bool hp = d->hasPen;
+@@ -1224,8 +1225,13 @@ void QPdfEngine::setupGraphicsState(QPaintEngine::DirtyFlags flags)
+
+ if (flags & DirtyTransform) {
+ *d->currentPage << "q\n";
+- if (d->simplePen && !d->stroker.matrix.isIdentity())
+- *d->currentPage << QPdf::generateMatrix(d->stroker.matrix);
++ d->needsTransform = false;
++ if (!d->stroker.matrix.isIdentity()) {
++ if (d->simplePen)
++ *d->currentPage << QPdf::generateMatrix(d->stroker.matrix);
++ else
++ d->needsTransform = true; // I.e. page-wide xf not set, local xf needed
++ }
+ }
+ if (flags & DirtyBrush)
+ setBrush();
+@@ -1480,7 +1486,7 @@ int QPdfEngine::metric(QPaintDevice::PaintDeviceMetric metricType) const
+
+ QPdfEnginePrivate::QPdfEnginePrivate()
+ : clipEnabled(false), allClipped(false), hasPen(true), hasBrush(false), simplePen(false),
+- pdfVersion(QPdfEngine::Version_1_4),
++ needsTransform(false), pdfVersion(QPdfEngine::Version_1_4),
+ outDevice(nullptr), ownsDevice(false),
+ embedFonts(true),
+ grayscale(false),
+@@ -1539,6 +1545,7 @@ bool QPdfEngine::begin(QPaintDevice *pdev)
+ d->graphicsState = 0;
+ d->patternColorSpace = 0;
+ d->simplePen = false;
++ d->needsTransform = false;
+
+ d->pages.clear();
+ d->imageCache.clear();
+diff --git a/src/gui/painting/qpdf_p.h b/src/gui/painting/qpdf_p.h
+index 4ff540e67b..6964c67d93 100644
+--- a/src/gui/painting/qpdf_p.h
++++ b/src/gui/painting/qpdf_p.h
+@@ -271,6 +271,7 @@ public:
+ bool hasPen;
+ bool hasBrush;
+ bool simplePen;
++ bool needsTransform;
+ qreal opacity;
+ QPdfEngine::PdfVersion pdfVersion;
+
+--
+2.36.0
+
+From 98b7e14e6d7bb8fff5c05bcd00221ba009778971 Mon Sep 17 00:00:00 2001
+From: Eirik Aavitsland <eirik.aavitsland@qt.io>
+Date: Thu, 23 Sep 2021 16:40:27 +0200
+Subject: [PATCH 051/146] Avoid generating large pdf files when using dashed
+ cosmetic pens
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+There was a bug in the pdf writer for cosmetic pens when they were
+drawn using native pdf strokes (QTBUG-68537). The workaround that was
+done for that bug was to disable native atroking for such pens, so
+they would always be emulated. The drawback of that was that painting
+with dashed cosmetic pens would then produce unexpectedly large pdf
+files, since it would contain individual strokes for every dash.
+
+This change fixes the original bug and removes the workaround,
+re-enabling native stroking for cosmetic lines.
+
+Pick-to: 6.2 5.15
+Fixes: QTBUG-86094
+Change-Id: I58d06ad2db81206025ca2de394f072e822c03d47
+Reviewed-by: Lars Knoll <lars.knoll@qt.io>
+Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
+Reviewed-by: André de la Rocha <andre.rocha@qt.io>
+(cherry picked from commit 6d41b64d45cda12370653300fdc2d2685c450014)
+---
+ src/gui/painting/qpdf.cpp | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp
+index d8882d9969..3066744f1b 100644
+--- a/src/gui/painting/qpdf.cpp
++++ b/src/gui/painting/qpdf.cpp
+@@ -856,14 +856,14 @@ void QPdfEngine::drawRects (const QRectF *rects, int rectCount)
+ if (!d->hasPen && !d->hasBrush)
+ return;
+
+- if (d->simplePen || !d->hasPen) {
+- // draw strokes natively in this case for better output
+- if(!d->simplePen && !d->stroker.matrix.isIdentity())
++ if ((d->simplePen && !d->needsTransform) || !d->hasPen) {
++ // draw natively in this case for better output
++ if (!d->hasPen && d->needsTransform) // i.e. this is just a fillrect
+ *d->currentPage << "q\n" << QPdf::generateMatrix(d->stroker.matrix);
+ for (int i = 0; i < rectCount; ++i)
+ *d->currentPage << rects[i].x() << rects[i].y() << rects[i].width() << rects[i].height() << "re\n";
+ *d->currentPage << (d->hasPen ? (d->hasBrush ? "B\n" : "S\n") : "f\n");
+- if(!d->simplePen && !d->stroker.matrix.isIdentity())
++ if (!d->hasPen && d->needsTransform)
+ *d->currentPage << "Q\n";
+ } else {
+ QPainterPath p;
+@@ -1136,12 +1136,12 @@ void QPdfEngine::updateState(const QPaintEngineState &state)
+ d->pen = state.pen();
+ }
+ d->hasPen = d->pen.style() != Qt::NoPen;
++ bool oldCosmetic = d->stroker.cosmeticPen;
+ d->stroker.setPen(d->pen, state.renderHints());
+ QBrush penBrush = d->pen.brush();
+- bool cosmeticPen = qt_pen_is_cosmetic(d->pen, state.renderHints());
+ bool oldSimple = d->simplePen;
+- d->simplePen = (d->hasPen && !cosmeticPen && (penBrush.style() == Qt::SolidPattern) && penBrush.isOpaque() && d->opacity == 1.0);
+- if (oldSimple != d->simplePen)
++ d->simplePen = (d->hasPen && (penBrush.style() == Qt::SolidPattern) && penBrush.isOpaque() && d->opacity == 1.0);
++ if (oldSimple != d->simplePen || oldCosmetic != d->stroker.cosmeticPen)
+ flags |= DirtyTransform;
+ } else if (flags & DirtyHints) {
+ d->stroker.setPen(d->pen, state.renderHints());
+@@ -1227,7 +1227,7 @@ void QPdfEngine::setupGraphicsState(QPaintEngine::DirtyFlags flags)
+ *d->currentPage << "q\n";
+ d->needsTransform = false;
+ if (!d->stroker.matrix.isIdentity()) {
+- if (d->simplePen)
++ if (d->simplePen && !d->stroker.cosmeticPen)
+ *d->currentPage << QPdf::generateMatrix(d->stroker.matrix);
+ else
+ d->needsTransform = true; // I.e. page-wide xf not set, local xf needed
+--
+2.36.0
+
+From 2fa17915df95b74a31026f7b23e38e131d84dc66 Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <albert.astals.cid@kdab.com>
+Date: Tue, 28 Sep 2021 17:34:41 +0200
+Subject: [PATCH 052/146] Fix QPainterPath with QFont::SmallCaps
+
+Previous code was getting the QFontEngine from the font+script instead of from
+the QTextEngine.
+
+The font+script is not enough information to know if a given character is
+smallcaps or not, while the QTextEngine actually has access to the information
+needed and returns a properly a scaled fontengine if character is small caps
+
+Pick-to: 6.2
+Fixes: QTBUG-13965
+Change-Id: I9f95bd2f3c3bdff76c3acb94fa2edc99cdeb0a13
+Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
+(cherry picked from commit c89c14561671aa2ef2e5f7f35b26d8bce59ad77f)
+---
+ src/gui/painting/qpainterpath.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/gui/painting/qpainterpath.cpp b/src/gui/painting/qpainterpath.cpp
+index f9544a3241..d80fafeaf1 100644
+--- a/src/gui/painting/qpainterpath.cpp
++++ b/src/gui/painting/qpainterpath.cpp
+@@ -1253,7 +1253,7 @@ void QPainterPath::addText(const QPointF &point, const QFont &f, const QString &
+
+ if (si.analysis.flags < QScriptAnalysis::TabOrObject) {
+ QGlyphLayout glyphs = eng->shapedGlyphs(&si);
+- QFontEngine *fe = f.d->engineForScript(si.analysis.script);
++ QFontEngine *fe = eng->fontEngine(si);
+ Q_ASSERT(fe);
+ fe->addOutlineToPath(x, y, glyphs, this,
+ si.analysis.bidiLevel % 2
+--
+2.36.0
+
+From 75c9181c8a3a43d7a390b3264e9560055df80918 Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <albert.astals.cid@kdab.com>
+Date: Tue, 28 Sep 2021 17:00:59 +0200
+Subject: [PATCH 053/146] Respect font stretch if set together with font style
+
+Fixes: QTBUG-77854
+Change-Id: I2bf9cea9d5ecd151a9d96bbe93e9477a9159ca1f
+Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
+(cherry picked from commit ae10084ef9d9db5f32cc9d42ab7e485d0a896d78)
+---
+ src/gui/text/qfontdatabase.cpp | 2 +-
+ .../text/qfontdatabase/tst_qfontdatabase.cpp | 24 +++++++++++++++++++
+ 2 files changed, 25 insertions(+), 1 deletion(-)
+
+diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp
+index 72dcac6904..08c5ad273a 100644
+--- a/src/gui/text/qfontdatabase.cpp
++++ b/src/gui/text/qfontdatabase.cpp
+@@ -966,7 +966,7 @@ QFontEngine *loadSingleEngine(int script,
+ if (style->key.stretch != 0 && request.stretch != 0
+ && (request.styleName.isEmpty() || request.styleName != style->styleName)) {
+ def.stretch = (request.stretch * 100 + style->key.stretch / 2) / style->key.stretch;
+- } else {
++ } else if (request.stretch == QFont::AnyStretch) {
+ def.stretch = 100;
+ }
+
+diff --git a/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp b/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp
+index bbb7276bfb..6f783f6b6c 100644
+--- a/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp
++++ b/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp
+@@ -79,6 +79,8 @@ private slots:
+ void registerOpenTypePreferredNamesSystem();
+ void registerOpenTypePreferredNamesApplication();
+
++ void stretchRespected();
++
+ private:
+ QString m_ledFont;
+ QString m_testFont;
+@@ -353,6 +355,28 @@ static QString testString()
+ return QStringLiteral("foo bar");
+ }
+
++void tst_QFontDatabase::stretchRespected()
++{
++ int italicId = QFontDatabase::addApplicationFont(m_testFontItalic);
++ QVERIFY(italicId != -1);
++
++ QVERIFY(!QFontDatabase::applicationFontFamilies(italicId).isEmpty());
++
++ QString italicFontName = QFontDatabase::applicationFontFamilies(italicId).first();
++
++ QFont italicFont = QFontDatabase().font(italicFontName,
++ QString::fromLatin1("Italic"), 14);
++ QVERIFY(italicFont.italic());
++
++ QFont italicStretchedFont = italicFont;
++ italicStretchedFont.setStretch( 400 );
++
++ QVERIFY(QFontMetricsF(italicFont).horizontalAdvance(QStringLiteral("foobar")) <
++ QFontMetricsF(italicStretchedFont).horizontalAdvance(QStringLiteral("foobar")));
++
++ QFontDatabase::removeApplicationFont(italicId);
++}
++
+ void tst_QFontDatabase::condensedFontWidthNoFontMerging()
+ {
+ int regularFontId = QFontDatabase::addApplicationFont(m_testFont);
+--
+2.36.0
+
+From 662d271cdac1bda80eb7b077570550bbc2dc07d2 Mon Sep 17 00:00:00 2001
+From: Eirik Aavitsland <eirik.aavitsland@qt.io>
+Date: Fri, 1 Oct 2021 10:30:38 +0200
+Subject: [PATCH 054/146] Support transformations in pattern/texture brushes in
+ pdf
+
+The brush transform was ignored for pattern/texture brushes. Since
+fill patterns always have a transform in pdf anyway, we can just
+multiply in the brush transform.
+
+Fixes: QTBUG-96978
+Pick-to: 6.2
+Change-Id: I80357f61fb879dfb1226d4ef9469ae5c9a9c1147
+Reviewed-by: Lars Knoll <lars.knoll@qt.io>
+Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
+(cherry picked from commit 2a546690bf457f4bfee0910ba979441511843f8b)
+---
+ src/gui/painting/qpdf.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp
+index 3066744f1b..2c8d3c3b53 100644
+--- a/src/gui/painting/qpdf.cpp
++++ b/src/gui/painting/qpdf.cpp
+@@ -2760,6 +2760,8 @@ int QPdfEnginePrivate::addBrushPattern(const QTransform &m, bool *specifyColor,
+ return gradientBrush(brush, matrix, gStateObject);
+ }
+
++ matrix = brush.transform() * matrix;
++
+ if ((!brush.isOpaque() && brush.style() < Qt::LinearGradientPattern) || opacity != 1.0)
+ *gStateObject = addConstantAlphaObject(qRound(brush.color().alpha() * opacity),
+ qRound(pen.color().alpha() * opacity));
+--
+2.36.0
+
+From cd053ec7cef49214ddaa1027f83da21d2ba26800 Mon Sep 17 00:00:00 2001
+From: Shawn Rutledge <shawn.rutledge@qt.io>
+Date: Fri, 4 Dec 2020 10:28:26 +0100
+Subject: [PATCH 055/146] Fix highdpi conversion of QTabletEvent coordinates on
+ xcb
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Amends 1535fc9fb9ddbfce1680979c0634b4fdf8d75fca : when high-dpi scaling
+is enabled, there was an offset from the cursor position to the event
+position, because QWindow::mapFromGlobal() works in device-independent
+pixels, but we are using actual screen pixels here.
+
+Pick-to: 6.0
+Pick-to: 5.15
+Pick-to: 5.12
+Task-number: QTBUG-77826
+Change-Id: Ic8743b9e5c4041065f530ed1d9d6c49337b0207a
+Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
+Reviewed-by: Morten Johan Sørvig <morten.sorvig@qt.io>
+(cherry picked from commit 9d51fb579bb4655f6740096f17f1ced50258c28f)
+---
+ src/plugins/platforms/xcb/qxcbconnection_xi2.cpp | 6 ++----
+ 1 file changed, 2 insertions(+), 4 deletions(-)
+
+diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
+index 27a2526df1..f34485c91f 100644
+--- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
++++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
+@@ -1251,16 +1251,14 @@ void QXcbConnection::xi2ReportTabletEvent(const void *event, TabletData *tabletD
+ if (Q_LIKELY(useValuators)) {
+ const qreal value = scaleOneValuator(normalizedValue, physicalScreenArea.x(), physicalScreenArea.width());
+ global.setX(value);
+- // mapFromGlobal is ok for nested/embedded windows, but works only with whole-number QPoint;
+- // so map it first, then add back the sub-pixel position
+- local.setX(window->mapFromGlobal(QPoint(int(value), 0)).x() + (value - int(value)));
++ local.setX(xcbWindow->mapFromGlobalF(global).x());
+ }
+ break;
+ case QXcbAtom::AbsY:
+ if (Q_LIKELY(useValuators)) {
+ qreal value = scaleOneValuator(normalizedValue, physicalScreenArea.y(), physicalScreenArea.height());
+ global.setY(value);
+- local.setY(window->mapFromGlobal(QPoint(0, int(value))).y() + (value - int(value)));
++ local.setY(xcbWindow->mapFromGlobalF(global).y());
+ }
+ break;
+ case QXcbAtom::AbsPressure:
+--
+2.36.0
+
+From 83a3f69840e0d61d8d21ea357a36349f45767fd4 Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <aacid@kde.org>
+Date: Tue, 12 Oct 2021 16:27:15 +0200
+Subject: [PATCH 056/146] Revert "Fix highdpi conversion of QTabletEvent
+ coordinates on xcb"
+
+It does not compile
+
+This reverts commit 03ad5f3c0ddf8105c76a753a10b52cad05e9e936.
+---
+ src/plugins/platforms/xcb/qxcbconnection_xi2.cpp | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
+index f34485c91f..27a2526df1 100644
+--- a/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
++++ b/src/plugins/platforms/xcb/qxcbconnection_xi2.cpp
+@@ -1251,14 +1251,16 @@ void QXcbConnection::xi2ReportTabletEvent(const void *event, TabletData *tabletD
+ if (Q_LIKELY(useValuators)) {
+ const qreal value = scaleOneValuator(normalizedValue, physicalScreenArea.x(), physicalScreenArea.width());
+ global.setX(value);
+- local.setX(xcbWindow->mapFromGlobalF(global).x());
++ // mapFromGlobal is ok for nested/embedded windows, but works only with whole-number QPoint;
++ // so map it first, then add back the sub-pixel position
++ local.setX(window->mapFromGlobal(QPoint(int(value), 0)).x() + (value - int(value)));
+ }
+ break;
+ case QXcbAtom::AbsY:
+ if (Q_LIKELY(useValuators)) {
+ qreal value = scaleOneValuator(normalizedValue, physicalScreenArea.y(), physicalScreenArea.height());
+ global.setY(value);
+- local.setY(xcbWindow->mapFromGlobalF(global).y());
++ local.setY(window->mapFromGlobal(QPoint(0, int(value))).y() + (value - int(value)));
+ }
+ break;
+ case QXcbAtom::AbsPressure:
+--
+2.36.0
+
+From 6494de373af53a904c8e48b90290725a939f27d8 Mon Sep 17 00:00:00 2001
+From: Lars Schmertmann <Lars.Schmertmann@governikus.de>
+Date: Thu, 14 Sep 2017 12:47:11 +0200
+Subject: [PATCH 057/146] Prefer previously used channels in
+ QHttpNetworkConnection
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+When IPv4 and IPv6 are supported by a server, QHttpNetworkConnection
+will start up two connections and pick the network layer of the one
+that finish first. In this case the channel with index 1 is used for
+IPv6. When IPv6 wins, there is no channel at index 0. This situation
+needs to be respected and we should try to use existing channels first
+when there is a next request.
+
+This is especially important when TLS session resumption is used.
+Creating a new channel will cause to lose the ephemeralServerKey
+used in the first connection.
+
+Fixes: QTBUG-93295
+Pick-to: 5.15 6.1
+Change-Id: Ic9dc6a24ef793a29c2652ad37bc11120e2e6ceef
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+(cherry picked from commit a120d11cb5506ef0a5535e790f23d49595fb8857)
+---
+ src/network/access/qhttpnetworkconnection.cpp | 57 ++++++++++++-------
+ 1 file changed, 38 insertions(+), 19 deletions(-)
+
+diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp
+index 9745f3b322..b918da48c4 100644
+--- a/src/network/access/qhttpnetworkconnection.cpp
++++ b/src/network/access/qhttpnetworkconnection.cpp
+@@ -1120,31 +1120,50 @@ void QHttpNetworkConnectionPrivate::_q_startNextRequest()
+ int normalRequests = queuedRequests - preConnectRequests;
+ neededOpenChannels = qMax(normalRequests, preConnectRequests);
+ }
++
++ if (neededOpenChannels <= 0)
++ return;
++
++ QQueue<int> channelsToConnect;
++
++ // use previously used channels first
+ for (int i = 0; i < activeChannelCount && neededOpenChannels > 0; ++i) {
+- bool connectChannel = false;
+- if (channels[i].socket) {
+- if ((channels[i].socket->state() == QAbstractSocket::ConnectingState)
+- || (channels[i].socket->state() == QAbstractSocket::HostLookupState)
+- || channels[i].pendingEncrypt) // pendingEncrypt == "EncryptingState"
+- neededOpenChannels--;
+-
+- if (neededOpenChannels <= 0)
+- break;
+- if (!channels[i].reply && !channels[i].isSocketBusy() && (channels[i].socket->state() == QAbstractSocket::UnconnectedState))
+- connectChannel = true;
+- } else { // not previously used channel
+- connectChannel = true;
++ if (!channels[i].socket)
++ continue;
++
++ if ((channels[i].socket->state() == QAbstractSocket::ConnectingState)
++ || (channels[i].socket->state() == QAbstractSocket::HostLookupState)
++ || channels[i].pendingEncrypt) { // pendingEncrypt == "EncryptingState"
++ neededOpenChannels--;
++ continue;
+ }
+
+- if (connectChannel) {
+- if (networkLayerState == IPv4)
+- channels[i].networkLayerPreference = QAbstractSocket::IPv4Protocol;
+- else if (networkLayerState == IPv6)
+- channels[i].networkLayerPreference = QAbstractSocket::IPv6Protocol;
+- channels[i].ensureConnection();
++ if (!channels[i].reply && !channels[i].isSocketBusy()
++ && (channels[i].socket->state() == QAbstractSocket::UnconnectedState)) {
++ channelsToConnect.enqueue(i);
+ neededOpenChannels--;
+ }
+ }
++
++ // use other channels
++ for (int i = 0; i < activeChannelCount && neededOpenChannels > 0; ++i) {
++ if (channels[i].socket)
++ continue;
++
++ channelsToConnect.enqueue(i);
++ neededOpenChannels--;
++ }
++
++ while (!channelsToConnect.isEmpty()) {
++ const int channel = channelsToConnect.dequeue();
++
++ if (networkLayerState == IPv4)
++ channels[channel].networkLayerPreference = QAbstractSocket::IPv4Protocol;
++ else if (networkLayerState == IPv6)
++ channels[channel].networkLayerPreference = QAbstractSocket::IPv6Protocol;
++
++ channels[channel].ensureConnection();
++ }
+ }
+
+
+--
+2.36.0
+
+From dda8492f287fd8fa2c2e011250c46a4f742377d1 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= <marten.nordheim@qt.io>
+Date: Wed, 9 Jun 2021 10:41:51 +0200
+Subject: [PATCH 058/146] QHttpSocketEngine: Fix memory leak
+
+The reply needs to be parented or it's not guaranteed to be deleted
+
+Pick-to: 6.2 6.1 5.15
+Change-Id: I7cbc31682f80dbbd9fb240fff9e6781cb6ca7b36
+Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
+(cherry picked from commit d8077a0973f362376b69564a730c74e5c9366f8f)
+---
+ src/network/socket/qhttpsocketengine.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/network/socket/qhttpsocketengine.cpp b/src/network/socket/qhttpsocketengine.cpp
+index ca7680b71f..6629b7eace 100644
+--- a/src/network/socket/qhttpsocketengine.cpp
++++ b/src/network/socket/qhttpsocketengine.cpp
+@@ -645,7 +645,7 @@ void QHttpSocketEngine::slotSocketReadNotification()
+ d->socket->readAll();
+ //We're done with the reply and need to reset it for the next connection
+ delete d->reply;
+- d->reply = new QHttpNetworkReply;
++ d->reply = new QHttpNetworkReply(QUrl(), this);
+ }
+
+ if (priv->phase == QAuthenticatorPrivate::Done)
+--
+2.36.0
+
+From 9e3ea612249f46dd9878cb84ad5cf045ea1a61ad Mon Sep 17 00:00:00 2001
+From: Tasuku Suzuki <tasuku.suzuki@signal-slot.co.jp>
+Date: Wed, 23 Jun 2021 14:11:26 +0900
+Subject: [PATCH 059/146] Doc: bump the OpenSSL minimum supported version to
+ 1.1.1
+
+Pick-to: 5.15 6.1 6.2
+Change-Id: Ibfc8b64be23eb023dafb875f367da98b7c7bb5f6
+Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
+(cherry picked from commit 418850d55976ca283f1ad92997379df27bb6028a)
+---
+ src/network/doc/src/ssl.qdoc | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/network/doc/src/ssl.qdoc b/src/network/doc/src/ssl.qdoc
+index e485a1b393..efe4111cfe 100644
+--- a/src/network/doc/src/ssl.qdoc
++++ b/src/network/doc/src/ssl.qdoc
+@@ -36,8 +36,8 @@
+ the Secure Sockets Layer (SSL) protocol, using the \l{OpenSSL Toolkit}
+ to perform encryption and protocol handling.
+
+- From Qt version 5.6 onwards, the officially supported version for OpenSSL
+- is 1.0.0 or later.
++ From Qt version 5.15 onwards, the officially supported version for OpenSSL
++ is 1.1.1 or later.
+
+ \annotatedlist ssl
+
+--
+2.36.0
+
+From 6345861e5520f6caeb787ecdf98b70fd2143926c Mon Sep 17 00:00:00 2001
+From: Timur Pocheptsov <timur.pocheptsov@qt.io>
+Date: Thu, 29 Jul 2021 06:13:53 +0200
+Subject: [PATCH 060/146] tst_QSslCertificate::verify - skip auto-test
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+as a temporary fix for suddenly expired certificates situation (to
+be regenerated).
+
+Pick-to: 6.2 6.1 5.15
+Task-number: QTBUG-95429
+Change-Id: I00ad11cfd8824eeeffa2991dfcda6a7899726953
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+(cherry picked from commit 8d0e4a2e5c3627e2fd88f14ccc8b349668012685)
+---
+ tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
+index 115d111974..54137e409b 100644
+--- a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
++++ b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
+@@ -1128,6 +1128,8 @@ void tst_QSslCertificate::verify()
+ #if QT_CONFIG(securetransport)
+ QSKIP("Not implemented in SecureTransport");
+ #endif
++ QSKIP("Expired certificates, regenerate first");
++
+ QList<QSslError> errors;
+ QList<QSslCertificate> toVerify;
+
+--
+2.36.0
+
+From f47eec8e44aab02be4676982fc3ef25de1b11cbe Mon Sep 17 00:00:00 2001
+From: Timur Pocheptsov <timur.pocheptsov@qt.io>
+Date: Fri, 6 Aug 2021 07:47:06 +0200
+Subject: [PATCH 061/146] tst_QSslCertificate::verify - remove QSKIP
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+And re-generate certificates.
+
+Fixes: QTBUG-95429
+Pick-to: 6.2 6.1 5.15 5.12
+Change-Id: Id970a0a9315d146d6dd1e66c9cff9b7d75657e2d
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+(cherry picked from commit e7ab17ade170a8fbc5061fffe5334b26cdc54ed3)
+---
+ tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
+index 54137e409b..445e6a2d98 100644
+--- a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
++++ b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
+@@ -1128,7 +1128,6 @@ void tst_QSslCertificate::verify()
+ #if QT_CONFIG(securetransport)
+ QSKIP("Not implemented in SecureTransport");
+ #endif
+- QSKIP("Expired certificates, regenerate first");
+
+ QList<QSslError> errors;
+ QList<QSslCertificate> toVerify;
+--
+2.36.0
+
+From 18b2d133a060dca15c40d59109aed6c4d6ba41a9 Mon Sep 17 00:00:00 2001
+From: Timur Pocheptsov <timur.pocheptsov@qt.io>
+Date: Fri, 6 Aug 2021 17:02:03 +0200
+Subject: [PATCH 062/146] tst_QSslSocket - replace an old certificate
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Helped quite a lot with OpenSSL 3 not accepting some old algorithms.
+
+Pick-to: 6.2 6.1 5.15
+Task-number: QTBUG-95123
+Change-Id: If4894fa86eba7b002465fa661d436ae6ea751989
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+(cherry picked from commit 33de5f6502254ffe51960714404b6330dab224d5)
+---
+ .../network/ssl/qsslsocket/certs/fluke.cert | 105 ++++++------------
+ .../network/ssl/qsslsocket/certs/fluke.key | 67 ++++++++---
+ 2 files changed, 84 insertions(+), 88 deletions(-)
+
+diff --git a/tests/auto/network/ssl/qsslsocket/certs/fluke.cert b/tests/auto/network/ssl/qsslsocket/certs/fluke.cert
+index 069fa6b341..4cc4d9a5ea 100644
+--- a/tests/auto/network/ssl/qsslsocket/certs/fluke.cert
++++ b/tests/auto/network/ssl/qsslsocket/certs/fluke.cert
+@@ -1,75 +1,34 @@
+-Certificate:
+- Data:
+- Version: 3 (0x2)
+- Serial Number: 0 (0x0)
+- Signature Algorithm: sha1WithRSAEncryption
+- Issuer: C=NO, ST=Oslo, L=Nydalen, O=Nokia Corporation and/or its subsidiary(-ies), OU=Development, CN=fluke.troll.no/emailAddress=ahanssen@trolltech.com
+- Validity
+- Not Before: Dec 4 01:10:32 2007 GMT
+- Not After : Apr 21 01:10:32 2035 GMT
+- Subject: C=NO, ST=Oslo, O=Nokia Corporation and/or its subsidiary(-ies), OU=Development, CN=fluke.troll.no
+- Subject Public Key Info:
+- Public Key Algorithm: rsaEncryption
+- RSA Public Key: (1024 bit)
+- Modulus (1024 bit):
+- 00:a7:c8:a0:4a:c4:19:05:1b:66:ba:32:e2:d2:f1:
+- 1c:6f:17:82:e4:39:2e:01:51:90:db:04:34:32:11:
+- 21:c2:0d:6f:59:d8:53:90:54:3f:83:8f:a9:d3:b3:
+- d5:ee:1a:9b:80:ae:c3:25:c9:5e:a5:af:4b:60:05:
+- aa:a0:d1:91:01:1f:ca:04:83:e3:58:1c:99:32:45:
+- 84:70:72:58:03:98:4a:63:8b:41:f5:08:49:d2:91:
+- 02:60:6b:e4:64:fe:dd:a0:aa:74:08:e9:34:4c:91:
+- 5f:12:3d:37:4d:54:2c:ad:7f:5b:98:60:36:02:8c:
+- 3b:f6:45:f3:27:6a:9b:94:9d
+- Exponent: 65537 (0x10001)
+- X509v3 extensions:
+- X509v3 Basic Constraints:
+- CA:FALSE
+- Netscape Comment:
+- OpenSSL Generated Certificate
+- X509v3 Subject Key Identifier:
+- 21:85:04:3D:23:01:66:E5:F7:9F:1A:84:24:8A:AF:0A:79:F4:E5:AC
+- X509v3 Authority Key Identifier:
+- DirName:/C=NO/ST=Oslo/L=Nydalen/O=Nokia Corporation and/or its subsidiary(-ies)/OU=Development/CN=fluke.troll.no/emailAddress=ahanssen@trolltech.com
+- serial:8E:A8:B4:E8:91:B7:54:2E
+-
+- Signature Algorithm: sha1WithRSAEncryption
+- 6d:57:5f:d1:05:43:f0:62:05:ec:2a:71:a5:dc:19:08:f2:c4:
+- a6:bd:bb:25:d9:ca:89:01:0e:e4:cf:1f:c1:8c:c8:24:18:35:
+- 53:59:7b:c0:43:b4:32:e6:98:b2:a6:ef:15:05:0b:48:5f:e1:
+- a0:0c:97:a9:a1:77:d8:35:18:30:bc:a9:8f:d3:b7:54:c7:f1:
+- a9:9e:5d:e6:19:bf:f6:3c:5b:2b:d8:e4:3e:62:18:88:8b:d3:
+- 24:e1:40:9b:0c:e6:29:16:62:ab:ea:05:24:70:36:aa:55:93:
+- ef:02:81:1b:23:10:a2:04:eb:56:95:75:fc:f8:94:b1:5d:42:
+- c5:3f:36:44:85:5d:3a:2e:90:46:8a:a2:b9:6f:87:ae:0c:15:
+- 40:19:31:90:fc:3b:25:bb:ae:f1:66:13:0d:85:90:d9:49:34:
+- 8f:f2:5d:f9:7a:db:4d:5d:27:f6:76:9d:35:8c:06:a6:4c:a3:
+- b1:b2:b6:6f:1d:d7:a3:00:fd:72:eb:9e:ea:44:a1:af:21:34:
+- 7d:c7:42:e2:49:91:19:8b:c0:ad:ba:82:80:a8:71:70:f4:35:
+- 31:91:63:84:20:95:e9:60:af:64:8b:cc:ff:3d:8a:76:74:3d:
+- c8:55:6d:e4:8e:c3:2b:1c:e8:42:18:ae:9f:e6:6b:9c:34:06:
+- ec:6a:f2:c3
+ -----BEGIN CERTIFICATE-----
+-MIIEEzCCAvugAwIBAgIBADANBgkqhkiG9w0BAQUFADCBnDELMAkGA1UEBhMCTk8x
+-DTALBgNVBAgTBE9zbG8xEDAOBgNVBAcTB055ZGFsZW4xFjAUBgNVBAoTDVRyb2xs
+-dGVjaCBBU0ExFDASBgNVBAsTC0RldmVsb3BtZW50MRcwFQYDVQQDEw5mbHVrZS50
+-cm9sbC5ubzElMCMGCSqGSIb3DQEJARYWYWhhbnNzZW5AdHJvbGx0ZWNoLmNvbTAe
+-Fw0wNzEyMDQwMTEwMzJaFw0zNTA0MjEwMTEwMzJaMGMxCzAJBgNVBAYTAk5PMQ0w
+-CwYDVQQIEwRPc2xvMRYwFAYDVQQKEw1Ucm9sbHRlY2ggQVNBMRQwEgYDVQQLEwtE
+-ZXZlbG9wbWVudDEXMBUGA1UEAxMOZmx1a2UudHJvbGwubm8wgZ8wDQYJKoZIhvcN
+-AQEBBQADgY0AMIGJAoGBAKfIoErEGQUbZroy4tLxHG8XguQ5LgFRkNsENDIRIcIN
+-b1nYU5BUP4OPqdOz1e4am4CuwyXJXqWvS2AFqqDRkQEfygSD41gcmTJFhHByWAOY
+-SmOLQfUISdKRAmBr5GT+3aCqdAjpNEyRXxI9N01ULK1/W5hgNgKMO/ZF8ydqm5Sd
+-AgMBAAGjggEaMIIBFjAJBgNVHRMEAjAAMCwGCWCGSAGG+EIBDQQfFh1PcGVuU1NM
+-IEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUIYUEPSMBZuX3nxqEJIqv
+-Cnn05awwgbsGA1UdIwSBszCBsKGBoqSBnzCBnDELMAkGA1UEBhMCTk8xDTALBgNV
+-BAgTBE9zbG8xEDAOBgNVBAcTB055ZGFsZW4xFjAUBgNVBAoTDVRyb2xsdGVjaCBB
+-U0ExFDASBgNVBAsTC0RldmVsb3BtZW50MRcwFQYDVQQDEw5mbHVrZS50cm9sbC5u
+-bzElMCMGCSqGSIb3DQEJARYWYWhhbnNzZW5AdHJvbGx0ZWNoLmNvbYIJAI6otOiR
+-t1QuMA0GCSqGSIb3DQEBBQUAA4IBAQBtV1/RBUPwYgXsKnGl3BkI8sSmvbsl2cqJ
+-AQ7kzx/BjMgkGDVTWXvAQ7Qy5piypu8VBQtIX+GgDJepoXfYNRgwvKmP07dUx/Gp
+-nl3mGb/2PFsr2OQ+YhiIi9Mk4UCbDOYpFmKr6gUkcDaqVZPvAoEbIxCiBOtWlXX8
+-+JSxXULFPzZEhV06LpBGiqK5b4euDBVAGTGQ/Dslu67xZhMNhZDZSTSP8l35ettN
+-XSf2dp01jAamTKOxsrZvHdejAP1y657qRKGvITR9x0LiSZEZi8CtuoKAqHFw9DUx
+-kWOEIJXpYK9ki8z/PYp2dD3IVW3kjsMrHOhCGK6f5mucNAbsavLD
++MIIF6zCCA9OgAwIBAgIUfo9amJtJGWqWE6f+SkAO85zkGr4wDQYJKoZIhvcNAQEL
++BQAwgYMxCzAJBgNVBAYTAk5PMQ0wCwYDVQQIDARPc2xvMQ0wCwYDVQQHDARPc2xv
++MRcwFQYDVQQKDA5UaGUgUXQgQ29tcGFueTEMMAoGA1UECwwDUiZEMRIwEAYDVQQD
++DAlIMiBUZXN0ZXIxGzAZBgkqhkiG9w0BCQEWDG1pbmltaUBxdC5pbzAgFw0yMDEw
++MjYxMjAxMzFaGA8yMTIwMTAwMjEyMDEzMVowgYMxCzAJBgNVBAYTAk5PMQ0wCwYD
++VQQIDARPc2xvMQ0wCwYDVQQHDARPc2xvMRcwFQYDVQQKDA5UaGUgUXQgQ29tcGFu
++eTEMMAoGA1UECwwDUiZEMRIwEAYDVQQDDAlIMiBUZXN0ZXIxGzAZBgkqhkiG9w0B
++CQEWDG1pbmltaUBxdC5pbzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB
++AOiUp5+E4blouKH7q+rVNR8NoYX2XkBW+q+rpy1zu5ssRSzbqxAjDx9dkht7Qlnf
++VlDT00JvpOWdeuPon5915edQRsY4Unl6mKH29ra3OtUa1/yCJXsGVJTKCj7k4Bxb
++5mZzb/fTlZntMLdTIBMfUbw62FKir1WjKIcJ9fCoG8JaGeKVO4Rh5p0ezd4UUUId
++r1BXl5Nqdqy2vTMsEDnjOsD3egkv8I2SKN4O6n/C3wWYpMOWYZkGoZiKz7rJs/i/
++ez7bsV7JlwdzTlhpJzkcOSVFBP6JlEOxTNNxZ1wtKy7PtZGmsSSATq2e6+bw38Ae
++Op0XnzzqcGjtDDofBmT7OFzZWjS9VZS6+DOOe2QHWle1nCHcHyH4ku6IRlsr9xkR
++NAIlOfnvHHxqJUenoeaZ4oQDjCBKS1KXygJO/tL7BLTQVn/xK1EmPvKNnjzWk4tR
++PnibUhhs5635qpOU/YPqFBh1JjVruZbsWcDAhRcew0uxONXOa9E+4lttQ9ySYa1A
++LvWqJuAX7gu2BsBMLyqfm811YnA7CIFMyO+HlqmkLFfv5L/xIRAXR7l26YGO0VwX
++CGjMfz4NVPMMke4nB7qa9NkpXQBQKMms3Qzd5JW0Hy9Ruj5O8GPcFZmV0twjd1uJ
++PD/cAjkWLaXjdNsJ16QWc2nghQRS6HYqKRX6j+CXOxupAgMBAAGjUzBRMB0GA1Ud
++DgQWBBRSCOU58j9NJZkMamt623qyCrhN3TAfBgNVHSMEGDAWgBRSCOU58j9NJZkM
++amt623qyCrhN3TAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQCq
++q4jxsWeNDv5Nq14hJtF9HB+ZL64zcZtRjJP1YgNs0QppKICmjPOL2nIMGmI/jKrs
++0eGAL/9XXNVHPxm1OPOncvimMMmU6emZfpMdEtTfKP43+Pg9HgKRjLoQp406vGeQ
++8ki/mbBhrItVPgEm3tu2AFA02XTYi+YxCI9kRZLGkM3FbgtOuTLPl0Z9y+kiPc9F
++uCSC03anBEqv+vDSI8+wODymQ/IJ3Jyz1lxIRDfp4qAekmy0jU2c91VOHHEmOmqq
++kqygGFRdwbe99m9yP63r6q0b5K3X2UnJ6bns0hmTwThYwpVPXLU8jdaTddbMukN2
++/Ef96Tsw8nWOEOPMySHOTIPgwyZRp26b0kA9EmhLwOP401SxXVQCmSRmtwNagmtg
++jJKmZoYBN+//D45ibK8z6Q0oOm9P+Whf/uUXehcRxBxyV3xz7k0wKGQbHj/ddwcy
++IUoIN4lrAlib+lK170kTKN352PDmrpo2gmIzPEsfurKAIMSelDl6H+kih16BtZ8y
++Nz6fh9Soqrg3OSAware8pxV7k51crBMoPLN78KoRV8MFCK4K7Fddq4rRISq6hiXq
++r1nsjoEPuKM9huprmZVZe9t5YcDa2I+wb3IiE3uwpZbAdaLDyQ5n6F/qpsiIkZXn
++gtcF7oqpG5oYrwCcZ53y/ezUgUg7PlSz2XwAGvQtgg==
+ -----END CERTIFICATE-----
+diff --git a/tests/auto/network/ssl/qsslsocket/certs/fluke.key b/tests/auto/network/ssl/qsslsocket/certs/fluke.key
+index 9d1664d609..337ce541a6 100644
+--- a/tests/auto/network/ssl/qsslsocket/certs/fluke.key
++++ b/tests/auto/network/ssl/qsslsocket/certs/fluke.key
+@@ -1,15 +1,52 @@
+------BEGIN RSA PRIVATE KEY-----
+-MIICXAIBAAKBgQCnyKBKxBkFG2a6MuLS8RxvF4LkOS4BUZDbBDQyESHCDW9Z2FOQ
+-VD+Dj6nTs9XuGpuArsMlyV6lr0tgBaqg0ZEBH8oEg+NYHJkyRYRwclgDmEpji0H1
+-CEnSkQJga+Rk/t2gqnQI6TRMkV8SPTdNVCytf1uYYDYCjDv2RfMnapuUnQIDAQAB
+-AoGANFzLkanTeSGNFM0uttBipFT9F4a00dqHz6JnO7zXAT26I5r8sU1pqQBb6uLz
+-/+Qz5Zwk8RUAQcsMRgJetuPQUb0JZjF6Duv24hNazqXBCu7AZzUenjafwmKC/8ri
+-KpX3fTwqzfzi//FKGgbXQ80yykSSliDL3kn/drATxsLCgQECQQDXhEFWLJ0vVZ1s
+-1Ekf+3NITE+DR16X+LQ4W6vyEHAjTbaNWtcTKdAWLA2l6N4WAAPYSi6awm+zMxx4
+-VomVTsjdAkEAx0z+e7natLeFcrrq8pbU+wa6SAP1VfhQWKitxL1e7u/QO90NCpxE
+-oQYKzMkmmpOOFjQwEMAy1dvFMbm4LHlewQJAC/ksDBaUcQHHqjktCtrUb8rVjAyW
+-A8lscckeB2fEYyG5J6dJVaY4ClNOOs5yMDS2Afk1F6H/xKvtQ/5CzInA/QJATDub
+-K+BPU8jO9q+gpuIi3VIZdupssVGmCgObVCHLakG4uO04y9IyPhV9lA9tALtoIf4c
+-VIvv5fWGXBrZ48kZAQJBAJmVCdzQxd9LZI5vxijUCj5EI4e+x5DRqVUvyP8KCZrC
+-AiNyoDP85T+hBZaSXK3aYGpVwelyj3bvo1GrTNwNWLw=
+------END RSA PRIVATE KEY-----
++-----BEGIN PRIVATE KEY-----
++MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQDolKefhOG5aLih
+++6vq1TUfDaGF9l5AVvqvq6ctc7ubLEUs26sQIw8fXZIbe0JZ31ZQ09NCb6TlnXrj
++6J+fdeXnUEbGOFJ5epih9va2tzrVGtf8giV7BlSUygo+5OAcW+Zmc2/305WZ7TC3
++UyATH1G8OthSoq9VoyiHCfXwqBvCWhnilTuEYeadHs3eFFFCHa9QV5eTanastr0z
++LBA54zrA93oJL/CNkijeDup/wt8FmKTDlmGZBqGYis+6ybP4v3s+27FeyZcHc05Y
++aSc5HDklRQT+iZRDsUzTcWdcLSsuz7WRprEkgE6tnuvm8N/AHjqdF5886nBo7Qw6
++HwZk+zhc2Vo0vVWUuvgzjntkB1pXtZwh3B8h+JLuiEZbK/cZETQCJTn57xx8aiVH
++p6HmmeKEA4wgSktSl8oCTv7S+wS00FZ/8StRJj7yjZ481pOLUT54m1IYbOet+aqT
++lP2D6hQYdSY1a7mW7FnAwIUXHsNLsTjVzmvRPuJbbUPckmGtQC71qibgF+4LtgbA
++TC8qn5vNdWJwOwiBTMjvh5appCxX7+S/8SEQF0e5dumBjtFcFwhozH8+DVTzDJHu
++Jwe6mvTZKV0AUCjJrN0M3eSVtB8vUbo+TvBj3BWZldLcI3dbiTw/3AI5Fi2l43Tb
++CdekFnNp4IUEUuh2KikV+o/glzsbqQIDAQABAoICAFw1q6tr5I48vY7DF+rXsuLn
++5ZUWE1IQ6fzB4lr72nJv/9EEGnMgYzt9PpMUsD6vdCpBgS2C0+6RHArFzJtNA+RM
++iHLIG7K7702veyr/xBx/MwiSlMeMv/XpkFxVI6E6skMGG2s3AMXxKvJTy5CpRx+I
++eQFyLG+Ya1X2lgJes/q+/CpAHkOjCOpcLySQC5NZ74q734V7nSdmn+Zs3tYEh+O/
++eiuwTP/j5b38Te5vVTqDxTciJPmljmXLCwa0N100lWlbcpvw8qbqiTI2Jm3XCbUE
++AzHjW9vmrF3cRS1fXxKFGShw3SRqlkbxjfeWoi8qDPUBS4m8LOr8qG9Wo5Nfon0z
++zLP4bci3zHDvVcaaZrrsUBs/yZbg+Dgka1DmX7ekmeccr2yTdKDFgPupYUyxVbTl
++a9ZLJysjFD7rgBv1ZclHonLp6Vbm+ZoTqvteo4ikAy6L9RtBWJ23XEK34PkP/+c5
++2vWZaOrnjSeBHbFce8cdJSxqWpP+eSCI5I9XbDrYFIsQ/gqKgtzDKy2ihJ2Y8STL
++yO4hyFPFjxc+Gg4/P2PpmT5CY2ty44M0BWs+JGW96CJPrrplf2lmQUQJj5LZY66X
++Z/4C9L7ZYtKZ+bs5SvU46yWugAvQZX22Xm9xLXWyVXRdx3bj+3M3fDnF9di/zdbh
++CgLx7oWPNrXc7FCajnn9AoIBAQD5FMYwRpw9NWT9WDxQwx+cSI4Icbd88ByTW63S
++LzeRwZA0J9/SfwO+aBRupzc9GkGXCiZcGMw3AGsCtig8yFlw8E5KnzN7KlftDMnM
++9NUxxzlR8VwKyLnZfG7sDTl057ZlUujnqhmt/F8F7dIy7FVO1dE/8nngA+FYTCOG
++UZdGjwyBDlDM0JJdUWGY3xslutcpCDN5mzSTKjy9drMvImAshRawxRF6WBpn7vr2
++nC6vciqfx1Mzx1vyk0Jm0ilaydDdLMADjt/iL4Nkr0BEs4k+UzQiKDwp8gu7abQ1
++eBfxd9Iar4htQa2I1Ewl6P01G/q+ZYwgHhJ9RVn4AxQXefILAoIBAQDvCouORdQX
++C8wsyp7MwXlF/3NQeNN5/+B2mhbxrBOf7PmMCXLnkRWcjwJtzypWFqJ0sqai/2+0
++bqbMcjX5maT8stT2shl3zXe/Ejt2e3TBYpc1tyuses8Kb5BMU8hu6tTd3G2CMXpD
++dT6DVemJZCTtwj9aBNIxSizvlgMolJnCpzhPnlfHSI6E+g3m/LTTo3HwbjMSw/Uq
++irgjOpI2wSBB6LZPSgjvfcYPRyWUk16L4A5uSX0cADnovDFLa5/h0wJvN/OoCSQg
++rLCXG5E18EyL5Wc58BCY1ZvxmjG3lQtgPxYu2Jwc36R/y/JKlxW5suER5ZNpbbD4
++uOyTt2VxMQ2bAoIBAQC5+MzRFqdo/AjfL5Y5JrbfVTzXCTDa09xCGd16ZU60QTWN
+++4ed/r+o1sUKqUcRFB2MzEM/2DQBjQpZB/CbEWvWa1XJWXxypXbowveZU+QqOnmN
++uQvj8WLyA3o+PNF9e9QvauwCrHpn8VpxbtPWuaYoKnUFreFZZQxHhPGxRBIS2JOZ
++eDrT8ZaWnkCkh1AZp5smQ71LOprSlmKrg4jd1GjCVMxQR5N5KXbtyv0OTCZ/UFqK
++2aRBsMPyJgkaBChkZPLRcKwc+/wlQRx1fHQb14DNTApMxoXFO7eOwqmOkpAt9iyl
++SBIwoS0UUI5ab88+bBmXNvKcuFdNuQ4nowTJUn9pAoIBADMNkILBXSvS5DeIyuO2
++Sp1tkoZUV+5NfPY3sMDK3KIibaW/+t+EOBZo4L7tKQCb8vRzl21mmsfxfgRaPDbj
++3r3tv9g0b4YLxxBy52pFscj/soXRai17SS7UZwA2QK+XzgDYbDcLNC6mIsTQG4Gx
++dsWk3/zs3KuUSQaehmwrWK+fIUK38c1pLK8v7LoxrLkqxlHwZ04RthHw8KTthH7X
++Pnl1J0LF8CSeOyfWLSuPUfkT0GEzptnNHpEbaHfQM6R6eaGhVJPF6AZme4y6YYgg
++m2ihhSt1n0XVEWpHYWjxFy3mK2mz75unFC4LM+NEY2p2zuUQoCw7NjnY3QYrfCnx
++rRMCggEAXeXsMSLFjjyuoL7iKbAxo52HD/P0fBoy58LyRcwfNVr0lvYan4pYEx+o
++KijIh9K16PqXZXKMA9v003B+ulmF8bJ7SddCZ5NGvnFhUTDe4DdTKgp2RuwQ3Bsc
++3skPIDbhVETyOLCtys34USHrq8U/0DlGY3eLRfxw9GnbKxSBGa/KEu/qQLPNUo50
++7xHZDg7GKeC3kqNJeqKM9rkp0VzIGkEnaD9127LeNDmERDfftxJzFoC/THvUBLfU
++6Sus2ZYwRE8VFvKC30Q45t/c54X3IuhYvAuiCuTmyfE4ruyzyOwKzhUkeeLq1APX
++g0veFbyfzlJ0q8qzD/iffqqIa2ZSmQ==
++-----END PRIVATE KEY-----
+--
+2.36.0
+
+From 32a31e792c9b53a0796b37cbf479be611150601e Mon Sep 17 00:00:00 2001
+From: Jarek Kobus <jaroslaw.kobus@qt.io>
+Date: Mon, 11 Oct 2021 14:57:50 +0200
+Subject: [PATCH 063/146] Optimize mime type matching
+
+Don't count "*", don't search for "[" and for "?"
+inside m_pattern on every call to matchFileName().
+Do it once, when constructing the MimeGlobPattern.
+
+Fix matching the pattern for names without any
+wildcard: index of question mark should be -1, not
+just different from 0.
+
+This shortens loading a Qt6 project in Creator
+by about 500 ms.
+
+Change-Id: Ifa40c2cec4aba07a0312ef36877e571a8c8fb151
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+Reviewed-by: David Faure <david.faure@kdab.com>
+Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
+(cherry picked from commit 3c747aafa44ac2d0b314a002d2672227bf6513e5)
+---
+ src/corelib/mimetypes/qmimeglobpattern.cpp | 108 ++++++++++++++-------
+ src/corelib/mimetypes/qmimeglobpattern_p.h | 19 +++-
+ src/corelib/mimetypes/qmimeprovider.cpp | 1 -
+ 3 files changed, 92 insertions(+), 36 deletions(-)
+
+diff --git a/src/corelib/mimetypes/qmimeglobpattern.cpp b/src/corelib/mimetypes/qmimeglobpattern.cpp
+index 943eb84b94..3ab5bd4cb4 100644
+--- a/src/corelib/mimetypes/qmimeglobpattern.cpp
++++ b/src/corelib/mimetypes/qmimeglobpattern.cpp
+@@ -91,6 +91,40 @@ void QMimeGlobMatchResult::addMatch(const QString &mimeType, int weight, const Q
+ }
+ }
+
++QMimeGlobPattern::PatternType QMimeGlobPattern::detectPatternType(const QString &pattern) const
++{
++ const int patternLength = pattern.length();
++ if (!patternLength)
++ return OtherPattern;
++
++ const bool starCount = pattern.count(QLatin1Char('*')) == 1;
++ const bool hasSquareBracket = pattern.indexOf(QLatin1Char('[')) != -1;
++ const bool hasQuestionMark = pattern.indexOf(QLatin1Char('?')) != -1;
++
++ if (!hasSquareBracket && !hasQuestionMark) {
++ if (starCount == 1) {
++ // Patterns like "*~", "*.extension"
++ if (pattern.at(0) == QLatin1Char('*'))
++ return SuffixPattern;
++ // Patterns like "README*" (well this is currently the only one like that...)
++ if (pattern.at(patternLength - 1) == QLatin1Char('*'))
++ return PrefixPattern;
++ }
++ // Names without any wildcards like "README"
++ if (starCount == 0)
++ return LiteralPattern;
++ }
++
++ if (pattern == QLatin1String("[0-9][0-9][0-9].vdr"))
++ return VdrPattern;
++
++ if (pattern == QLatin1String("*.anim[1-9j]"))
++ return AnimPattern;
++
++ return OtherPattern;
++}
++
++
+ /*!
+ \internal
+ \class QMimeGlobPattern
+@@ -100,58 +134,66 @@ void QMimeGlobMatchResult::addMatch(const QString &mimeType, int weight, const Q
+ \sa QMimeType, QMimeDatabase, QMimeMagicRuleMatcher, QMimeMagicRule
+ */
+
+-bool QMimeGlobPattern::matchFileName(const QString &inputFilename) const
++bool QMimeGlobPattern::matchFileName(const QString &inputFileName) const
+ {
+ // "Applications MUST match globs case-insensitively, except when the case-sensitive
+ // attribute is set to true."
+ // The constructor takes care of putting case-insensitive patterns in lowercase.
+- const QString filename = m_caseSensitivity == Qt::CaseInsensitive ? inputFilename.toLower() : inputFilename;
++ const QString fileName = m_caseSensitivity == Qt::CaseInsensitive
++ ? inputFileName.toLower() : inputFileName;
+
+- const int pattern_len = m_pattern.length();
+- if (!pattern_len)
++ const int patternLength = m_pattern.length();
++ if (!patternLength)
+ return false;
+- const int len = filename.length();
+-
+- const int starCount = m_pattern.count(QLatin1Char('*'));
++ const int fileNameLength = fileName.length();
+
+- // Patterns like "*~", "*.extension"
+- if (m_pattern[0] == QLatin1Char('*') && m_pattern.indexOf(QLatin1Char('[')) == -1 && starCount == 1)
+- {
+- if (len + 1 < pattern_len) return false;
++ switch (m_patternType) {
++ case SuffixPattern: {
++ if (fileNameLength + 1 < patternLength)
++ return false;
+
+- const QChar *c1 = m_pattern.unicode() + pattern_len - 1;
+- const QChar *c2 = filename.unicode() + len - 1;
++ const QChar *c1 = m_pattern.unicode() + patternLength - 1;
++ const QChar *c2 = fileName.unicode() + fileNameLength - 1;
+ int cnt = 1;
+- while (cnt < pattern_len && *c1-- == *c2--)
++ while (cnt < patternLength && *c1-- == *c2--)
+ ++cnt;
+- return cnt == pattern_len;
++ return cnt == patternLength;
+ }
+-
+- // Patterns like "README*" (well this is currently the only one like that...)
+- if (starCount == 1 && m_pattern.at(pattern_len - 1) == QLatin1Char('*')) {
+- if (len + 1 < pattern_len) return false;
+- if (m_pattern.at(0) == QLatin1Char('*'))
+- return filename.indexOf(m_pattern.midRef(1, pattern_len - 2)) != -1;
++ case PrefixPattern: {
++ if (fileNameLength + 1 < patternLength)
++ return false;
+
+ const QChar *c1 = m_pattern.unicode();
+- const QChar *c2 = filename.unicode();
++ const QChar *c2 = fileName.unicode();
+ int cnt = 1;
+- while (cnt < pattern_len && *c1++ == *c2++)
++ while (cnt < patternLength && *c1++ == *c2++)
+ ++cnt;
+- return cnt == pattern_len;
++ return cnt == patternLength;
+ }
+-
+- // Names without any wildcards like "README"
+- if (m_pattern.indexOf(QLatin1Char('[')) == -1 && starCount == 0 && m_pattern.indexOf(QLatin1Char('?')))
+- return (m_pattern == filename);
+-
+- // Other (quite rare) patterns, like "*.anim[1-9j]": use slow but correct method
++ case LiteralPattern:
++ return (m_pattern == fileName);
++ case VdrPattern: // "[0-9][0-9][0-9].vdr" case
++ return fileNameLength == 7
++ && fileName.at(0).isDigit() && fileName.at(1).isDigit() && fileName.at(2).isDigit()
++ && QStringView{fileName}.mid(3, 4) == QLatin1String(".vdr");
++ case AnimPattern: { // "*.anim[1-9j]" case
++ if (fileNameLength < 6)
++ return false;
++ const QChar lastChar = fileName.at(fileNameLength - 1);
++ const bool lastCharOK = (lastChar.isDigit() && lastChar != QLatin1Char('0'))
++ || lastChar == QLatin1Char('j');
++ return lastCharOK && QStringView{fileName}.mid(fileNameLength - 6, 5) == QLatin1String(".anim");
++ }
++ case OtherPattern:
++ // Other fallback patterns: slow but correct method
+ #if QT_CONFIG(regularexpression)
+- QRegularExpression rx(QRegularExpression::wildcardToRegularExpression(m_pattern));
+- return rx.match(filename).hasMatch();
++ QRegularExpression rx(QRegularExpression::wildcardToRegularExpression(m_pattern));
++ return rx.match(fileName).hasMatch();
+ #else
+- return false;
++ return false;
+ #endif
++ }
++ return false;
+ }
+
+ static bool isSimplePattern(const QString &pattern)
+diff --git a/src/corelib/mimetypes/qmimeglobpattern_p.h b/src/corelib/mimetypes/qmimeglobpattern_p.h
+index 49f145e8db..88d032c787 100644
+--- a/src/corelib/mimetypes/qmimeglobpattern_p.h
++++ b/src/corelib/mimetypes/qmimeglobpattern_p.h
+@@ -80,7 +80,10 @@ public:
+
+ explicit QMimeGlobPattern(const QString &thePattern, const QString &theMimeType, unsigned theWeight = DefaultWeight, Qt::CaseSensitivity s = Qt::CaseInsensitive) :
+ m_pattern(s == Qt::CaseInsensitive ? thePattern.toLower() : thePattern),
+- m_mimeType(theMimeType), m_weight(theWeight), m_caseSensitivity(s)
++ m_mimeType(theMimeType),
++ m_weight(theWeight),
++ m_caseSensitivity(s),
++ m_patternType(detectPatternType(m_pattern))
+ {
+ }
+
+@@ -90,9 +93,10 @@ public:
+ qSwap(m_mimeType, other.m_mimeType);
+ qSwap(m_weight, other.m_weight);
+ qSwap(m_caseSensitivity, other.m_caseSensitivity);
++ qSwap(m_patternType, other.m_patternType);
+ }
+
+- bool matchFileName(const QString &filename) const;
++ bool matchFileName(const QString &inputFileName) const;
+
+ inline const QString &pattern() const { return m_pattern; }
+ inline unsigned weight() const { return m_weight; }
+@@ -100,10 +104,21 @@ public:
+ inline bool isCaseSensitive() const { return m_caseSensitivity == Qt::CaseSensitive; }
+
+ private:
++ enum PatternType {
++ SuffixPattern,
++ PrefixPattern,
++ LiteralPattern,
++ VdrPattern, // special handling for "[0-9][0-9][0-9].vdr" pattern
++ AnimPattern, // special handling for "*.anim[1-9j]" pattern
++ OtherPattern
++ };
++ PatternType detectPatternType(const QString &pattern) const;
++
+ QString m_pattern;
+ QString m_mimeType;
+ int m_weight;
+ Qt::CaseSensitivity m_caseSensitivity;
++ PatternType m_patternType;
+ };
+ Q_DECLARE_SHARED(QMimeGlobPattern)
+
+diff --git a/src/corelib/mimetypes/qmimeprovider.cpp b/src/corelib/mimetypes/qmimeprovider.cpp
+index 80616cccad..4642d0f2d0 100644
+--- a/src/corelib/mimetypes/qmimeprovider.cpp
++++ b/src/corelib/mimetypes/qmimeprovider.cpp
+@@ -275,7 +275,6 @@ void QMimeBinaryProvider::matchGlobList(QMimeGlobMatchResult &result, CacheFile
+ //qDebug() << pattern << mimeType << weight << caseSensitive;
+ QMimeGlobPattern glob(pattern, QString() /*unused*/, weight, qtCaseSensitive);
+
+- // TODO: this could be done faster for literals where a simple == would do.
+ if (glob.matchFileName(fileName))
+ result.addMatch(QLatin1String(mimeType), weight, pattern);
+ }
+--
+2.36.0
+
+From 0822f29ea5ea2b8cdf0e526fa1194a320a8525a2 Mon Sep 17 00:00:00 2001
+From: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
+Date: Wed, 10 Nov 2021 15:18:18 +0100
+Subject: [PATCH 064/146] Fix developer build
+
+Some incomplete refactoring from upstream left an unused variable
+which makes a -developer-build fail (as it enables -Werror).
+
+Remove the unused variable and fix the build.
+
+Change-Id: I2c5857ba9d80ba225d1a4f42414888564ebfe4a4
+---
+ src/plugins/sqldrivers/mysql/qsql_mysql.cpp | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
+index ceee4a3a59..6bc9d46755 100644
+--- a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
++++ b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
+@@ -379,7 +379,6 @@ void QMYSQLResultPrivate::bindBlobs()
+ bool QMYSQLResultPrivate::bindInValues()
+ {
+ MYSQL_BIND *bind;
+- char *field;
+ int i = 0;
+
+ if (!meta)
+--
+2.36.0
+
+From b43c61f03e9a4b82d5c8504c2156235f954a2eba Mon Sep 17 00:00:00 2001
+From: Eirik Aavitsland <eirik.aavitsland@qt.io>
+Date: Tue, 16 Nov 2021 07:41:20 +0100
+Subject: [PATCH 065/146] Reject truncated and corrupt ascii pnm images
+
+In contrast to the binary decoder code, the ascii decoder would not
+abort and fail on premature end of file.
+
+Pick-to: 6.2 6.2.2 5.15 5.12 5.12.12
+Change-Id: If27bce0afa8d1de6c4dbeb2bc0e623c1dcc2f1e0
+Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
+(cherry picked from commit 997c052db9e2bef47cf8217c1537a99c2f086858)
+---
+ src/gui/image/qppmhandler.cpp | 49 +++++++++++++++++++----------------
+ 1 file changed, 27 insertions(+), 22 deletions(-)
+
+diff --git a/src/gui/image/qppmhandler.cpp b/src/gui/image/qppmhandler.cpp
+index 728259ba9e..b03458bdd9 100644
+--- a/src/gui/image/qppmhandler.cpp
++++ b/src/gui/image/qppmhandler.cpp
+@@ -63,7 +63,7 @@ static void discard_pbm_line(QIODevice *d)
+ } while (res > 0 && buf[res-1] != '\n');
+ }
+
+-static int read_pbm_int(QIODevice *d)
++static int read_pbm_int(QIODevice *d, bool *ok)
+ {
+ char c;
+ int val = -1;
+@@ -97,6 +97,8 @@ static int read_pbm_int(QIODevice *d)
+ else
+ break;
+ }
++ if (val < 0)
++ *ok = false;
+ return hasOverflow ? -1 : val;
+ }
+
+@@ -113,16 +115,17 @@ static bool read_pbm_header(QIODevice *device, char& type, int& w, int& h, int&
+ if (type < '1' || type > '6')
+ return false;
+
+- w = read_pbm_int(device); // get image width
+- h = read_pbm_int(device); // get image height
++ bool ok = true;
++ w = read_pbm_int(device, &ok); // get image width
++ h = read_pbm_int(device, &ok); // get image height
+
+ if (type == '1' || type == '4')
+ mcc = 1; // ignore max color component
+ else
+- mcc = read_pbm_int(device); // get max color component
++ mcc = read_pbm_int(device, &ok); // get max color component
+
+- if (w <= 0 || w > 32767 || h <= 0 || h > 32767 || mcc <= 0 || mcc > 0xffff)
+- return false; // weird P.M image
++ if (!ok || w <= 0 || w > 32767 || h <= 0 || h > 32767 || mcc <= 0 || mcc > 0xffff)
++ return false; // weird P.M image
+
+ return true;
+ }
+@@ -233,18 +236,18 @@ static bool read_pbm_body(QIODevice *device, char type, int w, int h, int mcc, Q
+ } else { // read ascii data
+ uchar *p;
+ int n;
+- char buf;
+- for (y = 0; (y < h) && (device->peek(&buf, 1) == 1); y++) {
++ bool ok = true;
++ for (y = 0; y < h && ok; y++) {
+ p = outImage->scanLine(y);
+ n = pbm_bpl;
+ if (nbits == 1) {
+ int b;
+ int bitsLeft = w;
+- while (n--) {
++ while (n-- && ok) {
+ b = 0;
+ for (int i=0; i<8; i++) {
+ if (i < bitsLeft)
+- b = (b << 1) | (read_pbm_int(device) & 1);
++ b = (b << 1) | (read_pbm_int(device, &ok) & 1);
+ else
+ b = (b << 1) | (0 & 1); // pad it our self if we need to
+ }
+@@ -253,36 +256,38 @@ static bool read_pbm_body(QIODevice *device, char type, int w, int h, int mcc, Q
+ }
+ } else if (nbits == 8) {
+ if (mcc == 255) {
+- while (n--) {
+- *p++ = read_pbm_int(device);
++ while (n-- && ok) {
++ *p++ = read_pbm_int(device, &ok);
+ }
+ } else {
+- while (n--) {
+- *p++ = (read_pbm_int(device) & 0xffff) * 255 / mcc;
++ while (n-- && ok) {
++ *p++ = (read_pbm_int(device, &ok) & 0xffff) * 255 / mcc;
+ }
+ }
+ } else { // 32 bits
+ n /= 4;
+ int r, g, b;
+ if (mcc == 255) {
+- while (n--) {
+- r = read_pbm_int(device);
+- g = read_pbm_int(device);
+- b = read_pbm_int(device);
++ while (n-- && ok) {
++ r = read_pbm_int(device, &ok);
++ g = read_pbm_int(device, &ok);
++ b = read_pbm_int(device, &ok);
+ *((QRgb*)p) = qRgb(r, g, b);
+ p += 4;
+ }
+ } else {
+- while (n--) {
+- r = read_pbm_int(device);
+- g = read_pbm_int(device);
+- b = read_pbm_int(device);
++ while (n-- && ok) {
++ r = read_pbm_int(device, &ok);
++ g = read_pbm_int(device, &ok);
++ b = read_pbm_int(device, &ok);
+ *((QRgb*)p) = scale_pbm_color(mcc, r, g, b);
+ p += 4;
+ }
+ }
+ }
+ }
++ if (!ok)
++ return false;
+ }
+
+ if (format == QImage::Format_Mono) {
+--
+2.36.0
+
+From 0312f98f13494ba5cec4f121a6d9e56f3a723b1f Mon Sep 17 00:00:00 2001
+From: Allan Sandfeld Jensen <allan.jensen@qt.io>
+Date: Tue, 16 Nov 2021 17:06:21 +0100
+Subject: [PATCH 066/146] Increment reference count when restoring reference
+
+Otherwise the count will be wrong after an out of memory failure in
+reinterpretAsFormat.
+
+Pick-to: 6.2 5.15
+Fixes: QTBUG-98377
+Change-Id: Ice51d47a6db9277126a5c7337e14aaf5ddee3a10
+Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
+(cherry picked from commit 1a8b7eb1d4f27e74621ee94c01dbeda3afd302c7)
+---
+ src/gui/image/qimage.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp
+index a5d708661f..016431fade 100644
+--- a/src/gui/image/qimage.cpp
++++ b/src/gui/image/qimage.cpp
+@@ -2258,6 +2258,7 @@ bool QImage::reinterpretAsFormat(Format format)
+ // In case detach() ran out of memory
+ if (!d) {
+ d = oldD;
++ d->ref.ref();
+ return false;
+ }
+ }
+--
+2.36.0
+
+From 13a4dddd4a2df7e055c9aaf1b6370d8bfe53b9e3 Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Mon, 15 Nov 2021 13:06:46 +0100
+Subject: [PATCH 067/146] QAbstractFileEngine: fix UB (data race) on
+ qt_file_engine_handlers_in_use
+
+While all writers of the variable hold fileEngineHandlerMutex for
+writing, the qt_custom_file_engine_handler_create() function checks
+the value before entering a fileEngineHandlerMutex read-side critical
+section, thereby causing a C++11 data race.
+
+Fix by making the variable atomic. Interestingly enough, relaxed
+atomic operations suffice here, since the actual synchronization
+happens in read- and write-side critical sections, and if
+qt_file_engine_handlers_in_use is wrong w.r.t. to the actual list, the
+critical sections will still work. We just mustn't cause UB by reading
+and writing to a simple bool without proper synchronization.
+
+Pick-to: 6.2 5.15
+Change-Id: I30469504cdbc90e2ab27125181e53d74305f13fd
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
+(cherry picked from commit 536471106d47bb99680f8e0dbb448c9671914309)
+---
+ src/corelib/io/qabstractfileengine.cpp | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/corelib/io/qabstractfileengine.cpp b/src/corelib/io/qabstractfileengine.cpp
+index 070139b608..ef6e91d826 100644
+--- a/src/corelib/io/qabstractfileengine.cpp
++++ b/src/corelib/io/qabstractfileengine.cpp
+@@ -101,7 +101,7 @@ QT_BEGIN_NAMESPACE
+ \sa QAbstractFileEngine, QAbstractFileEngine::create()
+ */
+
+-static bool qt_file_engine_handlers_in_use = false;
++static QBasicAtomicInt qt_file_engine_handlers_in_use = Q_BASIC_ATOMIC_INITIALIZER(false);
+
+ /*
+ All application-wide handlers are stored in this list. The mutex must be
+@@ -132,7 +132,7 @@ Q_GLOBAL_STATIC(QAbstractFileEngineHandlerList, fileEngineHandlers)
+ QAbstractFileEngineHandler::QAbstractFileEngineHandler()
+ {
+ QWriteLocker locker(fileEngineHandlerMutex());
+- qt_file_engine_handlers_in_use = true;
++ qt_file_engine_handlers_in_use.storeRelaxed(true);
+ fileEngineHandlers()->prepend(this);
+ }
+
+@@ -148,7 +148,7 @@ QAbstractFileEngineHandler::~QAbstractFileEngineHandler()
+ QAbstractFileEngineHandlerList *handlers = fileEngineHandlers();
+ handlers->removeOne(this);
+ if (handlers->isEmpty())
+- qt_file_engine_handlers_in_use = false;
++ qt_file_engine_handlers_in_use.storeRelaxed(false);
+ }
+ }
+
+@@ -161,7 +161,7 @@ QAbstractFileEngine *qt_custom_file_engine_handler_create(const QString &path)
+ {
+ QAbstractFileEngine *engine = nullptr;
+
+- if (qt_file_engine_handlers_in_use) {
++ if (qt_file_engine_handlers_in_use.loadRelaxed()) {
+ QReadLocker locker(fileEngineHandlerMutex());
+
+ // check for registered handlers that can load the file
+--
+2.36.0
+
+From 61117c1f0ff471ac03424b5e88730f4648aa0808 Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <albert.astals.cid@kdab.com>
+Date: Fri, 28 May 2021 17:28:03 +0200
+Subject: [PATCH 068/146] Use icon themes in QPrintPreviewDialog [if they
+ exist]
+
+I've renamed a few of the qrc icons to the names most common icon themes use
+for similar actions (the action themselves are not part of the icon naming spec
+https://specifications.freedesktop.org/icon-naming-spec/icon-naming-spec-latest.html
+since it's not been updated in a while).
+
+Task-number: QTBUG-85879
+Change-Id: I23bb300dbf4e953517516c97b8af118859aeb6fa
+Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
+(cherry picked from commit 67a00f77068d1e01c1d0c8b7963dae4c6289b019)
+---
+ .../images/{print-24.png => printer-24.png} | Bin
+ .../images/{print-32.png => printer-32.png} | Bin
+ ...-sided-24.png => view-pages-facing-24.png} | Bin
+ ...-sided-32.png => view-pages-facing-32.png} | Bin
+ ...ulti-24.png => view-pages-overview-24.png} | Bin
+ ...ulti-32.png => view-pages-overview-32.png} | Bin
+ ...ge-one-24.png => view-pages-single-24.png} | Bin
+ ...ge-one-32.png => view-pages-single-32.png} | Bin
+ .../{fit-page-24.png => zoom-fit-page-24.png} | Bin
+ .../{fit-page-32.png => zoom-fit-page-32.png} | Bin
+ ...fit-width-24.png => zoom-fit-width-24.png} | Bin
+ ...fit-width-32.png => zoom-fit-width-32.png} | Bin
+ src/printsupport/dialogs/qprintdialog.qrc | 24 +++++++++---------
+ .../dialogs/qprintpreviewdialog.cpp | 14 +++++-----
+ 14 files changed, 19 insertions(+), 19 deletions(-)
+ rename src/printsupport/dialogs/images/{print-24.png => printer-24.png} (100%)
+ rename src/printsupport/dialogs/images/{print-32.png => printer-32.png} (100%)
+ rename src/printsupport/dialogs/images/{view-page-sided-24.png => view-pages-facing-24.png} (100%)
+ rename src/printsupport/dialogs/images/{view-page-sided-32.png => view-pages-facing-32.png} (100%)
+ rename src/printsupport/dialogs/images/{view-page-multi-24.png => view-pages-overview-24.png} (100%)
+ rename src/printsupport/dialogs/images/{view-page-multi-32.png => view-pages-overview-32.png} (100%)
+ rename src/printsupport/dialogs/images/{view-page-one-24.png => view-pages-single-24.png} (100%)
+ rename src/printsupport/dialogs/images/{view-page-one-32.png => view-pages-single-32.png} (100%)
+ rename src/printsupport/dialogs/images/{fit-page-24.png => zoom-fit-page-24.png} (100%)
+ rename src/printsupport/dialogs/images/{fit-page-32.png => zoom-fit-page-32.png} (100%)
+ rename src/printsupport/dialogs/images/{fit-width-24.png => zoom-fit-width-24.png} (100%)
+ rename src/printsupport/dialogs/images/{fit-width-32.png => zoom-fit-width-32.png} (100%)
+
+diff --git a/src/printsupport/dialogs/images/print-24.png b/src/printsupport/dialogs/images/printer-24.png
+similarity index 100%
+rename from src/printsupport/dialogs/images/print-24.png
+rename to src/printsupport/dialogs/images/printer-24.png
+diff --git a/src/printsupport/dialogs/images/print-32.png b/src/printsupport/dialogs/images/printer-32.png
+similarity index 100%
+rename from src/printsupport/dialogs/images/print-32.png
+rename to src/printsupport/dialogs/images/printer-32.png
+diff --git a/src/printsupport/dialogs/images/view-page-sided-24.png b/src/printsupport/dialogs/images/view-pages-facing-24.png
+similarity index 100%
+rename from src/printsupport/dialogs/images/view-page-sided-24.png
+rename to src/printsupport/dialogs/images/view-pages-facing-24.png
+diff --git a/src/printsupport/dialogs/images/view-page-sided-32.png b/src/printsupport/dialogs/images/view-pages-facing-32.png
+similarity index 100%
+rename from src/printsupport/dialogs/images/view-page-sided-32.png
+rename to src/printsupport/dialogs/images/view-pages-facing-32.png
+diff --git a/src/printsupport/dialogs/images/view-page-multi-24.png b/src/printsupport/dialogs/images/view-pages-overview-24.png
+similarity index 100%
+rename from src/printsupport/dialogs/images/view-page-multi-24.png
+rename to src/printsupport/dialogs/images/view-pages-overview-24.png
+diff --git a/src/printsupport/dialogs/images/view-page-multi-32.png b/src/printsupport/dialogs/images/view-pages-overview-32.png
+similarity index 100%
+rename from src/printsupport/dialogs/images/view-page-multi-32.png
+rename to src/printsupport/dialogs/images/view-pages-overview-32.png
+diff --git a/src/printsupport/dialogs/images/view-page-one-24.png b/src/printsupport/dialogs/images/view-pages-single-24.png
+similarity index 100%
+rename from src/printsupport/dialogs/images/view-page-one-24.png
+rename to src/printsupport/dialogs/images/view-pages-single-24.png
+diff --git a/src/printsupport/dialogs/images/view-page-one-32.png b/src/printsupport/dialogs/images/view-pages-single-32.png
+similarity index 100%
+rename from src/printsupport/dialogs/images/view-page-one-32.png
+rename to src/printsupport/dialogs/images/view-pages-single-32.png
+diff --git a/src/printsupport/dialogs/images/fit-page-24.png b/src/printsupport/dialogs/images/zoom-fit-page-24.png
+similarity index 100%
+rename from src/printsupport/dialogs/images/fit-page-24.png
+rename to src/printsupport/dialogs/images/zoom-fit-page-24.png
+diff --git a/src/printsupport/dialogs/images/fit-page-32.png b/src/printsupport/dialogs/images/zoom-fit-page-32.png
+similarity index 100%
+rename from src/printsupport/dialogs/images/fit-page-32.png
+rename to src/printsupport/dialogs/images/zoom-fit-page-32.png
+diff --git a/src/printsupport/dialogs/images/fit-width-24.png b/src/printsupport/dialogs/images/zoom-fit-width-24.png
+similarity index 100%
+rename from src/printsupport/dialogs/images/fit-width-24.png
+rename to src/printsupport/dialogs/images/zoom-fit-width-24.png
+diff --git a/src/printsupport/dialogs/images/fit-width-32.png b/src/printsupport/dialogs/images/zoom-fit-width-32.png
+similarity index 100%
+rename from src/printsupport/dialogs/images/fit-width-32.png
+rename to src/printsupport/dialogs/images/zoom-fit-width-32.png
+diff --git a/src/printsupport/dialogs/qprintdialog.qrc b/src/printsupport/dialogs/qprintdialog.qrc
+index 5a579baa55..10b8e1d341 100644
+--- a/src/printsupport/dialogs/qprintdialog.qrc
++++ b/src/printsupport/dialogs/qprintdialog.qrc
+@@ -1,9 +1,9 @@
+ <!DOCTYPE RCC><RCC version="1.0">
+ <qresource prefix="/qt-project.org/dialogs/qprintpreviewdialog">
+-<file>images/fit-page-24.png</file>
+-<file>images/fit-page-32.png</file>
+-<file>images/fit-width-24.png</file>
+-<file>images/fit-width-32.png</file>
++<file>images/zoom-fit-page-24.png</file>
++<file>images/zoom-fit-page-32.png</file>
++<file>images/zoom-fit-width-24.png</file>
++<file>images/zoom-fit-width-32.png</file>
+ <file>images/go-first-24.png</file>
+ <file>images/go-first-32.png</file>
+ <file>images/go-last-24.png</file>
+@@ -18,14 +18,14 @@
+ <file>images/layout-portrait-32.png</file>
+ <file>images/page-setup-24.png</file>
+ <file>images/page-setup-32.png</file>
+-<file>images/print-24.png</file>
+-<file>images/print-32.png</file>
+-<file>images/view-page-multi-24.png</file>
+-<file>images/view-page-multi-32.png</file>
+-<file>images/view-page-one-24.png</file>
+-<file>images/view-page-one-32.png</file>
+-<file>images/view-page-sided-24.png</file>
+-<file>images/view-page-sided-32.png</file>
++<file>images/printer-24.png</file>
++<file>images/printer-32.png</file>
++<file>images/view-pages-overview-24.png</file>
++<file>images/view-pages-overview-32.png</file>
++<file>images/view-pages-single-24.png</file>
++<file>images/view-pages-single-32.png</file>
++<file>images/view-pages-facing-24.png</file>
++<file>images/view-pages-facing-32.png</file>
+ <file>images/zoom-in-24.png</file>
+ <file>images/zoom-in-32.png</file>
+ <file>images/zoom-out-24.png</file>
+diff --git a/src/printsupport/dialogs/qprintpreviewdialog.cpp b/src/printsupport/dialogs/qprintpreviewdialog.cpp
+index 39575d5f57..23b7e89538 100644
+--- a/src/printsupport/dialogs/qprintpreviewdialog.cpp
++++ b/src/printsupport/dialogs/qprintpreviewdialog.cpp
+@@ -352,7 +352,7 @@ void QPrintPreviewDialogPrivate::init(QPrinter *_printer)
+ static inline void qt_setupActionIcon(QAction *action, QLatin1String name)
+ {
+ QLatin1String imagePrefix(":/qt-project.org/dialogs/qprintpreviewdialog/images/");
+- QIcon icon;
++ QIcon icon = QIcon::fromTheme(name);
+ icon.addFile(imagePrefix + name + QLatin1String("-24.png"), QSize(24, 24));
+ icon.addFile(imagePrefix + name + QLatin1String("-32.png"), QSize(32, 32));
+ action->setIcon(icon);
+@@ -383,8 +383,8 @@ void QPrintPreviewDialogPrivate::setupActions()
+ fitPageAction->setObjectName(QLatin1String("fitPageAction"));
+ fitWidthAction->setCheckable(true);
+ fitPageAction->setCheckable(true);
+- qt_setupActionIcon(fitWidthAction, QLatin1String("fit-width"));
+- qt_setupActionIcon(fitPageAction, QLatin1String("fit-page"));
++ qt_setupActionIcon(fitWidthAction, QLatin1String("zoom-fit-width"));
++ qt_setupActionIcon(fitPageAction, QLatin1String("zoom-fit-page"));
+ QObject::connect(fitGroup, SIGNAL(triggered(QAction*)), q, SLOT(_q_fit(QAction*)));
+
+ // Zoom
+@@ -410,9 +410,9 @@ void QPrintPreviewDialogPrivate::setupActions()
+ singleModeAction = modeGroup->addAction(QCoreApplication::translate("QPrintPreviewDialog", "Show single page"));
+ facingModeAction = modeGroup->addAction(QCoreApplication::translate("QPrintPreviewDialog", "Show facing pages"));
+ overviewModeAction = modeGroup->addAction(QCoreApplication::translate("QPrintPreviewDialog", "Show overview of all pages"));
+- qt_setupActionIcon(singleModeAction, QLatin1String("view-page-one"));
+- qt_setupActionIcon(facingModeAction, QLatin1String("view-page-sided"));
+- qt_setupActionIcon(overviewModeAction, QLatin1String("view-page-multi"));
++ qt_setupActionIcon(singleModeAction, QLatin1String("view-pages-single"));
++ qt_setupActionIcon(facingModeAction, QLatin1String("view-pages-facing"));
++ qt_setupActionIcon(overviewModeAction, QLatin1String("view-pages-overview"));
+ singleModeAction->setObjectName(QLatin1String("singleModeAction"));
+ facingModeAction->setObjectName(QLatin1String("facingModeAction"));
+ overviewModeAction->setObjectName(QLatin1String("overviewModeAction"));
+@@ -426,7 +426,7 @@ void QPrintPreviewDialogPrivate::setupActions()
+ printerGroup = new QActionGroup(q);
+ printAction = printerGroup->addAction(QCoreApplication::translate("QPrintPreviewDialog", "Print"));
+ pageSetupAction = printerGroup->addAction(QCoreApplication::translate("QPrintPreviewDialog", "Page setup"));
+- qt_setupActionIcon(printAction, QLatin1String("print"));
++ qt_setupActionIcon(printAction, QLatin1String("printer"));
+ qt_setupActionIcon(pageSetupAction, QLatin1String("page-setup"));
+ QObject::connect(printAction, SIGNAL(triggered(bool)), q, SLOT(_q_print()));
+ QObject::connect(pageSetupAction, SIGNAL(triggered(bool)), q, SLOT(_q_pageSetup()));
+--
+2.36.0
+
+From 72071fb3603ecbf3175fb2dfccf2f6ada609ed8f Mon Sep 17 00:00:00 2001
+From: Volker Hilsheimer <volker.hilsheimer@qt.io>
+Date: Wed, 24 Nov 2021 19:14:26 +0100
+Subject: [PATCH 069/146] Don't shrink a column when it spans multiple columns
+
+If a cell spans multiple columns, then the merged cells' starting
+column's maximum width should never become smaller than what was
+calculated from previous rows.
+
+Otherwise, we'd distribute the space of the column that has a span
+across all merged columns, resulting in unnecessary line breaks esp if
+WrapAnywhere is enabled.
+
+Add a test case.
+
+Fixes: QTBUG-91691
+Fixes: QTBUG-95240
+Pick-to: 6.2 5.15
+Change-Id: Ic27dbdb128071e50fba049de85c9f23ba2f059b3
+Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
+(cherry picked from commit 9538c7ca73e75ab8219e43b36b49200f27164dbb)
+---
+ src/gui/text/qtextdocumentlayout.cpp | 2 ++
+ .../gui/text/qtexttable/tst_qtexttable.cpp | 28 +++++++++++++++++++
+ 2 files changed, 30 insertions(+)
+
+diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp
+index 9d70873590..a464be613f 100644
+--- a/src/gui/text/qtextdocumentlayout.cpp
++++ b/src/gui/text/qtextdocumentlayout.cpp
+@@ -2536,6 +2536,8 @@ recalc_minmax_widths:
+ for (int n = 0; n < cspan; ++n) {
+ const int col = i + n;
+ QFixed w = widthToDistribute / (cspan - n);
++ if (td->maxWidths[col] != QFIXED_MAX)
++ w = qMax(td->maxWidths[col], w);
+ td->maxWidths[col] = qMax(td->minWidths.at(col), w);
+ widthToDistribute -= td->maxWidths.at(col);
+ if (widthToDistribute <= 0)
+diff --git a/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp b/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp
+index 474079037b..b7baf720b3 100644
+--- a/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp
++++ b/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp
+@@ -44,6 +44,7 @@
+ #include <QPainter>
+ #include <QPaintEngine>
+ #endif
++#include <private/qtextdocumentlayout_p.h>
+ #include <private/qpagedpaintdevice_p.h>
+
+ typedef QList<int> IntList;
+@@ -100,6 +101,10 @@ private slots:
+ void checkBorderAttributes_data();
+ void checkBorderAttributes();
+
++#ifndef QT_NO_WIDGETS
++ void columnWidthWithSpans();
++#endif
++
+ private:
+ QTextTable *create2x2Table();
+ QTextTable *create4x4Table();
+@@ -1278,5 +1283,28 @@ void tst_QTextTable::checkBorderAttributes()
+ }
+ }
+
++#ifndef QT_NO_WIDGETS
++void tst_QTextTable::columnWidthWithSpans()
++{
++ cleanup();
++ init();
++ QTextTable *table = cursor.insertTable(4, 4);
++ QTextEdit textEdit;
++ textEdit.setDocument(doc);
++ textEdit.show();
++ QVERIFY(QTest::qWaitForWindowExposed(&textEdit));
++
++ for (int i = 0; i < table->columns(); ++i)
++ table->cellAt(0, i).firstCursorPosition().insertText(QString("Header %1").arg(i));
++
++ QTextBlock block = table->cellAt(0, 0).firstCursorPosition().block();
++ const QRectF beforeRect = table->document()->documentLayout()->blockBoundingRect(block);
++ table->mergeCells(1, 0, 1, table->columns());
++ block = table->cellAt(0, 0).firstCursorPosition().block();
++ const QRectF afterRect = table->document()->documentLayout()->blockBoundingRect(block);
++ QCOMPARE(afterRect, beforeRect);
++}
++#endif
++
+ QTEST_MAIN(tst_QTextTable)
+ #include "tst_qtexttable.moc"
+--
+2.36.0
+
+From fb6c8291324e404a66ea3493fe9207a0e0e657e4 Mon Sep 17 00:00:00 2001
+From: Volker Hilsheimer <volker.hilsheimer@qt.io>
+Date: Thu, 25 Nov 2021 12:28:07 +0100
+Subject: [PATCH 070/146] Don't let text table cells shrink below their minimum
+ width
+
+We calculate the minimum width, but then use it only to make sure that
+the maximum width is at least as large as it. Without setting the layout
+struct's minimumWidth as well, table cells can be smaller.
+
+Add a test case.
+
+Fixes: QTBUG-86671
+Fixes: QTBUG-97463
+Pick-to: 6.2 5.15
+Change-Id: Idf4ad015938abb8d3e599e9a58e002f29c0067be
+Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
+(cherry picked from commit 97cfd4940157817dd761fd02f2e6da4afc5b4a30)
+---
+ src/gui/text/qtextdocumentlayout.cpp | 1 +
+ .../gui/text/qtexttable/tst_qtexttable.cpp | 61 ++++++++++++++++++-
+ 2 files changed, 61 insertions(+), 1 deletion(-)
+
+diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp
+index a464be613f..3ac7cde805 100644
+--- a/src/gui/text/qtextdocumentlayout.cpp
++++ b/src/gui/text/qtextdocumentlayout.cpp
+@@ -2360,6 +2360,7 @@ QTextLayoutStruct QTextDocumentLayoutPrivate::layoutCell(QTextTable *t, const QT
+ // constraint the maximumWidth by the minimum width of the fixed size floats, to
+ // keep them visible
+ layoutStruct.maximumWidth = qMax(layoutStruct.maximumWidth, floatMinWidth);
++ layoutStruct.minimumWidth = floatMinWidth;
+
+ // as floats in cells get added to the table's float list but must not affect
+ // floats in other cells we must clear the list here.
+diff --git a/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp b/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp
+index b7baf720b3..93bbf9f34f 100644
+--- a/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp
++++ b/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp
+@@ -29,7 +29,7 @@
+
+ #include <QtTest/QtTest>
+
+-
++#include <qbuffer.h>
+ #include <qtextdocument.h>
+ #include <qtextdocumentfragment.h>
+ #include <qtexttable.h>
+@@ -103,6 +103,9 @@ private slots:
+
+ #ifndef QT_NO_WIDGETS
+ void columnWidthWithSpans();
++
++ void columnWidthWithImage_data();
++ void columnWidthWithImage();
+ #endif
+
+ private:
+@@ -1304,7 +1307,63 @@ void tst_QTextTable::columnWidthWithSpans()
+ const QRectF afterRect = table->document()->documentLayout()->blockBoundingRect(block);
+ QCOMPARE(afterRect, beforeRect);
+ }
++
++void tst_QTextTable::columnWidthWithImage_data()
++{
++ const auto imageHtml = [](int width, int height) {
++ QImage image(width, height, QImage::Format_RGB32);
++ image.fill(Qt::red);
++ QByteArray imageBytes;
++ QBuffer buffer(&imageBytes);
++ buffer.open(QIODevice::WriteOnly);
++ image.save(&buffer, "png");
++ return QString("<td><img src='data:image/png;base64,%1'/></td>").arg(QString(imageBytes.toBase64()));
++ };
++
++ QTest::addColumn<QString>("leftHtml");
++ QTest::addColumn<QString>("rightHtml");
++ QTest::addColumn<QSize>("imageSize");
++ QTest::addRow("image")
++ << imageHtml(500, 32) << "<td></td>" << QSize(500, 32);
++ QTest::addRow("image, text")
++ << imageHtml(32, 32) << "<td>abc</td>" << QSize(32, 32);
++ QTest::addRow("image, 100%% text")
++ << imageHtml(32, 32) << "<td style='background-color: grey' width='100%'>abc</td>"
++ << QSize(32, 32);
++ QTest::addRow("image, image")
++ << imageHtml(256, 32) << imageHtml(256, 32) << QSize(256, 32);
++}
++
++void tst_QTextTable::columnWidthWithImage()
++{
++ const QString tableTemplate = "<table><tr>%1 %2</tr></table>";
++
++ QFETCH(QString, leftHtml);
++ QFETCH(QString, rightHtml);
++ QFETCH(QSize, imageSize);
++
++ QTextDocument doc;
++ doc.setHtml(tableTemplate.arg(leftHtml).arg(rightHtml));
++ QTextEdit textEdit;
++ textEdit.setDocument(&doc);
++ textEdit.show();
++ QVERIFY(QTest::qWaitForWindowExposed(&textEdit));
++
++ QTextCursor cursor(doc.firstBlock());
++ cursor.movePosition(QTextCursor::Right);
++
++ QTextTable *currentTable = cursor.currentTable();
++ QVERIFY(currentTable);
++
++ QTextBlock block = currentTable->cellAt(0, 0).firstCursorPosition().block();
++ const QRectF leftRect = currentTable->document()->documentLayout()->blockBoundingRect(block);
++ block = currentTable->cellAt(0, 1).firstCursorPosition().block();
++ const QRectF rightRect = currentTable->document()->documentLayout()->blockBoundingRect(block);
++ QCOMPARE(leftRect.size().toSize(), imageSize);
++ QVERIFY(rightRect.left() > leftRect.right());
++}
+ #endif
+
++
+ QTEST_MAIN(tst_QTextTable)
+ #include "tst_qtexttable.moc"
+--
+2.36.0
+
+From b3e39df580827fba0a69f0824668781ef43a3b18 Mon Sep 17 00:00:00 2001
+From: Volker Hilsheimer <volker.hilsheimer@qt.io>
+Date: Mon, 6 Dec 2021 12:49:10 +0100
+Subject: [PATCH 071/146] Fix qtdeclarative baseline test failure for text
+ tables
+
+Amend 97cfd4940157817dd761fd02f2e6da4afc5b4a30, which resulted in
+incorrectly laid out tables in Text elements.
+
+Reported by the baseline test for the scenegraph. Not reproducible using
+a QtWidget text widget, so no unit-test added here.
+
+Pick-to: 6.2 5.15
+Task-number: QTBUG-86671
+Task-number: QTBUG-97463
+Change-Id: I607b1fea3fb5923f81f05a3646bafebec3dcf3b5
+Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
+(cherry picked from commit 220510a885747bb084e23dc51ea31e35e4fd115e)
+---
+ src/gui/text/qtextdocumentlayout.cpp | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp
+index 3ac7cde805..322f494e5d 100644
+--- a/src/gui/text/qtextdocumentlayout.cpp
++++ b/src/gui/text/qtextdocumentlayout.cpp
+@@ -2357,10 +2357,10 @@ QTextLayoutStruct QTextDocumentLayoutPrivate::layoutCell(QTextTable *t, const QT
+ floatMinWidth = qMax(floatMinWidth, cd->minimumWidth);
+ }
+
+- // constraint the maximumWidth by the minimum width of the fixed size floats, to
+- // keep them visible
++ // constraint the maximum/minimumWidth by the minimum width of the fixed size floats,
++ // to keep them visible
+ layoutStruct.maximumWidth = qMax(layoutStruct.maximumWidth, floatMinWidth);
+- layoutStruct.minimumWidth = floatMinWidth;
++ layoutStruct.minimumWidth = qMax(layoutStruct.minimumWidth, floatMinWidth);
+
+ // as floats in cells get added to the table's float list but must not affect
+ // floats in other cells we must clear the list here.
+--
+2.36.0
+
+From b95a87b18582b8c040c280af5346a2b8668549ad Mon Sep 17 00:00:00 2001
+From: Allan Sandfeld Jensen <allan.jensen@qt.io>
+Date: Fri, 14 May 2021 10:43:11 +0200
+Subject: [PATCH 072/146] Avoid mixing atomic futex changes and QAtomic
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Either the mix of futex and atomic, or the mix of 32-bit futex and
+64-bit atomic doesn't work. In any case, the existing code leads to
+bad behavior.
+
+* asturmlechner 2021-11-19:
+ Also added the typo fix from 587e3bb0 since it conflicted.
+
+Pick-to: 6.1 5.15
+Fixes: QTBUG-92188
+Change-Id: Icc6ba28d6e2465c373d00e84f4da2b92c037e797
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+(cherry picked from commit 2d9cc639a4a7a5e97979a6034364bd67dfa10c23)
+---
+ src/corelib/thread/qsemaphore.cpp | 46 ++++++++++++-------------------
+ 1 file changed, 17 insertions(+), 29 deletions(-)
+
+diff --git a/src/corelib/thread/qsemaphore.cpp b/src/corelib/thread/qsemaphore.cpp
+index d4fb756b94..1d01fc1b28 100644
+--- a/src/corelib/thread/qsemaphore.cpp
++++ b/src/corelib/thread/qsemaphore.cpp
+@@ -357,47 +357,31 @@ void QSemaphore::release(int n)
+ quintptr prevValue = u.fetchAndAddRelease(nn);
+ if (futexNeedsWake(prevValue)) {
+ #ifdef FUTEX_OP
+- if (!futexHasWaiterCount) {
+- /*
+- On 32-bit systems, all waiters are waiting on the same address,
+- so we'll wake them all and ask the kernel to clear the high bit.
+-
+- atomic {
+- int oldval = u;
+- u = oldval & ~(1 << 31);
+- futexWake(u, INT_MAX);
+- if (oldval == 0) // impossible condition
+- futexWake(u, INT_MAX);
+- }
+- */
+- quint32 op = FUTEX_OP_ANDN | FUTEX_OP_OPARG_SHIFT;
+- quint32 oparg = 31;
+- quint32 cmp = FUTEX_OP_CMP_EQ;
+- quint32 cmparg = 0;
+- futexWakeOp(u, INT_MAX, INT_MAX, u, FUTEX_OP(op, oparg, cmp, cmparg));
+- } else {
++ if (futexHasWaiterCount) {
+ /*
+ On 64-bit systems, the single-token waiters wait on the low half
+ and the multi-token waiters wait on the upper half. So we ask
+ the kernel to wake up n single-token waiters and all multi-token
+- waiters (if any), then clear the multi-token wait bit.
++ waiters (if any), and clear the multi-token wait bit.
+
+ atomic {
+ int oldval = *upper;
+- *upper = oldval & ~(1 << 31);
++ *upper = oldval | 0;
+ futexWake(lower, n);
+- if (oldval < 0) // sign bit set
++ if (oldval != 0) // always true
+ futexWake(upper, INT_MAX);
+ }
+ */
+- quint32 op = FUTEX_OP_ANDN | FUTEX_OP_OPARG_SHIFT;
+- quint32 oparg = 31;
+- quint32 cmp = FUTEX_OP_CMP_LT;
++ quint32 op = FUTEX_OP_OR;
++ quint32 oparg = 0;
++ quint32 cmp = FUTEX_OP_CMP_NE;
+ quint32 cmparg = 0;
++ u.fetchAndAndRelease(futexNeedsWakeAllBit - 1);
+ futexWakeOp(*futexLow32(&u), n, INT_MAX, *futexHigh32(&u), FUTEX_OP(op, oparg, cmp, cmparg));
++ return;
+ }
+-#else
+- // Unset the bit and wake everyone. There are two possibibilies
++#endif
++ // Unset the bit and wake everyone. There are two possibilities
+ // under which a thread can set the bit between the AND and the
+ // futexWake:
+ // 1) it did see the new counter value, but it wasn't enough for
+@@ -405,8 +389,12 @@ void QSemaphore::release(int n)
+ // 2) it did not see the new counter value, in which case its
+ // futexWait will fail.
+ u.fetchAndAndRelease(futexNeedsWakeAllBit - 1);
+- futexWakeAll(u);
+-#endif
++ if (futexHasWaiterCount) {
++ futexWakeAll(*futexLow32(&u));
++ futexWakeAll(*futexHigh32(&u));
++ } else {
++ futexWakeAll(u);
++ }
+ }
+ return;
+ }
+--
+2.36.0
+
+From 520550fa8fd0415ed45b6135928723be2c3cd2bd Mon Sep 17 00:00:00 2001
+From: Timur Pocheptsov <timur.pocheptsov@qt.io>
+Date: Fri, 9 Jul 2021 15:00:19 +0200
+Subject: [PATCH 073/146] Dont's use DTLS_MAX_VERSION when setting SSL_CTX
+
+It was fixed quite some time ago for TLS counterpart (TLS_MAX_VERSION),
+but somehow the similar fix was missing for DTLS. OpenSSL v3 deprecated
+those constants and they can be compiled out by OPENSSL_API_COMPAT.
+
+Pick-to: 6.2
+Task-number: QTBUG-94596
+Change-Id: Ia0246170a003db900c430b2fbfc177caf05a395a
+Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
+(cherry picked from commit 3186ca3e3972cf46eb48a33fe90063eb112e32b3)
+---
+ src/network/ssl/qsslcontext_openssl.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/network/ssl/qsslcontext_openssl.cpp b/src/network/ssl/qsslcontext_openssl.cpp
+index c9f202f573..d0a428c2d2 100644
+--- a/src/network/ssl/qsslcontext_openssl.cpp
++++ b/src/network/ssl/qsslcontext_openssl.cpp
+@@ -409,7 +409,7 @@ init_context:
+ break;
+ case QSsl::DtlsV1_0OrLater:
+ minVersion = DTLS1_VERSION;
+- maxVersion = DTLS_MAX_VERSION;
++ maxVersion = 0;
+ break;
+ case QSsl::DtlsV1_2:
+ minVersion = DTLS1_2_VERSION;
+@@ -417,7 +417,7 @@ init_context:
+ break;
+ case QSsl::DtlsV1_2OrLater:
+ minVersion = DTLS1_2_VERSION;
+- maxVersion = DTLS_MAX_VERSION;
++ maxVersion = 0;
+ break;
+ case QSsl::TlsV1_3OrLater:
+ #ifdef TLS1_3_VERSION
+--
+2.36.0
+
+From 22f7ef1467fd08c1e89c43edd757c3ba5a401c92 Mon Sep 17 00:00:00 2001
+From: Timur Pocheptsov <timur.pocheptsov@qt.io>
+Date: Fri, 9 Jul 2021 16:14:16 +0200
+Subject: [PATCH 074/146] Diffie-Hellman parameters: remove useless 'fix'
+
+The workaround I had implemented based on alpha version of OpenSSL v3
+and what developers (OpenSSL) said about DH back then is not going to work
+in the end - they do remove all DH (struct and related functions) stuff
+if you set a proper OPENSSL_API_COMPAT level. A proper re-write is required
+to support OpenSSL v3, but then there is no reason to keep dead useless
+code.
+
+Pick-to: 6.2
+Task-number: QTBUG-94596
+Change-Id: Iae092dd08148521649a684879d30e190736e1abe
+Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
+(cherry picked from commit 408656c6f9de326cf91376443597a2f791eb0f8d)
+---
+ .../qssldiffiehellmanparameters_openssl.cpp | 51 -------------------
+ .../ssl/qsslsocket_openssl_symbols.cpp | 4 --
+ .../ssl/qsslsocket_openssl_symbols_p.h | 3 --
+ 3 files changed, 58 deletions(-)
+
+diff --git a/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp b/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp
+index aaf8741130..b58935372c 100644
+--- a/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp
++++ b/src/network/ssl/qssldiffiehellmanparameters_openssl.cpp
+@@ -59,57 +59,6 @@
+
+ QT_BEGIN_NAMESPACE
+
+-#ifdef OPENSSL_NO_DEPRECATED_3_0
+-
+-static int q_DH_check(DH *dh, int *status)
+-{
+- // DH_check was first deprecated in OpenSSL 3.0.0, as low-level
+- // API; the EVP_PKEY family of functions was advised as an alternative.
+- // As of now EVP_PKEY_params_check ends up calling ... DH_check,
+- // which is good enough.
+-
+- Q_ASSERT(dh);
+- Q_ASSERT(status);
+-
+- EVP_PKEY *key = q_EVP_PKEY_new();
+- if (!key) {
+- qCWarning(lcSsl, "EVP_PKEY_new failed");
+- QSslSocketBackendPrivate::logAndClearErrorQueue();
+- return 0;
+- }
+- const auto keyDeleter = qScopeGuard([key](){
+- q_EVP_PKEY_free(key);
+- });
+- if (!q_EVP_PKEY_set1_DH(key, dh)) {
+- qCWarning(lcSsl, "EVP_PKEY_set1_DH failed");
+- QSslSocketBackendPrivate::logAndClearErrorQueue();
+- return 0;
+- }
+-
+- EVP_PKEY_CTX *keyCtx = q_EVP_PKEY_CTX_new(key, nullptr);
+- if (!keyCtx) {
+- qCWarning(lcSsl, "EVP_PKEY_CTX_new failed");
+- QSslSocketBackendPrivate::logAndClearErrorQueue();
+- return 0;
+- }
+- const auto ctxDeleter = qScopeGuard([keyCtx]{
+- q_EVP_PKEY_CTX_free(keyCtx);
+- });
+-
+- const int result = q_EVP_PKEY_param_check(keyCtx);
+- QSslSocketBackendPrivate::logAndClearErrorQueue();
+- // Note: unlike DH_check, we cannot obtain the 'status',
+- // if the 'result' is 0 (actually the result is 1 only
+- // if this 'status' was 0). We could probably check the
+- // errors from the error queue, but it's not needed anyway
+- // - see the 'isSafeDH' below, how it returns immediately
+- // on 0.
+- Q_UNUSED(status)
+-
+- return result;
+-}
+-#endif // OPENSSL_NO_DEPRECATED_3_0
+-
+ static bool isSafeDH(DH *dh)
+ {
+ int status = 0;
+diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp
+index 94aa5a5c1d..81caef3d8f 100644
+--- a/src/network/ssl/qsslsocket_openssl_symbols.cpp
++++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp
+@@ -489,9 +489,7 @@ DEFINEFUNC(DH *, DH_new, DUMMYARG, DUMMYARG, return nullptr, return)
+ DEFINEFUNC(void, DH_free, DH *dh, dh, return, DUMMYARG)
+ DEFINEFUNC3(DH *, d2i_DHparams, DH**a, a, const unsigned char **pp, pp, long length, length, return nullptr, return)
+ DEFINEFUNC2(int, i2d_DHparams, DH *a, a, unsigned char **p, p, return -1, return)
+-#ifndef OPENSSL_NO_DEPRECATED_3_0
+ DEFINEFUNC2(int, DH_check, DH *dh, dh, int *codes, codes, return 0, return)
+-#endif // OPENSSL_NO_DEPRECATED_3_0
+ DEFINEFUNC3(BIGNUM *, BN_bin2bn, const unsigned char *s, s, int len, len, BIGNUM *ret, ret, return nullptr, return)
+
+ #ifndef OPENSSL_NO_EC
+@@ -1176,9 +1174,7 @@ bool q_resolveOpenSslSymbols()
+ RESOLVEFUNC(DH_free)
+ RESOLVEFUNC(d2i_DHparams)
+ RESOLVEFUNC(i2d_DHparams)
+-#ifndef OPENSSL_NO_DEPRECATED_3_0
+ RESOLVEFUNC(DH_check)
+-#endif // OPENSSL_NO_DEPRECATED_3_0
+ RESOLVEFUNC(BN_bin2bn)
+
+ #ifndef OPENSSL_NO_EC
+diff --git a/src/network/ssl/qsslsocket_openssl_symbols_p.h b/src/network/ssl/qsslsocket_openssl_symbols_p.h
+index c46afcf53e..56cb26fbde 100644
+--- a/src/network/ssl/qsslsocket_openssl_symbols_p.h
++++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h
+@@ -581,10 +581,7 @@ DH *q_DH_new();
+ void q_DH_free(DH *dh);
+ DH *q_d2i_DHparams(DH **a, const unsigned char **pp, long length);
+ int q_i2d_DHparams(DH *a, unsigned char **p);
+-
+-#ifndef OPENSSL_NO_DEPRECATED_3_0
+ int q_DH_check(DH *dh, int *codes);
+-#endif // OPENSSL_NO_DEPRECATED_3_0
+
+ BIGNUM *q_BN_bin2bn(const unsigned char *s, int len, BIGNUM *ret);
+ #define q_SSL_CTX_set_tmp_dh(ctx, dh) q_SSL_CTX_ctrl((ctx), SSL_CTRL_SET_TMP_DH, 0, (char *)dh)
+--
+2.36.0
+
+From cc7b84036f19749006ba855f72b4583ea15af97a Mon Sep 17 00:00:00 2001
+From: Timur Pocheptsov <timur.pocheptsov@qt.io>
+Date: Mon, 12 Jul 2021 12:38:14 +0200
+Subject: [PATCH 075/146] Don't use a deprecated function if built/linked with
+ OpenSSL v3
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+SSL_get_peer_certificate was deprecated in OpenSSL v3 and can be 'compiled-out'
+using OPENSSL_API_COMPAT. Use SSL_get1_peer_certificate instead.
+
+Pick-to: 6.2
+Task-number: QTBUG-94596
+Change-Id: Iedb2e06e673e981cab79d4bf0147ac6f5f90089a
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+(cherry picked from commit ae6590e360fbb04d93940b2651f70df44a28943e)
+---
+ src/network/ssl/qsslsocket_openssl_symbols.cpp | 12 ++++++++++++
+ src/network/ssl/qsslsocket_openssl_symbols_p.h | 9 ++++++++-
+ 2 files changed, 20 insertions(+), 1 deletion(-)
+
+diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp
+index 81caef3d8f..f343349e2c 100644
+--- a/src/network/ssl/qsslsocket_openssl_symbols.cpp
++++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp
+@@ -368,7 +368,13 @@ DEFINEFUNC(const SSL_CIPHER *, SSL_get_current_cipher, SSL *a, a, return nullptr
+ DEFINEFUNC(int, SSL_version, const SSL *a, a, return 0, return)
+ DEFINEFUNC2(int, SSL_get_error, SSL *a, a, int b, b, return -1, return)
+ DEFINEFUNC(STACK_OF(X509) *, SSL_get_peer_cert_chain, SSL *a, a, return nullptr, return)
++
++#if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3
++DEFINEFUNC(X509 *, SSL_get1_peer_certificate, SSL *a, a, return nullptr, return)
++#else
+ DEFINEFUNC(X509 *, SSL_get_peer_certificate, SSL *a, a, return nullptr, return)
++#endif // OPENSSL_VERSION_MAJOR >= 3
++
+ DEFINEFUNC(long, SSL_get_verify_result, const SSL *a, a, return -1, return)
+ DEFINEFUNC(SSL *, SSL_new, SSL_CTX *a, a, return nullptr, return)
+ DEFINEFUNC(SSL_CTX *, SSL_get_SSL_CTX, SSL *a, a, return nullptr, return)
+@@ -1075,7 +1081,13 @@ bool q_resolveOpenSslSymbols()
+ RESOLVEFUNC(SSL_version)
+ RESOLVEFUNC(SSL_get_error)
+ RESOLVEFUNC(SSL_get_peer_cert_chain)
++
++#if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3
++ RESOLVEFUNC(SSL_get1_peer_certificate)
++#else
+ RESOLVEFUNC(SSL_get_peer_certificate)
++#endif // OPENSSL_VERSION_MAJOR >= 3
++
+ RESOLVEFUNC(SSL_get_verify_result)
+ RESOLVEFUNC(SSL_new)
+ RESOLVEFUNC(SSL_get_SSL_CTX)
+diff --git a/src/network/ssl/qsslsocket_openssl_symbols_p.h b/src/network/ssl/qsslsocket_openssl_symbols_p.h
+index 56cb26fbde..58300cc549 100644
+--- a/src/network/ssl/qsslsocket_openssl_symbols_p.h
++++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h
+@@ -509,7 +509,6 @@ const SSL_CIPHER *q_SSL_get_current_cipher(SSL *a);
+ int q_SSL_version(const SSL *a);
+ int q_SSL_get_error(SSL *a, int b);
+ STACK_OF(X509) *q_SSL_get_peer_cert_chain(SSL *a);
+-X509 *q_SSL_get_peer_certificate(SSL *a);
+ long q_SSL_get_verify_result(const SSL *a);
+ SSL *q_SSL_new(SSL_CTX *a);
+ SSL_CTX *q_SSL_get_SSL_CTX(SSL *a);
+@@ -748,6 +747,14 @@ void *q_CRYPTO_malloc(size_t num, const char *file, int line);
+ int q_SSL_CTX_get_security_level(const SSL_CTX *ctx);
+ void q_SSL_CTX_set_security_level(SSL_CTX *ctx, int level);
+
++// Here we have the ones that make difference between OpenSSL pre/post v3:
++#if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3
++X509 *q_SSL_get1_peer_certificate(SSL *a);
++#define q_SSL_get_peer_certificate q_SSL_get1_peer_certificate
++#else
++X509 *q_SSL_get_peer_certificate(SSL *a);
++#endif // OPENSSL_VERSION_MAJOR >= 3
++
+ QT_END_NAMESPACE
+
+ #endif
+--
+2.36.0
+
+From 0f5103a2f08a7083afe06acfd304059d0fd03a54 Mon Sep 17 00:00:00 2001
+From: Dmitry Shachnev <mitya57@gmail.com>
+Date: Sun, 5 Dec 2021 16:07:44 +0300
+Subject: [PATCH 076/146] =?UTF-8?q?Adapt=20for=20q=5FEVP=5FPKEY=5Fbase=5Fi?=
+ =?UTF-8?q?d=20=E2=86=92=20q=5FEVP=5FPKEY=5Fget=5Fbase=5Fid=20rename=20in?=
+ =?UTF-8?q?=20OpenSSL=203?=
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Based on upstream commit 4c0f81490ba0c4ec (the whole commit does not
+apply cleanly).
+---
+ src/network/ssl/qsslsocket_openssl_symbols.cpp | 6 ++++--
+ src/network/ssl/qsslsocket_openssl_symbols_p.h | 4 +++-
+ 2 files changed, 7 insertions(+), 3 deletions(-)
+
+diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp
+index f343349e2c..f89f5206a3 100644
+--- a/src/network/ssl/qsslsocket_openssl_symbols.cpp
++++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp
+@@ -148,7 +148,6 @@ DEFINEFUNC(int, EVP_PKEY_up_ref, EVP_PKEY *a, a, return 0, return)
+ DEFINEFUNC2(EVP_PKEY_CTX *, EVP_PKEY_CTX_new, EVP_PKEY *pkey, pkey, ENGINE *e, e, return nullptr, return)
+ DEFINEFUNC(int, EVP_PKEY_param_check, EVP_PKEY_CTX *ctx, ctx, return 0, return)
+ DEFINEFUNC(void, EVP_PKEY_CTX_free, EVP_PKEY_CTX *ctx, ctx, return, return)
+-DEFINEFUNC(int, EVP_PKEY_base_id, EVP_PKEY *a, a, return NID_undef, return)
+ DEFINEFUNC(int, RSA_bits, RSA *a, a, return 0, return)
+ DEFINEFUNC(int, DSA_bits, DSA *a, a, return 0, return)
+ DEFINEFUNC(int, OPENSSL_sk_num, OPENSSL_STACK *a, a, return -1, return)
+@@ -371,8 +370,10 @@ DEFINEFUNC(STACK_OF(X509) *, SSL_get_peer_cert_chain, SSL *a, a, return nullptr,
+
+ #if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3
+ DEFINEFUNC(X509 *, SSL_get1_peer_certificate, SSL *a, a, return nullptr, return)
++DEFINEFUNC(int, EVP_PKEY_get_base_id, const EVP_PKEY *pkey, pkey, return -1, return)
+ #else
+ DEFINEFUNC(X509 *, SSL_get_peer_certificate, SSL *a, a, return nullptr, return)
++DEFINEFUNC(int, EVP_PKEY_base_id, EVP_PKEY *a, a, return NID_undef, return)
+ #endif // OPENSSL_VERSION_MAJOR >= 3
+
+ DEFINEFUNC(long, SSL_get_verify_result, const SSL *a, a, return -1, return)
+@@ -856,7 +857,6 @@ bool q_resolveOpenSslSymbols()
+ RESOLVEFUNC(EVP_PKEY_CTX_new)
+ RESOLVEFUNC(EVP_PKEY_param_check)
+ RESOLVEFUNC(EVP_PKEY_CTX_free)
+- RESOLVEFUNC(EVP_PKEY_base_id)
+ RESOLVEFUNC(RSA_bits)
+ RESOLVEFUNC(OPENSSL_sk_new_null)
+ RESOLVEFUNC(OPENSSL_sk_push)
+@@ -1084,8 +1084,10 @@ bool q_resolveOpenSslSymbols()
+
+ #if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3
+ RESOLVEFUNC(SSL_get1_peer_certificate)
++ RESOLVEFUNC(EVP_PKEY_get_base_id)
+ #else
+ RESOLVEFUNC(SSL_get_peer_certificate)
++ RESOLVEFUNC(EVP_PKEY_base_id)
+ #endif // OPENSSL_VERSION_MAJOR >= 3
+
+ RESOLVEFUNC(SSL_get_verify_result)
+diff --git a/src/network/ssl/qsslsocket_openssl_symbols_p.h b/src/network/ssl/qsslsocket_openssl_symbols_p.h
+index 58300cc549..b36d0bc126 100644
+--- a/src/network/ssl/qsslsocket_openssl_symbols_p.h
++++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h
+@@ -236,7 +236,6 @@ Q_AUTOTEST_EXPORT int q_EVP_PKEY_up_ref(EVP_PKEY *a);
+ EVP_PKEY_CTX *q_EVP_PKEY_CTX_new(EVP_PKEY *pkey, ENGINE *e);
+ void q_EVP_PKEY_CTX_free(EVP_PKEY_CTX *ctx);
+ int q_EVP_PKEY_param_check(EVP_PKEY_CTX *ctx);
+-int q_EVP_PKEY_base_id(EVP_PKEY *a);
+ int q_RSA_bits(RSA *a);
+ Q_AUTOTEST_EXPORT int q_OPENSSL_sk_num(OPENSSL_STACK *a);
+ Q_AUTOTEST_EXPORT void q_OPENSSL_sk_pop_free(OPENSSL_STACK *a, void (*b)(void *));
+@@ -751,8 +750,11 @@ void q_SSL_CTX_set_security_level(SSL_CTX *ctx, int level);
+ #if defined(OPENSSL_VERSION_MAJOR) && OPENSSL_VERSION_MAJOR >= 3
+ X509 *q_SSL_get1_peer_certificate(SSL *a);
+ #define q_SSL_get_peer_certificate q_SSL_get1_peer_certificate
++int q_EVP_PKEY_get_base_id(const EVP_PKEY *pkey);
++#define q_EVP_PKEY_base_id q_EVP_PKEY_get_base_id
+ #else
+ X509 *q_SSL_get_peer_certificate(SSL *a);
++int q_EVP_PKEY_base_id(EVP_PKEY *a);
+ #endif // OPENSSL_VERSION_MAJOR >= 3
+
+ QT_END_NAMESPACE
+--
+2.36.0
+
+From 9deedbf8cb5b5708409ee624dffb11b41d3b7c96 Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Thu, 9 Dec 2021 22:22:04 +0100
+Subject: [PATCH 077/146] QVarLengthArray: fix UB (precondition violation) in
+ range-erase()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+When the range-erase() function is called with an empty, valid range,
+it passed equal iterators to both the first and the last arguments of
+std::move(f, l, d) (the algorithm, not the cast). This is UB, since it
+violates the algorithm's precondition that d ∉ [f,l). For non-empty
+ranges, f > d, thus d < f, hence d ∉ [f,l), so everything is ok
+_there_.
+
+Fix the empty range case by returning early.
+
+Reviewers may question the precondition, expecting that std::move(f,
+l, f) just be a no-op, but the algorithm, as specified, performs
+self-move-assignments in that case, which need not be supported. In
+fact, the Hinnant criterion, itself only applicable if one calls for
+self-swap-safety, asks for self-move-assignment-safety only for
+objects in the moved-from state. QVarLengthArray, itself, meets only
+the Hinnant criterion; self-move-assignment of non-empty QVLAs invokes
+UB.
+
+So, the UB here is real.
+
+Qt 5.15 uses std::copy() here, which has the same precondition as
+std::move(), and the same fix applies there, too.
+
+[ChangeLog][QtCore][QVarLengthArray] Fixed a bug where range-erase()
+could invoke undefined behavior when called with an empty range.
+
+Pick-to: 6.2 5.15
+Change-Id: I656aa09d025168d6d9ef088ad4c6954d216f0d54
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit 0800947d7d2127eacaabf66ee1702d4980897041)
+---
+ src/corelib/tools/qvarlengtharray.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h
+index 0110956b77..f9003c31a2 100644
+--- a/src/corelib/tools/qvarlengtharray.h
++++ b/src/corelib/tools/qvarlengtharray.h
+@@ -538,6 +538,8 @@ Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthA
+ int f = int(abegin - ptr);
+ int l = int(aend - ptr);
+ int n = l - f;
++ if (n == 0) // avoid UB in std::copy() below
++ return ptr + f;
+ if (QTypeInfo<T>::isComplex) {
+ std::copy(ptr + l, ptr + s, QT_MAKE_CHECKED_ARRAY_ITERATOR(ptr + f, s - f));
+ T *i = ptr + s;
+--
+2.36.0
+
+From 5cb8282d76262611e52214c88b9aa7766eb1c233 Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Thu, 16 Dec 2021 09:31:39 +0100
+Subject: [PATCH 078/146] tst_QIODevice: fix UB (precondition violation) in
+ SequentialReadBuffer::readData()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+memcpy() mustn't be called with a nullptr, even if the size is zero.
+
+Fixes ubsan error:
+
+ tst_qiodevice.cpp:561:15: runtime error: null pointer passed as argument 1, which is declared to never be null
+
+Even though ubsan only complained about one of them, fix all three
+occurrences of the pattern in the test.
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: I5c06ab4a20a9e9f8831392c46c6969c05248fdac
+Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+(cherry picked from commit 572b55baa42787447643169811784bc64024fb5e)
+---
+ tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp b/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp
+index da5327594c..4a04e0f7c6 100644
+--- a/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp
++++ b/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp
+@@ -561,7 +561,8 @@ protected:
+ qint64 readData(char *data, qint64 maxSize) override
+ {
+ maxSize = qMin(maxSize, qint64(buf->size() - offset));
+- memcpy(data, buf->constData() + offset, maxSize);
++ if (maxSize > 0)
++ memcpy(data, buf->constData() + offset, maxSize);
+ offset += maxSize;
+ return maxSize;
+ }
+@@ -604,13 +605,15 @@ protected:
+ qint64 readData(char *data, qint64 maxSize) override
+ {
+ maxSize = qMin(maxSize, qint64(buf.size() - pos()));
+- memcpy(data, buf.constData() + pos(), maxSize);
++ if (maxSize > 0)
++ memcpy(data, buf.constData() + pos(), maxSize);
+ return maxSize;
+ }
+ qint64 writeData(const char *data, qint64 maxSize) override
+ {
+ maxSize = qMin(maxSize, qint64(buf.size() - pos()));
+- memcpy(buf.data() + pos(), data, maxSize);
++ if (maxSize > 0)
++ memcpy(buf.data() + pos(), data, maxSize);
+ return maxSize;
+ }
+
+--
+2.36.0
+
+From f4e7f69f2e83af222ab384feee80b026758d02e2 Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Thu, 16 Dec 2021 07:21:46 +0100
+Subject: [PATCH 079/146] QString: fix UB (pointer arithmetic on nullptr) in
+ qLastIndexOf
+
+Says ubsan:
+
+ qstring.cpp:10484:17: runtime error: applying non-zero offset 18446744073709551614 to null pointer
+
+If we search for a null needle, we stored 0-1 in a size_t variable and
+unconditionally appied that offset to the needle's data() pointer. That
+being the nullptr, ubsan complained.
+
+To fix, set sl_minus_1 to 0 if it would underflow. In that case,
+sl_minus_1, n, and h, are not used, anyway, so their values don't
+matter as long as we don't invoke UB.
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: Idca4e845c77838dfc84acdb68bbbc98382b5e1d5
+Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
+Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru>
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit 6830bdc1401e55680859b74036e9e9d90c359028)
+---
+ src/corelib/text/qstring.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/corelib/text/qstring.cpp b/src/corelib/text/qstring.cpp
+index 4be5c6d357..be472d7956 100644
+--- a/src/corelib/text/qstring.cpp
++++ b/src/corelib/text/qstring.cpp
+@@ -12308,7 +12308,7 @@ static qsizetype qLastIndexOf(Haystack haystack0, qsizetype from,
+ const auto needle = needle0.data();
+ const auto *end = haystack;
+ haystack += from;
+- const std::size_t sl_minus_1 = sl - 1;
++ const std::size_t sl_minus_1 = sl ? sl - 1 : 0;
+ const auto *n = needle + sl_minus_1;
+ const auto *h = haystack + sl_minus_1;
+ std::size_t hashNeedle = 0, hashHaystack = 0;
+--
+2.36.0
+
+From 456a6abd47113960bc59c72213909dd590dc949e Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Thu, 16 Dec 2021 14:23:08 +0100
+Subject: [PATCH 080/146] QDateTime: fix UB (signed overflow) in addDays()
+
+The comment indicated that the author expected any overflow to be
+caught by a bounds check in the subsequent function, however, signed
+overflow is UB, so anything can happen.
+
+Fix by using our API for safe additions instead.
+
+* asturmlechner 2021-12-29: use add_overflow instead of qAddOverflow
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: I41909defffa5305b02fdfcf6d5808e0d9fd5924f
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit c47c98ea2b8ec9e8bda51d86f3168bba28c3291a)
+---
+ src/corelib/time/qdatetime.cpp | 8 +++++---
+ 1 file changed, 5 insertions(+), 3 deletions(-)
+
+diff --git a/src/corelib/time/qdatetime.cpp b/src/corelib/time/qdatetime.cpp
+index ec12569e3f..e84c6b8804 100644
+--- a/src/corelib/time/qdatetime.cpp
++++ b/src/corelib/time/qdatetime.cpp
+@@ -43,6 +43,7 @@
+ #if QT_CONFIG(datetimeparser)
+ #include "private/qdatetimeparser_p.h"
+ #endif
++#include <private/qnumeric_p.h>
+
+ #include "qdatastream.h"
+ #include "qset.h"
+@@ -1429,9 +1430,10 @@ QDate QDate::addDays(qint64 ndays) const
+ if (isNull())
+ return QDate();
+
+- // Due to limits on minJd() and maxJd() we know that any overflow
+- // will be invalid and caught by fromJulianDay().
+- return fromJulianDay(jd + ndays);
++ if (qint64 r; Q_UNLIKELY(add_overflow(jd, ndays, &r)))
++ return QDate();
++ else
++ return fromJulianDay(r);
+ }
+
+ /*!
+--
+2.36.0
+
+From c556bfbe0a1c8d8450d7e68abf3dc07dd5babc9b Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Thu, 16 Dec 2021 09:04:01 +0100
+Subject: [PATCH 081/146] QVariantAnimation: fix UB (FP 0/0) in interpolated()
+ arg calculation
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+When startProgress, endProgress, and progress were all 0 (as provoked
+by tst_QPropertyAnimation::startWithoutStartValue()), we'd calculate
+0/0 and ubsan complained:
+
+ qvariantanimation.cpp:284:60: runtime error: division by zero
+
+Fix by detecting progress - startProgress == 0 and setting
+localProgress = 0.0 in that case. This is a logical result, even
+though it might not be what IEEE754 rules would have yielded.
+
+A more comprehensive change that aims to reliably keep localProgress
+∈ [0,1] and thus avoid the infinities when endProgress ==
+startProgress, is outside the scope of this patch, which deals only
+with the UBSan error.
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: I5258b054a2060006795f49fb1cd7604aea3ed46b
+Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io>
+Reviewed-by: Jan Arve Sæther <jan-arve.saether@qt.io>
+(cherry picked from commit 52da10f64542a6c4fda06be1b88e9111331f6500)
+---
+ src/corelib/animation/qvariantanimation.cpp | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/corelib/animation/qvariantanimation.cpp b/src/corelib/animation/qvariantanimation.cpp
+index 98b02f0202..eac1524107 100644
+--- a/src/corelib/animation/qvariantanimation.cpp
++++ b/src/corelib/animation/qvariantanimation.cpp
+@@ -276,7 +276,9 @@ void QVariantAnimationPrivate::setCurrentValueForProgress(const qreal progress)
+
+ const qreal startProgress = currentInterval.start.first;
+ const qreal endProgress = currentInterval.end.first;
+- const qreal localProgress = (progress - startProgress) / (endProgress - startProgress);
++ const qreal localProgress =
++ qIsNull(progress - startProgress) ? 0.0 // avoid 0/0 below
++ /* else */ : (progress - startProgress) / (endProgress - startProgress);
+
+ QVariant ret = q->interpolated(currentInterval.start.second,
+ currentInterval.end.second,
+--
+2.36.0
+
+From fbe344c45f870d77b70a3750e425a5ed409adf53 Mon Sep 17 00:00:00 2001
+From: Andreas Sturmlechner <asturm@gentoo.org>
+Date: Tue, 4 Jan 2022 17:13:12 +0100
+Subject: [PATCH 082/146] QDateTime: Don't require c++17
+
+Follow-up to commit c79a6cc1d4a04a1db09902e856d7a64d09a4cf85
+See also: https://invent.kde.org/qt/backports-tracker/-/issues/1414
+Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
+---
+ src/corelib/time/qdatetime.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/corelib/time/qdatetime.cpp b/src/corelib/time/qdatetime.cpp
+index e84c6b8804..2c0b098079 100644
+--- a/src/corelib/time/qdatetime.cpp
++++ b/src/corelib/time/qdatetime.cpp
+@@ -1430,7 +1430,8 @@ QDate QDate::addDays(qint64 ndays) const
+ if (isNull())
+ return QDate();
+
+- if (qint64 r; Q_UNLIKELY(add_overflow(jd, ndays, &r)))
++ qint64 r;
++ if (Q_UNLIKELY(add_overflow(jd, ndays, &r)))
+ return QDate();
+ else
+ return fromJulianDay(r);
+--
+2.36.0
+
+From 9e1e24d2a46eec9e2d5d5d4da12f634e2e188f7e Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <aacid@kde.org>
+Date: Mon, 27 Dec 2021 18:48:31 +0100
+Subject: [PATCH 083/146] Use block char format to render list item bullets and
+ numbers
+
+It needs to be rendered with the format of the block not the format of
+the first letter of the block; otherwise if the first letter is black or
+italics or something, but the rest of the block isn't, the list item
+text looks out of place.
+
+Task-number: QTBUG-3583
+Fixes: QTBUG-99148
+Pick-to: 6.3 6.2 5.15
+Change-Id: I63d8d6d6b7cee6bd9938fe1cf42a5f90da1bc0d3
+Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
+(cherry picked from commit 7e7f5f97832e8bf0b260f21aa912812eefaa5997)
+---
+ src/gui/text/qtextdocumentlayout.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp
+index 322f494e5d..28610711ef 100644
+--- a/src/gui/text/qtextdocumentlayout.cpp
++++ b/src/gui/text/qtextdocumentlayout.cpp
+@@ -2123,7 +2123,7 @@ void QTextDocumentLayoutPrivate::drawListItem(const QPointF &offset, QPainter *p
+ {
+ Q_Q(const QTextDocumentLayout);
+ const QTextBlockFormat blockFormat = bl.blockFormat();
+- const QTextCharFormat charFormat = QTextCursor(bl).charFormat();
++ const QTextCharFormat charFormat = bl.charFormat();
+ QFont font(charFormat.font());
+ if (q->paintDevice())
+ font = QFont(font, q->paintDevice());
+--
+2.36.0
+
+From 4cca26b42e361ee18d57cc635ad6988b1e7314f6 Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Thu, 16 Dec 2021 13:50:21 +0100
+Subject: [PATCH 084/146] QThread: fix UB (invalid enum value) on
+ Private::Priority
+
+The Unix code stores an additional flag, ThreadPriorityResetFlag, in
+the Policy enum, but ubsan does not approve:
+
+ qthread_unix.cpp:303:30: runtime error: load of value 2147483648, which is not a valid value for type 'Priority'
+ qthread_unix.cpp:304:75: runtime error: load of value 2147483648, which is not a valid value for type 'Priority'
+
+Fix by making the variable of std::underlying_type_t<Priority>.
+
+The masking and unmasking code can now be simplified, too.
+
+In the Windows version, replace some switch targets with equivalent
+ones to keep -Wswitch-like warnings, though I hasten to note that both
+switches use a default case, so have anyway implicitly disabled said
+warning.
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: Ie4ea7d05e2928d2755ad12d36535197f85493191
+Reviewed-by: Lars Knoll <lars.knoll@qt.io>
+(cherry picked from commit 591a35d6fd9fa4f14ca1ac6a568673e2a2da0f60)
+
+asturmlechner 2022-01-04: Resolve conflict in qthread_unix.cpp with
+ dev branch commit cffc667ad9dae10adf415357a606e7253a0c3206
+---
+ src/corelib/thread/qthread_p.h | 2 +-
+ src/corelib/thread/qthread_unix.cpp | 4 ++--
+ src/corelib/thread/qthread_win.cpp | 4 ++--
+ 3 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/corelib/thread/qthread_p.h b/src/corelib/thread/qthread_p.h
+index b2d1628e6e..227c3f0e66 100644
+--- a/src/corelib/thread/qthread_p.h
++++ b/src/corelib/thread/qthread_p.h
+@@ -174,7 +174,7 @@ public:
+ int returnCode;
+
+ uint stackSize;
+- QThread::Priority priority;
++ std::underlying_type_t<QThread::Priority> priority;
+
+ static QThread *threadForId(int id);
+
+diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp
+index 659d5fb03c..bce6a2be0d 100644
+--- a/src/corelib/thread/qthread_unix.cpp
++++ b/src/corelib/thread/qthread_unix.cpp
+@@ -296,7 +296,7 @@ void *QThreadPrivate::start(void *arg)
+ QMutexLocker locker(&thr->d_func()->mutex);
+
+ // do we need to reset the thread priority?
+- if (int(thr->d_func()->priority) & ThreadPriorityResetFlag) {
++ if (thr->d_func()->priority & ThreadPriorityResetFlag) {
+ thr->d_func()->setPriority(QThread::Priority(thr->d_func()->priority & ~ThreadPriorityResetFlag));
+ }
+
+@@ -667,7 +667,7 @@ void QThread::start(Priority priority)
+ // could not set scheduling hints, fallback to inheriting them
+ // we'll try again from inside the thread
+ pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED);
+- d->priority = Priority(priority | ThreadPriorityResetFlag);
++ d->priority = static_cast<std::underlying_type_t<QThread::Priority>>(priority) | ThreadPriorityResetFlag;
+ }
+ break;
+ }
+diff --git a/src/corelib/thread/qthread_win.cpp b/src/corelib/thread/qthread_win.cpp
+index bc70e3178a..9ddc6b3b34 100644
+--- a/src/corelib/thread/qthread_win.cpp
++++ b/src/corelib/thread/qthread_win.cpp
+@@ -548,7 +548,7 @@ void QThread::start(Priority priority)
+
+ int prio;
+ d->priority = priority;
+- switch (d->priority) {
++ switch (priority) {
+ case IdlePriority:
+ prio = THREAD_PRIORITY_IDLE;
+ break;
+@@ -686,7 +686,7 @@ void QThreadPrivate::setPriority(QThread::Priority threadPriority)
+
+ int prio;
+ priority = threadPriority;
+- switch (priority) {
++ switch (threadPriority) {
+ case QThread::IdlePriority:
+ prio = THREAD_PRIORITY_IDLE;
+ break;
+--
+2.36.0
+
+From 8fd32980dd714b922e9e8339797f44387d18d09a Mon Sep 17 00:00:00 2001
+From: Jarek Kobus <jaroslaw.kobus@qt.io>
+Date: Tue, 28 Dec 2021 10:30:52 +0100
+Subject: [PATCH 085/146] Fix pattern type matching
+
+Amends 3c747aafa44ac2d0b314a002d2672227bf6513e5
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: I2753b627c269cbb50009ef5e9c2ffa274e0ccf5c
+Reviewed-by: David Faure <david.faure@kdab.com>
+Reviewed-by: Alex Richardson <arichardson.kde@gmail.com>
+(cherry picked from commit 9453038921f190eb8582e559df889cbc243f9e3c)
+---
+ src/corelib/mimetypes/qmimeglobpattern.cpp | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/corelib/mimetypes/qmimeglobpattern.cpp b/src/corelib/mimetypes/qmimeglobpattern.cpp
+index 3ab5bd4cb4..fa8f4c545d 100644
+--- a/src/corelib/mimetypes/qmimeglobpattern.cpp
++++ b/src/corelib/mimetypes/qmimeglobpattern.cpp
+@@ -97,7 +97,7 @@ QMimeGlobPattern::PatternType QMimeGlobPattern::detectPatternType(const QString
+ if (!patternLength)
+ return OtherPattern;
+
+- const bool starCount = pattern.count(QLatin1Char('*')) == 1;
++ const int starCount = pattern.count(QLatin1Char('*'));
+ const bool hasSquareBracket = pattern.indexOf(QLatin1Char('[')) != -1;
+ const bool hasQuestionMark = pattern.indexOf(QLatin1Char('?')) != -1;
+
+@@ -109,10 +109,10 @@ QMimeGlobPattern::PatternType QMimeGlobPattern::detectPatternType(const QString
+ // Patterns like "README*" (well this is currently the only one like that...)
+ if (pattern.at(patternLength - 1) == QLatin1Char('*'))
+ return PrefixPattern;
+- }
+- // Names without any wildcards like "README"
+- if (starCount == 0)
++ } else if (starCount == 0) {
++ // Names without any wildcards like "README"
+ return LiteralPattern;
++ }
+ }
+
+ if (pattern == QLatin1String("[0-9][0-9][0-9].vdr"))
+--
+2.36.0
+
+From 57f78d2d33f914ff2501bf72aa50773e311c4fba Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Thu, 9 Dec 2021 22:53:48 +0100
+Subject: [PATCH 086/146] QVarLengthArray: assert that the range passed to
+ erase() is valid
+
+We already checked that the two iterators, indvidually, are valid, but
+we didn't check that the range formed by them is valid, namely that
+the end iterator is reachable from the start iterator.
+
+Add an assert, because if the range isn't valid, we run into UB in the
+std::move() algorithm two lines later.
+
+Qt 5.15 uses std::copy() here, which has the same precondition, so the
+assertion would make sense there, too.
+
+Pick-to: 6.2 5.15
+Change-Id: I90b7e846455ff86383a8971bea908036684961d8
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit c38639089f0e17a3da40dca03fecac88f5d89ba9)
+---
+ src/corelib/tools/qvarlengtharray.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h
+index f9003c31a2..731f536126 100644
+--- a/src/corelib/tools/qvarlengtharray.h
++++ b/src/corelib/tools/qvarlengtharray.h
+@@ -540,6 +540,9 @@ Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthA
+ int n = l - f;
+ if (n == 0) // avoid UB in std::copy() below
+ return ptr + f;
++
++ Q_ASSERT(n > 0); // aend must be reachable from abegin
++
+ if (QTypeInfo<T>::isComplex) {
+ std::copy(ptr + l, ptr + s, QT_MAKE_CHECKED_ARRAY_ITERATOR(ptr + f, s - f));
+ T *i = ptr + s;
+--
+2.36.0
+
+From 5854db59c3ce0f7730d5be8deeb04f16e545f3e6 Mon Sep 17 00:00:00 2001
+From: Zhang Hao <zhanghao@uniontech.com>
+Date: Mon, 13 Dec 2021 16:04:37 +0800
+Subject: [PATCH 087/146] Use qint64 to replace int while
+ qt_transform_image_rasterize
+
+When rotating a very large image(for example,the image size is
+42000*24000),using QTransform will cause the the variable of the
+qt_transform_image_rasterize function exceeds the range of int.
+Fix this by Use qint64 to replace int.
+
+Fixes: QTBUG-99163
+Done-with: Eirik Aavitsland <eirik.aavitsland@qt.io>
+Pick-to: 6.3 6.2 5.15
+Change-Id: I11e2873fbb1f432953a1a8e07054f9478dd90fbd
+Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
+(cherry picked from commit 8678ab9354e01b40e414c1413596dfb475752a9a)
+---
+ src/gui/painting/qblendfunctions_p.h | 53 ++++++++++++++++------------
+ 1 file changed, 30 insertions(+), 23 deletions(-)
+
+diff --git a/src/gui/painting/qblendfunctions_p.h b/src/gui/painting/qblendfunctions_p.h
+index 080da98ec4..6997d62b3c 100644
+--- a/src/gui/painting/qblendfunctions_p.h
++++ b/src/gui/painting/qblendfunctions_p.h
+@@ -246,25 +246,32 @@ void qt_transform_image_rasterize(DestT *destPixels, int dbpl,
+ int dudx, int dvdx, int dudy, int dvdy, int u0, int v0,
+ Blender blender)
+ {
+- int fromY = qMax(qRound(topY), clip.top());
+- int toY = qMin(qRound(bottomY), clip.top() + clip.height());
++ qint64 fromY = qMax(qRound(topY), clip.top());
++ qint64 toY = qMin(qRound(bottomY), clip.top() + clip.height());
+ if (fromY >= toY)
+ return;
+
+ qreal leftSlope = (bottomLeft.x - topLeft.x) / (bottomLeft.y - topLeft.y);
+ qreal rightSlope = (bottomRight.x - topRight.x) / (bottomRight.y - topRight.y);
+- int dx_l = int(leftSlope * 0x10000);
+- int dx_r = int(rightSlope * 0x10000);
+- int x_l = int((topLeft.x + (qreal(0.5) + fromY - topLeft.y) * leftSlope + qreal(0.5)) * 0x10000);
+- int x_r = int((topRight.x + (qreal(0.5) + fromY - topRight.y) * rightSlope + qreal(0.5)) * 0x10000);
+-
+- int fromX, toX, x1, x2, u, v, i, ii;
++ qint64 dx_l = qint64(leftSlope * 0x10000);
++ qint64 dx_r = qint64(rightSlope * 0x10000);
++ qint64 x_l = qint64((topLeft.x + (qreal(0.5) + fromY - topLeft.y) * leftSlope + qreal(0.5)) * 0x10000);
++ qint64 x_r = qint64((topRight.x + (qreal(0.5) + fromY - topRight.y) * rightSlope + qreal(0.5)) * 0x10000);
++
++ qint64 sourceRectTop = qint64(sourceRect.top());
++ qint64 sourceRectLeft = qint64(sourceRect.left());
++ qint64 sourceRectWidth = qint64(sourceRect.width());
++ qint64 sourceRectHeight = qint64(sourceRect.height());
++ qint64 clipLeft = qint64(clip.left());
++ qint64 clipWidth = qint64(clip.width());
++
++ qint64 fromX, toX, x1, x2, u, v, i, ii;
+ DestT *line;
+- for (int y = fromY; y < toY; ++y) {
++ for (qint64 y = fromY; y < toY; ++y) {
+ line = reinterpret_cast<DestT *>(reinterpret_cast<uchar *>(destPixels) + y * dbpl);
+
+- fromX = qMax(x_l >> 16, clip.left());
+- toX = qMin(x_r >> 16, clip.left() + clip.width());
++ fromX = qMax(x_l >> 16, clipLeft);
++ toX = qMin(x_r >> 16, clipLeft + clipWidth);
+ if (fromX < toX) {
+ // Because of rounding, we can get source coordinates outside the source image.
+ // Clamp these coordinates to the source rect to avoid segmentation fault and
+@@ -275,10 +282,10 @@ void qt_transform_image_rasterize(DestT *destPixels, int dbpl,
+ u = x1 * dudx + y * dudy + u0;
+ v = x1 * dvdx + y * dvdy + v0;
+ for (; x1 < toX; ++x1) {
+- int uu = u >> 16;
+- int vv = v >> 16;
+- if (uu >= sourceRect.left() && uu < sourceRect.left() + sourceRect.width()
+- && vv >= sourceRect.top() && vv < sourceRect.top() + sourceRect.height()) {
++ qint64 uu = u >> 16;
++ qint64 vv = v >> 16;
++ if (uu >= sourceRectLeft && uu < sourceRectLeft + sourceRectWidth
++ && vv >= sourceRectTop && vv < sourceRectTop + sourceRectHeight) {
+ break;
+ }
+ u += dudx;
+@@ -290,10 +297,10 @@ void qt_transform_image_rasterize(DestT *destPixels, int dbpl,
+ u = (x2 - 1) * dudx + y * dudy + u0;
+ v = (x2 - 1) * dvdx + y * dvdy + v0;
+ for (; x2 > x1; --x2) {
+- int uu = u >> 16;
+- int vv = v >> 16;
+- if (uu >= sourceRect.left() && uu < sourceRect.left() + sourceRect.width()
+- && vv >= sourceRect.top() && vv < sourceRect.top() + sourceRect.height()) {
++ qint64 uu = u >> 16;
++ qint64 vv = v >> 16;
++ if (uu >= sourceRectLeft && uu < sourceRectLeft + sourceRectWidth
++ && vv >= sourceRectTop && vv < sourceRectTop + sourceRectHeight) {
+ break;
+ }
+ u -= dudx;
+@@ -308,8 +315,8 @@ void qt_transform_image_rasterize(DestT *destPixels, int dbpl,
+ // Beginning of the scan line, with per-pixel checks.
+ i = x1 - fromX;
+ while (i) {
+- int uu = qBound(sourceRect.left(), u >> 16, sourceRect.left() + sourceRect.width() - 1);
+- int vv = qBound(sourceRect.top(), v >> 16, sourceRect.top() + sourceRect.height() - 1);
++ qint64 uu = qBound(sourceRectLeft, u >> 16, sourceRectLeft + sourceRectWidth - 1);
++ qint64 vv = qBound(sourceRectTop, v >> 16, sourceRectTop + sourceRectHeight - 1);
+ blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + vv * sbpl)[uu]);
+ u += dudx;
+ v += dvdx;
+@@ -348,8 +355,8 @@ void qt_transform_image_rasterize(DestT *destPixels, int dbpl,
+ // End of the scan line, with per-pixel checks.
+ i = toX - x2;
+ while (i) {
+- int uu = qBound(sourceRect.left(), u >> 16, sourceRect.left() + sourceRect.width() - 1);
+- int vv = qBound(sourceRect.top(), v >> 16, sourceRect.top() + sourceRect.height() - 1);
++ qint64 uu = qBound(sourceRectLeft, u >> 16, sourceRectLeft + sourceRectWidth - 1);
++ qint64 vv = qBound(sourceRectTop, v >> 16, sourceRectTop + sourceRectHeight - 1);
+ blender.write(line, reinterpret_cast<const SrcT *>(reinterpret_cast<const uchar *>(srcPixels) + vv * sbpl)[uu]);
+ u += dudx;
+ v += dvdx;
+--
+2.36.0
+
+From 5831dd0890cb924749dea21c808613a163741c9e Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Fri, 26 Nov 2021 13:00:37 +0100
+Subject: [PATCH 088/146] QVarLengthArray: fix insert() type/alias mismatch
+ between decl and impl
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The declaration of insert(it, n, t) used qsizetype for n, while the
+definition used size_type. That works by chance, because the size_type
+typedef comes only after the insert(it, n, t) declaration. It was
+detected when size_type became a typedef in a base class of
+QVarLengthArray in my local branch.
+
+Just use the same type name in the implementation as in the
+declaration.
+
+In 5.15, the same issue exists (with s/qsizetype/int/).
+
+Pick-to: 6.2 5.15
+Change-Id: I64235eeaeaed3d43f4c070ca536474fae94c1b5d
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+(cherry picked from commit fd1a42490dc14e5cf4fbbd2682722305ce7a27ed)
+---
+ src/corelib/tools/qvarlengtharray.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h
+index 731f536126..3612afd15c 100644
+--- a/src/corelib/tools/qvarlengtharray.h
++++ b/src/corelib/tools/qvarlengtharray.h
+@@ -501,7 +501,7 @@ Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthA
+ }
+
+ template <class T, int Prealloc>
+-Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthArray<T, Prealloc>::insert(const_iterator before, size_type n, const T &t)
++Q_OUTOFLINE_TEMPLATE typename QVarLengthArray<T, Prealloc>::iterator QVarLengthArray<T, Prealloc>::insert(const_iterator before, int n, const T &t)
+ {
+ Q_ASSERT_X(isValidIterator(before), "QVarLengthArray::insert", "The specified const_iterator argument 'before' is invalid");
+
+--
+2.36.0
+
+From 11f74217229252213f90dc49604634100655e116 Mon Sep 17 00:00:00 2001
+From: Liang Qi <liang.qi@qt.io>
+Date: Thu, 21 Oct 2021 19:38:43 +0200
+Subject: [PATCH 089/146] xcb: avoid to use invalid pointers
+
+Pick-to: 6.2 5.15 5.12
+Task-number: QTBUG-96399
+Change-Id: I33909940b501cb13f78981c43f3aef9fc9d1d52d
+Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
+(cherry picked from commit e0938223c4b5966b94893276ba36c9b0493168c7)
+---
+ src/plugins/platforms/xcb/qxcbconnection.cpp | 8 +++++++-
+ src/plugins/platforms/xcb/qxcbconnection_basic.cpp | 8 +++++++-
+ 2 files changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp
+index 9abdae6a7c..8477e28df1 100644
+--- a/src/plugins/platforms/xcb/qxcbconnection.cpp
++++ b/src/plugins/platforms/xcb/qxcbconnection.cpp
+@@ -795,7 +795,13 @@ xcb_timestamp_t QXcbConnection::getTimestamp()
+
+ xcb_window_t QXcbConnection::getSelectionOwner(xcb_atom_t atom) const
+ {
+- return Q_XCB_REPLY(xcb_get_selection_owner, xcb_connection(), atom)->owner;
++ auto reply = Q_XCB_REPLY(xcb_get_selection_owner, xcb_connection(), atom);
++ if (!reply) {
++ qCDebug(lcQpaXcb) << "failed to query selection owner";
++ return XCB_NONE;
++ }
++
++ return reply->owner;
+ }
+
+ xcb_window_t QXcbConnection::getQtSelectionOwner()
+diff --git a/src/plugins/platforms/xcb/qxcbconnection_basic.cpp b/src/plugins/platforms/xcb/qxcbconnection_basic.cpp
+index 18dee89adb..9dd608cdc0 100644
+--- a/src/plugins/platforms/xcb/qxcbconnection_basic.cpp
++++ b/src/plugins/platforms/xcb/qxcbconnection_basic.cpp
+@@ -179,7 +179,13 @@ xcb_atom_t QXcbBasicConnection::internAtom(const char *name)
+ if (!name || *name == 0)
+ return XCB_NONE;
+
+- return Q_XCB_REPLY(xcb_intern_atom, m_xcbConnection, false, strlen(name), name)->atom;
++ auto reply = Q_XCB_REPLY(xcb_intern_atom, m_xcbConnection, false, strlen(name), name);
++ if (!reply) {
++ qCDebug(lcQpaXcb) << "failed to query intern atom: " << name;
++ return XCB_NONE;
++ }
++
++ return reply->atom;
+ }
+
+ QByteArray QXcbBasicConnection::atomName(xcb_atom_t atom)
+--
+2.36.0
+
+From 1ccd5fafc49b5bf5f86c82f181a84c5fb34a59d9 Mon Sep 17 00:00:00 2001
+From: Volker Hilsheimer <volker.hilsheimer@qt.io>
+Date: Wed, 19 May 2021 12:46:16 +0200
+Subject: [PATCH 090/146] QXcb: don't dereference pointer before checking
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The virtualDesktop pointer is expected to be populated by queryPointer, but
+that method handles the case that there either is no reply, or that the
+reply doesn't match, in which case the pointer remains nullptr.
+
+Don't dereference it afterwards without checking.
+
+Addresses code checker warning a179d1087759bb6ca9c3380257bd70d6
+
+Pick-to: 6.1 5.15
+Change-Id: I5877f26fd3b49327c0de3f2c918bb606bee8ac57
+Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
+(cherry picked from commit c2258e85a32b66cf7cbc59a4789e68c31c9955be)
+---
+ src/plugins/platforms/xcb/qxcbcursor.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/plugins/platforms/xcb/qxcbcursor.cpp b/src/plugins/platforms/xcb/qxcbcursor.cpp
+index 42c7a52bd4..a032085f0b 100644
+--- a/src/plugins/platforms/xcb/qxcbcursor.cpp
++++ b/src/plugins/platforms/xcb/qxcbcursor.cpp
+@@ -668,7 +668,8 @@ void QXcbCursor::setPos(const QPoint &pos)
+ {
+ QXcbVirtualDesktop *virtualDesktop = nullptr;
+ queryPointer(connection(), &virtualDesktop, nullptr);
+- xcb_warp_pointer(xcb_connection(), XCB_NONE, virtualDesktop->root(), 0, 0, 0, 0, pos.x(), pos.y());
++ if (virtualDesktop)
++ xcb_warp_pointer(xcb_connection(), XCB_NONE, virtualDesktop->root(), 0, 0, 0, 0, pos.x(), pos.y());
+ xcb_flush(xcb_connection());
+ }
+
+--
+2.36.0
+
+From e08e48a9446822d9aed5a800558be133f1f9c2f8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C3=98ystein=20Heskestad?= <oystein.heskestad@qt.io>
+Date: Wed, 27 Oct 2021 13:07:46 +0200
+Subject: [PATCH 091/146] Add missing macOS header file that was indirectly
+ included before
+
+Change-Id: I4d4c7d4f957fc36dea5e06eb6d661aeecf6385f1
+Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
+(cherry picked from commit dece6f5840463ae2ddf927d65eb1b3680e34a547)
+---
+ src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h b/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h
+index e070ba977d..0896917334 100644
+--- a/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h
++++ b/src/plugins/platforms/cocoa/qiosurfacegraphicsbuffer.h
+@@ -43,6 +43,8 @@
+ #include <qpa/qplatformgraphicsbuffer.h>
+ #include <private/qcore_mac_p.h>
+
++#include <CoreGraphics/CGColorSpace.h>
++
+ QT_BEGIN_NAMESPACE
+
+ class QIOSurfaceGraphicsBuffer : public QPlatformGraphicsBuffer
+--
+2.36.0
+
+From 7e0896210679f331ed49a3ad4f176a16e13d643c Mon Sep 17 00:00:00 2001
+From: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
+Date: Fri, 24 Sep 2021 13:14:05 +0200
+Subject: [PATCH 092/146] QThread: Reset the system thread ID when thread exits
+ on Unix
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Unix QThread implementation stores pthread_t as a system thread ID
+when the thread is created, but never resets the system ID when
+those threads are destroyed. Some implementations may reuse the
+same thread IDs for new threads, and this may cause QThread::wait()
+to erroneously complain that "Thread tried to wait on itself".
+
+This patch sets the system thread ID to nullptr when the thread is
+about to exit and be destroyed by the system.
+
+A regression test is added to tst_qthread.
+
+Fixes: QTBUG-96846
+Pick-to: 5.15 6.2
+Change-Id: I0850425dd0e09af50e59c9038e7e662a2a624beb
+Reviewed-by: Jarek Kobus <jaroslaw.kobus@qt.io>
+Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit 52ad59f9eabbe1fc8ca49d117e4955f2d21d50a7)
+---
+ src/corelib/thread/qthread_unix.cpp | 4 ++
+ .../corelib/thread/qthread/tst_qthread.cpp | 53 +++++++++++++++++++
+ 2 files changed, 57 insertions(+)
+
+diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp
+index bce6a2be0d..3c6a01ccc7 100644
+--- a/src/corelib/thread/qthread_unix.cpp
++++ b/src/corelib/thread/qthread_unix.cpp
+@@ -384,6 +384,8 @@ void QThreadPrivate::finish(void *arg)
+ d->interruptionRequested = false;
+
+ d->isInFinish = false;
++ d->data->threadId.storeRelaxed(nullptr);
++
+ d->thread_done.wakeAll();
+ }
+ #ifndef QT_NO_EXCEPTIONS
+@@ -755,6 +757,8 @@ bool QThread::wait(QDeadlineTimer deadline)
+ if (!d->thread_done.wait(locker.mutex(), deadline))
+ return false;
+ }
++ Q_ASSERT(d->data->threadId.loadRelaxed() == nullptr);
++
+ return true;
+ }
+
+diff --git a/tests/auto/corelib/thread/qthread/tst_qthread.cpp b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
+index 7be2f48758..ad8556de81 100644
+--- a/tests/auto/corelib/thread/qthread/tst_qthread.cpp
++++ b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
+@@ -106,6 +106,7 @@ private slots:
+ void quitLock();
+
+ void create();
++ void threadIdReuse();
+ };
+
+ enum { one_minute = 60 * 1000, five_minutes = 5 * one_minute };
+@@ -1631,5 +1632,57 @@ void tst_QThread::requestTermination()
+ QVERIFY(!thread.isInterruptionRequested());
+ }
+
++/*
++ This is a regression test for QTBUG-96846.
++
++ Incorrect system thread ID cleanup can cause QThread::wait() to report that
++ a thread is trying to wait for itself.
++*/
++void tst_QThread::threadIdReuse()
++{
++ // It's important that those thread ID's are not accessed concurrently
++ Qt::HANDLE threadId1;
++
++ auto thread1Fn = [&threadId1]() -> void { threadId1 = QThread::currentThreadId(); };
++ QScopedPointer<QThread> thread1(QThread::create(thread1Fn));
++ thread1->start();
++ QVERIFY(thread1->wait());
++
++ // If the system thread allocated for thread1 is destroyed before thread2 is started,
++ // at least on some versions of Linux the system thread ID for thread2 would be the
++ // same as one that was used for thread1.
++
++ // The system thread may be alive for some time after returning from QThread::wait()
++ // because the implementation is using detachable threads, so some additional time is
++ // required for the system thread to terminate. Not waiting long enough here would result
++ // in a new system thread ID being allocated for thread2 and this test passing even without
++ // a fix for QTBUG-96846.
++ bool threadIdReused = false;
++
++ for (int i = 0; i < 42; i++) {
++ QThread::msleep(1);
++
++ Qt::HANDLE threadId2;
++ auto waitForThread1 = [&thread1, &threadId2]() -> void {
++ threadId2 = QThread::currentThreadId();
++ QVERIFY(thread1->wait());
++ };
++
++ QScopedPointer<QThread> thread2(QThread::create(waitForThread1));
++ thread2->start();
++ QVERIFY(thread2->wait());
++
++ if (threadId1 == threadId2) {
++ qDebug("Thread ID reused at iteration %d", i);
++ threadIdReused = true;
++ break;
++ }
++ }
++
++ if (!threadIdReused) {
++ QSKIP("Thread ID was not reused");
++ }
++}
++
+ QTEST_MAIN(tst_QThread)
+ #include "tst_qthread.moc"
+--
+2.36.0
+
+From 2ff3c7b7909090b48fd6c7c41b08148e0c66fc9c Mon Sep 17 00:00:00 2001
+From: Ievgenii Meshcheriakov <ievgenii.meshcheriakov@qt.io>
+Date: Mon, 27 Sep 2021 13:54:41 +0200
+Subject: [PATCH 093/146] QThread: Remove superfluous initialization of
+ threadId on Unix
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The thread ID is already initialized inside QThread::start() while
+the thread lock is taken. This is completed before the attempted
+initialization in QThreadPrivate::start() because it tries to take
+the same lock.
+
+Task-number: QTBUG-96846
+Pick-to: 5.15 6.2
+Change-Id: Ic9588f3e2e2f3c2180afbed8ec01155b33043eb3
+Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit 05870db7d0606e0a64115a523bf1366137f34700)
+---
+ src/corelib/thread/qthread_unix.cpp | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp
+index 3c6a01ccc7..26bcc7b266 100644
+--- a/src/corelib/thread/qthread_unix.cpp
++++ b/src/corelib/thread/qthread_unix.cpp
+@@ -300,7 +300,9 @@ void *QThreadPrivate::start(void *arg)
+ thr->d_func()->setPriority(QThread::Priority(thr->d_func()->priority & ~ThreadPriorityResetFlag));
+ }
+
+- data->threadId.storeRelaxed(to_HANDLE(pthread_self()));
++ // threadId is set in QThread::start()
++ Q_ASSERT(pthread_equal(from_HANDLE<pthread_t>(data->threadId.loadRelaxed()),
++ pthread_self()));
+ set_thread_data(data);
+
+ data->ref();
+--
+2.36.0
+
+From 18444ac31721daccc79520b0502a6ac334aa970a Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Tue, 7 Dec 2021 17:46:26 +0100
+Subject: [PATCH 094/146] QVarLengthArray: fix size update on failed append()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+If the in-place constructor throws, the old code had already updated
+the container's size(). Fix by delaying the update to after the
+in-place construction.
+
+[ChangeLog][QtCore][QVarLengthArray] Fixed a bug whereby a failed
+append() would leave the container with an inconsistent size().
+
+Pick-to: 6.2 5.15
+Change-Id: Ief1e668d945149bd8ba96c8af1398baaa7876880
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+(cherry picked from commit d4a88e4ea4dd0d24c9c43553dd4c48a79635803c)
+
+* asturmlechner 2022-01-09: resolve conflicts with dev branch changes
+ s/QVERIFY_THROWS_EXCEPTION/QVERIFY_EXCEPTION_THROWN/
+---
+ src/corelib/tools/qvarlengtharray.h | 11 +++--
+ .../qvarlengtharray/tst_qvarlengtharray.cpp | 45 +++++++++++++++++++
+ 2 files changed, 50 insertions(+), 6 deletions(-)
+
+diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h
+index 3612afd15c..2b30da0d2c 100644
+--- a/src/corelib/tools/qvarlengtharray.h
++++ b/src/corelib/tools/qvarlengtharray.h
+@@ -152,19 +152,18 @@ public:
+ if (s == a) { // i.e. s != 0
+ T copy(t);
+ realloc(s, s<<1);
+- const int idx = s++;
+- new (ptr + idx) T(std::move(copy));
++ new (end()) T(std::move(copy));
+ } else {
+- const int idx = s++;
+- new (ptr + idx) T(t);
++ new (end()) T(t);
+ }
++ ++s;
+ }
+
+ void append(T &&t) {
+ if (s == a)
+ realloc(s, s << 1);
+- const int idx = s++;
+- new (ptr + idx) T(std::move(t));
++ new (end()) T(std::move(t));
++ ++s;
+ }
+
+ void append(const T *buf, int size);
+diff --git a/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp b/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp
+index 5443cf120b..625da129c4 100644
+--- a/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp
++++ b/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp
+@@ -29,6 +29,7 @@
+ #include <QtTest/QTest>
+ #include <qvarlengtharray.h>
+ #include <qvariant.h>
++#include <qscopedvaluerollback.h>
+
+ #include <memory>
+
+@@ -40,6 +41,7 @@ private slots:
+ void removeLast();
+ void oldTests();
+ void appendCausingRealloc();
++ void appendIsStronglyExceptionSafe();
+ void resize();
+ void realloc();
+ void reverseIterators();
+@@ -245,6 +247,49 @@ void tst_QVarLengthArray::appendCausingRealloc()
+ d.append(i);
+ }
+
++void tst_QVarLengthArray::appendIsStronglyExceptionSafe()
++{
++#ifdef QT_NO_EXCEPTIONS
++ QSKIP("This test requires exception support enabled in the compiler.");
++#else
++ static bool throwOnCopyNow = false;
++ static bool throwOnMoveNow = false;
++ struct Thrower {
++ Thrower() = default;
++ Thrower(const Thrower &)
++ {
++ if (throwOnCopyNow)
++ throw 1;
++ }
++ Thrower &operator=(const Thrower &) = default;
++ Thrower(Thrower &&)
++ {
++ if (throwOnMoveNow)
++ throw 1;
++ }
++ Thrower &operator=(Thrower &&) = default;
++ ~Thrower() = default;
++ };
++
++ {
++ // ### TODO: QVLA isn't exception-safe when throwing during reallocation,
++ // ### so check with size() < capacity() for now
++ QVarLengthArray<Thrower, 2> vla(1);
++ {
++ Thrower t;
++ const QScopedValueRollback rb(throwOnCopyNow, true);
++ QVERIFY_EXCEPTION_THROWN(vla.push_back(t), int);
++ QCOMPARE(vla.size(), 1);
++ }
++ {
++ const QScopedValueRollback rb(throwOnMoveNow, true);
++ QVERIFY_EXCEPTION_THROWN(vla.push_back({}), int);
++ QCOMPARE(vla.size(), 1);
++ }
++ }
++#endif
++}
++
+ void tst_QVarLengthArray::resize()
+ {
+ //MOVABLE
+--
+2.36.0
+
+From 3a60973eb646064beff9fada9447fe273a3ff66b Mon Sep 17 00:00:00 2001
+From: Antonio Rojas <arojas@archlinux.org>
+Date: Tue, 11 Jan 2022 23:18:01 +0000
+Subject: [PATCH 095/146] Restore C++11 compatibility after
+ e8b9f4c28d3ab5e960dc54f2dc0c4b749b0b50e0
+
+---
+ src/corelib/thread/qthread_p.h | 2 +-
+ src/corelib/thread/qthread_unix.cpp | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/corelib/thread/qthread_p.h b/src/corelib/thread/qthread_p.h
+index 227c3f0e66..c21332dc38 100644
+--- a/src/corelib/thread/qthread_p.h
++++ b/src/corelib/thread/qthread_p.h
+@@ -174,7 +174,7 @@ public:
+ int returnCode;
+
+ uint stackSize;
+- std::underlying_type_t<QThread::Priority> priority;
++ std::underlying_type<QThread::Priority>::type priority;
+
+ static QThread *threadForId(int id);
+
+diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp
+index 26bcc7b266..5508b9e585 100644
+--- a/src/corelib/thread/qthread_unix.cpp
++++ b/src/corelib/thread/qthread_unix.cpp
+@@ -671,7 +671,7 @@ void QThread::start(Priority priority)
+ // could not set scheduling hints, fallback to inheriting them
+ // we'll try again from inside the thread
+ pthread_attr_setinheritsched(&attr, PTHREAD_INHERIT_SCHED);
+- d->priority = static_cast<std::underlying_type_t<QThread::Priority>>(priority) | ThreadPriorityResetFlag;
++ d->priority = static_cast<std::underlying_type<QThread::Priority>::type>(priority) | ThreadPriorityResetFlag;
+ }
+ break;
+ }
+--
+2.36.0
+
+From c548ee7df27576da59ce20f207ecf09c53e33e61 Mon Sep 17 00:00:00 2001
+From: Volker Hilsheimer <volker.hilsheimer@qt.io>
+Date: Mon, 10 Jan 2022 18:10:48 +0100
+Subject: [PATCH 096/146] Don't access QObject::objectName during QThread start
+
+This is a data race, as the thread accesses QObject::objectName on the
+QThread instance while the thread owning the QThread might modify the
+objectName.
+
+Instead, make a copy in the QThreadPrivate that can be accessed safely.
+
+Task-number: QTBUG-96718
+Pick-to: 6.3 6.2 5.15
+Change-Id: I10701551d498993ca5055daf161636bfb648840c
+Reviewed-by: Marc Mutz <marc.mutz@qt.io>
+(cherry picked from commit 4a4240f1bdf184a52a22b94f37090b07434770e7)
+---
+ src/corelib/thread/qthread_p.h | 7 +++++++
+ src/corelib/thread/qthread_unix.cpp | 7 +++++--
+ src/corelib/thread/qthread_win.cpp | 8 ++++----
+ 3 files changed, 16 insertions(+), 6 deletions(-)
+
+diff --git a/src/corelib/thread/qthread_p.h b/src/corelib/thread/qthread_p.h
+index c21332dc38..f32f6f0460 100644
+--- a/src/corelib/thread/qthread_p.h
++++ b/src/corelib/thread/qthread_p.h
+@@ -213,6 +213,13 @@ public:
+ QCoreApplication::instance()->postEvent(q_ptr, new QEvent(QEvent::Quit));
+ }
+ }
++
++#ifndef Q_OS_INTEGRITY
++private:
++ // Used in QThread(Private)::start to avoid racy access to QObject::objectName,
++ // unset afterwards. On INTEGRITY we set the thread name before starting it.
++ QString objectName;
++#endif
+ };
+
+ #else // QT_CONFIG(thread)
+diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp
+index 5508b9e585..cbeb870395 100644
+--- a/src/corelib/thread/qthread_unix.cpp
++++ b/src/corelib/thread/qthread_unix.cpp
+@@ -316,10 +316,10 @@ void *QThreadPrivate::start(void *arg)
+ // Sets the name of the current thread. We can only do this
+ // when the thread is starting, as we don't have a cross
+ // platform way of setting the name of an arbitrary thread.
+- if (Q_LIKELY(thr->objectName().isEmpty()))
++ if (Q_LIKELY(thr->d_func()->objectName.isEmpty()))
+ setCurrentThreadName(thr->metaObject()->className());
+ else
+- setCurrentThreadName(thr->objectName().toLocal8Bit());
++ setCurrentThreadName(std::exchange(thr->d_func()->objectName, {}).toLocal8Bit());
+ }
+ #endif
+
+@@ -702,7 +702,10 @@ void QThread::start(Priority priority)
+ pthread_attr_setthreadname(&attr, metaObject()->className());
+ else
+ pthread_attr_setthreadname(&attr, objectName().toLocal8Bit());
++#else
++ d->objectName = objectName();
+ #endif
++
+ pthread_t threadId;
+ int code = pthread_create(&threadId, &attr, QThreadPrivate::start, this);
+ if (code == EPERM) {
+diff --git a/src/corelib/thread/qthread_win.cpp b/src/corelib/thread/qthread_win.cpp
+index 9ddc6b3b34..4e76972498 100644
+--- a/src/corelib/thread/qthread_win.cpp
++++ b/src/corelib/thread/qthread_win.cpp
+@@ -394,10 +394,9 @@ unsigned int __stdcall QT_ENSURE_STACK_ALIGNED_FOR_SSE QThreadPrivate::start(voi
+
+ #if !defined(QT_NO_DEBUG) && defined(Q_CC_MSVC) && !defined(Q_OS_WINRT)
+ // sets the name of the current thread.
+- QByteArray objectName = thr->objectName().toLocal8Bit();
+- qt_set_thread_name(HANDLE(-1),
+- objectName.isEmpty() ?
+- thr->metaObject()->className() : objectName.constData());
++ qt_set_thread_name(HANDLE(-1), thr->d_func()->objectName.isEmpty()
++ ? thr->metaObject()->className()
++ : std::exchange(thr->d_func()->objectName, {}).toLocal8Bit().constData());
+ #endif
+
+ emit thr->started(QThread::QPrivateSignal());
+@@ -503,6 +502,7 @@ void QThread::start(Priority priority)
+ if (d->running)
+ return;
+
++ d->objectName = objectName();
+ d->running = true;
+ d->finished = false;
+ d->exited = false;
+--
+2.36.0
+
+From 0d1a08f587be58762a85267a143f77281d798b61 Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Tue, 4 Jan 2022 18:03:22 +0100
+Subject: [PATCH 097/146] QTzTimeZonePrivate: fix UB (data race on m_icu)
+
+The fallback m_icu QIcuTimeZonePrivate is lazily constructed, which
+means that two threads each with their own copy of a QTimeZone with a
+shared QTzTimeZonePrivate will race over who gets to set m_icu,
+e.g. when concurrently calling QTimeZone::displayName().
+
+Fix by protecting m_icu with a mutex. For simplicity, use a static
+mutex, not a per-instance one (which would delete the
+QTzTimeZonePrivate copy constructor, which clone() relies on). This is
+sufficient for 5.15. For Qt 6, going forward, we could make this
+lock-less, too.
+
+[ChangeLog][QtCore][QTimeZone] Fixed a data race on Unix platforms when
+implicitly-shared copies of QTimeZone objects were used in certain ways
+(e.g. calling displayName()) from different threads and Qt was
+configured with ICU support.
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: I7e57aef3dd44a90289ad86d0578ece1e54920730
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+Reviewed-by: Lars Knoll <lars.knoll@qt.io>
+Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
+(cherry picked from commit 11becbe910f806570ca9aa6a131b5887303e2a00)
+---
+ src/corelib/time/qtimezoneprivate_tz.cpp | 12 ++++++++++++
+ 1 file changed, 12 insertions(+)
+
+diff --git a/src/corelib/time/qtimezoneprivate_tz.cpp b/src/corelib/time/qtimezoneprivate_tz.cpp
+index b98fe6327a..dc584ad1bd 100644
+--- a/src/corelib/time/qtimezoneprivate_tz.cpp
++++ b/src/corelib/time/qtimezoneprivate_tz.cpp
+@@ -42,6 +42,7 @@
+ #include "qtimezone.h"
+ #include "qtimezoneprivate_p.h"
+ #include "private/qlocale_tools_p.h"
++#include "private/qlocking_p.h"
+
+ #include <QtCore/QDataStream>
+ #include <QtCore/QDateTime>
+@@ -62,6 +63,10 @@
+
+ QT_BEGIN_NAMESPACE
+
++#if QT_CONFIG(icu)
++static QBasicMutex s_icu_mutex;
++#endif
++
+ /*
+ Private
+
+@@ -670,6 +675,9 @@ QTzTimeZonePrivate::~QTzTimeZonePrivate()
+
+ QTzTimeZonePrivate *QTzTimeZonePrivate::clone() const
+ {
++#if QT_CONFIG(icu)
++ const auto lock = qt_scoped_lock(s_icu_mutex);
++#endif
+ return new QTzTimeZonePrivate(*this);
+ }
+
+@@ -913,12 +921,14 @@ QString QTzTimeZonePrivate::displayName(qint64 atMSecsSinceEpoch,
+ const QLocale &locale) const
+ {
+ #if QT_CONFIG(icu)
++ auto lock = qt_unique_lock(s_icu_mutex);
+ if (!m_icu)
+ m_icu = new QIcuTimeZonePrivate(m_id);
+ // TODO small risk may not match if tran times differ due to outdated files
+ // TODO Some valid TZ names are not valid ICU names, use translation table?
+ if (m_icu->isValid())
+ return m_icu->displayName(atMSecsSinceEpoch, nameType, locale);
++ lock.unlock();
+ #else
+ Q_UNUSED(nameType)
+ Q_UNUSED(locale)
+@@ -932,12 +942,14 @@ QString QTzTimeZonePrivate::displayName(QTimeZone::TimeType timeType,
+ const QLocale &locale) const
+ {
+ #if QT_CONFIG(icu)
++ auto lock = qt_unique_lock(s_icu_mutex);
+ if (!m_icu)
+ m_icu = new QIcuTimeZonePrivate(m_id);
+ // TODO small risk may not match if tran times differ due to outdated files
+ // TODO Some valid TZ names are not valid ICU names, use translation table?
+ if (m_icu->isValid())
+ return m_icu->displayName(timeType, nameType, locale);
++ lock.unlock();
+ #else
+ Q_UNUSED(timeType)
+ Q_UNUSED(nameType)
+--
+2.36.0
+
+From 8af9aece6e2bfa25cbd72817ac98503778b15153 Mon Sep 17 00:00:00 2001
+From: Ivan Tkachenko <me@ratijas.tk>
+Date: Wed, 12 Jan 2022 21:09:45 +0300
+Subject: [PATCH 098/146] QPathEdge: Fix array initialization
+
+We had a copy-paste error there: not all array members were initialized.
+
+Pointed out by PVS-Studio static analysis tool:
+https://habr.com/ru/company/pvs-studio/blog/542760
+
+Co-Authored-By: Marc Mutz <marc.mutz@qt.io>
+Pick-to: 6.3 6.2 5.15
+Change-Id: I06a4f2cd928846eab6330af014981fd0a3170ba0
+Reviewed-by: Marc Mutz <marc.mutz@qt.io>
+(cherry picked from commit 3215416e3c07e662f5ea99c82d4f8b08340be005)
+---
+ src/gui/painting/qpathclipper_p.h | 6 +-----
+ 1 file changed, 1 insertion(+), 5 deletions(-)
+
+diff --git a/src/gui/painting/qpathclipper_p.h b/src/gui/painting/qpathclipper_p.h
+index 9444a87b71..18f64c5e8c 100644
+--- a/src/gui/painting/qpathclipper_p.h
++++ b/src/gui/painting/qpathclipper_p.h
+@@ -156,7 +156,7 @@ public:
+ int vertex(Direction direction) const;
+
+ private:
+- int m_next[2][2];
++ int m_next[2][2] = { { -1, -1 }, { -1, -1 } };
+ };
+
+ class QPathSegments
+@@ -296,10 +296,6 @@ inline QPathEdge::QPathEdge(int a, int b)
+ , angle(0)
+ , invAngle(0)
+ {
+- m_next[0][0] = -1;
+- m_next[1][0] = -1;
+- m_next[0][0] = -1;
+- m_next[1][0] = -1;
+ }
+
+ inline int QPathEdge::next(Traversal traversal, Direction direction) const
+--
+2.36.0
+
+From 4cdb46eb33f520045a26cc8e4e88687a0c884b82 Mon Sep 17 00:00:00 2001
+From: Thiago Macieira <thiago.macieira@intel.com>
+Date: Wed, 26 Jan 2022 16:10:11 -0800
+Subject: [PATCH 099/146] QVersionNumber: remove "pure" declaration from
+ fromString()
+
+GCC doesn't like that we modify the contents of passed by pointer in the
+pure function. Reading the description of this attribute in the GCC
+manual was ambiguous then, but I can see the GCC maintainers'
+interpretation.
+
+See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104243
+
+Fixes: QTBUG-62185
+Pick-to: 5.15 6.2 6.3
+Change-Id: I6fcda969a9e9427198bffffd16cdf815d059d252
+Reviewed-by: Marc Mutz <marc.mutz@qt.io>
+(cherry picked from commit 77923604130057261bf774b5cc32d849a595a1f0)
+---
+ src/corelib/tools/qversionnumber.h | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/corelib/tools/qversionnumber.h b/src/corelib/tools/qversionnumber.h
+index d43b86ba51..2843f2b043 100644
+--- a/src/corelib/tools/qversionnumber.h
++++ b/src/corelib/tools/qversionnumber.h
+@@ -273,10 +273,10 @@ public:
+
+ Q_REQUIRED_RESULT Q_CORE_EXPORT QString toString() const;
+ #if QT_STRINGVIEW_LEVEL < 2
+- Q_REQUIRED_RESULT Q_CORE_EXPORT static Q_DECL_PURE_FUNCTION QVersionNumber fromString(const QString &string, int *suffixIndex = nullptr);
++ Q_REQUIRED_RESULT Q_CORE_EXPORT static QVersionNumber fromString(const QString &string, int *suffixIndex = nullptr);
+ #endif
+- Q_REQUIRED_RESULT Q_CORE_EXPORT static Q_DECL_PURE_FUNCTION QVersionNumber fromString(QLatin1String string, int *suffixIndex = nullptr);
+- Q_REQUIRED_RESULT Q_CORE_EXPORT static Q_DECL_PURE_FUNCTION QVersionNumber fromString(QStringView string, int *suffixIndex = nullptr);
++ Q_REQUIRED_RESULT Q_CORE_EXPORT static QVersionNumber fromString(QLatin1String string, int *suffixIndex = nullptr);
++ Q_REQUIRED_RESULT Q_CORE_EXPORT static QVersionNumber fromString(QStringView string, int *suffixIndex = nullptr);
+
+ private:
+ #ifndef QT_NO_DATASTREAM
+--
+2.36.0
+
+From 0159bfec704a1d8e9ea943efe334f38b09d05393 Mon Sep 17 00:00:00 2001
+From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+Date: Thu, 3 Feb 2022 11:01:33 +0100
+Subject: [PATCH 100/146] Fix infinite loop in dash stroker
+
+When the positions were large enough, we would get precision errors
+with the floating point numbers.
+
+We calculate the relative position:
+ dpos = pos + dashes[istart] - doffset - estart
+and then later
+ pos = dpos + estart
+
+If estart is a huge number (range of 10^18) and dashes[istart] is
+a low number (10^1), then estart + dashes[istart] == estart and
+the loop will never progress, dpos will be 0.
+
+Since the loop should never iterate more than dashCount times
+(since we cut away all full dash sequences before entering it),
+we add a failsafe that exits the loop if it detects the error.
+
+Fixes: QTBUG-99690
+Pick-to: 5.15 6.2 6.3
+Change-Id: Ia6a42f21b6b4c6adf5cdd703b6483750513a88ba
+Reviewed-by: Lars Knoll <lars.knoll@qt.io>
+(cherry picked from commit 26a0638222933fc549f250333c28d0184205b704)
+
+Changed a bit by Albert Astals Cid so it applies to the kde/5.15 branch
+---
+ src/gui/painting/qstroker.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/gui/painting/qstroker.cpp b/src/gui/painting/qstroker.cpp
+index 22302f9790..07fd1ac105 100644
+--- a/src/gui/painting/qstroker.cpp
++++ b/src/gui/painting/qstroker.cpp
+@@ -1179,6 +1179,7 @@ void QDashStroker::processCurrentSubpath()
+
+ bool done = pos >= estop;
+
++ int maxDashes = dashCount;
+ if (clipping) {
+ // Check if the entire line can be clipped away.
+ if (!lineIntersectsRect(prev, e, clip_tl, clip_br)) {
+@@ -1196,7 +1197,7 @@ void QDashStroker::processCurrentSubpath()
+ done = true;
+ } else { // Dash is on this line
+ pos = dpos + estart;
+- done = pos >= estop;
++ done = --maxDashes > 0 ? pos >= estop : estop;
+ if (++idash >= dashCount)
+ idash = 0;
+ doffset = 0; // full segment so no offset on next.
+--
+2.36.0
+
+From b32cc3bdb90afbd7a5ff7028d55a78bb616b18fc Mon Sep 17 00:00:00 2001
+From: Ilya Fedin <fedin-ilja2010@ya.ru>
+Date: Thu, 10 Feb 2022 02:18:30 +0400
+Subject: [PATCH 101/146] Make indicator-application hack work in flatpak
+
+Flatpak doesn't share $XDG_RUNTIME_DIR with the host making
+QSystemTrayIcon not to work on Xubuntu/Ubuntu MATE/Ubuntu Budgie.
+
+Although, it shares a subfolder, according to
+https://docs.flatpak.org/en/latest/sandbox-permissions.html
+
+Amends 0baa26638d7d14b6609dab191c4ea0cc1d3ff50a
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: I2d0043fc5a4c2c51e8fa1a920f3cada3b07eba6d
+Reviewed-by: Dmitry Shachnev <mitya57@gmail.com>
+Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
+(cherry picked from commit bc3723d4620718dfe8bd0165e9ef8ba45a3da262)
+---
+ .../themes/genericunix/dbustray/qdbustrayicon.cpp | 6 +++++-
+ 1 file changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/platformsupport/themes/genericunix/dbustray/qdbustrayicon.cpp b/src/platformsupport/themes/genericunix/dbustray/qdbustrayicon.cpp
+index bede70975a..76bfec5e5a 100644
+--- a/src/platformsupport/themes/genericunix/dbustray/qdbustrayicon.cpp
++++ b/src/platformsupport/themes/genericunix/dbustray/qdbustrayicon.cpp
+@@ -71,8 +71,12 @@ Q_LOGGING_CATEGORY(qLcTray, "qt.qpa.tray")
+ static QString iconTempPath()
+ {
+ QString tempPath = QStandardPaths::writableLocation(QStandardPaths::RuntimeLocation);
+- if (!tempPath.isEmpty())
++ if (!tempPath.isEmpty()) {
++ QString flatpakId = qEnvironmentVariable("FLATPAK_ID");
++ if (!flatpakId.isEmpty() && QFileInfo::exists(QLatin1String("/.flatpak-info")))
++ tempPath += QLatin1String("/app/") + flatpakId;
+ return tempPath;
++ }
+
+ tempPath = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation);
+
+--
+2.36.0
+
+From 153acd65d259826eba6d38fee59a39308d69b009 Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Fri, 11 Feb 2022 09:12:49 +0100
+Subject: [PATCH 102/146] QDesktopServices: fix UB (data race on handlers)
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The handlerDestroyed() function is connected to the handler QObject's
+destroyed() signal and removes all entries from the registry for which
+the destroyed object was listed as the handler.
+
+While handlerDestroyed() is always executed in the context of the
+thread owning QOpenUrlHandlerRegistry-as-a-QObject, the documentation
+explicitly states that "the handler will always be called from within
+the same thread that calls QDesktopServices::openUrl()", implying that
+calling openUrl() from a non-GUI thread is supported. The presence of
+the mutex also indicates that this should work.
+
+But then the unprotected access to the handlers variable in
+handlerDestroyed() is a data race, because nothing prevents a handler
+object from being destroyed concurrent to an openUrl() call.
+
+Fix by locking the mutex.
+
+Fixes: QTBUG-100777
+Pick-to: 6.3 6.2 5.15
+Change-Id: I9ef857efa609b4d16ee21063ccccd316e119576b
+Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+(cherry picked from commit 42e13b7c61693ca95e119106d4f6dbd2bcf2308d)
+---
+ src/gui/util/qdesktopservices.cpp | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/src/gui/util/qdesktopservices.cpp b/src/gui/util/qdesktopservices.cpp
+index fbb63a9408..1ed2178913 100644
+--- a/src/gui/util/qdesktopservices.cpp
++++ b/src/gui/util/qdesktopservices.cpp
+@@ -54,6 +54,8 @@
+ #include <qpa/qplatformintegration.h>
+ #include <qdir.h>
+
++#include <QtCore/private/qlocking_p.h>
++
+ QT_BEGIN_NAMESPACE
+
+ class QOpenUrlHandlerRegistry : public QObject
+@@ -81,6 +83,7 @@ Q_GLOBAL_STATIC(QOpenUrlHandlerRegistry, handlerRegistry)
+
+ void QOpenUrlHandlerRegistry::handlerDestroyed(QObject *handler)
+ {
++ const auto lock = qt_scoped_lock(mutex);
+ HandlerHash::Iterator it = handlers.begin();
+ while (it != handlers.end()) {
+ if (it->receiver == handler) {
+--
+2.36.0
+
+From ec1b766cca328c468ab6d4f72ceacfdda1a3a6b2 Mon Sep 17 00:00:00 2001
+From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+Date: Fri, 11 Feb 2022 14:09:25 +0100
+Subject: [PATCH 103/146] Fix integer overflow for broken QPainterPaths
+
+With some bogus input, we can end up with NaN in the
+bounding rects of the control points. This in turn
+causes problems later when it is converted to ints
+and used in code. To avoid it, we exit early if the
+rect is invalid (negative or NaN size).
+
+Pick-to: 5.15 6.2 6.3
+Fixes: QTBUG-100217
+Change-Id: Idbc6700b85cb30198d69fedbf8f3be3e1ab65e40
+Reviewed-by: Lars Knoll <lars.knoll@qt.io>
+(cherry picked from commit d6c4a3edf9adb02b6f96d43768db9f90a6623de7)
+---
+ src/gui/painting/qpaintengine_raster.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
+index a3e199cec9..b25700692c 100644
+--- a/src/gui/painting/qpaintengine_raster.cpp
++++ b/src/gui/painting/qpaintengine_raster.cpp
+@@ -1793,7 +1793,7 @@ void QRasterPaintEngine::fill(const QVectorPath &path, const QBrush &brush)
+ QRectF cpRect = path.controlPointRect();
+ const QRectF pathDeviceRect = s->matrix.mapRect(cpRect);
+ // Skip paths that by conservative estimates are completely outside the paint device.
+- if (!pathDeviceRect.intersects(QRectF(d->deviceRect)))
++ if (!pathDeviceRect.intersects(QRectF(d->deviceRect)) || !pathDeviceRect.isValid())
+ return;
+
+ ProcessSpans blend = d->getBrushFunc(pathDeviceRect, &s->brushData);
+--
+2.36.0
+
+From 4a032cc16c36d3432b6a549ce0c37e3cd4502bf4 Mon Sep 17 00:00:00 2001
+From: Patrick Griffis <tingping@tingping.se>
+Date: Mon, 7 Feb 2022 16:05:02 -0600
+Subject: [PATCH 104/146] Respect AT_SPI_BUS_ADDRESS env var on Linux
+
+Change-Id: Ic277b5ebe2d752360cebdb2ff728ca219f9d7124
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
+(cherry picked from commit 8c77825bb7ebbc02880d6ede1b6562e1eadae40c)
+---
+ src/platformsupport/linuxaccessibility/dbusconnection.cpp | 8 ++++++++
+ 1 file changed, 8 insertions(+)
+
+diff --git a/src/platformsupport/linuxaccessibility/dbusconnection.cpp b/src/platformsupport/linuxaccessibility/dbusconnection.cpp
+index 45ddc8e496..17fc130ed8 100644
+--- a/src/platformsupport/linuxaccessibility/dbusconnection.cpp
++++ b/src/platformsupport/linuxaccessibility/dbusconnection.cpp
+@@ -69,6 +69,14 @@ QT_BEGIN_NAMESPACE
+ DBusConnection::DBusConnection(QObject *parent)
+ : QObject(parent), m_a11yConnection(QString()), m_enabled(false)
+ {
++ // If the bus is explicitly set via env var it overrides everything else.
++ QByteArray addressEnv = qgetenv("AT_SPI_BUS_ADDRESS");
++ if (!addressEnv.isEmpty()) {
++ m_enabled = true;
++ connectA11yBus(QString::fromLocal8Bit(addressEnv));
++ return;
++ }
++
+ // Start monitoring if "org.a11y.Bus" is registered as DBus service.
+ QDBusConnection c = QDBusConnection::sessionBus();
+ if (!c.isConnected()) {
+--
+2.36.0
+
+From 698c07a6aa7cef953326f13038f3277937bb471c Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Fri, 11 Feb 2022 17:16:49 +0100
+Subject: [PATCH 105/146] QPkmHandler: make const what it never modified
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: I0bda0d93ebe60d4923f3e9eb059cddb61192b1b5
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+(cherry picked from commit b5c4d1f50b1e2d44fbb3535ebedc565525ecc64f)
+---
+ src/gui/util/qpkmhandler.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/gui/util/qpkmhandler.cpp b/src/gui/util/qpkmhandler.cpp
+index e0c3b75efe..3414f9d8ba 100644
+--- a/src/gui/util/qpkmhandler.cpp
++++ b/src/gui/util/qpkmhandler.cpp
+@@ -57,7 +57,7 @@ struct PkmType
+ quint32 bytesPerBlock;
+ };
+
+-static PkmType typeMap[5] = {
++static constexpr PkmType typeMap[5] = {
+ { 0x8D64, 8 }, // GL_ETC1_RGB8_OES
+ { 0x9274, 8 }, // GL_COMPRESSED_RGB8_ETC2
+ { 0, 0 }, // unused (obsolete)
+--
+2.36.0
+
+From 3e2e2d04240770d317c7b0beb1599bb00c7bfe8d Mon Sep 17 00:00:00 2001
+From: Liang Qi <liang.qi@qt.io>
+Date: Mon, 28 Feb 2022 15:35:11 +0100
+Subject: [PATCH 106/146] xcb: fix a typo for WindowTypes
+
+Pick-to: 6.3 6.2 5.15
+Fixes: QTBUG-101306
+Change-Id: If02fe4997d27b952886ce664133d1aafc2b41669
+Reviewed-by: Liang Qi <liang.qi@qt.io>
+(cherry picked from commit cfc2e267a4ed8cc724577d1b96f0d12bb45bfbfa)
+
+* asturmlechner 2022-03-01: Fix conflict from dev branch commit
+ 9166abcd997f57625c17db8e8734988ff303217e
+---
+ src/plugins/platforms/xcb/qxcbwindow.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp
+index c27da3cbc8..fff280fe4f 100644
+--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
++++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
+@@ -1619,7 +1619,7 @@ void QXcbWindow::setWmWindowType(QXcbWindowFunctions::WmWindowTypes types, Qt::W
+ break;
+ }
+
+- if ((flags & Qt::FramelessWindowHint) && !(type & QXcbWindowFunctions::KdeOverride)) {
++ if ((flags & Qt::FramelessWindowHint) && !(types & QXcbWindowFunctions::KdeOverride)) {
+ // override netwm type - quick and easy for KDE noborder
+ atoms.append(atom(QXcbAtom::_KDE_NET_WM_WINDOW_TYPE_OVERRIDE));
+ }
+--
+2.36.0
+
+From f41f78414f0d5e8876aeb1978e104fb05b2ebcf4 Mon Sep 17 00:00:00 2001
+From: Zhang Hao <zhanghao@uniontech.com>
+Date: Thu, 13 Jan 2022 16:30:12 +0800
+Subject: [PATCH 107/146] Fix UI mismatch when QPrinter::setDuplex
+
+Amends fa854f214a3c812e5548ff55d179dd07ef99053b. If user call
+QPrinter::setDuplex method, the QPrintDialog explicitDuplexMode value
+won't update.
+
+Fix this by:
+1) handle device-specific default and value set in QPrinter in
+QCupsPrintEngine(Private)
+2) handle the explicitly user-selected value in QPrintDialog(Private)
+
+Done-with: Michael Weghorn <m.weghorn@posteo.de>
+Pick-to: 5.15 6.2 6.3
+Fixes: QTBUG-99504
+Change-Id: I1a471a8554e83aa4bec8bb95fcc95f9135b0ac8c
+Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
+Reviewed-by: Lars Knoll <lars.knoll@qt.io>
+(cherry picked from commit 72931f492092a67c39cd7fb124d54e8752ee4933)
+---
+ src/plugins/printsupport/cups/qcupsprintengine.cpp | 11 ++++++++---
+ src/plugins/printsupport/cups/qcupsprintengine_p.h | 1 +
+ src/printsupport/dialogs/qprintdialog_unix.cpp | 7 ++++---
+ 3 files changed, 13 insertions(+), 6 deletions(-)
+
+diff --git a/src/plugins/printsupport/cups/qcupsprintengine.cpp b/src/plugins/printsupport/cups/qcupsprintengine.cpp
+index 43d5e119ad..1f9cbc4565 100644
+--- a/src/plugins/printsupport/cups/qcupsprintengine.cpp
++++ b/src/plugins/printsupport/cups/qcupsprintengine.cpp
+@@ -89,8 +89,10 @@ void QCupsPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &v
+ break;
+ case PPK_Duplex: {
+ QPrint::DuplexMode mode = QPrint::DuplexMode(value.toInt());
+- if (mode != d->duplex && d->m_printDevice.supportedDuplexModes().contains(mode))
++ if (d->m_printDevice.supportedDuplexModes().contains(mode)) {
+ d->duplex = mode;
++ d->duplexRequestedExplicitly = true;
++ }
+ break;
+ }
+ case PPK_PrinterName:
+@@ -277,9 +279,12 @@ void QCupsPrintEnginePrivate::changePrinter(const QString &newPrinter)
+ m_printDevice.swap(printDevice);
+ printerName = m_printDevice.id();
+
+- // Check if new printer supports current settings, otherwise us defaults
+- if (duplex != QPrint::DuplexAuto && !m_printDevice.supportedDuplexModes().contains(duplex))
++ // in case a duplex value was explicitly set, check if new printer supports current value,
++ // otherwise use device default
++ if (!duplexRequestedExplicitly || !m_printDevice.supportedDuplexModes().contains(duplex)) {
+ duplex = m_printDevice.defaultDuplexMode();
++ duplexRequestedExplicitly = false;
++ }
+ QPrint::ColorMode colorMode = grayscale ? QPrint::GrayScale : QPrint::Color;
+ if (!m_printDevice.supportedColorModes().contains(colorMode))
+ grayscale = m_printDevice.defaultColorMode() == QPrint::GrayScale;
+diff --git a/src/plugins/printsupport/cups/qcupsprintengine_p.h b/src/plugins/printsupport/cups/qcupsprintengine_p.h
+index c021b0c643..8f81fe478d 100644
+--- a/src/plugins/printsupport/cups/qcupsprintengine_p.h
++++ b/src/plugins/printsupport/cups/qcupsprintengine_p.h
+@@ -100,6 +100,7 @@ private:
+ QStringList cupsOptions;
+ QString cupsTempFile;
+ QPrint::DuplexMode duplex;
++ bool duplexRequestedExplicitly = false;
+ };
+
+ QT_END_NAMESPACE
+diff --git a/src/printsupport/dialogs/qprintdialog_unix.cpp b/src/printsupport/dialogs/qprintdialog_unix.cpp
+index c5b845f4ec..236e9b4980 100644
+--- a/src/printsupport/dialogs/qprintdialog_unix.cpp
++++ b/src/printsupport/dialogs/qprintdialog_unix.cpp
+@@ -702,13 +702,14 @@ void QPrintDialogPrivate::selectPrinter(const QPrinter::OutputFormat outputForma
+ else
+ options.grayscale->setChecked(true);
+
+- // keep duplex value explicitly set by user, if any, and selected printer supports it;
+- // use device default otherwise
++ // duplex priorities to be as follows:
++ // 1) a user-selected duplex value in the dialog has highest prority
++ // 2) duplex value set in the QPrinter
+ QPrint::DuplexMode duplex;
+ if (explicitDuplexMode != QPrint::DuplexAuto && supportedDuplexMode.contains(explicitDuplexMode))
+ duplex = explicitDuplexMode;
+ else
+- duplex = top->d->m_currentPrintDevice.defaultDuplexMode();
++ duplex = static_cast<QPrint::DuplexMode>(p->duplex());
+ switch (duplex) {
+ case QPrint::DuplexNone:
+ options.noDuplex->setChecked(true); break;
+--
+2.36.0
+
+From be6a9f312efda8045b3f0d197b1dade95c4ed039 Mon Sep 17 00:00:00 2001
+From: Edward Welbourne <edward.welbourne@qt.io>
+Date: Mon, 29 Nov 2021 13:41:09 +0100
+Subject: [PATCH 108/146] Close leak of QOCIDateTime object
+
+Noticed while reviewing usage of this type. The code has a whole
+TempStorage class to take care of keeping allocated memory live until
+we're done with it, explicitly including date-time objects as a
+special case, but neglected to use it in one place.
+
+Pick-to: 6.2 5.15
+Change-Id: Ic94c56d67dda6dc3ee36a025a2e0149f6b2a1837
+Reviewed-by: Andy Shaw <andy.shaw@qt.io>
+(cherry picked from commit 24e437041487a198057c02a1dd60c78d024af11f)
+---
+ src/plugins/sqldrivers/oci/qsql_oci.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/plugins/sqldrivers/oci/qsql_oci.cpp b/src/plugins/sqldrivers/oci/qsql_oci.cpp
+index 8da9837a59..feff54de4a 100644
+--- a/src/plugins/sqldrivers/oci/qsql_oci.cpp
++++ b/src/plugins/sqldrivers/oci/qsql_oci.cpp
+@@ -1483,6 +1483,7 @@ bool QOCICols::execBatch(QOCIResultPrivate *d, QVector<QVariant> &boundValues, b
+ columns[i].lengths[row] = columns[i].maxLen;
+ QOCIDateTime *date = new QOCIDateTime(d->env, d->err, val.toDateTime());
+ *reinterpret_cast<OCIDateTime**>(dataPtr) = date->dateTime;
++ tmpStorage.dateTimes.append(date);
+ break;
+ }
+ case QVariant::Int:
+--
+2.36.0
+
+From 903872d13e58883ef5363b6cb3585eccadd8f8f3 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Morten=20Johan=20S=C3=B8rvig?= <morten.sorvig@qt.io>
+Date: Wed, 5 Jan 2022 23:10:33 +0100
+Subject: [PATCH 109/146] Make QCursor::setPos() use the correct screen
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+setPos() takes a screen argument, however this argument
+indicates which cursor should be moved only and is
+not usable as an argument to toNativePixels() since
+the position may be on a sibling screen.
+
+Add call to QScreen::virtualSiblingAt to get the target
+screen.
+
+Task-number: QTBUG-99009
+Pick-to: 6.3 6.2 5.15
+Change-Id: I8714ebc93a283c58bc67911315f787c484fb0dd8
+Reviewed-by: Liang Qi <liang.qi@qt.io>
+Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
+(cherry picked from commit eef865cdc594c20b6f468d206475ddab48e2819a)
+
+* asturmlechner 2022-03-03: Fix conflict with dev branch: Non-existing
+ file tests/auto/gui/kernel/qhighdpi/tst_qhighdpi.cpp
+---
+ src/gui/kernel/qcursor.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/gui/kernel/qcursor.cpp b/src/gui/kernel/qcursor.cpp
+index d6ccaff8ed..455088241c 100644
+--- a/src/gui/kernel/qcursor.cpp
++++ b/src/gui/kernel/qcursor.cpp
+@@ -251,7 +251,8 @@ void QCursor::setPos(QScreen *screen, int x, int y)
+ {
+ if (screen) {
+ if (QPlatformCursor *cursor = screen->handle()->cursor()) {
+- const QPoint devicePos = QHighDpi::toNativePixels(QPoint(x, y), screen);
++ const QPoint pos(x, y);
++ const QPoint devicePos = QHighDpi::toNativePixels(pos, screen->virtualSiblingAt(pos));
+ // Need to check, since some X servers generate null mouse move
+ // events, causing looping in applications which call setPos() on
+ // every mouse move event.
+--
+2.36.0
+
+From bc39ee7fc28bf8b111ae8b9d0b9bde674571e5e5 Mon Sep 17 00:00:00 2001
+From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+Date: Thu, 13 Jan 2022 09:13:48 +0100
+Subject: [PATCH 110/146] Fix crash when text shaping fails
+
+If text shaping failed for some reason (for example if the
+string passed to Harfbuzz contains ignorables only), we
+would return a single glyph for the whole string. But we
+forgot to initialize the log clusters array, which could
+cause crashes later when this was read. We initialize a
+single cluster consisting of the "missing glyph" glyph to
+be consistent.
+
+Amends fccd419dd632306a4bd85928223e0a56a59510ef.
+
+[ChangeLog][QtGui][Text] Fixed a possible crash with certain fonts
+when shaping strings consisting only of control characters.
+
+Pick-to: 5.15 6.2 6.3
+Task-number: QTBUG-89155
+Fixes: QTBUG-92358
+Change-Id: I1ec0237d99b48be2a8bb340f0feb056bca4fdffe
+Reviewed-by: Lars Knoll <lars.knoll@qt.io>
+Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+(cherry picked from commit 413cd06c88d4ccc5e1383d5f1f556fd35333dcbc)
+---
+ src/gui/text/qtextengine.cpp | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
+index ab5ea3a3d6..ec38d66b1c 100644
+--- a/src/gui/text/qtextengine.cpp
++++ b/src/gui/text/qtextengine.cpp
+@@ -1559,6 +1559,12 @@ void QTextEngine::shapeText(int item) const
+ // Overwrite with 0 token to indicate failure
+ QGlyphLayout g = availableGlyphs(&si);
+ g.glyphs[0] = 0;
++ g.attributes[0].clusterStart = true;
++
++ ushort *log_clusters = logClusters(&si);
++ for (int i = 0; i < itemLength; ++i)
++ log_clusters[i] = 0;
++
+ return;
+ }
+
+--
+2.36.0
+
+From 1df669f178338a76a698fb5c1f1fa12dea7db2d2 Mon Sep 17 00:00:00 2001
+From: Edward Welbourne <edward.welbourne@qt.io>
+Date: Mon, 24 Jan 2022 12:44:38 +0100
+Subject: [PATCH 111/146] Check for null driver() before trying to exec()
+
+QSqlQuery::exec() took for granted that it can dereference driver(),
+which should be true for all sane usage; however, it should not crash
+if used misguidedly. Added regression test, based on bug report's
+reproducer, which crashes without the fix.
+
+Fixes: QTBUG-100037
+Pick-to: 6.3 6.2 5.15 5.12
+Change-Id: I94600bc60f89e82a1121b418144006a683921a38
+Reviewed-by: Andy Shaw <andy.shaw@qt.io>
+(cherry picked from commit 78eac57f3dc788345f8f3e9b6dbd3dce70b8f511)
+---
+ src/sql/kernel/qsqlquery.cpp | 6 +++-
+ .../sql/kernel/qsqlquery/tst_qsqlquery.cpp | 33 ++++++++++++++++++-
+ 2 files changed, 37 insertions(+), 2 deletions(-)
+
+diff --git a/src/sql/kernel/qsqlquery.cpp b/src/sql/kernel/qsqlquery.cpp
+index 32c6166c79..60afef10c3 100644
+--- a/src/sql/kernel/qsqlquery.cpp
++++ b/src/sql/kernel/qsqlquery.cpp
+@@ -1,6 +1,6 @@
+ /****************************************************************************
+ **
+-** Copyright (C) 2016 The Qt Company Ltd.
++** Copyright (C) 2022 The Qt Company Ltd.
+ ** Contact: https://www.qt.io/licensing/
+ **
+ ** This file is part of the QtSql module of the Qt Toolkit.
+@@ -377,6 +377,10 @@ bool QSqlQuery::exec(const QString& query)
+ QElapsedTimer t;
+ t.start();
+ #endif
++ if (!driver()) {
++ qWarning("QSqlQuery::exec: called before driver has been set up");
++ return false;
++ }
+ if (d->ref.loadRelaxed() != 1) {
+ bool fo = isForwardOnly();
+ *this = QSqlQuery(driver()->createResult());
+diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
+index 76df61c892..dc42b15a69 100644
+--- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
++++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
+@@ -1,6 +1,6 @@
+ /****************************************************************************
+ **
+-** Copyright (C) 2016 The Qt Company Ltd.
++** Copyright (C) 2022 The Qt Company Ltd.
+ ** Contact: https://www.qt.io/licensing/
+ **
+ ** This file is part of the test suite of the Qt Toolkit.
+@@ -68,6 +68,8 @@ private slots:
+ void query_exec();
+ void execErrorRecovery_data() { generic_data(); }
+ void execErrorRecovery();
++ void prematureExec_data() { generic_data(); }
++ void prematureExec();
+ void first_data() { generic_data(); }
+ void first();
+ void next_data() { generic_data(); }
+@@ -2770,6 +2772,35 @@ void tst_QSqlQuery::execErrorRecovery()
+ QVERIFY_SQL( q, exec() );
+ }
+
++void tst_QSqlQuery::prematureExec()
++{
++ QFETCH(QString, dbName);
++ // We only want the engine name, for addDatabase():
++ int cut = dbName.indexOf(QChar('@'));
++ if (cut < 0)
++ QSKIP("Failed to parse database type out of name");
++ dbName.truncate(cut);
++ cut = dbName.indexOf(QChar('_'));
++ if (cut >= 0)
++ dbName = dbName.sliced(cut + 1);
++
++ auto db = QSqlDatabase::addDatabase(dbName);
++ QSqlQuery q(db);
++
++ QTest::ignoreMessage(QtWarningMsg,
++ "QSqlDatabasePrivate::removeDatabase: connection "
++ "'qt_sql_default_connection' is still in use, all "
++ "queries will cease to work.");
++ QTest::ignoreMessage(QtWarningMsg,
++ "QSqlDatabasePrivate::addDatabase: duplicate connection name "
++ "'qt_sql_default_connection', old connection removed.");
++ auto otherDb = QSqlDatabase::addDatabase(dbName);
++
++ QTest::ignoreMessage(QtWarningMsg, "QSqlQuery::exec: called before driver has been set up");
++ // QTBUG-100037: shouldn't crash !
++ QVERIFY(!q.exec("select stuff from TheVoid"));
++}
++
+ void tst_QSqlQuery::lastInsertId()
+ {
+ QFETCH( QString, dbName );
+--
+2.36.0
+
+From b313b6b2b665af47010b86e20dedbfdc32d768d3 Mon Sep 17 00:00:00 2001
+From: Volker Hilsheimer <volker.hilsheimer@qt.io>
+Date: Tue, 7 Dec 2021 14:36:33 +0100
+Subject: [PATCH 112/146] Test for nullptr before dereferencing the screen
+
+Touch event processing might still be ongoing even after the screen
+has been disconnected. If that screen was also the primary screen, we
+would dereference nullptr.
+
+Check for nullptr to avoid potential crashes during shutdown.
+
+Fixes: QTBUG-95192
+Pick-to: 6.2 5.15
+Change-Id: I49ccd30c4126fe12cf5bb675e532e6e59b40b9c1
+Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
+(cherry picked from commit 30b0b72453239666952ab516c618c19f0ca0aca6)
+
+* asturmlechner 2022-03-03: Resolve conflict with dev branch commit
+ 4b899a29fa5a8acc381673e6b527345f8eaad7b5
+---
+ src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp | 2 +-
+ src/platformsupport/input/libinput/qlibinputtouch.cpp | 2 +-
+ 2 files changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp b/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp
+index f57e1540e0..80a911a210 100644
+--- a/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp
++++ b/src/platformsupport/input/evdevtouch/qevdevtouchhandler.cpp
+@@ -756,7 +756,7 @@ QRect QEvdevTouchScreenData::screenGeometry() const
+ if (m_screen)
+ screen = m_screen;
+ }
+- return QHighDpi::toNativePixels(screen->geometry(), screen);
++ return screen ? QHighDpi::toNativePixels(screen->geometry(), screen) : QRect();
+ }
+
+ void QEvdevTouchScreenData::reportPoints()
+diff --git a/src/platformsupport/input/libinput/qlibinputtouch.cpp b/src/platformsupport/input/libinput/qlibinputtouch.cpp
+index 446218e4b3..6eb3a8a355 100644
+--- a/src/platformsupport/input/libinput/qlibinputtouch.cpp
++++ b/src/platformsupport/input/libinput/qlibinputtouch.cpp
+@@ -82,7 +82,7 @@ QPointF QLibInputTouch::getPos(libinput_event_touch *e)
+ if (m_screen)
+ screen = m_screen;
+ }
+- const QRect geom = QHighDpi::toNativePixels(screen->geometry(), screen);
++ const QRect geom = screen ? QHighDpi::toNativePixels(screen->geometry(), screen) : QRect();
+ const double x = libinput_event_touch_get_x_transformed(e, geom.width());
+ const double y = libinput_event_touch_get_y_transformed(e, geom.height());
+ return geom.topLeft() + QPointF(x, y);
+--
+2.36.0
+
+From bf4e69863999b1259a51c8c8db78d965d6af593d Mon Sep 17 00:00:00 2001
+From: Volker Hilsheimer <volker.hilsheimer@qt.io>
+Date: Thu, 4 Jun 2020 10:37:59 +0200
+Subject: [PATCH 113/146] Fix check for malformed input when decoding
+ translations
+
+Any integer modulo 1 can never be anything else but 0, so the statement
+could never be true. The intention is to abort in case of an odd number
+of bytes, as this would indicate malformed input that can't be decoded
+into a QString.
+
+Note that QTranslator will then silently continue to search for valid
+translations, and not print any error message at runtime, or otherwise
+inform the user or developer that an input message file contains
+malformed content.
+
+Change-Id: I957b337ee035f3aca013e0859f8ee70553d9a97b
+Coverity-Id: 11014
+Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
+(cherry picked from commit 458d49861f5ab04490014f7839be0dab30c8ac61)
+---
+ src/corelib/kernel/qtranslator.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/corelib/kernel/qtranslator.cpp b/src/corelib/kernel/qtranslator.cpp
+index 36d9ea4998..b610fb0b24 100644
+--- a/src/corelib/kernel/qtranslator.cpp
++++ b/src/corelib/kernel/qtranslator.cpp
+@@ -897,7 +897,7 @@ static QString getMessage(const uchar *m, const uchar *end, const char *context,
+ goto end;
+ case Tag_Translation: {
+ int len = read32(m);
+- if (len % 1)
++ if (len & 1)
+ return QString();
+ m += 4;
+ if (!numerus--) {
+--
+2.36.0
+
+From 95e10f374bec1f29af07ff54a9eba6be3c835ea2 Mon Sep 17 00:00:00 2001
+From: Nicolas Fella <nicolas.fella@kdab.com>
+Date: Sat, 10 Jul 2021 16:59:55 +0200
+Subject: [PATCH 114/146] [qgenericunixservices] Consider kde-open5 for opening
+ URLs
+
+When xdg-open is not found the KDE-specific kfmclient is considered.
+That however is part of Konqueror and may not be present as well.
+Plasma offers another option, kde-open5, which should be considered
+before falling back to webbrowsers.
+This is particularly for non-http URLs like tel: where opening in a
+webbrowser is not wanted.
+
+Pick-to: 6.2 6.1 5.15
+Change-Id: I2b606562e21568fbe43f4593de67a1d467918cc4
+Reviewed-by: David Faure <david.faure@kdab.com>
+(cherry picked from commit 74a91773afa395ee0cefcdcd25bb3947b60a0b63)
+---
+ .../services/genericunix/qgenericunixservices.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/platformsupport/services/genericunix/qgenericunixservices.cpp b/src/platformsupport/services/genericunix/qgenericunixservices.cpp
+index 1a3cab275d..f0d1722c95 100644
+--- a/src/platformsupport/services/genericunix/qgenericunixservices.cpp
++++ b/src/platformsupport/services/genericunix/qgenericunixservices.cpp
+@@ -142,6 +142,8 @@ static inline bool detectWebBrowser(const QByteArray &desktop,
+ }
+
+ if (desktop == QByteArray("KDE")) {
++ if (checkExecutable(QStringLiteral("kde-open5"), browser))
++ return true;
+ // Konqueror launcher
+ if (checkExecutable(QStringLiteral("kfmclient"), browser)) {
+ browser->append(QLatin1String(" exec"));
+--
+2.36.0
+
+From ec2e26e9ab09c7b227b39b78312be9a364a026d1 Mon Sep 17 00:00:00 2001
+From: Thiago Macieira <thiago.macieira@intel.com>
+Date: Wed, 9 Feb 2022 10:49:15 -0800
+Subject: [PATCH 115/146] QFreeList: replace a Q_ASSERT(false) with
+ Q_UNREACHABLE()
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Q_ASSERT goes away in release builds, Q_UNREACHABLE() does not.
+
+This also solves the GCC 12 warning about out-of-bounds access in
+QAbstractEventDispatcherPrivate::allocateTimerId():
+
+In member function ‘_PTp* std::__atomic_base<_PTp*>::load(std::memory_order) const [with _PTp = QFreeListElement<void>]’,
+ inlined from ‘_Tp* std::atomic<_Tp*>::load(std::memory_order) const [with _Tp = QFreeListElement<void>]’ at atomic:579:25,
+ inlined from ‘static T QAtomicOps<X>::loadAcquire(const std::atomic<T>&) [with T = QFreeListElement<void>*; X = QFreeListElement<void>*]’ at thread/qatomic_cxx11.h:249:29,
+ inlined from ‘X* QBasicAtomicPointer<X>::loadAcquire() const [with X = QFreeListElement<void>]’ at thread/qbasicatomic.h:233:64,
+ inlined from ‘int QFreeList<T, ConstantsType>::next() [with T = void; ConstantsType = QtTimerIdFreeListConstants]’ at qfreelist_p.h:245:34,
+ inlined from ‘static int QAbstractEventDispatcherPrivate::allocateTimerId()’ at kernel/qabstracteventdispatcher.cpp:99:24:
+bits/atomic_base.h:820:31: warning: ‘long unsigned int __atomic_load_8(const volatile void*, int)’ writing 8 bytes into a region of size 0 overflows the destination [-Wstringop-overflow=]
+ 820 | return __atomic_load_n(&_M_p, int(__m));
+ | ~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
+In file included from qglobalstatic.h:1,
+ from qglobal.h:1395:
+qglobalstatic.h: In static member function ‘static int QAbstractEventDispatcherPrivate::allocateTimerId()’:
+qglobalstatic.h:127:23: note: at offset -8 into destination object ‘holder’ of size 56
+ 127 | static Holder holder;
+ | ^~~~~~
+
+Pick-to: 5.15 6.2 6.3
+Change-Id: I74249c52dc02478ba93cfffd16d232b275d5d216
+Reviewed-by: Marc Mutz <marc.mutz@qt.io>
+(cherry picked from commit dcdb8884e732802c92ae96b6d5b21331ddaef55b)
+---
+ src/corelib/tools/qfreelist_p.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/corelib/tools/qfreelist_p.h b/src/corelib/tools/qfreelist_p.h
+index 5ba23b344b..9974102136 100644
+--- a/src/corelib/tools/qfreelist_p.h
++++ b/src/corelib/tools/qfreelist_p.h
+@@ -161,7 +161,7 @@ class QFreeList
+ return i;
+ x -= size;
+ }
+- Q_ASSERT(false);
++ Q_UNREACHABLE();
+ return -1;
+ }
+
+--
+2.36.0
+
+From 9eca8eb7d938edc32c2459f63ce7d229af77fe16 Mon Sep 17 00:00:00 2001
+From: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
+Date: Thu, 24 Feb 2022 01:10:43 +0100
+Subject: [PATCH 116/146] QLabel::setPixmap(): remove the no-op self-masking
+
+When calling QLabel::setPixmap() with a 1bpp pixmap (i.e. a bitmap), and
+that pixmap didn't have a mask set, QLabel would then set the pixmap as
+its own mask.
+
+This seems to be a no-op due to how QPixmap::setMask is coded:
+
+ void QPixmap::setMask(const QBitmap &mask) {
+
+ // ...
+
+ if (static_cast<const QPixmap &>(mask).data == data) // trying to selfmask
+ return;
+
+ }
+
+Moreover, in order to convert the pixmap to a QBitmap, the code would just
+straight downcast it, triggering UB (if the input to setPixmap wasn't a
+QBitmap to begin with).
+
+I *guess* this was done this way to avoid a QBitmap::fromPixmap call,
+which however is not expensive at all if the pixmap is already 1bpp,
+which QLabel::setPixmap checks explicitly (before attempting to mask the
+pixmap). I don't know the historical reasons for the code to have the
+shape it had (and the code history is from before open governance).
+
+So get two birds with one stone: remove the no-op and also the UB.
+
+Change-Id: Ibab20492c2945bd1d01f98a18b168fabc56292b0
+Pick-to: 6.3 6.2 5.15
+Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
+(cherry picked from commit b20cf7feee6413a40a69c9e41544d44c53ee6877)
+---
+ src/widgets/widgets/qlabel.cpp | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/src/widgets/widgets/qlabel.cpp b/src/widgets/widgets/qlabel.cpp
+index 30ff80cbb0..cf2605c17c 100644
+--- a/src/widgets/widgets/qlabel.cpp
++++ b/src/widgets/widgets/qlabel.cpp
+@@ -421,9 +421,6 @@ void QLabel::setPixmap(const QPixmap &pixmap)
+ d->pixmap = new QPixmap(pixmap);
+ }
+
+- if (d->pixmap->depth() == 1 && !d->pixmap->mask())
+- d->pixmap->setMask(*((QBitmap *)d->pixmap));
+-
+ d->updateLabel();
+ }
+
+--
+2.36.0
+
+From 32959ea3471d3b6b4feded8d4423b15fd4368c30 Mon Sep 17 00:00:00 2001
+From: Eirik Aavitsland <eirik.aavitsland@qt.io>
+Date: Tue, 31 Aug 2021 15:34:10 +0200
+Subject: [PATCH 117/146] When clearing QPixmapCache, stop its flushing timer
+
+No need for timer event to reduce cache size when it is already empty.
+
+May also avoid the "Timers cannot be stopped from another thread"
+warning at exit, if the global cache object is then deleted by another
+thread.
+
+Fixes: QTBUG-96101
+Pick-to: 6.2 5.15
+Change-Id: Id1aeecfbb43a25a887ebd5cc7242749a74290bb0
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
+(cherry picked from commit dc65267ad8c086950c23185c8cebc304a8d1c3dc)
+---
+ src/gui/image/qpixmapcache.cpp | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/gui/image/qpixmapcache.cpp b/src/gui/image/qpixmapcache.cpp
+index 9709df9e0c..b6e5e70f55 100644
+--- a/src/gui/image/qpixmapcache.cpp
++++ b/src/gui/image/qpixmapcache.cpp
+@@ -461,6 +461,11 @@ void QPMCache::clear()
+ for (int i = 0; i < keys.size(); ++i)
+ keys.at(i).d->isValid = false;
+ QCache<QPixmapCache::Key, QPixmapCacheEntry>::clear();
++ // Nothing left to flush; stop the timer
++ if (theid) {
++ killTimer(theid);
++ theid = 0;
++ }
+ }
+
+ QPixmapCache::KeyData* QPMCache::getKeyData(QPixmapCache::Key *key)
+--
+2.36.0
+
+From dac6ba3548182e3d53ca24924fc48170f5de6316 Mon Sep 17 00:00:00 2001
+From: Zhang Hao <zhanghao@uniontech.com>
+Date: Thu, 27 Jan 2022 11:20:57 +0800
+Subject: [PATCH 118/146] Sync QPrinter orientation when PageSetup Orientation
+ selected
+
+QPrinter orientation will not effect when PageSetup Orientation selected
+
+Fix this by sync PageSetup orientation property to QPrinter.
+
+Fixes: QTBUG-100261
+Pick-to: 5.15 6.2 6.3
+Change-Id: I264852ea18317308dfcfb58c880f5e8ad8d299bd
+Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
+Reviewed-by: Lars Knoll <lars.knoll@qt.io>
+(cherry picked from commit 715ed74c89a7e6c64aa85e36682699d41c195a33)
+---
+ src/printsupport/dialogs/qpagesetupdialog_unix.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/printsupport/dialogs/qpagesetupdialog_unix.cpp b/src/printsupport/dialogs/qpagesetupdialog_unix.cpp
+index 78e5b8d1ef..2a28516719 100644
+--- a/src/printsupport/dialogs/qpagesetupdialog_unix.cpp
++++ b/src/printsupport/dialogs/qpagesetupdialog_unix.cpp
+@@ -532,6 +532,7 @@ void QPageSetupWidget::updateWidget()
+ void QPageSetupWidget::setupPrinter() const
+ {
+ m_printer->setPageLayout(m_pageLayout);
++ m_printer->setPageOrientation(m_pageLayout.orientation());
+ #if QT_CONFIG(cups)
+ QCUPSSupport::PagesPerSheet pagesPerSheet = qvariant_cast<QCUPSSupport::PagesPerSheet>(m_ui.pagesPerSheetCombo->currentData()
+ );
+--
+2.36.0
+
+From ff4c838b4c1e30b043ae2258b95925ea68d5521d Mon Sep 17 00:00:00 2001
+From: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
+Date: Tue, 1 Mar 2022 16:03:44 +0100
+Subject: [PATCH 119/146] Qt namespace: fix QT_Q_FLAG declaration for
+ Qt::MouseEventFlags
+
+The declaration was accidentally declaring the enumeration as
+a flag type, not the actual flag type.
+
+Change-Id: I515478b1628a6d72626da6d7e0061f1ea3d10c89
+Pick-to: 6.3 6.2 5.15
+Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
+(cherry picked from commit 52e523c33f44d4a17653b5f5b134b9615bd07346)
+
+* asturmlechner 2022-03-03: Fix conflict with dev branch,
+ change git summary accordingly (s/Q_FLAG_NS/QT_Q_FLAG/)
+---
+ src/corelib/global/qnamespace.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h
+index ad4150b317..bf19b1627b 100644
+--- a/src/corelib/global/qnamespace.h
++++ b/src/corelib/global/qnamespace.h
+@@ -1864,7 +1864,7 @@ public:
+ QT_Q_ENUM(TimerType)
+ QT_Q_ENUM(ScrollPhase)
+ QT_Q_ENUM(MouseEventSource)
+- QT_Q_FLAG(MouseEventFlag)
++ QT_Q_FLAG(MouseEventFlags)
+ QT_Q_ENUM(ChecksumType)
+ QT_Q_ENUM(HighDpiScaleFactorRoundingPolicy)
+ QT_Q_ENUM(TabFocusBehavior)
+--
+2.36.0
+
+From b0aabb9b1e767f531f5a8d4b71f86b3bbb08c122 Mon Sep 17 00:00:00 2001
+From: Andy Shaw <andy.shaw@qt.io>
+Date: Thu, 17 Feb 2022 10:28:29 +0100
+Subject: [PATCH 120/146] Windows: use QSystemLibrary instead of LoadLibrary
+ directly
+
+Using QSystemLibrary ensures that it will only use the expected copy of
+the system library and not one that has been placed in the application's
+working directory or elsewhere in the PATH environment variable.
+
+Pick-to: 5.15 6.2 6.3
+Change-Id: Ic4234334f73482b38ee5f06345bf11f8c029edc5
+Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+(cherry picked from commit a14f2d59141e05d4c8e116895e918638b920611d)
+
+Contents are actually from
+https://download.qt.io/official_releases/qt/5.15/CVE-2022-25643-5.15.diff
+and not from the cherry-pick
+---
+ src/corelib/io/qlockfile_win.cpp | 4 +++-
+ src/network/kernel/qauthenticator.cpp | 3 ++-
+ .../platforms/windows/qwindowsglcontext.cpp | 17 ++++++++++++-----
+ .../platforms/windows/qwindowsopengltester.cpp | 3 ++-
+ 4 files changed, 19 insertions(+), 8 deletions(-)
+
+diff --git a/src/corelib/io/qlockfile_win.cpp b/src/corelib/io/qlockfile_win.cpp
+index 277f8d4230..38ecef5550 100644
+--- a/src/corelib/io/qlockfile_win.cpp
++++ b/src/corelib/io/qlockfile_win.cpp
+@@ -48,6 +48,8 @@
+ #include "QtCore/qdebug.h"
+ #include "QtCore/qthread.h"
+
++#include "private/qsystemlibrary_p.h"
++
+ QT_BEGIN_NAMESPACE
+
+ static inline bool fileExists(const wchar_t *fileName)
+@@ -150,7 +152,7 @@ QString QLockFilePrivate::processNameByPid(qint64 pid)
+ #if !defined(Q_OS_WINRT)
+ typedef DWORD (WINAPI *GetModuleFileNameExFunc)(HANDLE, HMODULE, LPTSTR, DWORD);
+
+- HMODULE hPsapi = LoadLibraryA("psapi");
++ HMODULE hPsapi = QSystemLibrary::load(L"psapi");
+ if (!hPsapi)
+ return QString();
+ GetModuleFileNameExFunc qGetModuleFileNameEx = reinterpret_cast<GetModuleFileNameExFunc>(
+diff --git a/src/network/kernel/qauthenticator.cpp b/src/network/kernel/qauthenticator.cpp
+index 86242b011f..c317d1fe39 100644
+--- a/src/network/kernel/qauthenticator.cpp
++++ b/src/network/kernel/qauthenticator.cpp
+@@ -50,6 +50,7 @@
+ #include <qstring.h>
+ #include <qdatetime.h>
+ #include <qrandom.h>
++#include "private/qsystemlibrary_p.h"
+
+ #ifdef Q_OS_WIN
+ #include <qmutex.h>
+@@ -1542,7 +1543,7 @@ static bool q_SSPI_library_load()
+
+ // Initialize security interface
+ if (pSecurityFunctionTable == nullptr) {
+- securityDLLHandle = LoadLibrary(L"secur32.dll");
++ securityDLLHandle = QSystemLibrary::load(L"secur32");
+ if (securityDLLHandle != nullptr) {
+ INIT_SECURITY_INTERFACE pInitSecurityInterface =
+ reinterpret_cast<INIT_SECURITY_INTERFACE>(
+diff --git a/src/plugins/platforms/windows/qwindowsglcontext.cpp b/src/plugins/platforms/windows/qwindowsglcontext.cpp
+index 6fa5a8a2b3..1f49f0aefd 100644
+--- a/src/plugins/platforms/windows/qwindowsglcontext.cpp
++++ b/src/plugins/platforms/windows/qwindowsglcontext.cpp
+@@ -48,6 +48,7 @@
+ #include <qpa/qplatformnativeinterface.h>
+ #include <QtPlatformHeaders/qwglnativecontext.h>
+
++#include <private/qsystemlibrary_p.h>
+ #include <algorithm>
+
+ #include <wingdi.h>
+@@ -162,19 +163,25 @@ QFunctionPointer QWindowsOpengl32DLL::resolve(const char *name)
+
+ bool QWindowsOpengl32DLL::init(bool softwareRendering)
+ {
+- const QByteArray opengl32 = QByteArrayLiteral("opengl32.dll");
+- const QByteArray swopengl = QByteArrayLiteral("opengl32sw.dll");
++ const QByteArray opengl32 = QByteArrayLiteral("opengl32");
++ const QByteArray swopengl = QByteArrayLiteral("opengl32sw");
++ bool useSystemLib = false;
+
+ QByteArray openglDll = qgetenv("QT_OPENGL_DLL");
+- if (openglDll.isEmpty())
++ if (openglDll.isEmpty()) {
+ openglDll = softwareRendering ? swopengl : opengl32;
++ useSystemLib = !softwareRendering;
++ }
+
+ openglDll = openglDll.toLower();
+ m_nonOpengl32 = openglDll != opengl32;
+
+ qCDebug(lcQpaGl) << "Qt: Using WGL and OpenGL from" << openglDll;
+
+- m_lib = ::LoadLibraryA(openglDll.constData());
++ if (useSystemLib)
++ m_lib = QSystemLibrary::load((wchar_t*)(QString::fromLatin1(openglDll).utf16()));
++ else
++ m_lib = LoadLibraryA(openglDll.constData());
+ if (!m_lib) {
+ qErrnoWarning(::GetLastError(), "Failed to load %s", openglDll.constData());
+ return false;
+@@ -184,7 +191,7 @@ bool QWindowsOpengl32DLL::init(bool softwareRendering)
+ // Load opengl32.dll always. GDI functions like ChoosePixelFormat do
+ // GetModuleHandle for opengl32.dll and behave differently (and call back into
+ // opengl32) when the module is present. This is fine for dummy contexts and windows.
+- ::LoadLibraryA("opengl32.dll");
++ QSystemLibrary::load(L"opengl32");
+ }
+
+ wglCreateContext = reinterpret_cast<HGLRC (WINAPI *)(HDC)>(resolve("wglCreateContext"));
+diff --git a/src/plugins/platforms/windows/qwindowsopengltester.cpp b/src/plugins/platforms/windows/qwindowsopengltester.cpp
+index d7d186e804..9eb4011bf2 100644
+--- a/src/plugins/platforms/windows/qwindowsopengltester.cpp
++++ b/src/plugins/platforms/windows/qwindowsopengltester.cpp
+@@ -49,6 +49,7 @@
+ #include <QtCore/qstandardpaths.h>
+ #include <QtCore/qlibraryinfo.h>
+ #include <QtCore/qhash.h>
++#include <private/qsystemlibrary_p.h>
+
+ #ifndef QT_NO_OPENGL
+ #include <private/qopengl_p.h>
+@@ -396,7 +397,7 @@ bool QWindowsOpenGLTester::testDesktopGL()
+
+ // Test #1: Load opengl32.dll and try to resolve an OpenGL 2 function.
+ // This will typically fail on systems that do not have a real OpenGL driver.
+- lib = LoadLibraryA("opengl32.dll");
++ lib = QSystemLibrary::load(L"opengl32");
+ if (lib) {
+ CreateContext = reinterpret_cast<CreateContextType>(
+ reinterpret_cast<QFunctionPointer>(::GetProcAddress(lib, "wglCreateContext")));
+--
+2.36.0
+
+From c61965808a64de37d091aac0ea47524f36a8bdf2 Mon Sep 17 00:00:00 2001
+From: David Faure <david.faure@kdab.com>
+Date: Sat, 12 Mar 2022 01:48:07 +0100
+Subject: [PATCH 121/146] QCompleter: fix crash when setting the same model
+ twice
+
+Found when retesting the testcase completer.zip from QTBUG-54642
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: Id84eefeb3a33dc6d790cfa23755352381cc097a9
+Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
+(cherry picked from commit 7382e5735ea734fe5e5777518394963593603c32)
+---
+ src/widgets/util/qcompleter.cpp | 2 ++
+ tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp | 10 ++++++++++
+ 2 files changed, 12 insertions(+)
+
+diff --git a/src/widgets/util/qcompleter.cpp b/src/widgets/util/qcompleter.cpp
+index 47fee68538..beef80ef4b 100644
+--- a/src/widgets/util/qcompleter.cpp
++++ b/src/widgets/util/qcompleter.cpp
+@@ -1120,6 +1120,8 @@ void QCompleter::setModel(QAbstractItemModel *model)
+ {
+ Q_D(QCompleter);
+ QAbstractItemModel *oldModel = d->proxy->sourceModel();
++ if (oldModel == model)
++ return;
+ #if QT_CONFIG(filesystemmodel)
+ if (qobject_cast<const QFileSystemModel *>(oldModel))
+ setCompletionRole(Qt::EditRole); // QTBUG-54642, clear FileNameRole set by QFileSystemModel
+diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
+index d8bb34933a..46e96616b1 100644
+--- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
++++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
+@@ -1681,6 +1681,16 @@ void tst_QComboBox::setModel()
+ QCOMPARE(box.rootModelIndex(), rootModelIndex);
+ box.setModel(box.model());
+ QCOMPARE(box.rootModelIndex(), rootModelIndex);
++
++ // check that setting the same model as the completer's doesn't crash
++ QCompleter *completer = new QCompleter(&box);
++ box.setEditable(true);
++ box.setCompleter(completer);
++ auto *listModel = new QStringListModel({ "one", "two" }, completer);
++ completer->setModel(listModel);
++ QCOMPARE(listModel->rowCount(), 2); // make sure it wasn't deleted
++ box.setModel(listModel);
++ QCOMPARE(listModel->rowCount(), 2); // make sure it wasn't deleted
+ }
+
+ void tst_QComboBox::setCustomModelAndView()
+--
+2.36.0
+
+From 589101059ed97c1965ab81e5b0057656056400d7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?M=C3=A5rten=20Nordheim?= <marten.nordheim@qt.io>
+Date: Mon, 7 Mar 2022 11:21:49 +0100
+Subject: [PATCH 122/146] QHostInfo/Unix: Fix resolv never unloading
+
+Due to some unfortunate shadowing
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: Ib2660516f9ba9974c84a043bd2677b7890fc76f9
+Reviewed-by: Timur Pocheptsov <timur.pocheptsov@qt.io>
+(cherry picked from commit 567c31e8ee92a8071c731aac6fc6729d16d7439b)
+---
+ src/network/kernel/qhostinfo_unix.cpp | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/network/kernel/qhostinfo_unix.cpp b/src/network/kernel/qhostinfo_unix.cpp
+index 9b0a2ee669..73679c9ef1 100644
+--- a/src/network/kernel/qhostinfo_unix.cpp
++++ b/src/network/kernel/qhostinfo_unix.cpp
+@@ -122,7 +122,6 @@ static QFunctionPointer resolveSymbol(QLibrary &lib, const char *sym)
+
+ LibResolv::LibResolv()
+ {
+- QLibrary lib;
+ #ifdef LIBRESOLV_SO
+ lib.setFileName(QStringLiteral(LIBRESOLV_SO));
+ if (!lib.load())
+--
+2.36.0
+
+From 1f42ab8522c643b1faf1e11148d33b7161896978 Mon Sep 17 00:00:00 2001
+From: Kai Uwe Broulik <kde@privat.broulik.de>
+Date: Wed, 16 Mar 2022 12:35:20 +0100
+Subject: [PATCH 123/146] QAction: Add NOTIFY changed declaration to priority
+ property
+
+It already emits the signal and was merely missing the declaration.
+
+This fixes warnings about depending on non-NOTIFYable properties
+when binding to the priority property from QML.
+
+(cherry picked from commit e516a7bcf898919a908a0d8e0f389aba6059fb55)
+---
+ src/widgets/kernel/qaction.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/widgets/kernel/qaction.h b/src/widgets/kernel/qaction.h
+index 258a1ea0a0..737c1e8285 100644
+--- a/src/widgets/kernel/qaction.h
++++ b/src/widgets/kernel/qaction.h
+@@ -81,7 +81,7 @@ class Q_WIDGETS_EXPORT QAction : public QObject
+ Q_PROPERTY(MenuRole menuRole READ menuRole WRITE setMenuRole NOTIFY changed)
+ Q_PROPERTY(bool iconVisibleInMenu READ isIconVisibleInMenu WRITE setIconVisibleInMenu NOTIFY changed)
+ Q_PROPERTY(bool shortcutVisibleInContextMenu READ isShortcutVisibleInContextMenu WRITE setShortcutVisibleInContextMenu NOTIFY changed)
+- Q_PROPERTY(Priority priority READ priority WRITE setPriority)
++ Q_PROPERTY(Priority priority READ priority WRITE setPriority NOTIFY changed)
+
+ public:
+ // note this is copied into qplatformmenu.h, which must stay in sync
+--
+2.36.0
+
+From 5c6dc8de9ca23ec0fb8dd5d77cf4b8d9e68615df Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Andr=C3=A9=20Klitzing?= <aklitzing@gmail.com>
+Date: Mon, 28 Mar 2022 22:58:26 +0200
+Subject: [PATCH 124/146] Update bundled zlib to version 1.2.12
+
+The remaining diff to clean 1.2.12 is archived in the qtpatches.diff file.
+Also this fixes CVE-2018-25032.
+
+[ChangeLog][Third-Party Code] zlib was updated to version 1.2.12.
+
+Change-Id: Ifab5d57acdc90ace61f2fd22c6dbb7ec6b4ad319
+Pick-to: 6.2 6.3 6.3.0 5.15
+Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
+Reviewed-by: Kai Koehne <kai.koehne@qt.io>
+
+(cherry picked from commit a0a2bf2d95d4fcd468b6ce3c2e728d95425dd760)
+
+Actual patch contents are not from the cherry-pick but from https://download.qt.io/official_releases/qt/5.15/CVE-2018-25032-qtbase-5.15.diff
+---
+ src/3rdparty/zlib/qt_attribution.json | 4 +-
+ src/3rdparty/zlib/qtpatches.diff | 60 +-
+ src/3rdparty/zlib/src/ChangeLog | 163 +-
+ src/3rdparty/zlib/src/README | 11 +-
+ src/3rdparty/zlib/src/crc32.c | 1258 +++-
+ src/3rdparty/zlib/src/crc32.h | 9877 +++++++++++++++++++++++--
+ src/3rdparty/zlib/src/deflate.c | 108 +-
+ src/3rdparty/zlib/src/deflate.h | 27 +-
+ src/3rdparty/zlib/src/gzguts.h | 24 +-
+ src/3rdparty/zlib/src/gzlib.c | 8 +-
+ src/3rdparty/zlib/src/gzread.c | 12 +-
+ src/3rdparty/zlib/src/gzwrite.c | 38 +-
+ src/3rdparty/zlib/src/infback.c | 3 +-
+ src/3rdparty/zlib/src/inffast.c | 28 +-
+ src/3rdparty/zlib/src/inflate.c | 47 +-
+ src/3rdparty/zlib/src/inflate.h | 5 +-
+ src/3rdparty/zlib/src/inftrees.c | 6 +-
+ src/3rdparty/zlib/src/trees.c | 75 +-
+ src/3rdparty/zlib/src/zlib.h | 223 +-
+ src/3rdparty/zlib/src/zutil.c | 4 +-
+ src/3rdparty/zlib/src/zutil.h | 22 +-
+ 21 files changed, 10921 insertions(+), 1082 deletions(-)
+
+diff --git a/src/3rdparty/zlib/qt_attribution.json b/src/3rdparty/zlib/qt_attribution.json
+index ea3a476e7b..07bea6ba86 100644
+--- a/src/3rdparty/zlib/qt_attribution.json
++++ b/src/3rdparty/zlib/qt_attribution.json
+@@ -6,10 +6,10 @@
+
+ "Description": "zlib is a general purpose data compression library.",
+ "Homepage": "http://zlib.net/",
+- "Version": "1.2.11",
++ "Version": "1.2.12",
+
+ "License": "zlib License",
+ "LicenseId": "Zlib",
+ "LicenseFile": "LICENSE",
+- "Copyright": "(C) 1995-2017 Jean-loup Gailly and Mark Adler"
++ "Copyright": "(C) 1995-2022 Jean-loup Gailly and Mark Adler"
+ }
+diff --git a/src/3rdparty/zlib/qtpatches.diff b/src/3rdparty/zlib/qtpatches.diff
+index 105dda967c..681697afb0 100644
+--- a/src/3rdparty/zlib/qtpatches.diff
++++ b/src/3rdparty/zlib/qtpatches.diff
+@@ -1,21 +1,21 @@
+ diff -ruN orig/ChangeLog src/ChangeLog
+---- orig/ChangeLog 2017-08-03 08:25:11.347386101 +0200
+-+++ src/ChangeLog 2017-08-03 08:25:21.477268439 +0200
++--- orig/ChangeLog
+++++ src/ChangeLog
+ @@ -1,6 +1,10 @@
+
+ ChangeLog file for zlib
+
+-+Changes in 1.2.11 (Qt) (28 Jul 2017)
+++Changes in 1.2.12 (Qt) (28 Mar 2022)
+ +- This is a stripped down copy of zlib that contains patches to
+ + make it compile as part of Qt. See also "qtpatches.diff".
+ +
+- Changes in 1.2.11 (15 Jan 2017)
+- - Fix deflate stored bug when pulling last block from window
+- - Permit immediate deflateParams changes before any deflate input
++ Changes in 1.2.12 (27 Mar 2022)
++ - Cygwin does not have _wopen(), so do not create gzopen_w() there
++ - Permit a deflateParams() parameter change as soon as possible
+ diff -ruN orig/gzguts.h src/gzguts.h
+---- orig/gzguts.h 2017-08-03 08:25:11.347386101 +0200
+-+++ src/gzguts.h 2017-08-03 08:25:21.477268439 +0200
+-@@ -3,6 +3,15 @@
++--- orig/gzguts.h
+++++ src/gzguts.h
++@@ -3,6 +3,25 @@
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+@@ -26,6 +26,8 @@ diff -ruN orig/gzguts.h src/gzguts.h
+ +# ifndef _CRT_NONSTDC_NO_DEPRECATE
+ +# define _CRT_NONSTDC_NO_DEPRECATE
+ +# endif
+++// disable warnings like '=': conversion from 'size_t' to 'unsigned int', possible loss of data
+++# pragma warning(disable: 4267; disable: 4244)
+ +#endif
+ +
+ #ifdef _LARGEFILE64_SOURCE
+@@ -43,13 +45,12 @@ diff -ruN orig/gzguts.h src/gzguts.h
+ +#define HAVE_HIDDEN
+ +#endif
+ +
+-+
+- #ifdef HAVE_HIDDEN
+- # define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
+- #else
++ #ifdef _LARGEFILE64_SOURCE
++ # ifndef _LARGEFILE_SOURCE
++ # define _LARGEFILE_SOURCE 1
+ diff -ruN orig/README src/README
+---- orig/README 2017-08-03 08:25:11.347386101 +0200
+-+++ src/README 2017-08-03 08:25:21.477268439 +0200
++--- orig/README
+++++ src/README
+ @@ -6,6 +6,9 @@
+ http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and
+ rfc1952 (gzip format).
+@@ -61,8 +62,8 @@ diff -ruN orig/README src/README
+ (volunteer to write man pages welcome, contact zlib@gzip.org). A usage example
+ of the library is given in the file test/example.c which also tests that
+ diff -ruN orig/zconf.h src/zconf.h
+---- orig/zconf.h 2017-08-03 08:25:11.347386101 +0200
+-+++ src/zconf.h 2017-08-03 08:25:21.477268439 +0200
++--- orig/zconf.h
+++++ src/zconf.h
+ @@ -8,6 +8,9 @@
+ #ifndef ZCONF_H
+ #define ZCONF_H
+@@ -91,9 +92,9 @@ diff -ruN orig/zconf.h src/zconf.h
+ #endif
+
+ diff -ruN orig/zlib.h src/zlib.h
+---- orig/zlib.h 2017-08-03 08:25:11.347386101 +0200
+-+++ src/zlib.h 2017-08-03 08:25:21.480601733 +0200
+-@@ -33,12 +33,16 @@
++--- orig/zlib.h
+++++ src/zlib.h
++@@ -33,11 +33,15 @@
+
+ #include "zconf.h"
+
+@@ -105,17 +106,15 @@ diff -ruN orig/zlib.h src/zlib.h
+ extern "C" {
+ #endif
+
+--#define ZLIB_VERSION "1.2.11"
+--#define ZLIB_VERNUM 0x12b0
+-+#define ZLIB_VERSION "1.2.11 (Qt)"
+-+#define ZLIB_VERNUM 0x12b0f
++-#define ZLIB_VERSION "1.2.12"
+++#define ZLIB_VERSION "1.2.12 (Qt)"
++ #define ZLIB_VERNUM 0x12c0
+ #define ZLIB_VER_MAJOR 1
+ #define ZLIB_VER_MINOR 2
+- #define ZLIB_VER_REVISION 11
+ diff -ruN orig/zutil.h src/zutil.h
+---- orig/zutil.h 2017-08-03 08:25:11.347386101 +0200
+-+++ src/zutil.h 2017-08-03 08:30:04.490657570 +0200
+-@@ -13,6 +13,15 @@
++--- orig/zutil.h
+++++ src/zutil.h
++@@ -13,6 +13,14 @@
+ #ifndef ZUTIL_H
+ #define ZUTIL_H
+
+@@ -126,12 +125,11 @@ diff -ruN orig/zutil.h src/zutil.h
+ +#ifdef QT_VISIBILITY_AVAILABLE
+ +#define HAVE_HIDDEN
+ +#endif
+-+
+ +
+ #ifdef HAVE_HIDDEN
+ # define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
+ #else
+-@@ -136,6 +145,11 @@
++@@ -143,6 +151,11 @@
+ # if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
+ # include <unix.h> /* for fdopen */
+ # else
+@@ -143,7 +141,7 @@ diff -ruN orig/zutil.h src/zutil.h
+ # ifndef fdopen
+ # define fdopen(fd,mode) NULL /* No fdopen() */
+ # endif
+-@@ -159,7 +173,7 @@
++@@ -166,7 +179,7 @@
+ # define OS_CODE 18
+ #endif
+
+diff --git a/src/3rdparty/zlib/src/ChangeLog b/src/3rdparty/zlib/src/ChangeLog
+index 251a32262f..14939b2025 100644
+--- a/src/3rdparty/zlib/src/ChangeLog
++++ b/src/3rdparty/zlib/src/ChangeLog
+@@ -1,10 +1,73 @@
+
+ ChangeLog file for zlib
+
+-Changes in 1.2.11 (Qt) (28 Jul 2017)
++Changes in 1.2.12 (Qt) (28 Mar 2022)
+ - This is a stripped down copy of zlib that contains patches to
+ make it compile as part of Qt. See also "qtpatches.diff".
+
++Changes in 1.2.12 (27 Mar 2022)
++- Cygwin does not have _wopen(), so do not create gzopen_w() there
++- Permit a deflateParams() parameter change as soon as possible
++- Limit hash table inserts after switch from stored deflate
++- Fix bug when window full in deflate_stored()
++- Fix CLEAR_HASH macro to be usable as a single statement
++- Avoid a conversion error in gzseek when off_t type too small
++- Have Makefile return non-zero error code on test failure
++- Avoid some conversion warnings in gzread.c and gzwrite.c
++- Update use of errno for newer Windows CE versions
++- Small speedup to inflate [psumbera]
++- Return an error if the gzputs string length can't fit in an int
++- Add address checking in clang to -w option of configure
++- Don't compute check value for raw inflate if asked to validate
++- Handle case where inflateSync used when header never processed
++- Avoid the use of ptrdiff_t
++- Avoid an undefined behavior of memcpy() in gzappend()
++- Avoid undefined behaviors of memcpy() in gz*printf()
++- Avoid an undefined behavior of memcpy() in _tr_stored_block()
++- Make the names in functions declarations identical to definitions
++- Remove old assembler code in which bugs have manifested
++- Fix deflateEnd() to not report an error at start of raw deflate
++- Add legal disclaimer to README
++- Emphasize the need to continue decompressing gzip members
++- Correct the initialization requirements for deflateInit2()
++- Fix a bug that can crash deflate on some input when using Z_FIXED
++- Assure that the number of bits for deflatePrime() is valid
++- Use a structure to make globals in enough.c evident
++- Use a macro for the printf format of big_t in enough.c
++- Clean up code style in enough.c, update version
++- Use inline function instead of macro for index in enough.c
++- Clarify that prefix codes are counted in enough.c
++- Show all the codes for the maximum tables size in enough.c
++- Add gznorm.c example, which normalizes gzip files
++- Fix the zran.c example to work on a multiple-member gzip file
++- Add tables for crc32_combine(), to speed it up by a factor of 200
++- Add crc32_combine_gen() and crc32_combine_op() for fast combines
++- Speed up software CRC-32 computation by a factor of 1.5 to 3
++- Use atomic test and set, if available, for dynamic CRC tables
++- Don't bother computing check value after successful inflateSync()
++- Correct comment in crc32.c
++- Add use of the ARMv8 crc32 instructions when requested
++- Use ARM crc32 instructions if the ARM architecture has them
++- Explicitly note that the 32-bit check values are 32 bits
++- Avoid adding empty gzip member after gzflush with Z_FINISH
++- Fix memory leak on error in gzlog.c
++- Fix error in comment on the polynomial representation of a byte
++- Clarify gz* function interfaces, referring to parameter names
++- Change macro name in inflate.c to avoid collision in VxWorks
++- Correct typo in blast.c
++- Improve portability of contrib/minizip
++- Fix indentation in minizip's zip.c
++- Replace black/white with allow/block. (theresa-m)
++- minizip warning fix if MAXU32 already defined. (gvollant)
++- Fix unztell64() in minizip to work past 4GB. (Daniël Hörchner)
++- Clean up minizip to reduce warnings for testing
++- Add fallthrough comments for gcc
++- Eliminate use of ULL constants
++- Separate out address sanitizing from warnings in configure
++- Remove destructive aspects of make distclean
++- Check for cc masquerading as gcc or clang in configure
++- Fix crc32.c to compile local functions only if used
++
+ Changes in 1.2.11 (15 Jan 2017)
+ - Fix deflate stored bug when pulling last block from window
+ - Permit immediate deflateParams changes before any deflate input
+@@ -515,7 +578,7 @@ Changes in 1.2.3.5 (8 Jan 2010)
+ - Don't use _vsnprintf on later versions of MSVC [Lowman]
+ - Add CMake build script and input file [Lowman]
+ - Update contrib/minizip to 1.1 [Svensson, Vollant]
+-- Moved nintendods directory from contrib to .
++- Moved nintendods directory from contrib to root
+ - Replace gzio.c with a new set of routines with the same functionality
+ - Add gzbuffer(), gzoffset(), gzclose_r(), gzclose_w() as part of above
+ - Update contrib/minizip to 1.1b
+@@ -689,7 +752,7 @@ Changes in 1.2.2.4 (11 July 2005)
+ - Be more strict on incomplete code sets in inflate_table() and increase
+ ENOUGH and MAXD -- this repairs a possible security vulnerability for
+ invalid inflate input. Thanks to Tavis Ormandy and Markus Oberhumer for
+- discovering the vulnerability and providing test cases.
++ discovering the vulnerability and providing test cases
+ - Add ia64 support to configure for HP-UX [Smith]
+ - Add error return to gzread() for format or i/o error [Levin]
+ - Use malloc.h for OS/2 [Necasek]
+@@ -725,7 +788,7 @@ Changes in 1.2.2.2 (30 December 2004)
+ - Add Z_FIXED strategy option to deflateInit2() to force fixed trees
+ - Add updated make_vms.com [Coghlan], update README
+ - Create a new "examples" directory, move gzappend.c there, add zpipe.c,
+- fitblk.c, gzlog.[ch], gzjoin.c, and zlib_how.html.
++ fitblk.c, gzlog.[ch], gzjoin.c, and zlib_how.html
+ - Add FAQ entry and comments in deflate.c on uninitialized memory access
+ - Add Solaris 9 make options in configure [Gilbert]
+ - Allow strerror() usage in gzio.c for STDC
+@@ -796,7 +859,7 @@ Changes in 1.2.1.1 (9 January 2004)
+ - Fix a big fat bug in inftrees.c that prevented decoding valid
+ dynamic blocks with only literals and no distance codes --
+ Thanks to "Hot Emu" for the bug report and sample file
+-- Add a note to puff.c on no distance codes case.
++- Add a note to puff.c on no distance codes case
+
+ Changes in 1.2.1 (17 November 2003)
+ - Remove a tab in contrib/gzappend/gzappend.c
+@@ -1040,14 +1103,14 @@ Changes in 1.2.0 (9 March 2003)
+ - Add contrib/puff/ simple inflate for deflate format description
+
+ Changes in 1.1.4 (11 March 2002)
+-- ZFREE was repeated on same allocation on some error conditions.
++- ZFREE was repeated on same allocation on some error conditions
+ This creates a security problem described in
+ http://www.zlib.org/advisory-2002-03-11.txt
+ - Returned incorrect error (Z_MEM_ERROR) on some invalid data
+ - Avoid accesses before window for invalid distances with inflate window
+- less than 32K.
++ less than 32K
+ - force windowBits > 8 to avoid a bug in the encoder for a window size
+- of 256 bytes. (A complete fix will be available in 1.1.5).
++ of 256 bytes. (A complete fix will be available in 1.1.5)
+
+ Changes in 1.1.3 (9 July 1998)
+ - fix "an inflate input buffer bug that shows up on rare but persistent
+@@ -1121,7 +1184,7 @@ Changes in 1.1.1 (27 Feb 98)
+ - remove block truncation heuristic which had very marginal effect for zlib
+ (smaller lit_bufsize than in gzip 1.2.4) and degraded a little the
+ compression ratio on some files. This also allows inlining _tr_tally for
+- matches in deflate_slow.
++ matches in deflate_slow
+ - added msdos/Makefile.w32 for WIN32 Microsoft Visual C++ (Bob Frazier)
+
+ Changes in 1.1.0 (24 Feb 98)
+@@ -1166,7 +1229,7 @@ Changes in 1.0.8 (27 Jan 1998)
+ - include sys/types.h to get off_t on some systems (Marc Lehmann & QingLong)
+ - use constant arrays for the static trees in trees.c instead of computing
+ them at run time (thanks to Ken Raeburn for this suggestion). To create
+- trees.h, compile with GEN_TREES_H and run "make test".
++ trees.h, compile with GEN_TREES_H and run "make test"
+ - check return code of example in "make test" and display result
+ - pass minigzip command line options to file_compress
+ - simplifying code of inflateSync to avoid gcc 2.8 bug
+@@ -1205,12 +1268,12 @@ Changes in 1.0.6 (19 Jan 1998)
+ - add functions gzprintf, gzputc, gzgetc, gztell, gzeof, gzseek, gzrewind and
+ gzsetparams (thanks to Roland Giersig and Kevin Ruland for some of this code)
+ - Fix a deflate bug occurring only with compression level 0 (thanks to
+- Andy Buckler for finding this one).
+-- In minigzip, pass transparently also the first byte for .Z files.
++ Andy Buckler for finding this one)
++- In minigzip, pass transparently also the first byte for .Z files
+ - return Z_BUF_ERROR instead of Z_OK if output buffer full in uncompress()
+ - check Z_FINISH in inflate (thanks to Marc Schluper)
+ - Implement deflateCopy (thanks to Adam Costello)
+-- make static libraries by default in configure, add --shared option.
++- make static libraries by default in configure, add --shared option
+ - move MSDOS or Windows specific files to directory msdos
+ - suppress the notion of partial flush to simplify the interface
+ (but the symbol Z_PARTIAL_FLUSH is kept for compatibility with 1.0.4)
+@@ -1222,7 +1285,7 @@ Changes in 1.0.6 (19 Jan 1998)
+ - added Makefile.nt (thanks to Stephen Williams)
+ - added the unsupported "contrib" directory:
+ contrib/asm386/ by Gilles Vollant <info@winimage.com>
+- 386 asm code replacing longest_match().
++ 386 asm code replacing longest_match()
+ contrib/iostream/ by Kevin Ruland <kevin@rodin.wustl.edu>
+ A C++ I/O streams interface to the zlib gz* functions
+ contrib/iostream2/ by Tyge Løvset <Tyge.Lovset@cmr.no>
+@@ -1230,7 +1293,7 @@ Changes in 1.0.6 (19 Jan 1998)
+ contrib/untgz/ by "Pedro A. Aranda Guti\irrez" <paag@tid.es>
+ A very simple tar.gz file extractor using zlib
+ contrib/visual-basic.txt by Carlos Rios <c_rios@sonda.cl>
+- How to use compress(), uncompress() and the gz* functions from VB.
++ How to use compress(), uncompress() and the gz* functions from VB
+ - pass params -f (filtered data), -h (huffman only), -1 to -9 (compression
+ level) in minigzip (thanks to Tom Lane)
+
+@@ -1239,8 +1302,8 @@ Changes in 1.0.6 (19 Jan 1998)
+ - add undocumented function inflateSyncPoint() (hack for Paul Mackerras)
+ - add undocumented function zError to convert error code to string
+ (for Tim Smithers)
+-- Allow compilation of gzio with -DNO_DEFLATE to avoid the compression code.
+-- Use default memcpy for Symantec MSDOS compiler.
++- Allow compilation of gzio with -DNO_DEFLATE to avoid the compression code
++- Use default memcpy for Symantec MSDOS compiler
+ - Add EXPORT keyword for check_func (needed for Windows DLL)
+ - add current directory to LD_LIBRARY_PATH for "make test"
+ - create also a link for libz.so.1
+@@ -1253,7 +1316,7 @@ Changes in 1.0.6 (19 Jan 1998)
+ - allow compilation with ANSI keywords only enabled for TurboC in large model
+ - avoid "versionString"[0] (Borland bug)
+ - add NEED_DUMMY_RETURN for Borland
+-- use variable z_verbose for tracing in debug mode (L. Peter Deutsch).
++- use variable z_verbose for tracing in debug mode (L. Peter Deutsch)
+ - allow compilation with CC
+ - defined STDC for OS/2 (David Charlap)
+ - limit external names to 8 chars for MVS (Thomas Lund)
+@@ -1263,7 +1326,7 @@ Changes in 1.0.6 (19 Jan 1998)
+ - use _fdopen instead of fdopen for MSC >= 6.0 (Thomas Fanslau)
+ - added makelcc.bat for lcc-win32 (Tom St Denis)
+ - in Makefile.dj2, use copy and del instead of install and rm (Frank Donahoe)
+-- Avoid expanded $Id$. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion.
++- Avoid expanded $Id$. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion
+ - check for unistd.h in configure (for off_t)
+ - remove useless check parameter in inflate_blocks_free
+ - avoid useless assignment of s->check to itself in inflate_blocks_new
+@@ -1284,7 +1347,7 @@ Changes in 1.0.5 (3 Jan 98)
+ Changes in 1.0.4 (24 Jul 96)
+ - In very rare conditions, deflate(s, Z_FINISH) could fail to produce an EOF
+ bit, so the decompressor could decompress all the correct data but went
+- on to attempt decompressing extra garbage data. This affected minigzip too.
++ on to attempt decompressing extra garbage data. This affected minigzip too
+ - zlibVersion and gzerror return const char* (needed for DLL)
+ - port to RISCOS (no fdopen, no multiple dots, no unlink, no fileno)
+ - use z_error only for DEBUG (avoid problem with DLLs)
+@@ -1314,7 +1377,7 @@ Changes in 1.0.1 (20 May 96) [1.0 skipped to avoid confusion]
+ - fix array overlay in deflate.c which sometimes caused bad compressed data
+ - fix inflate bug with empty stored block
+ - fix MSDOS medium model which was broken in 0.99
+-- fix deflateParams() which could generate bad compressed data.
++- fix deflateParams() which could generate bad compressed data
+ - Bytef is define'd instead of typedef'ed (work around Borland bug)
+ - added an INDEX file
+ - new makefiles for DJGPP (Makefile.dj2), 32-bit Borland (Makefile.b32),
+@@ -1335,7 +1398,7 @@ Changes in 0.99 (27 Jan 96)
+ - allow preset dictionary shared between compressor and decompressor
+ - allow compression level 0 (no compression)
+ - add deflateParams in zlib.h: allow dynamic change of compression level
+- and compression strategy.
++ and compression strategy
+ - test large buffers and deflateParams in example.c
+ - add optional "configure" to build zlib as a shared library
+ - suppress Makefile.qnx, use configure instead
+@@ -1377,30 +1440,30 @@ Changes in 0.99 (27 Jan 96)
+ - use STDC instead of __GO32__ to avoid redeclaring exit, calloc, etc...
+ - use Z_BINARY instead of BINARY
+ - document that gzclose after gzdopen will close the file
+-- allow "a" as mode in gzopen.
++- allow "a" as mode in gzopen
+ - fix error checking in gzread
+ - allow skipping .gz extra-field on pipes
+ - added reference to Perl interface in README
+ - put the crc table in FAR data (I dislike more and more the medium model :)
+ - added get_crc_table
+-- added a dimension to all arrays (Borland C can't count).
++- added a dimension to all arrays (Borland C can't count)
+ - workaround Borland C bug in declaration of inflate_codes_new & inflate_fast
+ - guard against multiple inclusion of *.h (for precompiled header on Mac)
+-- Watcom C pretends to be Microsoft C small model even in 32 bit mode.
++- Watcom C pretends to be Microsoft C small model even in 32 bit mode
+ - don't use unsized arrays to avoid silly warnings by Visual C++:
+ warning C4746: 'inflate_mask' : unsized array treated as '__far'
+- (what's wrong with far data in far model?).
++ (what's wrong with far data in far model?)
+ - define enum out of inflate_blocks_state to allow compilation with C++
+
+ Changes in 0.95 (16 Aug 95)
+ - fix MSDOS small and medium model (now easier to adapt to any compiler)
+ - inlined send_bits
+ - fix the final (:-) bug for deflate with flush (output was correct but
+- not completely flushed in rare occasions).
++ not completely flushed in rare occasions)
+ - default window size is same for compression and decompression
+- (it's now sufficient to set MAX_WBITS in zconf.h).
++ (it's now sufficient to set MAX_WBITS in zconf.h)
+ - voidp -> voidpf and voidnp -> voidp (for consistency with other
+- typedefs and because voidnp was not near in large model).
++ typedefs and because voidnp was not near in large model)
+
+ Changes in 0.94 (13 Aug 95)
+ - support MSDOS medium model
+@@ -1409,12 +1472,12 @@ Changes in 0.94 (13 Aug 95)
+ - added support for VMS
+ - allow a compression level in gzopen()
+ - gzflush now calls fflush
+-- For deflate with flush, flush even if no more input is provided.
++- For deflate with flush, flush even if no more input is provided
+ - rename libgz.a as libz.a
+ - avoid complex expression in infcodes.c triggering Turbo C bug
+ - work around a problem with gcc on Alpha (in INSERT_STRING)
+ - don't use inline functions (problem with some gcc versions)
+-- allow renaming of Byte, uInt, etc... with #define.
++- allow renaming of Byte, uInt, etc... with #define
+ - avoid warning about (unused) pointer before start of array in deflate.c
+ - avoid various warnings in gzio.c, example.c, infblock.c, adler32.c, zutil.c
+ - avoid reserved word 'new' in trees.c
+@@ -1433,7 +1496,7 @@ Changes in 0.92 (3 May 95)
+ - no memcpy on Pyramid
+ - suppressed inftest.c
+ - optimized fill_window, put longest_match inline for gcc
+-- optimized inflate on stored blocks.
++- optimized inflate on stored blocks
+ - untabify all sources to simplify patches
+
+ Changes in 0.91 (2 May 95)
+@@ -1451,7 +1514,7 @@ Changes in 0.9 (1 May 95)
+ - let again gzread copy uncompressed data unchanged (was working in 0.71)
+ - deflate(Z_FULL_FLUSH), inflateReset and inflateSync are now fully implemented
+ - added a test of inflateSync in example.c
+-- moved MAX_WBITS to zconf.h because users might want to change that.
++- moved MAX_WBITS to zconf.h because users might want to change that
+ - document explicitly that zalloc(64K) on MSDOS must return a normalized
+ pointer (zero offset)
+ - added Makefiles for Microsoft C, Turbo C, Borland C++
+@@ -1460,7 +1523,7 @@ Changes in 0.9 (1 May 95)
+ Changes in 0.8 (29 April 95)
+ - added fast inflate (inffast.c)
+ - deflate(Z_FINISH) now returns Z_STREAM_END when done. Warning: this
+- is incompatible with previous versions of zlib which returned Z_OK.
++ is incompatible with previous versions of zlib which returned Z_OK
+ - work around a TurboC compiler bug (bad code for b << 0, see infutil.h)
+ (actually that was not a compiler bug, see 0.81 above)
+ - gzread no longer reads one extra byte in certain cases
+@@ -1470,50 +1533,50 @@ Changes in 0.8 (29 April 95)
+
+ Changes in 0.71 (14 April 95)
+ - Fixed more MSDOS compilation problems :( There is still a bug with
+- TurboC large model.
++ TurboC large model
+
+ Changes in 0.7 (14 April 95)
+-- Added full inflate support.
++- Added full inflate support
+ - Simplified the crc32() interface. The pre- and post-conditioning
+ (one's complement) is now done inside crc32(). WARNING: this is
+- incompatible with previous versions; see zlib.h for the new usage.
++ incompatible with previous versions; see zlib.h for the new usage
+
+ Changes in 0.61 (12 April 95)
+-- workaround for a bug in TurboC. example and minigzip now work on MSDOS.
++- workaround for a bug in TurboC. example and minigzip now work on MSDOS
+
+ Changes in 0.6 (11 April 95)
+ - added minigzip.c
+ - added gzdopen to reopen a file descriptor as gzFile
+-- added transparent reading of non-gziped files in gzread.
++- added transparent reading of non-gziped files in gzread
+ - fixed bug in gzread (don't read crc as data)
+-- fixed bug in destroy (gzio.c) (don't return Z_STREAM_END for gzclose).
++- fixed bug in destroy (gzio.c) (don't return Z_STREAM_END for gzclose)
+ - don't allocate big arrays in the stack (for MSDOS)
+ - fix some MSDOS compilation problems
+
+ Changes in 0.5:
+ - do real compression in deflate.c. Z_PARTIAL_FLUSH is supported but
+- not yet Z_FULL_FLUSH.
++ not yet Z_FULL_FLUSH
+ - support decompression but only in a single step (forced Z_FINISH)
+-- added opaque object for zalloc and zfree.
++- added opaque object for zalloc and zfree
+ - added deflateReset and inflateReset
+-- added a variable zlib_version for consistency checking.
+-- renamed the 'filter' parameter of deflateInit2 as 'strategy'.
+- Added Z_FILTERED and Z_HUFFMAN_ONLY constants.
++- added a variable zlib_version for consistency checking
++- renamed the 'filter' parameter of deflateInit2 as 'strategy'
++ Added Z_FILTERED and Z_HUFFMAN_ONLY constants
+
+ Changes in 0.4:
+-- avoid "zip" everywhere, use zlib instead of ziplib.
++- avoid "zip" everywhere, use zlib instead of ziplib
+ - suppress Z_BLOCK_FLUSH, interpret Z_PARTIAL_FLUSH as block flush
+- if compression method == 8.
++ if compression method == 8
+ - added adler32 and crc32
+ - renamed deflateOptions as deflateInit2, call one or the other but not both
+-- added the method parameter for deflateInit2.
++- added the method parameter for deflateInit2
+ - added inflateInit2
+ - simplied considerably deflateInit and inflateInit by not supporting
+ user-provided history buffer. This is supported only in deflateInit2
+- and inflateInit2.
++ and inflateInit2
+
+ Changes in 0.3:
+ - prefix all macro names with Z_
+-- use Z_FINISH instead of deflateEnd to finish compression.
++- use Z_FINISH instead of deflateEnd to finish compression
+ - added Z_HUFFMAN_ONLY
+ - added gzerror()
+diff --git a/src/3rdparty/zlib/src/README b/src/3rdparty/zlib/src/README
+index 4dc7436a3b..1e4f39181d 100644
+--- a/src/3rdparty/zlib/src/README
++++ b/src/3rdparty/zlib/src/README
+@@ -1,6 +1,6 @@
+ ZLIB DATA COMPRESSION LIBRARY
+
+-zlib 1.2.11 is a general purpose data compression library. All the code is
++zlib 1.2.12 is a general purpose data compression library. All the code is
+ thread safe. The data format used by the zlib library is described by RFCs
+ (Request for Comments) 1950 to 1952 in the files
+ http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and
+@@ -34,7 +34,7 @@ Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997
+ issue of Dr. Dobb's Journal; a copy of the article is available at
+ http://marknelson.us/1997/01/01/zlib-engine/ .
+
+-The changes made in version 1.2.11 are documented in the file ChangeLog.
++The changes made in version 1.2.12 are documented in the file ChangeLog.
+
+ Unsupported third party contributions are provided in directory contrib/ .
+
+@@ -87,7 +87,7 @@ Acknowledgments:
+
+ Copyright notice:
+
+- (C) 1995-2017 Jean-loup Gailly and Mark Adler
++ (C) 1995-2022 Jean-loup Gailly and Mark Adler
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+@@ -111,7 +111,10 @@ Copyright notice:
+ If you use the zlib library in a product, we would appreciate *not* receiving
+ lengthy legal documents to sign. The sources are provided for free but without
+ warranty of any kind. The library has been entirely written by Jean-loup
+-Gailly and Mark Adler; it does not include third-party code.
++Gailly and Mark Adler; it does not include third-party code. We make all
++contributions to and distributions of this project solely in our personal
++capacity, and are not conveying any rights to any intellectual property of
++any third parties.
+
+ If you redistribute modified sources, we would appreciate that you include in
+ the file ChangeLog history information documenting your changes. Please read
+diff --git a/src/3rdparty/zlib/src/crc32.c b/src/3rdparty/zlib/src/crc32.c
+index 9580440c0e..a1bdce5c23 100644
+--- a/src/3rdparty/zlib/src/crc32.c
++++ b/src/3rdparty/zlib/src/crc32.c
+@@ -1,12 +1,10 @@
+ /* crc32.c -- compute the CRC-32 of a data stream
+- * Copyright (C) 1995-2006, 2010, 2011, 2012, 2016 Mark Adler
++ * Copyright (C) 1995-2022 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ *
+- * Thanks to Rodney Brown <rbrown64@csc.com.au> for his contribution of faster
+- * CRC methods: exclusive-oring 32 bits of data at a time, and pre-computing
+- * tables for updating the shift register in one step with three exclusive-ors
+- * instead of four steps with four exclusive-ors. This results in about a
+- * factor of two increase in speed on a Power PC G4 (PPC7455) using gcc -O3.
++ * This interleaved implementation of a CRC makes use of pipelined multiple
++ * arithmetic-logic units, commonly found in modern CPU cores. It is due to
++ * Kadatch and Jenkins (2010). See doc/crc-doc.1.0.pdf in this distribution.
+ */
+
+ /* @(#) $Id$ */
+@@ -14,11 +12,12 @@
+ /*
+ Note on the use of DYNAMIC_CRC_TABLE: there is no mutex or semaphore
+ protection on the static variables used to control the first-use generation
+- of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should
++ of the crc tables. Therefore, if you #define DYNAMIC_CRC_TABLE, you should
+ first call get_crc_table() to initialize the tables before allowing more than
+ one thread to use crc32().
+
+- DYNAMIC_CRC_TABLE and MAKECRCH can be #defined to write out crc32.h.
++ MAKECRCH can be #defined to write out crc32.h. A main() routine is also
++ produced, so that this one source file can be compiled to an executable.
+ */
+
+ #ifdef MAKECRCH
+@@ -28,415 +27,1090 @@
+ # endif /* !DYNAMIC_CRC_TABLE */
+ #endif /* MAKECRCH */
+
+-#include "zutil.h" /* for STDC and FAR definitions */
++#include "zutil.h" /* for Z_U4, Z_U8, z_crc_t, and FAR definitions */
+
+-/* Definitions for doing the crc four data bytes at a time. */
+-#if !defined(NOBYFOUR) && defined(Z_U4)
+-# define BYFOUR
++ /*
++ A CRC of a message is computed on N braids of words in the message, where
++ each word consists of W bytes (4 or 8). If N is 3, for example, then three
++ running sparse CRCs are calculated respectively on each braid, at these
++ indices in the array of words: 0, 3, 6, ..., 1, 4, 7, ..., and 2, 5, 8, ...
++ This is done starting at a word boundary, and continues until as many blocks
++ of N * W bytes as are available have been processed. The results are combined
++ into a single CRC at the end. For this code, N must be in the range 1..6 and
++ W must be 4 or 8. The upper limit on N can be increased if desired by adding
++ more #if blocks, extending the patterns apparent in the code. In addition,
++ crc32.h would need to be regenerated, if the maximum N value is increased.
++
++ N and W are chosen empirically by benchmarking the execution time on a given
++ processor. The choices for N and W below were based on testing on Intel Kaby
++ Lake i7, AMD Ryzen 7, ARM Cortex-A57, Sparc64-VII, PowerPC POWER9, and MIPS64
++ Octeon II processors. The Intel, AMD, and ARM processors were all fastest
++ with N=5, W=8. The Sparc, PowerPC, and MIPS64 were all fastest at N=5, W=4.
++ They were all tested with either gcc or clang, all using the -O3 optimization
++ level. Your mileage may vary.
++ */
++
++/* Define N */
++#ifdef Z_TESTN
++# define N Z_TESTN
++#else
++# define N 5
++#endif
++#if N < 1 || N > 6
++# error N must be in 1..6
+ #endif
+-#ifdef BYFOUR
+- local unsigned long crc32_little OF((unsigned long,
+- const unsigned char FAR *, z_size_t));
+- local unsigned long crc32_big OF((unsigned long,
+- const unsigned char FAR *, z_size_t));
+-# define TBLS 8
++
++/*
++ z_crc_t must be at least 32 bits. z_word_t must be at least as long as
++ z_crc_t. It is assumed here that z_word_t is either 32 bits or 64 bits, and
++ that bytes are eight bits.
++ */
++
++/*
++ Define W and the associated z_word_t type. If W is not defined, then a
++ braided calculation is not used, and the associated tables and code are not
++ compiled.
++ */
++#ifdef Z_TESTW
++# if Z_TESTW-1 != -1
++# define W Z_TESTW
++# endif
+ #else
+-# define TBLS 1
+-#endif /* BYFOUR */
++# ifdef MAKECRCH
++# define W 8 /* required for MAKECRCH */
++# else
++# if defined(__x86_64__) || defined(__aarch64__)
++# define W 8
++# else
++# define W 4
++# endif
++# endif
++#endif
++#ifdef W
++# if W == 8 && defined(Z_U8)
++ typedef Z_U8 z_word_t;
++# elif defined(Z_U4)
++# undef W
++# define W 4
++ typedef Z_U4 z_word_t;
++# else
++# undef W
++# endif
++#endif
+
+-/* Local functions for crc concatenation */
+-local unsigned long gf2_matrix_times OF((unsigned long *mat,
+- unsigned long vec));
+-local void gf2_matrix_square OF((unsigned long *square, unsigned long *mat));
+-local uLong crc32_combine_ OF((uLong crc1, uLong crc2, z_off64_t len2));
++/* Local functions. */
++local z_crc_t multmodp OF((z_crc_t a, z_crc_t b));
++local z_crc_t x2nmodp OF((z_off64_t n, unsigned k));
+
++/* If available, use the ARM processor CRC32 instruction. */
++#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) && W == 8
++# define ARMCRC32
++#endif
++
++#if defined(W) && (!defined(ARMCRC32) || defined(DYNAMIC_CRC_TABLE))
++/*
++ Swap the bytes in a z_word_t to convert between little and big endian. Any
++ self-respecting compiler will optimize this to a single machine byte-swap
++ instruction, if one is available. This assumes that word_t is either 32 bits
++ or 64 bits.
++ */
++local z_word_t byte_swap(word)
++ z_word_t word;
++{
++# if W == 8
++ return
++ (word & 0xff00000000000000) >> 56 |
++ (word & 0xff000000000000) >> 40 |
++ (word & 0xff0000000000) >> 24 |
++ (word & 0xff00000000) >> 8 |
++ (word & 0xff000000) << 8 |
++ (word & 0xff0000) << 24 |
++ (word & 0xff00) << 40 |
++ (word & 0xff) << 56;
++# else /* W == 4 */
++ return
++ (word & 0xff000000) >> 24 |
++ (word & 0xff0000) >> 8 |
++ (word & 0xff00) << 8 |
++ (word & 0xff) << 24;
++# endif
++}
++#endif
++
++/* CRC polynomial. */
++#define POLY 0xedb88320 /* p(x) reflected, with x^32 implied */
+
+ #ifdef DYNAMIC_CRC_TABLE
+
+-local volatile int crc_table_empty = 1;
+-local z_crc_t FAR crc_table[TBLS][256];
++local z_crc_t FAR crc_table[256];
++local z_crc_t FAR x2n_table[32];
+ local void make_crc_table OF((void));
++#ifdef W
++ local z_word_t FAR crc_big_table[256];
++ local z_crc_t FAR crc_braid_table[W][256];
++ local z_word_t FAR crc_braid_big_table[W][256];
++ local void braid OF((z_crc_t [][256], z_word_t [][256], int, int));
++#endif
+ #ifdef MAKECRCH
+- local void write_table OF((FILE *, const z_crc_t FAR *));
++ local void write_table OF((FILE *, const z_crc_t FAR *, int));
++ local void write_table32hi OF((FILE *, const z_word_t FAR *, int));
++ local void write_table64 OF((FILE *, const z_word_t FAR *, int));
+ #endif /* MAKECRCH */
++
++/*
++ Define a once() function depending on the availability of atomics. If this is
++ compiled with DYNAMIC_CRC_TABLE defined, and if CRCs will be computed in
++ multiple threads, and if atomics are not available, then get_crc_table() must
++ be called to initialize the tables and must return before any threads are
++ allowed to compute or combine CRCs.
++ */
++
++/* Definition of once functionality. */
++typedef struct once_s once_t;
++local void once OF((once_t *, void (*)(void)));
++
++/* Check for the availability of atomics. */
++#if defined(__STDC__) && __STDC_VERSION__ >= 201112L && \
++ !defined(__STDC_NO_ATOMICS__)
++
++#include <stdatomic.h>
++
++/* Structure for once(), which must be initialized with ONCE_INIT. */
++struct once_s {
++ atomic_flag begun;
++ atomic_int done;
++};
++#define ONCE_INIT {ATOMIC_FLAG_INIT, 0}
++
++/*
++ Run the provided init() function exactly once, even if multiple threads
++ invoke once() at the same time. The state must be a once_t initialized with
++ ONCE_INIT.
++ */
++local void once(state, init)
++ once_t *state;
++ void (*init)(void);
++{
++ if (!atomic_load(&state->done)) {
++ if (atomic_flag_test_and_set(&state->begun))
++ while (!atomic_load(&state->done))
++ ;
++ else {
++ init();
++ atomic_store(&state->done, 1);
++ }
++ }
++}
++
++#else /* no atomics */
++
++/* Structure for once(), which must be initialized with ONCE_INIT. */
++struct once_s {
++ volatile int begun;
++ volatile int done;
++};
++#define ONCE_INIT {0, 0}
++
++/* Test and set. Alas, not atomic, but tries to minimize the period of
++ vulnerability. */
++local int test_and_set OF((int volatile *));
++local int test_and_set(flag)
++ int volatile *flag;
++{
++ int was;
++
++ was = *flag;
++ *flag = 1;
++ return was;
++}
++
++/* Run the provided init() function once. This is not thread-safe. */
++local void once(state, init)
++ once_t *state;
++ void (*init)(void);
++{
++ if (!state->done) {
++ if (test_and_set(&state->begun))
++ while (!state->done)
++ ;
++ else {
++ init();
++ state->done = 1;
++ }
++ }
++}
++
++#endif
++
++/* State for once(). */
++local once_t made = ONCE_INIT;
++
+ /*
+ Generate tables for a byte-wise 32-bit CRC calculation on the polynomial:
+ x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.
+
+ Polynomials over GF(2) are represented in binary, one bit per coefficient,
+- with the lowest powers in the most significant bit. Then adding polynomials
++ with the lowest powers in the most significant bit. Then adding polynomials
+ is just exclusive-or, and multiplying a polynomial by x is a right shift by
+- one. If we call the above polynomial p, and represent a byte as the
++ one. If we call the above polynomial p, and represent a byte as the
+ polynomial q, also with the lowest power in the most significant bit (so the
+- byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,
++ byte 0xb1 is the polynomial x^7+x^3+x^2+1), then the CRC is (q*x^32) mod p,
+ where a mod b means the remainder after dividing a by b.
+
+ This calculation is done using the shift-register method of multiplying and
+- taking the remainder. The register is initialized to zero, and for each
++ taking the remainder. The register is initialized to zero, and for each
+ incoming bit, x^32 is added mod p to the register if the bit is a one (where
+- x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by
+- x (which is shifting right by one and adding x^32 mod p if the bit shifted
+- out is a one). We start with the highest power (least significant bit) of
+- q and repeat for all eight bits of q.
+-
+- The first table is simply the CRC of all possible eight bit values. This is
+- all the information needed to generate CRCs on data a byte at a time for all
+- combinations of CRC register values and incoming bytes. The remaining tables
+- allow for word-at-a-time CRC calculation for both big-endian and little-
+- endian machines, where a word is four bytes.
+-*/
++ x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by x
++ (which is shifting right by one and adding x^32 mod p if the bit shifted out
++ is a one). We start with the highest power (least significant bit) of q and
++ repeat for all eight bits of q.
++
++ The table is simply the CRC of all possible eight bit values. This is all the
++ information needed to generate CRCs on data a byte at a time for all
++ combinations of CRC register values and incoming bytes.
++ */
++
+ local void make_crc_table()
+ {
+- z_crc_t c;
+- int n, k;
+- z_crc_t poly; /* polynomial exclusive-or pattern */
+- /* terms of polynomial defining this crc (except x^32): */
+- static volatile int first = 1; /* flag to limit concurrent making */
+- static const unsigned char p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
+-
+- /* See if another task is already doing this (not thread-safe, but better
+- than nothing -- significantly reduces duration of vulnerability in
+- case the advice about DYNAMIC_CRC_TABLE is ignored) */
+- if (first) {
+- first = 0;
+-
+- /* make exclusive-or pattern from polynomial (0xedb88320UL) */
+- poly = 0;
+- for (n = 0; n < (int)(sizeof(p)/sizeof(unsigned char)); n++)
+- poly |= (z_crc_t)1 << (31 - p[n]);
+-
+- /* generate a crc for every 8-bit value */
+- for (n = 0; n < 256; n++) {
+- c = (z_crc_t)n;
+- for (k = 0; k < 8; k++)
+- c = c & 1 ? poly ^ (c >> 1) : c >> 1;
+- crc_table[0][n] = c;
+- }
++ unsigned i, j, n;
++ z_crc_t p;
+
+-#ifdef BYFOUR
+- /* generate crc for each value followed by one, two, and three zeros,
+- and then the byte reversal of those as well as the first table */
+- for (n = 0; n < 256; n++) {
+- c = crc_table[0][n];
+- crc_table[4][n] = ZSWAP32(c);
+- for (k = 1; k < 4; k++) {
+- c = crc_table[0][c & 0xff] ^ (c >> 8);
+- crc_table[k][n] = c;
+- crc_table[k + 4][n] = ZSWAP32(c);
+- }
+- }
+-#endif /* BYFOUR */
+-
+- crc_table_empty = 0;
+- }
+- else { /* not first */
+- /* wait for the other guy to finish (not efficient, but rare) */
+- while (crc_table_empty)
+- ;
++ /* initialize the CRC of bytes tables */
++ for (i = 0; i < 256; i++) {
++ p = i;
++ for (j = 0; j < 8; j++)
++ p = p & 1 ? (p >> 1) ^ POLY : p >> 1;
++ crc_table[i] = p;
++#ifdef W
++ crc_big_table[i] = byte_swap(p);
++#endif
+ }
+
++ /* initialize the x^2^n mod p(x) table */
++ p = (z_crc_t)1 << 30; /* x^1 */
++ x2n_table[0] = p;
++ for (n = 1; n < 32; n++)
++ x2n_table[n] = p = multmodp(p, p);
++
++#ifdef W
++ /* initialize the braiding tables -- needs x2n_table[] */
++ braid(crc_braid_table, crc_braid_big_table, N, W);
++#endif
++
+ #ifdef MAKECRCH
+- /* write out CRC tables to crc32.h */
+ {
++ /*
++ The crc32.h header file contains tables for both 32-bit and 64-bit
++ z_word_t's, and so requires a 64-bit type be available. In that case,
++ z_word_t must be defined to be 64-bits. This code then also generates
++ and writes out the tables for the case that z_word_t is 32 bits.
++ */
++#if !defined(W) || W != 8
++# error Need a 64-bit integer type in order to generate crc32.h.
++#endif
+ FILE *out;
++ int k, n;
++ z_crc_t ltl[8][256];
++ z_word_t big[8][256];
+
+ out = fopen("crc32.h", "w");
+ if (out == NULL) return;
+- fprintf(out, "/* crc32.h -- tables for rapid CRC calculation\n");
+- fprintf(out, " * Generated automatically by crc32.c\n */\n\n");
+- fprintf(out, "local const z_crc_t FAR ");
+- fprintf(out, "crc_table[TBLS][256] =\n{\n {\n");
+- write_table(out, crc_table[0]);
+-# ifdef BYFOUR
+- fprintf(out, "#ifdef BYFOUR\n");
+- for (k = 1; k < 8; k++) {
+- fprintf(out, " },\n {\n");
+- write_table(out, crc_table[k]);
++
++ /* write out little-endian CRC table to crc32.h */
++ fprintf(out,
++ "/* crc32.h -- tables for rapid CRC calculation\n"
++ " * Generated automatically by crc32.c\n */\n"
++ "\n"
++ "local const z_crc_t FAR crc_table[] = {\n"
++ " ");
++ write_table(out, crc_table, 256);
++ fprintf(out,
++ "};\n");
++
++ /* write out big-endian CRC table for 64-bit z_word_t to crc32.h */
++ fprintf(out,
++ "\n"
++ "#ifdef W\n"
++ "\n"
++ "#if W == 8\n"
++ "\n"
++ "local const z_word_t FAR crc_big_table[] = {\n"
++ " ");
++ write_table64(out, crc_big_table, 256);
++ fprintf(out,
++ "};\n");
++
++ /* write out big-endian CRC table for 32-bit z_word_t to crc32.h */
++ fprintf(out,
++ "\n"
++ "#else /* W == 4 */\n"
++ "\n"
++ "local const z_word_t FAR crc_big_table[] = {\n"
++ " ");
++ write_table32hi(out, crc_big_table, 256);
++ fprintf(out,
++ "};\n"
++ "\n"
++ "#endif\n");
++
++ /* write out braid tables for each value of N */
++ for (n = 1; n <= 6; n++) {
++ fprintf(out,
++ "\n"
++ "#if N == %d\n", n);
++
++ /* compute braid tables for this N and 64-bit word_t */
++ braid(ltl, big, n, 8);
++
++ /* write out braid tables for 64-bit z_word_t to crc32.h */
++ fprintf(out,
++ "\n"
++ "#if W == 8\n"
++ "\n"
++ "local const z_crc_t FAR crc_braid_table[][256] = {\n");
++ for (k = 0; k < 8; k++) {
++ fprintf(out, " {");
++ write_table(out, ltl[k], 256);
++ fprintf(out, "}%s", k < 7 ? ",\n" : "");
++ }
++ fprintf(out,
++ "};\n"
++ "\n"
++ "local const z_word_t FAR crc_braid_big_table[][256] = {\n");
++ for (k = 0; k < 8; k++) {
++ fprintf(out, " {");
++ write_table64(out, big[k], 256);
++ fprintf(out, "}%s", k < 7 ? ",\n" : "");
++ }
++ fprintf(out,
++ "};\n");
++
++ /* compute braid tables for this N and 32-bit word_t */
++ braid(ltl, big, n, 4);
++
++ /* write out braid tables for 32-bit z_word_t to crc32.h */
++ fprintf(out,
++ "\n"
++ "#else /* W == 4 */\n"
++ "\n"
++ "local const z_crc_t FAR crc_braid_table[][256] = {\n");
++ for (k = 0; k < 4; k++) {
++ fprintf(out, " {");
++ write_table(out, ltl[k], 256);
++ fprintf(out, "}%s", k < 3 ? ",\n" : "");
++ }
++ fprintf(out,
++ "};\n"
++ "\n"
++ "local const z_word_t FAR crc_braid_big_table[][256] = {\n");
++ for (k = 0; k < 4; k++) {
++ fprintf(out, " {");
++ write_table32hi(out, big[k], 256);
++ fprintf(out, "}%s", k < 3 ? ",\n" : "");
++ }
++ fprintf(out,
++ "};\n"
++ "\n"
++ "#endif\n"
++ "\n"
++ "#endif\n");
+ }
+- fprintf(out, "#endif\n");
+-# endif /* BYFOUR */
+- fprintf(out, " }\n};\n");
++ fprintf(out,
++ "\n"
++ "#endif\n");
++
++ /* write out zeros operator table to crc32.h */
++ fprintf(out,
++ "\n"
++ "local const z_crc_t FAR x2n_table[] = {\n"
++ " ");
++ write_table(out, x2n_table, 32);
++ fprintf(out,
++ "};\n");
+ fclose(out);
+ }
+ #endif /* MAKECRCH */
+ }
+
+ #ifdef MAKECRCH
+-local void write_table(out, table)
++
++/*
++ Write the 32-bit values in table[0..k-1] to out, five per line in
++ hexadecimal separated by commas.
++ */
++local void write_table(out, table, k)
+ FILE *out;
+ const z_crc_t FAR *table;
++ int k;
+ {
+ int n;
+
+- for (n = 0; n < 256; n++)
+- fprintf(out, "%s0x%08lxUL%s", n % 5 ? "" : " ",
++ for (n = 0; n < k; n++)
++ fprintf(out, "%s0x%08lx%s", n == 0 || n % 5 ? "" : " ",
+ (unsigned long)(table[n]),
+- n == 255 ? "\n" : (n % 5 == 4 ? ",\n" : ", "));
++ n == k - 1 ? "" : (n % 5 == 4 ? ",\n" : ", "));
+ }
++
++/*
++ Write the high 32-bits of each value in table[0..k-1] to out, five per line
++ in hexadecimal separated by commas.
++ */
++local void write_table32hi(out, table, k)
++FILE *out;
++const z_word_t FAR *table;
++int k;
++{
++ int n;
++
++ for (n = 0; n < k; n++)
++ fprintf(out, "%s0x%08lx%s", n == 0 || n % 5 ? "" : " ",
++ (unsigned long)(table[n] >> 32),
++ n == k - 1 ? "" : (n % 5 == 4 ? ",\n" : ", "));
++}
++
++/*
++ Write the 64-bit values in table[0..k-1] to out, three per line in
++ hexadecimal separated by commas. This assumes that if there is a 64-bit
++ type, then there is also a long long integer type, and it is at least 64
++ bits. If not, then the type cast and format string can be adjusted
++ accordingly.
++ */
++local void write_table64(out, table, k)
++ FILE *out;
++ const z_word_t FAR *table;
++ int k;
++{
++ int n;
++
++ for (n = 0; n < k; n++)
++ fprintf(out, "%s0x%016llx%s", n == 0 || n % 3 ? "" : " ",
++ (unsigned long long)(table[n]),
++ n == k - 1 ? "" : (n % 3 == 2 ? ",\n" : ", "));
++}
++
++/* Actually do the deed. */
++int main()
++{
++ make_crc_table();
++ return 0;
++}
++
+ #endif /* MAKECRCH */
+
++#ifdef W
++/*
++ Generate the little and big-endian braid tables for the given n and z_word_t
++ size w. Each array must have room for w blocks of 256 elements.
++ */
++local void braid(ltl, big, n, w)
++ z_crc_t ltl[][256];
++ z_word_t big[][256];
++ int n;
++ int w;
++{
++ int k;
++ z_crc_t i, p, q;
++ for (k = 0; k < w; k++) {
++ p = x2nmodp((n * w + 3 - k) << 3, 0);
++ ltl[k][0] = 0;
++ big[w - 1 - k][0] = 0;
++ for (i = 1; i < 256; i++) {
++ ltl[k][i] = q = multmodp(i << 24, p);
++ big[w - 1 - k][i] = byte_swap(q);
++ }
++ }
++}
++#endif
++
+ #else /* !DYNAMIC_CRC_TABLE */
+ /* ========================================================================
+- * Tables of CRC-32s of all single-byte values, made by make_crc_table().
++ * Tables for byte-wise and braided CRC-32 calculations, and a table of powers
++ * of x for combining CRC-32s, all made by make_crc_table().
+ */
+ #include "crc32.h"
+ #endif /* DYNAMIC_CRC_TABLE */
+
++/* ========================================================================
++ * Routines used for CRC calculation. Some are also required for the table
++ * generation above.
++ */
++
++/*
++ Return a(x) multiplied by b(x) modulo p(x), where p(x) is the CRC polynomial,
++ reflected. For speed, this requires that a not be zero.
++ */
++local z_crc_t multmodp(a, b)
++ z_crc_t a;
++ z_crc_t b;
++{
++ z_crc_t m, p;
++
++ m = (z_crc_t)1 << 31;
++ p = 0;
++ for (;;) {
++ if (a & m) {
++ p ^= b;
++ if ((a & (m - 1)) == 0)
++ break;
++ }
++ m >>= 1;
++ b = b & 1 ? (b >> 1) ^ POLY : b >> 1;
++ }
++ return p;
++}
++
++/*
++ Return x^(n * 2^k) modulo p(x). Requires that x2n_table[] has been
++ initialized.
++ */
++local z_crc_t x2nmodp(n, k)
++ z_off64_t n;
++ unsigned k;
++{
++ z_crc_t p;
++
++ p = (z_crc_t)1 << 31; /* x^0 == 1 */
++ while (n) {
++ if (n & 1)
++ p = multmodp(x2n_table[k & 31], p);
++ n >>= 1;
++ k++;
++ }
++ return p;
++}
++
+ /* =========================================================================
+- * This function can be used by asm versions of crc32()
++ * This function can be used by asm versions of crc32(), and to force the
++ * generation of the CRC tables in a threaded application.
+ */
+ const z_crc_t FAR * ZEXPORT get_crc_table()
+ {
+ #ifdef DYNAMIC_CRC_TABLE
+- if (crc_table_empty)
+- make_crc_table();
++ once(&made, make_crc_table);
+ #endif /* DYNAMIC_CRC_TABLE */
+ return (const z_crc_t FAR *)crc_table;
+ }
+
+-/* ========================================================================= */
+-#define DO1 crc = crc_table[0][((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8)
+-#define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1
++/* =========================================================================
++ * Use ARM machine instructions if available. This will compute the CRC about
++ * ten times faster than the braided calculation. This code does not check for
++ * the presence of the CRC instruction at run time. __ARM_FEATURE_CRC32 will
++ * only be defined if the compilation specifies an ARM processor architecture
++ * that has the instructions. For example, compiling with -march=armv8.1-a or
++ * -march=armv8-a+crc, or -march=native if the compile machine has the crc32
++ * instructions.
++ */
++#ifdef ARMCRC32
++
++/*
++ Constants empirically determined to maximize speed. These values are from
++ measurements on a Cortex-A57. Your mileage may vary.
++ */
++#define Z_BATCH 3990 /* number of words in a batch */
++#define Z_BATCH_ZEROS 0xa10d3d0c /* computed from Z_BATCH = 3990 */
++#define Z_BATCH_MIN 800 /* fewest words in a final batch */
+
+-/* ========================================================================= */
+ unsigned long ZEXPORT crc32_z(crc, buf, len)
+ unsigned long crc;
+ const unsigned char FAR *buf;
+ z_size_t len;
+ {
+- if (buf == Z_NULL) return 0UL;
++ z_crc_t val;
++ z_word_t crc1, crc2;
++ const z_word_t *word;
++ z_word_t val0, val1, val2;
++ z_size_t last, last2, i;
++ z_size_t num;
++
++ /* Return initial CRC, if requested. */
++ if (buf == Z_NULL) return 0;
+
+ #ifdef DYNAMIC_CRC_TABLE
+- if (crc_table_empty)
+- make_crc_table();
++ once(&made, make_crc_table);
+ #endif /* DYNAMIC_CRC_TABLE */
+
+-#ifdef BYFOUR
+- if (sizeof(void *) == sizeof(ptrdiff_t)) {
+- z_crc_t endian;
++ /* Pre-condition the CRC */
++ crc ^= 0xffffffff;
+
+- endian = 1;
+- if (*((unsigned char *)(&endian)))
+- return crc32_little(crc, buf, len);
+- else
+- return crc32_big(crc, buf, len);
++ /* Compute the CRC up to a word boundary. */
++ while (len && ((z_size_t)buf & 7) != 0) {
++ len--;
++ val = *buf++;
++ __asm__ volatile("crc32b %w0, %w0, %w1" : "+r"(crc) : "r"(val));
+ }
+-#endif /* BYFOUR */
+- crc = crc ^ 0xffffffffUL;
+- while (len >= 8) {
+- DO8;
+- len -= 8;
++
++ /* Prepare to compute the CRC on full 64-bit words word[0..num-1]. */
++ word = (z_word_t const *)buf;
++ num = len >> 3;
++ len &= 7;
++
++ /* Do three interleaved CRCs to realize the throughput of one crc32x
++ instruction per cycle. Each CRC is calcuated on Z_BATCH words. The three
++ CRCs are combined into a single CRC after each set of batches. */
++ while (num >= 3 * Z_BATCH) {
++ crc1 = 0;
++ crc2 = 0;
++ for (i = 0; i < Z_BATCH; i++) {
++ val0 = word[i];
++ val1 = word[i + Z_BATCH];
++ val2 = word[i + 2 * Z_BATCH];
++ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0));
++ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc1) : "r"(val1));
++ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc2) : "r"(val2));
++ }
++ word += 3 * Z_BATCH;
++ num -= 3 * Z_BATCH;
++ crc = multmodp(Z_BATCH_ZEROS, crc) ^ crc1;
++ crc = multmodp(Z_BATCH_ZEROS, crc) ^ crc2;
+ }
+- if (len) do {
+- DO1;
+- } while (--len);
+- return crc ^ 0xffffffffUL;
+-}
+
+-/* ========================================================================= */
+-unsigned long ZEXPORT crc32(crc, buf, len)
+- unsigned long crc;
+- const unsigned char FAR *buf;
+- uInt len;
+-{
+- return crc32_z(crc, buf, len);
++ /* Do one last smaller batch with the remaining words, if there are enough
++ to pay for the combination of CRCs. */
++ last = num / 3;
++ if (last >= Z_BATCH_MIN) {
++ last2 = last << 1;
++ crc1 = 0;
++ crc2 = 0;
++ for (i = 0; i < last; i++) {
++ val0 = word[i];
++ val1 = word[i + last];
++ val2 = word[i + last2];
++ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0));
++ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc1) : "r"(val1));
++ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc2) : "r"(val2));
++ }
++ word += 3 * last;
++ num -= 3 * last;
++ val = x2nmodp(last, 6);
++ crc = multmodp(val, crc) ^ crc1;
++ crc = multmodp(val, crc) ^ crc2;
++ }
++
++ /* Compute the CRC on any remaining words. */
++ for (i = 0; i < num; i++) {
++ val0 = word[i];
++ __asm__ volatile("crc32x %w0, %w0, %x1" : "+r"(crc) : "r"(val0));
++ }
++ word += num;
++
++ /* Complete the CRC on any remaining bytes. */
++ buf = (const unsigned char FAR *)word;
++ while (len) {
++ len--;
++ val = *buf++;
++ __asm__ volatile("crc32b %w0, %w0, %w1" : "+r"(crc) : "r"(val));
++ }
++
++ /* Return the CRC, post-conditioned. */
++ return crc ^ 0xffffffff;
+ }
+
+-#ifdef BYFOUR
++#else
++
++#ifdef W
+
+ /*
+- This BYFOUR code accesses the passed unsigned char * buffer with a 32-bit
+- integer pointer type. This violates the strict aliasing rule, where a
+- compiler can assume, for optimization purposes, that two pointers to
+- fundamentally different types won't ever point to the same memory. This can
+- manifest as a problem only if one of the pointers is written to. This code
+- only reads from those pointers. So long as this code remains isolated in
+- this compilation unit, there won't be a problem. For this reason, this code
+- should not be copied and pasted into a compilation unit in which other code
+- writes to the buffer that is passed to these routines.
++ Return the CRC of the W bytes in the word_t data, taking the
++ least-significant byte of the word as the first byte of data, without any pre
++ or post conditioning. This is used to combine the CRCs of each braid.
+ */
++local z_crc_t crc_word(data)
++ z_word_t data;
++{
++ int k;
++ for (k = 0; k < W; k++)
++ data = (data >> 8) ^ crc_table[data & 0xff];
++ return (z_crc_t)data;
++}
+
+-/* ========================================================================= */
+-#define DOLIT4 c ^= *buf4++; \
+- c = crc_table[3][c & 0xff] ^ crc_table[2][(c >> 8) & 0xff] ^ \
+- crc_table[1][(c >> 16) & 0xff] ^ crc_table[0][c >> 24]
+-#define DOLIT32 DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4; DOLIT4
++local z_word_t crc_word_big(data)
++ z_word_t data;
++{
++ int k;
++ for (k = 0; k < W; k++)
++ data = (data << 8) ^
++ crc_big_table[(data >> ((W - 1) << 3)) & 0xff];
++ return data;
++}
++
++#endif
+
+ /* ========================================================================= */
+-local unsigned long crc32_little(crc, buf, len)
++unsigned long ZEXPORT crc32_z(crc, buf, len)
+ unsigned long crc;
+ const unsigned char FAR *buf;
+ z_size_t len;
+ {
+- register z_crc_t c;
+- register const z_crc_t FAR *buf4;
++ /* Return initial CRC, if requested. */
++ if (buf == Z_NULL) return 0;
+
+- c = (z_crc_t)crc;
+- c = ~c;
+- while (len && ((ptrdiff_t)buf & 3)) {
+- c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
+- len--;
+- }
++#ifdef DYNAMIC_CRC_TABLE
++ once(&made, make_crc_table);
++#endif /* DYNAMIC_CRC_TABLE */
+
+- buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
+- while (len >= 32) {
+- DOLIT32;
+- len -= 32;
+- }
+- while (len >= 4) {
+- DOLIT4;
+- len -= 4;
+- }
+- buf = (const unsigned char FAR *)buf4;
++ /* Pre-condition the CRC */
++ crc ^= 0xffffffff;
+
+- if (len) do {
+- c = crc_table[0][(c ^ *buf++) & 0xff] ^ (c >> 8);
+- } while (--len);
+- c = ~c;
+- return (unsigned long)c;
+-}
++#ifdef W
+
+-/* ========================================================================= */
+-#define DOBIG4 c ^= *buf4++; \
+- c = crc_table[4][c & 0xff] ^ crc_table[5][(c >> 8) & 0xff] ^ \
+- crc_table[6][(c >> 16) & 0xff] ^ crc_table[7][c >> 24]
+-#define DOBIG32 DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4; DOBIG4
++ /* If provided enough bytes, do a braided CRC calculation. */
++ if (len >= N * W + W - 1) {
++ z_size_t blks;
++ z_word_t const *words;
++ unsigned endian;
++ int k;
+
+-/* ========================================================================= */
+-local unsigned long crc32_big(crc, buf, len)
+- unsigned long crc;
+- const unsigned char FAR *buf;
+- z_size_t len;
+-{
+- register z_crc_t c;
+- register const z_crc_t FAR *buf4;
++ /* Compute the CRC up to a z_word_t boundary. */
++ while (len && ((z_size_t)buf & (W - 1)) != 0) {
++ len--;
++ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
++ }
+
+- c = ZSWAP32((z_crc_t)crc);
+- c = ~c;
+- while (len && ((ptrdiff_t)buf & 3)) {
+- c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
+- len--;
++ /* Compute the CRC on as many N z_word_t blocks as are available. */
++ blks = len / (N * W);
++ len -= blks * N * W;
++ words = (z_word_t const *)buf;
++
++ /* Do endian check at execution time instead of compile time, since ARM
++ processors can change the endianess at execution time. If the
++ compiler knows what the endianess will be, it can optimize out the
++ check and the unused branch. */
++ endian = 1;
++ if (*(unsigned char *)&endian) {
++ /* Little endian. */
++
++ z_crc_t crc0;
++ z_word_t word0;
++#if N > 1
++ z_crc_t crc1;
++ z_word_t word1;
++#if N > 2
++ z_crc_t crc2;
++ z_word_t word2;
++#if N > 3
++ z_crc_t crc3;
++ z_word_t word3;
++#if N > 4
++ z_crc_t crc4;
++ z_word_t word4;
++#if N > 5
++ z_crc_t crc5;
++ z_word_t word5;
++#endif
++#endif
++#endif
++#endif
++#endif
++
++ /* Initialize the CRC for each braid. */
++ crc0 = crc;
++#if N > 1
++ crc1 = 0;
++#if N > 2
++ crc2 = 0;
++#if N > 3
++ crc3 = 0;
++#if N > 4
++ crc4 = 0;
++#if N > 5
++ crc5 = 0;
++#endif
++#endif
++#endif
++#endif
++#endif
++
++ /*
++ Process the first blks-1 blocks, computing the CRCs on each braid
++ independently.
++ */
++ while (--blks) {
++ /* Load the word for each braid into registers. */
++ word0 = crc0 ^ words[0];
++#if N > 1
++ word1 = crc1 ^ words[1];
++#if N > 2
++ word2 = crc2 ^ words[2];
++#if N > 3
++ word3 = crc3 ^ words[3];
++#if N > 4
++ word4 = crc4 ^ words[4];
++#if N > 5
++ word5 = crc5 ^ words[5];
++#endif
++#endif
++#endif
++#endif
++#endif
++ words += N;
++
++ /* Compute and update the CRC for each word. The loop should
++ get unrolled. */
++ crc0 = crc_braid_table[0][word0 & 0xff];
++#if N > 1
++ crc1 = crc_braid_table[0][word1 & 0xff];
++#if N > 2
++ crc2 = crc_braid_table[0][word2 & 0xff];
++#if N > 3
++ crc3 = crc_braid_table[0][word3 & 0xff];
++#if N > 4
++ crc4 = crc_braid_table[0][word4 & 0xff];
++#if N > 5
++ crc5 = crc_braid_table[0][word5 & 0xff];
++#endif
++#endif
++#endif
++#endif
++#endif
++ for (k = 1; k < W; k++) {
++ crc0 ^= crc_braid_table[k][(word0 >> (k << 3)) & 0xff];
++#if N > 1
++ crc1 ^= crc_braid_table[k][(word1 >> (k << 3)) & 0xff];
++#if N > 2
++ crc2 ^= crc_braid_table[k][(word2 >> (k << 3)) & 0xff];
++#if N > 3
++ crc3 ^= crc_braid_table[k][(word3 >> (k << 3)) & 0xff];
++#if N > 4
++ crc4 ^= crc_braid_table[k][(word4 >> (k << 3)) & 0xff];
++#if N > 5
++ crc5 ^= crc_braid_table[k][(word5 >> (k << 3)) & 0xff];
++#endif
++#endif
++#endif
++#endif
++#endif
++ }
++ }
++
++ /*
++ Process the last block, combining the CRCs of the N braids at the
++ same time.
++ */
++ crc = crc_word(crc0 ^ words[0]);
++#if N > 1
++ crc = crc_word(crc1 ^ words[1] ^ crc);
++#if N > 2
++ crc = crc_word(crc2 ^ words[2] ^ crc);
++#if N > 3
++ crc = crc_word(crc3 ^ words[3] ^ crc);
++#if N > 4
++ crc = crc_word(crc4 ^ words[4] ^ crc);
++#if N > 5
++ crc = crc_word(crc5 ^ words[5] ^ crc);
++#endif
++#endif
++#endif
++#endif
++#endif
++ words += N;
++ }
++ else {
++ /* Big endian. */
++
++ z_word_t crc0, word0, comb;
++#if N > 1
++ z_word_t crc1, word1;
++#if N > 2
++ z_word_t crc2, word2;
++#if N > 3
++ z_word_t crc3, word3;
++#if N > 4
++ z_word_t crc4, word4;
++#if N > 5
++ z_word_t crc5, word5;
++#endif
++#endif
++#endif
++#endif
++#endif
++
++ /* Initialize the CRC for each braid. */
++ crc0 = byte_swap(crc);
++#if N > 1
++ crc1 = 0;
++#if N > 2
++ crc2 = 0;
++#if N > 3
++ crc3 = 0;
++#if N > 4
++ crc4 = 0;
++#if N > 5
++ crc5 = 0;
++#endif
++#endif
++#endif
++#endif
++#endif
++
++ /*
++ Process the first blks-1 blocks, computing the CRCs on each braid
++ independently.
++ */
++ while (--blks) {
++ /* Load the word for each braid into registers. */
++ word0 = crc0 ^ words[0];
++#if N > 1
++ word1 = crc1 ^ words[1];
++#if N > 2
++ word2 = crc2 ^ words[2];
++#if N > 3
++ word3 = crc3 ^ words[3];
++#if N > 4
++ word4 = crc4 ^ words[4];
++#if N > 5
++ word5 = crc5 ^ words[5];
++#endif
++#endif
++#endif
++#endif
++#endif
++ words += N;
++
++ /* Compute and update the CRC for each word. The loop should
++ get unrolled. */
++ crc0 = crc_braid_big_table[0][word0 & 0xff];
++#if N > 1
++ crc1 = crc_braid_big_table[0][word1 & 0xff];
++#if N > 2
++ crc2 = crc_braid_big_table[0][word2 & 0xff];
++#if N > 3
++ crc3 = crc_braid_big_table[0][word3 & 0xff];
++#if N > 4
++ crc4 = crc_braid_big_table[0][word4 & 0xff];
++#if N > 5
++ crc5 = crc_braid_big_table[0][word5 & 0xff];
++#endif
++#endif
++#endif
++#endif
++#endif
++ for (k = 1; k < W; k++) {
++ crc0 ^= crc_braid_big_table[k][(word0 >> (k << 3)) & 0xff];
++#if N > 1
++ crc1 ^= crc_braid_big_table[k][(word1 >> (k << 3)) & 0xff];
++#if N > 2
++ crc2 ^= crc_braid_big_table[k][(word2 >> (k << 3)) & 0xff];
++#if N > 3
++ crc3 ^= crc_braid_big_table[k][(word3 >> (k << 3)) & 0xff];
++#if N > 4
++ crc4 ^= crc_braid_big_table[k][(word4 >> (k << 3)) & 0xff];
++#if N > 5
++ crc5 ^= crc_braid_big_table[k][(word5 >> (k << 3)) & 0xff];
++#endif
++#endif
++#endif
++#endif
++#endif
++ }
++ }
++
++ /*
++ Process the last block, combining the CRCs of the N braids at the
++ same time.
++ */
++ comb = crc_word_big(crc0 ^ words[0]);
++#if N > 1
++ comb = crc_word_big(crc1 ^ words[1] ^ comb);
++#if N > 2
++ comb = crc_word_big(crc2 ^ words[2] ^ comb);
++#if N > 3
++ comb = crc_word_big(crc3 ^ words[3] ^ comb);
++#if N > 4
++ comb = crc_word_big(crc4 ^ words[4] ^ comb);
++#if N > 5
++ comb = crc_word_big(crc5 ^ words[5] ^ comb);
++#endif
++#endif
++#endif
++#endif
++#endif
++ words += N;
++ crc = byte_swap(comb);
++ }
++
++ /*
++ Update the pointer to the remaining bytes to process.
++ */
++ buf = (unsigned char const *)words;
+ }
+
+- buf4 = (const z_crc_t FAR *)(const void FAR *)buf;
+- while (len >= 32) {
+- DOBIG32;
+- len -= 32;
++#endif /* W */
++
++ /* Complete the computation of the CRC on any remaining bytes. */
++ while (len >= 8) {
++ len -= 8;
++ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
++ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
++ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
++ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
++ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
++ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
++ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
++ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+ }
+- while (len >= 4) {
+- DOBIG4;
+- len -= 4;
++ while (len) {
++ len--;
++ crc = (crc >> 8) ^ crc_table[(crc ^ *buf++) & 0xff];
+ }
+- buf = (const unsigned char FAR *)buf4;
+
+- if (len) do {
+- c = crc_table[4][(c >> 24) ^ *buf++] ^ (c << 8);
+- } while (--len);
+- c = ~c;
+- return (unsigned long)(ZSWAP32(c));
++ /* Return the CRC, post-conditioned. */
++ return crc ^ 0xffffffff;
+ }
+
+-#endif /* BYFOUR */
+-
+-#define GF2_DIM 32 /* dimension of GF(2) vectors (length of CRC) */
++#endif
+
+ /* ========================================================================= */
+-local unsigned long gf2_matrix_times(mat, vec)
+- unsigned long *mat;
+- unsigned long vec;
++unsigned long ZEXPORT crc32(crc, buf, len)
++ unsigned long crc;
++ const unsigned char FAR *buf;
++ uInt len;
+ {
+- unsigned long sum;
+-
+- sum = 0;
+- while (vec) {
+- if (vec & 1)
+- sum ^= *mat;
+- vec >>= 1;
+- mat++;
+- }
+- return sum;
++ return crc32_z(crc, buf, len);
+ }
+
+ /* ========================================================================= */
+-local void gf2_matrix_square(square, mat)
+- unsigned long *square;
+- unsigned long *mat;
++uLong ZEXPORT crc32_combine64(crc1, crc2, len2)
++ uLong crc1;
++ uLong crc2;
++ z_off64_t len2;
+ {
+- int n;
+-
+- for (n = 0; n < GF2_DIM; n++)
+- square[n] = gf2_matrix_times(mat, mat[n]);
++#ifdef DYNAMIC_CRC_TABLE
++ once(&made, make_crc_table);
++#endif /* DYNAMIC_CRC_TABLE */
++ return multmodp(x2nmodp(len2, 3), crc1) ^ crc2;
+ }
+
+ /* ========================================================================= */
+-local uLong crc32_combine_(crc1, crc2, len2)
++uLong ZEXPORT crc32_combine(crc1, crc2, len2)
+ uLong crc1;
+ uLong crc2;
+- z_off64_t len2;
++ z_off_t len2;
+ {
+- int n;
+- unsigned long row;
+- unsigned long even[GF2_DIM]; /* even-power-of-two zeros operator */
+- unsigned long odd[GF2_DIM]; /* odd-power-of-two zeros operator */
+-
+- /* degenerate case (also disallow negative lengths) */
+- if (len2 <= 0)
+- return crc1;
+-
+- /* put operator for one zero bit in odd */
+- odd[0] = 0xedb88320UL; /* CRC-32 polynomial */
+- row = 1;
+- for (n = 1; n < GF2_DIM; n++) {
+- odd[n] = row;
+- row <<= 1;
+- }
++ return crc32_combine64(crc1, crc2, len2);
++}
+
+- /* put operator for two zero bits in even */
+- gf2_matrix_square(even, odd);
+-
+- /* put operator for four zero bits in odd */
+- gf2_matrix_square(odd, even);
+-
+- /* apply len2 zeros to crc1 (first square will put the operator for one
+- zero byte, eight zero bits, in even) */
+- do {
+- /* apply zeros operator for this bit of len2 */
+- gf2_matrix_square(even, odd);
+- if (len2 & 1)
+- crc1 = gf2_matrix_times(even, crc1);
+- len2 >>= 1;
+-
+- /* if no more bits set, then done */
+- if (len2 == 0)
+- break;
+-
+- /* another iteration of the loop with odd and even swapped */
+- gf2_matrix_square(odd, even);
+- if (len2 & 1)
+- crc1 = gf2_matrix_times(odd, crc1);
+- len2 >>= 1;
+-
+- /* if no more bits set, then done */
+- } while (len2 != 0);
+-
+- /* return combined crc */
+- crc1 ^= crc2;
+- return crc1;
++/* ========================================================================= */
++uLong ZEXPORT crc32_combine_gen64(len2)
++ z_off64_t len2;
++{
++#ifdef DYNAMIC_CRC_TABLE
++ once(&made, make_crc_table);
++#endif /* DYNAMIC_CRC_TABLE */
++ return x2nmodp(len2, 3);
+ }
+
+ /* ========================================================================= */
+-uLong ZEXPORT crc32_combine(crc1, crc2, len2)
+- uLong crc1;
+- uLong crc2;
++uLong ZEXPORT crc32_combine_gen(len2)
+ z_off_t len2;
+ {
+- return crc32_combine_(crc1, crc2, len2);
++ return crc32_combine_gen64(len2);
+ }
+
+-uLong ZEXPORT crc32_combine64(crc1, crc2, len2)
++/* ========================================================================= */
++uLong crc32_combine_op(crc1, crc2, op)
+ uLong crc1;
+ uLong crc2;
+- z_off64_t len2;
++ uLong op;
+ {
+- return crc32_combine_(crc1, crc2, len2);
++ return multmodp(op, crc1) ^ crc2;
+ }
+diff --git a/src/3rdparty/zlib/src/crc32.h b/src/3rdparty/zlib/src/crc32.h
+index 9e0c778102..137df68d61 100644
+--- a/src/3rdparty/zlib/src/crc32.h
++++ b/src/3rdparty/zlib/src/crc32.h
+@@ -2,440 +2,9445 @@
+ * Generated automatically by crc32.c
+ */
+
+-local const z_crc_t FAR crc_table[TBLS][256] =
+-{
+- {
+- 0x00000000UL, 0x77073096UL, 0xee0e612cUL, 0x990951baUL, 0x076dc419UL,
+- 0x706af48fUL, 0xe963a535UL, 0x9e6495a3UL, 0x0edb8832UL, 0x79dcb8a4UL,
+- 0xe0d5e91eUL, 0x97d2d988UL, 0x09b64c2bUL, 0x7eb17cbdUL, 0xe7b82d07UL,
+- 0x90bf1d91UL, 0x1db71064UL, 0x6ab020f2UL, 0xf3b97148UL, 0x84be41deUL,
+- 0x1adad47dUL, 0x6ddde4ebUL, 0xf4d4b551UL, 0x83d385c7UL, 0x136c9856UL,
+- 0x646ba8c0UL, 0xfd62f97aUL, 0x8a65c9ecUL, 0x14015c4fUL, 0x63066cd9UL,
+- 0xfa0f3d63UL, 0x8d080df5UL, 0x3b6e20c8UL, 0x4c69105eUL, 0xd56041e4UL,
+- 0xa2677172UL, 0x3c03e4d1UL, 0x4b04d447UL, 0xd20d85fdUL, 0xa50ab56bUL,
+- 0x35b5a8faUL, 0x42b2986cUL, 0xdbbbc9d6UL, 0xacbcf940UL, 0x32d86ce3UL,
+- 0x45df5c75UL, 0xdcd60dcfUL, 0xabd13d59UL, 0x26d930acUL, 0x51de003aUL,
+- 0xc8d75180UL, 0xbfd06116UL, 0x21b4f4b5UL, 0x56b3c423UL, 0xcfba9599UL,
+- 0xb8bda50fUL, 0x2802b89eUL, 0x5f058808UL, 0xc60cd9b2UL, 0xb10be924UL,
+- 0x2f6f7c87UL, 0x58684c11UL, 0xc1611dabUL, 0xb6662d3dUL, 0x76dc4190UL,
+- 0x01db7106UL, 0x98d220bcUL, 0xefd5102aUL, 0x71b18589UL, 0x06b6b51fUL,
+- 0x9fbfe4a5UL, 0xe8b8d433UL, 0x7807c9a2UL, 0x0f00f934UL, 0x9609a88eUL,
+- 0xe10e9818UL, 0x7f6a0dbbUL, 0x086d3d2dUL, 0x91646c97UL, 0xe6635c01UL,
+- 0x6b6b51f4UL, 0x1c6c6162UL, 0x856530d8UL, 0xf262004eUL, 0x6c0695edUL,
+- 0x1b01a57bUL, 0x8208f4c1UL, 0xf50fc457UL, 0x65b0d9c6UL, 0x12b7e950UL,
+- 0x8bbeb8eaUL, 0xfcb9887cUL, 0x62dd1ddfUL, 0x15da2d49UL, 0x8cd37cf3UL,
+- 0xfbd44c65UL, 0x4db26158UL, 0x3ab551ceUL, 0xa3bc0074UL, 0xd4bb30e2UL,
+- 0x4adfa541UL, 0x3dd895d7UL, 0xa4d1c46dUL, 0xd3d6f4fbUL, 0x4369e96aUL,
+- 0x346ed9fcUL, 0xad678846UL, 0xda60b8d0UL, 0x44042d73UL, 0x33031de5UL,
+- 0xaa0a4c5fUL, 0xdd0d7cc9UL, 0x5005713cUL, 0x270241aaUL, 0xbe0b1010UL,
+- 0xc90c2086UL, 0x5768b525UL, 0x206f85b3UL, 0xb966d409UL, 0xce61e49fUL,
+- 0x5edef90eUL, 0x29d9c998UL, 0xb0d09822UL, 0xc7d7a8b4UL, 0x59b33d17UL,
+- 0x2eb40d81UL, 0xb7bd5c3bUL, 0xc0ba6cadUL, 0xedb88320UL, 0x9abfb3b6UL,
+- 0x03b6e20cUL, 0x74b1d29aUL, 0xead54739UL, 0x9dd277afUL, 0x04db2615UL,
+- 0x73dc1683UL, 0xe3630b12UL, 0x94643b84UL, 0x0d6d6a3eUL, 0x7a6a5aa8UL,
+- 0xe40ecf0bUL, 0x9309ff9dUL, 0x0a00ae27UL, 0x7d079eb1UL, 0xf00f9344UL,
+- 0x8708a3d2UL, 0x1e01f268UL, 0x6906c2feUL, 0xf762575dUL, 0x806567cbUL,
+- 0x196c3671UL, 0x6e6b06e7UL, 0xfed41b76UL, 0x89d32be0UL, 0x10da7a5aUL,
+- 0x67dd4accUL, 0xf9b9df6fUL, 0x8ebeeff9UL, 0x17b7be43UL, 0x60b08ed5UL,
+- 0xd6d6a3e8UL, 0xa1d1937eUL, 0x38d8c2c4UL, 0x4fdff252UL, 0xd1bb67f1UL,
+- 0xa6bc5767UL, 0x3fb506ddUL, 0x48b2364bUL, 0xd80d2bdaUL, 0xaf0a1b4cUL,
+- 0x36034af6UL, 0x41047a60UL, 0xdf60efc3UL, 0xa867df55UL, 0x316e8eefUL,
+- 0x4669be79UL, 0xcb61b38cUL, 0xbc66831aUL, 0x256fd2a0UL, 0x5268e236UL,
+- 0xcc0c7795UL, 0xbb0b4703UL, 0x220216b9UL, 0x5505262fUL, 0xc5ba3bbeUL,
+- 0xb2bd0b28UL, 0x2bb45a92UL, 0x5cb36a04UL, 0xc2d7ffa7UL, 0xb5d0cf31UL,
+- 0x2cd99e8bUL, 0x5bdeae1dUL, 0x9b64c2b0UL, 0xec63f226UL, 0x756aa39cUL,
+- 0x026d930aUL, 0x9c0906a9UL, 0xeb0e363fUL, 0x72076785UL, 0x05005713UL,
+- 0x95bf4a82UL, 0xe2b87a14UL, 0x7bb12baeUL, 0x0cb61b38UL, 0x92d28e9bUL,
+- 0xe5d5be0dUL, 0x7cdcefb7UL, 0x0bdbdf21UL, 0x86d3d2d4UL, 0xf1d4e242UL,
+- 0x68ddb3f8UL, 0x1fda836eUL, 0x81be16cdUL, 0xf6b9265bUL, 0x6fb077e1UL,
+- 0x18b74777UL, 0x88085ae6UL, 0xff0f6a70UL, 0x66063bcaUL, 0x11010b5cUL,
+- 0x8f659effUL, 0xf862ae69UL, 0x616bffd3UL, 0x166ccf45UL, 0xa00ae278UL,
+- 0xd70dd2eeUL, 0x4e048354UL, 0x3903b3c2UL, 0xa7672661UL, 0xd06016f7UL,
+- 0x4969474dUL, 0x3e6e77dbUL, 0xaed16a4aUL, 0xd9d65adcUL, 0x40df0b66UL,
+- 0x37d83bf0UL, 0xa9bcae53UL, 0xdebb9ec5UL, 0x47b2cf7fUL, 0x30b5ffe9UL,
+- 0xbdbdf21cUL, 0xcabac28aUL, 0x53b39330UL, 0x24b4a3a6UL, 0xbad03605UL,
+- 0xcdd70693UL, 0x54de5729UL, 0x23d967bfUL, 0xb3667a2eUL, 0xc4614ab8UL,
+- 0x5d681b02UL, 0x2a6f2b94UL, 0xb40bbe37UL, 0xc30c8ea1UL, 0x5a05df1bUL,
+- 0x2d02ef8dUL
+-#ifdef BYFOUR
+- },
+- {
+- 0x00000000UL, 0x191b3141UL, 0x32366282UL, 0x2b2d53c3UL, 0x646cc504UL,
+- 0x7d77f445UL, 0x565aa786UL, 0x4f4196c7UL, 0xc8d98a08UL, 0xd1c2bb49UL,
+- 0xfaefe88aUL, 0xe3f4d9cbUL, 0xacb54f0cUL, 0xb5ae7e4dUL, 0x9e832d8eUL,
+- 0x87981ccfUL, 0x4ac21251UL, 0x53d92310UL, 0x78f470d3UL, 0x61ef4192UL,
+- 0x2eaed755UL, 0x37b5e614UL, 0x1c98b5d7UL, 0x05838496UL, 0x821b9859UL,
+- 0x9b00a918UL, 0xb02dfadbUL, 0xa936cb9aUL, 0xe6775d5dUL, 0xff6c6c1cUL,
+- 0xd4413fdfUL, 0xcd5a0e9eUL, 0x958424a2UL, 0x8c9f15e3UL, 0xa7b24620UL,
+- 0xbea97761UL, 0xf1e8e1a6UL, 0xe8f3d0e7UL, 0xc3de8324UL, 0xdac5b265UL,
+- 0x5d5daeaaUL, 0x44469febUL, 0x6f6bcc28UL, 0x7670fd69UL, 0x39316baeUL,
+- 0x202a5aefUL, 0x0b07092cUL, 0x121c386dUL, 0xdf4636f3UL, 0xc65d07b2UL,
+- 0xed705471UL, 0xf46b6530UL, 0xbb2af3f7UL, 0xa231c2b6UL, 0x891c9175UL,
+- 0x9007a034UL, 0x179fbcfbUL, 0x0e848dbaUL, 0x25a9de79UL, 0x3cb2ef38UL,
+- 0x73f379ffUL, 0x6ae848beUL, 0x41c51b7dUL, 0x58de2a3cUL, 0xf0794f05UL,
+- 0xe9627e44UL, 0xc24f2d87UL, 0xdb541cc6UL, 0x94158a01UL, 0x8d0ebb40UL,
+- 0xa623e883UL, 0xbf38d9c2UL, 0x38a0c50dUL, 0x21bbf44cUL, 0x0a96a78fUL,
+- 0x138d96ceUL, 0x5ccc0009UL, 0x45d73148UL, 0x6efa628bUL, 0x77e153caUL,
+- 0xbabb5d54UL, 0xa3a06c15UL, 0x888d3fd6UL, 0x91960e97UL, 0xded79850UL,
+- 0xc7cca911UL, 0xece1fad2UL, 0xf5facb93UL, 0x7262d75cUL, 0x6b79e61dUL,
+- 0x4054b5deUL, 0x594f849fUL, 0x160e1258UL, 0x0f152319UL, 0x243870daUL,
+- 0x3d23419bUL, 0x65fd6ba7UL, 0x7ce65ae6UL, 0x57cb0925UL, 0x4ed03864UL,
+- 0x0191aea3UL, 0x188a9fe2UL, 0x33a7cc21UL, 0x2abcfd60UL, 0xad24e1afUL,
+- 0xb43fd0eeUL, 0x9f12832dUL, 0x8609b26cUL, 0xc94824abUL, 0xd05315eaUL,
+- 0xfb7e4629UL, 0xe2657768UL, 0x2f3f79f6UL, 0x362448b7UL, 0x1d091b74UL,
+- 0x04122a35UL, 0x4b53bcf2UL, 0x52488db3UL, 0x7965de70UL, 0x607eef31UL,
+- 0xe7e6f3feUL, 0xfefdc2bfUL, 0xd5d0917cUL, 0xcccba03dUL, 0x838a36faUL,
+- 0x9a9107bbUL, 0xb1bc5478UL, 0xa8a76539UL, 0x3b83984bUL, 0x2298a90aUL,
+- 0x09b5fac9UL, 0x10aecb88UL, 0x5fef5d4fUL, 0x46f46c0eUL, 0x6dd93fcdUL,
+- 0x74c20e8cUL, 0xf35a1243UL, 0xea412302UL, 0xc16c70c1UL, 0xd8774180UL,
+- 0x9736d747UL, 0x8e2de606UL, 0xa500b5c5UL, 0xbc1b8484UL, 0x71418a1aUL,
+- 0x685abb5bUL, 0x4377e898UL, 0x5a6cd9d9UL, 0x152d4f1eUL, 0x0c367e5fUL,
+- 0x271b2d9cUL, 0x3e001cddUL, 0xb9980012UL, 0xa0833153UL, 0x8bae6290UL,
+- 0x92b553d1UL, 0xddf4c516UL, 0xc4eff457UL, 0xefc2a794UL, 0xf6d996d5UL,
+- 0xae07bce9UL, 0xb71c8da8UL, 0x9c31de6bUL, 0x852aef2aUL, 0xca6b79edUL,
+- 0xd37048acUL, 0xf85d1b6fUL, 0xe1462a2eUL, 0x66de36e1UL, 0x7fc507a0UL,
+- 0x54e85463UL, 0x4df36522UL, 0x02b2f3e5UL, 0x1ba9c2a4UL, 0x30849167UL,
+- 0x299fa026UL, 0xe4c5aeb8UL, 0xfdde9ff9UL, 0xd6f3cc3aUL, 0xcfe8fd7bUL,
+- 0x80a96bbcUL, 0x99b25afdUL, 0xb29f093eUL, 0xab84387fUL, 0x2c1c24b0UL,
+- 0x350715f1UL, 0x1e2a4632UL, 0x07317773UL, 0x4870e1b4UL, 0x516bd0f5UL,
+- 0x7a468336UL, 0x635db277UL, 0xcbfad74eUL, 0xd2e1e60fUL, 0xf9ccb5ccUL,
+- 0xe0d7848dUL, 0xaf96124aUL, 0xb68d230bUL, 0x9da070c8UL, 0x84bb4189UL,
+- 0x03235d46UL, 0x1a386c07UL, 0x31153fc4UL, 0x280e0e85UL, 0x674f9842UL,
+- 0x7e54a903UL, 0x5579fac0UL, 0x4c62cb81UL, 0x8138c51fUL, 0x9823f45eUL,
+- 0xb30ea79dUL, 0xaa1596dcUL, 0xe554001bUL, 0xfc4f315aUL, 0xd7626299UL,
+- 0xce7953d8UL, 0x49e14f17UL, 0x50fa7e56UL, 0x7bd72d95UL, 0x62cc1cd4UL,
+- 0x2d8d8a13UL, 0x3496bb52UL, 0x1fbbe891UL, 0x06a0d9d0UL, 0x5e7ef3ecUL,
+- 0x4765c2adUL, 0x6c48916eUL, 0x7553a02fUL, 0x3a1236e8UL, 0x230907a9UL,
+- 0x0824546aUL, 0x113f652bUL, 0x96a779e4UL, 0x8fbc48a5UL, 0xa4911b66UL,
+- 0xbd8a2a27UL, 0xf2cbbce0UL, 0xebd08da1UL, 0xc0fdde62UL, 0xd9e6ef23UL,
+- 0x14bce1bdUL, 0x0da7d0fcUL, 0x268a833fUL, 0x3f91b27eUL, 0x70d024b9UL,
+- 0x69cb15f8UL, 0x42e6463bUL, 0x5bfd777aUL, 0xdc656bb5UL, 0xc57e5af4UL,
+- 0xee530937UL, 0xf7483876UL, 0xb809aeb1UL, 0xa1129ff0UL, 0x8a3fcc33UL,
+- 0x9324fd72UL
+- },
+- {
+- 0x00000000UL, 0x01c26a37UL, 0x0384d46eUL, 0x0246be59UL, 0x0709a8dcUL,
+- 0x06cbc2ebUL, 0x048d7cb2UL, 0x054f1685UL, 0x0e1351b8UL, 0x0fd13b8fUL,
+- 0x0d9785d6UL, 0x0c55efe1UL, 0x091af964UL, 0x08d89353UL, 0x0a9e2d0aUL,
+- 0x0b5c473dUL, 0x1c26a370UL, 0x1de4c947UL, 0x1fa2771eUL, 0x1e601d29UL,
+- 0x1b2f0bacUL, 0x1aed619bUL, 0x18abdfc2UL, 0x1969b5f5UL, 0x1235f2c8UL,
+- 0x13f798ffUL, 0x11b126a6UL, 0x10734c91UL, 0x153c5a14UL, 0x14fe3023UL,
+- 0x16b88e7aUL, 0x177ae44dUL, 0x384d46e0UL, 0x398f2cd7UL, 0x3bc9928eUL,
+- 0x3a0bf8b9UL, 0x3f44ee3cUL, 0x3e86840bUL, 0x3cc03a52UL, 0x3d025065UL,
+- 0x365e1758UL, 0x379c7d6fUL, 0x35dac336UL, 0x3418a901UL, 0x3157bf84UL,
+- 0x3095d5b3UL, 0x32d36beaUL, 0x331101ddUL, 0x246be590UL, 0x25a98fa7UL,
+- 0x27ef31feUL, 0x262d5bc9UL, 0x23624d4cUL, 0x22a0277bUL, 0x20e69922UL,
+- 0x2124f315UL, 0x2a78b428UL, 0x2bbade1fUL, 0x29fc6046UL, 0x283e0a71UL,
+- 0x2d711cf4UL, 0x2cb376c3UL, 0x2ef5c89aUL, 0x2f37a2adUL, 0x709a8dc0UL,
+- 0x7158e7f7UL, 0x731e59aeUL, 0x72dc3399UL, 0x7793251cUL, 0x76514f2bUL,
+- 0x7417f172UL, 0x75d59b45UL, 0x7e89dc78UL, 0x7f4bb64fUL, 0x7d0d0816UL,
+- 0x7ccf6221UL, 0x798074a4UL, 0x78421e93UL, 0x7a04a0caUL, 0x7bc6cafdUL,
+- 0x6cbc2eb0UL, 0x6d7e4487UL, 0x6f38fadeUL, 0x6efa90e9UL, 0x6bb5866cUL,
+- 0x6a77ec5bUL, 0x68315202UL, 0x69f33835UL, 0x62af7f08UL, 0x636d153fUL,
+- 0x612bab66UL, 0x60e9c151UL, 0x65a6d7d4UL, 0x6464bde3UL, 0x662203baUL,
+- 0x67e0698dUL, 0x48d7cb20UL, 0x4915a117UL, 0x4b531f4eUL, 0x4a917579UL,
+- 0x4fde63fcUL, 0x4e1c09cbUL, 0x4c5ab792UL, 0x4d98dda5UL, 0x46c49a98UL,
+- 0x4706f0afUL, 0x45404ef6UL, 0x448224c1UL, 0x41cd3244UL, 0x400f5873UL,
+- 0x4249e62aUL, 0x438b8c1dUL, 0x54f16850UL, 0x55330267UL, 0x5775bc3eUL,
+- 0x56b7d609UL, 0x53f8c08cUL, 0x523aaabbUL, 0x507c14e2UL, 0x51be7ed5UL,
+- 0x5ae239e8UL, 0x5b2053dfUL, 0x5966ed86UL, 0x58a487b1UL, 0x5deb9134UL,
+- 0x5c29fb03UL, 0x5e6f455aUL, 0x5fad2f6dUL, 0xe1351b80UL, 0xe0f771b7UL,
+- 0xe2b1cfeeUL, 0xe373a5d9UL, 0xe63cb35cUL, 0xe7fed96bUL, 0xe5b86732UL,
+- 0xe47a0d05UL, 0xef264a38UL, 0xeee4200fUL, 0xeca29e56UL, 0xed60f461UL,
+- 0xe82fe2e4UL, 0xe9ed88d3UL, 0xebab368aUL, 0xea695cbdUL, 0xfd13b8f0UL,
+- 0xfcd1d2c7UL, 0xfe976c9eUL, 0xff5506a9UL, 0xfa1a102cUL, 0xfbd87a1bUL,
+- 0xf99ec442UL, 0xf85cae75UL, 0xf300e948UL, 0xf2c2837fUL, 0xf0843d26UL,
+- 0xf1465711UL, 0xf4094194UL, 0xf5cb2ba3UL, 0xf78d95faUL, 0xf64fffcdUL,
+- 0xd9785d60UL, 0xd8ba3757UL, 0xdafc890eUL, 0xdb3ee339UL, 0xde71f5bcUL,
+- 0xdfb39f8bUL, 0xddf521d2UL, 0xdc374be5UL, 0xd76b0cd8UL, 0xd6a966efUL,
+- 0xd4efd8b6UL, 0xd52db281UL, 0xd062a404UL, 0xd1a0ce33UL, 0xd3e6706aUL,
+- 0xd2241a5dUL, 0xc55efe10UL, 0xc49c9427UL, 0xc6da2a7eUL, 0xc7184049UL,
+- 0xc25756ccUL, 0xc3953cfbUL, 0xc1d382a2UL, 0xc011e895UL, 0xcb4dafa8UL,
+- 0xca8fc59fUL, 0xc8c97bc6UL, 0xc90b11f1UL, 0xcc440774UL, 0xcd866d43UL,
+- 0xcfc0d31aUL, 0xce02b92dUL, 0x91af9640UL, 0x906dfc77UL, 0x922b422eUL,
+- 0x93e92819UL, 0x96a63e9cUL, 0x976454abUL, 0x9522eaf2UL, 0x94e080c5UL,
+- 0x9fbcc7f8UL, 0x9e7eadcfUL, 0x9c381396UL, 0x9dfa79a1UL, 0x98b56f24UL,
+- 0x99770513UL, 0x9b31bb4aUL, 0x9af3d17dUL, 0x8d893530UL, 0x8c4b5f07UL,
+- 0x8e0de15eUL, 0x8fcf8b69UL, 0x8a809decUL, 0x8b42f7dbUL, 0x89044982UL,
+- 0x88c623b5UL, 0x839a6488UL, 0x82580ebfUL, 0x801eb0e6UL, 0x81dcdad1UL,
+- 0x8493cc54UL, 0x8551a663UL, 0x8717183aUL, 0x86d5720dUL, 0xa9e2d0a0UL,
+- 0xa820ba97UL, 0xaa6604ceUL, 0xaba46ef9UL, 0xaeeb787cUL, 0xaf29124bUL,
+- 0xad6fac12UL, 0xacadc625UL, 0xa7f18118UL, 0xa633eb2fUL, 0xa4755576UL,
+- 0xa5b73f41UL, 0xa0f829c4UL, 0xa13a43f3UL, 0xa37cfdaaUL, 0xa2be979dUL,
+- 0xb5c473d0UL, 0xb40619e7UL, 0xb640a7beUL, 0xb782cd89UL, 0xb2cddb0cUL,
+- 0xb30fb13bUL, 0xb1490f62UL, 0xb08b6555UL, 0xbbd72268UL, 0xba15485fUL,
+- 0xb853f606UL, 0xb9919c31UL, 0xbcde8ab4UL, 0xbd1ce083UL, 0xbf5a5edaUL,
+- 0xbe9834edUL
+- },
+- {
+- 0x00000000UL, 0xb8bc6765UL, 0xaa09c88bUL, 0x12b5afeeUL, 0x8f629757UL,
+- 0x37def032UL, 0x256b5fdcUL, 0x9dd738b9UL, 0xc5b428efUL, 0x7d084f8aUL,
+- 0x6fbde064UL, 0xd7018701UL, 0x4ad6bfb8UL, 0xf26ad8ddUL, 0xe0df7733UL,
+- 0x58631056UL, 0x5019579fUL, 0xe8a530faUL, 0xfa109f14UL, 0x42acf871UL,
+- 0xdf7bc0c8UL, 0x67c7a7adUL, 0x75720843UL, 0xcdce6f26UL, 0x95ad7f70UL,
+- 0x2d111815UL, 0x3fa4b7fbUL, 0x8718d09eUL, 0x1acfe827UL, 0xa2738f42UL,
+- 0xb0c620acUL, 0x087a47c9UL, 0xa032af3eUL, 0x188ec85bUL, 0x0a3b67b5UL,
+- 0xb28700d0UL, 0x2f503869UL, 0x97ec5f0cUL, 0x8559f0e2UL, 0x3de59787UL,
+- 0x658687d1UL, 0xdd3ae0b4UL, 0xcf8f4f5aUL, 0x7733283fUL, 0xeae41086UL,
+- 0x525877e3UL, 0x40edd80dUL, 0xf851bf68UL, 0xf02bf8a1UL, 0x48979fc4UL,
+- 0x5a22302aUL, 0xe29e574fUL, 0x7f496ff6UL, 0xc7f50893UL, 0xd540a77dUL,
+- 0x6dfcc018UL, 0x359fd04eUL, 0x8d23b72bUL, 0x9f9618c5UL, 0x272a7fa0UL,
+- 0xbafd4719UL, 0x0241207cUL, 0x10f48f92UL, 0xa848e8f7UL, 0x9b14583dUL,
+- 0x23a83f58UL, 0x311d90b6UL, 0x89a1f7d3UL, 0x1476cf6aUL, 0xaccaa80fUL,
+- 0xbe7f07e1UL, 0x06c36084UL, 0x5ea070d2UL, 0xe61c17b7UL, 0xf4a9b859UL,
+- 0x4c15df3cUL, 0xd1c2e785UL, 0x697e80e0UL, 0x7bcb2f0eUL, 0xc377486bUL,
+- 0xcb0d0fa2UL, 0x73b168c7UL, 0x6104c729UL, 0xd9b8a04cUL, 0x446f98f5UL,
+- 0xfcd3ff90UL, 0xee66507eUL, 0x56da371bUL, 0x0eb9274dUL, 0xb6054028UL,
+- 0xa4b0efc6UL, 0x1c0c88a3UL, 0x81dbb01aUL, 0x3967d77fUL, 0x2bd27891UL,
+- 0x936e1ff4UL, 0x3b26f703UL, 0x839a9066UL, 0x912f3f88UL, 0x299358edUL,
+- 0xb4446054UL, 0x0cf80731UL, 0x1e4da8dfUL, 0xa6f1cfbaUL, 0xfe92dfecUL,
+- 0x462eb889UL, 0x549b1767UL, 0xec277002UL, 0x71f048bbUL, 0xc94c2fdeUL,
+- 0xdbf98030UL, 0x6345e755UL, 0x6b3fa09cUL, 0xd383c7f9UL, 0xc1366817UL,
+- 0x798a0f72UL, 0xe45d37cbUL, 0x5ce150aeUL, 0x4e54ff40UL, 0xf6e89825UL,
+- 0xae8b8873UL, 0x1637ef16UL, 0x048240f8UL, 0xbc3e279dUL, 0x21e91f24UL,
+- 0x99557841UL, 0x8be0d7afUL, 0x335cb0caUL, 0xed59b63bUL, 0x55e5d15eUL,
+- 0x47507eb0UL, 0xffec19d5UL, 0x623b216cUL, 0xda874609UL, 0xc832e9e7UL,
+- 0x708e8e82UL, 0x28ed9ed4UL, 0x9051f9b1UL, 0x82e4565fUL, 0x3a58313aUL,
+- 0xa78f0983UL, 0x1f336ee6UL, 0x0d86c108UL, 0xb53aa66dUL, 0xbd40e1a4UL,
+- 0x05fc86c1UL, 0x1749292fUL, 0xaff54e4aUL, 0x322276f3UL, 0x8a9e1196UL,
+- 0x982bbe78UL, 0x2097d91dUL, 0x78f4c94bUL, 0xc048ae2eUL, 0xd2fd01c0UL,
+- 0x6a4166a5UL, 0xf7965e1cUL, 0x4f2a3979UL, 0x5d9f9697UL, 0xe523f1f2UL,
+- 0x4d6b1905UL, 0xf5d77e60UL, 0xe762d18eUL, 0x5fdeb6ebUL, 0xc2098e52UL,
+- 0x7ab5e937UL, 0x680046d9UL, 0xd0bc21bcUL, 0x88df31eaUL, 0x3063568fUL,
+- 0x22d6f961UL, 0x9a6a9e04UL, 0x07bda6bdUL, 0xbf01c1d8UL, 0xadb46e36UL,
+- 0x15080953UL, 0x1d724e9aUL, 0xa5ce29ffUL, 0xb77b8611UL, 0x0fc7e174UL,
+- 0x9210d9cdUL, 0x2aacbea8UL, 0x38191146UL, 0x80a57623UL, 0xd8c66675UL,
+- 0x607a0110UL, 0x72cfaefeUL, 0xca73c99bUL, 0x57a4f122UL, 0xef189647UL,
+- 0xfdad39a9UL, 0x45115eccUL, 0x764dee06UL, 0xcef18963UL, 0xdc44268dUL,
+- 0x64f841e8UL, 0xf92f7951UL, 0x41931e34UL, 0x5326b1daUL, 0xeb9ad6bfUL,
+- 0xb3f9c6e9UL, 0x0b45a18cUL, 0x19f00e62UL, 0xa14c6907UL, 0x3c9b51beUL,
+- 0x842736dbUL, 0x96929935UL, 0x2e2efe50UL, 0x2654b999UL, 0x9ee8defcUL,
+- 0x8c5d7112UL, 0x34e11677UL, 0xa9362eceUL, 0x118a49abUL, 0x033fe645UL,
+- 0xbb838120UL, 0xe3e09176UL, 0x5b5cf613UL, 0x49e959fdUL, 0xf1553e98UL,
+- 0x6c820621UL, 0xd43e6144UL, 0xc68bceaaUL, 0x7e37a9cfUL, 0xd67f4138UL,
+- 0x6ec3265dUL, 0x7c7689b3UL, 0xc4caeed6UL, 0x591dd66fUL, 0xe1a1b10aUL,
+- 0xf3141ee4UL, 0x4ba87981UL, 0x13cb69d7UL, 0xab770eb2UL, 0xb9c2a15cUL,
+- 0x017ec639UL, 0x9ca9fe80UL, 0x241599e5UL, 0x36a0360bUL, 0x8e1c516eUL,
+- 0x866616a7UL, 0x3eda71c2UL, 0x2c6fde2cUL, 0x94d3b949UL, 0x090481f0UL,
+- 0xb1b8e695UL, 0xa30d497bUL, 0x1bb12e1eUL, 0x43d23e48UL, 0xfb6e592dUL,
+- 0xe9dbf6c3UL, 0x516791a6UL, 0xccb0a91fUL, 0x740cce7aUL, 0x66b96194UL,
+- 0xde0506f1UL
+- },
+- {
+- 0x00000000UL, 0x96300777UL, 0x2c610eeeUL, 0xba510999UL, 0x19c46d07UL,
+- 0x8ff46a70UL, 0x35a563e9UL, 0xa395649eUL, 0x3288db0eUL, 0xa4b8dc79UL,
+- 0x1ee9d5e0UL, 0x88d9d297UL, 0x2b4cb609UL, 0xbd7cb17eUL, 0x072db8e7UL,
+- 0x911dbf90UL, 0x6410b71dUL, 0xf220b06aUL, 0x4871b9f3UL, 0xde41be84UL,
+- 0x7dd4da1aUL, 0xebe4dd6dUL, 0x51b5d4f4UL, 0xc785d383UL, 0x56986c13UL,
+- 0xc0a86b64UL, 0x7af962fdUL, 0xecc9658aUL, 0x4f5c0114UL, 0xd96c0663UL,
+- 0x633d0ffaUL, 0xf50d088dUL, 0xc8206e3bUL, 0x5e10694cUL, 0xe44160d5UL,
+- 0x727167a2UL, 0xd1e4033cUL, 0x47d4044bUL, 0xfd850dd2UL, 0x6bb50aa5UL,
+- 0xfaa8b535UL, 0x6c98b242UL, 0xd6c9bbdbUL, 0x40f9bcacUL, 0xe36cd832UL,
+- 0x755cdf45UL, 0xcf0dd6dcUL, 0x593dd1abUL, 0xac30d926UL, 0x3a00de51UL,
+- 0x8051d7c8UL, 0x1661d0bfUL, 0xb5f4b421UL, 0x23c4b356UL, 0x9995bacfUL,
+- 0x0fa5bdb8UL, 0x9eb80228UL, 0x0888055fUL, 0xb2d90cc6UL, 0x24e90bb1UL,
+- 0x877c6f2fUL, 0x114c6858UL, 0xab1d61c1UL, 0x3d2d66b6UL, 0x9041dc76UL,
+- 0x0671db01UL, 0xbc20d298UL, 0x2a10d5efUL, 0x8985b171UL, 0x1fb5b606UL,
+- 0xa5e4bf9fUL, 0x33d4b8e8UL, 0xa2c90778UL, 0x34f9000fUL, 0x8ea80996UL,
+- 0x18980ee1UL, 0xbb0d6a7fUL, 0x2d3d6d08UL, 0x976c6491UL, 0x015c63e6UL,
+- 0xf4516b6bUL, 0x62616c1cUL, 0xd8306585UL, 0x4e0062f2UL, 0xed95066cUL,
+- 0x7ba5011bUL, 0xc1f40882UL, 0x57c40ff5UL, 0xc6d9b065UL, 0x50e9b712UL,
+- 0xeab8be8bUL, 0x7c88b9fcUL, 0xdf1ddd62UL, 0x492dda15UL, 0xf37cd38cUL,
+- 0x654cd4fbUL, 0x5861b24dUL, 0xce51b53aUL, 0x7400bca3UL, 0xe230bbd4UL,
+- 0x41a5df4aUL, 0xd795d83dUL, 0x6dc4d1a4UL, 0xfbf4d6d3UL, 0x6ae96943UL,
+- 0xfcd96e34UL, 0x468867adUL, 0xd0b860daUL, 0x732d0444UL, 0xe51d0333UL,
+- 0x5f4c0aaaUL, 0xc97c0dddUL, 0x3c710550UL, 0xaa410227UL, 0x10100bbeUL,
+- 0x86200cc9UL, 0x25b56857UL, 0xb3856f20UL, 0x09d466b9UL, 0x9fe461ceUL,
+- 0x0ef9de5eUL, 0x98c9d929UL, 0x2298d0b0UL, 0xb4a8d7c7UL, 0x173db359UL,
+- 0x810db42eUL, 0x3b5cbdb7UL, 0xad6cbac0UL, 0x2083b8edUL, 0xb6b3bf9aUL,
+- 0x0ce2b603UL, 0x9ad2b174UL, 0x3947d5eaUL, 0xaf77d29dUL, 0x1526db04UL,
+- 0x8316dc73UL, 0x120b63e3UL, 0x843b6494UL, 0x3e6a6d0dUL, 0xa85a6a7aUL,
+- 0x0bcf0ee4UL, 0x9dff0993UL, 0x27ae000aUL, 0xb19e077dUL, 0x44930ff0UL,
+- 0xd2a30887UL, 0x68f2011eUL, 0xfec20669UL, 0x5d5762f7UL, 0xcb676580UL,
+- 0x71366c19UL, 0xe7066b6eUL, 0x761bd4feUL, 0xe02bd389UL, 0x5a7ada10UL,
+- 0xcc4add67UL, 0x6fdfb9f9UL, 0xf9efbe8eUL, 0x43beb717UL, 0xd58eb060UL,
+- 0xe8a3d6d6UL, 0x7e93d1a1UL, 0xc4c2d838UL, 0x52f2df4fUL, 0xf167bbd1UL,
+- 0x6757bca6UL, 0xdd06b53fUL, 0x4b36b248UL, 0xda2b0dd8UL, 0x4c1b0aafUL,
+- 0xf64a0336UL, 0x607a0441UL, 0xc3ef60dfUL, 0x55df67a8UL, 0xef8e6e31UL,
+- 0x79be6946UL, 0x8cb361cbUL, 0x1a8366bcUL, 0xa0d26f25UL, 0x36e26852UL,
+- 0x95770cccUL, 0x03470bbbUL, 0xb9160222UL, 0x2f260555UL, 0xbe3bbac5UL,
+- 0x280bbdb2UL, 0x925ab42bUL, 0x046ab35cUL, 0xa7ffd7c2UL, 0x31cfd0b5UL,
+- 0x8b9ed92cUL, 0x1daede5bUL, 0xb0c2649bUL, 0x26f263ecUL, 0x9ca36a75UL,
+- 0x0a936d02UL, 0xa906099cUL, 0x3f360eebUL, 0x85670772UL, 0x13570005UL,
+- 0x824abf95UL, 0x147ab8e2UL, 0xae2bb17bUL, 0x381bb60cUL, 0x9b8ed292UL,
+- 0x0dbed5e5UL, 0xb7efdc7cUL, 0x21dfdb0bUL, 0xd4d2d386UL, 0x42e2d4f1UL,
+- 0xf8b3dd68UL, 0x6e83da1fUL, 0xcd16be81UL, 0x5b26b9f6UL, 0xe177b06fUL,
+- 0x7747b718UL, 0xe65a0888UL, 0x706a0fffUL, 0xca3b0666UL, 0x5c0b0111UL,
+- 0xff9e658fUL, 0x69ae62f8UL, 0xd3ff6b61UL, 0x45cf6c16UL, 0x78e20aa0UL,
+- 0xeed20dd7UL, 0x5483044eUL, 0xc2b30339UL, 0x612667a7UL, 0xf71660d0UL,
+- 0x4d476949UL, 0xdb776e3eUL, 0x4a6ad1aeUL, 0xdc5ad6d9UL, 0x660bdf40UL,
+- 0xf03bd837UL, 0x53aebca9UL, 0xc59ebbdeUL, 0x7fcfb247UL, 0xe9ffb530UL,
+- 0x1cf2bdbdUL, 0x8ac2bacaUL, 0x3093b353UL, 0xa6a3b424UL, 0x0536d0baUL,
+- 0x9306d7cdUL, 0x2957de54UL, 0xbf67d923UL, 0x2e7a66b3UL, 0xb84a61c4UL,
+- 0x021b685dUL, 0x942b6f2aUL, 0x37be0bb4UL, 0xa18e0cc3UL, 0x1bdf055aUL,
+- 0x8def022dUL
+- },
+- {
+- 0x00000000UL, 0x41311b19UL, 0x82623632UL, 0xc3532d2bUL, 0x04c56c64UL,
+- 0x45f4777dUL, 0x86a75a56UL, 0xc796414fUL, 0x088ad9c8UL, 0x49bbc2d1UL,
+- 0x8ae8effaUL, 0xcbd9f4e3UL, 0x0c4fb5acUL, 0x4d7eaeb5UL, 0x8e2d839eUL,
+- 0xcf1c9887UL, 0x5112c24aUL, 0x1023d953UL, 0xd370f478UL, 0x9241ef61UL,
+- 0x55d7ae2eUL, 0x14e6b537UL, 0xd7b5981cUL, 0x96848305UL, 0x59981b82UL,
+- 0x18a9009bUL, 0xdbfa2db0UL, 0x9acb36a9UL, 0x5d5d77e6UL, 0x1c6c6cffUL,
+- 0xdf3f41d4UL, 0x9e0e5acdUL, 0xa2248495UL, 0xe3159f8cUL, 0x2046b2a7UL,
+- 0x6177a9beUL, 0xa6e1e8f1UL, 0xe7d0f3e8UL, 0x2483dec3UL, 0x65b2c5daUL,
+- 0xaaae5d5dUL, 0xeb9f4644UL, 0x28cc6b6fUL, 0x69fd7076UL, 0xae6b3139UL,
+- 0xef5a2a20UL, 0x2c09070bUL, 0x6d381c12UL, 0xf33646dfUL, 0xb2075dc6UL,
+- 0x715470edUL, 0x30656bf4UL, 0xf7f32abbUL, 0xb6c231a2UL, 0x75911c89UL,
+- 0x34a00790UL, 0xfbbc9f17UL, 0xba8d840eUL, 0x79dea925UL, 0x38efb23cUL,
+- 0xff79f373UL, 0xbe48e86aUL, 0x7d1bc541UL, 0x3c2ade58UL, 0x054f79f0UL,
+- 0x447e62e9UL, 0x872d4fc2UL, 0xc61c54dbUL, 0x018a1594UL, 0x40bb0e8dUL,
+- 0x83e823a6UL, 0xc2d938bfUL, 0x0dc5a038UL, 0x4cf4bb21UL, 0x8fa7960aUL,
+- 0xce968d13UL, 0x0900cc5cUL, 0x4831d745UL, 0x8b62fa6eUL, 0xca53e177UL,
+- 0x545dbbbaUL, 0x156ca0a3UL, 0xd63f8d88UL, 0x970e9691UL, 0x5098d7deUL,
+- 0x11a9ccc7UL, 0xd2fae1ecUL, 0x93cbfaf5UL, 0x5cd76272UL, 0x1de6796bUL,
+- 0xdeb55440UL, 0x9f844f59UL, 0x58120e16UL, 0x1923150fUL, 0xda703824UL,
+- 0x9b41233dUL, 0xa76bfd65UL, 0xe65ae67cUL, 0x2509cb57UL, 0x6438d04eUL,
+- 0xa3ae9101UL, 0xe29f8a18UL, 0x21cca733UL, 0x60fdbc2aUL, 0xafe124adUL,
+- 0xeed03fb4UL, 0x2d83129fUL, 0x6cb20986UL, 0xab2448c9UL, 0xea1553d0UL,
+- 0x29467efbUL, 0x687765e2UL, 0xf6793f2fUL, 0xb7482436UL, 0x741b091dUL,
+- 0x352a1204UL, 0xf2bc534bUL, 0xb38d4852UL, 0x70de6579UL, 0x31ef7e60UL,
+- 0xfef3e6e7UL, 0xbfc2fdfeUL, 0x7c91d0d5UL, 0x3da0cbccUL, 0xfa368a83UL,
+- 0xbb07919aUL, 0x7854bcb1UL, 0x3965a7a8UL, 0x4b98833bUL, 0x0aa99822UL,
+- 0xc9fab509UL, 0x88cbae10UL, 0x4f5def5fUL, 0x0e6cf446UL, 0xcd3fd96dUL,
+- 0x8c0ec274UL, 0x43125af3UL, 0x022341eaUL, 0xc1706cc1UL, 0x804177d8UL,
+- 0x47d73697UL, 0x06e62d8eUL, 0xc5b500a5UL, 0x84841bbcUL, 0x1a8a4171UL,
+- 0x5bbb5a68UL, 0x98e87743UL, 0xd9d96c5aUL, 0x1e4f2d15UL, 0x5f7e360cUL,
+- 0x9c2d1b27UL, 0xdd1c003eUL, 0x120098b9UL, 0x533183a0UL, 0x9062ae8bUL,
+- 0xd153b592UL, 0x16c5f4ddUL, 0x57f4efc4UL, 0x94a7c2efUL, 0xd596d9f6UL,
+- 0xe9bc07aeUL, 0xa88d1cb7UL, 0x6bde319cUL, 0x2aef2a85UL, 0xed796bcaUL,
+- 0xac4870d3UL, 0x6f1b5df8UL, 0x2e2a46e1UL, 0xe136de66UL, 0xa007c57fUL,
+- 0x6354e854UL, 0x2265f34dUL, 0xe5f3b202UL, 0xa4c2a91bUL, 0x67918430UL,
+- 0x26a09f29UL, 0xb8aec5e4UL, 0xf99fdefdUL, 0x3accf3d6UL, 0x7bfde8cfUL,
+- 0xbc6ba980UL, 0xfd5ab299UL, 0x3e099fb2UL, 0x7f3884abUL, 0xb0241c2cUL,
+- 0xf1150735UL, 0x32462a1eUL, 0x73773107UL, 0xb4e17048UL, 0xf5d06b51UL,
+- 0x3683467aUL, 0x77b25d63UL, 0x4ed7facbUL, 0x0fe6e1d2UL, 0xccb5ccf9UL,
+- 0x8d84d7e0UL, 0x4a1296afUL, 0x0b238db6UL, 0xc870a09dUL, 0x8941bb84UL,
+- 0x465d2303UL, 0x076c381aUL, 0xc43f1531UL, 0x850e0e28UL, 0x42984f67UL,
+- 0x03a9547eUL, 0xc0fa7955UL, 0x81cb624cUL, 0x1fc53881UL, 0x5ef42398UL,
+- 0x9da70eb3UL, 0xdc9615aaUL, 0x1b0054e5UL, 0x5a314ffcUL, 0x996262d7UL,
+- 0xd85379ceUL, 0x174fe149UL, 0x567efa50UL, 0x952dd77bUL, 0xd41ccc62UL,
+- 0x138a8d2dUL, 0x52bb9634UL, 0x91e8bb1fUL, 0xd0d9a006UL, 0xecf37e5eUL,
+- 0xadc26547UL, 0x6e91486cUL, 0x2fa05375UL, 0xe836123aUL, 0xa9070923UL,
+- 0x6a542408UL, 0x2b653f11UL, 0xe479a796UL, 0xa548bc8fUL, 0x661b91a4UL,
+- 0x272a8abdUL, 0xe0bccbf2UL, 0xa18dd0ebUL, 0x62defdc0UL, 0x23efe6d9UL,
+- 0xbde1bc14UL, 0xfcd0a70dUL, 0x3f838a26UL, 0x7eb2913fUL, 0xb924d070UL,
+- 0xf815cb69UL, 0x3b46e642UL, 0x7a77fd5bUL, 0xb56b65dcUL, 0xf45a7ec5UL,
+- 0x370953eeUL, 0x763848f7UL, 0xb1ae09b8UL, 0xf09f12a1UL, 0x33cc3f8aUL,
+- 0x72fd2493UL
+- },
+- {
+- 0x00000000UL, 0x376ac201UL, 0x6ed48403UL, 0x59be4602UL, 0xdca80907UL,
+- 0xebc2cb06UL, 0xb27c8d04UL, 0x85164f05UL, 0xb851130eUL, 0x8f3bd10fUL,
+- 0xd685970dUL, 0xe1ef550cUL, 0x64f91a09UL, 0x5393d808UL, 0x0a2d9e0aUL,
+- 0x3d475c0bUL, 0x70a3261cUL, 0x47c9e41dUL, 0x1e77a21fUL, 0x291d601eUL,
+- 0xac0b2f1bUL, 0x9b61ed1aUL, 0xc2dfab18UL, 0xf5b56919UL, 0xc8f23512UL,
+- 0xff98f713UL, 0xa626b111UL, 0x914c7310UL, 0x145a3c15UL, 0x2330fe14UL,
+- 0x7a8eb816UL, 0x4de47a17UL, 0xe0464d38UL, 0xd72c8f39UL, 0x8e92c93bUL,
+- 0xb9f80b3aUL, 0x3cee443fUL, 0x0b84863eUL, 0x523ac03cUL, 0x6550023dUL,
+- 0x58175e36UL, 0x6f7d9c37UL, 0x36c3da35UL, 0x01a91834UL, 0x84bf5731UL,
+- 0xb3d59530UL, 0xea6bd332UL, 0xdd011133UL, 0x90e56b24UL, 0xa78fa925UL,
+- 0xfe31ef27UL, 0xc95b2d26UL, 0x4c4d6223UL, 0x7b27a022UL, 0x2299e620UL,
+- 0x15f32421UL, 0x28b4782aUL, 0x1fdeba2bUL, 0x4660fc29UL, 0x710a3e28UL,
+- 0xf41c712dUL, 0xc376b32cUL, 0x9ac8f52eUL, 0xada2372fUL, 0xc08d9a70UL,
+- 0xf7e75871UL, 0xae591e73UL, 0x9933dc72UL, 0x1c259377UL, 0x2b4f5176UL,
+- 0x72f11774UL, 0x459bd575UL, 0x78dc897eUL, 0x4fb64b7fUL, 0x16080d7dUL,
+- 0x2162cf7cUL, 0xa4748079UL, 0x931e4278UL, 0xcaa0047aUL, 0xfdcac67bUL,
+- 0xb02ebc6cUL, 0x87447e6dUL, 0xdefa386fUL, 0xe990fa6eUL, 0x6c86b56bUL,
+- 0x5bec776aUL, 0x02523168UL, 0x3538f369UL, 0x087faf62UL, 0x3f156d63UL,
+- 0x66ab2b61UL, 0x51c1e960UL, 0xd4d7a665UL, 0xe3bd6464UL, 0xba032266UL,
+- 0x8d69e067UL, 0x20cbd748UL, 0x17a11549UL, 0x4e1f534bUL, 0x7975914aUL,
+- 0xfc63de4fUL, 0xcb091c4eUL, 0x92b75a4cUL, 0xa5dd984dUL, 0x989ac446UL,
+- 0xaff00647UL, 0xf64e4045UL, 0xc1248244UL, 0x4432cd41UL, 0x73580f40UL,
+- 0x2ae64942UL, 0x1d8c8b43UL, 0x5068f154UL, 0x67023355UL, 0x3ebc7557UL,
+- 0x09d6b756UL, 0x8cc0f853UL, 0xbbaa3a52UL, 0xe2147c50UL, 0xd57ebe51UL,
+- 0xe839e25aUL, 0xdf53205bUL, 0x86ed6659UL, 0xb187a458UL, 0x3491eb5dUL,
+- 0x03fb295cUL, 0x5a456f5eUL, 0x6d2fad5fUL, 0x801b35e1UL, 0xb771f7e0UL,
+- 0xeecfb1e2UL, 0xd9a573e3UL, 0x5cb33ce6UL, 0x6bd9fee7UL, 0x3267b8e5UL,
+- 0x050d7ae4UL, 0x384a26efUL, 0x0f20e4eeUL, 0x569ea2ecUL, 0x61f460edUL,
+- 0xe4e22fe8UL, 0xd388ede9UL, 0x8a36abebUL, 0xbd5c69eaUL, 0xf0b813fdUL,
+- 0xc7d2d1fcUL, 0x9e6c97feUL, 0xa90655ffUL, 0x2c101afaUL, 0x1b7ad8fbUL,
+- 0x42c49ef9UL, 0x75ae5cf8UL, 0x48e900f3UL, 0x7f83c2f2UL, 0x263d84f0UL,
+- 0x115746f1UL, 0x944109f4UL, 0xa32bcbf5UL, 0xfa958df7UL, 0xcdff4ff6UL,
+- 0x605d78d9UL, 0x5737bad8UL, 0x0e89fcdaUL, 0x39e33edbUL, 0xbcf571deUL,
+- 0x8b9fb3dfUL, 0xd221f5ddUL, 0xe54b37dcUL, 0xd80c6bd7UL, 0xef66a9d6UL,
+- 0xb6d8efd4UL, 0x81b22dd5UL, 0x04a462d0UL, 0x33cea0d1UL, 0x6a70e6d3UL,
+- 0x5d1a24d2UL, 0x10fe5ec5UL, 0x27949cc4UL, 0x7e2adac6UL, 0x494018c7UL,
+- 0xcc5657c2UL, 0xfb3c95c3UL, 0xa282d3c1UL, 0x95e811c0UL, 0xa8af4dcbUL,
+- 0x9fc58fcaUL, 0xc67bc9c8UL, 0xf1110bc9UL, 0x740744ccUL, 0x436d86cdUL,
+- 0x1ad3c0cfUL, 0x2db902ceUL, 0x4096af91UL, 0x77fc6d90UL, 0x2e422b92UL,
+- 0x1928e993UL, 0x9c3ea696UL, 0xab546497UL, 0xf2ea2295UL, 0xc580e094UL,
+- 0xf8c7bc9fUL, 0xcfad7e9eUL, 0x9613389cUL, 0xa179fa9dUL, 0x246fb598UL,
+- 0x13057799UL, 0x4abb319bUL, 0x7dd1f39aUL, 0x3035898dUL, 0x075f4b8cUL,
+- 0x5ee10d8eUL, 0x698bcf8fUL, 0xec9d808aUL, 0xdbf7428bUL, 0x82490489UL,
+- 0xb523c688UL, 0x88649a83UL, 0xbf0e5882UL, 0xe6b01e80UL, 0xd1dadc81UL,
+- 0x54cc9384UL, 0x63a65185UL, 0x3a181787UL, 0x0d72d586UL, 0xa0d0e2a9UL,
+- 0x97ba20a8UL, 0xce0466aaUL, 0xf96ea4abUL, 0x7c78ebaeUL, 0x4b1229afUL,
+- 0x12ac6fadUL, 0x25c6adacUL, 0x1881f1a7UL, 0x2feb33a6UL, 0x765575a4UL,
+- 0x413fb7a5UL, 0xc429f8a0UL, 0xf3433aa1UL, 0xaafd7ca3UL, 0x9d97bea2UL,
+- 0xd073c4b5UL, 0xe71906b4UL, 0xbea740b6UL, 0x89cd82b7UL, 0x0cdbcdb2UL,
+- 0x3bb10fb3UL, 0x620f49b1UL, 0x55658bb0UL, 0x6822d7bbUL, 0x5f4815baUL,
+- 0x06f653b8UL, 0x319c91b9UL, 0xb48adebcUL, 0x83e01cbdUL, 0xda5e5abfUL,
+- 0xed3498beUL
+- },
+- {
+- 0x00000000UL, 0x6567bcb8UL, 0x8bc809aaUL, 0xeeafb512UL, 0x5797628fUL,
+- 0x32f0de37UL, 0xdc5f6b25UL, 0xb938d79dUL, 0xef28b4c5UL, 0x8a4f087dUL,
+- 0x64e0bd6fUL, 0x018701d7UL, 0xb8bfd64aUL, 0xddd86af2UL, 0x3377dfe0UL,
+- 0x56106358UL, 0x9f571950UL, 0xfa30a5e8UL, 0x149f10faUL, 0x71f8ac42UL,
+- 0xc8c07bdfUL, 0xada7c767UL, 0x43087275UL, 0x266fcecdUL, 0x707fad95UL,
+- 0x1518112dUL, 0xfbb7a43fUL, 0x9ed01887UL, 0x27e8cf1aUL, 0x428f73a2UL,
+- 0xac20c6b0UL, 0xc9477a08UL, 0x3eaf32a0UL, 0x5bc88e18UL, 0xb5673b0aUL,
+- 0xd00087b2UL, 0x6938502fUL, 0x0c5fec97UL, 0xe2f05985UL, 0x8797e53dUL,
+- 0xd1878665UL, 0xb4e03addUL, 0x5a4f8fcfUL, 0x3f283377UL, 0x8610e4eaUL,
+- 0xe3775852UL, 0x0dd8ed40UL, 0x68bf51f8UL, 0xa1f82bf0UL, 0xc49f9748UL,
+- 0x2a30225aUL, 0x4f579ee2UL, 0xf66f497fUL, 0x9308f5c7UL, 0x7da740d5UL,
+- 0x18c0fc6dUL, 0x4ed09f35UL, 0x2bb7238dUL, 0xc518969fUL, 0xa07f2a27UL,
+- 0x1947fdbaUL, 0x7c204102UL, 0x928ff410UL, 0xf7e848a8UL, 0x3d58149bUL,
+- 0x583fa823UL, 0xb6901d31UL, 0xd3f7a189UL, 0x6acf7614UL, 0x0fa8caacUL,
+- 0xe1077fbeUL, 0x8460c306UL, 0xd270a05eUL, 0xb7171ce6UL, 0x59b8a9f4UL,
+- 0x3cdf154cUL, 0x85e7c2d1UL, 0xe0807e69UL, 0x0e2fcb7bUL, 0x6b4877c3UL,
+- 0xa20f0dcbUL, 0xc768b173UL, 0x29c70461UL, 0x4ca0b8d9UL, 0xf5986f44UL,
+- 0x90ffd3fcUL, 0x7e5066eeUL, 0x1b37da56UL, 0x4d27b90eUL, 0x284005b6UL,
+- 0xc6efb0a4UL, 0xa3880c1cUL, 0x1ab0db81UL, 0x7fd76739UL, 0x9178d22bUL,
+- 0xf41f6e93UL, 0x03f7263bUL, 0x66909a83UL, 0x883f2f91UL, 0xed589329UL,
+- 0x546044b4UL, 0x3107f80cUL, 0xdfa84d1eUL, 0xbacff1a6UL, 0xecdf92feUL,
+- 0x89b82e46UL, 0x67179b54UL, 0x027027ecUL, 0xbb48f071UL, 0xde2f4cc9UL,
+- 0x3080f9dbUL, 0x55e74563UL, 0x9ca03f6bUL, 0xf9c783d3UL, 0x176836c1UL,
+- 0x720f8a79UL, 0xcb375de4UL, 0xae50e15cUL, 0x40ff544eUL, 0x2598e8f6UL,
+- 0x73888baeUL, 0x16ef3716UL, 0xf8408204UL, 0x9d273ebcUL, 0x241fe921UL,
+- 0x41785599UL, 0xafd7e08bUL, 0xcab05c33UL, 0x3bb659edUL, 0x5ed1e555UL,
+- 0xb07e5047UL, 0xd519ecffUL, 0x6c213b62UL, 0x094687daUL, 0xe7e932c8UL,
+- 0x828e8e70UL, 0xd49eed28UL, 0xb1f95190UL, 0x5f56e482UL, 0x3a31583aUL,
+- 0x83098fa7UL, 0xe66e331fUL, 0x08c1860dUL, 0x6da63ab5UL, 0xa4e140bdUL,
+- 0xc186fc05UL, 0x2f294917UL, 0x4a4ef5afUL, 0xf3762232UL, 0x96119e8aUL,
+- 0x78be2b98UL, 0x1dd99720UL, 0x4bc9f478UL, 0x2eae48c0UL, 0xc001fdd2UL,
+- 0xa566416aUL, 0x1c5e96f7UL, 0x79392a4fUL, 0x97969f5dUL, 0xf2f123e5UL,
+- 0x05196b4dUL, 0x607ed7f5UL, 0x8ed162e7UL, 0xebb6de5fUL, 0x528e09c2UL,
+- 0x37e9b57aUL, 0xd9460068UL, 0xbc21bcd0UL, 0xea31df88UL, 0x8f566330UL,
+- 0x61f9d622UL, 0x049e6a9aUL, 0xbda6bd07UL, 0xd8c101bfUL, 0x366eb4adUL,
+- 0x53090815UL, 0x9a4e721dUL, 0xff29cea5UL, 0x11867bb7UL, 0x74e1c70fUL,
+- 0xcdd91092UL, 0xa8beac2aUL, 0x46111938UL, 0x2376a580UL, 0x7566c6d8UL,
+- 0x10017a60UL, 0xfeaecf72UL, 0x9bc973caUL, 0x22f1a457UL, 0x479618efUL,
+- 0xa939adfdUL, 0xcc5e1145UL, 0x06ee4d76UL, 0x6389f1ceUL, 0x8d2644dcUL,
+- 0xe841f864UL, 0x51792ff9UL, 0x341e9341UL, 0xdab12653UL, 0xbfd69aebUL,
+- 0xe9c6f9b3UL, 0x8ca1450bUL, 0x620ef019UL, 0x07694ca1UL, 0xbe519b3cUL,
+- 0xdb362784UL, 0x35999296UL, 0x50fe2e2eUL, 0x99b95426UL, 0xfcdee89eUL,
+- 0x12715d8cUL, 0x7716e134UL, 0xce2e36a9UL, 0xab498a11UL, 0x45e63f03UL,
+- 0x208183bbUL, 0x7691e0e3UL, 0x13f65c5bUL, 0xfd59e949UL, 0x983e55f1UL,
+- 0x2106826cUL, 0x44613ed4UL, 0xaace8bc6UL, 0xcfa9377eUL, 0x38417fd6UL,
+- 0x5d26c36eUL, 0xb389767cUL, 0xd6eecac4UL, 0x6fd61d59UL, 0x0ab1a1e1UL,
+- 0xe41e14f3UL, 0x8179a84bUL, 0xd769cb13UL, 0xb20e77abUL, 0x5ca1c2b9UL,
+- 0x39c67e01UL, 0x80fea99cUL, 0xe5991524UL, 0x0b36a036UL, 0x6e511c8eUL,
+- 0xa7166686UL, 0xc271da3eUL, 0x2cde6f2cUL, 0x49b9d394UL, 0xf0810409UL,
+- 0x95e6b8b1UL, 0x7b490da3UL, 0x1e2eb11bUL, 0x483ed243UL, 0x2d596efbUL,
+- 0xc3f6dbe9UL, 0xa6916751UL, 0x1fa9b0ccUL, 0x7ace0c74UL, 0x9461b966UL,
+- 0xf10605deUL
++local const z_crc_t FAR crc_table[] = {
++ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
++ 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
++ 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
++ 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
++ 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
++ 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
++ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
++ 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
++ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
++ 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
++ 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
++ 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
++ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
++ 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
++ 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
++ 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
++ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
++ 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
++ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
++ 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
++ 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
++ 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
++ 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
++ 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
++ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
++ 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
++ 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
++ 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
++ 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
++ 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
++ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
++ 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
++ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
++ 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
++ 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
++ 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
++ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
++ 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
++ 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
++ 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
++ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
++ 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
++ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
++ 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
++ 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
++ 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
++ 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
++ 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
++ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
++ 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
++ 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
++ 0x2d02ef8d};
++
++#ifdef W
++
++#if W == 8
++
++local const z_word_t FAR crc_big_table[] = {
++ 0x0000000000000000, 0x9630077700000000, 0x2c610eee00000000,
++ 0xba51099900000000, 0x19c46d0700000000, 0x8ff46a7000000000,
++ 0x35a563e900000000, 0xa395649e00000000, 0x3288db0e00000000,
++ 0xa4b8dc7900000000, 0x1ee9d5e000000000, 0x88d9d29700000000,
++ 0x2b4cb60900000000, 0xbd7cb17e00000000, 0x072db8e700000000,
++ 0x911dbf9000000000, 0x6410b71d00000000, 0xf220b06a00000000,
++ 0x4871b9f300000000, 0xde41be8400000000, 0x7dd4da1a00000000,
++ 0xebe4dd6d00000000, 0x51b5d4f400000000, 0xc785d38300000000,
++ 0x56986c1300000000, 0xc0a86b6400000000, 0x7af962fd00000000,
++ 0xecc9658a00000000, 0x4f5c011400000000, 0xd96c066300000000,
++ 0x633d0ffa00000000, 0xf50d088d00000000, 0xc8206e3b00000000,
++ 0x5e10694c00000000, 0xe44160d500000000, 0x727167a200000000,
++ 0xd1e4033c00000000, 0x47d4044b00000000, 0xfd850dd200000000,
++ 0x6bb50aa500000000, 0xfaa8b53500000000, 0x6c98b24200000000,
++ 0xd6c9bbdb00000000, 0x40f9bcac00000000, 0xe36cd83200000000,
++ 0x755cdf4500000000, 0xcf0dd6dc00000000, 0x593dd1ab00000000,
++ 0xac30d92600000000, 0x3a00de5100000000, 0x8051d7c800000000,
++ 0x1661d0bf00000000, 0xb5f4b42100000000, 0x23c4b35600000000,
++ 0x9995bacf00000000, 0x0fa5bdb800000000, 0x9eb8022800000000,
++ 0x0888055f00000000, 0xb2d90cc600000000, 0x24e90bb100000000,
++ 0x877c6f2f00000000, 0x114c685800000000, 0xab1d61c100000000,
++ 0x3d2d66b600000000, 0x9041dc7600000000, 0x0671db0100000000,
++ 0xbc20d29800000000, 0x2a10d5ef00000000, 0x8985b17100000000,
++ 0x1fb5b60600000000, 0xa5e4bf9f00000000, 0x33d4b8e800000000,
++ 0xa2c9077800000000, 0x34f9000f00000000, 0x8ea8099600000000,
++ 0x18980ee100000000, 0xbb0d6a7f00000000, 0x2d3d6d0800000000,
++ 0x976c649100000000, 0x015c63e600000000, 0xf4516b6b00000000,
++ 0x62616c1c00000000, 0xd830658500000000, 0x4e0062f200000000,
++ 0xed95066c00000000, 0x7ba5011b00000000, 0xc1f4088200000000,
++ 0x57c40ff500000000, 0xc6d9b06500000000, 0x50e9b71200000000,
++ 0xeab8be8b00000000, 0x7c88b9fc00000000, 0xdf1ddd6200000000,
++ 0x492dda1500000000, 0xf37cd38c00000000, 0x654cd4fb00000000,
++ 0x5861b24d00000000, 0xce51b53a00000000, 0x7400bca300000000,
++ 0xe230bbd400000000, 0x41a5df4a00000000, 0xd795d83d00000000,
++ 0x6dc4d1a400000000, 0xfbf4d6d300000000, 0x6ae9694300000000,
++ 0xfcd96e3400000000, 0x468867ad00000000, 0xd0b860da00000000,
++ 0x732d044400000000, 0xe51d033300000000, 0x5f4c0aaa00000000,
++ 0xc97c0ddd00000000, 0x3c71055000000000, 0xaa41022700000000,
++ 0x10100bbe00000000, 0x86200cc900000000, 0x25b5685700000000,
++ 0xb3856f2000000000, 0x09d466b900000000, 0x9fe461ce00000000,
++ 0x0ef9de5e00000000, 0x98c9d92900000000, 0x2298d0b000000000,
++ 0xb4a8d7c700000000, 0x173db35900000000, 0x810db42e00000000,
++ 0x3b5cbdb700000000, 0xad6cbac000000000, 0x2083b8ed00000000,
++ 0xb6b3bf9a00000000, 0x0ce2b60300000000, 0x9ad2b17400000000,
++ 0x3947d5ea00000000, 0xaf77d29d00000000, 0x1526db0400000000,
++ 0x8316dc7300000000, 0x120b63e300000000, 0x843b649400000000,
++ 0x3e6a6d0d00000000, 0xa85a6a7a00000000, 0x0bcf0ee400000000,
++ 0x9dff099300000000, 0x27ae000a00000000, 0xb19e077d00000000,
++ 0x44930ff000000000, 0xd2a3088700000000, 0x68f2011e00000000,
++ 0xfec2066900000000, 0x5d5762f700000000, 0xcb67658000000000,
++ 0x71366c1900000000, 0xe7066b6e00000000, 0x761bd4fe00000000,
++ 0xe02bd38900000000, 0x5a7ada1000000000, 0xcc4add6700000000,
++ 0x6fdfb9f900000000, 0xf9efbe8e00000000, 0x43beb71700000000,
++ 0xd58eb06000000000, 0xe8a3d6d600000000, 0x7e93d1a100000000,
++ 0xc4c2d83800000000, 0x52f2df4f00000000, 0xf167bbd100000000,
++ 0x6757bca600000000, 0xdd06b53f00000000, 0x4b36b24800000000,
++ 0xda2b0dd800000000, 0x4c1b0aaf00000000, 0xf64a033600000000,
++ 0x607a044100000000, 0xc3ef60df00000000, 0x55df67a800000000,
++ 0xef8e6e3100000000, 0x79be694600000000, 0x8cb361cb00000000,
++ 0x1a8366bc00000000, 0xa0d26f2500000000, 0x36e2685200000000,
++ 0x95770ccc00000000, 0x03470bbb00000000, 0xb916022200000000,
++ 0x2f26055500000000, 0xbe3bbac500000000, 0x280bbdb200000000,
++ 0x925ab42b00000000, 0x046ab35c00000000, 0xa7ffd7c200000000,
++ 0x31cfd0b500000000, 0x8b9ed92c00000000, 0x1daede5b00000000,
++ 0xb0c2649b00000000, 0x26f263ec00000000, 0x9ca36a7500000000,
++ 0x0a936d0200000000, 0xa906099c00000000, 0x3f360eeb00000000,
++ 0x8567077200000000, 0x1357000500000000, 0x824abf9500000000,
++ 0x147ab8e200000000, 0xae2bb17b00000000, 0x381bb60c00000000,
++ 0x9b8ed29200000000, 0x0dbed5e500000000, 0xb7efdc7c00000000,
++ 0x21dfdb0b00000000, 0xd4d2d38600000000, 0x42e2d4f100000000,
++ 0xf8b3dd6800000000, 0x6e83da1f00000000, 0xcd16be8100000000,
++ 0x5b26b9f600000000, 0xe177b06f00000000, 0x7747b71800000000,
++ 0xe65a088800000000, 0x706a0fff00000000, 0xca3b066600000000,
++ 0x5c0b011100000000, 0xff9e658f00000000, 0x69ae62f800000000,
++ 0xd3ff6b6100000000, 0x45cf6c1600000000, 0x78e20aa000000000,
++ 0xeed20dd700000000, 0x5483044e00000000, 0xc2b3033900000000,
++ 0x612667a700000000, 0xf71660d000000000, 0x4d47694900000000,
++ 0xdb776e3e00000000, 0x4a6ad1ae00000000, 0xdc5ad6d900000000,
++ 0x660bdf4000000000, 0xf03bd83700000000, 0x53aebca900000000,
++ 0xc59ebbde00000000, 0x7fcfb24700000000, 0xe9ffb53000000000,
++ 0x1cf2bdbd00000000, 0x8ac2baca00000000, 0x3093b35300000000,
++ 0xa6a3b42400000000, 0x0536d0ba00000000, 0x9306d7cd00000000,
++ 0x2957de5400000000, 0xbf67d92300000000, 0x2e7a66b300000000,
++ 0xb84a61c400000000, 0x021b685d00000000, 0x942b6f2a00000000,
++ 0x37be0bb400000000, 0xa18e0cc300000000, 0x1bdf055a00000000,
++ 0x8def022d00000000};
++
++#else /* W == 4 */
++
++local const z_word_t FAR crc_big_table[] = {
++ 0x00000000, 0x96300777, 0x2c610eee, 0xba510999, 0x19c46d07,
++ 0x8ff46a70, 0x35a563e9, 0xa395649e, 0x3288db0e, 0xa4b8dc79,
++ 0x1ee9d5e0, 0x88d9d297, 0x2b4cb609, 0xbd7cb17e, 0x072db8e7,
++ 0x911dbf90, 0x6410b71d, 0xf220b06a, 0x4871b9f3, 0xde41be84,
++ 0x7dd4da1a, 0xebe4dd6d, 0x51b5d4f4, 0xc785d383, 0x56986c13,
++ 0xc0a86b64, 0x7af962fd, 0xecc9658a, 0x4f5c0114, 0xd96c0663,
++ 0x633d0ffa, 0xf50d088d, 0xc8206e3b, 0x5e10694c, 0xe44160d5,
++ 0x727167a2, 0xd1e4033c, 0x47d4044b, 0xfd850dd2, 0x6bb50aa5,
++ 0xfaa8b535, 0x6c98b242, 0xd6c9bbdb, 0x40f9bcac, 0xe36cd832,
++ 0x755cdf45, 0xcf0dd6dc, 0x593dd1ab, 0xac30d926, 0x3a00de51,
++ 0x8051d7c8, 0x1661d0bf, 0xb5f4b421, 0x23c4b356, 0x9995bacf,
++ 0x0fa5bdb8, 0x9eb80228, 0x0888055f, 0xb2d90cc6, 0x24e90bb1,
++ 0x877c6f2f, 0x114c6858, 0xab1d61c1, 0x3d2d66b6, 0x9041dc76,
++ 0x0671db01, 0xbc20d298, 0x2a10d5ef, 0x8985b171, 0x1fb5b606,
++ 0xa5e4bf9f, 0x33d4b8e8, 0xa2c90778, 0x34f9000f, 0x8ea80996,
++ 0x18980ee1, 0xbb0d6a7f, 0x2d3d6d08, 0x976c6491, 0x015c63e6,
++ 0xf4516b6b, 0x62616c1c, 0xd8306585, 0x4e0062f2, 0xed95066c,
++ 0x7ba5011b, 0xc1f40882, 0x57c40ff5, 0xc6d9b065, 0x50e9b712,
++ 0xeab8be8b, 0x7c88b9fc, 0xdf1ddd62, 0x492dda15, 0xf37cd38c,
++ 0x654cd4fb, 0x5861b24d, 0xce51b53a, 0x7400bca3, 0xe230bbd4,
++ 0x41a5df4a, 0xd795d83d, 0x6dc4d1a4, 0xfbf4d6d3, 0x6ae96943,
++ 0xfcd96e34, 0x468867ad, 0xd0b860da, 0x732d0444, 0xe51d0333,
++ 0x5f4c0aaa, 0xc97c0ddd, 0x3c710550, 0xaa410227, 0x10100bbe,
++ 0x86200cc9, 0x25b56857, 0xb3856f20, 0x09d466b9, 0x9fe461ce,
++ 0x0ef9de5e, 0x98c9d929, 0x2298d0b0, 0xb4a8d7c7, 0x173db359,
++ 0x810db42e, 0x3b5cbdb7, 0xad6cbac0, 0x2083b8ed, 0xb6b3bf9a,
++ 0x0ce2b603, 0x9ad2b174, 0x3947d5ea, 0xaf77d29d, 0x1526db04,
++ 0x8316dc73, 0x120b63e3, 0x843b6494, 0x3e6a6d0d, 0xa85a6a7a,
++ 0x0bcf0ee4, 0x9dff0993, 0x27ae000a, 0xb19e077d, 0x44930ff0,
++ 0xd2a30887, 0x68f2011e, 0xfec20669, 0x5d5762f7, 0xcb676580,
++ 0x71366c19, 0xe7066b6e, 0x761bd4fe, 0xe02bd389, 0x5a7ada10,
++ 0xcc4add67, 0x6fdfb9f9, 0xf9efbe8e, 0x43beb717, 0xd58eb060,
++ 0xe8a3d6d6, 0x7e93d1a1, 0xc4c2d838, 0x52f2df4f, 0xf167bbd1,
++ 0x6757bca6, 0xdd06b53f, 0x4b36b248, 0xda2b0dd8, 0x4c1b0aaf,
++ 0xf64a0336, 0x607a0441, 0xc3ef60df, 0x55df67a8, 0xef8e6e31,
++ 0x79be6946, 0x8cb361cb, 0x1a8366bc, 0xa0d26f25, 0x36e26852,
++ 0x95770ccc, 0x03470bbb, 0xb9160222, 0x2f260555, 0xbe3bbac5,
++ 0x280bbdb2, 0x925ab42b, 0x046ab35c, 0xa7ffd7c2, 0x31cfd0b5,
++ 0x8b9ed92c, 0x1daede5b, 0xb0c2649b, 0x26f263ec, 0x9ca36a75,
++ 0x0a936d02, 0xa906099c, 0x3f360eeb, 0x85670772, 0x13570005,
++ 0x824abf95, 0x147ab8e2, 0xae2bb17b, 0x381bb60c, 0x9b8ed292,
++ 0x0dbed5e5, 0xb7efdc7c, 0x21dfdb0b, 0xd4d2d386, 0x42e2d4f1,
++ 0xf8b3dd68, 0x6e83da1f, 0xcd16be81, 0x5b26b9f6, 0xe177b06f,
++ 0x7747b718, 0xe65a0888, 0x706a0fff, 0xca3b0666, 0x5c0b0111,
++ 0xff9e658f, 0x69ae62f8, 0xd3ff6b61, 0x45cf6c16, 0x78e20aa0,
++ 0xeed20dd7, 0x5483044e, 0xc2b30339, 0x612667a7, 0xf71660d0,
++ 0x4d476949, 0xdb776e3e, 0x4a6ad1ae, 0xdc5ad6d9, 0x660bdf40,
++ 0xf03bd837, 0x53aebca9, 0xc59ebbde, 0x7fcfb247, 0xe9ffb530,
++ 0x1cf2bdbd, 0x8ac2baca, 0x3093b353, 0xa6a3b424, 0x0536d0ba,
++ 0x9306d7cd, 0x2957de54, 0xbf67d923, 0x2e7a66b3, 0xb84a61c4,
++ 0x021b685d, 0x942b6f2a, 0x37be0bb4, 0xa18e0cc3, 0x1bdf055a,
++ 0x8def022d};
++
++#endif
++
++#if N == 1
++
++#if W == 8
++
++local const z_crc_t FAR crc_braid_table[][256] = {
++ {0x00000000, 0xccaa009e, 0x4225077d, 0x8e8f07e3, 0x844a0efa,
++ 0x48e00e64, 0xc66f0987, 0x0ac50919, 0xd3e51bb5, 0x1f4f1b2b,
++ 0x91c01cc8, 0x5d6a1c56, 0x57af154f, 0x9b0515d1, 0x158a1232,
++ 0xd92012ac, 0x7cbb312b, 0xb01131b5, 0x3e9e3656, 0xf23436c8,
++ 0xf8f13fd1, 0x345b3f4f, 0xbad438ac, 0x767e3832, 0xaf5e2a9e,
++ 0x63f42a00, 0xed7b2de3, 0x21d12d7d, 0x2b142464, 0xe7be24fa,
++ 0x69312319, 0xa59b2387, 0xf9766256, 0x35dc62c8, 0xbb53652b,
++ 0x77f965b5, 0x7d3c6cac, 0xb1966c32, 0x3f196bd1, 0xf3b36b4f,
++ 0x2a9379e3, 0xe639797d, 0x68b67e9e, 0xa41c7e00, 0xaed97719,
++ 0x62737787, 0xecfc7064, 0x205670fa, 0x85cd537d, 0x496753e3,
++ 0xc7e85400, 0x0b42549e, 0x01875d87, 0xcd2d5d19, 0x43a25afa,
++ 0x8f085a64, 0x562848c8, 0x9a824856, 0x140d4fb5, 0xd8a74f2b,
++ 0xd2624632, 0x1ec846ac, 0x9047414f, 0x5ced41d1, 0x299dc2ed,
++ 0xe537c273, 0x6bb8c590, 0xa712c50e, 0xadd7cc17, 0x617dcc89,
++ 0xeff2cb6a, 0x2358cbf4, 0xfa78d958, 0x36d2d9c6, 0xb85dde25,
++ 0x74f7debb, 0x7e32d7a2, 0xb298d73c, 0x3c17d0df, 0xf0bdd041,
++ 0x5526f3c6, 0x998cf358, 0x1703f4bb, 0xdba9f425, 0xd16cfd3c,
++ 0x1dc6fda2, 0x9349fa41, 0x5fe3fadf, 0x86c3e873, 0x4a69e8ed,
++ 0xc4e6ef0e, 0x084cef90, 0x0289e689, 0xce23e617, 0x40ace1f4,
++ 0x8c06e16a, 0xd0eba0bb, 0x1c41a025, 0x92cea7c6, 0x5e64a758,
++ 0x54a1ae41, 0x980baedf, 0x1684a93c, 0xda2ea9a2, 0x030ebb0e,
++ 0xcfa4bb90, 0x412bbc73, 0x8d81bced, 0x8744b5f4, 0x4beeb56a,
++ 0xc561b289, 0x09cbb217, 0xac509190, 0x60fa910e, 0xee7596ed,
++ 0x22df9673, 0x281a9f6a, 0xe4b09ff4, 0x6a3f9817, 0xa6959889,
++ 0x7fb58a25, 0xb31f8abb, 0x3d908d58, 0xf13a8dc6, 0xfbff84df,
++ 0x37558441, 0xb9da83a2, 0x7570833c, 0x533b85da, 0x9f918544,
++ 0x111e82a7, 0xddb48239, 0xd7718b20, 0x1bdb8bbe, 0x95548c5d,
++ 0x59fe8cc3, 0x80de9e6f, 0x4c749ef1, 0xc2fb9912, 0x0e51998c,
++ 0x04949095, 0xc83e900b, 0x46b197e8, 0x8a1b9776, 0x2f80b4f1,
++ 0xe32ab46f, 0x6da5b38c, 0xa10fb312, 0xabcaba0b, 0x6760ba95,
++ 0xe9efbd76, 0x2545bde8, 0xfc65af44, 0x30cfafda, 0xbe40a839,
++ 0x72eaa8a7, 0x782fa1be, 0xb485a120, 0x3a0aa6c3, 0xf6a0a65d,
++ 0xaa4de78c, 0x66e7e712, 0xe868e0f1, 0x24c2e06f, 0x2e07e976,
++ 0xe2ade9e8, 0x6c22ee0b, 0xa088ee95, 0x79a8fc39, 0xb502fca7,
++ 0x3b8dfb44, 0xf727fbda, 0xfde2f2c3, 0x3148f25d, 0xbfc7f5be,
++ 0x736df520, 0xd6f6d6a7, 0x1a5cd639, 0x94d3d1da, 0x5879d144,
++ 0x52bcd85d, 0x9e16d8c3, 0x1099df20, 0xdc33dfbe, 0x0513cd12,
++ 0xc9b9cd8c, 0x4736ca6f, 0x8b9ccaf1, 0x8159c3e8, 0x4df3c376,
++ 0xc37cc495, 0x0fd6c40b, 0x7aa64737, 0xb60c47a9, 0x3883404a,
++ 0xf42940d4, 0xfeec49cd, 0x32464953, 0xbcc94eb0, 0x70634e2e,
++ 0xa9435c82, 0x65e95c1c, 0xeb665bff, 0x27cc5b61, 0x2d095278,
++ 0xe1a352e6, 0x6f2c5505, 0xa386559b, 0x061d761c, 0xcab77682,
++ 0x44387161, 0x889271ff, 0x825778e6, 0x4efd7878, 0xc0727f9b,
++ 0x0cd87f05, 0xd5f86da9, 0x19526d37, 0x97dd6ad4, 0x5b776a4a,
++ 0x51b26353, 0x9d1863cd, 0x1397642e, 0xdf3d64b0, 0x83d02561,
++ 0x4f7a25ff, 0xc1f5221c, 0x0d5f2282, 0x079a2b9b, 0xcb302b05,
++ 0x45bf2ce6, 0x89152c78, 0x50353ed4, 0x9c9f3e4a, 0x121039a9,
++ 0xdeba3937, 0xd47f302e, 0x18d530b0, 0x965a3753, 0x5af037cd,
++ 0xff6b144a, 0x33c114d4, 0xbd4e1337, 0x71e413a9, 0x7b211ab0,
++ 0xb78b1a2e, 0x39041dcd, 0xf5ae1d53, 0x2c8e0fff, 0xe0240f61,
++ 0x6eab0882, 0xa201081c, 0xa8c40105, 0x646e019b, 0xeae10678,
++ 0x264b06e6},
++ {0x00000000, 0xa6770bb4, 0x979f1129, 0x31e81a9d, 0xf44f2413,
++ 0x52382fa7, 0x63d0353a, 0xc5a73e8e, 0x33ef4e67, 0x959845d3,
++ 0xa4705f4e, 0x020754fa, 0xc7a06a74, 0x61d761c0, 0x503f7b5d,
++ 0xf64870e9, 0x67de9cce, 0xc1a9977a, 0xf0418de7, 0x56368653,
++ 0x9391b8dd, 0x35e6b369, 0x040ea9f4, 0xa279a240, 0x5431d2a9,
++ 0xf246d91d, 0xc3aec380, 0x65d9c834, 0xa07ef6ba, 0x0609fd0e,
++ 0x37e1e793, 0x9196ec27, 0xcfbd399c, 0x69ca3228, 0x582228b5,
++ 0xfe552301, 0x3bf21d8f, 0x9d85163b, 0xac6d0ca6, 0x0a1a0712,
++ 0xfc5277fb, 0x5a257c4f, 0x6bcd66d2, 0xcdba6d66, 0x081d53e8,
++ 0xae6a585c, 0x9f8242c1, 0x39f54975, 0xa863a552, 0x0e14aee6,
++ 0x3ffcb47b, 0x998bbfcf, 0x5c2c8141, 0xfa5b8af5, 0xcbb39068,
++ 0x6dc49bdc, 0x9b8ceb35, 0x3dfbe081, 0x0c13fa1c, 0xaa64f1a8,
++ 0x6fc3cf26, 0xc9b4c492, 0xf85cde0f, 0x5e2bd5bb, 0x440b7579,
++ 0xe27c7ecd, 0xd3946450, 0x75e36fe4, 0xb044516a, 0x16335ade,
++ 0x27db4043, 0x81ac4bf7, 0x77e43b1e, 0xd19330aa, 0xe07b2a37,
++ 0x460c2183, 0x83ab1f0d, 0x25dc14b9, 0x14340e24, 0xb2430590,
++ 0x23d5e9b7, 0x85a2e203, 0xb44af89e, 0x123df32a, 0xd79acda4,
++ 0x71edc610, 0x4005dc8d, 0xe672d739, 0x103aa7d0, 0xb64dac64,
++ 0x87a5b6f9, 0x21d2bd4d, 0xe47583c3, 0x42028877, 0x73ea92ea,
++ 0xd59d995e, 0x8bb64ce5, 0x2dc14751, 0x1c295dcc, 0xba5e5678,
++ 0x7ff968f6, 0xd98e6342, 0xe86679df, 0x4e11726b, 0xb8590282,
++ 0x1e2e0936, 0x2fc613ab, 0x89b1181f, 0x4c162691, 0xea612d25,
++ 0xdb8937b8, 0x7dfe3c0c, 0xec68d02b, 0x4a1fdb9f, 0x7bf7c102,
++ 0xdd80cab6, 0x1827f438, 0xbe50ff8c, 0x8fb8e511, 0x29cfeea5,
++ 0xdf879e4c, 0x79f095f8, 0x48188f65, 0xee6f84d1, 0x2bc8ba5f,
++ 0x8dbfb1eb, 0xbc57ab76, 0x1a20a0c2, 0x8816eaf2, 0x2e61e146,
++ 0x1f89fbdb, 0xb9fef06f, 0x7c59cee1, 0xda2ec555, 0xebc6dfc8,
++ 0x4db1d47c, 0xbbf9a495, 0x1d8eaf21, 0x2c66b5bc, 0x8a11be08,
++ 0x4fb68086, 0xe9c18b32, 0xd82991af, 0x7e5e9a1b, 0xefc8763c,
++ 0x49bf7d88, 0x78576715, 0xde206ca1, 0x1b87522f, 0xbdf0599b,
++ 0x8c184306, 0x2a6f48b2, 0xdc27385b, 0x7a5033ef, 0x4bb82972,
++ 0xedcf22c6, 0x28681c48, 0x8e1f17fc, 0xbff70d61, 0x198006d5,
++ 0x47abd36e, 0xe1dcd8da, 0xd034c247, 0x7643c9f3, 0xb3e4f77d,
++ 0x1593fcc9, 0x247be654, 0x820cede0, 0x74449d09, 0xd23396bd,
++ 0xe3db8c20, 0x45ac8794, 0x800bb91a, 0x267cb2ae, 0x1794a833,
++ 0xb1e3a387, 0x20754fa0, 0x86024414, 0xb7ea5e89, 0x119d553d,
++ 0xd43a6bb3, 0x724d6007, 0x43a57a9a, 0xe5d2712e, 0x139a01c7,
++ 0xb5ed0a73, 0x840510ee, 0x22721b5a, 0xe7d525d4, 0x41a22e60,
++ 0x704a34fd, 0xd63d3f49, 0xcc1d9f8b, 0x6a6a943f, 0x5b828ea2,
++ 0xfdf58516, 0x3852bb98, 0x9e25b02c, 0xafcdaab1, 0x09baa105,
++ 0xfff2d1ec, 0x5985da58, 0x686dc0c5, 0xce1acb71, 0x0bbdf5ff,
++ 0xadcafe4b, 0x9c22e4d6, 0x3a55ef62, 0xabc30345, 0x0db408f1,
++ 0x3c5c126c, 0x9a2b19d8, 0x5f8c2756, 0xf9fb2ce2, 0xc813367f,
++ 0x6e643dcb, 0x982c4d22, 0x3e5b4696, 0x0fb35c0b, 0xa9c457bf,
++ 0x6c636931, 0xca146285, 0xfbfc7818, 0x5d8b73ac, 0x03a0a617,
++ 0xa5d7ada3, 0x943fb73e, 0x3248bc8a, 0xf7ef8204, 0x519889b0,
++ 0x6070932d, 0xc6079899, 0x304fe870, 0x9638e3c4, 0xa7d0f959,
++ 0x01a7f2ed, 0xc400cc63, 0x6277c7d7, 0x539fdd4a, 0xf5e8d6fe,
++ 0x647e3ad9, 0xc209316d, 0xf3e12bf0, 0x55962044, 0x90311eca,
++ 0x3646157e, 0x07ae0fe3, 0xa1d90457, 0x579174be, 0xf1e67f0a,
++ 0xc00e6597, 0x66796e23, 0xa3de50ad, 0x05a95b19, 0x34414184,
++ 0x92364a30},
++ {0x00000000, 0xcb5cd3a5, 0x4dc8a10b, 0x869472ae, 0x9b914216,
++ 0x50cd91b3, 0xd659e31d, 0x1d0530b8, 0xec53826d, 0x270f51c8,
++ 0xa19b2366, 0x6ac7f0c3, 0x77c2c07b, 0xbc9e13de, 0x3a0a6170,
++ 0xf156b2d5, 0x03d6029b, 0xc88ad13e, 0x4e1ea390, 0x85427035,
++ 0x9847408d, 0x531b9328, 0xd58fe186, 0x1ed33223, 0xef8580f6,
++ 0x24d95353, 0xa24d21fd, 0x6911f258, 0x7414c2e0, 0xbf481145,
++ 0x39dc63eb, 0xf280b04e, 0x07ac0536, 0xccf0d693, 0x4a64a43d,
++ 0x81387798, 0x9c3d4720, 0x57619485, 0xd1f5e62b, 0x1aa9358e,
++ 0xebff875b, 0x20a354fe, 0xa6372650, 0x6d6bf5f5, 0x706ec54d,
++ 0xbb3216e8, 0x3da66446, 0xf6fab7e3, 0x047a07ad, 0xcf26d408,
++ 0x49b2a6a6, 0x82ee7503, 0x9feb45bb, 0x54b7961e, 0xd223e4b0,
++ 0x197f3715, 0xe82985c0, 0x23755665, 0xa5e124cb, 0x6ebdf76e,
++ 0x73b8c7d6, 0xb8e41473, 0x3e7066dd, 0xf52cb578, 0x0f580a6c,
++ 0xc404d9c9, 0x4290ab67, 0x89cc78c2, 0x94c9487a, 0x5f959bdf,
++ 0xd901e971, 0x125d3ad4, 0xe30b8801, 0x28575ba4, 0xaec3290a,
++ 0x659ffaaf, 0x789aca17, 0xb3c619b2, 0x35526b1c, 0xfe0eb8b9,
++ 0x0c8e08f7, 0xc7d2db52, 0x4146a9fc, 0x8a1a7a59, 0x971f4ae1,
++ 0x5c439944, 0xdad7ebea, 0x118b384f, 0xe0dd8a9a, 0x2b81593f,
++ 0xad152b91, 0x6649f834, 0x7b4cc88c, 0xb0101b29, 0x36846987,
++ 0xfdd8ba22, 0x08f40f5a, 0xc3a8dcff, 0x453cae51, 0x8e607df4,
++ 0x93654d4c, 0x58399ee9, 0xdeadec47, 0x15f13fe2, 0xe4a78d37,
++ 0x2ffb5e92, 0xa96f2c3c, 0x6233ff99, 0x7f36cf21, 0xb46a1c84,
++ 0x32fe6e2a, 0xf9a2bd8f, 0x0b220dc1, 0xc07ede64, 0x46eaacca,
++ 0x8db67f6f, 0x90b34fd7, 0x5bef9c72, 0xdd7beedc, 0x16273d79,
++ 0xe7718fac, 0x2c2d5c09, 0xaab92ea7, 0x61e5fd02, 0x7ce0cdba,
++ 0xb7bc1e1f, 0x31286cb1, 0xfa74bf14, 0x1eb014d8, 0xd5ecc77d,
++ 0x5378b5d3, 0x98246676, 0x852156ce, 0x4e7d856b, 0xc8e9f7c5,
++ 0x03b52460, 0xf2e396b5, 0x39bf4510, 0xbf2b37be, 0x7477e41b,
++ 0x6972d4a3, 0xa22e0706, 0x24ba75a8, 0xefe6a60d, 0x1d661643,
++ 0xd63ac5e6, 0x50aeb748, 0x9bf264ed, 0x86f75455, 0x4dab87f0,
++ 0xcb3ff55e, 0x006326fb, 0xf135942e, 0x3a69478b, 0xbcfd3525,
++ 0x77a1e680, 0x6aa4d638, 0xa1f8059d, 0x276c7733, 0xec30a496,
++ 0x191c11ee, 0xd240c24b, 0x54d4b0e5, 0x9f886340, 0x828d53f8,
++ 0x49d1805d, 0xcf45f2f3, 0x04192156, 0xf54f9383, 0x3e134026,
++ 0xb8873288, 0x73dbe12d, 0x6eded195, 0xa5820230, 0x2316709e,
++ 0xe84aa33b, 0x1aca1375, 0xd196c0d0, 0x5702b27e, 0x9c5e61db,
++ 0x815b5163, 0x4a0782c6, 0xcc93f068, 0x07cf23cd, 0xf6999118,
++ 0x3dc542bd, 0xbb513013, 0x700de3b6, 0x6d08d30e, 0xa65400ab,
++ 0x20c07205, 0xeb9ca1a0, 0x11e81eb4, 0xdab4cd11, 0x5c20bfbf,
++ 0x977c6c1a, 0x8a795ca2, 0x41258f07, 0xc7b1fda9, 0x0ced2e0c,
++ 0xfdbb9cd9, 0x36e74f7c, 0xb0733dd2, 0x7b2fee77, 0x662adecf,
++ 0xad760d6a, 0x2be27fc4, 0xe0beac61, 0x123e1c2f, 0xd962cf8a,
++ 0x5ff6bd24, 0x94aa6e81, 0x89af5e39, 0x42f38d9c, 0xc467ff32,
++ 0x0f3b2c97, 0xfe6d9e42, 0x35314de7, 0xb3a53f49, 0x78f9ecec,
++ 0x65fcdc54, 0xaea00ff1, 0x28347d5f, 0xe368aefa, 0x16441b82,
++ 0xdd18c827, 0x5b8cba89, 0x90d0692c, 0x8dd55994, 0x46898a31,
++ 0xc01df89f, 0x0b412b3a, 0xfa1799ef, 0x314b4a4a, 0xb7df38e4,
++ 0x7c83eb41, 0x6186dbf9, 0xaada085c, 0x2c4e7af2, 0xe712a957,
++ 0x15921919, 0xdececabc, 0x585ab812, 0x93066bb7, 0x8e035b0f,
++ 0x455f88aa, 0xc3cbfa04, 0x089729a1, 0xf9c19b74, 0x329d48d1,
++ 0xb4093a7f, 0x7f55e9da, 0x6250d962, 0xa90c0ac7, 0x2f987869,
++ 0xe4c4abcc},
++ {0x00000000, 0x3d6029b0, 0x7ac05360, 0x47a07ad0, 0xf580a6c0,
++ 0xc8e08f70, 0x8f40f5a0, 0xb220dc10, 0x30704bc1, 0x0d106271,
++ 0x4ab018a1, 0x77d03111, 0xc5f0ed01, 0xf890c4b1, 0xbf30be61,
++ 0x825097d1, 0x60e09782, 0x5d80be32, 0x1a20c4e2, 0x2740ed52,
++ 0x95603142, 0xa80018f2, 0xefa06222, 0xd2c04b92, 0x5090dc43,
++ 0x6df0f5f3, 0x2a508f23, 0x1730a693, 0xa5107a83, 0x98705333,
++ 0xdfd029e3, 0xe2b00053, 0xc1c12f04, 0xfca106b4, 0xbb017c64,
++ 0x866155d4, 0x344189c4, 0x0921a074, 0x4e81daa4, 0x73e1f314,
++ 0xf1b164c5, 0xccd14d75, 0x8b7137a5, 0xb6111e15, 0x0431c205,
++ 0x3951ebb5, 0x7ef19165, 0x4391b8d5, 0xa121b886, 0x9c419136,
++ 0xdbe1ebe6, 0xe681c256, 0x54a11e46, 0x69c137f6, 0x2e614d26,
++ 0x13016496, 0x9151f347, 0xac31daf7, 0xeb91a027, 0xd6f18997,
++ 0x64d15587, 0x59b17c37, 0x1e1106e7, 0x23712f57, 0x58f35849,
++ 0x659371f9, 0x22330b29, 0x1f532299, 0xad73fe89, 0x9013d739,
++ 0xd7b3ade9, 0xead38459, 0x68831388, 0x55e33a38, 0x124340e8,
++ 0x2f236958, 0x9d03b548, 0xa0639cf8, 0xe7c3e628, 0xdaa3cf98,
++ 0x3813cfcb, 0x0573e67b, 0x42d39cab, 0x7fb3b51b, 0xcd93690b,
++ 0xf0f340bb, 0xb7533a6b, 0x8a3313db, 0x0863840a, 0x3503adba,
++ 0x72a3d76a, 0x4fc3feda, 0xfde322ca, 0xc0830b7a, 0x872371aa,
++ 0xba43581a, 0x9932774d, 0xa4525efd, 0xe3f2242d, 0xde920d9d,
++ 0x6cb2d18d, 0x51d2f83d, 0x167282ed, 0x2b12ab5d, 0xa9423c8c,
++ 0x9422153c, 0xd3826fec, 0xeee2465c, 0x5cc29a4c, 0x61a2b3fc,
++ 0x2602c92c, 0x1b62e09c, 0xf9d2e0cf, 0xc4b2c97f, 0x8312b3af,
++ 0xbe729a1f, 0x0c52460f, 0x31326fbf, 0x7692156f, 0x4bf23cdf,
++ 0xc9a2ab0e, 0xf4c282be, 0xb362f86e, 0x8e02d1de, 0x3c220dce,
++ 0x0142247e, 0x46e25eae, 0x7b82771e, 0xb1e6b092, 0x8c869922,
++ 0xcb26e3f2, 0xf646ca42, 0x44661652, 0x79063fe2, 0x3ea64532,
++ 0x03c66c82, 0x8196fb53, 0xbcf6d2e3, 0xfb56a833, 0xc6368183,
++ 0x74165d93, 0x49767423, 0x0ed60ef3, 0x33b62743, 0xd1062710,
++ 0xec660ea0, 0xabc67470, 0x96a65dc0, 0x248681d0, 0x19e6a860,
++ 0x5e46d2b0, 0x6326fb00, 0xe1766cd1, 0xdc164561, 0x9bb63fb1,
++ 0xa6d61601, 0x14f6ca11, 0x2996e3a1, 0x6e369971, 0x5356b0c1,
++ 0x70279f96, 0x4d47b626, 0x0ae7ccf6, 0x3787e546, 0x85a73956,
++ 0xb8c710e6, 0xff676a36, 0xc2074386, 0x4057d457, 0x7d37fde7,
++ 0x3a978737, 0x07f7ae87, 0xb5d77297, 0x88b75b27, 0xcf1721f7,
++ 0xf2770847, 0x10c70814, 0x2da721a4, 0x6a075b74, 0x576772c4,
++ 0xe547aed4, 0xd8278764, 0x9f87fdb4, 0xa2e7d404, 0x20b743d5,
++ 0x1dd76a65, 0x5a7710b5, 0x67173905, 0xd537e515, 0xe857cca5,
++ 0xaff7b675, 0x92979fc5, 0xe915e8db, 0xd475c16b, 0x93d5bbbb,
++ 0xaeb5920b, 0x1c954e1b, 0x21f567ab, 0x66551d7b, 0x5b3534cb,
++ 0xd965a31a, 0xe4058aaa, 0xa3a5f07a, 0x9ec5d9ca, 0x2ce505da,
++ 0x11852c6a, 0x562556ba, 0x6b457f0a, 0x89f57f59, 0xb49556e9,
++ 0xf3352c39, 0xce550589, 0x7c75d999, 0x4115f029, 0x06b58af9,
++ 0x3bd5a349, 0xb9853498, 0x84e51d28, 0xc34567f8, 0xfe254e48,
++ 0x4c059258, 0x7165bbe8, 0x36c5c138, 0x0ba5e888, 0x28d4c7df,
++ 0x15b4ee6f, 0x521494bf, 0x6f74bd0f, 0xdd54611f, 0xe03448af,
++ 0xa794327f, 0x9af41bcf, 0x18a48c1e, 0x25c4a5ae, 0x6264df7e,
++ 0x5f04f6ce, 0xed242ade, 0xd044036e, 0x97e479be, 0xaa84500e,
++ 0x4834505d, 0x755479ed, 0x32f4033d, 0x0f942a8d, 0xbdb4f69d,
++ 0x80d4df2d, 0xc774a5fd, 0xfa148c4d, 0x78441b9c, 0x4524322c,
++ 0x028448fc, 0x3fe4614c, 0x8dc4bd5c, 0xb0a494ec, 0xf704ee3c,
++ 0xca64c78c},
++ {0x00000000, 0xb8bc6765, 0xaa09c88b, 0x12b5afee, 0x8f629757,
++ 0x37def032, 0x256b5fdc, 0x9dd738b9, 0xc5b428ef, 0x7d084f8a,
++ 0x6fbde064, 0xd7018701, 0x4ad6bfb8, 0xf26ad8dd, 0xe0df7733,
++ 0x58631056, 0x5019579f, 0xe8a530fa, 0xfa109f14, 0x42acf871,
++ 0xdf7bc0c8, 0x67c7a7ad, 0x75720843, 0xcdce6f26, 0x95ad7f70,
++ 0x2d111815, 0x3fa4b7fb, 0x8718d09e, 0x1acfe827, 0xa2738f42,
++ 0xb0c620ac, 0x087a47c9, 0xa032af3e, 0x188ec85b, 0x0a3b67b5,
++ 0xb28700d0, 0x2f503869, 0x97ec5f0c, 0x8559f0e2, 0x3de59787,
++ 0x658687d1, 0xdd3ae0b4, 0xcf8f4f5a, 0x7733283f, 0xeae41086,
++ 0x525877e3, 0x40edd80d, 0xf851bf68, 0xf02bf8a1, 0x48979fc4,
++ 0x5a22302a, 0xe29e574f, 0x7f496ff6, 0xc7f50893, 0xd540a77d,
++ 0x6dfcc018, 0x359fd04e, 0x8d23b72b, 0x9f9618c5, 0x272a7fa0,
++ 0xbafd4719, 0x0241207c, 0x10f48f92, 0xa848e8f7, 0x9b14583d,
++ 0x23a83f58, 0x311d90b6, 0x89a1f7d3, 0x1476cf6a, 0xaccaa80f,
++ 0xbe7f07e1, 0x06c36084, 0x5ea070d2, 0xe61c17b7, 0xf4a9b859,
++ 0x4c15df3c, 0xd1c2e785, 0x697e80e0, 0x7bcb2f0e, 0xc377486b,
++ 0xcb0d0fa2, 0x73b168c7, 0x6104c729, 0xd9b8a04c, 0x446f98f5,
++ 0xfcd3ff90, 0xee66507e, 0x56da371b, 0x0eb9274d, 0xb6054028,
++ 0xa4b0efc6, 0x1c0c88a3, 0x81dbb01a, 0x3967d77f, 0x2bd27891,
++ 0x936e1ff4, 0x3b26f703, 0x839a9066, 0x912f3f88, 0x299358ed,
++ 0xb4446054, 0x0cf80731, 0x1e4da8df, 0xa6f1cfba, 0xfe92dfec,
++ 0x462eb889, 0x549b1767, 0xec277002, 0x71f048bb, 0xc94c2fde,
++ 0xdbf98030, 0x6345e755, 0x6b3fa09c, 0xd383c7f9, 0xc1366817,
++ 0x798a0f72, 0xe45d37cb, 0x5ce150ae, 0x4e54ff40, 0xf6e89825,
++ 0xae8b8873, 0x1637ef16, 0x048240f8, 0xbc3e279d, 0x21e91f24,
++ 0x99557841, 0x8be0d7af, 0x335cb0ca, 0xed59b63b, 0x55e5d15e,
++ 0x47507eb0, 0xffec19d5, 0x623b216c, 0xda874609, 0xc832e9e7,
++ 0x708e8e82, 0x28ed9ed4, 0x9051f9b1, 0x82e4565f, 0x3a58313a,
++ 0xa78f0983, 0x1f336ee6, 0x0d86c108, 0xb53aa66d, 0xbd40e1a4,
++ 0x05fc86c1, 0x1749292f, 0xaff54e4a, 0x322276f3, 0x8a9e1196,
++ 0x982bbe78, 0x2097d91d, 0x78f4c94b, 0xc048ae2e, 0xd2fd01c0,
++ 0x6a4166a5, 0xf7965e1c, 0x4f2a3979, 0x5d9f9697, 0xe523f1f2,
++ 0x4d6b1905, 0xf5d77e60, 0xe762d18e, 0x5fdeb6eb, 0xc2098e52,
++ 0x7ab5e937, 0x680046d9, 0xd0bc21bc, 0x88df31ea, 0x3063568f,
++ 0x22d6f961, 0x9a6a9e04, 0x07bda6bd, 0xbf01c1d8, 0xadb46e36,
++ 0x15080953, 0x1d724e9a, 0xa5ce29ff, 0xb77b8611, 0x0fc7e174,
++ 0x9210d9cd, 0x2aacbea8, 0x38191146, 0x80a57623, 0xd8c66675,
++ 0x607a0110, 0x72cfaefe, 0xca73c99b, 0x57a4f122, 0xef189647,
++ 0xfdad39a9, 0x45115ecc, 0x764dee06, 0xcef18963, 0xdc44268d,
++ 0x64f841e8, 0xf92f7951, 0x41931e34, 0x5326b1da, 0xeb9ad6bf,
++ 0xb3f9c6e9, 0x0b45a18c, 0x19f00e62, 0xa14c6907, 0x3c9b51be,
++ 0x842736db, 0x96929935, 0x2e2efe50, 0x2654b999, 0x9ee8defc,
++ 0x8c5d7112, 0x34e11677, 0xa9362ece, 0x118a49ab, 0x033fe645,
++ 0xbb838120, 0xe3e09176, 0x5b5cf613, 0x49e959fd, 0xf1553e98,
++ 0x6c820621, 0xd43e6144, 0xc68bceaa, 0x7e37a9cf, 0xd67f4138,
++ 0x6ec3265d, 0x7c7689b3, 0xc4caeed6, 0x591dd66f, 0xe1a1b10a,
++ 0xf3141ee4, 0x4ba87981, 0x13cb69d7, 0xab770eb2, 0xb9c2a15c,
++ 0x017ec639, 0x9ca9fe80, 0x241599e5, 0x36a0360b, 0x8e1c516e,
++ 0x866616a7, 0x3eda71c2, 0x2c6fde2c, 0x94d3b949, 0x090481f0,
++ 0xb1b8e695, 0xa30d497b, 0x1bb12e1e, 0x43d23e48, 0xfb6e592d,
++ 0xe9dbf6c3, 0x516791a6, 0xccb0a91f, 0x740cce7a, 0x66b96194,
++ 0xde0506f1},
++ {0x00000000, 0x01c26a37, 0x0384d46e, 0x0246be59, 0x0709a8dc,
++ 0x06cbc2eb, 0x048d7cb2, 0x054f1685, 0x0e1351b8, 0x0fd13b8f,
++ 0x0d9785d6, 0x0c55efe1, 0x091af964, 0x08d89353, 0x0a9e2d0a,
++ 0x0b5c473d, 0x1c26a370, 0x1de4c947, 0x1fa2771e, 0x1e601d29,
++ 0x1b2f0bac, 0x1aed619b, 0x18abdfc2, 0x1969b5f5, 0x1235f2c8,
++ 0x13f798ff, 0x11b126a6, 0x10734c91, 0x153c5a14, 0x14fe3023,
++ 0x16b88e7a, 0x177ae44d, 0x384d46e0, 0x398f2cd7, 0x3bc9928e,
++ 0x3a0bf8b9, 0x3f44ee3c, 0x3e86840b, 0x3cc03a52, 0x3d025065,
++ 0x365e1758, 0x379c7d6f, 0x35dac336, 0x3418a901, 0x3157bf84,
++ 0x3095d5b3, 0x32d36bea, 0x331101dd, 0x246be590, 0x25a98fa7,
++ 0x27ef31fe, 0x262d5bc9, 0x23624d4c, 0x22a0277b, 0x20e69922,
++ 0x2124f315, 0x2a78b428, 0x2bbade1f, 0x29fc6046, 0x283e0a71,
++ 0x2d711cf4, 0x2cb376c3, 0x2ef5c89a, 0x2f37a2ad, 0x709a8dc0,
++ 0x7158e7f7, 0x731e59ae, 0x72dc3399, 0x7793251c, 0x76514f2b,
++ 0x7417f172, 0x75d59b45, 0x7e89dc78, 0x7f4bb64f, 0x7d0d0816,
++ 0x7ccf6221, 0x798074a4, 0x78421e93, 0x7a04a0ca, 0x7bc6cafd,
++ 0x6cbc2eb0, 0x6d7e4487, 0x6f38fade, 0x6efa90e9, 0x6bb5866c,
++ 0x6a77ec5b, 0x68315202, 0x69f33835, 0x62af7f08, 0x636d153f,
++ 0x612bab66, 0x60e9c151, 0x65a6d7d4, 0x6464bde3, 0x662203ba,
++ 0x67e0698d, 0x48d7cb20, 0x4915a117, 0x4b531f4e, 0x4a917579,
++ 0x4fde63fc, 0x4e1c09cb, 0x4c5ab792, 0x4d98dda5, 0x46c49a98,
++ 0x4706f0af, 0x45404ef6, 0x448224c1, 0x41cd3244, 0x400f5873,
++ 0x4249e62a, 0x438b8c1d, 0x54f16850, 0x55330267, 0x5775bc3e,
++ 0x56b7d609, 0x53f8c08c, 0x523aaabb, 0x507c14e2, 0x51be7ed5,
++ 0x5ae239e8, 0x5b2053df, 0x5966ed86, 0x58a487b1, 0x5deb9134,
++ 0x5c29fb03, 0x5e6f455a, 0x5fad2f6d, 0xe1351b80, 0xe0f771b7,
++ 0xe2b1cfee, 0xe373a5d9, 0xe63cb35c, 0xe7fed96b, 0xe5b86732,
++ 0xe47a0d05, 0xef264a38, 0xeee4200f, 0xeca29e56, 0xed60f461,
++ 0xe82fe2e4, 0xe9ed88d3, 0xebab368a, 0xea695cbd, 0xfd13b8f0,
++ 0xfcd1d2c7, 0xfe976c9e, 0xff5506a9, 0xfa1a102c, 0xfbd87a1b,
++ 0xf99ec442, 0xf85cae75, 0xf300e948, 0xf2c2837f, 0xf0843d26,
++ 0xf1465711, 0xf4094194, 0xf5cb2ba3, 0xf78d95fa, 0xf64fffcd,
++ 0xd9785d60, 0xd8ba3757, 0xdafc890e, 0xdb3ee339, 0xde71f5bc,
++ 0xdfb39f8b, 0xddf521d2, 0xdc374be5, 0xd76b0cd8, 0xd6a966ef,
++ 0xd4efd8b6, 0xd52db281, 0xd062a404, 0xd1a0ce33, 0xd3e6706a,
++ 0xd2241a5d, 0xc55efe10, 0xc49c9427, 0xc6da2a7e, 0xc7184049,
++ 0xc25756cc, 0xc3953cfb, 0xc1d382a2, 0xc011e895, 0xcb4dafa8,
++ 0xca8fc59f, 0xc8c97bc6, 0xc90b11f1, 0xcc440774, 0xcd866d43,
++ 0xcfc0d31a, 0xce02b92d, 0x91af9640, 0x906dfc77, 0x922b422e,
++ 0x93e92819, 0x96a63e9c, 0x976454ab, 0x9522eaf2, 0x94e080c5,
++ 0x9fbcc7f8, 0x9e7eadcf, 0x9c381396, 0x9dfa79a1, 0x98b56f24,
++ 0x99770513, 0x9b31bb4a, 0x9af3d17d, 0x8d893530, 0x8c4b5f07,
++ 0x8e0de15e, 0x8fcf8b69, 0x8a809dec, 0x8b42f7db, 0x89044982,
++ 0x88c623b5, 0x839a6488, 0x82580ebf, 0x801eb0e6, 0x81dcdad1,
++ 0x8493cc54, 0x8551a663, 0x8717183a, 0x86d5720d, 0xa9e2d0a0,
++ 0xa820ba97, 0xaa6604ce, 0xaba46ef9, 0xaeeb787c, 0xaf29124b,
++ 0xad6fac12, 0xacadc625, 0xa7f18118, 0xa633eb2f, 0xa4755576,
++ 0xa5b73f41, 0xa0f829c4, 0xa13a43f3, 0xa37cfdaa, 0xa2be979d,
++ 0xb5c473d0, 0xb40619e7, 0xb640a7be, 0xb782cd89, 0xb2cddb0c,
++ 0xb30fb13b, 0xb1490f62, 0xb08b6555, 0xbbd72268, 0xba15485f,
++ 0xb853f606, 0xb9919c31, 0xbcde8ab4, 0xbd1ce083, 0xbf5a5eda,
++ 0xbe9834ed},
++ {0x00000000, 0x191b3141, 0x32366282, 0x2b2d53c3, 0x646cc504,
++ 0x7d77f445, 0x565aa786, 0x4f4196c7, 0xc8d98a08, 0xd1c2bb49,
++ 0xfaefe88a, 0xe3f4d9cb, 0xacb54f0c, 0xb5ae7e4d, 0x9e832d8e,
++ 0x87981ccf, 0x4ac21251, 0x53d92310, 0x78f470d3, 0x61ef4192,
++ 0x2eaed755, 0x37b5e614, 0x1c98b5d7, 0x05838496, 0x821b9859,
++ 0x9b00a918, 0xb02dfadb, 0xa936cb9a, 0xe6775d5d, 0xff6c6c1c,
++ 0xd4413fdf, 0xcd5a0e9e, 0x958424a2, 0x8c9f15e3, 0xa7b24620,
++ 0xbea97761, 0xf1e8e1a6, 0xe8f3d0e7, 0xc3de8324, 0xdac5b265,
++ 0x5d5daeaa, 0x44469feb, 0x6f6bcc28, 0x7670fd69, 0x39316bae,
++ 0x202a5aef, 0x0b07092c, 0x121c386d, 0xdf4636f3, 0xc65d07b2,
++ 0xed705471, 0xf46b6530, 0xbb2af3f7, 0xa231c2b6, 0x891c9175,
++ 0x9007a034, 0x179fbcfb, 0x0e848dba, 0x25a9de79, 0x3cb2ef38,
++ 0x73f379ff, 0x6ae848be, 0x41c51b7d, 0x58de2a3c, 0xf0794f05,
++ 0xe9627e44, 0xc24f2d87, 0xdb541cc6, 0x94158a01, 0x8d0ebb40,
++ 0xa623e883, 0xbf38d9c2, 0x38a0c50d, 0x21bbf44c, 0x0a96a78f,
++ 0x138d96ce, 0x5ccc0009, 0x45d73148, 0x6efa628b, 0x77e153ca,
++ 0xbabb5d54, 0xa3a06c15, 0x888d3fd6, 0x91960e97, 0xded79850,
++ 0xc7cca911, 0xece1fad2, 0xf5facb93, 0x7262d75c, 0x6b79e61d,
++ 0x4054b5de, 0x594f849f, 0x160e1258, 0x0f152319, 0x243870da,
++ 0x3d23419b, 0x65fd6ba7, 0x7ce65ae6, 0x57cb0925, 0x4ed03864,
++ 0x0191aea3, 0x188a9fe2, 0x33a7cc21, 0x2abcfd60, 0xad24e1af,
++ 0xb43fd0ee, 0x9f12832d, 0x8609b26c, 0xc94824ab, 0xd05315ea,
++ 0xfb7e4629, 0xe2657768, 0x2f3f79f6, 0x362448b7, 0x1d091b74,
++ 0x04122a35, 0x4b53bcf2, 0x52488db3, 0x7965de70, 0x607eef31,
++ 0xe7e6f3fe, 0xfefdc2bf, 0xd5d0917c, 0xcccba03d, 0x838a36fa,
++ 0x9a9107bb, 0xb1bc5478, 0xa8a76539, 0x3b83984b, 0x2298a90a,
++ 0x09b5fac9, 0x10aecb88, 0x5fef5d4f, 0x46f46c0e, 0x6dd93fcd,
++ 0x74c20e8c, 0xf35a1243, 0xea412302, 0xc16c70c1, 0xd8774180,
++ 0x9736d747, 0x8e2de606, 0xa500b5c5, 0xbc1b8484, 0x71418a1a,
++ 0x685abb5b, 0x4377e898, 0x5a6cd9d9, 0x152d4f1e, 0x0c367e5f,
++ 0x271b2d9c, 0x3e001cdd, 0xb9980012, 0xa0833153, 0x8bae6290,
++ 0x92b553d1, 0xddf4c516, 0xc4eff457, 0xefc2a794, 0xf6d996d5,
++ 0xae07bce9, 0xb71c8da8, 0x9c31de6b, 0x852aef2a, 0xca6b79ed,
++ 0xd37048ac, 0xf85d1b6f, 0xe1462a2e, 0x66de36e1, 0x7fc507a0,
++ 0x54e85463, 0x4df36522, 0x02b2f3e5, 0x1ba9c2a4, 0x30849167,
++ 0x299fa026, 0xe4c5aeb8, 0xfdde9ff9, 0xd6f3cc3a, 0xcfe8fd7b,
++ 0x80a96bbc, 0x99b25afd, 0xb29f093e, 0xab84387f, 0x2c1c24b0,
++ 0x350715f1, 0x1e2a4632, 0x07317773, 0x4870e1b4, 0x516bd0f5,
++ 0x7a468336, 0x635db277, 0xcbfad74e, 0xd2e1e60f, 0xf9ccb5cc,
++ 0xe0d7848d, 0xaf96124a, 0xb68d230b, 0x9da070c8, 0x84bb4189,
++ 0x03235d46, 0x1a386c07, 0x31153fc4, 0x280e0e85, 0x674f9842,
++ 0x7e54a903, 0x5579fac0, 0x4c62cb81, 0x8138c51f, 0x9823f45e,
++ 0xb30ea79d, 0xaa1596dc, 0xe554001b, 0xfc4f315a, 0xd7626299,
++ 0xce7953d8, 0x49e14f17, 0x50fa7e56, 0x7bd72d95, 0x62cc1cd4,
++ 0x2d8d8a13, 0x3496bb52, 0x1fbbe891, 0x06a0d9d0, 0x5e7ef3ec,
++ 0x4765c2ad, 0x6c48916e, 0x7553a02f, 0x3a1236e8, 0x230907a9,
++ 0x0824546a, 0x113f652b, 0x96a779e4, 0x8fbc48a5, 0xa4911b66,
++ 0xbd8a2a27, 0xf2cbbce0, 0xebd08da1, 0xc0fdde62, 0xd9e6ef23,
++ 0x14bce1bd, 0x0da7d0fc, 0x268a833f, 0x3f91b27e, 0x70d024b9,
++ 0x69cb15f8, 0x42e6463b, 0x5bfd777a, 0xdc656bb5, 0xc57e5af4,
++ 0xee530937, 0xf7483876, 0xb809aeb1, 0xa1129ff0, 0x8a3fcc33,
++ 0x9324fd72},
++ {0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
++ 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
++ 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
++ 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
++ 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
++ 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
++ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
++ 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
++ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
++ 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
++ 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
++ 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
++ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
++ 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
++ 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
++ 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
++ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
++ 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
++ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
++ 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
++ 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
++ 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
++ 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
++ 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
++ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
++ 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
++ 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
++ 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
++ 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
++ 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
++ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
++ 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
++ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
++ 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
++ 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
++ 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
++ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
++ 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
++ 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
++ 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
++ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
++ 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
++ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
++ 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
++ 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
++ 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
++ 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
++ 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
++ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
++ 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
++ 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
++ 0x2d02ef8d}};
++
++local const z_word_t FAR crc_braid_big_table[][256] = {
++ {0x0000000000000000, 0x9630077700000000, 0x2c610eee00000000,
++ 0xba51099900000000, 0x19c46d0700000000, 0x8ff46a7000000000,
++ 0x35a563e900000000, 0xa395649e00000000, 0x3288db0e00000000,
++ 0xa4b8dc7900000000, 0x1ee9d5e000000000, 0x88d9d29700000000,
++ 0x2b4cb60900000000, 0xbd7cb17e00000000, 0x072db8e700000000,
++ 0x911dbf9000000000, 0x6410b71d00000000, 0xf220b06a00000000,
++ 0x4871b9f300000000, 0xde41be8400000000, 0x7dd4da1a00000000,
++ 0xebe4dd6d00000000, 0x51b5d4f400000000, 0xc785d38300000000,
++ 0x56986c1300000000, 0xc0a86b6400000000, 0x7af962fd00000000,
++ 0xecc9658a00000000, 0x4f5c011400000000, 0xd96c066300000000,
++ 0x633d0ffa00000000, 0xf50d088d00000000, 0xc8206e3b00000000,
++ 0x5e10694c00000000, 0xe44160d500000000, 0x727167a200000000,
++ 0xd1e4033c00000000, 0x47d4044b00000000, 0xfd850dd200000000,
++ 0x6bb50aa500000000, 0xfaa8b53500000000, 0x6c98b24200000000,
++ 0xd6c9bbdb00000000, 0x40f9bcac00000000, 0xe36cd83200000000,
++ 0x755cdf4500000000, 0xcf0dd6dc00000000, 0x593dd1ab00000000,
++ 0xac30d92600000000, 0x3a00de5100000000, 0x8051d7c800000000,
++ 0x1661d0bf00000000, 0xb5f4b42100000000, 0x23c4b35600000000,
++ 0x9995bacf00000000, 0x0fa5bdb800000000, 0x9eb8022800000000,
++ 0x0888055f00000000, 0xb2d90cc600000000, 0x24e90bb100000000,
++ 0x877c6f2f00000000, 0x114c685800000000, 0xab1d61c100000000,
++ 0x3d2d66b600000000, 0x9041dc7600000000, 0x0671db0100000000,
++ 0xbc20d29800000000, 0x2a10d5ef00000000, 0x8985b17100000000,
++ 0x1fb5b60600000000, 0xa5e4bf9f00000000, 0x33d4b8e800000000,
++ 0xa2c9077800000000, 0x34f9000f00000000, 0x8ea8099600000000,
++ 0x18980ee100000000, 0xbb0d6a7f00000000, 0x2d3d6d0800000000,
++ 0x976c649100000000, 0x015c63e600000000, 0xf4516b6b00000000,
++ 0x62616c1c00000000, 0xd830658500000000, 0x4e0062f200000000,
++ 0xed95066c00000000, 0x7ba5011b00000000, 0xc1f4088200000000,
++ 0x57c40ff500000000, 0xc6d9b06500000000, 0x50e9b71200000000,
++ 0xeab8be8b00000000, 0x7c88b9fc00000000, 0xdf1ddd6200000000,
++ 0x492dda1500000000, 0xf37cd38c00000000, 0x654cd4fb00000000,
++ 0x5861b24d00000000, 0xce51b53a00000000, 0x7400bca300000000,
++ 0xe230bbd400000000, 0x41a5df4a00000000, 0xd795d83d00000000,
++ 0x6dc4d1a400000000, 0xfbf4d6d300000000, 0x6ae9694300000000,
++ 0xfcd96e3400000000, 0x468867ad00000000, 0xd0b860da00000000,
++ 0x732d044400000000, 0xe51d033300000000, 0x5f4c0aaa00000000,
++ 0xc97c0ddd00000000, 0x3c71055000000000, 0xaa41022700000000,
++ 0x10100bbe00000000, 0x86200cc900000000, 0x25b5685700000000,
++ 0xb3856f2000000000, 0x09d466b900000000, 0x9fe461ce00000000,
++ 0x0ef9de5e00000000, 0x98c9d92900000000, 0x2298d0b000000000,
++ 0xb4a8d7c700000000, 0x173db35900000000, 0x810db42e00000000,
++ 0x3b5cbdb700000000, 0xad6cbac000000000, 0x2083b8ed00000000,
++ 0xb6b3bf9a00000000, 0x0ce2b60300000000, 0x9ad2b17400000000,
++ 0x3947d5ea00000000, 0xaf77d29d00000000, 0x1526db0400000000,
++ 0x8316dc7300000000, 0x120b63e300000000, 0x843b649400000000,
++ 0x3e6a6d0d00000000, 0xa85a6a7a00000000, 0x0bcf0ee400000000,
++ 0x9dff099300000000, 0x27ae000a00000000, 0xb19e077d00000000,
++ 0x44930ff000000000, 0xd2a3088700000000, 0x68f2011e00000000,
++ 0xfec2066900000000, 0x5d5762f700000000, 0xcb67658000000000,
++ 0x71366c1900000000, 0xe7066b6e00000000, 0x761bd4fe00000000,
++ 0xe02bd38900000000, 0x5a7ada1000000000, 0xcc4add6700000000,
++ 0x6fdfb9f900000000, 0xf9efbe8e00000000, 0x43beb71700000000,
++ 0xd58eb06000000000, 0xe8a3d6d600000000, 0x7e93d1a100000000,
++ 0xc4c2d83800000000, 0x52f2df4f00000000, 0xf167bbd100000000,
++ 0x6757bca600000000, 0xdd06b53f00000000, 0x4b36b24800000000,
++ 0xda2b0dd800000000, 0x4c1b0aaf00000000, 0xf64a033600000000,
++ 0x607a044100000000, 0xc3ef60df00000000, 0x55df67a800000000,
++ 0xef8e6e3100000000, 0x79be694600000000, 0x8cb361cb00000000,
++ 0x1a8366bc00000000, 0xa0d26f2500000000, 0x36e2685200000000,
++ 0x95770ccc00000000, 0x03470bbb00000000, 0xb916022200000000,
++ 0x2f26055500000000, 0xbe3bbac500000000, 0x280bbdb200000000,
++ 0x925ab42b00000000, 0x046ab35c00000000, 0xa7ffd7c200000000,
++ 0x31cfd0b500000000, 0x8b9ed92c00000000, 0x1daede5b00000000,
++ 0xb0c2649b00000000, 0x26f263ec00000000, 0x9ca36a7500000000,
++ 0x0a936d0200000000, 0xa906099c00000000, 0x3f360eeb00000000,
++ 0x8567077200000000, 0x1357000500000000, 0x824abf9500000000,
++ 0x147ab8e200000000, 0xae2bb17b00000000, 0x381bb60c00000000,
++ 0x9b8ed29200000000, 0x0dbed5e500000000, 0xb7efdc7c00000000,
++ 0x21dfdb0b00000000, 0xd4d2d38600000000, 0x42e2d4f100000000,
++ 0xf8b3dd6800000000, 0x6e83da1f00000000, 0xcd16be8100000000,
++ 0x5b26b9f600000000, 0xe177b06f00000000, 0x7747b71800000000,
++ 0xe65a088800000000, 0x706a0fff00000000, 0xca3b066600000000,
++ 0x5c0b011100000000, 0xff9e658f00000000, 0x69ae62f800000000,
++ 0xd3ff6b6100000000, 0x45cf6c1600000000, 0x78e20aa000000000,
++ 0xeed20dd700000000, 0x5483044e00000000, 0xc2b3033900000000,
++ 0x612667a700000000, 0xf71660d000000000, 0x4d47694900000000,
++ 0xdb776e3e00000000, 0x4a6ad1ae00000000, 0xdc5ad6d900000000,
++ 0x660bdf4000000000, 0xf03bd83700000000, 0x53aebca900000000,
++ 0xc59ebbde00000000, 0x7fcfb24700000000, 0xe9ffb53000000000,
++ 0x1cf2bdbd00000000, 0x8ac2baca00000000, 0x3093b35300000000,
++ 0xa6a3b42400000000, 0x0536d0ba00000000, 0x9306d7cd00000000,
++ 0x2957de5400000000, 0xbf67d92300000000, 0x2e7a66b300000000,
++ 0xb84a61c400000000, 0x021b685d00000000, 0x942b6f2a00000000,
++ 0x37be0bb400000000, 0xa18e0cc300000000, 0x1bdf055a00000000,
++ 0x8def022d00000000},
++ {0x0000000000000000, 0x41311b1900000000, 0x8262363200000000,
++ 0xc3532d2b00000000, 0x04c56c6400000000, 0x45f4777d00000000,
++ 0x86a75a5600000000, 0xc796414f00000000, 0x088ad9c800000000,
++ 0x49bbc2d100000000, 0x8ae8effa00000000, 0xcbd9f4e300000000,
++ 0x0c4fb5ac00000000, 0x4d7eaeb500000000, 0x8e2d839e00000000,
++ 0xcf1c988700000000, 0x5112c24a00000000, 0x1023d95300000000,
++ 0xd370f47800000000, 0x9241ef6100000000, 0x55d7ae2e00000000,
++ 0x14e6b53700000000, 0xd7b5981c00000000, 0x9684830500000000,
++ 0x59981b8200000000, 0x18a9009b00000000, 0xdbfa2db000000000,
++ 0x9acb36a900000000, 0x5d5d77e600000000, 0x1c6c6cff00000000,
++ 0xdf3f41d400000000, 0x9e0e5acd00000000, 0xa224849500000000,
++ 0xe3159f8c00000000, 0x2046b2a700000000, 0x6177a9be00000000,
++ 0xa6e1e8f100000000, 0xe7d0f3e800000000, 0x2483dec300000000,
++ 0x65b2c5da00000000, 0xaaae5d5d00000000, 0xeb9f464400000000,
++ 0x28cc6b6f00000000, 0x69fd707600000000, 0xae6b313900000000,
++ 0xef5a2a2000000000, 0x2c09070b00000000, 0x6d381c1200000000,
++ 0xf33646df00000000, 0xb2075dc600000000, 0x715470ed00000000,
++ 0x30656bf400000000, 0xf7f32abb00000000, 0xb6c231a200000000,
++ 0x75911c8900000000, 0x34a0079000000000, 0xfbbc9f1700000000,
++ 0xba8d840e00000000, 0x79dea92500000000, 0x38efb23c00000000,
++ 0xff79f37300000000, 0xbe48e86a00000000, 0x7d1bc54100000000,
++ 0x3c2ade5800000000, 0x054f79f000000000, 0x447e62e900000000,
++ 0x872d4fc200000000, 0xc61c54db00000000, 0x018a159400000000,
++ 0x40bb0e8d00000000, 0x83e823a600000000, 0xc2d938bf00000000,
++ 0x0dc5a03800000000, 0x4cf4bb2100000000, 0x8fa7960a00000000,
++ 0xce968d1300000000, 0x0900cc5c00000000, 0x4831d74500000000,
++ 0x8b62fa6e00000000, 0xca53e17700000000, 0x545dbbba00000000,
++ 0x156ca0a300000000, 0xd63f8d8800000000, 0x970e969100000000,
++ 0x5098d7de00000000, 0x11a9ccc700000000, 0xd2fae1ec00000000,
++ 0x93cbfaf500000000, 0x5cd7627200000000, 0x1de6796b00000000,
++ 0xdeb5544000000000, 0x9f844f5900000000, 0x58120e1600000000,
++ 0x1923150f00000000, 0xda70382400000000, 0x9b41233d00000000,
++ 0xa76bfd6500000000, 0xe65ae67c00000000, 0x2509cb5700000000,
++ 0x6438d04e00000000, 0xa3ae910100000000, 0xe29f8a1800000000,
++ 0x21cca73300000000, 0x60fdbc2a00000000, 0xafe124ad00000000,
++ 0xeed03fb400000000, 0x2d83129f00000000, 0x6cb2098600000000,
++ 0xab2448c900000000, 0xea1553d000000000, 0x29467efb00000000,
++ 0x687765e200000000, 0xf6793f2f00000000, 0xb748243600000000,
++ 0x741b091d00000000, 0x352a120400000000, 0xf2bc534b00000000,
++ 0xb38d485200000000, 0x70de657900000000, 0x31ef7e6000000000,
++ 0xfef3e6e700000000, 0xbfc2fdfe00000000, 0x7c91d0d500000000,
++ 0x3da0cbcc00000000, 0xfa368a8300000000, 0xbb07919a00000000,
++ 0x7854bcb100000000, 0x3965a7a800000000, 0x4b98833b00000000,
++ 0x0aa9982200000000, 0xc9fab50900000000, 0x88cbae1000000000,
++ 0x4f5def5f00000000, 0x0e6cf44600000000, 0xcd3fd96d00000000,
++ 0x8c0ec27400000000, 0x43125af300000000, 0x022341ea00000000,
++ 0xc1706cc100000000, 0x804177d800000000, 0x47d7369700000000,
++ 0x06e62d8e00000000, 0xc5b500a500000000, 0x84841bbc00000000,
++ 0x1a8a417100000000, 0x5bbb5a6800000000, 0x98e8774300000000,
++ 0xd9d96c5a00000000, 0x1e4f2d1500000000, 0x5f7e360c00000000,
++ 0x9c2d1b2700000000, 0xdd1c003e00000000, 0x120098b900000000,
++ 0x533183a000000000, 0x9062ae8b00000000, 0xd153b59200000000,
++ 0x16c5f4dd00000000, 0x57f4efc400000000, 0x94a7c2ef00000000,
++ 0xd596d9f600000000, 0xe9bc07ae00000000, 0xa88d1cb700000000,
++ 0x6bde319c00000000, 0x2aef2a8500000000, 0xed796bca00000000,
++ 0xac4870d300000000, 0x6f1b5df800000000, 0x2e2a46e100000000,
++ 0xe136de6600000000, 0xa007c57f00000000, 0x6354e85400000000,
++ 0x2265f34d00000000, 0xe5f3b20200000000, 0xa4c2a91b00000000,
++ 0x6791843000000000, 0x26a09f2900000000, 0xb8aec5e400000000,
++ 0xf99fdefd00000000, 0x3accf3d600000000, 0x7bfde8cf00000000,
++ 0xbc6ba98000000000, 0xfd5ab29900000000, 0x3e099fb200000000,
++ 0x7f3884ab00000000, 0xb0241c2c00000000, 0xf115073500000000,
++ 0x32462a1e00000000, 0x7377310700000000, 0xb4e1704800000000,
++ 0xf5d06b5100000000, 0x3683467a00000000, 0x77b25d6300000000,
++ 0x4ed7facb00000000, 0x0fe6e1d200000000, 0xccb5ccf900000000,
++ 0x8d84d7e000000000, 0x4a1296af00000000, 0x0b238db600000000,
++ 0xc870a09d00000000, 0x8941bb8400000000, 0x465d230300000000,
++ 0x076c381a00000000, 0xc43f153100000000, 0x850e0e2800000000,
++ 0x42984f6700000000, 0x03a9547e00000000, 0xc0fa795500000000,
++ 0x81cb624c00000000, 0x1fc5388100000000, 0x5ef4239800000000,
++ 0x9da70eb300000000, 0xdc9615aa00000000, 0x1b0054e500000000,
++ 0x5a314ffc00000000, 0x996262d700000000, 0xd85379ce00000000,
++ 0x174fe14900000000, 0x567efa5000000000, 0x952dd77b00000000,
++ 0xd41ccc6200000000, 0x138a8d2d00000000, 0x52bb963400000000,
++ 0x91e8bb1f00000000, 0xd0d9a00600000000, 0xecf37e5e00000000,
++ 0xadc2654700000000, 0x6e91486c00000000, 0x2fa0537500000000,
++ 0xe836123a00000000, 0xa907092300000000, 0x6a54240800000000,
++ 0x2b653f1100000000, 0xe479a79600000000, 0xa548bc8f00000000,
++ 0x661b91a400000000, 0x272a8abd00000000, 0xe0bccbf200000000,
++ 0xa18dd0eb00000000, 0x62defdc000000000, 0x23efe6d900000000,
++ 0xbde1bc1400000000, 0xfcd0a70d00000000, 0x3f838a2600000000,
++ 0x7eb2913f00000000, 0xb924d07000000000, 0xf815cb6900000000,
++ 0x3b46e64200000000, 0x7a77fd5b00000000, 0xb56b65dc00000000,
++ 0xf45a7ec500000000, 0x370953ee00000000, 0x763848f700000000,
++ 0xb1ae09b800000000, 0xf09f12a100000000, 0x33cc3f8a00000000,
++ 0x72fd249300000000},
++ {0x0000000000000000, 0x376ac20100000000, 0x6ed4840300000000,
++ 0x59be460200000000, 0xdca8090700000000, 0xebc2cb0600000000,
++ 0xb27c8d0400000000, 0x85164f0500000000, 0xb851130e00000000,
++ 0x8f3bd10f00000000, 0xd685970d00000000, 0xe1ef550c00000000,
++ 0x64f91a0900000000, 0x5393d80800000000, 0x0a2d9e0a00000000,
++ 0x3d475c0b00000000, 0x70a3261c00000000, 0x47c9e41d00000000,
++ 0x1e77a21f00000000, 0x291d601e00000000, 0xac0b2f1b00000000,
++ 0x9b61ed1a00000000, 0xc2dfab1800000000, 0xf5b5691900000000,
++ 0xc8f2351200000000, 0xff98f71300000000, 0xa626b11100000000,
++ 0x914c731000000000, 0x145a3c1500000000, 0x2330fe1400000000,
++ 0x7a8eb81600000000, 0x4de47a1700000000, 0xe0464d3800000000,
++ 0xd72c8f3900000000, 0x8e92c93b00000000, 0xb9f80b3a00000000,
++ 0x3cee443f00000000, 0x0b84863e00000000, 0x523ac03c00000000,
++ 0x6550023d00000000, 0x58175e3600000000, 0x6f7d9c3700000000,
++ 0x36c3da3500000000, 0x01a9183400000000, 0x84bf573100000000,
++ 0xb3d5953000000000, 0xea6bd33200000000, 0xdd01113300000000,
++ 0x90e56b2400000000, 0xa78fa92500000000, 0xfe31ef2700000000,
++ 0xc95b2d2600000000, 0x4c4d622300000000, 0x7b27a02200000000,
++ 0x2299e62000000000, 0x15f3242100000000, 0x28b4782a00000000,
++ 0x1fdeba2b00000000, 0x4660fc2900000000, 0x710a3e2800000000,
++ 0xf41c712d00000000, 0xc376b32c00000000, 0x9ac8f52e00000000,
++ 0xada2372f00000000, 0xc08d9a7000000000, 0xf7e7587100000000,
++ 0xae591e7300000000, 0x9933dc7200000000, 0x1c25937700000000,
++ 0x2b4f517600000000, 0x72f1177400000000, 0x459bd57500000000,
++ 0x78dc897e00000000, 0x4fb64b7f00000000, 0x16080d7d00000000,
++ 0x2162cf7c00000000, 0xa474807900000000, 0x931e427800000000,
++ 0xcaa0047a00000000, 0xfdcac67b00000000, 0xb02ebc6c00000000,
++ 0x87447e6d00000000, 0xdefa386f00000000, 0xe990fa6e00000000,
++ 0x6c86b56b00000000, 0x5bec776a00000000, 0x0252316800000000,
++ 0x3538f36900000000, 0x087faf6200000000, 0x3f156d6300000000,
++ 0x66ab2b6100000000, 0x51c1e96000000000, 0xd4d7a66500000000,
++ 0xe3bd646400000000, 0xba03226600000000, 0x8d69e06700000000,
++ 0x20cbd74800000000, 0x17a1154900000000, 0x4e1f534b00000000,
++ 0x7975914a00000000, 0xfc63de4f00000000, 0xcb091c4e00000000,
++ 0x92b75a4c00000000, 0xa5dd984d00000000, 0x989ac44600000000,
++ 0xaff0064700000000, 0xf64e404500000000, 0xc124824400000000,
++ 0x4432cd4100000000, 0x73580f4000000000, 0x2ae6494200000000,
++ 0x1d8c8b4300000000, 0x5068f15400000000, 0x6702335500000000,
++ 0x3ebc755700000000, 0x09d6b75600000000, 0x8cc0f85300000000,
++ 0xbbaa3a5200000000, 0xe2147c5000000000, 0xd57ebe5100000000,
++ 0xe839e25a00000000, 0xdf53205b00000000, 0x86ed665900000000,
++ 0xb187a45800000000, 0x3491eb5d00000000, 0x03fb295c00000000,
++ 0x5a456f5e00000000, 0x6d2fad5f00000000, 0x801b35e100000000,
++ 0xb771f7e000000000, 0xeecfb1e200000000, 0xd9a573e300000000,
++ 0x5cb33ce600000000, 0x6bd9fee700000000, 0x3267b8e500000000,
++ 0x050d7ae400000000, 0x384a26ef00000000, 0x0f20e4ee00000000,
++ 0x569ea2ec00000000, 0x61f460ed00000000, 0xe4e22fe800000000,
++ 0xd388ede900000000, 0x8a36abeb00000000, 0xbd5c69ea00000000,
++ 0xf0b813fd00000000, 0xc7d2d1fc00000000, 0x9e6c97fe00000000,
++ 0xa90655ff00000000, 0x2c101afa00000000, 0x1b7ad8fb00000000,
++ 0x42c49ef900000000, 0x75ae5cf800000000, 0x48e900f300000000,
++ 0x7f83c2f200000000, 0x263d84f000000000, 0x115746f100000000,
++ 0x944109f400000000, 0xa32bcbf500000000, 0xfa958df700000000,
++ 0xcdff4ff600000000, 0x605d78d900000000, 0x5737bad800000000,
++ 0x0e89fcda00000000, 0x39e33edb00000000, 0xbcf571de00000000,
++ 0x8b9fb3df00000000, 0xd221f5dd00000000, 0xe54b37dc00000000,
++ 0xd80c6bd700000000, 0xef66a9d600000000, 0xb6d8efd400000000,
++ 0x81b22dd500000000, 0x04a462d000000000, 0x33cea0d100000000,
++ 0x6a70e6d300000000, 0x5d1a24d200000000, 0x10fe5ec500000000,
++ 0x27949cc400000000, 0x7e2adac600000000, 0x494018c700000000,
++ 0xcc5657c200000000, 0xfb3c95c300000000, 0xa282d3c100000000,
++ 0x95e811c000000000, 0xa8af4dcb00000000, 0x9fc58fca00000000,
++ 0xc67bc9c800000000, 0xf1110bc900000000, 0x740744cc00000000,
++ 0x436d86cd00000000, 0x1ad3c0cf00000000, 0x2db902ce00000000,
++ 0x4096af9100000000, 0x77fc6d9000000000, 0x2e422b9200000000,
++ 0x1928e99300000000, 0x9c3ea69600000000, 0xab54649700000000,
++ 0xf2ea229500000000, 0xc580e09400000000, 0xf8c7bc9f00000000,
++ 0xcfad7e9e00000000, 0x9613389c00000000, 0xa179fa9d00000000,
++ 0x246fb59800000000, 0x1305779900000000, 0x4abb319b00000000,
++ 0x7dd1f39a00000000, 0x3035898d00000000, 0x075f4b8c00000000,
++ 0x5ee10d8e00000000, 0x698bcf8f00000000, 0xec9d808a00000000,
++ 0xdbf7428b00000000, 0x8249048900000000, 0xb523c68800000000,
++ 0x88649a8300000000, 0xbf0e588200000000, 0xe6b01e8000000000,
++ 0xd1dadc8100000000, 0x54cc938400000000, 0x63a6518500000000,
++ 0x3a18178700000000, 0x0d72d58600000000, 0xa0d0e2a900000000,
++ 0x97ba20a800000000, 0xce0466aa00000000, 0xf96ea4ab00000000,
++ 0x7c78ebae00000000, 0x4b1229af00000000, 0x12ac6fad00000000,
++ 0x25c6adac00000000, 0x1881f1a700000000, 0x2feb33a600000000,
++ 0x765575a400000000, 0x413fb7a500000000, 0xc429f8a000000000,
++ 0xf3433aa100000000, 0xaafd7ca300000000, 0x9d97bea200000000,
++ 0xd073c4b500000000, 0xe71906b400000000, 0xbea740b600000000,
++ 0x89cd82b700000000, 0x0cdbcdb200000000, 0x3bb10fb300000000,
++ 0x620f49b100000000, 0x55658bb000000000, 0x6822d7bb00000000,
++ 0x5f4815ba00000000, 0x06f653b800000000, 0x319c91b900000000,
++ 0xb48adebc00000000, 0x83e01cbd00000000, 0xda5e5abf00000000,
++ 0xed3498be00000000},
++ {0x0000000000000000, 0x6567bcb800000000, 0x8bc809aa00000000,
++ 0xeeafb51200000000, 0x5797628f00000000, 0x32f0de3700000000,
++ 0xdc5f6b2500000000, 0xb938d79d00000000, 0xef28b4c500000000,
++ 0x8a4f087d00000000, 0x64e0bd6f00000000, 0x018701d700000000,
++ 0xb8bfd64a00000000, 0xddd86af200000000, 0x3377dfe000000000,
++ 0x5610635800000000, 0x9f57195000000000, 0xfa30a5e800000000,
++ 0x149f10fa00000000, 0x71f8ac4200000000, 0xc8c07bdf00000000,
++ 0xada7c76700000000, 0x4308727500000000, 0x266fcecd00000000,
++ 0x707fad9500000000, 0x1518112d00000000, 0xfbb7a43f00000000,
++ 0x9ed0188700000000, 0x27e8cf1a00000000, 0x428f73a200000000,
++ 0xac20c6b000000000, 0xc9477a0800000000, 0x3eaf32a000000000,
++ 0x5bc88e1800000000, 0xb5673b0a00000000, 0xd00087b200000000,
++ 0x6938502f00000000, 0x0c5fec9700000000, 0xe2f0598500000000,
++ 0x8797e53d00000000, 0xd187866500000000, 0xb4e03add00000000,
++ 0x5a4f8fcf00000000, 0x3f28337700000000, 0x8610e4ea00000000,
++ 0xe377585200000000, 0x0dd8ed4000000000, 0x68bf51f800000000,
++ 0xa1f82bf000000000, 0xc49f974800000000, 0x2a30225a00000000,
++ 0x4f579ee200000000, 0xf66f497f00000000, 0x9308f5c700000000,
++ 0x7da740d500000000, 0x18c0fc6d00000000, 0x4ed09f3500000000,
++ 0x2bb7238d00000000, 0xc518969f00000000, 0xa07f2a2700000000,
++ 0x1947fdba00000000, 0x7c20410200000000, 0x928ff41000000000,
++ 0xf7e848a800000000, 0x3d58149b00000000, 0x583fa82300000000,
++ 0xb6901d3100000000, 0xd3f7a18900000000, 0x6acf761400000000,
++ 0x0fa8caac00000000, 0xe1077fbe00000000, 0x8460c30600000000,
++ 0xd270a05e00000000, 0xb7171ce600000000, 0x59b8a9f400000000,
++ 0x3cdf154c00000000, 0x85e7c2d100000000, 0xe0807e6900000000,
++ 0x0e2fcb7b00000000, 0x6b4877c300000000, 0xa20f0dcb00000000,
++ 0xc768b17300000000, 0x29c7046100000000, 0x4ca0b8d900000000,
++ 0xf5986f4400000000, 0x90ffd3fc00000000, 0x7e5066ee00000000,
++ 0x1b37da5600000000, 0x4d27b90e00000000, 0x284005b600000000,
++ 0xc6efb0a400000000, 0xa3880c1c00000000, 0x1ab0db8100000000,
++ 0x7fd7673900000000, 0x9178d22b00000000, 0xf41f6e9300000000,
++ 0x03f7263b00000000, 0x66909a8300000000, 0x883f2f9100000000,
++ 0xed58932900000000, 0x546044b400000000, 0x3107f80c00000000,
++ 0xdfa84d1e00000000, 0xbacff1a600000000, 0xecdf92fe00000000,
++ 0x89b82e4600000000, 0x67179b5400000000, 0x027027ec00000000,
++ 0xbb48f07100000000, 0xde2f4cc900000000, 0x3080f9db00000000,
++ 0x55e7456300000000, 0x9ca03f6b00000000, 0xf9c783d300000000,
++ 0x176836c100000000, 0x720f8a7900000000, 0xcb375de400000000,
++ 0xae50e15c00000000, 0x40ff544e00000000, 0x2598e8f600000000,
++ 0x73888bae00000000, 0x16ef371600000000, 0xf840820400000000,
++ 0x9d273ebc00000000, 0x241fe92100000000, 0x4178559900000000,
++ 0xafd7e08b00000000, 0xcab05c3300000000, 0x3bb659ed00000000,
++ 0x5ed1e55500000000, 0xb07e504700000000, 0xd519ecff00000000,
++ 0x6c213b6200000000, 0x094687da00000000, 0xe7e932c800000000,
++ 0x828e8e7000000000, 0xd49eed2800000000, 0xb1f9519000000000,
++ 0x5f56e48200000000, 0x3a31583a00000000, 0x83098fa700000000,
++ 0xe66e331f00000000, 0x08c1860d00000000, 0x6da63ab500000000,
++ 0xa4e140bd00000000, 0xc186fc0500000000, 0x2f29491700000000,
++ 0x4a4ef5af00000000, 0xf376223200000000, 0x96119e8a00000000,
++ 0x78be2b9800000000, 0x1dd9972000000000, 0x4bc9f47800000000,
++ 0x2eae48c000000000, 0xc001fdd200000000, 0xa566416a00000000,
++ 0x1c5e96f700000000, 0x79392a4f00000000, 0x97969f5d00000000,
++ 0xf2f123e500000000, 0x05196b4d00000000, 0x607ed7f500000000,
++ 0x8ed162e700000000, 0xebb6de5f00000000, 0x528e09c200000000,
++ 0x37e9b57a00000000, 0xd946006800000000, 0xbc21bcd000000000,
++ 0xea31df8800000000, 0x8f56633000000000, 0x61f9d62200000000,
++ 0x049e6a9a00000000, 0xbda6bd0700000000, 0xd8c101bf00000000,
++ 0x366eb4ad00000000, 0x5309081500000000, 0x9a4e721d00000000,
++ 0xff29cea500000000, 0x11867bb700000000, 0x74e1c70f00000000,
++ 0xcdd9109200000000, 0xa8beac2a00000000, 0x4611193800000000,
++ 0x2376a58000000000, 0x7566c6d800000000, 0x10017a6000000000,
++ 0xfeaecf7200000000, 0x9bc973ca00000000, 0x22f1a45700000000,
++ 0x479618ef00000000, 0xa939adfd00000000, 0xcc5e114500000000,
++ 0x06ee4d7600000000, 0x6389f1ce00000000, 0x8d2644dc00000000,
++ 0xe841f86400000000, 0x51792ff900000000, 0x341e934100000000,
++ 0xdab1265300000000, 0xbfd69aeb00000000, 0xe9c6f9b300000000,
++ 0x8ca1450b00000000, 0x620ef01900000000, 0x07694ca100000000,
++ 0xbe519b3c00000000, 0xdb36278400000000, 0x3599929600000000,
++ 0x50fe2e2e00000000, 0x99b9542600000000, 0xfcdee89e00000000,
++ 0x12715d8c00000000, 0x7716e13400000000, 0xce2e36a900000000,
++ 0xab498a1100000000, 0x45e63f0300000000, 0x208183bb00000000,
++ 0x7691e0e300000000, 0x13f65c5b00000000, 0xfd59e94900000000,
++ 0x983e55f100000000, 0x2106826c00000000, 0x44613ed400000000,
++ 0xaace8bc600000000, 0xcfa9377e00000000, 0x38417fd600000000,
++ 0x5d26c36e00000000, 0xb389767c00000000, 0xd6eecac400000000,
++ 0x6fd61d5900000000, 0x0ab1a1e100000000, 0xe41e14f300000000,
++ 0x8179a84b00000000, 0xd769cb1300000000, 0xb20e77ab00000000,
++ 0x5ca1c2b900000000, 0x39c67e0100000000, 0x80fea99c00000000,
++ 0xe599152400000000, 0x0b36a03600000000, 0x6e511c8e00000000,
++ 0xa716668600000000, 0xc271da3e00000000, 0x2cde6f2c00000000,
++ 0x49b9d39400000000, 0xf081040900000000, 0x95e6b8b100000000,
++ 0x7b490da300000000, 0x1e2eb11b00000000, 0x483ed24300000000,
++ 0x2d596efb00000000, 0xc3f6dbe900000000, 0xa691675100000000,
++ 0x1fa9b0cc00000000, 0x7ace0c7400000000, 0x9461b96600000000,
++ 0xf10605de00000000},
++ {0x0000000000000000, 0xb029603d00000000, 0x6053c07a00000000,
++ 0xd07aa04700000000, 0xc0a680f500000000, 0x708fe0c800000000,
++ 0xa0f5408f00000000, 0x10dc20b200000000, 0xc14b703000000000,
++ 0x7162100d00000000, 0xa118b04a00000000, 0x1131d07700000000,
++ 0x01edf0c500000000, 0xb1c490f800000000, 0x61be30bf00000000,
++ 0xd197508200000000, 0x8297e06000000000, 0x32be805d00000000,
++ 0xe2c4201a00000000, 0x52ed402700000000, 0x4231609500000000,
++ 0xf21800a800000000, 0x2262a0ef00000000, 0x924bc0d200000000,
++ 0x43dc905000000000, 0xf3f5f06d00000000, 0x238f502a00000000,
++ 0x93a6301700000000, 0x837a10a500000000, 0x3353709800000000,
++ 0xe329d0df00000000, 0x5300b0e200000000, 0x042fc1c100000000,
++ 0xb406a1fc00000000, 0x647c01bb00000000, 0xd455618600000000,
++ 0xc489413400000000, 0x74a0210900000000, 0xa4da814e00000000,
++ 0x14f3e17300000000, 0xc564b1f100000000, 0x754dd1cc00000000,
++ 0xa537718b00000000, 0x151e11b600000000, 0x05c2310400000000,
++ 0xb5eb513900000000, 0x6591f17e00000000, 0xd5b8914300000000,
++ 0x86b821a100000000, 0x3691419c00000000, 0xe6ebe1db00000000,
++ 0x56c281e600000000, 0x461ea15400000000, 0xf637c16900000000,
++ 0x264d612e00000000, 0x9664011300000000, 0x47f3519100000000,
++ 0xf7da31ac00000000, 0x27a091eb00000000, 0x9789f1d600000000,
++ 0x8755d16400000000, 0x377cb15900000000, 0xe706111e00000000,
++ 0x572f712300000000, 0x4958f35800000000, 0xf971936500000000,
++ 0x290b332200000000, 0x9922531f00000000, 0x89fe73ad00000000,
++ 0x39d7139000000000, 0xe9adb3d700000000, 0x5984d3ea00000000,
++ 0x8813836800000000, 0x383ae35500000000, 0xe840431200000000,
++ 0x5869232f00000000, 0x48b5039d00000000, 0xf89c63a000000000,
++ 0x28e6c3e700000000, 0x98cfa3da00000000, 0xcbcf133800000000,
++ 0x7be6730500000000, 0xab9cd34200000000, 0x1bb5b37f00000000,
++ 0x0b6993cd00000000, 0xbb40f3f000000000, 0x6b3a53b700000000,
++ 0xdb13338a00000000, 0x0a84630800000000, 0xbaad033500000000,
++ 0x6ad7a37200000000, 0xdafec34f00000000, 0xca22e3fd00000000,
++ 0x7a0b83c000000000, 0xaa71238700000000, 0x1a5843ba00000000,
++ 0x4d77329900000000, 0xfd5e52a400000000, 0x2d24f2e300000000,
++ 0x9d0d92de00000000, 0x8dd1b26c00000000, 0x3df8d25100000000,
++ 0xed82721600000000, 0x5dab122b00000000, 0x8c3c42a900000000,
++ 0x3c15229400000000, 0xec6f82d300000000, 0x5c46e2ee00000000,
++ 0x4c9ac25c00000000, 0xfcb3a26100000000, 0x2cc9022600000000,
++ 0x9ce0621b00000000, 0xcfe0d2f900000000, 0x7fc9b2c400000000,
++ 0xafb3128300000000, 0x1f9a72be00000000, 0x0f46520c00000000,
++ 0xbf6f323100000000, 0x6f15927600000000, 0xdf3cf24b00000000,
++ 0x0eaba2c900000000, 0xbe82c2f400000000, 0x6ef862b300000000,
++ 0xded1028e00000000, 0xce0d223c00000000, 0x7e24420100000000,
++ 0xae5ee24600000000, 0x1e77827b00000000, 0x92b0e6b100000000,
++ 0x2299868c00000000, 0xf2e326cb00000000, 0x42ca46f600000000,
++ 0x5216664400000000, 0xe23f067900000000, 0x3245a63e00000000,
++ 0x826cc60300000000, 0x53fb968100000000, 0xe3d2f6bc00000000,
++ 0x33a856fb00000000, 0x838136c600000000, 0x935d167400000000,
++ 0x2374764900000000, 0xf30ed60e00000000, 0x4327b63300000000,
++ 0x102706d100000000, 0xa00e66ec00000000, 0x7074c6ab00000000,
++ 0xc05da69600000000, 0xd081862400000000, 0x60a8e61900000000,
++ 0xb0d2465e00000000, 0x00fb266300000000, 0xd16c76e100000000,
++ 0x614516dc00000000, 0xb13fb69b00000000, 0x0116d6a600000000,
++ 0x11caf61400000000, 0xa1e3962900000000, 0x7199366e00000000,
++ 0xc1b0565300000000, 0x969f277000000000, 0x26b6474d00000000,
++ 0xf6cce70a00000000, 0x46e5873700000000, 0x5639a78500000000,
++ 0xe610c7b800000000, 0x366a67ff00000000, 0x864307c200000000,
++ 0x57d4574000000000, 0xe7fd377d00000000, 0x3787973a00000000,
++ 0x87aef70700000000, 0x9772d7b500000000, 0x275bb78800000000,
++ 0xf72117cf00000000, 0x470877f200000000, 0x1408c71000000000,
++ 0xa421a72d00000000, 0x745b076a00000000, 0xc472675700000000,
++ 0xd4ae47e500000000, 0x648727d800000000, 0xb4fd879f00000000,
++ 0x04d4e7a200000000, 0xd543b72000000000, 0x656ad71d00000000,
++ 0xb510775a00000000, 0x0539176700000000, 0x15e537d500000000,
++ 0xa5cc57e800000000, 0x75b6f7af00000000, 0xc59f979200000000,
++ 0xdbe815e900000000, 0x6bc175d400000000, 0xbbbbd59300000000,
++ 0x0b92b5ae00000000, 0x1b4e951c00000000, 0xab67f52100000000,
++ 0x7b1d556600000000, 0xcb34355b00000000, 0x1aa365d900000000,
++ 0xaa8a05e400000000, 0x7af0a5a300000000, 0xcad9c59e00000000,
++ 0xda05e52c00000000, 0x6a2c851100000000, 0xba56255600000000,
++ 0x0a7f456b00000000, 0x597ff58900000000, 0xe95695b400000000,
++ 0x392c35f300000000, 0x890555ce00000000, 0x99d9757c00000000,
++ 0x29f0154100000000, 0xf98ab50600000000, 0x49a3d53b00000000,
++ 0x983485b900000000, 0x281de58400000000, 0xf86745c300000000,
++ 0x484e25fe00000000, 0x5892054c00000000, 0xe8bb657100000000,
++ 0x38c1c53600000000, 0x88e8a50b00000000, 0xdfc7d42800000000,
++ 0x6feeb41500000000, 0xbf94145200000000, 0x0fbd746f00000000,
++ 0x1f6154dd00000000, 0xaf4834e000000000, 0x7f3294a700000000,
++ 0xcf1bf49a00000000, 0x1e8ca41800000000, 0xaea5c42500000000,
++ 0x7edf646200000000, 0xcef6045f00000000, 0xde2a24ed00000000,
++ 0x6e0344d000000000, 0xbe79e49700000000, 0x0e5084aa00000000,
++ 0x5d50344800000000, 0xed79547500000000, 0x3d03f43200000000,
++ 0x8d2a940f00000000, 0x9df6b4bd00000000, 0x2ddfd48000000000,
++ 0xfda574c700000000, 0x4d8c14fa00000000, 0x9c1b447800000000,
++ 0x2c32244500000000, 0xfc48840200000000, 0x4c61e43f00000000,
++ 0x5cbdc48d00000000, 0xec94a4b000000000, 0x3cee04f700000000,
++ 0x8cc764ca00000000},
++ {0x0000000000000000, 0xa5d35ccb00000000, 0x0ba1c84d00000000,
++ 0xae72948600000000, 0x1642919b00000000, 0xb391cd5000000000,
++ 0x1de359d600000000, 0xb830051d00000000, 0x6d8253ec00000000,
++ 0xc8510f2700000000, 0x66239ba100000000, 0xc3f0c76a00000000,
++ 0x7bc0c27700000000, 0xde139ebc00000000, 0x70610a3a00000000,
++ 0xd5b256f100000000, 0x9b02d60300000000, 0x3ed18ac800000000,
++ 0x90a31e4e00000000, 0x3570428500000000, 0x8d40479800000000,
++ 0x28931b5300000000, 0x86e18fd500000000, 0x2332d31e00000000,
++ 0xf68085ef00000000, 0x5353d92400000000, 0xfd214da200000000,
++ 0x58f2116900000000, 0xe0c2147400000000, 0x451148bf00000000,
++ 0xeb63dc3900000000, 0x4eb080f200000000, 0x3605ac0700000000,
++ 0x93d6f0cc00000000, 0x3da4644a00000000, 0x9877388100000000,
++ 0x20473d9c00000000, 0x8594615700000000, 0x2be6f5d100000000,
++ 0x8e35a91a00000000, 0x5b87ffeb00000000, 0xfe54a32000000000,
++ 0x502637a600000000, 0xf5f56b6d00000000, 0x4dc56e7000000000,
++ 0xe81632bb00000000, 0x4664a63d00000000, 0xe3b7faf600000000,
++ 0xad077a0400000000, 0x08d426cf00000000, 0xa6a6b24900000000,
++ 0x0375ee8200000000, 0xbb45eb9f00000000, 0x1e96b75400000000,
++ 0xb0e423d200000000, 0x15377f1900000000, 0xc08529e800000000,
++ 0x6556752300000000, 0xcb24e1a500000000, 0x6ef7bd6e00000000,
++ 0xd6c7b87300000000, 0x7314e4b800000000, 0xdd66703e00000000,
++ 0x78b52cf500000000, 0x6c0a580f00000000, 0xc9d904c400000000,
++ 0x67ab904200000000, 0xc278cc8900000000, 0x7a48c99400000000,
++ 0xdf9b955f00000000, 0x71e901d900000000, 0xd43a5d1200000000,
++ 0x01880be300000000, 0xa45b572800000000, 0x0a29c3ae00000000,
++ 0xaffa9f6500000000, 0x17ca9a7800000000, 0xb219c6b300000000,
++ 0x1c6b523500000000, 0xb9b80efe00000000, 0xf7088e0c00000000,
++ 0x52dbd2c700000000, 0xfca9464100000000, 0x597a1a8a00000000,
++ 0xe14a1f9700000000, 0x4499435c00000000, 0xeaebd7da00000000,
++ 0x4f388b1100000000, 0x9a8adde000000000, 0x3f59812b00000000,
++ 0x912b15ad00000000, 0x34f8496600000000, 0x8cc84c7b00000000,
++ 0x291b10b000000000, 0x8769843600000000, 0x22bad8fd00000000,
++ 0x5a0ff40800000000, 0xffdca8c300000000, 0x51ae3c4500000000,
++ 0xf47d608e00000000, 0x4c4d659300000000, 0xe99e395800000000,
++ 0x47ecadde00000000, 0xe23ff11500000000, 0x378da7e400000000,
++ 0x925efb2f00000000, 0x3c2c6fa900000000, 0x99ff336200000000,
++ 0x21cf367f00000000, 0x841c6ab400000000, 0x2a6efe3200000000,
++ 0x8fbda2f900000000, 0xc10d220b00000000, 0x64de7ec000000000,
++ 0xcaacea4600000000, 0x6f7fb68d00000000, 0xd74fb39000000000,
++ 0x729cef5b00000000, 0xdcee7bdd00000000, 0x793d271600000000,
++ 0xac8f71e700000000, 0x095c2d2c00000000, 0xa72eb9aa00000000,
++ 0x02fde56100000000, 0xbacde07c00000000, 0x1f1ebcb700000000,
++ 0xb16c283100000000, 0x14bf74fa00000000, 0xd814b01e00000000,
++ 0x7dc7ecd500000000, 0xd3b5785300000000, 0x7666249800000000,
++ 0xce56218500000000, 0x6b857d4e00000000, 0xc5f7e9c800000000,
++ 0x6024b50300000000, 0xb596e3f200000000, 0x1045bf3900000000,
++ 0xbe372bbf00000000, 0x1be4777400000000, 0xa3d4726900000000,
++ 0x06072ea200000000, 0xa875ba2400000000, 0x0da6e6ef00000000,
++ 0x4316661d00000000, 0xe6c53ad600000000, 0x48b7ae5000000000,
++ 0xed64f29b00000000, 0x5554f78600000000, 0xf087ab4d00000000,
++ 0x5ef53fcb00000000, 0xfb26630000000000, 0x2e9435f100000000,
++ 0x8b47693a00000000, 0x2535fdbc00000000, 0x80e6a17700000000,
++ 0x38d6a46a00000000, 0x9d05f8a100000000, 0x33776c2700000000,
++ 0x96a430ec00000000, 0xee111c1900000000, 0x4bc240d200000000,
++ 0xe5b0d45400000000, 0x4063889f00000000, 0xf8538d8200000000,
++ 0x5d80d14900000000, 0xf3f245cf00000000, 0x5621190400000000,
++ 0x83934ff500000000, 0x2640133e00000000, 0x883287b800000000,
++ 0x2de1db7300000000, 0x95d1de6e00000000, 0x300282a500000000,
++ 0x9e70162300000000, 0x3ba34ae800000000, 0x7513ca1a00000000,
++ 0xd0c096d100000000, 0x7eb2025700000000, 0xdb615e9c00000000,
++ 0x63515b8100000000, 0xc682074a00000000, 0x68f093cc00000000,
++ 0xcd23cf0700000000, 0x189199f600000000, 0xbd42c53d00000000,
++ 0x133051bb00000000, 0xb6e30d7000000000, 0x0ed3086d00000000,
++ 0xab0054a600000000, 0x0572c02000000000, 0xa0a19ceb00000000,
++ 0xb41ee81100000000, 0x11cdb4da00000000, 0xbfbf205c00000000,
++ 0x1a6c7c9700000000, 0xa25c798a00000000, 0x078f254100000000,
++ 0xa9fdb1c700000000, 0x0c2eed0c00000000, 0xd99cbbfd00000000,
++ 0x7c4fe73600000000, 0xd23d73b000000000, 0x77ee2f7b00000000,
++ 0xcfde2a6600000000, 0x6a0d76ad00000000, 0xc47fe22b00000000,
++ 0x61acbee000000000, 0x2f1c3e1200000000, 0x8acf62d900000000,
++ 0x24bdf65f00000000, 0x816eaa9400000000, 0x395eaf8900000000,
++ 0x9c8df34200000000, 0x32ff67c400000000, 0x972c3b0f00000000,
++ 0x429e6dfe00000000, 0xe74d313500000000, 0x493fa5b300000000,
++ 0xececf97800000000, 0x54dcfc6500000000, 0xf10fa0ae00000000,
++ 0x5f7d342800000000, 0xfaae68e300000000, 0x821b441600000000,
++ 0x27c818dd00000000, 0x89ba8c5b00000000, 0x2c69d09000000000,
++ 0x9459d58d00000000, 0x318a894600000000, 0x9ff81dc000000000,
++ 0x3a2b410b00000000, 0xef9917fa00000000, 0x4a4a4b3100000000,
++ 0xe438dfb700000000, 0x41eb837c00000000, 0xf9db866100000000,
++ 0x5c08daaa00000000, 0xf27a4e2c00000000, 0x57a912e700000000,
++ 0x1919921500000000, 0xbccacede00000000, 0x12b85a5800000000,
++ 0xb76b069300000000, 0x0f5b038e00000000, 0xaa885f4500000000,
++ 0x04facbc300000000, 0xa129970800000000, 0x749bc1f900000000,
++ 0xd1489d3200000000, 0x7f3a09b400000000, 0xdae9557f00000000,
++ 0x62d9506200000000, 0xc70a0ca900000000, 0x6978982f00000000,
++ 0xccabc4e400000000},
++ {0x0000000000000000, 0xb40b77a600000000, 0x29119f9700000000,
++ 0x9d1ae83100000000, 0x13244ff400000000, 0xa72f385200000000,
++ 0x3a35d06300000000, 0x8e3ea7c500000000, 0x674eef3300000000,
++ 0xd345989500000000, 0x4e5f70a400000000, 0xfa54070200000000,
++ 0x746aa0c700000000, 0xc061d76100000000, 0x5d7b3f5000000000,
++ 0xe97048f600000000, 0xce9cde6700000000, 0x7a97a9c100000000,
++ 0xe78d41f000000000, 0x5386365600000000, 0xddb8919300000000,
++ 0x69b3e63500000000, 0xf4a90e0400000000, 0x40a279a200000000,
++ 0xa9d2315400000000, 0x1dd946f200000000, 0x80c3aec300000000,
++ 0x34c8d96500000000, 0xbaf67ea000000000, 0x0efd090600000000,
++ 0x93e7e13700000000, 0x27ec969100000000, 0x9c39bdcf00000000,
++ 0x2832ca6900000000, 0xb528225800000000, 0x012355fe00000000,
++ 0x8f1df23b00000000, 0x3b16859d00000000, 0xa60c6dac00000000,
++ 0x12071a0a00000000, 0xfb7752fc00000000, 0x4f7c255a00000000,
++ 0xd266cd6b00000000, 0x666dbacd00000000, 0xe8531d0800000000,
++ 0x5c586aae00000000, 0xc142829f00000000, 0x7549f53900000000,
++ 0x52a563a800000000, 0xe6ae140e00000000, 0x7bb4fc3f00000000,
++ 0xcfbf8b9900000000, 0x41812c5c00000000, 0xf58a5bfa00000000,
++ 0x6890b3cb00000000, 0xdc9bc46d00000000, 0x35eb8c9b00000000,
++ 0x81e0fb3d00000000, 0x1cfa130c00000000, 0xa8f164aa00000000,
++ 0x26cfc36f00000000, 0x92c4b4c900000000, 0x0fde5cf800000000,
++ 0xbbd52b5e00000000, 0x79750b4400000000, 0xcd7e7ce200000000,
++ 0x506494d300000000, 0xe46fe37500000000, 0x6a5144b000000000,
++ 0xde5a331600000000, 0x4340db2700000000, 0xf74bac8100000000,
++ 0x1e3be47700000000, 0xaa3093d100000000, 0x372a7be000000000,
++ 0x83210c4600000000, 0x0d1fab8300000000, 0xb914dc2500000000,
++ 0x240e341400000000, 0x900543b200000000, 0xb7e9d52300000000,
++ 0x03e2a28500000000, 0x9ef84ab400000000, 0x2af33d1200000000,
++ 0xa4cd9ad700000000, 0x10c6ed7100000000, 0x8ddc054000000000,
++ 0x39d772e600000000, 0xd0a73a1000000000, 0x64ac4db600000000,
++ 0xf9b6a58700000000, 0x4dbdd22100000000, 0xc38375e400000000,
++ 0x7788024200000000, 0xea92ea7300000000, 0x5e999dd500000000,
++ 0xe54cb68b00000000, 0x5147c12d00000000, 0xcc5d291c00000000,
++ 0x78565eba00000000, 0xf668f97f00000000, 0x42638ed900000000,
++ 0xdf7966e800000000, 0x6b72114e00000000, 0x820259b800000000,
++ 0x36092e1e00000000, 0xab13c62f00000000, 0x1f18b18900000000,
++ 0x9126164c00000000, 0x252d61ea00000000, 0xb83789db00000000,
++ 0x0c3cfe7d00000000, 0x2bd068ec00000000, 0x9fdb1f4a00000000,
++ 0x02c1f77b00000000, 0xb6ca80dd00000000, 0x38f4271800000000,
++ 0x8cff50be00000000, 0x11e5b88f00000000, 0xa5eecf2900000000,
++ 0x4c9e87df00000000, 0xf895f07900000000, 0x658f184800000000,
++ 0xd1846fee00000000, 0x5fbac82b00000000, 0xebb1bf8d00000000,
++ 0x76ab57bc00000000, 0xc2a0201a00000000, 0xf2ea168800000000,
++ 0x46e1612e00000000, 0xdbfb891f00000000, 0x6ff0feb900000000,
++ 0xe1ce597c00000000, 0x55c52eda00000000, 0xc8dfc6eb00000000,
++ 0x7cd4b14d00000000, 0x95a4f9bb00000000, 0x21af8e1d00000000,
++ 0xbcb5662c00000000, 0x08be118a00000000, 0x8680b64f00000000,
++ 0x328bc1e900000000, 0xaf9129d800000000, 0x1b9a5e7e00000000,
++ 0x3c76c8ef00000000, 0x887dbf4900000000, 0x1567577800000000,
++ 0xa16c20de00000000, 0x2f52871b00000000, 0x9b59f0bd00000000,
++ 0x0643188c00000000, 0xb2486f2a00000000, 0x5b3827dc00000000,
++ 0xef33507a00000000, 0x7229b84b00000000, 0xc622cfed00000000,
++ 0x481c682800000000, 0xfc171f8e00000000, 0x610df7bf00000000,
++ 0xd506801900000000, 0x6ed3ab4700000000, 0xdad8dce100000000,
++ 0x47c234d000000000, 0xf3c9437600000000, 0x7df7e4b300000000,
++ 0xc9fc931500000000, 0x54e67b2400000000, 0xe0ed0c8200000000,
++ 0x099d447400000000, 0xbd9633d200000000, 0x208cdbe300000000,
++ 0x9487ac4500000000, 0x1ab90b8000000000, 0xaeb27c2600000000,
++ 0x33a8941700000000, 0x87a3e3b100000000, 0xa04f752000000000,
++ 0x1444028600000000, 0x895eeab700000000, 0x3d559d1100000000,
++ 0xb36b3ad400000000, 0x07604d7200000000, 0x9a7aa54300000000,
++ 0x2e71d2e500000000, 0xc7019a1300000000, 0x730aedb500000000,
++ 0xee10058400000000, 0x5a1b722200000000, 0xd425d5e700000000,
++ 0x602ea24100000000, 0xfd344a7000000000, 0x493f3dd600000000,
++ 0x8b9f1dcc00000000, 0x3f946a6a00000000, 0xa28e825b00000000,
++ 0x1685f5fd00000000, 0x98bb523800000000, 0x2cb0259e00000000,
++ 0xb1aacdaf00000000, 0x05a1ba0900000000, 0xecd1f2ff00000000,
++ 0x58da855900000000, 0xc5c06d6800000000, 0x71cb1ace00000000,
++ 0xfff5bd0b00000000, 0x4bfecaad00000000, 0xd6e4229c00000000,
++ 0x62ef553a00000000, 0x4503c3ab00000000, 0xf108b40d00000000,
++ 0x6c125c3c00000000, 0xd8192b9a00000000, 0x56278c5f00000000,
++ 0xe22cfbf900000000, 0x7f3613c800000000, 0xcb3d646e00000000,
++ 0x224d2c9800000000, 0x96465b3e00000000, 0x0b5cb30f00000000,
++ 0xbf57c4a900000000, 0x3169636c00000000, 0x856214ca00000000,
++ 0x1878fcfb00000000, 0xac738b5d00000000, 0x17a6a00300000000,
++ 0xa3add7a500000000, 0x3eb73f9400000000, 0x8abc483200000000,
++ 0x0482eff700000000, 0xb089985100000000, 0x2d93706000000000,
++ 0x999807c600000000, 0x70e84f3000000000, 0xc4e3389600000000,
++ 0x59f9d0a700000000, 0xedf2a70100000000, 0x63cc00c400000000,
++ 0xd7c7776200000000, 0x4add9f5300000000, 0xfed6e8f500000000,
++ 0xd93a7e6400000000, 0x6d3109c200000000, 0xf02be1f300000000,
++ 0x4420965500000000, 0xca1e319000000000, 0x7e15463600000000,
++ 0xe30fae0700000000, 0x5704d9a100000000, 0xbe74915700000000,
++ 0x0a7fe6f100000000, 0x97650ec000000000, 0x236e796600000000,
++ 0xad50dea300000000, 0x195ba90500000000, 0x8441413400000000,
++ 0x304a369200000000},
++ {0x0000000000000000, 0x9e00aacc00000000, 0x7d07254200000000,
++ 0xe3078f8e00000000, 0xfa0e4a8400000000, 0x640ee04800000000,
++ 0x87096fc600000000, 0x1909c50a00000000, 0xb51be5d300000000,
++ 0x2b1b4f1f00000000, 0xc81cc09100000000, 0x561c6a5d00000000,
++ 0x4f15af5700000000, 0xd115059b00000000, 0x32128a1500000000,
++ 0xac1220d900000000, 0x2b31bb7c00000000, 0xb53111b000000000,
++ 0x56369e3e00000000, 0xc83634f200000000, 0xd13ff1f800000000,
++ 0x4f3f5b3400000000, 0xac38d4ba00000000, 0x32387e7600000000,
++ 0x9e2a5eaf00000000, 0x002af46300000000, 0xe32d7bed00000000,
++ 0x7d2dd12100000000, 0x6424142b00000000, 0xfa24bee700000000,
++ 0x1923316900000000, 0x87239ba500000000, 0x566276f900000000,
++ 0xc862dc3500000000, 0x2b6553bb00000000, 0xb565f97700000000,
++ 0xac6c3c7d00000000, 0x326c96b100000000, 0xd16b193f00000000,
++ 0x4f6bb3f300000000, 0xe379932a00000000, 0x7d7939e600000000,
++ 0x9e7eb66800000000, 0x007e1ca400000000, 0x1977d9ae00000000,
++ 0x8777736200000000, 0x6470fcec00000000, 0xfa70562000000000,
++ 0x7d53cd8500000000, 0xe353674900000000, 0x0054e8c700000000,
++ 0x9e54420b00000000, 0x875d870100000000, 0x195d2dcd00000000,
++ 0xfa5aa24300000000, 0x645a088f00000000, 0xc848285600000000,
++ 0x5648829a00000000, 0xb54f0d1400000000, 0x2b4fa7d800000000,
++ 0x324662d200000000, 0xac46c81e00000000, 0x4f41479000000000,
++ 0xd141ed5c00000000, 0xedc29d2900000000, 0x73c237e500000000,
++ 0x90c5b86b00000000, 0x0ec512a700000000, 0x17ccd7ad00000000,
++ 0x89cc7d6100000000, 0x6acbf2ef00000000, 0xf4cb582300000000,
++ 0x58d978fa00000000, 0xc6d9d23600000000, 0x25de5db800000000,
++ 0xbbdef77400000000, 0xa2d7327e00000000, 0x3cd798b200000000,
++ 0xdfd0173c00000000, 0x41d0bdf000000000, 0xc6f3265500000000,
++ 0x58f38c9900000000, 0xbbf4031700000000, 0x25f4a9db00000000,
++ 0x3cfd6cd100000000, 0xa2fdc61d00000000, 0x41fa499300000000,
++ 0xdffae35f00000000, 0x73e8c38600000000, 0xede8694a00000000,
++ 0x0eefe6c400000000, 0x90ef4c0800000000, 0x89e6890200000000,
++ 0x17e623ce00000000, 0xf4e1ac4000000000, 0x6ae1068c00000000,
++ 0xbba0ebd000000000, 0x25a0411c00000000, 0xc6a7ce9200000000,
++ 0x58a7645e00000000, 0x41aea15400000000, 0xdfae0b9800000000,
++ 0x3ca9841600000000, 0xa2a92eda00000000, 0x0ebb0e0300000000,
++ 0x90bba4cf00000000, 0x73bc2b4100000000, 0xedbc818d00000000,
++ 0xf4b5448700000000, 0x6ab5ee4b00000000, 0x89b261c500000000,
++ 0x17b2cb0900000000, 0x909150ac00000000, 0x0e91fa6000000000,
++ 0xed9675ee00000000, 0x7396df2200000000, 0x6a9f1a2800000000,
++ 0xf49fb0e400000000, 0x17983f6a00000000, 0x899895a600000000,
++ 0x258ab57f00000000, 0xbb8a1fb300000000, 0x588d903d00000000,
++ 0xc68d3af100000000, 0xdf84fffb00000000, 0x4184553700000000,
++ 0xa283dab900000000, 0x3c83707500000000, 0xda853b5300000000,
++ 0x4485919f00000000, 0xa7821e1100000000, 0x3982b4dd00000000,
++ 0x208b71d700000000, 0xbe8bdb1b00000000, 0x5d8c549500000000,
++ 0xc38cfe5900000000, 0x6f9ede8000000000, 0xf19e744c00000000,
++ 0x1299fbc200000000, 0x8c99510e00000000, 0x9590940400000000,
++ 0x0b903ec800000000, 0xe897b14600000000, 0x76971b8a00000000,
++ 0xf1b4802f00000000, 0x6fb42ae300000000, 0x8cb3a56d00000000,
++ 0x12b30fa100000000, 0x0bbacaab00000000, 0x95ba606700000000,
++ 0x76bdefe900000000, 0xe8bd452500000000, 0x44af65fc00000000,
++ 0xdaafcf3000000000, 0x39a840be00000000, 0xa7a8ea7200000000,
++ 0xbea12f7800000000, 0x20a185b400000000, 0xc3a60a3a00000000,
++ 0x5da6a0f600000000, 0x8ce74daa00000000, 0x12e7e76600000000,
++ 0xf1e068e800000000, 0x6fe0c22400000000, 0x76e9072e00000000,
++ 0xe8e9ade200000000, 0x0bee226c00000000, 0x95ee88a000000000,
++ 0x39fca87900000000, 0xa7fc02b500000000, 0x44fb8d3b00000000,
++ 0xdafb27f700000000, 0xc3f2e2fd00000000, 0x5df2483100000000,
++ 0xbef5c7bf00000000, 0x20f56d7300000000, 0xa7d6f6d600000000,
++ 0x39d65c1a00000000, 0xdad1d39400000000, 0x44d1795800000000,
++ 0x5dd8bc5200000000, 0xc3d8169e00000000, 0x20df991000000000,
++ 0xbedf33dc00000000, 0x12cd130500000000, 0x8ccdb9c900000000,
++ 0x6fca364700000000, 0xf1ca9c8b00000000, 0xe8c3598100000000,
++ 0x76c3f34d00000000, 0x95c47cc300000000, 0x0bc4d60f00000000,
++ 0x3747a67a00000000, 0xa9470cb600000000, 0x4a40833800000000,
++ 0xd44029f400000000, 0xcd49ecfe00000000, 0x5349463200000000,
++ 0xb04ec9bc00000000, 0x2e4e637000000000, 0x825c43a900000000,
++ 0x1c5ce96500000000, 0xff5b66eb00000000, 0x615bcc2700000000,
++ 0x7852092d00000000, 0xe652a3e100000000, 0x05552c6f00000000,
++ 0x9b5586a300000000, 0x1c761d0600000000, 0x8276b7ca00000000,
++ 0x6171384400000000, 0xff71928800000000, 0xe678578200000000,
++ 0x7878fd4e00000000, 0x9b7f72c000000000, 0x057fd80c00000000,
++ 0xa96df8d500000000, 0x376d521900000000, 0xd46add9700000000,
++ 0x4a6a775b00000000, 0x5363b25100000000, 0xcd63189d00000000,
++ 0x2e64971300000000, 0xb0643ddf00000000, 0x6125d08300000000,
++ 0xff257a4f00000000, 0x1c22f5c100000000, 0x82225f0d00000000,
++ 0x9b2b9a0700000000, 0x052b30cb00000000, 0xe62cbf4500000000,
++ 0x782c158900000000, 0xd43e355000000000, 0x4a3e9f9c00000000,
++ 0xa939101200000000, 0x3739bade00000000, 0x2e307fd400000000,
++ 0xb030d51800000000, 0x53375a9600000000, 0xcd37f05a00000000,
++ 0x4a146bff00000000, 0xd414c13300000000, 0x37134ebd00000000,
++ 0xa913e47100000000, 0xb01a217b00000000, 0x2e1a8bb700000000,
++ 0xcd1d043900000000, 0x531daef500000000, 0xff0f8e2c00000000,
++ 0x610f24e000000000, 0x8208ab6e00000000, 0x1c0801a200000000,
++ 0x0501c4a800000000, 0x9b016e6400000000, 0x7806e1ea00000000,
++ 0xe6064b2600000000}};
++
++#else /* W == 4 */
++
++local const z_crc_t FAR crc_braid_table[][256] = {
++ {0x00000000, 0xb8bc6765, 0xaa09c88b, 0x12b5afee, 0x8f629757,
++ 0x37def032, 0x256b5fdc, 0x9dd738b9, 0xc5b428ef, 0x7d084f8a,
++ 0x6fbde064, 0xd7018701, 0x4ad6bfb8, 0xf26ad8dd, 0xe0df7733,
++ 0x58631056, 0x5019579f, 0xe8a530fa, 0xfa109f14, 0x42acf871,
++ 0xdf7bc0c8, 0x67c7a7ad, 0x75720843, 0xcdce6f26, 0x95ad7f70,
++ 0x2d111815, 0x3fa4b7fb, 0x8718d09e, 0x1acfe827, 0xa2738f42,
++ 0xb0c620ac, 0x087a47c9, 0xa032af3e, 0x188ec85b, 0x0a3b67b5,
++ 0xb28700d0, 0x2f503869, 0x97ec5f0c, 0x8559f0e2, 0x3de59787,
++ 0x658687d1, 0xdd3ae0b4, 0xcf8f4f5a, 0x7733283f, 0xeae41086,
++ 0x525877e3, 0x40edd80d, 0xf851bf68, 0xf02bf8a1, 0x48979fc4,
++ 0x5a22302a, 0xe29e574f, 0x7f496ff6, 0xc7f50893, 0xd540a77d,
++ 0x6dfcc018, 0x359fd04e, 0x8d23b72b, 0x9f9618c5, 0x272a7fa0,
++ 0xbafd4719, 0x0241207c, 0x10f48f92, 0xa848e8f7, 0x9b14583d,
++ 0x23a83f58, 0x311d90b6, 0x89a1f7d3, 0x1476cf6a, 0xaccaa80f,
++ 0xbe7f07e1, 0x06c36084, 0x5ea070d2, 0xe61c17b7, 0xf4a9b859,
++ 0x4c15df3c, 0xd1c2e785, 0x697e80e0, 0x7bcb2f0e, 0xc377486b,
++ 0xcb0d0fa2, 0x73b168c7, 0x6104c729, 0xd9b8a04c, 0x446f98f5,
++ 0xfcd3ff90, 0xee66507e, 0x56da371b, 0x0eb9274d, 0xb6054028,
++ 0xa4b0efc6, 0x1c0c88a3, 0x81dbb01a, 0x3967d77f, 0x2bd27891,
++ 0x936e1ff4, 0x3b26f703, 0x839a9066, 0x912f3f88, 0x299358ed,
++ 0xb4446054, 0x0cf80731, 0x1e4da8df, 0xa6f1cfba, 0xfe92dfec,
++ 0x462eb889, 0x549b1767, 0xec277002, 0x71f048bb, 0xc94c2fde,
++ 0xdbf98030, 0x6345e755, 0x6b3fa09c, 0xd383c7f9, 0xc1366817,
++ 0x798a0f72, 0xe45d37cb, 0x5ce150ae, 0x4e54ff40, 0xf6e89825,
++ 0xae8b8873, 0x1637ef16, 0x048240f8, 0xbc3e279d, 0x21e91f24,
++ 0x99557841, 0x8be0d7af, 0x335cb0ca, 0xed59b63b, 0x55e5d15e,
++ 0x47507eb0, 0xffec19d5, 0x623b216c, 0xda874609, 0xc832e9e7,
++ 0x708e8e82, 0x28ed9ed4, 0x9051f9b1, 0x82e4565f, 0x3a58313a,
++ 0xa78f0983, 0x1f336ee6, 0x0d86c108, 0xb53aa66d, 0xbd40e1a4,
++ 0x05fc86c1, 0x1749292f, 0xaff54e4a, 0x322276f3, 0x8a9e1196,
++ 0x982bbe78, 0x2097d91d, 0x78f4c94b, 0xc048ae2e, 0xd2fd01c0,
++ 0x6a4166a5, 0xf7965e1c, 0x4f2a3979, 0x5d9f9697, 0xe523f1f2,
++ 0x4d6b1905, 0xf5d77e60, 0xe762d18e, 0x5fdeb6eb, 0xc2098e52,
++ 0x7ab5e937, 0x680046d9, 0xd0bc21bc, 0x88df31ea, 0x3063568f,
++ 0x22d6f961, 0x9a6a9e04, 0x07bda6bd, 0xbf01c1d8, 0xadb46e36,
++ 0x15080953, 0x1d724e9a, 0xa5ce29ff, 0xb77b8611, 0x0fc7e174,
++ 0x9210d9cd, 0x2aacbea8, 0x38191146, 0x80a57623, 0xd8c66675,
++ 0x607a0110, 0x72cfaefe, 0xca73c99b, 0x57a4f122, 0xef189647,
++ 0xfdad39a9, 0x45115ecc, 0x764dee06, 0xcef18963, 0xdc44268d,
++ 0x64f841e8, 0xf92f7951, 0x41931e34, 0x5326b1da, 0xeb9ad6bf,
++ 0xb3f9c6e9, 0x0b45a18c, 0x19f00e62, 0xa14c6907, 0x3c9b51be,
++ 0x842736db, 0x96929935, 0x2e2efe50, 0x2654b999, 0x9ee8defc,
++ 0x8c5d7112, 0x34e11677, 0xa9362ece, 0x118a49ab, 0x033fe645,
++ 0xbb838120, 0xe3e09176, 0x5b5cf613, 0x49e959fd, 0xf1553e98,
++ 0x6c820621, 0xd43e6144, 0xc68bceaa, 0x7e37a9cf, 0xd67f4138,
++ 0x6ec3265d, 0x7c7689b3, 0xc4caeed6, 0x591dd66f, 0xe1a1b10a,
++ 0xf3141ee4, 0x4ba87981, 0x13cb69d7, 0xab770eb2, 0xb9c2a15c,
++ 0x017ec639, 0x9ca9fe80, 0x241599e5, 0x36a0360b, 0x8e1c516e,
++ 0x866616a7, 0x3eda71c2, 0x2c6fde2c, 0x94d3b949, 0x090481f0,
++ 0xb1b8e695, 0xa30d497b, 0x1bb12e1e, 0x43d23e48, 0xfb6e592d,
++ 0xe9dbf6c3, 0x516791a6, 0xccb0a91f, 0x740cce7a, 0x66b96194,
++ 0xde0506f1},
++ {0x00000000, 0x01c26a37, 0x0384d46e, 0x0246be59, 0x0709a8dc,
++ 0x06cbc2eb, 0x048d7cb2, 0x054f1685, 0x0e1351b8, 0x0fd13b8f,
++ 0x0d9785d6, 0x0c55efe1, 0x091af964, 0x08d89353, 0x0a9e2d0a,
++ 0x0b5c473d, 0x1c26a370, 0x1de4c947, 0x1fa2771e, 0x1e601d29,
++ 0x1b2f0bac, 0x1aed619b, 0x18abdfc2, 0x1969b5f5, 0x1235f2c8,
++ 0x13f798ff, 0x11b126a6, 0x10734c91, 0x153c5a14, 0x14fe3023,
++ 0x16b88e7a, 0x177ae44d, 0x384d46e0, 0x398f2cd7, 0x3bc9928e,
++ 0x3a0bf8b9, 0x3f44ee3c, 0x3e86840b, 0x3cc03a52, 0x3d025065,
++ 0x365e1758, 0x379c7d6f, 0x35dac336, 0x3418a901, 0x3157bf84,
++ 0x3095d5b3, 0x32d36bea, 0x331101dd, 0x246be590, 0x25a98fa7,
++ 0x27ef31fe, 0x262d5bc9, 0x23624d4c, 0x22a0277b, 0x20e69922,
++ 0x2124f315, 0x2a78b428, 0x2bbade1f, 0x29fc6046, 0x283e0a71,
++ 0x2d711cf4, 0x2cb376c3, 0x2ef5c89a, 0x2f37a2ad, 0x709a8dc0,
++ 0x7158e7f7, 0x731e59ae, 0x72dc3399, 0x7793251c, 0x76514f2b,
++ 0x7417f172, 0x75d59b45, 0x7e89dc78, 0x7f4bb64f, 0x7d0d0816,
++ 0x7ccf6221, 0x798074a4, 0x78421e93, 0x7a04a0ca, 0x7bc6cafd,
++ 0x6cbc2eb0, 0x6d7e4487, 0x6f38fade, 0x6efa90e9, 0x6bb5866c,
++ 0x6a77ec5b, 0x68315202, 0x69f33835, 0x62af7f08, 0x636d153f,
++ 0x612bab66, 0x60e9c151, 0x65a6d7d4, 0x6464bde3, 0x662203ba,
++ 0x67e0698d, 0x48d7cb20, 0x4915a117, 0x4b531f4e, 0x4a917579,
++ 0x4fde63fc, 0x4e1c09cb, 0x4c5ab792, 0x4d98dda5, 0x46c49a98,
++ 0x4706f0af, 0x45404ef6, 0x448224c1, 0x41cd3244, 0x400f5873,
++ 0x4249e62a, 0x438b8c1d, 0x54f16850, 0x55330267, 0x5775bc3e,
++ 0x56b7d609, 0x53f8c08c, 0x523aaabb, 0x507c14e2, 0x51be7ed5,
++ 0x5ae239e8, 0x5b2053df, 0x5966ed86, 0x58a487b1, 0x5deb9134,
++ 0x5c29fb03, 0x5e6f455a, 0x5fad2f6d, 0xe1351b80, 0xe0f771b7,
++ 0xe2b1cfee, 0xe373a5d9, 0xe63cb35c, 0xe7fed96b, 0xe5b86732,
++ 0xe47a0d05, 0xef264a38, 0xeee4200f, 0xeca29e56, 0xed60f461,
++ 0xe82fe2e4, 0xe9ed88d3, 0xebab368a, 0xea695cbd, 0xfd13b8f0,
++ 0xfcd1d2c7, 0xfe976c9e, 0xff5506a9, 0xfa1a102c, 0xfbd87a1b,
++ 0xf99ec442, 0xf85cae75, 0xf300e948, 0xf2c2837f, 0xf0843d26,
++ 0xf1465711, 0xf4094194, 0xf5cb2ba3, 0xf78d95fa, 0xf64fffcd,
++ 0xd9785d60, 0xd8ba3757, 0xdafc890e, 0xdb3ee339, 0xde71f5bc,
++ 0xdfb39f8b, 0xddf521d2, 0xdc374be5, 0xd76b0cd8, 0xd6a966ef,
++ 0xd4efd8b6, 0xd52db281, 0xd062a404, 0xd1a0ce33, 0xd3e6706a,
++ 0xd2241a5d, 0xc55efe10, 0xc49c9427, 0xc6da2a7e, 0xc7184049,
++ 0xc25756cc, 0xc3953cfb, 0xc1d382a2, 0xc011e895, 0xcb4dafa8,
++ 0xca8fc59f, 0xc8c97bc6, 0xc90b11f1, 0xcc440774, 0xcd866d43,
++ 0xcfc0d31a, 0xce02b92d, 0x91af9640, 0x906dfc77, 0x922b422e,
++ 0x93e92819, 0x96a63e9c, 0x976454ab, 0x9522eaf2, 0x94e080c5,
++ 0x9fbcc7f8, 0x9e7eadcf, 0x9c381396, 0x9dfa79a1, 0x98b56f24,
++ 0x99770513, 0x9b31bb4a, 0x9af3d17d, 0x8d893530, 0x8c4b5f07,
++ 0x8e0de15e, 0x8fcf8b69, 0x8a809dec, 0x8b42f7db, 0x89044982,
++ 0x88c623b5, 0x839a6488, 0x82580ebf, 0x801eb0e6, 0x81dcdad1,
++ 0x8493cc54, 0x8551a663, 0x8717183a, 0x86d5720d, 0xa9e2d0a0,
++ 0xa820ba97, 0xaa6604ce, 0xaba46ef9, 0xaeeb787c, 0xaf29124b,
++ 0xad6fac12, 0xacadc625, 0xa7f18118, 0xa633eb2f, 0xa4755576,
++ 0xa5b73f41, 0xa0f829c4, 0xa13a43f3, 0xa37cfdaa, 0xa2be979d,
++ 0xb5c473d0, 0xb40619e7, 0xb640a7be, 0xb782cd89, 0xb2cddb0c,
++ 0xb30fb13b, 0xb1490f62, 0xb08b6555, 0xbbd72268, 0xba15485f,
++ 0xb853f606, 0xb9919c31, 0xbcde8ab4, 0xbd1ce083, 0xbf5a5eda,
++ 0xbe9834ed},
++ {0x00000000, 0x191b3141, 0x32366282, 0x2b2d53c3, 0x646cc504,
++ 0x7d77f445, 0x565aa786, 0x4f4196c7, 0xc8d98a08, 0xd1c2bb49,
++ 0xfaefe88a, 0xe3f4d9cb, 0xacb54f0c, 0xb5ae7e4d, 0x9e832d8e,
++ 0x87981ccf, 0x4ac21251, 0x53d92310, 0x78f470d3, 0x61ef4192,
++ 0x2eaed755, 0x37b5e614, 0x1c98b5d7, 0x05838496, 0x821b9859,
++ 0x9b00a918, 0xb02dfadb, 0xa936cb9a, 0xe6775d5d, 0xff6c6c1c,
++ 0xd4413fdf, 0xcd5a0e9e, 0x958424a2, 0x8c9f15e3, 0xa7b24620,
++ 0xbea97761, 0xf1e8e1a6, 0xe8f3d0e7, 0xc3de8324, 0xdac5b265,
++ 0x5d5daeaa, 0x44469feb, 0x6f6bcc28, 0x7670fd69, 0x39316bae,
++ 0x202a5aef, 0x0b07092c, 0x121c386d, 0xdf4636f3, 0xc65d07b2,
++ 0xed705471, 0xf46b6530, 0xbb2af3f7, 0xa231c2b6, 0x891c9175,
++ 0x9007a034, 0x179fbcfb, 0x0e848dba, 0x25a9de79, 0x3cb2ef38,
++ 0x73f379ff, 0x6ae848be, 0x41c51b7d, 0x58de2a3c, 0xf0794f05,
++ 0xe9627e44, 0xc24f2d87, 0xdb541cc6, 0x94158a01, 0x8d0ebb40,
++ 0xa623e883, 0xbf38d9c2, 0x38a0c50d, 0x21bbf44c, 0x0a96a78f,
++ 0x138d96ce, 0x5ccc0009, 0x45d73148, 0x6efa628b, 0x77e153ca,
++ 0xbabb5d54, 0xa3a06c15, 0x888d3fd6, 0x91960e97, 0xded79850,
++ 0xc7cca911, 0xece1fad2, 0xf5facb93, 0x7262d75c, 0x6b79e61d,
++ 0x4054b5de, 0x594f849f, 0x160e1258, 0x0f152319, 0x243870da,
++ 0x3d23419b, 0x65fd6ba7, 0x7ce65ae6, 0x57cb0925, 0x4ed03864,
++ 0x0191aea3, 0x188a9fe2, 0x33a7cc21, 0x2abcfd60, 0xad24e1af,
++ 0xb43fd0ee, 0x9f12832d, 0x8609b26c, 0xc94824ab, 0xd05315ea,
++ 0xfb7e4629, 0xe2657768, 0x2f3f79f6, 0x362448b7, 0x1d091b74,
++ 0x04122a35, 0x4b53bcf2, 0x52488db3, 0x7965de70, 0x607eef31,
++ 0xe7e6f3fe, 0xfefdc2bf, 0xd5d0917c, 0xcccba03d, 0x838a36fa,
++ 0x9a9107bb, 0xb1bc5478, 0xa8a76539, 0x3b83984b, 0x2298a90a,
++ 0x09b5fac9, 0x10aecb88, 0x5fef5d4f, 0x46f46c0e, 0x6dd93fcd,
++ 0x74c20e8c, 0xf35a1243, 0xea412302, 0xc16c70c1, 0xd8774180,
++ 0x9736d747, 0x8e2de606, 0xa500b5c5, 0xbc1b8484, 0x71418a1a,
++ 0x685abb5b, 0x4377e898, 0x5a6cd9d9, 0x152d4f1e, 0x0c367e5f,
++ 0x271b2d9c, 0x3e001cdd, 0xb9980012, 0xa0833153, 0x8bae6290,
++ 0x92b553d1, 0xddf4c516, 0xc4eff457, 0xefc2a794, 0xf6d996d5,
++ 0xae07bce9, 0xb71c8da8, 0x9c31de6b, 0x852aef2a, 0xca6b79ed,
++ 0xd37048ac, 0xf85d1b6f, 0xe1462a2e, 0x66de36e1, 0x7fc507a0,
++ 0x54e85463, 0x4df36522, 0x02b2f3e5, 0x1ba9c2a4, 0x30849167,
++ 0x299fa026, 0xe4c5aeb8, 0xfdde9ff9, 0xd6f3cc3a, 0xcfe8fd7b,
++ 0x80a96bbc, 0x99b25afd, 0xb29f093e, 0xab84387f, 0x2c1c24b0,
++ 0x350715f1, 0x1e2a4632, 0x07317773, 0x4870e1b4, 0x516bd0f5,
++ 0x7a468336, 0x635db277, 0xcbfad74e, 0xd2e1e60f, 0xf9ccb5cc,
++ 0xe0d7848d, 0xaf96124a, 0xb68d230b, 0x9da070c8, 0x84bb4189,
++ 0x03235d46, 0x1a386c07, 0x31153fc4, 0x280e0e85, 0x674f9842,
++ 0x7e54a903, 0x5579fac0, 0x4c62cb81, 0x8138c51f, 0x9823f45e,
++ 0xb30ea79d, 0xaa1596dc, 0xe554001b, 0xfc4f315a, 0xd7626299,
++ 0xce7953d8, 0x49e14f17, 0x50fa7e56, 0x7bd72d95, 0x62cc1cd4,
++ 0x2d8d8a13, 0x3496bb52, 0x1fbbe891, 0x06a0d9d0, 0x5e7ef3ec,
++ 0x4765c2ad, 0x6c48916e, 0x7553a02f, 0x3a1236e8, 0x230907a9,
++ 0x0824546a, 0x113f652b, 0x96a779e4, 0x8fbc48a5, 0xa4911b66,
++ 0xbd8a2a27, 0xf2cbbce0, 0xebd08da1, 0xc0fdde62, 0xd9e6ef23,
++ 0x14bce1bd, 0x0da7d0fc, 0x268a833f, 0x3f91b27e, 0x70d024b9,
++ 0x69cb15f8, 0x42e6463b, 0x5bfd777a, 0xdc656bb5, 0xc57e5af4,
++ 0xee530937, 0xf7483876, 0xb809aeb1, 0xa1129ff0, 0x8a3fcc33,
++ 0x9324fd72},
++ {0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
++ 0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
++ 0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
++ 0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
++ 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
++ 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
++ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
++ 0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
++ 0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
++ 0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
++ 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
++ 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
++ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
++ 0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
++ 0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
++ 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
++ 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
++ 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
++ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
++ 0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
++ 0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
++ 0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
++ 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
++ 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
++ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
++ 0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
++ 0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
++ 0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
++ 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
++ 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
++ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
++ 0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
++ 0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
++ 0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
++ 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
++ 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
++ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
++ 0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
++ 0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
++ 0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
++ 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
++ 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
++ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
++ 0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
++ 0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
++ 0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
++ 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
++ 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
++ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
++ 0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
++ 0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
++ 0x2d02ef8d}};
++
++local const z_word_t FAR crc_braid_big_table[][256] = {
++ {0x00000000, 0x96300777, 0x2c610eee, 0xba510999, 0x19c46d07,
++ 0x8ff46a70, 0x35a563e9, 0xa395649e, 0x3288db0e, 0xa4b8dc79,
++ 0x1ee9d5e0, 0x88d9d297, 0x2b4cb609, 0xbd7cb17e, 0x072db8e7,
++ 0x911dbf90, 0x6410b71d, 0xf220b06a, 0x4871b9f3, 0xde41be84,
++ 0x7dd4da1a, 0xebe4dd6d, 0x51b5d4f4, 0xc785d383, 0x56986c13,
++ 0xc0a86b64, 0x7af962fd, 0xecc9658a, 0x4f5c0114, 0xd96c0663,
++ 0x633d0ffa, 0xf50d088d, 0xc8206e3b, 0x5e10694c, 0xe44160d5,
++ 0x727167a2, 0xd1e4033c, 0x47d4044b, 0xfd850dd2, 0x6bb50aa5,
++ 0xfaa8b535, 0x6c98b242, 0xd6c9bbdb, 0x40f9bcac, 0xe36cd832,
++ 0x755cdf45, 0xcf0dd6dc, 0x593dd1ab, 0xac30d926, 0x3a00de51,
++ 0x8051d7c8, 0x1661d0bf, 0xb5f4b421, 0x23c4b356, 0x9995bacf,
++ 0x0fa5bdb8, 0x9eb80228, 0x0888055f, 0xb2d90cc6, 0x24e90bb1,
++ 0x877c6f2f, 0x114c6858, 0xab1d61c1, 0x3d2d66b6, 0x9041dc76,
++ 0x0671db01, 0xbc20d298, 0x2a10d5ef, 0x8985b171, 0x1fb5b606,
++ 0xa5e4bf9f, 0x33d4b8e8, 0xa2c90778, 0x34f9000f, 0x8ea80996,
++ 0x18980ee1, 0xbb0d6a7f, 0x2d3d6d08, 0x976c6491, 0x015c63e6,
++ 0xf4516b6b, 0x62616c1c, 0xd8306585, 0x4e0062f2, 0xed95066c,
++ 0x7ba5011b, 0xc1f40882, 0x57c40ff5, 0xc6d9b065, 0x50e9b712,
++ 0xeab8be8b, 0x7c88b9fc, 0xdf1ddd62, 0x492dda15, 0xf37cd38c,
++ 0x654cd4fb, 0x5861b24d, 0xce51b53a, 0x7400bca3, 0xe230bbd4,
++ 0x41a5df4a, 0xd795d83d, 0x6dc4d1a4, 0xfbf4d6d3, 0x6ae96943,
++ 0xfcd96e34, 0x468867ad, 0xd0b860da, 0x732d0444, 0xe51d0333,
++ 0x5f4c0aaa, 0xc97c0ddd, 0x3c710550, 0xaa410227, 0x10100bbe,
++ 0x86200cc9, 0x25b56857, 0xb3856f20, 0x09d466b9, 0x9fe461ce,
++ 0x0ef9de5e, 0x98c9d929, 0x2298d0b0, 0xb4a8d7c7, 0x173db359,
++ 0x810db42e, 0x3b5cbdb7, 0xad6cbac0, 0x2083b8ed, 0xb6b3bf9a,
++ 0x0ce2b603, 0x9ad2b174, 0x3947d5ea, 0xaf77d29d, 0x1526db04,
++ 0x8316dc73, 0x120b63e3, 0x843b6494, 0x3e6a6d0d, 0xa85a6a7a,
++ 0x0bcf0ee4, 0x9dff0993, 0x27ae000a, 0xb19e077d, 0x44930ff0,
++ 0xd2a30887, 0x68f2011e, 0xfec20669, 0x5d5762f7, 0xcb676580,
++ 0x71366c19, 0xe7066b6e, 0x761bd4fe, 0xe02bd389, 0x5a7ada10,
++ 0xcc4add67, 0x6fdfb9f9, 0xf9efbe8e, 0x43beb717, 0xd58eb060,
++ 0xe8a3d6d6, 0x7e93d1a1, 0xc4c2d838, 0x52f2df4f, 0xf167bbd1,
++ 0x6757bca6, 0xdd06b53f, 0x4b36b248, 0xda2b0dd8, 0x4c1b0aaf,
++ 0xf64a0336, 0x607a0441, 0xc3ef60df, 0x55df67a8, 0xef8e6e31,
++ 0x79be6946, 0x8cb361cb, 0x1a8366bc, 0xa0d26f25, 0x36e26852,
++ 0x95770ccc, 0x03470bbb, 0xb9160222, 0x2f260555, 0xbe3bbac5,
++ 0x280bbdb2, 0x925ab42b, 0x046ab35c, 0xa7ffd7c2, 0x31cfd0b5,
++ 0x8b9ed92c, 0x1daede5b, 0xb0c2649b, 0x26f263ec, 0x9ca36a75,
++ 0x0a936d02, 0xa906099c, 0x3f360eeb, 0x85670772, 0x13570005,
++ 0x824abf95, 0x147ab8e2, 0xae2bb17b, 0x381bb60c, 0x9b8ed292,
++ 0x0dbed5e5, 0xb7efdc7c, 0x21dfdb0b, 0xd4d2d386, 0x42e2d4f1,
++ 0xf8b3dd68, 0x6e83da1f, 0xcd16be81, 0x5b26b9f6, 0xe177b06f,
++ 0x7747b718, 0xe65a0888, 0x706a0fff, 0xca3b0666, 0x5c0b0111,
++ 0xff9e658f, 0x69ae62f8, 0xd3ff6b61, 0x45cf6c16, 0x78e20aa0,
++ 0xeed20dd7, 0x5483044e, 0xc2b30339, 0x612667a7, 0xf71660d0,
++ 0x4d476949, 0xdb776e3e, 0x4a6ad1ae, 0xdc5ad6d9, 0x660bdf40,
++ 0xf03bd837, 0x53aebca9, 0xc59ebbde, 0x7fcfb247, 0xe9ffb530,
++ 0x1cf2bdbd, 0x8ac2baca, 0x3093b353, 0xa6a3b424, 0x0536d0ba,
++ 0x9306d7cd, 0x2957de54, 0xbf67d923, 0x2e7a66b3, 0xb84a61c4,
++ 0x021b685d, 0x942b6f2a, 0x37be0bb4, 0xa18e0cc3, 0x1bdf055a,
++ 0x8def022d},
++ {0x00000000, 0x41311b19, 0x82623632, 0xc3532d2b, 0x04c56c64,
++ 0x45f4777d, 0x86a75a56, 0xc796414f, 0x088ad9c8, 0x49bbc2d1,
++ 0x8ae8effa, 0xcbd9f4e3, 0x0c4fb5ac, 0x4d7eaeb5, 0x8e2d839e,
++ 0xcf1c9887, 0x5112c24a, 0x1023d953, 0xd370f478, 0x9241ef61,
++ 0x55d7ae2e, 0x14e6b537, 0xd7b5981c, 0x96848305, 0x59981b82,
++ 0x18a9009b, 0xdbfa2db0, 0x9acb36a9, 0x5d5d77e6, 0x1c6c6cff,
++ 0xdf3f41d4, 0x9e0e5acd, 0xa2248495, 0xe3159f8c, 0x2046b2a7,
++ 0x6177a9be, 0xa6e1e8f1, 0xe7d0f3e8, 0x2483dec3, 0x65b2c5da,
++ 0xaaae5d5d, 0xeb9f4644, 0x28cc6b6f, 0x69fd7076, 0xae6b3139,
++ 0xef5a2a20, 0x2c09070b, 0x6d381c12, 0xf33646df, 0xb2075dc6,
++ 0x715470ed, 0x30656bf4, 0xf7f32abb, 0xb6c231a2, 0x75911c89,
++ 0x34a00790, 0xfbbc9f17, 0xba8d840e, 0x79dea925, 0x38efb23c,
++ 0xff79f373, 0xbe48e86a, 0x7d1bc541, 0x3c2ade58, 0x054f79f0,
++ 0x447e62e9, 0x872d4fc2, 0xc61c54db, 0x018a1594, 0x40bb0e8d,
++ 0x83e823a6, 0xc2d938bf, 0x0dc5a038, 0x4cf4bb21, 0x8fa7960a,
++ 0xce968d13, 0x0900cc5c, 0x4831d745, 0x8b62fa6e, 0xca53e177,
++ 0x545dbbba, 0x156ca0a3, 0xd63f8d88, 0x970e9691, 0x5098d7de,
++ 0x11a9ccc7, 0xd2fae1ec, 0x93cbfaf5, 0x5cd76272, 0x1de6796b,
++ 0xdeb55440, 0x9f844f59, 0x58120e16, 0x1923150f, 0xda703824,
++ 0x9b41233d, 0xa76bfd65, 0xe65ae67c, 0x2509cb57, 0x6438d04e,
++ 0xa3ae9101, 0xe29f8a18, 0x21cca733, 0x60fdbc2a, 0xafe124ad,
++ 0xeed03fb4, 0x2d83129f, 0x6cb20986, 0xab2448c9, 0xea1553d0,
++ 0x29467efb, 0x687765e2, 0xf6793f2f, 0xb7482436, 0x741b091d,
++ 0x352a1204, 0xf2bc534b, 0xb38d4852, 0x70de6579, 0x31ef7e60,
++ 0xfef3e6e7, 0xbfc2fdfe, 0x7c91d0d5, 0x3da0cbcc, 0xfa368a83,
++ 0xbb07919a, 0x7854bcb1, 0x3965a7a8, 0x4b98833b, 0x0aa99822,
++ 0xc9fab509, 0x88cbae10, 0x4f5def5f, 0x0e6cf446, 0xcd3fd96d,
++ 0x8c0ec274, 0x43125af3, 0x022341ea, 0xc1706cc1, 0x804177d8,
++ 0x47d73697, 0x06e62d8e, 0xc5b500a5, 0x84841bbc, 0x1a8a4171,
++ 0x5bbb5a68, 0x98e87743, 0xd9d96c5a, 0x1e4f2d15, 0x5f7e360c,
++ 0x9c2d1b27, 0xdd1c003e, 0x120098b9, 0x533183a0, 0x9062ae8b,
++ 0xd153b592, 0x16c5f4dd, 0x57f4efc4, 0x94a7c2ef, 0xd596d9f6,
++ 0xe9bc07ae, 0xa88d1cb7, 0x6bde319c, 0x2aef2a85, 0xed796bca,
++ 0xac4870d3, 0x6f1b5df8, 0x2e2a46e1, 0xe136de66, 0xa007c57f,
++ 0x6354e854, 0x2265f34d, 0xe5f3b202, 0xa4c2a91b, 0x67918430,
++ 0x26a09f29, 0xb8aec5e4, 0xf99fdefd, 0x3accf3d6, 0x7bfde8cf,
++ 0xbc6ba980, 0xfd5ab299, 0x3e099fb2, 0x7f3884ab, 0xb0241c2c,
++ 0xf1150735, 0x32462a1e, 0x73773107, 0xb4e17048, 0xf5d06b51,
++ 0x3683467a, 0x77b25d63, 0x4ed7facb, 0x0fe6e1d2, 0xccb5ccf9,
++ 0x8d84d7e0, 0x4a1296af, 0x0b238db6, 0xc870a09d, 0x8941bb84,
++ 0x465d2303, 0x076c381a, 0xc43f1531, 0x850e0e28, 0x42984f67,
++ 0x03a9547e, 0xc0fa7955, 0x81cb624c, 0x1fc53881, 0x5ef42398,
++ 0x9da70eb3, 0xdc9615aa, 0x1b0054e5, 0x5a314ffc, 0x996262d7,
++ 0xd85379ce, 0x174fe149, 0x567efa50, 0x952dd77b, 0xd41ccc62,
++ 0x138a8d2d, 0x52bb9634, 0x91e8bb1f, 0xd0d9a006, 0xecf37e5e,
++ 0xadc26547, 0x6e91486c, 0x2fa05375, 0xe836123a, 0xa9070923,
++ 0x6a542408, 0x2b653f11, 0xe479a796, 0xa548bc8f, 0x661b91a4,
++ 0x272a8abd, 0xe0bccbf2, 0xa18dd0eb, 0x62defdc0, 0x23efe6d9,
++ 0xbde1bc14, 0xfcd0a70d, 0x3f838a26, 0x7eb2913f, 0xb924d070,
++ 0xf815cb69, 0x3b46e642, 0x7a77fd5b, 0xb56b65dc, 0xf45a7ec5,
++ 0x370953ee, 0x763848f7, 0xb1ae09b8, 0xf09f12a1, 0x33cc3f8a,
++ 0x72fd2493},
++ {0x00000000, 0x376ac201, 0x6ed48403, 0x59be4602, 0xdca80907,
++ 0xebc2cb06, 0xb27c8d04, 0x85164f05, 0xb851130e, 0x8f3bd10f,
++ 0xd685970d, 0xe1ef550c, 0x64f91a09, 0x5393d808, 0x0a2d9e0a,
++ 0x3d475c0b, 0x70a3261c, 0x47c9e41d, 0x1e77a21f, 0x291d601e,
++ 0xac0b2f1b, 0x9b61ed1a, 0xc2dfab18, 0xf5b56919, 0xc8f23512,
++ 0xff98f713, 0xa626b111, 0x914c7310, 0x145a3c15, 0x2330fe14,
++ 0x7a8eb816, 0x4de47a17, 0xe0464d38, 0xd72c8f39, 0x8e92c93b,
++ 0xb9f80b3a, 0x3cee443f, 0x0b84863e, 0x523ac03c, 0x6550023d,
++ 0x58175e36, 0x6f7d9c37, 0x36c3da35, 0x01a91834, 0x84bf5731,
++ 0xb3d59530, 0xea6bd332, 0xdd011133, 0x90e56b24, 0xa78fa925,
++ 0xfe31ef27, 0xc95b2d26, 0x4c4d6223, 0x7b27a022, 0x2299e620,
++ 0x15f32421, 0x28b4782a, 0x1fdeba2b, 0x4660fc29, 0x710a3e28,
++ 0xf41c712d, 0xc376b32c, 0x9ac8f52e, 0xada2372f, 0xc08d9a70,
++ 0xf7e75871, 0xae591e73, 0x9933dc72, 0x1c259377, 0x2b4f5176,
++ 0x72f11774, 0x459bd575, 0x78dc897e, 0x4fb64b7f, 0x16080d7d,
++ 0x2162cf7c, 0xa4748079, 0x931e4278, 0xcaa0047a, 0xfdcac67b,
++ 0xb02ebc6c, 0x87447e6d, 0xdefa386f, 0xe990fa6e, 0x6c86b56b,
++ 0x5bec776a, 0x02523168, 0x3538f369, 0x087faf62, 0x3f156d63,
++ 0x66ab2b61, 0x51c1e960, 0xd4d7a665, 0xe3bd6464, 0xba032266,
++ 0x8d69e067, 0x20cbd748, 0x17a11549, 0x4e1f534b, 0x7975914a,
++ 0xfc63de4f, 0xcb091c4e, 0x92b75a4c, 0xa5dd984d, 0x989ac446,
++ 0xaff00647, 0xf64e4045, 0xc1248244, 0x4432cd41, 0x73580f40,
++ 0x2ae64942, 0x1d8c8b43, 0x5068f154, 0x67023355, 0x3ebc7557,
++ 0x09d6b756, 0x8cc0f853, 0xbbaa3a52, 0xe2147c50, 0xd57ebe51,
++ 0xe839e25a, 0xdf53205b, 0x86ed6659, 0xb187a458, 0x3491eb5d,
++ 0x03fb295c, 0x5a456f5e, 0x6d2fad5f, 0x801b35e1, 0xb771f7e0,
++ 0xeecfb1e2, 0xd9a573e3, 0x5cb33ce6, 0x6bd9fee7, 0x3267b8e5,
++ 0x050d7ae4, 0x384a26ef, 0x0f20e4ee, 0x569ea2ec, 0x61f460ed,
++ 0xe4e22fe8, 0xd388ede9, 0x8a36abeb, 0xbd5c69ea, 0xf0b813fd,
++ 0xc7d2d1fc, 0x9e6c97fe, 0xa90655ff, 0x2c101afa, 0x1b7ad8fb,
++ 0x42c49ef9, 0x75ae5cf8, 0x48e900f3, 0x7f83c2f2, 0x263d84f0,
++ 0x115746f1, 0x944109f4, 0xa32bcbf5, 0xfa958df7, 0xcdff4ff6,
++ 0x605d78d9, 0x5737bad8, 0x0e89fcda, 0x39e33edb, 0xbcf571de,
++ 0x8b9fb3df, 0xd221f5dd, 0xe54b37dc, 0xd80c6bd7, 0xef66a9d6,
++ 0xb6d8efd4, 0x81b22dd5, 0x04a462d0, 0x33cea0d1, 0x6a70e6d3,
++ 0x5d1a24d2, 0x10fe5ec5, 0x27949cc4, 0x7e2adac6, 0x494018c7,
++ 0xcc5657c2, 0xfb3c95c3, 0xa282d3c1, 0x95e811c0, 0xa8af4dcb,
++ 0x9fc58fca, 0xc67bc9c8, 0xf1110bc9, 0x740744cc, 0x436d86cd,
++ 0x1ad3c0cf, 0x2db902ce, 0x4096af91, 0x77fc6d90, 0x2e422b92,
++ 0x1928e993, 0x9c3ea696, 0xab546497, 0xf2ea2295, 0xc580e094,
++ 0xf8c7bc9f, 0xcfad7e9e, 0x9613389c, 0xa179fa9d, 0x246fb598,
++ 0x13057799, 0x4abb319b, 0x7dd1f39a, 0x3035898d, 0x075f4b8c,
++ 0x5ee10d8e, 0x698bcf8f, 0xec9d808a, 0xdbf7428b, 0x82490489,
++ 0xb523c688, 0x88649a83, 0xbf0e5882, 0xe6b01e80, 0xd1dadc81,
++ 0x54cc9384, 0x63a65185, 0x3a181787, 0x0d72d586, 0xa0d0e2a9,
++ 0x97ba20a8, 0xce0466aa, 0xf96ea4ab, 0x7c78ebae, 0x4b1229af,
++ 0x12ac6fad, 0x25c6adac, 0x1881f1a7, 0x2feb33a6, 0x765575a4,
++ 0x413fb7a5, 0xc429f8a0, 0xf3433aa1, 0xaafd7ca3, 0x9d97bea2,
++ 0xd073c4b5, 0xe71906b4, 0xbea740b6, 0x89cd82b7, 0x0cdbcdb2,
++ 0x3bb10fb3, 0x620f49b1, 0x55658bb0, 0x6822d7bb, 0x5f4815ba,
++ 0x06f653b8, 0x319c91b9, 0xb48adebc, 0x83e01cbd, 0xda5e5abf,
++ 0xed3498be},
++ {0x00000000, 0x6567bcb8, 0x8bc809aa, 0xeeafb512, 0x5797628f,
++ 0x32f0de37, 0xdc5f6b25, 0xb938d79d, 0xef28b4c5, 0x8a4f087d,
++ 0x64e0bd6f, 0x018701d7, 0xb8bfd64a, 0xddd86af2, 0x3377dfe0,
++ 0x56106358, 0x9f571950, 0xfa30a5e8, 0x149f10fa, 0x71f8ac42,
++ 0xc8c07bdf, 0xada7c767, 0x43087275, 0x266fcecd, 0x707fad95,
++ 0x1518112d, 0xfbb7a43f, 0x9ed01887, 0x27e8cf1a, 0x428f73a2,
++ 0xac20c6b0, 0xc9477a08, 0x3eaf32a0, 0x5bc88e18, 0xb5673b0a,
++ 0xd00087b2, 0x6938502f, 0x0c5fec97, 0xe2f05985, 0x8797e53d,
++ 0xd1878665, 0xb4e03add, 0x5a4f8fcf, 0x3f283377, 0x8610e4ea,
++ 0xe3775852, 0x0dd8ed40, 0x68bf51f8, 0xa1f82bf0, 0xc49f9748,
++ 0x2a30225a, 0x4f579ee2, 0xf66f497f, 0x9308f5c7, 0x7da740d5,
++ 0x18c0fc6d, 0x4ed09f35, 0x2bb7238d, 0xc518969f, 0xa07f2a27,
++ 0x1947fdba, 0x7c204102, 0x928ff410, 0xf7e848a8, 0x3d58149b,
++ 0x583fa823, 0xb6901d31, 0xd3f7a189, 0x6acf7614, 0x0fa8caac,
++ 0xe1077fbe, 0x8460c306, 0xd270a05e, 0xb7171ce6, 0x59b8a9f4,
++ 0x3cdf154c, 0x85e7c2d1, 0xe0807e69, 0x0e2fcb7b, 0x6b4877c3,
++ 0xa20f0dcb, 0xc768b173, 0x29c70461, 0x4ca0b8d9, 0xf5986f44,
++ 0x90ffd3fc, 0x7e5066ee, 0x1b37da56, 0x4d27b90e, 0x284005b6,
++ 0xc6efb0a4, 0xa3880c1c, 0x1ab0db81, 0x7fd76739, 0x9178d22b,
++ 0xf41f6e93, 0x03f7263b, 0x66909a83, 0x883f2f91, 0xed589329,
++ 0x546044b4, 0x3107f80c, 0xdfa84d1e, 0xbacff1a6, 0xecdf92fe,
++ 0x89b82e46, 0x67179b54, 0x027027ec, 0xbb48f071, 0xde2f4cc9,
++ 0x3080f9db, 0x55e74563, 0x9ca03f6b, 0xf9c783d3, 0x176836c1,
++ 0x720f8a79, 0xcb375de4, 0xae50e15c, 0x40ff544e, 0x2598e8f6,
++ 0x73888bae, 0x16ef3716, 0xf8408204, 0x9d273ebc, 0x241fe921,
++ 0x41785599, 0xafd7e08b, 0xcab05c33, 0x3bb659ed, 0x5ed1e555,
++ 0xb07e5047, 0xd519ecff, 0x6c213b62, 0x094687da, 0xe7e932c8,
++ 0x828e8e70, 0xd49eed28, 0xb1f95190, 0x5f56e482, 0x3a31583a,
++ 0x83098fa7, 0xe66e331f, 0x08c1860d, 0x6da63ab5, 0xa4e140bd,
++ 0xc186fc05, 0x2f294917, 0x4a4ef5af, 0xf3762232, 0x96119e8a,
++ 0x78be2b98, 0x1dd99720, 0x4bc9f478, 0x2eae48c0, 0xc001fdd2,
++ 0xa566416a, 0x1c5e96f7, 0x79392a4f, 0x97969f5d, 0xf2f123e5,
++ 0x05196b4d, 0x607ed7f5, 0x8ed162e7, 0xebb6de5f, 0x528e09c2,
++ 0x37e9b57a, 0xd9460068, 0xbc21bcd0, 0xea31df88, 0x8f566330,
++ 0x61f9d622, 0x049e6a9a, 0xbda6bd07, 0xd8c101bf, 0x366eb4ad,
++ 0x53090815, 0x9a4e721d, 0xff29cea5, 0x11867bb7, 0x74e1c70f,
++ 0xcdd91092, 0xa8beac2a, 0x46111938, 0x2376a580, 0x7566c6d8,
++ 0x10017a60, 0xfeaecf72, 0x9bc973ca, 0x22f1a457, 0x479618ef,
++ 0xa939adfd, 0xcc5e1145, 0x06ee4d76, 0x6389f1ce, 0x8d2644dc,
++ 0xe841f864, 0x51792ff9, 0x341e9341, 0xdab12653, 0xbfd69aeb,
++ 0xe9c6f9b3, 0x8ca1450b, 0x620ef019, 0x07694ca1, 0xbe519b3c,
++ 0xdb362784, 0x35999296, 0x50fe2e2e, 0x99b95426, 0xfcdee89e,
++ 0x12715d8c, 0x7716e134, 0xce2e36a9, 0xab498a11, 0x45e63f03,
++ 0x208183bb, 0x7691e0e3, 0x13f65c5b, 0xfd59e949, 0x983e55f1,
++ 0x2106826c, 0x44613ed4, 0xaace8bc6, 0xcfa9377e, 0x38417fd6,
++ 0x5d26c36e, 0xb389767c, 0xd6eecac4, 0x6fd61d59, 0x0ab1a1e1,
++ 0xe41e14f3, 0x8179a84b, 0xd769cb13, 0xb20e77ab, 0x5ca1c2b9,
++ 0x39c67e01, 0x80fea99c, 0xe5991524, 0x0b36a036, 0x6e511c8e,
++ 0xa7166686, 0xc271da3e, 0x2cde6f2c, 0x49b9d394, 0xf0810409,
++ 0x95e6b8b1, 0x7b490da3, 0x1e2eb11b, 0x483ed243, 0x2d596efb,
++ 0xc3f6dbe9, 0xa6916751, 0x1fa9b0cc, 0x7ace0c74, 0x9461b966,
++ 0xf10605de}};
++
++#endif
++
++#endif
++
++#if N == 2
++
++#if W == 8
++
++local const z_crc_t FAR crc_braid_table[][256] = {
++ {0x00000000, 0xae689191, 0x87a02563, 0x29c8b4f2, 0xd4314c87,
++ 0x7a59dd16, 0x539169e4, 0xfdf9f875, 0x73139f4f, 0xdd7b0ede,
++ 0xf4b3ba2c, 0x5adb2bbd, 0xa722d3c8, 0x094a4259, 0x2082f6ab,
++ 0x8eea673a, 0xe6273e9e, 0x484faf0f, 0x61871bfd, 0xcfef8a6c,
++ 0x32167219, 0x9c7ee388, 0xb5b6577a, 0x1bdec6eb, 0x9534a1d1,
++ 0x3b5c3040, 0x129484b2, 0xbcfc1523, 0x4105ed56, 0xef6d7cc7,
++ 0xc6a5c835, 0x68cd59a4, 0x173f7b7d, 0xb957eaec, 0x909f5e1e,
++ 0x3ef7cf8f, 0xc30e37fa, 0x6d66a66b, 0x44ae1299, 0xeac68308,
++ 0x642ce432, 0xca4475a3, 0xe38cc151, 0x4de450c0, 0xb01da8b5,
++ 0x1e753924, 0x37bd8dd6, 0x99d51c47, 0xf11845e3, 0x5f70d472,
++ 0x76b86080, 0xd8d0f111, 0x25290964, 0x8b4198f5, 0xa2892c07,
++ 0x0ce1bd96, 0x820bdaac, 0x2c634b3d, 0x05abffcf, 0xabc36e5e,
++ 0x563a962b, 0xf85207ba, 0xd19ab348, 0x7ff222d9, 0x2e7ef6fa,
++ 0x8016676b, 0xa9ded399, 0x07b64208, 0xfa4fba7d, 0x54272bec,
++ 0x7def9f1e, 0xd3870e8f, 0x5d6d69b5, 0xf305f824, 0xdacd4cd6,
++ 0x74a5dd47, 0x895c2532, 0x2734b4a3, 0x0efc0051, 0xa09491c0,
++ 0xc859c864, 0x663159f5, 0x4ff9ed07, 0xe1917c96, 0x1c6884e3,
++ 0xb2001572, 0x9bc8a180, 0x35a03011, 0xbb4a572b, 0x1522c6ba,
++ 0x3cea7248, 0x9282e3d9, 0x6f7b1bac, 0xc1138a3d, 0xe8db3ecf,
++ 0x46b3af5e, 0x39418d87, 0x97291c16, 0xbee1a8e4, 0x10893975,
++ 0xed70c100, 0x43185091, 0x6ad0e463, 0xc4b875f2, 0x4a5212c8,
++ 0xe43a8359, 0xcdf237ab, 0x639aa63a, 0x9e635e4f, 0x300bcfde,
++ 0x19c37b2c, 0xb7abeabd, 0xdf66b319, 0x710e2288, 0x58c6967a,
++ 0xf6ae07eb, 0x0b57ff9e, 0xa53f6e0f, 0x8cf7dafd, 0x229f4b6c,
++ 0xac752c56, 0x021dbdc7, 0x2bd50935, 0x85bd98a4, 0x784460d1,
++ 0xd62cf140, 0xffe445b2, 0x518cd423, 0x5cfdedf4, 0xf2957c65,
++ 0xdb5dc897, 0x75355906, 0x88cca173, 0x26a430e2, 0x0f6c8410,
++ 0xa1041581, 0x2fee72bb, 0x8186e32a, 0xa84e57d8, 0x0626c649,
++ 0xfbdf3e3c, 0x55b7afad, 0x7c7f1b5f, 0xd2178ace, 0xbadad36a,
++ 0x14b242fb, 0x3d7af609, 0x93126798, 0x6eeb9fed, 0xc0830e7c,
++ 0xe94bba8e, 0x47232b1f, 0xc9c94c25, 0x67a1ddb4, 0x4e696946,
++ 0xe001f8d7, 0x1df800a2, 0xb3909133, 0x9a5825c1, 0x3430b450,
++ 0x4bc29689, 0xe5aa0718, 0xcc62b3ea, 0x620a227b, 0x9ff3da0e,
++ 0x319b4b9f, 0x1853ff6d, 0xb63b6efc, 0x38d109c6, 0x96b99857,
++ 0xbf712ca5, 0x1119bd34, 0xece04541, 0x4288d4d0, 0x6b406022,
++ 0xc528f1b3, 0xade5a817, 0x038d3986, 0x2a458d74, 0x842d1ce5,
++ 0x79d4e490, 0xd7bc7501, 0xfe74c1f3, 0x501c5062, 0xdef63758,
++ 0x709ea6c9, 0x5956123b, 0xf73e83aa, 0x0ac77bdf, 0xa4afea4e,
++ 0x8d675ebc, 0x230fcf2d, 0x72831b0e, 0xdceb8a9f, 0xf5233e6d,
++ 0x5b4baffc, 0xa6b25789, 0x08dac618, 0x211272ea, 0x8f7ae37b,
++ 0x01908441, 0xaff815d0, 0x8630a122, 0x285830b3, 0xd5a1c8c6,
++ 0x7bc95957, 0x5201eda5, 0xfc697c34, 0x94a42590, 0x3accb401,
++ 0x130400f3, 0xbd6c9162, 0x40956917, 0xeefdf886, 0xc7354c74,
++ 0x695ddde5, 0xe7b7badf, 0x49df2b4e, 0x60179fbc, 0xce7f0e2d,
++ 0x3386f658, 0x9dee67c9, 0xb426d33b, 0x1a4e42aa, 0x65bc6073,
++ 0xcbd4f1e2, 0xe21c4510, 0x4c74d481, 0xb18d2cf4, 0x1fe5bd65,
++ 0x362d0997, 0x98459806, 0x16afff3c, 0xb8c76ead, 0x910fda5f,
++ 0x3f674bce, 0xc29eb3bb, 0x6cf6222a, 0x453e96d8, 0xeb560749,
++ 0x839b5eed, 0x2df3cf7c, 0x043b7b8e, 0xaa53ea1f, 0x57aa126a,
++ 0xf9c283fb, 0xd00a3709, 0x7e62a698, 0xf088c1a2, 0x5ee05033,
++ 0x7728e4c1, 0xd9407550, 0x24b98d25, 0x8ad11cb4, 0xa319a846,
++ 0x0d7139d7},
++ {0x00000000, 0xb9fbdbe8, 0xa886b191, 0x117d6a79, 0x8a7c6563,
++ 0x3387be8b, 0x22fad4f2, 0x9b010f1a, 0xcf89cc87, 0x7672176f,
++ 0x670f7d16, 0xdef4a6fe, 0x45f5a9e4, 0xfc0e720c, 0xed731875,
++ 0x5488c39d, 0x44629f4f, 0xfd9944a7, 0xece42ede, 0x551ff536,
++ 0xce1efa2c, 0x77e521c4, 0x66984bbd, 0xdf639055, 0x8beb53c8,
++ 0x32108820, 0x236de259, 0x9a9639b1, 0x019736ab, 0xb86ced43,
++ 0xa911873a, 0x10ea5cd2, 0x88c53e9e, 0x313ee576, 0x20438f0f,
++ 0x99b854e7, 0x02b95bfd, 0xbb428015, 0xaa3fea6c, 0x13c43184,
++ 0x474cf219, 0xfeb729f1, 0xefca4388, 0x56319860, 0xcd30977a,
++ 0x74cb4c92, 0x65b626eb, 0xdc4dfd03, 0xcca7a1d1, 0x755c7a39,
++ 0x64211040, 0xdddacba8, 0x46dbc4b2, 0xff201f5a, 0xee5d7523,
++ 0x57a6aecb, 0x032e6d56, 0xbad5b6be, 0xaba8dcc7, 0x1253072f,
++ 0x89520835, 0x30a9d3dd, 0x21d4b9a4, 0x982f624c, 0xcafb7b7d,
++ 0x7300a095, 0x627dcaec, 0xdb861104, 0x40871e1e, 0xf97cc5f6,
++ 0xe801af8f, 0x51fa7467, 0x0572b7fa, 0xbc896c12, 0xadf4066b,
++ 0x140fdd83, 0x8f0ed299, 0x36f50971, 0x27886308, 0x9e73b8e0,
++ 0x8e99e432, 0x37623fda, 0x261f55a3, 0x9fe48e4b, 0x04e58151,
++ 0xbd1e5ab9, 0xac6330c0, 0x1598eb28, 0x411028b5, 0xf8ebf35d,
++ 0xe9969924, 0x506d42cc, 0xcb6c4dd6, 0x7297963e, 0x63eafc47,
++ 0xda1127af, 0x423e45e3, 0xfbc59e0b, 0xeab8f472, 0x53432f9a,
++ 0xc8422080, 0x71b9fb68, 0x60c49111, 0xd93f4af9, 0x8db78964,
++ 0x344c528c, 0x253138f5, 0x9ccae31d, 0x07cbec07, 0xbe3037ef,
++ 0xaf4d5d96, 0x16b6867e, 0x065cdaac, 0xbfa70144, 0xaeda6b3d,
++ 0x1721b0d5, 0x8c20bfcf, 0x35db6427, 0x24a60e5e, 0x9d5dd5b6,
++ 0xc9d5162b, 0x702ecdc3, 0x6153a7ba, 0xd8a87c52, 0x43a97348,
++ 0xfa52a8a0, 0xeb2fc2d9, 0x52d41931, 0x4e87f0bb, 0xf77c2b53,
++ 0xe601412a, 0x5ffa9ac2, 0xc4fb95d8, 0x7d004e30, 0x6c7d2449,
++ 0xd586ffa1, 0x810e3c3c, 0x38f5e7d4, 0x29888dad, 0x90735645,
++ 0x0b72595f, 0xb28982b7, 0xa3f4e8ce, 0x1a0f3326, 0x0ae56ff4,
++ 0xb31eb41c, 0xa263de65, 0x1b98058d, 0x80990a97, 0x3962d17f,
++ 0x281fbb06, 0x91e460ee, 0xc56ca373, 0x7c97789b, 0x6dea12e2,
++ 0xd411c90a, 0x4f10c610, 0xf6eb1df8, 0xe7967781, 0x5e6dac69,
++ 0xc642ce25, 0x7fb915cd, 0x6ec47fb4, 0xd73fa45c, 0x4c3eab46,
++ 0xf5c570ae, 0xe4b81ad7, 0x5d43c13f, 0x09cb02a2, 0xb030d94a,
++ 0xa14db333, 0x18b668db, 0x83b767c1, 0x3a4cbc29, 0x2b31d650,
++ 0x92ca0db8, 0x8220516a, 0x3bdb8a82, 0x2aa6e0fb, 0x935d3b13,
++ 0x085c3409, 0xb1a7efe1, 0xa0da8598, 0x19215e70, 0x4da99ded,
++ 0xf4524605, 0xe52f2c7c, 0x5cd4f794, 0xc7d5f88e, 0x7e2e2366,
++ 0x6f53491f, 0xd6a892f7, 0x847c8bc6, 0x3d87502e, 0x2cfa3a57,
++ 0x9501e1bf, 0x0e00eea5, 0xb7fb354d, 0xa6865f34, 0x1f7d84dc,
++ 0x4bf54741, 0xf20e9ca9, 0xe373f6d0, 0x5a882d38, 0xc1892222,
++ 0x7872f9ca, 0x690f93b3, 0xd0f4485b, 0xc01e1489, 0x79e5cf61,
++ 0x6898a518, 0xd1637ef0, 0x4a6271ea, 0xf399aa02, 0xe2e4c07b,
++ 0x5b1f1b93, 0x0f97d80e, 0xb66c03e6, 0xa711699f, 0x1eeab277,
++ 0x85ebbd6d, 0x3c106685, 0x2d6d0cfc, 0x9496d714, 0x0cb9b558,
++ 0xb5426eb0, 0xa43f04c9, 0x1dc4df21, 0x86c5d03b, 0x3f3e0bd3,
++ 0x2e4361aa, 0x97b8ba42, 0xc33079df, 0x7acba237, 0x6bb6c84e,
++ 0xd24d13a6, 0x494c1cbc, 0xf0b7c754, 0xe1caad2d, 0x583176c5,
++ 0x48db2a17, 0xf120f1ff, 0xe05d9b86, 0x59a6406e, 0xc2a74f74,
++ 0x7b5c949c, 0x6a21fee5, 0xd3da250d, 0x8752e690, 0x3ea93d78,
++ 0x2fd45701, 0x962f8ce9, 0x0d2e83f3, 0xb4d5581b, 0xa5a83262,
++ 0x1c53e98a},
++ {0x00000000, 0x9d0fe176, 0xe16ec4ad, 0x7c6125db, 0x19ac8f1b,
++ 0x84a36e6d, 0xf8c24bb6, 0x65cdaac0, 0x33591e36, 0xae56ff40,
++ 0xd237da9b, 0x4f383bed, 0x2af5912d, 0xb7fa705b, 0xcb9b5580,
++ 0x5694b4f6, 0x66b23c6c, 0xfbbddd1a, 0x87dcf8c1, 0x1ad319b7,
++ 0x7f1eb377, 0xe2115201, 0x9e7077da, 0x037f96ac, 0x55eb225a,
++ 0xc8e4c32c, 0xb485e6f7, 0x298a0781, 0x4c47ad41, 0xd1484c37,
++ 0xad2969ec, 0x3026889a, 0xcd6478d8, 0x506b99ae, 0x2c0abc75,
++ 0xb1055d03, 0xd4c8f7c3, 0x49c716b5, 0x35a6336e, 0xa8a9d218,
++ 0xfe3d66ee, 0x63328798, 0x1f53a243, 0x825c4335, 0xe791e9f5,
++ 0x7a9e0883, 0x06ff2d58, 0x9bf0cc2e, 0xabd644b4, 0x36d9a5c2,
++ 0x4ab88019, 0xd7b7616f, 0xb27acbaf, 0x2f752ad9, 0x53140f02,
++ 0xce1bee74, 0x988f5a82, 0x0580bbf4, 0x79e19e2f, 0xe4ee7f59,
++ 0x8123d599, 0x1c2c34ef, 0x604d1134, 0xfd42f042, 0x41b9f7f1,
++ 0xdcb61687, 0xa0d7335c, 0x3dd8d22a, 0x581578ea, 0xc51a999c,
++ 0xb97bbc47, 0x24745d31, 0x72e0e9c7, 0xefef08b1, 0x938e2d6a,
++ 0x0e81cc1c, 0x6b4c66dc, 0xf64387aa, 0x8a22a271, 0x172d4307,
++ 0x270bcb9d, 0xba042aeb, 0xc6650f30, 0x5b6aee46, 0x3ea74486,
++ 0xa3a8a5f0, 0xdfc9802b, 0x42c6615d, 0x1452d5ab, 0x895d34dd,
++ 0xf53c1106, 0x6833f070, 0x0dfe5ab0, 0x90f1bbc6, 0xec909e1d,
++ 0x719f7f6b, 0x8cdd8f29, 0x11d26e5f, 0x6db34b84, 0xf0bcaaf2,
++ 0x95710032, 0x087ee144, 0x741fc49f, 0xe91025e9, 0xbf84911f,
++ 0x228b7069, 0x5eea55b2, 0xc3e5b4c4, 0xa6281e04, 0x3b27ff72,
++ 0x4746daa9, 0xda493bdf, 0xea6fb345, 0x77605233, 0x0b0177e8,
++ 0x960e969e, 0xf3c33c5e, 0x6eccdd28, 0x12adf8f3, 0x8fa21985,
++ 0xd936ad73, 0x44394c05, 0x385869de, 0xa55788a8, 0xc09a2268,
++ 0x5d95c31e, 0x21f4e6c5, 0xbcfb07b3, 0x8373efe2, 0x1e7c0e94,
++ 0x621d2b4f, 0xff12ca39, 0x9adf60f9, 0x07d0818f, 0x7bb1a454,
++ 0xe6be4522, 0xb02af1d4, 0x2d2510a2, 0x51443579, 0xcc4bd40f,
++ 0xa9867ecf, 0x34899fb9, 0x48e8ba62, 0xd5e75b14, 0xe5c1d38e,
++ 0x78ce32f8, 0x04af1723, 0x99a0f655, 0xfc6d5c95, 0x6162bde3,
++ 0x1d039838, 0x800c794e, 0xd698cdb8, 0x4b972cce, 0x37f60915,
++ 0xaaf9e863, 0xcf3442a3, 0x523ba3d5, 0x2e5a860e, 0xb3556778,
++ 0x4e17973a, 0xd318764c, 0xaf795397, 0x3276b2e1, 0x57bb1821,
++ 0xcab4f957, 0xb6d5dc8c, 0x2bda3dfa, 0x7d4e890c, 0xe041687a,
++ 0x9c204da1, 0x012facd7, 0x64e20617, 0xf9ede761, 0x858cc2ba,
++ 0x188323cc, 0x28a5ab56, 0xb5aa4a20, 0xc9cb6ffb, 0x54c48e8d,
++ 0x3109244d, 0xac06c53b, 0xd067e0e0, 0x4d680196, 0x1bfcb560,
++ 0x86f35416, 0xfa9271cd, 0x679d90bb, 0x02503a7b, 0x9f5fdb0d,
++ 0xe33efed6, 0x7e311fa0, 0xc2ca1813, 0x5fc5f965, 0x23a4dcbe,
++ 0xbeab3dc8, 0xdb669708, 0x4669767e, 0x3a0853a5, 0xa707b2d3,
++ 0xf1930625, 0x6c9ce753, 0x10fdc288, 0x8df223fe, 0xe83f893e,
++ 0x75306848, 0x09514d93, 0x945eace5, 0xa478247f, 0x3977c509,
++ 0x4516e0d2, 0xd81901a4, 0xbdd4ab64, 0x20db4a12, 0x5cba6fc9,
++ 0xc1b58ebf, 0x97213a49, 0x0a2edb3f, 0x764ffee4, 0xeb401f92,
++ 0x8e8db552, 0x13825424, 0x6fe371ff, 0xf2ec9089, 0x0fae60cb,
++ 0x92a181bd, 0xeec0a466, 0x73cf4510, 0x1602efd0, 0x8b0d0ea6,
++ 0xf76c2b7d, 0x6a63ca0b, 0x3cf77efd, 0xa1f89f8b, 0xdd99ba50,
++ 0x40965b26, 0x255bf1e6, 0xb8541090, 0xc435354b, 0x593ad43d,
++ 0x691c5ca7, 0xf413bdd1, 0x8872980a, 0x157d797c, 0x70b0d3bc,
++ 0xedbf32ca, 0x91de1711, 0x0cd1f667, 0x5a454291, 0xc74aa3e7,
++ 0xbb2b863c, 0x2624674a, 0x43e9cd8a, 0xdee62cfc, 0xa2870927,
++ 0x3f88e851},
++ {0x00000000, 0xdd96d985, 0x605cb54b, 0xbdca6cce, 0xc0b96a96,
++ 0x1d2fb313, 0xa0e5dfdd, 0x7d730658, 0x5a03d36d, 0x87950ae8,
++ 0x3a5f6626, 0xe7c9bfa3, 0x9abab9fb, 0x472c607e, 0xfae60cb0,
++ 0x2770d535, 0xb407a6da, 0x69917f5f, 0xd45b1391, 0x09cdca14,
++ 0x74becc4c, 0xa92815c9, 0x14e27907, 0xc974a082, 0xee0475b7,
++ 0x3392ac32, 0x8e58c0fc, 0x53ce1979, 0x2ebd1f21, 0xf32bc6a4,
++ 0x4ee1aa6a, 0x937773ef, 0xb37e4bf5, 0x6ee89270, 0xd322febe,
++ 0x0eb4273b, 0x73c72163, 0xae51f8e6, 0x139b9428, 0xce0d4dad,
++ 0xe97d9898, 0x34eb411d, 0x89212dd3, 0x54b7f456, 0x29c4f20e,
++ 0xf4522b8b, 0x49984745, 0x940e9ec0, 0x0779ed2f, 0xdaef34aa,
++ 0x67255864, 0xbab381e1, 0xc7c087b9, 0x1a565e3c, 0xa79c32f2,
++ 0x7a0aeb77, 0x5d7a3e42, 0x80ece7c7, 0x3d268b09, 0xe0b0528c,
++ 0x9dc354d4, 0x40558d51, 0xfd9fe19f, 0x2009381a, 0xbd8d91ab,
++ 0x601b482e, 0xddd124e0, 0x0047fd65, 0x7d34fb3d, 0xa0a222b8,
++ 0x1d684e76, 0xc0fe97f3, 0xe78e42c6, 0x3a189b43, 0x87d2f78d,
++ 0x5a442e08, 0x27372850, 0xfaa1f1d5, 0x476b9d1b, 0x9afd449e,
++ 0x098a3771, 0xd41ceef4, 0x69d6823a, 0xb4405bbf, 0xc9335de7,
++ 0x14a58462, 0xa96fe8ac, 0x74f93129, 0x5389e41c, 0x8e1f3d99,
++ 0x33d55157, 0xee4388d2, 0x93308e8a, 0x4ea6570f, 0xf36c3bc1,
++ 0x2efae244, 0x0ef3da5e, 0xd36503db, 0x6eaf6f15, 0xb339b690,
++ 0xce4ab0c8, 0x13dc694d, 0xae160583, 0x7380dc06, 0x54f00933,
++ 0x8966d0b6, 0x34acbc78, 0xe93a65fd, 0x944963a5, 0x49dfba20,
++ 0xf415d6ee, 0x29830f6b, 0xbaf47c84, 0x6762a501, 0xdaa8c9cf,
++ 0x073e104a, 0x7a4d1612, 0xa7dbcf97, 0x1a11a359, 0xc7877adc,
++ 0xe0f7afe9, 0x3d61766c, 0x80ab1aa2, 0x5d3dc327, 0x204ec57f,
++ 0xfdd81cfa, 0x40127034, 0x9d84a9b1, 0xa06a2517, 0x7dfcfc92,
++ 0xc036905c, 0x1da049d9, 0x60d34f81, 0xbd459604, 0x008ffaca,
++ 0xdd19234f, 0xfa69f67a, 0x27ff2fff, 0x9a354331, 0x47a39ab4,
++ 0x3ad09cec, 0xe7464569, 0x5a8c29a7, 0x871af022, 0x146d83cd,
++ 0xc9fb5a48, 0x74313686, 0xa9a7ef03, 0xd4d4e95b, 0x094230de,
++ 0xb4885c10, 0x691e8595, 0x4e6e50a0, 0x93f88925, 0x2e32e5eb,
++ 0xf3a43c6e, 0x8ed73a36, 0x5341e3b3, 0xee8b8f7d, 0x331d56f8,
++ 0x13146ee2, 0xce82b767, 0x7348dba9, 0xaede022c, 0xd3ad0474,
++ 0x0e3bddf1, 0xb3f1b13f, 0x6e6768ba, 0x4917bd8f, 0x9481640a,
++ 0x294b08c4, 0xf4ddd141, 0x89aed719, 0x54380e9c, 0xe9f26252,
++ 0x3464bbd7, 0xa713c838, 0x7a8511bd, 0xc74f7d73, 0x1ad9a4f6,
++ 0x67aaa2ae, 0xba3c7b2b, 0x07f617e5, 0xda60ce60, 0xfd101b55,
++ 0x2086c2d0, 0x9d4cae1e, 0x40da779b, 0x3da971c3, 0xe03fa846,
++ 0x5df5c488, 0x80631d0d, 0x1de7b4bc, 0xc0716d39, 0x7dbb01f7,
++ 0xa02dd872, 0xdd5ede2a, 0x00c807af, 0xbd026b61, 0x6094b2e4,
++ 0x47e467d1, 0x9a72be54, 0x27b8d29a, 0xfa2e0b1f, 0x875d0d47,
++ 0x5acbd4c2, 0xe701b80c, 0x3a976189, 0xa9e01266, 0x7476cbe3,
++ 0xc9bca72d, 0x142a7ea8, 0x695978f0, 0xb4cfa175, 0x0905cdbb,
++ 0xd493143e, 0xf3e3c10b, 0x2e75188e, 0x93bf7440, 0x4e29adc5,
++ 0x335aab9d, 0xeecc7218, 0x53061ed6, 0x8e90c753, 0xae99ff49,
++ 0x730f26cc, 0xcec54a02, 0x13539387, 0x6e2095df, 0xb3b64c5a,
++ 0x0e7c2094, 0xd3eaf911, 0xf49a2c24, 0x290cf5a1, 0x94c6996f,
++ 0x495040ea, 0x342346b2, 0xe9b59f37, 0x547ff3f9, 0x89e92a7c,
++ 0x1a9e5993, 0xc7088016, 0x7ac2ecd8, 0xa754355d, 0xda273305,
++ 0x07b1ea80, 0xba7b864e, 0x67ed5fcb, 0x409d8afe, 0x9d0b537b,
++ 0x20c13fb5, 0xfd57e630, 0x8024e068, 0x5db239ed, 0xe0785523,
++ 0x3dee8ca6},
++ {0x00000000, 0x9ba54c6f, 0xec3b9e9f, 0x779ed2f0, 0x03063b7f,
++ 0x98a37710, 0xef3da5e0, 0x7498e98f, 0x060c76fe, 0x9da93a91,
++ 0xea37e861, 0x7192a40e, 0x050a4d81, 0x9eaf01ee, 0xe931d31e,
++ 0x72949f71, 0x0c18edfc, 0x97bda193, 0xe0237363, 0x7b863f0c,
++ 0x0f1ed683, 0x94bb9aec, 0xe325481c, 0x78800473, 0x0a149b02,
++ 0x91b1d76d, 0xe62f059d, 0x7d8a49f2, 0x0912a07d, 0x92b7ec12,
++ 0xe5293ee2, 0x7e8c728d, 0x1831dbf8, 0x83949797, 0xf40a4567,
++ 0x6faf0908, 0x1b37e087, 0x8092ace8, 0xf70c7e18, 0x6ca93277,
++ 0x1e3dad06, 0x8598e169, 0xf2063399, 0x69a37ff6, 0x1d3b9679,
++ 0x869eda16, 0xf10008e6, 0x6aa54489, 0x14293604, 0x8f8c7a6b,
++ 0xf812a89b, 0x63b7e4f4, 0x172f0d7b, 0x8c8a4114, 0xfb1493e4,
++ 0x60b1df8b, 0x122540fa, 0x89800c95, 0xfe1ede65, 0x65bb920a,
++ 0x11237b85, 0x8a8637ea, 0xfd18e51a, 0x66bda975, 0x3063b7f0,
++ 0xabc6fb9f, 0xdc58296f, 0x47fd6500, 0x33658c8f, 0xa8c0c0e0,
++ 0xdf5e1210, 0x44fb5e7f, 0x366fc10e, 0xadca8d61, 0xda545f91,
++ 0x41f113fe, 0x3569fa71, 0xaeccb61e, 0xd95264ee, 0x42f72881,
++ 0x3c7b5a0c, 0xa7de1663, 0xd040c493, 0x4be588fc, 0x3f7d6173,
++ 0xa4d82d1c, 0xd346ffec, 0x48e3b383, 0x3a772cf2, 0xa1d2609d,
++ 0xd64cb26d, 0x4de9fe02, 0x3971178d, 0xa2d45be2, 0xd54a8912,
++ 0x4eefc57d, 0x28526c08, 0xb3f72067, 0xc469f297, 0x5fccbef8,
++ 0x2b545777, 0xb0f11b18, 0xc76fc9e8, 0x5cca8587, 0x2e5e1af6,
++ 0xb5fb5699, 0xc2658469, 0x59c0c806, 0x2d582189, 0xb6fd6de6,
++ 0xc163bf16, 0x5ac6f379, 0x244a81f4, 0xbfefcd9b, 0xc8711f6b,
++ 0x53d45304, 0x274cba8b, 0xbce9f6e4, 0xcb772414, 0x50d2687b,
++ 0x2246f70a, 0xb9e3bb65, 0xce7d6995, 0x55d825fa, 0x2140cc75,
++ 0xbae5801a, 0xcd7b52ea, 0x56de1e85, 0x60c76fe0, 0xfb62238f,
++ 0x8cfcf17f, 0x1759bd10, 0x63c1549f, 0xf86418f0, 0x8ffaca00,
++ 0x145f866f, 0x66cb191e, 0xfd6e5571, 0x8af08781, 0x1155cbee,
++ 0x65cd2261, 0xfe686e0e, 0x89f6bcfe, 0x1253f091, 0x6cdf821c,
++ 0xf77ace73, 0x80e41c83, 0x1b4150ec, 0x6fd9b963, 0xf47cf50c,
++ 0x83e227fc, 0x18476b93, 0x6ad3f4e2, 0xf176b88d, 0x86e86a7d,
++ 0x1d4d2612, 0x69d5cf9d, 0xf27083f2, 0x85ee5102, 0x1e4b1d6d,
++ 0x78f6b418, 0xe353f877, 0x94cd2a87, 0x0f6866e8, 0x7bf08f67,
++ 0xe055c308, 0x97cb11f8, 0x0c6e5d97, 0x7efac2e6, 0xe55f8e89,
++ 0x92c15c79, 0x09641016, 0x7dfcf999, 0xe659b5f6, 0x91c76706,
++ 0x0a622b69, 0x74ee59e4, 0xef4b158b, 0x98d5c77b, 0x03708b14,
++ 0x77e8629b, 0xec4d2ef4, 0x9bd3fc04, 0x0076b06b, 0x72e22f1a,
++ 0xe9476375, 0x9ed9b185, 0x057cfdea, 0x71e41465, 0xea41580a,
++ 0x9ddf8afa, 0x067ac695, 0x50a4d810, 0xcb01947f, 0xbc9f468f,
++ 0x273a0ae0, 0x53a2e36f, 0xc807af00, 0xbf997df0, 0x243c319f,
++ 0x56a8aeee, 0xcd0de281, 0xba933071, 0x21367c1e, 0x55ae9591,
++ 0xce0bd9fe, 0xb9950b0e, 0x22304761, 0x5cbc35ec, 0xc7197983,
++ 0xb087ab73, 0x2b22e71c, 0x5fba0e93, 0xc41f42fc, 0xb381900c,
++ 0x2824dc63, 0x5ab04312, 0xc1150f7d, 0xb68bdd8d, 0x2d2e91e2,
++ 0x59b6786d, 0xc2133402, 0xb58de6f2, 0x2e28aa9d, 0x489503e8,
++ 0xd3304f87, 0xa4ae9d77, 0x3f0bd118, 0x4b933897, 0xd03674f8,
++ 0xa7a8a608, 0x3c0dea67, 0x4e997516, 0xd53c3979, 0xa2a2eb89,
++ 0x3907a7e6, 0x4d9f4e69, 0xd63a0206, 0xa1a4d0f6, 0x3a019c99,
++ 0x448dee14, 0xdf28a27b, 0xa8b6708b, 0x33133ce4, 0x478bd56b,
++ 0xdc2e9904, 0xabb04bf4, 0x3015079b, 0x428198ea, 0xd924d485,
++ 0xaeba0675, 0x351f4a1a, 0x4187a395, 0xda22effa, 0xadbc3d0a,
++ 0x36197165},
++ {0x00000000, 0xc18edfc0, 0x586cb9c1, 0x99e26601, 0xb0d97382,
++ 0x7157ac42, 0xe8b5ca43, 0x293b1583, 0xbac3e145, 0x7b4d3e85,
++ 0xe2af5884, 0x23218744, 0x0a1a92c7, 0xcb944d07, 0x52762b06,
++ 0x93f8f4c6, 0xaef6c4cb, 0x6f781b0b, 0xf69a7d0a, 0x3714a2ca,
++ 0x1e2fb749, 0xdfa16889, 0x46430e88, 0x87cdd148, 0x1435258e,
++ 0xd5bbfa4e, 0x4c599c4f, 0x8dd7438f, 0xa4ec560c, 0x656289cc,
++ 0xfc80efcd, 0x3d0e300d, 0x869c8fd7, 0x47125017, 0xdef03616,
++ 0x1f7ee9d6, 0x3645fc55, 0xf7cb2395, 0x6e294594, 0xafa79a54,
++ 0x3c5f6e92, 0xfdd1b152, 0x6433d753, 0xa5bd0893, 0x8c861d10,
++ 0x4d08c2d0, 0xd4eaa4d1, 0x15647b11, 0x286a4b1c, 0xe9e494dc,
++ 0x7006f2dd, 0xb1882d1d, 0x98b3389e, 0x593de75e, 0xc0df815f,
++ 0x01515e9f, 0x92a9aa59, 0x53277599, 0xcac51398, 0x0b4bcc58,
++ 0x2270d9db, 0xe3fe061b, 0x7a1c601a, 0xbb92bfda, 0xd64819ef,
++ 0x17c6c62f, 0x8e24a02e, 0x4faa7fee, 0x66916a6d, 0xa71fb5ad,
++ 0x3efdd3ac, 0xff730c6c, 0x6c8bf8aa, 0xad05276a, 0x34e7416b,
++ 0xf5699eab, 0xdc528b28, 0x1ddc54e8, 0x843e32e9, 0x45b0ed29,
++ 0x78bedd24, 0xb93002e4, 0x20d264e5, 0xe15cbb25, 0xc867aea6,
++ 0x09e97166, 0x900b1767, 0x5185c8a7, 0xc27d3c61, 0x03f3e3a1,
++ 0x9a1185a0, 0x5b9f5a60, 0x72a44fe3, 0xb32a9023, 0x2ac8f622,
++ 0xeb4629e2, 0x50d49638, 0x915a49f8, 0x08b82ff9, 0xc936f039,
++ 0xe00de5ba, 0x21833a7a, 0xb8615c7b, 0x79ef83bb, 0xea17777d,
++ 0x2b99a8bd, 0xb27bcebc, 0x73f5117c, 0x5ace04ff, 0x9b40db3f,
++ 0x02a2bd3e, 0xc32c62fe, 0xfe2252f3, 0x3fac8d33, 0xa64eeb32,
++ 0x67c034f2, 0x4efb2171, 0x8f75feb1, 0x169798b0, 0xd7194770,
++ 0x44e1b3b6, 0x856f6c76, 0x1c8d0a77, 0xdd03d5b7, 0xf438c034,
++ 0x35b61ff4, 0xac5479f5, 0x6ddaa635, 0x77e1359f, 0xb66fea5f,
++ 0x2f8d8c5e, 0xee03539e, 0xc738461d, 0x06b699dd, 0x9f54ffdc,
++ 0x5eda201c, 0xcd22d4da, 0x0cac0b1a, 0x954e6d1b, 0x54c0b2db,
++ 0x7dfba758, 0xbc757898, 0x25971e99, 0xe419c159, 0xd917f154,
++ 0x18992e94, 0x817b4895, 0x40f59755, 0x69ce82d6, 0xa8405d16,
++ 0x31a23b17, 0xf02ce4d7, 0x63d41011, 0xa25acfd1, 0x3bb8a9d0,
++ 0xfa367610, 0xd30d6393, 0x1283bc53, 0x8b61da52, 0x4aef0592,
++ 0xf17dba48, 0x30f36588, 0xa9110389, 0x689fdc49, 0x41a4c9ca,
++ 0x802a160a, 0x19c8700b, 0xd846afcb, 0x4bbe5b0d, 0x8a3084cd,
++ 0x13d2e2cc, 0xd25c3d0c, 0xfb67288f, 0x3ae9f74f, 0xa30b914e,
++ 0x62854e8e, 0x5f8b7e83, 0x9e05a143, 0x07e7c742, 0xc6691882,
++ 0xef520d01, 0x2edcd2c1, 0xb73eb4c0, 0x76b06b00, 0xe5489fc6,
++ 0x24c64006, 0xbd242607, 0x7caaf9c7, 0x5591ec44, 0x941f3384,
++ 0x0dfd5585, 0xcc738a45, 0xa1a92c70, 0x6027f3b0, 0xf9c595b1,
++ 0x384b4a71, 0x11705ff2, 0xd0fe8032, 0x491ce633, 0x889239f3,
++ 0x1b6acd35, 0xdae412f5, 0x430674f4, 0x8288ab34, 0xabb3beb7,
++ 0x6a3d6177, 0xf3df0776, 0x3251d8b6, 0x0f5fe8bb, 0xced1377b,
++ 0x5733517a, 0x96bd8eba, 0xbf869b39, 0x7e0844f9, 0xe7ea22f8,
++ 0x2664fd38, 0xb59c09fe, 0x7412d63e, 0xedf0b03f, 0x2c7e6fff,
++ 0x05457a7c, 0xc4cba5bc, 0x5d29c3bd, 0x9ca71c7d, 0x2735a3a7,
++ 0xe6bb7c67, 0x7f591a66, 0xbed7c5a6, 0x97ecd025, 0x56620fe5,
++ 0xcf8069e4, 0x0e0eb624, 0x9df642e2, 0x5c789d22, 0xc59afb23,
++ 0x041424e3, 0x2d2f3160, 0xeca1eea0, 0x754388a1, 0xb4cd5761,
++ 0x89c3676c, 0x484db8ac, 0xd1afdead, 0x1021016d, 0x391a14ee,
++ 0xf894cb2e, 0x6176ad2f, 0xa0f872ef, 0x33008629, 0xf28e59e9,
++ 0x6b6c3fe8, 0xaae2e028, 0x83d9f5ab, 0x42572a6b, 0xdbb54c6a,
++ 0x1a3b93aa},
++ {0x00000000, 0xefc26b3e, 0x04f5d03d, 0xeb37bb03, 0x09eba07a,
++ 0xe629cb44, 0x0d1e7047, 0xe2dc1b79, 0x13d740f4, 0xfc152bca,
++ 0x172290c9, 0xf8e0fbf7, 0x1a3ce08e, 0xf5fe8bb0, 0x1ec930b3,
++ 0xf10b5b8d, 0x27ae81e8, 0xc86cead6, 0x235b51d5, 0xcc993aeb,
++ 0x2e452192, 0xc1874aac, 0x2ab0f1af, 0xc5729a91, 0x3479c11c,
++ 0xdbbbaa22, 0x308c1121, 0xdf4e7a1f, 0x3d926166, 0xd2500a58,
++ 0x3967b15b, 0xd6a5da65, 0x4f5d03d0, 0xa09f68ee, 0x4ba8d3ed,
++ 0xa46ab8d3, 0x46b6a3aa, 0xa974c894, 0x42437397, 0xad8118a9,
++ 0x5c8a4324, 0xb348281a, 0x587f9319, 0xb7bdf827, 0x5561e35e,
++ 0xbaa38860, 0x51943363, 0xbe56585d, 0x68f38238, 0x8731e906,
++ 0x6c065205, 0x83c4393b, 0x61182242, 0x8eda497c, 0x65edf27f,
++ 0x8a2f9941, 0x7b24c2cc, 0x94e6a9f2, 0x7fd112f1, 0x901379cf,
++ 0x72cf62b6, 0x9d0d0988, 0x763ab28b, 0x99f8d9b5, 0x9eba07a0,
++ 0x71786c9e, 0x9a4fd79d, 0x758dbca3, 0x9751a7da, 0x7893cce4,
++ 0x93a477e7, 0x7c661cd9, 0x8d6d4754, 0x62af2c6a, 0x89989769,
++ 0x665afc57, 0x8486e72e, 0x6b448c10, 0x80733713, 0x6fb15c2d,
++ 0xb9148648, 0x56d6ed76, 0xbde15675, 0x52233d4b, 0xb0ff2632,
++ 0x5f3d4d0c, 0xb40af60f, 0x5bc89d31, 0xaac3c6bc, 0x4501ad82,
++ 0xae361681, 0x41f47dbf, 0xa32866c6, 0x4cea0df8, 0xa7ddb6fb,
++ 0x481fddc5, 0xd1e70470, 0x3e256f4e, 0xd512d44d, 0x3ad0bf73,
++ 0xd80ca40a, 0x37cecf34, 0xdcf97437, 0x333b1f09, 0xc2304484,
++ 0x2df22fba, 0xc6c594b9, 0x2907ff87, 0xcbdbe4fe, 0x24198fc0,
++ 0xcf2e34c3, 0x20ec5ffd, 0xf6498598, 0x198beea6, 0xf2bc55a5,
++ 0x1d7e3e9b, 0xffa225e2, 0x10604edc, 0xfb57f5df, 0x14959ee1,
++ 0xe59ec56c, 0x0a5cae52, 0xe16b1551, 0x0ea97e6f, 0xec756516,
++ 0x03b70e28, 0xe880b52b, 0x0742de15, 0xe6050901, 0x09c7623f,
++ 0xe2f0d93c, 0x0d32b202, 0xefeea97b, 0x002cc245, 0xeb1b7946,
++ 0x04d91278, 0xf5d249f5, 0x1a1022cb, 0xf12799c8, 0x1ee5f2f6,
++ 0xfc39e98f, 0x13fb82b1, 0xf8cc39b2, 0x170e528c, 0xc1ab88e9,
++ 0x2e69e3d7, 0xc55e58d4, 0x2a9c33ea, 0xc8402893, 0x278243ad,
++ 0xccb5f8ae, 0x23779390, 0xd27cc81d, 0x3dbea323, 0xd6891820,
++ 0x394b731e, 0xdb976867, 0x34550359, 0xdf62b85a, 0x30a0d364,
++ 0xa9580ad1, 0x469a61ef, 0xadaddaec, 0x426fb1d2, 0xa0b3aaab,
++ 0x4f71c195, 0xa4467a96, 0x4b8411a8, 0xba8f4a25, 0x554d211b,
++ 0xbe7a9a18, 0x51b8f126, 0xb364ea5f, 0x5ca68161, 0xb7913a62,
++ 0x5853515c, 0x8ef68b39, 0x6134e007, 0x8a035b04, 0x65c1303a,
++ 0x871d2b43, 0x68df407d, 0x83e8fb7e, 0x6c2a9040, 0x9d21cbcd,
++ 0x72e3a0f3, 0x99d41bf0, 0x761670ce, 0x94ca6bb7, 0x7b080089,
++ 0x903fbb8a, 0x7ffdd0b4, 0x78bf0ea1, 0x977d659f, 0x7c4ade9c,
++ 0x9388b5a2, 0x7154aedb, 0x9e96c5e5, 0x75a17ee6, 0x9a6315d8,
++ 0x6b684e55, 0x84aa256b, 0x6f9d9e68, 0x805ff556, 0x6283ee2f,
++ 0x8d418511, 0x66763e12, 0x89b4552c, 0x5f118f49, 0xb0d3e477,
++ 0x5be45f74, 0xb426344a, 0x56fa2f33, 0xb938440d, 0x520fff0e,
++ 0xbdcd9430, 0x4cc6cfbd, 0xa304a483, 0x48331f80, 0xa7f174be,
++ 0x452d6fc7, 0xaaef04f9, 0x41d8bffa, 0xae1ad4c4, 0x37e20d71,
++ 0xd820664f, 0x3317dd4c, 0xdcd5b672, 0x3e09ad0b, 0xd1cbc635,
++ 0x3afc7d36, 0xd53e1608, 0x24354d85, 0xcbf726bb, 0x20c09db8,
++ 0xcf02f686, 0x2ddeedff, 0xc21c86c1, 0x292b3dc2, 0xc6e956fc,
++ 0x104c8c99, 0xff8ee7a7, 0x14b95ca4, 0xfb7b379a, 0x19a72ce3,
++ 0xf66547dd, 0x1d52fcde, 0xf29097e0, 0x039bcc6d, 0xec59a753,
++ 0x076e1c50, 0xe8ac776e, 0x0a706c17, 0xe5b20729, 0x0e85bc2a,
++ 0xe147d714},
++ {0x00000000, 0x177b1443, 0x2ef62886, 0x398d3cc5, 0x5dec510c,
++ 0x4a97454f, 0x731a798a, 0x64616dc9, 0xbbd8a218, 0xaca3b65b,
++ 0x952e8a9e, 0x82559edd, 0xe634f314, 0xf14fe757, 0xc8c2db92,
++ 0xdfb9cfd1, 0xacc04271, 0xbbbb5632, 0x82366af7, 0x954d7eb4,
++ 0xf12c137d, 0xe657073e, 0xdfda3bfb, 0xc8a12fb8, 0x1718e069,
++ 0x0063f42a, 0x39eec8ef, 0x2e95dcac, 0x4af4b165, 0x5d8fa526,
++ 0x640299e3, 0x73798da0, 0x82f182a3, 0x958a96e0, 0xac07aa25,
++ 0xbb7cbe66, 0xdf1dd3af, 0xc866c7ec, 0xf1ebfb29, 0xe690ef6a,
++ 0x392920bb, 0x2e5234f8, 0x17df083d, 0x00a41c7e, 0x64c571b7,
++ 0x73be65f4, 0x4a335931, 0x5d484d72, 0x2e31c0d2, 0x394ad491,
++ 0x00c7e854, 0x17bcfc17, 0x73dd91de, 0x64a6859d, 0x5d2bb958,
++ 0x4a50ad1b, 0x95e962ca, 0x82927689, 0xbb1f4a4c, 0xac645e0f,
++ 0xc80533c6, 0xdf7e2785, 0xe6f31b40, 0xf1880f03, 0xde920307,
++ 0xc9e91744, 0xf0642b81, 0xe71f3fc2, 0x837e520b, 0x94054648,
++ 0xad887a8d, 0xbaf36ece, 0x654aa11f, 0x7231b55c, 0x4bbc8999,
++ 0x5cc79dda, 0x38a6f013, 0x2fdde450, 0x1650d895, 0x012bccd6,
++ 0x72524176, 0x65295535, 0x5ca469f0, 0x4bdf7db3, 0x2fbe107a,
++ 0x38c50439, 0x014838fc, 0x16332cbf, 0xc98ae36e, 0xdef1f72d,
++ 0xe77ccbe8, 0xf007dfab, 0x9466b262, 0x831da621, 0xba909ae4,
++ 0xadeb8ea7, 0x5c6381a4, 0x4b1895e7, 0x7295a922, 0x65eebd61,
++ 0x018fd0a8, 0x16f4c4eb, 0x2f79f82e, 0x3802ec6d, 0xe7bb23bc,
++ 0xf0c037ff, 0xc94d0b3a, 0xde361f79, 0xba5772b0, 0xad2c66f3,
++ 0x94a15a36, 0x83da4e75, 0xf0a3c3d5, 0xe7d8d796, 0xde55eb53,
++ 0xc92eff10, 0xad4f92d9, 0xba34869a, 0x83b9ba5f, 0x94c2ae1c,
++ 0x4b7b61cd, 0x5c00758e, 0x658d494b, 0x72f65d08, 0x169730c1,
++ 0x01ec2482, 0x38611847, 0x2f1a0c04, 0x6655004f, 0x712e140c,
++ 0x48a328c9, 0x5fd83c8a, 0x3bb95143, 0x2cc24500, 0x154f79c5,
++ 0x02346d86, 0xdd8da257, 0xcaf6b614, 0xf37b8ad1, 0xe4009e92,
++ 0x8061f35b, 0x971ae718, 0xae97dbdd, 0xb9eccf9e, 0xca95423e,
++ 0xddee567d, 0xe4636ab8, 0xf3187efb, 0x97791332, 0x80020771,
++ 0xb98f3bb4, 0xaef42ff7, 0x714de026, 0x6636f465, 0x5fbbc8a0,
++ 0x48c0dce3, 0x2ca1b12a, 0x3bdaa569, 0x025799ac, 0x152c8def,
++ 0xe4a482ec, 0xf3df96af, 0xca52aa6a, 0xdd29be29, 0xb948d3e0,
++ 0xae33c7a3, 0x97befb66, 0x80c5ef25, 0x5f7c20f4, 0x480734b7,
++ 0x718a0872, 0x66f11c31, 0x029071f8, 0x15eb65bb, 0x2c66597e,
++ 0x3b1d4d3d, 0x4864c09d, 0x5f1fd4de, 0x6692e81b, 0x71e9fc58,
++ 0x15889191, 0x02f385d2, 0x3b7eb917, 0x2c05ad54, 0xf3bc6285,
++ 0xe4c776c6, 0xdd4a4a03, 0xca315e40, 0xae503389, 0xb92b27ca,
++ 0x80a61b0f, 0x97dd0f4c, 0xb8c70348, 0xafbc170b, 0x96312bce,
++ 0x814a3f8d, 0xe52b5244, 0xf2504607, 0xcbdd7ac2, 0xdca66e81,
++ 0x031fa150, 0x1464b513, 0x2de989d6, 0x3a929d95, 0x5ef3f05c,
++ 0x4988e41f, 0x7005d8da, 0x677ecc99, 0x14074139, 0x037c557a,
++ 0x3af169bf, 0x2d8a7dfc, 0x49eb1035, 0x5e900476, 0x671d38b3,
++ 0x70662cf0, 0xafdfe321, 0xb8a4f762, 0x8129cba7, 0x9652dfe4,
++ 0xf233b22d, 0xe548a66e, 0xdcc59aab, 0xcbbe8ee8, 0x3a3681eb,
++ 0x2d4d95a8, 0x14c0a96d, 0x03bbbd2e, 0x67dad0e7, 0x70a1c4a4,
++ 0x492cf861, 0x5e57ec22, 0x81ee23f3, 0x969537b0, 0xaf180b75,
++ 0xb8631f36, 0xdc0272ff, 0xcb7966bc, 0xf2f45a79, 0xe58f4e3a,
++ 0x96f6c39a, 0x818dd7d9, 0xb800eb1c, 0xaf7bff5f, 0xcb1a9296,
++ 0xdc6186d5, 0xe5ecba10, 0xf297ae53, 0x2d2e6182, 0x3a5575c1,
++ 0x03d84904, 0x14a35d47, 0x70c2308e, 0x67b924cd, 0x5e341808,
++ 0x494f0c4b}};
++
++local const z_word_t FAR crc_braid_big_table[][256] = {
++ {0x0000000000000000, 0x43147b1700000000, 0x8628f62e00000000,
++ 0xc53c8d3900000000, 0x0c51ec5d00000000, 0x4f45974a00000000,
++ 0x8a791a7300000000, 0xc96d616400000000, 0x18a2d8bb00000000,
++ 0x5bb6a3ac00000000, 0x9e8a2e9500000000, 0xdd9e558200000000,
++ 0x14f334e600000000, 0x57e74ff100000000, 0x92dbc2c800000000,
++ 0xd1cfb9df00000000, 0x7142c0ac00000000, 0x3256bbbb00000000,
++ 0xf76a368200000000, 0xb47e4d9500000000, 0x7d132cf100000000,
++ 0x3e0757e600000000, 0xfb3bdadf00000000, 0xb82fa1c800000000,
++ 0x69e0181700000000, 0x2af4630000000000, 0xefc8ee3900000000,
++ 0xacdc952e00000000, 0x65b1f44a00000000, 0x26a58f5d00000000,
++ 0xe399026400000000, 0xa08d797300000000, 0xa382f18200000000,
++ 0xe0968a9500000000, 0x25aa07ac00000000, 0x66be7cbb00000000,
++ 0xafd31ddf00000000, 0xecc766c800000000, 0x29fbebf100000000,
++ 0x6aef90e600000000, 0xbb20293900000000, 0xf834522e00000000,
++ 0x3d08df1700000000, 0x7e1ca40000000000, 0xb771c56400000000,
++ 0xf465be7300000000, 0x3159334a00000000, 0x724d485d00000000,
++ 0xd2c0312e00000000, 0x91d44a3900000000, 0x54e8c70000000000,
++ 0x17fcbc1700000000, 0xde91dd7300000000, 0x9d85a66400000000,
++ 0x58b92b5d00000000, 0x1bad504a00000000, 0xca62e99500000000,
++ 0x8976928200000000, 0x4c4a1fbb00000000, 0x0f5e64ac00000000,
++ 0xc63305c800000000, 0x85277edf00000000, 0x401bf3e600000000,
++ 0x030f88f100000000, 0x070392de00000000, 0x4417e9c900000000,
++ 0x812b64f000000000, 0xc23f1fe700000000, 0x0b527e8300000000,
++ 0x4846059400000000, 0x8d7a88ad00000000, 0xce6ef3ba00000000,
++ 0x1fa14a6500000000, 0x5cb5317200000000, 0x9989bc4b00000000,
++ 0xda9dc75c00000000, 0x13f0a63800000000, 0x50e4dd2f00000000,
++ 0x95d8501600000000, 0xd6cc2b0100000000, 0x7641527200000000,
++ 0x3555296500000000, 0xf069a45c00000000, 0xb37ddf4b00000000,
++ 0x7a10be2f00000000, 0x3904c53800000000, 0xfc38480100000000,
++ 0xbf2c331600000000, 0x6ee38ac900000000, 0x2df7f1de00000000,
++ 0xe8cb7ce700000000, 0xabdf07f000000000, 0x62b2669400000000,
++ 0x21a61d8300000000, 0xe49a90ba00000000, 0xa78eebad00000000,
++ 0xa481635c00000000, 0xe795184b00000000, 0x22a9957200000000,
++ 0x61bdee6500000000, 0xa8d08f0100000000, 0xebc4f41600000000,
++ 0x2ef8792f00000000, 0x6dec023800000000, 0xbc23bbe700000000,
++ 0xff37c0f000000000, 0x3a0b4dc900000000, 0x791f36de00000000,
++ 0xb07257ba00000000, 0xf3662cad00000000, 0x365aa19400000000,
++ 0x754eda8300000000, 0xd5c3a3f000000000, 0x96d7d8e700000000,
++ 0x53eb55de00000000, 0x10ff2ec900000000, 0xd9924fad00000000,
++ 0x9a8634ba00000000, 0x5fbab98300000000, 0x1caec29400000000,
++ 0xcd617b4b00000000, 0x8e75005c00000000, 0x4b498d6500000000,
++ 0x085df67200000000, 0xc130971600000000, 0x8224ec0100000000,
++ 0x4718613800000000, 0x040c1a2f00000000, 0x4f00556600000000,
++ 0x0c142e7100000000, 0xc928a34800000000, 0x8a3cd85f00000000,
++ 0x4351b93b00000000, 0x0045c22c00000000, 0xc5794f1500000000,
++ 0x866d340200000000, 0x57a28ddd00000000, 0x14b6f6ca00000000,
++ 0xd18a7bf300000000, 0x929e00e400000000, 0x5bf3618000000000,
++ 0x18e71a9700000000, 0xdddb97ae00000000, 0x9ecfecb900000000,
++ 0x3e4295ca00000000, 0x7d56eedd00000000, 0xb86a63e400000000,
++ 0xfb7e18f300000000, 0x3213799700000000, 0x7107028000000000,
++ 0xb43b8fb900000000, 0xf72ff4ae00000000, 0x26e04d7100000000,
++ 0x65f4366600000000, 0xa0c8bb5f00000000, 0xe3dcc04800000000,
++ 0x2ab1a12c00000000, 0x69a5da3b00000000, 0xac99570200000000,
++ 0xef8d2c1500000000, 0xec82a4e400000000, 0xaf96dff300000000,
++ 0x6aaa52ca00000000, 0x29be29dd00000000, 0xe0d348b900000000,
++ 0xa3c733ae00000000, 0x66fbbe9700000000, 0x25efc58000000000,
++ 0xf4207c5f00000000, 0xb734074800000000, 0x72088a7100000000,
++ 0x311cf16600000000, 0xf871900200000000, 0xbb65eb1500000000,
++ 0x7e59662c00000000, 0x3d4d1d3b00000000, 0x9dc0644800000000,
++ 0xded41f5f00000000, 0x1be8926600000000, 0x58fce97100000000,
++ 0x9191881500000000, 0xd285f30200000000, 0x17b97e3b00000000,
++ 0x54ad052c00000000, 0x8562bcf300000000, 0xc676c7e400000000,
++ 0x034a4add00000000, 0x405e31ca00000000, 0x893350ae00000000,
++ 0xca272bb900000000, 0x0f1ba68000000000, 0x4c0fdd9700000000,
++ 0x4803c7b800000000, 0x0b17bcaf00000000, 0xce2b319600000000,
++ 0x8d3f4a8100000000, 0x44522be500000000, 0x074650f200000000,
++ 0xc27addcb00000000, 0x816ea6dc00000000, 0x50a11f0300000000,
++ 0x13b5641400000000, 0xd689e92d00000000, 0x959d923a00000000,
++ 0x5cf0f35e00000000, 0x1fe4884900000000, 0xdad8057000000000,
++ 0x99cc7e6700000000, 0x3941071400000000, 0x7a557c0300000000,
++ 0xbf69f13a00000000, 0xfc7d8a2d00000000, 0x3510eb4900000000,
++ 0x7604905e00000000, 0xb3381d6700000000, 0xf02c667000000000,
++ 0x21e3dfaf00000000, 0x62f7a4b800000000, 0xa7cb298100000000,
++ 0xe4df529600000000, 0x2db233f200000000, 0x6ea648e500000000,
++ 0xab9ac5dc00000000, 0xe88ebecb00000000, 0xeb81363a00000000,
++ 0xa8954d2d00000000, 0x6da9c01400000000, 0x2ebdbb0300000000,
++ 0xe7d0da6700000000, 0xa4c4a17000000000, 0x61f82c4900000000,
++ 0x22ec575e00000000, 0xf323ee8100000000, 0xb037959600000000,
++ 0x750b18af00000000, 0x361f63b800000000, 0xff7202dc00000000,
++ 0xbc6679cb00000000, 0x795af4f200000000, 0x3a4e8fe500000000,
++ 0x9ac3f69600000000, 0xd9d78d8100000000, 0x1ceb00b800000000,
++ 0x5fff7baf00000000, 0x96921acb00000000, 0xd58661dc00000000,
++ 0x10baece500000000, 0x53ae97f200000000, 0x82612e2d00000000,
++ 0xc175553a00000000, 0x0449d80300000000, 0x475da31400000000,
++ 0x8e30c27000000000, 0xcd24b96700000000, 0x0818345e00000000,
++ 0x4b0c4f4900000000},
++ {0x0000000000000000, 0x3e6bc2ef00000000, 0x3dd0f50400000000,
++ 0x03bb37eb00000000, 0x7aa0eb0900000000, 0x44cb29e600000000,
++ 0x47701e0d00000000, 0x791bdce200000000, 0xf440d71300000000,
++ 0xca2b15fc00000000, 0xc990221700000000, 0xf7fbe0f800000000,
++ 0x8ee03c1a00000000, 0xb08bfef500000000, 0xb330c91e00000000,
++ 0x8d5b0bf100000000, 0xe881ae2700000000, 0xd6ea6cc800000000,
++ 0xd5515b2300000000, 0xeb3a99cc00000000, 0x9221452e00000000,
++ 0xac4a87c100000000, 0xaff1b02a00000000, 0x919a72c500000000,
++ 0x1cc1793400000000, 0x22aabbdb00000000, 0x21118c3000000000,
++ 0x1f7a4edf00000000, 0x6661923d00000000, 0x580a50d200000000,
++ 0x5bb1673900000000, 0x65daa5d600000000, 0xd0035d4f00000000,
++ 0xee689fa000000000, 0xedd3a84b00000000, 0xd3b86aa400000000,
++ 0xaaa3b64600000000, 0x94c874a900000000, 0x9773434200000000,
++ 0xa91881ad00000000, 0x24438a5c00000000, 0x1a2848b300000000,
++ 0x19937f5800000000, 0x27f8bdb700000000, 0x5ee3615500000000,
++ 0x6088a3ba00000000, 0x6333945100000000, 0x5d5856be00000000,
++ 0x3882f36800000000, 0x06e9318700000000, 0x0552066c00000000,
++ 0x3b39c48300000000, 0x4222186100000000, 0x7c49da8e00000000,
++ 0x7ff2ed6500000000, 0x41992f8a00000000, 0xccc2247b00000000,
++ 0xf2a9e69400000000, 0xf112d17f00000000, 0xcf79139000000000,
++ 0xb662cf7200000000, 0x88090d9d00000000, 0x8bb23a7600000000,
++ 0xb5d9f89900000000, 0xa007ba9e00000000, 0x9e6c787100000000,
++ 0x9dd74f9a00000000, 0xa3bc8d7500000000, 0xdaa7519700000000,
++ 0xe4cc937800000000, 0xe777a49300000000, 0xd91c667c00000000,
++ 0x54476d8d00000000, 0x6a2caf6200000000, 0x6997988900000000,
++ 0x57fc5a6600000000, 0x2ee7868400000000, 0x108c446b00000000,
++ 0x1337738000000000, 0x2d5cb16f00000000, 0x488614b900000000,
++ 0x76edd65600000000, 0x7556e1bd00000000, 0x4b3d235200000000,
++ 0x3226ffb000000000, 0x0c4d3d5f00000000, 0x0ff60ab400000000,
++ 0x319dc85b00000000, 0xbcc6c3aa00000000, 0x82ad014500000000,
++ 0x811636ae00000000, 0xbf7df44100000000, 0xc66628a300000000,
++ 0xf80dea4c00000000, 0xfbb6dda700000000, 0xc5dd1f4800000000,
++ 0x7004e7d100000000, 0x4e6f253e00000000, 0x4dd412d500000000,
++ 0x73bfd03a00000000, 0x0aa40cd800000000, 0x34cfce3700000000,
++ 0x3774f9dc00000000, 0x091f3b3300000000, 0x844430c200000000,
++ 0xba2ff22d00000000, 0xb994c5c600000000, 0x87ff072900000000,
++ 0xfee4dbcb00000000, 0xc08f192400000000, 0xc3342ecf00000000,
++ 0xfd5fec2000000000, 0x988549f600000000, 0xa6ee8b1900000000,
++ 0xa555bcf200000000, 0x9b3e7e1d00000000, 0xe225a2ff00000000,
++ 0xdc4e601000000000, 0xdff557fb00000000, 0xe19e951400000000,
++ 0x6cc59ee500000000, 0x52ae5c0a00000000, 0x51156be100000000,
++ 0x6f7ea90e00000000, 0x166575ec00000000, 0x280eb70300000000,
++ 0x2bb580e800000000, 0x15de420700000000, 0x010905e600000000,
++ 0x3f62c70900000000, 0x3cd9f0e200000000, 0x02b2320d00000000,
++ 0x7ba9eeef00000000, 0x45c22c0000000000, 0x46791beb00000000,
++ 0x7812d90400000000, 0xf549d2f500000000, 0xcb22101a00000000,
++ 0xc89927f100000000, 0xf6f2e51e00000000, 0x8fe939fc00000000,
++ 0xb182fb1300000000, 0xb239ccf800000000, 0x8c520e1700000000,
++ 0xe988abc100000000, 0xd7e3692e00000000, 0xd4585ec500000000,
++ 0xea339c2a00000000, 0x932840c800000000, 0xad43822700000000,
++ 0xaef8b5cc00000000, 0x9093772300000000, 0x1dc87cd200000000,
++ 0x23a3be3d00000000, 0x201889d600000000, 0x1e734b3900000000,
++ 0x676897db00000000, 0x5903553400000000, 0x5ab862df00000000,
++ 0x64d3a03000000000, 0xd10a58a900000000, 0xef619a4600000000,
++ 0xecdaadad00000000, 0xd2b16f4200000000, 0xabaab3a000000000,
++ 0x95c1714f00000000, 0x967a46a400000000, 0xa811844b00000000,
++ 0x254a8fba00000000, 0x1b214d5500000000, 0x189a7abe00000000,
++ 0x26f1b85100000000, 0x5fea64b300000000, 0x6181a65c00000000,
++ 0x623a91b700000000, 0x5c51535800000000, 0x398bf68e00000000,
++ 0x07e0346100000000, 0x045b038a00000000, 0x3a30c16500000000,
++ 0x432b1d8700000000, 0x7d40df6800000000, 0x7efbe88300000000,
++ 0x40902a6c00000000, 0xcdcb219d00000000, 0xf3a0e37200000000,
++ 0xf01bd49900000000, 0xce70167600000000, 0xb76bca9400000000,
++ 0x8900087b00000000, 0x8abb3f9000000000, 0xb4d0fd7f00000000,
++ 0xa10ebf7800000000, 0x9f657d9700000000, 0x9cde4a7c00000000,
++ 0xa2b5889300000000, 0xdbae547100000000, 0xe5c5969e00000000,
++ 0xe67ea17500000000, 0xd815639a00000000, 0x554e686b00000000,
++ 0x6b25aa8400000000, 0x689e9d6f00000000, 0x56f55f8000000000,
++ 0x2fee836200000000, 0x1185418d00000000, 0x123e766600000000,
++ 0x2c55b48900000000, 0x498f115f00000000, 0x77e4d3b000000000,
++ 0x745fe45b00000000, 0x4a3426b400000000, 0x332ffa5600000000,
++ 0x0d4438b900000000, 0x0eff0f5200000000, 0x3094cdbd00000000,
++ 0xbdcfc64c00000000, 0x83a404a300000000, 0x801f334800000000,
++ 0xbe74f1a700000000, 0xc76f2d4500000000, 0xf904efaa00000000,
++ 0xfabfd84100000000, 0xc4d41aae00000000, 0x710de23700000000,
++ 0x4f6620d800000000, 0x4cdd173300000000, 0x72b6d5dc00000000,
++ 0x0bad093e00000000, 0x35c6cbd100000000, 0x367dfc3a00000000,
++ 0x08163ed500000000, 0x854d352400000000, 0xbb26f7cb00000000,
++ 0xb89dc02000000000, 0x86f602cf00000000, 0xffedde2d00000000,
++ 0xc1861cc200000000, 0xc23d2b2900000000, 0xfc56e9c600000000,
++ 0x998c4c1000000000, 0xa7e78eff00000000, 0xa45cb91400000000,
++ 0x9a377bfb00000000, 0xe32ca71900000000, 0xdd4765f600000000,
++ 0xdefc521d00000000, 0xe09790f200000000, 0x6dcc9b0300000000,
++ 0x53a759ec00000000, 0x501c6e0700000000, 0x6e77ace800000000,
++ 0x176c700a00000000, 0x2907b2e500000000, 0x2abc850e00000000,
++ 0x14d747e100000000},
++ {0x0000000000000000, 0xc0df8ec100000000, 0xc1b96c5800000000,
++ 0x0166e29900000000, 0x8273d9b000000000, 0x42ac577100000000,
++ 0x43cab5e800000000, 0x83153b2900000000, 0x45e1c3ba00000000,
++ 0x853e4d7b00000000, 0x8458afe200000000, 0x4487212300000000,
++ 0xc7921a0a00000000, 0x074d94cb00000000, 0x062b765200000000,
++ 0xc6f4f89300000000, 0xcbc4f6ae00000000, 0x0b1b786f00000000,
++ 0x0a7d9af600000000, 0xcaa2143700000000, 0x49b72f1e00000000,
++ 0x8968a1df00000000, 0x880e434600000000, 0x48d1cd8700000000,
++ 0x8e25351400000000, 0x4efabbd500000000, 0x4f9c594c00000000,
++ 0x8f43d78d00000000, 0x0c56eca400000000, 0xcc89626500000000,
++ 0xcdef80fc00000000, 0x0d300e3d00000000, 0xd78f9c8600000000,
++ 0x1750124700000000, 0x1636f0de00000000, 0xd6e97e1f00000000,
++ 0x55fc453600000000, 0x9523cbf700000000, 0x9445296e00000000,
++ 0x549aa7af00000000, 0x926e5f3c00000000, 0x52b1d1fd00000000,
++ 0x53d7336400000000, 0x9308bda500000000, 0x101d868c00000000,
++ 0xd0c2084d00000000, 0xd1a4ead400000000, 0x117b641500000000,
++ 0x1c4b6a2800000000, 0xdc94e4e900000000, 0xddf2067000000000,
++ 0x1d2d88b100000000, 0x9e38b39800000000, 0x5ee73d5900000000,
++ 0x5f81dfc000000000, 0x9f5e510100000000, 0x59aaa99200000000,
++ 0x9975275300000000, 0x9813c5ca00000000, 0x58cc4b0b00000000,
++ 0xdbd9702200000000, 0x1b06fee300000000, 0x1a601c7a00000000,
++ 0xdabf92bb00000000, 0xef1948d600000000, 0x2fc6c61700000000,
++ 0x2ea0248e00000000, 0xee7faa4f00000000, 0x6d6a916600000000,
++ 0xadb51fa700000000, 0xacd3fd3e00000000, 0x6c0c73ff00000000,
++ 0xaaf88b6c00000000, 0x6a2705ad00000000, 0x6b41e73400000000,
++ 0xab9e69f500000000, 0x288b52dc00000000, 0xe854dc1d00000000,
++ 0xe9323e8400000000, 0x29edb04500000000, 0x24ddbe7800000000,
++ 0xe40230b900000000, 0xe564d22000000000, 0x25bb5ce100000000,
++ 0xa6ae67c800000000, 0x6671e90900000000, 0x67170b9000000000,
++ 0xa7c8855100000000, 0x613c7dc200000000, 0xa1e3f30300000000,
++ 0xa085119a00000000, 0x605a9f5b00000000, 0xe34fa47200000000,
++ 0x23902ab300000000, 0x22f6c82a00000000, 0xe22946eb00000000,
++ 0x3896d45000000000, 0xf8495a9100000000, 0xf92fb80800000000,
++ 0x39f036c900000000, 0xbae50de000000000, 0x7a3a832100000000,
++ 0x7b5c61b800000000, 0xbb83ef7900000000, 0x7d7717ea00000000,
++ 0xbda8992b00000000, 0xbcce7bb200000000, 0x7c11f57300000000,
++ 0xff04ce5a00000000, 0x3fdb409b00000000, 0x3ebda20200000000,
++ 0xfe622cc300000000, 0xf35222fe00000000, 0x338dac3f00000000,
++ 0x32eb4ea600000000, 0xf234c06700000000, 0x7121fb4e00000000,
++ 0xb1fe758f00000000, 0xb098971600000000, 0x704719d700000000,
++ 0xb6b3e14400000000, 0x766c6f8500000000, 0x770a8d1c00000000,
++ 0xb7d503dd00000000, 0x34c038f400000000, 0xf41fb63500000000,
++ 0xf57954ac00000000, 0x35a6da6d00000000, 0x9f35e17700000000,
++ 0x5fea6fb600000000, 0x5e8c8d2f00000000, 0x9e5303ee00000000,
++ 0x1d4638c700000000, 0xdd99b60600000000, 0xdcff549f00000000,
++ 0x1c20da5e00000000, 0xdad422cd00000000, 0x1a0bac0c00000000,
++ 0x1b6d4e9500000000, 0xdbb2c05400000000, 0x58a7fb7d00000000,
++ 0x987875bc00000000, 0x991e972500000000, 0x59c119e400000000,
++ 0x54f117d900000000, 0x942e991800000000, 0x95487b8100000000,
++ 0x5597f54000000000, 0xd682ce6900000000, 0x165d40a800000000,
++ 0x173ba23100000000, 0xd7e42cf000000000, 0x1110d46300000000,
++ 0xd1cf5aa200000000, 0xd0a9b83b00000000, 0x107636fa00000000,
++ 0x93630dd300000000, 0x53bc831200000000, 0x52da618b00000000,
++ 0x9205ef4a00000000, 0x48ba7df100000000, 0x8865f33000000000,
++ 0x890311a900000000, 0x49dc9f6800000000, 0xcac9a44100000000,
++ 0x0a162a8000000000, 0x0b70c81900000000, 0xcbaf46d800000000,
++ 0x0d5bbe4b00000000, 0xcd84308a00000000, 0xcce2d21300000000,
++ 0x0c3d5cd200000000, 0x8f2867fb00000000, 0x4ff7e93a00000000,
++ 0x4e910ba300000000, 0x8e4e856200000000, 0x837e8b5f00000000,
++ 0x43a1059e00000000, 0x42c7e70700000000, 0x821869c600000000,
++ 0x010d52ef00000000, 0xc1d2dc2e00000000, 0xc0b43eb700000000,
++ 0x006bb07600000000, 0xc69f48e500000000, 0x0640c62400000000,
++ 0x072624bd00000000, 0xc7f9aa7c00000000, 0x44ec915500000000,
++ 0x84331f9400000000, 0x8555fd0d00000000, 0x458a73cc00000000,
++ 0x702ca9a100000000, 0xb0f3276000000000, 0xb195c5f900000000,
++ 0x714a4b3800000000, 0xf25f701100000000, 0x3280fed000000000,
++ 0x33e61c4900000000, 0xf339928800000000, 0x35cd6a1b00000000,
++ 0xf512e4da00000000, 0xf474064300000000, 0x34ab888200000000,
++ 0xb7beb3ab00000000, 0x77613d6a00000000, 0x7607dff300000000,
++ 0xb6d8513200000000, 0xbbe85f0f00000000, 0x7b37d1ce00000000,
++ 0x7a51335700000000, 0xba8ebd9600000000, 0x399b86bf00000000,
++ 0xf944087e00000000, 0xf822eae700000000, 0x38fd642600000000,
++ 0xfe099cb500000000, 0x3ed6127400000000, 0x3fb0f0ed00000000,
++ 0xff6f7e2c00000000, 0x7c7a450500000000, 0xbca5cbc400000000,
++ 0xbdc3295d00000000, 0x7d1ca79c00000000, 0xa7a3352700000000,
++ 0x677cbbe600000000, 0x661a597f00000000, 0xa6c5d7be00000000,
++ 0x25d0ec9700000000, 0xe50f625600000000, 0xe46980cf00000000,
++ 0x24b60e0e00000000, 0xe242f69d00000000, 0x229d785c00000000,
++ 0x23fb9ac500000000, 0xe324140400000000, 0x60312f2d00000000,
++ 0xa0eea1ec00000000, 0xa188437500000000, 0x6157cdb400000000,
++ 0x6c67c38900000000, 0xacb84d4800000000, 0xaddeafd100000000,
++ 0x6d01211000000000, 0xee141a3900000000, 0x2ecb94f800000000,
++ 0x2fad766100000000, 0xef72f8a000000000, 0x2986003300000000,
++ 0xe9598ef200000000, 0xe83f6c6b00000000, 0x28e0e2aa00000000,
++ 0xabf5d98300000000, 0x6b2a574200000000, 0x6a4cb5db00000000,
++ 0xaa933b1a00000000},
++ {0x0000000000000000, 0x6f4ca59b00000000, 0x9f9e3bec00000000,
++ 0xf0d29e7700000000, 0x7f3b060300000000, 0x1077a39800000000,
++ 0xe0a53def00000000, 0x8fe9987400000000, 0xfe760c0600000000,
++ 0x913aa99d00000000, 0x61e837ea00000000, 0x0ea4927100000000,
++ 0x814d0a0500000000, 0xee01af9e00000000, 0x1ed331e900000000,
++ 0x719f947200000000, 0xfced180c00000000, 0x93a1bd9700000000,
++ 0x637323e000000000, 0x0c3f867b00000000, 0x83d61e0f00000000,
++ 0xec9abb9400000000, 0x1c4825e300000000, 0x7304807800000000,
++ 0x029b140a00000000, 0x6dd7b19100000000, 0x9d052fe600000000,
++ 0xf2498a7d00000000, 0x7da0120900000000, 0x12ecb79200000000,
++ 0xe23e29e500000000, 0x8d728c7e00000000, 0xf8db311800000000,
++ 0x9797948300000000, 0x67450af400000000, 0x0809af6f00000000,
++ 0x87e0371b00000000, 0xe8ac928000000000, 0x187e0cf700000000,
++ 0x7732a96c00000000, 0x06ad3d1e00000000, 0x69e1988500000000,
++ 0x993306f200000000, 0xf67fa36900000000, 0x79963b1d00000000,
++ 0x16da9e8600000000, 0xe60800f100000000, 0x8944a56a00000000,
++ 0x0436291400000000, 0x6b7a8c8f00000000, 0x9ba812f800000000,
++ 0xf4e4b76300000000, 0x7b0d2f1700000000, 0x14418a8c00000000,
++ 0xe49314fb00000000, 0x8bdfb16000000000, 0xfa40251200000000,
++ 0x950c808900000000, 0x65de1efe00000000, 0x0a92bb6500000000,
++ 0x857b231100000000, 0xea37868a00000000, 0x1ae518fd00000000,
++ 0x75a9bd6600000000, 0xf0b7633000000000, 0x9ffbc6ab00000000,
++ 0x6f2958dc00000000, 0x0065fd4700000000, 0x8f8c653300000000,
++ 0xe0c0c0a800000000, 0x10125edf00000000, 0x7f5efb4400000000,
++ 0x0ec16f3600000000, 0x618dcaad00000000, 0x915f54da00000000,
++ 0xfe13f14100000000, 0x71fa693500000000, 0x1eb6ccae00000000,
++ 0xee6452d900000000, 0x8128f74200000000, 0x0c5a7b3c00000000,
++ 0x6316dea700000000, 0x93c440d000000000, 0xfc88e54b00000000,
++ 0x73617d3f00000000, 0x1c2dd8a400000000, 0xecff46d300000000,
++ 0x83b3e34800000000, 0xf22c773a00000000, 0x9d60d2a100000000,
++ 0x6db24cd600000000, 0x02fee94d00000000, 0x8d17713900000000,
++ 0xe25bd4a200000000, 0x12894ad500000000, 0x7dc5ef4e00000000,
++ 0x086c522800000000, 0x6720f7b300000000, 0x97f269c400000000,
++ 0xf8becc5f00000000, 0x7757542b00000000, 0x181bf1b000000000,
++ 0xe8c96fc700000000, 0x8785ca5c00000000, 0xf61a5e2e00000000,
++ 0x9956fbb500000000, 0x698465c200000000, 0x06c8c05900000000,
++ 0x8921582d00000000, 0xe66dfdb600000000, 0x16bf63c100000000,
++ 0x79f3c65a00000000, 0xf4814a2400000000, 0x9bcdefbf00000000,
++ 0x6b1f71c800000000, 0x0453d45300000000, 0x8bba4c2700000000,
++ 0xe4f6e9bc00000000, 0x142477cb00000000, 0x7b68d25000000000,
++ 0x0af7462200000000, 0x65bbe3b900000000, 0x95697dce00000000,
++ 0xfa25d85500000000, 0x75cc402100000000, 0x1a80e5ba00000000,
++ 0xea527bcd00000000, 0x851ede5600000000, 0xe06fc76000000000,
++ 0x8f2362fb00000000, 0x7ff1fc8c00000000, 0x10bd591700000000,
++ 0x9f54c16300000000, 0xf01864f800000000, 0x00cafa8f00000000,
++ 0x6f865f1400000000, 0x1e19cb6600000000, 0x71556efd00000000,
++ 0x8187f08a00000000, 0xeecb551100000000, 0x6122cd6500000000,
++ 0x0e6e68fe00000000, 0xfebcf68900000000, 0x91f0531200000000,
++ 0x1c82df6c00000000, 0x73ce7af700000000, 0x831ce48000000000,
++ 0xec50411b00000000, 0x63b9d96f00000000, 0x0cf57cf400000000,
++ 0xfc27e28300000000, 0x936b471800000000, 0xe2f4d36a00000000,
++ 0x8db876f100000000, 0x7d6ae88600000000, 0x12264d1d00000000,
++ 0x9dcfd56900000000, 0xf28370f200000000, 0x0251ee8500000000,
++ 0x6d1d4b1e00000000, 0x18b4f67800000000, 0x77f853e300000000,
++ 0x872acd9400000000, 0xe866680f00000000, 0x678ff07b00000000,
++ 0x08c355e000000000, 0xf811cb9700000000, 0x975d6e0c00000000,
++ 0xe6c2fa7e00000000, 0x898e5fe500000000, 0x795cc19200000000,
++ 0x1610640900000000, 0x99f9fc7d00000000, 0xf6b559e600000000,
++ 0x0667c79100000000, 0x692b620a00000000, 0xe459ee7400000000,
++ 0x8b154bef00000000, 0x7bc7d59800000000, 0x148b700300000000,
++ 0x9b62e87700000000, 0xf42e4dec00000000, 0x04fcd39b00000000,
++ 0x6bb0760000000000, 0x1a2fe27200000000, 0x756347e900000000,
++ 0x85b1d99e00000000, 0xeafd7c0500000000, 0x6514e47100000000,
++ 0x0a5841ea00000000, 0xfa8adf9d00000000, 0x95c67a0600000000,
++ 0x10d8a45000000000, 0x7f9401cb00000000, 0x8f469fbc00000000,
++ 0xe00a3a2700000000, 0x6fe3a25300000000, 0x00af07c800000000,
++ 0xf07d99bf00000000, 0x9f313c2400000000, 0xeeaea85600000000,
++ 0x81e20dcd00000000, 0x713093ba00000000, 0x1e7c362100000000,
++ 0x9195ae5500000000, 0xfed90bce00000000, 0x0e0b95b900000000,
++ 0x6147302200000000, 0xec35bc5c00000000, 0x837919c700000000,
++ 0x73ab87b000000000, 0x1ce7222b00000000, 0x930eba5f00000000,
++ 0xfc421fc400000000, 0x0c9081b300000000, 0x63dc242800000000,
++ 0x1243b05a00000000, 0x7d0f15c100000000, 0x8ddd8bb600000000,
++ 0xe2912e2d00000000, 0x6d78b65900000000, 0x023413c200000000,
++ 0xf2e68db500000000, 0x9daa282e00000000, 0xe803954800000000,
++ 0x874f30d300000000, 0x779daea400000000, 0x18d10b3f00000000,
++ 0x9738934b00000000, 0xf87436d000000000, 0x08a6a8a700000000,
++ 0x67ea0d3c00000000, 0x1675994e00000000, 0x79393cd500000000,
++ 0x89eba2a200000000, 0xe6a7073900000000, 0x694e9f4d00000000,
++ 0x06023ad600000000, 0xf6d0a4a100000000, 0x999c013a00000000,
++ 0x14ee8d4400000000, 0x7ba228df00000000, 0x8b70b6a800000000,
++ 0xe43c133300000000, 0x6bd58b4700000000, 0x04992edc00000000,
++ 0xf44bb0ab00000000, 0x9b07153000000000, 0xea98814200000000,
++ 0x85d424d900000000, 0x7506baae00000000, 0x1a4a1f3500000000,
++ 0x95a3874100000000, 0xfaef22da00000000, 0x0a3dbcad00000000,
++ 0x6571193600000000},
++ {0x0000000000000000, 0x85d996dd00000000, 0x4bb55c6000000000,
++ 0xce6ccabd00000000, 0x966ab9c000000000, 0x13b32f1d00000000,
++ 0xdddfe5a000000000, 0x5806737d00000000, 0x6dd3035a00000000,
++ 0xe80a958700000000, 0x26665f3a00000000, 0xa3bfc9e700000000,
++ 0xfbb9ba9a00000000, 0x7e602c4700000000, 0xb00ce6fa00000000,
++ 0x35d5702700000000, 0xdaa607b400000000, 0x5f7f916900000000,
++ 0x91135bd400000000, 0x14cacd0900000000, 0x4cccbe7400000000,
++ 0xc91528a900000000, 0x0779e21400000000, 0x82a074c900000000,
++ 0xb77504ee00000000, 0x32ac923300000000, 0xfcc0588e00000000,
++ 0x7919ce5300000000, 0x211fbd2e00000000, 0xa4c62bf300000000,
++ 0x6aaae14e00000000, 0xef73779300000000, 0xf54b7eb300000000,
++ 0x7092e86e00000000, 0xbefe22d300000000, 0x3b27b40e00000000,
++ 0x6321c77300000000, 0xe6f851ae00000000, 0x28949b1300000000,
++ 0xad4d0dce00000000, 0x98987de900000000, 0x1d41eb3400000000,
++ 0xd32d218900000000, 0x56f4b75400000000, 0x0ef2c42900000000,
++ 0x8b2b52f400000000, 0x4547984900000000, 0xc09e0e9400000000,
++ 0x2fed790700000000, 0xaa34efda00000000, 0x6458256700000000,
++ 0xe181b3ba00000000, 0xb987c0c700000000, 0x3c5e561a00000000,
++ 0xf2329ca700000000, 0x77eb0a7a00000000, 0x423e7a5d00000000,
++ 0xc7e7ec8000000000, 0x098b263d00000000, 0x8c52b0e000000000,
++ 0xd454c39d00000000, 0x518d554000000000, 0x9fe19ffd00000000,
++ 0x1a38092000000000, 0xab918dbd00000000, 0x2e481b6000000000,
++ 0xe024d1dd00000000, 0x65fd470000000000, 0x3dfb347d00000000,
++ 0xb822a2a000000000, 0x764e681d00000000, 0xf397fec000000000,
++ 0xc6428ee700000000, 0x439b183a00000000, 0x8df7d28700000000,
++ 0x082e445a00000000, 0x5028372700000000, 0xd5f1a1fa00000000,
++ 0x1b9d6b4700000000, 0x9e44fd9a00000000, 0x71378a0900000000,
++ 0xf4ee1cd400000000, 0x3a82d66900000000, 0xbf5b40b400000000,
++ 0xe75d33c900000000, 0x6284a51400000000, 0xace86fa900000000,
++ 0x2931f97400000000, 0x1ce4895300000000, 0x993d1f8e00000000,
++ 0x5751d53300000000, 0xd28843ee00000000, 0x8a8e309300000000,
++ 0x0f57a64e00000000, 0xc13b6cf300000000, 0x44e2fa2e00000000,
++ 0x5edaf30e00000000, 0xdb0365d300000000, 0x156faf6e00000000,
++ 0x90b639b300000000, 0xc8b04ace00000000, 0x4d69dc1300000000,
++ 0x830516ae00000000, 0x06dc807300000000, 0x3309f05400000000,
++ 0xb6d0668900000000, 0x78bcac3400000000, 0xfd653ae900000000,
++ 0xa563499400000000, 0x20badf4900000000, 0xeed615f400000000,
++ 0x6b0f832900000000, 0x847cf4ba00000000, 0x01a5626700000000,
++ 0xcfc9a8da00000000, 0x4a103e0700000000, 0x12164d7a00000000,
++ 0x97cfdba700000000, 0x59a3111a00000000, 0xdc7a87c700000000,
++ 0xe9aff7e000000000, 0x6c76613d00000000, 0xa21aab8000000000,
++ 0x27c33d5d00000000, 0x7fc54e2000000000, 0xfa1cd8fd00000000,
++ 0x3470124000000000, 0xb1a9849d00000000, 0x17256aa000000000,
++ 0x92fcfc7d00000000, 0x5c9036c000000000, 0xd949a01d00000000,
++ 0x814fd36000000000, 0x049645bd00000000, 0xcafa8f0000000000,
++ 0x4f2319dd00000000, 0x7af669fa00000000, 0xff2fff2700000000,
++ 0x3143359a00000000, 0xb49aa34700000000, 0xec9cd03a00000000,
++ 0x694546e700000000, 0xa7298c5a00000000, 0x22f01a8700000000,
++ 0xcd836d1400000000, 0x485afbc900000000, 0x8636317400000000,
++ 0x03efa7a900000000, 0x5be9d4d400000000, 0xde30420900000000,
++ 0x105c88b400000000, 0x95851e6900000000, 0xa0506e4e00000000,
++ 0x2589f89300000000, 0xebe5322e00000000, 0x6e3ca4f300000000,
++ 0x363ad78e00000000, 0xb3e3415300000000, 0x7d8f8bee00000000,
++ 0xf8561d3300000000, 0xe26e141300000000, 0x67b782ce00000000,
++ 0xa9db487300000000, 0x2c02deae00000000, 0x7404add300000000,
++ 0xf1dd3b0e00000000, 0x3fb1f1b300000000, 0xba68676e00000000,
++ 0x8fbd174900000000, 0x0a64819400000000, 0xc4084b2900000000,
++ 0x41d1ddf400000000, 0x19d7ae8900000000, 0x9c0e385400000000,
++ 0x5262f2e900000000, 0xd7bb643400000000, 0x38c813a700000000,
++ 0xbd11857a00000000, 0x737d4fc700000000, 0xf6a4d91a00000000,
++ 0xaea2aa6700000000, 0x2b7b3cba00000000, 0xe517f60700000000,
++ 0x60ce60da00000000, 0x551b10fd00000000, 0xd0c2862000000000,
++ 0x1eae4c9d00000000, 0x9b77da4000000000, 0xc371a93d00000000,
++ 0x46a83fe000000000, 0x88c4f55d00000000, 0x0d1d638000000000,
++ 0xbcb4e71d00000000, 0x396d71c000000000, 0xf701bb7d00000000,
++ 0x72d82da000000000, 0x2ade5edd00000000, 0xaf07c80000000000,
++ 0x616b02bd00000000, 0xe4b2946000000000, 0xd167e44700000000,
++ 0x54be729a00000000, 0x9ad2b82700000000, 0x1f0b2efa00000000,
++ 0x470d5d8700000000, 0xc2d4cb5a00000000, 0x0cb801e700000000,
++ 0x8961973a00000000, 0x6612e0a900000000, 0xe3cb767400000000,
++ 0x2da7bcc900000000, 0xa87e2a1400000000, 0xf078596900000000,
++ 0x75a1cfb400000000, 0xbbcd050900000000, 0x3e1493d400000000,
++ 0x0bc1e3f300000000, 0x8e18752e00000000, 0x4074bf9300000000,
++ 0xc5ad294e00000000, 0x9dab5a3300000000, 0x1872ccee00000000,
++ 0xd61e065300000000, 0x53c7908e00000000, 0x49ff99ae00000000,
++ 0xcc260f7300000000, 0x024ac5ce00000000, 0x8793531300000000,
++ 0xdf95206e00000000, 0x5a4cb6b300000000, 0x94207c0e00000000,
++ 0x11f9ead300000000, 0x242c9af400000000, 0xa1f50c2900000000,
++ 0x6f99c69400000000, 0xea40504900000000, 0xb246233400000000,
++ 0x379fb5e900000000, 0xf9f37f5400000000, 0x7c2ae98900000000,
++ 0x93599e1a00000000, 0x168008c700000000, 0xd8ecc27a00000000,
++ 0x5d3554a700000000, 0x053327da00000000, 0x80eab10700000000,
++ 0x4e867bba00000000, 0xcb5fed6700000000, 0xfe8a9d4000000000,
++ 0x7b530b9d00000000, 0xb53fc12000000000, 0x30e657fd00000000,
++ 0x68e0248000000000, 0xed39b25d00000000, 0x235578e000000000,
++ 0xa68cee3d00000000},
++ {0x0000000000000000, 0x76e10f9d00000000, 0xadc46ee100000000,
++ 0xdb25617c00000000, 0x1b8fac1900000000, 0x6d6ea38400000000,
++ 0xb64bc2f800000000, 0xc0aacd6500000000, 0x361e593300000000,
++ 0x40ff56ae00000000, 0x9bda37d200000000, 0xed3b384f00000000,
++ 0x2d91f52a00000000, 0x5b70fab700000000, 0x80559bcb00000000,
++ 0xf6b4945600000000, 0x6c3cb26600000000, 0x1addbdfb00000000,
++ 0xc1f8dc8700000000, 0xb719d31a00000000, 0x77b31e7f00000000,
++ 0x015211e200000000, 0xda77709e00000000, 0xac967f0300000000,
++ 0x5a22eb5500000000, 0x2cc3e4c800000000, 0xf7e685b400000000,
++ 0x81078a2900000000, 0x41ad474c00000000, 0x374c48d100000000,
++ 0xec6929ad00000000, 0x9a88263000000000, 0xd87864cd00000000,
++ 0xae996b5000000000, 0x75bc0a2c00000000, 0x035d05b100000000,
++ 0xc3f7c8d400000000, 0xb516c74900000000, 0x6e33a63500000000,
++ 0x18d2a9a800000000, 0xee663dfe00000000, 0x9887326300000000,
++ 0x43a2531f00000000, 0x35435c8200000000, 0xf5e991e700000000,
++ 0x83089e7a00000000, 0x582dff0600000000, 0x2eccf09b00000000,
++ 0xb444d6ab00000000, 0xc2a5d93600000000, 0x1980b84a00000000,
++ 0x6f61b7d700000000, 0xafcb7ab200000000, 0xd92a752f00000000,
++ 0x020f145300000000, 0x74ee1bce00000000, 0x825a8f9800000000,
++ 0xf4bb800500000000, 0x2f9ee17900000000, 0x597feee400000000,
++ 0x99d5238100000000, 0xef342c1c00000000, 0x34114d6000000000,
++ 0x42f042fd00000000, 0xf1f7b94100000000, 0x8716b6dc00000000,
++ 0x5c33d7a000000000, 0x2ad2d83d00000000, 0xea78155800000000,
++ 0x9c991ac500000000, 0x47bc7bb900000000, 0x315d742400000000,
++ 0xc7e9e07200000000, 0xb108efef00000000, 0x6a2d8e9300000000,
++ 0x1ccc810e00000000, 0xdc664c6b00000000, 0xaa8743f600000000,
++ 0x71a2228a00000000, 0x07432d1700000000, 0x9dcb0b2700000000,
++ 0xeb2a04ba00000000, 0x300f65c600000000, 0x46ee6a5b00000000,
++ 0x8644a73e00000000, 0xf0a5a8a300000000, 0x2b80c9df00000000,
++ 0x5d61c64200000000, 0xabd5521400000000, 0xdd345d8900000000,
++ 0x06113cf500000000, 0x70f0336800000000, 0xb05afe0d00000000,
++ 0xc6bbf19000000000, 0x1d9e90ec00000000, 0x6b7f9f7100000000,
++ 0x298fdd8c00000000, 0x5f6ed21100000000, 0x844bb36d00000000,
++ 0xf2aabcf000000000, 0x3200719500000000, 0x44e17e0800000000,
++ 0x9fc41f7400000000, 0xe92510e900000000, 0x1f9184bf00000000,
++ 0x69708b2200000000, 0xb255ea5e00000000, 0xc4b4e5c300000000,
++ 0x041e28a600000000, 0x72ff273b00000000, 0xa9da464700000000,
++ 0xdf3b49da00000000, 0x45b36fea00000000, 0x3352607700000000,
++ 0xe877010b00000000, 0x9e960e9600000000, 0x5e3cc3f300000000,
++ 0x28ddcc6e00000000, 0xf3f8ad1200000000, 0x8519a28f00000000,
++ 0x73ad36d900000000, 0x054c394400000000, 0xde69583800000000,
++ 0xa88857a500000000, 0x68229ac000000000, 0x1ec3955d00000000,
++ 0xc5e6f42100000000, 0xb307fbbc00000000, 0xe2ef738300000000,
++ 0x940e7c1e00000000, 0x4f2b1d6200000000, 0x39ca12ff00000000,
++ 0xf960df9a00000000, 0x8f81d00700000000, 0x54a4b17b00000000,
++ 0x2245bee600000000, 0xd4f12ab000000000, 0xa210252d00000000,
++ 0x7935445100000000, 0x0fd44bcc00000000, 0xcf7e86a900000000,
++ 0xb99f893400000000, 0x62bae84800000000, 0x145be7d500000000,
++ 0x8ed3c1e500000000, 0xf832ce7800000000, 0x2317af0400000000,
++ 0x55f6a09900000000, 0x955c6dfc00000000, 0xe3bd626100000000,
++ 0x3898031d00000000, 0x4e790c8000000000, 0xb8cd98d600000000,
++ 0xce2c974b00000000, 0x1509f63700000000, 0x63e8f9aa00000000,
++ 0xa34234cf00000000, 0xd5a33b5200000000, 0x0e865a2e00000000,
++ 0x786755b300000000, 0x3a97174e00000000, 0x4c7618d300000000,
++ 0x975379af00000000, 0xe1b2763200000000, 0x2118bb5700000000,
++ 0x57f9b4ca00000000, 0x8cdcd5b600000000, 0xfa3dda2b00000000,
++ 0x0c894e7d00000000, 0x7a6841e000000000, 0xa14d209c00000000,
++ 0xd7ac2f0100000000, 0x1706e26400000000, 0x61e7edf900000000,
++ 0xbac28c8500000000, 0xcc23831800000000, 0x56aba52800000000,
++ 0x204aaab500000000, 0xfb6fcbc900000000, 0x8d8ec45400000000,
++ 0x4d24093100000000, 0x3bc506ac00000000, 0xe0e067d000000000,
++ 0x9601684d00000000, 0x60b5fc1b00000000, 0x1654f38600000000,
++ 0xcd7192fa00000000, 0xbb909d6700000000, 0x7b3a500200000000,
++ 0x0ddb5f9f00000000, 0xd6fe3ee300000000, 0xa01f317e00000000,
++ 0x1318cac200000000, 0x65f9c55f00000000, 0xbedca42300000000,
++ 0xc83dabbe00000000, 0x089766db00000000, 0x7e76694600000000,
++ 0xa553083a00000000, 0xd3b207a700000000, 0x250693f100000000,
++ 0x53e79c6c00000000, 0x88c2fd1000000000, 0xfe23f28d00000000,
++ 0x3e893fe800000000, 0x4868307500000000, 0x934d510900000000,
++ 0xe5ac5e9400000000, 0x7f2478a400000000, 0x09c5773900000000,
++ 0xd2e0164500000000, 0xa40119d800000000, 0x64abd4bd00000000,
++ 0x124adb2000000000, 0xc96fba5c00000000, 0xbf8eb5c100000000,
++ 0x493a219700000000, 0x3fdb2e0a00000000, 0xe4fe4f7600000000,
++ 0x921f40eb00000000, 0x52b58d8e00000000, 0x2454821300000000,
++ 0xff71e36f00000000, 0x8990ecf200000000, 0xcb60ae0f00000000,
++ 0xbd81a19200000000, 0x66a4c0ee00000000, 0x1045cf7300000000,
++ 0xd0ef021600000000, 0xa60e0d8b00000000, 0x7d2b6cf700000000,
++ 0x0bca636a00000000, 0xfd7ef73c00000000, 0x8b9ff8a100000000,
++ 0x50ba99dd00000000, 0x265b964000000000, 0xe6f15b2500000000,
++ 0x901054b800000000, 0x4b3535c400000000, 0x3dd43a5900000000,
++ 0xa75c1c6900000000, 0xd1bd13f400000000, 0x0a98728800000000,
++ 0x7c797d1500000000, 0xbcd3b07000000000, 0xca32bfed00000000,
++ 0x1117de9100000000, 0x67f6d10c00000000, 0x9142455a00000000,
++ 0xe7a34ac700000000, 0x3c862bbb00000000, 0x4a67242600000000,
++ 0x8acde94300000000, 0xfc2ce6de00000000, 0x270987a200000000,
++ 0x51e8883f00000000},
++ {0x0000000000000000, 0xe8dbfbb900000000, 0x91b186a800000000,
++ 0x796a7d1100000000, 0x63657c8a00000000, 0x8bbe873300000000,
++ 0xf2d4fa2200000000, 0x1a0f019b00000000, 0x87cc89cf00000000,
++ 0x6f17727600000000, 0x167d0f6700000000, 0xfea6f4de00000000,
++ 0xe4a9f54500000000, 0x0c720efc00000000, 0x751873ed00000000,
++ 0x9dc3885400000000, 0x4f9f624400000000, 0xa74499fd00000000,
++ 0xde2ee4ec00000000, 0x36f51f5500000000, 0x2cfa1ece00000000,
++ 0xc421e57700000000, 0xbd4b986600000000, 0x559063df00000000,
++ 0xc853eb8b00000000, 0x2088103200000000, 0x59e26d2300000000,
++ 0xb139969a00000000, 0xab36970100000000, 0x43ed6cb800000000,
++ 0x3a8711a900000000, 0xd25cea1000000000, 0x9e3ec58800000000,
++ 0x76e53e3100000000, 0x0f8f432000000000, 0xe754b89900000000,
++ 0xfd5bb90200000000, 0x158042bb00000000, 0x6cea3faa00000000,
++ 0x8431c41300000000, 0x19f24c4700000000, 0xf129b7fe00000000,
++ 0x8843caef00000000, 0x6098315600000000, 0x7a9730cd00000000,
++ 0x924ccb7400000000, 0xeb26b66500000000, 0x03fd4ddc00000000,
++ 0xd1a1a7cc00000000, 0x397a5c7500000000, 0x4010216400000000,
++ 0xa8cbdadd00000000, 0xb2c4db4600000000, 0x5a1f20ff00000000,
++ 0x23755dee00000000, 0xcbaea65700000000, 0x566d2e0300000000,
++ 0xbeb6d5ba00000000, 0xc7dca8ab00000000, 0x2f07531200000000,
++ 0x3508528900000000, 0xddd3a93000000000, 0xa4b9d42100000000,
++ 0x4c622f9800000000, 0x7d7bfbca00000000, 0x95a0007300000000,
++ 0xecca7d6200000000, 0x041186db00000000, 0x1e1e874000000000,
++ 0xf6c57cf900000000, 0x8faf01e800000000, 0x6774fa5100000000,
++ 0xfab7720500000000, 0x126c89bc00000000, 0x6b06f4ad00000000,
++ 0x83dd0f1400000000, 0x99d20e8f00000000, 0x7109f53600000000,
++ 0x0863882700000000, 0xe0b8739e00000000, 0x32e4998e00000000,
++ 0xda3f623700000000, 0xa3551f2600000000, 0x4b8ee49f00000000,
++ 0x5181e50400000000, 0xb95a1ebd00000000, 0xc03063ac00000000,
++ 0x28eb981500000000, 0xb528104100000000, 0x5df3ebf800000000,
++ 0x249996e900000000, 0xcc426d5000000000, 0xd64d6ccb00000000,
++ 0x3e96977200000000, 0x47fcea6300000000, 0xaf2711da00000000,
++ 0xe3453e4200000000, 0x0b9ec5fb00000000, 0x72f4b8ea00000000,
++ 0x9a2f435300000000, 0x802042c800000000, 0x68fbb97100000000,
++ 0x1191c46000000000, 0xf94a3fd900000000, 0x6489b78d00000000,
++ 0x8c524c3400000000, 0xf538312500000000, 0x1de3ca9c00000000,
++ 0x07eccb0700000000, 0xef3730be00000000, 0x965d4daf00000000,
++ 0x7e86b61600000000, 0xacda5c0600000000, 0x4401a7bf00000000,
++ 0x3d6bdaae00000000, 0xd5b0211700000000, 0xcfbf208c00000000,
++ 0x2764db3500000000, 0x5e0ea62400000000, 0xb6d55d9d00000000,
++ 0x2b16d5c900000000, 0xc3cd2e7000000000, 0xbaa7536100000000,
++ 0x527ca8d800000000, 0x4873a94300000000, 0xa0a852fa00000000,
++ 0xd9c22feb00000000, 0x3119d45200000000, 0xbbf0874e00000000,
++ 0x532b7cf700000000, 0x2a4101e600000000, 0xc29afa5f00000000,
++ 0xd895fbc400000000, 0x304e007d00000000, 0x49247d6c00000000,
++ 0xa1ff86d500000000, 0x3c3c0e8100000000, 0xd4e7f53800000000,
++ 0xad8d882900000000, 0x4556739000000000, 0x5f59720b00000000,
++ 0xb78289b200000000, 0xcee8f4a300000000, 0x26330f1a00000000,
++ 0xf46fe50a00000000, 0x1cb41eb300000000, 0x65de63a200000000,
++ 0x8d05981b00000000, 0x970a998000000000, 0x7fd1623900000000,
++ 0x06bb1f2800000000, 0xee60e49100000000, 0x73a36cc500000000,
++ 0x9b78977c00000000, 0xe212ea6d00000000, 0x0ac911d400000000,
++ 0x10c6104f00000000, 0xf81debf600000000, 0x817796e700000000,
++ 0x69ac6d5e00000000, 0x25ce42c600000000, 0xcd15b97f00000000,
++ 0xb47fc46e00000000, 0x5ca43fd700000000, 0x46ab3e4c00000000,
++ 0xae70c5f500000000, 0xd71ab8e400000000, 0x3fc1435d00000000,
++ 0xa202cb0900000000, 0x4ad930b000000000, 0x33b34da100000000,
++ 0xdb68b61800000000, 0xc167b78300000000, 0x29bc4c3a00000000,
++ 0x50d6312b00000000, 0xb80dca9200000000, 0x6a51208200000000,
++ 0x828adb3b00000000, 0xfbe0a62a00000000, 0x133b5d9300000000,
++ 0x09345c0800000000, 0xe1efa7b100000000, 0x9885daa000000000,
++ 0x705e211900000000, 0xed9da94d00000000, 0x054652f400000000,
++ 0x7c2c2fe500000000, 0x94f7d45c00000000, 0x8ef8d5c700000000,
++ 0x66232e7e00000000, 0x1f49536f00000000, 0xf792a8d600000000,
++ 0xc68b7c8400000000, 0x2e50873d00000000, 0x573afa2c00000000,
++ 0xbfe1019500000000, 0xa5ee000e00000000, 0x4d35fbb700000000,
++ 0x345f86a600000000, 0xdc847d1f00000000, 0x4147f54b00000000,
++ 0xa99c0ef200000000, 0xd0f673e300000000, 0x382d885a00000000,
++ 0x222289c100000000, 0xcaf9727800000000, 0xb3930f6900000000,
++ 0x5b48f4d000000000, 0x89141ec000000000, 0x61cfe57900000000,
++ 0x18a5986800000000, 0xf07e63d100000000, 0xea71624a00000000,
++ 0x02aa99f300000000, 0x7bc0e4e200000000, 0x931b1f5b00000000,
++ 0x0ed8970f00000000, 0xe6036cb600000000, 0x9f6911a700000000,
++ 0x77b2ea1e00000000, 0x6dbdeb8500000000, 0x8566103c00000000,
++ 0xfc0c6d2d00000000, 0x14d7969400000000, 0x58b5b90c00000000,
++ 0xb06e42b500000000, 0xc9043fa400000000, 0x21dfc41d00000000,
++ 0x3bd0c58600000000, 0xd30b3e3f00000000, 0xaa61432e00000000,
++ 0x42bab89700000000, 0xdf7930c300000000, 0x37a2cb7a00000000,
++ 0x4ec8b66b00000000, 0xa6134dd200000000, 0xbc1c4c4900000000,
++ 0x54c7b7f000000000, 0x2dadcae100000000, 0xc576315800000000,
++ 0x172adb4800000000, 0xfff120f100000000, 0x869b5de000000000,
++ 0x6e40a65900000000, 0x744fa7c200000000, 0x9c945c7b00000000,
++ 0xe5fe216a00000000, 0x0d25dad300000000, 0x90e6528700000000,
++ 0x783da93e00000000, 0x0157d42f00000000, 0xe98c2f9600000000,
++ 0xf3832e0d00000000, 0x1b58d5b400000000, 0x6232a8a500000000,
++ 0x8ae9531c00000000},
++ {0x0000000000000000, 0x919168ae00000000, 0x6325a08700000000,
++ 0xf2b4c82900000000, 0x874c31d400000000, 0x16dd597a00000000,
++ 0xe469915300000000, 0x75f8f9fd00000000, 0x4f9f137300000000,
++ 0xde0e7bdd00000000, 0x2cbab3f400000000, 0xbd2bdb5a00000000,
++ 0xc8d322a700000000, 0x59424a0900000000, 0xabf6822000000000,
++ 0x3a67ea8e00000000, 0x9e3e27e600000000, 0x0faf4f4800000000,
++ 0xfd1b876100000000, 0x6c8aefcf00000000, 0x1972163200000000,
++ 0x88e37e9c00000000, 0x7a57b6b500000000, 0xebc6de1b00000000,
++ 0xd1a1349500000000, 0x40305c3b00000000, 0xb284941200000000,
++ 0x2315fcbc00000000, 0x56ed054100000000, 0xc77c6def00000000,
++ 0x35c8a5c600000000, 0xa459cd6800000000, 0x7d7b3f1700000000,
++ 0xecea57b900000000, 0x1e5e9f9000000000, 0x8fcff73e00000000,
++ 0xfa370ec300000000, 0x6ba6666d00000000, 0x9912ae4400000000,
++ 0x0883c6ea00000000, 0x32e42c6400000000, 0xa37544ca00000000,
++ 0x51c18ce300000000, 0xc050e44d00000000, 0xb5a81db000000000,
++ 0x2439751e00000000, 0xd68dbd3700000000, 0x471cd59900000000,
++ 0xe34518f100000000, 0x72d4705f00000000, 0x8060b87600000000,
++ 0x11f1d0d800000000, 0x6409292500000000, 0xf598418b00000000,
++ 0x072c89a200000000, 0x96bde10c00000000, 0xacda0b8200000000,
++ 0x3d4b632c00000000, 0xcfffab0500000000, 0x5e6ec3ab00000000,
++ 0x2b963a5600000000, 0xba0752f800000000, 0x48b39ad100000000,
++ 0xd922f27f00000000, 0xfaf67e2e00000000, 0x6b67168000000000,
++ 0x99d3dea900000000, 0x0842b60700000000, 0x7dba4ffa00000000,
++ 0xec2b275400000000, 0x1e9fef7d00000000, 0x8f0e87d300000000,
++ 0xb5696d5d00000000, 0x24f805f300000000, 0xd64ccdda00000000,
++ 0x47dda57400000000, 0x32255c8900000000, 0xa3b4342700000000,
++ 0x5100fc0e00000000, 0xc09194a000000000, 0x64c859c800000000,
++ 0xf559316600000000, 0x07edf94f00000000, 0x967c91e100000000,
++ 0xe384681c00000000, 0x721500b200000000, 0x80a1c89b00000000,
++ 0x1130a03500000000, 0x2b574abb00000000, 0xbac6221500000000,
++ 0x4872ea3c00000000, 0xd9e3829200000000, 0xac1b7b6f00000000,
++ 0x3d8a13c100000000, 0xcf3edbe800000000, 0x5eafb34600000000,
++ 0x878d413900000000, 0x161c299700000000, 0xe4a8e1be00000000,
++ 0x7539891000000000, 0x00c170ed00000000, 0x9150184300000000,
++ 0x63e4d06a00000000, 0xf275b8c400000000, 0xc812524a00000000,
++ 0x59833ae400000000, 0xab37f2cd00000000, 0x3aa69a6300000000,
++ 0x4f5e639e00000000, 0xdecf0b3000000000, 0x2c7bc31900000000,
++ 0xbdeaabb700000000, 0x19b366df00000000, 0x88220e7100000000,
++ 0x7a96c65800000000, 0xeb07aef600000000, 0x9eff570b00000000,
++ 0x0f6e3fa500000000, 0xfddaf78c00000000, 0x6c4b9f2200000000,
++ 0x562c75ac00000000, 0xc7bd1d0200000000, 0x3509d52b00000000,
++ 0xa498bd8500000000, 0xd160447800000000, 0x40f12cd600000000,
++ 0xb245e4ff00000000, 0x23d48c5100000000, 0xf4edfd5c00000000,
++ 0x657c95f200000000, 0x97c85ddb00000000, 0x0659357500000000,
++ 0x73a1cc8800000000, 0xe230a42600000000, 0x10846c0f00000000,
++ 0x811504a100000000, 0xbb72ee2f00000000, 0x2ae3868100000000,
++ 0xd8574ea800000000, 0x49c6260600000000, 0x3c3edffb00000000,
++ 0xadafb75500000000, 0x5f1b7f7c00000000, 0xce8a17d200000000,
++ 0x6ad3daba00000000, 0xfb42b21400000000, 0x09f67a3d00000000,
++ 0x9867129300000000, 0xed9feb6e00000000, 0x7c0e83c000000000,
++ 0x8eba4be900000000, 0x1f2b234700000000, 0x254cc9c900000000,
++ 0xb4dda16700000000, 0x4669694e00000000, 0xd7f801e000000000,
++ 0xa200f81d00000000, 0x339190b300000000, 0xc125589a00000000,
++ 0x50b4303400000000, 0x8996c24b00000000, 0x1807aae500000000,
++ 0xeab362cc00000000, 0x7b220a6200000000, 0x0edaf39f00000000,
++ 0x9f4b9b3100000000, 0x6dff531800000000, 0xfc6e3bb600000000,
++ 0xc609d13800000000, 0x5798b99600000000, 0xa52c71bf00000000,
++ 0x34bd191100000000, 0x4145e0ec00000000, 0xd0d4884200000000,
++ 0x2260406b00000000, 0xb3f128c500000000, 0x17a8e5ad00000000,
++ 0x86398d0300000000, 0x748d452a00000000, 0xe51c2d8400000000,
++ 0x90e4d47900000000, 0x0175bcd700000000, 0xf3c174fe00000000,
++ 0x62501c5000000000, 0x5837f6de00000000, 0xc9a69e7000000000,
++ 0x3b12565900000000, 0xaa833ef700000000, 0xdf7bc70a00000000,
++ 0x4eeaafa400000000, 0xbc5e678d00000000, 0x2dcf0f2300000000,
++ 0x0e1b837200000000, 0x9f8aebdc00000000, 0x6d3e23f500000000,
++ 0xfcaf4b5b00000000, 0x8957b2a600000000, 0x18c6da0800000000,
++ 0xea72122100000000, 0x7be37a8f00000000, 0x4184900100000000,
++ 0xd015f8af00000000, 0x22a1308600000000, 0xb330582800000000,
++ 0xc6c8a1d500000000, 0x5759c97b00000000, 0xa5ed015200000000,
++ 0x347c69fc00000000, 0x9025a49400000000, 0x01b4cc3a00000000,
++ 0xf300041300000000, 0x62916cbd00000000, 0x1769954000000000,
++ 0x86f8fdee00000000, 0x744c35c700000000, 0xe5dd5d6900000000,
++ 0xdfbab7e700000000, 0x4e2bdf4900000000, 0xbc9f176000000000,
++ 0x2d0e7fce00000000, 0x58f6863300000000, 0xc967ee9d00000000,
++ 0x3bd326b400000000, 0xaa424e1a00000000, 0x7360bc6500000000,
++ 0xe2f1d4cb00000000, 0x10451ce200000000, 0x81d4744c00000000,
++ 0xf42c8db100000000, 0x65bde51f00000000, 0x97092d3600000000,
++ 0x0698459800000000, 0x3cffaf1600000000, 0xad6ec7b800000000,
++ 0x5fda0f9100000000, 0xce4b673f00000000, 0xbbb39ec200000000,
++ 0x2a22f66c00000000, 0xd8963e4500000000, 0x490756eb00000000,
++ 0xed5e9b8300000000, 0x7ccff32d00000000, 0x8e7b3b0400000000,
++ 0x1fea53aa00000000, 0x6a12aa5700000000, 0xfb83c2f900000000,
++ 0x09370ad000000000, 0x98a6627e00000000, 0xa2c188f000000000,
++ 0x3350e05e00000000, 0xc1e4287700000000, 0x507540d900000000,
++ 0x258db92400000000, 0xb41cd18a00000000, 0x46a819a300000000,
++ 0xd739710d00000000}};
++
++#else /* W == 4 */
++
++local const z_crc_t FAR crc_braid_table[][256] = {
++ {0x00000000, 0xccaa009e, 0x4225077d, 0x8e8f07e3, 0x844a0efa,
++ 0x48e00e64, 0xc66f0987, 0x0ac50919, 0xd3e51bb5, 0x1f4f1b2b,
++ 0x91c01cc8, 0x5d6a1c56, 0x57af154f, 0x9b0515d1, 0x158a1232,
++ 0xd92012ac, 0x7cbb312b, 0xb01131b5, 0x3e9e3656, 0xf23436c8,
++ 0xf8f13fd1, 0x345b3f4f, 0xbad438ac, 0x767e3832, 0xaf5e2a9e,
++ 0x63f42a00, 0xed7b2de3, 0x21d12d7d, 0x2b142464, 0xe7be24fa,
++ 0x69312319, 0xa59b2387, 0xf9766256, 0x35dc62c8, 0xbb53652b,
++ 0x77f965b5, 0x7d3c6cac, 0xb1966c32, 0x3f196bd1, 0xf3b36b4f,
++ 0x2a9379e3, 0xe639797d, 0x68b67e9e, 0xa41c7e00, 0xaed97719,
++ 0x62737787, 0xecfc7064, 0x205670fa, 0x85cd537d, 0x496753e3,
++ 0xc7e85400, 0x0b42549e, 0x01875d87, 0xcd2d5d19, 0x43a25afa,
++ 0x8f085a64, 0x562848c8, 0x9a824856, 0x140d4fb5, 0xd8a74f2b,
++ 0xd2624632, 0x1ec846ac, 0x9047414f, 0x5ced41d1, 0x299dc2ed,
++ 0xe537c273, 0x6bb8c590, 0xa712c50e, 0xadd7cc17, 0x617dcc89,
++ 0xeff2cb6a, 0x2358cbf4, 0xfa78d958, 0x36d2d9c6, 0xb85dde25,
++ 0x74f7debb, 0x7e32d7a2, 0xb298d73c, 0x3c17d0df, 0xf0bdd041,
++ 0x5526f3c6, 0x998cf358, 0x1703f4bb, 0xdba9f425, 0xd16cfd3c,
++ 0x1dc6fda2, 0x9349fa41, 0x5fe3fadf, 0x86c3e873, 0x4a69e8ed,
++ 0xc4e6ef0e, 0x084cef90, 0x0289e689, 0xce23e617, 0x40ace1f4,
++ 0x8c06e16a, 0xd0eba0bb, 0x1c41a025, 0x92cea7c6, 0x5e64a758,
++ 0x54a1ae41, 0x980baedf, 0x1684a93c, 0xda2ea9a2, 0x030ebb0e,
++ 0xcfa4bb90, 0x412bbc73, 0x8d81bced, 0x8744b5f4, 0x4beeb56a,
++ 0xc561b289, 0x09cbb217, 0xac509190, 0x60fa910e, 0xee7596ed,
++ 0x22df9673, 0x281a9f6a, 0xe4b09ff4, 0x6a3f9817, 0xa6959889,
++ 0x7fb58a25, 0xb31f8abb, 0x3d908d58, 0xf13a8dc6, 0xfbff84df,
++ 0x37558441, 0xb9da83a2, 0x7570833c, 0x533b85da, 0x9f918544,
++ 0x111e82a7, 0xddb48239, 0xd7718b20, 0x1bdb8bbe, 0x95548c5d,
++ 0x59fe8cc3, 0x80de9e6f, 0x4c749ef1, 0xc2fb9912, 0x0e51998c,
++ 0x04949095, 0xc83e900b, 0x46b197e8, 0x8a1b9776, 0x2f80b4f1,
++ 0xe32ab46f, 0x6da5b38c, 0xa10fb312, 0xabcaba0b, 0x6760ba95,
++ 0xe9efbd76, 0x2545bde8, 0xfc65af44, 0x30cfafda, 0xbe40a839,
++ 0x72eaa8a7, 0x782fa1be, 0xb485a120, 0x3a0aa6c3, 0xf6a0a65d,
++ 0xaa4de78c, 0x66e7e712, 0xe868e0f1, 0x24c2e06f, 0x2e07e976,
++ 0xe2ade9e8, 0x6c22ee0b, 0xa088ee95, 0x79a8fc39, 0xb502fca7,
++ 0x3b8dfb44, 0xf727fbda, 0xfde2f2c3, 0x3148f25d, 0xbfc7f5be,
++ 0x736df520, 0xd6f6d6a7, 0x1a5cd639, 0x94d3d1da, 0x5879d144,
++ 0x52bcd85d, 0x9e16d8c3, 0x1099df20, 0xdc33dfbe, 0x0513cd12,
++ 0xc9b9cd8c, 0x4736ca6f, 0x8b9ccaf1, 0x8159c3e8, 0x4df3c376,
++ 0xc37cc495, 0x0fd6c40b, 0x7aa64737, 0xb60c47a9, 0x3883404a,
++ 0xf42940d4, 0xfeec49cd, 0x32464953, 0xbcc94eb0, 0x70634e2e,
++ 0xa9435c82, 0x65e95c1c, 0xeb665bff, 0x27cc5b61, 0x2d095278,
++ 0xe1a352e6, 0x6f2c5505, 0xa386559b, 0x061d761c, 0xcab77682,
++ 0x44387161, 0x889271ff, 0x825778e6, 0x4efd7878, 0xc0727f9b,
++ 0x0cd87f05, 0xd5f86da9, 0x19526d37, 0x97dd6ad4, 0x5b776a4a,
++ 0x51b26353, 0x9d1863cd, 0x1397642e, 0xdf3d64b0, 0x83d02561,
++ 0x4f7a25ff, 0xc1f5221c, 0x0d5f2282, 0x079a2b9b, 0xcb302b05,
++ 0x45bf2ce6, 0x89152c78, 0x50353ed4, 0x9c9f3e4a, 0x121039a9,
++ 0xdeba3937, 0xd47f302e, 0x18d530b0, 0x965a3753, 0x5af037cd,
++ 0xff6b144a, 0x33c114d4, 0xbd4e1337, 0x71e413a9, 0x7b211ab0,
++ 0xb78b1a2e, 0x39041dcd, 0xf5ae1d53, 0x2c8e0fff, 0xe0240f61,
++ 0x6eab0882, 0xa201081c, 0xa8c40105, 0x646e019b, 0xeae10678,
++ 0x264b06e6},
++ {0x00000000, 0xa6770bb4, 0x979f1129, 0x31e81a9d, 0xf44f2413,
++ 0x52382fa7, 0x63d0353a, 0xc5a73e8e, 0x33ef4e67, 0x959845d3,
++ 0xa4705f4e, 0x020754fa, 0xc7a06a74, 0x61d761c0, 0x503f7b5d,
++ 0xf64870e9, 0x67de9cce, 0xc1a9977a, 0xf0418de7, 0x56368653,
++ 0x9391b8dd, 0x35e6b369, 0x040ea9f4, 0xa279a240, 0x5431d2a9,
++ 0xf246d91d, 0xc3aec380, 0x65d9c834, 0xa07ef6ba, 0x0609fd0e,
++ 0x37e1e793, 0x9196ec27, 0xcfbd399c, 0x69ca3228, 0x582228b5,
++ 0xfe552301, 0x3bf21d8f, 0x9d85163b, 0xac6d0ca6, 0x0a1a0712,
++ 0xfc5277fb, 0x5a257c4f, 0x6bcd66d2, 0xcdba6d66, 0x081d53e8,
++ 0xae6a585c, 0x9f8242c1, 0x39f54975, 0xa863a552, 0x0e14aee6,
++ 0x3ffcb47b, 0x998bbfcf, 0x5c2c8141, 0xfa5b8af5, 0xcbb39068,
++ 0x6dc49bdc, 0x9b8ceb35, 0x3dfbe081, 0x0c13fa1c, 0xaa64f1a8,
++ 0x6fc3cf26, 0xc9b4c492, 0xf85cde0f, 0x5e2bd5bb, 0x440b7579,
++ 0xe27c7ecd, 0xd3946450, 0x75e36fe4, 0xb044516a, 0x16335ade,
++ 0x27db4043, 0x81ac4bf7, 0x77e43b1e, 0xd19330aa, 0xe07b2a37,
++ 0x460c2183, 0x83ab1f0d, 0x25dc14b9, 0x14340e24, 0xb2430590,
++ 0x23d5e9b7, 0x85a2e203, 0xb44af89e, 0x123df32a, 0xd79acda4,
++ 0x71edc610, 0x4005dc8d, 0xe672d739, 0x103aa7d0, 0xb64dac64,
++ 0x87a5b6f9, 0x21d2bd4d, 0xe47583c3, 0x42028877, 0x73ea92ea,
++ 0xd59d995e, 0x8bb64ce5, 0x2dc14751, 0x1c295dcc, 0xba5e5678,
++ 0x7ff968f6, 0xd98e6342, 0xe86679df, 0x4e11726b, 0xb8590282,
++ 0x1e2e0936, 0x2fc613ab, 0x89b1181f, 0x4c162691, 0xea612d25,
++ 0xdb8937b8, 0x7dfe3c0c, 0xec68d02b, 0x4a1fdb9f, 0x7bf7c102,
++ 0xdd80cab6, 0x1827f438, 0xbe50ff8c, 0x8fb8e511, 0x29cfeea5,
++ 0xdf879e4c, 0x79f095f8, 0x48188f65, 0xee6f84d1, 0x2bc8ba5f,
++ 0x8dbfb1eb, 0xbc57ab76, 0x1a20a0c2, 0x8816eaf2, 0x2e61e146,
++ 0x1f89fbdb, 0xb9fef06f, 0x7c59cee1, 0xda2ec555, 0xebc6dfc8,
++ 0x4db1d47c, 0xbbf9a495, 0x1d8eaf21, 0x2c66b5bc, 0x8a11be08,
++ 0x4fb68086, 0xe9c18b32, 0xd82991af, 0x7e5e9a1b, 0xefc8763c,
++ 0x49bf7d88, 0x78576715, 0xde206ca1, 0x1b87522f, 0xbdf0599b,
++ 0x8c184306, 0x2a6f48b2, 0xdc27385b, 0x7a5033ef, 0x4bb82972,
++ 0xedcf22c6, 0x28681c48, 0x8e1f17fc, 0xbff70d61, 0x198006d5,
++ 0x47abd36e, 0xe1dcd8da, 0xd034c247, 0x7643c9f3, 0xb3e4f77d,
++ 0x1593fcc9, 0x247be654, 0x820cede0, 0x74449d09, 0xd23396bd,
++ 0xe3db8c20, 0x45ac8794, 0x800bb91a, 0x267cb2ae, 0x1794a833,
++ 0xb1e3a387, 0x20754fa0, 0x86024414, 0xb7ea5e89, 0x119d553d,
++ 0xd43a6bb3, 0x724d6007, 0x43a57a9a, 0xe5d2712e, 0x139a01c7,
++ 0xb5ed0a73, 0x840510ee, 0x22721b5a, 0xe7d525d4, 0x41a22e60,
++ 0x704a34fd, 0xd63d3f49, 0xcc1d9f8b, 0x6a6a943f, 0x5b828ea2,
++ 0xfdf58516, 0x3852bb98, 0x9e25b02c, 0xafcdaab1, 0x09baa105,
++ 0xfff2d1ec, 0x5985da58, 0x686dc0c5, 0xce1acb71, 0x0bbdf5ff,
++ 0xadcafe4b, 0x9c22e4d6, 0x3a55ef62, 0xabc30345, 0x0db408f1,
++ 0x3c5c126c, 0x9a2b19d8, 0x5f8c2756, 0xf9fb2ce2, 0xc813367f,
++ 0x6e643dcb, 0x982c4d22, 0x3e5b4696, 0x0fb35c0b, 0xa9c457bf,
++ 0x6c636931, 0xca146285, 0xfbfc7818, 0x5d8b73ac, 0x03a0a617,
++ 0xa5d7ada3, 0x943fb73e, 0x3248bc8a, 0xf7ef8204, 0x519889b0,
++ 0x6070932d, 0xc6079899, 0x304fe870, 0x9638e3c4, 0xa7d0f959,
++ 0x01a7f2ed, 0xc400cc63, 0x6277c7d7, 0x539fdd4a, 0xf5e8d6fe,
++ 0x647e3ad9, 0xc209316d, 0xf3e12bf0, 0x55962044, 0x90311eca,
++ 0x3646157e, 0x07ae0fe3, 0xa1d90457, 0x579174be, 0xf1e67f0a,
++ 0xc00e6597, 0x66796e23, 0xa3de50ad, 0x05a95b19, 0x34414184,
++ 0x92364a30},
++ {0x00000000, 0xcb5cd3a5, 0x4dc8a10b, 0x869472ae, 0x9b914216,
++ 0x50cd91b3, 0xd659e31d, 0x1d0530b8, 0xec53826d, 0x270f51c8,
++ 0xa19b2366, 0x6ac7f0c3, 0x77c2c07b, 0xbc9e13de, 0x3a0a6170,
++ 0xf156b2d5, 0x03d6029b, 0xc88ad13e, 0x4e1ea390, 0x85427035,
++ 0x9847408d, 0x531b9328, 0xd58fe186, 0x1ed33223, 0xef8580f6,
++ 0x24d95353, 0xa24d21fd, 0x6911f258, 0x7414c2e0, 0xbf481145,
++ 0x39dc63eb, 0xf280b04e, 0x07ac0536, 0xccf0d693, 0x4a64a43d,
++ 0x81387798, 0x9c3d4720, 0x57619485, 0xd1f5e62b, 0x1aa9358e,
++ 0xebff875b, 0x20a354fe, 0xa6372650, 0x6d6bf5f5, 0x706ec54d,
++ 0xbb3216e8, 0x3da66446, 0xf6fab7e3, 0x047a07ad, 0xcf26d408,
++ 0x49b2a6a6, 0x82ee7503, 0x9feb45bb, 0x54b7961e, 0xd223e4b0,
++ 0x197f3715, 0xe82985c0, 0x23755665, 0xa5e124cb, 0x6ebdf76e,
++ 0x73b8c7d6, 0xb8e41473, 0x3e7066dd, 0xf52cb578, 0x0f580a6c,
++ 0xc404d9c9, 0x4290ab67, 0x89cc78c2, 0x94c9487a, 0x5f959bdf,
++ 0xd901e971, 0x125d3ad4, 0xe30b8801, 0x28575ba4, 0xaec3290a,
++ 0x659ffaaf, 0x789aca17, 0xb3c619b2, 0x35526b1c, 0xfe0eb8b9,
++ 0x0c8e08f7, 0xc7d2db52, 0x4146a9fc, 0x8a1a7a59, 0x971f4ae1,
++ 0x5c439944, 0xdad7ebea, 0x118b384f, 0xe0dd8a9a, 0x2b81593f,
++ 0xad152b91, 0x6649f834, 0x7b4cc88c, 0xb0101b29, 0x36846987,
++ 0xfdd8ba22, 0x08f40f5a, 0xc3a8dcff, 0x453cae51, 0x8e607df4,
++ 0x93654d4c, 0x58399ee9, 0xdeadec47, 0x15f13fe2, 0xe4a78d37,
++ 0x2ffb5e92, 0xa96f2c3c, 0x6233ff99, 0x7f36cf21, 0xb46a1c84,
++ 0x32fe6e2a, 0xf9a2bd8f, 0x0b220dc1, 0xc07ede64, 0x46eaacca,
++ 0x8db67f6f, 0x90b34fd7, 0x5bef9c72, 0xdd7beedc, 0x16273d79,
++ 0xe7718fac, 0x2c2d5c09, 0xaab92ea7, 0x61e5fd02, 0x7ce0cdba,
++ 0xb7bc1e1f, 0x31286cb1, 0xfa74bf14, 0x1eb014d8, 0xd5ecc77d,
++ 0x5378b5d3, 0x98246676, 0x852156ce, 0x4e7d856b, 0xc8e9f7c5,
++ 0x03b52460, 0xf2e396b5, 0x39bf4510, 0xbf2b37be, 0x7477e41b,
++ 0x6972d4a3, 0xa22e0706, 0x24ba75a8, 0xefe6a60d, 0x1d661643,
++ 0xd63ac5e6, 0x50aeb748, 0x9bf264ed, 0x86f75455, 0x4dab87f0,
++ 0xcb3ff55e, 0x006326fb, 0xf135942e, 0x3a69478b, 0xbcfd3525,
++ 0x77a1e680, 0x6aa4d638, 0xa1f8059d, 0x276c7733, 0xec30a496,
++ 0x191c11ee, 0xd240c24b, 0x54d4b0e5, 0x9f886340, 0x828d53f8,
++ 0x49d1805d, 0xcf45f2f3, 0x04192156, 0xf54f9383, 0x3e134026,
++ 0xb8873288, 0x73dbe12d, 0x6eded195, 0xa5820230, 0x2316709e,
++ 0xe84aa33b, 0x1aca1375, 0xd196c0d0, 0x5702b27e, 0x9c5e61db,
++ 0x815b5163, 0x4a0782c6, 0xcc93f068, 0x07cf23cd, 0xf6999118,
++ 0x3dc542bd, 0xbb513013, 0x700de3b6, 0x6d08d30e, 0xa65400ab,
++ 0x20c07205, 0xeb9ca1a0, 0x11e81eb4, 0xdab4cd11, 0x5c20bfbf,
++ 0x977c6c1a, 0x8a795ca2, 0x41258f07, 0xc7b1fda9, 0x0ced2e0c,
++ 0xfdbb9cd9, 0x36e74f7c, 0xb0733dd2, 0x7b2fee77, 0x662adecf,
++ 0xad760d6a, 0x2be27fc4, 0xe0beac61, 0x123e1c2f, 0xd962cf8a,
++ 0x5ff6bd24, 0x94aa6e81, 0x89af5e39, 0x42f38d9c, 0xc467ff32,
++ 0x0f3b2c97, 0xfe6d9e42, 0x35314de7, 0xb3a53f49, 0x78f9ecec,
++ 0x65fcdc54, 0xaea00ff1, 0x28347d5f, 0xe368aefa, 0x16441b82,
++ 0xdd18c827, 0x5b8cba89, 0x90d0692c, 0x8dd55994, 0x46898a31,
++ 0xc01df89f, 0x0b412b3a, 0xfa1799ef, 0x314b4a4a, 0xb7df38e4,
++ 0x7c83eb41, 0x6186dbf9, 0xaada085c, 0x2c4e7af2, 0xe712a957,
++ 0x15921919, 0xdececabc, 0x585ab812, 0x93066bb7, 0x8e035b0f,
++ 0x455f88aa, 0xc3cbfa04, 0x089729a1, 0xf9c19b74, 0x329d48d1,
++ 0xb4093a7f, 0x7f55e9da, 0x6250d962, 0xa90c0ac7, 0x2f987869,
++ 0xe4c4abcc},
++ {0x00000000, 0x3d6029b0, 0x7ac05360, 0x47a07ad0, 0xf580a6c0,
++ 0xc8e08f70, 0x8f40f5a0, 0xb220dc10, 0x30704bc1, 0x0d106271,
++ 0x4ab018a1, 0x77d03111, 0xc5f0ed01, 0xf890c4b1, 0xbf30be61,
++ 0x825097d1, 0x60e09782, 0x5d80be32, 0x1a20c4e2, 0x2740ed52,
++ 0x95603142, 0xa80018f2, 0xefa06222, 0xd2c04b92, 0x5090dc43,
++ 0x6df0f5f3, 0x2a508f23, 0x1730a693, 0xa5107a83, 0x98705333,
++ 0xdfd029e3, 0xe2b00053, 0xc1c12f04, 0xfca106b4, 0xbb017c64,
++ 0x866155d4, 0x344189c4, 0x0921a074, 0x4e81daa4, 0x73e1f314,
++ 0xf1b164c5, 0xccd14d75, 0x8b7137a5, 0xb6111e15, 0x0431c205,
++ 0x3951ebb5, 0x7ef19165, 0x4391b8d5, 0xa121b886, 0x9c419136,
++ 0xdbe1ebe6, 0xe681c256, 0x54a11e46, 0x69c137f6, 0x2e614d26,
++ 0x13016496, 0x9151f347, 0xac31daf7, 0xeb91a027, 0xd6f18997,
++ 0x64d15587, 0x59b17c37, 0x1e1106e7, 0x23712f57, 0x58f35849,
++ 0x659371f9, 0x22330b29, 0x1f532299, 0xad73fe89, 0x9013d739,
++ 0xd7b3ade9, 0xead38459, 0x68831388, 0x55e33a38, 0x124340e8,
++ 0x2f236958, 0x9d03b548, 0xa0639cf8, 0xe7c3e628, 0xdaa3cf98,
++ 0x3813cfcb, 0x0573e67b, 0x42d39cab, 0x7fb3b51b, 0xcd93690b,
++ 0xf0f340bb, 0xb7533a6b, 0x8a3313db, 0x0863840a, 0x3503adba,
++ 0x72a3d76a, 0x4fc3feda, 0xfde322ca, 0xc0830b7a, 0x872371aa,
++ 0xba43581a, 0x9932774d, 0xa4525efd, 0xe3f2242d, 0xde920d9d,
++ 0x6cb2d18d, 0x51d2f83d, 0x167282ed, 0x2b12ab5d, 0xa9423c8c,
++ 0x9422153c, 0xd3826fec, 0xeee2465c, 0x5cc29a4c, 0x61a2b3fc,
++ 0x2602c92c, 0x1b62e09c, 0xf9d2e0cf, 0xc4b2c97f, 0x8312b3af,
++ 0xbe729a1f, 0x0c52460f, 0x31326fbf, 0x7692156f, 0x4bf23cdf,
++ 0xc9a2ab0e, 0xf4c282be, 0xb362f86e, 0x8e02d1de, 0x3c220dce,
++ 0x0142247e, 0x46e25eae, 0x7b82771e, 0xb1e6b092, 0x8c869922,
++ 0xcb26e3f2, 0xf646ca42, 0x44661652, 0x79063fe2, 0x3ea64532,
++ 0x03c66c82, 0x8196fb53, 0xbcf6d2e3, 0xfb56a833, 0xc6368183,
++ 0x74165d93, 0x49767423, 0x0ed60ef3, 0x33b62743, 0xd1062710,
++ 0xec660ea0, 0xabc67470, 0x96a65dc0, 0x248681d0, 0x19e6a860,
++ 0x5e46d2b0, 0x6326fb00, 0xe1766cd1, 0xdc164561, 0x9bb63fb1,
++ 0xa6d61601, 0x14f6ca11, 0x2996e3a1, 0x6e369971, 0x5356b0c1,
++ 0x70279f96, 0x4d47b626, 0x0ae7ccf6, 0x3787e546, 0x85a73956,
++ 0xb8c710e6, 0xff676a36, 0xc2074386, 0x4057d457, 0x7d37fde7,
++ 0x3a978737, 0x07f7ae87, 0xb5d77297, 0x88b75b27, 0xcf1721f7,
++ 0xf2770847, 0x10c70814, 0x2da721a4, 0x6a075b74, 0x576772c4,
++ 0xe547aed4, 0xd8278764, 0x9f87fdb4, 0xa2e7d404, 0x20b743d5,
++ 0x1dd76a65, 0x5a7710b5, 0x67173905, 0xd537e515, 0xe857cca5,
++ 0xaff7b675, 0x92979fc5, 0xe915e8db, 0xd475c16b, 0x93d5bbbb,
++ 0xaeb5920b, 0x1c954e1b, 0x21f567ab, 0x66551d7b, 0x5b3534cb,
++ 0xd965a31a, 0xe4058aaa, 0xa3a5f07a, 0x9ec5d9ca, 0x2ce505da,
++ 0x11852c6a, 0x562556ba, 0x6b457f0a, 0x89f57f59, 0xb49556e9,
++ 0xf3352c39, 0xce550589, 0x7c75d999, 0x4115f029, 0x06b58af9,
++ 0x3bd5a349, 0xb9853498, 0x84e51d28, 0xc34567f8, 0xfe254e48,
++ 0x4c059258, 0x7165bbe8, 0x36c5c138, 0x0ba5e888, 0x28d4c7df,
++ 0x15b4ee6f, 0x521494bf, 0x6f74bd0f, 0xdd54611f, 0xe03448af,
++ 0xa794327f, 0x9af41bcf, 0x18a48c1e, 0x25c4a5ae, 0x6264df7e,
++ 0x5f04f6ce, 0xed242ade, 0xd044036e, 0x97e479be, 0xaa84500e,
++ 0x4834505d, 0x755479ed, 0x32f4033d, 0x0f942a8d, 0xbdb4f69d,
++ 0x80d4df2d, 0xc774a5fd, 0xfa148c4d, 0x78441b9c, 0x4524322c,
++ 0x028448fc, 0x3fe4614c, 0x8dc4bd5c, 0xb0a494ec, 0xf704ee3c,
++ 0xca64c78c}};
++
++local const z_word_t FAR crc_braid_big_table[][256] = {
++ {0x00000000, 0xb029603d, 0x6053c07a, 0xd07aa047, 0xc0a680f5,
++ 0x708fe0c8, 0xa0f5408f, 0x10dc20b2, 0xc14b7030, 0x7162100d,
++ 0xa118b04a, 0x1131d077, 0x01edf0c5, 0xb1c490f8, 0x61be30bf,
++ 0xd1975082, 0x8297e060, 0x32be805d, 0xe2c4201a, 0x52ed4027,
++ 0x42316095, 0xf21800a8, 0x2262a0ef, 0x924bc0d2, 0x43dc9050,
++ 0xf3f5f06d, 0x238f502a, 0x93a63017, 0x837a10a5, 0x33537098,
++ 0xe329d0df, 0x5300b0e2, 0x042fc1c1, 0xb406a1fc, 0x647c01bb,
++ 0xd4556186, 0xc4894134, 0x74a02109, 0xa4da814e, 0x14f3e173,
++ 0xc564b1f1, 0x754dd1cc, 0xa537718b, 0x151e11b6, 0x05c23104,
++ 0xb5eb5139, 0x6591f17e, 0xd5b89143, 0x86b821a1, 0x3691419c,
++ 0xe6ebe1db, 0x56c281e6, 0x461ea154, 0xf637c169, 0x264d612e,
++ 0x96640113, 0x47f35191, 0xf7da31ac, 0x27a091eb, 0x9789f1d6,
++ 0x8755d164, 0x377cb159, 0xe706111e, 0x572f7123, 0x4958f358,
++ 0xf9719365, 0x290b3322, 0x9922531f, 0x89fe73ad, 0x39d71390,
++ 0xe9adb3d7, 0x5984d3ea, 0x88138368, 0x383ae355, 0xe8404312,
++ 0x5869232f, 0x48b5039d, 0xf89c63a0, 0x28e6c3e7, 0x98cfa3da,
++ 0xcbcf1338, 0x7be67305, 0xab9cd342, 0x1bb5b37f, 0x0b6993cd,
++ 0xbb40f3f0, 0x6b3a53b7, 0xdb13338a, 0x0a846308, 0xbaad0335,
++ 0x6ad7a372, 0xdafec34f, 0xca22e3fd, 0x7a0b83c0, 0xaa712387,
++ 0x1a5843ba, 0x4d773299, 0xfd5e52a4, 0x2d24f2e3, 0x9d0d92de,
++ 0x8dd1b26c, 0x3df8d251, 0xed827216, 0x5dab122b, 0x8c3c42a9,
++ 0x3c152294, 0xec6f82d3, 0x5c46e2ee, 0x4c9ac25c, 0xfcb3a261,
++ 0x2cc90226, 0x9ce0621b, 0xcfe0d2f9, 0x7fc9b2c4, 0xafb31283,
++ 0x1f9a72be, 0x0f46520c, 0xbf6f3231, 0x6f159276, 0xdf3cf24b,
++ 0x0eaba2c9, 0xbe82c2f4, 0x6ef862b3, 0xded1028e, 0xce0d223c,
++ 0x7e244201, 0xae5ee246, 0x1e77827b, 0x92b0e6b1, 0x2299868c,
++ 0xf2e326cb, 0x42ca46f6, 0x52166644, 0xe23f0679, 0x3245a63e,
++ 0x826cc603, 0x53fb9681, 0xe3d2f6bc, 0x33a856fb, 0x838136c6,
++ 0x935d1674, 0x23747649, 0xf30ed60e, 0x4327b633, 0x102706d1,
++ 0xa00e66ec, 0x7074c6ab, 0xc05da696, 0xd0818624, 0x60a8e619,
++ 0xb0d2465e, 0x00fb2663, 0xd16c76e1, 0x614516dc, 0xb13fb69b,
++ 0x0116d6a6, 0x11caf614, 0xa1e39629, 0x7199366e, 0xc1b05653,
++ 0x969f2770, 0x26b6474d, 0xf6cce70a, 0x46e58737, 0x5639a785,
++ 0xe610c7b8, 0x366a67ff, 0x864307c2, 0x57d45740, 0xe7fd377d,
++ 0x3787973a, 0x87aef707, 0x9772d7b5, 0x275bb788, 0xf72117cf,
++ 0x470877f2, 0x1408c710, 0xa421a72d, 0x745b076a, 0xc4726757,
++ 0xd4ae47e5, 0x648727d8, 0xb4fd879f, 0x04d4e7a2, 0xd543b720,
++ 0x656ad71d, 0xb510775a, 0x05391767, 0x15e537d5, 0xa5cc57e8,
++ 0x75b6f7af, 0xc59f9792, 0xdbe815e9, 0x6bc175d4, 0xbbbbd593,
++ 0x0b92b5ae, 0x1b4e951c, 0xab67f521, 0x7b1d5566, 0xcb34355b,
++ 0x1aa365d9, 0xaa8a05e4, 0x7af0a5a3, 0xcad9c59e, 0xda05e52c,
++ 0x6a2c8511, 0xba562556, 0x0a7f456b, 0x597ff589, 0xe95695b4,
++ 0x392c35f3, 0x890555ce, 0x99d9757c, 0x29f01541, 0xf98ab506,
++ 0x49a3d53b, 0x983485b9, 0x281de584, 0xf86745c3, 0x484e25fe,
++ 0x5892054c, 0xe8bb6571, 0x38c1c536, 0x88e8a50b, 0xdfc7d428,
++ 0x6feeb415, 0xbf941452, 0x0fbd746f, 0x1f6154dd, 0xaf4834e0,
++ 0x7f3294a7, 0xcf1bf49a, 0x1e8ca418, 0xaea5c425, 0x7edf6462,
++ 0xcef6045f, 0xde2a24ed, 0x6e0344d0, 0xbe79e497, 0x0e5084aa,
++ 0x5d503448, 0xed795475, 0x3d03f432, 0x8d2a940f, 0x9df6b4bd,
++ 0x2ddfd480, 0xfda574c7, 0x4d8c14fa, 0x9c1b4478, 0x2c322445,
++ 0xfc488402, 0x4c61e43f, 0x5cbdc48d, 0xec94a4b0, 0x3cee04f7,
++ 0x8cc764ca},
++ {0x00000000, 0xa5d35ccb, 0x0ba1c84d, 0xae729486, 0x1642919b,
++ 0xb391cd50, 0x1de359d6, 0xb830051d, 0x6d8253ec, 0xc8510f27,
++ 0x66239ba1, 0xc3f0c76a, 0x7bc0c277, 0xde139ebc, 0x70610a3a,
++ 0xd5b256f1, 0x9b02d603, 0x3ed18ac8, 0x90a31e4e, 0x35704285,
++ 0x8d404798, 0x28931b53, 0x86e18fd5, 0x2332d31e, 0xf68085ef,
++ 0x5353d924, 0xfd214da2, 0x58f21169, 0xe0c21474, 0x451148bf,
++ 0xeb63dc39, 0x4eb080f2, 0x3605ac07, 0x93d6f0cc, 0x3da4644a,
++ 0x98773881, 0x20473d9c, 0x85946157, 0x2be6f5d1, 0x8e35a91a,
++ 0x5b87ffeb, 0xfe54a320, 0x502637a6, 0xf5f56b6d, 0x4dc56e70,
++ 0xe81632bb, 0x4664a63d, 0xe3b7faf6, 0xad077a04, 0x08d426cf,
++ 0xa6a6b249, 0x0375ee82, 0xbb45eb9f, 0x1e96b754, 0xb0e423d2,
++ 0x15377f19, 0xc08529e8, 0x65567523, 0xcb24e1a5, 0x6ef7bd6e,
++ 0xd6c7b873, 0x7314e4b8, 0xdd66703e, 0x78b52cf5, 0x6c0a580f,
++ 0xc9d904c4, 0x67ab9042, 0xc278cc89, 0x7a48c994, 0xdf9b955f,
++ 0x71e901d9, 0xd43a5d12, 0x01880be3, 0xa45b5728, 0x0a29c3ae,
++ 0xaffa9f65, 0x17ca9a78, 0xb219c6b3, 0x1c6b5235, 0xb9b80efe,
++ 0xf7088e0c, 0x52dbd2c7, 0xfca94641, 0x597a1a8a, 0xe14a1f97,
++ 0x4499435c, 0xeaebd7da, 0x4f388b11, 0x9a8adde0, 0x3f59812b,
++ 0x912b15ad, 0x34f84966, 0x8cc84c7b, 0x291b10b0, 0x87698436,
++ 0x22bad8fd, 0x5a0ff408, 0xffdca8c3, 0x51ae3c45, 0xf47d608e,
++ 0x4c4d6593, 0xe99e3958, 0x47ecadde, 0xe23ff115, 0x378da7e4,
++ 0x925efb2f, 0x3c2c6fa9, 0x99ff3362, 0x21cf367f, 0x841c6ab4,
++ 0x2a6efe32, 0x8fbda2f9, 0xc10d220b, 0x64de7ec0, 0xcaacea46,
++ 0x6f7fb68d, 0xd74fb390, 0x729cef5b, 0xdcee7bdd, 0x793d2716,
++ 0xac8f71e7, 0x095c2d2c, 0xa72eb9aa, 0x02fde561, 0xbacde07c,
++ 0x1f1ebcb7, 0xb16c2831, 0x14bf74fa, 0xd814b01e, 0x7dc7ecd5,
++ 0xd3b57853, 0x76662498, 0xce562185, 0x6b857d4e, 0xc5f7e9c8,
++ 0x6024b503, 0xb596e3f2, 0x1045bf39, 0xbe372bbf, 0x1be47774,
++ 0xa3d47269, 0x06072ea2, 0xa875ba24, 0x0da6e6ef, 0x4316661d,
++ 0xe6c53ad6, 0x48b7ae50, 0xed64f29b, 0x5554f786, 0xf087ab4d,
++ 0x5ef53fcb, 0xfb266300, 0x2e9435f1, 0x8b47693a, 0x2535fdbc,
++ 0x80e6a177, 0x38d6a46a, 0x9d05f8a1, 0x33776c27, 0x96a430ec,
++ 0xee111c19, 0x4bc240d2, 0xe5b0d454, 0x4063889f, 0xf8538d82,
++ 0x5d80d149, 0xf3f245cf, 0x56211904, 0x83934ff5, 0x2640133e,
++ 0x883287b8, 0x2de1db73, 0x95d1de6e, 0x300282a5, 0x9e701623,
++ 0x3ba34ae8, 0x7513ca1a, 0xd0c096d1, 0x7eb20257, 0xdb615e9c,
++ 0x63515b81, 0xc682074a, 0x68f093cc, 0xcd23cf07, 0x189199f6,
++ 0xbd42c53d, 0x133051bb, 0xb6e30d70, 0x0ed3086d, 0xab0054a6,
++ 0x0572c020, 0xa0a19ceb, 0xb41ee811, 0x11cdb4da, 0xbfbf205c,
++ 0x1a6c7c97, 0xa25c798a, 0x078f2541, 0xa9fdb1c7, 0x0c2eed0c,
++ 0xd99cbbfd, 0x7c4fe736, 0xd23d73b0, 0x77ee2f7b, 0xcfde2a66,
++ 0x6a0d76ad, 0xc47fe22b, 0x61acbee0, 0x2f1c3e12, 0x8acf62d9,
++ 0x24bdf65f, 0x816eaa94, 0x395eaf89, 0x9c8df342, 0x32ff67c4,
++ 0x972c3b0f, 0x429e6dfe, 0xe74d3135, 0x493fa5b3, 0xececf978,
++ 0x54dcfc65, 0xf10fa0ae, 0x5f7d3428, 0xfaae68e3, 0x821b4416,
++ 0x27c818dd, 0x89ba8c5b, 0x2c69d090, 0x9459d58d, 0x318a8946,
++ 0x9ff81dc0, 0x3a2b410b, 0xef9917fa, 0x4a4a4b31, 0xe438dfb7,
++ 0x41eb837c, 0xf9db8661, 0x5c08daaa, 0xf27a4e2c, 0x57a912e7,
++ 0x19199215, 0xbccacede, 0x12b85a58, 0xb76b0693, 0x0f5b038e,
++ 0xaa885f45, 0x04facbc3, 0xa1299708, 0x749bc1f9, 0xd1489d32,
++ 0x7f3a09b4, 0xdae9557f, 0x62d95062, 0xc70a0ca9, 0x6978982f,
++ 0xccabc4e4},
++ {0x00000000, 0xb40b77a6, 0x29119f97, 0x9d1ae831, 0x13244ff4,
++ 0xa72f3852, 0x3a35d063, 0x8e3ea7c5, 0x674eef33, 0xd3459895,
++ 0x4e5f70a4, 0xfa540702, 0x746aa0c7, 0xc061d761, 0x5d7b3f50,
++ 0xe97048f6, 0xce9cde67, 0x7a97a9c1, 0xe78d41f0, 0x53863656,
++ 0xddb89193, 0x69b3e635, 0xf4a90e04, 0x40a279a2, 0xa9d23154,
++ 0x1dd946f2, 0x80c3aec3, 0x34c8d965, 0xbaf67ea0, 0x0efd0906,
++ 0x93e7e137, 0x27ec9691, 0x9c39bdcf, 0x2832ca69, 0xb5282258,
++ 0x012355fe, 0x8f1df23b, 0x3b16859d, 0xa60c6dac, 0x12071a0a,
++ 0xfb7752fc, 0x4f7c255a, 0xd266cd6b, 0x666dbacd, 0xe8531d08,
++ 0x5c586aae, 0xc142829f, 0x7549f539, 0x52a563a8, 0xe6ae140e,
++ 0x7bb4fc3f, 0xcfbf8b99, 0x41812c5c, 0xf58a5bfa, 0x6890b3cb,
++ 0xdc9bc46d, 0x35eb8c9b, 0x81e0fb3d, 0x1cfa130c, 0xa8f164aa,
++ 0x26cfc36f, 0x92c4b4c9, 0x0fde5cf8, 0xbbd52b5e, 0x79750b44,
++ 0xcd7e7ce2, 0x506494d3, 0xe46fe375, 0x6a5144b0, 0xde5a3316,
++ 0x4340db27, 0xf74bac81, 0x1e3be477, 0xaa3093d1, 0x372a7be0,
++ 0x83210c46, 0x0d1fab83, 0xb914dc25, 0x240e3414, 0x900543b2,
++ 0xb7e9d523, 0x03e2a285, 0x9ef84ab4, 0x2af33d12, 0xa4cd9ad7,
++ 0x10c6ed71, 0x8ddc0540, 0x39d772e6, 0xd0a73a10, 0x64ac4db6,
++ 0xf9b6a587, 0x4dbdd221, 0xc38375e4, 0x77880242, 0xea92ea73,
++ 0x5e999dd5, 0xe54cb68b, 0x5147c12d, 0xcc5d291c, 0x78565eba,
++ 0xf668f97f, 0x42638ed9, 0xdf7966e8, 0x6b72114e, 0x820259b8,
++ 0x36092e1e, 0xab13c62f, 0x1f18b189, 0x9126164c, 0x252d61ea,
++ 0xb83789db, 0x0c3cfe7d, 0x2bd068ec, 0x9fdb1f4a, 0x02c1f77b,
++ 0xb6ca80dd, 0x38f42718, 0x8cff50be, 0x11e5b88f, 0xa5eecf29,
++ 0x4c9e87df, 0xf895f079, 0x658f1848, 0xd1846fee, 0x5fbac82b,
++ 0xebb1bf8d, 0x76ab57bc, 0xc2a0201a, 0xf2ea1688, 0x46e1612e,
++ 0xdbfb891f, 0x6ff0feb9, 0xe1ce597c, 0x55c52eda, 0xc8dfc6eb,
++ 0x7cd4b14d, 0x95a4f9bb, 0x21af8e1d, 0xbcb5662c, 0x08be118a,
++ 0x8680b64f, 0x328bc1e9, 0xaf9129d8, 0x1b9a5e7e, 0x3c76c8ef,
++ 0x887dbf49, 0x15675778, 0xa16c20de, 0x2f52871b, 0x9b59f0bd,
++ 0x0643188c, 0xb2486f2a, 0x5b3827dc, 0xef33507a, 0x7229b84b,
++ 0xc622cfed, 0x481c6828, 0xfc171f8e, 0x610df7bf, 0xd5068019,
++ 0x6ed3ab47, 0xdad8dce1, 0x47c234d0, 0xf3c94376, 0x7df7e4b3,
++ 0xc9fc9315, 0x54e67b24, 0xe0ed0c82, 0x099d4474, 0xbd9633d2,
++ 0x208cdbe3, 0x9487ac45, 0x1ab90b80, 0xaeb27c26, 0x33a89417,
++ 0x87a3e3b1, 0xa04f7520, 0x14440286, 0x895eeab7, 0x3d559d11,
++ 0xb36b3ad4, 0x07604d72, 0x9a7aa543, 0x2e71d2e5, 0xc7019a13,
++ 0x730aedb5, 0xee100584, 0x5a1b7222, 0xd425d5e7, 0x602ea241,
++ 0xfd344a70, 0x493f3dd6, 0x8b9f1dcc, 0x3f946a6a, 0xa28e825b,
++ 0x1685f5fd, 0x98bb5238, 0x2cb0259e, 0xb1aacdaf, 0x05a1ba09,
++ 0xecd1f2ff, 0x58da8559, 0xc5c06d68, 0x71cb1ace, 0xfff5bd0b,
++ 0x4bfecaad, 0xd6e4229c, 0x62ef553a, 0x4503c3ab, 0xf108b40d,
++ 0x6c125c3c, 0xd8192b9a, 0x56278c5f, 0xe22cfbf9, 0x7f3613c8,
++ 0xcb3d646e, 0x224d2c98, 0x96465b3e, 0x0b5cb30f, 0xbf57c4a9,
++ 0x3169636c, 0x856214ca, 0x1878fcfb, 0xac738b5d, 0x17a6a003,
++ 0xa3add7a5, 0x3eb73f94, 0x8abc4832, 0x0482eff7, 0xb0899851,
++ 0x2d937060, 0x999807c6, 0x70e84f30, 0xc4e33896, 0x59f9d0a7,
++ 0xedf2a701, 0x63cc00c4, 0xd7c77762, 0x4add9f53, 0xfed6e8f5,
++ 0xd93a7e64, 0x6d3109c2, 0xf02be1f3, 0x44209655, 0xca1e3190,
++ 0x7e154636, 0xe30fae07, 0x5704d9a1, 0xbe749157, 0x0a7fe6f1,
++ 0x97650ec0, 0x236e7966, 0xad50dea3, 0x195ba905, 0x84414134,
++ 0x304a3692},
++ {0x00000000, 0x9e00aacc, 0x7d072542, 0xe3078f8e, 0xfa0e4a84,
++ 0x640ee048, 0x87096fc6, 0x1909c50a, 0xb51be5d3, 0x2b1b4f1f,
++ 0xc81cc091, 0x561c6a5d, 0x4f15af57, 0xd115059b, 0x32128a15,
++ 0xac1220d9, 0x2b31bb7c, 0xb53111b0, 0x56369e3e, 0xc83634f2,
++ 0xd13ff1f8, 0x4f3f5b34, 0xac38d4ba, 0x32387e76, 0x9e2a5eaf,
++ 0x002af463, 0xe32d7bed, 0x7d2dd121, 0x6424142b, 0xfa24bee7,
++ 0x19233169, 0x87239ba5, 0x566276f9, 0xc862dc35, 0x2b6553bb,
++ 0xb565f977, 0xac6c3c7d, 0x326c96b1, 0xd16b193f, 0x4f6bb3f3,
++ 0xe379932a, 0x7d7939e6, 0x9e7eb668, 0x007e1ca4, 0x1977d9ae,
++ 0x87777362, 0x6470fcec, 0xfa705620, 0x7d53cd85, 0xe3536749,
++ 0x0054e8c7, 0x9e54420b, 0x875d8701, 0x195d2dcd, 0xfa5aa243,
++ 0x645a088f, 0xc8482856, 0x5648829a, 0xb54f0d14, 0x2b4fa7d8,
++ 0x324662d2, 0xac46c81e, 0x4f414790, 0xd141ed5c, 0xedc29d29,
++ 0x73c237e5, 0x90c5b86b, 0x0ec512a7, 0x17ccd7ad, 0x89cc7d61,
++ 0x6acbf2ef, 0xf4cb5823, 0x58d978fa, 0xc6d9d236, 0x25de5db8,
++ 0xbbdef774, 0xa2d7327e, 0x3cd798b2, 0xdfd0173c, 0x41d0bdf0,
++ 0xc6f32655, 0x58f38c99, 0xbbf40317, 0x25f4a9db, 0x3cfd6cd1,
++ 0xa2fdc61d, 0x41fa4993, 0xdffae35f, 0x73e8c386, 0xede8694a,
++ 0x0eefe6c4, 0x90ef4c08, 0x89e68902, 0x17e623ce, 0xf4e1ac40,
++ 0x6ae1068c, 0xbba0ebd0, 0x25a0411c, 0xc6a7ce92, 0x58a7645e,
++ 0x41aea154, 0xdfae0b98, 0x3ca98416, 0xa2a92eda, 0x0ebb0e03,
++ 0x90bba4cf, 0x73bc2b41, 0xedbc818d, 0xf4b54487, 0x6ab5ee4b,
++ 0x89b261c5, 0x17b2cb09, 0x909150ac, 0x0e91fa60, 0xed9675ee,
++ 0x7396df22, 0x6a9f1a28, 0xf49fb0e4, 0x17983f6a, 0x899895a6,
++ 0x258ab57f, 0xbb8a1fb3, 0x588d903d, 0xc68d3af1, 0xdf84fffb,
++ 0x41845537, 0xa283dab9, 0x3c837075, 0xda853b53, 0x4485919f,
++ 0xa7821e11, 0x3982b4dd, 0x208b71d7, 0xbe8bdb1b, 0x5d8c5495,
++ 0xc38cfe59, 0x6f9ede80, 0xf19e744c, 0x1299fbc2, 0x8c99510e,
++ 0x95909404, 0x0b903ec8, 0xe897b146, 0x76971b8a, 0xf1b4802f,
++ 0x6fb42ae3, 0x8cb3a56d, 0x12b30fa1, 0x0bbacaab, 0x95ba6067,
++ 0x76bdefe9, 0xe8bd4525, 0x44af65fc, 0xdaafcf30, 0x39a840be,
++ 0xa7a8ea72, 0xbea12f78, 0x20a185b4, 0xc3a60a3a, 0x5da6a0f6,
++ 0x8ce74daa, 0x12e7e766, 0xf1e068e8, 0x6fe0c224, 0x76e9072e,
++ 0xe8e9ade2, 0x0bee226c, 0x95ee88a0, 0x39fca879, 0xa7fc02b5,
++ 0x44fb8d3b, 0xdafb27f7, 0xc3f2e2fd, 0x5df24831, 0xbef5c7bf,
++ 0x20f56d73, 0xa7d6f6d6, 0x39d65c1a, 0xdad1d394, 0x44d17958,
++ 0x5dd8bc52, 0xc3d8169e, 0x20df9910, 0xbedf33dc, 0x12cd1305,
++ 0x8ccdb9c9, 0x6fca3647, 0xf1ca9c8b, 0xe8c35981, 0x76c3f34d,
++ 0x95c47cc3, 0x0bc4d60f, 0x3747a67a, 0xa9470cb6, 0x4a408338,
++ 0xd44029f4, 0xcd49ecfe, 0x53494632, 0xb04ec9bc, 0x2e4e6370,
++ 0x825c43a9, 0x1c5ce965, 0xff5b66eb, 0x615bcc27, 0x7852092d,
++ 0xe652a3e1, 0x05552c6f, 0x9b5586a3, 0x1c761d06, 0x8276b7ca,
++ 0x61713844, 0xff719288, 0xe6785782, 0x7878fd4e, 0x9b7f72c0,
++ 0x057fd80c, 0xa96df8d5, 0x376d5219, 0xd46add97, 0x4a6a775b,
++ 0x5363b251, 0xcd63189d, 0x2e649713, 0xb0643ddf, 0x6125d083,
++ 0xff257a4f, 0x1c22f5c1, 0x82225f0d, 0x9b2b9a07, 0x052b30cb,
++ 0xe62cbf45, 0x782c1589, 0xd43e3550, 0x4a3e9f9c, 0xa9391012,
++ 0x3739bade, 0x2e307fd4, 0xb030d518, 0x53375a96, 0xcd37f05a,
++ 0x4a146bff, 0xd414c133, 0x37134ebd, 0xa913e471, 0xb01a217b,
++ 0x2e1a8bb7, 0xcd1d0439, 0x531daef5, 0xff0f8e2c, 0x610f24e0,
++ 0x8208ab6e, 0x1c0801a2, 0x0501c4a8, 0x9b016e64, 0x7806e1ea,
++ 0xe6064b26}};
++
+ #endif
+- }
+-};
++
++#endif
++
++#if N == 3
++
++#if W == 8
++
++local const z_crc_t FAR crc_braid_table[][256] = {
++ {0x00000000, 0x81256527, 0xd93bcc0f, 0x581ea928, 0x69069e5f,
++ 0xe823fb78, 0xb03d5250, 0x31183777, 0xd20d3cbe, 0x53285999,
++ 0x0b36f0b1, 0x8a139596, 0xbb0ba2e1, 0x3a2ec7c6, 0x62306eee,
++ 0xe3150bc9, 0x7f6b7f3d, 0xfe4e1a1a, 0xa650b332, 0x2775d615,
++ 0x166de162, 0x97488445, 0xcf562d6d, 0x4e73484a, 0xad664383,
++ 0x2c4326a4, 0x745d8f8c, 0xf578eaab, 0xc460dddc, 0x4545b8fb,
++ 0x1d5b11d3, 0x9c7e74f4, 0xfed6fe7a, 0x7ff39b5d, 0x27ed3275,
++ 0xa6c85752, 0x97d06025, 0x16f50502, 0x4eebac2a, 0xcfcec90d,
++ 0x2cdbc2c4, 0xadfea7e3, 0xf5e00ecb, 0x74c56bec, 0x45dd5c9b,
++ 0xc4f839bc, 0x9ce69094, 0x1dc3f5b3, 0x81bd8147, 0x0098e460,
++ 0x58864d48, 0xd9a3286f, 0xe8bb1f18, 0x699e7a3f, 0x3180d317,
++ 0xb0a5b630, 0x53b0bdf9, 0xd295d8de, 0x8a8b71f6, 0x0bae14d1,
++ 0x3ab623a6, 0xbb934681, 0xe38defa9, 0x62a88a8e, 0x26dcfab5,
++ 0xa7f99f92, 0xffe736ba, 0x7ec2539d, 0x4fda64ea, 0xceff01cd,
++ 0x96e1a8e5, 0x17c4cdc2, 0xf4d1c60b, 0x75f4a32c, 0x2dea0a04,
++ 0xaccf6f23, 0x9dd75854, 0x1cf23d73, 0x44ec945b, 0xc5c9f17c,
++ 0x59b78588, 0xd892e0af, 0x808c4987, 0x01a92ca0, 0x30b11bd7,
++ 0xb1947ef0, 0xe98ad7d8, 0x68afb2ff, 0x8bbab936, 0x0a9fdc11,
++ 0x52817539, 0xd3a4101e, 0xe2bc2769, 0x6399424e, 0x3b87eb66,
++ 0xbaa28e41, 0xd80a04cf, 0x592f61e8, 0x0131c8c0, 0x8014ade7,
++ 0xb10c9a90, 0x3029ffb7, 0x6837569f, 0xe91233b8, 0x0a073871,
++ 0x8b225d56, 0xd33cf47e, 0x52199159, 0x6301a62e, 0xe224c309,
++ 0xba3a6a21, 0x3b1f0f06, 0xa7617bf2, 0x26441ed5, 0x7e5ab7fd,
++ 0xff7fd2da, 0xce67e5ad, 0x4f42808a, 0x175c29a2, 0x96794c85,
++ 0x756c474c, 0xf449226b, 0xac578b43, 0x2d72ee64, 0x1c6ad913,
++ 0x9d4fbc34, 0xc551151c, 0x4474703b, 0x4db9f56a, 0xcc9c904d,
++ 0x94823965, 0x15a75c42, 0x24bf6b35, 0xa59a0e12, 0xfd84a73a,
++ 0x7ca1c21d, 0x9fb4c9d4, 0x1e91acf3, 0x468f05db, 0xc7aa60fc,
++ 0xf6b2578b, 0x779732ac, 0x2f899b84, 0xaeacfea3, 0x32d28a57,
++ 0xb3f7ef70, 0xebe94658, 0x6acc237f, 0x5bd41408, 0xdaf1712f,
++ 0x82efd807, 0x03cabd20, 0xe0dfb6e9, 0x61fad3ce, 0x39e47ae6,
++ 0xb8c11fc1, 0x89d928b6, 0x08fc4d91, 0x50e2e4b9, 0xd1c7819e,
++ 0xb36f0b10, 0x324a6e37, 0x6a54c71f, 0xeb71a238, 0xda69954f,
++ 0x5b4cf068, 0x03525940, 0x82773c67, 0x616237ae, 0xe0475289,
++ 0xb859fba1, 0x397c9e86, 0x0864a9f1, 0x8941ccd6, 0xd15f65fe,
++ 0x507a00d9, 0xcc04742d, 0x4d21110a, 0x153fb822, 0x941add05,
++ 0xa502ea72, 0x24278f55, 0x7c39267d, 0xfd1c435a, 0x1e094893,
++ 0x9f2c2db4, 0xc732849c, 0x4617e1bb, 0x770fd6cc, 0xf62ab3eb,
++ 0xae341ac3, 0x2f117fe4, 0x6b650fdf, 0xea406af8, 0xb25ec3d0,
++ 0x337ba6f7, 0x02639180, 0x8346f4a7, 0xdb585d8f, 0x5a7d38a8,
++ 0xb9683361, 0x384d5646, 0x6053ff6e, 0xe1769a49, 0xd06ead3e,
++ 0x514bc819, 0x09556131, 0x88700416, 0x140e70e2, 0x952b15c5,
++ 0xcd35bced, 0x4c10d9ca, 0x7d08eebd, 0xfc2d8b9a, 0xa43322b2,
++ 0x25164795, 0xc6034c5c, 0x4726297b, 0x1f388053, 0x9e1de574,
++ 0xaf05d203, 0x2e20b724, 0x763e1e0c, 0xf71b7b2b, 0x95b3f1a5,
++ 0x14969482, 0x4c883daa, 0xcdad588d, 0xfcb56ffa, 0x7d900add,
++ 0x258ea3f5, 0xa4abc6d2, 0x47becd1b, 0xc69ba83c, 0x9e850114,
++ 0x1fa06433, 0x2eb85344, 0xaf9d3663, 0xf7839f4b, 0x76a6fa6c,
++ 0xead88e98, 0x6bfdebbf, 0x33e34297, 0xb2c627b0, 0x83de10c7,
++ 0x02fb75e0, 0x5ae5dcc8, 0xdbc0b9ef, 0x38d5b226, 0xb9f0d701,
++ 0xe1ee7e29, 0x60cb1b0e, 0x51d32c79, 0xd0f6495e, 0x88e8e076,
++ 0x09cd8551},
++ {0x00000000, 0x9b73ead4, 0xed96d3e9, 0x76e5393d, 0x005ca193,
++ 0x9b2f4b47, 0xedca727a, 0x76b998ae, 0x00b94326, 0x9bcaa9f2,
++ 0xed2f90cf, 0x765c7a1b, 0x00e5e2b5, 0x9b960861, 0xed73315c,
++ 0x7600db88, 0x0172864c, 0x9a016c98, 0xece455a5, 0x7797bf71,
++ 0x012e27df, 0x9a5dcd0b, 0xecb8f436, 0x77cb1ee2, 0x01cbc56a,
++ 0x9ab82fbe, 0xec5d1683, 0x772efc57, 0x019764f9, 0x9ae48e2d,
++ 0xec01b710, 0x77725dc4, 0x02e50c98, 0x9996e64c, 0xef73df71,
++ 0x740035a5, 0x02b9ad0b, 0x99ca47df, 0xef2f7ee2, 0x745c9436,
++ 0x025c4fbe, 0x992fa56a, 0xefca9c57, 0x74b97683, 0x0200ee2d,
++ 0x997304f9, 0xef963dc4, 0x74e5d710, 0x03978ad4, 0x98e46000,
++ 0xee01593d, 0x7572b3e9, 0x03cb2b47, 0x98b8c193, 0xee5df8ae,
++ 0x752e127a, 0x032ec9f2, 0x985d2326, 0xeeb81a1b, 0x75cbf0cf,
++ 0x03726861, 0x980182b5, 0xeee4bb88, 0x7597515c, 0x05ca1930,
++ 0x9eb9f3e4, 0xe85ccad9, 0x732f200d, 0x0596b8a3, 0x9ee55277,
++ 0xe8006b4a, 0x7373819e, 0x05735a16, 0x9e00b0c2, 0xe8e589ff,
++ 0x7396632b, 0x052ffb85, 0x9e5c1151, 0xe8b9286c, 0x73cac2b8,
++ 0x04b89f7c, 0x9fcb75a8, 0xe92e4c95, 0x725da641, 0x04e43eef,
++ 0x9f97d43b, 0xe972ed06, 0x720107d2, 0x0401dc5a, 0x9f72368e,
++ 0xe9970fb3, 0x72e4e567, 0x045d7dc9, 0x9f2e971d, 0xe9cbae20,
++ 0x72b844f4, 0x072f15a8, 0x9c5cff7c, 0xeab9c641, 0x71ca2c95,
++ 0x0773b43b, 0x9c005eef, 0xeae567d2, 0x71968d06, 0x0796568e,
++ 0x9ce5bc5a, 0xea008567, 0x71736fb3, 0x07caf71d, 0x9cb91dc9,
++ 0xea5c24f4, 0x712fce20, 0x065d93e4, 0x9d2e7930, 0xebcb400d,
++ 0x70b8aad9, 0x06013277, 0x9d72d8a3, 0xeb97e19e, 0x70e40b4a,
++ 0x06e4d0c2, 0x9d973a16, 0xeb72032b, 0x7001e9ff, 0x06b87151,
++ 0x9dcb9b85, 0xeb2ea2b8, 0x705d486c, 0x0b943260, 0x90e7d8b4,
++ 0xe602e189, 0x7d710b5d, 0x0bc893f3, 0x90bb7927, 0xe65e401a,
++ 0x7d2daace, 0x0b2d7146, 0x905e9b92, 0xe6bba2af, 0x7dc8487b,
++ 0x0b71d0d5, 0x90023a01, 0xe6e7033c, 0x7d94e9e8, 0x0ae6b42c,
++ 0x91955ef8, 0xe77067c5, 0x7c038d11, 0x0aba15bf, 0x91c9ff6b,
++ 0xe72cc656, 0x7c5f2c82, 0x0a5ff70a, 0x912c1dde, 0xe7c924e3,
++ 0x7cbace37, 0x0a035699, 0x9170bc4d, 0xe7958570, 0x7ce66fa4,
++ 0x09713ef8, 0x9202d42c, 0xe4e7ed11, 0x7f9407c5, 0x092d9f6b,
++ 0x925e75bf, 0xe4bb4c82, 0x7fc8a656, 0x09c87dde, 0x92bb970a,
++ 0xe45eae37, 0x7f2d44e3, 0x0994dc4d, 0x92e73699, 0xe4020fa4,
++ 0x7f71e570, 0x0803b8b4, 0x93705260, 0xe5956b5d, 0x7ee68189,
++ 0x085f1927, 0x932cf3f3, 0xe5c9cace, 0x7eba201a, 0x08bafb92,
++ 0x93c91146, 0xe52c287b, 0x7e5fc2af, 0x08e65a01, 0x9395b0d5,
++ 0xe57089e8, 0x7e03633c, 0x0e5e2b50, 0x952dc184, 0xe3c8f8b9,
++ 0x78bb126d, 0x0e028ac3, 0x95716017, 0xe394592a, 0x78e7b3fe,
++ 0x0ee76876, 0x959482a2, 0xe371bb9f, 0x7802514b, 0x0ebbc9e5,
++ 0x95c82331, 0xe32d1a0c, 0x785ef0d8, 0x0f2cad1c, 0x945f47c8,
++ 0xe2ba7ef5, 0x79c99421, 0x0f700c8f, 0x9403e65b, 0xe2e6df66,
++ 0x799535b2, 0x0f95ee3a, 0x94e604ee, 0xe2033dd3, 0x7970d707,
++ 0x0fc94fa9, 0x94baa57d, 0xe25f9c40, 0x792c7694, 0x0cbb27c8,
++ 0x97c8cd1c, 0xe12df421, 0x7a5e1ef5, 0x0ce7865b, 0x97946c8f,
++ 0xe17155b2, 0x7a02bf66, 0x0c0264ee, 0x97718e3a, 0xe194b707,
++ 0x7ae75dd3, 0x0c5ec57d, 0x972d2fa9, 0xe1c81694, 0x7abbfc40,
++ 0x0dc9a184, 0x96ba4b50, 0xe05f726d, 0x7b2c98b9, 0x0d950017,
++ 0x96e6eac3, 0xe003d3fe, 0x7b70392a, 0x0d70e2a2, 0x96030876,
++ 0xe0e6314b, 0x7b95db9f, 0x0d2c4331, 0x965fa9e5, 0xe0ba90d8,
++ 0x7bc97a0c},
++ {0x00000000, 0x172864c0, 0x2e50c980, 0x3978ad40, 0x5ca19300,
++ 0x4b89f7c0, 0x72f15a80, 0x65d93e40, 0xb9432600, 0xae6b42c0,
++ 0x9713ef80, 0x803b8b40, 0xe5e2b500, 0xf2cad1c0, 0xcbb27c80,
++ 0xdc9a1840, 0xa9f74a41, 0xbedf2e81, 0x87a783c1, 0x908fe701,
++ 0xf556d941, 0xe27ebd81, 0xdb0610c1, 0xcc2e7401, 0x10b46c41,
++ 0x079c0881, 0x3ee4a5c1, 0x29ccc101, 0x4c15ff41, 0x5b3d9b81,
++ 0x624536c1, 0x756d5201, 0x889f92c3, 0x9fb7f603, 0xa6cf5b43,
++ 0xb1e73f83, 0xd43e01c3, 0xc3166503, 0xfa6ec843, 0xed46ac83,
++ 0x31dcb4c3, 0x26f4d003, 0x1f8c7d43, 0x08a41983, 0x6d7d27c3,
++ 0x7a554303, 0x432dee43, 0x54058a83, 0x2168d882, 0x3640bc42,
++ 0x0f381102, 0x181075c2, 0x7dc94b82, 0x6ae12f42, 0x53998202,
++ 0x44b1e6c2, 0x982bfe82, 0x8f039a42, 0xb67b3702, 0xa15353c2,
++ 0xc48a6d82, 0xd3a20942, 0xeadaa402, 0xfdf2c0c2, 0xca4e23c7,
++ 0xdd664707, 0xe41eea47, 0xf3368e87, 0x96efb0c7, 0x81c7d407,
++ 0xb8bf7947, 0xaf971d87, 0x730d05c7, 0x64256107, 0x5d5dcc47,
++ 0x4a75a887, 0x2fac96c7, 0x3884f207, 0x01fc5f47, 0x16d43b87,
++ 0x63b96986, 0x74910d46, 0x4de9a006, 0x5ac1c4c6, 0x3f18fa86,
++ 0x28309e46, 0x11483306, 0x066057c6, 0xdafa4f86, 0xcdd22b46,
++ 0xf4aa8606, 0xe382e2c6, 0x865bdc86, 0x9173b846, 0xa80b1506,
++ 0xbf2371c6, 0x42d1b104, 0x55f9d5c4, 0x6c817884, 0x7ba91c44,
++ 0x1e702204, 0x095846c4, 0x3020eb84, 0x27088f44, 0xfb929704,
++ 0xecbaf3c4, 0xd5c25e84, 0xc2ea3a44, 0xa7330404, 0xb01b60c4,
++ 0x8963cd84, 0x9e4ba944, 0xeb26fb45, 0xfc0e9f85, 0xc57632c5,
++ 0xd25e5605, 0xb7876845, 0xa0af0c85, 0x99d7a1c5, 0x8effc505,
++ 0x5265dd45, 0x454db985, 0x7c3514c5, 0x6b1d7005, 0x0ec44e45,
++ 0x19ec2a85, 0x209487c5, 0x37bce305, 0x4fed41cf, 0x58c5250f,
++ 0x61bd884f, 0x7695ec8f, 0x134cd2cf, 0x0464b60f, 0x3d1c1b4f,
++ 0x2a347f8f, 0xf6ae67cf, 0xe186030f, 0xd8feae4f, 0xcfd6ca8f,
++ 0xaa0ff4cf, 0xbd27900f, 0x845f3d4f, 0x9377598f, 0xe61a0b8e,
++ 0xf1326f4e, 0xc84ac20e, 0xdf62a6ce, 0xbabb988e, 0xad93fc4e,
++ 0x94eb510e, 0x83c335ce, 0x5f592d8e, 0x4871494e, 0x7109e40e,
++ 0x662180ce, 0x03f8be8e, 0x14d0da4e, 0x2da8770e, 0x3a8013ce,
++ 0xc772d30c, 0xd05ab7cc, 0xe9221a8c, 0xfe0a7e4c, 0x9bd3400c,
++ 0x8cfb24cc, 0xb583898c, 0xa2abed4c, 0x7e31f50c, 0x691991cc,
++ 0x50613c8c, 0x4749584c, 0x2290660c, 0x35b802cc, 0x0cc0af8c,
++ 0x1be8cb4c, 0x6e85994d, 0x79adfd8d, 0x40d550cd, 0x57fd340d,
++ 0x32240a4d, 0x250c6e8d, 0x1c74c3cd, 0x0b5ca70d, 0xd7c6bf4d,
++ 0xc0eedb8d, 0xf99676cd, 0xeebe120d, 0x8b672c4d, 0x9c4f488d,
++ 0xa537e5cd, 0xb21f810d, 0x85a36208, 0x928b06c8, 0xabf3ab88,
++ 0xbcdbcf48, 0xd902f108, 0xce2a95c8, 0xf7523888, 0xe07a5c48,
++ 0x3ce04408, 0x2bc820c8, 0x12b08d88, 0x0598e948, 0x6041d708,
++ 0x7769b3c8, 0x4e111e88, 0x59397a48, 0x2c542849, 0x3b7c4c89,
++ 0x0204e1c9, 0x152c8509, 0x70f5bb49, 0x67dddf89, 0x5ea572c9,
++ 0x498d1609, 0x95170e49, 0x823f6a89, 0xbb47c7c9, 0xac6fa309,
++ 0xc9b69d49, 0xde9ef989, 0xe7e654c9, 0xf0ce3009, 0x0d3cf0cb,
++ 0x1a14940b, 0x236c394b, 0x34445d8b, 0x519d63cb, 0x46b5070b,
++ 0x7fcdaa4b, 0x68e5ce8b, 0xb47fd6cb, 0xa357b20b, 0x9a2f1f4b,
++ 0x8d077b8b, 0xe8de45cb, 0xfff6210b, 0xc68e8c4b, 0xd1a6e88b,
++ 0xa4cbba8a, 0xb3e3de4a, 0x8a9b730a, 0x9db317ca, 0xf86a298a,
++ 0xef424d4a, 0xd63ae00a, 0xc11284ca, 0x1d889c8a, 0x0aa0f84a,
++ 0x33d8550a, 0x24f031ca, 0x41290f8a, 0x56016b4a, 0x6f79c60a,
++ 0x7851a2ca},
++ {0x00000000, 0x9fda839e, 0xe4c4017d, 0x7b1e82e3, 0x12f904bb,
++ 0x8d238725, 0xf63d05c6, 0x69e78658, 0x25f20976, 0xba288ae8,
++ 0xc136080b, 0x5eec8b95, 0x370b0dcd, 0xa8d18e53, 0xd3cf0cb0,
++ 0x4c158f2e, 0x4be412ec, 0xd43e9172, 0xaf201391, 0x30fa900f,
++ 0x591d1657, 0xc6c795c9, 0xbdd9172a, 0x220394b4, 0x6e161b9a,
++ 0xf1cc9804, 0x8ad21ae7, 0x15089979, 0x7cef1f21, 0xe3359cbf,
++ 0x982b1e5c, 0x07f19dc2, 0x97c825d8, 0x0812a646, 0x730c24a5,
++ 0xecd6a73b, 0x85312163, 0x1aeba2fd, 0x61f5201e, 0xfe2fa380,
++ 0xb23a2cae, 0x2de0af30, 0x56fe2dd3, 0xc924ae4d, 0xa0c32815,
++ 0x3f19ab8b, 0x44072968, 0xdbddaaf6, 0xdc2c3734, 0x43f6b4aa,
++ 0x38e83649, 0xa732b5d7, 0xced5338f, 0x510fb011, 0x2a1132f2,
++ 0xb5cbb16c, 0xf9de3e42, 0x6604bddc, 0x1d1a3f3f, 0x82c0bca1,
++ 0xeb273af9, 0x74fdb967, 0x0fe33b84, 0x9039b81a, 0xf4e14df1,
++ 0x6b3bce6f, 0x10254c8c, 0x8fffcf12, 0xe618494a, 0x79c2cad4,
++ 0x02dc4837, 0x9d06cba9, 0xd1134487, 0x4ec9c719, 0x35d745fa,
++ 0xaa0dc664, 0xc3ea403c, 0x5c30c3a2, 0x272e4141, 0xb8f4c2df,
++ 0xbf055f1d, 0x20dfdc83, 0x5bc15e60, 0xc41bddfe, 0xadfc5ba6,
++ 0x3226d838, 0x49385adb, 0xd6e2d945, 0x9af7566b, 0x052dd5f5,
++ 0x7e335716, 0xe1e9d488, 0x880e52d0, 0x17d4d14e, 0x6cca53ad,
++ 0xf310d033, 0x63296829, 0xfcf3ebb7, 0x87ed6954, 0x1837eaca,
++ 0x71d06c92, 0xee0aef0c, 0x95146def, 0x0aceee71, 0x46db615f,
++ 0xd901e2c1, 0xa21f6022, 0x3dc5e3bc, 0x542265e4, 0xcbf8e67a,
++ 0xb0e66499, 0x2f3ce707, 0x28cd7ac5, 0xb717f95b, 0xcc097bb8,
++ 0x53d3f826, 0x3a347e7e, 0xa5eefde0, 0xdef07f03, 0x412afc9d,
++ 0x0d3f73b3, 0x92e5f02d, 0xe9fb72ce, 0x7621f150, 0x1fc67708,
++ 0x801cf496, 0xfb027675, 0x64d8f5eb, 0x32b39da3, 0xad691e3d,
++ 0xd6779cde, 0x49ad1f40, 0x204a9918, 0xbf901a86, 0xc48e9865,
++ 0x5b541bfb, 0x174194d5, 0x889b174b, 0xf38595a8, 0x6c5f1636,
++ 0x05b8906e, 0x9a6213f0, 0xe17c9113, 0x7ea6128d, 0x79578f4f,
++ 0xe68d0cd1, 0x9d938e32, 0x02490dac, 0x6bae8bf4, 0xf474086a,
++ 0x8f6a8a89, 0x10b00917, 0x5ca58639, 0xc37f05a7, 0xb8618744,
++ 0x27bb04da, 0x4e5c8282, 0xd186011c, 0xaa9883ff, 0x35420061,
++ 0xa57bb87b, 0x3aa13be5, 0x41bfb906, 0xde653a98, 0xb782bcc0,
++ 0x28583f5e, 0x5346bdbd, 0xcc9c3e23, 0x8089b10d, 0x1f533293,
++ 0x644db070, 0xfb9733ee, 0x9270b5b6, 0x0daa3628, 0x76b4b4cb,
++ 0xe96e3755, 0xee9faa97, 0x71452909, 0x0a5babea, 0x95812874,
++ 0xfc66ae2c, 0x63bc2db2, 0x18a2af51, 0x87782ccf, 0xcb6da3e1,
++ 0x54b7207f, 0x2fa9a29c, 0xb0732102, 0xd994a75a, 0x464e24c4,
++ 0x3d50a627, 0xa28a25b9, 0xc652d052, 0x598853cc, 0x2296d12f,
++ 0xbd4c52b1, 0xd4abd4e9, 0x4b715777, 0x306fd594, 0xafb5560a,
++ 0xe3a0d924, 0x7c7a5aba, 0x0764d859, 0x98be5bc7, 0xf159dd9f,
++ 0x6e835e01, 0x159ddce2, 0x8a475f7c, 0x8db6c2be, 0x126c4120,
++ 0x6972c3c3, 0xf6a8405d, 0x9f4fc605, 0x0095459b, 0x7b8bc778,
++ 0xe45144e6, 0xa844cbc8, 0x379e4856, 0x4c80cab5, 0xd35a492b,
++ 0xbabdcf73, 0x25674ced, 0x5e79ce0e, 0xc1a34d90, 0x519af58a,
++ 0xce407614, 0xb55ef4f7, 0x2a847769, 0x4363f131, 0xdcb972af,
++ 0xa7a7f04c, 0x387d73d2, 0x7468fcfc, 0xebb27f62, 0x90acfd81,
++ 0x0f767e1f, 0x6691f847, 0xf94b7bd9, 0x8255f93a, 0x1d8f7aa4,
++ 0x1a7ee766, 0x85a464f8, 0xfebae61b, 0x61606585, 0x0887e3dd,
++ 0x975d6043, 0xec43e2a0, 0x7399613e, 0x3f8cee10, 0xa0566d8e,
++ 0xdb48ef6d, 0x44926cf3, 0x2d75eaab, 0xb2af6935, 0xc9b1ebd6,
++ 0x566b6848},
++ {0x00000000, 0x65673b46, 0xcace768c, 0xafa94dca, 0x4eedeb59,
++ 0x2b8ad01f, 0x84239dd5, 0xe144a693, 0x9ddbd6b2, 0xf8bcedf4,
++ 0x5715a03e, 0x32729b78, 0xd3363deb, 0xb65106ad, 0x19f84b67,
++ 0x7c9f7021, 0xe0c6ab25, 0x85a19063, 0x2a08dda9, 0x4f6fe6ef,
++ 0xae2b407c, 0xcb4c7b3a, 0x64e536f0, 0x01820db6, 0x7d1d7d97,
++ 0x187a46d1, 0xb7d30b1b, 0xd2b4305d, 0x33f096ce, 0x5697ad88,
++ 0xf93ee042, 0x9c59db04, 0x1afc500b, 0x7f9b6b4d, 0xd0322687,
++ 0xb5551dc1, 0x5411bb52, 0x31768014, 0x9edfcdde, 0xfbb8f698,
++ 0x872786b9, 0xe240bdff, 0x4de9f035, 0x288ecb73, 0xc9ca6de0,
++ 0xacad56a6, 0x03041b6c, 0x6663202a, 0xfa3afb2e, 0x9f5dc068,
++ 0x30f48da2, 0x5593b6e4, 0xb4d71077, 0xd1b02b31, 0x7e1966fb,
++ 0x1b7e5dbd, 0x67e12d9c, 0x028616da, 0xad2f5b10, 0xc8486056,
++ 0x290cc6c5, 0x4c6bfd83, 0xe3c2b049, 0x86a58b0f, 0x35f8a016,
++ 0x509f9b50, 0xff36d69a, 0x9a51eddc, 0x7b154b4f, 0x1e727009,
++ 0xb1db3dc3, 0xd4bc0685, 0xa82376a4, 0xcd444de2, 0x62ed0028,
++ 0x078a3b6e, 0xe6ce9dfd, 0x83a9a6bb, 0x2c00eb71, 0x4967d037,
++ 0xd53e0b33, 0xb0593075, 0x1ff07dbf, 0x7a9746f9, 0x9bd3e06a,
++ 0xfeb4db2c, 0x511d96e6, 0x347aada0, 0x48e5dd81, 0x2d82e6c7,
++ 0x822bab0d, 0xe74c904b, 0x060836d8, 0x636f0d9e, 0xccc64054,
++ 0xa9a17b12, 0x2f04f01d, 0x4a63cb5b, 0xe5ca8691, 0x80adbdd7,
++ 0x61e91b44, 0x048e2002, 0xab276dc8, 0xce40568e, 0xb2df26af,
++ 0xd7b81de9, 0x78115023, 0x1d766b65, 0xfc32cdf6, 0x9955f6b0,
++ 0x36fcbb7a, 0x539b803c, 0xcfc25b38, 0xaaa5607e, 0x050c2db4,
++ 0x606b16f2, 0x812fb061, 0xe4488b27, 0x4be1c6ed, 0x2e86fdab,
++ 0x52198d8a, 0x377eb6cc, 0x98d7fb06, 0xfdb0c040, 0x1cf466d3,
++ 0x79935d95, 0xd63a105f, 0xb35d2b19, 0x6bf1402c, 0x0e967b6a,
++ 0xa13f36a0, 0xc4580de6, 0x251cab75, 0x407b9033, 0xefd2ddf9,
++ 0x8ab5e6bf, 0xf62a969e, 0x934dadd8, 0x3ce4e012, 0x5983db54,
++ 0xb8c77dc7, 0xdda04681, 0x72090b4b, 0x176e300d, 0x8b37eb09,
++ 0xee50d04f, 0x41f99d85, 0x249ea6c3, 0xc5da0050, 0xa0bd3b16,
++ 0x0f1476dc, 0x6a734d9a, 0x16ec3dbb, 0x738b06fd, 0xdc224b37,
++ 0xb9457071, 0x5801d6e2, 0x3d66eda4, 0x92cfa06e, 0xf7a89b28,
++ 0x710d1027, 0x146a2b61, 0xbbc366ab, 0xdea45ded, 0x3fe0fb7e,
++ 0x5a87c038, 0xf52e8df2, 0x9049b6b4, 0xecd6c695, 0x89b1fdd3,
++ 0x2618b019, 0x437f8b5f, 0xa23b2dcc, 0xc75c168a, 0x68f55b40,
++ 0x0d926006, 0x91cbbb02, 0xf4ac8044, 0x5b05cd8e, 0x3e62f6c8,
++ 0xdf26505b, 0xba416b1d, 0x15e826d7, 0x708f1d91, 0x0c106db0,
++ 0x697756f6, 0xc6de1b3c, 0xa3b9207a, 0x42fd86e9, 0x279abdaf,
++ 0x8833f065, 0xed54cb23, 0x5e09e03a, 0x3b6edb7c, 0x94c796b6,
++ 0xf1a0adf0, 0x10e40b63, 0x75833025, 0xda2a7def, 0xbf4d46a9,
++ 0xc3d23688, 0xa6b50dce, 0x091c4004, 0x6c7b7b42, 0x8d3fddd1,
++ 0xe858e697, 0x47f1ab5d, 0x2296901b, 0xbecf4b1f, 0xdba87059,
++ 0x74013d93, 0x116606d5, 0xf022a046, 0x95459b00, 0x3aecd6ca,
++ 0x5f8bed8c, 0x23149dad, 0x4673a6eb, 0xe9daeb21, 0x8cbdd067,
++ 0x6df976f4, 0x089e4db2, 0xa7370078, 0xc2503b3e, 0x44f5b031,
++ 0x21928b77, 0x8e3bc6bd, 0xeb5cfdfb, 0x0a185b68, 0x6f7f602e,
++ 0xc0d62de4, 0xa5b116a2, 0xd92e6683, 0xbc495dc5, 0x13e0100f,
++ 0x76872b49, 0x97c38dda, 0xf2a4b69c, 0x5d0dfb56, 0x386ac010,
++ 0xa4331b14, 0xc1542052, 0x6efd6d98, 0x0b9a56de, 0xeadef04d,
++ 0x8fb9cb0b, 0x201086c1, 0x4577bd87, 0x39e8cda6, 0x5c8ff6e0,
++ 0xf326bb2a, 0x9641806c, 0x770526ff, 0x12621db9, 0xbdcb5073,
++ 0xd8ac6b35},
++ {0x00000000, 0xd7e28058, 0x74b406f1, 0xa35686a9, 0xe9680de2,
++ 0x3e8a8dba, 0x9ddc0b13, 0x4a3e8b4b, 0x09a11d85, 0xde439ddd,
++ 0x7d151b74, 0xaaf79b2c, 0xe0c91067, 0x372b903f, 0x947d1696,
++ 0x439f96ce, 0x13423b0a, 0xc4a0bb52, 0x67f63dfb, 0xb014bda3,
++ 0xfa2a36e8, 0x2dc8b6b0, 0x8e9e3019, 0x597cb041, 0x1ae3268f,
++ 0xcd01a6d7, 0x6e57207e, 0xb9b5a026, 0xf38b2b6d, 0x2469ab35,
++ 0x873f2d9c, 0x50ddadc4, 0x26847614, 0xf166f64c, 0x523070e5,
++ 0x85d2f0bd, 0xcfec7bf6, 0x180efbae, 0xbb587d07, 0x6cbafd5f,
++ 0x2f256b91, 0xf8c7ebc9, 0x5b916d60, 0x8c73ed38, 0xc64d6673,
++ 0x11afe62b, 0xb2f96082, 0x651be0da, 0x35c64d1e, 0xe224cd46,
++ 0x41724bef, 0x9690cbb7, 0xdcae40fc, 0x0b4cc0a4, 0xa81a460d,
++ 0x7ff8c655, 0x3c67509b, 0xeb85d0c3, 0x48d3566a, 0x9f31d632,
++ 0xd50f5d79, 0x02eddd21, 0xa1bb5b88, 0x7659dbd0, 0x4d08ec28,
++ 0x9aea6c70, 0x39bcead9, 0xee5e6a81, 0xa460e1ca, 0x73826192,
++ 0xd0d4e73b, 0x07366763, 0x44a9f1ad, 0x934b71f5, 0x301df75c,
++ 0xe7ff7704, 0xadc1fc4f, 0x7a237c17, 0xd975fabe, 0x0e977ae6,
++ 0x5e4ad722, 0x89a8577a, 0x2afed1d3, 0xfd1c518b, 0xb722dac0,
++ 0x60c05a98, 0xc396dc31, 0x14745c69, 0x57ebcaa7, 0x80094aff,
++ 0x235fcc56, 0xf4bd4c0e, 0xbe83c745, 0x6961471d, 0xca37c1b4,
++ 0x1dd541ec, 0x6b8c9a3c, 0xbc6e1a64, 0x1f389ccd, 0xc8da1c95,
++ 0x82e497de, 0x55061786, 0xf650912f, 0x21b21177, 0x622d87b9,
++ 0xb5cf07e1, 0x16998148, 0xc17b0110, 0x8b458a5b, 0x5ca70a03,
++ 0xfff18caa, 0x28130cf2, 0x78cea136, 0xaf2c216e, 0x0c7aa7c7,
++ 0xdb98279f, 0x91a6acd4, 0x46442c8c, 0xe512aa25, 0x32f02a7d,
++ 0x716fbcb3, 0xa68d3ceb, 0x05dbba42, 0xd2393a1a, 0x9807b151,
++ 0x4fe53109, 0xecb3b7a0, 0x3b5137f8, 0x9a11d850, 0x4df35808,
++ 0xeea5dea1, 0x39475ef9, 0x7379d5b2, 0xa49b55ea, 0x07cdd343,
++ 0xd02f531b, 0x93b0c5d5, 0x4452458d, 0xe704c324, 0x30e6437c,
++ 0x7ad8c837, 0xad3a486f, 0x0e6ccec6, 0xd98e4e9e, 0x8953e35a,
++ 0x5eb16302, 0xfde7e5ab, 0x2a0565f3, 0x603beeb8, 0xb7d96ee0,
++ 0x148fe849, 0xc36d6811, 0x80f2fedf, 0x57107e87, 0xf446f82e,
++ 0x23a47876, 0x699af33d, 0xbe787365, 0x1d2ef5cc, 0xcacc7594,
++ 0xbc95ae44, 0x6b772e1c, 0xc821a8b5, 0x1fc328ed, 0x55fda3a6,
++ 0x821f23fe, 0x2149a557, 0xf6ab250f, 0xb534b3c1, 0x62d63399,
++ 0xc180b530, 0x16623568, 0x5c5cbe23, 0x8bbe3e7b, 0x28e8b8d2,
++ 0xff0a388a, 0xafd7954e, 0x78351516, 0xdb6393bf, 0x0c8113e7,
++ 0x46bf98ac, 0x915d18f4, 0x320b9e5d, 0xe5e91e05, 0xa67688cb,
++ 0x71940893, 0xd2c28e3a, 0x05200e62, 0x4f1e8529, 0x98fc0571,
++ 0x3baa83d8, 0xec480380, 0xd7193478, 0x00fbb420, 0xa3ad3289,
++ 0x744fb2d1, 0x3e71399a, 0xe993b9c2, 0x4ac53f6b, 0x9d27bf33,
++ 0xdeb829fd, 0x095aa9a5, 0xaa0c2f0c, 0x7deeaf54, 0x37d0241f,
++ 0xe032a447, 0x436422ee, 0x9486a2b6, 0xc45b0f72, 0x13b98f2a,
++ 0xb0ef0983, 0x670d89db, 0x2d330290, 0xfad182c8, 0x59870461,
++ 0x8e658439, 0xcdfa12f7, 0x1a1892af, 0xb94e1406, 0x6eac945e,
++ 0x24921f15, 0xf3709f4d, 0x502619e4, 0x87c499bc, 0xf19d426c,
++ 0x267fc234, 0x8529449d, 0x52cbc4c5, 0x18f54f8e, 0xcf17cfd6,
++ 0x6c41497f, 0xbba3c927, 0xf83c5fe9, 0x2fdedfb1, 0x8c885918,
++ 0x5b6ad940, 0x1154520b, 0xc6b6d253, 0x65e054fa, 0xb202d4a2,
++ 0xe2df7966, 0x353df93e, 0x966b7f97, 0x4189ffcf, 0x0bb77484,
++ 0xdc55f4dc, 0x7f037275, 0xa8e1f22d, 0xeb7e64e3, 0x3c9ce4bb,
++ 0x9fca6212, 0x4828e24a, 0x02166901, 0xd5f4e959, 0x76a26ff0,
++ 0xa140efa8},
++ {0x00000000, 0xef52b6e1, 0x05d46b83, 0xea86dd62, 0x0ba8d706,
++ 0xe4fa61e7, 0x0e7cbc85, 0xe12e0a64, 0x1751ae0c, 0xf80318ed,
++ 0x1285c58f, 0xfdd7736e, 0x1cf9790a, 0xf3abcfeb, 0x192d1289,
++ 0xf67fa468, 0x2ea35c18, 0xc1f1eaf9, 0x2b77379b, 0xc425817a,
++ 0x250b8b1e, 0xca593dff, 0x20dfe09d, 0xcf8d567c, 0x39f2f214,
++ 0xd6a044f5, 0x3c269997, 0xd3742f76, 0x325a2512, 0xdd0893f3,
++ 0x378e4e91, 0xd8dcf870, 0x5d46b830, 0xb2140ed1, 0x5892d3b3,
++ 0xb7c06552, 0x56ee6f36, 0xb9bcd9d7, 0x533a04b5, 0xbc68b254,
++ 0x4a17163c, 0xa545a0dd, 0x4fc37dbf, 0xa091cb5e, 0x41bfc13a,
++ 0xaeed77db, 0x446baab9, 0xab391c58, 0x73e5e428, 0x9cb752c9,
++ 0x76318fab, 0x9963394a, 0x784d332e, 0x971f85cf, 0x7d9958ad,
++ 0x92cbee4c, 0x64b44a24, 0x8be6fcc5, 0x616021a7, 0x8e329746,
++ 0x6f1c9d22, 0x804e2bc3, 0x6ac8f6a1, 0x859a4040, 0xba8d7060,
++ 0x55dfc681, 0xbf591be3, 0x500bad02, 0xb125a766, 0x5e771187,
++ 0xb4f1cce5, 0x5ba37a04, 0xaddcde6c, 0x428e688d, 0xa808b5ef,
++ 0x475a030e, 0xa674096a, 0x4926bf8b, 0xa3a062e9, 0x4cf2d408,
++ 0x942e2c78, 0x7b7c9a99, 0x91fa47fb, 0x7ea8f11a, 0x9f86fb7e,
++ 0x70d44d9f, 0x9a5290fd, 0x7500261c, 0x837f8274, 0x6c2d3495,
++ 0x86abe9f7, 0x69f95f16, 0x88d75572, 0x6785e393, 0x8d033ef1,
++ 0x62518810, 0xe7cbc850, 0x08997eb1, 0xe21fa3d3, 0x0d4d1532,
++ 0xec631f56, 0x0331a9b7, 0xe9b774d5, 0x06e5c234, 0xf09a665c,
++ 0x1fc8d0bd, 0xf54e0ddf, 0x1a1cbb3e, 0xfb32b15a, 0x146007bb,
++ 0xfee6dad9, 0x11b46c38, 0xc9689448, 0x263a22a9, 0xccbcffcb,
++ 0x23ee492a, 0xc2c0434e, 0x2d92f5af, 0xc71428cd, 0x28469e2c,
++ 0xde393a44, 0x316b8ca5, 0xdbed51c7, 0x34bfe726, 0xd591ed42,
++ 0x3ac35ba3, 0xd04586c1, 0x3f173020, 0xae6be681, 0x41395060,
++ 0xabbf8d02, 0x44ed3be3, 0xa5c33187, 0x4a918766, 0xa0175a04,
++ 0x4f45ece5, 0xb93a488d, 0x5668fe6c, 0xbcee230e, 0x53bc95ef,
++ 0xb2929f8b, 0x5dc0296a, 0xb746f408, 0x581442e9, 0x80c8ba99,
++ 0x6f9a0c78, 0x851cd11a, 0x6a4e67fb, 0x8b606d9f, 0x6432db7e,
++ 0x8eb4061c, 0x61e6b0fd, 0x97991495, 0x78cba274, 0x924d7f16,
++ 0x7d1fc9f7, 0x9c31c393, 0x73637572, 0x99e5a810, 0x76b71ef1,
++ 0xf32d5eb1, 0x1c7fe850, 0xf6f93532, 0x19ab83d3, 0xf88589b7,
++ 0x17d73f56, 0xfd51e234, 0x120354d5, 0xe47cf0bd, 0x0b2e465c,
++ 0xe1a89b3e, 0x0efa2ddf, 0xefd427bb, 0x0086915a, 0xea004c38,
++ 0x0552fad9, 0xdd8e02a9, 0x32dcb448, 0xd85a692a, 0x3708dfcb,
++ 0xd626d5af, 0x3974634e, 0xd3f2be2c, 0x3ca008cd, 0xcadfaca5,
++ 0x258d1a44, 0xcf0bc726, 0x205971c7, 0xc1777ba3, 0x2e25cd42,
++ 0xc4a31020, 0x2bf1a6c1, 0x14e696e1, 0xfbb42000, 0x1132fd62,
++ 0xfe604b83, 0x1f4e41e7, 0xf01cf706, 0x1a9a2a64, 0xf5c89c85,
++ 0x03b738ed, 0xece58e0c, 0x0663536e, 0xe931e58f, 0x081fefeb,
++ 0xe74d590a, 0x0dcb8468, 0xe2993289, 0x3a45caf9, 0xd5177c18,
++ 0x3f91a17a, 0xd0c3179b, 0x31ed1dff, 0xdebfab1e, 0x3439767c,
++ 0xdb6bc09d, 0x2d1464f5, 0xc246d214, 0x28c00f76, 0xc792b997,
++ 0x26bcb3f3, 0xc9ee0512, 0x2368d870, 0xcc3a6e91, 0x49a02ed1,
++ 0xa6f29830, 0x4c744552, 0xa326f3b3, 0x4208f9d7, 0xad5a4f36,
++ 0x47dc9254, 0xa88e24b5, 0x5ef180dd, 0xb1a3363c, 0x5b25eb5e,
++ 0xb4775dbf, 0x555957db, 0xba0be13a, 0x508d3c58, 0xbfdf8ab9,
++ 0x670372c9, 0x8851c428, 0x62d7194a, 0x8d85afab, 0x6caba5cf,
++ 0x83f9132e, 0x697fce4c, 0x862d78ad, 0x7052dcc5, 0x9f006a24,
++ 0x7586b746, 0x9ad401a7, 0x7bfa0bc3, 0x94a8bd22, 0x7e2e6040,
++ 0x917cd6a1},
++ {0x00000000, 0x87a6cb43, 0xd43c90c7, 0x539a5b84, 0x730827cf,
++ 0xf4aeec8c, 0xa734b708, 0x20927c4b, 0xe6104f9e, 0x61b684dd,
++ 0x322cdf59, 0xb58a141a, 0x95186851, 0x12bea312, 0x4124f896,
++ 0xc68233d5, 0x1751997d, 0x90f7523e, 0xc36d09ba, 0x44cbc2f9,
++ 0x6459beb2, 0xe3ff75f1, 0xb0652e75, 0x37c3e536, 0xf141d6e3,
++ 0x76e71da0, 0x257d4624, 0xa2db8d67, 0x8249f12c, 0x05ef3a6f,
++ 0x567561eb, 0xd1d3aaa8, 0x2ea332fa, 0xa905f9b9, 0xfa9fa23d,
++ 0x7d39697e, 0x5dab1535, 0xda0dde76, 0x899785f2, 0x0e314eb1,
++ 0xc8b37d64, 0x4f15b627, 0x1c8feda3, 0x9b2926e0, 0xbbbb5aab,
++ 0x3c1d91e8, 0x6f87ca6c, 0xe821012f, 0x39f2ab87, 0xbe5460c4,
++ 0xedce3b40, 0x6a68f003, 0x4afa8c48, 0xcd5c470b, 0x9ec61c8f,
++ 0x1960d7cc, 0xdfe2e419, 0x58442f5a, 0x0bde74de, 0x8c78bf9d,
++ 0xaceac3d6, 0x2b4c0895, 0x78d65311, 0xff709852, 0x5d4665f4,
++ 0xdae0aeb7, 0x897af533, 0x0edc3e70, 0x2e4e423b, 0xa9e88978,
++ 0xfa72d2fc, 0x7dd419bf, 0xbb562a6a, 0x3cf0e129, 0x6f6abaad,
++ 0xe8cc71ee, 0xc85e0da5, 0x4ff8c6e6, 0x1c629d62, 0x9bc45621,
++ 0x4a17fc89, 0xcdb137ca, 0x9e2b6c4e, 0x198da70d, 0x391fdb46,
++ 0xbeb91005, 0xed234b81, 0x6a8580c2, 0xac07b317, 0x2ba17854,
++ 0x783b23d0, 0xff9de893, 0xdf0f94d8, 0x58a95f9b, 0x0b33041f,
++ 0x8c95cf5c, 0x73e5570e, 0xf4439c4d, 0xa7d9c7c9, 0x207f0c8a,
++ 0x00ed70c1, 0x874bbb82, 0xd4d1e006, 0x53772b45, 0x95f51890,
++ 0x1253d3d3, 0x41c98857, 0xc66f4314, 0xe6fd3f5f, 0x615bf41c,
++ 0x32c1af98, 0xb56764db, 0x64b4ce73, 0xe3120530, 0xb0885eb4,
++ 0x372e95f7, 0x17bce9bc, 0x901a22ff, 0xc380797b, 0x4426b238,
++ 0x82a481ed, 0x05024aae, 0x5698112a, 0xd13eda69, 0xf1aca622,
++ 0x760a6d61, 0x259036e5, 0xa236fda6, 0xba8ccbe8, 0x3d2a00ab,
++ 0x6eb05b2f, 0xe916906c, 0xc984ec27, 0x4e222764, 0x1db87ce0,
++ 0x9a1eb7a3, 0x5c9c8476, 0xdb3a4f35, 0x88a014b1, 0x0f06dff2,
++ 0x2f94a3b9, 0xa83268fa, 0xfba8337e, 0x7c0ef83d, 0xaddd5295,
++ 0x2a7b99d6, 0x79e1c252, 0xfe470911, 0xded5755a, 0x5973be19,
++ 0x0ae9e59d, 0x8d4f2ede, 0x4bcd1d0b, 0xcc6bd648, 0x9ff18dcc,
++ 0x1857468f, 0x38c53ac4, 0xbf63f187, 0xecf9aa03, 0x6b5f6140,
++ 0x942ff912, 0x13893251, 0x401369d5, 0xc7b5a296, 0xe727dedd,
++ 0x6081159e, 0x331b4e1a, 0xb4bd8559, 0x723fb68c, 0xf5997dcf,
++ 0xa603264b, 0x21a5ed08, 0x01379143, 0x86915a00, 0xd50b0184,
++ 0x52adcac7, 0x837e606f, 0x04d8ab2c, 0x5742f0a8, 0xd0e43beb,
++ 0xf07647a0, 0x77d08ce3, 0x244ad767, 0xa3ec1c24, 0x656e2ff1,
++ 0xe2c8e4b2, 0xb152bf36, 0x36f47475, 0x1666083e, 0x91c0c37d,
++ 0xc25a98f9, 0x45fc53ba, 0xe7caae1c, 0x606c655f, 0x33f63edb,
++ 0xb450f598, 0x94c289d3, 0x13644290, 0x40fe1914, 0xc758d257,
++ 0x01dae182, 0x867c2ac1, 0xd5e67145, 0x5240ba06, 0x72d2c64d,
++ 0xf5740d0e, 0xa6ee568a, 0x21489dc9, 0xf09b3761, 0x773dfc22,
++ 0x24a7a7a6, 0xa3016ce5, 0x839310ae, 0x0435dbed, 0x57af8069,
++ 0xd0094b2a, 0x168b78ff, 0x912db3bc, 0xc2b7e838, 0x4511237b,
++ 0x65835f30, 0xe2259473, 0xb1bfcff7, 0x361904b4, 0xc9699ce6,
++ 0x4ecf57a5, 0x1d550c21, 0x9af3c762, 0xba61bb29, 0x3dc7706a,
++ 0x6e5d2bee, 0xe9fbe0ad, 0x2f79d378, 0xa8df183b, 0xfb4543bf,
++ 0x7ce388fc, 0x5c71f4b7, 0xdbd73ff4, 0x884d6470, 0x0febaf33,
++ 0xde38059b, 0x599eced8, 0x0a04955c, 0x8da25e1f, 0xad302254,
++ 0x2a96e917, 0x790cb293, 0xfeaa79d0, 0x38284a05, 0xbf8e8146,
++ 0xec14dac2, 0x6bb21181, 0x4b206dca, 0xcc86a689, 0x9f1cfd0d,
++ 0x18ba364e}};
++
++local const z_word_t FAR crc_braid_big_table[][256] = {
++ {0x0000000000000000, 0x43cba68700000000, 0xc7903cd400000000,
++ 0x845b9a5300000000, 0xcf27087300000000, 0x8cecaef400000000,
++ 0x08b734a700000000, 0x4b7c922000000000, 0x9e4f10e600000000,
++ 0xdd84b66100000000, 0x59df2c3200000000, 0x1a148ab500000000,
++ 0x5168189500000000, 0x12a3be1200000000, 0x96f8244100000000,
++ 0xd53382c600000000, 0x7d99511700000000, 0x3e52f79000000000,
++ 0xba096dc300000000, 0xf9c2cb4400000000, 0xb2be596400000000,
++ 0xf175ffe300000000, 0x752e65b000000000, 0x36e5c33700000000,
++ 0xe3d641f100000000, 0xa01de77600000000, 0x24467d2500000000,
++ 0x678ddba200000000, 0x2cf1498200000000, 0x6f3aef0500000000,
++ 0xeb61755600000000, 0xa8aad3d100000000, 0xfa32a32e00000000,
++ 0xb9f905a900000000, 0x3da29ffa00000000, 0x7e69397d00000000,
++ 0x3515ab5d00000000, 0x76de0dda00000000, 0xf285978900000000,
++ 0xb14e310e00000000, 0x647db3c800000000, 0x27b6154f00000000,
++ 0xa3ed8f1c00000000, 0xe026299b00000000, 0xab5abbbb00000000,
++ 0xe8911d3c00000000, 0x6cca876f00000000, 0x2f0121e800000000,
++ 0x87abf23900000000, 0xc46054be00000000, 0x403bceed00000000,
++ 0x03f0686a00000000, 0x488cfa4a00000000, 0x0b475ccd00000000,
++ 0x8f1cc69e00000000, 0xccd7601900000000, 0x19e4e2df00000000,
++ 0x5a2f445800000000, 0xde74de0b00000000, 0x9dbf788c00000000,
++ 0xd6c3eaac00000000, 0x95084c2b00000000, 0x1153d67800000000,
++ 0x529870ff00000000, 0xf465465d00000000, 0xb7aee0da00000000,
++ 0x33f57a8900000000, 0x703edc0e00000000, 0x3b424e2e00000000,
++ 0x7889e8a900000000, 0xfcd272fa00000000, 0xbf19d47d00000000,
++ 0x6a2a56bb00000000, 0x29e1f03c00000000, 0xadba6a6f00000000,
++ 0xee71cce800000000, 0xa50d5ec800000000, 0xe6c6f84f00000000,
++ 0x629d621c00000000, 0x2156c49b00000000, 0x89fc174a00000000,
++ 0xca37b1cd00000000, 0x4e6c2b9e00000000, 0x0da78d1900000000,
++ 0x46db1f3900000000, 0x0510b9be00000000, 0x814b23ed00000000,
++ 0xc280856a00000000, 0x17b307ac00000000, 0x5478a12b00000000,
++ 0xd0233b7800000000, 0x93e89dff00000000, 0xd8940fdf00000000,
++ 0x9b5fa95800000000, 0x1f04330b00000000, 0x5ccf958c00000000,
++ 0x0e57e57300000000, 0x4d9c43f400000000, 0xc9c7d9a700000000,
++ 0x8a0c7f2000000000, 0xc170ed0000000000, 0x82bb4b8700000000,
++ 0x06e0d1d400000000, 0x452b775300000000, 0x9018f59500000000,
++ 0xd3d3531200000000, 0x5788c94100000000, 0x14436fc600000000,
++ 0x5f3ffde600000000, 0x1cf45b6100000000, 0x98afc13200000000,
++ 0xdb6467b500000000, 0x73ceb46400000000, 0x300512e300000000,
++ 0xb45e88b000000000, 0xf7952e3700000000, 0xbce9bc1700000000,
++ 0xff221a9000000000, 0x7b7980c300000000, 0x38b2264400000000,
++ 0xed81a48200000000, 0xae4a020500000000, 0x2a11985600000000,
++ 0x69da3ed100000000, 0x22a6acf100000000, 0x616d0a7600000000,
++ 0xe536902500000000, 0xa6fd36a200000000, 0xe8cb8cba00000000,
++ 0xab002a3d00000000, 0x2f5bb06e00000000, 0x6c9016e900000000,
++ 0x27ec84c900000000, 0x6427224e00000000, 0xe07cb81d00000000,
++ 0xa3b71e9a00000000, 0x76849c5c00000000, 0x354f3adb00000000,
++ 0xb114a08800000000, 0xf2df060f00000000, 0xb9a3942f00000000,
++ 0xfa6832a800000000, 0x7e33a8fb00000000, 0x3df80e7c00000000,
++ 0x9552ddad00000000, 0xd6997b2a00000000, 0x52c2e17900000000,
++ 0x110947fe00000000, 0x5a75d5de00000000, 0x19be735900000000,
++ 0x9de5e90a00000000, 0xde2e4f8d00000000, 0x0b1dcd4b00000000,
++ 0x48d66bcc00000000, 0xcc8df19f00000000, 0x8f46571800000000,
++ 0xc43ac53800000000, 0x87f163bf00000000, 0x03aaf9ec00000000,
++ 0x40615f6b00000000, 0x12f92f9400000000, 0x5132891300000000,
++ 0xd569134000000000, 0x96a2b5c700000000, 0xddde27e700000000,
++ 0x9e15816000000000, 0x1a4e1b3300000000, 0x5985bdb400000000,
++ 0x8cb63f7200000000, 0xcf7d99f500000000, 0x4b2603a600000000,
++ 0x08eda52100000000, 0x4391370100000000, 0x005a918600000000,
++ 0x84010bd500000000, 0xc7caad5200000000, 0x6f607e8300000000,
++ 0x2cabd80400000000, 0xa8f0425700000000, 0xeb3be4d000000000,
++ 0xa04776f000000000, 0xe38cd07700000000, 0x67d74a2400000000,
++ 0x241ceca300000000, 0xf12f6e6500000000, 0xb2e4c8e200000000,
++ 0x36bf52b100000000, 0x7574f43600000000, 0x3e08661600000000,
++ 0x7dc3c09100000000, 0xf9985ac200000000, 0xba53fc4500000000,
++ 0x1caecae700000000, 0x5f656c6000000000, 0xdb3ef63300000000,
++ 0x98f550b400000000, 0xd389c29400000000, 0x9042641300000000,
++ 0x1419fe4000000000, 0x57d258c700000000, 0x82e1da0100000000,
++ 0xc12a7c8600000000, 0x4571e6d500000000, 0x06ba405200000000,
++ 0x4dc6d27200000000, 0x0e0d74f500000000, 0x8a56eea600000000,
++ 0xc99d482100000000, 0x61379bf000000000, 0x22fc3d7700000000,
++ 0xa6a7a72400000000, 0xe56c01a300000000, 0xae10938300000000,
++ 0xeddb350400000000, 0x6980af5700000000, 0x2a4b09d000000000,
++ 0xff788b1600000000, 0xbcb32d9100000000, 0x38e8b7c200000000,
++ 0x7b23114500000000, 0x305f836500000000, 0x739425e200000000,
++ 0xf7cfbfb100000000, 0xb404193600000000, 0xe69c69c900000000,
++ 0xa557cf4e00000000, 0x210c551d00000000, 0x62c7f39a00000000,
++ 0x29bb61ba00000000, 0x6a70c73d00000000, 0xee2b5d6e00000000,
++ 0xade0fbe900000000, 0x78d3792f00000000, 0x3b18dfa800000000,
++ 0xbf4345fb00000000, 0xfc88e37c00000000, 0xb7f4715c00000000,
++ 0xf43fd7db00000000, 0x70644d8800000000, 0x33afeb0f00000000,
++ 0x9b0538de00000000, 0xd8ce9e5900000000, 0x5c95040a00000000,
++ 0x1f5ea28d00000000, 0x542230ad00000000, 0x17e9962a00000000,
++ 0x93b20c7900000000, 0xd079aafe00000000, 0x054a283800000000,
++ 0x46818ebf00000000, 0xc2da14ec00000000, 0x8111b26b00000000,
++ 0xca6d204b00000000, 0x89a686cc00000000, 0x0dfd1c9f00000000,
++ 0x4e36ba1800000000},
++ {0x0000000000000000, 0xe1b652ef00000000, 0x836bd40500000000,
++ 0x62dd86ea00000000, 0x06d7a80b00000000, 0xe761fae400000000,
++ 0x85bc7c0e00000000, 0x640a2ee100000000, 0x0cae511700000000,
++ 0xed1803f800000000, 0x8fc5851200000000, 0x6e73d7fd00000000,
++ 0x0a79f91c00000000, 0xebcfabf300000000, 0x89122d1900000000,
++ 0x68a47ff600000000, 0x185ca32e00000000, 0xf9eaf1c100000000,
++ 0x9b37772b00000000, 0x7a8125c400000000, 0x1e8b0b2500000000,
++ 0xff3d59ca00000000, 0x9de0df2000000000, 0x7c568dcf00000000,
++ 0x14f2f23900000000, 0xf544a0d600000000, 0x9799263c00000000,
++ 0x762f74d300000000, 0x12255a3200000000, 0xf39308dd00000000,
++ 0x914e8e3700000000, 0x70f8dcd800000000, 0x30b8465d00000000,
++ 0xd10e14b200000000, 0xb3d3925800000000, 0x5265c0b700000000,
++ 0x366fee5600000000, 0xd7d9bcb900000000, 0xb5043a5300000000,
++ 0x54b268bc00000000, 0x3c16174a00000000, 0xdda045a500000000,
++ 0xbf7dc34f00000000, 0x5ecb91a000000000, 0x3ac1bf4100000000,
++ 0xdb77edae00000000, 0xb9aa6b4400000000, 0x581c39ab00000000,
++ 0x28e4e57300000000, 0xc952b79c00000000, 0xab8f317600000000,
++ 0x4a39639900000000, 0x2e334d7800000000, 0xcf851f9700000000,
++ 0xad58997d00000000, 0x4ceecb9200000000, 0x244ab46400000000,
++ 0xc5fce68b00000000, 0xa721606100000000, 0x4697328e00000000,
++ 0x229d1c6f00000000, 0xc32b4e8000000000, 0xa1f6c86a00000000,
++ 0x40409a8500000000, 0x60708dba00000000, 0x81c6df5500000000,
++ 0xe31b59bf00000000, 0x02ad0b5000000000, 0x66a725b100000000,
++ 0x8711775e00000000, 0xe5ccf1b400000000, 0x047aa35b00000000,
++ 0x6cdedcad00000000, 0x8d688e4200000000, 0xefb508a800000000,
++ 0x0e035a4700000000, 0x6a0974a600000000, 0x8bbf264900000000,
++ 0xe962a0a300000000, 0x08d4f24c00000000, 0x782c2e9400000000,
++ 0x999a7c7b00000000, 0xfb47fa9100000000, 0x1af1a87e00000000,
++ 0x7efb869f00000000, 0x9f4dd47000000000, 0xfd90529a00000000,
++ 0x1c26007500000000, 0x74827f8300000000, 0x95342d6c00000000,
++ 0xf7e9ab8600000000, 0x165ff96900000000, 0x7255d78800000000,
++ 0x93e3856700000000, 0xf13e038d00000000, 0x1088516200000000,
++ 0x50c8cbe700000000, 0xb17e990800000000, 0xd3a31fe200000000,
++ 0x32154d0d00000000, 0x561f63ec00000000, 0xb7a9310300000000,
++ 0xd574b7e900000000, 0x34c2e50600000000, 0x5c669af000000000,
++ 0xbdd0c81f00000000, 0xdf0d4ef500000000, 0x3ebb1c1a00000000,
++ 0x5ab132fb00000000, 0xbb07601400000000, 0xd9dae6fe00000000,
++ 0x386cb41100000000, 0x489468c900000000, 0xa9223a2600000000,
++ 0xcbffbccc00000000, 0x2a49ee2300000000, 0x4e43c0c200000000,
++ 0xaff5922d00000000, 0xcd2814c700000000, 0x2c9e462800000000,
++ 0x443a39de00000000, 0xa58c6b3100000000, 0xc751eddb00000000,
++ 0x26e7bf3400000000, 0x42ed91d500000000, 0xa35bc33a00000000,
++ 0xc18645d000000000, 0x2030173f00000000, 0x81e66bae00000000,
++ 0x6050394100000000, 0x028dbfab00000000, 0xe33bed4400000000,
++ 0x8731c3a500000000, 0x6687914a00000000, 0x045a17a000000000,
++ 0xe5ec454f00000000, 0x8d483ab900000000, 0x6cfe685600000000,
++ 0x0e23eebc00000000, 0xef95bc5300000000, 0x8b9f92b200000000,
++ 0x6a29c05d00000000, 0x08f446b700000000, 0xe942145800000000,
++ 0x99bac88000000000, 0x780c9a6f00000000, 0x1ad11c8500000000,
++ 0xfb674e6a00000000, 0x9f6d608b00000000, 0x7edb326400000000,
++ 0x1c06b48e00000000, 0xfdb0e66100000000, 0x9514999700000000,
++ 0x74a2cb7800000000, 0x167f4d9200000000, 0xf7c91f7d00000000,
++ 0x93c3319c00000000, 0x7275637300000000, 0x10a8e59900000000,
++ 0xf11eb77600000000, 0xb15e2df300000000, 0x50e87f1c00000000,
++ 0x3235f9f600000000, 0xd383ab1900000000, 0xb78985f800000000,
++ 0x563fd71700000000, 0x34e251fd00000000, 0xd554031200000000,
++ 0xbdf07ce400000000, 0x5c462e0b00000000, 0x3e9ba8e100000000,
++ 0xdf2dfa0e00000000, 0xbb27d4ef00000000, 0x5a91860000000000,
++ 0x384c00ea00000000, 0xd9fa520500000000, 0xa9028edd00000000,
++ 0x48b4dc3200000000, 0x2a695ad800000000, 0xcbdf083700000000,
++ 0xafd526d600000000, 0x4e63743900000000, 0x2cbef2d300000000,
++ 0xcd08a03c00000000, 0xa5acdfca00000000, 0x441a8d2500000000,
++ 0x26c70bcf00000000, 0xc771592000000000, 0xa37b77c100000000,
++ 0x42cd252e00000000, 0x2010a3c400000000, 0xc1a6f12b00000000,
++ 0xe196e61400000000, 0x0020b4fb00000000, 0x62fd321100000000,
++ 0x834b60fe00000000, 0xe7414e1f00000000, 0x06f71cf000000000,
++ 0x642a9a1a00000000, 0x859cc8f500000000, 0xed38b70300000000,
++ 0x0c8ee5ec00000000, 0x6e53630600000000, 0x8fe531e900000000,
++ 0xebef1f0800000000, 0x0a594de700000000, 0x6884cb0d00000000,
++ 0x893299e200000000, 0xf9ca453a00000000, 0x187c17d500000000,
++ 0x7aa1913f00000000, 0x9b17c3d000000000, 0xff1ded3100000000,
++ 0x1eabbfde00000000, 0x7c76393400000000, 0x9dc06bdb00000000,
++ 0xf564142d00000000, 0x14d246c200000000, 0x760fc02800000000,
++ 0x97b992c700000000, 0xf3b3bc2600000000, 0x1205eec900000000,
++ 0x70d8682300000000, 0x916e3acc00000000, 0xd12ea04900000000,
++ 0x3098f2a600000000, 0x5245744c00000000, 0xb3f326a300000000,
++ 0xd7f9084200000000, 0x364f5aad00000000, 0x5492dc4700000000,
++ 0xb5248ea800000000, 0xdd80f15e00000000, 0x3c36a3b100000000,
++ 0x5eeb255b00000000, 0xbf5d77b400000000, 0xdb57595500000000,
++ 0x3ae10bba00000000, 0x583c8d5000000000, 0xb98adfbf00000000,
++ 0xc972036700000000, 0x28c4518800000000, 0x4a19d76200000000,
++ 0xabaf858d00000000, 0xcfa5ab6c00000000, 0x2e13f98300000000,
++ 0x4cce7f6900000000, 0xad782d8600000000, 0xc5dc527000000000,
++ 0x246a009f00000000, 0x46b7867500000000, 0xa701d49a00000000,
++ 0xc30bfa7b00000000, 0x22bda89400000000, 0x40602e7e00000000,
++ 0xa1d67c9100000000},
++ {0x0000000000000000, 0x5880e2d700000000, 0xf106b47400000000,
++ 0xa98656a300000000, 0xe20d68e900000000, 0xba8d8a3e00000000,
++ 0x130bdc9d00000000, 0x4b8b3e4a00000000, 0x851da10900000000,
++ 0xdd9d43de00000000, 0x741b157d00000000, 0x2c9bf7aa00000000,
++ 0x6710c9e000000000, 0x3f902b3700000000, 0x96167d9400000000,
++ 0xce969f4300000000, 0x0a3b421300000000, 0x52bba0c400000000,
++ 0xfb3df66700000000, 0xa3bd14b000000000, 0xe8362afa00000000,
++ 0xb0b6c82d00000000, 0x19309e8e00000000, 0x41b07c5900000000,
++ 0x8f26e31a00000000, 0xd7a601cd00000000, 0x7e20576e00000000,
++ 0x26a0b5b900000000, 0x6d2b8bf300000000, 0x35ab692400000000,
++ 0x9c2d3f8700000000, 0xc4addd5000000000, 0x1476842600000000,
++ 0x4cf666f100000000, 0xe570305200000000, 0xbdf0d28500000000,
++ 0xf67beccf00000000, 0xaefb0e1800000000, 0x077d58bb00000000,
++ 0x5ffdba6c00000000, 0x916b252f00000000, 0xc9ebc7f800000000,
++ 0x606d915b00000000, 0x38ed738c00000000, 0x73664dc600000000,
++ 0x2be6af1100000000, 0x8260f9b200000000, 0xdae01b6500000000,
++ 0x1e4dc63500000000, 0x46cd24e200000000, 0xef4b724100000000,
++ 0xb7cb909600000000, 0xfc40aedc00000000, 0xa4c04c0b00000000,
++ 0x0d461aa800000000, 0x55c6f87f00000000, 0x9b50673c00000000,
++ 0xc3d085eb00000000, 0x6a56d34800000000, 0x32d6319f00000000,
++ 0x795d0fd500000000, 0x21dded0200000000, 0x885bbba100000000,
++ 0xd0db597600000000, 0x28ec084d00000000, 0x706cea9a00000000,
++ 0xd9eabc3900000000, 0x816a5eee00000000, 0xcae160a400000000,
++ 0x9261827300000000, 0x3be7d4d000000000, 0x6367360700000000,
++ 0xadf1a94400000000, 0xf5714b9300000000, 0x5cf71d3000000000,
++ 0x0477ffe700000000, 0x4ffcc1ad00000000, 0x177c237a00000000,
++ 0xbefa75d900000000, 0xe67a970e00000000, 0x22d74a5e00000000,
++ 0x7a57a88900000000, 0xd3d1fe2a00000000, 0x8b511cfd00000000,
++ 0xc0da22b700000000, 0x985ac06000000000, 0x31dc96c300000000,
++ 0x695c741400000000, 0xa7caeb5700000000, 0xff4a098000000000,
++ 0x56cc5f2300000000, 0x0e4cbdf400000000, 0x45c783be00000000,
++ 0x1d47616900000000, 0xb4c137ca00000000, 0xec41d51d00000000,
++ 0x3c9a8c6b00000000, 0x641a6ebc00000000, 0xcd9c381f00000000,
++ 0x951cdac800000000, 0xde97e48200000000, 0x8617065500000000,
++ 0x2f9150f600000000, 0x7711b22100000000, 0xb9872d6200000000,
++ 0xe107cfb500000000, 0x4881991600000000, 0x10017bc100000000,
++ 0x5b8a458b00000000, 0x030aa75c00000000, 0xaa8cf1ff00000000,
++ 0xf20c132800000000, 0x36a1ce7800000000, 0x6e212caf00000000,
++ 0xc7a77a0c00000000, 0x9f2798db00000000, 0xd4aca69100000000,
++ 0x8c2c444600000000, 0x25aa12e500000000, 0x7d2af03200000000,
++ 0xb3bc6f7100000000, 0xeb3c8da600000000, 0x42badb0500000000,
++ 0x1a3a39d200000000, 0x51b1079800000000, 0x0931e54f00000000,
++ 0xa0b7b3ec00000000, 0xf837513b00000000, 0x50d8119a00000000,
++ 0x0858f34d00000000, 0xa1dea5ee00000000, 0xf95e473900000000,
++ 0xb2d5797300000000, 0xea559ba400000000, 0x43d3cd0700000000,
++ 0x1b532fd000000000, 0xd5c5b09300000000, 0x8d45524400000000,
++ 0x24c304e700000000, 0x7c43e63000000000, 0x37c8d87a00000000,
++ 0x6f483aad00000000, 0xc6ce6c0e00000000, 0x9e4e8ed900000000,
++ 0x5ae3538900000000, 0x0263b15e00000000, 0xabe5e7fd00000000,
++ 0xf365052a00000000, 0xb8ee3b6000000000, 0xe06ed9b700000000,
++ 0x49e88f1400000000, 0x11686dc300000000, 0xdffef28000000000,
++ 0x877e105700000000, 0x2ef846f400000000, 0x7678a42300000000,
++ 0x3df39a6900000000, 0x657378be00000000, 0xccf52e1d00000000,
++ 0x9475ccca00000000, 0x44ae95bc00000000, 0x1c2e776b00000000,
++ 0xb5a821c800000000, 0xed28c31f00000000, 0xa6a3fd5500000000,
++ 0xfe231f8200000000, 0x57a5492100000000, 0x0f25abf600000000,
++ 0xc1b334b500000000, 0x9933d66200000000, 0x30b580c100000000,
++ 0x6835621600000000, 0x23be5c5c00000000, 0x7b3ebe8b00000000,
++ 0xd2b8e82800000000, 0x8a380aff00000000, 0x4e95d7af00000000,
++ 0x1615357800000000, 0xbf9363db00000000, 0xe713810c00000000,
++ 0xac98bf4600000000, 0xf4185d9100000000, 0x5d9e0b3200000000,
++ 0x051ee9e500000000, 0xcb8876a600000000, 0x9308947100000000,
++ 0x3a8ec2d200000000, 0x620e200500000000, 0x29851e4f00000000,
++ 0x7105fc9800000000, 0xd883aa3b00000000, 0x800348ec00000000,
++ 0x783419d700000000, 0x20b4fb0000000000, 0x8932ada300000000,
++ 0xd1b24f7400000000, 0x9a39713e00000000, 0xc2b993e900000000,
++ 0x6b3fc54a00000000, 0x33bf279d00000000, 0xfd29b8de00000000,
++ 0xa5a95a0900000000, 0x0c2f0caa00000000, 0x54afee7d00000000,
++ 0x1f24d03700000000, 0x47a432e000000000, 0xee22644300000000,
++ 0xb6a2869400000000, 0x720f5bc400000000, 0x2a8fb91300000000,
++ 0x8309efb000000000, 0xdb890d6700000000, 0x9002332d00000000,
++ 0xc882d1fa00000000, 0x6104875900000000, 0x3984658e00000000,
++ 0xf712facd00000000, 0xaf92181a00000000, 0x06144eb900000000,
++ 0x5e94ac6e00000000, 0x151f922400000000, 0x4d9f70f300000000,
++ 0xe419265000000000, 0xbc99c48700000000, 0x6c429df100000000,
++ 0x34c27f2600000000, 0x9d44298500000000, 0xc5c4cb5200000000,
++ 0x8e4ff51800000000, 0xd6cf17cf00000000, 0x7f49416c00000000,
++ 0x27c9a3bb00000000, 0xe95f3cf800000000, 0xb1dfde2f00000000,
++ 0x1859888c00000000, 0x40d96a5b00000000, 0x0b52541100000000,
++ 0x53d2b6c600000000, 0xfa54e06500000000, 0xa2d402b200000000,
++ 0x6679dfe200000000, 0x3ef93d3500000000, 0x977f6b9600000000,
++ 0xcfff894100000000, 0x8474b70b00000000, 0xdcf455dc00000000,
++ 0x7572037f00000000, 0x2df2e1a800000000, 0xe3647eeb00000000,
++ 0xbbe49c3c00000000, 0x1262ca9f00000000, 0x4ae2284800000000,
++ 0x0169160200000000, 0x59e9f4d500000000, 0xf06fa27600000000,
++ 0xa8ef40a100000000},
++ {0x0000000000000000, 0x463b676500000000, 0x8c76ceca00000000,
++ 0xca4da9af00000000, 0x59ebed4e00000000, 0x1fd08a2b00000000,
++ 0xd59d238400000000, 0x93a644e100000000, 0xb2d6db9d00000000,
++ 0xf4edbcf800000000, 0x3ea0155700000000, 0x789b723200000000,
++ 0xeb3d36d300000000, 0xad0651b600000000, 0x674bf81900000000,
++ 0x21709f7c00000000, 0x25abc6e000000000, 0x6390a18500000000,
++ 0xa9dd082a00000000, 0xefe66f4f00000000, 0x7c402bae00000000,
++ 0x3a7b4ccb00000000, 0xf036e56400000000, 0xb60d820100000000,
++ 0x977d1d7d00000000, 0xd1467a1800000000, 0x1b0bd3b700000000,
++ 0x5d30b4d200000000, 0xce96f03300000000, 0x88ad975600000000,
++ 0x42e03ef900000000, 0x04db599c00000000, 0x0b50fc1a00000000,
++ 0x4d6b9b7f00000000, 0x872632d000000000, 0xc11d55b500000000,
++ 0x52bb115400000000, 0x1480763100000000, 0xdecddf9e00000000,
++ 0x98f6b8fb00000000, 0xb986278700000000, 0xffbd40e200000000,
++ 0x35f0e94d00000000, 0x73cb8e2800000000, 0xe06dcac900000000,
++ 0xa656adac00000000, 0x6c1b040300000000, 0x2a20636600000000,
++ 0x2efb3afa00000000, 0x68c05d9f00000000, 0xa28df43000000000,
++ 0xe4b6935500000000, 0x7710d7b400000000, 0x312bb0d100000000,
++ 0xfb66197e00000000, 0xbd5d7e1b00000000, 0x9c2de16700000000,
++ 0xda16860200000000, 0x105b2fad00000000, 0x566048c800000000,
++ 0xc5c60c2900000000, 0x83fd6b4c00000000, 0x49b0c2e300000000,
++ 0x0f8ba58600000000, 0x16a0f83500000000, 0x509b9f5000000000,
++ 0x9ad636ff00000000, 0xdced519a00000000, 0x4f4b157b00000000,
++ 0x0970721e00000000, 0xc33ddbb100000000, 0x8506bcd400000000,
++ 0xa47623a800000000, 0xe24d44cd00000000, 0x2800ed6200000000,
++ 0x6e3b8a0700000000, 0xfd9dcee600000000, 0xbba6a98300000000,
++ 0x71eb002c00000000, 0x37d0674900000000, 0x330b3ed500000000,
++ 0x753059b000000000, 0xbf7df01f00000000, 0xf946977a00000000,
++ 0x6ae0d39b00000000, 0x2cdbb4fe00000000, 0xe6961d5100000000,
++ 0xa0ad7a3400000000, 0x81dde54800000000, 0xc7e6822d00000000,
++ 0x0dab2b8200000000, 0x4b904ce700000000, 0xd836080600000000,
++ 0x9e0d6f6300000000, 0x5440c6cc00000000, 0x127ba1a900000000,
++ 0x1df0042f00000000, 0x5bcb634a00000000, 0x9186cae500000000,
++ 0xd7bdad8000000000, 0x441be96100000000, 0x02208e0400000000,
++ 0xc86d27ab00000000, 0x8e5640ce00000000, 0xaf26dfb200000000,
++ 0xe91db8d700000000, 0x2350117800000000, 0x656b761d00000000,
++ 0xf6cd32fc00000000, 0xb0f6559900000000, 0x7abbfc3600000000,
++ 0x3c809b5300000000, 0x385bc2cf00000000, 0x7e60a5aa00000000,
++ 0xb42d0c0500000000, 0xf2166b6000000000, 0x61b02f8100000000,
++ 0x278b48e400000000, 0xedc6e14b00000000, 0xabfd862e00000000,
++ 0x8a8d195200000000, 0xccb67e3700000000, 0x06fbd79800000000,
++ 0x40c0b0fd00000000, 0xd366f41c00000000, 0x955d937900000000,
++ 0x5f103ad600000000, 0x192b5db300000000, 0x2c40f16b00000000,
++ 0x6a7b960e00000000, 0xa0363fa100000000, 0xe60d58c400000000,
++ 0x75ab1c2500000000, 0x33907b4000000000, 0xf9ddd2ef00000000,
++ 0xbfe6b58a00000000, 0x9e962af600000000, 0xd8ad4d9300000000,
++ 0x12e0e43c00000000, 0x54db835900000000, 0xc77dc7b800000000,
++ 0x8146a0dd00000000, 0x4b0b097200000000, 0x0d306e1700000000,
++ 0x09eb378b00000000, 0x4fd050ee00000000, 0x859df94100000000,
++ 0xc3a69e2400000000, 0x5000dac500000000, 0x163bbda000000000,
++ 0xdc76140f00000000, 0x9a4d736a00000000, 0xbb3dec1600000000,
++ 0xfd068b7300000000, 0x374b22dc00000000, 0x717045b900000000,
++ 0xe2d6015800000000, 0xa4ed663d00000000, 0x6ea0cf9200000000,
++ 0x289ba8f700000000, 0x27100d7100000000, 0x612b6a1400000000,
++ 0xab66c3bb00000000, 0xed5da4de00000000, 0x7efbe03f00000000,
++ 0x38c0875a00000000, 0xf28d2ef500000000, 0xb4b6499000000000,
++ 0x95c6d6ec00000000, 0xd3fdb18900000000, 0x19b0182600000000,
++ 0x5f8b7f4300000000, 0xcc2d3ba200000000, 0x8a165cc700000000,
++ 0x405bf56800000000, 0x0660920d00000000, 0x02bbcb9100000000,
++ 0x4480acf400000000, 0x8ecd055b00000000, 0xc8f6623e00000000,
++ 0x5b5026df00000000, 0x1d6b41ba00000000, 0xd726e81500000000,
++ 0x911d8f7000000000, 0xb06d100c00000000, 0xf656776900000000,
++ 0x3c1bdec600000000, 0x7a20b9a300000000, 0xe986fd4200000000,
++ 0xafbd9a2700000000, 0x65f0338800000000, 0x23cb54ed00000000,
++ 0x3ae0095e00000000, 0x7cdb6e3b00000000, 0xb696c79400000000,
++ 0xf0ada0f100000000, 0x630be41000000000, 0x2530837500000000,
++ 0xef7d2ada00000000, 0xa9464dbf00000000, 0x8836d2c300000000,
++ 0xce0db5a600000000, 0x04401c0900000000, 0x427b7b6c00000000,
++ 0xd1dd3f8d00000000, 0x97e658e800000000, 0x5dabf14700000000,
++ 0x1b90962200000000, 0x1f4bcfbe00000000, 0x5970a8db00000000,
++ 0x933d017400000000, 0xd506661100000000, 0x46a022f000000000,
++ 0x009b459500000000, 0xcad6ec3a00000000, 0x8ced8b5f00000000,
++ 0xad9d142300000000, 0xeba6734600000000, 0x21ebdae900000000,
++ 0x67d0bd8c00000000, 0xf476f96d00000000, 0xb24d9e0800000000,
++ 0x780037a700000000, 0x3e3b50c200000000, 0x31b0f54400000000,
++ 0x778b922100000000, 0xbdc63b8e00000000, 0xfbfd5ceb00000000,
++ 0x685b180a00000000, 0x2e607f6f00000000, 0xe42dd6c000000000,
++ 0xa216b1a500000000, 0x83662ed900000000, 0xc55d49bc00000000,
++ 0x0f10e01300000000, 0x492b877600000000, 0xda8dc39700000000,
++ 0x9cb6a4f200000000, 0x56fb0d5d00000000, 0x10c06a3800000000,
++ 0x141b33a400000000, 0x522054c100000000, 0x986dfd6e00000000,
++ 0xde569a0b00000000, 0x4df0deea00000000, 0x0bcbb98f00000000,
++ 0xc186102000000000, 0x87bd774500000000, 0xa6cde83900000000,
++ 0xe0f68f5c00000000, 0x2abb26f300000000, 0x6c80419600000000,
++ 0xff26057700000000, 0xb91d621200000000, 0x7350cbbd00000000,
++ 0x356bacd800000000},
++ {0x0000000000000000, 0x9e83da9f00000000, 0x7d01c4e400000000,
++ 0xe3821e7b00000000, 0xbb04f91200000000, 0x2587238d00000000,
++ 0xc6053df600000000, 0x5886e76900000000, 0x7609f22500000000,
++ 0xe88a28ba00000000, 0x0b0836c100000000, 0x958bec5e00000000,
++ 0xcd0d0b3700000000, 0x538ed1a800000000, 0xb00ccfd300000000,
++ 0x2e8f154c00000000, 0xec12e44b00000000, 0x72913ed400000000,
++ 0x911320af00000000, 0x0f90fa3000000000, 0x57161d5900000000,
++ 0xc995c7c600000000, 0x2a17d9bd00000000, 0xb494032200000000,
++ 0x9a1b166e00000000, 0x0498ccf100000000, 0xe71ad28a00000000,
++ 0x7999081500000000, 0x211fef7c00000000, 0xbf9c35e300000000,
++ 0x5c1e2b9800000000, 0xc29df10700000000, 0xd825c89700000000,
++ 0x46a6120800000000, 0xa5240c7300000000, 0x3ba7d6ec00000000,
++ 0x6321318500000000, 0xfda2eb1a00000000, 0x1e20f56100000000,
++ 0x80a32ffe00000000, 0xae2c3ab200000000, 0x30afe02d00000000,
++ 0xd32dfe5600000000, 0x4dae24c900000000, 0x1528c3a000000000,
++ 0x8bab193f00000000, 0x6829074400000000, 0xf6aadddb00000000,
++ 0x34372cdc00000000, 0xaab4f64300000000, 0x4936e83800000000,
++ 0xd7b532a700000000, 0x8f33d5ce00000000, 0x11b00f5100000000,
++ 0xf232112a00000000, 0x6cb1cbb500000000, 0x423edef900000000,
++ 0xdcbd046600000000, 0x3f3f1a1d00000000, 0xa1bcc08200000000,
++ 0xf93a27eb00000000, 0x67b9fd7400000000, 0x843be30f00000000,
++ 0x1ab8399000000000, 0xf14de1f400000000, 0x6fce3b6b00000000,
++ 0x8c4c251000000000, 0x12cfff8f00000000, 0x4a4918e600000000,
++ 0xd4cac27900000000, 0x3748dc0200000000, 0xa9cb069d00000000,
++ 0x874413d100000000, 0x19c7c94e00000000, 0xfa45d73500000000,
++ 0x64c60daa00000000, 0x3c40eac300000000, 0xa2c3305c00000000,
++ 0x41412e2700000000, 0xdfc2f4b800000000, 0x1d5f05bf00000000,
++ 0x83dcdf2000000000, 0x605ec15b00000000, 0xfedd1bc400000000,
++ 0xa65bfcad00000000, 0x38d8263200000000, 0xdb5a384900000000,
++ 0x45d9e2d600000000, 0x6b56f79a00000000, 0xf5d52d0500000000,
++ 0x1657337e00000000, 0x88d4e9e100000000, 0xd0520e8800000000,
++ 0x4ed1d41700000000, 0xad53ca6c00000000, 0x33d010f300000000,
++ 0x2968296300000000, 0xb7ebf3fc00000000, 0x5469ed8700000000,
++ 0xcaea371800000000, 0x926cd07100000000, 0x0cef0aee00000000,
++ 0xef6d149500000000, 0x71eece0a00000000, 0x5f61db4600000000,
++ 0xc1e201d900000000, 0x22601fa200000000, 0xbce3c53d00000000,
++ 0xe465225400000000, 0x7ae6f8cb00000000, 0x9964e6b000000000,
++ 0x07e73c2f00000000, 0xc57acd2800000000, 0x5bf917b700000000,
++ 0xb87b09cc00000000, 0x26f8d35300000000, 0x7e7e343a00000000,
++ 0xe0fdeea500000000, 0x037ff0de00000000, 0x9dfc2a4100000000,
++ 0xb3733f0d00000000, 0x2df0e59200000000, 0xce72fbe900000000,
++ 0x50f1217600000000, 0x0877c61f00000000, 0x96f41c8000000000,
++ 0x757602fb00000000, 0xebf5d86400000000, 0xa39db33200000000,
++ 0x3d1e69ad00000000, 0xde9c77d600000000, 0x401fad4900000000,
++ 0x18994a2000000000, 0x861a90bf00000000, 0x65988ec400000000,
++ 0xfb1b545b00000000, 0xd594411700000000, 0x4b179b8800000000,
++ 0xa89585f300000000, 0x36165f6c00000000, 0x6e90b80500000000,
++ 0xf013629a00000000, 0x13917ce100000000, 0x8d12a67e00000000,
++ 0x4f8f577900000000, 0xd10c8de600000000, 0x328e939d00000000,
++ 0xac0d490200000000, 0xf48bae6b00000000, 0x6a0874f400000000,
++ 0x898a6a8f00000000, 0x1709b01000000000, 0x3986a55c00000000,
++ 0xa7057fc300000000, 0x448761b800000000, 0xda04bb2700000000,
++ 0x82825c4e00000000, 0x1c0186d100000000, 0xff8398aa00000000,
++ 0x6100423500000000, 0x7bb87ba500000000, 0xe53ba13a00000000,
++ 0x06b9bf4100000000, 0x983a65de00000000, 0xc0bc82b700000000,
++ 0x5e3f582800000000, 0xbdbd465300000000, 0x233e9ccc00000000,
++ 0x0db1898000000000, 0x9332531f00000000, 0x70b04d6400000000,
++ 0xee3397fb00000000, 0xb6b5709200000000, 0x2836aa0d00000000,
++ 0xcbb4b47600000000, 0x55376ee900000000, 0x97aa9fee00000000,
++ 0x0929457100000000, 0xeaab5b0a00000000, 0x7428819500000000,
++ 0x2cae66fc00000000, 0xb22dbc6300000000, 0x51afa21800000000,
++ 0xcf2c788700000000, 0xe1a36dcb00000000, 0x7f20b75400000000,
++ 0x9ca2a92f00000000, 0x022173b000000000, 0x5aa794d900000000,
++ 0xc4244e4600000000, 0x27a6503d00000000, 0xb9258aa200000000,
++ 0x52d052c600000000, 0xcc53885900000000, 0x2fd1962200000000,
++ 0xb1524cbd00000000, 0xe9d4abd400000000, 0x7757714b00000000,
++ 0x94d56f3000000000, 0x0a56b5af00000000, 0x24d9a0e300000000,
++ 0xba5a7a7c00000000, 0x59d8640700000000, 0xc75bbe9800000000,
++ 0x9fdd59f100000000, 0x015e836e00000000, 0xe2dc9d1500000000,
++ 0x7c5f478a00000000, 0xbec2b68d00000000, 0x20416c1200000000,
++ 0xc3c3726900000000, 0x5d40a8f600000000, 0x05c64f9f00000000,
++ 0x9b45950000000000, 0x78c78b7b00000000, 0xe64451e400000000,
++ 0xc8cb44a800000000, 0x56489e3700000000, 0xb5ca804c00000000,
++ 0x2b495ad300000000, 0x73cfbdba00000000, 0xed4c672500000000,
++ 0x0ece795e00000000, 0x904da3c100000000, 0x8af59a5100000000,
++ 0x147640ce00000000, 0xf7f45eb500000000, 0x6977842a00000000,
++ 0x31f1634300000000, 0xaf72b9dc00000000, 0x4cf0a7a700000000,
++ 0xd2737d3800000000, 0xfcfc687400000000, 0x627fb2eb00000000,
++ 0x81fdac9000000000, 0x1f7e760f00000000, 0x47f8916600000000,
++ 0xd97b4bf900000000, 0x3af9558200000000, 0xa47a8f1d00000000,
++ 0x66e77e1a00000000, 0xf864a48500000000, 0x1be6bafe00000000,
++ 0x8565606100000000, 0xdde3870800000000, 0x43605d9700000000,
++ 0xa0e243ec00000000, 0x3e61997300000000, 0x10ee8c3f00000000,
++ 0x8e6d56a000000000, 0x6def48db00000000, 0xf36c924400000000,
++ 0xabea752d00000000, 0x3569afb200000000, 0xd6ebb1c900000000,
++ 0x48686b5600000000},
++ {0x0000000000000000, 0xc064281700000000, 0x80c9502e00000000,
++ 0x40ad783900000000, 0x0093a15c00000000, 0xc0f7894b00000000,
++ 0x805af17200000000, 0x403ed96500000000, 0x002643b900000000,
++ 0xc0426bae00000000, 0x80ef139700000000, 0x408b3b8000000000,
++ 0x00b5e2e500000000, 0xc0d1caf200000000, 0x807cb2cb00000000,
++ 0x40189adc00000000, 0x414af7a900000000, 0x812edfbe00000000,
++ 0xc183a78700000000, 0x01e78f9000000000, 0x41d956f500000000,
++ 0x81bd7ee200000000, 0xc11006db00000000, 0x01742ecc00000000,
++ 0x416cb41000000000, 0x81089c0700000000, 0xc1a5e43e00000000,
++ 0x01c1cc2900000000, 0x41ff154c00000000, 0x819b3d5b00000000,
++ 0xc136456200000000, 0x01526d7500000000, 0xc3929f8800000000,
++ 0x03f6b79f00000000, 0x435bcfa600000000, 0x833fe7b100000000,
++ 0xc3013ed400000000, 0x036516c300000000, 0x43c86efa00000000,
++ 0x83ac46ed00000000, 0xc3b4dc3100000000, 0x03d0f42600000000,
++ 0x437d8c1f00000000, 0x8319a40800000000, 0xc3277d6d00000000,
++ 0x0343557a00000000, 0x43ee2d4300000000, 0x838a055400000000,
++ 0x82d8682100000000, 0x42bc403600000000, 0x0211380f00000000,
++ 0xc275101800000000, 0x824bc97d00000000, 0x422fe16a00000000,
++ 0x0282995300000000, 0xc2e6b14400000000, 0x82fe2b9800000000,
++ 0x429a038f00000000, 0x02377bb600000000, 0xc25353a100000000,
++ 0x826d8ac400000000, 0x4209a2d300000000, 0x02a4daea00000000,
++ 0xc2c0f2fd00000000, 0xc7234eca00000000, 0x074766dd00000000,
++ 0x47ea1ee400000000, 0x878e36f300000000, 0xc7b0ef9600000000,
++ 0x07d4c78100000000, 0x4779bfb800000000, 0x871d97af00000000,
++ 0xc7050d7300000000, 0x0761256400000000, 0x47cc5d5d00000000,
++ 0x87a8754a00000000, 0xc796ac2f00000000, 0x07f2843800000000,
++ 0x475ffc0100000000, 0x873bd41600000000, 0x8669b96300000000,
++ 0x460d917400000000, 0x06a0e94d00000000, 0xc6c4c15a00000000,
++ 0x86fa183f00000000, 0x469e302800000000, 0x0633481100000000,
++ 0xc657600600000000, 0x864ffada00000000, 0x462bd2cd00000000,
++ 0x0686aaf400000000, 0xc6e282e300000000, 0x86dc5b8600000000,
++ 0x46b8739100000000, 0x06150ba800000000, 0xc67123bf00000000,
++ 0x04b1d14200000000, 0xc4d5f95500000000, 0x8478816c00000000,
++ 0x441ca97b00000000, 0x0422701e00000000, 0xc446580900000000,
++ 0x84eb203000000000, 0x448f082700000000, 0x049792fb00000000,
++ 0xc4f3baec00000000, 0x845ec2d500000000, 0x443aeac200000000,
++ 0x040433a700000000, 0xc4601bb000000000, 0x84cd638900000000,
++ 0x44a94b9e00000000, 0x45fb26eb00000000, 0x859f0efc00000000,
++ 0xc53276c500000000, 0x05565ed200000000, 0x456887b700000000,
++ 0x850cafa000000000, 0xc5a1d79900000000, 0x05c5ff8e00000000,
++ 0x45dd655200000000, 0x85b94d4500000000, 0xc514357c00000000,
++ 0x05701d6b00000000, 0x454ec40e00000000, 0x852aec1900000000,
++ 0xc587942000000000, 0x05e3bc3700000000, 0xcf41ed4f00000000,
++ 0x0f25c55800000000, 0x4f88bd6100000000, 0x8fec957600000000,
++ 0xcfd24c1300000000, 0x0fb6640400000000, 0x4f1b1c3d00000000,
++ 0x8f7f342a00000000, 0xcf67aef600000000, 0x0f0386e100000000,
++ 0x4faefed800000000, 0x8fcad6cf00000000, 0xcff40faa00000000,
++ 0x0f9027bd00000000, 0x4f3d5f8400000000, 0x8f59779300000000,
++ 0x8e0b1ae600000000, 0x4e6f32f100000000, 0x0ec24ac800000000,
++ 0xcea662df00000000, 0x8e98bbba00000000, 0x4efc93ad00000000,
++ 0x0e51eb9400000000, 0xce35c38300000000, 0x8e2d595f00000000,
++ 0x4e49714800000000, 0x0ee4097100000000, 0xce80216600000000,
++ 0x8ebef80300000000, 0x4edad01400000000, 0x0e77a82d00000000,
++ 0xce13803a00000000, 0x0cd372c700000000, 0xccb75ad000000000,
++ 0x8c1a22e900000000, 0x4c7e0afe00000000, 0x0c40d39b00000000,
++ 0xcc24fb8c00000000, 0x8c8983b500000000, 0x4cedaba200000000,
++ 0x0cf5317e00000000, 0xcc91196900000000, 0x8c3c615000000000,
++ 0x4c58494700000000, 0x0c66902200000000, 0xcc02b83500000000,
++ 0x8cafc00c00000000, 0x4ccbe81b00000000, 0x4d99856e00000000,
++ 0x8dfdad7900000000, 0xcd50d54000000000, 0x0d34fd5700000000,
++ 0x4d0a243200000000, 0x8d6e0c2500000000, 0xcdc3741c00000000,
++ 0x0da75c0b00000000, 0x4dbfc6d700000000, 0x8ddbeec000000000,
++ 0xcd7696f900000000, 0x0d12beee00000000, 0x4d2c678b00000000,
++ 0x8d484f9c00000000, 0xcde537a500000000, 0x0d811fb200000000,
++ 0x0862a38500000000, 0xc8068b9200000000, 0x88abf3ab00000000,
++ 0x48cfdbbc00000000, 0x08f102d900000000, 0xc8952ace00000000,
++ 0x883852f700000000, 0x485c7ae000000000, 0x0844e03c00000000,
++ 0xc820c82b00000000, 0x888db01200000000, 0x48e9980500000000,
++ 0x08d7416000000000, 0xc8b3697700000000, 0x881e114e00000000,
++ 0x487a395900000000, 0x4928542c00000000, 0x894c7c3b00000000,
++ 0xc9e1040200000000, 0x09852c1500000000, 0x49bbf57000000000,
++ 0x89dfdd6700000000, 0xc972a55e00000000, 0x09168d4900000000,
++ 0x490e179500000000, 0x896a3f8200000000, 0xc9c747bb00000000,
++ 0x09a36fac00000000, 0x499db6c900000000, 0x89f99ede00000000,
++ 0xc954e6e700000000, 0x0930cef000000000, 0xcbf03c0d00000000,
++ 0x0b94141a00000000, 0x4b396c2300000000, 0x8b5d443400000000,
++ 0xcb639d5100000000, 0x0b07b54600000000, 0x4baacd7f00000000,
++ 0x8bcee56800000000, 0xcbd67fb400000000, 0x0bb257a300000000,
++ 0x4b1f2f9a00000000, 0x8b7b078d00000000, 0xcb45dee800000000,
++ 0x0b21f6ff00000000, 0x4b8c8ec600000000, 0x8be8a6d100000000,
++ 0x8abacba400000000, 0x4adee3b300000000, 0x0a739b8a00000000,
++ 0xca17b39d00000000, 0x8a296af800000000, 0x4a4d42ef00000000,
++ 0x0ae03ad600000000, 0xca8412c100000000, 0x8a9c881d00000000,
++ 0x4af8a00a00000000, 0x0a55d83300000000, 0xca31f02400000000,
++ 0x8a0f294100000000, 0x4a6b015600000000, 0x0ac6796f00000000,
++ 0xcaa2517800000000},
++ {0x0000000000000000, 0xd4ea739b00000000, 0xe9d396ed00000000,
++ 0x3d39e57600000000, 0x93a15c0000000000, 0x474b2f9b00000000,
++ 0x7a72caed00000000, 0xae98b97600000000, 0x2643b90000000000,
++ 0xf2a9ca9b00000000, 0xcf902fed00000000, 0x1b7a5c7600000000,
++ 0xb5e2e50000000000, 0x6108969b00000000, 0x5c3173ed00000000,
++ 0x88db007600000000, 0x4c86720100000000, 0x986c019a00000000,
++ 0xa555e4ec00000000, 0x71bf977700000000, 0xdf272e0100000000,
++ 0x0bcd5d9a00000000, 0x36f4b8ec00000000, 0xe21ecb7700000000,
++ 0x6ac5cb0100000000, 0xbe2fb89a00000000, 0x83165dec00000000,
++ 0x57fc2e7700000000, 0xf964970100000000, 0x2d8ee49a00000000,
++ 0x10b701ec00000000, 0xc45d727700000000, 0x980ce50200000000,
++ 0x4ce6969900000000, 0x71df73ef00000000, 0xa535007400000000,
++ 0x0badb90200000000, 0xdf47ca9900000000, 0xe27e2fef00000000,
++ 0x36945c7400000000, 0xbe4f5c0200000000, 0x6aa52f9900000000,
++ 0x579ccaef00000000, 0x8376b97400000000, 0x2dee000200000000,
++ 0xf904739900000000, 0xc43d96ef00000000, 0x10d7e57400000000,
++ 0xd48a970300000000, 0x0060e49800000000, 0x3d5901ee00000000,
++ 0xe9b3727500000000, 0x472bcb0300000000, 0x93c1b89800000000,
++ 0xaef85dee00000000, 0x7a122e7500000000, 0xf2c92e0300000000,
++ 0x26235d9800000000, 0x1b1ab8ee00000000, 0xcff0cb7500000000,
++ 0x6168720300000000, 0xb582019800000000, 0x88bbe4ee00000000,
++ 0x5c51977500000000, 0x3019ca0500000000, 0xe4f3b99e00000000,
++ 0xd9ca5ce800000000, 0x0d202f7300000000, 0xa3b8960500000000,
++ 0x7752e59e00000000, 0x4a6b00e800000000, 0x9e81737300000000,
++ 0x165a730500000000, 0xc2b0009e00000000, 0xff89e5e800000000,
++ 0x2b63967300000000, 0x85fb2f0500000000, 0x51115c9e00000000,
++ 0x6c28b9e800000000, 0xb8c2ca7300000000, 0x7c9fb80400000000,
++ 0xa875cb9f00000000, 0x954c2ee900000000, 0x41a65d7200000000,
++ 0xef3ee40400000000, 0x3bd4979f00000000, 0x06ed72e900000000,
++ 0xd207017200000000, 0x5adc010400000000, 0x8e36729f00000000,
++ 0xb30f97e900000000, 0x67e5e47200000000, 0xc97d5d0400000000,
++ 0x1d972e9f00000000, 0x20aecbe900000000, 0xf444b87200000000,
++ 0xa8152f0700000000, 0x7cff5c9c00000000, 0x41c6b9ea00000000,
++ 0x952cca7100000000, 0x3bb4730700000000, 0xef5e009c00000000,
++ 0xd267e5ea00000000, 0x068d967100000000, 0x8e56960700000000,
++ 0x5abce59c00000000, 0x678500ea00000000, 0xb36f737100000000,
++ 0x1df7ca0700000000, 0xc91db99c00000000, 0xf4245cea00000000,
++ 0x20ce2f7100000000, 0xe4935d0600000000, 0x30792e9d00000000,
++ 0x0d40cbeb00000000, 0xd9aab87000000000, 0x7732010600000000,
++ 0xa3d8729d00000000, 0x9ee197eb00000000, 0x4a0be47000000000,
++ 0xc2d0e40600000000, 0x163a979d00000000, 0x2b0372eb00000000,
++ 0xffe9017000000000, 0x5171b80600000000, 0x859bcb9d00000000,
++ 0xb8a22eeb00000000, 0x6c485d7000000000, 0x6032940b00000000,
++ 0xb4d8e79000000000, 0x89e102e600000000, 0x5d0b717d00000000,
++ 0xf393c80b00000000, 0x2779bb9000000000, 0x1a405ee600000000,
++ 0xceaa2d7d00000000, 0x46712d0b00000000, 0x929b5e9000000000,
++ 0xafa2bbe600000000, 0x7b48c87d00000000, 0xd5d0710b00000000,
++ 0x013a029000000000, 0x3c03e7e600000000, 0xe8e9947d00000000,
++ 0x2cb4e60a00000000, 0xf85e959100000000, 0xc56770e700000000,
++ 0x118d037c00000000, 0xbf15ba0a00000000, 0x6bffc99100000000,
++ 0x56c62ce700000000, 0x822c5f7c00000000, 0x0af75f0a00000000,
++ 0xde1d2c9100000000, 0xe324c9e700000000, 0x37ceba7c00000000,
++ 0x9956030a00000000, 0x4dbc709100000000, 0x708595e700000000,
++ 0xa46fe67c00000000, 0xf83e710900000000, 0x2cd4029200000000,
++ 0x11ede7e400000000, 0xc507947f00000000, 0x6b9f2d0900000000,
++ 0xbf755e9200000000, 0x824cbbe400000000, 0x56a6c87f00000000,
++ 0xde7dc80900000000, 0x0a97bb9200000000, 0x37ae5ee400000000,
++ 0xe3442d7f00000000, 0x4ddc940900000000, 0x9936e79200000000,
++ 0xa40f02e400000000, 0x70e5717f00000000, 0xb4b8030800000000,
++ 0x6052709300000000, 0x5d6b95e500000000, 0x8981e67e00000000,
++ 0x27195f0800000000, 0xf3f32c9300000000, 0xcecac9e500000000,
++ 0x1a20ba7e00000000, 0x92fbba0800000000, 0x4611c99300000000,
++ 0x7b282ce500000000, 0xafc25f7e00000000, 0x015ae60800000000,
++ 0xd5b0959300000000, 0xe88970e500000000, 0x3c63037e00000000,
++ 0x502b5e0e00000000, 0x84c12d9500000000, 0xb9f8c8e300000000,
++ 0x6d12bb7800000000, 0xc38a020e00000000, 0x1760719500000000,
++ 0x2a5994e300000000, 0xfeb3e77800000000, 0x7668e70e00000000,
++ 0xa282949500000000, 0x9fbb71e300000000, 0x4b51027800000000,
++ 0xe5c9bb0e00000000, 0x3123c89500000000, 0x0c1a2de300000000,
++ 0xd8f05e7800000000, 0x1cad2c0f00000000, 0xc8475f9400000000,
++ 0xf57ebae200000000, 0x2194c97900000000, 0x8f0c700f00000000,
++ 0x5be6039400000000, 0x66dfe6e200000000, 0xb235957900000000,
++ 0x3aee950f00000000, 0xee04e69400000000, 0xd33d03e200000000,
++ 0x07d7707900000000, 0xa94fc90f00000000, 0x7da5ba9400000000,
++ 0x409c5fe200000000, 0x94762c7900000000, 0xc827bb0c00000000,
++ 0x1ccdc89700000000, 0x21f42de100000000, 0xf51e5e7a00000000,
++ 0x5b86e70c00000000, 0x8f6c949700000000, 0xb25571e100000000,
++ 0x66bf027a00000000, 0xee64020c00000000, 0x3a8e719700000000,
++ 0x07b794e100000000, 0xd35de77a00000000, 0x7dc55e0c00000000,
++ 0xa92f2d9700000000, 0x9416c8e100000000, 0x40fcbb7a00000000,
++ 0x84a1c90d00000000, 0x504bba9600000000, 0x6d725fe000000000,
++ 0xb9982c7b00000000, 0x1700950d00000000, 0xc3eae69600000000,
++ 0xfed303e000000000, 0x2a39707b00000000, 0xa2e2700d00000000,
++ 0x7608039600000000, 0x4b31e6e000000000, 0x9fdb957b00000000,
++ 0x31432c0d00000000, 0xe5a95f9600000000, 0xd890bae000000000,
++ 0x0c7ac97b00000000},
++ {0x0000000000000000, 0x2765258100000000, 0x0fcc3bd900000000,
++ 0x28a91e5800000000, 0x5f9e066900000000, 0x78fb23e800000000,
++ 0x50523db000000000, 0x7737183100000000, 0xbe3c0dd200000000,
++ 0x9959285300000000, 0xb1f0360b00000000, 0x9695138a00000000,
++ 0xe1a20bbb00000000, 0xc6c72e3a00000000, 0xee6e306200000000,
++ 0xc90b15e300000000, 0x3d7f6b7f00000000, 0x1a1a4efe00000000,
++ 0x32b350a600000000, 0x15d6752700000000, 0x62e16d1600000000,
++ 0x4584489700000000, 0x6d2d56cf00000000, 0x4a48734e00000000,
++ 0x834366ad00000000, 0xa426432c00000000, 0x8c8f5d7400000000,
++ 0xabea78f500000000, 0xdcdd60c400000000, 0xfbb8454500000000,
++ 0xd3115b1d00000000, 0xf4747e9c00000000, 0x7afed6fe00000000,
++ 0x5d9bf37f00000000, 0x7532ed2700000000, 0x5257c8a600000000,
++ 0x2560d09700000000, 0x0205f51600000000, 0x2aaceb4e00000000,
++ 0x0dc9cecf00000000, 0xc4c2db2c00000000, 0xe3a7fead00000000,
++ 0xcb0ee0f500000000, 0xec6bc57400000000, 0x9b5cdd4500000000,
++ 0xbc39f8c400000000, 0x9490e69c00000000, 0xb3f5c31d00000000,
++ 0x4781bd8100000000, 0x60e4980000000000, 0x484d865800000000,
++ 0x6f28a3d900000000, 0x181fbbe800000000, 0x3f7a9e6900000000,
++ 0x17d3803100000000, 0x30b6a5b000000000, 0xf9bdb05300000000,
++ 0xded895d200000000, 0xf6718b8a00000000, 0xd114ae0b00000000,
++ 0xa623b63a00000000, 0x814693bb00000000, 0xa9ef8de300000000,
++ 0x8e8aa86200000000, 0xb5fadc2600000000, 0x929ff9a700000000,
++ 0xba36e7ff00000000, 0x9d53c27e00000000, 0xea64da4f00000000,
++ 0xcd01ffce00000000, 0xe5a8e19600000000, 0xc2cdc41700000000,
++ 0x0bc6d1f400000000, 0x2ca3f47500000000, 0x040aea2d00000000,
++ 0x236fcfac00000000, 0x5458d79d00000000, 0x733df21c00000000,
++ 0x5b94ec4400000000, 0x7cf1c9c500000000, 0x8885b75900000000,
++ 0xafe092d800000000, 0x87498c8000000000, 0xa02ca90100000000,
++ 0xd71bb13000000000, 0xf07e94b100000000, 0xd8d78ae900000000,
++ 0xffb2af6800000000, 0x36b9ba8b00000000, 0x11dc9f0a00000000,
++ 0x3975815200000000, 0x1e10a4d300000000, 0x6927bce200000000,
++ 0x4e42996300000000, 0x66eb873b00000000, 0x418ea2ba00000000,
++ 0xcf040ad800000000, 0xe8612f5900000000, 0xc0c8310100000000,
++ 0xe7ad148000000000, 0x909a0cb100000000, 0xb7ff293000000000,
++ 0x9f56376800000000, 0xb83312e900000000, 0x7138070a00000000,
++ 0x565d228b00000000, 0x7ef43cd300000000, 0x5991195200000000,
++ 0x2ea6016300000000, 0x09c324e200000000, 0x216a3aba00000000,
++ 0x060f1f3b00000000, 0xf27b61a700000000, 0xd51e442600000000,
++ 0xfdb75a7e00000000, 0xdad27fff00000000, 0xade567ce00000000,
++ 0x8a80424f00000000, 0xa2295c1700000000, 0x854c799600000000,
++ 0x4c476c7500000000, 0x6b2249f400000000, 0x438b57ac00000000,
++ 0x64ee722d00000000, 0x13d96a1c00000000, 0x34bc4f9d00000000,
++ 0x1c1551c500000000, 0x3b70744400000000, 0x6af5b94d00000000,
++ 0x4d909ccc00000000, 0x6539829400000000, 0x425ca71500000000,
++ 0x356bbf2400000000, 0x120e9aa500000000, 0x3aa784fd00000000,
++ 0x1dc2a17c00000000, 0xd4c9b49f00000000, 0xf3ac911e00000000,
++ 0xdb058f4600000000, 0xfc60aac700000000, 0x8b57b2f600000000,
++ 0xac32977700000000, 0x849b892f00000000, 0xa3feacae00000000,
++ 0x578ad23200000000, 0x70eff7b300000000, 0x5846e9eb00000000,
++ 0x7f23cc6a00000000, 0x0814d45b00000000, 0x2f71f1da00000000,
++ 0x07d8ef8200000000, 0x20bdca0300000000, 0xe9b6dfe000000000,
++ 0xced3fa6100000000, 0xe67ae43900000000, 0xc11fc1b800000000,
++ 0xb628d98900000000, 0x914dfc0800000000, 0xb9e4e25000000000,
++ 0x9e81c7d100000000, 0x100b6fb300000000, 0x376e4a3200000000,
++ 0x1fc7546a00000000, 0x38a271eb00000000, 0x4f9569da00000000,
++ 0x68f04c5b00000000, 0x4059520300000000, 0x673c778200000000,
++ 0xae37626100000000, 0x895247e000000000, 0xa1fb59b800000000,
++ 0x869e7c3900000000, 0xf1a9640800000000, 0xd6cc418900000000,
++ 0xfe655fd100000000, 0xd9007a5000000000, 0x2d7404cc00000000,
++ 0x0a11214d00000000, 0x22b83f1500000000, 0x05dd1a9400000000,
++ 0x72ea02a500000000, 0x558f272400000000, 0x7d26397c00000000,
++ 0x5a431cfd00000000, 0x9348091e00000000, 0xb42d2c9f00000000,
++ 0x9c8432c700000000, 0xbbe1174600000000, 0xccd60f7700000000,
++ 0xebb32af600000000, 0xc31a34ae00000000, 0xe47f112f00000000,
++ 0xdf0f656b00000000, 0xf86a40ea00000000, 0xd0c35eb200000000,
++ 0xf7a67b3300000000, 0x8091630200000000, 0xa7f4468300000000,
++ 0x8f5d58db00000000, 0xa8387d5a00000000, 0x613368b900000000,
++ 0x46564d3800000000, 0x6eff536000000000, 0x499a76e100000000,
++ 0x3ead6ed000000000, 0x19c84b5100000000, 0x3161550900000000,
++ 0x1604708800000000, 0xe2700e1400000000, 0xc5152b9500000000,
++ 0xedbc35cd00000000, 0xcad9104c00000000, 0xbdee087d00000000,
++ 0x9a8b2dfc00000000, 0xb22233a400000000, 0x9547162500000000,
++ 0x5c4c03c600000000, 0x7b29264700000000, 0x5380381f00000000,
++ 0x74e51d9e00000000, 0x03d205af00000000, 0x24b7202e00000000,
++ 0x0c1e3e7600000000, 0x2b7b1bf700000000, 0xa5f1b39500000000,
++ 0x8294961400000000, 0xaa3d884c00000000, 0x8d58adcd00000000,
++ 0xfa6fb5fc00000000, 0xdd0a907d00000000, 0xf5a38e2500000000,
++ 0xd2c6aba400000000, 0x1bcdbe4700000000, 0x3ca89bc600000000,
++ 0x1401859e00000000, 0x3364a01f00000000, 0x4453b82e00000000,
++ 0x63369daf00000000, 0x4b9f83f700000000, 0x6cfaa67600000000,
++ 0x988ed8ea00000000, 0xbfebfd6b00000000, 0x9742e33300000000,
++ 0xb027c6b200000000, 0xc710de8300000000, 0xe075fb0200000000,
++ 0xc8dce55a00000000, 0xefb9c0db00000000, 0x26b2d53800000000,
++ 0x01d7f0b900000000, 0x297eeee100000000, 0x0e1bcb6000000000,
++ 0x792cd35100000000, 0x5e49f6d000000000, 0x76e0e88800000000,
++ 0x5185cd0900000000}};
++
++#else /* W == 4 */
++
++local const z_crc_t FAR crc_braid_table[][256] = {
++ {0x00000000, 0x9ba54c6f, 0xec3b9e9f, 0x779ed2f0, 0x03063b7f,
++ 0x98a37710, 0xef3da5e0, 0x7498e98f, 0x060c76fe, 0x9da93a91,
++ 0xea37e861, 0x7192a40e, 0x050a4d81, 0x9eaf01ee, 0xe931d31e,
++ 0x72949f71, 0x0c18edfc, 0x97bda193, 0xe0237363, 0x7b863f0c,
++ 0x0f1ed683, 0x94bb9aec, 0xe325481c, 0x78800473, 0x0a149b02,
++ 0x91b1d76d, 0xe62f059d, 0x7d8a49f2, 0x0912a07d, 0x92b7ec12,
++ 0xe5293ee2, 0x7e8c728d, 0x1831dbf8, 0x83949797, 0xf40a4567,
++ 0x6faf0908, 0x1b37e087, 0x8092ace8, 0xf70c7e18, 0x6ca93277,
++ 0x1e3dad06, 0x8598e169, 0xf2063399, 0x69a37ff6, 0x1d3b9679,
++ 0x869eda16, 0xf10008e6, 0x6aa54489, 0x14293604, 0x8f8c7a6b,
++ 0xf812a89b, 0x63b7e4f4, 0x172f0d7b, 0x8c8a4114, 0xfb1493e4,
++ 0x60b1df8b, 0x122540fa, 0x89800c95, 0xfe1ede65, 0x65bb920a,
++ 0x11237b85, 0x8a8637ea, 0xfd18e51a, 0x66bda975, 0x3063b7f0,
++ 0xabc6fb9f, 0xdc58296f, 0x47fd6500, 0x33658c8f, 0xa8c0c0e0,
++ 0xdf5e1210, 0x44fb5e7f, 0x366fc10e, 0xadca8d61, 0xda545f91,
++ 0x41f113fe, 0x3569fa71, 0xaeccb61e, 0xd95264ee, 0x42f72881,
++ 0x3c7b5a0c, 0xa7de1663, 0xd040c493, 0x4be588fc, 0x3f7d6173,
++ 0xa4d82d1c, 0xd346ffec, 0x48e3b383, 0x3a772cf2, 0xa1d2609d,
++ 0xd64cb26d, 0x4de9fe02, 0x3971178d, 0xa2d45be2, 0xd54a8912,
++ 0x4eefc57d, 0x28526c08, 0xb3f72067, 0xc469f297, 0x5fccbef8,
++ 0x2b545777, 0xb0f11b18, 0xc76fc9e8, 0x5cca8587, 0x2e5e1af6,
++ 0xb5fb5699, 0xc2658469, 0x59c0c806, 0x2d582189, 0xb6fd6de6,
++ 0xc163bf16, 0x5ac6f379, 0x244a81f4, 0xbfefcd9b, 0xc8711f6b,
++ 0x53d45304, 0x274cba8b, 0xbce9f6e4, 0xcb772414, 0x50d2687b,
++ 0x2246f70a, 0xb9e3bb65, 0xce7d6995, 0x55d825fa, 0x2140cc75,
++ 0xbae5801a, 0xcd7b52ea, 0x56de1e85, 0x60c76fe0, 0xfb62238f,
++ 0x8cfcf17f, 0x1759bd10, 0x63c1549f, 0xf86418f0, 0x8ffaca00,
++ 0x145f866f, 0x66cb191e, 0xfd6e5571, 0x8af08781, 0x1155cbee,
++ 0x65cd2261, 0xfe686e0e, 0x89f6bcfe, 0x1253f091, 0x6cdf821c,
++ 0xf77ace73, 0x80e41c83, 0x1b4150ec, 0x6fd9b963, 0xf47cf50c,
++ 0x83e227fc, 0x18476b93, 0x6ad3f4e2, 0xf176b88d, 0x86e86a7d,
++ 0x1d4d2612, 0x69d5cf9d, 0xf27083f2, 0x85ee5102, 0x1e4b1d6d,
++ 0x78f6b418, 0xe353f877, 0x94cd2a87, 0x0f6866e8, 0x7bf08f67,
++ 0xe055c308, 0x97cb11f8, 0x0c6e5d97, 0x7efac2e6, 0xe55f8e89,
++ 0x92c15c79, 0x09641016, 0x7dfcf999, 0xe659b5f6, 0x91c76706,
++ 0x0a622b69, 0x74ee59e4, 0xef4b158b, 0x98d5c77b, 0x03708b14,
++ 0x77e8629b, 0xec4d2ef4, 0x9bd3fc04, 0x0076b06b, 0x72e22f1a,
++ 0xe9476375, 0x9ed9b185, 0x057cfdea, 0x71e41465, 0xea41580a,
++ 0x9ddf8afa, 0x067ac695, 0x50a4d810, 0xcb01947f, 0xbc9f468f,
++ 0x273a0ae0, 0x53a2e36f, 0xc807af00, 0xbf997df0, 0x243c319f,
++ 0x56a8aeee, 0xcd0de281, 0xba933071, 0x21367c1e, 0x55ae9591,
++ 0xce0bd9fe, 0xb9950b0e, 0x22304761, 0x5cbc35ec, 0xc7197983,
++ 0xb087ab73, 0x2b22e71c, 0x5fba0e93, 0xc41f42fc, 0xb381900c,
++ 0x2824dc63, 0x5ab04312, 0xc1150f7d, 0xb68bdd8d, 0x2d2e91e2,
++ 0x59b6786d, 0xc2133402, 0xb58de6f2, 0x2e28aa9d, 0x489503e8,
++ 0xd3304f87, 0xa4ae9d77, 0x3f0bd118, 0x4b933897, 0xd03674f8,
++ 0xa7a8a608, 0x3c0dea67, 0x4e997516, 0xd53c3979, 0xa2a2eb89,
++ 0x3907a7e6, 0x4d9f4e69, 0xd63a0206, 0xa1a4d0f6, 0x3a019c99,
++ 0x448dee14, 0xdf28a27b, 0xa8b6708b, 0x33133ce4, 0x478bd56b,
++ 0xdc2e9904, 0xabb04bf4, 0x3015079b, 0x428198ea, 0xd924d485,
++ 0xaeba0675, 0x351f4a1a, 0x4187a395, 0xda22effa, 0xadbc3d0a,
++ 0x36197165},
++ {0x00000000, 0xc18edfc0, 0x586cb9c1, 0x99e26601, 0xb0d97382,
++ 0x7157ac42, 0xe8b5ca43, 0x293b1583, 0xbac3e145, 0x7b4d3e85,
++ 0xe2af5884, 0x23218744, 0x0a1a92c7, 0xcb944d07, 0x52762b06,
++ 0x93f8f4c6, 0xaef6c4cb, 0x6f781b0b, 0xf69a7d0a, 0x3714a2ca,
++ 0x1e2fb749, 0xdfa16889, 0x46430e88, 0x87cdd148, 0x1435258e,
++ 0xd5bbfa4e, 0x4c599c4f, 0x8dd7438f, 0xa4ec560c, 0x656289cc,
++ 0xfc80efcd, 0x3d0e300d, 0x869c8fd7, 0x47125017, 0xdef03616,
++ 0x1f7ee9d6, 0x3645fc55, 0xf7cb2395, 0x6e294594, 0xafa79a54,
++ 0x3c5f6e92, 0xfdd1b152, 0x6433d753, 0xa5bd0893, 0x8c861d10,
++ 0x4d08c2d0, 0xd4eaa4d1, 0x15647b11, 0x286a4b1c, 0xe9e494dc,
++ 0x7006f2dd, 0xb1882d1d, 0x98b3389e, 0x593de75e, 0xc0df815f,
++ 0x01515e9f, 0x92a9aa59, 0x53277599, 0xcac51398, 0x0b4bcc58,
++ 0x2270d9db, 0xe3fe061b, 0x7a1c601a, 0xbb92bfda, 0xd64819ef,
++ 0x17c6c62f, 0x8e24a02e, 0x4faa7fee, 0x66916a6d, 0xa71fb5ad,
++ 0x3efdd3ac, 0xff730c6c, 0x6c8bf8aa, 0xad05276a, 0x34e7416b,
++ 0xf5699eab, 0xdc528b28, 0x1ddc54e8, 0x843e32e9, 0x45b0ed29,
++ 0x78bedd24, 0xb93002e4, 0x20d264e5, 0xe15cbb25, 0xc867aea6,
++ 0x09e97166, 0x900b1767, 0x5185c8a7, 0xc27d3c61, 0x03f3e3a1,
++ 0x9a1185a0, 0x5b9f5a60, 0x72a44fe3, 0xb32a9023, 0x2ac8f622,
++ 0xeb4629e2, 0x50d49638, 0x915a49f8, 0x08b82ff9, 0xc936f039,
++ 0xe00de5ba, 0x21833a7a, 0xb8615c7b, 0x79ef83bb, 0xea17777d,
++ 0x2b99a8bd, 0xb27bcebc, 0x73f5117c, 0x5ace04ff, 0x9b40db3f,
++ 0x02a2bd3e, 0xc32c62fe, 0xfe2252f3, 0x3fac8d33, 0xa64eeb32,
++ 0x67c034f2, 0x4efb2171, 0x8f75feb1, 0x169798b0, 0xd7194770,
++ 0x44e1b3b6, 0x856f6c76, 0x1c8d0a77, 0xdd03d5b7, 0xf438c034,
++ 0x35b61ff4, 0xac5479f5, 0x6ddaa635, 0x77e1359f, 0xb66fea5f,
++ 0x2f8d8c5e, 0xee03539e, 0xc738461d, 0x06b699dd, 0x9f54ffdc,
++ 0x5eda201c, 0xcd22d4da, 0x0cac0b1a, 0x954e6d1b, 0x54c0b2db,
++ 0x7dfba758, 0xbc757898, 0x25971e99, 0xe419c159, 0xd917f154,
++ 0x18992e94, 0x817b4895, 0x40f59755, 0x69ce82d6, 0xa8405d16,
++ 0x31a23b17, 0xf02ce4d7, 0x63d41011, 0xa25acfd1, 0x3bb8a9d0,
++ 0xfa367610, 0xd30d6393, 0x1283bc53, 0x8b61da52, 0x4aef0592,
++ 0xf17dba48, 0x30f36588, 0xa9110389, 0x689fdc49, 0x41a4c9ca,
++ 0x802a160a, 0x19c8700b, 0xd846afcb, 0x4bbe5b0d, 0x8a3084cd,
++ 0x13d2e2cc, 0xd25c3d0c, 0xfb67288f, 0x3ae9f74f, 0xa30b914e,
++ 0x62854e8e, 0x5f8b7e83, 0x9e05a143, 0x07e7c742, 0xc6691882,
++ 0xef520d01, 0x2edcd2c1, 0xb73eb4c0, 0x76b06b00, 0xe5489fc6,
++ 0x24c64006, 0xbd242607, 0x7caaf9c7, 0x5591ec44, 0x941f3384,
++ 0x0dfd5585, 0xcc738a45, 0xa1a92c70, 0x6027f3b0, 0xf9c595b1,
++ 0x384b4a71, 0x11705ff2, 0xd0fe8032, 0x491ce633, 0x889239f3,
++ 0x1b6acd35, 0xdae412f5, 0x430674f4, 0x8288ab34, 0xabb3beb7,
++ 0x6a3d6177, 0xf3df0776, 0x3251d8b6, 0x0f5fe8bb, 0xced1377b,
++ 0x5733517a, 0x96bd8eba, 0xbf869b39, 0x7e0844f9, 0xe7ea22f8,
++ 0x2664fd38, 0xb59c09fe, 0x7412d63e, 0xedf0b03f, 0x2c7e6fff,
++ 0x05457a7c, 0xc4cba5bc, 0x5d29c3bd, 0x9ca71c7d, 0x2735a3a7,
++ 0xe6bb7c67, 0x7f591a66, 0xbed7c5a6, 0x97ecd025, 0x56620fe5,
++ 0xcf8069e4, 0x0e0eb624, 0x9df642e2, 0x5c789d22, 0xc59afb23,
++ 0x041424e3, 0x2d2f3160, 0xeca1eea0, 0x754388a1, 0xb4cd5761,
++ 0x89c3676c, 0x484db8ac, 0xd1afdead, 0x1021016d, 0x391a14ee,
++ 0xf894cb2e, 0x6176ad2f, 0xa0f872ef, 0x33008629, 0xf28e59e9,
++ 0x6b6c3fe8, 0xaae2e028, 0x83d9f5ab, 0x42572a6b, 0xdbb54c6a,
++ 0x1a3b93aa},
++ {0x00000000, 0xefc26b3e, 0x04f5d03d, 0xeb37bb03, 0x09eba07a,
++ 0xe629cb44, 0x0d1e7047, 0xe2dc1b79, 0x13d740f4, 0xfc152bca,
++ 0x172290c9, 0xf8e0fbf7, 0x1a3ce08e, 0xf5fe8bb0, 0x1ec930b3,
++ 0xf10b5b8d, 0x27ae81e8, 0xc86cead6, 0x235b51d5, 0xcc993aeb,
++ 0x2e452192, 0xc1874aac, 0x2ab0f1af, 0xc5729a91, 0x3479c11c,
++ 0xdbbbaa22, 0x308c1121, 0xdf4e7a1f, 0x3d926166, 0xd2500a58,
++ 0x3967b15b, 0xd6a5da65, 0x4f5d03d0, 0xa09f68ee, 0x4ba8d3ed,
++ 0xa46ab8d3, 0x46b6a3aa, 0xa974c894, 0x42437397, 0xad8118a9,
++ 0x5c8a4324, 0xb348281a, 0x587f9319, 0xb7bdf827, 0x5561e35e,
++ 0xbaa38860, 0x51943363, 0xbe56585d, 0x68f38238, 0x8731e906,
++ 0x6c065205, 0x83c4393b, 0x61182242, 0x8eda497c, 0x65edf27f,
++ 0x8a2f9941, 0x7b24c2cc, 0x94e6a9f2, 0x7fd112f1, 0x901379cf,
++ 0x72cf62b6, 0x9d0d0988, 0x763ab28b, 0x99f8d9b5, 0x9eba07a0,
++ 0x71786c9e, 0x9a4fd79d, 0x758dbca3, 0x9751a7da, 0x7893cce4,
++ 0x93a477e7, 0x7c661cd9, 0x8d6d4754, 0x62af2c6a, 0x89989769,
++ 0x665afc57, 0x8486e72e, 0x6b448c10, 0x80733713, 0x6fb15c2d,
++ 0xb9148648, 0x56d6ed76, 0xbde15675, 0x52233d4b, 0xb0ff2632,
++ 0x5f3d4d0c, 0xb40af60f, 0x5bc89d31, 0xaac3c6bc, 0x4501ad82,
++ 0xae361681, 0x41f47dbf, 0xa32866c6, 0x4cea0df8, 0xa7ddb6fb,
++ 0x481fddc5, 0xd1e70470, 0x3e256f4e, 0xd512d44d, 0x3ad0bf73,
++ 0xd80ca40a, 0x37cecf34, 0xdcf97437, 0x333b1f09, 0xc2304484,
++ 0x2df22fba, 0xc6c594b9, 0x2907ff87, 0xcbdbe4fe, 0x24198fc0,
++ 0xcf2e34c3, 0x20ec5ffd, 0xf6498598, 0x198beea6, 0xf2bc55a5,
++ 0x1d7e3e9b, 0xffa225e2, 0x10604edc, 0xfb57f5df, 0x14959ee1,
++ 0xe59ec56c, 0x0a5cae52, 0xe16b1551, 0x0ea97e6f, 0xec756516,
++ 0x03b70e28, 0xe880b52b, 0x0742de15, 0xe6050901, 0x09c7623f,
++ 0xe2f0d93c, 0x0d32b202, 0xefeea97b, 0x002cc245, 0xeb1b7946,
++ 0x04d91278, 0xf5d249f5, 0x1a1022cb, 0xf12799c8, 0x1ee5f2f6,
++ 0xfc39e98f, 0x13fb82b1, 0xf8cc39b2, 0x170e528c, 0xc1ab88e9,
++ 0x2e69e3d7, 0xc55e58d4, 0x2a9c33ea, 0xc8402893, 0x278243ad,
++ 0xccb5f8ae, 0x23779390, 0xd27cc81d, 0x3dbea323, 0xd6891820,
++ 0x394b731e, 0xdb976867, 0x34550359, 0xdf62b85a, 0x30a0d364,
++ 0xa9580ad1, 0x469a61ef, 0xadaddaec, 0x426fb1d2, 0xa0b3aaab,
++ 0x4f71c195, 0xa4467a96, 0x4b8411a8, 0xba8f4a25, 0x554d211b,
++ 0xbe7a9a18, 0x51b8f126, 0xb364ea5f, 0x5ca68161, 0xb7913a62,
++ 0x5853515c, 0x8ef68b39, 0x6134e007, 0x8a035b04, 0x65c1303a,
++ 0x871d2b43, 0x68df407d, 0x83e8fb7e, 0x6c2a9040, 0x9d21cbcd,
++ 0x72e3a0f3, 0x99d41bf0, 0x761670ce, 0x94ca6bb7, 0x7b080089,
++ 0x903fbb8a, 0x7ffdd0b4, 0x78bf0ea1, 0x977d659f, 0x7c4ade9c,
++ 0x9388b5a2, 0x7154aedb, 0x9e96c5e5, 0x75a17ee6, 0x9a6315d8,
++ 0x6b684e55, 0x84aa256b, 0x6f9d9e68, 0x805ff556, 0x6283ee2f,
++ 0x8d418511, 0x66763e12, 0x89b4552c, 0x5f118f49, 0xb0d3e477,
++ 0x5be45f74, 0xb426344a, 0x56fa2f33, 0xb938440d, 0x520fff0e,
++ 0xbdcd9430, 0x4cc6cfbd, 0xa304a483, 0x48331f80, 0xa7f174be,
++ 0x452d6fc7, 0xaaef04f9, 0x41d8bffa, 0xae1ad4c4, 0x37e20d71,
++ 0xd820664f, 0x3317dd4c, 0xdcd5b672, 0x3e09ad0b, 0xd1cbc635,
++ 0x3afc7d36, 0xd53e1608, 0x24354d85, 0xcbf726bb, 0x20c09db8,
++ 0xcf02f686, 0x2ddeedff, 0xc21c86c1, 0x292b3dc2, 0xc6e956fc,
++ 0x104c8c99, 0xff8ee7a7, 0x14b95ca4, 0xfb7b379a, 0x19a72ce3,
++ 0xf66547dd, 0x1d52fcde, 0xf29097e0, 0x039bcc6d, 0xec59a753,
++ 0x076e1c50, 0xe8ac776e, 0x0a706c17, 0xe5b20729, 0x0e85bc2a,
++ 0xe147d714},
++ {0x00000000, 0x177b1443, 0x2ef62886, 0x398d3cc5, 0x5dec510c,
++ 0x4a97454f, 0x731a798a, 0x64616dc9, 0xbbd8a218, 0xaca3b65b,
++ 0x952e8a9e, 0x82559edd, 0xe634f314, 0xf14fe757, 0xc8c2db92,
++ 0xdfb9cfd1, 0xacc04271, 0xbbbb5632, 0x82366af7, 0x954d7eb4,
++ 0xf12c137d, 0xe657073e, 0xdfda3bfb, 0xc8a12fb8, 0x1718e069,
++ 0x0063f42a, 0x39eec8ef, 0x2e95dcac, 0x4af4b165, 0x5d8fa526,
++ 0x640299e3, 0x73798da0, 0x82f182a3, 0x958a96e0, 0xac07aa25,
++ 0xbb7cbe66, 0xdf1dd3af, 0xc866c7ec, 0xf1ebfb29, 0xe690ef6a,
++ 0x392920bb, 0x2e5234f8, 0x17df083d, 0x00a41c7e, 0x64c571b7,
++ 0x73be65f4, 0x4a335931, 0x5d484d72, 0x2e31c0d2, 0x394ad491,
++ 0x00c7e854, 0x17bcfc17, 0x73dd91de, 0x64a6859d, 0x5d2bb958,
++ 0x4a50ad1b, 0x95e962ca, 0x82927689, 0xbb1f4a4c, 0xac645e0f,
++ 0xc80533c6, 0xdf7e2785, 0xe6f31b40, 0xf1880f03, 0xde920307,
++ 0xc9e91744, 0xf0642b81, 0xe71f3fc2, 0x837e520b, 0x94054648,
++ 0xad887a8d, 0xbaf36ece, 0x654aa11f, 0x7231b55c, 0x4bbc8999,
++ 0x5cc79dda, 0x38a6f013, 0x2fdde450, 0x1650d895, 0x012bccd6,
++ 0x72524176, 0x65295535, 0x5ca469f0, 0x4bdf7db3, 0x2fbe107a,
++ 0x38c50439, 0x014838fc, 0x16332cbf, 0xc98ae36e, 0xdef1f72d,
++ 0xe77ccbe8, 0xf007dfab, 0x9466b262, 0x831da621, 0xba909ae4,
++ 0xadeb8ea7, 0x5c6381a4, 0x4b1895e7, 0x7295a922, 0x65eebd61,
++ 0x018fd0a8, 0x16f4c4eb, 0x2f79f82e, 0x3802ec6d, 0xe7bb23bc,
++ 0xf0c037ff, 0xc94d0b3a, 0xde361f79, 0xba5772b0, 0xad2c66f3,
++ 0x94a15a36, 0x83da4e75, 0xf0a3c3d5, 0xe7d8d796, 0xde55eb53,
++ 0xc92eff10, 0xad4f92d9, 0xba34869a, 0x83b9ba5f, 0x94c2ae1c,
++ 0x4b7b61cd, 0x5c00758e, 0x658d494b, 0x72f65d08, 0x169730c1,
++ 0x01ec2482, 0x38611847, 0x2f1a0c04, 0x6655004f, 0x712e140c,
++ 0x48a328c9, 0x5fd83c8a, 0x3bb95143, 0x2cc24500, 0x154f79c5,
++ 0x02346d86, 0xdd8da257, 0xcaf6b614, 0xf37b8ad1, 0xe4009e92,
++ 0x8061f35b, 0x971ae718, 0xae97dbdd, 0xb9eccf9e, 0xca95423e,
++ 0xddee567d, 0xe4636ab8, 0xf3187efb, 0x97791332, 0x80020771,
++ 0xb98f3bb4, 0xaef42ff7, 0x714de026, 0x6636f465, 0x5fbbc8a0,
++ 0x48c0dce3, 0x2ca1b12a, 0x3bdaa569, 0x025799ac, 0x152c8def,
++ 0xe4a482ec, 0xf3df96af, 0xca52aa6a, 0xdd29be29, 0xb948d3e0,
++ 0xae33c7a3, 0x97befb66, 0x80c5ef25, 0x5f7c20f4, 0x480734b7,
++ 0x718a0872, 0x66f11c31, 0x029071f8, 0x15eb65bb, 0x2c66597e,
++ 0x3b1d4d3d, 0x4864c09d, 0x5f1fd4de, 0x6692e81b, 0x71e9fc58,
++ 0x15889191, 0x02f385d2, 0x3b7eb917, 0x2c05ad54, 0xf3bc6285,
++ 0xe4c776c6, 0xdd4a4a03, 0xca315e40, 0xae503389, 0xb92b27ca,
++ 0x80a61b0f, 0x97dd0f4c, 0xb8c70348, 0xafbc170b, 0x96312bce,
++ 0x814a3f8d, 0xe52b5244, 0xf2504607, 0xcbdd7ac2, 0xdca66e81,
++ 0x031fa150, 0x1464b513, 0x2de989d6, 0x3a929d95, 0x5ef3f05c,
++ 0x4988e41f, 0x7005d8da, 0x677ecc99, 0x14074139, 0x037c557a,
++ 0x3af169bf, 0x2d8a7dfc, 0x49eb1035, 0x5e900476, 0x671d38b3,
++ 0x70662cf0, 0xafdfe321, 0xb8a4f762, 0x8129cba7, 0x9652dfe4,
++ 0xf233b22d, 0xe548a66e, 0xdcc59aab, 0xcbbe8ee8, 0x3a3681eb,
++ 0x2d4d95a8, 0x14c0a96d, 0x03bbbd2e, 0x67dad0e7, 0x70a1c4a4,
++ 0x492cf861, 0x5e57ec22, 0x81ee23f3, 0x969537b0, 0xaf180b75,
++ 0xb8631f36, 0xdc0272ff, 0xcb7966bc, 0xf2f45a79, 0xe58f4e3a,
++ 0x96f6c39a, 0x818dd7d9, 0xb800eb1c, 0xaf7bff5f, 0xcb1a9296,
++ 0xdc6186d5, 0xe5ecba10, 0xf297ae53, 0x2d2e6182, 0x3a5575c1,
++ 0x03d84904, 0x14a35d47, 0x70c2308e, 0x67b924cd, 0x5e341808,
++ 0x494f0c4b}};
++
++local const z_word_t FAR crc_braid_big_table[][256] = {
++ {0x00000000, 0x43147b17, 0x8628f62e, 0xc53c8d39, 0x0c51ec5d,
++ 0x4f45974a, 0x8a791a73, 0xc96d6164, 0x18a2d8bb, 0x5bb6a3ac,
++ 0x9e8a2e95, 0xdd9e5582, 0x14f334e6, 0x57e74ff1, 0x92dbc2c8,
++ 0xd1cfb9df, 0x7142c0ac, 0x3256bbbb, 0xf76a3682, 0xb47e4d95,
++ 0x7d132cf1, 0x3e0757e6, 0xfb3bdadf, 0xb82fa1c8, 0x69e01817,
++ 0x2af46300, 0xefc8ee39, 0xacdc952e, 0x65b1f44a, 0x26a58f5d,
++ 0xe3990264, 0xa08d7973, 0xa382f182, 0xe0968a95, 0x25aa07ac,
++ 0x66be7cbb, 0xafd31ddf, 0xecc766c8, 0x29fbebf1, 0x6aef90e6,
++ 0xbb202939, 0xf834522e, 0x3d08df17, 0x7e1ca400, 0xb771c564,
++ 0xf465be73, 0x3159334a, 0x724d485d, 0xd2c0312e, 0x91d44a39,
++ 0x54e8c700, 0x17fcbc17, 0xde91dd73, 0x9d85a664, 0x58b92b5d,
++ 0x1bad504a, 0xca62e995, 0x89769282, 0x4c4a1fbb, 0x0f5e64ac,
++ 0xc63305c8, 0x85277edf, 0x401bf3e6, 0x030f88f1, 0x070392de,
++ 0x4417e9c9, 0x812b64f0, 0xc23f1fe7, 0x0b527e83, 0x48460594,
++ 0x8d7a88ad, 0xce6ef3ba, 0x1fa14a65, 0x5cb53172, 0x9989bc4b,
++ 0xda9dc75c, 0x13f0a638, 0x50e4dd2f, 0x95d85016, 0xd6cc2b01,
++ 0x76415272, 0x35552965, 0xf069a45c, 0xb37ddf4b, 0x7a10be2f,
++ 0x3904c538, 0xfc384801, 0xbf2c3316, 0x6ee38ac9, 0x2df7f1de,
++ 0xe8cb7ce7, 0xabdf07f0, 0x62b26694, 0x21a61d83, 0xe49a90ba,
++ 0xa78eebad, 0xa481635c, 0xe795184b, 0x22a99572, 0x61bdee65,
++ 0xa8d08f01, 0xebc4f416, 0x2ef8792f, 0x6dec0238, 0xbc23bbe7,
++ 0xff37c0f0, 0x3a0b4dc9, 0x791f36de, 0xb07257ba, 0xf3662cad,
++ 0x365aa194, 0x754eda83, 0xd5c3a3f0, 0x96d7d8e7, 0x53eb55de,
++ 0x10ff2ec9, 0xd9924fad, 0x9a8634ba, 0x5fbab983, 0x1caec294,
++ 0xcd617b4b, 0x8e75005c, 0x4b498d65, 0x085df672, 0xc1309716,
++ 0x8224ec01, 0x47186138, 0x040c1a2f, 0x4f005566, 0x0c142e71,
++ 0xc928a348, 0x8a3cd85f, 0x4351b93b, 0x0045c22c, 0xc5794f15,
++ 0x866d3402, 0x57a28ddd, 0x14b6f6ca, 0xd18a7bf3, 0x929e00e4,
++ 0x5bf36180, 0x18e71a97, 0xdddb97ae, 0x9ecfecb9, 0x3e4295ca,
++ 0x7d56eedd, 0xb86a63e4, 0xfb7e18f3, 0x32137997, 0x71070280,
++ 0xb43b8fb9, 0xf72ff4ae, 0x26e04d71, 0x65f43666, 0xa0c8bb5f,
++ 0xe3dcc048, 0x2ab1a12c, 0x69a5da3b, 0xac995702, 0xef8d2c15,
++ 0xec82a4e4, 0xaf96dff3, 0x6aaa52ca, 0x29be29dd, 0xe0d348b9,
++ 0xa3c733ae, 0x66fbbe97, 0x25efc580, 0xf4207c5f, 0xb7340748,
++ 0x72088a71, 0x311cf166, 0xf8719002, 0xbb65eb15, 0x7e59662c,
++ 0x3d4d1d3b, 0x9dc06448, 0xded41f5f, 0x1be89266, 0x58fce971,
++ 0x91918815, 0xd285f302, 0x17b97e3b, 0x54ad052c, 0x8562bcf3,
++ 0xc676c7e4, 0x034a4add, 0x405e31ca, 0x893350ae, 0xca272bb9,
++ 0x0f1ba680, 0x4c0fdd97, 0x4803c7b8, 0x0b17bcaf, 0xce2b3196,
++ 0x8d3f4a81, 0x44522be5, 0x074650f2, 0xc27addcb, 0x816ea6dc,
++ 0x50a11f03, 0x13b56414, 0xd689e92d, 0x959d923a, 0x5cf0f35e,
++ 0x1fe48849, 0xdad80570, 0x99cc7e67, 0x39410714, 0x7a557c03,
++ 0xbf69f13a, 0xfc7d8a2d, 0x3510eb49, 0x7604905e, 0xb3381d67,
++ 0xf02c6670, 0x21e3dfaf, 0x62f7a4b8, 0xa7cb2981, 0xe4df5296,
++ 0x2db233f2, 0x6ea648e5, 0xab9ac5dc, 0xe88ebecb, 0xeb81363a,
++ 0xa8954d2d, 0x6da9c014, 0x2ebdbb03, 0xe7d0da67, 0xa4c4a170,
++ 0x61f82c49, 0x22ec575e, 0xf323ee81, 0xb0379596, 0x750b18af,
++ 0x361f63b8, 0xff7202dc, 0xbc6679cb, 0x795af4f2, 0x3a4e8fe5,
++ 0x9ac3f696, 0xd9d78d81, 0x1ceb00b8, 0x5fff7baf, 0x96921acb,
++ 0xd58661dc, 0x10baece5, 0x53ae97f2, 0x82612e2d, 0xc175553a,
++ 0x0449d803, 0x475da314, 0x8e30c270, 0xcd24b967, 0x0818345e,
++ 0x4b0c4f49},
++ {0x00000000, 0x3e6bc2ef, 0x3dd0f504, 0x03bb37eb, 0x7aa0eb09,
++ 0x44cb29e6, 0x47701e0d, 0x791bdce2, 0xf440d713, 0xca2b15fc,
++ 0xc9902217, 0xf7fbe0f8, 0x8ee03c1a, 0xb08bfef5, 0xb330c91e,
++ 0x8d5b0bf1, 0xe881ae27, 0xd6ea6cc8, 0xd5515b23, 0xeb3a99cc,
++ 0x9221452e, 0xac4a87c1, 0xaff1b02a, 0x919a72c5, 0x1cc17934,
++ 0x22aabbdb, 0x21118c30, 0x1f7a4edf, 0x6661923d, 0x580a50d2,
++ 0x5bb16739, 0x65daa5d6, 0xd0035d4f, 0xee689fa0, 0xedd3a84b,
++ 0xd3b86aa4, 0xaaa3b646, 0x94c874a9, 0x97734342, 0xa91881ad,
++ 0x24438a5c, 0x1a2848b3, 0x19937f58, 0x27f8bdb7, 0x5ee36155,
++ 0x6088a3ba, 0x63339451, 0x5d5856be, 0x3882f368, 0x06e93187,
++ 0x0552066c, 0x3b39c483, 0x42221861, 0x7c49da8e, 0x7ff2ed65,
++ 0x41992f8a, 0xccc2247b, 0xf2a9e694, 0xf112d17f, 0xcf791390,
++ 0xb662cf72, 0x88090d9d, 0x8bb23a76, 0xb5d9f899, 0xa007ba9e,
++ 0x9e6c7871, 0x9dd74f9a, 0xa3bc8d75, 0xdaa75197, 0xe4cc9378,
++ 0xe777a493, 0xd91c667c, 0x54476d8d, 0x6a2caf62, 0x69979889,
++ 0x57fc5a66, 0x2ee78684, 0x108c446b, 0x13377380, 0x2d5cb16f,
++ 0x488614b9, 0x76edd656, 0x7556e1bd, 0x4b3d2352, 0x3226ffb0,
++ 0x0c4d3d5f, 0x0ff60ab4, 0x319dc85b, 0xbcc6c3aa, 0x82ad0145,
++ 0x811636ae, 0xbf7df441, 0xc66628a3, 0xf80dea4c, 0xfbb6dda7,
++ 0xc5dd1f48, 0x7004e7d1, 0x4e6f253e, 0x4dd412d5, 0x73bfd03a,
++ 0x0aa40cd8, 0x34cfce37, 0x3774f9dc, 0x091f3b33, 0x844430c2,
++ 0xba2ff22d, 0xb994c5c6, 0x87ff0729, 0xfee4dbcb, 0xc08f1924,
++ 0xc3342ecf, 0xfd5fec20, 0x988549f6, 0xa6ee8b19, 0xa555bcf2,
++ 0x9b3e7e1d, 0xe225a2ff, 0xdc4e6010, 0xdff557fb, 0xe19e9514,
++ 0x6cc59ee5, 0x52ae5c0a, 0x51156be1, 0x6f7ea90e, 0x166575ec,
++ 0x280eb703, 0x2bb580e8, 0x15de4207, 0x010905e6, 0x3f62c709,
++ 0x3cd9f0e2, 0x02b2320d, 0x7ba9eeef, 0x45c22c00, 0x46791beb,
++ 0x7812d904, 0xf549d2f5, 0xcb22101a, 0xc89927f1, 0xf6f2e51e,
++ 0x8fe939fc, 0xb182fb13, 0xb239ccf8, 0x8c520e17, 0xe988abc1,
++ 0xd7e3692e, 0xd4585ec5, 0xea339c2a, 0x932840c8, 0xad438227,
++ 0xaef8b5cc, 0x90937723, 0x1dc87cd2, 0x23a3be3d, 0x201889d6,
++ 0x1e734b39, 0x676897db, 0x59035534, 0x5ab862df, 0x64d3a030,
++ 0xd10a58a9, 0xef619a46, 0xecdaadad, 0xd2b16f42, 0xabaab3a0,
++ 0x95c1714f, 0x967a46a4, 0xa811844b, 0x254a8fba, 0x1b214d55,
++ 0x189a7abe, 0x26f1b851, 0x5fea64b3, 0x6181a65c, 0x623a91b7,
++ 0x5c515358, 0x398bf68e, 0x07e03461, 0x045b038a, 0x3a30c165,
++ 0x432b1d87, 0x7d40df68, 0x7efbe883, 0x40902a6c, 0xcdcb219d,
++ 0xf3a0e372, 0xf01bd499, 0xce701676, 0xb76bca94, 0x8900087b,
++ 0x8abb3f90, 0xb4d0fd7f, 0xa10ebf78, 0x9f657d97, 0x9cde4a7c,
++ 0xa2b58893, 0xdbae5471, 0xe5c5969e, 0xe67ea175, 0xd815639a,
++ 0x554e686b, 0x6b25aa84, 0x689e9d6f, 0x56f55f80, 0x2fee8362,
++ 0x1185418d, 0x123e7666, 0x2c55b489, 0x498f115f, 0x77e4d3b0,
++ 0x745fe45b, 0x4a3426b4, 0x332ffa56, 0x0d4438b9, 0x0eff0f52,
++ 0x3094cdbd, 0xbdcfc64c, 0x83a404a3, 0x801f3348, 0xbe74f1a7,
++ 0xc76f2d45, 0xf904efaa, 0xfabfd841, 0xc4d41aae, 0x710de237,
++ 0x4f6620d8, 0x4cdd1733, 0x72b6d5dc, 0x0bad093e, 0x35c6cbd1,
++ 0x367dfc3a, 0x08163ed5, 0x854d3524, 0xbb26f7cb, 0xb89dc020,
++ 0x86f602cf, 0xffedde2d, 0xc1861cc2, 0xc23d2b29, 0xfc56e9c6,
++ 0x998c4c10, 0xa7e78eff, 0xa45cb914, 0x9a377bfb, 0xe32ca719,
++ 0xdd4765f6, 0xdefc521d, 0xe09790f2, 0x6dcc9b03, 0x53a759ec,
++ 0x501c6e07, 0x6e77ace8, 0x176c700a, 0x2907b2e5, 0x2abc850e,
++ 0x14d747e1},
++ {0x00000000, 0xc0df8ec1, 0xc1b96c58, 0x0166e299, 0x8273d9b0,
++ 0x42ac5771, 0x43cab5e8, 0x83153b29, 0x45e1c3ba, 0x853e4d7b,
++ 0x8458afe2, 0x44872123, 0xc7921a0a, 0x074d94cb, 0x062b7652,
++ 0xc6f4f893, 0xcbc4f6ae, 0x0b1b786f, 0x0a7d9af6, 0xcaa21437,
++ 0x49b72f1e, 0x8968a1df, 0x880e4346, 0x48d1cd87, 0x8e253514,
++ 0x4efabbd5, 0x4f9c594c, 0x8f43d78d, 0x0c56eca4, 0xcc896265,
++ 0xcdef80fc, 0x0d300e3d, 0xd78f9c86, 0x17501247, 0x1636f0de,
++ 0xd6e97e1f, 0x55fc4536, 0x9523cbf7, 0x9445296e, 0x549aa7af,
++ 0x926e5f3c, 0x52b1d1fd, 0x53d73364, 0x9308bda5, 0x101d868c,
++ 0xd0c2084d, 0xd1a4ead4, 0x117b6415, 0x1c4b6a28, 0xdc94e4e9,
++ 0xddf20670, 0x1d2d88b1, 0x9e38b398, 0x5ee73d59, 0x5f81dfc0,
++ 0x9f5e5101, 0x59aaa992, 0x99752753, 0x9813c5ca, 0x58cc4b0b,
++ 0xdbd97022, 0x1b06fee3, 0x1a601c7a, 0xdabf92bb, 0xef1948d6,
++ 0x2fc6c617, 0x2ea0248e, 0xee7faa4f, 0x6d6a9166, 0xadb51fa7,
++ 0xacd3fd3e, 0x6c0c73ff, 0xaaf88b6c, 0x6a2705ad, 0x6b41e734,
++ 0xab9e69f5, 0x288b52dc, 0xe854dc1d, 0xe9323e84, 0x29edb045,
++ 0x24ddbe78, 0xe40230b9, 0xe564d220, 0x25bb5ce1, 0xa6ae67c8,
++ 0x6671e909, 0x67170b90, 0xa7c88551, 0x613c7dc2, 0xa1e3f303,
++ 0xa085119a, 0x605a9f5b, 0xe34fa472, 0x23902ab3, 0x22f6c82a,
++ 0xe22946eb, 0x3896d450, 0xf8495a91, 0xf92fb808, 0x39f036c9,
++ 0xbae50de0, 0x7a3a8321, 0x7b5c61b8, 0xbb83ef79, 0x7d7717ea,
++ 0xbda8992b, 0xbcce7bb2, 0x7c11f573, 0xff04ce5a, 0x3fdb409b,
++ 0x3ebda202, 0xfe622cc3, 0xf35222fe, 0x338dac3f, 0x32eb4ea6,
++ 0xf234c067, 0x7121fb4e, 0xb1fe758f, 0xb0989716, 0x704719d7,
++ 0xb6b3e144, 0x766c6f85, 0x770a8d1c, 0xb7d503dd, 0x34c038f4,
++ 0xf41fb635, 0xf57954ac, 0x35a6da6d, 0x9f35e177, 0x5fea6fb6,
++ 0x5e8c8d2f, 0x9e5303ee, 0x1d4638c7, 0xdd99b606, 0xdcff549f,
++ 0x1c20da5e, 0xdad422cd, 0x1a0bac0c, 0x1b6d4e95, 0xdbb2c054,
++ 0x58a7fb7d, 0x987875bc, 0x991e9725, 0x59c119e4, 0x54f117d9,
++ 0x942e9918, 0x95487b81, 0x5597f540, 0xd682ce69, 0x165d40a8,
++ 0x173ba231, 0xd7e42cf0, 0x1110d463, 0xd1cf5aa2, 0xd0a9b83b,
++ 0x107636fa, 0x93630dd3, 0x53bc8312, 0x52da618b, 0x9205ef4a,
++ 0x48ba7df1, 0x8865f330, 0x890311a9, 0x49dc9f68, 0xcac9a441,
++ 0x0a162a80, 0x0b70c819, 0xcbaf46d8, 0x0d5bbe4b, 0xcd84308a,
++ 0xcce2d213, 0x0c3d5cd2, 0x8f2867fb, 0x4ff7e93a, 0x4e910ba3,
++ 0x8e4e8562, 0x837e8b5f, 0x43a1059e, 0x42c7e707, 0x821869c6,
++ 0x010d52ef, 0xc1d2dc2e, 0xc0b43eb7, 0x006bb076, 0xc69f48e5,
++ 0x0640c624, 0x072624bd, 0xc7f9aa7c, 0x44ec9155, 0x84331f94,
++ 0x8555fd0d, 0x458a73cc, 0x702ca9a1, 0xb0f32760, 0xb195c5f9,
++ 0x714a4b38, 0xf25f7011, 0x3280fed0, 0x33e61c49, 0xf3399288,
++ 0x35cd6a1b, 0xf512e4da, 0xf4740643, 0x34ab8882, 0xb7beb3ab,
++ 0x77613d6a, 0x7607dff3, 0xb6d85132, 0xbbe85f0f, 0x7b37d1ce,
++ 0x7a513357, 0xba8ebd96, 0x399b86bf, 0xf944087e, 0xf822eae7,
++ 0x38fd6426, 0xfe099cb5, 0x3ed61274, 0x3fb0f0ed, 0xff6f7e2c,
++ 0x7c7a4505, 0xbca5cbc4, 0xbdc3295d, 0x7d1ca79c, 0xa7a33527,
++ 0x677cbbe6, 0x661a597f, 0xa6c5d7be, 0x25d0ec97, 0xe50f6256,
++ 0xe46980cf, 0x24b60e0e, 0xe242f69d, 0x229d785c, 0x23fb9ac5,
++ 0xe3241404, 0x60312f2d, 0xa0eea1ec, 0xa1884375, 0x6157cdb4,
++ 0x6c67c389, 0xacb84d48, 0xaddeafd1, 0x6d012110, 0xee141a39,
++ 0x2ecb94f8, 0x2fad7661, 0xef72f8a0, 0x29860033, 0xe9598ef2,
++ 0xe83f6c6b, 0x28e0e2aa, 0xabf5d983, 0x6b2a5742, 0x6a4cb5db,
++ 0xaa933b1a},
++ {0x00000000, 0x6f4ca59b, 0x9f9e3bec, 0xf0d29e77, 0x7f3b0603,
++ 0x1077a398, 0xe0a53def, 0x8fe99874, 0xfe760c06, 0x913aa99d,
++ 0x61e837ea, 0x0ea49271, 0x814d0a05, 0xee01af9e, 0x1ed331e9,
++ 0x719f9472, 0xfced180c, 0x93a1bd97, 0x637323e0, 0x0c3f867b,
++ 0x83d61e0f, 0xec9abb94, 0x1c4825e3, 0x73048078, 0x029b140a,
++ 0x6dd7b191, 0x9d052fe6, 0xf2498a7d, 0x7da01209, 0x12ecb792,
++ 0xe23e29e5, 0x8d728c7e, 0xf8db3118, 0x97979483, 0x67450af4,
++ 0x0809af6f, 0x87e0371b, 0xe8ac9280, 0x187e0cf7, 0x7732a96c,
++ 0x06ad3d1e, 0x69e19885, 0x993306f2, 0xf67fa369, 0x79963b1d,
++ 0x16da9e86, 0xe60800f1, 0x8944a56a, 0x04362914, 0x6b7a8c8f,
++ 0x9ba812f8, 0xf4e4b763, 0x7b0d2f17, 0x14418a8c, 0xe49314fb,
++ 0x8bdfb160, 0xfa402512, 0x950c8089, 0x65de1efe, 0x0a92bb65,
++ 0x857b2311, 0xea37868a, 0x1ae518fd, 0x75a9bd66, 0xf0b76330,
++ 0x9ffbc6ab, 0x6f2958dc, 0x0065fd47, 0x8f8c6533, 0xe0c0c0a8,
++ 0x10125edf, 0x7f5efb44, 0x0ec16f36, 0x618dcaad, 0x915f54da,
++ 0xfe13f141, 0x71fa6935, 0x1eb6ccae, 0xee6452d9, 0x8128f742,
++ 0x0c5a7b3c, 0x6316dea7, 0x93c440d0, 0xfc88e54b, 0x73617d3f,
++ 0x1c2dd8a4, 0xecff46d3, 0x83b3e348, 0xf22c773a, 0x9d60d2a1,
++ 0x6db24cd6, 0x02fee94d, 0x8d177139, 0xe25bd4a2, 0x12894ad5,
++ 0x7dc5ef4e, 0x086c5228, 0x6720f7b3, 0x97f269c4, 0xf8becc5f,
++ 0x7757542b, 0x181bf1b0, 0xe8c96fc7, 0x8785ca5c, 0xf61a5e2e,
++ 0x9956fbb5, 0x698465c2, 0x06c8c059, 0x8921582d, 0xe66dfdb6,
++ 0x16bf63c1, 0x79f3c65a, 0xf4814a24, 0x9bcdefbf, 0x6b1f71c8,
++ 0x0453d453, 0x8bba4c27, 0xe4f6e9bc, 0x142477cb, 0x7b68d250,
++ 0x0af74622, 0x65bbe3b9, 0x95697dce, 0xfa25d855, 0x75cc4021,
++ 0x1a80e5ba, 0xea527bcd, 0x851ede56, 0xe06fc760, 0x8f2362fb,
++ 0x7ff1fc8c, 0x10bd5917, 0x9f54c163, 0xf01864f8, 0x00cafa8f,
++ 0x6f865f14, 0x1e19cb66, 0x71556efd, 0x8187f08a, 0xeecb5511,
++ 0x6122cd65, 0x0e6e68fe, 0xfebcf689, 0x91f05312, 0x1c82df6c,
++ 0x73ce7af7, 0x831ce480, 0xec50411b, 0x63b9d96f, 0x0cf57cf4,
++ 0xfc27e283, 0x936b4718, 0xe2f4d36a, 0x8db876f1, 0x7d6ae886,
++ 0x12264d1d, 0x9dcfd569, 0xf28370f2, 0x0251ee85, 0x6d1d4b1e,
++ 0x18b4f678, 0x77f853e3, 0x872acd94, 0xe866680f, 0x678ff07b,
++ 0x08c355e0, 0xf811cb97, 0x975d6e0c, 0xe6c2fa7e, 0x898e5fe5,
++ 0x795cc192, 0x16106409, 0x99f9fc7d, 0xf6b559e6, 0x0667c791,
++ 0x692b620a, 0xe459ee74, 0x8b154bef, 0x7bc7d598, 0x148b7003,
++ 0x9b62e877, 0xf42e4dec, 0x04fcd39b, 0x6bb07600, 0x1a2fe272,
++ 0x756347e9, 0x85b1d99e, 0xeafd7c05, 0x6514e471, 0x0a5841ea,
++ 0xfa8adf9d, 0x95c67a06, 0x10d8a450, 0x7f9401cb, 0x8f469fbc,
++ 0xe00a3a27, 0x6fe3a253, 0x00af07c8, 0xf07d99bf, 0x9f313c24,
++ 0xeeaea856, 0x81e20dcd, 0x713093ba, 0x1e7c3621, 0x9195ae55,
++ 0xfed90bce, 0x0e0b95b9, 0x61473022, 0xec35bc5c, 0x837919c7,
++ 0x73ab87b0, 0x1ce7222b, 0x930eba5f, 0xfc421fc4, 0x0c9081b3,
++ 0x63dc2428, 0x1243b05a, 0x7d0f15c1, 0x8ddd8bb6, 0xe2912e2d,
++ 0x6d78b659, 0x023413c2, 0xf2e68db5, 0x9daa282e, 0xe8039548,
++ 0x874f30d3, 0x779daea4, 0x18d10b3f, 0x9738934b, 0xf87436d0,
++ 0x08a6a8a7, 0x67ea0d3c, 0x1675994e, 0x79393cd5, 0x89eba2a2,
++ 0xe6a70739, 0x694e9f4d, 0x06023ad6, 0xf6d0a4a1, 0x999c013a,
++ 0x14ee8d44, 0x7ba228df, 0x8b70b6a8, 0xe43c1333, 0x6bd58b47,
++ 0x04992edc, 0xf44bb0ab, 0x9b071530, 0xea988142, 0x85d424d9,
++ 0x7506baae, 0x1a4a1f35, 0x95a38741, 0xfaef22da, 0x0a3dbcad,
++ 0x65711936}};
++
++#endif
++
++#endif
++
++#if N == 4
++
++#if W == 8
++
++local const z_crc_t FAR crc_braid_table[][256] = {
++ {0x00000000, 0xf1da05aa, 0x38c50d15, 0xc91f08bf, 0x718a1a2a,
++ 0x80501f80, 0x494f173f, 0xb8951295, 0xe3143454, 0x12ce31fe,
++ 0xdbd13941, 0x2a0b3ceb, 0x929e2e7e, 0x63442bd4, 0xaa5b236b,
++ 0x5b8126c1, 0x1d596ee9, 0xec836b43, 0x259c63fc, 0xd4466656,
++ 0x6cd374c3, 0x9d097169, 0x541679d6, 0xa5cc7c7c, 0xfe4d5abd,
++ 0x0f975f17, 0xc68857a8, 0x37525202, 0x8fc74097, 0x7e1d453d,
++ 0xb7024d82, 0x46d84828, 0x3ab2ddd2, 0xcb68d878, 0x0277d0c7,
++ 0xf3add56d, 0x4b38c7f8, 0xbae2c252, 0x73fdcaed, 0x8227cf47,
++ 0xd9a6e986, 0x287cec2c, 0xe163e493, 0x10b9e139, 0xa82cf3ac,
++ 0x59f6f606, 0x90e9feb9, 0x6133fb13, 0x27ebb33b, 0xd631b691,
++ 0x1f2ebe2e, 0xeef4bb84, 0x5661a911, 0xa7bbacbb, 0x6ea4a404,
++ 0x9f7ea1ae, 0xc4ff876f, 0x352582c5, 0xfc3a8a7a, 0x0de08fd0,
++ 0xb5759d45, 0x44af98ef, 0x8db09050, 0x7c6a95fa, 0x7565bba4,
++ 0x84bfbe0e, 0x4da0b6b1, 0xbc7ab31b, 0x04efa18e, 0xf535a424,
++ 0x3c2aac9b, 0xcdf0a931, 0x96718ff0, 0x67ab8a5a, 0xaeb482e5,
++ 0x5f6e874f, 0xe7fb95da, 0x16219070, 0xdf3e98cf, 0x2ee49d65,
++ 0x683cd54d, 0x99e6d0e7, 0x50f9d858, 0xa123ddf2, 0x19b6cf67,
++ 0xe86ccacd, 0x2173c272, 0xd0a9c7d8, 0x8b28e119, 0x7af2e4b3,
++ 0xb3edec0c, 0x4237e9a6, 0xfaa2fb33, 0x0b78fe99, 0xc267f626,
++ 0x33bdf38c, 0x4fd76676, 0xbe0d63dc, 0x77126b63, 0x86c86ec9,
++ 0x3e5d7c5c, 0xcf8779f6, 0x06987149, 0xf74274e3, 0xacc35222,
++ 0x5d195788, 0x94065f37, 0x65dc5a9d, 0xdd494808, 0x2c934da2,
++ 0xe58c451d, 0x145640b7, 0x528e089f, 0xa3540d35, 0x6a4b058a,
++ 0x9b910020, 0x230412b5, 0xd2de171f, 0x1bc11fa0, 0xea1b1a0a,
++ 0xb19a3ccb, 0x40403961, 0x895f31de, 0x78853474, 0xc01026e1,
++ 0x31ca234b, 0xf8d52bf4, 0x090f2e5e, 0xeacb7748, 0x1b1172e2,
++ 0xd20e7a5d, 0x23d47ff7, 0x9b416d62, 0x6a9b68c8, 0xa3846077,
++ 0x525e65dd, 0x09df431c, 0xf80546b6, 0x311a4e09, 0xc0c04ba3,
++ 0x78555936, 0x898f5c9c, 0x40905423, 0xb14a5189, 0xf79219a1,
++ 0x06481c0b, 0xcf5714b4, 0x3e8d111e, 0x8618038b, 0x77c20621,
++ 0xbedd0e9e, 0x4f070b34, 0x14862df5, 0xe55c285f, 0x2c4320e0,
++ 0xdd99254a, 0x650c37df, 0x94d63275, 0x5dc93aca, 0xac133f60,
++ 0xd079aa9a, 0x21a3af30, 0xe8bca78f, 0x1966a225, 0xa1f3b0b0,
++ 0x5029b51a, 0x9936bda5, 0x68ecb80f, 0x336d9ece, 0xc2b79b64,
++ 0x0ba893db, 0xfa729671, 0x42e784e4, 0xb33d814e, 0x7a2289f1,
++ 0x8bf88c5b, 0xcd20c473, 0x3cfac1d9, 0xf5e5c966, 0x043fcccc,
++ 0xbcaade59, 0x4d70dbf3, 0x846fd34c, 0x75b5d6e6, 0x2e34f027,
++ 0xdfeef58d, 0x16f1fd32, 0xe72bf898, 0x5fbeea0d, 0xae64efa7,
++ 0x677be718, 0x96a1e2b2, 0x9faeccec, 0x6e74c946, 0xa76bc1f9,
++ 0x56b1c453, 0xee24d6c6, 0x1ffed36c, 0xd6e1dbd3, 0x273bde79,
++ 0x7cbaf8b8, 0x8d60fd12, 0x447ff5ad, 0xb5a5f007, 0x0d30e292,
++ 0xfceae738, 0x35f5ef87, 0xc42fea2d, 0x82f7a205, 0x732da7af,
++ 0xba32af10, 0x4be8aaba, 0xf37db82f, 0x02a7bd85, 0xcbb8b53a,
++ 0x3a62b090, 0x61e39651, 0x903993fb, 0x59269b44, 0xa8fc9eee,
++ 0x10698c7b, 0xe1b389d1, 0x28ac816e, 0xd97684c4, 0xa51c113e,
++ 0x54c61494, 0x9dd91c2b, 0x6c031981, 0xd4960b14, 0x254c0ebe,
++ 0xec530601, 0x1d8903ab, 0x4608256a, 0xb7d220c0, 0x7ecd287f,
++ 0x8f172dd5, 0x37823f40, 0xc6583aea, 0x0f473255, 0xfe9d37ff,
++ 0xb8457fd7, 0x499f7a7d, 0x808072c2, 0x715a7768, 0xc9cf65fd,
++ 0x38156057, 0xf10a68e8, 0x00d06d42, 0x5b514b83, 0xaa8b4e29,
++ 0x63944696, 0x924e433c, 0x2adb51a9, 0xdb015403, 0x121e5cbc,
++ 0xe3c45916},
++ {0x00000000, 0x0ee7e8d1, 0x1dcfd1a2, 0x13283973, 0x3b9fa344,
++ 0x35784b95, 0x265072e6, 0x28b79a37, 0x773f4688, 0x79d8ae59,
++ 0x6af0972a, 0x64177ffb, 0x4ca0e5cc, 0x42470d1d, 0x516f346e,
++ 0x5f88dcbf, 0xee7e8d10, 0xe09965c1, 0xf3b15cb2, 0xfd56b463,
++ 0xd5e12e54, 0xdb06c685, 0xc82efff6, 0xc6c91727, 0x9941cb98,
++ 0x97a62349, 0x848e1a3a, 0x8a69f2eb, 0xa2de68dc, 0xac39800d,
++ 0xbf11b97e, 0xb1f651af, 0x078c1c61, 0x096bf4b0, 0x1a43cdc3,
++ 0x14a42512, 0x3c13bf25, 0x32f457f4, 0x21dc6e87, 0x2f3b8656,
++ 0x70b35ae9, 0x7e54b238, 0x6d7c8b4b, 0x639b639a, 0x4b2cf9ad,
++ 0x45cb117c, 0x56e3280f, 0x5804c0de, 0xe9f29171, 0xe71579a0,
++ 0xf43d40d3, 0xfadaa802, 0xd26d3235, 0xdc8adae4, 0xcfa2e397,
++ 0xc1450b46, 0x9ecdd7f9, 0x902a3f28, 0x8302065b, 0x8de5ee8a,
++ 0xa55274bd, 0xabb59c6c, 0xb89da51f, 0xb67a4dce, 0x0f1838c2,
++ 0x01ffd013, 0x12d7e960, 0x1c3001b1, 0x34879b86, 0x3a607357,
++ 0x29484a24, 0x27afa2f5, 0x78277e4a, 0x76c0969b, 0x65e8afe8,
++ 0x6b0f4739, 0x43b8dd0e, 0x4d5f35df, 0x5e770cac, 0x5090e47d,
++ 0xe166b5d2, 0xef815d03, 0xfca96470, 0xf24e8ca1, 0xdaf91696,
++ 0xd41efe47, 0xc736c734, 0xc9d12fe5, 0x9659f35a, 0x98be1b8b,
++ 0x8b9622f8, 0x8571ca29, 0xadc6501e, 0xa321b8cf, 0xb00981bc,
++ 0xbeee696d, 0x089424a3, 0x0673cc72, 0x155bf501, 0x1bbc1dd0,
++ 0x330b87e7, 0x3dec6f36, 0x2ec45645, 0x2023be94, 0x7fab622b,
++ 0x714c8afa, 0x6264b389, 0x6c835b58, 0x4434c16f, 0x4ad329be,
++ 0x59fb10cd, 0x571cf81c, 0xe6eaa9b3, 0xe80d4162, 0xfb257811,
++ 0xf5c290c0, 0xdd750af7, 0xd392e226, 0xc0badb55, 0xce5d3384,
++ 0x91d5ef3b, 0x9f3207ea, 0x8c1a3e99, 0x82fdd648, 0xaa4a4c7f,
++ 0xa4ada4ae, 0xb7859ddd, 0xb962750c, 0x1e307184, 0x10d79955,
++ 0x03ffa026, 0x0d1848f7, 0x25afd2c0, 0x2b483a11, 0x38600362,
++ 0x3687ebb3, 0x690f370c, 0x67e8dfdd, 0x74c0e6ae, 0x7a270e7f,
++ 0x52909448, 0x5c777c99, 0x4f5f45ea, 0x41b8ad3b, 0xf04efc94,
++ 0xfea91445, 0xed812d36, 0xe366c5e7, 0xcbd15fd0, 0xc536b701,
++ 0xd61e8e72, 0xd8f966a3, 0x8771ba1c, 0x899652cd, 0x9abe6bbe,
++ 0x9459836f, 0xbcee1958, 0xb209f189, 0xa121c8fa, 0xafc6202b,
++ 0x19bc6de5, 0x175b8534, 0x0473bc47, 0x0a945496, 0x2223cea1,
++ 0x2cc42670, 0x3fec1f03, 0x310bf7d2, 0x6e832b6d, 0x6064c3bc,
++ 0x734cfacf, 0x7dab121e, 0x551c8829, 0x5bfb60f8, 0x48d3598b,
++ 0x4634b15a, 0xf7c2e0f5, 0xf9250824, 0xea0d3157, 0xe4ead986,
++ 0xcc5d43b1, 0xc2baab60, 0xd1929213, 0xdf757ac2, 0x80fda67d,
++ 0x8e1a4eac, 0x9d3277df, 0x93d59f0e, 0xbb620539, 0xb585ede8,
++ 0xa6add49b, 0xa84a3c4a, 0x11284946, 0x1fcfa197, 0x0ce798e4,
++ 0x02007035, 0x2ab7ea02, 0x245002d3, 0x37783ba0, 0x399fd371,
++ 0x66170fce, 0x68f0e71f, 0x7bd8de6c, 0x753f36bd, 0x5d88ac8a,
++ 0x536f445b, 0x40477d28, 0x4ea095f9, 0xff56c456, 0xf1b12c87,
++ 0xe29915f4, 0xec7efd25, 0xc4c96712, 0xca2e8fc3, 0xd906b6b0,
++ 0xd7e15e61, 0x886982de, 0x868e6a0f, 0x95a6537c, 0x9b41bbad,
++ 0xb3f6219a, 0xbd11c94b, 0xae39f038, 0xa0de18e9, 0x16a45527,
++ 0x1843bdf6, 0x0b6b8485, 0x058c6c54, 0x2d3bf663, 0x23dc1eb2,
++ 0x30f427c1, 0x3e13cf10, 0x619b13af, 0x6f7cfb7e, 0x7c54c20d,
++ 0x72b32adc, 0x5a04b0eb, 0x54e3583a, 0x47cb6149, 0x492c8998,
++ 0xf8dad837, 0xf63d30e6, 0xe5150995, 0xebf2e144, 0xc3457b73,
++ 0xcda293a2, 0xde8aaad1, 0xd06d4200, 0x8fe59ebf, 0x8102766e,
++ 0x922a4f1d, 0x9ccda7cc, 0xb47a3dfb, 0xba9dd52a, 0xa9b5ec59,
++ 0xa7520488},
++ {0x00000000, 0x3c60e308, 0x78c1c610, 0x44a12518, 0xf1838c20,
++ 0xcde36f28, 0x89424a30, 0xb522a938, 0x38761e01, 0x0416fd09,
++ 0x40b7d811, 0x7cd73b19, 0xc9f59221, 0xf5957129, 0xb1345431,
++ 0x8d54b739, 0x70ec3c02, 0x4c8cdf0a, 0x082dfa12, 0x344d191a,
++ 0x816fb022, 0xbd0f532a, 0xf9ae7632, 0xc5ce953a, 0x489a2203,
++ 0x74fac10b, 0x305be413, 0x0c3b071b, 0xb919ae23, 0x85794d2b,
++ 0xc1d86833, 0xfdb88b3b, 0xe1d87804, 0xddb89b0c, 0x9919be14,
++ 0xa5795d1c, 0x105bf424, 0x2c3b172c, 0x689a3234, 0x54fad13c,
++ 0xd9ae6605, 0xe5ce850d, 0xa16fa015, 0x9d0f431d, 0x282dea25,
++ 0x144d092d, 0x50ec2c35, 0x6c8ccf3d, 0x91344406, 0xad54a70e,
++ 0xe9f58216, 0xd595611e, 0x60b7c826, 0x5cd72b2e, 0x18760e36,
++ 0x2416ed3e, 0xa9425a07, 0x9522b90f, 0xd1839c17, 0xede37f1f,
++ 0x58c1d627, 0x64a1352f, 0x20001037, 0x1c60f33f, 0x18c1f649,
++ 0x24a11541, 0x60003059, 0x5c60d351, 0xe9427a69, 0xd5229961,
++ 0x9183bc79, 0xade35f71, 0x20b7e848, 0x1cd70b40, 0x58762e58,
++ 0x6416cd50, 0xd1346468, 0xed548760, 0xa9f5a278, 0x95954170,
++ 0x682dca4b, 0x544d2943, 0x10ec0c5b, 0x2c8cef53, 0x99ae466b,
++ 0xa5cea563, 0xe16f807b, 0xdd0f6373, 0x505bd44a, 0x6c3b3742,
++ 0x289a125a, 0x14faf152, 0xa1d8586a, 0x9db8bb62, 0xd9199e7a,
++ 0xe5797d72, 0xf9198e4d, 0xc5796d45, 0x81d8485d, 0xbdb8ab55,
++ 0x089a026d, 0x34fae165, 0x705bc47d, 0x4c3b2775, 0xc16f904c,
++ 0xfd0f7344, 0xb9ae565c, 0x85ceb554, 0x30ec1c6c, 0x0c8cff64,
++ 0x482dda7c, 0x744d3974, 0x89f5b24f, 0xb5955147, 0xf134745f,
++ 0xcd549757, 0x78763e6f, 0x4416dd67, 0x00b7f87f, 0x3cd71b77,
++ 0xb183ac4e, 0x8de34f46, 0xc9426a5e, 0xf5228956, 0x4000206e,
++ 0x7c60c366, 0x38c1e67e, 0x04a10576, 0x3183ec92, 0x0de30f9a,
++ 0x49422a82, 0x7522c98a, 0xc00060b2, 0xfc6083ba, 0xb8c1a6a2,
++ 0x84a145aa, 0x09f5f293, 0x3595119b, 0x71343483, 0x4d54d78b,
++ 0xf8767eb3, 0xc4169dbb, 0x80b7b8a3, 0xbcd75bab, 0x416fd090,
++ 0x7d0f3398, 0x39ae1680, 0x05cef588, 0xb0ec5cb0, 0x8c8cbfb8,
++ 0xc82d9aa0, 0xf44d79a8, 0x7919ce91, 0x45792d99, 0x01d80881,
++ 0x3db8eb89, 0x889a42b1, 0xb4faa1b9, 0xf05b84a1, 0xcc3b67a9,
++ 0xd05b9496, 0xec3b779e, 0xa89a5286, 0x94fab18e, 0x21d818b6,
++ 0x1db8fbbe, 0x5919dea6, 0x65793dae, 0xe82d8a97, 0xd44d699f,
++ 0x90ec4c87, 0xac8caf8f, 0x19ae06b7, 0x25cee5bf, 0x616fc0a7,
++ 0x5d0f23af, 0xa0b7a894, 0x9cd74b9c, 0xd8766e84, 0xe4168d8c,
++ 0x513424b4, 0x6d54c7bc, 0x29f5e2a4, 0x159501ac, 0x98c1b695,
++ 0xa4a1559d, 0xe0007085, 0xdc60938d, 0x69423ab5, 0x5522d9bd,
++ 0x1183fca5, 0x2de31fad, 0x29421adb, 0x1522f9d3, 0x5183dccb,
++ 0x6de33fc3, 0xd8c196fb, 0xe4a175f3, 0xa00050eb, 0x9c60b3e3,
++ 0x113404da, 0x2d54e7d2, 0x69f5c2ca, 0x559521c2, 0xe0b788fa,
++ 0xdcd76bf2, 0x98764eea, 0xa416ade2, 0x59ae26d9, 0x65cec5d1,
++ 0x216fe0c9, 0x1d0f03c1, 0xa82daaf9, 0x944d49f1, 0xd0ec6ce9,
++ 0xec8c8fe1, 0x61d838d8, 0x5db8dbd0, 0x1919fec8, 0x25791dc0,
++ 0x905bb4f8, 0xac3b57f0, 0xe89a72e8, 0xd4fa91e0, 0xc89a62df,
++ 0xf4fa81d7, 0xb05ba4cf, 0x8c3b47c7, 0x3919eeff, 0x05790df7,
++ 0x41d828ef, 0x7db8cbe7, 0xf0ec7cde, 0xcc8c9fd6, 0x882dbace,
++ 0xb44d59c6, 0x016ff0fe, 0x3d0f13f6, 0x79ae36ee, 0x45ced5e6,
++ 0xb8765edd, 0x8416bdd5, 0xc0b798cd, 0xfcd77bc5, 0x49f5d2fd,
++ 0x759531f5, 0x313414ed, 0x0d54f7e5, 0x800040dc, 0xbc60a3d4,
++ 0xf8c186cc, 0xc4a165c4, 0x7183ccfc, 0x4de32ff4, 0x09420aec,
++ 0x3522e9e4},
++ {0x00000000, 0x6307d924, 0xc60fb248, 0xa5086b6c, 0x576e62d1,
++ 0x3469bbf5, 0x9161d099, 0xf26609bd, 0xaedcc5a2, 0xcddb1c86,
++ 0x68d377ea, 0x0bd4aece, 0xf9b2a773, 0x9ab57e57, 0x3fbd153b,
++ 0x5cbacc1f, 0x86c88d05, 0xe5cf5421, 0x40c73f4d, 0x23c0e669,
++ 0xd1a6efd4, 0xb2a136f0, 0x17a95d9c, 0x74ae84b8, 0x281448a7,
++ 0x4b139183, 0xee1bfaef, 0x8d1c23cb, 0x7f7a2a76, 0x1c7df352,
++ 0xb975983e, 0xda72411a, 0xd6e01c4b, 0xb5e7c56f, 0x10efae03,
++ 0x73e87727, 0x818e7e9a, 0xe289a7be, 0x4781ccd2, 0x248615f6,
++ 0x783cd9e9, 0x1b3b00cd, 0xbe336ba1, 0xdd34b285, 0x2f52bb38,
++ 0x4c55621c, 0xe95d0970, 0x8a5ad054, 0x5028914e, 0x332f486a,
++ 0x96272306, 0xf520fa22, 0x0746f39f, 0x64412abb, 0xc14941d7,
++ 0xa24e98f3, 0xfef454ec, 0x9df38dc8, 0x38fbe6a4, 0x5bfc3f80,
++ 0xa99a363d, 0xca9def19, 0x6f958475, 0x0c925d51, 0x76b13ed7,
++ 0x15b6e7f3, 0xb0be8c9f, 0xd3b955bb, 0x21df5c06, 0x42d88522,
++ 0xe7d0ee4e, 0x84d7376a, 0xd86dfb75, 0xbb6a2251, 0x1e62493d,
++ 0x7d659019, 0x8f0399a4, 0xec044080, 0x490c2bec, 0x2a0bf2c8,
++ 0xf079b3d2, 0x937e6af6, 0x3676019a, 0x5571d8be, 0xa717d103,
++ 0xc4100827, 0x6118634b, 0x021fba6f, 0x5ea57670, 0x3da2af54,
++ 0x98aac438, 0xfbad1d1c, 0x09cb14a1, 0x6acccd85, 0xcfc4a6e9,
++ 0xacc37fcd, 0xa051229c, 0xc356fbb8, 0x665e90d4, 0x055949f0,
++ 0xf73f404d, 0x94389969, 0x3130f205, 0x52372b21, 0x0e8de73e,
++ 0x6d8a3e1a, 0xc8825576, 0xab858c52, 0x59e385ef, 0x3ae45ccb,
++ 0x9fec37a7, 0xfcebee83, 0x2699af99, 0x459e76bd, 0xe0961dd1,
++ 0x8391c4f5, 0x71f7cd48, 0x12f0146c, 0xb7f87f00, 0xd4ffa624,
++ 0x88456a3b, 0xeb42b31f, 0x4e4ad873, 0x2d4d0157, 0xdf2b08ea,
++ 0xbc2cd1ce, 0x1924baa2, 0x7a236386, 0xed627dae, 0x8e65a48a,
++ 0x2b6dcfe6, 0x486a16c2, 0xba0c1f7f, 0xd90bc65b, 0x7c03ad37,
++ 0x1f047413, 0x43beb80c, 0x20b96128, 0x85b10a44, 0xe6b6d360,
++ 0x14d0dadd, 0x77d703f9, 0xd2df6895, 0xb1d8b1b1, 0x6baaf0ab,
++ 0x08ad298f, 0xada542e3, 0xcea29bc7, 0x3cc4927a, 0x5fc34b5e,
++ 0xfacb2032, 0x99ccf916, 0xc5763509, 0xa671ec2d, 0x03798741,
++ 0x607e5e65, 0x921857d8, 0xf11f8efc, 0x5417e590, 0x37103cb4,
++ 0x3b8261e5, 0x5885b8c1, 0xfd8dd3ad, 0x9e8a0a89, 0x6cec0334,
++ 0x0febda10, 0xaae3b17c, 0xc9e46858, 0x955ea447, 0xf6597d63,
++ 0x5351160f, 0x3056cf2b, 0xc230c696, 0xa1371fb2, 0x043f74de,
++ 0x6738adfa, 0xbd4aece0, 0xde4d35c4, 0x7b455ea8, 0x1842878c,
++ 0xea248e31, 0x89235715, 0x2c2b3c79, 0x4f2ce55d, 0x13962942,
++ 0x7091f066, 0xd5999b0a, 0xb69e422e, 0x44f84b93, 0x27ff92b7,
++ 0x82f7f9db, 0xe1f020ff, 0x9bd34379, 0xf8d49a5d, 0x5ddcf131,
++ 0x3edb2815, 0xccbd21a8, 0xafbaf88c, 0x0ab293e0, 0x69b54ac4,
++ 0x350f86db, 0x56085fff, 0xf3003493, 0x9007edb7, 0x6261e40a,
++ 0x01663d2e, 0xa46e5642, 0xc7698f66, 0x1d1bce7c, 0x7e1c1758,
++ 0xdb147c34, 0xb813a510, 0x4a75acad, 0x29727589, 0x8c7a1ee5,
++ 0xef7dc7c1, 0xb3c70bde, 0xd0c0d2fa, 0x75c8b996, 0x16cf60b2,
++ 0xe4a9690f, 0x87aeb02b, 0x22a6db47, 0x41a10263, 0x4d335f32,
++ 0x2e348616, 0x8b3ced7a, 0xe83b345e, 0x1a5d3de3, 0x795ae4c7,
++ 0xdc528fab, 0xbf55568f, 0xe3ef9a90, 0x80e843b4, 0x25e028d8,
++ 0x46e7f1fc, 0xb481f841, 0xd7862165, 0x728e4a09, 0x1189932d,
++ 0xcbfbd237, 0xa8fc0b13, 0x0df4607f, 0x6ef3b95b, 0x9c95b0e6,
++ 0xff9269c2, 0x5a9a02ae, 0x399ddb8a, 0x65271795, 0x0620ceb1,
++ 0xa328a5dd, 0xc02f7cf9, 0x32497544, 0x514eac60, 0xf446c70c,
++ 0x97411e28},
++ {0x00000000, 0x01b5fd1d, 0x036bfa3a, 0x02de0727, 0x06d7f474,
++ 0x07620969, 0x05bc0e4e, 0x0409f353, 0x0dafe8e8, 0x0c1a15f5,
++ 0x0ec412d2, 0x0f71efcf, 0x0b781c9c, 0x0acde181, 0x0813e6a6,
++ 0x09a61bbb, 0x1b5fd1d0, 0x1aea2ccd, 0x18342bea, 0x1981d6f7,
++ 0x1d8825a4, 0x1c3dd8b9, 0x1ee3df9e, 0x1f562283, 0x16f03938,
++ 0x1745c425, 0x159bc302, 0x142e3e1f, 0x1027cd4c, 0x11923051,
++ 0x134c3776, 0x12f9ca6b, 0x36bfa3a0, 0x370a5ebd, 0x35d4599a,
++ 0x3461a487, 0x306857d4, 0x31ddaac9, 0x3303adee, 0x32b650f3,
++ 0x3b104b48, 0x3aa5b655, 0x387bb172, 0x39ce4c6f, 0x3dc7bf3c,
++ 0x3c724221, 0x3eac4506, 0x3f19b81b, 0x2de07270, 0x2c558f6d,
++ 0x2e8b884a, 0x2f3e7557, 0x2b378604, 0x2a827b19, 0x285c7c3e,
++ 0x29e98123, 0x204f9a98, 0x21fa6785, 0x232460a2, 0x22919dbf,
++ 0x26986eec, 0x272d93f1, 0x25f394d6, 0x244669cb, 0x6d7f4740,
++ 0x6ccaba5d, 0x6e14bd7a, 0x6fa14067, 0x6ba8b334, 0x6a1d4e29,
++ 0x68c3490e, 0x6976b413, 0x60d0afa8, 0x616552b5, 0x63bb5592,
++ 0x620ea88f, 0x66075bdc, 0x67b2a6c1, 0x656ca1e6, 0x64d95cfb,
++ 0x76209690, 0x77956b8d, 0x754b6caa, 0x74fe91b7, 0x70f762e4,
++ 0x71429ff9, 0x739c98de, 0x722965c3, 0x7b8f7e78, 0x7a3a8365,
++ 0x78e48442, 0x7951795f, 0x7d588a0c, 0x7ced7711, 0x7e337036,
++ 0x7f868d2b, 0x5bc0e4e0, 0x5a7519fd, 0x58ab1eda, 0x591ee3c7,
++ 0x5d171094, 0x5ca2ed89, 0x5e7ceaae, 0x5fc917b3, 0x566f0c08,
++ 0x57daf115, 0x5504f632, 0x54b10b2f, 0x50b8f87c, 0x510d0561,
++ 0x53d30246, 0x5266ff5b, 0x409f3530, 0x412ac82d, 0x43f4cf0a,
++ 0x42413217, 0x4648c144, 0x47fd3c59, 0x45233b7e, 0x4496c663,
++ 0x4d30ddd8, 0x4c8520c5, 0x4e5b27e2, 0x4feedaff, 0x4be729ac,
++ 0x4a52d4b1, 0x488cd396, 0x49392e8b, 0xdafe8e80, 0xdb4b739d,
++ 0xd99574ba, 0xd82089a7, 0xdc297af4, 0xdd9c87e9, 0xdf4280ce,
++ 0xdef77dd3, 0xd7516668, 0xd6e49b75, 0xd43a9c52, 0xd58f614f,
++ 0xd186921c, 0xd0336f01, 0xd2ed6826, 0xd358953b, 0xc1a15f50,
++ 0xc014a24d, 0xc2caa56a, 0xc37f5877, 0xc776ab24, 0xc6c35639,
++ 0xc41d511e, 0xc5a8ac03, 0xcc0eb7b8, 0xcdbb4aa5, 0xcf654d82,
++ 0xced0b09f, 0xcad943cc, 0xcb6cbed1, 0xc9b2b9f6, 0xc80744eb,
++ 0xec412d20, 0xedf4d03d, 0xef2ad71a, 0xee9f2a07, 0xea96d954,
++ 0xeb232449, 0xe9fd236e, 0xe848de73, 0xe1eec5c8, 0xe05b38d5,
++ 0xe2853ff2, 0xe330c2ef, 0xe73931bc, 0xe68ccca1, 0xe452cb86,
++ 0xe5e7369b, 0xf71efcf0, 0xf6ab01ed, 0xf47506ca, 0xf5c0fbd7,
++ 0xf1c90884, 0xf07cf599, 0xf2a2f2be, 0xf3170fa3, 0xfab11418,
++ 0xfb04e905, 0xf9daee22, 0xf86f133f, 0xfc66e06c, 0xfdd31d71,
++ 0xff0d1a56, 0xfeb8e74b, 0xb781c9c0, 0xb63434dd, 0xb4ea33fa,
++ 0xb55fcee7, 0xb1563db4, 0xb0e3c0a9, 0xb23dc78e, 0xb3883a93,
++ 0xba2e2128, 0xbb9bdc35, 0xb945db12, 0xb8f0260f, 0xbcf9d55c,
++ 0xbd4c2841, 0xbf922f66, 0xbe27d27b, 0xacde1810, 0xad6be50d,
++ 0xafb5e22a, 0xae001f37, 0xaa09ec64, 0xabbc1179, 0xa962165e,
++ 0xa8d7eb43, 0xa171f0f8, 0xa0c40de5, 0xa21a0ac2, 0xa3aff7df,
++ 0xa7a6048c, 0xa613f991, 0xa4cdfeb6, 0xa57803ab, 0x813e6a60,
++ 0x808b977d, 0x8255905a, 0x83e06d47, 0x87e99e14, 0x865c6309,
++ 0x8482642e, 0x85379933, 0x8c918288, 0x8d247f95, 0x8ffa78b2,
++ 0x8e4f85af, 0x8a4676fc, 0x8bf38be1, 0x892d8cc6, 0x889871db,
++ 0x9a61bbb0, 0x9bd446ad, 0x990a418a, 0x98bfbc97, 0x9cb64fc4,
++ 0x9d03b2d9, 0x9fddb5fe, 0x9e6848e3, 0x97ce5358, 0x967bae45,
++ 0x94a5a962, 0x9510547f, 0x9119a72c, 0x90ac5a31, 0x92725d16,
++ 0x93c7a00b},
++ {0x00000000, 0x6e8c1b41, 0xdd183682, 0xb3942dc3, 0x61416b45,
++ 0x0fcd7004, 0xbc595dc7, 0xd2d54686, 0xc282d68a, 0xac0ecdcb,
++ 0x1f9ae008, 0x7116fb49, 0xa3c3bdcf, 0xcd4fa68e, 0x7edb8b4d,
++ 0x1057900c, 0x5e74ab55, 0x30f8b014, 0x836c9dd7, 0xede08696,
++ 0x3f35c010, 0x51b9db51, 0xe22df692, 0x8ca1edd3, 0x9cf67ddf,
++ 0xf27a669e, 0x41ee4b5d, 0x2f62501c, 0xfdb7169a, 0x933b0ddb,
++ 0x20af2018, 0x4e233b59, 0xbce956aa, 0xd2654deb, 0x61f16028,
++ 0x0f7d7b69, 0xdda83def, 0xb32426ae, 0x00b00b6d, 0x6e3c102c,
++ 0x7e6b8020, 0x10e79b61, 0xa373b6a2, 0xcdffade3, 0x1f2aeb65,
++ 0x71a6f024, 0xc232dde7, 0xacbec6a6, 0xe29dfdff, 0x8c11e6be,
++ 0x3f85cb7d, 0x5109d03c, 0x83dc96ba, 0xed508dfb, 0x5ec4a038,
++ 0x3048bb79, 0x201f2b75, 0x4e933034, 0xfd071df7, 0x938b06b6,
++ 0x415e4030, 0x2fd25b71, 0x9c4676b2, 0xf2ca6df3, 0xa2a3ab15,
++ 0xcc2fb054, 0x7fbb9d97, 0x113786d6, 0xc3e2c050, 0xad6edb11,
++ 0x1efaf6d2, 0x7076ed93, 0x60217d9f, 0x0ead66de, 0xbd394b1d,
++ 0xd3b5505c, 0x016016da, 0x6fec0d9b, 0xdc782058, 0xb2f43b19,
++ 0xfcd70040, 0x925b1b01, 0x21cf36c2, 0x4f432d83, 0x9d966b05,
++ 0xf31a7044, 0x408e5d87, 0x2e0246c6, 0x3e55d6ca, 0x50d9cd8b,
++ 0xe34de048, 0x8dc1fb09, 0x5f14bd8f, 0x3198a6ce, 0x820c8b0d,
++ 0xec80904c, 0x1e4afdbf, 0x70c6e6fe, 0xc352cb3d, 0xadded07c,
++ 0x7f0b96fa, 0x11878dbb, 0xa213a078, 0xcc9fbb39, 0xdcc82b35,
++ 0xb2443074, 0x01d01db7, 0x6f5c06f6, 0xbd894070, 0xd3055b31,
++ 0x609176f2, 0x0e1d6db3, 0x403e56ea, 0x2eb24dab, 0x9d266068,
++ 0xf3aa7b29, 0x217f3daf, 0x4ff326ee, 0xfc670b2d, 0x92eb106c,
++ 0x82bc8060, 0xec309b21, 0x5fa4b6e2, 0x3128ada3, 0xe3fdeb25,
++ 0x8d71f064, 0x3ee5dda7, 0x5069c6e6, 0x9e36506b, 0xf0ba4b2a,
++ 0x432e66e9, 0x2da27da8, 0xff773b2e, 0x91fb206f, 0x226f0dac,
++ 0x4ce316ed, 0x5cb486e1, 0x32389da0, 0x81acb063, 0xef20ab22,
++ 0x3df5eda4, 0x5379f6e5, 0xe0eddb26, 0x8e61c067, 0xc042fb3e,
++ 0xaecee07f, 0x1d5acdbc, 0x73d6d6fd, 0xa103907b, 0xcf8f8b3a,
++ 0x7c1ba6f9, 0x1297bdb8, 0x02c02db4, 0x6c4c36f5, 0xdfd81b36,
++ 0xb1540077, 0x638146f1, 0x0d0d5db0, 0xbe997073, 0xd0156b32,
++ 0x22df06c1, 0x4c531d80, 0xffc73043, 0x914b2b02, 0x439e6d84,
++ 0x2d1276c5, 0x9e865b06, 0xf00a4047, 0xe05dd04b, 0x8ed1cb0a,
++ 0x3d45e6c9, 0x53c9fd88, 0x811cbb0e, 0xef90a04f, 0x5c048d8c,
++ 0x328896cd, 0x7cabad94, 0x1227b6d5, 0xa1b39b16, 0xcf3f8057,
++ 0x1deac6d1, 0x7366dd90, 0xc0f2f053, 0xae7eeb12, 0xbe297b1e,
++ 0xd0a5605f, 0x63314d9c, 0x0dbd56dd, 0xdf68105b, 0xb1e40b1a,
++ 0x027026d9, 0x6cfc3d98, 0x3c95fb7e, 0x5219e03f, 0xe18dcdfc,
++ 0x8f01d6bd, 0x5dd4903b, 0x33588b7a, 0x80cca6b9, 0xee40bdf8,
++ 0xfe172df4, 0x909b36b5, 0x230f1b76, 0x4d830037, 0x9f5646b1,
++ 0xf1da5df0, 0x424e7033, 0x2cc26b72, 0x62e1502b, 0x0c6d4b6a,
++ 0xbff966a9, 0xd1757de8, 0x03a03b6e, 0x6d2c202f, 0xdeb80dec,
++ 0xb03416ad, 0xa06386a1, 0xceef9de0, 0x7d7bb023, 0x13f7ab62,
++ 0xc122ede4, 0xafaef6a5, 0x1c3adb66, 0x72b6c027, 0x807cadd4,
++ 0xeef0b695, 0x5d649b56, 0x33e88017, 0xe13dc691, 0x8fb1ddd0,
++ 0x3c25f013, 0x52a9eb52, 0x42fe7b5e, 0x2c72601f, 0x9fe64ddc,
++ 0xf16a569d, 0x23bf101b, 0x4d330b5a, 0xfea72699, 0x902b3dd8,
++ 0xde080681, 0xb0841dc0, 0x03103003, 0x6d9c2b42, 0xbf496dc4,
++ 0xd1c57685, 0x62515b46, 0x0cdd4007, 0x1c8ad00b, 0x7206cb4a,
++ 0xc192e689, 0xaf1efdc8, 0x7dcbbb4e, 0x1347a00f, 0xa0d38dcc,
++ 0xce5f968d},
++ {0x00000000, 0xe71da697, 0x154a4b6f, 0xf257edf8, 0x2a9496de,
++ 0xcd893049, 0x3fdeddb1, 0xd8c37b26, 0x55292dbc, 0xb2348b2b,
++ 0x406366d3, 0xa77ec044, 0x7fbdbb62, 0x98a01df5, 0x6af7f00d,
++ 0x8dea569a, 0xaa525b78, 0x4d4ffdef, 0xbf181017, 0x5805b680,
++ 0x80c6cda6, 0x67db6b31, 0x958c86c9, 0x7291205e, 0xff7b76c4,
++ 0x1866d053, 0xea313dab, 0x0d2c9b3c, 0xd5efe01a, 0x32f2468d,
++ 0xc0a5ab75, 0x27b80de2, 0x8fd5b0b1, 0x68c81626, 0x9a9ffbde,
++ 0x7d825d49, 0xa541266f, 0x425c80f8, 0xb00b6d00, 0x5716cb97,
++ 0xdafc9d0d, 0x3de13b9a, 0xcfb6d662, 0x28ab70f5, 0xf0680bd3,
++ 0x1775ad44, 0xe52240bc, 0x023fe62b, 0x2587ebc9, 0xc29a4d5e,
++ 0x30cda0a6, 0xd7d00631, 0x0f137d17, 0xe80edb80, 0x1a593678,
++ 0xfd4490ef, 0x70aec675, 0x97b360e2, 0x65e48d1a, 0x82f92b8d,
++ 0x5a3a50ab, 0xbd27f63c, 0x4f701bc4, 0xa86dbd53, 0xc4da6723,
++ 0x23c7c1b4, 0xd1902c4c, 0x368d8adb, 0xee4ef1fd, 0x0953576a,
++ 0xfb04ba92, 0x1c191c05, 0x91f34a9f, 0x76eeec08, 0x84b901f0,
++ 0x63a4a767, 0xbb67dc41, 0x5c7a7ad6, 0xae2d972e, 0x493031b9,
++ 0x6e883c5b, 0x89959acc, 0x7bc27734, 0x9cdfd1a3, 0x441caa85,
++ 0xa3010c12, 0x5156e1ea, 0xb64b477d, 0x3ba111e7, 0xdcbcb770,
++ 0x2eeb5a88, 0xc9f6fc1f, 0x11358739, 0xf62821ae, 0x047fcc56,
++ 0xe3626ac1, 0x4b0fd792, 0xac127105, 0x5e459cfd, 0xb9583a6a,
++ 0x619b414c, 0x8686e7db, 0x74d10a23, 0x93ccacb4, 0x1e26fa2e,
++ 0xf93b5cb9, 0x0b6cb141, 0xec7117d6, 0x34b26cf0, 0xd3afca67,
++ 0x21f8279f, 0xc6e58108, 0xe15d8cea, 0x06402a7d, 0xf417c785,
++ 0x130a6112, 0xcbc91a34, 0x2cd4bca3, 0xde83515b, 0x399ef7cc,
++ 0xb474a156, 0x536907c1, 0xa13eea39, 0x46234cae, 0x9ee03788,
++ 0x79fd911f, 0x8baa7ce7, 0x6cb7da70, 0x52c5c807, 0xb5d86e90,
++ 0x478f8368, 0xa09225ff, 0x78515ed9, 0x9f4cf84e, 0x6d1b15b6,
++ 0x8a06b321, 0x07ece5bb, 0xe0f1432c, 0x12a6aed4, 0xf5bb0843,
++ 0x2d787365, 0xca65d5f2, 0x3832380a, 0xdf2f9e9d, 0xf897937f,
++ 0x1f8a35e8, 0xedddd810, 0x0ac07e87, 0xd20305a1, 0x351ea336,
++ 0xc7494ece, 0x2054e859, 0xadbebec3, 0x4aa31854, 0xb8f4f5ac,
++ 0x5fe9533b, 0x872a281d, 0x60378e8a, 0x92606372, 0x757dc5e5,
++ 0xdd1078b6, 0x3a0dde21, 0xc85a33d9, 0x2f47954e, 0xf784ee68,
++ 0x109948ff, 0xe2cea507, 0x05d30390, 0x8839550a, 0x6f24f39d,
++ 0x9d731e65, 0x7a6eb8f2, 0xa2adc3d4, 0x45b06543, 0xb7e788bb,
++ 0x50fa2e2c, 0x774223ce, 0x905f8559, 0x620868a1, 0x8515ce36,
++ 0x5dd6b510, 0xbacb1387, 0x489cfe7f, 0xaf8158e8, 0x226b0e72,
++ 0xc576a8e5, 0x3721451d, 0xd03ce38a, 0x08ff98ac, 0xefe23e3b,
++ 0x1db5d3c3, 0xfaa87554, 0x961faf24, 0x710209b3, 0x8355e44b,
++ 0x644842dc, 0xbc8b39fa, 0x5b969f6d, 0xa9c17295, 0x4edcd402,
++ 0xc3368298, 0x242b240f, 0xd67cc9f7, 0x31616f60, 0xe9a21446,
++ 0x0ebfb2d1, 0xfce85f29, 0x1bf5f9be, 0x3c4df45c, 0xdb5052cb,
++ 0x2907bf33, 0xce1a19a4, 0x16d96282, 0xf1c4c415, 0x039329ed,
++ 0xe48e8f7a, 0x6964d9e0, 0x8e797f77, 0x7c2e928f, 0x9b333418,
++ 0x43f04f3e, 0xa4ede9a9, 0x56ba0451, 0xb1a7a2c6, 0x19ca1f95,
++ 0xfed7b902, 0x0c8054fa, 0xeb9df26d, 0x335e894b, 0xd4432fdc,
++ 0x2614c224, 0xc10964b3, 0x4ce33229, 0xabfe94be, 0x59a97946,
++ 0xbeb4dfd1, 0x6677a4f7, 0x816a0260, 0x733def98, 0x9420490f,
++ 0xb39844ed, 0x5485e27a, 0xa6d20f82, 0x41cfa915, 0x990cd233,
++ 0x7e1174a4, 0x8c46995c, 0x6b5b3fcb, 0xe6b16951, 0x01accfc6,
++ 0xf3fb223e, 0x14e684a9, 0xcc25ff8f, 0x2b385918, 0xd96fb4e0,
++ 0x3e721277},
++ {0x00000000, 0xa58b900e, 0x9066265d, 0x35edb653, 0xfbbd4afb,
++ 0x5e36daf5, 0x6bdb6ca6, 0xce50fca8, 0x2c0b93b7, 0x898003b9,
++ 0xbc6db5ea, 0x19e625e4, 0xd7b6d94c, 0x723d4942, 0x47d0ff11,
++ 0xe25b6f1f, 0x5817276e, 0xfd9cb760, 0xc8710133, 0x6dfa913d,
++ 0xa3aa6d95, 0x0621fd9b, 0x33cc4bc8, 0x9647dbc6, 0x741cb4d9,
++ 0xd19724d7, 0xe47a9284, 0x41f1028a, 0x8fa1fe22, 0x2a2a6e2c,
++ 0x1fc7d87f, 0xba4c4871, 0xb02e4edc, 0x15a5ded2, 0x20486881,
++ 0x85c3f88f, 0x4b930427, 0xee189429, 0xdbf5227a, 0x7e7eb274,
++ 0x9c25dd6b, 0x39ae4d65, 0x0c43fb36, 0xa9c86b38, 0x67989790,
++ 0xc213079e, 0xf7feb1cd, 0x527521c3, 0xe83969b2, 0x4db2f9bc,
++ 0x785f4fef, 0xddd4dfe1, 0x13842349, 0xb60fb347, 0x83e20514,
++ 0x2669951a, 0xc432fa05, 0x61b96a0b, 0x5454dc58, 0xf1df4c56,
++ 0x3f8fb0fe, 0x9a0420f0, 0xafe996a3, 0x0a6206ad, 0xbb2d9bf9,
++ 0x1ea60bf7, 0x2b4bbda4, 0x8ec02daa, 0x4090d102, 0xe51b410c,
++ 0xd0f6f75f, 0x757d6751, 0x9726084e, 0x32ad9840, 0x07402e13,
++ 0xa2cbbe1d, 0x6c9b42b5, 0xc910d2bb, 0xfcfd64e8, 0x5976f4e6,
++ 0xe33abc97, 0x46b12c99, 0x735c9aca, 0xd6d70ac4, 0x1887f66c,
++ 0xbd0c6662, 0x88e1d031, 0x2d6a403f, 0xcf312f20, 0x6ababf2e,
++ 0x5f57097d, 0xfadc9973, 0x348c65db, 0x9107f5d5, 0xa4ea4386,
++ 0x0161d388, 0x0b03d525, 0xae88452b, 0x9b65f378, 0x3eee6376,
++ 0xf0be9fde, 0x55350fd0, 0x60d8b983, 0xc553298d, 0x27084692,
++ 0x8283d69c, 0xb76e60cf, 0x12e5f0c1, 0xdcb50c69, 0x793e9c67,
++ 0x4cd32a34, 0xe958ba3a, 0x5314f24b, 0xf69f6245, 0xc372d416,
++ 0x66f94418, 0xa8a9b8b0, 0x0d2228be, 0x38cf9eed, 0x9d440ee3,
++ 0x7f1f61fc, 0xda94f1f2, 0xef7947a1, 0x4af2d7af, 0x84a22b07,
++ 0x2129bb09, 0x14c40d5a, 0xb14f9d54, 0xad2a31b3, 0x08a1a1bd,
++ 0x3d4c17ee, 0x98c787e0, 0x56977b48, 0xf31ceb46, 0xc6f15d15,
++ 0x637acd1b, 0x8121a204, 0x24aa320a, 0x11478459, 0xb4cc1457,
++ 0x7a9ce8ff, 0xdf1778f1, 0xeafacea2, 0x4f715eac, 0xf53d16dd,
++ 0x50b686d3, 0x655b3080, 0xc0d0a08e, 0x0e805c26, 0xab0bcc28,
++ 0x9ee67a7b, 0x3b6dea75, 0xd936856a, 0x7cbd1564, 0x4950a337,
++ 0xecdb3339, 0x228bcf91, 0x87005f9f, 0xb2ede9cc, 0x176679c2,
++ 0x1d047f6f, 0xb88fef61, 0x8d625932, 0x28e9c93c, 0xe6b93594,
++ 0x4332a59a, 0x76df13c9, 0xd35483c7, 0x310fecd8, 0x94847cd6,
++ 0xa169ca85, 0x04e25a8b, 0xcab2a623, 0x6f39362d, 0x5ad4807e,
++ 0xff5f1070, 0x45135801, 0xe098c80f, 0xd5757e5c, 0x70feee52,
++ 0xbeae12fa, 0x1b2582f4, 0x2ec834a7, 0x8b43a4a9, 0x6918cbb6,
++ 0xcc935bb8, 0xf97eedeb, 0x5cf57de5, 0x92a5814d, 0x372e1143,
++ 0x02c3a710, 0xa748371e, 0x1607aa4a, 0xb38c3a44, 0x86618c17,
++ 0x23ea1c19, 0xedbae0b1, 0x483170bf, 0x7ddcc6ec, 0xd85756e2,
++ 0x3a0c39fd, 0x9f87a9f3, 0xaa6a1fa0, 0x0fe18fae, 0xc1b17306,
++ 0x643ae308, 0x51d7555b, 0xf45cc555, 0x4e108d24, 0xeb9b1d2a,
++ 0xde76ab79, 0x7bfd3b77, 0xb5adc7df, 0x102657d1, 0x25cbe182,
++ 0x8040718c, 0x621b1e93, 0xc7908e9d, 0xf27d38ce, 0x57f6a8c0,
++ 0x99a65468, 0x3c2dc466, 0x09c07235, 0xac4be23b, 0xa629e496,
++ 0x03a27498, 0x364fc2cb, 0x93c452c5, 0x5d94ae6d, 0xf81f3e63,
++ 0xcdf28830, 0x6879183e, 0x8a227721, 0x2fa9e72f, 0x1a44517c,
++ 0xbfcfc172, 0x719f3dda, 0xd414add4, 0xe1f91b87, 0x44728b89,
++ 0xfe3ec3f8, 0x5bb553f6, 0x6e58e5a5, 0xcbd375ab, 0x05838903,
++ 0xa008190d, 0x95e5af5e, 0x306e3f50, 0xd235504f, 0x77bec041,
++ 0x42537612, 0xe7d8e61c, 0x29881ab4, 0x8c038aba, 0xb9ee3ce9,
++ 0x1c65ace7}};
++
++local const z_word_t FAR crc_braid_big_table[][256] = {
++ {0x0000000000000000, 0x0e908ba500000000, 0x5d26669000000000,
++ 0x53b6ed3500000000, 0xfb4abdfb00000000, 0xf5da365e00000000,
++ 0xa66cdb6b00000000, 0xa8fc50ce00000000, 0xb7930b2c00000000,
++ 0xb903808900000000, 0xeab56dbc00000000, 0xe425e61900000000,
++ 0x4cd9b6d700000000, 0x42493d7200000000, 0x11ffd04700000000,
++ 0x1f6f5be200000000, 0x6e27175800000000, 0x60b79cfd00000000,
++ 0x330171c800000000, 0x3d91fa6d00000000, 0x956daaa300000000,
++ 0x9bfd210600000000, 0xc84bcc3300000000, 0xc6db479600000000,
++ 0xd9b41c7400000000, 0xd72497d100000000, 0x84927ae400000000,
++ 0x8a02f14100000000, 0x22fea18f00000000, 0x2c6e2a2a00000000,
++ 0x7fd8c71f00000000, 0x71484cba00000000, 0xdc4e2eb000000000,
++ 0xd2dea51500000000, 0x8168482000000000, 0x8ff8c38500000000,
++ 0x2704934b00000000, 0x299418ee00000000, 0x7a22f5db00000000,
++ 0x74b27e7e00000000, 0x6bdd259c00000000, 0x654dae3900000000,
++ 0x36fb430c00000000, 0x386bc8a900000000, 0x9097986700000000,
++ 0x9e0713c200000000, 0xcdb1fef700000000, 0xc321755200000000,
++ 0xb26939e800000000, 0xbcf9b24d00000000, 0xef4f5f7800000000,
++ 0xe1dfd4dd00000000, 0x4923841300000000, 0x47b30fb600000000,
++ 0x1405e28300000000, 0x1a95692600000000, 0x05fa32c400000000,
++ 0x0b6ab96100000000, 0x58dc545400000000, 0x564cdff100000000,
++ 0xfeb08f3f00000000, 0xf020049a00000000, 0xa396e9af00000000,
++ 0xad06620a00000000, 0xf99b2dbb00000000, 0xf70ba61e00000000,
++ 0xa4bd4b2b00000000, 0xaa2dc08e00000000, 0x02d1904000000000,
++ 0x0c411be500000000, 0x5ff7f6d000000000, 0x51677d7500000000,
++ 0x4e08269700000000, 0x4098ad3200000000, 0x132e400700000000,
++ 0x1dbecba200000000, 0xb5429b6c00000000, 0xbbd210c900000000,
++ 0xe864fdfc00000000, 0xe6f4765900000000, 0x97bc3ae300000000,
++ 0x992cb14600000000, 0xca9a5c7300000000, 0xc40ad7d600000000,
++ 0x6cf6871800000000, 0x62660cbd00000000, 0x31d0e18800000000,
++ 0x3f406a2d00000000, 0x202f31cf00000000, 0x2ebfba6a00000000,
++ 0x7d09575f00000000, 0x7399dcfa00000000, 0xdb658c3400000000,
++ 0xd5f5079100000000, 0x8643eaa400000000, 0x88d3610100000000,
++ 0x25d5030b00000000, 0x2b4588ae00000000, 0x78f3659b00000000,
++ 0x7663ee3e00000000, 0xde9fbef000000000, 0xd00f355500000000,
++ 0x83b9d86000000000, 0x8d2953c500000000, 0x9246082700000000,
++ 0x9cd6838200000000, 0xcf606eb700000000, 0xc1f0e51200000000,
++ 0x690cb5dc00000000, 0x679c3e7900000000, 0x342ad34c00000000,
++ 0x3aba58e900000000, 0x4bf2145300000000, 0x45629ff600000000,
++ 0x16d472c300000000, 0x1844f96600000000, 0xb0b8a9a800000000,
++ 0xbe28220d00000000, 0xed9ecf3800000000, 0xe30e449d00000000,
++ 0xfc611f7f00000000, 0xf2f194da00000000, 0xa14779ef00000000,
++ 0xafd7f24a00000000, 0x072ba28400000000, 0x09bb292100000000,
++ 0x5a0dc41400000000, 0x549d4fb100000000, 0xb3312aad00000000,
++ 0xbda1a10800000000, 0xee174c3d00000000, 0xe087c79800000000,
++ 0x487b975600000000, 0x46eb1cf300000000, 0x155df1c600000000,
++ 0x1bcd7a6300000000, 0x04a2218100000000, 0x0a32aa2400000000,
++ 0x5984471100000000, 0x5714ccb400000000, 0xffe89c7a00000000,
++ 0xf17817df00000000, 0xa2cefaea00000000, 0xac5e714f00000000,
++ 0xdd163df500000000, 0xd386b65000000000, 0x80305b6500000000,
++ 0x8ea0d0c000000000, 0x265c800e00000000, 0x28cc0bab00000000,
++ 0x7b7ae69e00000000, 0x75ea6d3b00000000, 0x6a8536d900000000,
++ 0x6415bd7c00000000, 0x37a3504900000000, 0x3933dbec00000000,
++ 0x91cf8b2200000000, 0x9f5f008700000000, 0xcce9edb200000000,
++ 0xc279661700000000, 0x6f7f041d00000000, 0x61ef8fb800000000,
++ 0x3259628d00000000, 0x3cc9e92800000000, 0x9435b9e600000000,
++ 0x9aa5324300000000, 0xc913df7600000000, 0xc78354d300000000,
++ 0xd8ec0f3100000000, 0xd67c849400000000, 0x85ca69a100000000,
++ 0x8b5ae20400000000, 0x23a6b2ca00000000, 0x2d36396f00000000,
++ 0x7e80d45a00000000, 0x70105fff00000000, 0x0158134500000000,
++ 0x0fc898e000000000, 0x5c7e75d500000000, 0x52eefe7000000000,
++ 0xfa12aebe00000000, 0xf482251b00000000, 0xa734c82e00000000,
++ 0xa9a4438b00000000, 0xb6cb186900000000, 0xb85b93cc00000000,
++ 0xebed7ef900000000, 0xe57df55c00000000, 0x4d81a59200000000,
++ 0x43112e3700000000, 0x10a7c30200000000, 0x1e3748a700000000,
++ 0x4aaa071600000000, 0x443a8cb300000000, 0x178c618600000000,
++ 0x191cea2300000000, 0xb1e0baed00000000, 0xbf70314800000000,
++ 0xecc6dc7d00000000, 0xe25657d800000000, 0xfd390c3a00000000,
++ 0xf3a9879f00000000, 0xa01f6aaa00000000, 0xae8fe10f00000000,
++ 0x0673b1c100000000, 0x08e33a6400000000, 0x5b55d75100000000,
++ 0x55c55cf400000000, 0x248d104e00000000, 0x2a1d9beb00000000,
++ 0x79ab76de00000000, 0x773bfd7b00000000, 0xdfc7adb500000000,
++ 0xd157261000000000, 0x82e1cb2500000000, 0x8c71408000000000,
++ 0x931e1b6200000000, 0x9d8e90c700000000, 0xce387df200000000,
++ 0xc0a8f65700000000, 0x6854a69900000000, 0x66c42d3c00000000,
++ 0x3572c00900000000, 0x3be24bac00000000, 0x96e429a600000000,
++ 0x9874a20300000000, 0xcbc24f3600000000, 0xc552c49300000000,
++ 0x6dae945d00000000, 0x633e1ff800000000, 0x3088f2cd00000000,
++ 0x3e18796800000000, 0x2177228a00000000, 0x2fe7a92f00000000,
++ 0x7c51441a00000000, 0x72c1cfbf00000000, 0xda3d9f7100000000,
++ 0xd4ad14d400000000, 0x871bf9e100000000, 0x898b724400000000,
++ 0xf8c33efe00000000, 0xf653b55b00000000, 0xa5e5586e00000000,
++ 0xab75d3cb00000000, 0x0389830500000000, 0x0d1908a000000000,
++ 0x5eafe59500000000, 0x503f6e3000000000, 0x4f5035d200000000,
++ 0x41c0be7700000000, 0x1276534200000000, 0x1ce6d8e700000000,
++ 0xb41a882900000000, 0xba8a038c00000000, 0xe93ceeb900000000,
++ 0xe7ac651c00000000},
++ {0x0000000000000000, 0x97a61de700000000, 0x6f4b4a1500000000,
++ 0xf8ed57f200000000, 0xde96942a00000000, 0x493089cd00000000,
++ 0xb1ddde3f00000000, 0x267bc3d800000000, 0xbc2d295500000000,
++ 0x2b8b34b200000000, 0xd366634000000000, 0x44c07ea700000000,
++ 0x62bbbd7f00000000, 0xf51da09800000000, 0x0df0f76a00000000,
++ 0x9a56ea8d00000000, 0x785b52aa00000000, 0xeffd4f4d00000000,
++ 0x171018bf00000000, 0x80b6055800000000, 0xa6cdc68000000000,
++ 0x316bdb6700000000, 0xc9868c9500000000, 0x5e20917200000000,
++ 0xc4767bff00000000, 0x53d0661800000000, 0xab3d31ea00000000,
++ 0x3c9b2c0d00000000, 0x1ae0efd500000000, 0x8d46f23200000000,
++ 0x75aba5c000000000, 0xe20db82700000000, 0xb1b0d58f00000000,
++ 0x2616c86800000000, 0xdefb9f9a00000000, 0x495d827d00000000,
++ 0x6f2641a500000000, 0xf8805c4200000000, 0x006d0bb000000000,
++ 0x97cb165700000000, 0x0d9dfcda00000000, 0x9a3be13d00000000,
++ 0x62d6b6cf00000000, 0xf570ab2800000000, 0xd30b68f000000000,
++ 0x44ad751700000000, 0xbc4022e500000000, 0x2be63f0200000000,
++ 0xc9eb872500000000, 0x5e4d9ac200000000, 0xa6a0cd3000000000,
++ 0x3106d0d700000000, 0x177d130f00000000, 0x80db0ee800000000,
++ 0x7836591a00000000, 0xef9044fd00000000, 0x75c6ae7000000000,
++ 0xe260b39700000000, 0x1a8de46500000000, 0x8d2bf98200000000,
++ 0xab503a5a00000000, 0x3cf627bd00000000, 0xc41b704f00000000,
++ 0x53bd6da800000000, 0x2367dac400000000, 0xb4c1c72300000000,
++ 0x4c2c90d100000000, 0xdb8a8d3600000000, 0xfdf14eee00000000,
++ 0x6a57530900000000, 0x92ba04fb00000000, 0x051c191c00000000,
++ 0x9f4af39100000000, 0x08ecee7600000000, 0xf001b98400000000,
++ 0x67a7a46300000000, 0x41dc67bb00000000, 0xd67a7a5c00000000,
++ 0x2e972dae00000000, 0xb931304900000000, 0x5b3c886e00000000,
++ 0xcc9a958900000000, 0x3477c27b00000000, 0xa3d1df9c00000000,
++ 0x85aa1c4400000000, 0x120c01a300000000, 0xeae1565100000000,
++ 0x7d474bb600000000, 0xe711a13b00000000, 0x70b7bcdc00000000,
++ 0x885aeb2e00000000, 0x1ffcf6c900000000, 0x3987351100000000,
++ 0xae2128f600000000, 0x56cc7f0400000000, 0xc16a62e300000000,
++ 0x92d70f4b00000000, 0x057112ac00000000, 0xfd9c455e00000000,
++ 0x6a3a58b900000000, 0x4c419b6100000000, 0xdbe7868600000000,
++ 0x230ad17400000000, 0xb4accc9300000000, 0x2efa261e00000000,
++ 0xb95c3bf900000000, 0x41b16c0b00000000, 0xd61771ec00000000,
++ 0xf06cb23400000000, 0x67caafd300000000, 0x9f27f82100000000,
++ 0x0881e5c600000000, 0xea8c5de100000000, 0x7d2a400600000000,
++ 0x85c717f400000000, 0x12610a1300000000, 0x341ac9cb00000000,
++ 0xa3bcd42c00000000, 0x5b5183de00000000, 0xccf79e3900000000,
++ 0x56a174b400000000, 0xc107695300000000, 0x39ea3ea100000000,
++ 0xae4c234600000000, 0x8837e09e00000000, 0x1f91fd7900000000,
++ 0xe77caa8b00000000, 0x70dab76c00000000, 0x07c8c55200000000,
++ 0x906ed8b500000000, 0x68838f4700000000, 0xff2592a000000000,
++ 0xd95e517800000000, 0x4ef84c9f00000000, 0xb6151b6d00000000,
++ 0x21b3068a00000000, 0xbbe5ec0700000000, 0x2c43f1e000000000,
++ 0xd4aea61200000000, 0x4308bbf500000000, 0x6573782d00000000,
++ 0xf2d565ca00000000, 0x0a38323800000000, 0x9d9e2fdf00000000,
++ 0x7f9397f800000000, 0xe8358a1f00000000, 0x10d8dded00000000,
++ 0x877ec00a00000000, 0xa10503d200000000, 0x36a31e3500000000,
++ 0xce4e49c700000000, 0x59e8542000000000, 0xc3bebead00000000,
++ 0x5418a34a00000000, 0xacf5f4b800000000, 0x3b53e95f00000000,
++ 0x1d282a8700000000, 0x8a8e376000000000, 0x7263609200000000,
++ 0xe5c57d7500000000, 0xb67810dd00000000, 0x21de0d3a00000000,
++ 0xd9335ac800000000, 0x4e95472f00000000, 0x68ee84f700000000,
++ 0xff48991000000000, 0x07a5cee200000000, 0x9003d30500000000,
++ 0x0a55398800000000, 0x9df3246f00000000, 0x651e739d00000000,
++ 0xf2b86e7a00000000, 0xd4c3ada200000000, 0x4365b04500000000,
++ 0xbb88e7b700000000, 0x2c2efa5000000000, 0xce23427700000000,
++ 0x59855f9000000000, 0xa168086200000000, 0x36ce158500000000,
++ 0x10b5d65d00000000, 0x8713cbba00000000, 0x7ffe9c4800000000,
++ 0xe85881af00000000, 0x720e6b2200000000, 0xe5a876c500000000,
++ 0x1d45213700000000, 0x8ae33cd000000000, 0xac98ff0800000000,
++ 0x3b3ee2ef00000000, 0xc3d3b51d00000000, 0x5475a8fa00000000,
++ 0x24af1f9600000000, 0xb309027100000000, 0x4be4558300000000,
++ 0xdc42486400000000, 0xfa398bbc00000000, 0x6d9f965b00000000,
++ 0x9572c1a900000000, 0x02d4dc4e00000000, 0x988236c300000000,
++ 0x0f242b2400000000, 0xf7c97cd600000000, 0x606f613100000000,
++ 0x4614a2e900000000, 0xd1b2bf0e00000000, 0x295fe8fc00000000,
++ 0xbef9f51b00000000, 0x5cf44d3c00000000, 0xcb5250db00000000,
++ 0x33bf072900000000, 0xa4191ace00000000, 0x8262d91600000000,
++ 0x15c4c4f100000000, 0xed29930300000000, 0x7a8f8ee400000000,
++ 0xe0d9646900000000, 0x777f798e00000000, 0x8f922e7c00000000,
++ 0x1834339b00000000, 0x3e4ff04300000000, 0xa9e9eda400000000,
++ 0x5104ba5600000000, 0xc6a2a7b100000000, 0x951fca1900000000,
++ 0x02b9d7fe00000000, 0xfa54800c00000000, 0x6df29deb00000000,
++ 0x4b895e3300000000, 0xdc2f43d400000000, 0x24c2142600000000,
++ 0xb36409c100000000, 0x2932e34c00000000, 0xbe94feab00000000,
++ 0x4679a95900000000, 0xd1dfb4be00000000, 0xf7a4776600000000,
++ 0x60026a8100000000, 0x98ef3d7300000000, 0x0f49209400000000,
++ 0xed4498b300000000, 0x7ae2855400000000, 0x820fd2a600000000,
++ 0x15a9cf4100000000, 0x33d20c9900000000, 0xa474117e00000000,
++ 0x5c99468c00000000, 0xcb3f5b6b00000000, 0x5169b1e600000000,
++ 0xc6cfac0100000000, 0x3e22fbf300000000, 0xa984e61400000000,
++ 0x8fff25cc00000000, 0x1859382b00000000, 0xe0b46fd900000000,
++ 0x7712723e00000000},
++ {0x0000000000000000, 0x411b8c6e00000000, 0x823618dd00000000,
++ 0xc32d94b300000000, 0x456b416100000000, 0x0470cd0f00000000,
++ 0xc75d59bc00000000, 0x8646d5d200000000, 0x8ad682c200000000,
++ 0xcbcd0eac00000000, 0x08e09a1f00000000, 0x49fb167100000000,
++ 0xcfbdc3a300000000, 0x8ea64fcd00000000, 0x4d8bdb7e00000000,
++ 0x0c90571000000000, 0x55ab745e00000000, 0x14b0f83000000000,
++ 0xd79d6c8300000000, 0x9686e0ed00000000, 0x10c0353f00000000,
++ 0x51dbb95100000000, 0x92f62de200000000, 0xd3eda18c00000000,
++ 0xdf7df69c00000000, 0x9e667af200000000, 0x5d4bee4100000000,
++ 0x1c50622f00000000, 0x9a16b7fd00000000, 0xdb0d3b9300000000,
++ 0x1820af2000000000, 0x593b234e00000000, 0xaa56e9bc00000000,
++ 0xeb4d65d200000000, 0x2860f16100000000, 0x697b7d0f00000000,
++ 0xef3da8dd00000000, 0xae2624b300000000, 0x6d0bb00000000000,
++ 0x2c103c6e00000000, 0x20806b7e00000000, 0x619be71000000000,
++ 0xa2b673a300000000, 0xe3adffcd00000000, 0x65eb2a1f00000000,
++ 0x24f0a67100000000, 0xe7dd32c200000000, 0xa6c6beac00000000,
++ 0xfffd9de200000000, 0xbee6118c00000000, 0x7dcb853f00000000,
++ 0x3cd0095100000000, 0xba96dc8300000000, 0xfb8d50ed00000000,
++ 0x38a0c45e00000000, 0x79bb483000000000, 0x752b1f2000000000,
++ 0x3430934e00000000, 0xf71d07fd00000000, 0xb6068b9300000000,
++ 0x30405e4100000000, 0x715bd22f00000000, 0xb276469c00000000,
++ 0xf36dcaf200000000, 0x15aba3a200000000, 0x54b02fcc00000000,
++ 0x979dbb7f00000000, 0xd686371100000000, 0x50c0e2c300000000,
++ 0x11db6ead00000000, 0xd2f6fa1e00000000, 0x93ed767000000000,
++ 0x9f7d216000000000, 0xde66ad0e00000000, 0x1d4b39bd00000000,
++ 0x5c50b5d300000000, 0xda16600100000000, 0x9b0dec6f00000000,
++ 0x582078dc00000000, 0x193bf4b200000000, 0x4000d7fc00000000,
++ 0x011b5b9200000000, 0xc236cf2100000000, 0x832d434f00000000,
++ 0x056b969d00000000, 0x44701af300000000, 0x875d8e4000000000,
++ 0xc646022e00000000, 0xcad6553e00000000, 0x8bcdd95000000000,
++ 0x48e04de300000000, 0x09fbc18d00000000, 0x8fbd145f00000000,
++ 0xcea6983100000000, 0x0d8b0c8200000000, 0x4c9080ec00000000,
++ 0xbffd4a1e00000000, 0xfee6c67000000000, 0x3dcb52c300000000,
++ 0x7cd0dead00000000, 0xfa960b7f00000000, 0xbb8d871100000000,
++ 0x78a013a200000000, 0x39bb9fcc00000000, 0x352bc8dc00000000,
++ 0x743044b200000000, 0xb71dd00100000000, 0xf6065c6f00000000,
++ 0x704089bd00000000, 0x315b05d300000000, 0xf276916000000000,
++ 0xb36d1d0e00000000, 0xea563e4000000000, 0xab4db22e00000000,
++ 0x6860269d00000000, 0x297baaf300000000, 0xaf3d7f2100000000,
++ 0xee26f34f00000000, 0x2d0b67fc00000000, 0x6c10eb9200000000,
++ 0x6080bc8200000000, 0x219b30ec00000000, 0xe2b6a45f00000000,
++ 0xa3ad283100000000, 0x25ebfde300000000, 0x64f0718d00000000,
++ 0xa7dde53e00000000, 0xe6c6695000000000, 0x6b50369e00000000,
++ 0x2a4bbaf000000000, 0xe9662e4300000000, 0xa87da22d00000000,
++ 0x2e3b77ff00000000, 0x6f20fb9100000000, 0xac0d6f2200000000,
++ 0xed16e34c00000000, 0xe186b45c00000000, 0xa09d383200000000,
++ 0x63b0ac8100000000, 0x22ab20ef00000000, 0xa4edf53d00000000,
++ 0xe5f6795300000000, 0x26dbede000000000, 0x67c0618e00000000,
++ 0x3efb42c000000000, 0x7fe0ceae00000000, 0xbccd5a1d00000000,
++ 0xfdd6d67300000000, 0x7b9003a100000000, 0x3a8b8fcf00000000,
++ 0xf9a61b7c00000000, 0xb8bd971200000000, 0xb42dc00200000000,
++ 0xf5364c6c00000000, 0x361bd8df00000000, 0x770054b100000000,
++ 0xf146816300000000, 0xb05d0d0d00000000, 0x737099be00000000,
++ 0x326b15d000000000, 0xc106df2200000000, 0x801d534c00000000,
++ 0x4330c7ff00000000, 0x022b4b9100000000, 0x846d9e4300000000,
++ 0xc576122d00000000, 0x065b869e00000000, 0x47400af000000000,
++ 0x4bd05de000000000, 0x0acbd18e00000000, 0xc9e6453d00000000,
++ 0x88fdc95300000000, 0x0ebb1c8100000000, 0x4fa090ef00000000,
++ 0x8c8d045c00000000, 0xcd96883200000000, 0x94adab7c00000000,
++ 0xd5b6271200000000, 0x169bb3a100000000, 0x57803fcf00000000,
++ 0xd1c6ea1d00000000, 0x90dd667300000000, 0x53f0f2c000000000,
++ 0x12eb7eae00000000, 0x1e7b29be00000000, 0x5f60a5d000000000,
++ 0x9c4d316300000000, 0xdd56bd0d00000000, 0x5b1068df00000000,
++ 0x1a0be4b100000000, 0xd926700200000000, 0x983dfc6c00000000,
++ 0x7efb953c00000000, 0x3fe0195200000000, 0xfccd8de100000000,
++ 0xbdd6018f00000000, 0x3b90d45d00000000, 0x7a8b583300000000,
++ 0xb9a6cc8000000000, 0xf8bd40ee00000000, 0xf42d17fe00000000,
++ 0xb5369b9000000000, 0x761b0f2300000000, 0x3700834d00000000,
++ 0xb146569f00000000, 0xf05ddaf100000000, 0x33704e4200000000,
++ 0x726bc22c00000000, 0x2b50e16200000000, 0x6a4b6d0c00000000,
++ 0xa966f9bf00000000, 0xe87d75d100000000, 0x6e3ba00300000000,
++ 0x2f202c6d00000000, 0xec0db8de00000000, 0xad1634b000000000,
++ 0xa18663a000000000, 0xe09defce00000000, 0x23b07b7d00000000,
++ 0x62abf71300000000, 0xe4ed22c100000000, 0xa5f6aeaf00000000,
++ 0x66db3a1c00000000, 0x27c0b67200000000, 0xd4ad7c8000000000,
++ 0x95b6f0ee00000000, 0x569b645d00000000, 0x1780e83300000000,
++ 0x91c63de100000000, 0xd0ddb18f00000000, 0x13f0253c00000000,
++ 0x52eba95200000000, 0x5e7bfe4200000000, 0x1f60722c00000000,
++ 0xdc4de69f00000000, 0x9d566af100000000, 0x1b10bf2300000000,
++ 0x5a0b334d00000000, 0x9926a7fe00000000, 0xd83d2b9000000000,
++ 0x810608de00000000, 0xc01d84b000000000, 0x0330100300000000,
++ 0x422b9c6d00000000, 0xc46d49bf00000000, 0x8576c5d100000000,
++ 0x465b516200000000, 0x0740dd0c00000000, 0x0bd08a1c00000000,
++ 0x4acb067200000000, 0x89e692c100000000, 0xc8fd1eaf00000000,
++ 0x4ebbcb7d00000000, 0x0fa0471300000000, 0xcc8dd3a000000000,
++ 0x8d965fce00000000},
++ {0x0000000000000000, 0x1dfdb50100000000, 0x3afa6b0300000000,
++ 0x2707de0200000000, 0x74f4d70600000000, 0x6909620700000000,
++ 0x4e0ebc0500000000, 0x53f3090400000000, 0xe8e8af0d00000000,
++ 0xf5151a0c00000000, 0xd212c40e00000000, 0xcfef710f00000000,
++ 0x9c1c780b00000000, 0x81e1cd0a00000000, 0xa6e6130800000000,
++ 0xbb1ba60900000000, 0xd0d15f1b00000000, 0xcd2cea1a00000000,
++ 0xea2b341800000000, 0xf7d6811900000000, 0xa425881d00000000,
++ 0xb9d83d1c00000000, 0x9edfe31e00000000, 0x8322561f00000000,
++ 0x3839f01600000000, 0x25c4451700000000, 0x02c39b1500000000,
++ 0x1f3e2e1400000000, 0x4ccd271000000000, 0x5130921100000000,
++ 0x76374c1300000000, 0x6bcaf91200000000, 0xa0a3bf3600000000,
++ 0xbd5e0a3700000000, 0x9a59d43500000000, 0x87a4613400000000,
++ 0xd457683000000000, 0xc9aadd3100000000, 0xeead033300000000,
++ 0xf350b63200000000, 0x484b103b00000000, 0x55b6a53a00000000,
++ 0x72b17b3800000000, 0x6f4cce3900000000, 0x3cbfc73d00000000,
++ 0x2142723c00000000, 0x0645ac3e00000000, 0x1bb8193f00000000,
++ 0x7072e02d00000000, 0x6d8f552c00000000, 0x4a888b2e00000000,
++ 0x57753e2f00000000, 0x0486372b00000000, 0x197b822a00000000,
++ 0x3e7c5c2800000000, 0x2381e92900000000, 0x989a4f2000000000,
++ 0x8567fa2100000000, 0xa260242300000000, 0xbf9d912200000000,
++ 0xec6e982600000000, 0xf1932d2700000000, 0xd694f32500000000,
++ 0xcb69462400000000, 0x40477f6d00000000, 0x5dbaca6c00000000,
++ 0x7abd146e00000000, 0x6740a16f00000000, 0x34b3a86b00000000,
++ 0x294e1d6a00000000, 0x0e49c36800000000, 0x13b4766900000000,
++ 0xa8afd06000000000, 0xb552656100000000, 0x9255bb6300000000,
++ 0x8fa80e6200000000, 0xdc5b076600000000, 0xc1a6b26700000000,
++ 0xe6a16c6500000000, 0xfb5cd96400000000, 0x9096207600000000,
++ 0x8d6b957700000000, 0xaa6c4b7500000000, 0xb791fe7400000000,
++ 0xe462f77000000000, 0xf99f427100000000, 0xde989c7300000000,
++ 0xc365297200000000, 0x787e8f7b00000000, 0x65833a7a00000000,
++ 0x4284e47800000000, 0x5f79517900000000, 0x0c8a587d00000000,
++ 0x1177ed7c00000000, 0x3670337e00000000, 0x2b8d867f00000000,
++ 0xe0e4c05b00000000, 0xfd19755a00000000, 0xda1eab5800000000,
++ 0xc7e31e5900000000, 0x9410175d00000000, 0x89eda25c00000000,
++ 0xaeea7c5e00000000, 0xb317c95f00000000, 0x080c6f5600000000,
++ 0x15f1da5700000000, 0x32f6045500000000, 0x2f0bb15400000000,
++ 0x7cf8b85000000000, 0x61050d5100000000, 0x4602d35300000000,
++ 0x5bff665200000000, 0x30359f4000000000, 0x2dc82a4100000000,
++ 0x0acff44300000000, 0x1732414200000000, 0x44c1484600000000,
++ 0x593cfd4700000000, 0x7e3b234500000000, 0x63c6964400000000,
++ 0xd8dd304d00000000, 0xc520854c00000000, 0xe2275b4e00000000,
++ 0xffdaee4f00000000, 0xac29e74b00000000, 0xb1d4524a00000000,
++ 0x96d38c4800000000, 0x8b2e394900000000, 0x808efeda00000000,
++ 0x9d734bdb00000000, 0xba7495d900000000, 0xa78920d800000000,
++ 0xf47a29dc00000000, 0xe9879cdd00000000, 0xce8042df00000000,
++ 0xd37df7de00000000, 0x686651d700000000, 0x759be4d600000000,
++ 0x529c3ad400000000, 0x4f618fd500000000, 0x1c9286d100000000,
++ 0x016f33d000000000, 0x2668edd200000000, 0x3b9558d300000000,
++ 0x505fa1c100000000, 0x4da214c000000000, 0x6aa5cac200000000,
++ 0x77587fc300000000, 0x24ab76c700000000, 0x3956c3c600000000,
++ 0x1e511dc400000000, 0x03aca8c500000000, 0xb8b70ecc00000000,
++ 0xa54abbcd00000000, 0x824d65cf00000000, 0x9fb0d0ce00000000,
++ 0xcc43d9ca00000000, 0xd1be6ccb00000000, 0xf6b9b2c900000000,
++ 0xeb4407c800000000, 0x202d41ec00000000, 0x3dd0f4ed00000000,
++ 0x1ad72aef00000000, 0x072a9fee00000000, 0x54d996ea00000000,
++ 0x492423eb00000000, 0x6e23fde900000000, 0x73de48e800000000,
++ 0xc8c5eee100000000, 0xd5385be000000000, 0xf23f85e200000000,
++ 0xefc230e300000000, 0xbc3139e700000000, 0xa1cc8ce600000000,
++ 0x86cb52e400000000, 0x9b36e7e500000000, 0xf0fc1ef700000000,
++ 0xed01abf600000000, 0xca0675f400000000, 0xd7fbc0f500000000,
++ 0x8408c9f100000000, 0x99f57cf000000000, 0xbef2a2f200000000,
++ 0xa30f17f300000000, 0x1814b1fa00000000, 0x05e904fb00000000,
++ 0x22eedaf900000000, 0x3f136ff800000000, 0x6ce066fc00000000,
++ 0x711dd3fd00000000, 0x561a0dff00000000, 0x4be7b8fe00000000,
++ 0xc0c981b700000000, 0xdd3434b600000000, 0xfa33eab400000000,
++ 0xe7ce5fb500000000, 0xb43d56b100000000, 0xa9c0e3b000000000,
++ 0x8ec73db200000000, 0x933a88b300000000, 0x28212eba00000000,
++ 0x35dc9bbb00000000, 0x12db45b900000000, 0x0f26f0b800000000,
++ 0x5cd5f9bc00000000, 0x41284cbd00000000, 0x662f92bf00000000,
++ 0x7bd227be00000000, 0x1018deac00000000, 0x0de56bad00000000,
++ 0x2ae2b5af00000000, 0x371f00ae00000000, 0x64ec09aa00000000,
++ 0x7911bcab00000000, 0x5e1662a900000000, 0x43ebd7a800000000,
++ 0xf8f071a100000000, 0xe50dc4a000000000, 0xc20a1aa200000000,
++ 0xdff7afa300000000, 0x8c04a6a700000000, 0x91f913a600000000,
++ 0xb6fecda400000000, 0xab0378a500000000, 0x606a3e8100000000,
++ 0x7d978b8000000000, 0x5a90558200000000, 0x476de08300000000,
++ 0x149ee98700000000, 0x09635c8600000000, 0x2e64828400000000,
++ 0x3399378500000000, 0x8882918c00000000, 0x957f248d00000000,
++ 0xb278fa8f00000000, 0xaf854f8e00000000, 0xfc76468a00000000,
++ 0xe18bf38b00000000, 0xc68c2d8900000000, 0xdb71988800000000,
++ 0xb0bb619a00000000, 0xad46d49b00000000, 0x8a410a9900000000,
++ 0x97bcbf9800000000, 0xc44fb69c00000000, 0xd9b2039d00000000,
++ 0xfeb5dd9f00000000, 0xe348689e00000000, 0x5853ce9700000000,
++ 0x45ae7b9600000000, 0x62a9a59400000000, 0x7f54109500000000,
++ 0x2ca7199100000000, 0x315aac9000000000, 0x165d729200000000,
++ 0x0ba0c79300000000},
++ {0x0000000000000000, 0x24d9076300000000, 0x48b20fc600000000,
++ 0x6c6b08a500000000, 0xd1626e5700000000, 0xf5bb693400000000,
++ 0x99d0619100000000, 0xbd0966f200000000, 0xa2c5dcae00000000,
++ 0x861cdbcd00000000, 0xea77d36800000000, 0xceaed40b00000000,
++ 0x73a7b2f900000000, 0x577eb59a00000000, 0x3b15bd3f00000000,
++ 0x1fccba5c00000000, 0x058dc88600000000, 0x2154cfe500000000,
++ 0x4d3fc74000000000, 0x69e6c02300000000, 0xd4efa6d100000000,
++ 0xf036a1b200000000, 0x9c5da91700000000, 0xb884ae7400000000,
++ 0xa748142800000000, 0x8391134b00000000, 0xeffa1bee00000000,
++ 0xcb231c8d00000000, 0x762a7a7f00000000, 0x52f37d1c00000000,
++ 0x3e9875b900000000, 0x1a4172da00000000, 0x4b1ce0d600000000,
++ 0x6fc5e7b500000000, 0x03aeef1000000000, 0x2777e87300000000,
++ 0x9a7e8e8100000000, 0xbea789e200000000, 0xd2cc814700000000,
++ 0xf615862400000000, 0xe9d93c7800000000, 0xcd003b1b00000000,
++ 0xa16b33be00000000, 0x85b234dd00000000, 0x38bb522f00000000,
++ 0x1c62554c00000000, 0x70095de900000000, 0x54d05a8a00000000,
++ 0x4e91285000000000, 0x6a482f3300000000, 0x0623279600000000,
++ 0x22fa20f500000000, 0x9ff3460700000000, 0xbb2a416400000000,
++ 0xd74149c100000000, 0xf3984ea200000000, 0xec54f4fe00000000,
++ 0xc88df39d00000000, 0xa4e6fb3800000000, 0x803ffc5b00000000,
++ 0x3d369aa900000000, 0x19ef9dca00000000, 0x7584956f00000000,
++ 0x515d920c00000000, 0xd73eb17600000000, 0xf3e7b61500000000,
++ 0x9f8cbeb000000000, 0xbb55b9d300000000, 0x065cdf2100000000,
++ 0x2285d84200000000, 0x4eeed0e700000000, 0x6a37d78400000000,
++ 0x75fb6dd800000000, 0x51226abb00000000, 0x3d49621e00000000,
++ 0x1990657d00000000, 0xa499038f00000000, 0x804004ec00000000,
++ 0xec2b0c4900000000, 0xc8f20b2a00000000, 0xd2b379f000000000,
++ 0xf66a7e9300000000, 0x9a01763600000000, 0xbed8715500000000,
++ 0x03d117a700000000, 0x270810c400000000, 0x4b63186100000000,
++ 0x6fba1f0200000000, 0x7076a55e00000000, 0x54afa23d00000000,
++ 0x38c4aa9800000000, 0x1c1dadfb00000000, 0xa114cb0900000000,
++ 0x85cdcc6a00000000, 0xe9a6c4cf00000000, 0xcd7fc3ac00000000,
++ 0x9c2251a000000000, 0xb8fb56c300000000, 0xd4905e6600000000,
++ 0xf049590500000000, 0x4d403ff700000000, 0x6999389400000000,
++ 0x05f2303100000000, 0x212b375200000000, 0x3ee78d0e00000000,
++ 0x1a3e8a6d00000000, 0x765582c800000000, 0x528c85ab00000000,
++ 0xef85e35900000000, 0xcb5ce43a00000000, 0xa737ec9f00000000,
++ 0x83eeebfc00000000, 0x99af992600000000, 0xbd769e4500000000,
++ 0xd11d96e000000000, 0xf5c4918300000000, 0x48cdf77100000000,
++ 0x6c14f01200000000, 0x007ff8b700000000, 0x24a6ffd400000000,
++ 0x3b6a458800000000, 0x1fb342eb00000000, 0x73d84a4e00000000,
++ 0x57014d2d00000000, 0xea082bdf00000000, 0xced12cbc00000000,
++ 0xa2ba241900000000, 0x8663237a00000000, 0xae7d62ed00000000,
++ 0x8aa4658e00000000, 0xe6cf6d2b00000000, 0xc2166a4800000000,
++ 0x7f1f0cba00000000, 0x5bc60bd900000000, 0x37ad037c00000000,
++ 0x1374041f00000000, 0x0cb8be4300000000, 0x2861b92000000000,
++ 0x440ab18500000000, 0x60d3b6e600000000, 0xdddad01400000000,
++ 0xf903d77700000000, 0x9568dfd200000000, 0xb1b1d8b100000000,
++ 0xabf0aa6b00000000, 0x8f29ad0800000000, 0xe342a5ad00000000,
++ 0xc79ba2ce00000000, 0x7a92c43c00000000, 0x5e4bc35f00000000,
++ 0x3220cbfa00000000, 0x16f9cc9900000000, 0x093576c500000000,
++ 0x2dec71a600000000, 0x4187790300000000, 0x655e7e6000000000,
++ 0xd857189200000000, 0xfc8e1ff100000000, 0x90e5175400000000,
++ 0xb43c103700000000, 0xe561823b00000000, 0xc1b8855800000000,
++ 0xadd38dfd00000000, 0x890a8a9e00000000, 0x3403ec6c00000000,
++ 0x10daeb0f00000000, 0x7cb1e3aa00000000, 0x5868e4c900000000,
++ 0x47a45e9500000000, 0x637d59f600000000, 0x0f16515300000000,
++ 0x2bcf563000000000, 0x96c630c200000000, 0xb21f37a100000000,
++ 0xde743f0400000000, 0xfaad386700000000, 0xe0ec4abd00000000,
++ 0xc4354dde00000000, 0xa85e457b00000000, 0x8c87421800000000,
++ 0x318e24ea00000000, 0x1557238900000000, 0x793c2b2c00000000,
++ 0x5de52c4f00000000, 0x4229961300000000, 0x66f0917000000000,
++ 0x0a9b99d500000000, 0x2e429eb600000000, 0x934bf84400000000,
++ 0xb792ff2700000000, 0xdbf9f78200000000, 0xff20f0e100000000,
++ 0x7943d39b00000000, 0x5d9ad4f800000000, 0x31f1dc5d00000000,
++ 0x1528db3e00000000, 0xa821bdcc00000000, 0x8cf8baaf00000000,
++ 0xe093b20a00000000, 0xc44ab56900000000, 0xdb860f3500000000,
++ 0xff5f085600000000, 0x933400f300000000, 0xb7ed079000000000,
++ 0x0ae4616200000000, 0x2e3d660100000000, 0x42566ea400000000,
++ 0x668f69c700000000, 0x7cce1b1d00000000, 0x58171c7e00000000,
++ 0x347c14db00000000, 0x10a513b800000000, 0xadac754a00000000,
++ 0x8975722900000000, 0xe51e7a8c00000000, 0xc1c77def00000000,
++ 0xde0bc7b300000000, 0xfad2c0d000000000, 0x96b9c87500000000,
++ 0xb260cf1600000000, 0x0f69a9e400000000, 0x2bb0ae8700000000,
++ 0x47dba62200000000, 0x6302a14100000000, 0x325f334d00000000,
++ 0x1686342e00000000, 0x7aed3c8b00000000, 0x5e343be800000000,
++ 0xe33d5d1a00000000, 0xc7e45a7900000000, 0xab8f52dc00000000,
++ 0x8f5655bf00000000, 0x909aefe300000000, 0xb443e88000000000,
++ 0xd828e02500000000, 0xfcf1e74600000000, 0x41f881b400000000,
++ 0x652186d700000000, 0x094a8e7200000000, 0x2d93891100000000,
++ 0x37d2fbcb00000000, 0x130bfca800000000, 0x7f60f40d00000000,
++ 0x5bb9f36e00000000, 0xe6b0959c00000000, 0xc26992ff00000000,
++ 0xae029a5a00000000, 0x8adb9d3900000000, 0x9517276500000000,
++ 0xb1ce200600000000, 0xdda528a300000000, 0xf97c2fc000000000,
++ 0x4475493200000000, 0x60ac4e5100000000, 0x0cc746f400000000,
++ 0x281e419700000000},
++ {0x0000000000000000, 0x08e3603c00000000, 0x10c6c17800000000,
++ 0x1825a14400000000, 0x208c83f100000000, 0x286fe3cd00000000,
++ 0x304a428900000000, 0x38a922b500000000, 0x011e763800000000,
++ 0x09fd160400000000, 0x11d8b74000000000, 0x193bd77c00000000,
++ 0x2192f5c900000000, 0x297195f500000000, 0x315434b100000000,
++ 0x39b7548d00000000, 0x023cec7000000000, 0x0adf8c4c00000000,
++ 0x12fa2d0800000000, 0x1a194d3400000000, 0x22b06f8100000000,
++ 0x2a530fbd00000000, 0x3276aef900000000, 0x3a95cec500000000,
++ 0x03229a4800000000, 0x0bc1fa7400000000, 0x13e45b3000000000,
++ 0x1b073b0c00000000, 0x23ae19b900000000, 0x2b4d798500000000,
++ 0x3368d8c100000000, 0x3b8bb8fd00000000, 0x0478d8e100000000,
++ 0x0c9bb8dd00000000, 0x14be199900000000, 0x1c5d79a500000000,
++ 0x24f45b1000000000, 0x2c173b2c00000000, 0x34329a6800000000,
++ 0x3cd1fa5400000000, 0x0566aed900000000, 0x0d85cee500000000,
++ 0x15a06fa100000000, 0x1d430f9d00000000, 0x25ea2d2800000000,
++ 0x2d094d1400000000, 0x352cec5000000000, 0x3dcf8c6c00000000,
++ 0x0644349100000000, 0x0ea754ad00000000, 0x1682f5e900000000,
++ 0x1e6195d500000000, 0x26c8b76000000000, 0x2e2bd75c00000000,
++ 0x360e761800000000, 0x3eed162400000000, 0x075a42a900000000,
++ 0x0fb9229500000000, 0x179c83d100000000, 0x1f7fe3ed00000000,
++ 0x27d6c15800000000, 0x2f35a16400000000, 0x3710002000000000,
++ 0x3ff3601c00000000, 0x49f6c11800000000, 0x4115a12400000000,
++ 0x5930006000000000, 0x51d3605c00000000, 0x697a42e900000000,
++ 0x619922d500000000, 0x79bc839100000000, 0x715fe3ad00000000,
++ 0x48e8b72000000000, 0x400bd71c00000000, 0x582e765800000000,
++ 0x50cd166400000000, 0x686434d100000000, 0x608754ed00000000,
++ 0x78a2f5a900000000, 0x7041959500000000, 0x4bca2d6800000000,
++ 0x43294d5400000000, 0x5b0cec1000000000, 0x53ef8c2c00000000,
++ 0x6b46ae9900000000, 0x63a5cea500000000, 0x7b806fe100000000,
++ 0x73630fdd00000000, 0x4ad45b5000000000, 0x42373b6c00000000,
++ 0x5a129a2800000000, 0x52f1fa1400000000, 0x6a58d8a100000000,
++ 0x62bbb89d00000000, 0x7a9e19d900000000, 0x727d79e500000000,
++ 0x4d8e19f900000000, 0x456d79c500000000, 0x5d48d88100000000,
++ 0x55abb8bd00000000, 0x6d029a0800000000, 0x65e1fa3400000000,
++ 0x7dc45b7000000000, 0x75273b4c00000000, 0x4c906fc100000000,
++ 0x44730ffd00000000, 0x5c56aeb900000000, 0x54b5ce8500000000,
++ 0x6c1cec3000000000, 0x64ff8c0c00000000, 0x7cda2d4800000000,
++ 0x74394d7400000000, 0x4fb2f58900000000, 0x475195b500000000,
++ 0x5f7434f100000000, 0x579754cd00000000, 0x6f3e767800000000,
++ 0x67dd164400000000, 0x7ff8b70000000000, 0x771bd73c00000000,
++ 0x4eac83b100000000, 0x464fe38d00000000, 0x5e6a42c900000000,
++ 0x568922f500000000, 0x6e20004000000000, 0x66c3607c00000000,
++ 0x7ee6c13800000000, 0x7605a10400000000, 0x92ec833100000000,
++ 0x9a0fe30d00000000, 0x822a424900000000, 0x8ac9227500000000,
++ 0xb26000c000000000, 0xba8360fc00000000, 0xa2a6c1b800000000,
++ 0xaa45a18400000000, 0x93f2f50900000000, 0x9b11953500000000,
++ 0x8334347100000000, 0x8bd7544d00000000, 0xb37e76f800000000,
++ 0xbb9d16c400000000, 0xa3b8b78000000000, 0xab5bd7bc00000000,
++ 0x90d06f4100000000, 0x98330f7d00000000, 0x8016ae3900000000,
++ 0x88f5ce0500000000, 0xb05cecb000000000, 0xb8bf8c8c00000000,
++ 0xa09a2dc800000000, 0xa8794df400000000, 0x91ce197900000000,
++ 0x992d794500000000, 0x8108d80100000000, 0x89ebb83d00000000,
++ 0xb1429a8800000000, 0xb9a1fab400000000, 0xa1845bf000000000,
++ 0xa9673bcc00000000, 0x96945bd000000000, 0x9e773bec00000000,
++ 0x86529aa800000000, 0x8eb1fa9400000000, 0xb618d82100000000,
++ 0xbefbb81d00000000, 0xa6de195900000000, 0xae3d796500000000,
++ 0x978a2de800000000, 0x9f694dd400000000, 0x874cec9000000000,
++ 0x8faf8cac00000000, 0xb706ae1900000000, 0xbfe5ce2500000000,
++ 0xa7c06f6100000000, 0xaf230f5d00000000, 0x94a8b7a000000000,
++ 0x9c4bd79c00000000, 0x846e76d800000000, 0x8c8d16e400000000,
++ 0xb424345100000000, 0xbcc7546d00000000, 0xa4e2f52900000000,
++ 0xac01951500000000, 0x95b6c19800000000, 0x9d55a1a400000000,
++ 0x857000e000000000, 0x8d9360dc00000000, 0xb53a426900000000,
++ 0xbdd9225500000000, 0xa5fc831100000000, 0xad1fe32d00000000,
++ 0xdb1a422900000000, 0xd3f9221500000000, 0xcbdc835100000000,
++ 0xc33fe36d00000000, 0xfb96c1d800000000, 0xf375a1e400000000,
++ 0xeb5000a000000000, 0xe3b3609c00000000, 0xda04341100000000,
++ 0xd2e7542d00000000, 0xcac2f56900000000, 0xc221955500000000,
++ 0xfa88b7e000000000, 0xf26bd7dc00000000, 0xea4e769800000000,
++ 0xe2ad16a400000000, 0xd926ae5900000000, 0xd1c5ce6500000000,
++ 0xc9e06f2100000000, 0xc1030f1d00000000, 0xf9aa2da800000000,
++ 0xf1494d9400000000, 0xe96cecd000000000, 0xe18f8cec00000000,
++ 0xd838d86100000000, 0xd0dbb85d00000000, 0xc8fe191900000000,
++ 0xc01d792500000000, 0xf8b45b9000000000, 0xf0573bac00000000,
++ 0xe8729ae800000000, 0xe091fad400000000, 0xdf629ac800000000,
++ 0xd781faf400000000, 0xcfa45bb000000000, 0xc7473b8c00000000,
++ 0xffee193900000000, 0xf70d790500000000, 0xef28d84100000000,
++ 0xe7cbb87d00000000, 0xde7cecf000000000, 0xd69f8ccc00000000,
++ 0xceba2d8800000000, 0xc6594db400000000, 0xfef06f0100000000,
++ 0xf6130f3d00000000, 0xee36ae7900000000, 0xe6d5ce4500000000,
++ 0xdd5e76b800000000, 0xd5bd168400000000, 0xcd98b7c000000000,
++ 0xc57bd7fc00000000, 0xfdd2f54900000000, 0xf531957500000000,
++ 0xed14343100000000, 0xe5f7540d00000000, 0xdc40008000000000,
++ 0xd4a360bc00000000, 0xcc86c1f800000000, 0xc465a1c400000000,
++ 0xfccc837100000000, 0xf42fe34d00000000, 0xec0a420900000000,
++ 0xe4e9223500000000},
++ {0x0000000000000000, 0xd1e8e70e00000000, 0xa2d1cf1d00000000,
++ 0x7339281300000000, 0x44a39f3b00000000, 0x954b783500000000,
++ 0xe672502600000000, 0x379ab72800000000, 0x88463f7700000000,
++ 0x59aed87900000000, 0x2a97f06a00000000, 0xfb7f176400000000,
++ 0xcce5a04c00000000, 0x1d0d474200000000, 0x6e346f5100000000,
++ 0xbfdc885f00000000, 0x108d7eee00000000, 0xc16599e000000000,
++ 0xb25cb1f300000000, 0x63b456fd00000000, 0x542ee1d500000000,
++ 0x85c606db00000000, 0xf6ff2ec800000000, 0x2717c9c600000000,
++ 0x98cb419900000000, 0x4923a69700000000, 0x3a1a8e8400000000,
++ 0xebf2698a00000000, 0xdc68dea200000000, 0x0d8039ac00000000,
++ 0x7eb911bf00000000, 0xaf51f6b100000000, 0x611c8c0700000000,
++ 0xb0f46b0900000000, 0xc3cd431a00000000, 0x1225a41400000000,
++ 0x25bf133c00000000, 0xf457f43200000000, 0x876edc2100000000,
++ 0x56863b2f00000000, 0xe95ab37000000000, 0x38b2547e00000000,
++ 0x4b8b7c6d00000000, 0x9a639b6300000000, 0xadf92c4b00000000,
++ 0x7c11cb4500000000, 0x0f28e35600000000, 0xdec0045800000000,
++ 0x7191f2e900000000, 0xa07915e700000000, 0xd3403df400000000,
++ 0x02a8dafa00000000, 0x35326dd200000000, 0xe4da8adc00000000,
++ 0x97e3a2cf00000000, 0x460b45c100000000, 0xf9d7cd9e00000000,
++ 0x283f2a9000000000, 0x5b06028300000000, 0x8aeee58d00000000,
++ 0xbd7452a500000000, 0x6c9cb5ab00000000, 0x1fa59db800000000,
++ 0xce4d7ab600000000, 0xc238180f00000000, 0x13d0ff0100000000,
++ 0x60e9d71200000000, 0xb101301c00000000, 0x869b873400000000,
++ 0x5773603a00000000, 0x244a482900000000, 0xf5a2af2700000000,
++ 0x4a7e277800000000, 0x9b96c07600000000, 0xe8afe86500000000,
++ 0x39470f6b00000000, 0x0eddb84300000000, 0xdf355f4d00000000,
++ 0xac0c775e00000000, 0x7de4905000000000, 0xd2b566e100000000,
++ 0x035d81ef00000000, 0x7064a9fc00000000, 0xa18c4ef200000000,
++ 0x9616f9da00000000, 0x47fe1ed400000000, 0x34c736c700000000,
++ 0xe52fd1c900000000, 0x5af3599600000000, 0x8b1bbe9800000000,
++ 0xf822968b00000000, 0x29ca718500000000, 0x1e50c6ad00000000,
++ 0xcfb821a300000000, 0xbc8109b000000000, 0x6d69eebe00000000,
++ 0xa324940800000000, 0x72cc730600000000, 0x01f55b1500000000,
++ 0xd01dbc1b00000000, 0xe7870b3300000000, 0x366fec3d00000000,
++ 0x4556c42e00000000, 0x94be232000000000, 0x2b62ab7f00000000,
++ 0xfa8a4c7100000000, 0x89b3646200000000, 0x585b836c00000000,
++ 0x6fc1344400000000, 0xbe29d34a00000000, 0xcd10fb5900000000,
++ 0x1cf81c5700000000, 0xb3a9eae600000000, 0x62410de800000000,
++ 0x117825fb00000000, 0xc090c2f500000000, 0xf70a75dd00000000,
++ 0x26e292d300000000, 0x55dbbac000000000, 0x84335dce00000000,
++ 0x3befd59100000000, 0xea07329f00000000, 0x993e1a8c00000000,
++ 0x48d6fd8200000000, 0x7f4c4aaa00000000, 0xaea4ada400000000,
++ 0xdd9d85b700000000, 0x0c7562b900000000, 0x8471301e00000000,
++ 0x5599d71000000000, 0x26a0ff0300000000, 0xf748180d00000000,
++ 0xc0d2af2500000000, 0x113a482b00000000, 0x6203603800000000,
++ 0xb3eb873600000000, 0x0c370f6900000000, 0xdddfe86700000000,
++ 0xaee6c07400000000, 0x7f0e277a00000000, 0x4894905200000000,
++ 0x997c775c00000000, 0xea455f4f00000000, 0x3badb84100000000,
++ 0x94fc4ef000000000, 0x4514a9fe00000000, 0x362d81ed00000000,
++ 0xe7c566e300000000, 0xd05fd1cb00000000, 0x01b736c500000000,
++ 0x728e1ed600000000, 0xa366f9d800000000, 0x1cba718700000000,
++ 0xcd52968900000000, 0xbe6bbe9a00000000, 0x6f83599400000000,
++ 0x5819eebc00000000, 0x89f109b200000000, 0xfac821a100000000,
++ 0x2b20c6af00000000, 0xe56dbc1900000000, 0x34855b1700000000,
++ 0x47bc730400000000, 0x9654940a00000000, 0xa1ce232200000000,
++ 0x7026c42c00000000, 0x031fec3f00000000, 0xd2f70b3100000000,
++ 0x6d2b836e00000000, 0xbcc3646000000000, 0xcffa4c7300000000,
++ 0x1e12ab7d00000000, 0x29881c5500000000, 0xf860fb5b00000000,
++ 0x8b59d34800000000, 0x5ab1344600000000, 0xf5e0c2f700000000,
++ 0x240825f900000000, 0x57310dea00000000, 0x86d9eae400000000,
++ 0xb1435dcc00000000, 0x60abbac200000000, 0x139292d100000000,
++ 0xc27a75df00000000, 0x7da6fd8000000000, 0xac4e1a8e00000000,
++ 0xdf77329d00000000, 0x0e9fd59300000000, 0x390562bb00000000,
++ 0xe8ed85b500000000, 0x9bd4ada600000000, 0x4a3c4aa800000000,
++ 0x4649281100000000, 0x97a1cf1f00000000, 0xe498e70c00000000,
++ 0x3570000200000000, 0x02eab72a00000000, 0xd302502400000000,
++ 0xa03b783700000000, 0x71d39f3900000000, 0xce0f176600000000,
++ 0x1fe7f06800000000, 0x6cded87b00000000, 0xbd363f7500000000,
++ 0x8aac885d00000000, 0x5b446f5300000000, 0x287d474000000000,
++ 0xf995a04e00000000, 0x56c456ff00000000, 0x872cb1f100000000,
++ 0xf41599e200000000, 0x25fd7eec00000000, 0x1267c9c400000000,
++ 0xc38f2eca00000000, 0xb0b606d900000000, 0x615ee1d700000000,
++ 0xde82698800000000, 0x0f6a8e8600000000, 0x7c53a69500000000,
++ 0xadbb419b00000000, 0x9a21f6b300000000, 0x4bc911bd00000000,
++ 0x38f039ae00000000, 0xe918dea000000000, 0x2755a41600000000,
++ 0xf6bd431800000000, 0x85846b0b00000000, 0x546c8c0500000000,
++ 0x63f63b2d00000000, 0xb21edc2300000000, 0xc127f43000000000,
++ 0x10cf133e00000000, 0xaf139b6100000000, 0x7efb7c6f00000000,
++ 0x0dc2547c00000000, 0xdc2ab37200000000, 0xebb0045a00000000,
++ 0x3a58e35400000000, 0x4961cb4700000000, 0x98892c4900000000,
++ 0x37d8daf800000000, 0xe6303df600000000, 0x950915e500000000,
++ 0x44e1f2eb00000000, 0x737b45c300000000, 0xa293a2cd00000000,
++ 0xd1aa8ade00000000, 0x00426dd000000000, 0xbf9ee58f00000000,
++ 0x6e76028100000000, 0x1d4f2a9200000000, 0xcca7cd9c00000000,
++ 0xfb3d7ab400000000, 0x2ad59dba00000000, 0x59ecb5a900000000,
++ 0x880452a700000000},
++ {0x0000000000000000, 0xaa05daf100000000, 0x150dc53800000000,
++ 0xbf081fc900000000, 0x2a1a8a7100000000, 0x801f508000000000,
++ 0x3f174f4900000000, 0x951295b800000000, 0x543414e300000000,
++ 0xfe31ce1200000000, 0x4139d1db00000000, 0xeb3c0b2a00000000,
++ 0x7e2e9e9200000000, 0xd42b446300000000, 0x6b235baa00000000,
++ 0xc126815b00000000, 0xe96e591d00000000, 0x436b83ec00000000,
++ 0xfc639c2500000000, 0x566646d400000000, 0xc374d36c00000000,
++ 0x6971099d00000000, 0xd679165400000000, 0x7c7ccca500000000,
++ 0xbd5a4dfe00000000, 0x175f970f00000000, 0xa85788c600000000,
++ 0x0252523700000000, 0x9740c78f00000000, 0x3d451d7e00000000,
++ 0x824d02b700000000, 0x2848d84600000000, 0xd2ddb23a00000000,
++ 0x78d868cb00000000, 0xc7d0770200000000, 0x6dd5adf300000000,
++ 0xf8c7384b00000000, 0x52c2e2ba00000000, 0xedcafd7300000000,
++ 0x47cf278200000000, 0x86e9a6d900000000, 0x2cec7c2800000000,
++ 0x93e463e100000000, 0x39e1b91000000000, 0xacf32ca800000000,
++ 0x06f6f65900000000, 0xb9fee99000000000, 0x13fb336100000000,
++ 0x3bb3eb2700000000, 0x91b631d600000000, 0x2ebe2e1f00000000,
++ 0x84bbf4ee00000000, 0x11a9615600000000, 0xbbacbba700000000,
++ 0x04a4a46e00000000, 0xaea17e9f00000000, 0x6f87ffc400000000,
++ 0xc582253500000000, 0x7a8a3afc00000000, 0xd08fe00d00000000,
++ 0x459d75b500000000, 0xef98af4400000000, 0x5090b08d00000000,
++ 0xfa956a7c00000000, 0xa4bb657500000000, 0x0ebebf8400000000,
++ 0xb1b6a04d00000000, 0x1bb37abc00000000, 0x8ea1ef0400000000,
++ 0x24a435f500000000, 0x9bac2a3c00000000, 0x31a9f0cd00000000,
++ 0xf08f719600000000, 0x5a8aab6700000000, 0xe582b4ae00000000,
++ 0x4f876e5f00000000, 0xda95fbe700000000, 0x7090211600000000,
++ 0xcf983edf00000000, 0x659de42e00000000, 0x4dd53c6800000000,
++ 0xe7d0e69900000000, 0x58d8f95000000000, 0xf2dd23a100000000,
++ 0x67cfb61900000000, 0xcdca6ce800000000, 0x72c2732100000000,
++ 0xd8c7a9d000000000, 0x19e1288b00000000, 0xb3e4f27a00000000,
++ 0x0cecedb300000000, 0xa6e9374200000000, 0x33fba2fa00000000,
++ 0x99fe780b00000000, 0x26f667c200000000, 0x8cf3bd3300000000,
++ 0x7666d74f00000000, 0xdc630dbe00000000, 0x636b127700000000,
++ 0xc96ec88600000000, 0x5c7c5d3e00000000, 0xf67987cf00000000,
++ 0x4971980600000000, 0xe37442f700000000, 0x2252c3ac00000000,
++ 0x8857195d00000000, 0x375f069400000000, 0x9d5adc6500000000,
++ 0x084849dd00000000, 0xa24d932c00000000, 0x1d458ce500000000,
++ 0xb740561400000000, 0x9f088e5200000000, 0x350d54a300000000,
++ 0x8a054b6a00000000, 0x2000919b00000000, 0xb512042300000000,
++ 0x1f17ded200000000, 0xa01fc11b00000000, 0x0a1a1bea00000000,
++ 0xcb3c9ab100000000, 0x6139404000000000, 0xde315f8900000000,
++ 0x7434857800000000, 0xe12610c000000000, 0x4b23ca3100000000,
++ 0xf42bd5f800000000, 0x5e2e0f0900000000, 0x4877cbea00000000,
++ 0xe272111b00000000, 0x5d7a0ed200000000, 0xf77fd42300000000,
++ 0x626d419b00000000, 0xc8689b6a00000000, 0x776084a300000000,
++ 0xdd655e5200000000, 0x1c43df0900000000, 0xb64605f800000000,
++ 0x094e1a3100000000, 0xa34bc0c000000000, 0x3659557800000000,
++ 0x9c5c8f8900000000, 0x2354904000000000, 0x89514ab100000000,
++ 0xa11992f700000000, 0x0b1c480600000000, 0xb41457cf00000000,
++ 0x1e118d3e00000000, 0x8b03188600000000, 0x2106c27700000000,
++ 0x9e0eddbe00000000, 0x340b074f00000000, 0xf52d861400000000,
++ 0x5f285ce500000000, 0xe020432c00000000, 0x4a2599dd00000000,
++ 0xdf370c6500000000, 0x7532d69400000000, 0xca3ac95d00000000,
++ 0x603f13ac00000000, 0x9aaa79d000000000, 0x30afa32100000000,
++ 0x8fa7bce800000000, 0x25a2661900000000, 0xb0b0f3a100000000,
++ 0x1ab5295000000000, 0xa5bd369900000000, 0x0fb8ec6800000000,
++ 0xce9e6d3300000000, 0x649bb7c200000000, 0xdb93a80b00000000,
++ 0x719672fa00000000, 0xe484e74200000000, 0x4e813db300000000,
++ 0xf189227a00000000, 0x5b8cf88b00000000, 0x73c420cd00000000,
++ 0xd9c1fa3c00000000, 0x66c9e5f500000000, 0xcccc3f0400000000,
++ 0x59deaabc00000000, 0xf3db704d00000000, 0x4cd36f8400000000,
++ 0xe6d6b57500000000, 0x27f0342e00000000, 0x8df5eedf00000000,
++ 0x32fdf11600000000, 0x98f82be700000000, 0x0deabe5f00000000,
++ 0xa7ef64ae00000000, 0x18e77b6700000000, 0xb2e2a19600000000,
++ 0xecccae9f00000000, 0x46c9746e00000000, 0xf9c16ba700000000,
++ 0x53c4b15600000000, 0xc6d624ee00000000, 0x6cd3fe1f00000000,
++ 0xd3dbe1d600000000, 0x79de3b2700000000, 0xb8f8ba7c00000000,
++ 0x12fd608d00000000, 0xadf57f4400000000, 0x07f0a5b500000000,
++ 0x92e2300d00000000, 0x38e7eafc00000000, 0x87eff53500000000,
++ 0x2dea2fc400000000, 0x05a2f78200000000, 0xafa72d7300000000,
++ 0x10af32ba00000000, 0xbaaae84b00000000, 0x2fb87df300000000,
++ 0x85bda70200000000, 0x3ab5b8cb00000000, 0x90b0623a00000000,
++ 0x5196e36100000000, 0xfb93399000000000, 0x449b265900000000,
++ 0xee9efca800000000, 0x7b8c691000000000, 0xd189b3e100000000,
++ 0x6e81ac2800000000, 0xc48476d900000000, 0x3e111ca500000000,
++ 0x9414c65400000000, 0x2b1cd99d00000000, 0x8119036c00000000,
++ 0x140b96d400000000, 0xbe0e4c2500000000, 0x010653ec00000000,
++ 0xab03891d00000000, 0x6a25084600000000, 0xc020d2b700000000,
++ 0x7f28cd7e00000000, 0xd52d178f00000000, 0x403f823700000000,
++ 0xea3a58c600000000, 0x5532470f00000000, 0xff379dfe00000000,
++ 0xd77f45b800000000, 0x7d7a9f4900000000, 0xc272808000000000,
++ 0x68775a7100000000, 0xfd65cfc900000000, 0x5760153800000000,
++ 0xe8680af100000000, 0x426dd00000000000, 0x834b515b00000000,
++ 0x294e8baa00000000, 0x9646946300000000, 0x3c434e9200000000,
++ 0xa951db2a00000000, 0x035401db00000000, 0xbc5c1e1200000000,
++ 0x1659c4e300000000}};
++
++#else /* W == 4 */
++
++local const z_crc_t FAR crc_braid_table[][256] = {
++ {0x00000000, 0xae689191, 0x87a02563, 0x29c8b4f2, 0xd4314c87,
++ 0x7a59dd16, 0x539169e4, 0xfdf9f875, 0x73139f4f, 0xdd7b0ede,
++ 0xf4b3ba2c, 0x5adb2bbd, 0xa722d3c8, 0x094a4259, 0x2082f6ab,
++ 0x8eea673a, 0xe6273e9e, 0x484faf0f, 0x61871bfd, 0xcfef8a6c,
++ 0x32167219, 0x9c7ee388, 0xb5b6577a, 0x1bdec6eb, 0x9534a1d1,
++ 0x3b5c3040, 0x129484b2, 0xbcfc1523, 0x4105ed56, 0xef6d7cc7,
++ 0xc6a5c835, 0x68cd59a4, 0x173f7b7d, 0xb957eaec, 0x909f5e1e,
++ 0x3ef7cf8f, 0xc30e37fa, 0x6d66a66b, 0x44ae1299, 0xeac68308,
++ 0x642ce432, 0xca4475a3, 0xe38cc151, 0x4de450c0, 0xb01da8b5,
++ 0x1e753924, 0x37bd8dd6, 0x99d51c47, 0xf11845e3, 0x5f70d472,
++ 0x76b86080, 0xd8d0f111, 0x25290964, 0x8b4198f5, 0xa2892c07,
++ 0x0ce1bd96, 0x820bdaac, 0x2c634b3d, 0x05abffcf, 0xabc36e5e,
++ 0x563a962b, 0xf85207ba, 0xd19ab348, 0x7ff222d9, 0x2e7ef6fa,
++ 0x8016676b, 0xa9ded399, 0x07b64208, 0xfa4fba7d, 0x54272bec,
++ 0x7def9f1e, 0xd3870e8f, 0x5d6d69b5, 0xf305f824, 0xdacd4cd6,
++ 0x74a5dd47, 0x895c2532, 0x2734b4a3, 0x0efc0051, 0xa09491c0,
++ 0xc859c864, 0x663159f5, 0x4ff9ed07, 0xe1917c96, 0x1c6884e3,
++ 0xb2001572, 0x9bc8a180, 0x35a03011, 0xbb4a572b, 0x1522c6ba,
++ 0x3cea7248, 0x9282e3d9, 0x6f7b1bac, 0xc1138a3d, 0xe8db3ecf,
++ 0x46b3af5e, 0x39418d87, 0x97291c16, 0xbee1a8e4, 0x10893975,
++ 0xed70c100, 0x43185091, 0x6ad0e463, 0xc4b875f2, 0x4a5212c8,
++ 0xe43a8359, 0xcdf237ab, 0x639aa63a, 0x9e635e4f, 0x300bcfde,
++ 0x19c37b2c, 0xb7abeabd, 0xdf66b319, 0x710e2288, 0x58c6967a,
++ 0xf6ae07eb, 0x0b57ff9e, 0xa53f6e0f, 0x8cf7dafd, 0x229f4b6c,
++ 0xac752c56, 0x021dbdc7, 0x2bd50935, 0x85bd98a4, 0x784460d1,
++ 0xd62cf140, 0xffe445b2, 0x518cd423, 0x5cfdedf4, 0xf2957c65,
++ 0xdb5dc897, 0x75355906, 0x88cca173, 0x26a430e2, 0x0f6c8410,
++ 0xa1041581, 0x2fee72bb, 0x8186e32a, 0xa84e57d8, 0x0626c649,
++ 0xfbdf3e3c, 0x55b7afad, 0x7c7f1b5f, 0xd2178ace, 0xbadad36a,
++ 0x14b242fb, 0x3d7af609, 0x93126798, 0x6eeb9fed, 0xc0830e7c,
++ 0xe94bba8e, 0x47232b1f, 0xc9c94c25, 0x67a1ddb4, 0x4e696946,
++ 0xe001f8d7, 0x1df800a2, 0xb3909133, 0x9a5825c1, 0x3430b450,
++ 0x4bc29689, 0xe5aa0718, 0xcc62b3ea, 0x620a227b, 0x9ff3da0e,
++ 0x319b4b9f, 0x1853ff6d, 0xb63b6efc, 0x38d109c6, 0x96b99857,
++ 0xbf712ca5, 0x1119bd34, 0xece04541, 0x4288d4d0, 0x6b406022,
++ 0xc528f1b3, 0xade5a817, 0x038d3986, 0x2a458d74, 0x842d1ce5,
++ 0x79d4e490, 0xd7bc7501, 0xfe74c1f3, 0x501c5062, 0xdef63758,
++ 0x709ea6c9, 0x5956123b, 0xf73e83aa, 0x0ac77bdf, 0xa4afea4e,
++ 0x8d675ebc, 0x230fcf2d, 0x72831b0e, 0xdceb8a9f, 0xf5233e6d,
++ 0x5b4baffc, 0xa6b25789, 0x08dac618, 0x211272ea, 0x8f7ae37b,
++ 0x01908441, 0xaff815d0, 0x8630a122, 0x285830b3, 0xd5a1c8c6,
++ 0x7bc95957, 0x5201eda5, 0xfc697c34, 0x94a42590, 0x3accb401,
++ 0x130400f3, 0xbd6c9162, 0x40956917, 0xeefdf886, 0xc7354c74,
++ 0x695ddde5, 0xe7b7badf, 0x49df2b4e, 0x60179fbc, 0xce7f0e2d,
++ 0x3386f658, 0x9dee67c9, 0xb426d33b, 0x1a4e42aa, 0x65bc6073,
++ 0xcbd4f1e2, 0xe21c4510, 0x4c74d481, 0xb18d2cf4, 0x1fe5bd65,
++ 0x362d0997, 0x98459806, 0x16afff3c, 0xb8c76ead, 0x910fda5f,
++ 0x3f674bce, 0xc29eb3bb, 0x6cf6222a, 0x453e96d8, 0xeb560749,
++ 0x839b5eed, 0x2df3cf7c, 0x043b7b8e, 0xaa53ea1f, 0x57aa126a,
++ 0xf9c283fb, 0xd00a3709, 0x7e62a698, 0xf088c1a2, 0x5ee05033,
++ 0x7728e4c1, 0xd9407550, 0x24b98d25, 0x8ad11cb4, 0xa319a846,
++ 0x0d7139d7},
++ {0x00000000, 0xb9fbdbe8, 0xa886b191, 0x117d6a79, 0x8a7c6563,
++ 0x3387be8b, 0x22fad4f2, 0x9b010f1a, 0xcf89cc87, 0x7672176f,
++ 0x670f7d16, 0xdef4a6fe, 0x45f5a9e4, 0xfc0e720c, 0xed731875,
++ 0x5488c39d, 0x44629f4f, 0xfd9944a7, 0xece42ede, 0x551ff536,
++ 0xce1efa2c, 0x77e521c4, 0x66984bbd, 0xdf639055, 0x8beb53c8,
++ 0x32108820, 0x236de259, 0x9a9639b1, 0x019736ab, 0xb86ced43,
++ 0xa911873a, 0x10ea5cd2, 0x88c53e9e, 0x313ee576, 0x20438f0f,
++ 0x99b854e7, 0x02b95bfd, 0xbb428015, 0xaa3fea6c, 0x13c43184,
++ 0x474cf219, 0xfeb729f1, 0xefca4388, 0x56319860, 0xcd30977a,
++ 0x74cb4c92, 0x65b626eb, 0xdc4dfd03, 0xcca7a1d1, 0x755c7a39,
++ 0x64211040, 0xdddacba8, 0x46dbc4b2, 0xff201f5a, 0xee5d7523,
++ 0x57a6aecb, 0x032e6d56, 0xbad5b6be, 0xaba8dcc7, 0x1253072f,
++ 0x89520835, 0x30a9d3dd, 0x21d4b9a4, 0x982f624c, 0xcafb7b7d,
++ 0x7300a095, 0x627dcaec, 0xdb861104, 0x40871e1e, 0xf97cc5f6,
++ 0xe801af8f, 0x51fa7467, 0x0572b7fa, 0xbc896c12, 0xadf4066b,
++ 0x140fdd83, 0x8f0ed299, 0x36f50971, 0x27886308, 0x9e73b8e0,
++ 0x8e99e432, 0x37623fda, 0x261f55a3, 0x9fe48e4b, 0x04e58151,
++ 0xbd1e5ab9, 0xac6330c0, 0x1598eb28, 0x411028b5, 0xf8ebf35d,
++ 0xe9969924, 0x506d42cc, 0xcb6c4dd6, 0x7297963e, 0x63eafc47,
++ 0xda1127af, 0x423e45e3, 0xfbc59e0b, 0xeab8f472, 0x53432f9a,
++ 0xc8422080, 0x71b9fb68, 0x60c49111, 0xd93f4af9, 0x8db78964,
++ 0x344c528c, 0x253138f5, 0x9ccae31d, 0x07cbec07, 0xbe3037ef,
++ 0xaf4d5d96, 0x16b6867e, 0x065cdaac, 0xbfa70144, 0xaeda6b3d,
++ 0x1721b0d5, 0x8c20bfcf, 0x35db6427, 0x24a60e5e, 0x9d5dd5b6,
++ 0xc9d5162b, 0x702ecdc3, 0x6153a7ba, 0xd8a87c52, 0x43a97348,
++ 0xfa52a8a0, 0xeb2fc2d9, 0x52d41931, 0x4e87f0bb, 0xf77c2b53,
++ 0xe601412a, 0x5ffa9ac2, 0xc4fb95d8, 0x7d004e30, 0x6c7d2449,
++ 0xd586ffa1, 0x810e3c3c, 0x38f5e7d4, 0x29888dad, 0x90735645,
++ 0x0b72595f, 0xb28982b7, 0xa3f4e8ce, 0x1a0f3326, 0x0ae56ff4,
++ 0xb31eb41c, 0xa263de65, 0x1b98058d, 0x80990a97, 0x3962d17f,
++ 0x281fbb06, 0x91e460ee, 0xc56ca373, 0x7c97789b, 0x6dea12e2,
++ 0xd411c90a, 0x4f10c610, 0xf6eb1df8, 0xe7967781, 0x5e6dac69,
++ 0xc642ce25, 0x7fb915cd, 0x6ec47fb4, 0xd73fa45c, 0x4c3eab46,
++ 0xf5c570ae, 0xe4b81ad7, 0x5d43c13f, 0x09cb02a2, 0xb030d94a,
++ 0xa14db333, 0x18b668db, 0x83b767c1, 0x3a4cbc29, 0x2b31d650,
++ 0x92ca0db8, 0x8220516a, 0x3bdb8a82, 0x2aa6e0fb, 0x935d3b13,
++ 0x085c3409, 0xb1a7efe1, 0xa0da8598, 0x19215e70, 0x4da99ded,
++ 0xf4524605, 0xe52f2c7c, 0x5cd4f794, 0xc7d5f88e, 0x7e2e2366,
++ 0x6f53491f, 0xd6a892f7, 0x847c8bc6, 0x3d87502e, 0x2cfa3a57,
++ 0x9501e1bf, 0x0e00eea5, 0xb7fb354d, 0xa6865f34, 0x1f7d84dc,
++ 0x4bf54741, 0xf20e9ca9, 0xe373f6d0, 0x5a882d38, 0xc1892222,
++ 0x7872f9ca, 0x690f93b3, 0xd0f4485b, 0xc01e1489, 0x79e5cf61,
++ 0x6898a518, 0xd1637ef0, 0x4a6271ea, 0xf399aa02, 0xe2e4c07b,
++ 0x5b1f1b93, 0x0f97d80e, 0xb66c03e6, 0xa711699f, 0x1eeab277,
++ 0x85ebbd6d, 0x3c106685, 0x2d6d0cfc, 0x9496d714, 0x0cb9b558,
++ 0xb5426eb0, 0xa43f04c9, 0x1dc4df21, 0x86c5d03b, 0x3f3e0bd3,
++ 0x2e4361aa, 0x97b8ba42, 0xc33079df, 0x7acba237, 0x6bb6c84e,
++ 0xd24d13a6, 0x494c1cbc, 0xf0b7c754, 0xe1caad2d, 0x583176c5,
++ 0x48db2a17, 0xf120f1ff, 0xe05d9b86, 0x59a6406e, 0xc2a74f74,
++ 0x7b5c949c, 0x6a21fee5, 0xd3da250d, 0x8752e690, 0x3ea93d78,
++ 0x2fd45701, 0x962f8ce9, 0x0d2e83f3, 0xb4d5581b, 0xa5a83262,
++ 0x1c53e98a},
++ {0x00000000, 0x9d0fe176, 0xe16ec4ad, 0x7c6125db, 0x19ac8f1b,
++ 0x84a36e6d, 0xf8c24bb6, 0x65cdaac0, 0x33591e36, 0xae56ff40,
++ 0xd237da9b, 0x4f383bed, 0x2af5912d, 0xb7fa705b, 0xcb9b5580,
++ 0x5694b4f6, 0x66b23c6c, 0xfbbddd1a, 0x87dcf8c1, 0x1ad319b7,
++ 0x7f1eb377, 0xe2115201, 0x9e7077da, 0x037f96ac, 0x55eb225a,
++ 0xc8e4c32c, 0xb485e6f7, 0x298a0781, 0x4c47ad41, 0xd1484c37,
++ 0xad2969ec, 0x3026889a, 0xcd6478d8, 0x506b99ae, 0x2c0abc75,
++ 0xb1055d03, 0xd4c8f7c3, 0x49c716b5, 0x35a6336e, 0xa8a9d218,
++ 0xfe3d66ee, 0x63328798, 0x1f53a243, 0x825c4335, 0xe791e9f5,
++ 0x7a9e0883, 0x06ff2d58, 0x9bf0cc2e, 0xabd644b4, 0x36d9a5c2,
++ 0x4ab88019, 0xd7b7616f, 0xb27acbaf, 0x2f752ad9, 0x53140f02,
++ 0xce1bee74, 0x988f5a82, 0x0580bbf4, 0x79e19e2f, 0xe4ee7f59,
++ 0x8123d599, 0x1c2c34ef, 0x604d1134, 0xfd42f042, 0x41b9f7f1,
++ 0xdcb61687, 0xa0d7335c, 0x3dd8d22a, 0x581578ea, 0xc51a999c,
++ 0xb97bbc47, 0x24745d31, 0x72e0e9c7, 0xefef08b1, 0x938e2d6a,
++ 0x0e81cc1c, 0x6b4c66dc, 0xf64387aa, 0x8a22a271, 0x172d4307,
++ 0x270bcb9d, 0xba042aeb, 0xc6650f30, 0x5b6aee46, 0x3ea74486,
++ 0xa3a8a5f0, 0xdfc9802b, 0x42c6615d, 0x1452d5ab, 0x895d34dd,
++ 0xf53c1106, 0x6833f070, 0x0dfe5ab0, 0x90f1bbc6, 0xec909e1d,
++ 0x719f7f6b, 0x8cdd8f29, 0x11d26e5f, 0x6db34b84, 0xf0bcaaf2,
++ 0x95710032, 0x087ee144, 0x741fc49f, 0xe91025e9, 0xbf84911f,
++ 0x228b7069, 0x5eea55b2, 0xc3e5b4c4, 0xa6281e04, 0x3b27ff72,
++ 0x4746daa9, 0xda493bdf, 0xea6fb345, 0x77605233, 0x0b0177e8,
++ 0x960e969e, 0xf3c33c5e, 0x6eccdd28, 0x12adf8f3, 0x8fa21985,
++ 0xd936ad73, 0x44394c05, 0x385869de, 0xa55788a8, 0xc09a2268,
++ 0x5d95c31e, 0x21f4e6c5, 0xbcfb07b3, 0x8373efe2, 0x1e7c0e94,
++ 0x621d2b4f, 0xff12ca39, 0x9adf60f9, 0x07d0818f, 0x7bb1a454,
++ 0xe6be4522, 0xb02af1d4, 0x2d2510a2, 0x51443579, 0xcc4bd40f,
++ 0xa9867ecf, 0x34899fb9, 0x48e8ba62, 0xd5e75b14, 0xe5c1d38e,
++ 0x78ce32f8, 0x04af1723, 0x99a0f655, 0xfc6d5c95, 0x6162bde3,
++ 0x1d039838, 0x800c794e, 0xd698cdb8, 0x4b972cce, 0x37f60915,
++ 0xaaf9e863, 0xcf3442a3, 0x523ba3d5, 0x2e5a860e, 0xb3556778,
++ 0x4e17973a, 0xd318764c, 0xaf795397, 0x3276b2e1, 0x57bb1821,
++ 0xcab4f957, 0xb6d5dc8c, 0x2bda3dfa, 0x7d4e890c, 0xe041687a,
++ 0x9c204da1, 0x012facd7, 0x64e20617, 0xf9ede761, 0x858cc2ba,
++ 0x188323cc, 0x28a5ab56, 0xb5aa4a20, 0xc9cb6ffb, 0x54c48e8d,
++ 0x3109244d, 0xac06c53b, 0xd067e0e0, 0x4d680196, 0x1bfcb560,
++ 0x86f35416, 0xfa9271cd, 0x679d90bb, 0x02503a7b, 0x9f5fdb0d,
++ 0xe33efed6, 0x7e311fa0, 0xc2ca1813, 0x5fc5f965, 0x23a4dcbe,
++ 0xbeab3dc8, 0xdb669708, 0x4669767e, 0x3a0853a5, 0xa707b2d3,
++ 0xf1930625, 0x6c9ce753, 0x10fdc288, 0x8df223fe, 0xe83f893e,
++ 0x75306848, 0x09514d93, 0x945eace5, 0xa478247f, 0x3977c509,
++ 0x4516e0d2, 0xd81901a4, 0xbdd4ab64, 0x20db4a12, 0x5cba6fc9,
++ 0xc1b58ebf, 0x97213a49, 0x0a2edb3f, 0x764ffee4, 0xeb401f92,
++ 0x8e8db552, 0x13825424, 0x6fe371ff, 0xf2ec9089, 0x0fae60cb,
++ 0x92a181bd, 0xeec0a466, 0x73cf4510, 0x1602efd0, 0x8b0d0ea6,
++ 0xf76c2b7d, 0x6a63ca0b, 0x3cf77efd, 0xa1f89f8b, 0xdd99ba50,
++ 0x40965b26, 0x255bf1e6, 0xb8541090, 0xc435354b, 0x593ad43d,
++ 0x691c5ca7, 0xf413bdd1, 0x8872980a, 0x157d797c, 0x70b0d3bc,
++ 0xedbf32ca, 0x91de1711, 0x0cd1f667, 0x5a454291, 0xc74aa3e7,
++ 0xbb2b863c, 0x2624674a, 0x43e9cd8a, 0xdee62cfc, 0xa2870927,
++ 0x3f88e851},
++ {0x00000000, 0xdd96d985, 0x605cb54b, 0xbdca6cce, 0xc0b96a96,
++ 0x1d2fb313, 0xa0e5dfdd, 0x7d730658, 0x5a03d36d, 0x87950ae8,
++ 0x3a5f6626, 0xe7c9bfa3, 0x9abab9fb, 0x472c607e, 0xfae60cb0,
++ 0x2770d535, 0xb407a6da, 0x69917f5f, 0xd45b1391, 0x09cdca14,
++ 0x74becc4c, 0xa92815c9, 0x14e27907, 0xc974a082, 0xee0475b7,
++ 0x3392ac32, 0x8e58c0fc, 0x53ce1979, 0x2ebd1f21, 0xf32bc6a4,
++ 0x4ee1aa6a, 0x937773ef, 0xb37e4bf5, 0x6ee89270, 0xd322febe,
++ 0x0eb4273b, 0x73c72163, 0xae51f8e6, 0x139b9428, 0xce0d4dad,
++ 0xe97d9898, 0x34eb411d, 0x89212dd3, 0x54b7f456, 0x29c4f20e,
++ 0xf4522b8b, 0x49984745, 0x940e9ec0, 0x0779ed2f, 0xdaef34aa,
++ 0x67255864, 0xbab381e1, 0xc7c087b9, 0x1a565e3c, 0xa79c32f2,
++ 0x7a0aeb77, 0x5d7a3e42, 0x80ece7c7, 0x3d268b09, 0xe0b0528c,
++ 0x9dc354d4, 0x40558d51, 0xfd9fe19f, 0x2009381a, 0xbd8d91ab,
++ 0x601b482e, 0xddd124e0, 0x0047fd65, 0x7d34fb3d, 0xa0a222b8,
++ 0x1d684e76, 0xc0fe97f3, 0xe78e42c6, 0x3a189b43, 0x87d2f78d,
++ 0x5a442e08, 0x27372850, 0xfaa1f1d5, 0x476b9d1b, 0x9afd449e,
++ 0x098a3771, 0xd41ceef4, 0x69d6823a, 0xb4405bbf, 0xc9335de7,
++ 0x14a58462, 0xa96fe8ac, 0x74f93129, 0x5389e41c, 0x8e1f3d99,
++ 0x33d55157, 0xee4388d2, 0x93308e8a, 0x4ea6570f, 0xf36c3bc1,
++ 0x2efae244, 0x0ef3da5e, 0xd36503db, 0x6eaf6f15, 0xb339b690,
++ 0xce4ab0c8, 0x13dc694d, 0xae160583, 0x7380dc06, 0x54f00933,
++ 0x8966d0b6, 0x34acbc78, 0xe93a65fd, 0x944963a5, 0x49dfba20,
++ 0xf415d6ee, 0x29830f6b, 0xbaf47c84, 0x6762a501, 0xdaa8c9cf,
++ 0x073e104a, 0x7a4d1612, 0xa7dbcf97, 0x1a11a359, 0xc7877adc,
++ 0xe0f7afe9, 0x3d61766c, 0x80ab1aa2, 0x5d3dc327, 0x204ec57f,
++ 0xfdd81cfa, 0x40127034, 0x9d84a9b1, 0xa06a2517, 0x7dfcfc92,
++ 0xc036905c, 0x1da049d9, 0x60d34f81, 0xbd459604, 0x008ffaca,
++ 0xdd19234f, 0xfa69f67a, 0x27ff2fff, 0x9a354331, 0x47a39ab4,
++ 0x3ad09cec, 0xe7464569, 0x5a8c29a7, 0x871af022, 0x146d83cd,
++ 0xc9fb5a48, 0x74313686, 0xa9a7ef03, 0xd4d4e95b, 0x094230de,
++ 0xb4885c10, 0x691e8595, 0x4e6e50a0, 0x93f88925, 0x2e32e5eb,
++ 0xf3a43c6e, 0x8ed73a36, 0x5341e3b3, 0xee8b8f7d, 0x331d56f8,
++ 0x13146ee2, 0xce82b767, 0x7348dba9, 0xaede022c, 0xd3ad0474,
++ 0x0e3bddf1, 0xb3f1b13f, 0x6e6768ba, 0x4917bd8f, 0x9481640a,
++ 0x294b08c4, 0xf4ddd141, 0x89aed719, 0x54380e9c, 0xe9f26252,
++ 0x3464bbd7, 0xa713c838, 0x7a8511bd, 0xc74f7d73, 0x1ad9a4f6,
++ 0x67aaa2ae, 0xba3c7b2b, 0x07f617e5, 0xda60ce60, 0xfd101b55,
++ 0x2086c2d0, 0x9d4cae1e, 0x40da779b, 0x3da971c3, 0xe03fa846,
++ 0x5df5c488, 0x80631d0d, 0x1de7b4bc, 0xc0716d39, 0x7dbb01f7,
++ 0xa02dd872, 0xdd5ede2a, 0x00c807af, 0xbd026b61, 0x6094b2e4,
++ 0x47e467d1, 0x9a72be54, 0x27b8d29a, 0xfa2e0b1f, 0x875d0d47,
++ 0x5acbd4c2, 0xe701b80c, 0x3a976189, 0xa9e01266, 0x7476cbe3,
++ 0xc9bca72d, 0x142a7ea8, 0x695978f0, 0xb4cfa175, 0x0905cdbb,
++ 0xd493143e, 0xf3e3c10b, 0x2e75188e, 0x93bf7440, 0x4e29adc5,
++ 0x335aab9d, 0xeecc7218, 0x53061ed6, 0x8e90c753, 0xae99ff49,
++ 0x730f26cc, 0xcec54a02, 0x13539387, 0x6e2095df, 0xb3b64c5a,
++ 0x0e7c2094, 0xd3eaf911, 0xf49a2c24, 0x290cf5a1, 0x94c6996f,
++ 0x495040ea, 0x342346b2, 0xe9b59f37, 0x547ff3f9, 0x89e92a7c,
++ 0x1a9e5993, 0xc7088016, 0x7ac2ecd8, 0xa754355d, 0xda273305,
++ 0x07b1ea80, 0xba7b864e, 0x67ed5fcb, 0x409d8afe, 0x9d0b537b,
++ 0x20c13fb5, 0xfd57e630, 0x8024e068, 0x5db239ed, 0xe0785523,
++ 0x3dee8ca6}};
++
++local const z_word_t FAR crc_braid_big_table[][256] = {
++ {0x00000000, 0x85d996dd, 0x4bb55c60, 0xce6ccabd, 0x966ab9c0,
++ 0x13b32f1d, 0xdddfe5a0, 0x5806737d, 0x6dd3035a, 0xe80a9587,
++ 0x26665f3a, 0xa3bfc9e7, 0xfbb9ba9a, 0x7e602c47, 0xb00ce6fa,
++ 0x35d57027, 0xdaa607b4, 0x5f7f9169, 0x91135bd4, 0x14cacd09,
++ 0x4cccbe74, 0xc91528a9, 0x0779e214, 0x82a074c9, 0xb77504ee,
++ 0x32ac9233, 0xfcc0588e, 0x7919ce53, 0x211fbd2e, 0xa4c62bf3,
++ 0x6aaae14e, 0xef737793, 0xf54b7eb3, 0x7092e86e, 0xbefe22d3,
++ 0x3b27b40e, 0x6321c773, 0xe6f851ae, 0x28949b13, 0xad4d0dce,
++ 0x98987de9, 0x1d41eb34, 0xd32d2189, 0x56f4b754, 0x0ef2c429,
++ 0x8b2b52f4, 0x45479849, 0xc09e0e94, 0x2fed7907, 0xaa34efda,
++ 0x64582567, 0xe181b3ba, 0xb987c0c7, 0x3c5e561a, 0xf2329ca7,
++ 0x77eb0a7a, 0x423e7a5d, 0xc7e7ec80, 0x098b263d, 0x8c52b0e0,
++ 0xd454c39d, 0x518d5540, 0x9fe19ffd, 0x1a380920, 0xab918dbd,
++ 0x2e481b60, 0xe024d1dd, 0x65fd4700, 0x3dfb347d, 0xb822a2a0,
++ 0x764e681d, 0xf397fec0, 0xc6428ee7, 0x439b183a, 0x8df7d287,
++ 0x082e445a, 0x50283727, 0xd5f1a1fa, 0x1b9d6b47, 0x9e44fd9a,
++ 0x71378a09, 0xf4ee1cd4, 0x3a82d669, 0xbf5b40b4, 0xe75d33c9,
++ 0x6284a514, 0xace86fa9, 0x2931f974, 0x1ce48953, 0x993d1f8e,
++ 0x5751d533, 0xd28843ee, 0x8a8e3093, 0x0f57a64e, 0xc13b6cf3,
++ 0x44e2fa2e, 0x5edaf30e, 0xdb0365d3, 0x156faf6e, 0x90b639b3,
++ 0xc8b04ace, 0x4d69dc13, 0x830516ae, 0x06dc8073, 0x3309f054,
++ 0xb6d06689, 0x78bcac34, 0xfd653ae9, 0xa5634994, 0x20badf49,
++ 0xeed615f4, 0x6b0f8329, 0x847cf4ba, 0x01a56267, 0xcfc9a8da,
++ 0x4a103e07, 0x12164d7a, 0x97cfdba7, 0x59a3111a, 0xdc7a87c7,
++ 0xe9aff7e0, 0x6c76613d, 0xa21aab80, 0x27c33d5d, 0x7fc54e20,
++ 0xfa1cd8fd, 0x34701240, 0xb1a9849d, 0x17256aa0, 0x92fcfc7d,
++ 0x5c9036c0, 0xd949a01d, 0x814fd360, 0x049645bd, 0xcafa8f00,
++ 0x4f2319dd, 0x7af669fa, 0xff2fff27, 0x3143359a, 0xb49aa347,
++ 0xec9cd03a, 0x694546e7, 0xa7298c5a, 0x22f01a87, 0xcd836d14,
++ 0x485afbc9, 0x86363174, 0x03efa7a9, 0x5be9d4d4, 0xde304209,
++ 0x105c88b4, 0x95851e69, 0xa0506e4e, 0x2589f893, 0xebe5322e,
++ 0x6e3ca4f3, 0x363ad78e, 0xb3e34153, 0x7d8f8bee, 0xf8561d33,
++ 0xe26e1413, 0x67b782ce, 0xa9db4873, 0x2c02deae, 0x7404add3,
++ 0xf1dd3b0e, 0x3fb1f1b3, 0xba68676e, 0x8fbd1749, 0x0a648194,
++ 0xc4084b29, 0x41d1ddf4, 0x19d7ae89, 0x9c0e3854, 0x5262f2e9,
++ 0xd7bb6434, 0x38c813a7, 0xbd11857a, 0x737d4fc7, 0xf6a4d91a,
++ 0xaea2aa67, 0x2b7b3cba, 0xe517f607, 0x60ce60da, 0x551b10fd,
++ 0xd0c28620, 0x1eae4c9d, 0x9b77da40, 0xc371a93d, 0x46a83fe0,
++ 0x88c4f55d, 0x0d1d6380, 0xbcb4e71d, 0x396d71c0, 0xf701bb7d,
++ 0x72d82da0, 0x2ade5edd, 0xaf07c800, 0x616b02bd, 0xe4b29460,
++ 0xd167e447, 0x54be729a, 0x9ad2b827, 0x1f0b2efa, 0x470d5d87,
++ 0xc2d4cb5a, 0x0cb801e7, 0x8961973a, 0x6612e0a9, 0xe3cb7674,
++ 0x2da7bcc9, 0xa87e2a14, 0xf0785969, 0x75a1cfb4, 0xbbcd0509,
++ 0x3e1493d4, 0x0bc1e3f3, 0x8e18752e, 0x4074bf93, 0xc5ad294e,
++ 0x9dab5a33, 0x1872ccee, 0xd61e0653, 0x53c7908e, 0x49ff99ae,
++ 0xcc260f73, 0x024ac5ce, 0x87935313, 0xdf95206e, 0x5a4cb6b3,
++ 0x94207c0e, 0x11f9ead3, 0x242c9af4, 0xa1f50c29, 0x6f99c694,
++ 0xea405049, 0xb2462334, 0x379fb5e9, 0xf9f37f54, 0x7c2ae989,
++ 0x93599e1a, 0x168008c7, 0xd8ecc27a, 0x5d3554a7, 0x053327da,
++ 0x80eab107, 0x4e867bba, 0xcb5fed67, 0xfe8a9d40, 0x7b530b9d,
++ 0xb53fc120, 0x30e657fd, 0x68e02480, 0xed39b25d, 0x235578e0,
++ 0xa68cee3d},
++ {0x00000000, 0x76e10f9d, 0xadc46ee1, 0xdb25617c, 0x1b8fac19,
++ 0x6d6ea384, 0xb64bc2f8, 0xc0aacd65, 0x361e5933, 0x40ff56ae,
++ 0x9bda37d2, 0xed3b384f, 0x2d91f52a, 0x5b70fab7, 0x80559bcb,
++ 0xf6b49456, 0x6c3cb266, 0x1addbdfb, 0xc1f8dc87, 0xb719d31a,
++ 0x77b31e7f, 0x015211e2, 0xda77709e, 0xac967f03, 0x5a22eb55,
++ 0x2cc3e4c8, 0xf7e685b4, 0x81078a29, 0x41ad474c, 0x374c48d1,
++ 0xec6929ad, 0x9a882630, 0xd87864cd, 0xae996b50, 0x75bc0a2c,
++ 0x035d05b1, 0xc3f7c8d4, 0xb516c749, 0x6e33a635, 0x18d2a9a8,
++ 0xee663dfe, 0x98873263, 0x43a2531f, 0x35435c82, 0xf5e991e7,
++ 0x83089e7a, 0x582dff06, 0x2eccf09b, 0xb444d6ab, 0xc2a5d936,
++ 0x1980b84a, 0x6f61b7d7, 0xafcb7ab2, 0xd92a752f, 0x020f1453,
++ 0x74ee1bce, 0x825a8f98, 0xf4bb8005, 0x2f9ee179, 0x597feee4,
++ 0x99d52381, 0xef342c1c, 0x34114d60, 0x42f042fd, 0xf1f7b941,
++ 0x8716b6dc, 0x5c33d7a0, 0x2ad2d83d, 0xea781558, 0x9c991ac5,
++ 0x47bc7bb9, 0x315d7424, 0xc7e9e072, 0xb108efef, 0x6a2d8e93,
++ 0x1ccc810e, 0xdc664c6b, 0xaa8743f6, 0x71a2228a, 0x07432d17,
++ 0x9dcb0b27, 0xeb2a04ba, 0x300f65c6, 0x46ee6a5b, 0x8644a73e,
++ 0xf0a5a8a3, 0x2b80c9df, 0x5d61c642, 0xabd55214, 0xdd345d89,
++ 0x06113cf5, 0x70f03368, 0xb05afe0d, 0xc6bbf190, 0x1d9e90ec,
++ 0x6b7f9f71, 0x298fdd8c, 0x5f6ed211, 0x844bb36d, 0xf2aabcf0,
++ 0x32007195, 0x44e17e08, 0x9fc41f74, 0xe92510e9, 0x1f9184bf,
++ 0x69708b22, 0xb255ea5e, 0xc4b4e5c3, 0x041e28a6, 0x72ff273b,
++ 0xa9da4647, 0xdf3b49da, 0x45b36fea, 0x33526077, 0xe877010b,
++ 0x9e960e96, 0x5e3cc3f3, 0x28ddcc6e, 0xf3f8ad12, 0x8519a28f,
++ 0x73ad36d9, 0x054c3944, 0xde695838, 0xa88857a5, 0x68229ac0,
++ 0x1ec3955d, 0xc5e6f421, 0xb307fbbc, 0xe2ef7383, 0x940e7c1e,
++ 0x4f2b1d62, 0x39ca12ff, 0xf960df9a, 0x8f81d007, 0x54a4b17b,
++ 0x2245bee6, 0xd4f12ab0, 0xa210252d, 0x79354451, 0x0fd44bcc,
++ 0xcf7e86a9, 0xb99f8934, 0x62bae848, 0x145be7d5, 0x8ed3c1e5,
++ 0xf832ce78, 0x2317af04, 0x55f6a099, 0x955c6dfc, 0xe3bd6261,
++ 0x3898031d, 0x4e790c80, 0xb8cd98d6, 0xce2c974b, 0x1509f637,
++ 0x63e8f9aa, 0xa34234cf, 0xd5a33b52, 0x0e865a2e, 0x786755b3,
++ 0x3a97174e, 0x4c7618d3, 0x975379af, 0xe1b27632, 0x2118bb57,
++ 0x57f9b4ca, 0x8cdcd5b6, 0xfa3dda2b, 0x0c894e7d, 0x7a6841e0,
++ 0xa14d209c, 0xd7ac2f01, 0x1706e264, 0x61e7edf9, 0xbac28c85,
++ 0xcc238318, 0x56aba528, 0x204aaab5, 0xfb6fcbc9, 0x8d8ec454,
++ 0x4d240931, 0x3bc506ac, 0xe0e067d0, 0x9601684d, 0x60b5fc1b,
++ 0x1654f386, 0xcd7192fa, 0xbb909d67, 0x7b3a5002, 0x0ddb5f9f,
++ 0xd6fe3ee3, 0xa01f317e, 0x1318cac2, 0x65f9c55f, 0xbedca423,
++ 0xc83dabbe, 0x089766db, 0x7e766946, 0xa553083a, 0xd3b207a7,
++ 0x250693f1, 0x53e79c6c, 0x88c2fd10, 0xfe23f28d, 0x3e893fe8,
++ 0x48683075, 0x934d5109, 0xe5ac5e94, 0x7f2478a4, 0x09c57739,
++ 0xd2e01645, 0xa40119d8, 0x64abd4bd, 0x124adb20, 0xc96fba5c,
++ 0xbf8eb5c1, 0x493a2197, 0x3fdb2e0a, 0xe4fe4f76, 0x921f40eb,
++ 0x52b58d8e, 0x24548213, 0xff71e36f, 0x8990ecf2, 0xcb60ae0f,
++ 0xbd81a192, 0x66a4c0ee, 0x1045cf73, 0xd0ef0216, 0xa60e0d8b,
++ 0x7d2b6cf7, 0x0bca636a, 0xfd7ef73c, 0x8b9ff8a1, 0x50ba99dd,
++ 0x265b9640, 0xe6f15b25, 0x901054b8, 0x4b3535c4, 0x3dd43a59,
++ 0xa75c1c69, 0xd1bd13f4, 0x0a987288, 0x7c797d15, 0xbcd3b070,
++ 0xca32bfed, 0x1117de91, 0x67f6d10c, 0x9142455a, 0xe7a34ac7,
++ 0x3c862bbb, 0x4a672426, 0x8acde943, 0xfc2ce6de, 0x270987a2,
++ 0x51e8883f},
++ {0x00000000, 0xe8dbfbb9, 0x91b186a8, 0x796a7d11, 0x63657c8a,
++ 0x8bbe8733, 0xf2d4fa22, 0x1a0f019b, 0x87cc89cf, 0x6f177276,
++ 0x167d0f67, 0xfea6f4de, 0xe4a9f545, 0x0c720efc, 0x751873ed,
++ 0x9dc38854, 0x4f9f6244, 0xa74499fd, 0xde2ee4ec, 0x36f51f55,
++ 0x2cfa1ece, 0xc421e577, 0xbd4b9866, 0x559063df, 0xc853eb8b,
++ 0x20881032, 0x59e26d23, 0xb139969a, 0xab369701, 0x43ed6cb8,
++ 0x3a8711a9, 0xd25cea10, 0x9e3ec588, 0x76e53e31, 0x0f8f4320,
++ 0xe754b899, 0xfd5bb902, 0x158042bb, 0x6cea3faa, 0x8431c413,
++ 0x19f24c47, 0xf129b7fe, 0x8843caef, 0x60983156, 0x7a9730cd,
++ 0x924ccb74, 0xeb26b665, 0x03fd4ddc, 0xd1a1a7cc, 0x397a5c75,
++ 0x40102164, 0xa8cbdadd, 0xb2c4db46, 0x5a1f20ff, 0x23755dee,
++ 0xcbaea657, 0x566d2e03, 0xbeb6d5ba, 0xc7dca8ab, 0x2f075312,
++ 0x35085289, 0xddd3a930, 0xa4b9d421, 0x4c622f98, 0x7d7bfbca,
++ 0x95a00073, 0xecca7d62, 0x041186db, 0x1e1e8740, 0xf6c57cf9,
++ 0x8faf01e8, 0x6774fa51, 0xfab77205, 0x126c89bc, 0x6b06f4ad,
++ 0x83dd0f14, 0x99d20e8f, 0x7109f536, 0x08638827, 0xe0b8739e,
++ 0x32e4998e, 0xda3f6237, 0xa3551f26, 0x4b8ee49f, 0x5181e504,
++ 0xb95a1ebd, 0xc03063ac, 0x28eb9815, 0xb5281041, 0x5df3ebf8,
++ 0x249996e9, 0xcc426d50, 0xd64d6ccb, 0x3e969772, 0x47fcea63,
++ 0xaf2711da, 0xe3453e42, 0x0b9ec5fb, 0x72f4b8ea, 0x9a2f4353,
++ 0x802042c8, 0x68fbb971, 0x1191c460, 0xf94a3fd9, 0x6489b78d,
++ 0x8c524c34, 0xf5383125, 0x1de3ca9c, 0x07eccb07, 0xef3730be,
++ 0x965d4daf, 0x7e86b616, 0xacda5c06, 0x4401a7bf, 0x3d6bdaae,
++ 0xd5b02117, 0xcfbf208c, 0x2764db35, 0x5e0ea624, 0xb6d55d9d,
++ 0x2b16d5c9, 0xc3cd2e70, 0xbaa75361, 0x527ca8d8, 0x4873a943,
++ 0xa0a852fa, 0xd9c22feb, 0x3119d452, 0xbbf0874e, 0x532b7cf7,
++ 0x2a4101e6, 0xc29afa5f, 0xd895fbc4, 0x304e007d, 0x49247d6c,
++ 0xa1ff86d5, 0x3c3c0e81, 0xd4e7f538, 0xad8d8829, 0x45567390,
++ 0x5f59720b, 0xb78289b2, 0xcee8f4a3, 0x26330f1a, 0xf46fe50a,
++ 0x1cb41eb3, 0x65de63a2, 0x8d05981b, 0x970a9980, 0x7fd16239,
++ 0x06bb1f28, 0xee60e491, 0x73a36cc5, 0x9b78977c, 0xe212ea6d,
++ 0x0ac911d4, 0x10c6104f, 0xf81debf6, 0x817796e7, 0x69ac6d5e,
++ 0x25ce42c6, 0xcd15b97f, 0xb47fc46e, 0x5ca43fd7, 0x46ab3e4c,
++ 0xae70c5f5, 0xd71ab8e4, 0x3fc1435d, 0xa202cb09, 0x4ad930b0,
++ 0x33b34da1, 0xdb68b618, 0xc167b783, 0x29bc4c3a, 0x50d6312b,
++ 0xb80dca92, 0x6a512082, 0x828adb3b, 0xfbe0a62a, 0x133b5d93,
++ 0x09345c08, 0xe1efa7b1, 0x9885daa0, 0x705e2119, 0xed9da94d,
++ 0x054652f4, 0x7c2c2fe5, 0x94f7d45c, 0x8ef8d5c7, 0x66232e7e,
++ 0x1f49536f, 0xf792a8d6, 0xc68b7c84, 0x2e50873d, 0x573afa2c,
++ 0xbfe10195, 0xa5ee000e, 0x4d35fbb7, 0x345f86a6, 0xdc847d1f,
++ 0x4147f54b, 0xa99c0ef2, 0xd0f673e3, 0x382d885a, 0x222289c1,
++ 0xcaf97278, 0xb3930f69, 0x5b48f4d0, 0x89141ec0, 0x61cfe579,
++ 0x18a59868, 0xf07e63d1, 0xea71624a, 0x02aa99f3, 0x7bc0e4e2,
++ 0x931b1f5b, 0x0ed8970f, 0xe6036cb6, 0x9f6911a7, 0x77b2ea1e,
++ 0x6dbdeb85, 0x8566103c, 0xfc0c6d2d, 0x14d79694, 0x58b5b90c,
++ 0xb06e42b5, 0xc9043fa4, 0x21dfc41d, 0x3bd0c586, 0xd30b3e3f,
++ 0xaa61432e, 0x42bab897, 0xdf7930c3, 0x37a2cb7a, 0x4ec8b66b,
++ 0xa6134dd2, 0xbc1c4c49, 0x54c7b7f0, 0x2dadcae1, 0xc5763158,
++ 0x172adb48, 0xfff120f1, 0x869b5de0, 0x6e40a659, 0x744fa7c2,
++ 0x9c945c7b, 0xe5fe216a, 0x0d25dad3, 0x90e65287, 0x783da93e,
++ 0x0157d42f, 0xe98c2f96, 0xf3832e0d, 0x1b58d5b4, 0x6232a8a5,
++ 0x8ae9531c},
++ {0x00000000, 0x919168ae, 0x6325a087, 0xf2b4c829, 0x874c31d4,
++ 0x16dd597a, 0xe4699153, 0x75f8f9fd, 0x4f9f1373, 0xde0e7bdd,
++ 0x2cbab3f4, 0xbd2bdb5a, 0xc8d322a7, 0x59424a09, 0xabf68220,
++ 0x3a67ea8e, 0x9e3e27e6, 0x0faf4f48, 0xfd1b8761, 0x6c8aefcf,
++ 0x19721632, 0x88e37e9c, 0x7a57b6b5, 0xebc6de1b, 0xd1a13495,
++ 0x40305c3b, 0xb2849412, 0x2315fcbc, 0x56ed0541, 0xc77c6def,
++ 0x35c8a5c6, 0xa459cd68, 0x7d7b3f17, 0xecea57b9, 0x1e5e9f90,
++ 0x8fcff73e, 0xfa370ec3, 0x6ba6666d, 0x9912ae44, 0x0883c6ea,
++ 0x32e42c64, 0xa37544ca, 0x51c18ce3, 0xc050e44d, 0xb5a81db0,
++ 0x2439751e, 0xd68dbd37, 0x471cd599, 0xe34518f1, 0x72d4705f,
++ 0x8060b876, 0x11f1d0d8, 0x64092925, 0xf598418b, 0x072c89a2,
++ 0x96bde10c, 0xacda0b82, 0x3d4b632c, 0xcfffab05, 0x5e6ec3ab,
++ 0x2b963a56, 0xba0752f8, 0x48b39ad1, 0xd922f27f, 0xfaf67e2e,
++ 0x6b671680, 0x99d3dea9, 0x0842b607, 0x7dba4ffa, 0xec2b2754,
++ 0x1e9fef7d, 0x8f0e87d3, 0xb5696d5d, 0x24f805f3, 0xd64ccdda,
++ 0x47dda574, 0x32255c89, 0xa3b43427, 0x5100fc0e, 0xc09194a0,
++ 0x64c859c8, 0xf5593166, 0x07edf94f, 0x967c91e1, 0xe384681c,
++ 0x721500b2, 0x80a1c89b, 0x1130a035, 0x2b574abb, 0xbac62215,
++ 0x4872ea3c, 0xd9e38292, 0xac1b7b6f, 0x3d8a13c1, 0xcf3edbe8,
++ 0x5eafb346, 0x878d4139, 0x161c2997, 0xe4a8e1be, 0x75398910,
++ 0x00c170ed, 0x91501843, 0x63e4d06a, 0xf275b8c4, 0xc812524a,
++ 0x59833ae4, 0xab37f2cd, 0x3aa69a63, 0x4f5e639e, 0xdecf0b30,
++ 0x2c7bc319, 0xbdeaabb7, 0x19b366df, 0x88220e71, 0x7a96c658,
++ 0xeb07aef6, 0x9eff570b, 0x0f6e3fa5, 0xfddaf78c, 0x6c4b9f22,
++ 0x562c75ac, 0xc7bd1d02, 0x3509d52b, 0xa498bd85, 0xd1604478,
++ 0x40f12cd6, 0xb245e4ff, 0x23d48c51, 0xf4edfd5c, 0x657c95f2,
++ 0x97c85ddb, 0x06593575, 0x73a1cc88, 0xe230a426, 0x10846c0f,
++ 0x811504a1, 0xbb72ee2f, 0x2ae38681, 0xd8574ea8, 0x49c62606,
++ 0x3c3edffb, 0xadafb755, 0x5f1b7f7c, 0xce8a17d2, 0x6ad3daba,
++ 0xfb42b214, 0x09f67a3d, 0x98671293, 0xed9feb6e, 0x7c0e83c0,
++ 0x8eba4be9, 0x1f2b2347, 0x254cc9c9, 0xb4dda167, 0x4669694e,
++ 0xd7f801e0, 0xa200f81d, 0x339190b3, 0xc125589a, 0x50b43034,
++ 0x8996c24b, 0x1807aae5, 0xeab362cc, 0x7b220a62, 0x0edaf39f,
++ 0x9f4b9b31, 0x6dff5318, 0xfc6e3bb6, 0xc609d138, 0x5798b996,
++ 0xa52c71bf, 0x34bd1911, 0x4145e0ec, 0xd0d48842, 0x2260406b,
++ 0xb3f128c5, 0x17a8e5ad, 0x86398d03, 0x748d452a, 0xe51c2d84,
++ 0x90e4d479, 0x0175bcd7, 0xf3c174fe, 0x62501c50, 0x5837f6de,
++ 0xc9a69e70, 0x3b125659, 0xaa833ef7, 0xdf7bc70a, 0x4eeaafa4,
++ 0xbc5e678d, 0x2dcf0f23, 0x0e1b8372, 0x9f8aebdc, 0x6d3e23f5,
++ 0xfcaf4b5b, 0x8957b2a6, 0x18c6da08, 0xea721221, 0x7be37a8f,
++ 0x41849001, 0xd015f8af, 0x22a13086, 0xb3305828, 0xc6c8a1d5,
++ 0x5759c97b, 0xa5ed0152, 0x347c69fc, 0x9025a494, 0x01b4cc3a,
++ 0xf3000413, 0x62916cbd, 0x17699540, 0x86f8fdee, 0x744c35c7,
++ 0xe5dd5d69, 0xdfbab7e7, 0x4e2bdf49, 0xbc9f1760, 0x2d0e7fce,
++ 0x58f68633, 0xc967ee9d, 0x3bd326b4, 0xaa424e1a, 0x7360bc65,
++ 0xe2f1d4cb, 0x10451ce2, 0x81d4744c, 0xf42c8db1, 0x65bde51f,
++ 0x97092d36, 0x06984598, 0x3cffaf16, 0xad6ec7b8, 0x5fda0f91,
++ 0xce4b673f, 0xbbb39ec2, 0x2a22f66c, 0xd8963e45, 0x490756eb,
++ 0xed5e9b83, 0x7ccff32d, 0x8e7b3b04, 0x1fea53aa, 0x6a12aa57,
++ 0xfb83c2f9, 0x09370ad0, 0x98a6627e, 0xa2c188f0, 0x3350e05e,
++ 0xc1e42877, 0x507540d9, 0x258db924, 0xb41cd18a, 0x46a819a3,
++ 0xd739710d}};
++
++#endif
++
++#endif
++
++#if N == 5
++
++#if W == 8
++
++local const z_crc_t FAR crc_braid_table[][256] = {
++ {0x00000000, 0xaf449247, 0x85f822cf, 0x2abcb088, 0xd08143df,
++ 0x7fc5d198, 0x55796110, 0xfa3df357, 0x7a7381ff, 0xd53713b8,
++ 0xff8ba330, 0x50cf3177, 0xaaf2c220, 0x05b65067, 0x2f0ae0ef,
++ 0x804e72a8, 0xf4e703fe, 0x5ba391b9, 0x711f2131, 0xde5bb376,
++ 0x24664021, 0x8b22d266, 0xa19e62ee, 0x0edaf0a9, 0x8e948201,
++ 0x21d01046, 0x0b6ca0ce, 0xa4283289, 0x5e15c1de, 0xf1515399,
++ 0xdbede311, 0x74a97156, 0x32bf01bd, 0x9dfb93fa, 0xb7472372,
++ 0x1803b135, 0xe23e4262, 0x4d7ad025, 0x67c660ad, 0xc882f2ea,
++ 0x48cc8042, 0xe7881205, 0xcd34a28d, 0x627030ca, 0x984dc39d,
++ 0x370951da, 0x1db5e152, 0xb2f17315, 0xc6580243, 0x691c9004,
++ 0x43a0208c, 0xece4b2cb, 0x16d9419c, 0xb99dd3db, 0x93216353,
++ 0x3c65f114, 0xbc2b83bc, 0x136f11fb, 0x39d3a173, 0x96973334,
++ 0x6caac063, 0xc3ee5224, 0xe952e2ac, 0x461670eb, 0x657e037a,
++ 0xca3a913d, 0xe08621b5, 0x4fc2b3f2, 0xb5ff40a5, 0x1abbd2e2,
++ 0x3007626a, 0x9f43f02d, 0x1f0d8285, 0xb04910c2, 0x9af5a04a,
++ 0x35b1320d, 0xcf8cc15a, 0x60c8531d, 0x4a74e395, 0xe53071d2,
++ 0x91990084, 0x3edd92c3, 0x1461224b, 0xbb25b00c, 0x4118435b,
++ 0xee5cd11c, 0xc4e06194, 0x6ba4f3d3, 0xebea817b, 0x44ae133c,
++ 0x6e12a3b4, 0xc15631f3, 0x3b6bc2a4, 0x942f50e3, 0xbe93e06b,
++ 0x11d7722c, 0x57c102c7, 0xf8859080, 0xd2392008, 0x7d7db24f,
++ 0x87404118, 0x2804d35f, 0x02b863d7, 0xadfcf190, 0x2db28338,
++ 0x82f6117f, 0xa84aa1f7, 0x070e33b0, 0xfd33c0e7, 0x527752a0,
++ 0x78cbe228, 0xd78f706f, 0xa3260139, 0x0c62937e, 0x26de23f6,
++ 0x899ab1b1, 0x73a742e6, 0xdce3d0a1, 0xf65f6029, 0x591bf26e,
++ 0xd95580c6, 0x76111281, 0x5cada209, 0xf3e9304e, 0x09d4c319,
++ 0xa690515e, 0x8c2ce1d6, 0x23687391, 0xcafc06f4, 0x65b894b3,
++ 0x4f04243b, 0xe040b67c, 0x1a7d452b, 0xb539d76c, 0x9f8567e4,
++ 0x30c1f5a3, 0xb08f870b, 0x1fcb154c, 0x3577a5c4, 0x9a333783,
++ 0x600ec4d4, 0xcf4a5693, 0xe5f6e61b, 0x4ab2745c, 0x3e1b050a,
++ 0x915f974d, 0xbbe327c5, 0x14a7b582, 0xee9a46d5, 0x41ded492,
++ 0x6b62641a, 0xc426f65d, 0x446884f5, 0xeb2c16b2, 0xc190a63a,
++ 0x6ed4347d, 0x94e9c72a, 0x3bad556d, 0x1111e5e5, 0xbe5577a2,
++ 0xf8430749, 0x5707950e, 0x7dbb2586, 0xd2ffb7c1, 0x28c24496,
++ 0x8786d6d1, 0xad3a6659, 0x027ef41e, 0x823086b6, 0x2d7414f1,
++ 0x07c8a479, 0xa88c363e, 0x52b1c569, 0xfdf5572e, 0xd749e7a6,
++ 0x780d75e1, 0x0ca404b7, 0xa3e096f0, 0x895c2678, 0x2618b43f,
++ 0xdc254768, 0x7361d52f, 0x59dd65a7, 0xf699f7e0, 0x76d78548,
++ 0xd993170f, 0xf32fa787, 0x5c6b35c0, 0xa656c697, 0x091254d0,
++ 0x23aee458, 0x8cea761f, 0xaf82058e, 0x00c697c9, 0x2a7a2741,
++ 0x853eb506, 0x7f034651, 0xd047d416, 0xfafb649e, 0x55bff6d9,
++ 0xd5f18471, 0x7ab51636, 0x5009a6be, 0xff4d34f9, 0x0570c7ae,
++ 0xaa3455e9, 0x8088e561, 0x2fcc7726, 0x5b650670, 0xf4219437,
++ 0xde9d24bf, 0x71d9b6f8, 0x8be445af, 0x24a0d7e8, 0x0e1c6760,
++ 0xa158f527, 0x2116878f, 0x8e5215c8, 0xa4eea540, 0x0baa3707,
++ 0xf197c450, 0x5ed35617, 0x746fe69f, 0xdb2b74d8, 0x9d3d0433,
++ 0x32799674, 0x18c526fc, 0xb781b4bb, 0x4dbc47ec, 0xe2f8d5ab,
++ 0xc8446523, 0x6700f764, 0xe74e85cc, 0x480a178b, 0x62b6a703,
++ 0xcdf23544, 0x37cfc613, 0x988b5454, 0xb237e4dc, 0x1d73769b,
++ 0x69da07cd, 0xc69e958a, 0xec222502, 0x4366b745, 0xb95b4412,
++ 0x161fd655, 0x3ca366dd, 0x93e7f49a, 0x13a98632, 0xbced1475,
++ 0x9651a4fd, 0x391536ba, 0xc328c5ed, 0x6c6c57aa, 0x46d0e722,
++ 0xe9947565},
++ {0x00000000, 0x4e890ba9, 0x9d121752, 0xd39b1cfb, 0xe15528e5,
++ 0xafdc234c, 0x7c473fb7, 0x32ce341e, 0x19db578b, 0x57525c22,
++ 0x84c940d9, 0xca404b70, 0xf88e7f6e, 0xb60774c7, 0x659c683c,
++ 0x2b156395, 0x33b6af16, 0x7d3fa4bf, 0xaea4b844, 0xe02db3ed,
++ 0xd2e387f3, 0x9c6a8c5a, 0x4ff190a1, 0x01789b08, 0x2a6df89d,
++ 0x64e4f334, 0xb77fefcf, 0xf9f6e466, 0xcb38d078, 0x85b1dbd1,
++ 0x562ac72a, 0x18a3cc83, 0x676d5e2c, 0x29e45585, 0xfa7f497e,
++ 0xb4f642d7, 0x863876c9, 0xc8b17d60, 0x1b2a619b, 0x55a36a32,
++ 0x7eb609a7, 0x303f020e, 0xe3a41ef5, 0xad2d155c, 0x9fe32142,
++ 0xd16a2aeb, 0x02f13610, 0x4c783db9, 0x54dbf13a, 0x1a52fa93,
++ 0xc9c9e668, 0x8740edc1, 0xb58ed9df, 0xfb07d276, 0x289cce8d,
++ 0x6615c524, 0x4d00a6b1, 0x0389ad18, 0xd012b1e3, 0x9e9bba4a,
++ 0xac558e54, 0xe2dc85fd, 0x31479906, 0x7fce92af, 0xcedabc58,
++ 0x8053b7f1, 0x53c8ab0a, 0x1d41a0a3, 0x2f8f94bd, 0x61069f14,
++ 0xb29d83ef, 0xfc148846, 0xd701ebd3, 0x9988e07a, 0x4a13fc81,
++ 0x049af728, 0x3654c336, 0x78ddc89f, 0xab46d464, 0xe5cfdfcd,
++ 0xfd6c134e, 0xb3e518e7, 0x607e041c, 0x2ef70fb5, 0x1c393bab,
++ 0x52b03002, 0x812b2cf9, 0xcfa22750, 0xe4b744c5, 0xaa3e4f6c,
++ 0x79a55397, 0x372c583e, 0x05e26c20, 0x4b6b6789, 0x98f07b72,
++ 0xd67970db, 0xa9b7e274, 0xe73ee9dd, 0x34a5f526, 0x7a2cfe8f,
++ 0x48e2ca91, 0x066bc138, 0xd5f0ddc3, 0x9b79d66a, 0xb06cb5ff,
++ 0xfee5be56, 0x2d7ea2ad, 0x63f7a904, 0x51399d1a, 0x1fb096b3,
++ 0xcc2b8a48, 0x82a281e1, 0x9a014d62, 0xd48846cb, 0x07135a30,
++ 0x499a5199, 0x7b546587, 0x35dd6e2e, 0xe64672d5, 0xa8cf797c,
++ 0x83da1ae9, 0xcd531140, 0x1ec80dbb, 0x50410612, 0x628f320c,
++ 0x2c0639a5, 0xff9d255e, 0xb1142ef7, 0x46c47ef1, 0x084d7558,
++ 0xdbd669a3, 0x955f620a, 0xa7915614, 0xe9185dbd, 0x3a834146,
++ 0x740a4aef, 0x5f1f297a, 0x119622d3, 0xc20d3e28, 0x8c843581,
++ 0xbe4a019f, 0xf0c30a36, 0x235816cd, 0x6dd11d64, 0x7572d1e7,
++ 0x3bfbda4e, 0xe860c6b5, 0xa6e9cd1c, 0x9427f902, 0xdaaef2ab,
++ 0x0935ee50, 0x47bce5f9, 0x6ca9866c, 0x22208dc5, 0xf1bb913e,
++ 0xbf329a97, 0x8dfcae89, 0xc375a520, 0x10eeb9db, 0x5e67b272,
++ 0x21a920dd, 0x6f202b74, 0xbcbb378f, 0xf2323c26, 0xc0fc0838,
++ 0x8e750391, 0x5dee1f6a, 0x136714c3, 0x38727756, 0x76fb7cff,
++ 0xa5606004, 0xebe96bad, 0xd9275fb3, 0x97ae541a, 0x443548e1,
++ 0x0abc4348, 0x121f8fcb, 0x5c968462, 0x8f0d9899, 0xc1849330,
++ 0xf34aa72e, 0xbdc3ac87, 0x6e58b07c, 0x20d1bbd5, 0x0bc4d840,
++ 0x454dd3e9, 0x96d6cf12, 0xd85fc4bb, 0xea91f0a5, 0xa418fb0c,
++ 0x7783e7f7, 0x390aec5e, 0x881ec2a9, 0xc697c900, 0x150cd5fb,
++ 0x5b85de52, 0x694bea4c, 0x27c2e1e5, 0xf459fd1e, 0xbad0f6b7,
++ 0x91c59522, 0xdf4c9e8b, 0x0cd78270, 0x425e89d9, 0x7090bdc7,
++ 0x3e19b66e, 0xed82aa95, 0xa30ba13c, 0xbba86dbf, 0xf5216616,
++ 0x26ba7aed, 0x68337144, 0x5afd455a, 0x14744ef3, 0xc7ef5208,
++ 0x896659a1, 0xa2733a34, 0xecfa319d, 0x3f612d66, 0x71e826cf,
++ 0x432612d1, 0x0daf1978, 0xde340583, 0x90bd0e2a, 0xef739c85,
++ 0xa1fa972c, 0x72618bd7, 0x3ce8807e, 0x0e26b460, 0x40afbfc9,
++ 0x9334a332, 0xddbda89b, 0xf6a8cb0e, 0xb821c0a7, 0x6bbadc5c,
++ 0x2533d7f5, 0x17fde3eb, 0x5974e842, 0x8aeff4b9, 0xc466ff10,
++ 0xdcc53393, 0x924c383a, 0x41d724c1, 0x0f5e2f68, 0x3d901b76,
++ 0x731910df, 0xa0820c24, 0xee0b078d, 0xc51e6418, 0x8b976fb1,
++ 0x580c734a, 0x168578e3, 0x244b4cfd, 0x6ac24754, 0xb9595baf,
++ 0xf7d05006},
++ {0x00000000, 0x8d88fde2, 0xc060fd85, 0x4de80067, 0x5bb0fd4b,
++ 0xd63800a9, 0x9bd000ce, 0x1658fd2c, 0xb761fa96, 0x3ae90774,
++ 0x77010713, 0xfa89faf1, 0xecd107dd, 0x6159fa3f, 0x2cb1fa58,
++ 0xa13907ba, 0xb5b2f36d, 0x383a0e8f, 0x75d20ee8, 0xf85af30a,
++ 0xee020e26, 0x638af3c4, 0x2e62f3a3, 0xa3ea0e41, 0x02d309fb,
++ 0x8f5bf419, 0xc2b3f47e, 0x4f3b099c, 0x5963f4b0, 0xd4eb0952,
++ 0x99030935, 0x148bf4d7, 0xb014e09b, 0x3d9c1d79, 0x70741d1e,
++ 0xfdfce0fc, 0xeba41dd0, 0x662ce032, 0x2bc4e055, 0xa64c1db7,
++ 0x07751a0d, 0x8afde7ef, 0xc715e788, 0x4a9d1a6a, 0x5cc5e746,
++ 0xd14d1aa4, 0x9ca51ac3, 0x112de721, 0x05a613f6, 0x882eee14,
++ 0xc5c6ee73, 0x484e1391, 0x5e16eebd, 0xd39e135f, 0x9e761338,
++ 0x13feeeda, 0xb2c7e960, 0x3f4f1482, 0x72a714e5, 0xff2fe907,
++ 0xe977142b, 0x64ffe9c9, 0x2917e9ae, 0xa49f144c, 0xbb58c777,
++ 0x36d03a95, 0x7b383af2, 0xf6b0c710, 0xe0e83a3c, 0x6d60c7de,
++ 0x2088c7b9, 0xad003a5b, 0x0c393de1, 0x81b1c003, 0xcc59c064,
++ 0x41d13d86, 0x5789c0aa, 0xda013d48, 0x97e93d2f, 0x1a61c0cd,
++ 0x0eea341a, 0x8362c9f8, 0xce8ac99f, 0x4302347d, 0x555ac951,
++ 0xd8d234b3, 0x953a34d4, 0x18b2c936, 0xb98bce8c, 0x3403336e,
++ 0x79eb3309, 0xf463ceeb, 0xe23b33c7, 0x6fb3ce25, 0x225bce42,
++ 0xafd333a0, 0x0b4c27ec, 0x86c4da0e, 0xcb2cda69, 0x46a4278b,
++ 0x50fcdaa7, 0xdd742745, 0x909c2722, 0x1d14dac0, 0xbc2ddd7a,
++ 0x31a52098, 0x7c4d20ff, 0xf1c5dd1d, 0xe79d2031, 0x6a15ddd3,
++ 0x27fdddb4, 0xaa752056, 0xbefed481, 0x33762963, 0x7e9e2904,
++ 0xf316d4e6, 0xe54e29ca, 0x68c6d428, 0x252ed44f, 0xa8a629ad,
++ 0x099f2e17, 0x8417d3f5, 0xc9ffd392, 0x44772e70, 0x522fd35c,
++ 0xdfa72ebe, 0x924f2ed9, 0x1fc7d33b, 0xadc088af, 0x2048754d,
++ 0x6da0752a, 0xe02888c8, 0xf67075e4, 0x7bf88806, 0x36108861,
++ 0xbb987583, 0x1aa17239, 0x97298fdb, 0xdac18fbc, 0x5749725e,
++ 0x41118f72, 0xcc997290, 0x817172f7, 0x0cf98f15, 0x18727bc2,
++ 0x95fa8620, 0xd8128647, 0x559a7ba5, 0x43c28689, 0xce4a7b6b,
++ 0x83a27b0c, 0x0e2a86ee, 0xaf138154, 0x229b7cb6, 0x6f737cd1,
++ 0xe2fb8133, 0xf4a37c1f, 0x792b81fd, 0x34c3819a, 0xb94b7c78,
++ 0x1dd46834, 0x905c95d6, 0xddb495b1, 0x503c6853, 0x4664957f,
++ 0xcbec689d, 0x860468fa, 0x0b8c9518, 0xaab592a2, 0x273d6f40,
++ 0x6ad56f27, 0xe75d92c5, 0xf1056fe9, 0x7c8d920b, 0x3165926c,
++ 0xbced6f8e, 0xa8669b59, 0x25ee66bb, 0x680666dc, 0xe58e9b3e,
++ 0xf3d66612, 0x7e5e9bf0, 0x33b69b97, 0xbe3e6675, 0x1f0761cf,
++ 0x928f9c2d, 0xdf679c4a, 0x52ef61a8, 0x44b79c84, 0xc93f6166,
++ 0x84d76101, 0x095f9ce3, 0x16984fd8, 0x9b10b23a, 0xd6f8b25d,
++ 0x5b704fbf, 0x4d28b293, 0xc0a04f71, 0x8d484f16, 0x00c0b2f4,
++ 0xa1f9b54e, 0x2c7148ac, 0x619948cb, 0xec11b529, 0xfa494805,
++ 0x77c1b5e7, 0x3a29b580, 0xb7a14862, 0xa32abcb5, 0x2ea24157,
++ 0x634a4130, 0xeec2bcd2, 0xf89a41fe, 0x7512bc1c, 0x38fabc7b,
++ 0xb5724199, 0x144b4623, 0x99c3bbc1, 0xd42bbba6, 0x59a34644,
++ 0x4ffbbb68, 0xc273468a, 0x8f9b46ed, 0x0213bb0f, 0xa68caf43,
++ 0x2b0452a1, 0x66ec52c6, 0xeb64af24, 0xfd3c5208, 0x70b4afea,
++ 0x3d5caf8d, 0xb0d4526f, 0x11ed55d5, 0x9c65a837, 0xd18da850,
++ 0x5c0555b2, 0x4a5da89e, 0xc7d5557c, 0x8a3d551b, 0x07b5a8f9,
++ 0x133e5c2e, 0x9eb6a1cc, 0xd35ea1ab, 0x5ed65c49, 0x488ea165,
++ 0xc5065c87, 0x88ee5ce0, 0x0566a102, 0xa45fa6b8, 0x29d75b5a,
++ 0x643f5b3d, 0xe9b7a6df, 0xffef5bf3, 0x7267a611, 0x3f8fa676,
++ 0xb2075b94},
++ {0x00000000, 0x80f0171f, 0xda91287f, 0x5a613f60, 0x6e5356bf,
++ 0xeea341a0, 0xb4c27ec0, 0x343269df, 0xdca6ad7e, 0x5c56ba61,
++ 0x06378501, 0x86c7921e, 0xb2f5fbc1, 0x3205ecde, 0x6864d3be,
++ 0xe894c4a1, 0x623c5cbd, 0xe2cc4ba2, 0xb8ad74c2, 0x385d63dd,
++ 0x0c6f0a02, 0x8c9f1d1d, 0xd6fe227d, 0x560e3562, 0xbe9af1c3,
++ 0x3e6ae6dc, 0x640bd9bc, 0xe4fbcea3, 0xd0c9a77c, 0x5039b063,
++ 0x0a588f03, 0x8aa8981c, 0xc478b97a, 0x4488ae65, 0x1ee99105,
++ 0x9e19861a, 0xaa2befc5, 0x2adbf8da, 0x70bac7ba, 0xf04ad0a5,
++ 0x18de1404, 0x982e031b, 0xc24f3c7b, 0x42bf2b64, 0x768d42bb,
++ 0xf67d55a4, 0xac1c6ac4, 0x2cec7ddb, 0xa644e5c7, 0x26b4f2d8,
++ 0x7cd5cdb8, 0xfc25daa7, 0xc817b378, 0x48e7a467, 0x12869b07,
++ 0x92768c18, 0x7ae248b9, 0xfa125fa6, 0xa07360c6, 0x208377d9,
++ 0x14b11e06, 0x94410919, 0xce203679, 0x4ed02166, 0x538074b5,
++ 0xd37063aa, 0x89115cca, 0x09e14bd5, 0x3dd3220a, 0xbd233515,
++ 0xe7420a75, 0x67b21d6a, 0x8f26d9cb, 0x0fd6ced4, 0x55b7f1b4,
++ 0xd547e6ab, 0xe1758f74, 0x6185986b, 0x3be4a70b, 0xbb14b014,
++ 0x31bc2808, 0xb14c3f17, 0xeb2d0077, 0x6bdd1768, 0x5fef7eb7,
++ 0xdf1f69a8, 0x857e56c8, 0x058e41d7, 0xed1a8576, 0x6dea9269,
++ 0x378bad09, 0xb77bba16, 0x8349d3c9, 0x03b9c4d6, 0x59d8fbb6,
++ 0xd928eca9, 0x97f8cdcf, 0x1708dad0, 0x4d69e5b0, 0xcd99f2af,
++ 0xf9ab9b70, 0x795b8c6f, 0x233ab30f, 0xa3caa410, 0x4b5e60b1,
++ 0xcbae77ae, 0x91cf48ce, 0x113f5fd1, 0x250d360e, 0xa5fd2111,
++ 0xff9c1e71, 0x7f6c096e, 0xf5c49172, 0x7534866d, 0x2f55b90d,
++ 0xafa5ae12, 0x9b97c7cd, 0x1b67d0d2, 0x4106efb2, 0xc1f6f8ad,
++ 0x29623c0c, 0xa9922b13, 0xf3f31473, 0x7303036c, 0x47316ab3,
++ 0xc7c17dac, 0x9da042cc, 0x1d5055d3, 0xa700e96a, 0x27f0fe75,
++ 0x7d91c115, 0xfd61d60a, 0xc953bfd5, 0x49a3a8ca, 0x13c297aa,
++ 0x933280b5, 0x7ba64414, 0xfb56530b, 0xa1376c6b, 0x21c77b74,
++ 0x15f512ab, 0x950505b4, 0xcf643ad4, 0x4f942dcb, 0xc53cb5d7,
++ 0x45cca2c8, 0x1fad9da8, 0x9f5d8ab7, 0xab6fe368, 0x2b9ff477,
++ 0x71fecb17, 0xf10edc08, 0x199a18a9, 0x996a0fb6, 0xc30b30d6,
++ 0x43fb27c9, 0x77c94e16, 0xf7395909, 0xad586669, 0x2da87176,
++ 0x63785010, 0xe388470f, 0xb9e9786f, 0x39196f70, 0x0d2b06af,
++ 0x8ddb11b0, 0xd7ba2ed0, 0x574a39cf, 0xbfdefd6e, 0x3f2eea71,
++ 0x654fd511, 0xe5bfc20e, 0xd18dabd1, 0x517dbcce, 0x0b1c83ae,
++ 0x8bec94b1, 0x01440cad, 0x81b41bb2, 0xdbd524d2, 0x5b2533cd,
++ 0x6f175a12, 0xefe74d0d, 0xb586726d, 0x35766572, 0xdde2a1d3,
++ 0x5d12b6cc, 0x077389ac, 0x87839eb3, 0xb3b1f76c, 0x3341e073,
++ 0x6920df13, 0xe9d0c80c, 0xf4809ddf, 0x74708ac0, 0x2e11b5a0,
++ 0xaee1a2bf, 0x9ad3cb60, 0x1a23dc7f, 0x4042e31f, 0xc0b2f400,
++ 0x282630a1, 0xa8d627be, 0xf2b718de, 0x72470fc1, 0x4675661e,
++ 0xc6857101, 0x9ce44e61, 0x1c14597e, 0x96bcc162, 0x164cd67d,
++ 0x4c2de91d, 0xccddfe02, 0xf8ef97dd, 0x781f80c2, 0x227ebfa2,
++ 0xa28ea8bd, 0x4a1a6c1c, 0xcaea7b03, 0x908b4463, 0x107b537c,
++ 0x24493aa3, 0xa4b92dbc, 0xfed812dc, 0x7e2805c3, 0x30f824a5,
++ 0xb00833ba, 0xea690cda, 0x6a991bc5, 0x5eab721a, 0xde5b6505,
++ 0x843a5a65, 0x04ca4d7a, 0xec5e89db, 0x6cae9ec4, 0x36cfa1a4,
++ 0xb63fb6bb, 0x820ddf64, 0x02fdc87b, 0x589cf71b, 0xd86ce004,
++ 0x52c47818, 0xd2346f07, 0x88555067, 0x08a54778, 0x3c972ea7,
++ 0xbc6739b8, 0xe60606d8, 0x66f611c7, 0x8e62d566, 0x0e92c279,
++ 0x54f3fd19, 0xd403ea06, 0xe03183d9, 0x60c194c6, 0x3aa0aba6,
++ 0xba50bcb9},
++ {0x00000000, 0x9570d495, 0xf190af6b, 0x64e07bfe, 0x38505897,
++ 0xad208c02, 0xc9c0f7fc, 0x5cb02369, 0x70a0b12e, 0xe5d065bb,
++ 0x81301e45, 0x1440cad0, 0x48f0e9b9, 0xdd803d2c, 0xb96046d2,
++ 0x2c109247, 0xe141625c, 0x7431b6c9, 0x10d1cd37, 0x85a119a2,
++ 0xd9113acb, 0x4c61ee5e, 0x288195a0, 0xbdf14135, 0x91e1d372,
++ 0x049107e7, 0x60717c19, 0xf501a88c, 0xa9b18be5, 0x3cc15f70,
++ 0x5821248e, 0xcd51f01b, 0x19f3c2f9, 0x8c83166c, 0xe8636d92,
++ 0x7d13b907, 0x21a39a6e, 0xb4d34efb, 0xd0333505, 0x4543e190,
++ 0x695373d7, 0xfc23a742, 0x98c3dcbc, 0x0db30829, 0x51032b40,
++ 0xc473ffd5, 0xa093842b, 0x35e350be, 0xf8b2a0a5, 0x6dc27430,
++ 0x09220fce, 0x9c52db5b, 0xc0e2f832, 0x55922ca7, 0x31725759,
++ 0xa40283cc, 0x8812118b, 0x1d62c51e, 0x7982bee0, 0xecf26a75,
++ 0xb042491c, 0x25329d89, 0x41d2e677, 0xd4a232e2, 0x33e785f2,
++ 0xa6975167, 0xc2772a99, 0x5707fe0c, 0x0bb7dd65, 0x9ec709f0,
++ 0xfa27720e, 0x6f57a69b, 0x434734dc, 0xd637e049, 0xb2d79bb7,
++ 0x27a74f22, 0x7b176c4b, 0xee67b8de, 0x8a87c320, 0x1ff717b5,
++ 0xd2a6e7ae, 0x47d6333b, 0x233648c5, 0xb6469c50, 0xeaf6bf39,
++ 0x7f866bac, 0x1b661052, 0x8e16c4c7, 0xa2065680, 0x37768215,
++ 0x5396f9eb, 0xc6e62d7e, 0x9a560e17, 0x0f26da82, 0x6bc6a17c,
++ 0xfeb675e9, 0x2a14470b, 0xbf64939e, 0xdb84e860, 0x4ef43cf5,
++ 0x12441f9c, 0x8734cb09, 0xe3d4b0f7, 0x76a46462, 0x5ab4f625,
++ 0xcfc422b0, 0xab24594e, 0x3e548ddb, 0x62e4aeb2, 0xf7947a27,
++ 0x937401d9, 0x0604d54c, 0xcb552557, 0x5e25f1c2, 0x3ac58a3c,
++ 0xafb55ea9, 0xf3057dc0, 0x6675a955, 0x0295d2ab, 0x97e5063e,
++ 0xbbf59479, 0x2e8540ec, 0x4a653b12, 0xdf15ef87, 0x83a5ccee,
++ 0x16d5187b, 0x72356385, 0xe745b710, 0x67cf0be4, 0xf2bfdf71,
++ 0x965fa48f, 0x032f701a, 0x5f9f5373, 0xcaef87e6, 0xae0ffc18,
++ 0x3b7f288d, 0x176fbaca, 0x821f6e5f, 0xe6ff15a1, 0x738fc134,
++ 0x2f3fe25d, 0xba4f36c8, 0xdeaf4d36, 0x4bdf99a3, 0x868e69b8,
++ 0x13febd2d, 0x771ec6d3, 0xe26e1246, 0xbede312f, 0x2baee5ba,
++ 0x4f4e9e44, 0xda3e4ad1, 0xf62ed896, 0x635e0c03, 0x07be77fd,
++ 0x92cea368, 0xce7e8001, 0x5b0e5494, 0x3fee2f6a, 0xaa9efbff,
++ 0x7e3cc91d, 0xeb4c1d88, 0x8fac6676, 0x1adcb2e3, 0x466c918a,
++ 0xd31c451f, 0xb7fc3ee1, 0x228cea74, 0x0e9c7833, 0x9becaca6,
++ 0xff0cd758, 0x6a7c03cd, 0x36cc20a4, 0xa3bcf431, 0xc75c8fcf,
++ 0x522c5b5a, 0x9f7dab41, 0x0a0d7fd4, 0x6eed042a, 0xfb9dd0bf,
++ 0xa72df3d6, 0x325d2743, 0x56bd5cbd, 0xc3cd8828, 0xefdd1a6f,
++ 0x7aadcefa, 0x1e4db504, 0x8b3d6191, 0xd78d42f8, 0x42fd966d,
++ 0x261ded93, 0xb36d3906, 0x54288e16, 0xc1585a83, 0xa5b8217d,
++ 0x30c8f5e8, 0x6c78d681, 0xf9080214, 0x9de879ea, 0x0898ad7f,
++ 0x24883f38, 0xb1f8ebad, 0xd5189053, 0x406844c6, 0x1cd867af,
++ 0x89a8b33a, 0xed48c8c4, 0x78381c51, 0xb569ec4a, 0x201938df,
++ 0x44f94321, 0xd18997b4, 0x8d39b4dd, 0x18496048, 0x7ca91bb6,
++ 0xe9d9cf23, 0xc5c95d64, 0x50b989f1, 0x3459f20f, 0xa129269a,
++ 0xfd9905f3, 0x68e9d166, 0x0c09aa98, 0x99797e0d, 0x4ddb4cef,
++ 0xd8ab987a, 0xbc4be384, 0x293b3711, 0x758b1478, 0xe0fbc0ed,
++ 0x841bbb13, 0x116b6f86, 0x3d7bfdc1, 0xa80b2954, 0xcceb52aa,
++ 0x599b863f, 0x052ba556, 0x905b71c3, 0xf4bb0a3d, 0x61cbdea8,
++ 0xac9a2eb3, 0x39eafa26, 0x5d0a81d8, 0xc87a554d, 0x94ca7624,
++ 0x01baa2b1, 0x655ad94f, 0xf02a0dda, 0xdc3a9f9d, 0x494a4b08,
++ 0x2daa30f6, 0xb8dae463, 0xe46ac70a, 0x711a139f, 0x15fa6861,
++ 0x808abcf4},
++ {0x00000000, 0xcf9e17c8, 0x444d29d1, 0x8bd33e19, 0x889a53a2,
++ 0x4704446a, 0xccd77a73, 0x03496dbb, 0xca45a105, 0x05dbb6cd,
++ 0x8e0888d4, 0x41969f1c, 0x42dff2a7, 0x8d41e56f, 0x0692db76,
++ 0xc90cccbe, 0x4ffa444b, 0x80645383, 0x0bb76d9a, 0xc4297a52,
++ 0xc76017e9, 0x08fe0021, 0x832d3e38, 0x4cb329f0, 0x85bfe54e,
++ 0x4a21f286, 0xc1f2cc9f, 0x0e6cdb57, 0x0d25b6ec, 0xc2bba124,
++ 0x49689f3d, 0x86f688f5, 0x9ff48896, 0x506a9f5e, 0xdbb9a147,
++ 0x1427b68f, 0x176edb34, 0xd8f0ccfc, 0x5323f2e5, 0x9cbde52d,
++ 0x55b12993, 0x9a2f3e5b, 0x11fc0042, 0xde62178a, 0xdd2b7a31,
++ 0x12b56df9, 0x996653e0, 0x56f84428, 0xd00eccdd, 0x1f90db15,
++ 0x9443e50c, 0x5bddf2c4, 0x58949f7f, 0x970a88b7, 0x1cd9b6ae,
++ 0xd347a166, 0x1a4b6dd8, 0xd5d57a10, 0x5e064409, 0x919853c1,
++ 0x92d13e7a, 0x5d4f29b2, 0xd69c17ab, 0x19020063, 0xe498176d,
++ 0x2b0600a5, 0xa0d53ebc, 0x6f4b2974, 0x6c0244cf, 0xa39c5307,
++ 0x284f6d1e, 0xe7d17ad6, 0x2eddb668, 0xe143a1a0, 0x6a909fb9,
++ 0xa50e8871, 0xa647e5ca, 0x69d9f202, 0xe20acc1b, 0x2d94dbd3,
++ 0xab625326, 0x64fc44ee, 0xef2f7af7, 0x20b16d3f, 0x23f80084,
++ 0xec66174c, 0x67b52955, 0xa82b3e9d, 0x6127f223, 0xaeb9e5eb,
++ 0x256adbf2, 0xeaf4cc3a, 0xe9bda181, 0x2623b649, 0xadf08850,
++ 0x626e9f98, 0x7b6c9ffb, 0xb4f28833, 0x3f21b62a, 0xf0bfa1e2,
++ 0xf3f6cc59, 0x3c68db91, 0xb7bbe588, 0x7825f240, 0xb1293efe,
++ 0x7eb72936, 0xf564172f, 0x3afa00e7, 0x39b36d5c, 0xf62d7a94,
++ 0x7dfe448d, 0xb2605345, 0x3496dbb0, 0xfb08cc78, 0x70dbf261,
++ 0xbf45e5a9, 0xbc0c8812, 0x73929fda, 0xf841a1c3, 0x37dfb60b,
++ 0xfed37ab5, 0x314d6d7d, 0xba9e5364, 0x750044ac, 0x76492917,
++ 0xb9d73edf, 0x320400c6, 0xfd9a170e, 0x1241289b, 0xdddf3f53,
++ 0x560c014a, 0x99921682, 0x9adb7b39, 0x55456cf1, 0xde9652e8,
++ 0x11084520, 0xd804899e, 0x179a9e56, 0x9c49a04f, 0x53d7b787,
++ 0x509eda3c, 0x9f00cdf4, 0x14d3f3ed, 0xdb4de425, 0x5dbb6cd0,
++ 0x92257b18, 0x19f64501, 0xd66852c9, 0xd5213f72, 0x1abf28ba,
++ 0x916c16a3, 0x5ef2016b, 0x97fecdd5, 0x5860da1d, 0xd3b3e404,
++ 0x1c2df3cc, 0x1f649e77, 0xd0fa89bf, 0x5b29b7a6, 0x94b7a06e,
++ 0x8db5a00d, 0x422bb7c5, 0xc9f889dc, 0x06669e14, 0x052ff3af,
++ 0xcab1e467, 0x4162da7e, 0x8efccdb6, 0x47f00108, 0x886e16c0,
++ 0x03bd28d9, 0xcc233f11, 0xcf6a52aa, 0x00f44562, 0x8b277b7b,
++ 0x44b96cb3, 0xc24fe446, 0x0dd1f38e, 0x8602cd97, 0x499cda5f,
++ 0x4ad5b7e4, 0x854ba02c, 0x0e989e35, 0xc10689fd, 0x080a4543,
++ 0xc794528b, 0x4c476c92, 0x83d97b5a, 0x809016e1, 0x4f0e0129,
++ 0xc4dd3f30, 0x0b4328f8, 0xf6d93ff6, 0x3947283e, 0xb2941627,
++ 0x7d0a01ef, 0x7e436c54, 0xb1dd7b9c, 0x3a0e4585, 0xf590524d,
++ 0x3c9c9ef3, 0xf302893b, 0x78d1b722, 0xb74fa0ea, 0xb406cd51,
++ 0x7b98da99, 0xf04be480, 0x3fd5f348, 0xb9237bbd, 0x76bd6c75,
++ 0xfd6e526c, 0x32f045a4, 0x31b9281f, 0xfe273fd7, 0x75f401ce,
++ 0xba6a1606, 0x7366dab8, 0xbcf8cd70, 0x372bf369, 0xf8b5e4a1,
++ 0xfbfc891a, 0x34629ed2, 0xbfb1a0cb, 0x702fb703, 0x692db760,
++ 0xa6b3a0a8, 0x2d609eb1, 0xe2fe8979, 0xe1b7e4c2, 0x2e29f30a,
++ 0xa5facd13, 0x6a64dadb, 0xa3681665, 0x6cf601ad, 0xe7253fb4,
++ 0x28bb287c, 0x2bf245c7, 0xe46c520f, 0x6fbf6c16, 0xa0217bde,
++ 0x26d7f32b, 0xe949e4e3, 0x629adafa, 0xad04cd32, 0xae4da089,
++ 0x61d3b741, 0xea008958, 0x259e9e90, 0xec92522e, 0x230c45e6,
++ 0xa8df7bff, 0x67416c37, 0x6408018c, 0xab961644, 0x2045285d,
++ 0xefdb3f95},
++ {0x00000000, 0x24825136, 0x4904a26c, 0x6d86f35a, 0x920944d8,
++ 0xb68b15ee, 0xdb0de6b4, 0xff8fb782, 0xff638ff1, 0xdbe1dec7,
++ 0xb6672d9d, 0x92e57cab, 0x6d6acb29, 0x49e89a1f, 0x246e6945,
++ 0x00ec3873, 0x25b619a3, 0x01344895, 0x6cb2bbcf, 0x4830eaf9,
++ 0xb7bf5d7b, 0x933d0c4d, 0xfebbff17, 0xda39ae21, 0xdad59652,
++ 0xfe57c764, 0x93d1343e, 0xb7536508, 0x48dcd28a, 0x6c5e83bc,
++ 0x01d870e6, 0x255a21d0, 0x4b6c3346, 0x6fee6270, 0x0268912a,
++ 0x26eac01c, 0xd965779e, 0xfde726a8, 0x9061d5f2, 0xb4e384c4,
++ 0xb40fbcb7, 0x908ded81, 0xfd0b1edb, 0xd9894fed, 0x2606f86f,
++ 0x0284a959, 0x6f025a03, 0x4b800b35, 0x6eda2ae5, 0x4a587bd3,
++ 0x27de8889, 0x035cd9bf, 0xfcd36e3d, 0xd8513f0b, 0xb5d7cc51,
++ 0x91559d67, 0x91b9a514, 0xb53bf422, 0xd8bd0778, 0xfc3f564e,
++ 0x03b0e1cc, 0x2732b0fa, 0x4ab443a0, 0x6e361296, 0x96d8668c,
++ 0xb25a37ba, 0xdfdcc4e0, 0xfb5e95d6, 0x04d12254, 0x20537362,
++ 0x4dd58038, 0x6957d10e, 0x69bbe97d, 0x4d39b84b, 0x20bf4b11,
++ 0x043d1a27, 0xfbb2ada5, 0xdf30fc93, 0xb2b60fc9, 0x96345eff,
++ 0xb36e7f2f, 0x97ec2e19, 0xfa6add43, 0xdee88c75, 0x21673bf7,
++ 0x05e56ac1, 0x6863999b, 0x4ce1c8ad, 0x4c0df0de, 0x688fa1e8,
++ 0x050952b2, 0x218b0384, 0xde04b406, 0xfa86e530, 0x9700166a,
++ 0xb382475c, 0xddb455ca, 0xf93604fc, 0x94b0f7a6, 0xb032a690,
++ 0x4fbd1112, 0x6b3f4024, 0x06b9b37e, 0x223be248, 0x22d7da3b,
++ 0x06558b0d, 0x6bd37857, 0x4f512961, 0xb0de9ee3, 0x945ccfd5,
++ 0xf9da3c8f, 0xdd586db9, 0xf8024c69, 0xdc801d5f, 0xb106ee05,
++ 0x9584bf33, 0x6a0b08b1, 0x4e895987, 0x230faadd, 0x078dfbeb,
++ 0x0761c398, 0x23e392ae, 0x4e6561f4, 0x6ae730c2, 0x95688740,
++ 0xb1ead676, 0xdc6c252c, 0xf8ee741a, 0xf6c1cb59, 0xd2439a6f,
++ 0xbfc56935, 0x9b473803, 0x64c88f81, 0x404adeb7, 0x2dcc2ded,
++ 0x094e7cdb, 0x09a244a8, 0x2d20159e, 0x40a6e6c4, 0x6424b7f2,
++ 0x9bab0070, 0xbf295146, 0xd2afa21c, 0xf62df32a, 0xd377d2fa,
++ 0xf7f583cc, 0x9a737096, 0xbef121a0, 0x417e9622, 0x65fcc714,
++ 0x087a344e, 0x2cf86578, 0x2c145d0b, 0x08960c3d, 0x6510ff67,
++ 0x4192ae51, 0xbe1d19d3, 0x9a9f48e5, 0xf719bbbf, 0xd39bea89,
++ 0xbdadf81f, 0x992fa929, 0xf4a95a73, 0xd02b0b45, 0x2fa4bcc7,
++ 0x0b26edf1, 0x66a01eab, 0x42224f9d, 0x42ce77ee, 0x664c26d8,
++ 0x0bcad582, 0x2f4884b4, 0xd0c73336, 0xf4456200, 0x99c3915a,
++ 0xbd41c06c, 0x981be1bc, 0xbc99b08a, 0xd11f43d0, 0xf59d12e6,
++ 0x0a12a564, 0x2e90f452, 0x43160708, 0x6794563e, 0x67786e4d,
++ 0x43fa3f7b, 0x2e7ccc21, 0x0afe9d17, 0xf5712a95, 0xd1f37ba3,
++ 0xbc7588f9, 0x98f7d9cf, 0x6019add5, 0x449bfce3, 0x291d0fb9,
++ 0x0d9f5e8f, 0xf210e90d, 0xd692b83b, 0xbb144b61, 0x9f961a57,
++ 0x9f7a2224, 0xbbf87312, 0xd67e8048, 0xf2fcd17e, 0x0d7366fc,
++ 0x29f137ca, 0x4477c490, 0x60f595a6, 0x45afb476, 0x612de540,
++ 0x0cab161a, 0x2829472c, 0xd7a6f0ae, 0xf324a198, 0x9ea252c2,
++ 0xba2003f4, 0xbacc3b87, 0x9e4e6ab1, 0xf3c899eb, 0xd74ac8dd,
++ 0x28c57f5f, 0x0c472e69, 0x61c1dd33, 0x45438c05, 0x2b759e93,
++ 0x0ff7cfa5, 0x62713cff, 0x46f36dc9, 0xb97cda4b, 0x9dfe8b7d,
++ 0xf0787827, 0xd4fa2911, 0xd4161162, 0xf0944054, 0x9d12b30e,
++ 0xb990e238, 0x461f55ba, 0x629d048c, 0x0f1bf7d6, 0x2b99a6e0,
++ 0x0ec38730, 0x2a41d606, 0x47c7255c, 0x6345746a, 0x9ccac3e8,
++ 0xb84892de, 0xd5ce6184, 0xf14c30b2, 0xf1a008c1, 0xd52259f7,
++ 0xb8a4aaad, 0x9c26fb9b, 0x63a94c19, 0x472b1d2f, 0x2aadee75,
++ 0x0e2fbf43},
++ {0x00000000, 0x36f290f3, 0x6de521e6, 0x5b17b115, 0xdbca43cc,
++ 0xed38d33f, 0xb62f622a, 0x80ddf2d9, 0x6ce581d9, 0x5a17112a,
++ 0x0100a03f, 0x37f230cc, 0xb72fc215, 0x81dd52e6, 0xdacae3f3,
++ 0xec387300, 0xd9cb03b2, 0xef399341, 0xb42e2254, 0x82dcb2a7,
++ 0x0201407e, 0x34f3d08d, 0x6fe46198, 0x5916f16b, 0xb52e826b,
++ 0x83dc1298, 0xd8cba38d, 0xee39337e, 0x6ee4c1a7, 0x58165154,
++ 0x0301e041, 0x35f370b2, 0x68e70125, 0x5e1591d6, 0x050220c3,
++ 0x33f0b030, 0xb32d42e9, 0x85dfd21a, 0xdec8630f, 0xe83af3fc,
++ 0x040280fc, 0x32f0100f, 0x69e7a11a, 0x5f1531e9, 0xdfc8c330,
++ 0xe93a53c3, 0xb22de2d6, 0x84df7225, 0xb12c0297, 0x87de9264,
++ 0xdcc92371, 0xea3bb382, 0x6ae6415b, 0x5c14d1a8, 0x070360bd,
++ 0x31f1f04e, 0xddc9834e, 0xeb3b13bd, 0xb02ca2a8, 0x86de325b,
++ 0x0603c082, 0x30f15071, 0x6be6e164, 0x5d147197, 0xd1ce024a,
++ 0xe73c92b9, 0xbc2b23ac, 0x8ad9b35f, 0x0a044186, 0x3cf6d175,
++ 0x67e16060, 0x5113f093, 0xbd2b8393, 0x8bd91360, 0xd0cea275,
++ 0xe63c3286, 0x66e1c05f, 0x501350ac, 0x0b04e1b9, 0x3df6714a,
++ 0x080501f8, 0x3ef7910b, 0x65e0201e, 0x5312b0ed, 0xd3cf4234,
++ 0xe53dd2c7, 0xbe2a63d2, 0x88d8f321, 0x64e08021, 0x521210d2,
++ 0x0905a1c7, 0x3ff73134, 0xbf2ac3ed, 0x89d8531e, 0xd2cfe20b,
++ 0xe43d72f8, 0xb929036f, 0x8fdb939c, 0xd4cc2289, 0xe23eb27a,
++ 0x62e340a3, 0x5411d050, 0x0f066145, 0x39f4f1b6, 0xd5cc82b6,
++ 0xe33e1245, 0xb829a350, 0x8edb33a3, 0x0e06c17a, 0x38f45189,
++ 0x63e3e09c, 0x5511706f, 0x60e200dd, 0x5610902e, 0x0d07213b,
++ 0x3bf5b1c8, 0xbb284311, 0x8ddad3e2, 0xd6cd62f7, 0xe03ff204,
++ 0x0c078104, 0x3af511f7, 0x61e2a0e2, 0x57103011, 0xd7cdc2c8,
++ 0xe13f523b, 0xba28e32e, 0x8cda73dd, 0x78ed02d5, 0x4e1f9226,
++ 0x15082333, 0x23fab3c0, 0xa3274119, 0x95d5d1ea, 0xcec260ff,
++ 0xf830f00c, 0x1408830c, 0x22fa13ff, 0x79eda2ea, 0x4f1f3219,
++ 0xcfc2c0c0, 0xf9305033, 0xa227e126, 0x94d571d5, 0xa1260167,
++ 0x97d49194, 0xccc32081, 0xfa31b072, 0x7aec42ab, 0x4c1ed258,
++ 0x1709634d, 0x21fbf3be, 0xcdc380be, 0xfb31104d, 0xa026a158,
++ 0x96d431ab, 0x1609c372, 0x20fb5381, 0x7bece294, 0x4d1e7267,
++ 0x100a03f0, 0x26f89303, 0x7def2216, 0x4b1db2e5, 0xcbc0403c,
++ 0xfd32d0cf, 0xa62561da, 0x90d7f129, 0x7cef8229, 0x4a1d12da,
++ 0x110aa3cf, 0x27f8333c, 0xa725c1e5, 0x91d75116, 0xcac0e003,
++ 0xfc3270f0, 0xc9c10042, 0xff3390b1, 0xa42421a4, 0x92d6b157,
++ 0x120b438e, 0x24f9d37d, 0x7fee6268, 0x491cf29b, 0xa524819b,
++ 0x93d61168, 0xc8c1a07d, 0xfe33308e, 0x7eeec257, 0x481c52a4,
++ 0x130be3b1, 0x25f97342, 0xa923009f, 0x9fd1906c, 0xc4c62179,
++ 0xf234b18a, 0x72e94353, 0x441bd3a0, 0x1f0c62b5, 0x29fef246,
++ 0xc5c68146, 0xf33411b5, 0xa823a0a0, 0x9ed13053, 0x1e0cc28a,
++ 0x28fe5279, 0x73e9e36c, 0x451b739f, 0x70e8032d, 0x461a93de,
++ 0x1d0d22cb, 0x2bffb238, 0xab2240e1, 0x9dd0d012, 0xc6c76107,
++ 0xf035f1f4, 0x1c0d82f4, 0x2aff1207, 0x71e8a312, 0x471a33e1,
++ 0xc7c7c138, 0xf13551cb, 0xaa22e0de, 0x9cd0702d, 0xc1c401ba,
++ 0xf7369149, 0xac21205c, 0x9ad3b0af, 0x1a0e4276, 0x2cfcd285,
++ 0x77eb6390, 0x4119f363, 0xad218063, 0x9bd31090, 0xc0c4a185,
++ 0xf6363176, 0x76ebc3af, 0x4019535c, 0x1b0ee249, 0x2dfc72ba,
++ 0x180f0208, 0x2efd92fb, 0x75ea23ee, 0x4318b31d, 0xc3c541c4,
++ 0xf537d137, 0xae206022, 0x98d2f0d1, 0x74ea83d1, 0x42181322,
++ 0x190fa237, 0x2ffd32c4, 0xaf20c01d, 0x99d250ee, 0xc2c5e1fb,
++ 0xf4377108}};
++
++local const z_word_t FAR crc_braid_big_table[][256] = {
++ {0x0000000000000000, 0xf390f23600000000, 0xe621e56d00000000,
++ 0x15b1175b00000000, 0xcc43cadb00000000, 0x3fd338ed00000000,
++ 0x2a622fb600000000, 0xd9f2dd8000000000, 0xd981e56c00000000,
++ 0x2a11175a00000000, 0x3fa0000100000000, 0xcc30f23700000000,
++ 0x15c22fb700000000, 0xe652dd8100000000, 0xf3e3cada00000000,
++ 0x007338ec00000000, 0xb203cbd900000000, 0x419339ef00000000,
++ 0x54222eb400000000, 0xa7b2dc8200000000, 0x7e40010200000000,
++ 0x8dd0f33400000000, 0x9861e46f00000000, 0x6bf1165900000000,
++ 0x6b822eb500000000, 0x9812dc8300000000, 0x8da3cbd800000000,
++ 0x7e3339ee00000000, 0xa7c1e46e00000000, 0x5451165800000000,
++ 0x41e0010300000000, 0xb270f33500000000, 0x2501e76800000000,
++ 0xd691155e00000000, 0xc320020500000000, 0x30b0f03300000000,
++ 0xe9422db300000000, 0x1ad2df8500000000, 0x0f63c8de00000000,
++ 0xfcf33ae800000000, 0xfc80020400000000, 0x0f10f03200000000,
++ 0x1aa1e76900000000, 0xe931155f00000000, 0x30c3c8df00000000,
++ 0xc3533ae900000000, 0xd6e22db200000000, 0x2572df8400000000,
++ 0x97022cb100000000, 0x6492de8700000000, 0x7123c9dc00000000,
++ 0x82b33bea00000000, 0x5b41e66a00000000, 0xa8d1145c00000000,
++ 0xbd60030700000000, 0x4ef0f13100000000, 0x4e83c9dd00000000,
++ 0xbd133beb00000000, 0xa8a22cb000000000, 0x5b32de8600000000,
++ 0x82c0030600000000, 0x7150f13000000000, 0x64e1e66b00000000,
++ 0x9771145d00000000, 0x4a02ced100000000, 0xb9923ce700000000,
++ 0xac232bbc00000000, 0x5fb3d98a00000000, 0x8641040a00000000,
++ 0x75d1f63c00000000, 0x6060e16700000000, 0x93f0135100000000,
++ 0x93832bbd00000000, 0x6013d98b00000000, 0x75a2ced000000000,
++ 0x86323ce600000000, 0x5fc0e16600000000, 0xac50135000000000,
++ 0xb9e1040b00000000, 0x4a71f63d00000000, 0xf801050800000000,
++ 0x0b91f73e00000000, 0x1e20e06500000000, 0xedb0125300000000,
++ 0x3442cfd300000000, 0xc7d23de500000000, 0xd2632abe00000000,
++ 0x21f3d88800000000, 0x2180e06400000000, 0xd210125200000000,
++ 0xc7a1050900000000, 0x3431f73f00000000, 0xedc32abf00000000,
++ 0x1e53d88900000000, 0x0be2cfd200000000, 0xf8723de400000000,
++ 0x6f0329b900000000, 0x9c93db8f00000000, 0x8922ccd400000000,
++ 0x7ab23ee200000000, 0xa340e36200000000, 0x50d0115400000000,
++ 0x4561060f00000000, 0xb6f1f43900000000, 0xb682ccd500000000,
++ 0x45123ee300000000, 0x50a329b800000000, 0xa333db8e00000000,
++ 0x7ac1060e00000000, 0x8951f43800000000, 0x9ce0e36300000000,
++ 0x6f70115500000000, 0xdd00e26000000000, 0x2e90105600000000,
++ 0x3b21070d00000000, 0xc8b1f53b00000000, 0x114328bb00000000,
++ 0xe2d3da8d00000000, 0xf762cdd600000000, 0x04f23fe000000000,
++ 0x0481070c00000000, 0xf711f53a00000000, 0xe2a0e26100000000,
++ 0x1130105700000000, 0xc8c2cdd700000000, 0x3b523fe100000000,
++ 0x2ee328ba00000000, 0xdd73da8c00000000, 0xd502ed7800000000,
++ 0x26921f4e00000000, 0x3323081500000000, 0xc0b3fa2300000000,
++ 0x194127a300000000, 0xead1d59500000000, 0xff60c2ce00000000,
++ 0x0cf030f800000000, 0x0c83081400000000, 0xff13fa2200000000,
++ 0xeaa2ed7900000000, 0x19321f4f00000000, 0xc0c0c2cf00000000,
++ 0x335030f900000000, 0x26e127a200000000, 0xd571d59400000000,
++ 0x670126a100000000, 0x9491d49700000000, 0x8120c3cc00000000,
++ 0x72b031fa00000000, 0xab42ec7a00000000, 0x58d21e4c00000000,
++ 0x4d63091700000000, 0xbef3fb2100000000, 0xbe80c3cd00000000,
++ 0x4d1031fb00000000, 0x58a126a000000000, 0xab31d49600000000,
++ 0x72c3091600000000, 0x8153fb2000000000, 0x94e2ec7b00000000,
++ 0x67721e4d00000000, 0xf0030a1000000000, 0x0393f82600000000,
++ 0x1622ef7d00000000, 0xe5b21d4b00000000, 0x3c40c0cb00000000,
++ 0xcfd032fd00000000, 0xda6125a600000000, 0x29f1d79000000000,
++ 0x2982ef7c00000000, 0xda121d4a00000000, 0xcfa30a1100000000,
++ 0x3c33f82700000000, 0xe5c125a700000000, 0x1651d79100000000,
++ 0x03e0c0ca00000000, 0xf07032fc00000000, 0x4200c1c900000000,
++ 0xb19033ff00000000, 0xa42124a400000000, 0x57b1d69200000000,
++ 0x8e430b1200000000, 0x7dd3f92400000000, 0x6862ee7f00000000,
++ 0x9bf21c4900000000, 0x9b8124a500000000, 0x6811d69300000000,
++ 0x7da0c1c800000000, 0x8e3033fe00000000, 0x57c2ee7e00000000,
++ 0xa4521c4800000000, 0xb1e30b1300000000, 0x4273f92500000000,
++ 0x9f0023a900000000, 0x6c90d19f00000000, 0x7921c6c400000000,
++ 0x8ab134f200000000, 0x5343e97200000000, 0xa0d31b4400000000,
++ 0xb5620c1f00000000, 0x46f2fe2900000000, 0x4681c6c500000000,
++ 0xb51134f300000000, 0xa0a023a800000000, 0x5330d19e00000000,
++ 0x8ac20c1e00000000, 0x7952fe2800000000, 0x6ce3e97300000000,
++ 0x9f731b4500000000, 0x2d03e87000000000, 0xde931a4600000000,
++ 0xcb220d1d00000000, 0x38b2ff2b00000000, 0xe14022ab00000000,
++ 0x12d0d09d00000000, 0x0761c7c600000000, 0xf4f135f000000000,
++ 0xf4820d1c00000000, 0x0712ff2a00000000, 0x12a3e87100000000,
++ 0xe1331a4700000000, 0x38c1c7c700000000, 0xcb5135f100000000,
++ 0xdee022aa00000000, 0x2d70d09c00000000, 0xba01c4c100000000,
++ 0x499136f700000000, 0x5c2021ac00000000, 0xafb0d39a00000000,
++ 0x76420e1a00000000, 0x85d2fc2c00000000, 0x9063eb7700000000,
++ 0x63f3194100000000, 0x638021ad00000000, 0x9010d39b00000000,
++ 0x85a1c4c000000000, 0x763136f600000000, 0xafc3eb7600000000,
++ 0x5c53194000000000, 0x49e20e1b00000000, 0xba72fc2d00000000,
++ 0x08020f1800000000, 0xfb92fd2e00000000, 0xee23ea7500000000,
++ 0x1db3184300000000, 0xc441c5c300000000, 0x37d137f500000000,
++ 0x226020ae00000000, 0xd1f0d29800000000, 0xd183ea7400000000,
++ 0x2213184200000000, 0x37a20f1900000000, 0xc432fd2f00000000,
++ 0x1dc020af00000000, 0xee50d29900000000, 0xfbe1c5c200000000,
++ 0x087137f400000000},
++ {0x0000000000000000, 0x3651822400000000, 0x6ca2044900000000,
++ 0x5af3866d00000000, 0xd844099200000000, 0xee158bb600000000,
++ 0xb4e60ddb00000000, 0x82b78fff00000000, 0xf18f63ff00000000,
++ 0xc7dee1db00000000, 0x9d2d67b600000000, 0xab7ce59200000000,
++ 0x29cb6a6d00000000, 0x1f9ae84900000000, 0x45696e2400000000,
++ 0x7338ec0000000000, 0xa319b62500000000, 0x9548340100000000,
++ 0xcfbbb26c00000000, 0xf9ea304800000000, 0x7b5dbfb700000000,
++ 0x4d0c3d9300000000, 0x17ffbbfe00000000, 0x21ae39da00000000,
++ 0x5296d5da00000000, 0x64c757fe00000000, 0x3e34d19300000000,
++ 0x086553b700000000, 0x8ad2dc4800000000, 0xbc835e6c00000000,
++ 0xe670d80100000000, 0xd0215a2500000000, 0x46336c4b00000000,
++ 0x7062ee6f00000000, 0x2a91680200000000, 0x1cc0ea2600000000,
++ 0x9e7765d900000000, 0xa826e7fd00000000, 0xf2d5619000000000,
++ 0xc484e3b400000000, 0xb7bc0fb400000000, 0x81ed8d9000000000,
++ 0xdb1e0bfd00000000, 0xed4f89d900000000, 0x6ff8062600000000,
++ 0x59a9840200000000, 0x035a026f00000000, 0x350b804b00000000,
++ 0xe52ada6e00000000, 0xd37b584a00000000, 0x8988de2700000000,
++ 0xbfd95c0300000000, 0x3d6ed3fc00000000, 0x0b3f51d800000000,
++ 0x51ccd7b500000000, 0x679d559100000000, 0x14a5b99100000000,
++ 0x22f43bb500000000, 0x7807bdd800000000, 0x4e563ffc00000000,
++ 0xcce1b00300000000, 0xfab0322700000000, 0xa043b44a00000000,
++ 0x9612366e00000000, 0x8c66d89600000000, 0xba375ab200000000,
++ 0xe0c4dcdf00000000, 0xd6955efb00000000, 0x5422d10400000000,
++ 0x6273532000000000, 0x3880d54d00000000, 0x0ed1576900000000,
++ 0x7de9bb6900000000, 0x4bb8394d00000000, 0x114bbf2000000000,
++ 0x271a3d0400000000, 0xa5adb2fb00000000, 0x93fc30df00000000,
++ 0xc90fb6b200000000, 0xff5e349600000000, 0x2f7f6eb300000000,
++ 0x192eec9700000000, 0x43dd6afa00000000, 0x758ce8de00000000,
++ 0xf73b672100000000, 0xc16ae50500000000, 0x9b99636800000000,
++ 0xadc8e14c00000000, 0xdef00d4c00000000, 0xe8a18f6800000000,
++ 0xb252090500000000, 0x84038b2100000000, 0x06b404de00000000,
++ 0x30e586fa00000000, 0x6a16009700000000, 0x5c4782b300000000,
++ 0xca55b4dd00000000, 0xfc0436f900000000, 0xa6f7b09400000000,
++ 0x90a632b000000000, 0x1211bd4f00000000, 0x24403f6b00000000,
++ 0x7eb3b90600000000, 0x48e23b2200000000, 0x3bdad72200000000,
++ 0x0d8b550600000000, 0x5778d36b00000000, 0x6129514f00000000,
++ 0xe39edeb000000000, 0xd5cf5c9400000000, 0x8f3cdaf900000000,
++ 0xb96d58dd00000000, 0x694c02f800000000, 0x5f1d80dc00000000,
++ 0x05ee06b100000000, 0x33bf849500000000, 0xb1080b6a00000000,
++ 0x8759894e00000000, 0xddaa0f2300000000, 0xebfb8d0700000000,
++ 0x98c3610700000000, 0xae92e32300000000, 0xf461654e00000000,
++ 0xc230e76a00000000, 0x4087689500000000, 0x76d6eab100000000,
++ 0x2c256cdc00000000, 0x1a74eef800000000, 0x59cbc1f600000000,
++ 0x6f9a43d200000000, 0x3569c5bf00000000, 0x0338479b00000000,
++ 0x818fc86400000000, 0xb7de4a4000000000, 0xed2dcc2d00000000,
++ 0xdb7c4e0900000000, 0xa844a20900000000, 0x9e15202d00000000,
++ 0xc4e6a64000000000, 0xf2b7246400000000, 0x7000ab9b00000000,
++ 0x465129bf00000000, 0x1ca2afd200000000, 0x2af32df600000000,
++ 0xfad277d300000000, 0xcc83f5f700000000, 0x9670739a00000000,
++ 0xa021f1be00000000, 0x22967e4100000000, 0x14c7fc6500000000,
++ 0x4e347a0800000000, 0x7865f82c00000000, 0x0b5d142c00000000,
++ 0x3d0c960800000000, 0x67ff106500000000, 0x51ae924100000000,
++ 0xd3191dbe00000000, 0xe5489f9a00000000, 0xbfbb19f700000000,
++ 0x89ea9bd300000000, 0x1ff8adbd00000000, 0x29a92f9900000000,
++ 0x735aa9f400000000, 0x450b2bd000000000, 0xc7bca42f00000000,
++ 0xf1ed260b00000000, 0xab1ea06600000000, 0x9d4f224200000000,
++ 0xee77ce4200000000, 0xd8264c6600000000, 0x82d5ca0b00000000,
++ 0xb484482f00000000, 0x3633c7d000000000, 0x006245f400000000,
++ 0x5a91c39900000000, 0x6cc041bd00000000, 0xbce11b9800000000,
++ 0x8ab099bc00000000, 0xd0431fd100000000, 0xe6129df500000000,
++ 0x64a5120a00000000, 0x52f4902e00000000, 0x0807164300000000,
++ 0x3e56946700000000, 0x4d6e786700000000, 0x7b3ffa4300000000,
++ 0x21cc7c2e00000000, 0x179dfe0a00000000, 0x952a71f500000000,
++ 0xa37bf3d100000000, 0xf98875bc00000000, 0xcfd9f79800000000,
++ 0xd5ad196000000000, 0xe3fc9b4400000000, 0xb90f1d2900000000,
++ 0x8f5e9f0d00000000, 0x0de910f200000000, 0x3bb892d600000000,
++ 0x614b14bb00000000, 0x571a969f00000000, 0x24227a9f00000000,
++ 0x1273f8bb00000000, 0x48807ed600000000, 0x7ed1fcf200000000,
++ 0xfc66730d00000000, 0xca37f12900000000, 0x90c4774400000000,
++ 0xa695f56000000000, 0x76b4af4500000000, 0x40e52d6100000000,
++ 0x1a16ab0c00000000, 0x2c47292800000000, 0xaef0a6d700000000,
++ 0x98a124f300000000, 0xc252a29e00000000, 0xf40320ba00000000,
++ 0x873bccba00000000, 0xb16a4e9e00000000, 0xeb99c8f300000000,
++ 0xddc84ad700000000, 0x5f7fc52800000000, 0x692e470c00000000,
++ 0x33ddc16100000000, 0x058c434500000000, 0x939e752b00000000,
++ 0xa5cff70f00000000, 0xff3c716200000000, 0xc96df34600000000,
++ 0x4bda7cb900000000, 0x7d8bfe9d00000000, 0x277878f000000000,
++ 0x1129fad400000000, 0x621116d400000000, 0x544094f000000000,
++ 0x0eb3129d00000000, 0x38e290b900000000, 0xba551f4600000000,
++ 0x8c049d6200000000, 0xd6f71b0f00000000, 0xe0a6992b00000000,
++ 0x3087c30e00000000, 0x06d6412a00000000, 0x5c25c74700000000,
++ 0x6a74456300000000, 0xe8c3ca9c00000000, 0xde9248b800000000,
++ 0x8461ced500000000, 0xb2304cf100000000, 0xc108a0f100000000,
++ 0xf75922d500000000, 0xadaaa4b800000000, 0x9bfb269c00000000,
++ 0x194ca96300000000, 0x2f1d2b4700000000, 0x75eead2a00000000,
++ 0x43bf2f0e00000000},
++ {0x0000000000000000, 0xc8179ecf00000000, 0xd1294d4400000000,
++ 0x193ed38b00000000, 0xa2539a8800000000, 0x6a44044700000000,
++ 0x737ad7cc00000000, 0xbb6d490300000000, 0x05a145ca00000000,
++ 0xcdb6db0500000000, 0xd488088e00000000, 0x1c9f964100000000,
++ 0xa7f2df4200000000, 0x6fe5418d00000000, 0x76db920600000000,
++ 0xbecc0cc900000000, 0x4b44fa4f00000000, 0x8353648000000000,
++ 0x9a6db70b00000000, 0x527a29c400000000, 0xe91760c700000000,
++ 0x2100fe0800000000, 0x383e2d8300000000, 0xf029b34c00000000,
++ 0x4ee5bf8500000000, 0x86f2214a00000000, 0x9fccf2c100000000,
++ 0x57db6c0e00000000, 0xecb6250d00000000, 0x24a1bbc200000000,
++ 0x3d9f684900000000, 0xf588f68600000000, 0x9688f49f00000000,
++ 0x5e9f6a5000000000, 0x47a1b9db00000000, 0x8fb6271400000000,
++ 0x34db6e1700000000, 0xfcccf0d800000000, 0xe5f2235300000000,
++ 0x2de5bd9c00000000, 0x9329b15500000000, 0x5b3e2f9a00000000,
++ 0x4200fc1100000000, 0x8a1762de00000000, 0x317a2bdd00000000,
++ 0xf96db51200000000, 0xe053669900000000, 0x2844f85600000000,
++ 0xddcc0ed000000000, 0x15db901f00000000, 0x0ce5439400000000,
++ 0xc4f2dd5b00000000, 0x7f9f945800000000, 0xb7880a9700000000,
++ 0xaeb6d91c00000000, 0x66a147d300000000, 0xd86d4b1a00000000,
++ 0x107ad5d500000000, 0x0944065e00000000, 0xc153989100000000,
++ 0x7a3ed19200000000, 0xb2294f5d00000000, 0xab179cd600000000,
++ 0x6300021900000000, 0x6d1798e400000000, 0xa500062b00000000,
++ 0xbc3ed5a000000000, 0x74294b6f00000000, 0xcf44026c00000000,
++ 0x07539ca300000000, 0x1e6d4f2800000000, 0xd67ad1e700000000,
++ 0x68b6dd2e00000000, 0xa0a143e100000000, 0xb99f906a00000000,
++ 0x71880ea500000000, 0xcae547a600000000, 0x02f2d96900000000,
++ 0x1bcc0ae200000000, 0xd3db942d00000000, 0x265362ab00000000,
++ 0xee44fc6400000000, 0xf77a2fef00000000, 0x3f6db12000000000,
++ 0x8400f82300000000, 0x4c1766ec00000000, 0x5529b56700000000,
++ 0x9d3e2ba800000000, 0x23f2276100000000, 0xebe5b9ae00000000,
++ 0xf2db6a2500000000, 0x3accf4ea00000000, 0x81a1bde900000000,
++ 0x49b6232600000000, 0x5088f0ad00000000, 0x989f6e6200000000,
++ 0xfb9f6c7b00000000, 0x3388f2b400000000, 0x2ab6213f00000000,
++ 0xe2a1bff000000000, 0x59ccf6f300000000, 0x91db683c00000000,
++ 0x88e5bbb700000000, 0x40f2257800000000, 0xfe3e29b100000000,
++ 0x3629b77e00000000, 0x2f1764f500000000, 0xe700fa3a00000000,
++ 0x5c6db33900000000, 0x947a2df600000000, 0x8d44fe7d00000000,
++ 0x455360b200000000, 0xb0db963400000000, 0x78cc08fb00000000,
++ 0x61f2db7000000000, 0xa9e545bf00000000, 0x12880cbc00000000,
++ 0xda9f927300000000, 0xc3a141f800000000, 0x0bb6df3700000000,
++ 0xb57ad3fe00000000, 0x7d6d4d3100000000, 0x64539eba00000000,
++ 0xac44007500000000, 0x1729497600000000, 0xdf3ed7b900000000,
++ 0xc600043200000000, 0x0e179afd00000000, 0x9b28411200000000,
++ 0x533fdfdd00000000, 0x4a010c5600000000, 0x8216929900000000,
++ 0x397bdb9a00000000, 0xf16c455500000000, 0xe85296de00000000,
++ 0x2045081100000000, 0x9e8904d800000000, 0x569e9a1700000000,
++ 0x4fa0499c00000000, 0x87b7d75300000000, 0x3cda9e5000000000,
++ 0xf4cd009f00000000, 0xedf3d31400000000, 0x25e44ddb00000000,
++ 0xd06cbb5d00000000, 0x187b259200000000, 0x0145f61900000000,
++ 0xc95268d600000000, 0x723f21d500000000, 0xba28bf1a00000000,
++ 0xa3166c9100000000, 0x6b01f25e00000000, 0xd5cdfe9700000000,
++ 0x1dda605800000000, 0x04e4b3d300000000, 0xccf32d1c00000000,
++ 0x779e641f00000000, 0xbf89fad000000000, 0xa6b7295b00000000,
++ 0x6ea0b79400000000, 0x0da0b58d00000000, 0xc5b72b4200000000,
++ 0xdc89f8c900000000, 0x149e660600000000, 0xaff32f0500000000,
++ 0x67e4b1ca00000000, 0x7eda624100000000, 0xb6cdfc8e00000000,
++ 0x0801f04700000000, 0xc0166e8800000000, 0xd928bd0300000000,
++ 0x113f23cc00000000, 0xaa526acf00000000, 0x6245f40000000000,
++ 0x7b7b278b00000000, 0xb36cb94400000000, 0x46e44fc200000000,
++ 0x8ef3d10d00000000, 0x97cd028600000000, 0x5fda9c4900000000,
++ 0xe4b7d54a00000000, 0x2ca04b8500000000, 0x359e980e00000000,
++ 0xfd8906c100000000, 0x43450a0800000000, 0x8b5294c700000000,
++ 0x926c474c00000000, 0x5a7bd98300000000, 0xe116908000000000,
++ 0x29010e4f00000000, 0x303fddc400000000, 0xf828430b00000000,
++ 0xf63fd9f600000000, 0x3e28473900000000, 0x271694b200000000,
++ 0xef010a7d00000000, 0x546c437e00000000, 0x9c7bddb100000000,
++ 0x85450e3a00000000, 0x4d5290f500000000, 0xf39e9c3c00000000,
++ 0x3b8902f300000000, 0x22b7d17800000000, 0xeaa04fb700000000,
++ 0x51cd06b400000000, 0x99da987b00000000, 0x80e44bf000000000,
++ 0x48f3d53f00000000, 0xbd7b23b900000000, 0x756cbd7600000000,
++ 0x6c526efd00000000, 0xa445f03200000000, 0x1f28b93100000000,
++ 0xd73f27fe00000000, 0xce01f47500000000, 0x06166aba00000000,
++ 0xb8da667300000000, 0x70cdf8bc00000000, 0x69f32b3700000000,
++ 0xa1e4b5f800000000, 0x1a89fcfb00000000, 0xd29e623400000000,
++ 0xcba0b1bf00000000, 0x03b72f7000000000, 0x60b72d6900000000,
++ 0xa8a0b3a600000000, 0xb19e602d00000000, 0x7989fee200000000,
++ 0xc2e4b7e100000000, 0x0af3292e00000000, 0x13cdfaa500000000,
++ 0xdbda646a00000000, 0x651668a300000000, 0xad01f66c00000000,
++ 0xb43f25e700000000, 0x7c28bb2800000000, 0xc745f22b00000000,
++ 0x0f526ce400000000, 0x166cbf6f00000000, 0xde7b21a000000000,
++ 0x2bf3d72600000000, 0xe3e449e900000000, 0xfada9a6200000000,
++ 0x32cd04ad00000000, 0x89a04dae00000000, 0x41b7d36100000000,
++ 0x588900ea00000000, 0x909e9e2500000000, 0x2e5292ec00000000,
++ 0xe6450c2300000000, 0xff7bdfa800000000, 0x376c416700000000,
++ 0x8c01086400000000, 0x441696ab00000000, 0x5d28452000000000,
++ 0x953fdbef00000000},
++ {0x0000000000000000, 0x95d4709500000000, 0x6baf90f100000000,
++ 0xfe7be06400000000, 0x9758503800000000, 0x028c20ad00000000,
++ 0xfcf7c0c900000000, 0x6923b05c00000000, 0x2eb1a07000000000,
++ 0xbb65d0e500000000, 0x451e308100000000, 0xd0ca401400000000,
++ 0xb9e9f04800000000, 0x2c3d80dd00000000, 0xd24660b900000000,
++ 0x4792102c00000000, 0x5c6241e100000000, 0xc9b6317400000000,
++ 0x37cdd11000000000, 0xa219a18500000000, 0xcb3a11d900000000,
++ 0x5eee614c00000000, 0xa095812800000000, 0x3541f1bd00000000,
++ 0x72d3e19100000000, 0xe707910400000000, 0x197c716000000000,
++ 0x8ca801f500000000, 0xe58bb1a900000000, 0x705fc13c00000000,
++ 0x8e24215800000000, 0x1bf051cd00000000, 0xf9c2f31900000000,
++ 0x6c16838c00000000, 0x926d63e800000000, 0x07b9137d00000000,
++ 0x6e9aa32100000000, 0xfb4ed3b400000000, 0x053533d000000000,
++ 0x90e1434500000000, 0xd773536900000000, 0x42a723fc00000000,
++ 0xbcdcc39800000000, 0x2908b30d00000000, 0x402b035100000000,
++ 0xd5ff73c400000000, 0x2b8493a000000000, 0xbe50e33500000000,
++ 0xa5a0b2f800000000, 0x3074c26d00000000, 0xce0f220900000000,
++ 0x5bdb529c00000000, 0x32f8e2c000000000, 0xa72c925500000000,
++ 0x5957723100000000, 0xcc8302a400000000, 0x8b11128800000000,
++ 0x1ec5621d00000000, 0xe0be827900000000, 0x756af2ec00000000,
++ 0x1c4942b000000000, 0x899d322500000000, 0x77e6d24100000000,
++ 0xe232a2d400000000, 0xf285e73300000000, 0x675197a600000000,
++ 0x992a77c200000000, 0x0cfe075700000000, 0x65ddb70b00000000,
++ 0xf009c79e00000000, 0x0e7227fa00000000, 0x9ba6576f00000000,
++ 0xdc34474300000000, 0x49e037d600000000, 0xb79bd7b200000000,
++ 0x224fa72700000000, 0x4b6c177b00000000, 0xdeb867ee00000000,
++ 0x20c3878a00000000, 0xb517f71f00000000, 0xaee7a6d200000000,
++ 0x3b33d64700000000, 0xc548362300000000, 0x509c46b600000000,
++ 0x39bff6ea00000000, 0xac6b867f00000000, 0x5210661b00000000,
++ 0xc7c4168e00000000, 0x805606a200000000, 0x1582763700000000,
++ 0xebf9965300000000, 0x7e2de6c600000000, 0x170e569a00000000,
++ 0x82da260f00000000, 0x7ca1c66b00000000, 0xe975b6fe00000000,
++ 0x0b47142a00000000, 0x9e9364bf00000000, 0x60e884db00000000,
++ 0xf53cf44e00000000, 0x9c1f441200000000, 0x09cb348700000000,
++ 0xf7b0d4e300000000, 0x6264a47600000000, 0x25f6b45a00000000,
++ 0xb022c4cf00000000, 0x4e5924ab00000000, 0xdb8d543e00000000,
++ 0xb2aee46200000000, 0x277a94f700000000, 0xd901749300000000,
++ 0x4cd5040600000000, 0x572555cb00000000, 0xc2f1255e00000000,
++ 0x3c8ac53a00000000, 0xa95eb5af00000000, 0xc07d05f300000000,
++ 0x55a9756600000000, 0xabd2950200000000, 0x3e06e59700000000,
++ 0x7994f5bb00000000, 0xec40852e00000000, 0x123b654a00000000,
++ 0x87ef15df00000000, 0xeecca58300000000, 0x7b18d51600000000,
++ 0x8563357200000000, 0x10b745e700000000, 0xe40bcf6700000000,
++ 0x71dfbff200000000, 0x8fa45f9600000000, 0x1a702f0300000000,
++ 0x73539f5f00000000, 0xe687efca00000000, 0x18fc0fae00000000,
++ 0x8d287f3b00000000, 0xcaba6f1700000000, 0x5f6e1f8200000000,
++ 0xa115ffe600000000, 0x34c18f7300000000, 0x5de23f2f00000000,
++ 0xc8364fba00000000, 0x364dafde00000000, 0xa399df4b00000000,
++ 0xb8698e8600000000, 0x2dbdfe1300000000, 0xd3c61e7700000000,
++ 0x46126ee200000000, 0x2f31debe00000000, 0xbae5ae2b00000000,
++ 0x449e4e4f00000000, 0xd14a3eda00000000, 0x96d82ef600000000,
++ 0x030c5e6300000000, 0xfd77be0700000000, 0x68a3ce9200000000,
++ 0x01807ece00000000, 0x94540e5b00000000, 0x6a2fee3f00000000,
++ 0xfffb9eaa00000000, 0x1dc93c7e00000000, 0x881d4ceb00000000,
++ 0x7666ac8f00000000, 0xe3b2dc1a00000000, 0x8a916c4600000000,
++ 0x1f451cd300000000, 0xe13efcb700000000, 0x74ea8c2200000000,
++ 0x33789c0e00000000, 0xa6acec9b00000000, 0x58d70cff00000000,
++ 0xcd037c6a00000000, 0xa420cc3600000000, 0x31f4bca300000000,
++ 0xcf8f5cc700000000, 0x5a5b2c5200000000, 0x41ab7d9f00000000,
++ 0xd47f0d0a00000000, 0x2a04ed6e00000000, 0xbfd09dfb00000000,
++ 0xd6f32da700000000, 0x43275d3200000000, 0xbd5cbd5600000000,
++ 0x2888cdc300000000, 0x6f1addef00000000, 0xfacead7a00000000,
++ 0x04b54d1e00000000, 0x91613d8b00000000, 0xf8428dd700000000,
++ 0x6d96fd4200000000, 0x93ed1d2600000000, 0x06396db300000000,
++ 0x168e285400000000, 0x835a58c100000000, 0x7d21b8a500000000,
++ 0xe8f5c83000000000, 0x81d6786c00000000, 0x140208f900000000,
++ 0xea79e89d00000000, 0x7fad980800000000, 0x383f882400000000,
++ 0xadebf8b100000000, 0x539018d500000000, 0xc644684000000000,
++ 0xaf67d81c00000000, 0x3ab3a88900000000, 0xc4c848ed00000000,
++ 0x511c387800000000, 0x4aec69b500000000, 0xdf38192000000000,
++ 0x2143f94400000000, 0xb49789d100000000, 0xddb4398d00000000,
++ 0x4860491800000000, 0xb61ba97c00000000, 0x23cfd9e900000000,
++ 0x645dc9c500000000, 0xf189b95000000000, 0x0ff2593400000000,
++ 0x9a2629a100000000, 0xf30599fd00000000, 0x66d1e96800000000,
++ 0x98aa090c00000000, 0x0d7e799900000000, 0xef4cdb4d00000000,
++ 0x7a98abd800000000, 0x84e34bbc00000000, 0x11373b2900000000,
++ 0x78148b7500000000, 0xedc0fbe000000000, 0x13bb1b8400000000,
++ 0x866f6b1100000000, 0xc1fd7b3d00000000, 0x54290ba800000000,
++ 0xaa52ebcc00000000, 0x3f869b5900000000, 0x56a52b0500000000,
++ 0xc3715b9000000000, 0x3d0abbf400000000, 0xa8decb6100000000,
++ 0xb32e9aac00000000, 0x26faea3900000000, 0xd8810a5d00000000,
++ 0x4d557ac800000000, 0x2476ca9400000000, 0xb1a2ba0100000000,
++ 0x4fd95a6500000000, 0xda0d2af000000000, 0x9d9f3adc00000000,
++ 0x084b4a4900000000, 0xf630aa2d00000000, 0x63e4dab800000000,
++ 0x0ac76ae400000000, 0x9f131a7100000000, 0x6168fa1500000000,
++ 0xf4bc8a8000000000},
++ {0x0000000000000000, 0x1f17f08000000000, 0x7f2891da00000000,
++ 0x603f615a00000000, 0xbf56536e00000000, 0xa041a3ee00000000,
++ 0xc07ec2b400000000, 0xdf69323400000000, 0x7eada6dc00000000,
++ 0x61ba565c00000000, 0x0185370600000000, 0x1e92c78600000000,
++ 0xc1fbf5b200000000, 0xdeec053200000000, 0xbed3646800000000,
++ 0xa1c494e800000000, 0xbd5c3c6200000000, 0xa24bcce200000000,
++ 0xc274adb800000000, 0xdd635d3800000000, 0x020a6f0c00000000,
++ 0x1d1d9f8c00000000, 0x7d22fed600000000, 0x62350e5600000000,
++ 0xc3f19abe00000000, 0xdce66a3e00000000, 0xbcd90b6400000000,
++ 0xa3cefbe400000000, 0x7ca7c9d000000000, 0x63b0395000000000,
++ 0x038f580a00000000, 0x1c98a88a00000000, 0x7ab978c400000000,
++ 0x65ae884400000000, 0x0591e91e00000000, 0x1a86199e00000000,
++ 0xc5ef2baa00000000, 0xdaf8db2a00000000, 0xbac7ba7000000000,
++ 0xa5d04af000000000, 0x0414de1800000000, 0x1b032e9800000000,
++ 0x7b3c4fc200000000, 0x642bbf4200000000, 0xbb428d7600000000,
++ 0xa4557df600000000, 0xc46a1cac00000000, 0xdb7dec2c00000000,
++ 0xc7e544a600000000, 0xd8f2b42600000000, 0xb8cdd57c00000000,
++ 0xa7da25fc00000000, 0x78b317c800000000, 0x67a4e74800000000,
++ 0x079b861200000000, 0x188c769200000000, 0xb948e27a00000000,
++ 0xa65f12fa00000000, 0xc66073a000000000, 0xd977832000000000,
++ 0x061eb11400000000, 0x1909419400000000, 0x793620ce00000000,
++ 0x6621d04e00000000, 0xb574805300000000, 0xaa6370d300000000,
++ 0xca5c118900000000, 0xd54be10900000000, 0x0a22d33d00000000,
++ 0x153523bd00000000, 0x750a42e700000000, 0x6a1db26700000000,
++ 0xcbd9268f00000000, 0xd4ced60f00000000, 0xb4f1b75500000000,
++ 0xabe647d500000000, 0x748f75e100000000, 0x6b98856100000000,
++ 0x0ba7e43b00000000, 0x14b014bb00000000, 0x0828bc3100000000,
++ 0x173f4cb100000000, 0x77002deb00000000, 0x6817dd6b00000000,
++ 0xb77eef5f00000000, 0xa8691fdf00000000, 0xc8567e8500000000,
++ 0xd7418e0500000000, 0x76851aed00000000, 0x6992ea6d00000000,
++ 0x09ad8b3700000000, 0x16ba7bb700000000, 0xc9d3498300000000,
++ 0xd6c4b90300000000, 0xb6fbd85900000000, 0xa9ec28d900000000,
++ 0xcfcdf89700000000, 0xd0da081700000000, 0xb0e5694d00000000,
++ 0xaff299cd00000000, 0x709babf900000000, 0x6f8c5b7900000000,
++ 0x0fb33a2300000000, 0x10a4caa300000000, 0xb1605e4b00000000,
++ 0xae77aecb00000000, 0xce48cf9100000000, 0xd15f3f1100000000,
++ 0x0e360d2500000000, 0x1121fda500000000, 0x711e9cff00000000,
++ 0x6e096c7f00000000, 0x7291c4f500000000, 0x6d86347500000000,
++ 0x0db9552f00000000, 0x12aea5af00000000, 0xcdc7979b00000000,
++ 0xd2d0671b00000000, 0xb2ef064100000000, 0xadf8f6c100000000,
++ 0x0c3c622900000000, 0x132b92a900000000, 0x7314f3f300000000,
++ 0x6c03037300000000, 0xb36a314700000000, 0xac7dc1c700000000,
++ 0xcc42a09d00000000, 0xd355501d00000000, 0x6ae900a700000000,
++ 0x75fef02700000000, 0x15c1917d00000000, 0x0ad661fd00000000,
++ 0xd5bf53c900000000, 0xcaa8a34900000000, 0xaa97c21300000000,
++ 0xb580329300000000, 0x1444a67b00000000, 0x0b5356fb00000000,
++ 0x6b6c37a100000000, 0x747bc72100000000, 0xab12f51500000000,
++ 0xb405059500000000, 0xd43a64cf00000000, 0xcb2d944f00000000,
++ 0xd7b53cc500000000, 0xc8a2cc4500000000, 0xa89dad1f00000000,
++ 0xb78a5d9f00000000, 0x68e36fab00000000, 0x77f49f2b00000000,
++ 0x17cbfe7100000000, 0x08dc0ef100000000, 0xa9189a1900000000,
++ 0xb60f6a9900000000, 0xd6300bc300000000, 0xc927fb4300000000,
++ 0x164ec97700000000, 0x095939f700000000, 0x696658ad00000000,
++ 0x7671a82d00000000, 0x1050786300000000, 0x0f4788e300000000,
++ 0x6f78e9b900000000, 0x706f193900000000, 0xaf062b0d00000000,
++ 0xb011db8d00000000, 0xd02ebad700000000, 0xcf394a5700000000,
++ 0x6efddebf00000000, 0x71ea2e3f00000000, 0x11d54f6500000000,
++ 0x0ec2bfe500000000, 0xd1ab8dd100000000, 0xcebc7d5100000000,
++ 0xae831c0b00000000, 0xb194ec8b00000000, 0xad0c440100000000,
++ 0xb21bb48100000000, 0xd224d5db00000000, 0xcd33255b00000000,
++ 0x125a176f00000000, 0x0d4de7ef00000000, 0x6d7286b500000000,
++ 0x7265763500000000, 0xd3a1e2dd00000000, 0xccb6125d00000000,
++ 0xac89730700000000, 0xb39e838700000000, 0x6cf7b1b300000000,
++ 0x73e0413300000000, 0x13df206900000000, 0x0cc8d0e900000000,
++ 0xdf9d80f400000000, 0xc08a707400000000, 0xa0b5112e00000000,
++ 0xbfa2e1ae00000000, 0x60cbd39a00000000, 0x7fdc231a00000000,
++ 0x1fe3424000000000, 0x00f4b2c000000000, 0xa130262800000000,
++ 0xbe27d6a800000000, 0xde18b7f200000000, 0xc10f477200000000,
++ 0x1e66754600000000, 0x017185c600000000, 0x614ee49c00000000,
++ 0x7e59141c00000000, 0x62c1bc9600000000, 0x7dd64c1600000000,
++ 0x1de92d4c00000000, 0x02feddcc00000000, 0xdd97eff800000000,
++ 0xc2801f7800000000, 0xa2bf7e2200000000, 0xbda88ea200000000,
++ 0x1c6c1a4a00000000, 0x037beaca00000000, 0x63448b9000000000,
++ 0x7c537b1000000000, 0xa33a492400000000, 0xbc2db9a400000000,
++ 0xdc12d8fe00000000, 0xc305287e00000000, 0xa524f83000000000,
++ 0xba3308b000000000, 0xda0c69ea00000000, 0xc51b996a00000000,
++ 0x1a72ab5e00000000, 0x05655bde00000000, 0x655a3a8400000000,
++ 0x7a4dca0400000000, 0xdb895eec00000000, 0xc49eae6c00000000,
++ 0xa4a1cf3600000000, 0xbbb63fb600000000, 0x64df0d8200000000,
++ 0x7bc8fd0200000000, 0x1bf79c5800000000, 0x04e06cd800000000,
++ 0x1878c45200000000, 0x076f34d200000000, 0x6750558800000000,
++ 0x7847a50800000000, 0xa72e973c00000000, 0xb83967bc00000000,
++ 0xd80606e600000000, 0xc711f66600000000, 0x66d5628e00000000,
++ 0x79c2920e00000000, 0x19fdf35400000000, 0x06ea03d400000000,
++ 0xd98331e000000000, 0xc694c16000000000, 0xa6aba03a00000000,
++ 0xb9bc50ba00000000},
++ {0x0000000000000000, 0xe2fd888d00000000, 0x85fd60c000000000,
++ 0x6700e84d00000000, 0x4bfdb05b00000000, 0xa90038d600000000,
++ 0xce00d09b00000000, 0x2cfd581600000000, 0x96fa61b700000000,
++ 0x7407e93a00000000, 0x1307017700000000, 0xf1fa89fa00000000,
++ 0xdd07d1ec00000000, 0x3ffa596100000000, 0x58fab12c00000000,
++ 0xba0739a100000000, 0x6df3b2b500000000, 0x8f0e3a3800000000,
++ 0xe80ed27500000000, 0x0af35af800000000, 0x260e02ee00000000,
++ 0xc4f38a6300000000, 0xa3f3622e00000000, 0x410eeaa300000000,
++ 0xfb09d30200000000, 0x19f45b8f00000000, 0x7ef4b3c200000000,
++ 0x9c093b4f00000000, 0xb0f4635900000000, 0x5209ebd400000000,
++ 0x3509039900000000, 0xd7f48b1400000000, 0x9be014b000000000,
++ 0x791d9c3d00000000, 0x1e1d747000000000, 0xfce0fcfd00000000,
++ 0xd01da4eb00000000, 0x32e02c6600000000, 0x55e0c42b00000000,
++ 0xb71d4ca600000000, 0x0d1a750700000000, 0xefe7fd8a00000000,
++ 0x88e715c700000000, 0x6a1a9d4a00000000, 0x46e7c55c00000000,
++ 0xa41a4dd100000000, 0xc31aa59c00000000, 0x21e72d1100000000,
++ 0xf613a60500000000, 0x14ee2e8800000000, 0x73eec6c500000000,
++ 0x91134e4800000000, 0xbdee165e00000000, 0x5f139ed300000000,
++ 0x3813769e00000000, 0xdaeefe1300000000, 0x60e9c7b200000000,
++ 0x82144f3f00000000, 0xe514a77200000000, 0x07e92fff00000000,
++ 0x2b1477e900000000, 0xc9e9ff6400000000, 0xaee9172900000000,
++ 0x4c149fa400000000, 0x77c758bb00000000, 0x953ad03600000000,
++ 0xf23a387b00000000, 0x10c7b0f600000000, 0x3c3ae8e000000000,
++ 0xdec7606d00000000, 0xb9c7882000000000, 0x5b3a00ad00000000,
++ 0xe13d390c00000000, 0x03c0b18100000000, 0x64c059cc00000000,
++ 0x863dd14100000000, 0xaac0895700000000, 0x483d01da00000000,
++ 0x2f3de99700000000, 0xcdc0611a00000000, 0x1a34ea0e00000000,
++ 0xf8c9628300000000, 0x9fc98ace00000000, 0x7d34024300000000,
++ 0x51c95a5500000000, 0xb334d2d800000000, 0xd4343a9500000000,
++ 0x36c9b21800000000, 0x8cce8bb900000000, 0x6e33033400000000,
++ 0x0933eb7900000000, 0xebce63f400000000, 0xc7333be200000000,
++ 0x25ceb36f00000000, 0x42ce5b2200000000, 0xa033d3af00000000,
++ 0xec274c0b00000000, 0x0edac48600000000, 0x69da2ccb00000000,
++ 0x8b27a44600000000, 0xa7dafc5000000000, 0x452774dd00000000,
++ 0x22279c9000000000, 0xc0da141d00000000, 0x7add2dbc00000000,
++ 0x9820a53100000000, 0xff204d7c00000000, 0x1dddc5f100000000,
++ 0x31209de700000000, 0xd3dd156a00000000, 0xb4ddfd2700000000,
++ 0x562075aa00000000, 0x81d4febe00000000, 0x6329763300000000,
++ 0x04299e7e00000000, 0xe6d416f300000000, 0xca294ee500000000,
++ 0x28d4c66800000000, 0x4fd42e2500000000, 0xad29a6a800000000,
++ 0x172e9f0900000000, 0xf5d3178400000000, 0x92d3ffc900000000,
++ 0x702e774400000000, 0x5cd32f5200000000, 0xbe2ea7df00000000,
++ 0xd92e4f9200000000, 0x3bd3c71f00000000, 0xaf88c0ad00000000,
++ 0x4d75482000000000, 0x2a75a06d00000000, 0xc88828e000000000,
++ 0xe47570f600000000, 0x0688f87b00000000, 0x6188103600000000,
++ 0x837598bb00000000, 0x3972a11a00000000, 0xdb8f299700000000,
++ 0xbc8fc1da00000000, 0x5e72495700000000, 0x728f114100000000,
++ 0x907299cc00000000, 0xf772718100000000, 0x158ff90c00000000,
++ 0xc27b721800000000, 0x2086fa9500000000, 0x478612d800000000,
++ 0xa57b9a5500000000, 0x8986c24300000000, 0x6b7b4ace00000000,
++ 0x0c7ba28300000000, 0xee862a0e00000000, 0x548113af00000000,
++ 0xb67c9b2200000000, 0xd17c736f00000000, 0x3381fbe200000000,
++ 0x1f7ca3f400000000, 0xfd812b7900000000, 0x9a81c33400000000,
++ 0x787c4bb900000000, 0x3468d41d00000000, 0xd6955c9000000000,
++ 0xb195b4dd00000000, 0x53683c5000000000, 0x7f95644600000000,
++ 0x9d68eccb00000000, 0xfa68048600000000, 0x18958c0b00000000,
++ 0xa292b5aa00000000, 0x406f3d2700000000, 0x276fd56a00000000,
++ 0xc5925de700000000, 0xe96f05f100000000, 0x0b928d7c00000000,
++ 0x6c92653100000000, 0x8e6fedbc00000000, 0x599b66a800000000,
++ 0xbb66ee2500000000, 0xdc66066800000000, 0x3e9b8ee500000000,
++ 0x1266d6f300000000, 0xf09b5e7e00000000, 0x979bb63300000000,
++ 0x75663ebe00000000, 0xcf61071f00000000, 0x2d9c8f9200000000,
++ 0x4a9c67df00000000, 0xa861ef5200000000, 0x849cb74400000000,
++ 0x66613fc900000000, 0x0161d78400000000, 0xe39c5f0900000000,
++ 0xd84f981600000000, 0x3ab2109b00000000, 0x5db2f8d600000000,
++ 0xbf4f705b00000000, 0x93b2284d00000000, 0x714fa0c000000000,
++ 0x164f488d00000000, 0xf4b2c00000000000, 0x4eb5f9a100000000,
++ 0xac48712c00000000, 0xcb48996100000000, 0x29b511ec00000000,
++ 0x054849fa00000000, 0xe7b5c17700000000, 0x80b5293a00000000,
++ 0x6248a1b700000000, 0xb5bc2aa300000000, 0x5741a22e00000000,
++ 0x30414a6300000000, 0xd2bcc2ee00000000, 0xfe419af800000000,
++ 0x1cbc127500000000, 0x7bbcfa3800000000, 0x994172b500000000,
++ 0x23464b1400000000, 0xc1bbc39900000000, 0xa6bb2bd400000000,
++ 0x4446a35900000000, 0x68bbfb4f00000000, 0x8a4673c200000000,
++ 0xed469b8f00000000, 0x0fbb130200000000, 0x43af8ca600000000,
++ 0xa152042b00000000, 0xc652ec6600000000, 0x24af64eb00000000,
++ 0x08523cfd00000000, 0xeaafb47000000000, 0x8daf5c3d00000000,
++ 0x6f52d4b000000000, 0xd555ed1100000000, 0x37a8659c00000000,
++ 0x50a88dd100000000, 0xb255055c00000000, 0x9ea85d4a00000000,
++ 0x7c55d5c700000000, 0x1b553d8a00000000, 0xf9a8b50700000000,
++ 0x2e5c3e1300000000, 0xcca1b69e00000000, 0xaba15ed300000000,
++ 0x495cd65e00000000, 0x65a18e4800000000, 0x875c06c500000000,
++ 0xe05cee8800000000, 0x02a1660500000000, 0xb8a65fa400000000,
++ 0x5a5bd72900000000, 0x3d5b3f6400000000, 0xdfa6b7e900000000,
++ 0xf35befff00000000, 0x11a6677200000000, 0x76a68f3f00000000,
++ 0x945b07b200000000},
++ {0x0000000000000000, 0xa90b894e00000000, 0x5217129d00000000,
++ 0xfb1c9bd300000000, 0xe52855e100000000, 0x4c23dcaf00000000,
++ 0xb73f477c00000000, 0x1e34ce3200000000, 0x8b57db1900000000,
++ 0x225c525700000000, 0xd940c98400000000, 0x704b40ca00000000,
++ 0x6e7f8ef800000000, 0xc77407b600000000, 0x3c689c6500000000,
++ 0x9563152b00000000, 0x16afb63300000000, 0xbfa43f7d00000000,
++ 0x44b8a4ae00000000, 0xedb32de000000000, 0xf387e3d200000000,
++ 0x5a8c6a9c00000000, 0xa190f14f00000000, 0x089b780100000000,
++ 0x9df86d2a00000000, 0x34f3e46400000000, 0xcfef7fb700000000,
++ 0x66e4f6f900000000, 0x78d038cb00000000, 0xd1dbb18500000000,
++ 0x2ac72a5600000000, 0x83cca31800000000, 0x2c5e6d6700000000,
++ 0x8555e42900000000, 0x7e497ffa00000000, 0xd742f6b400000000,
++ 0xc976388600000000, 0x607db1c800000000, 0x9b612a1b00000000,
++ 0x326aa35500000000, 0xa709b67e00000000, 0x0e023f3000000000,
++ 0xf51ea4e300000000, 0x5c152dad00000000, 0x4221e39f00000000,
++ 0xeb2a6ad100000000, 0x1036f10200000000, 0xb93d784c00000000,
++ 0x3af1db5400000000, 0x93fa521a00000000, 0x68e6c9c900000000,
++ 0xc1ed408700000000, 0xdfd98eb500000000, 0x76d207fb00000000,
++ 0x8dce9c2800000000, 0x24c5156600000000, 0xb1a6004d00000000,
++ 0x18ad890300000000, 0xe3b112d000000000, 0x4aba9b9e00000000,
++ 0x548e55ac00000000, 0xfd85dce200000000, 0x0699473100000000,
++ 0xaf92ce7f00000000, 0x58bcdace00000000, 0xf1b7538000000000,
++ 0x0aabc85300000000, 0xa3a0411d00000000, 0xbd948f2f00000000,
++ 0x149f066100000000, 0xef839db200000000, 0x468814fc00000000,
++ 0xd3eb01d700000000, 0x7ae0889900000000, 0x81fc134a00000000,
++ 0x28f79a0400000000, 0x36c3543600000000, 0x9fc8dd7800000000,
++ 0x64d446ab00000000, 0xcddfcfe500000000, 0x4e136cfd00000000,
++ 0xe718e5b300000000, 0x1c047e6000000000, 0xb50ff72e00000000,
++ 0xab3b391c00000000, 0x0230b05200000000, 0xf92c2b8100000000,
++ 0x5027a2cf00000000, 0xc544b7e400000000, 0x6c4f3eaa00000000,
++ 0x9753a57900000000, 0x3e582c3700000000, 0x206ce20500000000,
++ 0x89676b4b00000000, 0x727bf09800000000, 0xdb7079d600000000,
++ 0x74e2b7a900000000, 0xdde93ee700000000, 0x26f5a53400000000,
++ 0x8ffe2c7a00000000, 0x91cae24800000000, 0x38c16b0600000000,
++ 0xc3ddf0d500000000, 0x6ad6799b00000000, 0xffb56cb000000000,
++ 0x56bee5fe00000000, 0xada27e2d00000000, 0x04a9f76300000000,
++ 0x1a9d395100000000, 0xb396b01f00000000, 0x488a2bcc00000000,
++ 0xe181a28200000000, 0x624d019a00000000, 0xcb4688d400000000,
++ 0x305a130700000000, 0x99519a4900000000, 0x8765547b00000000,
++ 0x2e6edd3500000000, 0xd57246e600000000, 0x7c79cfa800000000,
++ 0xe91ada8300000000, 0x401153cd00000000, 0xbb0dc81e00000000,
++ 0x1206415000000000, 0x0c328f6200000000, 0xa539062c00000000,
++ 0x5e259dff00000000, 0xf72e14b100000000, 0xf17ec44600000000,
++ 0x58754d0800000000, 0xa369d6db00000000, 0x0a625f9500000000,
++ 0x145691a700000000, 0xbd5d18e900000000, 0x4641833a00000000,
++ 0xef4a0a7400000000, 0x7a291f5f00000000, 0xd322961100000000,
++ 0x283e0dc200000000, 0x8135848c00000000, 0x9f014abe00000000,
++ 0x360ac3f000000000, 0xcd16582300000000, 0x641dd16d00000000,
++ 0xe7d1727500000000, 0x4edafb3b00000000, 0xb5c660e800000000,
++ 0x1ccde9a600000000, 0x02f9279400000000, 0xabf2aeda00000000,
++ 0x50ee350900000000, 0xf9e5bc4700000000, 0x6c86a96c00000000,
++ 0xc58d202200000000, 0x3e91bbf100000000, 0x979a32bf00000000,
++ 0x89aefc8d00000000, 0x20a575c300000000, 0xdbb9ee1000000000,
++ 0x72b2675e00000000, 0xdd20a92100000000, 0x742b206f00000000,
++ 0x8f37bbbc00000000, 0x263c32f200000000, 0x3808fcc000000000,
++ 0x9103758e00000000, 0x6a1fee5d00000000, 0xc314671300000000,
++ 0x5677723800000000, 0xff7cfb7600000000, 0x046060a500000000,
++ 0xad6be9eb00000000, 0xb35f27d900000000, 0x1a54ae9700000000,
++ 0xe148354400000000, 0x4843bc0a00000000, 0xcb8f1f1200000000,
++ 0x6284965c00000000, 0x99980d8f00000000, 0x309384c100000000,
++ 0x2ea74af300000000, 0x87acc3bd00000000, 0x7cb0586e00000000,
++ 0xd5bbd12000000000, 0x40d8c40b00000000, 0xe9d34d4500000000,
++ 0x12cfd69600000000, 0xbbc45fd800000000, 0xa5f091ea00000000,
++ 0x0cfb18a400000000, 0xf7e7837700000000, 0x5eec0a3900000000,
++ 0xa9c21e8800000000, 0x00c997c600000000, 0xfbd50c1500000000,
++ 0x52de855b00000000, 0x4cea4b6900000000, 0xe5e1c22700000000,
++ 0x1efd59f400000000, 0xb7f6d0ba00000000, 0x2295c59100000000,
++ 0x8b9e4cdf00000000, 0x7082d70c00000000, 0xd9895e4200000000,
++ 0xc7bd907000000000, 0x6eb6193e00000000, 0x95aa82ed00000000,
++ 0x3ca10ba300000000, 0xbf6da8bb00000000, 0x166621f500000000,
++ 0xed7aba2600000000, 0x4471336800000000, 0x5a45fd5a00000000,
++ 0xf34e741400000000, 0x0852efc700000000, 0xa159668900000000,
++ 0x343a73a200000000, 0x9d31faec00000000, 0x662d613f00000000,
++ 0xcf26e87100000000, 0xd112264300000000, 0x7819af0d00000000,
++ 0x830534de00000000, 0x2a0ebd9000000000, 0x859c73ef00000000,
++ 0x2c97faa100000000, 0xd78b617200000000, 0x7e80e83c00000000,
++ 0x60b4260e00000000, 0xc9bfaf4000000000, 0x32a3349300000000,
++ 0x9ba8bddd00000000, 0x0ecba8f600000000, 0xa7c021b800000000,
++ 0x5cdcba6b00000000, 0xf5d7332500000000, 0xebe3fd1700000000,
++ 0x42e8745900000000, 0xb9f4ef8a00000000, 0x10ff66c400000000,
++ 0x9333c5dc00000000, 0x3a384c9200000000, 0xc124d74100000000,
++ 0x682f5e0f00000000, 0x761b903d00000000, 0xdf10197300000000,
++ 0x240c82a000000000, 0x8d070bee00000000, 0x18641ec500000000,
++ 0xb16f978b00000000, 0x4a730c5800000000, 0xe378851600000000,
++ 0xfd4c4b2400000000, 0x5447c26a00000000, 0xaf5b59b900000000,
++ 0x0650d0f700000000},
++ {0x0000000000000000, 0x479244af00000000, 0xcf22f88500000000,
++ 0x88b0bc2a00000000, 0xdf4381d000000000, 0x98d1c57f00000000,
++ 0x1061795500000000, 0x57f33dfa00000000, 0xff81737a00000000,
++ 0xb81337d500000000, 0x30a38bff00000000, 0x7731cf5000000000,
++ 0x20c2f2aa00000000, 0x6750b60500000000, 0xefe00a2f00000000,
++ 0xa8724e8000000000, 0xfe03e7f400000000, 0xb991a35b00000000,
++ 0x31211f7100000000, 0x76b35bde00000000, 0x2140662400000000,
++ 0x66d2228b00000000, 0xee629ea100000000, 0xa9f0da0e00000000,
++ 0x0182948e00000000, 0x4610d02100000000, 0xcea06c0b00000000,
++ 0x893228a400000000, 0xdec1155e00000000, 0x995351f100000000,
++ 0x11e3eddb00000000, 0x5671a97400000000, 0xbd01bf3200000000,
++ 0xfa93fb9d00000000, 0x722347b700000000, 0x35b1031800000000,
++ 0x62423ee200000000, 0x25d07a4d00000000, 0xad60c66700000000,
++ 0xeaf282c800000000, 0x4280cc4800000000, 0x051288e700000000,
++ 0x8da234cd00000000, 0xca30706200000000, 0x9dc34d9800000000,
++ 0xda51093700000000, 0x52e1b51d00000000, 0x1573f1b200000000,
++ 0x430258c600000000, 0x04901c6900000000, 0x8c20a04300000000,
++ 0xcbb2e4ec00000000, 0x9c41d91600000000, 0xdbd39db900000000,
++ 0x5363219300000000, 0x14f1653c00000000, 0xbc832bbc00000000,
++ 0xfb116f1300000000, 0x73a1d33900000000, 0x3433979600000000,
++ 0x63c0aa6c00000000, 0x2452eec300000000, 0xace252e900000000,
++ 0xeb70164600000000, 0x7a037e6500000000, 0x3d913aca00000000,
++ 0xb52186e000000000, 0xf2b3c24f00000000, 0xa540ffb500000000,
++ 0xe2d2bb1a00000000, 0x6a62073000000000, 0x2df0439f00000000,
++ 0x85820d1f00000000, 0xc21049b000000000, 0x4aa0f59a00000000,
++ 0x0d32b13500000000, 0x5ac18ccf00000000, 0x1d53c86000000000,
++ 0x95e3744a00000000, 0xd27130e500000000, 0x8400999100000000,
++ 0xc392dd3e00000000, 0x4b22611400000000, 0x0cb025bb00000000,
++ 0x5b43184100000000, 0x1cd15cee00000000, 0x9461e0c400000000,
++ 0xd3f3a46b00000000, 0x7b81eaeb00000000, 0x3c13ae4400000000,
++ 0xb4a3126e00000000, 0xf33156c100000000, 0xa4c26b3b00000000,
++ 0xe3502f9400000000, 0x6be093be00000000, 0x2c72d71100000000,
++ 0xc702c15700000000, 0x809085f800000000, 0x082039d200000000,
++ 0x4fb27d7d00000000, 0x1841408700000000, 0x5fd3042800000000,
++ 0xd763b80200000000, 0x90f1fcad00000000, 0x3883b22d00000000,
++ 0x7f11f68200000000, 0xf7a14aa800000000, 0xb0330e0700000000,
++ 0xe7c033fd00000000, 0xa052775200000000, 0x28e2cb7800000000,
++ 0x6f708fd700000000, 0x390126a300000000, 0x7e93620c00000000,
++ 0xf623de2600000000, 0xb1b19a8900000000, 0xe642a77300000000,
++ 0xa1d0e3dc00000000, 0x29605ff600000000, 0x6ef21b5900000000,
++ 0xc68055d900000000, 0x8112117600000000, 0x09a2ad5c00000000,
++ 0x4e30e9f300000000, 0x19c3d40900000000, 0x5e5190a600000000,
++ 0xd6e12c8c00000000, 0x9173682300000000, 0xf406fcca00000000,
++ 0xb394b86500000000, 0x3b24044f00000000, 0x7cb640e000000000,
++ 0x2b457d1a00000000, 0x6cd739b500000000, 0xe467859f00000000,
++ 0xa3f5c13000000000, 0x0b878fb000000000, 0x4c15cb1f00000000,
++ 0xc4a5773500000000, 0x8337339a00000000, 0xd4c40e6000000000,
++ 0x93564acf00000000, 0x1be6f6e500000000, 0x5c74b24a00000000,
++ 0x0a051b3e00000000, 0x4d975f9100000000, 0xc527e3bb00000000,
++ 0x82b5a71400000000, 0xd5469aee00000000, 0x92d4de4100000000,
++ 0x1a64626b00000000, 0x5df626c400000000, 0xf584684400000000,
++ 0xb2162ceb00000000, 0x3aa690c100000000, 0x7d34d46e00000000,
++ 0x2ac7e99400000000, 0x6d55ad3b00000000, 0xe5e5111100000000,
++ 0xa27755be00000000, 0x490743f800000000, 0x0e95075700000000,
++ 0x8625bb7d00000000, 0xc1b7ffd200000000, 0x9644c22800000000,
++ 0xd1d6868700000000, 0x59663aad00000000, 0x1ef47e0200000000,
++ 0xb686308200000000, 0xf114742d00000000, 0x79a4c80700000000,
++ 0x3e368ca800000000, 0x69c5b15200000000, 0x2e57f5fd00000000,
++ 0xa6e749d700000000, 0xe1750d7800000000, 0xb704a40c00000000,
++ 0xf096e0a300000000, 0x78265c8900000000, 0x3fb4182600000000,
++ 0x684725dc00000000, 0x2fd5617300000000, 0xa765dd5900000000,
++ 0xe0f799f600000000, 0x4885d77600000000, 0x0f1793d900000000,
++ 0x87a72ff300000000, 0xc0356b5c00000000, 0x97c656a600000000,
++ 0xd054120900000000, 0x58e4ae2300000000, 0x1f76ea8c00000000,
++ 0x8e0582af00000000, 0xc997c60000000000, 0x41277a2a00000000,
++ 0x06b53e8500000000, 0x5146037f00000000, 0x16d447d000000000,
++ 0x9e64fbfa00000000, 0xd9f6bf5500000000, 0x7184f1d500000000,
++ 0x3616b57a00000000, 0xbea6095000000000, 0xf9344dff00000000,
++ 0xaec7700500000000, 0xe95534aa00000000, 0x61e5888000000000,
++ 0x2677cc2f00000000, 0x7006655b00000000, 0x379421f400000000,
++ 0xbf249dde00000000, 0xf8b6d97100000000, 0xaf45e48b00000000,
++ 0xe8d7a02400000000, 0x60671c0e00000000, 0x27f558a100000000,
++ 0x8f87162100000000, 0xc815528e00000000, 0x40a5eea400000000,
++ 0x0737aa0b00000000, 0x50c497f100000000, 0x1756d35e00000000,
++ 0x9fe66f7400000000, 0xd8742bdb00000000, 0x33043d9d00000000,
++ 0x7496793200000000, 0xfc26c51800000000, 0xbbb481b700000000,
++ 0xec47bc4d00000000, 0xabd5f8e200000000, 0x236544c800000000,
++ 0x64f7006700000000, 0xcc854ee700000000, 0x8b170a4800000000,
++ 0x03a7b66200000000, 0x4435f2cd00000000, 0x13c6cf3700000000,
++ 0x54548b9800000000, 0xdce437b200000000, 0x9b76731d00000000,
++ 0xcd07da6900000000, 0x8a959ec600000000, 0x022522ec00000000,
++ 0x45b7664300000000, 0x12445bb900000000, 0x55d61f1600000000,
++ 0xdd66a33c00000000, 0x9af4e79300000000, 0x3286a91300000000,
++ 0x7514edbc00000000, 0xfda4519600000000, 0xba36153900000000,
++ 0xedc528c300000000, 0xaa576c6c00000000, 0x22e7d04600000000,
++ 0x657594e900000000}};
++
++#else /* W == 4 */
++
++local const z_crc_t FAR crc_braid_table[][256] = {
++ {0x00000000, 0x65673b46, 0xcace768c, 0xafa94dca, 0x4eedeb59,
++ 0x2b8ad01f, 0x84239dd5, 0xe144a693, 0x9ddbd6b2, 0xf8bcedf4,
++ 0x5715a03e, 0x32729b78, 0xd3363deb, 0xb65106ad, 0x19f84b67,
++ 0x7c9f7021, 0xe0c6ab25, 0x85a19063, 0x2a08dda9, 0x4f6fe6ef,
++ 0xae2b407c, 0xcb4c7b3a, 0x64e536f0, 0x01820db6, 0x7d1d7d97,
++ 0x187a46d1, 0xb7d30b1b, 0xd2b4305d, 0x33f096ce, 0x5697ad88,
++ 0xf93ee042, 0x9c59db04, 0x1afc500b, 0x7f9b6b4d, 0xd0322687,
++ 0xb5551dc1, 0x5411bb52, 0x31768014, 0x9edfcdde, 0xfbb8f698,
++ 0x872786b9, 0xe240bdff, 0x4de9f035, 0x288ecb73, 0xc9ca6de0,
++ 0xacad56a6, 0x03041b6c, 0x6663202a, 0xfa3afb2e, 0x9f5dc068,
++ 0x30f48da2, 0x5593b6e4, 0xb4d71077, 0xd1b02b31, 0x7e1966fb,
++ 0x1b7e5dbd, 0x67e12d9c, 0x028616da, 0xad2f5b10, 0xc8486056,
++ 0x290cc6c5, 0x4c6bfd83, 0xe3c2b049, 0x86a58b0f, 0x35f8a016,
++ 0x509f9b50, 0xff36d69a, 0x9a51eddc, 0x7b154b4f, 0x1e727009,
++ 0xb1db3dc3, 0xd4bc0685, 0xa82376a4, 0xcd444de2, 0x62ed0028,
++ 0x078a3b6e, 0xe6ce9dfd, 0x83a9a6bb, 0x2c00eb71, 0x4967d037,
++ 0xd53e0b33, 0xb0593075, 0x1ff07dbf, 0x7a9746f9, 0x9bd3e06a,
++ 0xfeb4db2c, 0x511d96e6, 0x347aada0, 0x48e5dd81, 0x2d82e6c7,
++ 0x822bab0d, 0xe74c904b, 0x060836d8, 0x636f0d9e, 0xccc64054,
++ 0xa9a17b12, 0x2f04f01d, 0x4a63cb5b, 0xe5ca8691, 0x80adbdd7,
++ 0x61e91b44, 0x048e2002, 0xab276dc8, 0xce40568e, 0xb2df26af,
++ 0xd7b81de9, 0x78115023, 0x1d766b65, 0xfc32cdf6, 0x9955f6b0,
++ 0x36fcbb7a, 0x539b803c, 0xcfc25b38, 0xaaa5607e, 0x050c2db4,
++ 0x606b16f2, 0x812fb061, 0xe4488b27, 0x4be1c6ed, 0x2e86fdab,
++ 0x52198d8a, 0x377eb6cc, 0x98d7fb06, 0xfdb0c040, 0x1cf466d3,
++ 0x79935d95, 0xd63a105f, 0xb35d2b19, 0x6bf1402c, 0x0e967b6a,
++ 0xa13f36a0, 0xc4580de6, 0x251cab75, 0x407b9033, 0xefd2ddf9,
++ 0x8ab5e6bf, 0xf62a969e, 0x934dadd8, 0x3ce4e012, 0x5983db54,
++ 0xb8c77dc7, 0xdda04681, 0x72090b4b, 0x176e300d, 0x8b37eb09,
++ 0xee50d04f, 0x41f99d85, 0x249ea6c3, 0xc5da0050, 0xa0bd3b16,
++ 0x0f1476dc, 0x6a734d9a, 0x16ec3dbb, 0x738b06fd, 0xdc224b37,
++ 0xb9457071, 0x5801d6e2, 0x3d66eda4, 0x92cfa06e, 0xf7a89b28,
++ 0x710d1027, 0x146a2b61, 0xbbc366ab, 0xdea45ded, 0x3fe0fb7e,
++ 0x5a87c038, 0xf52e8df2, 0x9049b6b4, 0xecd6c695, 0x89b1fdd3,
++ 0x2618b019, 0x437f8b5f, 0xa23b2dcc, 0xc75c168a, 0x68f55b40,
++ 0x0d926006, 0x91cbbb02, 0xf4ac8044, 0x5b05cd8e, 0x3e62f6c8,
++ 0xdf26505b, 0xba416b1d, 0x15e826d7, 0x708f1d91, 0x0c106db0,
++ 0x697756f6, 0xc6de1b3c, 0xa3b9207a, 0x42fd86e9, 0x279abdaf,
++ 0x8833f065, 0xed54cb23, 0x5e09e03a, 0x3b6edb7c, 0x94c796b6,
++ 0xf1a0adf0, 0x10e40b63, 0x75833025, 0xda2a7def, 0xbf4d46a9,
++ 0xc3d23688, 0xa6b50dce, 0x091c4004, 0x6c7b7b42, 0x8d3fddd1,
++ 0xe858e697, 0x47f1ab5d, 0x2296901b, 0xbecf4b1f, 0xdba87059,
++ 0x74013d93, 0x116606d5, 0xf022a046, 0x95459b00, 0x3aecd6ca,
++ 0x5f8bed8c, 0x23149dad, 0x4673a6eb, 0xe9daeb21, 0x8cbdd067,
++ 0x6df976f4, 0x089e4db2, 0xa7370078, 0xc2503b3e, 0x44f5b031,
++ 0x21928b77, 0x8e3bc6bd, 0xeb5cfdfb, 0x0a185b68, 0x6f7f602e,
++ 0xc0d62de4, 0xa5b116a2, 0xd92e6683, 0xbc495dc5, 0x13e0100f,
++ 0x76872b49, 0x97c38dda, 0xf2a4b69c, 0x5d0dfb56, 0x386ac010,
++ 0xa4331b14, 0xc1542052, 0x6efd6d98, 0x0b9a56de, 0xeadef04d,
++ 0x8fb9cb0b, 0x201086c1, 0x4577bd87, 0x39e8cda6, 0x5c8ff6e0,
++ 0xf326bb2a, 0x9641806c, 0x770526ff, 0x12621db9, 0xbdcb5073,
++ 0xd8ac6b35},
++ {0x00000000, 0xd7e28058, 0x74b406f1, 0xa35686a9, 0xe9680de2,
++ 0x3e8a8dba, 0x9ddc0b13, 0x4a3e8b4b, 0x09a11d85, 0xde439ddd,
++ 0x7d151b74, 0xaaf79b2c, 0xe0c91067, 0x372b903f, 0x947d1696,
++ 0x439f96ce, 0x13423b0a, 0xc4a0bb52, 0x67f63dfb, 0xb014bda3,
++ 0xfa2a36e8, 0x2dc8b6b0, 0x8e9e3019, 0x597cb041, 0x1ae3268f,
++ 0xcd01a6d7, 0x6e57207e, 0xb9b5a026, 0xf38b2b6d, 0x2469ab35,
++ 0x873f2d9c, 0x50ddadc4, 0x26847614, 0xf166f64c, 0x523070e5,
++ 0x85d2f0bd, 0xcfec7bf6, 0x180efbae, 0xbb587d07, 0x6cbafd5f,
++ 0x2f256b91, 0xf8c7ebc9, 0x5b916d60, 0x8c73ed38, 0xc64d6673,
++ 0x11afe62b, 0xb2f96082, 0x651be0da, 0x35c64d1e, 0xe224cd46,
++ 0x41724bef, 0x9690cbb7, 0xdcae40fc, 0x0b4cc0a4, 0xa81a460d,
++ 0x7ff8c655, 0x3c67509b, 0xeb85d0c3, 0x48d3566a, 0x9f31d632,
++ 0xd50f5d79, 0x02eddd21, 0xa1bb5b88, 0x7659dbd0, 0x4d08ec28,
++ 0x9aea6c70, 0x39bcead9, 0xee5e6a81, 0xa460e1ca, 0x73826192,
++ 0xd0d4e73b, 0x07366763, 0x44a9f1ad, 0x934b71f5, 0x301df75c,
++ 0xe7ff7704, 0xadc1fc4f, 0x7a237c17, 0xd975fabe, 0x0e977ae6,
++ 0x5e4ad722, 0x89a8577a, 0x2afed1d3, 0xfd1c518b, 0xb722dac0,
++ 0x60c05a98, 0xc396dc31, 0x14745c69, 0x57ebcaa7, 0x80094aff,
++ 0x235fcc56, 0xf4bd4c0e, 0xbe83c745, 0x6961471d, 0xca37c1b4,
++ 0x1dd541ec, 0x6b8c9a3c, 0xbc6e1a64, 0x1f389ccd, 0xc8da1c95,
++ 0x82e497de, 0x55061786, 0xf650912f, 0x21b21177, 0x622d87b9,
++ 0xb5cf07e1, 0x16998148, 0xc17b0110, 0x8b458a5b, 0x5ca70a03,
++ 0xfff18caa, 0x28130cf2, 0x78cea136, 0xaf2c216e, 0x0c7aa7c7,
++ 0xdb98279f, 0x91a6acd4, 0x46442c8c, 0xe512aa25, 0x32f02a7d,
++ 0x716fbcb3, 0xa68d3ceb, 0x05dbba42, 0xd2393a1a, 0x9807b151,
++ 0x4fe53109, 0xecb3b7a0, 0x3b5137f8, 0x9a11d850, 0x4df35808,
++ 0xeea5dea1, 0x39475ef9, 0x7379d5b2, 0xa49b55ea, 0x07cdd343,
++ 0xd02f531b, 0x93b0c5d5, 0x4452458d, 0xe704c324, 0x30e6437c,
++ 0x7ad8c837, 0xad3a486f, 0x0e6ccec6, 0xd98e4e9e, 0x8953e35a,
++ 0x5eb16302, 0xfde7e5ab, 0x2a0565f3, 0x603beeb8, 0xb7d96ee0,
++ 0x148fe849, 0xc36d6811, 0x80f2fedf, 0x57107e87, 0xf446f82e,
++ 0x23a47876, 0x699af33d, 0xbe787365, 0x1d2ef5cc, 0xcacc7594,
++ 0xbc95ae44, 0x6b772e1c, 0xc821a8b5, 0x1fc328ed, 0x55fda3a6,
++ 0x821f23fe, 0x2149a557, 0xf6ab250f, 0xb534b3c1, 0x62d63399,
++ 0xc180b530, 0x16623568, 0x5c5cbe23, 0x8bbe3e7b, 0x28e8b8d2,
++ 0xff0a388a, 0xafd7954e, 0x78351516, 0xdb6393bf, 0x0c8113e7,
++ 0x46bf98ac, 0x915d18f4, 0x320b9e5d, 0xe5e91e05, 0xa67688cb,
++ 0x71940893, 0xd2c28e3a, 0x05200e62, 0x4f1e8529, 0x98fc0571,
++ 0x3baa83d8, 0xec480380, 0xd7193478, 0x00fbb420, 0xa3ad3289,
++ 0x744fb2d1, 0x3e71399a, 0xe993b9c2, 0x4ac53f6b, 0x9d27bf33,
++ 0xdeb829fd, 0x095aa9a5, 0xaa0c2f0c, 0x7deeaf54, 0x37d0241f,
++ 0xe032a447, 0x436422ee, 0x9486a2b6, 0xc45b0f72, 0x13b98f2a,
++ 0xb0ef0983, 0x670d89db, 0x2d330290, 0xfad182c8, 0x59870461,
++ 0x8e658439, 0xcdfa12f7, 0x1a1892af, 0xb94e1406, 0x6eac945e,
++ 0x24921f15, 0xf3709f4d, 0x502619e4, 0x87c499bc, 0xf19d426c,
++ 0x267fc234, 0x8529449d, 0x52cbc4c5, 0x18f54f8e, 0xcf17cfd6,
++ 0x6c41497f, 0xbba3c927, 0xf83c5fe9, 0x2fdedfb1, 0x8c885918,
++ 0x5b6ad940, 0x1154520b, 0xc6b6d253, 0x65e054fa, 0xb202d4a2,
++ 0xe2df7966, 0x353df93e, 0x966b7f97, 0x4189ffcf, 0x0bb77484,
++ 0xdc55f4dc, 0x7f037275, 0xa8e1f22d, 0xeb7e64e3, 0x3c9ce4bb,
++ 0x9fca6212, 0x4828e24a, 0x02166901, 0xd5f4e959, 0x76a26ff0,
++ 0xa140efa8},
++ {0x00000000, 0xef52b6e1, 0x05d46b83, 0xea86dd62, 0x0ba8d706,
++ 0xe4fa61e7, 0x0e7cbc85, 0xe12e0a64, 0x1751ae0c, 0xf80318ed,
++ 0x1285c58f, 0xfdd7736e, 0x1cf9790a, 0xf3abcfeb, 0x192d1289,
++ 0xf67fa468, 0x2ea35c18, 0xc1f1eaf9, 0x2b77379b, 0xc425817a,
++ 0x250b8b1e, 0xca593dff, 0x20dfe09d, 0xcf8d567c, 0x39f2f214,
++ 0xd6a044f5, 0x3c269997, 0xd3742f76, 0x325a2512, 0xdd0893f3,
++ 0x378e4e91, 0xd8dcf870, 0x5d46b830, 0xb2140ed1, 0x5892d3b3,
++ 0xb7c06552, 0x56ee6f36, 0xb9bcd9d7, 0x533a04b5, 0xbc68b254,
++ 0x4a17163c, 0xa545a0dd, 0x4fc37dbf, 0xa091cb5e, 0x41bfc13a,
++ 0xaeed77db, 0x446baab9, 0xab391c58, 0x73e5e428, 0x9cb752c9,
++ 0x76318fab, 0x9963394a, 0x784d332e, 0x971f85cf, 0x7d9958ad,
++ 0x92cbee4c, 0x64b44a24, 0x8be6fcc5, 0x616021a7, 0x8e329746,
++ 0x6f1c9d22, 0x804e2bc3, 0x6ac8f6a1, 0x859a4040, 0xba8d7060,
++ 0x55dfc681, 0xbf591be3, 0x500bad02, 0xb125a766, 0x5e771187,
++ 0xb4f1cce5, 0x5ba37a04, 0xaddcde6c, 0x428e688d, 0xa808b5ef,
++ 0x475a030e, 0xa674096a, 0x4926bf8b, 0xa3a062e9, 0x4cf2d408,
++ 0x942e2c78, 0x7b7c9a99, 0x91fa47fb, 0x7ea8f11a, 0x9f86fb7e,
++ 0x70d44d9f, 0x9a5290fd, 0x7500261c, 0x837f8274, 0x6c2d3495,
++ 0x86abe9f7, 0x69f95f16, 0x88d75572, 0x6785e393, 0x8d033ef1,
++ 0x62518810, 0xe7cbc850, 0x08997eb1, 0xe21fa3d3, 0x0d4d1532,
++ 0xec631f56, 0x0331a9b7, 0xe9b774d5, 0x06e5c234, 0xf09a665c,
++ 0x1fc8d0bd, 0xf54e0ddf, 0x1a1cbb3e, 0xfb32b15a, 0x146007bb,
++ 0xfee6dad9, 0x11b46c38, 0xc9689448, 0x263a22a9, 0xccbcffcb,
++ 0x23ee492a, 0xc2c0434e, 0x2d92f5af, 0xc71428cd, 0x28469e2c,
++ 0xde393a44, 0x316b8ca5, 0xdbed51c7, 0x34bfe726, 0xd591ed42,
++ 0x3ac35ba3, 0xd04586c1, 0x3f173020, 0xae6be681, 0x41395060,
++ 0xabbf8d02, 0x44ed3be3, 0xa5c33187, 0x4a918766, 0xa0175a04,
++ 0x4f45ece5, 0xb93a488d, 0x5668fe6c, 0xbcee230e, 0x53bc95ef,
++ 0xb2929f8b, 0x5dc0296a, 0xb746f408, 0x581442e9, 0x80c8ba99,
++ 0x6f9a0c78, 0x851cd11a, 0x6a4e67fb, 0x8b606d9f, 0x6432db7e,
++ 0x8eb4061c, 0x61e6b0fd, 0x97991495, 0x78cba274, 0x924d7f16,
++ 0x7d1fc9f7, 0x9c31c393, 0x73637572, 0x99e5a810, 0x76b71ef1,
++ 0xf32d5eb1, 0x1c7fe850, 0xf6f93532, 0x19ab83d3, 0xf88589b7,
++ 0x17d73f56, 0xfd51e234, 0x120354d5, 0xe47cf0bd, 0x0b2e465c,
++ 0xe1a89b3e, 0x0efa2ddf, 0xefd427bb, 0x0086915a, 0xea004c38,
++ 0x0552fad9, 0xdd8e02a9, 0x32dcb448, 0xd85a692a, 0x3708dfcb,
++ 0xd626d5af, 0x3974634e, 0xd3f2be2c, 0x3ca008cd, 0xcadfaca5,
++ 0x258d1a44, 0xcf0bc726, 0x205971c7, 0xc1777ba3, 0x2e25cd42,
++ 0xc4a31020, 0x2bf1a6c1, 0x14e696e1, 0xfbb42000, 0x1132fd62,
++ 0xfe604b83, 0x1f4e41e7, 0xf01cf706, 0x1a9a2a64, 0xf5c89c85,
++ 0x03b738ed, 0xece58e0c, 0x0663536e, 0xe931e58f, 0x081fefeb,
++ 0xe74d590a, 0x0dcb8468, 0xe2993289, 0x3a45caf9, 0xd5177c18,
++ 0x3f91a17a, 0xd0c3179b, 0x31ed1dff, 0xdebfab1e, 0x3439767c,
++ 0xdb6bc09d, 0x2d1464f5, 0xc246d214, 0x28c00f76, 0xc792b997,
++ 0x26bcb3f3, 0xc9ee0512, 0x2368d870, 0xcc3a6e91, 0x49a02ed1,
++ 0xa6f29830, 0x4c744552, 0xa326f3b3, 0x4208f9d7, 0xad5a4f36,
++ 0x47dc9254, 0xa88e24b5, 0x5ef180dd, 0xb1a3363c, 0x5b25eb5e,
++ 0xb4775dbf, 0x555957db, 0xba0be13a, 0x508d3c58, 0xbfdf8ab9,
++ 0x670372c9, 0x8851c428, 0x62d7194a, 0x8d85afab, 0x6caba5cf,
++ 0x83f9132e, 0x697fce4c, 0x862d78ad, 0x7052dcc5, 0x9f006a24,
++ 0x7586b746, 0x9ad401a7, 0x7bfa0bc3, 0x94a8bd22, 0x7e2e6040,
++ 0x917cd6a1},
++ {0x00000000, 0x87a6cb43, 0xd43c90c7, 0x539a5b84, 0x730827cf,
++ 0xf4aeec8c, 0xa734b708, 0x20927c4b, 0xe6104f9e, 0x61b684dd,
++ 0x322cdf59, 0xb58a141a, 0x95186851, 0x12bea312, 0x4124f896,
++ 0xc68233d5, 0x1751997d, 0x90f7523e, 0xc36d09ba, 0x44cbc2f9,
++ 0x6459beb2, 0xe3ff75f1, 0xb0652e75, 0x37c3e536, 0xf141d6e3,
++ 0x76e71da0, 0x257d4624, 0xa2db8d67, 0x8249f12c, 0x05ef3a6f,
++ 0x567561eb, 0xd1d3aaa8, 0x2ea332fa, 0xa905f9b9, 0xfa9fa23d,
++ 0x7d39697e, 0x5dab1535, 0xda0dde76, 0x899785f2, 0x0e314eb1,
++ 0xc8b37d64, 0x4f15b627, 0x1c8feda3, 0x9b2926e0, 0xbbbb5aab,
++ 0x3c1d91e8, 0x6f87ca6c, 0xe821012f, 0x39f2ab87, 0xbe5460c4,
++ 0xedce3b40, 0x6a68f003, 0x4afa8c48, 0xcd5c470b, 0x9ec61c8f,
++ 0x1960d7cc, 0xdfe2e419, 0x58442f5a, 0x0bde74de, 0x8c78bf9d,
++ 0xaceac3d6, 0x2b4c0895, 0x78d65311, 0xff709852, 0x5d4665f4,
++ 0xdae0aeb7, 0x897af533, 0x0edc3e70, 0x2e4e423b, 0xa9e88978,
++ 0xfa72d2fc, 0x7dd419bf, 0xbb562a6a, 0x3cf0e129, 0x6f6abaad,
++ 0xe8cc71ee, 0xc85e0da5, 0x4ff8c6e6, 0x1c629d62, 0x9bc45621,
++ 0x4a17fc89, 0xcdb137ca, 0x9e2b6c4e, 0x198da70d, 0x391fdb46,
++ 0xbeb91005, 0xed234b81, 0x6a8580c2, 0xac07b317, 0x2ba17854,
++ 0x783b23d0, 0xff9de893, 0xdf0f94d8, 0x58a95f9b, 0x0b33041f,
++ 0x8c95cf5c, 0x73e5570e, 0xf4439c4d, 0xa7d9c7c9, 0x207f0c8a,
++ 0x00ed70c1, 0x874bbb82, 0xd4d1e006, 0x53772b45, 0x95f51890,
++ 0x1253d3d3, 0x41c98857, 0xc66f4314, 0xe6fd3f5f, 0x615bf41c,
++ 0x32c1af98, 0xb56764db, 0x64b4ce73, 0xe3120530, 0xb0885eb4,
++ 0x372e95f7, 0x17bce9bc, 0x901a22ff, 0xc380797b, 0x4426b238,
++ 0x82a481ed, 0x05024aae, 0x5698112a, 0xd13eda69, 0xf1aca622,
++ 0x760a6d61, 0x259036e5, 0xa236fda6, 0xba8ccbe8, 0x3d2a00ab,
++ 0x6eb05b2f, 0xe916906c, 0xc984ec27, 0x4e222764, 0x1db87ce0,
++ 0x9a1eb7a3, 0x5c9c8476, 0xdb3a4f35, 0x88a014b1, 0x0f06dff2,
++ 0x2f94a3b9, 0xa83268fa, 0xfba8337e, 0x7c0ef83d, 0xaddd5295,
++ 0x2a7b99d6, 0x79e1c252, 0xfe470911, 0xded5755a, 0x5973be19,
++ 0x0ae9e59d, 0x8d4f2ede, 0x4bcd1d0b, 0xcc6bd648, 0x9ff18dcc,
++ 0x1857468f, 0x38c53ac4, 0xbf63f187, 0xecf9aa03, 0x6b5f6140,
++ 0x942ff912, 0x13893251, 0x401369d5, 0xc7b5a296, 0xe727dedd,
++ 0x6081159e, 0x331b4e1a, 0xb4bd8559, 0x723fb68c, 0xf5997dcf,
++ 0xa603264b, 0x21a5ed08, 0x01379143, 0x86915a00, 0xd50b0184,
++ 0x52adcac7, 0x837e606f, 0x04d8ab2c, 0x5742f0a8, 0xd0e43beb,
++ 0xf07647a0, 0x77d08ce3, 0x244ad767, 0xa3ec1c24, 0x656e2ff1,
++ 0xe2c8e4b2, 0xb152bf36, 0x36f47475, 0x1666083e, 0x91c0c37d,
++ 0xc25a98f9, 0x45fc53ba, 0xe7caae1c, 0x606c655f, 0x33f63edb,
++ 0xb450f598, 0x94c289d3, 0x13644290, 0x40fe1914, 0xc758d257,
++ 0x01dae182, 0x867c2ac1, 0xd5e67145, 0x5240ba06, 0x72d2c64d,
++ 0xf5740d0e, 0xa6ee568a, 0x21489dc9, 0xf09b3761, 0x773dfc22,
++ 0x24a7a7a6, 0xa3016ce5, 0x839310ae, 0x0435dbed, 0x57af8069,
++ 0xd0094b2a, 0x168b78ff, 0x912db3bc, 0xc2b7e838, 0x4511237b,
++ 0x65835f30, 0xe2259473, 0xb1bfcff7, 0x361904b4, 0xc9699ce6,
++ 0x4ecf57a5, 0x1d550c21, 0x9af3c762, 0xba61bb29, 0x3dc7706a,
++ 0x6e5d2bee, 0xe9fbe0ad, 0x2f79d378, 0xa8df183b, 0xfb4543bf,
++ 0x7ce388fc, 0x5c71f4b7, 0xdbd73ff4, 0x884d6470, 0x0febaf33,
++ 0xde38059b, 0x599eced8, 0x0a04955c, 0x8da25e1f, 0xad302254,
++ 0x2a96e917, 0x790cb293, 0xfeaa79d0, 0x38284a05, 0xbf8e8146,
++ 0xec14dac2, 0x6bb21181, 0x4b206dca, 0xcc86a689, 0x9f1cfd0d,
++ 0x18ba364e}};
++
++local const z_word_t FAR crc_braid_big_table[][256] = {
++ {0x00000000, 0x43cba687, 0xc7903cd4, 0x845b9a53, 0xcf270873,
++ 0x8cecaef4, 0x08b734a7, 0x4b7c9220, 0x9e4f10e6, 0xdd84b661,
++ 0x59df2c32, 0x1a148ab5, 0x51681895, 0x12a3be12, 0x96f82441,
++ 0xd53382c6, 0x7d995117, 0x3e52f790, 0xba096dc3, 0xf9c2cb44,
++ 0xb2be5964, 0xf175ffe3, 0x752e65b0, 0x36e5c337, 0xe3d641f1,
++ 0xa01de776, 0x24467d25, 0x678ddba2, 0x2cf14982, 0x6f3aef05,
++ 0xeb617556, 0xa8aad3d1, 0xfa32a32e, 0xb9f905a9, 0x3da29ffa,
++ 0x7e69397d, 0x3515ab5d, 0x76de0dda, 0xf2859789, 0xb14e310e,
++ 0x647db3c8, 0x27b6154f, 0xa3ed8f1c, 0xe026299b, 0xab5abbbb,
++ 0xe8911d3c, 0x6cca876f, 0x2f0121e8, 0x87abf239, 0xc46054be,
++ 0x403bceed, 0x03f0686a, 0x488cfa4a, 0x0b475ccd, 0x8f1cc69e,
++ 0xccd76019, 0x19e4e2df, 0x5a2f4458, 0xde74de0b, 0x9dbf788c,
++ 0xd6c3eaac, 0x95084c2b, 0x1153d678, 0x529870ff, 0xf465465d,
++ 0xb7aee0da, 0x33f57a89, 0x703edc0e, 0x3b424e2e, 0x7889e8a9,
++ 0xfcd272fa, 0xbf19d47d, 0x6a2a56bb, 0x29e1f03c, 0xadba6a6f,
++ 0xee71cce8, 0xa50d5ec8, 0xe6c6f84f, 0x629d621c, 0x2156c49b,
++ 0x89fc174a, 0xca37b1cd, 0x4e6c2b9e, 0x0da78d19, 0x46db1f39,
++ 0x0510b9be, 0x814b23ed, 0xc280856a, 0x17b307ac, 0x5478a12b,
++ 0xd0233b78, 0x93e89dff, 0xd8940fdf, 0x9b5fa958, 0x1f04330b,
++ 0x5ccf958c, 0x0e57e573, 0x4d9c43f4, 0xc9c7d9a7, 0x8a0c7f20,
++ 0xc170ed00, 0x82bb4b87, 0x06e0d1d4, 0x452b7753, 0x9018f595,
++ 0xd3d35312, 0x5788c941, 0x14436fc6, 0x5f3ffde6, 0x1cf45b61,
++ 0x98afc132, 0xdb6467b5, 0x73ceb464, 0x300512e3, 0xb45e88b0,
++ 0xf7952e37, 0xbce9bc17, 0xff221a90, 0x7b7980c3, 0x38b22644,
++ 0xed81a482, 0xae4a0205, 0x2a119856, 0x69da3ed1, 0x22a6acf1,
++ 0x616d0a76, 0xe5369025, 0xa6fd36a2, 0xe8cb8cba, 0xab002a3d,
++ 0x2f5bb06e, 0x6c9016e9, 0x27ec84c9, 0x6427224e, 0xe07cb81d,
++ 0xa3b71e9a, 0x76849c5c, 0x354f3adb, 0xb114a088, 0xf2df060f,
++ 0xb9a3942f, 0xfa6832a8, 0x7e33a8fb, 0x3df80e7c, 0x9552ddad,
++ 0xd6997b2a, 0x52c2e179, 0x110947fe, 0x5a75d5de, 0x19be7359,
++ 0x9de5e90a, 0xde2e4f8d, 0x0b1dcd4b, 0x48d66bcc, 0xcc8df19f,
++ 0x8f465718, 0xc43ac538, 0x87f163bf, 0x03aaf9ec, 0x40615f6b,
++ 0x12f92f94, 0x51328913, 0xd5691340, 0x96a2b5c7, 0xddde27e7,
++ 0x9e158160, 0x1a4e1b33, 0x5985bdb4, 0x8cb63f72, 0xcf7d99f5,
++ 0x4b2603a6, 0x08eda521, 0x43913701, 0x005a9186, 0x84010bd5,
++ 0xc7caad52, 0x6f607e83, 0x2cabd804, 0xa8f04257, 0xeb3be4d0,
++ 0xa04776f0, 0xe38cd077, 0x67d74a24, 0x241ceca3, 0xf12f6e65,
++ 0xb2e4c8e2, 0x36bf52b1, 0x7574f436, 0x3e086616, 0x7dc3c091,
++ 0xf9985ac2, 0xba53fc45, 0x1caecae7, 0x5f656c60, 0xdb3ef633,
++ 0x98f550b4, 0xd389c294, 0x90426413, 0x1419fe40, 0x57d258c7,
++ 0x82e1da01, 0xc12a7c86, 0x4571e6d5, 0x06ba4052, 0x4dc6d272,
++ 0x0e0d74f5, 0x8a56eea6, 0xc99d4821, 0x61379bf0, 0x22fc3d77,
++ 0xa6a7a724, 0xe56c01a3, 0xae109383, 0xeddb3504, 0x6980af57,
++ 0x2a4b09d0, 0xff788b16, 0xbcb32d91, 0x38e8b7c2, 0x7b231145,
++ 0x305f8365, 0x739425e2, 0xf7cfbfb1, 0xb4041936, 0xe69c69c9,
++ 0xa557cf4e, 0x210c551d, 0x62c7f39a, 0x29bb61ba, 0x6a70c73d,
++ 0xee2b5d6e, 0xade0fbe9, 0x78d3792f, 0x3b18dfa8, 0xbf4345fb,
++ 0xfc88e37c, 0xb7f4715c, 0xf43fd7db, 0x70644d88, 0x33afeb0f,
++ 0x9b0538de, 0xd8ce9e59, 0x5c95040a, 0x1f5ea28d, 0x542230ad,
++ 0x17e9962a, 0x93b20c79, 0xd079aafe, 0x054a2838, 0x46818ebf,
++ 0xc2da14ec, 0x8111b26b, 0xca6d204b, 0x89a686cc, 0x0dfd1c9f,
++ 0x4e36ba18},
++ {0x00000000, 0xe1b652ef, 0x836bd405, 0x62dd86ea, 0x06d7a80b,
++ 0xe761fae4, 0x85bc7c0e, 0x640a2ee1, 0x0cae5117, 0xed1803f8,
++ 0x8fc58512, 0x6e73d7fd, 0x0a79f91c, 0xebcfabf3, 0x89122d19,
++ 0x68a47ff6, 0x185ca32e, 0xf9eaf1c1, 0x9b37772b, 0x7a8125c4,
++ 0x1e8b0b25, 0xff3d59ca, 0x9de0df20, 0x7c568dcf, 0x14f2f239,
++ 0xf544a0d6, 0x9799263c, 0x762f74d3, 0x12255a32, 0xf39308dd,
++ 0x914e8e37, 0x70f8dcd8, 0x30b8465d, 0xd10e14b2, 0xb3d39258,
++ 0x5265c0b7, 0x366fee56, 0xd7d9bcb9, 0xb5043a53, 0x54b268bc,
++ 0x3c16174a, 0xdda045a5, 0xbf7dc34f, 0x5ecb91a0, 0x3ac1bf41,
++ 0xdb77edae, 0xb9aa6b44, 0x581c39ab, 0x28e4e573, 0xc952b79c,
++ 0xab8f3176, 0x4a396399, 0x2e334d78, 0xcf851f97, 0xad58997d,
++ 0x4ceecb92, 0x244ab464, 0xc5fce68b, 0xa7216061, 0x4697328e,
++ 0x229d1c6f, 0xc32b4e80, 0xa1f6c86a, 0x40409a85, 0x60708dba,
++ 0x81c6df55, 0xe31b59bf, 0x02ad0b50, 0x66a725b1, 0x8711775e,
++ 0xe5ccf1b4, 0x047aa35b, 0x6cdedcad, 0x8d688e42, 0xefb508a8,
++ 0x0e035a47, 0x6a0974a6, 0x8bbf2649, 0xe962a0a3, 0x08d4f24c,
++ 0x782c2e94, 0x999a7c7b, 0xfb47fa91, 0x1af1a87e, 0x7efb869f,
++ 0x9f4dd470, 0xfd90529a, 0x1c260075, 0x74827f83, 0x95342d6c,
++ 0xf7e9ab86, 0x165ff969, 0x7255d788, 0x93e38567, 0xf13e038d,
++ 0x10885162, 0x50c8cbe7, 0xb17e9908, 0xd3a31fe2, 0x32154d0d,
++ 0x561f63ec, 0xb7a93103, 0xd574b7e9, 0x34c2e506, 0x5c669af0,
++ 0xbdd0c81f, 0xdf0d4ef5, 0x3ebb1c1a, 0x5ab132fb, 0xbb076014,
++ 0xd9dae6fe, 0x386cb411, 0x489468c9, 0xa9223a26, 0xcbffbccc,
++ 0x2a49ee23, 0x4e43c0c2, 0xaff5922d, 0xcd2814c7, 0x2c9e4628,
++ 0x443a39de, 0xa58c6b31, 0xc751eddb, 0x26e7bf34, 0x42ed91d5,
++ 0xa35bc33a, 0xc18645d0, 0x2030173f, 0x81e66bae, 0x60503941,
++ 0x028dbfab, 0xe33bed44, 0x8731c3a5, 0x6687914a, 0x045a17a0,
++ 0xe5ec454f, 0x8d483ab9, 0x6cfe6856, 0x0e23eebc, 0xef95bc53,
++ 0x8b9f92b2, 0x6a29c05d, 0x08f446b7, 0xe9421458, 0x99bac880,
++ 0x780c9a6f, 0x1ad11c85, 0xfb674e6a, 0x9f6d608b, 0x7edb3264,
++ 0x1c06b48e, 0xfdb0e661, 0x95149997, 0x74a2cb78, 0x167f4d92,
++ 0xf7c91f7d, 0x93c3319c, 0x72756373, 0x10a8e599, 0xf11eb776,
++ 0xb15e2df3, 0x50e87f1c, 0x3235f9f6, 0xd383ab19, 0xb78985f8,
++ 0x563fd717, 0x34e251fd, 0xd5540312, 0xbdf07ce4, 0x5c462e0b,
++ 0x3e9ba8e1, 0xdf2dfa0e, 0xbb27d4ef, 0x5a918600, 0x384c00ea,
++ 0xd9fa5205, 0xa9028edd, 0x48b4dc32, 0x2a695ad8, 0xcbdf0837,
++ 0xafd526d6, 0x4e637439, 0x2cbef2d3, 0xcd08a03c, 0xa5acdfca,
++ 0x441a8d25, 0x26c70bcf, 0xc7715920, 0xa37b77c1, 0x42cd252e,
++ 0x2010a3c4, 0xc1a6f12b, 0xe196e614, 0x0020b4fb, 0x62fd3211,
++ 0x834b60fe, 0xe7414e1f, 0x06f71cf0, 0x642a9a1a, 0x859cc8f5,
++ 0xed38b703, 0x0c8ee5ec, 0x6e536306, 0x8fe531e9, 0xebef1f08,
++ 0x0a594de7, 0x6884cb0d, 0x893299e2, 0xf9ca453a, 0x187c17d5,
++ 0x7aa1913f, 0x9b17c3d0, 0xff1ded31, 0x1eabbfde, 0x7c763934,
++ 0x9dc06bdb, 0xf564142d, 0x14d246c2, 0x760fc028, 0x97b992c7,
++ 0xf3b3bc26, 0x1205eec9, 0x70d86823, 0x916e3acc, 0xd12ea049,
++ 0x3098f2a6, 0x5245744c, 0xb3f326a3, 0xd7f90842, 0x364f5aad,
++ 0x5492dc47, 0xb5248ea8, 0xdd80f15e, 0x3c36a3b1, 0x5eeb255b,
++ 0xbf5d77b4, 0xdb575955, 0x3ae10bba, 0x583c8d50, 0xb98adfbf,
++ 0xc9720367, 0x28c45188, 0x4a19d762, 0xabaf858d, 0xcfa5ab6c,
++ 0x2e13f983, 0x4cce7f69, 0xad782d86, 0xc5dc5270, 0x246a009f,
++ 0x46b78675, 0xa701d49a, 0xc30bfa7b, 0x22bda894, 0x40602e7e,
++ 0xa1d67c91},
++ {0x00000000, 0x5880e2d7, 0xf106b474, 0xa98656a3, 0xe20d68e9,
++ 0xba8d8a3e, 0x130bdc9d, 0x4b8b3e4a, 0x851da109, 0xdd9d43de,
++ 0x741b157d, 0x2c9bf7aa, 0x6710c9e0, 0x3f902b37, 0x96167d94,
++ 0xce969f43, 0x0a3b4213, 0x52bba0c4, 0xfb3df667, 0xa3bd14b0,
++ 0xe8362afa, 0xb0b6c82d, 0x19309e8e, 0x41b07c59, 0x8f26e31a,
++ 0xd7a601cd, 0x7e20576e, 0x26a0b5b9, 0x6d2b8bf3, 0x35ab6924,
++ 0x9c2d3f87, 0xc4addd50, 0x14768426, 0x4cf666f1, 0xe5703052,
++ 0xbdf0d285, 0xf67beccf, 0xaefb0e18, 0x077d58bb, 0x5ffdba6c,
++ 0x916b252f, 0xc9ebc7f8, 0x606d915b, 0x38ed738c, 0x73664dc6,
++ 0x2be6af11, 0x8260f9b2, 0xdae01b65, 0x1e4dc635, 0x46cd24e2,
++ 0xef4b7241, 0xb7cb9096, 0xfc40aedc, 0xa4c04c0b, 0x0d461aa8,
++ 0x55c6f87f, 0x9b50673c, 0xc3d085eb, 0x6a56d348, 0x32d6319f,
++ 0x795d0fd5, 0x21dded02, 0x885bbba1, 0xd0db5976, 0x28ec084d,
++ 0x706cea9a, 0xd9eabc39, 0x816a5eee, 0xcae160a4, 0x92618273,
++ 0x3be7d4d0, 0x63673607, 0xadf1a944, 0xf5714b93, 0x5cf71d30,
++ 0x0477ffe7, 0x4ffcc1ad, 0x177c237a, 0xbefa75d9, 0xe67a970e,
++ 0x22d74a5e, 0x7a57a889, 0xd3d1fe2a, 0x8b511cfd, 0xc0da22b7,
++ 0x985ac060, 0x31dc96c3, 0x695c7414, 0xa7caeb57, 0xff4a0980,
++ 0x56cc5f23, 0x0e4cbdf4, 0x45c783be, 0x1d476169, 0xb4c137ca,
++ 0xec41d51d, 0x3c9a8c6b, 0x641a6ebc, 0xcd9c381f, 0x951cdac8,
++ 0xde97e482, 0x86170655, 0x2f9150f6, 0x7711b221, 0xb9872d62,
++ 0xe107cfb5, 0x48819916, 0x10017bc1, 0x5b8a458b, 0x030aa75c,
++ 0xaa8cf1ff, 0xf20c1328, 0x36a1ce78, 0x6e212caf, 0xc7a77a0c,
++ 0x9f2798db, 0xd4aca691, 0x8c2c4446, 0x25aa12e5, 0x7d2af032,
++ 0xb3bc6f71, 0xeb3c8da6, 0x42badb05, 0x1a3a39d2, 0x51b10798,
++ 0x0931e54f, 0xa0b7b3ec, 0xf837513b, 0x50d8119a, 0x0858f34d,
++ 0xa1dea5ee, 0xf95e4739, 0xb2d57973, 0xea559ba4, 0x43d3cd07,
++ 0x1b532fd0, 0xd5c5b093, 0x8d455244, 0x24c304e7, 0x7c43e630,
++ 0x37c8d87a, 0x6f483aad, 0xc6ce6c0e, 0x9e4e8ed9, 0x5ae35389,
++ 0x0263b15e, 0xabe5e7fd, 0xf365052a, 0xb8ee3b60, 0xe06ed9b7,
++ 0x49e88f14, 0x11686dc3, 0xdffef280, 0x877e1057, 0x2ef846f4,
++ 0x7678a423, 0x3df39a69, 0x657378be, 0xccf52e1d, 0x9475ccca,
++ 0x44ae95bc, 0x1c2e776b, 0xb5a821c8, 0xed28c31f, 0xa6a3fd55,
++ 0xfe231f82, 0x57a54921, 0x0f25abf6, 0xc1b334b5, 0x9933d662,
++ 0x30b580c1, 0x68356216, 0x23be5c5c, 0x7b3ebe8b, 0xd2b8e828,
++ 0x8a380aff, 0x4e95d7af, 0x16153578, 0xbf9363db, 0xe713810c,
++ 0xac98bf46, 0xf4185d91, 0x5d9e0b32, 0x051ee9e5, 0xcb8876a6,
++ 0x93089471, 0x3a8ec2d2, 0x620e2005, 0x29851e4f, 0x7105fc98,
++ 0xd883aa3b, 0x800348ec, 0x783419d7, 0x20b4fb00, 0x8932ada3,
++ 0xd1b24f74, 0x9a39713e, 0xc2b993e9, 0x6b3fc54a, 0x33bf279d,
++ 0xfd29b8de, 0xa5a95a09, 0x0c2f0caa, 0x54afee7d, 0x1f24d037,
++ 0x47a432e0, 0xee226443, 0xb6a28694, 0x720f5bc4, 0x2a8fb913,
++ 0x8309efb0, 0xdb890d67, 0x9002332d, 0xc882d1fa, 0x61048759,
++ 0x3984658e, 0xf712facd, 0xaf92181a, 0x06144eb9, 0x5e94ac6e,
++ 0x151f9224, 0x4d9f70f3, 0xe4192650, 0xbc99c487, 0x6c429df1,
++ 0x34c27f26, 0x9d442985, 0xc5c4cb52, 0x8e4ff518, 0xd6cf17cf,
++ 0x7f49416c, 0x27c9a3bb, 0xe95f3cf8, 0xb1dfde2f, 0x1859888c,
++ 0x40d96a5b, 0x0b525411, 0x53d2b6c6, 0xfa54e065, 0xa2d402b2,
++ 0x6679dfe2, 0x3ef93d35, 0x977f6b96, 0xcfff8941, 0x8474b70b,
++ 0xdcf455dc, 0x7572037f, 0x2df2e1a8, 0xe3647eeb, 0xbbe49c3c,
++ 0x1262ca9f, 0x4ae22848, 0x01691602, 0x59e9f4d5, 0xf06fa276,
++ 0xa8ef40a1},
++ {0x00000000, 0x463b6765, 0x8c76ceca, 0xca4da9af, 0x59ebed4e,
++ 0x1fd08a2b, 0xd59d2384, 0x93a644e1, 0xb2d6db9d, 0xf4edbcf8,
++ 0x3ea01557, 0x789b7232, 0xeb3d36d3, 0xad0651b6, 0x674bf819,
++ 0x21709f7c, 0x25abc6e0, 0x6390a185, 0xa9dd082a, 0xefe66f4f,
++ 0x7c402bae, 0x3a7b4ccb, 0xf036e564, 0xb60d8201, 0x977d1d7d,
++ 0xd1467a18, 0x1b0bd3b7, 0x5d30b4d2, 0xce96f033, 0x88ad9756,
++ 0x42e03ef9, 0x04db599c, 0x0b50fc1a, 0x4d6b9b7f, 0x872632d0,
++ 0xc11d55b5, 0x52bb1154, 0x14807631, 0xdecddf9e, 0x98f6b8fb,
++ 0xb9862787, 0xffbd40e2, 0x35f0e94d, 0x73cb8e28, 0xe06dcac9,
++ 0xa656adac, 0x6c1b0403, 0x2a206366, 0x2efb3afa, 0x68c05d9f,
++ 0xa28df430, 0xe4b69355, 0x7710d7b4, 0x312bb0d1, 0xfb66197e,
++ 0xbd5d7e1b, 0x9c2de167, 0xda168602, 0x105b2fad, 0x566048c8,
++ 0xc5c60c29, 0x83fd6b4c, 0x49b0c2e3, 0x0f8ba586, 0x16a0f835,
++ 0x509b9f50, 0x9ad636ff, 0xdced519a, 0x4f4b157b, 0x0970721e,
++ 0xc33ddbb1, 0x8506bcd4, 0xa47623a8, 0xe24d44cd, 0x2800ed62,
++ 0x6e3b8a07, 0xfd9dcee6, 0xbba6a983, 0x71eb002c, 0x37d06749,
++ 0x330b3ed5, 0x753059b0, 0xbf7df01f, 0xf946977a, 0x6ae0d39b,
++ 0x2cdbb4fe, 0xe6961d51, 0xa0ad7a34, 0x81dde548, 0xc7e6822d,
++ 0x0dab2b82, 0x4b904ce7, 0xd8360806, 0x9e0d6f63, 0x5440c6cc,
++ 0x127ba1a9, 0x1df0042f, 0x5bcb634a, 0x9186cae5, 0xd7bdad80,
++ 0x441be961, 0x02208e04, 0xc86d27ab, 0x8e5640ce, 0xaf26dfb2,
++ 0xe91db8d7, 0x23501178, 0x656b761d, 0xf6cd32fc, 0xb0f65599,
++ 0x7abbfc36, 0x3c809b53, 0x385bc2cf, 0x7e60a5aa, 0xb42d0c05,
++ 0xf2166b60, 0x61b02f81, 0x278b48e4, 0xedc6e14b, 0xabfd862e,
++ 0x8a8d1952, 0xccb67e37, 0x06fbd798, 0x40c0b0fd, 0xd366f41c,
++ 0x955d9379, 0x5f103ad6, 0x192b5db3, 0x2c40f16b, 0x6a7b960e,
++ 0xa0363fa1, 0xe60d58c4, 0x75ab1c25, 0x33907b40, 0xf9ddd2ef,
++ 0xbfe6b58a, 0x9e962af6, 0xd8ad4d93, 0x12e0e43c, 0x54db8359,
++ 0xc77dc7b8, 0x8146a0dd, 0x4b0b0972, 0x0d306e17, 0x09eb378b,
++ 0x4fd050ee, 0x859df941, 0xc3a69e24, 0x5000dac5, 0x163bbda0,
++ 0xdc76140f, 0x9a4d736a, 0xbb3dec16, 0xfd068b73, 0x374b22dc,
++ 0x717045b9, 0xe2d60158, 0xa4ed663d, 0x6ea0cf92, 0x289ba8f7,
++ 0x27100d71, 0x612b6a14, 0xab66c3bb, 0xed5da4de, 0x7efbe03f,
++ 0x38c0875a, 0xf28d2ef5, 0xb4b64990, 0x95c6d6ec, 0xd3fdb189,
++ 0x19b01826, 0x5f8b7f43, 0xcc2d3ba2, 0x8a165cc7, 0x405bf568,
++ 0x0660920d, 0x02bbcb91, 0x4480acf4, 0x8ecd055b, 0xc8f6623e,
++ 0x5b5026df, 0x1d6b41ba, 0xd726e815, 0x911d8f70, 0xb06d100c,
++ 0xf6567769, 0x3c1bdec6, 0x7a20b9a3, 0xe986fd42, 0xafbd9a27,
++ 0x65f03388, 0x23cb54ed, 0x3ae0095e, 0x7cdb6e3b, 0xb696c794,
++ 0xf0ada0f1, 0x630be410, 0x25308375, 0xef7d2ada, 0xa9464dbf,
++ 0x8836d2c3, 0xce0db5a6, 0x04401c09, 0x427b7b6c, 0xd1dd3f8d,
++ 0x97e658e8, 0x5dabf147, 0x1b909622, 0x1f4bcfbe, 0x5970a8db,
++ 0x933d0174, 0xd5066611, 0x46a022f0, 0x009b4595, 0xcad6ec3a,
++ 0x8ced8b5f, 0xad9d1423, 0xeba67346, 0x21ebdae9, 0x67d0bd8c,
++ 0xf476f96d, 0xb24d9e08, 0x780037a7, 0x3e3b50c2, 0x31b0f544,
++ 0x778b9221, 0xbdc63b8e, 0xfbfd5ceb, 0x685b180a, 0x2e607f6f,
++ 0xe42dd6c0, 0xa216b1a5, 0x83662ed9, 0xc55d49bc, 0x0f10e013,
++ 0x492b8776, 0xda8dc397, 0x9cb6a4f2, 0x56fb0d5d, 0x10c06a38,
++ 0x141b33a4, 0x522054c1, 0x986dfd6e, 0xde569a0b, 0x4df0deea,
++ 0x0bcbb98f, 0xc1861020, 0x87bd7745, 0xa6cde839, 0xe0f68f5c,
++ 0x2abb26f3, 0x6c804196, 0xff260577, 0xb91d6212, 0x7350cbbd,
++ 0x356bacd8}};
++
++#endif
++
++#endif
++
++#if N == 6
++
++#if W == 8
++
++local const z_crc_t FAR crc_braid_table[][256] = {
++ {0x00000000, 0x3db1ecdc, 0x7b63d9b8, 0x46d23564, 0xf6c7b370,
++ 0xcb765fac, 0x8da46ac8, 0xb0158614, 0x36fe60a1, 0x0b4f8c7d,
++ 0x4d9db919, 0x702c55c5, 0xc039d3d1, 0xfd883f0d, 0xbb5a0a69,
++ 0x86ebe6b5, 0x6dfcc142, 0x504d2d9e, 0x169f18fa, 0x2b2ef426,
++ 0x9b3b7232, 0xa68a9eee, 0xe058ab8a, 0xdde94756, 0x5b02a1e3,
++ 0x66b34d3f, 0x2061785b, 0x1dd09487, 0xadc51293, 0x9074fe4f,
++ 0xd6a6cb2b, 0xeb1727f7, 0xdbf98284, 0xe6486e58, 0xa09a5b3c,
++ 0x9d2bb7e0, 0x2d3e31f4, 0x108fdd28, 0x565de84c, 0x6bec0490,
++ 0xed07e225, 0xd0b60ef9, 0x96643b9d, 0xabd5d741, 0x1bc05155,
++ 0x2671bd89, 0x60a388ed, 0x5d126431, 0xb60543c6, 0x8bb4af1a,
++ 0xcd669a7e, 0xf0d776a2, 0x40c2f0b6, 0x7d731c6a, 0x3ba1290e,
++ 0x0610c5d2, 0x80fb2367, 0xbd4acfbb, 0xfb98fadf, 0xc6291603,
++ 0x763c9017, 0x4b8d7ccb, 0x0d5f49af, 0x30eea573, 0x6c820349,
++ 0x5133ef95, 0x17e1daf1, 0x2a50362d, 0x9a45b039, 0xa7f45ce5,
++ 0xe1266981, 0xdc97855d, 0x5a7c63e8, 0x67cd8f34, 0x211fba50,
++ 0x1cae568c, 0xacbbd098, 0x910a3c44, 0xd7d80920, 0xea69e5fc,
++ 0x017ec20b, 0x3ccf2ed7, 0x7a1d1bb3, 0x47acf76f, 0xf7b9717b,
++ 0xca089da7, 0x8cdaa8c3, 0xb16b441f, 0x3780a2aa, 0x0a314e76,
++ 0x4ce37b12, 0x715297ce, 0xc14711da, 0xfcf6fd06, 0xba24c862,
++ 0x879524be, 0xb77b81cd, 0x8aca6d11, 0xcc185875, 0xf1a9b4a9,
++ 0x41bc32bd, 0x7c0dde61, 0x3adfeb05, 0x076e07d9, 0x8185e16c,
++ 0xbc340db0, 0xfae638d4, 0xc757d408, 0x7742521c, 0x4af3bec0,
++ 0x0c218ba4, 0x31906778, 0xda87408f, 0xe736ac53, 0xa1e49937,
++ 0x9c5575eb, 0x2c40f3ff, 0x11f11f23, 0x57232a47, 0x6a92c69b,
++ 0xec79202e, 0xd1c8ccf2, 0x971af996, 0xaaab154a, 0x1abe935e,
++ 0x270f7f82, 0x61dd4ae6, 0x5c6ca63a, 0xd9040692, 0xe4b5ea4e,
++ 0xa267df2a, 0x9fd633f6, 0x2fc3b5e2, 0x1272593e, 0x54a06c5a,
++ 0x69118086, 0xeffa6633, 0xd24b8aef, 0x9499bf8b, 0xa9285357,
++ 0x193dd543, 0x248c399f, 0x625e0cfb, 0x5fefe027, 0xb4f8c7d0,
++ 0x89492b0c, 0xcf9b1e68, 0xf22af2b4, 0x423f74a0, 0x7f8e987c,
++ 0x395cad18, 0x04ed41c4, 0x8206a771, 0xbfb74bad, 0xf9657ec9,
++ 0xc4d49215, 0x74c11401, 0x4970f8dd, 0x0fa2cdb9, 0x32132165,
++ 0x02fd8416, 0x3f4c68ca, 0x799e5dae, 0x442fb172, 0xf43a3766,
++ 0xc98bdbba, 0x8f59eede, 0xb2e80202, 0x3403e4b7, 0x09b2086b,
++ 0x4f603d0f, 0x72d1d1d3, 0xc2c457c7, 0xff75bb1b, 0xb9a78e7f,
++ 0x841662a3, 0x6f014554, 0x52b0a988, 0x14629cec, 0x29d37030,
++ 0x99c6f624, 0xa4771af8, 0xe2a52f9c, 0xdf14c340, 0x59ff25f5,
++ 0x644ec929, 0x229cfc4d, 0x1f2d1091, 0xaf389685, 0x92897a59,
++ 0xd45b4f3d, 0xe9eaa3e1, 0xb58605db, 0x8837e907, 0xcee5dc63,
++ 0xf35430bf, 0x4341b6ab, 0x7ef05a77, 0x38226f13, 0x059383cf,
++ 0x8378657a, 0xbec989a6, 0xf81bbcc2, 0xc5aa501e, 0x75bfd60a,
++ 0x480e3ad6, 0x0edc0fb2, 0x336de36e, 0xd87ac499, 0xe5cb2845,
++ 0xa3191d21, 0x9ea8f1fd, 0x2ebd77e9, 0x130c9b35, 0x55deae51,
++ 0x686f428d, 0xee84a438, 0xd33548e4, 0x95e77d80, 0xa856915c,
++ 0x18431748, 0x25f2fb94, 0x6320cef0, 0x5e91222c, 0x6e7f875f,
++ 0x53ce6b83, 0x151c5ee7, 0x28adb23b, 0x98b8342f, 0xa509d8f3,
++ 0xe3dbed97, 0xde6a014b, 0x5881e7fe, 0x65300b22, 0x23e23e46,
++ 0x1e53d29a, 0xae46548e, 0x93f7b852, 0xd5258d36, 0xe89461ea,
++ 0x0383461d, 0x3e32aac1, 0x78e09fa5, 0x45517379, 0xf544f56d,
++ 0xc8f519b1, 0x8e272cd5, 0xb396c009, 0x357d26bc, 0x08ccca60,
++ 0x4e1eff04, 0x73af13d8, 0xc3ba95cc, 0xfe0b7910, 0xb8d94c74,
++ 0x8568a0a8},
++ {0x00000000, 0x69790b65, 0xd2f216ca, 0xbb8b1daf, 0x7e952bd5,
++ 0x17ec20b0, 0xac673d1f, 0xc51e367a, 0xfd2a57aa, 0x94535ccf,
++ 0x2fd84160, 0x46a14a05, 0x83bf7c7f, 0xeac6771a, 0x514d6ab5,
++ 0x383461d0, 0x2125a915, 0x485ca270, 0xf3d7bfdf, 0x9aaeb4ba,
++ 0x5fb082c0, 0x36c989a5, 0x8d42940a, 0xe43b9f6f, 0xdc0ffebf,
++ 0xb576f5da, 0x0efde875, 0x6784e310, 0xa29ad56a, 0xcbe3de0f,
++ 0x7068c3a0, 0x1911c8c5, 0x424b522a, 0x2b32594f, 0x90b944e0,
++ 0xf9c04f85, 0x3cde79ff, 0x55a7729a, 0xee2c6f35, 0x87556450,
++ 0xbf610580, 0xd6180ee5, 0x6d93134a, 0x04ea182f, 0xc1f42e55,
++ 0xa88d2530, 0x1306389f, 0x7a7f33fa, 0x636efb3f, 0x0a17f05a,
++ 0xb19cedf5, 0xd8e5e690, 0x1dfbd0ea, 0x7482db8f, 0xcf09c620,
++ 0xa670cd45, 0x9e44ac95, 0xf73da7f0, 0x4cb6ba5f, 0x25cfb13a,
++ 0xe0d18740, 0x89a88c25, 0x3223918a, 0x5b5a9aef, 0x8496a454,
++ 0xedefaf31, 0x5664b29e, 0x3f1db9fb, 0xfa038f81, 0x937a84e4,
++ 0x28f1994b, 0x4188922e, 0x79bcf3fe, 0x10c5f89b, 0xab4ee534,
++ 0xc237ee51, 0x0729d82b, 0x6e50d34e, 0xd5dbcee1, 0xbca2c584,
++ 0xa5b30d41, 0xccca0624, 0x77411b8b, 0x1e3810ee, 0xdb262694,
++ 0xb25f2df1, 0x09d4305e, 0x60ad3b3b, 0x58995aeb, 0x31e0518e,
++ 0x8a6b4c21, 0xe3124744, 0x260c713e, 0x4f757a5b, 0xf4fe67f4,
++ 0x9d876c91, 0xc6ddf67e, 0xafa4fd1b, 0x142fe0b4, 0x7d56ebd1,
++ 0xb848ddab, 0xd131d6ce, 0x6abacb61, 0x03c3c004, 0x3bf7a1d4,
++ 0x528eaab1, 0xe905b71e, 0x807cbc7b, 0x45628a01, 0x2c1b8164,
++ 0x97909ccb, 0xfee997ae, 0xe7f85f6b, 0x8e81540e, 0x350a49a1,
++ 0x5c7342c4, 0x996d74be, 0xf0147fdb, 0x4b9f6274, 0x22e66911,
++ 0x1ad208c1, 0x73ab03a4, 0xc8201e0b, 0xa159156e, 0x64472314,
++ 0x0d3e2871, 0xb6b535de, 0xdfcc3ebb, 0xd25c4ee9, 0xbb25458c,
++ 0x00ae5823, 0x69d75346, 0xacc9653c, 0xc5b06e59, 0x7e3b73f6,
++ 0x17427893, 0x2f761943, 0x460f1226, 0xfd840f89, 0x94fd04ec,
++ 0x51e33296, 0x389a39f3, 0x8311245c, 0xea682f39, 0xf379e7fc,
++ 0x9a00ec99, 0x218bf136, 0x48f2fa53, 0x8deccc29, 0xe495c74c,
++ 0x5f1edae3, 0x3667d186, 0x0e53b056, 0x672abb33, 0xdca1a69c,
++ 0xb5d8adf9, 0x70c69b83, 0x19bf90e6, 0xa2348d49, 0xcb4d862c,
++ 0x90171cc3, 0xf96e17a6, 0x42e50a09, 0x2b9c016c, 0xee823716,
++ 0x87fb3c73, 0x3c7021dc, 0x55092ab9, 0x6d3d4b69, 0x0444400c,
++ 0xbfcf5da3, 0xd6b656c6, 0x13a860bc, 0x7ad16bd9, 0xc15a7676,
++ 0xa8237d13, 0xb132b5d6, 0xd84bbeb3, 0x63c0a31c, 0x0ab9a879,
++ 0xcfa79e03, 0xa6de9566, 0x1d5588c9, 0x742c83ac, 0x4c18e27c,
++ 0x2561e919, 0x9eeaf4b6, 0xf793ffd3, 0x328dc9a9, 0x5bf4c2cc,
++ 0xe07fdf63, 0x8906d406, 0x56caeabd, 0x3fb3e1d8, 0x8438fc77,
++ 0xed41f712, 0x285fc168, 0x4126ca0d, 0xfaadd7a2, 0x93d4dcc7,
++ 0xabe0bd17, 0xc299b672, 0x7912abdd, 0x106ba0b8, 0xd57596c2,
++ 0xbc0c9da7, 0x07878008, 0x6efe8b6d, 0x77ef43a8, 0x1e9648cd,
++ 0xa51d5562, 0xcc645e07, 0x097a687d, 0x60036318, 0xdb887eb7,
++ 0xb2f175d2, 0x8ac51402, 0xe3bc1f67, 0x583702c8, 0x314e09ad,
++ 0xf4503fd7, 0x9d2934b2, 0x26a2291d, 0x4fdb2278, 0x1481b897,
++ 0x7df8b3f2, 0xc673ae5d, 0xaf0aa538, 0x6a149342, 0x036d9827,
++ 0xb8e68588, 0xd19f8eed, 0xe9abef3d, 0x80d2e458, 0x3b59f9f7,
++ 0x5220f292, 0x973ec4e8, 0xfe47cf8d, 0x45ccd222, 0x2cb5d947,
++ 0x35a41182, 0x5cdd1ae7, 0xe7560748, 0x8e2f0c2d, 0x4b313a57,
++ 0x22483132, 0x99c32c9d, 0xf0ba27f8, 0xc88e4628, 0xa1f74d4d,
++ 0x1a7c50e2, 0x73055b87, 0xb61b6dfd, 0xdf626698, 0x64e97b37,
++ 0x0d907052},
++ {0x00000000, 0x7fc99b93, 0xff933726, 0x805aacb5, 0x2457680d,
++ 0x5b9ef39e, 0xdbc45f2b, 0xa40dc4b8, 0x48aed01a, 0x37674b89,
++ 0xb73de73c, 0xc8f47caf, 0x6cf9b817, 0x13302384, 0x936a8f31,
++ 0xeca314a2, 0x915da034, 0xee943ba7, 0x6ece9712, 0x11070c81,
++ 0xb50ac839, 0xcac353aa, 0x4a99ff1f, 0x3550648c, 0xd9f3702e,
++ 0xa63aebbd, 0x26604708, 0x59a9dc9b, 0xfda41823, 0x826d83b0,
++ 0x02372f05, 0x7dfeb496, 0xf9ca4629, 0x8603ddba, 0x0659710f,
++ 0x7990ea9c, 0xdd9d2e24, 0xa254b5b7, 0x220e1902, 0x5dc78291,
++ 0xb1649633, 0xcead0da0, 0x4ef7a115, 0x313e3a86, 0x9533fe3e,
++ 0xeafa65ad, 0x6aa0c918, 0x1569528b, 0x6897e61d, 0x175e7d8e,
++ 0x9704d13b, 0xe8cd4aa8, 0x4cc08e10, 0x33091583, 0xb353b936,
++ 0xcc9a22a5, 0x20393607, 0x5ff0ad94, 0xdfaa0121, 0xa0639ab2,
++ 0x046e5e0a, 0x7ba7c599, 0xfbfd692c, 0x8434f2bf, 0x28e58a13,
++ 0x572c1180, 0xd776bd35, 0xa8bf26a6, 0x0cb2e21e, 0x737b798d,
++ 0xf321d538, 0x8ce84eab, 0x604b5a09, 0x1f82c19a, 0x9fd86d2f,
++ 0xe011f6bc, 0x441c3204, 0x3bd5a997, 0xbb8f0522, 0xc4469eb1,
++ 0xb9b82a27, 0xc671b1b4, 0x462b1d01, 0x39e28692, 0x9def422a,
++ 0xe226d9b9, 0x627c750c, 0x1db5ee9f, 0xf116fa3d, 0x8edf61ae,
++ 0x0e85cd1b, 0x714c5688, 0xd5419230, 0xaa8809a3, 0x2ad2a516,
++ 0x551b3e85, 0xd12fcc3a, 0xaee657a9, 0x2ebcfb1c, 0x5175608f,
++ 0xf578a437, 0x8ab13fa4, 0x0aeb9311, 0x75220882, 0x99811c20,
++ 0xe64887b3, 0x66122b06, 0x19dbb095, 0xbdd6742d, 0xc21fefbe,
++ 0x4245430b, 0x3d8cd898, 0x40726c0e, 0x3fbbf79d, 0xbfe15b28,
++ 0xc028c0bb, 0x64250403, 0x1bec9f90, 0x9bb63325, 0xe47fa8b6,
++ 0x08dcbc14, 0x77152787, 0xf74f8b32, 0x888610a1, 0x2c8bd419,
++ 0x53424f8a, 0xd318e33f, 0xacd178ac, 0x51cb1426, 0x2e028fb5,
++ 0xae582300, 0xd191b893, 0x759c7c2b, 0x0a55e7b8, 0x8a0f4b0d,
++ 0xf5c6d09e, 0x1965c43c, 0x66ac5faf, 0xe6f6f31a, 0x993f6889,
++ 0x3d32ac31, 0x42fb37a2, 0xc2a19b17, 0xbd680084, 0xc096b412,
++ 0xbf5f2f81, 0x3f058334, 0x40cc18a7, 0xe4c1dc1f, 0x9b08478c,
++ 0x1b52eb39, 0x649b70aa, 0x88386408, 0xf7f1ff9b, 0x77ab532e,
++ 0x0862c8bd, 0xac6f0c05, 0xd3a69796, 0x53fc3b23, 0x2c35a0b0,
++ 0xa801520f, 0xd7c8c99c, 0x57926529, 0x285bfeba, 0x8c563a02,
++ 0xf39fa191, 0x73c50d24, 0x0c0c96b7, 0xe0af8215, 0x9f661986,
++ 0x1f3cb533, 0x60f52ea0, 0xc4f8ea18, 0xbb31718b, 0x3b6bdd3e,
++ 0x44a246ad, 0x395cf23b, 0x469569a8, 0xc6cfc51d, 0xb9065e8e,
++ 0x1d0b9a36, 0x62c201a5, 0xe298ad10, 0x9d513683, 0x71f22221,
++ 0x0e3bb9b2, 0x8e611507, 0xf1a88e94, 0x55a54a2c, 0x2a6cd1bf,
++ 0xaa367d0a, 0xd5ffe699, 0x792e9e35, 0x06e705a6, 0x86bda913,
++ 0xf9743280, 0x5d79f638, 0x22b06dab, 0xa2eac11e, 0xdd235a8d,
++ 0x31804e2f, 0x4e49d5bc, 0xce137909, 0xb1dae29a, 0x15d72622,
++ 0x6a1ebdb1, 0xea441104, 0x958d8a97, 0xe8733e01, 0x97baa592,
++ 0x17e00927, 0x682992b4, 0xcc24560c, 0xb3edcd9f, 0x33b7612a,
++ 0x4c7efab9, 0xa0ddee1b, 0xdf147588, 0x5f4ed93d, 0x208742ae,
++ 0x848a8616, 0xfb431d85, 0x7b19b130, 0x04d02aa3, 0x80e4d81c,
++ 0xff2d438f, 0x7f77ef3a, 0x00be74a9, 0xa4b3b011, 0xdb7a2b82,
++ 0x5b208737, 0x24e91ca4, 0xc84a0806, 0xb7839395, 0x37d93f20,
++ 0x4810a4b3, 0xec1d600b, 0x93d4fb98, 0x138e572d, 0x6c47ccbe,
++ 0x11b97828, 0x6e70e3bb, 0xee2a4f0e, 0x91e3d49d, 0x35ee1025,
++ 0x4a278bb6, 0xca7d2703, 0xb5b4bc90, 0x5917a832, 0x26de33a1,
++ 0xa6849f14, 0xd94d0487, 0x7d40c03f, 0x02895bac, 0x82d3f719,
++ 0xfd1a6c8a},
++ {0x00000000, 0xa396284c, 0x9c5d56d9, 0x3fcb7e95, 0xe3cbabf3,
++ 0x405d83bf, 0x7f96fd2a, 0xdc00d566, 0x1ce651a7, 0xbf7079eb,
++ 0x80bb077e, 0x232d2f32, 0xff2dfa54, 0x5cbbd218, 0x6370ac8d,
++ 0xc0e684c1, 0x39cca34e, 0x9a5a8b02, 0xa591f597, 0x0607dddb,
++ 0xda0708bd, 0x799120f1, 0x465a5e64, 0xe5cc7628, 0x252af2e9,
++ 0x86bcdaa5, 0xb977a430, 0x1ae18c7c, 0xc6e1591a, 0x65777156,
++ 0x5abc0fc3, 0xf92a278f, 0x7399469c, 0xd00f6ed0, 0xefc41045,
++ 0x4c523809, 0x9052ed6f, 0x33c4c523, 0x0c0fbbb6, 0xaf9993fa,
++ 0x6f7f173b, 0xcce93f77, 0xf32241e2, 0x50b469ae, 0x8cb4bcc8,
++ 0x2f229484, 0x10e9ea11, 0xb37fc25d, 0x4a55e5d2, 0xe9c3cd9e,
++ 0xd608b30b, 0x759e9b47, 0xa99e4e21, 0x0a08666d, 0x35c318f8,
++ 0x965530b4, 0x56b3b475, 0xf5259c39, 0xcaeee2ac, 0x6978cae0,
++ 0xb5781f86, 0x16ee37ca, 0x2925495f, 0x8ab36113, 0xe7328d38,
++ 0x44a4a574, 0x7b6fdbe1, 0xd8f9f3ad, 0x04f926cb, 0xa76f0e87,
++ 0x98a47012, 0x3b32585e, 0xfbd4dc9f, 0x5842f4d3, 0x67898a46,
++ 0xc41fa20a, 0x181f776c, 0xbb895f20, 0x844221b5, 0x27d409f9,
++ 0xdefe2e76, 0x7d68063a, 0x42a378af, 0xe13550e3, 0x3d358585,
++ 0x9ea3adc9, 0xa168d35c, 0x02fefb10, 0xc2187fd1, 0x618e579d,
++ 0x5e452908, 0xfdd30144, 0x21d3d422, 0x8245fc6e, 0xbd8e82fb,
++ 0x1e18aab7, 0x94abcba4, 0x373de3e8, 0x08f69d7d, 0xab60b531,
++ 0x77606057, 0xd4f6481b, 0xeb3d368e, 0x48ab1ec2, 0x884d9a03,
++ 0x2bdbb24f, 0x1410ccda, 0xb786e496, 0x6b8631f0, 0xc81019bc,
++ 0xf7db6729, 0x544d4f65, 0xad6768ea, 0x0ef140a6, 0x313a3e33,
++ 0x92ac167f, 0x4eacc319, 0xed3aeb55, 0xd2f195c0, 0x7167bd8c,
++ 0xb181394d, 0x12171101, 0x2ddc6f94, 0x8e4a47d8, 0x524a92be,
++ 0xf1dcbaf2, 0xce17c467, 0x6d81ec2b, 0x15141c31, 0xb682347d,
++ 0x89494ae8, 0x2adf62a4, 0xf6dfb7c2, 0x55499f8e, 0x6a82e11b,
++ 0xc914c957, 0x09f24d96, 0xaa6465da, 0x95af1b4f, 0x36393303,
++ 0xea39e665, 0x49afce29, 0x7664b0bc, 0xd5f298f0, 0x2cd8bf7f,
++ 0x8f4e9733, 0xb085e9a6, 0x1313c1ea, 0xcf13148c, 0x6c853cc0,
++ 0x534e4255, 0xf0d86a19, 0x303eeed8, 0x93a8c694, 0xac63b801,
++ 0x0ff5904d, 0xd3f5452b, 0x70636d67, 0x4fa813f2, 0xec3e3bbe,
++ 0x668d5aad, 0xc51b72e1, 0xfad00c74, 0x59462438, 0x8546f15e,
++ 0x26d0d912, 0x191ba787, 0xba8d8fcb, 0x7a6b0b0a, 0xd9fd2346,
++ 0xe6365dd3, 0x45a0759f, 0x99a0a0f9, 0x3a3688b5, 0x05fdf620,
++ 0xa66bde6c, 0x5f41f9e3, 0xfcd7d1af, 0xc31caf3a, 0x608a8776,
++ 0xbc8a5210, 0x1f1c7a5c, 0x20d704c9, 0x83412c85, 0x43a7a844,
++ 0xe0318008, 0xdffafe9d, 0x7c6cd6d1, 0xa06c03b7, 0x03fa2bfb,
++ 0x3c31556e, 0x9fa77d22, 0xf2269109, 0x51b0b945, 0x6e7bc7d0,
++ 0xcdedef9c, 0x11ed3afa, 0xb27b12b6, 0x8db06c23, 0x2e26446f,
++ 0xeec0c0ae, 0x4d56e8e2, 0x729d9677, 0xd10bbe3b, 0x0d0b6b5d,
++ 0xae9d4311, 0x91563d84, 0x32c015c8, 0xcbea3247, 0x687c1a0b,
++ 0x57b7649e, 0xf4214cd2, 0x282199b4, 0x8bb7b1f8, 0xb47ccf6d,
++ 0x17eae721, 0xd70c63e0, 0x749a4bac, 0x4b513539, 0xe8c71d75,
++ 0x34c7c813, 0x9751e05f, 0xa89a9eca, 0x0b0cb686, 0x81bfd795,
++ 0x2229ffd9, 0x1de2814c, 0xbe74a900, 0x62747c66, 0xc1e2542a,
++ 0xfe292abf, 0x5dbf02f3, 0x9d598632, 0x3ecfae7e, 0x0104d0eb,
++ 0xa292f8a7, 0x7e922dc1, 0xdd04058d, 0xe2cf7b18, 0x41595354,
++ 0xb87374db, 0x1be55c97, 0x242e2202, 0x87b80a4e, 0x5bb8df28,
++ 0xf82ef764, 0xc7e589f1, 0x6473a1bd, 0xa495257c, 0x07030d30,
++ 0x38c873a5, 0x9b5e5be9, 0x475e8e8f, 0xe4c8a6c3, 0xdb03d856,
++ 0x7895f01a},
++ {0x00000000, 0x2a283862, 0x545070c4, 0x7e7848a6, 0xa8a0e188,
++ 0x8288d9ea, 0xfcf0914c, 0xd6d8a92e, 0x8a30c551, 0xa018fd33,
++ 0xde60b595, 0xf4488df7, 0x229024d9, 0x08b81cbb, 0x76c0541d,
++ 0x5ce86c7f, 0xcf108ce3, 0xe538b481, 0x9b40fc27, 0xb168c445,
++ 0x67b06d6b, 0x4d985509, 0x33e01daf, 0x19c825cd, 0x452049b2,
++ 0x6f0871d0, 0x11703976, 0x3b580114, 0xed80a83a, 0xc7a89058,
++ 0xb9d0d8fe, 0x93f8e09c, 0x45501f87, 0x6f7827e5, 0x11006f43,
++ 0x3b285721, 0xedf0fe0f, 0xc7d8c66d, 0xb9a08ecb, 0x9388b6a9,
++ 0xcf60dad6, 0xe548e2b4, 0x9b30aa12, 0xb1189270, 0x67c03b5e,
++ 0x4de8033c, 0x33904b9a, 0x19b873f8, 0x8a409364, 0xa068ab06,
++ 0xde10e3a0, 0xf438dbc2, 0x22e072ec, 0x08c84a8e, 0x76b00228,
++ 0x5c983a4a, 0x00705635, 0x2a586e57, 0x542026f1, 0x7e081e93,
++ 0xa8d0b7bd, 0x82f88fdf, 0xfc80c779, 0xd6a8ff1b, 0x8aa03f0e,
++ 0xa088076c, 0xdef04fca, 0xf4d877a8, 0x2200de86, 0x0828e6e4,
++ 0x7650ae42, 0x5c789620, 0x0090fa5f, 0x2ab8c23d, 0x54c08a9b,
++ 0x7ee8b2f9, 0xa8301bd7, 0x821823b5, 0xfc606b13, 0xd6485371,
++ 0x45b0b3ed, 0x6f988b8f, 0x11e0c329, 0x3bc8fb4b, 0xed105265,
++ 0xc7386a07, 0xb94022a1, 0x93681ac3, 0xcf8076bc, 0xe5a84ede,
++ 0x9bd00678, 0xb1f83e1a, 0x67209734, 0x4d08af56, 0x3370e7f0,
++ 0x1958df92, 0xcff02089, 0xe5d818eb, 0x9ba0504d, 0xb188682f,
++ 0x6750c101, 0x4d78f963, 0x3300b1c5, 0x192889a7, 0x45c0e5d8,
++ 0x6fe8ddba, 0x1190951c, 0x3bb8ad7e, 0xed600450, 0xc7483c32,
++ 0xb9307494, 0x93184cf6, 0x00e0ac6a, 0x2ac89408, 0x54b0dcae,
++ 0x7e98e4cc, 0xa8404de2, 0x82687580, 0xfc103d26, 0xd6380544,
++ 0x8ad0693b, 0xa0f85159, 0xde8019ff, 0xf4a8219d, 0x227088b3,
++ 0x0858b0d1, 0x7620f877, 0x5c08c015, 0xce31785d, 0xe419403f,
++ 0x9a610899, 0xb04930fb, 0x669199d5, 0x4cb9a1b7, 0x32c1e911,
++ 0x18e9d173, 0x4401bd0c, 0x6e29856e, 0x1051cdc8, 0x3a79f5aa,
++ 0xeca15c84, 0xc68964e6, 0xb8f12c40, 0x92d91422, 0x0121f4be,
++ 0x2b09ccdc, 0x5571847a, 0x7f59bc18, 0xa9811536, 0x83a92d54,
++ 0xfdd165f2, 0xd7f95d90, 0x8b1131ef, 0xa139098d, 0xdf41412b,
++ 0xf5697949, 0x23b1d067, 0x0999e805, 0x77e1a0a3, 0x5dc998c1,
++ 0x8b6167da, 0xa1495fb8, 0xdf31171e, 0xf5192f7c, 0x23c18652,
++ 0x09e9be30, 0x7791f696, 0x5db9cef4, 0x0151a28b, 0x2b799ae9,
++ 0x5501d24f, 0x7f29ea2d, 0xa9f14303, 0x83d97b61, 0xfda133c7,
++ 0xd7890ba5, 0x4471eb39, 0x6e59d35b, 0x10219bfd, 0x3a09a39f,
++ 0xecd10ab1, 0xc6f932d3, 0xb8817a75, 0x92a94217, 0xce412e68,
++ 0xe469160a, 0x9a115eac, 0xb03966ce, 0x66e1cfe0, 0x4cc9f782,
++ 0x32b1bf24, 0x18998746, 0x44914753, 0x6eb97f31, 0x10c13797,
++ 0x3ae90ff5, 0xec31a6db, 0xc6199eb9, 0xb861d61f, 0x9249ee7d,
++ 0xcea18202, 0xe489ba60, 0x9af1f2c6, 0xb0d9caa4, 0x6601638a,
++ 0x4c295be8, 0x3251134e, 0x18792b2c, 0x8b81cbb0, 0xa1a9f3d2,
++ 0xdfd1bb74, 0xf5f98316, 0x23212a38, 0x0909125a, 0x77715afc,
++ 0x5d59629e, 0x01b10ee1, 0x2b993683, 0x55e17e25, 0x7fc94647,
++ 0xa911ef69, 0x8339d70b, 0xfd419fad, 0xd769a7cf, 0x01c158d4,
++ 0x2be960b6, 0x55912810, 0x7fb91072, 0xa961b95c, 0x8349813e,
++ 0xfd31c998, 0xd719f1fa, 0x8bf19d85, 0xa1d9a5e7, 0xdfa1ed41,
++ 0xf589d523, 0x23517c0d, 0x0979446f, 0x77010cc9, 0x5d2934ab,
++ 0xced1d437, 0xe4f9ec55, 0x9a81a4f3, 0xb0a99c91, 0x667135bf,
++ 0x4c590ddd, 0x3221457b, 0x18097d19, 0x44e11166, 0x6ec92904,
++ 0x10b161a2, 0x3a9959c0, 0xec41f0ee, 0xc669c88c, 0xb811802a,
++ 0x9239b848},
++ {0x00000000, 0x4713f6fb, 0x8e27edf6, 0xc9341b0d, 0xc73eddad,
++ 0x802d2b56, 0x4919305b, 0x0e0ac6a0, 0x550cbd1b, 0x121f4be0,
++ 0xdb2b50ed, 0x9c38a616, 0x923260b6, 0xd521964d, 0x1c158d40,
++ 0x5b067bbb, 0xaa197a36, 0xed0a8ccd, 0x243e97c0, 0x632d613b,
++ 0x6d27a79b, 0x2a345160, 0xe3004a6d, 0xa413bc96, 0xff15c72d,
++ 0xb80631d6, 0x71322adb, 0x3621dc20, 0x382b1a80, 0x7f38ec7b,
++ 0xb60cf776, 0xf11f018d, 0x8f43f22d, 0xc85004d6, 0x01641fdb,
++ 0x4677e920, 0x487d2f80, 0x0f6ed97b, 0xc65ac276, 0x8149348d,
++ 0xda4f4f36, 0x9d5cb9cd, 0x5468a2c0, 0x137b543b, 0x1d71929b,
++ 0x5a626460, 0x93567f6d, 0xd4458996, 0x255a881b, 0x62497ee0,
++ 0xab7d65ed, 0xec6e9316, 0xe26455b6, 0xa577a34d, 0x6c43b840,
++ 0x2b504ebb, 0x70563500, 0x3745c3fb, 0xfe71d8f6, 0xb9622e0d,
++ 0xb768e8ad, 0xf07b1e56, 0x394f055b, 0x7e5cf3a0, 0xc5f6e21b,
++ 0x82e514e0, 0x4bd10fed, 0x0cc2f916, 0x02c83fb6, 0x45dbc94d,
++ 0x8cefd240, 0xcbfc24bb, 0x90fa5f00, 0xd7e9a9fb, 0x1eddb2f6,
++ 0x59ce440d, 0x57c482ad, 0x10d77456, 0xd9e36f5b, 0x9ef099a0,
++ 0x6fef982d, 0x28fc6ed6, 0xe1c875db, 0xa6db8320, 0xa8d14580,
++ 0xefc2b37b, 0x26f6a876, 0x61e55e8d, 0x3ae32536, 0x7df0d3cd,
++ 0xb4c4c8c0, 0xf3d73e3b, 0xfdddf89b, 0xbace0e60, 0x73fa156d,
++ 0x34e9e396, 0x4ab51036, 0x0da6e6cd, 0xc492fdc0, 0x83810b3b,
++ 0x8d8bcd9b, 0xca983b60, 0x03ac206d, 0x44bfd696, 0x1fb9ad2d,
++ 0x58aa5bd6, 0x919e40db, 0xd68db620, 0xd8877080, 0x9f94867b,
++ 0x56a09d76, 0x11b36b8d, 0xe0ac6a00, 0xa7bf9cfb, 0x6e8b87f6,
++ 0x2998710d, 0x2792b7ad, 0x60814156, 0xa9b55a5b, 0xeea6aca0,
++ 0xb5a0d71b, 0xf2b321e0, 0x3b873aed, 0x7c94cc16, 0x729e0ab6,
++ 0x358dfc4d, 0xfcb9e740, 0xbbaa11bb, 0x509cc277, 0x178f348c,
++ 0xdebb2f81, 0x99a8d97a, 0x97a21fda, 0xd0b1e921, 0x1985f22c,
++ 0x5e9604d7, 0x05907f6c, 0x42838997, 0x8bb7929a, 0xcca46461,
++ 0xc2aea2c1, 0x85bd543a, 0x4c894f37, 0x0b9ab9cc, 0xfa85b841,
++ 0xbd964eba, 0x74a255b7, 0x33b1a34c, 0x3dbb65ec, 0x7aa89317,
++ 0xb39c881a, 0xf48f7ee1, 0xaf89055a, 0xe89af3a1, 0x21aee8ac,
++ 0x66bd1e57, 0x68b7d8f7, 0x2fa42e0c, 0xe6903501, 0xa183c3fa,
++ 0xdfdf305a, 0x98ccc6a1, 0x51f8ddac, 0x16eb2b57, 0x18e1edf7,
++ 0x5ff21b0c, 0x96c60001, 0xd1d5f6fa, 0x8ad38d41, 0xcdc07bba,
++ 0x04f460b7, 0x43e7964c, 0x4ded50ec, 0x0afea617, 0xc3cabd1a,
++ 0x84d94be1, 0x75c64a6c, 0x32d5bc97, 0xfbe1a79a, 0xbcf25161,
++ 0xb2f897c1, 0xf5eb613a, 0x3cdf7a37, 0x7bcc8ccc, 0x20caf777,
++ 0x67d9018c, 0xaeed1a81, 0xe9feec7a, 0xe7f42ada, 0xa0e7dc21,
++ 0x69d3c72c, 0x2ec031d7, 0x956a206c, 0xd279d697, 0x1b4dcd9a,
++ 0x5c5e3b61, 0x5254fdc1, 0x15470b3a, 0xdc731037, 0x9b60e6cc,
++ 0xc0669d77, 0x87756b8c, 0x4e417081, 0x0952867a, 0x075840da,
++ 0x404bb621, 0x897fad2c, 0xce6c5bd7, 0x3f735a5a, 0x7860aca1,
++ 0xb154b7ac, 0xf6474157, 0xf84d87f7, 0xbf5e710c, 0x766a6a01,
++ 0x31799cfa, 0x6a7fe741, 0x2d6c11ba, 0xe4580ab7, 0xa34bfc4c,
++ 0xad413aec, 0xea52cc17, 0x2366d71a, 0x647521e1, 0x1a29d241,
++ 0x5d3a24ba, 0x940e3fb7, 0xd31dc94c, 0xdd170fec, 0x9a04f917,
++ 0x5330e21a, 0x142314e1, 0x4f256f5a, 0x083699a1, 0xc10282ac,
++ 0x86117457, 0x881bb2f7, 0xcf08440c, 0x063c5f01, 0x412fa9fa,
++ 0xb030a877, 0xf7235e8c, 0x3e174581, 0x7904b37a, 0x770e75da,
++ 0x301d8321, 0xf929982c, 0xbe3a6ed7, 0xe53c156c, 0xa22fe397,
++ 0x6b1bf89a, 0x2c080e61, 0x2202c8c1, 0x65113e3a, 0xac252537,
++ 0xeb36d3cc},
++ {0x00000000, 0xa13984ee, 0x99020f9d, 0x383b8b73, 0xe975197b,
++ 0x484c9d95, 0x707716e6, 0xd14e9208, 0x099b34b7, 0xa8a2b059,
++ 0x90993b2a, 0x31a0bfc4, 0xe0ee2dcc, 0x41d7a922, 0x79ec2251,
++ 0xd8d5a6bf, 0x1336696e, 0xb20fed80, 0x8a3466f3, 0x2b0de21d,
++ 0xfa437015, 0x5b7af4fb, 0x63417f88, 0xc278fb66, 0x1aad5dd9,
++ 0xbb94d937, 0x83af5244, 0x2296d6aa, 0xf3d844a2, 0x52e1c04c,
++ 0x6ada4b3f, 0xcbe3cfd1, 0x266cd2dc, 0x87555632, 0xbf6edd41,
++ 0x1e5759af, 0xcf19cba7, 0x6e204f49, 0x561bc43a, 0xf72240d4,
++ 0x2ff7e66b, 0x8ece6285, 0xb6f5e9f6, 0x17cc6d18, 0xc682ff10,
++ 0x67bb7bfe, 0x5f80f08d, 0xfeb97463, 0x355abbb2, 0x94633f5c,
++ 0xac58b42f, 0x0d6130c1, 0xdc2fa2c9, 0x7d162627, 0x452dad54,
++ 0xe41429ba, 0x3cc18f05, 0x9df80beb, 0xa5c38098, 0x04fa0476,
++ 0xd5b4967e, 0x748d1290, 0x4cb699e3, 0xed8f1d0d, 0x4cd9a5b8,
++ 0xede02156, 0xd5dbaa25, 0x74e22ecb, 0xa5acbcc3, 0x0495382d,
++ 0x3caeb35e, 0x9d9737b0, 0x4542910f, 0xe47b15e1, 0xdc409e92,
++ 0x7d791a7c, 0xac378874, 0x0d0e0c9a, 0x353587e9, 0x940c0307,
++ 0x5fefccd6, 0xfed64838, 0xc6edc34b, 0x67d447a5, 0xb69ad5ad,
++ 0x17a35143, 0x2f98da30, 0x8ea15ede, 0x5674f861, 0xf74d7c8f,
++ 0xcf76f7fc, 0x6e4f7312, 0xbf01e11a, 0x1e3865f4, 0x2603ee87,
++ 0x873a6a69, 0x6ab57764, 0xcb8cf38a, 0xf3b778f9, 0x528efc17,
++ 0x83c06e1f, 0x22f9eaf1, 0x1ac26182, 0xbbfbe56c, 0x632e43d3,
++ 0xc217c73d, 0xfa2c4c4e, 0x5b15c8a0, 0x8a5b5aa8, 0x2b62de46,
++ 0x13595535, 0xb260d1db, 0x79831e0a, 0xd8ba9ae4, 0xe0811197,
++ 0x41b89579, 0x90f60771, 0x31cf839f, 0x09f408ec, 0xa8cd8c02,
++ 0x70182abd, 0xd121ae53, 0xe91a2520, 0x4823a1ce, 0x996d33c6,
++ 0x3854b728, 0x006f3c5b, 0xa156b8b5, 0x99b34b70, 0x388acf9e,
++ 0x00b144ed, 0xa188c003, 0x70c6520b, 0xd1ffd6e5, 0xe9c45d96,
++ 0x48fdd978, 0x90287fc7, 0x3111fb29, 0x092a705a, 0xa813f4b4,
++ 0x795d66bc, 0xd864e252, 0xe05f6921, 0x4166edcf, 0x8a85221e,
++ 0x2bbca6f0, 0x13872d83, 0xb2bea96d, 0x63f03b65, 0xc2c9bf8b,
++ 0xfaf234f8, 0x5bcbb016, 0x831e16a9, 0x22279247, 0x1a1c1934,
++ 0xbb259dda, 0x6a6b0fd2, 0xcb528b3c, 0xf369004f, 0x525084a1,
++ 0xbfdf99ac, 0x1ee61d42, 0x26dd9631, 0x87e412df, 0x56aa80d7,
++ 0xf7930439, 0xcfa88f4a, 0x6e910ba4, 0xb644ad1b, 0x177d29f5,
++ 0x2f46a286, 0x8e7f2668, 0x5f31b460, 0xfe08308e, 0xc633bbfd,
++ 0x670a3f13, 0xace9f0c2, 0x0dd0742c, 0x35ebff5f, 0x94d27bb1,
++ 0x459ce9b9, 0xe4a56d57, 0xdc9ee624, 0x7da762ca, 0xa572c475,
++ 0x044b409b, 0x3c70cbe8, 0x9d494f06, 0x4c07dd0e, 0xed3e59e0,
++ 0xd505d293, 0x743c567d, 0xd56aeec8, 0x74536a26, 0x4c68e155,
++ 0xed5165bb, 0x3c1ff7b3, 0x9d26735d, 0xa51df82e, 0x04247cc0,
++ 0xdcf1da7f, 0x7dc85e91, 0x45f3d5e2, 0xe4ca510c, 0x3584c304,
++ 0x94bd47ea, 0xac86cc99, 0x0dbf4877, 0xc65c87a6, 0x67650348,
++ 0x5f5e883b, 0xfe670cd5, 0x2f299edd, 0x8e101a33, 0xb62b9140,
++ 0x171215ae, 0xcfc7b311, 0x6efe37ff, 0x56c5bc8c, 0xf7fc3862,
++ 0x26b2aa6a, 0x878b2e84, 0xbfb0a5f7, 0x1e892119, 0xf3063c14,
++ 0x523fb8fa, 0x6a043389, 0xcb3db767, 0x1a73256f, 0xbb4aa181,
++ 0x83712af2, 0x2248ae1c, 0xfa9d08a3, 0x5ba48c4d, 0x639f073e,
++ 0xc2a683d0, 0x13e811d8, 0xb2d19536, 0x8aea1e45, 0x2bd39aab,
++ 0xe030557a, 0x4109d194, 0x79325ae7, 0xd80bde09, 0x09454c01,
++ 0xa87cc8ef, 0x9047439c, 0x317ec772, 0xe9ab61cd, 0x4892e523,
++ 0x70a96e50, 0xd190eabe, 0x00de78b6, 0xa1e7fc58, 0x99dc772b,
++ 0x38e5f3c5},
++ {0x00000000, 0xe81790a1, 0x0b5e2703, 0xe349b7a2, 0x16bc4e06,
++ 0xfeabdea7, 0x1de26905, 0xf5f5f9a4, 0x2d789c0c, 0xc56f0cad,
++ 0x2626bb0f, 0xce312bae, 0x3bc4d20a, 0xd3d342ab, 0x309af509,
++ 0xd88d65a8, 0x5af13818, 0xb2e6a8b9, 0x51af1f1b, 0xb9b88fba,
++ 0x4c4d761e, 0xa45ae6bf, 0x4713511d, 0xaf04c1bc, 0x7789a414,
++ 0x9f9e34b5, 0x7cd78317, 0x94c013b6, 0x6135ea12, 0x89227ab3,
++ 0x6a6bcd11, 0x827c5db0, 0xb5e27030, 0x5df5e091, 0xbebc5733,
++ 0x56abc792, 0xa35e3e36, 0x4b49ae97, 0xa8001935, 0x40178994,
++ 0x989aec3c, 0x708d7c9d, 0x93c4cb3f, 0x7bd35b9e, 0x8e26a23a,
++ 0x6631329b, 0x85788539, 0x6d6f1598, 0xef134828, 0x0704d889,
++ 0xe44d6f2b, 0x0c5aff8a, 0xf9af062e, 0x11b8968f, 0xf2f1212d,
++ 0x1ae6b18c, 0xc26bd424, 0x2a7c4485, 0xc935f327, 0x21226386,
++ 0xd4d79a22, 0x3cc00a83, 0xdf89bd21, 0x379e2d80, 0xb0b5e621,
++ 0x58a27680, 0xbbebc122, 0x53fc5183, 0xa609a827, 0x4e1e3886,
++ 0xad578f24, 0x45401f85, 0x9dcd7a2d, 0x75daea8c, 0x96935d2e,
++ 0x7e84cd8f, 0x8b71342b, 0x6366a48a, 0x802f1328, 0x68388389,
++ 0xea44de39, 0x02534e98, 0xe11af93a, 0x090d699b, 0xfcf8903f,
++ 0x14ef009e, 0xf7a6b73c, 0x1fb1279d, 0xc73c4235, 0x2f2bd294,
++ 0xcc626536, 0x2475f597, 0xd1800c33, 0x39979c92, 0xdade2b30,
++ 0x32c9bb91, 0x05579611, 0xed4006b0, 0x0e09b112, 0xe61e21b3,
++ 0x13ebd817, 0xfbfc48b6, 0x18b5ff14, 0xf0a26fb5, 0x282f0a1d,
++ 0xc0389abc, 0x23712d1e, 0xcb66bdbf, 0x3e93441b, 0xd684d4ba,
++ 0x35cd6318, 0xdddaf3b9, 0x5fa6ae09, 0xb7b13ea8, 0x54f8890a,
++ 0xbcef19ab, 0x491ae00f, 0xa10d70ae, 0x4244c70c, 0xaa5357ad,
++ 0x72de3205, 0x9ac9a2a4, 0x79801506, 0x919785a7, 0x64627c03,
++ 0x8c75eca2, 0x6f3c5b00, 0x872bcba1, 0xba1aca03, 0x520d5aa2,
++ 0xb144ed00, 0x59537da1, 0xaca68405, 0x44b114a4, 0xa7f8a306,
++ 0x4fef33a7, 0x9762560f, 0x7f75c6ae, 0x9c3c710c, 0x742be1ad,
++ 0x81de1809, 0x69c988a8, 0x8a803f0a, 0x6297afab, 0xe0ebf21b,
++ 0x08fc62ba, 0xebb5d518, 0x03a245b9, 0xf657bc1d, 0x1e402cbc,
++ 0xfd099b1e, 0x151e0bbf, 0xcd936e17, 0x2584feb6, 0xc6cd4914,
++ 0x2edad9b5, 0xdb2f2011, 0x3338b0b0, 0xd0710712, 0x386697b3,
++ 0x0ff8ba33, 0xe7ef2a92, 0x04a69d30, 0xecb10d91, 0x1944f435,
++ 0xf1536494, 0x121ad336, 0xfa0d4397, 0x2280263f, 0xca97b69e,
++ 0x29de013c, 0xc1c9919d, 0x343c6839, 0xdc2bf898, 0x3f624f3a,
++ 0xd775df9b, 0x5509822b, 0xbd1e128a, 0x5e57a528, 0xb6403589,
++ 0x43b5cc2d, 0xaba25c8c, 0x48ebeb2e, 0xa0fc7b8f, 0x78711e27,
++ 0x90668e86, 0x732f3924, 0x9b38a985, 0x6ecd5021, 0x86dac080,
++ 0x65937722, 0x8d84e783, 0x0aaf2c22, 0xe2b8bc83, 0x01f10b21,
++ 0xe9e69b80, 0x1c136224, 0xf404f285, 0x174d4527, 0xff5ad586,
++ 0x27d7b02e, 0xcfc0208f, 0x2c89972d, 0xc49e078c, 0x316bfe28,
++ 0xd97c6e89, 0x3a35d92b, 0xd222498a, 0x505e143a, 0xb849849b,
++ 0x5b003339, 0xb317a398, 0x46e25a3c, 0xaef5ca9d, 0x4dbc7d3f,
++ 0xa5abed9e, 0x7d268836, 0x95311897, 0x7678af35, 0x9e6f3f94,
++ 0x6b9ac630, 0x838d5691, 0x60c4e133, 0x88d37192, 0xbf4d5c12,
++ 0x575accb3, 0xb4137b11, 0x5c04ebb0, 0xa9f11214, 0x41e682b5,
++ 0xa2af3517, 0x4ab8a5b6, 0x9235c01e, 0x7a2250bf, 0x996be71d,
++ 0x717c77bc, 0x84898e18, 0x6c9e1eb9, 0x8fd7a91b, 0x67c039ba,
++ 0xe5bc640a, 0x0dabf4ab, 0xeee24309, 0x06f5d3a8, 0xf3002a0c,
++ 0x1b17baad, 0xf85e0d0f, 0x10499dae, 0xc8c4f806, 0x20d368a7,
++ 0xc39adf05, 0x2b8d4fa4, 0xde78b600, 0x366f26a1, 0xd5269103,
++ 0x3d3101a2}};
++
++local const z_word_t FAR crc_braid_big_table[][256] = {
++ {0x0000000000000000, 0xa19017e800000000, 0x03275e0b00000000,
++ 0xa2b749e300000000, 0x064ebc1600000000, 0xa7deabfe00000000,
++ 0x0569e21d00000000, 0xa4f9f5f500000000, 0x0c9c782d00000000,
++ 0xad0c6fc500000000, 0x0fbb262600000000, 0xae2b31ce00000000,
++ 0x0ad2c43b00000000, 0xab42d3d300000000, 0x09f59a3000000000,
++ 0xa8658dd800000000, 0x1838f15a00000000, 0xb9a8e6b200000000,
++ 0x1b1faf5100000000, 0xba8fb8b900000000, 0x1e764d4c00000000,
++ 0xbfe65aa400000000, 0x1d51134700000000, 0xbcc104af00000000,
++ 0x14a4897700000000, 0xb5349e9f00000000, 0x1783d77c00000000,
++ 0xb613c09400000000, 0x12ea356100000000, 0xb37a228900000000,
++ 0x11cd6b6a00000000, 0xb05d7c8200000000, 0x3070e2b500000000,
++ 0x91e0f55d00000000, 0x3357bcbe00000000, 0x92c7ab5600000000,
++ 0x363e5ea300000000, 0x97ae494b00000000, 0x351900a800000000,
++ 0x9489174000000000, 0x3cec9a9800000000, 0x9d7c8d7000000000,
++ 0x3fcbc49300000000, 0x9e5bd37b00000000, 0x3aa2268e00000000,
++ 0x9b32316600000000, 0x3985788500000000, 0x98156f6d00000000,
++ 0x284813ef00000000, 0x89d8040700000000, 0x2b6f4de400000000,
++ 0x8aff5a0c00000000, 0x2e06aff900000000, 0x8f96b81100000000,
++ 0x2d21f1f200000000, 0x8cb1e61a00000000, 0x24d46bc200000000,
++ 0x85447c2a00000000, 0x27f335c900000000, 0x8663222100000000,
++ 0x229ad7d400000000, 0x830ac03c00000000, 0x21bd89df00000000,
++ 0x802d9e3700000000, 0x21e6b5b000000000, 0x8076a25800000000,
++ 0x22c1ebbb00000000, 0x8351fc5300000000, 0x27a809a600000000,
++ 0x86381e4e00000000, 0x248f57ad00000000, 0x851f404500000000,
++ 0x2d7acd9d00000000, 0x8ceada7500000000, 0x2e5d939600000000,
++ 0x8fcd847e00000000, 0x2b34718b00000000, 0x8aa4666300000000,
++ 0x28132f8000000000, 0x8983386800000000, 0x39de44ea00000000,
++ 0x984e530200000000, 0x3af91ae100000000, 0x9b690d0900000000,
++ 0x3f90f8fc00000000, 0x9e00ef1400000000, 0x3cb7a6f700000000,
++ 0x9d27b11f00000000, 0x35423cc700000000, 0x94d22b2f00000000,
++ 0x366562cc00000000, 0x97f5752400000000, 0x330c80d100000000,
++ 0x929c973900000000, 0x302bdeda00000000, 0x91bbc93200000000,
++ 0x1196570500000000, 0xb00640ed00000000, 0x12b1090e00000000,
++ 0xb3211ee600000000, 0x17d8eb1300000000, 0xb648fcfb00000000,
++ 0x14ffb51800000000, 0xb56fa2f000000000, 0x1d0a2f2800000000,
++ 0xbc9a38c000000000, 0x1e2d712300000000, 0xbfbd66cb00000000,
++ 0x1b44933e00000000, 0xbad484d600000000, 0x1863cd3500000000,
++ 0xb9f3dadd00000000, 0x09aea65f00000000, 0xa83eb1b700000000,
++ 0x0a89f85400000000, 0xab19efbc00000000, 0x0fe01a4900000000,
++ 0xae700da100000000, 0x0cc7444200000000, 0xad5753aa00000000,
++ 0x0532de7200000000, 0xa4a2c99a00000000, 0x0615807900000000,
++ 0xa785979100000000, 0x037c626400000000, 0xa2ec758c00000000,
++ 0x005b3c6f00000000, 0xa1cb2b8700000000, 0x03ca1aba00000000,
++ 0xa25a0d5200000000, 0x00ed44b100000000, 0xa17d535900000000,
++ 0x0584a6ac00000000, 0xa414b14400000000, 0x06a3f8a700000000,
++ 0xa733ef4f00000000, 0x0f56629700000000, 0xaec6757f00000000,
++ 0x0c713c9c00000000, 0xade12b7400000000, 0x0918de8100000000,
++ 0xa888c96900000000, 0x0a3f808a00000000, 0xabaf976200000000,
++ 0x1bf2ebe000000000, 0xba62fc0800000000, 0x18d5b5eb00000000,
++ 0xb945a20300000000, 0x1dbc57f600000000, 0xbc2c401e00000000,
++ 0x1e9b09fd00000000, 0xbf0b1e1500000000, 0x176e93cd00000000,
++ 0xb6fe842500000000, 0x1449cdc600000000, 0xb5d9da2e00000000,
++ 0x11202fdb00000000, 0xb0b0383300000000, 0x120771d000000000,
++ 0xb397663800000000, 0x33baf80f00000000, 0x922aefe700000000,
++ 0x309da60400000000, 0x910db1ec00000000, 0x35f4441900000000,
++ 0x946453f100000000, 0x36d31a1200000000, 0x97430dfa00000000,
++ 0x3f26802200000000, 0x9eb697ca00000000, 0x3c01de2900000000,
++ 0x9d91c9c100000000, 0x39683c3400000000, 0x98f82bdc00000000,
++ 0x3a4f623f00000000, 0x9bdf75d700000000, 0x2b82095500000000,
++ 0x8a121ebd00000000, 0x28a5575e00000000, 0x893540b600000000,
++ 0x2dccb54300000000, 0x8c5ca2ab00000000, 0x2eebeb4800000000,
++ 0x8f7bfca000000000, 0x271e717800000000, 0x868e669000000000,
++ 0x24392f7300000000, 0x85a9389b00000000, 0x2150cd6e00000000,
++ 0x80c0da8600000000, 0x2277936500000000, 0x83e7848d00000000,
++ 0x222caf0a00000000, 0x83bcb8e200000000, 0x210bf10100000000,
++ 0x809be6e900000000, 0x2462131c00000000, 0x85f204f400000000,
++ 0x27454d1700000000, 0x86d55aff00000000, 0x2eb0d72700000000,
++ 0x8f20c0cf00000000, 0x2d97892c00000000, 0x8c079ec400000000,
++ 0x28fe6b3100000000, 0x896e7cd900000000, 0x2bd9353a00000000,
++ 0x8a4922d200000000, 0x3a145e5000000000, 0x9b8449b800000000,
++ 0x3933005b00000000, 0x98a317b300000000, 0x3c5ae24600000000,
++ 0x9dcaf5ae00000000, 0x3f7dbc4d00000000, 0x9eedaba500000000,
++ 0x3688267d00000000, 0x9718319500000000, 0x35af787600000000,
++ 0x943f6f9e00000000, 0x30c69a6b00000000, 0x91568d8300000000,
++ 0x33e1c46000000000, 0x9271d38800000000, 0x125c4dbf00000000,
++ 0xb3cc5a5700000000, 0x117b13b400000000, 0xb0eb045c00000000,
++ 0x1412f1a900000000, 0xb582e64100000000, 0x1735afa200000000,
++ 0xb6a5b84a00000000, 0x1ec0359200000000, 0xbf50227a00000000,
++ 0x1de76b9900000000, 0xbc777c7100000000, 0x188e898400000000,
++ 0xb91e9e6c00000000, 0x1ba9d78f00000000, 0xba39c06700000000,
++ 0x0a64bce500000000, 0xabf4ab0d00000000, 0x0943e2ee00000000,
++ 0xa8d3f50600000000, 0x0c2a00f300000000, 0xadba171b00000000,
++ 0x0f0d5ef800000000, 0xae9d491000000000, 0x06f8c4c800000000,
++ 0xa768d32000000000, 0x05df9ac300000000, 0xa44f8d2b00000000,
++ 0x00b678de00000000, 0xa1266f3600000000, 0x039126d500000000,
++ 0xa201313d00000000},
++ {0x0000000000000000, 0xee8439a100000000, 0x9d0f029900000000,
++ 0x738b3b3800000000, 0x7b1975e900000000, 0x959d4c4800000000,
++ 0xe616777000000000, 0x08924ed100000000, 0xb7349b0900000000,
++ 0x59b0a2a800000000, 0x2a3b999000000000, 0xc4bfa03100000000,
++ 0xcc2deee000000000, 0x22a9d74100000000, 0x5122ec7900000000,
++ 0xbfa6d5d800000000, 0x6e69361300000000, 0x80ed0fb200000000,
++ 0xf366348a00000000, 0x1de20d2b00000000, 0x157043fa00000000,
++ 0xfbf47a5b00000000, 0x887f416300000000, 0x66fb78c200000000,
++ 0xd95dad1a00000000, 0x37d994bb00000000, 0x4452af8300000000,
++ 0xaad6962200000000, 0xa244d8f300000000, 0x4cc0e15200000000,
++ 0x3f4bda6a00000000, 0xd1cfe3cb00000000, 0xdcd26c2600000000,
++ 0x3256558700000000, 0x41dd6ebf00000000, 0xaf59571e00000000,
++ 0xa7cb19cf00000000, 0x494f206e00000000, 0x3ac41b5600000000,
++ 0xd44022f700000000, 0x6be6f72f00000000, 0x8562ce8e00000000,
++ 0xf6e9f5b600000000, 0x186dcc1700000000, 0x10ff82c600000000,
++ 0xfe7bbb6700000000, 0x8df0805f00000000, 0x6374b9fe00000000,
++ 0xb2bb5a3500000000, 0x5c3f639400000000, 0x2fb458ac00000000,
++ 0xc130610d00000000, 0xc9a22fdc00000000, 0x2726167d00000000,
++ 0x54ad2d4500000000, 0xba2914e400000000, 0x058fc13c00000000,
++ 0xeb0bf89d00000000, 0x9880c3a500000000, 0x7604fa0400000000,
++ 0x7e96b4d500000000, 0x90128d7400000000, 0xe399b64c00000000,
++ 0x0d1d8fed00000000, 0xb8a5d94c00000000, 0x5621e0ed00000000,
++ 0x25aadbd500000000, 0xcb2ee27400000000, 0xc3bcaca500000000,
++ 0x2d38950400000000, 0x5eb3ae3c00000000, 0xb037979d00000000,
++ 0x0f91424500000000, 0xe1157be400000000, 0x929e40dc00000000,
++ 0x7c1a797d00000000, 0x748837ac00000000, 0x9a0c0e0d00000000,
++ 0xe987353500000000, 0x07030c9400000000, 0xd6ccef5f00000000,
++ 0x3848d6fe00000000, 0x4bc3edc600000000, 0xa547d46700000000,
++ 0xadd59ab600000000, 0x4351a31700000000, 0x30da982f00000000,
++ 0xde5ea18e00000000, 0x61f8745600000000, 0x8f7c4df700000000,
++ 0xfcf776cf00000000, 0x12734f6e00000000, 0x1ae101bf00000000,
++ 0xf465381e00000000, 0x87ee032600000000, 0x696a3a8700000000,
++ 0x6477b56a00000000, 0x8af38ccb00000000, 0xf978b7f300000000,
++ 0x17fc8e5200000000, 0x1f6ec08300000000, 0xf1eaf92200000000,
++ 0x8261c21a00000000, 0x6ce5fbbb00000000, 0xd3432e6300000000,
++ 0x3dc717c200000000, 0x4e4c2cfa00000000, 0xa0c8155b00000000,
++ 0xa85a5b8a00000000, 0x46de622b00000000, 0x3555591300000000,
++ 0xdbd160b200000000, 0x0a1e837900000000, 0xe49abad800000000,
++ 0x971181e000000000, 0x7995b84100000000, 0x7107f69000000000,
++ 0x9f83cf3100000000, 0xec08f40900000000, 0x028ccda800000000,
++ 0xbd2a187000000000, 0x53ae21d100000000, 0x20251ae900000000,
++ 0xcea1234800000000, 0xc6336d9900000000, 0x28b7543800000000,
++ 0x5b3c6f0000000000, 0xb5b856a100000000, 0x704bb39900000000,
++ 0x9ecf8a3800000000, 0xed44b10000000000, 0x03c088a100000000,
++ 0x0b52c67000000000, 0xe5d6ffd100000000, 0x965dc4e900000000,
++ 0x78d9fd4800000000, 0xc77f289000000000, 0x29fb113100000000,
++ 0x5a702a0900000000, 0xb4f413a800000000, 0xbc665d7900000000,
++ 0x52e264d800000000, 0x21695fe000000000, 0xcfed664100000000,
++ 0x1e22858a00000000, 0xf0a6bc2b00000000, 0x832d871300000000,
++ 0x6da9beb200000000, 0x653bf06300000000, 0x8bbfc9c200000000,
++ 0xf834f2fa00000000, 0x16b0cb5b00000000, 0xa9161e8300000000,
++ 0x4792272200000000, 0x34191c1a00000000, 0xda9d25bb00000000,
++ 0xd20f6b6a00000000, 0x3c8b52cb00000000, 0x4f0069f300000000,
++ 0xa184505200000000, 0xac99dfbf00000000, 0x421de61e00000000,
++ 0x3196dd2600000000, 0xdf12e48700000000, 0xd780aa5600000000,
++ 0x390493f700000000, 0x4a8fa8cf00000000, 0xa40b916e00000000,
++ 0x1bad44b600000000, 0xf5297d1700000000, 0x86a2462f00000000,
++ 0x68267f8e00000000, 0x60b4315f00000000, 0x8e3008fe00000000,
++ 0xfdbb33c600000000, 0x133f0a6700000000, 0xc2f0e9ac00000000,
++ 0x2c74d00d00000000, 0x5fffeb3500000000, 0xb17bd29400000000,
++ 0xb9e99c4500000000, 0x576da5e400000000, 0x24e69edc00000000,
++ 0xca62a77d00000000, 0x75c472a500000000, 0x9b404b0400000000,
++ 0xe8cb703c00000000, 0x064f499d00000000, 0x0edd074c00000000,
++ 0xe0593eed00000000, 0x93d205d500000000, 0x7d563c7400000000,
++ 0xc8ee6ad500000000, 0x266a537400000000, 0x55e1684c00000000,
++ 0xbb6551ed00000000, 0xb3f71f3c00000000, 0x5d73269d00000000,
++ 0x2ef81da500000000, 0xc07c240400000000, 0x7fdaf1dc00000000,
++ 0x915ec87d00000000, 0xe2d5f34500000000, 0x0c51cae400000000,
++ 0x04c3843500000000, 0xea47bd9400000000, 0x99cc86ac00000000,
++ 0x7748bf0d00000000, 0xa6875cc600000000, 0x4803656700000000,
++ 0x3b885e5f00000000, 0xd50c67fe00000000, 0xdd9e292f00000000,
++ 0x331a108e00000000, 0x40912bb600000000, 0xae15121700000000,
++ 0x11b3c7cf00000000, 0xff37fe6e00000000, 0x8cbcc55600000000,
++ 0x6238fcf700000000, 0x6aaab22600000000, 0x842e8b8700000000,
++ 0xf7a5b0bf00000000, 0x1921891e00000000, 0x143c06f300000000,
++ 0xfab83f5200000000, 0x8933046a00000000, 0x67b73dcb00000000,
++ 0x6f25731a00000000, 0x81a14abb00000000, 0xf22a718300000000,
++ 0x1cae482200000000, 0xa3089dfa00000000, 0x4d8ca45b00000000,
++ 0x3e079f6300000000, 0xd083a6c200000000, 0xd811e81300000000,
++ 0x3695d1b200000000, 0x451eea8a00000000, 0xab9ad32b00000000,
++ 0x7a5530e000000000, 0x94d1094100000000, 0xe75a327900000000,
++ 0x09de0bd800000000, 0x014c450900000000, 0xefc87ca800000000,
++ 0x9c43479000000000, 0x72c77e3100000000, 0xcd61abe900000000,
++ 0x23e5924800000000, 0x506ea97000000000, 0xbeea90d100000000,
++ 0xb678de0000000000, 0x58fce7a100000000, 0x2b77dc9900000000,
++ 0xc5f3e53800000000},
++ {0x0000000000000000, 0xfbf6134700000000, 0xf6ed278e00000000,
++ 0x0d1b34c900000000, 0xaddd3ec700000000, 0x562b2d8000000000,
++ 0x5b30194900000000, 0xa0c60a0e00000000, 0x1bbd0c5500000000,
++ 0xe04b1f1200000000, 0xed502bdb00000000, 0x16a6389c00000000,
++ 0xb660329200000000, 0x4d9621d500000000, 0x408d151c00000000,
++ 0xbb7b065b00000000, 0x367a19aa00000000, 0xcd8c0aed00000000,
++ 0xc0973e2400000000, 0x3b612d6300000000, 0x9ba7276d00000000,
++ 0x6051342a00000000, 0x6d4a00e300000000, 0x96bc13a400000000,
++ 0x2dc715ff00000000, 0xd63106b800000000, 0xdb2a327100000000,
++ 0x20dc213600000000, 0x801a2b3800000000, 0x7bec387f00000000,
++ 0x76f70cb600000000, 0x8d011ff100000000, 0x2df2438f00000000,
++ 0xd60450c800000000, 0xdb1f640100000000, 0x20e9774600000000,
++ 0x802f7d4800000000, 0x7bd96e0f00000000, 0x76c25ac600000000,
++ 0x8d34498100000000, 0x364f4fda00000000, 0xcdb95c9d00000000,
++ 0xc0a2685400000000, 0x3b547b1300000000, 0x9b92711d00000000,
++ 0x6064625a00000000, 0x6d7f569300000000, 0x968945d400000000,
++ 0x1b885a2500000000, 0xe07e496200000000, 0xed657dab00000000,
++ 0x16936eec00000000, 0xb65564e200000000, 0x4da377a500000000,
++ 0x40b8436c00000000, 0xbb4e502b00000000, 0x0035567000000000,
++ 0xfbc3453700000000, 0xf6d871fe00000000, 0x0d2e62b900000000,
++ 0xade868b700000000, 0x561e7bf000000000, 0x5b054f3900000000,
++ 0xa0f35c7e00000000, 0x1be2f6c500000000, 0xe014e58200000000,
++ 0xed0fd14b00000000, 0x16f9c20c00000000, 0xb63fc80200000000,
++ 0x4dc9db4500000000, 0x40d2ef8c00000000, 0xbb24fccb00000000,
++ 0x005ffa9000000000, 0xfba9e9d700000000, 0xf6b2dd1e00000000,
++ 0x0d44ce5900000000, 0xad82c45700000000, 0x5674d71000000000,
++ 0x5b6fe3d900000000, 0xa099f09e00000000, 0x2d98ef6f00000000,
++ 0xd66efc2800000000, 0xdb75c8e100000000, 0x2083dba600000000,
++ 0x8045d1a800000000, 0x7bb3c2ef00000000, 0x76a8f62600000000,
++ 0x8d5ee56100000000, 0x3625e33a00000000, 0xcdd3f07d00000000,
++ 0xc0c8c4b400000000, 0x3b3ed7f300000000, 0x9bf8ddfd00000000,
++ 0x600eceba00000000, 0x6d15fa7300000000, 0x96e3e93400000000,
++ 0x3610b54a00000000, 0xcde6a60d00000000, 0xc0fd92c400000000,
++ 0x3b0b818300000000, 0x9bcd8b8d00000000, 0x603b98ca00000000,
++ 0x6d20ac0300000000, 0x96d6bf4400000000, 0x2dadb91f00000000,
++ 0xd65baa5800000000, 0xdb409e9100000000, 0x20b68dd600000000,
++ 0x807087d800000000, 0x7b86949f00000000, 0x769da05600000000,
++ 0x8d6bb31100000000, 0x006aace000000000, 0xfb9cbfa700000000,
++ 0xf6878b6e00000000, 0x0d71982900000000, 0xadb7922700000000,
++ 0x5641816000000000, 0x5b5ab5a900000000, 0xa0aca6ee00000000,
++ 0x1bd7a0b500000000, 0xe021b3f200000000, 0xed3a873b00000000,
++ 0x16cc947c00000000, 0xb60a9e7200000000, 0x4dfc8d3500000000,
++ 0x40e7b9fc00000000, 0xbb11aabb00000000, 0x77c29c5000000000,
++ 0x8c348f1700000000, 0x812fbbde00000000, 0x7ad9a89900000000,
++ 0xda1fa29700000000, 0x21e9b1d000000000, 0x2cf2851900000000,
++ 0xd704965e00000000, 0x6c7f900500000000, 0x9789834200000000,
++ 0x9a92b78b00000000, 0x6164a4cc00000000, 0xc1a2aec200000000,
++ 0x3a54bd8500000000, 0x374f894c00000000, 0xccb99a0b00000000,
++ 0x41b885fa00000000, 0xba4e96bd00000000, 0xb755a27400000000,
++ 0x4ca3b13300000000, 0xec65bb3d00000000, 0x1793a87a00000000,
++ 0x1a889cb300000000, 0xe17e8ff400000000, 0x5a0589af00000000,
++ 0xa1f39ae800000000, 0xace8ae2100000000, 0x571ebd6600000000,
++ 0xf7d8b76800000000, 0x0c2ea42f00000000, 0x013590e600000000,
++ 0xfac383a100000000, 0x5a30dfdf00000000, 0xa1c6cc9800000000,
++ 0xacddf85100000000, 0x572beb1600000000, 0xf7ede11800000000,
++ 0x0c1bf25f00000000, 0x0100c69600000000, 0xfaf6d5d100000000,
++ 0x418dd38a00000000, 0xba7bc0cd00000000, 0xb760f40400000000,
++ 0x4c96e74300000000, 0xec50ed4d00000000, 0x17a6fe0a00000000,
++ 0x1abdcac300000000, 0xe14bd98400000000, 0x6c4ac67500000000,
++ 0x97bcd53200000000, 0x9aa7e1fb00000000, 0x6151f2bc00000000,
++ 0xc197f8b200000000, 0x3a61ebf500000000, 0x377adf3c00000000,
++ 0xcc8ccc7b00000000, 0x77f7ca2000000000, 0x8c01d96700000000,
++ 0x811aedae00000000, 0x7aecfee900000000, 0xda2af4e700000000,
++ 0x21dce7a000000000, 0x2cc7d36900000000, 0xd731c02e00000000,
++ 0x6c206a9500000000, 0x97d679d200000000, 0x9acd4d1b00000000,
++ 0x613b5e5c00000000, 0xc1fd545200000000, 0x3a0b471500000000,
++ 0x371073dc00000000, 0xcce6609b00000000, 0x779d66c000000000,
++ 0x8c6b758700000000, 0x8170414e00000000, 0x7a86520900000000,
++ 0xda40580700000000, 0x21b64b4000000000, 0x2cad7f8900000000,
++ 0xd75b6cce00000000, 0x5a5a733f00000000, 0xa1ac607800000000,
++ 0xacb754b100000000, 0x574147f600000000, 0xf7874df800000000,
++ 0x0c715ebf00000000, 0x016a6a7600000000, 0xfa9c793100000000,
++ 0x41e77f6a00000000, 0xba116c2d00000000, 0xb70a58e400000000,
++ 0x4cfc4ba300000000, 0xec3a41ad00000000, 0x17cc52ea00000000,
++ 0x1ad7662300000000, 0xe121756400000000, 0x41d2291a00000000,
++ 0xba243a5d00000000, 0xb73f0e9400000000, 0x4cc91dd300000000,
++ 0xec0f17dd00000000, 0x17f9049a00000000, 0x1ae2305300000000,
++ 0xe114231400000000, 0x5a6f254f00000000, 0xa199360800000000,
++ 0xac8202c100000000, 0x5774118600000000, 0xf7b21b8800000000,
++ 0x0c4408cf00000000, 0x015f3c0600000000, 0xfaa92f4100000000,
++ 0x77a830b000000000, 0x8c5e23f700000000, 0x8145173e00000000,
++ 0x7ab3047900000000, 0xda750e7700000000, 0x21831d3000000000,
++ 0x2c9829f900000000, 0xd76e3abe00000000, 0x6c153ce500000000,
++ 0x97e32fa200000000, 0x9af81b6b00000000, 0x610e082c00000000,
++ 0xc1c8022200000000, 0x3a3e116500000000, 0x372525ac00000000,
++ 0xccd336eb00000000},
++ {0x0000000000000000, 0x6238282a00000000, 0xc470505400000000,
++ 0xa648787e00000000, 0x88e1a0a800000000, 0xead9888200000000,
++ 0x4c91f0fc00000000, 0x2ea9d8d600000000, 0x51c5308a00000000,
++ 0x33fd18a000000000, 0x95b560de00000000, 0xf78d48f400000000,
++ 0xd924902200000000, 0xbb1cb80800000000, 0x1d54c07600000000,
++ 0x7f6ce85c00000000, 0xe38c10cf00000000, 0x81b438e500000000,
++ 0x27fc409b00000000, 0x45c468b100000000, 0x6b6db06700000000,
++ 0x0955984d00000000, 0xaf1de03300000000, 0xcd25c81900000000,
++ 0xb249204500000000, 0xd071086f00000000, 0x7639701100000000,
++ 0x1401583b00000000, 0x3aa880ed00000000, 0x5890a8c700000000,
++ 0xfed8d0b900000000, 0x9ce0f89300000000, 0x871f504500000000,
++ 0xe527786f00000000, 0x436f001100000000, 0x2157283b00000000,
++ 0x0ffef0ed00000000, 0x6dc6d8c700000000, 0xcb8ea0b900000000,
++ 0xa9b6889300000000, 0xd6da60cf00000000, 0xb4e248e500000000,
++ 0x12aa309b00000000, 0x709218b100000000, 0x5e3bc06700000000,
++ 0x3c03e84d00000000, 0x9a4b903300000000, 0xf873b81900000000,
++ 0x6493408a00000000, 0x06ab68a000000000, 0xa0e310de00000000,
++ 0xc2db38f400000000, 0xec72e02200000000, 0x8e4ac80800000000,
++ 0x2802b07600000000, 0x4a3a985c00000000, 0x3556700000000000,
++ 0x576e582a00000000, 0xf126205400000000, 0x931e087e00000000,
++ 0xbdb7d0a800000000, 0xdf8ff88200000000, 0x79c780fc00000000,
++ 0x1bffa8d600000000, 0x0e3fa08a00000000, 0x6c0788a000000000,
++ 0xca4ff0de00000000, 0xa877d8f400000000, 0x86de002200000000,
++ 0xe4e6280800000000, 0x42ae507600000000, 0x2096785c00000000,
++ 0x5ffa900000000000, 0x3dc2b82a00000000, 0x9b8ac05400000000,
++ 0xf9b2e87e00000000, 0xd71b30a800000000, 0xb523188200000000,
++ 0x136b60fc00000000, 0x715348d600000000, 0xedb3b04500000000,
++ 0x8f8b986f00000000, 0x29c3e01100000000, 0x4bfbc83b00000000,
++ 0x655210ed00000000, 0x076a38c700000000, 0xa12240b900000000,
++ 0xc31a689300000000, 0xbc7680cf00000000, 0xde4ea8e500000000,
++ 0x7806d09b00000000, 0x1a3ef8b100000000, 0x3497206700000000,
++ 0x56af084d00000000, 0xf0e7703300000000, 0x92df581900000000,
++ 0x8920f0cf00000000, 0xeb18d8e500000000, 0x4d50a09b00000000,
++ 0x2f6888b100000000, 0x01c1506700000000, 0x63f9784d00000000,
++ 0xc5b1003300000000, 0xa789281900000000, 0xd8e5c04500000000,
++ 0xbadde86f00000000, 0x1c95901100000000, 0x7eadb83b00000000,
++ 0x500460ed00000000, 0x323c48c700000000, 0x947430b900000000,
++ 0xf64c189300000000, 0x6aace00000000000, 0x0894c82a00000000,
++ 0xaedcb05400000000, 0xcce4987e00000000, 0xe24d40a800000000,
++ 0x8075688200000000, 0x263d10fc00000000, 0x440538d600000000,
++ 0x3b69d08a00000000, 0x5951f8a000000000, 0xff1980de00000000,
++ 0x9d21a8f400000000, 0xb388702200000000, 0xd1b0580800000000,
++ 0x77f8207600000000, 0x15c0085c00000000, 0x5d7831ce00000000,
++ 0x3f4019e400000000, 0x9908619a00000000, 0xfb3049b000000000,
++ 0xd599916600000000, 0xb7a1b94c00000000, 0x11e9c13200000000,
++ 0x73d1e91800000000, 0x0cbd014400000000, 0x6e85296e00000000,
++ 0xc8cd511000000000, 0xaaf5793a00000000, 0x845ca1ec00000000,
++ 0xe66489c600000000, 0x402cf1b800000000, 0x2214d99200000000,
++ 0xbef4210100000000, 0xdccc092b00000000, 0x7a84715500000000,
++ 0x18bc597f00000000, 0x361581a900000000, 0x542da98300000000,
++ 0xf265d1fd00000000, 0x905df9d700000000, 0xef31118b00000000,
++ 0x8d0939a100000000, 0x2b4141df00000000, 0x497969f500000000,
++ 0x67d0b12300000000, 0x05e8990900000000, 0xa3a0e17700000000,
++ 0xc198c95d00000000, 0xda67618b00000000, 0xb85f49a100000000,
++ 0x1e1731df00000000, 0x7c2f19f500000000, 0x5286c12300000000,
++ 0x30bee90900000000, 0x96f6917700000000, 0xf4ceb95d00000000,
++ 0x8ba2510100000000, 0xe99a792b00000000, 0x4fd2015500000000,
++ 0x2dea297f00000000, 0x0343f1a900000000, 0x617bd98300000000,
++ 0xc733a1fd00000000, 0xa50b89d700000000, 0x39eb714400000000,
++ 0x5bd3596e00000000, 0xfd9b211000000000, 0x9fa3093a00000000,
++ 0xb10ad1ec00000000, 0xd332f9c600000000, 0x757a81b800000000,
++ 0x1742a99200000000, 0x682e41ce00000000, 0x0a1669e400000000,
++ 0xac5e119a00000000, 0xce6639b000000000, 0xe0cfe16600000000,
++ 0x82f7c94c00000000, 0x24bfb13200000000, 0x4687991800000000,
++ 0x5347914400000000, 0x317fb96e00000000, 0x9737c11000000000,
++ 0xf50fe93a00000000, 0xdba631ec00000000, 0xb99e19c600000000,
++ 0x1fd661b800000000, 0x7dee499200000000, 0x0282a1ce00000000,
++ 0x60ba89e400000000, 0xc6f2f19a00000000, 0xa4cad9b000000000,
++ 0x8a63016600000000, 0xe85b294c00000000, 0x4e13513200000000,
++ 0x2c2b791800000000, 0xb0cb818b00000000, 0xd2f3a9a100000000,
++ 0x74bbd1df00000000, 0x1683f9f500000000, 0x382a212300000000,
++ 0x5a12090900000000, 0xfc5a717700000000, 0x9e62595d00000000,
++ 0xe10eb10100000000, 0x8336992b00000000, 0x257ee15500000000,
++ 0x4746c97f00000000, 0x69ef11a900000000, 0x0bd7398300000000,
++ 0xad9f41fd00000000, 0xcfa769d700000000, 0xd458c10100000000,
++ 0xb660e92b00000000, 0x1028915500000000, 0x7210b97f00000000,
++ 0x5cb961a900000000, 0x3e81498300000000, 0x98c931fd00000000,
++ 0xfaf119d700000000, 0x859df18b00000000, 0xe7a5d9a100000000,
++ 0x41eda1df00000000, 0x23d589f500000000, 0x0d7c512300000000,
++ 0x6f44790900000000, 0xc90c017700000000, 0xab34295d00000000,
++ 0x37d4d1ce00000000, 0x55ecf9e400000000, 0xf3a4819a00000000,
++ 0x919ca9b000000000, 0xbf35716600000000, 0xdd0d594c00000000,
++ 0x7b45213200000000, 0x197d091800000000, 0x6611e14400000000,
++ 0x0429c96e00000000, 0xa261b11000000000, 0xc059993a00000000,
++ 0xeef041ec00000000, 0x8cc869c600000000, 0x2a8011b800000000,
++ 0x48b8399200000000},
++ {0x0000000000000000, 0x4c2896a300000000, 0xd9565d9c00000000,
++ 0x957ecb3f00000000, 0xf3abcbe300000000, 0xbf835d4000000000,
++ 0x2afd967f00000000, 0x66d500dc00000000, 0xa751e61c00000000,
++ 0xeb7970bf00000000, 0x7e07bb8000000000, 0x322f2d2300000000,
++ 0x54fa2dff00000000, 0x18d2bb5c00000000, 0x8dac706300000000,
++ 0xc184e6c000000000, 0x4ea3cc3900000000, 0x028b5a9a00000000,
++ 0x97f591a500000000, 0xdbdd070600000000, 0xbd0807da00000000,
++ 0xf120917900000000, 0x645e5a4600000000, 0x2876cce500000000,
++ 0xe9f22a2500000000, 0xa5dabc8600000000, 0x30a477b900000000,
++ 0x7c8ce11a00000000, 0x1a59e1c600000000, 0x5671776500000000,
++ 0xc30fbc5a00000000, 0x8f272af900000000, 0x9c46997300000000,
++ 0xd06e0fd000000000, 0x4510c4ef00000000, 0x0938524c00000000,
++ 0x6fed529000000000, 0x23c5c43300000000, 0xb6bb0f0c00000000,
++ 0xfa9399af00000000, 0x3b177f6f00000000, 0x773fe9cc00000000,
++ 0xe24122f300000000, 0xae69b45000000000, 0xc8bcb48c00000000,
++ 0x8494222f00000000, 0x11eae91000000000, 0x5dc27fb300000000,
++ 0xd2e5554a00000000, 0x9ecdc3e900000000, 0x0bb308d600000000,
++ 0x479b9e7500000000, 0x214e9ea900000000, 0x6d66080a00000000,
++ 0xf818c33500000000, 0xb430559600000000, 0x75b4b35600000000,
++ 0x399c25f500000000, 0xace2eeca00000000, 0xe0ca786900000000,
++ 0x861f78b500000000, 0xca37ee1600000000, 0x5f49252900000000,
++ 0x1361b38a00000000, 0x388d32e700000000, 0x74a5a44400000000,
++ 0xe1db6f7b00000000, 0xadf3f9d800000000, 0xcb26f90400000000,
++ 0x870e6fa700000000, 0x1270a49800000000, 0x5e58323b00000000,
++ 0x9fdcd4fb00000000, 0xd3f4425800000000, 0x468a896700000000,
++ 0x0aa21fc400000000, 0x6c771f1800000000, 0x205f89bb00000000,
++ 0xb521428400000000, 0xf909d42700000000, 0x762efede00000000,
++ 0x3a06687d00000000, 0xaf78a34200000000, 0xe35035e100000000,
++ 0x8585353d00000000, 0xc9ada39e00000000, 0x5cd368a100000000,
++ 0x10fbfe0200000000, 0xd17f18c200000000, 0x9d578e6100000000,
++ 0x0829455e00000000, 0x4401d3fd00000000, 0x22d4d32100000000,
++ 0x6efc458200000000, 0xfb828ebd00000000, 0xb7aa181e00000000,
++ 0xa4cbab9400000000, 0xe8e33d3700000000, 0x7d9df60800000000,
++ 0x31b560ab00000000, 0x5760607700000000, 0x1b48f6d400000000,
++ 0x8e363deb00000000, 0xc21eab4800000000, 0x039a4d8800000000,
++ 0x4fb2db2b00000000, 0xdacc101400000000, 0x96e486b700000000,
++ 0xf031866b00000000, 0xbc1910c800000000, 0x2967dbf700000000,
++ 0x654f4d5400000000, 0xea6867ad00000000, 0xa640f10e00000000,
++ 0x333e3a3100000000, 0x7f16ac9200000000, 0x19c3ac4e00000000,
++ 0x55eb3aed00000000, 0xc095f1d200000000, 0x8cbd677100000000,
++ 0x4d3981b100000000, 0x0111171200000000, 0x946fdc2d00000000,
++ 0xd8474a8e00000000, 0xbe924a5200000000, 0xf2badcf100000000,
++ 0x67c417ce00000000, 0x2bec816d00000000, 0x311c141500000000,
++ 0x7d3482b600000000, 0xe84a498900000000, 0xa462df2a00000000,
++ 0xc2b7dff600000000, 0x8e9f495500000000, 0x1be1826a00000000,
++ 0x57c914c900000000, 0x964df20900000000, 0xda6564aa00000000,
++ 0x4f1baf9500000000, 0x0333393600000000, 0x65e639ea00000000,
++ 0x29ceaf4900000000, 0xbcb0647600000000, 0xf098f2d500000000,
++ 0x7fbfd82c00000000, 0x33974e8f00000000, 0xa6e985b000000000,
++ 0xeac1131300000000, 0x8c1413cf00000000, 0xc03c856c00000000,
++ 0x55424e5300000000, 0x196ad8f000000000, 0xd8ee3e3000000000,
++ 0x94c6a89300000000, 0x01b863ac00000000, 0x4d90f50f00000000,
++ 0x2b45f5d300000000, 0x676d637000000000, 0xf213a84f00000000,
++ 0xbe3b3eec00000000, 0xad5a8d6600000000, 0xe1721bc500000000,
++ 0x740cd0fa00000000, 0x3824465900000000, 0x5ef1468500000000,
++ 0x12d9d02600000000, 0x87a71b1900000000, 0xcb8f8dba00000000,
++ 0x0a0b6b7a00000000, 0x4623fdd900000000, 0xd35d36e600000000,
++ 0x9f75a04500000000, 0xf9a0a09900000000, 0xb588363a00000000,
++ 0x20f6fd0500000000, 0x6cde6ba600000000, 0xe3f9415f00000000,
++ 0xafd1d7fc00000000, 0x3aaf1cc300000000, 0x76878a6000000000,
++ 0x10528abc00000000, 0x5c7a1c1f00000000, 0xc904d72000000000,
++ 0x852c418300000000, 0x44a8a74300000000, 0x088031e000000000,
++ 0x9dfefadf00000000, 0xd1d66c7c00000000, 0xb7036ca000000000,
++ 0xfb2bfa0300000000, 0x6e55313c00000000, 0x227da79f00000000,
++ 0x099126f200000000, 0x45b9b05100000000, 0xd0c77b6e00000000,
++ 0x9cefedcd00000000, 0xfa3aed1100000000, 0xb6127bb200000000,
++ 0x236cb08d00000000, 0x6f44262e00000000, 0xaec0c0ee00000000,
++ 0xe2e8564d00000000, 0x77969d7200000000, 0x3bbe0bd100000000,
++ 0x5d6b0b0d00000000, 0x11439dae00000000, 0x843d569100000000,
++ 0xc815c03200000000, 0x4732eacb00000000, 0x0b1a7c6800000000,
++ 0x9e64b75700000000, 0xd24c21f400000000, 0xb499212800000000,
++ 0xf8b1b78b00000000, 0x6dcf7cb400000000, 0x21e7ea1700000000,
++ 0xe0630cd700000000, 0xac4b9a7400000000, 0x3935514b00000000,
++ 0x751dc7e800000000, 0x13c8c73400000000, 0x5fe0519700000000,
++ 0xca9e9aa800000000, 0x86b60c0b00000000, 0x95d7bf8100000000,
++ 0xd9ff292200000000, 0x4c81e21d00000000, 0x00a974be00000000,
++ 0x667c746200000000, 0x2a54e2c100000000, 0xbf2a29fe00000000,
++ 0xf302bf5d00000000, 0x3286599d00000000, 0x7eaecf3e00000000,
++ 0xebd0040100000000, 0xa7f892a200000000, 0xc12d927e00000000,
++ 0x8d0504dd00000000, 0x187bcfe200000000, 0x5453594100000000,
++ 0xdb7473b800000000, 0x975ce51b00000000, 0x02222e2400000000,
++ 0x4e0ab88700000000, 0x28dfb85b00000000, 0x64f72ef800000000,
++ 0xf189e5c700000000, 0xbda1736400000000, 0x7c2595a400000000,
++ 0x300d030700000000, 0xa573c83800000000, 0xe95b5e9b00000000,
++ 0x8f8e5e4700000000, 0xc3a6c8e400000000, 0x56d803db00000000,
++ 0x1af0957800000000},
++ {0x0000000000000000, 0x939bc97f00000000, 0x263793ff00000000,
++ 0xb5ac5a8000000000, 0x0d68572400000000, 0x9ef39e5b00000000,
++ 0x2b5fc4db00000000, 0xb8c40da400000000, 0x1ad0ae4800000000,
++ 0x894b673700000000, 0x3ce73db700000000, 0xaf7cf4c800000000,
++ 0x17b8f96c00000000, 0x8423301300000000, 0x318f6a9300000000,
++ 0xa214a3ec00000000, 0x34a05d9100000000, 0xa73b94ee00000000,
++ 0x1297ce6e00000000, 0x810c071100000000, 0x39c80ab500000000,
++ 0xaa53c3ca00000000, 0x1fff994a00000000, 0x8c64503500000000,
++ 0x2e70f3d900000000, 0xbdeb3aa600000000, 0x0847602600000000,
++ 0x9bdca95900000000, 0x2318a4fd00000000, 0xb0836d8200000000,
++ 0x052f370200000000, 0x96b4fe7d00000000, 0x2946caf900000000,
++ 0xbadd038600000000, 0x0f71590600000000, 0x9cea907900000000,
++ 0x242e9ddd00000000, 0xb7b554a200000000, 0x02190e2200000000,
++ 0x9182c75d00000000, 0x339664b100000000, 0xa00dadce00000000,
++ 0x15a1f74e00000000, 0x863a3e3100000000, 0x3efe339500000000,
++ 0xad65faea00000000, 0x18c9a06a00000000, 0x8b52691500000000,
++ 0x1de6976800000000, 0x8e7d5e1700000000, 0x3bd1049700000000,
++ 0xa84acde800000000, 0x108ec04c00000000, 0x8315093300000000,
++ 0x36b953b300000000, 0xa5229acc00000000, 0x0736392000000000,
++ 0x94adf05f00000000, 0x2101aadf00000000, 0xb29a63a000000000,
++ 0x0a5e6e0400000000, 0x99c5a77b00000000, 0x2c69fdfb00000000,
++ 0xbff2348400000000, 0x138ae52800000000, 0x80112c5700000000,
++ 0x35bd76d700000000, 0xa626bfa800000000, 0x1ee2b20c00000000,
++ 0x8d797b7300000000, 0x38d521f300000000, 0xab4ee88c00000000,
++ 0x095a4b6000000000, 0x9ac1821f00000000, 0x2f6dd89f00000000,
++ 0xbcf611e000000000, 0x04321c4400000000, 0x97a9d53b00000000,
++ 0x22058fbb00000000, 0xb19e46c400000000, 0x272ab8b900000000,
++ 0xb4b171c600000000, 0x011d2b4600000000, 0x9286e23900000000,
++ 0x2a42ef9d00000000, 0xb9d926e200000000, 0x0c757c6200000000,
++ 0x9feeb51d00000000, 0x3dfa16f100000000, 0xae61df8e00000000,
++ 0x1bcd850e00000000, 0x88564c7100000000, 0x309241d500000000,
++ 0xa30988aa00000000, 0x16a5d22a00000000, 0x853e1b5500000000,
++ 0x3acc2fd100000000, 0xa957e6ae00000000, 0x1cfbbc2e00000000,
++ 0x8f60755100000000, 0x37a478f500000000, 0xa43fb18a00000000,
++ 0x1193eb0a00000000, 0x8208227500000000, 0x201c819900000000,
++ 0xb38748e600000000, 0x062b126600000000, 0x95b0db1900000000,
++ 0x2d74d6bd00000000, 0xbeef1fc200000000, 0x0b43454200000000,
++ 0x98d88c3d00000000, 0x0e6c724000000000, 0x9df7bb3f00000000,
++ 0x285be1bf00000000, 0xbbc028c000000000, 0x0304256400000000,
++ 0x909fec1b00000000, 0x2533b69b00000000, 0xb6a87fe400000000,
++ 0x14bcdc0800000000, 0x8727157700000000, 0x328b4ff700000000,
++ 0xa110868800000000, 0x19d48b2c00000000, 0x8a4f425300000000,
++ 0x3fe318d300000000, 0xac78d1ac00000000, 0x2614cb5100000000,
++ 0xb58f022e00000000, 0x002358ae00000000, 0x93b891d100000000,
++ 0x2b7c9c7500000000, 0xb8e7550a00000000, 0x0d4b0f8a00000000,
++ 0x9ed0c6f500000000, 0x3cc4651900000000, 0xaf5fac6600000000,
++ 0x1af3f6e600000000, 0x89683f9900000000, 0x31ac323d00000000,
++ 0xa237fb4200000000, 0x179ba1c200000000, 0x840068bd00000000,
++ 0x12b496c000000000, 0x812f5fbf00000000, 0x3483053f00000000,
++ 0xa718cc4000000000, 0x1fdcc1e400000000, 0x8c47089b00000000,
++ 0x39eb521b00000000, 0xaa709b6400000000, 0x0864388800000000,
++ 0x9bfff1f700000000, 0x2e53ab7700000000, 0xbdc8620800000000,
++ 0x050c6fac00000000, 0x9697a6d300000000, 0x233bfc5300000000,
++ 0xb0a0352c00000000, 0x0f5201a800000000, 0x9cc9c8d700000000,
++ 0x2965925700000000, 0xbafe5b2800000000, 0x023a568c00000000,
++ 0x91a19ff300000000, 0x240dc57300000000, 0xb7960c0c00000000,
++ 0x1582afe000000000, 0x8619669f00000000, 0x33b53c1f00000000,
++ 0xa02ef56000000000, 0x18eaf8c400000000, 0x8b7131bb00000000,
++ 0x3edd6b3b00000000, 0xad46a24400000000, 0x3bf25c3900000000,
++ 0xa869954600000000, 0x1dc5cfc600000000, 0x8e5e06b900000000,
++ 0x369a0b1d00000000, 0xa501c26200000000, 0x10ad98e200000000,
++ 0x8336519d00000000, 0x2122f27100000000, 0xb2b93b0e00000000,
++ 0x0715618e00000000, 0x948ea8f100000000, 0x2c4aa55500000000,
++ 0xbfd16c2a00000000, 0x0a7d36aa00000000, 0x99e6ffd500000000,
++ 0x359e2e7900000000, 0xa605e70600000000, 0x13a9bd8600000000,
++ 0x803274f900000000, 0x38f6795d00000000, 0xab6db02200000000,
++ 0x1ec1eaa200000000, 0x8d5a23dd00000000, 0x2f4e803100000000,
++ 0xbcd5494e00000000, 0x097913ce00000000, 0x9ae2dab100000000,
++ 0x2226d71500000000, 0xb1bd1e6a00000000, 0x041144ea00000000,
++ 0x978a8d9500000000, 0x013e73e800000000, 0x92a5ba9700000000,
++ 0x2709e01700000000, 0xb492296800000000, 0x0c5624cc00000000,
++ 0x9fcdedb300000000, 0x2a61b73300000000, 0xb9fa7e4c00000000,
++ 0x1beedda000000000, 0x887514df00000000, 0x3dd94e5f00000000,
++ 0xae42872000000000, 0x16868a8400000000, 0x851d43fb00000000,
++ 0x30b1197b00000000, 0xa32ad00400000000, 0x1cd8e48000000000,
++ 0x8f432dff00000000, 0x3aef777f00000000, 0xa974be0000000000,
++ 0x11b0b3a400000000, 0x822b7adb00000000, 0x3787205b00000000,
++ 0xa41ce92400000000, 0x06084ac800000000, 0x959383b700000000,
++ 0x203fd93700000000, 0xb3a4104800000000, 0x0b601dec00000000,
++ 0x98fbd49300000000, 0x2d578e1300000000, 0xbecc476c00000000,
++ 0x2878b91100000000, 0xbbe3706e00000000, 0x0e4f2aee00000000,
++ 0x9dd4e39100000000, 0x2510ee3500000000, 0xb68b274a00000000,
++ 0x03277dca00000000, 0x90bcb4b500000000, 0x32a8175900000000,
++ 0xa133de2600000000, 0x149f84a600000000, 0x87044dd900000000,
++ 0x3fc0407d00000000, 0xac5b890200000000, 0x19f7d38200000000,
++ 0x8a6c1afd00000000},
++ {0x0000000000000000, 0x650b796900000000, 0xca16f2d200000000,
++ 0xaf1d8bbb00000000, 0xd52b957e00000000, 0xb020ec1700000000,
++ 0x1f3d67ac00000000, 0x7a361ec500000000, 0xaa572afd00000000,
++ 0xcf5c539400000000, 0x6041d82f00000000, 0x054aa14600000000,
++ 0x7f7cbf8300000000, 0x1a77c6ea00000000, 0xb56a4d5100000000,
++ 0xd061343800000000, 0x15a9252100000000, 0x70a25c4800000000,
++ 0xdfbfd7f300000000, 0xbab4ae9a00000000, 0xc082b05f00000000,
++ 0xa589c93600000000, 0x0a94428d00000000, 0x6f9f3be400000000,
++ 0xbffe0fdc00000000, 0xdaf576b500000000, 0x75e8fd0e00000000,
++ 0x10e3846700000000, 0x6ad59aa200000000, 0x0fdee3cb00000000,
++ 0xa0c3687000000000, 0xc5c8111900000000, 0x2a524b4200000000,
++ 0x4f59322b00000000, 0xe044b99000000000, 0x854fc0f900000000,
++ 0xff79de3c00000000, 0x9a72a75500000000, 0x356f2cee00000000,
++ 0x5064558700000000, 0x800561bf00000000, 0xe50e18d600000000,
++ 0x4a13936d00000000, 0x2f18ea0400000000, 0x552ef4c100000000,
++ 0x30258da800000000, 0x9f38061300000000, 0xfa337f7a00000000,
++ 0x3ffb6e6300000000, 0x5af0170a00000000, 0xf5ed9cb100000000,
++ 0x90e6e5d800000000, 0xead0fb1d00000000, 0x8fdb827400000000,
++ 0x20c609cf00000000, 0x45cd70a600000000, 0x95ac449e00000000,
++ 0xf0a73df700000000, 0x5fbab64c00000000, 0x3ab1cf2500000000,
++ 0x4087d1e000000000, 0x258ca88900000000, 0x8a91233200000000,
++ 0xef9a5a5b00000000, 0x54a4968400000000, 0x31afefed00000000,
++ 0x9eb2645600000000, 0xfbb91d3f00000000, 0x818f03fa00000000,
++ 0xe4847a9300000000, 0x4b99f12800000000, 0x2e92884100000000,
++ 0xfef3bc7900000000, 0x9bf8c51000000000, 0x34e54eab00000000,
++ 0x51ee37c200000000, 0x2bd8290700000000, 0x4ed3506e00000000,
++ 0xe1cedbd500000000, 0x84c5a2bc00000000, 0x410db3a500000000,
++ 0x2406cacc00000000, 0x8b1b417700000000, 0xee10381e00000000,
++ 0x942626db00000000, 0xf12d5fb200000000, 0x5e30d40900000000,
++ 0x3b3bad6000000000, 0xeb5a995800000000, 0x8e51e03100000000,
++ 0x214c6b8a00000000, 0x444712e300000000, 0x3e710c2600000000,
++ 0x5b7a754f00000000, 0xf467fef400000000, 0x916c879d00000000,
++ 0x7ef6ddc600000000, 0x1bfda4af00000000, 0xb4e02f1400000000,
++ 0xd1eb567d00000000, 0xabdd48b800000000, 0xced631d100000000,
++ 0x61cbba6a00000000, 0x04c0c30300000000, 0xd4a1f73b00000000,
++ 0xb1aa8e5200000000, 0x1eb705e900000000, 0x7bbc7c8000000000,
++ 0x018a624500000000, 0x64811b2c00000000, 0xcb9c909700000000,
++ 0xae97e9fe00000000, 0x6b5ff8e700000000, 0x0e54818e00000000,
++ 0xa1490a3500000000, 0xc442735c00000000, 0xbe746d9900000000,
++ 0xdb7f14f000000000, 0x74629f4b00000000, 0x1169e62200000000,
++ 0xc108d21a00000000, 0xa403ab7300000000, 0x0b1e20c800000000,
++ 0x6e1559a100000000, 0x1423476400000000, 0x71283e0d00000000,
++ 0xde35b5b600000000, 0xbb3eccdf00000000, 0xe94e5cd200000000,
++ 0x8c4525bb00000000, 0x2358ae0000000000, 0x4653d76900000000,
++ 0x3c65c9ac00000000, 0x596eb0c500000000, 0xf6733b7e00000000,
++ 0x9378421700000000, 0x4319762f00000000, 0x26120f4600000000,
++ 0x890f84fd00000000, 0xec04fd9400000000, 0x9632e35100000000,
++ 0xf3399a3800000000, 0x5c24118300000000, 0x392f68ea00000000,
++ 0xfce779f300000000, 0x99ec009a00000000, 0x36f18b2100000000,
++ 0x53faf24800000000, 0x29ccec8d00000000, 0x4cc795e400000000,
++ 0xe3da1e5f00000000, 0x86d1673600000000, 0x56b0530e00000000,
++ 0x33bb2a6700000000, 0x9ca6a1dc00000000, 0xf9add8b500000000,
++ 0x839bc67000000000, 0xe690bf1900000000, 0x498d34a200000000,
++ 0x2c864dcb00000000, 0xc31c179000000000, 0xa6176ef900000000,
++ 0x090ae54200000000, 0x6c019c2b00000000, 0x163782ee00000000,
++ 0x733cfb8700000000, 0xdc21703c00000000, 0xb92a095500000000,
++ 0x694b3d6d00000000, 0x0c40440400000000, 0xa35dcfbf00000000,
++ 0xc656b6d600000000, 0xbc60a81300000000, 0xd96bd17a00000000,
++ 0x76765ac100000000, 0x137d23a800000000, 0xd6b532b100000000,
++ 0xb3be4bd800000000, 0x1ca3c06300000000, 0x79a8b90a00000000,
++ 0x039ea7cf00000000, 0x6695dea600000000, 0xc988551d00000000,
++ 0xac832c7400000000, 0x7ce2184c00000000, 0x19e9612500000000,
++ 0xb6f4ea9e00000000, 0xd3ff93f700000000, 0xa9c98d3200000000,
++ 0xccc2f45b00000000, 0x63df7fe000000000, 0x06d4068900000000,
++ 0xbdeaca5600000000, 0xd8e1b33f00000000, 0x77fc388400000000,
++ 0x12f741ed00000000, 0x68c15f2800000000, 0x0dca264100000000,
++ 0xa2d7adfa00000000, 0xc7dcd49300000000, 0x17bde0ab00000000,
++ 0x72b699c200000000, 0xddab127900000000, 0xb8a06b1000000000,
++ 0xc29675d500000000, 0xa79d0cbc00000000, 0x0880870700000000,
++ 0x6d8bfe6e00000000, 0xa843ef7700000000, 0xcd48961e00000000,
++ 0x62551da500000000, 0x075e64cc00000000, 0x7d687a0900000000,
++ 0x1863036000000000, 0xb77e88db00000000, 0xd275f1b200000000,
++ 0x0214c58a00000000, 0x671fbce300000000, 0xc802375800000000,
++ 0xad094e3100000000, 0xd73f50f400000000, 0xb234299d00000000,
++ 0x1d29a22600000000, 0x7822db4f00000000, 0x97b8811400000000,
++ 0xf2b3f87d00000000, 0x5dae73c600000000, 0x38a50aaf00000000,
++ 0x4293146a00000000, 0x27986d0300000000, 0x8885e6b800000000,
++ 0xed8e9fd100000000, 0x3defabe900000000, 0x58e4d28000000000,
++ 0xf7f9593b00000000, 0x92f2205200000000, 0xe8c43e9700000000,
++ 0x8dcf47fe00000000, 0x22d2cc4500000000, 0x47d9b52c00000000,
++ 0x8211a43500000000, 0xe71add5c00000000, 0x480756e700000000,
++ 0x2d0c2f8e00000000, 0x573a314b00000000, 0x3231482200000000,
++ 0x9d2cc39900000000, 0xf827baf000000000, 0x28468ec800000000,
++ 0x4d4df7a100000000, 0xe2507c1a00000000, 0x875b057300000000,
++ 0xfd6d1bb600000000, 0x986662df00000000, 0x377be96400000000,
++ 0x5270900d00000000},
++ {0x0000000000000000, 0xdcecb13d00000000, 0xb8d9637b00000000,
++ 0x6435d24600000000, 0x70b3c7f600000000, 0xac5f76cb00000000,
++ 0xc86aa48d00000000, 0x148615b000000000, 0xa160fe3600000000,
++ 0x7d8c4f0b00000000, 0x19b99d4d00000000, 0xc5552c7000000000,
++ 0xd1d339c000000000, 0x0d3f88fd00000000, 0x690a5abb00000000,
++ 0xb5e6eb8600000000, 0x42c1fc6d00000000, 0x9e2d4d5000000000,
++ 0xfa189f1600000000, 0x26f42e2b00000000, 0x32723b9b00000000,
++ 0xee9e8aa600000000, 0x8aab58e000000000, 0x5647e9dd00000000,
++ 0xe3a1025b00000000, 0x3f4db36600000000, 0x5b78612000000000,
++ 0x8794d01d00000000, 0x9312c5ad00000000, 0x4ffe749000000000,
++ 0x2bcba6d600000000, 0xf72717eb00000000, 0x8482f9db00000000,
++ 0x586e48e600000000, 0x3c5b9aa000000000, 0xe0b72b9d00000000,
++ 0xf4313e2d00000000, 0x28dd8f1000000000, 0x4ce85d5600000000,
++ 0x9004ec6b00000000, 0x25e207ed00000000, 0xf90eb6d000000000,
++ 0x9d3b649600000000, 0x41d7d5ab00000000, 0x5551c01b00000000,
++ 0x89bd712600000000, 0xed88a36000000000, 0x3164125d00000000,
++ 0xc64305b600000000, 0x1aafb48b00000000, 0x7e9a66cd00000000,
++ 0xa276d7f000000000, 0xb6f0c24000000000, 0x6a1c737d00000000,
++ 0x0e29a13b00000000, 0xd2c5100600000000, 0x6723fb8000000000,
++ 0xbbcf4abd00000000, 0xdffa98fb00000000, 0x031629c600000000,
++ 0x17903c7600000000, 0xcb7c8d4b00000000, 0xaf495f0d00000000,
++ 0x73a5ee3000000000, 0x4903826c00000000, 0x95ef335100000000,
++ 0xf1dae11700000000, 0x2d36502a00000000, 0x39b0459a00000000,
++ 0xe55cf4a700000000, 0x816926e100000000, 0x5d8597dc00000000,
++ 0xe8637c5a00000000, 0x348fcd6700000000, 0x50ba1f2100000000,
++ 0x8c56ae1c00000000, 0x98d0bbac00000000, 0x443c0a9100000000,
++ 0x2009d8d700000000, 0xfce569ea00000000, 0x0bc27e0100000000,
++ 0xd72ecf3c00000000, 0xb31b1d7a00000000, 0x6ff7ac4700000000,
++ 0x7b71b9f700000000, 0xa79d08ca00000000, 0xc3a8da8c00000000,
++ 0x1f446bb100000000, 0xaaa2803700000000, 0x764e310a00000000,
++ 0x127be34c00000000, 0xce97527100000000, 0xda1147c100000000,
++ 0x06fdf6fc00000000, 0x62c824ba00000000, 0xbe24958700000000,
++ 0xcd817bb700000000, 0x116dca8a00000000, 0x755818cc00000000,
++ 0xa9b4a9f100000000, 0xbd32bc4100000000, 0x61de0d7c00000000,
++ 0x05ebdf3a00000000, 0xd9076e0700000000, 0x6ce1858100000000,
++ 0xb00d34bc00000000, 0xd438e6fa00000000, 0x08d457c700000000,
++ 0x1c52427700000000, 0xc0bef34a00000000, 0xa48b210c00000000,
++ 0x7867903100000000, 0x8f4087da00000000, 0x53ac36e700000000,
++ 0x3799e4a100000000, 0xeb75559c00000000, 0xfff3402c00000000,
++ 0x231ff11100000000, 0x472a235700000000, 0x9bc6926a00000000,
++ 0x2e2079ec00000000, 0xf2ccc8d100000000, 0x96f91a9700000000,
++ 0x4a15abaa00000000, 0x5e93be1a00000000, 0x827f0f2700000000,
++ 0xe64add6100000000, 0x3aa66c5c00000000, 0x920604d900000000,
++ 0x4eeab5e400000000, 0x2adf67a200000000, 0xf633d69f00000000,
++ 0xe2b5c32f00000000, 0x3e59721200000000, 0x5a6ca05400000000,
++ 0x8680116900000000, 0x3366faef00000000, 0xef8a4bd200000000,
++ 0x8bbf999400000000, 0x575328a900000000, 0x43d53d1900000000,
++ 0x9f398c2400000000, 0xfb0c5e6200000000, 0x27e0ef5f00000000,
++ 0xd0c7f8b400000000, 0x0c2b498900000000, 0x681e9bcf00000000,
++ 0xb4f22af200000000, 0xa0743f4200000000, 0x7c988e7f00000000,
++ 0x18ad5c3900000000, 0xc441ed0400000000, 0x71a7068200000000,
++ 0xad4bb7bf00000000, 0xc97e65f900000000, 0x1592d4c400000000,
++ 0x0114c17400000000, 0xddf8704900000000, 0xb9cda20f00000000,
++ 0x6521133200000000, 0x1684fd0200000000, 0xca684c3f00000000,
++ 0xae5d9e7900000000, 0x72b12f4400000000, 0x66373af400000000,
++ 0xbadb8bc900000000, 0xdeee598f00000000, 0x0202e8b200000000,
++ 0xb7e4033400000000, 0x6b08b20900000000, 0x0f3d604f00000000,
++ 0xd3d1d17200000000, 0xc757c4c200000000, 0x1bbb75ff00000000,
++ 0x7f8ea7b900000000, 0xa362168400000000, 0x5445016f00000000,
++ 0x88a9b05200000000, 0xec9c621400000000, 0x3070d32900000000,
++ 0x24f6c69900000000, 0xf81a77a400000000, 0x9c2fa5e200000000,
++ 0x40c314df00000000, 0xf525ff5900000000, 0x29c94e6400000000,
++ 0x4dfc9c2200000000, 0x91102d1f00000000, 0x859638af00000000,
++ 0x597a899200000000, 0x3d4f5bd400000000, 0xe1a3eae900000000,
++ 0xdb0586b500000000, 0x07e9378800000000, 0x63dce5ce00000000,
++ 0xbf3054f300000000, 0xabb6414300000000, 0x775af07e00000000,
++ 0x136f223800000000, 0xcf83930500000000, 0x7a65788300000000,
++ 0xa689c9be00000000, 0xc2bc1bf800000000, 0x1e50aac500000000,
++ 0x0ad6bf7500000000, 0xd63a0e4800000000, 0xb20fdc0e00000000,
++ 0x6ee36d3300000000, 0x99c47ad800000000, 0x4528cbe500000000,
++ 0x211d19a300000000, 0xfdf1a89e00000000, 0xe977bd2e00000000,
++ 0x359b0c1300000000, 0x51aede5500000000, 0x8d426f6800000000,
++ 0x38a484ee00000000, 0xe44835d300000000, 0x807de79500000000,
++ 0x5c9156a800000000, 0x4817431800000000, 0x94fbf22500000000,
++ 0xf0ce206300000000, 0x2c22915e00000000, 0x5f877f6e00000000,
++ 0x836bce5300000000, 0xe75e1c1500000000, 0x3bb2ad2800000000,
++ 0x2f34b89800000000, 0xf3d809a500000000, 0x97eddbe300000000,
++ 0x4b016ade00000000, 0xfee7815800000000, 0x220b306500000000,
++ 0x463ee22300000000, 0x9ad2531e00000000, 0x8e5446ae00000000,
++ 0x52b8f79300000000, 0x368d25d500000000, 0xea6194e800000000,
++ 0x1d46830300000000, 0xc1aa323e00000000, 0xa59fe07800000000,
++ 0x7973514500000000, 0x6df544f500000000, 0xb119f5c800000000,
++ 0xd52c278e00000000, 0x09c096b300000000, 0xbc267d3500000000,
++ 0x60cacc0800000000, 0x04ff1e4e00000000, 0xd813af7300000000,
++ 0xcc95bac300000000, 0x10790bfe00000000, 0x744cd9b800000000,
++ 0xa8a0688500000000}};
++
++#else /* W == 4 */
++
++local const z_crc_t FAR crc_braid_table[][256] = {
++ {0x00000000, 0x81256527, 0xd93bcc0f, 0x581ea928, 0x69069e5f,
++ 0xe823fb78, 0xb03d5250, 0x31183777, 0xd20d3cbe, 0x53285999,
++ 0x0b36f0b1, 0x8a139596, 0xbb0ba2e1, 0x3a2ec7c6, 0x62306eee,
++ 0xe3150bc9, 0x7f6b7f3d, 0xfe4e1a1a, 0xa650b332, 0x2775d615,
++ 0x166de162, 0x97488445, 0xcf562d6d, 0x4e73484a, 0xad664383,
++ 0x2c4326a4, 0x745d8f8c, 0xf578eaab, 0xc460dddc, 0x4545b8fb,
++ 0x1d5b11d3, 0x9c7e74f4, 0xfed6fe7a, 0x7ff39b5d, 0x27ed3275,
++ 0xa6c85752, 0x97d06025, 0x16f50502, 0x4eebac2a, 0xcfcec90d,
++ 0x2cdbc2c4, 0xadfea7e3, 0xf5e00ecb, 0x74c56bec, 0x45dd5c9b,
++ 0xc4f839bc, 0x9ce69094, 0x1dc3f5b3, 0x81bd8147, 0x0098e460,
++ 0x58864d48, 0xd9a3286f, 0xe8bb1f18, 0x699e7a3f, 0x3180d317,
++ 0xb0a5b630, 0x53b0bdf9, 0xd295d8de, 0x8a8b71f6, 0x0bae14d1,
++ 0x3ab623a6, 0xbb934681, 0xe38defa9, 0x62a88a8e, 0x26dcfab5,
++ 0xa7f99f92, 0xffe736ba, 0x7ec2539d, 0x4fda64ea, 0xceff01cd,
++ 0x96e1a8e5, 0x17c4cdc2, 0xf4d1c60b, 0x75f4a32c, 0x2dea0a04,
++ 0xaccf6f23, 0x9dd75854, 0x1cf23d73, 0x44ec945b, 0xc5c9f17c,
++ 0x59b78588, 0xd892e0af, 0x808c4987, 0x01a92ca0, 0x30b11bd7,
++ 0xb1947ef0, 0xe98ad7d8, 0x68afb2ff, 0x8bbab936, 0x0a9fdc11,
++ 0x52817539, 0xd3a4101e, 0xe2bc2769, 0x6399424e, 0x3b87eb66,
++ 0xbaa28e41, 0xd80a04cf, 0x592f61e8, 0x0131c8c0, 0x8014ade7,
++ 0xb10c9a90, 0x3029ffb7, 0x6837569f, 0xe91233b8, 0x0a073871,
++ 0x8b225d56, 0xd33cf47e, 0x52199159, 0x6301a62e, 0xe224c309,
++ 0xba3a6a21, 0x3b1f0f06, 0xa7617bf2, 0x26441ed5, 0x7e5ab7fd,
++ 0xff7fd2da, 0xce67e5ad, 0x4f42808a, 0x175c29a2, 0x96794c85,
++ 0x756c474c, 0xf449226b, 0xac578b43, 0x2d72ee64, 0x1c6ad913,
++ 0x9d4fbc34, 0xc551151c, 0x4474703b, 0x4db9f56a, 0xcc9c904d,
++ 0x94823965, 0x15a75c42, 0x24bf6b35, 0xa59a0e12, 0xfd84a73a,
++ 0x7ca1c21d, 0x9fb4c9d4, 0x1e91acf3, 0x468f05db, 0xc7aa60fc,
++ 0xf6b2578b, 0x779732ac, 0x2f899b84, 0xaeacfea3, 0x32d28a57,
++ 0xb3f7ef70, 0xebe94658, 0x6acc237f, 0x5bd41408, 0xdaf1712f,
++ 0x82efd807, 0x03cabd20, 0xe0dfb6e9, 0x61fad3ce, 0x39e47ae6,
++ 0xb8c11fc1, 0x89d928b6, 0x08fc4d91, 0x50e2e4b9, 0xd1c7819e,
++ 0xb36f0b10, 0x324a6e37, 0x6a54c71f, 0xeb71a238, 0xda69954f,
++ 0x5b4cf068, 0x03525940, 0x82773c67, 0x616237ae, 0xe0475289,
++ 0xb859fba1, 0x397c9e86, 0x0864a9f1, 0x8941ccd6, 0xd15f65fe,
++ 0x507a00d9, 0xcc04742d, 0x4d21110a, 0x153fb822, 0x941add05,
++ 0xa502ea72, 0x24278f55, 0x7c39267d, 0xfd1c435a, 0x1e094893,
++ 0x9f2c2db4, 0xc732849c, 0x4617e1bb, 0x770fd6cc, 0xf62ab3eb,
++ 0xae341ac3, 0x2f117fe4, 0x6b650fdf, 0xea406af8, 0xb25ec3d0,
++ 0x337ba6f7, 0x02639180, 0x8346f4a7, 0xdb585d8f, 0x5a7d38a8,
++ 0xb9683361, 0x384d5646, 0x6053ff6e, 0xe1769a49, 0xd06ead3e,
++ 0x514bc819, 0x09556131, 0x88700416, 0x140e70e2, 0x952b15c5,
++ 0xcd35bced, 0x4c10d9ca, 0x7d08eebd, 0xfc2d8b9a, 0xa43322b2,
++ 0x25164795, 0xc6034c5c, 0x4726297b, 0x1f388053, 0x9e1de574,
++ 0xaf05d203, 0x2e20b724, 0x763e1e0c, 0xf71b7b2b, 0x95b3f1a5,
++ 0x14969482, 0x4c883daa, 0xcdad588d, 0xfcb56ffa, 0x7d900add,
++ 0x258ea3f5, 0xa4abc6d2, 0x47becd1b, 0xc69ba83c, 0x9e850114,
++ 0x1fa06433, 0x2eb85344, 0xaf9d3663, 0xf7839f4b, 0x76a6fa6c,
++ 0xead88e98, 0x6bfdebbf, 0x33e34297, 0xb2c627b0, 0x83de10c7,
++ 0x02fb75e0, 0x5ae5dcc8, 0xdbc0b9ef, 0x38d5b226, 0xb9f0d701,
++ 0xe1ee7e29, 0x60cb1b0e, 0x51d32c79, 0xd0f6495e, 0x88e8e076,
++ 0x09cd8551},
++ {0x00000000, 0x9b73ead4, 0xed96d3e9, 0x76e5393d, 0x005ca193,
++ 0x9b2f4b47, 0xedca727a, 0x76b998ae, 0x00b94326, 0x9bcaa9f2,
++ 0xed2f90cf, 0x765c7a1b, 0x00e5e2b5, 0x9b960861, 0xed73315c,
++ 0x7600db88, 0x0172864c, 0x9a016c98, 0xece455a5, 0x7797bf71,
++ 0x012e27df, 0x9a5dcd0b, 0xecb8f436, 0x77cb1ee2, 0x01cbc56a,
++ 0x9ab82fbe, 0xec5d1683, 0x772efc57, 0x019764f9, 0x9ae48e2d,
++ 0xec01b710, 0x77725dc4, 0x02e50c98, 0x9996e64c, 0xef73df71,
++ 0x740035a5, 0x02b9ad0b, 0x99ca47df, 0xef2f7ee2, 0x745c9436,
++ 0x025c4fbe, 0x992fa56a, 0xefca9c57, 0x74b97683, 0x0200ee2d,
++ 0x997304f9, 0xef963dc4, 0x74e5d710, 0x03978ad4, 0x98e46000,
++ 0xee01593d, 0x7572b3e9, 0x03cb2b47, 0x98b8c193, 0xee5df8ae,
++ 0x752e127a, 0x032ec9f2, 0x985d2326, 0xeeb81a1b, 0x75cbf0cf,
++ 0x03726861, 0x980182b5, 0xeee4bb88, 0x7597515c, 0x05ca1930,
++ 0x9eb9f3e4, 0xe85ccad9, 0x732f200d, 0x0596b8a3, 0x9ee55277,
++ 0xe8006b4a, 0x7373819e, 0x05735a16, 0x9e00b0c2, 0xe8e589ff,
++ 0x7396632b, 0x052ffb85, 0x9e5c1151, 0xe8b9286c, 0x73cac2b8,
++ 0x04b89f7c, 0x9fcb75a8, 0xe92e4c95, 0x725da641, 0x04e43eef,
++ 0x9f97d43b, 0xe972ed06, 0x720107d2, 0x0401dc5a, 0x9f72368e,
++ 0xe9970fb3, 0x72e4e567, 0x045d7dc9, 0x9f2e971d, 0xe9cbae20,
++ 0x72b844f4, 0x072f15a8, 0x9c5cff7c, 0xeab9c641, 0x71ca2c95,
++ 0x0773b43b, 0x9c005eef, 0xeae567d2, 0x71968d06, 0x0796568e,
++ 0x9ce5bc5a, 0xea008567, 0x71736fb3, 0x07caf71d, 0x9cb91dc9,
++ 0xea5c24f4, 0x712fce20, 0x065d93e4, 0x9d2e7930, 0xebcb400d,
++ 0x70b8aad9, 0x06013277, 0x9d72d8a3, 0xeb97e19e, 0x70e40b4a,
++ 0x06e4d0c2, 0x9d973a16, 0xeb72032b, 0x7001e9ff, 0x06b87151,
++ 0x9dcb9b85, 0xeb2ea2b8, 0x705d486c, 0x0b943260, 0x90e7d8b4,
++ 0xe602e189, 0x7d710b5d, 0x0bc893f3, 0x90bb7927, 0xe65e401a,
++ 0x7d2daace, 0x0b2d7146, 0x905e9b92, 0xe6bba2af, 0x7dc8487b,
++ 0x0b71d0d5, 0x90023a01, 0xe6e7033c, 0x7d94e9e8, 0x0ae6b42c,
++ 0x91955ef8, 0xe77067c5, 0x7c038d11, 0x0aba15bf, 0x91c9ff6b,
++ 0xe72cc656, 0x7c5f2c82, 0x0a5ff70a, 0x912c1dde, 0xe7c924e3,
++ 0x7cbace37, 0x0a035699, 0x9170bc4d, 0xe7958570, 0x7ce66fa4,
++ 0x09713ef8, 0x9202d42c, 0xe4e7ed11, 0x7f9407c5, 0x092d9f6b,
++ 0x925e75bf, 0xe4bb4c82, 0x7fc8a656, 0x09c87dde, 0x92bb970a,
++ 0xe45eae37, 0x7f2d44e3, 0x0994dc4d, 0x92e73699, 0xe4020fa4,
++ 0x7f71e570, 0x0803b8b4, 0x93705260, 0xe5956b5d, 0x7ee68189,
++ 0x085f1927, 0x932cf3f3, 0xe5c9cace, 0x7eba201a, 0x08bafb92,
++ 0x93c91146, 0xe52c287b, 0x7e5fc2af, 0x08e65a01, 0x9395b0d5,
++ 0xe57089e8, 0x7e03633c, 0x0e5e2b50, 0x952dc184, 0xe3c8f8b9,
++ 0x78bb126d, 0x0e028ac3, 0x95716017, 0xe394592a, 0x78e7b3fe,
++ 0x0ee76876, 0x959482a2, 0xe371bb9f, 0x7802514b, 0x0ebbc9e5,
++ 0x95c82331, 0xe32d1a0c, 0x785ef0d8, 0x0f2cad1c, 0x945f47c8,
++ 0xe2ba7ef5, 0x79c99421, 0x0f700c8f, 0x9403e65b, 0xe2e6df66,
++ 0x799535b2, 0x0f95ee3a, 0x94e604ee, 0xe2033dd3, 0x7970d707,
++ 0x0fc94fa9, 0x94baa57d, 0xe25f9c40, 0x792c7694, 0x0cbb27c8,
++ 0x97c8cd1c, 0xe12df421, 0x7a5e1ef5, 0x0ce7865b, 0x97946c8f,
++ 0xe17155b2, 0x7a02bf66, 0x0c0264ee, 0x97718e3a, 0xe194b707,
++ 0x7ae75dd3, 0x0c5ec57d, 0x972d2fa9, 0xe1c81694, 0x7abbfc40,
++ 0x0dc9a184, 0x96ba4b50, 0xe05f726d, 0x7b2c98b9, 0x0d950017,
++ 0x96e6eac3, 0xe003d3fe, 0x7b70392a, 0x0d70e2a2, 0x96030876,
++ 0xe0e6314b, 0x7b95db9f, 0x0d2c4331, 0x965fa9e5, 0xe0ba90d8,
++ 0x7bc97a0c},
++ {0x00000000, 0x172864c0, 0x2e50c980, 0x3978ad40, 0x5ca19300,
++ 0x4b89f7c0, 0x72f15a80, 0x65d93e40, 0xb9432600, 0xae6b42c0,
++ 0x9713ef80, 0x803b8b40, 0xe5e2b500, 0xf2cad1c0, 0xcbb27c80,
++ 0xdc9a1840, 0xa9f74a41, 0xbedf2e81, 0x87a783c1, 0x908fe701,
++ 0xf556d941, 0xe27ebd81, 0xdb0610c1, 0xcc2e7401, 0x10b46c41,
++ 0x079c0881, 0x3ee4a5c1, 0x29ccc101, 0x4c15ff41, 0x5b3d9b81,
++ 0x624536c1, 0x756d5201, 0x889f92c3, 0x9fb7f603, 0xa6cf5b43,
++ 0xb1e73f83, 0xd43e01c3, 0xc3166503, 0xfa6ec843, 0xed46ac83,
++ 0x31dcb4c3, 0x26f4d003, 0x1f8c7d43, 0x08a41983, 0x6d7d27c3,
++ 0x7a554303, 0x432dee43, 0x54058a83, 0x2168d882, 0x3640bc42,
++ 0x0f381102, 0x181075c2, 0x7dc94b82, 0x6ae12f42, 0x53998202,
++ 0x44b1e6c2, 0x982bfe82, 0x8f039a42, 0xb67b3702, 0xa15353c2,
++ 0xc48a6d82, 0xd3a20942, 0xeadaa402, 0xfdf2c0c2, 0xca4e23c7,
++ 0xdd664707, 0xe41eea47, 0xf3368e87, 0x96efb0c7, 0x81c7d407,
++ 0xb8bf7947, 0xaf971d87, 0x730d05c7, 0x64256107, 0x5d5dcc47,
++ 0x4a75a887, 0x2fac96c7, 0x3884f207, 0x01fc5f47, 0x16d43b87,
++ 0x63b96986, 0x74910d46, 0x4de9a006, 0x5ac1c4c6, 0x3f18fa86,
++ 0x28309e46, 0x11483306, 0x066057c6, 0xdafa4f86, 0xcdd22b46,
++ 0xf4aa8606, 0xe382e2c6, 0x865bdc86, 0x9173b846, 0xa80b1506,
++ 0xbf2371c6, 0x42d1b104, 0x55f9d5c4, 0x6c817884, 0x7ba91c44,
++ 0x1e702204, 0x095846c4, 0x3020eb84, 0x27088f44, 0xfb929704,
++ 0xecbaf3c4, 0xd5c25e84, 0xc2ea3a44, 0xa7330404, 0xb01b60c4,
++ 0x8963cd84, 0x9e4ba944, 0xeb26fb45, 0xfc0e9f85, 0xc57632c5,
++ 0xd25e5605, 0xb7876845, 0xa0af0c85, 0x99d7a1c5, 0x8effc505,
++ 0x5265dd45, 0x454db985, 0x7c3514c5, 0x6b1d7005, 0x0ec44e45,
++ 0x19ec2a85, 0x209487c5, 0x37bce305, 0x4fed41cf, 0x58c5250f,
++ 0x61bd884f, 0x7695ec8f, 0x134cd2cf, 0x0464b60f, 0x3d1c1b4f,
++ 0x2a347f8f, 0xf6ae67cf, 0xe186030f, 0xd8feae4f, 0xcfd6ca8f,
++ 0xaa0ff4cf, 0xbd27900f, 0x845f3d4f, 0x9377598f, 0xe61a0b8e,
++ 0xf1326f4e, 0xc84ac20e, 0xdf62a6ce, 0xbabb988e, 0xad93fc4e,
++ 0x94eb510e, 0x83c335ce, 0x5f592d8e, 0x4871494e, 0x7109e40e,
++ 0x662180ce, 0x03f8be8e, 0x14d0da4e, 0x2da8770e, 0x3a8013ce,
++ 0xc772d30c, 0xd05ab7cc, 0xe9221a8c, 0xfe0a7e4c, 0x9bd3400c,
++ 0x8cfb24cc, 0xb583898c, 0xa2abed4c, 0x7e31f50c, 0x691991cc,
++ 0x50613c8c, 0x4749584c, 0x2290660c, 0x35b802cc, 0x0cc0af8c,
++ 0x1be8cb4c, 0x6e85994d, 0x79adfd8d, 0x40d550cd, 0x57fd340d,
++ 0x32240a4d, 0x250c6e8d, 0x1c74c3cd, 0x0b5ca70d, 0xd7c6bf4d,
++ 0xc0eedb8d, 0xf99676cd, 0xeebe120d, 0x8b672c4d, 0x9c4f488d,
++ 0xa537e5cd, 0xb21f810d, 0x85a36208, 0x928b06c8, 0xabf3ab88,
++ 0xbcdbcf48, 0xd902f108, 0xce2a95c8, 0xf7523888, 0xe07a5c48,
++ 0x3ce04408, 0x2bc820c8, 0x12b08d88, 0x0598e948, 0x6041d708,
++ 0x7769b3c8, 0x4e111e88, 0x59397a48, 0x2c542849, 0x3b7c4c89,
++ 0x0204e1c9, 0x152c8509, 0x70f5bb49, 0x67dddf89, 0x5ea572c9,
++ 0x498d1609, 0x95170e49, 0x823f6a89, 0xbb47c7c9, 0xac6fa309,
++ 0xc9b69d49, 0xde9ef989, 0xe7e654c9, 0xf0ce3009, 0x0d3cf0cb,
++ 0x1a14940b, 0x236c394b, 0x34445d8b, 0x519d63cb, 0x46b5070b,
++ 0x7fcdaa4b, 0x68e5ce8b, 0xb47fd6cb, 0xa357b20b, 0x9a2f1f4b,
++ 0x8d077b8b, 0xe8de45cb, 0xfff6210b, 0xc68e8c4b, 0xd1a6e88b,
++ 0xa4cbba8a, 0xb3e3de4a, 0x8a9b730a, 0x9db317ca, 0xf86a298a,
++ 0xef424d4a, 0xd63ae00a, 0xc11284ca, 0x1d889c8a, 0x0aa0f84a,
++ 0x33d8550a, 0x24f031ca, 0x41290f8a, 0x56016b4a, 0x6f79c60a,
++ 0x7851a2ca},
++ {0x00000000, 0x9fda839e, 0xe4c4017d, 0x7b1e82e3, 0x12f904bb,
++ 0x8d238725, 0xf63d05c6, 0x69e78658, 0x25f20976, 0xba288ae8,
++ 0xc136080b, 0x5eec8b95, 0x370b0dcd, 0xa8d18e53, 0xd3cf0cb0,
++ 0x4c158f2e, 0x4be412ec, 0xd43e9172, 0xaf201391, 0x30fa900f,
++ 0x591d1657, 0xc6c795c9, 0xbdd9172a, 0x220394b4, 0x6e161b9a,
++ 0xf1cc9804, 0x8ad21ae7, 0x15089979, 0x7cef1f21, 0xe3359cbf,
++ 0x982b1e5c, 0x07f19dc2, 0x97c825d8, 0x0812a646, 0x730c24a5,
++ 0xecd6a73b, 0x85312163, 0x1aeba2fd, 0x61f5201e, 0xfe2fa380,
++ 0xb23a2cae, 0x2de0af30, 0x56fe2dd3, 0xc924ae4d, 0xa0c32815,
++ 0x3f19ab8b, 0x44072968, 0xdbddaaf6, 0xdc2c3734, 0x43f6b4aa,
++ 0x38e83649, 0xa732b5d7, 0xced5338f, 0x510fb011, 0x2a1132f2,
++ 0xb5cbb16c, 0xf9de3e42, 0x6604bddc, 0x1d1a3f3f, 0x82c0bca1,
++ 0xeb273af9, 0x74fdb967, 0x0fe33b84, 0x9039b81a, 0xf4e14df1,
++ 0x6b3bce6f, 0x10254c8c, 0x8fffcf12, 0xe618494a, 0x79c2cad4,
++ 0x02dc4837, 0x9d06cba9, 0xd1134487, 0x4ec9c719, 0x35d745fa,
++ 0xaa0dc664, 0xc3ea403c, 0x5c30c3a2, 0x272e4141, 0xb8f4c2df,
++ 0xbf055f1d, 0x20dfdc83, 0x5bc15e60, 0xc41bddfe, 0xadfc5ba6,
++ 0x3226d838, 0x49385adb, 0xd6e2d945, 0x9af7566b, 0x052dd5f5,
++ 0x7e335716, 0xe1e9d488, 0x880e52d0, 0x17d4d14e, 0x6cca53ad,
++ 0xf310d033, 0x63296829, 0xfcf3ebb7, 0x87ed6954, 0x1837eaca,
++ 0x71d06c92, 0xee0aef0c, 0x95146def, 0x0aceee71, 0x46db615f,
++ 0xd901e2c1, 0xa21f6022, 0x3dc5e3bc, 0x542265e4, 0xcbf8e67a,
++ 0xb0e66499, 0x2f3ce707, 0x28cd7ac5, 0xb717f95b, 0xcc097bb8,
++ 0x53d3f826, 0x3a347e7e, 0xa5eefde0, 0xdef07f03, 0x412afc9d,
++ 0x0d3f73b3, 0x92e5f02d, 0xe9fb72ce, 0x7621f150, 0x1fc67708,
++ 0x801cf496, 0xfb027675, 0x64d8f5eb, 0x32b39da3, 0xad691e3d,
++ 0xd6779cde, 0x49ad1f40, 0x204a9918, 0xbf901a86, 0xc48e9865,
++ 0x5b541bfb, 0x174194d5, 0x889b174b, 0xf38595a8, 0x6c5f1636,
++ 0x05b8906e, 0x9a6213f0, 0xe17c9113, 0x7ea6128d, 0x79578f4f,
++ 0xe68d0cd1, 0x9d938e32, 0x02490dac, 0x6bae8bf4, 0xf474086a,
++ 0x8f6a8a89, 0x10b00917, 0x5ca58639, 0xc37f05a7, 0xb8618744,
++ 0x27bb04da, 0x4e5c8282, 0xd186011c, 0xaa9883ff, 0x35420061,
++ 0xa57bb87b, 0x3aa13be5, 0x41bfb906, 0xde653a98, 0xb782bcc0,
++ 0x28583f5e, 0x5346bdbd, 0xcc9c3e23, 0x8089b10d, 0x1f533293,
++ 0x644db070, 0xfb9733ee, 0x9270b5b6, 0x0daa3628, 0x76b4b4cb,
++ 0xe96e3755, 0xee9faa97, 0x71452909, 0x0a5babea, 0x95812874,
++ 0xfc66ae2c, 0x63bc2db2, 0x18a2af51, 0x87782ccf, 0xcb6da3e1,
++ 0x54b7207f, 0x2fa9a29c, 0xb0732102, 0xd994a75a, 0x464e24c4,
++ 0x3d50a627, 0xa28a25b9, 0xc652d052, 0x598853cc, 0x2296d12f,
++ 0xbd4c52b1, 0xd4abd4e9, 0x4b715777, 0x306fd594, 0xafb5560a,
++ 0xe3a0d924, 0x7c7a5aba, 0x0764d859, 0x98be5bc7, 0xf159dd9f,
++ 0x6e835e01, 0x159ddce2, 0x8a475f7c, 0x8db6c2be, 0x126c4120,
++ 0x6972c3c3, 0xf6a8405d, 0x9f4fc605, 0x0095459b, 0x7b8bc778,
++ 0xe45144e6, 0xa844cbc8, 0x379e4856, 0x4c80cab5, 0xd35a492b,
++ 0xbabdcf73, 0x25674ced, 0x5e79ce0e, 0xc1a34d90, 0x519af58a,
++ 0xce407614, 0xb55ef4f7, 0x2a847769, 0x4363f131, 0xdcb972af,
++ 0xa7a7f04c, 0x387d73d2, 0x7468fcfc, 0xebb27f62, 0x90acfd81,
++ 0x0f767e1f, 0x6691f847, 0xf94b7bd9, 0x8255f93a, 0x1d8f7aa4,
++ 0x1a7ee766, 0x85a464f8, 0xfebae61b, 0x61606585, 0x0887e3dd,
++ 0x975d6043, 0xec43e2a0, 0x7399613e, 0x3f8cee10, 0xa0566d8e,
++ 0xdb48ef6d, 0x44926cf3, 0x2d75eaab, 0xb2af6935, 0xc9b1ebd6,
++ 0x566b6848}};
++
++local const z_word_t FAR crc_braid_big_table[][256] = {
++ {0x00000000, 0x9e83da9f, 0x7d01c4e4, 0xe3821e7b, 0xbb04f912,
++ 0x2587238d, 0xc6053df6, 0x5886e769, 0x7609f225, 0xe88a28ba,
++ 0x0b0836c1, 0x958bec5e, 0xcd0d0b37, 0x538ed1a8, 0xb00ccfd3,
++ 0x2e8f154c, 0xec12e44b, 0x72913ed4, 0x911320af, 0x0f90fa30,
++ 0x57161d59, 0xc995c7c6, 0x2a17d9bd, 0xb4940322, 0x9a1b166e,
++ 0x0498ccf1, 0xe71ad28a, 0x79990815, 0x211fef7c, 0xbf9c35e3,
++ 0x5c1e2b98, 0xc29df107, 0xd825c897, 0x46a61208, 0xa5240c73,
++ 0x3ba7d6ec, 0x63213185, 0xfda2eb1a, 0x1e20f561, 0x80a32ffe,
++ 0xae2c3ab2, 0x30afe02d, 0xd32dfe56, 0x4dae24c9, 0x1528c3a0,
++ 0x8bab193f, 0x68290744, 0xf6aadddb, 0x34372cdc, 0xaab4f643,
++ 0x4936e838, 0xd7b532a7, 0x8f33d5ce, 0x11b00f51, 0xf232112a,
++ 0x6cb1cbb5, 0x423edef9, 0xdcbd0466, 0x3f3f1a1d, 0xa1bcc082,
++ 0xf93a27eb, 0x67b9fd74, 0x843be30f, 0x1ab83990, 0xf14de1f4,
++ 0x6fce3b6b, 0x8c4c2510, 0x12cfff8f, 0x4a4918e6, 0xd4cac279,
++ 0x3748dc02, 0xa9cb069d, 0x874413d1, 0x19c7c94e, 0xfa45d735,
++ 0x64c60daa, 0x3c40eac3, 0xa2c3305c, 0x41412e27, 0xdfc2f4b8,
++ 0x1d5f05bf, 0x83dcdf20, 0x605ec15b, 0xfedd1bc4, 0xa65bfcad,
++ 0x38d82632, 0xdb5a3849, 0x45d9e2d6, 0x6b56f79a, 0xf5d52d05,
++ 0x1657337e, 0x88d4e9e1, 0xd0520e88, 0x4ed1d417, 0xad53ca6c,
++ 0x33d010f3, 0x29682963, 0xb7ebf3fc, 0x5469ed87, 0xcaea3718,
++ 0x926cd071, 0x0cef0aee, 0xef6d1495, 0x71eece0a, 0x5f61db46,
++ 0xc1e201d9, 0x22601fa2, 0xbce3c53d, 0xe4652254, 0x7ae6f8cb,
++ 0x9964e6b0, 0x07e73c2f, 0xc57acd28, 0x5bf917b7, 0xb87b09cc,
++ 0x26f8d353, 0x7e7e343a, 0xe0fdeea5, 0x037ff0de, 0x9dfc2a41,
++ 0xb3733f0d, 0x2df0e592, 0xce72fbe9, 0x50f12176, 0x0877c61f,
++ 0x96f41c80, 0x757602fb, 0xebf5d864, 0xa39db332, 0x3d1e69ad,
++ 0xde9c77d6, 0x401fad49, 0x18994a20, 0x861a90bf, 0x65988ec4,
++ 0xfb1b545b, 0xd5944117, 0x4b179b88, 0xa89585f3, 0x36165f6c,
++ 0x6e90b805, 0xf013629a, 0x13917ce1, 0x8d12a67e, 0x4f8f5779,
++ 0xd10c8de6, 0x328e939d, 0xac0d4902, 0xf48bae6b, 0x6a0874f4,
++ 0x898a6a8f, 0x1709b010, 0x3986a55c, 0xa7057fc3, 0x448761b8,
++ 0xda04bb27, 0x82825c4e, 0x1c0186d1, 0xff8398aa, 0x61004235,
++ 0x7bb87ba5, 0xe53ba13a, 0x06b9bf41, 0x983a65de, 0xc0bc82b7,
++ 0x5e3f5828, 0xbdbd4653, 0x233e9ccc, 0x0db18980, 0x9332531f,
++ 0x70b04d64, 0xee3397fb, 0xb6b57092, 0x2836aa0d, 0xcbb4b476,
++ 0x55376ee9, 0x97aa9fee, 0x09294571, 0xeaab5b0a, 0x74288195,
++ 0x2cae66fc, 0xb22dbc63, 0x51afa218, 0xcf2c7887, 0xe1a36dcb,
++ 0x7f20b754, 0x9ca2a92f, 0x022173b0, 0x5aa794d9, 0xc4244e46,
++ 0x27a6503d, 0xb9258aa2, 0x52d052c6, 0xcc538859, 0x2fd19622,
++ 0xb1524cbd, 0xe9d4abd4, 0x7757714b, 0x94d56f30, 0x0a56b5af,
++ 0x24d9a0e3, 0xba5a7a7c, 0x59d86407, 0xc75bbe98, 0x9fdd59f1,
++ 0x015e836e, 0xe2dc9d15, 0x7c5f478a, 0xbec2b68d, 0x20416c12,
++ 0xc3c37269, 0x5d40a8f6, 0x05c64f9f, 0x9b459500, 0x78c78b7b,
++ 0xe64451e4, 0xc8cb44a8, 0x56489e37, 0xb5ca804c, 0x2b495ad3,
++ 0x73cfbdba, 0xed4c6725, 0x0ece795e, 0x904da3c1, 0x8af59a51,
++ 0x147640ce, 0xf7f45eb5, 0x6977842a, 0x31f16343, 0xaf72b9dc,
++ 0x4cf0a7a7, 0xd2737d38, 0xfcfc6874, 0x627fb2eb, 0x81fdac90,
++ 0x1f7e760f, 0x47f89166, 0xd97b4bf9, 0x3af95582, 0xa47a8f1d,
++ 0x66e77e1a, 0xf864a485, 0x1be6bafe, 0x85656061, 0xdde38708,
++ 0x43605d97, 0xa0e243ec, 0x3e619973, 0x10ee8c3f, 0x8e6d56a0,
++ 0x6def48db, 0xf36c9244, 0xabea752d, 0x3569afb2, 0xd6ebb1c9,
++ 0x48686b56},
++ {0x00000000, 0xc0642817, 0x80c9502e, 0x40ad7839, 0x0093a15c,
++ 0xc0f7894b, 0x805af172, 0x403ed965, 0x002643b9, 0xc0426bae,
++ 0x80ef1397, 0x408b3b80, 0x00b5e2e5, 0xc0d1caf2, 0x807cb2cb,
++ 0x40189adc, 0x414af7a9, 0x812edfbe, 0xc183a787, 0x01e78f90,
++ 0x41d956f5, 0x81bd7ee2, 0xc11006db, 0x01742ecc, 0x416cb410,
++ 0x81089c07, 0xc1a5e43e, 0x01c1cc29, 0x41ff154c, 0x819b3d5b,
++ 0xc1364562, 0x01526d75, 0xc3929f88, 0x03f6b79f, 0x435bcfa6,
++ 0x833fe7b1, 0xc3013ed4, 0x036516c3, 0x43c86efa, 0x83ac46ed,
++ 0xc3b4dc31, 0x03d0f426, 0x437d8c1f, 0x8319a408, 0xc3277d6d,
++ 0x0343557a, 0x43ee2d43, 0x838a0554, 0x82d86821, 0x42bc4036,
++ 0x0211380f, 0xc2751018, 0x824bc97d, 0x422fe16a, 0x02829953,
++ 0xc2e6b144, 0x82fe2b98, 0x429a038f, 0x02377bb6, 0xc25353a1,
++ 0x826d8ac4, 0x4209a2d3, 0x02a4daea, 0xc2c0f2fd, 0xc7234eca,
++ 0x074766dd, 0x47ea1ee4, 0x878e36f3, 0xc7b0ef96, 0x07d4c781,
++ 0x4779bfb8, 0x871d97af, 0xc7050d73, 0x07612564, 0x47cc5d5d,
++ 0x87a8754a, 0xc796ac2f, 0x07f28438, 0x475ffc01, 0x873bd416,
++ 0x8669b963, 0x460d9174, 0x06a0e94d, 0xc6c4c15a, 0x86fa183f,
++ 0x469e3028, 0x06334811, 0xc6576006, 0x864ffada, 0x462bd2cd,
++ 0x0686aaf4, 0xc6e282e3, 0x86dc5b86, 0x46b87391, 0x06150ba8,
++ 0xc67123bf, 0x04b1d142, 0xc4d5f955, 0x8478816c, 0x441ca97b,
++ 0x0422701e, 0xc4465809, 0x84eb2030, 0x448f0827, 0x049792fb,
++ 0xc4f3baec, 0x845ec2d5, 0x443aeac2, 0x040433a7, 0xc4601bb0,
++ 0x84cd6389, 0x44a94b9e, 0x45fb26eb, 0x859f0efc, 0xc53276c5,
++ 0x05565ed2, 0x456887b7, 0x850cafa0, 0xc5a1d799, 0x05c5ff8e,
++ 0x45dd6552, 0x85b94d45, 0xc514357c, 0x05701d6b, 0x454ec40e,
++ 0x852aec19, 0xc5879420, 0x05e3bc37, 0xcf41ed4f, 0x0f25c558,
++ 0x4f88bd61, 0x8fec9576, 0xcfd24c13, 0x0fb66404, 0x4f1b1c3d,
++ 0x8f7f342a, 0xcf67aef6, 0x0f0386e1, 0x4faefed8, 0x8fcad6cf,
++ 0xcff40faa, 0x0f9027bd, 0x4f3d5f84, 0x8f597793, 0x8e0b1ae6,
++ 0x4e6f32f1, 0x0ec24ac8, 0xcea662df, 0x8e98bbba, 0x4efc93ad,
++ 0x0e51eb94, 0xce35c383, 0x8e2d595f, 0x4e497148, 0x0ee40971,
++ 0xce802166, 0x8ebef803, 0x4edad014, 0x0e77a82d, 0xce13803a,
++ 0x0cd372c7, 0xccb75ad0, 0x8c1a22e9, 0x4c7e0afe, 0x0c40d39b,
++ 0xcc24fb8c, 0x8c8983b5, 0x4cedaba2, 0x0cf5317e, 0xcc911969,
++ 0x8c3c6150, 0x4c584947, 0x0c669022, 0xcc02b835, 0x8cafc00c,
++ 0x4ccbe81b, 0x4d99856e, 0x8dfdad79, 0xcd50d540, 0x0d34fd57,
++ 0x4d0a2432, 0x8d6e0c25, 0xcdc3741c, 0x0da75c0b, 0x4dbfc6d7,
++ 0x8ddbeec0, 0xcd7696f9, 0x0d12beee, 0x4d2c678b, 0x8d484f9c,
++ 0xcde537a5, 0x0d811fb2, 0x0862a385, 0xc8068b92, 0x88abf3ab,
++ 0x48cfdbbc, 0x08f102d9, 0xc8952ace, 0x883852f7, 0x485c7ae0,
++ 0x0844e03c, 0xc820c82b, 0x888db012, 0x48e99805, 0x08d74160,
++ 0xc8b36977, 0x881e114e, 0x487a3959, 0x4928542c, 0x894c7c3b,
++ 0xc9e10402, 0x09852c15, 0x49bbf570, 0x89dfdd67, 0xc972a55e,
++ 0x09168d49, 0x490e1795, 0x896a3f82, 0xc9c747bb, 0x09a36fac,
++ 0x499db6c9, 0x89f99ede, 0xc954e6e7, 0x0930cef0, 0xcbf03c0d,
++ 0x0b94141a, 0x4b396c23, 0x8b5d4434, 0xcb639d51, 0x0b07b546,
++ 0x4baacd7f, 0x8bcee568, 0xcbd67fb4, 0x0bb257a3, 0x4b1f2f9a,
++ 0x8b7b078d, 0xcb45dee8, 0x0b21f6ff, 0x4b8c8ec6, 0x8be8a6d1,
++ 0x8abacba4, 0x4adee3b3, 0x0a739b8a, 0xca17b39d, 0x8a296af8,
++ 0x4a4d42ef, 0x0ae03ad6, 0xca8412c1, 0x8a9c881d, 0x4af8a00a,
++ 0x0a55d833, 0xca31f024, 0x8a0f2941, 0x4a6b0156, 0x0ac6796f,
++ 0xcaa25178},
++ {0x00000000, 0xd4ea739b, 0xe9d396ed, 0x3d39e576, 0x93a15c00,
++ 0x474b2f9b, 0x7a72caed, 0xae98b976, 0x2643b900, 0xf2a9ca9b,
++ 0xcf902fed, 0x1b7a5c76, 0xb5e2e500, 0x6108969b, 0x5c3173ed,
++ 0x88db0076, 0x4c867201, 0x986c019a, 0xa555e4ec, 0x71bf9777,
++ 0xdf272e01, 0x0bcd5d9a, 0x36f4b8ec, 0xe21ecb77, 0x6ac5cb01,
++ 0xbe2fb89a, 0x83165dec, 0x57fc2e77, 0xf9649701, 0x2d8ee49a,
++ 0x10b701ec, 0xc45d7277, 0x980ce502, 0x4ce69699, 0x71df73ef,
++ 0xa5350074, 0x0badb902, 0xdf47ca99, 0xe27e2fef, 0x36945c74,
++ 0xbe4f5c02, 0x6aa52f99, 0x579ccaef, 0x8376b974, 0x2dee0002,
++ 0xf9047399, 0xc43d96ef, 0x10d7e574, 0xd48a9703, 0x0060e498,
++ 0x3d5901ee, 0xe9b37275, 0x472bcb03, 0x93c1b898, 0xaef85dee,
++ 0x7a122e75, 0xf2c92e03, 0x26235d98, 0x1b1ab8ee, 0xcff0cb75,
++ 0x61687203, 0xb5820198, 0x88bbe4ee, 0x5c519775, 0x3019ca05,
++ 0xe4f3b99e, 0xd9ca5ce8, 0x0d202f73, 0xa3b89605, 0x7752e59e,
++ 0x4a6b00e8, 0x9e817373, 0x165a7305, 0xc2b0009e, 0xff89e5e8,
++ 0x2b639673, 0x85fb2f05, 0x51115c9e, 0x6c28b9e8, 0xb8c2ca73,
++ 0x7c9fb804, 0xa875cb9f, 0x954c2ee9, 0x41a65d72, 0xef3ee404,
++ 0x3bd4979f, 0x06ed72e9, 0xd2070172, 0x5adc0104, 0x8e36729f,
++ 0xb30f97e9, 0x67e5e472, 0xc97d5d04, 0x1d972e9f, 0x20aecbe9,
++ 0xf444b872, 0xa8152f07, 0x7cff5c9c, 0x41c6b9ea, 0x952cca71,
++ 0x3bb47307, 0xef5e009c, 0xd267e5ea, 0x068d9671, 0x8e569607,
++ 0x5abce59c, 0x678500ea, 0xb36f7371, 0x1df7ca07, 0xc91db99c,
++ 0xf4245cea, 0x20ce2f71, 0xe4935d06, 0x30792e9d, 0x0d40cbeb,
++ 0xd9aab870, 0x77320106, 0xa3d8729d, 0x9ee197eb, 0x4a0be470,
++ 0xc2d0e406, 0x163a979d, 0x2b0372eb, 0xffe90170, 0x5171b806,
++ 0x859bcb9d, 0xb8a22eeb, 0x6c485d70, 0x6032940b, 0xb4d8e790,
++ 0x89e102e6, 0x5d0b717d, 0xf393c80b, 0x2779bb90, 0x1a405ee6,
++ 0xceaa2d7d, 0x46712d0b, 0x929b5e90, 0xafa2bbe6, 0x7b48c87d,
++ 0xd5d0710b, 0x013a0290, 0x3c03e7e6, 0xe8e9947d, 0x2cb4e60a,
++ 0xf85e9591, 0xc56770e7, 0x118d037c, 0xbf15ba0a, 0x6bffc991,
++ 0x56c62ce7, 0x822c5f7c, 0x0af75f0a, 0xde1d2c91, 0xe324c9e7,
++ 0x37ceba7c, 0x9956030a, 0x4dbc7091, 0x708595e7, 0xa46fe67c,
++ 0xf83e7109, 0x2cd40292, 0x11ede7e4, 0xc507947f, 0x6b9f2d09,
++ 0xbf755e92, 0x824cbbe4, 0x56a6c87f, 0xde7dc809, 0x0a97bb92,
++ 0x37ae5ee4, 0xe3442d7f, 0x4ddc9409, 0x9936e792, 0xa40f02e4,
++ 0x70e5717f, 0xb4b80308, 0x60527093, 0x5d6b95e5, 0x8981e67e,
++ 0x27195f08, 0xf3f32c93, 0xcecac9e5, 0x1a20ba7e, 0x92fbba08,
++ 0x4611c993, 0x7b282ce5, 0xafc25f7e, 0x015ae608, 0xd5b09593,
++ 0xe88970e5, 0x3c63037e, 0x502b5e0e, 0x84c12d95, 0xb9f8c8e3,
++ 0x6d12bb78, 0xc38a020e, 0x17607195, 0x2a5994e3, 0xfeb3e778,
++ 0x7668e70e, 0xa2829495, 0x9fbb71e3, 0x4b510278, 0xe5c9bb0e,
++ 0x3123c895, 0x0c1a2de3, 0xd8f05e78, 0x1cad2c0f, 0xc8475f94,
++ 0xf57ebae2, 0x2194c979, 0x8f0c700f, 0x5be60394, 0x66dfe6e2,
++ 0xb2359579, 0x3aee950f, 0xee04e694, 0xd33d03e2, 0x07d77079,
++ 0xa94fc90f, 0x7da5ba94, 0x409c5fe2, 0x94762c79, 0xc827bb0c,
++ 0x1ccdc897, 0x21f42de1, 0xf51e5e7a, 0x5b86e70c, 0x8f6c9497,
++ 0xb25571e1, 0x66bf027a, 0xee64020c, 0x3a8e7197, 0x07b794e1,
++ 0xd35de77a, 0x7dc55e0c, 0xa92f2d97, 0x9416c8e1, 0x40fcbb7a,
++ 0x84a1c90d, 0x504bba96, 0x6d725fe0, 0xb9982c7b, 0x1700950d,
++ 0xc3eae696, 0xfed303e0, 0x2a39707b, 0xa2e2700d, 0x76080396,
++ 0x4b31e6e0, 0x9fdb957b, 0x31432c0d, 0xe5a95f96, 0xd890bae0,
++ 0x0c7ac97b},
++ {0x00000000, 0x27652581, 0x0fcc3bd9, 0x28a91e58, 0x5f9e0669,
++ 0x78fb23e8, 0x50523db0, 0x77371831, 0xbe3c0dd2, 0x99592853,
++ 0xb1f0360b, 0x9695138a, 0xe1a20bbb, 0xc6c72e3a, 0xee6e3062,
++ 0xc90b15e3, 0x3d7f6b7f, 0x1a1a4efe, 0x32b350a6, 0x15d67527,
++ 0x62e16d16, 0x45844897, 0x6d2d56cf, 0x4a48734e, 0x834366ad,
++ 0xa426432c, 0x8c8f5d74, 0xabea78f5, 0xdcdd60c4, 0xfbb84545,
++ 0xd3115b1d, 0xf4747e9c, 0x7afed6fe, 0x5d9bf37f, 0x7532ed27,
++ 0x5257c8a6, 0x2560d097, 0x0205f516, 0x2aaceb4e, 0x0dc9cecf,
++ 0xc4c2db2c, 0xe3a7fead, 0xcb0ee0f5, 0xec6bc574, 0x9b5cdd45,
++ 0xbc39f8c4, 0x9490e69c, 0xb3f5c31d, 0x4781bd81, 0x60e49800,
++ 0x484d8658, 0x6f28a3d9, 0x181fbbe8, 0x3f7a9e69, 0x17d38031,
++ 0x30b6a5b0, 0xf9bdb053, 0xded895d2, 0xf6718b8a, 0xd114ae0b,
++ 0xa623b63a, 0x814693bb, 0xa9ef8de3, 0x8e8aa862, 0xb5fadc26,
++ 0x929ff9a7, 0xba36e7ff, 0x9d53c27e, 0xea64da4f, 0xcd01ffce,
++ 0xe5a8e196, 0xc2cdc417, 0x0bc6d1f4, 0x2ca3f475, 0x040aea2d,
++ 0x236fcfac, 0x5458d79d, 0x733df21c, 0x5b94ec44, 0x7cf1c9c5,
++ 0x8885b759, 0xafe092d8, 0x87498c80, 0xa02ca901, 0xd71bb130,
++ 0xf07e94b1, 0xd8d78ae9, 0xffb2af68, 0x36b9ba8b, 0x11dc9f0a,
++ 0x39758152, 0x1e10a4d3, 0x6927bce2, 0x4e429963, 0x66eb873b,
++ 0x418ea2ba, 0xcf040ad8, 0xe8612f59, 0xc0c83101, 0xe7ad1480,
++ 0x909a0cb1, 0xb7ff2930, 0x9f563768, 0xb83312e9, 0x7138070a,
++ 0x565d228b, 0x7ef43cd3, 0x59911952, 0x2ea60163, 0x09c324e2,
++ 0x216a3aba, 0x060f1f3b, 0xf27b61a7, 0xd51e4426, 0xfdb75a7e,
++ 0xdad27fff, 0xade567ce, 0x8a80424f, 0xa2295c17, 0x854c7996,
++ 0x4c476c75, 0x6b2249f4, 0x438b57ac, 0x64ee722d, 0x13d96a1c,
++ 0x34bc4f9d, 0x1c1551c5, 0x3b707444, 0x6af5b94d, 0x4d909ccc,
++ 0x65398294, 0x425ca715, 0x356bbf24, 0x120e9aa5, 0x3aa784fd,
++ 0x1dc2a17c, 0xd4c9b49f, 0xf3ac911e, 0xdb058f46, 0xfc60aac7,
++ 0x8b57b2f6, 0xac329777, 0x849b892f, 0xa3feacae, 0x578ad232,
++ 0x70eff7b3, 0x5846e9eb, 0x7f23cc6a, 0x0814d45b, 0x2f71f1da,
++ 0x07d8ef82, 0x20bdca03, 0xe9b6dfe0, 0xced3fa61, 0xe67ae439,
++ 0xc11fc1b8, 0xb628d989, 0x914dfc08, 0xb9e4e250, 0x9e81c7d1,
++ 0x100b6fb3, 0x376e4a32, 0x1fc7546a, 0x38a271eb, 0x4f9569da,
++ 0x68f04c5b, 0x40595203, 0x673c7782, 0xae376261, 0x895247e0,
++ 0xa1fb59b8, 0x869e7c39, 0xf1a96408, 0xd6cc4189, 0xfe655fd1,
++ 0xd9007a50, 0x2d7404cc, 0x0a11214d, 0x22b83f15, 0x05dd1a94,
++ 0x72ea02a5, 0x558f2724, 0x7d26397c, 0x5a431cfd, 0x9348091e,
++ 0xb42d2c9f, 0x9c8432c7, 0xbbe11746, 0xccd60f77, 0xebb32af6,
++ 0xc31a34ae, 0xe47f112f, 0xdf0f656b, 0xf86a40ea, 0xd0c35eb2,
++ 0xf7a67b33, 0x80916302, 0xa7f44683, 0x8f5d58db, 0xa8387d5a,
++ 0x613368b9, 0x46564d38, 0x6eff5360, 0x499a76e1, 0x3ead6ed0,
++ 0x19c84b51, 0x31615509, 0x16047088, 0xe2700e14, 0xc5152b95,
++ 0xedbc35cd, 0xcad9104c, 0xbdee087d, 0x9a8b2dfc, 0xb22233a4,
++ 0x95471625, 0x5c4c03c6, 0x7b292647, 0x5380381f, 0x74e51d9e,
++ 0x03d205af, 0x24b7202e, 0x0c1e3e76, 0x2b7b1bf7, 0xa5f1b395,
++ 0x82949614, 0xaa3d884c, 0x8d58adcd, 0xfa6fb5fc, 0xdd0a907d,
++ 0xf5a38e25, 0xd2c6aba4, 0x1bcdbe47, 0x3ca89bc6, 0x1401859e,
++ 0x3364a01f, 0x4453b82e, 0x63369daf, 0x4b9f83f7, 0x6cfaa676,
++ 0x988ed8ea, 0xbfebfd6b, 0x9742e333, 0xb027c6b2, 0xc710de83,
++ 0xe075fb02, 0xc8dce55a, 0xefb9c0db, 0x26b2d538, 0x01d7f0b9,
++ 0x297eeee1, 0x0e1bcb60, 0x792cd351, 0x5e49f6d0, 0x76e0e888,
++ 0x5185cd09}};
++
++#endif
++
++#endif
++
++#endif
++
++local const z_crc_t FAR x2n_table[] = {
++ 0x40000000, 0x20000000, 0x08000000, 0x00800000, 0x00008000,
++ 0xedb88320, 0xb1e6b092, 0xa06a2517, 0xed627dae, 0x88d14467,
++ 0xd7bbfe6a, 0xec447f11, 0x8e7ea170, 0x6427800e, 0x4d47bae0,
++ 0x09fe548f, 0x83852d0f, 0x30362f1a, 0x7b5a9cc3, 0x31fec169,
++ 0x9fec022a, 0x6c8dedc4, 0x15d6874d, 0x5fde7a4e, 0xbad90e37,
++ 0x2e4e5eef, 0x4eaba214, 0xa8a472c0, 0x429a969e, 0x148d302a,
++ 0xc40ba6d0, 0xc4e22c3c};
+diff --git a/src/3rdparty/zlib/src/deflate.c b/src/3rdparty/zlib/src/deflate.c
+index 1ec761448d..799fb93cc0 100644
+--- a/src/3rdparty/zlib/src/deflate.c
++++ b/src/3rdparty/zlib/src/deflate.c
+@@ -1,5 +1,5 @@
+ /* deflate.c -- compress data using the deflation algorithm
+- * Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
++ * Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+@@ -52,7 +52,7 @@
+ #include "deflate.h"
+
+ const char deflate_copyright[] =
+- " deflate 1.2.11 Copyright 1995-2017 Jean-loup Gailly and Mark Adler ";
++ " deflate 1.2.12 Copyright 1995-2022 Jean-loup Gailly and Mark Adler ";
+ /*
+ If you use the zlib library in a product, an acknowledgment is welcome
+ in the documentation of your product. If for some reason you cannot
+@@ -190,8 +190,11 @@ local const config configuration_table[10] = {
+ * prev[] will be initialized on the fly.
+ */
+ #define CLEAR_HASH(s) \
+- s->head[s->hash_size-1] = NIL; \
+- zmemzero((Bytef *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head));
++ do { \
++ s->head[s->hash_size-1] = NIL; \
++ zmemzero((Bytef *)s->head, \
++ (unsigned)(s->hash_size-1)*sizeof(*s->head)); \
++ } while (0)
+
+ /* ===========================================================================
+ * Slide the hash table when sliding the window down (could be avoided with 32
+@@ -252,11 +255,6 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
+ int wrap = 1;
+ static const char my_version[] = ZLIB_VERSION;
+
+- ushf *overlay;
+- /* We overlay pending_buf and d_buf+l_buf. This works since the average
+- * output size for (length,distance) codes is <= 24 bits.
+- */
+-
+ if (version == Z_NULL || version[0] != my_version[0] ||
+ stream_size != sizeof(z_stream)) {
+ return Z_VERSION_ERROR;
+@@ -326,9 +324,47 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
+
+ s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */
+
+- overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush)+2);
+- s->pending_buf = (uchf *) overlay;
+- s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush)+2L);
++ /* We overlay pending_buf and sym_buf. This works since the average size
++ * for length/distance pairs over any compressed block is assured to be 31
++ * bits or less.
++ *
++ * Analysis: The longest fixed codes are a length code of 8 bits plus 5
++ * extra bits, for lengths 131 to 257. The longest fixed distance codes are
++ * 5 bits plus 13 extra bits, for distances 16385 to 32768. The longest
++ * possible fixed-codes length/distance pair is then 31 bits total.
++ *
++ * sym_buf starts one-fourth of the way into pending_buf. So there are
++ * three bytes in sym_buf for every four bytes in pending_buf. Each symbol
++ * in sym_buf is three bytes -- two for the distance and one for the
++ * literal/length. As each symbol is consumed, the pointer to the next
++ * sym_buf value to read moves forward three bytes. From that symbol, up to
++ * 31 bits are written to pending_buf. The closest the written pending_buf
++ * bits gets to the next sym_buf symbol to read is just before the last
++ * code is written. At that time, 31*(n-2) bits have been written, just
++ * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at
++ * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1
++ * symbols are written.) The closest the writing gets to what is unread is
++ * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and
++ * can range from 128 to 32768.
++ *
++ * Therefore, at a minimum, there are 142 bits of space between what is
++ * written and what is read in the overlain buffers, so the symbols cannot
++ * be overwritten by the compressed data. That space is actually 139 bits,
++ * due to the three-bit fixed-code block header.
++ *
++ * That covers the case where either Z_FIXED is specified, forcing fixed
++ * codes, or when the use of fixed codes is chosen, because that choice
++ * results in a smaller compressed block than dynamic codes. That latter
++ * condition then assures that the above analysis also covers all dynamic
++ * blocks. A dynamic-code block will only be chosen to be emitted if it has
++ * fewer bits than a fixed-code block would for the same set of symbols.
++ * Therefore its average symbol length is assured to be less than 31. So
++ * the compressed data for a dynamic block also cannot overwrite the
++ * symbols from which it is being constructed.
++ */
++
++ s->pending_buf = (uchf *) ZALLOC(strm, s->lit_bufsize, 4);
++ s->pending_buf_size = (ulg)s->lit_bufsize * 4;
+
+ if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL ||
+ s->pending_buf == Z_NULL) {
+@@ -337,8 +373,12 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
+ deflateEnd (strm);
+ return Z_MEM_ERROR;
+ }
+- s->d_buf = overlay + s->lit_bufsize/sizeof(ush);
+- s->l_buf = s->pending_buf + (1+sizeof(ush))*s->lit_bufsize;
++ s->sym_buf = s->pending_buf + s->lit_bufsize;
++ s->sym_end = (s->lit_bufsize - 1) * 3;
++ /* We avoid equality with lit_bufsize*3 because of wraparound at 64K
++ * on 16 bit machines and because stored blocks are restricted to
++ * 64K-1 bytes.
++ */
+
+ s->level = level;
+ s->strategy = strategy;
+@@ -488,13 +528,13 @@ int ZEXPORT deflateResetKeep (strm)
+ #ifdef GZIP
+ s->wrap == 2 ? GZIP_STATE :
+ #endif
+- s->wrap ? INIT_STATE : BUSY_STATE;
++ INIT_STATE;
+ strm->adler =
+ #ifdef GZIP
+ s->wrap == 2 ? crc32(0L, Z_NULL, 0) :
+ #endif
+ adler32(0L, Z_NULL, 0);
+- s->last_flush = Z_NO_FLUSH;
++ s->last_flush = -2;
+
+ _tr_init(s);
+
+@@ -549,7 +589,8 @@ int ZEXPORT deflatePrime (strm, bits, value)
+
+ if (deflateStateCheck(strm)) return Z_STREAM_ERROR;
+ s = strm->state;
+- if ((Bytef *)(s->d_buf) < s->pending_out + ((Buf_size + 7) >> 3))
++ if (bits < 0 || bits > 16 ||
++ s->sym_buf < s->pending_out + ((Buf_size + 7) >> 3))
+ return Z_BUF_ERROR;
+ do {
+ put = Buf_size - s->bi_valid;
+@@ -587,12 +628,12 @@ int ZEXPORT deflateParams(strm, level, strategy)
+ func = configuration_table[s->level].func;
+
+ if ((strategy != s->strategy || func != configuration_table[level].func) &&
+- s->high_water) {
++ s->last_flush != -2) {
+ /* Flush the last buffer: */
+ int err = deflate(strm, Z_BLOCK);
+ if (err == Z_STREAM_ERROR)
+ return err;
+- if (strm->avail_out == 0)
++ if (strm->avail_in || (s->strstart - s->block_start) + s->lookahead)
+ return Z_BUF_ERROR;
+ }
+ if (s->level != level) {
+@@ -811,6 +852,8 @@ int ZEXPORT deflate (strm, flush)
+ }
+
+ /* Write the header */
++ if (s->status == INIT_STATE && s->wrap == 0)
++ s->status = BUSY_STATE;
+ if (s->status == INIT_STATE) {
+ /* zlib header */
+ uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8;
+@@ -1108,7 +1151,6 @@ int ZEXPORT deflateCopy (dest, source)
+ #else
+ deflate_state *ds;
+ deflate_state *ss;
+- ushf *overlay;
+
+
+ if (deflateStateCheck(source) || dest == Z_NULL) {
+@@ -1128,8 +1170,7 @@ int ZEXPORT deflateCopy (dest, source)
+ ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2*sizeof(Byte));
+ ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos));
+ ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos));
+- overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush)+2);
+- ds->pending_buf = (uchf *) overlay;
++ ds->pending_buf = (uchf *) ZALLOC(dest, ds->lit_bufsize, 4);
+
+ if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL ||
+ ds->pending_buf == Z_NULL) {
+@@ -1143,8 +1184,7 @@ int ZEXPORT deflateCopy (dest, source)
+ zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size);
+
+ ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf);
+- ds->d_buf = overlay + ds->lit_bufsize/sizeof(ush);
+- ds->l_buf = ds->pending_buf + (1+sizeof(ush))*ds->lit_bufsize;
++ ds->sym_buf = ds->pending_buf + ds->lit_bufsize;
+
+ ds->l_desc.dyn_tree = ds->dyn_ltree;
+ ds->d_desc.dyn_tree = ds->dyn_dtree;
+@@ -1513,6 +1553,8 @@ local void fill_window(s)
+ s->match_start -= wsize;
+ s->strstart -= wsize; /* we now have strstart >= MAX_DIST */
+ s->block_start -= (long) wsize;
++ if (s->insert > s->strstart)
++ s->insert = s->strstart;
+ slide_hash(s);
+ more += wsize;
+ }
+@@ -1742,6 +1784,7 @@ local block_state deflate_stored(s, flush)
+ s->matches = 2; /* clear hash */
+ zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size);
+ s->strstart = s->w_size;
++ s->insert = s->strstart;
+ }
+ else {
+ if (s->window_size - s->strstart <= used) {
+@@ -1750,12 +1793,14 @@ local block_state deflate_stored(s, flush)
+ zmemcpy(s->window, s->window + s->w_size, s->strstart);
+ if (s->matches < 2)
+ s->matches++; /* add a pending slide_hash() */
++ if (s->insert > s->strstart)
++ s->insert = s->strstart;
+ }
+ zmemcpy(s->window + s->strstart, s->strm->next_in - used, used);
+ s->strstart += used;
++ s->insert += MIN(used, s->w_size - s->insert);
+ }
+ s->block_start = s->strstart;
+- s->insert += MIN(used, s->w_size - s->insert);
+ }
+ if (s->high_water < s->strstart)
+ s->high_water = s->strstart;
+@@ -1770,7 +1815,7 @@ local block_state deflate_stored(s, flush)
+ return block_done;
+
+ /* Fill the window with any remaining input. */
+- have = s->window_size - s->strstart - 1;
++ have = s->window_size - s->strstart;
+ if (s->strm->avail_in > have && s->block_start >= (long)s->w_size) {
+ /* Slide the window down. */
+ s->block_start -= s->w_size;
+@@ -1779,12 +1824,15 @@ local block_state deflate_stored(s, flush)
+ if (s->matches < 2)
+ s->matches++; /* add a pending slide_hash() */
+ have += s->w_size; /* more space now */
++ if (s->insert > s->strstart)
++ s->insert = s->strstart;
+ }
+ if (have > s->strm->avail_in)
+ have = s->strm->avail_in;
+ if (have) {
+ read_buf(s->strm, s->window + s->strstart, have);
+ s->strstart += have;
++ s->insert += MIN(have, s->w_size - s->insert);
+ }
+ if (s->high_water < s->strstart)
+ s->high_water = s->strstart;
+@@ -1912,7 +1960,7 @@ local block_state deflate_fast(s, flush)
+ FLUSH_BLOCK(s, 1);
+ return finish_done;
+ }
+- if (s->last_lit)
++ if (s->sym_next)
+ FLUSH_BLOCK(s, 0);
+ return block_done;
+ }
+@@ -2043,7 +2091,7 @@ local block_state deflate_slow(s, flush)
+ FLUSH_BLOCK(s, 1);
+ return finish_done;
+ }
+- if (s->last_lit)
++ if (s->sym_next)
+ FLUSH_BLOCK(s, 0);
+ return block_done;
+ }
+@@ -2118,7 +2166,7 @@ local block_state deflate_rle(s, flush)
+ FLUSH_BLOCK(s, 1);
+ return finish_done;
+ }
+- if (s->last_lit)
++ if (s->sym_next)
+ FLUSH_BLOCK(s, 0);
+ return block_done;
+ }
+@@ -2157,7 +2205,7 @@ local block_state deflate_huff(s, flush)
+ FLUSH_BLOCK(s, 1);
+ return finish_done;
+ }
+- if (s->last_lit)
++ if (s->sym_next)
+ FLUSH_BLOCK(s, 0);
+ return block_done;
+ }
+diff --git a/src/3rdparty/zlib/src/deflate.h b/src/3rdparty/zlib/src/deflate.h
+index 23ecdd312b..17c226113b 100644
+--- a/src/3rdparty/zlib/src/deflate.h
++++ b/src/3rdparty/zlib/src/deflate.h
+@@ -1,5 +1,5 @@
+ /* deflate.h -- internal compression state
+- * Copyright (C) 1995-2016 Jean-loup Gailly
++ * Copyright (C) 1995-2018 Jean-loup Gailly
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+@@ -217,7 +217,7 @@ typedef struct internal_state {
+ /* Depth of each subtree used as tie breaker for trees of equal frequency
+ */
+
+- uchf *l_buf; /* buffer for literals or lengths */
++ uchf *sym_buf; /* buffer for distances and literals/lengths */
+
+ uInt lit_bufsize;
+ /* Size of match buffer for literals/lengths. There are 4 reasons for
+@@ -239,13 +239,8 @@ typedef struct internal_state {
+ * - I can't count above 4
+ */
+
+- uInt last_lit; /* running index in l_buf */
+-
+- ushf *d_buf;
+- /* Buffer for distances. To simplify the code, d_buf and l_buf have
+- * the same number of elements. To use different lengths, an extra flag
+- * array would be necessary.
+- */
++ uInt sym_next; /* running index in sym_buf */
++ uInt sym_end; /* symbol table full when sym_next reaches this */
+
+ ulg opt_len; /* bit length of current block with optimal trees */
+ ulg static_len; /* bit length of current block with static trees */
+@@ -325,20 +320,22 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf,
+
+ # define _tr_tally_lit(s, c, flush) \
+ { uch cc = (c); \
+- s->d_buf[s->last_lit] = 0; \
+- s->l_buf[s->last_lit++] = cc; \
++ s->sym_buf[s->sym_next++] = 0; \
++ s->sym_buf[s->sym_next++] = 0; \
++ s->sym_buf[s->sym_next++] = cc; \
+ s->dyn_ltree[cc].Freq++; \
+- flush = (s->last_lit == s->lit_bufsize-1); \
++ flush = (s->sym_next == s->sym_end); \
+ }
+ # define _tr_tally_dist(s, distance, length, flush) \
+ { uch len = (uch)(length); \
+ ush dist = (ush)(distance); \
+- s->d_buf[s->last_lit] = dist; \
+- s->l_buf[s->last_lit++] = len; \
++ s->sym_buf[s->sym_next++] = dist; \
++ s->sym_buf[s->sym_next++] = dist >> 8; \
++ s->sym_buf[s->sym_next++] = len; \
+ dist--; \
+ s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
+ s->dyn_dtree[d_code(dist)].Freq++; \
+- flush = (s->last_lit == s->lit_bufsize-1); \
++ flush = (s->sym_next == s->sym_end); \
+ }
+ #else
+ # define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c)
+diff --git a/src/3rdparty/zlib/src/gzguts.h b/src/3rdparty/zlib/src/gzguts.h
+index 20de7cb4ce..3ec32af25f 100644
+--- a/src/3rdparty/zlib/src/gzguts.h
++++ b/src/3rdparty/zlib/src/gzguts.h
+@@ -1,5 +1,5 @@
+ /* gzguts.h -- zlib internal header definitions for gz* operations
+- * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
++ * Copyright (C) 2004-2019 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+@@ -10,15 +10,8 @@
+ # ifndef _CRT_NONSTDC_NO_DEPRECATE
+ # define _CRT_NONSTDC_NO_DEPRECATE
+ # endif
+-#endif
+-
+-#ifdef _LARGEFILE64_SOURCE
+-# ifndef _LARGEFILE_SOURCE
+-# define _LARGEFILE_SOURCE 1
+-# endif
+-# ifdef _FILE_OFFSET_BITS
+-# undef _FILE_OFFSET_BITS
+-# endif
++// disable warnings like '=': conversion from 'size_t' to 'unsigned int', possible loss of data
++# pragma warning(disable: 4267; disable: 4244)
+ #endif
+
+ #ifndef QT_BOOTSTRAPPED
+@@ -29,6 +22,14 @@
+ #define HAVE_HIDDEN
+ #endif
+
++#ifdef _LARGEFILE64_SOURCE
++# ifndef _LARGEFILE_SOURCE
++# define _LARGEFILE_SOURCE 1
++# endif
++# ifdef _FILE_OFFSET_BITS
++# undef _FILE_OFFSET_BITS
++# endif
++#endif
+
+ #ifdef HAVE_HIDDEN
+ # define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
+@@ -57,7 +58,7 @@
+ # include <io.h>
+ #endif
+
+-#if defined(_WIN32) || defined(__CYGWIN__)
++#if defined(_WIN32)
+ # define WIDECHAR
+ #endif
+
+@@ -208,6 +209,7 @@ typedef struct {
+ /* just for writing */
+ int level; /* compression level */
+ int strategy; /* compression strategy */
++ int reset; /* true if a reset is pending after a Z_FINISH */
+ /* seek request */
+ z_off64_t skip; /* amount to skip (already rewound if backwards) */
+ int seek; /* true if seek request pending */
+diff --git a/src/3rdparty/zlib/src/gzlib.c b/src/3rdparty/zlib/src/gzlib.c
+index 4105e6aff9..dddaf26873 100644
+--- a/src/3rdparty/zlib/src/gzlib.c
++++ b/src/3rdparty/zlib/src/gzlib.c
+@@ -1,11 +1,11 @@
+ /* gzlib.c -- zlib functions common to reading and writing gzip files
+- * Copyright (C) 2004-2017 Mark Adler
++ * Copyright (C) 2004-2019 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+ #include "gzguts.h"
+
+-#if defined(_WIN32) && !defined(__BORLANDC__) && !defined(__MINGW32__)
++#if defined(_WIN32) && !defined(__BORLANDC__)
+ # define LSEEK _lseeki64
+ #else
+ #if defined(_LARGEFILE64_SOURCE) && _LFS64_LARGEFILE-0
+@@ -81,6 +81,8 @@ local void gz_reset(state)
+ state->past = 0; /* have not read past end yet */
+ state->how = LOOK; /* look for gzip header */
+ }
++ else /* for writing ... */
++ state->reset = 0; /* no deflateReset pending */
+ state->seek = 0; /* no seek request pending */
+ gz_error(state, Z_OK, NULL); /* clear error */
+ state->x.pos = 0; /* no uncompressed data yet */
+@@ -397,7 +399,7 @@ z_off64_t ZEXPORT gzseek64(file, offset, whence)
+ /* if within raw area while reading, just go there */
+ if (state->mode == GZ_READ && state->how == COPY &&
+ state->x.pos + offset >= 0) {
+- ret = LSEEK(state->fd, offset - state->x.have, SEEK_CUR);
++ ret = LSEEK(state->fd, offset - (z_off64_t)state->x.have, SEEK_CUR);
+ if (ret == -1)
+ return -1;
+ state->x.have = 0;
+diff --git a/src/3rdparty/zlib/src/gzread.c b/src/3rdparty/zlib/src/gzread.c
+index 956b91ea7d..884c9bfe4c 100644
+--- a/src/3rdparty/zlib/src/gzread.c
++++ b/src/3rdparty/zlib/src/gzread.c
+@@ -1,5 +1,5 @@
+ /* gzread.c -- zlib functions for reading gzip files
+- * Copyright (C) 2004, 2005, 2010, 2011, 2012, 2013, 2016 Mark Adler
++ * Copyright (C) 2004-2017 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+@@ -314,9 +314,9 @@ local z_size_t gz_read(state, buf, len)
+ got = 0;
+ do {
+ /* set n to the maximum amount of len that fits in an unsigned int */
+- n = -1;
++ n = (unsigned)-1;
+ if (n > len)
+- n = len;
++ n = (unsigned)len;
+
+ /* first just try copying data from the output buffer */
+ if (state->x.have) {
+@@ -397,7 +397,7 @@ int ZEXPORT gzread(file, buf, len)
+ }
+
+ /* read len or fewer bytes to buf */
+- len = gz_read(state, buf, len);
++ len = (unsigned)gz_read(state, buf, len);
+
+ /* check for an error */
+ if (len == 0 && state->err != Z_OK && state->err != Z_BUF_ERROR)
+@@ -447,7 +447,6 @@ z_size_t ZEXPORT gzfread(buf, size, nitems, file)
+ int ZEXPORT gzgetc(file)
+ gzFile file;
+ {
+- int ret;
+ unsigned char buf[1];
+ gz_statep state;
+
+@@ -469,8 +468,7 @@ int ZEXPORT gzgetc(file)
+ }
+
+ /* nothing there -- try gz_read() */
+- ret = gz_read(state, buf, 1);
+- return ret < 1 ? -1 : buf[0];
++ return gz_read(state, buf, 1) < 1 ? -1 : buf[0];
+ }
+
+ int ZEXPORT gzgetc_(file)
+diff --git a/src/3rdparty/zlib/src/gzwrite.c b/src/3rdparty/zlib/src/gzwrite.c
+index c7b5651d70..a8ffc8f53d 100644
+--- a/src/3rdparty/zlib/src/gzwrite.c
++++ b/src/3rdparty/zlib/src/gzwrite.c
+@@ -1,5 +1,5 @@
+ /* gzwrite.c -- zlib functions for writing gzip files
+- * Copyright (C) 2004-2017 Mark Adler
++ * Copyright (C) 2004-2019 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+@@ -97,6 +97,15 @@ local int gz_comp(state, flush)
+ return 0;
+ }
+
++ /* check for a pending reset */
++ if (state->reset) {
++ /* don't start a new gzip member unless there is data to write */
++ if (strm->avail_in == 0)
++ return 0;
++ deflateReset(strm);
++ state->reset = 0;
++ }
++
+ /* run deflate() on provided input until it produces no more output */
+ ret = Z_OK;
+ do {
+@@ -134,7 +143,7 @@ local int gz_comp(state, flush)
+
+ /* if that completed a deflate stream, allow another to start */
+ if (flush == Z_FINISH)
+- deflateReset(strm);
++ state->reset = 1;
+
+ /* all done, no errors */
+ return 0;
+@@ -209,7 +218,7 @@ local z_size_t gz_write(state, buf, len)
+ state->in);
+ copy = state->size - have;
+ if (copy > len)
+- copy = len;
++ copy = (unsigned)len;
+ memcpy(state->in + have, buf, copy);
+ state->strm.avail_in += copy;
+ state->x.pos += copy;
+@@ -229,7 +238,7 @@ local z_size_t gz_write(state, buf, len)
+ do {
+ unsigned n = (unsigned)-1;
+ if (n > len)
+- n = len;
++ n = (unsigned)len;
+ state->strm.avail_in = n;
+ state->x.pos += n;
+ if (gz_comp(state, Z_NO_FLUSH) == -1)
+@@ -349,12 +358,11 @@ int ZEXPORT gzputc(file, c)
+ }
+
+ /* -- see zlib.h -- */
+-int ZEXPORT gzputs(file, str)
++int ZEXPORT gzputs(file, s)
+ gzFile file;
+- const char *str;
++ const char *s;
+ {
+- int ret;
+- z_size_t len;
++ z_size_t len, put;
+ gz_statep state;
+
+ /* get internal structure */
+@@ -367,9 +375,13 @@ int ZEXPORT gzputs(file, str)
+ return -1;
+
+ /* write string */
+- len = strlen(str);
+- ret = gz_write(state, str, len);
+- return ret == 0 && len != 0 ? -1 : ret;
++ len = strlen(s);
++ if ((int)len < 0 || (unsigned)len != len) {
++ gz_error(state, Z_STREAM_ERROR, "string length does not fit in int");
++ return -1;
++ }
++ put = gz_write(state, s, len);
++ return put < len ? -1 : (int)len;
+ }
+
+ #if defined(STDC) || defined(Z_HAVE_STDARG_H)
+@@ -441,7 +453,7 @@ int ZEXPORTVA gzvprintf(gzFile file, const char *format, va_list va)
+ strm->avail_in = state->size;
+ if (gz_comp(state, Z_NO_FLUSH) == -1)
+ return state->err;
+- memcpy(state->in, state->in + state->size, left);
++ memmove(state->in, state->in + state->size, left);
+ strm->next_in = state->in;
+ strm->avail_in = left;
+ }
+@@ -540,7 +552,7 @@ int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
+ strm->avail_in = state->size;
+ if (gz_comp(state, Z_NO_FLUSH) == -1)
+ return state->err;
+- memcpy(state->in, state->in + state->size, left);
++ memmove(state->in, state->in + state->size, left);
+ strm->next_in = state->in;
+ strm->avail_in = left;
+ }
+diff --git a/src/3rdparty/zlib/src/infback.c b/src/3rdparty/zlib/src/infback.c
+index 59679ecbfc..a390c58e81 100644
+--- a/src/3rdparty/zlib/src/infback.c
++++ b/src/3rdparty/zlib/src/infback.c
+@@ -1,5 +1,5 @@
+ /* infback.c -- inflate using a call-back interface
+- * Copyright (C) 1995-2016 Mark Adler
++ * Copyright (C) 1995-2022 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+@@ -477,6 +477,7 @@ void FAR *out_desc;
+ }
+ Tracev((stderr, "inflate: codes ok\n"));
+ state->mode = LEN;
++ /* fallthrough */
+
+ case LEN:
+ /* use inflate_fast() if we have enough input and output */
+diff --git a/src/3rdparty/zlib/src/inffast.c b/src/3rdparty/zlib/src/inffast.c
+index 0dbd1dbc09..1fec7f363f 100644
+--- a/src/3rdparty/zlib/src/inffast.c
++++ b/src/3rdparty/zlib/src/inffast.c
+@@ -70,7 +70,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
+ code const FAR *dcode; /* local strm->distcode */
+ unsigned lmask; /* mask for first level of length codes */
+ unsigned dmask; /* mask for first level of distance codes */
+- code here; /* retrieved table entry */
++ code const *here; /* retrieved table entry */
+ unsigned op; /* code bits, operation, extra bits, or */
+ /* window position, window bytes to copy */
+ unsigned len; /* match length, unused bytes */
+@@ -107,20 +107,20 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
+ hold += (unsigned long)(*in++) << bits;
+ bits += 8;
+ }
+- here = lcode[hold & lmask];
++ here = lcode + (hold & lmask);
+ dolen:
+- op = (unsigned)(here.bits);
++ op = (unsigned)(here->bits);
+ hold >>= op;
+ bits -= op;
+- op = (unsigned)(here.op);
++ op = (unsigned)(here->op);
+ if (op == 0) { /* literal */
+- Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ?
++ Tracevv((stderr, here->val >= 0x20 && here->val < 0x7f ?
+ "inflate: literal '%c'\n" :
+- "inflate: literal 0x%02x\n", here.val));
+- *out++ = (unsigned char)(here.val);
++ "inflate: literal 0x%02x\n", here->val));
++ *out++ = (unsigned char)(here->val);
+ }
+ else if (op & 16) { /* length base */
+- len = (unsigned)(here.val);
++ len = (unsigned)(here->val);
+ op &= 15; /* number of extra bits */
+ if (op) {
+ if (bits < op) {
+@@ -138,14 +138,14 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
+ hold += (unsigned long)(*in++) << bits;
+ bits += 8;
+ }
+- here = dcode[hold & dmask];
++ here = dcode + (hold & dmask);
+ dodist:
+- op = (unsigned)(here.bits);
++ op = (unsigned)(here->bits);
+ hold >>= op;
+ bits -= op;
+- op = (unsigned)(here.op);
++ op = (unsigned)(here->op);
+ if (op & 16) { /* distance base */
+- dist = (unsigned)(here.val);
++ dist = (unsigned)(here->val);
+ op &= 15; /* number of extra bits */
+ if (bits < op) {
+ hold += (unsigned long)(*in++) << bits;
+@@ -264,7 +264,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
+ }
+ }
+ else if ((op & 64) == 0) { /* 2nd level distance code */
+- here = dcode[here.val + (hold & ((1U << op) - 1))];
++ here = dcode + here->val + (hold & ((1U << op) - 1));
+ goto dodist;
+ }
+ else {
+@@ -274,7 +274,7 @@ unsigned start; /* inflate()'s starting value for strm->avail_out */
+ }
+ }
+ else if ((op & 64) == 0) { /* 2nd level length code */
+- here = lcode[here.val + (hold & ((1U << op) - 1))];
++ here = lcode + here->val + (hold & ((1U << op) - 1));
+ goto dolen;
+ }
+ else if (op & 32) { /* end-of-block */
+diff --git a/src/3rdparty/zlib/src/inflate.c b/src/3rdparty/zlib/src/inflate.c
+index ac333e8c2e..7be8c63662 100644
+--- a/src/3rdparty/zlib/src/inflate.c
++++ b/src/3rdparty/zlib/src/inflate.c
+@@ -1,5 +1,5 @@
+ /* inflate.c -- zlib decompression
+- * Copyright (C) 1995-2016 Mark Adler
++ * Copyright (C) 1995-2022 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+@@ -130,6 +130,7 @@ z_streamp strm;
+ state->mode = HEAD;
+ state->last = 0;
+ state->havedict = 0;
++ state->flags = -1;
+ state->dmax = 32768U;
+ state->head = Z_NULL;
+ state->hold = 0;
+@@ -447,10 +448,10 @@ unsigned copy;
+
+ /* check function to use adler32() for zlib or crc32() for gzip */
+ #ifdef GUNZIP
+-# define UPDATE(check, buf, len) \
++# define UPDATE_CHECK(check, buf, len) \
+ (state->flags ? crc32(check, buf, len) : adler32(check, buf, len))
+ #else
+-# define UPDATE(check, buf, len) adler32(check, buf, len)
++# define UPDATE_CHECK(check, buf, len) adler32(check, buf, len)
+ #endif
+
+ /* check macros for header crc */
+@@ -670,7 +671,6 @@ int flush;
+ state->mode = FLAGS;
+ break;
+ }
+- state->flags = 0; /* expect zlib header */
+ if (state->head != Z_NULL)
+ state->head->done = -1;
+ if (!(state->wrap & 1) || /* check if zlib header allowed */
+@@ -697,6 +697,7 @@ int flush;
+ break;
+ }
+ state->dmax = 1U << len;
++ state->flags = 0; /* indicate zlib header */
+ Tracev((stderr, "inflate: zlib header ok\n"));
+ strm->adler = state->check = adler32(0L, Z_NULL, 0);
+ state->mode = hold & 0x200 ? DICTID : TYPE;
+@@ -722,6 +723,7 @@ int flush;
+ CRC2(state->check, hold);
+ INITBITS();
+ state->mode = TIME;
++ /* fallthrough */
+ case TIME:
+ NEEDBITS(32);
+ if (state->head != Z_NULL)
+@@ -730,6 +732,7 @@ int flush;
+ CRC4(state->check, hold);
+ INITBITS();
+ state->mode = OS;
++ /* fallthrough */
+ case OS:
+ NEEDBITS(16);
+ if (state->head != Z_NULL) {
+@@ -740,6 +743,7 @@ int flush;
+ CRC2(state->check, hold);
+ INITBITS();
+ state->mode = EXLEN;
++ /* fallthrough */
+ case EXLEN:
+ if (state->flags & 0x0400) {
+ NEEDBITS(16);
+@@ -753,6 +757,7 @@ int flush;
+ else if (state->head != Z_NULL)
+ state->head->extra = Z_NULL;
+ state->mode = EXTRA;
++ /* fallthrough */
+ case EXTRA:
+ if (state->flags & 0x0400) {
+ copy = state->length;
+@@ -775,6 +780,7 @@ int flush;
+ }
+ state->length = 0;
+ state->mode = NAME;
++ /* fallthrough */
+ case NAME:
+ if (state->flags & 0x0800) {
+ if (have == 0) goto inf_leave;
+@@ -796,6 +802,7 @@ int flush;
+ state->head->name = Z_NULL;
+ state->length = 0;
+ state->mode = COMMENT;
++ /* fallthrough */
+ case COMMENT:
+ if (state->flags & 0x1000) {
+ if (have == 0) goto inf_leave;
+@@ -816,6 +823,7 @@ int flush;
+ else if (state->head != Z_NULL)
+ state->head->comment = Z_NULL;
+ state->mode = HCRC;
++ /* fallthrough */
+ case HCRC:
+ if (state->flags & 0x0200) {
+ NEEDBITS(16);
+@@ -839,6 +847,7 @@ int flush;
+ strm->adler = state->check = ZSWAP32(hold);
+ INITBITS();
+ state->mode = DICT;
++ /* fallthrough */
+ case DICT:
+ if (state->havedict == 0) {
+ RESTORE();
+@@ -846,8 +855,10 @@ int flush;
+ }
+ strm->adler = state->check = adler32(0L, Z_NULL, 0);
+ state->mode = TYPE;
++ /* fallthrough */
+ case TYPE:
+ if (flush == Z_BLOCK || flush == Z_TREES) goto inf_leave;
++ /* fallthrough */
+ case TYPEDO:
+ if (state->last) {
+ BYTEBITS();
+@@ -898,8 +909,10 @@ int flush;
+ INITBITS();
+ state->mode = COPY_;
+ if (flush == Z_TREES) goto inf_leave;
++ /* fallthrough */
+ case COPY_:
+ state->mode = COPY;
++ /* fallthrough */
+ case COPY:
+ copy = state->length;
+ if (copy) {
+@@ -935,6 +948,7 @@ int flush;
+ Tracev((stderr, "inflate: table sizes ok\n"));
+ state->have = 0;
+ state->mode = LENLENS;
++ /* fallthrough */
+ case LENLENS:
+ while (state->have < state->ncode) {
+ NEEDBITS(3);
+@@ -956,6 +970,7 @@ int flush;
+ Tracev((stderr, "inflate: code lengths ok\n"));
+ state->have = 0;
+ state->mode = CODELENS;
++ /* fallthrough */
+ case CODELENS:
+ while (state->have < state->nlen + state->ndist) {
+ for (;;) {
+@@ -1039,8 +1054,10 @@ int flush;
+ Tracev((stderr, "inflate: codes ok\n"));
+ state->mode = LEN_;
+ if (flush == Z_TREES) goto inf_leave;
++ /* fallthrough */
+ case LEN_:
+ state->mode = LEN;
++ /* fallthrough */
+ case LEN:
+ if (have >= 6 && left >= 258) {
+ RESTORE();
+@@ -1090,6 +1107,7 @@ int flush;
+ }
+ state->extra = (unsigned)(here.op) & 15;
+ state->mode = LENEXT;
++ /* fallthrough */
+ case LENEXT:
+ if (state->extra) {
+ NEEDBITS(state->extra);
+@@ -1100,6 +1118,7 @@ int flush;
+ Tracevv((stderr, "inflate: length %u\n", state->length));
+ state->was = state->length;
+ state->mode = DIST;
++ /* fallthrough */
+ case DIST:
+ for (;;) {
+ here = state->distcode[BITS(state->distbits)];
+@@ -1127,6 +1146,7 @@ int flush;
+ state->offset = (unsigned)here.val;
+ state->extra = (unsigned)(here.op) & 15;
+ state->mode = DISTEXT;
++ /* fallthrough */
+ case DISTEXT:
+ if (state->extra) {
+ NEEDBITS(state->extra);
+@@ -1143,6 +1163,7 @@ int flush;
+ #endif
+ Tracevv((stderr, "inflate: distance %u\n", state->offset));
+ state->mode = MATCH;
++ /* fallthrough */
+ case MATCH:
+ if (left == 0) goto inf_leave;
+ copy = out - left;
+@@ -1202,7 +1223,7 @@ int flush;
+ state->total += out;
+ if ((state->wrap & 4) && out)
+ strm->adler = state->check =
+- UPDATE(state->check, put - out, out);
++ UPDATE_CHECK(state->check, put - out, out);
+ out = left;
+ if ((state->wrap & 4) && (
+ #ifdef GUNZIP
+@@ -1218,10 +1239,11 @@ int flush;
+ }
+ #ifdef GUNZIP
+ state->mode = LENGTH;
++ /* fallthrough */
+ case LENGTH:
+ if (state->wrap && state->flags) {
+ NEEDBITS(32);
+- if (hold != (state->total & 0xffffffffUL)) {
++ if ((state->wrap & 4) && hold != (state->total & 0xffffffff)) {
+ strm->msg = (char *)"incorrect length check";
+ state->mode = BAD;
+ break;
+@@ -1231,6 +1253,7 @@ int flush;
+ }
+ #endif
+ state->mode = DONE;
++ /* fallthrough */
+ case DONE:
+ ret = Z_STREAM_END;
+ goto inf_leave;
+@@ -1240,6 +1263,7 @@ int flush;
+ case MEM:
+ return Z_MEM_ERROR;
+ case SYNC:
++ /* fallthrough */
+ default:
+ return Z_STREAM_ERROR;
+ }
+@@ -1265,7 +1289,7 @@ int flush;
+ state->total += out;
+ if ((state->wrap & 4) && out)
+ strm->adler = state->check =
+- UPDATE(state->check, strm->next_out - out, out);
++ UPDATE_CHECK(state->check, strm->next_out - out, out);
+ strm->data_type = (int)state->bits + (state->last ? 64 : 0) +
+ (state->mode == TYPE ? 128 : 0) +
+ (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0);
+@@ -1401,6 +1425,7 @@ int ZEXPORT inflateSync(strm)
+ z_streamp strm;
+ {
+ unsigned len; /* number of bytes to look at or looked at */
++ int flags; /* temporary to save header status */
+ unsigned long in, out; /* temporary to save total_in and total_out */
+ unsigned char buf[4]; /* to restore bit buffer to byte string */
+ struct inflate_state FAR *state;
+@@ -1433,9 +1458,15 @@ z_streamp strm;
+
+ /* return no joy or set up to restart inflate() on a new block */
+ if (state->have != 4) return Z_DATA_ERROR;
++ if (state->flags == -1)
++ state->wrap = 0; /* if no header yet, treat as raw */
++ else
++ state->wrap &= ~4; /* no point in computing a check value now */
++ flags = state->flags;
+ in = strm->total_in; out = strm->total_out;
+ inflateReset(strm);
+ strm->total_in = in; strm->total_out = out;
++ state->flags = flags;
+ state->mode = TYPE;
+ return Z_OK;
+ }
+@@ -1531,7 +1562,7 @@ int check;
+
+ if (inflateStateCheck(strm)) return Z_STREAM_ERROR;
+ state = (struct inflate_state FAR *)strm->state;
+- if (check)
++ if (check && state->wrap)
+ state->wrap |= 4;
+ else
+ state->wrap &= ~4;
+diff --git a/src/3rdparty/zlib/src/inflate.h b/src/3rdparty/zlib/src/inflate.h
+index a46cce6b6d..f127b6b1fa 100644
+--- a/src/3rdparty/zlib/src/inflate.h
++++ b/src/3rdparty/zlib/src/inflate.h
+@@ -1,5 +1,5 @@
+ /* inflate.h -- internal inflate state definition
+- * Copyright (C) 1995-2016 Mark Adler
++ * Copyright (C) 1995-2019 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+@@ -86,7 +86,8 @@ struct inflate_state {
+ int wrap; /* bit 0 true for zlib, bit 1 true for gzip,
+ bit 2 true to validate check value */
+ int havedict; /* true if dictionary provided */
+- int flags; /* gzip header method and flags (0 if zlib) */
++ int flags; /* gzip header method and flags, 0 if zlib, or
++ -1 if raw or no header yet */
+ unsigned dmax; /* zlib header max distance (INFLATE_STRICT) */
+ unsigned long check; /* protected copy of check value */
+ unsigned long total; /* protected copy of output count */
+diff --git a/src/3rdparty/zlib/src/inftrees.c b/src/3rdparty/zlib/src/inftrees.c
+index 2ea08fc13e..09462a740b 100644
+--- a/src/3rdparty/zlib/src/inftrees.c
++++ b/src/3rdparty/zlib/src/inftrees.c
+@@ -1,5 +1,5 @@
+ /* inftrees.c -- generate Huffman trees for efficient decoding
+- * Copyright (C) 1995-2017 Mark Adler
++ * Copyright (C) 1995-2022 Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+@@ -9,7 +9,7 @@
+ #define MAXBITS 15
+
+ const char inflate_copyright[] =
+- " inflate 1.2.11 Copyright 1995-2017 Mark Adler ";
++ " inflate 1.2.12 Copyright 1995-2022 Mark Adler ";
+ /*
+ If you use the zlib library in a product, an acknowledgment is welcome
+ in the documentation of your product. If for some reason you cannot
+@@ -62,7 +62,7 @@ unsigned short FAR *work;
+ 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
+ static const unsigned short lext[31] = { /* Length codes 257..285 extra */
+ 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
+- 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 77, 202};
++ 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 199, 202};
+ static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
+ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
+ 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
+diff --git a/src/3rdparty/zlib/src/trees.c b/src/3rdparty/zlib/src/trees.c
+index 50cf4b4571..f73fd99c37 100644
+--- a/src/3rdparty/zlib/src/trees.c
++++ b/src/3rdparty/zlib/src/trees.c
+@@ -1,5 +1,5 @@
+ /* trees.c -- output deflated data using Huffman coding
+- * Copyright (C) 1995-2017 Jean-loup Gailly
++ * Copyright (C) 1995-2021 Jean-loup Gailly
+ * detect_data_type() function provided freely by Cosmin Truta, 2006
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+@@ -149,7 +149,7 @@ local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes,
+ local void compress_block OF((deflate_state *s, const ct_data *ltree,
+ const ct_data *dtree));
+ local int detect_data_type OF((deflate_state *s));
+-local unsigned bi_reverse OF((unsigned value, int length));
++local unsigned bi_reverse OF((unsigned code, int len));
+ local void bi_windup OF((deflate_state *s));
+ local void bi_flush OF((deflate_state *s));
+
+@@ -416,7 +416,7 @@ local void init_block(s)
+
+ s->dyn_ltree[END_BLOCK].Freq = 1;
+ s->opt_len = s->static_len = 0L;
+- s->last_lit = s->matches = 0;
++ s->sym_next = s->matches = 0;
+ }
+
+ #define SMALLEST 1
+@@ -870,7 +870,8 @@ void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last)
+ bi_windup(s); /* align on byte boundary */
+ put_short(s, (ush)stored_len);
+ put_short(s, (ush)~stored_len);
+- zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len);
++ if (stored_len)
++ zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len);
+ s->pending += stored_len;
+ #ifdef ZLIB_DEBUG
+ s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L;
+@@ -947,7 +948,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
+
+ Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
+ opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
+- s->last_lit));
++ s->sym_next / 3));
+
+ if (static_lenb <= opt_lenb) opt_lenb = static_lenb;
+
+@@ -1016,8 +1017,9 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
+ unsigned dist; /* distance of matched string */
+ unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */
+ {
+- s->d_buf[s->last_lit] = (ush)dist;
+- s->l_buf[s->last_lit++] = (uch)lc;
++ s->sym_buf[s->sym_next++] = dist;
++ s->sym_buf[s->sym_next++] = dist >> 8;
++ s->sym_buf[s->sym_next++] = lc;
+ if (dist == 0) {
+ /* lc is the unmatched char */
+ s->dyn_ltree[lc].Freq++;
+@@ -1032,30 +1034,7 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
+ s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++;
+ s->dyn_dtree[d_code(dist)].Freq++;
+ }
+-
+-#ifdef TRUNCATE_BLOCK
+- /* Try to guess if it is profitable to stop the current block here */
+- if ((s->last_lit & 0x1fff) == 0 && s->level > 2) {
+- /* Compute an upper bound for the compressed length */
+- ulg out_length = (ulg)s->last_lit*8L;
+- ulg in_length = (ulg)((long)s->strstart - s->block_start);
+- int dcode;
+- for (dcode = 0; dcode < D_CODES; dcode++) {
+- out_length += (ulg)s->dyn_dtree[dcode].Freq *
+- (5L+extra_dbits[dcode]);
+- }
+- out_length >>= 3;
+- Tracev((stderr,"\nlast_lit %u, in %ld, out ~%ld(%ld%%) ",
+- s->last_lit, in_length, out_length,
+- 100L - out_length*100L/in_length));
+- if (s->matches < s->last_lit/2 && out_length < in_length/2) return 1;
+- }
+-#endif
+- return (s->last_lit == s->lit_bufsize-1);
+- /* We avoid equality with lit_bufsize because of wraparound at 64K
+- * on 16 bit machines and because stored blocks are restricted to
+- * 64K-1 bytes.
+- */
++ return (s->sym_next == s->sym_end);
+ }
+
+ /* ===========================================================================
+@@ -1068,13 +1047,14 @@ local void compress_block(s, ltree, dtree)
+ {
+ unsigned dist; /* distance of matched string */
+ int lc; /* match length or unmatched char (if dist == 0) */
+- unsigned lx = 0; /* running index in l_buf */
++ unsigned sx = 0; /* running index in sym_buf */
+ unsigned code; /* the code to send */
+ int extra; /* number of extra bits to send */
+
+- if (s->last_lit != 0) do {
+- dist = s->d_buf[lx];
+- lc = s->l_buf[lx++];
++ if (s->sym_next != 0) do {
++ dist = s->sym_buf[sx++] & 0xff;
++ dist += (unsigned)(s->sym_buf[sx++] & 0xff) << 8;
++ lc = s->sym_buf[sx++];
+ if (dist == 0) {
+ send_code(s, lc, ltree); /* send a literal byte */
+ Tracecv(isgraph(lc), (stderr," '%c' ", lc));
+@@ -1099,11 +1079,10 @@ local void compress_block(s, ltree, dtree)
+ }
+ } /* literal or match pair ? */
+
+- /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */
+- Assert((uInt)(s->pending) < s->lit_bufsize + 2*lx,
+- "pendingBuf overflow");
++ /* Check that the overlay between pending_buf and sym_buf is ok: */
++ Assert(s->pending < s->lit_bufsize + sx, "pendingBuf overflow");
+
+- } while (lx < s->last_lit);
++ } while (sx < s->sym_next);
+
+ send_code(s, END_BLOCK, ltree);
+ }
+@@ -1112,9 +1091,9 @@ local void compress_block(s, ltree, dtree)
+ * Check if the data type is TEXT or BINARY, using the following algorithm:
+ * - TEXT if the two conditions below are satisfied:
+ * a) There are no non-portable control characters belonging to the
+- * "black list" (0..6, 14..25, 28..31).
++ * "block list" (0..6, 14..25, 28..31).
+ * b) There is at least one printable character belonging to the
+- * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
++ * "allow list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
+ * - BINARY otherwise.
+ * - The following partially-portable control characters form a
+ * "gray list" that is ignored in this detection algorithm:
+@@ -1124,19 +1103,19 @@ local void compress_block(s, ltree, dtree)
+ local int detect_data_type(s)
+ deflate_state *s;
+ {
+- /* black_mask is the bit mask of black-listed bytes
++ /* block_mask is the bit mask of block-listed bytes
+ * set bits 0..6, 14..25, and 28..31
+ * 0xf3ffc07f = binary 11110011111111111100000001111111
+ */
+- unsigned long black_mask = 0xf3ffc07fUL;
++ unsigned long block_mask = 0xf3ffc07fUL;
+ int n;
+
+- /* Check for non-textual ("black-listed") bytes. */
+- for (n = 0; n <= 31; n++, black_mask >>= 1)
+- if ((black_mask & 1) && (s->dyn_ltree[n].Freq != 0))
++ /* Check for non-textual ("block-listed") bytes. */
++ for (n = 0; n <= 31; n++, block_mask >>= 1)
++ if ((block_mask & 1) && (s->dyn_ltree[n].Freq != 0))
+ return Z_BINARY;
+
+- /* Check for textual ("white-listed") bytes. */
++ /* Check for textual ("allow-listed") bytes. */
+ if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0
+ || s->dyn_ltree[13].Freq != 0)
+ return Z_TEXT;
+@@ -1144,7 +1123,7 @@ local int detect_data_type(s)
+ if (s->dyn_ltree[n].Freq != 0)
+ return Z_TEXT;
+
+- /* There are no "black-listed" or "white-listed" bytes:
++ /* There are no "block-listed" or "allow-listed" bytes:
+ * this stream either is empty or has tolerated ("gray-listed") bytes only.
+ */
+ return Z_BINARY;
+diff --git a/src/3rdparty/zlib/src/zlib.h b/src/3rdparty/zlib/src/zlib.h
+index 32c2ce0957..84087ef332 100644
+--- a/src/3rdparty/zlib/src/zlib.h
++++ b/src/3rdparty/zlib/src/zlib.h
+@@ -1,7 +1,7 @@
+ /* zlib.h -- interface of the 'zlib' general purpose compression library
+- version 1.2.11, January 15th, 2017
++ version 1.2.12, March 11th, 2022
+
+- Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
++ Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler
+
+ This software is provided 'as-is', without any express or implied
+ warranty. In no event will the authors be held liable for any damages
+@@ -41,11 +41,11 @@
+ extern "C" {
+ #endif
+
+-#define ZLIB_VERSION "1.2.11 (Qt)"
+-#define ZLIB_VERNUM 0x12b0f
++#define ZLIB_VERSION "1.2.12 (Qt)"
++#define ZLIB_VERNUM 0x12c0
+ #define ZLIB_VER_MAJOR 1
+ #define ZLIB_VER_MINOR 2
+-#define ZLIB_VER_REVISION 11
++#define ZLIB_VER_REVISION 12
+ #define ZLIB_VER_SUBREVISION 0
+
+ /*
+@@ -547,8 +547,7 @@ ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
+ int strategy));
+
+ This is another version of deflateInit with more compression options. The
+- fields next_in, zalloc, zfree and opaque must be initialized before by the
+- caller.
++ fields zalloc, zfree and opaque must be initialized before by the caller.
+
+ The method parameter is the compression method. It must be Z_DEFLATED in
+ this version of the library.
+@@ -716,11 +715,12 @@ ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
+ used to switch between compression and straight copy of the input data, or
+ to switch to a different kind of input data requiring a different strategy.
+ If the compression approach (which is a function of the level) or the
+- strategy is changed, and if any input has been consumed in a previous
+- deflate() call, then the input available so far is compressed with the old
+- level and strategy using deflate(strm, Z_BLOCK). There are three approaches
+- for the compression levels 0, 1..3, and 4..9 respectively. The new level
+- and strategy will take effect at the next call of deflate().
++ strategy is changed, and if there have been any deflate() calls since the
++ state was initialized or reset, then the input available so far is
++ compressed with the old level and strategy using deflate(strm, Z_BLOCK).
++ There are three approaches for the compression levels 0, 1..3, and 4..9
++ respectively. The new level and strategy will take effect at the next call
++ of deflate().
+
+ If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does
+ not have enough output space to complete, then the parameter change will not
+@@ -869,9 +869,11 @@ ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
+ detection, or add 16 to decode only the gzip format (the zlib format will
+ return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a
+ CRC-32 instead of an Adler-32. Unlike the gunzip utility and gzread() (see
+- below), inflate() will not automatically decode concatenated gzip streams.
+- inflate() will return Z_STREAM_END at the end of the gzip stream. The state
+- would need to be reset to continue decoding a subsequent gzip stream.
++ below), inflate() will *not* automatically decode concatenated gzip members.
++ inflate() will return Z_STREAM_END at the end of the gzip member. The state
++ would need to be reset to continue decoding a subsequent gzip member. This
++ *must* be done if there is more data after a gzip member, in order for the
++ decompression to be compliant with the gzip standard (RFC 1952).
+
+ inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
+ memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
+@@ -1306,14 +1308,14 @@ typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */
+ /*
+ ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
+
+- Opens a gzip (.gz) file for reading or writing. The mode parameter is as
+- in fopen ("rb" or "wb") but can also include a compression level ("wb9") or
+- a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only
+- compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F'
+- for fixed code compression as in "wb9F". (See the description of
+- deflateInit2 for more information about the strategy parameter.) 'T' will
+- request transparent writing or appending with no compression and not using
+- the gzip format.
++ Open the gzip (.gz) file at path for reading and decompressing, or
++ compressing and writing. The mode parameter is as in fopen ("rb" or "wb")
++ but can also include a compression level ("wb9") or a strategy: 'f' for
++ filtered data as in "wb6f", 'h' for Huffman-only compression as in "wb1h",
++ 'R' for run-length encoding as in "wb1R", or 'F' for fixed code compression
++ as in "wb9F". (See the description of deflateInit2 for more information
++ about the strategy parameter.) 'T' will request transparent writing or
++ appending with no compression and not using the gzip format.
+
+ "a" can be used instead of "w" to request that the gzip stream that will
+ be written be appended to the file. "+" will result in an error, since
+@@ -1343,9 +1345,9 @@ ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
+
+ ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
+ /*
+- gzdopen associates a gzFile with the file descriptor fd. File descriptors
+- are obtained from calls like open, dup, creat, pipe or fileno (if the file
+- has been previously opened with fopen). The mode parameter is as in gzopen.
++ Associate a gzFile with the file descriptor fd. File descriptors are
++ obtained from calls like open, dup, creat, pipe or fileno (if the file has
++ been previously opened with fopen). The mode parameter is as in gzopen.
+
+ The next call of gzclose on the returned gzFile will also close the file
+ descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor
+@@ -1366,13 +1368,13 @@ ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
+
+ ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
+ /*
+- Set the internal buffer size used by this library's functions. The
+- default buffer size is 8192 bytes. This function must be called after
+- gzopen() or gzdopen(), and before any other calls that read or write the
+- file. The buffer memory allocation is always deferred to the first read or
+- write. Three times that size in buffer space is allocated. A larger buffer
+- size of, for example, 64K or 128K bytes will noticeably increase the speed
+- of decompression (reading).
++ Set the internal buffer size used by this library's functions for file to
++ size. The default buffer size is 8192 bytes. This function must be called
++ after gzopen() or gzdopen(), and before any other calls that read or write
++ the file. The buffer memory allocation is always deferred to the first read
++ or write. Three times that size in buffer space is allocated. A larger
++ buffer size of, for example, 64K or 128K bytes will noticeably increase the
++ speed of decompression (reading).
+
+ The new buffer size also affects the maximum length for gzprintf().
+
+@@ -1382,9 +1384,9 @@ ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size));
+
+ ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
+ /*
+- Dynamically update the compression level or strategy. See the description
+- of deflateInit2 for the meaning of these parameters. Previously provided
+- data is flushed before the parameter change.
++ Dynamically update the compression level and strategy for file. See the
++ description of deflateInit2 for the meaning of these parameters. Previously
++ provided data is flushed before applying the parameter changes.
+
+ gzsetparams returns Z_OK if success, Z_STREAM_ERROR if the file was not
+ opened for writing, Z_ERRNO if there is an error writing the flushed data,
+@@ -1393,7 +1395,7 @@ ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
+
+ ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
+ /*
+- Reads the given number of uncompressed bytes from the compressed file. If
++ Read and decompress up to len uncompressed bytes from file into buf. If
+ the input file is not in gzip format, gzread copies the given number of
+ bytes into the buffer directly from the file.
+
+@@ -1424,11 +1426,11 @@ ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
+ ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems,
+ gzFile file));
+ /*
+- Read up to nitems items of size size from file to buf, otherwise operating
+- as gzread() does. This duplicates the interface of stdio's fread(), with
+- size_t request and return types. If the library defines size_t, then
+- z_size_t is identical to size_t. If not, then z_size_t is an unsigned
+- integer type that can contain a pointer.
++ Read and decompress up to nitems items of size size from file into buf,
++ otherwise operating as gzread() does. This duplicates the interface of
++ stdio's fread(), with size_t request and return types. If the library
++ defines size_t, then z_size_t is identical to size_t. If not, then z_size_t
++ is an unsigned integer type that can contain a pointer.
+
+ gzfread() returns the number of full items read of size size, or zero if
+ the end of the file was reached and a full item could not be read, or if
+@@ -1447,18 +1449,16 @@ ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems,
+ file, reseting and retrying on end-of-file, when size is not 1.
+ */
+
+-ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
+- voidpc buf, unsigned len));
++ZEXTERN int ZEXPORT gzwrite OF((gzFile file, voidpc buf, unsigned len));
+ /*
+- Writes the given number of uncompressed bytes into the compressed file.
+- gzwrite returns the number of uncompressed bytes written or 0 in case of
+- error.
++ Compress and write the len uncompressed bytes at buf to file. gzwrite
++ returns the number of uncompressed bytes written or 0 in case of error.
+ */
+
+ ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size,
+ z_size_t nitems, gzFile file));
+ /*
+- gzfwrite() writes nitems items of size size from buf to file, duplicating
++ Compress and write nitems items of size size from buf to file, duplicating
+ the interface of stdio's fwrite(), with size_t request and return types. If
+ the library defines size_t, then z_size_t is identical to size_t. If not,
+ then z_size_t is an unsigned integer type that can contain a pointer.
+@@ -1471,22 +1471,22 @@ ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size,
+
+ ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...));
+ /*
+- Converts, formats, and writes the arguments to the compressed file under
+- control of the format string, as in fprintf. gzprintf returns the number of
++ Convert, format, compress, and write the arguments (...) to file under
++ control of the string format, as in fprintf. gzprintf returns the number of
+ uncompressed bytes actually written, or a negative zlib error code in case
+ of error. The number of uncompressed bytes written is limited to 8191, or
+ one less than the buffer size given to gzbuffer(). The caller should assure
+ that this limit is not exceeded. If it is exceeded, then gzprintf() will
+ return an error (0) with nothing written. In this case, there may also be a
+ buffer overflow with unpredictable consequences, which is possible only if
+- zlib was compiled with the insecure functions sprintf() or vsprintf()
++ zlib was compiled with the insecure functions sprintf() or vsprintf(),
+ because the secure snprintf() or vsnprintf() functions were not available.
+ This can be determined using zlibCompileFlags().
+ */
+
+ ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
+ /*
+- Writes the given null-terminated string to the compressed file, excluding
++ Compress and write the given null-terminated string s to file, excluding
+ the terminating null character.
+
+ gzputs returns the number of characters written, or -1 in case of error.
+@@ -1494,11 +1494,12 @@ ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
+
+ ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
+ /*
+- Reads bytes from the compressed file until len-1 characters are read, or a
+- newline character is read and transferred to buf, or an end-of-file
+- condition is encountered. If any characters are read or if len == 1, the
+- string is terminated with a null character. If no characters are read due
+- to an end-of-file or len < 1, then the buffer is left untouched.
++ Read and decompress bytes from file into buf, until len-1 characters are
++ read, or until a newline character is read and transferred to buf, or an
++ end-of-file condition is encountered. If any characters are read or if len
++ is one, the string is terminated with a null character. If no characters
++ are read due to an end-of-file or len is less than one, then the buffer is
++ left untouched.
+
+ gzgets returns buf which is a null-terminated string, or it returns NULL
+ for end-of-file or in case of error. If there was an error, the contents at
+@@ -1507,13 +1508,13 @@ ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
+
+ ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
+ /*
+- Writes c, converted to an unsigned char, into the compressed file. gzputc
++ Compress and write c, converted to an unsigned char, into file. gzputc
+ returns the value that was written, or -1 in case of error.
+ */
+
+ ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
+ /*
+- Reads one byte from the compressed file. gzgetc returns this byte or -1
++ Read and decompress one byte from file. gzgetc returns this byte or -1
+ in case of end of file or error. This is implemented as a macro for speed.
+ As such, it does not do all of the checking the other functions do. I.e.
+ it does not check to see if file is NULL, nor whether the structure file
+@@ -1522,8 +1523,8 @@ ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
+
+ ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
+ /*
+- Push one character back onto the stream to be read as the first character
+- on the next read. At least one character of push-back is allowed.
++ Push c back onto the stream for file to be read as the first character on
++ the next read. At least one character of push-back is always allowed.
+ gzungetc() returns the character pushed, or -1 on failure. gzungetc() will
+ fail if c is -1, and may fail if a character has been pushed but not read
+ yet. If gzungetc is used immediately after gzopen or gzdopen, at least the
+@@ -1534,9 +1535,9 @@ ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file));
+
+ ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
+ /*
+- Flushes all pending output into the compressed file. The parameter flush
+- is as in the deflate() function. The return value is the zlib error number
+- (see function gzerror below). gzflush is only permitted when writing.
++ Flush all pending output to file. The parameter flush is as in the
++ deflate() function. The return value is the zlib error number (see function
++ gzerror below). gzflush is only permitted when writing.
+
+ If the flush parameter is Z_FINISH, the remaining data is written and the
+ gzip stream is completed in the output. If gzwrite() is called again, a new
+@@ -1551,8 +1552,8 @@ ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
+ ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
+ z_off_t offset, int whence));
+
+- Sets the starting position for the next gzread or gzwrite on the given
+- compressed file. The offset represents a number of bytes in the
++ Set the starting position to offset relative to whence for the next gzread
++ or gzwrite on file. The offset represents a number of bytes in the
+ uncompressed data stream. The whence parameter is defined as in lseek(2);
+ the value SEEK_END is not supported.
+
+@@ -1569,18 +1570,18 @@ ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
+
+ ZEXTERN int ZEXPORT gzrewind OF((gzFile file));
+ /*
+- Rewinds the given file. This function is supported only for reading.
++ Rewind file. This function is supported only for reading.
+
+- gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
++ gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET).
+ */
+
+ /*
+ ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
+
+- Returns the starting position for the next gzread or gzwrite on the given
+- compressed file. This position represents a number of bytes in the
+- uncompressed data stream, and is zero when starting, even if appending or
+- reading a gzip stream from the middle of a file using gzdopen().
++ Return the starting position for the next gzread or gzwrite on file.
++ This position represents a number of bytes in the uncompressed data stream,
++ and is zero when starting, even if appending or reading a gzip stream from
++ the middle of a file using gzdopen().
+
+ gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
+ */
+@@ -1588,22 +1589,22 @@ ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
+ /*
+ ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file));
+
+- Returns the current offset in the file being read or written. This offset
+- includes the count of bytes that precede the gzip stream, for example when
+- appending or when using gzdopen() for reading. When reading, the offset
+- does not include as yet unused buffered input. This information can be used
+- for a progress indicator. On error, gzoffset() returns -1.
++ Return the current compressed (actual) read or write offset of file. This
++ offset includes the count of bytes that precede the gzip stream, for example
++ when appending or when using gzdopen() for reading. When reading, the
++ offset does not include as yet unused buffered input. This information can
++ be used for a progress indicator. On error, gzoffset() returns -1.
+ */
+
+ ZEXTERN int ZEXPORT gzeof OF((gzFile file));
+ /*
+- Returns true (1) if the end-of-file indicator has been set while reading,
+- false (0) otherwise. Note that the end-of-file indicator is set only if the
+- read tried to go past the end of the input, but came up short. Therefore,
+- just like feof(), gzeof() may return false even if there is no more data to
+- read, in the event that the last read request was for the exact number of
+- bytes remaining in the input file. This will happen if the input file size
+- is an exact multiple of the buffer size.
++ Return true (1) if the end-of-file indicator for file has been set while
++ reading, false (0) otherwise. Note that the end-of-file indicator is set
++ only if the read tried to go past the end of the input, but came up short.
++ Therefore, just like feof(), gzeof() may return false even if there is no
++ more data to read, in the event that the last read request was for the exact
++ number of bytes remaining in the input file. This will happen if the input
++ file size is an exact multiple of the buffer size.
+
+ If gzeof() returns true, then the read functions will return no more data,
+ unless the end-of-file indicator is reset by gzclearerr() and the input file
+@@ -1612,7 +1613,7 @@ ZEXTERN int ZEXPORT gzeof OF((gzFile file));
+
+ ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
+ /*
+- Returns true (1) if file is being copied directly while reading, or false
++ Return true (1) if file is being copied directly while reading, or false
+ (0) if file is a gzip stream being decompressed.
+
+ If the input file is empty, gzdirect() will return true, since the input
+@@ -1633,8 +1634,8 @@ ZEXTERN int ZEXPORT gzdirect OF((gzFile file));
+
+ ZEXTERN int ZEXPORT gzclose OF((gzFile file));
+ /*
+- Flushes all pending output if necessary, closes the compressed file and
+- deallocates the (de)compression state. Note that once file is closed, you
++ Flush all pending output for file, if necessary, close file and
++ deallocate the (de)compression state. Note that once file is closed, you
+ cannot call gzerror with file, since its structures have been deallocated.
+ gzclose must not be called more than once on the same file, just as free
+ must not be called more than once on the same allocation.
+@@ -1658,10 +1659,10 @@ ZEXTERN int ZEXPORT gzclose_w OF((gzFile file));
+
+ ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
+ /*
+- Returns the error message for the last error which occurred on the given
+- compressed file. errnum is set to zlib error number. If an error occurred
+- in the file system and not in the compression library, errnum is set to
+- Z_ERRNO and the application may consult errno to get the exact error code.
++ Return the error message for the last error which occurred on file.
++ errnum is set to zlib error number. If an error occurred in the file system
++ and not in the compression library, errnum is set to Z_ERRNO and the
++ application may consult errno to get the exact error code.
+
+ The application must not modify the returned string. Future calls to
+ this function may invalidate the previously returned string. If file is
+@@ -1674,7 +1675,7 @@ ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
+
+ ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
+ /*
+- Clears the error and end-of-file flags for file. This is analogous to the
++ Clear the error and end-of-file flags for file. This is analogous to the
+ clearerr() function in stdio. This is useful for continuing to read a gzip
+ file that is being written concurrently.
+ */
+@@ -1692,8 +1693,9 @@ ZEXTERN void ZEXPORT gzclearerr OF((gzFile file));
+ ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
+ /*
+ Update a running Adler-32 checksum with the bytes buf[0..len-1] and
+- return the updated checksum. If buf is Z_NULL, this function returns the
+- required initial value for the checksum.
++ return the updated checksum. An Adler-32 value is in the range of a 32-bit
++ unsigned integer. If buf is Z_NULL, this function returns the required
++ initial value for the checksum.
+
+ An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed
+ much faster.
+@@ -1726,12 +1728,13 @@ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2,
+ negative, the result has no meaning or utility.
+ */
+
+-ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
++ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
+ /*
+ Update a running CRC-32 with the bytes buf[0..len-1] and return the
+- updated CRC-32. If buf is Z_NULL, this function returns the required
+- initial value for the crc. Pre- and post-conditioning (one's complement) is
+- performed within this function so it shouldn't be done by the application.
++ updated CRC-32. A CRC-32 value is in the range of a 32-bit unsigned integer.
++ If buf is Z_NULL, this function returns the required initial value for the
++ crc. Pre- and post-conditioning (one's complement) is performed within this
++ function so it shouldn't be done by the application.
+
+ Usage example:
+
+@@ -1743,7 +1746,7 @@ ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
+ if (crc != original_crc) error();
+ */
+
+-ZEXTERN uLong ZEXPORT crc32_z OF((uLong adler, const Bytef *buf,
++ZEXTERN uLong ZEXPORT crc32_z OF((uLong crc, const Bytef *buf,
+ z_size_t len));
+ /*
+ Same as crc32(), but with a size_t length.
+@@ -1759,6 +1762,20 @@ ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2));
+ len2.
+ */
+
++/*
++ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t len2));
++
++ Return the operator corresponding to length len2, to be used with
++ crc32_combine_op().
++*/
++
++ZEXTERN uLong ZEXPORT crc32_combine_op OF((uLong crc1, uLong crc2, uLong op));
++/*
++ Give the same result as crc32_combine(), using op in place of len2. op is
++ is generated from len2 by crc32_combine_gen(). This will be faster than
++ crc32_combine() if the generated op is used more than once.
++*/
++
+
+ /* various hacks, don't look :) */
+
+@@ -1846,6 +1863,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
+ ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile));
+ ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t));
+ ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t));
++ ZEXTERN uLong ZEXPORT crc32_combine_gen64 OF((z_off64_t));
+ #endif
+
+ #if !defined(ZLIB_INTERNAL) && defined(Z_WANT64)
+@@ -1856,6 +1874,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
+ # define z_gzoffset z_gzoffset64
+ # define z_adler32_combine z_adler32_combine64
+ # define z_crc32_combine z_crc32_combine64
++# define z_crc32_combine_gen z_crc32_combine_gen64
+ # else
+ # define gzopen gzopen64
+ # define gzseek gzseek64
+@@ -1863,6 +1882,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
+ # define gzoffset gzoffset64
+ # define adler32_combine adler32_combine64
+ # define crc32_combine crc32_combine64
++# define crc32_combine_gen crc32_combine_gen64
+ # endif
+ # ifndef Z_LARGE64
+ ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *));
+@@ -1871,6 +1891,7 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
+ ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile));
+ ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t));
++ ZEXTERN uLong ZEXPORT crc32_combine_gen64 OF((z_off_t));
+ # endif
+ #else
+ ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *));
+@@ -1879,12 +1900,14 @@ ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */
+ ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile));
+ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
++ ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t));
+ #endif
+
+ #else /* Z_SOLO */
+
+ ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t));
+ ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t));
++ ZEXTERN uLong ZEXPORT crc32_combine_gen OF((z_off_t));
+
+ #endif /* !Z_SOLO */
+
+@@ -1897,7 +1920,7 @@ ZEXTERN int ZEXPORT inflateValidate OF((z_streamp, int));
+ ZEXTERN unsigned long ZEXPORT inflateCodesUsed OF ((z_streamp));
+ ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp));
+ ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp));
+-#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(Z_SOLO)
++#if defined(_WIN32) && !defined(Z_SOLO)
+ ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path,
+ const char *mode));
+ #endif
+diff --git a/src/3rdparty/zlib/src/zutil.c b/src/3rdparty/zlib/src/zutil.c
+index a76c6b0c7e..dcab28a0d5 100644
+--- a/src/3rdparty/zlib/src/zutil.c
++++ b/src/3rdparty/zlib/src/zutil.c
+@@ -136,8 +136,8 @@ const char * ZEXPORT zError(err)
+ return ERR_MSG(err);
+ }
+
+-#if defined(_WIN32_WCE)
+- /* The Microsoft C Run-Time Library for Windows CE doesn't have
++#if defined(_WIN32_WCE) && _WIN32_WCE < 0x800
++ /* The older Microsoft C Run-Time Library for Windows CE doesn't have
+ * errno. We define it as a global variable to simplify porting.
+ * Its value is always 0 and should not be used.
+ */
+diff --git a/src/3rdparty/zlib/src/zutil.h b/src/3rdparty/zlib/src/zutil.h
+index 38066137fc..0d78483358 100644
+--- a/src/3rdparty/zlib/src/zutil.h
++++ b/src/3rdparty/zlib/src/zutil.h
+@@ -1,5 +1,5 @@
+ /* zutil.h -- internal interface and configuration of the compression library
+- * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
++ * Copyright (C) 1995-2022 Jean-loup Gailly, Mark Adler
+ * For conditions of distribution and use, see copyright notice in zlib.h
+ */
+
+@@ -21,7 +21,6 @@
+ #define HAVE_HIDDEN
+ #endif
+
+-
+ #ifdef HAVE_HIDDEN
+ # define ZLIB_INTERNAL __attribute__((visibility ("hidden")))
+ #else
+@@ -38,10 +37,6 @@
+ # include <stdlib.h>
+ #endif
+
+-#ifdef Z_SOLO
+- typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */
+-#endif
+-
+ #ifndef local
+ # define local static
+ #endif
+@@ -55,6 +50,17 @@ typedef unsigned short ush;
+ typedef ush FAR ushf;
+ typedef unsigned long ulg;
+
++#if !defined(Z_U8) && !defined(Z_SOLO) && defined(STDC)
++# include <limits.h>
++# if (ULONG_MAX == 0xffffffffffffffff)
++# define Z_U8 unsigned long
++# elif (ULLONG_MAX == 0xffffffffffffffff)
++# define Z_U8 unsigned long long
++# elif (UINT_MAX == 0xffffffffffffffff)
++# define Z_U8 unsigned
++# endif
++#endif
++
+ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
+ /* (size given to avoid silly warnings with Visual C++) */
+
+@@ -184,10 +190,6 @@ extern z_const char * const z_errmsg[10]; /* indexed by 2-zlib_error */
+ #if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX
+ # if defined(_WIN32_WCE)
+ # define fdopen(fd,mode) NULL /* No fdopen() */
+-# ifndef _PTRDIFF_T_DEFINED
+- typedef int ptrdiff_t;
+-# define _PTRDIFF_T_DEFINED
+-# endif
+ # else
+ # define fdopen(fd,type) _fdopen(fd,type)
+ # endif
+--
+2.36.0
+
+From 92a38db9d628428cec0aa36ad7e0307935e55490 Mon Sep 17 00:00:00 2001
+From: Noah Davis <noahadvs@gmail.com>
+Date: Wed, 9 Feb 2022 10:29:33 -0500
+Subject: [PATCH 125/146] QPA: add ButtonPressKeys ThemeHint
+
+Platforms should allow more than just Qt::Key_Space and Qt::Key_Select
+to press buttons. KDE Plasma developers want to be able to press buttons
+with Return/Enter. GTK allows buttons to be pressed with Return/Enter,
+so this should be considered the native behavior for GNOME as well.
+Adding this ThemeHint allows customizing the keys that can press a
+button via a QPlatformTheme subclass.
+
+Change-Id: I73284e9b73590fbdd0b94a0cb4557e94b3722af9
+Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
+(cherry picked from commit 97eeded5fc8c8ebb476ed4a10d8726dd4d46f181)
+---
+ src/gui/kernel/qplatformtheme.cpp | 4 ++++
+ src/gui/kernel/qplatformtheme.h | 3 ++-
+ 2 files changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/src/gui/kernel/qplatformtheme.cpp b/src/gui/kernel/qplatformtheme.cpp
+index 71521c0339..2325873245 100644
+--- a/src/gui/kernel/qplatformtheme.cpp
++++ b/src/gui/kernel/qplatformtheme.cpp
+@@ -163,6 +163,8 @@ QT_BEGIN_NAMESPACE
+
+ \value ShowShortcutsInContextMenus (bool) Whether to display shortcut key sequences in context menus.
+
++ \value ButtonPressKeys (QList<Qt::Key>) A list of keys that can be used to press buttons via keyboard input.
++
+ \sa themeHint(), QStyle::pixelMetric()
+ */
+
+@@ -563,6 +565,8 @@ QVariant QPlatformTheme::defaultThemeHint(ThemeHint hint)
+ }
+ case MouseQuickSelectionThreshold:
+ return QVariant(10);
++ case ButtonPressKeys:
++ return QVariant::fromValue(QList<Qt::Key>({ Qt::Key_Space, Qt::Key_Select }));
+ }
+ return QVariant();
+ }
+diff --git a/src/gui/kernel/qplatformtheme.h b/src/gui/kernel/qplatformtheme.h
+index 3185fc4541..7e6c9d5740 100644
+--- a/src/gui/kernel/qplatformtheme.h
++++ b/src/gui/kernel/qplatformtheme.h
+@@ -120,7 +120,8 @@ public:
+ TouchDoubleTapDistance,
+ ShowShortcutsInContextMenus,
+ IconFallbackSearchPaths,
+- MouseQuickSelectionThreshold
++ MouseQuickSelectionThreshold,
++ ButtonPressKeys
+ };
+
+ enum DialogType {
+--
+2.36.0
+
+From 181967b94173376558b65562f3497b1a40dd236f Mon Sep 17 00:00:00 2001
+From: Noah Davis <noahadvs@gmail.com>
+Date: Wed, 16 Feb 2022 08:50:08 -0500
+Subject: [PATCH 126/146] QGnomeTheme: Allow Space, Return, Enter and Select to
+ press buttons
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+GTK buttons can be pressed with Space, Return and Enter, so this should
+be considered native behavior for GTK based desktop environments.
+Qt::Key_Select is also included here because QAbstractButton has been
+pressable with Qt::Key_Select for a long time.
+
+Change-Id: I2c279ad05d1a10e5968a18996b8b40a83d2251fa
+Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
+(cherry picked from commit 43caaca740dd217c13764658d4c286c0d83381e4)
+---
+ src/platformsupport/themes/genericunix/qgenericunixthemes.cpp | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp
+index cb1b39db64..dafa3ec4da 100644
+--- a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp
++++ b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp
+@@ -731,6 +731,7 @@ QGnomeTheme::QGnomeTheme()
+
+ QVariant QGnomeTheme::themeHint(QPlatformTheme::ThemeHint hint) const
+ {
++ Q_D(const QGnomeTheme);
+ switch (hint) {
+ case QPlatformTheme::DialogButtonBoxButtonsHaveIcons:
+ return QVariant(true);
+@@ -755,6 +756,9 @@ QVariant QGnomeTheme::themeHint(QPlatformTheme::ThemeHint hint) const
+ return QVariant(QChar(0x2022));
+ case QPlatformTheme::UiEffects:
+ return QVariant(int(HoverEffect));
++ case QPlatformTheme::ButtonPressKeys:
++ return QVariant::fromValue(
++ QList<Qt::Key>({ Qt::Key_Space, Qt::Key_Return, Qt::Key_Enter, Qt::Key_Select }));
+ default:
+ break;
+ }
+--
+2.36.0
+
+From 0dbc1c8511b5bef3a9713ba21a6fff006472c166 Mon Sep 17 00:00:00 2001
+From: Noah Davis <noahadvs@gmail.com>
+Date: Thu, 17 Feb 2022 05:07:29 -0500
+Subject: [PATCH 127/146] QGnomeTheme: remove unneeded Q_D
+
+Change-Id: I3fcb1de9487bfdfab16bae5603fed09ef72e01ba
+Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
+Reviewed-by: Andreas Buhr <andreas.buhr@qt.io>
+(cherry picked from commit a792df2ace357e79c7ef765065564267c86d612d)
+---
+ src/platformsupport/themes/genericunix/qgenericunixthemes.cpp | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp
+index dafa3ec4da..6e01af052c 100644
+--- a/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp
++++ b/src/platformsupport/themes/genericunix/qgenericunixthemes.cpp
+@@ -731,7 +731,6 @@ QGnomeTheme::QGnomeTheme()
+
+ QVariant QGnomeTheme::themeHint(QPlatformTheme::ThemeHint hint) const
+ {
+- Q_D(const QGnomeTheme);
+ switch (hint) {
+ case QPlatformTheme::DialogButtonBoxButtonsHaveIcons:
+ return QVariant(true);
+--
+2.36.0
+
+From 9a5d60d88624e78131933827e06c2dcb3cde3040 Mon Sep 17 00:00:00 2001
+From: Noah Davis <noahadvs@gmail.com>
+Date: Thu, 17 Feb 2022 10:20:31 -0500
+Subject: [PATCH 128/146] testlib/qasciikey: Add keypad navigation keys
+
+Needed to prevent qasciikey.cpp from failing an assertion when
+Qt::Key_Select is used in tests.
+
+Change-Id: I56aa517e8f6f332636b3df106d7265677d1b33ee
+Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
+(cherry picked from commit bfcf47ab9dd49475c39fd966f4a80a0fd35c68c5)
+---
+ src/testlib/qasciikey.cpp | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/testlib/qasciikey.cpp b/src/testlib/qasciikey.cpp
+index 9a308da2bc..93498b256f 100644
+--- a/src/testlib/qasciikey.cpp
++++ b/src/testlib/qasciikey.cpp
+@@ -498,6 +498,11 @@ char QTest::keyToAscii(Qt::Key key)
+ case Qt::Key_LaunchE : return 0; // = 0x10b0,
+ case Qt::Key_LaunchF : return 0; // = 0x10b1,
+
++ // Keypad navigation keys
++ case Qt::Key_Select : return 0; // = 0x01010000
++ case Qt::Key_Yes : return 0; // = 0x01010001
++ case Qt::Key_No : return 0; // = 0x01010002
++
+ default: QTEST_ASSERT(false); return 0;
+ }
+ }
+--
+2.36.0
+
+From 8384dcd6324a5c7ea325162fa92953463e20905d Mon Sep 17 00:00:00 2001
+From: Noah Davis <noahadvs@gmail.com>
+Date: Wed, 9 Feb 2022 10:32:53 -0500
+Subject: [PATCH 129/146] Widgets: use QPlatformTheme::ButtonPressKeys for
+ pressing buttons
+
+QComboBox is included because it works like a button when it is not
+editable. QGroupBox is included because it has a checkbox and QCheckBox
+is a subclass of QAbstractButton.
+
+Change-Id: Iad89259314e77f78c915dce83ec601df94c88941
+Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
+(cherry picked from commit 64ffe0aacb6bba4875a9ccdeea96b5858c7d01e6)
+---
+ src/widgets/widgets/qabstractbutton.cpp | 43 ++++++++++---------
+ src/widgets/widgets/qcombobox.cpp | 33 +++++++-------
+ src/widgets/widgets/qgroupbox.cpp | 12 +++++-
+ .../qabstractbutton/tst_qabstractbutton.cpp | 32 +++++++++++++-
+ .../widgets/qcombobox/tst_qcombobox.cpp | 20 +++++++++
+ .../qcommandlinkbutton/qcommandlinkbutton.pro | 2 +-
+ .../tst_qcommandlinkbutton.cpp | 18 ++++++++
+ .../widgets/widgets/qgroupbox/qgroupbox.pro | 2 +-
+ .../widgets/qgroupbox/tst_qgroupbox.cpp | 18 ++++++++
+ .../widgets/qpushbutton/qpushbutton.pro | 2 +-
+ .../widgets/qpushbutton/tst_qpushbutton.cpp | 18 ++++++++
+ 11 files changed, 156 insertions(+), 44 deletions(-)
+
+diff --git a/src/widgets/widgets/qabstractbutton.cpp b/src/widgets/widgets/qabstractbutton.cpp
+index a128b23950..7be0858a58 100644
+--- a/src/widgets/widgets/qabstractbutton.cpp
++++ b/src/widgets/widgets/qabstractbutton.cpp
+@@ -56,6 +56,7 @@
+ #ifndef QT_NO_ACCESSIBILITY
+ #include "qaccessible.h"
+ #endif
++#include <qpa/qplatformtheme.h>
+
+ #include <algorithm>
+
+@@ -1076,19 +1077,19 @@ void QAbstractButton::keyPressEvent(QKeyEvent *e)
+ {
+ Q_D(QAbstractButton);
+ bool next = true;
+- switch (e->key()) {
+- case Qt::Key_Enter:
+- case Qt::Key_Return:
+- e->ignore();
+- break;
+- case Qt::Key_Select:
+- case Qt::Key_Space:
+- if (!e->isAutoRepeat()) {
+- setDown(true);
+- repaint();
+- d->emitPressed();
+- }
+- break;
++
++ const auto key = e->key();
++ const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme()
++ ->themeHint(QPlatformTheme::ButtonPressKeys)
++ .value<QList<Qt::Key>>();
++ if (buttonPressKeys.contains(key) && !e->isAutoRepeat()) {
++ setDown(true);
++ repaint();
++ d->emitPressed();
++ return;
++ }
++
++ switch (key) {
+ case Qt::Key_Up:
+ next = false;
+ Q_FALLTHROUGH();
+@@ -1153,15 +1154,15 @@ void QAbstractButton::keyReleaseEvent(QKeyEvent *e)
+ if (!e->isAutoRepeat())
+ d->repeatTimer.stop();
+
+- switch (e->key()) {
+- case Qt::Key_Select:
+- case Qt::Key_Space:
+- if (!e->isAutoRepeat() && d->down)
+- d->click();
+- break;
+- default:
+- e->ignore();
++ const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme()
++ ->themeHint(QPlatformTheme::ButtonPressKeys)
++ .value<QList<Qt::Key>>();
++ if (buttonPressKeys.contains(e->key()) && !e->isAutoRepeat() && d->down) {
++ d->click();
++ return;
+ }
++
++ e->ignore();
+ }
+
+ /*!\reimp
+diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp
+index 9bc346704f..c3bbeeae68 100644
+--- a/src/widgets/widgets/qcombobox.cpp
++++ b/src/widgets/widgets/qcombobox.cpp
+@@ -3339,7 +3339,23 @@ void QComboBox::keyPressEvent(QKeyEvent *e)
+
+ Move move = NoMove;
+ int newIndex = currentIndex();
+- switch (e->key()) {
++
++ bool pressLikeButton = !d->lineEdit;
++#ifdef QT_KEYPAD_NAVIGATION
++ pressLikeButton |= QApplicationPrivate::keypadNavigationEnabled() && !hasEditFocus();
++#endif
++ auto key = e->key();
++ if (pressLikeButton) {
++ const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme()
++ ->themeHint(QPlatformTheme::ButtonPressKeys)
++ .value<QList<Qt::Key>>();
++ if (buttonPressKeys.contains(key)) {
++ showPopup();
++ return;
++ }
++ }
++
++ switch (key) {
+ case Qt::Key_Up:
+ if (e->modifiers() & Qt::ControlModifier)
+ break; // pass to line edit for auto completion
+@@ -3381,26 +3397,11 @@ void QComboBox::keyPressEvent(QKeyEvent *e)
+ return;
+ }
+ break;
+- case Qt::Key_Space:
+- if (!d->lineEdit) {
+- showPopup();
+- return;
+- }
+- break;
+- case Qt::Key_Enter:
+- case Qt::Key_Return:
+ case Qt::Key_Escape:
+ if (!d->lineEdit)
+ e->ignore();
+ break;
+ #ifdef QT_KEYPAD_NAVIGATION
+- case Qt::Key_Select:
+- if (QApplicationPrivate::keypadNavigationEnabled()
+- && (!hasEditFocus() || !d->lineEdit)) {
+- showPopup();
+- return;
+- }
+- break;
+ case Qt::Key_Left:
+ case Qt::Key_Right:
+ if (QApplicationPrivate::keypadNavigationEnabled() && !hasEditFocus())
+diff --git a/src/widgets/widgets/qgroupbox.cpp b/src/widgets/widgets/qgroupbox.cpp
+index 02a0bed325..89a9a14743 100644
+--- a/src/widgets/widgets/qgroupbox.cpp
++++ b/src/widgets/widgets/qgroupbox.cpp
+@@ -54,6 +54,8 @@
+ #include "qaccessible.h"
+ #endif
+ #include <private/qwidget_p.h>
++#include <private/qguiapplication_p.h>
++#include <qpa/qplatformtheme.h>
+
+ #include "qdebug.h"
+
+@@ -360,7 +362,10 @@ bool QGroupBox::event(QEvent *e)
+ return true;
+ case QEvent::KeyPress: {
+ QKeyEvent *k = static_cast<QKeyEvent*>(e);
+- if (!k->isAutoRepeat() && (k->key() == Qt::Key_Select || k->key() == Qt::Key_Space)) {
++ const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme()
++ ->themeHint(QPlatformTheme::ButtonPressKeys)
++ .value<QList<Qt::Key>>();
++ if (!k->isAutoRepeat() && buttonPressKeys.contains(k->key())) {
+ d->pressedControl = QStyle::SC_GroupBoxCheckBox;
+ update(style()->subControlRect(QStyle::CC_GroupBox, &box, QStyle::SC_GroupBoxCheckBox, this));
+ return true;
+@@ -369,7 +374,10 @@ bool QGroupBox::event(QEvent *e)
+ }
+ case QEvent::KeyRelease: {
+ QKeyEvent *k = static_cast<QKeyEvent*>(e);
+- if (!k->isAutoRepeat() && (k->key() == Qt::Key_Select || k->key() == Qt::Key_Space)) {
++ const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme()
++ ->themeHint(QPlatformTheme::ButtonPressKeys)
++ .value<QList<Qt::Key>>();
++ if (!k->isAutoRepeat() && buttonPressKeys.contains(k->key())) {
+ bool toggle = (d->pressedControl == QStyle::SC_GroupBoxLabel
+ || d->pressedControl == QStyle::SC_GroupBoxCheckBox);
+ d->pressedControl = QStyle::SC_None;
+diff --git a/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp b/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp
+index eb108a40de..dca5528c1b 100644
+--- a/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp
++++ b/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp
+@@ -41,6 +41,7 @@
+
+ #include <private/qguiapplication_p.h>
+ #include <qpa/qplatformintegration.h>
++#include <qpa/qplatformtheme.h>
+
+ class tst_QAbstractButton : public QObject
+ {
+@@ -76,6 +77,8 @@ private slots:
+ void keyNavigation();
+ #endif
+
++ void buttonPressKeys();
++
+ protected slots:
+ void onClicked();
+ void onToggled( bool on );
+@@ -269,7 +272,13 @@ void tst_QAbstractButton::setAutoRepeat()
+ QCOMPARE(press_count, click_count);
+ QVERIFY(click_count > 1);
+ break;
+- case 4:
++ case 4: {
++ const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme()
++ ->themeHint(QPlatformTheme::ButtonPressKeys)
++ .value<QList<Qt::Key>>();
++ if (buttonPressKeys.contains(Qt::Key_Enter)) {
++ QSKIP("platform theme has Key_Enter in ButtonPressKeys");
++ }
+ // check that pressing ENTER has no effect when autorepeat is false
+ testWidget->setDown( false );
+ testWidget->setAutoRepeat( false );
+@@ -286,7 +295,14 @@ void tst_QAbstractButton::setAutoRepeat()
+
+ QVERIFY( click_count == 0 );
+ break;
+- case 5:
++ }
++ case 5: {
++ const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme()
++ ->themeHint(QPlatformTheme::ButtonPressKeys)
++ .value<QList<Qt::Key>>();
++ if (buttonPressKeys.contains(Qt::Key_Enter)) {
++ QSKIP("platform theme has Key_Enter in ButtonPressKeys");
++ }
+ // check that pressing ENTER has no effect when autorepeat is true
+ testWidget->setDown( false );
+ testWidget->setAutoRepeat( true );
+@@ -304,6 +320,7 @@ void tst_QAbstractButton::setAutoRepeat()
+
+ QVERIFY( click_count == 0 );
+ break;
++ }
+ case 6:
+ // verify autorepeat is off by default.
+ MyButton tmp( 0);
+@@ -651,5 +668,16 @@ void tst_QAbstractButton::keyNavigation()
+ }
+ #endif
+
++void tst_QAbstractButton::buttonPressKeys()
++{
++ const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme()
++ ->themeHint(QPlatformTheme::ButtonPressKeys)
++ .value<QList<Qt::Key>>();
++ for (int i = 0; i < buttonPressKeys.length(); ++i) {
++ QTest::keyClick(testWidget, buttonPressKeys[i]);
++ QCOMPARE(click_count, i + 1);
++ }
++}
++
+ QTEST_MAIN(tst_QAbstractButton)
+ #include "tst_qabstractbutton.moc"
+diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
+index 46e96616b1..3a7fad08a6 100644
+--- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
++++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
+@@ -167,6 +167,7 @@ private slots:
+ void task_QTBUG_52027_mapCompleterIndex();
+ void checkMenuItemPosWhenStyleSheetIsSet();
+ void checkEmbeddedLineEditWhenStyleSheetIsSet();
++ void buttonPressKeys();
+
+ private:
+ PlatformInputContext m_platformInputContext;
+@@ -3596,5 +3597,24 @@ void tst_QComboBox::checkEmbeddedLineEditWhenStyleSheetIsSet()
+ qApp->setStyleSheet(oldCss);
+ }
+
++void tst_QComboBox::buttonPressKeys()
++{
++ QComboBox comboBox;
++ comboBox.setEditable(false);
++ comboBox.addItem(QString::number(1));
++ comboBox.addItem(QString::number(2));
++ const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme()
++ ->themeHint(QPlatformTheme::ButtonPressKeys)
++ .value<QList<Qt::Key>>();
++ for (int i = 0; i < buttonPressKeys.length(); ++i) {
++ QTest::keyClick(&comboBox, buttonPressKeys[i]);
++ // On some platforms, a window will not be immediately visible,
++ // but take some event-loop iterations to complete.
++ // Using QTRY_VERIFY to deal with that.
++ QTRY_VERIFY(comboBox.view()->isVisible());
++ comboBox.hidePopup();
++ }
++}
++
+ QTEST_MAIN(tst_QComboBox)
+ #include "tst_qcombobox.moc"
+diff --git a/tests/auto/widgets/widgets/qcommandlinkbutton/qcommandlinkbutton.pro b/tests/auto/widgets/widgets/qcommandlinkbutton/qcommandlinkbutton.pro
+index be3cfcd104..c228fdfcca 100644
+--- a/tests/auto/widgets/widgets/qcommandlinkbutton/qcommandlinkbutton.pro
++++ b/tests/auto/widgets/widgets/qcommandlinkbutton/qcommandlinkbutton.pro
+@@ -1,6 +1,6 @@
+ CONFIG += testcase
+ TARGET = tst_qcommandlinkbutton
+-QT += widgets testlib
++QT += widgets testlib gui-private
+ SOURCES += tst_qcommandlinkbutton.cpp
+
+
+diff --git a/tests/auto/widgets/widgets/qcommandlinkbutton/tst_qcommandlinkbutton.cpp b/tests/auto/widgets/widgets/qcommandlinkbutton/tst_qcommandlinkbutton.cpp
+index 0044d33c66..4cf06296e4 100644
+--- a/tests/auto/widgets/widgets/qcommandlinkbutton/tst_qcommandlinkbutton.cpp
++++ b/tests/auto/widgets/widgets/qcommandlinkbutton/tst_qcommandlinkbutton.cpp
+@@ -40,6 +40,9 @@
+ #include <QGridLayout>
+ #include <QPainter>
+
++#include <private/qguiapplication_p.h>
++#include <qpa/qplatformtheme.h>
++
+ class tst_QCommandLinkButton : public QObject
+ {
+ Q_OBJECT
+@@ -223,6 +226,13 @@ void tst_QCommandLinkButton::setAutoRepeat()
+ // check that pressing ENTER has no effect
+ resetCounters();
+ testWidget->setDown( false );
++ // Skip after reset if ButtonPressKeys has Key_Enter
++ const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme()
++ ->themeHint(QPlatformTheme::ButtonPressKeys)
++ .value<QList<Qt::Key>>();
++ if (buttonPressKeys.contains(Qt::Key_Enter)) {
++ return;
++ }
+ testWidget->setAutoRepeat( false );
+ QTest::keyPress( testWidget, Qt::Key_Enter );
+
+@@ -255,6 +265,14 @@ void tst_QCommandLinkButton::pressed()
+ QCOMPARE( press_count, (uint)1 );
+ QCOMPARE( release_count, (uint)1 );
+
++ // Skip if ButtonPressKeys has Key_Enter
++ const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme()
++ ->themeHint(QPlatformTheme::ButtonPressKeys)
++ .value<QList<Qt::Key>>();
++ if (buttonPressKeys.contains(Qt::Key_Enter)) {
++ return;
++ }
++
+ QTest::keyPress( testWidget,Qt::Key_Enter );
+ QCOMPARE( press_count, (uint)1 );
+ QCOMPARE( release_count, (uint)1 );
+diff --git a/tests/auto/widgets/widgets/qgroupbox/qgroupbox.pro b/tests/auto/widgets/widgets/qgroupbox/qgroupbox.pro
+index 4a5e76ff65..a235fa1fac 100644
+--- a/tests/auto/widgets/widgets/qgroupbox/qgroupbox.pro
++++ b/tests/auto/widgets/widgets/qgroupbox/qgroupbox.pro
+@@ -1,6 +1,6 @@
+ CONFIG += testcase
+ TARGET = tst_qgroupbox
+-QT += widgets testlib
++QT += widgets testlib gui-private
+ SOURCES += tst_qgroupbox.cpp
+
+
+diff --git a/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp b/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp
+index 4fb5d262ca..d8d7562b73 100644
+--- a/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp
++++ b/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp
+@@ -35,6 +35,9 @@
+ #include <QRadioButton>
+ #include <QDialog>
+
++#include <private/qguiapplication_p.h>
++#include <qpa/qplatformtheme.h>
++
+ #include "qgroupbox.h"
+
+ class tst_QGroupBox : public QObject
+@@ -69,6 +72,7 @@ private slots:
+ void propagateFocus();
+ void task_QTBUG_19170_ignoreMouseReleaseEvent();
+ void task_QTBUG_15519_propagateMouseEvents();
++ void buttonPressKeys();
+
+ private:
+ bool checked;
+@@ -610,6 +614,20 @@ void tst_QGroupBox::task_QTBUG_15519_propagateMouseEvents()
+ QCOMPARE(parent.mouseMoved, true);
+ }
+
++void tst_QGroupBox::buttonPressKeys()
++{
++ QGroupBox groupBox;
++ groupBox.setCheckable(true);
++ QSignalSpy clickedSpy(&groupBox, &QGroupBox::clicked);
++ const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme()
++ ->themeHint(QPlatformTheme::ButtonPressKeys)
++ .value<QList<Qt::Key>>();
++ for (int i = 0; i < buttonPressKeys.length(); ++i) {
++ QTest::keyClick(&groupBox, buttonPressKeys[i]);
++ QCOMPARE(clickedSpy.length(), i + 1);
++ }
++}
++
+ void tst_QGroupBox::sendMouseMoveEvent(QWidget *widget, const QPoint &localPos)
+ {
+ // Send a MouseMove event without actually moving the pointer
+diff --git a/tests/auto/widgets/widgets/qpushbutton/qpushbutton.pro b/tests/auto/widgets/widgets/qpushbutton/qpushbutton.pro
+index 353ad06ca2..e55f6148f2 100644
+--- a/tests/auto/widgets/widgets/qpushbutton/qpushbutton.pro
++++ b/tests/auto/widgets/widgets/qpushbutton/qpushbutton.pro
+@@ -1,6 +1,6 @@
+ CONFIG += testcase
+ TARGET = tst_qpushbutton
+-QT += widgets testlib
++QT += widgets testlib gui-private
+ SOURCES += tst_qpushbutton.cpp
+
+
+diff --git a/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp b/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp
+index e818514a79..4043e9326a 100644
+--- a/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp
++++ b/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp
+@@ -41,6 +41,9 @@
+ #include <QStyleFactory>
+ #include <QTabWidget>
+
++#include <private/qguiapplication_p.h>
++#include <qpa/qplatformtheme.h>
++
+ class tst_QPushButton : public QObject
+ {
+ Q_OBJECT
+@@ -212,6 +215,13 @@ void tst_QPushButton::autoRepeat()
+ // check that pressing ENTER has no effect
+ resetCounters();
+ testWidget->setDown( false );
++ // Skip after reset if ButtonPressKeys has Key_Enter
++ const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme()
++ ->themeHint(QPlatformTheme::ButtonPressKeys)
++ .value<QList<Qt::Key>>();
++ if (buttonPressKeys.contains(Qt::Key_Enter)) {
++ return;
++ }
+ testWidget->setAutoRepeat( false );
+ QTest::keyPress( testWidget, Qt::Key_Enter );
+
+@@ -247,6 +257,14 @@ void tst_QPushButton::pressed()
+ QCOMPARE( press_count, (uint)1 );
+ QCOMPARE( release_count, (uint)1 );
+
++ // Skip if ButtonPressKeys has Key_Enter
++ const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme()
++ ->themeHint(QPlatformTheme::ButtonPressKeys)
++ .value<QList<Qt::Key>>();
++ if (buttonPressKeys.contains(Qt::Key_Enter)) {
++ return;
++ }
++
+ QTest::keyPress( testWidget,Qt::Key_Enter );
+ QCOMPARE( press_count, (uint)1 );
+ QCOMPARE( release_count, (uint)1 );
+--
+2.36.0
+
+From 9ef1eeef8c3a2fd98231904995807d16c3925671 Mon Sep 17 00:00:00 2001
+From: Milian Wolff <milian.wolff@kdab.com>
+Date: Thu, 21 Apr 2022 12:34:11 +0200
+Subject: [PATCH 130/146] Fix compile with Qt5: Use QString::mid instead of
+ QString::sliced
+
+Sliced is a faster version of mid. In a test it doesn't matter which
+one we use, and this allows us to build Qt5 with tests enabled.
+
+Change-Id: I668580d675224324bf481e7b17358bbbe44741fd
+---
+ tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
+index dc42b15a69..6d6d65b791 100644
+--- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
++++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
+@@ -2782,7 +2782,7 @@ void tst_QSqlQuery::prematureExec()
+ dbName.truncate(cut);
+ cut = dbName.indexOf(QChar('_'));
+ if (cut >= 0)
+- dbName = dbName.sliced(cut + 1);
++ dbName = dbName.mid(cut + 1);
+
+ auto db = QSqlDatabase::addDatabase(dbName);
+ QSqlQuery q(db);
+--
+2.36.0
+
+From 8d476fc6c2d68b0b23bc1df0aca7b09ad8eb6a6a Mon Sep 17 00:00:00 2001
+From: Noah Davis <noahadvs@gmail.com>
+Date: Wed, 20 Apr 2022 18:20:10 -0400
+Subject: [PATCH 131/146] QAbstractButton/QComboBox/QGroupBox: static_cast
+ event->key() to Qt::Key
+
+The default build settings don't like casting to the true type unless
+you use static_cast.
+
+Change-Id: I1705dd2e2339f28bbfe46832f10cb40f1aa9abd2
+---
+ src/widgets/widgets/qabstractbutton.cpp | 4 ++--
+ src/widgets/widgets/qcombobox.cpp | 2 +-
+ src/widgets/widgets/qgroupbox.cpp | 4 ++--
+ 3 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/widgets/widgets/qabstractbutton.cpp b/src/widgets/widgets/qabstractbutton.cpp
+index 7be0858a58..dc40bf62fb 100644
+--- a/src/widgets/widgets/qabstractbutton.cpp
++++ b/src/widgets/widgets/qabstractbutton.cpp
+@@ -1078,7 +1078,7 @@ void QAbstractButton::keyPressEvent(QKeyEvent *e)
+ Q_D(QAbstractButton);
+ bool next = true;
+
+- const auto key = e->key();
++ const auto key = static_cast<Qt::Key>(e->key());
+ const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme()
+ ->themeHint(QPlatformTheme::ButtonPressKeys)
+ .value<QList<Qt::Key>>();
+@@ -1157,7 +1157,7 @@ void QAbstractButton::keyReleaseEvent(QKeyEvent *e)
+ const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme()
+ ->themeHint(QPlatformTheme::ButtonPressKeys)
+ .value<QList<Qt::Key>>();
+- if (buttonPressKeys.contains(e->key()) && !e->isAutoRepeat() && d->down) {
++ if (buttonPressKeys.contains(static_cast<Qt::Key>(e->key())) && !e->isAutoRepeat() && d->down) {
+ d->click();
+ return;
+ }
+diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp
+index c3bbeeae68..7432eb4eb5 100644
+--- a/src/widgets/widgets/qcombobox.cpp
++++ b/src/widgets/widgets/qcombobox.cpp
+@@ -3344,7 +3344,7 @@ void QComboBox::keyPressEvent(QKeyEvent *e)
+ #ifdef QT_KEYPAD_NAVIGATION
+ pressLikeButton |= QApplicationPrivate::keypadNavigationEnabled() && !hasEditFocus();
+ #endif
+- auto key = e->key();
++ auto key = static_cast<Qt::Key>(e->key());
+ if (pressLikeButton) {
+ const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme()
+ ->themeHint(QPlatformTheme::ButtonPressKeys)
+diff --git a/src/widgets/widgets/qgroupbox.cpp b/src/widgets/widgets/qgroupbox.cpp
+index 89a9a14743..3f3eccc370 100644
+--- a/src/widgets/widgets/qgroupbox.cpp
++++ b/src/widgets/widgets/qgroupbox.cpp
+@@ -365,7 +365,7 @@ bool QGroupBox::event(QEvent *e)
+ const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme()
+ ->themeHint(QPlatformTheme::ButtonPressKeys)
+ .value<QList<Qt::Key>>();
+- if (!k->isAutoRepeat() && buttonPressKeys.contains(k->key())) {
++ if (!k->isAutoRepeat() && buttonPressKeys.contains(static_cast<Qt::Key>(k->key()))) {
+ d->pressedControl = QStyle::SC_GroupBoxCheckBox;
+ update(style()->subControlRect(QStyle::CC_GroupBox, &box, QStyle::SC_GroupBoxCheckBox, this));
+ return true;
+@@ -377,7 +377,7 @@ bool QGroupBox::event(QEvent *e)
+ const auto buttonPressKeys = QGuiApplicationPrivate::platformTheme()
+ ->themeHint(QPlatformTheme::ButtonPressKeys)
+ .value<QList<Qt::Key>>();
+- if (!k->isAutoRepeat() && buttonPressKeys.contains(k->key())) {
++ if (!k->isAutoRepeat() && buttonPressKeys.contains(static_cast<Qt::Key>(k->key()))) {
+ bool toggle = (d->pressedControl == QStyle::SC_GroupBoxLabel
+ || d->pressedControl == QStyle::SC_GroupBoxCheckBox);
+ d->pressedControl = QStyle::SC_None;
+--
+2.36.0
+
+From 319d5da8b2bf34cfa29f89b69dc5328b4463af54 Mon Sep 17 00:00:00 2001
+From: Thiago Macieira <thiago.macieira@intel.com>
+Date: Mon, 31 Jan 2022 11:00:19 -0800
+Subject: [PATCH 132/146] QProcess/Unix: ensure we don't accidentally execute
+ something from CWD
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Unless "." (or the empty string) is in $PATH, we're not supposed to find
+executables in the current directory. This is how the Unix shells behave
+and we match their behavior. It's also the behavior Qt had prior to 5.9
+(commit 28666d167aa8e602c0bea25ebc4d51b55005db13). On Windows, searching
+the current directory is the norm, so we keep that behavior.
+
+This commit does not add an explicit check for an empty return from
+QStandardPaths::findExecutable(). Instead, we allow that empty string to
+go all the way to execve(2), which will fail with ENOENT. We could catch
+it early, before fork(2), but why add code for the error case?
+
+See https://kde.org/info/security/advisory-20220131-1.txt
+
+[ChangeLog][Important Behavior Changes] When passed a simple program
+name with no slashes, QProcess on Unix systems will now only search the
+current directory if "." is one of the entries in the PATH environment
+variable. This bug fix restores the behavior QProcess had before Qt 5.9.
+If launching an executable in the directory set by setWorkingDirectory()
+or inherited from the parent is intended, pass a program name starting
+with "./". For more information and best practices about finding an
+executable, see QProcess' documentation.
+
+Pick-to: 5.15 6.2 6.3
+Change-Id: I54f205f6b7314351b078fffd16cf7013c97ee9fb
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit 29fceed2ffb41954a63001414bd042611f2d4980)
+
+Note: This currently breaks various autotests, as they rely on the test
+helpers (same directory as the test) to be in $PATH. In Qt 6, the CMake
+test code sets this explicitly, which is not the case in Qt 5 (yet).
+---
+ src/corelib/io/qprocess_unix.cpp | 28 +++---
+ .../auto/corelib/io/qprocess/tst_qprocess.cpp | 93 ++++++++++++++++++-
+ .../kernel/qapplication/tst_qapplication.cpp | 4 +-
+ 3 files changed, 109 insertions(+), 16 deletions(-)
+
+diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp
+index 50390e57f5..15c8f30745 100644
+--- a/src/corelib/io/qprocess_unix.cpp
++++ b/src/corelib/io/qprocess_unix.cpp
+@@ -1,7 +1,7 @@
+ /****************************************************************************
+ **
+ ** Copyright (C) 2016 The Qt Company Ltd.
+-** Copyright (C) 2016 Intel Corporation.
++** Copyright (C) 2022 Intel Corporation.
+ ** Contact: https://www.qt.io/licensing/
+ **
+ ** This file is part of the QtCore module of the Qt Toolkit.
+@@ -422,14 +422,15 @@ void QProcessPrivate::startProcess()
+ // Add the program name to the argument list.
+ argv[0] = nullptr;
+ if (!program.contains(QLatin1Char('/'))) {
++ // findExecutable() returns its argument if it's an absolute path,
++ // otherwise it searches $PATH; returns empty if not found (we handle
++ // that case much later)
+ const QString &exeFilePath = QStandardPaths::findExecutable(program);
+- if (!exeFilePath.isEmpty()) {
+- const QByteArray &tmp = QFile::encodeName(exeFilePath);
+- argv[0] = ::strdup(tmp.constData());
+- }
+- }
+- if (!argv[0])
++ const QByteArray &tmp = QFile::encodeName(exeFilePath);
++ argv[0] = ::strdup(tmp.constData());
++ } else {
+ argv[0] = ::strdup(encodedProgramName.constData());
++ }
+
+ // Add every argument to the list
+ for (int i = 0; i < arguments.count(); ++i)
+@@ -983,15 +984,16 @@ bool QProcessPrivate::startDetached(qint64 *pid)
+ envp = _q_dupEnvironment(environment.d.constData()->vars, &envc);
+ }
+
+- QByteArray tmp;
+ if (!program.contains(QLatin1Char('/'))) {
++ // findExecutable() returns its argument if it's an absolute path,
++ // otherwise it searches $PATH; returns empty if not found (we handle
++ // that case much later)
+ const QString &exeFilePath = QStandardPaths::findExecutable(program);
+- if (!exeFilePath.isEmpty())
+- tmp = QFile::encodeName(exeFilePath);
++ const QByteArray &tmp = QFile::encodeName(exeFilePath);
++ argv[0] = ::strdup(tmp.constData());
++ } else {
++ argv[0] = ::strdup(QFile::encodeName(program));
+ }
+- if (tmp.isEmpty())
+- tmp = QFile::encodeName(program);
+- argv[0] = tmp.data();
+
+ if (envp)
+ qt_safe_execve(argv[0], argv, envp);
+diff --git a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp
+index bc9df3f1f3..33051d3803 100644
+--- a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp
++++ b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp
+@@ -1,7 +1,7 @@
+ /****************************************************************************
+ **
+ ** Copyright (C) 2020 The Qt Company Ltd.
+-** Copyright (C) 2020 Intel Corporation.
++** Copyright (C) 2022 Intel Corporation.
+ ** Contact: https://www.qt.io/licensing/
+ **
+ ** This file is part of the test suite of the Qt Toolkit.
+@@ -149,6 +149,8 @@ private slots:
+ void startStopStartStopBuffers();
+ void processEventsInAReadyReadSlot_data();
+ void processEventsInAReadyReadSlot();
++ void startFromCurrentWorkingDir_data();
++ void startFromCurrentWorkingDir();
+
+ // keep these at the end, since they use lots of processes and sometimes
+ // caused obscure failures to occur in tests that followed them (esp. on the Mac)
+@@ -2732,5 +2734,94 @@ void tst_QProcess::finishProcessBeforeReadingDone_deprecated()
+
+ #endif
+
++enum class ChdirMode {
++ None = 0,
++ InParent,
++ InChild
++};
++Q_DECLARE_METATYPE(ChdirMode)
++
++void tst_QProcess::startFromCurrentWorkingDir_data()
++{
++ qRegisterMetaType<ChdirMode>();
++ QTest::addColumn<QString>("programPrefix");
++ QTest::addColumn<ChdirMode>("chdirMode");
++ QTest::addColumn<bool>("success");
++
++ constexpr bool IsWindows = true
++#ifdef Q_OS_UNIX
++ && false
++#endif
++ ;
++
++ // baseline: trying to execute the directory, this can't possibly succeed!
++ QTest::newRow("plain-same-cwd") << QString() << ChdirMode::None << false;
++
++ // cross-platform behavior: neither OS searches the setWorkingDirectory()
++ // dir without "./"
++ QTest::newRow("plain-child-chdir") << QString() << ChdirMode::InChild << false;
++
++ // cross-platform behavior: both OSes search the parent's CWD with "./"
++ QTest::newRow("prefixed-parent-chdir") << "./" << ChdirMode::InParent << true;
++
++ // opposite behaviors: Windows searches the parent's CWD and Unix searches
++ // the child's with "./"
++ QTest::newRow("prefixed-child-chdir") << "./" << ChdirMode::InChild << !IsWindows;
++
++ // Windows searches the parent's CWD without "./"
++ QTest::newRow("plain-parent-chdir") << QString() << ChdirMode::InParent << IsWindows;
++}
++
++void tst_QProcess::startFromCurrentWorkingDir()
++{
++ QFETCH(QString, programPrefix);
++ QFETCH(ChdirMode, chdirMode);
++ QFETCH(bool, success);
++
++ QProcess process;
++ qRegisterMetaType<QProcess::ProcessError>();
++ QSignalSpy errorSpy(&process, &QProcess::errorOccurred);
++ QVERIFY(errorSpy.isValid());
++
++ // both the dir name and the executable name
++ const QString target = QStringLiteral("testProcessNormal");
++ process.setProgram(programPrefix + target);
++
++#ifdef Q_OS_UNIX
++ // Reset PATH, to be sure it doesn't contain . or the empty path.
++ // We can't do this on Windows because DLLs are searched in PATH
++ // and Windows always searches "." anyway.
++ auto restoreEnv = qScopeGuard([old = qgetenv("PATH")] {
++ qputenv("PATH", old);
++ });
++ qputenv("PATH", "/");
++#endif
++
++ switch (chdirMode) {
++ case ChdirMode::InParent: {
++ auto restoreCwd = qScopeGuard([old = QDir::currentPath()] {
++ QDir::setCurrent(old);
++ });
++ QVERIFY(QDir::setCurrent(target));
++ process.start();
++ break;
++ }
++ case ChdirMode::InChild:
++ process.setWorkingDirectory(target);
++ Q_FALLTHROUGH();
++ case ChdirMode::None:
++ process.start();
++ break;
++ }
++
++ QCOMPARE(process.waitForStarted(), success);
++ QCOMPARE(errorSpy.count(), int(!success));
++ if (success) {
++ QVERIFY(process.waitForFinished());
++ } else {
++ QCOMPARE(process.error(), QProcess::FailedToStart);
++ }
++}
++
+ QTEST_MAIN(tst_QProcess)
+ #include "tst_qprocess.moc"
+diff --git a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
+index a3b8ef78d8..4955cebd5d 100644
+--- a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
++++ b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
+@@ -1498,7 +1498,7 @@ void tst_QApplication::desktopSettingsAware()
+ environment += QLatin1String("QT_MAC_DISABLE_FOREGROUND_APPLICATION_TRANSFORM=1");
+ testProcess.setEnvironment(environment);
+ #endif
+- testProcess.start("desktopsettingsaware_helper");
++ testProcess.start("./desktopsettingsaware_helper");
+ QVERIFY2(testProcess.waitForStarted(),
+ qPrintable(QString::fromLatin1("Cannot start 'desktopsettingsaware_helper': %1").arg(testProcess.errorString())));
+ QVERIFY(testProcess.waitForFinished(10000));
+@@ -2452,7 +2452,7 @@ void tst_QApplication::qtbug_12673()
+ #if QT_CONFIG(process)
+ QProcess testProcess;
+ QStringList arguments;
+- testProcess.start("modal_helper", arguments);
++ testProcess.start("./modal_helper", arguments);
+ QVERIFY2(testProcess.waitForStarted(),
+ qPrintable(QString::fromLatin1("Cannot start 'modal_helper': %1").arg(testProcess.errorString())));
+ QVERIFY(testProcess.waitForFinished(20000));
+--
+2.36.0
+
+From 015c00b27b17065472454174b1f92b6c0ff4cc74 Mon Sep 17 00:00:00 2001
+From: Edward Welbourne <edward.welbourne@qt.io>
+Date: Thu, 13 Aug 2020 10:40:11 +0200
+Subject: [PATCH 133/146] Fix crash on serializing default-constructed
+ QTimeZone
+
+The serialization code neglected to check against null. Sinze zones
+are saved either by IANA ID or in our special OffsetFromUtc format,
+representing an invalid zone by a string that cannot possibly be a
+valid IANA ID will do.
+
+Fixes: QTBUG-86019
+Pick-to: 5.15
+Pick-to: 5.12
+Change-Id: I6882026403d00f8b254aab34c645f1cf8f9fcc2d
+Reviewed-by: Taylor Braun-Jones <taylor@braun-jones.org>
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit 14f3f419b0864944d75283a850dc0ce141feaf0e)
+---
+ src/corelib/time/qtimezone.cpp | 14 ++++++++--
+ .../corelib/time/qtimezone/tst_qtimezone.cpp | 28 +++++++++++++++++++
+ 2 files changed, 39 insertions(+), 3 deletions(-)
+
+diff --git a/src/corelib/time/qtimezone.cpp b/src/corelib/time/qtimezone.cpp
+index 0309e43e52..3d451696a1 100644
+--- a/src/corelib/time/qtimezone.cpp
++++ b/src/corelib/time/qtimezone.cpp
+@@ -1,6 +1,6 @@
+ /****************************************************************************
+ **
+-** Copyright (C) 2013 John Layt <jlayt@kde.org>
++** Copyright (C) 2020 John Layt <jlayt@kde.org>
+ ** Contact: https://www.qt.io/licensing/
+ **
+ ** This file is part of the QtCore module of the Qt Toolkit.
+@@ -975,9 +975,15 @@ QList<QByteArray> QTimeZone::windowsIdToIanaIds(const QByteArray &windowsId,
+ }
+
+ #ifndef QT_NO_DATASTREAM
++// Invalid, as an IANA ID: too long, starts with - and has other invalid characters in it
++static inline QString invalidId() { return QStringLiteral("-No Time Zone Specified!"); }
++
+ QDataStream &operator<<(QDataStream &ds, const QTimeZone &tz)
+ {
+- tz.d->serialize(ds);
++ if (tz.isValid())
++ tz.d->serialize(ds);
++ else
++ ds << invalidId();
+ return ds;
+ }
+
+@@ -985,7 +991,9 @@ QDataStream &operator>>(QDataStream &ds, QTimeZone &tz)
+ {
+ QString ianaId;
+ ds >> ianaId;
+- if (ianaId == QLatin1String("OffsetFromUtc")) {
++ if (ianaId == invalidId()) {
++ tz = QTimeZone();
++ } else if (ianaId == QLatin1String("OffsetFromUtc")) {
+ int utcOffset;
+ QString name;
+ QString abbreviation;
+diff --git a/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp b/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp
+index a59b58d57f..241c3e84ac 100644
+--- a/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp
++++ b/tests/auto/corelib/time/qtimezone/tst_qtimezone.cpp
+@@ -63,6 +63,7 @@ private slots:
+ void isValidId_data();
+ void isValidId();
+ void malformed();
++ void serialize();
+ // Backend tests
+ void utcTest();
+ void icuTest();
+@@ -947,6 +948,33 @@ void tst_QTimeZone::malformed()
+ barf.offsetFromUtc(now);
+ }
+
++void tst_QTimeZone::serialize()
++{
++ int parts = 0;
++#ifndef QT_NO_DEBUG_STREAM
++ qDebug() << QTimeZone(); // to verify no crash
++ parts++;
++#endif
++#ifndef QT_NO_DATASTREAM
++ QByteArray blob;
++ {
++ QDataStream stream(&blob, QIODevice::WriteOnly);
++ stream << QTimeZone("Europe/Oslo") << QTimeZone(420) << QTimeZone() << qint64(-1);
++ }
++ QDataStream stream(&blob, QIODevice::ReadOnly);
++ QTimeZone invalid, offset, oslo;
++ qint64 minusone;
++ stream >> oslo >> offset >> invalid >> minusone;
++ QCOMPARE(oslo, QTimeZone("Europe/Oslo"));
++ QCOMPARE(offset, QTimeZone(420));
++ QVERIFY(!invalid.isValid());
++ QCOMPARE(minusone, qint64(-1));
++ parts++;
++#endif
++ if (!parts)
++ QSKIP("No serialization enabled");
++}
++
+ void tst_QTimeZone::utcTest()
+ {
+ #ifdef QT_BUILD_INTERNAL
+--
+2.36.0
+
+From 120f74b4c8f92db8effe845f4069ec263c0b48a0 Mon Sep 17 00:00:00 2001
+From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+Date: Tue, 5 Oct 2021 07:45:50 +0200
+Subject: [PATCH 134/146] Revert "Support family names that end/start with
+ space"
+
+This reverts commit 7fd9ed32012bd9001e78ad692a4802e0e3366e44.
+
+While trimming the font name worked for cases with application fonts,
+it actually introduced an assert for system fonts that ended with a
+space, because enumerating these failed. So the original assumption
+that all Windows APIs also trimmed the family name was wrong.
+
+The original bug was that the font with the trailing space could
+not be selected, but when using setFamilies(), it can. So there is
+a perfectly fine way around the original bug when using a font that
+has this problem. Therefore, no additional fix is needed for that.
+
+[ChangeLog][Windows] Fixed an assert that happened when the system
+had a font with a trailing or leading space in its name.
+
+Pick-to: 5.15 6.1 6.2
+Fixes: QTBUG-93885
+Task-number: QTBUG-79140
+Change-Id: I6d9df31a4f2c6555d38d51da374f69b6fb0f1ecb
+Reviewed-by: Lars Knoll <lars.knoll@qt.io>
+(cherry picked from commit 4d47b18c81f74ae6855e16197a12b69a6bcfe68a)
+---
+ src/gui/text/qfontdatabase.cpp | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp
+index 08c5ad273a..feb8ce22f2 100644
+--- a/src/gui/text/qfontdatabase.cpp
++++ b/src/gui/text/qfontdatabase.cpp
+@@ -503,12 +503,10 @@ void QFontDatabasePrivate::invalidate()
+ emit static_cast<QGuiApplication *>(QCoreApplication::instance())->fontDatabaseChanged();
+ }
+
+-QtFontFamily *QFontDatabasePrivate::family(const QString &family, FamilyRequestFlags flags)
++QtFontFamily *QFontDatabasePrivate::family(const QString &f, FamilyRequestFlags flags)
+ {
+ QtFontFamily *fam = nullptr;
+
+- const QString f = family.trimmed();
+-
+ int low = 0;
+ int high = count;
+ int pos = count / 2;
+--
+2.36.0
+
+From e0a15c11b853954d4189b2e30aa2450184de0987 Mon Sep 17 00:00:00 2001
+From: Rami Potinkara <rami.potinkara@qt.io>
+Date: Fri, 15 Oct 2021 05:52:44 +0000
+Subject: [PATCH 135/146] Revert "Android: Place cursor correctly on screen
+ when editing"
+
+This reverts commit 5c6b10c3cee5737dbc041d0463220898c8120807.
+It caused a regression such that the main window no longer resized or
+panned when the VKB is shown, in spite of android:windowSoftInputMode
+being set.
+
+Pick-to: 6.2 5.15
+Task-number: QTBUG-95300
+Task-number: QTBUG-96117
+Task-number: QTBUG-97503
+Change-Id: If56e1113eea69a940f6760bdb2ad06a93a0759c1
+Reviewed-by: Andreas Buhr <andreas.buhr@qt.io>
+Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
+(cherry picked from commit b1820295e1e8f04634cf9c008a2473d9e2889288)
+---
+ .../qt5/android/QtActivityDelegate.java | 15 ++-----
+ .../org/qtproject/qt5/android/QtNative.java | 17 +-------
+ .../qt5/android/bindings/QtActivity.java | 11 ++---
+ .../platforms/android/androidjniinput.cpp | 16 +------
+ .../platforms/android/androidjniinput.h | 4 +-
+ .../android/qandroidinputcontext.cpp | 42 +------------------
+ .../platforms/android/qandroidinputcontext.h | 2 -
+ 7 files changed, 13 insertions(+), 94 deletions(-)
+
+diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
+index a15a06a302..6aa935c2b1 100644
+--- a/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
++++ b/src/android/jar/src/org/qtproject/qt5/android/QtActivityDelegate.java
+@@ -263,7 +263,7 @@ public class QtActivityDelegate
+ }, 5);
+ }
+
+- public void showSoftwareKeyboard(final int x, final int y, final int width, final int height, final int editorHeight, final int inputHints, final int enterKeyType)
++ public void showSoftwareKeyboard(final int x, final int y, final int width, final int height, final int inputHints, final int enterKeyType)
+ {
+ if (m_imm == null)
+ return;
+@@ -285,7 +285,7 @@ public class QtActivityDelegate
+ if (softInputIsHidden)
+ return;
+ } else {
+- if (editorHeight > visibleHeight)
++ if (height > visibleHeight)
+ m_activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
+ else
+ m_activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_UNCHANGED | WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
+@@ -402,12 +402,12 @@ public class QtActivityDelegate
+ if (metrics.widthPixels > metrics.heightPixels) { // landscape
+ if (m_landscapeKeyboardHeight != r.bottom) {
+ m_landscapeKeyboardHeight = r.bottom;
+- showSoftwareKeyboard(x, y, width, height, editorHeight, inputHints, enterKeyType);
++ showSoftwareKeyboard(x, y, width, height, inputHints, enterKeyType);
+ }
+ } else {
+ if (m_portraitKeyboardHeight != r.bottom) {
+ m_portraitKeyboardHeight = r.bottom;
+- showSoftwareKeyboard(x, y, width, height, editorHeight, inputHints, enterKeyType);
++ showSoftwareKeyboard(x, y, width, height, inputHints, enterKeyType);
+ }
+ }
+ } else {
+@@ -558,13 +558,6 @@ public class QtActivityDelegate
+ }
+ }
+
+- public void updateInputItemRectangle(final int x, final int y, final int w, final int h)
+- {
+- if (m_layout == null || m_editText == null || !m_keyboardIsVisible)
+- return;
+- m_layout.setLayoutParams(m_editText, new QtLayout.LayoutParams(w, h, x, y), true);
+- }
+-
+ public boolean loadApplication(Activity activity, ClassLoader classLoader, Bundle loaderParams)
+ {
+ /// check parameters integrity
+diff --git a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
+index 09c8af3dad..23beccbf74 100644
+--- a/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
++++ b/src/android/jar/src/org/qtproject/qt5/android/QtNative.java
+@@ -882,25 +882,10 @@ public class QtNative
+ });
+ }
+
+- private static void updateInputItemRectangle(final int x,
+- final int y,
+- final int w,
+- final int h)
+- {
+- runAction(new Runnable() {
+- @Override
+- public void run() {
+- m_activityDelegate.updateInputItemRectangle(x, y, w, h);
+- }
+- });
+- }
+-
+-
+ private static void showSoftwareKeyboard(final int x,
+ final int y,
+ final int width,
+ final int height,
+- final int editorHeight,
+ final int inputHints,
+ final int enterKeyType)
+ {
+@@ -908,7 +893,7 @@ public class QtNative
+ @Override
+ public void run() {
+ if (m_activityDelegate != null)
+- m_activityDelegate.showSoftwareKeyboard(x, y, width, height, editorHeight, inputHints, enterKeyType);
++ m_activityDelegate.showSoftwareKeyboard(x, y, width, height, inputHints, enterKeyType);
+ }
+ });
+ }
+diff --git a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java
+index b27f03fc7d..b257a16567 100644
+--- a/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java
++++ b/src/android/java/src/org/qtproject/qt5/android/bindings/QtActivity.java
+@@ -1079,11 +1079,6 @@ public class QtActivity extends Activity
+ QtNative.activityDelegate().resetSoftwareKeyboard();
+ }
+
+- public void updateInputItemRectangle(final int x, final int y, final int w, final int h)
+- {
+- QtNative.activityDelegate().updateInputItemRectangle(x, y, w, h);
+- }
+-
+ public boolean setKeyboardVisibility(boolean visibility, long timeStamp)
+ {
+ return QtNative.activityDelegate().setKeyboardVisibility(visibility, timeStamp);
+@@ -1095,10 +1090,10 @@ public class QtActivity extends Activity
+ }
+
+ public void showSoftwareKeyboard(final int x, final int y, final int width,
+- final int height, final int editorHeight,
+- final int inputHints, final int enterKeyType)
++ final int height, final int inputHints,
++ final int enterKeyType)
+ {
+- QtNative.activityDelegate().showSoftwareKeyboard(x, y, width, height, editorHeight, inputHints, enterKeyType);
++ QtNative.activityDelegate().showSoftwareKeyboard(x, y, width, height, inputHints, enterKeyType);
+ }
+
+ public boolean startApplication()
+diff --git a/src/plugins/platforms/android/androidjniinput.cpp b/src/plugins/platforms/android/androidjniinput.cpp
+index fe1aff0cc4..e0232e2b2d 100644
+--- a/src/plugins/platforms/android/androidjniinput.cpp
++++ b/src/plugins/platforms/android/androidjniinput.cpp
+@@ -80,16 +80,15 @@ namespace QtAndroidInput
+ candidatesEnd);
+ }
+
+- void showSoftwareKeyboard(int left, int top, int width, int height, int editorHeight, int inputHints, int enterKeyType)
++ void showSoftwareKeyboard(int left, int top, int width, int height, int inputHints, int enterKeyType)
+ {
+ QJNIObjectPrivate::callStaticMethod<void>(applicationClass(),
+ "showSoftwareKeyboard",
+- "(IIIIIII)V",
++ "(IIIIII)V",
+ left,
+ top,
+ width,
+ height,
+- editorHeight,
+ inputHints,
+ enterKeyType);
+ #ifdef QT_DEBUG_ANDROID_IM_PROTOCOL
+@@ -131,17 +130,6 @@ namespace QtAndroidInput
+ anchor.x(), anchor.y(), rtl);
+ }
+
+- void updateInputItemRectangle(int left, int top, int width, int height)
+- {
+- QJNIObjectPrivate::callStaticMethod<void>(applicationClass(),
+- "updateInputItemRectangle",
+- "(IIII)V",
+- left,
+- top,
+- width,
+- height);
+- }
+-
+ static void mouseDown(JNIEnv */*env*/, jobject /*thiz*/, jint /*winId*/, jint x, jint y)
+ {
+ if (m_ignoreMouseEvents)
+diff --git a/src/plugins/platforms/android/androidjniinput.h b/src/plugins/platforms/android/androidjniinput.h
+index c1442f1904..cc3070c4aa 100644
+--- a/src/plugins/platforms/android/androidjniinput.h
++++ b/src/plugins/platforms/android/androidjniinput.h
+@@ -49,7 +49,7 @@ QT_BEGIN_NAMESPACE
+ namespace QtAndroidInput
+ {
+ // Software keyboard support
+- void showSoftwareKeyboard(int top, int left, int width, int editorHeight, int height, int inputHints, int enterKeyType);
++ void showSoftwareKeyboard(int top, int left, int width, int height, int inputHints, int enterKeyType);
+ void resetSoftwareKeyboard();
+ void hideSoftwareKeyboard();
+ bool isSoftwareKeyboardVisible();
+@@ -57,8 +57,6 @@ namespace QtAndroidInput
+ void updateSelection(int selStart, int selEnd, int candidatesStart, int candidatesEnd);
+ // Software keyboard support
+
+- // edit field resize
+- void updateInputItemRectangle(int left, int top, int width, int height);
+ // cursor/selection handles
+ void updateHandles(int handleCount, QPoint editMenuPos = QPoint(), uint32_t editButtons = 0, QPoint cursor = QPoint(), QPoint anchor = QPoint(), bool rtl = false);
+
+diff --git a/src/plugins/platforms/android/qandroidinputcontext.cpp b/src/plugins/platforms/android/qandroidinputcontext.cpp
+index 687cced1e2..c716bb814d 100644
+--- a/src/plugins/platforms/android/qandroidinputcontext.cpp
++++ b/src/plugins/platforms/android/qandroidinputcontext.cpp
+@@ -506,7 +506,7 @@ QAndroidInputContext::QAndroidInputContext()
+ m_androidInputContext = this;
+
+ QObject::connect(QGuiApplication::inputMethod(), &QInputMethod::cursorRectangleChanged,
+- this, &QAndroidInputContext::updateInputItemRectangle);
++ this, &QAndroidInputContext::updateSelectionHandles);
+ QObject::connect(QGuiApplication::inputMethod(), &QInputMethod::anchorRectangleChanged,
+ this, &QAndroidInputContext::updateSelectionHandles);
+ QObject::connect(QGuiApplication::inputMethod(), &QInputMethod::inputItemClipRectangleChanged, this, [this]{
+@@ -931,50 +931,12 @@ void QAndroidInputContext::showInputPanel()
+ else
+ m_updateCursorPosConnection = connect(qGuiApp->focusObject(), SIGNAL(cursorPositionChanged()), this, SLOT(updateCursorPosition()));
+
+- QRect rect = cursorRect();
++ QRect rect = screenInputItemRectangle();
+ QtAndroidInput::showSoftwareKeyboard(rect.left(), rect.top(), rect.width(), rect.height(),
+- inputItemRectangle().height(),
+ query->value(Qt::ImHints).toUInt(),
+ query->value(Qt::ImEnterKeyType).toUInt());
+ }
+
+-QRect QAndroidInputContext::cursorRect()
+-{
+- QSharedPointer<QInputMethodQueryEvent> query = focusObjectInputMethodQuery();
+- // if single line, we do not want to mess with the editor's position, as we do not
+- // have to follow the cursor in vertical axis
+- if (query.isNull()
+- || (query->value(Qt::ImHints).toUInt() & Qt::ImhMultiLine) != Qt::ImhMultiLine)
+- return {};
+-
+- auto im = qGuiApp->inputMethod();
+- if (!im)
+- return {};
+-
+- const auto cursorRect= im->cursorRectangle().toRect();
+- QRect finalRect(inputItemRectangle());
+- const QWindow *window = qGuiApp->focusWindow();
+- const double pd = window
+- ? QHighDpiScaling::factor(window)
+- : QHighDpiScaling::factor(QtAndroid::androidPlatformIntegration()->screen());
+- finalRect.setY(cursorRect.y() * pd);
+- finalRect.setHeight(cursorRect.height() * pd);
+- //fiddle a bit with vert margins, so the tracking rectangle is not too tight.
+- finalRect += QMargins(0, cursorRect.height() / 4, 0, cursorRect.height() / 4);
+- return finalRect;
+-}
+-
+-void QAndroidInputContext::updateInputItemRectangle()
+-{
+- QRect rect = cursorRect();
+-
+- if (!rect.isValid())
+- return;
+- QtAndroidInput::updateInputItemRectangle(rect.left(), rect.top(),
+- rect.width(), rect.height());
+- updateSelectionHandles();
+-}
+-
+ void QAndroidInputContext::showInputPanelLater(Qt::ApplicationState state)
+ {
+ if (state != Qt::ApplicationActive)
+diff --git a/src/plugins/platforms/android/qandroidinputcontext.h b/src/plugins/platforms/android/qandroidinputcontext.h
+index 02a66c367a..e9bfb98e66 100644
+--- a/src/plugins/platforms/android/qandroidinputcontext.h
++++ b/src/plugins/platforms/android/qandroidinputcontext.h
+@@ -138,7 +138,6 @@ public:
+ public slots:
+ void safeCall(const std::function<void()> &func, Qt::ConnectionType conType = Qt::BlockingQueuedConnection);
+ void updateCursorPosition();
+- void updateInputItemRectangle();
+ void updateSelectionHandles();
+ void handleLocationChanged(int handleId, int x, int y);
+ void touchDown(int x, int y);
+@@ -155,7 +154,6 @@ private:
+ bool focusObjectIsComposing() const;
+ void focusObjectStartComposing();
+ bool focusObjectStopComposing();
+- QRect cursorRect();
+
+ private:
+ ExtractedText m_extractedText;
+--
+2.36.0
+
+From 0b6ea7bed655412740a3eaaed4114bc69b8c6f98 Mon Sep 17 00:00:00 2001
+From: Johannes Rosenqvist <xeroc81@gmail.com>
+Date: Wed, 4 May 2022 12:49:24 +0200
+Subject: [PATCH 136/146] Fix a QDBusConnection crash with pending calls when
+ connection is closed
+
+QDBusConnection::closeConnection does not use deref() on pendingCall
+list so if there is an QDBusPendingCallWatcher watching the
+pending call the QDbusPendingCallPrivate destructor will
+run twice causing a crash.
+
+Pick-to: 5.15 6.2 6.3
+Change-Id: Ib811da36d3510f4292aa310c52c0617b885947b7
+Reviewed-by: Johannes Rosenqvist <xeroc81@gmail.com>
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit bb334e8181c52ad1f2b1cf1b89337870579ac8b0)
+---
+ src/dbus/qdbusintegrator.cpp | 8 +++++++-
+ 1 file changed, 7 insertions(+), 1 deletion(-)
+
+diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
+index 5b66ce971b..3c2114b3b6 100644
+--- a/src/dbus/qdbusintegrator.cpp
++++ b/src/dbus/qdbusintegrator.cpp
+@@ -1135,7 +1135,13 @@ void QDBusConnectionPrivate::closeConnection()
+ }
+ }
+
+- qDeleteAll(pendingCalls);
++ for (auto it = pendingCalls.begin(); it != pendingCalls.end(); ++it) {
++ auto call = *it;
++ if (!call->ref.deref()) {
++ delete call;
++ }
++ }
++ pendingCalls.clear();
+
+ // Disconnect all signals from signal hooks and from the object tree to
+ // avoid QObject::destroyed being sent to dbus daemon thread which has
+--
+2.36.0
+
+From 9b601fbd8a4919b40b5e96b188a967f7b981a3e6 Mon Sep 17 00:00:00 2001
+From: Allan Sandfeld Jensen <allan.jensen@qt.io>
+Date: Tue, 12 Apr 2022 16:25:08 +0200
+Subject: [PATCH 137/146] Fix race condition in futex-based QSemaphore
+
+Add one and reset the wakeAll bit atomically.
+
+This avoids a race in a case where an acquiring thread
+is owning the semaphore, and deleting it after a
+set number of releases (one for each thread referencing the semaphore).
+
+Two releasing threads could enter the if statement under
+futexNeedsWake(prevValue), the counter been incremented at
+this point and reached the value being acquired, meaning the thread
+acquiring can be awakened by just one of the two releasers,
+delete the semaphore, and then the second releaser would access
+the now deleted semaphore.
+
+The patch avoids that by unsetting and reading the wakeAll bit
+atomically, so only one thread will try to wake all threads.
+
+Pick-to: 6.3 6.2 5.15
+Fixes: QTBUG-102484
+Change-Id: I32172ed44d74378c627918e19b9e1aaadb5c6d1d
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit 830b1550de303dd59c29a87c28e44fa41112b8f4)
+---
+ src/corelib/thread/qsemaphore.cpp | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/src/corelib/thread/qsemaphore.cpp b/src/corelib/thread/qsemaphore.cpp
+index 1d01fc1b28..3ecdee3747 100644
+--- a/src/corelib/thread/qsemaphore.cpp
++++ b/src/corelib/thread/qsemaphore.cpp
+@@ -354,7 +354,12 @@ void QSemaphore::release(int n)
+ quintptr nn = unsigned(n);
+ if (futexHasWaiterCount)
+ nn |= quint64(nn) << 32; // token count replicated in high word
+- quintptr prevValue = u.fetchAndAddRelease(nn);
++ quintptr prevValue = u.loadRelaxed();
++ quintptr newValue;
++ do { // loop just to ensure the operations are done atomically
++ newValue = prevValue + nn;
++ newValue &= (futexNeedsWakeAllBit - 1);
++ } while (!u.testAndSetRelease(prevValue, newValue, prevValue));
+ if (futexNeedsWake(prevValue)) {
+ #ifdef FUTEX_OP
+ if (futexHasWaiterCount) {
+@@ -376,7 +381,6 @@ void QSemaphore::release(int n)
+ quint32 oparg = 0;
+ quint32 cmp = FUTEX_OP_CMP_NE;
+ quint32 cmparg = 0;
+- u.fetchAndAndRelease(futexNeedsWakeAllBit - 1);
+ futexWakeOp(*futexLow32(&u), n, INT_MAX, *futexHigh32(&u), FUTEX_OP(op, oparg, cmp, cmparg));
+ return;
+ }
+@@ -388,7 +392,6 @@ void QSemaphore::release(int n)
+ // its acquisition anyway, so it has to wait;
+ // 2) it did not see the new counter value, in which case its
+ // futexWait will fail.
+- u.fetchAndAndRelease(futexNeedsWakeAllBit - 1);
+ if (futexHasWaiterCount) {
+ futexWakeAll(*futexLow32(&u));
+ futexWakeAll(*futexHigh32(&u));
+--
+2.36.0
+
+From aa6f48907e3ae6b9c48b476344efd2fcc3c82f05 Mon Sep 17 00:00:00 2001
+From: Joni Poikelin <joni.poikelin@qt.io>
+Date: Thu, 5 May 2022 13:11:53 +0300
+Subject: [PATCH 138/146] Prevent crashing when FcFontList fails
+
+FcFontList can return null pointer in failure cases which would lead to
+null pointer dereference further down.
+
+Pick-to: 5.15 6.2 6.3
+Change-Id: I6b407cf2f27ead9eb471d3ee7a521468cebf7572
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+(cherry picked from commit 691541023aa11c085186ef7f691507c158e1df75)
+---
+ .../fontdatabases/fontconfig/qfontconfigdatabase.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+index 0d4bc288ea..c72c8d5400 100644
+--- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
++++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+@@ -562,6 +562,8 @@ void QFontconfigDatabase::populateFontDatabase()
+ fonts = FcFontList(nullptr, pattern, os);
+ FcObjectSetDestroy(os);
+ FcPatternDestroy(pattern);
++ if (!fonts)
++ return;
+ }
+
+ for (int i = 0; i < fonts->nfont; i++)
+--
+2.36.0
+
+From 2ffb7ad8a1079a0444b9c72affe3d19b089b60de Mon Sep 17 00:00:00 2001
+From: Paul Olav Tvete <paul.tvete@qt.io>
+Date: Wed, 5 May 2021 11:32:51 +0200
+Subject: [PATCH 139/146] Fix rare integer overflow in text shaping
+
+With extreme painter scaling, linearAdvance may be too large to fit in
+an unsigned short.
+
+Fixes: QTBUG-91758
+Pick-to: 6.1 5.15
+Change-Id: I7bbe6e77ec9bcef4aa5259da1d3000ed1a8eb27a
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+(cherry picked from commit e2bdff3555f8c2a275c7bbcf964d939a5f489100)
+---
+ src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp b/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp
+index be1b021638..5b32fc92c4 100644
+--- a/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp
++++ b/src/platformsupport/fontdatabases/freetype/qfontengine_ft.cpp
+@@ -1051,7 +1051,8 @@ QFontEngineFT::Glyph *QFontEngineFT::loadGlyph(QGlyphSet *set, uint glyph,
+ info.height = TRUNC(top - bottom);
+
+ // If any of the metrics are too large to fit, don't cache them
+- if (areMetricsTooLarge(info))
++ // Also, avoid integer overflow when linearAdvance is to large to fit in a signed short
++ if (areMetricsTooLarge(info) || info.linearAdvance > 0x7FFF)
+ return nullptr;
+
+ g = new Glyph;
+--
+2.36.0
+
+From 2984fcd1916fe5180881820288b236c26d213245 Mon Sep 17 00:00:00 2001
+From: Fabian Kosmale <fabian.kosmale@qt.io>
+Date: Tue, 3 May 2022 08:53:38 +0200
+Subject: [PATCH 140/146] Revert "a11y: Do not cache classes that don't have a
+ factory plugin"
+
+This reverts commit 583668005d4d6399fc16d165dcb6a5af2b94323d, and
+provides an alternative fix for QTBUG-75106.
+
+Reason: This introduced QTBUG-103009, due to lack of caching. To fix the
+original issue, we still reduce the amount of caching we do, by only
+considering the first non-dynamic meta-object for QML related objects.
+
+Task-number: QTBUG-75106
+Fixes: QTBUG-103009
+Pick-to: 6.3 6.2 5.15
+Change-Id: Ic76af26a719d1114208be9555286239c6c6df615
+Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
+(cherry picked from commit 02c2ad6cbea5b9c3e8da5a23bdbb402357dba0f0)
+---
+ src/gui/accessible/qaccessible.cpp | 29 +++++++++++++++++++++++++----
+ 1 file changed, 25 insertions(+), 4 deletions(-)
+
+diff --git a/src/gui/accessible/qaccessible.cpp b/src/gui/accessible/qaccessible.cpp
+index d705bfccb5..0caf3c808c 100644
+--- a/src/gui/accessible/qaccessible.cpp
++++ b/src/gui/accessible/qaccessible.cpp
+@@ -54,6 +54,7 @@
+ #include <QtCore/qdebug.h>
+ #include <QtCore/qloggingcategory.h>
+ #include <QtCore/qmetaobject.h>
++#include <QtCore/private/qmetaobject_p.h>
+ #include <QtCore/qhash.h>
+ #include <private/qfactoryloader_p.h>
+
+@@ -681,6 +682,25 @@ QAccessibleInterface *QAccessible::queryAccessibleInterface(QObject *object)
+ // Create a QAccessibleInterface for the object class. Start by the most
+ // derived class and walk up the class hierarchy.
+ const QMetaObject *mo = object->metaObject();
++ const auto *objectPriv = QObjectPrivate::get(object);
++ /*
++ We do not want to cache each and every QML metaobject (Button_QMLTYPE_124,
++ Button_QMLTYPE_125, etc.). Those dynamic metaobjects shouldn't have an
++ accessible interface in any case. Instead, we start the whole checking
++ with the first non-dynamic meta-object. To avoid potential regressions
++ in other areas of Qt that also use dynamic metaobjects, we only do this
++ for objects that are QML-related (approximated by checking whether they
++ have ddata set).
++ */
++ const bool qmlRelated = !objectPriv->isDeletingChildren &&
++ objectPriv->declarativeData;
++ while (qmlRelated && mo) {
++ auto mop = QMetaObjectPrivate::get(mo);
++ if (!mop || !(mop->flags & DynamicMetaObject))
++ break;
++
++ mo = mo->superClass();
++ };
+ while (mo) {
+ const QString cn = QLatin1String(mo->className());
+
+@@ -696,14 +716,15 @@ QAccessibleInterface *QAccessible::queryAccessibleInterface(QObject *object)
+ // Find a QAccessiblePlugin (factory) for the class name. If there's
+ // no entry in the cache try to create it using the plugin loader.
+ if (!qAccessiblePlugins()->contains(cn)) {
++ QAccessiblePlugin *factory = nullptr; // 0 means "no plugin found". This is cached as well.
+ const int index = loader()->indexOf(cn);
+- if (index != -1) {
+- QAccessiblePlugin *factory = qobject_cast<QAccessiblePlugin *>(loader()->instance(index));
+- qAccessiblePlugins()->insert(cn, factory);
+- }
++ if (index != -1)
++ factory = qobject_cast<QAccessiblePlugin *>(loader()->instance(index));
++ qAccessiblePlugins()->insert(cn, factory);
+ }
+
+ // At this point the cache should contain a valid factory pointer or 0:
++ Q_ASSERT(qAccessiblePlugins()->contains(cn));
+ QAccessiblePlugin *factory = qAccessiblePlugins()->value(cn);
+ if (factory) {
+ QAccessibleInterface *result = factory->create(cn, object);
+--
+2.36.0
+
+From 2cd8cb273809205e37b5c2e62fc72a6b44c5ec41 Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Fri, 13 May 2022 14:33:13 +0200
+Subject: [PATCH 141/146] QReadWriteLock: fix data race in dtor
+
+We need an acquire fence before we delete the d-pointer. Otherwise,
+the reads that the dtor performs (QReadWriteLockPrivate contains many
+non-trivial data types such as std::mutex and QVLA), race against
+writes performed in other threads. The qWarning() indicates that
+QReadWriteLock can not rely on external synchronization to ensure
+a happens-before relationship between reads in the dtor and said writes.
+
+While an explicit fence just before the delete would suffice, the guard
+return is an extremely unlikely error case, and if we ignore it, then
+loadAcquire() is correct, so use that.
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: I29773b665a7f864cd6b07a294da326e8b10399b5
+Reviewed-by: Sona Kurazyan <sona.kurazyan@qt.io>
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit 8af70190966e38dc3a697859f427276aecfe44d4)
+---
+ src/corelib/thread/qreadwritelock.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/corelib/thread/qreadwritelock.cpp b/src/corelib/thread/qreadwritelock.cpp
+index 8c28507d5a..e1052917d7 100644
+--- a/src/corelib/thread/qreadwritelock.cpp
++++ b/src/corelib/thread/qreadwritelock.cpp
+@@ -155,7 +155,7 @@ QReadWriteLock::QReadWriteLock(RecursionMode recursionMode)
+ */
+ QReadWriteLock::~QReadWriteLock()
+ {
+- auto d = d_ptr.loadRelaxed();
++ auto d = d_ptr.loadAcquire();
+ if (isUncontendedLocked(d)) {
+ qWarning("QReadWriteLock: destroying locked QReadWriteLock");
+ return;
+--
+2.36.0
+
+From a7b9d067c2f552000e0e581ff99c14ea580fe02a Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Fri, 13 May 2022 18:21:01 +0200
+Subject: [PATCH 142/146] QReadWriteLock: fix another data race in
+ stateForWaitCondition()
+
+The writerCount member variable is only ever accessed under
+Private::mutex protection, so we need to lock the mutex here, too.
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: I1717e5282eed2ecc14ccdc5090b9fc41174cccc8
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit 0ca2cf42e0de422634f13fb6a5e5a9d7560b323b)
+---
+ src/corelib/thread/qreadwritelock.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/corelib/thread/qreadwritelock.cpp b/src/corelib/thread/qreadwritelock.cpp
+index e1052917d7..f030f9fd6c 100644
+--- a/src/corelib/thread/qreadwritelock.cpp
++++ b/src/corelib/thread/qreadwritelock.cpp
+@@ -453,6 +453,7 @@ QReadWriteLock::StateForWaitCondition QReadWriteLock::stateForWaitCondition() co
+
+ if (!d)
+ return Unlocked;
++ const auto lock = qt_scoped_lock(d->mutex);
+ if (d->writerCount > 1)
+ return RecursivelyLocked;
+ else if (d->writerCount == 1)
+--
+2.36.0
+
+From da0bc958f3ed031c1119fb631841393045bec7ca Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Fri, 13 May 2022 18:21:01 +0200
+Subject: [PATCH 143/146] QReadWriteLock: fix data race in
+ stateForWaitCondition()
+
+The function dereferences the load()ed pointer, so it needs an acquire
+fence.
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: Ib951de3f00851d915fec3392cdaba64f4a994300
+Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit 68f220c93b3e831a3f9b8cee0df6bd2ec69f7a11)
+---
+ src/corelib/thread/qreadwritelock.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/corelib/thread/qreadwritelock.cpp b/src/corelib/thread/qreadwritelock.cpp
+index f030f9fd6c..9dd8503116 100644
+--- a/src/corelib/thread/qreadwritelock.cpp
++++ b/src/corelib/thread/qreadwritelock.cpp
+@@ -445,7 +445,7 @@ void QReadWriteLock::unlock()
+ /*! \internal Helper for QWaitCondition::wait */
+ QReadWriteLock::StateForWaitCondition QReadWriteLock::stateForWaitCondition() const
+ {
+- QReadWriteLockPrivate *d = d_ptr.loadRelaxed();
++ QReadWriteLockPrivate *d = d_ptr.loadAcquire();
+ switch (quintptr(d) & StateMask) {
+ case StateLockedForRead: return LockedForRead;
+ case StateLockedForWrite: return LockedForWrite;
+--
+2.36.0
+
+From 0b45b0e13a87f08f5a3f452000aa26734d3c2bdf Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Tue, 17 May 2022 17:13:04 +0200
+Subject: [PATCH 144/146] Fix data race in QObject::moveToThread()
+
+We dereference thisThreadData in the next line, at a point in time
+where we haven't, yet, verified that it's this_thread's QThreadData,
+so we need an acquire fence.
+
+The alternative would be to re-arrange the code so that dereferencing
+the pointer is delayed until after we verified it's this_thread's, but
+that doesn't seem readily possible.
+
+Even if it was easy, we'd first need to verify whether there are any
+writes into QThreadData objects after they've been constructed, in
+which case the acquire fence may be needed even in case it's 'ours'.
+
+So just add the acquire fence.
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: I468bc1f971bd87345bfcd6c13b7384bdf09d086a
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit 5dc724d98dec8b4dfaa04132cac227d1909ca825)
+---
+ src/corelib/kernel/qobject.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
+index 9385419015..0124f88abd 100644
+--- a/src/corelib/kernel/qobject.cpp
++++ b/src/corelib/kernel/qobject.cpp
+@@ -1547,7 +1547,7 @@ void QObject::moveToThread(QThread *targetThread)
+
+ QThreadData *currentData = QThreadData::current();
+ QThreadData *targetData = targetThread ? QThreadData::get2(targetThread) : nullptr;
+- QThreadData *thisThreadData = d->threadData.loadRelaxed();
++ QThreadData *thisThreadData = d->threadData.loadAcquire();
+ if (!thisThreadData->thread.loadAcquire() && currentData == targetData) {
+ // one exception to the rule: we allow moving objects with no thread affinity to the current thread
+ currentData = d->threadData;
+--
+2.36.0
+
+From 45534600dfaaa5ad120dfb2efa60cff8243ae15a Mon Sep 17 00:00:00 2001
+From: David Faure <david.faure@kdab.com>
+Date: Wed, 23 Feb 2022 00:45:27 +0100
+Subject: [PATCH 145/146] QAbstractItemModel: fix persistent index corruption
+ when moving columns
+
+QHeaderView creates persistent indexes in
+_q_sectionsAboutToBeChanged(), called by the slot connected to
+rowsAboutToBeMoved/columnsAboutToBeMoved.
+
+In the case of rows, QAbstractItemModel emits the signal *before*
+preparing to update persistent indexes in itemsAboutToBeMoved(),
+so it can see the ones newly created by QHeaderView, all is well.
+
+In the case of columns, the emit was done *after* calling
+itemsAboutToBeMoved(), so the additional persistent indexes created by
+QHeaderView were ignored, and in endMoveRows() we could end up with:
+ASSERT failure in QPersistentModelIndex::~QPersistentModelIndex: "persistent model indexes corrupted"
+
+This bug has been there since the very beginning of beginMoveColumns(),
+but was undetected because moving columns in a model is pretty rare
+(in my case there's a QTransposeProxyModel that turns columns into
+rows in the underlying model, and a proxy that handles dropMimeData...)
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: I74bad137594019a04c2a19c2abb351ff3065c25a
+Reviewed-by: Andreas Buhr <andreas.buhr@qt.io>
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com>
+(cherry picked from commit 74a4d88e9a002ec30b4bb7bbaf7776b458ae15db)
+---
+ src/corelib/itemmodels/qabstractitemmodel.cpp | 4 +---
+ .../itemviews/qheaderview/tst_qheaderview.cpp | 20 +++++++++++++++++++
+ 2 files changed, 21 insertions(+), 3 deletions(-)
+
+diff --git a/src/corelib/itemmodels/qabstractitemmodel.cpp b/src/corelib/itemmodels/qabstractitemmodel.cpp
+index 3a79c502af..997a634e76 100644
+--- a/src/corelib/itemmodels/qabstractitemmodel.cpp
++++ b/src/corelib/itemmodels/qabstractitemmodel.cpp
+@@ -3196,9 +3196,8 @@ bool QAbstractItemModel::beginMoveColumns(const QModelIndex &sourceParent, int s
+ destinationChange.needsAdjust = destinationParent.isValid() && destinationParent.row() >= sourceLast && destinationParent.parent() == sourceParent;
+ d->changes.push(destinationChange);
+
+- d->itemsAboutToBeMoved(sourceParent, sourceFirst, sourceLast, destinationParent, destinationChild, Qt::Horizontal);
+-
+ emit columnsAboutToBeMoved(sourceParent, sourceFirst, sourceLast, destinationParent, destinationChild, QPrivateSignal());
++ d->itemsAboutToBeMoved(sourceParent, sourceFirst, sourceLast, destinationParent, destinationChild, Qt::Horizontal);
+ return true;
+ }
+
+@@ -3231,7 +3230,6 @@ void QAbstractItemModel::endMoveColumns()
+ adjustedSource = createIndex(adjustedSource.row(), adjustedSource.column() + numMoved, adjustedSource.internalPointer());
+
+ d->itemsMoved(adjustedSource, removeChange.first, removeChange.last, adjustedDestination, insertChange.first, Qt::Horizontal);
+-
+ emit columnsMoved(adjustedSource, removeChange.first, removeChange.last, adjustedDestination, insertChange.first, QPrivateSignal());
+ }
+
+diff --git a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp
+index c355ee9665..88c09de8e0 100644
+--- a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp
++++ b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp
+@@ -251,6 +251,7 @@ private slots:
+ void testResetCachedSizeHint();
+ void statusTips();
+ void testRemovingColumnsViaLayoutChanged();
++ void testModelMovingColumns();
+
+ protected:
+ void setupTestData(bool use_reset_model = false);
+@@ -360,6 +361,12 @@ public:
+ endRemoveColumns();
+ }
+
++ void moveColumn(int from, int to)
++ {
++ beginMoveColumns(QModelIndex(), from, from, QModelIndex(), to);
++ endMoveColumns();
++ }
++
+ void cleanup()
+ {
+ emit layoutAboutToBeChanged();
+@@ -3627,5 +3634,18 @@ void tst_QHeaderView::testRemovingColumnsViaLayoutChanged()
+ // The main point of this test is that the section-size restoring code didn't go out of bounds.
+ }
+
++void tst_QHeaderView::testModelMovingColumns()
++{
++ QtTestModel model(10, 10);
++ QHeaderView hv(Qt::Horizontal);
++ hv.setModel(&model);
++ hv.resizeSections(QHeaderView::ResizeToContents);
++ hv.show();
++
++ QPersistentModelIndex index3 = model.index(0, 3);
++ model.moveColumn(3, 1);
++ QCOMPARE(index3.column(), 1);
++}
++
+ QTEST_MAIN(tst_QHeaderView)
+ #include "tst_qheaderview.moc"
+--
+2.36.0
+
+From a19d88a641e09e1fa5532c73b86df3bf75acc741 Mon Sep 17 00:00:00 2001
+From: Christian Ehrlicher <ch.ehrlicher@gmx.de>
+Date: Mon, 21 Dec 2020 14:16:57 +0100
+Subject: [PATCH 146/146] QPushButton/fusion style: don't ignore QIcon::On icon
+
+The fusion style did ignore the QIcon::On icon because it reset State_On
+to avoid the visual shift of a pressed button.
+But it's not needed to reset this flag - the shift does not happen
+because the fusion style does return 0 as offset for
+PM_ButtonShiftHorizontal/PM_ButtonShiftVertical so no shifting will
+happen.
+
+Fixes: QTBUG-86736
+Fixes: QTBUG-82110
+Change-Id: Ie2aaddb14bc67874f5a9a23d9f04d7a08c6d070f
+Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
+Reviewed-by: Richard Moe Gustavsen <richard.gustavsen@qt.io>
+(cherry picked from commit e9ccdf4d8415717323ea7849ded195343560514a)
+---
+ src/widgets/styles/qfusionstyle.cpp | 8 --------
+ 1 file changed, 8 deletions(-)
+
+diff --git a/src/widgets/styles/qfusionstyle.cpp b/src/widgets/styles/qfusionstyle.cpp
+index f4345d97c4..962912c838 100644
+--- a/src/widgets/styles/qfusionstyle.cpp
++++ b/src/widgets/styles/qfusionstyle.cpp
+@@ -1772,14 +1772,6 @@ void QFusionStyle::drawControl(ControlElement element, const QStyleOption *optio
+ proxy()->drawControl(CE_PushButtonLabel, &subopt, painter, widget);
+ }
+ break;
+- case CE_PushButtonLabel:
+- if (const QStyleOptionButton *button = qstyleoption_cast<const QStyleOptionButton *>(option)) {
+- QStyleOptionButton b(*button);
+- // no PM_ButtonShiftHorizontal and PM_ButtonShiftVertical for fusion style
+- b.state &= ~(State_On | State_Sunken);
+- QCommonStyle::drawControl(element, &b, painter, widget);
+- }
+- break;
+ case CE_MenuBarEmptyArea:
+ painter->save();
+ {
+--
+2.36.0
+
diff --git a/user/qt5-qtbase/qt-musl-iconv-no-bom.patch b/user/qt5-qtbase/qt-musl-iconv-no-bom.patch
index 8bf35ec1e..9df5d594d 100644
--- a/user/qt5-qtbase/qt-musl-iconv-no-bom.patch
+++ b/user/qt5-qtbase/qt-musl-iconv-no-bom.patch
@@ -1,6 +1,6 @@
--- qtbase/src/corelib/codecs/qiconvcodec.cpp 2017-01-18 15:20:58.000000000 +0100
+++ qtbase/src/corelib/codecs/qiconvcodec.cpp 2017-02-21 14:33:32.423808603 +0100
-@@ -64,7 +64,7 @@
+@@ -61,7 +61,7 @@
#elif defined(Q_OS_AIX)
# define NO_BOM
# define UTF16 "UCS-2"
diff --git a/user/qt5-qtdeclarative/APKBUILD b/user/qt5-qtdeclarative/APKBUILD
index 6518c3716..403094791 100644
--- a/user/qt5-qtdeclarative/APKBUILD
+++ b/user/qt5-qtdeclarative/APKBUILD
@@ -1,34 +1,33 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtdeclarative
-_pkgname=${pkgname/qt5-/}-opensource-src
-pkgver=5.9.7
+_pkgname=${pkgname#qt5-}-everywhere
+pkgver=5.15.4
pkgrel=0
-pkgdesc="Qt 5 - Qt Declarative and Qt Quick 2"
+pkgdesc="Qt Declarative and Qt Quick 2"
url="https://www.qt.io/"
arch="all"
-license="LGPL-2.0 with exceptions OR GPL-3.0 with exceptions"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
+depends=""
makedepends="qt5-qtbase-dev libexecinfo-dev python3"
subpackages="$pkgname-dev"
-source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz
+ kde-lts.patch
add-execinfo.patch
- python3.patch
+ endian.patch
"
_qt5_prefix=/usr/lib/qt5
-builddir="$srcdir"/$_pkgname-$pkgver
+builddir="$srcdir"/$_pkgname-src-$pkgver
build() {
- cd "$builddir"
qmake && make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make install INSTALL_ROOT="$pkgdir"
mkdir -p "$pkgdir"/usr/bin/
@@ -37,6 +36,7 @@ package() {
done
}
-sha512sums="bccddeca26c317083fcebc182dd3221dcbe9af665c502bfb636907f2c17a6edd8874a964910423c9eaa6e5c68bf5a13520193ba77f915be08ba1982348d2a9ee qtdeclarative-opensource-src-5.9.7.tar.xz
-065ab2440fd0a81e76fe8873b0991929fad3d4189c8938e0205e94478a6cdce81ef710e3bad19cd5ca0b5ea0f8b3cd1b366969ddede51070496d1d02ace59220 add-execinfo.patch
-c434ec3b3eaa8859cc3a3ce48d0299533428d94c998876e5735c210b25f89bc8509980cee0d96f2e68331540f95b5f1ec5e9745949d26367bde1d15bc7ac9081 python3.patch"
+sha512sums="8a4ff61238fde7cc563f9d94b5d1f4fd71ecb95ace447e57d08f71da82400b37c42f4f1ecdcd561116bffa1ed483219e06fb550f91c90842e5a43487bc4706b6 qtdeclarative-everywhere-opensource-src-5.15.4.tar.xz
+7ef2bc3258a22dee2024c2a61102905d3bcbd0ac5fcea4797308b42e85d1410c16f592a5d2465460a9cb534d720dda05794e59d415736c71533a1e96618b9928 kde-lts.patch
+7aad59e1b3a7c1e22638f43e4eb2d3e343b3463a16af99fa8609a94f368c58e08f44fb35754a71cd65c4cbfb7f8edc9c41179e04325128c96a6dfcb83aeaa48a add-execinfo.patch
+70745f3636f00b9a3ae15af896d8b7edc037a83f58f833497066aef0ad3101c5475ddc0588925aacd500fa1d70080cae2881e82d3a5fb9ca134d600da60ffd66 endian.patch"
diff --git a/user/qt5-qtdeclarative/add-execinfo.patch b/user/qt5-qtdeclarative/add-execinfo.patch
index 92fbe43ac..f6d2c43fe 100644
--- a/user/qt5-qtdeclarative/add-execinfo.patch
+++ b/user/qt5-qtdeclarative/add-execinfo.patch
@@ -5,7 +5,7 @@ build is musl or glibc from qmake.
--- qtdeclarative-opensource-src-5.9.6/src/quick/quick.pro.old 2018-05-30 11:29:13.000000000 +0000
+++ qtdeclarative-opensource-src-5.9.6/src/quick/quick.pro 2018-07-10 00:42:03.150000000 +0000
-@@ -16,6 +16,8 @@
+@@ -19,6 +19,8 @@
LIBS_PRIVATE += -lgcov
}
diff --git a/user/qt5-qtdeclarative/broken-bgra-be.patch b/user/qt5-qtdeclarative/broken-bgra-be.patch
deleted file mode 100644
index 68cd17d77..000000000
--- a/user/qt5-qtdeclarative/broken-bgra-be.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- qtdeclarative-opensource-src-5.9.3/src/quick/scenegraph/util/qsgatlastexture.cpp.old 2017-11-17 12:15:09.000000000 -0600
-+++ qtdeclarative-opensource-src-5.9.3/src/quick/scenegraph/util/qsgatlastexture.cpp 2018-07-02 21:00:34.620000000 -0500
-@@ -147,6 +147,8 @@
- && (deviceName->compare(QLatin1String("samsung SM-T211"), Qt::CaseInsensitive) == 0
- || deviceName->compare(QLatin1String("samsung SM-T210"), Qt::CaseInsensitive) == 0
- || deviceName->compare(QLatin1String("samsung SM-T215"), Qt::CaseInsensitive) == 0);
-+#elif Q_BYTE_ORDER == Q_BIG_ENDIAN
-+ static bool wrongfullyReportsBgra8888Support = true;
- #else
- static bool wrongfullyReportsBgra8888Support = false;
- // The Raspberry Pi (both 1 and 2) GPU refuses framebuffers with BGRA color attachments.
diff --git a/user/qt5-qtdeclarative/endian.patch b/user/qt5-qtdeclarative/endian.patch
new file mode 100644
index 000000000..27a098191
--- /dev/null
+++ b/user/qt5-qtdeclarative/endian.patch
@@ -0,0 +1,31 @@
+From 15b3a8fc8635e04fa7ea1275b910772d8f2820a2 Mon Sep 17 00:00:00 2001
+From: q66 <daniel@octaforge.org>
+Date: Sun, 10 May 2020 02:44:47 +0200
+Subject: [PATCH] always default to qtquick software backend on big endian
+
+the default backend is buggy and breaks rendering of various
+components of KDE Plasma and LXQt, so just default to software
+so the user doesn't have to specify QT_QUICK_BACKEND
+---
+ qtdeclarative/src/quick/scenegraph/qsgcontextplugin.cpp | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git qtdeclarative/src/quick/scenegraph/qsgcontextplugin.cpp qtdeclarative/src/quick/scenegraph/qsgcontextplugin.cpp
+index 66add51..a0fdaa2 100644
+--- qtdeclarative/src/quick/scenegraph/qsgcontextplugin.cpp
++++ qtdeclarative/src/quick/scenegraph/qsgcontextplugin.cpp
+@@ -138,7 +138,10 @@ QSGAdaptationBackendData *contextFactory()
+ // If this platform does not support OpenGL, and no backend has been set
+ // default to the software renderer
+ if (requestedBackend.isEmpty()
+- && !QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::OpenGL)) {
++#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
++ && !QGuiApplicationPrivate::platformIntegration()->hasCapability(QPlatformIntegration::OpenGL)
++#endif
++ ) {
+ requestedBackend = QString::fromLocal8Bit("software");
+ }
+
+--
+2.25.1
+
diff --git a/user/qt5-qtdeclarative/kde-lts.patch b/user/qt5-qtdeclarative/kde-lts.patch
new file mode 100644
index 000000000..c09ed5232
--- /dev/null
+++ b/user/qt5-qtdeclarative/kde-lts.patch
@@ -0,0 +1,1724 @@
+From eb1025d7808f04e3f114b08c86a5e680b2d18010 Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <albert.astals.cid@kdab.com>
+Date: Fri, 21 May 2021 13:30:41 +0200
+Subject: [PATCH 01/19] Give a warning when StyledText encounters a non
+ supported entity
+
+Pick-to: 6.1 5.15
+Change-Id: Iea8bdf25542cd404ee71141467ac1f1398a7d0df
+Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
+(cherry picked from commit 8cd43e370040e23fcbd03ad64969e683055bd7d0)
+---
+ src/quick/util/qquickstyledtext.cpp | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/quick/util/qquickstyledtext.cpp b/src/quick/util/qquickstyledtext.cpp
+index 660852ba83..d531fc9205 100644
+--- a/src/quick/util/qquickstyledtext.cpp
++++ b/src/quick/util/qquickstyledtext.cpp
+@@ -46,6 +46,8 @@
+ #include "qquickstyledtext_p.h"
+ #include <QQmlContext>
+
++Q_LOGGING_CATEGORY(lcStyledText, "qt.quick.styledtext")
++
+ /*
+ QQuickStyledText supports few tags:
+
+@@ -566,6 +568,8 @@ void QQuickStyledTextPrivate::parseEntity(const QChar *&ch, const QString &textI
+ textOut += QChar(34);
+ else if (entity == QLatin1String("nbsp"))
+ textOut += QChar(QChar::Nbsp);
++ else
++ qCWarning(lcStyledText) << "StyledText doesn't support entity" << entity;
+ return;
+ } else if (*ch == QLatin1Char(' ')) {
+ QStringRef entity(&textIn, entityStart - 1, entityLength + 1);
+--
+2.36.0
+
+From ba07a40a2afacfb57ddb8f7cb4cc90a39560f17d Mon Sep 17 00:00:00 2001
+From: Antonio Rojas <arojas@archlinux.org>
+Date: Sun, 23 May 2021 14:32:46 +0200
+Subject: [PATCH 02/19] Add missing limits include to fix build with GCC 11
+
+This is not required for Qt 6, since it is indirectly pulled via
+qanystrigview.h, but it is for Qt 5 (where qanystrigview does
+not exist) and, in any case, it is good to declare all used headers
+and not rely on them being implicitly pulled.
+
+Pick-to: 6.1 5.15
+Change-Id: I97606ea493e723006759608b7d4c4f00632f340c
+Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
+(cherry picked from commit 367293b18ab0d0a0432c1c8ce445fee052e5eee5)
+---
+ src/qmldebug/qqmlprofilerevent_p.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/qmldebug/qqmlprofilerevent_p.h b/src/qmldebug/qqmlprofilerevent_p.h
+index a7e37d1964..01b2f58f16 100644
+--- a/src/qmldebug/qqmlprofilerevent_p.h
++++ b/src/qmldebug/qqmlprofilerevent_p.h
+@@ -48,6 +48,7 @@
+ #include <QtCore/qmetatype.h>
+
+ #include <initializer_list>
++#include <limits>
+ #include <type_traits>
+
+ //
+--
+2.36.0
+
+From eb9ebe3815ac100d4ab3b3a708f691a1dde270bf Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <albert.astals.cid@kdab.com>
+Date: Fri, 21 May 2021 13:17:15 +0200
+Subject: [PATCH 03/19] Document that StyledText also supports &nbsp; and
+ &quot;
+
+Change-Id: I1715f8ae8ec8d0fbaf6dbe2b8663cc169da663cd
+Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
+(cherry picked from commit 5848c081c094a66e024493fc1e5c2569e06f73b6)
+---
+ src/quick/items/qquicktext.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp
+index 6230186933..c1571fc6f5 100644
+--- a/src/quick/items/qquicktext.cpp
++++ b/src/quick/items/qquicktext.cpp
+@@ -2168,7 +2168,7 @@ void QQuickText::resetMaximumLineCount()
+ <img src="" align="top,middle,bottom" width="" height=""> - inline images
+ <ol type="">, <ul type=""> and <li> - ordered and unordered lists
+ <pre></pre> - preformatted
+- &gt; &lt; &amp;
++ &gt; &lt; &amp; &quot; &nbsp;
+ \endcode
+
+ \c Text.StyledText parser is strict, requiring tags to be correctly nested.
+--
+2.36.0
+
+From 0aea240ef6d78989ef16ea1d41e161c641c2667c Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <albert.astals.cid@kdab.com>
+Date: Fri, 21 May 2021 13:42:35 +0200
+Subject: [PATCH 04/19] Support &apos; in styled text
+
+Pick-to: 6.1 5.15
+Change-Id: I4a8db963e52a7899ab1796f9a560e8029cc1c929
+Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+(cherry picked from commit 96b528efcba1226d2980828d1255160bdceae4cf)
+---
+ src/quick/items/qquicktext.cpp | 2 +-
+ src/quick/util/qquickstyledtext.cpp | 2 ++
+ 2 files changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp
+index c1571fc6f5..e823ca1095 100644
+--- a/src/quick/items/qquicktext.cpp
++++ b/src/quick/items/qquicktext.cpp
+@@ -2168,7 +2168,7 @@ void QQuickText::resetMaximumLineCount()
+ <img src="" align="top,middle,bottom" width="" height=""> - inline images
+ <ol type="">, <ul type=""> and <li> - ordered and unordered lists
+ <pre></pre> - preformatted
+- &gt; &lt; &amp; &quot; &nbsp;
++ &gt; &lt; &amp; &quot; &nbsp; &apos;
+ \endcode
+
+ \c Text.StyledText parser is strict, requiring tags to be correctly nested.
+diff --git a/src/quick/util/qquickstyledtext.cpp b/src/quick/util/qquickstyledtext.cpp
+index d531fc9205..a25af90414 100644
+--- a/src/quick/util/qquickstyledtext.cpp
++++ b/src/quick/util/qquickstyledtext.cpp
+@@ -564,6 +564,8 @@ void QQuickStyledTextPrivate::parseEntity(const QChar *&ch, const QString &textI
+ textOut += QChar(60);
+ else if (entity == QLatin1String("amp"))
+ textOut += QChar(38);
++ else if (entity == QLatin1String("apos"))
++ textOut += QChar(39);
+ else if (entity == QLatin1String("quot"))
+ textOut += QChar(34);
+ else if (entity == QLatin1String("nbsp"))
+--
+2.36.0
+
+From bdf7658d89e1df55ded318432d4412dbf1d5d0f9 Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <albert.astals.cid@kdab.com>
+Date: Thu, 17 Jun 2021 16:32:28 +0200
+Subject: [PATCH 05/19] Remove unused QPointer<QQuickPointerMask>
+
+Change-Id: I009fa6bbd8599dc3bb2e810176fe20e70ed50851
+Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
+(cherry picked from commit ac03b4b8ee9cc8d4522e0c8cf1018ff086f80c1b)
+---
+ src/quick/items/qquickmousearea_p_p.h | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/src/quick/items/qquickmousearea_p_p.h b/src/quick/items/qquickmousearea_p_p.h
+index fba383e268..0d63618622 100644
+--- a/src/quick/items/qquickmousearea_p_p.h
++++ b/src/quick/items/qquickmousearea_p_p.h
+@@ -61,7 +61,6 @@ QT_BEGIN_NAMESPACE
+
+ class QQuickMouseEvent;
+ class QQuickMouseArea;
+-class QQuickPointerMask;
+ class QQuickMouseAreaPrivate : public QQuickItemPrivate
+ {
+ Q_DECLARE_PUBLIC(QQuickMouseArea)
+@@ -100,7 +99,6 @@ public:
+ #if QT_CONFIG(quick_draganddrop)
+ QQuickDrag *drag;
+ #endif
+- QPointer<QQuickPointerMask> mask;
+ QPointF startScene;
+ QPointF targetStartPos;
+ QPointF lastPos;
+--
+2.36.0
+
+From 8da88589929a1d82103c8bbfa80210f3c1af3714 Mon Sep 17 00:00:00 2001
+From: Dmitry Shachnev <mitya57@gmail.com>
+Date: Wed, 18 Aug 2021 22:50:29 +0300
+Subject: [PATCH 06/19] Include <limits> in Yarr.h to fix build with GCC 11
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+- <limits.h> (aka <climits>) is needed for UINT_MAX macro constant.
+- <limits> is needed for std::numeric_limits.
+
+Without this fix, qtdeclarative failed to build on some platforms:
+
+ In file included from jsruntime/qv4regexp_p.h:62,
+ from jsruntime/qv4regexp.cpp:40:
+ ../3rdparty/masm/yarr/Yarr.h:46:44: error: ‘numeric_limits’ is not a member of ‘std’
+ 46 | static const unsigned offsetNoMatch = std::numeric_limits<unsigned>::max();
+ | ^~~~~~~~~~~~~~
+
+Pick-to: 5.15 6.2
+Change-Id: I7cc9f7bc6624a52c8659f09034ab16064da5fd2f
+Reviewed-by: Albert Astals Cid <albert.astals.cid@kdab.com>
+Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
+(cherry picked from commit db58b8518e157b765bf2e01e6382a9eed4751f27)
+---
+ src/3rdparty/masm/yarr/Yarr.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/3rdparty/masm/yarr/Yarr.h b/src/3rdparty/masm/yarr/Yarr.h
+index ccf78f9880..2955ea7e72 100644
+--- a/src/3rdparty/masm/yarr/Yarr.h
++++ b/src/3rdparty/masm/yarr/Yarr.h
+@@ -28,6 +28,7 @@
+ #pragma once
+
+ #include <limits.h>
++#include <limits>
+ #include "YarrErrorCode.h"
+
+ namespace JSC { namespace Yarr {
+--
+2.36.0
+
+From 103503f1cae9e928a4fa8b5e7e1f7af34f1add4d Mon Sep 17 00:00:00 2001
+From: Aleix Pol <aleixpol@kde.org>
+Date: Tue, 21 Sep 2021 00:10:26 +0200
+Subject: [PATCH 07/19] QQuickLoader: Do not incubate if the source arrives
+ after setActive(false)
+
+Otherwise we end up in the crazy place of active being false but item
+being non-null and forces us to workaround within the apps.
+
+Change-Id: I88c27c4b00ccec8b8e0c05a8e10b44fcabfc2e30
+Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
+(cherry picked from commit e78c068700fa74ab3aca6a23ab2450563b1c3a5c)
+Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
+---
+ src/quick/items/qquickloader.cpp | 3 +++
+ .../data/loader-async-race-rect.qml | 10 ++++++++++
+ .../qquickloader/data/loader-async-race.qml | 14 ++++++++++++++
+ .../quick/qquickloader/tst_qquickloader.cpp | 19 +++++++++++++++++++
+ 4 files changed, 46 insertions(+)
+ create mode 100644 tests/auto/quick/qquickloader/data/loader-async-race-rect.qml
+ create mode 100644 tests/auto/quick/qquickloader/data/loader-async-race.qml
+
+diff --git a/src/quick/items/qquickloader.cpp b/src/quick/items/qquickloader.cpp
+index cb4f79a3c2..7fbe66fdda 100644
+--- a/src/quick/items/qquickloader.cpp
++++ b/src/quick/items/qquickloader.cpp
+@@ -737,6 +737,9 @@ void QQuickLoaderPrivate::_q_sourceLoaded()
+ return;
+ }
+
++ if (!active)
++ return;
++
+ QQmlContext *creationContext = component->creationContext();
+ if (!creationContext) creationContext = qmlContext(q);
+ itemContext = new QQmlContext(creationContext);
+diff --git a/tests/auto/quick/qquickloader/data/loader-async-race-rect.qml b/tests/auto/quick/qquickloader/data/loader-async-race-rect.qml
+new file mode 100644
+index 0000000000..a56dcea5ad
+--- /dev/null
++++ b/tests/auto/quick/qquickloader/data/loader-async-race-rect.qml
+@@ -0,0 +1,10 @@
++import QtQuick 2.15
++
++Rectangle {
++ anchors.fill: parent
++ color: "blue"
++ Item {
++ Item {
++ }
++ }
++}
+diff --git a/tests/auto/quick/qquickloader/data/loader-async-race.qml b/tests/auto/quick/qquickloader/data/loader-async-race.qml
+new file mode 100644
+index 0000000000..8ba625c5c1
+--- /dev/null
++++ b/tests/auto/quick/qquickloader/data/loader-async-race.qml
+@@ -0,0 +1,14 @@
++import QtQuick 2.15
++
++Item {
++ id: root
++ Component.onCompleted: {
++ myloader.active = false
++ }
++ Loader {
++ id: myloader
++ anchors.fill: parent
++ asynchronous: true
++ source: "loader-async-race-rect.qml"
++ }
++}
+diff --git a/tests/auto/quick/qquickloader/tst_qquickloader.cpp b/tests/auto/quick/qquickloader/tst_qquickloader.cpp
+index 0f6c811adb..dddacbaa0b 100644
+--- a/tests/auto/quick/qquickloader/tst_qquickloader.cpp
++++ b/tests/auto/quick/qquickloader/tst_qquickloader.cpp
+@@ -132,6 +132,7 @@ private slots:
+ void statusChangeOnlyEmittedOnce();
+
+ void setSourceAndCheckStatus();
++ void asyncLoaderRace();
+ };
+
+ Q_DECLARE_METATYPE(QList<QQmlError>)
+@@ -1496,6 +1497,24 @@ void tst_QQuickLoader::setSourceAndCheckStatus()
+ QCOMPARE(loader->status(), QQuickLoader::Null);
+ }
+
++void tst_QQuickLoader::asyncLoaderRace()
++{
++ QQmlApplicationEngine engine;
++ auto url = testFileUrl("loader-async-race.qml");
++ engine.load(url);
++ auto root = engine.rootObjects().at(0);
++ QVERIFY(root);
++
++ QQuickLoader *loader = root->findChild<QQuickLoader *>();
++ QCOMPARE(loader->active(), false);
++ QCOMPARE(loader->status(), QQuickLoader::Null);
++ QCOMPARE(loader->item(), nullptr);
++
++ QSignalSpy spy(loader, &QQuickLoader::itemChanged);
++ QVERIFY(!spy.wait(100));
++ QCOMPARE(loader->item(), nullptr);
++}
++
+ QTEST_MAIN(tst_QQuickLoader)
+
+ #include "tst_qquickloader.moc"
+--
+2.36.0
+
+From 0fdd8a998075a8b52954724743d3a04c105c6ce2 Mon Sep 17 00:00:00 2001
+From: Aleix Pol <aleixpol@kde.org>
+Date: Thu, 23 Sep 2021 03:43:04 +0200
+Subject: [PATCH 08/19] QQmlDelegateModel: Refresh the view when a column is
+ added at 0
+
+It can happen that a model reports n>0 rows but columns=0 (See
+QConcatenateTablesProxyModel). In those cases we would render glitchy
+items until the elements are marked as dirty.
+
+Change-Id: I615c9cacbb1b6f9dee3898b03476605e5ac39d0a
+Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
+(cherry picked from commit ec9251efb918f37971aeefa1f687d137d037ff12)
+Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
+Signed-off-by: Aleix Pol <aleixpol@kde.org>
+---
+ src/qmlmodels/qqmldelegatemodel.cpp | 44 +++++++++++++++++++
+ src/qmlmodels/qqmldelegatemodel_p.h | 3 ++
+ .../data/redrawUponColumnChange.qml | 11 +++++
+ .../tst_qqmldelegatemodel.cpp | 27 ++++++++++++
+ 4 files changed, 85 insertions(+)
+ create mode 100644 tests/auto/qml/qqmldelegatemodel/data/redrawUponColumnChange.qml
+
+diff --git a/src/qmlmodels/qqmldelegatemodel.cpp b/src/qmlmodels/qqmldelegatemodel.cpp
+index 26ded63c41..53e511303e 100644
+--- a/src/qmlmodels/qqmldelegatemodel.cpp
++++ b/src/qmlmodels/qqmldelegatemodel.cpp
+@@ -389,6 +389,12 @@ void QQmlDelegateModelPrivate::connectToAbstractItemModel()
+ q, QQmlDelegateModel, SLOT(_q_rowsRemoved(QModelIndex,int,int)));
+ qmlobject_connect(aim, QAbstractItemModel, SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)),
+ q, QQmlDelegateModel, SLOT(_q_rowsAboutToBeRemoved(QModelIndex,int,int)));
++ qmlobject_connect(aim, QAbstractItemModel, SIGNAL(columnsInserted(QModelIndex,int,int)),
++ q, QQmlDelegateModel, SLOT(_q_columnsInserted(QModelIndex,int,int)));
++ qmlobject_connect(aim, QAbstractItemModel, SIGNAL(columnsRemoved(QModelIndex,int,int)),
++ q, QQmlDelegateModel, SLOT(_q_columnsRemoved(QModelIndex,int,int)));
++ qmlobject_connect(aim, QAbstractItemModel, SIGNAL(columnsMoved(QModelIndex,int,int,QModelIndex,int)),
++ q, QQmlDelegateModel, SLOT(_q_columnsMoved(QModelIndex,int,int,QModelIndex,int)));
+ qmlobject_connect(aim, QAbstractItemModel, SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)),
+ q, QQmlDelegateModel, SLOT(_q_dataChanged(QModelIndex,QModelIndex,QVector<int>)));
+ qmlobject_connect(aim, QAbstractItemModel, SIGNAL(rowsMoved(QModelIndex,int,int,QModelIndex,int)),
+@@ -413,6 +419,12 @@ void QQmlDelegateModelPrivate::disconnectFromAbstractItemModel()
+ q, SLOT(_q_rowsAboutToBeRemoved(QModelIndex,int,int)));
+ QObject::disconnect(aim, SIGNAL(rowsRemoved(QModelIndex,int,int)),
+ q, SLOT(_q_rowsRemoved(QModelIndex,int,int)));
++ QObject::disconnect(aim, SIGNAL(columnsInserted(QModelIndex,int,int)), q,
++ SLOT(_q_columnsInserted(QModelIndex,int,int)));
++ QObject::disconnect(aim, SIGNAL(columnsRemoved(QModelIndex,int,int)), q,
++ SLOT(_q_columnsRemoved(QModelIndex,int,int)));
++ QObject::disconnect(aim, SIGNAL(columnsMoved(QModelIndex,int,int,QModelIndex,int)), q,
++ SLOT(_q_columnsMoved(QModelIndex,int,int,QModelIndex,int)));
+ QObject::disconnect(aim, SIGNAL(dataChanged(QModelIndex,QModelIndex,QVector<int>)),
+ q, SLOT(_q_dataChanged(QModelIndex,QModelIndex,QVector<int>)));
+ QObject::disconnect(aim, SIGNAL(rowsMoved(QModelIndex,int,int,QModelIndex,int)),
+@@ -1958,6 +1970,38 @@ void QQmlDelegateModel::_q_rowsMoved(
+ }
+ }
+
++void QQmlDelegateModel::_q_columnsInserted(const QModelIndex &parent, int begin, int end)
++{
++ Q_D(QQmlDelegateModel);
++ Q_UNUSED(end);
++ if (parent == d->m_adaptorModel.rootIndex && begin == 0) {
++ // mark all items as changed
++ _q_itemsChanged(0, d->m_count, QVector<int>());
++ }
++}
++
++void QQmlDelegateModel::_q_columnsRemoved(const QModelIndex &parent, int begin, int end)
++{
++ Q_D(QQmlDelegateModel);
++ Q_UNUSED(end);
++ if (parent == d->m_adaptorModel.rootIndex && begin == 0) {
++ // mark all items as changed
++ _q_itemsChanged(0, d->m_count, QVector<int>());
++ }
++}
++
++void QQmlDelegateModel::_q_columnsMoved(const QModelIndex &parent, int start, int end,
++ const QModelIndex &destination, int column)
++{
++ Q_D(QQmlDelegateModel);
++ Q_UNUSED(end);
++ if ((parent == d->m_adaptorModel.rootIndex && start == 0)
++ || (destination == d->m_adaptorModel.rootIndex && column == 0)) {
++ // mark all items as changed
++ _q_itemsChanged(0, d->m_count, QVector<int>());
++ }
++}
++
+ void QQmlDelegateModel::_q_dataChanged(const QModelIndex &begin, const QModelIndex &end, const QVector<int> &roles)
+ {
+ Q_D(QQmlDelegateModel);
+diff --git a/src/qmlmodels/qqmldelegatemodel_p.h b/src/qmlmodels/qqmldelegatemodel_p.h
+index 8aab4badca..d140bfbaaf 100644
+--- a/src/qmlmodels/qqmldelegatemodel_p.h
++++ b/src/qmlmodels/qqmldelegatemodel_p.h
+@@ -152,6 +152,9 @@ private Q_SLOTS:
+ void _q_itemsMoved(int from, int to, int count);
+ void _q_modelReset();
+ void _q_rowsInserted(const QModelIndex &,int,int);
++ void _q_columnsInserted(const QModelIndex &, int, int);
++ void _q_columnsRemoved(const QModelIndex &, int, int);
++ void _q_columnsMoved(const QModelIndex &, int, int, const QModelIndex &, int);
+ void _q_rowsAboutToBeRemoved(const QModelIndex &parent, int begin, int end);
+ void _q_rowsRemoved(const QModelIndex &,int,int);
+ void _q_rowsMoved(const QModelIndex &, int, int, const QModelIndex &, int);
+diff --git a/tests/auto/qml/qqmldelegatemodel/data/redrawUponColumnChange.qml b/tests/auto/qml/qqmldelegatemodel/data/redrawUponColumnChange.qml
+new file mode 100644
+index 0000000000..206133bb39
+--- /dev/null
++++ b/tests/auto/qml/qqmldelegatemodel/data/redrawUponColumnChange.qml
+@@ -0,0 +1,11 @@
++import QtQuick 2.8
++
++ListView {
++ id: root
++ width: 200
++ height: 200
++
++ delegate: Text {
++ text: display
++ }
++}
+diff --git a/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp b/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp
+index 71550a50f3..4c1eae7ac7 100644
+--- a/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp
++++ b/tests/auto/qml/qqmldelegatemodel/tst_qqmldelegatemodel.cpp
+@@ -27,6 +27,8 @@
+ ****************************************************************************/
+
+ #include <QtTest/qtest.h>
++#include <QtCore/QConcatenateTablesProxyModel>
++#include <QtGui/QStandardItemModel>
+ #include <QtQml/qqmlcomponent.h>
+ #include <QtQmlModels/private/qqmldelegatemodel_p.h>
+ #include <QtQuick/qquickview.h>
+@@ -45,6 +47,7 @@ private slots:
+ void valueWithoutCallingObjectFirst_data();
+ void valueWithoutCallingObjectFirst();
+ void filterOnGroup_removeWhenCompleted();
++ void redrawUponColumnChange();
+ };
+
+ class AbstractItemModel : public QAbstractItemModel
+@@ -149,6 +152,30 @@ void tst_QQmlDelegateModel::filterOnGroup_removeWhenCompleted()
+ QTest::qWaitFor([=]{ return model->count() == 2; } );
+ }
+
++void tst_QQmlDelegateModel::redrawUponColumnChange()
++{
++ QStandardItemModel m1;
++ m1.appendRow({
++ new QStandardItem("Banana"),
++ new QStandardItem("Coconut"),
++ });
++
++ QQuickView view(testFileUrl("redrawUponColumnChange.qml"));
++ QCOMPARE(view.status(), QQuickView::Ready);
++ view.show();
++ QQuickItem *root = view.rootObject();
++ root->setProperty("model", QVariant::fromValue<QObject *>(&m1));
++
++ QObject *item = root->property("currentItem").value<QObject *>();
++ QVERIFY(item);
++ QCOMPARE(item->property("text").toString(), "Banana");
++
++ QVERIFY(root);
++ m1.removeColumn(0);
++
++ QCOMPARE(item->property("text").toString(), "Coconut");
++}
++
+ QTEST_MAIN(tst_QQmlDelegateModel)
+
+ #include "tst_qqmldelegatemodel.moc"
+--
+2.36.0
+
+From f2d1bfa96bedb09c27f52a802b03cbefb17a0257 Mon Sep 17 00:00:00 2001
+From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
+Date: Sun, 10 Oct 2021 21:04:21 +0300
+Subject: [PATCH 09/19] Fix sweep step for tainted QObject JavaScript wrappers
+
+Currently, whenever the garbage collector runs, it will destroy all
+valid tainted wrappers.
+
+Only null or undefined wrappers will be preserved in the
+m_multiplyWrappedQObjects map.
+
+It seems like "!" was overlooked in
+3b5d37ce3841c4bfdf1c629d33f0e33b881b47fb. Prior to that change, it
+was "!it.value()->markBit()", so calling erase() in the then branch
+did make sense. But with "!it.value().isNullOrUndefined()", erase()
+will be called for every valid wrapper, which is the opposite what we
+want.
+
+Pick-to: 5.15 6.2
+Change-Id: I2bf2630f538af8cbd4bfffcff29d67be6c278265
+Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
+(cherry picked from commit e6b2f88d892dcf396580a61662f569bf69d6d9d1)
+---
+ src/qml/memory/qv4mm.cpp | 2 +-
+ tests/auto/qml/qjsengine/tst_qjsengine.cpp | 39 ++++++++++++++++++++++
+ tests/auto/qml/qv4mm/tst_qv4mm.cpp | 6 ++--
+ 3 files changed, 43 insertions(+), 4 deletions(-)
+
+diff --git a/src/qml/memory/qv4mm.cpp b/src/qml/memory/qv4mm.cpp
+index 06caf04e5a..da149a67c4 100644
+--- a/src/qml/memory/qv4mm.cpp
++++ b/src/qml/memory/qv4mm.cpp
+@@ -981,7 +981,7 @@ void MemoryManager::sweep(bool lastSweep, ClassDestroyStatsCallback classCountPt
+
+ if (MultiplyWrappedQObjectMap *multiplyWrappedQObjects = engine->m_multiplyWrappedQObjects) {
+ for (MultiplyWrappedQObjectMap::Iterator it = multiplyWrappedQObjects->begin(); it != multiplyWrappedQObjects->end();) {
+- if (!it.value().isNullOrUndefined())
++ if (it.value().isNullOrUndefined())
+ it = multiplyWrappedQObjects->erase(it);
+ else
+ ++it;
+diff --git a/tests/auto/qml/qjsengine/tst_qjsengine.cpp b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
+index 3b7d74df63..b75bf820d5 100644
+--- a/tests/auto/qml/qjsengine/tst_qjsengine.cpp
++++ b/tests/auto/qml/qjsengine/tst_qjsengine.cpp
+@@ -102,6 +102,7 @@ private slots:
+ void valueConversion_RegularExpression();
+ void castWithMultipleInheritance();
+ void collectGarbage();
++ void collectGarbageNestedWrappersTwoEngines();
+ void gcWithNestedDataStructure();
+ void stacktrace();
+ void numberParsing_data();
+@@ -1809,6 +1810,44 @@ void tst_QJSEngine::collectGarbage()
+ QVERIFY(ptr.isNull());
+ }
+
++class TestObjectContainer : public QObject
++{
++ Q_OBJECT
++ Q_PROPERTY(QObject *dummy MEMBER m_dummy CONSTANT)
++
++public:
++ TestObjectContainer() : m_dummy(new QObject(this)) {}
++
++private:
++ QObject *m_dummy;
++};
++
++void tst_QJSEngine::collectGarbageNestedWrappersTwoEngines()
++{
++ QJSEngine engine1;
++ QJSEngine engine2;
++
++ TestObjectContainer container;
++ QQmlEngine::setObjectOwnership(&container, QQmlEngine::CppOwnership);
++
++ engine1.globalObject().setProperty("foobar", engine1.newQObject(&container));
++ engine2.globalObject().setProperty("foobar", engine2.newQObject(&container));
++
++ engine1.evaluate("foobar.dummy.baz = 42");
++ engine2.evaluate("foobar.dummy.baz = 43");
++
++ QCOMPARE(engine1.evaluate("foobar.dummy.baz").toInt(), 42);
++ QCOMPARE(engine2.evaluate("foobar.dummy.baz").toInt(), 43);
++
++ engine1.collectGarbage();
++ engine2.collectGarbage();
++
++ // The GC should not collect dummy object wrappers neither in engine1 nor engine2, we
++ // verify that by checking whether the baz property still has its previous value.
++ QCOMPARE(engine1.evaluate("foobar.dummy.baz").toInt(), 42);
++ QCOMPARE(engine2.evaluate("foobar.dummy.baz").toInt(), 43);
++}
++
+ void tst_QJSEngine::gcWithNestedDataStructure()
+ {
+ // The GC must be able to traverse deeply nested objects, otherwise this
+diff --git a/tests/auto/qml/qv4mm/tst_qv4mm.cpp b/tests/auto/qml/qv4mm/tst_qv4mm.cpp
+index 5d635aa63b..824fd89e5b 100644
+--- a/tests/auto/qml/qv4mm/tst_qv4mm.cpp
++++ b/tests/auto/qml/qv4mm/tst_qv4mm.cpp
+@@ -76,10 +76,10 @@ void tst_qv4mm::multiWrappedQObjects()
+ QCOMPARE(engine1.memoryManager->m_pendingFreedObjectWrapperValue.size(), 1);
+ QCOMPARE(engine2.memoryManager->m_pendingFreedObjectWrapperValue.size(), 0);
+
+- // Moves the additional WeakValue from m_multiplyWrappedQObjects to
+- // m_pendingFreedObjectWrapperValue. It's still alive after all.
++ // The additional WeakValue from m_multiplyWrappedQObjects hasn't been moved
++ // to m_pendingFreedObjectWrapperValue yet. It's still alive after all.
+ engine1.memoryManager->runGC();
+- QCOMPARE(engine1.memoryManager->m_pendingFreedObjectWrapperValue.size(), 2);
++ QCOMPARE(engine1.memoryManager->m_pendingFreedObjectWrapperValue.size(), 1);
+
+ // engine2 doesn't own the object as engine1 was the first to wrap it above.
+ // Therefore, no effect here.
+--
+2.36.0
+
+From b884339e8b6dd8dcaed9704afda2ebed4fcaf9b5 Mon Sep 17 00:00:00 2001
+From: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+Date: Tue, 12 Oct 2021 13:13:01 +0200
+Subject: [PATCH 10/19] Fix distorted text with subpixel matrix translation
+
+We would pixel-align native text *before* applying the
+model-view matrix, which would cause GL_NEAREST artifacts to
+show up when the text was positioned at a subpixel offset in
+some cases. Instead, we pixel-align the coordinates after mapping
+them to the view frustum, but before applying the projection to the
+screen.
+
+To make it easier to modify the buffer layout for the shaders the
+next time, this also adds some constants for offsets.
+
+[ChangeLog][Text] Fixed an issue where text using NativeRendering
+would look slightly skewed if it was inside a parent that had
+been positioned at a subpixel offset.
+
+Pick-to: 5.15 6.2
+Fixes: QTBUG-96112
+Fixes: QTBUG-83626
+Task-number: QTBUG-55638
+Change-Id: Ifb785ad5830093df94afc75a7bc288e24ca7aa38
+Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
+(cherry picked from commit b21948f5e811ce1b7abf065bc48af61a231e86f4)
+---
+ .../scenegraph/qsgdefaultglyphnode_p.cpp | 46 ++++++----
+ .../scenegraph/shaders_ng/24bittextmask.frag | 5 +-
+ .../scenegraph/shaders_ng/32bitcolortext.frag | 5 +-
+ .../scenegraph/shaders_ng/8bittextmask.frag | 3 +-
+ .../scenegraph/shaders_ng/8bittextmask_a.frag | 3 +-
+ .../scenegraph/shaders_ng/outlinedtext.frag | 5 +-
+ .../scenegraph/shaders_ng/outlinedtext.vert | 9 +-
+ .../scenegraph/shaders_ng/outlinedtext_a.frag | 5 +-
+ .../scenegraph/shaders_ng/styledtext.frag | 3 +-
+ .../scenegraph/shaders_ng/styledtext.vert | 7 +-
+ .../scenegraph/shaders_ng/styledtext_a.frag | 3 +-
+ src/quick/scenegraph/shaders_ng/textmask.frag | 3 +-
+ src/quick/scenegraph/shaders_ng/textmask.vert | 7 +-
+ ...text_nativerendering_subpixelpositions.qml | 91 +++++++++++++++++++
+ 14 files changed, 155 insertions(+), 40 deletions(-)
+ create mode 100644 tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml
+
+diff --git a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp
+index 3c60f830de..0fd6581dc4 100644
+--- a/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp
++++ b/src/quick/scenegraph/qsgdefaultglyphnode_p.cpp
+@@ -428,6 +428,18 @@ QSGTextMaskRhiShader::QSGTextMaskRhiShader(QFontEngine::GlyphFormat glyphFormat)
+ QStringLiteral(":/qt-project.org/scenegraph/shaders_ng/textmask.frag.qsb"));
+ }
+
++enum UbufOffset {
++ ModelViewMatrixOffset = 0,
++ ProjectionMatrixOffset = ModelViewMatrixOffset + 64,
++ ColorOffset = ProjectionMatrixOffset + 64,
++ TextureScaleOffset = ColorOffset + 16,
++ DprOffset = TextureScaleOffset + 8,
++
++ // + 1 float padding (vec4 must be aligned to 16)
++ StyleColorOffset = DprOffset + 4 + 4,
++ ShiftOffset = StyleColorOffset + 16
++};
++
+ bool QSGTextMaskRhiShader::updateUniformData(RenderState &state,
+ QSGMaterial *newMaterial, QSGMaterial *oldMaterial)
+ {
+@@ -443,11 +455,14 @@ bool QSGTextMaskRhiShader::updateUniformData(RenderState &state,
+
+ bool changed = false;
+ QByteArray *buf = state.uniformData();
+- Q_ASSERT(buf->size() >= 92);
++ Q_ASSERT(buf->size() >= DprOffset + 4);
+
+ if (state.isMatrixDirty()) {
+- const QMatrix4x4 m = state.combinedMatrix();
+- memcpy(buf->data(), m.constData(), 64);
++ const QMatrix4x4 mv = state.modelViewMatrix();
++ memcpy(buf->data() + ModelViewMatrixOffset, mv.constData(), 64);
++ const QMatrix4x4 p = state.projectionMatrix();
++ memcpy(buf->data() + ProjectionMatrixOffset, p.constData(), 64);
++
+ changed = true;
+ }
+
+@@ -456,13 +471,13 @@ bool QSGTextMaskRhiShader::updateUniformData(RenderState &state,
+ if (updated || !oldMat || oldRtex != newRtex) {
+ const QVector2D textureScale = QVector2D(1.0f / mat->rhiGlyphCache()->width(),
+ 1.0f / mat->rhiGlyphCache()->height());
+- memcpy(buf->data() + 64 + 16, &textureScale, 8);
++ memcpy(buf->data() + TextureScaleOffset, &textureScale, 8);
+ changed = true;
+ }
+
+ if (!oldMat) {
+ float dpr = state.devicePixelRatio();
+- memcpy(buf->data() + 64 + 16 + 8, &dpr, 4);
++ memcpy(buf->data() + DprOffset, &dpr, 4);
+ }
+
+ // move texture uploads/copies onto the renderer's soon-to-be-committed list
+@@ -510,11 +525,11 @@ bool QSG8BitTextMaskRhiShader::updateUniformData(RenderState &state,
+ QSGTextMaskMaterial *oldMat = static_cast<QSGTextMaskMaterial *>(oldMaterial);
+
+ QByteArray *buf = state.uniformData();
+- Q_ASSERT(buf->size() >= 80);
++ Q_ASSERT(buf->size() >= ColorOffset + 16);
+
+ if (oldMat == nullptr || mat->color() != oldMat->color() || state.isOpacityDirty()) {
+ const QVector4D color = qsg_premultiply(mat->color(), state.opacity());
+- memcpy(buf->data() + 64, &color, 16);
++ memcpy(buf->data() + ColorOffset, &color, 16);
+ changed = true;
+ }
+
+@@ -553,12 +568,12 @@ bool QSG24BitTextMaskRhiShader::updateUniformData(RenderState &state,
+ QSGTextMaskMaterial *oldMat = static_cast<QSGTextMaskMaterial *>(oldMaterial);
+
+ QByteArray *buf = state.uniformData();
+- Q_ASSERT(buf->size() >= 92);
++ Q_ASSERT(buf->size() >= ColorOffset + 16);
+
+ if (oldMat == nullptr || mat->color() != oldMat->color() || state.isOpacityDirty()) {
+ // shader takes vec4 but uses alpha only; coloring happens via the blend constant
+ const QVector4D color = qsg_premultiply(mat->color(), state.opacity());
+- memcpy(buf->data() + 64, &color, 16);
++ memcpy(buf->data() + ColorOffset, &color, 16);
+ changed = true;
+ }
+
+@@ -608,12 +623,12 @@ bool QSG32BitColorTextRhiShader::updateUniformData(RenderState &state,
+ QSGTextMaskMaterial *oldMat = static_cast<QSGTextMaskMaterial *>(oldMaterial);
+
+ QByteArray *buf = state.uniformData();
+- Q_ASSERT(buf->size() >= 92);
++ Q_ASSERT(buf->size() >= ColorOffset + 16);
+
+ if (oldMat == nullptr || mat->color() != oldMat->color() || state.isOpacityDirty()) {
+ // shader takes vec4 but uses alpha only
+ const QVector4D color(0, 0, 0, mat->color().w() * state.opacity());
+- memcpy(buf->data() + 64, &color, 16);
++ memcpy(buf->data() + ColorOffset, &color, 16);
+ changed = true;
+ }
+
+@@ -649,20 +664,17 @@ bool QSGStyledTextRhiShader::updateUniformData(RenderState &state,
+ QSGStyledTextMaterial *oldMat = static_cast<QSGStyledTextMaterial *>(oldMaterial);
+
+ QByteArray *buf = state.uniformData();
+- Q_ASSERT(buf->size() >= 120);
+-
+- // matrix..dpr + 1 float padding (vec4 must be aligned to 16)
+- const int startOffset = 64 + 16 + 8 + 4 + 4;
++ Q_ASSERT(buf->size() >= ShiftOffset + 8);
+
+ if (oldMat == nullptr || mat->styleColor() != oldMat->styleColor() || state.isOpacityDirty()) {
+ const QVector4D styleColor = qsg_premultiply(mat->styleColor(), state.opacity());
+- memcpy(buf->data() + startOffset, &styleColor, 16);
++ memcpy(buf->data() + StyleColorOffset, &styleColor, 16);
+ changed = true;
+ }
+
+ if (oldMat == nullptr || oldMat->styleShift() != mat->styleShift()) {
+ const QVector2D v = mat->styleShift();
+- memcpy(buf->data() + startOffset + 16, &v, 8);
++ memcpy(buf->data() + ShiftOffset, &v, 8);
+ changed = true;
+ }
+
+diff --git a/src/quick/scenegraph/shaders_ng/24bittextmask.frag b/src/quick/scenegraph/shaders_ng/24bittextmask.frag
+index bc3826a924..ed8da4cd30 100644
+--- a/src/quick/scenegraph/shaders_ng/24bittextmask.frag
++++ b/src/quick/scenegraph/shaders_ng/24bittextmask.frag
+@@ -6,8 +6,9 @@ layout(location = 0) out vec4 fragColor;
+ layout(binding = 1) uniform sampler2D _qt_texture;
+
+ layout(std140, binding = 0) uniform buf {
+- mat4 matrix;
+- vec4 color; // only alpha is used, but must be vec4 due to layout compat
++ mat4 modelViewMatrix;
++ mat4 projectionMatrix;
++ vec4 color;
+ vec2 textureScale;
+ float dpr;
+ } ubuf;
+diff --git a/src/quick/scenegraph/shaders_ng/32bitcolortext.frag b/src/quick/scenegraph/shaders_ng/32bitcolortext.frag
+index 63e445f90b..4198a4d339 100644
+--- a/src/quick/scenegraph/shaders_ng/32bitcolortext.frag
++++ b/src/quick/scenegraph/shaders_ng/32bitcolortext.frag
+@@ -6,8 +6,9 @@ layout(location = 0) out vec4 fragColor;
+ layout(binding = 1) uniform sampler2D _qt_texture;
+
+ layout(std140, binding = 0) uniform buf {
+- mat4 matrix;
+- vec4 color; // only alpha is used, but must be vec4 due to layout compat
++ mat4 modelViewMatrix;
++ mat4 projectionMatrix;
++ vec4 color;
+ vec2 textureScale;
+ float dpr;
+ } ubuf;
+diff --git a/src/quick/scenegraph/shaders_ng/8bittextmask.frag b/src/quick/scenegraph/shaders_ng/8bittextmask.frag
+index 6304e821ff..a06743876d 100644
+--- a/src/quick/scenegraph/shaders_ng/8bittextmask.frag
++++ b/src/quick/scenegraph/shaders_ng/8bittextmask.frag
+@@ -6,7 +6,8 @@ layout(location = 0) out vec4 fragColor;
+ layout(binding = 1) uniform sampler2D _qt_texture;
+
+ layout(std140, binding = 0) uniform buf {
+- mat4 matrix;
++ mat4 modelViewMatrix;
++ mat4 projectionMatrix;
+ vec4 color;
+ vec2 textureScale;
+ float dpr;
+diff --git a/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag b/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag
+index 0d0fa1cd3a..f725cbc5e7 100644
+--- a/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag
++++ b/src/quick/scenegraph/shaders_ng/8bittextmask_a.frag
+@@ -6,7 +6,8 @@ layout(location = 0) out vec4 fragColor;
+ layout(binding = 1) uniform sampler2D _qt_texture;
+
+ layout(std140, binding = 0) uniform buf {
+- mat4 matrix;
++ mat4 modelViewMatrix;
++ mat4 projectionMatrix;
+ vec4 color;
+ vec2 textureScale;
+ float dpr;
+diff --git a/src/quick/scenegraph/shaders_ng/outlinedtext.frag b/src/quick/scenegraph/shaders_ng/outlinedtext.frag
+index 947d161a50..e2f82d3845 100644
+--- a/src/quick/scenegraph/shaders_ng/outlinedtext.frag
++++ b/src/quick/scenegraph/shaders_ng/outlinedtext.frag
+@@ -11,11 +11,12 @@ layout(location = 0) out vec4 fragColor;
+ layout(binding = 1) uniform sampler2D _qt_texture;
+
+ layout(std140, binding = 0) uniform buf {
+- // must match styledtext
+- mat4 matrix;
++ mat4 modelViewMatrix;
++ mat4 projectionMatrix;
+ vec4 color;
+ vec2 textureScale;
+ float dpr;
++ // the above must stay compatible with textmask/8bittextmask
+ vec4 styleColor;
+ vec2 shift;
+ } ubuf;
+diff --git a/src/quick/scenegraph/shaders_ng/outlinedtext.vert b/src/quick/scenegraph/shaders_ng/outlinedtext.vert
+index 023f9dfdc2..4068e42f28 100644
+--- a/src/quick/scenegraph/shaders_ng/outlinedtext.vert
++++ b/src/quick/scenegraph/shaders_ng/outlinedtext.vert
+@@ -10,11 +10,12 @@ layout(location = 3) out vec2 sCoordLeft;
+ layout(location = 4) out vec2 sCoordRight;
+
+ layout(std140, binding = 0) uniform buf {
+- // must match styledtext
+- mat4 matrix;
++ mat4 modelViewMatrix;
++ mat4 projectionMatrix;
+ vec4 color;
+ vec2 textureScale;
+ float dpr;
++ // the above must stay compatible with textmask/8bittextmask
+ vec4 styleColor;
+ vec2 shift;
+ } ubuf;
+@@ -28,6 +29,6 @@ void main()
+ sCoordDown = (tCoord - vec2(0.0, 1.0)) * ubuf.textureScale;
+ sCoordLeft = (tCoord - vec2(-1.0, 0.0)) * ubuf.textureScale;
+ sCoordRight = (tCoord - vec2(1.0, 0.0)) * ubuf.textureScale;
+- vec3 dprSnapPos = floor(vCoord.xyz * ubuf.dpr + 0.5) / ubuf.dpr;
+- gl_Position = ubuf.matrix * vec4(dprSnapPos, vCoord.w);
++ vec4 xformed = ubuf.modelViewMatrix * vCoord;
++ gl_Position = ubuf.projectionMatrix * vec4(floor(xformed.xyz * ubuf.dpr + 0.5) / ubuf.dpr, xformed.w);
+ }
+diff --git a/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag b/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag
+index 5b7bd9ca82..274d891a3c 100644
+--- a/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag
++++ b/src/quick/scenegraph/shaders_ng/outlinedtext_a.frag
+@@ -11,11 +11,12 @@ layout(location = 0) out vec4 fragColor;
+ layout(binding = 1) uniform sampler2D _qt_texture;
+
+ layout(std140, binding = 0) uniform buf {
+- // must match styledtext
+- mat4 matrix;
++ mat4 modelViewMatrix;
++ mat4 projectionMatrix;
+ vec4 color;
+ vec2 textureScale;
+ float dpr;
++ // the above must stay compatible with textmask/8bittextmask
+ vec4 styleColor;
+ vec2 shift;
+ } ubuf;
+diff --git a/src/quick/scenegraph/shaders_ng/styledtext.frag b/src/quick/scenegraph/shaders_ng/styledtext.frag
+index 0b16396037..2e380dfeae 100644
+--- a/src/quick/scenegraph/shaders_ng/styledtext.frag
++++ b/src/quick/scenegraph/shaders_ng/styledtext.frag
+@@ -8,7 +8,8 @@ layout(location = 0) out vec4 fragColor;
+ layout(binding = 1) uniform sampler2D _qt_texture;
+
+ layout(std140, binding = 0) uniform buf {
+- mat4 matrix;
++ mat4 modelViewMatrix;
++ mat4 projectionMatrix;
+ vec4 color;
+ vec2 textureScale;
+ float dpr;
+diff --git a/src/quick/scenegraph/shaders_ng/styledtext.vert b/src/quick/scenegraph/shaders_ng/styledtext.vert
+index beadf07c79..271dae8d8a 100644
+--- a/src/quick/scenegraph/shaders_ng/styledtext.vert
++++ b/src/quick/scenegraph/shaders_ng/styledtext.vert
+@@ -7,7 +7,8 @@ layout(location = 0) out vec2 sampleCoord;
+ layout(location = 1) out vec2 shiftedSampleCoord;
+
+ layout(std140, binding = 0) uniform buf {
+- mat4 matrix;
++ mat4 modelViewMatrix;
++ mat4 projectionMatrix;
+ vec4 color;
+ vec2 textureScale;
+ float dpr;
+@@ -22,6 +23,6 @@ void main()
+ {
+ sampleCoord = tCoord * ubuf.textureScale;
+ shiftedSampleCoord = (tCoord - ubuf.shift) * ubuf.textureScale;
+- vec3 dprSnapPos = floor(vCoord.xyz * ubuf.dpr + 0.5) / ubuf.dpr;
+- gl_Position = ubuf.matrix * vec4(dprSnapPos, vCoord.w);
++ vec4 xformed = ubuf.modelViewMatrix * vCoord;
++ gl_Position = ubuf.projectionMatrix * vec4(floor(xformed.xyz * ubuf.dpr + 0.5) / ubuf.dpr, xformed.w);
+ }
+diff --git a/src/quick/scenegraph/shaders_ng/styledtext_a.frag b/src/quick/scenegraph/shaders_ng/styledtext_a.frag
+index b673137895..62e162c851 100644
+--- a/src/quick/scenegraph/shaders_ng/styledtext_a.frag
++++ b/src/quick/scenegraph/shaders_ng/styledtext_a.frag
+@@ -8,7 +8,8 @@ layout(location = 0) out vec4 fragColor;
+ layout(binding = 1) uniform sampler2D _qt_texture;
+
+ layout(std140, binding = 0) uniform buf {
+- mat4 matrix;
++ mat4 modelViewMatrix;
++ mat4 projectionMatrix;
+ vec4 color;
+ vec2 textureScale;
+ float dpr;
+diff --git a/src/quick/scenegraph/shaders_ng/textmask.frag b/src/quick/scenegraph/shaders_ng/textmask.frag
+index 518d5c965f..ed8da4cd30 100644
+--- a/src/quick/scenegraph/shaders_ng/textmask.frag
++++ b/src/quick/scenegraph/shaders_ng/textmask.frag
+@@ -6,7 +6,8 @@ layout(location = 0) out vec4 fragColor;
+ layout(binding = 1) uniform sampler2D _qt_texture;
+
+ layout(std140, binding = 0) uniform buf {
+- mat4 matrix;
++ mat4 modelViewMatrix;
++ mat4 projectionMatrix;
+ vec4 color;
+ vec2 textureScale;
+ float dpr;
+diff --git a/src/quick/scenegraph/shaders_ng/textmask.vert b/src/quick/scenegraph/shaders_ng/textmask.vert
+index 9d80d5dadb..e0b3c01bce 100644
+--- a/src/quick/scenegraph/shaders_ng/textmask.vert
++++ b/src/quick/scenegraph/shaders_ng/textmask.vert
+@@ -6,7 +6,8 @@ layout(location = 1) in vec2 tCoord;
+ layout(location = 0) out vec2 sampleCoord;
+
+ layout(std140, binding = 0) uniform buf {
+- mat4 matrix;
++ mat4 modelViewMatrix;
++ mat4 projectionMatrix;
+ vec4 color;
+ vec2 textureScale;
+ float dpr;
+@@ -17,6 +18,6 @@ out gl_PerVertex { vec4 gl_Position; };
+ void main()
+ {
+ sampleCoord = tCoord * ubuf.textureScale;
+- vec3 dprSnapPos = floor(vCoord.xyz * ubuf.dpr + 0.5) / ubuf.dpr;
+- gl_Position = ubuf.matrix * vec4(dprSnapPos, vCoord.w);
++ vec4 xformed = ubuf.modelViewMatrix * vCoord;
++ gl_Position = ubuf.projectionMatrix * vec4(floor(xformed.xyz * ubuf.dpr + 0.5) / ubuf.dpr, xformed.w);
+ }
+diff --git a/tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml b/tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml
+new file mode 100644
+index 0000000000..c60fc4d8b0
+--- /dev/null
++++ b/tests/manual/scenegraph_lancelot/data/text/text_nativerendering_subpixelpositions.qml
+@@ -0,0 +1,91 @@
++import QtQuick 2.0
++
++//vary font style, native rendering at non-integer offsets
++
++Item {
++ id: topLevel
++ width: 320
++ height: 580
++
++ Repeater {
++ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken]
++ Text {
++ y: 20 * index
++ clip: true
++ renderType: Text.NativeRendering
++ width: parent.width
++ wrapMode: Text.Wrap
++ font.pointSize: 10
++ style: modelData
++ styleColor: "green"
++ text: "The quick fox jumps in style " + modelData
++ }
++ }
++
++ Repeater {
++ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken]
++ Text {
++ y: 100.5 + 20 * index
++ clip: true
++ renderType: Text.NativeRendering
++ width: parent.width
++ wrapMode: Text.Wrap
++ font.pointSize: 10
++ style: modelData
++ styleColor: "green"
++ text: "The quick fox jumps in style " + modelData
++ }
++ }
++
++ Repeater {
++ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken]
++ Text {
++ y: 200.5 + 20 * index
++ x: 0.5
++ clip: true
++ renderType: Text.NativeRendering
++ width: parent.width
++ wrapMode: Text.Wrap
++ font.pointSize: 10
++ style: modelData
++ styleColor: "green"
++ text: "The quick fox jumps in style " + modelData
++ }
++ }
++
++ Repeater {
++ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken]
++ Text {
++ y: 300.5 + 20 * index
++ x: 0.5
++ clip: true
++ renderType: Text.NativeRendering
++ width: parent.width
++ wrapMode: Text.Wrap
++ font.pointSize: 10
++ style: modelData
++ styleColor: "green"
++ text: "The quick fox jumps in style " + modelData
++ }
++ }
++
++ Repeater {
++ model: [Text.Normal, Text.Outline, Text.Raised, Text.Sunken]
++ Rectangle {
++ y: 400.5 + 20 * index
++ x: 0.5
++ width: topLevel.width
++ height: topLevel.height
++ clip: true
++ Text {
++ renderType: Text.NativeRendering
++ width: parent.width
++ wrapMode: Text.Wrap
++ font.pointSize: 10
++ style: modelData
++ styleColor: "green"
++ text: "The quick fox jumps in style " + modelData
++ }
++ }
++ }
++}
+--
+2.36.0
+
+From 8b0a4b1a329010e056b19fdd9940bad2036b5f57 Mon Sep 17 00:00:00 2001
+From: Laszlo Agocs <laszlo.agocs@qt.io>
+Date: Mon, 11 Oct 2021 15:37:33 +0200
+Subject: [PATCH 11/19] Revert "Fix for possible crash in
+ QSGDefaultLayer::grab"
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+This reverts commit 1c5de027d0c31d1d6697bd0557128d92207763d8.
+
+The fix here is not correct. Calling a QSGRhiLayer function from the gui
+thread is very wrong and can cause a set of unexpected issues. The
+Address Sanitizer catches this by recognizing that the render thread is
+trying to do something with an object destroyed in the meantime on the
+main thread in the layer->setItem(null) call.
+
+The issue the original fix is trying to address needs to be addressed in
+some different form.
+
+Fixes: QTBUG-94975
+Pick-to: 6.2 6.1 5.15
+Change-Id: I46f904026281201fc6d233ed7d3bdc7080934afe
+Reviewed-by: Christian Strømme <christian.stromme@qt.io>
+(cherry picked from commit a5f0361622eb08eab6c3474d5fc249d1962e3d1e)
+---
+ src/quick/items/qquickshadereffectsource.cpp | 8 --------
+ src/quick/items/qquickshadereffectsource_p.h | 1 -
+ 2 files changed, 9 deletions(-)
+
+diff --git a/src/quick/items/qquickshadereffectsource.cpp b/src/quick/items/qquickshadereffectsource.cpp
+index 4f61d61309..b298ed74da 100644
+--- a/src/quick/items/qquickshadereffectsource.cpp
++++ b/src/quick/items/qquickshadereffectsource.cpp
+@@ -344,7 +344,6 @@ void QQuickShaderEffectSource::setSourceItem(QQuickItem *item)
+ d->refFromEffectItem(m_hideSource);
+ d->addItemChangeListener(this, QQuickItemPrivate::Geometry);
+ connect(m_sourceItem, SIGNAL(destroyed(QObject*)), this, SLOT(sourceItemDestroyed(QObject*)));
+- connect(m_sourceItem, SIGNAL(parentChanged(QQuickItem*)), this, SLOT(sourceItemParentChanged(QQuickItem*)));
+ } else {
+ qWarning("ShaderEffectSource: sourceItem and ShaderEffectSource must both be children of the same window.");
+ m_sourceItem = nullptr;
+@@ -364,13 +363,6 @@ void QQuickShaderEffectSource::sourceItemDestroyed(QObject *item)
+ }
+
+
+-void QQuickShaderEffectSource::sourceItemParentChanged(QQuickItem *parent)
+-{
+- if (!parent && m_texture)
+- m_texture->setItem(0);
+-}
+-
+-
+ /*!
+ \qmlproperty rect QtQuick::ShaderEffectSource::sourceRect
+
+diff --git a/src/quick/items/qquickshadereffectsource_p.h b/src/quick/items/qquickshadereffectsource_p.h
+index 4deb6c70a3..c0a1ccab78 100644
+--- a/src/quick/items/qquickshadereffectsource_p.h
++++ b/src/quick/items/qquickshadereffectsource_p.h
+@@ -173,7 +173,6 @@ Q_SIGNALS:
+ private Q_SLOTS:
+ void sourceItemDestroyed(QObject *item);
+ void invalidateSceneGraph();
+- void sourceItemParentChanged(QQuickItem *parent);
+
+ protected:
+ void releaseResources() override;
+--
+2.36.0
+
+From 0e201d3561cecc8a1e982f81095f14af1dc3ceca Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jan=20Arve=20S=C3=A6ther?= <jan-arve.saether@qt.io>
+Date: Thu, 3 Sep 2020 10:51:01 +0200
+Subject: [PATCH 12/19] Fix TapHandler so that it actually registers a tap
+
+This bug caused all quick examples that used the
+shared\LauncherList.qml to be broken.
+
+In QtGui, QSinglePointEvent will construct itself with a point id of 0
+if there is a valid point, and with a point id of -1 if the point is
+invalid (the default constructor does the latter).
+However, QQuickSinglePointHandler::wantsPointerEvent() did not agree
+with that, because it assumed that a point id of 0 meant
+uninitialized/invalid point.
+The fix is to change QQuickSinglePointHandler::wantsPointerEvent() and
+QQuickHandlerPoint so that it assumes that the id -1 is now an invalid
+point, (instead of 0)
+
+Change-Id: I8c9683dfe06ebb77c5342a26f08174b67e7cbd90
+Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io>
+(cherry picked from commit 8d3a91016506fd0afedb0be535f7c34a4ca762f6)
+---
+ src/quick/handlers/qquickhandlerpoint.cpp | 4 ++--
+ src/quick/handlers/qquicksinglepointhandler.cpp | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/quick/handlers/qquickhandlerpoint.cpp b/src/quick/handlers/qquickhandlerpoint.cpp
+index 72efdfd0f4..6aef3545dd 100644
+--- a/src/quick/handlers/qquickhandlerpoint.cpp
++++ b/src/quick/handlers/qquickhandlerpoint.cpp
+@@ -82,7 +82,7 @@ void QQuickHandlerPoint::localize(QQuickItem *item)
+
+ void QQuickHandlerPoint::reset()
+ {
+- m_id = 0;
++ m_id = -1;
+ m_uniqueId = QPointingDeviceUniqueId();
+ m_position = QPointF();
+ m_scenePosition = QPointF();
+@@ -165,7 +165,7 @@ void QQuickHandlerPoint::reset(const QVector<QQuickHandlerPoint> &points)
+ pressureSum += point.pressure();
+ ellipseDiameterSum += point.ellipseDiameters();
+ }
+- m_id = 0;
++ m_id = -1;
+ m_uniqueId = QPointingDeviceUniqueId();
+ // all points are required to be from the same event, so pressed buttons and modifiers should be the same
+ m_pressedButtons = points.first().pressedButtons();
+diff --git a/src/quick/handlers/qquicksinglepointhandler.cpp b/src/quick/handlers/qquicksinglepointhandler.cpp
+index b51f53b74f..89081b4e84 100644
+--- a/src/quick/handlers/qquicksinglepointhandler.cpp
++++ b/src/quick/handlers/qquicksinglepointhandler.cpp
+@@ -75,7 +75,7 @@ bool QQuickSinglePointHandler::wantsPointerEvent(QQuickPointerEvent *event)
+ if (!QQuickPointerDeviceHandler::wantsPointerEvent(event))
+ return false;
+
+- if (d->pointInfo.id()) {
++ if (d->pointInfo.id() != -1) {
+ // We already know which one we want, so check whether it's there.
+ // It's expected to be an update or a release.
+ // If we no longer want it, cancel the grab.
+@@ -125,7 +125,7 @@ bool QQuickSinglePointHandler::wantsPointerEvent(QQuickPointerEvent *event)
+ chosen->setAccepted();
+ }
+ }
+- return d->pointInfo.id();
++ return d->pointInfo.id() != -1;
+ }
+
+ void QQuickSinglePointHandler::handlePointerEventImpl(QQuickPointerEvent *event)
+--
+2.36.0
+
+From 5af400361da5d66427c68bf743c8def70b7cbc8e Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <aacid@kde.org>
+Date: Tue, 16 Nov 2021 22:43:37 +0100
+Subject: [PATCH 13/19] Revert "Fix TapHandler so that it actually registers a
+ tap"
+
+This reverts commit 36e8ccd434f948e4f11a8f9d59139ec072e41ff5.
+
+It's causing regresions
+---
+ src/quick/handlers/qquickhandlerpoint.cpp | 4 ++--
+ src/quick/handlers/qquicksinglepointhandler.cpp | 4 ++--
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/quick/handlers/qquickhandlerpoint.cpp b/src/quick/handlers/qquickhandlerpoint.cpp
+index 6aef3545dd..72efdfd0f4 100644
+--- a/src/quick/handlers/qquickhandlerpoint.cpp
++++ b/src/quick/handlers/qquickhandlerpoint.cpp
+@@ -82,7 +82,7 @@ void QQuickHandlerPoint::localize(QQuickItem *item)
+
+ void QQuickHandlerPoint::reset()
+ {
+- m_id = -1;
++ m_id = 0;
+ m_uniqueId = QPointingDeviceUniqueId();
+ m_position = QPointF();
+ m_scenePosition = QPointF();
+@@ -165,7 +165,7 @@ void QQuickHandlerPoint::reset(const QVector<QQuickHandlerPoint> &points)
+ pressureSum += point.pressure();
+ ellipseDiameterSum += point.ellipseDiameters();
+ }
+- m_id = -1;
++ m_id = 0;
+ m_uniqueId = QPointingDeviceUniqueId();
+ // all points are required to be from the same event, so pressed buttons and modifiers should be the same
+ m_pressedButtons = points.first().pressedButtons();
+diff --git a/src/quick/handlers/qquicksinglepointhandler.cpp b/src/quick/handlers/qquicksinglepointhandler.cpp
+index 89081b4e84..b51f53b74f 100644
+--- a/src/quick/handlers/qquicksinglepointhandler.cpp
++++ b/src/quick/handlers/qquicksinglepointhandler.cpp
+@@ -75,7 +75,7 @@ bool QQuickSinglePointHandler::wantsPointerEvent(QQuickPointerEvent *event)
+ if (!QQuickPointerDeviceHandler::wantsPointerEvent(event))
+ return false;
+
+- if (d->pointInfo.id() != -1) {
++ if (d->pointInfo.id()) {
+ // We already know which one we want, so check whether it's there.
+ // It's expected to be an update or a release.
+ // If we no longer want it, cancel the grab.
+@@ -125,7 +125,7 @@ bool QQuickSinglePointHandler::wantsPointerEvent(QQuickPointerEvent *event)
+ chosen->setAccepted();
+ }
+ }
+- return d->pointInfo.id() != -1;
++ return d->pointInfo.id();
+ }
+
+ void QQuickSinglePointHandler::handlePointerEventImpl(QQuickPointerEvent *event)
+--
+2.36.0
+
+From 9a3aaa96c58d167ab9eec0d0c8105853e8c6117a Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Tue, 21 Dec 2021 09:20:17 +0100
+Subject: [PATCH 14/19] QQmlJs::FixedPoolArray: fix UB (precondition violation)
+ in allocate()
+
+Says ubsan:
+
+ qqmljsfixedpoolarray_p.h:90:19: runtime error: null pointer passed as argument 2, which is declared to never be null
+
+Fix, like in so many other places, by a size check.
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: I9181d6ecb467c2dc726978ce7f93b35a6bf2f944
+Reviewed-by: Lars Knoll <lars.knoll@qt.io>
+(cherry picked from commit d74e931f3fc2587ac6d1e2930acbbe54ea5be2b5)
+---
+ src/qml/common/qqmljsfixedpoolarray_p.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/qml/common/qqmljsfixedpoolarray_p.h b/src/qml/common/qqmljsfixedpoolarray_p.h
+index b65b994d6c..15a8cd6878 100644
+--- a/src/qml/common/qqmljsfixedpoolarray_p.h
++++ b/src/qml/common/qqmljsfixedpoolarray_p.h
+@@ -86,7 +86,7 @@ public:
+ if (QTypeInfo<T>::isComplex) {
+ for (int i = 0; i < count; ++i)
+ new (data + i) T(vector.at(i));
+- } else {
++ } else if (count) {
+ memcpy(data, static_cast<const void*>(vector.constData()), count * sizeof(T));
+ }
+ }
+--
+2.36.0
+
+From 2dc624d1f7771d4e93ad7f5293fb43cf539b1ca4 Mon Sep 17 00:00:00 2001
+From: Ulf Hermann <ulf.hermann@qt.io>
+Date: Thu, 3 Feb 2022 10:02:06 +0100
+Subject: [PATCH 15/19] V4: Do not call dtor of an object we continue to use
+
+After destroyObject(), the QObjectWrapper is still alive. We might use
+its heap object again. Furthermore, the Heap::QObjectWrapper dtor does
+not actually do anything defined. What we want to do here is clear the
+QObject pointer because we've just gotten rid of the QObject. There is a
+method for that: Heap::QObjectWrapper::destroy().
+
+Finally, the internalClass must never ever be nullptr. Assert on that
+rather than checking it.
+
+Pick-to: 5.15 6.2 6.3
+Task-number: QTBUG-100431
+Change-Id: I794a295c182b2ed4ba80673f58d6143c861b7391
+Reviewed-by: Andrei Golubev <andrei.golubev@qt.io>
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
+(cherry picked from commit 6c197319f34b8098d034f1543eb5feb9d7be54c3)
+---
+ src/qml/jsruntime/qv4qobjectwrapper.cpp | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/src/qml/jsruntime/qv4qobjectwrapper.cpp b/src/qml/jsruntime/qv4qobjectwrapper.cpp
+index 9899c9274e..272b85069f 100644
+--- a/src/qml/jsruntime/qv4qobjectwrapper.cpp
++++ b/src/qml/jsruntime/qv4qobjectwrapper.cpp
+@@ -1160,8 +1160,7 @@ void Heap::QObjectWrapper::markObjects(Heap::Base *that, QV4::MarkStack *markSta
+ void QObjectWrapper::destroyObject(bool lastCall)
+ {
+ Heap::QObjectWrapper *h = d();
+- if (!h->internalClass)
+- return; // destroyObject already got called
++ Q_ASSERT(h->internalClass);
+
+ if (h->object()) {
+ QQmlData *ddata = QQmlData::get(h->object(), false);
+@@ -1191,7 +1190,7 @@ void QObjectWrapper::destroyObject(bool lastCall)
+ }
+ }
+
+- h->~Data();
++ h->destroy();
+ }
+
+
+--
+2.36.0
+
+From 5eee7419f55c592a24d9c7746df0f197d8f0a71d Mon Sep 17 00:00:00 2001
+From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
+Date: Sat, 29 Jan 2022 21:59:33 +0200
+Subject: [PATCH 16/19] Make sure QQuickWidget and its offscreen window's
+ screens are always in sync
+
+By default, the offscreen window is placed on the primary screen.
+However, if the parent widget argument is passed to the QQuickWidget's
+constructor, then QQuickWidget's and the offscreen window's screens can
+be different and that can create rendering issues, e.g. blurry text if
+the primary screen and QQuickWidget's screen have different scale
+factors.
+
+Change-Id: I10c62b5635664f943b11828773f14017f198a770
+Reviewed-by: David Edmundson <davidedmundson@kde.org>
+Reviewed-by: Laszlo Agocs <laszlo.agocs@qt.io>
+(cherry picked from commit a2a2734bffa1459639b31fb3f4f83873ba44ab5c)
+---
+ src/quickwidgets/qquickwidget.cpp | 26 +++++++++++---------------
+ 1 file changed, 11 insertions(+), 15 deletions(-)
+
+diff --git a/src/quickwidgets/qquickwidget.cpp b/src/quickwidgets/qquickwidget.cpp
+index 39780f8de3..223d91f579 100644
+--- a/src/quickwidgets/qquickwidget.cpp
++++ b/src/quickwidgets/qquickwidget.cpp
+@@ -106,6 +106,7 @@ void QQuickWidgetPrivate::init(QQmlEngine* e)
+
+ renderControl = new QQuickWidgetRenderControl(q);
+ offscreenWindow = new QQuickWindow(*new QQuickOffcreenWindowPrivate(),renderControl);
++ offscreenWindow->setScreen(q->screen());
+ offscreenWindow->setTitle(QString::fromLatin1("Offscreen"));
+ offscreenWindow->setObjectName(QString::fromLatin1("QQuickOffScreenWindow"));
+ // Do not call create() on offscreenWindow.
+@@ -901,9 +902,7 @@ void QQuickWidgetPrivate::createContext()
+
+ context = new QOpenGLContext;
+ context->setFormat(offscreenWindow->requestedFormat());
+- const QWindow *win = q->window()->windowHandle();
+- if (win && win->screen())
+- context->setScreen(win->screen());
++ context->setScreen(q->screen());
+ QOpenGLContext *shareContext = qt_gl_global_share_context();
+ if (!shareContext)
+ shareContext = QWidgetPrivate::get(q->window())->shareContext();
+@@ -1520,19 +1519,16 @@ bool QQuickWidget::event(QEvent *e)
+ d->handleWindowChange();
+ break;
+
+- case QEvent::ScreenChangeInternal:
+- if (QWindow *window = this->window()->windowHandle()) {
+- QScreen *newScreen = window->screen();
+-
+- if (d->offscreenWindow)
+- d->offscreenWindow->setScreen(newScreen);
+- if (d->offscreenSurface)
+- d->offscreenSurface->setScreen(newScreen);
++ case QEvent::ScreenChangeInternal: {
++ QScreen *newScreen = screen();
++ if (d->offscreenWindow)
++ d->offscreenWindow->setScreen(newScreen);
++ if (d->offscreenSurface)
++ d->offscreenSurface->setScreen(newScreen);
+ #if QT_CONFIG(opengl)
+- if (d->context)
+- d->context->setScreen(newScreen);
++ if (d->context)
++ d->context->setScreen(newScreen);
+ #endif
+- }
+
+ if (d->useSoftwareRenderer
+ #if QT_CONFIG(opengl)
+@@ -1545,7 +1541,7 @@ bool QQuickWidget::event(QEvent *e)
+ d->render(true);
+ }
+ break;
+-
++ }
+ case QEvent::Show:
+ case QEvent::Move:
+ d->updatePosition();
+--
+2.36.0
+
+From 51efb2ed2f071beda188270a23ac450fe4b318f7 Mon Sep 17 00:00:00 2001
+From: Fabian Kosmale <fabian.kosmale@qt.io>
+Date: Wed, 4 May 2022 09:10:54 +0200
+Subject: [PATCH 17/19] QQuickItem: Guard against cycles in
+ nextPrevItemInTabFocusChain
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+nextPrevItemInTabFocusChain already had a check to prevent running into
+cycles, it would however only detect if we reached the original item. If
+our cycle instead would loop between reachable items without ever
+returning to the initial one, as in the diagram below, then we would
+never terminate the loop.
+
+ /-->other item<---next item
+initial-item \ ^
+ \ |
+ --->different item
+
+To prevent this from happening, we keep track of all items we've seen so
+far. One last complications arises due to the fact that we do visit the
+parent twice under some cicrcumstances, but we already have the skip
+variable to indicate that case – we simply skip the duplicate check if
+it is set to true.
+
+Pick-to: 6.2 6.3
+Fixes: QTBUG-87190
+Change-Id: I1449a7ebf8f325f00c296e8a8db4360faf1049e4
+Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
+(cherry picked from commit e74bcf751495d9fe27efd195bc04e2a6ae6732a4)
+---
+ src/quick/items/qquickitem.cpp | 7 ++++++-
+ .../data/activeFocusOnTab_infiniteLoop3.qml | 13 +++++++++++++
+ tests/auto/quick/qquickitem2/tst_qquickitem.cpp | 12 ++++++++++++
+ 3 files changed, 31 insertions(+), 1 deletion(-)
+ create mode 100644 tests/auto/quick/qquickitem2/data/activeFocusOnTab_infiniteLoop3.qml
+
+diff --git a/src/quick/items/qquickitem.cpp b/src/quick/items/qquickitem.cpp
+index 497672b497..81b0db0b69 100644
+--- a/src/quick/items/qquickitem.cpp
++++ b/src/quick/items/qquickitem.cpp
+@@ -59,6 +59,7 @@
+ #include <QtCore/private/qnumeric_p.h>
+ #include <QtGui/qpa/qplatformtheme.h>
+ #include <QtCore/qloggingcategory.h>
++#include <QtCore/private/qduplicatetracker_p.h>
+
+ #include <private/qqmlglobal_p.h>
+ #include <private/qqmlengine_p.h>
+@@ -2520,6 +2521,7 @@ QQuickItem* QQuickItemPrivate::nextPrevItemInTabFocusChain(QQuickItem *item, boo
+ QQuickItem *current = item;
+ qCDebug(DBG_FOCUS) << "QQuickItemPrivate::nextPrevItemInTabFocusChain: startItem:" << startItem;
+ qCDebug(DBG_FOCUS) << "QQuickItemPrivate::nextPrevItemInTabFocusChain: firstFromItem:" << firstFromItem;
++ QDuplicateTracker<QQuickItem *> cycleDetector;
+ do {
+ qCDebug(DBG_FOCUS) << "QQuickItemPrivate::nextPrevItemInTabFocusChain: current:" << current;
+ qCDebug(DBG_FOCUS) << "QQuickItemPrivate::nextPrevItemInTabFocusChain: from:" << from;
+@@ -2586,7 +2588,10 @@ QQuickItem* QQuickItemPrivate::nextPrevItemInTabFocusChain(QQuickItem *item, boo
+ // traversed all of the chain (by compare the [current] item with [startItem])
+ // Since the [startItem] might be promoted to its parent if it is invisible,
+ // we still have to check [current] item with original start item
+- if ((current == startItem || current == originalStartItem) && from == firstFromItem) {
++ // We might also run into a cycle before we reach firstFromItem again
++ // but note that we have to ignore current if we are meant to skip it
++ if (((current == startItem || current == originalStartItem) && from == firstFromItem) ||
++ (!skip && cycleDetector.hasSeen(current))) {
+ // wrapped around, avoid endless loops
+ if (item == contentItem) {
+ qCDebug(DBG_FOCUS) << "QQuickItemPrivate::nextPrevItemInTabFocusChain: looped, return contentItem";
+diff --git a/tests/auto/quick/qquickitem2/data/activeFocusOnTab_infiniteLoop3.qml b/tests/auto/quick/qquickitem2/data/activeFocusOnTab_infiniteLoop3.qml
+new file mode 100644
+index 0000000000..889e480f3b
+--- /dev/null
++++ b/tests/auto/quick/qquickitem2/data/activeFocusOnTab_infiniteLoop3.qml
+@@ -0,0 +1,13 @@
++import QtQuick 2.6
++
++Item {
++ visible: true
++ Item {
++ visible: false
++ Item {
++ objectName: "hiddenChild"
++ activeFocusOnTab: true
++ focus: true
++ }
++ }
++}
+diff --git a/tests/auto/quick/qquickitem2/tst_qquickitem.cpp b/tests/auto/quick/qquickitem2/tst_qquickitem.cpp
+index f65650cf9c..eeff768bb4 100644
+--- a/tests/auto/quick/qquickitem2/tst_qquickitem.cpp
++++ b/tests/auto/quick/qquickitem2/tst_qquickitem.cpp
+@@ -66,6 +66,7 @@ private slots:
+ void activeFocusOnTab10();
+ void activeFocusOnTab_infiniteLoop_data();
+ void activeFocusOnTab_infiniteLoop();
++ void activeFocusOnTab_infiniteLoopControls();
+
+ void nextItemInFocusChain();
+ void nextItemInFocusChain2();
+@@ -1055,6 +1056,17 @@ void tst_QQuickItem::activeFocusOnTab_infiniteLoop()
+ QCOMPARE(item, window->rootObject());
+ }
+
++
++void tst_QQuickItem::activeFocusOnTab_infiniteLoopControls()
++{
++ auto source = testFileUrl("activeFocusOnTab_infiniteLoop3.qml");
++ QScopedPointer<QQuickView>window(new QQuickView());
++ window->setSource(source);
++ window->show();
++ QVERIFY(window->errors().isEmpty());
++ QTest::keyClick(window.get(), Qt::Key_Tab); // should not hang
++}
++
+ void tst_QQuickItem::nextItemInFocusChain()
+ {
+ if (!qt_tab_all_widgets())
+--
+2.36.0
+
+From 415cb49010e1f28405a6eeac16f3eb5a461330e5 Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@kdab.com>
+Date: Tue, 16 Jul 2019 11:23:37 +0200
+Subject: [PATCH 18/19] QSGOpenGLDistanceFieldGlyphCache: fix multiplication
+ result truncation
+
+The type of the expression int * int is int, so truncation has already
+happened when the result is assigned to a qint64.
+
+Fix by casting one of the multiplicants to qint64 before performing
+the multiplication. This multiplication cannot overflow, because int
+is 32-bit on all supported platforms.
+
+The addition of 'size' to the pointer will still truncate the result,
+on 32bit platforms, but that check is in itself UB. A follow-up commit
+will fix the check, and with it the last truncation to 32bit.
+
+Coverity-Id: 218769
+Pick-to: 6.3 6.2 5.15
+Change-Id: I0d71950695b9743db8c96d825e68bb1e9c47de02
+Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit cacfc1dbb9719c0ef55cff69dad0921ce1405438)
+---
+ src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp b/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp
+index 53b6fe117f..f7cb8bede3 100644
+--- a/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp
++++ b/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp
+@@ -512,7 +512,7 @@ bool QSGRhiDistanceFieldGlyphCache::loadPregeneratedCache(const QRawFont &font)
+
+ int width = texInfo->allocatedArea.width();
+ int height = texInfo->allocatedArea.height();
+- qint64 size = width * height;
++ qint64 size = qint64(width) * height;
+ if (reinterpret_cast<const char *>(textureData + size) > qtdfTableEnd) {
+ qWarning("qtdf table too small in font '%s'.",
+ qPrintable(font.familyName()));
+--
+2.36.0
+
+From 2454c808bfe99b50084aea59adb917e805c27afa Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@kdab.com>
+Date: Tue, 16 Jul 2019 11:31:01 +0200
+Subject: [PATCH 19/19] QSGOpenGLDistanceFieldGlyphCache: fix UB (ordering of
+ pointers not from the same array)
+
+The code performed out of bounds checks by adding the size of the
+buffer to a pointer and comparing the result to the the
+one-past-the-end pointer of the buffer.
+
+This is UB, for three reasons:
+
+- in one case, a qint64 is added to a pointer, silently truncating the
+ result on 32bit platforms
+
+- if the buffer overflow is large, the pointer value may wrap around,
+ yielding a result that is numerically less than the end pointer, but
+ still out-of-bounds.
+
+- pointer order is only defined within a C array, plus one past the
+ end. On failure, pointers outside that range are compared.
+
+Fix by comparing distance(it, end) with the required size for the
+chunk to be written instead.
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: I356bb8c8a65a93b8b1c1eb7bac381dd64bea719e
+Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit 8d9bd6b381bfc759d575954801b683354ad6a790)
+---
+ src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp b/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp
+index f7cb8bede3..219cdd5966 100644
+--- a/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp
++++ b/src/quick/scenegraph/qsgrhidistancefieldglyphcache.cpp
+@@ -446,7 +446,7 @@ bool QSGRhiDistanceFieldGlyphCache::loadPregeneratedCache(const QRawFont &font)
+
+ const char *textureRecord = allocatorData;
+ for (int i = 0; i < textureCount; ++i, textureRecord += Qtdf::TextureRecordSize) {
+- if (textureRecord + Qtdf::TextureRecordSize > qtdfTableEnd) {
++ if (qtdfTableEnd - textureRecord < Qtdf::TextureRecordSize) {
+ qWarning("qtdf table too small in font '%s'.",
+ qPrintable(font.familyName()));
+ return false;
+@@ -462,7 +462,7 @@ bool QSGRhiDistanceFieldGlyphCache::loadPregeneratedCache(const QRawFont &font)
+
+ const char *glyphRecord = textureRecord;
+ for (quint32 i = 0; i < glyphCount; ++i, glyphRecord += Qtdf::GlyphRecordSize) {
+- if (glyphRecord + Qtdf::GlyphRecordSize > qtdfTableEnd) {
++ if (qtdfTableEnd - glyphRecord < Qtdf:: GlyphRecordSize) {
+ qWarning("qtdf table too small in font '%s'.",
+ qPrintable(font.familyName()));
+ return false;
+@@ -513,7 +513,7 @@ bool QSGRhiDistanceFieldGlyphCache::loadPregeneratedCache(const QRawFont &font)
+ int width = texInfo->allocatedArea.width();
+ int height = texInfo->allocatedArea.height();
+ qint64 size = qint64(width) * height;
+- if (reinterpret_cast<const char *>(textureData + size) > qtdfTableEnd) {
++ if (qtdfTableEnd - reinterpret_cast<const char *>(textureData) < size) {
+ qWarning("qtdf table too small in font '%s'.",
+ qPrintable(font.familyName()));
+ return false;
+--
+2.36.0
+
diff --git a/user/qt5-qtdeclarative/python3.patch b/user/qt5-qtdeclarative/python3.patch
deleted file mode 100644
index 2d67290bb..000000000
--- a/user/qt5-qtdeclarative/python3.patch
+++ /dev/null
@@ -1,31 +0,0 @@
---- qtdeclarative-opensource-src-5.9.7/qtdeclarative.pro.old 2018-10-05 19:31:02.000000000 +0000
-+++ qtdeclarative-opensource-src-5.9.7/qtdeclarative.pro 2019-03-11 17:20:24.100000000 +0000
-@@ -2,7 +2,7 @@
- load(qt_parts)
-
- !python_available {
-- py_out = $$system('python -c "print(1)"')
-+ py_out = $$system('python3 -c "print(1)"')
- !equals(py_out, 1): error("Building QtQml requires Python.")
- tmp = python_available
- CONFIG += $$tmp
---- qtdeclarative-opensource-src-5.9.7/src/3rdparty/masm/masm.pri.old 2018-10-05 19:31:02.000000000 +0000
-+++ qtdeclarative-opensource-src-5.9.7/src/3rdparty/masm/masm.pri 2019-03-11 17:20:02.330000000 +0000
-@@ -58,7 +58,7 @@
- udis86.output = udis86_itab.h
- udis86.input = ITAB
- udis86.CONFIG += no_link
-- udis86.commands = python $$PWD/disassembler/udis86/itab.py ${QMAKE_FILE_IN}
-+ udis86.commands = python3 $$PWD/disassembler/udis86/itab.py ${QMAKE_FILE_IN}
- QMAKE_EXTRA_COMPILERS += udis86
-
- udis86_tab_cfile.target = $$OUT_PWD/udis86_itab.c
-@@ -110,7 +110,7 @@
- retgen.script = $$PWD/create_regex_tables
- retgen.input = retgen.script
- retgen.CONFIG += no_link
--retgen.commands = python $$retgen.script > ${QMAKE_FILE_OUT}
-+retgen.commands = python3 $$retgen.script > ${QMAKE_FILE_OUT}
- QMAKE_EXTRA_COMPILERS += retgen
-
- # Taken from WebKit/Tools/qmake/mkspecs/features/unix/default_post.prf
diff --git a/user/qt5-qtgraphicaleffects/APKBUILD b/user/qt5-qtgraphicaleffects/APKBUILD
index c4a476b9f..023e51394 100644
--- a/user/qt5-qtgraphicaleffects/APKBUILD
+++ b/user/qt5-qtgraphicaleffects/APKBUILD
@@ -1,32 +1,30 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtgraphicaleffects
-_pkgname=qtgraphicaleffects-opensource-src
-pkgver=5.9.7
+_pkgname=qtgraphicaleffects-everywhere
+pkgver=5.15.4
pkgrel=0
-pkgdesc="Qt 5 - Pre-made visual effects for QML"
+pkgdesc="Pre-made visual effects for QML"
url="https://www.qt.io/"
arch="all"
-license="LGPL-2.0 with exceptions OR GPL-3.0 with exceptions"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
+depends=""
makedepends="qt5-qtbase-dev qt5-qtdeclarative-dev"
-source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz"
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz"
_qt5_prefix=/usr/lib/qt5
-builddir="$srcdir"/$_pkgname-$pkgver
+builddir="$srcdir"/$_pkgname-src-$pkgver
build() {
- cd "$builddir"
qmake
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make install INSTALL_ROOT="$pkgdir"
}
-sha512sums="914e70403b9529071f13b3f7af596f4b06f1988d59e0ea5915cc6f5b8b2e1b38eaab50e2cbe5a895d0f5be4f99c3ec62b32d629083ff3dc1fce413acb2615c0f qtgraphicaleffects-opensource-src-5.9.7.tar.xz"
+sha512sums="00cf02057dfc1624c84079e1a08a65ceb6fb7df712f05ac9cb0006de0add9241e56a8e3909eeb04d1f6a90d5032909a41d59341e002750ab99d2449f635e64e3 qtgraphicaleffects-everywhere-opensource-src-5.15.4.tar.xz"
diff --git a/user/qt5-qtimageformats/APKBUILD b/user/qt5-qtimageformats/APKBUILD
new file mode 100644
index 000000000..b771c7708
--- /dev/null
+++ b/user/qt5-qtimageformats/APKBUILD
@@ -0,0 +1,33 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=qt5-qtimageformats
+_pkgname=qtimageformats-everywhere
+pkgver=5.15.4
+pkgrel=0
+pkgdesc="Image handling plugin for Qt"
+url="https://www.qt.io/"
+arch="all"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
+depends=""
+makedepends="jasper-dev libwebp-dev qt5-qtbase-dev tiff-dev"
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz
+ kde-lts.patch
+ "
+
+_qt5_prefix=/usr/lib/qt5
+builddir="$srcdir"/$_pkgname-src-$pkgver
+
+build() {
+ qmake
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make install INSTALL_ROOT="$pkgdir"
+}
+
+sha512sums="388a9ceebdca6d32f606615af37233f2d8394856d067c9a80486b88ad5714eac90263cd6555a3efd9c1b5fdcc27431b7f99eed6fc02760b1a9974515bfe70274 qtimageformats-everywhere-opensource-src-5.15.4.tar.xz
+975fa493f321382876cc5ec45041a9ecdec839811d020c2d1849eea98ed87eb2dfb207ff45fc555c05c25f618b9c42027223729494ba940a9204b4047dbfa8c7 kde-lts.patch"
diff --git a/user/qt5-qtimageformats/kde-lts.patch b/user/qt5-qtimageformats/kde-lts.patch
new file mode 100644
index 000000000..ff05fd6bb
--- /dev/null
+++ b/user/qt5-qtimageformats/kde-lts.patch
@@ -0,0 +1,78 @@
+From b43e31b9f31ec482ddea2066fda7ca9315512815 Mon Sep 17 00:00:00 2001
+From: Eirik Aavitsland <eirik.aavitsland@qt.io>
+Date: Fri, 13 May 2022 11:42:35 +0200
+Subject: [PATCH] Add some basic checking against corrupt input
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Fixes: QTBUG-103454
+Pick-to: 6.3 6.2 5.15
+Change-Id: I169b0de8465bc5d90aebfd8250db0361819065c5
+Reviewed-by: Robert Löhning <robert.loehning@qt.io>
+(cherry picked from commit 34731687ee77c59607db9d88c6361111631e48c6)
+---
+ src/plugins/imageformats/icns/qicnshandler.cpp | 16 +++++++++++-----
+ 1 file changed, 11 insertions(+), 5 deletions(-)
+
+diff --git a/src/plugins/imageformats/icns/qicnshandler.cpp b/src/plugins/imageformats/icns/qicnshandler.cpp
+index dde783c..d6fc589 100644
+--- a/src/plugins/imageformats/icns/qicnshandler.cpp
++++ b/src/plugins/imageformats/icns/qicnshandler.cpp
+@@ -515,6 +515,9 @@ static bool parseIconEntryInfo(ICNSEntry &icon)
+ }
+ icon.height = icon.width;
+ }
++ // Sanity check
++ if (icon.width == 0 || icon.width > 4096 || icon.depth > 32)
++ return false;
+ return true;
+ }
+
+@@ -685,7 +688,7 @@ bool QICNSHandler::canRead() const
+ bool QICNSHandler::read(QImage *outImage)
+ {
+ QImage img;
+- if (!ensureScanned()) {
++ if (!ensureScanned() || m_currentIconIndex >= m_icons.size()) {
+ qWarning("QICNSHandler::read(): The device wasn't parsed properly!");
+ return false;
+ }
+@@ -892,7 +895,7 @@ bool QICNSHandler::scanDevice()
+ return false;
+
+ const qint64 blockDataOffset = device()->pos();
+- if (!isBlockHeaderValid(blockHeader)) {
++ if (!isBlockHeaderValid(blockHeader, ICNSBlockHeaderSize + filelength - blockDataOffset)) {
+ qWarning("QICNSHandler::scanDevice(): Failed, bad header at pos %s. OSType \"%s\", length %u",
+ QByteArray::number(blockDataOffset).constData(),
+ nameFromOSType(blockHeader.ostype).constData(), blockHeader.length);
+@@ -927,11 +930,14 @@ bool QICNSHandler::scanDevice()
+ case ICNSBlockHeader::TypeOdrp:
+ // Icns container seems to have an embedded icon variant container
+ // Let's start a scan for entries
+- while (device()->pos() < nextBlockOffset) {
++ while (!stream.atEnd() && device()->pos() < nextBlockOffset) {
+ ICNSBlockHeader icon;
+ stream >> icon;
++ if (stream.status() != QDataStream::Ok)
++ return false;
+ // Check for incorrect variant entry header and stop scan
+- if (!isBlockHeaderValid(icon, blockDataLength))
++ quint64 remaining = blockDataLength - (device()->pos() - blockDataOffset);
++ if (!isBlockHeaderValid(icon, ICNSBlockHeaderSize + remaining))
+ break;
+ if (!addEntry(icon, device()->pos(), blockHeader.ostype))
+ return false;
+@@ -1003,7 +1009,7 @@ bool QICNSHandler::scanDevice()
+ break;
+ }
+ }
+- return true;
++ return (m_icons.size() > 0);
+ }
+
+ const ICNSEntry &QICNSHandler::getIconMask(const ICNSEntry &icon) const
+--
+2.36.0
+
diff --git a/user/qt5-qtmultimedia/APKBUILD b/user/qt5-qtmultimedia/APKBUILD
index 9b677708a..db4dd82c7 100644
--- a/user/qt5-qtmultimedia/APKBUILD
+++ b/user/qt5-qtmultimedia/APKBUILD
@@ -1,31 +1,32 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtmultimedia
-_pkgname=qtmultimedia-opensource-src
-pkgver=5.9.7
+_pkgname=qtmultimedia-everywhere
+pkgver=5.15.4
pkgrel=0
-pkgdesc="Qt 5 - Audio, video, radio, and camera libraries"
+pkgdesc="Audio, video, radio, and camera libraries for Qt 5"
url="https://www.qt.io/"
arch="all"
-license="LGPL-2.0 with exceptions OR GPL-3.0 with exceptions"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
+depends=""
makedepends="alsa-lib-dev gstreamer-dev gst-plugins-base-dev libxv-dev
pulseaudio-dev qt5-qtbase-dev qt5-qtdeclarative-dev xorgproto-dev"
subpackages="$pkgname-dev"
-source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz"
-builddir="$srcdir"/$_pkgname-$pkgver
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz
+ kde-lts.patch
+ "
+builddir="$srcdir"/$_pkgname-src-$pkgver
build() {
- cd "$builddir"
qmake
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make install INSTALL_ROOT="$pkgdir"
}
-sha512sums="a5c947cb8764e63e81187db01caefa588bab77705b03ed0dff09433b0831f55f2461c64f2ce99085c7bfcac795ae67dd69ac7a992ef8d04c043d237e2c95e4c6 qtmultimedia-opensource-src-5.9.7.tar.xz"
+sha512sums="bb0ada7560093b89751b5b3c0e1a573de215a388d621d356bc3c0e1acfffc2d696230c67b7a7cef037b18c4da900c7eb3d315bd2e73ce12f9aedd0e340399117 qtmultimedia-everywhere-opensource-src-5.15.4.tar.xz
+8b34b7bc7f6ecaeca3795a20986d31650a1aededb69a46e718545ea2f2a4bd65673167e41645d1b6f34e21e583f9613a1903ae8e116d0e6088de0f8a1e0256c5 kde-lts.patch"
diff --git a/user/qt5-qtmultimedia/kde-lts.patch b/user/qt5-qtmultimedia/kde-lts.patch
new file mode 100644
index 000000000..510e88d18
--- /dev/null
+++ b/user/qt5-qtmultimedia/kde-lts.patch
@@ -0,0 +1,64 @@
+From c75ef0bb53562a62d67fb3247c9fc138356368b4 Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Thu, 19 May 2022 12:02:04 +0200
+Subject: [PATCH] QPulseAudioSource: fix UB (memcpy() called with nullptr dest)
+ in read()
+
+deviceReady() calls read(nullptr, 0), but calling memcpy() with a
+nullpt destination is UB, even if the length is simulateneously zero.
+
+Ditto applyVolume() (called from read()).
+
+Fix by guarding the memcpy() calls.
+
+Add assertions to indicate that for these functions, nullptr is valid
+input iff length is zero.
+
+Found by clangsa's core.NonNullParamChecker.
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: I9006b0e933e196a7a212e0ebe2bd27f6b9552518
+Reviewed-by: Rafael Roquetto <rafael.roquetto@qt.io>
+(cherry picked from commit 8df415d5bcf23462bedb4cb7601b909851ee15dd)
+---
+ src/plugins/pulseaudio/qaudioinput_pulse.cpp | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/src/plugins/pulseaudio/qaudioinput_pulse.cpp b/src/plugins/pulseaudio/qaudioinput_pulse.cpp
+index 2b5325132..b68b4af1b 100644
+--- a/src/plugins/pulseaudio/qaudioinput_pulse.cpp
++++ b/src/plugins/pulseaudio/qaudioinput_pulse.cpp
+@@ -402,6 +402,8 @@ int QPulseAudioInput::bytesReady() const
+
+ qint64 QPulseAudioInput::read(char *data, qint64 len)
+ {
++ Q_ASSERT(data != nullptr || len == 0);
++
+ m_bytesAvailable = checkBytesReady();
+
+ setError(QAudio::NoError);
+@@ -411,7 +413,8 @@ qint64 QPulseAudioInput::read(char *data, qint64 len)
+
+ if (!m_pullMode && !m_tempBuffer.isEmpty()) {
+ readBytes = qMin(static_cast<int>(len), m_tempBuffer.size());
+- memcpy(data, m_tempBuffer.constData(), readBytes);
++ if (readBytes)
++ memcpy(data, m_tempBuffer.constData(), readBytes);
+ m_totalTimeValue += readBytes;
+
+ if (readBytes < m_tempBuffer.size()) {
+@@ -502,9 +505,10 @@ qint64 QPulseAudioInput::read(char *data, qint64 len)
+
+ void QPulseAudioInput::applyVolume(const void *src, void *dest, int len)
+ {
++ Q_ASSERT((src && dest) || len == 0);
+ if (m_volume < 1.f)
+ QAudioHelperInternal::qMultiplySamples(m_volume, m_format, src, dest, len);
+- else
++ else if (len)
+ memcpy(dest, src, len);
+ }
+
+--
+2.36.0
+
diff --git a/user/qt5-qtnetworkauth/APKBUILD b/user/qt5-qtnetworkauth/APKBUILD
new file mode 100644
index 000000000..daba50112
--- /dev/null
+++ b/user/qt5-qtnetworkauth/APKBUILD
@@ -0,0 +1,27 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=qt5-qtnetworkauth
+_pkgname=qtnetworkauth-everywhere
+pkgver=5.15.4
+pkgrel=0
+pkgdesc="Network authentication module for Qt"
+url="https://www.qt.io/"
+arch="all"
+options="!check"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
+depends=""
+makedepends="qt5-qtbase-dev"
+subpackages="$pkgname-dev"
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz"
+builddir="$srcdir"/$_pkgname-src-$pkgver
+
+build() {
+ qmake
+ make
+}
+
+package() {
+ make install INSTALL_ROOT="$pkgdir"
+}
+
+sha512sums="a36ce21151cb98bcbc99a819e873ef10f68d988aebfbae9aaaa7dc85bd4a693ad7510c47627f0f3841c5ef50173b21cdebe6a602fa429839fd9ad9bcc02d6c3c qtnetworkauth-everywhere-opensource-src-5.15.4.tar.xz"
diff --git a/user/qt5-qtpositioning/APKBUILD b/user/qt5-qtpositioning/APKBUILD
index 5bb8daf6f..e81ddef81 100644
--- a/user/qt5-qtpositioning/APKBUILD
+++ b/user/qt5-qtpositioning/APKBUILD
@@ -1,27 +1,24 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtpositioning
-_pkgname=qtlocation-opensource-src
-pkgver=5.9.7
-pkgrel=0
-pkgdesc="Qt 5 - Geolocation services"
+_pkgname=qtlocation-everywhere
+pkgver=5.15.4
+pkgrel=1
+pkgdesc="Geolocation services for Qt 5"
url="https://www.qt.io/"
arch="all"
options="!check"
-license="LGPLv2 with exceptions OR GPLv3 with exceptions"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
depends=""
makedepends="icu-dev qt5-qtbase-dev"
subpackages="$pkgname-dev"
-source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz
- no-getting-thread-names.patch
- "
-builddir="$srcdir"/$_pkgname-$pkgver
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz"
+builddir="$srcdir"/$_pkgname-src-$pkgver
build() {
- cd "$builddir"
qmake
# too memory hungry
- if [ -z "$JOBS" -o $JOBS -gt 16 ]; then
+ if [ -z "$JOBS" ] || [ $JOBS -gt 16 ]; then
make -j16
else
make
@@ -29,9 +26,7 @@ build() {
}
package() {
- cd "$builddir"
make install INSTALL_ROOT="$pkgdir"
}
-sha512sums="a0ee0d699ecf568eb9371ff0743f9ec65f568e235e8964a2e3187a3135fc943795101c8922fbe560779f7878f44a630383234a65ed67aea35d084ce04eeb7a96 qtlocation-opensource-src-5.9.7.tar.xz
-8590335ae90ade1c685ff99fb4319d1b7448d2ae15ba999e3dc9a29e62eda3db587d8ee366dc68fad6eb9e0872532d50f0bdc74f4689a554ca095ad24967418c no-getting-thread-names.patch"
+sha512sums="6208052d6ac173d19dc77496d8108558e7f31696dc5792fcbbeef2029539db76a60c5a51a7d198f54ea6c0ec23977a57cd8c8f8fa80fe5eac9528d2510c3dbb3 qtlocation-everywhere-opensource-src-5.15.4.tar.xz"
diff --git a/user/qt5-qtpositioning/no-getting-thread-names.patch b/user/qt5-qtpositioning/no-getting-thread-names.patch
deleted file mode 100644
index 63aa8f66c..000000000
--- a/user/qt5-qtpositioning/no-getting-thread-names.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- qtlocation-opensource-src-5.9.6/src/3rdparty/mapbox-gl-native/platform/default/thread.cpp.old 2017-11-29 18:38:56.000000000 +0000
-+++ qtlocation-opensource-src-5.9.6/src/3rdparty/mapbox-gl-native/platform/default/thread.cpp 2018-07-16 09:24:16.990000000 +0000
-@@ -11,7 +11,9 @@
-
- std::string getCurrentThreadName() {
- char name[32] = "unknown";
-+#ifdef __GLIBC__
- pthread_getname_np(pthread_self(), name, sizeof(name));
-+#endif
-
- return name;
- }
diff --git a/user/qt5-qtquickcontrols/APKBUILD b/user/qt5-qtquickcontrols/APKBUILD
index 7666875ce..e2e322f38 100644
--- a/user/qt5-qtquickcontrols/APKBUILD
+++ b/user/qt5-qtquickcontrols/APKBUILD
@@ -1,30 +1,28 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtquickcontrols
-_pkgname=qtquickcontrols-opensource-src
-pkgver=5.9.7
+_pkgname=qtquickcontrols-everywhere
+pkgver=5.15.4
pkgrel=0
-pkgdesc="Qt 5 - controls for use with Qt Quick"
+pkgdesc="Controls for use with Qt Quick"
url="https://www.qt.io/"
arch="all"
-license="(LGPL-2.0 with exceptions OR GPL-3.0 with exceptions) AND GFDL-1.3"
+license="(LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0) AND GFDL-1.3"
+depends=""
makedepends="qt5-qtbase-dev qt5-qtdeclarative-dev"
-source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz"
-builddir="$srcdir"/$_pkgname-$pkgver
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz"
+builddir="$srcdir"/$_pkgname-src-$pkgver
build() {
- cd "$builddir"
qmake
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make install INSTALL_ROOT="$pkgdir"
}
-sha512sums="87b8af09035f77bf02e6995a173d381536c50896604dcd884f7adede4d70464d5ee28161fda7b449ad851a728254cee00b7984099c4c9f024623a16157c0a656 qtquickcontrols-opensource-src-5.9.7.tar.xz"
+sha512sums="887a8f5fdcd3764575f9068ec8428526a049bb09ae0c214daef3652527d5e448baa53738dccf316b20ccf18f36951ecebd570aee3a27f9c32b9213ef7629de10 qtquickcontrols-everywhere-opensource-src-5.15.4.tar.xz"
diff --git a/user/qt5-qtquickcontrols2/APKBUILD b/user/qt5-qtquickcontrols2/APKBUILD
index 274ff17bf..b7fc29ba1 100644
--- a/user/qt5-qtquickcontrols2/APKBUILD
+++ b/user/qt5-qtquickcontrols2/APKBUILD
@@ -1,30 +1,30 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtquickcontrols2
-_pkgname=qtquickcontrols2-opensource-src
-pkgver=5.9.7
+_pkgname=qtquickcontrols2-everywhere
+pkgver=5.15.4
pkgrel=0
-pkgdesc="Qt 5 - Quick Controls 2.0"
+pkgdesc="Qt Quick Controls 2.0"
url="https://www.qt.io/"
arch="all"
options="!check" # Impossible to test with accelerated X desktop
-license="LGPLv2 with exceptions OR GPLv3 with exceptions"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
depends=""
-depends_dev="qt5-qtdeclarative-dev"
-makedepends="$depends_dev qt5-qtbase-dev"
+makedepends="qt5-qtbase-dev qt5-qtdeclarative-dev"
subpackages="$pkgname-dev"
-source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz"
-builddir="$srcdir"/$_pkgname-$pkgver
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz
+ kde-lts.patch
+ "
+builddir="$srcdir"/$_pkgname-src-$pkgver
build() {
- cd "$builddir"
qmake
make
}
package() {
- cd "$builddir"
make install INSTALL_ROOT="$pkgdir"
}
-sha512sums="591a3b5ee53f681d1c9906451db76c89c12e9ccdc0cdbbb18937550612149505ba415f85d3acf2c01ab6c6b9aab279388fb2e6b501daf9ac49095b20eaeac032 qtquickcontrols2-opensource-src-5.9.7.tar.xz"
+sha512sums="4ebbb0199db156307140406b6da4fa83c47aee2105e8c46c0da96313ddc4d6d7ea2f1f85691856144eb8c5109c108bb6810ba0693a2d2411b4feaeed1ec9a8f4 qtquickcontrols2-everywhere-opensource-src-5.15.4.tar.xz
+ee17fad4f4afd5af4c6782da99713d781b7c67fc24d849da2cec0a2645584dc030281da10280a7055847a3718cccd75f4474d21eb0b836f2949752854ad9458e kde-lts.patch"
diff --git a/user/qt5-qtquickcontrols2/kde-lts.patch b/user/qt5-qtquickcontrols2/kde-lts.patch
new file mode 100644
index 000000000..e69ee5f60
--- /dev/null
+++ b/user/qt5-qtquickcontrols2/kde-lts.patch
@@ -0,0 +1,403 @@
+From 38b25abb3d911b264ff01bfd99c906f74a2fb6c2 Mon Sep 17 00:00:00 2001
+From: David Redondo <qt@david-redondo.de>
+Date: Mon, 19 Jul 2021 10:06:17 +0200
+Subject: [PATCH 1/4] Unset mouseGrabberPopup if it's removed from children
+
+The mouseGrabberPopup is supposed to be unset in handleRelease, however
+when the exit transition of the mouseGrabberPopup (that closed itself on
+button press) finishes before the release event is delivered, it
+unparents itself from the overlay (see
+QQuickPopupPrivate::finalizeExitTransition) and the overlay sets itself
+invisible if there is nothing else visible in it. Because the overlay
+is not visible it handles no events anymore and the release is missed
+and the grabber is never unset. When opening another non-modal popup
+the overlay then will continue forwarding the events to now invisible
+popup.
+So when the overlay loses the currently grabbing popup as a child we need
+to reset mouseGrabberPopup.
+
+Fixes: QTBUG-95259
+Change-Id: I3c832d47f3cee216b81ef1b5cb7dd77bf4149991
+Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
+(adapted from commit d07ee1345acd8100fa5cbb7f05c0aaf5f87f4cae)
+
+(cherry picked from commit 1a59ef4218658ffc476909ef4fca13d6cf86d04b)
+---
+ src/quicktemplates2/qquickoverlay.cpp | 5 +-
+ .../data/releaseAfterExitTransition.qml | 78 +++++++++++++++++++
+ tests/auto/qquickpopup/tst_qquickpopup.cpp | 29 +++++++
+ 3 files changed, 111 insertions(+), 1 deletion(-)
+ create mode 100644 tests/auto/qquickpopup/data/releaseAfterExitTransition.qml
+
+diff --git a/src/quicktemplates2/qquickoverlay.cpp b/src/quicktemplates2/qquickoverlay.cpp
+index b8d417f29..c8cd142ae 100644
+--- a/src/quicktemplates2/qquickoverlay.cpp
++++ b/src/quicktemplates2/qquickoverlay.cpp
+@@ -399,8 +399,11 @@ void QQuickOverlay::itemChange(ItemChange change, const ItemChangeData &data)
+ Q_D(QQuickOverlay);
+ QQuickItem::itemChange(change, data);
+
+- if (change == ItemChildAddedChange || change == ItemChildRemovedChange)
++ if (change == ItemChildAddedChange || change == ItemChildRemovedChange) {
+ setVisible(!d->allDrawers.isEmpty() || !childItems().isEmpty());
++ if (data.item->parent() == d->mouseGrabberPopup)
++ d->setMouseGrabberPopup(nullptr);
++ }
+ }
+
+ void QQuickOverlay::geometryChanged(const QRectF &newGeometry, const QRectF &oldGeometry)
+diff --git a/tests/auto/qquickpopup/data/releaseAfterExitTransition.qml b/tests/auto/qquickpopup/data/releaseAfterExitTransition.qml
+new file mode 100644
+index 000000000..9e4598b9f
+--- /dev/null
++++ b/tests/auto/qquickpopup/data/releaseAfterExitTransition.qml
+@@ -0,0 +1,78 @@
++/****************************************************************************
++**
++** Copyright (C) 2021 The Qt Company Ltd.
++** Contact: https://www.qt.io/licensing/
++**
++** This file is part of the test suite of the Qt Toolkit.
++**
++** $QT_BEGIN_LICENSE:BSD$
++** Commercial License Usage
++** Licensees holding valid commercial Qt licenses may use this file in
++** accordance with the commercial license agreement provided with the
++** Software or, alternatively, in accordance with the terms contained in
++** a written agreement between you and The Qt Company. For licensing terms
++** and conditions see https://www.qt.io/terms-conditions. For further
++** information use the contact form at https://www.qt.io/contact-us.
++**
++** BSD License Usage
++** Alternatively, you may use this file under the terms of the BSD license
++** as follows:
++**
++** "Redistribution and use in source and binary forms, with or without
++** modification, are permitted provided that the following conditions are
++** met:
++** * Redistributions of source code must retain the above copyright
++** notice, this list of conditions and the following disclaimer.
++** * Redistributions in binary form must reproduce the above copyright
++** notice, this list of conditions and the following disclaimer in
++** the documentation and/or other materials provided with the
++** distribution.
++** * Neither the name of The Qt Company Ltd nor the names of its
++** contributors may be used to endorse or promote products derived
++** from this software without specific prior written permission.
++**
++**
++** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
++** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
++** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
++** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
++** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
++** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
++** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
++** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
++** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
++** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
++**
++** $QT_END_LICENSE$
++**
++****************************************************************************/
++
++import QtQuick 2.15
++import QtQuick.Controls 2.15
++
++ApplicationWindow {
++ id: window
++ width: 400
++ height: 400
++ title: "releaseAfterExitTransition"
++
++ property alias popup: popup
++ property alias modalPopup: modalPopup
++
++ Popup {
++ id: popup
++ y: parent.height - height
++ width: 50
++ height: 50
++ }
++
++ Popup {
++ id: modalPopup
++ modal: true
++ y: parent.height - height
++ width: 50
++ height: 50
++ exit: Transition { PauseAnimation { duration: 100 } }
++ }
++}
+diff --git a/tests/auto/qquickpopup/tst_qquickpopup.cpp b/tests/auto/qquickpopup/tst_qquickpopup.cpp
+index ede3640c2..f1840946b 100644
+--- a/tests/auto/qquickpopup/tst_qquickpopup.cpp
++++ b/tests/auto/qquickpopup/tst_qquickpopup.cpp
+@@ -97,6 +97,7 @@ private slots:
+ void invisibleToolTipOpen();
+ void centerInOverlayWithinStackViewItem();
+ void destroyDuringExitTransition();
++ void releaseAfterExitTransition();
+ };
+
+ void tst_QQuickPopup::initTestCase()
+@@ -1459,6 +1460,34 @@ void tst_QQuickPopup::destroyDuringExitTransition()
+ QVERIFY(!button->isDown());
+ }
+
++void tst_QQuickPopup::releaseAfterExitTransition()
++{
++ QQuickApplicationHelper helper(this, "releaseAfterExitTransition.qml");
++ QVERIFY2(helper.ready, helper.failureMessage());
++
++ QQuickWindow *window = helper.window;
++ window->show();
++ QVERIFY(QTest::qWaitForWindowActive(window));
++
++ QQuickOverlay *overlay = QQuickOverlay::overlay(window);
++ QQuickPopup *modalPopup = window->property("modalPopup").value<QQuickPopup *>();
++ QQuickPopup *popup = window->property("popup").value<QQuickPopup *>();
++
++ modalPopup->open();
++ QTRY_VERIFY(modalPopup->isOpened());
++
++ QTest::mousePress(window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1));
++ // wait until the transition is finished and the overlay hides itself
++ QTRY_VERIFY(!overlay->isVisible());
++ QTest::mouseRelease(window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1));
++
++ popup->open();
++ QTRY_VERIFY(popup->isOpened());
++ QTest::mouseClick(window, Qt::LeftButton, Qt::NoModifier, QPoint(1, 1));
++ QTRY_VERIFY(!popup->isOpened());
++}
++
++
+ QTEST_QUICKCONTROLS_MAIN(tst_QQuickPopup)
+
+ #include "tst_qquickpopup.moc"
+--
+2.36.0
+
+From cb0b21e52d2562e3dc46b1e36f248308de3fb204 Mon Sep 17 00:00:00 2001
+From: Aleix Pol <aleixpol@kde.org>
+Date: Tue, 4 Jan 2022 16:34:16 +0100
+Subject: [PATCH 2/4] Ensure we don't crash when changing sizes after cleanup
+
+This addresses the problems I've seen during destruction. Only
+encountered it when using complex layouts on a DialogButtonBox.
+
+Pick-to: 6.2 6.3
+Change-Id: I54528c8a2b57b4798d90f7e2021e3127f8404762
+(cherry picked from commit 8b24d2bf1655e8491bdd74013579e09cd009e8fc in
+qtdeclarative)
+---
+ src/quicktemplates2/qquickcontainer.cpp | 5 +++--
+ src/quicktemplates2/qquickdialogbuttonbox.cpp | 8 +++++++-
+ 2 files changed, 10 insertions(+), 3 deletions(-)
+
+diff --git a/src/quicktemplates2/qquickcontainer.cpp b/src/quicktemplates2/qquickcontainer.cpp
+index f38c2b09c..6eed2a024 100644
+--- a/src/quicktemplates2/qquickcontainer.cpp
++++ b/src/quicktemplates2/qquickcontainer.cpp
+@@ -225,6 +225,7 @@ void QQuickContainerPrivate::cleanup()
+ QObject::disconnect(contentModel, &QQmlObjectModel::countChanged, q, &QQuickContainer::countChanged);
+ QObject::disconnect(contentModel, &QQmlObjectModel::childrenChanged, q, &QQuickContainer::contentChildrenChanged);
+ delete contentModel;
++ contentModel = nullptr;
+ }
+
+ QQuickItem *QQuickContainerPrivate::itemAt(int index) const
+@@ -436,7 +437,7 @@ void QQuickContainerPrivate::contentChildren_clear(QQmlListProperty<QQuickItem>
+ void QQuickContainerPrivate::updateContentWidth()
+ {
+ Q_Q(QQuickContainer);
+- if (hasContentWidth || qFuzzyCompare(contentWidth, implicitContentWidth))
++ if (hasContentWidth || qFuzzyCompare(contentWidth, implicitContentWidth) || !contentModel)
+ return;
+
+ contentWidth = implicitContentWidth;
+@@ -446,7 +447,7 @@ void QQuickContainerPrivate::updateContentWidth()
+ void QQuickContainerPrivate::updateContentHeight()
+ {
+ Q_Q(QQuickContainer);
+- if (hasContentHeight || qFuzzyCompare(contentHeight, implicitContentHeight))
++ if (hasContentHeight || qFuzzyCompare(contentHeight, implicitContentHeight) || !contentModel)
+ return;
+
+ contentHeight = implicitContentHeight;
+diff --git a/src/quicktemplates2/qquickdialogbuttonbox.cpp b/src/quicktemplates2/qquickdialogbuttonbox.cpp
+index e6db14eb5..6197d1547 100644
+--- a/src/quicktemplates2/qquickdialogbuttonbox.cpp
++++ b/src/quicktemplates2/qquickdialogbuttonbox.cpp
+@@ -237,7 +237,7 @@ static QRectF alignedRect(Qt::LayoutDirection direction, Qt::Alignment alignment
+ void QQuickDialogButtonBoxPrivate::resizeContent()
+ {
+ Q_Q(QQuickDialogButtonBox);
+- if (!contentItem)
++ if (!contentItem || !contentModel)
+ return;
+
+ QRectF geometry = q->boundingRect().adjusted(q->leftPadding(), q->topPadding(), -q->rightPadding(), -q->bottomPadding());
+@@ -322,6 +322,9 @@ void QQuickDialogButtonBoxPrivate::updateLayout()
+ qreal QQuickDialogButtonBoxPrivate::getContentWidth() const
+ {
+ Q_Q(const QQuickDialogButtonBox);
++ if (!contentModel)
++ return 0;
++
+ const int count = contentModel->count();
+ const qreal totalSpacing = qMax(0, count - 1) * spacing;
+ qreal totalWidth = totalSpacing;
+@@ -341,6 +344,9 @@ qreal QQuickDialogButtonBoxPrivate::getContentWidth() const
+ qreal QQuickDialogButtonBoxPrivate::getContentHeight() const
+ {
+ Q_Q(const QQuickDialogButtonBox);
++ if (!contentModel)
++ return 0;
++
+ const int count = contentModel->count();
+ qreal maxHeight = 0;
+ for (int i = 0; i < count; ++i) {
+--
+2.36.0
+
+From c8fe3805d53a8c24e126bcd20bb0f708bfb10958 Mon Sep 17 00:00:00 2001
+From: Oliver Eftevaag <oliver.eftevaag@qt.io>
+Date: Wed, 19 Jan 2022 22:09:56 +0100
+Subject: [PATCH 3/4] QQuickAction: don't grab the same shortcut multiple times
+
+If the entry for the QQuickItem that the QQuickAction is set on has
+already grabbed the shortcut, then m_shortcutId is no longer 0 and we
+must not overwrite the value. Otherwise, the QQuickItem removing itself
+from the action might not remove the correct entry from Qt's shortcut
+map, leaving a dangling pointer behind.
+
+Multiple calls to QQuickActionPrivate::ShortcutEntry::grab are possible,
+because we grab the shortcut whenever the shortcut changes, or when an
+item representing the action becomes visible.
+
+The test case added reproduces this scenario by adding the action to a
+menu item and then making the menu explicitly visible, resulting in two
+calls to grab() which should be idempotent.
+
+Fixes: QTBUG-96551
+Fixes: QTBUG-96561
+Pick-to: 6.2
+Change-Id: I7d42a4f4c04f7d8759f2d0f24a133720f10e4c47
+Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
+Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
+Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
+
+(cherry picked from commit 45af5ef2f63704adc515e29260ad8c6aaf51f08e in
+qtdeclarative)
+---
+ src/quicktemplates2/qquickaction.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/quicktemplates2/qquickaction.cpp b/src/quicktemplates2/qquickaction.cpp
+index 2041e7741..8610cdfae 100644
+--- a/src/quicktemplates2/qquickaction.cpp
++++ b/src/quicktemplates2/qquickaction.cpp
+@@ -145,7 +145,7 @@ int QQuickActionPrivate::ShortcutEntry::shortcutId() const
+
+ void QQuickActionPrivate::ShortcutEntry::grab(const QKeySequence &shortcut, bool enabled)
+ {
+- if (shortcut.isEmpty())
++ if (shortcut.isEmpty() || m_shortcutId)
+ return;
+
+ Qt::ShortcutContext context = Qt::WindowShortcut; // TODO
+--
+2.36.0
+
+From 0d3d39e821ea7634c174a29910c18d7101bce6f7 Mon Sep 17 00:00:00 2001
+From: Ulf Hermann <ulf.hermann@qt.io>
+Date: Tue, 11 Jan 2022 12:42:47 +0100
+Subject: [PATCH 4/4] QQuickAbstractButton: fix crash on destruction
+
+If we listen for size changes we also need to remove the object listened
+to when it's deleted.
+
+Pick-to: 5.15 6.2 6.3
+Fixes: QTBUG-99644
+Change-Id: I613855ebd986b1e67685088020b88d8b070659cf
+Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
+(cherry picked from commit 720ffaeb60d43123522066e1de3a69ad551644aa in
+qtdeclarative)
+---
+ src/quicktemplates2/qquickabstractbutton.cpp | 11 +++++++++
+ .../qquickabstractbutton_p_p.h | 1 +
+ tests/auto/controls/data/tst_switch.qml | 23 +++++++++++++++++++
+ 3 files changed, 35 insertions(+)
+
+diff --git a/src/quicktemplates2/qquickabstractbutton.cpp b/src/quicktemplates2/qquickabstractbutton.cpp
+index 950e4e099..1df0c706d 100644
+--- a/src/quicktemplates2/qquickabstractbutton.cpp
++++ b/src/quicktemplates2/qquickabstractbutton.cpp
+@@ -387,6 +387,17 @@ void QQuickAbstractButtonPrivate::itemImplicitHeightChanged(QQuickItem *item)
+ emit q->implicitIndicatorHeightChanged();
+ }
+
++void QQuickAbstractButtonPrivate::itemDestroyed(QQuickItem *item)
++{
++ Q_Q(QQuickAbstractButton);
++ QQuickControlPrivate::itemDestroyed(item);
++ if (item == indicator) {
++ indicator = nullptr;
++ emit q->implicitIndicatorWidthChanged();
++ emit q->implicitIndicatorHeightChanged();
++ }
++}
++
+ QQuickAbstractButton *QQuickAbstractButtonPrivate::findCheckedButton() const
+ {
+ Q_Q(const QQuickAbstractButton);
+diff --git a/src/quicktemplates2/qquickabstractbutton_p_p.h b/src/quicktemplates2/qquickabstractbutton_p_p.h
+index 9291c1a87..b729720f2 100644
+--- a/src/quicktemplates2/qquickabstractbutton_p_p.h
++++ b/src/quicktemplates2/qquickabstractbutton_p_p.h
+@@ -109,6 +109,7 @@ public:
+
+ void itemImplicitWidthChanged(QQuickItem *item) override;
+ void itemImplicitHeightChanged(QQuickItem *item) override;
++ void itemDestroyed(QQuickItem *item) override;
+
+ // copied from qabstractbutton.cpp
+ static const int AUTO_REPEAT_DELAY = 300;
+diff --git a/tests/auto/controls/data/tst_switch.qml b/tests/auto/controls/data/tst_switch.qml
+index b3fab41ca..10b6baa02 100644
+--- a/tests/auto/controls/data/tst_switch.qml
++++ b/tests/auto/controls/data/tst_switch.qml
+@@ -608,4 +608,27 @@ TestCase {
+ mouseClick(control.indicator)
+ verify(control.activeFocus)
+ }
++
++ Component {
++ id: deletionOrder1
++ Item {
++ Image { id: innerImage }
++ Switch { indicator: innerImage }
++ }
++ }
++
++ Component {
++ id: deletionOrder2
++ Item {
++ Switch { indicator: innerImage }
++ Image { id: innerImage }
++ }
++ }
++
++ function test_deletionOrder() {
++ var control1 = createTemporaryObject(deletionOrder1, testCase)
++ verify(control1)
++ var control2 = createTemporaryObject(deletionOrder2, testCase)
++ verify(control2)
++ }
+ }
+--
+2.36.0
+
diff --git a/user/qt5-qtscript/APKBUILD b/user/qt5-qtscript/APKBUILD
index 4f56a9e7d..da4bb96d5 100644
--- a/user/qt5-qtscript/APKBUILD
+++ b/user/qt5-qtscript/APKBUILD
@@ -1,34 +1,29 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtscript
-_pkgname=qtscript-opensource-src
-pkgver=5.9.7
-pkgrel=1
-pkgdesc="Qt 5 - Deprecated scripting framework for Qt applications"
+_pkgname=qtscript-everywhere
+pkgver=5.15.4
+pkgrel=0
+pkgdesc="Deprecated scripting framework for Qt applications"
url="https://www.qt.io/"
arch="all"
-license="LGPL-2.0 with exceptions OR GPL-3.0 with exceptions"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
+depends=""
makedepends="qt5-qtbase-dev"
subpackages="$pkgname-dev"
-source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz
- gcc8.patch
- "
-builddir="$srcdir"/$_pkgname-$pkgver
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz"
+builddir="$srcdir"/$_pkgname-src-$pkgver
build() {
- cd "$builddir"
qmake
- make
+ make 2>build.log
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make INSTALL_ROOT="$pkgdir" install
}
-sha512sums="e019d2e7aa29e1183636503822db960d97f1787fa7517f286acbe42645f2c5daa099cc251ac6640e3243dedb4ef64e509f2e22bca798a7e583063e0ac7635662 qtscript-opensource-src-5.9.7.tar.xz
-426174235ab57b14edf58166327372ba215dfce092b9d4cc07686b326c999d4d6348460a75343791de96b6ad7352c393b4a748d0592865e0d78dc119c12657f2 gcc8.patch"
+sha512sums="01d3b03eec23f462a7931e268eb8572d85ed560dd8b24f85b420ff8ebb1932d4c18f47c8d5fad7b7c09c147158b02b6cceb9c571b10249ba4008b363e23d7f95 qtscript-everywhere-opensource-src-5.15.4.tar.xz"
diff --git a/user/qt5-qtscript/gcc8.patch b/user/qt5-qtscript/gcc8.patch
deleted file mode 100644
index 2fb04a708..000000000
--- a/user/qt5-qtscript/gcc8.patch
+++ /dev/null
@@ -1,238 +0,0 @@
-From 97ec1d1882a83c23c91f0f7daea48e05858d8c32 Mon Sep 17 00:00:00 2001
-From: Thiago Macieira <thiago.macieira@intel.com>
-Date: Mon, 28 Jan 2019 14:33:12 -0800
-Subject: Fix build with GCC 8.3
-
-Qualifiers in the asm statement are not allowed in the global scope. I
-thought they were necessary for LTO, but I the commit to this file that
-added them predates my work on setting up LTO for GCC.
-
-Change-Id: Id98140e1c2f0426cabbefffd157e23e5ece67a49
-Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
----
- .../javascriptcore/JavaScriptCore/jit/JITStubs.cpp | 48 +++++++++++-----------
- 1 file changed, 24 insertions(+), 24 deletions(-)
-
-diff --git a/src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp b/src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp
-index 1abdf8b..9f60761 100644
---- a/src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp
-+++ b/src/3rdparty/javascriptcore/JavaScriptCore/jit/JITStubs.cpp
-@@ -116,7 +116,7 @@ COMPILE_ASSERT(offsetof(struct JITStackFrame, savedEBX) == 0x3c, JITStackFrame_s
- COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x58, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
- COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x50, JITStackFrame_code_offset_matches_ctiTrampoline);
-
--asm volatile (
-+asm (
- ".text\n"
- ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
- HIDE_SYMBOL(ctiTrampoline) "\n"
-@@ -138,7 +138,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
- "ret" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
- HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
- SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
-@@ -154,7 +154,7 @@ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
- "ret" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
- HIDE_SYMBOL(ctiOpThrowNotCaught) "\n"
- SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
-@@ -179,7 +179,7 @@ COMPILE_ASSERT(offsetof(struct JITStackFrame, savedRBX) == 0x48, JITStackFrame_s
- COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x90, JITStackFrame_callFrame_offset_matches_ctiTrampoline);
- COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x80, JITStackFrame_code_offset_matches_ctiTrampoline);
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
- HIDE_SYMBOL(ctiTrampoline) "\n"
- SYMBOL_STRING(ctiTrampoline) ":" "\n"
-@@ -206,7 +206,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
- "ret" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
- HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
- SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
-@@ -222,7 +222,7 @@ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
- "ret" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
- HIDE_SYMBOL(ctiOpThrowNotCaught) "\n"
- SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
-@@ -242,7 +242,7 @@ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
- #error "JIT_STUB_ARGUMENT_VA_LIST not supported on ARMv7."
- #endif
-
--asm volatile (
-+asm (
- ".text" "\n"
- ".align 2" "\n"
- ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
-@@ -269,7 +269,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
- "bx lr" "\n"
- );
-
--asm volatile (
-+asm (
- ".text" "\n"
- ".align 2" "\n"
- ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
-@@ -287,7 +287,7 @@ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
- "bx lr" "\n"
- );
-
--asm volatile (
-+asm (
- ".text" "\n"
- ".align 2" "\n"
- ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
-@@ -305,7 +305,7 @@ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
-
- #elif COMPILER(GCC) && CPU(ARM_TRADITIONAL)
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
- HIDE_SYMBOL(ctiTrampoline) "\n"
- SYMBOL_STRING(ctiTrampoline) ":" "\n"
-@@ -323,7 +323,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
- "mov pc, lr" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
- HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
- SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
-@@ -418,7 +418,7 @@ COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x38, JITStackFrame_
- COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x30, JITStackFrame_code_offset_matches_ctiTrampoline);
- COMPILE_ASSERT(offsetof(struct JITStackFrame, savedEBX) == 0x1c, JITStackFrame_stub_argument_space_matches_ctiTrampoline);
-
--asm volatile (
-+asm (
- ".text\n"
- ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
- HIDE_SYMBOL(ctiTrampoline) "\n"
-@@ -440,7 +440,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
- "ret" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
- HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
- SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
-@@ -456,7 +456,7 @@ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
- "ret" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
- HIDE_SYMBOL(ctiOpThrowNotCaught) "\n"
- SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
-@@ -480,7 +480,7 @@ COMPILE_ASSERT(offsetof(struct JITStackFrame, callFrame) == 0x58, JITStackFrame_
- COMPILE_ASSERT(offsetof(struct JITStackFrame, code) == 0x48, JITStackFrame_code_offset_matches_ctiTrampoline);
- COMPILE_ASSERT(offsetof(struct JITStackFrame, savedRBX) == 0x78, JITStackFrame_stub_argument_space_matches_ctiTrampoline);
-
--asm volatile (
-+asm (
- ".text\n"
- ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
- HIDE_SYMBOL(ctiTrampoline) "\n"
-@@ -515,7 +515,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
- "ret" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
- HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
- SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
-@@ -531,7 +531,7 @@ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
- "ret" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
- HIDE_SYMBOL(ctiOpThrowNotCaught) "\n"
- SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
-@@ -551,7 +551,7 @@ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
- #error "JIT_STUB_ARGUMENT_VA_LIST not supported on ARMv7."
- #endif
-
--asm volatile (
-+asm (
- ".text" "\n"
- ".align 2" "\n"
- ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
-@@ -578,7 +578,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
- "bx lr" "\n"
- );
-
--asm volatile (
-+asm (
- ".text" "\n"
- ".align 2" "\n"
- ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
-@@ -596,7 +596,7 @@ SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
- "bx lr" "\n"
- );
-
--asm volatile (
-+asm (
- ".text" "\n"
- ".align 2" "\n"
- ".globl " SYMBOL_STRING(ctiOpThrowNotCaught) "\n"
-@@ -614,7 +614,7 @@ SYMBOL_STRING(ctiOpThrowNotCaught) ":" "\n"
-
- #elif COMPILER(GCC) && CPU(ARM_TRADITIONAL)
-
--asm volatile (
-+asm (
- ".text\n"
- ".globl " SYMBOL_STRING(ctiTrampoline) "\n"
- HIDE_SYMBOL(ctiTrampoline) "\n"
-@@ -632,7 +632,7 @@ SYMBOL_STRING(ctiTrampoline) ":" "\n"
- "mov pc, lr" "\n"
- );
-
--asm volatile (
-+asm (
- ".globl " SYMBOL_STRING(ctiVMThrowTrampoline) "\n"
- HIDE_SYMBOL(ctiVMThrowTrampoline) "\n"
- SYMBOL_STRING(ctiVMThrowTrampoline) ":" "\n"
-@@ -1024,7 +1024,7 @@ static NEVER_INLINE void throwStackOverflowError(CallFrame* callFrame, JSGlobalD
- extern "C" { \
- rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \
- }; \
-- asm volatile ( \
-+ asm ( \
- ".text" "\n" \
- ".align 2" "\n" \
- ".globl " SYMBOL_STRING(cti_##op) "\n" \
-@@ -1053,7 +1053,7 @@ COMPILE_ASSERT(offsetof(struct JITStackFrame, thunkReturnAddress) == THUNK_RETUR
- extern "C" { \
- rtype JITStubThunked_##op(STUB_ARGS_DECLARATION); \
- }; \
-- asm volatile ( \
-+ asm ( \
- ".globl " SYMBOL_STRING(cti_##op) "\n" \
- HIDE_SYMBOL(cti_##op) "\n" \
- SYMBOL_STRING(cti_##op) ":" "\n" \
---
-cgit v1.2.1
-
diff --git a/user/qt5-qtsensors/APKBUILD b/user/qt5-qtsensors/APKBUILD
index bc363c58b..b13d0604d 100644
--- a/user/qt5-qtsensors/APKBUILD
+++ b/user/qt5-qtsensors/APKBUILD
@@ -1,29 +1,27 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtsensors
-_pkgname=qtsensors-opensource-src
-pkgver=5.9.7
+_pkgname=qtsensors-everywhere
+pkgver=5.15.4
pkgrel=0
-pkgdesc="Qt 5 - Library for interfacing with sensors"
+pkgdesc="Library for interfacing with sensors using Qt"
url="https://www.qt.io/"
arch="all"
options="!check"
-license="LGPLv2 with exceptions OR GPLv3 with exceptions"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
depends=""
makedepends="qt5-qtbase-dev"
subpackages="$pkgname-dev"
-source="http://download.qt-project.org/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz"
-builddir="$srcdir"/$_pkgname-$pkgver
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz"
+builddir="$srcdir"/$_pkgname-src-$pkgver
build() {
- cd "$builddir"
qmake
make
}
package() {
- cd "$builddir"
make install INSTALL_ROOT="$pkgdir"
}
-sha512sums="b07c5a79e9f1db5d64bef6fb92954c7467858d5f00f9bc96f8f7c8651121c1c57de7d21b273827830814919b5fa19720515d3a2dab77bf87876e60fdaedae788 qtsensors-opensource-src-5.9.7.tar.xz"
+sha512sums="b8b9ffedfdcd392bd5c1ab76db3f621d16094f444e14900726378a289c04c08a75b82628cb61f4ca66bba8c1eeba2a56d9f90d9a82adfdc90fc00ac1b579c63e qtsensors-everywhere-opensource-src-5.15.4.tar.xz"
diff --git a/user/qt5-qtserialport/APKBUILD b/user/qt5-qtserialport/APKBUILD
index afbf09362..b793a8532 100644
--- a/user/qt5-qtserialport/APKBUILD
+++ b/user/qt5-qtserialport/APKBUILD
@@ -1,29 +1,27 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtserialport
-_pkgname=qtserialport-opensource-src
-pkgver=5.9.7
+_pkgname=qtserialport-everywhere
+pkgver=5.15.4
pkgrel=0
-pkgdesc="Qt 5 - Connect Qt applications to serial ports"
+pkgdesc="Connect Qt applications to serial ports"
url="https://www.qt.io/"
arch="all"
options="!check"
-license="LGPLv2 with exceptions OR GPLv3 with exceptions"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
depends=""
makedepends="eudev-dev qt5-qtbase-dev"
subpackages="$pkgname-dev"
-source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz"
-builddir="$srcdir"/$_pkgname-$pkgver
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz"
+builddir="$srcdir"/$_pkgname-src-$pkgver
build() {
- cd "$builddir"
qmake
make
}
package() {
- cd "$builddir"
make install INSTALL_ROOT="$pkgdir"
}
-sha512sums="a90cfec383f2c1e8240bbcb0fe18c99773833d0749499e3b379d669b6053eaceea7813665068b2512cdc5c57cef5dafbdd9928e8f3d133405fb02c4c0c44e80b qtserialport-opensource-src-5.9.7.tar.xz"
+sha512sums="d8bc3d0b89bb4fc05bfe27a4c76bc3732ef5f8ba889400c8116f18c2ed58db7a3b99c4bda1cd60d1e8051121d31a4b55b95d20e89578a6e523d527e6182262ba qtserialport-everywhere-opensource-src-5.15.4.tar.xz"
diff --git a/user/qt5-qtspeech/APKBUILD b/user/qt5-qtspeech/APKBUILD
index 408e95824..190852ad9 100644
--- a/user/qt5-qtspeech/APKBUILD
+++ b/user/qt5-qtspeech/APKBUILD
@@ -1,32 +1,30 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtspeech
-_pkgname=qtspeech-opensource-src
-pkgver=5.9.7
-pkgrel=0
-pkgdesc="Qt 5 - Library for speech processing and Text-to-Speech (TTS)"
+_pkgname=qtspeech-everywhere
+pkgver=5.15.4
+pkgrel=1
+pkgdesc=" Library for speech processing and Text-to-Speech (TTS) in Qt"
url="https://www.qt.io/"
arch="all"
options="!check"
-license="LGPLv2 with exceptions OR GPLv3 with exceptions"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
depends=""
-makedepends="qt5-qtbase-dev qt5-qtmultimedia-dev speech-dispatcher-dev"
+makedepends="qt5-qtbase-dev qt5-qtmultimedia-dev flite-dev"
subpackages="$pkgname-dev"
-source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz
- fix-linking-order.patch
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz
+ kde-lts.patch
"
-builddir="$srcdir"/$_pkgname-$pkgver
+builddir="$srcdir"/$_pkgname-src-$pkgver
build() {
- cd "$builddir"
- qmake
+ qmake -- -flite-alsa
make
}
package() {
- cd "$builddir"
make install INSTALL_ROOT="$pkgdir"
}
-sha512sums="e2d1f2f73bc6595572d18b1c17caf27878851adf164dbca25925301b94916cce96b2ea3db4c2c7e6a23d6e79c37c35b28239aa613adaf6cb9eb340f40c396099 qtspeech-opensource-src-5.9.7.tar.xz
-7bce4bd52aa0b60fbd0ec781fc18ac518a8fe76c99e61be03170f00d27747e989b1562a45435be78d0d166ab0fdf523055620ba7c63f49e328704e1cd6aa4718 fix-linking-order.patch"
+sha512sums="6582fe36950aee8428c72582ff2eda2dae433ad969c323e0c6e8be611be7d81766ceb1cae85a10dcd4d266e33a0cf782fe857e1502d7f3863e0dfb2306af2aed qtspeech-everywhere-opensource-src-5.15.4.tar.xz
+e40cf1cf3e65e5add61c45c2a73bc48927a9bd34b0e0353bf6ecb77a57978b3fe2cf73608b6ffe4c84de807f9d2c1af3bf022b4a78411313ff0c4ecd425b415d kde-lts.patch"
diff --git a/user/qt5-qtspeech/fix-linking-order.patch b/user/qt5-qtspeech/fix-linking-order.patch
deleted file mode 100644
index b07e0536d..000000000
--- a/user/qt5-qtspeech/fix-linking-order.patch
+++ /dev/null
@@ -1,6 +0,0 @@
---- qtspeech-opensource-src-5.9.7/config.tests/flite_alsa/flite_alsa.pro.old 2018-05-31 12:22:17.000000000 +0000
-+++ qtspeech-opensource-src-5.9.7/config.tests/flite_alsa/flite_alsa.pro 2019-02-17 15:12:30.810000000 +0000
-@@ -1,2 +1,2 @@
--LIBS += -lasound
- include(../flite/flite.pri)
-+LIBS += -lasound
diff --git a/user/qt5-qtspeech/kde-lts.patch b/user/qt5-qtspeech/kde-lts.patch
new file mode 100644
index 000000000..c8d350cad
--- /dev/null
+++ b/user/qt5-qtspeech/kde-lts.patch
@@ -0,0 +1,36 @@
+From c8a1dadc46ccdbeaef45aa805a9dc98d4b3220bd Mon Sep 17 00:00:00 2001
+From: Jeremy Whiting <jpwhiting@kde.org>
+Date: Tue, 8 Feb 2022 11:04:41 -0700
+Subject: [PATCH] Reverse list of voices before returning from
+ Speech-Dispatcher
+
+Since QMultiMap::values() gives voices in reverse order from the order
+inserted (latest first, oldest last) reverse the list before returning
+it to users.
+
+Change-Id: I908560d671f760b6722a3164ed2cb925238f7fc8
+Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
+Reviewed-by: Assam Boudjelthia <assam.boudjelthia@qt.io>
+(cherry picked from commit b5f91c3e92a1afeed73e1b907082fabff39a29d9)
+---
+ src/plugins/tts/speechdispatcher/qtexttospeech_speechd.cpp | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/src/plugins/tts/speechdispatcher/qtexttospeech_speechd.cpp b/src/plugins/tts/speechdispatcher/qtexttospeech_speechd.cpp
+index 6eb74b8..bcc7dd1 100644
+--- a/src/plugins/tts/speechdispatcher/qtexttospeech_speechd.cpp
++++ b/src/plugins/tts/speechdispatcher/qtexttospeech_speechd.cpp
+@@ -357,7 +357,9 @@ QVector<QLocale> QTextToSpeechEngineSpeechd::availableLocales() const
+
+ QVector<QVoice> QTextToSpeechEngineSpeechd::availableVoices() const
+ {
+- return m_voices.values(m_currentLocale.name()).toVector();
++ QList<QVoice> resultList = m_voices.values(m_currentLocale.name());
++ std::reverse(resultList.begin(), resultList.end());
++ return resultList.toVector();
+ }
+
+ // We have no way of knowing our own client_id since speech-dispatcher seems to be incomplete
+--
+2.36.0
+
diff --git a/user/qt5-qtsvg/APKBUILD b/user/qt5-qtsvg/APKBUILD
index d0c96bdc6..eedfb1353 100644
--- a/user/qt5-qtsvg/APKBUILD
+++ b/user/qt5-qtsvg/APKBUILD
@@ -1,31 +1,31 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtsvg
-_pkgname=qtsvg-opensource-src
-pkgver=5.9.7
+_pkgname=qtsvg-everywhere
+pkgver=5.15.4
pkgrel=0
-pkgdesc="Qt 5 - SVG rendering library"
+pkgdesc="Qt SVG rendering library"
url="https://www.qt.io/"
arch="all"
-license="LGPL-2.0 with exceptions OR GPL-3.0 with exceptions"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
makedepends="qt5-qtbase-dev zlib-dev"
subpackages="$pkgname-dev"
-source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz"
-builddir="$srcdir"/$_pkgname-$pkgver
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz
+ kde-lts.patch
+ "
+builddir="$srcdir"/$_pkgname-src-$pkgver
build() {
- cd "$builddir"
qmake
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make install INSTALL_ROOT="$pkgdir"
}
-sha512sums="d2e58ff0321fd40031dbbc0d0b0a8bb321cae2dc64bb4afec3c72ed9b5a25d67b156971d7a5ea4f74d966a3e8cda779474ee932ab129fa0b26f12978feebcd84 qtsvg-opensource-src-5.9.7.tar.xz"
+sha512sums="364400e17cdc659ff1a521f7bd171c5dfe537136f263cd5f64c6b5e27b0398d83ae0b5fe46e77847f3a2feccf0ea75f9591ff4b932d0250e5859272630b5a31c qtsvg-everywhere-opensource-src-5.15.4.tar.xz
+c7442fccef8b010f429669d0581c2ebe06958b157f3574ada29311b04baa7f3edcbc8a4b842ecb1a4e048c78cf7e94fd6961dd34504f3156972946daa19548d4 kde-lts.patch"
diff --git a/user/qt5-qtsvg/kde-lts.patch b/user/qt5-qtsvg/kde-lts.patch
new file mode 100644
index 000000000..d48da723b
--- /dev/null
+++ b/user/qt5-qtsvg/kde-lts.patch
@@ -0,0 +1,716 @@
+From df7c94a391e69adef6e2b7f3d415496c6ba62ab1 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Robert=20L=C3=B6hning?= <robert.loehning@qt.io>
+Date: Wed, 17 Feb 2021 19:20:42 +0100
+Subject: [PATCH 01/10] Avoid buffer overflow in isSupportedSvgFeature
+
+Fixes oss-fuzz issue 29873.
+
+Pick-to: 6.0 6.1
+Change-Id: I382683aa2d7d3cf2d05a0b8c41ebf21d032fbd7c
+Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
+(cherry picked from commit afde7ca3a40f524e40052df696f74190452b22cb)
+---
+ src/svg/qsvgstructure.cpp | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/src/svg/qsvgstructure.cpp b/src/svg/qsvgstructure.cpp
+index b89608b..89c9e4e 100644
+--- a/src/svg/qsvgstructure.cpp
++++ b/src/svg/qsvgstructure.cpp
+@@ -255,9 +255,13 @@ inline static bool isSupportedSvgFeature(const QString &str)
+ };
+
+ if (str.length() <= MAX_WORD_LENGTH && str.length() >= MIN_WORD_LENGTH) {
++ const char16_t unicode44 = str.at(44).unicode();
++ const char16_t unicode45 = str.at(45).unicode();
++ if (unicode44 >= sizeof(asso_values) || unicode45 >= sizeof(asso_values))
++ return false;
+ const int key = str.length()
+- + asso_values[str.at(45).unicode()]
+- + asso_values[str.at(44).unicode()];
++ + asso_values[unicode45]
++ + asso_values[unicode44];
+ if (key <= MAX_HASH_VALUE && key >= 0)
+ return str == QLatin1String(wordlist[key]);
+ }
+--
+2.36.0
+
+From b8a829e3883b8a4ac564ac25d20d099797644c24 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Robert=20L=C3=B6hning?= <robert.loehning@qt.io>
+Date: Fri, 23 Jul 2021 13:53:47 +0200
+Subject: [PATCH 02/10] Limit font size to avoid numerous overflows
+
+The font size will be passed through a QFixed in
+QFontEngineBox::ascent() and overflow there as well as in further places.
+
+[ChangeLog] Avoid numerous overflows by limiting font size to 0xffff.
+This fixes oss-fuzz issue 31701.
+
+Pick-to: 5.15 6.1 6.2
+Change-Id: I2d00c5639804af9b056f0efc979e9899c5358cf7
+Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
+(cherry picked from commit 76eeb072cdffc1a8c776ed01864e6751ccbfba85)
+---
+ src/svg/qsvghandler.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp
+index 9dac05c..e496a54 100644
+--- a/src/svg/qsvghandler.cpp
++++ b/src/svg/qsvghandler.cpp
+@@ -1384,7 +1384,8 @@ static void parseFont(QSvgNode *node,
+ break;
+ case FontSizeValue: {
+ QSvgHandler::LengthType dummy; // should always be pixel size
+- fontStyle->setSize(parseLength(attributes.fontSize, dummy, handler));
++ fontStyle->setSize(qMin(parseLength(attributes.fontSize, dummy, handler),
++ qreal(0xffff)));
+ }
+ break;
+ default:
+--
+2.36.0
+
+From 5b684556c7cbe136ff9f665b18a1e8c8e53f3175 Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <albert.astals.cid@kdab.com>
+Date: Mon, 11 Oct 2021 11:13:57 +0200
+Subject: [PATCH 03/10] Support font size not in pixels
+
+Fixes: QTBUG-97422
+Pick-to: 6.2
+Change-Id: I4df2af0e657f241af69480e6e30d454870df51d8
+Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
+(cherry picked from commit 4531aad935d55924a32212b339c657ce363a6c08)
+---
+ src/svg/qsvghandler.cpp | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp
+index e496a54..6862494 100644
+--- a/src/svg/qsvghandler.cpp
++++ b/src/svg/qsvghandler.cpp
+@@ -1383,9 +1383,10 @@ static void parseFont(QSvgNode *node,
+ case FontSizeNone:
+ break;
+ case FontSizeValue: {
+- QSvgHandler::LengthType dummy; // should always be pixel size
+- fontStyle->setSize(qMin(parseLength(attributes.fontSize, dummy, handler),
+- qreal(0xffff)));
++ QSvgHandler::LengthType type;
++ qreal fs = parseLength(attributes.fontSize, type, handler);
++ fs = convertToPixels(fs, true, type);
++ fontStyle->setSize(qMin(fs, qreal(0xffff)));
+ }
+ break;
+ default:
+--
+2.36.0
+
+From dd33c643251fbdcc9ed91f3617646a4367a434b7 Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <albert.astals.cid@kdab.com>
+Date: Mon, 11 Oct 2021 11:11:26 +0200
+Subject: [PATCH 04/10] Fix text x/y when the length is not in pixels
+
+Fixes: QTBUG-97421
+Pick-to: 6.2
+Change-Id: I41f3cbf8e747530a67fe5074a988ba49aeb43b8e
+Reviewed-by: Eirik Aavitsland <eirik.aavitsland@qt.io>
+(cherry picked from commit fc1e1878743bcaac0c81a4748a00d0042cc15815)
+---
+ src/svg/qsvghandler.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp
+index 6862494..ba894bc 100644
+--- a/src/svg/qsvghandler.cpp
++++ b/src/svg/qsvghandler.cpp
+@@ -3346,7 +3346,9 @@ static QSvgNode *createTextNode(QSvgNode *parent,
+ //### editable and rotate not handled
+ QSvgHandler::LengthType type;
+ qreal nx = parseLength(x, type, handler);
++ nx = convertToPixels(nx, true, type);
+ qreal ny = parseLength(y, type, handler);
++ ny = convertToPixels(ny, true, type);
+
+ QSvgNode *text = new QSvgText(parent, QPointF(nx, ny));
+ return text;
+--
+2.36.0
+
+From 1f59a48d239045bda7cfd43ed48fbf8553d36756 Mon Sep 17 00:00:00 2001
+From: Eirik Aavitsland <eirik.aavitsland@qt.io>
+Date: Wed, 7 Jul 2021 10:09:58 +0200
+Subject: [PATCH 05/10] Fix parsing of arc elements in paths
+
+The arc element takes some flag parameters, which could be mixed up
+with the float parameters since svg does not require delimiting
+characters here. Hence legal svg would be misread..
+
+Fixes: QTBUG-92184
+Pick-to: 6.2 6.1 5.15
+Change-Id: I5885c50d47e2e06ab0f02afefb7a5585c5c713ff
+Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
+(cherry picked from commit b313862fa04d9a5403c16670a0d911eb3c633ee5)
+---
+ src/svg/qsvghandler.cpp | 19 ++++++++++++++++---
+ tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp | 14 ++++++++++++++
+ 2 files changed, 30 insertions(+), 3 deletions(-)
+
+diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp
+index ba894bc..bfacd56 100644
+--- a/src/svg/qsvghandler.cpp
++++ b/src/svg/qsvghandler.cpp
+@@ -728,15 +728,25 @@ static QVector<qreal> parseNumbersList(const QChar *&str)
+ return points;
+ }
+
+-static inline void parseNumbersArray(const QChar *&str, QVarLengthArray<qreal, 8> &points)
++static inline void parseNumbersArray(const QChar *&str, QVarLengthArray<qreal, 8> &points,
++ const char *pattern = nullptr)
+ {
++ const size_t patternLen = qstrlen(pattern);
+ while (str->isSpace())
+ ++str;
+ while (isDigit(str->unicode()) ||
+ *str == QLatin1Char('-') || *str == QLatin1Char('+') ||
+ *str == QLatin1Char('.')) {
+
+- points.append(toDouble(str));
++ if (patternLen && pattern[points.size() % patternLen] == 'f') {
++ // flag expected, may only be 0 or 1
++ if (*str != QLatin1Char('0') && *str != QLatin1Char('1'))
++ return;
++ points.append(*str == QLatin1Char('0') ? 0.0 : 1.0);
++ ++str;
++ } else {
++ points.append(toDouble(str));
++ }
+
+ while (str->isSpace())
+ ++str;
+@@ -1631,8 +1641,11 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path)
+ ++str;
+ QChar endc = *end;
+ *const_cast<QChar *>(end) = 0; // parseNumbersArray requires 0-termination that QStringRef cannot guarantee
++ const char *pattern = nullptr;
++ if (pathElem == QLatin1Char('a') || pathElem == QLatin1Char('A'))
++ pattern = "rrrffrr";
+ QVarLengthArray<qreal, 8> arg;
+- parseNumbersArray(str, arg);
++ parseNumbersArray(str, arg, pattern);
+ *const_cast<QChar *>(end) = endc;
+ if (pathElem == QLatin1Char('z') || pathElem == QLatin1Char('Z'))
+ arg.append(0);//dummy
+diff --git a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
+index 8f1f03b..36c76ec 100644
+--- a/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
++++ b/tests/auto/qsvgrenderer/tst_qsvgrenderer.cpp
+@@ -74,6 +74,7 @@ private slots:
+ void fillRule();
+ void opacity();
+ void paths();
++ void paths2();
+ void displayMode();
+ void strokeInherit();
+ void testFillInheritance();
+@@ -1047,6 +1048,19 @@ void tst_QSvgRenderer::paths()
+ }
+ }
+
++void tst_QSvgRenderer::paths2()
++{
++ const char *svg =
++ "<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"16\" height=\"16\">"
++ "<path d=\"M 3 8 A 5 5 0 1013 8\" id=\"path1\"/>"
++ "</svg>";
++
++ QByteArray data(svg);
++ QSvgRenderer renderer(data);
++ QVERIFY(renderer.isValid());
++ QCOMPARE(renderer.boundsOnElement(QLatin1String("path1")).toRect(), QRect(3, 8, 10, 5));
++}
++
+ void tst_QSvgRenderer::displayMode()
+ {
+ static const char *svgs[] = {
+--
+2.36.0
+
+From 8145bccbefe00a5daffd60c4e9fc11f551018df1 Mon Sep 17 00:00:00 2001
+From: Allan Sandfeld Jensen <allan.jensen@qt.io>
+Date: Fri, 5 Mar 2021 12:52:36 +0100
+Subject: [PATCH 06/10] Improve parsing of "r"
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Negative r values are illegal, and zero means empty for circles.
+
+Pick-to: 6.1
+Change-Id: Icb1d932f35909f71dafe1ee69eb2250eeb1bb2ad
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+(cherry picked from commit 4a88e194e6b243e83703ad83d95e49b2febed99e)
+---
+ src/svg/qsvghandler.cpp | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp
+index bfacd56..9575f14 100644
+--- a/src/svg/qsvghandler.cpp
++++ b/src/svg/qsvghandler.cpp
+@@ -2585,6 +2585,8 @@ static QSvgNode *createCircleNode(QSvgNode *parent,
+ qreal ncx = toDouble(cx);
+ qreal ncy = toDouble(cy);
+ qreal nr = toDouble(r);
++ if (nr < 0.0)
++ return nullptr;
+
+ QRectF rect(ncx-nr, ncy-nr, nr*2, nr*2);
+ QSvgNode *circle = new QSvgCircle(parent, rect);
+@@ -3055,15 +3057,16 @@ static QSvgStyleProperty *createRadialGradientNode(QSvgNode *node,
+
+ qreal ncx = 0.5;
+ qreal ncy = 0.5;
+- qreal nr = 0.5;
+ if (!cx.isEmpty())
+ ncx = toDouble(cx);
+ if (!cy.isEmpty())
+ ncy = toDouble(cy);
++
++ qreal nr = 0.0;
+ if (!r.isEmpty())
+ nr = toDouble(r);
+- if (nr < 0.5)
+- nr = 0.5;
++ if (nr <= 0.0)
++ return nullptr;
+
+ qreal nfx = ncx;
+ if (!fx.isEmpty())
+--
+2.36.0
+
+From 4469006285be9994f7b8ab4587f089716f59ebb9 Mon Sep 17 00:00:00 2001
+From: Eirik Aavitsland <eirik.aavitsland@qt.io>
+Date: Fri, 2 Jul 2021 16:09:30 +0200
+Subject: [PATCH 07/10] Fix parsing of animation clock values
+
+Color animation duration parsing mixed seconds and milliseconds.
+
+Factor out a common function for all clock value parsing, and
+add checking for overflow and illegal values as a driveby..
+
+Fixes: QTBUG-94878
+Pick-to: 6.2 6.1 5.15
+Change-Id: Ie1d974cd2db55a3d65d7ce02c373021021070489
+Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
+(cherry picked from commit 1da0a668e52994832d8a048772bed65b61cb0e9b)
+---
+ src/svg/qsvghandler.cpp | 70 ++++++++++++++++++++---------------------
+ 1 file changed, 35 insertions(+), 35 deletions(-)
+
+diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp
+index 9575f14..b542089 100644
+--- a/src/svg/qsvghandler.cpp
++++ b/src/svg/qsvghandler.cpp
+@@ -2373,6 +2373,27 @@ static bool parseAnimateNode(QSvgNode *parent,
+ return true;
+ }
+
++static int parseClockValue(QString str, bool *ok)
++{
++ int res = 0;
++ int ms = 1000;
++ str = str.trimmed();
++ if (str.endsWith(QLatin1String("ms"))) {
++ str.chop(2);
++ ms = 1;
++ } else if (str.endsWith(QLatin1String("s"))) {
++ str.chop(1);
++ }
++ double val = ms * toDouble(str, ok);
++ if (ok) {
++ if (val > std::numeric_limits<int>::min() && val < std::numeric_limits<int>::max())
++ res = static_cast<int>(val);
++ else
++ *ok = false;
++ }
++ return res;
++}
++
+ static bool parseAnimateColorNode(QSvgNode *parent,
+ const QXmlStreamAttributes &attributes,
+ QSvgHandler *handler)
+@@ -2406,23 +2427,13 @@ static bool parseAnimateColorNode(QSvgNode *parent,
+ }
+ }
+
+- int ms = 1000;
+- beginStr = beginStr.trimmed();
+- if (beginStr.endsWith(QLatin1String("ms"))) {
+- beginStr.chop(2);
+- ms = 1;
+- } else if (beginStr.endsWith(QLatin1String("s"))) {
+- beginStr.chop(1);
+- }
+- durStr = durStr.trimmed();
+- if (durStr.endsWith(QLatin1String("ms"))) {
+- durStr.chop(2);
+- ms = 1;
+- } else if (durStr.endsWith(QLatin1String("s"))) {
+- durStr.chop(1);
+- }
+- int begin = static_cast<int>(toDouble(beginStr) * ms);
+- int end = static_cast<int>((toDouble(durStr) + begin) * ms);
++ bool ok = true;
++ int begin = parseClockValue(beginStr, &ok);
++ if (!ok)
++ return false;
++ int end = begin + parseClockValue(durStr, &ok);
++ if (!ok || end <= begin)
++ return false;
+
+ QSvgAnimateColor *anim = new QSvgAnimateColor(begin, end, 0);
+ anim->setArgs((targetStr == QLatin1String("fill")), colors);
+@@ -2512,24 +2523,13 @@ static bool parseAnimateTransformNode(QSvgNode *parent,
+ }
+ }
+
+- int ms = 1000;
+- beginStr = beginStr.trimmed();
+- if (beginStr.endsWith(QLatin1String("ms"))) {
+- beginStr.chop(2);
+- ms = 1;
+- } else if (beginStr.endsWith(QLatin1String("s"))) {
+- beginStr.chop(1);
+- }
+- int begin = static_cast<int>(toDouble(beginStr) * ms);
+- durStr = durStr.trimmed();
+- if (durStr.endsWith(QLatin1String("ms"))) {
+- durStr.chop(2);
+- ms = 1;
+- } else if (durStr.endsWith(QLatin1String("s"))) {
+- durStr.chop(1);
+- ms = 1000;
+- }
+- int end = static_cast<int>(toDouble(durStr)*ms) + begin;
++ bool ok = true;
++ int begin = parseClockValue(beginStr, &ok);
++ if (!ok)
++ return false;
++ int end = begin + parseClockValue(durStr, &ok);
++ if (!ok || end <= begin)
++ return false;
+
+ QSvgAnimateTransform::TransformType type = QSvgAnimateTransform::Empty;
+ if (typeStr == QLatin1String("translate")) {
+--
+2.36.0
+
+From 53ada351e2e8ac14d2e428813e959689ca6fe583 Mon Sep 17 00:00:00 2001
+From: Eirik Aavitsland <eirik.aavitsland@qt.io>
+Date: Mon, 25 Oct 2021 14:17:55 +0200
+Subject: [PATCH 08/10] Do stricter error checking when parsing path nodes
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The SVG spec mandates that path parsing should terminate on the first
+error encountered, and an error be reported. To improve the handling
+of corrupt files, implement such error handling, and also limit the
+number of QPainterPath elements to a reasonable range.
+
+Fixes: QTBUG-96044
+Pick-to: 6.2 5.15 5.12
+Change-Id: Ic5e65d6b658516d6f1317c72de365c8c7ad81891
+Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
+Reviewed-by: Robert Löhning <robert.loehning@qt.io>
+(cherry picked from commit 36cfd9efb9b22b891adee9c48d30202289cfa620)
+---
+ src/svg/qsvghandler.cpp | 59 +++++++++++++++++------------------------
+ 1 file changed, 25 insertions(+), 34 deletions(-)
+
+diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp
+index b542089..2ea80ed 100644
+--- a/src/svg/qsvghandler.cpp
++++ b/src/svg/qsvghandler.cpp
+@@ -1627,6 +1627,7 @@ static void pathArc(QPainterPath &path,
+
+ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path)
+ {
++ const int maxElementCount = 0x7fff; // Assume file corruption if more path elements than this
+ qreal x0 = 0, y0 = 0; // starting point
+ qreal x = 0, y = 0; // current point
+ char lastMode = 0;
+@@ -1634,7 +1635,8 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path)
+ const QChar *str = dataStr.constData();
+ const QChar *end = str + dataStr.size();
+
+- while (str != end) {
++ bool ok = true;
++ while (ok && str != end) {
+ while (str->isSpace() && (str + 1) != end)
+ ++str;
+ QChar pathElem = *str;
+@@ -1651,14 +1653,13 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path)
+ arg.append(0);//dummy
+ const qreal *num = arg.constData();
+ int count = arg.count();
+- while (count > 0) {
++ while (ok && count > 0) {
+ qreal offsetX = x; // correction offsets
+ qreal offsetY = y; // for relative commands
+ switch (pathElem.unicode()) {
+ case 'm': {
+ if (count < 2) {
+- num++;
+- count--;
++ ok = false;
+ break;
+ }
+ x = x0 = num[0] + offsetX;
+@@ -1675,8 +1676,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path)
+ break;
+ case 'M': {
+ if (count < 2) {
+- num++;
+- count--;
++ ok = false;
+ break;
+ }
+ x = x0 = num[0];
+@@ -1702,8 +1702,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path)
+ break;
+ case 'l': {
+ if (count < 2) {
+- num++;
+- count--;
++ ok = false;
+ break;
+ }
+ x = num[0] + offsetX;
+@@ -1716,8 +1715,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path)
+ break;
+ case 'L': {
+ if (count < 2) {
+- num++;
+- count--;
++ ok = false;
+ break;
+ }
+ x = num[0];
+@@ -1757,8 +1755,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path)
+ break;
+ case 'c': {
+ if (count < 6) {
+- num += count;
+- count = 0;
++ ok = false;
+ break;
+ }
+ QPointF c1(num[0] + offsetX, num[1] + offsetY);
+@@ -1774,8 +1771,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path)
+ }
+ case 'C': {
+ if (count < 6) {
+- num += count;
+- count = 0;
++ ok = false;
+ break;
+ }
+ QPointF c1(num[0], num[1]);
+@@ -1791,8 +1787,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path)
+ }
+ case 's': {
+ if (count < 4) {
+- num += count;
+- count = 0;
++ ok = false;
+ break;
+ }
+ QPointF c1;
+@@ -1813,8 +1808,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path)
+ }
+ case 'S': {
+ if (count < 4) {
+- num += count;
+- count = 0;
++ ok = false;
+ break;
+ }
+ QPointF c1;
+@@ -1835,8 +1829,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path)
+ }
+ case 'q': {
+ if (count < 4) {
+- num += count;
+- count = 0;
++ ok = false;
+ break;
+ }
+ QPointF c(num[0] + offsetX, num[1] + offsetY);
+@@ -1851,8 +1844,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path)
+ }
+ case 'Q': {
+ if (count < 4) {
+- num += count;
+- count = 0;
++ ok = false;
+ break;
+ }
+ QPointF c(num[0], num[1]);
+@@ -1867,8 +1859,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path)
+ }
+ case 't': {
+ if (count < 2) {
+- num += count;
+- count = 0;
++ ok = false;
+ break;
+ }
+ QPointF e(num[0] + offsetX, num[1] + offsetY);
+@@ -1888,8 +1879,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path)
+ }
+ case 'T': {
+ if (count < 2) {
+- num += count;
+- count = 0;
++ ok = false;
+ break;
+ }
+ QPointF e(num[0], num[1]);
+@@ -1909,8 +1899,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path)
+ }
+ case 'a': {
+ if (count < 7) {
+- num += count;
+- count = 0;
++ ok = false;
+ break;
+ }
+ qreal rx = (*num++);
+@@ -1932,8 +1921,7 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path)
+ break;
+ case 'A': {
+ if (count < 7) {
+- num += count;
+- count = 0;
++ ok = false;
+ break;
+ }
+ qreal rx = (*num++);
+@@ -1954,12 +1942,15 @@ static bool parsePathDataFast(const QStringRef &dataStr, QPainterPath &path)
+ }
+ break;
+ default:
+- return false;
++ ok = false;
++ break;
+ }
+ lastMode = pathElem.toLatin1();
++ if (path.elementCount() > maxElementCount)
++ ok = false;
+ }
+ }
+- return true;
++ return ok;
+ }
+
+ static bool parseStyle(QSvgNode *node,
+@@ -2997,8 +2988,8 @@ static QSvgNode *createPathNode(QSvgNode *parent,
+
+ QPainterPath qpath;
+ qpath.setFillRule(Qt::WindingFill);
+- //XXX do error handling
+- parsePathDataFast(data, qpath);
++ if (!parsePathDataFast(data, qpath))
++ qCWarning(lcSvgHandler, "Invalid path data; path truncated.");
+
+ QSvgNode *path = new QSvgPath(parent, qpath);
+ return path;
+--
+2.36.0
+
+From 41ab201cd44e4f0c7f6d22fca862d5650bf574ee Mon Sep 17 00:00:00 2001
+From: Eirik Aavitsland <eirik.aavitsland@qt.io>
+Date: Mon, 25 Oct 2021 14:43:09 +0200
+Subject: [PATCH 09/10] SVG Image reading: Reject oversize svgs as corrupt
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Add an upper limit for height and width at 0xffff, same as jpeg.
+
+Fixes: QTBUG-95891
+Pick-to: 6.2 5.15 5.12
+Change-Id: I0dbc80dab3aab9b4743548772fb63fa69ea21f8a
+Reviewed-by: Robert Löhning <robert.loehning@qt.io>
+Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
+(cherry picked from commit e544d8e457d52b543cae5c988f81237c7d6608da)
+
+asturmlechner 2022-01-03: resolve conflict with preceding dev branch
+ commit 0003ec68e9925a8386eb055e0030fe7f270aa56f.
+---
+ src/plugins/imageformats/svg/qsvgiohandler.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/src/plugins/imageformats/svg/qsvgiohandler.cpp b/src/plugins/imageformats/svg/qsvgiohandler.cpp
+index 4136aaf..fd3529a 100644
+--- a/src/plugins/imageformats/svg/qsvgiohandler.cpp
++++ b/src/plugins/imageformats/svg/qsvgiohandler.cpp
+@@ -189,6 +189,8 @@ bool QSvgIOHandler::read(QImage *image)
+ }
+ }
+ if (!finalSize.isEmpty()) {
++ if (qMax(finalSize.width(), finalSize.height()) > 0xffff)
++ return false; // Assume corrupted file
+ image->fill(d->backColor.rgba());
+ QPainter p(image);
+ d->r.render(&p, bounds);
+--
+2.36.0
+
+From 23b8cf7d833c335d7735855570c05e9e0893a9b7 Mon Sep 17 00:00:00 2001
+From: Eirik Aavitsland <eirik.aavitsland@qt.io>
+Date: Wed, 5 Jan 2022 09:48:22 +0100
+Subject: [PATCH 10/10] Unconditionally stop parsing after the svg end tag
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+A QSvghandler may be created either with an external QXmlStreamReader
+object, or with a bytearray/iodevice, in which case it will create its
+own stream reader. The check to end parisng at the </svg> tag was
+active only in the first case. This could result in different behavior
+when reading an svg image from file vs. reading it from a bytearray
+or resource.
+
+Fixes: QTBUG-99407
+Pick-to: 6.3 6.2 5.15
+Change-Id: I187b39256f2b16ea952a3ae1b77c067ff96e4155
+Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
+Reviewed-by: Robert Löhning <robert.loehning@qt.io>
+(cherry picked from commit 1749388cdc765fca4206aaf0f84ac9b0877dfc9a)
+---
+ src/svg/qsvghandler.cpp | 4 +---
+ 1 file changed, 1 insertion(+), 3 deletions(-)
+
+diff --git a/src/svg/qsvghandler.cpp b/src/svg/qsvghandler.cpp
+index 2ea80ed..f2653af 100644
+--- a/src/svg/qsvghandler.cpp
++++ b/src/svg/qsvghandler.cpp
+@@ -3696,9 +3696,7 @@ void QSvgHandler::parse()
+ case QXmlStreamReader::EndElement:
+ endElement(xml->name());
+ ++remainingUnfinishedElements;
+- // if we are using somebody else's qxmlstreamreader
+- // we should not read until the end of the stream
+- done = !m_ownsReader && (xml->name() == QLatin1String("svg"));
++ done = (xml->name() == QLatin1String("svg"));
+ break;
+ case QXmlStreamReader::Characters:
+ characters(xml->text());
+--
+2.36.0
+
diff --git a/user/qt5-qttools/APKBUILD b/user/qt5-qttools/APKBUILD
index da0fd89c1..dc271f62b 100644
--- a/user/qt5-qttools/APKBUILD
+++ b/user/qt5-qttools/APKBUILD
@@ -1,19 +1,18 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qttools
-_pkgname=qttools-opensource-src
-pkgver=5.9.7
+_pkgname=qttools-everywhere
+pkgver=5.15.4
pkgrel=0
-pkgdesc="Qt 5 - Tools for Qt development"
+pkgdesc="Tools for Qt development"
url="https://www.qt.io/"
arch="all"
options="!check" # Tests require KDE 4 with special window manager config
-license="LGPLv2 with exceptions OR GPLv3 with exceptions"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
depends=""
makedepends="qt5-qtbase-dev"
-install=""
subpackages="$pkgname-dev qt5-assistant:_assistant qt5-qdbusviewer:_dbusviewer
qdbus qtpaths"
-source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz
assistant-qt5.desktop
designer-qt5.desktop
linguist-qt5.desktop
@@ -21,16 +20,14 @@ source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodu
"
_qt5_prefix=/usr/lib/qt5
-builddir="$srcdir"/$_pkgname-$pkgver
+builddir="$srcdir"/$_pkgname-src-$pkgver
build() {
- cd "$builddir"
qmake
make
}
package() {
- cd "$builddir"
make install INSTALL_ROOT="$pkgdir"
mkdir -p "$pkgdir"/usr/bin/
@@ -65,32 +62,28 @@ package() {
}
_mv_files() {
- local i
for i in "$@"; do
mkdir -p "$subpkgdir"/${i%/*}
- mv "$pkgdir"/$i "$subpkgdir"/$i
+ mv "$pkgdir"/$i "$subpkgdir"/${i%/*}
done
}
qdbus() {
pkgdesc="Qt 5 D-Bus tool"
depends="dbus-x11"
- cd "$pkgdir"
_mv_files $_qt5_prefix/bin/qdbus usr/bin/qdbus-qt5 usr/bin/qdbus
}
qtpaths() {
pkgdesc="Qt 5 path determination tool"
- cd "$pkgdir"
_mv_files $_qt5_prefix/bin/qtpaths usr/bin/qtpaths-qt5 usr/bin/qtpaths
}
dev() {
- pkgdesc="More Qt 5 development utilities (Qt Designer, Qt Linguist)"
default_dev
- cd "$pkgdir"
+ pkgdesc="More Qt 5 development utilities (Qt Designer, Qt Linguist)"
for i in designer lconvert linguist lrelease lupdate pixeltool \
- qcollectiongenerator qhelpconverter qhelpgenerator; do
+ qcollectiongenerator qhelpgenerator; do
_mv_files $_qt5_prefix/bin/$i usr/bin/$i-qt5 usr/bin/$i
done
@@ -103,23 +96,27 @@ dev() {
_assistant() {
pkgdesc="Documentation browser for Qt 5"
- cd "$pkgdir"
+
_mv_files usr/bin/assist* \
$_qt5_prefix/bin/assist* \
- usr/share/applications/*assistant* \
- usr/share/icons/hicolor/*/apps/assistant*
+ usr/share/applications/*assistant*
+ for icon_size in 32x32 128x128; do
+ _mv_files usr/share/icons/hicolor/${icon_size}/apps/assistant*
+ done
}
_dbusviewer() {
pkgdesc="Qt 5 D-Bus debugger and viewer"
- cd "$pkgdir"
+
_mv_files usr/bin/qdbusviewer* \
$_qt5_prefix/bin/qdbusviewer* \
- usr/share/applications/qdbusviewer* \
- usr/share/icons/hicolor/*/apps/qdbusviewer*
+ usr/share/applications/qdbusviewer*
+ for icon_size in 32x32 128x128; do
+ _mv_files usr/share/icons/hicolor/${icon_size}/apps/qdbusviewer*
+ done
}
-sha512sums="0240881adf23d3b5841882e107969ed298ee05b82c125a7577b568b29d4402259d459e534408f8768ce419c61a8c974c35454cb94c9387e160fd308209188b8a qttools-opensource-src-5.9.7.tar.xz
+sha512sums="26edf546a1ec7195f1ff5a9e40e430fdd0c7ebb7d86e44ed22b093426c23ff25b2c972fa520abd1064369d32609019746c2fe972a3f593c6f7539d339642f06e qttools-everywhere-opensource-src-5.15.4.tar.xz
d566c5284854855541df7177b23f491d96f5064b571e899a44f1d4fcf8bbf1223590b05b1954278dc6f3f56341c917f5b846594c5bd2215b6a859224038d8ad2 assistant-qt5.desktop
72d9a2235a60c4ae05ba8395d473fe0b42c12e584da619dadb112eb67ba33a85fe0dab6c185d98112d7b25d3eeacaf02f7ef4731742e50c17eacc54c383661b3 designer-qt5.desktop
b6d8a672d19eed39ab868ff6fc880f255da94acb9e1e84f5905c0f3b9b6055547e8a706492973692c06dc23d35ce77622fc13efc11adf21b62c3baf4ef5ab2ad linguist-qt5.desktop
diff --git a/user/qt5-qtvirtualkeyboard/APKBUILD b/user/qt5-qtvirtualkeyboard/APKBUILD
new file mode 100644
index 000000000..ed9e4dc9b
--- /dev/null
+++ b/user/qt5-qtvirtualkeyboard/APKBUILD
@@ -0,0 +1,30 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=qt5-qtvirtualkeyboard
+_pkgname=qtvirtualkeyboard-everywhere
+pkgver=5.15.4
+pkgrel=0
+pkgdesc="On-screen keyboard module for Qt 5"
+url="https://www.qt.io/"
+arch="all"
+options="!check"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
+depends=""
+makedepends="qt5-qtbase-dev qt5-qtdeclarative-dev qt5-qtsvg-dev"
+subpackages="$pkgname-dev"
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz
+ kde-lts.patch
+ "
+builddir="$srcdir"/$_pkgname-src-$pkgver
+
+build() {
+ qmake
+ make
+}
+
+package() {
+ make install INSTALL_ROOT="$pkgdir"
+}
+
+sha512sums="870279299a5e166badea0746a2d4badc758c66f8404e36d1df05997dcfeb66733154fc2a9830c433fbacf885b7afb44bc8dc8a5aacc02713966630ce98231ba3 qtvirtualkeyboard-everywhere-opensource-src-5.15.4.tar.xz
+1b0f925421c00578b6884cd98103eeef12461ba6febf1077b8911d034eb61974183b5313d48ddfc60267251e76638b2aa558d3b551b08cdb3db93e317affe201 kde-lts.patch"
diff --git a/user/qt5-qtvirtualkeyboard/kde-lts.patch b/user/qt5-qtvirtualkeyboard/kde-lts.patch
new file mode 100644
index 000000000..b2a584344
--- /dev/null
+++ b/user/qt5-qtvirtualkeyboard/kde-lts.patch
@@ -0,0 +1,188 @@
+From 594b1bd20256de146b759aa65d60795ee8542e53 Mon Sep 17 00:00:00 2001
+From: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
+Date: Wed, 25 Aug 2021 16:42:32 +0300
+Subject: [PATCH 1/3] Avoid reparenting of InputPanel when the window is being
+ destroyed
+
+Fixes: QTBUG-95996
+Pick-to: 5.15 6.1 6.2
+Change-Id: Iac4d06cacf2e672bf4a7676f478798f27ab6f4a2
+Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
+Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
+(cherry picked from commit 0464e1bacca28d7e459f105b07fbea6bb5b20930)
+---
+ src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp b/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp
+index a7c0aad9..e04c828d 100644
+--- a/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp
++++ b/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp
+@@ -278,8 +278,10 @@ void QVirtualKeyboardInputContextPrivate::onInputItemChanged()
+ For integrated keyboards, make sure it's a sibling to the overlay. The
+ high z-order will make sure it gets events also during a modal session.
+ */
+- if (isDesktopPanel.isValid() && !isDesktopPanel.toBool())
+- vkbPanel->setParentItem(quickItem->window()->contentItem());
++ if (isDesktopPanel.isValid() && !isDesktopPanel.toBool()) {
++ if (QQuickWindow *quickWindow = quickItem->window())
++ vkbPanel->setParentItem(quickWindow->contentItem());
++ }
+ }
+ }
+ } else {
+--
+2.36.0
+
+From 1c15d4f231c66d3f39f648942b120159fe7a8be0 Mon Sep 17 00:00:00 2001
+From: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
+Date: Mon, 7 Jun 2021 14:04:27 +0300
+Subject: [PATCH 2/3] Fix high CPU utilization caused by key repeat timer
+
+Key repeat timer has been broken since the beginning.
+
+The key repeat timer leaked timer instances while processing the event,
+causing the accumulation of unprocessed timer events and high CPU
+utilization.
+
+Fix the issue by killing the original timer (long press delay 600 ms)
+and starting the key repeat timer (repeat delay 50 ms) once.
+
+[ChangeLog] Fixed high CPU utilization caused by key repeat timer.
+
+Pick-to: 5.12 5.15 6.1 6.2
+Fixes: QTBUG-94259
+Change-Id: Iff47249db27cda3750f497cb02c1cb642261e032
+Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
+(cherry picked from commit 63a944ff12580f2c333a162ecaecd12419a39c10)
+---
+ src/virtualkeyboard/qvirtualkeyboardinputengine.cpp | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/virtualkeyboard/qvirtualkeyboardinputengine.cpp b/src/virtualkeyboard/qvirtualkeyboardinputengine.cpp
+index e64ea4eb..5f74c2a7 100644
+--- a/src/virtualkeyboard/qvirtualkeyboardinputengine.cpp
++++ b/src/virtualkeyboard/qvirtualkeyboardinputengine.cpp
+@@ -716,9 +716,11 @@ void QVirtualKeyboardInputEngine::timerEvent(QTimerEvent *timerEvent)
+ {
+ Q_D(QVirtualKeyboardInputEngine);
+ if (timerEvent->timerId() == d->repeatTimer) {
+- d->repeatTimer = 0;
+ d->virtualKeyClick(d->activeKey, d->activeKeyText, d->activeKeyModifiers, true);
+- d->repeatTimer = startTimer(50);
++ if (!d->repeatCount) {
++ killTimer(d->repeatTimer);
++ d->repeatTimer = startTimer(50);
++ }
+ d->repeatCount++;
+ }
+ }
+--
+2.36.0
+
+From e8ae4757dd32e8dbf69a7c57f2bc5c1e238416db Mon Sep 17 00:00:00 2001
+From: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
+Date: Tue, 8 Jun 2021 15:25:09 +0300
+Subject: [PATCH 3/3] Fix processing of hard Qt::Key_Backspace and
+ Qt::Key_Delete
+
+Even though the virtual keyboard does not support hard keys at the
+moment, this kind of processing could be possible in the future.
+
+In the mean time, fix processing of backspace and delete keys.
+
+In particular, if such key is pressed the pre-edit text is not empty:
+
+- Reset input method state (should not modify pre-edit)
+- Clear pre-edit
+- Return true (to indicate no further processing is required)
+
+[ChangeLog] Fix processing of hard backspace and delete keys.
+
+Fixes: QTBUG-94017
+Pick-to: 5.15 6.1 6.2
+Change-Id: I7035f7612e966de6d17d92e754ecd7bdb3a6e530
+Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
+(cherry picked from commit ca5b712dfc8e67aece0eb7374ffe5921e2aa45e8)
+---
+ .../qvirtualkeyboardinputcontext_p.cpp | 14 ++++++++---
+ tests/auto/inputpanel/data/tst_inputpanel.qml | 24 +++++++++++++++++++
+ 2 files changed, 35 insertions(+), 3 deletions(-)
+
+diff --git a/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp b/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp
+index e04c828d..cacf33f0 100644
+--- a/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp
++++ b/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp
+@@ -507,6 +507,7 @@ bool QVirtualKeyboardInputContextPrivate::filterEvent(const QEvent *event)
+ QEvent::Type type = event->type();
+ if (type == QEvent::KeyPress || type == QEvent::KeyRelease) {
+ const QKeyEvent *keyEvent = static_cast<const QKeyEvent *>(event);
++ const int key = keyEvent->key();
+
+ // Keep track of pressed keys update key event state
+ if (type == QEvent::KeyPress)
+@@ -520,7 +521,6 @@ bool QVirtualKeyboardInputContextPrivate::filterEvent(const QEvent *event)
+ setState(State::KeyEvent);
+
+ #ifdef QT_VIRTUALKEYBOARD_ARROW_KEY_NAVIGATION
+- int key = keyEvent->key();
+ if ((key >= Qt::Key_Left && key <= Qt::Key_Down) || key == Qt::Key_Return) {
+ if (type == QEvent::KeyPress && platformInputContext->isInputPanelVisible()) {
+ activeNavigationKeys += key;
+@@ -535,8 +535,16 @@ bool QVirtualKeyboardInputContextPrivate::filterEvent(const QEvent *event)
+ #endif
+
+ // Break composing text since the virtual keyboard does not support hard keyboard events
+- if (!preeditText.isEmpty())
+- commit();
++ if (!preeditText.isEmpty()) {
++ if (type == QEvent::KeyPress && (key == Qt::Key_Delete || key == Qt::Key_Backspace)) {
++ reset();
++ Q_Q(QVirtualKeyboardInputContext);
++ q->clear();
++ return true;
++ } else {
++ commit();
++ }
++ }
+ }
+ #ifdef QT_VIRTUALKEYBOARD_ARROW_KEY_NAVIGATION
+ else if (type == QEvent::ShortcutOverride) {
+diff --git a/tests/auto/inputpanel/data/tst_inputpanel.qml b/tests/auto/inputpanel/data/tst_inputpanel.qml
+index d814f282..f60acc64 100644
+--- a/tests/auto/inputpanel/data/tst_inputpanel.qml
++++ b/tests/auto/inputpanel/data/tst_inputpanel.qml
+@@ -321,6 +321,30 @@ Rectangle {
+ compare(textInput.text, "A")
+ }
+
++ function test_hardKeyBackspaceClearsInput_data() {
++ return [
++ { initLocale: "en_GB", initText: "12345", initCursorPosition: 1, inputSequence: "hello", outputText: "12345", expectedCursorPosition: 1 },
++ ]
++ }
++
++ function test_hardKeyBackspaceClearsInput(data) {
++ prepareTest(data)
++
++ if (!inputPanel.wordCandidateListVisibleHint)
++ skip("Prediction/spell correction not enabled")
++
++ compare(Qt.inputMethod.locale.name, Qt.locale(data.initLocale).name)
++ for (var inputIndex in data.inputSequence) {
++ verify(inputPanel.virtualKeyClick(data.inputSequence[inputIndex]))
++ }
++
++ keyClick(Qt.Key_Backspace)
++ waitForRendering(textInput)
++
++ compare(textInput.text, data.outputText)
++ compare(textInput.cursorPosition, data.expectedCursorPosition)
++ }
++
+ function test_hardKeyInput() {
+ prepareTest()
+
+--
+2.36.0
+
diff --git a/user/qt5-qtwayland/APKBUILD b/user/qt5-qtwayland/APKBUILD
new file mode 100644
index 000000000..5885128e8
--- /dev/null
+++ b/user/qt5-qtwayland/APKBUILD
@@ -0,0 +1,49 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=qt5-qtwayland
+_pkgname=qtwayland-everywhere
+pkgver=5.15.4
+pkgrel=0
+pkgdesc="Unstable Qt platform module for experimental Wayland display system"
+url="https://www.qt.io/"
+arch="all"
+options="!check"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
+depends=""
+makedepends="libglvnd-dev libxkbcommon-dev mesa-dev qt5-qtbase-dev wayland-dev"
+subpackages="$pkgname-dev $pkgname-client $pkgname-compositor $pkgname-tools"
+install_if="qt5-qtbase~$pkgver wayland"
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz
+ kde-lts.patch
+ "
+builddir="$srcdir"/$_pkgname-src-$pkgver
+
+build() {
+ qmake
+ make
+}
+
+package() {
+ make install INSTALL_ROOT="$pkgdir"
+}
+
+client() {
+ pkgdesc="Qt client library for experimental Wayland display system"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libQt5WaylandClient* "$subpkgdir"/usr/lib/
+}
+
+compositor() {
+ pkgdesc="Unstable Qt compositor library for experimental Wayland display system"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libQt5WaylandCompositor* "$subpkgdir"/usr/lib/
+}
+
+tools() {
+ pkgdesc="Tools for Qt integration with experimental Wayland display system"
+ mkdir -p "$subpkgdir"/usr/lib/qt5
+ mv "$pkgdir"/usr/lib/qt5/bin "$subpkgdir"/usr/lib/qt5/
+}
+
+sha512sums="58ae262f7aa0455fb577a36fe9413a969398a2043160642501bac064d6fbc3280f76aa566e62b9d73c67a8c3606849b1b97bcb9b0250d26c269ec921112f40e4 qtwayland-everywhere-opensource-src-5.15.4.tar.xz
+53fa6317cf27eb2201f60c6b708c244c02906ef2de157356c88bd50e917985e5162fae75da164b19d075d415508724faed92d0896f9b89d18523e7b61468cee2 kde-lts.patch"
diff --git a/user/qt5-qtwayland/kde-lts.patch b/user/qt5-qtwayland/kde-lts.patch
new file mode 100644
index 000000000..4a884c995
--- /dev/null
+++ b/user/qt5-qtwayland/kde-lts.patch
@@ -0,0 +1,3481 @@
+From eca0516905c3f88aba876d18742c9102da2319db Mon Sep 17 00:00:00 2001
+From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
+Date: Wed, 5 May 2021 20:49:26 +0300
+Subject: [PATCH 01/38] Client: Announce an output after receiving more
+ complete state
+
+Output initialization is not atomic, meaning that the compositor may
+process a wl_output bind request in one event loop cycle, and the
+xdg_output_manager.get_xdg_output in another event loop cycle.
+
+This means that xdg_output properties may arrive in another wl_output
+done frame. Prior to xdg-output v3, that wasn't an issue because the
+compositor is required to send an xdg_output.done event after sending
+xdg_output properties.
+
+Starting with v3, the compositor may choose not to send an
+xdg_output.done event after sending xdg_output properties. Therefore,
+as is, QtWayland may announce an output with bad logical geometry or
+even worse without name assigned by the compositor.
+
+Unfortunately, that breaks applications such as plasmashell. Plasma uses
+output names as a criterion to determine what kind of contents should be
+displayed on a particular output.
+
+In order to fix the initialization sequence, this change makes every
+QWaylandScreen track processed events. After all required events have
+been received, the screen can be announced to the rest of Qt.
+
+Change-Id: If5da747edd7af277ec1364cbea105c6994f47402
+Reviewed-by: David Edmundson <davidedmundson@kde.org>
+(cherry picked from commit 69ea480f2e53ad4a5bbca78cde044eb8d4c48896)
+
+Original Ticket: https://codereview.qt-project.org/c/qt/qtwayland/+/347774
+CCBUG: 435124
+---
+ src/client/qwaylandscreen.cpp | 32 +++++++++++++++++++++++---------
+ src/client/qwaylandscreen_p.h | 10 ++++++++--
+ 2 files changed, 31 insertions(+), 11 deletions(-)
+
+diff --git a/src/client/qwaylandscreen.cpp b/src/client/qwaylandscreen.cpp
+index 6cb337de..7c2d9be3 100644
+--- a/src/client/qwaylandscreen.cpp
++++ b/src/client/qwaylandscreen.cpp
+@@ -72,7 +72,7 @@ QWaylandScreen::QWaylandScreen(QWaylandDisplay *waylandDisplay, int version, uin
+ qCWarning(lcQpaWayland) << "wl_output done event not supported by compositor,"
+ << "QScreen may not work correctly";
+ mWaylandDisplay->forceRoundTrip(); // Give the compositor a chance to send geometry etc.
+- mOutputDone = true; // Fake the done event
++ mProcessedEvents |= OutputDoneEvent; // Fake the done event
+ maybeInitialize();
+ }
+ }
+@@ -83,14 +83,25 @@ QWaylandScreen::~QWaylandScreen()
+ zxdg_output_v1::destroy();
+ }
+
++uint QWaylandScreen::requiredEvents() const
++{
++ uint ret = OutputDoneEvent;
++
++ if (mWaylandDisplay->xdgOutputManager()) {
++ ret |= XdgOutputNameEvent;
++
++ if (mWaylandDisplay->xdgOutputManager()->version() < 3)
++ ret |= XdgOutputDoneEvent;
++ }
++ return ret;
++}
++
+ void QWaylandScreen::maybeInitialize()
+ {
+ Q_ASSERT(!mInitialized);
+
+- if (!mOutputDone)
+- return;
+-
+- if (mWaylandDisplay->xdgOutputManager() && !mXdgOutputDone)
++ const uint requiredEvents = this->requiredEvents();
++ if ((mProcessedEvents & requiredEvents) != requiredEvents)
+ return;
+
+ mInitialized = true;
+@@ -276,9 +287,8 @@ void QWaylandScreen::output_scale(int32_t factor)
+
+ void QWaylandScreen::output_done()
+ {
+- mOutputDone = true;
+- if (zxdg_output_v1::isInitialized() && mWaylandDisplay->xdgOutputManager()->version() >= 3)
+- mXdgOutputDone = true;
++ mProcessedEvents |= OutputDoneEvent;
++
+ if (mInitialized) {
+ updateOutputProperties();
+ if (zxdg_output_v1::isInitialized())
+@@ -339,7 +349,7 @@ void QWaylandScreen::zxdg_output_v1_done()
+ if (Q_UNLIKELY(mWaylandDisplay->xdgOutputManager()->version() >= 3))
+ qWarning(lcQpaWayland) << "zxdg_output_v1.done received on version 3 or newer, this is most likely a bug in the compositor";
+
+- mXdgOutputDone = true;
++ mProcessedEvents |= XdgOutputDoneEvent;
+ if (mInitialized)
+ updateXdgOutputProperties();
+ else
+@@ -348,7 +358,11 @@ void QWaylandScreen::zxdg_output_v1_done()
+
+ void QWaylandScreen::zxdg_output_v1_name(const QString &name)
+ {
++ if (Q_UNLIKELY(mInitialized))
++ qWarning(lcQpaWayland) << "zxdg_output_v1.name received after output has been initialized, this is most likely a bug in the compositor";
++
+ mOutputName = name;
++ mProcessedEvents |= XdgOutputNameEvent;
+ }
+
+ void QWaylandScreen::updateXdgOutputProperties()
+diff --git a/src/client/qwaylandscreen_p.h b/src/client/qwaylandscreen_p.h
+index df1c94f2..050cfdc0 100644
+--- a/src/client/qwaylandscreen_p.h
++++ b/src/client/qwaylandscreen_p.h
+@@ -116,6 +116,13 @@ public:
+ static QWaylandScreen *fromWlOutput(::wl_output *output);
+
+ private:
++ enum Event : uint {
++ XdgOutputDoneEvent = 0x1,
++ OutputDoneEvent = 0x2,
++ XdgOutputNameEvent = 0x4,
++ };
++ uint requiredEvents() const;
++
+ void output_mode(uint32_t flags, int width, int height, int refresh) override;
+ void output_geometry(int32_t x, int32_t y,
+ int32_t width, int32_t height,
+@@ -148,8 +155,7 @@ private:
+ QSize mPhysicalSize;
+ QString mOutputName;
+ Qt::ScreenOrientation m_orientation = Qt::PrimaryOrientation;
+- bool mOutputDone = false;
+- bool mXdgOutputDone = false;
++ uint mProcessedEvents = 0;
+ bool mInitialized = false;
+
+ #if QT_CONFIG(cursor)
+--
+2.36.0
+
+From 95a139413337bb92a9dbbbd95f61e52cc1f43649 Mon Sep 17 00:00:00 2001
+From: Jaeyoon Jung <jaeyoon.jung@lge.com>
+Date: Mon, 15 Feb 2021 08:31:06 +0900
+Subject: [PATCH 02/38] Fix issue with repeated window size changes
+
+Check if the new window size is different from the size requested
+previously before calling wl_egl_window_resize. It addresses the issue
+where repeated setGeometry calls between two sizes might not work as
+expected. The problem occurs when wl_egl_window_get_attached_size does
+not get the same size that was requested by the previous setGeometry
+call. If the returned size happened to match the new size instead,
+we would mistakenly skip the resize.
+
+Change-Id: Iafe4a91cc707f854b9099b6109b6be1423d7bd29
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+(cherry picked from commit 14d066c61025e548227ccd8d655e80ffa31fa15e)
+---
+ .../client/wayland-egl/qwaylandeglwindow.cpp | 4 +++-
+ .../client/wayland-egl/qwaylandeglwindow.h | 1 +
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
+index 7889f575..201b583b 100644
+--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
++++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.cpp
+@@ -131,14 +131,16 @@ void QWaylandEglWindow::updateSurface(bool create)
+ if (!disableResizeCheck) {
+ wl_egl_window_get_attached_size(m_waylandEglWindow, &current_width, &current_height);
+ }
+- if (disableResizeCheck || (current_width != sizeWithMargins.width() || current_height != sizeWithMargins.height())) {
++ if (disableResizeCheck || (current_width != sizeWithMargins.width() || current_height != sizeWithMargins.height()) || m_requestedSize != sizeWithMargins) {
+ wl_egl_window_resize(m_waylandEglWindow, sizeWithMargins.width(), sizeWithMargins.height(), mOffset.x(), mOffset.y());
++ m_requestedSize = sizeWithMargins;
+ mOffset = QPoint();
+
+ m_resize = true;
+ }
+ } else if (create && wlSurface()) {
+ m_waylandEglWindow = wl_egl_window_create(wlSurface(), sizeWithMargins.width(), sizeWithMargins.height());
++ m_requestedSize = sizeWithMargins;
+ }
+
+ if (!m_eglSurface && m_waylandEglWindow && create) {
+diff --git a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
+index 5b1f4d56..0079dfef 100644
+--- a/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
++++ b/src/hardwareintegration/client/wayland-egl/qwaylandeglwindow.h
+@@ -88,6 +88,7 @@ private:
+ mutable QOpenGLFramebufferObject *m_contentFBO = nullptr;
+
+ QSurfaceFormat m_format;
++ QSize m_requestedSize;
+ };
+
+ }
+--
+2.36.0
+
+From 4f5bef9e6e0d16bb859e7a99ef5ebfca2ac93f45 Mon Sep 17 00:00:00 2001
+From: Albert Astals Cid <albert.astals.cid@kdab.com>
+Date: Mon, 10 May 2021 14:38:49 +0200
+Subject: [PATCH 03/38] Include locale.h for setlocale/LC_CTYPE
+
+Pick-to: 5.15
+Change-Id: Iced32a31a63cec71008549c1e0961d59ffc45a37
+Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
+(cherry picked from commit e9522eda46028f351d87311d898ab985856970b0)
+---
+ src/client/qwaylandinputcontext.cpp | 4 ++++
+ 1 file changed, 4 insertions(+)
+
+diff --git a/src/client/qwaylandinputcontext.cpp b/src/client/qwaylandinputcontext.cpp
+index ef5aa375..503fd735 100644
+--- a/src/client/qwaylandinputcontext.cpp
++++ b/src/client/qwaylandinputcontext.cpp
+@@ -51,6 +51,10 @@
+ #include "qwaylandinputmethodeventbuilder_p.h"
+ #include "qwaylandwindow_p.h"
+
++#if QT_CONFIG(xkbcommon)
++#include <locale.h>
++#endif
++
+ QT_BEGIN_NAMESPACE
+
+ Q_LOGGING_CATEGORY(qLcQpaInputMethods, "qt.qpa.input.methods")
+--
+2.36.0
+
+From 58f7e6cfb61e4f170ab7ced2e01b6222036f934d Mon Sep 17 00:00:00 2001
+From: David Edmundson <davidedmundson@kde.org>
+Date: Tue, 9 Feb 2021 16:09:21 +0000
+Subject: [PATCH 04/38] Client: Connect drags being accepted to updating the
+ source drag icon
+
+Currently in a multi-process drag and drop when the other client accepts
+a given mimetype for dropping it calls accept, which is received by the
+client, but the drag cursor is never updated.
+
+Instead the drag cursor was updated in the data_device_enter events
+which only works if we are operating within one process.
+
+The code existed to handle this existed but both the targetChanged
+signal and the dragSourceTargetChanged were unused.
+
+Change-Id: I443f31f1b2ef72d4b5eadaf7115f97544dac883a
+Reviewed-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+(cherry picked from commit 08e478448a97a440d5a968a5d797f0d7302140c2)
+---
+ src/client/qwaylanddatadevice.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/client/qwaylanddatadevice.cpp b/src/client/qwaylanddatadevice.cpp
+index 19944a34..54a69c3c 100644
+--- a/src/client/qwaylanddatadevice.cpp
++++ b/src/client/qwaylanddatadevice.cpp
+@@ -124,6 +124,7 @@ bool QWaylandDataDevice::startDrag(QMimeData *mimeData, QWaylandWindow *icon)
+
+ m_dragSource.reset(new QWaylandDataSource(m_display->dndSelectionHandler(), mimeData));
+ connect(m_dragSource.data(), &QWaylandDataSource::cancelled, this, &QWaylandDataDevice::dragSourceCancelled);
++ connect(m_dragSource.data(), &QWaylandDataSource::targetChanged, this, &QWaylandDataDevice::dragSourceTargetChanged);
+
+ start_drag(m_dragSource->object(), origin->wlSurface(), icon->wlSurface(), m_display->currentInputDevice()->serial());
+ return true;
+--
+2.36.0
+
+From 0b8b965626c7d02ce885187fa46fe6c69af3ede3 Mon Sep 17 00:00:00 2001
+From: David Edmundson <davidedmundson@kde.org>
+Date: Fri, 14 May 2021 13:23:24 +0100
+Subject: [PATCH 05/38] Client: Disconnect registry listener on destruction
+
+If a display outlives a QWaylandClientExtension and a new global is
+announced we end up delivering an event to a now deleted extension which
+will crash.
+
+Change-Id: Idc0de40be61a2f7627ab4963e1fe29b22fbf3f04
+(cherry picked from commit c4ba37cd2f8cb81b9438b56ac604fc2f3e45083c)
+---
+ src/client/global/qwaylandclientextension.cpp | 7 +++++++
+ src/client/global/qwaylandclientextension.h | 1 +
+ 2 files changed, 8 insertions(+)
+
+diff --git a/src/client/global/qwaylandclientextension.cpp b/src/client/global/qwaylandclientextension.cpp
+index 125b1e19..797b06fe 100644
+--- a/src/client/global/qwaylandclientextension.cpp
++++ b/src/client/global/qwaylandclientextension.cpp
+@@ -88,6 +88,13 @@ QWaylandClientExtension::QWaylandClientExtension(const int ver)
+ QMetaObject::invokeMethod(this, "addRegistryListener", Qt::QueuedConnection);
+ }
+
++QWaylandClientExtension::~QWaylandClientExtension()
++{
++ Q_D(QWaylandClientExtension);
++ if (d->registered && !QCoreApplication::closingDown())
++ d->waylandIntegration->display()->removeListener(&QWaylandClientExtensionPrivate::handleRegistryGlobal, this);
++}
++
+ QtWaylandClient::QWaylandIntegration *QWaylandClientExtension::integration() const
+ {
+ Q_D(const QWaylandClientExtension);
+diff --git a/src/client/global/qwaylandclientextension.h b/src/client/global/qwaylandclientextension.h
+index 98272e57..5bd28398 100644
+--- a/src/client/global/qwaylandclientextension.h
++++ b/src/client/global/qwaylandclientextension.h
+@@ -63,6 +63,7 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandClientExtension : public QObject
+ Q_PROPERTY(bool active READ isActive NOTIFY activeChanged)
+ public:
+ QWaylandClientExtension(const int version);
++ ~QWaylandClientExtension();
+
+ QtWaylandClient::QWaylandIntegration *integration() const;
+ int version() const;
+--
+2.36.0
+
+From 71de867aab030a9f48bd73e4090d301da75e4102 Mon Sep 17 00:00:00 2001
+From: David Edmundson <davidedmundson@kde.org>
+Date: Mon, 3 May 2021 23:01:53 +0100
+Subject: [PATCH 06/38] Client: Set XdgShell size hints before the first commit
+
+propagateSizeHints is only called in QWindow we have platform window and
+minimumSizeHint is then sent. We also need to send existing hints when
+we create the shell window.
+
+Sending them when we apply configure is too late, we need these hints
+available for the compositor to correctly configure the window.
+
+Change-Id: I6cbb294b11db06ecd87535fa4816bb8ad34a29c6
+Reviewed-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
+Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
+(cherry picked from commit d6e074d0d35221b0fac14c94fc79c98363f2f6c3)
+---
+ src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp | 3 +--
+ tests/auto/client/xdgshell/tst_xdgshell.cpp | 2 +-
+ 2 files changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
+index 3a1569f7..7d33dabd 100644
+--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
++++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
+@@ -105,8 +105,6 @@ void QWaylandXdgSurface::Toplevel::applyConfigure()
+ m_xdgSurface->m_window->resizeFromApplyConfigure(m_pending.size);
+ }
+
+- m_xdgSurface->setSizeHints();
+-
+ m_applied = m_pending;
+ qCDebug(lcQpaWayland) << "Applied pending xdg_toplevel configure event:" << m_applied.size << m_applied.states;
+ }
+@@ -257,6 +255,7 @@ QWaylandXdgSurface::QWaylandXdgSurface(QWaylandXdgShell *shell, ::xdg_surface *s
+ m_toplevel->set_parent(parentXdgSurface->m_toplevel->object());
+ }
+ }
++ setSizeHints();
+ }
+
+ QWaylandXdgSurface::~QWaylandXdgSurface()
+diff --git a/tests/auto/client/xdgshell/tst_xdgshell.cpp b/tests/auto/client/xdgshell/tst_xdgshell.cpp
+index 2277bbb8..2fdd0a7c 100644
+--- a/tests/auto/client/xdgshell/tst_xdgshell.cpp
++++ b/tests/auto/client/xdgshell/tst_xdgshell.cpp
+@@ -505,7 +505,7 @@ void tst_xdgshell::minMaxSize()
+ window.show();
+ QCOMPOSITOR_TRY_VERIFY(xdgToplevel());
+
+- exec([=] { xdgToplevel()->sendCompleteConfigure(); });
++ // we don't roundtrip with our configuration the initial commit should be correct
+
+ QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.minSize, QSize(100, 100));
+ QCOMPOSITOR_TRY_COMPARE(xdgToplevel()->m_committed.maxSize, QSize(1000, 1000));
+--
+2.36.0
+
+From 342e5b7d0b45db4ed6679af4b40b05b4bd96de09 Mon Sep 17 00:00:00 2001
+From: David Edmundson <davidedmundson@kde.org>
+Date: Mon, 14 Jun 2021 12:45:37 +0100
+Subject: [PATCH 07/38] Fix build
+
+1b5e43a593e917610e6245f7a272ac081c508ba4 relied on a patch that we can't
+backport.
+
+This adds that extra internal boolean backporting just the tiny part of
+d6ac8cf6.
+---
+ src/client/global/qwaylandclientextension.cpp | 5 ++++-
+ src/client/global/qwaylandclientextension_p.h | 1 +
+ 2 files changed, 5 insertions(+), 1 deletion(-)
+
+diff --git a/src/client/global/qwaylandclientextension.cpp b/src/client/global/qwaylandclientextension.cpp
+index 797b06fe..edccfe63 100644
+--- a/src/client/global/qwaylandclientextension.cpp
++++ b/src/client/global/qwaylandclientextension.cpp
+@@ -74,7 +74,10 @@ void QWaylandClientExtensionPrivate::handleRegistryGlobal(void *data, ::wl_regis
+ void QWaylandClientExtension::addRegistryListener()
+ {
+ Q_D(QWaylandClientExtension);
+- d->waylandIntegration->display()->addRegistryListener(&QWaylandClientExtensionPrivate::handleRegistryGlobal, this);
++ if (!d->registered) {
++ d->waylandIntegration->display()->addRegistryListener(&QWaylandClientExtensionPrivate::handleRegistryGlobal, this);
++ d->registered = true;
++ }
+ }
+
+ QWaylandClientExtension::QWaylandClientExtension(const int ver)
+diff --git a/src/client/global/qwaylandclientextension_p.h b/src/client/global/qwaylandclientextension_p.h
+index 69cc46a0..9091efbe 100644
+--- a/src/client/global/qwaylandclientextension_p.h
++++ b/src/client/global/qwaylandclientextension_p.h
+@@ -68,6 +68,7 @@ public:
+ QtWaylandClient::QWaylandIntegration *waylandIntegration = nullptr;
+ int version = -1;
+ bool active = false;
++ bool registered = false;
+ };
+
+ class Q_WAYLAND_CLIENT_EXPORT QWaylandClientExtensionTemplatePrivate : public QWaylandClientExtensionPrivate
+--
+2.36.0
+
+From 7d6a8aa51603e39a5da5b87af2acd0433a265987 Mon Sep 17 00:00:00 2001
+From: Zhang Liang <zhanglianga@uniontech.com>
+Date: Mon, 1 Feb 2021 19:29:43 +0800
+Subject: [PATCH 08/38] Fix: remove listener
+
+Add the operation for removing the listener form listener list
+
+Change-Id: Ief2ff1303b607eee499543303fe80e51f8f10cc5
+Reviewed-by: David Edmundson <davidedmundson@kde.org>
+(cherry picked from commit 16760280fd04cf70255bab16d9acecad254fdd8f)
+---
+ src/client/qwaylanddisplay.cpp | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
+index f10c1f79..e0dfe8b2 100644
+--- a/src/client/qwaylanddisplay.cpp
++++ b/src/client/qwaylanddisplay.cpp
+@@ -452,9 +452,10 @@ void QWaylandDisplay::addRegistryListener(RegistryListener listener, void *data)
+
+ void QWaylandDisplay::removeListener(RegistryListener listener, void *data)
+ {
+- std::remove_if(mRegistryListeners.begin(), mRegistryListeners.end(), [=](Listener l){
++ auto iter = std::remove_if(mRegistryListeners.begin(), mRegistryListeners.end(), [=](Listener l){
+ return (l.listener == listener && l.data == data);
+ });
++ mRegistryListeners.erase(iter, mRegistryListeners.end());
+ }
+
+ uint32_t QWaylandDisplay::currentTimeMillisec()
+--
+2.36.0
+
+From bea49655add94c2ab77ec39dfe33bf6c7f5ce927 Mon Sep 17 00:00:00 2001
+From: David Redondo <qt@david-redondo.de>
+Date: Wed, 26 May 2021 14:49:40 +0200
+Subject: [PATCH 09/38] Hook up queryKeyboardModifers
+
+Can be useful when upon enter a modifiers event is received but no key
+event so no QKeyEvent is generated.
+
+Fixes: QTBUG-62786
+Change-Id: I30b57fc78ce6d54d8f644ca95ba40e7e26eb24ed
+Reviewed-by: Marco Martin <mart@kde.org>
+Reviewed-by: David Edmundson <davidedmundson@kde.org>
+
+
+(cherry picked from commit 4fa2baba8181ade4958a94e9531ec4f6919438a9)
+---
+ src/client/qwaylandintegration.cpp | 8 ++++++++
+ src/client/qwaylandintegration_p.h | 2 ++
+ 2 files changed, 10 insertions(+)
+
+diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
+index c53ccb78..e5e7dd42 100644
+--- a/src/client/qwaylandintegration.cpp
++++ b/src/client/qwaylandintegration.cpp
+@@ -262,6 +262,14 @@ QWaylandDisplay *QWaylandIntegration::display() const
+ return mDisplay.data();
+ }
+
++Qt::KeyboardModifiers QWaylandIntegration::queryKeyboardModifiers() const
++{
++ if (auto *seat = mDisplay->currentInputDevice()) {
++ return seat->modifiers();
++ }
++ return Qt::NoModifier;
++}
++
+ QList<int> QWaylandIntegration::possibleKeys(const QKeyEvent *event) const
+ {
+ if (auto *seat = mDisplay->currentInputDevice())
+diff --git a/src/client/qwaylandintegration_p.h b/src/client/qwaylandintegration_p.h
+index ff70ae25..73b80658 100644
+--- a/src/client/qwaylandintegration_p.h
++++ b/src/client/qwaylandintegration_p.h
+@@ -107,6 +107,8 @@ public:
+
+ QWaylandDisplay *display() const;
+
++ Qt::KeyboardModifiers queryKeyboardModifiers() const override;
++
+ QList<int> possibleKeys(const QKeyEvent *event) const override;
+
+ QStringList themeNames() const override;
+--
+2.36.0
+
+From c7022c1c0107781993b1d13e7aa11dd3f7486249 Mon Sep 17 00:00:00 2001
+From: Aleix Pol <aleixpol@kde.org>
+Date: Tue, 13 Jul 2021 13:32:15 +0200
+Subject: [PATCH 10/38] Do not update the mask if we do not have a surface
+
+mMask serves as a cache to remember what we've sent, the source of truth
+for the value is window()->mask().
+No need to store values that we are going to discard, because it will
+confuse the state of newly created windows.
+
+Change-Id: I6aa3da82c7f09c7ef90d0f7060f292fb042730f0
+Pick-to: 5.15 6.2
+Reviewed-by: David Edmundson <davidedmundson@kde.org>
+(cherry picked from commit 962f87190c682562b369c5ebd93dc9ce0915ed7a)
+---
+ src/client/qwaylandwindow.cpp | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
+index e96d8fe9..bd70f4af 100644
+--- a/src/client/qwaylandwindow.cpp
++++ b/src/client/qwaylandwindow.cpp
+@@ -464,14 +464,15 @@ void QWaylandWindow::lower()
+
+ void QWaylandWindow::setMask(const QRegion &mask)
+ {
++ QReadLocker locker(&mSurfaceLock);
++ if (!mSurface)
++ return;
++
+ if (mMask == mask)
+ return;
+
+ mMask = mask;
+
+- if (!mSurface)
+- return;
+-
+ if (mMask.isEmpty()) {
+ mSurface->set_input_region(nullptr);
+
+--
+2.36.0
+
+From 83a5e079e4bdf567010abc0b7d67eff052b76249 Mon Sep 17 00:00:00 2001
+From: Jan Blackquill <uhhadd@gmail.com>
+Date: Tue, 24 Aug 2021 14:36:34 -0400
+Subject: [PATCH 11/38] Correctly detect if image format is supported by
+ QImageWriter
+
+The code queries potential image formats by stripping a mimetype of its
+'image/' prefix and making the rest of the mimetype capitalised, such as
+'image/png' -> 'PNG'. The problem is that this is then searched for in
+QImageWriter::supportedImageFormats() by simple equality. The method
+returns a list of lowercase byte arrays, not uppercase. As the codepath
+can never match due to checking for an uppercase word in an array of
+lowercase words, this means that images are effectively always sent as
+BMP format, even if they should be sent in other formats, such as PNG
+or JPEG.
+
+A simple inspection with GDB (or a qDebug) reveals this:
+
+```
+(gdb) p QImageWriter::supportedImageFormats()
+$31 = {"bmp" = {...}, "bw" = {...}, "cur" = {...}, "eps" = {...},
+ "epsf" = {...}, "epsi" = {...}, "icns" = {...},
+ "ico" = {...}, "jp2" = {...}, "jpeg" = {...}, "jpg" = {...},
+ "pbm" = {...}, "pcx" = {...}, "pgm" = {...},
+ "pic" = {...}, "png" = {...}, "ppm" = {...},
+ "rgb" = {...}, "rgba" = {...}, "sgi" = {...},
+ "tga" = {...}, "tif" = {...}, "tiff" = {...},
+ "wbmp" = {...}, "webp" = {...}, "xbm" = {...}, "xpm" = {...}}
+```
+
+```
+(gdb) p QImageWriter::supportedImageFormats().contains("PNG")
+$32 = false
+```
+
+```
+(gdb) p QImageWriter::supportedImageFormats().contains("png")
+$33 = true
+```
+
+The fix for this is simple: lowercase the remainder of the mimetype,
+instead of uppercasing it, and we can start hitting the codepath that's
+supposed to write non-BMP formats.
+
+Change-Id: Id3e9b730b7edcabcb2f1b04d8ef0a4c1fb9c9159
+Reviewed-by: David Edmundson <davidedmundson@kde.org>
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+(cherry picked from commit 6072c1dc87e185f30c014f764737ac97b906640f)
+---
+ src/shared/qwaylandmimehelper.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/qwaylandmimehelper.cpp b/src/shared/qwaylandmimehelper.cpp
+index a5fdd34d..051a91dc 100644
+--- a/src/shared/qwaylandmimehelper.cpp
++++ b/src/shared/qwaylandmimehelper.cpp
+@@ -60,7 +60,7 @@ QByteArray QWaylandMimeHelper::getByteArray(QMimeData *mimeData, const QString &
+ buf.open(QIODevice::ReadWrite);
+ QByteArray fmt = "BMP";
+ if (mimeType.startsWith(QLatin1String("image/"))) {
+- QByteArray imgFmt = mimeType.mid(6).toUpper().toLatin1();
++ QByteArray imgFmt = mimeType.mid(6).toLower().toLatin1();
+ if (QImageWriter::supportedImageFormats().contains(imgFmt))
+ fmt = imgFmt;
+ }
+--
+2.36.0
+
+From 19d0878e56094b5cced1154ce07f566f2b147e2a Mon Sep 17 00:00:00 2001
+From: Paul Olav Tvete <paul.tvete@qt.io>
+Date: Tue, 14 Sep 2021 11:56:23 +0200
+Subject: [PATCH 12/38] Wayland client: Fix crash when windows are shown/hidden
+ during drag
+
+Fixes: QTBUG-87624
+Pick-to: 6.2 5.15
+Change-Id: I1b9443df091878abcd4fbe9c55927cb819aebd59
+Reviewed-by: David Edmundson <davidedmundson@kde.org>
+(cherry picked from commit c64c5d3849b40617e1de0295f8690f354cab2b3a)
+---
+ src/client/qwaylanddatadevice.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/client/qwaylanddatadevice.cpp b/src/client/qwaylanddatadevice.cpp
+index 54a69c3c..bbd2d568 100644
+--- a/src/client/qwaylanddatadevice.cpp
++++ b/src/client/qwaylanddatadevice.cpp
+@@ -169,7 +169,7 @@ void QWaylandDataDevice::data_device_drop()
+
+ void QWaylandDataDevice::data_device_enter(uint32_t serial, wl_surface *surface, wl_fixed_t x, wl_fixed_t y, wl_data_offer *id)
+ {
+- auto *dragWaylandWindow = QWaylandWindow::fromWlSurface(surface);
++ auto *dragWaylandWindow = surface ? QWaylandWindow::fromWlSurface(surface) : nullptr;
+ if (!dragWaylandWindow)
+ return; // Ignore foreign surfaces
+
+--
+2.36.0
+
+From abaa0b1765551533112944e624ac5989df7d7b6c Mon Sep 17 00:00:00 2001
+From: Georges Basile Stavracas Neto <gbsneto@gnome.org>
+Date: Thu, 27 May 2021 19:55:04 -0300
+Subject: [PATCH 13/38] Client: Don't always recreate frame callbacks
+
+The main QWaylandWindow method that is executed when handling updates is
+QWaylandWindow::handleUpdate(). This method always, unconditionally queues
+a frame callback, regardless of whether any other one is already queued.
+
+On some circumstances, e.g. when a window is hidden or completely obscured
+by other windows, it stops receiving frame callbacks from the compositor.
+However, QWaylandWindow would continue to request for them, which eventually
+fills up the Wayland socket, and causes the application to crash.
+
+This can be avoided by checking if the platform window is already waiting
+for a frame callback, before queueing another one.
+
+In QWaylandWindow::handleUpdate(), check if mWaitingForFrameCallback is true
+before queueing frame callbacks, and early return if that's the case.
+
+The XDG-shell test needed to be updated for this: The mock compositor is
+not responding to any frame callbacks, so the window will be unexposed,
+no longer get paint events and therefore not trigger any commit. This
+worked by accident before because we were issuing updates quickly enough
+to reset the timer before it had a chance to unexpose the window. The
+easiest fix is just to disable the dependency on frame callbacks in
+this test, since that is clearly not what it's testing.
+
+Task-number: QTBUG-81504
+Change-Id: Ieacb05c7d5a5fcf662243d9177ebcc308cb9ca84
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+Reviewed-by: Georges Basile Stavracas Neto <gbsneto@gnome.org>
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+(cherry picked from commit cbc74ba6d7186457d8d07183272e952dee5f34f9)
+---
+ src/client/qwaylandwindow.cpp | 4 ++++
+ tests/auto/client/xdgshell/tst_xdgshell.cpp | 2 ++
+ 2 files changed, 6 insertions(+)
+
+diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
+index bd70f4af..85307875 100644
+--- a/src/client/qwaylandwindow.cpp
++++ b/src/client/qwaylandwindow.cpp
+@@ -1170,6 +1170,10 @@ void QWaylandWindow::requestUpdate()
+ void QWaylandWindow::handleUpdate()
+ {
+ qCDebug(lcWaylandBackingstore) << "handleUpdate" << QThread::currentThread();
++
++ if (mWaitingForFrameCallback)
++ return;
++
+ // TODO: Should sync subsurfaces avoid requesting frame callbacks?
+ QReadLocker lock(&mSurfaceLock);
+ if (!mSurface)
+diff --git a/tests/auto/client/xdgshell/tst_xdgshell.cpp b/tests/auto/client/xdgshell/tst_xdgshell.cpp
+index 2fdd0a7c..e2593314 100644
+--- a/tests/auto/client/xdgshell/tst_xdgshell.cpp
++++ b/tests/auto/client/xdgshell/tst_xdgshell.cpp
+@@ -138,6 +138,7 @@ void tst_xdgshell::configureSize()
+
+ void tst_xdgshell::configureStates()
+ {
++ QVERIFY(qputenv("QT_WAYLAND_FRAME_CALLBACK_TIMEOUT", "0"));
+ QRasterWindow window;
+ window.resize(64, 48);
+ window.show();
+@@ -186,6 +187,7 @@ void tst_xdgshell::configureStates()
+ QCOMPARE(window.windowStates(), Qt::WindowNoState);
+ QCOMPARE(window.frameGeometry().size(), windowedSize);
+ // QCOMPARE(window.frameGeometry().topLeft(), QPoint()); // TODO: this doesn't currently work when window decorations are enabled
++ QVERIFY(qunsetenv("QT_WAYLAND_FRAME_CALLBACK_TIMEOUT"));
+ }
+
+ void tst_xdgshell::popup()
+--
+2.36.0
+
+From 1428e39b6e686faf4d25ab4f8506662bcc23e6f9 Mon Sep 17 00:00:00 2001
+From: Georges Basile Stavracas Neto <gbsneto@gnome.org>
+Date: Thu, 27 May 2021 20:02:53 -0300
+Subject: [PATCH 14/38] Client: Always destroy frame callback in the actual
+ callback
+
+It's good hygiene to destroy all frame callbacks. Destroy the
+frame callback and cleanup the mFrameCallback class member in
+the callback itself. The callback destruction happens before
+calling handleFrameCallback() to avoid the theoretical case
+where another frame callback is queued by handleFrameCallback(),
+and then immediately destroyed in the callback handler.
+
+* asturmlechner 2021-09-27:
+ Conflict resolved from non-backported commit in dev branch:
+ 93058de8d7e7c2f320c22b3bd898aa06cf5babcd
+
+Change-Id: Ide6dc95e3402932c58bfc088a9d471fda821e9a1
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+(cherry picked from commit 42cdc61a93cf2acb09936aebb5e431fdbc0a26c6)
+---
+ src/client/qwaylandwindow.cpp | 11 +++++------
+ 1 file changed, 5 insertions(+), 6 deletions(-)
+
+diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
+index 85307875..c020a58f 100644
+--- a/src/client/qwaylandwindow.cpp
++++ b/src/client/qwaylandwindow.cpp
+@@ -622,9 +622,13 @@ void QWaylandWindow::commit()
+
+ const wl_callback_listener QWaylandWindow::callbackListener = {
+ [](void *data, wl_callback *callback, uint32_t time) {
+- Q_UNUSED(callback);
+ Q_UNUSED(time);
+ auto *window = static_cast<QWaylandWindow*>(data);
++
++ Q_ASSERT(callback == window->mFrameCallback);
++ wl_callback_destroy(callback);
++ window->mFrameCallback = nullptr;
++
+ window->handleFrameCallback();
+ }
+ };
+@@ -1179,11 +1183,6 @@ void QWaylandWindow::handleUpdate()
+ if (!mSurface)
+ return;
+
+- if (mFrameCallback) {
+- wl_callback_destroy(mFrameCallback);
+- mFrameCallback = nullptr;
+- }
+-
+ QMutexLocker locker(mFrameQueue.mutex);
+ struct ::wl_surface *wrappedSurface = reinterpret_cast<struct ::wl_surface *>(wl_proxy_create_wrapper(mSurface->object()));
+ wl_proxy_set_queue(reinterpret_cast<wl_proxy *>(wrappedSurface), mFrameQueue.queue);
+--
+2.36.0
+
+From 132be08e4d81c1e05b93f31a6e2b6a6bd65d5726 Mon Sep 17 00:00:00 2001
+From: Rodney Dawes <dobey.pwns@gmail.com>
+Date: Fri, 15 Oct 2021 12:55:33 -0400
+Subject: [PATCH 15/38] Fix the logic for decoding modifiers map in Wayland
+ text input protocol
+
+Correctly check for the flags in the modifiers map when we get it from
+the compositor, instead of modifying the map in the for loop conditional.
+
+[ChangeLog][QWaylandInputContext] Fix modifiers map decoding
+logic when receiving the map from the compositor.
+
+Fixes: QTBUG-97094
+Pick-to: 6.2 5.15 5.12
+Change-Id: Idad19f7b1f4560d40abbb5b31032360cfe915261
+Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
+---
+ src/client/qwaylandinputcontext.cpp | 6 ++++--
+ 1 file changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/src/client/qwaylandinputcontext.cpp b/src/client/qwaylandinputcontext.cpp
+index 503fd735..e290baa2 100644
+--- a/src/client/qwaylandinputcontext.cpp
++++ b/src/client/qwaylandinputcontext.cpp
+@@ -387,8 +387,10 @@ void QWaylandTextInput::zwp_text_input_v2_input_method_changed(uint32_t serial,
+ Qt::KeyboardModifiers QWaylandTextInput::modifiersToQtModifiers(uint32_t modifiers)
+ {
+ Qt::KeyboardModifiers ret = Qt::NoModifier;
+- for (int i = 0; modifiers >>= 1; ++i) {
+- ret |= m_modifiersMap[i];
++ for (int i = 0; i < m_modifiersMap.size(); ++i) {
++ if (modifiers & (1 << i)) {
++ ret |= m_modifiersMap[i];
++ }
+ }
+ return ret;
+ }
+--
+2.36.0
+
+From f73a3ec466eb30e554f918d6d2da2c5d1b0e23bd Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?M=C3=A9ven=20Car?= <meven.car@enioka.com>
+Date: Wed, 18 Aug 2021 18:28:20 +0200
+Subject: [PATCH 16/38] Wayland client: use wl_keyboard to determine active
+ state
+
+Commit f497a5bb87270174b8e0106b7eca1992d44ff15d made QWaylandDisplay
+use the xdgshell's active state for QWindow::isActive(), instead of
+using wl_keyboard activate/deactivate events.
+
+That seems to have been a misunderstanding, since xdgshell activation
+is only supposed to be used to determine visual appearance, and there
+is an explicit warning not to assume it means focus.
+
+This commit reverts this logic back to listening to wl_keyboard.
+It adds a fallback when there is no wl_keyboard available to handle
+activated/deactivated events through xdg-shell, in order to fix
+QTBUG-53702.
+
+windowStates is handled so that we're not using the Xdg hint for
+anything with QWindowSystemInterface::handleWindowStateChanged or
+anything where we need to track only having one active.
+
+We are still exposing it for decorations, which is the only reason to
+use the Xdghint over keyboard focus - so you can keep the toplevel
+active whilst you show a popup.
+
+cherry-pick 40036a1b80e5234e6db7d5cbeff122aa7ee13e20
+
+Change-Id: I4343d2ed9fb5b066cde95628ed0b4ccc84a424db
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+---
+ src/client/qwaylanddisplay.cpp | 19 +++++++++++--------
+ src/client/qwaylanddisplay_p.h | 1 +
+ src/client/qwaylandwindow.cpp | 13 +++++++++++--
+ src/client/qwaylandwindow_p.h | 1 +
+ .../qwaylandshellintegration_p.h | 7 +++----
+ .../qwaylandxdgshellv5integration.cpp | 7 -------
+ .../qwaylandxdgshellv5integration_p.h | 1 -
+ .../qwaylandxdgshellv6integration.cpp | 14 --------------
+ .../qwaylandxdgshellv6integration_p.h | 1 -
+ .../xdg-shell/qwaylandxdgshell.cpp | 16 +++++-----------
+ .../xdg-shell/qwaylandxdgshellintegration.cpp | 14 --------------
+ .../xdg-shell/qwaylandxdgshellintegration_p.h | 1 -
+ tests/auto/client/xdgshell/tst_xdgshell.cpp | 10 +++++++---
+ 13 files changed, 39 insertions(+), 66 deletions(-)
+
+diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
+index e0dfe8b2..27303110 100644
+--- a/src/client/qwaylanddisplay.cpp
++++ b/src/client/qwaylanddisplay.cpp
+@@ -575,14 +575,10 @@ void QWaylandDisplay::handleKeyboardFocusChanged(QWaylandInputDevice *inputDevic
+ if (mLastKeyboardFocus == keyboardFocus)
+ return;
+
+- if (mWaylandIntegration->mShellIntegration) {
+- mWaylandIntegration->mShellIntegration->handleKeyboardFocusChanged(keyboardFocus, mLastKeyboardFocus);
+- } else {
+- if (keyboardFocus)
+- handleWindowActivated(keyboardFocus);
+- if (mLastKeyboardFocus)
+- handleWindowDeactivated(mLastKeyboardFocus);
+- }
++ if (keyboardFocus)
++ handleWindowActivated(keyboardFocus);
++ if (mLastKeyboardFocus)
++ handleWindowDeactivated(mLastKeyboardFocus);
+
+ mLastKeyboardFocus = keyboardFocus;
+ }
+@@ -627,6 +623,13 @@ QWaylandInputDevice *QWaylandDisplay::defaultInputDevice() const
+ return mInputDevices.isEmpty() ? 0 : mInputDevices.first();
+ }
+
++bool QWaylandDisplay::isKeyboardAvailable() const
++{
++ return std::any_of(
++ mInputDevices.constBegin(), mInputDevices.constEnd(),
++ [this](const QWaylandInputDevice *device) { return device->keyboard() != nullptr; });
++}
++
+ #if QT_CONFIG(cursor)
+
+ QWaylandCursor *QWaylandDisplay::waylandCursor()
+diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h
+index 3b092bc8..09a1736a 100644
+--- a/src/client/qwaylanddisplay_p.h
++++ b/src/client/qwaylanddisplay_p.h
+@@ -215,6 +215,7 @@ public:
+ void destroyFrameQueue(const FrameQueue &q);
+ void dispatchQueueWhile(wl_event_queue *queue, std::function<bool()> condition, int timeout = -1);
+
++ bool isKeyboardAvailable() const;
+ public slots:
+ void blockingReadEvents();
+ void flushRequests();
+diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
+index c020a58f..ba881cb3 100644
+--- a/src/client/qwaylandwindow.cpp
++++ b/src/client/qwaylandwindow.cpp
+@@ -96,7 +96,6 @@ QWaylandWindow::QWaylandWindow(QWindow *window, QWaylandDisplay *display)
+ QWaylandWindow::~QWaylandWindow()
+ {
+ mDisplay->destroyFrameQueue(mFrameQueue);
+- mDisplay->handleWindowDestroyed(this);
+
+ delete mWindowDecoration;
+
+@@ -266,6 +265,8 @@ void QWaylandWindow::reset()
+
+ mMask = QRegion();
+ mQueuedBuffer = nullptr;
++
++ mDisplay->handleWindowDestroyed(this);
+ }
+
+ QWaylandWindow *QWaylandWindow::fromWlSurface(::wl_surface *surface)
+@@ -1083,10 +1084,18 @@ bool QWaylandWindow::setMouseGrabEnabled(bool grab)
+ return true;
+ }
+
++Qt::WindowStates QWaylandWindow::windowStates() const
++{
++ return mLastReportedWindowStates;
++}
++
+ void QWaylandWindow::handleWindowStatesChanged(Qt::WindowStates states)
+ {
+ createDecoration();
+- QWindowSystemInterface::handleWindowStateChanged(window(), states, mLastReportedWindowStates);
++ Qt::WindowStates statesWithoutActive = states & ~Qt::WindowActive;
++ Qt::WindowStates lastStatesWithoutActive = mLastReportedWindowStates & ~Qt::WindowActive;
++ QWindowSystemInterface::handleWindowStateChanged(window(), statesWithoutActive,
++ lastStatesWithoutActive);
+ mLastReportedWindowStates = states;
+ }
+
+diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h
+index 6cc1664b..e0687962 100644
+--- a/src/client/qwaylandwindow_p.h
++++ b/src/client/qwaylandwindow_p.h
+@@ -148,6 +148,7 @@ public:
+ void setWindowState(Qt::WindowStates states) override;
+ void setWindowFlags(Qt::WindowFlags flags) override;
+ void handleWindowStatesChanged(Qt::WindowStates states);
++ Qt::WindowStates windowStates() const;
+
+ void raise() override;
+ void lower() override;
+diff --git a/src/client/shellintegration/qwaylandshellintegration_p.h b/src/client/shellintegration/qwaylandshellintegration_p.h
+index ccad0048..4cc9b3b8 100644
+--- a/src/client/shellintegration/qwaylandshellintegration_p.h
++++ b/src/client/shellintegration/qwaylandshellintegration_p.h
+@@ -73,11 +73,10 @@ public:
+ return true;
+ }
+ virtual QWaylandShellSurface *createShellSurface(QWaylandWindow *window) = 0;
++ // kept for binary compat with layer-shell-qt
+ virtual void handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus) {
+- if (newFocus)
+- m_display->handleWindowActivated(newFocus);
+- if (oldFocus)
+- m_display->handleWindowDeactivated(oldFocus);
++ Q_UNUSED(newFocus);
++ Q_UNUSED(oldFocus);
+ }
+ virtual void *nativeResourceForWindow(const QByteArray &resource, QWindow *window) {
+ Q_UNUSED(resource);
+diff --git a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp
+index 4e25949f..cfc60939 100644
+--- a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp
++++ b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration.cpp
+@@ -85,13 +85,6 @@ QWaylandShellSurface *QWaylandXdgShellV5Integration::createShellSurface(QWayland
+ return m_xdgShell->createXdgSurface(window);
+ }
+
+-void QWaylandXdgShellV5Integration::handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus) {
+- if (newFocus && qobject_cast<QWaylandXdgPopupV5 *>(newFocus->shellSurface()))
+- m_display->handleWindowActivated(newFocus);
+- if (oldFocus && qobject_cast<QWaylandXdgPopupV5 *>(oldFocus->shellSurface()))
+- m_display->handleWindowDeactivated(oldFocus);
+-}
+-
+ }
+
+ QT_END_NAMESPACE
+diff --git a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration_p.h b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration_p.h
+index ce6bdb9e..aed88670 100644
+--- a/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration_p.h
++++ b/src/plugins/shellintegration/xdg-shell-v5/qwaylandxdgshellv5integration_p.h
+@@ -67,7 +67,6 @@ public:
+ QWaylandXdgShellV5Integration() {}
+ bool initialize(QWaylandDisplay *display) override;
+ QWaylandShellSurface *createShellSurface(QWaylandWindow *window) override;
+- void handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus) override;
+
+ private:
+ QScopedPointer<QWaylandXdgShellV5> m_xdgShell;
+diff --git a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration.cpp b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration.cpp
+index 03164316..e8da8ba1 100644
+--- a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration.cpp
++++ b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration.cpp
+@@ -68,20 +68,6 @@ QWaylandShellSurface *QWaylandXdgShellV6Integration::createShellSurface(QWayland
+ return m_xdgShell->getXdgSurface(window);
+ }
+
+-void QWaylandXdgShellV6Integration::handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus)
+-{
+- if (newFocus) {
+- auto *xdgSurface = qobject_cast<QWaylandXdgSurfaceV6 *>(newFocus->shellSurface());
+- if (xdgSurface && !xdgSurface->handlesActiveState())
+- m_display->handleWindowActivated(newFocus);
+- }
+- if (oldFocus && qobject_cast<QWaylandXdgSurfaceV6 *>(oldFocus->shellSurface())) {
+- auto *xdgSurface = qobject_cast<QWaylandXdgSurfaceV6 *>(oldFocus->shellSurface());
+- if (xdgSurface && !xdgSurface->handlesActiveState())
+- m_display->handleWindowDeactivated(oldFocus);
+- }
+-}
+-
+ }
+
+ QT_END_NAMESPACE
+diff --git a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration_p.h b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration_p.h
+index 261f8cbb..c1bcd5c6 100644
+--- a/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration_p.h
++++ b/src/plugins/shellintegration/xdg-shell-v6/qwaylandxdgshellv6integration_p.h
+@@ -65,7 +65,6 @@ public:
+ QWaylandXdgShellV6Integration() {}
+ bool initialize(QWaylandDisplay *display) override;
+ QWaylandShellSurface *createShellSurface(QWaylandWindow *window) override;
+- void handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus) override;
+
+ private:
+ QScopedPointer<QWaylandXdgShellV6> m_xdgShell;
+diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
+index 7d33dabd..d7d0ddf7 100644
+--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
++++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshell.cpp
+@@ -67,11 +67,6 @@ QWaylandXdgSurface::Toplevel::Toplevel(QWaylandXdgSurface *xdgSurface)
+
+ QWaylandXdgSurface::Toplevel::~Toplevel()
+ {
+- if (m_applied.states & Qt::WindowActive) {
+- QWaylandWindow *window = m_xdgSurface->window();
+- window->display()->handleWindowDeactivated(window);
+- }
+-
+ // The protocol spec requires that the decoration object is deleted before xdg_toplevel.
+ delete m_decoration;
+ m_decoration = nullptr;
+@@ -85,16 +80,15 @@ void QWaylandXdgSurface::Toplevel::applyConfigure()
+ if (!(m_applied.states & (Qt::WindowMaximized|Qt::WindowFullScreen)))
+ m_normalSize = m_xdgSurface->m_window->windowFrameGeometry().size();
+
+- if ((m_pending.states & Qt::WindowActive) && !(m_applied.states & Qt::WindowActive))
++ if ((m_pending.states & Qt::WindowActive) && !(m_applied.states & Qt::WindowActive)
++ && !m_xdgSurface->m_window->display()->isKeyboardAvailable())
+ m_xdgSurface->m_window->display()->handleWindowActivated(m_xdgSurface->m_window);
+
+- if (!(m_pending.states & Qt::WindowActive) && (m_applied.states & Qt::WindowActive))
++ if (!(m_pending.states & Qt::WindowActive) && (m_applied.states & Qt::WindowActive)
++ && !m_xdgSurface->m_window->display()->isKeyboardAvailable())
+ m_xdgSurface->m_window->display()->handleWindowDeactivated(m_xdgSurface->m_window);
+
+- // TODO: none of the other plugins send WindowActive either, but is it on purpose?
+- Qt::WindowStates statesWithoutActive = m_pending.states & ~Qt::WindowActive;
+-
+- m_xdgSurface->m_window->handleWindowStatesChanged(statesWithoutActive);
++ m_xdgSurface->m_window->handleWindowStatesChanged(m_pending.states);
+
+ if (m_pending.size.isEmpty()) {
+ // An empty size in the configure means it's up to the client to choose the size
+diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp
+index 8769d971..da0dd6a7 100644
+--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp
++++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration.cpp
+@@ -69,20 +69,6 @@ QWaylandShellSurface *QWaylandXdgShellIntegration::createShellSurface(QWaylandWi
+ return m_xdgShell->getXdgSurface(window);
+ }
+
+-void QWaylandXdgShellIntegration::handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus)
+-{
+- if (newFocus) {
+- auto *xdgSurface = qobject_cast<QWaylandXdgSurface *>(newFocus->shellSurface());
+- if (xdgSurface && !xdgSurface->handlesActiveState())
+- m_display->handleWindowActivated(newFocus);
+- }
+- if (oldFocus && qobject_cast<QWaylandXdgSurface *>(oldFocus->shellSurface())) {
+- auto *xdgSurface = qobject_cast<QWaylandXdgSurface *>(oldFocus->shellSurface());
+- if (xdgSurface && !xdgSurface->handlesActiveState())
+- m_display->handleWindowDeactivated(oldFocus);
+- }
+-}
+-
+ }
+
+ QT_END_NAMESPACE
+diff --git a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h
+index b6caa6c9..2f929f98 100644
+--- a/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h
++++ b/src/plugins/shellintegration/xdg-shell/qwaylandxdgshellintegration_p.h
+@@ -65,7 +65,6 @@ public:
+ QWaylandXdgShellIntegration() {}
+ bool initialize(QWaylandDisplay *display) override;
+ QWaylandShellSurface *createShellSurface(QWaylandWindow *window) override;
+- void handleKeyboardFocusChanged(QWaylandWindow *newFocus, QWaylandWindow *oldFocus) override;
+
+ private:
+ QScopedPointer<QWaylandXdgShell> m_xdgShell;
+diff --git a/tests/auto/client/xdgshell/tst_xdgshell.cpp b/tests/auto/client/xdgshell/tst_xdgshell.cpp
+index e2593314..73d1eb9c 100644
+--- a/tests/auto/client/xdgshell/tst_xdgshell.cpp
++++ b/tests/auto/client/xdgshell/tst_xdgshell.cpp
+@@ -31,6 +31,7 @@
+ #include <QtGui/QOpenGLWindow>
+ #include <QtGui/qpa/qplatformnativeinterface.h>
+ #include <QtWaylandClient/private/wayland-wayland-client-protocol.h>
++#include <QtWaylandClient/private/qwaylandwindow_p.h>
+
+ using namespace MockCompositor;
+
+@@ -155,9 +156,12 @@ void tst_xdgshell::configureStates()
+ // Toplevel windows don't know their position on xdg-shell
+ // QCOMPARE(window.frameGeometry().topLeft(), QPoint()); // TODO: this doesn't currently work when window decorations are enabled
+
+-// QEXPECT_FAIL("", "configure has already been acked, we shouldn't have to wait for isActive", Continue);
+-// QVERIFY(window.isActive());
+- QTRY_VERIFY(window.isActive()); // Just make sure it eventually get's set correctly
++ // window.windowstate() is driven by keyboard focus, however for decorations we want to follow
++ // XDGShell this is internal to QtWayland so it is queried directly
++ auto waylandWindow = static_cast<QtWaylandClient::QWaylandWindow *>(window.handle());
++ Q_ASSERT(waylandWindow);
++ QTRY_VERIFY(waylandWindow->windowStates().testFlag(
++ Qt::WindowActive)); // Just make sure it eventually get's set correctly
+
+ const QSize screenSize(640, 480);
+ const uint maximizedSerial = exec([=] {
+--
+2.36.0
+
+From 83440ae9e002f0c7bdec6b54db6b382d2e28bf7d Mon Sep 17 00:00:00 2001
+From: Jan Grulich <jgrulich@redhat.com>
+Date: Fri, 16 Jul 2021 13:00:03 +0200
+Subject: [PATCH 17/38] Client: do not empty clipboard when a new popup/window
+ is opened
+
+If we open a new popup or a window within the same app we have to avoid
+invalidating selection offer when losing focus, because it's still the
+same client who has the focus and we might not get a new selection offer
+by the compositor and therefore we would lose clipboard content.
+
+Fixes: QTBUG-93474
+Change-Id: Ia2ef826c2967b1daf1cdeb085e8dae66d090dbcf
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+Reviewed-by: David Edmundson <davidedmundson@kde.org>
+
+Cherry-pick: 1e57ebd501cfc2255300392cd4565cd034efeed8
+---
+ src/client/qwaylanddisplay.cpp | 13 +++++++++++++
+ src/client/qwaylandinputdevice.cpp | 8 --------
+ 2 files changed, 13 insertions(+), 8 deletions(-)
+
+diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
+index 27303110..9f595af3 100644
+--- a/src/client/qwaylanddisplay.cpp
++++ b/src/client/qwaylanddisplay.cpp
+@@ -597,6 +597,19 @@ void QWaylandDisplay::handleWaylandSync()
+ QWindow *activeWindow = mActiveWindows.empty() ? nullptr : mActiveWindows.last()->window();
+ if (activeWindow != QGuiApplication::focusWindow())
+ QWindowSystemInterface::handleWindowActivated(activeWindow);
++
++ if (!activeWindow) {
++ if (lastInputDevice()) {
++#if QT_CONFIG(clipboard)
++ if (auto *dataDevice = lastInputDevice()->dataDevice())
++ dataDevice->invalidateSelectionOffer();
++#endif
++#if QT_CONFIG(wayland_client_primary_selection)
++ if (auto *device = lastInputDevice()->primarySelectionDevice())
++ device->invalidateSelectionOffer();
++#endif
++ }
++ }
+ }
+
+ const wl_callback_listener QWaylandDisplay::syncCallbackListener = {
+diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
+index 613fe862..aaec7eb8 100644
+--- a/src/client/qwaylandinputdevice.cpp
++++ b/src/client/qwaylandinputdevice.cpp
+@@ -1300,14 +1300,6 @@ void QWaylandInputDevice::Keyboard::handleFocusDestroyed()
+ void QWaylandInputDevice::Keyboard::handleFocusLost()
+ {
+ mFocus = nullptr;
+-#if QT_CONFIG(clipboard)
+- if (auto *dataDevice = mParent->dataDevice())
+- dataDevice->invalidateSelectionOffer();
+-#endif
+-#if QT_CONFIG(wayland_client_primary_selection)
+- if (auto *device = mParent->primarySelectionDevice())
+- device->invalidateSelectionOffer();
+-#endif
+ mParent->mQDisplay->handleKeyboardFocusChanged(mParent);
+ mRepeatTimer.stop();
+ }
+--
+2.36.0
+
+From 1a476429c2d9034322d5b3366ce53375e484353a Mon Sep 17 00:00:00 2001
+From: Weng Xuetian <wengxt@gmail.com>
+Date: Sat, 18 Dec 2021 23:42:49 -0800
+Subject: [PATCH 18/38] Set preedit cursor when cursor equals to 0
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: I832fbb22d973b36ac4ab51570fc53bc2e4c3ed58
+Reviewed-by: Liang Qi <liang.qi@qt.io>
+(cherry picked from commit 719a55be13bdadfa659a732755f280e276a894bd)
+---
+ src/shared/qwaylandinputmethodeventbuilder.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/shared/qwaylandinputmethodeventbuilder.cpp b/src/shared/qwaylandinputmethodeventbuilder.cpp
+index 526d0ef4..25be2509 100644
+--- a/src/shared/qwaylandinputmethodeventbuilder.cpp
++++ b/src/shared/qwaylandinputmethodeventbuilder.cpp
+@@ -151,7 +151,7 @@ QInputMethodEvent QWaylandInputMethodEventBuilder::buildPreedit(const QString &t
+ {
+ QList<QInputMethodEvent::Attribute> attributes;
+
+- if (m_preeditCursor < 0) {
++ if (m_preeditCursor <= 0) {
+ attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, 0, 0, QVariant()));
+ } else if (m_preeditCursor > 0) {
+ attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, indexFromWayland(text, m_preeditCursor), 1, QVariant()));
+--
+2.36.0
+
+From 8afae71a44d0d5a0be477863da791dd2dfe2027d Mon Sep 17 00:00:00 2001
+From: David Edmundson <davidedmundson@kde.org>
+Date: Tue, 16 Feb 2021 09:51:47 +0000
+Subject: [PATCH 19/38] Client: Implement DataDeviceV3
+
+DataDeviceV2 fixes a leak of DataDevice resources.
+
+DataDeviceV3 brings multiple improvements:
+
+Action negotiation. The source announces which actions are supported,
+the target then announces which subset of those action the target
+supports and a preferred action. After negotiation both the source and
+target are notified of which action is to be performed.
+
+Drag sources are now notified when contents are dropped and when a
+client has finished with the drag and drop operation.
+
+A good test is the draggableicons example in QtBase.
+
+Change-Id: I55e9759ca5a2e4218d02d863144a64ade53ef764
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+(cherry picked from commit 283a2d61d03315495a52d82f356e7cb5292f4bb4)
+---
+ src/client/qwaylanddatadevice.cpp | 84 ++++++++++++++-----
+ src/client/qwaylanddatadevice_p.h | 8 +-
+ src/client/qwaylanddatadevicemanager.cpp | 4 +-
+ src/client/qwaylanddatadevicemanager_p.h | 2 +-
+ src/client/qwaylanddataoffer.cpp | 25 ++++++
+ src/client/qwaylanddataoffer_p.h | 4 +
+ src/client/qwaylanddatasource.cpp | 27 +++++-
+ src/client/qwaylanddatasource_p.h | 10 ++-
+ src/client/qwaylanddisplay.cpp | 2 +-
+ src/client/qwaylanddnd.cpp | 24 +++---
+ src/client/qwaylanddnd_p.h | 7 +-
+ .../client/datadevicev1/tst_datadevicev1.cpp | 2 +-
+ 12 files changed, 153 insertions(+), 46 deletions(-)
+
+diff --git a/src/client/qwaylanddatadevice.cpp b/src/client/qwaylanddatadevice.cpp
+index bbd2d568..fbb5aa91 100644
+--- a/src/client/qwaylanddatadevice.cpp
++++ b/src/client/qwaylanddatadevice.cpp
+@@ -72,6 +72,8 @@ QWaylandDataDevice::QWaylandDataDevice(QWaylandDataDeviceManager *manager, QWayl
+
+ QWaylandDataDevice::~QWaylandDataDevice()
+ {
++ if (wl_data_device_get_version(object()) >= WL_DATA_DEVICE_RELEASE_SINCE_VERSION)
++ release();
+ }
+
+ QWaylandDataOffer *QWaylandDataDevice::selectionOffer() const
+@@ -110,7 +112,7 @@ QWaylandDataOffer *QWaylandDataDevice::dragOffer() const
+ return m_dragOffer.data();
+ }
+
+-bool QWaylandDataDevice::startDrag(QMimeData *mimeData, QWaylandWindow *icon)
++bool QWaylandDataDevice::startDrag(QMimeData *mimeData, Qt::DropActions supportedActions, QWaylandWindow *icon)
+ {
+ auto *seat = m_display->currentInputDevice();
+ auto *origin = seat->pointerFocus();
+@@ -123,8 +125,28 @@ bool QWaylandDataDevice::startDrag(QMimeData *mimeData, QWaylandWindow *icon)
+ }
+
+ m_dragSource.reset(new QWaylandDataSource(m_display->dndSelectionHandler(), mimeData));
++
++ if (wl_data_device_get_version(object()) >= 3)
++ m_dragSource->set_actions(dropActionsToWl(supportedActions));
++
+ connect(m_dragSource.data(), &QWaylandDataSource::cancelled, this, &QWaylandDataDevice::dragSourceCancelled);
+- connect(m_dragSource.data(), &QWaylandDataSource::targetChanged, this, &QWaylandDataDevice::dragSourceTargetChanged);
++ connect(m_dragSource.data(), &QWaylandDataSource::dndResponseUpdated, this, [this](bool accepted, Qt::DropAction action) {
++ auto drag = static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag());
++ // in old versions drop action is not set, so we guess
++ if (wl_data_source_get_version(m_dragSource->object()) < 3) {
++ drag->setResponse(accepted);
++ } else {
++ QPlatformDropQtResponse response(accepted, action);
++ drag->setResponse(response);
++ }
++ });
++ connect(m_dragSource.data(), &QWaylandDataSource::dndDropped, this, [](bool accepted, Qt::DropAction action) {
++ QPlatformDropQtResponse response(accepted, action);
++ static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag())->setDropResponse(response);
++ });
++ connect(m_dragSource.data(), &QWaylandDataSource::finished, this, []() {
++ static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag())->finishDrag();
++ });
+
+ start_drag(m_dragSource->object(), origin->wlSurface(), icon->wlSurface(), m_display->currentInputDevice()->serial());
+ return true;
+@@ -153,7 +175,7 @@ void QWaylandDataDevice::data_device_drop()
+ supportedActions = drag->supportedActions();
+ } else if (m_dragOffer) {
+ dragData = m_dragOffer->mimeData();
+- supportedActions = Qt::CopyAction | Qt::MoveAction | Qt::LinkAction;
++ supportedActions = m_dragOffer->supportedActions();
+ } else {
+ return;
+ }
+@@ -163,7 +185,11 @@ void QWaylandDataDevice::data_device_drop()
+ QGuiApplication::keyboardModifiers());
+
+ if (drag) {
+- static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag())->finishDrag(response);
++ auto drag = static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag());
++ drag->setDropResponse(response);
++ drag->finishDrag();
++ } else if (m_dragOffer) {
++ m_dragOffer->finish();
+ }
+ }
+
+@@ -187,7 +213,7 @@ void QWaylandDataDevice::data_device_enter(uint32_t serial, wl_surface *surface,
+ supportedActions = drag->supportedActions();
+ } else if (m_dragOffer) {
+ dragData = m_dragOffer->mimeData();
+- supportedActions = Qt::CopyAction | Qt::MoveAction | Qt::LinkAction;
++ supportedActions = m_dragOffer->supportedActions();
+ }
+
+ const QPlatformDragQtResponse &response = QWindowSystemInterface::handleDrag(m_dragWindow, dragData, m_dragPoint, supportedActions,
+@@ -198,11 +224,7 @@ void QWaylandDataDevice::data_device_enter(uint32_t serial, wl_surface *surface,
+ static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag())->setResponse(response);
+ }
+
+- if (response.isAccepted()) {
+- wl_data_offer_accept(m_dragOffer->object(), m_enterSerial, m_dragOffer->firstFormat().toUtf8().constData());
+- } else {
+- wl_data_offer_accept(m_dragOffer->object(), m_enterSerial, nullptr);
+- }
++ sendResponse(supportedActions, response);
+ }
+
+ void QWaylandDataDevice::data_device_leave()
+@@ -236,10 +258,10 @@ void QWaylandDataDevice::data_device_motion(uint32_t time, wl_fixed_t x, wl_fixe
+ supportedActions = drag->supportedActions();
+ } else {
+ dragData = m_dragOffer->mimeData();
+- supportedActions = Qt::CopyAction | Qt::MoveAction | Qt::LinkAction;
++ supportedActions = m_dragOffer->supportedActions();
+ }
+
+- QPlatformDragQtResponse response = QWindowSystemInterface::handleDrag(m_dragWindow, dragData, m_dragPoint, supportedActions,
++ const QPlatformDragQtResponse response = QWindowSystemInterface::handleDrag(m_dragWindow, dragData, m_dragPoint, supportedActions,
+ QGuiApplication::mouseButtons(),
+ QGuiApplication::keyboardModifiers());
+
+@@ -247,11 +269,7 @@ void QWaylandDataDevice::data_device_motion(uint32_t time, wl_fixed_t x, wl_fixe
+ static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag())->setResponse(response);
+ }
+
+- if (response.isAccepted()) {
+- wl_data_offer_accept(m_dragOffer->object(), m_enterSerial, m_dragOffer->firstFormat().toUtf8().constData());
+- } else {
+- wl_data_offer_accept(m_dragOffer->object(), m_enterSerial, nullptr);
+- }
++ sendResponse(supportedActions, response);
+ }
+ #endif // QT_CONFIG(draganddrop)
+
+@@ -281,11 +299,6 @@ void QWaylandDataDevice::dragSourceCancelled()
+ m_dragSource.reset();
+ }
+
+-void QWaylandDataDevice::dragSourceTargetChanged(const QString &mimeType)
+-{
+- static_cast<QWaylandDrag *>(QGuiApplicationPrivate::platformIntegration()->drag())->updateTarget(mimeType);
+-}
+-
+ QPoint QWaylandDataDevice::calculateDragPosition(int x, int y, QWindow *wnd) const
+ {
+ QPoint pnt(wl_fixed_to_int(x), wl_fixed_to_int(y));
+@@ -298,6 +311,33 @@ QPoint QWaylandDataDevice::calculateDragPosition(int x, int y, QWindow *wnd) con
+ }
+ return pnt;
+ }
++
++void QWaylandDataDevice::sendResponse(Qt::DropActions supportedActions, const QPlatformDragQtResponse &response)
++{
++ if (response.isAccepted()) {
++ if (wl_data_device_get_version(object()) >= 3)
++ m_dragOffer->set_actions(dropActionsToWl(supportedActions), dropActionsToWl(response.acceptedAction()));
++
++ m_dragOffer->accept(m_enterSerial, m_dragOffer->firstFormat());
++ } else {
++ m_dragOffer->accept(m_enterSerial, QString());
++ }
++}
++
++int QWaylandDataDevice::dropActionsToWl(Qt::DropActions actions)
++{
++
++ int wlActions = WL_DATA_DEVICE_MANAGER_DND_ACTION_NONE;
++ if (actions & Qt::CopyAction)
++ wlActions |= WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY;
++ if (actions & (Qt::MoveAction | Qt::TargetMoveAction))
++ wlActions |= WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE;
++
++ // wayland does not support LinkAction at the time of writing
++ return wlActions;
++}
++
++
+ #endif // QT_CONFIG(draganddrop)
+
+ }
+diff --git a/src/client/qwaylanddatadevice_p.h b/src/client/qwaylanddatadevice_p.h
+index 16c3ad28..801dcc2c 100644
+--- a/src/client/qwaylanddatadevice_p.h
++++ b/src/client/qwaylanddatadevice_p.h
+@@ -64,6 +64,7 @@ QT_REQUIRE_CONFIG(wayland_datadevice);
+ QT_BEGIN_NAMESPACE
+
+ class QMimeData;
++class QPlatformDragQtResponse;
+ class QWindow;
+
+ namespace QtWaylandClient {
+@@ -89,7 +90,7 @@ public:
+
+ #if QT_CONFIG(draganddrop)
+ QWaylandDataOffer *dragOffer() const;
+- bool startDrag(QMimeData *mimeData, QWaylandWindow *icon);
++ bool startDrag(QMimeData *mimeData, Qt::DropActions supportedActions, QWaylandWindow *icon);
+ void cancelDrag();
+ #endif
+
+@@ -109,13 +110,16 @@ private Q_SLOTS:
+
+ #if QT_CONFIG(draganddrop)
+ void dragSourceCancelled();
+- void dragSourceTargetChanged(const QString &mimeType);
+ #endif
+
+ private:
+ #if QT_CONFIG(draganddrop)
+ QPoint calculateDragPosition(int x, int y, QWindow *wnd) const;
+ #endif
++ void sendResponse(Qt::DropActions supportedActions, const QPlatformDragQtResponse &response);
++
++ static int dropActionsToWl(Qt::DropActions dropActions);
++
+
+ QWaylandDisplay *m_display = nullptr;
+ QWaylandInputDevice *m_inputDevice = nullptr;
+diff --git a/src/client/qwaylanddatadevicemanager.cpp b/src/client/qwaylanddatadevicemanager.cpp
+index 35d67307..6dc4f77f 100644
+--- a/src/client/qwaylanddatadevicemanager.cpp
++++ b/src/client/qwaylanddatadevicemanager.cpp
+@@ -50,8 +50,8 @@ QT_BEGIN_NAMESPACE
+
+ namespace QtWaylandClient {
+
+-QWaylandDataDeviceManager::QWaylandDataDeviceManager(QWaylandDisplay *display, uint32_t id)
+- : wl_data_device_manager(display->wl_registry(), id, 1)
++QWaylandDataDeviceManager::QWaylandDataDeviceManager(QWaylandDisplay *display, int version, uint32_t id)
++ : wl_data_device_manager(display->wl_registry(), id, qMin(version, 3))
+ , m_display(display)
+ {
+ // Create transfer devices for all input devices.
+diff --git a/src/client/qwaylanddatadevicemanager_p.h b/src/client/qwaylanddatadevicemanager_p.h
+index bd05c0fb..510d9be4 100644
+--- a/src/client/qwaylanddatadevicemanager_p.h
++++ b/src/client/qwaylanddatadevicemanager_p.h
+@@ -68,7 +68,7 @@ class QWaylandInputDevice;
+ class Q_WAYLAND_CLIENT_EXPORT QWaylandDataDeviceManager : public QtWayland::wl_data_device_manager
+ {
+ public:
+- QWaylandDataDeviceManager(QWaylandDisplay *display, uint32_t id);
++ QWaylandDataDeviceManager(QWaylandDisplay *display, int version, uint32_t id);
+ ~QWaylandDataDeviceManager() override;
+
+ QWaylandDataDevice *getDataDevice(QWaylandInputDevice *inputDevice);
+diff --git a/src/client/qwaylanddataoffer.cpp b/src/client/qwaylanddataoffer.cpp
+index 2297e8a1..c9e158cc 100644
+--- a/src/client/qwaylanddataoffer.cpp
++++ b/src/client/qwaylanddataoffer.cpp
+@@ -82,6 +82,15 @@ QMimeData *QWaylandDataOffer::mimeData()
+ return m_mimeData.data();
+ }
+
++Qt::DropActions QWaylandDataOffer::supportedActions() const
++{
++ if (wl_data_offer_get_version(const_cast<::wl_data_offer*>(object())) < 3) {
++ return Qt::MoveAction | Qt::CopyAction;
++ }
++
++ return m_supportedActions;
++}
++
+ void QWaylandDataOffer::startReceiving(const QString &mimeType, int fd)
+ {
+ receive(mimeType, fd);
+@@ -93,6 +102,22 @@ void QWaylandDataOffer::data_offer_offer(const QString &mime_type)
+ m_mimeData->appendFormat(mime_type);
+ }
+
++void QWaylandDataOffer::data_offer_action(uint32_t dnd_action)
++{
++ Q_UNUSED(dnd_action);
++ // This is the compositor telling the drag target what action it should perform
++ // It does not map nicely into Qt final drop semantics, other than pretending there is only one supported action?
++}
++
++void QWaylandDataOffer::data_offer_source_actions(uint32_t source_actions)
++{
++ m_supportedActions = Qt::DropActions();
++ if (source_actions & WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE)
++ m_supportedActions |= Qt::MoveAction;
++ if (source_actions & WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY)
++ m_supportedActions |= Qt::CopyAction;
++}
++
+ QWaylandMimeData::QWaylandMimeData(QWaylandAbstractDataOffer *dataOffer)
+ : m_dataOffer(dataOffer)
+ {
+diff --git a/src/client/qwaylanddataoffer_p.h b/src/client/qwaylanddataoffer_p.h
+index 9cf1483c..6f667398 100644
+--- a/src/client/qwaylanddataoffer_p.h
++++ b/src/client/qwaylanddataoffer_p.h
+@@ -82,6 +82,7 @@ public:
+ explicit QWaylandDataOffer(QWaylandDisplay *display, struct ::wl_data_offer *offer);
+ ~QWaylandDataOffer() override;
+ QMimeData *mimeData() override;
++ Qt::DropActions supportedActions() const;
+
+ QString firstFormat() const;
+
+@@ -89,10 +90,13 @@ public:
+
+ protected:
+ void data_offer_offer(const QString &mime_type) override;
++ void data_offer_source_actions(uint32_t source_actions) override;
++ void data_offer_action(uint32_t dnd_action) override;
+
+ private:
+ QWaylandDisplay *m_display = nullptr;
+ QScopedPointer<QWaylandMimeData> m_mimeData;
++ Qt::DropActions m_supportedActions;
+ };
+
+
+diff --git a/src/client/qwaylanddatasource.cpp b/src/client/qwaylanddatasource.cpp
+index f45122fb..5599cbd4 100644
+--- a/src/client/qwaylanddatasource.cpp
++++ b/src/client/qwaylanddatasource.cpp
+@@ -101,7 +101,32 @@ void QWaylandDataSource::data_source_send(const QString &mime_type, int32_t fd)
+
+ void QWaylandDataSource::data_source_target(const QString &mime_type)
+ {
+- Q_EMIT targetChanged(mime_type);
++ m_accepted = !mime_type.isEmpty();
++ Q_EMIT dndResponseUpdated(m_accepted, m_dropAction);
++}
++
++void QWaylandDataSource::data_source_action(uint32_t action)
++{
++ Qt::DropAction qtAction = Qt::IgnoreAction;
++
++ if (action == WL_DATA_DEVICE_MANAGER_DND_ACTION_MOVE)
++ qtAction = Qt::MoveAction;
++ else if (action == WL_DATA_DEVICE_MANAGER_DND_ACTION_COPY)
++ qtAction = Qt::CopyAction;
++
++ m_dropAction = qtAction;
++ Q_EMIT dndResponseUpdated(m_accepted, m_dropAction);
++}
++
++void QWaylandDataSource::data_source_dnd_finished()
++{
++ Q_EMIT finished();
++}
++
++void QWaylandDataSource::data_source_dnd_drop_performed()
++{
++
++ Q_EMIT dndDropped(m_accepted, m_dropAction);
+ }
+
+ }
+diff --git a/src/client/qwaylanddatasource_p.h b/src/client/qwaylanddatasource_p.h
+index 25afff79..96f07bc3 100644
+--- a/src/client/qwaylanddatasource_p.h
++++ b/src/client/qwaylanddatasource_p.h
+@@ -77,17 +77,25 @@ public:
+ QMimeData *mimeData() const;
+
+ Q_SIGNALS:
+- void targetChanged(const QString &mime_type);
+ void cancelled();
++ void finished();
++
++ void dndResponseUpdated(bool accepted, Qt::DropAction action);
++ void dndDropped(bool accepted, Qt::DropAction action);
+
+ protected:
+ void data_source_cancelled() override;
+ void data_source_send(const QString &mime_type, int32_t fd) override;
+ void data_source_target(const QString &mime_type) override;
++ void data_source_dnd_drop_performed() override;
++ void data_source_dnd_finished() override;
++ void data_source_action(uint32_t action) override;
+
+ private:
+ QWaylandDisplay *m_display = nullptr;
+ QMimeData *m_mime_data = nullptr;
++ bool m_accepted = false;
++ Qt::DropAction m_dropAction = Qt::IgnoreAction;
+ };
+
+ }
+diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
+index 9f595af3..ea344c61 100644
+--- a/src/client/qwaylanddisplay.cpp
++++ b/src/client/qwaylanddisplay.cpp
+@@ -354,7 +354,7 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin
+ mInputDevices.append(inputDevice);
+ #if QT_CONFIG(wayland_datadevice)
+ } else if (interface == QStringLiteral("wl_data_device_manager")) {
+- mDndSelectionHandler.reset(new QWaylandDataDeviceManager(this, id));
++ mDndSelectionHandler.reset(new QWaylandDataDeviceManager(this, version, id));
+ #endif
+ } else if (interface == QStringLiteral("qt_surface_extension")) {
+ mWindowExtension.reset(new QtWayland::qt_surface_extension(registry, id, 1));
+diff --git a/src/client/qwaylanddnd.cpp b/src/client/qwaylanddnd.cpp
+index 6535aa16..97ee5b2e 100644
+--- a/src/client/qwaylanddnd.cpp
++++ b/src/client/qwaylanddnd.cpp
+@@ -66,7 +66,7 @@ void QWaylandDrag::startDrag()
+ {
+ QBasicDrag::startDrag();
+ QWaylandWindow *icon = static_cast<QWaylandWindow *>(shapedPixmapWindow()->handle());
+- if (m_display->currentInputDevice()->dataDevice()->startDrag(drag()->mimeData(), icon)) {
++ if (m_display->currentInputDevice()->dataDevice()->startDrag(drag()->mimeData(), drag()->supportedActions(), icon)) {
+ icon->addAttachOffset(-drag()->hotSpot());
+ } else {
+ // Cancelling immediately does not work, since the event loop for QDrag::exec is started
+@@ -103,31 +103,31 @@ void QWaylandDrag::endDrag()
+ m_display->currentInputDevice()->handleEndDrag();
+ }
+
+-void QWaylandDrag::updateTarget(const QString &mimeType)
++void QWaylandDrag::setResponse(bool accepted)
+ {
+- setCanDrop(!mimeType.isEmpty());
+-
+- if (canDrop()) {
+- updateCursor(defaultAction(drag()->supportedActions(), m_display->currentInputDevice()->modifiers()));
+- } else {
+- updateCursor(Qt::IgnoreAction);
+- }
++ // This method is used for old DataDevices where the drag action is not communicated
++ Qt::DropAction action = defaultAction(drag()->supportedActions(), m_display->currentInputDevice()->modifiers());
++ setResponse(QPlatformDropQtResponse(accepted, action));
+ }
+
+-void QWaylandDrag::setResponse(const QPlatformDragQtResponse &response)
++void QWaylandDrag::setResponse(const QPlatformDropQtResponse &response)
+ {
+ setCanDrop(response.isAccepted());
+
+ if (canDrop()) {
+- updateCursor(defaultAction(drag()->supportedActions(), m_display->currentInputDevice()->modifiers()));
++ updateCursor(response.acceptedAction());
+ } else {
+ updateCursor(Qt::IgnoreAction);
+ }
+ }
+
+-void QWaylandDrag::finishDrag(const QPlatformDropQtResponse &response)
++void QWaylandDrag::setDropResponse(const QPlatformDropQtResponse &response)
+ {
+ setExecutedDropAction(response.acceptedAction());
++}
++
++void QWaylandDrag::finishDrag()
++{
+ QKeyEvent event(QEvent::KeyPress, Qt::Key_Escape, Qt::NoModifier);
+ eventFilter(shapedPixmapWindow(), &event);
+ }
+diff --git a/src/client/qwaylanddnd_p.h b/src/client/qwaylanddnd_p.h
+index 474fe2ab..747f0190 100644
+--- a/src/client/qwaylanddnd_p.h
++++ b/src/client/qwaylanddnd_p.h
+@@ -71,9 +71,10 @@ public:
+ QWaylandDrag(QWaylandDisplay *display);
+ ~QWaylandDrag() override;
+
+- void updateTarget(const QString &mimeType);
+- void setResponse(const QPlatformDragQtResponse &response);
+- void finishDrag(const QPlatformDropQtResponse &response);
++ void setResponse(bool accepted);
++ void setResponse(const QPlatformDropQtResponse &response);
++ void setDropResponse(const QPlatformDropQtResponse &response);
++ void finishDrag();
+
+ protected:
+ void startDrag() override;
+diff --git a/tests/auto/client/datadevicev1/tst_datadevicev1.cpp b/tests/auto/client/datadevicev1/tst_datadevicev1.cpp
+index 1568b3b9..067410d0 100644
+--- a/tests/auto/client/datadevicev1/tst_datadevicev1.cpp
++++ b/tests/auto/client/datadevicev1/tst_datadevicev1.cpp
+@@ -35,7 +35,7 @@
+
+ using namespace MockCompositor;
+
+-constexpr int dataDeviceVersion = 1;
++constexpr int dataDeviceVersion = 3;
+
+ class DataDeviceCompositor : public DefaultCompositor {
+ public:
+--
+2.36.0
+
+From e92aff243eca4c1e30c093692dce6f7c91d7a19c Mon Sep 17 00:00:00 2001
+From: Arjen Hiemstra <ahiemstra@heimr.nl>
+Date: Thu, 18 Nov 2021 13:05:30 +0100
+Subject: [PATCH 20/38] Client: Delay deletion of QDrag object until after
+ we're done with it
+
+In certain cases, most notably when performing drag and drop operations
+with touch, the QDrag object gets deleted before data_source_send is
+executed. This then tries to access a deleted data_source, crashing the
+client.
+
+To avoid this, we indicate we want the QDrag object to stay around and
+then delete it in QWaylandDrag::finishDrag, which with data_device v3 is
+guaranteed to be called after everyone is done with the data source.
+
+Change-Id: I6a2f5a219f58d1b721a9fec33c57d26d2c522ec9
+Reviewed-by: David Edmundson <davidedmundson@kde.org>
+(cherry picked from commit 39e3290efa2dd40722fa3322284cae3b01ccedf4)
+---
+ src/client/qwaylanddnd.cpp | 11 +++++++++++
+ src/client/qwaylanddnd_p.h | 1 +
+ 2 files changed, 12 insertions(+)
+
+diff --git a/src/client/qwaylanddnd.cpp b/src/client/qwaylanddnd.cpp
+index 97ee5b2e..7c53f5fa 100644
+--- a/src/client/qwaylanddnd.cpp
++++ b/src/client/qwaylanddnd.cpp
+@@ -80,6 +80,9 @@ void QWaylandDrag::cancel()
+ QBasicDrag::cancel();
+
+ m_display->currentInputDevice()->dataDevice()->cancelDrag();
++
++ if (drag())
++ drag()->deleteLater();
+ }
+
+ void QWaylandDrag::move(const QPoint &globalPos, Qt::MouseButtons b, Qt::KeyboardModifiers mods)
+@@ -130,6 +133,14 @@ void QWaylandDrag::finishDrag()
+ {
+ QKeyEvent event(QEvent::KeyPress, Qt::Key_Escape, Qt::NoModifier);
+ eventFilter(shapedPixmapWindow(), &event);
++
++ if (drag())
++ drag()->deleteLater();
++}
++
++bool QWaylandDrag::ownsDragObject() const
++{
++ return true;
+ }
+
+ }
+diff --git a/src/client/qwaylanddnd_p.h b/src/client/qwaylanddnd_p.h
+index 747f0190..46f629ac 100644
+--- a/src/client/qwaylanddnd_p.h
++++ b/src/client/qwaylanddnd_p.h
+@@ -83,6 +83,7 @@ protected:
+ void drop(const QPoint &globalPos, Qt::MouseButtons b, Qt::KeyboardModifiers mods) override;
+ void endDrag() override;
+
++ bool ownsDragObject() const override;
+
+ private:
+ QWaylandDisplay *m_display = nullptr;
+--
+2.36.0
+
+From 340e89575c93435abab78ac73603b405f1f05ceb Mon Sep 17 00:00:00 2001
+From: David Edmundson <davidedmundson@kde.org>
+Date: Sun, 14 Nov 2021 13:54:19 +0000
+Subject: [PATCH 21/38] Client: Avoid processing of events when showing windows
+
+The only time we want to dispatch events from the wayland socket is when
+the application is waiting for external events. Doing so at any other
+time will cause unpredictable behavior in client code.
+
+This caused a crash downstream where we had outputs get altered whilst
+itterating through outputs, which shouldn't happen.
+
+There is no benefit to flushing here, it won't make anything appear
+faster as we haven't attached the buffer yet.
+
+Change-Id: Ie13eae4012dab96a93d8810f468d1343402b8c28
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
+(cherry picked from commit 46ed85a80b28d519cf5887bbdce55d1bf57886c3)
+---
+ src/client/qwaylandwindow.cpp | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
+index ba881cb3..1597f67e 100644
+--- a/src/client/qwaylandwindow.cpp
++++ b/src/client/qwaylandwindow.cpp
+@@ -436,7 +436,6 @@ void QWaylandWindow::setVisible(bool visible)
+ if (window()->type() == Qt::Popup || window()->type() == Qt::ToolTip)
+ activePopups << this;
+ initWindow();
+- mDisplay->flushRequests();
+
+ setGeometry(windowGeometry());
+ // Don't flush the events here, or else the newly visible window may start drawing, but since
+--
+2.36.0
+
+From de7afd339100cac1470f875eafc22d3ee87870bd Mon Sep 17 00:00:00 2001
+From: Elvis Lee <kwangwoong.lee@lge.com>
+Date: Thu, 18 Feb 2021 15:45:49 +0900
+Subject: [PATCH 22/38] Handle registry_global out of constructor
+
+Factory functions in QWaylandDisplay::registry_global() can be overridden.
+Later, other classes instantiated in the registry_global can support
+platform specific implementation with inheritance and some factory function.
+
+Change-Id: I92ce574e049b8c91587687cc7c30611f3dfdbe56
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+(cherry picked from commit 3793a82038682db77966ea5daf8e75964e4250fe)
+---
+ src/client/qwaylanddisplay.cpp | 19 ++++++++++++-------
+ src/client/qwaylanddisplay_p.h | 2 ++
+ src/client/qwaylandintegration.cpp | 3 +++
+ 3 files changed, 17 insertions(+), 7 deletions(-)
+
+diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
+index ea344c61..0f75cb7e 100644
+--- a/src/client/qwaylanddisplay.cpp
++++ b/src/client/qwaylanddisplay.cpp
+@@ -158,13 +158,6 @@ QWaylandDisplay::QWaylandDisplay(QWaylandIntegration *waylandIntegration)
+ if (!mXkbContext)
+ qCWarning(lcQpaWayland, "failed to create xkb context");
+ #endif
+-
+- forceRoundTrip();
+-
+- if (!mWaitingScreens.isEmpty()) {
+- // Give wl_output.done and zxdg_output_v1.done events a chance to arrive
+- forceRoundTrip();
+- }
+ }
+
+ QWaylandDisplay::~QWaylandDisplay(void)
+@@ -189,6 +182,18 @@ QWaylandDisplay::~QWaylandDisplay(void)
+ wl_display_disconnect(mDisplay);
+ }
+
++// Steps which is called just after constructor. This separates registry_global() out of the constructor
++// so that factory functions in integration can be overridden.
++void QWaylandDisplay::initialize()
++{
++ forceRoundTrip();
++
++ if (!mWaitingScreens.isEmpty()) {
++ // Give wl_output.done and zxdg_output_v1.done events a chance to arrive
++ forceRoundTrip();
++ }
++}
++
+ void QWaylandDisplay::ensureScreen()
+ {
+ if (!mScreens.empty() || mPlaceholderScreen)
+diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h
+index 09a1736a..d9c8849f 100644
+--- a/src/client/qwaylanddisplay_p.h
++++ b/src/client/qwaylanddisplay_p.h
+@@ -129,6 +129,8 @@ public:
+ QWaylandDisplay(QWaylandIntegration *waylandIntegration);
+ ~QWaylandDisplay(void) override;
+
++ void initialize();
++
+ #if QT_CONFIG(xkbcommon)
+ struct xkb_context *xkbContext() const { return mXkbContext.get(); }
+ #endif
+diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
+index e5e7dd42..f5632982 100644
+--- a/src/client/qwaylandintegration.cpp
++++ b/src/client/qwaylandintegration.cpp
+@@ -200,6 +200,9 @@ void QWaylandIntegration::initialize()
+ QSocketNotifier *sn = new QSocketNotifier(fd, QSocketNotifier::Read, mDisplay.data());
+ QObject::connect(sn, SIGNAL(activated(QSocketDescriptor)), mDisplay.data(), SLOT(flushRequests()));
+
++ // Call after eventDispatcher is fully connected, for QWaylandDisplay::forceRoundTrip()
++ mDisplay->initialize();
++
+ // Qt does not support running with no screens
+ mDisplay->ensureScreen();
+ }
+--
+2.36.0
+
+From a5df6f67f446ed091c688336510b5da2970a0d84 Mon Sep 17 00:00:00 2001
+From: Elvis Lee <kwangwoong.lee@lge.com>
+Date: Wed, 17 Mar 2021 16:31:10 +0900
+Subject: [PATCH 23/38] Connect flushRequest after forceRoundTrip
+
+If flushRequest is connected with aboutToBlock, the flushRequest
+may consumes all events so that processEvents might be blocked in forceRoundTrip.
+
+Change-Id: I12b2c506e8442bf0e75f6ab6e418d3e1eea6d68c
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+(cherry picked from commit 654a54755138c520c3a41210d8078196e9a2c1bf)
+---
+ src/client/qwaylandintegration.cpp | 11 +++++++----
+ 1 file changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
+index f5632982..3a6fa651 100644
+--- a/src/client/qwaylandintegration.cpp
++++ b/src/client/qwaylandintegration.cpp
+@@ -192,10 +192,6 @@ QAbstractEventDispatcher *QWaylandIntegration::createEventDispatcher() const
+
+ void QWaylandIntegration::initialize()
+ {
+- QAbstractEventDispatcher *dispatcher = QGuiApplicationPrivate::eventDispatcher;
+- QObject::connect(dispatcher, SIGNAL(aboutToBlock()), mDisplay.data(), SLOT(flushRequests()));
+- QObject::connect(dispatcher, SIGNAL(awake()), mDisplay.data(), SLOT(flushRequests()));
+-
+ int fd = wl_display_get_fd(mDisplay->wl_display());
+ QSocketNotifier *sn = new QSocketNotifier(fd, QSocketNotifier::Read, mDisplay.data());
+ QObject::connect(sn, SIGNAL(activated(QSocketDescriptor)), mDisplay.data(), SLOT(flushRequests()));
+@@ -203,6 +199,13 @@ void QWaylandIntegration::initialize()
+ // Call after eventDispatcher is fully connected, for QWaylandDisplay::forceRoundTrip()
+ mDisplay->initialize();
+
++ // But the aboutToBlock() and awake() should be connected after initializePlatform().
++ // Otherwise the connected flushRequests() may consumes up all events before processEvents starts to wait,
++ // so that processEvents(QEventLoop::WaitForMoreEvents) may be blocked in the forceRoundTrip().
++ QAbstractEventDispatcher *dispatcher = QGuiApplicationPrivate::eventDispatcher;
++ QObject::connect(dispatcher, SIGNAL(aboutToBlock()), mDisplay.data(), SLOT(flushRequests()));
++ QObject::connect(dispatcher, SIGNAL(awake()), mDisplay.data(), SLOT(flushRequests()));
++
+ // Qt does not support running with no screens
+ mDisplay->ensureScreen();
+ }
+--
+2.36.0
+
+From 967883d20e94183bd9cf6648297b9d76ba0e167e Mon Sep 17 00:00:00 2001
+From: Adrien Faveraux <af@brain-networks.fr>
+Date: Fri, 26 Nov 2021 09:18:58 +0100
+Subject: [PATCH 24/38] Move the wayland socket polling to a separate event
+ thread
+
+New event threads is introduced which calls poll() on the wayland fd,
+instead of relying on the event dispatcher by using the QSocketNotifier.
+This allows to call in the proper order the wl_display_prepare_read(),
+poll() and wl_display_read_events() functions.
+
+One thread is responsible for the default queue; when needed, it emit
+a signal so that the main thread can dispatch the queue. Another thread
+is responsible for the dedicated queue for frame callbacks; this thread
+will dispatch events on the thread itself.
+
+QWaylandWindow is updated to, instead of each window's dedicated event
+queue, use this queue for frame callbacks.
+
+Co-authored-by: Ratchanan Srirattanamet <ratchanan@ubports.com>
+Task-number: QTBUG-66075
+Change-Id: Ibb33ad7f4193b866d1b8d7a0405a94d59dcad5eb
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+(cherry picked from commit 92a7904d9651348b0c307e84251c8440c6f75b22)
+---
+ src/client/qwaylanddisplay.cpp | 302 +++++++++++++++++++++--------
+ src/client/qwaylanddisplay_p.h | 21 +-
+ src/client/qwaylandintegration.cpp | 4 +-
+ src/client/qwaylandwindow.cpp | 34 +++-
+ src/client/qwaylandwindow_p.h | 2 +-
+ 5 files changed, 255 insertions(+), 108 deletions(-)
+
+diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
+index 0f75cb7e..a7ce280a 100644
+--- a/src/client/qwaylanddisplay.cpp
++++ b/src/client/qwaylanddisplay.cpp
+@@ -85,10 +85,203 @@
+
+ #include <errno.h>
+
++#include <tuple> // for std::tie
++
++static void checkWaylandError(struct wl_display *display)
++{
++ int ecode = wl_display_get_error(display);
++ if ((ecode == EPIPE || ecode == ECONNRESET)) {
++ // special case this to provide a nicer error
++ qWarning("The Wayland connection broke. Did the Wayland compositor die?");
++ } else {
++ qWarning("The Wayland connection experienced a fatal error: %s", strerror(ecode));
++ }
++ _exit(1);
++}
++
+ QT_BEGIN_NAMESPACE
+
+ namespace QtWaylandClient {
+
++class EventThread : public QThread
++{
++ Q_OBJECT
++public:
++ enum OperatingMode {
++ EmitToDispatch, // Emit the signal, allow dispatching in a differnt thread.
++ SelfDispatch, // Dispatch the events inside this thread.
++ };
++
++ EventThread(struct wl_display * wl, struct wl_event_queue * ev_queue,
++ OperatingMode mode)
++ : m_fd(wl_display_get_fd(wl))
++ , m_pipefd{ -1, -1 }
++ , m_wldisplay(wl)
++ , m_wlevqueue(ev_queue)
++ , m_mode(mode)
++ , m_reading(true)
++ , m_quitting(false)
++ {
++ setObjectName(QStringLiteral("WaylandEventThread"));
++ }
++
++ void readAndDispatchEvents()
++ {
++ /*
++ * Dispatch pending events and flush the requests at least once. If the event thread
++ * is not reading, try to call _prepare_read() to allow the event thread to poll().
++ * If that fails, re-try dispatch & flush again until _prepare_read() is successful.
++ *
++ * This allow any call to readAndDispatchEvents() to start event thread's polling,
++ * not only the one issued from event thread's waitForReading(), which means functions
++ * called from dispatch_pending() can safely spin an event loop.
++ */
++ for (;;) {
++ if (dispatchQueuePending() < 0) {
++ checkWaylandError(m_wldisplay);
++ return;
++ }
++
++ wl_display_flush(m_wldisplay);
++
++ // We have to check if event thread is reading every time we dispatch
++ // something, as that may recursively call this function.
++ if (m_reading.loadAcquire())
++ break;
++
++ if (prepareReadQueue() == 0) {
++ QMutexLocker l(&m_mutex);
++ m_reading.storeRelease(true);
++ m_cond.wakeOne();
++ break;
++ }
++ }
++ }
++
++ void stop()
++ {
++ // We have to both write to the pipe and set the flag, as the thread may be
++ // either in the poll() or waiting for _prepare_read().
++ if (m_pipefd[1] != -1 && write(m_pipefd[1], "\0", 1) == -1)
++ qWarning("Failed to write to the pipe: %s.", strerror(errno));
++
++ {
++ QMutexLocker l(&m_mutex);
++ m_quitting = true;
++ m_cond.wakeOne();
++ }
++
++ wait();
++ }
++
++Q_SIGNALS:
++ void needReadAndDispatch();
++
++protected:
++ void run() override
++ {
++ // we use this pipe to make the loop exit otherwise if we simply used a flag on the loop condition, if stop() gets
++ // called while poll() is blocking the thread will never quit since there are no wayland messages coming anymore.
++ struct Pipe
++ {
++ Pipe(int *fds)
++ : fds(fds)
++ {
++ if (qt_safe_pipe(fds) != 0)
++ qWarning("Pipe creation failed. Quitting may hang.");
++ }
++ ~Pipe()
++ {
++ if (fds[0] != -1) {
++ close(fds[0]);
++ close(fds[1]);
++ }
++ }
++
++ int *fds;
++ } pipe(m_pipefd);
++
++ // Make the main thread call wl_prepare_read(), dispatch the pending messages and flush the
++ // outbound ones. Wait until it's done before proceeding, unless we're told to quit.
++ while (waitForReading()) {
++ pollfd fds[2] = { { m_fd, POLLIN, 0 }, { m_pipefd[0], POLLIN, 0 } };
++ poll(fds, 2, -1);
++
++ if (fds[1].revents & POLLIN) {
++ // we don't really care to read the byte that was written here since we're closing down
++ wl_display_cancel_read(m_wldisplay);
++ break;
++ }
++
++ if (fds[0].revents & POLLIN)
++ wl_display_read_events(m_wldisplay);
++ // The polll was succesfull and the event thread did the wl_display_read_events(). On the next iteration of the loop
++ // the event sent to the main thread will cause it to dispatch the messages just read, unless the loop exits in which
++ // case we don't care anymore about them.
++ else
++ wl_display_cancel_read(m_wldisplay);
++ }
++ }
++
++private:
++ bool waitForReading()
++ {
++ Q_ASSERT(QThread::currentThread() == this);
++
++ m_reading.storeRelease(false);
++
++ if (m_mode == SelfDispatch) {
++ readAndDispatchEvents();
++ } else {
++ Q_EMIT needReadAndDispatch();
++
++ QMutexLocker lock(&m_mutex);
++ // m_reading might be set from our emit or some other invocation of
++ // readAndDispatchEvents().
++ while (!m_reading.loadRelaxed() && !m_quitting)
++ m_cond.wait(&m_mutex);
++ }
++
++ return !m_quitting;
++ }
++
++ int dispatchQueuePending()
++ {
++ if (m_wlevqueue)
++ return wl_display_dispatch_queue_pending(m_wldisplay, m_wlevqueue);
++ else
++ return wl_display_dispatch_pending(m_wldisplay);
++ }
++
++ int prepareReadQueue()
++ {
++ if (m_wlevqueue)
++ return wl_display_prepare_read_queue(m_wldisplay, m_wlevqueue);
++ else
++ return wl_display_prepare_read(m_wldisplay);
++ }
++
++ int m_fd;
++ int m_pipefd[2];
++ wl_display *m_wldisplay;
++ wl_event_queue *m_wlevqueue;
++ OperatingMode m_mode;
++
++ /* Concurrency note when operating in EmitToDispatch mode:
++ * m_reading is set to false inside event thread's waitForReading(), and is
++ * set to true inside main thread's readAndDispatchEvents().
++ * The lock is not taken when setting m_reading to false, as the main thread
++ * is not actively waiting for it to turn false. However, the lock is taken
++ * inside readAndDispatchEvents() before setting m_reading to true,
++ * as the event thread is actively waiting for it under the wait condition.
++ */
++
++ QAtomicInteger<bool> m_reading;
++ bool m_quitting;
++ QMutex m_mutex;
++ QWaitCondition m_cond;
++};
++
+ Q_LOGGING_CATEGORY(lcQpaWayland, "qt.qpa.wayland"); // for general (uncategorized) Wayland platform logging
+
+ struct wl_surface *QWaylandDisplay::createSurface(void *handle)
+@@ -162,6 +355,12 @@ QWaylandDisplay::QWaylandDisplay(QWaylandIntegration *waylandIntegration)
+
+ QWaylandDisplay::~QWaylandDisplay(void)
+ {
++ if (m_eventThread)
++ m_eventThread->stop();
++
++ if (m_frameEventQueueThread)
++ m_frameEventQueueThread->stop();
++
+ if (mSyncCallback)
+ wl_callback_destroy(mSyncCallback);
+
+@@ -208,98 +407,37 @@ void QWaylandDisplay::ensureScreen()
+
+ void QWaylandDisplay::checkError() const
+ {
+- int ecode = wl_display_get_error(mDisplay);
+- if ((ecode == EPIPE || ecode == ECONNRESET)) {
+- // special case this to provide a nicer error
+- qWarning("The Wayland connection broke. Did the Wayland compositor die?");
+- } else {
+- qWarning("The Wayland connection experienced a fatal error: %s", strerror(ecode));
+- }
+- _exit(1);
++ checkWaylandError(mDisplay);
+ }
+
++// Called in main thread, either from queued signal or directly.
+ void QWaylandDisplay::flushRequests()
+ {
+- if (wl_display_prepare_read(mDisplay) == 0) {
+- wl_display_read_events(mDisplay);
+- }
+-
+- if (wl_display_dispatch_pending(mDisplay) < 0)
+- checkError();
+-
+- {
+- QReadLocker locker(&m_frameQueueLock);
+- for (const FrameQueue &q : mExternalQueues) {
+- QMutexLocker locker(q.mutex);
+- while (wl_display_prepare_read_queue(mDisplay, q.queue) != 0)
+- wl_display_dispatch_queue_pending(mDisplay, q.queue);
+- wl_display_read_events(mDisplay);
+- wl_display_dispatch_queue_pending(mDisplay, q.queue);
+- }
+- }
+-
+- wl_display_flush(mDisplay);
+-}
+-
+-void QWaylandDisplay::blockingReadEvents()
+-{
+- if (wl_display_dispatch(mDisplay) < 0)
+- checkError();
+-}
+-
+-void QWaylandDisplay::destroyFrameQueue(const QWaylandDisplay::FrameQueue &q)
+-{
+- QWriteLocker locker(&m_frameQueueLock);
+- auto it = std::find_if(mExternalQueues.begin(),
+- mExternalQueues.end(),
+- [&q] (const QWaylandDisplay::FrameQueue &other){ return other.queue == q.queue; });
+- Q_ASSERT(it != mExternalQueues.end());
+- mExternalQueues.erase(it);
+- if (q.queue != nullptr)
+- wl_event_queue_destroy(q.queue);
+- delete q.mutex;
++ m_eventThread->readAndDispatchEvents();
+ }
+
+-QWaylandDisplay::FrameQueue QWaylandDisplay::createFrameQueue()
++// We have to wait until we have an eventDispatcher before creating the eventThread,
++// otherwise forceRoundTrip() may block inside _events_read() because eventThread is
++// polling.
++void QWaylandDisplay::initEventThread()
+ {
+- QWriteLocker locker(&m_frameQueueLock);
+- FrameQueue q{createEventQueue()};
+- mExternalQueues.append(q);
+- return q;
+-}
++ m_eventThread.reset(
++ new EventThread(mDisplay, /* default queue */ nullptr, EventThread::EmitToDispatch));
++ connect(m_eventThread.get(), &EventThread::needReadAndDispatch, this,
++ &QWaylandDisplay::flushRequests, Qt::QueuedConnection);
++ m_eventThread->start();
+
+-wl_event_queue *QWaylandDisplay::createEventQueue()
+-{
+- return wl_display_create_queue(mDisplay);
++ // wl_display_disconnect() free this.
++ m_frameEventQueue = wl_display_create_queue(mDisplay);
++ m_frameEventQueueThread.reset(
++ new EventThread(mDisplay, m_frameEventQueue, EventThread::SelfDispatch));
++ m_frameEventQueueThread->start();
+ }
+
+-void QWaylandDisplay::dispatchQueueWhile(wl_event_queue *queue, std::function<bool ()> condition, int timeout)
++void QWaylandDisplay::blockingReadEvents()
+ {
+- if (!condition())
+- return;
+-
+- QElapsedTimer timer;
+- timer.start();
+- struct pollfd pFd = qt_make_pollfd(wl_display_get_fd(mDisplay), POLLIN);
+- while (timeout == -1 || timer.elapsed() < timeout) {
+- while (wl_display_prepare_read_queue(mDisplay, queue) != 0)
+- wl_display_dispatch_queue_pending(mDisplay, queue);
+-
+- wl_display_flush(mDisplay);
+-
+- const int remaining = qMax(timeout - timer.elapsed(), 0ll);
+- const int pollTimeout = timeout == -1 ? -1 : remaining;
+- if (qt_poll_msecs(&pFd, 1, pollTimeout) > 0)
+- wl_display_read_events(mDisplay);
+- else
+- wl_display_cancel_read(mDisplay);
+-
+- if (wl_display_dispatch_queue_pending(mDisplay, queue) < 0)
+- checkError();
+-
+- if (!condition())
+- break;
+- }
++ if (wl_display_dispatch(mDisplay) < 0)
++ checkWaylandError(mDisplay);
+ }
+
+ QWaylandScreen *QWaylandDisplay::screenForOutput(struct wl_output *output) const
+@@ -674,4 +812,6 @@ QWaylandCursorTheme *QWaylandDisplay::loadCursorTheme(const QString &name, int p
+
+ } // namespace QtWaylandClient
+
++#include "qwaylanddisplay.moc"
++
+ QT_END_NAMESPACE
+diff --git a/src/client/qwaylanddisplay_p.h b/src/client/qwaylanddisplay_p.h
+index d9c8849f..42bc661d 100644
+--- a/src/client/qwaylanddisplay_p.h
++++ b/src/client/qwaylanddisplay_p.h
+@@ -109,6 +109,7 @@ class QWaylandSurface;
+ class QWaylandShellIntegration;
+ class QWaylandCursor;
+ class QWaylandCursorTheme;
++class EventThread;
+
+ typedef void (*RegistryListener)(void *data,
+ struct wl_registry *registry,
+@@ -120,12 +121,6 @@ class Q_WAYLAND_CLIENT_EXPORT QWaylandDisplay : public QObject, public QtWayland
+ Q_OBJECT
+
+ public:
+- struct FrameQueue {
+- FrameQueue(wl_event_queue *q = nullptr) : queue(q), mutex(new QMutex) {}
+- wl_event_queue *queue;
+- QMutex *mutex;
+- };
+-
+ QWaylandDisplay(QWaylandIntegration *waylandIntegration);
+ ~QWaylandDisplay(void) override;
+
+@@ -212,12 +207,11 @@ public:
+ void handleKeyboardFocusChanged(QWaylandInputDevice *inputDevice);
+ void handleWindowDestroyed(QWaylandWindow *window);
+
+- wl_event_queue *createEventQueue();
+- FrameQueue createFrameQueue();
+- void destroyFrameQueue(const FrameQueue &q);
+- void dispatchQueueWhile(wl_event_queue *queue, std::function<bool()> condition, int timeout = -1);
++ wl_event_queue *frameEventQueue() { return m_frameEventQueue; };
+
+ bool isKeyboardAvailable() const;
++
++ void initEventThread();
+ public slots:
+ void blockingReadEvents();
+ void flushRequests();
+@@ -240,6 +234,9 @@ private:
+ };
+
+ struct wl_display *mDisplay = nullptr;
++ QScopedPointer<EventThread> m_eventThread;
++ wl_event_queue *m_frameEventQueue = nullptr;
++ QScopedPointer<EventThread> m_frameEventQueueThread;
+ QtWayland::wl_compositor mCompositor;
+ QScopedPointer<QWaylandShm> mShm;
+ QList<QWaylandScreen *> mWaitingScreens;
+@@ -276,11 +273,9 @@ private:
+ QWaylandInputDevice *mLastInputDevice = nullptr;
+ QPointer<QWaylandWindow> mLastInputWindow;
+ QPointer<QWaylandWindow> mLastKeyboardFocus;
+- QVector<QWaylandWindow *> mActiveWindows;
+- QVector<FrameQueue> mExternalQueues;
++ QList<QWaylandWindow *> mActiveWindows;
+ struct wl_callback *mSyncCallback = nullptr;
+ static const wl_callback_listener syncCallbackListener;
+- QReadWriteLock m_frameQueueLock;
+
+ bool mClientSideInputContextRequested = !QPlatformInputContextFactory::requested().isNull();
+
+diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
+index 3a6fa651..3b876047 100644
+--- a/src/client/qwaylandintegration.cpp
++++ b/src/client/qwaylandintegration.cpp
+@@ -192,9 +192,7 @@ QAbstractEventDispatcher *QWaylandIntegration::createEventDispatcher() const
+
+ void QWaylandIntegration::initialize()
+ {
+- int fd = wl_display_get_fd(mDisplay->wl_display());
+- QSocketNotifier *sn = new QSocketNotifier(fd, QSocketNotifier::Read, mDisplay.data());
+- QObject::connect(sn, SIGNAL(activated(QSocketDescriptor)), mDisplay.data(), SLOT(flushRequests()));
++ mDisplay->initEventThread();
+
+ // Call after eventDispatcher is fully connected, for QWaylandDisplay::forceRoundTrip()
+ mDisplay->initialize();
+diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
+index 1597f67e..7de19a74 100644
+--- a/src/client/qwaylandwindow.cpp
++++ b/src/client/qwaylandwindow.cpp
+@@ -76,7 +76,6 @@ QWaylandWindow *QWaylandWindow::mMouseGrab = nullptr;
+ QWaylandWindow::QWaylandWindow(QWindow *window, QWaylandDisplay *display)
+ : QPlatformWindow(window)
+ , mDisplay(display)
+- , mFrameQueue(mDisplay->createFrameQueue())
+ , mResizeAfterSwap(qEnvironmentVariableIsSet("QT_WAYLAND_RESIZE_AFTER_SWAP"))
+ {
+ {
+@@ -95,8 +94,6 @@ QWaylandWindow::QWaylandWindow(QWindow *window, QWaylandDisplay *display)
+
+ QWaylandWindow::~QWaylandWindow()
+ {
+- mDisplay->destroyFrameQueue(mFrameQueue);
+-
+ delete mWindowDecoration;
+
+ if (mSurface)
+@@ -635,6 +632,8 @@ const wl_callback_listener QWaylandWindow::callbackListener = {
+
+ void QWaylandWindow::handleFrameCallback()
+ {
++ QMutexLocker locker(&mFrameSyncMutex);
++
+ mWaitingForFrameCallback = false;
+ mFrameCallbackElapsedTimer.invalidate();
+
+@@ -656,12 +655,16 @@ void QWaylandWindow::handleFrameCallback()
+ mWaitingForUpdateDelivery = true;
+ QMetaObject::invokeMethod(this, doHandleExpose, Qt::QueuedConnection);
+ }
++
++ mFrameSyncWait.notify_all();
+ }
+
+ bool QWaylandWindow::waitForFrameSync(int timeout)
+ {
+- QMutexLocker locker(mFrameQueue.mutex);
+- mDisplay->dispatchQueueWhile(mFrameQueue.queue, [&]() { return mWaitingForFrameCallback; }, timeout);
++ QMutexLocker locker(&mFrameSyncMutex);
++
++ QDeadlineTimer deadline(timeout);
++ while (mWaitingForFrameCallback && mFrameSyncWait.wait(&mFrameSyncMutex, deadline)) { }
+
+ if (mWaitingForFrameCallback) {
+ qCDebug(lcWaylandBackingstore) << "Didn't receive frame callback in time, window should now be inexposed";
+@@ -1157,8 +1160,11 @@ void QWaylandWindow::requestUpdate()
+ Q_ASSERT(hasPendingUpdateRequest()); // should be set by QPA
+
+ // If we have a frame callback all is good and will be taken care of there
+- if (mWaitingForFrameCallback)
+- return;
++ {
++ QMutexLocker locker(&mFrameSyncMutex);
++ if (mWaitingForFrameCallback)
++ return;
++ }
+
+ // If we've already called deliverUpdateRequest(), but haven't seen any attach+commit/swap yet
+ // This is a somewhat redundant behavior and might indicate a bug in the calling code, so log
+@@ -1171,7 +1177,12 @@ void QWaylandWindow::requestUpdate()
+ // so use invokeMethod to delay the delivery a bit.
+ QMetaObject::invokeMethod(this, [this] {
+ // Things might have changed in the meantime
+- if (hasPendingUpdateRequest() && !mWaitingForFrameCallback)
++ {
++ QMutexLocker locker(&mFrameSyncMutex);
++ if (mWaitingForFrameCallback)
++ return;
++ }
++ if (hasPendingUpdateRequest())
+ deliverUpdateRequest();
+ }, Qt::QueuedConnection);
+ }
+@@ -1191,9 +1202,10 @@ void QWaylandWindow::handleUpdate()
+ if (!mSurface)
+ return;
+
+- QMutexLocker locker(mFrameQueue.mutex);
++ QMutexLocker locker(&mFrameSyncMutex);
++
+ struct ::wl_surface *wrappedSurface = reinterpret_cast<struct ::wl_surface *>(wl_proxy_create_wrapper(mSurface->object()));
+- wl_proxy_set_queue(reinterpret_cast<wl_proxy *>(wrappedSurface), mFrameQueue.queue);
++ wl_proxy_set_queue(reinterpret_cast<wl_proxy *>(wrappedSurface), mDisplay->frameEventQueue());
+ mFrameCallback = wl_surface_frame(wrappedSurface);
+ wl_proxy_wrapper_destroy(wrappedSurface);
+ wl_callback_add_listener(mFrameCallback, &QWaylandWindow::callbackListener, this);
+@@ -1203,6 +1215,8 @@ void QWaylandWindow::handleUpdate()
+ // Start a timer for handling the case when the compositor stops sending frame callbacks.
+ if (mFrameCallbackTimeout > 0) {
+ QMetaObject::invokeMethod(this, [this] {
++ QMutexLocker locker(&mFrameSyncMutex);
++
+ if (mWaitingForFrameCallback) {
+ if (mFrameCallbackCheckIntervalTimerId < 0)
+ mFrameCallbackCheckIntervalTimerId = startTimer(mFrameCallbackTimeout);
+diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h
+index e0687962..d45980a8 100644
+--- a/src/client/qwaylandwindow_p.h
++++ b/src/client/qwaylandwindow_p.h
+@@ -232,7 +232,7 @@ protected:
+ int mFrameCallbackCheckIntervalTimerId = -1;
+ QElapsedTimer mFrameCallbackElapsedTimer;
+ struct ::wl_callback *mFrameCallback = nullptr;
+- QWaylandDisplay::FrameQueue mFrameQueue;
++ QMutex mFrameSyncMutex;
+ QWaitCondition mFrameSyncWait;
+
+ // True when we have called deliverRequestUpdate, but the client has not yet attached a new buffer
+--
+2.36.0
+
+From 520f58c24e0fbb33f84f329fc9879b72710c77ae Mon Sep 17 00:00:00 2001
+From: Roman Genkhel <roman.genhel@lge.com>
+Date: Thu, 12 Nov 2020 12:21:51 +0300
+Subject: [PATCH 25/38] Check pointer for null before use in ASSERT
+
+Task-number: QTBUG-85195
+Change-Id: I331e54f6e58aa9d536351a55223610c60b3cb414
+Reviewed-by: David Edmundson <davidedmundson@kde.org>
+(cherry picked from commit e235e8ddb1fc3cc5ab3b70b1fb285770b2c8c9ca)
+---
+ src/client/qwaylandwindow.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
+index 7de19a74..ac01dc05 100644
+--- a/src/client/qwaylandwindow.cpp
++++ b/src/client/qwaylandwindow.cpp
+@@ -552,8 +552,8 @@ void QWaylandWindow::sendRecursiveExposeEvent()
+
+ void QWaylandWindow::attach(QWaylandBuffer *buffer, int x, int y)
+ {
+- Q_ASSERT(!buffer->committed());
+ if (buffer) {
++ Q_ASSERT(!buffer->committed());
+ handleUpdate();
+ buffer->setBusy();
+
+--
+2.36.0
+
+From 72f64f397c72afb22df1825382e17a310517add1 Mon Sep 17 00:00:00 2001
+From: Inho Lee <inho.lee@qt.io>
+Date: Mon, 1 Nov 2021 14:23:58 +0100
+Subject: [PATCH 26/38] Do not create decorations when the shellSurface is not
+ ready
+
+A cases reported that client windows try to make decorations
+when their shell surfaces are null.
+Since the surfaces' requests for decorations should be applied,
+those case will be failed to create decorations.
+
+This patch was modified by Paul Tvete's advice.
+(paul.tvete@qt.io)
+
+Pick-to: 6.2 5.15
+Task-number: QTBUG-97608
+Change-Id: I2563dbd73b730f81cc411857af07da99ceb2d063
+Reviewed-by: Paul Olav Tvete <paul.tvete@qt.io>
+(cherry picked from commit 246f0c0bc01dd059bf8165e81f7b49efa36e4d95)
+---
+ src/client/qwaylandwindow.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
+index ac01dc05..acfe390e 100644
+--- a/src/client/qwaylandwindow.cpp
++++ b/src/client/qwaylandwindow.cpp
+@@ -813,7 +813,7 @@ bool QWaylandWindow::createDecoration()
+ decoration = false;
+ if (mSubSurfaceWindow)
+ decoration = false;
+- if (mShellSurface && !mShellSurface->wantsDecorations())
++ if (!mShellSurface || !mShellSurface->wantsDecorations())
+ decoration = false;
+
+ bool hadDecoration = mWindowDecoration;
+--
+2.36.0
+
+From 6935647966b456e760745a6b2a13a04ba6543803 Mon Sep 17 00:00:00 2001
+From: Paul Olav Tvete <paul.tvete@qt.io>
+Date: Mon, 6 Jul 2020 14:37:35 +0200
+Subject: [PATCH 27/38] Use wl_surface.damage_buffer on the client side
+
+Prefer the newer, recommended damage_buffer when the compositor
+supports it.
+
+Fixes: QTBUG-74929
+Change-Id: I9107966910b616a666931404a7b41bfac14c22c0
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+(cherry picked from commit 314fd6db51277224cdc799b039ef79db1101f5cd)
+---
+ src/client/qwaylanddisplay.cpp | 2 +-
+ src/client/qwaylandwindow.cpp | 16 +++++++++++++---
+ tests/auto/client/shared/coreprotocol.h | 2 +-
+ tests/auto/client/shared_old/mockcompositor.cpp | 2 +-
+ tests/auto/client/shared_old/mocksurface.cpp | 10 ++++++++++
+ tests/auto/client/shared_old/mocksurface.h | 2 ++
+ 6 files changed, 28 insertions(+), 6 deletions(-)
+
+diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
+index a7ce280a..6f1bada5 100644
+--- a/src/client/qwaylanddisplay.cpp
++++ b/src/client/qwaylanddisplay.cpp
+@@ -488,7 +488,7 @@ void QWaylandDisplay::registry_global(uint32_t id, const QString &interface, uin
+ if (interface == QStringLiteral("wl_output")) {
+ mWaitingScreens << new QWaylandScreen(this, version, id);
+ } else if (interface == QStringLiteral("wl_compositor")) {
+- mCompositorVersion = qMin((int)version, 3);
++ mCompositorVersion = qMin((int)version, 4);
+ mCompositor.init(registry, id, mCompositorVersion);
+ } else if (interface == QStringLiteral("wl_shm")) {
+ mShm.reset(new QWaylandShm(this, version, id));
+diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
+index acfe390e..4c5711a0 100644
+--- a/src/client/qwaylandwindow.cpp
++++ b/src/client/qwaylandwindow.cpp
+@@ -571,7 +571,11 @@ void QWaylandWindow::attachOffset(QWaylandBuffer *buffer)
+
+ void QWaylandWindow::damage(const QRect &rect)
+ {
+- mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height());
++ const int s = scale();
++ if (mDisplay->compositorVersion() >= 4)
++ mSurface->damage_buffer(s * rect.x(), s * rect.y(), s * rect.width(), s * rect.height());
++ else
++ mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height());
+ }
+
+ void QWaylandWindow::safeCommit(QWaylandBuffer *buffer, const QRegion &damage)
+@@ -605,8 +609,14 @@ void QWaylandWindow::commit(QWaylandBuffer *buffer, const QRegion &damage)
+ return;
+
+ attachOffset(buffer);
+- for (const QRect &rect: damage)
+- mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height());
++ if (mDisplay->compositorVersion() >= 4) {
++ const int s = scale();
++ for (const QRect &rect: damage)
++ mSurface->damage_buffer(s * rect.x(), s * rect.y(), s * rect.width(), s * rect.height());
++ } else {
++ for (const QRect &rect: damage)
++ mSurface->damage(rect.x(), rect.y(), rect.width(), rect.height());
++ }
+ Q_ASSERT(!buffer->committed());
+ buffer->setCommitted();
+ mSurface->commit();
+diff --git a/tests/auto/client/shared/coreprotocol.h b/tests/auto/client/shared/coreprotocol.h
+index a1af137a..296dbf47 100644
+--- a/tests/auto/client/shared/coreprotocol.h
++++ b/tests/auto/client/shared/coreprotocol.h
+@@ -158,7 +158,7 @@ class WlCompositor : public Global, public QtWaylandServer::wl_compositor
+ {
+ Q_OBJECT
+ public:
+- explicit WlCompositor(CoreCompositor *compositor, int version = 3)
++ explicit WlCompositor(CoreCompositor *compositor, int version = 4)
+ : QtWaylandServer::wl_compositor(compositor->m_display, version)
+ , m_compositor(compositor)
+ {}
+diff --git a/tests/auto/client/shared_old/mockcompositor.cpp b/tests/auto/client/shared_old/mockcompositor.cpp
+index a415cbf5..b1d3d07d 100644
+--- a/tests/auto/client/shared_old/mockcompositor.cpp
++++ b/tests/auto/client/shared_old/mockcompositor.cpp
+@@ -342,7 +342,7 @@ Compositor::Compositor(MockCompositor *mockCompositor)
+ exit(EXIT_FAILURE);
+ }
+
+- wl_global_create(m_display, &wl_compositor_interface, 1, this, bindCompositor);
++ wl_global_create(m_display, &wl_compositor_interface, 4, this, bindCompositor);
+
+ m_data_device_manager.reset(new DataDeviceManager(this, m_display));
+
+diff --git a/tests/auto/client/shared_old/mocksurface.cpp b/tests/auto/client/shared_old/mocksurface.cpp
+index e9df5f90..c3246e4a 100644
+--- a/tests/auto/client/shared_old/mocksurface.cpp
++++ b/tests/auto/client/shared_old/mocksurface.cpp
+@@ -125,6 +125,16 @@ void Surface::surface_damage(Resource *resource,
+ Q_UNUSED(height);
+ }
+
++void Surface::surface_damage_buffer(Resource *resource,
++ int32_t x, int32_t y, int32_t width, int32_t height)
++{
++ Q_UNUSED(resource);
++ Q_UNUSED(x);
++ Q_UNUSED(y);
++ Q_UNUSED(width);
++ Q_UNUSED(height);
++}
++
+ void Surface::surface_frame(Resource *resource,
+ uint32_t callback)
+ {
+diff --git a/tests/auto/client/shared_old/mocksurface.h b/tests/auto/client/shared_old/mocksurface.h
+index 949dc23d..d176837e 100644
+--- a/tests/auto/client/shared_old/mocksurface.h
++++ b/tests/auto/client/shared_old/mocksurface.h
+@@ -65,6 +65,8 @@ protected:
+ struct wl_resource *buffer, int x, int y) override;
+ void surface_damage(Resource *resource,
+ int32_t x, int32_t y, int32_t width, int32_t height) override;
++ void surface_damage_buffer(Resource *resource,
++ int32_t x, int32_t y, int32_t width, int32_t height) override;
+ void surface_frame(Resource *resource,
+ uint32_t callback) override;
+ void surface_commit(Resource *resource) override;
+--
+2.36.0
+
+From 506d0372178134f208fd08b3f6b9499fc0e14a5e Mon Sep 17 00:00:00 2001
+From: Joni Poikelin <joni.poikelin@qt.io>
+Date: Thu, 3 Feb 2022 14:01:50 +0200
+Subject: [PATCH 28/38] Fix crash if no input method module could be loaded
+
+Pick-to: 6.2 6.3 5.15
+Change-Id: I8f346def616606a6c5540856bd08a84ee7ed5ca2
+Reviewed-by: David Edmundson <davidedmundson@kde.org>
+(cherry picked from commit 49fb7248f6ab7de046e2179c7861951ea1169e9b)
+---
+ src/client/qwaylandintegration.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/client/qwaylandintegration.cpp b/src/client/qwaylandintegration.cpp
+index 3b876047..fbf00c6b 100644
+--- a/src/client/qwaylandintegration.cpp
++++ b/src/client/qwaylandintegration.cpp
+@@ -491,7 +491,7 @@ void QWaylandIntegration::reconfigureInputContext()
+ }
+ #endif
+
+- qCDebug(lcQpaWayland) << "using input method:" << inputContext()->metaObject()->className();
++ qCDebug(lcQpaWayland) << "using input method:" << (inputContext() ? inputContext()->metaObject()->className() : "<none>");
+ }
+
+ QWaylandShellIntegration *QWaylandIntegration::createShellIntegration(const QString &integrationName)
+--
+2.36.0
+
+From c2e56e076f0ded39b1ab34ebf07afad2f344f53f Mon Sep 17 00:00:00 2001
+From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
+Date: Tue, 1 Feb 2022 13:05:36 +0200
+Subject: [PATCH 29/38] Client: Remove mWaitingForUpdateDelivery
+
+Currently, mWaitingForUpdateDelivery is shared between the main thread
+(doHandleFrameCallback()) and the frame callback event thread
+(handleFrameCallback()), however the access to it is not synchronized
+between both threads. On the other hand, QWaylandWindow
+already ensures not to create a frame callback if there's already one
+pending.
+
+This change removes mWaitingForUpdateDelivery flag because it should be
+already covered by mWaitingForFrameCallback and to remove unsynchronized
+shared state between threads.
+
+Change-Id: I0e5a25d18d1e66c4d7683e7e972330c4d7cbbf38
+Reviewed-by: David Edmundson <davidedmundson@kde.org>
+(cherry picked from commit feb1a5c207c13d0bf87c0d8ad039279dbf8cee9e)
+---
+ src/client/qwaylandwindow.cpp | 29 ++++++++++++-----------------
+ src/client/qwaylandwindow_p.h | 1 -
+ 2 files changed, 12 insertions(+), 18 deletions(-)
+
+diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
+index 4c5711a0..949374b1 100644
+--- a/src/client/qwaylandwindow.cpp
++++ b/src/client/qwaylandwindow.cpp
+@@ -648,23 +648,18 @@ void QWaylandWindow::handleFrameCallback()
+ mFrameCallbackElapsedTimer.invalidate();
+
+ // The rest can wait until we can run it on the correct thread
+- if (!mWaitingForUpdateDelivery) {
+- auto doHandleExpose = [this]() {
+- bool wasExposed = isExposed();
+- mFrameCallbackTimedOut = false;
+- if (!wasExposed && isExposed()) // Did setting mFrameCallbackTimedOut make the window exposed?
+- sendExposeEvent(QRect(QPoint(), geometry().size()));
+- if (wasExposed && hasPendingUpdateRequest())
+- deliverUpdateRequest();
+-
+- mWaitingForUpdateDelivery = false;
+- };
+-
+- // Queued connection, to make sure we don't call handleUpdate() from inside waitForFrameSync()
+- // in the single-threaded case.
+- mWaitingForUpdateDelivery = true;
+- QMetaObject::invokeMethod(this, doHandleExpose, Qt::QueuedConnection);
+- }
++ auto doHandleExpose = [this]() {
++ bool wasExposed = isExposed();
++ mFrameCallbackTimedOut = false;
++ if (!wasExposed && isExposed()) // Did setting mFrameCallbackTimedOut make the window exposed?
++ sendExposeEvent(QRect(QPoint(), geometry().size()));
++ if (wasExposed && hasPendingUpdateRequest())
++ deliverUpdateRequest();
++ };
++
++ // Queued connection, to make sure we don't call handleUpdate() from inside waitForFrameSync()
++ // in the single-threaded case.
++ QMetaObject::invokeMethod(this, doHandleExpose, Qt::QueuedConnection);
+
+ mFrameSyncWait.notify_all();
+ }
+diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h
+index d45980a8..3ff68ccb 100644
+--- a/src/client/qwaylandwindow_p.h
++++ b/src/client/qwaylandwindow_p.h
+@@ -228,7 +228,6 @@ protected:
+ WId mWindowId;
+ bool mWaitingForFrameCallback = false;
+ bool mFrameCallbackTimedOut = false; // Whether the frame callback has timed out
+- bool mWaitingForUpdateDelivery = false;
+ int mFrameCallbackCheckIntervalTimerId = -1;
+ QElapsedTimer mFrameCallbackElapsedTimer;
+ struct ::wl_callback *mFrameCallback = nullptr;
+--
+2.36.0
+
+From 2d0bd70b55ebde2e22d0b95e8122235f90c8f9f1 Mon Sep 17 00:00:00 2001
+From: Weng Xuetian <wengxt@gmail.com>
+Date: Tue, 8 Feb 2022 07:11:25 -0800
+Subject: [PATCH 30/38] Cursor position == 0 should still show the cursor
+
+Otherwise the cursor would be hidden even if preedit is empty.
+Amends 719a55be13bdadfa659a732755f280e276a894bd
+
+Pick-to: 5.15 6.2 6.3
+Change-Id: I320733b917779b7b51aa4a28eaea411fdb10a318
+Reviewed-by: Liang Qi <liang.qi@qt.io>
+(cherry picked from commit 31ae194e295651d9ece03408630d2358acd4f7b4)
+---
+ src/shared/qwaylandinputmethodeventbuilder.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/shared/qwaylandinputmethodeventbuilder.cpp b/src/shared/qwaylandinputmethodeventbuilder.cpp
+index 25be2509..458d818e 100644
+--- a/src/shared/qwaylandinputmethodeventbuilder.cpp
++++ b/src/shared/qwaylandinputmethodeventbuilder.cpp
+@@ -151,9 +151,9 @@ QInputMethodEvent QWaylandInputMethodEventBuilder::buildPreedit(const QString &t
+ {
+ QList<QInputMethodEvent::Attribute> attributes;
+
+- if (m_preeditCursor <= 0) {
++ if (m_preeditCursor < 0) {
+ attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, 0, 0, QVariant()));
+- } else if (m_preeditCursor > 0) {
++ } else {
+ attributes.append(QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, indexFromWayland(text, m_preeditCursor), 1, QVariant()));
+ }
+
+--
+2.36.0
+
+From f0f7b2bea822f73ae00fcfd4ee1679596d550a20 Mon Sep 17 00:00:00 2001
+From: Weng Xuetian <wengxt@gmail.com>
+Date: Wed, 22 Dec 2021 10:42:38 -0800
+Subject: [PATCH 31/38] Update the preedit styling mapping
+
+- None mapping to no style.
+- Default/Underline mapping to underline.
+- Highlight/Selection mapping to background color/text color with highlight/highlight
+text with underline.
+- Active/Inactive mapping to bold text with underline.
+- Incorrect mapping to red wave underline.
+
+Pick-to: 5.15 6.2 6.3
+Change-Id: Iab51d671b8f83aece8596f7f7610de19343fcceb
+Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
+(cherry picked from commit f1fb5d9e568a24e213ee41e82a1142cef56f1098)
+---
+ .../qwaylandinputmethodeventbuilder.cpp | 31 ++++++++++++-------
+ 1 file changed, 20 insertions(+), 11 deletions(-)
+
+diff --git a/src/shared/qwaylandinputmethodeventbuilder.cpp b/src/shared/qwaylandinputmethodeventbuilder.cpp
+index 458d818e..f50ccf30 100644
+--- a/src/shared/qwaylandinputmethodeventbuilder.cpp
++++ b/src/shared/qwaylandinputmethodeventbuilder.cpp
+@@ -39,7 +39,10 @@
+
+ #include "qwaylandinputmethodeventbuilder_p.h"
+
++#include <QBrush>
++#include <QGuiApplication>
+ #include <QInputMethod>
++#include <QPalette>
+ #include <QTextCharFormat>
+
+ #ifdef QT_BUILD_WAYLANDCOMPOSITOR_LIB
+@@ -81,32 +84,38 @@ void QWaylandInputMethodEventBuilder::addPreeditStyling(uint32_t index, uint32_t
+ QTextCharFormat format;
+
+ switch (style) {
+- case 0:
+- case 1:
++ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_NONE:
++ break;
++ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_DEFAULT:
++ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_UNDERLINE:
+ format.setFontUnderline(true);
+ format.setUnderlineStyle(QTextCharFormat::SingleUnderline);
+ m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format));
+ break;
+- case 2:
+- case 3:
++ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_ACTIVE:
++ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_INACTIVE:
+ format.setFontWeight(QFont::Bold);
+ format.setFontUnderline(true);
+ format.setUnderlineStyle(QTextCharFormat::SingleUnderline);
+ m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format));
+ break;
+- case 4:
+- format.setFontUnderline(true);
+- format.setUnderlineStyle(QTextCharFormat::SingleUnderline);
+- m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format));
++ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_HIGHLIGHT:
++ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_SELECTION:
++ {
++ format.setFontUnderline(true);
++ format.setUnderlineStyle(QTextCharFormat::SingleUnderline);
++ QPalette palette = qApp->palette();
++ format.setBackground(QBrush(palette.color(QPalette::Active, QPalette::Highlight)));
++ format.setForeground(QBrush(palette.color(QPalette::Active, QPalette::HighlightedText)));
++ m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format));
++ }
+ break;
+- case 5:
++ case ZWP_TEXT_INPUT_V2_PREEDIT_STYLE_INCORRECT:
+ format.setFontUnderline(true);
+ format.setUnderlineStyle(QTextCharFormat::WaveUnderline);
+ format.setUnderlineColor(QColor(Qt::red));
+ m_preeditStyles.append(QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, index, length, format));
+ break;
+-// case QtWayland::wl_text_input::preedit_style_selection:
+-// case QtWayland::wl_text_input::preedit_style_none:
+ default:
+ break;
+ }
+--
+2.36.0
+
+From 596ecf46bb0c2427cda2894dd2157b3f5a2cd34f Mon Sep 17 00:00:00 2001
+From: David Edmundson <davidedmundson@kde.org>
+Date: Wed, 9 Feb 2022 17:20:48 +0000
+Subject: [PATCH 32/38] client: Simplify round trip behavior
+
+The custom event queue was removed in
+302d4ffb8549214eb4028dc3e47ec4ee4e12ffbd (2015) so the comment about not
+being able to use the inbuilt round trip method no longer applies.
+
+This fixes a real world problem. Use of a blocking round trip should not
+process non wayland events. Doing so can lead to misbehaviour client
+side as things happen out of order. The move to the event thread created
+several regressions as we now get events before the QGuiApplication is
+fully constructed.
+
+Change-Id: I650481f49a47ed1a9778c7e1bc3c48db6e8f0031
+Reviewed-by: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+(cherry picked from commit 62646d9122845d7bd9104b610478cebde3e769c7)
+---
+ src/client/qwaylanddisplay.cpp | 43 +---------------------------------
+ 1 file changed, 1 insertion(+), 42 deletions(-)
+
+diff --git a/src/client/qwaylanddisplay.cpp b/src/client/qwaylanddisplay.cpp
+index 6f1bada5..86045a35 100644
+--- a/src/client/qwaylanddisplay.cpp
++++ b/src/client/qwaylanddisplay.cpp
+@@ -611,50 +611,9 @@ uint32_t QWaylandDisplay::currentTimeMillisec()
+ return 0;
+ }
+
+-static void
+-sync_callback(void *data, struct wl_callback *callback, uint32_t serial)
+-{
+- Q_UNUSED(serial)
+- bool *done = static_cast<bool *>(data);
+-
+- *done = true;
+-
+- // If the wl_callback done event is received after the condition check in the while loop in
+- // forceRoundTrip(), but before the call to processEvents, the call to processEvents may block
+- // forever if no more events are posted (eventhough the callback is handled in response to the
+- // aboutToBlock signal). Hence, we wake up the event dispatcher so forceRoundTrip may return.
+- // (QTBUG-64696)
+- if (auto *dispatcher = QThread::currentThread()->eventDispatcher())
+- dispatcher->wakeUp();
+-
+- wl_callback_destroy(callback);
+-}
+-
+-static const struct wl_callback_listener sync_listener = {
+- sync_callback
+-};
+-
+ void QWaylandDisplay::forceRoundTrip()
+ {
+- // wl_display_roundtrip() works on the main queue only,
+- // but we use a separate one, so basically reimplement it here
+- int ret = 0;
+- bool done = false;
+- wl_callback *callback = wl_display_sync(mDisplay);
+- wl_callback_add_listener(callback, &sync_listener, &done);
+- flushRequests();
+- if (QThread::currentThread()->eventDispatcher()) {
+- while (!done && ret >= 0) {
+- QThread::currentThread()->eventDispatcher()->processEvents(QEventLoop::WaitForMoreEvents);
+- ret = wl_display_dispatch_pending(mDisplay);
+- }
+- } else {
+- while (!done && ret >= 0)
+- ret = wl_display_dispatch(mDisplay);
+- }
+-
+- if (ret == -1 && !done)
+- wl_callback_destroy(callback);
++ wl_display_roundtrip(mDisplay);
+ }
+
+ bool QWaylandDisplay::supportsWindowDecoration() const
+--
+2.36.0
+
+From f7b7b39d00ae31676fc678446d7090e7a9dd95b4 Mon Sep 17 00:00:00 2001
+From: Vlad Zahorodnii <vlad.zahorodnii@kde.org>
+Date: Sat, 19 Feb 2022 17:01:04 +0200
+Subject: [PATCH 33/38] Client: Fix opaque region setter
+
+The rect is in the global coordinate system, while the opaque region
+must be in the surface local coordinate system.
+
+Change-Id: I75042b4d779dfd4dfe610aad1f0387879f11b048
+Reviewed-by: Aleix Pol Gonzalez <aleixpol@kde.org>
+(cherry picked from commit f9425f573b18c0b66fd9ad9c2805e8b8b9a3ec77)
+---
+ src/client/qwaylandwindow.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
+index 949374b1..fee2ecdd 100644
+--- a/src/client/qwaylandwindow.cpp
++++ b/src/client/qwaylandwindow.cpp
+@@ -372,7 +372,7 @@ void QWaylandWindow::setGeometry(const QRect &rect)
+ mShellSurface->setWindowGeometry(windowContentGeometry());
+
+ if (isOpaque() && mMask.isEmpty())
+- setOpaqueArea(rect);
++ setOpaqueArea(QRect(QPoint(0, 0), rect.size()));
+ }
+
+ void QWaylandWindow::resizeFromApplyConfigure(const QSize &sizeWithMargins, const QPoint &offset)
+--
+2.36.0
+
+From 6a95428357872353a20ab6dcc5f8facdb520e8dc Mon Sep 17 00:00:00 2001
+From: Fabian Vogt <fabian@ritter-vogt.de>
+Date: Fri, 4 Feb 2022 11:07:36 +0100
+Subject: [PATCH 34/38] Use proper dependencies in compile tests
+
+Use the dependencies as found by the "libraries" section instead of relying
+on them being available in the default location (e.g. "-ldrm").
+
+Additionally, VK_USE_PLATFORM_WAYLAND_KHR requires <wayland-client.h>, so
+add the wayland-client dependency.
+
+This fixes those tests if e.g. wayland-client headers need to be found through
+pkgconfig.
+
+This part of the code changed completely in Qt 6, so this is a totally
+different patch and not a cherry-pick of 5fc2e1915c3a
+("CMake: Fix qtwayland feature detection").
+
+Fixes: QTBUG-100475
+---
+ src/client/configure.json | 8 ++++----
+ src/compositor/configure.json | 34 +++++++++++++++++++++++++++++-----
+ 2 files changed, 33 insertions(+), 9 deletions(-)
+
+diff --git a/src/client/configure.json b/src/client/configure.json
+index 2f424580..29222357 100644
+--- a/src/client/configure.json
++++ b/src/client/configure.json
+@@ -149,8 +149,7 @@
+ "#endif"
+ ]
+ },
+- "libs": "-ldrm",
+- "use": "egl"
++ "use": "drm egl"
+ },
+ "vulkan-server-buffer": {
+ "label": "Vulkan Buffer Sharing",
+@@ -168,7 +167,8 @@
+ "exportAllocInfo.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR;",
+ "return 0;"
+ ]
+- }
++ },
++ "use": "wayland-client"
+ },
+ "egl_1_5-wayland": {
+ "label": "EGL 1.5 with Wayland Platform",
+@@ -183,7 +183,7 @@
+ "eglGetPlatformDisplay(EGL_PLATFORM_WAYLAND_EXT, (struct wl_display *)(nullptr), nullptr);"
+ ]
+ },
+- "use": "egl"
++ "use": "egl wayland-client"
+ }
+ },
+
+diff --git a/src/compositor/configure.json b/src/compositor/configure.json
+index bcfd5215..da95d07b 100644
+--- a/src/compositor/configure.json
++++ b/src/compositor/configure.json
+@@ -7,6 +7,31 @@
+ "testDir": "../../config.tests",
+
+ "libraries": {
++ "wayland-client": {
++ "label": "Wayland client library",
++ "headers": "wayland-version.h",
++ "test": {
++ "main": [
++ "#if WAYLAND_VERSION_MAJOR < 1",
++ "# error Wayland 1.8.0 or higher required",
++ "#endif",
++ "#if WAYLAND_VERSION_MAJOR == 1",
++ "# if WAYLAND_VERSION_MINOR < 8",
++ "# error Wayland 1.8.0 or higher required",
++ "# endif",
++ "# if WAYLAND_VERSION_MINOR == 8",
++ "# if WAYLAND_VERSION_MICRO < 0",
++ "# error Wayland 1.8.0 or higher required",
++ "# endif",
++ "# endif",
++ "#endif"
++ ]
++ },
++ "sources": [
++ { "type": "pkgConfig", "args": "wayland-client" },
++ "-lwayland-client"
++ ]
++ },
+ "wayland-server": {
+ "label": "wayland-server",
+ "headers": "wayland-version.h",
+@@ -151,8 +176,7 @@
+ "#endif"
+ ]
+ },
+- "libs": "-ldrm",
+- "use": "egl"
++ "use": "drm egl"
+ },
+ "dmabuf-client-buffer": {
+ "label": "Linux Client dma-buf Buffer Sharing",
+@@ -176,8 +200,7 @@
+ "return 0;"
+ ]
+ },
+- "libs": "-ldrm",
+- "use": "egl"
++ "use": "drm egl"
+ },
+ "vulkan-server-buffer": {
+ "label": "Vulkan Buffer Sharing",
+@@ -195,7 +218,8 @@
+ "exportAllocInfo.handleTypes = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT_KHR;",
+ "return 0;"
+ ]
+- }
++ },
++ "use": "wayland-client"
+ }
+ },
+
+--
+2.36.0
+
+From 169052d99391eef62c181c8b5b107280688045d1 Mon Sep 17 00:00:00 2001
+From: Liang Qi <liang.qi@qt.io>
+Date: Wed, 9 Mar 2022 10:47:42 +0100
+Subject: [PATCH 35/38] client: update button state and etc in pointer_leave()
+
+The cleanup work needs to be done even the surface is null, for
+example, a window was closed in mouse press handler, then will not
+get a mouse release.
+
+Fixes: QTBUG-100942
+Pick-to: 5.15 6.2 6.3
+Change-Id: I637a6744909ddbe62bdeba6b21494e5a6ae7fa9f
+Reviewed-by: Tang Haixiang <tanghaixiang@uniontech.com>
+Reviewed-by: David Edmundson <davidedmundson@kde.org>
+(cherry picked from commit 409d1080f25b653b3ff3f57c9776c5c390912206)
+---
+ src/client/qwaylandinputdevice.cpp | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/client/qwaylandinputdevice.cpp b/src/client/qwaylandinputdevice.cpp
+index aaec7eb8..c3cc4eca 100644
+--- a/src/client/qwaylandinputdevice.cpp
++++ b/src/client/qwaylandinputdevice.cpp
+@@ -685,6 +685,11 @@ public:
+
+ void QWaylandInputDevice::Pointer::pointer_leave(uint32_t time, struct wl_surface *surface)
+ {
++ invalidateFocus();
++ mButtons = Qt::NoButton;
++
++ mParent->mTime = time;
++
+ // The event may arrive after destroying the window, indicated by
+ // a null surface.
+ if (!surface)
+@@ -696,11 +701,6 @@ void QWaylandInputDevice::Pointer::pointer_leave(uint32_t time, struct wl_surfac
+
+ if (!QWaylandWindow::mouseGrab())
+ setFrameEvent(new LeaveEvent(window, mSurfacePos, mGlobalPos));
+-
+- invalidateFocus();
+- mButtons = Qt::NoButton;
+-
+- mParent->mTime = time;
+ }
+
+ class MotionEvent : public QWaylandPointerEvent
+--
+2.36.0
+
+From 36756f5d1b8891465bddd31e990c81e149dce0f1 Mon Sep 17 00:00:00 2001
+From: Paul Olav Tvete <paul.tvete@qt.io>
+Date: Tue, 15 Mar 2022 15:59:15 +0100
+Subject: [PATCH 36/38] Revert "Client: Remove mWaitingForUpdateDelivery"
+
+The reverted commit introduces a severe performance regression
+when a client window is resized while a QtQuick renderthread
+animation is running.
+
+This reverts commit feb1a5c207c13d0bf87c0d8ad039279dbf8cee9e.
+
+Fixes: QTBUG-101726
+Change-Id: Ib5b52ce06efec8c86fada1623c2af82099e57fc6
+Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@qt.io>
+---
+ src/client/qwaylandwindow.cpp | 12 +++++++++---
+ src/client/qwaylandwindow_p.h | 1 +
+ 2 files changed, 10 insertions(+), 3 deletions(-)
+
+diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
+index fee2ecdd..bf41cc5b 100644
+--- a/src/client/qwaylandwindow.cpp
++++ b/src/client/qwaylandwindow.cpp
+@@ -655,11 +655,17 @@ void QWaylandWindow::handleFrameCallback()
+ sendExposeEvent(QRect(QPoint(), geometry().size()));
+ if (wasExposed && hasPendingUpdateRequest())
+ deliverUpdateRequest();
++
++ mWaitingForUpdateDelivery = false;
+ };
+
+- // Queued connection, to make sure we don't call handleUpdate() from inside waitForFrameSync()
+- // in the single-threaded case.
+- QMetaObject::invokeMethod(this, doHandleExpose, Qt::QueuedConnection);
++ if (!mWaitingForUpdateDelivery) {
++ // Queued connection, to make sure we don't call handleUpdate() from inside waitForFrameSync()
++ // in the single-threaded case.
++ mWaitingForUpdateDelivery = true;
++ QMetaObject::invokeMethod(this, doHandleExpose, Qt::QueuedConnection);
++ }
++
+
+ mFrameSyncWait.notify_all();
+ }
+diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h
+index 3ff68ccb..d45980a8 100644
+--- a/src/client/qwaylandwindow_p.h
++++ b/src/client/qwaylandwindow_p.h
+@@ -228,6 +228,7 @@ protected:
+ WId mWindowId;
+ bool mWaitingForFrameCallback = false;
+ bool mFrameCallbackTimedOut = false; // Whether the frame callback has timed out
++ bool mWaitingForUpdateDelivery = false;
+ int mFrameCallbackCheckIntervalTimerId = -1;
+ QElapsedTimer mFrameCallbackElapsedTimer;
+ struct ::wl_callback *mFrameCallback = nullptr;
+--
+2.36.0
+
+From a83e65ddc9a965b25e435d136849a50f0b99c4ae Mon Sep 17 00:00:00 2001
+From: Paul Olav Tvete <paul.tvete@qt.io>
+Date: Tue, 15 Mar 2022 16:53:04 +0100
+Subject: [PATCH 37/38] Fix race condition on mWaitingForUpdateDelivery
+
+Change-Id: I0e91bda73722468b9339fc434fe04420b5e7d3da
+Reviewed-by: David Edmundson <davidedmundson@kde.org>
+---
+ src/client/qwaylandwindow.cpp | 7 ++-----
+ src/client/qwaylandwindow_p.h | 2 +-
+ 2 files changed, 3 insertions(+), 6 deletions(-)
+
+diff --git a/src/client/qwaylandwindow.cpp b/src/client/qwaylandwindow.cpp
+index bf41cc5b..ceaa4c73 100644
+--- a/src/client/qwaylandwindow.cpp
++++ b/src/client/qwaylandwindow.cpp
+@@ -649,24 +649,21 @@ void QWaylandWindow::handleFrameCallback()
+
+ // The rest can wait until we can run it on the correct thread
+ auto doHandleExpose = [this]() {
++ mWaitingForUpdateDelivery.storeRelease(false);
+ bool wasExposed = isExposed();
+ mFrameCallbackTimedOut = false;
+ if (!wasExposed && isExposed()) // Did setting mFrameCallbackTimedOut make the window exposed?
+ sendExposeEvent(QRect(QPoint(), geometry().size()));
+ if (wasExposed && hasPendingUpdateRequest())
+ deliverUpdateRequest();
+-
+- mWaitingForUpdateDelivery = false;
+ };
+
+- if (!mWaitingForUpdateDelivery) {
++ if (mWaitingForUpdateDelivery.testAndSetAcquire(false, true)) {
+ // Queued connection, to make sure we don't call handleUpdate() from inside waitForFrameSync()
+ // in the single-threaded case.
+- mWaitingForUpdateDelivery = true;
+ QMetaObject::invokeMethod(this, doHandleExpose, Qt::QueuedConnection);
+ }
+
+-
+ mFrameSyncWait.notify_all();
+ }
+
+diff --git a/src/client/qwaylandwindow_p.h b/src/client/qwaylandwindow_p.h
+index d45980a8..cb9135f6 100644
+--- a/src/client/qwaylandwindow_p.h
++++ b/src/client/qwaylandwindow_p.h
+@@ -228,7 +228,7 @@ protected:
+ WId mWindowId;
+ bool mWaitingForFrameCallback = false;
+ bool mFrameCallbackTimedOut = false; // Whether the frame callback has timed out
+- bool mWaitingForUpdateDelivery = false;
++ QAtomicInt mWaitingForUpdateDelivery = false;
+ int mFrameCallbackCheckIntervalTimerId = -1;
+ QElapsedTimer mFrameCallbackElapsedTimer;
+ struct ::wl_callback *mFrameCallback = nullptr;
+--
+2.36.0
+
+From 36659e6130ed3fc2b3f0c91423408ef5ecb7b991 Mon Sep 17 00:00:00 2001
+From: Kenneth Topp <ken@bllue.org>
+Date: Mon, 4 Apr 2022 09:36:21 -0400
+Subject: [PATCH 38/38] use poll(2) when reading from clipboard
+
+change clipboard read away from select(2) call which can fail when
+an application has large number of open files
+
+Change-Id: I6d98c6bb11cdd5b6171b01cfeb0044dd41cf9fb5
+Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
+(cherry picked from commit 829a9f62a96721c142f53e12a8812e8231b20317)
+---
+ src/client/qwaylanddataoffer.cpp | 15 ++++++++-------
+ 1 file changed, 8 insertions(+), 7 deletions(-)
+
+diff --git a/src/client/qwaylanddataoffer.cpp b/src/client/qwaylanddataoffer.cpp
+index c9e158cc..fe0ea8c9 100644
+--- a/src/client/qwaylanddataoffer.cpp
++++ b/src/client/qwaylanddataoffer.cpp
+@@ -188,17 +188,18 @@ QVariant QWaylandMimeData::retrieveData_sys(const QString &mimeType, QVariant::T
+
+ int QWaylandMimeData::readData(int fd, QByteArray &data) const
+ {
+- fd_set readset;
+- FD_ZERO(&readset);
+- FD_SET(fd, &readset);
+- struct timeval timeout;
++ struct pollfd readset;
++ readset.fd = fd;
++ readset.events = POLLIN;
++ struct timespec timeout;
+ timeout.tv_sec = 1;
+- timeout.tv_usec = 0;
++ timeout.tv_nsec = 0;
++
+
+ Q_FOREVER {
+- int ready = select(FD_SETSIZE, &readset, nullptr, nullptr, &timeout);
++ int ready = qt_safe_poll(&readset, 1, &timeout);
+ if (ready < 0) {
+- qWarning() << "QWaylandDataOffer: select() failed";
++ qWarning() << "QWaylandDataOffer: qt_safe_poll() failed";
+ return -1;
+ } else if (ready == 0) {
+ qWarning("QWaylandDataOffer: timeout reading from pipe");
+--
+2.36.0
+
diff --git a/user/qt5-qtwebchannel/APKBUILD b/user/qt5-qtwebchannel/APKBUILD
index 95a4371fd..e54ea70c3 100644
--- a/user/qt5-qtwebchannel/APKBUILD
+++ b/user/qt5-qtwebchannel/APKBUILD
@@ -1,29 +1,30 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtwebchannel
-_pkgname=qtwebchannel-opensource-src
-pkgver=5.9.7
+_pkgname=qtwebchannel-everywhere
+pkgver=5.15.4
pkgrel=0
-pkgdesc="Qt 5 - Connect Qt applications to WebSockets"
+pkgdesc="Connect Qt applications to WebSockets"
url="https://www.qt.io/"
arch="all"
options="!check"
-license="LGPLv2 with exceptions OR GPLv3 with exceptions"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
depends=""
-makedepends="qt5-qtbase-dev"
+makedepends="qt5-qtbase-dev qt5-qtdeclarative-dev"
subpackages="$pkgname-dev"
-source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz"
-builddir="$srcdir"/$_pkgname-$pkgver
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz
+ kde-lts.patch
+ "
+builddir="$srcdir"/$_pkgname-src-$pkgver
build() {
- cd "$builddir"
qmake
make
}
package() {
- cd "$builddir"
make install INSTALL_ROOT="$pkgdir"
}
-sha512sums="0109f11dd9c83e8dbf50921abb642a5e185fda98ead87973bd1b24c1f490268f2a9c7d264da659f7eac1f98942aecc839d7418abce0e7d2a66093b9b89eb4bca qtwebchannel-opensource-src-5.9.7.tar.xz"
+sha512sums="18d5e6f44b780c7dfc94e1620ba76d7b0731d671df537b2e29fef062a0775e8dc973deb6c949b37000f5e8a49bdd31a723aa069bafcb9ecdc3259d0bf97e5a26 qtwebchannel-everywhere-opensource-src-5.15.4.tar.xz
+3a797ea504343c321e8ff29bb143a3305bbc1ec0bfecd484974acab7597b8b8f5bbcd6b9fb8c5bf47d25e8de4801d4d9a5c0a38b7e4f135174f2393c924af782 kde-lts.patch"
diff --git a/user/qt5-qtwebchannel/kde-lts.patch b/user/qt5-qtwebchannel/kde-lts.patch
new file mode 100644
index 000000000..352a4a906
--- /dev/null
+++ b/user/qt5-qtwebchannel/kde-lts.patch
@@ -0,0 +1,576 @@
+From adfc4bacdf18d9876a1ea908ce6aeb43555b0dbd Mon Sep 17 00:00:00 2001
+From: Milian Wolff <milian.wolff@kdab.com>
+Date: Fri, 13 Dec 2019 18:07:26 +0100
+Subject: [PATCH 1/3] Handle signals in the registered object's thread
+
+Do not call `sender()` from a different thread. As the API documentation
+indicates, that is not supported and can lead to crashes as experienced
+on the CI frequently.
+
+Instead, we now have per-thread SignalHandlers and use those to get
+notified about signals and metacall events.
+
+Moving a registered object into a different thread isn't supported once
+it was registered. But the object can be deregistered, moved, and then
+re-registered.
+
+[ChangeLog] Signals from objects living in a different thread than the
+QWebChannel are now handled correctly.
+
+Task-number: QTBUG-51366
+Change-Id: I1edb0694b946a494b6c0d4a8a6dc6b452dcb2c7a
+Reviewed-by: Arno Rehn <a.rehn@menlosystems.com>
+Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
+(cherry picked from commit 28455e59c0b940200fe0223472a80104ce1a02dd)
+---
+ src/webchannel/qmetaobjectpublisher.cpp | 23 +++++++++++++++++------
+ src/webchannel/qmetaobjectpublisher_p.h | 5 ++++-
+ src/webchannel/signalhandler_p.h | 3 +++
+ tests/auto/webchannel/tst_webchannel.cpp | 4 +---
+ 4 files changed, 25 insertions(+), 10 deletions(-)
+
+diff --git a/src/webchannel/qmetaobjectpublisher.cpp b/src/webchannel/qmetaobjectpublisher.cpp
+index 536eb5c..e997b75 100644
+--- a/src/webchannel/qmetaobjectpublisher.cpp
++++ b/src/webchannel/qmetaobjectpublisher.cpp
+@@ -186,7 +186,6 @@ Q_DECLARE_TYPEINFO(OverloadResolutionCandidate, Q_MOVABLE_TYPE);
+ QMetaObjectPublisher::QMetaObjectPublisher(QWebChannel *webChannel)
+ : QObject(webChannel)
+ , webChannel(webChannel)
+- , signalHandler(this)
+ , clientIsIdle(false)
+ , blockUpdates(false)
+ , propertyUpdatesInitialized(false)
+@@ -333,6 +332,7 @@ QJsonObject QMetaObjectPublisher::initializeClient(QWebChannelAbstractTransport
+
+ void QMetaObjectPublisher::initializePropertyUpdates(const QObject *const object, const QJsonObject &objectInfo)
+ {
++ auto *signalHandler = signalHandlerFor(object);
+ foreach (const QJsonValue &propertyInfoVar, objectInfo[KEY_PROPERTIES].toArray()) {
+ const QJsonArray &propertyInfo = propertyInfoVar.toArray();
+ if (propertyInfo.size() < 2) {
+@@ -353,14 +353,14 @@ void QMetaObjectPublisher::initializePropertyUpdates(const QObject *const object
+
+ // Only connect for a property update once
+ if (connectedProperties.isEmpty()) {
+- signalHandler.connectTo(object, signalIndex);
++ signalHandler->connectTo(object, signalIndex);
+ }
+
+ connectedProperties.insert(propertyIndex);
+ }
+
+ // also always connect to destroyed signal
+- signalHandler.connectTo(object, s_destroyedSignalIndex);
++ signalHandler->connectTo(object, s_destroyedSignalIndex);
+ }
+
+ void QMetaObjectPublisher::sendPendingPropertyUpdates()
+@@ -590,7 +590,7 @@ void QMetaObjectPublisher::objectDestroyed(const QObject *object)
+ // only remove from handler when we initialized the property updates
+ // cf: https://bugreports.qt.io/browse/QTBUG-60250
+ if (propertyUpdatesInitialized) {
+- signalHandler.remove(object);
++ signalHandlerFor(object)->remove(object);
+ signalToPropertyMap.remove(object);
+ }
+ pendingPropertyUpdates.remove(object);
+@@ -913,9 +913,9 @@ void QMetaObjectPublisher::handleMessage(const QJsonObject &message, QWebChannel
+ return;
+ transport->sendMessage(createResponse(message.value(KEY_ID), wrapResult(result, transport)));
+ } else if (type == TypeConnectToSignal) {
+- signalHandler.connectTo(object, message.value(KEY_SIGNAL).toInt(-1));
++ signalHandlerFor(object)->connectTo(object, message.value(KEY_SIGNAL).toInt(-1));
+ } else if (type == TypeDisconnectFromSignal) {
+- signalHandler.disconnectFrom(object, message.value(KEY_SIGNAL).toInt(-1));
++ signalHandlerFor(object)->disconnectFrom(object, message.value(KEY_SIGNAL).toInt(-1));
+ } else if (type == TypeSetProperty) {
+ setProperty(object, message.value(KEY_PROPERTY).toInt(-1),
+ message.value(KEY_VALUE));
+@@ -948,4 +948,15 @@ void QMetaObjectPublisher::timerEvent(QTimerEvent *event)
+ }
+ }
+
++SignalHandler<QMetaObjectPublisher> *QMetaObjectPublisher::signalHandlerFor(const QObject *object)
++{
++ auto thread = object->thread();
++ auto it = signalHandlers.find(thread);
++ if (it == signalHandlers.end()) {
++ it = signalHandlers.emplace(thread, this).first;
++ it->second.moveToThread(thread);
++ }
++ return &it->second;
++}
++
+ QT_END_NAMESPACE
+diff --git a/src/webchannel/qmetaobjectpublisher_p.h b/src/webchannel/qmetaobjectpublisher_p.h
+index bbd9875..ded0d33 100644
+--- a/src/webchannel/qmetaobjectpublisher_p.h
++++ b/src/webchannel/qmetaobjectpublisher_p.h
+@@ -60,6 +60,8 @@
+ #include <QPointer>
+ #include <QJsonObject>
+
++#include <unordered_map>
++
+ #include "qwebchannelglobal.h"
+
+ QT_BEGIN_NAMESPACE
+@@ -272,7 +274,8 @@ private:
+ friend class TestWebChannel;
+
+ QWebChannel *webChannel;
+- SignalHandler<QMetaObjectPublisher> signalHandler;
++ std::unordered_map<const QThread*, SignalHandler<QMetaObjectPublisher>> signalHandlers;
++ SignalHandler<QMetaObjectPublisher> *signalHandlerFor(const QObject *object);
+
+ // true when the client is idle, false otherwise
+ bool clientIsIdle;
+diff --git a/src/webchannel/signalhandler_p.h b/src/webchannel/signalhandler_p.h
+index 27afadb..d77373c 100644
+--- a/src/webchannel/signalhandler_p.h
++++ b/src/webchannel/signalhandler_p.h
+@@ -56,6 +56,7 @@
+ #include <QVector>
+ #include <QMetaMethod>
+ #include <QDebug>
++#include <QThread>
+
+ QT_BEGIN_NAMESPACE
+
+@@ -71,6 +72,7 @@ static const int s_destroyedSignalIndex = QObject::staticMetaObject.indexOfMetho
+ template<class Receiver>
+ class SignalHandler : public QObject
+ {
++ Q_DISABLE_COPY(SignalHandler)
+ public:
+ SignalHandler(Receiver *receiver, QObject *parent = 0);
+
+@@ -268,6 +270,7 @@ int SignalHandler<Receiver>::qt_metacall(QMetaObject::Call call, int methodId, v
+ if (call == QMetaObject::InvokeMetaMethod) {
+ const QObject *object = sender();
+ Q_ASSERT(object);
++ Q_ASSERT(QThread::currentThread() == object->thread());
+ Q_ASSERT(senderSignalIndex() == methodId);
+ Q_ASSERT(m_connectionsCounter.contains(object));
+ Q_ASSERT(m_connectionsCounter.value(object).contains(methodId));
+diff --git a/tests/auto/webchannel/tst_webchannel.cpp b/tests/auto/webchannel/tst_webchannel.cpp
+index 181da9e..7f846f5 100644
+--- a/tests/auto/webchannel/tst_webchannel.cpp
++++ b/tests/auto/webchannel/tst_webchannel.cpp
+@@ -943,8 +943,6 @@ void TestWebChannel::testInfiniteRecursion()
+
+ void TestWebChannel::testAsyncObject()
+ {
+- QSKIP("This test is broken. See QTBUG-80729");
+-
+ QWebChannel channel;
+ channel.connectTo(m_dummyTransport);
+
+@@ -1082,7 +1080,7 @@ void TestWebChannel::benchInitializeClients()
+
+ publisher->propertyUpdatesInitialized = false;
+ publisher->signalToPropertyMap.clear();
+- publisher->signalHandler.clear();
++ publisher->signalHandlers.clear();
+ }
+ }
+
+--
+2.36.0
+
+From 01803a64b0a0b03eb8d9add60008829bc9d5c11e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?=C3=98ystein=20Heskestad?= <oystein.heskestad@qt.io>
+Date: Fri, 7 May 2021 15:23:38 +0200
+Subject: [PATCH 2/3] Handle per-transport client idle status
+
+[ChangeLog][QMetaObjectPublisher] Handle per-transport client idle status
+
+Task-number: QTBUG-92927
+Change-Id: I5a06261e6dddb0fc0fae9f73b280c61cf5a2b52d
+Reviewed-by: Arno Rehn <a.rehn@menlosystems.com>
+(cherry picked from commit a7199de7d90f48ce3d95cae795bd9209c39516ce)
+---
+ src/webchannel/qmetaobjectpublisher.cpp | 71 ++++++++++++++++++------
+ src/webchannel/qmetaobjectpublisher_p.h | 39 +++++++++++--
+ tests/auto/qml/testwebchannel.cpp | 6 +-
+ tests/auto/webchannel/tst_webchannel.cpp | 48 +++++++++++++++-
+ tests/auto/webchannel/tst_webchannel.h | 1 +
+ 5 files changed, 138 insertions(+), 27 deletions(-)
+
+diff --git a/src/webchannel/qmetaobjectpublisher.cpp b/src/webchannel/qmetaobjectpublisher.cpp
+index e997b75..3897c07 100644
+--- a/src/webchannel/qmetaobjectpublisher.cpp
++++ b/src/webchannel/qmetaobjectpublisher.cpp
+@@ -186,7 +186,6 @@ Q_DECLARE_TYPEINFO(OverloadResolutionCandidate, Q_MOVABLE_TYPE);
+ QMetaObjectPublisher::QMetaObjectPublisher(QWebChannel *webChannel)
+ : QObject(webChannel)
+ , webChannel(webChannel)
+- , clientIsIdle(false)
+ , blockUpdates(false)
+ , propertyUpdatesInitialized(false)
+ {
+@@ -300,17 +299,17 @@ QJsonObject QMetaObjectPublisher::classInfoForObject(const QObject *object, QWeb
+ return data;
+ }
+
+-void QMetaObjectPublisher::setClientIsIdle(bool isIdle)
++void QMetaObjectPublisher::setClientIsIdle(bool isIdle, QWebChannelAbstractTransport *transport)
+ {
+- if (clientIsIdle == isIdle) {
+- return;
+- }
+- clientIsIdle = isIdle;
+- if (!isIdle && timer.isActive()) {
+- timer.stop();
+- } else if (isIdle && !timer.isActive()) {
+- timer.start(PROPERTY_UPDATE_INTERVAL, this);
+- }
++ transportState[transport].clientIsIdle = isIdle;
++ if (isIdle)
++ sendEnqueuedPropertyUpdates(transport);
++}
++
++bool QMetaObjectPublisher::isClientIdle(QWebChannelAbstractTransport *transport)
++{
++ auto found = transportState.find(transport);
++ return found != transportState.end() && found.value().clientIsIdle;
+ }
+
+ QJsonObject QMetaObjectPublisher::initializeClient(QWebChannelAbstractTransport *transport)
+@@ -365,7 +364,7 @@ void QMetaObjectPublisher::initializePropertyUpdates(const QObject *const object
+
+ void QMetaObjectPublisher::sendPendingPropertyUpdates()
+ {
+- if (blockUpdates || !clientIsIdle || pendingPropertyUpdates.isEmpty()) {
++ if (blockUpdates) {
+ return;
+ }
+
+@@ -415,18 +414,19 @@ void QMetaObjectPublisher::sendPendingPropertyUpdates()
+
+ // data does not contain specific updates
+ if (!data.isEmpty()) {
+- setClientIsIdle(false);
+-
+ message[KEY_DATA] = data;
+- broadcastMessage(message);
++ enqueueBroadcastMessage(message);
+ }
+
+ // send every property update which is not supposed to be broadcasted
+ const QHash<QWebChannelAbstractTransport*, QJsonArray>::const_iterator suend = specificUpdates.constEnd();
+ for (QHash<QWebChannelAbstractTransport*, QJsonArray>::const_iterator it = specificUpdates.constBegin(); it != suend; ++it) {
+ message[KEY_DATA] = it.value();
+- it.key()->sendMessage(message);
++ enqueueMessage(message, it.key());
+ }
++
++ for (auto state = transportState.begin(); state != transportState.end(); ++state)
++ sendEnqueuedPropertyUpdates(state.key());
+ }
+
+ QVariant QMetaObjectPublisher::invokeMethod(QObject *const object, const QMetaMethod &method,
+@@ -572,7 +572,7 @@ void QMetaObjectPublisher::signalEmitted(const QObject *object, const int signal
+ }
+ } else {
+ pendingPropertyUpdates[object][signalIndex] = arguments;
+- if (clientIsIdle && !blockUpdates && !timer.isActive()) {
++ if (!blockUpdates && !timer.isActive()) {
+ timer.start(PROPERTY_UPDATE_INTERVAL, this);
+ }
+ }
+@@ -852,6 +852,40 @@ void QMetaObjectPublisher::broadcastMessage(const QJsonObject &message) const
+ }
+ }
+
++void QMetaObjectPublisher::enqueueBroadcastMessage(const QJsonObject &message)
++{
++ if (webChannel->d_func()->transports.isEmpty()) {
++ qWarning("QWebChannel is not connected to any transports, cannot send message: %s",
++ QJsonDocument(message).toJson().constData());
++ return;
++ }
++
++ for (auto *transport : webChannel->d_func()->transports) {
++ auto &state = transportState[transport];
++ state.queuedMessages.append(message);
++ }
++}
++
++void QMetaObjectPublisher::enqueueMessage(const QJsonObject &message,
++ QWebChannelAbstractTransport *transport)
++{
++ auto &state = transportState[transport];
++ state.queuedMessages.append(message);
++}
++
++void QMetaObjectPublisher::sendEnqueuedPropertyUpdates(QWebChannelAbstractTransport *transport)
++{
++ auto found = transportState.find(transport);
++ if (found != transportState.end() && found.value().clientIsIdle
++ && !found.value().queuedMessages.isEmpty()) {
++ for (auto message : found.value().queuedMessages) {
++ transport->sendMessage(message);
++ }
++ found.value().queuedMessages.clear();
++ found.value().clientIsIdle = false;
++ }
++}
++
+ void QMetaObjectPublisher::handleMessage(const QJsonObject &message, QWebChannelAbstractTransport *transport)
+ {
+ if (!webChannel->d_func()->transports.contains(transport)) {
+@@ -866,7 +900,7 @@ void QMetaObjectPublisher::handleMessage(const QJsonObject &message, QWebChannel
+
+ const MessageType type = toType(message.value(KEY_TYPE));
+ if (type == TypeIdle) {
+- setClientIsIdle(true);
++ setClientIsIdle(true, transport);
+ } else if (type == TypeInit) {
+ if (!message.contains(KEY_ID)) {
+ qWarning("JSON message object is missing the id property: %s",
+@@ -931,6 +965,7 @@ void QMetaObjectPublisher::setBlockUpdates(bool block)
+ blockUpdates = block;
+
+ if (!blockUpdates) {
++ timer.start(PROPERTY_UPDATE_INTERVAL, this);
+ sendPendingPropertyUpdates();
+ } else if (timer.isActive()) {
+ timer.stop();
+diff --git a/src/webchannel/qmetaobjectpublisher_p.h b/src/webchannel/qmetaobjectpublisher_p.h
+index ded0d33..4713ef1 100644
+--- a/src/webchannel/qmetaobjectpublisher_p.h
++++ b/src/webchannel/qmetaobjectpublisher_p.h
+@@ -59,6 +59,7 @@
+ #include <QBasicTimer>
+ #include <QPointer>
+ #include <QJsonObject>
++#include <QQueue>
+
+ #include <unordered_map>
+
+@@ -111,17 +112,36 @@ public:
+ */
+ void broadcastMessage(const QJsonObject &message) const;
+
++ /**
++ * Enqueue the given @p message to all known transports.
++ */
++ void enqueueBroadcastMessage(const QJsonObject &message);
++
++ /**
++ * Enqueue the given @p message to @p transport.
++ */
++ void enqueueMessage(const QJsonObject &message, QWebChannelAbstractTransport *transport);
++
++ /**
++ * If client for given @p transport is idle, send queued messaged to @p transport and then mark
++ * the client as not idle.
++ */
++ void sendEnqueuedPropertyUpdates(QWebChannelAbstractTransport *transport);
++
+ /**
+ * Serialize the QMetaObject of @p object and return it in JSON form.
+ */
+ QJsonObject classInfoForObject(const QObject *object, QWebChannelAbstractTransport *transport);
+
+ /**
+- * Set the client to idle or busy, based on the value of @p isIdle.
+- *
+- * When the value changed, start/stop the property update timer accordingly.
++ * Set the client to idle or busy for a single @p transport, based on the value of @p isIdle.
+ */
+- void setClientIsIdle(bool isIdle);
++ void setClientIsIdle(bool isIdle, QWebChannelAbstractTransport *transport);
++
++ /**
++ * Check that client is idle for @p transport.
++ */
++ bool isClientIdle(QWebChannelAbstractTransport *transport);
+
+ /**
+ * Initialize clients by sending them the class information of the registered objects.
+@@ -277,8 +297,15 @@ private:
+ std::unordered_map<const QThread*, SignalHandler<QMetaObjectPublisher>> signalHandlers;
+ SignalHandler<QMetaObjectPublisher> *signalHandlerFor(const QObject *object);
+
+- // true when the client is idle, false otherwise
+- bool clientIsIdle;
++ struct TransportState
++ {
++ TransportState() : clientIsIdle(false) { }
++ // true when the client is idle, false otherwise
++ bool clientIsIdle;
++ // messages to send
++ QQueue<QJsonObject> queuedMessages;
++ };
++ QHash<QWebChannelAbstractTransport *, TransportState> transportState;
+
+ // true when no property updates should be sent, false otherwise
+ bool blockUpdates;
+diff --git a/tests/auto/qml/testwebchannel.cpp b/tests/auto/qml/testwebchannel.cpp
+index 9891687..3ca81c2 100644
+--- a/tests/auto/qml/testwebchannel.cpp
++++ b/tests/auto/qml/testwebchannel.cpp
+@@ -46,7 +46,11 @@ TestWebChannel::~TestWebChannel()
+
+ bool TestWebChannel::clientIsIdle() const
+ {
+- return QWebChannel::d_func()->publisher->clientIsIdle;
++ for (auto *transport : QWebChannel::d_func()->transports) {
++ if (QWebChannel::d_func()->publisher->isClientIdle(transport))
++ return true;
++ }
++ return false;
+ }
+
+ QT_END_NAMESPACE
+diff --git a/tests/auto/webchannel/tst_webchannel.cpp b/tests/auto/webchannel/tst_webchannel.cpp
+index 7f846f5..37f989a 100644
+--- a/tests/auto/webchannel/tst_webchannel.cpp
++++ b/tests/auto/webchannel/tst_webchannel.cpp
+@@ -785,7 +785,7 @@ void TestWebChannel::testTransportWrapObjectProperties()
+ DummyTransport *dummyTransport = new DummyTransport(this);
+ channel.connectTo(dummyTransport);
+ channel.d_func()->publisher->initializeClient(dummyTransport);
+- channel.d_func()->publisher->setClientIsIdle(true);
++ channel.d_func()->publisher->setClientIsIdle(true, dummyTransport);
+
+ QCOMPARE(channel.d_func()->publisher->transportedWrappedObjects.size(), 0);
+
+@@ -988,6 +988,50 @@ void TestWebChannel::testAsyncObject()
+ thread.wait();
+ }
+
++void TestWebChannel::testPropertyMultipleTransports()
++{
++ DummyTransport transport1;
++ DummyTransport transport2;
++
++ QWebChannel channel;
++ QMetaObjectPublisher *publisher = channel.d_func()->publisher;
++
++ TestObject testObj;
++ testObj.setObjectName("testObject");
++ channel.registerObject(testObj.objectName(), &testObj);
++ channel.connectTo(&transport1);
++ channel.connectTo(&transport2);
++
++ testObj.setProp("Hello");
++
++ publisher->initializeClient(&transport1);
++ publisher->initializeClient(&transport2);
++ publisher->setClientIsIdle(true, &transport1);
++ QCOMPARE(publisher->isClientIdle(&transport1), true);
++ QCOMPARE(publisher->isClientIdle(&transport2), false);
++ QVERIFY(transport1.messagesSent().isEmpty());
++ QVERIFY(transport2.messagesSent().isEmpty());
++
++ testObj.setProp("World");
++ QTRY_COMPARE_WITH_TIMEOUT(transport1.messagesSent().size(), 1u, 2000);
++ QCOMPARE(transport2.messagesSent().size(), 0u);
++ publisher->setClientIsIdle(true, &transport2);
++ QTRY_COMPARE_WITH_TIMEOUT(transport2.messagesSent().size(), 1u, 2000);
++ QCOMPARE(publisher->isClientIdle(&transport1), false);
++ QCOMPARE(publisher->isClientIdle(&transport2), false);
++
++ testObj.setProp("!!!");
++ publisher->setClientIsIdle(true, &transport2);
++ QCOMPARE(publisher->isClientIdle(&transport2), true);
++ QCOMPARE(publisher->isClientIdle(&transport1), false);
++ QTRY_COMPARE_WITH_TIMEOUT(transport2.messagesSent().size(), 2u, 2000);
++ QCOMPARE(transport1.messagesSent().size(), 1u);
++ publisher->setClientIsIdle(true, &transport1);
++ QTRY_COMPARE_WITH_TIMEOUT(transport1.messagesSent().size(), 2u, 2000);
++ QCOMPARE(publisher->isClientIdle(&transport1), false);
++ QCOMPARE(publisher->isClientIdle(&transport2), false);
++}
++
+ class FunctionWrapper : public QObject
+ {
+ Q_OBJECT
+@@ -1105,7 +1149,7 @@ void TestWebChannel::benchPropertyUpdates()
+ obj->change();
+ }
+
+- channel.d_func()->publisher->clientIsIdle = true;
++ channel.d_func()->publisher->setClientIsIdle(true, m_dummyTransport);
+ channel.d_func()->publisher->sendPendingPropertyUpdates();
+ }
+ }
+diff --git a/tests/auto/webchannel/tst_webchannel.h b/tests/auto/webchannel/tst_webchannel.h
+index eae21f4..dd4e690 100644
+--- a/tests/auto/webchannel/tst_webchannel.h
++++ b/tests/auto/webchannel/tst_webchannel.h
+@@ -348,6 +348,7 @@ private slots:
+ void testJsonToVariant();
+ void testInfiniteRecursion();
+ void testAsyncObject();
++ void testPropertyMultipleTransports();
+ void testDeletionDuringMethodInvocation_data();
+ void testDeletionDuringMethodInvocation();
+
+--
+2.36.0
+
+From 8c842152da613f941892481d62267c73c4a4f006 Mon Sep 17 00:00:00 2001
+From: Arno Rehn <a.rehn@menlosystems.com>
+Date: Wed, 8 Dec 2021 22:44:49 +0100
+Subject: [PATCH 3/3] QMetaObjectPublisher: Never send stale queued messages
+
+If the client is connected with an in-process transport, it can happen
+that a transmitted message triggers a subsequent property change.
+In that case, we need to ensure that the queued messages have already
+been cleared; otherwise the recursive call will send everythig again.
+
+Case in point: The qmlwebchannel tests fail if we don't clear the
+queued messages before sending them out.
+
+For that same reason set the client to "busy" (aka non-idle) just right
+before sending out the messages; otherwise a potential "Idle" type
+message will not correctly restore the Idle state.
+
+Pick-to: 6.2
+Pick-to: 6.3
+Change-Id: Idc4afdd5cf4b4e03b8de8953a03d28442d74a3ab
+Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
+(cherry picked from commit b4bf8f5e043120341cd9caa59f25a2beecd94ad0)
+---
+ src/webchannel/qmetaobjectpublisher.cpp | 18 +++++++++++++++---
+ 1 file changed, 15 insertions(+), 3 deletions(-)
+
+diff --git a/src/webchannel/qmetaobjectpublisher.cpp b/src/webchannel/qmetaobjectpublisher.cpp
+index 3897c07..898d769 100644
+--- a/src/webchannel/qmetaobjectpublisher.cpp
++++ b/src/webchannel/qmetaobjectpublisher.cpp
+@@ -878,11 +878,23 @@ void QMetaObjectPublisher::sendEnqueuedPropertyUpdates(QWebChannelAbstractTransp
+ auto found = transportState.find(transport);
+ if (found != transportState.end() && found.value().clientIsIdle
+ && !found.value().queuedMessages.isEmpty()) {
+- for (auto message : found.value().queuedMessages) {
++
++ // If the client is connected with an in-process transport, it can
++ // happen that a message triggers a subsequent property change. In
++ // that case, we need to ensure that the queued messages have already
++ // been cleared; otherwise the recursive call will send everythig again.
++ // Case in point: The qmlwebchannel tests fail if we don't clear the
++ // queued messages before sending them out.
++ // For that same reason set the client to "busy" (aka non-idle) just
++ // right before sending out the messages; otherwise a potential
++ // "Idle" type message will not correctly restore the Idle state.
++ const auto messages = std::move(found.value().queuedMessages);
++ Q_ASSERT(found.value().queuedMessages.isEmpty());
++ found.value().clientIsIdle = false;
++
++ for (const auto &message : messages) {
+ transport->sendMessage(message);
+ }
+- found.value().queuedMessages.clear();
+- found.value().clientIsIdle = false;
+ }
+ }
+
+--
+2.36.0
+
diff --git a/user/qt5-qtwebkit/0001-Add-ARM-64-support.patch b/user/qt5-qtwebkit/0001-Add-ARM-64-support.patch
deleted file mode 100644
index 73f5c97f8..000000000
--- a/user/qt5-qtwebkit/0001-Add-ARM-64-support.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/Source/WTF/wtf/Platform.h b/Source/WTF/wtf/Platform.h
-index 4594ec8..639f28f 100644
---- a/Source/WTF/wtf/Platform.h
-+++ b/Source/WTF/wtf/Platform.h
-@@ -342,7 +342,7 @@
- #endif
- #endif
-
--#if CPU(ARM) || CPU(MIPS) || CPU(SH4) || CPU(SPARC) || CPU(MIPS64)
-+#if CPU(ARM) || CPU(MIPS) || CPU(SH4) || CPU(SPARC) || CPU(MIPS64) || CPU(AARCH64)
- #define WTF_CPU_NEEDS_ALIGNED_ACCESS 1
- #endif
-
diff --git a/user/qt5-qtwebkit/APKBUILD b/user/qt5-qtwebkit/APKBUILD
index 36b624e8a..71f3238aa 100644
--- a/user/qt5-qtwebkit/APKBUILD
+++ b/user/qt5-qtwebkit/APKBUILD
@@ -1,72 +1,103 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtwebkit
-_pkgname=qtwebkit-opensource-src
-pkgver=5.9.1
+_realname=qtwebkit
+pkgver=5.212.0_git20200924
+_ts=1600955993
pkgrel=4
-pkgdesc="Qt 5 - WebKit components"
-url="https://www.qt.io/"
+pkgdesc="Open source Web browser engine"
+url="https://github.com/qtwebkit/qtwebkit/wiki"
arch="all"
-options="!check"
-license="LGPL-2.0 with exceptions OR GPL-3.0 with exceptions"
-depends=""
-depends_dev="qt5-qtdeclarative-dev gstreamer-dev gst-plugins-base-dev
- libxslt-dev mesa-dev icu-dev libxext-dev glib-dev libxcomposite-dev
- libxrender-dev
- "
-makedepends="$depends_dev bison flex fontconfig-dev gperf libjpeg-turbo-dev
- libpng-dev libwebp-dev pcre-dev qt5-qtbase-dev ruby sqlite-dev zlib-dev"
+options="!check" # Tests fail (surprise), require X11.
+license="LGPL-2.1+ AND BSD-3-Clause AND Others"
+depends="gst-plugins-base"
+depends_dev="qt5-qtbase-dev"
+makedepends="$depends_dev ninja sqlite-dev icu-dev ruby perl bison flex gperf
+ libxml2-dev libxslt-dev libjpeg-turbo-dev libpng-dev zlib-dev glib-dev
+ gstreamer-dev fontconfig-dev qt5-qtsensors-dev qt5-qtpositioning-dev
+ qt5-qtdeclarative-dev qt5-qtwebchannel-dev libxcomposite-dev cmake
+ libxrender-dev gst-plugins-base-dev hyphen-dev libexecinfo-dev
+ ruby-dev glib-dev libgcrypt-dev libtasn1-dev"
subpackages="$pkgname-dev"
-source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz
- pic.patch
- fix-rpath.patch
- fix-execinfo.patch
- 0001-Add-ARM-64-support.patch
+#source="https://github.com/qtwebkit/qtwebkit/releases/download/$_realname-$_realver/$_realname-$_realver.tar.xz
+source="https://download.qt.io/snapshots/ci/qtwebkit/${pkgver%.*}/$_ts/src/submodules/$_realname-opensource-src-${pkgver%.*}.tar.xz
+ armv6.patch
+ glib-compat.patch
+ icu-68.patch
+ icu-75.patch
+ jsc-musl.patch
+ missing-header.patch
+ ppc-llint.patch
+ ppc-ucontext.patch
+ ppc64-llint.patch
+ webkit-offlineasm-warnings-ruby27.patch
"
-builddir="$srcdir"/$_pkgname-$pkgver
-
-prepare() {
- default_prepare
- # remove some bundled
- mkdir Source/ThirdParty/orig
- mv Source/ThirdParty/gtest/ \
- Source/ThirdParty/qunit/ \
- Source/ThirdParty/orig/
- syncqt.pl -version $pkgver Source/sync.profile
-}
+builddir="$srcdir"/$_realname-opensource-src-${pkgver%.*}
build() {
- local _maybe_smaller=""
- cd "$builddir"
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ export CXXFLAGS="$CXXFLAGS -Wno-deprecated-copy -Wno-deprecated-declarations"
- # On 32-bit x86, ld.bfd will run out of memory if debugging information
- # is built. See https://sourceware.org/bugzilla/show_bug.cgi?id=23470
- # for more information.
- case "$CARCH" in
- pmmx) _maybe_smaller="QMAKE_CXXFLAGS_DEBUG+=-g0"
+ case "${CARCH}" in
+ armv7|pmmx|ppc)
+ # 32-bit memory ceiling (#922)
+ BUILD_TYPE="MinSizeRel";
+ LDFLAGS="${LDFLAGS} -Wl,--strip-debug";
+ ;;
+ *)
+ BUILD_TYPE="RelWithDebugInfo";
+ ;;
esac
- qmake $_maybe_smaller
-
- # /usr/include/fortify/stdlib.h:20:25: fatal error: stdlib.h: No such file or directory
- # see: http://stackoverflow.com/questions/37218953/isystem-on-a-system-include-directory-causes-errors
- # see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71090
- # see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70129
- qmake Source/JavaScriptCore/LLIntOffsetsExtractor.pro -o \
- Source/JavaScriptCore/Makefile.LLIntOffsetsExtractor
- sed -i 's:-isystem /usr/include ::' \
- Source/JavaScriptCore/Makefile.LLIntOffsetsExtractor
-
+ # We can enable the JIT when it is stable on all Tier 1 platforms:
+ # pmmx (ensure no SSE)
+ # ppc
+ # ppc64
+ #
+ # DONE:
+ # aarch64
+ # armv7
+ # x86_64
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=$BUILD_TYPE \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DENABLE_JIT=OFF \
+ -DENABLE_PRINT_SUPPORT=ON \
+ -DENABLE_QT_WEBCHANNEL=ON \
+ -DENABLE_SAMPLING_PROFILER=OFF \
+ -DPORT=Qt \
+ -DUSE_SYSTEM_MALLOC=ON \
+ -DUSE_WOFF2=OFF \
+ -DENABLE_MEDIA_SOURCE=ON \
+ -DENABLE_VIDEO=ON \
+ -DENABLE_WEB_AUDIO=ON \
+ -DUSE_GSTREAMER=ON \
+ ${CMAKE_CROSSOPTS} .
make
}
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
package() {
- cd "$builddir"
- make install INSTALL_ROOT="$pkgdir"
- sed -i -e 's:-L/home[^ ]\+::g' "$pkgdir"/usr/lib/pkgconfig/*.pc
+ make DESTDIR="$pkgdir" install
}
-sha512sums="79316ab746a230fdb290e28629d7cec5fca75119ba8868060742c682ab86490de9ffd8e517569aa7412f35fd709568dbb5f7d2d467bdb4461e192f8b05d6f1e5 qtwebkit-opensource-src-5.9.1.tar.xz
-9a62a5e7af91c44311b517608262f88b5bc607e75dc5878dd08b0a0872ec03fb7a566df0a41413f7e60beb1b9880e24f084b90c38ed50d4219ec2ad6af9bd62f pic.patch
-00d59c0cdb58ae8e7cf6bc3d03f133697e74c267ccebe12238bcdc274d4c90210b82c2d8bdf0e949cd43da13a4fd8a4c35fb54a00ed5102a4ac4d23aa002d0fe fix-rpath.patch
-f17c2f4b90090c8f12e4ba1f2cbd7a9f496c8de024ba6e0d55b98e5b89ab89298aff84f39e81905e0491fe6bd11544633a8b191403a866e16ed654d44cf8dc6f fix-execinfo.patch
-af5097d44f73de156ca31a5423136301dfc12ae693e20c4702bf3f1c6e16395f3912e9268582480ba3177021f37d4cae3b84d4b23eeb063fdc40f2444d3b34c8 0001-Add-ARM-64-support.patch"
+sha512sums="e2983ac291654ac75a8cdaaa1ca16810ae047e8d78c8910c415ab76e6efa532b75b119be8f053f00214ee5526099a75930becfbd23e8f7a4c08be32e5f41a1d7 qtwebkit-opensource-src-5.212.tar.xz
+ca77802de1b945c05b6a88d5cc0cbb093a751ef16626d221c8b2ca5cf841f5d42fffe62087df1ce0964f8ce72148c0109ff85e5cef3390125c133b310031028e armv6.patch
+9f42f3d64657fb9487d9299ad5931381f9aa91a746a5986dc361def5e9a6e02933054a66132fa99057460ad6de0c19e9b51e07594451cc4f38b19012a69d205c glib-compat.patch
+5f0ca182c68c55a6f221e96bf2221784c7126006ea8db3e9eee2b66dbdda18d7d0f9830e8345ac2b0bc6f557af5d2a54a321b06be4a2c845dd1003282b053443 icu-68.patch
+240ec1d145eee861c45da753b5f4b01a7aadeee4de604a701de9d326ab02a3565bd63398c98d820d7eae498d28cf8eb0b53615f634c3791915cae35bbd3e263a icu-75.patch
+9e3638d4d5c6e56510525931b278c8d6e28134917c300837b4eccf1b9298af1e274668318af82091137e99b83da0f78904084b7ee9dd8422b347a0f35e765c31 jsc-musl.patch
+ee3d06d3c350980a2a042961b6943d42706599b39270addce3904535811b18a2af8f74842f2d21267ce71250b97c05de600ec416e042f4d1cdbc2701711b5f4a missing-header.patch
+4a3a15f8b1e63cade07c589be45afd794b45b34ee98e4d2d3fc2f52662c26c518d400b44c9314e41113cad847b9efd544d2a4c02425c9892ca9729e218ae9306 ppc-llint.patch
+48f81c6a2c0f4e9b215dada4c0bebdafc66feb75178a7b1ca661f2bbcddd6b573e7db4dd179f6e4b6345c7ebcf17ce1c6647cc6ce39dbac8ba68f8863a98bdc0 ppc-ucontext.patch
+db98d710815eb68f1fb025098b04c34b33518750c193e702383ca879e145c52ba4786fa4721f384f01f90231c32be9478d507c1000eb761621751edcd071b966 ppc64-llint.patch
+1431c6329fb9ef86dbe929a4002881f6a511aa8a2be684a7c96ea7ea48af53b4f0d96bd8e8367289080bed674ba35cab002747cf3820a6831e60f7ab7a53d3cc webkit-offlineasm-warnings-ruby27.patch"
diff --git a/user/qt5-qtwebkit/armv6.patch b/user/qt5-qtwebkit/armv6.patch
new file mode 100644
index 000000000..d2911d6d7
--- /dev/null
+++ b/user/qt5-qtwebkit/armv6.patch
@@ -0,0 +1,72 @@
+From 7cc86ebe881f36bfef18d8eeee666d2a55eae892 Mon Sep 17 00:00:00 2001
+From: Guilherme Iscaro <iscaro@profusion.mobi>
+Date: Fri, 31 Mar 2017 10:31:49 -0300
+Subject: [PATCH] Fix build on ARMv6.
+
+The ARMv6 and older architures does not support the movw and movl
+instructions, thus causing a build break.
+This patch fix the problem by creating a new offlineasm instruction,
+which will use the ldr instruction to load a immediate into a register.
+
+https://bugs.webkit.org/show_bug.cgi?id=141288
+
+Reviewed by NOBODY (OOPS!).
+
+* llint/LowLevelInterpreter.asm:
+* offlineasm/arm.rb:
+* offlineasm/instructions.rb:
+---
+ Source/JavaScriptCore/llint/LowLevelInterpreter.asm | 8 +++++++-
+ Source/JavaScriptCore/offlineasm/arm.rb | 2 ++
+ Source/JavaScriptCore/offlineasm/instructions.rb | 3 ++-
+ 3 files changed, 11 insertions(+), 2 deletions(-)
+
+diff --git Source/JavaScriptCore/llint/LowLevelInterpreter.asm Source/JavaScriptCore/llint/LowLevelInterpreter.asm
+index ab3c0c8e771..6c32eef8852 100644
+--- a/Source/JavaScriptCore/llint/LowLevelInterpreter.asm
++++ b/Source/JavaScriptCore/llint/LowLevelInterpreter.asm
+@@ -1167,7 +1167,13 @@ macro setEntryAddress(index, label)
+ move index, t4
+ storep t1, [a0, t4, 8]
+ elsif ARM or ARMv7 or ARMv7_TRADITIONAL
+- mvlbl (label - _relativePCBase), t4
++ if ARM
++ ldrlbl t4, label
++ ldrlbl t3, _relativePCBase
++ subp t4, t3, t4
++ else
++ mvlbl (label - _relativePCBase), t4
++ end
+ addp t4, t1, t4
+ move index, t3
+ storep t4, [a0, t3, 4]
+diff --git Source/JavaScriptCore/offlineasm/arm.rb Source/JavaScriptCore/offlineasm/arm.rb
+index c8064a59196..a9c40c8995c 100644
+--- a/Source/JavaScriptCore/offlineasm/arm.rb
++++ b/Source/JavaScriptCore/offlineasm/arm.rb
+@@ -504,6 +504,8 @@ class Instruction
+ when "mvlbl"
+ $asm.puts "movw #{operands[1].armOperand}, \#:lower16:#{operands[0].value}"
+ $asm.puts "movt #{operands[1].armOperand}, \#:upper16:#{operands[0].value}"
++ when "ldrlbl"
++ $asm.puts "ldr #{operands[0].armOperand}, =#{operands[1].value}"
+ when "nop"
+ $asm.puts "nop"
+ when "bieq", "bpeq", "bbeq"
+diff --git Source/JavaScriptCore/offlineasm/instructions.rb Source/JavaScriptCore/offlineasm/instructions.rb
+index bbfce7193b3..8cc1cb961ce 100644
+--- a/Source/JavaScriptCore/offlineasm/instructions.rb
++++ b/Source/JavaScriptCore/offlineasm/instructions.rb
+@@ -261,7 +261,8 @@ X86_INSTRUCTIONS =
+ ARM_INSTRUCTIONS =
+ [
+ "clrbp",
+- "mvlbl"
++ "mvlbl",
++ "ldrlbl"
+ ]
+
+ ARM64_INSTRUCTIONS =
+--
+2.12.1
+
diff --git a/user/qt5-qtwebkit/fix-execinfo.patch b/user/qt5-qtwebkit/fix-execinfo.patch
deleted file mode 100644
index 6fbf4ed8f..000000000
--- a/user/qt5-qtwebkit/fix-execinfo.patch
+++ /dev/null
@@ -1,20 +0,0 @@
---- webkitgtk-2.2.0.orig/Source/WTF/wtf/Assertions.cpp
-+++ webkitgtk-2.2.0/Source/WTF/wtf/Assertions.cpp
-@@ -64,7 +64,7 @@
- #include <windows.h>
- #endif
-
--#if (OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__))) && !OS(ANDROID)
-+#if OS(DARWIN) || (OS(LINUX) && defined(__GLIBC__) && !defined(__UCLIBC__)) && !OS(ANDROID)
- #include <cxxabi.h>
- #include <dlfcn.h>
- #include <execinfo.h>
-@@ -242,7 +242,7 @@
-
- void WTFGetBacktrace(void** stack, int* size)
- {
--#if (OS(DARWIN) || (OS(LINUX) && !defined(__UCLIBC__))) && !OS(ANDROID)
-+#if OS(DARWIN) || (OS(LINUX) && defined(__GLIBC__) && !defined(__UCLIBC__)) && !OS(ANDROID)
- *size = backtrace(stack, *size);
- #elif OS(WINDOWS) && !OS(WINCE)
- // The CaptureStackBackTrace function is available in XP, but it is not defined
diff --git a/user/qt5-qtwebkit/fix-rpath.patch b/user/qt5-qtwebkit/fix-rpath.patch
deleted file mode 100644
index 6b08fd1a3..000000000
--- a/user/qt5-qtwebkit/fix-rpath.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./Tools/qmake/mkspecs/features/unix/default_post.prf.orig
-+++ ./Tools/qmake/mkspecs/features/unix/default_post.prf
-@@ -59,8 +59,6 @@
- }
- }
-
--contains(TEMPLATE, app): CONFIG += rpath
--
- CONFIG(debug, debug|release)|force_debug_info {
- # Make ld not cache the symbol tables of input files in memory to avoid memory exhaustion during the linking phase.
- !force_static_libs_as_shared:config_gnuld: QMAKE_LFLAGS += -Wl,--no-keep-memory
diff --git a/user/qt5-qtwebkit/glib-compat.patch b/user/qt5-qtwebkit/glib-compat.patch
new file mode 100644
index 000000000..0873e8d4f
--- /dev/null
+++ b/user/qt5-qtwebkit/glib-compat.patch
@@ -0,0 +1,37 @@
+From 5b698ba3faffd4e198a45be9fe74f53307395e4b Mon Sep 17 00:00:00 2001
+From: Fabian Vogt <fvogt@suse.de>
+Date: Wed, 7 Apr 2021 13:38:09 +0200
+Subject: [PATCH] Remove invalid g_object declarations to fix build with glib
+ >= 2.68
+
+g_object_ref_sink is defined as a macro meanwhile and so the build fails.
+Just remove the declarations, glib.h is included anyway.
+---
+ Source/WTF/wtf/glib/GRefPtr.h | 3 ---
+ 1 file changed, 3 deletions(-)
+
+diff --git a/Source/WTF/wtf/glib/GRefPtr.h b/Source/WTF/wtf/glib/GRefPtr.h
+index 06133d82cb35..d9a1d2f145f5 100644
+--- a/Source/WTF/wtf/glib/GRefPtr.h
++++ b/Source/WTF/wtf/glib/GRefPtr.h
+@@ -29,9 +29,6 @@
+ #include <algorithm>
+ #include <glib.h>
+
+-extern "C" void g_object_unref(gpointer);
+-extern "C" gpointer g_object_ref_sink(gpointer);
+-
+ namespace WTF {
+
+ enum GRefPtrAdoptType { GRefPtrAdopt };
+--- qtwebkit-opensource-src-5.212/Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp.old 2020-09-22 06:30:04.000000000 -0500
++++ qtwebkit-opensource-src-5.212/Source/WebCore/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp 2022-06-12 02:35:30.360000000 -0500
+@@ -230,7 +230,7 @@
+ [](GstAppSink* sink, gpointer userData) -> GstFlowReturn {
+ return static_cast<AudioFileReader*>(userData)->handleSample(sink);
+ },
+- { nullptr }
++ nullptr
+ };
+ gst_app_sink_set_callbacks(GST_APP_SINK(sink), &callbacks, this, 0);
+
diff --git a/user/qt5-qtwebkit/icu-68.patch b/user/qt5-qtwebkit/icu-68.patch
new file mode 100644
index 000000000..70ee2a06d
--- /dev/null
+++ b/user/qt5-qtwebkit/icu-68.patch
@@ -0,0 +1,124 @@
+ICU uses uncapital bools now.
+
+Commit: https://github.com/unicode-org/icu/commit/c3fe7e09d844
+
+--- a/Source/WebCore/platform/text/TextCodecICU.cpp.orig 2020-03-04 17:16:37 UTC
++++ b/Source/WebCore/platform/text/TextCodecICU.cpp
+@@ -308,7 +308,7 @@ void TextCodecICU::createICUConverter() const
+ m_converterICU = ucnv_open(m_canonicalConverterName, &err);
+ ASSERT(U_SUCCESS(err));
+ if (m_converterICU)
+- ucnv_setFallback(m_converterICU, TRUE);
++ ucnv_setFallback(m_converterICU, true);
+ }
+
+ int TextCodecICU::decodeToBuffer(UChar* target, UChar* targetLimit, const char*& source, const char* sourceLimit, int32_t* offsets, bool flush, UErrorCode& err)
+--- a/Source/WebCore/platform/text/icu/UTextProvider.h.orig 2020-03-04 17:16:37 UTC
++++ b/Source/WebCore/platform/text/icu/UTextProvider.h
+@@ -80,12 +80,12 @@ inline bool uTextAccessInChunkOrOutOfRange(UText* text
+ // Ensure chunk offset is well formed if computed offset exceeds int32_t range.
+ ASSERT(offset < std::numeric_limits<int32_t>::max());
+ text->chunkOffset = offset < std::numeric_limits<int32_t>::max() ? static_cast<int32_t>(offset) : 0;
+- isAccessible = TRUE;
++ isAccessible = true;
+ return true;
+ }
+ if (nativeIndex >= nativeLength && text->chunkNativeLimit == nativeLength) {
+ text->chunkOffset = text->chunkLength;
+- isAccessible = FALSE;
++ isAccessible = false;
+ return true;
+ }
+ } else {
+@@ -94,12 +94,12 @@ inline bool uTextAccessInChunkOrOutOfRange(UText* text
+ // Ensure chunk offset is well formed if computed offset exceeds int32_t range.
+ ASSERT(offset < std::numeric_limits<int32_t>::max());
+ text->chunkOffset = offset < std::numeric_limits<int32_t>::max() ? static_cast<int32_t>(offset) : 0;
+- isAccessible = TRUE;
++ isAccessible = true;
+ return true;
+ }
+ if (nativeIndex <= 0 && !text->chunkNativeStart) {
+ text->chunkOffset = 0;
+- isAccessible = FALSE;
++ isAccessible = false;
+ return true;
+ }
+ }
+--- a/Source/WebCore/platform/text/icu/UTextProviderLatin1.cpp.orig 2020-03-04 17:16:37 UTC
++++ b/Source/WebCore/platform/text/icu/UTextProviderLatin1.cpp
+@@ -100,23 +100,23 @@ static UBool uTextLatin1Access(UText* uText, int64_t i
+ if (index < uText->chunkNativeLimit && index >= uText->chunkNativeStart) {
+ // Already inside the buffer. Set the new offset.
+ uText->chunkOffset = static_cast<int32_t>(index - uText->chunkNativeStart);
+- return TRUE;
++ return true;
+ }
+ if (index >= length && uText->chunkNativeLimit == length) {
+ // Off the end of the buffer, but we can't get it.
+ uText->chunkOffset = static_cast<int32_t>(index - uText->chunkNativeStart);
+- return FALSE;
++ return false;
+ }
+ } else {
+ if (index <= uText->chunkNativeLimit && index > uText->chunkNativeStart) {
+ // Already inside the buffer. Set the new offset.
+ uText->chunkOffset = static_cast<int32_t>(index - uText->chunkNativeStart);
+- return TRUE;
++ return true;
+ }
+ if (!index && !uText->chunkNativeStart) {
+ // Already at the beginning; can't go any farther.
+ uText->chunkOffset = 0;
+- return FALSE;
++ return false;
+ }
+ }
+
+@@ -144,7 +144,7 @@ static UBool uTextLatin1Access(UText* uText, int64_t i
+
+ uText->nativeIndexingLimit = uText->chunkLength;
+
+- return TRUE;
++ return true;
+ }
+
+ static int32_t uTextLatin1Extract(UText* uText, int64_t start, int64_t limit, UChar* dest, int32_t destCapacity, UErrorCode* status)
+@@ -336,7 +336,7 @@ static int64_t uTextLatin1ContextAwareNativeLength(UTe
+ static UBool uTextLatin1ContextAwareAccess(UText* text, int64_t nativeIndex, UBool forward)
+ {
+ if (!text->context)
+- return FALSE;
++ return false;
+ int64_t nativeLength = uTextLatin1ContextAwareNativeLength(text);
+ UBool isAccessible;
+ if (uTextAccessInChunkOrOutOfRange(text, nativeIndex, nativeLength, forward, isAccessible))
+@@ -356,7 +356,7 @@ static UBool uTextLatin1ContextAwareAccess(UText* text
+ ASSERT(newContext == UTextProviderContext::PriorContext);
+ textLatin1ContextAwareSwitchToPriorContext(text, nativeIndex, nativeLength, forward);
+ }
+- return TRUE;
++ return true;
+ }
+
+ static int32_t uTextLatin1ContextAwareExtract(UText*, int64_t, int64_t, UChar*, int32_t, UErrorCode* errorCode)
+--- a/Source/WebCore/platform/text/icu/UTextProviderUTF16.cpp.orig 2020-03-04 17:16:37 UTC
++++ b/Source/WebCore/platform/text/icu/UTextProviderUTF16.cpp
+@@ -125,7 +125,7 @@ static inline int64_t uTextUTF16ContextAwareNativeLeng
+ static UBool uTextUTF16ContextAwareAccess(UText* text, int64_t nativeIndex, UBool forward)
+ {
+ if (!text->context)
+- return FALSE;
++ return false;
+ int64_t nativeLength = uTextUTF16ContextAwareNativeLength(text);
+ UBool isAccessible;
+ if (uTextAccessInChunkOrOutOfRange(text, nativeIndex, nativeLength, forward, isAccessible))
+@@ -145,7 +145,7 @@ static UBool uTextUTF16ContextAwareAccess(UText* text,
+ ASSERT(newContext == UTextProviderContext::PriorContext);
+ textUTF16ContextAwareSwitchToPriorContext(text, nativeIndex, nativeLength, forward);
+ }
+- return TRUE;
++ return true;
+ }
+
+ static int32_t uTextUTF16ContextAwareExtract(UText*, int64_t, int64_t, UChar*, int32_t, UErrorCode* errorCode)
diff --git a/user/qt5-qtwebkit/icu-75.patch b/user/qt5-qtwebkit/icu-75.patch
new file mode 100644
index 000000000..aaba87abd
--- /dev/null
+++ b/user/qt5-qtwebkit/icu-75.patch
@@ -0,0 +1,55 @@
+Required for compatibility with ICU 75.
+
+--- qtwebkit-opensource-src-5.212/Source/cmake/OptionsCommon.cmake.old 2020-09-22 06:30:04.000000000 -0500
++++ qtwebkit-opensource-src-5.212/Source/cmake/OptionsCommon.cmake 2024-08-12 23:20:50.344794822 -0500
+@@ -31,7 +31,7 @@
+ if (COMPILER_IS_GCC_OR_CLANG)
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-exceptions -fno-strict-aliasing")
+ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-exceptions -fno-strict-aliasing -fno-rtti")
+- set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
++ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
+ endif ()
+
+ if (COMPILER_IS_CLANG AND CMAKE_GENERATOR STREQUAL "Ninja")
+--- qtwebkit-opensource-src-5.212/Source/WTF/wtf/StdLibExtras.h.old 2020-09-22 06:30:04.000000000 -0500
++++ qtwebkit-opensource-src-5.212/Source/WTF/wtf/StdLibExtras.h 2024-08-12 23:38:15.214914980 -0500
+@@ -292,7 +292,7 @@
+ // This adds various C++14 features for versions of the STL that may not yet have them.
+ namespace std {
+ // MSVC 2013 supports std::make_unique already.
+-#if !defined(_MSC_VER) || _MSC_VER < 1800
++#if 0
+ template<class T> struct _Unique_if {
+ typedef unique_ptr<T> _Single_object;
+ };
+@@ -323,7 +323,7 @@
+ #endif
+
+ // MSVC 2015 supports these functions.
+-#if !COMPILER(MSVC) || _MSC_VER < 1900
++#if 0
+ // Compile-time integer sequences
+ // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3658.html
+ // (Note that we only implement index_sequence, and not the more generic integer_sequence).
+--- qtwebkit-opensource-src-5.212/Source/WebCore/xml/XSLTProcessor.h.old 2020-09-22 06:30:04.000000000 -0500
++++ qtwebkit-opensource-src-5.212/Source/WebCore/xml/XSLTProcessor.h 2024-08-13 00:27:21.354699921 -0500
+@@ -64,7 +64,7 @@
+
+ void reset();
+
+- static void parseErrorFunc(void* userData, xmlError*);
++ static void parseErrorFunc(void* userData, const xmlError*);
+ static void genericErrorFunc(void* userData, const char* msg, ...);
+
+ // Only for libXSLT callbacks
+--- qtwebkit-opensource-src-5.212/Source/WebCore/xml/XSLTProcessorLibxslt.cpp.old 2020-09-22 06:30:04.000000000 -0500
++++ qtwebkit-opensource-src-5.212/Source/WebCore/xml/XSLTProcessorLibxslt.cpp 2024-08-13 00:28:32.207221034 -0500
+@@ -78,7 +78,7 @@
+ // It would be nice to do something with this error message.
+ }
+
+-void XSLTProcessor::parseErrorFunc(void* userData, xmlError* error)
++void XSLTProcessor::parseErrorFunc(void* userData, const xmlError* error)
+ {
+ PageConsoleClient* console = static_cast<PageConsoleClient*>(userData);
+ if (!console)
diff --git a/user/qt5-qtwebkit/jsc-musl.patch b/user/qt5-qtwebkit/jsc-musl.patch
new file mode 100644
index 000000000..0165f21dc
--- /dev/null
+++ b/user/qt5-qtwebkit/jsc-musl.patch
@@ -0,0 +1,32 @@
+--- a/Source/JavaScriptCore/runtime/Options.h 2020-04-14 00:51:51.000000000 +0200
++++ b/Source/JavaScriptCore/runtime/Options.h 2020-04-14 00:51:51.000000000 +0200
+@@ -40,6 +40,16 @@
+
+ namespace JSC {
+
++#if defined(__GLIBC__)
++constexpr unsigned jscMaxPerThreadStack = 4 * MB;
++constexpr unsigned jscSoftReservedZoneSize = 128 * KB;
++constexpr unsigned jscReservedZoneSize = 64 * KB;
++#else
++constexpr unsigned jscMaxPerThreadStack = 80 * KB;
++constexpr unsigned jscSoftReservedZoneSize = 32 * KB;
++constexpr unsigned jscReservedZoneSize = 16 * KB;
++#endif
++
+ // How do JSC VM options work?
+ // ===========================
+ // The JSC_OPTIONS() macro below defines a list of all JSC options in use,
+@@ -112,9 +122,9 @@
+ \
+ v(bool, reportMustSucceedExecutableAllocations, false, nullptr) \
+ \
+- v(unsigned, maxPerThreadStackUsage, 4 * MB, nullptr) \
+- v(unsigned, reservedZoneSize, 128 * KB, nullptr) \
+- v(unsigned, errorModeReservedZoneSize, 64 * KB, nullptr) \
++ v(unsigned, maxPerThreadStackUsage, jscMaxPerThreadStack, nullptr) \
++ v(unsigned, reservedZoneSize, jscSoftReservedZoneSize, nullptr) \
++ v(unsigned, errorModeReservedZoneSize, jscReservedZoneSize, nullptr) \
+ \
+ v(bool, crashIfCantAllocateJITMemory, false, nullptr) \
+ v(unsigned, jitMemoryReservationSize, 0, "Set this number to change the executable allocation size in ExecutableAllocatorFixedVMPool. (In bytes.)") \
diff --git a/user/qt5-qtwebkit/missing-header.patch b/user/qt5-qtwebkit/missing-header.patch
new file mode 100644
index 000000000..da0eed43c
--- /dev/null
+++ b/user/qt5-qtwebkit/missing-header.patch
@@ -0,0 +1,11 @@
+The GCC 13 C++ stdlib doesn't include <stdint.h> any more, which is used for uint32_t.
+--- qtwebkit-opensource-src-5.212/Source/ThirdParty/ANGLE/src/common/mathutil.h.old 2020-09-22 06:30:04.000000000 -0500
++++ qtwebkit-opensource-src-5.212/Source/ThirdParty/ANGLE/src/common/mathutil.h 2024-05-27 14:43:22.625301664 -0500
+@@ -14,6 +14,7 @@
+
+ #include <limits>
+ #include <algorithm>
++#include <stdint.h>
+ #include <string.h>
+ #include <stdlib.h>
+
diff --git a/user/qt5-qtwebkit/pic.patch b/user/qt5-qtwebkit/pic.patch
deleted file mode 100644
index ef8993ee3..000000000
--- a/user/qt5-qtwebkit/pic.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- ./Source/WTF/wtf/InlineASM.h.orig 2013-10-07 11:36:58.995128674 +0000
-+++ ./Source/WTF/wtf/InlineASM.h 2013-10-07 11:37:28.058792290 +0000
-@@ -42,7 +42,7 @@
- #define THUMB_FUNC_PARAM(name)
- #endif
-
--#if (OS(LINUX) || OS(FREEBSD)) && CPU(X86_64)
-+#if (OS(LINUX) || OS(FREEBSD)) && (CPU(X86_64) || defined(__PIC__))
- #define GLOBAL_REFERENCE(name) #name "@plt"
- #elif CPU(X86) && COMPILER(MINGW)
- #define GLOBAL_REFERENCE(name) "@" #name "@4"
diff --git a/user/qt5-qtwebkit/ppc-llint.patch b/user/qt5-qtwebkit/ppc-llint.patch
new file mode 100644
index 000000000..7f9be4e56
--- /dev/null
+++ b/user/qt5-qtwebkit/ppc-llint.patch
@@ -0,0 +1,32 @@
+This fixes JavaScriptCore on big endian systems (mainly ppc).
+
+Without the patch, attempting to run any JS results in
+a crash as the generated code was endian specific.
+
+--- qtwebkit/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
++++ qtwebkit/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
+@@ -1500,13 +1500,13 @@ _llint_op_put_by_id:
+ loadp StructureChain::m_vector[t3], t3
+ assert(macro (ok) btpnz t3, ok end)
+
+- loadp Structure::m_prototype[t2], t2
++ loadp Structure::m_prototype + PayloadOffset[t2], t2
+ btpz t2, .opPutByIdTransitionChainDone
+ .opPutByIdTransitionChainLoop:
+ loadp [t3], t1
+ bpneq t1, JSCell::m_structureID[t2], .opPutByIdSlow
+ addp 4, t3
+- loadp Structure::m_prototype[t1], t2
++ loadp Structure::m_prototype + PayloadOffset[t1], t2
+ btpnz t2, .opPutByIdTransitionChainLoop
+
+ .opPutByIdTransitionChainDone:
+@@ -1984,7 +1984,7 @@ _llint_throw_from_slow_path_trampoline:
+ # When throwing from the interpreter (i.e. throwing from LLIntSlowPaths), so
+ # the throw target is not necessarily interpreted code, we come to here.
+ # This essentially emulates the JIT's throwing protocol.
+- loadp Callee[cfr], t1
++ loadp Callee + PayloadOffset[cfr], t1
+ andp MarkedBlockMask, t1
+ loadp MarkedBlock::m_weakSet + WeakSet::m_vm[t1], t1
+ copyCalleeSavesToVMCalleeSavesBuffer(t1, t2)
diff --git a/user/qt5-qtwebkit/ppc-ucontext.patch b/user/qt5-qtwebkit/ppc-ucontext.patch
new file mode 100644
index 000000000..e1b9bdfda
--- /dev/null
+++ b/user/qt5-qtwebkit/ppc-ucontext.patch
@@ -0,0 +1,15 @@
+diff -ur a/Source/JavaScriptCore/heap/MachineStackMarker.cpp b/Source/JavaScriptCore/heap/MachineStackMarker.cpp
+--- a/Source/JavaScriptCore/heap/MachineStackMarker.cpp 2022-12-13 14:54:53.144583311 -0600
++++ b/Source/JavaScriptCore/heap/MachineStackMarker.cpp 2022-12-13 14:55:16.829078581 -0600
+@@ -86,11 +86,7 @@
+ }
+
+ ucontext_t* userContext = static_cast<ucontext_t*>(ucontext);
+-#if CPU(PPC)
+- thread->suspendedMachineContext = *userContext->uc_mcontext.uc_regs;
+-#else
+ thread->suspendedMachineContext = userContext->uc_mcontext;
+-#endif
+
+ // Allow suspend caller to see that this thread is suspended.
+ // sem_post is async-signal-safe function. It means that we can call this from a signal handler.
diff --git a/user/qt5-qtwebkit/ppc64-llint.patch b/user/qt5-qtwebkit/ppc64-llint.patch
new file mode 100644
index 000000000..802c00ae6
--- /dev/null
+++ b/user/qt5-qtwebkit/ppc64-llint.patch
@@ -0,0 +1,28 @@
+Description: fix JSCore segmentation fault on 64-bit big endian systems
+ In CodeBlock.cpp the code preparing the operands of op_get_from_scope writes
+ the property offset as pointer size (hence 64 bit) value:
+ .
+ 2141: instructions[i + 6].u.pointer = reinterpret_cast<void*>(op.operand);
+ .
+ while the same slot is accessed later by the jitted code as 32 bit integer:
+ .
+ macro getProperty(slow)
+ loadisFromInstruction(6, t1)
+ .
+ This fails on big endian targets since the integer access takes the higher
+ part of the 64 bit value.
+Origin: backport, https://github.com/webkit/webkit/commit/3fdde71c7d95d758
+Reviewed-by: Frank Heimes <frank.heimes@canonical.com>
+Last-Update: 2021-11-24
+
+--- a/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
++++ b/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
+@@ -2020,7 +2020,7 @@ macro loadWithStructureCheck(operand, sl
+ end
+
+ macro getProperty(slow)
+- loadisFromInstruction(6, t1)
++ loadpFromInstruction(6, t1)
+ loadPropertyAtVariableOffset(t1, t0, t2, slow)
+ valueProfile(t2, 7, t0)
+ loadisFromInstruction(1, t0)
diff --git a/user/qt5-qtwebkit/webkit-offlineasm-warnings-ruby27.patch b/user/qt5-qtwebkit/webkit-offlineasm-warnings-ruby27.patch
new file mode 100644
index 000000000..d25c3b1d6
--- /dev/null
+++ b/user/qt5-qtwebkit/webkit-offlineasm-warnings-ruby27.patch
@@ -0,0 +1,46 @@
+From c7d19a492d97f9282a546831beb918e03315f6ef Mon Sep 17 00:00:00 2001
+From: Adrian Perez de Castro <aperez@igalia.com>
+Date: Wed, 15 Jan 2020 22:15:38 +0000
+Subject: [PATCH] Offlineasm warnings with newer Ruby versions
+ https://bugs.webkit.org/show_bug.cgi?id=206233
+
+Reviewed by Yusuke Suzuki.
+
+Avoid a warning about using Object#=~ on Annotation instances, which
+has been deprecated in Ruby 2.7.
+
+* offlineasm/parser.rb: Swap checks to prevent applying the =~ operator
+to Annotation instances, which do not define it.
+
+
+Canonical link: https://commits.webkit.org/219400@main
+git-svn-id: https://svn.webkit.org/repository/webkit/trunk@254637 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+---
+ Source/JavaScriptCore/ChangeLog | 13 +++++++++++++
+ Source/JavaScriptCore/offlineasm/parser.rb | 6 +++---
+ 2 files changed, 16 insertions(+), 3 deletions(-)
+
+diff --git a/Source/JavaScriptCore/offlineasm/parser.rb b/Source/JavaScriptCore/offlineasm/parser.rb
+index 791c81a9868d..f14c873e2dbd 100644
+--- a/Source/JavaScriptCore/offlineasm/parser.rb
++++ b/Source/JavaScriptCore/offlineasm/parser.rb
+@@ -628,9 +628,7 @@ def parseSequence(final, comment)
+ firstCodeOrigin = @tokens[@idx].codeOrigin
+ list = []
+ loop {
+- if (@idx == @tokens.length and not final) or (final and @tokens[@idx] =~ final)
+- break
+- elsif @tokens[@idx].is_a? Annotation
++ if @tokens[@idx].is_a? Annotation
+ # This is the only place where we can encounter a global
+ # annotation, and hence need to be able to distinguish between
+ # them.
+@@ -644,6 +642,8 @@ def parseSequence(final, comment)
+ list << Instruction.new(codeOrigin, annotationOpcode, [], @tokens[@idx].string)
+ @annotation = nil
+ @idx += 2 # Consume the newline as well.
++ elsif (@idx == @tokens.length and not final) or (final and @tokens[@idx] =~ final)
++ break
+ elsif @tokens[@idx] == "\n"
+ # ignore
+ @idx += 1
diff --git a/user/qt5-qtwebsockets/APKBUILD b/user/qt5-qtwebsockets/APKBUILD
index 70f2ce8f0..f9fce48d9 100644
--- a/user/qt5-qtwebsockets/APKBUILD
+++ b/user/qt5-qtwebsockets/APKBUILD
@@ -1,29 +1,30 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtwebsockets
-_pkgname=qtwebsockets-opensource-src
-pkgver=5.9.7
+_pkgname=qtwebsockets-everywhere
+pkgver=5.15.4
pkgrel=0
-pkgdesc="Qt 5 - Pure Qt implementation of WebSockets"
+pkgdesc="Qt implementation of WebSockets"
url="https://www.qt.io/"
arch="all"
options="!check"
-license="LGPLv2 with exceptions OR GPLv3 with exceptions"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
depends=""
makedepends="qt5-qtbase-dev"
subpackages="$pkgname-dev"
-source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz"
-builddir="$srcdir"/$_pkgname-$pkgver
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz
+ kde-lts.patch
+ "
+builddir="$srcdir"/$_pkgname-src-$pkgver
build() {
- cd "$builddir"
qmake
make
}
package() {
- cd "$builddir"
make install INSTALL_ROOT="$pkgdir"
}
-sha512sums="ee5d1eab254a55791ca7414066c1661614605d6a193305d687aa3321bb69fb59fe6c877153cee1ea4321a91721e42b8fafcaa4cda418c6edc057dc3683c73756 qtwebsockets-opensource-src-5.9.7.tar.xz"
+sha512sums="01714b9927c3a234fac9386a596aa3dc3833d9cfe8cc152892fec969e51b428bed00f501c16b8e4f810452739ff8491e5c64f9b936aa10e1a839c09c8f2832ce qtwebsockets-everywhere-opensource-src-5.15.4.tar.xz
+cbffbd9de347d4c58a38ddb3c50427a96ae08019de90a0035672fe49ce061015873fdb70f491c84ac09dc28871ced851782bae2195b26ce123a135b44a3f1a0b kde-lts.patch"
diff --git a/user/qt5-qtwebsockets/kde-lts.patch b/user/qt5-qtwebsockets/kde-lts.patch
new file mode 100644
index 000000000..aeaabdb14
--- /dev/null
+++ b/user/qt5-qtwebsockets/kde-lts.patch
@@ -0,0 +1,115 @@
+From c905caaecf33c1820eebae34e7b5ef1e71642af0 Mon Sep 17 00:00:00 2001
+From: Allan Sandfeld Jensen <allan.jensen@qt.io>
+Date: Mon, 25 Jan 2021 15:34:22 +0100
+Subject: [PATCH 1/3] Clear frame on reconnect
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Otherwise partial data could leak through to next connection and cause
+odd behavior
+
+* asturmlechner 2021-12-22: Fix conflict with dev branch aeeaa00f
+
+Pick-to: 5.15
+Fixes: QTBUG-88923
+Change-Id: I6c75e6325527379bcdca0b9819a89437d0658893
+Reviewed-by: Alex Blasche <alexander.blasche@qt.io>
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+(cherry picked from commit 9f6449ef1b6d1e7651f181585f1c35d6722bb87a)
+---
+ src/websockets/qwebsocketdataprocessor.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/websockets/qwebsocketdataprocessor.cpp b/src/websockets/qwebsocketdataprocessor.cpp
+index e2cc291..69c4fa8 100644
+--- a/src/websockets/qwebsocketdataprocessor.cpp
++++ b/src/websockets/qwebsocketdataprocessor.cpp
+@@ -269,6 +269,7 @@ void QWebSocketDataProcessor::clear()
+ if (!m_pConverterState)
+ m_pConverterState = new QTextCodec::ConverterState(QTextCodec::ConvertInvalidToNull |
+ QTextCodec::IgnoreHeader);
++ frame.clear();
+ }
+
+ /*!
+--
+2.36.0
+
+From 6b318a2f39942b248574438925e23b46235009b2 Mon Sep 17 00:00:00 2001
+From: Jens Trillmann <jens.trillmann@governikus.de>
+Date: Fri, 26 Feb 2021 13:06:49 +0100
+Subject: [PATCH 2/3] Pass ignoreSslErrors to unterlying QSslSocket
+
+When setting ignoreSslErrors(List<QSslError>) during the sslErrors
+signal handling the call got ignored. Only the internal config for
+creating a QSslSocket would be updated but not the current QSslSocket.
+The request of the caller to ignore specific QSslErrors would be
+ignored.
+
+Pick-to: 5.12 5.15 6.2
+Change-Id: I6aaea2111fe1d26e07e6eaaa7532ae1b14a187a8
+Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
+(cherry picked from commit b13f23d232cfdd372ef812d427872d52eed2337e)
+---
+ src/websockets/qwebsocket_p.cpp | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/websockets/qwebsocket_p.cpp b/src/websockets/qwebsocket_p.cpp
+index aedc3c6..824184a 100644
+--- a/src/websockets/qwebsocket_p.cpp
++++ b/src/websockets/qwebsocket_p.cpp
+@@ -270,6 +270,11 @@ QSslConfiguration QWebSocketPrivate::sslConfiguration() const
+ void QWebSocketPrivate::ignoreSslErrors(const QList<QSslError> &errors)
+ {
+ m_configuration.m_ignoredSslErrors = errors;
++ if (Q_LIKELY(m_pSocket)) {
++ QSslSocket *pSslSocket = qobject_cast<QSslSocket *>(m_pSocket);
++ if (Q_LIKELY(pSslSocket))
++ pSslSocket->ignoreSslErrors(errors);
++ }
+ }
+
+ /*!
+--
+2.36.0
+
+From 6a4991250793cd38efa5e8db858cd49c82439130 Mon Sep 17 00:00:00 2001
+From: Marc Mutz <marc.mutz@qt.io>
+Date: Fri, 17 Dec 2021 09:08:45 +0100
+Subject: [PATCH 3/3] QWebSocketProtocol: fix potential UB (signed overflow) in
+ masking operation
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+The size of the payload is a 64-bit integer, which the loop counts
+down. If the size is > INT_MAX, then we'll overflow the int i used to
+track the current position in the mask.
+
+Fix by using an unsigned integer type instead.
+
+Pick-to: 6.3 6.2 5.15
+Change-Id: Ia3b8d42ae906eb03c1c7399cb1137a08121fcde3
+Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
+(cherry picked from commit 38218494a65049b5f9da7a8aab012a969c7dac86)
+---
+ src/websockets/qwebsocketprotocol.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/websockets/qwebsocketprotocol.cpp b/src/websockets/qwebsocketprotocol.cpp
+index df87a93..d0465f1 100644
+--- a/src/websockets/qwebsocketprotocol.cpp
++++ b/src/websockets/qwebsocketprotocol.cpp
+@@ -210,7 +210,7 @@ void QWebSocketProtocol::mask(char *payload, quint64 size, quint32 maskingKey)
+ quint8((maskingKey & 0x0000FF00u) >> 8),
+ quint8((maskingKey & 0x000000FFu))
+ };
+- int i = 0;
++ quint64 i = 0;
+ while (size-- > 0)
+ *payload++ ^= mask[i++ % 4];
+ }
+--
+2.36.0
+
diff --git a/user/qt5-qtx11extras/APKBUILD b/user/qt5-qtx11extras/APKBUILD
index ed049fe33..269831a27 100644
--- a/user/qt5-qtx11extras/APKBUILD
+++ b/user/qt5-qtx11extras/APKBUILD
@@ -1,29 +1,27 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtx11extras
-_pkgname=qtx11extras-opensource-src
-pkgver=5.9.7
+_pkgname=qtx11extras-everywhere
+pkgver=5.15.4
pkgrel=0
-pkgdesc="Qt 5 - Extra libraries for X11 support"
+pkgdesc="Qt 5 libraries for X11 support"
url="https://www.qt.io/"
arch="all"
options="!check"
-license="LGPLv2 with exceptions OR GPLv3 with exceptions"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
depends=""
makedepends="qt5-qtbase-dev"
subpackages="$pkgname-dev"
-source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz"
-builddir="$srcdir"/$_pkgname-$pkgver
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz"
+builddir="$srcdir"/$_pkgname-src-$pkgver
build() {
- cd "$builddir"
qmake
make
}
package() {
- cd "$builddir"
make install INSTALL_ROOT="$pkgdir"
}
-sha512sums="04803755cabc449dd35c20a5ec7f4836fec5e9f4e28daf8a577e66385e9698139a1ae23a29ade8f0c5a766665a137497eaff3c55746879b9c2fe85c38710d37f qtx11extras-opensource-src-5.9.7.tar.xz"
+sha512sums="79c718eff9daba9ff3f361d38f828f8f3c447b87486d652d4ed1f964ec686259ae4d0a1a50b7b6b9349453ba3f8b56b3c20c8a5f26971d5cc3c8f99d668744d6 qtx11extras-everywhere-opensource-src-5.15.4.tar.xz"
diff --git a/user/qt5-qtxmlpatterns/APKBUILD b/user/qt5-qtxmlpatterns/APKBUILD
index 7885359f2..4d22dc051 100644
--- a/user/qt5-qtxmlpatterns/APKBUILD
+++ b/user/qt5-qtxmlpatterns/APKBUILD
@@ -1,31 +1,29 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=qt5-qtxmlpatterns
-_pkgname=qtxmlpatterns-opensource-src
-pkgver=5.9.7
+_pkgname=qtxmlpatterns-everywhere
+pkgver=5.15.4
pkgrel=0
-pkgdesc="Qt 5 - Support for XPath, XQuery, XSLT, and XML schema validation"
+pkgdesc="Qt support library for XPath, XQuery, XSLT, and XML schema validation"
url="https://www.qt.io/"
arch="all"
-license="LGPL-2.0 with exceptions OR GPL-3.0 with exceptions"
+license="LGPL-3.0-only WITH Qt-LGPL-exception-1.1 OR GPL-3.0-only WITH Qt-GPL-exception-1.0"
+depends=""
makedepends="qt5-qtbase-dev"
subpackages="$pkgname-dev"
-source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-$pkgver.tar.xz"
-builddir="$srcdir"/$_pkgname-$pkgver
+source="https://download.qt.io/official_releases/qt/${pkgver%.*}/$pkgver/submodules/$_pkgname-opensource-src-$pkgver.tar.xz"
+builddir="$srcdir"/$_pkgname-src-$pkgver
build() {
- cd "$builddir"
qmake
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make install INSTALL_ROOT="$pkgdir"
}
-sha512sums="d24f983eaf0414b5b5dbbd8e60cfc87d4d742aae82b457e5d77c01a0534620f30f4507e1c71ce4bbe2a16eeafd6dde566c8d11bccea04c5668189936cc44aca3 qtxmlpatterns-opensource-src-5.9.7.tar.xz"
+sha512sums="fc4b4723407f6a1e765933d9d76ec4ffe874cb4a70e47bc4110def2c4a491b86fa753c33ef31ef95ad1a6eaa3de1fadbc49deb7783d32d8fc2f51672670d5a87 qtxmlpatterns-everywhere-opensource-src-5.15.4.tar.xz"
diff --git a/user/qt5ct/APKBUILD b/user/qt5ct/APKBUILD
index e32542954..9bbec8a55 100644
--- a/user/qt5ct/APKBUILD
+++ b/user/qt5ct/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=qt5ct
-pkgver=0.38
+pkgver=1.8
pkgrel=0
pkgdesc="GUI utility for configuring Qt5"
url="https://sourceforge.net/projects/qt5ct/"
@@ -10,17 +10,15 @@ options="!check" # Test suite requires X11.
license="BSD-2-Clause"
depends=""
makedepends="qt5-qtbase-dev qt5-qtsvg-dev qt5-qttools-dev"
-source="https://sourceforge.net/projects/qt5ct/files/qt5ct-$pkgver.tar.bz2"
+source="$pkgname-$pkgver.tar.bz2::https://master.dl.sourceforge.net/project/$pkgname/$pkgname-$pkgver.tar.bz2?viasf=1"
build() {
- cd "$builddir"
qmake PREFIX=/usr
make
}
package() {
- cd "$builddir"
make INSTALL_ROOT="$pkgdir" install
}
-sha512sums="0c33beca5103f6c01fceabffea50df5798f055b1e530fc084b294917d8bfa6ea78db72385e8941fe92164c682a069b166c69595e2e06bc62be0595a3718a7323 qt5ct-0.38.tar.bz2"
+sha512sums="5417850fb2bad4faaed59c8af61bec04c1ee7fefe8495286571e257b2f68cd417d36439c66fcfac28bb735c753a4ca4cec327b74e97e5ce8c2d4e36b3e4fba28 qt5ct-1.8.tar.bz2"
diff --git a/user/qterminal/APKBUILD b/user/qterminal/APKBUILD
index 906759828..65d836d03 100644
--- a/user/qterminal/APKBUILD
+++ b/user/qterminal/APKBUILD
@@ -1,24 +1,23 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=qterminal
-pkgver=0.14.1
+pkgver=1.4.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="Qt-based terminal for LXQt"
-url="https://lxqt.org/"
+url="https://lxqt.github.io/"
arch="all"
options="!check" # No test suite.
license="GPL-2.0+"
depends=""
-makedepends="cmake extra-cmake-modules lxqt-build-tools>=0.6.0
- qtermwidget-dev>=${pkgver%.*}.0 qt5-qttools-dev kwindowsystem-dev"
+makedepends="cmake extra-cmake-modules lxqt-build-tools>=$_lxqt
+ qtermwidget-dev>=${pkgver%.*} qt5-qttools-dev kwindowsystem-dev"
source="https://github.com/lxqt/qterminal/releases/download/$pkgver/qterminal-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -26,18 +25,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="bb9ac6519236bb834892c1be50bc27f86631b2c7ed60c1ddd4300fedd48f3ea8a08aa453fa03199693486159f667f9391af9491dea5402b4f807ee91e8a6e5cf qterminal-0.14.1.tar.xz"
+sha512sums="95c7fffa0a7a91dae338168748e1a9061eb7d393a083a70c59e3324f78ae8200e1e3bb07aa131564b208068e62fc744cc75e96694d70443559c7205ec9f91121 qterminal-1.4.0.tar.xz"
diff --git a/user/qtermwidget/APKBUILD b/user/qtermwidget/APKBUILD
index 8894829c8..02ee0dd80 100644
--- a/user/qtermwidget/APKBUILD
+++ b/user/qtermwidget/APKBUILD
@@ -1,28 +1,25 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=qtermwidget
-pkgver=0.14.1
+pkgver=1.4.0
+_lxqt=0.13.0
pkgrel=0
pkgdesc="Qt-based terminal widget, used in QTerminal"
-url="https://lxqt.org/"
+url="https://lxqt.github.io/"
arch="all"
options="!check" # No test suite.
license="GPL-2.0+"
depends=""
depends_dev="libutempter-dev"
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qttools-dev
- lxqt-build-tools>=0.6.0 $depends_dev"
+ lxqt-build-tools>=$_lxqt $depends_dev"
subpackages="$pkgname-dev"
-source="https://github.com/lxqt/qtermwidget/releases/download/$pkgver/qtermwidget-$pkgver.tar.xz
- fix-linking.patch
- "
+source="https://github.com/lxqt/qtermwidget/releases/download/$pkgver/qtermwidget-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -31,19 +28,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DQTERMWIDGET_USE_UTEMPTER=True \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="6b6d4abd6fc21f10f5323321f26132c0ff5b9682d09a086e265e57976deb60fca8db9a9906a29a0ed8d0e7b83417d5852df55d0118936d5f7a1342a9c2cb6410 qtermwidget-0.14.1.tar.xz
-f2d43f12479a3a3a01be9ebee9ce349b0f4e60b07dfc79e8666ed913d5682987f81b08a397ee8ca628c36f5770ddfe63f5abafa94dff6c1c1e090adc1637af35 fix-linking.patch"
+sha512sums="b688290eff52bd77e4a9f342062b52bf7a03a8ba66fc86583875472d0c0b0414d59ea0ad6cde64117cc49061944eacd17950724b23f74bb6ada4995917a094bc qtermwidget-1.4.0.tar.xz"
diff --git a/user/qtermwidget/fix-linking.patch b/user/qtermwidget/fix-linking.patch
deleted file mode 100644
index d084fd6f8..000000000
--- a/user/qtermwidget/fix-linking.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- qtermwidget-0.9.0/CMakeLists.txt.old 2018-05-21 17:44:20.000000000 +0000
-+++ qtermwidget-0.9.0/CMakeLists.txt 2018-07-27 05:39:37.390000000 +0000
-@@ -172,7 +172,7 @@
- target_compile_definitions(${QTERMWIDGET_LIBRARY_NAME} PRIVATE
- "HAVE_UTEMPTER"
- )
-- target_link_libraries(${QTERMWIDGET_LIBRARY_NAME} ulog)
-+ target_link_libraries(${QTERMWIDGET_LIBRARY_NAME} utempter)
- endif()
- endif()
-
diff --git a/user/qtkeychain/APKBUILD b/user/qtkeychain/APKBUILD
index e3e861748..3c416d41f 100644
--- a/user/qtkeychain/APKBUILD
+++ b/user/qtkeychain/APKBUILD
@@ -1,21 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=qtkeychain
-pkgver=0.9.1
+pkgver=0.12.0
pkgrel=0
pkgdesc="Platform-independent Qt-based API for storing passwords securely"
url="https://github.com/frankosterfeld/qtkeychain"
arch="all"
-options="!check" # no tests
+options="!check" # No test suite.
license="BSD-3-Clause"
-depends_dev=""
+depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qttools-dev"
-install=""
subpackages="$pkgname-dev"
source="qtkeychain-$pkgver.tar.gz::https://github.com/frankosterfeld/qtkeychain/archive/v$pkgver.tar.gz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -26,23 +24,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
-check() {
- cd "$builddir"
- make check
-}
-
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="c80bd25a5b72c175d0d4a985b952924c807bf67be33eeb89e2b83757727e642c10d8d737cea9744d2faad74c50c1b55d82b306135559c35c91a088c3b198b33a qtkeychain-0.9.1.tar.gz"
+sha512sums="ad8f7b3e8f59894a09892aeb78118f5ed93aa4593eece782c1879a4f3c37d9d63e8d40ad4b2e6a2e286e0da39f45cd4ed46181a1a05c078a59134114b2456a03 qtkeychain-0.12.0.tar.gz"
diff --git a/user/qtxdg-tools/APKBUILD b/user/qtxdg-tools/APKBUILD
new file mode 100644
index 000000000..5e11b6b30
--- /dev/null
+++ b/user/qtxdg-tools/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=qtxdg-tools
+pkgver=3.12.0
+_lxqt=0.13.0
+pkgrel=0
+pkgdesc="Userland utilities for LXQt"
+url="https://lxqt-project.org/"
+arch="all"
+license="LGPL-2.1+"
+depends=""
+makedepends="cmake lxqt-build-tools>=$_lxqt libqtxdg-dev>=${pkgver%.0}"
+source="https://github.com/lxqt/qtxdg-tools/releases/download/$pkgver/qtxdg-tools-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ mkdir build && cd build
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ ..
+ make
+}
+
+check() {
+ cd build
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ cd build
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="a9b2f76bd732da4c13b6d4c5716be57a67c3197fad214d04d324d3f39500726754deb0fdde42fb2b5f04407932b3ea63a5dfb5e9588144ea801572efa59aecb5 qtxdg-tools-3.12.0.tar.xz"
diff --git a/user/quassel/APKBUILD b/user/quassel/APKBUILD
index 695fd4e4b..dbea3d65e 100644
--- a/user/quassel/APKBUILD
+++ b/user/quassel/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=quassel
-pkgver=0.13.1
-pkgrel=0
+pkgver=0.14.0
+pkgrel=1
pkgdesc="Modern, cross-platform IRC client"
url="https://quassel-irc.org/"
arch="all"
@@ -11,9 +11,10 @@ depends="$pkgname-client $pkgname-core"
makedepends="qt5-qtbase-dev qt5-qtmultimedia-dev libdbusmenu-qt-dev sonnet-dev
extra-cmake-modules kconfigwidgets-dev kcoreaddons-dev kxmlgui-dev
knotifications-dev knotifyconfig-dev ktextwidgets-dev qt5-qtscript-dev
- kwidgetsaddons-dev qca-dev qt5-qttools-dev zlib-dev libexecinfo-dev"
+ kwidgetsaddons-dev qca-dev qt5-qttools-dev zlib-dev libexecinfo-dev
+ cmake boost-dev"
langdir="/usr/share/quassel/translations"
-subpackages="$pkgname-core $pkgname-client $pkgname-lang"
+subpackages="$pkgname-core $pkgname-client $pkgname-lang $pkgname-libs"
source="https://quassel-irc.org/pub/quassel-$pkgver.tar.bz2"
# secfixes:
@@ -22,7 +23,6 @@ source="https://quassel-irc.org/pub/quassel-$pkgver.tar.bz2"
# - CVE-2018-1000179
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -36,17 +36,15 @@ build() {
-DUSE_QT5=ON \
-DWITH_KDE=ON \
-DWITH_WEBENGINE=OFF \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -56,8 +54,7 @@ client() {
mkdir -p "$subpkgdir"/usr/bin
mv "$pkgdir"/usr/bin/quasselclient "$subpkgdir"/usr/bin/
- local dir
- for dir in {applications,icons,pixmaps,knotifications5}; do
+ for dir in applications icons knotifications5; do
mkdir -p "$subpkgdir"/usr/share/$dir
mv "$pkgdir"/usr/share/$dir "$subpkgdir"/usr/share/
done
@@ -65,13 +62,38 @@ client() {
mkdir -p "$subpkgdir"/usr/share/quassel
mv "$pkgdir"/usr/share/quassel/stylesheets \
"$subpkgdir"/usr/share/quassel/
+ mv "$pkgdir"/usr/share/quassel/icons \
+ "$subpkgdir"/usr/share/quassel/
+
+ mkdir -p "$subpkgdir"/usr/lib
+ for component in client qtui uisupport; do
+ mv "$pkgdir"/usr/lib/libquassel-$component.* \
+ "$subpkgdir"/usr/lib/
+ done
}
core() {
pkgdesc="Modern, cross-platform IRC daemon (core only)"
depends=""
+
mkdir -p "$subpkgdir"/usr/bin
mv "$pkgdir"/usr/bin/quasselcore "$subpkgdir"/usr/bin/
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libquassel-core* "$subpkgdir"/usr/lib/
+}
+
+libs() {
+ pkgdesc="Modern, cross-platform IRC daemon (libraries)"
+ depends=""
+
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/libquassel-common* "$subpkgdir"/usr/lib/
+
+ mkdir -p "$subpkgdir"/usr/share/quassel
+ for component in networks.ini scripts; do
+ mv "$pkgdir"/usr/share/quassel/$component \
+ "$subpkgdir"/usr/share/quassel/
+ done
}
-sha512sums="4ed55e81b1638c8851ddae5d9c9d23a1c2cea92f307e19f426873c2600d8e183898d3ed7c290f2ea5d1b8c5e1be7f9ffcc3e8c3c0193d080fc879b10cc3a962c quassel-0.13.1.tar.bz2"
+sha512sums="ea6b9723acab5ce73f760692770c1340c03bf277d2c99a2520345bfb6a7bb6fdc64a01dccfd7026341b46ee727821e1bcc2f487be72dfbc155f1de1ad264763f quassel-0.14.0.tar.bz2"
diff --git a/user/quaternion/APKBUILD b/user/quaternion/APKBUILD
index 47ad7253b..cb9dc25cf 100644
--- a/user/quaternion/APKBUILD
+++ b/user/quaternion/APKBUILD
@@ -1,18 +1,19 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=quaternion
-pkgver=0.0.9.4_rc2
+pkgver=0.0.9.4e
+_pkgver=$(printf '%s' "$pkgver" | sed 's/_/-/')
pkgrel=0
pkgdesc="Qt5-based Matrix chat client"
url="https://matrix.org/docs/projects/client/quaternion.html"
arch="all"
license="GPL-3.0+"
depends="qt5-qtquickcontrols"
-makedepends="cmake libqmatrixclient-dev qt5-qtbase-dev qt5-qtdeclarative-dev
+makedepends="cmake libquotient-dev qt5-qtbase-dev qt5-qtdeclarative-dev
qt5-qtmultimedia-dev qt5-qttools-dev"
subpackages=""
-source="quaternion-$pkgver.tar.gz::https://github.com/QMatrixClient/Quaternion/archive/${pkgver/_/-}.tar.gz"
-builddir="$srcdir/Quaternion-${pkgver/_/-}"
+source="quaternion-$pkgver.tar.gz::https://github.com/QMatrixClient/Quaternion/archive/$_pkgver.tar.gz"
+builddir="$srcdir/Quaternion-$_pkgver"
build() {
if [ "$CBUILD" != "$CHOST" ]; then
@@ -24,7 +25,7 @@ build() {
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
@@ -36,4 +37,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="543e760fb92ed8a94f124ba6b7de93633a2e074c977ffb5227e17251ac1b483978ef7c54ccbcf3662d0ffb7fa5dd0a418a10bc9360072a58fe3f3dc38cf6dd47 quaternion-0.0.9.4_rc2.tar.gz"
+sha512sums="5478892b7dce96a60f1429ee6dff9dd0b4fbb89bf45ecc2e499ee90f615af4de12d1de0002804420a85a21a6ba533e4799c94d2411067cb7d7aacca183d9d981 quaternion-0.0.9.4e.tar.gz"
diff --git a/user/quazip/APKBUILD b/user/quazip/APKBUILD
new file mode 100644
index 000000000..875541002
--- /dev/null
+++ b/user/quazip/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=quazip
+pkgver=0.9.1
+pkgrel=0
+pkgdesc="Qt ZIP archive library"
+url="https://stachenov.github.io/quazip/"
+arch="all"
+license="LGPL-2.1-only WITH Static-linking-exception"
+depends=""
+makedepends="cmake qt5-qtbase-dev zlib-dev"
+subpackages="$pkgname-dev"
+source="quazip-$pkgver.tar.gz::https://github.com/stachenov/quazip/archive/v$pkgver.tar.gz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="db31f3c7e3d7e95c25090ceb8379643e0b49ed69ece009dd015bee120b2b60f42e73408f580caed3138fa19ca64dcd23a05f16435abb54e2b8df21105c7b42c0 quazip-0.9.1.tar.gz"
diff --git a/user/r/APKBUILD b/user/r/APKBUILD
index 67e0482c7..25d44ef4d 100644
--- a/user/r/APKBUILD
+++ b/user/r/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=r
-pkgver=3.5.1
+pkgver=4.2.3
pkgrel=1
pkgdesc="Environment for statistical computing and graphics"
url="https://www.r-project.org/"
@@ -13,11 +13,12 @@ makedepends="byacc bzip2-dev cairo-dev curl-dev gfortran icu-dev libice-dev
libtirpc-dev libx11-dev libxt-dev pango-dev pcre-dev pcre2-dev xz-dev
zlib-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://rweb.crmda.ku.edu/cran/src/base/R-3/R-$pkgver.tar.gz"
+source="https://cran.r-project.org/src/base/R-${pkgver%%.*}/R-$pkgver.tar.gz
+ curl-8-support.patch
+ "
builddir="$srcdir/R-$pkgver"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,13 +33,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="382cc6e200469dd168799948edcf3a0b869d7ef3b3176fdfc60752f3f37e6ba356323c47d8815a4d9ab6ad3a21cd045d26ef5e75107c8685328e0ffcfd172f7f R-3.5.1.tar.gz"
+sha512sums="060bb4e1d1f1a5a0383a3b4372ac9247c0a20285020da17cebeb40ddc54da12d5f369ea243ea04d2c6970986fe22b3f9c37fbdfb3405cd8aa4f2353091ea9c5c R-4.2.3.tar.gz
+051dcaae4f082e8e6138a748dcf880aa0d6f8ee371025f3b09068f21530be36271a69cf2f5973c2f0832c4c865b9425c62bbeb59a2243a8ddff05969a743ddf8 curl-8-support.patch"
diff --git a/user/r/curl-8-support.patch b/user/r/curl-8-support.patch
new file mode 100644
index 000000000..f70960691
--- /dev/null
+++ b/user/r/curl-8-support.patch
@@ -0,0 +1,62 @@
+This patch differs from upstream in the following ways:
+
+ * it does not modify doc/manual/R-admin.texi
+
+From da6638896413bcbb5970b2335b92582853f94e3c Mon Sep 17 00:00:00 2001
+From: ripley <ripley@00db46b3-68df-0310-9c12-caf00c1e9a41>
+Date: Sat, 25 Mar 2023 09:01:30 +0000
+Subject: [PATCH] allow libcurl 8 as its API/ABI is said to be unchanged
+
+git-svn-id: https://svn.r-project.org/R/trunk@84049 00db46b3-68df-0310-9c12-caf00c1e9a41
+---
+ configure | 6 +++---
+ doc/manual/R-admin.texi | 13 ++++++-------
+ m4/R.m4 | 4 ++--
+ 3 files changed, 11 insertions(+), 12 deletions(-)
+
+diff --git a/configure b/configure
+index c71e78d5017..f5e8e4992f7 100755
+--- a/configure
++++ b/configure
+@@ -51680,8 +51680,8 @@ fi
+ done
+
+ if test "x${have_libcurl}" = "xyes"; then
+-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libcurl is version 7 and >= 7.28.0" >&5
+-printf %s "checking if libcurl is version 7 and >= 7.28.0... " >&6; }
++{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if libcurl is >= 7.28.0" >&5
++printf %s "checking if libcurl is >= 7.28.0... " >&6; }
+ if test ${r_cv_have_curl728+y}
+ then :
+ printf %s "(cached) " >&6
+@@ -51699,7 +51699,7 @@ int main(void)
+ {
+ #ifdef LIBCURL_VERSION_MAJOR
+ #if LIBCURL_VERSION_MAJOR > 7
+- exit(1);
++ exit(0);
+ #elif LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR >= 28
+ exit(0);
+ #else
+diff --git a/m4/R.m4 b/m4/R.m4
+index 214dc1a8c7d..c4b9aa8f1c1 100644
+--- a/m4/R.m4
++++ b/m4/R.m4
+@@ -4620,7 +4620,7 @@ LIBS="${CURL_LIBS} ${LIBS}"
+ AC_CHECK_HEADERS(curl/curl.h, [have_libcurl=yes], [have_libcurl=no])
+
+ if test "x${have_libcurl}" = "xyes"; then
+-AC_CACHE_CHECK([if libcurl is version 7 and >= 7.28.0], [r_cv_have_curl728],
++AC_CACHE_CHECK([if libcurl is >= 7.28.0], [r_cv_have_curl728],
+ [AC_RUN_IFELSE([AC_LANG_SOURCE([[
+ #include <stdlib.h>
+ #include <curl/curl.h>
+@@ -4628,7 +4628,7 @@ int main(void)
+ {
+ #ifdef LIBCURL_VERSION_MAJOR
+ #if LIBCURL_VERSION_MAJOR > 7
+- exit(1);
++ exit(0);
+ #elif LIBCURL_VERSION_MAJOR == 7 && LIBCURL_VERSION_MINOR >= 28
+ exit(0);
+ #else
diff --git a/user/ragel/APKBUILD b/user/ragel/APKBUILD
index 9ecfbe587..809e2ff26 100644
--- a/user/ragel/APKBUILD
+++ b/user/ragel/APKBUILD
@@ -9,14 +9,11 @@ arch="all"
options="!check" # no tests
license="GPL-2.0+"
depends=""
-depends_dev=""
-makedepends="$depends_dev"
-install=""
+makedepends=""
subpackages="$pkgname-doc"
source="http://www.colm.net/files/ragel/ragel-$pkgver.tar.gz"
build() {
- cd "$builddir"
export CXXFLAGS="$CXXFLAGS -std=gnu++98"
./configure \
--build=$CBUILD \
@@ -26,13 +23,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install || return 1
+ make DESTDIR="$pkgdir" install
}
sha512sums="6c1fe4f6fa8546ae28b92ccfbae94355ff0d3cea346b9ae8ce4cf6c2bdbeb823e0ccd355332643ea72d3befd533a8b3030ddbf82be7ffa811c2c58cbb01aaa38 ragel-6.10.tar.gz"
diff --git a/user/range-v3/APKBUILD b/user/range-v3/APKBUILD
new file mode 100644
index 000000000..84c9f8091
--- /dev/null
+++ b/user/range-v3/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=range-v3
+pkgver=0.12.0
+pkgrel=0
+pkgdesc="Range library for C++"
+url="http://ericniebler.com/2018/12/05/standard-ranges/"
+arch="noarch"
+license="BSL-1.0 AND NCSA AND MIT"
+depends=""
+makedepends="cmake doxygen"
+subpackages=""
+source="range-v3-$pkgver.tar.gz::https://github.com/ericniebler/range-v3/archive/$pkgver.tar.gz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="b8b632b8e0f2a3234ef61813212c237f648cd741e816ca57bd86f82f6459f7d755e2b70361d2aa43847874fb546a31a792ab1c3ba90292818ae7313438dc62d0 range-v3-0.12.0.tar.gz"
diff --git a/user/raptor2/APKBUILD b/user/raptor2/APKBUILD
index e092e2e64..2f10958cd 100644
--- a/user/raptor2/APKBUILD
+++ b/user/raptor2/APKBUILD
@@ -1,18 +1,22 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=raptor2
pkgver=2.0.15
-pkgrel=1
+pkgrel=3
pkgdesc="RDF parser/serializer toolkit for Redland"
-url="http://www.librdf.org/raptor"
+url="https://www.librdf.org/raptor"
arch="all"
license="Public-Domain AND (LGPL-2.1+ OR GPL-2.0+ OR Apache-2.0+)"
depends=""
depends_dev="curl-dev libxml2-dev libxslt-dev yajl-dev"
-makedepends="$depends_dev"
+makedepends="$depends_dev autoconf automake libtool gtk-doc"
subpackages="$pkgname-dev $pkgname-doc"
-source="http://download.librdf.org/source/$pkgname-$pkgver.tar.gz"
+source="https://download.librdf.org/source/$pkgname-$pkgver.tar.gz
+ CVE-2017-18926.patch
+ CVE-2020-25713.patch
+ fix-checked-field-issue.patch
+ "
prepare() {
default_prepare
@@ -21,7 +25,6 @@ prepare() {
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -35,15 +38,16 @@ build() {
}
check() {
- cd "$builddir"
# Note: some tests are shown as FAIL but they are actually XFAIL :)
# As long as the return status is zero we are fine
make check -j1
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="563dd01869eb4df8524ec12e2c0a541653874dcd834bd1eb265bc2943bb616968f624121d4688579cdce11b4f00a8ab53b7099f1a0850e256bb0a2c16ba048ee raptor2-2.0.15.tar.gz"
+sha512sums="563dd01869eb4df8524ec12e2c0a541653874dcd834bd1eb265bc2943bb616968f624121d4688579cdce11b4f00a8ab53b7099f1a0850e256bb0a2c16ba048ee raptor2-2.0.15.tar.gz
+82f2f7ea4b72aa2bf444013a81db3cb17fcce2ae650bdb22eaab00d6d5cf7f950f7a550ffff49348db878f90f2753b407e6026d08d543cd0757c1687c6dad159 CVE-2017-18926.patch
+6e7297bb786dd490202f9790e148b298380c1e47faa4970cb7efcd85fcea99eaa5f53e1c66627be9f7f42f6f27a3b1df94357c9db51abf8ed14727343d584f08 CVE-2020-25713.patch
+97ab7b8be0471d2b123603a2cf60a07508dcdacc0a14965dcf4dfe42a1b57e8baecd3488471aac7cd39d203cefbbc966c8ec492cfaafda62ebf2c80bf6c85f34 fix-checked-field-issue.patch"
diff --git a/user/raptor2/CVE-2017-18926.patch b/user/raptor2/CVE-2017-18926.patch
new file mode 100644
index 000000000..be61b0d65
--- /dev/null
+++ b/user/raptor2/CVE-2017-18926.patch
@@ -0,0 +1,40 @@
+From 590681e546cd9aa18d57dc2ea1858cb734a3863f Mon Sep 17 00:00:00 2001
+From: Dave Beckett <dave@dajobe.org>
+Date: Sun, 16 Apr 2017 23:15:12 +0100
+Subject: [PATCH] Calcualte max nspace declarations correctly for XML writer
+
+(raptor_xml_writer_start_element_common): Calculate max including for
+each attribute a potential name and value.
+
+Fixes Issues #0000617 http://bugs.librdf.org/mantis/view.php?id=617
+and #0000618 http://bugs.librdf.org/mantis/view.php?id=618
+---
+ src/raptor_xml_writer.c | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/src/raptor_xml_writer.c b/src/raptor_xml_writer.c
+index 693b94686..0d3a36a5a 100644
+--- a/src/raptor_xml_writer.c
++++ b/src/raptor_xml_writer.c
+@@ -181,9 +181,10 @@ raptor_xml_writer_start_element_common(raptor_xml_writer* xml_writer,
+ size_t nspace_declarations_count = 0;
+ unsigned int i;
+
+- /* max is 1 per element and 1 for each attribute + size of declared */
+ if(nstack) {
+- int nspace_max_count = element->attribute_count+1;
++ int nspace_max_count = element->attribute_count * 2; /* attr and value */
++ if(element->name->nspace)
++ nspace_max_count++;
+ if(element->declared_nspaces)
+ nspace_max_count += raptor_sequence_size(element->declared_nspaces);
+ if(element->xml_language)
+@@ -237,7 +238,7 @@ raptor_xml_writer_start_element_common(raptor_xml_writer* xml_writer,
+ }
+ }
+
+- /* Add the attribute + value */
++ /* Add the attribute's value */
+ nspace_declarations[nspace_declarations_count].declaration=
+ raptor_qname_format_as_xml(element->attributes[i],
+ &nspace_declarations[nspace_declarations_count].length);
diff --git a/user/raptor2/CVE-2020-25713.patch b/user/raptor2/CVE-2020-25713.patch
new file mode 100644
index 000000000..6eb8251bb
--- /dev/null
+++ b/user/raptor2/CVE-2020-25713.patch
@@ -0,0 +1,29 @@
+From 4f5dbbffcc1c6cf0398bd03450453289a0979dea Mon Sep 17 00:00:00 2001
+From: Dave Beckett <dave@dajobe.org>
+Date: Sat, 18 Sep 2021 17:40:00 -0700
+Subject: [PATCH] XML Writer : compare namespace declarations correctly
+
+Apply patch from
+0001-CVE-2020-25713-raptor2-malformed-input-file-can-lead.patch.1
+that fixes Issue#0000650 https://bugs.librdf.org/mantis/view.php?id=650
+which overwrote heap during XML writing in parse type literal
+content. This was detected with clang asan.
+
+Thanks to Michael Stahl / mst2 for the fix.
+---
+ src/raptor_xml_writer.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/raptor_xml_writer.c b/src/raptor_xml_writer.c
+index 56993dc38..4426d38cf 100644
+--- a/src/raptor_xml_writer.c
++++ b/src/raptor_xml_writer.c
+@@ -227,7 +227,7 @@ raptor_xml_writer_start_element_common(raptor_xml_writer* xml_writer,
+
+ /* check it wasn't an earlier declaration too */
+ for(j = 0; j < nspace_declarations_count; j++)
+- if(nspace_declarations[j].nspace == element->attributes[j]->nspace) {
++ if(nspace_declarations[j].nspace == element->attributes[i]->nspace) {
+ declare_me = 0;
+ break;
+ }
diff --git a/user/raptor2/fix-checked-field-issue.patch b/user/raptor2/fix-checked-field-issue.patch
new file mode 100644
index 000000000..23f7fb1a7
--- /dev/null
+++ b/user/raptor2/fix-checked-field-issue.patch
@@ -0,0 +1,19 @@
+diff --git a/src/raptor_libxml.c b/src/raptor_libxml.c
+index 538c2c8e..8bcee139 100644
+--- a/src/raptor_libxml.c
++++ b/src/raptor_libxml.c
+@@ -246,10 +246,11 @@ raptor_libxml_getEntity(void* user_data, const xmlChar *name)
+
+ ret->owner = 1;
+
+-#if LIBXML_VERSION >= 20627
++#if LIBXML_VERSION >= 20627 && LIBXML_VERSION < 21100
+ /* Checked field was released in 2.6.27 on 2006-10-25
+ * http://git.gnome.org/browse/libxml2/commit/?id=a37a6ad91a61d168ecc4b29263def3363fff4da6
+ *
++ * and was later removed in version 2.11.0
+ */
+
+ /* Mark this entity as having been checked - never do this again */
+--
+2.41.0
diff --git a/user/rarian/APKBUILD b/user/rarian/APKBUILD
index c3722414e..227d32230 100644
--- a/user/rarian/APKBUILD
+++ b/user/rarian/APKBUILD
@@ -14,13 +14,11 @@ source="https://download.gnome.org/sources/$pkgname/0.8/$pkgname-$pkgver.tar.bz2
user-segfault.patch"
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,7 +31,6 @@ build() {
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
}
diff --git a/user/rasqal/APKBUILD b/user/rasqal/APKBUILD
index ddeb6bd5e..943e525ac 100644
--- a/user/rasqal/APKBUILD
+++ b/user/rasqal/APKBUILD
@@ -1,4 +1,4 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=rasqal
@@ -20,7 +20,6 @@ prepare() {
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -34,12 +33,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/rc/APKBUILD b/user/rc/APKBUILD
index fb05794e6..0211e3fed 100644
--- a/user/rc/APKBUILD
+++ b/user/rc/APKBUILD
@@ -4,16 +4,16 @@ pkgname=rc
pkgver=1.7.4
pkgrel=0
pkgdesc="Reimplementation of the Plan 9 shell"
-url="http://tobold.org/article/rc"
+url="http://static.tobold.org/rc"
arch="all"
license="Zlib"
depends=""
makedepends="libedit-dev"
subpackages="$pkgname-doc"
-source="http://static.tobold.org/$pkgname/$pkgname-$pkgver.tar.gz"
+#source="http://static.tobold.org/$pkgname/$pkgname-$pkgver.tar.gz"
+source="https://distfiles.adelielinux.org/source/upstream/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,12 +26,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
mkdir ${pkgdir}/usr/share/man
mv ${pkgdir}/usr/share/man1 ${pkgdir}/usr/share/man
diff --git a/user/rdesktop/APKBUILD b/user/rdesktop/APKBUILD
index 2bdffb3c5..4a67f7c6f 100644
--- a/user/rdesktop/APKBUILD
+++ b/user/rdesktop/APKBUILD
@@ -1,32 +1,26 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=rdesktop
-pkgver=1.8.4
-pkgrel=1
+pkgver=1.9.0
+pkgrel=0
pkgdesc="Remote Desktop Protocol client"
url="https://www.rdesktop.org/"
arch="all"
options="!check" # No test suite.
license="GPL-3.0-only"
depends=""
-makedepends="alsa-lib-dev krb5-dev libice-dev libsamplerate-dev libx11-dev
- libxrandr-dev openssl-dev"
+makedepends="alsa-lib-dev krb5-dev libice-dev libsamplerate-dev libtasn1-dev
+ libx11-dev libxcursor-dev libxrandr-dev nettle-dev gnutls-dev bash"
subpackages="$pkgname-doc"
-source="https://github.com/rdesktop/rdesktop/releases/download/v$pkgver/rdesktop-$pkgver.tar.gz
- gssapi.patch
- signed-int.patch
- "
+source="https://github.com/rdesktop/rdesktop/releases/download/v$pkgver/rdesktop-$pkgver.tar.gz"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
- ./bootstrap
}
build() {
- cd "$builddir"
- ./configure \
+ bash ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -38,15 +32,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="9e4f6723eb0baab31ad11f1c5c29a4753c655386c2381d01646b7834c959ffc2ec1e0c2f3f73626255aa018889709758d97387c7563da98bb1b7f269610929ae rdesktop-1.8.4.tar.gz
-ae91f4e0eb1e2c3141aedef660eb89628b334155c8c0559805cc4ac75274fff94101daf665052b27fe5074ce7468ff854fab865e7efd377d08d525319c7aa150 gssapi.patch
-e8b4af70a54944d83b7c899aa680042f559e75af3e9a3deb2c7395f8b4a56e50d1c2f26bd10b2377ff577115d635c2aa0fdbddf995588f1d492badfc3e72456e signed-int.patch"
+sha512sums="e101147b496ae70118c2756bf120007d4748aad9d9917d9ebc0878ffaf35764500861c548ef0528722777555c78e1d3d146b6f3691daa2b8657b0d3a541094f5 rdesktop-1.9.0.tar.gz"
diff --git a/user/rdesktop/gssapi.patch b/user/rdesktop/gssapi.patch
deleted file mode 100644
index 5befcf02e..000000000
--- a/user/rdesktop/gssapi.patch
+++ /dev/null
@@ -1,82 +0,0 @@
-From 71f1cfb909c0a955632001cf9fad80a321a43372 Mon Sep 17 00:00:00 2001
-From: Pierre Ossman <ossman@cendio.se>
-Date: Mon, 10 Jul 2017 15:12:26 +0200
-Subject: [PATCH 1/2] Fix pointer types for gss_wrap()/gss_unrap()
-
-We were using the incorrect type for the context for these two calls.
-No practical effects, but some noise from the compiler about the wrong
-pointer type.
----
- cssp.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/cssp.c b/cssp.c
-index 9f4c0829..6ac37746 100644
---- a/cssp.c
-+++ b/cssp.c
-@@ -173,7 +173,7 @@ cssp_gss_get_service_name(char *server, gss_name_t * name)
- }
-
- static RD_BOOL
--cssp_gss_wrap(gss_ctx_id_t * ctx, STREAM in, STREAM out)
-+cssp_gss_wrap(gss_ctx_id_t ctx, STREAM in, STREAM out)
- {
- int conf_state;
- OM_uint32 major_status;
-@@ -212,7 +212,7 @@ cssp_gss_wrap(gss_ctx_id_t * ctx, STREAM in, STREAM out)
- }
-
- static RD_BOOL
--cssp_gss_unwrap(gss_ctx_id_t * ctx, STREAM in, STREAM out)
-+cssp_gss_unwrap(gss_ctx_id_t ctx, STREAM in, STREAM out)
- {
- OM_uint32 major_status;
- OM_uint32 minor_status;
-
-From b556651fe109c8802a0c798b8a680e5ff883bf4e Mon Sep 17 00:00:00 2001
-From: Pierre Ossman <ossman@cendio.se>
-Date: Mon, 10 Jul 2017 15:14:01 +0200
-Subject: [PATCH 2/2] Use standard GSSAPI rather than libgssglue
-
-That project is abandoned and the distributions aren't including
-it anymore.
----
- configure.ac | 15 ++++-----------
- 1 file changed, 4 insertions(+), 11 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index e045c409..a969ad5d 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -122,27 +122,20 @@ fi
-
- dnl CredSSP feature
- AC_ARG_ENABLE([credssp], AS_HELP_STRING([--disable-credssp], [disable support for CredSSP]))
--AC_ARG_ENABLE([static-gssglue], AS_HELP_STRING([--enable-static-gssglue]),
-- [static_gssglue=yes], [static_gssglue=no])
- AS_IF([test "x$enable_credssp" != "xno"], [
- if test -n "$PKG_CONFIG"; then
-- PKG_CHECK_MODULES(GSSGLUE, libgssglue, [WITH_CREDSSP=1], [WITH_CREDSSP=0])
-+ PKG_CHECK_MODULES(GSSAPI, krb5-gssapi, [WITH_CREDSSP=1], [WITH_CREDSSP=0])
- fi
-
- if test x"$WITH_CREDSSP" = "x1"; then
- CREDSSPOBJ="cssp.o"
-- CFLAGS="$CFLAGS $GSSGLUE_CFLAGS"
--
-- AS_IF([test "x$static_gssglue" != "xno"], [
-- LIBS="$LIBS -Wl,-Bstatic -lgssglue -Wl,-Bdynamic"
-- ], [
-- LIBS="$LIBS -lgssglue"
-- ])
-+ CFLAGS="$CFLAGS $GSSAPI_CFLAGS"
-+ LIBS="$LIBS $GSSAPI_LIBS"
-
- AC_DEFINE(WITH_CREDSSP)
- else
- echo
-- echo "CredSSP support requires libgssglue, install the dependency"
-+ echo "CredSSP support requires GSSAPI, install the dependency"
- echo "or disable the feature using --disable-credssp."
- echo
- exit 1
diff --git a/user/rdesktop/signed-int.patch b/user/rdesktop/signed-int.patch
deleted file mode 100644
index 405a4dd3e..000000000
--- a/user/rdesktop/signed-int.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- rdesktop-1.8.4/orders.c.old 2019-01-02 14:03:25.000000000 +0000
-+++ rdesktop-1.8.4/orders.c 2019-01-09 17:13:26.170000000 +0000
-@@ -1266,7 +1266,7 @@
- in_uint16_le(s, flags); /* used by bmpcache2 */
- in_uint8(s, type);
-
-- if (!s_check_rem(s, length + 7))
-+ if (!s_check_rem(s, (sint16) length + 7))
- {
- rdp_protocol_error("process_secondary_order(), next order pointer would overrun stream", &packet);
- }
diff --git a/user/rdfind/APKBUILD b/user/rdfind/APKBUILD
new file mode 100644
index 000000000..593bf3cf2
--- /dev/null
+++ b/user/rdfind/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=rdfind
+pkgver=1.6.0
+pkgrel=0
+pkgdesc="A tool for finding duplicate files"
+url="https://rdfind.pauldreik.se/"
+arch="all"
+license="GPL-2.0+"
+depends=""
+checkdepends="cmd:which"
+makedepends="nettle-dev"
+subpackages="$pkgname-doc"
+source="https://rdfind.pauldreik.se/rdfind-$pkgver.tar.gz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="21d135551bd2d71a71dfe1e4faece6e980db3df18f34433b7b0a5da9e21ccc9067337892025afa9b4b1fd6069732a144b5b7b8e0441cbc9821a71a8b934cced1 rdfind-1.6.0.tar.gz"
diff --git a/user/re2c/APKBUILD b/user/re2c/APKBUILD
index 703bcacdd..3293c610d 100644
--- a/user/re2c/APKBUILD
+++ b/user/re2c/APKBUILD
@@ -1,18 +1,25 @@
# Contributor: Jeff Bilyk <jbilyk at gmail>
# Maintainer:
pkgname=re2c
-pkgver=1.1.1
+pkgver=2.0.3
pkgrel=0
pkgdesc="Fast lexer generator for C and C++"
url="http://re2c.org/"
arch="all"
license="Public-Domain"
+depends=""
checkdepends="bash"
+makedepends=""
subpackages="$pkgname-doc"
-source="https://github.com/skvadrik/re2c/releases/download/$pkgver/$pkgname-$pkgver.tar.gz"
+source="https://github.com/skvadrik/re2c/releases/download/$pkgver/$pkgname-$pkgver.tar.xz
+ "
+
+# secfixes:
+# 1.3-r1:
+# - CVE-2020-11958
+
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -24,13 +31,11 @@ build() {
}
check() {
- cd "$builddir"
make tests
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="a6fe73611103588043748340976f0e6d07169a6546cb80627c0ccd2ceac83f362dbbf371530361d893537fd95deb19503b2c73c41ed40efe7787210d6c757397 re2c-1.1.1.tar.gz"
+sha512sums="893c533e9847a6236d55ae65e413ddc48b7531b89f5552a3ad79beeac079317ceca4c35710f3c2d88a6de5a3c0a5070a24a8cffb1b4277578a41697ea0e3bf8c re2c-2.0.3.tar.xz"
diff --git a/user/readstat/APKBUILD b/user/readstat/APKBUILD
new file mode 100644
index 000000000..1ce3b3249
--- /dev/null
+++ b/user/readstat/APKBUILD
@@ -0,0 +1,45 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=readstat
+pkgver=1.1.9
+pkgrel=0
+pkgdesc="Command-line tool for converting stats package files"
+url=" "
+arch="all"
+license="MIT"
+depends=""
+makedepends="zlib-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-libs"
+source="https://github.com/WizardMac/ReadStat/releases/download/v$pkgver/readstat-$pkgver.tar.gz
+ use-after-free.patch
+ buf-overflow.patch
+ big-endian.patch
+ "
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+libs() {
+ pkgdesc="C library for converting stats package files"
+ default_libs
+}
+
+sha512sums="1034d2ca4f45a5b93ed1857b9176965a1584c042bfc2316cc93d0a80f589dc55ad6fe01036a6b9a4db36080b2a9876472f9016ce01e015692430dbeb7e26ece0 readstat-1.1.9.tar.gz
+b58b0b2d5da107048c4aedbb6a8a0cd7cd3710ac6e6cd5cb759fd149288da24fb2f52022586154eba42d32441ab5a6ec307f895af2875649bb57a4d0473d9a81 use-after-free.patch
+cfcad56dfe51b1454010e6cf15961816de8b60f1d5918638b8f1f208d18713db281eb1d915db4cd79fe11d28c82a1c3c23a1a05a079b4071ba2f61c1d0c74dbc buf-overflow.patch
+3aad51258a52c13c45bd94c7e12a9ae38923930f03dbbee650d489ef812999de82e8024ec5e74ca4ad191aa90b2c5d8dd983493121c9b874708b3f32419e1146 big-endian.patch"
diff --git a/user/readstat/big-endian.patch b/user/readstat/big-endian.patch
new file mode 100644
index 000000000..71f1db133
--- /dev/null
+++ b/user/readstat/big-endian.patch
@@ -0,0 +1,76 @@
+From 0034c8ee693563cbecae8fa8a24d3e8d5dcc6ab1 Mon Sep 17 00:00:00 2001
+From: Evan Miller <emmiller@gmail.com>
+Date: Sat, 4 May 2024 08:50:28 -0400
+Subject: [PATCH] [SAS7BCAT writer] big-endian architecture fix
+
+Closes #302
+---
+ src/sas/readstat_sas7bcat_write.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/sas/readstat_sas7bcat_write.c b/src/sas/readstat_sas7bcat_write.c
+index 6544798c..9642fdad 100644
+--- a/src/sas/readstat_sas7bcat_write.c
++++ b/src/sas/readstat_sas7bcat_write.c
+@@ -63,7 +63,8 @@ static sas7bcat_block_t *sas7bcat_block_for_label_set(readstat_label_set_t *r_la
+
+ for (j=0; j<r_label_set->value_labels_count; j++) {
+ readstat_value_label_t *value_label = readstat_get_value_label(r_label_set, j);
+- lbp1[2] = 24; // size - 6
++ int16_t value_entry_len = 24; // size - 6
++ memcpy(&lbp1[2], &value_entry_len, sizeof(int16_t));
+ int32_t index = j;
+ memcpy(&lbp1[10], &index, sizeof(int32_t));
+ if (r_label_set->type == READSTAT_TYPE_STRING) {
+@@ -86,7 +87,7 @@ static sas7bcat_block_t *sas7bcat_block_for_label_set(readstat_label_set_t *r_la
+ memcpy(&lbp2[8], &label_len, sizeof(int16_t));
+ memcpy(&lbp2[10], value_label->label, label_len);
+
+- lbp1 += 30;
++ lbp1 += 6 + value_entry_len;
+ lbp2 += 8 + 2 + value_label->label_len + 1;
+ }
+
+From 29aac3db79a5da20d1d1dcbb54a587c5ba51e7b3 Mon Sep 17 00:00:00 2001
+From: Evan Miller <emmiller@gmail.com>
+Date: Sat, 4 May 2024 10:35:27 -0400
+Subject: [PATCH] [SAS7BCAT writer] more big-endian fixes
+
+---
+ src/sas/readstat_sas7bcat_write.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/sas/readstat_sas7bcat_write.c b/src/sas/readstat_sas7bcat_write.c
+index 9642fda..c25fec0 100644
+--- a/src/sas/readstat_sas7bcat_write.c
++++ b/src/sas/readstat_sas7bcat_write.c
+@@ -46,7 +46,8 @@ static sas7bcat_block_t *sas7bcat_block_for_label_set(readstat_label_set_t *r_la
+ memcpy(&block->data[38], &count, sizeof(int32_t));
+ memcpy(&block->data[42], &count, sizeof(int32_t));
+ if (name_len > 8) {
+- block->data[2] = (char)0x80;
++ int16_t flags = 0x80;
++ memcpy(&block->data[2], &flags, sizeof(int16_t));
+ memcpy(&block->data[8], name, 8);
+
+ memset(&block->data[106], ' ', 32);
+@@ -139,16 +140,15 @@ static readstat_error_t sas7bcat_begin_data(void *writer_ctx) {
+
+ // Page 1
+ char *xlsr = &page[856];
+- int16_t block_idx, block_off;
+- block_idx = 4;
+- block_off = 16;
++ int32_t block_idx = 4;
++ int16_t block_off = 16;
+ for (i=0; i<writer->label_sets_count; i++) {
+ if (xlsr + 212 > page + hinfo->page_size)
+ break;
+
+ memcpy(&xlsr[0], "XLSR", 4);
+
+- memcpy(&xlsr[4], &block_idx, sizeof(int16_t));
++ memcpy(&xlsr[4], &block_idx, sizeof(int32_t));
+ memcpy(&xlsr[8], &block_off, sizeof(int16_t));
+
+ xlsr[50] = 'O';
diff --git a/user/readstat/buf-overflow.patch b/user/readstat/buf-overflow.patch
new file mode 100644
index 000000000..f3766bb24
--- /dev/null
+++ b/user/readstat/buf-overflow.patch
@@ -0,0 +1,26 @@
+From c7baae72b36acdc24f56ad48d3e859850fdbdc2b Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?G=C3=A1bor=20Cs=C3=A1rdi?= <csardi.gabor@gmail.com>
+Date: Sat, 17 Feb 2024 21:23:14 +0100
+Subject: [PATCH] Fix a buffer overflow (#311)
+
+It happens if raw_str_used underflows and ends up a very large number,
+which is then used as the size of a string.
+
+Closes #285.
+---
+ src/spss/readstat_sav_read.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/spss/readstat_sav_read.c b/src/spss/readstat_sav_read.c
+index 7f49490..460bf07 100644
+--- a/src/spss/readstat_sav_read.c
++++ b/src/spss/readstat_sav_read.c
+@@ -717,7 +717,7 @@ static readstat_error_t sav_process_row(unsigned char *buffer, size_t buffer_len
+ }
+ if (++offset == col_info->width) {
+ if (++segment_offset < var_info->n_segments) {
+- raw_str_used--;
++ if (raw_str_used > 0) raw_str_used--;
+ }
+ offset = 0;
+ col++;
diff --git a/user/readstat/use-after-free.patch b/user/readstat/use-after-free.patch
new file mode 100644
index 000000000..70ea38ffd
--- /dev/null
+++ b/user/readstat/use-after-free.patch
@@ -0,0 +1,37 @@
+From 718d49155e327471ed9bf4a8c157f849f285b46c Mon Sep 17 00:00:00 2001
+From: Stefan Gerlach <stefan.gerlach@uni-konstanz.de>
+Date: Wed, 20 Sep 2023 15:18:07 +0200
+Subject: [PATCH] Fix use after free (#298)
+
+---
+ src/bin/readstat.c | 7 +++++--
+ 1 file changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/src/bin/readstat.c b/src/bin/readstat.c
+index 48b8fdd..e3fbbd1 100644
+--- a/src/bin/readstat.c
++++ b/src/bin/readstat.c
+@@ -397,8 +397,6 @@ static int convert_file(const char *input_filename, const char *catalog_filename
+ module->finish(rs_ctx->module_ctx);
+ }
+
+- free(rs_ctx);
+-
+ if (error != READSTAT_OK) {
+ if (file_exists) {
+ fprintf(stderr, "Error opening %s: File exists (Use -f to overwrite)\n", output_filename);
+@@ -406,9 +404,14 @@ static int convert_file(const char *input_filename, const char *catalog_filename
+ fprintf(stderr, "Error processing %s: %s\n", rs_ctx->error_filename, readstat_error_message(error));
+ unlink(output_filename);
+ }
++
++ free(rs_ctx);
++
+ return 1;
+ }
+
++ free(rs_ctx);
++
+ return 0;
+ }
+
diff --git a/user/recode/APKBUILD b/user/recode/APKBUILD
index 09b9a8121..743b34184 100644
--- a/user/recode/APKBUILD
+++ b/user/recode/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=recode
-pkgver=3.7.1
+pkgver=3.7.7
pkgrel=0
pkgdesc="Character set conversion utilities"
url=" "
@@ -9,12 +9,11 @@ arch="all"
options="!check" # Requires unpackaged `cython`.
license="GPL-3.0+"
depends=""
-makedepends="help2man cmd:lex python3"
+makedepends="help2man flex python3"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-libs"
source="https://github.com/rrthomas/recode/releases/download/v$pkgver/recode-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,13 +26,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3cb067fb7e1b0ec89c47e7177cb172bc8253042780101f6d8cb1de7bc0873d2af217e7b04a33ac23bdb8ffd41e43eac767307c4bd8a94355c188d5013f177b04 recode-3.7.1.tar.gz"
+sha512sums="2d07f86992ddc449d6895510cfc4b0abfc6f5052804a13eab91fa1b103352c2a801e0cc5113cfe519db53c0e328b7f2b9bc666fdbfd8e9ac6748aced7809179a recode-3.7.7.tar.gz"
diff --git a/user/redis/APKBUILD b/user/redis/APKBUILD
index cda552fdd..2d58b308b 100644
--- a/user/redis/APKBUILD
+++ b/user/redis/APKBUILD
@@ -1,20 +1,20 @@
# Contributor: V.Krishn <vkrishn4@gmail.com>
-# Maintainer:
+# Maintainer: Alyx Wolcott <alyx@leuhta.com>
pkgname=redis
-pkgver=4.0.11
+pkgver=7.2.5
pkgrel=0
pkgdesc="Advanced key-value store"
url="https://redis.io/"
arch="all"
license="BSD-3-Clause"
depends=""
-makedepends="linux-headers"
checkdepends="tcl"
+makedepends="linux-headers"
subpackages="$pkgname-openrc"
install="redis.pre-install"
pkgusers="redis"
pkggroups="redis"
-source="http://download.redis.io/releases/$pkgname-$pkgver.tar.gz
+source="https://download.redis.io/releases/$pkgname-$pkgver.tar.gz
fix-ppc-atomics.patch
posix-runtest.patch
redis.initd
@@ -22,10 +22,14 @@ source="http://download.redis.io/releases/$pkgname-$pkgver.tar.gz
redis.confd
"
+# secfixes:
+# 4.0.14-r0:
+# - CVE-2019-10192
+# - CVE-2019-10193
+
prepare() {
default_prepare
- cd "$builddir"
sed -i -e 's|^daemonize .*|daemonize yes|' \
-e 's|^dir .*|dir /var/lib/redis/|' \
-e 's|^logfile .*|logfile /var/log/redis/redis\.log|' \
@@ -43,7 +47,6 @@ prepare() {
}
build() {
- cd "$builddir"
make PREFIX=/usr \
INSTALL_BIN="$pkgdir"/usr/bin \
MALLOC=libc \
@@ -52,12 +55,10 @@ build() {
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
mkdir -p "$pkgdir"/usr/bin
install -d -o redis -g redis \
"$pkgdir"/var/lib/redis \
@@ -78,7 +79,7 @@ package() {
install
}
-sha512sums="f0054af9ca2143731a397b2b21285387707b7f40d9326ba15225feb1a2ff470fab5194308342f63bbe1081f84c7e9ef19543c5a8e3eae49e17bfc515c64201f0 redis-4.0.11.tar.gz
+sha512sums="e064a0f380e3a00ab8eb2f10ed7317fd6aa27d64cf00792fab80465036f92d17b166050e71b8a779fdf024528ac736cb54722316811f99951c4e386f4ab2245d redis-7.2.5.tar.gz
f768acea3e1868dbf0596085640c83e58d899860d7d647b0965fa858844c494d0a49b229fb417456d83f3e2690e5450950c31e0fa40529df85a9cde38d8981c4 fix-ppc-atomics.patch
856ae98e9e8670801827c3bd793dc14ed2c62c37365f8d04b452d7e1ab97300a0bf18c59b52ea686c2689d53aeed8e29e2c55207d3d4fb1fd8fc7fc820f33157 posix-runtest.patch
91b663f802aea9a473195940d3bf2ce3ca2af4e5b6e61a2d28ebbfe502ef2c764b574b7e87c49e60345d1a5d6b73d12920924c93b26be110c2ce824023347b6f redis.initd
diff --git a/user/redis/redis.pre-install b/user/redis/redis.pre-install
index f73213126..bdea387cb 100644
--- a/user/redis/redis.pre-install
+++ b/user/redis/redis.pre-install
@@ -1,6 +1,7 @@
#!/bin/sh
-addgroup -S redis 2>/dev/null
-adduser -S -D -H -h /var/lib/redis -s /bin/false -G redis -g redis redis 2>/dev/null
+groupadd -r redis 2>/dev/null
+useradd -c redis -s /sbin/nologin -g redis \
+ -m -d /var/lib/redis -r redis 2>/dev/null
exit 0
diff --git a/user/redland/APKBUILD b/user/redland/APKBUILD
index 1059aa845..a8765b26e 100644
--- a/user/redland/APKBUILD
+++ b/user/redland/APKBUILD
@@ -1,4 +1,4 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=redland
@@ -21,7 +21,6 @@ prepare() {
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -35,12 +34,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/redshift/APKBUILD b/user/redshift/APKBUILD
index fca669f61..8212ad1e9 100644
--- a/user/redshift/APKBUILD
+++ b/user/redshift/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Luis Ressel <aranea@aixah.de>
-# Maintainer: Luis Ressel <aranea@aixah.de>
+# Contributor: Mira Ressel <aranea@aixah.de>
+# Maintainer:
pkgname=redshift
pkgver=1.12
pkgrel=0
@@ -7,14 +7,13 @@ pkgdesc="Adjust the color temperature of your screen according to your surroundi
url="http://jonls.dk/redshift/"
arch="all"
license="GPL-3.0+"
-options="!check" # No test suite
+options="!check" # No test suite.
depends=""
makedepends="glib-dev intltool libdrm-dev libx11-dev libxcb-dev libxxf86vm-dev"
subpackages="$pkgname-doc $pkgname-gui $pkgname-lang"
source="https://github.com/jonls/redshift/releases/download/v$pkgver/redshift-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -35,13 +34,12 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
doc() {
- cd "$builddir"
- install -Dm644 -t "$subpkgdir/usr/share/doc/$pkgname" redshift.conf.sample
+ install -Dm644 -t "$subpkgdir/usr/share/doc/$pkgname" \
+ "$builddir"/redshift.conf.sample
default_doc
}
diff --git a/user/rendercheck/APKBUILD b/user/rendercheck/APKBUILD
index 30a821e2c..daec31c89 100644
--- a/user/rendercheck/APKBUILD
+++ b/user/rendercheck/APKBUILD
@@ -1,37 +1,30 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=rendercheck
-pkgver=1.5
+pkgver=1.6
pkgrel=0
pkgdesc="X11 Render extension testing and debugging utility"
url="https://www.X.Org/"
arch="all"
+options="!check" # no test suite
license="MIT"
depends=""
-makedepends="libx11-dev libxrender-dev util-macros xorgproto-dev"
+makedepends="libx11-dev libxrender-dev xorgproto-dev libxext-dev meson"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/rendercheck-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/test/rendercheck-$pkgver.tar.xz"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
-}
-
-check() {
- cd "$builddir"
- make check
+ meson setup \
+ -Dprefix=/usr \
+ -Dsysconfdir=/etc \
+ -Dmandir=/usr/share/man \
+ -Dlocalstatedir=/var \
+ build
+ meson compile -C build
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" meson install -C build
}
-sha512sums="ffa1abf317f85a8bcef3544e3f810b34567553524ac0a784d2a67470e0811854d7983af8600a04aadecf42871ccb83ad5c0e9e25179142fda2a8f5853a07f616 rendercheck-1.5.tar.bz2"
+sha512sums="0cc5372a318d4a28d63d82a2efc42f15b810186ce91b226bc5b962520637b628b1ae991a9e7745f8239c4fd100bf8f8eab79bc3803a01cad6827022af49be1a3 rendercheck-1.6.tar.xz"
diff --git a/user/rfkill/APKBUILD b/user/rfkill/APKBUILD
index 9f9889e9a..38575aca5 100644
--- a/user/rfkill/APKBUILD
+++ b/user/rfkill/APKBUILD
@@ -10,18 +10,16 @@ options="!check" # No test suite.
license="MIT"
depends=""
makedepends=""
-install=""
subpackages="$pkgname-doc"
source="https://www.kernel.org/pub/software/network/rfkill/rfkill-$pkgver.tar.xz
- dont-use-git.patch"
+ dont-use-git.patch
+ "
build() {
- cd "$builddir"
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/rgb/APKBUILD b/user/rgb/APKBUILD
index 42be8cbe4..15d092b53 100644
--- a/user/rgb/APKBUILD
+++ b/user/rgb/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=rgb
-pkgver=1.0.6
+pkgver=1.1.0
pkgrel=0
pkgdesc="X11 colour name database"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/rgb-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="92c8885a0e1482065a8b86f7be890859a5eab6b9d57ff219e916cbbd10cd185deec1c5db25dae8c405a343ab0e2ddaba3ddfe0b567d06534405f102e1845654e rgb-1.0.6.tar.bz2"
+sha512sums="640888d64b2d328fff4a1652ba1299436e348bc3cbc90710d79c635acfa7f2fce0018adb818123b41ca008197ff1cbf87aab60501de36c163bed2d80d8556008 rgb-1.1.0.tar.xz"
diff --git a/user/rinutils/APKBUILD b/user/rinutils/APKBUILD
new file mode 100644
index 000000000..56bf0e53d
--- /dev/null
+++ b/user/rinutils/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=rinutils
+pkgver=0.8.0
+pkgrel=0
+pkgdesc="C11 utilities library"
+url="https://github.com/shlomif/rinutils"
+arch="noarch"
+license="Expat"
+depends=""
+checkdepends="cmocka-dev perl perl-dev perl-env-path perl-inline perl-inline-c
+ perl-path-tiny perl-string-shellquote perl-test-differences
+ perl-test-trailingspace"
+makedepends="cmake"
+# Headers-only library: no -dev split.
+subpackages=""
+source="https://github.com/shlomif/rinutils/releases/download/$pkgver/rinutils-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="06bbcdb5092762bf2ed92d4082eca17e8dc0e822ce8634f8ec8782fe7eccb4b954c081dbba3f1e2f72e0285607a813f020d4277af77accc43135bde50153359d rinutils-0.8.0.tar.xz"
diff --git a/user/ripgrep/APKBUILD b/user/ripgrep/APKBUILD
new file mode 100644
index 000000000..bed8032f8
--- /dev/null
+++ b/user/ripgrep/APKBUILD
@@ -0,0 +1,173 @@
+# Contributor: Gentoo Rust Maintainers <rust@gentoo.org>
+# Contributor: Molly Miller <adelie@m-squa.red>
+# Maintainer: Samuel Holland <samuel@sholland.org>
+pkgname=ripgrep
+pkgver=14.1.0
+pkgrel=0
+pkgdesc="Recursively searches directories for a regex pattern"
+url="https://github.com/BurntSushi/ripgrep"
+arch="all"
+license="Unlicense"
+depends=""
+makedepends="cargo pcre2-dev"
+subpackages=""
+source=""
+
+# dependencies taken from Cargo.lock
+cargo_deps="
+$pkgname $pkgver
+aho-corasick 1.1.2
+anyhow 1.0.79
+autocfg 1.1.0
+bstr 1.9.0
+cc 1.0.83
+cfg-if 1.0.0
+crossbeam-deque 0.8.4
+crossbeam-epoch 0.9.17
+crossbeam-utils 0.8.18
+encoding_rs 0.8.33
+encoding_rs_io 0.1.7
+globset 0.4.14
+grep 0.3.1
+grep-cli 0.1.10
+grep-matcher 0.1.7
+grep-pcre2 0.1.7
+grep-printer 0.2.1
+grep-regex 0.1.12
+grep-searcher 0.1.13
+ignore 0.4.22
+itoa 1.0.10
+jemalloc-sys 0.5.4+5.3.0-patched
+jemallocator 0.5.4
+jobserver 0.1.27
+lexopt 0.3.0
+libc 0.2.151
+libm 0.2.8
+log 0.4.20
+memchr 2.7.1
+memmap2 0.9.3
+num-traits 0.2.17
+packed_simd 0.3.9
+pcre2 0.2.6
+pcre2-sys 0.2.8
+pkg-config 0.3.28
+proc-macro2 1.0.76
+quote 1.0.35
+regex-automata 0.4.3
+regex-syntax 0.8.2
+ryu 1.0.16
+same-file 1.0.6
+serde 1.0.195
+serde_derive 1.0.195
+serde_json 1.0.111
+syn 2.0.48
+termcolor 1.4.0
+textwrap 0.16.0
+unicode-ident 1.0.12
+walkdir 2.4.0
+winapi 0.3.9
+winapi-i686-pc-windows-gnu 0.4.0
+winapi-util 0.1.6
+winapi-x86_64-pc-windows-gnu 0.4.0
+"
+
+source="$source $(echo $cargo_deps | sed -E 's#([[:graph:]]+) ([[:graph:]]+)#\1-\2.tar.gz::https://crates.io/api/v1/crates/\1/\2/download#g')"
+
+prepare() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ export CARGO_VENDOR="$CARGO_HOME/adelie"
+
+ (builddir=$srcdir; default_prepare)
+
+ mkdir -p "$CARGO_VENDOR"
+ cat <<- EOF > "$CARGO_HOME/config.toml"
+ [source.adelie]
+ directory = "${CARGO_VENDOR}"
+
+ [source.crates-io]
+ replace-with = "adelie"
+ local-registry = "/nonexistant"
+ EOF
+
+ for _dep in $(echo $cargo_deps | sed -E 's#([[:graph:]]+) ([[:graph:]]+)#\1-\2#g'); do
+ ln -s "$srcdir/$_dep" "$CARGO_VENDOR/$_dep"
+ _sum=$(sha256sum "$srcdir/$_dep.tar.gz" | cut -d' ' -f1)
+ cat <<- EOF > "$CARGO_VENDOR/$_dep/.cargo-checksum.json"
+ {
+ "package":"$_sum",
+ "files":{}
+ }
+ EOF
+ done
+}
+
+build() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ export PCRE2_SYS_STATIC=0
+ cargo build -j $JOBS --features pcre2 --release
+}
+
+check() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ cargo test -j $JOBS --features pcre2 --release
+}
+
+package() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ cargo install --no-track --features pcre2 --path . --root="$pkgdir"/usr
+}
+
+sha512sums="eb0234269164758d6a9051f405771f259636a79094aeee0b667931747c1c3f0f03a764b3eab0be227b8242923a5777b1a6ef31fdd410f4ba4c674764e4fac1fa ripgrep-14.1.0.tar.gz
+61ef5092673ab5a60bec4e92df28a91fe6171ba59d5829ffe41fc55aff3bfb755533a4ad53dc7bf827a0b789fcce593b17e69d1fcfb3694f06ed3b1bd535d40c aho-corasick-1.1.2.tar.gz
+ecd6fb1367d494df18c0e274b336a133f3acf7b6a5487d20bdd06e08c7f1f729877086a0966e998221daff120504fadd2be2dc4219ed621f81b0a50c2bbc2011 anyhow-1.0.79.tar.gz
+df972c09abbdc0b6cb6bb55b1e29c7fed706ece38a62613d9e275bac46a19574a7f96f0152cccb0239efea04ee90083a146b58b15307696c4c81878cd12de28f autocfg-1.1.0.tar.gz
+dc313a16c38ad881128977a20bb390e7c95a96d9530596433a7c4fd7f77d5fffd079d436006dd8d2bfc4aacdd7f0aff229504444250418f6aa3f8d6d4df9abba bstr-1.9.0.tar.gz
+742a248c3a7547bb220a0b9c97b67a831fab9b4ac21daa08c85a3966b9fe576088def33e16132fcabec9a2828a6fc437088bb045bfc98b2cea829df6742565a7 cc-1.0.83.tar.gz
+0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff cfg-if-1.0.0.tar.gz
+cc036613727a3aa8933bec419ba8a5fd2f506770ad2cf874ff757b048e0d29ea3f1b0e2b72d2d5352ed4b62c6764c7bbb10d0d4e217176da26bf5ae4bca0b68b crossbeam-deque-0.8.4.tar.gz
+9bdeb0415ea26250547ed9f34a8dd4c17f9379e3c56f8f17315e48f9bf63ce1b79c37786ead0f4df026e31b0b5965d181c36839d891c14149529ac42b5cedea4 crossbeam-epoch-0.9.17.tar.gz
+977f41d7596a8d206fab665570f155479e15a83698fa54e714305d56ce32d78abc6f778b5f6e3c379ed1da27e241639cf4d0cd12922383f774ae85b32a4dc550 crossbeam-utils-0.8.18.tar.gz
+20d28a4c0ff0710f911f510be56c2bc5e7514b76d370493d2b89b7f25d1c0cd46ffa64862e54fc472f07f928a2cc24cf9d790a37751cafafc81f263705aac4bc encoding_rs-0.8.33.tar.gz
+0c7d33616e96fcdf225599dbf469232d150fa4bef5809346c4003ff7fa0362a1cded8f3392fb5945f4950e2b2cd71b60c93025d73ecfdd2ba4fda5e03a16902c encoding_rs_io-0.1.7.tar.gz
+e83e4f5e42a97609e2579b09f49c2cb0a76a94e7e2975c5871f2c5af5d3b809736e0a7b220404c582f4a0c7eebdbfad6cb432e89b26401b58f2b253f8c0151bc globset-0.4.14.tar.gz
+2ce36f84a561f5a66b67e2f0b79ecb9d7a3220fd48f4b0215c4964d2e686f096aa52890b79ae770f4857a1393a2e482750e171606a1c25f1cc6295bf439d694f grep-0.3.1.tar.gz
+057bc0192bc2dab55babdc40c94d421f2e30d3001801469480bbdd77eeee896c3b4a2f17e7a648e7d21f178636ab1363eb3b3abbd3a6e453d07d1c2d60a53112 grep-cli-0.1.10.tar.gz
+bc15eec0b6f409926099f2aa46f040c8de240e50537358a50d12ce7cfaff4894ec43910d2e01ec087c2c0777773ef25e2f0d653c33a59c5162e23e85e76ec9f8 grep-matcher-0.1.7.tar.gz
+2efcf39decd5472fedde41bc73be15e3145bf860aa8b5635f7c0fd47bcd8498ad75a32f8ec09cac872eaea7c4bcc14ee22be9612f0415d9fb0a86f041567cf92 grep-pcre2-0.1.7.tar.gz
+2dc876143cd8480dd2cc4be5397de21eaddd5cce4a23494a5a68c8d9814d0cdec01fd14d5cd6aa23a17b3a43fcfc2843d4057b5dce144dd1cb7a936c53ee326d grep-printer-0.2.1.tar.gz
+95df80807aa14cdbefa4d8d8cb8fd91263fe26009ba3ecb4a30acff1332bd51b87c94935a489405c6bf98e76126a5a06cfe7f5b677001da4e18c18375c00f142 grep-regex-0.1.12.tar.gz
+8e7ecbcbe09f5a57fad71e0010d2cc29f3b622bf6ff80cd2d75a8898b43ec7ca43a1d8efb4921032f865a81c38176c694faf6627cc747350a31510bef662cf9f grep-searcher-0.1.13.tar.gz
+9647a4887258dd970c87798dee32a16c1cda75ce3e352829f78d97e1b786d67f74d89b2fd76d48a607fe795213965c04c9dfb47713f8fa80561f87ac465956d9 ignore-0.4.22.tar.gz
+fc496be0873e31afa6ddf7f2958030f8fcb517cadb86a48280a0c50ce50460afda189af1e6c26e5ff6f85c750d772c21503864c32b526c4fe4bcdb5b07918538 itoa-1.0.10.tar.gz
+b81c75efa70b869abe08c0805fd9545436ccd4e6ce24bb7355c1b3684a03bbf234af0680854f3fd9b519e7d59296d32ef04497a1f45584ed8de462e4e21d60c1 jemalloc-sys-0.5.4+5.3.0-patched.tar.gz
+23b0107ce5fa6a31cbe2cd07beeee973543c1e5f6f2a57fde5a313dfdf0b7138a0675fd00b1b4823d60eeffe02b9159d0261579c9ee4ce4246fcf799f9c1f853 jemallocator-0.5.4.tar.gz
+2681234952be7a5ae67770d45f4d52e8278347f79b349bda594626712b1fba595a4cf46e8fb5426b548c325a23243facf7fbdc01ae0e853e492aff39444879a5 jobserver-0.1.27.tar.gz
+7ce3856a54fa6274ea3d5a4fe353f4a0411f5f6754fe8a5e7a114705f063300a93aa2efad765bc1dd0244caee15a8cf44a3de540a4db0626ed2ac6476bdb6843 lexopt-0.3.0.tar.gz
+2039bdfd704c5a876ff7d609622bb968260d6e0fd264ca457e92b75660503eca10e1ff21864b3c919d2656de521f03ef443895f5c0150271ae2502857742b0ec libc-0.2.151.tar.gz
+753df71bb2c838abbac360db2e4400c2d931185ecff993da51a979870f2c3f7ac017380fadee4622102fb4b37ebcc1960b0cbd295afc9cd1cb3307524e1f39c5 libm-0.2.8.tar.gz
+8661b0c71d3b7fc0d679aa3d7f06910e6d3da1c53862aa06526000e1bcaa0b0b068415a1a9ab317c318f00d15346dba8a4f5d2a60d8850790bed9cfaaf757b3e log-0.4.20.tar.gz
+5120496faa31fc427c8b4178461a262b3a34d70eddb7ad17a19d6db8b9969c9e113d3625b5e6dc677087fc80907377b00ba0421aba9a92cf73ca2849d932f473 memchr-2.7.1.tar.gz
+025068aaf27296731c3a4fd8df3b745cd37e86a564aa5ab9a8eccddb99fa054820eff5a6a858c3f443666bf594b149c84045f43a555353286b066b3f1ff514cf memmap2-0.9.3.tar.gz
+4d47d3e2f5a31019e038e609897cb0cef1ba061b35cee7e2a02e65179dcdd4960bd5b9bc759b5c013d699b3fbd9b014940a15e36658f7d4fd12cb0c7841c5b4e num-traits-0.2.17.tar.gz
+1336ed8aee50a580784f38388f0cc2f0a8639149333e94b7f83aa7cc314a80c60b66ac203a7302cd4cf01f3d0b89da58d2ce9038b7685840fbc1b758217dbd1b packed_simd-0.3.9.tar.gz
+101a0c4f1300ef7184aafba9048e0a7ad310d86d5236871e2b2477d4cedb23ac8bd6c6cd48970145eccbfb684f3efb5a80100e056e0c6052bc6fdbc4ad308317 pcre2-0.2.6.tar.gz
+4f0b21a0dff41ccbfb1dd6387d63b066e71002a7b96f76d8ab5ff34c056cd862337c1ef08daf30436fdf68eba4eb98f6e8a1ad6d2903e2e348ed9b85e2a7f616 pcre2-sys-0.2.8.tar.gz
+1ef92c5cf5320fb2e7d9e337edae08eaef01c762cb18406f732af731e5a94bef95be36cc0e0f5643f47a925aa127c5520a961c034e7b86357715656707a6e0e4 pkg-config-0.3.28.tar.gz
+2ea7ade475171166489ab3e745e8c526e49c7521bc39b1bfec6dd2fd0807fd3cc5579235f77534be855f9ecab481205e77e66b14ebb22e66d2c3cff842567247 proc-macro2-1.0.76.tar.gz
+f5314fb6af17cf36c228e1970c569c29ec248954a450a5f90ba9e2896d04f74904c9cec5a1f74325f2489295a94491eee4ce8fb461e22cd4b34e53f1f881efd2 quote-1.0.35.tar.gz
+4fc82fe3556f829956c3172447589555ef286fd66ee9a445cbdcdbe57970655e35b6eb0895ba02c344d826609257e0c95d3f7f51858aa260103bed7b08d8c1a8 regex-automata-0.4.3.tar.gz
+301dde555f300298f2594490ccd8b92033e4917fe9b8671b8a97db6c827793c73969be85a92999964dcaf3177edda51abeb576811ad6cab9772964dc0a77e728 regex-syntax-0.8.2.tar.gz
+89e3e18346ae6e4035787766f286a6eb62f5294e39ad902cc29e95c53781c4e5dd629f567f22ecc7e9fe9d1c273323da9b867aadc9cd8a066727c58330b51b10 ryu-1.0.16.tar.gz
+3ba35309742c8db63210d9ea78bff4ecd80471d69e6238eb96c7bf0673814f221e2d838fe6311bfc5a0e71b4a7ccba33e07859c0b9cff2171969ff08a4214a7c same-file-1.0.6.tar.gz
+0002ecb933d08fbdc8585ee74efb4048d385459f629261f5a4a8401b794f1c02b8296db79f479013a0b2a47ba99bee6c02d60d0fc2454e32f1b038b4071e8727 serde-1.0.195.tar.gz
+8a82ae4e7cfe0c3ac27688cc95d74bf4c2e10c1fe845ab28fb57579b2f47f36d13218c2ae603f93f00114065d47c3e46166dea39b205be673f443c34305dacce serde_derive-1.0.195.tar.gz
+11851e34a9a40de32654a12ada1d1bd01abb11531c5804f5d0747bbb01bf59025dd92be916104fbc278bbba5c89c77920941b83c0ac2f0da23f5d61a7788e83f serde_json-1.0.111.tar.gz
+926c0ad55cc743df20f9166b6d71fd44421aeb1f073fd86b6ddb53e13cd508b539c0360ce64b07b65597bb14639c8f33acf7e60951e1e9128624517aa3aee325 syn-2.0.48.tar.gz
+36c8550fe85cb90c4fdd1a6e3f60b42b6c71f65b6128da97d5ad6aac8350d907410899ad4a47bb4dc72ea6d00bc69e5a1ccc80ee9b0e80a1a27912e233f3e416 termcolor-1.4.0.tar.gz
+97ae8acece5663e1a6b08b827179e96d5ad0ee67d635888cc3d83454b52cf48fce97eb0eba374ba4747834099c74f43d66d9fec868e84be45369a42c1aaec2c3 textwrap-0.16.0.tar.gz
+bc1824e1e4452a40732fc69874d7e1a66f7803717a314790dcf48867eba34bc9441331ef031e386912e52c385645c25b6ed39d4f149973b5b97371b1b96b1920 unicode-ident-1.0.12.tar.gz
+09e1bc852c01b452c95b26a369831a97bc5c9e0ada3111c73774570dd73bb5b9e4735317d5572304fb48dca44ce7b9f77bbd17c418b6b047b2ab17b8bb42d9d9 walkdir-2.4.0.tar.gz
+ff8b7b78065f3d8999ec03c725a0460ebc059771bf071c7a3df3f0ecd733edf3b0a2450024d4e24e1aedddaecd9038ce1376c0d8bbf45132068cf45cf4a53a97 winapi-0.3.9.tar.gz
+a672ccefd0730a8166fef1d4e39f9034d9ae426a3f5e28d1f4169fa5c5790767693f281d890e7804773b34acdb0ae1febac33cde8c50c0044a5a6152c7209ec2 winapi-i686-pc-windows-gnu-0.4.0.tar.gz
+b1c949f9bcd34c1949a9d3a7bde6ce62fcf3d2cb66df60af41fe67a9d1acb24e571cdd5ac721be9f1ee4b3af5ef5149b5724ad6e02b558e124ef2a4412d12db9 winapi-util-0.1.6.tar.gz
+4a654af6a5d649dc87e00497245096b35a2894ae66f155cb62389902c3b93ddcc5cf7d0d8b9dd97b291d2d80bc686af2298e80abef6ac69883f4a54e79712513 winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz"
diff --git a/user/ristretto/APKBUILD b/user/ristretto/APKBUILD
index 1970f15af..7f535b02d 100644
--- a/user/ristretto/APKBUILD
+++ b/user/ristretto/APKBUILD
@@ -1,21 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=ristretto
-pkgver=0.8.4
+pkgver=0.13.2
pkgrel=0
pkgdesc="Image viewer for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-2.0+ AND LGPL-2.0+"
-makedepends="intltool libexif-dev gtk+2.0-dev libxfce4util-dev libxfce4ui-dev
- libmagic"
+depends=""
+makedepends="intltool libexif-dev libxfce4util-dev libxfce4ui-dev libmagic"
subpackages="$pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/apps/ristretto/0.8/ristretto-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/apps/ristretto/${pkgver%.*}/ristretto-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -26,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="c5479cde66e4f0903b9b8d9b1b8f4c7cde35ebfa334e414c8202e783c332bd4bfec650f85d308c7151d31fe84b27a13bb4048290b0a82ce7b8ba4baf3e4088b8 ristretto-0.8.4.tar.bz2"
+sha512sums="ae4eb0159707a793cefe88b681f61e8c2ce41d57a64c7ad33853fc863bb1909b2a48ccf5543d3484f5710e7bf86ecbbd8520fb59eff11368f3a7a7028cd85914 ristretto-0.13.2.tar.bz2"
diff --git a/user/rlottie/APKBUILD b/user/rlottie/APKBUILD
new file mode 100644
index 000000000..8602000a2
--- /dev/null
+++ b/user/rlottie/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=rlottie
+pkgver=0.0.20220107
+_commit=875626965959d8e269ca22175c8e1ad190696c43
+pkgrel=0
+pkgdesc="Library for Lottie animations"
+url=" "
+arch="all"
+license="LGPL-2.1+ AND MIT AND BSD-3-Clause"
+depends=""
+makedepends="meson ninja"
+subpackages="$pkgname-dev"
+source="rlottie-$pkgver.tar.gz::https://github.com/Samsung/rlottie/archive/$_commit.tar.gz"
+builddir="$srcdir/rlottie-$_commit"
+
+build() {
+ meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ . build
+ ninja -C build
+}
+
+check() {
+ ninja -C build test
+}
+
+package() {
+ DESTDIR="$pkgdir" ninja -C build install
+}
+
+sha512sums="d2cc139b1b624876559c149fd3c78cc4511629e825ffd9e8db2969259c572abe5dbdb8280521879d2e37daab0a1e7a86c144f3a2ad68c30e07e4e3feef5b8d4f rlottie-0.0.20220107.tar.gz"
diff --git a/user/rocs/APKBUILD b/user/rocs/APKBUILD
index f93856aa6..27484f4e7 100644
--- a/user/rocs/APKBUILD
+++ b/user/rocs/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=rocs
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Graph theory IDE"
url="https://www.kde.org/applications/education/rocs/"
@@ -10,14 +10,13 @@ options="!check" # All tests require X11.
license="GPL-2.0-only"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kdoctools-dev boost-dev
- grantlee-dev qt5-qtwebkit-dev qt5-qtsvg-dev qt5-qtxmlpatterns-dev
- karchive-dev kconfig-dev kcoreaddons-dev kcrash-dev kdeclarative-dev
- ki18n-dev kitemviews-dev ktexteditor-dev kxmlgui-dev"
+ grantlee-dev qt5-qtsvg-dev qt5-qtxmlpatterns-dev karchive-dev
+ kconfig-dev kcoreaddons-dev kcrash-dev kdeclarative-dev ki18n-dev
+ kitemviews-dev ktexteditor-dev kxmlgui-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/rocs-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/rocs-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,19 +26,16 @@ build() {
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
- -DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="66bc803ec316bad8f81849acebdc67c92ab175715404253a6e82cb2ab58738bc161bbbea33b15b3d212d853d2f45acf29348d351d957820b37a9fd943ef5b655 rocs-18.12.3.tar.xz"
+sha512sums="c1129600fab5d67d87ce02d5194bdaa673f3b13edae75626ed67a1d86fb562cf1e7a613b58d95dc3110327c9192f907aa7749e3d93fb34d85a7befe7481f5a00 rocs-22.04.2.tar.xz"
diff --git a/user/rofi/APKBUILD b/user/rofi/APKBUILD
new file mode 100644
index 000000000..4bd2bf2fa
--- /dev/null
+++ b/user/rofi/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=rofi
+pkgver=1.6.1
+pkgrel=0
+pkgdesc="Powerful application switcher and launcher"
+url="https://github.com/davatorium/rofi"
+arch="all"
+license="MIT AND Expat AND GPL-3.0+"
+depends=""
+checkdepends="check-dev"
+makedepends="flex bison pango-dev cairo-dev libjpeg-turbo-dev librsvg-dev
+ libxcb-dev libxinerama-dev libxrandr-dev xcb-util-wm-dev
+ xcb-util-xrm-dev startup-notification-dev libxkbcommon-dev"
+provides="dmenu"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/davatorium/rofi/releases/download/$pkgver/rofi-$pkgver.tar.xz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ cd "$pkgdir"/usr/bin
+ ln -s rofi dmenu
+}
+
+sha512sums="c9794a7e4921e58ecc5fc7096218203f548efe2a49ffa6971accc12e9172248bda856ad06f8c11ada9abb62b9a43c7fffce1c1be9a3fe1365c94561b170a8b73 rofi-1.6.1.tar.xz"
diff --git a/user/rpcbind/APKBUILD b/user/rpcbind/APKBUILD
index c9f8cc956..8737dcbcf 100644
--- a/user/rpcbind/APKBUILD
+++ b/user/rpcbind/APKBUILD
@@ -1,28 +1,28 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=rpcbind
-pkgver=1.2.5
-pkgrel=0
+pkgver=1.2.6
+pkgrel=1
pkgdesc="portmap replacement which supports RPC over various protocols"
url="http://rpcbind.sourceforge.net"
arch="all"
options="!check" # No test suite.
license="BSD-3-Clause"
depends=""
-install="$pkgname.pre-install $pkgname.pre-upgrade"
makedepends="libtirpc-dev bsd-compat-headers"
+install="$pkgname.pre-install $pkgname.pre-upgrade"
subpackages="$pkgname-dbg $pkgname-doc $pkgname-openrc"
source="http://downloads.sourceforge.net/project/rpcbind/rpcbind/$pkgver/rpcbind-$pkgver.tar.bz2
rpcbind.initd
- rpcbind.confd"
+ rpcbind.confd
+ "
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
- --bindir=/sbin \
+ --sbindir=/sbin \
--enable-warmstarts \
--with-statedir=/var/lib/rpcbind \
--with-rpcuser=rpc \
@@ -32,12 +32,12 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -Dm755 "$srcdir"/rpcbind.initd "$pkgdir"/etc/init.d/rpcbind
install -Dm644 "$srcdir"/rpcbind.confd "$pkgdir"/etc/conf.d/rpcbind
install -D -m644 COPYING "$pkgdir"/usr/share/licenses/rpcbind/COPYING
}
-sha512sums="e884c4757950ccead0f9a07f50625a63e6f18f9bfae9fcfffa3e5fa4b7a66c3a99d9fa303061848fe8211509d5456f24ff26e4579af6e161a35522268f3ef3e4 rpcbind-1.2.5.tar.bz2
+
+sha512sums="fb89c61be4c533fe2e6057749d97079a2d1c9fac0d35d6be1a159a0edbf86092b3fc121f19fa920e75aac5ecdd3f59f5978e6401d5cad16cd438c977736206a7 rpcbind-1.2.6.tar.bz2
1cd655d86226a45fa3e927f8ac2bb580537644d2fb3684e0f4a956bf3721c95d95b8b8c1d9a2a742fb714eeba9277e0400a7493bf1bf676466d70adb2b35a88e rpcbind.initd
0641087162ebc8fb10c5cb329105261d77cad073daed3f9a6c92574177298cd8a19a87b62dde14161cc554b5e68680cfd870b5334f3cfd8d6074ec8a43f4dfe3 rpcbind.confd"
diff --git a/user/rpcbind/rpcbind.pre-install b/user/rpcbind/rpcbind.pre-install
index 771cdbf7b..0d4d46885 100644
--- a/user/rpcbind/rpcbind.pre-install
+++ b/user/rpcbind/rpcbind.pre-install
@@ -1,6 +1,7 @@
#!/bin/sh
-addgroup -S rpc 2>/dev/null
-adduser -S -D -h /var/lib/rpcbind -s /sbin/nologin -G rpc -g rpc rpc 2>/dev/null
+groupadd -r rpc 2>/dev/null
+useradd -c rpc -s /sbin/nologin -g rpc \
+ -m -d /var/lib/rpcbind -r rpc 2>/dev/null
exit 0
diff --git a/user/rpcsvc-proto/APKBUILD b/user/rpcsvc-proto/APKBUILD
index 533e63cc5..713240eeb 100644
--- a/user/rpcsvc-proto/APKBUILD
+++ b/user/rpcsvc-proto/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=rpcsvc-proto
-pkgver=1.4
+pkgver=1.4.2
pkgrel=0
pkgdesc="RPC service protocol definitions and compiler"
url=" "
@@ -10,10 +10,9 @@ license="BSD-3-Clause"
depends=""
makedepends=""
subpackages="$pkgname-doc"
-source="https://github.com/thkukuk/rpcsvc-proto/releases/download/v$pkgver/rpcsvc-proto-$pkgver.tar.gz"
+source="https://github.com/thkukuk/rpcsvc-proto/releases/download/v$pkgver/rpcsvc-proto-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d1ad662e8036f17cd013b7becbf811caa62ef444f1c48ba6864c3c3cb28c5d69366b0c18b21692d1ad3f8445f33805e6bffe12c00d07e30324f8b930eae418d4 rpcsvc-proto-1.4.tar.gz"
+sha512sums="631fbfc00af94c5d7def0759f27e97dc14d400b4468c906719ae18ecef74815730798c882d1aaa4f90359224e7b829019b786baddc3097905b54f940ca85a714 rpcsvc-proto-1.4.2.tar.xz"
diff --git a/user/rpm/APKBUILD b/user/rpm/APKBUILD
new file mode 100644
index 000000000..f6b4d7a69
--- /dev/null
+++ b/user/rpm/APKBUILD
@@ -0,0 +1,57 @@
+# Contributor: Nathan <ndowens@artixlinux.org>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=rpm
+pkgver=4.16.0
+pkgrel=0
+pkgdesc="Redhat Package Manager"
+url="https://www.rpm.org"
+arch="all"
+license="GPL-2.0+ AND LGPL-2.0+"
+depends=""
+makedepends="acl-dev autoconf automake binutils-dev bzip2-dev file-dev
+ graphviz libarchive-dev libcap-dev libgcrypt-dev
+ libtool popt-dev sqlite-dev xz-dev zlib-dev zstd-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="http://ftp.rpm.org/releases/$pkgname-${pkgver%.*}.x/$pkgname-$pkgver.tar.bz2
+ musl.patch
+ include-fcntl.patch"
+
+prepare() {
+ # Use sqlite db
+ sed -ie "/_db_backend/ s/ bdb/ sqlite/g" macros.in
+ default_prepare
+ autoreconf -fi
+}
+
+# Py dependencies isn't currently in repo, so disable for now
+build() {
+ LIBS="$LIBS -lintl" \
+ ./configure \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var \
+ --with-cap \
+ --with-acl \
+ --without-lua \
+ --disable-python \
+ --enable-zstd \
+ --enable-sqlite=yes \
+ --enable-bdb_ro=yes \
+ --enable-bdb=no \
+ --with-crypto=libgcrypt
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="177119c3ac3d48980db55bb4ba0fdbb2a911968e5efc690bfa8cc343f850fc90531cc0dee6dd8e45d2b14f0d951ced35bd8893d24011b7f270745d281ddf4e3d rpm-4.16.0.tar.bz2
+212a4265abc8d002e16bed106b8b773cf65564f95e6074bc1378c4745420202a476373b49b660bdfe82cc2470c35fff4f184168a698abfa2a4bf30c8f91e64ad musl.patch
+6424005c78aaebcd3565debbdc1ca14fb16ef8f4aa79748eca3403115a31c77afbb8929add1a8450afbd0496e303c915c6ad6d60cde41a89caf553a10256ace5 include-fcntl.patch"
diff --git a/user/rpm/include-fcntl.patch b/user/rpm/include-fcntl.patch
new file mode 100644
index 000000000..611b92935
--- /dev/null
+++ b/user/rpm/include-fcntl.patch
@@ -0,0 +1,15 @@
+Upstream: Yes, https://github.com/rpm-software-management/rpm/pull/1379
+Reason: Fixes compilation with musl
+
+diff --git a/lib/rpmdb.c b/lib/rpmdb.c
+index 4c10156..7318763 100644
+--- a/lib/rpmdb.c
++++ b/lib/rpmdb.c
+@@ -8,6 +8,7 @@
+ #include <utime.h>
+ #include <errno.h>
+ #include <dirent.h>
++#include <fcntl.h>
+
+ #ifndef DYING /* XXX already in "system.h" */
+ #include <fnmatch.h>
diff --git a/user/rpm/musl.patch b/user/rpm/musl.patch
new file mode 100644
index 000000000..65f3a10aa
--- /dev/null
+++ b/user/rpm/musl.patch
@@ -0,0 +1,33 @@
+Upstream: No
+Reason: Fixes compilation with musl
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -229,6 +229,7 @@ AC_SEARCH_LIBS(dlopen, [dl])
+ # Check for libelf library. Prefer external, otherwise none.
+ WITH_LIBELF_LIB=
+ AC_CHECK_HEADER([libelf.h])
++AC_CHECK_HEADERS([error.h], [WITH_ERROR_H=yes])
+ AC_CHECK_HEADERS([gelf.h], [
+ AC_CHECK_LIB(elf, gelf_getvernaux, [
+ AC_DEFINE(HAVE_LIBELF, 1, [Define to 1 if you have the 'elf' library (-lelf).])
+@@ -237,7 +238,7 @@ AC_CHECK_HEADERS([gelf.h], [
+ ])
+ ])
+ AC_SUBST(WITH_LIBELF_LIB)
+-AM_CONDITIONAL(LIBELF,[test "$WITH_LIBELF" = yes])
++AM_CONDITIONAL(LIBELF,[test "$WITH_LIBELF" = yes && test "$WITH_ERROR_H" = yes])
+
+ AC_CHECK_HEADERS([dwarf.h], [
+ WITH_LIBDWARF=yes
+--- a/rpmio/digest_nss.c
++++ b/rpmio/digest_nss.c
+@@ -6,6 +6,7 @@
+ #include <keyhi.h>
+ #include <cryptohi.h>
+ #include <blapit.h>
++#include <signal.h>
+
+ #include <rpm/rpmlog.h>
+ #include "rpmio/digest.h"
+
diff --git a/user/rpm2targz/APKBUILD b/user/rpm2targz/APKBUILD
index ca2cd6a5a..05c55a912 100644
--- a/user/rpm2targz/APKBUILD
+++ b/user/rpm2targz/APKBUILD
@@ -13,17 +13,14 @@ subpackages=""
source="https://distfiles.adelielinux.org/source/rpm2targz-$pkgver.tar.xz"
build() {
- cd "$builddir"
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/rrdtool/APKBUILD b/user/rrdtool/APKBUILD
index f61223adc..2800b01b8 100644
--- a/user/rrdtool/APKBUILD
+++ b/user/rrdtool/APKBUILD
@@ -1,24 +1,25 @@
# Contributor: Valery Kartel <valery.kartel@gmail.com>
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=rrdtool
-pkgver=1.7.1
-pkgrel=0
+pkgver=1.8.0
+pkgrel=1
pkgdesc="Data logging and graphing application"
url="https://oss.oetiker.ch/rrdtool/"
arch="all"
-options="!check" # Tests fail because of CET time zone begin date changing.
license="GPL-2.0+"
depends="font-sony-misc"
+checkdepends="bc"
makedepends="cairo-dev freetype-dev groff libart-lgpl-dev libpng-dev
libxml2-dev pango-dev perl-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang perl-rrd:perl_rrd
$pkgname-cached $pkgname-cgi $pkgname-utils librrd:libs"
-source="https://oss.oetiker.ch/$pkgname/pub/$pkgname-$pkgver.tar.gz
+source="https://github.com/oetiker/$pkgname-${pkgver%%.*}.x/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz
rrdcached.initd
+ signedness.patch
+ time64.patch
"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,12 +33,10 @@ build() {
}
check() {
- cd "$builddir"
- make check
+ LANG=C.UTF-8 LC_ALL=C.UTF-8 TZ=UTC make check
}
package() {
- cd "$builddir"
export INSTALLDIRS=vendor
make DESTDIR="$pkgdir" install
find "$pkgdir" -name '.packlist' -delete
@@ -51,7 +50,7 @@ dev() {
}
perl_rrd() {
- depends=
+ depends=""
pkgdesc="Perl interface for rrdtool"
mkdir -p "$subpkgdir"/usr/lib \
"$pkgdir"/usr/share
@@ -60,7 +59,7 @@ perl_rrd() {
}
cached() {
- depends=
+ depends=""
pkgdesc="RRDtool data caching daemon"
mkdir -p "$subpkgdir"/usr/sbin \
"$subpkgdir"/var/lib/rrdcached/db \
@@ -70,14 +69,14 @@ cached() {
}
cgi() {
- depends=
+ depends=""
pkgdesc="Create web pages containing RRD graphs based on templates"
mkdir -p "$subpkgdir"/usr/bin
mv "$pkgdir"/usr/bin/rrdcgi "$subpkgdir"/usr/bin
}
utils() {
- depends=
+ depends=""
pkgdesc="RRDtool standalone utilities"
mkdir -p "$subpkgdir"/usr/bin
mv "$pkgdir"/usr/bin/rrdinfo \
@@ -86,5 +85,7 @@ utils() {
"$subpkgdir"/usr/bin
}
-sha512sums="ee5c9ff234493442ccd9bfc7031700483011de3e05c01e026509b699cb0d7d3e286e2046357c5fff5807f3e709043c8f218b48b43f8b126a23e228a3927d7b14 rrdtool-1.7.1.tar.gz
-c0c27b2c2dfa8e7ec1cb1160d2bda8d7996bbea67f4ce7779da029f583c35e5e415cf46e2a1e5cb8ed2e63d2c58a68fd7471ee6bd820db4c0f4eeeb5c252f8a3 rrdcached.initd"
+sha512sums="8ae6f94d119e8d0e1ba7f2d0738f1ba008a4880d1022f1c0c5436f662d961fceec5c42e01c241493ece3d6f55c60fd7d1d264f93e678f3cf1251201dcde027c1 rrdtool-1.8.0.tar.gz
+c0c27b2c2dfa8e7ec1cb1160d2bda8d7996bbea67f4ce7779da029f583c35e5e415cf46e2a1e5cb8ed2e63d2c58a68fd7471ee6bd820db4c0f4eeeb5c252f8a3 rrdcached.initd
+da1218051c10c86bf19a1e2435f69dc072f231d22513bc474491bd7901427921be5ba1ff889166e9f9b3a95473055d64dfbc53d477da8b6446de2d5901ff78e6 signedness.patch
+aa119ea9a9b819b6d51b3a4351f26a34f0d4fdfeb28ee8f1b20a16ca8b9b1f6a6b85012fc53e40cc6ddee4dc0006b095476363f54e8c856b39da2ed7f4a0b8d9 time64.patch"
diff --git a/user/rrdtool/no-posix-fallocate.patch b/user/rrdtool/no-posix-fallocate.patch
deleted file mode 100644
index c34c5a187..000000000
--- a/user/rrdtool/no-posix-fallocate.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- rrdtool-1.4.8.orig/configure.ac
-+++ rrdtool-1.4.8/configure.ac
-@@ -280,9 +280,6 @@
- #include <fcntl.h>])
- AC_CHECK_FUNCS(posix_fadvise)
-
--dnl can we use posix_fallocate
--AC_CHECK_FUNCS(posix_fallocate)
--
- CONFIGURE_PART(Libintl Processing)
-
- AM_GNU_GETTEXT_VERSION(0.17)
diff --git a/user/rrdtool/signedness.patch b/user/rrdtool/signedness.patch
new file mode 100644
index 000000000..ad3451d9f
--- /dev/null
+++ b/user/rrdtool/signedness.patch
@@ -0,0 +1,32 @@
+From b74a0d64e00770384d025e40becdb2ed83c04c0c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Wolfgang=20St=C3=B6ggl?= <c72578@yahoo.de>
+Date: Fri, 1 Apr 2022 19:14:49 +0200
+Subject: [PATCH] Fix unsigned integer overflow in rrdtool first
+
+This fixes a signed/unsigned conversion bug in the calculation of
+"then". Background info:
+pdp_cnt and pdp_step are both unsigned long, whereas timer is signed.
+When multiplying signed and unsigned integers (same size), a signed is
+implicitly typecast to unsigned.
+
+- A similar fix has already been applied to rrd_dump.c
+ in commit e193975
+- Resolves #1140
+---
+ src/rrd_first.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/rrd_first.c b/src/rrd_first.c
+index 0e93397c3..a696c5c38 100644
+--- a/src/rrd_first.c
++++ b/src/rrd_first.c
+@@ -113,7 +113,8 @@ time_t rrd_first_r(
+ then = (rrd.live_head->last_up -
+ rrd.live_head->last_up %
+ (rrd.rra_def[rraindex].pdp_cnt * rrd.stat_head->pdp_step)) +
+- (timer * rrd.rra_def[rraindex].pdp_cnt * rrd.stat_head->pdp_step);
++ (timer * (long) rrd.rra_def[rraindex].pdp_cnt *
++ (long) rrd.stat_head->pdp_step);
+ err_close:
+ rrd_close(rrd_file);
+ err_free:
diff --git a/user/rrdtool/time64.patch b/user/rrdtool/time64.patch
new file mode 100644
index 000000000..5f5eea43e
--- /dev/null
+++ b/user/rrdtool/time64.patch
@@ -0,0 +1,51 @@
+--- rrdtool-1.8.0/src/rrd_graph_helper.c.old 2022-03-14 14:30:12.000000000 +0000
++++ rrdtool-1.8.0/src/rrd_graph_helper.c 2022-12-10 23:14:10.132482183 +0000
+@@ -1901,7 +1901,7 @@
+ dprintf("SHIFTBY : %s (%i)\n", im->gdes[gdp->shidx].vname,
+ gdp->shidx);
+ } else {
+-#if defined _WIN32 && SIZEOF_TIME_T == 8 /* in case of __MINGW64__, _WIN64 and _MSC_VER >= 1400 (ifndef _USE_32BIT_TIME_T) */
++#if SIZEOF_TIME_T == 8 /* in case of __MINGW64__, _WIN64 and _MSC_VER >= 1400 (ifndef _USE_32BIT_TIME_T) */
+ dprintf("SHIFTBY : %lli\n", gdp->shval); /* argument 3 has type 'time_t {aka long long int}' */
+ #else
+ dprintf("SHIFTBY : %li\n", gdp->shval);
+--- rrdtool-1.8.0/src/rrd_lastupdate.c.old 2022-03-14 14:30:12.000000000 +0000
++++ rrdtool-1.8.0/src/rrd_lastupdate.c 2022-12-10 23:14:48.138375888 +0000
+@@ -77,7 +77,7 @@
+ printf(" %s", ds_names[i]);
+ printf ("\n\n");
+
+-#if defined _WIN32 && SIZEOF_TIME_T == 8 /* in case of __MINGW64__, _WIN64 and _MSC_VER >= 1400 (ifndef _USE_32BIT_TIME_T) */
++#if SIZEOF_TIME_T == 8 /* in case of __MINGW64__, _WIN64 and _MSC_VER >= 1400 (ifndef _USE_32BIT_TIME_T) */
+ printf ("%10llu:", last_update); /* argument 2 has type 'time_t {aka long long int} */
+ #else
+ printf ("%10lu:", last_update);
+--- rrdtool-1.8.0/src/rrd_tool.c.old 2022-03-14 14:30:12.000000000 +0000
++++ rrdtool-1.8.0/src/rrd_tool.c 2022-12-10 23:14:38.579408674 +0000
+@@ -723,7 +723,7 @@
+ else if (strcmp("resize", argv[1]) == 0)
+ rrd_resize(argc - 1, &argv[1]);
+ else if (strcmp("last", argv[1]) == 0)
+-#if defined _WIN32 && SIZEOF_TIME_T == 8 /* in case of __MINGW64__, _WIN64 and _MSC_VER >= 1400 (ifndef _USE_32BIT_TIME_T) */
++#if SIZEOF_TIME_T == 8 /* in case of __MINGW64__, _WIN64 and _MSC_VER >= 1400 (ifndef _USE_32BIT_TIME_T) */
+ printf("%lld\n", rrd_last(argc - 1, &argv[1]));
+ #else
+ printf("%ld\n", rrd_last(argc - 1, &argv[1]));
+@@ -731,7 +731,7 @@
+ else if (strcmp("lastupdate", argv[1]) == 0) {
+ rrd_lastupdate(argc - 1, &argv[1]);
+ } else if (strcmp("first", argv[1]) == 0)
+-#if defined _WIN32 && SIZEOF_TIME_T == 8 /* in case of __MINGW64__, _WIN64 and _MSC_VER >= 1400 (ifndef _USE_32BIT_TIME_T) */
++#if SIZEOF_TIME_T == 8 /* in case of __MINGW64__, _WIN64 and _MSC_VER >= 1400 (ifndef _USE_32BIT_TIME_T) */
+ printf("%lld\n", rrd_first(argc - 1, &argv[1]));
+ #else
+ printf("%ld\n", rrd_first(argc - 1, &argv[1]));
+@@ -753,7 +753,7 @@
+ printf("%20s", ds_namv[i]);
+ printf("\n\n");
+ for (ti = start + step; ti <= end; ti += step) {
+-#if defined _WIN32 && SIZEOF_TIME_T == 8 /* in case of __MINGW64__, _WIN64 and _MSC_VER >= 1400 (ifndef _USE_32BIT_TIME_T) */
++#if SIZEOF_TIME_T == 8 /* in case of __MINGW64__, _WIN64 and _MSC_VER >= 1400 (ifndef _USE_32BIT_TIME_T) */
+ printf("%10llu:", ti);
+ #else
+ printf("%10lu:", ti);
diff --git a/user/rsibreak/APKBUILD b/user/rsibreak/APKBUILD
index 1096db075..e3afeb409 100644
--- a/user/rsibreak/APKBUILD
+++ b/user/rsibreak/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=rsibreak
-pkgver=0.12.9
+pkgver=0.12.15
pkgrel=0
pkgdesc="Helps you avoid wrist injury by telling you when to stop for a rest"
url="https://www.kde.org/applications/utilities/rsibreak/"
@@ -17,7 +17,6 @@ subpackages="$pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/rsibreak/0.12/rsibreak-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="37b193b0fffffcef6ffdb04950f5eb6f2503db3830e0c5142ad820243b4826567d2e4139e14ae2a6bdd08e6c7a0fb5a7b29b627d2dfb10fc7135e9bf86cb6e57 rsibreak-0.12.9.tar.xz"
+sha512sums="8178387716b9d611a33ce72070bae1c3d55ad098100a701fcae9f40a8db4bb29eda364a799223a6fea5671e44e0a5a41aa2b6dff2fb50a832221e468c17de87b rsibreak-0.12.15.tar.xz"
diff --git a/user/rspamd/10-conf-split-workers.patch b/user/rspamd/10-conf-split-workers.patch
new file mode 100644
index 000000000..be8f073e4
--- /dev/null
+++ b/user/rspamd/10-conf-split-workers.patch
@@ -0,0 +1,88 @@
+Since we split workers into subpackages, we have to split the main config
+that defines workers to be loaded.
+
+NOTE: This is intentionally done in patch file instead of modifying the config
+with sed and generating the worker configs to avoid silent breakages when
+upgrading the aport!
+
+--- a/conf/rspamd.conf
++++ b/conf/rspamd.conf
+@@ -35,33 +35,4 @@
+ .include(try=true; priority=10) "$LOCAL_CONFDIR/override.d/logging.inc"
+ }
+
+-worker "normal" {
+- bind_socket = "localhost:11333";
+- .include "$CONFDIR/worker-normal.inc"
+- .include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/worker-normal.inc"
+- .include(try=true; priority=10) "$LOCAL_CONFDIR/override.d/worker-normal.inc"
+-}
+-
+-worker "controller" {
+- bind_socket = "localhost:11334";
+- .include "$CONFDIR/worker-controller.inc"
+- .include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/worker-controller.inc"
+- .include(try=true; priority=10) "$LOCAL_CONFDIR/override.d/worker-controller.inc"
+-}
+-
+-worker "rspamd_proxy" {
+- bind_socket = "localhost:11332";
+- .include "$CONFDIR/worker-proxy.inc"
+- .include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/worker-proxy.inc"
+- .include(try=true; priority=10) "$LOCAL_CONFDIR/override.d/worker-proxy.inc"
+-}
+-
+-# Local fuzzy storage is disabled by default
+-
+-worker "fuzzy" {
+- bind_socket = "localhost:11335";
+- count = -1; # Disable by default, see #4677 for details
+- .include "$CONFDIR/worker-fuzzy.inc"
+- .include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/worker-fuzzy.inc"
+- .include(try=true; priority=10) "$LOCAL_CONFDIR/override.d/worker-fuzzy.inc"
+-}
++.include(glob=true) "$CONFDIR/worker-*.conf"
+--- /dev/null
++++ b/conf/worker-normal.conf
+@@ -0,0 +1,8 @@
++# Included from top-level .conf file
++
++worker "normal" {
++ bind_socket = "localhost:11333";
++ .include "$CONFDIR/worker-normal.inc"
++ .include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/worker-normal.inc"
++ .include(try=true; priority=10) "$LOCAL_CONFDIR/override.d/worker-normal.inc"
++}
+--- /dev/null
++++ b/conf/worker-controller.conf
+@@ -0,0 +1,8 @@
++# Included from top-level .conf file
++
++worker "controller" {
++ bind_socket = "localhost:11334";
++ .include "$CONFDIR/worker-controller.inc"
++ .include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/worker-controller.inc"
++ .include(try=true; priority=10) "$LOCAL_CONFDIR/override.d/worker-controller.inc"
++}
+--- /dev/null
++++ b/conf/worker-proxy.conf
+@@ -0,0 +1,8 @@
++# Included from top-level .conf file
++
++worker "rspamd_proxy" {
++ bind_socket = "localhost:11332";
++ .include "$CONFDIR/worker-proxy.inc"
++ .include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/worker-proxy.inc"
++ .include(try=true; priority=10) "$LOCAL_CONFDIR/override.d/worker-proxy.inc"
++}
+--- /dev/null
++++ b/conf/worker-fuzzy.conf
+@@ -0,0 +1,8 @@
++# Included from top-level .conf file
++
++worker "fuzzy" {
++ bind_socket = "localhost:11335";
++ .include "$CONFDIR/worker-fuzzy.inc"
++ .include(try=true; priority=1,duplicate=merge) "$LOCAL_CONFDIR/local.d/worker-fuzzy.inc"
++ .include(try=true; priority=10) "$LOCAL_CONFDIR/override.d/worker-fuzzy.inc"
++}
diff --git a/user/rspamd/APKBUILD b/user/rspamd/APKBUILD
new file mode 100644
index 000000000..e4d36f982
--- /dev/null
+++ b/user/rspamd/APKBUILD
@@ -0,0 +1,142 @@
+# Contributor: Valery Kartel <valery.kartel@gmail.com>
+# Contributor: Nathan Angelacos <nangel@alpinelinux.org>
+# Contributor: TBK <alpine@jjtc.eu>
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Contributor: Duncan Bellamy <dunk@denkimushi.com>
+# Maintainer: Lee Starnes <lee@canned-death.us>
+pkgname=rspamd
+pkgver=3.11.1
+pkgrel=0
+pkgdesc="Fast, free and open-source spam filtering system"
+url="https://rspamd.com/"
+arch="all"
+options="!check" # Tests require LuaJIT's ffi module
+license="Apache-2.0 AND BSD-1-Clause AND BSD-2-Clause AND BSD-3-Clause AND CC0-1.0 AND LGPL-2.1+ AND LGPL-3.0-only AND MIT AND Zlib"
+pkgusers="rspamd"
+pkggroups="rspamd"
+depends=""
+checkdepends="luarocks"
+makedepends="
+ cmake
+ curl-dev
+ file-dev
+ glib-dev
+ icu-dev
+ libarchive-dev
+ libevent-dev
+ libexecinfo-dev
+ libgd-dev
+ libsodium-dev
+ lua5.3
+ lua5.3-dev
+ openssl-dev
+ pcre2-dev
+ perl
+ ragel
+ sqlite-dev
+ zstd-dev
+ "
+install="$pkgname.pre-install"
+subpackages="
+ $pkgname-doc
+ $pkgname-client
+ $pkgname-libs
+ $pkgname-utils::noarch
+ $pkgname-openrc
+ $pkgname-dbg
+ "
+ldpath="/usr/lib/rspamd"
+source="$pkgname-$pkgver.tar.gz::https://github.com/rspamd/rspamd/archive/$pkgver.tar.gz
+ $pkgname.logrotated
+ $pkgname.initd
+ $pkgname.confd
+ "
+
+provides="
+ rspamd-controller=$pkgver-r$pkgrel
+ rspamd-fuzzy=$pkgver-r$pkgrel
+ rspamd-proxy=$pkgver-r$pkgrel
+ "
+
+replaces="rspamd-controller rspamd-fuzzy rspamd-proxy"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ LDFLAGS="$LDFLAGS -lexecinfo" cmake -B build \
+ -DCMAKE_BUILD_TYPE=None \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCONFDIR=/etc/$pkgname \
+ -DRUNDIR=/run/$pkgname \
+ -DRSPAMD_USER=$pkgusers \
+ -DRSPAMD_GROUP=$pkggroups \
+ -DENABLE_LUAJIT=OFF \
+ -DLUA_INCLUDE_DIR=/usr/include/lua5.3 \
+ -DLUA_LIBRARY=/usr/lib/lua5.3/liblua.so \
+ -DENABLE_URL_INCLUDE=ON \
+ -DENABLE_BACKWARD=OFF \
+ -DENABLE_PCRE2=ON \
+ -DENABLE_URL_INCLUDE=ON \
+ -DSYSTEM_ZSTD=ON \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ "$CMAKE_CROSSOPTS" .
+ cmake --build build --target all
+}
+
+check() {
+ cmake --build build --target run-test
+}
+
+package() {
+ DESTDIR="$pkgdir" cmake --install build
+
+ cd "$pkgdir"
+
+ install -D usr/share/"$pkgname"/www/README.md \
+ usr/share/doc/"$pkgname"/README.md
+ rm usr/share/"$pkgname"/www/README.md
+
+ install -Dm 644 "$srcdir"/$pkgname.logrotated etc/logrotate.d/$pkgname
+ install -Dm 755 "$srcdir"/$pkgname.initd etc/init.d/$pkgname
+ install -Dm 644 "$srcdir"/$pkgname.confd etc/conf.d/$pkgname
+ install -d etc/"$pkgname"/local.d etc/"$pkgname"/override.d
+
+ mkdir -p etc/$pkgname/local.d \
+ etc/$pkgname/override.d
+
+ install -dm 750 -o rspamd -g rspamd \
+ var/lib/$pkgname
+ install -dm 750 -o rspamd -g rspamd \
+ var/log/$pkgname
+ install -dm 755 -o rspamd -g rspamd \
+ etc/$pkgname/local.d/maps.d
+}
+
+client() {
+ pkgdesc="$pkgdesc (console client)"
+
+ mkdir -p "$subpkgdir/usr/bin"
+ mv "$pkgdir"/usr/bin/rspamc* "$subpkgdir/usr/bin/"
+}
+
+libs() {
+ pkgdesc="$pkgdesc (libraries)"
+
+ mkdir -p "$subpkgdir/usr/lib/$pkgname"
+ mv "$pkgdir/usr/lib/$pkgname/"*.so "$subpkgdir/usr/lib/$pkgname/"
+}
+
+utils() {
+ pkgdesc="$pkgdesc (utilities)"
+ depends="perl"
+
+ mkdir -p "$subpkgdir/usr/bin"
+ mv "$pkgdir/usr/bin/${pkgname}"_stats "$subpkgdir/usr/bin/"
+}
+
+sha512sums="979aad9d2cc720c12922d55f4ad742b65e18d0ca52ebb764a2432bd3d64e559461c8e1fa87f7ac52e614df71d0a776aa0362a876eaa745cd3f8c21afee52b8ab rspamd-3.11.1.tar.gz
+2efe28575c40d1fba84b189bb872860e744400db80dce2f6330be6c6287fb3f46e6511284729b957488bf40bcb9b0952e26df9934f5f138334bd2766075c45cb rspamd.logrotated
+c136126e3d3953079939b2b0b9b49f5f921af4c3aa0ad59a206632436ff963a69b5980a3b8e4eb14882d8db31d6fd96045a9e1cd6302ad111d76b8e92fab890e rspamd.initd
+a2003ef0c9d64a44480f59302864a2dfedcbe3a0047fcbb655408bc8aae9014b6ad0ddc6b64d4abeeb21bea0f86678afd30589ac8eed83e07ad7f87710e93702 rspamd.confd"
diff --git a/user/rspamd/rspamd.confd b/user/rspamd/rspamd.confd
new file mode 100644
index 000000000..620eecb94
--- /dev/null
+++ b/user/rspamd/rspamd.confd
@@ -0,0 +1,13 @@
+# Configuration for /etc/init.d/rspamd
+
+# User and group to run rspamd workers.
+#command_user="rspamd:rspamd"
+
+# Path of the main configuration file.
+#cfgfile="/etc/rspamd/rspamd.conf"
+
+# Where to log startup configuration checking:
+# - /dev/null - silent if check pass (default)
+# - /dev/stdout - always print output on the curent terminal
+# - /path/filename - append output to the specified logfile
+#startuplog="/var/log/rspamd/startup.log"
diff --git a/user/rspamd/rspamd.initd b/user/rspamd/rspamd.initd
new file mode 100644
index 000000000..cf0ea79ab
--- /dev/null
+++ b/user/rspamd/rspamd.initd
@@ -0,0 +1,51 @@
+#!/sbin/openrc-run
+
+extra_commands="checkconfig"
+extra_started_commands="reload reopen"
+
+description="Rapid spam filtering system"
+description_checkconfig="Check configuration"
+description_reload="Reload configuration"
+description_reopen="Reopen log files"
+
+# Uppercase variables are here for backward compatibility only.
+: ${command_user:="${RSPAMD_USER:-rspamd}:${RSPAMD_GROUP:-rspamd}"}
+: ${cfgfile:=${RSPAMD_CONFIG:-/etc/rspamd/rspamd.conf}}
+: ${startuplog:=${RSPAMD_STARTUPLOG:-/dev/null}}
+
+command="/usr/bin/rspamd"
+command_args="--config $cfgfile --no-fork ${command_args:-}"
+command_background="yes"
+pidfile="/run/rspamd/$RC_SVCNAME.pid"
+
+required_files="$cfgfile"
+
+depend() {
+ need localmount net
+ before mta
+ after redis
+}
+
+start_pre() {
+ checkpath -d -m 755 -o "$command_user" ${pidfile%/*}
+ checkconfig >/dev/null 2>>"$startuplog" || checkconfig
+}
+
+checkconfig() {
+ ebegin "Checking $name configuration"
+
+ rspamadm configtest
+ eend $?
+}
+
+reload() {
+ ebegin "Reloading $name configuration"
+ start_pre && start-stop-daemon --signal HUP --pidfile $pidfile
+ eend $?
+}
+
+reopen() {
+ ebegin "Reopening $name log files"
+ start-stop-daemon --signal USR1 --pidfile $pidfile
+ eend $?
+}
diff --git a/user/rspamd/rspamd.logrotated b/user/rspamd/rspamd.logrotated
new file mode 100644
index 000000000..2a443f2de
--- /dev/null
+++ b/user/rspamd/rspamd.logrotated
@@ -0,0 +1,11 @@
+/var/log/rspamd/*log {
+ daily
+ rotate 10
+ missingok
+ notifempty
+ compress
+ sharedscripts
+ postrotate
+ /etc/init.d/rspamd --ifstarted --quiet reopen
+ endscript
+}
diff --git a/user/rspamd/rspamd.pre-install b/user/rspamd/rspamd.pre-install
new file mode 100644
index 000000000..b2f35bdd8
--- /dev/null
+++ b/user/rspamd/rspamd.pre-install
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+groupadd -r rspamd 2>/dev/null
+useradd -r -d /var/lib/rspamd -s /sbin/nologin -G rspamd -g rspamd rspamd 2>/dev/null
+
+exit 0
diff --git a/user/rtmpdump/APKBUILD b/user/rtmpdump/APKBUILD
index aeaf04c49..6b682ee21 100644
--- a/user/rtmpdump/APKBUILD
+++ b/user/rtmpdump/APKBUILD
@@ -1,9 +1,8 @@
-# Contributor: Carlo Landmeter
-# Maintainer:
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=rtmpdump
-verbase=2.4
-pkgver=2.4_git20160909
-pkgrel=4
+pkgver=2.4
+pkgrel=0
pkgdesc="A tool to download rtmp:// and rtmpe:// streams"
url="http://rtmpdump.mplayerhq.hu/"
arch="all"
@@ -13,18 +12,16 @@ depends=""
depends_dev="zlib-dev"
makedepends="$depends_dev linux-headers openssl-dev"
subpackages="$pkgname-dev $pkgname-doc librtmp"
-giturl="git://git.ffmpeg.org/rtmpdump"
-disturl="dev.alpinelinux.org:/archive/rtmpdump"
-source="http://dev.alpinelinux.org/archive/rtmpdump/rtmpdump-${pkgver}.tar.gz
- fix-chunk-size.patch"
+source="https://distfiles.adelielinux.org/source/rtmpdump-$pkgver.tar.xz
+ fix-chunk-size.patch
+ openssl11.patch
+ "
build() {
- cd "$builddir"
make
}
package() {
- cd "$builddir"
make -j1 prefix=/usr MANDIR="$pkgdir/usr/share/man" DESTDIR="$pkgdir" install
}
@@ -35,5 +32,6 @@ librtmp() {
mv "$pkgdir"/usr/lib "$subpkgdir"/usr/
}
-sha512sums="e42eda75679addb6f919f42ddce2d27a6988f505602bb70ecb4d071324b59f21d573f8b73fda3b29960c095e20303b84f6eb6254cd327803430d8065cf5d172b rtmpdump-2.4_git20160909.tar.gz
-f97b4780fb8cfffccf59785c5a89c8d4929e21ec587192f10602caaf9a0b008dfbfebaa09db1d9d955fc9911fc443d76bf19972cc59fedfab5a8889f7fe70b5d fix-chunk-size.patch"
+sha512sums="5273452508b3187aa1a7431fb0b44b1a5883dc6b28f6eda92b4a2db6925c72dea68bdd666a2affd68476ef8db714db4022a9417323c8ef3c58bbf1f407fe99d4 rtmpdump-2.4.tar.xz
+f97b4780fb8cfffccf59785c5a89c8d4929e21ec587192f10602caaf9a0b008dfbfebaa09db1d9d955fc9911fc443d76bf19972cc59fedfab5a8889f7fe70b5d fix-chunk-size.patch
+6533efc24d22b55cea8db0ba2d4ed5fc2672e17b2ef80a987a65f54abe815cb1337b571a9e2a6cd12b826d129da427c2c0e1c16241f24e67a3ca66761a894e2d openssl11.patch"
diff --git a/user/rtmpdump/openssl11.patch b/user/rtmpdump/openssl11.patch
new file mode 100644
index 000000000..ba4ad9359
--- /dev/null
+++ b/user/rtmpdump/openssl11.patch
@@ -0,0 +1,251 @@
+Another Great Gentoo Hack™.
+
+"Upstream": https://gitweb.gentoo.org/repo/gentoo.git/plain/media-video/rtmpdump/files/rtmpdump-openssl-1.1-v2.patch
+Originally from: https://raw.githubusercontent.com/xbmc/inputstream.rtmp/master/depends/common/librtmp/0003-openssl-1.1.patch
+See also: https://github.com/xbmc/inputstream.rtmp/pull/46
+--- a/librtmp/dh.h
++++ b/librtmp/dh.h
+@@ -253,20 +253,42 @@
+ if (!dh)
+ goto failed;
+
++#if !defined(USE_OPENSSL) || !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L
+ MP_new(dh->g);
+
+ if (!dh->g)
+ goto failed;
++#else
++ BIGNUM *g = NULL;
++ MP_new(g);
++ if (!g)
++ goto failed;
++#endif
+
++#if !defined(USE_OPENSSL) || !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L
+ MP_gethex(dh->p, P1024, res); /* prime P1024, see dhgroups.h */
++#else
++ BIGNUM* p = NULL;
++ DH_get0_pqg(dh, (BIGNUM const**)&p, NULL, NULL);
++ MP_gethex(p, P1024, res); /* prime P1024, see dhgroups.h */
++#endif
+ if (!res)
+ {
+ goto failed;
+ }
+
++#if !defined(USE_OPENSSL) || !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L
+ MP_set_w(dh->g, 2); /* base 2 */
++#else
++ MP_set_w(g, 2); /* base 2 */
++ DH_set0_pqg(dh, p, NULL, g);
++#endif
+
++#if !defined(USE_OPENSSL) || !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L
+ dh->length = nKeyBits;
++#else
++ DH_set_length(dh, nKeyBits);
++#endif
+ return dh;
+
+ failed:
+@@ -293,12 +315,24 @@
+ MP_gethex(q1, Q1024, res);
+ assert(res);
+
++#if !defined(USE_OPENSSL) || !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L
+ res = isValidPublicKey(dh->pub_key, dh->p, q1);
++#else
++ BIGNUM const* pub_key = NULL;
++ BIGNUM const* p = NULL;
++ DH_get0_key(dh, &pub_key, NULL);
++ DH_get0_pqg(dh, &p, NULL, NULL);
++ res = isValidPublicKey((BIGNUM*)pub_key, (BIGNUM*)p, q1);
++#endif
+ if (!res)
+ {
++#if !defined(USE_OPENSSL) || !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L
+ MP_free(dh->pub_key);
+ MP_free(dh->priv_key);
+ dh->pub_key = dh->priv_key = 0;
++#else
++ DH_free(dh);
++#endif
+ }
+
+ MP_free(q1);
+@@ -314,15 +348,29 @@
+ DHGetPublicKey(MDH *dh, uint8_t *pubkey, size_t nPubkeyLen)
+ {
+ int len;
++#if !defined(USE_OPENSSL) || !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L
+ if (!dh || !dh->pub_key)
++#else
++ BIGNUM const* pub_key = NULL;
++ DH_get0_key(dh, &pub_key, NULL);
++ if (!dh || !pub_key)
++#endif
+ return 0;
+
++#if !defined(USE_OPENSSL) || !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L
+ len = MP_bytes(dh->pub_key);
++#else
++ len = MP_bytes(pub_key);
++#endif
+ if (len <= 0 || len > (int) nPubkeyLen)
+ return 0;
+
+ memset(pubkey, 0, nPubkeyLen);
++#if !defined(USE_OPENSSL) || !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L
+ MP_setbin(dh->pub_key, pubkey + (nPubkeyLen - len), len);
++#else
++ MP_setbin(pub_key, pubkey + (nPubkeyLen - len), len);
++#endif
+ return 1;
+ }
+
+@@ -364,7 +412,13 @@
+ MP_gethex(q1, Q1024, len);
+ assert(len);
+
++#if !defined(USE_OPENSSL) || !defined(OPENSSL_VERSION_NUMBER) || OPENSSL_VERSION_NUMBER < 0x10100000L
+ if (isValidPublicKey(pubkeyBn, dh->p, q1))
++#else
++ BIGNUM const* p = NULL;
++ DH_get0_pqg(dh, &p, NULL, NULL);
++ if (isValidPublicKey(pubkeyBn, (BIGNUM*)p, q1))
++#endif
+ res = MDH_compute_key(secret, nPubkeyLen, pubkeyBn, dh);
+ else
+ res = -1;
+--- a/librtmp/handshake.h
++++ b/librtmp/handshake.h
+@@ -31,9 +31,9 @@
+ #define SHA256_DIGEST_LENGTH 32
+ #endif
+ #define HMAC_CTX sha2_context
+-#define HMAC_setup(ctx, key, len) sha2_hmac_starts(&ctx, (unsigned char *)key, len, 0)
+-#define HMAC_crunch(ctx, buf, len) sha2_hmac_update(&ctx, buf, len)
+-#define HMAC_finish(ctx, dig, dlen) dlen = SHA256_DIGEST_LENGTH; sha2_hmac_finish(&ctx, dig)
++#define HMAC_setup(ctx, key, len) sha2_hmac_starts(ctx, (unsigned char *)key, len, 0)
++#define HMAC_crunch(ctx, buf, len) sha2_hmac_update(ctx, buf, len)
++#define HMAC_finish(ctx, dig, dlen) dlen = SHA256_DIGEST_LENGTH; sha2_hmac_finish(ctx, dig)
+
+ typedef arc4_context * RC4_handle;
+ #define RC4_alloc(h) *h = malloc(sizeof(arc4_context))
+@@ -50,9 +50,9 @@
+ #endif
+ #undef HMAC_CTX
+ #define HMAC_CTX struct hmac_sha256_ctx
+-#define HMAC_setup(ctx, key, len) hmac_sha256_set_key(&ctx, len, key)
+-#define HMAC_crunch(ctx, buf, len) hmac_sha256_update(&ctx, len, buf)
+-#define HMAC_finish(ctx, dig, dlen) dlen = SHA256_DIGEST_LENGTH; hmac_sha256_digest(&ctx, SHA256_DIGEST_LENGTH, dig)
++#define HMAC_setup(ctx, key, len) hmac_sha256_set_key(ctx, len, key)
++#define HMAC_crunch(ctx, buf, len) hmac_sha256_update(ctx, len, buf)
++#define HMAC_finish(ctx, dig, dlen) dlen = SHA256_DIGEST_LENGTH; hmac_sha256_digest(ctx, SHA256_DIGEST_LENGTH, dig)
+ #define HMAC_close(ctx)
+
+ typedef struct arcfour_ctx* RC4_handle;
+@@ -64,14 +64,23 @@
+
+ #else /* USE_OPENSSL */
+ #include <openssl/sha.h>
++#include <openssl/ossl_typ.h>
+ #include <openssl/hmac.h>
+ #include <openssl/rc4.h>
+ #if OPENSSL_VERSION_NUMBER < 0x0090800 || !defined(SHA256_DIGEST_LENGTH)
+ #error Your OpenSSL is too old, need 0.9.8 or newer with SHA256
+ #endif
+-#define HMAC_setup(ctx, key, len) HMAC_CTX_init(&ctx); HMAC_Init_ex(&ctx, key, len, EVP_sha256(), 0)
+-#define HMAC_crunch(ctx, buf, len) HMAC_Update(&ctx, buf, len)
+-#define HMAC_finish(ctx, dig, dlen) HMAC_Final(&ctx, dig, &dlen); HMAC_CTX_cleanup(&ctx)
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#define HMAC_setup(ctx, key, len) HMAC_CTX_init(ctx); HMAC_Init_ex(ctx, key, len, EVP_sha256(), 0)
++#else
++#define HMAC_setup(ctx, key, len) ctx = HMAC_CTX_new(); HMAC_CTX_reset(ctx); HMAC_Init_ex(ctx, key, len, EVP_sha256(), 0)
++#endif
++#define HMAC_crunch(ctx, buf, len) HMAC_Update(ctx, buf, len)
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#define HMAC_finish(ctx, dig, dlen) HMAC_Final(ctx, dig, &dlen); HMAC_CTX_cleanup(ctx)
++#else
++#define HMAC_finish(ctx, dig, dlen) HMAC_Final(ctx, dig, &dlen); HMAC_CTX_free(ctx)
++#endif
+
+ typedef RC4_KEY * RC4_handle;
+ #define RC4_alloc(h) *h = malloc(sizeof(RC4_KEY))
+@@ -117,7 +126,7 @@
+ {
+ uint8_t digest[SHA256_DIGEST_LENGTH];
+ unsigned int digestLen = 0;
+- HMAC_CTX ctx;
++ HMAC_CTX* ctx = NULL;
+
+ RC4_alloc(rc4keyIn);
+ RC4_alloc(rc4keyOut);
+@@ -266,7 +275,7 @@
+ size_t keylen, uint8_t *digest)
+ {
+ unsigned int digestLen;
+- HMAC_CTX ctx;
++ HMAC_CTX* ctx = NULL;
+
+ HMAC_setup(ctx, key, keylen);
+ HMAC_crunch(ctx, message, messageLen);
+--- a/librtmp/hashswf.c
++++ b/librtmp/hashswf.c
+@@ -37,9 +37,9 @@
+ #define SHA256_DIGEST_LENGTH 32
+ #endif
+ #define HMAC_CTX sha2_context
+-#define HMAC_setup(ctx, key, len) sha2_hmac_starts(&ctx, (unsigned char *)key, len, 0)
+-#define HMAC_crunch(ctx, buf, len) sha2_hmac_update(&ctx, buf, len)
+-#define HMAC_finish(ctx, dig, dlen) dlen = SHA256_DIGEST_LENGTH; sha2_hmac_finish(&ctx, dig)
++#define HMAC_setup(ctx, key, len) sha2_hmac_starts(ctx, (unsigned char *)key, len, 0)
++#define HMAC_crunch(ctx, buf, len) sha2_hmac_update(ctx, buf, len)
++#define HMAC_finish(ctx, dig, dlen) dlen = SHA256_DIGEST_LENGTH; sha2_hmac_finish(ctx, dig)
+ #define HMAC_close(ctx)
+ #elif defined(USE_GNUTLS)
+ #include <nettle/hmac.h>
+@@ -48,19 +48,27 @@
+ #endif
+ #undef HMAC_CTX
+ #define HMAC_CTX struct hmac_sha256_ctx
+-#define HMAC_setup(ctx, key, len) hmac_sha256_set_key(&ctx, len, key)
+-#define HMAC_crunch(ctx, buf, len) hmac_sha256_update(&ctx, len, buf)
+-#define HMAC_finish(ctx, dig, dlen) dlen = SHA256_DIGEST_LENGTH; hmac_sha256_digest(&ctx, SHA256_DIGEST_LENGTH, dig)
++#define HMAC_setup(ctx, key, len) hmac_sha256_set_key(ctx, len, key)
++#define HMAC_crunch(ctx, buf, len) hmac_sha256_update(ctx, len, buf)
++#define HMAC_finish(ctx, dig, dlen) dlen = SHA256_DIGEST_LENGTH; hmac_sha256_digest(ctx, SHA256_DIGEST_LENGTH, dig)
+ #define HMAC_close(ctx)
+ #else /* USE_OPENSSL */
+ #include <openssl/ssl.h>
+ #include <openssl/sha.h>
+ #include <openssl/hmac.h>
+ #include <openssl/rc4.h>
+-#define HMAC_setup(ctx, key, len) HMAC_CTX_init(&ctx); HMAC_Init_ex(&ctx, (unsigned char *)key, len, EVP_sha256(), 0)
+-#define HMAC_crunch(ctx, buf, len) HMAC_Update(&ctx, (unsigned char *)buf, len)
+-#define HMAC_finish(ctx, dig, dlen) HMAC_Final(&ctx, (unsigned char *)dig, &dlen);
+-#define HMAC_close(ctx) HMAC_CTX_cleanup(&ctx)
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#define HMAC_setup(ctx, key, len) HMAC_CTX_init(ctx); HMAC_Init_ex(ctx, (unsigned char *)key, len, EVP_sha256(), 0)
++#else
++#define HMAC_setup(ctx, key, len) ctx = HMAC_CTX_new(); HMAC_CTX_reset(ctx); HMAC_Init_ex(ctx, key, len, EVP_sha256(), 0)
++#endif
++#define HMAC_crunch(ctx, buf, len) HMAC_Update(ctx, (unsigned char *)buf, len)
++#define HMAC_finish(ctx, dig, dlen) HMAC_Final(ctx, (unsigned char *)dig, &dlen);
++#if OPENSSL_VERSION_NUMBER < 0x10100000L
++#define HMAC_close(ctx) HMAC_CTX_cleanup(ctx)
++#else
++#define HMAC_close(ctx) HMAC_CTX_reset(ctx); HMAC_CTX_free(ctx)
++#endif
+ #endif
+
+ extern void RTMP_TLS_Init();
+@@ -289,7 +297,7 @@
+ struct info
+ {
+ z_stream *zs;
+- HMAC_CTX ctx;
++ HMAC_CTX *ctx;
+ int first;
+ int zlib;
+ int size;
diff --git a/user/rttr/APKBUILD b/user/rttr/APKBUILD
new file mode 100644
index 000000000..a4e5385db
--- /dev/null
+++ b/user/rttr/APKBUILD
@@ -0,0 +1,56 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=rttr
+pkgver=0.9.6
+pkgrel=1
+pkgdesc="C++ reflection library"
+url=" "
+arch="all"
+license="MIT"
+depends=""
+makedepends="cmake doxygen graphviz"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/rttrorg/rttr/releases/download/v$pkgver/rttr-$pkgver-src.tar.gz
+ arm64.patch
+ dlclose-doesnt-work.patch
+ install-doc.patch
+ permissions.patch
+ header.patch
+ clang.patch
+ no-pessimising-moves.patch
+ gcc9.patch
+ show-warnings-not-error-out.patch
+ "
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS -Wno-error=class-memaccess -Wno-deprecated-declarations -Wno-pessimizing-move -DNDEBUG" \
+ ${CMAKE_CROSSOPTS} .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="7e0d4fa87f83feda0b926d4d0e52aaf0f369f25fe7e23e5ffe86c0bba159e8353cef44eed37611a81e8ccc8d6facb36942f940d0d0b965f873177d7078f91cf4 rttr-0.9.6-src.tar.gz
+559b4d55109b7021082cdd15663075312d80a896325db2b6bba43bf9d3ba17ecc2152aa30617f200be904351c7f8ba188b7e7a6b29a71612b42d48a5a0535aa7 arm64.patch
+76efa45715d2a6459ae3cf5a6189de414775eed11a1f6780de563005765139ae6be86e30ead63b5ef8e9a5e84ba77a4ef2b7a75ded7506c6c8d81a696a887ff3 dlclose-doesnt-work.patch
+825ca43fb35f6139db13f0b01818b49bb1556a1190ac2941c643e4d438c5b458883fa2ffb64d95625125c251632da7b3d8b703141335df8883b6e186f2e6a349 install-doc.patch
+905e4c62093ee3877a8a15a1cbd4bc20499e04916ce869a495cf4ef9f47aa94d56aa5ac861d0ca8b6079f2a3b398f92237dc423e452130f7c40b9a170a8aa625 permissions.patch
+75ff5e06f92c94db6b7c04846bfff1dcde22b81831a40ad7533cd93fc9ca300c76ca1266081ac4784bc3b94a8b805db28b841702b10d66232c1110d57c812245 header.patch
+3bbdc8feb9b64b4a9f0db138ea0612e3e5a57004fda8b856c30a5f05824009543f396654c6ef3b6e157ce62c7057a239029dd35c749387d9ad91dcc4ac2c00e4 clang.patch
+3e7f81db25f0af6a3924e693d30cb5895fbc13dd3eac752d66082ae34c08fc779de086764f63f52170399cb85c5cf87ef182bdc8d8f054fd7f085bc90e779dc8 no-pessimising-moves.patch
+2dda29b06484bfad15fefe919bce30ab1b6a6f0b9aec10a09736e1018565151cb675874484b4bb573d27d0742fe5943e002074cfa9f822fc1d3888fd3c8a9dc0 gcc9.patch
+f42539edff3b08cf2938a489a9163e3ab81fd43422de1b22a23bae8ef198554f46b5ded4e6f09fb2840fbdd711385563bedcdbb9238569ff7c9484b84eb7bc53 show-warnings-not-error-out.patch"
diff --git a/user/rttr/arm64.patch b/user/rttr/arm64.patch
new file mode 100644
index 000000000..012a30b3f
--- /dev/null
+++ b/user/rttr/arm64.patch
@@ -0,0 +1,22 @@
+From fe98842255defe9f0b922f46b2dd1c067088a1f2 Mon Sep 17 00:00:00 2001
+From: Andreas Schwab <schwab@suse.de>
+Date: Tue, 2 Apr 2019 09:34:47 +0200
+Subject: [PATCH] Support all LP64 architectures
+
+---
+ src/rttr/detail/base/core_prerequisites.h | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/rttr/detail/base/core_prerequisites.h b/src/rttr/detail/base/core_prerequisites.h
+index f60d91c3..6aa29d77 100644
+--- a/src/rttr/detail/base/core_prerequisites.h
++++ b/src/rttr/detail/base/core_prerequisites.h
+@@ -89,7 +89,7 @@ namespace rttr
+ // Architecture
+ /////////////////////////////////////////////////////////////////////////////////////////
+ #if defined(__x86_64__) || defined(_M_X64) || defined(__powerpc64__) || defined(__alpha__) ||\
+- defined(__ia64__) || defined(__s390__) || defined(__s390x__)
++ defined(__ia64__) || defined(__s390__) || defined(__s390x__) || defined(_LP64) || defined(__LP64__)
+ # define RTTR_ARCH_TYPE RTTR_ARCH_64
+ #else
+ # define RTTR_ARCH_TYPE RTTR_ARCH_32
diff --git a/user/rttr/clang.patch b/user/rttr/clang.patch
new file mode 100644
index 000000000..9d1a5431b
--- /dev/null
+++ b/user/rttr/clang.patch
@@ -0,0 +1,141 @@
+From 1a357c61e8bc75d6b1a6b8cc88142fbed25a70e9 Mon Sep 17 00:00:00 2001
+From: acki-m <acki-m@users.noreply.github.com>
+Date: Fri, 14 Sep 2018 08:50:00 +0200
+Subject: [PATCH] Bugfix clang virtual override warning (#192)
+
+* fixed missing use of 'override' in classes that use RTTR_ENABLE
+
+following test case:
+
+struct s_base
+{
+virtual ~s_base() = default; // always use virtual dtor in base class
+RTTR_ENABLE()
+};
+
+struct s_derived : s_base
+{
+~s_derived() override = default;
+// Clang options require "override" on inherited virtual functions
+RTTR_ENABLE(s_base)
+};
+
+clang warning is: 'get_derived_info' overrides a member function but is not marked 'override' [-Werror,-Winconsistent-missing-override]
+
+The fix is to disable the warning for the usage of RTTR_ENABLE only
+
+* add test case code in unit test for warning of override inconsistency
+
+* added missing quotes
+---
+ src/rttr/detail/base/core_prerequisites.h | 21 +++++++++++++++++--
+ src/rttr/rttr_enable.h | 2 ++
+ .../property/property_class_inheritance.cpp | 4 ++++
+ 3 files changed, 25 insertions(+), 2 deletions(-)
+
+diff --git a/src/rttr/detail/base/core_prerequisites.h b/src/rttr/detail/base/core_prerequisites.h
+index d9fc0a22..f60d91c3 100644
+--- a/src/rttr/detail/base/core_prerequisites.h
++++ b/src/rttr/detail/base/core_prerequisites.h
+@@ -261,15 +261,21 @@ namespace rttr
+ # define RTTR_BEGIN_DISABLE_CONDITIONAL_EXPR_WARNING
+ # define RTTR_END_DISABLE_CONDITIONAL_EXPR_WARNING
+ #if RTTR_COMP_VER >= 700
+-
+ #define RTTR_BEGIN_DISABLE_EXCEPT_TYPE_WARNING _Pragma ("GCC diagnostic push") \
+ _Pragma ("GCC diagnostic ignored \"-Wnoexcept-type\"")
+ #define RTTR_END_DISABLE_EXCEPT_TYPE_WARNING _Pragma ("GCC diagnostic pop")
+ #else
+-
+ #define RTTR_BEGIN_DISABLE_EXCEPT_TYPE_WARNING
+ #define RTTR_END_DISABLE_EXCEPT_TYPE_WARNING
++#endif
+
++#if RTTR_COMP_VER >= 510
++# define RTTR_BEGIN_DISABLE_OVERRIDE_WARNING _Pragma ("GCC diagnostic push") \
++ _Pragma ("GCC diagnostic ignored \"-Wsuggest-override\"")
++# define RTTR_END_DISABLE_OVERRIDE_WARNING _Pragma ("GCC diagnostic pop")
++# else
++# define RTTR_BEGIN_DISABLE_OVERRIDE_WARNING
++# define RTTR_END_DISABLE_OVERRIDE_WARNING
+ #endif
+
+ # define RTTR_DECLARE_PLUGIN_CTOR __attribute__((constructor))
+@@ -298,6 +304,15 @@ namespace rttr
+ # define RTTR_END_DISABLE_EXCEPT_TYPE_WARNING
+ #endif
+
++#if defined(__has_warning) && __has_warning("-Winconsistent-missing-override")
++# define RTTR_BEGIN_DISABLE_OVERRIDE_WARNING _Pragma ("clang diagnostic push") \
++ _Pragma ("clang diagnostic ignored \"-Winconsistent-missing-override\"")
++# define RTTR_END_DISABLE_OVERRIDE_WARNING _Pragma ("clang diagnostic pop")
++#else
++# define RTTR_BEGIN_DISABLE_OVERRIDE_WARNING
++# define RTTR_END_DISABLE_OVERRIDE_WARNING
++#endif
++
+ # define RTTR_DECLARE_PLUGIN_CTOR __attribute__((__constructor__))
+ # define RTTR_DECLARE_PLUGIN_DTOR __attribute__((__destructor__))
+
+@@ -315,6 +330,8 @@ namespace rttr
+ # define RTTR_END_DISABLE_EXCEPT_TYPE_WARNING
+ # define RTTR_DECLARE_PLUGIN_CTOR
+ # define RTTR_DECLARE_PLUGIN_DTOR
++# define RTTR_BEGIN_DISABLE_OVERRIDE_WARNING
++# define RTTR_END_DISABLE_OVERRIDE_WARNING
+
+ #else
+ # pragma message("WARNING: unknown compiler, don't know how to disable deprecated warnings")
+diff --git a/src/rttr/rttr_enable.h b/src/rttr/rttr_enable.h
+index 1bd2e774..93d0fadd 100644
+--- a/src/rttr/rttr_enable.h
++++ b/src/rttr/rttr_enable.h
+@@ -81,10 +81,12 @@
+
+ #define RTTR_ENABLE(...) \
+ public:\
++RTTR_BEGIN_DISABLE_OVERRIDE_WARNING \
+ virtual RTTR_INLINE rttr::type get_type() const { return rttr::detail::get_type_from_instance(this); } \
+ virtual RTTR_INLINE void* get_ptr() { return reinterpret_cast<void*>(this); } \
+ virtual RTTR_INLINE rttr::detail::derived_info get_derived_info() { return {reinterpret_cast<void*>(this), rttr::detail::get_type_from_instance(this)}; } \
+ using base_class_list = TYPE_LIST(__VA_ARGS__); \
++RTTR_END_DISABLE_OVERRIDE_WARNING \
+ private:
+
+ #endif // DOXYGEN
+diff --git a/src/unit_tests/property/property_class_inheritance.cpp b/src/unit_tests/property/property_class_inheritance.cpp
+index 3618ac5c..e10c795c 100644
+--- a/src/unit_tests/property/property_class_inheritance.cpp
++++ b/src/unit_tests/property/property_class_inheritance.cpp
+@@ -56,6 +56,7 @@ struct left : virtual top
+ {
+
+ left() : _p2(true){}
++ ~left() override = default;
+ bool _p2;
+
+ RTTR_ENABLE(top)
+@@ -67,6 +68,7 @@ struct right : virtual top
+ {
+
+ right() : _p3(true){}
++ ~right() override = default;
+ bool _p3;
+
+ RTTR_ENABLE(top)
+@@ -77,6 +79,7 @@ struct right : virtual top
+ struct right_2
+ {
+ virtual ~right_2() {}
++
+ right_2() : _p4(true){}
+ bool _p4;
+ RTTR_ENABLE()
+@@ -87,6 +90,7 @@ struct right_2
+ struct bottom : left, right, right_2
+ {
+ bottom() : _p5(23.0){}
++ ~bottom() override = default;
+
+ double _p5;
+
diff --git a/user/rttr/dlclose-doesnt-work.patch b/user/rttr/dlclose-doesnt-work.patch
new file mode 100644
index 000000000..146f16944
--- /dev/null
+++ b/user/rttr/dlclose-doesnt-work.patch
@@ -0,0 +1,94 @@
+musl doesn't support dlclose, so don't test it.
+
+--- rttr-0.9.6/src/unit_tests/misc/library_test.cpp.old 2018-03-26 21:31:07.000000000 +0000
++++ rttr-0.9.6/src/unit_tests/misc/library_test.cpp 2019-04-19 00:10:52.775313358 +0000
+@@ -71,7 +71,7 @@
+ CHECK(lib.get_types().size() == 0);
+ CHECK(lib.get_global_properties().size() == 0);
+ CHECK(lib.get_global_methods().size() == 0);
+- CHECK(does_plugin_type_exist() == false);
++ //CHECK(does_plugin_type_exist() == false);
+ }
+
+ SECTION("negative test")
+@@ -102,7 +102,7 @@
+ #else
+ #error "Don't know library suffix on this plattform!"
+ #endif
+- CHECK(does_plugin_type_exist() == false);
++ //CHECK(does_plugin_type_exist() == false);
+ CHECK(lib.load() == true);
+ REQUIRE(lib.get_error_string().empty() == true);
+ CHECK(does_plugin_type_exist() == true);
+@@ -110,7 +110,7 @@
+ CHECK(lib.get_error_string().empty() == true);
+ CHECK(lib.unload() == true);
+
+- CHECK(does_plugin_type_exist() == false);
++ //CHECK(does_plugin_type_exist() == false);
+ }
+ }
+
+@@ -122,19 +122,19 @@
+ {
+ library lib(library_name);
+
+- CHECK(does_plugin_type_exist() == false);
++ //CHECK(does_plugin_type_exist() == false);
+ CHECK(lib.load() == true);
+ CHECK(lib.load() == true);
+
+ REQUIRE(lib.get_error_string().empty() == true);
+ CHECK(does_plugin_type_exist() == true);
+
+- CHECK(lib.get_types().size() > 1);
++ //CHECK(lib.get_types().size() > 1);
+ CHECK(lib.get_global_properties().size() == 0);
+ CHECK(lib.get_global_methods().size() == 0);
+
+ CHECK(lib.unload() == true);
+- CHECK(does_plugin_type_exist() == false);
++ //CHECK(does_plugin_type_exist() == false);
+ }
+
+ SECTION("load the same lib from different instance multiple times")
+@@ -142,7 +142,7 @@
+ library lib1(library_name);
+ library lib2(library_name);
+
+- CHECK(does_plugin_type_exist() == false);
++ //CHECK(does_plugin_type_exist() == false);
+
+ CHECK(lib1.load() == true);
+ CHECK(lib2.load() == true);
+@@ -156,26 +156,26 @@
+
+ CHECK(lib2.unload() == true);
+
+- CHECK(does_plugin_type_exist() == false);
++ //CHECK(does_plugin_type_exist() == false);
+ }
+
+ SECTION("load the same lib multiple times 2xload() and 2xunload()")
+ {
+ library lib(library_name);
+
+- CHECK(does_plugin_type_exist() == false);
++ //CHECK(does_plugin_type_exist() == false);
+
+ CHECK(lib.load() == true);
+ CHECK(does_plugin_type_exist() == true);
+
+ CHECK(lib.unload() == true);
+- CHECK(does_plugin_type_exist() == false);
++ //CHECK(does_plugin_type_exist() == false);
+
+ CHECK(lib.load() == true);
+ CHECK(does_plugin_type_exist() == true);
+
+ CHECK(lib.unload() == true);
+- CHECK(does_plugin_type_exist() == false);
++ //CHECK(does_plugin_type_exist() == false);
+ }
+ }
+
diff --git a/user/rttr/gcc9.patch b/user/rttr/gcc9.patch
new file mode 100644
index 000000000..4e438859e
--- /dev/null
+++ b/user/rttr/gcc9.patch
@@ -0,0 +1,103 @@
+From 7edbd580cfad509a3253c733e70144e36f02ecd4 Mon Sep 17 00:00:00 2001
+From: Axel Menzel <info@axelmenzel.de>
+Date: Sun, 8 Aug 2021 12:27:15 +0200
+Subject: [PATCH] add github actions workflow & disable gcc9 warnings
+
+Additional: disable initializer list warning
+---
+ .github/workflows/linux.yml | 23 +++++++++++++++++++
+ src/rttr/detail/base/core_prerequisites.h | 15 ++++++++++++
+ src/rttr/detail/variant/variant_data_policy.h | 3 ++-
+ 3 files changed, 40 insertions(+), 1 deletion(-)
+ create mode 100644 .github/workflows/linux.yml
+
+diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml
+new file mode 100644
+index 00000000..c232943e
+--- /dev/null
++++ b/.github/workflows/linux.yml
+@@ -0,0 +1,23 @@
++name: Linux
++
++on: [push]
++env:
++ # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
++ BUILD_TYPE: Release
++
++jobs:
++ build:
++ runs-on: ubuntu-latest
++
++ steps:
++ - uses: actions/checkout@v2
++ - uses: seanmiddleditch/gha-setup-ninja@master
++
++ - name: Configure CMake
++ run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DBUILD_EXAMPLES=OFF -G Ninja
++
++ - name: Build
++ run: cmake --build ${{github.workspace}}/build
++
++ - name: Test
++ run: cmake --build ${{github.workspace}}/build --target run_tests
+diff --git a/src/rttr/detail/base/core_prerequisites.h b/src/rttr/detail/base/core_prerequisites.h
+index 6aa29d77..601ddeb9 100644
+--- a/src/rttr/detail/base/core_prerequisites.h
++++ b/src/rttr/detail/base/core_prerequisites.h
+@@ -278,6 +278,15 @@ namespace rttr
+ # define RTTR_END_DISABLE_OVERRIDE_WARNING
+ #endif
+
++#if RTTR_COMP_VER >= 900
++# define RTTR_BEGIN_DISABLE_INIT_LIST_WARNING _Pragma ("GCC diagnostic push") \
++ _Pragma ("GCC diagnostic ignored \"-Winit-list-lifetime\"")
++# define RTTR_END_DISABLE_INIT_LIST_WARNING _Pragma ("GCC diagnostic pop")
++# else
++# define RTTR_BEGIN_DISABLE_INIT_LIST_WARNING
++# define RTTR_END_DISABLE_INIT_LIST_WARNING
++#endif
++
+ # define RTTR_DECLARE_PLUGIN_CTOR __attribute__((constructor))
+ # define RTTR_DECLARE_PLUGIN_DTOR __attribute__((destructor))
+
+@@ -313,6 +322,10 @@ namespace rttr
+ # define RTTR_END_DISABLE_OVERRIDE_WARNING
+ #endif
+
++
++# define RTTR_BEGIN_DISABLE_INIT_LIST_WARNING
++# define RTTR_END_DISABLE_INIT_LIST_WARNING
++
+ # define RTTR_DECLARE_PLUGIN_CTOR __attribute__((__constructor__))
+ # define RTTR_DECLARE_PLUGIN_DTOR __attribute__((__destructor__))
+
+@@ -332,6 +345,8 @@ namespace rttr
+ # define RTTR_DECLARE_PLUGIN_DTOR
+ # define RTTR_BEGIN_DISABLE_OVERRIDE_WARNING
+ # define RTTR_END_DISABLE_OVERRIDE_WARNING
++# define RTTR_BEGIN_DISABLE_INIT_LIST_WARNING
++# define RTTR_END_DISABLE_INIT_LIST_WARNING
+
+ #else
+ # pragma message("WARNING: unknown compiler, don't know how to disable deprecated warnings")
+diff --git a/src/rttr/detail/variant/variant_data_policy.h b/src/rttr/detail/variant/variant_data_policy.h
+index 39dbb2f9..8eeaafbe 100644
+--- a/src/rttr/detail/variant/variant_data_policy.h
++++ b/src/rttr/detail/variant/variant_data_policy.h
+@@ -434,7 +434,7 @@ struct variant_data_policy_big : variant_data_base_policy<T, variant_data_policy
+ {
+ delete &value;
+ }
+-
++RTTR_BEGIN_DISABLE_INIT_LIST_WARNING
+ static RTTR_INLINE void clone(const T& value, variant_data& dest)
+ {
+ reinterpret_cast<T*&>(dest) = new T(value);
+@@ -450,6 +450,7 @@ struct variant_data_policy_big : variant_data_base_policy<T, variant_data_policy
+ {
+ reinterpret_cast<T*&>(dest) = new T(std::forward<U>(value));
+ }
++RTTR_END_DISABLE_INIT_LIST_WARNING
+ };
+
+ /////////////////////////////////////////////////////////////////////////////////////////
diff --git a/user/rttr/header.patch b/user/rttr/header.patch
new file mode 100644
index 000000000..ee908775b
--- /dev/null
+++ b/user/rttr/header.patch
@@ -0,0 +1,21 @@
+From b16fccf0fbbbf94064bf2a6c7c47f2b910ab31f1 Mon Sep 17 00:00:00 2001
+From: Veawor Liu <veawor@gmail.com>
+Date: Tue, 22 Oct 2019 05:04:47 +0800
+Subject: [PATCH] Fixed compiler errors. (#253)
+
+---
+ src/rttr/variant.h | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/rttr/variant.h b/src/rttr/variant.h
+index cec094b0..40978e3b 100644
+--- a/src/rttr/variant.h
++++ b/src/rttr/variant.h
+@@ -38,6 +38,7 @@
+ #include <cstddef>
+ #include <cstdint>
+ #include <algorithm>
++#include <string>
+
+ namespace rttr
+ {
diff --git a/user/rttr/install-doc.patch b/user/rttr/install-doc.patch
new file mode 100644
index 000000000..ec33d2440
--- /dev/null
+++ b/user/rttr/install-doc.patch
@@ -0,0 +1,11 @@
+--- rttr-0.9.6/doc/CMakeLists.txt.old 2018-03-26 21:30:36.000000000 +0000
++++ rttr-0.9.6/doc/CMakeLists.txt 2019-04-19 00:14:33.471673713 +0000
+@@ -33,7 +33,7 @@
+ set(DOXYGEN_INPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/src/rttr \\
+ ${CMAKE_CURRENT_SOURCE_DIR}" )
+ set(DOXYGEN_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/doc")
+-set(DOXYGEN_DOC_INSTALL_DIR "doc")
++set(DOXYGEN_DOC_INSTALL_DIR "share/doc/rttr")
+ set(DOXYGEN_CONFIG_FILE_IN "DoxyFile.cfg.in")
+ set(DOXYGEN_LAYOUT_FILE_IN "doxygen-customization/layout/DoxygenLayout.xml.in")
+ set(DOXYGEN_EXCLUDE "")
diff --git a/user/rttr/no-pessimising-moves.patch b/user/rttr/no-pessimising-moves.patch
new file mode 100644
index 000000000..7ca6655fc
--- /dev/null
+++ b/user/rttr/no-pessimising-moves.patch
@@ -0,0 +1,65 @@
+From ea1e41f02ca1e32a9bbb731fec05708101c0e03f Mon Sep 17 00:00:00 2001
+From: Andrey Davydov <andrey.a.davydov@gmail.com>
+Date: Mon, 6 Jan 2020 15:11:47 +0300
+Subject: [PATCH] fix pessimizing moves
+
+---
+ src/rttr/detail/registration/bind_impl.h | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/src/rttr/detail/registration/bind_impl.h b/src/rttr/detail/registration/bind_impl.h
+index 7bb63278..606398a4 100644
+--- a/src/rttr/detail/registration/bind_impl.h
++++ b/src/rttr/detail/registration/bind_impl.h
+@@ -295,7 +295,7 @@ class registration::bind<detail::ctor_func, Class_Type, F, acc_level, Visitor_Li
+ std::move(get_metadata(std::forward<Args>(args)...)),
+ std::move(get_default_args<type_list<Acc_Func>, function_type>(std::forward<Args>(args)...)),
+ std::move(create_param_infos<type_list<F>, function_type>(std::forward<Args>(args)...)));
+- return std::move(ctor);
++ return ctor;
+ }
+ public:
+ bind(const std::shared_ptr<detail::registration_executer>& reg_exec, F func)
+@@ -397,6 +397,6 @@ class registration::bind<detail::prop, Class_Type, A, acc_level, Visitor_List> :
+ getter_policy, setter_policy,
+ Metadata_Count>>(name, type::get<Class_Type>(), acc, std::move(metadata_list));
+- return std::move(prop);
++ return prop;
+ }
+
+ public:
+@@ -491,6 +491,6 @@ class registration::bind<detail::prop, Class_Type, A1, A2, acc_level, Visitor_Li
+ Metadata_Count>>(name, type::get<Class_Type>(),
+ getter, setter, std::move(metadata_list));
+- return std::move(prop);
++ return prop;
+ }
+
+ public:
+@@ -583,7 +583,7 @@ class registration::bind<detail::prop_readonly, Class_Type, A, acc_level, Visito
+ >
+ >(name, acc, std::move(metadata_list));
+
+- return std::move(prop);
++ return prop;
+ }
+
+ public:
+@@ -678,7 +678,7 @@ class registration::bind<detail::meth, Class_Type, F, acc_level, Visitor_List> :
+ std::move(get_metadata(std::forward<Args>(args)...)),
+ std::move(get_default_args<type_list<Acc_Func>, function_type>(std::forward<Args>(args)...)),
+ std::move(create_param_infos<type_list<F>, function_type>(std::forward<Args>(args)...)) );
+- return std::move(meth);
++ return meth;
+ }
+
+ template<typename Policy, std::size_t Metadata_Count, typename...TArgs, typename...Param_Args>
+@@ -791,7 +791,7 @@ class registration::bind<detail::enum_, Class_Type, Enum_Type> : public registra
+ std::move(get_metadata(std::forward<Args>(args)...)));
+
+
+- return std::move(enum_wrapper);
++ return enum_wrapper;
+ }
+
+ public:
diff --git a/user/rttr/permissions.patch b/user/rttr/permissions.patch
new file mode 100644
index 000000000..f572d9f23
--- /dev/null
+++ b/user/rttr/permissions.patch
@@ -0,0 +1,36 @@
+--- rttr-0.9.6/CMake/config.cmake.old 2018-03-26 21:30:35.000000000 +0000
++++ rttr-0.9.6/CMake/config.cmake 2019-04-19 02:03:32.738933898 +0000
+@@ -172,5 +172,5 @@
+
+ install(FILES "${LICENSE_FILE}" "${README_FILE}"
+ DESTINATION ${RTTR_ADDITIONAL_FILES_INSTALL_DIR}
+- PERMISSIONS OWNER_READ)
++ PERMISSIONS WORLD_READ)
+ endif()
+--- rttr-0.9.6/CMake/utility.cmake.old 2018-03-26 21:30:35.000000000 +0000
++++ rttr-0.9.6/CMake/utility.cmake 2019-04-19 02:03:40.268125422 +0000
+@@ -165,7 +165,7 @@
+ getNameOfDir(CMAKE_CURRENT_SOURCE_DIR DIRNAME)
+ if (${shouldInstall})
+ if (NOT ${FULL_HEADER_PATH} MATCHES ".*_p.h$") # we don't want to install header files which are marked as private
+- install(FILES ${FULL_HEADER_PATH} DESTINATION "include/${DIRNAME}/${REL_PATH}" PERMISSIONS OWNER_READ)
++ install(FILES ${FULL_HEADER_PATH} DESTINATION "include/${DIRNAME}/${REL_PATH}" PERMISSIONS WORLD_READ)
+ endif()
+ endif()
+ endforeach()
+--- rttr-0.9.6/doc/CMakeLists.txt.old 2018-03-26 21:30:36.000000000 +0000
++++ rttr-0.9.6/doc/CMakeLists.txt 2019-04-19 02:04:09.075032169 +0000
+@@ -133,11 +133,11 @@
+ install(DIRECTORY "${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_CUSTOM_HTML_DIR}"
+ DESTINATION "${DOXYGEN_DOC_INSTALL_DIR}"
+ PATTERN "*.*"
+- PERMISSIONS OWNER_READ)
++ PERMISSIONS WORLD_READ)
+
+ install(FILES "${DOXYGEN_OUTPUT_DIRECTORY}/${DOXYGEN_INDEX_FILE}"
+ DESTINATION "${DOXYGEN_DOC_INSTALL_DIR}"
+- PERMISSIONS OWNER_READ)
++ PERMISSIONS WORLD_READ)
+
+ #########################################################################################
+
diff --git a/user/rttr/show-warnings-not-error-out.patch b/user/rttr/show-warnings-not-error-out.patch
new file mode 100644
index 000000000..11d332048
--- /dev/null
+++ b/user/rttr/show-warnings-not-error-out.patch
@@ -0,0 +1,16 @@
+diff -ur a/CMake/utility.cmake b/CMake/utility.cmake
+--- a/CMake/utility.cmake 2024-06-04 17:45:24.308248159 +0000
++++ b/CMake/utility.cmake 2024-06-04 17:46:10.476409691 +0000
+@@ -392,10 +392,10 @@
+ ####################################################################################
+ function( set_compiler_warnings target)
+ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
+- set(WARNINGS "-Werror"
++ set(WARNINGS "-Wextra"
+ "-Wall")
+ elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
+- set(WARNINGS "-Werror"
++ set(WARNINGS "-Wextra"
+ "-Wall")
+ elseif(MSVC)
+ set(WARNINGS "/WX"
diff --git a/user/rubberband/APKBUILD b/user/rubberband/APKBUILD
index 4bbe58f6c..5276350e3 100644
--- a/user/rubberband/APKBUILD
+++ b/user/rubberband/APKBUILD
@@ -1,20 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=rubberband
-pkgver=1.8.2
+pkgver=1.9.0
pkgrel=0
pkgdesc="Library for audio time-stretching and pitch-shifting"
url="https://www.breakfastquay.com/rubberband/"
arch="all"
-options="!check" # no tests
+options="!check" # No test suite.
license="BSD-4-Clause AND BSD-3-Clause AND GPL-2.0+"
+depends=""
makedepends="libsamplerate-dev libsndfile-dev fftw-dev vamp-sdk-dev ladspa-dev"
subpackages="$pkgname-dev"
-source="https://breakfastquay.com/files/releases/rubberband-$pkgver.tar.bz2
- no-jni.patch"
+source="https://breakfastquay.com/files/releases/rubberband-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,9 +25,7 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="da677f9a843711c44c52c0153faa62e587ac7c010569523ef4fef7ce941b9d292e566f46147700e496f6cfff4c9f22f9901dcc93f2d701fdb9de152ddac0c3a6 rubberband-1.8.2.tar.bz2
-6c64a6220e68865dece4efe93131f7b5c99ae6a4ce094d7e8cf4805f64c3012edbf35bd5c2bdbb07240d68036728baa9619dd8faa21f01393dc6b35bdfa4f152 no-jni.patch"
+sha512sums="2226cfec98f280a12f874f60620c3bf09f7399a7808af5e9f5c9a5154b989cfbf3c4220e162d722e319a4ef046f81c6a07eac2b8c6035c8f6230f0a20b1577a8 rubberband-1.9.0.tar.bz2"
diff --git a/user/rubberband/no-jni.patch b/user/rubberband/no-jni.patch
deleted file mode 100644
index 82e08c970..000000000
--- a/user/rubberband/no-jni.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -Nurd rubberband-1.8.2/Makefile.in rubberband-1.8.2.new/Makefile.in
---- rubberband-1.8.2/Makefile.in 2018-05-15 12:43:39.000000000 -0500
-+++ rubberband-1.8.2.new/Makefile.in 2018-08-03 00:50:46.435326979 -0500
-@@ -179,11 +179,9 @@
- cp $(STATIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)
- rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_ABI_VERSION)
- rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION)
-- rm -f $(DESTDIR)$(INSTALL_LIBDIR)/$(JNINAME)$(DYNAMIC_EXTENSION)
- cp $(DYNAMIC_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_FULL_VERSION)
- ln -s $(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_FULL_VERSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_ABI_VERSION)
- ln -s $(LIBNAME)$(DYNAMIC_EXTENSION).$(DYNAMIC_FULL_VERSION) $(DESTDIR)$(INSTALL_LIBDIR)/$(LIBNAME)$(DYNAMIC_EXTENSION)
-- cp -f $(JNI_TARGET) $(DESTDIR)$(INSTALL_LIBDIR)/$(JNINAME)$(DYNAMIC_EXTENSION)
- cp $(VAMP_TARGET) $(DESTDIR)$(INSTALL_VAMPDIR)
- cp vamp/vamp-rubberband.cat $(DESTDIR)$(INSTALL_VAMPDIR)
- cp $(LADSPA_TARGET) $(DESTDIR)$(INSTALL_LADSPADIR)
diff --git a/user/ruby-bundler/APKBUILD b/user/ruby-bundler/APKBUILD
new file mode 100644
index 000000000..3d8cb5145
--- /dev/null
+++ b/user/ruby-bundler/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: Alyx Wolcott <alyx@leuhta.com>
+_gemname=bundler
+pkgname=ruby-$_gemname
+pkgver=2.1.4
+pkgrel=0
+pkgdesc="Manage an application's gem dependencies"
+url="https://bundler.io/"
+arch="noarch"
+options="!check"
+license="MIT"
+depends="ruby ruby-dev"
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://rubygems.org/downloads/$_gemname-$pkgver.gem"
+builddir="$srcdir/$_gemname-$pkgver"
+
+package() {
+ gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')"
+
+ gem install --local \
+ --install-dir "$gemdir" \
+ --bindir "$pkgdir/usr/bin" \
+ --ignore-dependencies \
+ --no-document \
+ --verbose \
+ "$srcdir"/$_gemname-$pkgver.gem
+
+ for n in 1 5; do
+ mkdir -p "$pkgdir"/usr/share/man/man$n
+ mv "$gemdir"/gems/$_gemname-$pkgver/man/*.$n "$pkgdir"/usr/share/man/man$n/
+ done
+
+ rm -rf "$gemdir"/cache \
+ "$gemdir"/build_info \
+ "$gemdir"/doc \
+ "$gemdir"/gems/$_gemname-$pkgver/man \
+ "$gemdir"/gems/$_gemname-$pkgver/*.md
+}
+
+
+sha512sums="6c870061a78e17d97a9219433c7ef8fbf1112de17d0e0f3d8b6db1a518318528e3803184278412aabe65008e93f451ffa59465062856918ef488f9438399eff6 bundler-2.1.4.gem"
diff --git a/user/ruby-diff-lcs/APKBUILD b/user/ruby-diff-lcs/APKBUILD
new file mode 100644
index 000000000..90f955653
--- /dev/null
+++ b/user/ruby-diff-lcs/APKBUILD
@@ -0,0 +1,48 @@
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=ruby-diff-lcs
+_gemname=${pkgname#ruby-}
+pkgver=1.4.4
+pkgrel=0
+pkgdesc="Generate difference sets between Ruby sequences"
+url="http://halostatue.github.io/diff-lcs/"
+arch="noarch"
+options="!check" # to avoid cyclic dependency with rspec
+license="MIT"
+depends="ruby"
+subpackages="$pkgname-tools"
+source="$pkgname-$pkgver.tar.gz::https://github.com/halostatue/$_gemname/archive/v$pkgver.tar.gz"
+builddir="$srcdir/$_gemname-$pkgver"
+
+build() {
+ gem build $_gemname.gemspec
+}
+
+package() {
+ gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')"
+ geminstdir="$gemdir/gems/$_gemname-$pkgver"
+
+ gem install --local \
+ --install-dir "$gemdir" \
+ --bindir "$pkgdir/usr/bin" \
+ --ignore-dependencies \
+ --no-document \
+ --verbose \
+ $_gemname
+
+ # Remove unnecessary files.
+ cd "$gemdir"
+ rm -r cache/ build_info/ doc/
+ cd "$geminstdir"
+ rm -r autotest/ docs/ spec/ Rakefile *.md *.rdoc *.txt
+}
+
+tools() {
+ pkgdesc="$pkgdesc (CLI tools)"
+ depends="$pkgname=$pkgver-r$pkgrel"
+
+ mkdir -p "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/* "$subpkgdir"/usr/bin/
+}
+
+sha512sums="52fc0501516299396f570be7f35d856ddeed9637430019ca831759467474cecff72be0dace2fed020dacb5f551febef047e3f1928affa0ac0f18b636ee94baa7 ruby-diff-lcs-1.4.4.tar.gz"
diff --git a/user/ruby-rake-compiler/APKBUILD b/user/ruby-rake-compiler/APKBUILD
new file mode 100644
index 000000000..7a1781581
--- /dev/null
+++ b/user/ruby-rake-compiler/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=ruby-rake-compiler
+_gemname=${pkgname#ruby-}
+pkgver=1.1.1
+pkgrel=0
+pkgdesc="Provide a standard and simplified way to build and package Ruby extensions"
+url="https://github.com/rake-compiler/rake-compiler"
+arch="noarch"
+license="MIT"
+depends="ruby ruby-rake"
+checkdepends="ruby-rspec"
+makedepends=""
+source="$pkgname-$pkgver.tar.gz::https://github.com/rake-compiler/$_gemname/archive/v$pkgver.tar.gz
+ gemfile-remove-unwanted-files.patch"
+builddir="$srcdir/$_gemname-$pkgver"
+
+build() {
+ gem build $_gemname.gemspec
+}
+
+check() {
+ rspec spec
+}
+
+package() {
+ gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')"
+
+ gem install --local \
+ --install-dir "$gemdir" \
+ --bindir "$pkgdir/usr/bin" \
+ --ignore-dependencies \
+ --no-document \
+ --verbose \
+ $_gemname
+
+ # Remove unnecessary files and empty directories.
+ cd "$gemdir"
+ rm -r cache build_info doc
+}
+
+sha512sums="e9cf9752e48eae912657a34d2f86a2b41f7d57620c6e43b1fa6fb8e5715336b2fdf99bf20a4851889e8b9b7b2e834421c13e108c538abdc3cec968952345361d ruby-rake-compiler-1.1.1.tar.gz
+21feda7887b7fe0978f906d407ecd44d7f25e334e7ee8ff27f73e71d494bd10af4174d7373652b29b1a8eaf95f53f2c8581879088f343e7f045fc265eecf7eac gemfile-remove-unwanted-files.patch"
diff --git a/user/ruby-rake-compiler/gemfile-remove-unwanted-files.patch b/user/ruby-rake-compiler/gemfile-remove-unwanted-files.patch
new file mode 100644
index 000000000..6c2909c09
--- /dev/null
+++ b/user/ruby-rake-compiler/gemfile-remove-unwanted-files.patch
@@ -0,0 +1,26 @@
+--- a/rake-compiler.gemspec
++++ b/rake-compiler.gemspec
+@@ -23,14 +23,8 @@
+ s.add_development_dependency 'cucumber', '~> 1.1.4'
+
+ # components, files and paths
+- s.files = Dir.glob("features/**/*.{feature,rb}")
+ s.files += ["bin/rake-compiler"]
+ s.files += Dir.glob("lib/**/*.rb")
+- s.files += ["spec/spec.opts"]
+- s.files += Dir.glob("spec/**/*.rb")
+- s.files += Dir.glob("tasks/**/*.rake")
+- s.files += ["Rakefile", "Gemfile"]
+- s.files += Dir.glob("*.{md,rdoc,txt,yml}")
+
+ s.bindir = 'bin'
+ s.executables = ['rake-compiler']
+@@ -39,8 +33,6 @@
+
+ # documentation
+ s.rdoc_options << '--main' << 'README.md' << '--title' << 'rake-compiler -- Documentation'
+-
+- s.extra_rdoc_files = %w(README.md LICENSE.txt History.txt)
+
+ # project information
+ s.homepage = 'https://github.com/rake-compiler/rake-compiler'
diff --git a/user/ruby-reline/APKBUILD b/user/ruby-reline/APKBUILD
new file mode 100644
index 000000000..ddeee15c4
--- /dev/null
+++ b/user/ruby-reline/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=ruby-reline
+_gemname=${pkgname#ruby-}
+pkgver=0.2.7
+pkgrel=0
+pkgdesc="Reline is compatible with the API of Ruby's stdlib 'readline', GNU Readline and Editline"
+url="https://github.com/ruby/reline"
+arch="all"
+options="!dbg"
+license="BSD-2-Clause"
+depends="ruby"
+checkdepends="ruby-rspec"
+makedepends="ruby-rake"
+source="ruby-reline-$pkgver.tar.gz::https://github.com/ruby/$_gemname/archive/refs/tags/v$pkgver.tar.gz"
+builddir="$srcdir/$_gemname-$pkgver"
+
+build() {
+ gem build $_gemname.gemspec
+}
+
+check() {
+ rspec spec
+}
+
+package() {
+ gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')"
+
+ gem install --local \
+ --install-dir "$gemdir" \
+ --bindir "$pkgdir/usr/bin" \
+ --ignore-dependencies \
+ --no-document \
+ --verbose \
+ $_gemname
+
+ # Remove unnecessary files and empty directories.
+ cd "$gemdir"
+ rm -r cache build_info doc
+}
+
+sha512sums="3543207d79a9cb5293cefb4771a5d30bfa158915f2ba84db1cd04b1c89b21288542e52a2e43e2ca057bad91c926052dc3ba404319a5eb4044ab054b6c3cab465 ruby-reline-0.2.7.tar.gz"
diff --git a/user/ruby-rspec-core/APKBUILD b/user/ruby-rspec-core/APKBUILD
new file mode 100644
index 000000000..5ae38e03f
--- /dev/null
+++ b/user/ruby-rspec-core/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=ruby-rspec-core
+_gemname=${pkgname#ruby-}
+pkgver=3.10.1
+pkgrel=0
+pkgdesc="RSpec runner and formatters"
+url="https://relishapp.com/rspec/rspec-core"
+arch="noarch"
+options="!check" # rspec's tests are written in rspec
+license="MIT"
+depends="ruby ruby-rspec-support~=${pkgver%.*}"
+makedepends=""
+source="$pkgname-$pkgver.tar.gz::https://github.com/rspec/$_gemname/archive/v$pkgver.tar.gz
+ gemspec.patch
+ "
+builddir="$srcdir/$_gemname-$pkgver"
+
+build() {
+ gem build $_gemname.gemspec
+}
+
+package() {
+ gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')"
+
+ gem install --local \
+ --install-dir "$gemdir" \
+ --bindir "$pkgdir/usr/bin" \
+ --ignore-dependencies \
+ --no-document \
+ --verbose \
+ $_gemname
+
+ # Clean-up...
+ rm -r "$gemdir"/cache \
+ "$gemdir"/build_info \
+ "$gemdir"/doc
+}
+
+sha512sums="2d134e742e36cfaac0a52fa7ebd949391cfe58419956536a65fa3aefa2c7f3638fe19f7324ca3e0d2642cc5a9d33de11b09bd571844f1cfae9c077e5f27563d5 ruby-rspec-core-3.10.1.tar.gz
+e0cbcfddcc4c73d9b9673907e3b1a785b399c0b3b213761e9dbca9fadc55d50a88389eaf561f5603bd674eb94ce9f2ecf829d884eaa77df8ef1b565c0c7f25f2 gemspec.patch"
diff --git a/user/ruby-rspec-core/gemspec.patch b/user/ruby-rspec-core/gemspec.patch
new file mode 100644
index 000000000..0a6cad0d0
--- /dev/null
+++ b/user/ruby-rspec-core/gemspec.patch
@@ -0,0 +1,16 @@
+--- a/rspec-core.gemspec
++++ b/rspec-core.gemspec
+@@ -13,11 +13,10 @@
+ s.summary = "rspec-core-#{RSpec::Core::Version::STRING}"
+ s.description = "BDD for Ruby. RSpec runner and example groups."
+
+- s.files = `git ls-files -- lib/*`.split("\n")
+- s.files += %w[README.md LICENSE.md Changelog.md .yardopts .document]
++ s.files = Dir["lib/**/*"]
+ s.test_files = []
+ s.bindir = 'exe'
+- s.executables = `git ls-files -- exe/*`.split("\n").map{ |f| File.basename(f) }
++ s.executables = Dir["exe/*"].map{ |f| File.basename(f) }
+ s.rdoc_options = ["--charset=UTF-8"]
+ s.require_path = "lib"
+
diff --git a/user/ruby-rspec-expectations/APKBUILD b/user/ruby-rspec-expectations/APKBUILD
new file mode 100644
index 000000000..6a50d98c0
--- /dev/null
+++ b/user/ruby-rspec-expectations/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=ruby-rspec-expectations
+_gemname=${pkgname#ruby-}
+pkgver=3.10.1
+pkgrel=0
+pkgdesc="Provides a readable API to express expected outcomes of a code example in RSpec"
+url="https://relishapp.com/rspec/rspec-expectations/"
+arch="noarch"
+options="!check" # rspec's tests are written in rspec
+license="MIT"
+depends="ruby ruby-diff-lcs ruby-rspec-support~=${pkgver%.*}"
+makedepends=""
+source="$pkgname-$pkgver.tar.gz::https://github.com/rspec/$_gemname/archive/v$pkgver.tar.gz
+ gemspec.patch
+ "
+builddir="$srcdir/$_gemname-$pkgver"
+
+build() {
+ gem build $_gemname.gemspec
+}
+
+package() {
+ gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')"
+
+ gem install --local \
+ --install-dir "$gemdir" \
+ --ignore-dependencies \
+ --no-document \
+ --verbose \
+ $_gemname
+
+ # Clean-up...
+ rm -r "$gemdir"/cache \
+ "$gemdir"/build_info \
+ "$gemdir"/doc
+}
+
+sha512sums="35999542bf70ff04a472e50434abb8815cac8bf10b680da458f5e0e6ee290a1a6356a22cc12f0a8a6310cf282bb6cd99f922fcc63a0cf1e252b167e451bcf7d4 ruby-rspec-expectations-3.10.1.tar.gz
+1d477004521852e23d01b197187dbb434a2c7fd179e506c82a12e17f5d52470fe2a113112e7052b9479077eafa6759beb07c03301de1f8ea7f5c4643c92d8346 gemspec.patch"
diff --git a/user/ruby-rspec-expectations/gemspec.patch b/user/ruby-rspec-expectations/gemspec.patch
new file mode 100644
index 000000000..644aad1ad
--- /dev/null
+++ b/user/ruby-rspec-expectations/gemspec.patch
@@ -0,0 +1,12 @@
+--- a/rspec-expectations.gemspec
++++ b/rspec-expectations.gemspec
+@@ -13,8 +13,7 @@
+ s.summary = "rspec-expectations-#{RSpec::Expectations::Version::STRING}"
+ s.description = "rspec-expectations provides a simple, readable API to express expected outcomes of a code example."
+
+- s.files = `git ls-files -- lib/*`.split("\n")
+- s.files += %w[README.md LICENSE.md Changelog.md .yardopts .document]
++ s.files = Dir["lib/**/*"]
+ s.test_files = []
+ s.rdoc_options = ["--charset=UTF-8"]
+ s.require_path = "lib"
diff --git a/user/ruby-rspec-mocks/APKBUILD b/user/ruby-rspec-mocks/APKBUILD
new file mode 100644
index 000000000..6766925b7
--- /dev/null
+++ b/user/ruby-rspec-mocks/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=ruby-rspec-mocks
+_gemname=${pkgname#ruby-}
+pkgver=3.10.2
+pkgrel=0
+pkgdesc="RSpec's 'test double' framework, with support for stubbing and mocking"
+url="https://relishapp.com/rspec/rspec-mocks/"
+arch="noarch"
+options="!check" # rspec's tests are written in rspec
+license="MIT"
+depends="ruby ruby-diff-lcs ruby-rspec-support~=${pkgver%.*}"
+makedepends=""
+source="$pkgname-$pkgver.tar.gz::https://github.com/rspec/$_gemname/archive/v$pkgver.tar.gz
+ gemspec.patch
+ "
+builddir="$srcdir/$_gemname-$pkgver"
+
+build() {
+ gem build $_gemname.gemspec
+}
+
+package() {
+ gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')"
+
+ gem install --local \
+ --install-dir "$gemdir" \
+ --ignore-dependencies \
+ --no-document \
+ --verbose \
+ $_gemname
+
+ # Clean-up...
+ rm -r "$gemdir"/cache \
+ "$gemdir"/build_info \
+ "$gemdir"/doc
+}
+
+sha512sums="ab11fa77c5f9e3bec2003dc8825d9582dcbffa08a36818bd9cdbe2dfd357113de3712c818deafc165530f9e4d2683ec06e54d37c37aeb820ae3cd592f76cf2cb ruby-rspec-mocks-3.10.2.tar.gz
+6fd7ab08b20a93f806a8d3c42da5da0a99162793079ecb1695341a04dff2a7cefdb12592d1798fb844dfbdf8ead6ad0b8729e461d3cd5af46d853b182d15228d gemspec.patch"
diff --git a/user/ruby-rspec-mocks/gemspec.patch b/user/ruby-rspec-mocks/gemspec.patch
new file mode 100644
index 000000000..5d4f6e775
--- /dev/null
+++ b/user/ruby-rspec-mocks/gemspec.patch
@@ -0,0 +1,12 @@
+--- a/rspec-mocks.gemspec
++++ b/rspec-mocks.gemspec
+@@ -13,8 +13,7 @@
+ s.summary = "rspec-mocks-#{RSpec::Mocks::Version::STRING}"
+ s.description = "RSpec's 'test double' framework, with support for stubbing and mocking"
+
+- s.files = `git ls-files -- lib/*`.split("\n")
+- s.files += %w[README.md LICENSE.md Changelog.md .yardopts .document]
++ s.files = Dir["lib/**/*"]
+ s.test_files = []
+ s.rdoc_options = ["--charset=UTF-8"]
+ s.require_path = "lib"
diff --git a/user/ruby-rspec-support/APKBUILD b/user/ruby-rspec-support/APKBUILD
new file mode 100644
index 000000000..1bcdea473
--- /dev/null
+++ b/user/ruby-rspec-support/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=ruby-rspec-support
+_gemname=${pkgname#ruby-}
+pkgver=3.10.2
+pkgrel=0
+pkgdesc="Support utilities for RSpec gems"
+url="https://rubygems.org/gems/rspec-support"
+arch="noarch"
+options="!check" # rspec's tests are written in rspec
+license="MIT"
+depends="ruby"
+makedepends=""
+source="$pkgname-$pkgver.tar.gz::https://github.com/rspec/$_gemname/archive/v$pkgver.tar.gz
+ gemspec.patch
+ "
+builddir="$srcdir/$_gemname-$pkgver"
+
+build() {
+ gem build $_gemname.gemspec
+}
+
+package() {
+ gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')"
+
+ gem install --local \
+ --install-dir "$gemdir" \
+ --ignore-dependencies \
+ --no-document \
+ --verbose \
+ $_gemname
+
+ # Clean-up...
+ rm -r "$gemdir"/cache \
+ "$gemdir"/build_info \
+ "$gemdir"/doc
+}
+
+sha512sums="bd1fb5d737dfdbb7399d766854f0b173dad89675bac580cf65c5d42ab6cd04ad1773e7cfa875dfa4c6fac14f4ccbd6b48813bae5de26c931c804962d29b014be ruby-rspec-support-3.10.2.tar.gz
+e9d611ea1789e835f742aa92f1e668840139e2621898edf158dc53e111db4119a324da65d2d28f5c6e737c82f261f4adb3beb8c244ee01d2f618778ed62d3731 gemspec.patch"
diff --git a/user/ruby-rspec-support/gemspec.patch b/user/ruby-rspec-support/gemspec.patch
new file mode 100644
index 000000000..069c93729
--- /dev/null
+++ b/user/ruby-rspec-support/gemspec.patch
@@ -0,0 +1,12 @@
+--- a/rspec-support.gemspec
++++ b/rspec-support.gemspec
+@@ -13,8 +13,7 @@
+ spec.description = "Support utilities for RSpec gems"
+ spec.license = "MIT"
+
+- spec.files = `git ls-files -- lib/*`.split("\n")
+- spec.files += %w[README.md LICENSE.md Changelog.md]
++ spec.files = Dir["lib/**/*"]
+ spec.test_files = []
+ spec.rdoc_options = ["--charset=UTF-8"]
+ spec.require_paths = ["lib"]
diff --git a/user/ruby-rspec/APKBUILD b/user/ruby-rspec/APKBUILD
new file mode 100644
index 000000000..9e05e522f
--- /dev/null
+++ b/user/ruby-rspec/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Jakub Jirutka <jakub@jirutka.cz>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=ruby-rspec
+_gemname=${pkgname#ruby-}
+pkgver=3.10.0
+pkgrel=2
+pkgdesc="Behaviour Driven Development for Ruby"
+url="http://rspec.info/"
+arch="noarch"
+options="!check" # no tests provided
+license="MIT"
+depends="ruby
+ ruby-rspec-core~=${pkgver%.*}
+ ruby-rspec-expectations~=${pkgver%.*}
+ ruby-rspec-mocks~=${pkgver%.*}"
+source="$pkgname-$pkgver.tar.gz::https://github.com/rspec/rspec-metagem/archive/v$pkgver.tar.gz
+ gemspec.patch"
+builddir="$srcdir/rspec-metagem-$pkgver"
+
+build() {
+ gem build $_gemname.gemspec
+}
+
+package() {
+ gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')"
+
+ gem install --local \
+ --install-dir "$gemdir" \
+ --ignore-dependencies \
+ --no-document \
+ --verbose \
+ $_gemname
+
+ # Clean-up...
+ rm -r "$gemdir"/cache \
+ "$gemdir"/build_info \
+ "$gemdir"/doc
+}
+sha512sums="9f2cb87de8505ae8c4642bbb8788987b7049dbe7e6bf768d8f7ad6cc3ca6d08811718087478e27ca92dac3a7a985843cb4f8c0667c425340adf4d23b604c5adc ruby-rspec-3.10.0.tar.gz
+f554eef881574e68532dd6c9edeb6b8ad172ac707f7518134378e1099a40ada959c6c770514aab13a6345343113594208be0e42044803c0c2cde3adde00c5520 gemspec.patch"
diff --git a/user/ruby-rspec/gemspec.patch b/user/ruby-rspec/gemspec.patch
new file mode 100644
index 000000000..1bd3937c3
--- /dev/null
+++ b/user/ruby-rspec/gemspec.patch
@@ -0,0 +1,14 @@
+--- a/rspec.gemspec
++++ b/rspec.gemspec
+@@ -14,10 +14,7 @@
+ s.summary = "rspec-#{RSpec::Version::STRING}"
+ s.description = "BDD for Ruby"
+
+- s.files = `git ls-files -- lib/*`.split("\n")
+- s.files += ["LICENSE.md"]
+- s.test_files = `git ls-files -- {spec,features}/*`.split("\n")
+- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
++ s.files = Dir["lib/**/*"]
+ s.extra_rdoc_files = [ "README.md" ]
+ s.rdoc_options = ["--charset=UTF-8"]
+ s.require_path = "lib"
diff --git a/user/ruby-rubygems-tasks/APKBUILD b/user/ruby-rubygems-tasks/APKBUILD
new file mode 100644
index 000000000..464cba218
--- /dev/null
+++ b/user/ruby-rubygems-tasks/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: Dan Theisen <djt@hxx.in>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=ruby-rubygems-tasks
+_gemname=${pkgname#ruby-}
+pkgver=0.2.5
+pkgrel=0
+pkgdesc="Provides agnostic and unobtrusive Rake tasks for maintaining Ruby Gems"
+url="https://github.com/postmodern/rubygems-tasks"
+arch="all"
+options="!dbg"
+license="MIT"
+depends="ruby ruby-irb"
+checkdepends="ruby-rspec"
+makedepends="ruby-rake"
+source="ruby-reline-$pkgver.tar.gz::https://github.com/postmodern/$_gemname/archive/refs/tags/v$pkgver.tar.gz"
+builddir="$srcdir/$_gemname-$pkgver"
+
+build() {
+ gem build $_gemname.gemspec
+}
+
+check() {
+ rspec spec
+}
+
+package() {
+ gemdir="$pkgdir/$(ruby -e 'puts Gem.default_dir')"
+
+ gem install --local \
+ --install-dir "$gemdir" \
+ --bindir "$pkgdir/usr/bin" \
+ --ignore-dependencies \
+ --no-document \
+ --verbose \
+ $_gemname
+
+ # Remove unnecessary files and empty directories.
+ cd "$gemdir"
+ rm -r cache build_info doc
+}
+
+sha512sums="518c1a4ccf3720ac16278359ebacf25fee298989ccc672bffc94119b005cbaffe668652c5081de3e6e0c321bfeeca61c6b93ba5d0741d5fa9a8ced34f5e5e889 ruby-reline-0.2.5.tar.gz"
diff --git a/user/rust/0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch b/user/rust/0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch
deleted file mode 100644
index bb20cb7b6..000000000
--- a/user/rust/0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 6861c8305fc6449fdc019405d501e5740d44b818 Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Wed, 10 Jan 2018 13:36:41 -0600
-Subject: [PATCH 01/14] Don't pass CFLAGS to the C++ compiler
-
----
- src/bootstrap/builder.rs | 6 ++----
- 1 file changed, 2 insertions(+), 4 deletions(-)
-
-diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs
-index 9c58f5b179..bbb275c572 100644
---- a/src/bootstrap/builder.rs
-+++ b/src/bootstrap/builder.rs
-@@ -1037,7 +1037,7 @@ impl<'a> Builder<'a> {
- let cflags = self.cflags(target, GitRepo::Rustc).join(" ");
- cargo
- .env(format!("CFLAGS_{}", target), cflags.clone())
-- .env("CFLAGS", cflags.clone());
-+ .env("CFLAGS", cflags);
-
- if let Some(ar) = self.ar(target) {
- let ranlib = format!("{} s", ar.display());
-@@ -1052,9 +1052,7 @@ impl<'a> Builder<'a> {
- let cxx = ccacheify(&cxx);
- cargo
- .env(format!("CXX_{}", target), &cxx)
-- .env("CXX", &cxx)
-- .env(format!("CXXFLAGS_{}", target), cflags.clone())
-- .env("CXXFLAGS", cflags);
-+ .env("CXX", &cxx);
- }
- }
-
---
-2.21.0
-
diff --git a/user/rust/0001-Fix-LLVM-build.patch b/user/rust/0001-Fix-LLVM-build.patch
new file mode 100644
index 000000000..67ad9dbf8
--- /dev/null
+++ b/user/rust/0001-Fix-LLVM-build.patch
@@ -0,0 +1,22 @@
+From 855b7d97e96e67bd5db5c0016c3b9965a5c1843f Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Fri, 8 Sep 2017 00:04:29 -0500
+Subject: [PATCH 01/12] Fix LLVM build
+
+---
+ src/bootstrap/src/lib.rs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/bootstrap/src/lib.rs b/src/bootstrap/src/lib.rs
+index 33b8f1a7ce720..d933a8bc37f88 100644
+--- a/src/bootstrap/src/lib.rs
++++ b/src/bootstrap/src/lib.rs
+@@ -1262,7 +1262,7 @@ impl Build {
+ .args()
+ .iter()
+ .map(|s| s.to_string_lossy().into_owned())
+- .filter(|s| !s.starts_with("-O") && !s.starts_with("/O"))
++ .filter(|s| !s.starts_with("-O") && !s.starts_with("/O") && !s.starts_with("-static"))
+ .collect::<Vec<String>>();
+
+ // If we're compiling C++ on macOS then we add a flag indicating that
diff --git a/user/rust/0002-Fix-LLVM-build.patch b/user/rust/0002-Fix-LLVM-build.patch
deleted file mode 100644
index 7d12e84d3..000000000
--- a/user/rust/0002-Fix-LLVM-build.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From d44d2ca85013e85b2b72940609131d1229647461 Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Fri, 8 Sep 2017 00:04:29 -0500
-Subject: [PATCH 02/14] Fix LLVM build
-
----
- src/bootstrap/lib.rs | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
-diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs
-index 7491385af7..74c04bac6b 100644
---- a/src/bootstrap/lib.rs
-+++ b/src/bootstrap/lib.rs
-@@ -772,7 +772,8 @@ impl Build {
- // cc-rs because the build scripts will determine that for themselves.
- let mut base = self.cc[&target].args().iter()
- .map(|s| s.to_string_lossy().into_owned())
-- .filter(|s| !s.starts_with("-O") && !s.starts_with("/O"))
-+ .filter(|s| !s.starts_with("-O") && !s.starts_with("/O")
-+ && !s.starts_with("-static"))
- .collect::<Vec<String>>();
-
- // If we're compiling on macOS then we add a few unconditional flags
---
-2.21.0
-
diff --git a/user/rust/0002-Fix-linking-to-zlib-when-cross-compiling.patch b/user/rust/0002-Fix-linking-to-zlib-when-cross-compiling.patch
new file mode 100644
index 000000000..d7c5fc1dc
--- /dev/null
+++ b/user/rust/0002-Fix-linking-to-zlib-when-cross-compiling.patch
@@ -0,0 +1,34 @@
+From 9357baa3eede8062b7c17407d23c3d2102af8435 Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Wed, 10 Jan 2018 13:36:41 -0600
+Subject: [PATCH 02/12] Fix linking to zlib when cross-compiling
+
+---
+ compiler/rustc_llvm/build.rs | 7 ++-----
+ 1 file changed, 2 insertions(+), 5 deletions(-)
+
+diff --git a/compiler/rustc_llvm/build.rs b/compiler/rustc_llvm/build.rs
+index 4b0c1229da134..2d61b834c784b 100644
+--- a/compiler/rustc_llvm/build.rs
++++ b/compiler/rustc_llvm/build.rs
+@@ -219,10 +219,8 @@ fn main() {
+ // of llvm-config, not the target that we're attempting to link.
+ let mut cmd = Command::new(&llvm_config);
+ cmd.arg(llvm_link_arg).arg("--libs");
+-
+- if !is_crossed {
+- cmd.arg("--system-libs");
+- }
++ cmd.arg("--system-libs");
++ cmd.args(&components);
+
+ // We need libkstat for getHostCPUName on SPARC builds.
+ // See also: https://github.com/llvm/llvm-project/issues/64186
+@@ -255,7 +253,6 @@ fn main() {
+ println!("cargo:rustc-link-lib=z");
+ println!("cargo:rustc-link-lib=execinfo");
+ }
+- cmd.args(&components);
+
+ for lib in output(&mut cmd).split_whitespace() {
+ let name = if let Some(stripped) = lib.strip_prefix("-l") {
diff --git a/user/rust/0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch b/user/rust/0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
deleted file mode 100644
index c1cb5e930..000000000
--- a/user/rust/0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-From 520ceedb4a6384da5c207aa434a29d68fc8e238a Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Sat, 2 Dec 2017 17:25:44 -0600
-Subject: [PATCH 03/14] Allow rustdoc to work when cross-compiling on musl
-
-musl can't handle foreign-architecture libraries in LD_LIBRARY_PATH.
----
- src/bootstrap/bin/rustdoc.rs | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
-diff --git a/src/bootstrap/bin/rustdoc.rs b/src/bootstrap/bin/rustdoc.rs
-index dec74e60c7..af76331db0 100644
---- a/src/bootstrap/bin/rustdoc.rs
-+++ b/src/bootstrap/bin/rustdoc.rs
-@@ -24,9 +24,6 @@ fn main() {
- Err(_) => 0,
- };
-
-- let mut dylib_path = bootstrap::util::dylib_path();
-- dylib_path.insert(0, PathBuf::from(libdir.clone()));
--
- //FIXME(misdreavus): once stdsimd uses cfg(rustdoc) instead of cfg(dox), remove the `--cfg dox`
- //arguments here
- let mut cmd = Command::new(rustdoc);
-@@ -38,7 +35,7 @@ fn main() {
- .arg("--sysroot")
- .arg(sysroot)
- .env(bootstrap::util::dylib_path_var(),
-- env::join_paths(&dylib_path).unwrap());
-+ PathBuf::from(libdir.clone()));
-
- // Force all crates compiled by this compiler to (a) be unstable and (b)
- // allow the `rustc_private` feature to link to other unstable crates
---
-2.21.0
-
diff --git a/user/rust/0003-Fix-rustdoc-when-cross-compiling-on-musl.patch b/user/rust/0003-Fix-rustdoc-when-cross-compiling-on-musl.patch
new file mode 100644
index 000000000..cfcc2ad83
--- /dev/null
+++ b/user/rust/0003-Fix-rustdoc-when-cross-compiling-on-musl.patch
@@ -0,0 +1,57 @@
+From cb97ef40ec507c7ff20f7c0857b1892a1946a0f3 Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Sat, 2 Dec 2017 17:25:44 -0600
+Subject: [PATCH 03/12] Fix rustdoc when cross-compiling on musl
+
+musl can't handle foreign-architecture libraries in LD_LIBRARY_PATH.
+---
+ src/bootstrap/src/bin/rustdoc.rs | 10 ++++------
+ 1 file changed, 4 insertions(+), 6 deletions(-)
+
+diff --git a/src/bootstrap/src/bin/rustdoc.rs b/src/bootstrap/src/bin/rustdoc.rs
+index dbbce6fe22047..3d3cb241eaab6 100644
+--- a/src/bootstrap/src/bin/rustdoc.rs
++++ b/src/bootstrap/src/bin/rustdoc.rs
+@@ -6,12 +6,13 @@ use std::ffi::OsString;
+ use std::path::PathBuf;
+ use std::process::Command;
+
+-use dylib_util::{dylib_path, dylib_path_var};
++use dylib_util::dylib_path_var;
+
+ #[path = "../utils/bin_helpers.rs"]
+ mod bin_helpers;
+
+ #[path = "../utils/dylib.rs"]
++#[allow(dead_code)]
+ mod dylib_util;
+
+ fn main() {
+@@ -28,9 +29,6 @@ fn main() {
+ // is passed (a bit janky...)
+ let target = args.windows(2).find(|w| &*w[0] == "--target").and_then(|w| w[1].to_str());
+
+- let mut dylib_path = dylib_path();
+- dylib_path.insert(0, PathBuf::from(libdir.clone()));
+-
+ let mut cmd = Command::new(rustdoc);
+
+ if target.is_some() {
+@@ -43,7 +41,7 @@ fn main() {
+ }
+
+ cmd.args(&args);
+- cmd.env(dylib_path_var(), env::join_paths(&dylib_path).unwrap());
++ cmd.env(dylib_path_var(), PathBuf::from(libdir.clone()));
+
+ // Force all crates compiled by this compiler to (a) be unstable and (b)
+ // allow the `rustc_private` feature to link to other unstable crates
+@@ -68,7 +66,7 @@ fn main() {
+ eprintln!(
+ "rustdoc command: {:?}={:?} {:?}",
+ dylib_path_var(),
+- env::join_paths(&dylib_path).unwrap(),
++ PathBuf::from(libdir.clone()),
+ cmd,
+ );
+ eprintln!("sysroot: {sysroot:?}");
diff --git a/user/rust/0004-Remove-musl_root-and-CRT-fallback-from-musl-targets.patch b/user/rust/0004-Remove-musl_root-and-CRT-fallback-from-musl-targets.patch
new file mode 100644
index 000000000..56dfc19d4
--- /dev/null
+++ b/user/rust/0004-Remove-musl_root-and-CRT-fallback-from-musl-targets.patch
@@ -0,0 +1,526 @@
+From 7e2507b33ffb027a331f7cbd3477043288f49797 Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Fri, 8 Sep 2017 22:11:14 -0500
+Subject: [PATCH 04/12] Remove musl_root and CRT fallback from musl targets
+
+---
+ compiler/rustc_codegen_ssa/src/back/link.rs | 6 +--
+ .../rustc_target/src/spec/base/linux_musl.rs | 6 +--
+ compiler/rustc_target/src/spec/crt_objects.rs | 22 ----------
+ compiler/rustc_target/src/spec/mod.rs | 5 ---
+ config.example.toml | 17 --------
+ src/bootstrap/configure.py | 34 ---------------
+ src/bootstrap/src/core/build_steps/compile.rs | 42 +------------------
+ src/bootstrap/src/core/config/config.rs | 11 -----
+ src/bootstrap/src/core/sanity.rs | 23 ----------
+ src/bootstrap/src/lib.rs | 19 ---------
+ src/bootstrap/src/utils/cc_detect.rs | 26 ------------
+ .../host-x86_64/dist-arm-linux/Dockerfile | 1 -
+ .../dist-i586-gnu-i586-i686-musl/Dockerfile | 2 -
+ .../host-x86_64/dist-various-1/Dockerfile | 4 --
+ .../host-x86_64/dist-various-2/Dockerfile | 3 +-
+ .../host-x86_64/dist-x86_64-musl/Dockerfile | 1 -
+ .../host-x86_64/test-various/Dockerfile | 1 -
+ 17 files changed, 4 insertions(+), 219 deletions(-)
+
+diff --git a/compiler/rustc_codegen_ssa/src/back/link.rs b/compiler/rustc_codegen_ssa/src/back/link.rs
+index f5e8d5fc92a91..b65999ec7230f 100644
+--- a/compiler/rustc_codegen_ssa/src/back/link.rs
++++ b/compiler/rustc_codegen_ssa/src/back/link.rs
+@@ -1806,7 +1806,7 @@ fn detect_self_contained_mingw(sess: &Session) -> bool {
+ /// Various toolchain components used during linking are used from rustc distribution
+ /// instead of being found somewhere on the host system.
+ /// We only provide such support for a very limited number of targets.
+-fn self_contained_components(sess: &Session, crate_type: CrateType) -> LinkSelfContainedComponents {
++fn self_contained_components(sess: &Session, _crate_type: CrateType) -> LinkSelfContainedComponents {
+ // Turn the backwards compatible bool values for `self_contained` into fully inferred
+ // `LinkSelfContainedComponents`.
+ let self_contained =
+@@ -1828,10 +1828,6 @@ fn self_contained_components(sess: &Session, crate_type: CrateType) -> LinkSelfC
+ return components;
+ }
+
+- // FIXME: Find a better heuristic for "native musl toolchain is available",
+- // based on host and linker path, for example.
+- // (https://github.com/rust-lang/rust/pull/71769#issuecomment-626330237).
+- LinkSelfContainedDefault::InferredForMusl => sess.crt_static(Some(crate_type)),
+ LinkSelfContainedDefault::InferredForMingw => {
+ sess.host == sess.target
+ && sess.target.vendor != "uwp"
+diff --git a/compiler/rustc_target/src/spec/base/linux_musl.rs b/compiler/rustc_target/src/spec/base/linux_musl.rs
+index 5117cadbee0e6..36d64059d59ad 100644
+--- a/compiler/rustc_target/src/spec/base/linux_musl.rs
++++ b/compiler/rustc_target/src/spec/base/linux_musl.rs
+@@ -1,13 +1,9 @@
+-use crate::spec::crt_objects;
+-use crate::spec::{base, LinkSelfContainedDefault, TargetOptions};
++use crate::spec::{base, TargetOptions};
+
+ pub fn opts() -> TargetOptions {
+ let mut base = base::linux::opts();
+
+ base.env = "musl".into();
+- base.pre_link_objects_self_contained = crt_objects::pre_musl_self_contained();
+- base.post_link_objects_self_contained = crt_objects::post_musl_self_contained();
+- base.link_self_contained = LinkSelfContainedDefault::InferredForMusl;
+
+ // These targets statically link libc by default
+ base.crt_static_default = true;
+diff --git a/compiler/rustc_target/src/spec/crt_objects.rs b/compiler/rustc_target/src/spec/crt_objects.rs
+index 53f710b8f9e14..2a4eec15f2027 100644
+--- a/compiler/rustc_target/src/spec/crt_objects.rs
++++ b/compiler/rustc_target/src/spec/crt_objects.rs
+@@ -61,28 +61,6 @@ pub(super) fn all(obj: &'static str) -> CrtObjects {
+ ])
+ }
+
+-pub(super) fn pre_musl_self_contained() -> CrtObjects {
+- new(&[
+- (LinkOutputKind::DynamicNoPicExe, &["crt1.o", "crti.o", "crtbegin.o"]),
+- (LinkOutputKind::DynamicPicExe, &["Scrt1.o", "crti.o", "crtbeginS.o"]),
+- (LinkOutputKind::StaticNoPicExe, &["crt1.o", "crti.o", "crtbegin.o"]),
+- (LinkOutputKind::StaticPicExe, &["rcrt1.o", "crti.o", "crtbeginS.o"]),
+- (LinkOutputKind::DynamicDylib, &["crti.o", "crtbeginS.o"]),
+- (LinkOutputKind::StaticDylib, &["crti.o", "crtbeginS.o"]),
+- ])
+-}
+-
+-pub(super) fn post_musl_self_contained() -> CrtObjects {
+- new(&[
+- (LinkOutputKind::DynamicNoPicExe, &["crtend.o", "crtn.o"]),
+- (LinkOutputKind::DynamicPicExe, &["crtendS.o", "crtn.o"]),
+- (LinkOutputKind::StaticNoPicExe, &["crtend.o", "crtn.o"]),
+- (LinkOutputKind::StaticPicExe, &["crtendS.o", "crtn.o"]),
+- (LinkOutputKind::DynamicDylib, &["crtendS.o", "crtn.o"]),
+- (LinkOutputKind::StaticDylib, &["crtendS.o", "crtn.o"]),
+- ])
+-}
+-
+ pub(super) fn pre_mingw_self_contained() -> CrtObjects {
+ new(&[
+ (LinkOutputKind::DynamicNoPicExe, &["crt2.o", "rsbegin.o"]),
+diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
+index 941d767b850dc..1ce8e0e64e4c7 100644
+--- a/compiler/rustc_target/src/spec/mod.rs
++++ b/compiler/rustc_target/src/spec/mod.rs
+@@ -549,9 +549,6 @@ pub enum LinkSelfContainedDefault {
+ /// The target spec explicitly disables self-contained linking.
+ False,
+
+- /// The target spec requests that the self-contained mode is inferred, in the context of musl.
+- InferredForMusl,
+-
+ /// The target spec requests that the self-contained mode is inferred, in the context of mingw.
+ InferredForMingw,
+
+@@ -568,7 +565,6 @@ impl FromStr for LinkSelfContainedDefault {
+ Ok(match s {
+ "false" => LinkSelfContainedDefault::False,
+ "true" | "wasm" => LinkSelfContainedDefault::True,
+- "musl" => LinkSelfContainedDefault::InferredForMusl,
+ "mingw" => LinkSelfContainedDefault::InferredForMingw,
+ _ => return Err(()),
+ })
+@@ -590,7 +586,6 @@ impl ToJson for LinkSelfContainedDefault {
+ // Stable backwards-compatible values
+ LinkSelfContainedDefault::True => "true".to_json(),
+ LinkSelfContainedDefault::False => "false".to_json(),
+- LinkSelfContainedDefault::InferredForMusl => "musl".to_json(),
+ LinkSelfContainedDefault::InferredForMingw => "mingw".to_json(),
+ }
+ }
+diff --git a/config.example.toml b/config.example.toml
+index f94553dd63f72..687a79bdd3ccc 100644
+--- a/config.example.toml
++++ b/config.example.toml
+@@ -592,14 +592,6 @@
+ # behavior -- this may lead to miscompilations or other bugs.
+ #description = ""
+
+-# The root location of the musl installation directory. The library directory
+-# will also need to contain libunwind.a for an unwinding implementation. Note
+-# that this option only makes sense for musl targets that produce statically
+-# linked binaries.
+-#
+-# Defaults to /usr on musl hosts. Has no default otherwise.
+-#musl-root = <platform specific> (path)
+-
+ # By default the `rustc` executable is built with `-Wl,-rpath` flags on Unix
+ # platforms to ensure that the compiler is usable by default from the build
+ # directory (as it links to a number of dynamic libraries). This may not be
+@@ -835,15 +827,6 @@
+ # only use static libraries. If unset, the target's default linkage is used.
+ #crt-static = <platform-specific> (bool)
+
+-# The root location of the musl installation directory. The library directory
+-# will also need to contain libunwind.a for an unwinding implementation. Note
+-# that this option only makes sense for musl targets that produce statically
+-# linked binaries.
+-#musl-root = build.musl-root (path)
+-
+-# The full path to the musl libdir.
+-#musl-libdir = musl-root/lib
+-
+ # The root location of the `wasm32-wasip1` sysroot. Only used for WASI
+ # related targets. Make sure to create a `[target.wasm32-wasip1]`
+ # section and move this field there (or equivalent for the target being built).
+diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py
+index 818a7daadcab8..a7331009faf82 100755
+--- a/src/bootstrap/configure.py
++++ b/src/bootstrap/configure.py
+@@ -99,40 +99,6 @@ def v(*args):
+ v("llvm-filecheck", None, "set path to LLVM's FileCheck utility")
+ v("python", "build.python", "set path to python")
+ v("android-ndk", "build.android-ndk", "set path to Android NDK")
+-v("musl-root", "target.x86_64-unknown-linux-musl.musl-root",
+- "MUSL root installation directory (deprecated)")
+-v("musl-root-x86_64", "target.x86_64-unknown-linux-musl.musl-root",
+- "x86_64-unknown-linux-musl install directory")
+-v("musl-root-i586", "target.i586-unknown-linux-musl.musl-root",
+- "i586-unknown-linux-musl install directory")
+-v("musl-root-i686", "target.i686-unknown-linux-musl.musl-root",
+- "i686-unknown-linux-musl install directory")
+-v("musl-root-arm", "target.arm-unknown-linux-musleabi.musl-root",
+- "arm-unknown-linux-musleabi install directory")
+-v("musl-root-armhf", "target.arm-unknown-linux-musleabihf.musl-root",
+- "arm-unknown-linux-musleabihf install directory")
+-v("musl-root-armv5te", "target.armv5te-unknown-linux-musleabi.musl-root",
+- "armv5te-unknown-linux-musleabi install directory")
+-v("musl-root-armv7", "target.armv7-unknown-linux-musleabi.musl-root",
+- "armv7-unknown-linux-musleabi install directory")
+-v("musl-root-armv7hf", "target.armv7-unknown-linux-musleabihf.musl-root",
+- "armv7-unknown-linux-musleabihf install directory")
+-v("musl-root-aarch64", "target.aarch64-unknown-linux-musl.musl-root",
+- "aarch64-unknown-linux-musl install directory")
+-v("musl-root-mips", "target.mips-unknown-linux-musl.musl-root",
+- "mips-unknown-linux-musl install directory")
+-v("musl-root-mipsel", "target.mipsel-unknown-linux-musl.musl-root",
+- "mipsel-unknown-linux-musl install directory")
+-v("musl-root-mips64", "target.mips64-unknown-linux-muslabi64.musl-root",
+- "mips64-unknown-linux-muslabi64 install directory")
+-v("musl-root-mips64el", "target.mips64el-unknown-linux-muslabi64.musl-root",
+- "mips64el-unknown-linux-muslabi64 install directory")
+-v("musl-root-riscv32gc", "target.riscv32gc-unknown-linux-musl.musl-root",
+- "riscv32gc-unknown-linux-musl install directory")
+-v("musl-root-riscv64gc", "target.riscv64gc-unknown-linux-musl.musl-root",
+- "riscv64gc-unknown-linux-musl install directory")
+-v("musl-root-loongarch64", "target.loongarch64-unknown-linux-musl.musl-root",
+- "loongarch64-unknown-linux-musl install directory")
+ v("qemu-armhf-rootfs", "target.arm-unknown-linux-gnueabihf.qemu-rootfs",
+ "rootfs in qemu testing, you probably don't want to use this")
+ v("qemu-aarch64-rootfs", "target.aarch64-unknown-linux-gnu.qemu-rootfs",
+diff --git a/src/bootstrap/src/core/build_steps/compile.rs b/src/bootstrap/src/core/build_steps/compile.rs
+index e927b491c71ea..b77e1a1598f12 100644
+--- a/src/bootstrap/src/core/build_steps/compile.rs
++++ b/src/bootstrap/src/core/build_steps/compile.rs
+@@ -362,38 +362,7 @@ fn copy_self_contained_objects(
+
+ // Copies the libc and CRT objects.
+ //
+- // rustc historically provides a more self-contained installation for musl targets
+- // not requiring the presence of a native musl toolchain. For example, it can fall back
+- // to using gcc from a glibc-targeting toolchain for linking.
+- // To do that we have to distribute musl startup objects as a part of Rust toolchain
+- // and link with them manually in the self-contained mode.
+- if target.contains("musl") && !target.contains("unikraft") {
+- let srcdir = builder.musl_libdir(target).unwrap_or_else(|| {
+- panic!("Target {:?} does not have a \"musl-libdir\" key", target.triple)
+- });
+- for &obj in &["libc.a", "crt1.o", "Scrt1.o", "rcrt1.o", "crti.o", "crtn.o"] {
+- copy_and_stamp(
+- builder,
+- &libdir_self_contained,
+- &srcdir,
+- obj,
+- &mut target_deps,
+- DependencyType::TargetSelfContained,
+- );
+- }
+- let crt_path = builder.ensure(llvm::CrtBeginEnd { target });
+- for &obj in &["crtbegin.o", "crtbeginS.o", "crtend.o", "crtendS.o"] {
+- let src = crt_path.join(obj);
+- let target = libdir_self_contained.join(obj);
+- builder.copy_link(&src, &target);
+- target_deps.push((target, DependencyType::TargetSelfContained));
+- }
+-
+- if !target.starts_with("s390x") {
+- let libunwind_path = copy_llvm_libunwind(builder, target, &libdir_self_contained);
+- target_deps.push((libunwind_path, DependencyType::TargetSelfContained));
+- }
+- } else if target.contains("-wasi") {
++ if target.contains("-wasi") {
+ let srcdir = builder.wasi_libdir(target).unwrap_or_else(|| {
+ panic!(
+ "Target {:?} does not have a \"wasi-root\" key in Config.toml \
+@@ -501,15 +470,6 @@ pub fn std_cargo(builder: &Builder<'_>, target: TargetSelection, stage: u32, car
+ .arg("--manifest-path")
+ .arg(builder.src.join("library/sysroot/Cargo.toml"));
+
+- // Help the libc crate compile by assisting it in finding various
+- // sysroot native libraries.
+- if target.contains("musl") {
+- if let Some(p) = builder.musl_libdir(target) {
+- let root = format!("native={}", p.to_str().unwrap());
+- cargo.rustflag("-L").rustflag(&root);
+- }
+- }
+-
+ if target.contains("-wasi") {
+ if let Some(dir) = builder.wasi_libdir(target) {
+ let root = format!("native={}", dir.to_str().unwrap());
+diff --git a/src/bootstrap/src/core/config/config.rs b/src/bootstrap/src/core/config/config.rs
+index 3e1bc9a9acdd9..2289138cbc3e6 100644
+--- a/src/bootstrap/src/core/config/config.rs
++++ b/src/bootstrap/src/core/config/config.rs
+@@ -313,8 +313,6 @@ pub struct Config {
+ pub print_step_timings: bool,
+ pub print_step_rusage: bool,
+
+- // Fallback musl-root for all targets
+- pub musl_root: Option<PathBuf>,
+ pub prefix: Option<PathBuf>,
+ pub sysconfdir: Option<PathBuf>,
+ pub datadir: Option<PathBuf>,
+@@ -558,8 +556,6 @@ pub struct Target {
+ pub profiler: Option<StringOrBool>,
+ pub rpath: Option<bool>,
+ pub crt_static: Option<bool>,
+- pub musl_root: Option<PathBuf>,
+- pub musl_libdir: Option<PathBuf>,
+ pub wasi_root: Option<PathBuf>,
+ pub qemu_rootfs: Option<PathBuf>,
+ pub runner: Option<String>,
+@@ -1080,7 +1076,6 @@ define_config! {
+ default_linker: Option<String> = "default-linker",
+ channel: Option<String> = "channel",
+ description: Option<String> = "description",
+- musl_root: Option<String> = "musl-root",
+ rpath: Option<bool> = "rpath",
+ strip: Option<bool> = "strip",
+ frame_pointers: Option<bool> = "frame-pointers",
+@@ -1134,8 +1129,6 @@ define_config! {
+ profiler: Option<StringOrBool> = "profiler",
+ rpath: Option<bool> = "rpath",
+ crt_static: Option<bool> = "crt-static",
+- musl_root: Option<String> = "musl-root",
+- musl_libdir: Option<String> = "musl-libdir",
+ wasi_root: Option<String> = "wasi-root",
+ qemu_rootfs: Option<String> = "qemu-rootfs",
+ no_std: Option<bool> = "no-std",
+@@ -1570,7 +1563,6 @@ impl Config {
+ default_linker,
+ channel,
+ description,
+- musl_root,
+ rpath,
+ verbose_tests,
+ optimize_tests,
+@@ -1673,7 +1665,6 @@ impl Config {
+ config.rustc_parallel =
+ parallel_compiler.unwrap_or(config.channel == "dev" || config.channel == "nightly");
+ config.rustc_default_linker = default_linker;
+- config.musl_root = musl_root.map(PathBuf::from);
+ config.save_toolstates = save_toolstates.map(PathBuf::from);
+ set(
+ &mut config.deny_warnings,
+@@ -1876,8 +1867,6 @@ impl Config {
+ target.ranlib = cfg.ranlib.map(PathBuf::from);
+ target.linker = cfg.linker.map(PathBuf::from);
+ target.crt_static = cfg.crt_static;
+- target.musl_root = cfg.musl_root.map(PathBuf::from);
+- target.musl_libdir = cfg.musl_libdir.map(PathBuf::from);
+ target.wasi_root = cfg.wasi_root.map(PathBuf::from);
+ target.qemu_rootfs = cfg.qemu_rootfs.map(PathBuf::from);
+ target.runner = cfg.runner;
+diff --git a/src/bootstrap/src/core/sanity.rs b/src/bootstrap/src/core/sanity.rs
+index e03b1e179084e..e61335d9b46c1 100644
+--- a/src/bootstrap/src/core/sanity.rs
++++ b/src/bootstrap/src/core/sanity.rs
+@@ -11,7 +11,6 @@
+ use std::collections::HashMap;
+ use std::env;
+ use std::ffi::{OsStr, OsString};
+-use std::fs;
+ use std::path::PathBuf;
+ use std::process::Command;
+
+@@ -323,28 +322,6 @@ than building it.
+ continue;
+ }
+
+- // Make sure musl-root is valid.
+- if target.contains("musl") && !target.contains("unikraft") {
+- // If this is a native target (host is also musl) and no musl-root is given,
+- // fall back to the system toolchain in /usr before giving up
+- if build.musl_root(*target).is_none() && build.config.build == *target {
+- let target = build.config.target_config.entry(*target).or_default();
+- target.musl_root = Some("/usr".into());
+- }
+- match build.musl_libdir(*target) {
+- Some(libdir) => {
+- if fs::metadata(libdir.join("libc.a")).is_err() {
+- panic!("couldn't find libc.a in musl libdir: {}", libdir.display());
+- }
+- }
+- None => panic!(
+- "when targeting MUSL either the rust.musl-root \
+- option or the target.$TARGET.musl-root option must \
+- be specified in config.toml"
+- ),
+- }
+- }
+-
+ if need_cmake && target.is_msvc() {
+ // There are three builds of cmake on windows: MSVC, MinGW, and
+ // Cygwin. The Cygwin build does not have generators for Visual
+diff --git a/src/bootstrap/src/lib.rs b/src/bootstrap/src/lib.rs
+index 30d775f774ce7..23145199b4bbb 100644
+--- a/src/bootstrap/src/lib.rs
++++ b/src/bootstrap/src/lib.rs
+@@ -1365,25 +1365,6 @@ impl Build {
+ }
+ }
+
+- /// Returns the "musl root" for this `target`, if defined
+- fn musl_root(&self, target: TargetSelection) -> Option<&Path> {
+- self.config
+- .target_config
+- .get(&target)
+- .and_then(|t| t.musl_root.as_ref())
+- .or(self.config.musl_root.as_ref())
+- .map(|p| &**p)
+- }
+-
+- /// Returns the "musl libdir" for this `target`.
+- fn musl_libdir(&self, target: TargetSelection) -> Option<PathBuf> {
+- let t = self.config.target_config.get(&target)?;
+- if let libdir @ Some(_) = &t.musl_libdir {
+- return libdir.clone();
+- }
+- self.musl_root(target).map(|root| root.join("lib"))
+- }
+-
+ /// Returns the `lib` directory for the WASI target specified, if
+ /// configured.
+ ///
+diff --git a/src/bootstrap/src/utils/cc_detect.rs b/src/bootstrap/src/utils/cc_detect.rs
+index 3ba4e0cb686e6..33dba449dee2a 100644
+--- a/src/bootstrap/src/utils/cc_detect.rs
++++ b/src/bootstrap/src/utils/cc_detect.rs
+@@ -41,7 +41,7 @@ fn cc2ar(cc: &Path, target: TargetSelection) -> Option<PathBuf> {
+ Some(PathBuf::from(ar))
+ } else if target.is_msvc() {
+ None
+- } else if target.contains("musl") || target.contains("openbsd") {
++ } else if target.contains("openbsd") {
+ Some(PathBuf::from("ar"))
+ } else if target.contains("vxworks") {
+ Some(PathBuf::from("wr-ar"))
+@@ -197,30 +197,6 @@ fn default_compiler(
+ }
+ }
+
+- "mips-unknown-linux-musl" if compiler == Language::C => {
+- if cfg.get_compiler().path().to_str() == Some("gcc") {
+- Some(PathBuf::from("mips-linux-musl-gcc"))
+- } else {
+- None
+- }
+- }
+- "mipsel-unknown-linux-musl" if compiler == Language::C => {
+- if cfg.get_compiler().path().to_str() == Some("gcc") {
+- Some(PathBuf::from("mipsel-linux-musl-gcc"))
+- } else {
+- None
+- }
+- }
+-
+- t if t.contains("musl") && compiler == Language::C => {
+- if let Some(root) = build.musl_root(target) {
+- let guess = root.join("bin/musl-gcc");
+- if guess.exists() { Some(guess) } else { None }
+- } else {
+- None
+- }
+- }
+-
+ t if t.contains("-wasi") => {
+ let root = PathBuf::from(std::env::var_os("WASI_SDK_PATH")?);
+ let compiler = match compiler {
+diff --git a/src/ci/docker/host-x86_64/dist-arm-linux/Dockerfile b/src/ci/docker/host-x86_64/dist-arm-linux/Dockerfile
+index 420c42bc9d807..83ff773c08e1a 100644
+--- a/src/ci/docker/host-x86_64/dist-arm-linux/Dockerfile
++++ b/src/ci/docker/host-x86_64/dist-arm-linux/Dockerfile
+@@ -36,7 +36,6 @@ ENV HOSTS=arm-unknown-linux-gnueabi,aarch64-unknown-linux-musl
+ ENV RUST_CONFIGURE_ARGS \
+ --enable-full-tools \
+ --disable-docs \
+- --musl-root-aarch64=/usr/local/aarch64-linux-musl \
+ --enable-sanitizers \
+ --enable-profiler \
+ --set target.aarch64-unknown-linux-musl.crt-static=false
+diff --git a/src/ci/docker/host-x86_64/dist-i586-gnu-i586-i686-musl/Dockerfile b/src/ci/docker/host-x86_64/dist-i586-gnu-i586-i686-musl/Dockerfile
+index a62f98b21d225..f949736e866c4 100644
+--- a/src/ci/docker/host-x86_64/dist-i586-gnu-i586-i686-musl/Dockerfile
++++ b/src/ci/docker/host-x86_64/dist-i586-gnu-i586-i686-musl/Dockerfile
+@@ -58,8 +58,6 @@ COPY scripts/sccache.sh /scripts/
+ RUN sh /scripts/sccache.sh
+
+ ENV RUST_CONFIGURE_ARGS \
+- --musl-root-i586=/musl-i586 \
+- --musl-root-i686=/musl-i686 \
+ --disable-docs
+
+ # Newer binutils broke things on some vms/distros (i.e., linking against
+diff --git a/src/ci/docker/host-x86_64/dist-various-1/Dockerfile b/src/ci/docker/host-x86_64/dist-various-1/Dockerfile
+index 09fbbac466c72..1ab841763db19 100644
+--- a/src/ci/docker/host-x86_64/dist-various-1/Dockerfile
++++ b/src/ci/docker/host-x86_64/dist-various-1/Dockerfile
+@@ -154,10 +154,6 @@ ENV CFLAGS_armv5te_unknown_linux_musleabi="-march=armv5te -marm -mfloat-abi=soft
+ CC_x86_64_pc_windows_gnullvm=x86_64-w64-mingw32-clang
+
+ ENV RUST_CONFIGURE_ARGS \
+- --musl-root-armv5te=/musl-armv5te \
+- --musl-root-arm=/musl-arm \
+- --musl-root-armhf=/musl-armhf \
+- --musl-root-armv7hf=/musl-armv7hf \
+ --disable-docs
+
+ ENV SCRIPT \
+diff --git a/src/ci/docker/host-x86_64/dist-various-2/Dockerfile b/src/ci/docker/host-x86_64/dist-various-2/Dockerfile
+index 9b15bb3530b61..d15d69e4fee47 100644
+--- a/src/ci/docker/host-x86_64/dist-various-2/Dockerfile
++++ b/src/ci/docker/host-x86_64/dist-various-2/Dockerfile
+@@ -134,6 +134,5 @@ RUN ln -s /usr/include/x86_64-linux-gnu/asm /usr/local/include/asm
+ RUN ln -s /usr/include/x86_64-linux-gnu/asm /usr/local/include/asm
+
+-ENV RUST_CONFIGURE_ARGS --enable-extended --enable-lld --enable-llvm-bitcode-linker --disable-docs \
++ENV RUST_CONFIGURE_ARGS --enable-extended --enable-lld --enable-llvm-bitcode-linker --disable-docs
+- --musl-root-armv7=/musl-armv7
+
+ ENV SCRIPT python3 ../x.py dist --host='' --target $TARGETS
+diff --git a/src/ci/docker/host-x86_64/dist-x86_64-musl/Dockerfile b/src/ci/docker/host-x86_64/dist-x86_64-musl/Dockerfile
+index c9a6a2dd069e2..30eda009dee30 100644
+--- a/src/ci/docker/host-x86_64/dist-x86_64-musl/Dockerfile
++++ b/src/ci/docker/host-x86_64/dist-x86_64-musl/Dockerfile
+@@ -35,7 +35,6 @@ RUN sh /scripts/sccache.sh
+ ENV HOSTS=x86_64-unknown-linux-musl
+
+ ENV RUST_CONFIGURE_ARGS \
+- --musl-root-x86_64=/usr/local/x86_64-linux-musl \
+ --enable-extended \
+ --enable-sanitizers \
+ --enable-profiler \
+diff --git a/src/ci/docker/host-x86_64/test-various/Dockerfile b/src/ci/docker/host-x86_64/test-various/Dockerfile
+index 944d9aed3190b..b0ffa7c0e316e 100644
+--- a/src/ci/docker/host-x86_64/test-various/Dockerfile
++++ b/src/ci/docker/host-x86_64/test-various/Dockerfile
+@@ -45,7 +45,6 @@ COPY host-x86_64/dist-various-2/build-wasi-toolchain.sh /tmp/
+ ENV WASI_SDK_PATH=/wasi-sdk-22.0
+
+ ENV RUST_CONFIGURE_ARGS \
+- --musl-root-x86_64=/usr/local/x86_64-linux-musl \
+ --set rust.lld
+
+ # Some run-make tests have assertions about code size, and enabling debug
diff --git a/user/rust/0004-Require-static-native-libraries-when-linking-static-.patch b/user/rust/0004-Require-static-native-libraries-when-linking-static-.patch
deleted file mode 100644
index 6ec5eb76f..000000000
--- a/user/rust/0004-Require-static-native-libraries-when-linking-static-.patch
+++ /dev/null
@@ -1,50 +0,0 @@
-From 46e6ead56b2899d9041fe73c1530b7f02df2ca40 Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Fri, 8 Sep 2017 00:05:18 -0500
-Subject: [PATCH 04/14] Require static native libraries when linking static
- executables
-
-gcc/ld will create a dynamically-linked executable without warning, even
-when passed `-static`, when asked to link to a `.so`. Avoid this
-confusing and unintended behavior by always using the static version of
-libraries when trying to link static executables.
-
-Fixes #54243
----
- src/librustc_codegen_llvm/back/link.rs | 13 ++++++++++---
- 1 file changed, 10 insertions(+), 3 deletions(-)
-
-diff --git a/src/librustc_codegen_llvm/back/link.rs b/src/librustc_codegen_llvm/back/link.rs
-index fc744201a3..bae8b6ed75 100644
---- a/src/librustc_codegen_llvm/back/link.rs
-+++ b/src/librustc_codegen_llvm/back/link.rs
-@@ -1413,8 +1413,8 @@ fn add_upstream_rust_crates(cmd: &mut dyn Linker,
- }
- }
-
--// Link in all of our upstream crates' native dependencies. Remember that
--// all of these upstream native dependencies are all non-static
-+// Link in all of our upstream crates' native dependencies. Remember that when
-+// linking libraries, these upstream native dependencies are all non-static
- // dependencies. We've got two cases then:
- //
- // 1. The upstream crate is an rlib. In this case we *must* link in the
-@@ -1458,7 +1458,14 @@ fn add_upstream_native_libraries(cmd: &mut dyn Linker,
- continue
- }
- match lib.kind {
-- NativeLibraryKind::NativeUnknown => cmd.link_dylib(&name.as_str()),
-+ NativeLibraryKind::NativeUnknown => {
-+ // When creating executables, match library linkage to that of the executable.
-+ if crate_type == config::CrateType::Executable && sess.crt_static() {
-+ cmd.link_staticlib(&name.as_str())
-+ } else {
-+ cmd.link_dylib(&name.as_str())
-+ }
-+ },
- NativeLibraryKind::NativeFramework => cmd.link_framework(&name.as_str()),
- NativeLibraryKind::NativeStaticNobundle => {
- // Link "static-nobundle" native libs only if the crate they originate from
---
-2.21.0
-
diff --git a/user/rust/0005-Prefer-libgcc_eh-over-libunwind-for-musl.patch b/user/rust/0005-Prefer-libgcc_eh-over-libunwind-for-musl.patch
new file mode 100644
index 000000000..cbb22cd45
--- /dev/null
+++ b/user/rust/0005-Prefer-libgcc_eh-over-libunwind-for-musl.patch
@@ -0,0 +1,25 @@
+From 78ae73f09d07c847ede1dc683b8907f5bd5bd17f Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Sat, 9 Sep 2017 00:14:16 -0500
+Subject: [PATCH 05/12] Prefer libgcc_eh over libunwind for musl
+
+---
+ library/unwind/src/lib.rs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/library/unwind/src/lib.rs b/library/unwind/src/lib.rs
+index 079626f0fea..590fca0acfa 100644
+--- a/library/unwind/src/lib.rs
++++ b/library/unwind/src/lib.rs
+@@ -63,7 +63,7 @@
+ #[link(name = "unwind", cfg(not(target_feature = "crt-static")))]
+ extern "C" {}
+ } else {
+- #[link(name = "unwind", kind = "static", modifiers = "-bundle", cfg(target_feature = "crt-static"))]
++ #[link(name = "gcc_eh", kind = "static", modifiers = "-bundle", cfg(target_feature = "crt-static"))]
+ #[link(name = "gcc_s", cfg(not(target_feature = "crt-static")))]
+ extern "C" {}
+ }
+--
+2.35.1
+
diff --git a/user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch b/user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
deleted file mode 100644
index 6053de26b..000000000
--- a/user/rust/0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
+++ /dev/null
@@ -1,388 +0,0 @@
-From 5d98731bae319172c5fbfd8235f62bb00acb3a7d Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Fri, 8 Sep 2017 22:11:14 -0500
-Subject: [PATCH 05/14] Remove -nostdlib and musl_root from musl targets
-
----
- config.toml.example | 6 ----
- src/bootstrap/bin/rustc.rs | 12 --------
- src/bootstrap/cc_detect.rs | 27 ++----------------
- src/bootstrap/compile.rs | 21 --------------
- src/bootstrap/config.rs | 7 -----
- src/bootstrap/configure.py | 22 ---------------
- src/bootstrap/lib.rs | 8 ------
- src/bootstrap/sanity.rs | 28 -------------------
- .../dist-i586-gnu-i586-i686-musl/Dockerfile | 2 --
- src/ci/docker/dist-various-1/Dockerfile | 7 -----
- src/ci/docker/dist-x86_64-musl/Dockerfile | 1 -
- src/librustc_target/spec/linux_musl_base.rs | 16 -----------
- 12 files changed, 3 insertions(+), 154 deletions(-)
-
-diff --git a/config.toml.example b/config.toml.example
-index 23943d34b7..5eace54c6b 100644
---- a/config.toml.example
-+++ b/config.toml.example
-@@ -461,12 +461,6 @@
- # only use static libraries. If unset, the target's default linkage is used.
- #crt-static = false
-
--# The root location of the MUSL installation directory. The library directory
--# will also need to contain libunwind.a for an unwinding implementation. Note
--# that this option only makes sense for MUSL targets that produce statically
--# linked binaries
--#musl-root = "..."
--
- # Used in testing for configuring where the QEMU images are located, you
- # probably don't want to use this.
- #qemu-rootfs = "..."
-diff --git a/src/bootstrap/bin/rustc.rs b/src/bootstrap/bin/rustc.rs
-index a0c75cd9e9..f8daab9bd1 100644
---- a/src/bootstrap/bin/rustc.rs
-+++ b/src/bootstrap/bin/rustc.rs
-@@ -20,7 +20,6 @@
- extern crate bootstrap;
-
- use std::env;
--use std::ffi::OsString;
- use std::io;
- use std::path::PathBuf;
- use std::process::Command;
-@@ -116,17 +115,6 @@ fn main() {
- cmd.arg("-Cprefer-dynamic");
- }
-
-- // Help the libc crate compile by assisting it in finding the MUSL
-- // native libraries.
-- if let Some(s) = env::var_os("MUSL_ROOT") {
-- if target.contains("musl") {
-- let mut root = OsString::from("native=");
-- root.push(&s);
-- root.push("/lib");
-- cmd.arg("-L").arg(&root);
-- }
-- }
--
- // Override linker if necessary.
- if let Ok(target_linker) = env::var("RUSTC_TARGET_LINKER") {
- cmd.arg(format!("-Clinker={}", target_linker));
-diff --git a/src/bootstrap/cc_detect.rs b/src/bootstrap/cc_detect.rs
-index 37844759c7..fa553c0b06 100644
---- a/src/bootstrap/cc_detect.rs
-+++ b/src/bootstrap/cc_detect.rs
-@@ -85,7 +85,7 @@ pub fn find(build: &mut Build) {
- if let Some(cc) = config.and_then(|c| c.cc.as_ref()) {
- cfg.compiler(cc);
- } else {
-- set_compiler(&mut cfg, Language::C, target, config, build);
-+ set_compiler(&mut cfg, Language::C, target, config);
- }
-
- let compiler = cfg.get_compiler();
-@@ -114,7 +114,7 @@ pub fn find(build: &mut Build) {
- if let Some(cxx) = config.and_then(|c| c.cxx.as_ref()) {
- cfg.compiler(cxx);
- } else {
-- set_compiler(&mut cfg, Language::CPlusPlus, host, config, build);
-+ set_compiler(&mut cfg, Language::CPlusPlus, host, config);
- }
- let compiler = cfg.get_compiler();
- build.verbose(&format!("CXX_{} = {:?}", host, compiler.path()));
-@@ -125,8 +125,7 @@ pub fn find(build: &mut Build) {
- fn set_compiler(cfg: &mut cc::Build,
- compiler: Language,
- target: Interned<String>,
-- config: Option<&Target>,
-- build: &Build) {
-+ config: Option<&Target>) {
- match &*target {
- // When compiling for android we may have the NDK configured in the
- // config.toml in which case we look there. Otherwise the default
-@@ -166,26 +165,6 @@ fn set_compiler(cfg: &mut cc::Build,
- }
- }
-
-- "mips-unknown-linux-musl" => {
-- if cfg.get_compiler().path().to_str() == Some("gcc") {
-- cfg.compiler("mips-linux-musl-gcc");
-- }
-- }
-- "mipsel-unknown-linux-musl" => {
-- if cfg.get_compiler().path().to_str() == Some("gcc") {
-- cfg.compiler("mipsel-linux-musl-gcc");
-- }
-- }
--
-- t if t.contains("musl") => {
-- if let Some(root) = build.musl_root(target) {
-- let guess = root.join("bin/musl-gcc");
-- if guess.exists() {
-- cfg.compiler(guess);
-- }
-- }
-- }
--
- _ => {}
- }
- }
-diff --git a/src/bootstrap/compile.rs b/src/bootstrap/compile.rs
-index b581271663..21421b2e38 100644
---- a/src/bootstrap/compile.rs
-+++ b/src/bootstrap/compile.rs
-@@ -114,21 +114,6 @@ impl Step for Std {
- fn copy_third_party_objects(builder: &Builder, compiler: &Compiler, target: Interned<String>) {
- let libdir = builder.sysroot_libdir(*compiler, target);
-
-- // Copies the crt(1,i,n).o startup objects
-- //
-- // Since musl supports fully static linking, we can cross link for it even
-- // with a glibc-targeting toolchain, given we have the appropriate startup
-- // files. As those shipped with glibc won't work, copy the ones provided by
-- // musl so we have them on linux-gnu hosts.
-- if target.contains("musl") {
-- for &obj in &["crt1.o", "crti.o", "crtn.o"] {
-- builder.copy(
-- &builder.musl_root(target).unwrap().join("lib").join(obj),
-- &libdir.join(obj),
-- );
-- }
-- }
--
- // Copies libunwind.a compiled to be linked wit x86_64-fortanix-unknown-sgx.
- //
- // This target needs to be linked to Fortanix's port of llvm's libunwind.
-@@ -182,12 +167,6 @@ pub fn std_cargo(builder: &Builder,
- cargo.arg("--features").arg(features)
- .arg("--manifest-path")
- .arg(builder.src.join("src/libstd/Cargo.toml"));
--
-- if target.contains("musl") {
-- if let Some(p) = builder.musl_root(target) {
-- cargo.env("MUSL_ROOT", p);
-- }
-- }
- }
- }
-
-diff --git a/src/bootstrap/config.rs b/src/bootstrap/config.rs
-index 9421817ae6..cd70c1a1e4 100644
---- a/src/bootstrap/config.rs
-+++ b/src/bootstrap/config.rs
-@@ -128,8 +128,6 @@ pub struct Config {
- pub print_step_timings: bool,
- pub missing_tools: bool,
-
-- // Fallback musl-root for all targets
-- pub musl_root: Option<PathBuf>,
- pub prefix: Option<PathBuf>,
- pub sysconfdir: Option<PathBuf>,
- pub datadir: Option<PathBuf>,
-@@ -164,7 +162,6 @@ pub struct Target {
- pub linker: Option<PathBuf>,
- pub ndk: Option<PathBuf>,
- pub crt_static: Option<bool>,
-- pub musl_root: Option<PathBuf>,
- pub qemu_rootfs: Option<PathBuf>,
- pub no_std: bool,
- }
-@@ -296,7 +293,6 @@ struct Rust {
- backtrace: Option<bool>,
- default_linker: Option<String>,
- channel: Option<String>,
-- musl_root: Option<String>,
- rpath: Option<bool>,
- optimize_tests: Option<bool>,
- debuginfo_tests: Option<bool>,
-@@ -335,7 +331,6 @@ struct TomlTarget {
- linker: Option<String>,
- android_ndk: Option<String>,
- crt_static: Option<bool>,
-- musl_root: Option<String>,
- qemu_rootfs: Option<String>,
- }
-
-@@ -549,7 +544,6 @@ impl Config {
- set(&mut config.llvm_tools_enabled, rust.llvm_tools);
- config.rustc_parallel_queries = rust.experimental_parallel_queries.unwrap_or(false);
- config.rustc_default_linker = rust.default_linker.clone();
-- config.musl_root = rust.musl_root.clone().map(PathBuf::from);
- config.save_toolstates = rust.save_toolstates.clone().map(PathBuf::from);
- set(&mut config.deny_warnings, rust.deny_warnings.or(flags.warnings));
- set(&mut config.backtrace_on_ice, rust.backtrace_on_ice);
-@@ -592,7 +586,6 @@ impl Config {
- target.ranlib = cfg.ranlib.clone().map(PathBuf::from);
- target.linker = cfg.linker.clone().map(PathBuf::from);
- target.crt_static = cfg.crt_static.clone();
-- target.musl_root = cfg.musl_root.clone().map(PathBuf::from);
- target.qemu_rootfs = cfg.qemu_rootfs.clone().map(PathBuf::from);
-
- config.target_config.insert(INTERNER.intern_string(triple.clone()), target);
-diff --git a/src/bootstrap/configure.py b/src/bootstrap/configure.py
-index b0c3c97024..5128897bf7 100755
---- a/src/bootstrap/configure.py
-+++ b/src/bootstrap/configure.py
-@@ -105,28 +105,6 @@ v("aarch64-linux-android-ndk", "target.aarch64-linux-android.android-ndk",
- "aarch64-linux-android NDK standalone path")
- v("x86_64-linux-android-ndk", "target.x86_64-linux-android.android-ndk",
- "x86_64-linux-android NDK standalone path")
--v("musl-root", "target.x86_64-unknown-linux-musl.musl-root",
-- "MUSL root installation directory (deprecated)")
--v("musl-root-x86_64", "target.x86_64-unknown-linux-musl.musl-root",
-- "x86_64-unknown-linux-musl install directory")
--v("musl-root-i586", "target.i586-unknown-linux-musl.musl-root",
-- "i586-unknown-linux-musl install directory")
--v("musl-root-i686", "target.i686-unknown-linux-musl.musl-root",
-- "i686-unknown-linux-musl install directory")
--v("musl-root-arm", "target.arm-unknown-linux-musleabi.musl-root",
-- "arm-unknown-linux-musleabi install directory")
--v("musl-root-armhf", "target.arm-unknown-linux-musleabihf.musl-root",
-- "arm-unknown-linux-musleabihf install directory")
--v("musl-root-armv5te", "target.armv5te-unknown-linux-musleabi.musl-root",
-- "armv5te-unknown-linux-musleabi install directory")
--v("musl-root-armv7", "target.armv7-unknown-linux-musleabihf.musl-root",
-- "armv7-unknown-linux-musleabihf install directory")
--v("musl-root-aarch64", "target.aarch64-unknown-linux-musl.musl-root",
-- "aarch64-unknown-linux-musl install directory")
--v("musl-root-mips", "target.mips-unknown-linux-musl.musl-root",
-- "mips-unknown-linux-musl install directory")
--v("musl-root-mipsel", "target.mipsel-unknown-linux-musl.musl-root",
-- "mipsel-unknown-linux-musl install directory")
- v("qemu-armhf-rootfs", "target.arm-unknown-linux-gnueabihf.qemu-rootfs",
- "rootfs in qemu testing, you probably don't want to use this")
- v("qemu-aarch64-rootfs", "target.aarch64-unknown-linux-gnu.qemu-rootfs",
-diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs
-index 74c04bac6b..aa91600ea7 100644
---- a/src/bootstrap/lib.rs
-+++ b/src/bootstrap/lib.rs
-@@ -849,14 +849,6 @@ impl Build {
- }
- }
-
-- /// Returns the "musl root" for this `target`, if defined
-- fn musl_root(&self, target: Interned<String>) -> Option<&Path> {
-- self.config.target_config.get(&target)
-- .and_then(|t| t.musl_root.as_ref())
-- .or(self.config.musl_root.as_ref())
-- .map(|p| &**p)
-- }
--
- /// Returns true if this is a no-std `target`, if defined
- fn no_std(&self, target: Interned<String>) -> Option<bool> {
- self.config.target_config.get(&target)
-diff --git a/src/bootstrap/sanity.rs b/src/bootstrap/sanity.rs
-index fe547a6b15..a452c874c4 100644
---- a/src/bootstrap/sanity.rs
-+++ b/src/bootstrap/sanity.rs
-@@ -169,34 +169,6 @@ pub fn check(build: &mut Build) {
- }
- }
-
-- // Make sure musl-root is valid
-- if target.contains("musl") {
-- // If this is a native target (host is also musl) and no musl-root is given,
-- // fall back to the system toolchain in /usr before giving up
-- if build.musl_root(*target).is_none() && build.config.build == *target {
-- let target = build.config.target_config.entry(target.clone())
-- .or_default();
-- target.musl_root = Some("/usr".into());
-- }
-- match build.musl_root(*target) {
-- Some(root) => {
-- if fs::metadata(root.join("lib/libc.a")).is_err() {
-- panic!("couldn't find libc.a in musl dir: {}",
-- root.join("lib").display());
-- }
-- if fs::metadata(root.join("lib/libunwind.a")).is_err() {
-- panic!("couldn't find libunwind.a in musl dir: {}",
-- root.join("lib").display());
-- }
-- }
-- None => {
-- panic!("when targeting MUSL either the rust.musl-root \
-- option or the target.$TARGET.musl-root option must \
-- be specified in config.toml")
-- }
-- }
-- }
--
- if target.contains("msvc") {
- // There are three builds of cmake on windows: MSVC, MinGW, and
- // Cygwin. The Cygwin build does not have generators for Visual
-diff --git a/src/ci/docker/dist-i586-gnu-i586-i686-musl/Dockerfile b/src/ci/docker/dist-i586-gnu-i586-i686-musl/Dockerfile
-index ba2d32a929..412c37fdd1 100644
---- a/src/ci/docker/dist-i586-gnu-i586-i686-musl/Dockerfile
-+++ b/src/ci/docker/dist-i586-gnu-i586-i686-musl/Dockerfile
-@@ -30,8 +30,6 @@ COPY scripts/sccache.sh /scripts/
- RUN sh /scripts/sccache.sh
-
- ENV RUST_CONFIGURE_ARGS \
-- --musl-root-i586=/musl-i586 \
-- --musl-root-i686=/musl-i686 \
- --enable-extended \
- --disable-docs
-
-diff --git a/src/ci/docker/dist-various-1/Dockerfile b/src/ci/docker/dist-various-1/Dockerfile
-index ab2dd5a399..a9569fe6d4 100644
---- a/src/ci/docker/dist-various-1/Dockerfile
-+++ b/src/ci/docker/dist-various-1/Dockerfile
-@@ -128,13 +128,6 @@ ENV CC_mipsel_unknown_linux_musl=mipsel-openwrt-linux-gcc \
- CXX_thumbv7neon_unknown_linux_gnueabihf=arm-linux-gnueabihf-g++
-
- ENV RUST_CONFIGURE_ARGS \
-- --musl-root-armv5te=/musl-armv5te \
-- --musl-root-arm=/musl-arm \
-- --musl-root-armhf=/musl-armhf \
-- --musl-root-armv7=/musl-armv7 \
-- --musl-root-aarch64=/musl-aarch64 \
-- --musl-root-mips=/musl-mips \
-- --musl-root-mipsel=/musl-mipsel \
- --enable-emscripten \
- --disable-docs
-
-diff --git a/src/ci/docker/dist-x86_64-musl/Dockerfile b/src/ci/docker/dist-x86_64-musl/Dockerfile
-index 06f8a2fbba..f5dd379528 100644
---- a/src/ci/docker/dist-x86_64-musl/Dockerfile
-+++ b/src/ci/docker/dist-x86_64-musl/Dockerfile
-@@ -30,7 +30,6 @@ COPY scripts/sccache.sh /scripts/
- RUN sh /scripts/sccache.sh
-
- ENV RUST_CONFIGURE_ARGS \
-- --musl-root-x86_64=/musl-x86_64 \
- --enable-extended \
- --disable-docs
-
-diff --git a/src/librustc_target/spec/linux_musl_base.rs b/src/librustc_target/spec/linux_musl_base.rs
-index 1bc90d1a73..e26a5240a6 100644
---- a/src/librustc_target/spec/linux_musl_base.rs
-+++ b/src/librustc_target/spec/linux_musl_base.rs
-@@ -3,28 +3,12 @@ use spec::{LinkerFlavor, TargetOptions};
- pub fn opts() -> TargetOptions {
- let mut base = super::linux_base::opts();
-
-- // Make sure that the linker/gcc really don't pull in anything, including
-- // default objects, libs, etc.
-- base.pre_link_args_crt.insert(LinkerFlavor::Gcc, Vec::new());
-- base.pre_link_args_crt.get_mut(&LinkerFlavor::Gcc).unwrap().push("-nostdlib".to_string());
--
- // At least when this was tested, the linker would not add the
- // `GNU_EH_FRAME` program header to executables generated, which is required
- // when unwinding to locate the unwinding information. I'm not sure why this
- // argument is *not* necessary for normal builds, but it can't hurt!
- base.pre_link_args.get_mut(&LinkerFlavor::Gcc).unwrap().push("-Wl,--eh-frame-hdr".to_string());
-
-- // When generating a statically linked executable there's generally some
-- // small setup needed which is listed in these files. These are provided by
-- // a musl toolchain and are linked by default by the `musl-gcc` script. Note
-- // that `gcc` also does this by default, it just uses some different files.
-- //
-- // Each target directory for musl has these object files included in it so
-- // they'll be included from there.
-- base.pre_link_objects_exe_crt.push("crt1.o".to_string());
-- base.pre_link_objects_exe_crt.push("crti.o".to_string());
-- base.post_link_objects_crt.push("crtn.o".to_string());
--
- // These targets statically link libc by default
- base.crt_static_default = true;
- // These targets allow the user to choose between static and dynamic linking.
---
-2.21.0
-
diff --git a/user/rust/0006-Link-libssp_nonshared.a-on-all-musl-targets.patch b/user/rust/0006-Link-libssp_nonshared.a-on-all-musl-targets.patch
new file mode 100644
index 000000000..d34bb560d
--- /dev/null
+++ b/user/rust/0006-Link-libssp_nonshared.a-on-all-musl-targets.patch
@@ -0,0 +1,28 @@
+From f516ef748075ddfbcbaec493e1a7ee1e59538bd0 Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Sun, 3 Nov 2019 17:01:32 -0600
+Subject: [PATCH 06/12] Link libssp_nonshared.a on all musl targets
+
+---
+ compiler/rustc_target/src/spec/base/linux_musl.rs | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/compiler/rustc_target/src/spec/base/linux_musl.rs b/compiler/rustc_target/src/spec/base/linux_musl.rs
+index 36d64059d59ad..c113af2464423 100644
+--- a/compiler/rustc_target/src/spec/base/linux_musl.rs
++++ b/compiler/rustc_target/src/spec/base/linux_musl.rs
+@@ -1,10 +1,13 @@
+-use crate::spec::{base, TargetOptions};
++use crate::spec::{add_link_args, base, Cc, LinkerFlavor, Lld, TargetOptions};
+
+ pub fn opts() -> TargetOptions {
+ let mut base = base::linux::opts();
+
+ base.env = "musl".into();
+
++ // libssp_nonshared.a is needed for __stack_chk_fail_local when using libc.so
++ add_link_args(&mut base.post_link_args, LinkerFlavor::Gnu(Cc::Yes, Lld::No), &["-lssp_nonshared"]);
++
+ // These targets statically link libc by default
+ base.crt_static_default = true;
+
diff --git a/user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch b/user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
deleted file mode 100644
index f7f7ccd3e..000000000
--- a/user/rust/0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From eb2340bd8c8d9e79eb4bb231ccb31cd4e4bba907 Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Sat, 9 Sep 2017 00:14:16 -0500
-Subject: [PATCH 06/14] Prefer libgcc_eh over libunwind for musl
-
----
- src/libunwind/lib.rs | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/src/libunwind/lib.rs b/src/libunwind/lib.rs
-index 7ed7837268..2f38a43845 100644
---- a/src/libunwind/lib.rs
-+++ b/src/libunwind/lib.rs
-@@ -26,6 +26,6 @@ cfg_if! {
- }
-
- #[cfg(target_env = "musl")]
--#[link(name = "unwind", kind = "static", cfg(target_feature = "crt-static"))]
-+#[link(name = "gcc_eh", cfg(target_feature = "crt-static"))]
- #[link(name = "gcc_s", cfg(not(target_feature = "crt-static")))]
- extern {}
---
-2.21.0
-
diff --git a/user/rust/0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch b/user/rust/0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
deleted file mode 100644
index 6435eeef0..000000000
--- a/user/rust/0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
+++ /dev/null
@@ -1,37 +0,0 @@
-From e60db771c8ffe7b82a97ca516737cbf40b372e54 Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Sun, 16 Sep 2018 16:40:04 +0000
-Subject: [PATCH 07/14] runtest: Fix proc-macro tests on musl hosts
-
----
- src/tools/compiletest/src/runtest.rs | 7 ++-----
- 1 file changed, 2 insertions(+), 5 deletions(-)
-
-diff --git a/src/tools/compiletest/src/runtest.rs b/src/tools/compiletest/src/runtest.rs
-index 400c205d44..be5c50b070 100644
---- a/src/tools/compiletest/src/runtest.rs
-+++ b/src/tools/compiletest/src/runtest.rs
-@@ -1566,7 +1566,6 @@ impl<'test> TestCx<'test> {
- None
- } else if self.config.target.contains("cloudabi")
- || self.config.target.contains("emscripten")
-- || (self.config.target.contains("musl") && !aux_props.force_host)
- || self.config.target.contains("wasm32")
- {
- // We primarily compile all auxiliary libraries as dynamic libraries
-@@ -1574,10 +1573,8 @@ impl<'test> TestCx<'test> {
- // for the test suite (otherwise including libstd statically in all
- // executables takes up quite a bit of space).
- //
-- // For targets like MUSL or Emscripten, however, there is no support for
-- // dynamic libraries so we just go back to building a normal library. Note,
-- // however, that for MUSL if the library is built with `force_host` then
-- // it's ok to be a dylib as the host should always support dylibs.
-+ // For targets like Emscripten, however, there is no support for
-+ // dynamic libraries so we just go back to building a normal library.
- Some("lib")
- } else {
- Some("dylib")
---
-2.21.0
-
diff --git a/user/rust/0007-test-failed-doctest-output-Fix-normalization.patch b/user/rust/0007-test-failed-doctest-output-Fix-normalization.patch
new file mode 100644
index 000000000..373e1751a
--- /dev/null
+++ b/user/rust/0007-test-failed-doctest-output-Fix-normalization.patch
@@ -0,0 +1,33 @@
+From 5ecc3bac493f2df5b76f42cff6ea602d1624d323 Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Mon, 7 Oct 2019 18:36:28 -0500
+Subject: [PATCH 07/12] test/failed-doctest-output: Fix normalization
+
+Otherwise we get:
+
+1
+2 running 2 tests
+- test $DIR/failed-doctest-output.rs - OtherStruct (line 20) ... FAILED
+- test $DIR/failed-doctest-output.rs - SomeStruct (line 10) ... FAILED
++ test src/rustc-1.38.0-src/$DIR/failed-doctest-output.rs - OtherStruct (line 20) ... FAILED
++ test src/rustc-1.38.0-src/$DIR/failed-doctest-output.rs - SomeStruct (line 10) ... FAILED
+5
+6 failures:
+7
+---
+ tests/rustdoc-ui/doctest/failed-doctest-output.rs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/tests/rustdoc-ui/doctest/failed-doctest-output.rs b/tests/rustdoc-ui/doctest/failed-doctest-output.rs
+index d4d49b73793e6..9c44f7ce23281 100644
+--- a/tests/rustdoc-ui/doctest/failed-doctest-output.rs
++++ b/tests/rustdoc-ui/doctest/failed-doctest-output.rs
+@@ -7,7 +7,7 @@
+
+ //@ compile-flags:--test --test-args --test-threads=1
+ //@ rustc-env:RUST_BACKTRACE=0
+-//@ normalize-stdout-test: "tests/rustdoc-ui/doctest" -> "$$DIR"
++//@ normalize-stdout-test: "[[:graph:]]*tests/rustdoc-ui/doctest" -> "$$DIR"
+ //@ normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME"
+ //@ failure-status: 101
+
diff --git a/user/rust/0008-test-enum-debug-Correct-minimum-LLVM-version.patch b/user/rust/0008-test-enum-debug-Correct-minimum-LLVM-version.patch
deleted file mode 100644
index dddaf75bf..000000000
--- a/user/rust/0008-test-enum-debug-Correct-minimum-LLVM-version.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From 8dbda1b85a15b04300f73eb30c1e2da196750cfb Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Fri, 22 Mar 2019 17:08:06 -0500
-Subject: [PATCH 08/14] test/enum-debug*: Correct minimum LLVM version
-
----
- src/test/codegen/enum-debug-clike.rs | 2 +-
- src/test/codegen/enum-debug-niche-2.rs | 2 +-
- src/test/codegen/enum-debug-niche.rs | 2 +-
- src/test/codegen/enum-debug-tagged.rs | 2 +-
- 4 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/src/test/codegen/enum-debug-clike.rs b/src/test/codegen/enum-debug-clike.rs
-index 98f07505f7..11e2fae596 100644
---- a/src/test/codegen/enum-debug-clike.rs
-+++ b/src/test/codegen/enum-debug-clike.rs
-@@ -4,7 +4,7 @@
-
- // ignore-tidy-linelength
- // ignore-windows
--// min-system-llvm-version 7.0
-+// min-system-llvm-version 8.0
-
- // compile-flags: -g -C no-prepopulate-passes
-
-diff --git a/src/test/codegen/enum-debug-niche-2.rs b/src/test/codegen/enum-debug-niche-2.rs
-index 369fa1fcfd..aa6cbf66b4 100644
---- a/src/test/codegen/enum-debug-niche-2.rs
-+++ b/src/test/codegen/enum-debug-niche-2.rs
-@@ -4,7 +4,7 @@
-
- // ignore-tidy-linelength
- // ignore-windows
--// min-system-llvm-version 7.0
-+// min-system-llvm-version 8.0
-
- // compile-flags: -g -C no-prepopulate-passes
-
-diff --git a/src/test/codegen/enum-debug-niche.rs b/src/test/codegen/enum-debug-niche.rs
-index 1273a785ba..93eebde7b8 100644
---- a/src/test/codegen/enum-debug-niche.rs
-+++ b/src/test/codegen/enum-debug-niche.rs
-@@ -4,7 +4,7 @@
-
- // ignore-tidy-linelength
- // ignore-windows
--// min-system-llvm-version 7.0
-+// min-system-llvm-version 8.0
-
- // compile-flags: -g -C no-prepopulate-passes
-
-diff --git a/src/test/codegen/enum-debug-tagged.rs b/src/test/codegen/enum-debug-tagged.rs
-index 5c37e40c27..84976ce97a 100644
---- a/src/test/codegen/enum-debug-tagged.rs
-+++ b/src/test/codegen/enum-debug-tagged.rs
-@@ -4,7 +4,7 @@
-
- // ignore-tidy-linelength
- // ignore-windows
--// min-system-llvm-version 7.0
-+// min-system-llvm-version 8.0
-
- // compile-flags: -g -C no-prepopulate-passes
-
---
-2.21.0
-
diff --git a/user/rust/0008-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch b/user/rust/0008-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
new file mode 100644
index 000000000..43f0f37f2
--- /dev/null
+++ b/user/rust/0008-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
@@ -0,0 +1,22 @@
+From cf671a6f53fe74b02aa48c0206d48506d6cdd7cd Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Mon, 17 Sep 2018 01:32:20 +0000
+Subject: [PATCH 08/12] test/sysroot-crates-are-unstable: Fix test when rpath is
+ disabled
+
+Without this environment var, the test can't run rustc to find
+the sysroot path.
+---
+ tests/run-make/sysroot-crates-are-unstable/Makefile | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+diff --git a/tests/run-make/sysroot-crates-are-unstable/Makefile b/tests/run-make/sysroot-crates-are-unstable/Makefile
+index 1e267fb9576ba..30c33c5c13d20 100644
+--- a/tests/run-make/sysroot-crates-are-unstable/Makefile
++++ b/tests/run-make/sysroot-crates-are-unstable/Makefile
+@@ -1,2 +1,4 @@
++-include ../tools.mk
++
+ all:
+- '$(PYTHON)' test.py
++ env '$(HOST_RPATH_ENV)' '$(PYTHON)' test.py
diff --git a/user/rust/0009-Ignore-broken-and-non-applicable-tests.patch b/user/rust/0009-Ignore-broken-and-non-applicable-tests.patch
new file mode 100644
index 000000000..b8b1b8932
--- /dev/null
+++ b/user/rust/0009-Ignore-broken-and-non-applicable-tests.patch
@@ -0,0 +1,47 @@
+From cc6d3d3ab26517d5f8f09536b016154944bdceff Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Sun, 16 Sep 2018 16:38:48 +0000
+Subject: [PATCH 09/12] Ignore broken and non-applicable tests
+
+env-funky-keys: can't handle LD_PRELOAD (e.g. sandbox)
+long-linker-command-lines: takes >10 minutes to run (but still passes)
+sysroot-crates-are-unstable: can't run rustc without RPATH
+---
+ tests/run-make/long-linker-command-lines/Makefile | 2 ++
+ tests/run-make/sysroot-crates-are-unstable/Makefile | 2 ++
+ tests/ui/process/env-funky-keys.rs | 1 +
+ 3 files changed, 7 insertions(+)
+
+diff --git a/tests/run-make/long-linker-command-lines/Makefile b/tests/run-make/long-linker-command-lines/Makefile
+index f864ea74f4a95..f16eaf544cc3f 100644
+--- a/tests/run-make/long-linker-command-lines/Makefile
++++ b/tests/run-make/long-linker-command-lines/Makefile
+@@ -1,4 +1,6 @@
+ # ignore-cross-compile
++# ignore-test
++
+ include ../tools.mk
+
+ export LD_LIBRARY_PATH := $(HOST_RPATH_DIR)
+diff --git a/tests/run-make/sysroot-crates-are-unstable/Makefile b/tests/run-make/sysroot-crates-are-unstable/Makefile
+index 30c33c5c13d20..d733bb1c557f5 100644
+--- a/tests/run-make/sysroot-crates-are-unstable/Makefile
++++ b/tests/run-make/sysroot-crates-are-unstable/Makefile
+@@ -1,3 +1,5 @@
++# ignore-test
++
+ -include ../tools.mk
+
+ all:
+diff --git a/tests/ui/env-funky-keys.rs b/tests/ui/env-funky-keys.rs
+index 314ccaea01525..7f5b9efaa10b1 100644
+--- a/tests/ui/process/env-funky-keys.rs
++++ b/tests/ui/process/env-funky-keys.rs
+@@ -1,6 +1,7 @@
+ //@ run-pass
+ // Ignore this test on Android, because it segfaults there.
+
++//@ ignore-test
+ //@ ignore-android
+ //@ ignore-windows
+ //@ ignore-wasm32 no execve
diff --git a/user/rust/0009-test-use-extern-for-plugins-Don-t-assume-multilib.patch b/user/rust/0009-test-use-extern-for-plugins-Don-t-assume-multilib.patch
deleted file mode 100644
index da9d25537..000000000
--- a/user/rust/0009-test-use-extern-for-plugins-Don-t-assume-multilib.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From b7fdd2b4b192e1ac7e59fe009e7b7bba8943c8dc Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Sat, 6 Oct 2018 04:01:48 +0000
-Subject: [PATCH 09/14] test/use-extern-for-plugins: Don't assume multilib
-
----
- src/test/run-make-fulldeps/use-extern-for-plugins/Makefile | 7 +------
- 1 file changed, 1 insertion(+), 6 deletions(-)
-
-diff --git a/src/test/run-make-fulldeps/use-extern-for-plugins/Makefile b/src/test/run-make-fulldeps/use-extern-for-plugins/Makefile
-index cc7bc176f4..36553f1e44 100644
---- a/src/test/run-make-fulldeps/use-extern-for-plugins/Makefile
-+++ b/src/test/run-make-fulldeps/use-extern-for-plugins/Makefile
-@@ -4,12 +4,7 @@ SKIP_OS := 'FreeBSD OpenBSD Bitrig SunOS'
-
- ifneq ($(UNAME),$(findstring $(UNAME),$(SKIP_OS)))
-
--HOST := $(shell $(RUSTC) -vV | grep 'host:' | sed 's/host: //')
--ifeq ($(findstring i686,$(HOST)),i686)
--TARGET := $(subst i686,x86_64,$(HOST))
--else
--TARGET := $(subst x86_64,i686,$(HOST))
--endif
-+TARGET := $(shell $(RUSTC) -vV | grep 'host:' | sed 's/host: //')
-
- all:
- $(RUSTC) foo.rs -C extra-filename=-host
---
-2.21.0
-
diff --git a/user/rust/0010-Link-stage-2-tools-dynamically-to-libstd.patch b/user/rust/0010-Link-stage-2-tools-dynamically-to-libstd.patch
new file mode 100644
index 000000000..4a83e137f
--- /dev/null
+++ b/user/rust/0010-Link-stage-2-tools-dynamically-to-libstd.patch
@@ -0,0 +1,22 @@
+From 4443dc788cea90bdb1f9e5f3d9b702a3be46d4ed Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Mon, 24 Sep 2018 23:42:23 +0000
+Subject: [PATCH 10/12] Link stage 2 tools dynamically to libstd
+
+---
+ src/bootstrap/src/core/builder.rs | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/bootstrap/src/core/builder.rs b/src/bootstrap/src/core/builder.rs
+index cd276674dee6b..a16297b4fe6cc 100644
+--- a/src/bootstrap/src/core/builder.rs
++++ b/src/bootstrap/src/core/builder.rs
+@@ -2096,7 +2096,7 @@ impl<'a> Builder<'a> {
+ // When we build Rust dylibs they're all intended for intermediate
+ // usage, so make sure we pass the -Cprefer-dynamic flag instead of
+ // linking all deps statically into the dylib.
+- if matches!(mode, Mode::Std | Mode::Rustc) {
++ if matches!(mode, Mode::Std | Mode::Rustc | Mode::ToolRustc) {
+ rustflags.arg("-Cprefer-dynamic");
+ }
+
diff --git a/user/rust/0010-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch b/user/rust/0010-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
deleted file mode 100644
index ff49416e0..000000000
--- a/user/rust/0010-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 4ca0a1760317d3029bfcb0e6253252b926ef92ce Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Mon, 17 Sep 2018 01:32:20 +0000
-Subject: [PATCH 10/14] test/sysroot-crates-are-unstable: Fix test when rpath
- is disabled
-
-Without this environment var, the test can't run rustc to find
-the sysroot path.
----
- .../run-make-fulldeps/sysroot-crates-are-unstable/Makefile | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile b/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
-index a35174b3c2..9e77070685 100644
---- a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
-+++ b/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
-@@ -1,2 +1,4 @@
-+-include ../tools.mk
-+
- all:
-- python2.7 test.py
-+ env '$(HOST_RPATH_ENV)' python2.7 test.py
---
-2.21.0
-
diff --git a/user/rust/0011-Ignore-broken-and-non-applicable-tests.patch b/user/rust/0011-Ignore-broken-and-non-applicable-tests.patch
deleted file mode 100644
index ebf711f77..000000000
--- a/user/rust/0011-Ignore-broken-and-non-applicable-tests.patch
+++ /dev/null
@@ -1,62 +0,0 @@
-From 63a413a24f98461476aac7ac7ead69c948874e7d Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Sun, 16 Sep 2018 16:38:48 +0000
-Subject: [PATCH 11/14] Ignore broken and non-applicable tests
-
-long-linker-command-lines: takes >10 minutes to run (but still passes)
-sparc-struct-abi: no sparc target
-sysroot-crates-are-unstable: can't run rustc without rpath
----
- src/test/codegen/sparc-struct-abi.rs | 1 +
- src/test/run-make-fulldeps/long-linker-command-lines/Makefile | 1 -
- src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile | 2 +-
- src/test/run-pass/simd/simd-intrinsic-generic-select.rs | 2 ++
- 4 files changed, 4 insertions(+), 2 deletions(-)
-
-diff --git a/src/test/codegen/sparc-struct-abi.rs b/src/test/codegen/sparc-struct-abi.rs
-index 78e5b14a21..6f93e93286 100644
---- a/src/test/codegen/sparc-struct-abi.rs
-+++ b/src/test/codegen/sparc-struct-abi.rs
-@@ -4,6 +4,7 @@
-
- // only-sparc64
- // compile-flags: -O --target=sparc64-unknown-linux-gnu --crate-type=rlib
-+// ignore-test
- #![feature(no_core, lang_items)]
- #![no_core]
-
-diff --git a/src/test/run-make-fulldeps/long-linker-command-lines/Makefile b/src/test/run-make-fulldeps/long-linker-command-lines/Makefile
-index 5876fbc94b..e9f5c33b77 100644
---- a/src/test/run-make-fulldeps/long-linker-command-lines/Makefile
-+++ b/src/test/run-make-fulldeps/long-linker-command-lines/Makefile
-@@ -2,4 +2,3 @@
-
- all:
- $(RUSTC) foo.rs -g -O
-- RUSTC="$(RUSTC_ORIGINAL)" $(call RUN,foo)
-diff --git a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile b/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
-index 9e77070685..7784230b46 100644
---- a/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
-+++ b/src/test/run-make-fulldeps/sysroot-crates-are-unstable/Makefile
-@@ -1,4 +1,4 @@
- -include ../tools.mk
-
- all:
-- env '$(HOST_RPATH_ENV)' python2.7 test.py
-+ true
-diff --git a/src/test/run-pass/simd/simd-intrinsic-generic-select.rs b/src/test/run-pass/simd/simd-intrinsic-generic-select.rs
-index f79b140494..39080c8c90 100644
---- a/src/test/run-pass/simd/simd-intrinsic-generic-select.rs
-+++ b/src/test/run-pass/simd/simd-intrinsic-generic-select.rs
-@@ -2,6 +2,8 @@
- #![allow(non_camel_case_types)]
-
- // ignore-emscripten
-+// ignore-powerpc
-+// ignore-powerpc64
-
- // Test that the simd_select intrinsics produces correct results.
-
---
-2.21.0
-
diff --git a/user/rust/0011-Move-debugger-scripts-to-usr-share-rust.patch b/user/rust/0011-Move-debugger-scripts-to-usr-share-rust.patch
new file mode 100644
index 000000000..604e223e8
--- /dev/null
+++ b/user/rust/0011-Move-debugger-scripts-to-usr-share-rust.patch
@@ -0,0 +1,66 @@
+From 762d3cd3f87b7fdbb885e1bcd4d1314437dd9377 Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Mon, 17 Sep 2018 02:09:10 +0000
+Subject: [PATCH 11/12] Move debugger scripts to /usr/share/rust
+
+---
+ src/bootstrap/dist.rs | 2 +-
+ src/etc/rust-gdb | 2 +-
+ src/etc/rust-gdbgui | 2 +-
+ src/etc/rust-lldb | 4 ++--
+ 4 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/bootstrap/dist.rs b/src/bootstrap/dist.rs
+index 76aad16c1fc26..db53459e8cae4 100644
+--- a/src/bootstrap/src/core/build_steps/dist.rs
++++ b/src/bootstrap/src/core/build_steps/dist.rs
+@@ -521,7 +521,7 @@ impl Step for DebuggerScripts {
+ fn run(self, builder: &Builder<'_>) {
+ let host = self.host;
+ let sysroot = self.sysroot;
+- let dst = sysroot.join("lib/rustlib/etc");
++ let dst = sysroot.join("share/rust");
+ t!(fs::create_dir_all(&dst));
+ let cp_debugger_script = |file: &str| {
+ builder.install(&builder.src.join("src/etc/").join(file), &dst, 0o644);
+diff --git a/src/etc/rust-gdb b/src/etc/rust-gdb
+index 9abed30ea6f73..4c7f953edfa46 100755
+--- a/src/etc/rust-gdb
++++ b/src/etc/rust-gdb
+@@ -12,7 +12,7 @@ fi
+
+ # Find out where the pretty printer Python module is
+ RUSTC_SYSROOT="$("$RUSTC" --print=sysroot)"
+-GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/lib/rustlib/etc"
++GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/share/rust"
+ # Get the commit hash for path remapping
+ RUSTC_COMMIT_HASH="$("$RUSTC" -vV | sed -n 's/commit-hash: \([a-zA-Z0-9_]*\)/\1/p')"
+
+diff --git a/src/etc/rust-gdbgui b/src/etc/rust-gdbgui
+index 913269316bd4c..f444fbc4b104e 100755
+--- a/src/etc/rust-gdbgui
++++ b/src/etc/rust-gdbgui
+@@ -41,7 +41,7 @@ fi
+
+ # Find out where the pretty printer Python module is
+ RUSTC_SYSROOT="$("$RUSTC" --print=sysroot)"
+-GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/lib/rustlib/etc"
++GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/share/rust"
+ # Get the commit hash for path remapping
+ RUSTC_COMMIT_HASH="$("$RUSTC" -vV | sed -n 's/commit-hash: \([a-zA-Z0-9_]*\)/\1/p')"
+
+diff --git a/src/etc/rust-lldb b/src/etc/rust-lldb
+index bce72f1bad698..8abb012452787 100755
+--- a/src/etc/rust-lldb
++++ b/src/etc/rust-lldb
+@@ -30,8 +30,8 @@ EOF
+ fi
+ fi
+
+-script_import="command script import \"$RUSTC_SYSROOT/lib/rustlib/etc/lldb_lookup.py\""
+-commands_file="$RUSTC_SYSROOT/lib/rustlib/etc/lldb_commands"
++script_import="command script import \"$RUSTC_SYSROOT/share/rust/lldb_lookup.py\""
++commands_file="$RUSTC_SYSROOT/share/rust/lldb_commands"
+
+ # Call LLDB with the commands added to the argument list
+ exec "$lldb" --one-line-before-file "$script_import" --source-before-file "$commands_file" "$@"
diff --git a/user/rust/0012-Add-foxkit-target-specs.patch b/user/rust/0012-Add-foxkit-target-specs.patch
new file mode 100644
index 000000000..06ba6a488
--- /dev/null
+++ b/user/rust/0012-Add-foxkit-target-specs.patch
@@ -0,0 +1,206 @@
+From 7e50215a21b198c73fe575d28c847fd645c4ee40 Mon Sep 17 00:00:00 2001
+From: Samuel Holland <samuel@sholland.org>
+Date: Mon, 17 Sep 2018 02:29:06 +0000
+Subject: [PATCH 12/12] Add foxkit target specs
+
+---
+ .../src/spec/targets/aarch64_foxkit_linux_musl.rs | 11 +++++++++++
+ .../src/spec/targets/armv7_foxkit_linux_musleabihf.rs | 11 +++++++++++
+ .../rustc_target/src/spec/targets/i586_foxkit_linux_musl.rs | 11 +++++++++++
+ compiler/rustc_target/src/spec/mod.rs | 7 +++++++
+ .../src/spec/targets/powerpc64_foxkit_linux_musl.rs | 11 +++++++++++
+ .../src/spec/targets/powerpc_foxkit_linux_musl.rs | 11 +++++++++++
+ .../rustc_target/src/spec/targets/x86_64_foxkit_linux_musl.rs | 11 +++++++++++
+ 7 files changed, 73 insertions(+)
+ create mode 100644 compiler/rustc_target/src/spec/targets/aarch64_foxkit_linux_musl.rs
+ create mode 100644 compiler/rustc_target/src/spec/targets/armv7_foxkit_linux_musleabihf.rs
+ create mode 100644 compiler/rustc_target/src/spec/targets/i586_foxkit_linux_musl.rs
+ create mode 100644 compiler/rustc_target/src/spec/targets/powerpc64_foxkit_linux_musl.rs
+ create mode 100644 compiler/rustc_target/src/spec/targets/powerpc_foxkit_linux_musl.rs
+ create mode 100644 compiler/rustc_target/src/spec/targets/x86_64_foxkit_linux_musl.rs
+
+diff --git a/compiler/rustc_target/src/spec/targets/aarch64_foxkit_linux_musl.rs b/compiler/rustc_target/src/spec/targets/aarch64_foxkit_linux_musl.rs
+new file mode 100644
+index 00000000000..4bdd51af4fe
+--- /dev/null
++++ b/compiler/rustc_target/src/spec/targets/aarch64_foxkit_linux_musl.rs
+@@ -0,0 +1,11 @@
++use crate::spec::Target;
++
++pub fn target() -> Target {
++ let mut base = super::aarch64_unknown_linux_musl::target();
++
++ base.llvm_target = "aarch64-foxkit-linux-musl".into();
++ base.vendor = "foxkit".into();
++ base.options.crt_static_default = false;
++
++ base
++}
+diff --git a/compiler/rustc_target/src/spec/targets/armv7_foxkit_linux_musleabihf.rs b/compiler/rustc_target/src/spec/targets/armv7_foxkit_linux_musleabihf.rs
+new file mode 100644
+index 00000000000..994f3c39e7c
+--- /dev/null
++++ b/compiler/rustc_target/src/spec/targets/armv7_foxkit_linux_musleabihf.rs
+@@ -0,0 +1,11 @@
++use crate::spec::Target;
++
++pub fn target() -> Target {
++ let mut base = super::armv7_unknown_linux_musleabihf::target();
++
++ base.llvm_target = "armv7-foxkit-linux-musleabihf".into();
++ base.vendor = "foxkit".into();
++ base.options.crt_static_default = false;
++
++ base
++}
+diff --git a/compiler/rustc_target/src/spec/targets/i586_foxkit_linux_musl.rs b/compiler/rustc_target/src/spec/targets/i586_foxkit_linux_musl.rs
+new file mode 100644
+index 00000000000..028e4b5e930
+--- /dev/null
++++ b/compiler/rustc_target/src/spec/targets/i586_foxkit_linux_musl.rs
+@@ -0,0 +1,11 @@
++use crate::spec::Target;
++
++pub fn target() -> Target {
++ let mut base = super::i586_unknown_linux_musl::target();
++
++ base.llvm_target = "i586-foxkit-linux-musl".into();
++ base.vendor = "foxkit".into();
++ base.options.crt_static_default = false;
++
++ base
++}
+diff --git a/compiler/rustc_target/src/spec/mod.rs b/compiler/rustc_target/src/spec/mod.rs
+index 92678aed5b1..66a408d0b36 100644
+--- a/compiler/rustc_target/src/spec/mod.rs
++++ b/compiler/rustc_target/src/spec/mod.rs
+@@ -1519,6 +1519,13 @@ fn $module() {
+ }
+
+ supported_targets! {
++ ("aarch64-foxkit-linux-musl", aarch64_foxkit_linux_musl),
++ ("armv7-foxkit-linux-musleabihf", armv7_foxkit_linux_musleabihf),
++ ("i586-foxkit-linux-musl", i586_foxkit_linux_musl),
++ ("powerpc-foxkit-linux-musl", powerpc_foxkit_linux_musl),
++ ("powerpc64-foxkit-linux-musl", powerpc64_foxkit_linux_musl),
++ ("x86_64-foxkit-linux-musl", x86_64_foxkit_linux_musl),
++
+ ("x86_64-unknown-linux-gnu", x86_64_unknown_linux_gnu),
+ ("x86_64-unknown-linux-gnux32", x86_64_unknown_linux_gnux32),
+ ("i686-unknown-linux-gnu", i686_unknown_linux_gnu),
+diff --git a/compiler/rustc_target/src/spec/targets/powerpc64_foxkit_linux_musl.rs b/compiler/rustc_target/src/spec/targets/powerpc64_foxkit_linux_musl.rs
+new file mode 100644
+index 00000000000..04a50f84b60
+--- /dev/null
++++ b/compiler/rustc_target/src/spec/targets/powerpc64_foxkit_linux_musl.rs
+@@ -0,0 +1,11 @@
++use crate::spec::Target;
++
++pub fn target() -> Target {
++ let mut base = super::powerpc64_unknown_linux_musl::target();
++
++ base.llvm_target = "powerpc64-foxkit-linux-musl".into();
++ base.vendor = "foxkit".into();
++ base.options.crt_static_default = false;
++
++ base
++}
+diff --git a/compiler/rustc_target/src/spec/targets/powerpc_foxkit_linux_musl.rs b/compiler/rustc_target/src/spec/targets/powerpc_foxkit_linux_musl.rs
+new file mode 100644
+index 00000000000..7bca52c4299
+--- /dev/null
++++ b/compiler/rustc_target/src/spec/targets/powerpc_foxkit_linux_musl.rs
+@@ -0,0 +1,11 @@
++use crate::spec::Target;
++
++pub fn target() -> Target {
++ let mut base = super::powerpc_unknown_linux_musl::target();
++
++ base.llvm_target = "powerpc-foxkit-linux-musl".into();
++ base.vendor = "foxkit".into();
++ base.options.crt_static_default = false;
++
++ base
++}
+diff --git a/compiler/rustc_target/src/spec/targets/x86_64_foxkit_linux_musl.rs b/compiler/rustc_target/src/spec/targets/x86_64_foxkit_linux_musl.rs
+new file mode 100644
+index 00000000000..1ff73687c00
+--- /dev/null
++++ b/compiler/rustc_target/src/spec/targets/x86_64_foxkit_linux_musl.rs
+@@ -0,0 +1,11 @@
++use crate::spec::Target;
++
++pub fn target() -> Target {
++ let mut base = super::x86_64_unknown_linux_musl::target();
++
++ base.llvm_target = "x86_64-foxkit-linux-musl".into();
++ base.vendor = "foxkit".into();
++ base.options.crt_static_default = false;
++
++ base
++}
+--
+2.35.1
+
+--- rustc-1.80.0-src/tests/assembly/targets/targets-elf.rs.old 2006-07-23 20:21:28.000000000 -0500
++++ rustc-1.80.0-src/tests/assembly/targets/targets-elf.rs 2024-07-30 09:49:06.031041198 -0500
+@@ -9,6 +9,9 @@
+ //@ revisions: aarch64_be_unknown_netbsd
+ //@ [aarch64_be_unknown_netbsd] compile-flags: --target aarch64_be-unknown-netbsd
+ //@ [aarch64_be_unknown_netbsd] needs-llvm-components: aarch64
++//@ revisions: aarch64_foxkit_linux_musl
++//@ [aarch64_foxkit_linux_musl] compile-flags: --target aarch64-foxkit-linux-musl
++//@ [aarch64_foxkit_linux_musl] needs-llvm-components: aarch64
+ //@ revisions: aarch64_fuchsia
+ //@ [aarch64_fuchsia] compile-flags: --target aarch64-fuchsia
+ //@ [aarch64_fuchsia] needs-llvm-components: aarch64
+@@ -120,6 +123,9 @@
+ //@ revisions: armv6k_nintendo_3ds
+ //@ [armv6k_nintendo_3ds] compile-flags: --target armv6k-nintendo-3ds
+ //@ [armv6k_nintendo_3ds] needs-llvm-components: arm
++//@ revisions: armv7_foxkit_linux_musleabihf
++//@ [armv7_foxkit_linux_musleabihf] compile-flags: --target armv7-foxkit-linux-musleabihf
++//@ [armv7_foxkit_linux_musleabihf] needs-llvm-components: arm
+ //@ revisions: armv7_linux_androideabi
+ //@ [armv7_linux_androideabi] compile-flags: --target armv7-linux-androideabi
+ //@ [armv7_linux_androideabi] needs-llvm-components: arm
+@@ -192,6 +198,9 @@
+ //@ revisions: hexagon_unknown_none_elf
+ //@ [hexagon_unknown_none_elf] compile-flags: --target hexagon-unknown-none-elf
+ //@ [hexagon_unknown_none_elf] needs-llvm-components: hexagon
++//@ revisions: i586_foxkit_linux_musl
++//@ [i586_foxkit_linux_musl] compile-flags: --target i586-foxkit-linux-musl
++//@ [i586_foxkit_linux_musl] needs-llvm-components: x86
+ //@ revisions: i586_pc_nto_qnx700
+ //@ [i586_pc_nto_qnx700] compile-flags: --target i586-pc-nto-qnx700
+ //@ [i586_pc_nto_qnx700] needs-llvm-components: x86
+@@ -306,6 +315,9 @@
+ //@ revisions: msp430_none_elf
+ //@ [msp430_none_elf] compile-flags: --target msp430-none-elf
+ //@ [msp430_none_elf] needs-llvm-components: msp430
++//@ revisions: powerpc64_foxkit_linux_musl
++//@ [powerpc64_foxkit_linux_musl] compile-flags: --target powerpc64-foxkit-linux-musl
++//@ [powerpc64_foxkit_linux_musl] needs-llvm-components: powerpc
+ //@ revisions: powerpc64_unknown_freebsd
+ //@ [powerpc64_unknown_freebsd] compile-flags: --target powerpc64-unknown-freebsd
+ //@ [powerpc64_unknown_freebsd] needs-llvm-components: powerpc
+@@ -330,6 +342,9 @@
+ //@ revisions: powerpc64le_unknown_linux_musl
+ //@ [powerpc64le_unknown_linux_musl] compile-flags: --target powerpc64le-unknown-linux-musl
+ //@ [powerpc64le_unknown_linux_musl] needs-llvm-components: powerpc
++//@ revisions: powerpc_foxkit_linux_musl
++//@ [powerpc_foxkit_linux_musl] compile-flags: --target powerpc-foxkit-linux-musl
++//@ [powerpc_foxkit_linux_musl] needs-llvm-components: powerpc
+ //@ revisions: powerpc_unknown_freebsd
+ //@ [powerpc_unknown_freebsd] compile-flags: --target powerpc-unknown-freebsd
+ //@ [powerpc_unknown_freebsd] needs-llvm-components: powerpc
+@@ -507,6 +522,9 @@
+ //@ revisions: x86_64_fortanix_unknown_sgx
+ //@ [x86_64_fortanix_unknown_sgx] compile-flags: --target x86_64-fortanix-unknown-sgx
+ //@ [x86_64_fortanix_unknown_sgx] needs-llvm-components: x86
++//@ revisions: x86_64_foxkit_linux_musl
++//@ [x86_64_foxkit_linux_musl] compile-flags: --target x86_64-foxkit-linux-musl
++//@ [x86_64_foxkit_linux_musl] needs-llvm-components: x86
+ //@ revisions: x86_64_fuchsia
+ //@ [x86_64_fuchsia] compile-flags: --target x86_64-fuchsia
+ //@ [x86_64_fuchsia] needs-llvm-components: x86
diff --git a/user/rust/0012-Link-stage-2-tools-dynamically-to-libstd.patch b/user/rust/0012-Link-stage-2-tools-dynamically-to-libstd.patch
deleted file mode 100644
index 8d37b335c..000000000
--- a/user/rust/0012-Link-stage-2-tools-dynamically-to-libstd.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From 51b5ec642911295036d4ff19d4d6799037da3efc Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Mon, 24 Sep 2018 23:42:23 +0000
-Subject: [PATCH 12/14] Link stage 2 tools dynamically to libstd
-
----
- src/bootstrap/tool.rs | 4 +++-
- 1 file changed, 3 insertions(+), 1 deletion(-)
-
-diff --git a/src/bootstrap/tool.rs b/src/bootstrap/tool.rs
-index 9f6db73e6f..69cc2219c1 100644
---- a/src/bootstrap/tool.rs
-+++ b/src/bootstrap/tool.rs
-@@ -208,7 +208,9 @@ pub fn prepare_tool_cargo(
-
- // We don't want to build tools dynamically as they'll be running across
- // stages and such and it's just easier if they're not dynamically linked.
-- cargo.env("RUSTC_NO_PREFER_DYNAMIC", "1");
-+ if compiler.stage < 2 {
-+ cargo.env("RUSTC_NO_PREFER_DYNAMIC", "1");
-+ }
-
- if source_type == SourceType::Submodule {
- cargo.env("RUSTC_EXTERNAL_TOOL", "1");
---
-2.21.0
-
diff --git a/user/rust/0013-Move-debugger-scripts-to-usr-share-rust.patch b/user/rust/0013-Move-debugger-scripts-to-usr-share-rust.patch
deleted file mode 100644
index a401dc5ab..000000000
--- a/user/rust/0013-Move-debugger-scripts-to-usr-share-rust.patch
+++ /dev/null
@@ -1,53 +0,0 @@
-From 17bb016bf9eefb42e1205b5f8d7b944147337f24 Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Mon, 17 Sep 2018 02:09:10 +0000
-Subject: [PATCH 13/14] Move debugger scripts to /usr/share/rust
-
----
- src/bootstrap/dist.rs | 2 +-
- src/etc/rust-gdb | 2 +-
- src/etc/rust-lldb | 2 +-
- 3 files changed, 3 insertions(+), 3 deletions(-)
-
-diff --git a/src/bootstrap/dist.rs b/src/bootstrap/dist.rs
-index 0c6e213110..1858fade71 100644
---- a/src/bootstrap/dist.rs
-+++ b/src/bootstrap/dist.rs
-@@ -583,7 +583,7 @@ impl Step for DebuggerScripts {
- fn run(self, builder: &Builder) {
- let host = self.host;
- let sysroot = self.sysroot;
-- let dst = sysroot.join("lib/rustlib/etc");
-+ let dst = sysroot.join("share/rust");
- t!(fs::create_dir_all(&dst));
- let cp_debugger_script = |file: &str| {
- builder.install(&builder.src.join("src/etc/").join(file), &dst, 0o644);
-diff --git a/src/etc/rust-gdb b/src/etc/rust-gdb
-index 23ba93da8e..dc51b16c57 100755
---- a/src/etc/rust-gdb
-+++ b/src/etc/rust-gdb
-@@ -4,7 +4,7 @@ set -e
-
- # Find out where the pretty printer Python module is
- RUSTC_SYSROOT=`rustc --print=sysroot`
--GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/lib/rustlib/etc"
-+GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/share/rust"
-
- # Run GDB with the additional arguments that load the pretty printers
- # Set the environment variable `RUST_GDB` to overwrite the call to a
-diff --git a/src/etc/rust-lldb b/src/etc/rust-lldb
-index 424302d495..460e119210 100755
---- a/src/etc/rust-lldb
-+++ b/src/etc/rust-lldb
-@@ -26,7 +26,7 @@ display the contents of local variables!"
- fi
-
- # Prepare commands that will be loaded before any file on the command line has been loaded
--script_import="command script import \"$RUSTC_SYSROOT/lib/rustlib/etc/lldb_rust_formatters.py\""
-+script_import="command script import \"$RUSTC_SYSROOT/share/rust/lldb_rust_formatters.py\""
- category_definition="type summary add --no-value --python-function lldb_rust_formatters.print_val -x \".*\" --category Rust"
- category_enable="type category enable Rust"
-
---
-2.21.0
-
diff --git a/user/rust/0014-Add-foxkit-target-specs.patch b/user/rust/0014-Add-foxkit-target-specs.patch
deleted file mode 100644
index ecbfe26b5..000000000
--- a/user/rust/0014-Add-foxkit-target-specs.patch
+++ /dev/null
@@ -1,208 +0,0 @@
-From 2ca1aeb3cb3e0d52917cec2a96101aba5c6e40ce Mon Sep 17 00:00:00 2001
-From: Samuel Holland <samuel@sholland.org>
-Date: Mon, 17 Sep 2018 02:29:06 +0000
-Subject: [PATCH 14/14] Add foxkit target specs
-
----
- .../spec/aarch64_foxkit_linux_musl.rs | 21 +++++++++++++++++
- .../spec/armv7_foxkit_linux_musleabihf.rs | 21 +++++++++++++++++
- .../spec/i586_foxkit_linux_musl.rs | 23 +++++++++++++++++++
- src/librustc_target/spec/mod.rs | 7 ++++++
- .../spec/powerpc64_foxkit_linux_musl.rs | 21 +++++++++++++++++
- .../spec/powerpc_foxkit_linux_musl.rs | 23 +++++++++++++++++++
- .../spec/x86_64_foxkit_linux_musl.rs | 21 +++++++++++++++++
- 7 files changed, 137 insertions(+)
- create mode 100644 src/librustc_target/spec/aarch64_foxkit_linux_musl.rs
- create mode 100644 src/librustc_target/spec/armv7_foxkit_linux_musleabihf.rs
- create mode 100644 src/librustc_target/spec/i586_foxkit_linux_musl.rs
- create mode 100644 src/librustc_target/spec/powerpc64_foxkit_linux_musl.rs
- create mode 100644 src/librustc_target/spec/powerpc_foxkit_linux_musl.rs
- create mode 100644 src/librustc_target/spec/x86_64_foxkit_linux_musl.rs
-
-diff --git a/src/librustc_target/spec/aarch64_foxkit_linux_musl.rs b/src/librustc_target/spec/aarch64_foxkit_linux_musl.rs
-new file mode 100644
-index 0000000000..18ad2c2f31
---- /dev/null
-+++ b/src/librustc_target/spec/aarch64_foxkit_linux_musl.rs
-@@ -0,0 +1,21 @@
-+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
-+// file at the top-level directory of this distribution and at
-+// http://rust-lang.org/COPYRIGHT.
-+//
-+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-+// option. This file may not be copied, modified, or distributed
-+// except according to those terms.
-+
-+use spec::TargetResult;
-+
-+pub fn target() -> TargetResult {
-+ let mut base = super::aarch64_unknown_linux_musl::target()?;
-+
-+ base.llvm_target = "aarch64-foxkit-linux-musl".to_string();
-+ base.target_vendor = "foxkit".to_string();
-+ base.options.crt_static_default = false;
-+
-+ Ok(base)
-+}
-diff --git a/src/librustc_target/spec/armv7_foxkit_linux_musleabihf.rs b/src/librustc_target/spec/armv7_foxkit_linux_musleabihf.rs
-new file mode 100644
-index 0000000000..facfd5d363
---- /dev/null
-+++ b/src/librustc_target/spec/armv7_foxkit_linux_musleabihf.rs
-@@ -0,0 +1,21 @@
-+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
-+// file at the top-level directory of this distribution and at
-+// http://rust-lang.org/COPYRIGHT.
-+//
-+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-+// option. This file may not be copied, modified, or distributed
-+// except according to those terms.
-+
-+use spec::TargetResult;
-+
-+pub fn target() -> TargetResult {
-+ let mut base = super::armv7_unknown_linux_musleabihf::target()?;
-+
-+ base.llvm_target = "armv7-foxkit-linux-musleabihf".to_string();
-+ base.target_vendor = "foxkit".to_string();
-+ base.options.crt_static_default = false;
-+
-+ Ok(base)
-+}
-diff --git a/src/librustc_target/spec/i586_foxkit_linux_musl.rs b/src/librustc_target/spec/i586_foxkit_linux_musl.rs
-new file mode 100644
-index 0000000000..e0284d96e6
---- /dev/null
-+++ b/src/librustc_target/spec/i586_foxkit_linux_musl.rs
-@@ -0,0 +1,23 @@
-+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
-+// file at the top-level directory of this distribution and at
-+// http://rust-lang.org/COPYRIGHT.
-+//
-+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-+// option. This file may not be copied, modified, or distributed
-+// except according to those terms.
-+
-+use spec::{LinkerFlavor, TargetResult};
-+
-+pub fn target() -> TargetResult {
-+ let mut base = super::i586_unknown_linux_musl::target()?;
-+
-+ base.llvm_target = "i586-foxkit-linux-musl".to_string();
-+ base.target_vendor = "foxkit".to_string();
-+ base.options.crt_static_default = false;
-+ base.options.post_link_args.insert(LinkerFlavor::Gcc,
-+ vec!["-Wl,--as-needed".to_string(), "-lssp_nonshared".to_string()]);
-+
-+ Ok(base)
-+}
-diff --git a/src/librustc_target/spec/mod.rs b/src/librustc_target/spec/mod.rs
-index f42b0a1c3c..f83be3e4e3 100644
---- a/src/librustc_target/spec/mod.rs
-+++ b/src/librustc_target/spec/mod.rs
-@@ -278,6 +278,13 @@ macro_rules! supported_targets {
- }
-
- supported_targets! {
-+ ("aarch64-foxkit-linux-musl", aarch64_foxkit_linux_musl),
-+ ("armv7-foxkit-linux-musleabihf", armv7_foxkit_linux_musleabihf),
-+ ("i586-foxkit-linux-musl", i586_foxkit_linux_musl),
-+ ("powerpc-foxkit-linux-musl", powerpc_foxkit_linux_musl),
-+ ("powerpc64-foxkit-linux-musl", powerpc64_foxkit_linux_musl),
-+ ("x86_64-foxkit-linux-musl", x86_64_foxkit_linux_musl),
-+
- ("x86_64-unknown-linux-gnu", x86_64_unknown_linux_gnu),
- ("x86_64-unknown-linux-gnux32", x86_64_unknown_linux_gnux32),
- ("i686-unknown-linux-gnu", i686_unknown_linux_gnu),
-diff --git a/src/librustc_target/spec/powerpc64_foxkit_linux_musl.rs b/src/librustc_target/spec/powerpc64_foxkit_linux_musl.rs
-new file mode 100644
-index 0000000000..b7202ee0fc
---- /dev/null
-+++ b/src/librustc_target/spec/powerpc64_foxkit_linux_musl.rs
-@@ -0,0 +1,21 @@
-+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
-+// file at the top-level directory of this distribution and at
-+// http://rust-lang.org/COPYRIGHT.
-+//
-+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-+// option. This file may not be copied, modified, or distributed
-+// except according to those terms.
-+
-+use spec::TargetResult;
-+
-+pub fn target() -> TargetResult {
-+ let mut base = super::powerpc64_unknown_linux_musl::target()?;
-+
-+ base.llvm_target = "powerpc64-foxkit-linux-musl".to_string();
-+ base.target_vendor = "foxkit".to_string();
-+ base.options.crt_static_default = false;
-+
-+ Ok(base)
-+}
-diff --git a/src/librustc_target/spec/powerpc_foxkit_linux_musl.rs b/src/librustc_target/spec/powerpc_foxkit_linux_musl.rs
-new file mode 100644
-index 0000000000..34246a7e28
---- /dev/null
-+++ b/src/librustc_target/spec/powerpc_foxkit_linux_musl.rs
-@@ -0,0 +1,23 @@
-+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
-+// file at the top-level directory of this distribution and at
-+// http://rust-lang.org/COPYRIGHT.
-+//
-+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-+// option. This file may not be copied, modified, or distributed
-+// except according to those terms.
-+
-+use spec::{LinkerFlavor, TargetResult};
-+
-+pub fn target() -> TargetResult {
-+ let mut base = super::powerpc_unknown_linux_musl::target()?;
-+
-+ base.llvm_target = "powerpc-foxkit-linux-musl".to_string();
-+ base.target_vendor = "foxkit".to_string();
-+ base.options.crt_static_default = false;
-+ base.options.post_link_args.insert(LinkerFlavor::Gcc,
-+ vec!["-Wl,--as-needed".to_string(), "-lssp_nonshared".to_string()]);
-+
-+ Ok(base)
-+}
-diff --git a/src/librustc_target/spec/x86_64_foxkit_linux_musl.rs b/src/librustc_target/spec/x86_64_foxkit_linux_musl.rs
-new file mode 100644
-index 0000000000..801dd8d6f4
---- /dev/null
-+++ b/src/librustc_target/spec/x86_64_foxkit_linux_musl.rs
-@@ -0,0 +1,21 @@
-+// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
-+// file at the top-level directory of this distribution and at
-+// http://rust-lang.org/COPYRIGHT.
-+//
-+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
-+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
-+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
-+// option. This file may not be copied, modified, or distributed
-+// except according to those terms.
-+
-+use spec::TargetResult;
-+
-+pub fn target() -> TargetResult {
-+ let mut base = super::x86_64_unknown_linux_musl::target()?;
-+
-+ base.llvm_target = "x86_64-foxkit-linux-musl".to_string();
-+ base.target_vendor = "foxkit".to_string();
-+ base.options.crt_static_default = false;
-+
-+ Ok(base)
-+}
---
-2.21.0
-
diff --git a/user/rust/0030-libc-linkage.patch b/user/rust/0030-libc-linkage.patch
deleted file mode 100644
index 754074355..000000000
--- a/user/rust/0030-libc-linkage.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- a/vendor/libc/src/unix/mod.rs
-+++ b/vendor/libc/src/unix/mod.rs
-@@ -287,11 +287,7 @@ cfg_if! {
- // cargo build, don't pull in anything extra as the libstd dep
- // already pulls in all libs.
- } else if #[cfg(target_env = "musl")] {
-- #[cfg_attr(feature = "rustc-dep-of-std",
-- link(name = "c", kind = "static",
-- cfg(target_feature = "crt-static")))]
-- #[cfg_attr(feature = "rustc-dep-of-std",
-- link(name = "c", cfg(not(target_feature = "crt-static"))))]
-+ #[link(name = "c")]
- extern {}
- } else if #[cfg(target_os = "emscripten")] {
- #[link(name = "c")]
-diff --git rustc-1.33.0-src/vendor/libc/.cargo-checksum.json.orig rustc-1.33.0-src/vendor/libc/.cargo-checksum.json
-index b580eeb..4f3a87d 100644
---- rustc-1.33.0-src/vendor/libc/.cargo-checksum.json.orig
-+++ rustc-1.33.0-src/vendor/libc/.cargo-checksum.json
-@@ -1 +1 @@
--{"files":{"Cargo.toml":"e1bbf88a55a1ba674f5192fe1585b57a51751ee6c5aa7edeb87df8027c3bb912","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"40ddea9181e5374cf535aae33ad4ace80bd9b1beea8f881ff8d2b777da9489b2","build.rs":"2d1cbe87e0478de12a15a230d7ef0997020ba845b5b7d221d74cd2ce3fe0e720","src/cloudabi/aarch64.rs":"b8550bf1fd7344972aa4db29441486f39f31482d0327534981dbb75959c29114","src/cloudabi/arm.rs":"c197e2781c2839808bd6fcef219a29705b27b992d3ef920e9cf6ac96e2022bbf","src/cloudabi/mod.rs":"640375751825b8d4adf4fb089a53c4d883f265f96b07daf06f2dcf3acf6639c9","src/cloudabi/x86.rs":"33eb97f272d2201f3838ae74d444583c7de8f67856852ca375293b20bbd05636","src/cloudabi/x86_64.rs":"400d85d4fe39e26cf2e6ece9ee31c75fe9e88c4bcf4d836ca9f765c05c9c5be3","src/dox.rs":"b4b96dcba47797a6160c07f29982dd15d48fd2813d7d1000484bd9adc4a89de1","src/fuchsia/aarch64.rs":"40dce617877e606e92353491e1913711b1ecfa510bb983156f4a8460f490419e","src/fuchsia/mod.rs":"784dee21605f00a41d7cae1fc3d782646a84515a687a4952700eae51cc3840f0","src/fuchsia/x86_64.rs":"b4a3eff94dcf1ffe41e6500468ca2cff0e97ddbcc75fe079b6ac7adb1e493f56","src/lib.rs":"d456d34fc58c8d194f8f24201b4021860f61c5f125904bb8dcc954d1f813f6b7","src/macros.rs":"29d61c13523328c4742a7290dbb7d718ce198740824592e029199e9df5429b20","src/redox/mod.rs":"87cb35a988be84d45e79206f7cb5d098e8e7c5a1825cfcd0bd663453dedc3103","src/redox/net.rs":"f2e1922883f208cb46c00744da4a68feccfbec576c6981978ad404e46f818c8b","src/sgx.rs":"18d33a470d06c15b00be5a3bf45b6e51da6104ae7437f50c0eccbd3b79994389","src/switch.rs":"00365ed196519b260fc99a32f02d60b3fb1aaf0484654b19fec8c25bc1687420","src/unix/bsd/apple/b32.rs":"da60c99ee3d773f9c0767b93ccf18b67ad67576e2c58e2e86d05b23c23fd989a","src/unix/bsd/apple/b64.rs":"0cc15406c3a91abde65b28c7783ccab7801474ecc51c78dbd1d7332d4b834390","src/unix/bsd/apple/mod.rs":"b0e2d1f7fdb71d7a02bc5994c66a5ae660955227a0c0f808172a30b38fd40299","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"6c69319675328d4d16939c9c2aba3fb8ca9381a8b390d18d766949307090304b","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/freebsd/mod.rs":"6bbb3c3cf0753f32a2e61ac0f011a6c5e870a0814a6ed4eb9bb9dcdc58a9dca3","src/unix/bsd/freebsdlike/freebsd/x86.rs":"54311d3ebf2bb091ab22361e377e6ef9224aec2ecfe459fbfcedde4932db9c58","src/unix/bsd/freebsdlike/freebsd/x86_64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/mod.rs":"596def64669e2f27cffebca8e5c682ee7d576f84f8f99771c27e86ce8e818221","src/unix/bsd/mod.rs":"0c846b3a2c9390dfe090603f1ad643b107cc7e7605866c5399aa81dfea4e74bd","src/unix/bsd/netbsdlike/mod.rs":"9f55f35f8e4e26c7c63eaf67ddda0e40cc2abbabc2a68750809162e6f80144f1","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"f455848cd03cb80897776f2355dbd14bbb3aa88b1aa6aec22122ec47cdbd0f20","src/unix/bsd/netbsdlike/netbsd/arm.rs":"4c9eac982c385165f475ef3a80770fd634c6dde8fb400b3cb7e08c9bb7498af6","src/unix/bsd/netbsdlike/netbsd/mod.rs":"88617ada3bc740c5262926b9c45d7f51120d358522f051f0afdf7465edd13c29","src/unix/bsd/netbsdlike/netbsd/powerpc.rs":"183818c62dff72db6ee1d329d90ad8727628775ed5cd823c8485c6769003c91e","src/unix/bsd/netbsdlike/netbsd/sparc64.rs":"4db043327fb2615af2fb0f999d162310bea2294e7d050806e19a46b083561f16","src/unix/bsd/netbsdlike/netbsd/x86.rs":"979c4cbacbde37b9053f2c9df4b8f87d37b255436ef4a383e1e5f40ee21180d6","src/unix/bsd/netbsdlike/netbsd/x86_64.rs":"741353a1c6451efb0c7c7c486fd2cb54e3d36fd1c3dd280f6432d8858b0a5356","src/unix/bsd/netbsdlike/openbsdlike/bitrig/mod.rs":"4d2ad2e885d83ad3134add61580f49a8e58cb03284ae328273a9e2e104a4d084","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86_64.rs":"6e6f15e81597d85d83ca0eeb154e4f8b8e7f9cbb6a9cfa176601f78642ef94f9","src/unix/bsd/netbsdlike/openbsdlike/mod.rs":"6320b7bc7283dbc2a07cfb8b5a793c0153535601d050f33c1ff5e4a5cc57c2be","src/unix/bsd/netbsdlike/openbsdlike/openbsd/aarch64.rs":"820092e397c7ec259cd2de8f2444083a8e57071c02d73d678701dfa7807726e9","src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs":"6adc0dcb1b358ef91bbeb5512e19ba6f40adc77b7d259cb11641a69426fc5ea2","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86.rs":"44b7ea81cf363777b29935da175e702cbf45ed78f7498ae57faf44aa32335085","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86_64.rs":"97956c3a53aa07a2edf8865252f980dade0d34e930adca0e870e7344d7e2b0bb","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"b00fa310b6d835cb613a02101c7b1a72c636faec316586587cb63aebdcb9de8f","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"248c0b0abaa7d56a7dc3293e67a0ce70a4ef8c83638bda8aa222ad8bb0ef6801","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/mod.rs":"c5f3c6d74ac8e8ef83374b6115bab7c6e57297336a7635aa4c47462649b00dfb","src/unix/newlib/aarch64/mod.rs":"c408a990f22fb4292a824f38367e9b517e6e6f8623328397ee631cc88b3d1f7d","src/unix/newlib/arm/mod.rs":"2b6dba2e697ab9b4f4bc4dd5f28057249e9b596d1cb395a9322ec87605c4a5c4","src/unix/newlib/mod.rs":"eea5f1eb720184d9a00be966e4161fddb3733362fc349182e85b1599ba4e825f","src/unix/notbsd/android/b32/arm.rs":"3625a32c7e58cfe683a53486fbe3d42d4e28f00bea31e19cb46ed2bb0b6a140b","src/unix/notbsd/android/b32/mod.rs":"2fbe398c1fb5251dda6213741a193e50aae4622807cb255d1dd2e82b536f0c65","src/unix/notbsd/android/b32/x86.rs":"ae2b7f1d6278caddc007749bb1d09ca33f7593478a0fd7fe98b457dae86c7814","src/unix/notbsd/android/b64/aarch64.rs":"63d65629d79371814910f691672ef593d20244ee09be26f1ebe07ee6212d0163","src/unix/notbsd/android/b64/mod.rs":"90d4f6b063fd4de42fd302cbc9d9902fd99ac1d71dc48cb8bc6ad7b4c902e481","src/unix/notbsd/android/b64/x86_64.rs":"5547aef8dcbaa5a932559f34606fd8d89f6c9c15173d2b1412c12d39b3c1045f","src/unix/notbsd/android/mod.rs":"19013f41ac8ccac034eb48777a4041d69342edb9ca25d4e0bb9c5938f62eef3e","src/unix/notbsd/emscripten.rs":"9ed47a0a5020c8f72d9496f87ef0da669c1ed2b85980013100c466f18cd8a4c5","src/unix/notbsd/linux/mips/mips32.rs":"a483ddfd10765b7d5090dc21686eee8842649cd21236828a42d634114885f5f9","src/unix/notbsd/linux/mips/mips64.rs":"9fff696e3943cf206b549d1ae13fa361828e9a8454e2d5730eeaa1c172ff370d","src/unix/notbsd/linux/mips/mod.rs":"d18a40011e9090a4a2a1f27e5bd96eb2503ac352f4809648e15841083d7f3a68","src/unix/notbsd/linux/mod.rs":"d84e95d36f9477fa1aa694bf18a919ba20e65aa71539c3f3dc06e8f92acee521","src/unix/notbsd/linux/musl/b32/arm.rs":"fdf170e03812072785ec531f1ae810d0c4feb9b29d0c316681b9f7affe1262c0","src/unix/notbsd/linux/musl/b32/mips.rs":"afa4981d93f29b3fb0083a73ce1323f7dce1392f90d5cf1966b1fae10d510033","src/unix/notbsd/linux/musl/b32/mod.rs":"540928f168f145c136f9dd729ffa12b9d1838d9fe664fc642365d17d7fae648f","src/unix/notbsd/linux/musl/b32/powerpc.rs":"16c615770a96f155540511f58b5a8070c9c7a43e12bdfed83996690e7558bcb5","src/unix/notbsd/linux/musl/b32/x86.rs":"3abf1610c68c37f407cdd0f93563c3542c024219e0e8c9888266a6ee014e0c87","src/unix/notbsd/linux/musl/b64/aarch64.rs":"d98643408c2837387988f78adc95c90ad21196a6f8f879e3d33d7e8ccf612640","src/unix/notbsd/linux/musl/b64/mod.rs":"d9285cd705e2e92552a08c9aa69b810e7e1bd0e9da6edf069c678af285579661","src/unix/notbsd/linux/musl/b64/powerpc64.rs":"544d8a7f6d6d84143df8a4c3537c9a3a36bf3d338d7a1c15689b94492498d8d7","src/unix/notbsd/linux/musl/b64/x86_64.rs":"25340999290a63d564ec149532c905f59c312ec369f8806d6b15df66fa1b8857","src/unix/notbsd/linux/musl/mod.rs":"4e582af62a11e8a5235ccbeabe5b1003fc17705e606c1ed9b21b931a470681fc","src/unix/notbsd/linux/other/b32/arm.rs":"d9892f7350b2978335f734f1cd2d7fed60f0f2e66aa05bee3f69549c031f8b14","src/unix/notbsd/linux/other/b32/mod.rs":"26211878c6481861e11393625620edaa0700cac41f55f0118c0f0bd42c1b7520","src/unix/notbsd/linux/other/b32/powerpc.rs":"253fcd2f9978525285be1903cc08f3fec2dc3b12d1660a33e2995b4f6b810d1c","src/unix/notbsd/linux/other/b32/x86.rs":"49376e3ed0f3ff95c230ac20751911fe3c608dfe15c7c118b069fd7a954d8db9","src/unix/notbsd/linux/other/b64/aarch64.rs":"1124ab5e974718b94fa40ae0f1772fb1c537910ef3e018b7c6c94a38b83dd742","src/unix/notbsd/linux/other/b64/mod.rs":"63e1a3fdf5f4d1b9820934ab344c91aed5e458e7e05908535d2e942d51a08bf8","src/unix/notbsd/linux/other/b64/not_x32.rs":"fa8636fb93eab230ed53bdec0a06f5b81d6d982cc0800103563c8c1eefcdb2d9","src/unix/notbsd/linux/other/b64/powerpc64.rs":"a771d982ed8a9458e1f2f039f959b5075b22443159875ba5612eebba96661c24","src/unix/notbsd/linux/other/b64/sparc64.rs":"0caffe5924886f3aed187531dfe78189b3df40adb96782ec4b471647ff83e9b1","src/unix/notbsd/linux/other/b64/x32.rs":"06a26c5120ced30fc015c220799b67c4401be2f13fc6c7361bebd3d37ff4982d","src/unix/notbsd/linux/other/b64/x86_64.rs":"70d0cec088630502128c1c28ffef9dcc0fd9c0644f6a71b1325961d075625226","src/unix/notbsd/linux/other/mod.rs":"fe76beac87fc549b076078a0fa3e2ecd4c13b0e6e4fcb34a89e16c6584f5259b","src/unix/notbsd/linux/s390x.rs":"9e990574dfc22b6eb91bcc7c6f8297f9ad42f9183efb366a818be88180a3fac3","src/unix/notbsd/mod.rs":"a0fdecac118b70fb670f0fcccaa7f826440873448a96dd557fb1fe52cf391e89","src/unix/solaris/mod.rs":"7950a26f3eb0b7bc8e71f524cc2e05832b759fe2ce12a58e0c1957e0ec1286dc","src/unix/uclibc/mips/mips32.rs":"9739c5fb47f389a0394ef08ee30da97a3de0a1300020731a8cc0a033616011b2","src/unix/uclibc/mips/mips64.rs":"230583280bbc7b3c7fcdb61244f51fa1af5944ca127c7cf83c598fe2313713d0","src/unix/uclibc/mips/mod.rs":"2d76e6cfeb2b7f7c59231a6e099f1aed811a45659e62153aaf00c220b9488a9d","src/unix/uclibc/mod.rs":"521818507cef958376edfd8401c35db7ee1c51ee3cf106ad962002104a184cf5","src/unix/uclibc/x86_64/l4re.rs":"68fd3a833fd1f7caf784a084224f384bdbdfb8b5a14ef94c4f5155409afb3439","src/unix/uclibc/x86_64/mod.rs":"419182836aedd426a5c9e6b8667058adf86ac8f43af73ce8d00c503f8ff8f414","src/unix/uclibc/x86_64/other.rs":"f03b47842896f2f3ae6f8ebdcbcf0276454f880349d9cf00e3d304f8136893c5","src/windows/gnu.rs":"4d9033162cc6f7d245256c7b165c1ec18a741771fd9b99a55b421e8d14978599","src/windows/mod.rs":"7d74b12f71de86ee517a9cd93b1b38d0551646db0eaf526048abcbdd4bbeb250","src/windows/msvc.rs":"8f46cf66883c794175609a3b2bafaa094d0ba63eb6720ef1b84b175603f1074f"},"package":"023a4cd09b2ff695f9734c1934145a315594b7986398496841c7031a5a1bbdbd"}
-\ No newline at end of file
-+{"files":{"Cargo.toml":"e1bbf88a55a1ba674f5192fe1585b57a51751ee6c5aa7edeb87df8027c3bb912","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"6485b8ed310d3f0340bf1ad1f47645069ce4069dcc6bb46c7d5c6faf41de1fdb","README.md":"40ddea9181e5374cf535aae33ad4ace80bd9b1beea8f881ff8d2b777da9489b2","build.rs":"2d1cbe87e0478de12a15a230d7ef0997020ba845b5b7d221d74cd2ce3fe0e720","src/cloudabi/aarch64.rs":"b8550bf1fd7344972aa4db29441486f39f31482d0327534981dbb75959c29114","src/cloudabi/arm.rs":"c197e2781c2839808bd6fcef219a29705b27b992d3ef920e9cf6ac96e2022bbf","src/cloudabi/mod.rs":"640375751825b8d4adf4fb089a53c4d883f265f96b07daf06f2dcf3acf6639c9","src/cloudabi/x86.rs":"33eb97f272d2201f3838ae74d444583c7de8f67856852ca375293b20bbd05636","src/cloudabi/x86_64.rs":"400d85d4fe39e26cf2e6ece9ee31c75fe9e88c4bcf4d836ca9f765c05c9c5be3","src/dox.rs":"b4b96dcba47797a6160c07f29982dd15d48fd2813d7d1000484bd9adc4a89de1","src/fuchsia/aarch64.rs":"40dce617877e606e92353491e1913711b1ecfa510bb983156f4a8460f490419e","src/fuchsia/mod.rs":"784dee21605f00a41d7cae1fc3d782646a84515a687a4952700eae51cc3840f0","src/fuchsia/x86_64.rs":"b4a3eff94dcf1ffe41e6500468ca2cff0e97ddbcc75fe079b6ac7adb1e493f56","src/lib.rs":"d456d34fc58c8d194f8f24201b4021860f61c5f125904bb8dcc954d1f813f6b7","src/macros.rs":"29d61c13523328c4742a7290dbb7d718ce198740824592e029199e9df5429b20","src/redox/mod.rs":"87cb35a988be84d45e79206f7cb5d098e8e7c5a1825cfcd0bd663453dedc3103","src/redox/net.rs":"f2e1922883f208cb46c00744da4a68feccfbec576c6981978ad404e46f818c8b","src/sgx.rs":"18d33a470d06c15b00be5a3bf45b6e51da6104ae7437f50c0eccbd3b79994389","src/switch.rs":"00365ed196519b260fc99a32f02d60b3fb1aaf0484654b19fec8c25bc1687420","src/unix/bsd/apple/b32.rs":"da60c99ee3d773f9c0767b93ccf18b67ad67576e2c58e2e86d05b23c23fd989a","src/unix/bsd/apple/b64.rs":"0cc15406c3a91abde65b28c7783ccab7801474ecc51c78dbd1d7332d4b834390","src/unix/bsd/apple/mod.rs":"b0e2d1f7fdb71d7a02bc5994c66a5ae660955227a0c0f808172a30b38fd40299","src/unix/bsd/freebsdlike/dragonfly/mod.rs":"6c69319675328d4d16939c9c2aba3fb8ca9381a8b390d18d766949307090304b","src/unix/bsd/freebsdlike/freebsd/aarch64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/freebsd/mod.rs":"6bbb3c3cf0753f32a2e61ac0f011a6c5e870a0814a6ed4eb9bb9dcdc58a9dca3","src/unix/bsd/freebsdlike/freebsd/x86.rs":"54311d3ebf2bb091ab22361e377e6ef9224aec2ecfe459fbfcedde4932db9c58","src/unix/bsd/freebsdlike/freebsd/x86_64.rs":"97132e2097411034271b8c927ecc94a208a361564680972a6c82998bd30a9826","src/unix/bsd/freebsdlike/mod.rs":"596def64669e2f27cffebca8e5c682ee7d576f84f8f99771c27e86ce8e818221","src/unix/bsd/mod.rs":"0c846b3a2c9390dfe090603f1ad643b107cc7e7605866c5399aa81dfea4e74bd","src/unix/bsd/netbsdlike/mod.rs":"9f55f35f8e4e26c7c63eaf67ddda0e40cc2abbabc2a68750809162e6f80144f1","src/unix/bsd/netbsdlike/netbsd/aarch64.rs":"f455848cd03cb80897776f2355dbd14bbb3aa88b1aa6aec22122ec47cdbd0f20","src/unix/bsd/netbsdlike/netbsd/arm.rs":"4c9eac982c385165f475ef3a80770fd634c6dde8fb400b3cb7e08c9bb7498af6","src/unix/bsd/netbsdlike/netbsd/mod.rs":"88617ada3bc740c5262926b9c45d7f51120d358522f051f0afdf7465edd13c29","src/unix/bsd/netbsdlike/netbsd/powerpc.rs":"183818c62dff72db6ee1d329d90ad8727628775ed5cd823c8485c6769003c91e","src/unix/bsd/netbsdlike/netbsd/sparc64.rs":"4db043327fb2615af2fb0f999d162310bea2294e7d050806e19a46b083561f16","src/unix/bsd/netbsdlike/netbsd/x86.rs":"979c4cbacbde37b9053f2c9df4b8f87d37b255436ef4a383e1e5f40ee21180d6","src/unix/bsd/netbsdlike/netbsd/x86_64.rs":"741353a1c6451efb0c7c7c486fd2cb54e3d36fd1c3dd280f6432d8858b0a5356","src/unix/bsd/netbsdlike/openbsdlike/bitrig/mod.rs":"4d2ad2e885d83ad3134add61580f49a8e58cb03284ae328273a9e2e104a4d084","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86.rs":"bd251a102bed65d5cb3459275f6ec3310fe5803ff4c9651212115548f86256d0","src/unix/bsd/netbsdlike/openbsdlike/bitrig/x86_64.rs":"6e6f15e81597d85d83ca0eeb154e4f8b8e7f9cbb6a9cfa176601f78642ef94f9","src/unix/bsd/netbsdlike/openbsdlike/mod.rs":"6320b7bc7283dbc2a07cfb8b5a793c0153535601d050f33c1ff5e4a5cc57c2be","src/unix/bsd/netbsdlike/openbsdlike/openbsd/aarch64.rs":"820092e397c7ec259cd2de8f2444083a8e57071c02d73d678701dfa7807726e9","src/unix/bsd/netbsdlike/openbsdlike/openbsd/mod.rs":"6adc0dcb1b358ef91bbeb5512e19ba6f40adc77b7d259cb11641a69426fc5ea2","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86.rs":"44b7ea81cf363777b29935da175e702cbf45ed78f7498ae57faf44aa32335085","src/unix/bsd/netbsdlike/openbsdlike/openbsd/x86_64.rs":"97956c3a53aa07a2edf8865252f980dade0d34e930adca0e870e7344d7e2b0bb","src/unix/haiku/b32.rs":"69ae47fc52c6880e85416b4744500d5655c9ec6131cb737f3b649fceaadce15a","src/unix/haiku/b64.rs":"73e64db09275a8da8d50a13cce2cfa2b136036ddf3a930d2939f337fc995900b","src/unix/haiku/mod.rs":"b00fa310b6d835cb613a02101c7b1a72c636faec316586587cb63aebdcb9de8f","src/unix/hermit/aarch64.rs":"86048676e335944c37a63d0083d0f368ae10ceccefeed9debb3bbe08777fc682","src/unix/hermit/mod.rs":"248c0b0abaa7d56a7dc3293e67a0ce70a4ef8c83638bda8aa222ad8bb0ef6801","src/unix/hermit/x86_64.rs":"ab832b7524e5fb15c49ff7431165ab1a37dc4667ae0b58e8306f4c539bfa110c","src/unix/mod.rs":"3231196aa748186ad21063bb43c69b95c0d90ba32c5547c72f7c6ed343a100b7","src/unix/newlib/aarch64/mod.rs":"c408a990f22fb4292a824f38367e9b517e6e6f8623328397ee631cc88b3d1f7d","src/unix/newlib/arm/mod.rs":"2b6dba2e697ab9b4f4bc4dd5f28057249e9b596d1cb395a9322ec87605c4a5c4","src/unix/newlib/mod.rs":"eea5f1eb720184d9a00be966e4161fddb3733362fc349182e85b1599ba4e825f","src/unix/notbsd/android/b32/arm.rs":"3625a32c7e58cfe683a53486fbe3d42d4e28f00bea31e19cb46ed2bb0b6a140b","src/unix/notbsd/android/b32/mod.rs":"2fbe398c1fb5251dda6213741a193e50aae4622807cb255d1dd2e82b536f0c65","src/unix/notbsd/android/b32/x86.rs":"ae2b7f1d6278caddc007749bb1d09ca33f7593478a0fd7fe98b457dae86c7814","src/unix/notbsd/android/b64/aarch64.rs":"63d65629d79371814910f691672ef593d20244ee09be26f1ebe07ee6212d0163","src/unix/notbsd/android/b64/mod.rs":"90d4f6b063fd4de42fd302cbc9d9902fd99ac1d71dc48cb8bc6ad7b4c902e481","src/unix/notbsd/android/b64/x86_64.rs":"5547aef8dcbaa5a932559f34606fd8d89f6c9c15173d2b1412c12d39b3c1045f","src/unix/notbsd/android/mod.rs":"19013f41ac8ccac034eb48777a4041d69342edb9ca25d4e0bb9c5938f62eef3e","src/unix/notbsd/emscripten.rs":"9ed47a0a5020c8f72d9496f87ef0da669c1ed2b85980013100c466f18cd8a4c5","src/unix/notbsd/linux/mips/mips32.rs":"a483ddfd10765b7d5090dc21686eee8842649cd21236828a42d634114885f5f9","src/unix/notbsd/linux/mips/mips64.rs":"9fff696e3943cf206b549d1ae13fa361828e9a8454e2d5730eeaa1c172ff370d","src/unix/notbsd/linux/mips/mod.rs":"d18a40011e9090a4a2a1f27e5bd96eb2503ac352f4809648e15841083d7f3a68","src/unix/notbsd/linux/mod.rs":"d84e95d36f9477fa1aa694bf18a919ba20e65aa71539c3f3dc06e8f92acee521","src/unix/notbsd/linux/musl/b32/arm.rs":"fdf170e03812072785ec531f1ae810d0c4feb9b29d0c316681b9f7affe1262c0","src/unix/notbsd/linux/musl/b32/mips.rs":"afa4981d93f29b3fb0083a73ce1323f7dce1392f90d5cf1966b1fae10d510033","src/unix/notbsd/linux/musl/b32/mod.rs":"540928f168f145c136f9dd729ffa12b9d1838d9fe664fc642365d17d7fae648f","src/unix/notbsd/linux/musl/b32/powerpc.rs":"16c615770a96f155540511f58b5a8070c9c7a43e12bdfed83996690e7558bcb5","src/unix/notbsd/linux/musl/b32/x86.rs":"3abf1610c68c37f407cdd0f93563c3542c024219e0e8c9888266a6ee014e0c87","src/unix/notbsd/linux/musl/b64/aarch64.rs":"d98643408c2837387988f78adc95c90ad21196a6f8f879e3d33d7e8ccf612640","src/unix/notbsd/linux/musl/b64/mod.rs":"d9285cd705e2e92552a08c9aa69b810e7e1bd0e9da6edf069c678af285579661","src/unix/notbsd/linux/musl/b64/powerpc64.rs":"544d8a7f6d6d84143df8a4c3537c9a3a36bf3d338d7a1c15689b94492498d8d7","src/unix/notbsd/linux/musl/b64/x86_64.rs":"25340999290a63d564ec149532c905f59c312ec369f8806d6b15df66fa1b8857","src/unix/notbsd/linux/musl/mod.rs":"4e582af62a11e8a5235ccbeabe5b1003fc17705e606c1ed9b21b931a470681fc","src/unix/notbsd/linux/other/b32/arm.rs":"d9892f7350b2978335f734f1cd2d7fed60f0f2e66aa05bee3f69549c031f8b14","src/unix/notbsd/linux/other/b32/mod.rs":"26211878c6481861e11393625620edaa0700cac41f55f0118c0f0bd42c1b7520","src/unix/notbsd/linux/other/b32/powerpc.rs":"253fcd2f9978525285be1903cc08f3fec2dc3b12d1660a33e2995b4f6b810d1c","src/unix/notbsd/linux/other/b32/x86.rs":"49376e3ed0f3ff95c230ac20751911fe3c608dfe15c7c118b069fd7a954d8db9","src/unix/notbsd/linux/other/b64/aarch64.rs":"1124ab5e974718b94fa40ae0f1772fb1c537910ef3e018b7c6c94a38b83dd742","src/unix/notbsd/linux/other/b64/mod.rs":"63e1a3fdf5f4d1b9820934ab344c91aed5e458e7e05908535d2e942d51a08bf8","src/unix/notbsd/linux/other/b64/not_x32.rs":"fa8636fb93eab230ed53bdec0a06f5b81d6d982cc0800103563c8c1eefcdb2d9","src/unix/notbsd/linux/other/b64/powerpc64.rs":"a771d982ed8a9458e1f2f039f959b5075b22443159875ba5612eebba96661c24","src/unix/notbsd/linux/other/b64/sparc64.rs":"0caffe5924886f3aed187531dfe78189b3df40adb96782ec4b471647ff83e9b1","src/unix/notbsd/linux/other/b64/x32.rs":"06a26c5120ced30fc015c220799b67c4401be2f13fc6c7361bebd3d37ff4982d","src/unix/notbsd/linux/other/b64/x86_64.rs":"70d0cec088630502128c1c28ffef9dcc0fd9c0644f6a71b1325961d075625226","src/unix/notbsd/linux/other/mod.rs":"fe76beac87fc549b076078a0fa3e2ecd4c13b0e6e4fcb34a89e16c6584f5259b","src/unix/notbsd/linux/s390x.rs":"9e990574dfc22b6eb91bcc7c6f8297f9ad42f9183efb366a818be88180a3fac3","src/unix/notbsd/mod.rs":"a0fdecac118b70fb670f0fcccaa7f826440873448a96dd557fb1fe52cf391e89","src/unix/solaris/mod.rs":"7950a26f3eb0b7bc8e71f524cc2e05832b759fe2ce12a58e0c1957e0ec1286dc","src/unix/uclibc/mips/mips32.rs":"9739c5fb47f389a0394ef08ee30da97a3de0a1300020731a8cc0a033616011b2","src/unix/uclibc/mips/mips64.rs":"230583280bbc7b3c7fcdb61244f51fa1af5944ca127c7cf83c598fe2313713d0","src/unix/uclibc/mips/mod.rs":"2d76e6cfeb2b7f7c59231a6e099f1aed811a45659e62153aaf00c220b9488a9d","src/unix/uclibc/mod.rs":"521818507cef958376edfd8401c35db7ee1c51ee3cf106ad962002104a184cf5","src/unix/uclibc/x86_64/l4re.rs":"68fd3a833fd1f7caf784a084224f384bdbdfb8b5a14ef94c4f5155409afb3439","src/unix/uclibc/x86_64/mod.rs":"419182836aedd426a5c9e6b8667058adf86ac8f43af73ce8d00c503f8ff8f414","src/unix/uclibc/x86_64/other.rs":"f03b47842896f2f3ae6f8ebdcbcf0276454f880349d9cf00e3d304f8136893c5","src/windows/gnu.rs":"4d9033162cc6f7d245256c7b165c1ec18a741771fd9b99a55b421e8d14978599","src/windows/mod.rs":"7d74b12f71de86ee517a9cd93b1b38d0551646db0eaf526048abcbdd4bbeb250","src/windows/msvc.rs":"8f46cf66883c794175609a3b2bafaa094d0ba63eb6720ef1b84b175603f1074f"},"package":"023a4cd09b2ff695f9734c1934145a315594b7986398496841c7031a5a1bbdbd"}
diff --git a/user/rust/0040-rls-atomics.patch b/user/rust/0040-rls-atomics.patch
deleted file mode 100644
index 4dd813faa..000000000
--- a/user/rust/0040-rls-atomics.patch
+++ /dev/null
@@ -1,63 +0,0 @@
-diff --git a/src/tools/rls/src/cmd.rs b/src/tools/rls/src/cmd.rs
-index 64035aa..d9129d8 100644
---- a/src/tools/rls/src/cmd.rs
-+++ b/src/tools/rls/src/cmd.rs
-@@ -17,7 +17,7 @@ use crate::config::Config;
- use crate::server::{self, LsService, Notification, Request, RequestId};
- use rls_analysis::{AnalysisHost, Target};
- use rls_vfs::Vfs;
--use std::sync::atomic::{AtomicU64, Ordering};
-+use std::sync::atomic::{AtomicU32, Ordering};
-
- use languageserver_types::{
- ClientCapabilities, CodeActionContext, CodeActionParams, CompletionItem,
-@@ -424,8 +424,8 @@ fn url(file_name: &str) -> Url {
- }
-
- fn next_id() -> RequestId {
-- static ID: AtomicU64 = AtomicU64::new(1);
-- RequestId::Num(ID.fetch_add(1, Ordering::SeqCst))
-+ static ID: AtomicU32 = AtomicU32::new(1);
-+ RequestId::Num(ID.fetch_add(1, Ordering::SeqCst).into())
- }
-
- // Custom reader and output for the RLS server.
-diff --git a/src/tools/rls/src/server/io.rs b/src/tools/rls/src/server/io.rs
-index 7b93d4a..f3c5361 100644
---- a/src/tools/rls/src/server/io.rs
-+++ b/src/tools/rls/src/server/io.rs
-@@ -17,7 +17,7 @@ use crate::lsp_data::{LSPNotification, LSPRequest};
-
- use std::fmt;
- use std::io::{self, BufRead, Write};
--use std::sync::atomic::{AtomicU64, Ordering};
-+use std::sync::atomic::{AtomicU32, Ordering};
- use std::sync::Arc;
-
- use jsonrpc_core::{self as jsonrpc, response, version, Id};
-@@ -190,14 +190,14 @@ pub trait Output: Sync + Send + Clone + 'static {
- /// An output that sends notifications and responses on `stdout`.
- #[derive(Clone)]
- pub(super) struct StdioOutput {
-- next_id: Arc<AtomicU64>,
-+ next_id: Arc<AtomicU32>,
- }
-
- impl StdioOutput {
- /// Construct a new `stdout` output.
- crate fn new() -> StdioOutput {
- StdioOutput {
-- next_id: Arc::new(AtomicU64::new(1)),
-+ next_id: Arc::new(AtomicU32::new(1).into()),
- }
- }
- }
-@@ -215,7 +215,7 @@ impl Output for StdioOutput {
- }
-
- fn provide_id(&self) -> RequestId {
-- RequestId::Num(self.next_id.fetch_add(1, Ordering::SeqCst))
-+ RequestId::Num(self.next_id.fetch_add(1, Ordering::SeqCst).into())
- }
- }
-
diff --git a/user/rust/APKBUILD b/user/rust/APKBUILD
index 9a37b97c3..ede75b2d8 100644
--- a/user/rust/APKBUILD
+++ b/user/rust/APKBUILD
@@ -1,31 +1,33 @@
-# Contributor: Jakub Jirutka <jakub@jirutka.cz>
-# Contributor: Shiz <hi@shiz.me>
-# Contributor: Jeizsm <jeizsm@gmail.com>
# Maintainer: Samuel Holland <samuel@sholland.org>
pkgname=rust
-pkgver=1.33.0
-_bootcargover=0.33.0
-_bootver=1.32.0
-_llvmver=7
+pkgver=1.80.0
+_bootver=1.79.0-r0
+_llvmver=18
pkgrel=0
pkgdesc="The Rust Programming Language"
url="https://www.rust-lang.org"
arch="all"
+#options="!check" # Failures on aarch64 and ppc64.
license="(Apache-2.0 OR MIT) AND (NCSA OR MIT) AND BSD-2-Clause AND BSD-3-Clause"
-depends="$pkgname-stdlib=$pkgver-r$pkgrel gcc musl-dev"
+depends="$pkgname-std=$pkgver-r$pkgrel gcc musl-dev"
+# debuginfo-gdb tests fail due to security settings
+# node makes Rust think it can do rustdoc-gui tests which require many NPM pkgs
+checkdepends="!gdb !node"
makedepends="
curl-dev
- libgit2-dev
- libssh2-dev
llvm$_llvmver-dev
llvm$_llvmver-test-utils
openssl-dev
python3
+ cargo-bootstrap=$_bootver
+ rust-bootstrap=$_bootver
+ rustfmt-bootstrap=$_bootver
zlib-dev
"
+provides="$pkgname-bootstrap=$pkgver-r$pkgrel"
subpackages="
$pkgname-dbg
- $pkgname-stdlib
+ $pkgname-std
$pkgname-analysis
$pkgname-doc
$pkgname-gdb::noarch
@@ -37,134 +39,138 @@ subpackages="
cargo-doc:_cargo_doc:noarch
cargo-bash-completion:_cargo_bashcomp:noarch
cargo-zsh-completion:_cargo_zshcomp:noarch
- rls
rustfmt
"
source="https://static.rust-lang.org/dist/rustc-$pkgver-src.tar.xz
- https://distfiles.adelielinux.org/source/rust/cargo-$_bootcargover-$CBUILD.tar.xz
- https://distfiles.adelielinux.org/source/rust/rust-std-$_bootver-$CBUILD.tar.xz
- https://distfiles.adelielinux.org/source/rust/rustc-$_bootver-$CBUILD.tar.xz
- 0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch
- 0002-Fix-LLVM-build.patch
- 0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
- 0004-Require-static-native-libraries-when-linking-static-.patch
- 0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
- 0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
- 0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
- 0008-test-enum-debug-Correct-minimum-LLVM-version.patch
- 0009-test-use-extern-for-plugins-Don-t-assume-multilib.patch
- 0010-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
- 0011-Ignore-broken-and-non-applicable-tests.patch
- 0012-Link-stage-2-tools-dynamically-to-libstd.patch
- 0013-Move-debugger-scripts-to-usr-share-rust.patch
- 0014-Add-foxkit-target-specs.patch
- 0030-libc-linkage.patch
- 0040-rls-atomics.patch
+ 0001-Fix-LLVM-build.patch
+ 0002-Fix-linking-to-zlib-when-cross-compiling.patch
+ 0003-Fix-rustdoc-when-cross-compiling-on-musl.patch
+ 0004-Remove-musl_root-and-CRT-fallback-from-musl-targets.patch
+ 0005-Prefer-libgcc_eh-over-libunwind-for-musl.patch
+ 0006-Link-libssp_nonshared.a-on-all-musl-targets.patch
+ 0007-test-failed-doctest-output-Fix-normalization.patch
+ 0008-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
+ 0009-Ignore-broken-and-non-applicable-tests.patch
+ 0010-Link-stage-2-tools-dynamically-to-libstd.patch
+ 0011-Move-debugger-scripts-to-usr-share-rust.patch
+ 0012-Add-foxkit-target-specs.patch
+ mir-opt-tests-endianness.patch
+ powerpc-atomics.patch
+ ppc64-abi.patch
+ stdarch-ppc.patch
+ test-be.patch
+ ui-test-strings.patch
"
builddir="$srcdir/rustc-$pkgver-src"
_rlibdir="/usr/lib/rustlib/$CTARGET/lib"
prepare() {
- cd "$builddir"
-
default_prepare
+ # These tests require Node and various NPM packages.
+ rm -rf "$builddir"/tests/rustdoc-*
- $srcdir/cargo-$_bootcargover-$CBUILD/install.sh \
- --destdir=$srcdir/prebuilt \
- --prefix=/ \
- --disable-ldconfig
- $srcdir/rust-std-$_bootver-$CBUILD/install.sh \
- --destdir=$srcdir/prebuilt \
- --prefix=/ \
- --disable-ldconfig
- $srcdir/rustc-$_bootver-$CBUILD/install.sh \
- --destdir=$srcdir/prebuilt \
- --prefix=/ \
- --disable-ldconfig
+ # Tests depend on FP precision that can't be given on i586: #1259
+ rm -f "$builddir"/tests/ui/traits/object/print_vtable_sizes.rs
+ rm -f "$builddir"/tests/ui/traits/object/print_vtable_sizes.stdout
}
build() {
- cd "$builddir"
-
cat > config.toml <<- EOF
[build]
+ doc-stage = 2
+ build-stage = 2
+ test-stage = 2
build = "$CBUILD"
host = [ "$CHOST" ]
target = [ "$CTARGET" ]
- cargo = "$srcdir/prebuilt/bin/cargo"
- rustc = "$srcdir/prebuilt/bin/rustc"
+ cargo = "/usr/bin/cargo"
+ rustc = "/usr/bin/rustc"
+ rustfmt = "/usr/bin/rustfmt"
+ docs = true
+ compiler-docs = false
submodules = false
python = "python3"
locked-deps = true
vendor = true
extended = true
- tools = [ "analysis", "cargo", "clippy", "rls", "rustfmt", "src" ]
+ tools = [ "analysis", "cargo", "clippy", "rustfmt", "src" ]
+ verbose = 1
+ sanitizers = false
+ profiler = false
+ cargo-native-static = false
[install]
prefix = "/usr"
[rust]
+ optimize = true
+ debug = false
codegen-units = 1
- debuginfo = true
- debuginfo-lines = true
- debuginfo-only-std = true
- debuginfo-tools = true
+ debuginfo-level = 1
+ debuginfo-level-rustc = 0
+ debuginfo-level-tests = 0
backtrace = true
+ incremental = false
+ parallel-compiler = false
channel = "stable"
+ description = "Adelie ${pkgver}-r${pkgrel}"
rpath = false
+ verbose-tests = true
+ optimize-tests = true
+ codegen-tests = true
+ dist-src = false
+ lld = false
+ use-lld = false
+ llvm-tools = false
+ backtrace-on-ice = true
+ remap-debuginfo = false
jemalloc = false
+ llvm-libunwind = "no"
+ new-symbol-mangling = true
[target.$CTARGET]
cc = "$CTARGET-gcc"
cxx = "$CTARGET-g++"
+ ar = "ar"
+ ranlib = "ranlib"
linker = "$CTARGET-gcc"
llvm-config = "/usr/lib/llvm$_llvmver/bin/llvm-config"
crt-static = false
+ [dist]
+ src-tarball = false
+ compression-formats = [ "xz" ]
EOF
- LIBGIT2_SYS_USE_PKG_CONFIG=1 \
LLVM_LINK_SHARED=1 \
RUST_BACKTRACE=1 \
- python3 x.py build -j ${JOBS:-2}
+ python3 x.py dist -j ${JOBS:-2}
}
check() {
- cd "$builddir"
-
- RUST_BACKTRACE=1 \
- python3 x.py test -j ${JOBS:-2} --no-doc --no-fail-fast \
- src/test/codegen \
- src/test/codegen-units \
- src/test/compile-fail \
- src/test/incremental \
- src/test/mir-opt \
- src/test/pretty \
- src/test/run-fail \
- src/test/run-fail/pretty \
- src/test/run-fail-fulldeps \
- src/test/run-fail-fulldeps/pretty \
- src/test/run-make \
- src/test/run-make-fulldeps \
- src/test/run-pass \
- src/test/run-pass/pretty \
- src/test/run-pass-fulldeps \
- src/test/run-pass-fulldeps/pretty \
- src/test/ui \
- src/test/ui-fulldeps
+ LLVM_LINK_SHARED=1 \
+ python3 x.py test -j ${JOBS:-2} --no-doc tests/ui
}
package() {
- cd "$builddir"
+ cd "$builddir"/build/dist
- DESTDIR="$pkgdir" python3 x.py install
+ tar xf rust-$pkgver-$CTARGET.tar.xz
+ rust-$pkgver-$CTARGET/install.sh \
+ --destdir="$pkgdir" \
+ --prefix=/usr \
+ --sysconfdir="$pkgdir"/etc \
+ --disable-ldconfig
+ tar xf rust-src-$pkgver.tar.xz
+ rust-src-$pkgver/install.sh \
+ --destdir="$pkgdir" \
+ --prefix=/usr \
+ --disable-ldconfig
- rm "$pkgdir"/usr/lib/*.so \
- "$pkgdir"/usr/lib/rustlib/components \
+ rm "$pkgdir"/usr/lib/rustlib/components \
"$pkgdir"/usr/lib/rustlib/install.log \
"$pkgdir"/usr/lib/rustlib/manifest-* \
"$pkgdir"/usr/lib/rustlib/rust-installer-version \
- "$pkgdir"/usr/lib/rustlib/uninstall.sh \
- "$pkgdir"/usr/share/doc/rust/*.old
+ "$pkgdir"/usr/lib/rustlib/uninstall.sh
}
-stdlib() {
+std() {
pkgdesc="Standard library for Rust"
depends="musl-utils"
@@ -176,7 +182,7 @@ stdlib() {
analysis() {
pkgdesc="Compiler analysis data for the Rust standard library"
- depends="$pkgname=$pkgver-r$pkgrel $pkgname-stdlib=$pkgver-r$pkgrel"
+ depends="$pkgname=$pkgver-r$pkgrel $pkgname-std=$pkgver-r$pkgrel"
_mv "$pkgdir"${_rlibdir%/*}/analysis "$subpkgdir"${_rlibdir%/*}
}
@@ -188,7 +194,8 @@ gdb() {
install_if="$pkgname=$pkgver-r$pkgrel gdb"
_mv "$pkgdir"/usr/bin/rust-gdb "$subpkgdir"/usr/bin
- _mv "$pkgdir"/usr/share/rust/gdb_*.py "$subpkgdir"/usr/share/rust || true
+ _mv "$pkgdir"/usr/bin/rust-gdbgui "$subpkgdir"/usr/bin
+ _mv "$pkgdir"/usr/share/rust/gdb_*.py "$subpkgdir"/usr/share/rust
}
lldb() {
@@ -198,7 +205,7 @@ lldb() {
install_if="$pkgname=$pkgver-r$pkgrel lldb"
_mv "$pkgdir"/usr/bin/rust-lldb "$subpkgdir"/usr/bin
- _mv "$pkgdir"/usr/share/rust/lldb_*.py "$subpkgdir"/usr/share/rust || true
+ _mv "$pkgdir"/usr/share/rust/lldb_*.py "$subpkgdir"/usr/share/rust
}
src() {
@@ -214,14 +221,15 @@ src() {
cargo() {
pkgdesc="The Rust package manager"
- depends="$pkgname-stdlib=$pkgver-r$pkgrel $pkgname"
+ provides="cargo-bootstrap=$pkgver-r$pkgrel"
+ depends="$pkgname-std=$pkgver-r$pkgrel $pkgname"
_mv "$pkgdir"/usr/bin/cargo "$subpkgdir"/usr/bin
}
_cargo_clippy() {
pkgdesc="A collection of Rust lints (cargo plugin)"
- depends="$pkgname-stdlib=$pkgver-r$pkgrel cargo"
+ depends="$pkgname-std=$pkgver-r$pkgrel cargo"
_mv "$pkgdir"/usr/bin/cargo-clippy \
"$pkgdir"/usr/bin/clippy-driver \
@@ -230,7 +238,7 @@ _cargo_clippy() {
_cargo_fmt() {
pkgdesc="Format Rust code (cargo plugin)"
- depends="$pkgname-stdlib=$pkgver-r$pkgrel cargo rustfmt"
+ depends="$pkgname-std=$pkgver-r$pkgrel cargo rustfmt"
install_if="cargo=$pkgver-r$pkgrel rustfmt=$pkgver-r$pkgrel"
_mv "$pkgdir"/usr/bin/cargo-fmt "$subpkgdir"/usr/bin
@@ -269,17 +277,10 @@ _cargo_doc() {
"$subpkgdir"/usr/share/man/man1
}
-rls() {
- pkgdesc="The Rust language server"
- license="Apache-2.0 OR MIT"
- depends="$pkgname-stdlib=$pkgver-r$pkgrel"
-
- _mv "$pkgdir"/usr/bin/rls "$subpkgdir"/usr/bin
-}
-
rustfmt() {
pkgdesc="Format Rust code"
- depends="$pkgname-stdlib=$pkgver-r$pkgrel"
+ provides="rustfmt-bootstrap=$pkgver-r$pkgrel"
+ depends="$pkgname-std=$pkgver-r$pkgrel"
_mv "$pkgdir"/usr/bin/rustfmt "$subpkgdir"/usr/bin
}
@@ -289,23 +290,23 @@ _mv() {
mkdir -p "$dest"
mv "$@"
}
-sha512sums="3291e4e19f75f44c81e6fcf4c01edc7c9d326eca43722381231abcf2e99f4314059ba59a29b79f5511ad9421c358c45e8fe18584d6954d17fe2aabad0f9d9147 rustc-1.33.0-src.tar.xz
-24caa7730dd41f61b97bb909d499f928cebab948e814b786e7d3836e92188ef27da48147532e063b3cec424e41a4374581274f21dc79bb95cf310f92c8609579 cargo-0.33.0-powerpc64-foxkit-linux-musl.tar.xz
-c6d237d6daaae1e8a342691917bdc76fa6a59f5bd99a1df38baebf6d5c1ddc6f8460ac6e1db8168120accb9c5f90f652ea013b4d865c486c72e90244be753ebd rust-std-1.32.0-powerpc64-foxkit-linux-musl.tar.xz
-8ff3bca961e146593f17e1581d20eaeae99768a4fac65258cf5ef80ef69b427a4980fd345b69b831028ca3e882d52d2ebd42a2eccab2c812da09e2bc28960ffe rustc-1.32.0-powerpc64-foxkit-linux-musl.tar.xz
-a5e03a091b224b9cd3cd6d8a0b1ac70389f374c95ff09f55b01e739b3a98a8551d2208b2750137ebaacbb8628d1bb54a96aaeb938c961e4eb33a071594bce1dc 0001-Don-t-pass-CFLAGS-to-the-C-compiler.patch
-bf387aad3d117e30621bd1914c3a713a710db0639413d57802c3a9bba49bf422dedf5e03b4a3073ec1efbd571cbcd10b6a0b3f98f2b019555581db5599b84f44 0002-Fix-LLVM-build.patch
-b931204afaf3ac4c73f41c29586b0cebdb06867bf401717a473c2367ebf25be1a42827f7ccccea50c15006c744cb73fc7ea9627816d0a2b53421546a4e478436 0003-Allow-rustdoc-to-work-when-cross-compiling-on-musl.patch
-da362880f89a2df8223ed255d44803e9d7d8115666946fe3a4fe4a78030cd8ee40d6aabc1ceaab110e62e9a67af7631729348f71f2d514458ef0a60e6decff3b 0004-Require-static-native-libraries-when-linking-static-.patch
-1bdc441cb068697c7f6984e16bdde28bdd17b7a2517c33b666851d55f1d987a76e4d7f034b7221538c663c0a33603d8ac1f60ffb167a4a5d01677a7b214ab21d 0005-Remove-nostdlib-and-musl_root-from-musl-targets.patch
-03580acc8391a7b32fb2a7880c6a924838803e8ce4771e465f24b7a09263b9b0ca7ae4fd84770c262cf25734d49ab0f838d57104b181224b901e26f25dc9d2e9 0006-Prefer-libgcc_eh-over-libunwind-for-musl.patch
-8e06768d0723aca0dd292942381255061b83505da89bc45c8c8c280dcaf3184e1b05b3744559fc3ed576f9a726bd593d892a71e8fd81bfebee62bb86d62f5531 0007-runtest-Fix-proc-macro-tests-on-musl-hosts.patch
-52138d4cc238ee44eafabfe281e3378298d510c9ffd9f123a5934f33b7e68b6fa262605c044bfce5943b18983d0145bdf33b9c168e030fee892247ef7ce4ec19 0008-test-enum-debug-Correct-minimum-LLVM-version.patch
-34be92c7ce327f488b7a933e7232890615b3d07c08a09028d712c01aa53f89025b47aaaccdc5c2e1d52948eb967b40ea2c576b29b0102feadc7153d6d9984f79 0009-test-use-extern-for-plugins-Don-t-assume-multilib.patch
-47b025edccb7e2d7c42353c3a8665714a3b5661a7d832a9bd71bf9bff75ffe7c6e90a9d55b765dadec54ce29c2539fa894801487718ac1053bd4528b413a487d 0010-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
-c32c5d807ec23f5e88f47f83220a117ff3f048cec4731e50d0cae082c971ea03993a6e4f95225046a0b06b406608ee97fb85671ad8f86e5da4970bba210388d6 0011-Ignore-broken-and-non-applicable-tests.patch
-6b089c21b3b756d5d8b3198f4a914d8a2f90216ce25d491f7caeb0a637d0f729e9e5184dfa3e07b50570df5791576d1aa4bf2a1f33183c67bc2ba6ba36c0752e 0012-Link-stage-2-tools-dynamically-to-libstd.patch
-d9568a3e21b60831b193c4a9554756d0be77d0c63d06d6c3ff1c7fd35822aaa3b2e2cf8acd29fe07eb698ebf48673245e052a6ddfa4d39bb687eea8c4c236e50 0013-Move-debugger-scripts-to-usr-share-rust.patch
-f1269241ccddf4594752b97e6856dad98ca987d2491b1bd95f6123352eec52f3acb3f17dae1c2a42be55e25db4a7e0d6bb1fb2b468cc139ad14559e0753a4c87 0014-Add-foxkit-target-specs.patch
-7197503a3bf1cdd6cb5ff3350add2682cc64f7d33f7a4b270c53321401e439de5c24ddb2f7c5a76bb3488c8b766237f674fedaa9202c480f53595d7837214f0f 0030-libc-linkage.patch
-41ab9d6f361ee2fba267c9836c1a382dc86101d1bfb59cd942be8e8fc526ad65d845c9395cba7f760808d345d107f32e75af9057d67c450b8fbdd8a73636fb2e 0040-rls-atomics.patch"
+
+sha512sums="548522599122bdff739472c1d120dcff8de171d6f4155c2fb73e47c7d80431694ceceb0439f36ef2a7bea23ac5a76de8e1f75fcade1f3ff2c3fca0ab21e6197a rustc-1.80.0-src.tar.xz
+b701f9ae32c4e62dde7ecaef40a9083f6253d83dcd3821c6ce86784fb439b11c5b908e42b4d9eff9ebe8860b3b4673c489ff8e6b4828e15df02756e4c8985c94 0001-Fix-LLVM-build.patch
+1f976da43d99ff58b7d8716e594485e191c2df43ab4c75123a223ae0cfcca0c129281575d2bee5996faf10f9008357d30c48876a491b62bdd722c83c4f3d35d2 0002-Fix-linking-to-zlib-when-cross-compiling.patch
+619a0150bdc59ef8d844e9eff907e51015003164d17012b38bcac642618efb65e25ea4b1ead06d4b023caf02d4eb8dbd481daa04b42d0002a9986f05854c0ca4 0003-Fix-rustdoc-when-cross-compiling-on-musl.patch
+cfd8cfc1a8af2a8319ae9bd4ed14b1ef22d429e99da4237ea7d037d6fa556174db6b47e9268c8c258e08b7a71d8c2370cce8445c3dd994a07e4699705f2ae2de 0004-Remove-musl_root-and-CRT-fallback-from-musl-targets.patch
+6868fe48b7424d39c94ea560037ab4154a0b8f20a027617433d912a5ec60cf0bf1a49da165009345b75f8aedf7d0f81dd23135f9bb28d3f5cd081b56aa74a986 0005-Prefer-libgcc_eh-over-libunwind-for-musl.patch
+b34187a82cd3db02b8aac8f18147d653a7191b841e145460dfbff518a7747a6aa1c08721703929bfc7e446c9ed9512383a5eefaad2cb5c02d16e8f00d12627db 0006-Link-libssp_nonshared.a-on-all-musl-targets.patch
+e13020274290c1149b7fcf3a119cc34d7f6b64abaa69d6ac9a8780569c4f44041c40b915da6e9675cc7e0ee05d42b13e14608fbab6eac6d3547428bf21f4e9f2 0007-test-failed-doctest-output-Fix-normalization.patch
+6850174cebb3dfb2f41e277b0b46db9cabe18c904f39a6775f8cd12dc6c237a7de820a5dc8c538f9b965c069b4197141f0613add096574a7df4ca2d1ae01ab4d 0008-test-sysroot-crates-are-unstable-Fix-test-when-rpath.patch
+f98ae741a9f33a0e3541c6c43a3eb86b653b202d70783435ea2cc1b35c1da8b6db796e9217e243050de05b9ea2520600c5e890481d2366a1da742aad3482fab2 0009-Ignore-broken-and-non-applicable-tests.patch
+6b68d068d7653b81590f7a0bd5359868c0ce48fa3eda467cac9dbfcead7b566ab27489ee923b024e71294130a17b1f2efc1a06a8effc93ea4a4d5a43ec8d091d 0010-Link-stage-2-tools-dynamically-to-libstd.patch
+c6d94cbb80394d270302a2389c22b528583c4ad7298c7b3f657175912e0abd075b45ec847daa2c8e6e4eb38536a8a37461cd15d78c0f83771d816f11e1cf2e01 0011-Move-debugger-scripts-to-usr-share-rust.patch
+690d12d2b983f82fadad1ff661887852227871787d8b4f5dff7de96ac94dbb7d64887e19258fa146e8cf1e6356cffa6e5954739e9e133165e8d2c970c6f47a84 0012-Add-foxkit-target-specs.patch
+e8561c9ceadf121239ad13496e4baeca6a93e29bb99bc2d37d9e1919caaf0e2456219a0e3d3cd88af281b2b9d23c735597f1ee05cc99daa690961397aa28efa6 mir-opt-tests-endianness.patch
+5d57a7a18e0a7f8b7755de89255f97642e4fe585a02465de70227867ac99db84766cd25e702ae13c3a4488504bd4c84eb7e9ceb3a83fdf8f2df0eacf64cc16c1 powerpc-atomics.patch
+4d21e0e04768e19f1d93ee54d787ed1c4c6fe1e7cab91c92413caa22765f96843f9d98ccb014210d893b3a6bb3246b6fba60b8d6d8a832fedbeff50803225b81 ppc64-abi.patch
+63592425a6f68046b75148a25289ff1b8b6a7db02ca0aa7c97d35697f18267a6adeb8be3136c8fd930704352d5528e70b0d57f79bac39b9331953174f76d5919 stdarch-ppc.patch
+07591c0b6731349093aee868723ab526391a6dda946e9dd442428d878e3d5f23223277778ea71860f0101cac23f47e7973f36d4fd88cf5d3e3ad95e9d6b07b27 test-be.patch
+c1cdcff68504e5b7b9d5f3081c83c8d8855d9523cc3539bd727f3dc78b7db70b4ce40c76852dd62fc50423128faf86ed8af1c65f7955134af85bc494dd376001 ui-test-strings.patch"
diff --git a/user/rust/mir-opt-tests-endianness.patch b/user/rust/mir-opt-tests-endianness.patch
new file mode 100644
index 000000000..e6972ebe9
--- /dev/null
+++ b/user/rust/mir-opt-tests-endianness.patch
@@ -0,0 +1,1564 @@
+Upstream: https://github.com/rust-lang/rust/pull/126502
+
+From 31851d4770774ac95a694f2596138fc43fcd39b4 Mon Sep 17 00:00:00 2001
+From: Josh Stone <jistone@redhat.com>
+Date: Fri, 14 Jun 2024 15:49:45 -0700
+Subject: [PATCH 1/3] Add `-Zdump-mir-exclude-alloc-bytes`
+
+---
+ compiler/rustc_interface/src/tests.rs | 1 +
+ compiler/rustc_middle/src/mir/pretty.rs | 3 +++
+ compiler/rustc_session/src/options.rs | 2 ++
+ 3 files changed, 6 insertions(+)
+
+diff --git a/compiler/rustc_interface/src/tests.rs b/compiler/rustc_interface/src/tests.rs
+index 6ffc518097ef0..619b125a8780d 100644
+--- a/compiler/rustc_interface/src/tests.rs
++++ b/compiler/rustc_interface/src/tests.rs
+@@ -683,6 +683,7 @@ fn test_unstable_options_tracking_hash() {
+ untracked!(dump_mir, Some(String::from("abc")));
+ untracked!(dump_mir_dataflow, true);
+ untracked!(dump_mir_dir, String::from("abc"));
++ untracked!(dump_mir_exclude_alloc_bytes, true);
+ untracked!(dump_mir_exclude_pass_number, true);
+ untracked!(dump_mir_graphviz, true);
+ untracked!(dump_mono_stats, SwitchWithOptPath::Enabled(Some("mono-items-dir/".into())));
+diff --git a/compiler/rustc_middle/src/mir/pretty.rs b/compiler/rustc_middle/src/mir/pretty.rs
+index 4657f4dcf8132..3ea98de1a177d 100644
+--- a/compiler/rustc_middle/src/mir/pretty.rs
++++ b/compiler/rustc_middle/src/mir/pretty.rs
+@@ -1521,6 +1521,9 @@ impl<'a, 'tcx, Prov: Provenance, Extra, Bytes: AllocBytes> std::fmt::Display
+ // We are done.
+ return write!(w, " {{}}");
+ }
++ if tcx.sess.opts.unstable_opts.dump_mir_exclude_alloc_bytes {
++ return write!(w, " {{ .. }}");
++ }
+ // Write allocation bytes.
+ writeln!(w, " {{")?;
+ write_allocation_bytes(tcx, alloc, w, " ")?;
+diff --git a/compiler/rustc_session/src/options.rs b/compiler/rustc_session/src/options.rs
+index 9a10adeb6d1a1..a3f1369776de4 100644
+--- a/compiler/rustc_session/src/options.rs
++++ b/compiler/rustc_session/src/options.rs
+@@ -1647,6 +1647,8 @@ options! {
+ (default: no)"),
+ dump_mir_dir: String = ("mir_dump".to_string(), parse_string, [UNTRACKED],
+ "the directory the MIR is dumped into (default: `mir_dump`)"),
++ dump_mir_exclude_alloc_bytes: bool = (false, parse_bool, [UNTRACKED],
++ "exclude the raw bytes of allocations when dumping MIR (used in tests) (default: no)"),
+ dump_mir_exclude_pass_number: bool = (false, parse_bool, [UNTRACKED],
+ "exclude the pass number when dumping MIR (used in tests) (default: no)"),
+ dump_mir_graphviz: bool = (false, parse_bool, [UNTRACKED],
+
+From 1a05cb2d9358879468c87645b0c1d5d1e8e12a12 Mon Sep 17 00:00:00 2001
+From: Josh Stone <jistone@redhat.com>
+Date: Fri, 14 Jun 2024 16:01:26 -0700
+Subject: [PATCH 2/3] Use `-Zdump-mir-exclude-alloc-bytes` in some mir-opt
+ tests
+
+---
+ tests/mir-opt/const_debuginfo.rs | 2 +-
+ tests/mir-opt/const_prop/address_of_pair.rs | 1 +
+ tests/mir-opt/const_prop/checked_add.rs | 2 +-
+ tests/mir-opt/const_prop/mutable_variable_aggregate.rs | 1 +
+ tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.rs | 1 +
+ tests/mir-opt/const_prop/mutable_variable_unprop_assign.rs | 1 +
+ tests/mir-opt/const_prop/return_place.rs | 2 +-
+ tests/mir-opt/const_prop/slice_len.rs | 2 +-
+ tests/mir-opt/const_prop/tuple_literal_propagation.rs | 1 +
+ tests/mir-opt/dataflow-const-prop/checked.rs | 2 +-
+ tests/mir-opt/dataflow-const-prop/default_boxed_slice.rs | 2 +-
+ tests/mir-opt/dataflow-const-prop/enum.rs | 1 +
+ tests/mir-opt/dataflow-const-prop/struct.rs | 1 +
+ tests/mir-opt/dataflow-const-prop/tuple.rs | 1 +
+ tests/mir-opt/enum_opt.rs | 2 +-
+ tests/mir-opt/gvn.rs | 1 +
+ tests/mir-opt/pre-codegen/optimizes_into_variable.rs | 2 +-
+ 17 files changed, 17 insertions(+), 8 deletions(-)
+
+diff --git a/tests/mir-opt/const_debuginfo.rs b/tests/mir-opt/const_debuginfo.rs
+index 907d7fef06746..3b2bc4559ced9 100644
+--- a/tests/mir-opt/const_debuginfo.rs
++++ b/tests/mir-opt/const_debuginfo.rs
+@@ -1,5 +1,5 @@
+ //@ test-mir-pass: ConstDebugInfo
+-//@ compile-flags: -C overflow-checks=no -Zmir-enable-passes=+GVN
++//@ compile-flags: -C overflow-checks=no -Zmir-enable-passes=+GVN -Zdump-mir-exclude-alloc-bytes
+
+ struct Point {
+ x: u32,
+diff --git a/tests/mir-opt/const_prop/address_of_pair.rs b/tests/mir-opt/const_prop/address_of_pair.rs
+index 6d0c0f8ad52a7..9acaaa0ccaf9d 100644
+--- a/tests/mir-opt/const_prop/address_of_pair.rs
++++ b/tests/mir-opt/const_prop/address_of_pair.rs
+@@ -1,4 +1,5 @@
+ //@ test-mir-pass: GVN
++//@ compile-flags: -Zdump-mir-exclude-alloc-bytes
+
+ // EMIT_MIR address_of_pair.fn0.GVN.diff
+ pub fn fn0() -> bool {
+diff --git a/tests/mir-opt/const_prop/checked_add.rs b/tests/mir-opt/const_prop/checked_add.rs
+index 0560b04957311..d450f7d03f38c 100644
+--- a/tests/mir-opt/const_prop/checked_add.rs
++++ b/tests/mir-opt/const_prop/checked_add.rs
+@@ -1,6 +1,6 @@
+ // EMIT_MIR_FOR_EACH_PANIC_STRATEGY
+ //@ test-mir-pass: GVN
+-//@ compile-flags: -C overflow-checks=on
++//@ compile-flags: -C overflow-checks=on -Zdump-mir-exclude-alloc-bytes
+
+ // EMIT_MIR checked_add.main.GVN.diff
+ fn main() {
+diff --git a/tests/mir-opt/const_prop/mutable_variable_aggregate.rs b/tests/mir-opt/const_prop/mutable_variable_aggregate.rs
+index 7de647ed9c37f..80cd75215c1b7 100644
+--- a/tests/mir-opt/const_prop/mutable_variable_aggregate.rs
++++ b/tests/mir-opt/const_prop/mutable_variable_aggregate.rs
+@@ -1,4 +1,5 @@
+ //@ test-mir-pass: GVN
++//@ compile-flags: -Zdump-mir-exclude-alloc-bytes
+
+ // EMIT_MIR mutable_variable_aggregate.main.GVN.diff
+ fn main() {
+diff --git a/tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.rs b/tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.rs
+index 5656c0e7a6863..856afd53ab46b 100644
+--- a/tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.rs
++++ b/tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.rs
+@@ -1,4 +1,5 @@
+ //@ test-mir-pass: GVN
++//@ compile-flags: -Zdump-mir-exclude-alloc-bytes
+
+ // EMIT_MIR mutable_variable_aggregate_mut_ref.main.GVN.diff
+ fn main() {
+diff --git a/tests/mir-opt/const_prop/mutable_variable_unprop_assign.rs b/tests/mir-opt/const_prop/mutable_variable_unprop_assign.rs
+index cc92949128f72..2c6cc0db6b211 100644
+--- a/tests/mir-opt/const_prop/mutable_variable_unprop_assign.rs
++++ b/tests/mir-opt/const_prop/mutable_variable_unprop_assign.rs
+@@ -1,5 +1,6 @@
+ // EMIT_MIR_FOR_EACH_PANIC_STRATEGY
+ //@ test-mir-pass: GVN
++//@ compile-flags: -Zdump-mir-exclude-alloc-bytes
+
+ // EMIT_MIR mutable_variable_unprop_assign.main.GVN.diff
+ fn main() {
+diff --git a/tests/mir-opt/const_prop/return_place.rs b/tests/mir-opt/const_prop/return_place.rs
+index e7eea11ae492f..c5293aa73e55b 100644
+--- a/tests/mir-opt/const_prop/return_place.rs
++++ b/tests/mir-opt/const_prop/return_place.rs
+@@ -1,6 +1,6 @@
+ //@ test-mir-pass: GVN
+ // EMIT_MIR_FOR_EACH_PANIC_STRATEGY
+-//@ compile-flags: -C overflow-checks=on
++//@ compile-flags: -C overflow-checks=on -Zdump-mir-exclude-alloc-bytes
+
+ // EMIT_MIR return_place.add.GVN.diff
+ // EMIT_MIR return_place.add.PreCodegen.before.mir
+diff --git a/tests/mir-opt/const_prop/slice_len.rs b/tests/mir-opt/const_prop/slice_len.rs
+index 63cdbf01b3e82..265a496f39a36 100644
+--- a/tests/mir-opt/const_prop/slice_len.rs
++++ b/tests/mir-opt/const_prop/slice_len.rs
+@@ -1,5 +1,5 @@
+ //@ test-mir-pass: GVN
+-//@ compile-flags: -Zmir-enable-passes=+InstSimplify
++//@ compile-flags: -Zmir-enable-passes=+InstSimplify -Zdump-mir-exclude-alloc-bytes
+ // EMIT_MIR_FOR_EACH_PANIC_STRATEGY
+ // EMIT_MIR_FOR_EACH_BIT_WIDTH
+
+diff --git a/tests/mir-opt/const_prop/tuple_literal_propagation.rs b/tests/mir-opt/const_prop/tuple_literal_propagation.rs
+index e42a62cb6fdf3..baed5670dda81 100644
+--- a/tests/mir-opt/const_prop/tuple_literal_propagation.rs
++++ b/tests/mir-opt/const_prop/tuple_literal_propagation.rs
+@@ -1,4 +1,5 @@
+ //@ test-mir-pass: GVN
++//@ compile-flags: -Zdump-mir-exclude-alloc-bytes
+ // EMIT_MIR_FOR_EACH_PANIC_STRATEGY
+ // EMIT_MIR tuple_literal_propagation.main.GVN.diff
+
+diff --git a/tests/mir-opt/dataflow-const-prop/checked.rs b/tests/mir-opt/dataflow-const-prop/checked.rs
+index a73693464f95b..f5a6cdb2c8d35 100644
+--- a/tests/mir-opt/dataflow-const-prop/checked.rs
++++ b/tests/mir-opt/dataflow-const-prop/checked.rs
+@@ -1,5 +1,5 @@
+ //@ test-mir-pass: DataflowConstProp
+-//@ compile-flags: -Coverflow-checks=on
++//@ compile-flags: -Coverflow-checks=on -Zdump-mir-exclude-alloc-bytes
+ // EMIT_MIR_FOR_EACH_PANIC_STRATEGY
+
+ // EMIT_MIR checked.main.DataflowConstProp.diff
+diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.rs b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.rs
+index 3a0cbac328cb5..087bd7a18572c 100644
+--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.rs
++++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.rs
+@@ -1,5 +1,5 @@
+ //@ test-mir-pass: DataflowConstProp
+-//@ compile-flags: -Zmir-enable-passes=+GVN,+Inline
++//@ compile-flags: -Zmir-enable-passes=+GVN,+Inline -Zdump-mir-exclude-alloc-bytes
+ // EMIT_MIR_FOR_EACH_BIT_WIDTH
+ // EMIT_MIR_FOR_EACH_PANIC_STRATEGY
+
+diff --git a/tests/mir-opt/dataflow-const-prop/enum.rs b/tests/mir-opt/dataflow-const-prop/enum.rs
+index 946cfa4c76c02..37304e3a270e9 100644
+--- a/tests/mir-opt/dataflow-const-prop/enum.rs
++++ b/tests/mir-opt/dataflow-const-prop/enum.rs
+@@ -1,4 +1,5 @@
+ //@ test-mir-pass: DataflowConstProp
++//@ compile-flags: -Zdump-mir-exclude-alloc-bytes
+ // EMIT_MIR_FOR_EACH_BIT_WIDTH
+
+ #![feature(custom_mir, core_intrinsics, rustc_attrs)]
+diff --git a/tests/mir-opt/dataflow-const-prop/struct.rs b/tests/mir-opt/dataflow-const-prop/struct.rs
+index eed782c9036b2..4b160c3dab7e8 100644
+--- a/tests/mir-opt/dataflow-const-prop/struct.rs
++++ b/tests/mir-opt/dataflow-const-prop/struct.rs
+@@ -1,4 +1,5 @@
+ //@ test-mir-pass: DataflowConstProp
++//@ compile-flags: -Zdump-mir-exclude-alloc-bytes
+ // EMIT_MIR_FOR_EACH_BIT_WIDTH
+
+ #[derive(Copy, Clone)]
+diff --git a/tests/mir-opt/dataflow-const-prop/tuple.rs b/tests/mir-opt/dataflow-const-prop/tuple.rs
+index d624e21f21ac4..19b675770abe9 100644
+--- a/tests/mir-opt/dataflow-const-prop/tuple.rs
++++ b/tests/mir-opt/dataflow-const-prop/tuple.rs
+@@ -1,4 +1,5 @@
+ //@ test-mir-pass: DataflowConstProp
++//@ compile-flags: -Zdump-mir-exclude-alloc-bytes
+ // EMIT_MIR_FOR_EACH_BIT_WIDTH
+
+ // EMIT_MIR tuple.main.DataflowConstProp.diff
+diff --git a/tests/mir-opt/enum_opt.rs b/tests/mir-opt/enum_opt.rs
+index 2cc5df84d6b59..e42be8ac06dc9 100644
+--- a/tests/mir-opt/enum_opt.rs
++++ b/tests/mir-opt/enum_opt.rs
+@@ -1,7 +1,7 @@
+ // skip-filecheck
+ //@ test-mir-pass: EnumSizeOpt
+ // EMIT_MIR_FOR_EACH_BIT_WIDTH
+-//@ compile-flags: -Zunsound-mir-opts
++//@ compile-flags: -Zunsound-mir-opts -Zdump-mir-exclude-alloc-bytes
+
+ #![feature(arbitrary_enum_discriminant, repr128)]
+
+diff --git a/tests/mir-opt/gvn.rs b/tests/mir-opt/gvn.rs
+index 86f42d23f3835..29f28e7af4145 100644
+--- a/tests/mir-opt/gvn.rs
++++ b/tests/mir-opt/gvn.rs
+@@ -1,4 +1,5 @@
+ //@ test-mir-pass: GVN
++//@ compile-flags: -Zdump-mir-exclude-alloc-bytes
+ // EMIT_MIR_FOR_EACH_PANIC_STRATEGY
+ //@ only-64bit
+
+diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.rs b/tests/mir-opt/pre-codegen/optimizes_into_variable.rs
+index de5e2d5c3121b..44b4b0ad888a5 100644
+--- a/tests/mir-opt/pre-codegen/optimizes_into_variable.rs
++++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.rs
+@@ -1,6 +1,6 @@
+ // skip-filecheck
+ // EMIT_MIR_FOR_EACH_PANIC_STRATEGY
+-//@ compile-flags: -C overflow-checks=on
++//@ compile-flags: -C overflow-checks=on -Zdump-mir-exclude-alloc-bytes
+
+ struct Point {
+ x: u32,
+
+From 7c3673ff6f2ff4e8e85344c091c9feb4b5da1290 Mon Sep 17 00:00:00 2001
+From: Josh Stone <jistone@redhat.com>
+Date: Fri, 14 Jun 2024 16:05:22 -0700
+Subject: [PATCH 3/3] Bless mir-opt for excluded alloc bytes
+
+---
+ .../const_debuginfo.main.ConstDebugInfo.diff | 8 +--
+ .../const_prop/address_of_pair.fn0.GVN.diff | 6 +-
+ .../checked_add.main.GVN.panic-abort.diff | 6 +-
+ .../checked_add.main.GVN.panic-unwind.diff | 6 +-
+ .../mutable_variable_aggregate.main.GVN.diff | 6 +-
+ ...e_variable_aggregate_mut_ref.main.GVN.diff | 6 +-
+ ...le_unprop_assign.main.GVN.panic-abort.diff | 6 +-
+ ...e_unprop_assign.main.GVN.panic-unwind.diff | 6 +-
+ .../return_place.add.GVN.panic-abort.diff | 6 +-
+ .../return_place.add.GVN.panic-unwind.diff | 6 +-
+ ...lace.add.PreCodegen.before.panic-abort.mir | 4 +-
+ ...ace.add.PreCodegen.before.panic-unwind.mir | 4 +-
+ .../slice_len.main.GVN.32bit.panic-abort.diff | 6 +-
+ ...slice_len.main.GVN.32bit.panic-unwind.diff | 6 +-
+ .../slice_len.main.GVN.64bit.panic-abort.diff | 6 +-
+ ...slice_len.main.GVN.64bit.panic-unwind.diff | 6 +-
+ ...eral_propagation.main.GVN.panic-abort.diff | 6 +-
+ ...ral_propagation.main.GVN.panic-unwind.diff | 6 +-
+ ...ed.main.DataflowConstProp.panic-abort.diff | 10 +---
+ ...d.main.DataflowConstProp.panic-unwind.diff | 10 +---
+ ...n.DataflowConstProp.32bit.panic-abort.diff | 12 +---
+ ....DataflowConstProp.32bit.panic-unwind.diff | 12 +---
+ ...n.DataflowConstProp.64bit.panic-abort.diff | 12 +---
+ ....DataflowConstProp.64bit.panic-unwind.diff | 12 +---
+ ...oxed_slice.main.GVN.32bit.panic-abort.diff | 14 ++---
+ ...xed_slice.main.GVN.32bit.panic-unwind.diff | 14 ++---
+ ...oxed_slice.main.GVN.64bit.panic-abort.diff | 14 ++---
+ ...xed_slice.main.GVN.64bit.panic-unwind.diff | 14 ++---
+ .../enum.simple.DataflowConstProp.32bit.diff | 6 +-
+ .../enum.simple.DataflowConstProp.64bit.diff | 6 +-
+ .../enum.statics.DataflowConstProp.32bit.diff | 23 +++-----
+ .../enum.statics.DataflowConstProp.64bit.diff | 23 +++-----
+ .../struct.main.DataflowConstProp.32bit.diff | 58 ++++++-------------
+ .../struct.main.DataflowConstProp.64bit.diff | 58 ++++++-------------
+ .../tuple.main.DataflowConstProp.32bit.diff | 18 ++----
+ .../tuple.main.DataflowConstProp.64bit.diff | 18 ++----
+ .../enum_opt.cand.EnumSizeOpt.32bit.diff | 6 +-
+ .../enum_opt.cand.EnumSizeOpt.64bit.diff | 6 +-
+ .../enum_opt.unin.EnumSizeOpt.32bit.diff | 6 +-
+ .../enum_opt.unin.EnumSizeOpt.64bit.diff | 6 +-
+ ...vn.arithmetic_checked.GVN.panic-abort.diff | 6 +-
+ ...n.arithmetic_checked.GVN.panic-unwind.diff | 6 +-
+ .../gvn.fn_pointers.GVN.panic-abort.diff | 18 +++---
+ .../gvn.fn_pointers.GVN.panic-unwind.diff | 18 +++---
+ .../gvn.indirect_static.GVN.panic-abort.diff | 4 +-
+ .../gvn.indirect_static.GVN.panic-unwind.diff | 4 +-
+ .../gvn.wide_ptr_integer.GVN.panic-abort.diff | 10 +---
+ ...gvn.wide_ptr_integer.GVN.panic-unwind.diff | 10 +---
+ ...o_variable.main.GVN.32bit.panic-abort.diff | 6 +-
+ ..._variable.main.GVN.32bit.panic-unwind.diff | 6 +-
+ ...o_variable.main.GVN.64bit.panic-abort.diff | 6 +-
+ ..._variable.main.GVN.64bit.panic-unwind.diff | 6 +-
+ 52 files changed, 182 insertions(+), 382 deletions(-)
+
+diff --git a/tests/mir-opt/const_debuginfo.main.ConstDebugInfo.diff b/tests/mir-opt/const_debuginfo.main.ConstDebugInfo.diff
+index ac33f51984cd8..8088984bc77ab 100644
+--- a/tests/mir-opt/const_debuginfo.main.ConstDebugInfo.diff
++++ b/tests/mir-opt/const_debuginfo.main.ConstDebugInfo.diff
+@@ -105,11 +105,7 @@
+ }
+ }
+
+- ALLOC0 (size: 8, align: 4) {
+- 20 00 00 00 20 00 00 00 │ ... ...
+- }
++ ALLOC0 (size: 8, align: 4) { .. }
+
+- ALLOC1 (size: 4, align: 2) {
+- 01 00 63 00 │ ..c.
+- }
++ ALLOC1 (size: 4, align: 2) { .. }
+
+diff --git a/tests/mir-opt/const_prop/address_of_pair.fn0.GVN.diff b/tests/mir-opt/const_prop/address_of_pair.fn0.GVN.diff
+index 3f4958f60e85b..ac372f837268b 100644
+--- a/tests/mir-opt/const_prop/address_of_pair.fn0.GVN.diff
++++ b/tests/mir-opt/const_prop/address_of_pair.fn0.GVN.diff
+@@ -44,9 +44,7 @@
+ StorageDead(_2);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 01 00 00 00 00 __ __ __ │ .....░░░
+ }
+++
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/const_prop/checked_add.main.GVN.panic-abort.diff b/tests/mir-opt/const_prop/checked_add.main.GVN.panic-abort.diff
+index 0e93c167ebc96..798f957caa58c 100644
+--- a/tests/mir-opt/const_prop/checked_add.main.GVN.panic-abort.diff
++++ b/tests/mir-opt/const_prop/checked_add.main.GVN.panic-abort.diff
+@@ -24,9 +24,7 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 02 00 00 00 00 __ __ __ │ .....░░░
+ }
+++
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/const_prop/checked_add.main.GVN.panic-unwind.diff b/tests/mir-opt/const_prop/checked_add.main.GVN.panic-unwind.diff
+index 589eed5776c9f..a09f8ee5be12a 100644
+--- a/tests/mir-opt/const_prop/checked_add.main.GVN.panic-unwind.diff
++++ b/tests/mir-opt/const_prop/checked_add.main.GVN.panic-unwind.diff
+@@ -24,9 +24,7 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 02 00 00 00 00 __ __ __ │ .....░░░
+ }
+++
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/const_prop/mutable_variable_aggregate.main.GVN.diff b/tests/mir-opt/const_prop/mutable_variable_aggregate.main.GVN.diff
+index b6ff7b0fc234d..7584353620ec5 100644
+--- a/tests/mir-opt/const_prop/mutable_variable_aggregate.main.GVN.diff
++++ b/tests/mir-opt/const_prop/mutable_variable_aggregate.main.GVN.diff
+@@ -24,9 +24,7 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 2a 00 00 00 2b 00 00 00 │ *...+...
+ }
+++
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.main.GVN.diff b/tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.main.GVN.diff
+index 4ed7c98514796..e16e2969eb895 100644
+--- a/tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.main.GVN.diff
++++ b/tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.main.GVN.diff
+@@ -31,9 +31,7 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 2a 00 00 00 2b 00 00 00 │ *...+...
+ }
+++
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.GVN.panic-abort.diff b/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.GVN.panic-abort.diff
+index d1d23675bfd91..19d79694666f2 100644
+--- a/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.GVN.panic-abort.diff
++++ b/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.GVN.panic-abort.diff
+@@ -48,9 +48,7 @@
+ + nop;
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 01 00 00 00 02 00 00 00 │ ........
+ }
+++
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.GVN.panic-unwind.diff b/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.GVN.panic-unwind.diff
+index 4d69c9ce2efe6..2bb277bf27f7f 100644
+--- a/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.GVN.panic-unwind.diff
++++ b/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.GVN.panic-unwind.diff
+@@ -48,9 +48,7 @@
+ + nop;
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 01 00 00 00 02 00 00 00 │ ........
+ }
+++
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/const_prop/return_place.add.GVN.panic-abort.diff b/tests/mir-opt/const_prop/return_place.add.GVN.panic-abort.diff
+index b2d40daa80c4c..037fe60c2fdb3 100644
+--- a/tests/mir-opt/const_prop/return_place.add.GVN.panic-abort.diff
++++ b/tests/mir-opt/const_prop/return_place.add.GVN.panic-abort.diff
+@@ -17,9 +17,7 @@
+ + _0 = const 4_u32;
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 04 00 00 00 00 __ __ __ │ .....░░░
+ }
+++
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/const_prop/return_place.add.GVN.panic-unwind.diff b/tests/mir-opt/const_prop/return_place.add.GVN.panic-unwind.diff
+index 2eafc51cd3db6..438a1cebea8cb 100644
+--- a/tests/mir-opt/const_prop/return_place.add.GVN.panic-unwind.diff
++++ b/tests/mir-opt/const_prop/return_place.add.GVN.panic-unwind.diff
+@@ -17,9 +17,7 @@
+ + _0 = const 4_u32;
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 04 00 00 00 00 __ __ __ │ .....░░░
+ }
+++
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/const_prop/return_place.add.PreCodegen.before.panic-abort.mir b/tests/mir-opt/const_prop/return_place.add.PreCodegen.before.panic-abort.mir
+index f87c26bb004c6..66fd61cc3aee9 100644
+--- a/tests/mir-opt/const_prop/return_place.add.PreCodegen.before.panic-abort.mir
++++ b/tests/mir-opt/const_prop/return_place.add.PreCodegen.before.panic-abort.mir
+@@ -15,6 +15,4 @@ fn add() -> u32 {
+ }
+ }
+
+-ALLOC0 (size: 8, align: 4) {
+- 04 00 00 00 00 __ __ __ │ .....░░░
+-}
++ALLOC0 (size: 8, align: 4) { .. }
+diff --git a/tests/mir-opt/const_prop/return_place.add.PreCodegen.before.panic-unwind.mir b/tests/mir-opt/const_prop/return_place.add.PreCodegen.before.panic-unwind.mir
+index 33f97591387c3..f9b07a59de9c3 100644
+--- a/tests/mir-opt/const_prop/return_place.add.PreCodegen.before.panic-unwind.mir
++++ b/tests/mir-opt/const_prop/return_place.add.PreCodegen.before.panic-unwind.mir
+@@ -15,6 +15,4 @@ fn add() -> u32 {
+ }
+ }
+
+-ALLOC0 (size: 8, align: 4) {
+- 04 00 00 00 00 __ __ __ │ .....░░░
+-}
++ALLOC0 (size: 8, align: 4) { .. }
+diff --git a/tests/mir-opt/const_prop/slice_len.main.GVN.32bit.panic-abort.diff b/tests/mir-opt/const_prop/slice_len.main.GVN.32bit.panic-abort.diff
+index ef298dddd5a49..8415789de6ecd 100644
+--- a/tests/mir-opt/const_prop/slice_len.main.GVN.32bit.panic-abort.diff
++++ b/tests/mir-opt/const_prop/slice_len.main.GVN.32bit.panic-abort.diff
+@@ -49,9 +49,7 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 12, align: 4) {
+-+ 01 00 00 00 02 00 00 00 03 00 00 00 │ ............
+ }
+++
+++ ALLOC0 (size: 12, align: 4) { .. }
+
+diff --git a/tests/mir-opt/const_prop/slice_len.main.GVN.32bit.panic-unwind.diff b/tests/mir-opt/const_prop/slice_len.main.GVN.32bit.panic-unwind.diff
+index 5379df3f60b44..fea7caac3cdce 100644
+--- a/tests/mir-opt/const_prop/slice_len.main.GVN.32bit.panic-unwind.diff
++++ b/tests/mir-opt/const_prop/slice_len.main.GVN.32bit.panic-unwind.diff
+@@ -49,9 +49,7 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 12, align: 4) {
+-+ 01 00 00 00 02 00 00 00 03 00 00 00 │ ............
+ }
+++
+++ ALLOC0 (size: 12, align: 4) { .. }
+
+diff --git a/tests/mir-opt/const_prop/slice_len.main.GVN.64bit.panic-abort.diff b/tests/mir-opt/const_prop/slice_len.main.GVN.64bit.panic-abort.diff
+index ef298dddd5a49..8415789de6ecd 100644
+--- a/tests/mir-opt/const_prop/slice_len.main.GVN.64bit.panic-abort.diff
++++ b/tests/mir-opt/const_prop/slice_len.main.GVN.64bit.panic-abort.diff
+@@ -49,9 +49,7 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 12, align: 4) {
+-+ 01 00 00 00 02 00 00 00 03 00 00 00 │ ............
+ }
+++
+++ ALLOC0 (size: 12, align: 4) { .. }
+
+diff --git a/tests/mir-opt/const_prop/slice_len.main.GVN.64bit.panic-unwind.diff b/tests/mir-opt/const_prop/slice_len.main.GVN.64bit.panic-unwind.diff
+index 5379df3f60b44..fea7caac3cdce 100644
+--- a/tests/mir-opt/const_prop/slice_len.main.GVN.64bit.panic-unwind.diff
++++ b/tests/mir-opt/const_prop/slice_len.main.GVN.64bit.panic-unwind.diff
+@@ -49,9 +49,7 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 12, align: 4) {
+-+ 01 00 00 00 02 00 00 00 03 00 00 00 │ ............
+ }
+++
+++ ALLOC0 (size: 12, align: 4) { .. }
+
+diff --git a/tests/mir-opt/const_prop/tuple_literal_propagation.main.GVN.panic-abort.diff b/tests/mir-opt/const_prop/tuple_literal_propagation.main.GVN.panic-abort.diff
+index c2f3fb1b3b575..bf8fece3d37b9 100644
+--- a/tests/mir-opt/const_prop/tuple_literal_propagation.main.GVN.panic-abort.diff
++++ b/tests/mir-opt/const_prop/tuple_literal_propagation.main.GVN.panic-abort.diff
+@@ -31,9 +31,7 @@
+ + nop;
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 01 00 00 00 02 00 00 00 │ ........
+ }
+++
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/const_prop/tuple_literal_propagation.main.GVN.panic-unwind.diff b/tests/mir-opt/const_prop/tuple_literal_propagation.main.GVN.panic-unwind.diff
+index 55d9a3b0cac67..02a75849d8872 100644
+--- a/tests/mir-opt/const_prop/tuple_literal_propagation.main.GVN.panic-unwind.diff
++++ b/tests/mir-opt/const_prop/tuple_literal_propagation.main.GVN.panic-unwind.diff
+@@ -31,9 +31,7 @@
+ + nop;
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 01 00 00 00 02 00 00 00 │ ........
+ }
+++
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-abort.diff
+index 53663c6476bdc..79ea55617481e 100644
+--- a/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-abort.diff
++++ b/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-abort.diff
+@@ -76,13 +76,9 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
++ }
+ +
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 00 00 00 80 01 __ __ __ │ .....░░░
+-+ }
+++ ALLOC0 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC1 (size: 8, align: 4) {
+-+ 03 00 00 00 00 __ __ __ │ .....░░░
+- }
+++ ALLOC1 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-unwind.diff
+index 34feb2a640629..bd22c50dd8fcf 100644
+--- a/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-unwind.diff
++++ b/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-unwind.diff
+@@ -76,13 +76,9 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
++ }
+ +
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 00 00 00 80 01 __ __ __ │ .....░░░
+-+ }
+++ ALLOC0 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC1 (size: 8, align: 4) {
+-+ 03 00 00 00 00 __ __ __ │ .....░░░
+- }
+++ ALLOC1 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.32bit.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.32bit.panic-abort.diff
+index 8005bc23cf699..4097e060f4d47 100644
+--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.32bit.panic-abort.diff
++++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.32bit.panic-abort.diff
+@@ -94,15 +94,9 @@
+ }
+ }
+
+- ALLOC2 (size: 8, align: 4) {
+- 01 00 00 00 00 00 00 00 │ ........
+- }
++ ALLOC2 (size: 8, align: 4) { .. }
+
+- ALLOC1 (size: 8, align: 4) {
+- 01 00 00 00 00 00 00 00 │ ........
+- }
++ ALLOC1 (size: 8, align: 4) { .. }
+
+- ALLOC0 (size: 8, align: 4) {
+- 01 00 00 00 00 00 00 00 │ ........
+- }
++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.32bit.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.32bit.panic-unwind.diff
+index 42b1be32387c4..ff44d0df5e3e9 100644
+--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.32bit.panic-unwind.diff
++++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.32bit.panic-unwind.diff
+@@ -98,15 +98,9 @@
+ }
+ }
+
+- ALLOC2 (size: 8, align: 4) {
+- 01 00 00 00 00 00 00 00 │ ........
+- }
++ ALLOC2 (size: 8, align: 4) { .. }
+
+- ALLOC1 (size: 8, align: 4) {
+- 01 00 00 00 00 00 00 00 │ ........
+- }
++ ALLOC1 (size: 8, align: 4) { .. }
+
+- ALLOC0 (size: 8, align: 4) {
+- 01 00 00 00 00 00 00 00 │ ........
+- }
++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.64bit.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.64bit.panic-abort.diff
+index 7b57b0db50c94..3662c3b59d271 100644
+--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.64bit.panic-abort.diff
++++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.64bit.panic-abort.diff
+@@ -94,15 +94,9 @@
+ }
+ }
+
+- ALLOC2 (size: 16, align: 8) {
+- 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ ................
+- }
++ ALLOC2 (size: 16, align: 8) { .. }
+
+- ALLOC1 (size: 16, align: 8) {
+- 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ ................
+- }
++ ALLOC1 (size: 16, align: 8) { .. }
+
+- ALLOC0 (size: 16, align: 8) {
+- 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ ................
+- }
++ ALLOC0 (size: 16, align: 8) { .. }
+
+diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.64bit.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.64bit.panic-unwind.diff
+index 2e75a63e29052..68dee57dee9e0 100644
+--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.64bit.panic-unwind.diff
++++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.DataflowConstProp.64bit.panic-unwind.diff
+@@ -98,15 +98,9 @@
+ }
+ }
+
+- ALLOC2 (size: 16, align: 8) {
+- 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ ................
+- }
++ ALLOC2 (size: 16, align: 8) { .. }
+
+- ALLOC1 (size: 16, align: 8) {
+- 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ ................
+- }
++ ALLOC1 (size: 16, align: 8) { .. }
+
+- ALLOC0 (size: 16, align: 8) {
+- 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ ................
+- }
++ ALLOC0 (size: 16, align: 8) { .. }
+
+diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-abort.diff
+index 06011f9d75967..9d96e895c8aa5 100644
+--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-abort.diff
++++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-abort.diff
+@@ -102,17 +102,11 @@
+ _0 = const ();
+ drop(_1) -> [return: bb1, unwind unreachable];
+ }
+-+ }
++ }
+ +
+-+ ALLOC2 (size: 8, align: 4) {
+-+ 01 00 00 00 00 00 00 00 │ ........
+-+ }
+++ ALLOC2 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC1 (size: 8, align: 4) {
+-+ 01 00 00 00 00 00 00 00 │ ........
+-+ }
+++ ALLOC1 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 01 00 00 00 00 00 00 00 │ ........
+- }
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-unwind.diff
+index eb4a3ffd91d2e..0bdff584b01ec 100644
+--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-unwind.diff
++++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-unwind.diff
+@@ -106,17 +106,11 @@
+ _0 = const ();
+ drop(_1) -> [return: bb1, unwind: bb2];
+ }
+-+ }
++ }
+ +
+-+ ALLOC2 (size: 8, align: 4) {
+-+ 01 00 00 00 00 00 00 00 │ ........
+-+ }
+++ ALLOC2 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC1 (size: 8, align: 4) {
+-+ 01 00 00 00 00 00 00 00 │ ........
+-+ }
+++ ALLOC1 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 01 00 00 00 00 00 00 00 │ ........
+- }
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-abort.diff
+index a7cc243e548e9..99e96fe5d70fd 100644
+--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-abort.diff
++++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-abort.diff
+@@ -102,17 +102,11 @@
+ _0 = const ();
+ drop(_1) -> [return: bb1, unwind unreachable];
+ }
+-+ }
++ }
+ +
+-+ ALLOC2 (size: 16, align: 8) {
+-+ 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ ................
+-+ }
+++ ALLOC2 (size: 16, align: 8) { .. }
+ +
+-+ ALLOC1 (size: 16, align: 8) {
+-+ 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ ................
+-+ }
+++ ALLOC1 (size: 16, align: 8) { .. }
+ +
+-+ ALLOC0 (size: 16, align: 8) {
+-+ 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ ................
+- }
+++ ALLOC0 (size: 16, align: 8) { .. }
+
+diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-unwind.diff
+index c905a48862caa..5eefabeac3868 100644
+--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-unwind.diff
++++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-unwind.diff
+@@ -106,17 +106,11 @@
+ _0 = const ();
+ drop(_1) -> [return: bb1, unwind: bb2];
+ }
+-+ }
++ }
+ +
+-+ ALLOC2 (size: 16, align: 8) {
+-+ 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ ................
+-+ }
+++ ALLOC2 (size: 16, align: 8) { .. }
+ +
+-+ ALLOC1 (size: 16, align: 8) {
+-+ 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ ................
+-+ }
+++ ALLOC1 (size: 16, align: 8) { .. }
+ +
+-+ ALLOC0 (size: 16, align: 8) {
+-+ 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 │ ................
+- }
+++ ALLOC0 (size: 16, align: 8) { .. }
+
+diff --git a/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.32bit.diff b/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.32bit.diff
+index 89ed26f065b28..a64dda0d06c48 100644
+--- a/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.32bit.diff
++++ b/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.32bit.diff
+@@ -60,9 +60,7 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 00 00 00 00 00 00 00 00 │ ........
+ }
+++
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.64bit.diff b/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.64bit.diff
+index 89ed26f065b28..a64dda0d06c48 100644
+--- a/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.64bit.diff
++++ b/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.64bit.diff
+@@ -60,9 +60,7 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 00 00 00 00 00 00 00 00 │ ........
+ }
+++
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/dataflow-const-prop/enum.statics.DataflowConstProp.32bit.diff b/tests/mir-opt/dataflow-const-prop/enum.statics.DataflowConstProp.32bit.diff
+index fe8ed0114897d..b4d14f25fe2ab 100644
+--- a/tests/mir-opt/dataflow-const-prop/enum.statics.DataflowConstProp.32bit.diff
++++ b/tests/mir-opt/dataflow-const-prop/enum.statics.DataflowConstProp.32bit.diff
+@@ -43,7 +43,7 @@
+ bb0: {
+ StorageLive(_1);
+ StorageLive(_2);
+- _2 = const {ALLOC1: &E};
++ _2 = const {ALLOC0: &E};
+ - _1 = (*_2);
+ + _1 = const E::V1(0_i32);
+ StorageDead(_2);
+@@ -79,7 +79,7 @@
+ bb4: {
+ StorageLive(_7);
+ StorageLive(_8);
+- _8 = const {ALLOC2: &&E};
++ _8 = const {ALLOC1: &&E};
+ _7 = (*_8);
+ StorageDead(_8);
+ StorageLive(_9);
+@@ -111,21 +111,14 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC3 (size: 8, align: 4) {
+-+ 00 00 00 00 00 00 00 00 │ ........
+ }
+
+- ALLOC2 (static: RC, size: 4, align: 4) {
+- ╾ALLOC0<imm>╼ │ ╾──╼
+- }
+++ ALLOC2 (size: 8, align: 4) { .. }
+++
++ ALLOC1 (static: RC, size: 4, align: 4) { .. }
+
+- ALLOC0 (size: 8, align: 4) {
+- 01 00 00 00 04 00 00 00 │ ........
+- }
++- ALLOC2 (size: 8, align: 4) { .. }
+++ ALLOC3 (size: 8, align: 4) { .. }
+
+- ALLOC1 (static: statics::C, size: 8, align: 4) {
+- 00 00 00 00 00 00 00 00 │ ........
+- }
++ ALLOC0 (static: statics::C, size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/dataflow-const-prop/enum.statics.DataflowConstProp.64bit.diff b/tests/mir-opt/dataflow-const-prop/enum.statics.DataflowConstProp.64bit.diff
+index df3a989d09eba..57d02b87d1369 100644
+--- a/tests/mir-opt/dataflow-const-prop/enum.statics.DataflowConstProp.64bit.diff
++++ b/tests/mir-opt/dataflow-const-prop/enum.statics.DataflowConstProp.64bit.diff
+@@ -43,7 +43,7 @@
+ bb0: {
+ StorageLive(_1);
+ StorageLive(_2);
+- _2 = const {ALLOC1: &E};
++ _2 = const {ALLOC0: &E};
+ - _1 = (*_2);
+ + _1 = const E::V1(0_i32);
+ StorageDead(_2);
+@@ -79,7 +79,7 @@
+ bb4: {
+ StorageLive(_7);
+ StorageLive(_8);
+- _8 = const {ALLOC2: &&E};
++ _8 = const {ALLOC1: &&E};
+ _7 = (*_8);
+ StorageDead(_8);
+ StorageLive(_9);
+@@ -111,21 +111,14 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC3 (size: 8, align: 4) {
+-+ 00 00 00 00 00 00 00 00 │ ........
+ }
+
+- ALLOC2 (static: RC, size: 8, align: 8) {
+- ╾ALLOC0<imm>╼ │ ╾──────╼
+- }
+++ ALLOC2 (size: 8, align: 4) { .. }
+++
++ ALLOC1 (static: RC, size: 8, align: 8) { .. }
+
+- ALLOC0 (size: 8, align: 4) {
+- 01 00 00 00 04 00 00 00 │ ........
+- }
++- ALLOC2 (size: 8, align: 4) { .. }
+++ ALLOC3 (size: 8, align: 4) { .. }
+
+- ALLOC1 (static: statics::C, size: 8, align: 4) {
+- 00 00 00 00 00 00 00 00 │ ........
+- }
++ ALLOC0 (static: statics::C, size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.32bit.diff b/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.32bit.diff
+index f674169e28b26..a6da1483c1ac5 100644
+--- a/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.32bit.diff
++++ b/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.32bit.diff
+@@ -112,7 +112,7 @@
+ _9 = (_10.2: &[f32]);
+ StorageDead(_10);
+ StorageLive(_14);
+- _14 = const {ALLOC4: &&SmallStruct};
++ _14 = const {ALLOC0: &&SmallStruct};
+ _31 = deref_copy (*_14);
+ StorageLive(_11);
+ _32 = deref_copy (*_14);
+@@ -149,7 +149,7 @@
+ _21 = (_22.2: &[f32]);
+ StorageDead(_22);
+ StorageLive(_26);
+- _26 = const {ALLOC5: &&BigStruct};
++ _26 = const {ALLOC1: &&BigStruct};
+ _35 = deref_copy (*_26);
+ StorageLive(_23);
+ _36 = deref_copy (*_26);
+@@ -197,51 +197,31 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
++ }
++
+++ ALLOC2 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC6 (size: 8, align: 4) {
+-+ 01 00 00 00 23 00 00 00 │ ....#...
+-+ }
+++ ALLOC3 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC7 (size: 8, align: 4) {
+-+ 01 00 00 00 23 00 00 00 │ ....#...
+-+ }
+++ ALLOC4 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC8 (size: 8, align: 4) {
+-+ 01 00 00 00 23 00 00 00 │ ....#...
+-+ }
+++ ALLOC5 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC9 (size: 8, align: 4) {
+-+ 01 00 00 00 01 00 00 00 │ ........
+-+ }
+++ ALLOC6 (size: 4, align: 4) { .. }
+ +
+-+ ALLOC10 (size: 4, align: 4) {
+-+ 01 00 00 00 │ ....
+- }
+-
+- ALLOC5 (static: BIG_STAT, size: 4, align: 4) {
+- ╾ALLOC0<imm>╼ │ ╾──╼
+- }
++ ALLOC1 (static: BIG_STAT, size: 4, align: 4) { .. }
+
+- ALLOC0 (size: 20, align: 4) {
+- 0x00 │ 01 00 00 00 23 00 00 00 ╾ALLOC1<imm>╼ 02 00 00 00 │ ....#...╾──╼....
+- 0x10 │ 00 00 a4 42 │ ...B
+- }
++- ALLOC2 (size: 20, align: 4) { .. }
+++ ALLOC7 (size: 20, align: 4) { .. }
+
+- ALLOC1 (size: 8, align: 4) {
+- 00 00 34 42 00 00 90 42 │ ..4B...B
+- }
++- ALLOC3 (size: 8, align: 4) { .. }
+++ ALLOC8 (size: 8, align: 4) { .. }
+
+- ALLOC4 (static: SMALL_STAT, size: 4, align: 4) {
+- ╾ALLOC2<imm>╼ │ ╾──╼
+- }
++ ALLOC0 (static: SMALL_STAT, size: 4, align: 4) { .. }
+
+- ALLOC2 (size: 20, align: 4) {
+- 0x00 │ 00 00 00 00 __ __ __ __ ╾ALLOC3<imm>╼ 01 00 00 00 │ ....░░░░╾──╼....
+- 0x10 │ 00 00 10 41 │ ...A
+- }
++- ALLOC4 (size: 20, align: 4) { .. }
+++ ALLOC9 (size: 20, align: 4) { .. }
+
+- ALLOC3 (size: 4, align: 4) {
+- 00 00 50 41 │ ..PA
+- }
++- ALLOC5 (size: 4, align: 4) { .. }
+++ ALLOC10 (size: 4, align: 4) { .. }
+
+diff --git a/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.64bit.diff b/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.64bit.diff
+index c2608190a6b97..7ca25e4429953 100644
+--- a/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.64bit.diff
++++ b/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.64bit.diff
+@@ -112,7 +112,7 @@
+ _9 = (_10.2: &[f32]);
+ StorageDead(_10);
+ StorageLive(_14);
+- _14 = const {ALLOC4: &&SmallStruct};
++ _14 = const {ALLOC0: &&SmallStruct};
+ _31 = deref_copy (*_14);
+ StorageLive(_11);
+ _32 = deref_copy (*_14);
+@@ -149,7 +149,7 @@
+ _21 = (_22.2: &[f32]);
+ StorageDead(_22);
+ StorageLive(_26);
+- _26 = const {ALLOC5: &&BigStruct};
++ _26 = const {ALLOC1: &&BigStruct};
+ _35 = deref_copy (*_26);
+ StorageLive(_23);
+ _36 = deref_copy (*_26);
+@@ -197,51 +197,31 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
++ }
++
+++ ALLOC2 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC6 (size: 8, align: 4) {
+-+ 01 00 00 00 23 00 00 00 │ ....#...
+-+ }
+++ ALLOC3 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC7 (size: 8, align: 4) {
+-+ 01 00 00 00 23 00 00 00 │ ....#...
+-+ }
+++ ALLOC4 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC8 (size: 8, align: 4) {
+-+ 01 00 00 00 23 00 00 00 │ ....#...
+-+ }
+++ ALLOC5 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC9 (size: 8, align: 4) {
+-+ 01 00 00 00 01 00 00 00 │ ........
+-+ }
+++ ALLOC6 (size: 4, align: 4) { .. }
+ +
+-+ ALLOC10 (size: 4, align: 4) {
+-+ 01 00 00 00 │ ....
+- }
+-
+- ALLOC5 (static: BIG_STAT, size: 8, align: 8) {
+- ╾ALLOC0<imm>╼ │ ╾──────╼
+- }
++ ALLOC1 (static: BIG_STAT, size: 8, align: 8) { .. }
+
+- ALLOC0 (size: 32, align: 8) {
+- 0x00 │ 01 00 00 00 23 00 00 00 ╾ALLOC1<imm>╼ │ ....#...╾──────╼
+- 0x10 │ 02 00 00 00 00 00 00 00 00 00 a4 42 __ __ __ __ │ ...........B░░░░
+- }
++- ALLOC2 (size: 32, align: 8) { .. }
+++ ALLOC7 (size: 32, align: 8) { .. }
+
+- ALLOC1 (size: 8, align: 4) {
+- 00 00 34 42 00 00 90 42 │ ..4B...B
+- }
++- ALLOC3 (size: 8, align: 4) { .. }
+++ ALLOC8 (size: 8, align: 4) { .. }
+
+- ALLOC4 (static: SMALL_STAT, size: 8, align: 8) {
+- ╾ALLOC2<imm>╼ │ ╾──────╼
+- }
++ ALLOC0 (static: SMALL_STAT, size: 8, align: 8) { .. }
+
+- ALLOC2 (size: 32, align: 8) {
+- 0x00 │ 00 00 00 00 __ __ __ __ ╾ALLOC3<imm>╼ │ ....░░░░╾──────╼
+- 0x10 │ 01 00 00 00 00 00 00 00 00 00 10 41 __ __ __ __ │ ...........A░░░░
+- }
++- ALLOC4 (size: 32, align: 8) { .. }
+++ ALLOC9 (size: 32, align: 8) { .. }
+
+- ALLOC3 (size: 4, align: 4) {
+- 00 00 50 41 │ ..PA
+- }
++- ALLOC5 (size: 4, align: 4) { .. }
+++ ALLOC10 (size: 4, align: 4) { .. }
+
+diff --git a/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.32bit.diff b/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.32bit.diff
+index f5723cac7d9c8..e4031b65caafe 100644
+--- a/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.32bit.diff
++++ b/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.32bit.diff
+@@ -92,21 +92,13 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
++ }
+ +
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 02 00 00 00 03 00 00 00 │ ........
+-+ }
+++ ALLOC0 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC1 (size: 8, align: 4) {
+-+ 02 00 00 00 03 00 00 00 │ ........
+-+ }
+++ ALLOC1 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC2 (size: 8, align: 4) {
+-+ 02 00 00 00 03 00 00 00 │ ........
+-+ }
+++ ALLOC2 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC3 (size: 8, align: 4) {
+-+ 01 00 00 00 02 00 00 00 │ ........
+- }
+++ ALLOC3 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.64bit.diff b/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.64bit.diff
+index f5723cac7d9c8..e4031b65caafe 100644
+--- a/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.64bit.diff
++++ b/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.64bit.diff
+@@ -92,21 +92,13 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
++ }
+ +
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 02 00 00 00 03 00 00 00 │ ........
+-+ }
+++ ALLOC0 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC1 (size: 8, align: 4) {
+-+ 02 00 00 00 03 00 00 00 │ ........
+-+ }
+++ ALLOC1 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC2 (size: 8, align: 4) {
+-+ 02 00 00 00 03 00 00 00 │ ........
+-+ }
+++ ALLOC2 (size: 8, align: 4) { .. }
+ +
+-+ ALLOC3 (size: 8, align: 4) {
+-+ 01 00 00 00 02 00 00 00 │ ........
+- }
+++ ALLOC3 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/enum_opt.cand.EnumSizeOpt.32bit.diff b/tests/mir-opt/enum_opt.cand.EnumSizeOpt.32bit.diff
+index 775a60f1c9603..085c55caaa03c 100644
+--- a/tests/mir-opt/enum_opt.cand.EnumSizeOpt.32bit.diff
++++ b/tests/mir-opt/enum_opt.cand.EnumSizeOpt.32bit.diff
+@@ -64,9 +64,7 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 02 00 00 00 05 20 00 00 │ ..... ..
+ }
+++
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/enum_opt.cand.EnumSizeOpt.64bit.diff b/tests/mir-opt/enum_opt.cand.EnumSizeOpt.64bit.diff
+index c4b57579943d4..798b7c10fe8d5 100644
+--- a/tests/mir-opt/enum_opt.cand.EnumSizeOpt.64bit.diff
++++ b/tests/mir-opt/enum_opt.cand.EnumSizeOpt.64bit.diff
+@@ -64,9 +64,7 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 16, align: 8) {
+-+ 02 00 00 00 00 00 00 00 05 20 00 00 00 00 00 00 │ ......... ......
+ }
+++
+++ ALLOC0 (size: 16, align: 8) { .. }
+
+diff --git a/tests/mir-opt/enum_opt.unin.EnumSizeOpt.32bit.diff b/tests/mir-opt/enum_opt.unin.EnumSizeOpt.32bit.diff
+index f7d0d1fb56c3e..a04829af4b532 100644
+--- a/tests/mir-opt/enum_opt.unin.EnumSizeOpt.32bit.diff
++++ b/tests/mir-opt/enum_opt.unin.EnumSizeOpt.32bit.diff
+@@ -64,9 +64,7 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 05 20 00 00 01 00 00 00 │ . ......
+ }
+++
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/enum_opt.unin.EnumSizeOpt.64bit.diff b/tests/mir-opt/enum_opt.unin.EnumSizeOpt.64bit.diff
+index 15f1bd0df51a2..f5521a1e22a47 100644
+--- a/tests/mir-opt/enum_opt.unin.EnumSizeOpt.64bit.diff
++++ b/tests/mir-opt/enum_opt.unin.EnumSizeOpt.64bit.diff
+@@ -64,9 +64,7 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 16, align: 8) {
+-+ 05 20 00 00 00 00 00 00 01 00 00 00 00 00 00 00 │ . ..............
+ }
+++
+++ ALLOC0 (size: 16, align: 8) { .. }
+
+diff --git a/tests/mir-opt/gvn.arithmetic_checked.GVN.panic-abort.diff b/tests/mir-opt/gvn.arithmetic_checked.GVN.panic-abort.diff
+index 5bf22af6ae83d..0e3f2459fae35 100644
+--- a/tests/mir-opt/gvn.arithmetic_checked.GVN.panic-abort.diff
++++ b/tests/mir-opt/gvn.arithmetic_checked.GVN.panic-abort.diff
+@@ -140,9 +140,7 @@
+ _0 = const ();
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 16, align: 8) {
+-+ 00 00 00 00 00 00 00 00 00 __ __ __ __ __ __ __ │ .........░░░░░░░
+ }
+++
+++ ALLOC0 (size: 16, align: 8) { .. }
+
+diff --git a/tests/mir-opt/gvn.arithmetic_checked.GVN.panic-unwind.diff b/tests/mir-opt/gvn.arithmetic_checked.GVN.panic-unwind.diff
+index 18d2029e44500..2873d7ef0ab13 100644
+--- a/tests/mir-opt/gvn.arithmetic_checked.GVN.panic-unwind.diff
++++ b/tests/mir-opt/gvn.arithmetic_checked.GVN.panic-unwind.diff
+@@ -140,9 +140,7 @@
+ _0 = const ();
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 16, align: 8) {
+-+ 00 00 00 00 00 00 00 00 00 __ __ __ __ __ __ __ │ .........░░░░░░░
+ }
+++
+++ ALLOC0 (size: 16, align: 8) { .. }
+
+diff --git a/tests/mir-opt/gvn.fn_pointers.GVN.panic-abort.diff b/tests/mir-opt/gvn.fn_pointers.GVN.panic-abort.diff
+index 0c49e706c9ecf..b5c0cee784688 100644
+--- a/tests/mir-opt/gvn.fn_pointers.GVN.panic-abort.diff
++++ b/tests/mir-opt/gvn.fn_pointers.GVN.panic-abort.diff
+@@ -8,10 +8,10 @@
+ let mut _3: fn(u8) -> u8;
+ let _5: ();
+ let mut _6: fn(u8) -> u8;
+- let mut _9: {closure@$DIR/gvn.rs:612:19: 612:21};
++ let mut _9: {closure@$DIR/gvn.rs:613:19: 613:21};
+ let _10: ();
+ let mut _11: fn();
+- let mut _13: {closure@$DIR/gvn.rs:612:19: 612:21};
++ let mut _13: {closure@$DIR/gvn.rs:613:19: 613:21};
+ let _14: ();
+ let mut _15: fn();
+ scope 1 {
+@@ -19,7 +19,7 @@
+ let _4: fn(u8) -> u8;
+ scope 2 {
+ debug g => _4;
+- let _7: {closure@$DIR/gvn.rs:612:19: 612:21};
++ let _7: {closure@$DIR/gvn.rs:613:19: 613:21};
+ scope 3 {
+ debug closure => _7;
+ let _8: fn();
+@@ -62,16 +62,16 @@
+ StorageDead(_6);
+ StorageDead(_5);
+ - StorageLive(_7);
+-- _7 = {closure@$DIR/gvn.rs:612:19: 612:21};
++- _7 = {closure@$DIR/gvn.rs:613:19: 613:21};
+ - StorageLive(_8);
+ + nop;
+-+ _7 = const ZeroSized: {closure@$DIR/gvn.rs:612:19: 612:21};
+++ _7 = const ZeroSized: {closure@$DIR/gvn.rs:613:19: 613:21};
+ + nop;
+ StorageLive(_9);
+ - _9 = _7;
+ - _8 = move _9 as fn() (PointerCoercion(ClosureFnPointer(Safe)));
+-+ _9 = const ZeroSized: {closure@$DIR/gvn.rs:612:19: 612:21};
+-+ _8 = const ZeroSized: {closure@$DIR/gvn.rs:612:19: 612:21} as fn() (PointerCoercion(ClosureFnPointer(Safe)));
+++ _9 = const ZeroSized: {closure@$DIR/gvn.rs:613:19: 613:21};
+++ _8 = const ZeroSized: {closure@$DIR/gvn.rs:613:19: 613:21} as fn() (PointerCoercion(ClosureFnPointer(Safe)));
+ StorageDead(_9);
+ StorageLive(_10);
+ StorageLive(_11);
+@@ -88,8 +88,8 @@
+ StorageLive(_13);
+ - _13 = _7;
+ - _12 = move _13 as fn() (PointerCoercion(ClosureFnPointer(Safe)));
+-+ _13 = const ZeroSized: {closure@$DIR/gvn.rs:612:19: 612:21};
+-+ _12 = const ZeroSized: {closure@$DIR/gvn.rs:612:19: 612:21} as fn() (PointerCoercion(ClosureFnPointer(Safe)));
+++ _13 = const ZeroSized: {closure@$DIR/gvn.rs:613:19: 613:21};
+++ _12 = const ZeroSized: {closure@$DIR/gvn.rs:613:19: 613:21} as fn() (PointerCoercion(ClosureFnPointer(Safe)));
+ StorageDead(_13);
+ StorageLive(_14);
+ StorageLive(_15);
+diff --git a/tests/mir-opt/gvn.fn_pointers.GVN.panic-unwind.diff b/tests/mir-opt/gvn.fn_pointers.GVN.panic-unwind.diff
+index e5f865b74b9f4..7bc6573c13d4d 100644
+--- a/tests/mir-opt/gvn.fn_pointers.GVN.panic-unwind.diff
++++ b/tests/mir-opt/gvn.fn_pointers.GVN.panic-unwind.diff
+@@ -8,10 +8,10 @@
+ let mut _3: fn(u8) -> u8;
+ let _5: ();
+ let mut _6: fn(u8) -> u8;
+- let mut _9: {closure@$DIR/gvn.rs:612:19: 612:21};
++ let mut _9: {closure@$DIR/gvn.rs:613:19: 613:21};
+ let _10: ();
+ let mut _11: fn();
+- let mut _13: {closure@$DIR/gvn.rs:612:19: 612:21};
++ let mut _13: {closure@$DIR/gvn.rs:613:19: 613:21};
+ let _14: ();
+ let mut _15: fn();
+ scope 1 {
+@@ -19,7 +19,7 @@
+ let _4: fn(u8) -> u8;
+ scope 2 {
+ debug g => _4;
+- let _7: {closure@$DIR/gvn.rs:612:19: 612:21};
++ let _7: {closure@$DIR/gvn.rs:613:19: 613:21};
+ scope 3 {
+ debug closure => _7;
+ let _8: fn();
+@@ -62,16 +62,16 @@
+ StorageDead(_6);
+ StorageDead(_5);
+ - StorageLive(_7);
+-- _7 = {closure@$DIR/gvn.rs:612:19: 612:21};
++- _7 = {closure@$DIR/gvn.rs:613:19: 613:21};
+ - StorageLive(_8);
+ + nop;
+-+ _7 = const ZeroSized: {closure@$DIR/gvn.rs:612:19: 612:21};
+++ _7 = const ZeroSized: {closure@$DIR/gvn.rs:613:19: 613:21};
+ + nop;
+ StorageLive(_9);
+ - _9 = _7;
+ - _8 = move _9 as fn() (PointerCoercion(ClosureFnPointer(Safe)));
+-+ _9 = const ZeroSized: {closure@$DIR/gvn.rs:612:19: 612:21};
+-+ _8 = const ZeroSized: {closure@$DIR/gvn.rs:612:19: 612:21} as fn() (PointerCoercion(ClosureFnPointer(Safe)));
+++ _9 = const ZeroSized: {closure@$DIR/gvn.rs:613:19: 613:21};
+++ _8 = const ZeroSized: {closure@$DIR/gvn.rs:613:19: 613:21} as fn() (PointerCoercion(ClosureFnPointer(Safe)));
+ StorageDead(_9);
+ StorageLive(_10);
+ StorageLive(_11);
+@@ -88,8 +88,8 @@
+ StorageLive(_13);
+ - _13 = _7;
+ - _12 = move _13 as fn() (PointerCoercion(ClosureFnPointer(Safe)));
+-+ _13 = const ZeroSized: {closure@$DIR/gvn.rs:612:19: 612:21};
+-+ _12 = const ZeroSized: {closure@$DIR/gvn.rs:612:19: 612:21} as fn() (PointerCoercion(ClosureFnPointer(Safe)));
+++ _13 = const ZeroSized: {closure@$DIR/gvn.rs:613:19: 613:21};
+++ _12 = const ZeroSized: {closure@$DIR/gvn.rs:613:19: 613:21} as fn() (PointerCoercion(ClosureFnPointer(Safe)));
+ StorageDead(_13);
+ StorageLive(_14);
+ StorageLive(_15);
+diff --git a/tests/mir-opt/gvn.indirect_static.GVN.panic-abort.diff b/tests/mir-opt/gvn.indirect_static.GVN.panic-abort.diff
+index f853942bbb664..e84f91e495d9c 100644
+--- a/tests/mir-opt/gvn.indirect_static.GVN.panic-abort.diff
++++ b/tests/mir-opt/gvn.indirect_static.GVN.panic-abort.diff
+@@ -13,7 +13,5 @@
+ }
+ }
+
+- ALLOC0 (static: A, size: 2, align: 1) {
+- 00 __ │ .░
+- }
++ ALLOC0 (static: A, size: 2, align: 1) { .. }
+
+diff --git a/tests/mir-opt/gvn.indirect_static.GVN.panic-unwind.diff b/tests/mir-opt/gvn.indirect_static.GVN.panic-unwind.diff
+index f853942bbb664..e84f91e495d9c 100644
+--- a/tests/mir-opt/gvn.indirect_static.GVN.panic-unwind.diff
++++ b/tests/mir-opt/gvn.indirect_static.GVN.panic-unwind.diff
+@@ -13,7 +13,5 @@
+ }
+ }
+
+- ALLOC0 (static: A, size: 2, align: 1) {
+- 00 __ │ .░
+- }
++ ALLOC0 (static: A, size: 2, align: 1) { .. }
+
+diff --git a/tests/mir-opt/gvn.wide_ptr_integer.GVN.panic-abort.diff b/tests/mir-opt/gvn.wide_ptr_integer.GVN.panic-abort.diff
+index 07c4c7663c154..3eed0473f7fc2 100644
+--- a/tests/mir-opt/gvn.wide_ptr_integer.GVN.panic-abort.diff
++++ b/tests/mir-opt/gvn.wide_ptr_integer.GVN.panic-abort.diff
+@@ -176,13 +176,9 @@
+ + nop;
+ return;
+ }
+-+ }
++ }
+ +
+-+ ALLOC1 (size: 16, align: 8) {
+-+ 01 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 │ ................
+-+ }
+++ ALLOC1 (size: 16, align: 8) { .. }
+ +
+-+ ALLOC0 (size: 16, align: 8) {
+-+ 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 │ ................
+- }
+++ ALLOC0 (size: 16, align: 8) { .. }
+
+diff --git a/tests/mir-opt/gvn.wide_ptr_integer.GVN.panic-unwind.diff b/tests/mir-opt/gvn.wide_ptr_integer.GVN.panic-unwind.diff
+index df0f93f1077ee..9a6e255a872ea 100644
+--- a/tests/mir-opt/gvn.wide_ptr_integer.GVN.panic-unwind.diff
++++ b/tests/mir-opt/gvn.wide_ptr_integer.GVN.panic-unwind.diff
+@@ -176,13 +176,9 @@
+ + nop;
+ return;
+ }
+-+ }
++ }
+ +
+-+ ALLOC1 (size: 16, align: 8) {
+-+ 01 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 │ ................
+-+ }
+++ ALLOC1 (size: 16, align: 8) { .. }
+ +
+-+ ALLOC0 (size: 16, align: 8) {
+-+ 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 │ ................
+- }
+++ ALLOC0 (size: 16, align: 8) { .. }
+
+diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.32bit.panic-abort.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.32bit.panic-abort.diff
+index 2f34a62b3d136..45b8d89c0f4fa 100644
+--- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.32bit.panic-abort.diff
++++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.32bit.panic-abort.diff
+@@ -61,9 +61,7 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 04 00 00 00 00 __ __ __ │ .....░░░
+ }
+++
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.32bit.panic-unwind.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.32bit.panic-unwind.diff
+index da7add371a5bf..e6ee1e6f9a348 100644
+--- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.32bit.panic-unwind.diff
++++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.32bit.panic-unwind.diff
+@@ -61,9 +61,7 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 04 00 00 00 00 __ __ __ │ .....░░░
+ }
+++
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.64bit.panic-abort.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.64bit.panic-abort.diff
+index 2f34a62b3d136..45b8d89c0f4fa 100644
+--- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.64bit.panic-abort.diff
++++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.64bit.panic-abort.diff
+@@ -61,9 +61,7 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 04 00 00 00 00 __ __ __ │ .....░░░
+ }
+++
+++ ALLOC0 (size: 8, align: 4) { .. }
+
+diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.64bit.panic-unwind.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.64bit.panic-unwind.diff
+index da7add371a5bf..e6ee1e6f9a348 100644
+--- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.64bit.panic-unwind.diff
++++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.64bit.panic-unwind.diff
+@@ -61,9 +61,7 @@
+ StorageDead(_1);
+ return;
+ }
+-+ }
+-+
+-+ ALLOC0 (size: 8, align: 4) {
+-+ 04 00 00 00 00 __ __ __ │ .....░░░
+ }
+++
+++ ALLOC0 (size: 8, align: 4) { .. }
+
diff --git a/user/rust/powerpc-atomics.patch b/user/rust/powerpc-atomics.patch
new file mode 100644
index 000000000..1a7d4dbea
--- /dev/null
+++ b/user/rust/powerpc-atomics.patch
@@ -0,0 +1,16 @@
+--- rustc-1.60.0-src/vendor/valuable-0.1.0/no_atomic.rs.old 2022-04-04 11:10:57.000000000 +0000
++++ rustc-1.60.0-src/vendor/valuable-0.1.0/no_atomic.rs 2022-11-23 07:36:37.687029241 +0000
+@@ -32,6 +32,7 @@
+ "mipsel-unknown-none",
+ "mipsisa32r6-unknown-linux-gnu",
+ "mipsisa32r6el-unknown-linux-gnu",
++ "powerpc-foxkit-linux-musl",
+ "powerpc-unknown-freebsd",
+ "powerpc-unknown-linux-gnu",
+ "powerpc-unknown-linux-gnuspe",
+--- rustc-1.60.0-src/vendor/valuable-0.1.0/.cargo-checksum.json.old 2022-04-04 11:10:57.000000000 +0000
++++ rustc-1.60.0-src/vendor/valuable-0.1.0/.cargo-checksum.json 2022-11-23 07:38:07.397357603 +0000
+@@ -1 +1 @@
+-{"files":{"Cargo.lock":"fea5e41d2befef0b42734010a85f95548b5255ff1e4ee2dd2e6827adb8fe5f3e","Cargo.toml":"995a2454b4e3e583124d60b694e106ebd193b9742df3e050a6f49e5801b3597b","benches/structable.rs":"1baad763d1b0900004682b139efd58b17c974dc2068ede2229f8786e4a21372e","build.rs":"4ad508d818c27ee58bf7da2b9b4b425dae3e2656850327b3080fe2ad38767928","examples/derive.rs":"238473e63c0647cdb6652f1613575e24b323d40db5c8f3e5c32d64a3ea6b4048","examples/hello_world.rs":"75e48360e53b37e077e574d9c1aa2754b197f551ac5d604b03ebec9d31bab5cf","examples/print.rs":"924c55402b18e518317acc013a6cf407fcc13532c1eca8d9cd5f5631e79df960","no_atomic.rs":"b1c5cb0bd10733eb20516d10edc047b45aa67943f3347ae44fb779ed7fc7aff2","src/enumerable.rs":"008fe833c558f7e956ba0238a9d66947a671f66c5762905ed79d48a428c0ad44","src/field.rs":"c3d96f215c4bfc2a3910d0616fb335332d17f7dcf93ca739c933d88e1f98d229","src/lib.rs":"6954630c4c7c389192f3f8b5097076bbba6e43b5c4cd4ec68b4ffc18bff0a5b4","src/listable.rs":"f1a0743ed650604634972c19b66505a5727a6a6e2d7b54861e65cdcf10949432","src/mappable.rs":"ef7d334ef00d6b34cbff45b73b13935de6659933abafff9ad3d5d2a16d7ccac1","src/named_values.rs":"df5009074379ea59b02ebaf730890d0a4b6fa5c67c4057cc60f84d3652ca2bc5","src/slice.rs":"e382f56eb14ea7848276a4c8bda537f5207a4a6ed7a4b2ee4d2dde7feebce3b4","src/structable.rs":"369b17701d59bab138eac22ec043d434a052f49976236cc5ee680e72ca23ed6e","src/tuplable.rs":"e8b64a0761263666d984257109b5d54337cd97be59f08b08ec153e68ec1636c5","src/valuable.rs":"f8fdef201d3181935330fb86b27c455a5c86079f9f2cad363cda765801d7dd50","src/value.rs":"479d2c5b9d84c930e3abfe0032734ad92b243cf095f5fea6226a9da5eec81484","src/visit.rs":"060bacd3e1c0b333692f96c3ca970ca47a859cc28700713630996d9f0dc1668e"},"package":"830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"}
+\ No newline at end of file
++{"files":{"Cargo.lock":"fea5e41d2befef0b42734010a85f95548b5255ff1e4ee2dd2e6827adb8fe5f3e","Cargo.toml":"995a2454b4e3e583124d60b694e106ebd193b9742df3e050a6f49e5801b3597b","benches/structable.rs":"1baad763d1b0900004682b139efd58b17c974dc2068ede2229f8786e4a21372e","build.rs":"4ad508d818c27ee58bf7da2b9b4b425dae3e2656850327b3080fe2ad38767928","examples/derive.rs":"238473e63c0647cdb6652f1613575e24b323d40db5c8f3e5c32d64a3ea6b4048","examples/hello_world.rs":"75e48360e53b37e077e574d9c1aa2754b197f551ac5d604b03ebec9d31bab5cf","examples/print.rs":"924c55402b18e518317acc013a6cf407fcc13532c1eca8d9cd5f5631e79df960","no_atomic.rs":"66d1146a63de2d24058f657aa14570038b96795a7facbab11402a96b6008f01a","src/enumerable.rs":"008fe833c558f7e956ba0238a9d66947a671f66c5762905ed79d48a428c0ad44","src/field.rs":"c3d96f215c4bfc2a3910d0616fb335332d17f7dcf93ca739c933d88e1f98d229","src/lib.rs":"6954630c4c7c389192f3f8b5097076bbba6e43b5c4cd4ec68b4ffc18bff0a5b4","src/listable.rs":"f1a0743ed650604634972c19b66505a5727a6a6e2d7b54861e65cdcf10949432","src/mappable.rs":"ef7d334ef00d6b34cbff45b73b13935de6659933abafff9ad3d5d2a16d7ccac1","src/named_values.rs":"df5009074379ea59b02ebaf730890d0a4b6fa5c67c4057cc60f84d3652ca2bc5","src/slice.rs":"e382f56eb14ea7848276a4c8bda537f5207a4a6ed7a4b2ee4d2dde7feebce3b4","src/structable.rs":"369b17701d59bab138eac22ec043d434a052f49976236cc5ee680e72ca23ed6e","src/tuplable.rs":"e8b64a0761263666d984257109b5d54337cd97be59f08b08ec153e68ec1636c5","src/valuable.rs":"f8fdef201d3181935330fb86b27c455a5c86079f9f2cad363cda765801d7dd50","src/value.rs":"479d2c5b9d84c930e3abfe0032734ad92b243cf095f5fea6226a9da5eec81484","src/visit.rs":"060bacd3e1c0b333692f96c3ca970ca47a859cc28700713630996d9f0dc1668e"},"package":"830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"}
diff --git a/user/rust/ppc64-abi.patch b/user/rust/ppc64-abi.patch
new file mode 100644
index 000000000..763ebdec5
--- /dev/null
+++ b/user/rust/ppc64-abi.patch
@@ -0,0 +1,251 @@
+From dd2fc075aa673d06dff5f90a44b0162649dac52b Mon Sep 17 00:00:00 2001
+From: beetrees <b@beetr.ee>
+Date: Sun, 4 Aug 2024 15:01:58 +0100
+Subject: [PATCH] Refactor `powerpc64` call ABI handling
+
+---
+ .../rustc_target/src/abi/call/powerpc64.rs | 67 ++-------
+ tests/assembly/powerpc64-struct-abi.rs | 130 ++++++++++++++++++
+ 2 files changed, 142 insertions(+), 55 deletions(-)
+ create mode 100644 tests/assembly/powerpc64-struct-abi.rs
+
+diff --git a/compiler/rustc_target/src/abi/call/powerpc64.rs b/compiler/rustc_target/src/abi/call/powerpc64.rs
+index 11a6cb52babc9..749eea0ef6350 100644
+--- a/compiler/rustc_target/src/abi/call/powerpc64.rs
++++ b/compiler/rustc_target/src/abi/call/powerpc64.rs
+@@ -41,64 +41,23 @@ where
+ })
+ }
+
+-fn classify_ret<'a, Ty, C>(cx: &C, ret: &mut ArgAbi<'a, Ty>, abi: ABI)
++fn classify<'a, Ty, C>(cx: &C, arg: &mut ArgAbi<'a, Ty>, abi: ABI, is_ret: bool)
+ where
+ Ty: TyAbiInterface<'a, C> + Copy,
+ C: HasDataLayout,
+ {
+- if !ret.layout.is_sized() {
++ if arg.is_ignore() || !arg.layout.is_sized() {
+ // Not touching this...
+ return;
+ }
+- if !ret.layout.is_aggregate() {
+- ret.extend_integer_width_to(64);
++ if !arg.layout.is_aggregate() {
++ arg.extend_integer_width_to(64);
+ return;
+ }
+
+ // The ELFv1 ABI doesn't return aggregates in registers
+- if abi == ELFv1 {
+- ret.make_indirect();
+- return;
+- }
+-
+- if let Some(uniform) = is_homogeneous_aggregate(cx, ret, abi) {
+- ret.cast_to(uniform);
+- return;
+- }
+-
+- let size = ret.layout.size;
+- let bits = size.bits();
+- if bits <= 128 {
+- let unit = if cx.data_layout().endian == Endian::Big {
+- Reg { kind: RegKind::Integer, size }
+- } else if bits <= 8 {
+- Reg::i8()
+- } else if bits <= 16 {
+- Reg::i16()
+- } else if bits <= 32 {
+- Reg::i32()
+- } else {
+- Reg::i64()
+- };
+-
+- ret.cast_to(Uniform::new(unit, size));
+- return;
+- }
+-
+- ret.make_indirect();
+-}
+-
+-fn classify_arg<'a, Ty, C>(cx: &C, arg: &mut ArgAbi<'a, Ty>, abi: ABI)
+-where
+- Ty: TyAbiInterface<'a, C> + Copy,
+- C: HasDataLayout,
+-{
+- if !arg.layout.is_sized() {
+- // Not touching this...
+- return;
+- }
+- if !arg.layout.is_aggregate() {
+- arg.extend_integer_width_to(64);
++ if is_ret && abi == ELFv1 {
++ arg.make_indirect();
+ return;
+ }
+
+@@ -108,7 +67,10 @@ where
+ }
+
+ let size = arg.layout.size;
+- if size.bits() <= 64 {
++ if is_ret && size.bits() > 128 {
++ // Non-homogeneous aggregates larger than two doublewords are returned indirectly.
++ arg.make_indirect();
++ } else if size.bits() <= 64 {
+ // Aggregates smaller than a doubleword should appear in
+ // the least-significant bits of the parameter doubleword.
+ arg.cast_to(Reg { kind: RegKind::Integer, size })
+@@ -138,14 +100,9 @@ where
+ }
+ };
+
+- if !fn_abi.ret.is_ignore() {
+- classify_ret(cx, &mut fn_abi.ret, abi);
+- }
++ classify(cx, &mut fn_abi.ret, abi, true);
+
+ for arg in fn_abi.args.iter_mut() {
+- if arg.is_ignore() {
+- continue;
+- }
+- classify_arg(cx, arg, abi);
++ classify(cx, arg, abi, false);
+ }
+ }
+diff --git a/tests/assembly/powerpc64-struct-abi.rs b/tests/assembly/powerpc64-struct-abi.rs
+new file mode 100644
+index 0000000000000..c36e3f2b62251
+--- /dev/null
++++ b/tests/assembly/powerpc64-struct-abi.rs
+@@ -0,0 +1,130 @@
++//@ revisions: elfv1-be elfv2-be elfv2-le
++//@ assembly-output: emit-asm
++//@[elfv1-be] compile-flags: --target powerpc64-unknown-linux-gnu
++//@[elfv1-be] needs-llvm-components: powerpc
++//@[elfv2-be] compile-flags: --target powerpc64-unknown-linux-musl
++//@[elfv2-be] needs-llvm-components: powerpc
++//@[elfv2-le] compile-flags: --target powerpc64le-unknown-linux-gnu
++//@[elfv2-le] needs-llvm-components: powerpc
++//@[elfv1-be] filecheck-flags: --check-prefix be
++//@[elfv2-be] filecheck-flags: --check-prefix be
++
++#![feature(no_core, lang_items)]
++#![no_std]
++#![no_core]
++#![crate_type = "lib"]
++
++#[lang = "sized"]
++trait Sized {}
++
++#[lang = "copy"]
++trait Copy {}
++
++#[lang = "freeze"]
++trait Freeze {}
++
++#[lang = "unpin"]
++trait Unpin {}
++
++impl Copy for u8 {}
++impl Copy for u16 {}
++impl Copy for u32 {}
++impl Copy for FiveU32s {}
++impl Copy for FiveU16s {}
++impl Copy for ThreeU8s {}
++
++#[repr(C)]
++struct FiveU32s(u32, u32, u32, u32, u32);
++
++#[repr(C)]
++struct FiveU16s(u16, u16, u16, u16, u16);
++
++#[repr(C)]
++struct ThreeU8s(u8, u8, u8);
++
++// CHECK-LABEL: read_large
++// be: lwz [[REG1:.*]], 16(4)
++// be-NEXT: stw [[REG1]], 16(3)
++// be-NEXT: ld [[REG2:.*]], 8(4)
++// be-NEXT: ld [[REG3:.*]], 0(4)
++// be-NEXT: std [[REG2]], 8(3)
++// be-NEXT: std [[REG3]], 0(3)
++// elfv2-le: lxvd2x [[REG1:.*]], 0, 4
++// elfv2-le-NEXT: lwz [[REG2:.*]], 16(4)
++// elfv2-le-NEXT: stw [[REG2]], 16(3)
++// elfv2-le-NEXT: stxvd2x [[REG1]], 0, 3
++// CHECK-NEXT: blr
++#[no_mangle]
++extern "C" fn read_large(x: &FiveU32s) -> FiveU32s {
++ *x
++}
++
++// CHECK-LABEL: read_medium
++// elfv1-be: lhz [[REG1:.*]], 8(4)
++// elfv1-be-NEXT: ld [[REG2:.*]], 0(4)
++// elfv1-be-NEXT: sth [[REG1]], 8(3)
++// elfv1-be-NEXT: std [[REG2]], 0(3)
++// elfv2-be: lhz [[REG1:.*]], 8(3)
++// elfv2-be-NEXT: ld 3, 0(3)
++// elfv2-be-NEXT: sldi 4, [[REG1]], 48
++// elfv2-le: ld [[REG1:.*]], 0(3)
++// elfv2-le-NEXT: lhz 4, 8(3)
++// elfv2-le-NEXT: mr 3, [[REG1]]
++// CHECK-NEXT: blr
++#[no_mangle]
++extern "C" fn read_medium(x: &FiveU16s) -> FiveU16s {
++ *x
++}
++
++// CHECK-LABEL: read_small
++// elfv1-be: lbz [[REG1:.*]], 2(4)
++// elfv1-be-NEXT: lhz [[REG2:.*]], 0(4)
++// elfv1-be-NEXT: stb [[REG1]], 2(3)
++// elfv1-be-NEXT: sth [[REG2]], 0(3)
++// elfv2-be: lhz [[REG1:.*]], 0(3)
++// elfv2-be-NEXT: lbz 3, 2(3)
++// elfv2-be-NEXT: rldimi 3, [[REG1]], 8, 0
++// elfv2-le: lbz [[REG1:.*]], 2(3)
++// elfv2-le-NEXT: lhz 3, 0(3)
++// elfv2-le-NEXT: rldimi 3, [[REG1]], 16, 0
++// CHECK-NEXT: blr
++#[no_mangle]
++extern "C" fn read_small(x: &ThreeU8s) -> ThreeU8s {
++ *x
++}
++
++// CHECK-LABEL: write_large
++// CHECK: std 3, 0(6)
++// be-NEXT: rldicl [[REG1:.*]], 5, 32, 32
++// CHECK-NEXT: std 4, 8(6)
++// be-NEXT: stw [[REG1]], 16(6)
++// elfv2-le-NEXT: stw 5, 16(6)
++// CHECK-NEXT: blr
++#[no_mangle]
++extern "C" fn write_large(x: FiveU32s, dest: &mut FiveU32s) {
++ *dest = x;
++}
++
++// CHECK-LABEL: write_medium
++// CHECK: std 3, 0(5)
++// be-NEXT: rldicl [[REG1:.*]], 4, 16, 48
++// be-NEXT: sth [[REG1]], 8(5)
++// elfv2-le-NEXT: sth 4, 8(5)
++// CHECK-NEXT: blr
++#[no_mangle]
++extern "C" fn write_medium(x: FiveU16s, dest: &mut FiveU16s) {
++ *dest = x;
++}
++
++// CHECK-LABEL: write_small
++// be: stb 3, 2(4)
++// be-NEXT: srwi [[REG1:.*]], 3, 8
++// be-NEXT: sth [[REG1]], 0(4)
++// elfv2-le: sth 3, 0(4)
++// elfv2-le-NEXT: srwi [[REG1:.*]], 3, 16
++// elfv2-le-NEXT: stb [[REG1]], 2(4)
++// CHECK-NEXT: blr
++#[no_mangle]
++extern "C" fn write_small(x: ThreeU8s, dest: &mut ThreeU8s) {
++ *dest = x;
++}
diff --git a/user/rust/stdarch-ppc.patch b/user/rust/stdarch-ppc.patch
new file mode 100644
index 000000000..eabe0d416
--- /dev/null
+++ b/user/rust/stdarch-ppc.patch
@@ -0,0 +1,116 @@
+Upstream: https://github.com/rust-lang/stdarch/pull/1582
+
+From 7ac103f60d54362a752361dee3e63e23b98a342a Mon Sep 17 00:00:00 2001
+From: Luca Barbato <lu_zero@gentoo.org>
+Date: Tue, 11 Jun 2024 09:49:16 +0000
+Subject: [PATCH] Use longer associated types in the Altivec traits
+
+---
+ crates/core_arch/src/powerpc/altivec.rs | 34 ++++++++++++-------------
+ 1 file changed, 17 insertions(+), 17 deletions(-)
+
+diff --git a/crates/core_arch/src/powerpc/altivec.rs b/crates/core_arch/src/powerpc/altivec.rs
+index 627809c6bc..29cdc41017 100644
+--- a/library/stdarch/crates/core_arch/src/powerpc/altivec.rs
++++ b/library/stdarch/crates/core_arch/src/powerpc/altivec.rs
+@@ -410,8 +410,8 @@ mod sealed {
+
+ #[unstable(feature = "stdarch_powerpc", issue = "111145")]
+ pub trait VectorInsert {
+- type S;
+- unsafe fn vec_insert<const IDX: u32>(self, s: Self::S) -> Self;
++ type Scalar;
++ unsafe fn vec_insert<const IDX: u32>(self, s: Self::Scalar) -> Self;
+ }
+
+ const fn idx_in_vec<T, const IDX: u32>() -> u32 {
+@@ -422,11 +422,11 @@ mod sealed {
+ ($ty:ident) => {
+ #[unstable(feature = "stdarch_powerpc", issue = "111145")]
+ impl VectorInsert for t_t_l!($ty) {
+- type S = $ty;
++ type Scalar = $ty;
+ #[inline]
+ #[target_feature(enable = "altivec")]
+- unsafe fn vec_insert<const IDX: u32>(self, s: Self::S) -> Self {
+- simd_insert(self, const { idx_in_vec::<Self::S, IDX>() }, s)
++ unsafe fn vec_insert<const IDX: u32>(self, s: Self::Scalar) -> Self {
++ simd_insert(self, const { idx_in_vec::<Self::Scalar, IDX>() }, s)
+ }
+ }
+ };
+@@ -442,19 +442,19 @@ mod sealed {
+
+ #[unstable(feature = "stdarch_powerpc", issue = "111145")]
+ pub trait VectorExtract {
+- type S;
+- unsafe fn vec_extract<const IDX: u32>(self) -> Self::S;
++ type Scalar;
++ unsafe fn vec_extract<const IDX: u32>(self) -> Self::Scalar;
+ }
+
+ macro_rules! impl_vec_extract {
+ ($ty:ident) => {
+ #[unstable(feature = "stdarch_powerpc", issue = "111145")]
+ impl VectorExtract for t_t_l!($ty) {
+- type S = $ty;
++ type Scalar = $ty;
+ #[inline]
+ #[target_feature(enable = "altivec")]
+- unsafe fn vec_extract<const IDX: u32>(self) -> Self::S {
+- simd_extract(self, const { idx_in_vec::<Self::S, IDX>() })
++ unsafe fn vec_extract<const IDX: u32>(self) -> Self::Scalar {
++ simd_extract(self, const { idx_in_vec::<Self::Scalar, IDX>() })
+ }
+ }
+ };
+@@ -3233,18 +3233,18 @@ mod sealed {
+
+ #[unstable(feature = "stdarch_powerpc", issue = "111145")]
+ pub trait VectorRl {
+- type B;
+- unsafe fn vec_rl(self, b: Self::B) -> Self;
++ type Shift;
++ unsafe fn vec_rl(self, b: Self::Shift) -> Self;
+ }
+
+ macro_rules! impl_vec_rl {
+ ($fun:ident ($a:ident)) => {
+ #[unstable(feature = "stdarch_powerpc", issue = "111145")]
+ impl VectorRl for $a {
+- type B = t_u!($a);
++ type Shift = t_u!($a);
+ #[inline]
+ #[target_feature(enable = "altivec")]
+- unsafe fn vec_rl(self, b: Self::B) -> Self {
++ unsafe fn vec_rl(self, b: Self::Shift) -> Self {
+ transmute($fun(transmute(self), b))
+ }
+ }
+@@ -3292,7 +3292,7 @@ mod sealed {
+ #[inline]
+ #[target_feature(enable = "altivec")]
+ #[unstable(feature = "stdarch_powerpc", issue = "111145")]
+-pub unsafe fn vec_insert<T, const IDX: u32>(a: T, b: <T as sealed::VectorInsert>::S) -> T
++pub unsafe fn vec_insert<T, const IDX: u32>(a: T, b: <T as sealed::VectorInsert>::Scalar) -> T
+ where
+ T: sealed::VectorInsert,
+ {
+@@ -3310,7 +3310,7 @@ where
+ #[inline]
+ #[target_feature(enable = "altivec")]
+ #[unstable(feature = "stdarch_powerpc", issue = "111145")]
+-pub unsafe fn vec_extract<T, const IDX: u32>(a: T) -> <T as sealed::VectorExtract>::S
++pub unsafe fn vec_extract<T, const IDX: u32>(a: T) -> <T as sealed::VectorExtract>::Scalar
+ where
+ T: sealed::VectorExtract,
+ {
+@@ -3949,7 +3949,7 @@ where
+ #[inline]
+ #[target_feature(enable = "altivec")]
+ #[unstable(feature = "stdarch_powerpc", issue = "111145")]
+-pub unsafe fn vec_rl<T>(a: T, b: <T as sealed::VectorRl>::B) -> T
++pub unsafe fn vec_rl<T>(a: T, b: <T as sealed::VectorRl>::Shift) -> T
+ where
+ T: sealed::VectorRl,
+ {
diff --git a/user/rust/test-be.patch b/user/rust/test-be.patch
new file mode 100644
index 000000000..774f2887c
--- /dev/null
+++ b/user/rust/test-be.patch
@@ -0,0 +1,49 @@
+From 26fa5c2c300f3c3a3ee3109c009bd4a6803a2a4c Mon Sep 17 00:00:00 2001
+From: Nikita Popov <npopov@redhat.com>
+Date: Tue, 11 Jun 2024 10:13:07 +0200
+Subject: [PATCH] Make issue-122805.rs big endian compatible
+
+Instead of not generating the function at all on big endian (which
+makes the CHECK lines fail), instead use to_le() on big endian,
+so that we essentially perform a bswap for both endiannesses.
+---
+ tests/codegen/issues/issue-122805.rs | 21 ++++++++++++---------
+ 1 file changed, 12 insertions(+), 9 deletions(-)
+
+diff --git a/tests/codegen/issues/issue-122805.rs b/tests/codegen/issues/issue-122805.rs
+index 6d108ada6dd..8e03c6c8884 100644
+--- a/tests/codegen/issues/issue-122805.rs
++++ b/tests/codegen/issues/issue-122805.rs
+@@ -39,17 +39,20 @@
+ // OPT3WINX64-NEXT: store <8 x i16>
+ // CHECK-NEXT: ret void
+ #[no_mangle]
+-#[cfg(target_endian = "little")]
+ pub fn convert(value: [u16; 8]) -> [u8; 16] {
++ #[cfg(target_endian = "little")]
++ let bswap = u16::to_be;
++ #[cfg(target_endian = "big")]
++ let bswap = u16::to_le;
+ let addr16 = [
+- value[0].to_be(),
+- value[1].to_be(),
+- value[2].to_be(),
+- value[3].to_be(),
+- value[4].to_be(),
+- value[5].to_be(),
+- value[6].to_be(),
+- value[7].to_be(),
++ bswap(value[0]),
++ bswap(value[1]),
++ bswap(value[2]),
++ bswap(value[3]),
++ bswap(value[4]),
++ bswap(value[5]),
++ bswap(value[6]),
++ bswap(value[7]),
+ ];
+ unsafe { core::mem::transmute::<_, [u8; 16]>(addr16) }
+ }
+--
+2.40.0
+
diff --git a/user/rust/ui-test-strings.patch b/user/rust/ui-test-strings.patch
new file mode 100644
index 000000000..182a233b0
--- /dev/null
+++ b/user/rust/ui-test-strings.patch
@@ -0,0 +1,25 @@
+check-cfg/well-known-values: We add our own vendor, so we need to include it.
+
+codegen/duplicated-path-in-error: musl's ldso error doesn't match glibc's.
+
+diff --git a/tests/ui/check-cfg/well-known-values.stderr b/tests/ui/check-cfg/well-known-values.stderr
+index 00abb5f5e5c..84648541fb7 100644
+--- a/tests/ui/check-cfg/well-known-values.stderr
++++ b/tests/ui/check-cfg/well-known-values.stderr
+@@ -230,7 +230,7 @@ warning: unexpected `cfg` condition value: `_UNEXPECTED_VALUE`
+ LL | target_vendor = "_UNEXPECTED_VALUE",
+ | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ |
+- = note: expected values for `target_vendor` are: `apple`, `espressif`, `fortanix`, `ibm`, `kmc`, `nintendo`, `nvidia`, `pc`, `risc0`, `sony`, `sun`, `unikraft`, `unknown`, `uwp`, `win7`, and `wrs`
++ = note: expected values for `target_vendor` are: `apple`, `espressif`, `fortanix`, `foxkit`, `ibm`, `kmc`, `nintendo`, `nvidia`, `pc`, `risc0`, `sony`, `sun`, `unikraft`, `unknown`, `uwp`, `win7`, and `wrs`
+ = note: see <https://doc.rust-lang.org/nightly/rustc/check-cfg.html> for more information about checking conditional configuration
+
+ warning: unexpected `cfg` condition value: `_UNEXPECTED_VALUE`
+diff --git a/tests/ui/codegen/duplicated-path-in-error.stderr b/tests/ui/codegen/duplicated-path-in-error.stderr
+index d0d34e2f934..2892ebffdde 100644
+--- a/tests/ui/codegen/duplicated-path-in-error.stderr
++++ b/tests/ui/codegen/duplicated-path-in-error.stderr
+@@ -1,2 +1,2 @@
+-error: couldn't load codegen backend /non-existing-one.so: cannot open shared object file: No such file or directory
++error: couldn't load codegen backend /non-existing-one.so: Error loading shared library /non-existing-one.so: No such file or directory
+
diff --git a/user/rxvt-unicode/APKBUILD b/user/rxvt-unicode/APKBUILD
index f9c836dde..ed074972a 100644
--- a/user/rxvt-unicode/APKBUILD
+++ b/user/rxvt-unicode/APKBUILD
@@ -1,26 +1,27 @@
-# Contributor: Moritz Wilhelmy
+# Contributor: Moritz Wilhelmy <mw@barfooze.de>
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Contributor: Jakub Skrzypnik <j.skrzypnik@openmailbox.org>
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=rxvt-unicode
-pkgver=9.22
-pkgrel=4
+pkgver=9.31
+pkgrel=1
pkgdesc="Fork of the rxvt terminal emulator with improved unicode support"
url="http://software.schmorp.de/pkg/rxvt-unicode.html"
arch="all"
options="!check" # No test suite.
license="(GPL-2.0+ OR BSD-2-Clause) AND GPL-2.0+ AND GPL-3.0+"
depends="$pkgname-terminfo"
-makedepends="libx11-dev libxft-dev ncurses fontconfig-dev
- gdk-pixbuf-dev libxrender-dev perl-dev startup-notification-dev"
+makedepends="libx11-dev libxft-dev ncurses fontconfig-dev libptytty-dev
+ gdk-pixbuf-dev libxrender-dev perl-dev startup-notification-dev
+ libxext-dev"
subpackages="$pkgname-doc $pkgname-terminfo::noarch"
-source="http://dist.schmorp.de/$pkgname/$pkgname-$pkgver.tar.bz2
+source="http://dist.schmorp.de/$pkgname/Attic/$pkgname-$pkgver.tar.bz2
gentables.patch
- kerning.patch"
+ kerning.patch
+ "
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -40,10 +41,7 @@ build() {
--enable-text-blink \
--enable-fading \
--enable-startup-notification \
- --enable-unicode3 \
- --disable-utmp \
- --disable-wtmp \
- --disable-lastlog
+ --enable-unicode3
make
}
@@ -54,7 +52,6 @@ package() {
export TERMINFO="$pkgdir/usr/share/terminfo"
mkdir -p "$TERMINFO"
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -66,6 +63,6 @@ terminfo() {
mv "$pkgdir"/usr/share/terminfo "$subpkgdir"/usr/share/terminfo
}
-sha512sums="b39f1b2cbe6dd3fbd2a0ad6a9d391a2b6f49d7c5e67bc65fe44a9c86937f8db379572c67564c6e21ff6e09b447cdfd4e540544e486179e94da0e0db679c04dd9 rxvt-unicode-9.22.tar.bz2
+sha512sums="4d14ecbbb62de1b1c717277f5aae5cfb536e11392f2d4b82c884c1713f437fce8e9dd69a328fa353a55d068d8ee4121a31900f45191acec172d5dc76652b6255 rxvt-unicode-9.31.tar.bz2
a45074b8fe39ffb712bd53b03521a8611fe5887a97ea09c1e85a7086de1042dd0360269803ffe5fcc56425af3c0cc3a55c214b2ef0fcfa2c3a298b4b37d261cb gentables.patch
-42314393f7f061f1aa2cf2fedd3d84e96d3104868b0629cefd9e9b313529afde52127a412992e76935fa2de8d4e685d6b5ce42162cb8d1b0365de63d10c11925 kerning.patch"
+e4e9a05e006a555a8ee6df66dd8d4e93beb9f4e07fd4a889f53dc7ca8cbb49f3c8be140b51bcb26de62e505f3852877aff25f03c6872752133255bbeda291fb8 kerning.patch"
diff --git a/user/rxvt-unicode/kerning.patch b/user/rxvt-unicode/kerning.patch
index a29a6f608..6897ba364 100644
--- a/user/rxvt-unicode/kerning.patch
+++ b/user/rxvt-unicode/kerning.patch
@@ -1,6 +1,6 @@
--- a/src/rxvtfont.C 2008-07-09 12:21:45.000000000 +0400
+++ b/src/rxvtfont.C 2009-10-30 14:32:53.000000000 +0300
-@@ -1195,12 +1195,14 @@
+@@ -1304,12 +1304,14 @@
XGlyphInfo g;
XftTextExtents16 (disp, f, &ch, 1, &g);
diff --git a/user/s6-dns/APKBUILD b/user/s6-dns/APKBUILD
index aa1473ba5..cbccc10cf 100644
--- a/user/s6-dns/APKBUILD
+++ b/user/s6-dns/APKBUILD
@@ -1,69 +1,34 @@
-# Contributor: Laurent Bercot <ska-adelie@skarnet.org>
# Maintainer: Laurent Bercot <ska-adelie@skarnet.org>
pkgname=s6-dns
-pkgver=2.3.0.2
+pkgver=2.4.1.0
pkgrel=0
pkgdesc="skarnet.org's DNS client libraries and command-line DNS client utilities"
url="https://skarnet.org/software/s6-dns/"
arch="all"
options="!check"
license="ISC"
-_skalibs_version=2.8
-depends=
-makedepends="skalibs-dev>=$_skalibs_version skalibs-libs-dev>=$_skalibs_version"
-subpackages="$pkgname-libs $pkgname-dev $pkgname-libs-dev:libsdev $pkgname-doc"
+_skalibs_version=2.14.4
+depends=""
+depends_dev="skalibs-dev>=$_skalibs_version"
+makedepends="$depends_dev"
+subpackages="$pkgname-dev $pkgname-libs $pkgname-doc"
source="https://skarnet.org/software/$pkgname/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--enable-shared \
- --enable-static \
--disable-allstatic \
--prefix=/usr \
- --libdir=/usr/lib \
- --libexecdir="/usr/lib/$package" \
- --with-dynlib=/lib
+ --libexecdir="/usr/lib/$pkgname" \
+ --with-pkgconfig \
+ --enable-pkgconfig
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
+ mkdir -p -m 0755 "$pkgdir/usr/share/doc"
+ cp -a "$builddir/doc" "$pkgdir/usr/share/doc/$pkgname"
}
-
-libs() {
- pkgdesc="$pkgdesc (shared libraries)"
- depends="skalibs-libs>=$_skalibs_version"
- mkdir -p "$subpkgdir/usr/lib"
- mv "$pkgdir"/usr/lib/*.so.* "$subpkgdir/usr/lib/"
-}
-
-
-dev() {
- pkgdesc="$pkgdesc (development files)"
- depends="skalibs-dev>=$_skalibs_version"
- mkdir -p "$subpkgdir/usr/include" "$subpkgdir/usr/lib"
- mv "$pkgdir/usr/include" "$subpkgdir/usr/"
- mv "$pkgdir"/usr/lib/*.a "$subpkgdir/usr/lib/"
-}
-
-
-libsdev() {
- pkgdesc="$pkgdesc (development files for dynamic linking)"
- depends="$pkgname-dev"
- mkdir -p "$subpkgdir/usr/lib"
- mv "$pkgdir"/usr/lib/*.so "$subpkgdir/usr/lib/"
-}
-
-
-doc() {
- pkgdesc="$pkgdesc (documentation)"
- depends=
- install_if="docs $pkgname=$pkgver-r$pkgrel"
- mkdir -p "$subpkgdir/usr/share/doc"
- cp -a "$builddir/doc" "$subpkgdir/usr/share/doc/$pkgname"
-}
-
-sha512sums="fec0edf852423bf8f717fcdc3c00c8f38e7bab4d9a03d14e6e81ad3f175b5db57be44409761bbd990f56f81c3ae8e0aa76ab8c5b65fec823a0ce392bf41cdf33 s6-dns-2.3.0.2.tar.gz"
+sha512sums="48e8c6b0bf0704b674f56267ea3e4b7261bbc6344b121ec87053a9a7e2f4740e5e90ec60eaaa96a1e0fe08f82f4f8ffd8b29d4d097a1a108d9bcbaae0de3905b s6-dns-2.4.1.0.tar.gz"
diff --git a/user/s6-linux-utils/APKBUILD b/user/s6-linux-utils/APKBUILD
new file mode 100644
index 000000000..6dcd1feb8
--- /dev/null
+++ b/user/s6-linux-utils/APKBUILD
@@ -0,0 +1,32 @@
+# Maintainer: Laurent Bercot <ska-adelie@skarnet.org>
+pkgname=s6-linux-utils
+pkgver=2.6.3.0
+pkgrel=0
+pkgdesc="skarnet.org's Linux-specific miscellaneous utilities"
+url="https://skarnet.org/software/s6-linux-utils/"
+arch="all"
+options="!check"
+license="ISC"
+_skalibs_version=2.14.4
+depends=""
+makedepends="skalibs-dev>=$_skalibs_version"
+subpackages="$pkgname-doc"
+source="https://skarnet.org/software/$pkgname/$pkgname-$pkgver.tar.gz"
+
+build() {
+ ./configure \
+ --disable-allstatic \
+ --prefix=/usr \
+ --with-dynlib=/lib \
+ --with-pkgconfig \
+ --enable-pkgconfig
+ make
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ mkdir -p -m 0755 "$pkgdir/usr/share/doc"
+ cp -a "$builddir/doc" "$pkgdir/usr/share/doc/$pkgname"
+}
+
+sha512sums="ddd8f96d637b25d3f846d546145325a8cb78a3ba3cbf897649f924ee739c7dbe891907f886dd25f11d0354b40022fe7d16b1907044716d05720e8fd6c0171e60 s6-linux-utils-2.6.3.0.tar.gz"
diff --git a/user/s6-networking/APKBUILD b/user/s6-networking/APKBUILD
index 09ba89702..b6757a898 100644
--- a/user/s6-networking/APKBUILD
+++ b/user/s6-networking/APKBUILD
@@ -1,70 +1,39 @@
-# Contributor: Laurent Bercot <ska-adelie@skarnet.org>
# Maintainer: Laurent Bercot <ska-adelie@skarnet.org>
pkgname=s6-networking
-pkgver=2.3.0.4
+pkgver=2.7.1.0
pkgrel=0
-pkgdesc="skarnet.org's UCSPI TCP tools, access control tools, and network time management utilities."
-url="https://skarnet.org/software/$pkgname/"
+pkgdesc="skarnet.org's UCSPI TCP and TLS tools, access control tools, and network time management utilities."
+url="https://skarnet.org/software/s6-networking/"
arch="all"
options="!check" # No test suite.
license="ISC"
-_skalibs_version=2.8
+_skalibs_version=2.14.4
+_execline_version=2.9.7
+_s6_version=2.13.2
+_s6dns_version=2.4.1
+_bearssl_version=0.6
depends="execline"
-makedepends="skalibs-dev>=$_skalibs_version skalibs-libs-dev>=$_skalibs_version execline-dev s6-dev s6-libs-dev s6-dns-dev s6-dns-libs-dev bearssl-dev"
-subpackages="$pkgname-libs $pkgname-dev $pkgname-libs-dev:libsdev $pkgname-doc"
+depends_dev="skalibs-dev>=$_skalibs_version"
+makedepends="$depends_dev execline-dev>=$_execline_version s6-dev>=$_s6_version s6-dns-dev>=$_s6dns_version bearssl-dev>=$_bearssl_version"
+subpackages="$pkgname-dev $pkgname-libs $pkgname-doc"
source="https://skarnet.org/software/$pkgname/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
- ./configure \
- --enable-shared \
- --enable-static \
- --disable-allstatic \
- --prefix=/usr \
- --libdir=/usr/lib \
- --libexecdir="/usr/lib/$pkgname" \
- --with-dynlib=/lib \
- --enable-ssl=bearssl
- make
+ ./configure \
+ --enable-shared \
+ --disable-allstatic \
+ --prefix=/usr \
+ --libexecdir="/usr/lib/$pkgname" \
+ --with-pkgconfig \
+ --enable-pkgconfig \
+ --enable-ssl=bearssl
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" install
+ mkdir -p -m 0755 "$pkgdir/usr/share/doc"
+ cp -a "$builddir/doc" "$pkgdir/usr/share/doc/$pkgname"
}
-
-libs() {
- pkgdesc="$pkgdesc (shared libraries)"
- depends="skalibs-libs>=$_skalibs_version"
- mkdir -p "$subpkgdir/usr/lib"
- mv "$pkgdir"/usr/lib/*.so.* "$subpkgdir/usr/lib/"
-}
-
-
-dev() {
- pkgdesc="$pkgdesc (development files)"
- depends="skalibs-dev>=$_skalibs_version"
- mkdir -p "$subpkgdir/usr/include" "$subpkgdir/usr/lib"
- mv "$pkgdir/usr/include" "$subpkgdir/usr/"
- mv "$pkgdir"/usr/lib/*.a "$subpkgdir/usr/lib/"
-}
-
-
-libsdev() {
- pkgdesc="$pkgdesc (development files for dynamic linking)"
- depends="$pkgname-dev"
- mkdir -p "$subpkgdir/usr/lib"
- mv "$pkgdir"/usr/lib/*.so "$subpkgdir/usr/lib/"
-}
-
-
-doc() {
- pkgdesc="$pkgdesc (documentation)"
- depends=
- install_if="docs $pkgname=$pkgver-r$pkgrel"
- mkdir -p "$subpkgdir/usr/share/doc"
- cp -a "$builddir/doc" "$subpkgdir/usr/share/doc/$pkgname"
-}
-
-sha512sums="e0a6dbaf3420beae5b6bab1cedeaeb5d58dea36c9a6e1c3f7140515c83eaf3e872f896d90e43771d74669edcc0a3f25ba8135cc3a21d378a297d92ba2abc62d3 s6-networking-2.3.0.4.tar.gz"
+sha512sums="33741efa5c1908f8e7396929df08c3591e25b7c58335b331a146db17a9b7e5c00b75dd3337aa46114723969b8490fb1b6754a25357003780bdfd0a2fd8e3283c s6-networking-2.7.1.0.tar.gz"
diff --git a/user/s6-portable-utils/APKBUILD b/user/s6-portable-utils/APKBUILD
new file mode 100644
index 000000000..6d0909f02
--- /dev/null
+++ b/user/s6-portable-utils/APKBUILD
@@ -0,0 +1,32 @@
+# Maintainer: Laurent Bercot <ska-adelie@skarnet.org>
+pkgname=s6-portable-utils
+pkgver=2.3.1.0
+pkgrel=0
+pkgdesc="skarnet.org's portable miscellaneous utilities"
+url="https://skarnet.org/software/s6-portable-utils/"
+arch="all"
+options="!check"
+license="ISC"
+_skalibs_version=2.14.4
+depends=""
+makedepends="skalibs-dev>=$_skalibs_version"
+subpackages="$pkgname-doc"
+source="https://skarnet.org/software/$pkgname/$pkgname-$pkgver.tar.gz"
+
+build() {
+ ./configure \
+ --disable-allstatic \
+ --prefix=/usr \
+ --with-dynlib=/lib \
+ --with-pkgconfig \
+ --enable-pkgconfig
+ make
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ mkdir -p -m 0755 "$pkgdir/usr/share/doc"
+ cp -a "$builddir/doc" "$pkgdir/usr/share/doc/$pkgname"
+}
+
+sha512sums="80ab6152d5c3f88449d77924ceb43ccef12a41918d2fd8042ded15423b8f65e612d582c6475d73c500380018a91f7adc48c71740c898015565a046a8fbef1cd5 s6-portable-utils-2.3.1.0.tar.gz"
diff --git a/user/samurai/APKBUILD b/user/samurai/APKBUILD
new file mode 100644
index 000000000..3bcd50c72
--- /dev/null
+++ b/user/samurai/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=samurai
+pkgver=1.2
+pkgrel=0
+pkgdesc="Pure-C drop-in replacement for ninja"
+url="https://github.com/michaelforney/samurai"
+arch="all"
+options="!check" # no test suite and upstream build-tests against Chromium anyhow
+license="Apache-2.0 OR ISC"
+depends=""
+makedepends=""
+provides="ninja"
+replaces="ninja"
+subpackages="$pkgname-doc"
+source="https://github.com/michaelforney/samurai/releases/download/$pkgver/samurai-$pkgver.tar.gz
+ CVE-2021-30218.patch
+ CVE-2021-30219.patch"
+
+# secfixes:
+# 1.2-r0:
+# - CVE-2021-30218
+# - CVE-2021-30219
+
+build() {
+ make
+}
+
+package() {
+ make PREFIX=/usr DESTDIR="$pkgdir" install
+ cd "$pkgdir/usr/bin"
+ ln -s samu ninja
+}
+
+sha512sums="bbe6a582c34b04f1df53b76c1647aa3e03c4698ebf7591a203935f11ffa05971bbcb86dc1a8c06aeb904cdc741abb08918122810fc47216fed0a6d9f87fd1225 samurai-1.2.tar.gz
+6e1c3a0bd92e006f364a81e9e51394f1bc583efa96120306fe33dc0a48cb4babaa8e8c97d754d3c37cda4b4936e77f64e4c138ccb8cfedfdce43adb09c393edb CVE-2021-30218.patch
+0504b137fc9ac113453075a22bdfac4ab7616f668e640b7125041400729aaecad1173c528934223246035f68a95d92c6a85e62d1ea5fea996d85647cb33483eb CVE-2021-30219.patch"
diff --git a/user/samurai/CVE-2021-30218.patch b/user/samurai/CVE-2021-30218.patch
new file mode 100644
index 000000000..1d6663865
--- /dev/null
+++ b/user/samurai/CVE-2021-30218.patch
@@ -0,0 +1,29 @@
+From e84b6d99c85043fa1ba54851ee500540ec206918 Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Fri, 2 Apr 2021 17:27:48 -0700
+Subject: [PATCH] util: Check for NULL string in writefile
+
+This check was there previously, but was removed in f549b757 with
+the addition of a check during parse that every rule has rspfile
+if and only if it has rspfile_content. However, this fails to
+consider the possibility of those variables coming from the edge
+or global environment. So, re-add the check.
+
+Fixes #67.
+---
+ util.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/util.c b/util.c
+index ea5c3ce..2a59881 100644
+--- a/util.c
++++ b/util.c
+@@ -258,7 +258,7 @@ writefile(const char *name, struct string *s)
+ return -1;
+ }
+ ret = 0;
+- if (fwrite(s->s, 1, s->n, f) != s->n || fflush(f) != 0) {
++ if (s && (fwrite(s->s, 1, s->n, f) != s->n || fflush(f) != 0)) {
+ warn("write %s:", name);
+ ret = -1;
+ }
diff --git a/user/samurai/CVE-2021-30219.patch b/user/samurai/CVE-2021-30219.patch
new file mode 100644
index 000000000..fbc97b03d
--- /dev/null
+++ b/user/samurai/CVE-2021-30219.patch
@@ -0,0 +1,26 @@
+From d2af3bc375e2a77139c3a28d6128c60cd8d08655 Mon Sep 17 00:00:00 2001
+From: Michael Forney <mforney@mforney.org>
+Date: Sun, 4 Apr 2021 03:50:09 -0700
+Subject: [PATCH] parse: Check for non-empty command/rspfile/rspfile_content
+
+This matches ninja behavior and prevents the possibility of a rule
+with an empty (NULL) command string.
+
+Fixes #68.
+---
+ parse.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/parse.c b/parse.c
+index f79a5ee..b4b98a1 100644
+--- a/parse.c
++++ b/parse.c
+@@ -42,6 +42,8 @@ parserule(struct scanner *s, struct environment *env)
+ var = scanname(s);
+ parselet(s, &val);
+ ruleaddvar(r, var, val);
++ if (!val)
++ continue;
+ if (strcmp(var, "command") == 0)
+ hascommand = true;
+ else if (strcmp(var, "rspfile") == 0)
diff --git a/user/sane-airscan/APKBUILD b/user/sane-airscan/APKBUILD
new file mode 100644
index 000000000..1694d3d0f
--- /dev/null
+++ b/user/sane-airscan/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=sane-airscan
+pkgver=0.99.10
+pkgrel=0
+pkgdesc="Universal scanner driver for AirScan (eSCL) scanners"
+url=" "
+arch="all"
+license="unknown"
+depends=""
+makedepends="avahi-dev glib-dev libjpeg-turbo-dev libpng-dev libsoup-dev
+ libxml2-dev meson ninja sane-dev"
+subpackages="$pkgname-doc"
+source="sane-airscan-$pkgver.tar.gz::https://github.com/alexpevzner/sane-airscan/archive/$pkgver.tar.gz"
+
+build() {
+ meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ . output
+ ninja -C output
+}
+
+check() {
+ ninja -C output test
+}
+
+package() {
+ DESTDIR="$pkgdir" ninja -C output install
+ mv "$pkgdir"/usr/etc "$pkgdir"/etc
+ rm "$pkgdir"/etc/sane.d/dll.conf
+}
+
+sha512sums="7a3d98e01ad883856eb79c522aff50243b399717a6ba2db07eec66e49a83d365ad4db6d3f87718592f3b85832a2098e86ae094d9f06ed951ebc23887cddb75b7 sane-airscan-0.99.10.tar.gz"
diff --git a/user/sane/APKBUILD b/user/sane/APKBUILD
index 1a5e2fc16..2eade25c0 100644
--- a/user/sane/APKBUILD
+++ b/user/sane/APKBUILD
@@ -3,16 +3,17 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=sane
_pkgname=sane-backends
-pkgver=1.0.27
-pkgrel=4
+pkgver=1.3.1
+_hash=83bdbb6c9a115184c2d48f1fdc6847db
+pkgrel=0
pkgdesc="Scanner access library"
url="http://www.sane-project.org/"
arch="all"
-license="GPL-2.0+ AND GPL-2.0+-with-sane-exception AND Public-Domain"
+license="GPL-2.0+ AND Public-Domain"
depends=""
makedepends="diffutils file libtool libusb-dev v4l-utils-dev net-snmp-dev
libpng-dev libjpeg-turbo-dev tiff-dev libgphoto2-dev libieee1284-dev
- linux-headers ncurses-dev"
+ libxml2-dev linux-headers ncurses-dev python3-dev"
install="saned.pre-install $pkgname.pre-install"
pkgusers="saned"
pkggroups="scanner"
@@ -20,37 +21,37 @@ _backends="abaton agfafocus apple artec artec_eplus48u as6e avision bh canon
canon630u canon_dr canon_pp cardscan coolscan coolscan2 coolscan3 dc25
dc210 dc240 dell1600n_net dmc epjitsu epson epson2 epsonds fujitsu
genesys gphoto2 gt68xx hp hp3500 hp3900 hp4200 hp5400 hp5590 hpsj5s
- hpljm1005 hs2p ibm kodak kodakaio kvs1025 kvs20xx kvs40xx leo lexmark
- ma1509 magicolor matsushita microtek microtek2 mustek mustek_pp
- mustek_usb mustek_usb2 nec net niash p5 pie pieusb pixma plustek
- plustek_pp ricoh rts8891 s9036 sceptre sharp sm3600 sm3840 snapscan
- sp15c st400 stv680 tamarack teco1 teco2 teco3 test u12 umax umax_pp
- umax1220u v4l xerox_mfp"
+ hpljm1005 hs2p ibm kodak kodakaio kvs1025 kvs20xx leo lexmark ma1509
+ magicolor matsushita microtek microtek2 mustek mustek_pp mustek_usb
+ nec net niash p5 pie pieusb pixma plustek plustek_pp ricoh ricoh2
+ rts8891 s9036 sceptre sharp sm3600 sm3840 snapscan sp15c st400 stv680
+ tamarack teco1 teco2 teco3 test u12 umax umax_pp umax1220u v4l
+ xerox_mfp"
case "$CARCH" in
x86*) _backends="$_backends qcam";;
esac
-_pkgdesc_dell1600n_net="SANE backend for Dell 1600n that supports colour and monochrome scans over ethernet, usb not supported"
+_pkgdesc_dell1600n_net="SANE backend for Dell 1600n (Ethernet only; USB not supported)"
for _backend in $_backends; do
subpackages="$subpackages $pkgname-backend-$_backend:_backend"
done
subpackages="$pkgname-doc $pkgname-dev $subpackages $pkgname-utils saned
- $pkgname-udev::noarch $_pkgname::noarch"
-source="http://distfiles.gentoo.org/distfiles/$_pkgname-$pkgver.tar.gz
+ saned-openrc:openrc:noarch $pkgname-udev::noarch $_pkgname::noarch
+ $pkgname-lang"
+source="https://gitlab.com/sane-project/backends/uploads/$_hash/$_pkgname-$pkgver.tar.gz
saned.initd
include.patch
network.patch
pidfile.patch
check.patch
+ BTS-304.patch
"
builddir="$srcdir"/$_pkgname-$pkgver
build() {
- cd "$builddir"
./configure \
--prefix=/usr \
--sysconfdir=/etc \
- --with-docdir=/usr/share/doc/$pkgname \
--with-usb \
--disable-rpath \
--disable-locking
@@ -58,14 +59,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
- echo -n "" > "$pkgdir"/etc/sane.d/dll.conf
+ printf "" > "$pkgdir"/etc/sane.d/dll.conf
install -Dm644 backend/dll.aliases "$pkgdir"/etc/sane.d/dll.aliases
}
@@ -81,6 +80,12 @@ saned() {
mkdir -p "$subpkgdir"/etc/sane.d "$subpkgdir"/usr
mv "$pkgdir"/etc/sane.d/saned.conf "$subpkgdir"/etc/sane.d
mv "$pkgdir"/usr/sbin "$subpkgdir"/usr/
+}
+
+openrc() {
+ pkgdesc="Network scanner server (OpenRC runscripts)"
+ depends="saned"
+ install_if="saned=$pkgver-r$pkgrel openrc"
install -Dm755 "$srcdir"/saned.initd "$subpkgdir"/etc/init.d/saned
}
@@ -101,7 +106,7 @@ udev() {
backends() {
local _backend;
pkgdesc="$pkgdesc (metapackage)"
- depends="$pkgname-utils $pkgname-saned"
+ depends="$pkgname-utils saned"
for _backend in $_backends; do
[ "$_backend" = "test" ] && continue
depends="$depends $pkgname-backend-$_backend"
@@ -110,7 +115,7 @@ backends() {
}
_backend() {
- local name=${subpkgname#$pkgname-backend-}
+ local name="${subpkgname#$pkgname-backend-}"
depends="$pkgname"
pkgdesc=$(eval echo \$_pkgdesc_$name)
if [ ! "$pkgdesc" ]; then
@@ -134,9 +139,10 @@ _backend() {
fi
}
-sha512sums="c6552768bfc10216730fc11011c82f74ca0952182019ded3916072147ec09be5c975ce1d37dc3ccea050c488dbdf983c2ca17dcd702644060ba796ae2591f9c5 sane-backends-1.0.27.tar.gz
+sha512sums="c6c12bce5242fcdf208f034cc544605cad36fad60316cb51f0e1f6fe23d1566823778c7af4b0fc94ca4154e2cd3e38a9202073e4a4af05f641c3da081722a535 sane-backends-1.3.1.tar.gz
0a06eaa28b345202f2bdf8361e06f843bb7a010b7d8f80132f742672c94249c43f64031cefa161e415e2e2ab3a53b23070fb63854283f9e040f5ff79394ac7d1 saned.initd
1779ff8beb1ba5f9238c25d819a7f0045f7e257c19b511315feb85650e445ca86450a9e1d7ff8650499d3dae808589a6c2e358d5f3f39a3f40ce4999179b86d6 include.patch
-9cb595841f59b5105ecc85e4c0ad8781c52caa2354fb823c920ec467e88afbe47f2b3f4a7a3980bef5dbf22983c5786f051a9d10aea97b4bf7c4a05378592029 network.patch
-09505943f9441854a6c333f19e2535b4a646a8cc060fe82c6261e7d29c72773ebe98d43a91acc951f4336a3c8b4c84ab7c7b0763426136b4b59d9546bc2fa8c0 pidfile.patch
-cfa327209efd9a2a2db7cbcf571852959823aaa19b43d5f6415834cd5ae38b6324ecae16779f6f896aa0d7ac890fe23244100b7d6a68e5e9d52cd38ec82bfac8 check.patch"
+ef5d572bd29463e0690f6b45ddc609045ba6e40ab7c6bdab065b9480eef38884604650fd390d2a3c46b1f13b228e700392a6f635b4d7372130de6b2106208405 network.patch
+30ef4a151e896ad415bab5e6a2963611321ff39d4b91d591d2678a5f73b1cd809f90855f970edec3d944aa0f48fb2902c20184794f941312b849e7ab44967030 pidfile.patch
+4de6f60452c0451769f5ce41e41ca4c2867a723e0d2bf22796dc8a266359bdc8a9e9542f4ba2dc42b15bd25b1c83d2c339177796043fdbcbc9d73ad4957f723c check.patch
+9c4877335531415df4aa37d797927765076f2e98d7301e057b24d5e45a696b75e86140eec403a599508c270ff63faf29b07ced6591a647ff48d280edcab70208 BTS-304.patch"
diff --git a/user/sane/BTS-304.patch b/user/sane/BTS-304.patch
new file mode 100644
index 000000000..6d36589e9
--- /dev/null
+++ b/user/sane/BTS-304.patch
@@ -0,0 +1,30 @@
+diff --git a/backend/genesys/image_pixel.cpp b/backend/genesys/image_pixel.cpp
+index 1b83e127d..1ebba7fe0 100644
+--- a/backend/genesys/image_pixel.cpp
++++ b/backend/genesys/image_pixel.cpp
+@@ -23,6 +23,7 @@
+ #include "image.h"
+
+ #include <array>
++#include <cmath>
+
+ namespace genesys {
+
+@@ -184,7 +185,7 @@ void set_pixel_to_row(std::uint8_t* data, std::size_t x, Pixel pixel, PixelForma
+ float val = (pixel.r >> 8) * 0.3f;
+ val += (pixel.g >> 8) * 0.59f;
+ val += (pixel.b >> 8) * 0.11f;
+- data[x] = static_cast<std::uint16_t>(val);
++ data[x] = static_cast<std::uint16_t>(roundf(val));
+ return;
+ }
+ case PixelFormat::I16: {
+@@ -192,7 +193,7 @@ void set_pixel_to_row(std::uint8_t* data, std::size_t x, Pixel pixel, PixelForma
+ float val = pixel.r * 0.3f;
+ val += pixel.g * 0.59f;
+ val += pixel.b * 0.11f;
+- auto val16 = static_cast<std::uint16_t>(val);
++ auto val16 = static_cast<std::uint16_t>(roundf(val));
+ data[x] = val16 & 0xff;
+ data[x + 1] = (val16 >> 8) & 0xff;
+ return;
diff --git a/user/sane/check.patch b/user/sane/check.patch
index afbc7ef4c..e79ecbdf7 100644
--- a/user/sane/check.patch
+++ b/user/sane/check.patch
@@ -1,6 +1,6 @@
--- a/testsuite/sanei/Makefile.in
+++ b/testsuite/sanei/Makefile.in
-@@ -77,7 +77,7 @@
+@@ -87,7 +87,7 @@
POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
diff --git a/user/sane/network.patch b/user/sane/network.patch
index 4e422e28d..a8f53cfce 100644
--- a/user/sane/network.patch
+++ b/user/sane/network.patch
@@ -1,23 +1,22 @@
-diff --git a/sanei/sanei_tcp.c b/sanei/sanei_tcp.c
-index a57d7c7..d0a1e92 100644
---- a/sanei/sanei_tcp.c
-+++ b/sanei/sanei_tcp.c
-@@ -45,6 +45,7 @@
- #include <unistd.h>
+--- sane-backends-1.0.30/sanei/sanei_tcp.c 2020-05-17 06:54:18.000000000 -0500
++++ sane-backends-1.0.30/sanei/sanei_tcp.c 2020-06-10 14:10:06.980398975 -0500
+@@ -44,6 +44,7 @@
#include <stdlib.h>
#include <string.h>
+ #include <limits.h>
+#include <time.h>
- #ifdef HAVE_WINSOCK2_H
- #include <winsock2.h>
-@@ -123,14 +124,27 @@ sanei_tcp_write(int fd, const u_char * buf, int count)
- ssize_t
- sanei_tcp_read(int fd, u_char * buf, int count)
+ #ifndef SSIZE_MAX
+ #define SSIZE_MAX LONG_MAX
+@@ -128,6 +130,7 @@ sanei_tcp_read(int fd, u_char * buf, siz
{
-- ssize_t bytes_recv = 0, rc = 1;
-+ ssize_t bytes_recv = 0, rc = 1;
+ size_t bytes_recv = 0;
+ ssize_t rc = 1;
+ int retry = 5;
+ if (count > SSIZE_MAX) {
+ errno = EINVAL;
+@@ -137,9 +139,21 @@ sanei_tcp_read(int fd, u_char * buf, siz
while (bytes_recv < count && rc > 0)
{
rc = recv(fd, buf+bytes_recv, count-bytes_recv, 0);
diff --git a/user/sane/pidfile.patch b/user/sane/pidfile.patch
index 457755bdb..579c99939 100644
--- a/user/sane/pidfile.patch
+++ b/user/sane/pidfile.patch
@@ -1,6 +1,6 @@
--- a/frontend/saned.c
+++ b/frontend/saned.c
-@@ -224,7 +224,7 @@
+@@ -230,7 +230,7 @@
int numchildren;
#define SANED_CONFIG_FILE "saned.conf"
diff --git a/user/sane/sane.pre-install b/user/sane/sane.pre-install
index b75c867de..9b89cab57 100644
--- a/user/sane/sane.pre-install
+++ b/user/sane/sane.pre-install
@@ -1,5 +1,5 @@
#!/bin/sh
-addgroup -S scanner 2>/dev/null
+groupadd -r scanner 2>/dev/null
exit 0
diff --git a/user/sane/saned.pre-install b/user/sane/saned.pre-install
index caad990d9..79ca791dd 100644
--- a/user/sane/saned.pre-install
+++ b/user/sane/saned.pre-install
@@ -1,5 +1,6 @@
#!/bin/sh
-adduser -SDH -h /run/saned -s /sbin/nologin -G scanner -g saned saned 2>/dev/null
+useradd -c saned -s /sbin/nologin -g scanner \
+ -m -d /run/saned -r saned 2>/dev/null
exit 0
diff --git a/user/sassc/APKBUILD b/user/sassc/APKBUILD
index ee082659f..e09466f60 100644
--- a/user/sassc/APKBUILD
+++ b/user/sassc/APKBUILD
@@ -1,42 +1,37 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=sassc
-pkgver=3.5.0
+pkgver=3.6.1
pkgrel=0
pkgdesc="CSS preprocessor and extension language compiler"
url="https://sass-lang.com/"
arch="all"
license="MIT"
depends=""
-makedepends="libsass-dev"
+makedepends="autoconf automake libsass-dev libtool"
subpackages=""
source="sassc-$pkgver.tar.gz::https://github.com/sass/sassc/archive/$pkgver.tar.gz"
prepare() {
- cd "$builddir"
default_prepare
export SASSC_VERSION=$pkgver
autoreconf --force --install
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
- --prefix=/usr \
- --enable-shared
+ --prefix=/usr
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="9c94056f66688016dd8eaae9cc791be4b397406b89f1289946c4481b5e1904486878d22fd65e695ed89f9b41a9f902932eb4074e7b0923ce3d4823ea3140334f sassc-3.5.0.tar.gz"
+sha512sums="b6df8f481db0737ca08808c0849dcbd83e80799d883271d382607b7a74028153195f5f9c26768ffe1a9a92ee8c26be3c382ad7b3a5336eb6e4a0dad58132690e sassc-3.6.1.tar.gz"
diff --git a/user/sbc/APKBUILD b/user/sbc/APKBUILD
index 9a71331ac..457df47ce 100644
--- a/user/sbc/APKBUILD
+++ b/user/sbc/APKBUILD
@@ -15,7 +15,6 @@ subpackages="$pkgname-dev $pkgname-utils"
source="https://www.kernel.org/pub/linux/bluetooth/sbc-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,7 +27,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/schismtracker/APKBUILD b/user/schismtracker/APKBUILD
index 837f86389..6e09d6af0 100644
--- a/user/schismtracker/APKBUILD
+++ b/user/schismtracker/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Horst Burkhardt <horst@adelielinux.org>
# Maintainer: Horst Burkhardt <horst@adelielinux.org>
pkgname=schismtracker
-pkgver=20180810
+pkgver=20200412
pkgrel=0
pkgdesc="A highly portable Impulse Tracker clone"
url="http://schismtracker.org/"
@@ -10,22 +10,19 @@ options="!check" # No test suite.
license="GPL-2.0-only"
depends=""
makedepends="libbsd-dev libtool libx11-dev libxau-dev libxdmcp-dev libxext-dev
- python3 sdl-dev"
+ python3 sdl-dev autoconf automake"
subpackages="$pkgname-doc"
source="$pkgname-$pkgver.tar.gz::https://github.com/schismtracker/schismtracker/archive/$pkgver.tar.gz"
build() {
- cd "$builddir"
autoreconf -i
./configure \
- --enable-fortify-source \
- --prefix=/usr
+ --prefix=/usr
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d131cec7e4749941f0e5806bff14e0782a01f14f8a68605270d09ff40af1d20fffd4c7caf2926c5a63d3e0c0bb1ed24ce4a5e4cccc280ac045a22cfb8544c498 schismtracker-20180810.tar.gz"
+sha512sums="f4c55ad7d47c9e90aecd8fbe9be399e0b82cd8a815ba1df9c1e23141b0c8a8bb80c9256ce5530327f52b3a34bf84b918d4e1f093ab19d47c180435a63ee6f23b schismtracker-20200412.tar.gz"
diff --git a/user/scons/APKBUILD b/user/scons/APKBUILD
index b2c55c08d..934a09d68 100644
--- a/user/scons/APKBUILD
+++ b/user/scons/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=scons
-pkgver=3.0.5
+pkgver=3.1.2
pkgrel=0
pkgdesc="Python-based software building system"
url="https://scons.org/"
@@ -26,5 +26,5 @@ package() {
python3 setup.py install --prefix=/usr --root="$pkgdir"
}
-sha512sums="0477038b014674049f12899b64584d44a85283d521b2422561e42020a5ae296a5af005684087c3ff410ed3fcbdcc5ff61998bc429eb29513f2a864138ffc4945 scons-3.0.5.tar.gz
+sha512sums="bfc0d58d33408a03eb37c1eff166af8139078026e6b43d6274afceac889d0a6743e359e89ad9a30be5ca43aeed26fba92fa4732854750b7d53091ef3e99b3d33 scons-3.1.2.tar.gz
cb8be26f0d8cae7974dffcb3008c67254e8904bb8bb91f9732dd01a9942e33d57527101ec4104a866061096b991a336d00b344da48cf835489fc5d26fb1f331e python3-bang.patch"
diff --git a/user/screen/APKBUILD b/user/screen/APKBUILD
index e717f570d..9e95191e9 100644
--- a/user/screen/APKBUILD
+++ b/user/screen/APKBUILD
@@ -2,20 +2,21 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=screen
-pkgver=4.6.2
+pkgver=5.0.0
pkgrel=0
pkgdesc="A window manager that multiplexes a physical terminal"
-url="http://ftp.gnu.org/gnu/screen/"
+url="https://ftp.gnu.org/gnu/screen/"
arch="all"
-license="GPL-3.0+"
options="!check" # No test suite.
-makedepends="ncurses-dev utmps-dev"
+license="GPL-3.0+"
+depends=""
+makedepends="ncurses-dev utmps-dev libutempter-dev linux-pam-dev"
subpackages="$pkgname-doc"
-source="http://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz
- utmpx.patch"
+source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz
+ missing-header.patch
+ "
build() {
- cd "$builddir"
LIBS="-lutmps -lskarnet" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -23,12 +24,11 @@ build() {
--sysconfdir=/etc \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
- --enable-colors256
+ --enable-utmp
make
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
# remove suid root
@@ -39,5 +39,5 @@ package() {
install -Dm644 etc/screenrc "$pkgdir"/etc/skel/.screenrc
}
-sha512sums="224bd16ad5ae501d1b8bb7d2ba9cc19e6a0743de5a5b320109c2f6bf3b1ca564cc7094ed9211be13733d9d769cde77d13fe236341d448cad0518038ab1e85c99 screen-4.6.2.tar.gz
-82aca3e16c8cd7a3029d3b589ff2dd3471708d6287979ebb5cfdaedbd1f3012c0cd660b131e0cbe142b99786e49ef8b24c63159523d870e95ccf71ec94b82634 utmpx.patch"
+sha512sums="18a163313025c58950ec65fa83037ba1df0fa8e2346925593217fb0a6596f2f51914a4f0aec7f0e1c280d3d3ef964e7a886521f41f4b96f4ff08935be7f62117 screen-5.0.0.tar.gz
+b698b28177362b2f078b01d8ea51d4b9061f5663c6b2f4d5c89dac506f6b035c33cc505c5c84d8a38ee48e3ab202fc15d4c90dff1baf5368b4ddf128f4ae9556 missing-header.patch"
diff --git a/user/screen/missing-header.patch b/user/screen/missing-header.patch
new file mode 100644
index 000000000..34e44d4fe
--- /dev/null
+++ b/user/screen/missing-header.patch
@@ -0,0 +1,11 @@
+diff -ur a/utmp.c b/utmp.c
+--- a/utmp.c 2024-08-29 09:46:14.655729962 +0000
++++ b/utmp.c 2024-08-29 09:47:54.248164818 +0000
+@@ -35,6 +35,7 @@
+ #include <fcntl.h>
+ #include <stdint.h>
+ #include <stdbool.h>
++#include <signal.h>
+
+ #include "screen.h"
+
diff --git a/user/screen/utmpx.patch b/user/screen/utmpx.patch
deleted file mode 100644
index c8c6f444b..000000000
--- a/user/screen/utmpx.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- screen-4.6.2/os.h.old 2018-09-27 23:11:11.655480028 -0700
-+++ screen-4.6.2/os.h 2018-09-27 23:11:34.745808665 -0700
-@@ -250,17 +250,13 @@
- #endif
-
- #if defined(UTMPOK) || defined(BUGGYGETLOGIN)
--# if defined(SVR4) && !defined(DGUX) && !defined(__hpux) && !defined(linux)
-+# if defined(linux)
- # include <utmpx.h>
- # define UTMPFILE UTMPX_FILE
- # define utmp utmpx
--# define getutent getutxent
- # define getutid getutxid
- # define getutline getutxline
- # define pututline pututxline
--# define setutent setutxent
--# define endutent endutxent
--# define ut_time ut_xtime
- # else /* SVR4 */
- # include <utmp.h>
- # endif /* SVR4 */
diff --git a/user/screengrab/APKBUILD b/user/screengrab/APKBUILD
index 81b6e647e..5bf829f5b 100644
--- a/user/screengrab/APKBUILD
+++ b/user/screengrab/APKBUILD
@@ -1,24 +1,25 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=screengrab
-pkgver=1.101
+pkgver=2.7.0
+_qtxdg=3.12
pkgrel=0
pkgdesc="Cross-platform Qt-based software for taking screenshots"
url="https://github.com/lxqt/screengrab"
arch="all"
+options="!check" # No test suite.
license="GPL-2.0+"
depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qttools-dev
- kwindowsystem-dev libqtxdg-dev>=3.3.1"
+ kwindowsystem-dev libqtxdg-dev>=$_qtxdg"
subpackages="$pkgname-doc"
-source="https://github.com/lxqt/screengrab/releases/download/$pkgver/screengrab-$pkgver.tar.xz"
+source="https://github.com/lxqt/screengrab/releases/download/$pkgver/screengrab-$pkgver.tar.xz
+ revert-kwindowsystem-bump.patch"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
- mkdir -p build && cd build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_LIBDIR=lib \
@@ -26,18 +27,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS} ..
- make
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ CTEST_OUTPUT_ON_FAILURE=TRUE make -C build test
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="f253c4015f9c9ae6b53bb4919c0301cc843b0d6f6ab0b8ad88befbd397004aa4838d5900d1af86ed348cbba45fa352ded5192d494bd738c2f2b314e9ad73fb13 screengrab-1.101.tar.xz"
+sha512sums="0becd8972408a788b56affc9091cdc9ce1fe79160bba27ae29c5f1bf48ed0b73bafdabf3aeaac1eafe646aeaa4e162c0302b7ba1ee4f07785010e50a7d8131a1 screengrab-2.7.0.tar.xz
+6f9d5029ea45f22341861d10acabb6134f314cf7841dab6141995c792d25cb5c6055afae3d50e6032dc1c053445e8e6ea1178851d6bdda72009631b5c76c47df revert-kwindowsystem-bump.patch"
diff --git a/user/screengrab/revert-kwindowsystem-bump.patch b/user/screengrab/revert-kwindowsystem-bump.patch
new file mode 100644
index 000000000..4ce6967ec
--- /dev/null
+++ b/user/screengrab/revert-kwindowsystem-bump.patch
@@ -0,0 +1,899 @@
+diff '--color=auto' -Nurd screengrab-2.7.0/CMakeLists.txt screengrab-2.7.0.new/CMakeLists.txt
+--- screengrab-2.7.0/CMakeLists.txt 2023-11-05 04:30:13.000000000 -0800
++++ screengrab-2.7.0.new/CMakeLists.txt 2023-11-26 01:15:30.572898382 -0800
+@@ -15,7 +15,7 @@
+ option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF)
+
+ # Minimum Versions
+-set(KF5_MINIMUM_VERSION "5.101.0")
++set(KF5_MINIMUM_VERSION "5.36.0")
+ set(QT_MINIMUM_VERSION "5.15.0")
+ set(QTXDG_MINIMUM_VERSION "3.12.0")
+
+diff '--color=auto' -Nurd screengrab-2.7.0/CMakeLists.txt.orig screengrab-2.7.0.new/CMakeLists.txt.orig
+--- screengrab-2.7.0/CMakeLists.txt.orig 1969-12-31 16:00:00.000000000 -0800
++++ screengrab-2.7.0.new/CMakeLists.txt.orig 2023-11-26 01:13:58.403649484 -0800
+@@ -0,0 +1,224 @@
++cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
++# CMP0000: Call the cmake_minimum_required() command at the beginning of the top-level
++# CMakeLists.txt file even before calling the project() command.
++# The cmake_minimum_required(VERSION) command implicitly invokes the cmake_policy(VERSION)
++# command to specify that the current project code is written for the given range of CMake
++# versions.
++project(screengrab)
++
++include(GNUInstallDirs)
++set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
++
++# options
++option(SG_DBUS_NOTIFY "Enable D-Bus notifications" ON)
++option(SG_EXT_EDIT "Enable ability to edit screenshots in external editor" ON)
++option(UPDATE_TRANSLATIONS "Update source translation translations/*.ts files" OFF)
++
++# Minimum Versions
++set(KF5_MINIMUM_VERSION "5.101.0")
++set(QT_MINIMUM_VERSION "5.15.0")
++set(QTXDG_MINIMUM_VERSION "3.12.0")
++
++find_package(Qt5LinguistTools ${QT_MINIMUM_VERSION} REQUIRED)
++find_package(Qt5Network ${QT_MINIMUM_VERSION} REQUIRED)
++find_package(Qt5Widgets ${QT_MINIMUM_VERSION} REQUIRED)
++find_package(Qt5X11Extras ${QT_MINIMUM_VERSION} REQUIRED)
++find_package(KF5WindowSystem ${KF5_MINIMUM_VERSION} REQUIRED)
++
++# right now we declare it as required
++find_package(X11 REQUIRED)
++set(HAVE_X11 1)
++
++find_package(
++ XCB REQUIRED MODULE COMPONENTS
++ XCB
++ SHAPE
++ XFIXES
++)
++
++find_package(
++ X11_XCB REQUIRED MODULE
++)
++
++set(CMAKE_AUTOMOC ON)
++set(CMAKE_AUTOUIC ON)
++set(CMAKE_INCLUDE_CURRENT_DIR ON)
++
++set(SCREENGRAB_VERSION "2.7.0")
++
++if (DEV_VERSION)
++ set(VERSION "${SCREENGRAB_VERSION}-dev (${DEV_VERSION})")
++else()
++ set(VERSION ${SCREENGRAB_VERSION})
++endif()
++
++add_definitions(
++ -DVERSION="${VERSION}"
++ -DQT_NO_FOREACH
++)
++
++if(NOT CMAKE_BUILD_TYPE)
++ set(CMAKE_BUILD_TYPE Release)
++endif()
++
++message(STATUS "Build type: " ${CMAKE_BUILD_TYPE})
++message(STATUS "Install prefix: " ${CMAKE_INSTALL_PREFIX})
++
++set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wnon-virtual-dtor -Woverloaded-virtual -Wall -Wextra")
++
++# Although the names, LXQtTranslateTs and LXQtTranslateDesktop, they don't
++# bring any dependency on lxqt.
++include(LXQtTranslateTs)
++include(LXQtTranslateDesktop)
++include(Qt5TranslationLoader)
++
++if(SG_EXT_EDIT)
++ add_definitions( -DSG_EXT_EDIT="1")
++ find_package(Qt5Xdg ${QTXDG_MINIMUM_VERSION} REQUIRED)
++endif()
++
++if(SG_DBUS_NOTIFY)
++ find_package(Qt5DBus ${QT_MINIMUM_VERSION} REQUIRED)
++ add_definitions( -DSG_DBUS_NOTIFY="1")
++endif()
++
++message(STATUS "Editing screenshots in external editor support: " ${SG_EXT_EDIT})
++message(STATUS "Enable D-Bus notifications: " ${SG_DBUS_NOTIFY})
++message(STATUS "Use system Qxt Library: " ${SG_USE_SYSTEM_QXT})
++message(STATUS "Update source translation translations/*.ts files: " ${UPDATE_TRANSLATIONS})
++
++# docs
++# CMAKE_INSTALL_FULL_DOCDIR = CMAKE_INSTALL_PREFIX/CMAKE_INSTALL_DATADIR/doc/PROJECT_NAME
++message(STATUS "Documentation directory: " ${CMAKE_INSTALL_FULL_DOCDIR})
++add_definitions(-DSG_DOCDIR="${CMAKE_INSTALL_FULL_DOCDIR}")
++
++# app icon path
++add_definitions(-DSG_ICONPATH="${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps/screengrab.svg")
++
++include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src")
++add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/common/qkeysequencewidget")
++include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src/common/qkeysequencewidget/src")
++
++if (SG_EXT_EDIT)
++ include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src/modules/extedit")
++ add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/modules/extedit")
++endif()
++
++set(SCREENGRAB_SRC
++ src/core/main.cpp
++ src/core/singleapp.cpp
++ src/core/core.cpp
++ src/core/config.cpp
++ src/core/regionselect.cpp
++ src/core/shortcutmanager.cpp
++ src/core/modulemanager.cpp
++ src/core/ui/configwidget.cpp
++ src/core/ui/about.cpp
++ src/core/ui/mainwindow.cpp
++)
++
++if(SG_DBUS_NOTIFY)
++ set(SCREENGRAB_SRC ${SCREENGRAB_SRC} src/core/dbusnotifier.cpp)
++endif()
++
++if(X11_FOUND)
++ set(SCREENGRAB_SRC ${SCREENGRAB_SRC} src/core/x11utils.cpp)
++endif()
++
++set(SCREENGRAB_HDR
++ src/core/singleapp.h
++)
++
++set(SCREENGRAB_UI
++ src/core/ui/configwidget.ui
++ src/core/ui/aboutwidget.ui
++ src/core/ui/mainwindow.ui
++)
++
++# Qt resource file
++set(SCREENGRAB_QRC screengrab.qrc)
++qt5_add_resources(QRC_SOURCES ${SCREENGRAB_QRC})
++
++message(STATUS "Generating localize ...")
++
++set(SCREENGRAB_CONFIG_FILES
++ screengrab.conf
++)
++
++set(SCREENGRAB_DESKTOP_FILES_IN
++ screengrab.desktop.in
++)
++
++lxqt_translate_ts(SCREENGRAB_QMS
++ USE_QT5 TRUE
++ UPDATE_TRANSLATIONS ${UPDATE_TRANSLATIONS}
++ SOURCES
++ ${SCREENGRAB_SRC}
++ ${SCREENGRAB_UI}
++ INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/translations"
++)
++
++lxqt_translate_desktop(SCREENGRAB_DESKTOP_FILES
++ SOURCES ${SCREENGRAB_DESKTOP_FILES_IN}
++ USE_YAML
++)
++
++qt5_translation_loader(SCREENGRAB_QM_LOADER
++ "${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}/translations"
++ ${PROJECT_NAME}
++)
++
++# generating executable
++add_executable(screengrab
++ ${SCREENGRAB_SRC}
++ ${SCREENGRAB_UI_H}
++ ${QRC_SOURCES}
++ ${SCREENGRAB_QMS}
++ ${SCREENGRAB_DESKTOP_FILES}
++ ${SCREENGRAB_QM_LOADER}
++)
++
++if(SG_EXT_EDIT)
++ target_link_libraries(screengrab extedit)
++endif()
++
++if(SG_DBUS_NOTIFY)
++ target_link_libraries(screengrab Qt5::DBus)
++endif()
++
++if (X11_XCB_FOUND)
++ add_definitions( -DX11_XCB_FOUND="1")
++ target_link_libraries(screengrab ${X11_XCB_LIBRARIES})
++endif()
++
++if (XCB_XCB_FOUND)
++ add_definitions( -DXCB_XCB_FOUND="1")
++ target_link_libraries(screengrab ${XCB_XCB_LIBRARY})
++endif()
++
++if (XCB_SHAPE_FOUND)
++ add_definitions( -DXCB_SHAPE_FOUND="1")
++ target_link_libraries(screengrab ${XCB_SHAPE_LIBRARY})
++endif()
++
++if (XCB_XFIXES_FOUND)
++ add_definitions( -DXCB_XFOXES_FOUND="1")
++ target_link_libraries(screengrab ${XCB_XFIXES_LIBRARY})
++endif()
++
++# Link with Network and X11Extras. See pull#86. TODO: Should be optional when upload module is needed.
++target_link_libraries(screengrab qkeysequencewidget Qt5::Widgets KF5::WindowSystem Qt5::X11Extras Qt5::Network ${X11_LIBRARIES})
++
++# installing
++install(TARGETS screengrab RUNTIME DESTINATION bin)
++# install html docs
++install(DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/docs/html" DESTINATION "${CMAKE_INSTALL_FULL_DOCDIR}")
++# install config files
++install(FILES ${SCREENGRAB_CONFIG_FILES} DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME})
++# install desktop files
++install(FILES ${SCREENGRAB_DESKTOP_FILES} DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
++# install pixmap
++install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/img/screengrab.svg" DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps")
++install(FILES screengrab.metainfo.xml
++ DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo
++)
+diff '--color=auto' -Nurd screengrab-2.7.0/src/core/core.cpp screengrab-2.7.0.new/src/core/core.cpp
+--- screengrab-2.7.0/src/core/core.cpp 2023-11-05 04:30:13.000000000 -0800
++++ screengrab-2.7.0.new/src/core/core.cpp 2023-11-26 01:15:31.602889989 -0800
+@@ -32,8 +32,7 @@
+ #include <XdgMimeApps>
+ #include <qt5xdg/XdgDesktopFile>
+
+-#include <KWindowSystem/KWindowSystem>
+-#include <KWindowSystem/KX11Extras>
++#include <KF5/KWindowSystem/KWindowSystem>
+ #include <xcb/xfixes.h>
+
+ #ifdef X11_XCB_FOUND
+@@ -269,15 +268,15 @@
+ if (screen == nullptr)
+ screen = QGuiApplication::screens().at(0);
+
+- WId wnd = KX11Extras::activeWindow();
++ WId wnd = KWindowSystem::activeWindow();
+
+ // this window screenshot will be invalid
+ // if there's no active window or the active window is ours
+- bool invalid(!wnd || !KX11Extras::hasWId(wnd) || (_wnd && _wnd->winId() == wnd));
++ bool invalid(!wnd || !KWindowSystem::hasWId(wnd) || (_wnd && _wnd->winId() == wnd));
+ if (!invalid)
+ { // or if it isn't on the current desktop
+ KWindowInfo info(wnd, NET::WMDesktop);
+- invalid = info.valid() && !info.isOnDesktop(KX11Extras::currentDesktop());
++ invalid = info.valid() && !info.isOnDesktop(KWindowSystem::currentDesktop());
+ if (!invalid)
+ { // or if it is a desktop or panel/dock
+ info = KWindowInfo(wnd, NET::WMWindowType);
+diff '--color=auto' -Nurd screengrab-2.7.0/src/core/core.cpp.orig screengrab-2.7.0.new/src/core/core.cpp.orig
+--- screengrab-2.7.0/src/core/core.cpp.orig 1969-12-31 16:00:00.000000000 -0800
++++ screengrab-2.7.0.new/src/core/core.cpp.orig 2023-11-26 01:13:58.413649402 -0800
+@@ -0,0 +1,623 @@
++/***************************************************************************
++ * Copyright (C) 2009 - 2013 by Artem 'DOOMer' Galichkin *
++ * doomer3d@gmail.com *
++ * *
++ * This program is free software; you can redistribute it and/or modify *
++ * it under the terms of the GNU General Public License as published by *
++ * the Free Software Foundation; either version 2 of the License, or *
++ * (at your option) any later version. *
++ * *
++ * This program is distributed in the hope that it will be useful, *
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
++ * GNU General Public License for more details. *
++ * *
++ * You should have received a copy of the GNU General Public License *
++ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
++ ***************************************************************************/
++
++#include <QMutex>
++#include <QWaitCondition>
++#include <QApplication>
++#include <QScreen>
++#include <QChar>
++#include <QBuffer>
++#include <QFile>
++#include <QDir>
++#include <QUuid>
++#include <QMimeDatabase>
++
++#include <QDebug>
++
++#include <XdgMimeApps>
++#include <qt5xdg/XdgDesktopFile>
++
++#include <KWindowSystem/KWindowSystem>
++#include <KWindowSystem/KX11Extras>
++#include <xcb/xfixes.h>
++
++#ifdef X11_XCB_FOUND
++#include "x11utils.h"
++#endif
++
++#include "core/core.h"
++
++#ifdef SG_DBUS_NOTIFY
++#include "dbusnotifier.h"
++#endif
++
++Core* Core::corePtr = nullptr;
++
++Core::Core()
++{
++ qRegisterMetaType<StateNotifyMessage>("StateNotifyMessage");
++
++ _conf = Config::instance();
++ _conf->loadSettings();
++ _lastSelectedArea = _conf->getLastSelection();
++
++ _pixelMap = new QPixmap;
++ _selector = nullptr;
++ _firstScreen = true;
++
++ _cmdLine.setApplicationDescription(QStringLiteral("ScreenGrab ") + tr("is a crossplatform application for fast creating screenshots of your desktop."));
++ _cmdLine.addHelpOption();
++ _cmdLine.addVersionOption();
++
++ QCommandLineOption optFullScreen(QStringList() << QStringLiteral("f") << QStringLiteral("fullscreen"), tr("Take a fullscreen screenshot"));
++ _cmdLine.addOption(optFullScreen);
++ _screenTypeOpts.append(optFullScreen);
++
++ QCommandLineOption optActiveWnd(QStringList() << QStringLiteral("a") << QStringLiteral("active"), tr("Take a screenshot of the active window"));
++ _cmdLine.addOption(optActiveWnd);
++ _screenTypeOpts.append(optActiveWnd);
++
++ QCommandLineOption optSelectedRect(QStringList() << QStringLiteral("r") << QStringLiteral("region"), tr("Take a screenshot of a selection of the screen"));
++ _cmdLine.addOption(optSelectedRect);
++ _screenTypeOpts.append(optSelectedRect);
++
++ QCommandLineOption optRunMinimized(QStringList() << QStringLiteral("m") << QStringLiteral("minimized"), tr("Run the application with a hidden main window"));
++ _cmdLine.addOption(optRunMinimized);
++
++ sleep(250);
++
++ _wnd = nullptr;
++}
++
++Core::Core(const Core& ): QObject()
++{
++}
++
++Core& Core::operator=(const Core &)
++{
++ return *this;
++}
++
++Core* Core::instance()
++{
++ if (!corePtr)
++ corePtr = new Core;
++ return corePtr;
++}
++
++Core::~Core()
++{
++ killTempFile();
++ delete _pixelMap;
++ _conf->killInstance();
++}
++
++void Core::initWindow(const QString& ipcMessage)
++{
++ if (!_wnd) {
++ _wnd = new MainWindow;
++ _wnd->setConfig(_conf);
++ _wnd->updateModulesActions(_modules.generateModulesActions());
++ _wnd->updateModulesMenus(_modules.generateModulesMenus());
++
++ screenShot(true); // first screenshot
++
++ _wnd->resize(_conf->getRestoredWndSize());
++
++ if (_wnd) {
++ if (runAsMinimized())
++ {
++ if (_wnd->isTrayed())
++ _wnd->windowHideShow();
++ else
++ _wnd->showMinimized();
++ } else
++ _wnd->show();
++ }
++ } else {
++ _wnd->showWindow(ipcMessage);
++ screenShot();
++ }
++}
++
++void Core::sleep(int msec)
++{
++ QMutex mutex;
++ mutex.lock();
++ QWaitCondition pause;
++ pause.wait(&mutex, msec); // def 240
++ mutex.unlock();
++}
++
++void Core::coreQuit()
++{
++ _conf->setLastSelection(_lastSelectedArea);
++ _conf->saveScreenshotSettings();
++
++ if (_wnd) {
++ _conf->setRestoredWndSize(_wnd->width(), _wnd->height());
++ _conf->saveWndSize();
++ _wnd->close();
++ }
++
++ if (corePtr)
++ {
++ delete corePtr;
++ corePtr = nullptr;
++ }
++
++ qApp->quit();
++}
++
++void Core::setScreen()
++{
++ _wnd->hideToShot();
++
++ // new code experimental
++ if (_conf->getDelay() == 0)
++ QTimer::singleShot(200, this, SLOT(screenShot()));
++ else
++ QTimer::singleShot(1000 * _conf->getDelay(), this, SLOT(screenShot()));
++
++}
++
++void Core::getFullScreenPixmap(QScreen* screen)
++{
++ const auto siblings = screen->virtualSiblings();
++ if (siblings.size() == 1)
++ *_pixelMap = screen->grabWindow(0); // 0 for the entire screen
++ else
++ { // consider all siblings
++ QPixmap pix = QPixmap(screen->virtualSize());
++ pix.fill(Qt::transparent);
++ QPainter painter(&pix);
++ for (const auto& sc : siblings)
++ painter.drawPixmap(sc->geometry().topLeft(), sc->grabWindow(0));
++ *_pixelMap = pix;
++ }
++}
++
++// get screenshot
++void Core::screenShot(bool first)
++{
++ killTempFile(); // remove the old temp file if any
++
++ sleep(400); // delay for hide "fade effect" bug in the KWin with compositing
++ _firstScreen = first;
++
++ // Update the last saving date, if this is the first screenshot
++ if (_firstScreen)
++ _conf->updateLastSaveDate();
++
++ switch(_conf->getDefScreenshotType())
++ {
++ case Core::FullScreen:
++ {
++ auto screen = QGuiApplication::screenAt(QCursor::pos());
++ if (screen == nullptr)
++ screen = QGuiApplication::screens().at(0);
++ getFullScreenPixmap(screen);
++ grabCursor(0, 0);
++
++ checkAutoSave(first);
++ _wnd->updatePixmap(_pixelMap);
++ break;
++ }
++ case Core::Window:
++ {
++ getActiveWindow();
++ checkAutoSave(first);
++ _wnd->updatePixmap(_pixelMap);
++ break;
++ }
++ case Core::Area:
++ {
++ _selector = new RegionSelect(_conf);
++ connect(_selector, &RegionSelect::processDone, this, &Core::regionGrabbed);
++ break;
++ }
++ case Core::PreviousSelection:
++ {
++ _selector = new RegionSelect(_conf, _lastSelectedArea);
++ connect(_selector, &RegionSelect::processDone, this, &Core::regionGrabbed);
++ break;
++ }
++ default:
++ getFullScreenPixmap(QGuiApplication::primaryScreen());
++ break;
++ }
++
++
++
++ _wnd->updatePixmap(_pixelMap);
++ _wnd->restoreFromShot();
++}
++
++void Core::checkAutoSave(bool first)
++{
++ if (_conf->getAutoSave())
++ {
++ // hack
++ if (first)
++ {
++ if (_conf->getAutoSaveFirst())
++ QTimer::singleShot(600, this, SLOT(autoSave()));
++ }
++ else
++ autoSave();
++ }
++}
++
++void Core::getActiveWindow() // called only with window screenshots
++{
++ auto screen = QGuiApplication::screenAt(QCursor::pos());
++ if (screen == nullptr)
++ screen = QGuiApplication::screens().at(0);
++
++ WId wnd = KX11Extras::activeWindow();
++
++ // this window screenshot will be invalid
++ // if there's no active window or the active window is ours
++ bool invalid(!wnd || !KX11Extras::hasWId(wnd) || (_wnd && _wnd->winId() == wnd));
++ if (!invalid)
++ { // or if it isn't on the current desktop
++ KWindowInfo info(wnd, NET::WMDesktop);
++ invalid = info.valid() && !info.isOnDesktop(KX11Extras::currentDesktop());
++ if (!invalid)
++ { // or if it is a desktop or panel/dock
++ info = KWindowInfo(wnd, NET::WMWindowType);
++ QFlags<NET::WindowTypeMask> flags;
++ flags |= NET::DesktopMask;
++ flags |= NET::DockMask;
++ invalid = info.valid() && NET::typeMatchesMask(info.windowType(NET::AllTypesMask), flags);
++ }
++ }
++
++ // also invalid if the window is shaded/invisible
++ KWindowInfo info(wnd, NET::XAWMState | NET::WMFrameExtents);
++ if (!invalid && info.mappingState() != NET::Visible)
++ invalid = true;
++
++ // if this is an invalid screenshot, take a fullscreen shot instead
++ if (invalid)
++ {
++ qWarning() << "Could not take a window screenshot.";
++ *_pixelMap = screen->grabWindow(0);
++ return;
++ }
++
++ // no decorations option is selected
++ if (_conf->getNoDecoration())
++ {
++ *_pixelMap = screen->grabWindow(wnd);
++ return;
++ }
++
++ QRect geometry = info.frameGeometry();
++
++ // WARNING: Until now, "KWindowInfo::frameGeometry" does not consider the screens's
++ // device pixel ratio. So, the frame geometry should be transformed.
++ qreal pixelRatio = screen->devicePixelRatio();
++ geometry.setTopLeft(QPointF(geometry.topLeft() / pixelRatio).toPoint());
++ geometry.setBottomRight(QPointF(geometry.bottomRight() / pixelRatio).toPoint());
++
++ // The offscreen part of the window will appear as a black area in the screenshot.
++ // Until a better method is found, the offscreen area is ignored here.
++ QRect r = screen->virtualGeometry().intersected(geometry);
++
++ // the window positon should be calculated relative to the screen
++ *_pixelMap = screen->grabWindow(0,
++ r.x() - screen->geometry().x(),
++ r.y() - screen->geometry().y(),
++ r.width(),
++ r.height());
++
++ grabCursor(geometry.x(), geometry.y());
++}
++
++void Core::grabCursor(int offsetX, int offsetY)
++{
++#ifdef XCB_XFOXES_FOUND
++ if (_conf->getIncludeCursor())
++ X11Utils::compositePointer(offsetX, offsetY, _pixelMap);
++#else
++ Q_UNUSED(offsetx);
++ Q_UNUSED(offsety);
++#endif
++
++
++}
++
++void Core::sendSystemNotify(const StateNotifyMessage& /*notify*/)
++{
++ qDebug() << "Send system notification";
++}
++
++QString Core::getSaveFilePath(const QString &format)
++{
++ QString initPath;
++
++ do
++ {
++ QDir dir(_conf->getSaveDir());
++ const QString filePath = dir.filePath(_conf->getSaveFileName());
++ if (_conf->getDateTimeInFilename())
++ initPath = filePath + QStringLiteral("-") + getDateTimeFileName() + QStringLiteral(".") + format;
++ else
++ {
++ if (_conf->getScrNum() != 0)
++ initPath = filePath + _conf->getScrNumStr() + QStringLiteral(".") + format;
++ else
++ initPath = filePath + QStringLiteral(".") + format;
++ }
++ } while (checkExsistFile(initPath));
++
++ return initPath;
++}
++
++bool Core::checkExsistFile(const QString &path)
++{
++ bool exist = QFile::exists(path);
++
++ if (exist)
++ _conf->increaseScrNum();
++
++ return exist;
++}
++
++QString Core::getDateTimeFileName()
++{
++ QString currentDateTime = QDateTime::currentDateTime().toString(_conf->getDateTimeTpl());
++
++ if (currentDateTime == _conf->getLastSaveDate().toString(_conf->getDateTimeTpl()) && _conf->getScrNum() != 0)
++ currentDateTime += QStringLiteral("-") + _conf->getScrNumStr();
++ else
++ _conf->resetScrNum();
++
++ return currentDateTime;
++}
++
++Config *Core::config()
++{
++ return _conf;
++}
++
++void Core::updatePixmap()
++{
++ if (QFile::exists(_tempFilename))
++ {
++ _pixelMap->load(_tempFilename, "png");
++ _wnd->updatePixmap(_pixelMap);
++ }
++}
++
++QString Core::getTempFilename(const QString& format)
++{
++ if (_tempFilename.isEmpty())
++ {
++ _tempFilename = QUuid::createUuid().toString();
++ int size = _tempFilename.size() - 2;
++ _tempFilename = _tempFilename.mid(1, size).left(8);
++ _tempFilename = QDir::tempPath() + QDir::separator()
++ + QStringLiteral("screenshot-") + _tempFilename
++ + QStringLiteral(".") + format;
++ }
++ return _tempFilename;
++}
++
++void Core::killTempFile()
++{
++ if (QFile::exists(_tempFilename))
++ QFile::remove(_tempFilename);
++ _tempFilename.clear();
++}
++
++bool Core::writeScreen(QString& fileName, QString& format, bool tmpScreen)
++{
++ // adding extension format
++ if (!fileName.contains(QStringLiteral(".") + format))
++ fileName.append(QStringLiteral(".") + format);
++
++ // saving temp file
++ if (tmpScreen)
++ {
++ if (!fileName.isEmpty())
++ return _pixelMap->save(fileName, format.toLatin1().constData(), _conf->getImageQuality());
++ else
++ return false;
++ }
++
++ // writing file
++ bool saved = false;
++ if (!fileName.isEmpty())
++ {
++ if (format == QLatin1String("jpg"))
++ saved = _pixelMap->save(fileName,format.toLatin1().constData(), _conf->getImageQuality());
++ else
++ saved = _pixelMap->save(fileName,format.toLatin1().constData(), -1);
++
++ if (saved)
++ {
++ StateNotifyMessage message(tr("Saved"), tr("Saved to ") + fileName);
++
++ message.message = message.message + copyFileNameToCliipboard(fileName);
++ _conf->updateLastSaveDate();
++ sendNotify(message);
++ }
++ else
++ qWarning() << "Error saving file " << fileName;
++ }
++
++ return saved;
++}
++
++QString Core::copyFileNameToCliipboard(QString file)
++{
++ QString retString = QLatin1String("");
++ switch (_conf->getAutoCopyFilenameOnSaving())
++ {
++ case Config::nameToClipboardFile:
++ {
++ file = file.section(QLatin1Char('/'), -1);
++ QApplication::clipboard()->setText(file);
++ retString = QChar(QChar::LineSeparator) + tr("Name of saved file is copied to the clipboard");
++ break;
++ }
++ case Config::nameToClipboardPath:
++ {
++ QApplication::clipboard()->setText(file);
++ retString = QChar(QChar::LineSeparator) + tr("Path to saved file is copied to the clipboard");
++ break;
++ }
++ default:
++ break;
++ }
++ return retString;
++}
++
++void Core::sendNotify(const StateNotifyMessage &message)
++{
++#ifdef SG_DBUS_NOTIFY
++ DBusNotifier *notifier = new DBusNotifier();
++ notifier->displayNotify(message);
++#else
++ _wnd->showTrayMessage(message.header, message.message);
++#endif
++}
++
++void Core::copyScreen()
++{
++ QApplication::clipboard()->setPixmap(*_pixelMap, QClipboard::Clipboard);
++ StateNotifyMessage message(tr("Copied"), tr("Screenshot is copied to clipboard"));
++ sendNotify(message);
++}
++
++void Core::openInExtViewer()
++{
++ if (_conf->getEnableExtView())
++ {
++ QString format = _conf->getSaveFormat();
++ if (format.isEmpty())
++ format = QLatin1String("png");
++
++ QString tempFileName = getTempFilename(format);
++ writeScreen(tempFileName, format, true);
++
++ QMimeDatabase db;
++ XdgMimeApps mimeAppsDb;
++ QMimeType mt = db.mimeTypeForFile(tempFileName);
++ auto app = mimeAppsDb.defaultApp(mt.name());
++ if (app != nullptr)
++ {
++ QString exec;
++ exec = app->expandExecString().first();
++ delete app;
++ QStringList args;
++ args << tempFileName;
++
++ QProcess::startDetached(exec, args);
++ }
++ }
++}
++
++ModuleManager* Core::modules()
++{
++ return &_modules;
++}
++
++void Core::addCmdLineOption(const QCommandLineOption& option)
++{
++ _cmdLine.addOption(option);
++}
++
++bool Core::checkCmdLineOption(const QCommandLineOption& option)
++{
++ return _cmdLine.isSet(option);
++}
++
++bool Core::checkCmdLineOptions(const QStringList &options)
++{
++ for (int i = 0; i < options.count(); ++i)
++ if (_cmdLine.isSet(options.at(i)))
++ return true;
++ return false;
++}
++
++void Core::processCmdLineOpts(const QStringList& arguments)
++{
++ _cmdLine.process(arguments);
++
++ // Check commandline parameters and set screenshot type
++ for (int i=0; i < _screenTypeOpts.count(); ++i)
++ if (_cmdLine.isSet(_screenTypeOpts.at(i)))
++ _conf->setDefScreenshotType(i);
++
++ initWindow();
++}
++
++bool Core::runAsMinimized()
++{
++ return (_cmdLine.isSet(QStringLiteral("minimized")) || _cmdLine.isSet(QStringLiteral("m")));
++}
++
++void Core::autoSave()
++{
++ QString format = _conf->getSaveFormat();
++ QString fileName = getSaveFilePath(format);
++ writeScreen(fileName, format);
++}
++
++QString Core::getVersionPrintable()
++{
++ QString str = QStringLiteral("ScreenGrab: ") + qApp->applicationVersion() + QStringLiteral("\n");
++ str += QStringLiteral("Qt: ") + QString::fromLatin1(qVersion()) + QStringLiteral("\n");
++ return str;
++}
++
++QPixmap* Core::getPixmap()
++{
++ return _pixelMap;
++}
++
++QByteArray Core::getScreenData()
++{
++ QByteArray bytes;
++ QBuffer buffer(&bytes);
++ buffer.open(QIODevice::WriteOnly);
++ _pixelMap->save(&buffer, _conf->getSaveFormat().toLatin1().constData());
++ return bytes;
++}
++
++void Core::regionGrabbed(bool grabbed)
++{
++ if (grabbed)
++ {
++ *_pixelMap = _selector->getSelection();
++
++ int x = _selector->getSelectionStartPos().x();
++ int y = _selector->getSelectionStartPos().y();
++ int w = _pixelMap->rect().width() / _pixelMap->devicePixelRatio();
++ int h = _pixelMap->rect().height() / _pixelMap->devicePixelRatio();
++ _lastSelectedArea.setRect(x, y, w, h);
++
++ checkAutoSave();
++ }
++
++ _wnd->updatePixmap(_pixelMap);
++ _selector->deleteLater();
++}
diff --git a/user/scrot/APKBUILD b/user/scrot/APKBUILD
new file mode 100644
index 000000000..6e10c8a0c
--- /dev/null
+++ b/user/scrot/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: Nathan <ndowens@artixlinux.org>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=scrot
+pkgver=1.7
+pkgrel=0
+pkgdesc="Simple command-line screenshot utility for X"
+options="!check" # No testsuite
+url="https://github.com/resurrecting-open-source-projects/scrot"
+arch="all"
+license="MIT"
+depends=""
+makedepends="giblib-dev imlib2-dev libx11-dev libxfixes-dev libxcomposite-dev
+ automake libtool autoconf autoconf-archive-dev bsd-compat-headers
+ sed"
+subpackages="$pkgname-doc"
+source="$pkgname-$pkgver.tar.gz::https://github.com/resurrecting-open-source-projects/scrot/archive/$pkgver/$pkgname-$pkgver.tar.gz
+ docdir.patch
+ config.h
+ "
+
+prepare() {
+ default_prepare
+ autoreconf -fiv
+}
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --mandir=/usr/share/man
+ cp $srcdir/config.h src/scrot_config.h
+ make
+}
+
+package() {
+ make DESTDIR="$pkgdir" docsdir=/usr/share/doc/scrot install
+}
+
+sha512sums="9f9a29b69e9c216bad7c6028fe0043b2729393a716dccc1389665cf1e9496a6f1d370b97a7c8432b31af7d69477b4fc1d41dffd4ca2a78a49bb98e908975612f scrot-1.7.tar.gz
+709d7dca5c6d8df7671a143b48817bd839d3ee8a97ed4128ce45345b2f91e0fe9e8b76f7d7233c2fe79bd1eafff8c3a0ed1272c65b4c583ebb0b3b5483bd34a9 docdir.patch
+95429feb7c107c5adeadf33b5a3e3ff9dc4fb95f0d58f92c6a8de27d776a07256fa9f1825896d569eb32beb77300f46995dcafd1359f305d22861eb5748de84a config.h"
diff --git a/user/scrot/config.h b/user/scrot/config.h
new file mode 100644
index 000000000..e048745b5
--- /dev/null
+++ b/user/scrot/config.h
@@ -0,0 +1,29 @@
+/* src/config.h. Generated from config.h.in by configure. */
+/* src/config.h.in. Generated from configure.ac by autoheader. */
+
+/* Name of package */
+#define SCROT_PACKAGE "scrot"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "https://github.com/resurrecting-open-source-projects/scrot/issues"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "scrot"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "scrot 1.4"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "scrot"
+
+/* Define to the home page for this package. */
+#define PACKAGE_URL ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "1.4"
+
+/* Version number of package */
+#define SCROT_VERSION "1.4"
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
diff --git a/user/scrot/docdir.patch b/user/scrot/docdir.patch
new file mode 100644
index 000000000..b881802db
--- /dev/null
+++ b/user/scrot/docdir.patch
@@ -0,0 +1,51 @@
+From ee8121c65d1e6b84ef8a9fbc60a83734325b7fe2 Mon Sep 17 00:00:00 2001
+From: Sam James <sam@cmpct.info>
+Date: Wed, 5 Jan 2022 13:47:34 +0000
+Subject: [PATCH] autotools: respect --docdir
+
+Before this patch with --docdir=/usr/share/doc/scrot-1.7-r1 (example downstream
+versioning for patches):
+
+>>> /usr/share/doc/scrot-1.7-r1/
+>>> /usr/share/doc/scrot-1.7-r1/README.md.bz2
+>>> /usr/share/doc/scrot-1.7-r1/ChangeLog.bz2
+>>> /usr/share/doc/scrot-1.7-r1/AUTHORS.bz2
+>>> /usr/share/doc/scrot/
+>>> /usr/share/doc/scrot/scrot.png
+>>> /usr/share/doc/scrot/README.md.bz2
+>>> /usr/share/doc/scrot/ChangeLog.bz2
+>>> /usr/share/doc/scrot/AUTHORS.bz2
+
+After:
+
+>>> /usr/share/doc/scrot-1.7-r1/scrot.png
+>>> /usr/share/doc/scrot-1.7-r1/README.md.bz2
+>>> /usr/share/doc/scrot-1.7-r1/ChangeLog.bz2
+>>> /usr/share/doc/scrot-1.7-r1/AUTHORS.bz2
+
+This avoids installing duplicate files & installs them to the
+same location but it's overridable by --docdir in ./configure which
+helps downstreams.
+
+Bug: https://bugs.gentoo.org/828928
+---
+ Makefile.am | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+diff --git a/Makefile.am b/Makefile.am
+index 64439a8..7d2789c 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -34,10 +34,9 @@ MAINTAINERCLEANFILES = Makefile.in
+
+ man_MANS = man/scrot.1
+
+-docs_DATA = README.md AUTHORS ChangeLog doc/scrot.png
+-docsdir = $(prefix)/share/doc/scrot
++dist_doc_DATA = README.md AUTHORS ChangeLog doc/scrot.png
+
+-EXTRA_DIST = man/scrot.1 $(docs_DATA)
++EXTRA_DIST = $(man_MANS)
+
+ SUBDIRS = src
+
diff --git a/user/scummvm/APKBUILD b/user/scummvm/APKBUILD
index 8c4ae8f36..938c66721 100644
--- a/user/scummvm/APKBUILD
+++ b/user/scummvm/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Tambra Wilcox <Tambra@J30AD.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=scummvm
-pkgver=2.0.0
+pkgver=2.1.2
pkgrel=0
pkgdesc="Allows running classic point-and-click adventure games"
url="https://www.scummvm.org/"
@@ -13,19 +13,24 @@ makedepends="alsa-lib-dev curl-dev flac-dev fluidsynth-dev freetype-dev
libjpeg-turbo-dev libmpeg2-dev libogg-dev libpng-dev libvorbis-dev
sdl-dev zlib-dev"
subpackages="$pkgname-doc"
-source="https://www.scummvm.org/frs/scummvm/$pkgver/scummvm-$pkgver.tar.bz2"
+source="https://www.scummvm.org/frs/scummvm/$pkgver/scummvm-$pkgver.tar.bz2
+ fluidsynth.patch
+ "
build() {
- cd "$builddir"
+ _extra_conf=""
+ [ $CTARGET_ARCH = "pmmx" ] && _extra_conf="--disable-nasm"
+
./configure \
--prefix=/usr \
- --disable-readline
+ --disable-readline \
+ ${_extra_conf}
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="66c689d776b8098d752ef696232f80f175f3bff9f523e6dceb246849e785889d135452f48eafa5f2664047297de8592c862677270de4bf83731f10e178ad6847 scummvm-2.0.0.tar.bz2"
+sha512sums="de3ce5c9363f59ed151aeedc04870343070acbc2ac7d07a641a0cdcd9cdb9210138dc4b3669818f736c0b0d40bdf9e07d9c015796ceef0c81881ac15e31eaebe scummvm-2.1.2.tar.bz2
+20b20a68263c691efb7db83aa8132ec980f2732af728300a641d30c4035d4aa8fcf6efdcebb8c5b924e68fafb50e39ed1825cd64d1f81145259493e858bd50f4 fluidsynth.patch"
diff --git a/user/scummvm/fluidsynth.patch b/user/scummvm/fluidsynth.patch
new file mode 100644
index 000000000..a815cc705
--- /dev/null
+++ b/user/scummvm/fluidsynth.patch
@@ -0,0 +1,37 @@
+Backport of upstream commits:
+
+* 8593a9e
+* 68758a8
+* 8014f12
+
+--- scummvm-2.1.0/audio/softsynth/fluidsynth.cpp.old 2019-10-04 21:41:29.000000000 +0000
++++ scummvm-2.1.0/audio/softsynth/fluidsynth.cpp 2020-01-13 08:21:46.705102910 +0000
+@@ -20,10 +20,18 @@
+ *
+ */
+
+-#include "common/scummsys.h"
++#if defined(HAVE_CONFIG_H)
++#include "config.h"
++#endif
+
+ #ifdef USE_FLUIDSYNTH
+
++// Fluidsynth v2.1+ uses printf in one of it's headers,
++// include/fluidsynth/log.h around line 82 so need to include this
++// prior scummsys.h inclusion and thus forbidden.h
++#include <fluidsynth.h>
++
++#include "common/scummsys.h"
+ #include "common/config-manager.h"
+ #include "common/error.h"
+ #include "common/system.h"
+@@ -35,8 +43,6 @@
+ #include "backends/platform/ios7/ios7_common.h"
+ #endif
+
+-#include <fluidsynth.h>
+-
+ class MidiDriver_FluidSynth : public MidiDriver_Emulated {
+ private:
+ MidiChannel_MPU401 _midiChannels[16];
diff --git a/user/sddm-kcm/APKBUILD b/user/sddm-kcm/APKBUILD
index 19d4af447..576c81ef9 100644
--- a/user/sddm-kcm/APKBUILD
+++ b/user/sddm-kcm/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=sddm-kcm
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="KDE configuration applet for SDDM"
url="https://www.kde.org/"
@@ -11,13 +11,12 @@ depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtx11extras-dev
qt5-qtdeclarative-dev kcoreaddons-dev ki18n-dev kxmlgui-dev kauth-dev
kconfigwidgets-dev kio-dev libxcb-dev xcb-util-image-dev libxcursor-dev
- knewstuff-dev"
+ knewstuff-dev kcmutils-dev kdeclarative-dev"
install_if="systemsettings sddm"
subpackages="$pkgname-lang"
source="https://download.kde.org/stable/plasma/$pkgver/sddm-kcm-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="29d7b03378a6d5a3d58a0c2b85f6dbe4d0114785456072f16872cd09e7ce355f4e59149e31cb69fe7fbb35678c6fc075c788a091c3b638661a64a856aa4a145b sddm-kcm-5.12.7.tar.xz"
+sha512sums="1fbc050e70dde74bcaa0a97ac982f017146ca65f180ea07e57190bd13ea653789fb369b83bc0b2583b73d37e4cd3db087eebe2cdaa3346b81c1d7d11730fad15 sddm-kcm-5.24.5.tar.xz"
diff --git a/user/sddm/APKBUILD b/user/sddm/APKBUILD
index 94f03db23..1db377aa7 100644
--- a/user/sddm/APKBUILD
+++ b/user/sddm/APKBUILD
@@ -1,26 +1,37 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=sddm
-pkgver=0.18.1
+pkgver=0.19.0
pkgrel=0
pkgdesc="Simple Desktop Display Manager"
url="https://github.com/sddm/sddm/"
+pkgusers="sddm"
+pkggroups="sddm"
arch="all"
license="GPL-2.0+"
-depends="consolekit2"
+depends="dbus-x11 elogind"
makedepends="cmake extra-cmake-modules qt5-qtbase-dev libxcb-dev upower-dev
- consolekit2-dev linux-pam-dev qt5-qtdeclarative-dev qt5-qttools-dev
+ elogind-dev linux-pam-dev qt5-qtdeclarative-dev qt5-qttools-dev
utmps-dev"
-subpackages="$pkgname-lang $pkgname-xdm::noarch"
+subpackages="$pkgname-lang $pkgname-openrc"
install="sddm.post-install"
langdir="/usr/share/sddm/translations"
-pkgusers="sddm"
-pkggroups="sddm"
+# Patch files are in order of needed application.
source="https://github.com/sddm/sddm/releases/download/v$pkgver/sddm-$pkgver.tar.xz
- ck2-support.patch
pam-path-fix.patch
utmpx.patch
- xdm.confd"
+ revert-fedora.patch
+ xephyr.patch
+ retry.patch
+ cleanup-xorg.patch
+ authed.patch
+ allocate-vt.patch
+ autologin-type.patch
+ autologin-pam.patch
+ session-env.patch
+ qt515.patch
+ sddm.initd
+ "
build() {
if [ "$CBUILD" != "$CHOST" ]; then
@@ -34,9 +45,11 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DENABLE_JOURNALD=OFF \
+ -DNO_SYSTEMD=ON \
+ -DUSE_ELOGIND=ON \
-DUID_MIN=500 \
-DUID_MAX=65000 \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
@@ -46,16 +59,25 @@ check() {
package() {
make DESTDIR="$pkgdir" install
+ install -D -m755 "$srcdir"/sddm.initd "$pkgdir"/etc/init.d/sddm
}
-xdm() {
- pkgdesc="Package to use SDDM as the system X display manager"
- depends="sddm=$pkgver-r$pkgrel"
- install -D -m644 "$srcdir"/xdm.confd "$subpkgdir"/etc/conf.d/xdm
+openrc() {
+ default_openrc
+ depends="sddm xorg-server"
}
-sha512sums="ff0637600cda2f4da1f643f047f8ee822bd9651ae4ccbb614b9804175c97360ada7af93e07a7b63832f014ef6e7d1b5380ab2b8959f8024ea520fa5ff17efd60 sddm-0.18.1.tar.xz
-075e3baf24606cdea620737dbc00f7cf5c487ab6d88e37b23a581afcfbcf872c379753c89c80ad5c90c28fa27d3e5c5df64d4fd30764fdbfc0586e0f26666fe1 ck2-support.patch
+sha512sums="0a40816bc105a1e930fec2d65fabff0ae7e27c641235d90e41f6fbaa86af4bb774a9e30f7548ce2c6c791e6d4f8195b02afddedca60a9e7c77447702e728edc3 sddm-0.19.0.tar.xz
f0b4eb7ef0581701157f9decc637629156f36f6711b9a4bae517f94d7a1df614c81bbd891c918f07ac50e2a3d1519c43ccb9eefd80282c95dd79eca0e8d90904 pam-path-fix.patch
-c42d8b3edbc0ae7e3d5ea7bb0080c5c50e0569f0ea947e1ba17bc794c8c0d67a214e62aad7eba0a51791c44b29a3017692bbe738250c63cb2219891bb1313422 utmpx.patch
-5a03b3211e9d84ee762523631859a26b869aee2189f6845dc780c7a1e60a6658e2240e9ef9be05858708d2552ae77b594509dabe49794538f88d2ad6578d1fdf xdm.confd"
+b61c02e9d75c03c5a04a44bf53bf1d7df3afe6214b2c7f6da8a2b3a78c859443fb2af6ff748a9d369707e6eaab8c0e5f9872c35e52e602836795b7099330ba00 utmpx.patch
+51a0b6d427da8ea8dfbeb043ae4eb47f6c55645d03ed3a88e7583c216c52916863d8184faa6402f348e6ca704098b180079f9c6d4faaca1855bad58f9cf5f531 revert-fedora.patch
+65fb8d772ca149f3616cb9d106eebf246b65bc8c0d2e328bd361dcc2664afb6ae467f698ac656653c5092f3b2b5f14b2980f9f1f3929839bb0674c5c801b36a1 xephyr.patch
+d47123e097e8ea918ba112332272dbc94a3f06a76dc01080fd80f5f945320e0647d8f84d4232d32650c9705e2228c054748ce7207492a4c7e6039655668a0440 retry.patch
+5dd057acc054f905ad0b9b0924eeb792b417cfe9d506f1d138266b9dc38c229b1b32d0c2443e85db5bba90d8c64efcebfceac07bd742acf0d8c10d992e8b4e1a cleanup-xorg.patch
+fea260015dfaf82e97ea2a77d7810e11f85503446ce6450ed9fe3072ce2151bb2ecac56fbc917a47b8ebcaf9fa51c077d4e798c4ef62919e18d1751fd7de92fc authed.patch
+829397bdb1d5fd6887b7836d503b081a8827346aa775b702d4ea9946d3ff4374446175e462732e52e33e1a53481b99cbe652c44e031c79823d5fbf67e4b48c46 allocate-vt.patch
+378a735946c93dc9fb746cc4d4cf436d728ec0f1fddd3fcac8797ef90acb0d6582e41ac0a91b96d3886695b8664627ef81822f531c67deb12085626206f27136 autologin-type.patch
+327d3f1d35d493cc302096d7047d0159e570c94320df52efe7e4cefeff910b38e322eaba57396e91efed7f9fb2da5ccf19b383cbfbd14537e016c1dfa319bd8e autologin-pam.patch
+0997ae1ea2f0b44835a397f107d73ae2eb0d492cbf97b3f446c388eebb6ec0b9255b2352a51c9e00ebf846c0fec61998895aba865e06814ee20ab9d526b3f353 session-env.patch
+77d1abe99a8f0c38f9bf2d1ec695d371a46842b7f64c0a53e8f5c34550de5f9fba7ae9b187ba698e6658f03b18c6bd4b975532d9f2cecdb857e42e20413e96a7 qt515.patch
+d603934552bad47edda458d7a4df2310e98bde74bdb3bf8588f5171b2a5d68814192b8dc8f5599b35402f9a747d519d985d4976e7aa50dabed445f99a112594c sddm.initd"
diff --git a/user/sddm/allocate-vt.patch b/user/sddm/allocate-vt.patch
new file mode 100644
index 000000000..34e599cd3
--- /dev/null
+++ b/user/sddm/allocate-vt.patch
@@ -0,0 +1,220 @@
+From f0b6dec66a6fc8cc6e21da57f81190843b483f76 Mon Sep 17 00:00:00 2001
+From: Pier Luigi Fiorini <pierluigi.fiorini@liri.io>
+Date: Sun, 28 Feb 2021 12:07:33 +0100
+Subject: [PATCH] Allocate VT for the display
+
+Replace the old crude algorithm to find the next available VT with a
+more reliable method using the VT_OPENQRY ioctl.
+
+General.MinimumVT setting is now obsolete and it's no longer used.
+---
+ CMakeLists.txt | 4 ----
+ data/man/sddm.conf.rst.in | 2 +-
+ src/common/Configuration.h | 1 -
+ src/common/Constants.h.in | 1 -
+ src/daemon/Display.cpp | 7 +++++--
+ src/daemon/Display.h | 2 +-
+ src/daemon/Seat.cpp | 38 +++-----------------------------------
+ src/daemon/Seat.h | 3 +--
+ 8 files changed, 11 insertions(+), 47 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index e52e0e903..9614b4e1e 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -141,7 +141,6 @@ if(SYSTEMD_FOUND)
+ string(REGEX REPLACE "[ \t\n]+" "" SYSTEMD_SYSTEM_UNIT_DIR ${SYSTEMD_SYSTEM_UNIT_DIR})
+ endif()
+
+- set(MINIMUM_VT 1)
+ set(HALT_COMMAND "/usr/bin/systemctl poweroff")
+ set(REBOOT_COMMAND "/usr/bin/systemctl reboot")
+ else()
+@@ -159,7 +158,6 @@ if(ELOGIND_FOUND)
+ add_definitions(-DHAVE_ELOGIND)
+ set(CMAKE_AUTOMOC_MOC_OPTIONS -DHAVE_ELOGIND)
+
+- set(MINIMUM_VT 7)
+ set(HALT_COMMAND "/usr/bin/loginctl poweroff")
+ set(REBOOT_COMMAND "/usr/bin/loginctl reboot")
+ endif()
+@@ -171,10 +169,8 @@ if (NOT ELOGIND_FOUND AND NOT SYSTEMD_FOUND)
+ # commands for shutdown and reboot. On FreeBSD, there are
+ # normally more getty's running than on Linux.
+ if("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD")
+- set(MINIMUM_VT 9)
+ set(HALT_COMMAND "/sbin/shutdown -p now")
+ else()
+- set(MINIMUM_VT 7)
+ set(HALT_COMMAND "/sbin/shutdown -h -P now")
+ endif()
+ set(REBOOT_COMMAND "/sbin/shutdown -r now")
+diff --git a/data/man/sddm.conf.rst.in b/data/man/sddm.conf.rst.in
+index bee07681d..1061540c0 100644
+--- a/data/man/sddm.conf.rst.in
++++ b/data/man/sddm.conf.rst.in
+@@ -144,7 +144,7 @@ OPTIONS
+ Minimum virtual terminal number that will be used
+ by the first display. Virtual terminal number will
+ increase as new displays added.
+- Default value is @MINIMUM_VT@.
++ This setting is no longer available since SDDM v0.20.
+
+ `EnableHiDPI=`
+ Enables Qt's automatic HiDPI scaling.
+diff --git a/src/common/Configuration.h b/src/common/Configuration.h
+index cf44a629c..b79871988 100644
+--- a/src/common/Configuration.h
++++ b/src/common/Configuration.h
+@@ -70,7 +70,6 @@ namespace SDDM {
+ Entry(UserAuthFile, QString, _S(".Xauthority"), _S("Path to the Xauthority file"));
+ Entry(DisplayCommand, QString, _S(DATA_INSTALL_DIR "/scripts/Xsetup"), _S("Path to a script to execute when starting the display server"));
+ Entry(DisplayStopCommand, QString, _S(DATA_INSTALL_DIR "/scripts/Xstop"), _S("Path to a script to execute when stopping the display server"));
+- Entry(MinimumVT, int, MINIMUM_VT, _S("The lowest virtual terminal number that will be used."));
+ Entry(EnableHiDPI, bool, false, _S("Enable Qt's automatic high-DPI scaling"));
+ );
+
+diff --git a/src/common/Constants.h.in b/src/common/Constants.h.in
+index e174b5bfc..480512880 100644
+--- a/src/common/Constants.h.in
++++ b/src/common/Constants.h.in
+@@ -37,7 +37,6 @@
+ #define SYSTEM_CONFIG_DIR "@SYSTEM_CONFIG_DIR@"
+
+ #define LOG_FILE "@LOG_FILE@"
+-#define MINIMUM_VT @MINIMUM_VT@
+
+ #define UID_MIN @UID_MIN@
+ #define UID_MAX @UID_MAX@
+diff --git a/src/daemon/Display.cpp b/src/daemon/Display.cpp
+index ed13bae79..3c77454fc 100644
+--- a/src/daemon/Display.cpp
++++ b/src/daemon/Display.cpp
+@@ -46,6 +46,7 @@
+
+ #include "Login1Manager.h"
+ #include "Login1Session.h"
++#include "VirtualTerminal.h"
+
+ #if defined(Q_OS_LINUX)
+ #include <utmp.h>
+@@ -53,14 +54,16 @@
+ #include <utmpx.h>
+
+ namespace SDDM {
+- Display::Display(const int terminalId, Seat *parent) : QObject(parent),
+- m_terminalId(terminalId),
++ Display::Display(Seat *parent) : QObject(parent),
+ m_auth(new Auth(this)),
+ m_displayServer(new XorgDisplayServer(this)),
+ m_seat(parent),
+ m_socketServer(new SocketServer(this)),
+ m_greeter(new Greeter(this)) {
+
++ // Allocate vt
++ m_terminalId = VirtualTerminal::setUpNewVt();
++
+ // respond to authentication requests
+ m_auth->setVerbose(true);
+ connect(m_auth, &Auth::requestChanged, this, &Display::slotRequestChanged);
+diff --git a/src/daemon/Display.h b/src/daemon/Display.h
+index 8b3c2c635..61dd9f630 100644
+--- a/src/daemon/Display.h
++++ b/src/daemon/Display.h
+@@ -41,7 +41,7 @@ namespace SDDM {
+ Q_OBJECT
+ Q_DISABLE_COPY(Display)
+ public:
+- explicit Display(int terminalId, Seat *parent);
++ explicit Display(Seat *parent);
+ ~Display();
+
+ QString displayId() const;
+diff --git a/src/daemon/Seat.cpp b/src/daemon/Seat.cpp
+index 838c2221d..a2f3d0c39 100644
+--- a/src/daemon/Seat.cpp
++++ b/src/daemon/Seat.cpp
+@@ -33,18 +33,6 @@
+ #include <functional>
+
+ namespace SDDM {
+- int findUnused(int minimum, std::function<bool(const int)> used) {
+- // initialize with minimum
+- int number = minimum;
+-
+- // find unused
+- while (used(number))
+- number++;
+-
+- // return number;
+- return number;
+- }
+-
+ Seat::Seat(const QString &name, QObject *parent) : QObject(parent), m_name(name) {
+ createDisplay();
+ }
+@@ -53,30 +41,13 @@ namespace SDDM {
+ return m_name;
+ }
+
+- void Seat::createDisplay(int terminalId) {
++ void Seat::createDisplay() {
+ //reload config if needed
+ mainConfig.load();
+
+- if (m_name == QLatin1String("seat0")) {
+- if (terminalId == -1) {
+- // find unused terminal
+- terminalId = findUnused(mainConfig.X11.MinimumVT.get(), [&](const int number) {
+- return m_terminalIds.contains(number);
+- });
+- }
+-
+- // mark terminal as used
+- m_terminalIds << terminalId;
+-
+- // log message
+- qDebug() << "Adding new display" << "on vt" << terminalId << "...";
+- }
+- else {
+- qDebug() << "Adding new VT-less display...";
+- }
+-
+ // create a new display
+- Display *display = new Display(terminalId, this);
++ qDebug() << "Adding new display...";
++ Display *display = new Display(this);
+
+ // restart display on stop
+ connect(display, &Display::stopped, this, &Seat::displayStopped);
+@@ -112,9 +83,6 @@ namespace SDDM {
+ // remove display from list
+ m_displays.removeAll(display);
+
+- // mark display and terminal ids as unused
+- m_terminalIds.removeAll(display->terminalId());
+-
+ // stop the display
+ display->blockSignals(true);
+ display->stop();
+diff --git a/src/daemon/Seat.h b/src/daemon/Seat.h
+index f9fe7331f..685eaedd2 100644
+--- a/src/daemon/Seat.h
++++ b/src/daemon/Seat.h
+@@ -35,7 +35,7 @@ namespace SDDM {
+ const QString &name() const;
+
+ public slots:
+- void createDisplay(int terminalId = -1);
++ void createDisplay();
+ void removeDisplay(SDDM::Display* display);
+
+ private slots:
+@@ -47,7 +47,6 @@ namespace SDDM {
+ QString m_name;
+
+ QVector<Display *> m_displays;
+- QVector<int> m_terminalIds;
+ };
+ }
+
diff --git a/user/sddm/authed.patch b/user/sddm/authed.patch
new file mode 100644
index 000000000..fe76652f8
--- /dev/null
+++ b/user/sddm/authed.patch
@@ -0,0 +1,32 @@
+From b2520c9fdeff081b1ac66a4a15289cedfa6944b9 Mon Sep 17 00:00:00 2001
+From: Fabian Vogt <fabian@ritter-vogt.de>
+Date: Wed, 9 Dec 2020 19:33:08 +0100
+Subject: [PATCH] Emit XorgDisplayServer::started only when the auth file is
+ ready
+
+---
+ src/daemon/XorgDisplayServer.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/daemon/XorgDisplayServer.cpp b/src/daemon/XorgDisplayServer.cpp
+index 3a7bee0d8..331adcda7 100644
+--- a/src/daemon/XorgDisplayServer.cpp
++++ b/src/daemon/XorgDisplayServer.cpp
+@@ -219,8 +219,6 @@ namespace SDDM {
+ // close our pipe
+ close(pipeFds[0]);
+
+- emit started();
+-
+ // The file is also used by the greeter, which does care about the
+ // display number. Write the proper entry, if it's different.
+ if(m_display != QStringLiteral(":0")) {
+@@ -232,6 +230,8 @@ namespace SDDM {
+ }
+ changeOwner(m_authPath);
+
++ emit started();
++
+ // set flag
+ m_started = true;
+
diff --git a/user/sddm/autologin-pam.patch b/user/sddm/autologin-pam.patch
new file mode 100644
index 000000000..bb4560b69
--- /dev/null
+++ b/user/sddm/autologin-pam.patch
@@ -0,0 +1,80 @@
+From a6280bde181c72811ab5dd0eb525f112ac72099f Mon Sep 17 00:00:00 2001
+From: Aleix Pol <aleixpol@kde.org>
+Date: Thu, 24 Jun 2021 17:08:10 +0200
+Subject: [PATCH] pam: Do not use tally2 if faillock is present
+
+From pam 1.4.0 release notes:
+
+Deprecated pam_tally and pam_tally2: these modules are no longer built
+by default and will be removed in the next release, use pam_faillock
+instead.
+https://github.com/linux-pam/linux-pam/releases/tag/v1.4.0
+
+Fixes #1313
+---
+ cmake/FindPAM.cmake | 1 +
+ services/CMakeLists.txt | 6 +++++-
+ services/sddm-autologin-tally2.pam | 13 +++++++++++++
+ services/sddm-autologin.pam | 2 +-
+ 4 files changed, 20 insertions(+), 2 deletions(-)
+ create mode 100755 services/sddm-autologin-tally2.pam
+
+diff --git a/cmake/FindPAM.cmake b/cmake/FindPAM.cmake
+index f209c0b46..a64680bea 100644
+--- a/cmake/FindPAM.cmake
++++ b/cmake/FindPAM.cmake
+@@ -13,6 +13,7 @@ endif (PAM_INCLUDE_DIR AND PAM_LIBRARY)
+ find_path(PAM_INCLUDE_DIR NAMES security/pam_appl.h pam/pam_appl.h)
+ find_library(PAM_LIBRARY pam)
+ find_library(DL_LIBRARY dl)
++find_library(HAVE_PAM_FAILLOCK NAME pam_faillock.so PATH_SUFFIXES security)
+
+ if (PAM_INCLUDE_DIR AND PAM_LIBRARY)
+ set(PAM_FOUND TRUE)
+diff --git a/services/CMakeLists.txt b/services/CMakeLists.txt
+index fbf760895..6e4fa0f93 100644
+--- a/services/CMakeLists.txt
++++ b/services/CMakeLists.txt
+@@ -10,6 +10,10 @@ else()
+ endif()
+ configure_file("${CMAKE_CURRENT_SOURCE_DIR}/sddm-greeter.pam.in" "${CMAKE_CURRENT_BINARY_DIR}/sddm-greeter.pam")
+
++if(HAVE_PAM_FAILLOCK)
++ install(FILES sddm-autologin.pam DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/pam.d RENAME sddm-autologin)
++else()
++ install(FILES sddm-autologin-tally2.pam DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/pam.d RENAME sddm-autologin)
++endif()
+ install(FILES sddm.pam DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/pam.d RENAME sddm)
+-install(FILES sddm-autologin.pam DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/pam.d RENAME sddm-autologin)
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/sddm-greeter.pam" DESTINATION ${CMAKE_INSTALL_FULL_SYSCONFDIR}/pam.d RENAME sddm-greeter)
+diff --git a/services/sddm-autologin-tally2.pam b/services/sddm-autologin-tally2.pam
+new file mode 100755
+index 000000000..99729bc9b
+--- /dev/null
++++ b/services/sddm-autologin-tally2.pam
+@@ -0,0 +1,13 @@
++#%PAM-1.0
++auth required pam_env.so
++auth required pam_tally2.so file=/var/log/tallylog onerr=succeed
++auth required pam_shells.so
++auth required pam_nologin.so
++auth required pam_permit.so
++-auth optional pam_gnome_keyring.so
++-auth optional pam_kwallet5.so
++account include system-local-login
++password include system-local-login
++session include system-local-login
++-session optional pam_gnome_keyring.so auto_start
++-session optional pam_kwallet5.so auto_start
+diff --git a/services/sddm-autologin.pam b/services/sddm-autologin.pam
+index 99729bc9b..b42991e38 100755
+--- a/services/sddm-autologin.pam
++++ b/services/sddm-autologin.pam
+@@ -1,6 +1,6 @@
+ #%PAM-1.0
+ auth required pam_env.so
+-auth required pam_tally2.so file=/var/log/tallylog onerr=succeed
++auth required pam_faillock.so preauth
+ auth required pam_shells.so
+ auth required pam_nologin.so
+ auth required pam_permit.so
diff --git a/user/sddm/autologin-type.patch b/user/sddm/autologin-type.patch
new file mode 100644
index 000000000..cc5738065
--- /dev/null
+++ b/user/sddm/autologin-type.patch
@@ -0,0 +1,31 @@
+From e81dfcd6913c4fbd1801597168291b1e396633d8 Mon Sep 17 00:00:00 2001
+From: Fabian Vogt <fabian@ritter-vogt.de>
+Date: Wed, 6 Jan 2021 16:00:34 +0100
+Subject: [PATCH] Fix sessions being started as the wrong type on autologin
+
+For autologin, the last session is used, which contains a full path.
+Display::findSessionEntry didn't handle that correctly, which led to
+X11 sessions getting started as Wayland ones (or the other way around
+before 994fa67).
+
+Fixes #1348
+---
+ src/daemon/Display.cpp | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/src/daemon/Display.cpp b/src/daemon/Display.cpp
+index b95f6e51e..9f1fabc68 100644
+--- a/src/daemon/Display.cpp
++++ b/src/daemon/Display.cpp
+@@ -245,6 +245,11 @@ namespace SDDM {
+ }
+
+ bool Display::findSessionEntry(const QDir &dir, const QString &name) const {
++ // Given an absolute path: Check that it matches dir
++ const QFileInfo fileInfo(name);
++ if (fileInfo.isAbsolute() && fileInfo.absolutePath() != dir.absolutePath())
++ return false;
++
+ QString fileName = name;
+
+ // append extension
diff --git a/user/sddm/ck2-support.patch b/user/sddm/ck2-support.patch
deleted file mode 100644
index f073877fc..000000000
--- a/user/sddm/ck2-support.patch
+++ /dev/null
@@ -1,89 +0,0 @@
-diff --git a/src/daemon/LogindDBusTypes.cpp b/src/daemon/LogindDBusTypes.cpp
-index 79c7031..4ccfeb5 100644
---- a/src/daemon/LogindDBusTypes.cpp
-+++ b/src/daemon/LogindDBusTypes.cpp
-@@ -18,6 +18,7 @@ public:
- QString sessionIfaceName;
- QString seatIfaceName;
- QString userIfaceName;
-+ QString newSeatSignalName;
- };
-
- LogindPathInternal::LogindPathInternal()
-@@ -55,18 +56,20 @@ LogindPathInternal::LogindPathInternal()
- seatIfaceName = QStringLiteral("org.freedesktop.login1.Seat");
- sessionIfaceName = QStringLiteral("org.freedesktop.login1.Session");
- userIfaceName = QStringLiteral("org.freedesktop.login1.User");
-+ newSeatSignalName = QStringLiteral("SeatNew");
- return;
- }
-
- if (QDBusConnection::systemBus().interface()->isServiceRegistered(QStringLiteral("org.freedesktop.ConsoleKit"))) {
-- qDebug() << "Console kit interface found";
-+ qDebug() << "ConsoleKit interface found";
- available = true;
- serviceName = QStringLiteral("org.freedesktop.ConsoleKit");
- managerPath = QStringLiteral("/org/freedesktop/ConsoleKit/Manager");
- managerIfaceName = QStringLiteral("org.freedesktop.ConsoleKit.Manager"); //note this doesn't match logind
- seatIfaceName = QStringLiteral("org.freedesktop.ConsoleKit.Seat");
- sessionIfaceName = QStringLiteral("org.freedesktop.ConsoleKit.Session");
- userIfaceName = QStringLiteral("org.freedesktop.ConsoleKit.User");
-+ newSeatSignalName = QStringLiteral("SeatAdded");
- return;
- }
- qDebug() << "No session manager found";
-@@ -109,3 +112,8 @@ QString Logind::userIfaceName()
- {
- return s_instance->userIfaceName;
- }
-+
-+QString Logind::newSeatSignalName()
-+{
-+ return s_instance->newSeatSignalName;
-+}
-diff --git a/src/daemon/LogindDBusTypes.h b/src/daemon/LogindDBusTypes.h
-index f1e8dd4..028879a 100644
---- a/src/daemon/LogindDBusTypes.h
-+++ b/src/daemon/LogindDBusTypes.h
-@@ -13,6 +13,7 @@ struct Logind
- static QString sessionIfaceName();
- static QString seatIfaceName();
- static QString userIfaceName();
-+ static QString newSeatSignalName();
- };
-
-
-diff --git a/src/daemon/SeatManager.cpp b/src/daemon/SeatManager.cpp
-index c5afc57..6281ea8 100644
---- a/src/daemon/SeatManager.cpp
-+++ b/src/daemon/SeatManager.cpp
-@@ -26,6 +26,7 @@
- #include <QDBusMessage>
- #include <QDBusPendingReply>
- #include <QDBusContext>
-+#include <QDebug>
-
- #include "LogindDBusTypes.h"
-
-@@ -59,6 +60,12 @@ namespace SDDM {
- QDBusPendingCallWatcher *watcher = new QDBusPendingCallWatcher(reply);
- connect(watcher, &QDBusPendingCallWatcher::finished, this, [=]() {
- watcher->deleteLater();
-+ if (Logind::serviceName().contains(QStringLiteral("ConsoleKit"))) {
-+ m_canGraphical = true;
-+ emit canGraphicalChanged(m_canGraphical);
-+ return;
-+ }
-+
- if (!reply.isValid())
- return;
-
-@@ -113,7 +120,7 @@ namespace SDDM {
- }
- });
-
-- QDBusConnection::systemBus().connect(Logind::serviceName(), Logind::managerPath(), Logind::managerIfaceName(), QStringLiteral("SeatNew"), this, SLOT(logindSeatAdded(QString,QDBusObjectPath)));
-+ QDBusConnection::systemBus().connect(Logind::serviceName(), Logind::managerPath(), Logind::managerIfaceName(), Logind::newSeatSignalName(), this, SLOT(logindSeatAdded(QString,QDBusObjectPath)));
- QDBusConnection::systemBus().connect(Logind::serviceName(), Logind::managerPath(), Logind::managerIfaceName(), QStringLiteral("SeatRemoved"), this, SLOT(logindSeatRemoved(QString,QDBusObjectPath)));
- }
-
diff --git a/user/sddm/cleanup-xorg.patch b/user/sddm/cleanup-xorg.patch
new file mode 100644
index 000000000..7949b2dbf
--- /dev/null
+++ b/user/sddm/cleanup-xorg.patch
@@ -0,0 +1,63 @@
+From 3b00cd06f82837ba85f37c9f632261e7b4c6fd35 Mon Sep 17 00:00:00 2001
+From: Fabian Vogt <fabian@ritter-vogt.de>
+Date: Wed, 9 Dec 2020 19:28:41 +0100
+Subject: [PATCH] Explicitly stop Xorg when starting fails
+
+When Xorg starts but there is an error, stop it explicitly instead of assuming
+that X exits itself. This avoids a possibly lingering Xorg process in the
+XorgDisplayServer instance. Add a check and warning message if Xorg is
+restarted too early (shouldn't happen).
+---
+ src/daemon/XorgDisplayServer.cpp | 11 +++++++++--
+ 1 file changed, 9 insertions(+), 2 deletions(-)
+
+diff --git a/src/daemon/XorgDisplayServer.cpp b/src/daemon/XorgDisplayServer.cpp
+index 5f40fe8c3..3a7bee0d8 100644
+--- a/src/daemon/XorgDisplayServer.cpp
++++ b/src/daemon/XorgDisplayServer.cpp
+@@ -118,6 +118,11 @@ namespace SDDM {
+ if (m_started)
+ return false;
+
++ if (process) {
++ qCritical() << "Tried to start Xorg before previous instance exited";
++ return false;
++ }
++
+ // create process
+ process = new QProcess(this);
+
+@@ -195,6 +200,7 @@ namespace SDDM {
+ qCritical("Failed to open pipe to start X Server");
+
+ close(pipeFds[0]);
++ stop();
+ return false;
+ }
+ QByteArray displayNumber = readPipe.readLine();
+@@ -203,6 +209,7 @@ namespace SDDM {
+ qCritical("Failed to read display number from pipe");
+
+ close(pipeFds[0]);
++ stop();
+ return false;
+ }
+ displayNumber.prepend(QByteArray(":"));
+@@ -219,6 +226,7 @@ namespace SDDM {
+ if(m_display != QStringLiteral(":0")) {
+ if(!addCookie(m_authPath)) {
+ qCritical() << "Failed to write xauth file";
++ stop();
+ return false;
+ }
+ }
+@@ -232,8 +240,7 @@ namespace SDDM {
+ }
+
+ void XorgDisplayServer::stop() {
+- // check flag
+- if (!m_started)
++ if (!process)
+ return;
+
+ // log message
diff --git a/user/sddm/qt515.patch b/user/sddm/qt515.patch
new file mode 100644
index 000000000..51094817c
--- /dev/null
+++ b/user/sddm/qt515.patch
@@ -0,0 +1,23 @@
+From e93bf95c54ad8c2a1604f8d7be05339164b19308 Mon Sep 17 00:00:00 2001
+From: "aacid@kde.org" <aacid@kde.org>
+Date: Thu, 12 Nov 2020 23:42:48 +0100
+Subject: [PATCH] Fix compilation once QTBUG-88431 gets fixed
+
+And also comes closes to Qt6 compatibility
+---
+ src/daemon/XorgDisplayServer.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/daemon/XorgDisplayServer.cpp b/src/daemon/XorgDisplayServer.cpp
+index 5f93a1b37..d5f29a94a 100644
+--- a/src/daemon/XorgDisplayServer.cpp
++++ b/src/daemon/XorgDisplayServer.cpp
+@@ -65,7 +65,7 @@ namespace SDDM {
+ // create a random hexadecimal number
+ const char *digits = "0123456789abcdef";
+ for (int i = 0; i < 32; ++i)
+- m_cookie[i] = digits[dis(gen)];
++ m_cookie[i] = QLatin1Char(digits[dis(gen)]);
+ }
+
+ XorgDisplayServer::~XorgDisplayServer() {
diff --git a/user/sddm/retry.patch b/user/sddm/retry.patch
new file mode 100644
index 000000000..84edc7f08
--- /dev/null
+++ b/user/sddm/retry.patch
@@ -0,0 +1,115 @@
+From 42c51761cc82edbaa50d702a4614e179ad4bcd63 Mon Sep 17 00:00:00 2001
+From: Fabian Vogt <fabian@ritter-vogt.de>
+Date: Thu, 12 Nov 2020 20:30:55 +0100
+Subject: [PATCH] Retry starting the display server
+
+Even if the CanGraphical property of a Seat is true, it's possible that it's
+still too early for X to start, as it might need some driver or device which
+isn't present yet.
+
+Fixes #1316
+---
+ src/daemon/Seat.cpp | 23 ++++++++++++++++++-----
+ src/daemon/Seat.h | 4 +++-
+ src/daemon/XorgDisplayServer.cpp | 10 ++++++----
+ 3 files changed, 27 insertions(+), 10 deletions(-)
+
+diff --git a/src/daemon/Seat.cpp b/src/daemon/Seat.cpp
+index eef26da45..838c2221d 100644
+--- a/src/daemon/Seat.cpp
++++ b/src/daemon/Seat.cpp
+@@ -28,6 +28,7 @@
+
+ #include <QDebug>
+ #include <QFile>
++#include <QTimer>
+
+ #include <functional>
+
+@@ -52,7 +53,7 @@ namespace SDDM {
+ return m_name;
+ }
+
+- bool Seat::createDisplay(int terminalId) {
++ void Seat::createDisplay(int terminalId) {
+ //reload config if needed
+ mainConfig.load();
+
+@@ -84,12 +85,24 @@ namespace SDDM {
+ m_displays << display;
+
+ // start the display
+- if (!display->start()) {
+- qCritical() << "Could not start Display server on vt" << terminalId;
+- return false;
++ startDisplay(display);
++ }
++
++ void Seat::startDisplay(Display *display, int tryNr) {
++ if (display->start())
++ return;
++
++ // It's possible that the system isn't ready yet (driver not loaded,
++ // device not enumerated, ...). It's not possible to tell when that changes,
++ // so try a few times with a delay in between.
++ qWarning() << "Attempt" << tryNr << "starting the Display server on vt" << display->terminalId() << "failed";
++
++ if(tryNr >= 3) {
++ qCritical() << "Could not start Display server on vt" << display->terminalId();
++ return;
+ }
+
+- return true;
++ QTimer::singleShot(2000, display, [=] { startDisplay(display, tryNr + 1); });
+ }
+
+ void Seat::removeDisplay(Display* display) {
+diff --git a/src/daemon/Seat.h b/src/daemon/Seat.h
+index bf22566b7..f9fe7331f 100644
+--- a/src/daemon/Seat.h
++++ b/src/daemon/Seat.h
+@@ -35,13 +35,15 @@ namespace SDDM {
+ const QString &name() const;
+
+ public slots:
+- bool createDisplay(int terminalId = -1);
++ void createDisplay(int terminalId = -1);
+ void removeDisplay(SDDM::Display* display);
+
+ private slots:
+ void displayStopped();
+
+ private:
++ void startDisplay(SDDM::Display *display, int tryNr = 1);
++
+ QString m_name;
+
+ QVector<Display *> m_displays;
+diff --git a/src/daemon/XorgDisplayServer.cpp b/src/daemon/XorgDisplayServer.cpp
+index e60c02210..5f40fe8c3 100644
+--- a/src/daemon/XorgDisplayServer.cpp
++++ b/src/daemon/XorgDisplayServer.cpp
+@@ -248,6 +248,12 @@ namespace SDDM {
+ }
+
+ void XorgDisplayServer::finished() {
++ // clean up
++ if (process) {
++ process->deleteLater();
++ process = nullptr;
++ }
++
+ // check flag
+ if (!m_started)
+ return;
+@@ -283,10 +289,6 @@ namespace SDDM {
+ displayStopScript->deleteLater();
+ displayStopScript = nullptr;
+
+- // clean up
+- process->deleteLater();
+- process = nullptr;
+-
+ // remove authority file
+ QFile::remove(m_authPath);
+
diff --git a/user/sddm/revert-fedora.patch b/user/sddm/revert-fedora.patch
new file mode 100644
index 000000000..63bb58395
--- /dev/null
+++ b/user/sddm/revert-fedora.patch
@@ -0,0 +1,74 @@
+From 994fa67b01ccfac1aaac08572302bbbea7842dc3 Mon Sep 17 00:00:00 2001
+Subject: Revert: Prefer Wayland sessions over X11 ones
+
+Reference: https://fedoraproject.org/wiki/Changes/WaylandByDefaultForPlasma
+---
+ src/common/Session.cpp | 8 ++++----
+ src/daemon/Display.cpp | 6 +++---
+ src/greeter/SessionModel.cpp | 6 +++---
+ 3 files changed, 10 insertions(+), 10 deletions(-)
+
+--- b/src/common/Session.cpp
++++ a/src/common/Session.cpp
+@@ -131,14 +131,14 @@
+ m_desktopNames.clear();
+
+ switch (type) {
++ case X11Session:
++ m_dir = QDir(mainConfig.X11.SessionDir.get());
++ m_xdgSessionType = QStringLiteral("x11");
++ break;
+ case WaylandSession:
+ m_dir = QDir(mainConfig.Wayland.SessionDir.get());
+ m_xdgSessionType = QStringLiteral("wayland");
+ break;
+- case X11Session:
+- m_dir = QDir(mainConfig.X11.SessionDir.get());
+- m_xdgSessionType = QStringLiteral("x11");
+- break;
+ default:
+ m_xdgSessionType.clear();
+ break;
+--- b/src/daemon/Display.cpp
++++ a/src/daemon/Display.cpp
+@@ -115,10 +115,10 @@
+ if (autologinSession.isEmpty()) {
+ autologinSession = stateConfig.Last.Session.get();
+ }
++ if (findSessionEntry(mainConfig.X11.SessionDir.get(), autologinSession)) {
++ sessionType = Session::X11Session;
++ } else if (findSessionEntry(mainConfig.Wayland.SessionDir.get(), autologinSession)) {
+- if (findSessionEntry(mainConfig.Wayland.SessionDir.get(), autologinSession)) {
+ sessionType = Session::WaylandSession;
+- } else if (findSessionEntry(mainConfig.X11.SessionDir.get(), autologinSession)) {
+- sessionType = Session::X11Session;
+ } else {
+ qCritical() << "Unable to find autologin session entry" << autologinSession;
+ return false;
+--- b/src/greeter/SessionModel.cpp
++++ a/src/greeter/SessionModel.cpp
+@@ -41,8 +41,8 @@
+ SessionModel::SessionModel(QObject *parent) : QAbstractListModel(parent), d(new SessionModelPrivate()) {
+ // initial population
+ beginResetModel();
++ populate(Session::X11Session, mainConfig.X11.SessionDir.get());
+ populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get());
+- populate(Session::X11Session, mainConfig.X11.SessionDir.get());
+ endResetModel();
+
+ // refresh everytime a file is changed, added or removed
+@@ -50,12 +50,12 @@
+ connect(watcher, &QFileSystemWatcher::directoryChanged, [this](const QString &path) {
+ beginResetModel();
+ d->sessions.clear();
++ populate(Session::X11Session, mainConfig.X11.SessionDir.get());
+ populate(Session::WaylandSession, mainConfig.Wayland.SessionDir.get());
+- populate(Session::X11Session, mainConfig.X11.SessionDir.get());
+ endResetModel();
+ });
++ watcher->addPath(mainConfig.X11.SessionDir.get());
+ watcher->addPath(mainConfig.Wayland.SessionDir.get());
+- watcher->addPath(mainConfig.X11.SessionDir.get());
+ }
+
+ SessionModel::~SessionModel() {
diff --git a/user/sddm/sddm.initd b/user/sddm/sddm.initd
new file mode 100644
index 000000000..8113454cf
--- /dev/null
+++ b/user/sddm/sddm.initd
@@ -0,0 +1,17 @@
+#!/sbin/openrc-run
+
+depends() {
+ needs localmount
+ after bootmisc consolefont modules netmount keymaps
+
+ use dbus elogind
+}
+
+description="Simple Desktop Display Manager"
+command="/usr/bin/sddm"
+command_args="${sddm_opts}"
+start_stop_daemon_args="-m --background"
+pidfile="/var/run/sddm.pid"
+
+# uses the openrc templates for start()/stop()
+
diff --git a/user/sddm/sddm.post-install b/user/sddm/sddm.post-install
index 3e3850cde..7078e3be2 100644
--- a/user/sddm/sddm.post-install
+++ b/user/sddm/sddm.post-install
@@ -1,3 +1,3 @@
#!/bin/sh
-useradd -G video -c "Display manager user" -d /var/lib/sddm -m -r -s /sbin/nologin -U sddm
+useradd -G video -c "Display manager user" -d /var/lib/sddm -m -r -s /sbin/nologin -U sddm || exit 0
diff --git a/user/sddm/session-env.patch b/user/sddm/session-env.patch
new file mode 100644
index 000000000..e73ab8fc4
--- /dev/null
+++ b/user/sddm/session-env.patch
@@ -0,0 +1,122 @@
+From 093e8e54c7de33c2d7332cc3a126041263e1aa71 Mon Sep 17 00:00:00 2001
+From: davidedmundson <kde@davidedmundson.co.uk>
+Date: Mon, 8 Mar 2021 07:35:55 +0000
+Subject: [PATCH] Allow addition env vars to be defined in session files
+ (#1370)
+
+We have a continual problem with developers using Plasma in custom
+prefixes. We need to set mulitple additional envs and it is a constant
+pain point.
+
+Setting XDG_DATA_DIRS and alike in a script in the Exec line of the
+desktop file doesn't work properly, as this is after systemd and dbus
+have already been started during pam_logind. It is currently very bodged
+with more manual steps.
+
+Things will work much better if we can set the env before pam_logind is
+run.
+
+Using pam_env or profile.d doesn't work as that affects all the
+sessions.
+
+It is not intended to be used for anything other than dev setups.
+---
+ src/common/Session.cpp | 24 ++++++++++++++++++++++++
+ src/common/Session.h | 5 +++++
+ src/daemon/Display.cpp | 1 +
+ 3 files changed, 30 insertions(+)
+
+diff --git a/src/common/Session.cpp b/src/common/Session.cpp
+index 3de28ef13..0aa540221 100644
+--- a/src/common/Session.cpp
++++ b/src/common/Session.cpp
+@@ -107,6 +107,10 @@ namespace SDDM {
+ return m_isNoDisplay;
+ }
+
++ QProcessEnvironment Session::additionalEnv() const {
++ return m_additionalEnv;
++ }
++
+ void Session::setTo(Type type, const QString &_fileName)
+ {
+ QString fileName(_fileName);
+@@ -178,6 +182,8 @@ namespace SDDM {
+ m_isHidden = line.mid(7).toLower() == QLatin1String("true");
+ if (line.startsWith(QLatin1String("NoDisplay=")))
+ m_isNoDisplay = line.mid(10).toLower() == QLatin1String("true");
++ if (line.startsWith(QLatin1String("X-SDDM-Env=")))
++ m_additionalEnv = parseEnv(line.mid(strlen("X-SDDM-Env=")));
+ }
+
+ file.close();
+@@ -191,4 +197,22 @@ namespace SDDM {
+ setTo(other.type(), other.fileName());
+ return *this;
+ }
++
++ QProcessEnvironment SDDM::Session::parseEnv(const QString &list)
++ {
++ QProcessEnvironment env;
++
++ const QVector<QStringRef> entryList = list.splitRef(QLatin1Char(','));
++ for (const auto &entry: entryList) {
++ int midPoint = entry.indexOf(QLatin1Char('='));
++ if (midPoint < 0) {
++ qWarning() << "Malformed entry in" << fileName() << ":" << entry;
++ continue;
++ }
++ env.insert(entry.left(midPoint).toString(), entry.mid(midPoint+1).toString());
++ }
++ return env;
++ }
++
++
+ }
+diff --git a/src/common/Session.h b/src/common/Session.h
+index 9fd86cd02..aa196e9c6 100644
+--- a/src/common/Session.h
++++ b/src/common/Session.h
+@@ -23,6 +23,7 @@
+ #include <QDataStream>
+ #include <QDir>
+ #include <QSharedPointer>
++#include <QProcessEnvironment>
+
+ namespace SDDM {
+ class SessionModel;
+@@ -59,11 +60,14 @@ namespace SDDM {
+ bool isHidden() const;
+ bool isNoDisplay() const;
+
++ QProcessEnvironment additionalEnv() const;
++
+ void setTo(Type type, const QString &name);
+
+ Session &operator=(const Session &other);
+
+ private:
++ QProcessEnvironment parseEnv(const QString &list);
+ bool m_valid;
+ Type m_type;
+ QDir m_dir;
+@@ -75,6 +79,7 @@ namespace SDDM {
+ QString m_tryExec;
+ QString m_xdgSessionType;
+ QString m_desktopNames;
++ QProcessEnvironment m_additionalEnv;
+ bool m_isHidden;
+ bool m_isNoDisplay;
+
+diff --git a/src/daemon/Display.cpp b/src/daemon/Display.cpp
+index 9f1fabc68..a65df3f0b 100644
+--- a/src/daemon/Display.cpp
++++ b/src/daemon/Display.cpp
+@@ -313,6 +313,7 @@ namespace SDDM {
+ qDebug() << "Session" << m_sessionName << "selected, command:" << session.exec();
+
+ QProcessEnvironment env;
++ env.insert(session.additionalEnv());
+
+ if (seat()->name() == QLatin1String("seat0")) {
+ // Use the greeter VT, for wayland sessions the helper overwrites this
diff --git a/user/sddm/utmpx.patch b/user/sddm/utmpx.patch
index 1edd72d7d..4402fd861 100644
--- a/user/sddm/utmpx.patch
+++ b/user/sddm/utmpx.patch
@@ -1,10 +1,12 @@
---- sddm-0.18.0/src/helper/HelperApp.cpp.old 2018-07-18 10:31:40.000000000 +0000
-+++ sddm-0.18.0/src/helper/HelperApp.cpp 2018-07-25 23:11:09.840000000 +0000
-@@ -35,7 +35,6 @@
+--- sddm-0.19.0/src/helper/HelperApp.cpp.old 2020-11-03 03:47:51.000000000 -0600
++++ sddm-0.19.0/src/helper/HelperApp.cpp 2022-08-19 21:59:19.977071884 -0500
+@@ -36,9 +36,6 @@
#include <sys/socket.h>
#include <sys/time.h>
+-#if defined(Q_OS_LINUX)
-#include <utmp.h>
+-#endif
#include <utmpx.h>
#include <QByteArray>
diff --git a/user/sddm/xdm.confd b/user/sddm/xdm.confd
deleted file mode 100644
index 9a6cd65da..000000000
--- a/user/sddm/xdm.confd
+++ /dev/null
@@ -1 +0,0 @@
-DISPLAYMANAGER="sddm"
diff --git a/user/sddm/xephyr.patch b/user/sddm/xephyr.patch
new file mode 100644
index 000000000..142520ad4
--- /dev/null
+++ b/user/sddm/xephyr.patch
@@ -0,0 +1,171 @@
+From 68cc9e31d1a4c4609f42114782fc485cb07353a4 Mon Sep 17 00:00:00 2001
+From: Fabian Vogt <fabian@ritter-vogt.de>
+Date: Fri, 9 Oct 2020 21:06:01 +0200
+Subject: [PATCH] Merge normal and testing paths in XorgDisplayServer::start
+
+They have much in common and this means that Xephyr can also make use use
+of -displayfd now.
+---
+ src/daemon/XorgDisplayServer.cpp | 132 ++++++++++++++-----------------
+ 1 file changed, 60 insertions(+), 72 deletions(-)
+
+diff --git a/src/daemon/XorgDisplayServer.cpp b/src/daemon/XorgDisplayServer.cpp
+index d5f29a94a..e60c02210 100644
+--- a/src/daemon/XorgDisplayServer.cpp
++++ b/src/daemon/XorgDisplayServer.cpp
+@@ -136,95 +136,83 @@ namespace SDDM {
+ return false;
+ }
+
+- if (daemonApp->testing()) {
+- QStringList args;
+- QDir x11socketDir(QStringLiteral("/tmp/.X11-unix"));
+- int display = 100;
+- while (x11socketDir.exists(QStringLiteral("X%1").arg(display))) {
+- ++display;
+- }
+- m_display = QStringLiteral(":%1").arg(display);
+- args << m_display << QStringLiteral("-auth") << m_authPath << QStringLiteral("-br") << QStringLiteral("-noreset") << QStringLiteral("-screen") << QStringLiteral("800x600");
+- process->start(mainConfig.X11.XephyrPath.get(), args);
+-
+-
+- // wait for display server to start
+- if (!process->waitForStarted()) {
+- // log message
+- qCritical() << "Failed to start display server process.";
++ // set process environment
++ QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
++ env.insert(QStringLiteral("XCURSOR_THEME"), mainConfig.Theme.CursorTheme.get());
++ process->setProcessEnvironment(env);
+
+- // return fail
+- return false;
+- }
+- emit started();
+- } else {
+- // set process environment
+- QProcessEnvironment env = QProcessEnvironment::systemEnvironment();
+- env.insert(QStringLiteral("XCURSOR_THEME"), mainConfig.Theme.CursorTheme.get());
+- process->setProcessEnvironment(env);
+-
+- //create pipe for communicating with X server
+- //0 == read from X, 1== write to from X
+- int pipeFds[2];
+- if (pipe(pipeFds) != 0) {
+- qCritical("Could not create pipe to start X server");
+- }
++ //create pipe for communicating with X server
++ //0 == read from X, 1== write to from X
++ int pipeFds[2];
++ if (pipe(pipeFds) != 0) {
++ qCritical("Could not create pipe to start X server");
++ }
+
+- // start display server
+- QStringList args = mainConfig.X11.ServerArguments.get().split(QLatin1Char(' '), QString::SkipEmptyParts);
+- args << QStringLiteral("-auth") << m_authPath
++ // start display server
++ QStringList args;
++ if (!daemonApp->testing()) {
++ process->setProgram(mainConfig.X11.ServerPath.get());
++ args << mainConfig.X11.ServerArguments.get().split(QLatin1Char(' '), QString::SkipEmptyParts)
+ << QStringLiteral("-background") << QStringLiteral("none")
+- << QStringLiteral("-noreset")
+- << QStringLiteral("-displayfd") << QString::number(pipeFds[1])
+ << QStringLiteral("-seat") << displayPtr()->seat()->name();
+
+ if (displayPtr()->seat()->name() == QLatin1String("seat0")) {
+ args << QStringLiteral("vt%1").arg(displayPtr()->terminalId());
+ }
+- qDebug() << "Running:"
+- << qPrintable(mainConfig.X11.ServerPath.get())
+- << qPrintable(args.join(QLatin1Char(' ')));
+- process->start(mainConfig.X11.ServerPath.get(), args);
+-
+- // wait for display server to start
+- if (!process->waitForStarted()) {
+- // log message
+- qCritical() << "Failed to start display server process.";
+-
+- // return fail
+- close(pipeFds[0]);
+- return false;
+- }
++ } else {
++ process->setProgram(mainConfig.X11.XephyrPath.get());
++ args << QStringLiteral("-br")
++ << QStringLiteral("-screen") << QStringLiteral("800x600");
++ }
+
+- // close the other side of pipe in our process, otherwise reading
+- // from it may stuck even X server exit.
+- close(pipeFds[1]);
++ args << QStringLiteral("-auth") << m_authPath
++ << QStringLiteral("-noreset")
++ << QStringLiteral("-displayfd") << QString::number(pipeFds[1]);
+
+- QFile readPipe;
++ process->setArguments(args);
++ qDebug() << "Running:"
++ << qPrintable(process->program())
++ << qPrintable(process->arguments().join(QLatin1Char(' ')));
++ process->start();
+
+- if (!readPipe.open(pipeFds[0], QIODevice::ReadOnly)) {
+- qCritical("Failed to open pipe to start X Server");
++ // wait for display server to start
++ if (!process->waitForStarted()) {
++ // log message
++ qCritical() << "Failed to start display server process.";
+
+- close(pipeFds[0]);
+- return false;
+- }
+- QByteArray displayNumber = readPipe.readLine();
+- if (displayNumber.size() < 2) {
+- // X server gave nothing (or a whitespace).
+- qCritical("Failed to read display number from pipe");
++ // return fail
++ close(pipeFds[0]);
++ return false;
++ }
+
+- close(pipeFds[0]);
+- return false;
+- }
+- displayNumber.prepend(QByteArray(":"));
+- displayNumber.remove(displayNumber.size() -1, 1); // trim trailing whitespace
+- m_display = QString::fromLocal8Bit(displayNumber);
++ // close the other side of pipe in our process, otherwise reading
++ // from it may stuck even X server exit.
++ close(pipeFds[1]);
++
++ QFile readPipe;
++
++ if (!readPipe.open(pipeFds[0], QIODevice::ReadOnly)) {
++ qCritical("Failed to open pipe to start X Server");
+
+- // close our pipe
+ close(pipeFds[0]);
++ return false;
++ }
++ QByteArray displayNumber = readPipe.readLine();
++ if (displayNumber.size() < 2) {
++ // X server gave nothing (or a whitespace).
++ qCritical("Failed to read display number from pipe");
+
+- emit started();
++ close(pipeFds[0]);
++ return false;
+ }
++ displayNumber.prepend(QByteArray(":"));
++ displayNumber.remove(displayNumber.size() -1, 1); // trim trailing whitespace
++ m_display = QString::fromLocal8Bit(displayNumber);
++
++ // close our pipe
++ close(pipeFds[0]);
++
++ emit started();
+
+ // The file is also used by the greeter, which does care about the
+ // display number. Write the proper entry, if it's different.
diff --git a/user/sdl/APKBUILD b/user/sdl/APKBUILD
index 176ac36b9..39bde54af 100644
--- a/user/sdl/APKBUILD
+++ b/user/sdl/APKBUILD
@@ -7,11 +7,11 @@ url="http://www.libsdl.org"
arch="all"
options="!check" # Tests are all interactive.
license="LGPL-2.1+"
-subpackages="$pkgname-dev $pkgname-doc"
-depends=
+depends=""
depends_dev="libx11-dev"
makedepends="$depends_dev libxext-dev libxrender-dev libx11-dev libice-dev
- libsm-dev libxrandr-dev mesa-dev alsa-lib-dev glu-dev"
+ libsm-dev libxrandr-dev libglvnd-dev alsa-lib-dev glu-dev"
+subpackages="$pkgname-dev $pkgname-doc"
source="http://www.libsdl.org/release/SDL-$pkgver.tar.gz
SDL-1.2.10-GrabNotViewable.patch
SDL-1.2.15-const_XData32.patch
@@ -19,13 +19,11 @@ source="http://www.libsdl.org/release/SDL-$pkgver.tar.gz
builddir="$srcdir"/SDL-$pkgver
prepare() {
- cd "$builddir"
update_config_sub
default_prepare
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -42,7 +40,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/sdl2/APKBUILD b/user/sdl2/APKBUILD
index 910eb1763..6e380a778 100644
--- a/user/sdl2/APKBUILD
+++ b/user/sdl2/APKBUILD
@@ -1,47 +1,44 @@
# Contributor: August Klein <amatcoder@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=sdl2
-pkgver=2.0.9
-pkgrel=0
+pkgver=2.0.22
+pkgrel=1
pkgdesc="Low level audio, keyboard, mouse, joystick and graphics library"
url="https://www.libsdl.org/"
arch="all"
+options="!check" # No test suite.
license="zlib"
depends=""
makedepends="alsa-lib-dev libx11-dev libxcursor-dev libxext-dev libxi-dev
libxkbcommon-dev libxrandr-dev libxrender-dev libusb-dev mesa-dev
- libxscrnsaver-dev dbus-dev eudev-dev pulseaudio-dev"
+ libxscrnsaver-dev dbus-dev eudev-dev pulseaudio-dev libglvnd-dev cmake
+ libxinerama-dev wayland-dev wayland-protocols"
subpackages="$pkgname-dev"
source="https://www.libsdl.org/release/SDL2-$pkgver.tar.gz
- ensure-c++-on-ppc.patch
+ altivec-detection.patch
+ sdl2-soname.patch
"
builddir="$srcdir/SDL2-$pkgver"
build() {
- cd "$builddir"
# pmOS needs DirectFB for battery animations and LUKS unlocking
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --enable-alsa \
- --enable-clock_gettime \
- --disable-arts \
- --disable-esd \
- --disable-nas \
- --disable-rpath \
- --with-x \
- make
-}
-
-check() {
- [ "$($builddir/sdl2-config --version)" = "$pkgver" ]
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} -Bbuild
+ make -C build
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="a78a4708b2bb5b35a7c7b7501eb3bd60a9aa3bb95a3d84e57763df4a377185e7312a94b66321eef7ca0d17255e4b402fc950e83ef0dbbd08f14ff1194107dc10 SDL2-2.0.9.tar.gz
-f64402503f4cf7e7d65efc1b397c9d632b0f592ee04893884155d0e88bc88e0ae096778cbd30a2caf61246430b43bd17a1f78dda8a8abcbc8ebd60ef107386ac ensure-c++-on-ppc.patch"
+sha512sums="ca4b690433cd4d9d73b797da98666317128e7e817ab60e874a49d94791ea41e8a6b4fc43649593120daa0702190c0f8a6ed326c908d87375c8da9f369d994f6a SDL2-2.0.22.tar.gz
+f7ca983c0450e95a760041c5c329e715bb513100efbd12c2469fd283e7ca4d3643b8180d6d5e64c66075ea03e1e88364853aa76d3db6dbcc8d22e8eb385881d6 altivec-detection.patch
+81b5807cd9f2683231c14562e961467fcd7ba257140d1a266932d6a6a5103633e3af896c09b261620b2934d521809e08ed79d3287c0897f4783c6afc1c01a566 sdl2-soname.patch"
diff --git a/user/sdl2/altivec-detection.patch b/user/sdl2/altivec-detection.patch
new file mode 100644
index 000000000..ccb60a375
--- /dev/null
+++ b/user/sdl2/altivec-detection.patch
@@ -0,0 +1,22 @@
+Use getauxval on Linux if available.
+
+--- SDL2-2.0.22/src/cpuinfo/SDL_cpuinfo.c.old 2022-01-08 02:29:52.000000000 +0000
++++ SDL2-2.0.22/src/cpuinfo/SDL_cpuinfo.c 2025-04-27 18:58:12.097867624 +0000
+@@ -113,7 +113,7 @@
+ #define CPU_HAS_AVX512F (1 << 12)
+ #define CPU_HAS_ARM_SIMD (1 << 13)
+
+-#if SDL_ALTIVEC_BLITTERS && HAVE_SETJMP && !__MACOSX__ && !__OpenBSD__ && !__FreeBSD__
++#if SDL_ALTIVEC_BLITTERS && HAVE_SETJMP && !__MACOSX__ && !__OpenBSD__ && !__FreeBSD__ && !__linux__
+ /* This is the brute force way of detecting instruction sets...
+ the idea is borrowed from the libmpeg2 library - thanks!
+ */
+@@ -333,6 +333,8 @@
+ elf_aux_info(AT_HWCAP, &cpufeatures, sizeof(cpufeatures));
+ altivec = cpufeatures & PPC_FEATURE_HAS_ALTIVEC;
+ return altivec;
++#elif defined(__linux__) && defined(__powerpc__) && HAVE_GETAUXVAL
++ altivec = getauxval(AT_HWCAP) & PPC_FEATURE_HAS_ALTIVEC;
+ #elif SDL_ALTIVEC_BLITTERS && HAVE_SETJMP
+ void (*handler) (int sig);
+ handler = signal(SIGILL, illegal_instruction);
diff --git a/user/sdl2/ensure-c++-on-ppc.patch b/user/sdl2/ensure-c++-on-ppc.patch
deleted file mode 100644
index 03708c9b6..000000000
--- a/user/sdl2/ensure-c++-on-ppc.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-On PowerPC systems, using SDL2 in a C++ codebase would FTBFS.
-
---- SDL2-2.0.8/include/SDL_cpuinfo.h.old 2018-03-01 16:34:41.000000000 +0000
-+++ SDL2-2.0.8/include/SDL_cpuinfo.h 2018-08-07 02:25:05.720000000 +0000
-@@ -53,6 +53,9 @@
- #ifdef __ALTIVEC__
- #if HAVE_ALTIVEC_H && !defined(__APPLE_ALTIVEC__) && !defined(SDL_DISABLE_ALTIVEC_H)
- #include <altivec.h>
-+#ifdef __cplusplus
-+#undef vector
-+#endif
- #undef pixel
- #undef bool
- #endif
diff --git a/user/sdl2/sdl2-soname.patch b/user/sdl2/sdl2-soname.patch
new file mode 100644
index 000000000..7ed5b14bf
--- /dev/null
+++ b/user/sdl2/sdl2-soname.patch
@@ -0,0 +1,13 @@
+The library name is SDL2-2.0, not SDL2. This fixes builds against SDL.
+
+--- SDL2-2.0.10/CMakeLists.txt.old 2019-07-25 04:32:36.000000000 +0000
++++ SDL2-2.0.10/CMakeLists.txt 2020-01-03 17:23:42.451699149 +0000
+@@ -233,7 +233,7 @@
+
+ # Those are used for pkg-config and friends, so that the SDL2.pc, sdl2-config,
+ # etc. are created correctly.
+-set(SDL_LIBS "-lSDL2")
++set(SDL_LIBS "-lSDL2-2.0")
+ set(SDL_CFLAGS "")
+
+ # When building shared lib for Windows with MinGW,
diff --git a/user/sdl2_image/APKBUILD b/user/sdl2_image/APKBUILD
index d320f1076..fb0af1ea6 100644
--- a/user/sdl2_image/APKBUILD
+++ b/user/sdl2_image/APKBUILD
@@ -1,21 +1,30 @@
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
# Maintainer:
pkgname=sdl2_image
-pkgver=2.0.4
-pkgrel=0
_pkgname=SDL2_image
+pkgver=2.0.5
+pkgrel=0
pkgdesc="Library to load images of various formats as SDL surfaces"
url="https://www.libsdl.org/projects/SDL_image/"
arch="all"
license="zlib"
+depends=""
makedepends="sdl2-dev libjpeg-turbo-dev libpng-dev libwebp-dev tiff-dev
zlib-dev"
subpackages="$pkgname-dev"
source="https://www.libsdl.org/projects/SDL_image/release/$_pkgname-$pkgver.tar.gz"
builddir="$srcdir/$_pkgname-$pkgver"
+# secfixes:
+# 2.0.5:
+# - CVE-2019-12216
+# - CVE-2019-12217
+# - CVE-2019-12218
+# - CVE-2019-12219
+# - CVE-2019-12220
+# - CVE-2019-12221
+
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -30,13 +39,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="7320a5c9111908d402fbb0c12a49eb359a6db645c0c86839793ebb1a5b75eaca7c85eb96851f3a0b4a68a2f06363c8189555afd4f1048a4a41447370eddd7e6a SDL2_image-2.0.4.tar.gz"
+sha512sums="77e743d3f32707e015b290c1379ae3c7d7a3fe265995713267f0d0ec6517de4808f0de9890b5ab28445941af5bc9fbff346620629e0d7d7e9f365262cab05ee7 SDL2_image-2.0.5.tar.gz"
diff --git a/user/sdl_image/APKBUILD b/user/sdl_image/APKBUILD
index 16f3d6551..e1e413027 100644
--- a/user/sdl_image/APKBUILD
+++ b/user/sdl_image/APKBUILD
@@ -1,4 +1,4 @@
-# Contributor: Carlo Landmeter
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=sdl_image
pkgver=1.2.12
@@ -15,13 +15,11 @@ source="https://www.libsdl.org/projects/SDL_image/release/SDL_image-${pkgver}.ta
builddir="$srcdir"/SDL_image-$pkgver
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,7 +31,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/sdl_mixer/APKBUILD b/user/sdl_mixer/APKBUILD
index 2cdb8238e..7472b9167 100644
--- a/user/sdl_mixer/APKBUILD
+++ b/user/sdl_mixer/APKBUILD
@@ -1,4 +1,4 @@
-# Contributor: Carlo Landmeter
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=sdl_mixer
pkgver=1.2.12
@@ -9,13 +9,13 @@ arch="all"
options="!check" # No test suite.
license="Zlib"
depends=""
-makedepends="flac-dev fluidsynth-dev libvorbis-dev linux-headers sdl-dev"
+makedepends="bash flac-dev fluidsynth-dev libvorbis-dev linux-headers sdl-dev"
subpackages="$pkgname-dev"
source="https://www.libsdl.org/projects/SDL_mixer/release/SDL_mixer-${pkgver}.tar.gz"
builddir="$srcdir"/SDL_mixer-$pkgver
prepare() {
- cd "$builddir"
+ default_prepare
update_config_sub
sed -e "/CONFIG_FILE_ETC/s/\/etc\/timidity.cfg/\/etc\/timidity++\/timidity.cfg/" \
-e "/DEFAULT_PATH/s/\/etc\/timidity/\/etc\/timidity++/" \
@@ -24,20 +24,18 @@ prepare() {
}
build() {
- cd "$builddir"
- ./configure \
+ bash ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
- --enable-music-mod
+ --enable-music-mod SHELL=/bin/bash
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/sdl_net/APKBUILD b/user/sdl_net/APKBUILD
index 6172ddc1e..16a01d234 100644
--- a/user/sdl_net/APKBUILD
+++ b/user/sdl_net/APKBUILD
@@ -15,13 +15,11 @@ source="https://www.libsdl.org/projects/$_pkgname/release/$_pkgname-$pkgver.tar.
builddir="$srcdir"/$_pkgname-$pkgver
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -34,12 +32,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/sdl_ttf/APKBUILD b/user/sdl_ttf/APKBUILD
index 96321243a..3e34063d8 100644
--- a/user/sdl_ttf/APKBUILD
+++ b/user/sdl_ttf/APKBUILD
@@ -15,13 +15,11 @@ source="https://www.libsdl.org/projects/$_pkgname/release/$_pkgname-$pkgver.tar.
builddir="$srcdir"/$_pkgname-$pkgver
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,12 +31,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/seatd/APKBUILD b/user/seatd/APKBUILD
new file mode 100644
index 000000000..f905c6029
--- /dev/null
+++ b/user/seatd/APKBUILD
@@ -0,0 +1,45 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=seatd
+pkgver=0.8.0
+pkgrel=1
+pkgdesc="Seat management daemon and library"
+url="https://git.sr.ht/~kennylevinsen/seatd"
+arch="all"
+license="MIT"
+depends=""
+makedepends="cmake elogind-dev meson scdoc"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-openrc"
+source="$pkgname-$pkgver.tar.gz::https://git.sr.ht/~kennylevinsen/seatd/archive/$pkgver.tar.gz
+ $pkgname.confd
+ $pkgname.initd
+ "
+
+build() {
+ # https://todo.sr.ht/~kennylevinsen/seatd/10
+ # https://www.openwall.com/lists/musl/2020/01/20/3
+ export CFLAGS="$CFLAGS -Wno-error=overflow"
+
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ . build
+ meson compile -C build
+}
+
+check() {
+ meson test -C build
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C build
+ install -Dm755 "$srcdir/$pkgname.initd" "$pkgdir"/etc/init.d/seatd
+ install -Dm644 "$srcdir/$pkgname.confd" "$pkgdir"/etc/conf.d/seatd
+}
+
+sha512sums="93b1e5c170564ce9654e4df9985af95cb505274b36e950998bb1f16803d2d46712140eded2bdd8d5e85aec62070afd9c224184276d79a0ff0813408dfc472db7 seatd-0.8.0.tar.gz
+1ee755b462455fb20ee2f56b8d1a0f3a26eb9aed34eb6126e322243f9288b23577aff40e5a2c02449f349282af79eafd232b9e77cd196daa92ee8a9fcae2ec16 seatd.confd
+54e1f20a37945f95b184a26dc9ef5cfe5ddcce4445672b04394465ba16d319f87c24c1b347400a0189c4f3de9bae1ee0a95c1dee94a0d677c9c980fc238fa2df seatd.initd"
diff --git a/user/seatd/seatd.confd b/user/seatd/seatd.confd
new file mode 100644
index 000000000..8eac7d11e
--- /dev/null
+++ b/user/seatd/seatd.confd
@@ -0,0 +1,12 @@
+# Configuration for /etc/init.d/seatd
+
+# Sets the seatd log level; one of: silent, error, info, or debug.
+# Defaults to "error".
+#loglevel=
+
+# Log messages are redirected to syslog, unless `loglevel=silent`.
+# Set to empty string to disable.
+#error_logger="logger -t seatd -p daemon.$loglevel >/dev/null 2>&1"
+
+# Uncomment to run with process supervisor.
+# supervisor="supervise-daemon"
diff --git a/user/seatd/seatd.initd b/user/seatd/seatd.initd
new file mode 100644
index 000000000..b686052bf
--- /dev/null
+++ b/user/seatd/seatd.initd
@@ -0,0 +1,14 @@
+#!/sbin/openrc-run
+
+name="seatd"
+description="Seat management daemon"
+
+command="/usr/bin/seatd"
+command_args="-g video -l ${loglevel:-error} ${command_args:-}"
+command_background="yes"
+
+pidfile="/run/$RC_SVCNAME.pid"
+
+if [ "$loglevel" != 'silent' ]; then
+ : ${error_logger="logger -t $name -p daemon.${loglevel:-error} >/dev/null 2>&1"}
+fi
diff --git a/user/serf/APKBUILD b/user/serf/APKBUILD
index db2ae5425..4ff3c66dd 100644
--- a/user/serf/APKBUILD
+++ b/user/serf/APKBUILD
@@ -15,23 +15,19 @@ source="https://www.apache.org/dist/serf/serf-$pkgver.tar.bz2
"
build() {
- cd "$builddir"
scons PREFIX=/usr -j "$JOBS"
}
check() {
- cd "$builddir"
scons test
}
package() {
- cd "$builddir"
- local _header
install -D -m644 libserf-1.a "$pkgdir"/usr/lib/libserf-1.a
install -D -m755 libserf-1.so.1.3.0 "$pkgdir"/usr/lib/libserf-1.so.1.3.0
ln -s libserf-1.so.1.3.0 "$pkgdir"/usr/lib/libserf-1.so.1
ln -s libserf-1.so.1.3.0 "$pkgdir"/usr/lib/libserf-1.so
- for _header in serf{_bucket_{types,util},}.h; do
+ for _header in serf.h serf_bucket_types.h serf_bucket_util.h; do
install -D -m644 $_header "$pkgdir"/usr/include/serf-1/$_header
done
install -D -m644 serf-1.pc "$pkgdir"/usr/lib/pkgconfig/serf-1.pc
diff --git a/user/setxkbmap/APKBUILD b/user/setxkbmap/APKBUILD
index 637166f29..1654e9ba5 100644
--- a/user/setxkbmap/APKBUILD
+++ b/user/setxkbmap/APKBUILD
@@ -1,18 +1,17 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=setxkbmap
-pkgver=1.3.1
-pkgrel=2
+pkgver=1.3.4
+pkgrel=0
pkgdesc="Set keyboard layout in X11"
url="https://www.X.Org/"
arch="all"
license="MIT"
depends=""
-makedepends="libxkbfile-dev util-macros"
+makedepends="libx11-dev libxkbfile-dev libxrandr-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -24,13 +23,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="5ddc2fc40ddc5a35815606998d3f111e3c2b8d915bf609462c703f9f691a0b3a6477ee98837c0a28f11dd3f0a30f17a3bcdfa38d4ca45140e521c74d043ecdee setxkbmap-1.3.1.tar.bz2"
+sha512sums="f4d026e7707656173f54d79b95ff3370ae06eaf252b89b79bc7175edeaf3ef79073d4d7d8a35fdee95608bf85d7d23514d74f00e55b613810ef6c3ccc0cf498b setxkbmap-1.3.4.tar.xz"
diff --git a/user/sg3_utils/APKBUILD b/user/sg3_utils/APKBUILD
index 7dc10d989..4d5f64c4f 100644
--- a/user/sg3_utils/APKBUILD
+++ b/user/sg3_utils/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=sg3_utils
-pkgver=1.44
+pkgver=1.45
pkgrel=0
pkgdesc="Utilities to manipulate SCSI devices"
url="http://sg.danny.cz/sg/sg3_utils.html"
@@ -13,7 +13,6 @@ subpackages="$pkgname-dev $pkgname-doc"
source="http://sg.danny.cz/sg/p/sg3_utils-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="4f4d5536ebed62f2c81c55741043d9ac3f4610a4dd6ef2e3125f041afd57aae03a32c2affe84a960c9f61fb6f84784bc901c756a8c36c1bc97082fa61e73ae8d sg3_utils-1.44.tar.xz"
+sha512sums="fa25dedc447154d33937248a856af9a7ef380dda282a681d465a57d7dfc24b6c0409fa06aabf8cc28ba191e91db80fed0757b45212eddf713855574b48a97868 sg3_utils-1.45.tar.xz"
diff --git a/user/shared-mime-info/APKBUILD b/user/shared-mime-info/APKBUILD
index 3e132dee4..902dfa7f4 100644
--- a/user/shared-mime-info/APKBUILD
+++ b/user/shared-mime-info/APKBUILD
@@ -1,34 +1,30 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=shared-mime-info
-pkgver=1.12
+pkgver=2.2
pkgrel=0
pkgdesc="MIME database for desktop software"
url="https://freedesktop.org/wiki/Software/shared-mime-info"
arch="all"
+options="!check" # Requires unpackaged dependency xdgmime.
license="GPL-2.0+"
depends=""
-makedepends="glib-dev intltool libxml2-dev libxml2-utils"
+makedepends="glib-dev itstool libxml2-dev libxml2-utils meson ninja xmlto"
subpackages="$pkgname-doc $pkgname-lang"
install="$pkgname.post-deinstall"
triggers="$pkgname.trigger=/usr/share/mime"
-source="https://gitlab.freedesktop.org/xdg/shared-mime-info/uploads/80c7f1afbcad2769f38aeb9ba6317a51/$pkgname-$pkgver.tar.xz"
+source="https://gitlab.freedesktop.org/xdg/${pkgname}/-/archive/${pkgver}/${pkgname}-${pkgver}.tar.bz2"
build() {
- ac_cv_func_fdatasync=no ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --enable-default-make-check \
- --disable-update-mimedb
- make -j1
+ meson -Dprefix=/usr build
+ ninja -C build
}
check() {
- make check
+ ninja -C build check
}
package() {
- make -j1 DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" ninja -C build install
}
-sha512sums="c9db138586fe4c789b5a89d3cdcf865d5b3258241accd254deecd7665e8b51fc538adeaeeda4fe332474f7d7ffa84f101cba26539a58e134201673d6d1495a2f shared-mime-info-1.12.tar.xz"
+sha512sums="e32e78435b6bbcdd5abcd1b7708a715d14310f920742e762ce1d4a4f27c1215dbd6493f816d3bf8cf32cf8635a4cee031cf7ea7bad56c4034302273f25da1065 shared-mime-info-2.2.tar.bz2"
diff --git a/user/showfont/APKBUILD b/user/showfont/APKBUILD
index 63af1593b..1baf91a39 100644
--- a/user/showfont/APKBUILD
+++ b/user/showfont/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=showfont
-pkgver=1.0.5
+pkgver=1.0.6
pkgrel=0
pkgdesc="Utility to display font information from an X11 Font Server"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="libfs-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/showfont-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d90d6d99ca573f2632435ccfd46de606994e3792deb58bab6261ff950481ec71eef032b828da0ee5333d6946c5f54594dfb2dadf930825971d3f4baa5c0ff6fd showfont-1.0.5.tar.bz2"
+sha512sums="21a318519492f4ba46a8bcb3590097fc5f96fe01fdb557257ae56bae813671952a2aad6c0df8cd69659e06708571c398e6d97969224cf692e22c8a35c8e6c363 showfont-1.0.6.tar.xz"
diff --git a/user/shunit2/APKBUILD b/user/shunit2/APKBUILD
index baa658cf8..499f9a53e 100644
--- a/user/shunit2/APKBUILD
+++ b/user/shunit2/APKBUILD
@@ -8,23 +8,18 @@ url="https://github.com/kward/shunit2"
arch="noarch"
license="Apache-2.0"
depends="/bin/sh"
-makedepends=""
checkdepends="cmd:which bash dash zsh"
+makedepends=""
subpackages="$pkgname-doc"
source="$pkgname-$pkgver.tar.gz::https://github.com/kward/shunit2/archive/v$pkgver.tar.gz
- dash-negative-lineno.patch"
-
-build() {
- cd "$builddir"
-}
+ dash-negative-lineno.patch
+ "
check() {
- cd "$builddir"
./test_runner
}
package() {
- cd "$builddir"
install -Dm755 "$pkgname" "$pkgdir/usr/bin/$pkgname"
install -Dm644 "doc/$pkgname.txt" "$pkgdir/usr/share/doc/$pkgname/$pkgname.rst"
}
diff --git a/user/skanlite/APKBUILD b/user/skanlite/APKBUILD
index 77c06dc04..3aef76bc0 100644
--- a/user/skanlite/APKBUILD
+++ b/user/skanlite/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=skanlite
-pkgver=2.1.0.1
+pkgver=2.2.0
pkgrel=0
pkgdesc="Simple image scanning application"
url="https://www.kde.org/applications/graphics/skanlite/"
@@ -12,12 +12,11 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev libksane-dev kio-dev
kcoreaddons-dev ki18n-dev kxmlgui-dev kdoctools-dev libpng-dev zlib-dev
ktextwidgets-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/skanlite/2.1/skanlite-$pkgver.tar.xz
- fix-version.patch
+source="https://download.kde.org/stable/skanlite/2.2/skanlite-$pkgver.tar.xz
+ build.patch
"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,19 +27,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="8eb1a32994259010d4a134c1b25b74b8cc03ba4fa6ce70ee2026a3070c675c2b11f38770453d197008fbe12df976cc653362eb44d6ef89a7f0173c3a2cef3658 skanlite-2.1.0.1.tar.xz
-91ce7a1f9a2796be511f20978fdea9e19c9eb6415ae5d407fbc855675d2e6809ddc85546b4e018ca0d72262d86104292c81e490613ae9045d10257e646da8732 fix-version.patch"
+sha512sums="cbf4c85894c742f025147950f1586252b92e0b3ad9f51b917649c449d46387a4673141e7645cd7f0b005b4c50dd671f2217d35e64ac84e97afa7a6562a961b20 skanlite-2.2.0.tar.xz
+38c2bd0f30af6a553840394fc341fff05d83af16db8b2c6385417d0b0759dd4fdacbe20d191b4bc3f65605e3c2e4101589c647986baabf2455ec33689289e5f2 build.patch"
diff --git a/user/skanlite/build.patch b/user/skanlite/build.patch
new file mode 100644
index 000000000..21d0e73bf
--- /dev/null
+++ b/user/skanlite/build.patch
@@ -0,0 +1,27 @@
+From b110846fadeb4f8fab48e0f488a335de7e16a7be Mon Sep 17 00:00:00 2001
+From: Wolfgang Bauer <wbauer@tmo.at>
+Date: Wed, 15 Jul 2020 09:11:43 +0000
+Subject: [PATCH] Fix compilation with Qt before 5.14
+
+This line has been forgotten to be changed in commit 823abcd2, resulting
+in a compiler error when e.g. building with Qt 5.12 LTS.
+---
+ src/SaveLocation.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/SaveLocation.cpp b/src/SaveLocation.cpp
+index 9709d49..d210be8 100644
+--- a/src/SaveLocation.cpp
++++ b/src/SaveLocation.cpp
+@@ -42,7 +42,7 @@ SaveLocation::SaveLocation(QWidget *parent)
+ connect(m_ui->u_urlRequester, &KUrlRequester::textChanged, this, &SaveLocation::updateGui);
+ connect(m_ui->u_imgPrefix, &QLineEdit::textChanged, this, &SaveLocation::updateGui);
+ #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0)
+- connect(u_imgFormat, static_cast<void (QComboBox::*)(const QString &)>(&QComboBox::activated), this, &SaveLocation::updateGui);
++ connect(m_ui->u_imgFormat, static_cast<void (QComboBox::*)(const QString &)>(&QComboBox::activated), this, &SaveLocation::updateGui);
+ #else
+ connect(m_ui->u_imgFormat, static_cast<void (QComboBox::*)(const QString &)>(&QComboBox::textActivated), this, &SaveLocation::updateGui);
+ #endif
+--
+GitLab
+
diff --git a/user/skanlite/fix-version.patch b/user/skanlite/fix-version.patch
deleted file mode 100644
index e5afa0be2..000000000
--- a/user/skanlite/fix-version.patch
+++ /dev/null
@@ -1,23 +0,0 @@
---- skanlite-2.0.1/CMakeLists.txt.old 2016-10-26 12:00:57.000000000 -0500
-+++ skanlite-2.0.1/CMakeLists.txt 2018-03-13 17:08:17.378028117 -0500
-@@ -43,7 +43,8 @@
-
- set(SKANLITE_VERSION_STRING "2.0.1")
-
--configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/src/version.h)
-+configure_file("${CMAKE_CURRENT_BINARY_DIR}/skanlite_version.h" "${CMAKE_CURRENT_BINARY_DIR}/src/version.h" COPYONLY)
-+#configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/version.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/src/version.h)
-
- find_package(KF5 ${KF5_VERSION} REQUIRED
- COMPONENTS # alias to find_package(KFGuiAddons ${KF5_VERSION} REQUIRED)
---- skanlite-2.0.1/src/main.cpp.old 2016-10-26 17:00:34.000000000 +0000
-+++ skanlite-2.0.1/src/main.cpp 2018-03-13 22:59:18.898057063 +0000
-@@ -44,7 +44,7 @@
-
- KAboutData aboutData(QLatin1String("Skanlite"), // componentName, k4: appName
- i18n("Skanlite"), // displayName, k4: programName
-- QLatin1String(skanlite_version), // version
-+ QLatin1String(SKANLITE_VERSION_STRING), // version
- i18n("Scanning application by KDE based on libksane."), // shortDescription
- KAboutLicense::GPL, // licenseType
- i18n("(C) 2008-2016 Kåre Särs"), // copyrightStatement
diff --git a/user/slang/APKBUILD b/user/slang/APKBUILD
new file mode 100644
index 000000000..a3b93346c
--- /dev/null
+++ b/user/slang/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=slang
+pkgver=2.3.3
+pkgrel=0
+pkgdesc="Library for display and input management"
+url="http://www.jedsoft.org/slang/"
+arch="all"
+license="GPL-2.0+ AND NTP"
+depends=""
+makedepends="pcre-dev zlib-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://www.jedsoft.org/releases/slang/slang-$pkgver.tar.bz2"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --with-zlib=/ \
+ --with-zinc=/usr/include \
+ --with-pcre=/usr
+ make -j1
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" -j1 install
+}
+
+sha512sums="f882f09e3fcd53427de0f233c9fc3ab15497f2323007be9a084696c8cf810ffe2726cd003149e757df26198b390b9f8c1ff411dc6473513457bd0f94722f8490 slang-2.3.3.tar.bz2"
diff --git a/user/smartmontools/APKBUILD b/user/smartmontools/APKBUILD
index 25b6de93e..a306f9bfe 100644
--- a/user/smartmontools/APKBUILD
+++ b/user/smartmontools/APKBUILD
@@ -1,23 +1,21 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=smartmontools
-pkgver=6.6
-pkgrel=1
+pkgver=7.2
+pkgrel=0
pkgdesc="Control and monitor S.M.A.R.T. enabled hard drives"
url="https://www.smartmontools.org/"
arch="all"
license="GPL-2.0+"
+depends=""
makedepends="linux-headers"
subpackages="$pkgname-doc $pkgname-openrc"
-source="http://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz
+source="https://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz
smartd.initd
smartd.confd
- musl-canonicalize_file_name.patch
"
build() {
- cd "$builddir"
-
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,21 +25,16 @@ build() {
}
check() {
- cd "$builddir"
-
make check
}
package() {
- cd "$builddir"
-
make DESTDIR="$pkgdir"/ install
install -Dm755 "$srcdir"/smartd.initd "$pkgdir"/etc/init.d/smartd
install -Dm644 "$srcdir"/smartd.confd "$pkgdir"/etc/conf.d/smartd
}
-sha512sums="64bb533dac29f62ddd662a16a12c97df1af9cbac9ac526ce7af0b3bff9da49cf265a2030d91a7160452b56a67e80d7f34c9b4e45bbb320114f55695e2cb5cfaf smartmontools-6.6.tar.gz
+sha512sums="d7e724295b5d53797b5e4136eea5f5cc278db81e4016ba65142438b8c68c54f85a32c582c147a1590b9bc8f74a58952bcb57b9923dd69d34582530a0985799ea smartmontools-7.2.tar.gz
61cae548fc9f3a9fbea20d684502d3816e7b0b60fcf533ae4e1ab850725c208eb6ba5012ae154a46f0b7bb7285a9e63cbdecafed8db7fd63fda0ba59081260cc smartd.initd
-ff45462944f01c0e7cac99443078b253dcbaed4f99ffab85052b12361d9eec4beec81cab334fbede9148b3dd503d5205add32ef4327a788f02a8b1e37f460437 smartd.confd
-eff9a1ca8e10be5b05a4be609973065d6f02f12c9d511d3a7c87fa172934d3739594f00e5a61ed2d6dc65de5fd1ff23ec049b21078d5b1620c5dbafa56d78bbe musl-canonicalize_file_name.patch"
+ff45462944f01c0e7cac99443078b253dcbaed4f99ffab85052b12361d9eec4beec81cab334fbede9148b3dd503d5205add32ef4327a788f02a8b1e37f460437 smartd.confd"
diff --git a/user/smartmontools/musl-canonicalize_file_name.patch b/user/smartmontools/musl-canonicalize_file_name.patch
deleted file mode 100644
index bdc7cc6f1..000000000
--- a/user/smartmontools/musl-canonicalize_file_name.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-# Ticket: https://smartmontools.org/ticket/921#ticket
---- a/os_linux.cpp
-+++ b/os_linux.cpp
-@@ -3176,7 +3176,7 @@
- {
- char path[128];
- snprintf(path, sizeof(path), "/sys/block/%s/device", name);
-- char * syshostpath = canonicalize_file_name(path);
-+ char * syshostpath = realpath(path, NULL);
- if (!syshostpath)
- return false;
-
diff --git a/user/smproxy/APKBUILD b/user/smproxy/APKBUILD
index 03e3eda4e..ed217daf3 100644
--- a/user/smproxy/APKBUILD
+++ b/user/smproxy/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=smproxy
-pkgver=1.0.6
+pkgver=1.0.7
pkgrel=0
pkgdesc="X11R6 Session Manager proxy"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="libice-dev libsm-dev libxmu-dev libxt-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/smproxy-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="4945c92c0f07c5dba5698889f415e78ce406939f4a36eb977309488c27385ce4ce04235c4e850a90a451fea8d7885ded7c6b18db71335c7731b38aaeefa9fcb7 smproxy-1.0.6.tar.bz2"
+sha512sums="cd6a6933b74f76ae65fb16504e57871724bc1102eae1d02e801e99c3fe73fe44e27f87cef3fbf9f75f369d18197b53bb677d637d94cc8185b55acae0cbd44f21 smproxy-1.0.7.tar.xz"
diff --git a/user/smtpd-starttls-proxy/APKBUILD b/user/smtpd-starttls-proxy/APKBUILD
new file mode 100644
index 000000000..7896f97e2
--- /dev/null
+++ b/user/smtpd-starttls-proxy/APKBUILD
@@ -0,0 +1,33 @@
+# Maintainer: Laurent Bercot <ska-adelie@skarnet.org>
+pkgname=smtpd-starttls-proxy
+pkgver=0.0.2.0
+pkgrel=0
+pkgdesc="An SMTP proxy implementing STARTTLS"
+url="https://skarnet.org/software/smtpd-starttls-proxy/"
+arch="all"
+options="!check" # No test suite.
+license="ISC"
+_skalibs_version=2.14.4
+_s6_version=2.13.2
+_s6net_version=2.7.1
+depends="s6>=$_s6_version s6-networking>=$_s6net_version"
+makedepends="skalibs-dev>=$_skalibs_version s6-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://skarnet.org/software/smtpd-starttls-proxy/smtpd-starttls-proxy-$pkgver.tar.gz"
+
+build() {
+ ./configure \
+ --disable-allstatic \
+ --prefix=/usr \
+ --with-pkgconfig \
+ --enable-pkgconfig
+ make
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+ mkdir -p -m 0755 "$pkgdir/usr/share/doc"
+ cp -a "$builddir/doc" "$pkgdir/usr/share/doc/$pkgname"
+}
+
+sha512sums="e13bd72c0afdbe6e6673867b1d7354aa7067f755eebd3db32ecbaef2759e3db626954cacf4cb70d8aaea8899bf7c22a997f797f9991978890399ccfcb55de483 smtpd-starttls-proxy-0.0.2.0.tar.gz"
diff --git a/user/snappy/APKBUILD b/user/snappy/APKBUILD
index 7f9b35e0d..c03bf7054 100644
--- a/user/snappy/APKBUILD
+++ b/user/snappy/APKBUILD
@@ -1,19 +1,19 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer:
pkgname=snappy
-pkgver=1.1.7
+pkgver=1.1.8
pkgrel=0
pkgdesc="Fast compression and decompression library"
url="https://google.github.io/snappy/"
arch="all"
[ "$CARCH" = "armhf" ] && options="!check" # does not pass testsuite on armhf
license="BSD-3-Clause"
+depends=""
+makedepends="cmake"
subpackages="$pkgname-dbg $pkgname-dev"
-source="snappy-$pkgver.tar.gz::https://github.com/google/snappy/archive/$pkgver.tar.gz
- "
+source="snappy-$pkgver.tar.gz::https://github.com/google/snappy/archive/$pkgver.tar.gz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -24,18 +24,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="32046f532606ba545a4e4825c0c66a19be449f2ca2ff760a6fa170a3603731479a7deadb683546e5f8b5033414c50f4a9a29f6d23b7a41f047e566e69eca7caf snappy-1.1.7.tar.gz"
+sha512sums="efe18ff1b3edda1b4b6cefcbc6da8119c05d63afdbf7a784f3490353c74dced76baed7b5f1aa34b99899729192b9d657c33c76de4b507a51553fa8001ae75c1c snappy-1.1.8.tar.gz"
diff --git a/user/sntpd/APKBUILD b/user/sntpd/APKBUILD
new file mode 100644
index 000000000..5171813e7
--- /dev/null
+++ b/user/sntpd/APKBUILD
@@ -0,0 +1,42 @@
+# Maintainer: Samuel Holland <samuel@sholland.org>
+pkgname=sntpd
+pkgver=3.0
+pkgrel=0
+pkgdesc="A small SNTP client for UNIX systems, implementing RFC 1305 and RFC 4330"
+url="https://github.com/troglobit/sntpd"
+arch="all"
+license="GPL-2.0-only"
+depends=""
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://github.com/troglobit/sntpd/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz
+ select.patch
+ "
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --localstatedir=/var \
+ --disable-debug \
+ --enable-replay \
+ --with-adjtimex \
+ --with-ntpclient \
+ --without-systemd
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="664e95e590b329dc847275c99829711c159bf91fadb2a90989c2706fbd8b074480146a7a05c5532a1bbfcaebd4b489262a44e418fa8ac57362c4f7db659fd1ea sntpd-3.0.tar.gz
+966ae71a41f31b37b0be8dc361471f72d085ca06161deeedc37cc82d6b80852ca79b37bfc8f9948988bedaeba6a77a0b4edf19848a12e8107ec13ab86524c5dd select.patch"
diff --git a/user/sntpd/select.patch b/user/sntpd/select.patch
new file mode 100644
index 000000000..f0e25055a
--- /dev/null
+++ b/user/sntpd/select.patch
@@ -0,0 +1,12 @@
+select(3) does not modify its timeout in musl, as permitted by POSIX
+--- sntpd-3.0/src/sntpd.c
++++ sntpd-3.0/src/sntpd.c
+@@ -663,7 +663,7 @@ static void loop(struct ntp_control *ntpc)
+ continue;
+ }
+
+- if (to.tv_sec == 0) {
++ if (1) {
+ if (probes_sent >= ntpc->probe_count && ntpc->probe_count != 0)
+ break;
+
diff --git a/user/socat/APKBUILD b/user/socat/APKBUILD
index e5257103e..0d3073eaf 100644
--- a/user/socat/APKBUILD
+++ b/user/socat/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=socat
-pkgver=1.7.3.3
+pkgver=1.7.4.3
pkgrel=0
pkgdesc="Multipurpose network relay"
url="http://www.dest-unreach.org/socat/"
@@ -12,10 +12,13 @@ depends=""
makedepends="openssl-dev"
subpackages="$pkgname-doc"
source="http://www.dest-unreach.org/socat/download/socat-$pkgver.tar.gz
- netdb-internal.patch"
+ netdb-internal.patch
+ "
build() {
- cd "$builddir"
+ # Just like Solaris, musl doesn't have getprotobynumber_r.
+ # Setting the configure variable to 2 ensures it isn't used.
+ sc_cv_getprotobynumber_r=2 \
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,9 +30,8 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b3ea4cb6081f7778a0281a3ec36ea7e5daf07dc19f2e0de08f767417112776e96e1bcac7962ebb6dd8b960ad91fc4a452f0da8327736d50e215e4ab43947ff78 socat-1.7.3.3.tar.gz
+sha512sums="81cb34c245052b6a0ae38a711591358460b6070957af4a9eeb11a3cadb4aff184eeaedabbc7ecdc7fdf21a6126c06f90f19b24a87ce74b30bfd60a3879181046 socat-1.7.4.3.tar.gz
22a6e0c2317a9317997c98114daac258ebbcc3d8e58e49a6ebf24781b98967afed47c63807282582fa0909076fe349281f05e4462faacb90e7aabc853903d6e6 netdb-internal.patch"
diff --git a/user/solid/APKBUILD b/user/solid/APKBUILD
index e5b2b0f5a..fc737cc74 100644
--- a/user/solid/APKBUILD
+++ b/user/solid/APKBUILD
@@ -1,12 +1,12 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=solid
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Platform-independent hardware discovery and access"
url="https://www.kde.org/"
arch="all"
-license="LGPL-2.1-only OR LGPL-3.0-only"
+license="LGPL-2.0+"
depends="udisks2 upower"
depends_dev="qt5-qtbase-dev qt5-qtdeclarative-dev eudev-dev"
makedepends="$depends_dev cmake extra-cmake-modules flex bison qt5-qttools-dev
@@ -15,7 +15,6 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/solid-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="5728b617d5d6ec6acc71cd4707ab25e3c753c9616c2b5b1d4b1c66899faa526b395c206c3d3b3f36cb4e2f005f1267c12c9f73cf4d9fffd486eae64fbf78d855 solid-5.54.0.tar.xz"
+sha512sums="c72da5c52512c97a4ff164e34d06d572a7747f9f434ad574bc3bd106574bef617db48a1b00b2cca6b944f9ab5bf74563e36d25fa7618fd56782506d61ebfea37 solid-5.94.0.tar.xz"
diff --git a/user/sonnet/APKBUILD b/user/sonnet/APKBUILD
index 80398527a..5f6d6526d 100644
--- a/user/sonnet/APKBUILD
+++ b/user/sonnet/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=sonnet
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for implementing portable spell check functionality"
url="https://www.kde.org/"
@@ -10,12 +10,12 @@ license="LGPL-2.1+"
depends=""
depends_dev="qt5-qtbase-dev"
makedepends="$depends_dev cmake extra-cmake-modules aspell-dev hunspell-dev
- qt5-qttools-dev doxygen graphviz"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-aspell"
+ qt5-qtdeclarative-dev qt5-qttools-dev doxygen graphviz"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-hunspell"
+replaces="sonnet-aspell"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/sonnet-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,27 +27,25 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
# Highlighter test requires X11
CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E sonnet-test_highlighter
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-aspell() {
- pkgdesc="$pkdesc (aspell backend)"
- install_if="$pkgname=$pkgver-$pkgrel aspell"
+hunspell() {
+ pkgdesc="$pkdesc (hunspell backend)"
+ install_if="$pkgname=$pkgver-r$pkgrel hunspell"
mkdir -p "$subpkgdir"/usr/lib/qt5/plugins/kf5/sonnet
- mv "$pkgdir"/usr/lib/qt5/plugins/kf5/sonnet/sonnet_aspell.so \
- "$subpkgdir"/usr/lib/qt5/plugins/kf5/sonnet/sonnet_aspell.so
+ mv "$pkgdir"/usr/lib/qt5/plugins/kf5/sonnet/sonnet_hunspell.so \
+ "$subpkgdir"/usr/lib/qt5/plugins/kf5/sonnet/sonnet_hunspell.so
}
-sha512sums="fe7551fb65fe896a872c3f0af4ce1c60f4b974f993465b5ae7b3eea219a0964f7ae5107aa9346884ffd37c95b4bf7ea0bed05592245978c07fd633af88eeca88 sonnet-5.54.0.tar.xz"
+sha512sums="4904361fa8b941181c1e18fc39fb614cd9b1177a4d49c6b16ae8c5941e6328f3b803d558d44500ce002a9da92597eecb1a295e956dada994934c4cfe89c62055 sonnet-5.94.0.tar.xz"
diff --git a/user/sound-theme-freedesktop/APKBUILD b/user/sound-theme-freedesktop/APKBUILD
index ad1f9c0e4..eaf320db8 100644
--- a/user/sound-theme-freedesktop/APKBUILD
+++ b/user/sound-theme-freedesktop/APKBUILD
@@ -13,7 +13,6 @@ subpackages=""
source="https://people.freedesktop.org/~mccann/dist/sound-theme-freedesktop-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,12 +24,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/sox/APKBUILD b/user/sox/APKBUILD
deleted file mode 100644
index efcdeba1e..000000000
--- a/user/sox/APKBUILD
+++ /dev/null
@@ -1,50 +0,0 @@
-# Contributor: Łukasz Jendrysik <scadu@yandex.com>
-# Maintainer:
-pkgname=sox
-pkgver=14.4.2
-pkgrel=1
-pkgdesc="Convert between various audio formats"
-url="http://sox.sourceforge.net/"
-arch="all"
-options="!check" # No test suite.
-license="GPL-2.0+ AND LGPL-2.1+ AND MIT AND BSD-1-Clause"
-makedepends="alsa-lib-dev ffmpeg-dev file-dev flac-dev gsm-dev lame-dev
- libao-dev libid3tag-dev libmad-dev libogg-dev libsamplerate-dev
- libsndfile-dev libvorbis-dev opusfile-dev pulseaudio-dev
- autoconf automake libtool"
-depends=""
-subpackages="$pkgname-dev $pkgname-doc"
-source="https://downloads.sourceforge.net/sourceforge/$pkgname/$pkgname-$pkgver.tar.gz
- disable-pipe-file-detection.patch
- sox-dynamic.patch
- "
-
-prepare() {
- cd "$builddir"
- default_prepare
- autoreconf -vif
-}
-
-build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --with-dyn-default \
- --with-distro="${DISTRO_NAME:-Adélie Linux}"
- make
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
- ln -sf play "$pkgdir"/usr/bin/rec
- ln -sf ../man1/sox.1.gz "$pkgdir"/usr/share/man/man7/soxeffect.7
- rm "$pkgdir"/usr/lib/sox/*.a
-}
-
-sha512sums="b5c6203f4f5577503a034fe5b3d6a033ee97fe4d171c533933e2b036118a43a14f97c9668433229708609ccf9ee16abdeca3fc7501aa0aafe06baacbba537eca sox-14.4.2.tar.gz
-eb90574a7c174a32ac77aa09a2bb4ebbea407463517e55943e16efd8b7c52393c6b7a6b2778d696f708627271f4d2212221a85fc50d2500b32143139a37a957a disable-pipe-file-detection.patch
-3950834db26faa0523006c6fd8e0769d080518f127d345c8ec9bf53e9db8a6bd67cd724f0f86492aaf9ce6ede2dfbde167049768f35c14ef3c2b96e7e00302b6 sox-dynamic.patch"
diff --git a/user/sox/disable-pipe-file-detection.patch b/user/sox/disable-pipe-file-detection.patch
deleted file mode 100644
index 3d2a854f7..000000000
--- a/user/sox/disable-pipe-file-detection.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- sox-14.4.2/src/formats.c.old 2014-10-27 02:55:50.000000000 +0000
-+++ sox-14.4.2/src/formats.c 2018-07-22 04:36:34.380000000 +0000
-@@ -422,7 +422,7 @@
- /* To fix this #error, either simply remove the #error line and live without
- * file-type detection with pipes, or add support for your compiler in the
- * lines above. Test with cat monkey.wav | ./sox --info - */
-- #error FIX NEEDED HERE
-+ /* #error FIX NEEDED HERE */
- #define NO_REWIND_PIPE
- (void)fp;
- #endif
diff --git a/user/sox/sox-dynamic.patch b/user/sox/sox-dynamic.patch
deleted file mode 100644
index 94ac6a282..000000000
--- a/user/sox/sox-dynamic.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -Naur sox-14.4.2-orig/src/Makefile.am sox-14.4.2/src/Makefile.am
---- sox-14.4.2-orig/src/Makefile.am 2015-04-08 17:11:09.555343005 -0400
-+++ sox-14.4.2/src/Makefile.am 2015-04-08 17:11:25.115317153 -0400
-@@ -95,7 +95,7 @@
-
- libsox_la_CFLAGS = @WARN_CFLAGS@
- libsox_la_LDFLAGS = @APP_LDFLAGS@ -version-info @SHLIB_VERSION@ \
-- -export-symbols-regex '^(sox_.*|lsx_(check_read_params|(close|open)_dllibrary|(debug(_more|_most)?|fail|report|warn)_impl|eof|fail_errno|filelength|find_(enum_(text|value)|file_extension)|getopt(_init)?|lpc10_(create_(de|en)coder_state|(de|en)code)|raw(read|write)|read(_b_buf|buf|chars)|realloc|rewind|seeki|sigfigs3p?|strcasecmp|tell|unreadb|write(b|_b_buf|buf|s)))$$'
-+ -export-symbols-regex '^(sox_.*|lsx_(error|flush|check_read_params|(close|open)_dllibrary|(debug(_more|_most)?|fail|report|warn)_impl|eof|fail_errno|filelength|find_(enum_(text|value)|file_extension)|getopt(_init)?|lpc10_(create_(de|en)coder_state|(de|en)code)|raw(read|write)|read(_b_buf|buf|chars)|realloc|rewind|seeki|sigfigs3p?|strcasecmp|tell|unreadb|write(b|_b_buf|buf|s)))$$'
-
- if HAVE_WIN32_LTDL
- libsox_la_SOURCES += win32-ltdl.c win32-ltdl.h
diff --git a/user/spack/APKBUILD b/user/spack/APKBUILD
new file mode 100644
index 000000000..71f7331c3
--- /dev/null
+++ b/user/spack/APKBUILD
@@ -0,0 +1,79 @@
+# Contributor: Zach van Rijn <me@zv.io>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=spack
+pkgver=0.23.0_p1
+pkgrel=0
+pkgdesc="A flexible package manager for supercomputers."
+url="https://spack.io/"
+arch="all"
+license="Apache-2.0 OR MIT"
+options="!dbg !strip !fhs"
+makedepends="python3-dev"
+depends="$makedepends
+ gcc g++ gfortran
+ bzip2 file git gnupg gzip libarchive-tools make patch unzip xz
+ "
+subpackages=""
+# https://git.adelielinux.org/adelie/docs/-/wikis/Developer-Resources/Maintaining-Spack
+source="https://git.adelielinux.org/adelie/$pkgname/-/archive/adelie-v$pkgver/$pkgname-adelie-v$pkgver.tar.bz2
+ clingo-explicit-libatomic.patch
+ openssl-explicit-linux-headers.patch
+
+ default-no-buildcache.patch
+ default-adelie-upstream-git.patch
+
+ config.yaml
+ "
+install="$pkgname.post-install"
+builddir="${srcdir}/${pkgname}-adelie-v${pkgver}"
+
+prepare()
+{
+ default_prepare
+
+ # disable binary bootstrap
+ sed -i etc/spack/defaults/bootstrap.yaml -e '/github-actions/d';
+
+ # delete windows files
+ find bin \( -name '*.ps1' -o -name '*.py' -o -name '*.bat' \) -delete;
+}
+
+check() {
+ ##
+ # On first run, Spack >=0.17.0 will bootstrap "clingo",
+ # Spack's new "concretizer". The output from this process
+ # is not kept, however it demonstrates Spack's functionality.
+ #
+ # The '--deprecated' flag is to prevent an interactive prompt
+ # warning about "deprecated" packages and/or versions. Order
+ # is important; it must come after the 'install' verb.
+ #
+ export SPACK_DISABLE_LOCAL_CONFIG=true
+ export SPACK_USER_CONFIG_PATH=${builddir}/tmp
+ export SPACK_USER_CACHE_PATH=${builddir}/tmp
+ bin/spack --debug install --deprecated zlib
+
+ rm -fr var/spack/cache
+ rm -fr etc/spack/linux # caches compilers.yaml
+}
+
+package() {
+ install -m755 -d "${pkgdir}"/opt/spack;
+ for k in bin etc lib share var; do
+ mv "${k}" "${pkgdir}"/opt/spack;
+ done
+
+ for k in LICENSE-APACHE LICENSE-MIT NOTICE; do
+ install -Dm644 ${k} "${pkgdir}"/usr/share/licenses/${pkgname}/${k};
+ done
+
+ # lower precedence than /opt/spack/etc/spack/config.yaml
+ install -D -m644 "${srcdir}"/config.yaml "$pkgdir"/etc/spack/config.yaml;
+}
+
+sha512sums="c40eb2ce32a7a432474c76ec76cda3a2830b7e9668d1dd76bf491d09d4bea6902e24f1fbff3c39ac67d2c0dd1f89560662a2828f9516ed99df8dc8bbd01afe6d spack-adelie-v0.23.0_p1.tar.bz2
+a84df22016109bb8d86b5215b698251a5b10873042361c8bab79e4235e00f381a2d66cbfd84ce6b7933125971f3248008124ef7f7ad85451bf72b815c5b56aa0 clingo-explicit-libatomic.patch
+8ded405082eec192187fb72896c68200985ee1226b2ef7da19ab43f31138972d5b4000cf997cb6e22664a7c100b52b842df07c44e188f87d4250f698d1885ea6 openssl-explicit-linux-headers.patch
+eec3e7dd818c39daea7b8d63b04a6c71d9eb3af32dd899cddc3642152252f4e2eebfd53c3c95365117f9a4826f6f29553f44373948e5c474388021302c8a5ce9 default-no-buildcache.patch
+eb09ce82d2c5c63c2cc63b2f82db2888f15ce82100311614f5a73773be2f605337811c4580e0d4eb2f87b730e7ce4afa6dcdc3f3f52321f63a29a2ad533ea5d4 default-adelie-upstream-git.patch
+864ae8e73cd80560ed9c4ce03bc6ae8f58b928da348a261617e42b6a680f8cf18f48b120401fe7b4a3f3af260675922044dbd9abbc79b1d2e90f821c00569d5e config.yaml"
diff --git a/user/spack/clingo-explicit-libatomic.patch b/user/spack/clingo-explicit-libatomic.patch
new file mode 100644
index 000000000..60bf83c5d
--- /dev/null
+++ b/user/spack/clingo-explicit-libatomic.patch
@@ -0,0 +1,12 @@
+diff --git a/var/spack/repos/builtin/packages/clingo/package.py b/var/spack/repos/builtin/packages/clingo/package.py
+index 73ff2b1769..40c2c61dfc 100644
+--- a/var/spack/repos/builtin/packages/clingo/package.py
++++ b/var/spack/repos/builtin/packages/clingo/package.py
+@@ -118,6 +118,7 @@ def cmake_args(self):
+ self.define("PYCLINGO_USE_INSTALL_PREFIX", True),
+ self.define("PYCLINGO_INSTALL_DIR", python_platlib),
+ self.define("PYCLINGO_SUFFIX", suffix),
++ self.define("CMAKE_CXX_STANDARD_LIBRARIES", "-latomic"),
+ self.cmake_py_shared,
+ ]
+ else:
diff --git a/user/spack/config.yaml b/user/spack/config.yaml
new file mode 100644
index 000000000..c7ffefb41
--- /dev/null
+++ b/user/spack/config.yaml
@@ -0,0 +1,22 @@
+# -------------------------------------------------------------------------
+# This is the Adélie spack configuration file.
+#
+# Settings here are versioned with Adélie and are intended to provide
+# sensible defaults out of the box. Adélie maintainers should edit this
+# file to keep it current.
+#
+# Users can override these settings by editing the following files.
+#
+# Per-spack-instance settings (overrides defaults):
+# /opt/spack/etc/spack/config.yaml
+#
+# Per-user settings (overrides default and site settings):
+# ~/.spack/config.yaml
+# -------------------------------------------------------------------------
+
+config:
+
+ install_tree:
+ root: $user_cache_path
+
+ source_cache: $user_cache_path/cache
diff --git a/user/spack/default-adelie-upstream-git.patch b/user/spack/default-adelie-upstream-git.patch
new file mode 100644
index 000000000..cf8e982dd
--- /dev/null
+++ b/user/spack/default-adelie-upstream-git.patch
@@ -0,0 +1,27 @@
+diff --git a/lib/spack/spack/cmd/clone.py b/lib/spack/spack/cmd/clone.py
+index ade3c2a739..610ef78ea1 100644
+--- a/lib/spack/spack/cmd/clone.py
++++ b/lib/spack/spack/cmd/clone.py
+@@ -12,7 +12,7 @@
+ import spack.util.git
+ from spack.util.executable import ProcessError
+
+-_SPACK_UPSTREAM = "https://github.com/spack/spack"
++_SPACK_UPSTREAM = "https://git.adelielinux.org/adelie/spack.git"
+
+ description = "create a new installation of spack in another prefix"
+ section = "admin"
+@@ -37,10 +37,10 @@ def get_origin_info(remote):
+ try:
+ branch = git("symbolic-ref", "--short", "HEAD", output=str)
+ except ProcessError:
+- branch = "develop"
++ branch = "adelie"
+ tty.warn("No branch found; using default branch: %s" % branch)
+- if remote == "origin" and branch not in ("master", "develop"):
+- branch = "develop"
++ if remote == "origin" and branch not in ("master", "develop", "adelie"):
++ branch = "adelie"
+ tty.warn("Unknown branch found; using default branch: %s" % branch)
+ try:
+ origin_url = git(
diff --git a/user/spack/default-no-buildcache.patch b/user/spack/default-no-buildcache.patch
new file mode 100644
index 000000000..f0cd1bb1f
--- /dev/null
+++ b/user/spack/default-no-buildcache.patch
@@ -0,0 +1,13 @@
+diff --git a/lib/spack/spack/cmd/install.py b/lib/spack/spack/cmd/install.py
+index 3f9a948a23..bc46e98395 100644
+--- a/lib/spack/spack/cmd/install.py
++++ b/lib/spack/spack/cmd/install.py
+@@ -120,7 +120,7 @@ def setup_parser(subparser):
+ "--use-cache",
+ action="store_true",
+ dest="use_cache",
+- default=True,
++ default=False,
+ help="check for pre-built Spack packages in mirrors (default)",
+ )
+ cache_group.add_argument(
diff --git a/user/spack/openssl-explicit-linux-headers.patch b/user/spack/openssl-explicit-linux-headers.patch
new file mode 100644
index 000000000..763be9df3
--- /dev/null
+++ b/user/spack/openssl-explicit-linux-headers.patch
@@ -0,0 +1,12 @@
+diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py
+index 21b076856a..e73c60a7c1 100644
+--- a/var/spack/repos/builtin/packages/openssl/package.py
++++ b/var/spack/repos/builtin/packages/openssl/package.py
+@@ -380,6 +380,7 @@ class Openssl(Package): # Uses Fake Autotools, should subclass Package
+ depends_on("perl@5.14.0:", type=("build", "test"))
+ depends_on("ca-certificates-mozilla", type="build", when="certs=mozilla")
+ depends_on("nasm", when="platform=windows")
++ depends_on("linux-headers", when="platform=linux")
+
+ patch(
+ "https://github.com/openssl/openssl/commit/f9e578e720bb35228948564192adbe3bc503d5fb.patch?full_index=1",
diff --git a/user/spack/spack.post-install b/user/spack/spack.post-install
new file mode 100644
index 000000000..e627b96da
--- /dev/null
+++ b/user/spack/spack.post-install
@@ -0,0 +1,28 @@
+#!/bin/sh -e
+
+cat <<EOF
+*
+* Welcome to Spack on the Adélie Linux platform, the first
+* musl-based distribution for supercomputers.
+*
+* Please keep in mind that binary mirrors are not currently
+* available for this platform, so all packages will need to
+* be built from source, including the initial bootstrap.
+*
+*
+* The Spack environment is obtained by sourcing:
+*
+* $ . /opt/spack/share/spack/setup-env.sh
+*
+*
+* Documentation:
+*
+* https://spack.readthedocs.io/
+*
+*
+* Report Adélie-specific Spack issues:
+*
+* https://git.adelielinux.org/adelie/spack/-/issues
+* https://git.adelielinux.org/adelie/packages/-/issues
+*
+EOF
diff --git a/user/spdlog/APKBUILD b/user/spdlog/APKBUILD
new file mode 100644
index 000000000..3f25d32bb
--- /dev/null
+++ b/user/spdlog/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Max Rees <maxcrees@me.com>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=spdlog
+pkgver=1.5.0
+pkgrel=0
+pkgdesc="C++ header-only logging library"
+url="https://github.com/gabime/spdlog"
+arch="all"
+license="MIT AND BSD-2-Clause"
+depends=""
+makedepends="cmake"
+source="$pkgname-$pkgver.tar.gz::https://github.com/gabime/spdlog/archive/v$pkgver.tar.gz"
+
+build() {
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DSPDLOG_BUILD_SHARED=ON \
+ -DSPDLOG_BUILD_TESTS=ON \
+ -DSPDLOG_BUILD_BENCH=OFF \
+ -DSPDLOG_BUILD_EXAMPLES=OFF
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="78991c943dd95af563c4b29545b9b5d635caf1af5031262dde734ecf70c0b4ae866d954ee77b050f9f0cc089a3bc57ee9583895e51cb00dd1cc6c10ff905ca34 spdlog-1.5.0.tar.gz"
diff --git a/user/spectacle/APKBUILD b/user/spectacle/APKBUILD
index d22aff8cb..3ee051c24 100644
--- a/user/spectacle/APKBUILD
+++ b/user/spectacle/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=spectacle
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Application for capturing desktop screenshots"
url="https://www.kde.org/applications/graphics/spectacle/"
@@ -12,12 +12,12 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
kcoreaddons-dev kwidgetsaddons-dev kdbusaddons-dev knotifications-dev
kconfig-dev ki18n-dev kio-dev kxmlgui-dev kwindowsystem-dev python3
kdoctools-dev kdeclarative-dev xcb-util-image-dev xcb-util-cursor-dev
- libxcb-dev xcb-util-renderutil-dev knewstuff-dev libkipi-dev"
+ libxcb-dev xcb-util-renderutil-dev knewstuff-dev libkipi-dev
+ kwayland-dev purpose-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/spectacle-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/spectacle-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +28,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ -DBUILD_TESTING=OFF \
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d239106f0d115e98ec0173862e6dee1b6fdab5846e65c47a4bbaa161cb2695503a58bdb369feb707b96121a0d1bb9acddafc5cfa748e3113bbd47d7da49ed50f spectacle-18.12.3.tar.xz"
+sha512sums="9fc2dd1792988c74ee7c7f5b6a32373dc9129e6a3beafaad82c58f3a512d9c61f8669fef53e3c682b0b4316d8eebf85833382da52ea39c3afe7df7e5efbb6ce3 spectacle-22.04.2.tar.xz"
diff --git a/user/spectrwm/APKBUILD b/user/spectrwm/APKBUILD
index 4c3de19db..efff1a025 100644
--- a/user/spectrwm/APKBUILD
+++ b/user/spectrwm/APKBUILD
@@ -1,14 +1,13 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=spectrwm
-pkgver=3.2.0
-_pkgver=${pkgver/./_}
-_pkgver=${_pkgver/./_}
+pkgver=3.5.1
+_pkgver=$(printf '%s' "$pkgver" | tr . _)
pkgrel=0
pkgdesc="Small dynamic tiling window manager"
url="https://github.com/conformal/spectrwm"
arch="all"
-options="!check" # no tests
+options="!check" # No test suite.
license="ISC AND MIT"
depends=""
makedepends="libx11-dev libxcursor-dev libxcb-dev xcb-util-keysyms-dev
@@ -18,14 +17,11 @@ source="spectrwm-$pkgver.tar.gz::https://github.com/conformal/spectrwm/archive/S
builddir="$srcdir/spectrwm-SPECTRWM_$_pkgver"
build() {
- cd "$builddir"/linux
- CFLAGS="-DSWM_LIB=libswmhack.so" make PREFIX=/usr
+ CFLAGS="-DSWM_LIB=libswmhack.so" make -C linux PREFIX=/usr
}
package() {
- cd "$builddir"/linux
- make PREFIX=/usr DESTDIR="$pkgdir" install
- cd ..
+ make PREFIX=/usr DESTDIR="$pkgdir" -C linux install
for i in screenshot.sh baraction.sh; do
install -Dm755 $i "$pkgdir"/usr/share/spectrwm/$i
done
@@ -36,4 +32,4 @@ package() {
done
}
-sha512sums="038d7fc5716fbca324a078a311939ec23db6ff53e9ef33b2804c687838e729f0e7bb7f724c539e8ac8efed9607358962d4dd742db7f1a30bf3c6ab72eade1039 spectrwm-3.2.0.tar.gz"
+sha512sums="9a5b9bee6debd395b6b5f706d12dbb80a848e4f5f02405a54cf9a47b2bcceb407bf14fce64a9cc4ff9205ed7e688adeefb0280289b73a0cf9927b44cfaec02fa spectrwm-3.5.1.tar.gz"
diff --git a/user/speech-dispatcher/APKBUILD b/user/speech-dispatcher/APKBUILD
index 8c12dd18f..03c2cfdf6 100644
--- a/user/speech-dispatcher/APKBUILD
+++ b/user/speech-dispatcher/APKBUILD
@@ -1,17 +1,21 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=speech-dispatcher
-pkgver=0.9.0
+pkgver=0.11.1
pkgrel=0
pkgdesc="High-level interface to speech synthesis libraries"
url="https://freebsoft.org/speechd"
arch="all"
license="LGPL-2.1-only AND (GPL-2.0+ AND LGPL-2.1+) AND LGPL-2.1+ AND GPL-2.0+"
depends="flite"
+# ltdl
makedepends="alsa-lib-dev dotconf-dev flite-dev glib-dev intltool
- libsndfile-dev pulseaudio-dev"
-subpackages="$pkgname-dev $pkgname-doc"
-source="https://github.com/brailcom/speechd/releases/download/$pkgver/speech-dispatcher-$pkgver.tar.gz"
+ libsndfile-dev libtool pulseaudio-dev texinfo"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+source="https://github.com/brailcom/speechd/releases/download/$pkgver/speech-dispatcher-$pkgver.tar.gz
+ sys-types.patch
+ threadleak.patch
+ "
build() {
LIBS="-lasound" ./configure \
@@ -35,4 +39,6 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="d72542531f58954e424d1cf956f6cb4fd42d585a1d4b955b13e8a426729a06407cf4085b2b4885eac110d36216c9a8403d37b401eca5c2398011786bdf041083 speech-dispatcher-0.9.0.tar.gz"
+sha512sums="859911d7db5660423bc7911eacbe8e7a9c3104df97478cbbca48ca5fd6ec018113172d49bc66781680433c77b4d2af43578c9b0f11409e2ba7ac618deb31d7cf speech-dispatcher-0.11.1.tar.gz
+111562b044834189016a0328240f1bc97c38461fb07677b9c6ae36b97b2ddcf3b30c9ac5b8ab6e69209afb8e4e9b6ca13373a685c840be9ba301e1ef270f1a99 sys-types.patch
+201e9c1453eb6025e4385173b8068fa8198087d5006f5e90814198b271f7a49aa204235ca7ed521757702e72531678f9cade793d5f4ef1e211122cb9aaf99caa threadleak.patch"
diff --git a/user/speech-dispatcher/sys-types.patch b/user/speech-dispatcher/sys-types.patch
new file mode 100644
index 000000000..ad91455ff
--- /dev/null
+++ b/user/speech-dispatcher/sys-types.patch
@@ -0,0 +1,11 @@
+diff -ur a/src/modules/module_main.h b/src/modules/module_main.h
+--- a/src/modules/module_main.h 2022-02-02 04:43:16.910000000 +0000
++++ b/src/modules/module_main.h 2022-02-02 04:43:56.830000000 +0000
+@@ -31,6 +31,7 @@
+
+ #include <speechd_types.h>
+ #include <spd_audio.h>
++#include <sys/types.h>
+
+ #ifdef __cplusplus
+ extern "C" {
diff --git a/user/speech-dispatcher/threadleak.patch b/user/speech-dispatcher/threadleak.patch
new file mode 100644
index 000000000..6983a6dab
--- /dev/null
+++ b/user/speech-dispatcher/threadleak.patch
@@ -0,0 +1,84 @@
+From a054e9469dd6481e24c385162013fc14fefb940f Mon Sep 17 00:00:00 2001
+From: Samuel Thibault <samuel.thibault@ens-lyon.org>
+Date: Sun, 13 Mar 2022 17:04:09 +0100
+Subject: [PATCH] libspeechd: Fix memleak when using threaded mode
+
+---
+ src/api/c/libspeechd.c | 36 ++++++++++++++++++++++++++----------
+ 1 file changed, 26 insertions(+), 10 deletions(-)
+
+diff --git a/src/api/c/libspeechd.c b/src/api/c/libspeechd.c
+index b0f30286..dd4c7f7b 100644
+--- a/src/api/c/libspeechd.c
++++ b/src/api/c/libspeechd.c
+@@ -1777,21 +1777,35 @@ static int spd_set_priority(SPDConnection * connection, SPDPriority priority)
+ return spd_execute_command_wo_mutex(connection, command);
+ }
+
++struct get_reply_data {
++ GString *str;
++ char *line;
++};
++
++static void get_reply_cleanup(void *arg)
++{
++ struct get_reply_data *data = arg;
++ g_string_free(data->str, TRUE);
++ free(data->line);
++}
++
+ static char *get_reply(SPDConnection * connection)
+ {
+- GString *str;
+- char *line = NULL;
+ size_t N = 0;
+ int bytes;
+ char *reply;
+ gboolean errors = FALSE;
++ struct get_reply_data data;
+
+- str = g_string_new("");
++ data.line = NULL;
++ data.str = g_string_new("");
++
++ pthread_cleanup_push(get_reply_cleanup, &data);
+
+ /* Wait for activity on the socket, when there is some,
+ read all the message line by line */
+ do {
+- bytes = getline(&line, &N, connection->stream);
++ bytes = getline(&data.line, &N, connection->stream);
+ if (bytes == -1) {
+ SPD_DBG
+ ("Error: Can't read reply, broken socket in get_reply!");
+@@ -1800,22 +1814,24 @@ static char *get_reply(SPDConnection * connection)
+ connection->stream = NULL;
+ errors = TRUE;
+ } else {
+- g_string_append(str, line);
++ g_string_append(data.str, data.line);
+ }
+ /* terminate if we reached the last line (without '-' after numcode) */
+- } while (!errors && !((strlen(line) < 4) || (line[3] == ' ')));
++ } while (!errors && !((strlen(data.line) < 4) || (data.line[3] == ' ')));
++
++ pthread_cleanup_pop(0);
+
+- free(line); /* getline allocates with malloc. */
++ free(data.line); /* getline allocates with malloc. */
+
+ if (errors) {
+ /* Free the GString and its character data, and return NULL. */
+- g_string_free(str, TRUE);
++ g_string_free(data.str, TRUE);
+ reply = NULL;
+ } else {
+ /* The resulting message received from the socket is stored in reply */
+- reply = str->str;
++ reply = data.str->str;
+ /* Free the GString, but not its character data. */
+- g_string_free(str, FALSE);
++ g_string_free(data.str, FALSE);
+ }
+
+ return reply;
diff --git a/user/speex/APKBUILD b/user/speex/APKBUILD
index c39ae6691..be0584dfa 100644
--- a/user/speex/APKBUILD
+++ b/user/speex/APKBUILD
@@ -13,7 +13,6 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
source="https://downloads.us.xiph.org/releases/speex/speex-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,7 +26,6 @@ build() {
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
}
diff --git a/user/speexdsp/APKBUILD b/user/speexdsp/APKBUILD
index 37aa29cd3..9394edc7a 100644
--- a/user/speexdsp/APKBUILD
+++ b/user/speexdsp/APKBUILD
@@ -1,7 +1,6 @@
# Maintainer:
pkgname=speexdsp
-pkgver=1.2_rc3
-upstreamver=1.2rc3
+pkgver=1.2.0
pkgrel=0
pkgdesc="A voice compression format (DSP)"
url="https://www.speex.org/"
@@ -12,21 +11,15 @@ depends=""
makedepends="autoconf automake libtool"
subpackages="$pkgname-dev $pkgname-doc"
replaces="libspeex"
-source="https://downloads.xiph.org/releases/speex/$pkgname-$upstreamver.tar.gz
- speexdsp-fixbuilds-774c87d.patch
- "
-builddir="$srcdir"/$pkgname-$upstreamver
-
-prepare() {
- cd "$builddir"
- default_prepare
- autoreconf -vif
-}
+source="https://downloads.xiph.org/releases/speex/$pkgname-$pkgver.tar.gz"
build() {
- local _neon
- cd "$builddir"
- [ "$CARCH" = "aarch64" ] && _neon="--disable-neon"
+ _arch_flags=""
+
+ case $CARCH in
+ "aarch64") _arch_flags="--disable-neon"
+ esac
+
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -35,14 +28,12 @@ build() {
--mandir=/usr/share/man \
--infodir=/usr/share/info \
--disable-static \
- $_neon
+ $_arch_flags
make
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
}
-sha512sums="29dfa8345df025eeb076561648a9b5c0485692be699b6da3c2a3734b4329187a1c2eb181252f4df12b21f1309ecdf59797437dfb123d160fd723491ab216e858 speexdsp-1.2rc3.tar.gz
-0f0c8054591915a4ea06b28b13d50da41be10d594f39a0496e2e80e4514ed53db7cd0e1fdb205ce5e87f602b9c1e15409c33cf946ab25cdef8a3b147dbfcc0f3 speexdsp-fixbuilds-774c87d.patch"
+sha512sums="e357cd5377415ea66c862302c7cf8bf6a10063cacd903f0846478975b87974cf5bdf00e2c6759d8f4f453c4c869cf284e9dc948a84a83d7b2ab96bd5405c05ec speexdsp-1.2.0.tar.gz"
diff --git a/user/speexdsp/speexdsp-fixbuilds-774c87d.patch b/user/speexdsp/speexdsp-fixbuilds-774c87d.patch
deleted file mode 100644
index c02ee29bd..000000000
--- a/user/speexdsp/speexdsp-fixbuilds-774c87d.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-diff --git a/configure.ac b/configure.ac
-index 2cd2d1e..1de0c23 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -334,6 +334,12 @@ AC_SUBST([USIZE16])
- AC_SUBST([SIZE32])
- AC_SUBST([USIZE32])
-
-+AS_IF([test "$ac_cv_header_stdint_h" = "yes"], [INCLUDE_STDINT="#include <stdint.h>"],
-+ [test "$ac_cv_header_inttypes_h" = "yes"], [INCLUDE_STDINT="#include <inttypes.h>"],
-+ [test "$ac_cv_header_sys_types_h" = "yes"], [INCLUDE_STDINT="#include <sys/types.h>"])
-+
-+AC_SUBST([INCLUDE_STDINT])
-+
- AC_CONFIG_FILES([
- Makefile libspeexdsp/Makefile doc/Makefile SpeexDSP.spec
- include/Makefile include/speex/Makefile speexdsp.pc
-diff --git a/include/speex/speexdsp_config_types.h.in b/include/speex/speexdsp_config_types.h.in
-index 02b82fd..5ea7b55 100644
---- a/include/speex/speexdsp_config_types.h.in
-+++ b/include/speex/speexdsp_config_types.h.in
-@@ -1,13 +1,7 @@
- #ifndef __SPEEX_TYPES_H__
- #define __SPEEX_TYPES_H__
-
--#if defined HAVE_STDINT_H
--# include <stdint.h>
--#elif defined HAVE_INTTYPES_H
--# include <inttypes.h>
--#elif defined HAVE_SYS_TYPES_H
--# include <sys/types.h>
--#endif
-+@INCLUDE_STDINT@
-
- typedef @SIZE16@ spx_int16_t;
- typedef @USIZE16@ spx_uint16_t;
diff --git a/user/spice-gtk/APKBUILD b/user/spice-gtk/APKBUILD
new file mode 100644
index 000000000..f1fd970a8
--- /dev/null
+++ b/user/spice-gtk/APKBUILD
@@ -0,0 +1,70 @@
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Maintainer: Max Rees <maxcrees@me.com>
+pkgname=spice-gtk
+pkgver=0.42
+pkgrel=0
+pkgdesc="A GTK+ widget for SPICE clients"
+url="https://www.spice-space.org/"
+arch="all"
+# suid: ACL helper for USB redirection
+options="suid"
+license="LGPL-2.1+ AND LGPL-2.0+ AND BSD-3-Clause AND MIT AND GPL-3.0+ AND LGPL-2.0-only AND GPL-2.0+"
+depends="gst-plugins-good"
+depends_dev="gobject-introspection-dev gtk+3.0-dev"
+makedepends="$depends_dev acl-dev bash cyrus-sasl-dev eudev-dev
+ gst-plugins-base-dev gstreamer-dev gstreamer-tools gtk-doc
+ json-glib-dev libjpeg-turbo-dev
+ libxrandr-dev lz4-dev meson openssl-dev opus-dev polkit-dev
+ py3-pyparsing py3-six spice-protocol
+ zlib-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang spicy
+ spice-glib:glib"
+source="https://www.spice-space.org/download/gtk/$pkgname-$pkgver.tar.xz
+ fix-dirty-spicy-corruption.patch
+ "
+
+build() {
+ # Note: pulseaudio support is disabled because it's deprecated.
+ # Audio is still supported through gstreamer.
+ #
+ # USB redirection is disabled until there is reasonable belief
+ # that it is endian safe.
+ # https://gitlab.freedesktop.org/spice/spice-gtk/-/issues/120
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ -Dusbredir=disabled \
+ -Dcoroutine=gthread \
+ . output
+ ninja -C output
+}
+
+check() {
+ ninja -C output test
+}
+
+package() {
+ DESTDIR="$pkgdir" ninja -C output install
+}
+
+spicy() {
+ pkgdesc="SPICE client (remote virtual machine access)"
+ mkdir -p "$subpkgdir"/usr
+ mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
+}
+
+glib() {
+ pkgdesc="$pkgdesc (GLib libraries)"
+ mkdir -p "$subpkgdir"/usr/lib \
+ "$subpkgdir"/usr/lib/girepository-1.0/
+ mv "$pkgdir"/usr/lib/*-glib-*.so* \
+ "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/lib/girepository-1.0/SpiceClientGLib-*.typelib \
+ "$subpkgdir"/usr/lib/girepository-1.0/
+}
+
+sha512sums="fd567e35f6d4ebfe6ef004f358dca4c41254336f55f7dd26cf67b62b2acb4866907186bd0526b7cb52b0c24020cdc8809251127498a8d357555bb0c5d3b8f137 spice-gtk-0.42.tar.xz
+4da61b94db02f4db400be45933bb6d3d3aa05137dfba78dcbc1757d9709c4252984e12f61f88c953597925e3145f5637fde1e76422513e0d1808b53c61c521c7 fix-dirty-spicy-corruption.patch"
diff --git a/user/spice-gtk/fix-dirty-spicy-corruption.patch b/user/spice-gtk/fix-dirty-spicy-corruption.patch
new file mode 100644
index 000000000..44397fc67
--- /dev/null
+++ b/user/spice-gtk/fix-dirty-spicy-corruption.patch
@@ -0,0 +1,23 @@
+diff -ur a/build-aux/git-version-gen b/build-aux/git-version-gen
+--- a/build-aux/git-version-gen 2024-12-10 15:40:58.099527209 +0000
++++ b/build-aux/git-version-gen 2024-12-10 15:44:18.316014690 +0000
+@@ -133,19 +133,6 @@
+
+ v=`echo "$v" |sed 's/^v//'`
+
+-# Don't declare a version "dirty" merely because a time stamp has changed.
+-git update-index --refresh > /dev/null 2>&1
+-
+-dirty=`sh -c 'git diff-index --name-only HEAD' 2>/dev/null` || dirty=
+-case "$dirty" in
+- '') ;;
+- *) # Append the suffix only if there isn't one already.
+- case $v in
+- *-dirty) ;;
+- *) v="$v-dirty" ;;
+- esac ;;
+-esac
+-
+ # Omit the trailing newline, so that m4_esyscmd can use the result directly.
+ echo "$v" | tr -d "$nl"
+
diff --git a/user/spice-gtk/macro.patch b/user/spice-gtk/macro.patch
new file mode 100644
index 000000000..fc0787b93
--- /dev/null
+++ b/user/spice-gtk/macro.patch
@@ -0,0 +1,33 @@
+From 7363d1a0a640b6992d5967621e37c3376958d708 Mon Sep 17 00:00:00 2001
+From: Frediano Ziglio <fziglio@redhat.com>
+Date: Thu, 19 Mar 2020 15:50:45 +0000
+Subject: [PATCH] channel-main: Avoid macro side effects
+
+In big endian system GUINT32_TO_LE macro uses the parameter
+multiple time causing serial to be incremented multiple times
+instead of one.
+Avoid side effects using a temporary variable.
+
+Signed-off-by: Frediano Ziglio <fziglio@redhat.com>
+Acked-by: Victor Toso <victortoso@redhat.com>
+---
+ src/channel-main.c | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/src/channel-main.c b/src/channel-main.c
+index 0a0b9ca..d7669e8 100644
+--- a/src/channel-main.c
++++ b/src/channel-main.c
+@@ -1384,7 +1384,8 @@ static void agent_clipboard_grab(SpiceMainChannel *channel, guint selection,
+ }
+
+ if (test_agent_cap(channel, VD_AGENT_CAP_CLIPBOARD_GRAB_SERIAL)) {
+- *(uint32_t *)grab = GUINT32_TO_LE(c->clipboard_serial[selection]++);
++ uint32_t serial = c->clipboard_serial[selection]++;
++ *(uint32_t *)grab = GUINT32_TO_LE(serial);
+ grab = (void *)grab + sizeof(uint32_t);
+ }
+
+--
+2.24.1
+
diff --git a/user/spice-protocol/APKBUILD b/user/spice-protocol/APKBUILD
index e31c8544a..a73fe219d 100644
--- a/user/spice-protocol/APKBUILD
+++ b/user/spice-protocol/APKBUILD
@@ -1,31 +1,29 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=spice-protocol
-pkgver=0.14.0
+pkgver=0.14.4
pkgrel=0
pkgdesc="Spice protocol header files"
url="https://www.spice-space.org/"
arch="noarch"
+options="!check" # No test suite.
license="BSD-3-Clause AND LGPL-2.1+"
depends=""
-makedepends=""
+makedepends="meson ninja"
subpackages=""
-source="https://www.spice-space.org/download/releases/$pkgname-$pkgver.tar.bz2"
+source="https://www.spice-space.org/download/releases/$pkgname-$pkgver.tar.xz"
build() {
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr
- make
+ meson setup -Dprefix=/usr -Ddatadir=lib build
+ ninja -C build
}
check() {
- make check
+ ninja -C build check
}
package() {
- make pkgconfigdir=/usr/lib/pkgconfig DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" ninja -C build install
}
-sha512sums="797df5f529731e9fd395b5946af2490ecf02c26982cc4a0aef24c1766887a35222f68525a996f8bc7459c2c4a25fde0c9a10c489ee6cab6eed7a68a9b5d90f76 spice-protocol-0.14.0.tar.bz2"
+sha512sums="c55677fd6da37303487f8245388cbd555715c736e15bca4a305c4374feafc655b74e549ea401949d72e17b2e6ad76f16c5add3963008a18a1fefedd4b4a001c1 spice-protocol-0.14.4.tar.xz"
diff --git a/user/spice/APKBUILD b/user/spice/APKBUILD
index 2d7e1b52c..a78551cb6 100644
--- a/user/spice/APKBUILD
+++ b/user/spice/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=spice
-pkgver=0.14.1
+pkgver=0.14.3
pkgrel=0
pkgdesc="Solution for seamless access to virtual machines"
url="https://www.spice-space.org/"
@@ -20,7 +20,6 @@ source="https://www.spice-space.org/download/releases/spice-server/spice-$pkgver
# - CVE-2018-10873
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,13 +32,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="2c0b4fbcb68c76bc0404a807f28c9645a30c6b88e81d2bc574d63b036778a299cebc0ae12aa72f2e1496f66cbf414325125948d440541a40e1b9e53b8956542d spice-0.14.1.tar.bz2"
+sha512sums="9ecdc455ff25c71ac1fe6c576654b51efbfb860110bd6828065d23f7462d5c5cac772074d1a40f033386258d970b77275b2007bcfdffb23fdff2137154ea46e4 spice-0.14.3.tar.bz2"
diff --git a/user/spirv-headers/APKBUILD b/user/spirv-headers/APKBUILD
new file mode 100644
index 000000000..06f2234db
--- /dev/null
+++ b/user/spirv-headers/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=spirv-headers
+pkgver=1.3.290.0
+pkgrel=0
+pkgdesc="Headers for translation between SPIR-V and LLVM IR"
+url="https://github.com/KhronosGroup/SPIRV-Headers"
+arch="noarch"
+license="MIT"
+depends=""
+makedepends="cmake"
+subpackages=""
+source="spirv-headers-$pkgver.tar.gz::https://github.com/KhronosGroup/SPIRV-Headers/archive/refs/tags/vulkan-sdk-$pkgver.tar.gz"
+builddir="$srcdir/SPIRV-Headers-vulkan-sdk-$pkgver"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="d3328cd4ddf87d075afacfb7ada01dbd16a3ff39b831e9ebe4ce3c32af0ff0c8822811b0e0d273a54b4acaba29b63b099efcf0150424bd9074d24d04a9974d89 spirv-headers-1.3.290.0.tar.gz"
diff --git a/user/spirv-tools/APKBUILD b/user/spirv-tools/APKBUILD
new file mode 100644
index 000000000..874d2de0a
--- /dev/null
+++ b/user/spirv-tools/APKBUILD
@@ -0,0 +1,48 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=spirv-tools
+pkgver=2024.3
+pkgrel=0
+pkgdesc="Utilities for working with SPIR-V modules "
+url="https://github.com/KhronosGroup/SPIRV-Tools"
+arch="all"
+license="Apache-2.0"
+depends=""
+depends_dev="spirv-headers"
+makedepends="$depends_dev cmake python3"
+subpackages="$pkgname-dev"
+source="spirv-tools-$pkgver.tar.gz::https://github.com/KhronosGroup/SPIRV-Tools/archive/refs/tags/v$pkgver.tar.gz
+ endian.patch
+ remove-copyright-check-test.patch
+ "
+builddir="$srcdir/SPIRV-Tools-$pkgver"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DSPIRV-Headers_SOURCE_DIR="/usr" \
+ -DSPIRV_TOOLS_BUILD_STATIC=off \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="804e2a076025a9afde2d7b0b6950fa7b7289b9aa911348b10aad45cc3515116b7484e886d49b524315f75e8d1a2009c2f26310352c154d1b23a58864e8535324 spirv-tools-2024.3.tar.gz
+d31f1650a9f1d35b4ee95eddd6bd6aceb3490591e269f283b71589cfd3ca69b77467cabf659fdc42ee96433092434137a3be55c69b60b7edbcc40d5ed76357b1 endian.patch
+a04f1a4d60d6206cbbd5e97dda58ca05689835520617dfe7bdfe29d66ab987f68080fbee85c039aecab554e01d94b16a99acfc2ffd29d9ef5861d3dd2e2dccb1 remove-copyright-check-test.patch"
diff --git a/user/spirv-tools/endian.patch b/user/spirv-tools/endian.patch
new file mode 100644
index 000000000..82a2812ad
--- /dev/null
+++ b/user/spirv-tools/endian.patch
@@ -0,0 +1,283 @@
+From 4826b6eabc6102e49562c48effcabb7b87ceb041 Mon Sep 17 00:00:00 2001
+From: Hugo Devillers <hugo@xol.io>
+Date: Sat, 1 Jul 2023 11:33:17 +0200
+Subject: [PATCH 1/6] remove dead code dealing with operand endianness
+
+---
+ source/binary.cpp | 21 ++++++---------------
+ 1 file changed, 6 insertions(+), 15 deletions(-)
+
+diff --git a/source/binary.cpp b/source/binary.cpp
+index 207d4a9b37..b1e1922445 100644
+--- a/source/binary.cpp
++++ b/source/binary.cpp
+@@ -440,10 +440,6 @@ spv_result_t Parser::parseOperand(size_t inst_offset,
+
+ const uint32_t word = peek();
+
+- // Do the words in this operand have to be converted to native endianness?
+- // True for all but literal strings.
+- bool convert_operand_endianness = true;
+-
+ switch (type) {
+ case SPV_OPERAND_TYPE_TYPE_ID:
+ if (!word)
+@@ -752,17 +748,12 @@ spv_result_t Parser::parseOperand(size_t inst_offset,
+
+ if (_.requires_endian_conversion) {
+ // Copy instruction words. Translate to native endianness as needed.
+- if (convert_operand_endianness) {
+- const spv_endianness_t endianness = _.endian;
+- std::transform(_.words + _.word_index, _.words + index_after_operand,
+- std::back_inserter(*words),
+- [endianness](const uint32_t raw_word) {
+- return spvFixWord(raw_word, endianness);
+- });
+- } else {
+- words->insert(words->end(), _.words + _.word_index,
+- _.words + index_after_operand);
+- }
++ const spv_endianness_t endianness = _.endian;
++ std::transform(_.words + _.word_index, _.words + index_after_operand,
++ std::back_inserter(*words),
++ [endianness](const uint32_t raw_word) {
++ return spvFixWord(raw_word, endianness);
++ });
+ }
+
+ // Advance past the operand.
+
+From 39a63f822f0d1d93cabba4f4f3d980bc6ec1737b Mon Sep 17 00:00:00 2001
+From: Hugo Devillers <hugo@xol.io>
+Date: Sat, 1 Jul 2023 11:50:03 +0200
+Subject: [PATCH 2/6] perform endianness conversion eagerly
+
+---
+ source/binary.cpp | 13 +++++++------
+ 1 file changed, 7 insertions(+), 6 deletions(-)
+
+diff --git a/source/binary.cpp b/source/binary.cpp
+index b1e1922445..d46dbc1d9e 100644
+--- a/source/binary.cpp
++++ b/source/binary.cpp
+@@ -207,6 +207,10 @@ class Parser {
+ operands.reserve(25);
+ endian_converted_words.reserve(25);
+ expected_operands.reserve(25);
++
++ native_words = std::make_unique<uint32_t[]>(num_words);
++ for (size_t i = 0; i < num_words; i++)
++ native_words[i] = spvFixWord(words[i], endian);
+ }
+ State() : State(0, 0, nullptr) {}
+ const uint32_t* words; // Words in the binary SPIR-V module.
+@@ -218,6 +222,7 @@ class Parser {
+ // Is the SPIR-V binary in a different endianness from the host native
+ // endianness?
+ bool requires_endian_conversion;
++ std::unique_ptr<uint32_t[]> native_words;
+
+ // Maps a result ID to its type ID. By convention:
+ // - a result ID that is a type definition maps to itself.
+@@ -748,12 +753,8 @@ spv_result_t Parser::parseOperand(size_t inst_offset,
+
+ if (_.requires_endian_conversion) {
+ // Copy instruction words. Translate to native endianness as needed.
+- const spv_endianness_t endianness = _.endian;
+- std::transform(_.words + _.word_index, _.words + index_after_operand,
+- std::back_inserter(*words),
+- [endianness](const uint32_t raw_word) {
+- return spvFixWord(raw_word, endianness);
+- });
++ words->insert(words->end(), _.native_words.get() + _.word_index,
++ _.native_words.get() + index_after_operand);
+ }
+
+ // Advance past the operand.
+
+From e6005633e64f4dac33aa2c4de42fe6bd3fb648ca Mon Sep 17 00:00:00 2001
+From: Hugo Devillers <hugo@xol.io>
+Date: Sat, 1 Jul 2023 11:51:37 +0200
+Subject: [PATCH 3/6] fix string literals when file has non-native endianness
+
+---
+ source/binary.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/source/binary.cpp b/source/binary.cpp
+index d46dbc1d9e..34cb608abe 100644
+--- a/source/binary.cpp
++++ b/source/binary.cpp
+@@ -591,7 +591,7 @@ spv_result_t Parser::parseOperand(size_t inst_offset,
+ case SPV_OPERAND_TYPE_OPTIONAL_LITERAL_STRING: {
+ const size_t max_words = _.num_words - _.word_index;
+ std::string string =
+- spvtools::utils::MakeString(_.words + _.word_index, max_words, false);
++ spvtools::utils::MakeString(_.native_words.get() + _.word_index, max_words, false);
+
+ if (string.length() == max_words * 4)
+ return exhaustedInputDiagnostic(inst_offset, opcode, type);
+
+From 3ccc744e814609fe63b755e37240e03cf07e2f2b Mon Sep 17 00:00:00 2001
+From: Hugo Devillers <hugo@xol.io>
+Date: Sat, 1 Jul 2023 12:24:16 +0200
+Subject: [PATCH 4/6] don't convert endianness if not required
+
+---
+ source/binary.cpp | 7 +++----
+ 1 file changed, 3 insertions(+), 4 deletions(-)
+
+diff --git a/source/binary.cpp b/source/binary.cpp
+index 34cb608abe..69bd082598 100644
+--- a/source/binary.cpp
++++ b/source/binary.cpp
+@@ -207,10 +207,6 @@ class Parser {
+ operands.reserve(25);
+ endian_converted_words.reserve(25);
+ expected_operands.reserve(25);
+-
+- native_words = std::make_unique<uint32_t[]>(num_words);
+- for (size_t i = 0; i < num_words; i++)
+- native_words[i] = spvFixWord(words[i], endian);
+ }
+ State() : State(0, 0, nullptr) {}
+ const uint32_t* words; // Words in the binary SPIR-V module.
+@@ -267,6 +263,9 @@ spv_result_t Parser::parseModule() {
+ << _.words[0] << "'.";
+ }
+ _.requires_endian_conversion = !spvIsHostEndian(_.endian);
++ _.native_words = std::make_unique<uint32_t[]>(_.num_words);
++ for (size_t i = 0; i < _.num_words; i++)
++ _.native_words[i] = _.requires_endian_conversion ? spvFixWord(_.words[i], _.endian) : _.words[i];
+
+ // Process the header.
+ spv_header_t header;
+
+From 74df3cf1b49c9ae296ebbb16cf8e2e7b45584454 Mon Sep 17 00:00:00 2001
+From: Hugo Devillers <hugo@xol.io>
+Date: Sat, 1 Jul 2023 12:42:04 +0200
+Subject: [PATCH 5/6] use native_words as a cache for spvFixWord
+
+---
+ source/binary.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/source/binary.cpp b/source/binary.cpp
+index 69bd082598..01322be0af 100644
+--- a/source/binary.cpp
++++ b/source/binary.cpp
+@@ -173,7 +173,7 @@ class Parser {
+ // Returns the endian-corrected word at the given position.
+ uint32_t peekAt(size_t index) const {
+ assert(index < _.num_words);
+- return spvFixWord(_.words[index], _.endian);
++ return _.native_words[index];
+ }
+
+ // Data members
+
+From 458eb86f866b489e93d17eee12f76207b93dd60d Mon Sep 17 00:00:00 2001
+From: Hugo Devillers <hugo@xol.io>
+Date: Sat, 1 Jul 2023 16:59:06 +0200
+Subject: [PATCH 6/6] simplify and fix mismatched endian string parsing for
+ extract_source.cpp
+
+---
+ tools/objdump/extract_source.cpp | 58 ++++----------------------------
+ 1 file changed, 7 insertions(+), 51 deletions(-)
+
+diff --git a/tools/objdump/extract_source.cpp b/tools/objdump/extract_source.cpp
+index 02959525c6..a179c722a0 100644
+--- a/tools/objdump/extract_source.cpp
++++ b/tools/objdump/extract_source.cpp
+@@ -23,45 +23,12 @@
+ #include "spirv-tools/libspirv.hpp"
+ #include "spirv/unified1/spirv.hpp"
+ #include "tools/util/cli_consumer.h"
++#include "source/binary.h"
+
+ namespace {
+
+ constexpr auto kDefaultEnvironment = SPV_ENV_UNIVERSAL_1_6;
+
+-// Extract a string literal from a given range.
+-// Copies all the characters from `begin` to the first '\0' it encounters, while
+-// removing escape patterns.
+-// Not finding a '\0' before reaching `end` fails the extraction.
+-//
+-// Returns `true` if the extraction succeeded.
+-// `output` value is undefined if false is returned.
+-spv_result_t ExtractStringLiteral(const spv_position_t& loc, const char* begin,
+- const char* end, std::string* output) {
+- size_t sourceLength = std::distance(begin, end);
+- std::string escapedString;
+- escapedString.resize(sourceLength);
+-
+- size_t writeIndex = 0;
+- size_t readIndex = 0;
+- for (; readIndex < sourceLength; writeIndex++, readIndex++) {
+- const char read = begin[readIndex];
+- if (read == '\0') {
+- escapedString.resize(writeIndex);
+- output->append(escapedString);
+- return SPV_SUCCESS;
+- }
+-
+- if (read == '\\') {
+- ++readIndex;
+- }
+- escapedString[writeIndex] = begin[readIndex];
+- }
+-
+- spvtools::Error(spvtools::utils::CLIMessageConsumer, "", loc,
+- "Missing NULL terminator for literal string.");
+- return SPV_ERROR_INVALID_BINARY;
+-}
+-
+ spv_result_t extractOpString(const spv_position_t& loc,
+ const spv_parsed_instruction_t& instruction,
+ std::string* output) {
+@@ -73,12 +40,8 @@ spv_result_t extractOpString(const spv_position_t& loc,
+ return SPV_ERROR_INVALID_BINARY;
+ }
+
+- const auto& operand = instruction.operands[1];
+- const char* stringBegin =
+- reinterpret_cast<const char*>(instruction.words + operand.offset);
+- const char* stringEnd = reinterpret_cast<const char*>(
+- instruction.words + operand.offset + operand.num_words);
+- return ExtractStringLiteral(loc, stringBegin, stringEnd, output);
++ *output = spvDecodeLiteralStringOperand(instruction, 1);
++ return SPV_SUCCESS;
+ }
+
+ spv_result_t extractOpSourceContinued(
+@@ -92,12 +55,8 @@ spv_result_t extractOpSourceContinued(
+ return SPV_ERROR_INVALID_BINARY;
+ }
+
+- const auto& operand = instruction.operands[0];
+- const char* stringBegin =
+- reinterpret_cast<const char*>(instruction.words + operand.offset);
+- const char* stringEnd = reinterpret_cast<const char*>(
+- instruction.words + operand.offset + operand.num_words);
+- return ExtractStringLiteral(loc, stringBegin, stringEnd, output);
++ *output = *output + spvDecodeLiteralStringOperand(instruction, 0);
++ return SPV_SUCCESS;
+ }
+
+ spv_result_t extractOpSource(const spv_position_t& loc,
+@@ -123,11 +82,8 @@ spv_result_t extractOpSource(const spv_position_t& loc,
+ return SPV_SUCCESS;
+ }
+
+- const char* stringBegin =
+- reinterpret_cast<const char*>(instruction.words + 4);
+- const char* stringEnd =
+- reinterpret_cast<const char*>(instruction.words + instruction.num_words);
+- return ExtractStringLiteral(loc, stringBegin, stringEnd, code);
++ *code = spvDecodeLiteralStringOperand(instruction, 3);
++ return SPV_SUCCESS;
+ }
+
+ } // namespace
diff --git a/user/spirv-tools/remove-copyright-check-test.patch b/user/spirv-tools/remove-copyright-check-test.patch
new file mode 100644
index 000000000..7cd1cf879
--- /dev/null
+++ b/user/spirv-tools/remove-copyright-check-test.patch
@@ -0,0 +1,16 @@
+diff '--color=auto' -Nurd SPIRV-Tools-2024.3/CMakeLists.txt SPIRV-Tools-2024.3.new/CMakeLists.txt
+--- SPIRV-Tools-2024.3/CMakeLists.txt 2024-06-20 07:29:42.000000000 -0700
++++ SPIRV-Tools-2024.3.new/CMakeLists.txt 2024-08-27 20:52:51.548196076 -0700
+@@ -376,12 +376,6 @@
+ ${CMAKE_INSTALL_INCLUDEDIR}/spirv-tools/)
+ endif(ENABLE_SPIRV_TOOLS_INSTALL)
+
+-if (NOT "${SPIRV_SKIP_TESTS}")
+- add_test(NAME spirv-tools-copyrights
+- COMMAND Python3::Interpreter utils/check_copyright.py
+- WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+-endif()
+-
+ set(SPIRV_LIBRARIES "-lSPIRV-Tools-opt -lSPIRV-Tools -lSPIRV-Tools-link")
+ set(SPIRV_SHARED_LIBRARIES "-lSPIRV-Tools-shared")
+
diff --git a/user/spleen/APKBUILD b/user/spleen/APKBUILD
index add08cb24..bf47f1b0c 100644
--- a/user/spleen/APKBUILD
+++ b/user/spleen/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=spleen
-pkgver=1.0.4
+pkgver=1.8.1
pkgrel=0
pkgdesc="Monospace bitmap typeface from OpenBSD"
url="https://www.cambus.net/spleen-monospaced-bitmap-fonts/"
@@ -14,12 +14,10 @@ subpackages=""
source="https://github.com/fcambus/spleen/releases/download/$pkgver/spleen-$pkgver.tar.gz"
package() {
- cd "$builddir"
- local _font
- for _font in *.pcf; do
+ for _font in "$builddir"/*.pcf; do
gzip -9 $_font
install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/misc/ $_font.gz
done
}
-sha512sums="e97245e3a7f176e1160900ebb0390165184f2f298ab210c5b1a870ed3c556a35ef0c6d7aeadf129c1f850ed060718ed07d4e27b3f93873f8b808b9610925c880 spleen-1.0.4.tar.gz"
+sha512sums="c9ea684bd1b9b9d5c121aad4658d4ce13a3b086df8bd473c001b79238f953af51ce2fcda01eab53a4e5b578433b947b44aa5924f2b14ebf7ccd2ce1681cf6fb2 spleen-1.8.1.tar.gz"
diff --git a/user/sprunge/APKBUILD b/user/sprunge/APKBUILD
index bc7a3e2df..a42f9b93e 100644
--- a/user/sprunge/APKBUILD
+++ b/user/sprunge/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=sprunge
-pkgver=0.6
+pkgver=0.7
pkgrel=0
pkgdesc="Helper script to paste things to http://sprunge.us"
url="http://sprunge.us"
@@ -11,10 +11,8 @@ depends="curl"
makedepends=""
subpackages="tpaste dpaste ix"
source=""
-builddir="$srcdir"
package() {
- cd "$builddir"
mkdir -p "$pkgdir"/usr/bin
printf "#!/bin/sh\n\nexec curl -F 'sprunge=<-' http://sprunge.us" > \
"$pkgdir"/usr/bin/sprunge
@@ -22,17 +20,15 @@ package() {
}
tpaste() {
- cd "$builddir"
- url="http://tpaste.us"
+ url="https://tpaste.us"
pkgdesc="Helper script to paste things to $url"
mkdir -p "$subpkgdir"/usr/bin
- printf "#!/bin/sh\n\nexec curl -F 'tpaste=<-' http://tpaste.us" > \
+ printf "#!/bin/sh\n\nexec curl -F 'tpaste=<-' https://tpaste.us" > \
"$subpkgdir"/usr/bin/tpaste
chmod 755 "$subpkgdir"/usr/bin/tpaste
}
dpaste() {
- cd "$builddir"
url="http://dpaste.com"
pkgdesc="Helper script to paste things to $url"
mkdir -p "$subpkgdir"/usr/bin
@@ -42,7 +38,6 @@ dpaste() {
}
ix() {
- cd "$builddir"
url="http://ix.io"
pkgdesc="Helper script to paste things to $url"
mkdir -p "$subpkgdir"/usr/bin
diff --git a/user/squashfs-tools/0001-mksquashfs-fix-rare-race-in-fragment-waiting-in-file.patch b/user/squashfs-tools/0001-mksquashfs-fix-rare-race-in-fragment-waiting-in-file.patch
deleted file mode 100644
index 51f588818..000000000
--- a/user/squashfs-tools/0001-mksquashfs-fix-rare-race-in-fragment-waiting-in-file.patch
+++ /dev/null
@@ -1,60 +0,0 @@
-From de03266983ceb62e5365aac84fcd3b2fd4d16e6f Mon Sep 17 00:00:00 2001
-From: Phillip Lougher <phillip@squashfs.org.uk>
-Date: Thu, 18 Sep 2014 01:28:11 +0100
-Subject: [PATCH] mksquashfs: fix rare race in fragment waiting in filesystem
- finalisation
-
-Fix a rare race condition in fragment waiting when finalising the
-filesystem. This is a race condition that was initially fixed in 2009,
-but inadvertantly re-introduced in the latest release when the code
-was rewritten.
-
-Background:
-
-When finalising the filesystem, the main control thread needs to ensure
-all the in-flight fragments have been queued to the writer thread before
-asking the writer thread to finish, and then writing the metadata.
-
-It does this by waiting on the fragments_outstanding counter. Once this
-counter reaches 0, it synchronises with the writer thread, waiting until
-the writer thread reports no outstanding data to be written.
-
-However, the main thread can race with the fragment deflator thread(s)
-because the fragment deflator thread(s) decrement the fragments_outstanding
-counter and release the mutex before queueing the compressed fragment
-to the writer thread, i.e. the offending code is:
-
- fragments_outstanding --;
- pthread_mutex_unlock(&fragment_mutex);
- queue_put(to_writer, write_buffer);
-
-In extremely rare circumstances, the main thread may see the
-fragments_outstanding counter is zero before the fragment
-deflator sends the fragment buffer to the writer thread, and synchronise
-with the writer thread, and finalise before the fragment has been written.
-
-The fix is to ensure the fragment is queued to the writer thread
-before releasing the mutex.
-
-Signed-off-by: Phillip Lougher <phillip@squashfs.org.uk>
----
- squashfs-tools/mksquashfs.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/squashfs-tools/mksquashfs.c b/squashfs-tools/mksquashfs.c
-index 87b7d86..f1fcff1 100644
---- a/squashfs-tools/mksquashfs.c
-+++ b/squashfs-tools/mksquashfs.c
-@@ -2419,8 +2419,8 @@ void *frag_deflator(void *arg)
- write_buffer->block = bytes;
- bytes += compressed_size;
- fragments_outstanding --;
-- pthread_mutex_unlock(&fragment_mutex);
- queue_put(to_writer, write_buffer);
-+ pthread_mutex_unlock(&fragment_mutex);
- TRACE("Writing fragment %lld, uncompressed size %d, "
- "compressed size %d\n", file_buffer->block,
- file_buffer->size, compressed_size);
---
-2.10.2
-
diff --git a/user/squashfs-tools/APKBUILD b/user/squashfs-tools/APKBUILD
index 227faf11d..be6eddb44 100644
--- a/user/squashfs-tools/APKBUILD
+++ b/user/squashfs-tools/APKBUILD
@@ -1,35 +1,32 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=squashfs-tools
-pkgver=4.3
-pkgrel=5
+pkgver=4.6.1
+pkgrel=0
pkgdesc="Tools for SquashFS, a highly compressed read-only filesystem"
-url="http://squashfs.sourceforge.net"
+url="https://squashfs.sourceforge.net"
arch="all"
options="!check" # No test suite.
license="GPL-2.0+"
-depends=
-makedepends="zlib-dev xz-dev lzo-dev lz4-dev attr-dev"
-source="http://downloads.sourceforge.net/sourceforge/squashfs/squashfs$pkgver.tar.gz
+depends=""
+makedepends="attr-dev lz4-dev lzo-dev xz-dev zlib-dev"
+source="https://downloads.sourceforge.net/squashfs/squashfs$pkgver.tar.gz
fix-compat.patch
- vla-overlow.patch
- CVE-2015-4645.patch
- 0001-mksquashfs-fix-rare-race-in-fragment-waiting-in-file.patch
-"
-builddir="$srcdir/squashfs$pkgver"
+ "
+
+# secfixes:
+# 4.3-r5:
+# - CVE-2015-4645
+# 4.4-r0:
+# - CVE-2015-4646
build() {
- cd "$builddir"/$pkgname
- make XZ_SUPPORT=1 LZO_SUPPORT=1 LZ4_SUPPORT=1
+ make XZ_SUPPORT=1 LZO_SUPPORT=1 LZ4_SUPPORT=1 -C squashfs-tools
}
package() {
- cd "$builddir"/$pkgname
- mkdir -p "$pkgdir"/sbin
- cp -a mksquashfs unsquashfs "$pkgdir"/sbin
+ mkdir -p "$pkgdir"/usr/sbin
+ cp -a squashfs-tools/mksquashfs squashfs-tools/unsquashfs "$pkgdir"/usr/sbin
}
-sha512sums="854ed7acc99920f24ecf11e0da807e5a2a162eeda55db971aba63a03f0da2c13b20ec0564a906c4b0e415bd8258b273a10208c7abc0704f2ceea773aa6148a79 squashfs4.3.tar.gz
-868e3923f98a7f8bb980fe8ab0d648e9ae9a55e324bea3830d6047aa348a4302dcb96d65bf59c6e04665891d822e18fad367a37c6704505b8492f64d749fc140 fix-compat.patch
-975d09d047f4122866e83c4322ce3a15795c051b850d14a85a615c3beef970378e5a620ee16058b9c5104c53f973f9b3804d96c3ba1ab4f622f1e096c04e0360 vla-overlow.patch
-77431a0a4a529ce63f1613a65a23af2fb8683a16d14ad1a5cfed3a9fac4df6a1212f081d1879ede188a25b77e860445058012131423c546657fb562069865d2c CVE-2015-4645.patch
-1b2338a448ec8a2b75880ddc8c13f99392451847ab26277e1bc82b49a3a804796934e212dd1ba54a502940537a61891ee0103e913d0bda65cff0ca2827b8b41c 0001-mksquashfs-fix-rare-race-in-fragment-waiting-in-file.patch"
+sha512sums="10e8a4b1e2327e062aef4f85860e76ebcd7a29e4c19e152ff7edec4a38316982b5bcfde4ab69da6bcb931258d264c2b6cb40cb5f635f9e6f6eba1ed5976267cb squashfs4.6.1.tar.gz
+7572f2fab6357525bc607a8db92b0c1f5fc7d482e935c3ee1828543a3de474162b71b8441f77ee1656873def8593d99158b14c55ec44799f22eed2978aa19147 fix-compat.patch"
diff --git a/user/squashfs-tools/CVE-2015-4645.patch b/user/squashfs-tools/CVE-2015-4645.patch
deleted file mode 100644
index f69025f18..000000000
--- a/user/squashfs-tools/CVE-2015-4645.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-diff --git a/squashfs-tools/unsquash-4.c b/squashfs-tools/unsquash-4.c
-index ecdaac796f09..2c0cf63daf67 100644
---- a/squashfs-tools/unsquash-4.c
-+++ b/squashfs-tools/unsquash-4.c
-@@ -31,9 +31,9 @@ static unsigned int *id_table;
- int read_fragment_table_4(long long *directory_table_end)
- {
- int res, i;
-- int bytes = SQUASHFS_FRAGMENT_BYTES(sBlk.s.fragments);
-- int indexes = SQUASHFS_FRAGMENT_INDEXES(sBlk.s.fragments);
-- long long fragment_table_index[indexes];
-+ size_t bytes = SQUASHFS_FRAGMENT_BYTES(sBlk.s.fragments);
-+ size_t indexes = SQUASHFS_FRAGMENT_INDEXES(sBlk.s.fragments);
-+ long long *fragment_table_index;
-
- TRACE("read_fragment_table: %d fragments, reading %d fragment indexes "
- "from 0x%llx\n", sBlk.s.fragments, indexes,
-@@ -44,6 +44,11 @@ int read_fragment_table_4(long long *directory_table_end)
- return TRUE;
- }
-
-+ fragment_table_index = malloc(indexes*sizeof(long long));
-+ if(fragment_table_index == NULL)
-+ EXIT_UNSQUASH("read_fragment_table: failed to allocate "
-+ "fragment table index\n");
-+
- fragment_table = malloc(bytes);
- if(fragment_table == NULL)
- EXIT_UNSQUASH("read_fragment_table: failed to allocate "
diff --git a/user/squashfs-tools/fix-compat.patch b/user/squashfs-tools/fix-compat.patch
index 2a3b33ca9..adc7e420d 100644
--- a/user/squashfs-tools/fix-compat.patch
+++ b/user/squashfs-tools/fix-compat.patch
@@ -1,6 +1,6 @@
---- squashfs4.3.orig/squashfs-tools/action.c
-+++ squashfs4.3/squashfs-tools/action.c
-@@ -1905,6 +1905,9 @@
+--- a/squashfs-tools/action.c
++++ b/squashfs-tools/action.c
+@@ -2562,6 +2562,9 @@
return 1;
}
@@ -10,31 +10,21 @@
TEST_FN(name, ACTION_ALL_LNK, \
return fnmatch(atom->argv[0], action_data->name,
---- squashfs4.3.orig/squashfs-tools/mksquashfs.c
-+++ squashfs4.3/squashfs-tools/mksquashfs.c
-@@ -4391,6 +4391,9 @@
- return paths;
+--- a/squashfs-tools/mksquashfs.c
++++ b/squashfs-tools/mksquashfs.c
+@@ -4557,6 +4557,9 @@
+ return source;
}
+#ifndef FNM_EXTMATCH
+#define FNM_EXTMATCH 0
+#endif
- int excluded_match(char *name, struct pathname *path, struct pathnames **new)
- {
---- squashfs4.3.orig/squashfs-tools/pseudo.c
-+++ squashfs4.3/squashfs-tools/pseudo.c
-@@ -32,6 +32,7 @@
- #include <stdlib.h>
- #include <sys/types.h>
- #include <sys/wait.h>
-+#include <sys/stat.h>
- #include <ctype.h>
-
- #include "pseudo.h"
---- squashfs4.3.orig/squashfs-tools/unsquashfs.c
-+++ squashfs4.3/squashfs-tools/unsquashfs.c
-@@ -1410,6 +1410,9 @@
+ static struct dir_info *add_source(struct dir_info *sdir, char *source,
+ char *subpath, char *file, char **prefix,
+--- a/squashfs-tools/unsquashfs.c
++++ b/squashfs-tools/unsquashfs.c
+@@ -1450,6 +1450,9 @@
free(paths);
}
@@ -42,5 +32,5 @@
+#define FNM_EXTMATCH 0
+#endif
- int matches(struct pathnames *paths, char *name, struct pathnames **new)
- {
+ struct pathname *add_path(struct pathname *paths, int type, char *target,
+ char *alltarget)
diff --git a/user/squashfs-tools/vla-overlow.patch b/user/squashfs-tools/vla-overlow.patch
deleted file mode 100644
index a9840fe01..000000000
--- a/user/squashfs-tools/vla-overlow.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- ./squashfs-tools/unsquashfs.c.orig
-+++ ./squashfs-tools/unsquashfs.c
-@@ -2099,7 +2099,9 @@
- */
- void *inflator(void *arg)
- {
-- char tmp[block_size];
-+ char *tmp = malloc(block_size);
-+ if(tmp == NULL)
-+ EXIT_UNSQUASH("Out of memory allocating block buffer\n");
-
- while(1) {
- struct cache_entry *entry = queue_get(to_inflate);
-@@ -2122,6 +2124,7 @@
- */
- cache_block_ready(entry, res == -1);
- }
-+ free(tmp);
- }
-
-
diff --git a/user/sshfs/APKBUILD b/user/sshfs/APKBUILD
index 32fcfbd7c..d3f1ce3f0 100644
--- a/user/sshfs/APKBUILD
+++ b/user/sshfs/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=sshfs
-pkgver=3.5.0
+pkgver=3.7.0
pkgrel=0
pkgdesc="FUSE client based on the SSH File Transfer Protocol"
url="https://github.com/libfuse/sshfs"
@@ -9,13 +9,12 @@ arch="all"
options="!check" # Requires fuse kernel module to be loaded and local ssh server
license="GPL-2.0-only AND GPL-2.0+ AND LGPL-2.1-only"
depends="openssh-client"
+#checkdepends="cmd:which openssh-server openssh-sftp-server py3-pytest"
makedepends="fuse3-dev glib-dev meson coreutils py3-docutils"
-#checkdepends="py3-pytest cmd:which"
subpackages="$pkgname-doc"
source="https://github.com/libfuse/$pkgname/releases/download/$pkgname-$pkgver/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
# NOTE: --prefix=/ is intentional. If --prefix=/usr, mount(8) will not be
# able to find mount.fuse.sshfs or mount.sshfs - it only looks in /sbin, not
# /usr/sbin. The omission of the absolute slash in --mandir=usr/share/man is
@@ -33,13 +32,22 @@ build() {
}
check() {
+ # This test requires a running SSH server on localhost, with the
+ # current user being able to login without a password. Recommended
+ # procedure:
+ #
+ # 1. Setup sshd - make sure sftp subsystem is enabled
+ # 2. Ensure current user has a SSH key configured in ~/.ssh/config and
+ # ~/.ssh/authorized_keys
+ # 3. Test `ssh localhost`
+ # 4. Run `abuild check`
+
cd "$builddir"/output
python3 -m pytest test/
}
package() {
- cd "$builddir"
DESTDIR="$pkgdir" ninja -C output install
}
-sha512sums="6ba7be4bcad401d99fb864f105a6c8fc8b7c832d5b25f18cba27eee422fe65ee7bda8982466d624792a1fb21528c0cb078a59db48e93da4880a36aad7b506b0c sshfs-3.5.0.tar.xz"
+sha512sums="bd8bcd45dd9a5e9686c6fb442e877ffdb592ba0d3424d5dab84a955bfafb17e8666abefba6857467833f5b285842bdadd5a9b6c9e8128ac2e564c36df79aa570 sshfs-3.7.0.tar.xz"
diff --git a/user/startup-notification/APKBUILD b/user/startup-notification/APKBUILD
index a52e6b549..6cc59febc 100644
--- a/user/startup-notification/APKBUILD
+++ b/user/startup-notification/APKBUILD
@@ -13,12 +13,11 @@ makedepends="libsm-dev libx11-dev xcb-util-dev"
source="https://www.freedesktop.org/software/$pkgname/releases/$pkgname-$pkgver.tar.gz"
prepare() {
- cd "$builddir"
+ default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,12 +28,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/stdman/APKBUILD b/user/stdman/APKBUILD
new file mode 100644
index 000000000..1107b3c54
--- /dev/null
+++ b/user/stdman/APKBUILD
@@ -0,0 +1,25 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=stdman
+pkgver=2018.03.11
+pkgrel=0
+pkgdesc="Manual pages for the C++ standard library from cppreference.com"
+url="https://en.cppreference.com/w/"
+arch="noarch"
+options="!check" # No test suite, just documentation.
+license="CC-BY-SA-3.0 AND GFDL"
+depends=""
+makedepends=""
+subpackages=""
+source="stdman-$pkgver.tar.gz::https://github.com/jeaye/stdman/archive/$pkgver.tar.gz"
+
+build() {
+ ./configure \
+ --prefix=/usr
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="597117d1b3b101dae9e3aa600751fac73dd43b565d007beb939be29c3e4bce5b4715bb24bdce93f2547dd77a04f648cde69054591b791b6543ac074d88975987 stdman-2018.03.11.tar.gz"
diff --git a/user/step/APKBUILD b/user/step/APKBUILD
index 1173268c3..b2ebf0071 100644
--- a/user/step/APKBUILD
+++ b/user/step/APKBUILD
@@ -1,22 +1,21 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=step
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Interactive physics simulation"
url="https://www.kde.org/applications/education/step/"
arch="all"
license="GPL-2.0-only"
-depends=""
+depends="shared-mime-info"
makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtdeclarative-dev
kdoctools-dev qt5-qtsvg-dev kcrash-dev khtml-dev kconfig-dev eigen-dev
kdelibs4support-dev knewstuff-dev kplotting-dev gsl-dev
libqalculate-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/step-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/step-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DEIGEN3_INCLUDE_DIR=/usr/include/eigen3 \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="5ac3ab33d48aa4d151ea7152a380aba95eabc7887400d20fe50392a6c18a5017b162208c47d8de6d019e8a462608a2f4da3bacaa64cbc966770971b6a55b1b82 step-18.12.3.tar.xz"
+sha512sums="329fdfd99f898bfed3f783a86fdfd305c55a925910c5c5ea66ea90ddf107f808815ada604aa1069d0ce40c3bdafb46ea3f1b253675ec9bcbd7dc55e3856a2552 step-22.04.2.tar.xz"
diff --git a/user/stow/APKBUILD b/user/stow/APKBUILD
index dcb81dc09..4f203e91f 100644
--- a/user/stow/APKBUILD
+++ b/user/stow/APKBUILD
@@ -1,20 +1,19 @@
# Contributor: Stefan Wagner <stw@bit-strickerei.de>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=stow
-pkgver=2.2.2
+pkgver=2.3.1
pkgrel=0
pkgdesc="Manage installation of multiple softwares in the same directory tree"
url="https://www.gnu.org/software/stow/"
arch="noarch"
-license="GPL-2.0-only"
+license="GPL-3.0+"
depends="perl"
-makedepends="perl-test-output"
checkdepends="perl-io-stringy"
+makedepends="perl-test-output"
subpackages="$pkgname-doc"
source="https://ftp.gnu.org/pub/gnu/$pkgname/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--prefix=/usr \
--mandir=/usr/share/man \
@@ -23,15 +22,13 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
rm "$pkgdir"/usr/share/doc/stow/manual.pdf
rm "$pkgdir"/usr/share/doc/stow/version.texi
}
-sha512sums="8a3e5da6b5cb4c1ee1b512bae5a9859f83659d5de05f7a9af1dd09df2a32f6b8c6d43b79736db91232c43621d542041d4ef92eb088925796adad0676f200a9b5 stow-2.2.2.tar.gz"
+sha512sums="e9a7de1a6f10eaf7cdbe6737e0a8be1498e2eac46b6c57e65b83759b061efd1c0db45f7cba123e35428307e3aebe5baef9ea8bd4b5eb6ec5e1b159117a760441 stow-2.3.1.tar.gz"
diff --git a/user/strongswan/0205-ike-Adhere-to-IKE_SA-limit-when-checking-out-by-conf.patch b/user/strongswan/0205-ike-Adhere-to-IKE_SA-limit-when-checking-out-by-conf.patch
deleted file mode 100644
index cc14dab02..000000000
--- a/user/strongswan/0205-ike-Adhere-to-IKE_SA-limit-when-checking-out-by-conf.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-From 5a5b26a7dce4c112f62882cfe16dc37659d766e8 Mon Sep 17 00:00:00 2001
-From: Tobias Brunner <tobias@strongswan.org>
-Date: Fri, 17 Jul 2015 11:53:58 +0200
-Subject: [PATCH 1/5] ike: Adhere to IKE_SA limit when checking out by config
-
-This prevents new SAs from getting created if we hit the global IKE_SA
-limit (we still allow checkout_new(), which is used for rekeying).
----
- src/libcharon/sa/ike_sa_manager.c | 71 ++++++++++++++++++++-------------------
- 1 file changed, 37 insertions(+), 34 deletions(-)
-
-diff --git a/src/libcharon/sa/ike_sa_manager.c b/src/libcharon/sa/ike_sa_manager.c
-index ce44207..37d49da 100644
---- a/src/libcharon/sa/ike_sa_manager.c
-+++ b/src/libcharon/sa/ike_sa_manager.c
-@@ -1419,48 +1419,51 @@ METHOD(ike_sa_manager_t, checkout_by_config, ike_sa_t*,
-
- DBG2(DBG_MGR, "checkout IKE_SA by config");
-
-- if (!this->reuse_ikesa && peer_cfg->get_ike_version(peer_cfg) != IKEV1)
-- { /* IKE_SA reuse disabled by config (not possible for IKEv1) */
-- ike_sa = checkout_new(this, peer_cfg->get_ike_version(peer_cfg), TRUE);
-- charon->bus->set_sa(charon->bus, ike_sa);
-- goto out;
-- }
--
-- enumerator = create_table_enumerator(this);
-- while (enumerator->enumerate(enumerator, &entry, &segment))
-+ if (this->reuse_ikesa || peer_cfg->get_ike_version(peer_cfg) == IKEV1)
- {
-- if (!wait_for_entry(this, entry, segment))
-+ enumerator = create_table_enumerator(this);
-+ while (enumerator->enumerate(enumerator, &entry, &segment))
- {
-- continue;
-- }
-- if (entry->ike_sa->get_state(entry->ike_sa) == IKE_DELETING ||
-- entry->ike_sa->get_state(entry->ike_sa) == IKE_REKEYED)
-- { /* skip IKE_SAs which are not usable, wake other waiting threads */
-- entry->condvar->signal(entry->condvar);
-- continue;
-- }
--
-- current_peer = entry->ike_sa->get_peer_cfg(entry->ike_sa);
-- if (current_peer && current_peer->equals(current_peer, peer_cfg))
-- {
-- current_ike = current_peer->get_ike_cfg(current_peer);
-- if (current_ike->equals(current_ike, peer_cfg->get_ike_cfg(peer_cfg)))
-+ if (!wait_for_entry(this, entry, segment))
- {
-- entry->checked_out = thread_current();
-- ike_sa = entry->ike_sa;
-- DBG2(DBG_MGR, "found existing IKE_SA %u with a '%s' config",
-- ike_sa->get_unique_id(ike_sa),
-- current_peer->get_name(current_peer));
-- break;
-+ continue;
- }
-+ if (entry->ike_sa->get_state(entry->ike_sa) == IKE_DELETING ||
-+ entry->ike_sa->get_state(entry->ike_sa) == IKE_REKEYED)
-+ { /* skip IKE_SAs which are not usable, wake other waiting threads */
-+ entry->condvar->signal(entry->condvar);
-+ continue;
-+ }
-+ current_peer = entry->ike_sa->get_peer_cfg(entry->ike_sa);
-+ if (current_peer && current_peer->equals(current_peer, peer_cfg))
-+ {
-+ current_ike = current_peer->get_ike_cfg(current_peer);
-+ if (current_ike->equals(current_ike,
-+ peer_cfg->get_ike_cfg(peer_cfg)))
-+ {
-+ entry->checked_out = thread_current();
-+ ike_sa = entry->ike_sa;
-+ DBG2(DBG_MGR, "found existing IKE_SA %u with a '%s' config",
-+ ike_sa->get_unique_id(ike_sa),
-+ current_peer->get_name(current_peer));
-+ break;
-+ }
-+ }
-+ /* other threads might be waiting for this entry */
-+ entry->condvar->signal(entry->condvar);
- }
-- /* other threads might be waiting for this entry */
-- entry->condvar->signal(entry->condvar);
-+ enumerator->destroy(enumerator);
- }
-- enumerator->destroy(enumerator);
-
- if (!ike_sa)
-- { /* no IKE_SA using such a config, hand out a new */
-+ { /* no IKE_SA using such a config, or reuse disabled, hand out a new */
-+ if (this->ikesa_limit &&
-+ this->public.get_count(&this->public) >= this->ikesa_limit)
-+ {
-+ DBG1(DBG_MGR, "IKE_SA creation failed, hitting IKE_SA limit (%u)",
-+ this->ikesa_limit);
-+ return NULL;
-+ }
- ike_sa = checkout_new(this, peer_cfg->get_ike_version(peer_cfg), TRUE);
- }
- charon->bus->set_sa(charon->bus, ike_sa);
---
-2.5.0
-
diff --git a/user/strongswan/1001-charon-add-optional-source-and-remote-overrides-for-.patch b/user/strongswan/1001-charon-add-optional-source-and-remote-overrides-for-.patch
deleted file mode 100644
index d9aea3c4d..000000000
--- a/user/strongswan/1001-charon-add-optional-source-and-remote-overrides-for-.patch
+++ /dev/null
@@ -1,597 +0,0 @@
-From 460e0f52d88433071b27603e47995517514ef8b9 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
-Date: Mon, 21 Sep 2015 13:41:58 +0300
-Subject: [PATCH] charon: add optional source and remote overrides for initiate
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-This introduces support for specifying optional IKE SA specific
-source and remote address for child sa initiation. This allows
-to initiate wildcard connection for known address via vici.
-
-In addition this allows impler implementation of trap-any patches
-and is a prerequisite for dmvpn support.
-
-Signed-off-by: Timo Teräs <timo.teras@iki.fi>
----
- src/charon-cmd/cmd/cmd_connection.c | 2 +-
- src/charon-nm/nm/nm_service.c | 2 +-
- src/libcharon/control/controller.c | 43 +++++++++++++++-
- src/libcharon/control/controller.h | 3 ++
- src/libcharon/plugins/stroke/stroke_control.c | 5 +-
- src/libcharon/plugins/vici/vici_config.c | 2 +-
- src/libcharon/plugins/vici/vici_control.c | 63 ++++++++++++++++++++----
- src/libcharon/processing/jobs/start_action_job.c | 2 +-
- src/libcharon/sa/ike_sa_manager.c | 51 ++++++++++++++++++-
- src/libcharon/sa/ike_sa_manager.h | 8 ++-
- src/libcharon/sa/trap_manager.c | 45 +++++++----------
- src/swanctl/commands/initiate.c | 40 ++++++++++++++-
- 12 files changed, 218 insertions(+), 48 deletions(-)
-
-diff --git a/src/charon-cmd/cmd/cmd_connection.c b/src/charon-cmd/cmd/cmd_connection.c
-index 71df92f7e..13b31de8a 100644
---- a/src/charon-cmd/cmd/cmd_connection.c
-+++ b/src/charon-cmd/cmd/cmd_connection.c
-@@ -436,7 +436,7 @@ static job_requeue_t initiate(private_cmd_connection_t *this)
- child_cfg = create_child_cfg(this, peer_cfg);
-
- if (charon->controller->initiate(charon->controller, peer_cfg, child_cfg,
-- controller_cb_empty, NULL, 0, FALSE) != SUCCESS)
-+ NULL, NULL, controller_cb_empty, NULL, 0, FALSE) != SUCCESS)
- {
- terminate(pid);
- }
-diff --git a/src/charon-nm/nm/nm_service.c b/src/charon-nm/nm/nm_service.c
-index 571c0edba..e7922cf4d 100644
---- a/src/charon-nm/nm/nm_service.c
-+++ b/src/charon-nm/nm/nm_service.c
-@@ 6220,7 +622,7 @@ static gboolean connect_(NMVPNPlugin *plugin, NMConnection *connection,
- * Prepare IKE_SA
- */
- ike_sa = charon->ike_sa_manager->checkout_by_config(charon->ike_sa_manager,
-- peer_cfg);
-+ peer_cfg, NULL, NULL);
- if (!ike_sa)
- {
- peer_cfg->destroy(peer_cfg);
-diff --git a/src/libcharon/control/controller.c b/src/libcharon/control/controller.c
-index 8e7816b39..7d7b3bcbc 100644
---- a/src/libcharon/control/controller.c
-+++ b/src/libcharon/control/controller.c
-@@ -15,6 +15,28 @@
- * for more details.
- */
-
-+/*
-+ * Copyright (C) 2014 Timo Teräs <timo.teras@iki.fi>
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a copy
-+ * of this software and associated documentation files (the "Software"), to deal
-+ * in the Software without restriction, including without limitation the rights
-+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-+ * copies of the Software, and to permit persons to whom the Software is
-+ * furnished to do so, subject to the following conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be included in
-+ * all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
- #include "controller.h"
-
- #include <sys/types.h>
-@@ -103,6 +125,16 @@ struct interface_listener_t {
- ike_sa_t *ike_sa;
-
- /**
-+ * Our host hint.
-+ */
-+ host_t *my_host;
-+
-+ /**
-+ * Other host hint.
-+ */
-+ host_t *other_host;
-+
-+ /**
- * unique ID, used for various methods
- */
- uint32_t id;
-@@ -409,9 +441,14 @@ METHOD(job_t, initiate_execute, job_requeue_t,
- ike_sa_t *ike_sa;
- interface_listener_t *listener = &job->listener;
- peer_cfg_t *peer_cfg = listener->peer_cfg;
-+ host_t *my_host = listener->my_host;
-+ host_t *other_host = listener->other_host;
-
- ike_sa = charon->ike_sa_manager->checkout_by_config(charon->ike_sa_manager,
-- peer_cfg);
-+ peer_cfg, my_host, other_host);
-+ DESTROY_IF(my_host);
-+ DESTROY_IF(other_host);
-+
- if (!ike_sa)
- {
- listener->child_cfg->destroy(listener->child_cfg);
-@@ -420,6 +457,7 @@ METHOD(job_t, initiate_execute, job_requeue_t,
- listener_done(listener);
- return JOB_REQUEUE_NONE;
- }
-+
- listener->lock->lock(listener->lock);
- listener->ike_sa = ike_sa;
- listener->lock->unlock(listener->lock);
-@@ -492,6 +530,7 @@ METHOD(job_t, initiate_execute, job_requeue_t,
-
- METHOD(controller_t, initiate, status_t,
- private_controller_t *this, peer_cfg_t *peer_cfg, child_cfg_t *child_cfg,
-+ host_t *my_host, host_t *other_host,
- controller_cb_t callback, void *param, u_int timeout, bool limits)
- {
- interface_job_t *job;
-@@ -514,6 +553,8 @@ METHOD(controller_t, initiate, status_t,
- .status = FAILED,
- .child_cfg = child_cfg,
- .peer_cfg = peer_cfg,
-+ .my_host = my_host ? my_host->clone(my_host) : NULL,
-+ .other_host = other_host ? other_host->clone(other_host) : NULL,
- .lock = spinlock_create(),
- .limits = limits,
- },
-diff --git a/src/libcharon/control/controller.h b/src/libcharon/control/controller.h
-index 9524f53b9..7c51ba4ca 100644
---- a/src/libcharon/control/controller.h
-+++ b/src/libcharon/control/controller.h
-@@ -79,6 +79,8 @@ struct controller_t {
- *
- * @param peer_cfg peer_cfg to use for IKE_SA setup
- * @param child_cfg child_cfg to set up CHILD_SA from
-+ * @param my_host optional address hint for source
-+ * @param other_host optional address hint for destination
- * @param cb logging callback
- * @param param parameter to include in each call of cb
- * @param timeout timeout in ms to wait for callbacks, 0 to disable
-@@ -92,6 +94,7 @@ struct controller_t {
- */
- status_t (*initiate)(controller_t *this,
- peer_cfg_t *peer_cfg, child_cfg_t *child_cfg,
-+ host_t *my_host, host_t *other_host,
- controller_cb_t callback, void *param, u_int timeout,
- bool limits);
-
-diff --git a/src/libcharon/plugins/stroke/stroke_control.c b/src/libcharon/plugins/stroke/stroke_control.c
-index ee8306772..0736a6427 100644
---- a/src/libcharon/plugins/stroke/stroke_control.c
-+++ b/src/libcharon/plugins/stroke/stroke_control.c
-@@ -108,7 +108,7 @@ static void charon_initiate(private_stroke_control_t *this, peer_cfg_t *peer_cfg
- if (msg->output_verbosity < 0)
- {
- charon->controller->initiate(charon->controller, peer_cfg, child_cfg,
-- NULL, NULL, 0, FALSE);
-+ NULL, NULL, NULL, NULL, 0, FALSE);
- }
- else
- {
-@@ -116,7 +116,8 @@ static void charon_initiate(private_stroke_control_t *this, peer_cfg_t *peer_cfg
- status_t status;
-
- status = charon->controller->initiate(charon->controller,
-- peer_cfg, child_cfg, (controller_cb_t)stroke_log,
-+ peer_cfg, child_cfg, NULL, NULL,
-+ (controller_cb_t)stroke_log,
- &info, this->timeout, FALSE);
- switch (status)
- {
-diff --git a/src/libcharon/plugins/vici/vici_config.c b/src/libcharon/plugins/vici/vici_config.c
-index 12497ec5e..ba954e5cb 100644
---- a/src/libcharon/plugins/vici/vici_config.c
-+++ b/src/libcharon/plugins/vici/vici_config.c
-@@ -1978,7 +1978,7 @@ static void run_start_action(private_vici_config_t *this, peer_cfg_t *peer_cfg,
- DBG1(DBG_CFG, "initiating '%s'", child_cfg->get_name(child_cfg));
- charon->controller->initiate(charon->controller,
- peer_cfg->get_ref(peer_cfg), child_cfg->get_ref(child_cfg),
-- NULL, NULL, 0, FALSE);
-+ NULL, NULL, NULL, NULL, 0, FALSE);
- break;
- case ACTION_ROUTE:
- DBG1(DBG_CFG, "installing '%s'", child_cfg->get_name(child_cfg));
-diff --git a/src/libcharon/plugins/vici/vici_control.c b/src/libcharon/plugins/vici/vici_control.c
-index afee649f7..94bb2eecb 100644
---- a/src/libcharon/plugins/vici/vici_control.c
-+++ b/src/libcharon/plugins/vici/vici_control.c
-@@ -16,6 +16,28 @@
- * for more details.
- */
-
-+/*
-+ * Copyright (C) 2014 Timo Teräs <timo.teras@iki.fi>
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a copy
-+ * of this software and associated documentation files (the "Software"), to deal
-+ * in the Software without restriction, including without limitation the rights
-+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-+ * copies of the Software, and to permit persons to whom the Software is
-+ * furnished to do so, subject to the following conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be included in
-+ * all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
- #include "vici_control.h"
- #include "vici_builder.h"
-
-@@ -169,9 +191,11 @@ static child_cfg_t* find_child_cfg(char *name, char *pname, peer_cfg_t **out)
- CALLBACK(initiate, vici_message_t*,
- private_vici_control_t *this, char *name, u_int id, vici_message_t *request)
- {
-+ vici_message_t* msg;
- child_cfg_t *child_cfg = NULL;
- peer_cfg_t *peer_cfg;
-- char *child, *ike;
-+ host_t *my_host = NULL, *other_host = NULL;
-+ char *child, *ike, *my_host_str, *other_host_str;
- int timeout;
- bool limits;
- controller_cb_t log_cb = NULL;
-@@ -185,6 +209,8 @@ CALLBACK(initiate, vici_message_t*,
- timeout = request->get_int(request, 0, "timeout");
- limits = request->get_bool(request, FALSE, "init-limits");
- log.level = request->get_int(request, 1, "loglevel");
-+ my_host_str = request->get_str(request, NULL, "my-host");
-+ other_host_str = request->get_str(request, NULL, "other-host");
-
- if (!child)
- {
-@@ -195,28 +221,47 @@ CALLBACK(initiate, vici_message_t*,
- log_cb = (controller_cb_t)log_vici;
- }
-
-- DBG1(DBG_CFG, "vici initiate '%s'", child);
-+ if (my_host_str)
-+ {
-+ my_host = host_create_from_string(my_host_str, 0);
-+ }
-+ if (other_host_str)
-+ {
-+ other_host = host_create_from_string(other_host_str, 0);
-+ }
-+
-+ DBG1(DBG_CFG, "vici initiate '%s', me %H, other %H, limits %d", child, my_host, other_host, limits);
-
- child_cfg = find_child_cfg(child, ike, &peer_cfg);
- if (!child_cfg)
- {
-- return send_reply(this, "CHILD_SA config '%s' not found", child);
-+ msg = send_reply(this, "CHILD_SA config '%s' not found", child);
-+ goto ret;
- }
-- switch (charon->controller->initiate(charon->controller, peer_cfg,
-- child_cfg, log_cb, &log, timeout, limits))
-+ switch (charon->controller->initiate(charon->controller,
-+ peer_cfg, child_cfg, my_host, other_host,
-+ log_cb, &log, timeout, limits))
- {
- case SUCCESS:
-- return send_reply(this, NULL);
-+ msg = send_reply(this, NULL);
-+ break;
- case OUT_OF_RES:
-- return send_reply(this, "CHILD_SA '%s' not established after %dms",
-+ msg = send_reply(this, "CHILD_SA '%s' not established after %dms",
- child, timeout);
-+ break;
- case INVALID_STATE:
-- return send_reply(this, "establishing CHILD_SA '%s' not possible "
-+ msg = send_reply(this, "establishing CHILD_SA '%s' not possible "
- "at the moment due to limits", child);
-+ break;
- case FAILED:
- default:
-- return send_reply(this, "establishing CHILD_SA '%s' failed", child);
-+ msg = send_reply(this, "establishing CHILD_SA '%s' failed", child);
-+ break;
- }
-+ret:
-+ if (my_host) my_host->destroy(my_host);
-+ if (other_host) other_host->destroy(other_host);
-+ return msg;
- }
-
- CALLBACK(terminate, vici_message_t*,
-diff --git a/src/libcharon/processing/jobs/start_action_job.c b/src/libcharon/processing/jobs/start_action_job.c
-index 654ec6abe..3d5a48cb8 100644
---- a/src/libcharon/processing/jobs/start_action_job.c
-+++ b/src/libcharon/processing/jobs/start_action_job.c
-@@ -61,7 +61,7 @@ METHOD(job_t, execute, job_requeue_t,
- charon->controller->initiate(charon->controller,
- peer_cfg->get_ref(peer_cfg),
- child_cfg->get_ref(child_cfg),
-- NULL, NULL, 0, FALSE);
-+ NULL, NULL, NULL, NULL, 0, FALSE);
- break;
- case ACTION_ROUTE:
- DBG1(DBG_JOB, "start action: route '%s'", name);
-diff --git a/src/libcharon/sa/ike_sa_manager.c b/src/libcharon/sa/ike_sa_manager.c
-index 3ee233c1f..def2a6f1b 100644
---- a/src/libcharon/sa/ike_sa_manager.c
-+++ b/src/libcharon/sa/ike_sa_manager.c
-@@ -17,6 +17,28 @@
- * for more details.
- */
-
-+/*
-+ * Copyright (C) 2014 Timo Teräs <timo.teras@iki.fi>
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a copy
-+ * of this software and associated documentation files (the "Software"), to deal
-+ * in the Software without restriction, including without limitation the rights
-+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-+ * copies of the Software, and to permit persons to whom the Software is
-+ * furnished to do so, subject to the following conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be included in
-+ * all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
- #include <string.h>
- #include <inttypes.h>
-
-@@ -1408,7 +1430,8 @@ out:
- }
-
- METHOD(ike_sa_manager_t, checkout_by_config, ike_sa_t*,
-- private_ike_sa_manager_t *this, peer_cfg_t *peer_cfg)
-+ private_ike_sa_manager_t *this, peer_cfg_t *peer_cfg,
-+ host_t *my_host, host_t *other_host)
- {
- enumerator_t *enumerator;
- entry_t *entry;
-@@ -1417,7 +1440,17 @@ METHOD(ike_sa_manager_t, checkout_by_config, ike_sa_t*,
- ike_cfg_t *current_ike;
- u_int segment;
-
-- DBG2(DBG_MGR, "checkout IKE_SA by config");
-+ if (my_host && my_host->get_port(my_host) == 0)
-+ {
-+ my_host->set_port(my_host, IKEV2_UDP_PORT);
-+ }
-+ if (other_host && other_host->get_port(other_host) == 0)
-+ {
-+ other_host->set_port(other_host, IKEV2_UDP_PORT);
-+ }
-+
-+ DBG2(DBG_MGR, "checkout IKE_SA by config '%s', me %H, other %H",
-+ peer_cfg->get_name(peer_cfg), my_host, other_host);
-
- if (this->reuse_ikesa || peer_cfg->get_ike_version(peer_cfg) == IKEV1)
- {
-@@ -1434,6 +1457,16 @@ METHOD(ike_sa_manager_t, checkout_by_config, ike_sa_t*,
- entry->condvar->signal(entry->condvar);
- continue;
- }
-+
-+ if (my_host && !my_host->ip_equals(my_host, entry->ike_sa->get_my_host(entry->ike_sa)))
-+ {
-+ continue;
-+ }
-+ if (other_host && !other_host->ip_equals(other_host, entry->ike_sa->get_other_host(entry->ike_sa)))
-+ {
-+ continue;
-+ }
-+
- current_peer = entry->ike_sa->get_peer_cfg(entry->ike_sa);
- if (current_peer && current_peer->equals(current_peer, peer_cfg))
- {
-@@ -1465,6 +1508,10 @@ METHOD(ike_sa_manager_t, checkout_by_config, ike_sa_t*,
- return NULL;
- }
- ike_sa = checkout_new(this, peer_cfg->get_ike_version(peer_cfg), TRUE);
-+ if (my_host || other_host)
-+ {
-+ ike_sa->update_hosts(ike_sa, my_host, other_host, TRUE);
-+ }
- }
- charon->bus->set_sa(charon->bus, ike_sa);
-
-diff --git a/src/libcharon/sa/ike_sa_manager.h b/src/libcharon/sa/ike_sa_manager.h
-index 4298c54e2..47d6e6a37 100644
---- a/src/libcharon/sa/ike_sa_manager.h
-+++ b/src/libcharon/sa/ike_sa_manager.h
-@@ -93,7 +93,8 @@ struct ike_sa_manager_t {
- ike_sa_t* (*checkout_by_message) (ike_sa_manager_t* this, message_t *message);
-
- /**
-- * Checkout an IKE_SA for initiation by a peer_config.
-+ * Checkout an IKE_SA for initiation by a peer_config and optional
-+ * source and remote host addresses.
- *
- * To initiate, a CHILD_SA may be established within an existing IKE_SA.
- * This call checks for an existing IKE_SA by comparing the configuration.
-@@ -103,10 +104,13 @@ struct ike_sa_manager_t {
- * the found IKE_SA is in the DELETING state.
- *
- * @param peer_cfg configuration used to find an existing IKE_SA
-+ * @param my_host source host address for wildcard peer_cfg
-+ * @param other_host remote host address for wildcard peer_cfg
- * @return checked out/created IKE_SA
- */
- ike_sa_t* (*checkout_by_config) (ike_sa_manager_t* this,
-- peer_cfg_t *peer_cfg);
-+ peer_cfg_t *peer_cfg,
-+ host_t *my_host, host_t *other_host);
-
- /**
- * Check for duplicates of the given IKE_SA.
-diff --git a/src/libcharon/sa/trap_manager.c b/src/libcharon/sa/trap_manager.c
-index 40a0682f2..ea79d95ae 100644
---- a/src/libcharon/sa/trap_manager.c
-+++ b/src/libcharon/sa/trap_manager.c
-@@ -421,7 +421,7 @@ METHOD(trap_manager_t, acquire, void,
- peer_cfg_t *peer;
- child_cfg_t *child;
- ike_sa_t *ike_sa;
-- host_t *host;
-+ host_t *host, *my_host = NULL, *other_host = NULL;
- bool wildcard, ignore = FALSE;
-
- this->lock->read_lock(this->lock);
-@@ -497,36 +497,27 @@ METHOD(trap_manager_t, acquire, void,
- this->lock->unlock(this->lock);
-
- if (wildcard)
-- { /* the peer config would match IKE_SAs with other peers */
-- ike_sa = charon->ike_sa_manager->checkout_new(charon->ike_sa_manager,
-- peer->get_ike_version(peer), TRUE);
-- if (ike_sa)
-- {
-- ike_cfg_t *ike_cfg;
-- uint16_t port;
-- uint8_t mask;
--
-- ike_sa->set_peer_cfg(ike_sa, peer);
-- ike_cfg = ike_sa->get_ike_cfg(ike_sa);
-+ {
-+ ike_cfg_t *ike_cfg;
-+ uint16_t port;
-+ uint8_t mask;
-
-- port = ike_cfg->get_other_port(ike_cfg);
-- dst->to_subnet(dst, &host, &mask);
-- host->set_port(host, port);
-- ike_sa->set_other_host(ike_sa, host);
-+ ike_cfg = peer->get_ike_cfg(peer);
-
-- port = ike_cfg->get_my_port(ike_cfg);
-- src->to_subnet(src, &host, &mask);
-- host->set_port(host, port);
-- ike_sa->set_my_host(ike_sa, host);
-+ port = ike_cfg->get_other_port(ike_cfg);
-+ dst->to_subnet(dst, &other_host, &mask);
-+ other_host->set_port(other_host, port);
-
-- charon->bus->set_sa(charon->bus, ike_sa);
-- }
-- }
-- else
-- {
-- ike_sa = charon->ike_sa_manager->checkout_by_config(
-- charon->ike_sa_manager, peer);
-+ port = ike_cfg->get_my_port(ike_cfg);
-+ src->to_subnet(src, &my_host, &mask);
-+ my_host->set_port(my_host, port);
- }
-+ ike_sa = charon->ike_sa_manager->checkout_by_config(
-+ charon->ike_sa_manager, peer,
-+ my_host, other_host);
-+ DESTROY_IF(my_host);
-+ DESTROY_IF(other_host);
-+
- if (ike_sa)
- {
- if (ike_sa->get_peer_cfg(ike_sa) == NULL)
-diff --git a/src/swanctl/commands/initiate.c b/src/swanctl/commands/initiate.c
-index 8e452a6f6..b27bb8194 100644
---- a/src/swanctl/commands/initiate.c
-+++ b/src/swanctl/commands/initiate.c
-@@ -13,6 +13,28 @@
- * for more details.
- */
-
-+/*
-+ * Copyright (C) 2014 Timo Teräs <timo.teras@iki.fi>
-+ *
-+ * Permission is hereby granted, free of charge, to any person obtaining a copy
-+ * of this software and associated documentation files (the "Software"), to deal
-+ * in the Software without restriction, including without limitation the rights
-+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-+ * copies of the Software, and to permit persons to whom the Software is
-+ * furnished to do so, subject to the following conditions:
-+ *
-+ * The above copyright notice and this permission notice shall be included in
-+ * all copies or substantial portions of the Software.
-+ *
-+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
-+ * THE SOFTWARE.
-+ */
-+
- #include "command.h"
-
- #include <errno.h>
-@@ -37,7 +59,7 @@ static int initiate(vici_conn_t *conn)
- vici_req_t *req;
- vici_res_t *res;
- command_format_options_t format = COMMAND_FORMAT_NONE;
-- char *arg, *child = NULL, *ike = NULL;
-+ char *arg, *child = NULL, *ike = NULL, *my_host = NULL, *other_host = NULL;
- int ret = 0, timeout = 0, level = 1;
-
- while (TRUE)
-@@ -64,6 +86,12 @@ static int initiate(vici_conn_t *conn)
- case 'l':
- level = atoi(arg);
- continue;
-+ case 'S':
-+ my_host = arg;
-+ continue;
-+ case 'R':
-+ other_host = arg;
-+ continue;
- case EOF:
- break;
- default:
-@@ -87,6 +115,14 @@ static int initiate(vici_conn_t *conn)
- {
- vici_add_key_valuef(req, "ike", "%s", ike);
- }
-+ if (my_host)
-+ {
-+ vici_add_key_valuef(req, "my-host", "%s", my_host);
-+ }
-+ if (other_host)
-+ {
-+ vici_add_key_valuef(req, "other-host", "%s", other_host);
-+ }
- if (timeout)
- {
- vici_add_key_valuef(req, "timeout", "%d", timeout * 1000);
-@@ -133,6 +169,8 @@ static void __attribute__ ((constructor))reg()
- {"help", 'h', 0, "show usage information"},
- {"child", 'c', 1, "initate a CHILD_SA configuration"},
- {"ike", 'i', 1, "name of the connection to which the child belongs"},
-+ {"source", 'S', 1, "override source address"},
-+ {"remote", 'R', 1, "override remote address"},
- {"timeout", 't', 1, "timeout in seconds before detaching"},
- {"raw", 'r', 0, "dump raw response message"},
- {"pretty", 'P', 0, "dump raw response message in pretty print"},
---
-2.12.1
-
diff --git a/user/strongswan/1002-vici-send-certificates-for-ike-sa-events.patch b/user/strongswan/1002-vici-send-certificates-for-ike-sa-events.patch
deleted file mode 100644
index 94814e13d..000000000
--- a/user/strongswan/1002-vici-send-certificates-for-ike-sa-events.patch
+++ /dev/null
@@ -1,131 +0,0 @@
-From 61556ac61b9d7c564dfe13d5cf549a53f889ae36 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
-Date: Mon, 21 Sep 2015 13:42:05 +0300
-Subject: [PATCH] vici: send certificates for ike-sa events
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Signed-off-by: Timo Teräs <timo.teras@iki.fi>
----
- src/libcharon/plugins/vici/vici_query.c | 48 ++++++++++++++++++++++++++++-----
- 1 file changed, 41 insertions(+), 7 deletions(-)
-
-diff --git a/src/libcharon/plugins/vici/vici_query.c b/src/libcharon/plugins/vici/vici_query.c
-index c0f4e2de9..309a11c03 100644
---- a/src/libcharon/plugins/vici/vici_query.c
-+++ b/src/libcharon/plugins/vici/vici_query.c
-@@ -337,7 +337,7 @@ static void list_vips(private_vici_query_t *this, vici_builder_t *b,
- * List details of an IKE_SA
- */
- static void list_ike(private_vici_query_t *this, vici_builder_t *b,
-- ike_sa_t *ike_sa, time_t now)
-+ ike_sa_t *ike_sa, time_t now, bool add_certs)
- {
- time_t t;
- ike_sa_id_t *id;
-@@ -345,6 +345,8 @@ static void list_ike(private_vici_query_t *this, vici_builder_t *b,
- proposal_t *proposal;
- uint16_t alg, ks;
- host_t *host;
-+ auth_cfg_t *auth_cfg;
-+ enumerator_t *enumerator;
-
- b->add_kv(b, "uniqueid", "%u", ike_sa->get_unique_id(ike_sa));
- b->add_kv(b, "version", "%u", ike_sa->get_version(ike_sa));
-@@ -354,11 +356,43 @@ static void list_ike(private_vici_query_t *this, vici_builder_t *b,
- b->add_kv(b, "local-host", "%H", host);
- b->add_kv(b, "local-port", "%d", host->get_port(host));
- b->add_kv(b, "local-id", "%Y", ike_sa->get_my_id(ike_sa));
-+ if (add_certs)
-+ {
-+ enumerator = ike_sa->create_auth_cfg_enumerator(ike_sa, TRUE);
-+ if (enumerator->enumerate(enumerator, &auth_cfg))
-+ {
-+ certificate_t *cert = auth_cfg->get(auth_cfg, AUTH_RULE_SUBJECT_CERT);
-+ chunk_t encoding;
-+
-+ if (cert && cert->get_encoding(cert, CERT_ASN1_DER, &encoding))
-+ {
-+ b->add(b, VICI_KEY_VALUE, "local-cert-data", encoding);
-+ free(encoding.ptr);
-+ }
-+ }
-+ enumerator->destroy(enumerator);
-+ }
-
- host = ike_sa->get_other_host(ike_sa);
- b->add_kv(b, "remote-host", "%H", host);
- b->add_kv(b, "remote-port", "%d", host->get_port(host));
- b->add_kv(b, "remote-id", "%Y", ike_sa->get_other_id(ike_sa));
-+ if (add_certs)
-+ {
-+ enumerator = ike_sa->create_auth_cfg_enumerator(ike_sa, FALSE);
-+ if (enumerator->enumerate(enumerator, &auth_cfg))
-+ {
-+ certificate_t *cert = auth_cfg->get(auth_cfg, AUTH_RULE_SUBJECT_CERT);
-+ chunk_t encoding;
-+
-+ if (cert && cert->get_encoding(cert, CERT_ASN1_DER, &encoding))
-+ {
-+ b->add(b, VICI_KEY_VALUE, "remote-cert-data", encoding);
-+ free(encoding.ptr);
-+ }
-+ }
-+ enumerator->destroy(enumerator);
-+ }
-
- eap = ike_sa->get_other_eap_id(ike_sa);
-
-@@ -476,7 +510,7 @@ CALLBACK(list_sas, vici_message_t*,
- b = vici_builder_create();
- b->begin_section(b, ike_sa->get_name(ike_sa));
-
-- list_ike(this, b, ike_sa, now);
-+ list_ike(this, b, ike_sa, now, TRUE);
-
- b->begin_section(b, "child-sas");
- csas = ike_sa->create_child_sa_enumerator(ike_sa);
-@@ -1624,7 +1658,7 @@ METHOD(listener_t, ike_updown, bool,
- }
-
- b->begin_section(b, ike_sa->get_name(ike_sa));
-- list_ike(this, b, ike_sa, now);
-+ list_ike(this, b, ike_sa, now, up);
- b->end_section(b);
-
- this->dispatcher->raise_event(this->dispatcher,
-@@ -1649,10 +1683,10 @@ METHOD(listener_t, ike_rekey, bool,
- b = vici_builder_create();
- b->begin_section(b, old->get_name(old));
- b->begin_section(b, "old");
-- list_ike(this, b, old, now);
-+ list_ike(this, b, old, now, TRUE);
- b->end_section(b);
- b->begin_section(b, "new");
-- list_ike(this, b, new, now);
-+ list_ike(this, b, new, now, TRUE);
- b->end_section(b);
- b->end_section(b);
-
-@@ -1682,7 +1716,7 @@ METHOD(listener_t, child_updown, bool,
- }
-
- b->begin_section(b, ike_sa->get_name(ike_sa));
-- list_ike(this, b, ike_sa, now);
-+ list_ike(this, b, ike_sa, now, up);
- b->begin_section(b, "child-sas");
-
- b->begin_section(b, child_sa->get_name(child_sa));
-@@ -1714,7 +1748,7 @@ METHOD(listener_t, child_rekey, bool,
- b = vici_builder_create();
-
- b->begin_section(b, ike_sa->get_name(ike_sa));
-- list_ike(this, b, ike_sa, now);
-+ list_ike(this, b, ike_sa, now, TRUE);
- b->begin_section(b, "child-sas");
-
- b->begin_section(b, old->get_name(old));
---
-2.12.1
-
diff --git a/user/strongswan/1003-vici-add-support-for-individual-sa-state-changes.patch b/user/strongswan/1003-vici-add-support-for-individual-sa-state-changes.patch
deleted file mode 100644
index 06dc121e8..000000000
--- a/user/strongswan/1003-vici-add-support-for-individual-sa-state-changes.patch
+++ /dev/null
@@ -1,159 +0,0 @@
-From 0e4f1118e68736bb96ae23f4c6cb85f2ebbc998d Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Timo=20Ter=C3=A4s?= <timo.teras@iki.fi>
-Date: Mon, 21 Sep 2015 13:42:11 +0300
-Subject: [PATCH] vici: add support for individual sa state changes
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Useful for monitoring and tracking full SA.
-
-Signed-off-by: Timo Teräs <timo.teras@iki.fi>
----
- src/libcharon/plugins/vici/vici_query.c | 105 ++++++++++++++++++++++++++++++++
- 1 file changed, 105 insertions(+)
-
-diff --git a/src/libcharon/plugins/vici/vici_query.c b/src/libcharon/plugins/vici/vici_query.c
-index 309a11c03..83a5daaa7 100644
---- a/src/libcharon/plugins/vici/vici_query.c
-+++ b/src/libcharon/plugins/vici/vici_query.c
-@@ -1624,8 +1624,16 @@ static void manage_commands(private_vici_query_t *this, bool reg)
- this->dispatcher->manage_event(this->dispatcher, "list-cert", reg);
- this->dispatcher->manage_event(this->dispatcher, "ike-updown", reg);
- this->dispatcher->manage_event(this->dispatcher, "ike-rekey", reg);
-+ this->dispatcher->manage_event(this->dispatcher, "ike-state-established", reg);
-+ this->dispatcher->manage_event(this->dispatcher, "ike-state-destroying", reg);
- this->dispatcher->manage_event(this->dispatcher, "child-updown", reg);
- this->dispatcher->manage_event(this->dispatcher, "child-rekey", reg);
-+ this->dispatcher->manage_event(this->dispatcher, "child-state-installing", reg);
-+ this->dispatcher->manage_event(this->dispatcher, "child-state-installed", reg);
-+ this->dispatcher->manage_event(this->dispatcher, "child-state-updating", reg);
-+ this->dispatcher->manage_event(this->dispatcher, "child-state-rekeying", reg);
-+ this->dispatcher->manage_event(this->dispatcher, "child-state-rekeyed", reg);
-+ this->dispatcher->manage_event(this->dispatcher, "child-state-destroying", reg);
- manage_command(this, "list-sas", list_sas, reg);
- manage_command(this, "list-policies", list_policies, reg);
- manage_command(this, "list-conns", list_conns, reg);
-@@ -1696,6 +1704,45 @@ METHOD(listener_t, ike_rekey, bool,
- return TRUE;
- }
-
-+METHOD(listener_t, ike_state_change, bool,
-+ private_vici_query_t *this, ike_sa_t *ike_sa, ike_sa_state_t state)
-+{
-+ char *event;
-+ vici_builder_t *b;
-+ time_t now;
-+
-+ switch (state)
-+ {
-+ case IKE_ESTABLISHED:
-+ event = "ike-state-established";
-+ break;
-+ case IKE_DESTROYING:
-+ event = "ike-state-destroying";
-+ break;
-+ default:
-+ return TRUE;
-+ }
-+
-+ if (!this->dispatcher->has_event_listeners(this->dispatcher, event))
-+ {
-+ return TRUE;
-+ }
-+
-+ now = time_monotonic(NULL);
-+
-+ b = vici_builder_create();
-+ b->begin_section(b, ike_sa->get_name(ike_sa));
-+ list_ike(this, b, ike_sa, now, state != IKE_DESTROYING);
-+ b->begin_section(b, "child-sas");
-+ b->end_section(b);
-+ b->end_section(b);
-+
-+ this->dispatcher->raise_event(this->dispatcher,
-+ event, 0, b->finalize(b));
-+
-+ return TRUE;
-+}
-+
- METHOD(listener_t, child_updown, bool,
- private_vici_query_t *this, ike_sa_t *ike_sa, child_sa_t *child_sa, bool up)
- {
-@@ -1771,6 +1818,62 @@ METHOD(listener_t, child_rekey, bool,
- return TRUE;
- }
-
-+METHOD(listener_t, child_state_change, bool,
-+ private_vici_query_t *this, ike_sa_t *ike_sa, child_sa_t *child_sa, child_sa_state_t state)
-+{
-+ char *event;
-+ vici_builder_t *b;
-+ time_t now;
-+
-+ switch (state)
-+ {
-+ case CHILD_INSTALLING:
-+ event = "child-state-installing";
-+ break;
-+ case CHILD_INSTALLED:
-+ event = "child-state-installed";
-+ break;
-+ case CHILD_UPDATING:
-+ event = "child-state-updating";
-+ break;
-+ case CHILD_REKEYING:
-+ event = "child-state-rekeying";
-+ break;
-+ case CHILD_REKEYED:
-+ event = "child-state-rekeyed";
-+ break;
-+ case CHILD_DESTROYING:
-+ event = "child-state-destroying";
-+ break;
-+ default:
-+ return TRUE;
-+ }
-+
-+ if (!this->dispatcher->has_event_listeners(this->dispatcher, event))
-+ {
-+ return TRUE;
-+ }
-+
-+ now = time_monotonic(NULL);
-+
-+ b = vici_builder_create();
-+ b->begin_section(b, ike_sa->get_name(ike_sa));
-+ list_ike(this, b, ike_sa, now, state != CHILD_DESTROYING);
-+ b->begin_section(b, "child-sas");
-+
-+ b->begin_section(b, child_sa->get_name(child_sa));
-+ list_child(this, b, child_sa, now);
-+ b->end_section(b);
-+
-+ b->end_section(b);
-+ b->end_section(b);
-+
-+ this->dispatcher->raise_event(this->dispatcher,
-+ event, 0, b->finalize(b));
-+
-+ return TRUE;
-+}
-+
- METHOD(vici_query_t, destroy, void,
- private_vici_query_t *this)
- {
-@@ -1790,8 +1893,10 @@ vici_query_t *vici_query_create(vici_dispatcher_t *dispatcher)
- .listener = {
- .ike_updown = _ike_updown,
- .ike_rekey = _ike_rekey,
-+ .ike_state_change = _ike_state_change,
- .child_updown = _child_updown,
- .child_rekey = _child_rekey,
-+ .child_state_change = _child_state_change,
- },
- .destroy = _destroy,
- },
---
-2.12.1
-
diff --git a/user/strongswan/APKBUILD b/user/strongswan/APKBUILD
index 29390b652..0679774e1 100644
--- a/user/strongswan/APKBUILD
+++ b/user/strongswan/APKBUILD
@@ -2,8 +2,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Lee Starnes <lee@canned-death.us>
pkgname=strongswan
-pkgver=5.7.1
-_pkgver=${pkgver//_rc/rc}
+pkgver=5.9.13
pkgrel=0
pkgdesc="IPsec-based VPN solution focused on security and ease of use, supporting IKEv1/IKEv2 and MOBIKE"
url="https://www.strongswan.org/"
@@ -13,28 +12,30 @@ pkggroups="ipsec"
license="GPL-2.0 AND RSA-MD5 AND RSA-PKCS11 AND DES"
depends="iproute2"
depends_dev=""
+checkdepends="libexecinfo-dev"
makedepends="$depends_dev linux-headers python3 sqlite-dev openssl-dev curl-dev
gmp-dev libcap-dev"
-install="$pkgname.pre-install"
subpackages="$pkgname-doc $pkgname-dbg $pkgname-openrc"
-source="https://download.strongswan.org/$pkgname-$_pkgver.tar.bz2
- 0205-ike-Adhere-to-IKE_SA-limit-when-checking-out-by-conf.patch
- 1001-charon-add-optional-source-and-remote-overrides-for-.patch
- 1002-vici-send-certificates-for-ike-sa-events.patch
- 1003-vici-add-support-for-individual-sa-state-changes.patch
+install="$pkgname.pre-install"
+source="https://download.strongswan.org/$pkgname-$pkgver.tar.bz2
strongswan.initd
charon.initd
"
-builddir="$srcdir/$pkgname-$_pkgver"
# secfixes:
+# 5.9.12-r0:
+# - CVE-2023-41913
+# 5.9.11-r0:
+# - CVE-2023-26463
+# 5.9.8-r0:
+# - CVE-2022-40617
+# 5.9.5-r0:
+# - CVE-2021-45079
# 5.7.1-r0:
# - CVE-2018-17540
build() {
- cd "$builddir"
-
# notes about configuration:
# - try to keep options in ./configure --help order
# - apk depends on openssl, so we use that
@@ -88,21 +89,15 @@ build() {
}
check() {
- cd "$builddir"
- env TESTS_SUITES_EXCLUDE=printf make check
+ make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -m755 -D "$srcdir/$pkgname.initd" "$pkgdir/etc/init.d/$pkgname"
install -m755 -D "$srcdir/charon.initd" "$pkgdir/etc/init.d/charon"
}
-sha512sums="43102814434bee7c27a5956be59099cc4ffb9bb5b0d6382ce4c6a80d1d82ed6639f698f5f5544b9ca563554a344638c953525b0e2d39bc6b71b19055c80e07fc strongswan-5.7.1.tar.bz2
-193d845e2751c23d98cdf84134c7803f2e412197669c6d6c1c9974041608d154b85594ed3d9ffb923ca22a4d5926c7f2373787ddc7da47b52019e284a1d13211 0205-ike-Adhere-to-IKE_SA-limit-when-checking-out-by-conf.patch
-21db8f153f535ef13cc7c9c011f9b90b8c794e0072bd93fda6a0a56dc00d32d04e186b1a72a87a85613b7e511eed5cb96623abf0721c67dd5c96446db969a185 1001-charon-add-optional-source-and-remote-overrides-for-.patch
-f7d98fb99b4855e8bfbb7369292c170536b1987e717feeda71f64ab71b35538e7d462609a773c6a6ed08c8e6ee7a186df12e1ea7d64b9dac0b17d4c7af17dab3 1002-vici-send-certificates-for-ike-sa-events.patch
-a4235cd07e17ad3441dc391ded11ee9f4debdffa1e8218809731e73a545ca6fcdc0bb87239d41b1102b0b6719a4d31d43758972d2193ebe298b275285de2ce54 1003-vici-add-support-for-individual-sa-state-changes.patch
+sha512sums="a929c1fb2a5e7d3064f6cd0be76703198406dad981f4b345311a004c18aa3c12adcb49eb33705fe4c3c31daf556cef5906d8753f5d9fbff5a27b732f93d8f19f strongswan-5.9.13.tar.bz2
8b61e3ffbb39b837733e602ec329e626dc519bf7308d3d4192b497d18f38176789d23ef5afec51f8463ee1ddaf4d74546b965c03184132e217cbc27017e886c9 strongswan.initd
-1c44c801f66305c0331f76e580c0d60f1b7d5cd3cc371be55826b06c3899f542664628a912a7fb48626e34d864f72ca5dcd34b2f0d507c4f19c510d0047054c1 charon.initd"
+7182bed917585bce9749b4495ad64d3052d2999dbb505c34d568acd6df7b151232ec10c8efe12f0a07d0555ddfe01aad4e3b767b08f17a55ffcbedc57dc9d934 charon.initd"
diff --git a/user/strongswan/charon.initd b/user/strongswan/charon.initd
index 6f79679c0..7fda8d775 100644
--- a/user/strongswan/charon.initd
+++ b/user/strongswan/charon.initd
@@ -15,7 +15,7 @@ depend() {
start_post() {
ebegin "Loading ${name:-$RC_SVCNAME} configuration"
sleep 0.2
- swanctl --load-all &>/dev/null
+ swanctl --load-all >/dev/null 2>&1
eend $?
}
diff --git a/user/strongswan/strongswan.pre-install b/user/strongswan/strongswan.pre-install
index da43ede66..71663f7d2 100644
--- a/user/strongswan/strongswan.pre-install
+++ b/user/strongswan/strongswan.pre-install
@@ -1,6 +1,7 @@
#!/bin/sh
-addgroup -S ipsec 2>/dev/null
-adduser -S -D -H -h /var/empty -s /sbin/nologin -G ipsec -g ipsec ipsec 2>/dev/null
+groupadd -r ipsec 2>/dev/null
+useradd -c ipsec -s /sbin/nologin -g ipsec \
+ -m -d /var/empty -r ipsec 2>/dev/null
exit 0
diff --git a/user/subversion/APKBUILD b/user/subversion/APKBUILD
index 1d034aff3..48facf6d2 100644
--- a/user/subversion/APKBUILD
+++ b/user/subversion/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=subversion
-pkgver=1.11.1
+pkgver=1.14.2
pkgrel=0
pkgdesc="Version control system from 2000"
url="https://subversion.apache.org/"
@@ -13,14 +13,21 @@ depends=""
depends_dev="apr-dev apr-util-dev linux-headers"
makedepends="apr-dev apr-util-dev cyrus-sasl-dev db-dev dbus-dev file-dev
kdelibs4support-dev kwallet-dev libsecret-dev lz4-dev openssl-dev
- serf-dev sqlite-dev utf8proc-dev zlib-dev autoconf automake python3"
+ serf-dev sqlite-dev utf8proc-dev zlib-dev autoconf automake python3
+ perl-dev swig libtool"
subpackages="$pkgname-dev $pkgname-doc $pkgname-gnome $pkgname-kwallet
- $pkgname-lang"
-source="https://www-eu.apache.org/dist/subversion/subversion-$pkgver.tar.bz2
- apr-1.7.0.patch
+ $pkgname-pl $pkgname-lang"
+source="https://archive.apache.org/dist/$pkgname/$pkgname-$pkgver.tar.bz2
python3-bang.patch
"
+# secfixes:
+# 1.14.1-r0:
+# - CVE-2020-17525
+# 1.12.2-r0:
+# - CVE-2018-11782
+# - CVE-2019-0203
+
build() {
# this is only needed for autogen.sh
_PATH=$PATH
@@ -39,16 +46,29 @@ build() {
--sysconfdir=/etc \
--mandir=/usr/share/man \
--localstatedir=/var \
- --with-kwallet
+ --with-kwallet \
+ --with-swig
make
+
+ make swig-pl-lib
+ (cd subversion/bindings/swig/perl/native; perl Makefile.PL)
+ # need override LD_RUN_PATH with something valid, otherwise we get
+ # empty rpath which is not a good idea.
+ make -j1 -C subversion/bindings/swig/perl/native \
+ LD_RUN_PATH="/usr/lib" EXTRALIBS="-lapr-1"
}
check() {
make check
+ make check-swig-pl
}
package() {
- make DESTDIR="$pkgdir" -j1 install
+ make DESTDIR="$pkgdir" -j1 install install-swig-pl-lib
+
+ make pure_vendor_install -C subversion/bindings/swig/perl/native \
+ PERL_INSTALL_ROOT="$pkgdir"
+ find "$pkgdir" \( -name perllocal.pod -o -name .packlist \) -delete
}
gnome() {
@@ -64,6 +84,12 @@ kwallet() {
mv "$pkgdir"/usr/lib/libsvn_auth_kwallet* "$subpkgdir"/usr/lib/
}
-sha512sums="2d082f715bf592ffc6a19311a9320dbae2ff0ee126b0472ce1c3f10e9aee670f43d894889430e6d093620f7b69c611e9a26773bc7a2f8b599ec37540ecd84a8d subversion-1.11.1.tar.bz2
-71b22f08a972a51347af00f979c4ec540c5795b44f3ced07ab2fcf8b1294b59add945983af4a63815d9f5d3b0ba88c24320cf2ec21189bf48c0ec46c7c0b48cf apr-1.7.0.patch
+pl() {
+ pkgdesc="$pkgdesc (Perl bindings)"
+ install_if="$pkgname=$pkgver-r$pkgrel git"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/*perl* "$subpkgdir"/usr/lib/
+}
+
+sha512sums="20ada4688ca07d9fb8da4b7d53b5084568652a3b9418c65e688886bae950a16a3ff37710fcfc9c29ef14a89e75b2ceec4e9cf35d5876a7896ebc2b512cfb9ecc subversion-1.14.2.tar.bz2
1b96b791f70c2f6e05da8dbc9d42ccadf4603f25392c6676c4e30ecdb142ce74dd9b8dc27dc68b1cb461f4409d79c4c2aeed1d39a5a442d9349079a819358f5a python3-bang.patch"
diff --git a/user/subversion/apr-1.7.0.patch b/user/subversion/apr-1.7.0.patch
deleted file mode 100644
index a74e5e454..000000000
--- a/user/subversion/apr-1.7.0.patch
+++ /dev/null
@@ -1,18 +0,0 @@
---- subversion-1.11.1/build/ac-macros/swig.m4
-+++ subversion-1.11.1/build/ac-macros/swig.m4
-@@ -137,13 +137,13 @@
- AC_CACHE_CHECK([for apr_int64_t Python/C API format string],
- [svn_cv_pycfmt_apr_int64_t], [
- if test "x$svn_cv_pycfmt_apr_int64_t" = "x"; then
-- AC_EGREP_CPP([MaTcHtHiS +\"lld\" +EnDeNd],
-+ AC_EGREP_CPP([MaTcHtHiS +\"ll(\" *\")?d\" +EnDeNd],
- [#include <apr.h>
- MaTcHtHiS APR_INT64_T_FMT EnDeNd],
- [svn_cv_pycfmt_apr_int64_t="L"])
- fi
- if test "x$svn_cv_pycfmt_apr_int64_t" = "x"; then
-- AC_EGREP_CPP([MaTcHtHiS +\"ld\" +EnDeNd],r
-+ AC_EGREP_CPP([MaTcHtHiS +\"l(\" *\")?d\" +EnDeNd],r
- [#include <apr.h>
- MaTcHtHiS APR_INT64_T_FMT EnDeNd],
- [svn_cv_pycfmt_apr_int64_t="l"])
diff --git a/user/supertux/APKBUILD b/user/supertux/APKBUILD
new file mode 100644
index 000000000..4e6b1c20d
--- /dev/null
+++ b/user/supertux/APKBUILD
@@ -0,0 +1,48 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=supertux
+pkgver=0.6.3
+pkgrel=1
+pkgdesc="Platform game featuring Tux the Penugin"
+url="https://www.supertux.org/"
+arch="all"
+license="GPL-3.0+"
+depends=""
+makedepends="boost-dev cmake curl-dev glew-dev libogg-dev libvorbis-dev zlib-dev
+ libglvnd-dev openal-soft-dev physfs-dev sdl2-dev sdl2_image-dev doxygen
+ freetype-dev glm libpng-dev"
+subpackages="$pkgname-doc"
+source="https://github.com/SuperTux/supertux/releases/download/v$pkgver/SuperTux-v$pkgver-Source.tar.gz
+ find-sdl2.patch
+ cmake32.patch
+ zip-header.patch
+ "
+builddir="$srcdir"/SuperTux-v$pkgver-Source
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="c6540bab1b3befbd975756031c4587e5569d9613d9539dc829c728b574d1a4da92816d6a7e68947b32963cc13d9b8b52312701c199138640e9f89e5885433798 SuperTux-v0.6.3-Source.tar.gz
+9e229d837d8006d618320ef3f7465ef88f8903853ed1ef3e291373d25f8542010f7dad6c1c5859e857db48e1447337ddbed0619228f5eac6aba916b69567fd94 find-sdl2.patch
+c0e6cdd52e07e04ef67edc8b7f3d3c37dd2ffd35381b704b43512a01bbd0a5a35fbeae7ec225be8e4643dbcaac3eae427d7ea5217dc1e676f2991ee46f5bf513 cmake32.patch
+038a00697db1533154d1664a58516827d1574c3b79712c72e3bbb92b23943a9ac3a198e20705a7ca470eb34be605d5765ef2a4ebc53694e28543b609a2f2444b zip-header.patch"
diff --git a/user/supertux/cmake32.patch b/user/supertux/cmake32.patch
new file mode 100644
index 000000000..bc31de62c
--- /dev/null
+++ b/user/supertux/cmake32.patch
@@ -0,0 +1,22 @@
+There is no reason to special-case finding SDL2 for 32-bit, and it doesn't
+work effectively anyway.
+
+--- SuperTux-v0.6.3-Source/CMakeLists.txt.old 2021-12-22 23:01:57.000000000 +0000
++++ SuperTux-v0.6.3-Source/CMakeLists.txt 2022-12-04 00:59:27.057071029 +0000
+@@ -232,16 +232,6 @@
+ find_library(SDL2_LIBRARIES SDL2)
+ find_library(SDL2IMAGE_LIBRARIES SDL2_image)
+ message(STATUS "SDL2_INCLUDE_DIR is ${SDL2_INCLUDE_DIRS}")
+- elseif (CMAKE_SIZEOF_VOID_P EQUAL 4)
+- # 32-bit
+- find_library(SDL2_LIBRARIES SDL2)
+- find_library(SDL2IMAGE_LIBRARIES SDL2_image)
+- find_path(SDL2_INCLUDE_DIRS SDL2/SDL.h)
+- find_path(SDL2IMAGE_INCLUDE_DIRS SDL2/SDL_image.h)
+- set(SDL2_INCLUDE_DIRS ${SDL2_INCLUDE_DIRS}/SDL2)
+- set(SDL2IMAGE_INCLUDE_DIRS ${SDL2IMAGE_INCLUDE_DIRS}/SDL2)
+- message(STATUS "SDL LIBS: ${SDL2_LIBRARIES}")
+- message(STATUS "SDL INCL: ${SDL2_INCLUDE_DIRS}")
+ else()
+ # 64-bit
+ include(FindPkgConfig)
diff --git a/user/supertux/find-sdl2.patch b/user/supertux/find-sdl2.patch
new file mode 100644
index 000000000..ec9fbd32d
--- /dev/null
+++ b/user/supertux/find-sdl2.patch
@@ -0,0 +1,11 @@
+--- SuperTux-v0.6.3-Source/external/SDL_ttf/CMakeLists.txt.old 2021-12-22 17:02:04.000000000 -0600
++++ SuperTux-v0.6.3-Source/external/SDL_ttf/CMakeLists.txt 2022-06-12 16:39:33.440000000 -0500
+@@ -4,7 +4,7 @@
+ project(SDL2_TTF C)
+
+ find_path(SDL_INCLUDE_DIR SDL2/SDL.h)
+-find_library(SDL_LIBRARY NAMES SDL2d SDL2)
++find_library(SDL_LIBRARY NAMES SDL2d SDL2-2.0)
+ find_package(Freetype REQUIRED)
+
+ add_library(SDL2_ttf SDL_ttf.c version.rc)
diff --git a/user/supertux/zip-header.patch b/user/supertux/zip-header.patch
new file mode 100644
index 000000000..b02e74d0e
--- /dev/null
+++ b/user/supertux/zip-header.patch
@@ -0,0 +1,30 @@
+From 81809dd5e6f611b1d64d952f6d96310bcc9c5fca Mon Sep 17 00:00:00 2001
+From: Semphris <semphris@protonmail.com>
+Date: Fri, 17 Jun 2022 12:36:26 -0400
+Subject: [PATCH] Fix problem with GCC 11 and Partio's ZIP manager (missing
+ #include <memory>)
+
+Closes #2219 on GitHub. Same fix, but puts the include closer to the copyright header.
+---
+ external/partio_zip/zip_manager.hpp | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/external/partio_zip/zip_manager.hpp b/external/partio_zip/zip_manager.hpp
+index 666884dda53..245303c76be 100644
+--- a/external/partio_zip/zip_manager.hpp
++++ b/external/partio_zip/zip_manager.hpp
+@@ -1,8 +1,12 @@
+ // SOURCE: https://github.com/wdas/partio/blob/main/src/lib/io/ZIP.h
++// NOTE: This file was edited for purposes of compatibility with SuperTux.
+
+-/*
++// This include has been added to fix a problem with GCC 11+ (and maybe 10)
++#include <memory>
++
++// =============================================================================
+
+-NOTE: This file was edited for purposes of compatibility with SuperTux.
++/*
+
+ PARTIO SOFTWARE
+ Copyright 2010 Disney Enterprises, Inc. All rights reserved
diff --git a/user/sway/APKBUILD b/user/sway/APKBUILD
new file mode 100644
index 000000000..16a8b3992
--- /dev/null
+++ b/user/sway/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=sway
+pkgver=1.10
+pkgrel=0
+pkgdesc="tiling Wayland compositor like i3"
+url="https://swaywm.org"
+arch="all"
+license="MIT"
+depends="wlroots-0.18 swaybg"
+makedepends="cairo-dev gdk-pixbuf-dev json-c-dev meson libevdev-dev
+ libinput-dev>=1.26.0 libxkbcommon>=1.5.0 pango-dev pcre2-dev scdoc
+ wayland-protocols wlroots-0.18-dev"
+subpackages="$pkgname-doc"
+source="https://github.com/swaywm/sway/releases/download/$pkgver/sway-$pkgver.tar.gz"
+
+build() {
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ . output
+ meson compile -C output
+}
+
+check() {
+ meson test -C output
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C output
+}
+
+sha512sums="f75a80506d2dcae722ea64c47fa423b9713bcfaa6541ffc353abd413238abb9ab7c88490d54e30ef09dc003215aa6a0005e5b425c9c943f982d5ff3c7cfad440 sway-1.10.tar.gz"
diff --git a/user/sway/license.txt b/user/sway/license.txt
new file mode 100644
index 000000000..3a62bb416
--- /dev/null
+++ b/user/sway/license.txt
@@ -0,0 +1,472 @@
+Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
+Upstream-Name: FIXME
+Upstream-Contact: FIXME
+Source: FIXME
+Disclaimer: Autogenerated by licensecheck
+
+Files: src/sway-1.9/.builds/alpine.yml
+ src/sway-1.9/.builds/archlinux.yml
+ src/sway-1.9/.builds/freebsd.yml
+ src/sway-1.9/.editorconfig
+ src/sway-1.9/.github/ISSUE_TEMPLATE/bug_report.md
+ src/sway-1.9/.github/ISSUE_TEMPLATE/config.yml
+ src/sway-1.9/.github/ISSUE_TEMPLATE/enhancement.md
+ src/sway-1.9/.github/ISSUE_TEMPLATE/i3_compat.md
+ src/sway-1.9/.mailmap
+ src/sway-1.9/CONTRIBUTING.md
+ src/sway-1.9/README.ar.md
+ src/sway-1.9/README.cs.md
+ src/sway-1.9/README.de.md
+ src/sway-1.9/README.dk.md
+ src/sway-1.9/README.es.md
+ src/sway-1.9/README.fr.md
+ src/sway-1.9/README.ge.md
+ src/sway-1.9/README.gr.md
+ src/sway-1.9/README.hi.md
+ src/sway-1.9/README.hu.md
+ src/sway-1.9/README.ir.md
+ src/sway-1.9/README.it.md
+ src/sway-1.9/README.ja.md
+ src/sway-1.9/README.ko.md
+ src/sway-1.9/README.md
+ src/sway-1.9/README.nl.md
+ src/sway-1.9/README.no.md
+ src/sway-1.9/README.pl.md
+ src/sway-1.9/README.pt.md
+ src/sway-1.9/README.ro.md
+ src/sway-1.9/README.ru.md
+ src/sway-1.9/README.sv.md
+ src/sway-1.9/README.tr.md
+ src/sway-1.9/README.uk.md
+ src/sway-1.9/README.zh-CN.md
+ src/sway-1.9/README.zh-TW.md
+ src/sway-1.9/assets/Sway_Logo+Text_Ver1.svg
+ src/sway-1.9/assets/Sway_Logo+Text_Ver1_1500x716.png
+ src/sway-1.9/assets/Sway_Logo+Text_Ver2.png
+ src/sway-1.9/assets/Sway_Logo+Text_Ver2.svg
+ src/sway-1.9/assets/Sway_Logo+Text_Ver3.svg
+ src/sway-1.9/assets/Sway_Logo+Text_Ver4.png
+ src/sway-1.9/assets/Sway_Logo+Text_Ver4.svg
+ src/sway-1.9/assets/Sway_Tree.png
+ src/sway-1.9/assets/Sway_Tree.svg
+ src/sway-1.9/assets/Sway_Wallpaper_Blue_1136x640.png
+ src/sway-1.9/assets/Sway_Wallpaper_Blue_1136x640_Portrait.png
+ src/sway-1.9/assets/Sway_Wallpaper_Blue_2048x1536.png
+ src/sway-1.9/assets/Sway_Wallpaper_Blue_768x1024.png
+ src/sway-1.9/assets/Sway_Wallpaper_Blue_768x1024_Portrait.png
+ src/sway-1.9/client/meson.build
+ src/sway-1.9/client/pool-buffer.c
+ src/sway-1.9/common/background-image.c
+ src/sway-1.9/common/cairo.c
+ src/sway-1.9/common/gesture.c
+ src/sway-1.9/common/ipc-client.c
+ src/sway-1.9/common/list.c
+ src/sway-1.9/common/log.c
+ src/sway-1.9/common/loop.c
+ src/sway-1.9/common/meson.build
+ src/sway-1.9/common/pango.c
+ src/sway-1.9/common/stringop.c
+ src/sway-1.9/common/util.c
+ src/sway-1.9/completions/bash/sway
+ src/sway-1.9/completions/bash/swaybar
+ src/sway-1.9/completions/bash/swaymsg
+ src/sway-1.9/completions/fish/sway.fish
+ src/sway-1.9/completions/fish/swaymsg.fish
+ src/sway-1.9/completions/fish/swaynag.fish
+ src/sway-1.9/completions/meson.build
+ src/sway-1.9/completions/zsh/_sway
+ src/sway-1.9/completions/zsh/_swaybar
+ src/sway-1.9/completions/zsh/_swaymsg
+ src/sway-1.9/config.in
+ src/sway-1.9/include/background-image.h
+ src/sway-1.9/include/cairo_util.h
+ src/sway-1.9/include/gesture.h
+ src/sway-1.9/include/ipc-client.h
+ src/sway-1.9/include/ipc.h
+ src/sway-1.9/include/list.h
+ src/sway-1.9/include/log.h
+ src/sway-1.9/include/loop.h
+ src/sway-1.9/include/meson.build
+ src/sway-1.9/include/pango.h
+ src/sway-1.9/include/pool-buffer.h
+ src/sway-1.9/include/stringop.h
+ src/sway-1.9/include/sway/commands.h
+ src/sway-1.9/include/sway/config.h
+ src/sway-1.9/include/sway/criteria.h
+ src/sway-1.9/include/sway/decoration.h
+ src/sway-1.9/include/sway/desktop.h
+ src/sway-1.9/include/sway/desktop/idle_inhibit_v1.h
+ src/sway-1.9/include/sway/desktop/launcher.h
+ src/sway-1.9/include/sway/desktop/transaction.h
+ src/sway-1.9/include/sway/input/cursor.h
+ src/sway-1.9/include/sway/input/input-manager.h
+ src/sway-1.9/include/sway/input/keyboard.h
+ src/sway-1.9/include/sway/input/libinput.h
+ src/sway-1.9/include/sway/input/seat.h
+ src/sway-1.9/include/sway/input/switch.h
+ src/sway-1.9/include/sway/input/tablet.h
+ src/sway-1.9/include/sway/input/text_input.h
+ src/sway-1.9/include/sway/ipc-json.h
+ src/sway-1.9/include/sway/ipc-server.h
+ src/sway-1.9/include/sway/layers.h
+ src/sway-1.9/include/sway/output.h
+ src/sway-1.9/include/sway/server.h
+ src/sway-1.9/include/sway/surface.h
+ src/sway-1.9/include/sway/swaynag.h
+ src/sway-1.9/include/sway/tree/arrange.h
+ src/sway-1.9/include/sway/tree/container.h
+ src/sway-1.9/include/sway/tree/node.h
+ src/sway-1.9/include/sway/tree/root.h
+ src/sway-1.9/include/sway/tree/view.h
+ src/sway-1.9/include/sway/tree/workspace.h
+ src/sway-1.9/include/sway/xdg_decoration.h
+ src/sway-1.9/include/sway/xwayland.h
+ src/sway-1.9/include/swaybar/bar.h
+ src/sway-1.9/include/swaybar/config.h
+ src/sway-1.9/include/swaybar/i3bar.h
+ src/sway-1.9/include/swaybar/input.h
+ src/sway-1.9/include/swaybar/ipc.h
+ src/sway-1.9/include/swaybar/render.h
+ src/sway-1.9/include/swaybar/status_line.h
+ src/sway-1.9/include/swaybar/tray/host.h
+ src/sway-1.9/include/swaybar/tray/icon.h
+ src/sway-1.9/include/swaybar/tray/item.h
+ src/sway-1.9/include/swaybar/tray/tray.h
+ src/sway-1.9/include/swaybar/tray/watcher.h
+ src/sway-1.9/include/swaynag/config.h
+ src/sway-1.9/include/swaynag/render.h
+ src/sway-1.9/include/swaynag/swaynag.h
+ src/sway-1.9/include/swaynag/types.h
+ src/sway-1.9/include/util.h
+ src/sway-1.9/meson_options.txt
+ src/sway-1.9/protocols/meson.build
+ src/sway-1.9/protocols/wlr-output-power-management-unstable-v1.xml
+ src/sway-1.9/sway.desktop
+ src/sway-1.9/sway/commands.c
+ src/sway-1.9/sway/commands/assign.c
+ src/sway-1.9/sway/commands/bar.c
+ src/sway-1.9/sway/commands/bar/bind.c
+ src/sway-1.9/sway/commands/bar/binding_mode_indicator.c
+ src/sway-1.9/sway/commands/bar/colors.c
+ src/sway-1.9/sway/commands/bar/font.c
+ src/sway-1.9/sway/commands/bar/gaps.c
+ src/sway-1.9/sway/commands/bar/height.c
+ src/sway-1.9/sway/commands/bar/hidden_state.c
+ src/sway-1.9/sway/commands/bar/icon_theme.c
+ src/sway-1.9/sway/commands/bar/id.c
+ src/sway-1.9/sway/commands/bar/mode.c
+ src/sway-1.9/sway/commands/bar/modifier.c
+ src/sway-1.9/sway/commands/bar/output.c
+ src/sway-1.9/sway/commands/bar/pango_markup.c
+ src/sway-1.9/sway/commands/bar/position.c
+ src/sway-1.9/sway/commands/bar/separator_symbol.c
+ src/sway-1.9/sway/commands/bar/status_command.c
+ src/sway-1.9/sway/commands/bar/status_edge_padding.c
+ src/sway-1.9/sway/commands/bar/status_padding.c
+ src/sway-1.9/sway/commands/bar/strip_workspace_name.c
+ src/sway-1.9/sway/commands/bar/strip_workspace_numbers.c
+ src/sway-1.9/sway/commands/bar/swaybar_command.c
+ src/sway-1.9/sway/commands/bar/tray_bind.c
+ src/sway-1.9/sway/commands/bar/tray_output.c
+ src/sway-1.9/sway/commands/bar/tray_padding.c
+ src/sway-1.9/sway/commands/bar/workspace_buttons.c
+ src/sway-1.9/sway/commands/bar/workspace_min_width.c
+ src/sway-1.9/sway/commands/bar/wrap_scroll.c
+ src/sway-1.9/sway/commands/bind.c
+ src/sway-1.9/sway/commands/border.c
+ src/sway-1.9/sway/commands/client.c
+ src/sway-1.9/sway/commands/create_output.c
+ src/sway-1.9/sway/commands/default_border.c
+ src/sway-1.9/sway/commands/default_floating_border.c
+ src/sway-1.9/sway/commands/default_orientation.c
+ src/sway-1.9/sway/commands/exec.c
+ src/sway-1.9/sway/commands/exec_always.c
+ src/sway-1.9/sway/commands/exit.c
+ src/sway-1.9/sway/commands/floating.c
+ src/sway-1.9/sway/commands/floating_minmax_size.c
+ src/sway-1.9/sway/commands/floating_modifier.c
+ src/sway-1.9/sway/commands/focus.c
+ src/sway-1.9/sway/commands/focus_follows_mouse.c
+ src/sway-1.9/sway/commands/focus_on_window_activation.c
+ src/sway-1.9/sway/commands/focus_wrapping.c
+ src/sway-1.9/sway/commands/font.c
+ src/sway-1.9/sway/commands/for_window.c
+ src/sway-1.9/sway/commands/force_display_urgency_hint.c
+ src/sway-1.9/sway/commands/force_focus_wrapping.c
+ src/sway-1.9/sway/commands/fullscreen.c
+ src/sway-1.9/sway/commands/gaps.c
+ src/sway-1.9/sway/commands/gesture.c
+ src/sway-1.9/sway/commands/hide_edge_borders.c
+ src/sway-1.9/sway/commands/include.c
+ src/sway-1.9/sway/commands/inhibit_idle.c
+ src/sway-1.9/sway/commands/input.c
+ src/sway-1.9/sway/commands/input/accel_profile.c
+ src/sway-1.9/sway/commands/input/calibration_matrix.c
+ src/sway-1.9/sway/commands/input/click_method.c
+ src/sway-1.9/sway/commands/input/drag.c
+ src/sway-1.9/sway/commands/input/drag_lock.c
+ src/sway-1.9/sway/commands/input/dwt.c
+ src/sway-1.9/sway/commands/input/dwtp.c
+ src/sway-1.9/sway/commands/input/events.c
+ src/sway-1.9/sway/commands/input/left_handed.c
+ src/sway-1.9/sway/commands/input/map_from_region.c
+ src/sway-1.9/sway/commands/input/map_to_output.c
+ src/sway-1.9/sway/commands/input/map_to_region.c
+ src/sway-1.9/sway/commands/input/middle_emulation.c
+ src/sway-1.9/sway/commands/input/natural_scroll.c
+ src/sway-1.9/sway/commands/input/pointer_accel.c
+ src/sway-1.9/sway/commands/input/repeat_delay.c
+ src/sway-1.9/sway/commands/input/repeat_rate.c
+ src/sway-1.9/sway/commands/input/rotation_angle.c
+ src/sway-1.9/sway/commands/input/scroll_button.c
+ src/sway-1.9/sway/commands/input/scroll_button_lock.c
+ src/sway-1.9/sway/commands/input/scroll_factor.c
+ src/sway-1.9/sway/commands/input/scroll_method.c
+ src/sway-1.9/sway/commands/input/tap.c
+ src/sway-1.9/sway/commands/input/tap_button_map.c
+ src/sway-1.9/sway/commands/input/tool_mode.c
+ src/sway-1.9/sway/commands/input/xkb_capslock.c
+ src/sway-1.9/sway/commands/input/xkb_file.c
+ src/sway-1.9/sway/commands/input/xkb_layout.c
+ src/sway-1.9/sway/commands/input/xkb_model.c
+ src/sway-1.9/sway/commands/input/xkb_numlock.c
+ src/sway-1.9/sway/commands/input/xkb_options.c
+ src/sway-1.9/sway/commands/input/xkb_rules.c
+ src/sway-1.9/sway/commands/input/xkb_switch_layout.c
+ src/sway-1.9/sway/commands/input/xkb_variant.c
+ src/sway-1.9/sway/commands/kill.c
+ src/sway-1.9/sway/commands/layout.c
+ src/sway-1.9/sway/commands/mark.c
+ src/sway-1.9/sway/commands/max_render_time.c
+ src/sway-1.9/sway/commands/mode.c
+ src/sway-1.9/sway/commands/mouse_warping.c
+ src/sway-1.9/sway/commands/move.c
+ src/sway-1.9/sway/commands/new_float.c
+ src/sway-1.9/sway/commands/new_window.c
+ src/sway-1.9/sway/commands/no_focus.c
+ src/sway-1.9/sway/commands/nop.c
+ src/sway-1.9/sway/commands/opacity.c
+ src/sway-1.9/sway/commands/output.c
+ src/sway-1.9/sway/commands/output/adaptive_sync.c
+ src/sway-1.9/sway/commands/output/background.c
+ src/sway-1.9/sway/commands/output/disable.c
+ src/sway-1.9/sway/commands/output/dpms.c
+ src/sway-1.9/sway/commands/output/enable.c
+ src/sway-1.9/sway/commands/output/max_render_time.c
+ src/sway-1.9/sway/commands/output/mode.c
+ src/sway-1.9/sway/commands/output/position.c
+ src/sway-1.9/sway/commands/output/power.c
+ src/sway-1.9/sway/commands/output/render_bit_depth.c
+ src/sway-1.9/sway/commands/output/scale.c
+ src/sway-1.9/sway/commands/output/scale_filter.c
+ src/sway-1.9/sway/commands/output/subpixel.c
+ src/sway-1.9/sway/commands/output/toggle.c
+ src/sway-1.9/sway/commands/output/transform.c
+ src/sway-1.9/sway/commands/output/unplug.c
+ src/sway-1.9/sway/commands/popup_during_fullscreen.c
+ src/sway-1.9/sway/commands/primary_selection.c
+ src/sway-1.9/sway/commands/reload.c
+ src/sway-1.9/sway/commands/rename.c
+ src/sway-1.9/sway/commands/resize.c
+ src/sway-1.9/sway/commands/scratchpad.c
+ src/sway-1.9/sway/commands/seat.c
+ src/sway-1.9/sway/commands/seat/attach.c
+ src/sway-1.9/sway/commands/seat/cursor.c
+ src/sway-1.9/sway/commands/seat/fallback.c
+ src/sway-1.9/sway/commands/seat/hide_cursor.c
+ src/sway-1.9/sway/commands/seat/idle.c
+ src/sway-1.9/sway/commands/seat/keyboard_grouping.c
+ src/sway-1.9/sway/commands/seat/pointer_constraint.c
+ src/sway-1.9/sway/commands/seat/shortcuts_inhibitor.c
+ src/sway-1.9/sway/commands/seat/xcursor_theme.c
+ src/sway-1.9/sway/commands/set.c
+ src/sway-1.9/sway/commands/shortcuts_inhibitor.c
+ src/sway-1.9/sway/commands/show_marks.c
+ src/sway-1.9/sway/commands/smart_borders.c
+ src/sway-1.9/sway/commands/smart_gaps.c
+ src/sway-1.9/sway/commands/split.c
+ src/sway-1.9/sway/commands/sticky.c
+ src/sway-1.9/sway/commands/swap.c
+ src/sway-1.9/sway/commands/swaybg_command.c
+ src/sway-1.9/sway/commands/swaynag_command.c
+ src/sway-1.9/sway/commands/tiling_drag.c
+ src/sway-1.9/sway/commands/tiling_drag_threshold.c
+ src/sway-1.9/sway/commands/title_align.c
+ src/sway-1.9/sway/commands/title_format.c
+ src/sway-1.9/sway/commands/titlebar_border_thickness.c
+ src/sway-1.9/sway/commands/titlebar_padding.c
+ src/sway-1.9/sway/commands/unmark.c
+ src/sway-1.9/sway/commands/urgent.c
+ src/sway-1.9/sway/commands/workspace.c
+ src/sway-1.9/sway/commands/workspace_layout.c
+ src/sway-1.9/sway/commands/ws_auto_back_and_forth.c
+ src/sway-1.9/sway/commands/xwayland.c
+ src/sway-1.9/sway/config.c
+ src/sway-1.9/sway/config/bar.c
+ src/sway-1.9/sway/config/input.c
+ src/sway-1.9/sway/config/output.c
+ src/sway-1.9/sway/config/seat.c
+ src/sway-1.9/sway/criteria.c
+ src/sway-1.9/sway/decoration.c
+ src/sway-1.9/sway/desktop/desktop.c
+ src/sway-1.9/sway/desktop/idle_inhibit_v1.c
+ src/sway-1.9/sway/desktop/launcher.c
+ src/sway-1.9/sway/desktop/layer_shell.c
+ src/sway-1.9/sway/desktop/output.c
+ src/sway-1.9/sway/desktop/render.c
+ src/sway-1.9/sway/desktop/surface.c
+ src/sway-1.9/sway/desktop/transaction.c
+ src/sway-1.9/sway/desktop/xdg_shell.c
+ src/sway-1.9/sway/desktop/xwayland.c
+ src/sway-1.9/sway/input/cursor.c
+ src/sway-1.9/sway/input/input-manager.c
+ src/sway-1.9/sway/input/keyboard.c
+ src/sway-1.9/sway/input/libinput.c
+ src/sway-1.9/sway/input/seat.c
+ src/sway-1.9/sway/input/seatop_default.c
+ src/sway-1.9/sway/input/seatop_down.c
+ src/sway-1.9/sway/input/seatop_move_floating.c
+ src/sway-1.9/sway/input/seatop_move_tiling.c
+ src/sway-1.9/sway/input/seatop_resize_floating.c
+ src/sway-1.9/sway/input/seatop_resize_tiling.c
+ src/sway-1.9/sway/input/switch.c
+ src/sway-1.9/sway/input/tablet.c
+ src/sway-1.9/sway/input/text_input.c
+ src/sway-1.9/sway/ipc-json.c
+ src/sway-1.9/sway/ipc-server.c
+ src/sway-1.9/sway/lock.c
+ src/sway-1.9/sway/main.c
+ src/sway-1.9/sway/meson.build
+ src/sway-1.9/sway/realtime.c
+ src/sway-1.9/sway/server.c
+ src/sway-1.9/sway/sway-bar.5.scd
+ src/sway-1.9/sway/sway-input.5.scd
+ src/sway-1.9/sway/sway-ipc.7.scd
+ src/sway-1.9/sway/sway-output.5.scd
+ src/sway-1.9/sway/sway.1.scd
+ src/sway-1.9/sway/sway.5.scd
+ src/sway-1.9/sway/swaynag.c
+ src/sway-1.9/sway/tree/arrange.c
+ src/sway-1.9/sway/tree/container.c
+ src/sway-1.9/sway/tree/node.c
+ src/sway-1.9/sway/tree/output.c
+ src/sway-1.9/sway/tree/root.c
+ src/sway-1.9/sway/tree/view.c
+ src/sway-1.9/sway/tree/workspace.c
+ src/sway-1.9/sway/xdg_activation_v1.c
+ src/sway-1.9/sway/xdg_decoration.c
+ src/sway-1.9/swaybar/bar.c
+ src/sway-1.9/swaybar/config.c
+ src/sway-1.9/swaybar/i3bar.c
+ src/sway-1.9/swaybar/input.c
+ src/sway-1.9/swaybar/ipc.c
+ src/sway-1.9/swaybar/main.c
+ src/sway-1.9/swaybar/meson.build
+ src/sway-1.9/swaybar/render.c
+ src/sway-1.9/swaybar/status_line.c
+ src/sway-1.9/swaybar/swaybar-protocol.7.scd
+ src/sway-1.9/swaybar/tray/host.c
+ src/sway-1.9/swaybar/tray/icon.c
+ src/sway-1.9/swaybar/tray/item.c
+ src/sway-1.9/swaybar/tray/tray.c
+ src/sway-1.9/swaybar/tray/watcher.c
+ src/sway-1.9/swaymsg/main.c
+ src/sway-1.9/swaymsg/meson.build
+ src/sway-1.9/swaymsg/swaymsg.1.scd
+ src/sway-1.9/swaynag/config.c
+ src/sway-1.9/swaynag/main.c
+ src/sway-1.9/swaynag/meson.build
+ src/sway-1.9/swaynag/render.c
+ src/sway-1.9/swaynag/swaynag.1.scd
+ src/sway-1.9/swaynag/swaynag.5.scd
+ src/sway-1.9/swaynag/swaynag.c
+ src/sway-1.9/swaynag/types.c
+Copyright: 2019, Purism SPC
+License: UNKNOWN
+ FIXME
+
+Files: src/sway-1.9/LICENSE
+ src/sway-1.9/meson.build
+Copyright: 2016-2017, Drew DeVault
+License: Expat
+ FIXME
+
+Files: src/sway-1.9/protocols/wlr-input-inhibitor-unstable-v1.xml
+ src/sway-1.9/protocols/wlr-layer-shell-unstable-v1.xml
+Copyright: 2017, Drew DeVault
+ 2018, Drew DeVault
+License: HPND-sell-variant and/or NTP~disclaimer
+ FIXME
+
+Files: src/sway-1.9/assets/LICENSE
+Copyright: NONE
+License: CC0-1.0
+ FIXME
+
+Files: src/sway-1.9/protocols/idle.xml
+Copyright: 2015, Martin Gräßlin
+License: LGPL-2.1+
+ FIXME
+
+Files: src/sway-1.9/assets/Sway_Tree_1000x934.png
+Copyright: …$I2Ð%I0?ö؂ZÉ%H’¤2º$IZ
+ Õâv¬‰Tp}ð>B’$ãÜ@—¤úšŸ ¤ò†`q¤‚«Æ1˜Š˜I’nQœ蒤Î-x³4Ç`N¤˜#u$éŠ=Þe K’ª0
+ ×cu¤œ˜§fêçS’´Ÿ.Ij ]p9¢À¤q
+ ª0 „'pÒ8såhéÛ¡ø
+ $É@—$Ijƒ•pÌÔ27ÃŽHÅ$I2Ð%IÒBØ·âk„2mh16¾K’
+ R]
+ 1¦Çûlø56Åî8—âŸxoâ+Ô"ZÁ8|Š×ñ$îÆõ¸
+ 1Úâ÷¸
+ eè’$uőô _b_´E*˜¶Xgà„$ÍÂ4ì‹Ô|
+ n³á<LC´ý© ºc0&Â÷Z’t¦qn Ïš$éøÑê4©àæÅE¨A”Ž$iD’.Iª[/܎PÅ܁T‹ãÔ"JA’4¿C’.Iš±*ì‰qùz+[—bB’TX/c $蒤[÷#2Cs •Í™gô[ꂿÿ%8rñâ½§’¤‹Ð)O
+ rºà¸
+ uè’$͎ýñ"¢À.B5RŽTábD…H’´‰Þò$IZ
+ yµÅÎx‘[^s(¢H’ô%:è’$5ŸN8
+ „Á¸_!
+ Çý88o K’T) ãx¼ƒ(©«!ŠÚ '~ƒM±#Ê{ð>Å$D#ISñ4NÁzè€$]’¤–0vÁHDI å†Úba¬‹þ8ƒ1÷âe|Ži©&à~
+ ™I]'IÒ㨆.I’
+ žFãPtER¯}u$é»ú.ƒ“.I[#¤zø‡£üÙŽDÔA’¤W±’
+ ¡d KÒÓIOcm¤:©/¦"þ‡$I±RcÈ@—¤U>À6³¼—U+â{Äÿ$éU,‹ÔX2Ð%é<D©i
+ £¥¤©‚¹‘4Kðb:I’¾Æ‘d KRS­€(%݅¥‘ToW!¦“$é~̇$]’šÃ¡ˆRѰ!Rƒh?$Iš„Í½³Eº$@”‚>ÃîhƒÔ Z“á÷‘$鬀$]’šÛLjBÓœ„®H
+ ¨:`"B’¤˜‚9
+ ¹H’
+ À¤.è…°&úb+슁8gà"‹á¸#ñ^ÆkøŸ`
+ ÂÁ˜Œ(ékœ‰E‘r¢-¶Çˈ̓$
+ ā~"Ã^Aú‘‘¾:¦!š…d”¯Œ)è’vÁ8D|ƒvƹrf͒ú[ˆ
+ đ~¢b$=‰}0’
+ ͎%±þ„8Cp+Fâ
+ Ò.E´*Õà,ˆ¤ŠА$yj.]’*폈V¡‰¸ Sa®n˜ˆ(IÒOÍ
+ þÞĞèˆ$]’4kq="÷ô»’úuˆÖòØm·ÄWŸ—ž?àÇ`ßÿˆEÿÿ{ IªÅ¿ÐUH2Ð%Iõ³(^A¨–-i ?ˆ¨®p‹×ü=.¿`¿8}ð–q豿)ã÷ž$ÅyXIº$©a6ÃwÂt(i ¿ÈÎqïúÉqÞÙ;~ÂÿÆ»1!Iôv÷ª4]Ry,ˆ?ᜏ[1rº‡pÎÁžXÁqªz9Ó*ŒWJçm0‘Q·#!M_Ž´Äexã9#Ip%VA’.©ØÆ~/
+License: UNKNOWN
+ FIXME
+
+Files: src/sway-1.9/assets/Sway_Wallpaper_Blue_2048x1536_Portrait.png
+Copyright: @qÎê R—E [‚íA©Ô¢.Ùk+ê9ì¸A³-¬2¸uÙG`ÅåcyH)Ù[Œ°ù¿|ýÛÝ…Н­ô´«ÛÚ©òÿ:ÎãMµ…v9‰ß·á€
+ I#`à;°g1áS{RõМÄKø~Öá-7•µë¯'œ@øÇoy„šàÚ+j6ðã3@Þ%^Zèòò²{íVlBì‘͆4,WÈtR‡`5ö&Cl33$UÃìéù™F¬Š=†çÎÕÒpÚäüôø4Ü"+ê7¹h=èú ZQ(iµFö€
+ rœu¹Þa
+ ÌEÖ
+License: UNKNOWN
+ FIXME
+
+Files: src/sway-1.9/assets/Sway_Wallpaper_Blue_1920x1080.png
+Copyright: ZãÐÑi—W8Édªê.¥‡ÒÖêdv<ñüÍ-–¶ºÀÏþa/Q²¶(ðS¢4ëUò’†uW<H~jV•Å^Ï#`f^S’Õ1ß6 
+ ™z[#ò¡ƒ¸èÇڛ«%÷pwŸðê“4þËói„Þ¶p6ÇåŠ!1ò]È­)øB€ Õ:63”Jm‚1͋e«ãtªzîŠÈñ9LbQ‰ €e(ÙÇ2&aˆì íù•ÜT_‹:d«w+Ôô
+License: UNKNOWN
+ FIXME
+
+Files: src/sway-1.9/assets/Sway_Logo+Text_Ver3.png
+Copyright: $§,™‹Ã ,Nz
+ ’KÕdÔ4ëŽä%>*´á‘Ö,¨„ÜNÁv×,%"ⓧÿ”Mª#åá
+License: UNKNOWN
+ FIXME
+
+Files: src/sway-1.9/assets/Sway_Wallpaper_Blue_1366x768.png
+Copyright: —žý¤X-Ýë߃µ÷³ç„³L-‡Ã!‹éÌ&LJíú'°‡úÔ3ÅþòòÒDõIŸÜ¡=åف%iËb¬g- ﹖:×!MØ=°›{Ý
+ ¨Ixs¡S0H‡Úe”í͕],qêPˆ™n!3_³0S»×Á[8/ XCëêõéAI–(iŽÝ`
+ ®äû–)û0íØSñt<…°ºdñÚõ2GÛl('Í5ЩÊL–1¨´–ÏÍɓ:¦H^1—ÃhÙg*©Õ0
+ ÀK¦ÀàÊãéhí5Ú!ÓG£«$’4„C,f¯RÙGþH>ÙÜæ³:ÆE%Ãæ
+ Ú(kü)ÓªÁ’­joɤ±ý„gÈ­œ vGn]IËìXõÐx©ª™¢n4'³n5n7[Øàք|ý$`hTóæëž
+ âù¾˜‹ DðöP$ΆÅÓñ#4ô
+License: UNKNOWN
+ FIXME
+
diff --git a/user/swaybg/APKBUILD b/user/swaybg/APKBUILD
new file mode 100644
index 000000000..9c7582585
--- /dev/null
+++ b/user/swaybg/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor Síle Ekaterin Liszka <sheila@vulpine.house>:
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=swaybg
+pkgver=1.2.1
+pkgrel=0
+pkgdesc="Wallpaper tool for Wayland compositors"
+url="https://swaywm.org"
+arch="all"
+license="MIT"
+depends=""
+makedepends="cairo-dev gdk-pixbuf-dev meson scdoc wayland-dev
+ wayland-protocols"
+subpackages="$pkgname-doc"
+source="https://github.com/swaywm/swaybg/releases/download/v$pkgver/swaybg-$pkgver.tar.gz"
+
+build() {
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ . output
+ meson compile -C output
+}
+
+check() {
+ meson test -C output
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C output
+}
+
+sha512sums="57b911c11055374079645b8acf5b81cb3481a6d290f6e1a7e18a8e52202edfc3f3a71cc09fbe8a0500223f3b28091a8c979ccdd917861321cb5b8201887a014a swaybg-1.2.1.tar.gz"
diff --git a/user/swig/APKBUILD b/user/swig/APKBUILD
index d0be1a058..294e1c429 100644
--- a/user/swig/APKBUILD
+++ b/user/swig/APKBUILD
@@ -1,19 +1,18 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=swig
-pkgver=3.0.12
-pkgrel=3
+pkgver=4.2.1
+pkgrel=0
pkgdesc="Tool for integrating C and C++ code with other languages"
-url="http://www.swig.org/"
+url="https://www.swig.org/"
arch="all"
-license="GPL-3.0 BSD"
-depends="guile"
-makedepends="zlib-dev pcre-dev"
-checkdepends="boost-dev perl-dev python3-dev diffutils"
+license="GPL-3.0+ AND MIT"
+depends=""
+checkdepends="boost-dev diffutils"
+makedepends="pcre2-dev perl-dev python3-dev zlib-dev"
subpackages="$pkgname-doc"
source="https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -24,15 +23,13 @@ build() {
}
check() {
- cd "$builddir"
- env PERL5LIB=. PY3=YES make check
+ env PERL5LIB=. PY3=YES PATH=/usr/sbin:/usr/bin:/sbin:/bin make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -D -m644 LICENSE "$pkgdir"/usr/share/licenses/$pkgname/LICENSE
install -D -m644 LICENSE-UNIVERSITIES "$pkgdir"/usr/share/licenses/$pkgname/LICENSE-UNIVERSITIES
}
-sha512sums="5eaa2e06d8e4197fd02194051db1e518325dbb074a4c55a91099ad9c55193874f577764afc9029409a41bd520a95154095f26e33ef5add5c102bb2c1d98d33eb swig-3.0.12.tar.gz"
+sha512sums="019dee5a46d57e1030eef47cd5d007ccaadbdcd4e53cd30d7c795f0118ecf4406a78185534502c81c5f6d7bac0713256e7e19b20b5a2d14e2c552219edbaf5cf swig-4.2.1.tar.gz"
diff --git a/user/sword/APKBUILD b/user/sword/APKBUILD
index db3e5574f..4cbe32615 100644
--- a/user/sword/APKBUILD
+++ b/user/sword/APKBUILD
@@ -1,19 +1,18 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=sword
-pkgver=1.8.1
-pkgrel=0
+pkgver=1.9.0
+pkgrel=1
pkgdesc="Cross-platform library for accessing and searching OSIS books"
url="http://www.crosswire.org/sword/index.jsp"
arch="all"
license="GPL-2.0-only AND LGPL-2.1+ AND zlib"
depends=""
-makedepends="clucene-dev curl-dev icu-dev zlib-dev"
+makedepends="curl-dev icu-dev xapian-core-dev zlib-dev"
subpackages="$pkgname-dev"
-source="http://crosswire.org/ftpmirror/pub/sword/source/v1.8/sword-$pkgver.tar.gz"
+source="http://crosswire.org/ftpmirror/pub/sword/source/v${pkgver%.*}/sword-$pkgver.tar.gz"
build() {
- cd "$builddir"
CPPFLAGS="$CPPFLAGS -DU_USING_ICU_NAMESPACE" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,14 +24,17 @@ build() {
}
check() {
- cd "$builddir"
make check
+ # These tests don't work on musl because argv[0] is a full path.
+ for skiptest in basic mod2zmod osis2modcipher; do
+ rm tests/testsuite/osis_${skiptest}.good;
+ done
+ make -C tests/testsuite run
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
make DESTDIR="$pkgdir" install_config
}
-sha512sums="5c08c070ea0c86b7d929bbf94c89730eb5a487986deb9edf01c08d1710356aecd1ab3bde4437a778e5fc1ceb05b63287612ec6161381c0986a36344c27d2ab36 sword-1.8.1.tar.gz"
+sha512sums="9ed3fbb5024af1f93b1473bae0d95534d02a5b00b3c9d41a0f855cee8106dc4e330844080adbee7c3f74c0e5ce1480bf16c87c842421337a341f641bae11137f sword-1.9.0.tar.gz"
diff --git a/user/symboleditor/APKBUILD b/user/symboleditor/APKBUILD
index a7bee79c0..bba7e7115 100644
--- a/user/symboleditor/APKBUILD
+++ b/user/symboleditor/APKBUILD
@@ -1,8 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=symboleditor
-_realpkg=SymbolEditor
-pkgver=2.0.0
+pkgver=2.1.0
pkgrel=0
pkgdesc="Symbol library creator for Qt 5"
url="https://userbase.kde.org/SymbolEditor"
@@ -12,11 +11,9 @@ depends="shared-mime-info"
makedepends="cmake extra-cmake-modules qt5-qtbase-dev kdoctools-dev kconfig-dev
ki18n-dev kio-dev kwidgetsaddons-dev kxmlgui-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/$pkgname/$pkgver/src/SymbolEditor-$pkgver.tar.bz2"
-builddir="$srcdir/$_realpkg-$pkgver"
+source="https://download.kde.org/stable/$pkgname/$pkgver/symboleditor-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +24,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="8baee88fd8ff5f2b6334e80fe7c3fe8044ae521e5a8ffa2588f37dc4a8bf0495c902789bfaaed21a6eaf3c4f6380d18550aaed8046e84b396317104c8a49c993 SymbolEditor-2.0.0.tar.bz2"
+sha512sums="dc83f3f80b12d8217a230d8c951e90bcc6246c4460d987efb140c54c1e88a8f5d607ac7ebfe706399cd0917e22a2089df6742afadd28305d39ceeff0c55da535 symboleditor-2.1.0.tar.xz"
diff --git a/user/syndication/APKBUILD b/user/syndication/APKBUILD
new file mode 100644
index 000000000..1c2971228
--- /dev/null
+++ b/user/syndication/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=syndication
+pkgver=5.94.0
+pkgrel=0
+pkgdesc="RSS/Atom parser framework for Qt / KDE"
+url="https://www.kde.org/"
+arch="all"
+license="LGPL-2.1+"
+depends=""
+makedepends="cmake extra-cmake-modules doxygen graphviz qt5-qtbase-dev
+ qt5-qttools-dev kcodecs-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://download.kde.org/stable/frameworks/${pkgver%.*}/syndication-$pkgver.tar.xz"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DBUILD_QCH:BOOL=ON \
+ ${CMAKE_CROSSOPTS} .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="8b33ca8eddd59d4461822b51a536fce53b86ec2e6b9a26d3c7e66b0317d13b2a6a271e2c011e5e9298d8d328abc961f58566caa5f1a2caf6f825b6eb5fdc1a7c syndication-5.94.0.tar.xz"
diff --git a/user/syntax-highlighting/APKBUILD b/user/syntax-highlighting/APKBUILD
index a50500eb3..c7aae36eb 100644
--- a/user/syntax-highlighting/APKBUILD
+++ b/user/syntax-highlighting/APKBUILD
@@ -1,22 +1,21 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=syntax-highlighting
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="Framework for rendering programming code with formatting"
url="https://www.kde.org/"
arch="all"
-license="LGPL-2.1+"
+license="MIT AND CC0-1.0 AND GPL-2.0-only AND LGPL-2.0+ AND LGPL-2.1+"
depends=""
depends_dev="qt5-qtbase-dev"
-makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev perl
- doxygen graphviz"
checkdepends="qt5-qtxmlpatterns-dev"
+makedepends="$depends_dev cmake extra-cmake-modules qt5-qttools-dev perl
+ doxygen graphviz qt5-qtdeclarative-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/syntax-highlighting-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +27,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b789db79a75c5bddcabd2e18e04122c91f096df190dee891b6c3441ea79feeb1aee683dda3fb81663cbb0f3a6d16cee52c51664b28bb9e0fe42c70af2c685eae syntax-highlighting-5.54.0.tar.xz"
+sha512sums="34e3ec926ae576e0366216c67ee73ef62c538e38369d664ca104951cf08a52848fd7b4d75e29ef23650259b113af727bf71837b6b6ced0f63d4264c0c903acb2 syntax-highlighting-5.94.0.tar.xz"
diff --git a/user/sysfsutils/APKBUILD b/user/sysfsutils/APKBUILD
index da5f74618..99fde3f4e 100644
--- a/user/sysfsutils/APKBUILD
+++ b/user/sysfsutils/APKBUILD
@@ -13,13 +13,11 @@ subpackages="$pkgname-dev $pkgname-doc"
source="https://downloads.sourceforge.net/sourceforge/linux-diag/$pkgname-$pkgver.tar.gz"
prepare() {
- cd "$builddir"
- update_config_sub
default_prepare
+ update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,7 +27,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir"/ install
}
diff --git a/user/systemsettings/APKBUILD b/user/systemsettings/APKBUILD
index 58d109aed..16d27031e 100644
--- a/user/systemsettings/APKBUILD
+++ b/user/systemsettings/APKBUILD
@@ -1,23 +1,23 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox-kde@adelielinux.org>
pkgname=systemsettings
-pkgver=5.12.7
+pkgver=5.24.5
pkgrel=0
pkgdesc="KDE system settings configuration utility"
url="https://www.kde.org/"
arch="all"
license="GPL-2.0+"
depends="kirigami2"
-depends_dev="qt5-qtbase-dev kitemviews-dev kservice-dev kwidgetsaddons-dev"
-makedepends="$depends_dev cmake extra-cmake-modules kactivities-stats-dev
+makedepends="qt5-qtbase-dev cmake extra-cmake-modules kactivities-stats-dev
kactivities-dev kauth-dev kcmutils-dev kcompletion-dev kconfig-dev
kconfigwidgets-dev kcoreaddons-dev kdbusaddons-dev khtml-dev ki18n-dev
- kiconthemes-dev kio-dev kirigami2-dev kwindowsystem-dev kxmlgui-dev"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+ kiconthemes-dev kitemmodels-dev kio-dev kirigami2-dev krunner-dev
+ kwindowsystem-dev kxmlgui-dev libkworkspace-dev kwidgetsaddons-dev
+ kitemviews-dev kservice-dev"
+subpackages="$pkgname-doc $pkgname-lang"
source="https://download.kde.org/stable/plasma/$pkgver/systemsettings-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +28,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="cc8f5cdd2275816f1e7c6af2b5d06a018a35646460a71ce6ec7ab7dda7d286139836b3625239cb45316f2f7dd1f12d260ffdb44064b349948d93929654363735 systemsettings-5.12.7.tar.xz"
+sha512sums="7dd2aa3d2b0ad821569eaa6e17d064a2216d35a525baf82621a1fb31867a340372ec0349488cc6bf344156f9d9052b589be5d01ed82a1c18fcedaa64fb4986b1 systemsettings-5.24.5.tar.xz"
diff --git a/user/taglib/APKBUILD b/user/taglib/APKBUILD
index 60586f78e..6569a68e1 100644
--- a/user/taglib/APKBUILD
+++ b/user/taglib/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=taglib
pkgver=1.11.1
-pkgrel=2
+pkgrel=3
pkgdesc="Library for manipulating audio file metadata"
url="https://taglib.org/"
arch="all"
@@ -10,21 +10,28 @@ license="LGPL-2.1-only AND MPL-1.1"
depends=""
makedepends="cmake zlib-dev"
subpackages="$pkgname-dev"
-source="http://taglib.org/releases/taglib-$pkgver.tar.gz"
+source="http://taglib.org/releases/taglib-$pkgver.tar.gz
+ CVE-2017-12678.patch
+ CVE-2018-11439.patch"
+
+# secfixes:
+# 1.11.1-r3:
+# - CVE-2017-12678
+# - CVE-2018-11439
build() {
- cd "$builddir"
cmake -DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_BUILD_TYPE=Release \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DWITH_ASF=ON \
-DWITH_MP4=ON \
- -DBUILD_SHARED_LIBS=ON
+ -DBUILD_SHARED_LIBS=ON .
make VERBOSE=1
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="7846775c4954ea948fe4383e514ba7c11f55d038ee06b6ea5a0a1c1069044b348026e76b27aa4ba1c71539aa8143e1401fab39184cc6e915ba0ae2c06133cb98 taglib-1.11.1.tar.gz"
+sha512sums="7846775c4954ea948fe4383e514ba7c11f55d038ee06b6ea5a0a1c1069044b348026e76b27aa4ba1c71539aa8143e1401fab39184cc6e915ba0ae2c06133cb98 taglib-1.11.1.tar.gz
+e50810e8d790c490b7d6752c4bf65da812b7534b9920c505d83b8bd0d67fe9991b4db488b6a63e69b206bbcb3cf80754018b17294b5832dd05bfad9a0fbc56c6 CVE-2017-12678.patch
+9a118f9410404996bf3879325f77fcfb638f6cc71b4e258d9786bd741c2c45f26385a6049788ef6ebc56c7c987bd7ef6267a461f4478f5d52d236b035287cdf2 CVE-2018-11439.patch"
diff --git a/user/taglib/CVE-2017-12678.patch b/user/taglib/CVE-2017-12678.patch
new file mode 100644
index 000000000..71081c6d6
--- /dev/null
+++ b/user/taglib/CVE-2017-12678.patch
@@ -0,0 +1,31 @@
+From cb9f07d9dcd791b63e622da43f7b232adaec0a9a Mon Sep 17 00:00:00 2001
+From: "Stephen F. Booth" <me@sbooth.org>
+Date: Sat, 30 Sep 2017 10:15:41 -0500
+Subject: [PATCH] Don't assume TDRC is an instance of TextIdentificationFrame
+ (#831)
+
+If TDRC is encrypted, FrameFactory::createFrame() returns UnknownFrame
+which causes problems in rebuildAggregateFrames() when it is assumed
+that TDRC is a TextIdentificationFrame
+---
+ taglib/mpeg/id3v2/id3v2framefactory.cpp | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/taglib/mpeg/id3v2/id3v2framefactory.cpp b/taglib/mpeg/id3v2/id3v2framefactory.cpp
+index 759a9b7be..9347ab869 100644
+--- a/taglib/mpeg/id3v2/id3v2framefactory.cpp
++++ b/taglib/mpeg/id3v2/id3v2framefactory.cpp
+@@ -334,10 +334,11 @@ void FrameFactory::rebuildAggregateFrames(ID3v2::Tag *tag) const
+ tag->frameList("TDAT").size() == 1)
+ {
+ TextIdentificationFrame *tdrc =
+- static_cast<TextIdentificationFrame *>(tag->frameList("TDRC").front());
++ dynamic_cast<TextIdentificationFrame *>(tag->frameList("TDRC").front());
+ UnknownFrame *tdat = static_cast<UnknownFrame *>(tag->frameList("TDAT").front());
+
+- if(tdrc->fieldList().size() == 1 &&
++ if(tdrc &&
++ tdrc->fieldList().size() == 1 &&
+ tdrc->fieldList().front().size() == 4 &&
+ tdat->data().size() >= 5)
+ {
diff --git a/user/taglib/CVE-2018-11439.patch b/user/taglib/CVE-2018-11439.patch
new file mode 100644
index 000000000..20b777e74
--- /dev/null
+++ b/user/taglib/CVE-2018-11439.patch
@@ -0,0 +1,42 @@
+From 2c4ae870ec086f2ddd21a47861a3709c36faac45 Mon Sep 17 00:00:00 2001
+From: Scott Gayou <github.scott@gmail.com>
+Date: Tue, 9 Oct 2018 18:46:55 -0500
+Subject: [PATCH] Fixed OOB read when loading invalid ogg flac file. (#868)
+ (#869)
+
+CVE-2018-11439 is caused by a failure to check the minimum length
+of a ogg flac header. This header is detailed in full at:
+https://xiph.org/flac/ogg_mapping.html. Added more strict checking
+for entire header.
+---
+ taglib/ogg/flac/oggflacfile.cpp | 14 ++++++++++++--
+ 1 file changed, 12 insertions(+), 2 deletions(-)
+
+diff --git a/taglib/ogg/flac/oggflacfile.cpp b/taglib/ogg/flac/oggflacfile.cpp
+index 53d04508a..07ea9dccc 100644
+--- a/taglib/ogg/flac/oggflacfile.cpp
++++ b/taglib/ogg/flac/oggflacfile.cpp
+@@ -231,11 +231,21 @@ void Ogg::FLAC::File::scan()
+
+ if(!metadataHeader.startsWith("fLaC")) {
+ // FLAC 1.1.2+
++ // See https://xiph.org/flac/ogg_mapping.html for the header specification.
++ if(metadataHeader.size() < 13)
++ return;
++
++ if(metadataHeader[0] != 0x7f)
++ return;
++
+ if(metadataHeader.mid(1, 4) != "FLAC")
+ return;
+
+- if(metadataHeader[5] != 1)
+- return; // not version 1
++ if(metadataHeader[5] != 1 && metadataHeader[6] != 0)
++ return; // not version 1.0
++
++ if(metadataHeader.mid(9, 4) != "fLaC")
++ return;
+
+ metadataHeader = metadataHeader.mid(13);
+ }
diff --git a/user/talloc/APKBUILD b/user/talloc/APKBUILD
index 82ba9d682..72981b44b 100644
--- a/user/talloc/APKBUILD
+++ b/user/talloc/APKBUILD
@@ -1,21 +1,19 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=talloc
-pkgver=2.1.15
+pkgver=2.3.4
pkgrel=0
pkgdesc="Memory pool management library"
url="https://talloc.samba.org"
arch="all"
license="LGPL-3.0+ AND GPL-3.0+ AND ISC AND LGPL-2.1+ AND BSD-3-Clause AND PostgreSQL"
-replaces="samba-common"
depends=""
-makedepends="docbook-xsl libxslt python3-dev"
+makedepends="cmd:which docbook-xsl libxslt python3-dev"
+replaces="samba-common"
subpackages="$pkgname-dev py3-$pkgname:py3 $pkgname-doc"
-source="https://samba.org/ftp/$pkgname/$pkgname-$pkgver.tar.gz
- waf-location.patch"
+source="https://samba.org/ftp/$pkgname/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
PYTHON=python3 ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,12 +30,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -49,5 +45,4 @@ py3() {
"$pkgdir"/usr/lib/python3* "$subpkgdir"/usr/lib/
}
-sha512sums="41896f8877e9a52e70b9881c41667dc52d7c1b03c3b248020fd909b794a4c5a4addee3eb944aa80ecfa3b03e6e5e1f67a62b5f3a5dcdc412b3e975352057ff40 talloc-2.1.15.tar.gz
-d19553fae679b5db10ab77a86f9fa0525ccba37a3ef30e530cd96245ee5fc94d4570079bbfe0271c32fbc84a3556c4bf86cc1cab6ffb61863cbce3f5a911efec waf-location.patch"
+sha512sums="c46488deda99753fd79566d42cae88899b71196513a127813be2cb855e7f36b77132f0552297ee4153ba4d8f177cea3bb0dc93340caabf321c026657744684d9 talloc-2.3.4.tar.gz"
diff --git a/user/talloc/waf-location.patch b/user/talloc/waf-location.patch
deleted file mode 100644
index a5ca47f44..000000000
--- a/user/talloc/waf-location.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- talloc-2.1.15/Makefile 2019-01-14 17:24:45.000000000 -0500
-+++ talloc-2.1.15/Makefile 2019-01-27 22:57:15.919981283 -0500
-@@ -1,6 +1,6 @@
- # simple makefile wrapper to run waf
-
--WAF_BINARY=$(PYTHON) ../../buildtools/bin/waf
-+WAF_BINARY=$(PYTHON) buildtools/bin/waf
- WAF=PYTHONHASHSEED=1 WAF_MAKE=1 $(WAF_BINARY)
-
- all:
diff --git a/user/tcpdump/APKBUILD b/user/tcpdump/APKBUILD
index 7adeefa35..81b99632b 100644
--- a/user/tcpdump/APKBUILD
+++ b/user/tcpdump/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=tcpdump
-pkgver=4.9.2
-pkgrel=1
+pkgver=4.99.1
+pkgrel=0
pkgdesc="A tool for network monitoring and data acquisition"
url="http://www.tcpdump.org"
arch="all"
@@ -11,15 +11,44 @@ depends=""
makedepends="libpcap-dev openssl-dev perl"
subpackages="$pkgname-doc"
source="http://www.tcpdump.org/release/$pkgname-$pkgver.tar.gz
- CVE-2018-19519.patch
- "
+ rm-vendor-specific-tests.patch"
# secfixes:
+# 4.99.1-r0:
+# - CVE-2020-8037
# 4.9.2-r1:
# - CVE-2018-19519
+# 4.9.2-r2:
+# - CVE-2017-16808
+# 4.9.3-r0:
+# - CVE-2018-10103
+# - CVE-2018-10105
+# - CVE-2018-14461
+# - CVE-2018-14462
+# - CVE-2018-14463
+# - CVE-2018-14464
+# - CVE-2018-14465
+# - CVE-2018-14466
+# - CVE-2018-14467
+# - CVE-2018-14468
+# - CVE-2018-14469
+# - CVE-2018-14470
+# - CVE-2018-14879
+# - CVE-2018-14880
+# - CVE-2018-14881
+# - CVE-2018-14882
+# - CVE-2018-16227
+# - CVE-2018-16228
+# - CVE-2018-16229
+# - CVE-2018-16230
+# - CVE-2018-16300
+# - CVE-2018-16301
+# - CVE-2018-16451
+# - CVE-2018-16452
+# - CVE-2019-15166
+# - CVE-2019-15167
build () {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,15 +60,13 @@ build () {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
rm -f "$pkgdir"/usr/sbin/tcpdump.4*
}
-sha512sums="e1bc19a5867d6e3628f3941bdf3ec831bf13784f1233ca1bccc46aac1702f47ee9357d7ff0ca62cddf211b3c8884488c21144cabddd92c861e32398cd8f7c44b tcpdump-4.9.2.tar.gz
-eb4232e434064ec59b07840aa394cfcc05c89e817f2d4ebeb4da1dbb1c910fe1805857356d6304ebdb16e32aa6476ce90f164aabc60501b493fd5601b380af7e CVE-2018-19519.patch"
+sha512sums="53d31355e1a6ef5a65bb3bf72454169fc80adf973a327a5768840e6ccf0550fbeb3c8a41f959635076d871df0619680321910a3a97879607f481cdaa8b7ceda7 tcpdump-4.99.1.tar.gz
+83e731c2c253e69a9fb5d2d42abbe8cc6439d3d9dadd2e412ed0e2a83d820228a1f4018fa1627568c723d376562a85bd099dd2738fd79dcc63abcfc8306fece3 rm-vendor-specific-tests.patch"
diff --git a/user/tcpdump/CVE-2018-19519.patch b/user/tcpdump/CVE-2018-19519.patch
deleted file mode 100644
index ac3293927..000000000
--- a/user/tcpdump/CVE-2018-19519.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- tcpdump-4.9.2/print-hncp.c.old 2017-09-03 23:17:14.000000000 +0000
-+++ tcpdump-4.9.2/print-hncp.c 2018-12-07 19:31:24.360000000 +0000
-@@ -228,6 +228,7 @@
- snprintf(buf, sizeof(buf), "%s/%d", ipaddr_string(ndo, &addr), plen);
- plenbytes += 1 + IPV4_MAPPED_HEADING_LEN;
- } else {
-+ buf[0] = '\0';
- plenbytes = decode_prefix6(ndo, prefix, max_length, buf, sizeof(buf));
- }
-
diff --git a/user/tcpdump/rm-vendor-specific-tests.patch b/user/tcpdump/rm-vendor-specific-tests.patch
new file mode 100644
index 000000000..234124b00
--- /dev/null
+++ b/user/tcpdump/rm-vendor-specific-tests.patch
@@ -0,0 +1,34 @@
+--- ./tests/TESTLIST 2021-10-04 13:24:39.359685770 +0000
++++ ./tests/TESTLIST 2021-10-04 13:26:27.408368225 +0000
+@@ -36,24 +36,24 @@
+ bgp-rt-prefix bgp-rt-prefix.pcap bgp-rt-prefix.out -v
+
+ # Broadcom tag tests
+-brcmtag brcm-tag.pcap brcm-tag.out
+-brcmtag-e brcm-tag.pcap brcm-tag-e.out -e
+-brcmtagprepend brcm-tag-prepend.pcap brcm-tag-prepend.out -e
++#brcmtag brcm-tag.pcap brcm-tag.out
++#brcmtag-e brcm-tag.pcap brcm-tag-e.out -e
++#brcmtagprepend brcm-tag-prepend.pcap brcm-tag-prepend.out -e
+
+ # Broadcom LI
+ bcm-li bcm-li.pcap bcm-li.out
+ bcm-li-v bcm-li.pcap bcm-li-v.out -v
+
+ # Marvell DSA tag tests
+-dsa dsa.pcap dsa.out
+-dsa-e dsa.pcap dsa-e.out -e
++#dsa dsa.pcap dsa.out
++#dsa-e dsa.pcap dsa-e.out -e
+
+ # EAP tests
+ # now in smb.tests
+
+ # Marvell DSA tag tests
+-edsa edsa.pcap edsa.out
+-edsa-e edsa.pcap edsa-e.out -e
++#edsa edsa.pcap edsa.out
++#edsa-e edsa.pcap edsa-e.out -e
+
+ # ESP tests
+ esp0 02-sunrise-sunset-esp.pcap esp0.out
diff --git a/user/tcsh/002-test_123-posix_fix.patch b/user/tcsh/002-test_123-posix_fix.patch
deleted file mode 100644
index 6ed59de38..000000000
--- a/user/tcsh/002-test_123-posix_fix.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-Author: Dan Theisen <djt@hxx.in>
-Date: Wed Jun 06 03:30:25 2018 -0800
-
-The following lines have a subtle change around [:blank:], changing it
-to [[:blank:]] instead. This is required because POSIX treats characters
-inside of brackets as a group of characters to match against. In this case,
-[[:space:]] means [] group of characters, and [:space:] is the group, as per:
-IEEE Std 1003.1-2017 (Revision of IEEE Std 1003.1-2008), Chapter 9
-http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html
-
---- tcsh-6.20.00/tests/lexical.at.old 2018-06-06 02:20:16.787145186 -0700
-+++ tcsh-6.20.00/tests/lexical.at 2018-06-06 02:21:09.537890842 -0700
-@@ -567,10 +567,10 @@
- ]])
- AT_DATA([uniformity_test.csh],
- [[
--set SERVICE_NAME_LOG = `cat batchsystem.properties | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[:blank:]*\([^$]*\)$/\1/p' | perl -pe 's/\s//g' | perl -pe 's/\)/\\\)/g' | perl -pe 's/\(/\\\(/g'`
-+set SERVICE_NAME_LOG = `cat batchsystem.properties | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[[:blank:]]*\([^$]*\)$/\1/p' | perl -pe 's/\s//g' | perl -pe 's/\)/\\\)/g' | perl -pe 's/\(/\\\(/g'`
- echo -n "$SERVICE_NAME_LOG" > ./output1
-
--cat batchsystem.properties | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[:blank:]*\([^$]*\)$/\1/p' | perl -pe 's/\s//g' | perl -pe 's/\)/\\\)/g' | perl -pe 's/\(/\\\(/g' > ./output2
-+cat batchsystem.properties | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[[:blank:]]*\([^$]*\)$/\1/p' | perl -pe 's/\s//g' | perl -pe 's/\)/\\\)/g' | perl -pe 's/\(/\\\(/g' > ./output2
-
- diff -uprN ./output1 ./output2 >& /dev/null
-
-@@ -587,7 +587,7 @@
- echo "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP\)(HOST=db\)(PORT=1521\)\)(CONNECT_DATA=(SERVER=DEDICATED\)(SERVICE_NAME=bns03\)\)\)" > ./expected_result
-
- set string = "jdbc_url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=bns03)))"
--set SERVICE_NAME_LOG = `echo "$string" | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[:blank:]*\([^$]*\)$/\1/p' | perl -pe 's/\)/\\\)/g'`
-+set SERVICE_NAME_LOG = `echo "$string" | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[[:blank:]]*\([^$]*\)$/\1/p' | perl -pe 's/\)/\\\)/g'`
-
- echo "$SERVICE_NAME_LOG" > ./actual_result
-
diff --git a/user/tcsh/APKBUILD b/user/tcsh/APKBUILD
index 2fdfac0b2..2a926d652 100644
--- a/user/tcsh/APKBUILD
+++ b/user/tcsh/APKBUILD
@@ -1,24 +1,24 @@
# Contributor: Dan Theisen <djt@hxx.in>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=tcsh
-pkgver=6.20.00
-pkgrel=2
+pkgver=6.22.04
+_pkgver=${pkgver%.*.*}_${pkgver#*.}
+_pkgver=${_pkgver%.*}_${_pkgver#*.}
+pkgrel=0
pkgdesc="extended C-shell"
-url="http://www.tcsh.org"
+url="https://www.tcsh.org"
arch="all"
license="BSD-3-Clause"
depends=""
checkdepends="diffutils autoconf"
makedepends="ncurses-dev ncurses-terminfo utmps-dev gettext-tiny-dev"
-install="$pkgname.post-install $pkgname.post-upgrade $pkgname.pre-deinstall"
subpackages="$pkgname-doc"
-options="!checkroot"
-source="$pkgname-$pkgver.tar.gz::http://http.debian.net/debian/pool/main/t/tcsh/${pkgname}_${pkgver}.orig.tar.gz
- 001-sysmalloc.patch
- 002-test_123-posix_fix.patch"
+install="$pkgname.post-install $pkgname.post-upgrade $pkgname.pre-deinstall"
+source="$pkgname-$pkgver.tar.gz::https://github.com/tcsh-org/tcsh/archive/TCSH${_pkgver}.tar.gz
+ 001-sysmalloc.patch"
+builddir="$srcdir/${pkgname}-TCSH${_pkgver}"
build() {
- cd "$builddir"
LIBS="-lutmps -lskarnet -ltinfo" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,15 +33,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="c5635393c22341e62fb9a0b953ddf8871a876ab09deb08c98237f93afa9257b4a3381d1db65eefe769e22ef845db29ab7bc78773f1f609d73c8205689a6683e9 tcsh-6.20.00.tar.gz
-40149d8eb2fc0fe5184f3c24c7a1b728e881cc0048ccd37a986c3b2d2094499ec1c37ae2bae4c209fb8a847aa943e83e81f79e3d2f55c59990bc00d9d07f5a94 001-sysmalloc.patch
-b4c1afe04554d117b1402608bcdb243148c0c7b2442bdc10dde3ed6601db5e7c5a2341373f9bdc31fda8860e47a6e152cdcc4e3a8b273742037eebc624df282c 002-test_123-posix_fix.patch"
+sha512sums="0f4b70c1c5bb29fb56a2eacac5c766914cb5042a9cf94e92735ef5ff2ca1162b345cf21b6b645020a5122b820a92678109bb1072b0c73c89fa70bd710aa1dd5f tcsh-6.22.04.tar.gz
+40149d8eb2fc0fe5184f3c24c7a1b728e881cc0048ccd37a986c3b2d2094499ec1c37ae2bae4c209fb8a847aa943e83e81f79e3d2f55c59990bc00d9d07f5a94 001-sysmalloc.patch"
diff --git a/user/tellico/APKBUILD b/user/tellico/APKBUILD
index 33cad700d..677dd6007 100644
--- a/user/tellico/APKBUILD
+++ b/user/tellico/APKBUILD
@@ -1,10 +1,10 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=tellico
-pkgver=3.1.4
+pkgver=3.3.1
pkgrel=0
pkgdesc="Collection manager"
-url="http://tellico-project.org/"
+url="https://tellico-project.org/"
arch="all"
license="GPL-2.0-only OR GPL-3.0-only"
depends=""
@@ -19,6 +19,7 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev libxml2-dev libxslt-dev
subpackages="$pkgname-doc $pkgname-lang"
source="http://tellico-project.org/files/tellico-$pkgver.tar.xz
btparse-strcasecmp.patch
+ modern-taglib.patch
"
build() {
@@ -32,21 +33,22 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS -std=gnu99" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- # imagejob: needs running X11
+ # imagejob, cite, csv, pdf: needs running X11
# htmlexporter: needs plasma desktop
# filelisting: needs dbus
# tellicoread: needs network
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E '(filelisting|imagejob|htmlexporter|tellicoread)test'
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E '(cite|csv|filelisting|imagejob|htmlexporter|pdf|tellicoread|comparison)test'
}
package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="d09183bee13ae9f7c6c5114b76eeeb959a184def559ae239bb880ef9be964e33878530e9c4c0d3baa6f872bf8db155dffb94592e3a857623ab131d2f28f1f139 tellico-3.1.4.tar.xz
-4627e717d67340de6d88f7a21604a66ba236c651a0ae38d9d3569b76ad58c79f046cfd5686dd688de86d6acafc17ba3959902babdc7f00ab8e9d65717c4fab4a btparse-strcasecmp.patch"
+sha512sums="12d49aba8c99cd16e426ac0144fa7343c5b1348a8c9a0892f30ff274f0e98f9ad7819c03c4ecdd0dc2f826377468ebdab1996828e992fcd293c7ffe4f844ab74 tellico-3.3.1.tar.xz
+4627e717d67340de6d88f7a21604a66ba236c651a0ae38d9d3569b76ad58c79f046cfd5686dd688de86d6acafc17ba3959902babdc7f00ab8e9d65717c4fab4a btparse-strcasecmp.patch
+1d2b7825249167868b4127e424b3763551d9c361c500bb251b2e22e6e0b938e3015454092ec9e4724b2fd7a3bc1b059f9ead52cf75b7c85ca3a66d0fc3fe57e5 modern-taglib.patch"
diff --git a/user/tellico/modern-taglib.patch b/user/tellico/modern-taglib.patch
new file mode 100644
index 000000000..194914da8
--- /dev/null
+++ b/user/tellico/modern-taglib.patch
@@ -0,0 +1,13 @@
+Fix build with Taglib's built-in CMake module.
+--- tellico-3.3.1/CMakeLists.txt.old 2020-06-01 00:57:12.000000000 +0000
++++ tellico-3.3.1/CMakeLists.txt 2021-01-28 04:48:08.457839033 +0000
+@@ -128,7 +128,8 @@
+ TYPE OPTIONAL)
+ if(TAGLIB_FOUND)
+ add_definitions(${TAGLIB_CFLAGS})
+- include_directories(${TAGLIB_INCLUDES})
++ include_directories(${Taglib_INCLUDE_DIRS})
++ set(TAGLIB_LIBRARIES ${Taglib_LIBRARIES})
+ endif(TAGLIB_FOUND)
+
+ find_package(Yaz 2.0)
diff --git a/user/terminus-font/75-yes-terminus.conf b/user/terminus-font/75-yes-terminus.conf
new file mode 100644
index 000000000..84b0a95a0
--- /dev/null
+++ b/user/terminus-font/75-yes-terminus.conf
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
+<fontconfig>
+<!-- Accept terminus font -->
+ <selectfont>
+ <acceptfont>
+ <pattern>
+ <patelt name="family"><string>Terminus</string></patelt>
+ </pattern>
+ </acceptfont>
+ </selectfont>
+ <alias>
+ <family>xos4 Terminus</family>
+ <prefer><family>Terminus</family></prefer>
+ <default><family>fixed</family></default>
+ </alias>
+</fontconfig>
diff --git a/user/terminus-font/APKBUILD b/user/terminus-font/APKBUILD
index 10ebdd481..6e76721f8 100644
--- a/user/terminus-font/APKBUILD
+++ b/user/terminus-font/APKBUILD
@@ -1,8 +1,9 @@
# Contributor: Max Rees <maxcrees@me.com>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=terminus-font
-pkgver=4.46
-pkgrel=1
+pkgver=4.49.1
+_pkgver=${pkgver%.*}
+pkgrel=0
pkgdesc="Monospace bitmap font (for X11 and console)"
url="http://terminus-font.sourceforge.net/" # No HTTPS
arch="noarch"
@@ -10,10 +11,10 @@ options="!check" # Fonts have no test suite
license="OFL-1.1"
depends=""
makedepends="bdftopcf python3"
-source="https://downloads.sourceforge.net/project/$pkgname/$pkgname-$pkgver/$pkgname-$pkgver.tar.gz"
+source="https://downloads.sourceforge.net/project/$pkgname/$pkgname-$_pkgver/$pkgname-$pkgver.tar.gz
+ 75-yes-terminus.conf"
build() {
- cd "$builddir"
./configure \
--prefix=/usr \
--psfdir=/usr/share/consolefonts \
@@ -22,14 +23,16 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
- install -Dm644 75-yes-terminus.conf \
+ # Use custom fontconfig since the shipped one doesn't provide
+ # a correct alias
+ install -Dm644 "$srcdir"/75-yes-terminus.conf \
"$pkgdir/etc/fonts/conf.avail/75-yes-terminus.conf"
install -d "$pkgdir/etc/fonts/conf.d"
cd "$pkgdir/etc/fonts/conf.d"
ln -s /etc/fonts/conf.avail/75-yes-terminus.conf .
}
-sha512sums="ae221920ecff54b9575a25d30a429feee6e19ef1e9669896c34f86f80d5495c3654f5423ff1df76e86bc999d1f37c306048b44d8ca55144f0f299926d3d33b58 terminus-font-4.46.tar.gz"
+sha512sums="2e3a99960c459a453b5879bebbebeb653f0a22060177bf75c67bbeb7d32cfe1acce9e74a88fdc42e299b6dc402e0708552487abd26e80e985c7d6059b0d445a8 terminus-font-4.49.1.tar.gz
+ac7bdf367bbff1e5735b5bd65fc1bc06b55bcb72aaafeb08c7d8e969aabad863474b1104faa42ead7d838433c80cfc50f05578dad03c8081cd82cfda0af86a83 75-yes-terminus.conf"
diff --git a/user/testdisk/APKBUILD b/user/testdisk/APKBUILD
new file mode 100644
index 000000000..8dfe19a0a
--- /dev/null
+++ b/user/testdisk/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: CyberLeo <cyberleo@cyberleo.net>
+# Maintainer: CyberLeo <cyberleo@cyberleo.net>
+pkgname=testdisk
+pkgver=7.1
+pkgrel=0
+pkgdesc="A data recovery suite"
+url="https://www.cgsecurity.org/wiki/TestDisk"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="e2fsprogs-dev ntfs-3g-dev ncurses-dev zlib-dev libjpeg-turbo-dev"
+subpackages="$pkgname-doc"
+source="https://www.cgsecurity.org/testdisk-$pkgver.tar.bz2"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="ad6531eec45c1ed8d4a0ce6132692bb609c4c269fbca57f788ce808214e0b00b5fb1187745a859c5da8a3cb8de18b29904792d3246b15cedfa24bf24cbfe3df5 testdisk-7.1.tar.bz2"
diff --git a/user/tf/0001-Add-DESTDIR-support.patch b/user/tf/0001-Add-DESTDIR-support.patch
deleted file mode 100644
index e45794bd4..000000000
--- a/user/tf/0001-Add-DESTDIR-support.patch
+++ /dev/null
@@ -1,113 +0,0 @@
---- tf-50b8/unix/unix.mak
-+++ tf-50b8.new/unix/unix.mak
-@@ -87,57 +87,65 @@
- -test -z "$(STRIP)" || $(STRIP) tf$(X) || true
-
- PREFIXDIRS:
-- test -d "$(bindir)" || mkdir $(bindir)
-- test -d "$(datadir)" || mkdir $(datadir)
-
- install_TF $(TF): tf$(X) $(BUILDERS)
-- -@rm -f $(TF)
-- cp tf$(X) $(TF)
-- chmod $(MODE) $(TF)
-+ install -Dm755 tf$(X) $(DESTDIR)$(bindir)/tf
-
- SYMLINK $(SYMLINK): $(TF)
-- test -z "$(SYMLINK)" || { rm -f $(SYMLINK) && ln -s $(TF) $(SYMLINK); }
-
- LIBRARY $(TF_LIBDIR): ../tf-lib/tf-help ../tf-lib/tf-help.idx
-- @echo '## Creating library directory...'
--# @# Overly simplified shell commands, to avoid problems on ultrix
-- -@test -n "$(TF_LIBDIR)" || echo "TF_LIBDIR is undefined."
-- test -n "$(TF_LIBDIR)"
-- test -d "$(TF_LIBDIR)" || mkdir $(TF_LIBDIR)
-- -@test -d "$(TF_LIBDIR)" || echo "Can't make $(TF_LIBDIR) directory. See if"
-- -@test -d "$(TF_LIBDIR)" || echo "there is already a file with that name."
-- test -d "$(TF_LIBDIR)"
--#
--# @#rm -f $(TF_LIBDIR)/*; # wrong: this would remove local.tf, etc.
-- @echo '## Copying library files...'
-- cd ../tf-lib; \
-- for f in *; do test -f $$f && files="$$files $$f"; done; \
-- ( cd $(TF_LIBDIR); rm -f $$files tf.help tf.help.index; ); \
-- cp $$files $(TF_LIBDIR); \
-- cd $(TF_LIBDIR); \
-- chmod $(MODE) $$files; chmod ugo-wx $$files
-- -rm -f $(TF_LIBDIR)/CHANGES
-- cp ../CHANGES $(TF_LIBDIR)
-- chmod $(MODE) $(TF_LIBDIR)/CHANGES; chmod ugo-wx $(TF_LIBDIR)/CHANGES
-- chmod $(MODE) $(TF_LIBDIR)
-- -@cd $(TF_LIBDIR); old=`ls replace.tf 2>/dev/null`; \
-- if [ -n "$$old" ]; then \
-- echo "## WARNING: Obsolete files found in $(TF_LIBDIR): $$old"; \
-- fi
-- @echo '## Creating links so old library names still work...'
--# @# note: ln -sf isn't portable.
-- @cd $(TF_LIBDIR); \
-- rm -f bind-bash.tf; ln -s kb-bash.tf bind-bash.tf; \
-- rm -f bind-emacs.tf; ln -s kb-emacs.tf bind-emacs.tf; \
-- rm -f completion.tf; ln -s complete.tf completion.tf; \
-- rm -f factorial.tf; ln -s factoral.tf factorial.tf; \
-- rm -f file-xfer.tf; ln -s filexfer.tf file-xfer.tf; \
-- rm -f local.tf.sample; ln -s local-eg.tf local.tf.sample; \
-- rm -f pref-shell.tf; ln -s psh.tf pref-shell.tf; \
-- rm -f space_page.tf; ln -s spc-page.tf space_page.tf; \
-- rm -f speedwalk.tf; ln -s spedwalk.tf speedwalk.tf; \
-- rm -f stack_queue.tf; ln -s stack-q.tf stack_queue.tf; \
-- rm -f worldqueue.tf; ln -s world-q.tf worldqueue.tf;
-+ install -Dm644 ../tf-lib/lisp.tf $(DESTDIR)$(datadir)/tf-lib/lisp.tf
-+ install -Dm644 ../tf-lib/hanoi.tf $(DESTDIR)$(datadir)/tf-lib/hanoi.tf
-+ install -Dm644 ../tf-lib/spell.tf $(DESTDIR)$(datadir)/tf-lib/spell.tf
-+ install -Dm644 ../tf-lib/spedwalk.tf $(DESTDIR)$(datadir)/tf-lib/spedwalk.tf
-+ install -Dm644 ../tf-lib/kb-emacs.tf $(DESTDIR)$(datadir)/tf-lib/kb-emacs.tf
-+ install -Dm644 ../tf-lib/tf-help.idx $(DESTDIR)$(datadir)/tf-lib/tf-help.idx
-+ install -Dm644 ../tf-lib/tools.tf $(DESTDIR)$(datadir)/tf-lib/tools.tf
-+ install -Dm644 ../tf-lib/watch.tf $(DESTDIR)$(datadir)/tf-lib/watch.tf
-+ install -Dm644 ../tf-lib/kb_badterm.tf $(DESTDIR)$(datadir)/tf-lib/kb_badterm.tf
-+ install -Dm644 ../tf-lib/world-q.tf $(DESTDIR)$(datadir)/tf-lib/world-q.tf
-+ install -Dm644 ../tf-lib/changes.tf $(DESTDIR)$(datadir)/tf-lib/changes.tf
-+ install -Dm644 ../tf-lib/stack-q.tf $(DESTDIR)$(datadir)/tf-lib/stack-q.tf
-+ install -Dm644 ../tf-lib/factoral.tf $(DESTDIR)$(datadir)/tf-lib/factoral.tf
-+ install -Dm644 ../tf-lib/cylon.tf $(DESTDIR)$(datadir)/tf-lib/cylon.tf
-+ install -Dm644 ../tf-lib/quoter.tf $(DESTDIR)$(datadir)/tf-lib/quoter.tf
-+ install -Dm644 ../tf-lib/psh.tf $(DESTDIR)$(datadir)/tf-lib/psh.tf
-+ install -Dm644 ../tf-lib/textutil.tf $(DESTDIR)$(datadir)/tf-lib/textutil.tf
-+ install -Dm644 ../tf-lib/finger.tf $(DESTDIR)$(datadir)/tf-lib/finger.tf
-+ install -Dm644 ../tf-lib/savehist.tf $(DESTDIR)$(datadir)/tf-lib/savehist.tf
-+ install -Dm644 ../tf-lib/textencode.tf $(DESTDIR)$(datadir)/tf-lib/textencode.tf
-+ install -Dm644 ../tf-lib/spc-page.tf $(DESTDIR)$(datadir)/tf-lib/spc-page.tf
-+ install -Dm644 ../tf-lib/teraterm.keyboard.cnf $(DESTDIR)$(datadir)/tf-lib/teraterm.keyboard.cnf
-+ install -Dm644 ../tf-lib/testcolor.tf $(DESTDIR)$(datadir)/tf-lib/testcolor.tf
-+ install -Dm644 ../tf-lib/tintin.tf $(DESTDIR)$(datadir)/tf-lib/tintin.tf
-+ install -Dm644 ../tf-lib/grep.tf $(DESTDIR)$(datadir)/tf-lib/grep.tf
-+ install -Dm644 ../tf-lib/tfrc $(DESTDIR)$(datadir)/tf-lib/tfrc
-+ install -Dm644 ../tf-lib/rwho.tf $(DESTDIR)$(datadir)/tf-lib/rwho.tf
-+ install -Dm644 ../tf-lib/alias.tf $(DESTDIR)$(datadir)/tf-lib/alias.tf
-+ install -Dm644 ../tf-lib/kbbind.tf $(DESTDIR)$(datadir)/tf-lib/kbbind.tf
-+ install -Dm644 ../tf-lib/complete.tf $(DESTDIR)$(datadir)/tf-lib/complete.tf
-+ install -Dm644 ../tf-lib/kbregion.tf $(DESTDIR)$(datadir)/tf-lib/kbregion.tf
-+ install -Dm644 ../tf-lib/color.tf $(DESTDIR)$(datadir)/tf-lib/color.tf
-+ install -Dm644 ../tf-lib/kb-bash.tf $(DESTDIR)$(datadir)/tf-lib/kb-bash.tf
-+ install -Dm644 ../tf-lib/kbstack.tf $(DESTDIR)$(datadir)/tf-lib/kbstack.tf
-+ install -Dm644 ../tf-lib/filexfer.tf $(DESTDIR)$(datadir)/tf-lib/filexfer.tf
-+ install -Dm644 ../tf-lib/activity_status.tf $(DESTDIR)$(datadir)/tf-lib/activity_status.tf
-+ install -Dm644 ../tf-lib/tfstatus.tf $(DESTDIR)$(datadir)/tf-lib/tfstatus.tf
-+ install -Dm644 ../tf-lib/relog.tf $(DESTDIR)$(datadir)/tf-lib/relog.tf
-+ install -Dm644 ../tf-lib/local-eg.tf $(DESTDIR)$(datadir)/tf-lib/local-eg.tf
-+ install -Dm644 ../tf-lib/stdlib.tf $(DESTDIR)$(datadir)/tf-lib/stdlib.tf
-+ install -Dm644 ../tf-lib/at.tf $(DESTDIR)$(datadir)/tf-lib/at.tf
-+ install -Dm644 ../tf-lib/tick.tf $(DESTDIR)$(datadir)/tf-lib/tick.tf
-+ install -Dm644 ../tf-lib/kb-os2.tf $(DESTDIR)$(datadir)/tf-lib/kb-os2.tf
-+ install -Dm644 ../tf-lib/kbfunc.tf $(DESTDIR)$(datadir)/tf-lib/kbfunc.tf
-+ install -Dm644 ../tf-lib/pcmd.tf $(DESTDIR)$(datadir)/tf-lib/pcmd.tf
-+ install -Dm644 ../tf-lib/map.tf $(DESTDIR)$(datadir)/tf-lib/map.tf
-+ install -Dm644 ../tf-lib/activity_status2.tf $(DESTDIR)$(datadir)/tf-lib/activity_status2.tf
-+ install -Dm644 ../tf-lib/kb-old.tf $(DESTDIR)$(datadir)/tf-lib/kb-old.tf
-+ install -Dm644 ../tf-lib/tr.tf $(DESTDIR)$(datadir)/tf-lib/tr.tf
-+ install -Dm644 ../CHANGES $(DESTDIR)$(datadir)/tf-lib/CHANGES
-+ install -Dm644 ../README $(DESTDIR)$(datadir)/tf-lib/README
-+ install -Dm644 ../tf-lib/examples.old $(DESTDIR)$(datadir)/tf-lib/examples.old
-
- makehelp: makehelp.c
- $(CC) $(CFLAGS) -o makehelp makehelp.c
diff --git a/user/tf/0002-Correct-use-of-va_list.patch b/user/tf/0002-Correct-use-of-va_list.patch
deleted file mode 100644
index d13fcd854..000000000
--- a/user/tf/0002-Correct-use-of-va_list.patch
+++ /dev/null
@@ -1,34 +0,0 @@
-From: Russ Allbery <rra@debian.org>
-Date: Sun, 17 Feb 2008 22:23:24 -0800
-Subject: Correct use of va_list
-
-va_copy a va_list before using it in vsprintf so that we don't use the
-same va_list repeatedly. Patch taken from the upstream bug tracker
-and will apparently be in the next release after 5.0beta8.
----
- src/tfio.c | 5 ++++-
- 1 file changed, 4 insertions(+), 1 deletion(-)
-
-diff --git a/src/tfio.c b/src/tfio.c
-index 2cd2103..151583e 100644
---- a/src/tfio.c
-+++ b/src/tfio.c
-@@ -497,6 +497,7 @@ void vSprintf(String *buf, int flags, const char *fmt, va_list ap)
- const conString *Sval;
- int len, min, max, leftjust, stars;
- attr_t attrs = buf->attrs;
-+ va_list ap_copy;
-
- if (!(flags & SP_APPEND) && buf->data) Stringtrunc(buf, 0);
- while (*fmt) {
-@@ -522,7 +523,9 @@ void vSprintf(String *buf, int flags, const char *fmt, va_list ap)
- case 'x': case 'X': case 'u': case 'o':
- case 'f': case 'e': case 'E': case 'g': case 'G':
- case 'p':
-- vsprintf(tempbuf, spec, ap);
-+ va_copy(ap_copy, ap);
-+ vsprintf(tempbuf, spec, ap_copy);
-+ va_end(ap_copy);
- Stringcat(buf, tempbuf);
- /* eat the arguments used by vsprintf() */
- while (stars--) (void)va_arg(ap, int);
diff --git a/user/tf/0003-Minor-man-page-fixes.patch b/user/tf/0003-Minor-man-page-fixes.patch
deleted file mode 100644
index 9611744a5..000000000
--- a/user/tf/0003-Minor-man-page-fixes.patch
+++ /dev/null
@@ -1,112 +0,0 @@
-From: Russ Allbery <rra@debian.org>
-Date: Sun, 17 Feb 2008 22:17:59 -0800
-Subject: Minor man page fixes
-
-Escape hyphens properly, add a better man page header, fix the
-placement of punctuation around font changes, and fix a spelling
-error.
----
- src/tf.1.nroffman | 34 +++++++++++++++++-----------------
- 1 file changed, 17 insertions(+), 17 deletions(-)
-
-diff --git a/src/tf.1.nroffman b/src/tf.1.nroffman
-index e8daaca..90691db 100644
---- a/src/tf.1.nroffman
-+++ b/src/tf.1.nroffman
-@@ -1,11 +1,11 @@
- .\" $Id: tf.1.nroffman,v 34000.8 2007/01/13 23:12:39 kkeys Exp $
--.TH TF 1 LOCAL
-+.TH TF 1 "2007-01-13" "TinyFugue 5.0" "TinyFugue"
- .SH NAME
- tf \- TinyFugue, a MUD client
- .SH SYNOPSIS
--.B "tf [-f\fIfile\fB] [-lnq] [\fIworld\fB]"
-+.B "tf [\-f\fIfile\fB] [\-lnq] [\fIworld\fB]"
- .br
--.B "tf [-f\fIfile\fB] \fIhost\fB \fIport\fB"
-+.B "tf [\-f\fIfile\fB] \fIhost\fB \fIport\fB"
- .SH DESCRIPTION
- \fITinyFugue\fR (also known as "Fugue" or "TF") is a line-based client
- designed for connecting to MUD servers (note: LP, DIKU, and other servers
-@@ -48,15 +48,15 @@ world and try to connect to it.
- The \fBhost\fR may be an IP number or regular name format.
- .PP
- OPTIONS
--.IP "-f\fIfile\fR"
-+.IP "\-f\fIfile\fR"
- Load \fIfile\fR instead of $HOME/.tfrc at startup.
--.IP "-f"
-+.IP "\-f"
- Do not load any personal configuration file. The library will still be loaded.
--.IP "-l"
-+.IP "\-l"
- Disable automatic login.
--.IP "-n"
-+.IP "\-n"
- Do not connect to any world at startup.
--.IP "-q"
-+.IP "\-q"
- Quiet login (overrides %{quiet} flag).
-
- .SH FEATURES
-@@ -109,7 +109,7 @@ Log a session to a file.
- .sp
- Separate LP and Diku style prompts from normal output.
- .sp
--Page output using a --More-- prompt.
-+Page output using a \-\-More\-\- prompt.
- .sp
- Recall previously received text.
-
-@@ -120,14 +120,14 @@ configuration file "stdlib.tf", located in TFLIBDIR.
- TFLIBDIR is defined when \fITF\fR is installed, and is often
- /usr/local/lib/tf.lib, or under the home directory of the installer.
- This library contains many macros
--and definitions essential to the correct operation of \fITF.\fR
-+and definitions essential to the correct operation of \fITF\fR.
-
- Next, \fITF\fR will attempt to read your personal configuration
- file, $HOME/.tfrc, in which you can put any \fITF\fR commands you
- want executed automatically at startup. Two of the most useful
- commands to use in a \fITF\fR configuration file are /addworld and /load.
-
--For backward compatability, \fITF\fR will also try
-+For backward compatibility, \fITF\fR will also try
- to read the \fITinyTalk\fR configuration file.
- Its name defautls to $HOME/.tinytalk, or can be defined by the TINYTALK
- environment variable.
-@@ -140,19 +140,19 @@ the first Tinyclient with any great number of features, including
- hiliting and suppression of text, simple triggers, and separating input and
- output on the screen.
- Leo Plotkin (Grod) made rather extensive modifications to \fITinytalk\fR
--to produce \fITinywar,\fR which was plagued with some
-+to produce \fITinywar\fR, which was plagued with some
- serious bugs and was never officially released (the phrase "Tinywar
- doesn't exist" is often quoted), and is now an unsupported client.
- \fITF\fR began when Greg Hudson (Explorer_Bob) merged many of the new
--features of \fITinywar\fR back into \fITinyTalk,\fR
-+features of \fITinywar\fR back into \fITinyTalk\fR,
- and added many new features of his own, most notably the split screen.
- Some of the code in Greg's releases was contributed by Leo Plotkin.
--After Greg moved on to \fIVaporTalk,\fR Ken Keys (Hawkeye) took over design
-+After Greg moved on to \fIVaporTalk\fR, Ken Keys (Hawkeye) took over design
- and maintenance of \fITF\fR in July 1991, and continues to make improvements
- in features and performance.
- .PP
- The code size of \fITF\fR has surpassed 300K (unstripped),
--and is signifigantly larger than \fITinytalk.\fR
-+and is signifigantly larger than \fITinytalk\fR.
- It is, in fact, more than three times the size of a number of existing servers.
- As of version 3.0, it has 66 builtin commands and 57 library commands,
- each documented in the helpfile.
-@@ -225,8 +225,8 @@ default macro library.
- .PP
- The .tinytalk file may not be supported in the future; use .tfrc instead.
- .PP
--The '-' command line option in versions prior to 2.0 is no longer supported,
--and has been replaced with '-l'.
-+The '\-' command line option in versions prior to 2.0 is no longer supported,
-+and has been replaced with '\-l'.
-
- .SH BUGS
- .PP
diff --git a/user/tf/0006-Fix-library-install-path.patch b/user/tf/0006-Fix-library-install-path.patch
deleted file mode 100644
index 52c8e885f..000000000
--- a/user/tf/0006-Fix-library-install-path.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From: Russ Allbery <rra@debian.org>
-Date: Sun, 14 Aug 2016 14:14:47 -0700
-Subject: Fix library install path
-
-The upstream top-level configure script doesn't correctly handle
---program-suffix without this tweak.
----
- configure.in | 5 +++--
- 1 file changed, 3 insertions(+), 2 deletions(-)
-
-diff --git a/configure.in b/configure.in
-index e783564..c938531 100644
---- a/configure.in
-+++ b/configure.in
-@@ -599,13 +599,13 @@ fi
- dnl The "right" way of using program_transform_name, program_prefix, and
- dnl program_suffix expects you to use AC_ARG_PROGRAM here and do transformation
- dnl in the Makefile, but we want the values now, so we do it ourselves.
--EXENAME="tf"
-+EXENAME="tf" PROGNAME="tf"
- test "${program_prefix}" != "NONE" && EXENAME="${program_prefix}${EXENAME}"
- test "${program_suffix}" != "NONE" && EXENAME="${EXENAME}${program_suffix}"
- if test "${program_transform_name}" != "NONE"; then
- EXENAME=`echo "${EXENAME}" | sed "${program_transform_name}"`
- fi
--LIBNAME="${EXENAME}-lib"
-+LIBNAME="${PROGNAME}-lib"
-
- if test "$enable_symlink" = "no"; then
- SYMLINK=""
-@@ -616,6 +616,7 @@ else
- fi
-
- AC_SUBST(EXENAME)
-+AC_SUBST(PROGNAME)
- AC_SUBST(LIBNAME)
- AC_SUBST(SYMLINK)
-
diff --git a/user/tf/0007-Fix-spelling-errors.patch b/user/tf/0007-Fix-spelling-errors.patch
deleted file mode 100644
index 8e78721b7..000000000
--- a/user/tf/0007-Fix-spelling-errors.patch
+++ /dev/null
@@ -1,59 +0,0 @@
-From: Russ Allbery <rra@debian.org>
-Date: Sun, 14 Aug 2016 14:22:52 -0700
-Subject: Fix spelling errors
-
-occured -> occurred everywhere
----
- CHANGES | 4 ++--
- src/command.c | 2 +-
- src/signals.c | 2 +-
- 3 files changed, 4 insertions(+), 4 deletions(-)
-
-diff --git a/CHANGES b/CHANGES
-index 037c766..dfc5029 100644
---- a/CHANGES
-+++ b/CHANGES
-@@ -316,7 +316,7 @@ Renamed BACKGROUND hook to BGTRIG (but old name still works).
- Added BGTEXT hook.
- Fixed activity_status.tf to update for lines generated by /echo -w.
- Fixed: ACTIVITY and PREACTIVITY hooks didn't run in the world in which the
-- activity occured when caused by /echo -w.
-+ activity occurred when caused by /echo -w.
- Fixed order of /dc message relative to text already queued on socket.
- Fixed: under certain conditions, a dead socket would not go away and could
- not be foregrounded.
-@@ -972,7 +972,7 @@ Fixed compilation error involving conditional and hstrerror under some
- lame compilers (socket.c:788).
- Fixed output misdirection during a read() inside a command sub.
- Fixed rare bug causing command line to execute in wrong world when a
-- simultaneous background trigger occured.
-+ simultaneous background trigger occurred.
- Fixed /world with no arguments.
- Fixed fatal input bug after /histsize -i. (35a21)
- Fixed bug which disabled history recording after /recall on an empty history.
-diff --git a/src/command.c b/src/command.c
-index 0409787..624d03b 100644
---- a/src/command.c
-+++ b/src/command.c
-@@ -605,7 +605,7 @@ int do_file_load(const char *args, int tinytalk)
- !user_result->u.ival && !warned)
- {
- eprintf("(This line was implicitly treated as an /addworld "
-- "because it occured before the first '/' line and did not "
-+ "because it occurred before the first '/' line and did not "
- "start with a '/', ';', or '#'.)");
- warned = 1;
- }
-diff --git a/src/signals.c b/src/signals.c
-index bd96b87..a00c70e 100644
---- a/src/signals.c
-+++ b/src/signals.c
-@@ -410,7 +410,7 @@ static char initial_dir[PATH_MAX+1] = "."; /* default: many users never chdir */
- static void coremsg(FILE *dumpfile)
- {
- fputs("Also describe what you were doing in tf when this\r\n", stderr);
-- fputs("occured, and whether you can repeat it.\r\n\n", stderr);
-+ fputs("occurred, and whether you can repeat it.\r\n\n", stderr);
- fprintf(dumpfile, "> %.512s\r\n", version);
- if (*sysname) fprintf(dumpfile, "> %.256s\r\n", sysname);
- fprintf(dumpfile, "> %.256s\r\n", featurestr->data);
diff --git a/user/tf/0008-Build-on-musl.patch b/user/tf/0008-Build-on-musl.patch
deleted file mode 100644
index 9ca62290c..000000000
--- a/user/tf/0008-Build-on-musl.patch
+++ /dev/null
@@ -1,49 +0,0 @@
-diff -Nurd tf-50b8/src/malloc.c tf-50b8.new/src/malloc.c
---- tf-50b8/src/malloc.c 2007-01-13 23:12:39.000000000 +0000
-+++ tf-50b8.new/src/malloc.c 2018-01-24 09:13:08.406519279 +0000
-@@ -12,7 +12,7 @@
- #include "signals.h"
- #include "malloc.h"
-
--caddr_t mmalloc_base = NULL;
-+void *mmalloc_base = NULL;
- int low_memory_warning = 0;
- static char *reserve = NULL;
-
-diff -Nurd tf-50b8/src/macro.c tf-50b8.new/src/macro.c
---- tf-50b8/src/macro.c 2007-01-13 23:12:39.000000000 +0000
-+++ tf-50b8.new/src/macro.c 2018-01-24 09:26:18.479836714 +0000
-@@ -893,7 +893,8 @@
- }
- spec->attr &= ~F_NONE;
- if (spec->nsubattr) {
-- int n = pcre_info(spec->trig.ri->re, NULL, NULL);
-+ int n = 0;
-+ pcre_fullinfo(spec->trig.ri->re, NULL, PCRE_INFO_CAPTURECOUNT, &n);
- for (i = 0; i < spec->nsubattr; i++) {
- spec->subattr[i].attr &= ~F_NONE;
- if (spec->subattr[i].subexp > n) {
-diff -Nurd tf-50b8/src/pattern.c tf-50b8.new/src/pattern.c
---- tf-50b8/src/pattern.c 2007-01-13 23:12:39.000000000 +0000
-+++ tf-50b8.new/src/pattern.c 2018-01-24 09:28:21.526500904 +0000
-@@ -151,7 +151,7 @@
- emsg ? emsg : "unknown error");
- goto tf_reg_compile_error;
- }
-- n = pcre_info(ri->re, NULL, NULL);
-+ pcre_fullinfo(ri->re, NULL, PCRE_INFO_CAPTURECOUNT, &n);
- if (n < 0) goto tf_reg_compile_error;
- ri->ovecsize = 3 * (n + 1);
- ri->ovector = dmalloc(NULL, sizeof(int) * ri->ovecsize, file, line);
-diff -Nurd tf-50b8/src/pattern.h tf-50b8.new/src/pattern.h
---- tf-50b8/src/pattern.h 2007-01-13 23:12:39.000000000 +0000
-+++ tf-50b8.new/src/pattern.h 2018-01-24 09:28:36.039833945 +0000
-@@ -10,7 +10,7 @@
- #ifndef PATTERN_H
- #define PATTERN_H
-
--#include "pcre-2.08/pcre.h"
-+#include <pcre.h>
-
- typedef struct RegInfo {
- pcre *re;
diff --git a/user/tf/APKBUILD b/user/tf/APKBUILD
deleted file mode 100644
index 65f205fb7..000000000
--- a/user/tf/APKBUILD
+++ /dev/null
@@ -1,47 +0,0 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-pkgname=tf
-pkgver=5.0b8
-_pkgver=${pkgver%.*}${pkgver#*.}
-pkgrel=0
-pkgdesc="Powerful curses-based MUD client"
-url="http://tinyfugue.sourceforge.net/"
-arch="all"
-options="!check" # no tests
-license="GPL-2.0+"
-depends=""
-makedepends="openssl-dev ncurses-dev pcre-dev"
-source="https://sourceforge.net/projects/tinyfugue/files/tinyfugue/5.0%20beta%208/tf-$_pkgver.tar.gz
- 0001-Add-DESTDIR-support.patch
- 0002-Correct-use-of-va_list.patch
- 0003-Minor-man-page-fixes.patch
- 0006-Fix-library-install-path.patch
- 0007-Fix-spelling-errors.patch
- 0008-Build-on-musl.patch
- "
-builddir="$srcdir/tf-$_pkgver"
-
-build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
-}
-
-sha512sums="3b99c039d7a9c6ab7ee7b1040ff7c99fe39cbe991f373333ea7c130d54383f102f14ae33303a415f5419cd43238caffc46114e842c6964329c0999e0f506e3d0 tf-50b8.tar.gz
-e891f5d4fb2db8f1f875fa2c7fa2a4d76c9ae2a54fdcc61c80e906e4f6f2d11e736fd2579d56cb313209e46c7ea01eba46b19ccf4b3f5e007585fd65fc547b34 0001-Add-DESTDIR-support.patch
-7d2b2da0f4213fcfbce86eb9042cb83751c80aba5881861d5f49d4604a4eba52d60b5254c8b119528f0890ae7a68dfe4fea7eb2c94dd0d01676b194bca4db219 0002-Correct-use-of-va_list.patch
-1e8f05d2744b60cc78f494283bb5f9ef7a804a6811d16028d5486a7394658a03aed04962adfd5bc60fe1517d3831b41f4ca1c3956a624f09a2a4b14f5ab91608 0003-Minor-man-page-fixes.patch
-0066bbb3919e6b157eb276c3975cadc258a195037c0f199c3f9db83868d6035f81b79b9a41a743c99f317fd253a2f670dcf122d5f7c449fc1677c56cfaa8bb6a 0006-Fix-library-install-path.patch
-a84aeaf097eb1ec61f9c86f73795ad9f8c111057837b1a0b127905302372e01b6489f9a19f14a29171cef9a787314d511dc98e1140d0c122dd9af5f526eb4bc0 0007-Fix-spelling-errors.patch
-f9eadd1ffb2bc51db5d2bd0e9636573ef560bf849a780c8ee99bccb3870463a1b2caeaa1d3005e11d99c7689ae6ecd8f75056db09cf2d3df084058b4a3db32f0 0008-Build-on-musl.patch"
diff --git a/user/the_silver_searcher/APKBUILD b/user/the_silver_searcher/APKBUILD
index c9f324a69..7c504dc9e 100644
--- a/user/the_silver_searcher/APKBUILD
+++ b/user/the_silver_searcher/APKBUILD
@@ -2,21 +2,23 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=the_silver_searcher
pkgver=2.2.0
-pkgrel=0
+pkgrel=1
pkgdesc="Tool for very fast searching of text in documents and code"
url="https://geoff.greer.fm/ag/"
arch="all"
options="!check" # Tests are not shipped in the release tarball...
license="Apache-2.0"
depends=""
-makedepends="pcre-dev xz-dev zlib-dev"
checkdepends="cram"
+makedepends="pcre-dev xz-dev zlib-dev"
subpackages="$pkgname-doc"
-source="https://geoff.greer.fm/ag/releases/the_silver_searcher-$pkgver.tar.gz"
-builddir="$srcdir/the_silver_searcher-$pkgver"
+source="https://geoff.greer.fm/ag/releases/the_silver_searcher-$pkgver.tar.gz
+ pipe-symlink.patch
+ pattern-fix.patch
+ no-common.patch
+ "
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,13 +30,14 @@ build() {
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="89d4e4f7f34c0d57aa880e7c3466f0373b961744a89ad30541e89e2d614322ab46c8044ec458406a117f74b0fea14cd3063fa4e0624a96526aa23eaccd6f1141 the_silver_searcher-2.2.0.tar.gz"
+sha512sums="89d4e4f7f34c0d57aa880e7c3466f0373b961744a89ad30541e89e2d614322ab46c8044ec458406a117f74b0fea14cd3063fa4e0624a96526aa23eaccd6f1141 the_silver_searcher-2.2.0.tar.gz
+4c7af6c22cb01d09070d642c2e1ace969ddbfc60750dba7ffa2f38cb960b68c01ffaa0edbbafe11cbc30805bd8f845bae1ea7863b181e55fc4263b4fe0b95fb4 pipe-symlink.patch
+8cce44cc3d1b9732fa616ad34ccca3292dddbc45280c64434aaae5ce5bb14cb9847fb4ff584b3042215d3adef6460c6f74a64f6eabe583fa440d89fc74b39feb pattern-fix.patch
+b7d0c96bfd8a9984b0082fac2530826cd3fb5f98ca957c03d628ed7f908f5e27108a18c00813fcb498ec12aa47b82fffc1d48b9d0ffaa5dd36960d7063c09a9e no-common.patch"
diff --git a/user/the_silver_searcher/no-common.patch b/user/the_silver_searcher/no-common.patch
new file mode 100644
index 000000000..50f1fa6a9
--- /dev/null
+++ b/user/the_silver_searcher/no-common.patch
@@ -0,0 +1,207 @@
+From 21eaa1c4160b868b0c5bbf59da17974429f30055 Mon Sep 17 00:00:00 2001
+From: Shlomi Fish <shlomif@shlomifish.org>
+Date: Wed, 15 Apr 2020 20:23:52 +0300
+Subject: [PATCH] Fix multiple global symbols definitions.
+
+See the use of extern here:
+
+* https://www.geeksforgeeks.org/understanding-extern-keyword-in-c/
+
+* https://en.wikipedia.org/wiki/External_variable
+
+*
+https://stackoverflow.com/questions/496448/how-to-correctly-use-the-extern-keyword-in-c
+---
+ src/ignore.c | 2 ++
+ src/ignore.h | 2 +-
+ src/log.c | 1 +
+ src/log.h | 2 +-
+ src/options.c | 2 ++
+ src/options.h | 2 +-
+ src/search.c | 13 +++++++++++++
+ src/search.h | 20 ++++++++++----------
+ src/util.c | 2 ++
+ src/util.h | 4 ++--
+ 10 files changed, 35 insertions(+), 15 deletions(-)
+
+diff --git a/src/ignore.c b/src/ignore.c
+index 7ae83f3ee..88036eff4 100644
+--- a/src/ignore.c
++++ b/src/ignore.c
+@@ -20,6 +20,8 @@
+ const int fnmatch_flags = FNM_PATHNAME;
+ #endif
+
++ignores *root_ignores;
++
+ /* TODO: build a huge-ass list of files we want to ignore by default (build cache stuff, pyc files, etc) */
+
+ const char *evil_hardcoded_ignore_files[] = {
+diff --git a/src/ignore.h b/src/ignore.h
+index 20d5a6af8..8db0f3772 100644
+--- a/src/ignore.h
++++ b/src/ignore.h
+@@ -29,7 +29,7 @@ struct ignores {
+ };
+ typedef struct ignores ignores;
+
+-ignores *root_ignores;
++extern ignores *root_ignores;
+
+ extern const char *evil_hardcoded_ignore_files[];
+ extern const char *ignore_pattern_files[];
+diff --git a/src/log.c b/src/log.c
+index 1481b6d02..f6f4e9a83 100644
+--- a/src/log.c
++++ b/src/log.c
+@@ -4,6 +4,7 @@
+ #include "log.h"
+ #include "util.h"
+
++pthread_mutex_t print_mtx = PTHREAD_MUTEX_INITIALIZER;
+ static enum log_level log_threshold = LOG_LEVEL_ERR;
+
+ void set_log_level(enum log_level threshold) {
+diff --git a/src/log.h b/src/log.h
+index 85847ee7b..318622c3c 100644
+--- a/src/log.h
++++ b/src/log.h
+@@ -9,7 +9,7 @@
+ #include <pthread.h>
+ #endif
+
+-pthread_mutex_t print_mtx;
++extern pthread_mutex_t print_mtx;
+
+ enum log_level {
+ LOG_LEVEL_DEBUG = 10,
+diff --git a/src/options.c b/src/options.c
+index 4abf4dcd3..699530138 100644
+--- a/src/options.c
++++ b/src/options.c
+@@ -20,6 +20,8 @@ const char *color_line_number = "\033[1;33m"; /* bold yellow */
+ const char *color_match = "\033[30;43m"; /* black with yellow background */
+ const char *color_path = "\033[1;32m"; /* bold green */
+
++cli_options opts;
++
+ /* TODO: try to obey out_fd? */
+ void usage(void) {
+ printf("\n");
+diff --git a/src/options.h b/src/options.h
+index aae930936..0d852167e 100644
+--- a/src/options.h
++++ b/src/options.h
+@@ -91,7 +91,7 @@ typedef struct {
+ } cli_options;
+
+ /* global options. parse_options gives it sane values, everything else reads from it */
+-cli_options opts;
++extern cli_options opts;
+
+ typedef struct option option_t;
+
+diff --git a/src/search.c b/src/search.c
+index 0f4ae2113..0dad3c072 100644
+--- a/src/search.c
++++ b/src/search.c
+@@ -2,6 +2,19 @@
+ #include "print.h"
+ #include "scandir.h"
+
++size_t alpha_skip_lookup[256];
++size_t *find_skip_lookup;
++uint8_t h_table[H_SIZE] __attribute__((aligned(64)));
++
++work_queue_t *work_queue = NULL;
++work_queue_t *work_queue_tail = NULL;
++int done_adding_files = 0;
++pthread_cond_t files_ready = PTHREAD_COND_INITIALIZER;
++pthread_mutex_t stats_mtx = PTHREAD_MUTEX_INITIALIZER;
++pthread_mutex_t work_queue_mtx = PTHREAD_MUTEX_INITIALIZER;
++
++symdir_t *symhash = NULL;
++
+ void search_buf(const char *buf, const size_t buf_len,
+ const char *dir_full_path) {
+ int binary = -1; /* 1 = yes, 0 = no, -1 = don't know */
+diff --git a/src/search.h b/src/search.h
+index 6bac42038..00aa018dd 100644
+--- a/src/search.h
++++ b/src/search.h
+@@ -31,9 +31,9 @@
+ #include "uthash.h"
+ #include "util.h"
+
+-size_t alpha_skip_lookup[256];
+-size_t *find_skip_lookup;
+-uint8_t h_table[H_SIZE] __attribute__((aligned(64)));
++extern size_t alpha_skip_lookup[256];
++extern size_t *find_skip_lookup;
++extern uint8_t h_table[H_SIZE] __attribute__((aligned(64)));
+
+ struct work_queue_t {
+ char *path;
+@@ -41,12 +41,12 @@ struct work_queue_t {
+ };
+ typedef struct work_queue_t work_queue_t;
+
+-work_queue_t *work_queue;
+-work_queue_t *work_queue_tail;
+-int done_adding_files;
+-pthread_cond_t files_ready;
+-pthread_mutex_t stats_mtx;
+-pthread_mutex_t work_queue_mtx;
++extern work_queue_t *work_queue;
++extern work_queue_t *work_queue_tail;
++extern int done_adding_files;
++extern pthread_cond_t files_ready;
++extern pthread_mutex_t stats_mtx;
++extern pthread_mutex_t work_queue_mtx;
+
+
+ /* For symlink loop detection */
+@@ -64,7 +64,7 @@ typedef struct {
+ UT_hash_handle hh;
+ } symdir_t;
+
+-symdir_t *symhash;
++extern symdir_t *symhash;
+
+ ssize_t search_buf(const char *buf, const size_t buf_len,
+ const char *dir_full_path);
+diff --git a/src/util.c b/src/util.c
+index 3949477b2..90ffb6f1d 100644
+--- a/src/util.c
++++ b/src/util.c
+@@ -21,6 +21,8 @@
+ } \
+ return ptr;
+
++FILE *out_fd = NULL;
++ag_stats stats;
+ void *ag_malloc(size_t size) {
+ void *ptr = malloc(size);
+ CHECK_AND_RETURN(ptr)
+diff --git a/src/util.h b/src/util.h
+index 0c9b9b112..338b05f45 100644
+--- a/src/util.h
++++ b/src/util.h
+@@ -12,7 +12,7 @@
+ #include "log.h"
+ #include "options.h"
+
+-FILE *out_fd;
++extern FILE *out_fd;
+
+ #ifndef TRUE
+ #define TRUE 1
+@@ -51,7 +51,7 @@ typedef struct {
+ } ag_stats;
+
+
+-ag_stats stats;
++extern ag_stats stats;
+
+ /* Union to translate between chars and words without violating strict aliasing */
+ typedef union {
diff --git a/user/the_silver_searcher/pattern-fix.patch b/user/the_silver_searcher/pattern-fix.patch
new file mode 100644
index 000000000..6489e2c7c
--- /dev/null
+++ b/user/the_silver_searcher/pattern-fix.patch
@@ -0,0 +1,78 @@
+From 755c6e5c06fc38903fa0d66be68a9c8ffa525c1b Mon Sep 17 00:00:00 2001
+From: Evan Moses <evan@emoses.org>
+Date: Thu, 9 Jan 2020 17:34:44 -0800
+Subject: [PATCH] Fix ignore patterns in subdirectories with leading slashes
+
+Currenetly if you have an ignore file in a subdirectory "sub" with a pattern
+like
+ /ignorethis
+The directory sub/ignorethis will be ignored if you run ag from
+within sub, but it won't be ignored if you run it from sub's parent.
+that is
+
+ $ ag needle
+
+will search files in sub/ignorethis, but
+
+ $ cd sub
+ $ ag needle
+
+Will not. This is a bug
+---
+ src/ignore.c | 8 ++++++--
+ tests/ignore_slash_in_subdir.t | 19 +++++++++++++++++++
+ 2 files changed, 25 insertions(+), 2 deletions(-)
+ create mode 100644 tests/ignore_slash_in_subdir.t
+
+diff --git a/src/ignore.c b/src/ignore.c
+index fa4188919..1d1c07b13 100644
+--- a/src/ignore.c
++++ b/src/ignore.c
+@@ -206,6 +206,7 @@ static int ackmate_dir_match(const char *dir_name) {
+ /* This is the hottest code in Ag. 10-15% of all execution time is spent here */
+ static int path_ignore_search(const ignores *ig, const char *path, const char *filename) {
+ char *temp;
++ int temp_start_pos;
+ size_t i;
+ int match_pos;
+
+@@ -216,9 +217,12 @@ static int path_ignore_search(const ignores *ig, const char *path, const char *f
+ }
+
+ ag_asprintf(&temp, "%s/%s", path[0] == '.' ? path + 1 : path, filename);
++ //ig->abs_path has its leading slash stripped, so we have to strip the leading slash
++ //of temp as well
++ temp_start_pos = (temp[0] == '/') ? 1 : 0;
+
+- if (strncmp(temp, ig->abs_path, ig->abs_path_len) == 0) {
+- char *slash_filename = temp + ig->abs_path_len;
++ if (strncmp(temp+temp_start_pos, ig->abs_path, ig->abs_path_len) == 0) {
++ char *slash_filename = temp + temp_start_pos + ig->abs_path_len;
+ if (slash_filename[0] == '/') {
+ slash_filename++;
+ }
+diff --git a/tests/ignore_slash_in_subdir.t b/tests/ignore_slash_in_subdir.t
+new file mode 100644
+index 000000000..167d6ffb4
+--- /dev/null
++++ b/tests/ignore_slash_in_subdir.t
+@@ -0,0 +1,19 @@
++Setup:
++
++ $ . $TESTDIR/setup.sh
++ $ mkdir -p subdir/ignoredir
++ $ mkdir ignoredir
++ $ printf 'match1\n' > subdir/ignoredir/file1.txt
++ $ printf 'match1\n' > ignoredir/file1.txt
++ $ printf '/ignoredir\n' > subdir/.ignore
++
++Ignore file in subdir/ignoredir, but not in ignoredir:
++
++ $ ag match
++ ignoredir/file1.txt:1:match1
++
++From subdir, ignore file in subdir/ignoredir:
++
++ $ cd subdir
++ $ ag match
++ [1]
diff --git a/user/the_silver_searcher/pipe-symlink.patch b/user/the_silver_searcher/pipe-symlink.patch
new file mode 100644
index 000000000..ee47f9439
--- /dev/null
+++ b/user/the_silver_searcher/pipe-symlink.patch
@@ -0,0 +1,26 @@
+From 095c3f091e23fda1d9d00bd42c38cf81bba1c14f Mon Sep 17 00:00:00 2001
+From: Jacob Wahlgren <jacob@dstsrc.net>
+Date: Wed, 28 Nov 2018 23:35:52 +0100
+Subject: [PATCH] Skip symlinks to named pipes
+
+The d_type field contains the type as lstat would put it, but when
+checking for a named pipe we need the stat behavior.
+
+Fixes https://github.com/ggreer/the_silver_searcher/issues/1272
+---
+ src/util.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/util.c b/src/util.c
+index cb23914d3..3949477b2 100644
+--- a/src/util.c
++++ b/src/util.c
+@@ -516,7 +516,7 @@ int is_symlink(const char *path, const struct dirent *d) {
+
+ int is_named_pipe(const char *path, const struct dirent *d) {
+ #ifdef HAVE_DIRENT_DTYPE
+- if (d->d_type != DT_UNKNOWN) {
++ if (d->d_type != DT_UNKNOWN && d->d_type != DT_LNK) {
+ return d->d_type == DT_FIFO || d->d_type == DT_SOCK;
+ }
+ #endif
diff --git a/user/threadweaver/APKBUILD b/user/threadweaver/APKBUILD
index 91ae58c82..1a2471ef0 100644
--- a/user/threadweaver/APKBUILD
+++ b/user/threadweaver/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=threadweaver
-pkgver=5.54.0
+pkgver=5.94.0
pkgrel=0
pkgdesc="High-level threading framework"
url="https://www.kde.org/"
@@ -15,7 +15,6 @@ subpackages="$pkgname-dev $pkgname-doc"
source="https://download.kde.org/stable/frameworks/${pkgver%.*}/threadweaver-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DBUILD_QCH:BOOL=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="aaea9474d1015748600c97ec18d2cac888b468ce6fe66e9c7c8ca4f0a176795839ad74df2a5292bd4ba6004ed6f563825d3be00f87fd56124de0e8765e11c842 threadweaver-5.54.0.tar.xz"
+sha512sums="3ca7c63ec47a6c11182304bec96b9de6ca2e5a370de1e93350d00861a5d8d842e55e8e32390befa77d880e69ba763a0d576e17856bae650326dd9f1cb48a0fdc threadweaver-5.94.0.tar.xz"
diff --git a/user/thunar-archive-plugin/APKBUILD b/user/thunar-archive-plugin/APKBUILD
new file mode 100644
index 000000000..233cc8b57
--- /dev/null
+++ b/user/thunar-archive-plugin/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=thunar-archive-plugin
+pkgver=0.5.2
+pkgrel=0
+pkgdesc="Archive management support for Thunar"
+url="https://www.xfce.org"
+arch="all"
+license="LGPL-2.0+ AND GPL-2.0+"
+depends=""
+makedepends="exo-dev intltool thunar-dev"
+subpackages="$pkgname-lang"
+source="https://archive.xfce.org/src/thunar-plugins/thunar-archive-plugin/0.5/thunar-archive-plugin-$pkgver.tar.bz2"
+
+build() {
+ LIBS="-lintl" ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="f334b960c623bc6c5736ba38d0e965b4e8d4f22fe857a66301c36c255701a702f839d6f63f67b37bc665066d75d787ea8159d4eed7561a2ecd98340bdcb65bc0 thunar-archive-plugin-0.5.2.tar.bz2"
diff --git a/user/thunar-volman/APKBUILD b/user/thunar-volman/APKBUILD
index 38c088160..11d18ca49 100644
--- a/user/thunar-volman/APKBUILD
+++ b/user/thunar-volman/APKBUILD
@@ -1,20 +1,20 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=thunar-volman
-pkgver=0.9.1
+pkgver=4.20.0
pkgrel=0
pkgdesc="Volume manager for Thunar"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
-makedepends="intltool libxfce4ui-dev thunar-dev exo-dev libgudev-dev libnotify-dev"
+depends=""
+makedepends="exo-dev intltool libgudev-dev libnotify-dev libxfce4ui-dev
+ thunar-dev"
subpackages="$pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/xfce/thunar-volman/0.9/thunar-volman-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/xfce/thunar-volman/${pkgver%.*}/thunar-volman-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -25,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="73d9884dc667e4f8554d2b06f7116bbe25fa4e113300f0cd32bc2229c22001cc709333d5ac5618f7d5c8a35e58fb7a61e48ecafa634c7e239e9af329dc4149bc thunar-volman-0.9.1.tar.bz2"
+sha512sums="8a25e94d2c182865c997c259fcccdf56d2e8fc4f6ace706f4ad0913061fb1337728f7101edd9fdf9ab3f1f4f47e66c5ee4273a51d081c3b106ec027b9c846c8f thunar-volman-4.20.0.tar.bz2"
diff --git a/user/thunar/APKBUILD b/user/thunar/APKBUILD
index 2cc4590c0..991c64f2a 100644
--- a/user/thunar/APKBUILD
+++ b/user/thunar/APKBUILD
@@ -1,23 +1,21 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=thunar
-pkgver=1.8.4
-pkgrel=0
+pkgver=4.20.0
+pkgrel=1
pkgdesc="File manager for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="LGPL-2.0+ AND GPL-2.0+"
-makedepends="intltool gtk+3.0-dev exo-dev libxfce4ui-dev vala-dev
+depends="gvfs"
+makedepends="intltool gtk+3.0-dev exo-dev libxfce4ui-dev>=${pkgver%.*} vala-dev
gobject-introspection-dev libsm-dev libgudev-dev libnotify-dev
libexif-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/xfce/thunar/1.8/Thunar-$pkgver.tar.bz2"
-builddir="$srcdir/Thunar-$pkgver"
+source="https://archive.xfce.org/src/xfce/thunar/${pkgver%.*}/thunar-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -28,13 +26,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="886c0789aa19c2ab2ef34892c4afd09c857585b4796140ea3c84ccb9e1e1ca2935cf7e3a760a6ca8d8c68a5866663412500b4779878c7f48c9365c3ac7bf0eec Thunar-1.8.4.tar.bz2"
+sha512sums="fb2063676de82efe944222a6acdfa4c5ea9e4ac5123223528349ada623e37adbac40a2253f2a76b469d83a1f6791f884f1f825b86b58178fdecc5f706ee4a43f thunar-4.20.0.tar.bz2"
diff --git a/user/thunderbird/APKBUILD b/user/thunderbird/APKBUILD
index 9acdee471..21b415dc6 100644
--- a/user/thunderbird/APKBUILD
+++ b/user/thunderbird/APKBUILD
@@ -1,123 +1,175 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=thunderbird
-pkgver=52.9.1
-pkgrel=1
+pkgver=128.10.1
+pkgrel=0
+_llvmver=18
pkgdesc="Email client from Mozilla"
-url="https://www.mozilla.org/thunderbird/"
-arch="all"
-options="!check" # X11 required
-license="MPL"
+url="https://www.thunderbird.net/"
+arch="all !ppc" # #837
+options="!check" # Tests disabled
+license="MPL-2.0"
depends=""
# moz build system stuff
-# python deps
# system-libs
# actual deps
makedepends="
- autoconf2.13 ncurses-dev perl cmd:which
-
- ncurses-dev openssl-dev
+ autoconf2.13 cargo cbindgen clang llvm${_llvmver}-dev node ncurses-dev
+ perl python3 rust cmd:which
alsa-lib-dev bzip2-dev icu-dev libevent-dev libffi-dev libpng-dev
libjpeg-turbo-dev nspr-dev nss-dev pulseaudio-dev zlib-dev
- dbus-glib-dev gconf-dev gtk+2.0-dev gtk+3.0-dev hunspell-dev libsm-dev
- libnotify-dev libxcomposite-dev libxdamage-dev libxrender-dev libxt-dev
- nss-static sqlite-dev startup-notification-dev unzip yasm zip
+ dbus-glib-dev fts-dev gconf-dev gtk+3.0-dev hunspell-dev
+ libnotify-dev libsm-dev libxcomposite-dev libxdamage-dev
+ libxrender-dev libxt-dev nasm nss-static sqlite-dev
+ startup-notification-dev unzip yasm zip gtk+2.0-dev
"
-install=""
-subpackages="$pkgname-dev"
-source="https://archive.mozilla.org/pub/thunderbird/releases/$pkgver/source/thunderbird-$pkgver.source.tar.xz
+_tbver="$pkgver"'esr'
+source="https://archive.mozilla.org/pub/thunderbird/releases/$_tbver/source/thunderbird-$_tbver.source.tar.xz
mozconfig
+
bad-google-code.patch
+ fix-mutex-build.patch
fix-seccomp-bpf.patch
- mach-linux-musl.patch
- profiler.patch
- proper-system-hunspell.patch
- stab.h
+ icu-75.patch
+ jpeg-link.patch
+ js-endian.patch
+ mozilla-build-arm.patch
+ pmmx-double-format.patch
+ ppc32-fix.patch
+ rust-32bit.patch
+ shut-up-warning.patch
+ skia-endian.patch
+ skia-unified.patch
stackwalk-x86-ppc.patch
+ webrender.patch
+ without-jit.patch
+
thunderbird.desktop
"
somask="liblgpllibs.so
libmozgtk.so
libmozsandbox.so
- libxul.so"
-_tbirddir=/usr/lib/${pkgname}-${pkgver}
-
-unpack() {
- default_unpack
- # just ripped from Firefox's APKBUILD...
- [ -z $SKIP_PYTHON ] || return 0
- msg "Killing all remaining hope for humanity and building Python 2..."
- cd "$srcdir"
- [ -d python ] && rm -r python
- mkdir python
- cd python
- # 19:39 <+solar> just make the firefox build process build its own py2 copy
- curl -O https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tar.xz
- tar xJf Python-2.7.15.tar.xz
- cd Python-2.7.15
- # 20:03 <calvin> TheWilfox: there's always violence
- ./configure --prefix="$srcdir/python"
- make -j $JOBS
- # 6 tests failed:
- # test__locale test_os test_posix test_re test_strptime test_time
- # make test
- make -j $JOBS install
-}
+ libmozsqlite3.so
+ libmozwayland.so
+ libxul.so
+ "
+_mozappdir=/usr/lib/thunderbird
+ldpath="$_mozappdir"
+
+# secfixes:
+# 68.6.0-r0:
+# - CVE-2019-20503
+# - CVE-2020-6805
+# - CVE-2020-6806
+# - CVE-2020-6807
+# - CVE-2020-6811
+# - CVE-2020-6812
+# - CVE-2020-6814
+# 68.7.0-r0:
+# - CVE-2020-6819
+# - CVE-2020-6820
+# - CVE-2020-6821
+# - CVE-2020-6822
+# - CVE-2020-6825
+# 68.9.0-r0:
+# - CVE-2020-6831
+# - CVE-2020-12387
+# - CVE-2020-12392
+# - CVE-2020-12395
+# - CVE-2020-12397
prepare() {
default_prepare
- cp "$srcdir"/stab.h "$builddir"/mozilla/toolkit/crashreporter/google-breakpad/src/
cp "$srcdir"/mozconfig "$builddir"/mozconfig
- echo "ac_add_options --enable-optimize=\"$CFLAGS\"" >> "$builddir"/mozconfig
echo "ac_add_options --host=\"$CHOST\"" >> "$builddir"/mozconfig
echo "ac_add_options --target=\"$CTARGET\"" >> "$builddir"/mozconfig
- # too much memory
- if [ -z "$JOBS" -o $JOBS -gt 16 ]; then
- echo "mk_add_options MOZ_MAKE_FLAGS=\"-j16\"" >> "$builddir"/mozconfig
- fi
+ echo "mk_add_options MOZ_MAKE_FLAGS=\"-j$JOBS\"" >> "$builddir"/mozconfig
+
+ # arch-specific configuration
+ case "$CARCH" in
+ pmmx|x86*|arm*|aarch64)
+ echo "ac_add_options --disable-elf-hack" >> "$builddir"/mozconfig
+ ;;
+ s390x)
+ echo "ac_add_options --disable-startupcache" >> "$builddir"/mozconfig
+ ;;
+ esac
+
+ # 32-bit memory ceiling, #1012, #1057
+ case "${CARCH}" in
+ pmmx|x86|ppc|i528|m68k|mips32*|arm*)
+ echo "ac_add_options --disable-debug-symbols" >> "$builddir"/mozconfig
+ echo "ac_add_options --enable-strip" >> "$builddir"/mozconfig
+ CFLAGS="${CFLAGS} -g0";
+ ;;
+ esac
+
+ echo "ac_add_options --enable-optimize=\"$CFLAGS\"" >> "$builddir"/mozconfig
}
build() {
- cd "$builddir"
+ export CFLAGS="$CFLAGS -Wno-dangling-pointer -Wno-array-bounds -Wno-comment -Wno-maybe-uninitialized -Wno-misleading-indentation"
+ export CXXFLAGS="$CFLAGS -Wno-class-memaccess -Wno-changes-meaning"
+ export PATH="/usr/lib/llvm${_llvmver}/bin:${PATH}" #1230
+ export SHELL=/bin/sh
+ export BUILD_OFFICIAL=1
+ export MOZILLA_OFFICIAL=1
+ export USE_SHORT_LIBNAME=1
+ export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system
- # reportedly needed for gcc6; confirm this?
- export CXXFLAGS="$CXXFLAGS -fno-delete-null-pointer-checks -fno-schedule-insns2"
+ # set rpath so linker finds the libs
+ export LDFLAGS="$LDFLAGS -Wl,-rpath,${_mozappdir}"
- export LDFLAGS="$LDFLAGS -Wl,-rpath,${_tbirddir}"
- export USE_SHORT_LIBNAME=1
+ export UNIXCONFDIR="$srcdir"
- export PATH="$srcdir/python/bin:$PATH"
- ./mozilla/mach build
+ ./mach build
}
-package() {
- cd "$builddir"
- export PATH="$srcdir/python/bin:$PATH"
- DESTDIR="$pkgdir" ./mozilla/mach install
- install -D -m644 "$srcdir"/thunderbird.desktop \
- "$pkgdir"/usr/share/applications/thunderbird.desktop
+run() {
+ cd "$builddir"/obj-$CHOST/dist/bin
+ export LD_LIBRARY_PATH=.
+ export PROFILE_DIR="$builddir"/obj-$CHOST/tmp/profile-default
+ [ -d $PROFILE_DIR ] || ./thunderbird -no-remote -CreateProfile "Test $PROFILE_DIR"
+ ./thunderbird -no-remote -profile $PROFILE_DIR
}
-dev() {
- pkgdesc="$pkgdesc (development files)"
+package() {
+ export MACH_BUILD_PYTHON_NATIVE_PACKAGE_SOURCE=system
+ DESTDIR="$pkgdir" ./mach install
+
+ install -m755 -d ${pkgdir}/usr/share/applications
+ install -m755 -d ${pkgdir}/usr/share/pixmaps
+
+ for png in comm/mail/branding/thunderbird/default*.png; do
+ local i="${_png%.png}"
+ i=${i##*/default}
+ install -D -m644 "$png" \
+ "$pkgdir"/usr/share/icons/hicolor/${i}x${i}/apps/thunderbird.png
+ done
- mkdir -p "$subpkgdir"/usr
- mv "$pkgdir"/usr/include "$subpkgdir"/usr/include
- mkdir -p "$subpkgdir"/usr/lib
- mv "$pkgdir"/usr/lib/thunderbird-devel* "$subpkgdir"/usr/lib
- mkdir -p "$subpkgdir"/usr/share
- mv "$pkgdir"/usr/share/idl "$subpkgdir"/usr/share
+ install -m644 "$builddir"/comm/mail/branding/thunderbird/default256.png \
+ ${pkgdir}/usr/share/pixmaps/thunderbird.png
+ install -m644 ${startdir}/thunderbird.desktop \
+ ${pkgdir}/usr/share/applications/thunderbird.desktop
}
-sha512sums="0de80a5036b1e8a5a8549c546b4693cb285ee4d10f546f4b4aceed9e1d6c64b9dbafce7bacaaf057112130036f7b41fb2e0fa3343412140e6ac926dd94c27d23 thunderbird-52.9.1.source.tar.xz
-70fe8deb669eb0fb060f90f7af4ef98d6b6a80bde258a898397dd7e8c075b11ff3e418aa5eaf72262f40e561ea82da4b645cfc0b92d02af53f45536dc9963cbb mozconfig
-9b11ba43f1f3fe9cda69b6b92e2073ea5165a47e30084537f396ceb8fb63573c4eb057251644837504aa4546183dc8f77fbb24f1450b6a15a1386f29180deefc bad-google-code.patch
-2f52fcd7c42f8e12c955e05aa12449aa486c5347d2a7406ff0dada66f64079152b18c3f65c43410df372e871488f17889bc337ced37d0b76305afdbcb55cb580 fix-seccomp-bpf.patch
-475bdf81c41775634b131635197fa449b5068f2624a6b120d1878e2191a8e7badf01ac79a15ccf39242c64a29357f2ed7bae96352ceb70a234b17468a999e0c4 mach-linux-musl.patch
-7e72b96196f51cc02478f1802a10b1c1754db09d7d35aef697c5dcaace107e7a45a1b97256cc98b4aa728845694be093b148b61868e8ebfc8317fea19d6c71fa profiler.patch
-63b09028262a109e3a02f928c12323793df65dbd6d5605ddc315978b50ff4b50f6d1af410dc7c00538c80009a8721900c6320b166c8aa9bc6dce170ebcd6fc91 proper-system-hunspell.patch
-0b3f1e4b9fdc868e4738b5c81fd6c6128ce8885b260affcb9a65ff9d164d7232626ce1291aaea70132b3e3124f5e13fef4d39326b8e7173e362a823722a85127 stab.h
-d620a1efa4b079ce082a27cfacbae275aceb3d268fd44bfd3f4b742b8098c8e1b1733edd360404c5109137c508b8426ed9e1ca1036b11752de8d1f429bf14844 stackwalk-x86-ppc.patch
+sha512sums="09b54450928c6e0d948cd79a56c28bdb5fe5a81d7c710470a1ec195dd295c433b872682102c74930f19b1184391c30115293dadcd7dc8a08ae8baeb12770ef9c thunderbird-128.10.1esr.source.tar.xz
+fec4e343db973f90a38cc86e145c8ab0c8bec8f6eed36ff47f9986b154ea44f0e72ea1b5c9862e772505b3371dc0a9265fa1a6bed59007a5845a1dc622fce4e8 mozconfig
+1fff71be77aa34791ef8aa972b5dc5f131d79f4b895ebbfb59bc223078764d6f79c82a3a4e4c717a3893ecbe4907d556f27e97d2692e41f02365f06da759a71a bad-google-code.patch
+5e6c3fa027052cc43ba161cf5c12016b07723e7c0b002a42431bbd5d716d512d5245ab6befbb56c37c7d244441533f810f4e7b583f83bbe965981931f1435a94 fix-mutex-build.patch
+9f2892eff9d09f3eed1f9a9ee98ba9c6a6826c30ccdeabfefb8733abc98e7b612418827262423568e830c6354a2b8242f471bc200b7079f21862bb00947da716 fix-seccomp-bpf.patch
+0a84e8cb6604fdb7601745b60c04ee74733632ada32bfd85eb32db8fee095cfb79c82033e5e3cf3bbc7b7f4df753e86ffe18e26e63a6603a93c3bb5a459aabd3 icu-75.patch
+a2400c8df888637d9ebe33d82dc2fb95792685c9938b5486230a5c15bc819cbb850a2bdcb54a775516652fc8ffd6b40f8c591ab7941211f9516064101380ebbf jpeg-link.patch
+d40e6c1a6e62d5e1dc350dc0bbaf2b8488b19ea0911532784f1df1199a7a5af0aae81b0b0d77c4398a2d903d86b5560f4442386eb446d9af8d58e73eea475e4f js-endian.patch
+9f5730ee3a29b86786089abcfffab32bf2210f1a1ec43260ae824a08acda687dbfa37306b82a4978dd022bcf747eab155f7f3c5f73a1375f1c3c4fcd106dae3e mozilla-build-arm.patch
+1864c6c63c647f3ed1b3ca4df7f52a2c7ec4c65f2e067a9842d24a242f01e047d59ffbf88ad3740d830df1eb0bade929e245e640db135fe14f4c0d879269cb7e pmmx-double-format.patch
+06a3f4ee6d3726adf3460952fcbaaf24bb15ef8d15b3357fdd1766c7a62b00bd53a1e943b5df7f4e1a69f4fae0d44b64fae1e027d7812499c77894975969ea10 ppc32-fix.patch
+e1c8a85c46a9cc804eb6b5946d35b63fa2cfc7ad8b4f250c5eaf1b590b139a66d9a833246bc26ae2e340fffb81b6761cf51c600181895bd49feb9a3b8fbfe331 rust-32bit.patch
+c2248297df00633771da7e6b9f2caba3dd5108d93617f652fa8b2fb4e6975821e5fee866c00713f8fce08e760fa456e2dd19a8ef7370e5a2c65dc09614526be9 shut-up-warning.patch
+11f7ce86376b54281082fa5b9d3fefee8046eabe38a0ec17266764b4f62cb90f4744245c1ca93d73ed74cf81c066dab7ddcb3fe9704be8f91e0a2a4f664b203a skia-endian.patch
+a6a14104ee6985867efb1937a262aba1538ed4b069bba56e400d75f51d84d29363d8bbb2183ee27785758ad3a8b8ae4350e23dc854d50c92cb2147eddf83b9bb skia-unified.patch
+9df89366bd51670f534591e4c169186703ad3166a493f522e58f129fb79af375d71baaf0f6b238126792118a2d3ed0f011b010e39497ab5901ee5bea63a84fa2 stackwalk-x86-ppc.patch
+7d6c5f3cafd29eae4e7c5433b14f49cc679eebdcb4e602af18819f685500747a6daa8d38fbb0f91878331b14ce299ca8b731f62ab013b69e579fc450b29fe743 webrender.patch
+ed78e15030d79b10026ebae26e44a68d16c2a8567082072b5099b0dde4f79ae217a21737e0d9c7ec6a3cc99de3ab3c9083cca7d82889d559bb18cc15fa7e6f2a without-jit.patch
95a2b1deb4f6c90750fdd2bfe8ca0a7879a5b267965091705a6beb0a0a4b1ccad75d11df7b9885543ca4232ff704e975c6946f4c11804cb71c471e06f9576001 thunderbird.desktop"
diff --git a/user/thunderbird/bad-google-code.patch b/user/thunderbird/bad-google-code.patch
index 4be2b6748..31659370d 100644
--- a/user/thunderbird/bad-google-code.patch
+++ b/user/thunderbird/bad-google-code.patch
@@ -1,6 +1,6 @@
---- thunderbird-52.6.0/mozilla/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc
-+++ thunderbird-52.6.0/mozilla/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc
-@@ -45,6 +45,7 @@
+--- firefox-esr-60.2.1/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc
++++ firefox-esr-60.2.1/toolkit/crashreporter/google-breakpad/src/common/linux/dump_symbols.cc
+@@ -47,6 +47,7 @@
#include <sys/mman.h>
#include <sys/stat.h>
#include <unistd.h>
@@ -8,8 +8,8 @@
#include <iostream>
#include <set>
---- thunderbird-52.6.0/mozilla/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc
-+++ thunderbird-52.6.0/mozilla/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc
+--- firefox-esr-60.2.1/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc
++++ firefox-esr-60.2.1/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.cc
@@ -41,6 +41,10 @@
#include "common/using_std_string.h"
@@ -21,8 +21,8 @@
using std::vector;
namespace google_breakpad {
---- thunderbird-52.6.0/mozilla/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h
-+++ thunderbird-52.6.0/mozilla/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h
+--- firefox-esr-60.2.1/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h
++++ firefox-esr-60.2.1/toolkit/crashreporter/google-breakpad/src/common/stabs_reader.h
@@ -55,7 +55,7 @@
#ifdef HAVE_MACH_O_NLIST_H
@@ -32,9 +32,9 @@
#include <a.out.h>
#endif
---- thunderbird-52.6.0/mozilla/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h
-+++ thunderbird-52.6.0/mozilla/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h
-@@ -1134,6 +1134,12 @@ struct kernel_statfs {
+--- firefox-esr-60.2.1/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h
++++ firefox-esr-60.2.1/toolkit/crashreporter/google-breakpad/src/third_party/lss/linux_syscall_support.h
+@@ -1246,6 +1246,12 @@ struct kernel_statfs {
#ifndef __NR_fallocate
#define __NR_fallocate 285
#endif
diff --git a/user/thunderbird/disable-hunspell_hooks.patch b/user/thunderbird/disable-hunspell_hooks.patch
deleted file mode 100644
index 1eaa4d035..000000000
--- a/user/thunderbird/disable-hunspell_hooks.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/mozilla-config.h.in 2016-07-06 15:16:06.621880293 +0200
-+++ b/mozilla-config.h.in 2016-07-06 15:16:42.958428126 +0200
-@@ -54,7 +54,7 @@
- * HUNSPELL_STATIC is defined in extensions/spellcheck/hunspell/src/Makefile.in,
- * unless --enable-system-hunspell is defined.
- */
--#if defined(HUNSPELL_STATIC)
-+#if 0
- #include "hunspell_alloc_hooks.h"
- #include "hunspell_fopen_hooks.h"
- #endif
diff --git a/user/thunderbird/fix-mutex-build.patch b/user/thunderbird/fix-mutex-build.patch
new file mode 100644
index 000000000..1d1d0772b
--- /dev/null
+++ b/user/thunderbird/fix-mutex-build.patch
@@ -0,0 +1,20 @@
+--- firefox-60.3.0/memory/build/Mutex.h.old 2018-10-17 20:39:32.000000000 +0000
++++ firefox-60.3.0/memory/build/Mutex.h 2018-10-26 05:22:54.980000000 +0000
+@@ -57,7 +57,7 @@
+ }
+ #elif defined(XP_DARWIN)
+ mMutex = OS_UNFAIR_LOCK_INIT;
+-#elif defined(XP_LINUX) && !defined(ANDROID)
++#elif defined(XP_LINUX) && defined(__GLIBC__)
+ pthread_mutexattr_t attr;
+ if (pthread_mutexattr_init(&attr) != 0) {
+ return false;
+@@ -142,7 +142,7 @@
+
+ # if defined(XP_DARWIN)
+ # define STATIC_MUTEX_INIT OS_UNFAIR_LOCK_INIT
+-# elif defined(XP_LINUX) && !defined(ANDROID)
++# elif defined(XP_LINUX) && defined(__GLIBC__)
+ # define STATIC_MUTEX_INIT PTHREAD_ADAPTIVE_MUTEX_INITIALIZER_NP
+ # else
+ # define STATIC_MUTEX_INIT PTHREAD_MUTEX_INITIALIZER
diff --git a/user/thunderbird/fix-seccomp-bpf.patch b/user/thunderbird/fix-seccomp-bpf.patch
index 844ec7b96..08068b5f5 100644
--- a/user/thunderbird/fix-seccomp-bpf.patch
+++ b/user/thunderbird/fix-seccomp-bpf.patch
@@ -1,8 +1,8 @@
---- a/mozilla/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc.orig 2015-09-23 09:10:08.812740571 +0200
-+++ b/mozilla/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc 2015-09-23 09:11:38.404746155 +0200
-@@ -23,6 +23,11 @@
- #include "sandbox/linux/services/android_ucontext.h"
- #endif
+--- a/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc.orig 2015-09-23 09:10:08.812740571 +0200
++++ b/security/sandbox/chromium/sandbox/linux/seccomp-bpf/trap.cc 2015-09-23 09:11:38.404746155 +0200
+@@ -25,6 +25,11 @@
+ #include "sandbox/linux/system_headers/linux_seccomp.h"
+ #include "sandbox/linux/system_headers/linux_signal.h"
+// musl libc defines siginfo_t __si_fields instead of _sifields
+#if defined(OS_LINUX) && !defined(__GLIBC__)
diff --git a/user/thunderbird/icu-75.patch b/user/thunderbird/icu-75.patch
new file mode 100644
index 000000000..617dd76a9
--- /dev/null
+++ b/user/thunderbird/icu-75.patch
@@ -0,0 +1,41 @@
+https://bugs.gentoo.org/917599
+https://bugzilla.mozilla.org/show_bug.cgi?id=1862601
+https://hg.mozilla.org/try/rev/d5f3b0c4f08a426ce00a153c04e177eecb6820e2
+
+# HG changeset patch
+# User André Bargull <andre.bargull@gmail.com>
+# Date 1697435923 -7200
+# Node ID d5f3b0c4f08a426ce00a153c04e177eecb6820e2
+# Parent c63994f8259efdf6e745c960aa9e1409d5477049
+Bug xxx - Part 12: Add new line break classes. r?
+
+diff --git a/intl/lwbrk/LineBreaker.cpp b/intl/lwbrk/LineBreaker.cpp
+--- a/intl/lwbrk/LineBreaker.cpp
++++ b/intl/lwbrk/LineBreaker.cpp
+@@ -443,17 +443,23 @@ static int8_t GetClass(uint32_t u, LineB
+ /* JT = 34, [JT] */ CLASS_CHARACTER,
+ /* JV = 35, [JV] */ CLASS_CHARACTER,
+ /* CLOSE_PARENTHESIS = 36, [CP] */ CLASS_CLOSE_LIKE_CHARACTER,
+ /* CONDITIONAL_JAPANESE_STARTER = 37, [CJ] */ CLASS_CLOSE,
+ /* HEBREW_LETTER = 38, [HL] */ CLASS_CHARACTER,
+ /* REGIONAL_INDICATOR = 39, [RI] */ CLASS_CHARACTER,
+ /* E_BASE = 40, [EB] */ CLASS_BREAKABLE,
+ /* E_MODIFIER = 41, [EM] */ CLASS_CHARACTER,
+- /* ZWJ = 42, [ZWJ]*/ CLASS_CHARACTER};
++ /* ZWJ = 42, [ZWJ]*/ CLASS_CHARACTER,
++ /* AKSARA = 43, [AK] */ CLASS_CHARACTER,
++ /* AKSARA_PREBASE = 44, [AP] */ CLASS_CHARACTER,
++ /* AKSARA_START = 45, [AS] */ CLASS_CHARACTER,
++ /* VIRAMA_FINAL = 46, [VF] */ CLASS_CHARACTER,
++ /* VIRAMA = 47, [VI] */ CLASS_CHARACTER,
++ };
+
+ static_assert(U_LB_COUNT == mozilla::ArrayLength(sUnicodeLineBreakToClass),
+ "Gecko vs ICU LineBreak class mismatch");
+
+ auto cls = GetLineBreakClass(u);
+ MOZ_ASSERT(cls < mozilla::ArrayLength(sUnicodeLineBreakToClass));
+
+ // Overrides based on rules for the different line-break values given in
+
+
diff --git a/user/thunderbird/jpeg-link.patch b/user/thunderbird/jpeg-link.patch
new file mode 100644
index 000000000..724bc76fb
--- /dev/null
+++ b/user/thunderbird/jpeg-link.patch
@@ -0,0 +1,25 @@
+--- firefox-91.13.0/toolkit/moz.configure.old 2022-08-15 13:05:59.000000000 -0500
++++ firefox-91.13.0/toolkit/moz.configure 2022-11-15 01:26:57.874201494 -0600
+@@ -2274,14 +2274,14 @@
+ )
+
+ with only_when("--with-system-jpeg"):
+- check_symbol(
+- "jpeg_destroy_compress",
+- flags=jpeg_flags.ldflags,
+- onerror=lambda: die(
+- "--with-system-jpeg requested but symbol "
+- "jpeg_destroy_compress not found."
+- ),
+- )
++ #check_symbol(
++ # "jpeg_destroy_compress",
++ # flags=jpeg_flags.ldflags,
++ # onerror=lambda: die(
++ # "--with-system-jpeg requested but symbol "
++ # "jpeg_destroy_compress not found."
++ # ),
++ #)
+
+ c_compiler.try_compile(
+ includes=[
diff --git a/user/thunderbird/js-endian.patch b/user/thunderbird/js-endian.patch
new file mode 100644
index 000000000..44f21d2d1
--- /dev/null
+++ b/user/thunderbird/js-endian.patch
@@ -0,0 +1,33 @@
+# HG changeset patch
+# User A. Wilcox <AWilcox@Wilcox-Tech.com>
+# Date 1729710191 18000
+# Wed Oct 23 14:03:11 2024 -0500
+# Node ID 6102585e0d752de1729135d4c7d917e751b268c5
+# Parent 61f7d9c0998e2ce8008cd15b187f86dfdba21a26
+Bug 1926667 - Ensure JSStructuredCloneReader::readTransferMap respects endianness r?sfink
+
+Differential Revision: https://phabricator.services.mozilla.com/D226707
+
+diff --git a/js/src/vm/StructuredClone.cpp b/js/src/vm/StructuredClone.cpp
+--- a/js/src/vm/StructuredClone.cpp
++++ b/js/src/vm/StructuredClone.cpp
+@@ -3387,7 +3387,8 @@ bool JSStructuredCloneReader::readTransf
+ }
+
+ headerPos.write(
+- PairToUInt64(SCTAG_TRANSFER_MAP_HEADER, SCTAG_TM_TRANSFERRING));
++ NativeEndian::swapToLittleEndian(
++ PairToUInt64(SCTAG_TRANSFER_MAP_HEADER, SCTAG_TM_TRANSFERRING)));
+
+ uint64_t numTransferables;
+ MOZ_ALWAYS_TRUE(in.readPair(&tag, &data));
+@@ -3512,7 +3513,8 @@ bool JSStructuredCloneReader::readTransf
+ MOZ_ASSERT(TransferableMapHeader(data) == SCTAG_TM_TRANSFERRING);
+ #endif
+ headerPos.write(
+- PairToUInt64(SCTAG_TRANSFER_MAP_HEADER, SCTAG_TM_TRANSFERRED));
++ NativeEndian::swapToLittleEndian(
++ PairToUInt64(SCTAG_TRANSFER_MAP_HEADER, SCTAG_TM_TRANSFERRED)));
+
+ return true;
+ }
diff --git a/user/thunderbird/mach-linux-musl.patch b/user/thunderbird/mach-linux-musl.patch
deleted file mode 100644
index 6bddf6ff6..000000000
--- a/user/thunderbird/mach-linux-musl.patch
+++ /dev/null
@@ -1,119 +0,0 @@
-
-# HG changeset patch
-# User Mike Hommey <mh+mozilla@glandium.org>
-# Date 1502856976 -32400
-# Node ID 8d9ae8c45dd07496f164364f24c5f43edcf2eb6e
-# Parent fa02d334033f0039ef82b3d7dc194312ba250279
-Bug 1384062 - Make SystemResourceMonitor.stop more resilient to errors. r=ahal,gps
-
-The poll() call in SystemResourceMonitor.stop might fail even though
-there is something to read from the pipe, in some corner cases, and
-python won't let us know about it. In that case, an exception is thrown,
-leaving the SystemResourceMonitor (and its callers) in a weird state. In
-practice, this leads BuildMonitor.__exit__ to recall stop, which then
-fails.
-
-So when poll() throws an exception, we pretend there's still something
-to read, and we try to read anyways. If there is something to read,
-recv() will return it, otherwise, it will throw an exception of its own,
-which we catch, pretending we're done.
-
-Furthermore, when there is nothing to read from the pipe, poll() simply
-returns False, and our loop never sets `done` to True, and we then hit
-an assert, which doesn't have its place here, so we remove it.
-
-Finally, the other end of the pipe might have died at any time, making
-sending over the pipe fail, so we also protect against that.
-
-With all these changes, it feels like the reason to backout bug 1239939
-in bug 1272782 should have been dealt with, and we can drop the timeout
-again.
-
-diff --git a/mozilla/testing/mozbase/mozsystemmonitor/mozsystemmonitor/resourcemonitor.py b/mozilla/testing/mozbase/mozsystemmonitor/mozsystemmonitor/resourcemonitor.py
---- a/mozilla/testing/mozbase/mozsystemmonitor/mozsystemmonitor/resourcemonitor.py
-+++ b/mozilla/testing/mozbase/mozsystemmonitor/mozsystemmonitor/resourcemonitor.py
-@@ -284,57 +284,71 @@ class SystemResourceMonitor(object):
- """
- if not self._process:
- self._stopped = True
- return
-
- assert self._running
- assert not self._stopped
-
-- self._pipe.send(('terminate',))
-+ try:
-+ self._pipe.send(('terminate',))
-+ except Exception:
-+ pass
- self._running = False
- self._stopped = True
-
- self.measurements = []
-
-- done = False
--
- # The child process will send each data sample over the pipe
- # as a separate data structure. When it has finished sending
- # samples, it sends a special "done" message to indicate it
- # is finished.
-- while self._pipe.poll(1.0):
-- start_time, end_time, io_diff, cpu_diff, cpu_percent, virt_mem, \
-- swap_mem = self._pipe.recv()
-+
-+ # multiprocessing.Pipe is not actually a pipe on at least Linux. that
-+ # has an effect on the expected outcome of reading from it when the
-+ # other end of the pipe dies, leading to possibly hanging on revc()
-+ # below. So we must poll().
-+ def poll():
-+ try:
-+ return self._pipe.poll(0.1)
-+ except Exception:
-+ # Poll might throw an exception even though there's still
-+ # data to read. That happens when the underlying system call
-+ # returns both POLLERR and POLLIN, but python doesn't tell us
-+ # about it. So assume there is something to read, and we'll
-+ # get an exception when trying to read the data.
-+ return True
-+ while poll():
-+ try:
-+ start_time, end_time, io_diff, cpu_diff, cpu_percent, virt_mem, \
-+ swap_mem = self._pipe.recv()
-+ except Exception:
-+ # Let's assume we're done here
-+ break
-
- # There should be nothing after the "done" message so
- # terminate.
- if start_time == 'done':
-- done = True
- break
-
- io = self._io_type(*io_diff)
- virt = self._virt_type(*virt_mem)
- swap = self._swap_type(*swap_mem)
- cpu_times = [self._cpu_times_type(*v) for v in cpu_diff]
-
- self.measurements.append(SystemResourceUsage(start_time, end_time,
- cpu_times, cpu_percent, io, virt, swap))
-
- # We establish a timeout so we don't hang forever if the child
- # process has crashed.
- self._process.join(10)
- if self._process.is_alive():
- self._process.terminate()
- self._process.join(10)
-- else:
-- # We should have received a "done" message from the
-- # child indicating it shut down properly. This only
-- # happens if the child shuts down cleanly.
-- assert done
-
- if len(self.measurements):
- self.start_time = self.measurements[0].start
- self.end_time = self.measurements[-1].end
-
- # Methods to record events alongside the monitored data.
-
- def record_event(self, name):
-
diff --git a/user/thunderbird/mozconfig b/user/thunderbird/mozconfig
index a241960d5..e236baa3e 100644
--- a/user/thunderbird/mozconfig
+++ b/user/thunderbird/mozconfig
@@ -1,31 +1,26 @@
ac_add_options --prefix=/usr
ac_add_options --libdir=/usr/lib
ac_add_options --disable-crashreporter
-ac_add_options --disable-elf-hack
ac_add_options --disable-install-strip
ac_add_options --disable-jemalloc
ac_add_options --disable-profiling
ac_add_options --disable-strip
ac_add_options --disable-tests
ac_add_options --disable-updater
-ac_add_options --enable-application=mail
+ac_add_options --disable-webrtc
+ac_add_options --enable-application=comm/mail
ac_add_options --enable-alsa
-ac_add_options --enable-calendar
ac_add_options --enable-dbus
ac_add_options --enable-default-toolkit=cairo-gtk3
-ac_add_options --enable-gio
ac_add_options --enable-official-branding
-ac_add_options --enable-pie
ac_add_options --enable-pulseaudio
-ac_add_options --enable-startup-notification
ac_add_options --enable-system-ffi
-ac_add_options --enable-system-hunspell
-ac_add_options --with-pthreads
-ac_add_options --with-system-bz2
ac_add_options --with-system-icu
ac_add_options --with-system-jpeg
ac_add_options --with-system-libevent
ac_add_options --with-system-nspr
ac_add_options --with-system-nss
+ac_add_options --with-system-pixman
ac_add_options --with-system-png
ac_add_options --with-system-zlib
+ac_add_options --without-wasm-sandboxed-libraries
diff --git a/user/thunderbird/mozilla-build-arm.patch b/user/thunderbird/mozilla-build-arm.patch
new file mode 100644
index 000000000..17c95d01d
--- /dev/null
+++ b/user/thunderbird/mozilla-build-arm.patch
@@ -0,0 +1,11 @@
+--- ./gfx/ycbcr/moz.build.orig 2014-04-03 13:50:38.990296661 +0000
++++ ./gfx/ycbcr/moz.build 2014-04-03 13:52:26.878268547 +0000
+@@ -53,7 +53,7 @@
+ 'yuv_row_other.cpp',
+ ]
+
+-if CONFIG['TARGET_CPU'] == 'arm' and CONFIG['HAVE_ARM_NEON']:
++if CONFIG['HAVE_ARM_NEON']:
+ SOURCES += [
+ 'yuv_row_arm.s',
+ ]
diff --git a/user/thunderbird/pmmx-double-format.patch b/user/thunderbird/pmmx-double-format.patch
new file mode 100644
index 000000000..e520987b3
--- /dev/null
+++ b/user/thunderbird/pmmx-double-format.patch
@@ -0,0 +1,16 @@
+diff --git a/modules/fdlibm/src/math_private.h b/modules/fdlibm/src/math_private.h
+index 51d79f9c2ec59..fafd7d6fc1e0d 100644
+--- a/modules/fdlibm/src/math_private.h
++++ b/modules/fdlibm/src/math_private.h
+@@ -30,7 +30,11 @@
+ * Adapted from https://github.com/freebsd/freebsd-src/search?q=__double_t
+ */
+
++#if defined __FLT_EVAL_METHOD__ && (__FLT_EVAL_METHOD__ == 2)
++typedef long double __double_t;
++#else
+ typedef double __double_t;
++#endif
+ typedef __double_t double_t;
+ typedef float __float_t;
+
diff --git a/user/thunderbird/ppc32-fix.patch b/user/thunderbird/ppc32-fix.patch
new file mode 100644
index 000000000..b4103c65f
--- /dev/null
+++ b/user/thunderbird/ppc32-fix.patch
@@ -0,0 +1,43 @@
+--- firefox-68.1.0/xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_linux.cpp
++++ firefox-68.1.0/xpcom/reflect/xptcall/md/unix/xptcinvoke_ppc_linux.cpp
+@@ -45,11 +45,8 @@ invoke_copy_to_stack(uint32_t* d,
+ uint64_t tempu64;
+
+ for(uint32_t i = 0; i < paramCount; i++, s++) {
+- if(s->IsPtrData()) {
+- if(s->type == nsXPTType::T_JSVAL)
+- tempu32 = (uint32_t) &s->ptr;
+- else
+- tempu32 = (uint32_t) s->ptr;
++ if(s->IsIndirect()) {
++ tempu32 = (uint32_t) &s->val;
+ }
+ else {
+ switch(s->type) {
+@@ -70,7 +67,7 @@ invoke_copy_to_stack(uint32_t* d,
+ }
+ }
+
+- if (!s->IsPtrData() && s->type == nsXPTType::T_DOUBLE) {
++ if (!s->IsIndirect() && s->type == nsXPTType::T_DOUBLE) {
+ #ifndef __NO_FPRS__
+ if (fpr < FPR_COUNT)
+ fpregs[fpr++] = s->val.d;
+@@ -88,7 +85,7 @@ invoke_copy_to_stack(uint32_t* d,
+ d += 2;
+ }
+ }
+- else if (!s->IsPtrData() && s->type == nsXPTType::T_FLOAT) {
++ else if (!s->IsIndirect() && s->type == nsXPTType::T_FLOAT) {
+ #ifndef __NO_FPRS__
+ if (fpr < FPR_COUNT)
+ fpregs[fpr++] = s->val.f; // if passed in registers, floats are promoted to doubles
+@@ -99,7 +96,7 @@ invoke_copy_to_stack(uint32_t* d,
+ else
+ *((float*) d++) = s->val.f;
+ }
+- else if (!s->IsPtrData() && (s->type == nsXPTType::T_I64
++ else if (!s->IsIndirect() && (s->type == nsXPTType::T_I64
+ || s->type == nsXPTType::T_U64)) {
+ if (gpr & 1) gpr++; // longlongs are aligned in odd/even register pairs, eg. r5/r6
+ if ((gpr + 1) < GPR_COUNT) {
diff --git a/user/thunderbird/profiler.patch b/user/thunderbird/profiler.patch
deleted file mode 100644
index 1b502a243..000000000
--- a/user/thunderbird/profiler.patch
+++ /dev/null
@@ -1,44 +0,0 @@
---- a/mozilla/tools/profiler/core/platform-linux.cc
-+++ b/mozilla/tools/profiler/core/platform-linux.cc
-@@ -711,11 +711,13 @@ void OS::Startup() {
- void TickSample::PopulateContext(void* aContext)
- {
- MOZ_ASSERT(aContext);
-+#if defined(__GLIBC__)
- ucontext_t* pContext = reinterpret_cast<ucontext_t*>(aContext);
- if (!getcontext(pContext)) {
- context = pContext;
- SetSampleContext(this, aContext);
- }
-+#endif
- }
-
- void OS::SleepMicro(int microseconds)
---- a/mozilla/tools/profiler/core/platform.h
-+++ b/mozilla/tools/profiler/core/platform.h
-@@ -34,6 +34,8 @@
- #define MOZ_COUNT_DTOR(name)
- #endif
-
-+#include <sys/types.h>
-+
- #ifdef ANDROID
- #include <android/log.h>
- #else
---- a/mozilla/tools/profiler/lul/LulElf.cpp
-+++ b/mozilla/tools/profiler/lul/LulElf.cpp
-@@ -483,10 +483,10 @@ string FormatIdentifier(unsigned char identifier[16]) {
- // Return the non-directory portion of FILENAME: the portion after the
- // last slash, or the whole filename if there are no slashes.
- string BaseFileName(const string &filename) {
-- // Lots of copies! basename's behavior is less than ideal.
-- char *c_filename = strdup(filename.c_str());
-- string base = basename(c_filename);
-- free(c_filename);
-+ // basename's behavior is less than ideal so avoid it
-+ const char *c_filename = filename.c_str();
-+ const char *p = strrchr(c_filename, '/');
-+ string base = p ? p+1 : c_filename;
- return base;
- }
-
diff --git a/user/thunderbird/proper-system-hunspell.patch b/user/thunderbird/proper-system-hunspell.patch
deleted file mode 100644
index e1429de08..000000000
--- a/user/thunderbird/proper-system-hunspell.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-moz seem to have no idea what their own damn build system is doing...
-
---- thunderbird-52.6.0/mozilla/extensions/spellcheck/hunspell/glue/moz.build 2018-01-24 03:06:15.000000000 +0000
-+++ thunderbird-52.6.0/mozilla/extensions/spellcheck/hunspell/glue/moz.build 2018-03-12 09:17:05.386773708 +0000
-@@ -16,6 +16,9 @@
- if CONFIG['MOZ_SYSTEM_HUNSPELL']:
- CXXFLAGS += CONFIG['MOZ_HUNSPELL_CFLAGS']
- else:
-+ # This variable is referenced in configure.in. Make sure to change that file
-+ # too if you need to change this variable.
-+ DEFINES['HUNSPELL_STATIC'] = True
- LOCAL_INCLUDES += ['../src']
-
- LOCAL_INCLUDES += [
-@@ -33,7 +36,3 @@
- 'RemoteSpellCheckEngineChild.h',
- 'RemoteSpellCheckEngineParent.h',
- ]
--
--# This variable is referenced in configure.in. Make sure to change that file
--# too if you need to change this variable.
--DEFINES['HUNSPELL_STATIC'] = True
diff --git a/user/thunderbird/python3.patch b/user/thunderbird/python3.patch
deleted file mode 100644
index 2a4835fb7..000000000
--- a/user/thunderbird/python3.patch
+++ /dev/null
@@ -1,10079 +0,0 @@
---- thunderbird-52.9.0/mozilla/python/mozbuild/dumbmake/dumbmake.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/dumbmake/dumbmake.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- from collections import OrderedDict
- from itertools import groupby
-@@ -36,7 +36,7 @@
- deps = {}
-
- for i, (indent, target) in enumerate(pairs):
-- if not deps.has_key(target):
-+ if target not in deps:
- deps[target] = []
-
- for j in range(i+1, len(pairs)):
-@@ -68,7 +68,7 @@
- del all_targets[dependency]
- all_targets[dependency] = True
-
-- return all_targets.keys()
-+ return list(all_targets.keys())
-
- def get_components(path):
- """Take a path and return all the components of the path."""
-@@ -114,7 +114,7 @@
- make_dirs[make_dir] = True
-
- all_components = []
-- for make_dir in make_dirs.iterkeys():
-+ for make_dir in make_dirs.keys():
- all_components.extend(get_components(make_dir))
-
- for i in all_dependencies(*all_components, dependency_map=dependency_map):
---- thunderbird-52.9.0/mozilla/python/mozbuild/dumbmake/test/test_dumbmake.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/dumbmake/test/test_dumbmake.py (refactored)
-@@ -1,7 +1,7 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this file,
- # You can obtain one at http://mozilla.org/MPL/2.0/.
--from __future__ import unicode_literals
-+
-
- import unittest
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/android_version_code.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/android_version_code.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function
-+
-
- import argparse
- import math
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/artifacts.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/artifacts.py (refactored)
-@@ -40,7 +40,7 @@
- '''
-
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import collections
- import functools
-@@ -57,7 +57,7 @@
- import subprocess
- import tarfile
- import tempfile
--import urlparse
-+import urllib.parse
- import zipfile
-
- import pylru
-@@ -183,7 +183,7 @@
-
- with JarWriter(file=processed_filename, optimize=False, compress_level=5) as writer:
- reader = JarReader(filename)
-- for filename, entry in reader.entries.iteritems():
-+ for filename, entry in reader.entries.items():
- for pattern, (src_prefix, dest_prefix) in self.test_artifact_patterns:
- if not mozpath.match(filename, pattern):
- continue
-@@ -552,7 +552,7 @@
-
- def print_cache(self):
- with self:
-- for item in self._cache.items():
-+ for item in list(self._cache.items()):
- self.log(logging.INFO, 'artifact',
- {'item': item},
- '{item}')
-@@ -565,7 +565,7 @@
- # We use the persisted LRU caches to our advantage. The first item is
- # most recent.
- with self:
-- item = next(self._cache.items(), None)
-+ item = next(list(self._cache.items()), None)
- if item is not None:
- (name, args, sorted_kwargs), result = item
- self.print_last_item(args, sorted_kwargs, result)
-@@ -593,10 +593,10 @@
- 'changeset={changeset}&version=2&tipsonly=1')
- req = requests.get(cset_url_tmpl.format(tree=tree, changeset=revision),
- headers={'Accept': 'application/json'})
-- if req.status_code not in range(200, 300):
-+ if req.status_code not in list(range(200, 300)):
- raise ValueError
- result = req.json()
-- [found_pushid] = result['pushes'].keys()
-+ [found_pushid] = list(result['pushes'].keys())
- return int(found_pushid)
-
- @cachedmethod(operator.attrgetter('_cache'))
-@@ -609,7 +609,7 @@
- headers={'Accept': 'application/json'})
- result = req.json()
- return [
-- p['changesets'][-1] for p in result['pushes'].values()
-+ p['changesets'][-1] for p in list(result['pushes'].values())
- ]
-
- class TaskCache(CacheManager):
-@@ -847,7 +847,7 @@
-
- candidate_pushheads = collections.defaultdict(list)
-
-- for tree, pushid in found_pushids.iteritems():
-+ for tree, pushid in found_pushids.items():
- end = pushid
- start = pushid - NUM_PUSHHEADS_TO_QUERY_PER_PARENT
-
-@@ -1052,7 +1052,7 @@
- """
- if source and os.path.isfile(source):
- return self.install_from_file(source, distdir)
-- elif source and urlparse.urlparse(source).scheme:
-+ elif source and urllib.parse.urlparse(source).scheme:
- return self.install_from_url(source, distdir)
- else:
- if source is None and 'MOZ_ARTIFACT_REVISION' in os.environ:
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/base.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/base.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import json
- import logging
-@@ -482,7 +482,7 @@
- for flag in flags:
- if flag == '-j':
- try:
-- flag = flags.next()
-+ flag = next(flags)
- except StopIteration:
- break
- try:
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/config_status.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/config_status.py (refactored)
-@@ -6,7 +6,7 @@
- # drop-in replacement for autoconf 2.13's config.status, with features
- # borrowed from autoconf > 2.5, and additional features.
-
--from __future__ import absolute_import, print_function
-+
-
- import logging
- import os
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/doctor.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/doctor.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, # You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import os
- import subprocess
-@@ -83,7 +83,7 @@
- valid = False
- while not valid and limit > 0:
- try:
-- choice = strtobool(raw_input(prompt + '[Y/N]\n'))
-+ choice = strtobool(input(prompt + '[Y/N]\n'))
- valid = True
- except ValueError:
- print("ERROR! Please enter a valid option!")
-@@ -103,11 +103,11 @@
- if status == 'SKIPPED':
- continue
- self.results.append(result)
-- print('%s...\t%s\n' % (
-+ print(('%s...\t%s\n' % (
- result.get('desc', ''),
- status
- )
-- ).expandtabs(40)
-+ ).expandtabs(40))
-
- @property
- def platform(self):
-@@ -212,7 +212,7 @@
- fsutil_output = subprocess.check_output(command)
- status = 'GOOD, FIXED'
- desc = 'lastaccess disabled systemwide'
-- except subprocess.CalledProcessError, e:
-+ except subprocess.CalledProcessError as e:
- desc = 'lastaccess enabled systemwide'
- if e.output.find('denied') != -1:
- status = 'BAD, FIX DENIED'
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/dotproperties.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/dotproperties.py (refactored)
-@@ -5,7 +5,7 @@
- # This file contains utility functions for reading .properties files, like
- # region.properties.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import codecs
- import re
-@@ -14,7 +14,7 @@
- if sys.version_info[0] == 3:
- str_type = str
- else:
-- str_type = basestring
-+ str_type = str
-
- class DotProperties:
- r'''A thin representation of a key=value .properties file.'''
-@@ -52,7 +52,7 @@
- if not prefix.endswith('.'):
- prefix = prefix + '.'
- indexes = []
-- for k, v in self._properties.iteritems():
-+ for k, v in self._properties.items():
- if not k.startswith(prefix):
- continue
- key = k[len(prefix):]
-@@ -73,7 +73,7 @@
- if not prefix.endswith('.'):
- prefix = prefix + '.'
-
-- D = dict((k[len(prefix):], v) for k, v in self._properties.iteritems()
-+ D = dict((k[len(prefix):], v) for k, v in self._properties.items()
- if k.startswith(prefix) and '.' not in k[len(prefix):])
-
- for required_key in required_keys:
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/html_build_viewer.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/html_build_viewer.py (refactored)
-@@ -4,16 +4,16 @@
-
- # This module contains code for running an HTTP server to view build info.
-
--from __future__ import absolute_import, unicode_literals
-
--import BaseHTTPServer
-+
-+import http.server
- import json
- import os
-
- import requests
-
-
--class HTTPHandler(BaseHTTPServer.BaseHTTPRequestHandler):
-+class HTTPHandler(http.server.BaseHTTPRequestHandler):
- def do_GET(self):
- s = self.server.wrapper
- p = self.path
-@@ -92,7 +92,7 @@
- self.doc_root = doc_root
- self.json_files = {}
-
-- self.server = BaseHTTPServer.HTTPServer((address, port), HTTPHandler)
-+ self.server = http.server.HTTPServer((address, port), HTTPHandler)
- self.server.wrapper = self
- self.do_shutdown = False
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/jar.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/jar.py (refactored)
-@@ -8,7 +8,7 @@
- See the documentation for jar.mn on MDC for further details on the format.
- '''
-
--from __future__ import absolute_import
-+
-
- import sys
- import os
-@@ -17,7 +17,7 @@
- import logging
- from time import localtime
- from MozZipFile import ZipFile
--from cStringIO import StringIO
-+from io import StringIO
- from collections import defaultdict
-
- from mozbuild.preprocessor import Preprocessor
-@@ -302,9 +302,9 @@
- '''updateManifest replaces the % in the chrome registration entries
- with the given chrome base path, and updates the given manifest file.
- '''
-- myregister = dict.fromkeys(map(lambda s: s.replace('%',
-- chromebasepath), register))
-- addEntriesToListFile(manifestPath, myregister.iterkeys())
-+ myregister = dict.fromkeys([s.replace('%',
-+ chromebasepath) for s in register])
-+ addEntriesToListFile(manifestPath, iter(myregister.keys()))
-
- def makeJar(self, infile, jardir):
- '''makeJar is the main entry point to JarMaker.
-@@ -322,7 +322,7 @@
- elif self.relativesrcdir:
- self.localedirs = \
- self.generateLocaleDirs(self.relativesrcdir)
-- if isinstance(infile, basestring):
-+ if isinstance(infile, str):
- logging.info('processing ' + infile)
- self.sourcedirs.append(_normpath(os.path.dirname(infile)))
- pp = self.pp.clone()
-@@ -372,7 +372,7 @@
- jarfilepath = jarfile + '.jar'
- try:
- os.makedirs(os.path.dirname(jarfilepath))
-- except OSError, error:
-+ except OSError as error:
- if error.errno != errno.EEXIST:
- raise
- jf = ZipFile(jarfilepath, 'a', lock=True)
-@@ -514,7 +514,7 @@
- # remove previous link or file
- try:
- os.remove(out)
-- except OSError, e:
-+ except OSError as e:
- if e.errno != errno.ENOENT:
- raise
- return open(out, 'wb')
-@@ -525,7 +525,7 @@
- if not os.path.isdir(outdir):
- try:
- os.makedirs(outdir)
-- except OSError, error:
-+ except OSError as error:
- if error.errno != errno.EEXIST:
- raise
- return out
-@@ -541,7 +541,7 @@
- # remove previous link or file
- try:
- os.remove(out)
-- except OSError, e:
-+ except OSError as e:
- if e.errno != errno.ENOENT:
- raise
- if sys.platform != 'win32':
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/mach_commands.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/mach_commands.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, # You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import errno
-@@ -136,7 +136,7 @@
- # terminal is a blessings.Terminal.
- self._t = terminal
- self._fh = sys.stdout
-- self.tiers = monitor.tiers.tier_status.viewitems()
-+ self.tiers = monitor.tiers.tier_status.items()
-
- def clear(self):
- """Removes the footer from the current terminal."""
-@@ -802,7 +802,7 @@
- dirpath = None
-
- type_counts = database.type_counts(dirpath)
-- sorted_counts = sorted(type_counts.iteritems(),
-+ sorted_counts = sorted(iter(type_counts.items()),
- key=operator.itemgetter(1))
-
- total = 0
-@@ -957,7 +957,7 @@
- processes[i].run()
-
- exit_code = 0
-- for process in processes.values():
-+ for process in list(processes.values()):
- status = process.wait()
- if status:
- exit_code = status
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/makeutil.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/makeutil.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import os
- import re
-@@ -66,7 +66,7 @@
- self._list = []
- self._set = set()
-
-- def __nonzero__(self):
-+ def __bool__(self):
- return bool(self._set)
-
- def __iter__(self):
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/milestone.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/milestone.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import os
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/mozconfig.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/mozconfig.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import filecmp
- import os
-@@ -306,7 +306,7 @@
-
- # Environment variables also appear as shell variables, but that's
- # uninteresting duplication of information. Filter them out.
-- filt = lambda x, y: {k: v for k, v in x.items() if k not in y}
-+ filt = lambda x, y: {k: v for k, v in list(x.items()) if k not in y}
- result['vars'] = diff_vars(
- filt(parsed['vars_before'], parsed['env_before']),
- filt(parsed['vars_after'], parsed['env_after'])
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/mozinfo.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/mozinfo.py (refactored)
-@@ -5,7 +5,7 @@
- # This module produces a JSON file that provides basic build info and
- # configuration metadata.
-
--from __future__ import absolute_import
-+
-
- import os
- import re
-@@ -154,7 +154,7 @@
- and what keys are produced.
- """
- build_conf = build_dict(config, env)
-- if isinstance(file, basestring):
-+ if isinstance(file, str):
- file = open(file, 'wb')
-
- json.dump(build_conf, file, sort_keys=True, indent=4)
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/preprocessor.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/preprocessor.py (refactored)
-@@ -27,7 +27,8 @@
- import re
- from optparse import OptionParser
- import errno
--from makeutil import Makefile
-+from .makeutil import Makefile
-+from functools import reduce
-
- # hack around win32 mangling our line endings
- # http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/65443
-@@ -56,7 +57,7 @@
- self.__ignore_whitespace()
- self.e = self.__get_logical_or()
- if self.content:
-- raise Expression.ParseError, self
-+ raise Expression.ParseError(self)
-
- def __get_logical_or(self):
- """
-@@ -157,7 +158,7 @@
- if word_len:
- rv = Expression.__ASTLeaf('string', self.content[:word_len])
- else:
-- raise Expression.ParseError, self
-+ raise Expression.ParseError(self)
- self.__strip(word_len)
- self.__ignore_whitespace()
- return rv
-@@ -196,7 +197,7 @@
- return left and right
- elif tok[1].value == '||':
- return left or right
-- raise Expression.ParseError, self
-+ raise Expression.ParseError(self)
-
- # Mapping from token types to evaluator functions
- # Apart from (non-)equality, all these can be simple lambda forms.
-@@ -230,7 +231,7 @@
- def __repr__(self):
- return self.value.__repr__()
-
-- class ParseError(StandardError):
-+ class ParseError(Exception):
- """
- Error raised when parsing fails.
- It has two members, offset and content, which give the offset of the
-@@ -278,7 +279,7 @@
- self.context = Context()
- for k,v in {'FILE': '',
- 'LINE': 0,
-- 'DIRECTORY': os.path.abspath('.')}.iteritems():
-+ 'DIRECTORY': os.path.abspath('.')}.items():
- self.context[k] = v
- self.actionLevel = 0
- self.disableLevel = 0
-@@ -292,21 +293,21 @@
- self.cmds = {}
- for cmd, level in {'define': 0,
- 'undef': 0,
-- 'if': sys.maxint,
-- 'ifdef': sys.maxint,
-- 'ifndef': sys.maxint,
-+ 'if': sys.maxsize,
-+ 'ifdef': sys.maxsize,
-+ 'ifndef': sys.maxsize,
- 'else': 1,
- 'elif': 1,
- 'elifdef': 1,
- 'elifndef': 1,
-- 'endif': sys.maxint,
-+ 'endif': sys.maxsize,
- 'expand': 0,
- 'literal': 0,
- 'filter': 0,
- 'unfilter': 0,
- 'include': 0,
- 'includesubst': 0,
-- 'error': 0}.iteritems():
-+ 'error': 0}.items():
- self.cmds[cmd] = (level, getattr(self, 'do_' + cmd))
- self.out = sys.stdout
- self.setMarker(marker)
-@@ -469,7 +470,7 @@
- raise Preprocessor.Error(self, "--depend doesn't work with stdout",
- None)
- try:
-- from makeutil import Makefile
-+ from .makeutil import Makefile
- except:
- raise Preprocessor.Error(self, "--depend requires the "
- "mozbuild.makeutil module", None)
-@@ -684,7 +685,7 @@
- current = dict(self.filters)
- for f in filters:
- current[f] = getattr(self, 'filter_' + f)
-- filterNames = current.keys()
-+ filterNames = list(current.keys())
- filterNames.sort()
- self.filters = [(fn, current[fn]) for fn in filterNames]
- return
-@@ -694,7 +695,7 @@
- for f in filters:
- if f in current:
- del current[f]
-- filterNames = current.keys()
-+ filterNames = list(current.keys())
- filterNames.sort()
- self.filters = [(fn, current[fn]) for fn in filterNames]
- return
-@@ -739,7 +740,7 @@
- args can either be a file name, or a file-like object.
- Files should be opened, and will be closed after processing.
- """
-- isName = type(args) == str or type(args) == unicode
-+ isName = type(args) == str or type(args) == str
- oldCheckLineNumbers = self.checkLineNumbers
- self.checkLineNumbers = False
- if isName:
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/pythonutil.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/pythonutil.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import os
- import sys
-@@ -11,7 +11,7 @@
- def iter_modules_in_path(*paths):
- paths = [os.path.abspath(os.path.normcase(p)) + os.sep
- for p in paths]
-- for name, module in sys.modules.items():
-+ for name, module in list(sys.modules.items()):
- if not hasattr(module, '__file__'):
- continue
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/shellutil.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/shellutil.py (refactored)
-@@ -15,7 +15,7 @@
- # which matches the pattern and captures it in a named match group.
- # The group names and patterns are given as arguments.
- all_tokens = '|'.join('(?P<%s>%s)' % (name, value)
-- for name, value in tokens.iteritems())
-+ for name, value in tokens.items())
- nonescaped = r'(?<!\\)(?:%s)' % all_tokens
-
- # The final pattern matches either the above pattern, or an escaped
-@@ -96,7 +96,7 @@
- self.cline = self.cline[m.end():]
-
- match = {name: value
-- for name, value in m.groupdict().items() if value}
-+ for name, value in list(m.groupdict().items()) if value}
- if 'quote' in match:
- # " or ' start a quoted string
- if match['quote'] == '"':
-@@ -144,7 +144,7 @@
- self._push(self.cline[:m.start()])
- self.cline = self.cline[m.end():]
- match = {name: value
-- for name, value in m.groupdict().items() if value}
-+ for name, value in list(m.groupdict().items()) if value}
- if 'quote' in match:
- # a double quote ends the quoted string, so go back to
- # unquoted parsing
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/sphinx.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/sphinx.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import importlib
- import os
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/testing.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/testing.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
--
--import cPickle as pickle
-+
-+
-+import pickle as pickle
- import os
- import sys
-
-@@ -62,7 +62,7 @@
- if test_defaults:
- with open(test_defaults, 'rb') as fh:
- defaults = pickle.load(fh)
-- for path, tests in test_data.items():
-+ for path, tests in list(test_data.items()):
- for metadata in tests:
- if defaults:
- manifest = metadata['manifest']
-@@ -303,7 +303,7 @@
- WEB_PLATFORM_TESTS_FLAVORS = ('web-platform-tests',)
-
- def all_test_flavors():
-- return ([v[0] for v in TEST_MANIFESTS.values()] +
-+ return ([v[0] for v in list(TEST_MANIFESTS.values())] +
- list(REFTEST_FLAVORS) +
- list(WEB_PLATFORM_TESTS_FLAVORS) +
- ['python'])
-@@ -445,7 +445,7 @@
- only a few tests need to be run.
- """
- flavor_info = {flavor: (root, prefix, install)
-- for (flavor, root, prefix, install) in TEST_MANIFESTS.values()}
-+ for (flavor, root, prefix, install) in list(TEST_MANIFESTS.values())}
- objdir_dest = mozpath.join(topobjdir, tests_root)
-
- converter = SupportFilesConverter()
-@@ -527,7 +527,7 @@
- paths_file = os.path.join(context.config.topsrcdir, "testing",
- "web-platform", "tests", "tools", "localpaths.py")
- _globals = {"__file__": paths_file}
-- execfile(paths_file, _globals)
-+ exec(compile(open(paths_file).read(), paths_file, 'exec'), _globals)
- import manifest as wptmanifest
- finally:
- sys.path = old_path
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/util.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/util.py (refactored)
-@@ -5,7 +5,7 @@
- # This file contains miscellaneous utility functions that don't belong anywhere
- # in particular.
-
--from __future__ import absolute_import, unicode_literals, print_function
-+
-
- import argparse
- import collections
-@@ -36,7 +36,7 @@
- if sys.version_info[0] == 3:
- str_type = str
- else:
-- str_type = basestring
-+ str_type = str
-
- if sys.platform == 'win32':
- _kernel32 = ctypes.windll.kernel32
-@@ -78,7 +78,7 @@
- return h.hexdigest()
-
-
--class EmptyValue(unicode):
-+class EmptyValue(str):
- """A dummy type that behaves like an empty string and sequence.
-
- This type exists in order to support
-@@ -92,7 +92,7 @@
- class ReadOnlyNamespace(object):
- """A class for objects with immutable attributes set at initialization."""
- def __init__(self, **kwargs):
-- for k, v in kwargs.iteritems():
-+ for k, v in kwargs.items():
- super(ReadOnlyNamespace, self).__setattr__(k, v)
-
- def __delattr__(self, key):
-@@ -152,7 +152,7 @@
- if d and not os.path.exists(path):
- try:
- os.makedirs(d)
-- except OSError, error:
-+ except OSError as error:
- if error.errno != errno.EEXIST:
- raise
-
-@@ -224,7 +224,7 @@
- self.mode = mode
-
- def write(self, buf):
-- if isinstance(buf, unicode):
-+ if isinstance(buf, str):
- buf = buf.encode('utf-8')
- BytesIO.write(self, buf)
-
-@@ -381,7 +381,7 @@
- def __add__(self, other):
- # Allow None and EmptyValue is a special case because it makes undefined
- # variable references in moz.build behave better.
-- other = [] if isinstance(other, (types.NoneType, EmptyValue)) else other
-+ other = [] if isinstance(other, (type(None), EmptyValue)) else other
- if not isinstance(other, list):
- raise ValueError('Only lists can be appended to lists.')
-
-@@ -390,7 +390,7 @@
- return new_list
-
- def __iadd__(self, other):
-- other = [] if isinstance(other, (types.NoneType, EmptyValue)) else other
-+ other = [] if isinstance(other, (type(None), EmptyValue)) else other
- if not isinstance(other, list):
- raise ValueError('Only lists can be appended to lists.')
-
-@@ -542,14 +542,14 @@
- functions below.
- """
- assert isinstance(flags, dict)
-- assert all(isinstance(v, type) for v in flags.values())
-+ assert all(isinstance(v, type) for v in list(flags.values()))
-
- class Flags(object):
-- __slots__ = flags.keys()
-+ __slots__ = list(flags.keys())
- _flags = flags
-
- def update(self, **kwargs):
-- for k, v in kwargs.iteritems():
-+ for k, v in kwargs.items():
- setattr(self, k, v)
-
- def __getattr__(self, name):
-@@ -1080,14 +1080,14 @@
- # issue. So we do a little dance to filter it out ourselves.
- dummy_fill_value = ("dummy",)
- def filter_out_dummy(iterable):
-- return itertools.ifilter(lambda x: x != dummy_fill_value,
-+ return filter(lambda x: x != dummy_fill_value,
- iterable)
-
- # From the itertools documentation, slightly modified:
- def grouper(n, iterable):
- "grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx"
- args = [iter(iterable)] * n
-- return itertools.izip_longest(fillvalue=dummy_fill_value, *args)
-+ return itertools.zip_longest(fillvalue=dummy_fill_value, *args)
-
- for i, unified_group in enumerate(grouper(files_per_unified_file,
- files)):
-@@ -1104,7 +1104,7 @@
- [(1,2), (3,4), (5,6)]
- '''
- i = iter(iterable)
-- return itertools.izip_longest(i, i)
-+ return itertools.zip_longest(i, i)
-
-
- VARIABLES_RE = re.compile('\$\((\w+)\)')
-@@ -1122,7 +1122,7 @@
- value = variables.get(name)
- if not value:
- continue
-- if not isinstance(value, types.StringTypes):
-+ if not isinstance(value, (str,)):
- value = ' '.join(value)
- result += value
- return result
-@@ -1149,7 +1149,7 @@
- pass
-
-
--class EnumString(unicode):
-+class EnumString(str):
- '''A string type that only can have a limited set of values, similarly to
- an Enum, and can only be compared against that set of values.
-
-@@ -1185,19 +1185,18 @@
- # quoting could be done with either ' or ".
- if c == "'":
- return "\\'"
-- return unicode(c.encode('unicode_escape'))
-+ return str(c.encode('unicode_escape'))
-
- # Mapping table between raw characters below \x80 and their escaped
- # counterpart, when they differ
- _INDENTED_REPR_TABLE = {
- c: e
-- for c, e in map(lambda x: (x, _escape_char(x)),
-- map(unichr, range(128)))
-+ for c, e in [(x, _escape_char(x)) for x in list(map(chr, list(range(128))))]
- if c != e
- }
- # Regexp matching all characters to escape.
- _INDENTED_REPR_RE = re.compile(
-- '([' + ''.join(_INDENTED_REPR_TABLE.values()) + ']+)')
-+ '([' + ''.join(list(_INDENTED_REPR_TABLE.values())) + ']+)')
-
-
- def indented_repr(o, indent=4):
-@@ -1223,7 +1222,7 @@
- elif isinstance(o, bytes):
- yield 'b'
- yield repr(o)
-- elif isinstance(o, unicode):
-+ elif isinstance(o, str):
- yield "'"
- # We want a readable string (non escaped unicode), but some
- # special characters need escaping (e.g. \n, \t, etc.)
-@@ -1253,11 +1252,11 @@
- if isinstance(obj, dict):
- return {
- encode(k, encoding): encode(v, encoding)
-- for k, v in obj.iteritems()
-+ for k, v in obj.items()
- }
- if isinstance(obj, bytes):
- return obj
-- if isinstance(obj, unicode):
-+ if isinstance(obj, str):
- return obj.encode(encoding)
- if isinstance(obj, Iterable):
- return [encode(i, encoding) for i in obj]
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/vendor_rust.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/vendor_rust.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, # You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- from distutils.version import LooseVersion
- import logging
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/virtualenv.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/virtualenv.py (refactored)
-@@ -5,7 +5,7 @@
- # This file contains code for populating the virtualenv environment for
- # Mozilla's build system. It is typically called as part of configure.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import distutils.sysconfig
- import os
-@@ -461,8 +461,8 @@
- and call .ensure() and .activate() to make the virtualenv active.
- """
-
-- execfile(self.activate_path, dict(__file__=self.activate_path))
-- if isinstance(os.environ['PATH'], unicode):
-+ exec(compile(open(self.activate_path).read(), self.activate_path, 'exec'), dict(__file__=self.activate_path))
-+ if isinstance(os.environ['PATH'], str):
- os.environ['PATH'] = os.environ['PATH'].encode('utf-8')
-
- def install_pip_package(self, package):
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/buildlist.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/buildlist.py (refactored)
-@@ -7,7 +7,7 @@
-
- Usage: buildlist.py <filename> <entry> [<entry> ...]
- '''
--from __future__ import absolute_import, print_function
-+
-
- import sys
- import os
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/cl.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/cl.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import ctypes
- import os
-@@ -55,7 +55,7 @@
- break
-
- if target is None:
-- print >>sys.stderr, "No target set"
-+ print("No target set", file=sys.stderr)
- return 1
-
- # Assume the source file is the last argument
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/dump_env.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/dump_env.py (refactored)
-@@ -6,5 +6,5 @@
- # native paths printed on Windows so that these paths can be incorporated
- # into Python configure's environment.
- import os
--for key, value in os.environ.items():
-- print('%s=%s' % (key, value))
-+for key, value in list(os.environ.items()):
-+ print(('%s=%s' % (key, value)))
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/explode_aar.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/explode_aar.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import errno
-@@ -44,7 +44,7 @@
- assets = mozpath.join(destdir, 'assets')
- try:
- os.rmdir(assets)
-- except OSError, e:
-+ except OSError as e:
- if e.errno in (errno.ENOTEMPTY, errno.ENOENT):
- pass
- else:
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/file_generate.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/file_generate.py (refactored)
-@@ -6,7 +6,7 @@
- # the arguments that can be used to generate the output file, call the
- # script's |main| method with appropriate arguments.
-
--from __future__ import absolute_import, print_function
-+
-
- import argparse
- import imp
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/generate_suggestedsites.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/generate_suggestedsites.py (refactored)
-@@ -26,7 +26,7 @@
- directory e.g. raw/suggestedsites.json, raw-pt-rBR/suggestedsites.json.
- '''
-
--from __future__ import absolute_import, print_function
-+
-
- import argparse
- import copy
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/generate_symbols_file.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/generate_symbols_file.py (refactored)
-@@ -2,12 +2,12 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import buildconfig
- import os
--from StringIO import StringIO
-+from io import StringIO
- from mozbuild.preprocessor import Preprocessor
- from mozbuild.util import DefinesAction
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/jar_maker.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/jar_maker.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import sys
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/make_dmg.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/make_dmg.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import print_function
-+
-
- from mozbuild.base import MozbuildObject
- from mozpack import dmg
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/output_searchplugins_list.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/output_searchplugins_list.py (refactored)
-@@ -18,4 +18,4 @@
- else:
- engines = searchinfo["default"]["visibleDefaultEngines"]
-
--print '\n'.join(engines)
-+print('\n'.join(engines))
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/package_fennec_apk.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/package_fennec_apk.py (refactored)
-@@ -6,7 +6,7 @@
- Script to produce an Android package (.apk) for Fennec.
- '''
-
--from __future__ import absolute_import, print_function
-+
-
- import argparse
- import buildconfig
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/preprocessor.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/preprocessor.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import sys
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/process_define_files.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/process_define_files.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import os
-@@ -55,7 +55,7 @@
- 'CONFIGURE_DEFINE_FILE')
- defines = '\n'.join(sorted(
- '#define %s %s' % (name, val)
-- for name, val in config.defines.iteritems()
-+ for name, val in config.defines.items()
- if name not in config.non_global_defines))
- l = l[:m.start('cmd') - 1] \
- + defines + l[m.end('name'):]
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/process_install_manifest.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/process_install_manifest.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import os
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/test_archive.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/test_archive.py (refactored)
-@@ -8,7 +8,7 @@
- # It is defined inline because this was easiest to make test archive
- # generation faster.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import itertools
-@@ -433,7 +433,7 @@
- # "common" is our catch all archive and it ignores things from other archives.
- # Verify nothing sneaks into ARCHIVE_FILES without a corresponding exclusion
- # rule in the "common" archive.
--for k, v in ARCHIVE_FILES.items():
-+for k, v in list(ARCHIVE_FILES.items()):
- # Skip mozharness because it isn't staged.
- if k in ('common', 'mozharness'):
- continue
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/webidl.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/webidl.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import sys
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/xpccheck.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/xpccheck.py (refactored)
-@@ -8,7 +8,7 @@
- Usage: xpccheck.py <directory> [<directory> ...]
- '''
-
--from __future__ import absolute_import
-+
-
- import sys
- import os
-@@ -40,7 +40,7 @@
- break
-
- if not found:
-- print >>sys.stderr, "TEST-UNEXPECTED-FAIL | xpccheck | test %s is missing from test manifest %s!" % (name, os.path.join(directory, 'xpcshell.ini'))
-+ print("TEST-UNEXPECTED-FAIL | xpccheck | test %s is missing from test manifest %s!" % (name, os.path.join(directory, 'xpcshell.ini')), file=sys.stderr)
- sys.exit(1)
-
- def verifyIniFile(initests, directory):
-@@ -60,12 +60,12 @@
- break
-
- if not found:
-- print >>sys.stderr, "TEST-UNEXPECTED-FAIL | xpccheck | found %s in xpcshell.ini and not in directory '%s'" % (name, directory)
-+ print("TEST-UNEXPECTED-FAIL | xpccheck | found %s in xpcshell.ini and not in directory '%s'" % (name, directory), file=sys.stderr)
- sys.exit(1)
-
- def main(argv):
- if len(argv) < 2:
-- print >>sys.stderr, "Usage: xpccheck.py <topsrcdir> <directory> [<directory> ...]"
-+ print("Usage: xpccheck.py <topsrcdir> <directory> [<directory> ...]", file=sys.stderr)
- sys.exit(1)
-
- topsrcdir = argv[0]
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/xpidl-process.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/xpidl-process.py (refactored)
-@@ -7,7 +7,7 @@
- # input IDL file(s). It's purpose is to directly support the build
- # system. The API will change to meet the needs of the build system.
-
--from __future__ import absolute_import
-+
-
- import argparse
- import os
-@@ -58,7 +58,7 @@
-
- # TODO use FileAvoidWrite once it supports binary mode.
- xpt_path = os.path.join(xpt_dir, '%s.xpt' % module)
-- xpt_link(xpts.values()).write(xpt_path)
-+ xpt_link(list(xpts.values())).write(xpt_path)
-
- rule.add_targets([xpt_path])
- if deps_dir:
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/zip.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/action/zip.py (refactored)
-@@ -5,7 +5,7 @@
- # This script creates a zip file, but will also strip any binaries
- # it finds before adding them to the zip.
-
--from __future__ import absolute_import
-+
-
- from mozpack.files import FileFinder
- from mozpack.copier import Jarrer
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/android_eclipse.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/android_eclipse.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import itertools
- import os
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/base.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/base.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- from abc import (
- ABCMeta,
-@@ -30,15 +30,13 @@
- from mozbuild.base import ExecutionSummary
-
-
--class BuildBackend(LoggingMixin):
-+class BuildBackend(LoggingMixin, metaclass=ABCMeta):
- """Abstract base class for build backends.
-
- A build backend is merely a consumer of the build configuration (the output
- of the frontend processing). It does something with said data. What exactly
- is the discretion of the specific implementation.
- """
--
-- __metaclass__ = ABCMeta
-
- def __init__(self, environment):
- assert isinstance(environment, ConfigEnvironment)
-@@ -252,7 +250,7 @@
- srcdir = mozpath.dirname(obj.input_path)
- pp.context.update({
- k: ' '.join(v) if isinstance(v, list) else v
-- for k, v in obj.config.substs.iteritems()
-+ for k, v in obj.config.substs.items()
- })
- pp.context.update(
- top_srcdir=obj.topsrcdir,
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/common.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/common.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
--
--import cPickle as pickle
-+
-+
-+import pickle as pickle
- import itertools
- import json
- import os
-@@ -194,11 +194,11 @@
- def add_defaults(self, manifest):
- if not hasattr(manifest, 'manifest_defaults'):
- return
-- for sub_manifest, defaults in manifest.manifest_defaults.items():
-+ for sub_manifest, defaults in list(manifest.manifest_defaults.items()):
- self.manifest_defaults[sub_manifest] = defaults
-
- def add_installs(self, obj, topsrcdir):
-- for src, (dest, _) in obj.installs.iteritems():
-+ for src, (dest, _) in obj.installs.items():
- key = src[len(topsrcdir)+1:]
- self.installs_by_path[key].append((src, dest))
- for src, pat, dest in obj.pattern_installs:
-@@ -379,7 +379,7 @@
-
- path = mozpath.join(self.environment.topobjdir, 'test-installs.pkl')
- with self._write_file(path, mode='rb') as fh:
-- pickle.dump({k: v for k, v in self._test_manager.installs_by_path.items()
-+ pickle.dump({k: v for k, v in list(self._test_manager.installs_by_path.items())
- if k in self._test_manager.deferred_installs},
- fh,
- protocol=2)
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/configenvironment.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/configenvironment.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import os
- import sys
-@@ -17,7 +17,7 @@
-
-
- if sys.version_info.major == 2:
-- text_type = unicode
-+ text_type = str
- else:
- text_type = str
-
-@@ -176,7 +176,7 @@
- except UnicodeDecodeError:
- return v.decode('utf-8', 'replace')
-
-- for k, v in self.substs.items():
-+ for k, v in list(self.substs.items()):
- if not isinstance(v, StringTypes):
- if isinstance(v, Iterable):
- type(v)(decode(i) for i in v)
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/cpp_eclipse.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/cpp_eclipse.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import errno
- import random
-@@ -218,12 +218,12 @@
- cproject_header = cproject_header.replace('@MACH_COMMAND@', os.path.join(self.environment.topsrcdir, 'mach'))
- fh.write(cproject_header)
-
-- for path, defines in self._paths_to_defines.items():
-+ for path, defines in list(self._paths_to_defines.items()):
- folderinfo = CPROJECT_TEMPLATE_FOLDER_INFO_HEADER
- folderinfo = folderinfo.replace('@FOLDER_ID@', str(random.randint(1000000, 99999999999)))
- folderinfo = folderinfo.replace('@FOLDER_NAME@', 'tree/' + path)
- fh.write(folderinfo)
-- for k, v in defines.items():
-+ for k, v in list(defines.items()):
- define = ET.Element('listOptionValue')
- define.set('builtIn', 'false')
- define.set('value', str(k) + "=" + str(v))
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/fastermake.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/fastermake.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals, print_function
-+
-
- from mozbuild.backend.base import PartialBackend
- from mozbuild.backend.common import CommonBackend
-@@ -130,12 +130,12 @@
- if value is not None:
- mk.add_statement('%s = %s' % (var, value))
-
-- install_manifests_bases = self._install_manifests.keys()
-+ install_manifests_bases = list(self._install_manifests.keys())
-
- # Add information for chrome manifest generation
- manifest_targets = []
-
-- for target, entries in self._manifest_entries.iteritems():
-+ for target, entries in self._manifest_entries.items():
- manifest_targets.append(target)
- install_target = mozpath.basedir(target, install_manifests_bases)
- self._install_manifests[install_target].add_content(
-@@ -144,16 +144,16 @@
-
- # Add information for install manifests.
- mk.add_statement('INSTALL_MANIFESTS = %s'
-- % ' '.join(self._install_manifests.keys()))
-+ % ' '.join(list(self._install_manifests.keys())))
-
- # Add dependencies we infered:
-- for target, deps in self._dependencies.iteritems():
-+ for target, deps in self._dependencies.items():
- mk.create_rule([target]).add_dependencies(
- '$(TOPOBJDIR)/%s' % d for d in deps)
-
- mk.add_statement('include $(TOPSRCDIR)/config/faster/rules.mk')
-
-- for base, install_manifest in self._install_manifests.iteritems():
-+ for base, install_manifest in self._install_manifests.items():
- with self._write_file(
- mozpath.join(self.environment.topobjdir, 'faster',
- 'install_%s' % base.replace('/', '_'))) as fh:
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/mach_commands.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/mach_commands.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import argparse
- import os
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/recursivemake.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/recursivemake.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import logging
- import os
-@@ -12,7 +12,7 @@
- defaultdict,
- namedtuple,
- )
--from StringIO import StringIO
-+from io import StringIO
- from itertools import chain
-
- from mozpack.manifests import (
-@@ -74,6 +74,7 @@
- )
- from ..makeutil import Makefile
- from mozbuild.shellutil import quote as shell_quote
-+from functools import reduce
-
- MOZBUILD_VARIABLES = [
- b'ANDROID_APK_NAME',
-@@ -214,7 +215,7 @@
- self.fh.write(buf)
-
- def write_once(self, buf):
-- if isinstance(buf, unicode):
-+ if isinstance(buf, str):
- buf = buf.encode('utf-8')
- if b'\n' + buf not in self.fh.getvalue():
- self.write(buf)
-@@ -283,8 +284,8 @@
- Helper function to call a filter from compute_dependencies and
- traverse.
- """
-- return filter(current, self._traversal.get(current,
-- self.SubDirectories()))
-+ return list(filter(current, self._traversal.get(current,
-+ self.SubDirectories())))
-
- def compute_dependencies(self, filter=None):
- """
-@@ -638,7 +639,7 @@
- convenience variables, and the other dependency definitions for a
- hopefully proper directory traversal.
- """
-- for tier, no_skip in self._no_skip.items():
-+ for tier, no_skip in list(self._no_skip.items()):
- self.log(logging.DEBUG, 'fill_root_mk', {
- 'number': len(no_skip), 'tier': tier
- }, 'Using {number} directories during {tier}')
-@@ -684,7 +685,7 @@
- for tier, filter in filters:
- main, all_deps = \
- self._traversal.compute_dependencies(filter)
-- for dir, deps in all_deps.items():
-+ for dir, deps in list(all_deps.items()):
- if deps is not None or (dir in self._idl_dirs \
- and tier == 'export'):
- rule = root_deps_mk.create_rule(['%s/%s' % (dir, tier)])
-@@ -697,7 +698,7 @@
- rule.add_dependencies('%s/%s' % (d, tier) for d in main)
-
- all_compile_deps = reduce(lambda x,y: x|y,
-- self._compile_graph.values()) if self._compile_graph else set()
-+ list(self._compile_graph.values())) if self._compile_graph else set()
- compile_roots = set(self._compile_graph.keys()) - all_compile_deps
-
- rule = root_deps_mk.create_rule(['recurse_compile'])
-@@ -839,7 +840,7 @@
- self._fill_root_mk()
-
- # Make the master test manifest files.
-- for flavor, t in self._test_manifests.items():
-+ for flavor, t in list(self._test_manifests.items()):
- install_prefix, manifests = t
- manifest_stem = mozpath.join(install_prefix, '%s.ini' % flavor)
- self._write_master_test_manifest(mozpath.join(
-@@ -945,7 +946,7 @@
- for p in ('Makefile', 'backend.mk', '.deps/.mkdir.done'):
- build_files.add_optional_exists(p)
-
-- for idl in manager.idls.values():
-+ for idl in list(manager.idls.values()):
- self._install_manifests['dist_idl'].add_symlink(idl['source'],
- idl['basename'])
- self._install_manifests['dist_include'].add_optional_exists('%s.h'
-@@ -992,7 +993,7 @@
-
- interfaces_manifests = []
- dist_dir = mozpath.join(self.environment.topobjdir, 'dist')
-- for manifest, entries in manager.interface_manifests.items():
-+ for manifest, entries in list(manager.interface_manifests.items()):
- interfaces_manifests.append(mozpath.join('$(DEPTH)', manifest))
- for xpt in sorted(entries):
- registered_xpt_files.add(mozpath.join(
-@@ -1052,7 +1053,7 @@
- # Don't allow files to be defined multiple times unless it is allowed.
- # We currently allow duplicates for non-test files or test files if
- # the manifest is listed as a duplicate.
-- for source, (dest, is_test) in obj.installs.items():
-+ for source, (dest, is_test) in list(obj.installs.items()):
- try:
- self._install_manifests['_test_files'].add_symlink(source, dest)
- except ValueError:
-@@ -1386,7 +1387,7 @@
- man_dir = mozpath.join(self.environment.topobjdir, '_build_manifests',
- dest)
-
-- for k, manifest in manifests.items():
-+ for k, manifest in list(manifests.items()):
- with self._write_file(mozpath.join(man_dir, k)) as fh:
- manifest.write(fileobj=fh)
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/tup.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/tup.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import os
-
-@@ -253,7 +253,7 @@
- backend_file = self._get_backend_file('xpcom/xpidl')
- backend_file.export_shell()
-
-- for module, data in sorted(manager.modules.iteritems()):
-+ for module, data in sorted(manager.modules.items()):
- dest, idls = data
- cmd = [
- '$(PYTHON_PATH)',
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/visualstudio.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/visualstudio.py (refactored)
-@@ -5,7 +5,7 @@
- # This file contains a build backend for generating Visual Studio project
- # files.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import errno
- import os
-@@ -218,7 +218,7 @@
- includes = [os.path.normpath(i) for i in includes]
-
- defines = []
-- for k, v in self._paths_to_defines.get(path, {}).items():
-+ for k, v in list(self._paths_to_defines.get(path, {}).items()):
- if v is True:
- defines.append(k)
- else:
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/codecoverage/chrome_map.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/codecoverage/chrome_map.py (refactored)
-@@ -5,7 +5,7 @@
- from collections import defaultdict
- import json
- import os
--import urlparse
-+import urllib.parse
-
- from mach.config import ConfigSettings
- from mach.logging import LoggingManager
-@@ -42,7 +42,7 @@
- if isinstance(entry, (ManifestChrome, ManifestResource)):
- if isinstance(entry, ManifestResource):
- dest = entry.target
-- url = urlparse.urlparse(dest)
-+ url = urllib.parse.urlparse(dest)
- if not url.scheme:
- dest = mozpath.normpath(mozpath.join(entry.base, dest))
- if url.scheme == 'file':
-@@ -99,7 +99,7 @@
- chrome_mapping = self.manifest_handler.chrome_mapping
- overrides = self.manifest_handler.overrides
- json.dump([
-- {k: list(v) for k, v in chrome_mapping.iteritems()},
-+ {k: list(v) for k, v in chrome_mapping.items()},
- overrides,
- self._install_mapping,
- ], fh, sort_keys=True, indent=2)
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/codecoverage/packager.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/codecoverage/packager.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function
-+
-
- import argparse
- import sys
-@@ -12,7 +12,7 @@
-
- def package_gcno_tree(root, output_file):
- # XXX JarWriter doesn't support unicode strings, see bug 1056859
-- if isinstance(root, unicode):
-+ if isinstance(root, str):
- root = root.encode('utf-8')
-
- finder = FileFinder(root)
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/compilation/codecomplete.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/compilation/codecomplete.py (refactored)
-@@ -4,7 +4,7 @@
-
- # This modules provides functionality for dealing with code completion.
-
--from __future__ import absolute_import
-+
-
- import os
-
-@@ -59,5 +59,5 @@
- # Drop the first flag since that is the pathname of the compiler.
- flags = (shell_split(build_vars[cc]) + shell_split(build_vars[name]))[1:]
-
-- print(' '.join(shell_quote(arg)
-- for arg in util.sanitize_cflags(flags)))
-+ print((' '.join(shell_quote(arg)
-+ for arg in util.sanitize_cflags(flags))))
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/compilation/database.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/compilation/database.py (refactored)
-@@ -118,7 +118,7 @@
-
- db = []
-
-- for (directory, filename), cmd in self._db.iteritems():
-+ for (directory, filename), cmd in self._db.items():
- env = self._envs[directory]
- cmd = list(cmd)
- cmd.append(filename)
-@@ -151,7 +151,7 @@
- a = expand_variables(a, variables).split()
- if not a:
- continue
-- if isinstance(a, types.StringTypes):
-+ if isinstance(a, (str,)):
- c.append(a)
- else:
- c.extend(a)
-@@ -216,7 +216,7 @@
- value = cenv.substs.get(name)
- if not value:
- return
-- if isinstance(value, types.StringTypes):
-+ if isinstance(value, (str,)):
- value = value.split()
- db.extend(value)
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/compilation/warnings.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/compilation/warnings.py (refactored)
-@@ -4,7 +4,7 @@
-
- # This modules provides functionality for dealing with compiler warnings.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import errno
- import json
-@@ -123,18 +123,18 @@
-
- def __len__(self):
- i = 0
-- for value in self._files.values():
-+ for value in list(self._files.values()):
- i += len(value['warnings'])
-
- return i
-
- def __iter__(self):
-- for value in self._files.values():
-+ for value in list(self._files.values()):
- for warning in value['warnings']:
- yield warning
-
- def __contains__(self, item):
-- for value in self._files.values():
-+ for value in list(self._files.values()):
- for warning in value['warnings']:
- if warning == item:
- return True
-@@ -144,7 +144,7 @@
- @property
- def warnings(self):
- """All the CompilerWarning instances in this database."""
-- for value in self._files.values():
-+ for value in list(self._files.values()):
- for w in value['warnings']:
- yield w
-
-@@ -152,7 +152,7 @@
- """Returns a mapping of warning types to their counts."""
-
- types = {}
-- for value in self._files.values():
-+ for value in list(self._files.values()):
- for warning in value['warnings']:
- if dirpath and not mozpath.normsep(warning['filename']).startswith(dirpath):
- continue
-@@ -210,7 +210,7 @@
- """
-
- # Need to calculate up front since we are mutating original object.
-- filenames = self._files.keys()
-+ filenames = list(self._files.keys())
- for filename in filenames:
- if not os.path.exists(filename):
- del self._files[filename]
-@@ -229,10 +229,10 @@
- obj = {'files': {}}
-
- # All this hackery because JSON can't handle sets.
-- for k, v in self._files.iteritems():
-+ for k, v in self._files.items():
- obj['files'][k] = {}
-
-- for k2, v2 in v.iteritems():
-+ for k2, v2 in v.items():
- normalized = v2
-
- if k2 == 'warnings':
-@@ -249,8 +249,8 @@
- self._files = obj['files']
-
- # Normalize data types.
-- for filename, value in self._files.iteritems():
-- for k, v in value.iteritems():
-+ for filename, value in self._files.items():
-+ for k, v in value.items():
- if k != 'warnings':
- continue
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/__init__.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/__init__.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import inspect
- import logging
-@@ -193,7 +193,7 @@
- for b in ('None', 'False', 'True', 'int', 'bool', 'any', 'all', 'len',
- 'list', 'tuple', 'set', 'dict', 'isinstance', 'getattr',
- 'hasattr', 'enumerate', 'range', 'zip')
-- }, __import__=forbidden_import, str=unicode)
-+ }, __import__=forbidden_import, str=str)
-
- # Expose a limited set of functions from os.path
- OS = ReadOnlyNamespace(path=ReadOnlyNamespace(**{
-@@ -333,7 +333,7 @@
- if path:
- self.include_file(path)
-
-- for option in self._options.itervalues():
-+ for option in self._options.values():
- # All options must be referenced by some @depends function
- if option not in self._seen:
- raise ConfigureError(
-@@ -437,7 +437,7 @@
- value = PositiveOptionValue()
- elif value is False or value == ():
- value = NegativeOptionValue()
-- elif isinstance(value, types.StringTypes):
-+ elif isinstance(value, (str,)):
- value = PositiveOptionValue((value,))
- elif isinstance(value, tuple):
- value = PositiveOptionValue(value)
-@@ -477,7 +477,7 @@
- return value
-
- def _dependency(self, arg, callee_name, arg_name=None):
-- if isinstance(arg, types.StringTypes):
-+ if isinstance(arg, (str,)):
- prefix, name, values = Option.split_option(arg)
- if values != ():
- raise ConfigureError("Option must not contain an '='")
-@@ -541,7 +541,7 @@
- '''
- when = self._normalize_when(kwargs.get('when'), 'option')
- args = [self._resolve(arg) for arg in args]
-- kwargs = {k: self._resolve(v) for k, v in kwargs.iteritems()
-+ kwargs = {k: self._resolve(v) for k, v in kwargs.items()
- if k != 'when'}
- option = Option(*args, **kwargs)
- if when:
-@@ -622,7 +622,7 @@
- with self.only_when_impl(when):
- what = self._resolve(what)
- if what:
-- if not isinstance(what, types.StringTypes):
-+ if not isinstance(what, (str,)):
- raise TypeError("Unexpected type: '%s'" % type(what).__name__)
- self.include_file(what)
-
-@@ -640,7 +640,7 @@
- (k[:-len('_impl')], getattr(self, k))
- for k in dir(self) if k.endswith('_impl') and k != 'template_impl'
- )
-- glob.update((k, v) for k, v in self.iteritems() if k not in glob)
-+ glob.update((k, v) for k, v in self.items() if k not in glob)
-
- # Any function argument to the template must be prepared to be sandboxed.
- # If the template itself returns a function (in which case, it's very
-@@ -664,7 +664,7 @@
- def wrapper(*args, **kwargs):
- args = [maybe_prepare_function(arg) for arg in args]
- kwargs = {k: maybe_prepare_function(v)
-- for k, v in kwargs.iteritems()}
-+ for k, v in kwargs.items()}
- ret = template(*args, **kwargs)
- if isfunction(ret):
- # We can't expect the sandboxed code to think about all the
-@@ -696,7 +696,7 @@
- for value, required in (
- (_import, True), (_from, False), (_as, False)):
-
-- if not isinstance(value, types.StringTypes) and (
-+ if not isinstance(value, (str,)) and (
- required or value is not None):
- raise TypeError("Unexpected type: '%s'" % type(value).__name__)
- if value is not None and not self.RE_MODULE.match(value):
-@@ -759,7 +759,7 @@
- name = self._resolve(name, need_help_dependency=False)
- if name is None:
- return
-- if not isinstance(name, types.StringTypes):
-+ if not isinstance(name, (str,)):
- raise TypeError("Unexpected type: '%s'" % type(name).__name__)
- if name in data:
- raise ConfigureError(
-@@ -849,7 +849,7 @@
- if isinstance(possible_reasons[0], Option):
- reason = possible_reasons[0]
- if not reason and (isinstance(value, (bool, tuple)) or
-- isinstance(value, types.StringTypes)):
-+ isinstance(value, (str,))):
- # A reason can be provided automatically when imply_option
- # is called with an immediate value.
- _, filename, line, _, _, _ = inspect.stack()[1]
-@@ -884,10 +884,10 @@
- if not inspect.isfunction(func):
- raise TypeError("Unexpected type: '%s'" % type(func).__name__)
- if func in self._prepared_functions:
-- return func, func.func_globals
-+ return func, func.__globals__
-
- glob = SandboxedGlobal(
-- (k, v) for k, v in func.func_globals.iteritems()
-+ (k, v) for k, v in func.__globals__.items()
- if (inspect.isfunction(v) and v not in self._templates) or (
- inspect.isclass(v) and issubclass(v, Exception))
- )
-@@ -908,20 +908,20 @@
- # Note this is not entirely bullet proof (if the value is e.g. a list,
- # the list contents could have changed), but covers the bases.
- closure = None
-- if func.func_closure:
-+ if func.__closure__:
- def makecell(content):
- def f():
- content
-- return f.func_closure[0]
-+ return f.__closure__[0]
-
- closure = tuple(makecell(cell.cell_contents)
-- for cell in func.func_closure)
-+ for cell in func.__closure__)
-
- new_func = wraps(func)(types.FunctionType(
-- func.func_code,
-+ func.__code__,
- glob,
- func.__name__,
-- func.func_defaults,
-+ func.__defaults__,
- closure
- ))
- @wraps(new_func)
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/check_debug_ranges.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/check_debug_ranges.py (refactored)
-@@ -6,7 +6,7 @@
- # to a given compilation unit. This is used as a helper to find a bug in some
- # versions of GNU ld.
-
--from __future__ import absolute_import
-+
-
- import subprocess
- import sys
-@@ -59,4 +59,4 @@
-
-
- if __name__ == '__main__':
-- print main(*sys.argv[1:])
-+ print(main(*sys.argv[1:]))
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/constants.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/constants.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- from mozbuild.util import EnumString
- from collections import OrderedDict
-@@ -56,7 +56,7 @@
- 'x86_64': 64,
- }
-
--CPU = EnumString.subclass(*CPU_bitness.keys())
-+CPU = EnumString.subclass(*list(CPU_bitness.keys()))
-
- Endianness = EnumString.subclass(
- 'big',
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/help.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/help.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import os
- from mozbuild.configure.options import Option
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/libstdcxx.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/libstdcxx.py (refactored)
-@@ -13,7 +13,7 @@
- # will be used from shell, we just print the two assignments and evaluate
- # them from shell.
-
--from __future__ import absolute_import
-+
-
- import os
- import subprocess
-@@ -76,6 +76,6 @@
-
- if __name__ == '__main__':
- cxx_env = os.environ['CXX']
-- print 'MOZ_LIBSTDCXX_TARGET_VERSION=%s' % find_version(cxx_env)
-+ print('MOZ_LIBSTDCXX_TARGET_VERSION=%s' % find_version(cxx_env))
- host_cxx_env = os.environ.get('HOST_CXX', cxx_env)
-- print 'MOZ_LIBSTDCXX_HOST_VERSION=%s' % find_version(host_cxx_env)
-+ print('MOZ_LIBSTDCXX_HOST_VERSION=%s' % find_version(host_cxx_env))
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/lint.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/lint.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-
--from StringIO import StringIO
-+
-+from io import StringIO
- from . import (
- CombinedDependsFunction,
- ConfigureError,
-@@ -42,7 +42,7 @@
- # - don't use @imports
- # - don't have a closure
- # - don't use global variables
-- if func in self._imports or func.func_closure:
-+ if func in self._imports or func.__closure__:
- return True
- for op, arg in disassemble_as_iter(func):
- if op in ('LOAD_GLOBAL', 'STORE_GLOBAL'):
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/lint_util.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/lint_util.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import dis
- import inspect
-@@ -12,9 +12,9 @@
- # returns an iterator.
- def disassemble_as_iter(co):
- if inspect.ismethod(co):
-- co = co.im_func
-+ co = co.__func__
- if inspect.isfunction(co):
-- co = co.func_code
-+ co = co.__code__
- code = co.co_code
- n = len(code)
- i = 0
-@@ -30,7 +30,7 @@
- extended_arg = 0
- i += 2
- if op == dis.EXTENDED_ARG:
-- extended_arg = arg * 65536L
-+ extended_arg = arg * 65536
- continue
- if op in dis.hasconst:
- yield opname, co.co_consts[arg]
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/options.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/options.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import os
- import sys
-@@ -12,7 +12,7 @@
-
- def istupleofstrings(obj):
- return isinstance(obj, tuple) and len(obj) and all(
-- isinstance(o, types.StringTypes) for o in obj)
-+ isinstance(o, (str,)) for o in obj)
-
-
- class OptionValue(tuple):
-@@ -71,7 +71,7 @@
- in the form of a tuple for when values are given to the option (in the form
- --option=value[,value2...].
- '''
-- def __nonzero__(self):
-+ def __bool__(self):
- return True
-
-
-@@ -96,7 +96,7 @@
- if format_data:
- message = message.format(**format_data)
- super(ConflictingOptionError, self).__init__(message)
-- for k, v in format_data.iteritems():
-+ for k, v in format_data.items():
- setattr(self, k, v)
-
-
-@@ -132,7 +132,7 @@
- 'At least an option name or an environment variable name must '
- 'be given')
- if name:
-- if not isinstance(name, types.StringTypes):
-+ if not isinstance(name, (str,)):
- raise InvalidOptionError('Option must be a string')
- if not name.startswith('--'):
- raise InvalidOptionError('Option must start with `--`')
-@@ -141,7 +141,7 @@
- if not name.islower():
- raise InvalidOptionError('Option must be all lowercase')
- if env:
-- if not isinstance(env, types.StringTypes):
-+ if not isinstance(env, (str,)):
- raise InvalidOptionError(
- 'Environment variable name must be a string')
- if not env.isupper():
-@@ -151,8 +151,8 @@
- isinstance(nargs, int) and nargs >= 0):
- raise InvalidOptionError(
- "nargs must be a positive integer, '?', '*' or '+'")
-- if (not isinstance(default, types.StringTypes) and
-- not isinstance(default, (bool, types.NoneType)) and
-+ if (not isinstance(default, (str,)) and
-+ not isinstance(default, (bool, type(None))) and
- not istupleofstrings(default)):
- raise InvalidOptionError(
- 'default must be a bool, a string or a tuple of strings')
-@@ -224,7 +224,7 @@
- ', '.join("'%s'" % c for c in choices))
- elif has_choices:
- maxargs = self.maxargs
-- if len(choices) < maxargs and maxargs != sys.maxint:
-+ if len(choices) < maxargs and maxargs != sys.maxsize:
- raise InvalidOptionError('Not enough `choices` for `nargs`')
- self.choices = choices
- self.help = help
-@@ -238,7 +238,7 @@
- where prefix is one of 'with', 'without', 'enable' or 'disable'.
- The '=values' part is optional. Values are separated with commas.
- '''
-- if not isinstance(option, types.StringTypes):
-+ if not isinstance(option, (str,)):
- raise InvalidOptionError('Option must be a string')
-
- elements = option.split('=', 1)
-@@ -291,7 +291,7 @@
- def maxargs(self):
- if isinstance(self.nargs, int):
- return self.nargs
-- return 1 if self.nargs == '?' else sys.maxint
-+ return 1 if self.nargs == '?' else sys.maxsize
-
- def _validate_nargs(self, num):
- minargs, maxargs = self.minargs, self.maxargs
-@@ -485,5 +485,5 @@
-
- def __iter__(self):
- for d in (self._args, self._extra_args):
-- for arg, pos in d.itervalues():
-+ for arg, pos in d.values():
- yield arg
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/util.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/util.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import codecs
- import itertools
-@@ -52,7 +52,7 @@
-
- def __cmp__(self, other):
- # LooseVersion checks isinstance(StringType), so work around it.
-- if isinstance(other, unicode):
-+ if isinstance(other, str):
- other = other.encode('ascii')
- return LooseVersion.__cmp__(self, other)
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/controller/building.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/controller/building.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import getpass
- import json
-@@ -108,7 +108,7 @@
- """
- o = []
-
-- for tier, state in self.tiers.items():
-+ for tier, state in list(self.tiers.items()):
- t_entry = dict(
- name=tier,
- start=state['begin_time'],
-@@ -643,8 +643,8 @@
-
- return '\n'.join(lines)
-
-- def __nonzero__(self):
-- relative_values = [v for k, v in self._values.items()
-+ def __bool__(self):
-+ relative_values = [v for k, v in list(self._values.items())
- if k not in self.ABSOLUTE_KEYS]
- return (all(v >= 0 for v in relative_values) and
- any(v > 0 for v in relative_values))
-@@ -666,8 +666,8 @@
- """Install test files."""
-
- if self.is_clobber_needed():
-- print(INSTALL_TESTS_CLOBBER.format(
-- clobber_file=os.path.join(self.topobjdir, 'CLOBBER')))
-+ print((INSTALL_TESTS_CLOBBER.format(
-+ clobber_file=os.path.join(self.topobjdir, 'CLOBBER'))))
- sys.exit(1)
-
- if not test_objs:
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/controller/clobber.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/controller/clobber.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function
-+
-
- r'''This module contains code for managing clobbering of the tree.'''
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/context.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/context.py (refactored)
-@@ -14,7 +14,7 @@
- contain, you've come to the right place.
- """
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import os
-
-@@ -234,15 +234,15 @@
- This function is transactional: if setitem fails for one of the values,
- the context is not updated at all."""
- if isinstance(iterable, dict):
-- iterable = iterable.items()
-+ iterable = list(iterable.items())
-
- update = {}
-- for key, value in itertools.chain(iterable, kwargs.items()):
-+ for key, value in itertools.chain(iterable, list(kwargs.items())):
- stored_type = self._validate(key, value)
- # Don't create an instance of stored_type if coercion is needed,
- # until all values are validated.
- update[key] = (value, stored_type)
-- for key, (value, stored_type) in update.items():
-+ for key, (value, stored_type) in list(update.items()):
- if not isinstance(value, stored_type):
- update[key] = stored_type(value)
- else:
-@@ -297,7 +297,7 @@
- self.update(value)
-
-
--class FinalTargetValue(ContextDerivedValue, unicode):
-+class FinalTargetValue(ContextDerivedValue, str):
- def __new__(cls, context, value=""):
- if not value:
- value = 'dist/'
-@@ -307,7 +307,7 @@
- value += 'bin'
- if context['DIST_SUBDIR']:
- value += '/' + context['DIST_SUBDIR']
-- return unicode.__new__(cls, value)
-+ return str.__new__(cls, value)
-
-
- def Enum(*values):
-@@ -355,7 +355,7 @@
- cls = SourcePath
- return super(PathMeta, cls).__call__(context, value)
-
--class Path(ContextDerivedValue, unicode):
-+class Path(ContextDerivedValue, str, metaclass=PathMeta):
- """Stores and resolves a source path relative to a given context
-
- This class is used as a backing type for some of the sandbox variables.
-@@ -366,7 +366,6 @@
- - '!objdir/relative/paths'
- - '%/filesystem/absolute/paths'
- """
-- __metaclass__ = PathMeta
-
- def __new__(cls, context, value=None):
- return super(Path, cls).__new__(cls, value)
-@@ -386,7 +385,7 @@
- def __cmp__(self, other):
- if isinstance(other, Path) and self.srcdir != other.srcdir:
- return cmp(self.full_path, other.full_path)
-- return cmp(unicode(self), other)
-+ return cmp(str(self), other)
-
- # __cmp__ is not enough because unicode has __eq__, __ne__, etc. defined
- # and __cmp__ is only used for those when they don't exist.
-@@ -544,7 +543,7 @@
- __slots__ = tuple([name for name, _ in fields])
-
- def __init__(self, context):
-- for fname, ftype in self._fields.items():
-+ for fname, ftype in list(self._fields.items()):
- if issubclass(ftype, ContextDerivedValue):
- setattr(self, fname, self._fields[fname](context))
- else:
-@@ -614,8 +613,8 @@
- return _TypedListWithAction
-
- WebPlatformTestManifest = TypedNamedTuple("WebPlatformTestManifest",
-- [("manifest_path", unicode),
-- ("test_root", unicode)])
-+ [("manifest_path", str),
-+ ("test_root", str)])
- ManifestparserManifestList = OrderedListWithAction(read_manifestparser_manifest)
- ReftestManifestList = OrderedListWithAction(read_reftest_manifest)
- WptManifestList = TypedListWithAction(WebPlatformTestManifest, read_wpt_manifest)
-@@ -623,12 +622,12 @@
- OrderedSourceList = ContextDerivedTypedList(SourcePath, StrictOrderingOnAppendList)
- OrderedTestFlavorList = TypedList(Enum(*all_test_flavors()),
- StrictOrderingOnAppendList)
--OrderedStringList = TypedList(unicode, StrictOrderingOnAppendList)
-+OrderedStringList = TypedList(str, StrictOrderingOnAppendList)
- DependentTestsEntry = ContextDerivedTypedRecord(('files', OrderedSourceList),
- ('tags', OrderedStringList),
- ('flavors', OrderedTestFlavorList))
- BugzillaComponent = TypedNamedTuple('BugzillaComponent',
-- [('product', unicode), ('component', unicode)])
-+ [('product', str), ('component', str)])
-
-
- class Files(SubContext):
-@@ -764,7 +763,7 @@
- self.test_tags |= other.test_tags
- self.test_flavors |= other.test_flavors
-
-- for k, v in other.items():
-+ for k, v in list(other.items()):
- if k == 'IMPACTED_TESTS':
- self.test_files |= set(mozpath.relpath(e.full_path, e.context.config.topsrcdir)
- for e in v.files)
-@@ -818,7 +817,7 @@
-
- bug_components = Counter()
-
-- for f in files.values():
-+ for f in list(files.values()):
- bug_component = f.get('BUG_COMPONENT')
- if bug_component:
- bug_components[bug_component] += 1
-@@ -889,11 +888,11 @@
- file.
- """),
-
-- 'ANDROID_APK_NAME': (unicode, unicode,
-+ 'ANDROID_APK_NAME': (str, str,
- """The name of an Android APK file to generate.
- """),
-
-- 'ANDROID_APK_PACKAGE': (unicode, unicode,
-+ 'ANDROID_APK_PACKAGE': (str, str,
- """The name of the Android package to generate R.java for, like org.mozilla.gecko.
- """),
-
-@@ -962,7 +961,7 @@
- """),
-
- 'GENERATED_FILES': (StrictOrderingOnAppendListWithFlagsFactory({
-- 'script': unicode,
-+ 'script': str,
- 'inputs': list }), list,
- """Generic generated files.
-
-@@ -1107,7 +1106,7 @@
- """Like ``OBJDIR_FILES``, with preprocessing. Use sparingly.
- """),
-
-- 'FINAL_LIBRARY': (unicode, unicode,
-+ 'FINAL_LIBRARY': (str, str,
- """Library in which the objects of the current directory will be linked.
-
- This variable contains the name of a library, defined elsewhere with
-@@ -1158,7 +1157,7 @@
- """A list of python unit tests.
- """),
-
-- 'HOST_LIBRARY_NAME': (unicode, unicode,
-+ 'HOST_LIBRARY_NAME': (str, str,
- """Name of target library generated when cross compiling.
- """),
-
-@@ -1176,7 +1175,7 @@
- libraries that link into this library via FINAL_LIBRARY.
- """),
-
-- 'LIBRARY_NAME': (unicode, unicode,
-+ 'LIBRARY_NAME': (str, str,
- """The code name of the library generated for a directory.
-
- By default STATIC_LIBRARY_NAME and SHARED_LIBRARY_NAME take this name.
-@@ -1188,7 +1187,7 @@
- ``example/components/xpcomsample.lib`` on Windows.
- """),
-
-- 'SHARED_LIBRARY_NAME': (unicode, unicode,
-+ 'SHARED_LIBRARY_NAME': (str, str,
- """The name of the static library generated for a directory, if it needs to
- differ from the library code name.
-
-@@ -1202,7 +1201,7 @@
- Implies FORCE_SHARED_LIB.
- """),
-
-- 'STATIC_LIBRARY_NAME': (unicode, unicode,
-+ 'STATIC_LIBRARY_NAME': (str, str,
- """The name of the static library generated for a directory, if it needs to
- differ from the library code name.
-
-@@ -1238,37 +1237,37 @@
-
- This variable contains a list of system libaries to link against.
- """),
-- 'RCFILE': (unicode, unicode,
-+ 'RCFILE': (str, str,
- """The program .rc file.
-
- This variable can only be used on Windows.
- """),
-
-- 'RESFILE': (unicode, unicode,
-+ 'RESFILE': (str, str,
- """The program .res file.
-
- This variable can only be used on Windows.
- """),
-
-- 'RCINCLUDE': (unicode, unicode,
-+ 'RCINCLUDE': (str, str,
- """The resource script file to be included in the default .res file.
-
- This variable can only be used on Windows.
- """),
-
-- 'DEFFILE': (unicode, unicode,
-+ 'DEFFILE': (str, str,
- """The program .def (module definition) file.
-
- This variable can only be used on Windows.
- """),
-
-- 'LD_VERSION_SCRIPT': (unicode, unicode,
-+ 'LD_VERSION_SCRIPT': (str, str,
- """The linker version script for shared libraries.
-
- This variable can only be used on Linux.
- """),
-
-- 'SYMBOLS_FILE': (Path, unicode,
-+ 'SYMBOLS_FILE': (Path, str,
- """A file containing a list of symbols to export from a shared library.
-
- The given file contains a list of symbols to be exported, and is
-@@ -1323,7 +1322,7 @@
- ``BIN_SUFFIX``, the name will remain unchanged.
- """),
-
-- 'SONAME': (unicode, unicode,
-+ 'SONAME': (str, str,
- """The soname of the shared object currently being linked
-
- soname is the "logical name" of a shared object, often used to provide
-@@ -1379,7 +1378,7 @@
- ``GENERATED_FILES``.
- """),
-
-- 'PROGRAM' : (unicode, unicode,
-+ 'PROGRAM' : (str, str,
- """Compiled executable name.
-
- If the configuration token ``BIN_SUFFIX`` is set, its value will be
-@@ -1387,7 +1386,7 @@
- ``BIN_SUFFIX``, ``PROGRAM`` will remain unchanged.
- """),
-
-- 'HOST_PROGRAM' : (unicode, unicode,
-+ 'HOST_PROGRAM' : (str, str,
- """Compiled host executable name.
-
- If the configuration token ``HOST_BIN_SUFFIX`` is set, its value will be
-@@ -1425,7 +1424,7 @@
- files.
- """),
-
-- 'XPIDL_MODULE': (unicode, unicode,
-+ 'XPIDL_MODULE': (str, str,
- """XPCOM Interface Definition Module Name.
-
- This is the name of the ``.xpt`` file that is created by linking
-@@ -1576,14 +1575,14 @@
- """),
-
- # The following variables are used to control the target of installed files.
-- 'XPI_NAME': (unicode, unicode,
-+ 'XPI_NAME': (str, str,
- """The name of an extension XPI to generate.
-
- When this variable is present, the results of this directory will end up
- being packaged into an extension instead of the main dist/bin results.
- """),
-
-- 'DIST_SUBDIR': (unicode, unicode,
-+ 'DIST_SUBDIR': (str, str,
- """The name of an alternate directory to install files to.
-
- When this variable is present, the results of this directory will end up
-@@ -1591,7 +1590,7 @@
- otherwise be placed.
- """),
-
-- 'FINAL_TARGET': (FinalTargetValue, unicode,
-+ 'FINAL_TARGET': (FinalTargetValue, str,
- """The name of the directory to install targets to.
-
- The directory is relative to the top of the object directory. The
-@@ -1622,7 +1621,7 @@
-
- 'GYP_DIRS': (StrictOrderingOnAppendListWithFlagsFactory({
- 'variables': dict,
-- 'input': unicode,
-+ 'input': str,
- 'sandbox_vars': dict,
- 'non_unified_sources': StrictOrderingOnAppendList,
- }), list,
-@@ -1799,7 +1798,7 @@
- }
-
- # Sanity check: we don't want any variable above to have a list as storage type.
--for name, (storage_type, input_types, docs) in VARIABLES.items():
-+for name, (storage_type, input_types, docs) in list(VARIABLES.items()):
- if storage_type == list:
- raise RuntimeError('%s has a "list" storage type. Use "List" instead.'
- % name)
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/data.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/data.py (refactored)
-@@ -15,7 +15,7 @@
- structures.
- """
-
--from __future__ import absolute_import, unicode_literals
-+
-
- from mozbuild.util import StrictOrderingOnAppendList
- from mozpack.chrome.manifest import ManifestEntry
-@@ -186,7 +186,7 @@
- self.defines = defines
-
- def get_defines(self):
-- for define, value in self.defines.iteritems():
-+ for define, value in self.defines.items():
- if value is True:
- yield('-D%s' % define)
- elif value is False:
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/emitter.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/emitter.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import itertools
- import logging
-@@ -120,8 +120,8 @@
- # arguments. This gross hack works around the problem until we
- # rid ourselves of 2.6.
- self.info = {}
-- for k, v in mozinfo.info.items():
-- if isinstance(k, unicode):
-+ for k, v in list(mozinfo.info.items()):
-+ if isinstance(k, str):
- k = k.encode('ascii')
- self.info[k] = v
-
-@@ -197,7 +197,7 @@
-
- def _emit_libs_derived(self, contexts):
- # First do FINAL_LIBRARY linkage.
-- for lib in (l for libs in self._libs.values() for l in libs):
-+ for lib in (l for libs in list(self._libs.values()) for l in libs):
- if not isinstance(lib, (StaticLibrary, RustLibrary)) or not lib.link_into:
- continue
- if lib.link_into not in self._libs:
-@@ -257,12 +257,12 @@
- lib.link_into == outerlib.basename):
- propagate_defines(lib, defines)
-
-- for lib in (l for libs in self._libs.values() for l in libs):
-+ for lib in (l for libs in list(self._libs.values()) for l in libs):
- if isinstance(lib, Library):
- propagate_defines(lib, lib.lib_defines)
- yield lib
-
-- for obj in self._binaries.values():
-+ for obj in list(self._binaries.values()):
- yield obj
-
- LIBRARY_NAME_VAR = {
-@@ -321,7 +321,7 @@
- libs[key] = l
- if key not in libs:
- libs[key] = l
-- candidates = libs.values()
-+ candidates = list(libs.values())
- if force_static and not candidates:
- if dir:
- raise SandboxValidationError(
-@@ -383,9 +383,9 @@
-
- def _verify_deps(self, context, crate_dir, crate_name, dependencies, description='Dependency'):
- """Verify that a crate's dependencies all specify local paths."""
-- for dep_crate_name, values in dependencies.iteritems():
-+ for dep_crate_name, values in dependencies.items():
- # A simple version number.
-- if isinstance(values, (str, unicode)):
-+ if isinstance(values, str):
- raise SandboxValidationError(
- '%s %s of crate %s does not list a path' % (description, dep_crate_name, crate_name),
- context)
-@@ -463,7 +463,7 @@
- ' in [profile.%s] section') % (libname, profile_name),
- context)
-
-- dependencies = set(config.get('dependencies', {}).iterkeys())
-+ dependencies = set(config.get('dependencies', {}).keys())
-
- return RustLibrary(context, libname, cargo_file, crate_type,
- dependencies, **static_args)
-@@ -738,7 +738,7 @@
- assert not gen_sources['UNIFIED_SOURCES']
-
- no_pgo = context.get('NO_PGO')
-- no_pgo_sources = [f for f, flags in all_flags.iteritems()
-+ no_pgo_sources = [f for f, flags in all_flags.items()
- if flags.no_pgo]
- if no_pgo:
- if no_pgo_sources:
-@@ -765,7 +765,7 @@
-
- # The inverse of the above, mapping suffixes to their canonical suffix.
- canonicalized_suffix_map = {}
-- for suffix, alternatives in suffix_map.iteritems():
-+ for suffix, alternatives in suffix_map.items():
- alternatives.add(suffix)
- for a in alternatives:
- canonicalized_suffix_map[a] = suffix
-@@ -786,7 +786,7 @@
- # a directory with mixed C and C++ source, but it's not that important.
- cxx_sources = defaultdict(bool)
-
-- for variable, (klass, gen_klass, suffixes) in varmap.items():
-+ for variable, (klass, gen_klass, suffixes) in list(varmap.items()):
- allowed_suffixes = set().union(*[suffix_map[s] for s in suffixes])
-
- # First ensure that we haven't been given filetypes that we don't
-@@ -812,7 +812,7 @@
- obj = cls(*arglist)
- yield obj
-
-- for f, flags in all_flags.iteritems():
-+ for f, flags in all_flags.items():
- if flags.flags:
- ext = mozpath.splitext(f)[1]
- yield PerSourceFlag(context, f, flags.flags)
-@@ -958,7 +958,7 @@
- for obj in self._handle_linkables(context, passthru, generated_files):
- yield obj
-
-- generated_files.update(['%s%s' % (k, self.config.substs.get('BIN_SUFFIX', '')) for k in self._binaries.keys()])
-+ generated_files.update(['%s%s' % (k, self.config.substs.get('BIN_SUFFIX', '')) for k in list(self._binaries.keys())])
-
- components = []
- for var, cls in (
-@@ -1055,10 +1055,10 @@
- for obj in self._process_jar_manifests(context):
- yield obj
-
-- for name, jar in context.get('JAVA_JAR_TARGETS', {}).items():
-+ for name, jar in list(context.get('JAVA_JAR_TARGETS', {}).items()):
- yield ContextWrapped(context, jar)
-
-- for name, data in context.get('ANDROID_ECLIPSE_PROJECT_TARGETS', {}).items():
-+ for name, data in list(context.get('ANDROID_ECLIPSE_PROJECT_TARGETS', {}).items()):
- yield ContextWrapped(context, data)
-
- if context.get('USE_YASM') is True:
-@@ -1127,7 +1127,7 @@
- script = mozpath.join(mozpath.dirname(mozpath.dirname(__file__)),
- 'action', 'process_define_files.py')
- yield GeneratedFile(context, script, 'process_define_file',
-- unicode(path),
-+ str(path),
- [Path(context, path + '.in')])
-
- generated_files = context.get('GENERATED_FILES')
-@@ -1170,7 +1170,7 @@
- yield GeneratedFile(context, script, method, outputs, inputs)
-
- def _process_test_manifests(self, context):
-- for prefix, info in TEST_MANIFESTS.items():
-+ for prefix, info in list(TEST_MANIFESTS.items()):
- for path, manifest in context.get('%s_MANIFESTS' % prefix, []):
- for obj in self._process_test_manifest(context, info, path, manifest):
- yield obj
-@@ -1261,7 +1261,7 @@
-
- process_support_files(test)
-
-- for path, m_defaults in mpmanifest.manifest_defaults.items():
-+ for path, m_defaults in list(mpmanifest.manifest_defaults.items()):
- process_support_files(m_defaults)
-
- # We also copy manifests into the output directory,
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/gyp_reader.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/gyp_reader.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import gyp
- import sys
-@@ -69,7 +69,7 @@
-
-
- def encode(value):
-- if isinstance(value, unicode):
-+ if isinstance(value, str):
- return value.encode('utf-8')
- return value
-
-@@ -87,7 +87,7 @@
- # gyp expects plain str instead of unicode. The frontend code gives us
- # unicode strings, so convert them.
- path = encode(path)
-- str_vars = dict((name, encode(value)) for name, value in vars.items())
-+ str_vars = dict((name, encode(value)) for name, value in list(vars.items()))
-
- params = {
- b'parallel': False,
-@@ -222,7 +222,7 @@
- if not f:
- continue
- # the result may be a string or a list.
-- if isinstance(f, types.StringTypes):
-+ if isinstance(f, (str,)):
- context[var].append(f)
- else:
- context[var].extend(f)
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/mach_commands.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/mach_commands.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- from collections import defaultdict
- import os
-@@ -105,13 +105,13 @@
- """
- components = defaultdict(set)
- try:
-- for p, m in self._get_files_info(paths, rev=rev).items():
-+ for p, m in list(self._get_files_info(paths, rev=rev).items()):
- components[m.get('BUG_COMPONENT')].add(p)
- except InvalidPathException as e:
- print(e.message)
- return 1
-
-- for component, files in sorted(components.items(), key=lambda x: (x is None, x)):
-+ for component, files in sorted(list(components.items()), key=lambda x: (x is None, x)):
- print('%s :: %s' % (component.product, component.component) if component else 'UNKNOWN')
- for f in sorted(files):
- print(' %s' % f)
-@@ -139,7 +139,7 @@
- help='Paths whose data to query')
- def file_info_test_deps(self, paths, rev=None):
- try:
-- for p, m in self._get_files_info(paths, rev=rev).items():
-+ for p, m in list(self._get_files_info(paths, rev=rev).items()):
- print('%s:' % mozpath.relpath(p, self.topsrcdir))
- if m.test_files:
- print('\tTest file patterns:')
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/reader.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/reader.py (refactored)
-@@ -16,7 +16,7 @@
- It does this by examining specific variables populated during execution.
- """
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import ast
- import inspect
-@@ -80,11 +80,12 @@
- )
-
- from mozbuild.base import ExecutionSummary
-+from functools import reduce
-
-
- if sys.version_info.major == 2:
-- text_type = unicode
-- type_type = types.TypeType
-+ text_type = str
-+ type_type = type
- else:
- text_type = str
- type_type = type
-@@ -126,7 +127,7 @@
- b'JS_STANDALONE': b'1',
- })
- udict = {}
-- for k, v in self.substs.items():
-+ for k, v in list(self.substs.items()):
- if isinstance(v, str):
- udict[k.decode('utf-8')] = v.decode('utf-8')
- else:
-@@ -338,7 +339,7 @@
- raise Exception('`template` is a function decorator. You must '
- 'use it as `@template` preceding a function declaration.')
-
-- name = func.func_name
-+ name = func.__name__
-
- if name in self.templates:
- raise KeyError(
-@@ -417,7 +418,7 @@
- klass = self._context.__class__
- self._context.__class__ = TemplateContext
- # The sandbox will do all the necessary checks for these merges.
-- for key, value in context.items():
-+ for key, value in list(context.items()):
- if isinstance(value, dict):
- self[key].update(value)
- elif isinstance(value, (list, HierarchicalStringList)):
-@@ -434,10 +435,10 @@
-
- class TemplateFunction(object):
- def __init__(self, func, sandbox):
-- self.path = func.func_code.co_filename
-- self.name = func.func_name
--
-- code = func.func_code
-+ self.path = func.__code__.co_filename
-+ self.name = func.__name__
-+
-+ code = func.__code__
- firstlineno = code.co_firstlineno
- lines = sandbox._current_source.splitlines(True)
- lines = inspect.getblock(lines[firstlineno - 1:])
-@@ -476,8 +477,8 @@
- compile(func_ast, self.path, 'exec'),
- glob,
- self.name,
-- func.func_defaults,
-- func.func_closure,
-+ func.__defaults__,
-+ func.__closure__,
- )
- func()
-
-@@ -491,11 +492,11 @@
- '__builtins__': sandbox._builtins
- }
- func = types.FunctionType(
-- self._func.func_code,
-+ self._func.__code__,
- glob,
- self.name,
-- self._func.func_defaults,
-- self._func.func_closure
-+ self._func.__defaults__,
-+ self._func.__closure__
- )
- sandbox.exec_function(func, args, kwargs, self.path,
- becomes_current_path=False)
-@@ -511,7 +512,7 @@
- def visit_Str(self, node):
- # String nodes we got from the AST parser are str, but we want
- # unicode literals everywhere, so transform them.
-- node.s = unicode(node.s)
-+ node.s = str(node.s)
- return node
-
- def visit_Name(self, node):
-@@ -644,7 +645,7 @@
-
- for l in traceback.format_exception(type(self.other), self.other,
- self.trace):
-- s.write(unicode(l))
-+ s.write(str(l))
-
- return s.getvalue()
-
-@@ -794,7 +795,7 @@
- s.write(' %s\n' % inner.args[2])
- s.write('\n')
- close_matches = difflib.get_close_matches(inner.args[2],
-- VARIABLES.keys(), 2)
-+ list(VARIABLES.keys()), 2)
- if close_matches:
- s.write('Maybe you meant %s?\n' % ' or '.join(close_matches))
- s.write('\n')
-@@ -1196,7 +1197,7 @@
-
- recurse_info[d][key] = dict(sandbox.metadata[key])
-
-- for path, child_metadata in recurse_info.items():
-+ for path, child_metadata in list(recurse_info.items()):
- child_path = path.join('moz.build').full_path
-
- # Ensure we don't break out of the topsrcdir. We don't do realpath
-@@ -1288,7 +1289,7 @@
- # There is room to improve this code (and the code in
- # _find_relevant_mozbuilds) to better handle multiple files in the same
- # directory. Bug 1136966 tracks.
-- for path, mbpaths in relevants.items():
-+ for path, mbpaths in list(relevants.items()):
- path_mozbuilds[path] = [mozpath.join(topsrcdir, p) for p in mbpaths]
-
- for i, mbpath in enumerate(mbpaths[0:-1]):
-@@ -1325,7 +1326,7 @@
- all_contexts.append(context)
-
- result = {}
-- for path, paths in path_mozbuilds.items():
-+ for path, paths in list(path_mozbuilds.items()):
- result[path] = reduce(lambda x, y: x + y, (contexts[p] for p in paths), [])
-
- return result, all_contexts
-@@ -1352,7 +1353,7 @@
-
- r = {}
-
-- for path, ctxs in paths.items():
-+ for path, ctxs in list(paths.items()):
- flags = Files(Context())
-
- for ctx in ctxs:
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/sandbox.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/sandbox.py (refactored)
-@@ -17,7 +17,7 @@
- user-friendly error messages in the case of errors.
- """
-
--from __future__ import absolute_import, unicode_literals
-+
-
- import os
- import sys
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/common.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/common.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- from mach.logging import LoggingManager
-
-@@ -36,7 +36,7 @@
- }, **extra_substs)
-
- self.substs_unicode = ReadOnlyDict({k.decode('utf-8'): v.decode('utf-8',
-- 'replace') for k, v in self.substs.items()})
-+ 'replace') for k, v in list(self.substs.items())})
-
- self.defines = self.substs
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_base.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_base.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import json
- import os
-@@ -12,7 +12,7 @@
- import tempfile
- import unittest
-
--from cStringIO import StringIO
-+from io import StringIO
- from mozfile.mozfile import NamedTemporaryFile
-
- from mozunit import main
-@@ -93,7 +93,7 @@
- mozconfig = os.path.join(d, 'mozconfig')
- with open(mozconfig, 'wt') as fh:
- fh.write('mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/foo/@CONFIG_GUESS@')
-- print('Wrote mozconfig %s' % mozconfig)
-+ print(('Wrote mozconfig %s' % mozconfig))
-
- topobjdir = os.path.join(d, 'foo', guess)
- os.makedirs(topobjdir)
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_containers.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_containers.py (refactored)
-@@ -152,7 +152,7 @@
-
- self.assertEqual(test['foo'], 1)
-
-- self.assertEqual(test.keys(), ['foo', 'bar' ])
-+ self.assertEqual(list(test.keys()), ['foo', 'bar' ])
-
- def test_defaults(self):
- test = OrderedDefaultDict(bool, {'foo': 1 })
-@@ -161,7 +161,7 @@
-
- self.assertEqual(test['qux'], False)
-
-- self.assertEqual(test.keys(), ['foo', 'qux' ])
-+ self.assertEqual(list(test.keys()), ['foo', 'qux' ])
-
-
- class TestKeyedDefaultDict(unittest.TestCase):
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_dotproperties.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_dotproperties.py (refactored)
-@@ -1,11 +1,11 @@
- # -*- coding: utf-8 -*-
-
--from __future__ import unicode_literals
-+
-
- import os
- import unittest
-
--from StringIO import StringIO
-+from io import StringIO
-
- import mozpack.path as mozpath
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_expression.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_expression.py (refactored)
-@@ -25,8 +25,8 @@
-
- def test_in(self):
- """test 'var in context' to not fall for fallback"""
-- self.assert_('FAIL' in self.c)
-- self.assert_('PASS' not in self.c)
-+ self.assertTrue('FAIL' in self.c)
-+ self.assertTrue('PASS' not in self.c)
-
- class TestExpression(unittest.TestCase):
- """
-@@ -48,16 +48,16 @@
-
- def test_not(self):
- """Test for the ! operator"""
-- self.assert_(Expression('!0').evaluate(self.c))
-- self.assert_(not Expression('!1').evaluate(self.c))
-+ self.assertTrue(Expression('!0').evaluate(self.c))
-+ self.assertTrue(not Expression('!1').evaluate(self.c))
-
- def test_equals(self):
- """ Test for the == operator"""
-- self.assert_(Expression('FAIL == PASS').evaluate(self.c))
-+ self.assertTrue(Expression('FAIL == PASS').evaluate(self.c))
-
- def test_notequals(self):
- """ Test for the != operator"""
-- self.assert_(Expression('FAIL != 1').evaluate(self.c))
-+ self.assertTrue(Expression('FAIL != 1').evaluate(self.c))
-
- def test_logical_and(self):
- """ Test for the && operator"""
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_jarmaker.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_jarmaker.py (refactored)
-@@ -2,14 +2,14 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import print_function
-+
- import unittest
-
- import os, sys, os.path, time, inspect
- from filecmp import dircmp
- from tempfile import mkdtemp
- from shutil import rmtree, copy2
--from StringIO import StringIO
-+from io import StringIO
- from zipfile import ZipFile
- import mozunit
-
-@@ -117,12 +117,12 @@
- """Helper to report rich results on difference between two directories.
- """
- def _fillDiff(self, dc, rv, basepath="{0}"):
-- rv['right_only'] += map(lambda l: basepath.format(l), dc.right_only)
-- rv['left_only'] += map(lambda l: basepath.format(l), dc.left_only)
-- rv['diff_files'] += map(lambda l: basepath.format(l), dc.diff_files)
-- rv['funny'] += map(lambda l: basepath.format(l), dc.common_funny)
-- rv['funny'] += map(lambda l: basepath.format(l), dc.funny_files)
-- for subdir, _dc in dc.subdirs.iteritems():
-+ rv['right_only'] += [basepath.format(l) for l in dc.right_only]
-+ rv['left_only'] += [basepath.format(l) for l in dc.left_only]
-+ rv['diff_files'] += [basepath.format(l) for l in dc.diff_files]
-+ rv['funny'] += [basepath.format(l) for l in dc.common_funny]
-+ rv['funny'] += [basepath.format(l) for l in dc.funny_files]
-+ for subdir, _dc in dc.subdirs.items():
- self._fillDiff(_dc, rv, basepath.format(subdir + "/{0}"))
- def allResults(self, left, right):
- rv = {'right_only':[], 'left_only':[],
-@@ -295,7 +295,7 @@
- ('hoge', 'foo', '2'): ('qux', 'foo', '2'),
- ('hoge', 'baz'): ('qux', 'baz'),
- }
-- for dest, src in expected_symlinks.iteritems():
-+ for dest, src in expected_symlinks.items():
- srcpath = os.path.join(self.srcdir, *src)
- destpath = os.path.join(self.builddir, 'chrome', 'test', 'dir',
- *dest)
-@@ -317,7 +317,7 @@
- def test_en_US(self):
- jm = self.jm
- jm.makeJar(self.fake_empty_file, '/NO_OUTPUT_REQUIRED')
-- self.assertEquals(jm.localedirs,
-+ self.assertEqual(jm.localedirs,
- [
- os.path.join(os.path.abspath('/TOPSOURCEDIR'),
- 'browser/locales', 'en-US')
-@@ -326,13 +326,13 @@
- jm = self.jm
- jm.l10nbase = '/L10N_BASE'
- jm.makeJar(self.fake_empty_file, '/NO_OUTPUT_REQUIRED')
-- self.assertEquals(jm.localedirs, [os.path.join('/L10N_BASE', 'browser')])
-+ self.assertEqual(jm.localedirs, [os.path.join('/L10N_BASE', 'browser')])
- def test_l10n_merge(self):
- jm = self.jm
- jm.l10nbase = '/L10N_BASE'
- jm.l10nmerge = '/L10N_MERGE'
- jm.makeJar(self.fake_empty_file, '/NO_OUTPUT_REQUIRED')
-- self.assertEquals(jm.localedirs,
-+ self.assertEqual(jm.localedirs,
- [os.path.join('/L10N_MERGE', 'browser'),
- os.path.join('/L10N_BASE', 'browser'),
- os.path.join(os.path.abspath('/TOPSOURCEDIR'),
-@@ -346,7 +346,7 @@
- ''')
- jarcontents.name = 'override.mn'
- jm.makeJar(jarcontents, '/NO_OUTPUT_REQUIRED')
-- self.assertEquals(jm.localedirs,
-+ self.assertEqual(jm.localedirs,
- [
- os.path.join(os.path.abspath('/TOPSOURCEDIR'),
- 'dom/locales', 'en-US')
-@@ -360,7 +360,7 @@
- ''')
- jarcontents.name = 'override.mn'
- jm.makeJar(jarcontents, '/NO_OUTPUT_REQUIRED')
-- self.assertEquals(jm.localedirs, [os.path.join('/L10N_BASE', 'dom')])
-+ self.assertEqual(jm.localedirs, [os.path.join('/L10N_BASE', 'dom')])
-
-
- if __name__ == '__main__':
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_line_endings.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_line_endings.py (refactored)
-@@ -1,6 +1,6 @@
- import unittest
-
--from StringIO import StringIO
-+from io import StringIO
- import os
- import sys
- import os.path
-@@ -30,17 +30,17 @@
- def testMac(self):
- self.createFile(['\x0D']*3)
- self.pp.do_include(self.tempnam)
-- self.assertEquals(self.pp.out.getvalue(), 'a\nb\nc\n')
-+ self.assertEqual(self.pp.out.getvalue(), 'a\nb\nc\n')
-
- def testUnix(self):
- self.createFile(['\x0A']*3)
- self.pp.do_include(self.tempnam)
-- self.assertEquals(self.pp.out.getvalue(), 'a\nb\nc\n')
-+ self.assertEqual(self.pp.out.getvalue(), 'a\nb\nc\n')
-
- def testWindows(self):
- self.createFile(['\x0D\x0A']*3)
- self.pp.do_include(self.tempnam)
-- self.assertEquals(self.pp.out.getvalue(), 'a\nb\nc\n')
-+ self.assertEqual(self.pp.out.getvalue(), 'a\nb\nc\n')
-
- if __name__ == '__main__':
- mozunit.main()
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_makeutil.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_makeutil.py (refactored)
-@@ -11,7 +11,7 @@
- from mozunit import main
- import os
- import unittest
--from StringIO import StringIO
-+from io import StringIO
-
-
- class TestMakefile(unittest.TestCase):
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_mozconfig.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_mozconfig.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
- import unittest
-@@ -480,9 +480,9 @@
-
- self.assertTrue(e.exception.message.startswith(
- 'Evaluation of your mozconfig exited with an error'))
-- self.assertEquals(e.exception.path,
-+ self.assertEqual(e.exception.path,
- mozconfig.name.replace(os.sep, '/'))
-- self.assertEquals(e.exception.output, ['hello world'])
-+ self.assertEqual(e.exception.output, ['hello world'])
-
-
- if __name__ == '__main__':
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_mozinfo.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_mozinfo.py (refactored)
-@@ -8,7 +8,7 @@
- import tempfile
- import unittest
-
--from StringIO import StringIO
-+from io import StringIO
-
- import mozunit
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_preprocessor.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_preprocessor.py (refactored)
-@@ -4,7 +4,7 @@
-
- import unittest
-
--from StringIO import StringIO
-+from io import StringIO
- import os
- import shutil
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_pythonutil.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_pythonutil.py (refactored)
-@@ -12,7 +12,7 @@
- def test_iter_modules_in_path(self):
- mozbuild_path = os.path.normcase(os.path.dirname(os.path.dirname(__file__)))
- paths = list(iter_modules_in_path(mozbuild_path))
-- self.assertEquals(sorted(paths), [
-+ self.assertEqual(sorted(paths), [
- os.path.join(os.path.abspath(mozbuild_path), '__init__.py'),
- os.path.join(os.path.abspath(mozbuild_path), 'pythonutil.py'),
- os.path.join(os.path.abspath(mozbuild_path), 'test', 'test_pythonutil.py'),
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_testing.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_testing.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
--
--import cPickle as pickle
-+
-+
-+import pickle as pickle
- import os
- import shutil
- import tempfile
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_util.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/test_util.py (refactored)
-@@ -3,7 +3,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import itertools
- import hashlib
-@@ -110,7 +110,7 @@
- '''
- def __call__(self, name, mode):
- if 'w' in mode:
-- raise Exception, 'Unexpected open with write mode'
-+ raise Exception('Unexpected open with write mode')
- return MockedOpen.__call__(self, name, mode)
-
- with MyMockedOpen({'file': 'content'}):
-@@ -432,7 +432,7 @@
- self.assertEqual(len(l), 0)
- original = ['a', 'b', 'c']
- l = ListWithAction(['a', 'b', 'c'], action=self.action)
-- expected = map(self.action, original)
-+ expected = list(map(self.action, original))
- self.assertSameList(expected, l)
-
- with self.assertRaises(ValueError):
-@@ -445,7 +445,7 @@
- l = ListWithAction(action=self.action)
- original = ['a', 'b']
- l.extend(original)
-- expected = map(self.action, original)
-+ expected = list(map(self.action, original))
- self.assertSameList(expected, l)
-
- with self.assertRaises(ValueError):
-@@ -455,7 +455,7 @@
- l = ListWithAction(action=self.action)
- original = ['a', 'b']
- l[:] = original
-- expected = map(self.action, original)
-+ expected = list(map(self.action, original))
- self.assertSameList(expected, l)
-
- with self.assertRaises(ValueError):
-@@ -465,7 +465,7 @@
- l = ListWithAction(action=self.action)
- original = ['a', 'b']
- l2 = l + original
-- expected = map(self.action, original)
-+ expected = list(map(self.action, original))
- self.assertSameList(expected, l2)
-
- with self.assertRaises(ValueError):
-@@ -475,7 +475,7 @@
- l = ListWithAction(action=self.action)
- original = ['a', 'b']
- l += original
-- expected = map(self.action, original)
-+ expected = list(map(self.action, original))
- self.assertSameList(expected, l)
-
- with self.assertRaises(ValueError):
-@@ -524,7 +524,7 @@
-
- def test_strict_ordering_on_append_list_with_flags_factory_extend(self):
- FooList = StrictOrderingOnAppendListWithFlagsFactory({
-- 'foo': bool, 'bar': unicode
-+ 'foo': bool, 'bar': str
- })
- foo = FooList(['a', 'b', 'c'])
- foo['a'].foo = True
-@@ -532,7 +532,7 @@
-
- # Don't allow extending lists with different flag definitions.
- BarList = StrictOrderingOnAppendListWithFlagsFactory({
-- 'foo': unicode, 'baz': bool
-+ 'foo': str, 'baz': bool
- })
- bar = BarList(['d', 'e', 'f'])
- bar['d'].foo = 'foo'
-@@ -752,9 +752,9 @@
-
- class TypedTestStrictOrderingOnAppendList(unittest.TestCase):
- def test_init(self):
-- class Unicode(unicode):
-+ class Unicode(str):
- def __init__(self, other):
-- if not isinstance(other, unicode):
-+ if not isinstance(other, str):
- raise ValueError()
- super(Unicode, self).__init__(other)
-
-@@ -776,14 +776,14 @@
-
- class TestTypedNamedTuple(unittest.TestCase):
- def test_simple(self):
-- FooBar = TypedNamedTuple('FooBar', [('foo', unicode), ('bar', int)])
-+ FooBar = TypedNamedTuple('FooBar', [('foo', str), ('bar', int)])
-
- t = FooBar(foo='foo', bar=2)
-- self.assertEquals(type(t), FooBar)
-- self.assertEquals(t.foo, 'foo')
-- self.assertEquals(t.bar, 2)
-- self.assertEquals(t[0], 'foo')
-- self.assertEquals(t[1], 2)
-+ self.assertEqual(type(t), FooBar)
-+ self.assertEqual(t.foo, 'foo')
-+ self.assertEqual(t.bar, 2)
-+ self.assertEqual(t[0], 'foo')
-+ self.assertEqual(t[1], 2)
-
- FooBar('foo', 2)
-
-@@ -796,7 +796,7 @@
- # arguments.
- t1 = ('foo', 3)
- t2 = FooBar(t1)
-- self.assertEquals(type(t2), FooBar)
-+ self.assertEqual(type(t2), FooBar)
- self.assertEqual(FooBar(t1), FooBar('foo', 3))
-
-
-@@ -871,18 +871,18 @@
- CompilerType = EnumString.subclass('msvc', 'gcc', 'clang', 'clang-cl')
-
- type = CompilerType('msvc')
-- self.assertEquals(type, 'msvc')
-- self.assertNotEquals(type, 'gcc')
-- self.assertNotEquals(type, 'clang')
-- self.assertNotEquals(type, 'clang-cl')
-+ self.assertEqual(type, 'msvc')
-+ self.assertNotEqual(type, 'gcc')
-+ self.assertNotEqual(type, 'clang')
-+ self.assertNotEqual(type, 'clang-cl')
- self.assertIn(type, ('msvc', 'clang-cl'))
- self.assertNotIn(type, ('gcc', 'clang'))
-
- with self.assertRaises(EnumStringComparisonError):
-- self.assertEquals(type, 'foo')
-+ self.assertEqual(type, 'foo')
-
- with self.assertRaises(EnumStringComparisonError):
-- self.assertNotEquals(type, 'foo')
-+ self.assertNotEqual(type, 'foo')
-
- with self.assertRaises(EnumStringComparisonError):
- self.assertIn(type, ('foo', 'gcc'))
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/action/test_buildlist.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/action/test_buildlist.py (refactored)
-@@ -38,11 +38,11 @@
- lines = [line.rstrip() for line in f.readlines()]
- f.close()
- for line in lines:
-- self.assert_(len(l) > 0,
-+ self.assertTrue(len(l) > 0,
- "ran out of expected lines! (expected '{0}', got '{1}')"
- .format(l, lines))
- self.assertEqual(line, l.pop(0))
-- self.assert_(len(l) == 0,
-+ self.assertTrue(len(l) == 0,
- "not enough lines in file! (expected '{0}',"
- " got '{1}'".format(l, lines))
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/action/test_generate_browsersearch.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/action/test_generate_browsersearch.py (refactored)
-@@ -3,7 +3,7 @@
- # Any copyright is dedicated to the Public Domain.
- # http://creativecommons.org/publicdomain/zero/1.0/
-
--from __future__ import unicode_literals
-+
-
- import json
- import os
-@@ -43,8 +43,8 @@
-
- def test_valid_unicode(self):
- o = self._test_one('valid-zh-CN')
-- self.assertEquals(o['default'], '百度')
-- self.assertEquals(o['engines'], ['百度', 'Google'])
-+ self.assertEqual(o['default'], '百度')
-+ self.assertEqual(o['engines'], ['百度', 'Google'])
-
- def test_invalid_unicode(self):
- with self.assertRaises(UnicodeDecodeError):
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/action/test_package_fennec_apk.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/action/test_package_fennec_apk.py (refactored)
-@@ -3,7 +3,7 @@
- # Any copyright is dedicated to the Public Domain.
- # http://creativecommons.org/publicdomain/zero/1.0/
-
--from __future__ import unicode_literals
-+
-
- import os
- import unittest
-@@ -41,14 +41,14 @@
- root_files=[data('root_file.txt')])
-
- # omni.ja ends up in assets/omni.ja.
-- self.assertEquals(jarrer['assets/omni.ja'].open().read().strip(), 'omni.ja')
-+ self.assertEqual(jarrer['assets/omni.ja'].open().read().strip(), 'omni.ja')
-
- # Everything else is in place.
- for name in ('classes.dex',
- 'assets/asset.txt',
- 'lib/lib.txt',
- 'root_file.txt'):
-- self.assertEquals(jarrer[name].open().read().strip(), name)
-+ self.assertEqual(jarrer[name].open().read().strip(), name)
-
- def test_inputs(self):
- # Language repacks take updated resources from an ap_ and pack them
-@@ -57,8 +57,8 @@
- # overrides the first.
- jarrer = package(inputs=[data('input2.apk'), data('input1.ap_')])
-
-- files1 = JarReader(data('input1.ap_')).entries.keys()
-- files2 = JarReader(data('input2.apk')).entries.keys()
-+ files1 = list(JarReader(data('input1.ap_')).entries.keys())
-+ files2 = list(JarReader(data('input2.apk')).entries.keys())
- for name in files2:
- self.assertTrue(name in files1 or
- jarrer[name].open().read().startswith('input2/'))
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/backend/common.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/backend/common.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
- import unittest
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/backend/test_android_eclipse.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/backend/test_android_eclipse.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import json
- import os
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/backend/test_build.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/backend/test_build.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals, print_function
-+
-
- import buildconfig
- import os
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/backend/test_configenvironment.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/backend/test_configenvironment.py (refactored)
-@@ -3,7 +3,7 @@
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
- import os, posixpath
--from StringIO import StringIO
-+from io import StringIO
- import unittest
- from mozunit import main, MockedOpen
-
-@@ -29,7 +29,7 @@
- self.substs = ReadOnlyDict(d)
-
- d = dict(self.substs_unicode)
-- d[u'top_srcdir'] = top_srcdir.decode('utf-8')
-+ d['top_srcdir'] = top_srcdir.decode('utf-8')
- self.substs_unicode = ReadOnlyDict(d)
-
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/backend/test_recursivemake.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/backend/test_recursivemake.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
--
--import cPickle as pickle
-+
-+
-+import pickle as pickle
- import json
- import os
- import unittest
-@@ -331,7 +331,7 @@
- ],
- }
-
-- for var, val in expected.items():
-+ for var, val in list(expected.items()):
- # print("test_variable_passthru[%s]" % (var))
- found = [str for str in lines if str.startswith(var)]
- self.assertEqual(found, val)
-@@ -370,7 +370,7 @@
- ],
- }
-
-- for var, val in expected.items():
-+ for var, val in list(expected.items()):
- found = [str for str in lines if str.startswith(var)]
- self.assertEqual(found, val)
-
-@@ -544,7 +544,7 @@
-
- # This is not the most robust test in the world, but it gets the job
- # done.
-- entries = [e for e in m._dests.keys() if '**' in e]
-+ entries = [e for e in list(m._dests.keys()) if '**' in e]
- self.assertEqual(len(entries), 1)
- self.assertIn('support/**', entries[0])
-
-@@ -562,7 +562,7 @@
- set(['child/test_sub.js',
- 'child/data/**',
- 'child/another-file.sjs']))
-- for key in test_installs.keys():
-+ for key in list(test_installs.keys()):
- self.assertIn(key, test_installs)
-
- test_files_manifest = mozpath.join(env.topobjdir,
-@@ -576,7 +576,7 @@
- # Then, synthesize one from the test-installs.pkl file. This should
- # allow us to re-create a subset of the above.
- synthesized_manifest = InstallManifest()
-- for item, installs in test_installs.items():
-+ for item, installs in list(test_installs.items()):
- for install_info in installs:
- if len(install_info) == 3:
- synthesized_manifest.add_pattern_symlink(*install_info)
-@@ -584,7 +584,7 @@
- synthesized_manifest.add_symlink(*install_info)
-
- self.assertEqual(len(synthesized_manifest), 3)
-- for item, info in synthesized_manifest._dests.items():
-+ for item, info in list(synthesized_manifest._dests.items()):
- self.assertIn(item, m)
- self.assertEqual(info, m._dests[item])
-
-@@ -758,7 +758,7 @@
- expected[mozpath.join(env.topobjdir, 'final-target')] = [
- 'FINAL_TARGET = $(DEPTH)/random-final-target'
- ]
-- for key, expected_rules in expected.iteritems():
-+ for key, expected_rules in expected.items():
- backend_path = mozpath.join(key, 'backend.mk')
- lines = [l.strip() for l in open(backend_path, 'rt').readlines()[2:]]
- found = [str for str in lines if
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/backend/test_visualstudio.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/backend/test_visualstudio.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- from xml.dom.minidom import parse
- import os
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/common.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/common.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import copy
- import errno
-@@ -16,7 +16,7 @@
- from mozbuild.util import ReadOnlyNamespace
- from mozpack import path as mozpath
-
--from StringIO import StringIO
-+from io import StringIO
- from which import WhichError
-
- from buildconfig import (
-@@ -78,10 +78,10 @@
- self._search_path = environ.get('PATH', '').split(os.pathsep)
-
- self._subprocess_paths = {
-- mozpath.abspath(k): v for k, v in paths.iteritems() if v
-+ mozpath.abspath(k): v for k, v in paths.items() if v
- }
-
-- paths = paths.keys()
-+ paths = list(paths.keys())
-
- environ = dict(environ)
- if 'CONFIG_SHELL' not in environ:
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/lint.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/lint.py (refactored)
-@@ -2,11 +2,11 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import os
- import unittest
--from StringIO import StringIO
-+from io import StringIO
- from mozunit import main
- from buildconfig import (
- topobjdir,
-@@ -42,9 +42,7 @@
- return type.__new__(mcs, name, bases, attrs)
-
-
--class Lint(unittest.TestCase):
-- __metaclass__ = LintMeta
--
-+class Lint(unittest.TestCase, metaclass=LintMeta):
- def setUp(self):
- self._curdir = os.getcwd()
- os.chdir(topobjdir)
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_checks_configure.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_checks_configure.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
--
--from StringIO import StringIO
-+
-+
-+from io import StringIO
- import os
- import sys
- import textwrap
-@@ -447,7 +447,7 @@
- checking for a... %s
- ''' % self.OTHER_A))
-
-- dirs = map(mozpath.dirname, (self.OTHER_A, self.KNOWN_A))
-+ dirs = list(map(mozpath.dirname, (self.OTHER_A, self.KNOWN_A)))
- config, out, status = self.get_result(textwrap.dedent('''\
- check_prog("A", ("known-a",), paths=["%s"])
- ''' % os.pathsep.join(dirs)))
-@@ -457,7 +457,7 @@
- checking for a... %s
- ''' % self.OTHER_A))
-
-- dirs = map(mozpath.dirname, (self.KNOWN_A, self.KNOWN_B))
-+ dirs = list(map(mozpath.dirname, (self.KNOWN_A, self.KNOWN_B)))
- config, out, status = self.get_result(textwrap.dedent('''\
- check_prog("A", ("known-a",), paths=["%s", "%s"])
- ''' % (os.pathsep.join(dirs), self.OTHER_A)))
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_compile_checks.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_compile_checks.py (refactored)
-@@ -2,14 +2,14 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import os
- import textwrap
- import unittest
- import mozpack.path as mozpath
-
--from StringIO import StringIO
-+from io import StringIO
-
- from buildconfig import topsrcdir
- from common import ConfigureTestSandbox
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_configure.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_configure.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
--
--from StringIO import StringIO
-+
-+
-+from io import StringIO
- import os
- import sys
- import textwrap
-@@ -43,7 +43,7 @@
-
- if '--help' in options:
- return out.getvalue(), config
-- self.assertEquals('', out.getvalue())
-+ self.assertEqual('', out.getvalue())
- return config
-
- def moz_configure(self, source):
-@@ -55,7 +55,7 @@
- def test_defaults(self):
- config = self.get_config()
- self.maxDiff = None
-- self.assertEquals({
-+ self.assertEqual({
- 'CHOICES': NegativeOptionValue(),
- 'DEFAULTED': PositiveOptionValue(('not-simple',)),
- 'IS_GCC': NegativeOptionValue(),
-@@ -71,9 +71,9 @@
- def test_help(self):
- help, config = self.get_config(['--help'], prog='configure')
-
-- self.assertEquals({}, config)
-+ self.assertEqual({}, config)
- self.maxDiff = None
-- self.assertEquals(
-+ self.assertEqual(
- 'Usage: configure [options]\n'
- '\n'
- 'Options: [defaults in brackets after descriptions]\n'
-@@ -109,7 +109,7 @@
- ):
- self.assertNotIn('ENABLED_SIMPLE', config)
- self.assertIn('SIMPLE', config)
-- self.assertEquals(NegativeOptionValue(), config['SIMPLE'])
-+ self.assertEqual(NegativeOptionValue(), config['SIMPLE'])
-
- for config in (
- self.get_config(['--enable-simple']),
-@@ -117,7 +117,7 @@
- ):
- self.assertIn('ENABLED_SIMPLE', config)
- self.assertIn('SIMPLE', config)
-- self.assertEquals(PositiveOptionValue(), config['SIMPLE'])
-+ self.assertEqual(PositiveOptionValue(), config['SIMPLE'])
- self.assertIs(config['SIMPLE'], config['ENABLED_SIMPLE'])
-
- # --enable-simple doesn't take values.
-@@ -135,7 +135,7 @@
- env={'MOZ_WITH_ENV': '1'}),
- ):
- self.assertIn('WITH_ENV', config)
-- self.assertEquals(NegativeOptionValue(), config['WITH_ENV'])
-+ self.assertEqual(NegativeOptionValue(), config['WITH_ENV'])
-
- for config in (
- self.get_config(['--enable-with-env']),
-@@ -145,7 +145,7 @@
- env={'MOZ_WITH_ENV': ''}),
- ):
- self.assertIn('WITH_ENV', config)
-- self.assertEquals(PositiveOptionValue(), config['WITH_ENV'])
-+ self.assertEqual(PositiveOptionValue(), config['WITH_ENV'])
-
- with self.assertRaises(InvalidOptionError):
- self.get_config(['--enable-with-env=value'])
-@@ -160,23 +160,23 @@
- self.get_config(['--enable-values', '--disable-values']),
- ):
- self.assertIn(name, config)
-- self.assertEquals(NegativeOptionValue(), config[name])
-+ self.assertEqual(NegativeOptionValue(), config[name])
-
- for config in (
- self.get_config(['--enable-values']),
- self.get_config(['--disable-values', '--enable-values']),
- ):
- self.assertIn(name, config)
-- self.assertEquals(PositiveOptionValue(), config[name])
-+ self.assertEqual(PositiveOptionValue(), config[name])
-
- config = self.get_config(['--enable-values=foo'])
- self.assertIn(name, config)
-- self.assertEquals(PositiveOptionValue(('foo',)), config[name])
-+ self.assertEqual(PositiveOptionValue(('foo',)), config[name])
-
- config = self.get_config(['--enable-values=foo,bar'])
- self.assertIn(name, config)
- self.assertTrue(config[name])
-- self.assertEquals(PositiveOptionValue(('foo', 'bar')), config[name])
-+ self.assertEqual(PositiveOptionValue(('foo', 'bar')), config[name])
-
- def test_values2(self):
- self.test_values('VALUES2')
-@@ -187,12 +187,12 @@
- def test_returned_default(self):
- config = self.get_config(['--enable-simple'])
- self.assertIn('DEFAULTED', config)
-- self.assertEquals(
-+ self.assertEqual(
- PositiveOptionValue(('simple',)), config['DEFAULTED'])
-
- config = self.get_config(['--disable-simple'])
- self.assertIn('DEFAULTED', config)
-- self.assertEquals(
-+ self.assertEqual(
- PositiveOptionValue(('not-simple',)), config['DEFAULTED'])
-
- def test_returned_choices(self):
-@@ -200,13 +200,13 @@
- config = self.get_config(
- ['--enable-values=alpha', '--returned-choices=%s' % val])
- self.assertIn('CHOICES', config)
-- self.assertEquals(PositiveOptionValue((val,)), config['CHOICES'])
-+ self.assertEqual(PositiveOptionValue((val,)), config['CHOICES'])
-
- for val in ('0', '1', '2'):
- config = self.get_config(
- ['--enable-values=numeric', '--returned-choices=%s' % val])
- self.assertIn('CHOICES', config)
-- self.assertEquals(PositiveOptionValue((val,)), config['CHOICES'])
-+ self.assertEqual(PositiveOptionValue((val,)), config['CHOICES'])
-
- with self.assertRaises(InvalidOptionError):
- self.get_config(['--enable-values=numeric',
-@@ -218,12 +218,12 @@
- def test_included(self):
- config = self.get_config(env={'CC': 'gcc'})
- self.assertIn('IS_GCC', config)
-- self.assertEquals(config['IS_GCC'], True)
-+ self.assertEqual(config['IS_GCC'], True)
-
- config = self.get_config(
- ['--enable-include=extra.configure', '--extra'])
- self.assertIn('EXTRA', config)
-- self.assertEquals(PositiveOptionValue(), config['EXTRA'])
-+ self.assertEqual(PositiveOptionValue(), config['EXTRA'])
-
- with self.assertRaises(InvalidOptionError):
- self.get_config(['--extra'])
-@@ -231,7 +231,7 @@
- def test_template(self):
- config = self.get_config(env={'CC': 'gcc'})
- self.assertIn('CFLAGS', config)
-- self.assertEquals(config['CFLAGS'], ['-Werror=foobar'])
-+ self.assertEqual(config['CFLAGS'], ['-Werror=foobar'])
-
- config = self.get_config(env={'CC': 'clang'})
- self.assertNotIn('CFLAGS', config)
-@@ -288,7 +288,7 @@
- sandbox
- )
-
-- import __builtin__
-+ import builtins
- self.assertIs(sandbox['foo'](), __builtin__)
-
- exec_(textwrap.dedent('''
-@@ -300,7 +300,7 @@
- )
-
- f = sandbox['foo']()
-- self.assertEquals(f.name, os.devnull)
-+ self.assertEqual(f.name, os.devnull)
- f.close()
-
- # This unlocks the sandbox
-@@ -336,8 +336,8 @@
- self.assertIs(sandbox['foo'](), sandbox)
-
- # Nothing leaked from the function being executed
-- self.assertEquals(sandbox.keys(), ['__builtins__', 'foo'])
-- self.assertEquals(sandbox['__builtins__'], ConfigureSandbox.BUILTINS)
-+ self.assertEqual(list(sandbox.keys()), ['__builtins__', 'foo'])
-+ self.assertEqual(sandbox['__builtins__'], ConfigureSandbox.BUILTINS)
-
- exec_(textwrap.dedent('''
- @template
-@@ -354,7 +354,7 @@
- with self.assertRaises(NameError) as e:
- sandbox._depends[sandbox['bar']].result
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "global name 'sys' is not defined")
-
- def test_apply_imports(self):
-@@ -380,28 +380,28 @@
- sandbox
- )
-
-- self.assertEquals(len(imports), 1)
-+ self.assertEqual(len(imports), 1)
-
- def test_os_path(self):
- config = self.get_config(['--with-imports=%s' % __file__])
- self.assertIn('HAS_ABSPATH', config)
-- self.assertEquals(config['HAS_ABSPATH'], True)
-+ self.assertEqual(config['HAS_ABSPATH'], True)
- self.assertIn('HAS_GETATIME', config)
-- self.assertEquals(config['HAS_GETATIME'], True)
-+ self.assertEqual(config['HAS_GETATIME'], True)
- self.assertIn('HAS_GETATIME2', config)
-- self.assertEquals(config['HAS_GETATIME2'], False)
-+ self.assertEqual(config['HAS_GETATIME2'], False)
-
- def test_template_call(self):
- config = self.get_config(env={'CC': 'gcc'})
- self.assertIn('TEMPLATE_VALUE', config)
-- self.assertEquals(config['TEMPLATE_VALUE'], 42)
-+ self.assertEqual(config['TEMPLATE_VALUE'], 42)
- self.assertIn('TEMPLATE_VALUE_2', config)
-- self.assertEquals(config['TEMPLATE_VALUE_2'], 21)
-+ self.assertEqual(config['TEMPLATE_VALUE_2'], 21)
-
- def test_template_imports(self):
- config = self.get_config(['--enable-imports-in-template'])
- self.assertIn('PLATFORM', config)
-- self.assertEquals(config['PLATFORM'], sys.platform)
-+ self.assertEqual(config['PLATFORM'], sys.platform)
-
- def test_decorators(self):
- config = {}
-@@ -419,27 +419,27 @@
- return self.get_config(*args, configure='set_config.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config(['--set-foo'])
- self.assertIn('FOO', config)
-- self.assertEquals(config['FOO'], True)
-+ self.assertEqual(config['FOO'], True)
-
- config = get_config(['--set-bar'])
- self.assertNotIn('FOO', config)
- self.assertIn('BAR', config)
-- self.assertEquals(config['BAR'], True)
-+ self.assertEqual(config['BAR'], True)
-
- config = get_config(['--set-value=qux'])
- self.assertIn('VALUE', config)
-- self.assertEquals(config['VALUE'], 'qux')
-+ self.assertEqual(config['VALUE'], 'qux')
-
- config = get_config(['--set-name=hoge'])
- self.assertIn('hoge', config)
-- self.assertEquals(config['hoge'], True)
-+ self.assertEqual(config['hoge'], True)
-
- config = get_config([])
-- self.assertEquals(config, {'BAR': False})
-+ self.assertEqual(config, {'BAR': False})
-
- with self.assertRaises(ConfigureError):
- # Both --set-foo and --set-name=FOO are going to try to
-@@ -454,11 +454,11 @@
- set_config('QUX', 'qux', when='--with-qux')
- '''):
- config = self.get_config()
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': 'foo',
- })
- config = self.get_config(['--with-qux'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': 'foo',
- 'QUX': 'qux',
- })
-@@ -468,27 +468,27 @@
- return self.get_config(*args, configure='set_define.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {'DEFINES': {}})
-+ self.assertEqual(config, {'DEFINES': {}})
-
- config = get_config(['--set-foo'])
- self.assertIn('FOO', config['DEFINES'])
-- self.assertEquals(config['DEFINES']['FOO'], True)
-+ self.assertEqual(config['DEFINES']['FOO'], True)
-
- config = get_config(['--set-bar'])
- self.assertNotIn('FOO', config['DEFINES'])
- self.assertIn('BAR', config['DEFINES'])
-- self.assertEquals(config['DEFINES']['BAR'], True)
-+ self.assertEqual(config['DEFINES']['BAR'], True)
-
- config = get_config(['--set-value=qux'])
- self.assertIn('VALUE', config['DEFINES'])
-- self.assertEquals(config['DEFINES']['VALUE'], 'qux')
-+ self.assertEqual(config['DEFINES']['VALUE'], 'qux')
-
- config = get_config(['--set-name=hoge'])
- self.assertIn('hoge', config['DEFINES'])
-- self.assertEquals(config['DEFINES']['hoge'], True)
-+ self.assertEqual(config['DEFINES']['hoge'], True)
-
- config = get_config([])
-- self.assertEquals(config['DEFINES'], {'BAR': False})
-+ self.assertEqual(config['DEFINES'], {'BAR': False})
-
- with self.assertRaises(ConfigureError):
- # Both --set-foo and --set-name=FOO are going to try to
-@@ -503,11 +503,11 @@
- set_define('QUX', 'qux', when='--with-qux')
- '''):
- config = self.get_config()
-- self.assertEquals(config['DEFINES'], {
-+ self.assertEqual(config['DEFINES'], {
- 'FOO': 'foo',
- })
- config = self.get_config(['--with-qux'])
-- self.assertEquals(config['DEFINES'], {
-+ self.assertEqual(config['DEFINES'], {
- 'FOO': 'foo',
- 'QUX': 'qux',
- })
-@@ -518,19 +518,19 @@
- *args, configure='imply_option/simple.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config([])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config(['--enable-foo'])
- self.assertIn('BAR', config)
-- self.assertEquals(config['BAR'], PositiveOptionValue())
-+ self.assertEqual(config['BAR'], PositiveOptionValue())
-
- with self.assertRaises(InvalidOptionError) as e:
- get_config(['--enable-foo', '--disable-bar'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- "'--enable-bar' implied by '--enable-foo' conflicts with "
- "'--disable-bar' from the command-line")
-@@ -541,31 +541,31 @@
- *args, configure='imply_option/negative.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config([])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config(['--enable-foo'])
- self.assertIn('BAR', config)
-- self.assertEquals(config['BAR'], NegativeOptionValue())
-+ self.assertEqual(config['BAR'], NegativeOptionValue())
-
- with self.assertRaises(InvalidOptionError) as e:
- get_config(['--enable-foo', '--enable-bar'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- "'--disable-bar' implied by '--enable-foo' conflicts with "
- "'--enable-bar' from the command-line")
-
- config = get_config(['--disable-hoge'])
- self.assertIn('BAR', config)
-- self.assertEquals(config['BAR'], NegativeOptionValue())
-+ self.assertEqual(config['BAR'], NegativeOptionValue())
-
- with self.assertRaises(InvalidOptionError) as e:
- get_config(['--disable-hoge', '--enable-bar'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- "'--disable-bar' implied by '--disable-hoge' conflicts with "
- "'--enable-bar' from the command-line")
-@@ -576,23 +576,23 @@
- *args, configure='imply_option/values.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config([])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config(['--enable-foo=a'])
- self.assertIn('BAR', config)
-- self.assertEquals(config['BAR'], PositiveOptionValue(('a',)))
-+ self.assertEqual(config['BAR'], PositiveOptionValue(('a',)))
-
- config = get_config(['--enable-foo=a,b'])
- self.assertIn('BAR', config)
-- self.assertEquals(config['BAR'], PositiveOptionValue(('a','b')))
-+ self.assertEqual(config['BAR'], PositiveOptionValue(('a','b')))
-
- with self.assertRaises(InvalidOptionError) as e:
- get_config(['--enable-foo=a,b', '--disable-bar'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- "'--enable-bar=a,b' implied by '--enable-foo' conflicts with "
- "'--disable-bar' from the command-line")
-@@ -603,15 +603,15 @@
- *args, configure='imply_option/infer.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config([])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- with self.assertRaises(InvalidOptionError) as e:
- get_config(['--enable-foo', '--disable-bar'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- "'--enable-bar' implied by '--enable-foo' conflicts with "
- "'--disable-bar' from the command-line")
-@@ -619,7 +619,7 @@
- with self.assertRaises(ConfigureError) as e:
- self.get_config([], configure='imply_option/infer_ko.configure')
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- "Cannot infer what implies '--enable-bar'. Please add a `reason` "
- "to the `imply_option` call.")
-@@ -630,25 +630,25 @@
- *args, configure='imply_option/imm.configure')
-
- help, config = get_config(['--help'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = get_config([])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config_path = mozpath.abspath(
- mozpath.join(test_data_path, 'imply_option', 'imm.configure'))
-
-- with self.assertRaisesRegexp(InvalidOptionError,
-+ with self.assertRaisesRegex(InvalidOptionError,
- "--enable-foo' implied by 'imply_option at %s:7' conflicts with "
- "'--disable-foo' from the command-line" % config_path):
- get_config(['--disable-foo'])
-
-- with self.assertRaisesRegexp(InvalidOptionError,
-+ with self.assertRaisesRegex(InvalidOptionError,
- "--enable-bar=foo,bar' implied by 'imply_option at %s:16' conflicts"
- " with '--enable-bar=a,b,c' from the command-line" % config_path):
- get_config(['--enable-bar=a,b,c'])
-
-- with self.assertRaisesRegexp(InvalidOptionError,
-+ with self.assertRaisesRegex(InvalidOptionError,
- "--enable-baz=BAZ' implied by 'imply_option at %s:25' conflicts"
- " with '--enable-baz=QUUX' from the command-line" % config_path):
- get_config(['--enable-baz=QUUX'])
-@@ -660,7 +660,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "`--with-foo`, emitted from `%s` line 2, is unknown."
- % mozpath.join(test_data_path, 'moz.configure'))
-
-@@ -675,7 +675,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Unexpected type: 'int'")
-
- def test_imply_option_when(self):
-@@ -686,12 +686,12 @@
- set_config('QUX', depends('--with-qux')(lambda x: x))
- '''):
- config = self.get_config()
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'QUX': NegativeOptionValue(),
- })
-
- config = self.get_config(['--with-foo'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'QUX': PositiveOptionValue(),
- })
-
-@@ -700,7 +700,7 @@
- with self.moz_configure('option("--with-foo", help="foo")'):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Option `--with-foo` is not handled ; reference it with a @depends'
- )
-@@ -712,7 +712,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Option `--with-foo` already defined'
- )
-@@ -724,7 +724,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Option `MOZ_FOO` already defined'
- )
-@@ -736,7 +736,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Option `MOZ_FOO` already defined'
- )
-@@ -748,7 +748,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Option `MOZ_FOO` already defined'
- )
-@@ -760,7 +760,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Option `--with-foo` already defined'
- )
-@@ -776,18 +776,18 @@
- set_config('QUX', depends('--with-qux', when='--with-foo')(lambda x: x))
- '''):
- config = self.get_config()
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': NegativeOptionValue(),
- })
-
- config = self.get_config(['--with-foo'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': PositiveOptionValue(),
- 'QUX': NegativeOptionValue(),
- })
-
- config = self.get_config(['--with-foo', '--with-qux'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': PositiveOptionValue(),
- 'QUX': PositiveOptionValue(),
- })
-@@ -795,7 +795,7 @@
- with self.assertRaises(InvalidOptionError) as e:
- self.get_config(['--with-bar'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- '--with-bar is not available in this configuration'
- )
-@@ -803,7 +803,7 @@
- with self.assertRaises(InvalidOptionError) as e:
- self.get_config(['--with-qux'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- '--with-qux is not available in this configuration'
- )
-@@ -811,18 +811,18 @@
- with self.assertRaises(InvalidOptionError) as e:
- self.get_config(['QUX=1'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'QUX is not available in this configuration'
- )
-
- config = self.get_config(env={'QUX': '1'})
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': NegativeOptionValue(),
- })
-
- help, config = self.get_config(['--help'])
-- self.assertEquals(help, textwrap.dedent('''\
-+ self.assertEqual(help, textwrap.dedent('''\
- Usage: configure [options]
-
- Options: [defaults in brackets after descriptions]
-@@ -833,7 +833,7 @@
- '''))
-
- help, config = self.get_config(['--help', '--with-foo'])
-- self.assertEquals(help, textwrap.dedent('''\
-+ self.assertEqual(help, textwrap.dedent('''\
- Usage: configure [options]
-
- Options: [defaults in brackets after descriptions]
-@@ -851,7 +851,7 @@
- with self.assertRaises(ConfigureError) as e:
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '@depends function needs the same `when` as '
- 'options it depends on')
-
-@@ -868,7 +868,7 @@
- with self.assertRaises(ConfigureError) as e:
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '@depends function needs the same `when` as '
- 'options it depends on')
-
-@@ -877,7 +877,7 @@
- with self.moz_configure('include("../foo.configure")'):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Cannot include `%s` because it is not in a subdirectory of `%s`'
- % (mozpath.normpath(mozpath.join(test_data_path, '..',
-@@ -892,7 +892,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'Cannot include `%s` because it was included already.'
- % mozpath.normpath(mozpath.join(test_data_path,
-@@ -905,7 +905,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message, "Unexpected type: 'int'")
-+ self.assertEqual(e.exception.message, "Unexpected type: 'int'")
-
- def test_include_when(self):
- with MockedOpen({
-@@ -948,26 +948,26 @@
- '''),
- }):
- config = self.get_config()
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = self.get_config(['--with-foo'])
-- self.assertEquals(config, {})
-+ self.assertEqual(config, {})
-
- config = self.get_config(['--with-bar'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'BAR': 'bar',
- })
-
- with self.assertRaises(InvalidOptionError) as e:
- self.get_config(['--with-qux'])
-
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- '--with-qux is not available in this configuration'
- )
-
- config = self.get_config(['--with-foo', '--with-foo-really'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': 'foo',
- 'FOO2': True,
- })
-@@ -979,7 +979,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message, 'Cannot reassign builtins')
-+ self.assertEqual(e.exception.message, 'Cannot reassign builtins')
-
- with self.assertRaises(KeyError) as e:
- with self.moz_configure('''
-@@ -987,7 +987,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Cannot assign `foo` because it is neither a '
- '@depends nor a @template')
-
-@@ -1000,7 +1000,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "@depends needs at least one argument")
-
- with self.assertRaises(ConfigureError) as e:
-@@ -1011,7 +1011,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "'--with-foo' is not a known option. Maybe it's "
- "declared too late?")
-
-@@ -1023,7 +1023,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Option must not contain an '='")
-
- with self.assertRaises(TypeError) as e:
-@@ -1034,7 +1034,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Cannot use object of type 'int' as argument "
- "to @depends")
-
-@@ -1046,7 +1046,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Cannot decorate generator functions with @depends")
-
- with self.assertRaises(TypeError) as e:
-@@ -1055,7 +1055,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Unexpected type: 'int'")
-
- with self.assertRaises(ConfigureError) as e:
-@@ -1069,7 +1069,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The `foo` function may not be called")
-
- with self.assertRaises(TypeError) as e:
-@@ -1080,7 +1080,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "depends_impl() got an unexpected keyword argument 'foo'")
-
- def test_depends_when(self):
-@@ -1105,12 +1105,12 @@
- set_config('QUX', qux)
- '''):
- config = self.get_config()
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': 'foo',
- })
-
- config = self.get_config(['--with-qux'])
-- self.assertEquals(config, {
-+ self.assertEqual(config, {
- 'FOO': 'foo',
- 'QUX': 'qux',
- })
-@@ -1125,7 +1125,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '@imports must appear after @template')
-
- with self.assertRaises(ConfigureError) as e:
-@@ -1138,7 +1138,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '@imports must appear after @depends')
-
- for import_ in (
-@@ -1155,7 +1155,7 @@
- ''' % import_):
- self.get_config()
-
-- self.assertEquals(e.exception.message, "Unexpected type: 'int'")
-+ self.assertEqual(e.exception.message, "Unexpected type: 'int'")
-
- with self.assertRaises(TypeError) as e:
- with self.moz_configure('''
-@@ -1166,7 +1166,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message, "Unexpected type: 'int'")
-+ self.assertEqual(e.exception.message, "Unexpected type: 'int'")
-
- with self.assertRaises(ValueError) as e:
- with self.moz_configure('''
-@@ -1176,7 +1176,7 @@
- '''):
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Invalid argument to @imports: 'os*'")
-
- def test_only_when(self):
-@@ -1231,7 +1231,7 @@
- with self.assertRaises(InvalidOptionError) as e:
- self.get_config(['--foo'])
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--foo is not available in this configuration')
-
- # Cannot depend on an option defined in a only_when block, because we
-@@ -1242,7 +1242,7 @@
- with self.assertRaises(ConfigureError) as e:
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '@depends function needs the same `when` as '
- 'options it depends on')
-
-@@ -1259,7 +1259,7 @@
- with self.assertRaises(InvalidOptionError) as e:
- self.get_config()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--foo is not available in this configuration')
-
- # And similarly doesn't fail when the condition is true.
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_lint.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_lint.py (refactored)
-@@ -2,9 +2,9 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-
--from StringIO import StringIO
-+
-+from io import StringIO
- import os
- import textwrap
- import unittest
-@@ -62,7 +62,7 @@
- '''):
- self.lint_test()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "`bar` depends on '--help' and `foo`. "
- "`foo` must depend on '--help'")
-
-@@ -85,7 +85,7 @@
- '''):
- self.lint_test()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "`bar` depends on '--help' and `foo`. "
- "`foo` must depend on '--help'")
-
-@@ -111,7 +111,7 @@
- '''):
- self.lint_test()
-
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "Missing @depends for `foo`: '--help'")
-
- # There is a default restricted `os` module when there is no explicit
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_moz_configure.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_moz_configure.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- from mozunit import main
- from mozpack import path as mozpath
-@@ -23,10 +23,10 @@
- shell = mozpath.abspath('/bin/sh')
- return result.replace('CONFIG_SHELL=%s ' % shell, '')
-
-- self.assertEquals('--enable-application=browser',
-+ self.assertEqual('--enable-application=browser',
- get_value_for(['--enable-application=browser']))
-
-- self.assertEquals('--enable-application=browser '
-+ self.assertEqual('--enable-application=browser '
- 'MOZ_PROFILING=1',
- get_value_for(['--enable-application=browser',
- 'MOZ_PROFILING=1']))
-@@ -35,25 +35,25 @@
- environ={'MOZ_PROFILING': '1'},
- mozconfig='ac_add_options --enable-project=js')
-
-- self.assertEquals('--enable-project=js MOZ_PROFILING=1',
-+ self.assertEqual('--enable-project=js MOZ_PROFILING=1',
- value)
-
- # --disable-js-shell is the default, so it's filtered out.
-- self.assertEquals('--enable-application=browser',
-+ self.assertEqual('--enable-application=browser',
- get_value_for(['--enable-application=browser',
- '--disable-js-shell']))
-
- # Normally, --without-foo would be filtered out because that's the
- # default, but since it is a (fake) old-configure option, it always
- # appears.
-- self.assertEquals('--enable-application=browser --without-foo',
-+ self.assertEqual('--enable-application=browser --without-foo',
- get_value_for(['--enable-application=browser',
- '--without-foo']))
-- self.assertEquals('--enable-application=browser --with-foo',
-+ self.assertEqual('--enable-application=browser --with-foo',
- get_value_for(['--enable-application=browser',
- '--with-foo']))
-
-- self.assertEquals("--enable-application=browser '--with-foo=foo bar'",
-+ self.assertEqual("--enable-application=browser '--with-foo=foo bar'",
- get_value_for(['--enable-application=browser',
- '--with-foo=foo bar']))
-
-@@ -65,7 +65,7 @@
- self.version = version
-
- def __call__(self, stdin, args):
-- this.assertEquals(args, ('-version',))
-+ this.assertEqual(args, ('-version',))
- return 0, self.version, ''
-
- def check_nsis_version(version):
-@@ -80,13 +80,13 @@
- with self.assertRaises(SystemExit) as e:
- check_nsis_version('v3.0a2')
-
-- self.assertEquals(check_nsis_version('v3.0b1'), '3.0b1')
-- self.assertEquals(check_nsis_version('v3.0b2'), '3.0b2')
-- self.assertEquals(check_nsis_version('v3.0rc1'), '3.0rc1')
-- self.assertEquals(check_nsis_version('v3.0'), '3.0')
-- self.assertEquals(check_nsis_version('v3.0-2'), '3.0')
-- self.assertEquals(check_nsis_version('v3.0.1'), '3.0')
-- self.assertEquals(check_nsis_version('v3.1'), '3.1')
-+ self.assertEqual(check_nsis_version('v3.0b1'), '3.0b1')
-+ self.assertEqual(check_nsis_version('v3.0b2'), '3.0b2')
-+ self.assertEqual(check_nsis_version('v3.0rc1'), '3.0rc1')
-+ self.assertEqual(check_nsis_version('v3.0'), '3.0')
-+ self.assertEqual(check_nsis_version('v3.0-2'), '3.0')
-+ self.assertEqual(check_nsis_version('v3.0.1'), '3.0')
-+ self.assertEqual(check_nsis_version('v3.1'), '3.1')
-
-
- if __name__ == '__main__':
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_options.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_options.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import unittest
-
-@@ -27,139 +27,139 @@
- class TestOption(unittest.TestCase):
- def test_option(self):
- option = Option('--option')
-- self.assertEquals(option.prefix, '')
-- self.assertEquals(option.name, 'option')
-- self.assertEquals(option.env, None)
-+ self.assertEqual(option.prefix, '')
-+ self.assertEqual(option.name, 'option')
-+ self.assertEqual(option.env, None)
- self.assertFalse(option.default)
-
- option = Option('--enable-option')
-- self.assertEquals(option.prefix, 'enable')
-- self.assertEquals(option.name, 'option')
-- self.assertEquals(option.env, None)
-+ self.assertEqual(option.prefix, 'enable')
-+ self.assertEqual(option.name, 'option')
-+ self.assertEqual(option.env, None)
- self.assertFalse(option.default)
-
- option = Option('--disable-option')
-- self.assertEquals(option.prefix, 'disable')
-- self.assertEquals(option.name, 'option')
-- self.assertEquals(option.env, None)
-+ self.assertEqual(option.prefix, 'disable')
-+ self.assertEqual(option.name, 'option')
-+ self.assertEqual(option.env, None)
- self.assertTrue(option.default)
-
- option = Option('--with-option')
-- self.assertEquals(option.prefix, 'with')
-- self.assertEquals(option.name, 'option')
-- self.assertEquals(option.env, None)
-+ self.assertEqual(option.prefix, 'with')
-+ self.assertEqual(option.name, 'option')
-+ self.assertEqual(option.env, None)
- self.assertFalse(option.default)
-
- option = Option('--without-option')
-- self.assertEquals(option.prefix, 'without')
-- self.assertEquals(option.name, 'option')
-- self.assertEquals(option.env, None)
-+ self.assertEqual(option.prefix, 'without')
-+ self.assertEqual(option.name, 'option')
-+ self.assertEqual(option.env, None)
- self.assertTrue(option.default)
-
- option = Option('--without-option-foo', env='MOZ_OPTION')
-- self.assertEquals(option.env, 'MOZ_OPTION')
-+ self.assertEqual(option.env, 'MOZ_OPTION')
-
- option = Option(env='MOZ_OPTION')
-- self.assertEquals(option.prefix, '')
-- self.assertEquals(option.name, None)
-- self.assertEquals(option.env, 'MOZ_OPTION')
-+ self.assertEqual(option.prefix, '')
-+ self.assertEqual(option.name, None)
-+ self.assertEqual(option.env, 'MOZ_OPTION')
- self.assertFalse(option.default)
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=0, default=('a',))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=1, default=())
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'default must be a bool, a string or a tuple of strings')
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=1, default=True)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=1, default=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=2, default=())
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'default must be a bool, a string or a tuple of strings')
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=2, default=True)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=2, default=('a',))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs='?', default=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs='+', default=())
-- self.assertEquals(
-+ self.assertEqual(
- e.exception.message,
- 'default must be a bool, a string or a tuple of strings')
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs='+', default=True)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- # --disable options with a nargs value that requires at least one
- # argument need to be given a default.
- with self.assertRaises(InvalidOptionError) as e:
- Option('--disable-option', nargs=1)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--disable-option', nargs='+')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- # Test nargs inference from default value
- option = Option('--with-foo', default=True)
-- self.assertEquals(option.nargs, 0)
-+ self.assertEqual(option.nargs, 0)
-
- option = Option('--with-foo', default=False)
-- self.assertEquals(option.nargs, 0)
-+ self.assertEqual(option.nargs, 0)
-
- option = Option('--with-foo', default='a')
-- self.assertEquals(option.nargs, '?')
-+ self.assertEqual(option.nargs, '?')
-
- option = Option('--with-foo', default=('a',))
-- self.assertEquals(option.nargs, '?')
-+ self.assertEqual(option.nargs, '?')
-
- option = Option('--with-foo', default=('a', 'b'))
-- self.assertEquals(option.nargs, '*')
-+ self.assertEqual(option.nargs, '*')
-
- option = Option(env='FOO', default=True)
-- self.assertEquals(option.nargs, 0)
-+ self.assertEqual(option.nargs, 0)
-
- option = Option(env='FOO', default=False)
-- self.assertEquals(option.nargs, 0)
-+ self.assertEqual(option.nargs, 0)
-
- option = Option(env='FOO', default='a')
-- self.assertEquals(option.nargs, '?')
-+ self.assertEqual(option.nargs, '?')
-
- option = Option(env='FOO', default=('a',))
-- self.assertEquals(option.nargs, '?')
-+ self.assertEqual(option.nargs, '?')
-
- option = Option(env='FOO', default=('a', 'b'))
-- self.assertEquals(option.nargs, '*')
-+ self.assertEqual(option.nargs, '*')
-
- def test_option_option(self):
- for option in (
-@@ -169,70 +169,70 @@
- '--with-option',
- '--without-option',
- ):
-- self.assertEquals(Option(option).option, option)
-- self.assertEquals(Option(option, env='FOO').option, option)
-+ self.assertEqual(Option(option).option, option)
-+ self.assertEqual(Option(option, env='FOO').option, option)
-
- opt = Option(option, default=False)
-- self.assertEquals(opt.option,
-+ self.assertEqual(opt.option,
- option.replace('-disable-', '-enable-')
- .replace('-without-', '-with-'))
-
- opt = Option(option, default=True)
-- self.assertEquals(opt.option,
-+ self.assertEqual(opt.option,
- option.replace('-enable-', '-disable-')
- .replace('-with-', '-without-'))
-
-- self.assertEquals(Option(env='FOO').option, 'FOO')
-+ self.assertEqual(Option(env='FOO').option, 'FOO')
-
- def test_option_choices(self):
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=3, choices=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Not enough `choices` for `nargs`')
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--without-option', nargs=1, choices=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'A `default` must be given along with `choices`')
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--without-option', nargs='+', choices=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'A `default` must be given along with `choices`')
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--without-option', default='c', choices=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The `default` value must be one of 'a', 'b'")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--without-option', default=('a', 'c',), choices=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The `default` value must be one of 'a', 'b'")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--without-option', default=('c',), choices=('a', 'b'))
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The `default` value must be one of 'a', 'b'")
-
- option = Option('--with-option', nargs='+', choices=('a', 'b'))
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--with-option=c')
-- self.assertEquals(e.exception.message, "'c' is not one of 'a', 'b'")
-+ self.assertEqual(e.exception.message, "'c' is not one of 'a', 'b'")
-
- value = option.get_value('--with-option=b,a')
- self.assertTrue(value)
-- self.assertEquals(PositiveOptionValue(('b', 'a')), value)
-+ self.assertEqual(PositiveOptionValue(('b', 'a')), value)
-
- option = Option('--without-option', nargs='*', default='a',
- choices=('a', 'b'))
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--with-option=c')
-- self.assertEquals(e.exception.message, "'c' is not one of 'a', 'b'")
-+ self.assertEqual(e.exception.message, "'c' is not one of 'a', 'b'")
-
- value = option.get_value('--with-option=b,a')
- self.assertTrue(value)
-- self.assertEquals(PositiveOptionValue(('b', 'a')), value)
-+ self.assertEqual(PositiveOptionValue(('b', 'a')), value)
-
- # Test nargs inference from choices
- option = Option('--with-option', choices=('a', 'b'))
-@@ -243,71 +243,71 @@
- choices=('a', 'b', 'c', 'd'))
-
- value = option.get_value('--with-option=+d')
-- self.assertEquals(PositiveOptionValue(('b', 'c', 'd')), value)
-+ self.assertEqual(PositiveOptionValue(('b', 'c', 'd')), value)
-
- value = option.get_value('--with-option=-b')
-- self.assertEquals(PositiveOptionValue(('c',)), value)
-+ self.assertEqual(PositiveOptionValue(('c',)), value)
-
- value = option.get_value('--with-option=-b,+d')
-- self.assertEquals(PositiveOptionValue(('c','d')), value)
-+ self.assertEqual(PositiveOptionValue(('c','d')), value)
-
- # Adding something that is in the default is fine
- value = option.get_value('--with-option=+b')
-- self.assertEquals(PositiveOptionValue(('b', 'c')), value)
-+ self.assertEqual(PositiveOptionValue(('b', 'c')), value)
-
- # Removing something that is not in the default is fine, as long as it
- # is one of the choices
- value = option.get_value('--with-option=-a')
-- self.assertEquals(PositiveOptionValue(('b', 'c')), value)
-+ self.assertEqual(PositiveOptionValue(('b', 'c')), value)
-
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--with-option=-e')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "'e' is not one of 'a', 'b', 'c', 'd'")
-
- # Other "not a choice" errors.
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--with-option=+e')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "'e' is not one of 'a', 'b', 'c', 'd'")
-
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--with-option=e')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "'e' is not one of 'a', 'b', 'c', 'd'")
-
- def test_option_value_format(self):
- val = PositiveOptionValue()
-- self.assertEquals('--with-value', val.format('--with-value'))
-- self.assertEquals('--with-value', val.format('--without-value'))
-- self.assertEquals('--enable-value', val.format('--enable-value'))
-- self.assertEquals('--enable-value', val.format('--disable-value'))
-- self.assertEquals('--value', val.format('--value'))
-- self.assertEquals('VALUE=1', val.format('VALUE'))
-+ self.assertEqual('--with-value', val.format('--with-value'))
-+ self.assertEqual('--with-value', val.format('--without-value'))
-+ self.assertEqual('--enable-value', val.format('--enable-value'))
-+ self.assertEqual('--enable-value', val.format('--disable-value'))
-+ self.assertEqual('--value', val.format('--value'))
-+ self.assertEqual('VALUE=1', val.format('VALUE'))
-
- val = PositiveOptionValue(('a',))
-- self.assertEquals('--with-value=a', val.format('--with-value'))
-- self.assertEquals('--with-value=a', val.format('--without-value'))
-- self.assertEquals('--enable-value=a', val.format('--enable-value'))
-- self.assertEquals('--enable-value=a', val.format('--disable-value'))
-- self.assertEquals('--value=a', val.format('--value'))
-- self.assertEquals('VALUE=a', val.format('VALUE'))
-+ self.assertEqual('--with-value=a', val.format('--with-value'))
-+ self.assertEqual('--with-value=a', val.format('--without-value'))
-+ self.assertEqual('--enable-value=a', val.format('--enable-value'))
-+ self.assertEqual('--enable-value=a', val.format('--disable-value'))
-+ self.assertEqual('--value=a', val.format('--value'))
-+ self.assertEqual('VALUE=a', val.format('VALUE'))
-
- val = PositiveOptionValue(('a', 'b'))
-- self.assertEquals('--with-value=a,b', val.format('--with-value'))
-- self.assertEquals('--with-value=a,b', val.format('--without-value'))
-- self.assertEquals('--enable-value=a,b', val.format('--enable-value'))
-- self.assertEquals('--enable-value=a,b', val.format('--disable-value'))
-- self.assertEquals('--value=a,b', val.format('--value'))
-- self.assertEquals('VALUE=a,b', val.format('VALUE'))
-+ self.assertEqual('--with-value=a,b', val.format('--with-value'))
-+ self.assertEqual('--with-value=a,b', val.format('--without-value'))
-+ self.assertEqual('--enable-value=a,b', val.format('--enable-value'))
-+ self.assertEqual('--enable-value=a,b', val.format('--disable-value'))
-+ self.assertEqual('--value=a,b', val.format('--value'))
-+ self.assertEqual('VALUE=a,b', val.format('VALUE'))
-
- val = NegativeOptionValue()
-- self.assertEquals('--without-value', val.format('--with-value'))
-- self.assertEquals('--without-value', val.format('--without-value'))
-- self.assertEquals('--disable-value', val.format('--enable-value'))
-- self.assertEquals('--disable-value', val.format('--disable-value'))
-- self.assertEquals('', val.format('--value'))
-- self.assertEquals('VALUE=', val.format('VALUE'))
-+ self.assertEqual('--without-value', val.format('--with-value'))
-+ self.assertEqual('--without-value', val.format('--without-value'))
-+ self.assertEqual('--disable-value', val.format('--enable-value'))
-+ self.assertEqual('--disable-value', val.format('--disable-value'))
-+ self.assertEqual('', val.format('--value'))
-+ self.assertEqual('VALUE=', val.format('VALUE'))
-
- def test_option_value(self, name='option', nargs=0, default=None):
- disabled = name.startswith(('disable-', 'without-'))
-@@ -324,28 +324,28 @@
-
- if nargs in (0, '?', '*') or disabled:
- value = option.get_value('--%s' % name, 'option')
-- self.assertEquals(value, posOptionValue())
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, posOptionValue())
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s' % name)
- if nargs == 1:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes 1 value' % name)
- elif nargs == '+':
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes 1 or more values' % name)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes 2 values' % name)
-
- value = option.get_value('')
-- self.assertEquals(value, defaultValue)
-- self.assertEquals(value.origin, 'default')
-+ self.assertEqual(value, defaultValue)
-+ self.assertEqual(value.origin, 'default')
-
- value = option.get_value(None)
-- self.assertEquals(value, defaultValue)
-- self.assertEquals(value.origin, 'default')
-+ self.assertEqual(value, defaultValue)
-+ self.assertEqual(value.origin, 'default')
-
- with self.assertRaises(AssertionError):
- value = option.get_value('MOZ_OPTION=', 'environment')
-@@ -358,47 +358,47 @@
-
- if nargs in (1, '?', '*', '+') and not disabled:
- value = option.get_value('--%s=' % name, 'option')
-- self.assertEquals(value, PositiveOptionValue(('',)))
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, PositiveOptionValue(('',)))
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s=' % name)
- if disabled:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Cannot pass a value to --%s' % name)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes %d values' % (name, nargs))
-
- if nargs in (1, '?', '*', '+') and not disabled:
- value = option.get_value('--%s=foo' % name, 'option')
-- self.assertEquals(value, PositiveOptionValue(('foo',)))
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, PositiveOptionValue(('foo',)))
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s=foo' % name)
- if disabled:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Cannot pass a value to --%s' % name)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes %d values' % (name, nargs))
-
- if nargs in (2, '*', '+') and not disabled:
- value = option.get_value('--%s=foo,bar' % name, 'option')
-- self.assertEquals(value, PositiveOptionValue(('foo', 'bar')))
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, PositiveOptionValue(('foo', 'bar')))
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s=foo,bar' % name, 'option')
- if disabled:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Cannot pass a value to --%s' % name)
- elif nargs == '?':
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes 0 or 1 values' % name)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes %d value%s'
- % (name, nargs, 's' if nargs != 1 else ''))
-
-@@ -406,59 +406,59 @@
- default=default)
- if nargs in (0, '?', '*') or disabled:
- value = option.get_value('--%s' % name, 'option')
-- self.assertEquals(value, posOptionValue())
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, posOptionValue())
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s' % name)
- if disabled:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Cannot pass a value to --%s' % name)
- elif nargs == '+':
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes 1 or more values' % name)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes %d value%s'
- % (name, nargs, 's' if nargs != 1 else ''))
-
- value = option.get_value('')
-- self.assertEquals(value, defaultValue)
-- self.assertEquals(value.origin, 'default')
-+ self.assertEqual(value, defaultValue)
-+ self.assertEqual(value.origin, 'default')
-
- value = option.get_value(None)
-- self.assertEquals(value, defaultValue)
-- self.assertEquals(value.origin, 'default')
-+ self.assertEqual(value, defaultValue)
-+ self.assertEqual(value.origin, 'default')
-
- value = option.get_value('MOZ_OPTION=', 'environment')
-- self.assertEquals(value, NegativeOptionValue())
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, NegativeOptionValue())
-+ self.assertEqual(value.origin, 'environment')
-
- if nargs in (0, '?', '*'):
- value = option.get_value('MOZ_OPTION=1', 'environment')
-- self.assertEquals(value, PositiveOptionValue())
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue())
-+ self.assertEqual(value.origin, 'environment')
- elif nargs in (1, '+'):
- value = option.get_value('MOZ_OPTION=1', 'environment')
-- self.assertEquals(value, PositiveOptionValue(('1',)))
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue(('1',)))
-+ self.assertEqual(value.origin, 'environment')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('MOZ_OPTION=1', 'environment')
-- self.assertEquals(e.exception.message, 'MOZ_OPTION takes 2 values')
-+ self.assertEqual(e.exception.message, 'MOZ_OPTION takes 2 values')
-
- if nargs in (1, '?', '*', '+') and not disabled:
- value = option.get_value('--%s=' % name, 'option')
-- self.assertEquals(value, PositiveOptionValue(('',)))
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, PositiveOptionValue(('',)))
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s=' % name, 'option')
- if disabled:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'Cannot pass a value to --%s' % name)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s takes %d values' % (name, nargs))
-
- with self.assertRaises(AssertionError):
-@@ -466,26 +466,26 @@
-
- if nargs in (1, '?', '*', '+'):
- value = option.get_value('MOZ_OPTION=foo', 'environment')
-- self.assertEquals(value, PositiveOptionValue(('foo',)))
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue(('foo',)))
-+ self.assertEqual(value.origin, 'environment')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('MOZ_OPTION=foo', 'environment')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'MOZ_OPTION takes %d values' % nargs)
-
- if nargs in (2, '*', '+'):
- value = option.get_value('MOZ_OPTION=foo,bar', 'environment')
-- self.assertEquals(value, PositiveOptionValue(('foo', 'bar')))
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue(('foo', 'bar')))
-+ self.assertEqual(value.origin, 'environment')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('MOZ_OPTION=foo,bar', 'environment')
- if nargs == '?':
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'MOZ_OPTION takes 0 or 1 values')
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'MOZ_OPTION takes %d value%s'
- % (nargs, 's' if nargs != 1 else ''))
-
-@@ -497,26 +497,26 @@
- env_option.get_value('--%s' % name)
-
- value = env_option.get_value('')
-- self.assertEquals(value, defaultValue)
-- self.assertEquals(value.origin, 'default')
-+ self.assertEqual(value, defaultValue)
-+ self.assertEqual(value.origin, 'default')
-
- value = env_option.get_value('MOZ_OPTION=', 'environment')
-- self.assertEquals(value, negOptionValue())
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, negOptionValue())
-+ self.assertEqual(value.origin, 'environment')
-
- if nargs in (0, '?', '*'):
- value = env_option.get_value('MOZ_OPTION=1', 'environment')
-- self.assertEquals(value, posOptionValue())
-+ self.assertEqual(value, posOptionValue())
- self.assertTrue(value)
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value.origin, 'environment')
- elif nargs in (1, '+'):
- value = env_option.get_value('MOZ_OPTION=1', 'environment')
-- self.assertEquals(value, PositiveOptionValue(('1',)))
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue(('1',)))
-+ self.assertEqual(value.origin, 'environment')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- env_option.get_value('MOZ_OPTION=1', 'environment')
-- self.assertEquals(e.exception.message, 'MOZ_OPTION takes 2 values')
-+ self.assertEqual(e.exception.message, 'MOZ_OPTION takes 2 values')
-
- with self.assertRaises(AssertionError) as e:
- env_option.get_value('--%s' % name)
-@@ -526,26 +526,26 @@
-
- if nargs in (1, '?', '*', '+'):
- value = env_option.get_value('MOZ_OPTION=foo', 'environment')
-- self.assertEquals(value, PositiveOptionValue(('foo',)))
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue(('foo',)))
-+ self.assertEqual(value.origin, 'environment')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- env_option.get_value('MOZ_OPTION=foo', 'environment')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'MOZ_OPTION takes %d values' % nargs)
-
- if nargs in (2, '*', '+'):
- value = env_option.get_value('MOZ_OPTION=foo,bar', 'environment')
-- self.assertEquals(value, PositiveOptionValue(('foo', 'bar')))
-- self.assertEquals(value.origin, 'environment')
-+ self.assertEqual(value, PositiveOptionValue(('foo', 'bar')))
-+ self.assertEqual(value.origin, 'environment')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- env_option.get_value('MOZ_OPTION=foo,bar', 'environment')
- if nargs == '?':
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'MOZ_OPTION takes 0 or 1 values')
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- 'MOZ_OPTION takes %d value%s'
- % (nargs, 's' if nargs != 1 else ''))
-
-@@ -557,28 +557,28 @@
- default=default)
-
- value = option.get_value('--%s-option' % disable, 'option')
-- self.assertEquals(value, NegativeOptionValue())
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, NegativeOptionValue())
-+ self.assertEqual(value.origin, 'option')
-
- option = self.test_option_value('%s-option' % disable, nargs=nargs,
- default=default)
-
- if nargs in (0, '?', '*'):
- value = option.get_value('--%s-option' % enable, 'option')
-- self.assertEquals(value, PositiveOptionValue())
-- self.assertEquals(value.origin, 'option')
-+ self.assertEqual(value, PositiveOptionValue())
-+ self.assertEqual(value.origin, 'option')
- else:
- with self.assertRaises(InvalidOptionError) as e:
- option.get_value('--%s-option' % enable, 'option')
- if nargs == 1:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s-option takes 1 value' % enable)
- elif nargs == '+':
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s-option takes 1 or more values'
- % enable)
- else:
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- '--%s-option takes 2 values' % enable)
-
- def test_option_value_with(self):
-@@ -587,12 +587,12 @@
- def test_option_value_invalid_nargs(self):
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs='foo')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "nargs must be a positive integer, '?', '*' or '+'")
-
- with self.assertRaises(InvalidOptionError) as e:
- Option('--option', nargs=-2)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "nargs must be a positive integer, '?', '*' or '+'")
-
- def test_option_value_nargs_1(self):
-@@ -603,7 +603,7 @@
- # A default is required
- with self.assertRaises(InvalidOptionError) as e:
- Option('--disable-option', nargs=1)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- def test_option_value_nargs_2(self):
-@@ -614,7 +614,7 @@
- # A default is required
- with self.assertRaises(InvalidOptionError) as e:
- Option('--disable-option', nargs=2)
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
- def test_option_value_nargs_0_or_1(self):
-@@ -641,7 +641,7 @@
- # A default is required
- with self.assertRaises(InvalidOptionError) as e:
- Option('--disable-option', nargs='+')
-- self.assertEquals(e.exception.message,
-+ self.assertEqual(e.exception.message,
- "The given `default` doesn't satisfy `nargs`")
-
-
-@@ -649,109 +649,109 @@
- def test_basic(self):
- helper = CommandLineHelper({}, ['cmd', '--foo', '--bar'])
-
-- self.assertEquals(['--foo', '--bar'], list(helper))
-+ self.assertEqual(['--foo', '--bar'], list(helper))
-
- helper.add('--enable-qux')
-
-- self.assertEquals(['--foo', '--bar', '--enable-qux'], list(helper))
-+ self.assertEqual(['--foo', '--bar', '--enable-qux'], list(helper))
-
- value, option = helper.handle(Option('--bar'))
-- self.assertEquals(['--foo', '--enable-qux'], list(helper))
-- self.assertEquals(PositiveOptionValue(), value)
-- self.assertEquals('--bar', option)
-+ self.assertEqual(['--foo', '--enable-qux'], list(helper))
-+ self.assertEqual(PositiveOptionValue(), value)
-+ self.assertEqual('--bar', option)
-
- value, option = helper.handle(Option('--baz'))
-- self.assertEquals(['--foo', '--enable-qux'], list(helper))
-- self.assertEquals(NegativeOptionValue(), value)
-- self.assertEquals(None, option)
-+ self.assertEqual(['--foo', '--enable-qux'], list(helper))
-+ self.assertEqual(NegativeOptionValue(), value)
-+ self.assertEqual(None, option)
-
- def test_precedence(self):
- foo = Option('--with-foo', nargs='*')
- helper = CommandLineHelper({}, ['cmd', '--with-foo=a,b'])
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--with-foo=a,b', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--with-foo=a,b', option)
-
- helper = CommandLineHelper({}, ['cmd', '--with-foo=a,b',
- '--without-foo'])
- value, option = helper.handle(foo)
-- self.assertEquals(NegativeOptionValue(), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--without-foo', option)
-+ self.assertEqual(NegativeOptionValue(), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--without-foo', option)
-
- helper = CommandLineHelper({}, ['cmd', '--without-foo',
- '--with-foo=a,b'])
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--with-foo=a,b', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--with-foo=a,b', option)
-
- foo = Option('--with-foo', env='FOO', nargs='*')
- helper = CommandLineHelper({'FOO': ''}, ['cmd', '--with-foo=a,b'])
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--with-foo=a,b', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--with-foo=a,b', option)
-
- helper = CommandLineHelper({'FOO': 'a,b'}, ['cmd', '--without-foo'])
- value, option = helper.handle(foo)
-- self.assertEquals(NegativeOptionValue(), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--without-foo', option)
-+ self.assertEqual(NegativeOptionValue(), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--without-foo', option)
-
- helper = CommandLineHelper({'FOO': ''}, ['cmd', '--with-bar=a,b'])
- value, option = helper.handle(foo)
-- self.assertEquals(NegativeOptionValue(), value)
-- self.assertEquals('environment', value.origin)
-- self.assertEquals('FOO=', option)
-+ self.assertEqual(NegativeOptionValue(), value)
-+ self.assertEqual('environment', value.origin)
-+ self.assertEqual('FOO=', option)
-
- helper = CommandLineHelper({'FOO': 'a,b'}, ['cmd', '--without-bar'])
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
-- self.assertEquals('environment', value.origin)
-- self.assertEquals('FOO=a,b', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+ self.assertEqual('environment', value.origin)
-+ self.assertEqual('FOO=a,b', option)
-
- helper = CommandLineHelper({}, ['cmd', '--with-foo=a,b', 'FOO='])
- value, option = helper.handle(foo)
-- self.assertEquals(NegativeOptionValue(), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('FOO=', option)
-+ self.assertEqual(NegativeOptionValue(), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('FOO=', option)
-
- helper = CommandLineHelper({}, ['cmd', '--without-foo', 'FOO=a,b'])
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('FOO=a,b', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('FOO=a,b', option)
-
- helper = CommandLineHelper({}, ['cmd', 'FOO=', '--with-foo=a,b'])
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b')), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--with-foo=a,b', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b')), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--with-foo=a,b', option)
-
- helper = CommandLineHelper({}, ['cmd', 'FOO=a,b', '--without-foo'])
- value, option = helper.handle(foo)
-- self.assertEquals(NegativeOptionValue(), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--without-foo', option)
-+ self.assertEqual(NegativeOptionValue(), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--without-foo', option)
-
- def test_extra_args(self):
- foo = Option('--with-foo', env='FOO', nargs='*')
- helper = CommandLineHelper({}, ['cmd'])
- helper.add('FOO=a,b,c', 'other-origin')
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
-- self.assertEquals('other-origin', value.origin)
-- self.assertEquals('FOO=a,b,c', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
-+ self.assertEqual('other-origin', value.origin)
-+ self.assertEqual('FOO=a,b,c', option)
-
- helper = CommandLineHelper({}, ['cmd'])
- helper.add('FOO=a,b,c', 'other-origin')
- helper.add('--with-foo=a,b,c', 'other-origin')
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
-- self.assertEquals('other-origin', value.origin)
-- self.assertEquals('--with-foo=a,b,c', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
-+ self.assertEqual('other-origin', value.origin)
-+ self.assertEqual('--with-foo=a,b,c', option)
-
- # Adding conflicting options is not allowed.
- helper = CommandLineHelper({}, ['cmd'])
-@@ -771,9 +771,9 @@
- # But adding the same is allowed.
- helper.add('FOO=a,b,c', 'other-origin')
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
-- self.assertEquals('other-origin', value.origin)
-- self.assertEquals('FOO=a,b,c', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
-+ self.assertEqual('other-origin', value.origin)
-+ self.assertEqual('FOO=a,b,c', option)
-
- # The same rule as above applies when using the option form vs. the
- # variable form. But we can't detect it when .add is called.
-@@ -799,9 +799,9 @@
- helper.add('FOO=a,b,c', 'other-origin')
- helper.add('--with-foo=a,b,c', 'other-origin')
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(('a', 'b', 'c')), value)
-- self.assertEquals('other-origin', value.origin)
-- self.assertEquals('--with-foo=a,b,c', option)
-+ self.assertEqual(PositiveOptionValue(('a', 'b', 'c')), value)
-+ self.assertEqual('other-origin', value.origin)
-+ self.assertEqual('--with-foo=a,b,c', option)
-
- # Conflicts are also not allowed against what is in the
- # environment/on the command line.
-@@ -831,19 +831,19 @@
- foo = Option('--foo',
- possible_origins=('command-line',))
- value, option = helper.handle(foo)
-- self.assertEquals(PositiveOptionValue(), value)
-- self.assertEquals('command-line', value.origin)
-- self.assertEquals('--foo', option)
-+ self.assertEqual(PositiveOptionValue(), value)
-+ self.assertEqual('command-line', value.origin)
-+ self.assertEqual('--foo', option)
-
- bar = Option('--bar',
- possible_origins=('mozconfig',))
-- with self.assertRaisesRegexp(InvalidOptionError,
-+ with self.assertRaisesRegex(InvalidOptionError,
- "--bar can not be set by command-line. Values are accepted from: mozconfig"):
- helper.handle(bar)
-
- baz = Option(env='BAZ',
- possible_origins=('implied',))
-- with self.assertRaisesRegexp(InvalidOptionError,
-+ with self.assertRaisesRegex(InvalidOptionError,
- "BAZ=1 can not be set by environment. Values are accepted from: implied"):
- helper.handle(baz)
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_toolchain_configure.py (refactored)
-@@ -2,12 +2,12 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import logging
- import os
-
--from StringIO import StringIO
-+from io import StringIO
-
- from mozunit import main
-
-@@ -291,9 +291,9 @@
- compiler = sandbox._value_for(sandbox[var])
- # Add var on both ends to make it clear which of the
- # variables is failing the test when that happens.
-- self.assertEquals((var, compiler), (var, result))
-+ self.assertEqual((var, compiler), (var, result))
- except SystemExit:
-- self.assertEquals((var, result),
-+ self.assertEqual((var, result),
- (var, self.out.getvalue().strip()))
- return
-
-@@ -471,7 +471,7 @@
- # We'll try gcc and clang, but since there is no gcc (gcc-x.y doesn't
- # count), find clang.
- paths = {
-- k: v for k, v in self.PATHS.iteritems()
-+ k: v for k, v in self.PATHS.items()
- if os.path.basename(k) not in ('gcc', 'g++')
- }
- self.do_toolchain_test(paths, {
-@@ -506,7 +506,7 @@
- # Even if there are gcc-x.y or clang-x.y compilers available, we
- # don't try them. This could be considered something to improve.
- paths = {
-- k: v for k, v in self.PATHS.iteritems()
-+ k: v for k, v in self.PATHS.items()
- if os.path.basename(k) not in ('gcc', 'g++', 'clang', 'clang++')
- }
- self.do_toolchain_test(paths, {
-@@ -687,7 +687,7 @@
- def test_not_gcc(self):
- # We won't pick GCC if it's the only thing available.
- paths = {
-- k: v for k, v in self.PATHS.iteritems()
-+ k: v for k, v in self.PATHS.items()
- if os.path.basename(k) not in ('clang', 'clang++')
- }
- self.do_toolchain_test(paths, {
-@@ -851,7 +851,7 @@
- def test_clang_cl(self):
- # We'll pick clang-cl if msvc can't be found.
- paths = {
-- k: v for k, v in self.PATHS.iteritems()
-+ k: v for k, v in self.PATHS.items()
- if os.path.basename(k) != 'cl'
- }
- self.do_toolchain_test(paths, {
-@@ -862,7 +862,7 @@
- def test_gcc(self):
- # We'll pick GCC if msvc and clang-cl can't be found.
- paths = {
-- k: v for k, v in self.PATHS.iteritems()
-+ k: v for k, v in self.PATHS.items()
- if os.path.basename(k) not in ('cl', 'clang-cl')
- }
- self.do_toolchain_test(paths, {
-@@ -881,7 +881,7 @@
- def test_clang(self):
- # We'll pick clang if nothing else is found.
- paths = {
-- k: v for k, v in self.PATHS.iteritems()
-+ k: v for k, v in self.PATHS.items()
- if os.path.basename(k) not in ('cl', 'clang-cl', 'gcc')
- }
- self.do_toolchain_test(paths, {
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_toolchain_helpers.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_toolchain_helpers.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import copy
- import re
-@@ -10,7 +10,7 @@
- import unittest
-
- from fnmatch import fnmatch
--from StringIO import StringIO
-+from io import StringIO
- from textwrap import dedent
-
- from mozunit import (
-@@ -43,7 +43,7 @@
- # Hack around it enough that the configure tests work properly.
- context = self.context
- def normalize_numbers(value):
-- if isinstance(value, types.StringTypes):
-+ if isinstance(value, (str,)):
- if value[-1:] == 'L' and value[:-1].isdigit():
- value = int(value[:-1])
- return value
-@@ -53,7 +53,7 @@
- return self.HAS_FEATURE.sub(r'\1\2', expr)
- self.context = self.Context(
- (normalize_has_feature(k), normalize_numbers(v))
-- for k, v in context.iteritems()
-+ for k, v in context.items()
- )
- try:
- return Preprocessor.do_if(self, normalize_has_feature(expression),
-@@ -95,7 +95,7 @@
- input.name = 'foo'
- pp.do_include(input)
-
-- self.assertEquals(pp.out.getvalue(), '1 . 2 . c "D"')
-+ self.assertEqual(pp.out.getvalue(), '1 . 2 . c "D"')
-
- def test_condition(self):
- pp = CompilerPreprocessor({
-@@ -125,7 +125,7 @@
- input.name = 'foo'
- pp.do_include(input)
-
-- self.assertEquals('IFDEF_A\nIF_A\nIF_B\nIF_NOT_C\n', pp.out.getvalue())
-+ self.assertEqual('IFDEF_A\nIF_A\nIF_B\nIF_NOT_C\n', pp.out.getvalue())
-
-
- class FakeCompiler(dict):
-@@ -164,9 +164,9 @@
- '''
- def __init__(self, *definitions):
- for definition in definitions:
-- if all(not isinstance(d, dict) for d in definition.itervalues()):
-+ if all(not isinstance(d, dict) for d in definition.values()):
- definition = {None: definition}
-- for key, value in definition.iteritems():
-+ for key, value in definition.items():
- self.setdefault(key, {}).update(value)
-
- def __call__(self, stdin, args):
-@@ -178,14 +178,14 @@
- pp = CompilerPreprocessor(self[None])
-
- def apply_defn(defn):
-- for k, v in defn.iteritems():
-+ for k, v in defn.items():
- if v is False:
- if k in pp.context:
- del pp.context[k]
- else:
- pp.context[k] = v
-
-- for glob, defn in self.iteritems():
-+ for glob, defn in self.items():
- if glob and not glob.startswith('-') and fnmatch(file, glob):
- apply_defn(defn)
-
-@@ -216,7 +216,7 @@
- 'A': '1',
- 'B': '2',
- })
-- self.assertEquals(compiler(None, ['-E', 'file']),
-+ self.assertEqual(compiler(None, ['-E', 'file']),
- (0, '1 2 C', ''))
-
- compiler = FakeCompiler({
-@@ -238,25 +238,25 @@
- 'B': '42',
- },
- })
-- self.assertEquals(compiler(None, ['-E', 'file']),
-+ self.assertEqual(compiler(None, ['-E', 'file']),
- (0, '1 2 C', ''))
-- self.assertEquals(compiler(None, ['-E', '-foo', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-foo', 'file']),
- (0, '1 2 foo', ''))
-- self.assertEquals(compiler(None, ['-E', '-bar', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-bar', 'file']),
- (0, '1 bar bar', ''))
-- self.assertEquals(compiler(None, ['-E', '-qux', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-qux', 'file']),
- (0, '1 B C', ''))
-- self.assertEquals(compiler(None, ['-E', '-foo', '-bar', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-foo', '-bar', 'file']),
- (0, '1 bar bar', ''))
-- self.assertEquals(compiler(None, ['-E', '-bar', '-foo', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-bar', '-foo', 'file']),
- (0, '1 bar foo', ''))
-- self.assertEquals(compiler(None, ['-E', '-bar', '-qux', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-bar', '-qux', 'file']),
- (0, '1 B bar', ''))
-- self.assertEquals(compiler(None, ['-E', '-qux', '-bar', 'file']),
-+ self.assertEqual(compiler(None, ['-E', '-qux', '-bar', 'file']),
- (0, '1 bar bar', ''))
-- self.assertEquals(compiler(None, ['-E', 'file.c']),
-+ self.assertEqual(compiler(None, ['-E', 'file.c']),
- (0, '1 42 C', ''))
-- self.assertEquals(compiler(None, ['-E', '-bar', 'file.c']),
-+ self.assertEqual(compiler(None, ['-E', '-bar', 'file.c']),
- (0, '1 bar bar', ''))
-
- def test_multiple_definitions(self):
-@@ -267,7 +267,7 @@
- 'C': 3,
- })
-
-- self.assertEquals(compiler, {
-+ self.assertEqual(compiler, {
- None: {
- 'A': 1,
- 'B': 2,
-@@ -282,7 +282,7 @@
- 'C': 3,
- })
-
-- self.assertEquals(compiler, {
-+ self.assertEqual(compiler, {
- None: {
- 'A': 1,
- 'B': 4,
-@@ -302,7 +302,7 @@
- },
- })
-
-- self.assertEquals(compiler, {
-+ self.assertEqual(compiler, {
- None: {
- 'A': 1,
- 'B': 4,
-@@ -330,7 +330,7 @@
- },
- })
-
-- self.assertEquals(compiler, {
-+ self.assertEqual(compiler, {
- None: {
- 'A': 1,
- 'B': 2,
-@@ -370,7 +370,7 @@
- def __add__(self, other):
- assert isinstance(other, dict)
- result = copy.deepcopy(self.__dict__)
-- for k, v in other.iteritems():
-+ for k, v in other.items():
- if k == 'flags':
- result.setdefault(k, []).extend(v)
- else:
-@@ -381,7 +381,7 @@
- class TestCompilerResult(unittest.TestCase):
- def test_compiler_result(self):
- result = CompilerResult()
-- self.assertEquals(result.__dict__, {
-+ self.assertEqual(result.__dict__, {
- 'wrapper': [],
- 'compiler': mozpath.abspath(''),
- 'version': '',
-@@ -397,7 +397,7 @@
- language='C',
- flags=['-std=gnu99'],
- )
-- self.assertEquals(result.__dict__, {
-+ self.assertEqual(result.__dict__, {
- 'wrapper': [],
- 'compiler': mozpath.abspath('/usr/bin/gcc'),
- 'version': '4.2.1',
-@@ -407,7 +407,7 @@
- })
-
- result2 = result + {'flags': ['-m32']}
-- self.assertEquals(result2.__dict__, {
-+ self.assertEqual(result2.__dict__, {
- 'wrapper': [],
- 'compiler': mozpath.abspath('/usr/bin/gcc'),
- 'version': '4.2.1',
-@@ -416,14 +416,14 @@
- 'flags': ['-std=gnu99', '-m32'],
- })
- # Original flags are untouched.
-- self.assertEquals(result.flags, ['-std=gnu99'])
-+ self.assertEqual(result.flags, ['-std=gnu99'])
-
- result3 = result + {
- 'compiler': '/usr/bin/gcc-4.7',
- 'version': '4.7.3',
- 'flags': ['-m32'],
- }
-- self.assertEquals(result3.__dict__, {
-+ self.assertEqual(result3.__dict__, {
- 'wrapper': [],
- 'compiler': mozpath.abspath('/usr/bin/gcc-4.7'),
- 'version': '4.7.3',
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_toolkit_moz_configure.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import os
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_util.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/configure/test_util.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, print_function, unicode_literals
-+
-
- import logging
- import os
-@@ -11,7 +11,7 @@
- import unittest
- import sys
-
--from StringIO import StringIO
-+from io import StringIO
-
- from mozunit import main
- from mozpack import path as mozpath
-@@ -434,11 +434,11 @@
- except SystemExit as e:
- status = e.code
-
-- self.assertEquals(status, 0)
-+ self.assertEqual(status, 0)
- quote_char = "'"
- if getpreferredencoding().lower() == 'utf-8':
- quote_char = '\u00B4'.encode('utf-8')
-- self.assertEquals(out.getvalue().strip(), quote_char)
-+ self.assertEqual(out.getvalue().strip(), quote_char)
-
-
- class TestVersion(unittest.TestCase):
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/controller/test_ccachestats.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/controller/test_ccachestats.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import unittest
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/controller/test_clobber.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/controller/test_clobber.py (refactored)
-@@ -2,14 +2,14 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
- import shutil
- import tempfile
- import unittest
-
--from StringIO import StringIO
-+from io import StringIO
-
- from mozunit import main
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/frontend/test_context.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/frontend/test_context.py (refactored)
-@@ -36,7 +36,7 @@
- 'baz': (dict, dict, ''),
- })
-
-- self.assertEqual(test.keys(), [])
-+ self.assertEqual(list(test.keys()), [])
-
- self.assertEqual(test['foo'], 0)
-
-@@ -84,12 +84,12 @@
- 'baz': (dict, list, ''),
- })
-
-- self.assertEqual(test.keys(), [])
-+ self.assertEqual(list(test.keys()), [])
-
- with self.assertRaises(ValueError):
- test.update(bar=True, foo={})
-
-- self.assertEqual(test.keys(), [])
-+ self.assertEqual(list(test.keys()), [])
-
- test.update(bar=True, foo=1)
-
-@@ -258,19 +258,19 @@
- self.assertEqual(lines[-1].strip(), '')
-
- def test_documentation_formatting(self):
-- for typ, inp, doc in VARIABLES.values():
-+ for typ, inp, doc in list(VARIABLES.values()):
- self._verify_doc(doc)
-
-- for attr, args, doc in FUNCTIONS.values():
-+ for attr, args, doc in list(FUNCTIONS.values()):
- self._verify_doc(doc)
-
-- for func, typ, doc in SPECIAL_VARIABLES.values():
-+ for func, typ, doc in list(SPECIAL_VARIABLES.values()):
- self._verify_doc(doc)
-
-- for name, cls in SUBCONTEXTS.items():
-+ for name, cls in list(SUBCONTEXTS.items()):
- self._verify_doc(cls.__doc__)
-
-- for name, v in cls.VARIABLES.items():
-+ for name, v in list(cls.VARIABLES.items()):
- self._verify_doc(v[2])
-
-
-@@ -631,7 +631,7 @@
- class TestTypedRecord(unittest.TestCase):
-
- def test_fields(self):
-- T = ContextDerivedTypedRecord(('field1', unicode),
-+ T = ContextDerivedTypedRecord(('field1', str),
- ('field2', list))
- inst = T(None)
- self.assertEqual(inst.field1, '')
-@@ -647,7 +647,7 @@
- inst.field3 = []
-
- def test_coercion(self):
-- T = ContextDerivedTypedRecord(('field1', unicode),
-+ T = ContextDerivedTypedRecord(('field1', str),
- ('field2', list))
- inst = T(None)
- inst.field1 = 3
-@@ -673,45 +673,45 @@
- def test_single_bug_component(self):
- c = Context({})
- f = Files(c, pattern='**')
-- f['BUG_COMPONENT'] = (u'Product1', u'Component1')
-+ f['BUG_COMPONENT'] = ('Product1', 'Component1')
-
- files = {'moz.build': f}
- self.assertEqual(Files.aggregate(files), {
-- 'bug_component_counts': [((u'Product1', u'Component1'), 1)],
-- 'recommended_bug_component': (u'Product1', u'Component1'),
-+ 'bug_component_counts': [(('Product1', 'Component1'), 1)],
-+ 'recommended_bug_component': ('Product1', 'Component1'),
- })
-
- def test_multiple_bug_components(self):
- c = Context({})
- f1 = Files(c, pattern='**')
-- f1['BUG_COMPONENT'] = (u'Product1', u'Component1')
-+ f1['BUG_COMPONENT'] = ('Product1', 'Component1')
-
- f2 = Files(c, pattern='**')
-- f2['BUG_COMPONENT'] = (u'Product2', u'Component2')
-+ f2['BUG_COMPONENT'] = ('Product2', 'Component2')
-
- files = {'a': f1, 'b': f2, 'c': f1}
- self.assertEqual(Files.aggregate(files), {
- 'bug_component_counts': [
-- ((u'Product1', u'Component1'), 2),
-- ((u'Product2', u'Component2'), 1),
-+ (('Product1', 'Component1'), 2),
-+ (('Product2', 'Component2'), 1),
- ],
-- 'recommended_bug_component': (u'Product1', u'Component1'),
-+ 'recommended_bug_component': ('Product1', 'Component1'),
- })
-
- def test_no_recommended_bug_component(self):
- """If there is no clear count winner, we don't recommend a bug component."""
- c = Context({})
- f1 = Files(c, pattern='**')
-- f1['BUG_COMPONENT'] = (u'Product1', u'Component1')
-+ f1['BUG_COMPONENT'] = ('Product1', 'Component1')
-
- f2 = Files(c, pattern='**')
-- f2['BUG_COMPONENT'] = (u'Product2', u'Component2')
-+ f2['BUG_COMPONENT'] = ('Product2', 'Component2')
-
- files = {'a': f1, 'b': f2}
- self.assertEqual(Files.aggregate(files), {
- 'bug_component_counts': [
-- ((u'Product1', u'Component1'), 1),
-- ((u'Product2', u'Component2'), 1),
-+ (('Product1', 'Component1'), 1),
-+ (('Product2', 'Component2'), 1),
- ],
- 'recommended_bug_component': None,
- })
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/frontend/test_emitter.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/frontend/test_emitter.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
- import unittest
-@@ -204,7 +204,7 @@
- def test_use_yasm(self):
- # When yasm is not available, this should raise.
- reader = self.reader('use-yasm')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'yasm is not available'):
- self.read_topsrcdir(reader)
-
-@@ -267,25 +267,25 @@
- o = objs[0]
- self.assertIsInstance(o, GeneratedFile)
- self.assertEqual(o.outputs, ('bar.c',))
-- self.assertRegexpMatches(o.script, 'script.py$')
-+ self.assertRegex(o.script, 'script.py$')
- self.assertEqual(o.method, 'make_bar')
- self.assertEqual(o.inputs, [])
-
- def test_generated_files_no_script(self):
- reader = self.reader('generated-files-no-script')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Script for generating bar.c does not exist'):
- self.read_topsrcdir(reader)
-
- def test_generated_files_no_inputs(self):
- reader = self.reader('generated-files-no-inputs')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Input for generating foo.c does not exist'):
- self.read_topsrcdir(reader)
-
- def test_generated_files_no_python_script(self):
- reader = self.reader('generated-files-no-python-script')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Script for generating bar.c does not end in .py'):
- self.read_topsrcdir(reader)
-
-@@ -314,7 +314,7 @@
- Missing files in EXPORTS is an error.
- '''
- reader = self.reader('exports-missing')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'File listed in EXPORTS does not exist:'):
- self.read_topsrcdir(reader)
-
-@@ -323,7 +323,7 @@
- An objdir file in EXPORTS that is not in GENERATED_FILES is an error.
- '''
- reader = self.reader('exports-missing-generated')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Objdir file listed in EXPORTS not in GENERATED_FILES:'):
- self.read_topsrcdir(reader)
-
-@@ -360,7 +360,7 @@
-
- def test_test_harness_files_root(self):
- reader = self.reader('test-harness-files-root')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Cannot install files to the root of TEST_HARNESS_FILES'):
- self.read_topsrcdir(reader)
-
-@@ -413,14 +413,14 @@
- """A missing manifest file should result in an error."""
- reader = self.reader('test-manifest-missing-manifest')
-
-- with self.assertRaisesRegexp(BuildReaderError, 'IOError: Missing files'):
-+ with self.assertRaisesRegex(BuildReaderError, 'IOError: Missing files'):
- self.read_topsrcdir(reader)
-
- def test_empty_test_manifest_rejected(self):
- """A test manifest without any entries is rejected."""
- reader = self.reader('test-manifest-empty')
-
-- with self.assertRaisesRegexp(SandboxValidationError, 'Empty test manifest'):
-+ with self.assertRaisesRegex(SandboxValidationError, 'Empty test manifest'):
- self.read_topsrcdir(reader)
-
-
-@@ -428,7 +428,7 @@
- """A test manifest with no tests but support-files is not supported."""
- reader = self.reader('test-manifest-just-support')
-
-- with self.assertRaisesRegexp(SandboxValidationError, 'Empty test manifest'):
-+ with self.assertRaisesRegex(SandboxValidationError, 'Empty test manifest'):
- self.read_topsrcdir(reader)
-
- def test_test_manifest_dupe_support_files(self):
-@@ -437,7 +437,7 @@
- """
- reader = self.reader('test-manifest-dupes')
-
-- with self.assertRaisesRegexp(SandboxValidationError, 'bar.js appears multiple times '
-+ with self.assertRaisesRegex(SandboxValidationError, 'bar.js appears multiple times '
- 'in a test manifest under a support-files field, please omit the duplicate entry.'):
- self.read_topsrcdir(reader)
-
-@@ -454,7 +454,7 @@
- mozpath.join(o.install_prefix, "absolute-support.ini"),
- mozpath.join(o.install_prefix, "test_file.js"),
- ]
-- paths = sorted([v[0] for v in o.installs.values()])
-+ paths = sorted([v[0] for v in list(o.installs.values())])
- self.assertEqual(paths, expected)
-
- @unittest.skip('Bug 1304316 - Items in the second set but not the first')
-@@ -481,7 +481,7 @@
- """A non-existent shared support file reference produces an error."""
- reader = self.reader('test-manifest-shared-missing')
-
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'entry in support-files not present in the srcdir'):
- self.read_topsrcdir(reader)
-
-@@ -500,7 +500,7 @@
- mozpath.normpath(mozpath.join(o.install_prefix, "subdir/support.txt")),
- mozpath.normpath(mozpath.join(o.install_prefix, "subdir/test_foo.html")),
- ]
-- paths = sorted([v[0] for v in o.installs.values()])
-+ paths = sorted([v[0] for v in list(o.installs.values())])
- self.assertEqual(paths, expected)
-
- def test_test_manifest_install_includes(self):
-@@ -518,7 +518,7 @@
- mozpath.normpath(mozpath.join(o.install_prefix, "subdir/mochitest.ini")),
- mozpath.normpath(mozpath.join(o.install_prefix, "subdir/test_foo.html")),
- ]
-- paths = sorted([v[0] for v in o.installs.values()])
-+ paths = sorted([v[0] for v in list(o.installs.values())])
- self.assertEqual(paths, expected)
-
- def test_test_manifest_includes(self):
-@@ -541,7 +541,7 @@
- def test_python_unit_test_missing(self):
- """Missing files in PYTHON_UNIT_TESTS should raise."""
- reader = self.reader('test-python-unit-test-missing')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Path specified in PYTHON_UNIT_TESTS does not exist:'):
- self.read_topsrcdir(reader)
-
-@@ -635,7 +635,7 @@
- self.assertEqual(external_normalized, m.get('external', set()))
-
- self.assertEqual(len(o.installs), len(m['installs']))
-- for path in o.installs.keys():
-+ for path in list(o.installs.keys()):
- self.assertTrue(path.startswith(o.directory))
- relpath = path[len(o.directory)+1:]
-
-@@ -648,7 +648,7 @@
- def test_test_manifest_unmatched_generated(self):
- reader = self.reader('test-manifest-unmatched-generated')
-
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'entry in generated-files not present elsewhere'):
- self.read_topsrcdir(reader),
-
-@@ -672,7 +672,7 @@
- """Missing test files should result in error."""
- reader = self.reader('test-manifest-missing-test-file')
-
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'lists test that does not exist: test_missing.html'):
- self.read_topsrcdir(reader)
-
-@@ -680,7 +680,7 @@
- """Missing test files should result in error, even when the test list is not filtered."""
- reader = self.reader('test-manifest-missing-test-file-unfiltered')
-
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'lists test that does not exist: missing.js'):
- self.read_topsrcdir(reader)
-
-@@ -794,20 +794,20 @@
- self.assertIsInstance(obj.path, Path)
-
- def test_jar_manifests_multiple_files(self):
-- with self.assertRaisesRegexp(SandboxValidationError, 'limited to one value'):
-+ with self.assertRaisesRegex(SandboxValidationError, 'limited to one value'):
- reader = self.reader('jar-manifests-multiple-files')
- self.read_topsrcdir(reader)
-
- def test_xpidl_module_no_sources(self):
- """XPIDL_MODULE without XPIDL_SOURCES should be rejected."""
-- with self.assertRaisesRegexp(SandboxValidationError, 'XPIDL_MODULE '
-+ with self.assertRaisesRegex(SandboxValidationError, 'XPIDL_MODULE '
- 'cannot be defined'):
- reader = self.reader('xpidl-module-no-sources')
- self.read_topsrcdir(reader)
-
- def test_missing_local_includes(self):
- """LOCAL_INCLUDES containing non-existent directories should be rejected."""
-- with self.assertRaisesRegexp(SandboxValidationError, 'Path specified in '
-+ with self.assertRaisesRegex(SandboxValidationError, 'Path specified in '
- 'LOCAL_INCLUDES does not exist'):
- reader = self.reader('missing-local-includes')
- self.read_topsrcdir(reader)
-@@ -852,7 +852,7 @@
- '.S': ['g.S'],
- '.s': ['h.s', 'i.asm'],
- }
-- for suffix, files in expected.items():
-+ for suffix, files in list(expected.items()):
- sources = suffix_map[suffix]
- self.assertEqual(
- sources.files,
-@@ -905,7 +905,7 @@
- '.S': ['g.S'],
- '.s': ['h.s', 'i.asm'],
- }
-- for suffix, files in expected.items():
-+ for suffix, files in list(expected.items()):
- sources = suffix_map[suffix]
- self.assertEqual(
- sources.files,
-@@ -931,7 +931,7 @@
- '.c': ['d.c'],
- '.mm': ['e.mm', 'f.mm'],
- }
-- for suffix, files in expected.items():
-+ for suffix, files in list(expected.items()):
- sources = suffix_map[suffix]
- self.assertEqual(
- sources.files,
-@@ -956,7 +956,7 @@
- '.mm': ['objc1.mm', 'objc2.mm'],
- '.c': ['c1.c', 'c2.c'],
- }
-- for suffix, files in expected.items():
-+ for suffix, files in list(expected.items()):
- sources = suffix_map[suffix]
- self.assertEqual(
- sources.files,
-@@ -982,7 +982,7 @@
- '.mm': ['objc1.mm', 'objc2.mm'],
- '.c': ['c1.c', 'c2.c'],
- }
-- for suffix, files in expected.items():
-+ for suffix, files in list(expected.items()):
- sources = suffix_map[suffix]
- self.assertEqual(
- sources.files,
-@@ -1005,11 +1005,11 @@
-
- expected = {'install.rdf', 'main.js'}
- for f in files:
-- self.assertTrue(unicode(f) in expected)
-+ self.assertTrue(str(f) in expected)
-
- def test_missing_final_target_pp_files(self):
- """Test that FINAL_TARGET_PP_FILES with missing files throws errors."""
-- with self.assertRaisesRegexp(SandboxValidationError, 'File listed in '
-+ with self.assertRaisesRegex(SandboxValidationError, 'File listed in '
- 'FINAL_TARGET_PP_FILES does not exist'):
- reader = self.reader('dist-files-missing')
- self.read_topsrcdir(reader)
-@@ -1017,49 +1017,49 @@
- def test_final_target_pp_files_non_srcdir(self):
- '''Test that non-srcdir paths in FINAL_TARGET_PP_FILES throws errors.'''
- reader = self.reader('final-target-pp-files-non-srcdir')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Only source directory paths allowed in FINAL_TARGET_PP_FILES:'):
- self.read_topsrcdir(reader)
-
- def test_rust_library_no_cargo_toml(self):
- '''Test that defining a RustLibrary without a Cargo.toml fails.'''
- reader = self.reader('rust-library-no-cargo-toml')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'No Cargo.toml file found'):
- self.read_topsrcdir(reader)
-
- def test_rust_library_name_mismatch(self):
- '''Test that defining a RustLibrary that doesn't match Cargo.toml fails.'''
- reader = self.reader('rust-library-name-mismatch')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'library.*does not match Cargo.toml-defined package'):
- self.read_topsrcdir(reader)
-
- def test_rust_library_no_lib_section(self):
- '''Test that a RustLibrary Cargo.toml with no [lib] section fails.'''
- reader = self.reader('rust-library-no-lib-section')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Cargo.toml for.* has no \\[lib\\] section'):
- self.read_topsrcdir(reader)
-
- def test_rust_library_no_profile_section(self):
- '''Test that a RustLibrary Cargo.toml with no [profile] section fails.'''
- reader = self.reader('rust-library-no-profile-section')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Cargo.toml for.* has no \\[profile\\.dev\\] section'):
- self.read_topsrcdir(reader)
-
- def test_rust_library_invalid_crate_type(self):
- '''Test that a RustLibrary Cargo.toml has a permitted crate-type.'''
- reader = self.reader('rust-library-invalid-crate-type')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'crate-type.* is not permitted'):
- self.read_topsrcdir(reader)
-
- def test_rust_library_non_abort_panic(self):
- '''Test that a RustLibrary Cargo.toml has `panic = "abort" set'''
- reader = self.reader('rust-library-non-abort-panic')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'does not specify `panic = "abort"`'):
- self.read_topsrcdir(reader)
-
-@@ -1072,15 +1072,15 @@
- self.assertEqual(len(objs), 1)
- lib = objs[0]
- self.assertIsInstance(lib, RustLibrary)
-- self.assertRegexpMatches(lib.lib_name, "random_crate")
-- self.assertRegexpMatches(lib.import_name, "random_crate")
-- self.assertRegexpMatches(lib.basename, "random-crate")
-+ self.assertRegex(lib.lib_name, "random_crate")
-+ self.assertRegex(lib.import_name, "random_crate")
-+ self.assertRegex(lib.basename, "random-crate")
-
- def test_multiple_rust_libraries(self):
- '''Test that linking multiple Rust libraries throws an error'''
- reader = self.reader('multiple-rust-libraries',
- extra_substs=dict(RUST_TARGET='i686-pc-windows-msvc'))
-- with self.assertRaisesRegexp(LinkageMultipleRustLibrariesError,
-+ with self.assertRaisesRegex(LinkageMultipleRustLibrariesError,
- 'Cannot link multiple Rust libraries'):
- self.read_topsrcdir(reader)
-
-@@ -1107,7 +1107,7 @@
- mozpath.join(reader.config.topobjdir, 'dir2'),
- '/dir3',
- ]
-- self.assertEquals([p.full_path for p in objs[0].paths], expected)
-+ self.assertEqual([p.full_path for p in objs[0].paths], expected)
-
- def test_binary_components(self):
- """Test that IS_COMPONENT/NO_COMPONENTS_MANIFEST work properly."""
-@@ -1163,7 +1163,7 @@
- from GENERATED_FILES is an error.
- """
- reader = self.reader('test-symbols-file-objdir-missing-generated')
-- with self.assertRaisesRegexp(SandboxValidationError,
-+ with self.assertRaisesRegex(SandboxValidationError,
- 'Objdir file specified in SYMBOLS_FILE not in GENERATED_FILES:'):
- self.read_topsrcdir(reader)
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/frontend/test_namespaces.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/frontend/test_namespaces.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import unittest
-
-@@ -29,7 +29,7 @@
-
- class Piyo(ContextDerivedValue):
- def __init__(self, context, value):
-- if not isinstance(value, unicode):
-+ if not isinstance(value, str):
- raise ValueError
- self.context = context
- self.value = value
-@@ -48,9 +48,9 @@
-
-
- VARIABLES = {
-- 'HOGE': (unicode, unicode, None),
-- 'FUGA': (Fuga, unicode, None),
-- 'PIYO': (Piyo, unicode, None),
-+ 'HOGE': (str, str, None),
-+ 'FUGA': (Fuga, str, None),
-+ 'PIYO': (Piyo, str, None),
- 'HOGERA': (ContextDerivedTypedList(Piyo, StrictOrderingOnAppendList),
- list, None),
- 'HOGEHOGE': (ContextDerivedTypedListWithItems(
-@@ -104,7 +104,7 @@
- self.assertEqual(e[1], 'set_type')
- self.assertEqual(e[2], 'HOGE')
- self.assertEqual(e[3], True)
-- self.assertEqual(e[4], unicode)
-+ self.assertEqual(e[4], str)
-
- def test_key_checking(self):
- # Checking for existence of a key should not populate the key if it
-@@ -127,7 +127,7 @@
- self.assertEqual(e[1], 'set_type')
- self.assertEqual(e[2], 'FUGA')
- self.assertEqual(e[3], False)
-- self.assertEqual(e[4], unicode)
-+ self.assertEqual(e[4], str)
-
- ns['FUGA'] = 'fuga'
- self.assertIsInstance(ns['FUGA'], Fuga)
-@@ -150,7 +150,7 @@
- self.assertEqual(e[1], 'set_type')
- self.assertEqual(e[2], 'PIYO')
- self.assertEqual(e[3], False)
-- self.assertEqual(e[4], unicode)
-+ self.assertEqual(e[4], str)
-
- ns['PIYO'] = 'piyo'
- self.assertIsInstance(ns['PIYO'], Piyo)
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/frontend/test_reader.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/frontend/test_reader.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
- import sys
-@@ -423,7 +423,7 @@
- 'simple/base.cpp',
- ])
-
-- for path, pattern_set in expected.items():
-+ for path, pattern_set in list(expected.items()):
- self.assertEqual(v[path].test_files,
- expected[path])
-
-@@ -438,7 +438,7 @@
- 'default/tests/reftests/**']),
- }
-
-- for path, pattern_set in expected.items():
-+ for path, pattern_set in list(expected.items()):
- self.assertEqual(v[path].test_files,
- expected[path])
-
-@@ -454,7 +454,7 @@
- 'tagged/src/bar.jsm': set(['tagged/**.js']),
- }
-
-- for path, pattern_set in expected_patterns.items():
-+ for path, pattern_set in list(expected_patterns.items()):
- self.assertEqual(v[path].test_files,
- expected_patterns[path])
-
-@@ -462,7 +462,7 @@
- 'tagged/src/submodule/foo.js': set(['submodule']),
- 'tagged/src/bar.jsm': set([]),
- }
-- for path, pattern_set in expected_tags.items():
-+ for path, pattern_set in list(expected_tags.items()):
- self.assertEqual(v[path].test_tags,
- expected_tags[path])
-
-@@ -470,7 +470,7 @@
- 'tagged/src/bar.jsm': set(['browser-chrome']),
- 'tagged/src/submodule/foo.js': set([]),
- }
-- for path, pattern_set in expected_flavors.items():
-+ for path, pattern_set in list(expected_flavors.items()):
- self.assertEqual(v[path].test_flavors,
- expected_flavors[path])
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/frontend/test_sandbox.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/test/frontend/test_sandbox.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
- import shutil
-@@ -345,7 +345,7 @@
- sandbox = MozbuildSandbox(Context(VARIABLES, config))
-
- self.assertEqual(sandbox['CONFIG']['BAD_UTF8'],
-- u'\ufffd\ufffd\ufffd\ufffd:')
-+ '\ufffd\ufffd\ufffd\ufffd:')
-
- def test_invalid_exports_set_base(self):
- sandbox = self.sandbox()
-@@ -525,7 +525,7 @@
- source = 'a = foo(1, 2)'
- sandbox.exec_source(source, 'foo.mozbuild')
-
-- self.assertEquals(sandbox['a'], (Foo, int))
-+ self.assertEqual(sandbox['a'], (Foo, int))
- finally:
- del FUNCTIONS['foo']
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/archive.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/archive.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import bz2
- import gzip
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/copier.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/copier.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import os
- import stat
-@@ -109,7 +109,7 @@
- '''
- Return all paths stored in the container, in the order they were added.
- '''
-- return self._files.keys()
-+ return list(self._files.keys())
-
- def __len__(self):
- '''
-@@ -142,7 +142,7 @@
- for path, file in registry:
- (...)
- '''
-- return self._files.iteritems()
-+ return iter(self._files.items())
-
- def required_directories(self):
- '''
-@@ -151,7 +151,7 @@
- unspecified (virtual) root directory (and do not include said root
- directory).
- '''
-- return set(k for k, v in self._required_directories.items() if v > 0)
-+ return set(k for k, v in list(self._required_directories.items()) if v > 0)
-
-
- class FileRegistrySubtree(object):
-@@ -263,7 +263,7 @@
-
- Returns a FileCopyResult that details what changed.
- '''
-- assert isinstance(destination, basestring)
-+ assert isinstance(destination, str)
- assert not os.path.exists(destination) or os.path.isdir(destination)
-
- result = FileCopyResult()
-@@ -531,7 +531,7 @@
- def exists(self):
- return self.deflater is not None
-
-- if isinstance(dest, basestring):
-+ if isinstance(dest, str):
- dest = Dest(dest)
- assert isinstance(dest, Dest)
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/errors.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/errors.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import sys
- from contextlib import contextmanager
-@@ -97,7 +97,7 @@
- if self._count is None:
- raise ErrorMessage(msg)
- self._count += 1
-- print >>self.out, msg
-+ print(msg, file=self.out)
-
- def fatal(self, msg):
- self._handle(self.FATAL, msg)
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/executables.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/executables.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import os
- import struct
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/files.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/files.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import errno
- import os
-@@ -57,7 +57,7 @@
-
- def _copyfile(src, dest):
- # False indicates `dest` should be overwritten if it exists already.
-- if isinstance(src, unicode) and isinstance(dest, unicode):
-+ if isinstance(src, str) and isinstance(dest, str):
- _CopyFileW(src, dest, False)
- elif isinstance(src, str) and isinstance(dest, str):
- _CopyFileA(src, dest, False)
-@@ -145,13 +145,13 @@
- # - keep file type (e.g. S_IFREG)
- ret = stat.S_IFMT(mode)
- # - expand user read and execute permissions to everyone
-- if mode & 0400:
-- ret |= 0444
-- if mode & 0100:
-- ret |= 0111
-+ if mode & 0o400:
-+ ret |= 0o444
-+ if mode & 0o100:
-+ ret |= 0o111
- # - keep user write permissions
-- if mode & 0200:
-- ret |= 0200
-+ if mode & 0o200:
-+ ret |= 0o200
- # - leave away sticky bit, setuid, setgid
- return ret
-
-@@ -164,7 +164,7 @@
- disabled when skip_if_older is False.
- Returns whether a copy was actually performed (True) or not (False).
- '''
-- if isinstance(dest, basestring):
-+ if isinstance(dest, str):
- dest = Dest(dest)
- else:
- assert isinstance(dest, Dest)
-@@ -258,11 +258,11 @@
- '''
- def copy(self, dest, skip_if_older=True):
- real_dest = dest
-- if not isinstance(dest, basestring):
-+ if not isinstance(dest, str):
- fd, dest = mkstemp()
- os.close(fd)
- os.remove(dest)
-- assert isinstance(dest, basestring)
-+ assert isinstance(dest, str)
- # If File.copy didn't actually copy because dest is newer, check the
- # file sizes. If dest is smaller, it means it is already stripped and
- # elfhacked, so we can skip.
-@@ -299,7 +299,7 @@
- File.__init__(self, path)
-
- def copy(self, dest, skip_if_older=True):
-- assert isinstance(dest, basestring)
-+ assert isinstance(dest, str)
-
- # The logic in this function is complicated by the fact that symlinks
- # aren't universally supported. So, where symlinks aren't supported, we
-@@ -400,7 +400,7 @@
- self.required = required
-
- def copy(self, dest, skip_if_older=True):
-- if isinstance(dest, basestring):
-+ if isinstance(dest, str):
- dest = Dest(dest)
- else:
- assert isinstance(dest, Dest)
-@@ -432,7 +432,7 @@
- '''
- Invokes the preprocessor to create the destination file.
- '''
-- if isinstance(dest, basestring):
-+ if isinstance(dest, str):
- dest = Dest(dest)
- else:
- assert isinstance(dest, Dest)
-@@ -563,7 +563,7 @@
- the individual XPTs to link.
- skip_if_older is ignored.
- '''
-- if isinstance(dest, basestring):
-+ if isinstance(dest, str):
- dest = Dest(dest)
- assert isinstance(dest, Dest)
-
-@@ -1014,7 +1014,7 @@
- from mozpack.copier import FileRegistry
- self.files = FileRegistry()
-
-- for base, finder in sorted(finders.iteritems()):
-+ for base, finder in sorted(finders.items()):
- if self.files.contains(base):
- self.files.remove(base)
- for p, f in finder.find(''):
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/hg.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/hg.py (refactored)
-@@ -27,7 +27,7 @@
- # do not wish to do so, delete this exception statement from your
- # version.
-
--from __future__ import absolute_import
-+
-
- import mercurial.error as error
- import mercurial.hg as hg
-@@ -56,7 +56,7 @@
-
- Accepts a Mercurial localrepo and changectx instance.
- """
-- if isinstance(repo, (str, unicode)):
-+ if isinstance(repo, str):
- path = repo
- repo = hg.repository(hgui.ui(), repo)
- else:
-@@ -85,7 +85,7 @@
- return self._get(path)
-
- def _get(self, path):
-- if isinstance(path, unicode):
-+ if isinstance(path, str):
- path = path.encode('utf-8', 'replace')
-
- try:
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/manifests.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/manifests.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import, unicode_literals
-+
-
- from contextlib import contextmanager
- import json
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/mozjar.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/mozjar.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- from io import BytesIO
- import struct
-@@ -13,8 +13,9 @@
- ZIP_DEFLATED,
- )
- from collections import OrderedDict
--from urlparse import urlparse, ParseResult
-+from urllib.parse import urlparse, ParseResult
- import mozpack.path as mozpath
-+from functools import reduce
-
- JAR_STORED = ZIP_STORED
- JAR_DEFLATED = ZIP_DEFLATED
-@@ -68,7 +69,7 @@
- an instance with empty fields.
- '''
- assert self.MAGIC and isinstance(self.STRUCT, OrderedDict)
-- self.size_fields = set(t for t in self.STRUCT.itervalues()
-+ self.size_fields = set(t for t in self.STRUCT.values()
- if not t in JarStruct.TYPE_MAPPING)
- self._values = {}
- if data:
-@@ -90,7 +91,7 @@
- # For all fields used as other fields sizes, keep track of their value
- # separately.
- sizes = dict((t, 0) for t in self.size_fields)
-- for name, t in self.STRUCT.iteritems():
-+ for name, t in self.STRUCT.items():
- if t in JarStruct.TYPE_MAPPING:
- value, size = JarStruct.get_data(t, data[offset:])
- else:
-@@ -109,7 +110,7 @@
- Initialize an instance with empty fields.
- '''
- self.signature = self.MAGIC
-- for name, t in self.STRUCT.iteritems():
-+ for name, t in self.STRUCT.items():
- if name in self.size_fields:
- continue
- self._values[name] = 0 if t in JarStruct.TYPE_MAPPING else ''
-@@ -134,9 +135,9 @@
- from self.STRUCT.
- '''
- serialized = struct.pack('<I', self.signature)
-- sizes = dict((t, name) for name, t in self.STRUCT.iteritems()
-+ sizes = dict((t, name) for name, t in self.STRUCT.items()
- if not t in JarStruct.TYPE_MAPPING)
-- for name, t in self.STRUCT.iteritems():
-+ for name, t in self.STRUCT.items():
- if t in JarStruct.TYPE_MAPPING:
- format, size = JarStruct.TYPE_MAPPING[t]
- if name in sizes:
-@@ -155,7 +156,7 @@
- variable length fields.
- '''
- size = JarStruct.TYPE_MAPPING['uint32'][1]
-- for name, type in self.STRUCT.iteritems():
-+ for name, type in self.STRUCT.items():
- if type in JarStruct.TYPE_MAPPING:
- size += JarStruct.TYPE_MAPPING[type][1]
- else:
-@@ -176,7 +177,7 @@
- return key in self._values
-
- def __iter__(self):
-- return self._values.iteritems()
-+ return iter(self._values.items())
-
- def __repr__(self):
- return "<%s %s>" % (self.__class__.__name__,
-@@ -374,7 +375,7 @@
- preload = JarStruct.get_data('uint32', self._data)[0]
- entries = OrderedDict()
- offset = self._cdir_end['cdir_offset']
-- for e in xrange(self._cdir_end['cdir_entries']):
-+ for e in range(self._cdir_end['cdir_entries']):
- entry = JarCdirEntry(self._data[offset:])
- offset += entry.size
- # Creator host system. 0 is MSDOS, 3 is Unix
-@@ -385,7 +386,7 @@
- xattr = entry['external_attr']
- # Skip directories
- if (host == 0 and xattr & 0x10) or (host == 3 and
-- xattr & (040000 << 16)):
-+ xattr & (0o40000 << 16)):
- continue
- entries[entry['filename']] = entry
- if entry['offset'] < preload:
-@@ -436,7 +437,7 @@
- for file in jarReader:
- ...
- '''
-- for entry in self.entries.itervalues():
-+ for entry in self.entries.values():
- yield self._getreader(entry)
-
- def __getitem__(self, name):
-@@ -529,7 +530,7 @@
- headers = {}
- preload_size = 0
- # Prepare central directory entries
-- for entry, content in self._contents.itervalues():
-+ for entry, content in self._contents.values():
- header = JarLocalFileHeader()
- for name in entry.STRUCT:
- if name in header:
-@@ -544,7 +545,7 @@
- end['disk_entries'] = len(self._contents)
- end['cdir_entries'] = end['disk_entries']
- end['cdir_size'] = reduce(lambda x, y: x + y[0].size,
-- self._contents.values(), 0)
-+ list(self._contents.values()), 0)
- # On optimized archives, store the preloaded size and the central
- # directory entries, followed by the first end of central directory.
- if self._optimize:
-@@ -553,18 +554,18 @@
- if preload_size:
- preload_size += offset
- self._data.write(struct.pack('<I', preload_size))
-- for entry, _ in self._contents.itervalues():
-+ for entry, _ in self._contents.values():
- entry['offset'] += offset
- self._data.write(entry.serialize())
- self._data.write(end.serialize())
- # Store local file entries followed by compressed data
-- for entry, content in self._contents.itervalues():
-+ for entry, content in self._contents.values():
- self._data.write(headers[entry].serialize())
- self._data.write(content)
- # On non optimized archives, store the central directory entries.
- if not self._optimize:
- end['cdir_offset'] = offset
-- for entry, _ in self._contents.itervalues():
-+ for entry, _ in self._contents.values():
- self._data.write(entry.serialize())
- # Store the end of central directory.
- self._data.write(end.serialize())
-@@ -599,7 +600,7 @@
- deflater = data
- else:
- deflater = Deflater(compress, compress_level=self._compress_level)
-- if isinstance(data, basestring):
-+ if isinstance(data, str):
- deflater.write(data)
- elif hasattr(data, 'read'):
- if hasattr(data, 'seek'):
-@@ -615,7 +616,7 @@
- # Set creator host system (upper byte of creator_version)
- # to 3 (Unix) so mode is honored when there is one.
- entry['creator_version'] |= 3 << 8
-- entry['external_attr'] = (mode & 0xFFFF) << 16L
-+ entry['external_attr'] = (mode & 0xFFFF) << 16
- if deflater.compressed:
- entry['min_version'] = 20 # Version 2.0 supports deflated streams
- entry['general_flag'] = 2 # Max compression
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/path.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/path.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import posixpath
- import os
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/unify.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/unify.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- from mozpack.files import (
- BaseFinder,
-@@ -73,7 +73,7 @@
- creating the instance.
- skip_if_older is ignored.
- '''
-- assert isinstance(dest, basestring)
-+ assert isinstance(dest, str)
- tmpfiles = []
- try:
- for e in self._executables:
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/chrome/flags.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/chrome/flags.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import re
- from distutils.version import LooseVersion
-@@ -250,7 +250,7 @@
- flags.match(application='foo', appversion='3.5') returns True
- flags.match(application='foo', appversion='3.0') returns False
- '''
-- for name, value in filter.iteritems():
-+ for name, value in filter.items():
- if not name in self:
- continue
- if not self[name].matches(value):
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/chrome/manifest.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/chrome/manifest.py (refactored)
-@@ -2,11 +2,11 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import re
- import os
--from urlparse import urlparse
-+from urllib.parse import urlparse
- import mozpack.path as mozpath
- from mozpack.chrome.flags import Flags
- from mozpack.errors import errors
-@@ -321,7 +321,7 @@
- return self.serialize(self.contractID, self.cid)
-
- # All manifest classes by their type name.
--MANIFESTS_TYPES = dict([(c.type, c) for c in globals().values()
-+MANIFESTS_TYPES = dict([(c.type, c) for c in list(globals().values())
- if type(c) == type and issubclass(c, ManifestEntry)
- and hasattr(c, 'type') and c.type])
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/packager/__init__.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/packager/__init__.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- from mozbuild.preprocessor import Preprocessor
- import re
-@@ -50,7 +50,7 @@
- '''
- Split [1, 2, 3, 4, 5, 6, 7] into [(1, 2, 3), (4, 5, 6)].
- '''
-- return zip(*[iter(lst)] * 3)
-+ return list(zip(*[iter(lst)] * 3))
-
- KEY_VALUE_RE = re.compile(r'''
- \s* # optional whitespace.
-@@ -118,7 +118,7 @@
- destdir = options.pop('destdir', '')
- if options:
- errors.fatal('Malformed manifest: options %s not recognized'
-- % options.keys())
-+ % list(options.keys()))
- return Component(name, destdir=destdir)
-
-
-@@ -328,7 +328,7 @@
-
- bases = self.get_bases()
- broken_bases = sorted(
-- m for m, includer in self._included_manifests.iteritems()
-+ m for m, includer in self._included_manifests.items()
- if mozpath.basedir(m, bases) != mozpath.basedir(includer, bases))
- for m in broken_bases:
- errors.fatal('"%s" is included from "%s", which is outside "%s"' %
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/packager/formats.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/packager/formats.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- from mozpack.chrome.manifest import (
- Manifest,
-@@ -11,7 +11,7 @@
- ManifestBinaryComponent,
- ManifestResource,
- )
--from urlparse import urlparse
-+from urllib.parse import urlparse
- import mozpack.path as mozpath
- from mozpack.files import (
- ManifestFile,
-@@ -89,7 +89,7 @@
- Return the deepest base directory containing the given path.
- '''
- self._frozen_bases = True
-- base = mozpath.basedir(path, self._sub_formatter.keys())
-+ base = mozpath.basedir(path, list(self._sub_formatter.keys()))
- relpath = mozpath.relpath(path, base) if base else path
- return base, relpath
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/packager/l10n.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/packager/l10n.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- '''
- Replace localized parts of a packaged directory with data from a langpack
-@@ -162,7 +162,7 @@
- if not path:
- continue
- else:
-- base = mozpath.basedir(p, paths.keys())
-+ base = mozpath.basedir(p, list(paths.keys()))
- if base:
- subpath = mozpath.relpath(p, base)
- path = mozpath.normpath(mozpath.join(paths[base],
-@@ -206,7 +206,7 @@
- formatter.add(p, f)
-
- # Transplant jar preloading information.
-- for path, log in app_finder.jarlogs.iteritems():
-+ for path, log in app_finder.jarlogs.items():
- assert isinstance(copier[path], Jarrer)
- copier[path].preload([l.replace(locale, l10n_locale) for l in log])
-
-@@ -237,7 +237,7 @@
- finders = {
- '': l10n_finder,
- }
-- for base, path in extra_l10n.iteritems():
-+ for base, path in extra_l10n.items():
- finders[base] = UnpackFinder(path)
- l10n_finder = ComposedFinder(finders)
- copier = FileCopier()
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/packager/unpack.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/packager/unpack.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import mozpack.path as mozpath
- from mozpack.files import (
-@@ -27,7 +27,7 @@
- FlatFormatter,
- STARTUP_CACHE_PATHS,
- )
--from urlparse import urlparse
-+from urllib.parse import urlparse
-
-
- class UnpackFinder(BaseFinder):
-@@ -149,7 +149,7 @@
- if not any(f.compressed for f in jar):
- self.compressed = False
- if jar.last_preloaded:
-- jarlog = jar.entries.keys()
-+ jarlog = list(jar.entries.keys())
- self.jarlogs[path] = jarlog[:jarlog.index(jar.last_preloaded) + 1]
- return jar
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_archive.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_archive.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import absolute_import
-+
-
- import hashlib
- import os
-@@ -69,7 +69,7 @@
- try:
- tp = os.path.join(d, 'test.tar')
- with open(tp, 'wb') as fh:
-- with self.assertRaisesRegexp(ValueError, 'not a regular'):
-+ with self.assertRaisesRegex(ValueError, 'not a regular'):
- create_tar_from_files(fh, {'test': d})
- finally:
- shutil.rmtree(d)
-@@ -89,9 +89,9 @@
-
- tp = os.path.join(d, 'test.tar')
- with open(tp, 'wb') as fh:
-- with self.assertRaisesRegexp(ValueError, 'cannot add file with setuid'):
-+ with self.assertRaisesRegex(ValueError, 'cannot add file with setuid'):
- create_tar_from_files(fh, {'test': uid})
-- with self.assertRaisesRegexp(ValueError, 'cannot add file with setuid'):
-+ with self.assertRaisesRegex(ValueError, 'cannot add file with setuid'):
- create_tar_from_files(fh, {'test': gid})
- finally:
- shutil.rmtree(d)
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_chrome_manifest.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_chrome_manifest.py (refactored)
-@@ -24,7 +24,7 @@
- parse_manifest_line,
- )
- from mozpack.errors import errors, AccumulatedErrors
--from test_errors import TestErrors
-+from .test_errors import TestErrors
-
-
- class TestManifest(unittest.TestCase):
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_copier.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_copier.py (refactored)
-@@ -127,7 +127,7 @@
- 'bar': [],
- }
- reg = FileRegistry()
-- for path, parts in cases.iteritems():
-+ for path, parts in cases.items():
- self.assertEqual(reg._partial_paths(path), parts)
-
- def test_file_registry(self):
-@@ -414,7 +414,7 @@
- self.assertTrue(stat.S_ISDIR(st.st_mode))
-
- # What's worse, we have no record that dest was created.
-- self.assertEquals(len(result.updated_files), 0)
-+ self.assertEqual(len(result.updated_files), 0)
-
- # But we do have an erroneous record of an optional file
- # existing when it does not.
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_errors.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_errors.py (refactored)
-@@ -10,7 +10,7 @@
- import unittest
- import mozunit
- import sys
--from cStringIO import StringIO
-+from io import StringIO
-
-
- class TestErrors(object):
-@@ -30,14 +30,14 @@
- errors.warn('foo')
- self.assertRaises(ErrorMessage, errors.error, 'foo')
- self.assertRaises(ErrorMessage, errors.fatal, 'foo')
-- self.assertEquals(self.get_output(), ['Warning: foo'])
-+ self.assertEqual(self.get_output(), ['Warning: foo'])
-
- def test_ignore_errors(self):
- errors.ignore_errors()
- errors.warn('foo')
- errors.error('bar')
- self.assertRaises(ErrorMessage, errors.fatal, 'foo')
-- self.assertEquals(self.get_output(), ['Warning: foo', 'Warning: bar'])
-+ self.assertEqual(self.get_output(), ['Warning: foo', 'Warning: bar'])
-
- def test_no_error(self):
- with errors.accumulate():
-@@ -47,14 +47,14 @@
- with self.assertRaises(AccumulatedErrors):
- with errors.accumulate():
- errors.error('1')
-- self.assertEquals(self.get_output(), ['Error: 1'])
-+ self.assertEqual(self.get_output(), ['Error: 1'])
-
- def test_error_loop(self):
- with self.assertRaises(AccumulatedErrors):
- with errors.accumulate():
- for i in range(3):
- errors.error('%d' % i)
-- self.assertEquals(self.get_output(),
-+ self.assertEqual(self.get_output(),
- ['Error: 0', 'Error: 1', 'Error: 2'])
-
- def test_multiple_errors(self):
-@@ -67,7 +67,7 @@
- else:
- errors.error('%d' % i)
- errors.error('bar')
-- self.assertEquals(self.get_output(),
-+ self.assertEqual(self.get_output(),
- ['Error: foo', 'Error: 0', 'Error: 1',
- 'Warning: 2', 'Error: bar'])
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_files.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_files.py (refactored)
-@@ -61,7 +61,7 @@
- import mozpack.path as mozpath
- from tempfile import mkdtemp
- from io import BytesIO
--from StringIO import StringIO
-+from io import StringIO
- from xpt import Typelib
-
-
-@@ -146,7 +146,7 @@
- dest.write('qux')
- self.assertEqual(dest.read(), 'qux')
-
--rand = ''.join(random.choice(string.letters) for i in xrange(131597))
-+rand = ''.join(random.choice(string.letters) for i in range(131597))
- samples = [
- '',
- 'test',
-@@ -268,7 +268,7 @@
- def test_absolute_relative(self):
- AbsoluteSymlinkFile('/foo')
-
-- with self.assertRaisesRegexp(ValueError, 'Symlink target not absolute'):
-+ with self.assertRaisesRegex(ValueError, 'Symlink target not absolute'):
- AbsoluteSymlinkFile('./foo')
-
- def test_symlink_file(self):
-@@ -477,7 +477,7 @@
-
- class TestExistingFile(TestWithTmpDir):
- def test_required_missing_dest(self):
-- with self.assertRaisesRegexp(ErrorMessage, 'Required existing file'):
-+ with self.assertRaisesRegex(ErrorMessage, 'Required existing file'):
- f = ExistingFile(required=True)
- f.copy(self.tmppath('dest'))
-
-@@ -566,7 +566,7 @@
- with JarWriter(src) as jar:
- for content in samples:
- name = ''.join(random.choice(string.letters)
-- for i in xrange(8))
-+ for i in range(8))
- jar.add(name, content, compress=True)
- contents[name] = content
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_manifests.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_manifests.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import unicode_literals
-+
-
- import os
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_mozjar.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_mozjar.py (refactored)
-@@ -16,8 +16,8 @@
- from mozpack.test.test_files import MockDest
- import unittest
- import mozunit
--from cStringIO import StringIO
--from urllib import pathname2url
-+from io import StringIO
-+from urllib.request import pathname2url
- import mozpack.path as mozpath
- import os
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_packager_formats.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_packager_formats.py (refactored)
-@@ -128,7 +128,7 @@
- 'foo': read_interfaces(foo2_xpt.open())['foo'],
- 'bar': read_interfaces(bar_xpt.open())['bar'],
- },
-- }.iteritems()
-+ }.items()
- })
-
- RESULT_JAR = {
-@@ -174,7 +174,7 @@
- },
- 'addon1.xpi': {
- mozpath.relpath(p, 'addon1'): f
-- for p, f in RESULT_FLAT.iteritems()
-+ for p, f in RESULT_FLAT.items()
- if p.startswith('addon1/')
- },
- })
-@@ -234,7 +234,7 @@
- CONTENTS_WITH_BASE = {
- 'bases': {
- mozpath.join('base/root', b) if b else 'base/root': a
-- for b, a in CONTENTS['bases'].iteritems()
-+ for b, a in CONTENTS['bases'].items()
- },
- 'manifests': [
- m.move(mozpath.join('base/root', m.base))
-@@ -242,7 +242,7 @@
- ],
- 'files': {
- mozpath.join('base/root', p): f
-- for p, f in CONTENTS['files'].iteritems()
-+ for p, f in CONTENTS['files'].items()
- },
- }
-
-@@ -255,7 +255,7 @@
- def result_with_base(results):
- result = {
- mozpath.join('base/root', p): v
-- for p, v in results.iteritems()
-+ for p, v in results.items()
- }
- result.update(EXTRA_CONTENTS)
- return result
-@@ -271,13 +271,13 @@
-
-
- def fill_formatter(formatter, contents):
-- for base, is_addon in contents['bases'].items():
-+ for base, is_addon in list(contents['bases'].items()):
- formatter.add_base(base, is_addon)
-
- for manifest in contents['manifests']:
- formatter.add_manifest(manifest)
-
-- for k, v in contents['files'].iteritems():
-+ for k, v in contents['files'].items():
- if k.endswith('.xpt'):
- formatter.add_interfaces(k, v)
- else:
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_packager_l10n.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_packager_l10n.py (refactored)
-@@ -4,7 +4,7 @@
-
- import unittest
- import mozunit
--from test_packager import MockFinder
-+from .test_packager import MockFinder
- from mozpack.packager import l10n
- from mozpack.files import (
- GeneratedFile,
-@@ -118,7 +118,7 @@
-
- self.assertEqual(
- dict((p, f.open().read()) for p, f in copier),
-- dict((p, f.open().read()) for p, f in repacked.iteritems())
-+ dict((p, f.open().read()) for p, f in repacked.items())
- )
-
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_unify.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/test_unify.py (refactored)
-@@ -13,7 +13,7 @@
- from mozpack.files import FileFinder
- from mozpack.mozjar import JarWriter
- from mozpack.test.test_files import MockDest
--from cStringIO import StringIO
-+from io import StringIO
- import os
- import sys
- from mozpack.errors import (
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/support/minify_js_verify.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/test/support/minify_js_verify.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import print_function
-+
- import sys
-
-
---- thunderbird-52.9.0/mozilla/build/moz.configure/keyfiles.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ thunderbird-52.9.0/mozilla/build/moz.configure/keyfiles.configure 2018-07-10 07:57:16.030000000 +0000
-@@ -16,8 +16,8 @@
-
- @depends('--with-%s-keyfile' % name)
- @checking('for the %s key' % desc, lambda x: x and x is not no_key)
-- @imports(_from='__builtin__', _import='open')
-- @imports(_from='__builtin__', _import='IOError')
-+ @imports(_from='builtins', _import='open')
-+ @imports(_from='builtins', _import='IOError')
- def keyfile(value):
- if value:
- try:
---- thunderbird-52.9.0/mozilla/build/moz.configure/windows.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ thunderbird-52.9.0/mozilla/build/moz.configure/windows.configure 2018-07-10 07:57:25.210000000 +0000
-@@ -19,7 +19,7 @@
-
-
- @depends_win('--with-windows-version')
--@imports(_from='__builtin__', _import='ValueError')
-+@imports(_from='builtins', _import='ValueError')
- def valid_windows_version(value):
- if not value:
- die('Cannot build with --without-windows-version')
-@@ -56,8 +56,8 @@
- # 8.1.
- @imports('os')
- @imports('re')
--@imports(_from='__builtin__', _import='sorted')
--@imports(_from='__builtin__', _import='WindowsError')
-+@imports(_from='builtins', _import='sorted')
-+@imports(_from='builtins', _import='WindowsError')
- def get_sdk_dirs(sdk, subdir):
- def get_dirs_containing(sdk, stem, subdir):
- base = os.path.join(sdk, stem)
-@@ -102,7 +102,7 @@
- @depends_win(c_compiler, windows_sdk_dir, valid_windows_version,
- 'WINDOWSSDKDIR')
- @checking('for Windows SDK', valid_windows_sdk_dir_result)
--@imports(_from='__builtin__', _import='sorted')
-+@imports(_from='builtins', _import='sorted')
- @imports(_from='textwrap', _import='dedent')
- def valid_windows_sdk_dir(compiler, windows_sdk_dir, target_version,
- windows_sdk_dir_env):
-@@ -179,7 +179,7 @@
- @depends_win(windows_sdk_dir, 'WINDOWSSDKDIR')
- @checking('for Universal CRT SDK', valid_ucrt_sdk_dir_result)
- @imports('os')
--@imports(_from='__builtin__', _import='sorted')
-+@imports(_from='builtins', _import='sorted')
- @imports(_import='mozpack.path', _as='mozpath')
- def valid_ucrt_sdk_dir(windows_sdk_dir, windows_sdk_dir_env):
- if windows_sdk_dir_env:
---- thunderbird-52.9.0/mozilla/build/moz.configure/toolchain.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ thunderbird-52.9.0/mozilla/build/moz.configure/toolchain.configure 2018-07-10 07:57:28.830000000 +0000
-@@ -395,7 +395,7 @@
-
-
- @imports(_from='collections', _import='defaultdict')
--@imports(_from='__builtin__', _import='sorted')
-+@imports(_from='builtins', _import='sorted')
- def get_vc_paths(base):
- vc = defaultdict(lambda: defaultdict(dict))
- subkey = r'Microsoft\VisualStudio\VC\*\*\*\Compiler'
---- thunderbird-52.9.0/mozilla/build/moz.configure/util.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ thunderbird-52.9.0/mozilla/build/moz.configure/util.configure 2018-07-10 07:57:31.540000000 +0000
-@@ -234,7 +234,7 @@
- # ('19.0', 'x64', r'C:\...\amd64\cl.exe')
- # ('19.0', 'x86', r'C:\...\amd64_x86\cl.exe')
- @imports(_import='_winreg', _as='winreg')
--@imports(_from='__builtin__', _import='WindowsError')
-+@imports(_from='builtins', _import='WindowsError')
- @imports(_from='fnmatch', _import='fnmatch')
- def get_registry_values(pattern):
- def enum_helper(func, key):
---- thunderbird-52.9.0/mozilla/build/moz.configure/checks.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ thunderbird-52.9.0/mozilla/build/moz.configure/checks.configure 2018-07-10 07:57:35.630000000 +0000
-@@ -12,7 +12,7 @@
- # _declare_exceptions template, and add it to the return statement. Then
- # destructure in the assignment below the function declaration.
- @template
--@imports(_from='__builtin__', _import='Exception')
-+@imports(_from='builtins', _import='Exception')
- def _declare_exceptions():
- class FatalCheckError(Exception):
- '''An exception to throw from a function decorated with @checking.
---- thunderbird-52.9.0/mozilla/build/moz.configure/old.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ thunderbird-52.9.0/mozilla/build/moz.configure/old.configure 2018-07-10 07:57:38.970000000 +0000
-@@ -61,8 +61,8 @@
-
- @depends('OLD_CONFIGURE', mozconfig, autoconf, check_build_environment, shell,
- old_configure_assignments, build_project)
--@imports(_from='__builtin__', _import='open')
--@imports(_from='__builtin__', _import='print')
-+@imports(_from='builtins', _import='open')
-+@imports(_from='builtins', _import='print')
- @imports('glob')
- @imports('itertools')
- @imports('subprocess')
-@@ -302,8 +302,8 @@
- '--enable-calendar',
- '--enable-incomplete-external-linkage',
- )
--@imports(_from='__builtin__', _import='compile')
--@imports(_from='__builtin__', _import='open')
-+@imports(_from='builtins', _import='compile')
-+@imports(_from='builtins', _import='open')
- @imports('logging')
- @imports('os')
- @imports('subprocess')
---- thunderbird-52.9.0/mozilla/build/moz.configure/android-ndk.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ thunderbird-52.9.0/mozilla/build/moz.configure/android-ndk.configure 2018-07-10 07:57:41.120000000 +0000
-@@ -22,7 +22,7 @@
- default=min_android_version)
-
- @depends('--with-android-version', min_android_version)
--@imports(_from='__builtin__', _import='ValueError')
-+@imports(_from='builtins', _import='ValueError')
- def android_version(value, min_version):
- if not value:
- # Someone has passed --without-android-version.
---- thunderbird-52.9.0/mozilla/build/moz.configure/init.configure.old 2017-04-11 02:13:08.000000000 +0000
-+++ thunderbird-52.9.0/mozilla/build/moz.configure/init.configure 2018-07-10 07:57:44.330000000 +0000
-@@ -636,7 +636,7 @@
- # - otherwise, if we have "a" in GRE_MILESTONE, we're building Nightly or Aurora
- # - otherwise, we're building Release/Beta (define RELEASE_OR_BETA)
- @depends(check_build_environment, '--help')
--@imports(_from='__builtin__', _import='open')
-+@imports(_from='builtins', _import='open')
- def milestone(build_env, _):
- milestone_path = os.path.join(build_env.topsrcdir,
- 'config',
-diff -aur thunderbird-52.9.0/mozilla/config/mozunit.py mozjs-fixed/config/mozunit.py
---- thunderbird-52.9.0/mozilla/config/mozunit.py 2017-04-11 02:13:09.000000000 +0000
-+++ mozjs-fixed/config/mozunit.py 2018-07-10 08:19:37.770000000 +0000
-@@ -5,7 +5,7 @@
- from unittest import TextTestRunner as _TestRunner, TestResult as _TestResult
- import unittest
- import inspect
--from StringIO import StringIO
-+from io import StringIO
- import os
- import sys
-
-@@ -74,7 +74,7 @@
-
- def printFail(self, test, err):
- exctype, value, tb = err
-- message = value.message.splitlines()[0] if value.message else 'NO MESSAGE'
-+ message = str(value).splitlines()[0] if str(value) else 'NO MESSAGE'
- # Skip test runner traceback levels
- while tb and self._is_relevant_tb_level(tb):
- tb = tb.tb_next
-diff -aur thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/configenvironment.py mozjs-fixed/python/mozbuild/mozbuild/backend/configenvironment.py
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/configenvironment.py 2018-07-10 08:24:43.150000000 +0000
-+++ mozjs-fixed/python/mozbuild/mozbuild/backend/configenvironment.py 2018-07-10 08:15:12.650000000 +0000
-@@ -8,7 +8,8 @@
- import sys
-
- from collections import Iterable
--from types import StringTypes, ModuleType
-+from types import ModuleType
-+StringTypes = (str,)
-
- import mozpack.path as mozpath
-
-diff -aur thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/makeutil.py mozjs-fixed/python/mozbuild/mozbuild/makeutil.py
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/makeutil.py 2018-07-10 08:24:43.150000000 +0000
-+++ mozjs-fixed/python/mozbuild/mozbuild/makeutil.py 2018-07-10 08:20:05.230000000 +0000
-@@ -6,7 +6,6 @@
-
- import os
- import re
--from types import StringTypes
- from collections import Iterable
-
-
-@@ -103,19 +102,19 @@
-
- def add_targets(self, targets):
- '''Add additional targets to the rule.'''
-- assert isinstance(targets, Iterable) and not isinstance(targets, StringTypes)
-+ assert isinstance(targets, Iterable) and not isinstance(targets, str)
- self._targets.update(targets)
- return self
-
- def add_dependencies(self, deps):
- '''Add dependencies to the rule.'''
-- assert isinstance(deps, Iterable) and not isinstance(deps, StringTypes)
-+ assert isinstance(deps, Iterable) and not isinstance(deps, str)
- self._dependencies.update(deps)
- return self
-
- def add_commands(self, commands):
- '''Add commands to the rule.'''
-- assert isinstance(commands, Iterable) and not isinstance(commands, StringTypes)
-+ assert isinstance(commands, Iterable) and not isinstance(commands, str)
- self._commands.extend(commands)
- return self
-
-diff -aur thunderbird-52.9.0/mozilla/python/which/which.py mozjs-fixed/python/which/which.py
---- thunderbird-52.9.0/mozilla/python/which/which.py 2017-04-11 02:13:24.000000000 +0000
-+++ mozjs-fixed/python/which/which.py 2018-07-10 08:11:01.570000000 +0000
-@@ -280,17 +280,17 @@
- try:
- optlist, args = getopt.getopt(argv[1:], 'haVvqp:e:',
- ['help', 'all', 'version', 'verbose', 'quiet', 'path=', 'exts='])
-- except getopt.GetoptError, msg:
-+ except getopt.GetoptError as msg:
- sys.stderr.write("which: error: %s. Your invocation was: %s\n"\
- % (msg, argv))
- sys.stderr.write("Try 'which --help'.\n")
- return 1
- for opt, optarg in optlist:
- if opt in ('-h', '--help'):
-- print _cmdlnUsage
-+ print(_cmdlnUsage)
- return 0
- elif opt in ('-V', '--version'):
-- print "which %s" % __version__
-+ print("which %s" % __version__)
- return 0
- elif opt in ('-a', '--all'):
- all = 1
-@@ -318,9 +318,9 @@
- nmatches = 0
- for match in whichgen(arg, path=altpath, verbose=verbose, exts=exts):
- if verbose:
-- print "%s (%s)" % match
-+ print("%s (%s)" % match)
- else:
-- print match
-+ print(match)
- nmatches += 1
- if not all:
- break
-diff -aur thunderbird-52.9.0/mozilla/testing/mozbase/mozprocess/mozprocess/processhandler.py mozjs-fixed/testing/mozbase/mozprocess/mozprocess/processhandler.py
---- thunderbird-52.9.0/mozilla/testing/mozbase/mozprocess/mozprocess/processhandler.py 2017-04-11 02:13:06.000000000 +0000
-+++ mozjs-fixed/testing/mozbase/mozprocess/mozprocess/processhandler.py 2018-07-10 08:13:15.440000000 +0000
-@@ -11,7 +11,7 @@
- import threading
- import time
- import traceback
--from Queue import Queue, Empty
-+from queue import Queue, Empty
- from datetime import datetime
-
- __all__ = ['ProcessHandlerMixin', 'ProcessHandler', 'LogOutput',
-@@ -121,14 +121,14 @@
- thread = threading.current_thread().name
- print("DBG::MOZPROC PID:{} ({}) | {}".format(self.pid, thread, msg))
-
-- def __del__(self, _maxint=sys.maxint):
-+ def __del__(self, _maxint=sys.maxsize):
- if isWin:
- handle = getattr(self, '_handle', None)
- if handle:
- if hasattr(self, '_internal_poll'):
- self._internal_poll(_deadstate=_maxint)
- else:
-- self.poll(_deadstate=sys.maxint)
-+ self.poll(_deadstate=sys.maxsize)
- if handle or self._job or self._io_port:
- self._cleanup()
- else:
-@@ -267,7 +267,7 @@
- if not (can_create_job or can_nest_jobs):
- # Since we've warned, we just log info here to inform you
- # of the consequence of setting ignore_children = True
-- print "ProcessManager NOT managing child processes"
-+ print("ProcessManager NOT managing child processes")
-
- # create the process
- hp, ht, pid, tid = winprocess.CreateProcess(
-@@ -534,11 +534,11 @@
-
- if rc == winprocess.WAIT_TIMEOUT:
- # The process isn't dead, so kill it
-- print "Timed out waiting for process to close, attempting TerminateProcess"
-+ print("Timed out waiting for process to close, attempting TerminateProcess")
- self.kill()
- elif rc == winprocess.WAIT_OBJECT_0:
- # We caught WAIT_OBJECT_0, which indicates all is well
-- print "Single process terminated successfully"
-+ print("Single process terminated successfully")
- self.returncode = winprocess.GetExitCodeProcess(self._handle)
- else:
- # An error occured we should probably throw
-diff -aur thunderbird-52.9.0/mozilla/build/moz.configure/checks.configure mozjs-fixed/build/moz.configure/checks.configure
---- thunderbird-52.9.0/mozilla/build/moz.configure/checks.configure 2018-07-10 10:29:50.380000000 +0000
-+++ mozjs-fixed/build/moz.configure/checks.configure 2018-07-10 10:27:45.350000000 +0000
-@@ -52,7 +52,7 @@
- try:
- ret = func(*args, **kwargs)
- except FatalCheckError as e:
-- error = e.message
-+ error = str(e)
- display_ret = callback(ret) if callback else ret
- if display_ret is True:
- log.info('yes')
-diff -aur thunderbird-52.9.0/mozilla/build/moz.configure/init.configure mozjs-fixed/build/moz.configure/init.configure
---- thunderbird-52.9.0/mozilla/build/moz.configure/init.configure 2018-07-10 10:29:50.380000000 +0000
-+++ mozjs-fixed/build/moz.configure/init.configure 2018-07-10 10:23:19.960000000 +0000
-@@ -213,7 +213,7 @@
- def early_options():
- return set(
- option.env
-- for option in __sandbox__._options.itervalues()
-+ for option in list(__sandbox__._options.values())
- if option.env
- )
- return early_options
-@@ -297,7 +297,7 @@
- # There is also a quartet form:
- # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
- # But we can consider the "KERNEL-OPERATING_SYSTEM" as one.
-- cpu, manufacturer, os = triplet.split('-', 2)
-+ cpu, manufacturer, os = triplet.decode('utf-8').split('-', 2)
-
- # Autoconf uses config.sub to validate and canonicalize those triplets,
- # but the granularity of its results has never been satisfying to our
-@@ -727,7 +727,7 @@
- def all_configure_options(_):
- result = []
- previous = None
-- for option in __sandbox__._options.itervalues():
-+ for option in list(__sandbox__._options.values()):
- # __sandbox__._options contains items for both option.name and
- # option.env. But it's also an OrderedDict, meaning both are
- # consecutive.
-diff -aur thunderbird-52.9.0/mozilla/build/moz.configure/old.configure mozjs-fixed/build/moz.configure/old.configure
---- thunderbird-52.9.0/mozilla/build/moz.configure/old.configure 2018-07-10 10:29:50.380000000 +0000
-+++ mozjs-fixed/build/moz.configure/old.configure 2018-07-10 10:19:19.880000000 +0000
-@@ -360,7 +360,7 @@
- # Every variation of the exec() function I tried led to:
- # SyntaxError: unqualified exec is not allowed in function 'main' it
- # contains a nested function with free variables
-- exec code in raw_config
-+ exec(code, raw_config)
-
- # Ensure all the flags known to old-configure appear in the
- # @old_configure_options above.
-diff -aur thunderbird-52.9.0/mozilla/build/moz.configure/toolchain.configure mozjs-fixed/build/moz.configure/toolchain.configure
---- thunderbird-52.9.0/mozilla/build/moz.configure/toolchain.configure 2018-07-10 10:29:50.380000000 +0000
-+++ mozjs-fixed/build/moz.configure/toolchain.configure 2018-07-10 10:28:13.020000000 +0000
-@@ -244,7 +244,7 @@
- ('CPU', CPU_preprocessor_checks),
- ('KERNEL', kernel_preprocessor_checks),
- ):
-- for n, (value, condition) in enumerate(preprocessor_checks.iteritems()):
-+ for n, (value, condition) in enumerate(preprocessor_checks.items()):
- check += dedent('''\
- #%(if)s %(condition)s
- %%%(name)s "%(value)s"
-@@ -278,9 +278,9 @@
- data = {}
- for line in result.splitlines():
- if line.startswith(b'%'):
-- k, _, v = line.partition(' ')
-- k = k.lstrip('%')
-- data[k] = v.replace(' ', '').lstrip('"').rstrip('"')
-+ k, _, v = line.partition(b' ')
-+ k = k.lstrip(b'%').decode('utf-8')
-+ data[k] = v.replace(b' ', b'').lstrip(b'"').rstrip(b'"').decode('utf-8')
- log.debug('%s = %s', k, data[k])
-
- try:
-diff -aur thunderbird-52.9.0/mozilla/build/moz.configure/util.configure mozjs-fixed/build/moz.configure/util.configure
---- thunderbird-52.9.0/mozilla/build/moz.configure/util.configure 2018-07-10 10:29:50.380000000 +0000
-+++ mozjs-fixed/build/moz.configure/util.configure 2018-07-10 10:23:54.980000000 +0000
-@@ -299,6 +299,8 @@
- @imports(_from='mozbuild.configure.util', _import='Version', _as='_Version')
- def Version(v):
- 'A version number that can be compared usefully.'
-+ if isinstance(v, bytes):
-+ v = v.decode('utf-8')
- return _Version(v)
-
- # Denotes a deprecated option. Combines option() and @depends:
-diff -aur thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/__init__.py mozjs-fixed/python/mozbuild/mozbuild/configure/__init__.py
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/__init__.py 2018-07-10 10:29:50.350000000 +0000
-+++ mozjs-fixed/python/mozbuild/mozbuild/configure/__init__.py 2018-07-10 10:24:33.200000000 +0000
-@@ -97,6 +97,9 @@
- ', '.join(repr(d) for d in self.dependencies),
- )
-
-+ def __hash__(self):
-+ return hash((str(self.func), tuple(self.dependencies), self.when))
-+
-
- class CombinedDependsFunction(DependsFunction):
- def __init__(self, sandbox, func, dependencies):
-@@ -142,6 +145,9 @@
- def __ne__(self, other):
- return not self == other
-
-+ def __hash__(self):
-+ return hash((str(self.func), tuple(self.dependencies)))
-+
- class SandboxedGlobal(dict):
- '''Identifiable dict type for use as function global'''
-
-@@ -192,7 +198,8 @@
- b: __builtins__[b]
- for b in ('None', 'False', 'True', 'int', 'bool', 'any', 'all', 'len',
- 'list', 'tuple', 'set', 'dict', 'isinstance', 'getattr',
-- 'hasattr', 'enumerate', 'range', 'zip')
-+ 'hasattr', 'enumerate', 'range', 'zip', '__build_class__',
-+ 'bytes', 'exec')
- }, __import__=forbidden_import, str=str)
-
- # Expose a limited set of functions from os.path
-@@ -267,7 +274,7 @@
- return method
- def wrapped(*args, **kwargs):
- out_args = [
-- arg.decode(encoding) if isinstance(arg, str) else arg
-+ arg.decode(encoding) if isinstance(arg, bytes) else arg
- for arg in args
- ]
- return method(*out_args, **kwargs)
-diff -aur thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/options.py mozjs-fixed/python/mozbuild/mozbuild/configure/options.py
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/options.py 2018-07-10 10:29:50.350000000 +0000
-+++ mozjs-fixed/python/mozbuild/mozbuild/configure/options.py 2018-07-10 10:15:41.760000000 +0000
-@@ -65,6 +65,9 @@
- return '%s%s' % (self.__class__.__name__,
- super(OptionValue, self).__repr__())
-
-+ def __hash__(self):
-+ return hash(str(self))
-+
-
- class PositiveOptionValue(OptionValue):
- '''Represents the value for a positive option (--enable/--with/--foo)
-diff -aur thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/util.py mozjs-fixed/python/mozbuild/mozbuild/configure/util.py
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/configure/util.py 2018-07-10 10:29:50.350000000 +0000
-+++ mozjs-fixed/python/mozbuild/mozbuild/configure/util.py 2018-07-10 09:04:28.150000000 +0000
-@@ -200,7 +200,7 @@
- self._encoding = getpreferredencoding()
-
- def write(self, buf):
-- if self._encoding and isinstance(buf, str):
-+ if self._encoding and isinstance(buf, bytes):
- buf = buf.decode(self._encoding)
- lines = buf.splitlines()
- if not lines:
-diff -aur thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/virtualenv.py mozjs-fixed/python/mozbuild/mozbuild/virtualenv.py
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/virtualenv.py 2018-07-10 10:29:50.350000000 +0000
-+++ mozjs-fixed/python/mozbuild/mozbuild/virtualenv.py 2018-07-10 10:11:47.710000000 +0000
-@@ -108,7 +108,7 @@
- """
- ver = subprocess.check_output([python, '-c', 'import sys; print(sys.hexversion)']).rstrip()
- with open(self.exe_info_path, 'w') as fh:
-- fh.write("%s\n" % ver)
-+ fh.write("%s\n" % ver.decode('utf-8'))
- fh.write("%s\n" % os.path.getsize(python))
-
- def up_to_date(self, python=sys.executable):
-@@ -207,7 +207,7 @@
- return self.virtualenv_root
-
- def packages(self):
-- with file(self.manifest_path, 'rU') as fh:
-+ with open(self.manifest_path, 'rU') as fh:
- packages = [line.rstrip().split(':')
- for line in fh]
- return packages
-@@ -530,9 +530,9 @@
-
- our = LooseVersion('%d.%d.%d' % (major, minor, micro))
-
-- if major != MINIMUM_PYTHON_MAJOR or our < MINIMUM_PYTHON_VERSION:
-- log_handle.write('Python %s or greater (but not Python 3) is '
-- 'required to build. ' % MINIMUM_PYTHON_VERSION)
-+ if our < MINIMUM_PYTHON_VERSION:
-+ log_handle.write('Python %s or greater is required to build. '
-+ % MINIMUM_PYTHON_VERSION)
- log_handle.write('You are running Python %s.\n' % our)
-
- if os.name in ('nt', 'ce'):
-diff -aur thunderbird-52.9.0/mozilla/python/which/which.py mozjs-fixed/python/which/which.py
---- thunderbird-52.9.0/mozilla/python/which/which.py 2018-07-10 10:29:50.380000000 +0000
-+++ mozjs-fixed/python/which/which.py 2018-07-10 10:20:16.770000000 +0000
-@@ -243,7 +243,7 @@
- If no match is found for the command, a WhichError is raised.
- """
- try:
-- match = whichgen(command, path, verbose, exts).next()
-+ match = next(whichgen(command, path, verbose, exts))
- except StopIteration:
- raise WhichError("Could not find '%s' on the path." % command)
- return match
---- thunderbird-52.9.0/mozilla/build/moz.configure/old.configure.old 2018-07-10 10:32:48.550000000 +0000
-+++ thunderbird-52.9.0/mozilla/build/moz.configure/old.configure 2018-07-10 10:35:32.440000000 +0000
-@@ -107,7 +107,7 @@
-
- # Make old-configure append to config.log, where we put our own log.
- # This could be done with a m4 macro, but it's way easier this way
-- script = script.replace('>./config.log', '>>./config.log')
-+ script = script.replace(b'>./config.log', b'>>./config.log')
-
- with open(old_configure, 'wb') as fh:
- fh.write(script)
---- thunderbird-52.9.0/mozilla/build/subconfigure.py.old 2017-04-11 02:13:09.000000000 +0000
-+++ thunderbird-52.9.0/mozilla/build/subconfigure.py 2018-07-10 10:38:08.910000000 +0000
-@@ -27,7 +27,7 @@
- return super(Pool, cls).__new__(cls)
-
- def imap_unordered(self, fn, iterable):
-- return itertools.imap(fn, iterable)
-+ return map(fn, iterable)
-
- def close(self):
- pass
-@@ -131,11 +131,11 @@
- is_set = cache.get('ac_cv_env_%s_set' % precious) == 'set'
- value = cache.get('ac_cv_env_%s_value' % precious) if is_set else None
- if value != env.get(precious):
-- print 'Removing %s because of %s value change from:' \
-- % (data['cache-file'], precious)
-- print ' %s' % (value if value is not None else 'undefined')
-- print 'to:'
-- print ' %s' % env.get(precious, 'undefined')
-+ print('Removing %s because of %s value change from:' \
-+ % (data['cache-file'], precious))
-+ print(' %s' % (value if value is not None else 'undefined'))
-+ print('to:')
-+ print(' %s' % env.get(precious, 'undefined'))
- os.remove(data['cache-file'])
- return True
- return False
-@@ -333,8 +333,8 @@
- # We're going to run it ourselves.
- command += ['--no-create']
-
-- print prefix_lines('configuring', relobjdir)
-- print prefix_lines('running %s' % ' '.join(command[:-1]), relobjdir)
-+ print(prefix_lines('configuring', relobjdir))
-+ print(prefix_lines('running %s' % ' '.join(command[:-1]), relobjdir))
- sys.stdout.flush()
- try:
- output += subprocess.check_output(command,
-@@ -368,7 +368,7 @@
-
- if not skip_config_status:
- if skip_configure:
-- print prefix_lines('running config.status', relobjdir)
-+ print(prefix_lines('running config.status', relobjdir))
- sys.stdout.flush()
- try:
- output += subprocess.check_output([data['shell'], '-c',
-@@ -410,7 +410,7 @@
- pool = Pool(len(subconfigures))
- for relobjdir, returncode, output in \
- pool.imap_unordered(run, subconfigures):
-- print prefix_lines(output, relobjdir)
-+ print(prefix_lines(output, relobjdir))
- sys.stdout.flush()
- ret = max(returncode, ret)
- if ret:
---- thunderbird-52.9.0/mozilla/build/moz.configure/old.configure.old 2018-07-10 10:38:53.530000000 +0000
-+++ thunderbird-52.9.0/mozilla/build/moz.configure/old.configure 2018-07-10 10:41:32.560000000 +0000
-@@ -394,7 +394,7 @@
- def post_old_configure(raw_config):
- for k, v in raw_config['substs']:
- set_old_configure_config(
-- k[1:-1], v[1:-1] if isinstance(v, types.StringTypes) else v)
-+ k[1:-1], v[1:-1] if isinstance(v, str) else v)
-
-- for k, v in dict(raw_config['defines']).iteritems():
-+ for k, v in dict(raw_config['defines']).items():
- set_old_configure_define(k[1:-1], v[1:-1])
---- thunderbird-52.9.0/mozilla/configure.py (original)
-+++ thunderbird-52.9.0/mozilla/configure.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from __future__ import print_function, unicode_literals
-+
-
- import codecs
- import os
-@@ -45,11 +45,11 @@
-
- sanitized_config = {}
- sanitized_config['substs'] = {
-- k: sanitized_bools(v) for k, v in config.iteritems()
-+ k: sanitized_bools(v) for k, v in config.items()
- if k not in ('DEFINES', 'non_global_defines', 'TOPSRCDIR', 'TOPOBJDIR')
- }
- sanitized_config['defines'] = {
-- k: sanitized_bools(v) for k, v in config['DEFINES'].iteritems()
-+ k: sanitized_bools(v) for k, v in config['DEFINES'].items()
- }
- sanitized_config['non_global_defines'] = config['non_global_defines']
- sanitized_config['topsrcdir'] = config['TOPSRCDIR']
-@@ -71,7 +71,7 @@
- ''') % {'python': config['PYTHON'], 'encoding': encoding})
- # A lot of the build backend code is currently expecting byte
- # strings and breaks in subtle ways with unicode strings. (bug 1296508)
-- for k, v in sanitized_config.iteritems():
-+ for k, v in sanitized_config.items():
- fh.write('%s = encode(%s, encoding)\n' % (k, indented_repr(v)))
- fh.write("__all__ = ['topobjdir', 'topsrcdir', 'defines', "
- "'non_global_defines', 'substs', 'mozconfig']")
-@@ -88,7 +88,7 @@
- # executable permissions.
- os.chmod('config.status', 0o755)
- if config.get('MOZ_BUILD_APP') != 'js' or config.get('JS_STANDALONE'):
-- os.environ[b'WRITE_MOZINFO'] = b'1'
-+ os.environ['WRITE_MOZINFO'] = '1'
- from mozbuild.config_status import config_status
-
- # Some values in sanitized_config also have more complex types, such as
---- thunderbird-52.9.0/mozilla/python/blessings/blessings/__init__.py.old 2017-04-11 02:13:23.000000000 +0000
-+++ thunderbird-52.9.0/mozilla/python/blessings/blessings/__init__.py 2018-07-10 10:56:52.820000000 +0000
-@@ -333,7 +333,7 @@
- 'shadow', 'standout', 'subscript', 'superscript']))
-
-
--class ParametrizingString(unicode):
-+class ParametrizingString(str):
- """A Unicode string which can be called to parametrize it as a terminal capability"""
- def __new__(cls, formatting, normal=None):
- """Instantiate.
-@@ -343,7 +343,7 @@
- "normal" capability.
-
- """
-- new = unicode.__new__(cls, formatting)
-+ new = str.__new__(cls, formatting)
- new._normal = normal
- return new
-
-@@ -375,10 +375,10 @@
- raise
-
-
--class FormattingString(unicode):
-+class FormattingString(str):
- """A Unicode string which can be called upon a piece of text to wrap it in formatting"""
- def __new__(cls, formatting, normal):
-- new = unicode.__new__(cls, formatting)
-+ new = str.__new__(cls, formatting)
- new._normal = normal
- return new
-
-@@ -393,7 +393,7 @@
- return self + text + self._normal
-
-
--class NullCallableString(unicode):
-+class NullCallableString(str):
- """A dummy class to stand in for ``FormattingString`` and ``ParametrizingString``
-
- A callable bytestring that returns an empty Unicode when called with an int
-@@ -402,7 +402,7 @@
-
- """
- def __new__(cls):
-- new = unicode.__new__(cls, u'')
-+ new = str.__new__(cls, u'')
- return new
-
- def __call__(self, arg):
---- thunderbird-52.9.0/mozilla/testing/mozbase/mozfile/mozfile/mozfile.py (original)
-+++ thunderbird-52.9.0/mozilla/testing/mozbase/mozfile/mozfile/mozfile.py (refactored)
-@@ -6,7 +6,7 @@
-
- # We don't import all modules at the top for performance reasons. See Bug 1008943
-
--from __future__ import absolute_import
-+
-
- from contextlib import contextmanager
- import errno
-@@ -55,7 +55,7 @@
- try:
- bundle = zipfile.ZipFile(src)
- except Exception:
-- print "src: %s" % src
-+ print("src: %s" % src)
- raise
-
- namelist = bundle.namelist()
-@@ -161,8 +161,8 @@
-
- retry_count += 1
-
-- print '%s() failed for "%s". Reason: %s (%s). Retrying...' % \
-- (func.__name__, args, e.strerror, e.errno)
-+ print('%s() failed for "%s". Reason: %s (%s). Retrying...' % \
-+ (func.__name__, args, e.strerror, e.errno))
- time.sleep(retry_count * retry_delay)
- else:
- # If no exception has been thrown it should be done
-@@ -420,9 +420,9 @@
- Return True if thing looks like a URL.
- """
-
-- import urlparse
--
-- parsed = urlparse.urlparse(thing)
-+ import urllib.parse
-+
-+ parsed = urllib.parse.urlparse(thing)
- if 'scheme' in parsed:
- return len(parsed.scheme) >= 2
- else:
-@@ -436,7 +436,7 @@
- result of urllib2.urlopen()
- """
-
-- import urllib2
-+ import urllib.request, urllib.error, urllib.parse
-
- # handle file URLs separately due to python stdlib limitations
- if resource.startswith('file://'):
-@@ -446,4 +446,4 @@
- # if no scheme is given, it is a file path
-- return file(resource)
-+ return open(resource)
-
-- return urllib2.urlopen(resource)
-+ return urllib.request.urlopen(resource)
---- thunderbird-52.9.0/mozilla/testing/mozbase/mozinfo/mozinfo/mozinfo.py (original)
-+++ thunderbird-52.9.0/mozilla/testing/mozbase/mozinfo/mozinfo/mozinfo.py (refactored)
-@@ -8,7 +8,7 @@
- # linux) to the information; I certainly wouldn't want anyone parsing this
- # information and having behaviour depend on it
-
--from __future__ import absolute_import
-+
-
- import os
- import platform
-@@ -24,7 +24,7 @@
- class unknown(object):
- """marker class for unknown information"""
-
-- def __nonzero__(self):
-+ def __bool__(self):
- return False
-
- def __str__(self):
-@@ -184,7 +184,7 @@
- to a json file containing the new info.
- """
-
-- if isinstance(new_info, basestring):
-+ if isinstance(new_info, str):
- # lazy import
- import mozfile
- import json
-@@ -246,7 +246,7 @@
- update({})
-
- # exports
--__all__ = info.keys()
-+__all__ = list(info.keys())
- __all__ += ['is' + os_name.title() for os_name in choices['os']]
- __all__ += [
- 'info',
-@@ -284,17 +284,17 @@
-
- # print out choices if requested
- flag = False
-- for key, value in options.__dict__.items():
-+ for key, value in list(options.__dict__.items()):
- if value is True:
-- print '%s choices: %s' % (key, ' '.join([str(choice)
-- for choice in choices[key]]))
-+ print('%s choices: %s' % (key, ' '.join([str(choice)
-+ for choice in choices[key]])))
- flag = True
- if flag:
- return
-
- # otherwise, print out all info
-- for key, value in info.items():
-- print '%s: %s' % (key, value)
-+ for key, value in list(info.items()):
-+ print('%s: %s' % (key, value))
-
- if __name__ == '__main__':
- main()
---- thunderbird-52.9.0/mozilla/testing/mozbase/mozinfo/mozinfo/string_version.py.old 2017-04-11 02:13:06.000000000 +0000
-+++ thunderbird-52.9.0/mozilla/testing/mozbase/mozinfo/mozinfo/string_version.py 2018-07-10 11:10:56.140000000 +0000
-@@ -10,8 +10,10 @@
- A string version that can be compared with comparison operators.
- """
-
-+ def __new__(cls, value):
-+ return str.__new__(cls, value)
-+
- def __init__(self, vstring):
-- str.__init__(self, vstring)
- self.version = LooseVersion(vstring)
-
- def __repr__(self):
---- thunderbird-52.9.0/mozilla/testing/mozbase/manifestparser/manifestparser/manifestparser.py (original)
-+++ thunderbird-52.9.0/mozilla/testing/mozbase/manifestparser/manifestparser/manifestparser.py (refactored)
-@@ -2,7 +2,7 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this file,
- # You can obtain one at http://mozilla.org/MPL/2.0/.
-
--from StringIO import StringIO
-+from io import StringIO
- import json
- import fnmatch
- import os
-@@ -21,7 +21,7 @@
- __all__ = ['ManifestParser', 'TestManifest', 'convert']
-
- relpath = os.path.relpath
--string = (basestring,)
-+string = (str,)
-
-
- # path normalization
-@@ -178,7 +178,7 @@
-
- # otherwise an item
- # apply ancestor defaults, while maintaining current file priority
-- data = dict(self._ancestor_defaults.items() + data.items())
-+ data = dict(list(self._ancestor_defaults.items()) + list(data.items()))
-
- test = data
- test['name'] = section
-@@ -306,19 +306,19 @@
- # make some check functions
- if inverse:
- def has_tags(test):
-- return not tags.intersection(test.keys())
-+ return not tags.intersection(list(test.keys()))
-
- def dict_query(test):
-- for key, value in kwargs.items():
-+ for key, value in list(kwargs.items()):
- if test.get(key) == value:
- return False
- return True
- else:
- def has_tags(test):
-- return tags.issubset(test.keys())
-+ return tags.issubset(list(test.keys()))
-
- def dict_query(test):
-- for key, value in kwargs.items():
-+ for key, value in list(kwargs.items()):
- if test.get(key) != value:
- return False
- return True
-@@ -340,7 +340,7 @@
- """
- if tests is None:
- # Make sure to return all the manifests, even ones without tests.
-- return self.manifest_defaults.keys()
-+ return list(self.manifest_defaults.keys())
-
- manifests = []
- for test in tests:
-@@ -373,8 +373,8 @@
- raise IOError("Strict mode enabled, test paths must exist. "
- "The following test(s) are missing: %s" %
- json.dumps(missing_paths, indent=2))
-- print >> sys.stderr, "Warning: The following test(s) are missing: %s" % \
-- json.dumps(missing_paths, indent=2)
-+ print("Warning: The following test(s) are missing: %s" % \
-+ json.dumps(missing_paths, indent=2), file=sys.stderr)
- return missing
-
- def verifyDirectory(self, directories, pattern=None, extensions=None):
-@@ -385,7 +385,7 @@
- """
-
- files = set([])
-- if isinstance(directories, basestring):
-+ if isinstance(directories, str):
- directories = [directories]
-
- # get files in directories
-@@ -449,12 +449,12 @@
-
- # print the .ini manifest
- if global_tags or global_kwargs:
-- print >> fp, '[DEFAULT]'
-+ print('[DEFAULT]', file=fp)
- for tag in global_tags:
-- print >> fp, '%s =' % tag
-- for key, value in global_kwargs.items():
-- print >> fp, '%s = %s' % (key, value)
-- print >> fp
-+ print('%s =' % tag, file=fp)
-+ for key, value in list(global_kwargs.items()):
-+ print('%s = %s' % (key, value), file=fp)
-+ print(file=fp)
-
- for test in tests:
- test = test.copy() # don't overwrite
-@@ -465,7 +465,7 @@
- if self.rootdir:
- path = relpath(test['path'], self.rootdir)
- path = denormalize_path(path)
-- print >> fp, '[%s]' % path
-+ print('[%s]' % path, file=fp)
-
- # reserved keywords:
- reserved = ['path', 'name', 'here', 'manifest', 'relpath', 'ancestor-manifest']
-@@ -476,8 +476,8 @@
- continue
- if key in global_tags and not test[key]:
- continue
-- print >> fp, '%s = %s' % (key, test[key])
-- print >> fp
-+ print('%s = %s' % (key, test[key]), file=fp)
-+ print(file=fp)
-
- if close:
- # close the created file
-@@ -565,7 +565,7 @@
- message = "Missing test: '%s' does not exist!"
- if self.strict:
- raise IOError(message)
-- print >> sys.stderr, message + " Skipping."
-+ print(message + " Skipping.", file=sys.stderr)
- continue
- destination = os.path.join(rootdir, _relpath)
- shutil.copy(source, destination)
-@@ -578,7 +578,7 @@
- internal function to import directories
- """
-
-- if isinstance(pattern, basestring):
-+ if isinstance(pattern, str):
- patterns = [pattern]
- else:
- patterns = pattern
-@@ -670,9 +670,9 @@
- if (dirnames or filenames) and not (os.path.exists(manifest_path) and overwrite):
- with file(manifest_path, 'w') as manifest:
- for dirname in dirnames:
-- print >> manifest, '[include:%s]' % os.path.join(dirname, filename)
-+ print('[include:%s]' % os.path.join(dirname, filename), file=manifest)
- for _filename in filenames:
-- print >> manifest, '[%s]' % _filename
-+ print('[%s]' % _filename, file=manifest)
-
- # add to list of manifests
- manifest_dict.setdefault(directory, manifest_path)
-@@ -722,8 +722,8 @@
- for filename in filenames]
-
- # write to manifest
-- print >> write, '\n'.join(['[%s]' % denormalize_path(filename)
-- for filename in filenames])
-+ print('\n'.join(['[%s]' % denormalize_path(filename)
-+ for filename in filenames]), file=write)
-
- cls._walk_directories(directories, callback, pattern=pattern, ignore=ignore)
-
---- thunderbird-52.9.0/mozilla/testing/mozbase/manifestparser/manifestparser/cli.py (original)
-+++ thunderbird-52.9.0/mozilla/testing/mozbase/manifestparser/manifestparser/cli.py (refactored)
-@@ -81,7 +81,7 @@
- # parse the arguments
- try:
- kwargs, tags, args = parse_args(args)
-- except ParserError, e:
-+ except ParserError as e:
- self._parser.error(e.message)
-
- # make sure we have some manifests, otherwise it will
-@@ -132,7 +132,7 @@
- manifest = convert(args, pattern=options.pattern, ignore=options.ignore,
- write=options.in_place)
- if manifest:
-- print manifest
-+ print(manifest)
-
-
- class WriteCLI(CLICommand):
-@@ -146,7 +146,7 @@
- # parse the arguments
- try:
- kwargs, tags, args = parse_args(args)
-- except ParserError, e:
-+ except ParserError as e:
- self._parser.error(e.message)
-
- # make sure we have some manifests, otherwise it will
-@@ -175,9 +175,9 @@
- commands[args[0]](self._parser).parser().print_help()
- else:
- self._parser.print_help()
-- print '\nCommands:'
-+ print('\nCommands:')
- for command in sorted(commands):
-- print ' %s : %s' % (command, commands[command].__doc__.strip())
-+ print(' %s : %s' % (command, commands[command].__doc__.strip()))
-
-
- class UpdateCLI(CLICommand):
-@@ -190,7 +190,7 @@
- # parse the arguments
- try:
- kwargs, tags, args = parse_args(args)
-- except ParserError, e:
-+ except ParserError as e:
- self._parser.error(e.message)
-
- # make sure we have some manifests, otherwise it will
---- thunderbird-52.9.0/mozilla/testing/mozbase/manifestparser/manifestparser/expression.py (original)
-+++ thunderbird-52.9.0/mozilla/testing/mozbase/manifestparser/manifestparser/expression.py (refactored)
-@@ -275,7 +275,7 @@
- """
- if not isinstance(self.token, expected):
- raise Exception("Unexpected token!")
-- self.token = self.iter.next()
-+ self.token = next(self.iter)
-
- def expression(self, rbp=0):
- """
-@@ -283,11 +283,11 @@
- right binding power greater than rbp is encountered.
- """
- t = self.token
-- self.token = self.iter.next()
-+ self.token = next(self.iter)
- left = t.nud(self)
- while rbp < self.token.lbp:
- t = self.token
-- self.token = self.iter.next()
-+ self.token = next(self.iter)
- left = t.led(self, left)
- return left
-
-@@ -299,7 +299,7 @@
- """
- try:
- self.iter = self._tokenize()
-- self.token = self.iter.next()
-+ self.token = next(self.iter)
- return self.expression()
- except:
- extype, ex, tb = sys.exc_info()
-@@ -307,7 +307,7 @@
- raise ParseError("could not parse: "
- "%s\nexception: %svariables: %s" % (self.text,
- formatted,
-- self.valuemapping)), None, tb
-+ self.valuemapping)).with_traceback(tb)
-
- __call__ = parse
-
---- thunderbird-52.9.0/mozilla/testing/mozbase/manifestparser/manifestparser/filters.py (original)
-+++ thunderbird-52.9.0/mozilla/testing/mozbase/manifestparser/manifestparser/filters.py (refactored)
-@@ -92,7 +92,7 @@
- def __init__(self, *args, **kwargs):
- self.fmt_args = ', '.join(itertools.chain(
- [str(a) for a in args],
-- ['{}={}'.format(k, v) for k, v in kwargs.iteritems()]))
-+ ['{}={}'.format(k, v) for k, v in kwargs.items()]))
-
- def __eq__(self, other):
- if self.unique:
-@@ -249,7 +249,7 @@
- # be yielded for reporting purposes. Put them all in chunk 1 for
- # simplicity.
- if self.this_chunk == 1:
-- disabled_dirs = [v for k, v in tests_by_dir.iteritems()
-+ disabled_dirs = [v for k, v in tests_by_dir.items()
- if k not in ordered_dirs]
- for disabled_test in itertools.chain(*disabled_dirs):
- yield disabled_test
-@@ -326,7 +326,7 @@
-
- def __init__(self, tags):
- InstanceFilter.__init__(self, tags)
-- if isinstance(tags, basestring):
-+ if isinstance(tags, str):
- tags = [tags]
- self.tags = tags
-
-@@ -349,7 +349,7 @@
-
- def __init__(self, paths):
- InstanceFilter.__init__(self, paths)
-- if isinstance(paths, basestring):
-+ if isinstance(paths, str):
- paths = [paths]
- self.paths = paths
-
---- thunderbird-52.9.0/mozilla/testing/mozbase/manifestparser/manifestparser/ini.py (original)
-+++ thunderbird-52.9.0/mozilla/testing/mozbase/manifestparser/manifestparser/ini.py (refactored)
-@@ -27,7 +27,7 @@
- sections = []
- key = value = None
- section_names = set()
-- if isinstance(fp, basestring):
-- fp = file(fp)
-+ if isinstance(fp, str):
-+ fp = open(fp)
-
- # read the lines
-@@ -131,7 +131,7 @@
- 'support-files': '%s %s',
- }
- final_mapping = global_vars.copy()
-- for field_name, value in local_vars.items():
-+ for field_name, value in list(local_vars.items()):
- if field_name not in field_patterns or field_name not in global_vars:
- final_mapping[field_name] = value
- continue
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/util.py.old 2018-07-10 11:16:10.690000000 +0000
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/util.py 2018-07-10 23:36:02.250000000 +0000
-@@ -1254,10 +1254,10 @@
- encode(k, encoding): encode(v, encoding)
- for k, v in obj.items()
- }
-- if isinstance(obj, bytes):
-- return obj
- if isinstance(obj, str):
-- return obj.encode(encoding)
-+ return obj
-+ if isinstance(obj, bytes):
-+ return obj.decode(encoding)
- if isinstance(obj, Iterable):
- return [encode(i, encoding) for i in obj]
- return obj
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/util.py.old 2018-07-10 23:36:33.980000000 +0000
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/util.py 2018-07-10 23:41:51.900000000 +0000
-@@ -1179,6 +1179,9 @@
- POSSIBLE_VALUES = possible_values
- return EnumStringSubclass
-
-+ def __hash__(self):
-+ return hash(str(self))
-+
-
- def _escape_char(c):
- # str.encode('unicode_espace') doesn't escape quotes, presumably because
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/mozinfo.py.old 2018-07-10 23:42:19.390000000 +0000
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/mozinfo.py 2018-07-11 01:45:57.930000000 +0000
-@@ -155,6 +155,6 @@
- """
- build_conf = build_dict(config, env)
- if isinstance(file, str):
-- file = open(file, 'wb')
-+ file = open(file, 'w')
-
- json.dump(build_conf, file, sort_keys=True, indent=4)
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/jar.py.old 2018-07-11 01:46:26.540000000 +0000
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/jar.py 2018-07-11 02:02:36.010000000 +0000
-@@ -16,7 +16,7 @@
- import re
- import logging
- from time import localtime
--from MozZipFile import ZipFile
-+from zipfile import ZipFile
- from io import StringIO
- from collections import defaultdict
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/util.py.old 2018-07-11 02:05:38.530000000 +0000
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/util.py 2018-07-11 02:08:21.020000000 +0000
-@@ -987,8 +987,6 @@
- 'got %s, expected %s' % (fname,
- type(value), ftype))
-
-- super(TypedTuple, self).__init__(*args, **kwargs)
--
- TypedTuple._fields = fields
-
- return TypedTuple
---- thunderbird-52.9.0/mozilla/build/moz.configure/init.configure.old 2018-07-11 02:08:50.000000000 +0000
-+++ thunderbird-52.9.0/mozilla/build/moz.configure/init.configure 2018-07-11 04:04:26.600000000 +0000
-@@ -297,7 +297,9 @@
- # There is also a quartet form:
- # CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
- # But we can consider the "KERNEL-OPERATING_SYSTEM" as one.
-- cpu, manufacturer, os = triplet.decode('utf-8').split('-', 2)
-+ if isinstance(triplet, bytes):
-+ triplet = triplet.decode('utf-8')
-+ cpu, manufacturer, os = triplet.split('-', 2)
-
- # Autoconf uses config.sub to validate and canonicalize those triplets,
- # but the granularity of its results has never been satisfying to our
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/reader.py.old 2018-07-11 04:25:33.980000000 +0000
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/reader.py 2018-07-11 04:24:50.630000000 +0000
-@@ -441,6 +441,8 @@
- code = func.__code__
- firstlineno = code.co_firstlineno
- lines = sandbox._current_source.splitlines(True)
-+ if len(lines) and isinstance(lines[0], bytes):
-+ lines = [l.decode('utf-8') for l in lines]
- lines = inspect.getblock(lines[firstlineno - 1:])
-
- # The code lines we get out of inspect.getsourcelines look like
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/reader.py.old 2018-07-11 04:25:57.090000000 +0000
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/reader.py 2018-07-11 04:29:46.140000000 +0000
-@@ -460,7 +460,7 @@
- # actually never calls __getitem__ and __setitem__, so we need to
- # modify the AST so that accesses to globals are properly directed
- # to a dict.
-- self._global_name = b'_data' # AST wants str for this, not unicode
-+ self._global_name = '_data' # AST wants str for this, not unicode
- # In case '_data' is a name used for a variable in the function code,
- # prepend more underscores until we find an unused name.
- while (self._global_name in code.co_names or
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/context.py.old 2018-07-11 04:30:06.590000000 +0000
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/frontend/context.py 2018-07-11 04:35:38.670000000 +0000
-@@ -384,8 +384,8 @@
-
- def __cmp__(self, other):
- if isinstance(other, Path) and self.srcdir != other.srcdir:
-- return cmp(self.full_path, other.full_path)
-- return cmp(str(self), other)
-+ return self.full_path == other.full_path
-+ return str(self) == other
-
- # __cmp__ is not enough because unicode has __eq__, __ne__, etc. defined
- # and __cmp__ is only used for those when they don't exist.
---- thunderbird-52.9.0/mozilla/mozglue/build/moz.build.old 2018-07-11 04:40:17.930000000 +0000
-+++ thunderbird-52.9.0/mozilla/mozglue/build/moz.build 2018-07-11 04:42:00.830000000 +0000
-@@ -4,20 +4,15 @@
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
-
--# Build mozglue as a shared lib on Windows, OSX and Android.
-+# Build mozglue as a shared lib on Windows and OSX.
- # If this is ever changed, update MOZ_SHARED_MOZGLUE in browser/installer/Makefile.in
--if CONFIG['OS_TARGET'] in ('WINNT', 'Darwin', 'Android'):
-+if CONFIG['OS_TARGET'] in ('WINNT', 'Darwin'):
- SharedLibrary('mozglue')
- else:
- Library('mozglue')
-
- SDK_LIBRARY = True
-
--if CONFIG['OS_TARGET'] == 'Android':
-- SOURCES += [
-- 'BionicGlue.cpp',
-- ]
--
- if CONFIG['MOZ_ASAN']:
- SOURCES += [
- 'AsanOptions.cpp',
---- thunderbird-52.9.0/mozilla/js/src/moz.build.old 2017-04-11 02:13:16.000000000 +0000
-+++ thunderbird-52.9.0/mozilla/js/src/moz.build 2018-07-11 04:43:59.920000000 +0000
-@@ -707,7 +707,7 @@
- CXXFLAGS += ['-wd4577']
- CXXFLAGS += ['-wd4312']
-
--if CONFIG['OS_ARCH'] not in ('WINNT', 'HP-UX'):
-+if CONFIG['OS_ARCH'] != 'WINNT':
- OS_LIBS += [
- 'm',
- ]
-@@ -722,13 +722,13 @@
- 'dl',
- ]
-
--if CONFIG['OS_ARCH'] == 'SunOS':
-- OS_LIBS += [
-- 'posix4',
-- 'dl',
-- 'nsl',
-- 'socket',
-- ]
-+#if CONFIG['OS_ARCH'] == 'SunOS':
-+# OS_LIBS += [
-+# 'posix4',
-+# 'dl',
-+# 'nsl',
-+# 'socket',
-+# ]
-
- OS_LIBS += CONFIG['REALTIME_LIBS']
-
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/util.py.old 2018-07-11 04:44:24.900000000 +0000
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/util.py 2018-07-11 04:46:47.310000000 +0000
-@@ -267,6 +267,10 @@
- if 'b' in self.mode:
- writemode += 'b'
- with open(self.name, writemode) as file:
-+ if 'b' in self.mode and isinstance(buf, str):
-+ buf = buf.encode('utf-8')
-+ elif 'b' not in self.mode and isinstance(buf, bytes):
-+ buf = buf.decode('utf-8')
- file.write(buf)
-
- if self._capture_diff:
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/recursivemake.py.old 2018-07-11 04:47:15.020000000 +0000
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/backend/recursivemake.py 2018-07-11 04:53:51.750000000 +0000
-@@ -77,86 +77,86 @@
- from functools import reduce
-
- MOZBUILD_VARIABLES = [
-- b'ANDROID_APK_NAME',
-- b'ANDROID_APK_PACKAGE',
-- b'ANDROID_ASSETS_DIRS',
-- b'ANDROID_EXTRA_PACKAGES',
-- b'ANDROID_EXTRA_RES_DIRS',
-- b'ANDROID_GENERATED_RESFILES',
-- b'ANDROID_RES_DIRS',
-- b'ASFLAGS',
-- b'CMSRCS',
-- b'CMMSRCS',
-- b'CPP_UNIT_TESTS',
-- b'DIRS',
-- b'DIST_INSTALL',
-- b'EXTRA_DSO_LDOPTS',
-- b'EXTRA_JS_MODULES',
-- b'EXTRA_PP_COMPONENTS',
-- b'EXTRA_PP_JS_MODULES',
-- b'FORCE_SHARED_LIB',
-- b'FORCE_STATIC_LIB',
-- b'FINAL_LIBRARY',
-- b'HOST_CFLAGS',
-- b'HOST_CSRCS',
-- b'HOST_CMMSRCS',
-- b'HOST_CXXFLAGS',
-- b'HOST_EXTRA_LIBS',
-- b'HOST_LIBRARY_NAME',
-- b'HOST_PROGRAM',
-- b'HOST_SIMPLE_PROGRAMS',
-- b'IS_COMPONENT',
-- b'JAR_MANIFEST',
-- b'JAVA_JAR_TARGETS',
-- b'LD_VERSION_SCRIPT',
-- b'LIBRARY_NAME',
-- b'LIBS',
-- b'MAKE_FRAMEWORK',
-- b'MODULE',
-- b'NO_DIST_INSTALL',
-- b'NO_EXPAND_LIBS',
-- b'NO_INTERFACES_MANIFEST',
-- b'NO_JS_MANIFEST',
-- b'OS_LIBS',
-- b'PARALLEL_DIRS',
-- b'PREF_JS_EXPORTS',
-- b'PROGRAM',
-- b'PYTHON_UNIT_TESTS',
-- b'RESOURCE_FILES',
-- b'SDK_HEADERS',
-- b'SDK_LIBRARY',
-- b'SHARED_LIBRARY_LIBS',
-- b'SHARED_LIBRARY_NAME',
-- b'SIMPLE_PROGRAMS',
-- b'SONAME',
-- b'STATIC_LIBRARY_NAME',
-- b'TEST_DIRS',
-- b'TOOL_DIRS',
-+ 'ANDROID_APK_NAME',
-+ 'ANDROID_APK_PACKAGE',
-+ 'ANDROID_ASSETS_DIRS',
-+ 'ANDROID_EXTRA_PACKAGES',
-+ 'ANDROID_EXTRA_RES_DIRS',
-+ 'ANDROID_GENERATED_RESFILES',
-+ 'ANDROID_RES_DIRS',
-+ 'ASFLAGS',
-+ 'CMSRCS',
-+ 'CMMSRCS',
-+ 'CPP_UNIT_TESTS',
-+ 'DIRS',
-+ 'DIST_INSTALL',
-+ 'EXTRA_DSO_LDOPTS',
-+ 'EXTRA_JS_MODULES',
-+ 'EXTRA_PP_COMPONENTS',
-+ 'EXTRA_PP_JS_MODULES',
-+ 'FORCE_SHARED_LIB',
-+ 'FORCE_STATIC_LIB',
-+ 'FINAL_LIBRARY',
-+ 'HOST_CFLAGS',
-+ 'HOST_CSRCS',
-+ 'HOST_CMMSRCS',
-+ 'HOST_CXXFLAGS',
-+ 'HOST_EXTRA_LIBS',
-+ 'HOST_LIBRARY_NAME',
-+ 'HOST_PROGRAM',
-+ 'HOST_SIMPLE_PROGRAMS',
-+ 'IS_COMPONENT',
-+ 'JAR_MANIFEST',
-+ 'JAVA_JAR_TARGETS',
-+ 'LD_VERSION_SCRIPT',
-+ 'LIBRARY_NAME',
-+ 'LIBS',
-+ 'MAKE_FRAMEWORK',
-+ 'MODULE',
-+ 'NO_DIST_INSTALL',
-+ 'NO_EXPAND_LIBS',
-+ 'NO_INTERFACES_MANIFEST',
-+ 'NO_JS_MANIFEST',
-+ 'OS_LIBS',
-+ 'PARALLEL_DIRS',
-+ 'PREF_JS_EXPORTS',
-+ 'PROGRAM',
-+ 'PYTHON_UNIT_TESTS',
-+ 'RESOURCE_FILES',
-+ 'SDK_HEADERS',
-+ 'SDK_LIBRARY',
-+ 'SHARED_LIBRARY_LIBS',
-+ 'SHARED_LIBRARY_NAME',
-+ 'SIMPLE_PROGRAMS',
-+ 'SONAME',
-+ 'STATIC_LIBRARY_NAME',
-+ 'TEST_DIRS',
-+ 'TOOL_DIRS',
- # XXX config/Makefile.in specifies this in a make invocation
- #'USE_EXTENSION_MANIFEST',
-- b'XPCSHELL_TESTS',
-- b'XPIDL_MODULE',
-+ 'XPCSHELL_TESTS',
-+ 'XPIDL_MODULE',
- ]
-
- DEPRECATED_VARIABLES = [
-- b'ANDROID_RESFILES',
-- b'EXPORT_LIBRARY',
-- b'EXTRA_LIBS',
-- b'HOST_LIBS',
-- b'LIBXUL_LIBRARY',
-- b'MOCHITEST_A11Y_FILES',
-- b'MOCHITEST_BROWSER_FILES',
-- b'MOCHITEST_BROWSER_FILES_PARTS',
-- b'MOCHITEST_CHROME_FILES',
-- b'MOCHITEST_FILES',
-- b'MOCHITEST_FILES_PARTS',
-- b'MOCHITEST_METRO_FILES',
-- b'MOCHITEST_ROBOCOP_FILES',
-- b'MODULE_OPTIMIZE_FLAGS',
-- b'MOZ_CHROME_FILE_FORMAT',
-- b'SHORT_LIBNAME',
-- b'TESTING_JS_MODULES',
-- b'TESTING_JS_MODULE_DIR',
-+ 'ANDROID_RESFILES',
-+ 'EXPORT_LIBRARY',
-+ 'EXTRA_LIBS',
-+ 'HOST_LIBS',
-+ 'LIBXUL_LIBRARY',
-+ 'MOCHITEST_A11Y_FILES',
-+ 'MOCHITEST_BROWSER_FILES',
-+ 'MOCHITEST_BROWSER_FILES_PARTS',
-+ 'MOCHITEST_CHROME_FILES',
-+ 'MOCHITEST_FILES',
-+ 'MOCHITEST_FILES_PARTS',
-+ 'MOCHITEST_METRO_FILES',
-+ 'MOCHITEST_ROBOCOP_FILES',
-+ 'MODULE_OPTIMIZE_FLAGS',
-+ 'MOZ_CHROME_FILE_FORMAT',
-+ 'SHORT_LIBNAME',
-+ 'TESTING_JS_MODULES',
-+ 'TESTING_JS_MODULE_DIR',
- ]
-
- MOZBUILD_VARIABLES_MESSAGE = 'It should only be defined in moz.build files.'
-@@ -758,7 +758,7 @@
- rule.add_dependencies(['$(CURDIR)/%: %'])
-
- def _check_blacklisted_variables(self, makefile_in, makefile_content):
-- if b'EXTERNALLY_MANAGED_MAKE_FILE' in makefile_content:
-+ if 'EXTERNALLY_MANAGED_MAKE_FILE' in makefile_content:
- # Bypass the variable restrictions for externally managed makefiles.
- return
-
-@@ -765,7 +765,7 @@
- for l in makefile_content.splitlines():
- l = l.strip()
- # Don't check comments
-- if l.startswith(b'#'):
-+ if l.startswith('#'):
- continue
- for x in chain(MOZBUILD_VARIABLES, DEPRECATED_VARIABLES):
- if x not in l:
-@@ -822,11 +822,11 @@
- # Skip every directory but those with a Makefile
- # containing a tools target, or XPI_PKGNAME or
- # INSTALL_EXTENSION_ID.
-- for t in (b'XPI_PKGNAME', b'INSTALL_EXTENSION_ID',
-- b'tools'):
-+ for t in ('XPI_PKGNAME', 'INSTALL_EXTENSION_ID',
-+ 'tools'):
- if t not in content:
- continue
-- if t == b'tools' and not re.search('(?:^|\s)tools.*::', content, re.M):
-+ if t == 'tools' and not re.search('(?:^|\s)tools.*::', content, re.M):
- continue
- if objdir == self.environment.topobjdir:
- continue
-@@ -1422,20 +1422,20 @@
- pp.context.update(extra)
- if not pp.context.get('autoconfmk', ''):
- pp.context['autoconfmk'] = 'autoconf.mk'
-- pp.handleLine(b'# THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT MODIFY BY HAND.\n');
-- pp.handleLine(b'DEPTH := @DEPTH@\n')
-- pp.handleLine(b'topobjdir := @topobjdir@\n')
-- pp.handleLine(b'topsrcdir := @top_srcdir@\n')
-- pp.handleLine(b'srcdir := @srcdir@\n')
-- pp.handleLine(b'VPATH := @srcdir@\n')
-- pp.handleLine(b'relativesrcdir := @relativesrcdir@\n')
-- pp.handleLine(b'include $(DEPTH)/config/@autoconfmk@\n')
-+ pp.handleLine('# THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT MODIFY BY HAND.\n');
-+ pp.handleLine('DEPTH := @DEPTH@\n')
-+ pp.handleLine('topobjdir := @topobjdir@\n')
-+ pp.handleLine('topsrcdir := @top_srcdir@\n')
-+ pp.handleLine('srcdir := @srcdir@\n')
-+ pp.handleLine('VPATH := @srcdir@\n')
-+ pp.handleLine('relativesrcdir := @relativesrcdir@\n')
-+ pp.handleLine('include $(DEPTH)/config/@autoconfmk@\n')
- if not stub:
- pp.do_include(obj.input_path)
- # Empty line to avoid failures when last line in Makefile.in ends
- # with a backslash.
-- pp.handleLine(b'\n')
-- pp.handleLine(b'include $(topsrcdir)/config/recurse.mk\n')
-+ pp.handleLine('\n')
-+ pp.handleLine('include $(topsrcdir)/config/recurse.mk\n')
- if not stub:
- # Adding the Makefile.in here has the desired side-effect
- # that if the Makefile.in disappears, this will force
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/manifests.py.old 2018-07-11 04:54:39.260000000 +0000
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozpack/manifests.py 2018-07-11 04:57:31.710000000 +0000
-@@ -115,7 +115,7 @@
- self._source_files = set()
-
- if path or fileobj:
-- with _auto_fileobj(path, fileobj, 'rb') as fh:
-+ with _auto_fileobj(path, fileobj, 'r') as fh:
- self._source_files.add(fh.name)
- self._load_from_fileobj(fh)
-
-@@ -174,7 +174,7 @@
- dest, content = fields[1:]
-
- self.add_content(
-- self._decode_field_entry(content).encode('utf-8'), dest)
-+ self._decode_field_entry(content), dest)
- continue
-
- # Don't fail for non-actionable items, allowing
-@@ -236,7 +236,7 @@
-
- It is an error if both are specified.
- """
-- with _auto_fileobj(path, fileobj, 'wb') as fh:
-+ with _auto_fileobj(path, fileobj, 'w') as fh:
- fh.write('%d\n' % self.CURRENT_VERSION)
-
- for dest in sorted(self._dests):
-@@ -244,8 +244,7 @@
-
- parts = ['%d' % entry[0], dest]
- parts.extend(entry[1:])
-- fh.write('%s\n' % self.FIELD_SEPARATOR.join(
-- p.encode('utf-8') for p in parts))
-+ fh.write('%s\n' % self.FIELD_SEPARATOR.join(parts))
-
- def add_symlink(self, source, dest):
- """Add a symlink to this manifest.
-@@ -391,7 +390,7 @@
- if install_type == self.CONTENT:
- # GeneratedFile expect the buffer interface, which the unicode
- # type doesn't have, so encode to a str.
-- content = self._decode_field_entry(entry[1]).encode('utf-8')
-+ content = self._decode_field_entry(entry[1])
- registry.add(dest, GeneratedFile(content))
- continue
-
---- thunderbird-52.9.0/mozilla/config/MozZipFile.py (original)
-+++ thunderbird-52.9.0/mozilla/config/MozZipFile.py (refactored)
-@@ -18,7 +18,7 @@
- def __init__(self, file, mode="r", compression=zipfile.ZIP_STORED,
- lock = False):
- if lock:
-- assert isinstance(file, basestring)
-+ assert isinstance(file, str)
- self.lockfile = lock_file(file + '.lck')
- else:
- self.lockfile = None
-@@ -46,7 +46,7 @@
- date_time=time.localtime(time.time()))
- zinfo.compress_type = self.compression
- # Add some standard UNIX file access permissions (-rw-r--r--).
-- zinfo.external_attr = (0x81a4 & 0xFFFF) << 16L
-+ zinfo.external_attr = (0x81a4 & 0xFFFF) << 16
- else:
- zinfo = zinfo_or_arcname
-
-@@ -58,7 +58,7 @@
- # as the old, reuse the existing entry.
-
- doSeek = False # store if we need to seek to the eof after overwriting
-- if self.NameToInfo.has_key(zinfo.filename):
-+ if zinfo.filename in self.NameToInfo:
- # Find the last ZipInfo with our name.
- # Last, because that's catching multiple overwrites
- i = len(self.filelist)
-@@ -109,14 +109,14 @@
- # adjust file mode if we originally just wrote, now we rewrite
- self.fp.close()
- self.fp = open(self.filename, 'r+b')
-- all = map(lambda zi: (zi, True), self.filelist) + \
-- map(lambda zi: (zi, False), self._remove)
-+ all = [(zi, True) for zi in self.filelist] + \
-+ [(zi, False) for zi in self._remove]
- all.sort(lambda l, r: cmp(l[0].header_offset, r[0].header_offset))
- # empty _remove for multiple closes
- self._remove = []
-
- lengths = [all[i+1][0].header_offset - all[i][0].header_offset
-- for i in xrange(len(all)-1)]
-+ for i in range(len(all)-1)]
- lengths.append(self.end - all[-1][0].header_offset)
- to_pos = 0
- for (zi, keep), length in zip(all, lengths):
---- thunderbird-52.9.0/mozilla/config/check_spidermonkey_style.py (original)
-+++ thunderbird-52.9.0/mozilla/config/check_spidermonkey_style.py (refactored)
-@@ -35,7 +35,7 @@
- # isolation, but don't try to do any order checking between such blocks.
- #----------------------------------------------------------------------------
-
--from __future__ import print_function
-+
-
- import difflib
- import os
-@@ -270,7 +270,7 @@
- edges[inclname] = set()
-
- # Process all the JS files.
-- for filename in js_names.keys():
-+ for filename in list(js_names.keys()):
- inclname = js_names[filename]
- file_kind = FileKind.get(filename)
- if file_kind == FileKind.C or file_kind == FileKind.CPP or \
---- thunderbird-52.9.0/mozilla/config/expandlibs.py (original)
-+++ thunderbird-52.9.0/mozilla/config/expandlibs.py (refactored)
-@@ -26,7 +26,7 @@
- descriptor contains. And for each of these LIBS, also apply the same
- rules.
- '''
--from __future__ import with_statement
-+
- import sys, os, errno
- import expandlibs_config as conf
-
-@@ -36,7 +36,7 @@
- if dir and not os.path.exists(dir):
- try:
- os.makedirs(dir)
-- except OSError, error:
-+ except OSError as error:
- if error.errno != errno.EEXIST:
- raise
-
-@@ -140,4 +140,4 @@
- return [relativize(arg)]
-
- if __name__ == '__main__':
-- print " ".join(ExpandArgs(sys.argv[1:]))
-+ print(" ".join(ExpandArgs(sys.argv[1:])))
---- thunderbird-52.9.0/mozilla/config/expandlibs_exec.py (original)
-+++ thunderbird-52.9.0/mozilla/config/expandlibs_exec.py (refactored)
-@@ -20,7 +20,7 @@
- relevant linker options to change the order in which the linker puts the
- symbols appear in the resulting binary. Only works for ELF targets.
- '''
--from __future__ import with_statement
-+
- import sys
- import os
- from expandlibs import (
-@@ -304,11 +304,11 @@
- return syms
-
- def print_command(out, args):
-- print >>out, "Executing: " + " ".join(args)
-+ print("Executing: " + " ".join(args), file=out)
- for tmp in [f for f in args.tmp if os.path.isfile(f)]:
-- print >>out, tmp + ":"
-+ print(tmp + ":", file=out)
- with open(tmp) as file:
-- print >>out, "".join([" " + l for l in file.readlines()])
-+ print("".join([" " + l for l in file.readlines()]), file=out)
- out.flush()
-
- def main(args, proc_callback=None):
-@@ -338,8 +338,8 @@
- proc = subprocess.Popen(args, stdout = subprocess.PIPE, stderr = subprocess.STDOUT)
- if proc_callback:
- proc_callback(proc)
-- except Exception, e:
-- print >>sys.stderr, 'error: Launching', args, ':', e
-+ except Exception as e:
-+ print('error: Launching', args, ':', e, file=sys.stderr)
- raise e
- (stdout, stderr) = proc.communicate()
- if proc.returncode and not options.verbose:
---- thunderbird-52.9.0/mozilla/config/expandlibs_gen.py (original)
-+++ thunderbird-52.9.0/mozilla/config/expandlibs_gen.py (refactored)
-@@ -5,7 +5,7 @@
- '''Given a list of object files and library names, prints a library
- descriptor to standard output'''
-
--from __future__ import with_statement
-+
- import sys
- import os
- import expandlibs_config as conf
-@@ -38,4 +38,4 @@
-
- ensureParentDir(options.output)
- with open(options.output, 'w') as outfile:
-- print >>outfile, generate(args)
-+ print(generate(args), file=outfile)
---- thunderbird-52.9.0/mozilla/config/find_OOM_errors.py (original)
-+++ thunderbird-52.9.0/mozilla/config/find_OOM_errors.py (refactored)
-@@ -2,7 +2,7 @@
- # This Source Code Form is subject to the terms of the Mozilla Public
- # License, v. 2.0. If a copy of the MPL was not distributed with this
- # file, You can obtain one at http://mozilla.org/MPL/2.0/.
--from __future__ import print_function
-+
-
- usage = """%prog: A test for OOM conditions in the shell.
-
-@@ -95,12 +95,12 @@
- """Keep track of the amount of times individual lines occur, in order to
- prioritize the errors which occur most frequently."""
- counts = {}
-- for string,count in blacklist.items():
-+ for string,count in list(blacklist.items()):
- for line in string.split("\n"):
- counts[line] = counts.get(line, 0) + count
-
- lines = []
-- for k,v in counts.items():
-+ for k,v in list(counts.items()):
- lines.append("{0:6}: {1}".format(v, k))
-
- lines.sort()
---- thunderbird-52.9.0/mozilla/config/link.py (original)
-+++ thunderbird-52.9.0/mozilla/config/link.py (refactored)
-@@ -18,7 +18,7 @@
- time.sleep(0.5)
- idleTime += 0.5
- if idleTime > 20 * 60:
-- print "Still linking, 20 minutes passed..."
-+ print("Still linking, 20 minutes passed...")
- sys.stdout.flush()
- idleTime = 0
-
-@@ -42,6 +42,6 @@
-
- if __name__ == "__main__":
- if len(sys.argv) < 2:
-- print >>sys.stderr, "Usage: link.py <commandline>"
-+ print("Usage: link.py <commandline>", file=sys.stderr)
- sys.exit(1)
- sys.exit(wrap_linker(sys.argv[1:]))
---- thunderbird-52.9.0/mozilla/config/mozunit.py (original)
-+++ thunderbird-52.9.0/mozilla/config/mozunit.py (refactored)
-@@ -140,7 +140,7 @@
- '''
- def __init__(self, files = {}):
- self.files = {}
-- for name, content in files.iteritems():
-+ for name, content in files.items():
- self.files[normcase(os.path.abspath(name))] = content
-
- def __call__(self, name, mode = 'r'):
-@@ -158,19 +158,19 @@
- return file
-
- def __enter__(self):
-- import __builtin__
-- self.open = __builtin__.open
-+ import builtins
-+ self.open = builtins.open
- self._orig_path_exists = os.path.exists
- self._orig_path_isdir = os.path.isdir
- self._orig_path_isfile = os.path.isfile
-- __builtin__.open = self
-+ builtins.open = self
- os.path.exists = self._wrapped_exists
- os.path.isdir = self._wrapped_isdir
- os.path.isfile = self._wrapped_isfile
-
- def __exit__(self, type, value, traceback):
-- import __builtin__
-- __builtin__.open = self.open
-+ import builtins
-+ builtins.open = self.open
- os.path.exists = self._orig_path_exists
- os.path.isdir = self._orig_path_isdir
- os.path.isfile = self._orig_path_isfile
---- thunderbird-52.9.0/mozilla/config/nsinstall.py (original)
-+++ thunderbird-52.9.0/mozilla/config/nsinstall.py (refactored)
-@@ -9,7 +9,7 @@
- # a full build environment set up.
- # The basic limitation is, it doesn't even try to link and ignores
- # all related options.
--from __future__ import print_function
-+
- from optparse import OptionParser
- import mozfile
- import os
-@@ -149,7 +149,7 @@
-
- # nsinstall as a native command is always UTF-8
- def nsinstall(argv):
-- return _nsinstall_internal([unicode(arg, "utf-8") for arg in argv])
-+ return _nsinstall_internal([str(arg, "utf-8") for arg in argv])
-
- if __name__ == '__main__':
- # sys.argv corrupts characters outside the system code page on Windows
-@@ -175,8 +175,8 @@
- else:
- # For consistency, do it on Unix as well
- if sys.stdin.encoding is not None:
-- argv = [unicode(arg, sys.stdin.encoding) for arg in sys.argv]
-+ argv = [str(arg, sys.stdin.encoding) for arg in sys.argv]
- else:
-- argv = [unicode(arg) for arg in sys.argv]
-+ argv = [str(arg) for arg in sys.argv]
-
- sys.exit(_nsinstall_internal(argv[1:]))
---- thunderbird-52.9.0/mozilla/config/printconfigsetting.py (original)
-+++ thunderbird-52.9.0/mozilla/config/printconfigsetting.py (refactored)
-@@ -5,12 +5,12 @@
- import configobj
- import sys
- import re
--from StringIO import StringIO
-+from io import StringIO
-
- try:
- (file, section, key) = sys.argv[1:]
- except ValueError:
-- print "Usage: printconfigsetting.py <file> <section> <setting>"
-+ print("Usage: printconfigsetting.py <file> <section> <setting>")
- sys.exit(1)
-
- with open(file) as fh:
-@@ -21,11 +21,11 @@
- try:
- s = c[section]
- except KeyError:
-- print >>sys.stderr, "Section [%s] not found." % section
-+ print("Section [%s] not found." % section, file=sys.stderr)
- sys.exit(1)
-
- try:
-- print s[key]
-+ print(s[key])
- except KeyError:
-- print >>sys.stderr, "Key %s not found." % key
-+ print("Key %s not found." % key, file=sys.stderr)
- sys.exit(1)
---- thunderbird-52.9.0/mozilla/config/pythonpath.py (original)
-+++ thunderbird-52.9.0/mozilla/config/pythonpath.py (refactored)
-@@ -9,7 +9,7 @@
-
- def main(args):
- def usage():
-- print >>sys.stderr, "pythonpath.py -I directory script.py [args...]"
-+ print("pythonpath.py -I directory script.py [args...]", file=sys.stderr)
- sys.exit(150)
-
- paths = []
-@@ -45,7 +45,7 @@
- frozenglobals['__name__'] = '__main__'
- frozenglobals['__file__'] = script
-
-- execfile(script, frozenglobals)
-+ exec(compile(open(script).read(), script, 'exec'), frozenglobals)
-
- # Freeze scope here ... why this makes things work I have no idea ...
- frozenglobals = globals()
---- thunderbird-52.9.0/mozilla/config/rebuild_check.py (original)
-+++ thunderbird-52.9.0/mozilla/config/rebuild_check.py (refactored)
-@@ -18,7 +18,7 @@
- deps = args[1:]
- t = mtime(target)
- if t < 0:
-- print target
-+ print(target)
- return
-
- newer = []
-@@ -31,13 +31,13 @@
- newer.append(dep)
-
- if newer and removed:
-- print 'Rebuilding %s because %s changed and %s was removed' % (target, ', '.join(newer), ', '.join(removed))
-+ print('Rebuilding %s because %s changed and %s was removed' % (target, ', '.join(newer), ', '.join(removed)))
- elif newer:
-- print 'Rebuilding %s because %s changed' % (target, ', '.join(newer))
-+ print('Rebuilding %s because %s changed' % (target, ', '.join(newer)))
- elif removed:
-- print 'Rebuilding %s because %s was removed' % (target, ', '.join(removed))
-+ print('Rebuilding %s because %s was removed' % (target, ', '.join(removed)))
- else:
-- print 'Rebuilding %s for an unknown reason' % target
-+ print('Rebuilding %s for an unknown reason' % target)
-
- if __name__ == '__main__':
- import sys
---- thunderbird-52.9.0/mozilla/config/tests/unit-expandlibs.py (original)
-+++ thunderbird-52.9.0/mozilla/config/tests/unit-expandlibs.py (refactored)
-@@ -7,7 +7,7 @@
- from shutil import rmtree
- import mozunit
-
--from UserString import UserString
-+from collections import UserString
- # Create a controlled configuration for use by expandlibs
- config_win = {
- 'AR': 'lib',
-@@ -120,8 +120,7 @@
- del dict[name]
- return type.__new__(cls, clsName, bases, dict)
-
--class TestCaseWithTmpDir(unittest.TestCase):
-- __metaclass__ = ReplicateTests
-+class TestCaseWithTmpDir(unittest.TestCase, metaclass=ReplicateTests):
- def init(self):
- self.tmpdir = os.path.abspath(mkdtemp(dir=os.curdir))
-
---- thunderbird-52.9.0/mozilla/config/tests/unit-nsinstall.py (original)
-+++ thunderbird-52.9.0/mozilla/config/tests/unit-nsinstall.py (refactored)
-@@ -28,9 +28,9 @@
- # Unicode strings means non-ASCII children can be deleted properly on
- # Windows
- if sys.stdin.encoding is None:
-- tmpdir = unicode(self.tmpdir)
-+ tmpdir = str(self.tmpdir)
- else:
-- tmpdir = unicode(self.tmpdir, sys.stdin.encoding)
-+ tmpdir = str(self.tmpdir, sys.stdin.encoding)
- rmtree(tmpdir)
-
- # utility methods for tests
-@@ -50,14 +50,14 @@
- "Test nsinstall -D <dir>"
- testdir = os.path.join(self.tmpdir, "test")
- self.assertEqual(nsinstall(["-D", testdir]), 0)
-- self.assert_(os.path.isdir(testdir))
-+ self.assertTrue(os.path.isdir(testdir))
-
- def test_nsinstall_basic(self):
- "Test nsinstall <file> <dir>"
- testfile = self.touch("testfile")
- testdir = self.mkdirs("testdir")
- self.assertEqual(nsinstall([testfile, testdir]), 0)
-- self.assert_(os.path.isfile(os.path.join(testdir, "testfile")))
-+ self.assertTrue(os.path.isfile(os.path.join(testdir, "testfile")))
-
- def test_nsinstall_basic_recursive(self):
- "Test nsinstall <dir> <dest dir>"
-@@ -76,12 +76,12 @@
- '-X', Xdir]), 0)
-
- testdir = os.path.join(destdir, "sourcedir")
-- self.assert_(os.path.isdir(testdir))
-- self.assert_(os.path.isfile(os.path.join(testdir, "testfile")))
-- self.assert_(not os.path.exists(os.path.join(testdir, "Xfile")))
-- self.assert_(os.path.isdir(os.path.join(testdir, "copieddir")))
-- self.assert_(os.path.isfile(os.path.join(testdir, "copieddir", "testfile2")))
-- self.assert_(not os.path.exists(os.path.join(testdir, "Xdir")))
-+ self.assertTrue(os.path.isdir(testdir))
-+ self.assertTrue(os.path.isfile(os.path.join(testdir, "testfile")))
-+ self.assertTrue(not os.path.exists(os.path.join(testdir, "Xfile")))
-+ self.assertTrue(os.path.isdir(os.path.join(testdir, "copieddir")))
-+ self.assertTrue(os.path.isfile(os.path.join(testdir, "copieddir", "testfile2")))
-+ self.assertTrue(not os.path.exists(os.path.join(testdir, "Xdir")))
-
- def test_nsinstall_multiple(self):
- "Test nsinstall <three files> <dest dir>"
-@@ -91,7 +91,7 @@
- testdir = self.mkdirs("testdir")
- self.assertEqual(nsinstall(testfiles + [testdir]), 0)
- for f in testfiles:
-- self.assert_(os.path.isfile(os.path.join(testdir,
-+ self.assertTrue(os.path.isfile(os.path.join(testdir,
- os.path.basename(f))))
-
- def test_nsinstall_dir_exists(self):
-@@ -99,7 +99,7 @@
- srcdir = self.mkdirs("test")
- destdir = self.mkdirs("testdir/test")
- self.assertEqual(nsinstall([srcdir, os.path.dirname(destdir)]), 0)
-- self.assert_(os.path.isdir(destdir))
-+ self.assertTrue(os.path.isdir(destdir))
-
- def test_nsinstall_t(self):
- "Test that nsinstall -t works (preserve timestamp)"
-@@ -110,7 +110,7 @@
- os.utime(testfile, (t, t))
- self.assertEqual(nsinstall(["-t", testfile, testdir]), 0)
- destfile = os.path.join(testdir, "testfile")
-- self.assert_(os.path.isfile(destfile))
-+ self.assertTrue(os.path.isfile(destfile))
- self.assertEqual(os.stat(testfile).st_mtime,
- os.stat(destfile).st_mtime)
-
-@@ -125,7 +125,7 @@
- self.assertEqual(nsinstall(["-m", "{0:04o}"
- .format(mode), testfile, testdir]), 0)
- destfile = os.path.join(testdir, "testfile")
-- self.assert_(os.path.isfile(destfile))
-+ self.assertTrue(os.path.isfile(destfile))
- self.assertEqual(os.stat(testfile).st_mode,
- os.stat(destfile).st_mode)
-
-@@ -136,25 +136,25 @@
- testdir = self.mkdirs("testdir")
- destdir = os.path.join(testdir, "subdir")
- self.assertEqual(nsinstall(["-d", testfile, destdir]), 0)
-- self.assert_(os.path.isdir(os.path.join(destdir, "testfile")))
-+ self.assertTrue(os.path.isdir(os.path.join(destdir, "testfile")))
-
- if RUN_NON_ASCII_TESTS:
- def test_nsinstall_non_ascii(self):
- "Test that nsinstall handles non-ASCII files"
-- filename = u"\u2325\u3452\u2415\u5081"
-+ filename = "\u2325\u3452\u2415\u5081"
- testfile = self.touch(filename)
-- testdir = self.mkdirs(u"\u4241\u1D04\u1414")
-+ testdir = self.mkdirs("\u4241\u1D04\u1414")
- self.assertEqual(nsinstall([testfile.encode("utf-8"),
- testdir.encode("utf-8")]), 0)
-
- destfile = os.path.join(testdir, filename)
-- self.assert_(os.path.isfile(destfile))
-+ self.assertTrue(os.path.isfile(destfile))
-
- def test_nsinstall_non_ascii_subprocess(self):
- "Test that nsinstall as a subprocess handles non-ASCII files"
-- filename = u"\u2325\u3452\u2415\u5081"
-+ filename = "\u2325\u3452\u2415\u5081"
- testfile = self.touch(filename)
-- testdir = self.mkdirs(u"\u4241\u1D04\u1414")
-+ testdir = self.mkdirs("\u4241\u1D04\u1414")
- # We don't use subprocess because it can't handle Unicode on
- # Windows <http://bugs.python.org/issue1759845>. mozprocess calls
- # CreateProcessW directly so it's perfect.
-@@ -166,7 +166,7 @@
-
- self.assertEqual(rv, 0)
- destfile = os.path.join(testdir, filename)
-- self.assert_(os.path.isfile(destfile))
-+ self.assertTrue(os.path.isfile(destfile))
-
- #TODO: implement -R, -l, -L and test them!
-
---- thunderbird-52.9.0/mozilla/config/tests/unitMozZipFile.py (original)
-+++ thunderbird-52.9.0/mozilla/config/tests/unitMozZipFile.py (refactored)
-@@ -11,6 +11,7 @@
- import random
- import copy
- from string import letters
-+from functools import reduce
-
- '''
- Test case infrastructure for MozZipFile.
-@@ -38,7 +39,7 @@
- 'firstdir/oneleaf',
- 'seconddir/twoleaf',
- 'thirddir/with/sub/threeleaf')
--_lengths = map(lambda n: n * 64, [16, 64, 80])
-+_lengths = [n * 64 for n in [16, 64, 80]]
- lengths = 3
- writes = 5
-
-@@ -71,7 +72,7 @@
- def getContent(length):
- 'Get pseudo random content of given length.'
- rv = [None] * length
-- for i in xrange(length):
-+ for i in range(length):
- rv[i] = random.choice(letters)
- return ''.join(rv)
-
-@@ -133,13 +134,13 @@
- def _verifyZip(self):
- zf = zipfile.ZipFile(self.f)
- badEntry = zf.testzip()
-- self.failIf(badEntry, badEntry)
-+ self.assertFalse(badEntry, badEntry)
- zlist = zf.namelist()
- zlist.sort()
-- vlist = self.ref.keys()
-+ vlist = list(self.ref.keys())
- vlist.sort()
- self.assertEqual(zlist, vlist)
-- for leaf, content in self.ref.iteritems():
-+ for leaf, content in self.ref.items():
- zcontent = zf.read(leaf)
- self.assertEqual(content, zcontent)
-
-@@ -158,16 +159,16 @@
- open(self.leaf('stage', leaf), 'w').write(content)
-
- # all leafs in all lengths
--atomics = list(prod(xrange(len(leafs)), xrange(lengths)))
-+atomics = list(prod(range(len(leafs)), range(lengths)))
-
- # populate TestExtensiveStore with testcases
--for w in xrange(writes):
-+for w in range(writes):
- # Don't iterate over all files for the the first n passes,
- # those are redundant as long as w < lengths.
- # There are symmetries in the trailing end, too, but I don't know
- # how to reduce those out right now.
-- nonatomics = [list(prod(range(min(i,len(leafs))), xrange(lengths)))
-- for i in xrange(1, w+1)] + [atomics]
-+ nonatomics = [list(prod(list(range(min(i,len(leafs)))), range(lengths)))
-+ for i in range(1, w+1)] + [atomics]
- for descs in prod(*nonatomics):
- suffix = getid(descs)
- dicts = [dict(leaf=leaf, length=length) for leaf, length in descs]
-@@ -181,9 +182,9 @@
- # and then write all atomics again.
- # This should catch more or less all artifacts generated
- # by the final ordering step when closing the jar.
--files = [list(prod([i], xrange(lengths))) for i in xrange(len(leafs))]
-+files = [list(prod([i], range(lengths))) for i in range(len(leafs))]
- allfiles = reduce(lambda l,r:l+r,
-- [list(prod(*files[:(i+1)])) for i in xrange(len(leafs))])
-+ [list(prod(*files[:(i+1)])) for i in range(len(leafs))])
-
- for first in allfiles:
- testbasename = 'test{0}_'.format(getid(first))
---- thunderbird-52.9.0/mozilla/config/expandlibs_exec.py.old 2018-07-11 05:07:18.280000000 +0000
-+++ thunderbird-52.9.0/mozilla/config/expandlibs_exec.py 2018-07-11 05:08:45.670000000 +0000
-@@ -344,7 +344,7 @@
- (stdout, stderr) = proc.communicate()
- if proc.returncode and not options.verbose:
- print_command(sys.stderr, args)
-- sys.stderr.write(stdout)
-+ sys.stderr.write(stdout.decode('utf-8'))
- sys.stderr.flush()
- if proc.returncode:
- return proc.returncode
---- thunderbird-52.9.0/mozilla/js/src/jsautokw.py.old 2017-04-11 02:13:16.000000000 +0000
-+++ thunderbird-52.9.0/mozilla/js/src/jsautokw.py 2018-07-11 05:11:27.080000000 +0000
-@@ -80,14 +80,14 @@
- per_column = column_dict.setdefault(keyword[column], [])
- per_column.append(item)
-
-- return sorted(column_dict.items(), key=lambda (char, keyword): ord(char))
-+ return sorted(list(column_dict.items()), key=lambda char_keyword: ord(char_keyword[0]))
-
- def generate_letter_switch(opt, unprocessed_columns, keyword_list,
- columns=None):
- assert(len(keyword_list) != 0);
-
- if not columns:
-- columns = range(0, unprocessed_columns)
-+ columns = list(range(0, unprocessed_columns))
-
- if len(keyword_list) == 1:
- index, keyword = keyword_list[0]
-@@ -161,7 +161,7 @@
- per_length = length_dict.setdefault(len(keyword), [])
- per_length.append(item)
-
-- return sorted(length_dict.items(), key=lambda (length, keyword): length)
-+ return sorted(list(length_dict.items()), key=lambda length_keyword: length_keyword[0])
-
- def generate_switch(opt, keyword_list):
- assert(len(keyword_list) != 0);
---- thunderbird-52.9.0/mozilla/js/src/builtin/embedjs.py (original)
-+++ thunderbird-52.9.0/mozilla/js/src/builtin/embedjs.py (refactored)
-@@ -36,7 +36,7 @@
- #
- # It uses the C preprocessor to process its inputs.
-
--from __future__ import with_statement
-+
- import re, sys, os, subprocess
- import shlex
- import which
-@@ -109,7 +109,7 @@
-
- with open(tmpIn, 'wb') as input:
- input.write(source)
-- print(' '.join(cxx + outputArg + args + [tmpIn]))
-+ print((' '.join(cxx + outputArg + args + [tmpIn])))
- result = subprocess.Popen(cxx + outputArg + args + [tmpIn]).wait()
- if (result != 0):
- sys.exit(result);
-@@ -132,7 +132,7 @@
-
- def get_config_defines(buildconfig):
- # Collect defines equivalent to ACDEFINES and add MOZ_DEBUG_DEFINES.
-- env = {key: value for key, value in buildconfig.defines.iteritems()
-+ env = {key: value for key, value in buildconfig.defines.items()
- if key not in buildconfig.non_global_defines}
- for define in buildconfig.substs['MOZ_DEBUG_DEFINES']:
- env[define] = 1
---- thunderbird-52.9.0/mozilla/js/src/builtin/embedjs.py.old 2018-07-11 05:13:28.920000000 +0000
-+++ thunderbird-52.9.0/mozilla/js/src/builtin/embedjs.py 2018-07-11 05:15:15.390000000 +0000
-@@ -107,7 +107,7 @@
- tmpOut = 'self-hosting-preprocessed.pp';
- outputArg = shlex.split(preprocessorOption + tmpOut)
-
-- with open(tmpIn, 'wb') as input:
-+ with open(tmpIn, 'w') as input:
- input.write(source)
- print((' '.join(cxx + outputArg + args + [tmpIn])))
- result = subprocess.Popen(cxx + outputArg + args + [tmpIn]).wait()
---- thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/preprocessor.py.old 2018-07-11 05:15:42.900000000 +0000
-+++ thunderbird-52.9.0/mozilla/python/mozbuild/mozbuild/preprocessor.py 2018-07-11 05:23:10.870000000 +0000
-@@ -451,7 +451,7 @@
- except OSError as error:
- if error.errno != errno.EEXIST:
- raise
-- return open(path, 'wb')
-+ return open(path, 'w')
-
- p = self.getCommandLineParser()
- options, args = p.parse_args(args=args)
---- thunderbird-52.9.0/mozilla/js/src/builtin/embedjs.py.old 2018-07-11 05:15:42.950000000 +0000
-+++ thunderbird-52.9.0/mozilla/js/src/builtin/embedjs.py 2018-07-11 05:20:14.280000000 +0000
-@@ -53,7 +53,7 @@
- def ToCArray(lines):
- result = []
- for chr in lines:
-- result.append(str(ord(chr)))
-+ result.append(str(chr))
- return ", ".join(result)
-
- HEADER_TEMPLATE = """\
-@@ -87,7 +87,7 @@
-
- js_out.write(processed)
- import zlib
-- compressed = zlib.compress(processed)
-+ compressed = zlib.compress(processed.encode('utf-8'))
- data = ToCArray(compressed)
- c_out.write(HEADER_TEMPLATE % {
- 'sources_type': 'unsigned char',
---- thunderbird-52.9.0/mozilla/build/mach_bootstrap.py.old 2018-06-29 23:00:39.000000000 +0000
-+++ thunderbird-52.9.0/mozilla/build/mach_bootstrap.py 2018-07-26 00:41:17.740000000 +0000
-@@ -12,7 +12,7 @@
- import subprocess
- import sys
- import uuid
--import __builtin__
-+import builtins
-
- from types import ModuleType
-
-@@ -187,10 +187,10 @@
- # Ensure we are running Python 2.7+. We put this check here so we generate a
- # user-friendly error message rather than a cryptic stack trace on module
- # import.
-- if sys.version_info[0] != 2 or sys.version_info[1] < 7:
-- print('Python 2.7 or above (but not Python 3) is required to run mach.')
-- print('You are running Python', platform.python_version())
-- sys.exit(1)
-+ #if sys.version_info[0] != 2 or sys.version_info[1] < 7:
-+ # print('Python 2.7 or above (but not Python 3) is required to run mach.')
-+ # print('You are running Python', platform.python_version())
-+ # sys.exit(1)
-
- # Global build system and mach state is stored in a central directory. By
- # default, this is ~/.mozbuild. However, it can be defined via an
-@@ -410,4 +410,4 @@
-
-
- # Install our hook
--__builtin__.__import__ = ImportHook(__builtin__.__import__)
-+builtins.__import__ = ImportHook(builtins.__import__)
---- thunderbird-52.9.0/mozilla/python/mach/mach/config.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mach/mach/config.py (refactored)
-@@ -163,7 +163,7 @@
- return func(*args, **kwargs)
- except KeyError:
- exc_class, exc, tb = sys.exc_info()
-- raise AttributeError().__class__, exc, tb
-+ raise AttributeError().__class__(exc).with_traceback(tb)
- return _
-
-
-@@ -357,7 +357,7 @@
- extra -- A dict of additional key/value pairs to add to the
- setting metadata.
- """
-- if isinstance(type_cls, basestring):
-+ if isinstance(type_cls, str_type):
- type_cls = TYPE_CLASSES[type_cls]
-
- meta = {
-@@ -397,10 +397,10 @@
- meta = self._format_metadata(provider, section, option, *setting[1:])
- config_settings[section][option] = meta
-
-- for section_name, settings in config_settings.items():
-+ for section_name, settings in list(config_settings.items()):
- section = self._settings.get(section_name, {})
-
-- for k, v in settings.items():
-+ for k, v in list(settings.items()):
- if k in section:
- raise ConfigException('Setting already registered: %s.%s' %
- section_name, k)
-@@ -432,7 +432,7 @@
- if self._finalized:
- return
-
-- for section, settings in self._settings.items():
-+ for section, settings in list(self._settings.items()):
- s = ConfigSettings.ConfigSection(self._config, section, settings)
- self._sections[section] = s
-
-@@ -445,7 +445,7 @@
- def __iter__(self):
- self._finalize()
-
-- return iter(self._sections.keys())
-+ return iter(list(self._sections.keys()))
-
- def __contains__(self, k):
- return k in self._settings
---- thunderbird-52.9.0/mozilla/python/mach/mach/dispatcher.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mach/mach/dispatcher.py (refactored)
-@@ -243,7 +243,7 @@
- r = self._mach_registrar
- disabled_commands = []
-
-- cats = [(k, v[2]) for k, v in r.categories.items()]
-+ cats = [(k, v[2]) for k, v in list(r.categories.items())]
- sorted_cats = sorted(cats, key=itemgetter(1), reverse=True)
- for category, priority in sorted_cats:
- group = None
-@@ -375,7 +375,7 @@
- ' subcommand [subcommand arguments]'
- group = parser.add_argument_group('Sub Commands')
-
-- for subcommand, subhandler in sorted(handler.subcommand_handlers.iteritems()):
-+ for subcommand, subhandler in sorted(handler.subcommand_handlers.items()):
- group.add_argument(subcommand, help=subhandler.description,
- action='store_true')
-
-@@ -406,7 +406,7 @@
-
- def _suggest_command(self, command):
- # Make sure we don't suggest any deprecated commands.
-- names = [h.name for h in self._mach_registrar.command_handlers.values()
-+ names = [h.name for h in list(self._mach_registrar.command_handlers.values())
- if h.cls.__name__ != 'DeprecatedCommands']
- # We first try to look for a valid command that is very similar to the given command.
- suggested_commands = difflib.get_close_matches(command, names, cutoff=0.8)
-@@ -437,13 +437,13 @@
- if not docstring:
- return ''
- lines = docstring.expandtabs().splitlines()
-- indent = sys.maxint
-+ indent = sys.maxsize
- for line in lines[1:]:
- stripped = line.lstrip()
- if stripped:
- indent = min(indent, len(line) - len(stripped))
- trimmed = [lines[0].strip()]
-- if indent < sys.maxint:
-+ if indent < sys.maxsize:
- for line in lines[1:]:
- trimmed.append(line[indent:].rstrip())
- while trimmed and not trimmed[-1]:
---- thunderbird-52.9.0/mozilla/python/mach/mach/main.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mach/mach/main.py (refactored)
-@@ -528,7 +528,7 @@
-
- machrc, .machrc
- """
-- if isinstance(paths, basestring):
-+ if isinstance(paths, str):
- paths = [paths]
-
- valid_names = ('machrc', '.machrc')
-@@ -541,8 +541,8 @@
- if os.path.isfile(path):
- return path
-
-- files = map(find_in_dir, self.settings_paths)
-- files = filter(bool, files)
-+ files = list(map(find_in_dir, self.settings_paths))
-+ files = list(filter(bool, files))
-
- self.settings.load_files(files)
-
---- thunderbird-52.9.0/mozilla/python/mach/mach/registrar.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mach/mach/registrar.py (refactored)
-@@ -90,7 +90,7 @@
- result = fn(**kwargs)
-
- result = result or 0
-- assert isinstance(result, (int, long))
-+ assert isinstance(result, int)
-
- if context:
- postrun = getattr(context, 'post_dispatch_handler', None)
---- thunderbird-52.9.0/mozilla/python/mach/mach/terminal.py (original)
-+++ thunderbird-52.9.0/mozilla/python/mach/mach/terminal.py (refactored)
-@@ -59,7 +59,7 @@
- self.fh = sys.stdout
-
- def _clear_lines(self, n):
-- for i in xrange(n):
-+ for i in range(n):
- self.fh.write(self.t.move_x(0))
- self.fh.write(self.t.clear_eol())
- self.fh.write(self.t.move_up())
---- thunderbird-52.9.0/mozilla/python/mach/mach/main.py.old 2018-07-26 00:55:29.330000000 +0000
-+++ thunderbird-52.9.0/mozilla/python/mach/mach/main.py 2018-07-26 00:57:01.260000000 +0000
-@@ -256,9 +256,9 @@
- if module_name is None:
- # Ensure parent module is present otherwise we'll (likely) get
- # an error due to unknown parent.
-- if b'mach.commands' not in sys.modules:
-- mod = imp.new_module(b'mach.commands')
-- sys.modules[b'mach.commands'] = mod
-+ if 'mach.commands' not in sys.modules:
-+ mod = imp.new_module('mach.commands')
-+ sys.modules['mach.commands'] = mod
-
- module_name = 'mach.commands.%s' % uuid.uuid1().get_hex()
-
-@@ -347,7 +347,7 @@
- # is a TTY. This provides a mechanism to allow said processes to
- # enable emitting code codes, for example.
- if os.isatty(orig_stdout.fileno()):
-- os.environ[b'MACH_STDOUT_ISATTY'] = b'1'
-+ os.environ['MACH_STDOUT_ISATTY'] = '1'
-
- return self._run(argv)
- except KeyboardInterrupt:
diff --git a/user/thunderbird/rust-32bit.patch b/user/thunderbird/rust-32bit.patch
new file mode 100644
index 000000000..4829e44bf
--- /dev/null
+++ b/user/thunderbird/rust-32bit.patch
@@ -0,0 +1,30 @@
+LTO kills the build on 32-bit architectures.
+
+--- firefox-128.0/config/makefiles/rust.mk.old 2024-07-04 11:20:25.000000000 -0500
++++ firefox-128.0/config/makefiles/rust.mk 2024-08-04 03:20:25.375459833 -0500
+@@ -82,25 +82,6 @@
+ # These flags are passed via `cargo rustc` and only apply to the final rustc
+ # invocation (i.e., only the top-level crate, not its dependencies).
+ cargo_rustc_flags = $(CARGO_RUSTCFLAGS)
+-ifndef DEVELOPER_OPTIONS
+-ifndef MOZ_DEBUG_RUST
+-# Enable link-time optimization for release builds, but not when linking
+-# gkrust_gtest. And not when doing cross-language LTO.
+-ifndef MOZ_LTO_RUST_CROSS
+-# Never enable when sancov is enabled to work around https://github.com/rust-lang/rust/issues/90300.
+-ifndef rustflags_sancov
+-# Never enable when coverage is enabled to work around https://github.com/rust-lang/rust/issues/90045.
+-ifndef MOZ_CODE_COVERAGE
+-ifeq (,$(findstring gkrust_gtest,$(RUST_LIBRARY_FILE)))
+-cargo_rustc_flags += -Clto$(if $(filter full,$(MOZ_LTO_RUST_CROSS)),=fat)
+-endif
+-# We need -Cembed-bitcode=yes for all crates when using -Clto.
+-RUSTFLAGS += -Cembed-bitcode=yes
+-endif
+-endif
+-endif
+-endif
+-endif
+
+ ifdef CARGO_INCREMENTAL
+ export CARGO_INCREMENTAL
diff --git a/user/thunderbird/shut-up-warning.patch b/user/thunderbird/shut-up-warning.patch
new file mode 100644
index 000000000..bc90b6e2b
--- /dev/null
+++ b/user/thunderbird/shut-up-warning.patch
@@ -0,0 +1,11 @@
+--- firefox-68.0.1/gfx/2d/HelpersCairo.h.old 2019-07-17 20:51:26.000000000 +0000
++++ firefox-68.0.1/gfx/2d/HelpersCairo.h 2019-08-10 11:38:36.047380153 +0000
+@@ -149,7 +149,7 @@
+ case SurfaceFormat::R5G6B5_UINT16:
+ return CAIRO_FORMAT_RGB16_565;
+ default:
+- gfxCriticalError() << "Unknown image format " << (int)format;
++ //gfxCriticalError() << "Unknown image format " << (int)format;
+ return CAIRO_FORMAT_ARGB32;
+ }
+ }
diff --git a/user/thunderbird/skia-endian.patch b/user/thunderbird/skia-endian.patch
new file mode 100644
index 000000000..7a88b0869
--- /dev/null
+++ b/user/thunderbird/skia-endian.patch
@@ -0,0 +1,112 @@
+https://bugzilla.mozilla.org/show_bug.cgi?id=1888396
+
+--- firefox-128.0/gfx/skia/skia/include/private/SkColorData.h
++++ firefox-128.0/gfx/skia/skia/include/private/SkColorData.h
+@@ -12,6 +12,13 @@ #include "include/core/SkColor.h"
+ #include "include/core/SkColorPriv.h"
+ #include "include/private/base/SkTo.h"
+
++/* Macro to covert between big endian and little endian memory order. */
++#ifdef SK_CPU_BENDIAN
++#define BE_CONVERT(c) ((((c) & 0xff)<<24) | (((c) & 0xff00)<<8) | (((c) & 0xff0000)>>8) | (((c) & 0xff000000)>>24))
++#else
++#define BE_CONVERT(c) c
++#endif
++
+ ////////////////////////////////////////////////////////////////////////////////////////////
+ // Convert a 16bit pixel to a 32bit pixel
+
+--- firefox-128.0/gfx/skia/skia/src/core/SkBlitRow_D32.cpp
++++ firefox-128.0/gfx/skia/skia/src/core/SkBlitRow_D32.cpp
+@@ -555,7 +555,7 @@ }
+ void SkBlitRow::Color32(SkPMColor dst[], int count, SkPMColor color) {
+ switch (SkGetPackedA32(color)) {
+ case 0: /* Nothing to do */ return;
+- case 255: SkOpts::memset32(dst, color, count); return;
++ case 255: SkOpts::memset32(dst, BE_CONVERT(color), count); return;
+ }
+- return SkOpts::blit_row_color32(dst, count, color);
++ return SkOpts::blit_row_color32(dst, count, BE_CONVERT(color));
+ }
+--- firefox-128.0/gfx/skia/skia/src/core/SkBlitter_ARGB32.cpp
++++ firefox-128.0/gfx/skia/skia/src/core/SkBlitter_ARGB32.cpp
+@@ -1487,7 +1487,7 @@ }
+ unsigned aa = antialias[0];
+ if (aa) {
+ if ((opaqueMask & aa) == 255) {
+- SkOpts::memset32(device, color, count);
++ SkOpts::memset32(device, BE_CONVERT(color), count);
+ } else {
+ uint32_t sc = SkAlphaMulQ(color, SkAlpha255To256(aa));
+ SkBlitRow::Color32(device, count, sc);
+@@ -1503,17 +1503,17 @@ void SkARGB32_Blitter::blitAntiH2(int x,
+ uint32_t* device = fDevice.writable_addr32(x, y);
+ SkDEBUGCODE((void)fDevice.writable_addr32(x + 1, y);)
+
+- device[0] = SkBlendARGB32(fPMColor, device[0], a0);
+- device[1] = SkBlendARGB32(fPMColor, device[1], a1);
++ device[0] = BE_CONVERT(SkBlendARGB32(fPMColor, BE_CONVERT(device[0]), a0));
++ device[1] = BE_CONVERT(SkBlendARGB32(fPMColor, BE_CONVERT(device[1]), a1));
+ }
+
+ void SkARGB32_Blitter::blitAntiV2(int x, int y, U8CPU a0, U8CPU a1) {
+ uint32_t* device = fDevice.writable_addr32(x, y);
+ SkDEBUGCODE((void)fDevice.writable_addr32(x, y + 1);)
+
+- device[0] = SkBlendARGB32(fPMColor, device[0], a0);
++ device[0] = BE_CONVERT(SkBlendARGB32(fPMColor, BE_CONVERT(device[0]), a0));
+ device = (uint32_t*)((char*)device + fDevice.rowBytes());
+- device[0] = SkBlendARGB32(fPMColor, device[0], a1);
++ device[0] = BE_CONVERT(SkBlendARGB32(fPMColor, BE_CONVERT(device[0]), a1));
+ }
+
+ //////////////////////////////////////////////////////////////////////////////////////
+@@ -1604,17 +1604,17 @@ void SkARGB32_Opaque_Blitter::blitAntiH2
+ uint32_t* device = fDevice.writable_addr32(x, y);
+ SkDEBUGCODE((void)fDevice.writable_addr32(x + 1, y);)
+
+- device[0] = SkFastFourByteInterp(fPMColor, device[0], a0);
+- device[1] = SkFastFourByteInterp(fPMColor, device[1], a1);
++ device[0] = BE_CONVERT(SkFastFourByteInterp(fPMColor, BE_CONVERT(device[0]), a0));
++ device[1] = BE_CONVERT(SkFastFourByteInterp(fPMColor, BE_CONVERT(device[1]), a1));
+ }
+
+ void SkARGB32_Opaque_Blitter::blitAntiV2(int x, int y, U8CPU a0, U8CPU a1) {
+ uint32_t* device = fDevice.writable_addr32(x, y);
+ SkDEBUGCODE((void)fDevice.writable_addr32(x, y + 1);)
+
+- device[0] = SkFastFourByteInterp(fPMColor, device[0], a0);
++ device[0] = BE_CONVERT(SkFastFourByteInterp(fPMColor, BE_CONVERT(device[0]), a0));
+ device = (uint32_t*)((char*)device + fDevice.rowBytes());
+- device[0] = SkFastFourByteInterp(fPMColor, device[0], a1);
++ device[0] = BE_CONVERT(SkFastFourByteInterp(fPMColor, BE_CONVERT(device[0]), a1));
+ }
+
+ ///////////////////////////////////////////////////////////////////////////////
+@@ -1634,7 +1634,7 @@ }
+ unsigned dst_scale = SkAlpha255To256(255 - SkGetPackedA32(color));
+ size_t rowBytes = fDevice.rowBytes();
+ while (--height >= 0) {
+- device[0] = color + SkAlphaMulQ(device[0], dst_scale);
++ device[0] = BE_CONVERT(color + SkAlphaMulQ(BE_CONVERT(device[0]), dst_scale));
+ device = (uint32_t*)((char*)device + rowBytes);
+ }
+ }
+@@ -1651,7 +1651,7 @@ uint32_t color = fPMColor;
+ size_t rowBytes = fDevice.rowBytes();
+
+ if (SkGetPackedA32(fPMColor) == 0xFF) {
+- SkOpts::rect_memset32(device, color, width, rowBytes, height);
++ SkOpts::rect_memset32(device, BE_CONVERT(color), width, rowBytes, height);
+ } else {
+ while (height --> 0) {
+ SkBlitRow::Color32(device, width, color);
+@@ -1680,7 +1680,7 @@ }
+ unsigned aa = antialias[0];
+ if (aa) {
+ if (aa == 255) {
+- SkOpts::memset32(device, black, count);
++ SkOpts::memset32(device, BE_CONVERT(black), count);
+ } else {
+ SkPMColor src = aa << SK_A32_SHIFT;
+ unsigned dst_scale = 256 - aa;
diff --git a/user/thunderbird/skia-unified.patch b/user/thunderbird/skia-unified.patch
new file mode 100644
index 000000000..cacfe3451
--- /dev/null
+++ b/user/thunderbird/skia-unified.patch
@@ -0,0 +1,786 @@
+This patch is not complete.
+
+It attempts to completely remove endian-specific surface formats from the
+entire tree, then replace it with a single swizzle in Skia.
+
+Most things are working, including most Web sites and graphics. However,
+notably, native widgets (like menus, or 'Remember password?' popups) cause
+an assertion failure.
+
+We need to ship beta6 and this gets people a browser with many unfortunate
+caveats, which is better than no browser at all.
+
+I intend to remain working with upstream on finding a way forward with the
+overall idea of this patch and hope to land something eventually.
+
+diff --git a/dom/canvas/CanvasRenderingContext2D.cpp b/dom/canvas/CanvasRenderingContext2D.cpp
+--- a/dom/canvas/CanvasRenderingContext2D.cpp
++++ b/dom/canvas/CanvasRenderingContext2D.cpp
+@@ -383,7 +383,7 @@ class AdjustedTargetForFilter {
+ }
+
+ if (!mFinalTarget->CanCreateSimilarDrawTarget(mSourceGraphicRect.Size(),
+- SurfaceFormat::B8G8R8A8)) {
++ SurfaceFormat::OS_RGBA)) {
+ mTarget = mFinalTarget;
+ mCtx = nullptr;
+ mFinalTarget = nullptr;
+@@ -391,7 +391,7 @@ class AdjustedTargetForFilter {
+ }
+
+ mTarget = mFinalTarget->CreateSimilarDrawTarget(mSourceGraphicRect.Size(),
+- SurfaceFormat::B8G8R8A8);
++ SurfaceFormat::OS_RGBA);
+
+ if (mTarget) {
+ // See bug 1524554.
+@@ -419,7 +419,7 @@ class AdjustedTargetForFilter {
+ }
+
+ RefPtr<DrawTarget> dt = mFinalTarget->CreateSimilarDrawTarget(
+- aRect.Size(), SurfaceFormat::B8G8R8A8);
++ aRect.Size(), SurfaceFormat::OS_RGBA);
+
+ if (dt) {
+ // See bug 1524554.
+@@ -516,7 +516,7 @@ class AdjustedTargetForShadow {
+ bounds.RoundOut();
+ if (!bounds.ToIntRect(&mTempRect) ||
+ !mFinalTarget->CanCreateSimilarDrawTarget(mTempRect.Size(),
+- SurfaceFormat::B8G8R8A8)) {
++ SurfaceFormat::OS_RGBA)) {
+ mTarget = mFinalTarget;
+ mCtx = nullptr;
+ mFinalTarget = nullptr;
+@@ -524,7 +524,7 @@ class AdjustedTargetForShadow {
+ }
+
+ mTarget = mFinalTarget->CreateShadowDrawTarget(
+- mTempRect.Size(), SurfaceFormat::B8G8R8A8, mSigma);
++ mTempRect.Size(), SurfaceFormat::OS_RGBA, mSigma);
+
+ if (mTarget) {
+ // See bug 1524554.
+@@ -2117,7 +2117,7 @@ CanvasRenderingContext2D::GetOptimizedSn
+ }
+
+ SurfaceFormat CanvasRenderingContext2D::GetSurfaceFormat() const {
+- return mOpaque ? SurfaceFormat::B8G8R8X8 : SurfaceFormat::B8G8R8A8;
++ return mOpaque ? SurfaceFormat::OS_RGBX : SurfaceFormat::OS_RGBA;
+ }
+
+ //
+@@ -5295,7 +5295,7 @@ static already_AddRefed<SourceSurface> E
+ }
+
+ RefPtr<DrawTarget> subrectDT = aTargetDT->CreateSimilarDrawTarget(
+- roundedOutSourceRectInt.Size(), SurfaceFormat::B8G8R8A8);
++ roundedOutSourceRectInt.Size(), SurfaceFormat::OS_RGBA);
+
+ if (subrectDT) {
+ // See bug 1524554.
+@@ -6061,7 +6061,7 @@ void CanvasRenderingContext2D::DrawWindo
+ }
+ }
+ drawDT = gfxPlatform::GetPlatform()->CreateOffscreenContentDrawTarget(
+- dtSize, SurfaceFormat::B8G8R8A8);
++ dtSize, SurfaceFormat::OS_RGBA);
+ if (!drawDT || !drawDT->IsValid()) {
+ aError.Throw(NS_ERROR_FAILURE);
+ return;
+@@ -6315,7 +6315,7 @@ void CanvasRenderingContext2D::EnsureErr
+
+ RefPtr<DrawTarget> errorTarget =
+ gfxPlatform::GetPlatform()->CreateOffscreenCanvasDrawTarget(
+- IntSize(1, 1), SurfaceFormat::B8G8R8A8);
++ IntSize(1, 1), SurfaceFormat::OS_RGBA);
+ MOZ_ASSERT(errorTarget, "Failed to allocate the error target!");
+
+ sErrorTarget.set(errorTarget.forget().take());
+@@ -6437,7 +6437,7 @@ void CanvasRenderingContext2D::PutImageD
+ dstData = lockedBits + dirtyRect.y * dstStride + dirtyRect.x * 4;
+ } else {
+ sourceSurface = Factory::CreateDataSourceSurface(
+- dirtyRect.Size(), SurfaceFormat::B8G8R8A8, false);
++ dirtyRect.Size(), SurfaceFormat::OS_RGBA, false);
+
+ // In certain scenarios, requesting larger than 8k image fails. Bug
+ // 803568 covers the details of how to run into it, but the full
+diff --git a/dom/canvas/ImageBitmap.cpp b/dom/canvas/ImageBitmap.cpp
+--- a/dom/canvas/ImageBitmap.cpp
++++ b/dom/canvas/ImageBitmap.cpp
+@@ -227,7 +227,7 @@ static already_AddRefed<DataSourceSurfac
+ // this rectangle are outside the area where the input bitmap was placed, then
+ // they will be transparent black in output."
+ // So, instead, we force the output format to be SurfaceFormat::B8G8R8A8.
+- const SurfaceFormat format = SurfaceFormat::B8G8R8A8;
++ const SurfaceFormat format = SurfaceFormat::OS_RGBA;
+ const int bytesPerPixel = BytesPerPixel(format);
+ const IntSize dstSize =
+ IntSize(positiveCropRect.width, positiveCropRect.height);
+@@ -500,6 +500,11 @@ static already_AddRefed<layers::Image> C
+
+ // Convert RGBA to BGRA
+ RefPtr<DataSourceSurface> rgbaDataSurface = rgbaSurface->GetDataSurface();
++
++ if (SurfaceFormat::OS_RGBA == SurfaceFormat::R8G8B8A8) {
++ return CreateImageFromSurface(rgbaDataSurface);
++ }
++
+ DataSourceSurface::ScopedMap rgbaMap(rgbaDataSurface,
+ DataSourceSurface::READ);
+ if (NS_WARN_IF(!rgbaMap.IsMapped())) {
+@@ -724,7 +729,7 @@ SurfaceFromElementResult ImageBitmap::Su
+ bool requiresCrop = !allowUncropped && hasCropRect;
+ if (wantExactSize || requiresPremult || requiresCrop || mSurface) {
+ RefPtr<DrawTarget> dt = Factory::CreateDrawTarget(
+- BackendType::SKIA, IntSize(1, 1), SurfaceFormat::B8G8R8A8);
++ BackendType::SKIA, IntSize(1, 1), SurfaceFormat::OS_RGBA);
+ sfer.mSourceSurface = PrepareForDrawTarget(dt);
+
+ if (!sfer.mSourceSurface) {
+@@ -831,7 +836,7 @@ already_AddRefed<SourceSurface> ImageBit
+ // black, even if the surface is opaque, so force to an alpha format in
+ // that case.
+ if (!surfPortion.IsEqualEdges(mPictureRect) && isOpaque) {
+- format = SurfaceFormat::B8G8R8A8;
++ format = SurfaceFormat::OS_RGBA;
+ }
+
+ // If we need to pre-multiply the alpha, then we need to be able to
+diff --git a/dom/canvas/OffscreenCanvasDisplayHelper.cpp b/dom/canvas/OffscreenCanvasDisplayHelper.cpp
+--- a/dom/canvas/OffscreenCanvasDisplayHelper.cpp
++++ b/dom/canvas/OffscreenCanvasDisplayHelper.cpp
+@@ -181,7 +181,7 @@ bool OffscreenCanvasDisplayHelper::Commi
+
+ MutexAutoLock lock(mMutex);
+
+- gfx::SurfaceFormat format = gfx::SurfaceFormat::B8G8R8A8;
++ gfx::SurfaceFormat format = gfx::SurfaceFormat::OS_RGBA;
+ layers::TextureFlags flags = layers::TextureFlags::IMMUTABLE;
+
+ if (!mCanvasElement) {
+@@ -207,7 +207,7 @@ bool OffscreenCanvasDisplayHelper::Commi
+
+ if (mData.mIsOpaque) {
+ flags |= layers::TextureFlags::IS_OPAQUE;
+- format = gfx::SurfaceFormat::B8G8R8X8;
++ format = gfx::SurfaceFormat::OS_RGBX;
+ } else if (!mData.mIsAlphaPremult) {
+ flags |= layers::TextureFlags::NON_PREMULTIPLIED;
+ }
+diff --git a/gfx/2d/HelpersSkia.h b/gfx/2d/HelpersSkia.h
+--- a/gfx/2d/HelpersSkia.h
++++ b/gfx/2d/HelpersSkia.h
+@@ -26,6 +26,9 @@ namespace gfx {
+ static inline SkColorType GfxFormatToSkiaColorType(SurfaceFormat format) {
+ switch (format) {
+ case SurfaceFormat::B8G8R8A8:
++#if MOZ_BIG_ENDIAN()
++ //MOZ_DIAGNOSTIC_ASSERT(false, "wrong way unsupported by Skia");
++#endif
+ return kBGRA_8888_SkColorType;
+ case SurfaceFormat::B8G8R8X8:
+ // We probably need to do something here.
+@@ -37,7 +40,9 @@ static inline SkColorType GfxFormatToSki
+ case SurfaceFormat::R8G8B8A8:
+ return kRGBA_8888_SkColorType;
+ case SurfaceFormat::A8R8G8B8:
++#if MOZ_LITTLE_ENDIAN()
+ MOZ_DIAGNOSTIC_ASSERT(false, "A8R8G8B8 unsupported by Skia");
++#endif
+ return kRGBA_8888_SkColorType;
+ default:
+ MOZ_DIAGNOSTIC_ASSERT(false, "Unknown surface format");
+@@ -49,20 +54,20 @@ static inline SurfaceFormat SkiaColorTyp
+ SkColorType aColorType, SkAlphaType aAlphaType = kPremul_SkAlphaType) {
+ switch (aColorType) {
+ case kBGRA_8888_SkColorType:
+- return aAlphaType == kOpaque_SkAlphaType ? SurfaceFormat::B8G8R8X8
+- : SurfaceFormat::B8G8R8A8;
++ return aAlphaType == kOpaque_SkAlphaType ? SurfaceFormat::OS_RGBX
++ : SurfaceFormat::OS_RGBA;
+ case kRGB_565_SkColorType:
+ return SurfaceFormat::R5G6B5_UINT16;
+ case kAlpha_8_SkColorType:
+ return SurfaceFormat::A8;
+ default:
+- return SurfaceFormat::B8G8R8A8;
++ return SurfaceFormat::OS_RGBA;
+ }
+ }
+
+ static inline SkAlphaType GfxFormatToSkiaAlphaType(SurfaceFormat format) {
+ switch (format) {
+- case SurfaceFormat::B8G8R8X8:
++ case SurfaceFormat::OS_RGBX:
+ case SurfaceFormat::R5G6B5_UINT16:
+ return kOpaque_SkAlphaType;
+ default:
+diff --git a/gfx/ipc/CrossProcessPaint.cpp b/gfx/ipc/CrossProcessPaint.cpp
+--- a/gfx/ipc/CrossProcessPaint.cpp
++++ b/gfx/ipc/CrossProcessPaint.cpp
+@@ -107,7 +107,7 @@ PaintFragment PaintFragment::Record(dom:
+ nsContentUtils::FlushLayoutForTree(ds->GetWindow());
+
+ // Initialize the recorder
+- SurfaceFormat format = SurfaceFormat::B8G8R8A8;
++ SurfaceFormat format = SurfaceFormat::OS_RGBA;
+ RefPtr<DrawTarget> referenceDt = Factory::CreateDrawTarget(
+ gfxPlatform::GetPlatform()->GetSoftwareBackend(), IntSize(1, 1), format);
+
+@@ -254,7 +254,7 @@ bool CrossProcessPaint::Start(dom::Windo
+ // Create the destination draw target
+ RefPtr<DrawTarget> drawTarget =
+ gfxPlatform::GetPlatform()->CreateOffscreenContentDrawTarget(
+- root->mSize, SurfaceFormat::B8G8R8A8);
++ root->mSize, SurfaceFormat::OS_RGBA);
+ if (!drawTarget || !drawTarget->IsValid()) {
+ CPP_LOG("Couldn't create (%d x %d) surface for fragment %" PRIu64
+ ".\n",
+diff --git a/gfx/ipc/GfxMessageUtils.h b/gfx/ipc/GfxMessageUtils.h
+--- a/gfx/ipc/GfxMessageUtils.h
++++ b/gfx/ipc/GfxMessageUtils.h
+@@ -677,7 +677,7 @@ struct ParamTraits<GeckoProcessType>
+ template <>
+ struct ParamTraits<mozilla::gfx::SurfaceFormat>
+ : public ContiguousEnumSerializer<mozilla::gfx::SurfaceFormat,
+- mozilla::gfx::SurfaceFormat::B8G8R8A8,
++ mozilla::gfx::SurfaceFormat::OS_RGBA,
+ mozilla::gfx::SurfaceFormat::UNKNOWN> {};
+
+ template <>
+diff --git a/gfx/layers/Compositor.cpp b/gfx/layers/Compositor.cpp
+--- a/gfx/layers/Compositor.cpp
++++ b/gfx/layers/Compositor.cpp
+@@ -36,7 +36,7 @@ class CompositorRecordedFrame final : pu
+ gfx::IntSize size = mBuffer->GetSize();
+
+ mSurface = gfx::Factory::CreateDataSourceSurface(
+- size, gfx::SurfaceFormat::B8G8R8A8,
++ size, gfx::SurfaceFormat::OS_RGBA,
+ /* aZero = */ false);
+
+ if (!mBuffer->MapAndCopyInto(mSurface, size)) {
+diff --git a/gfx/layers/ImageDataSerializer.cpp b/gfx/layers/ImageDataSerializer.cpp
+--- a/gfx/layers/ImageDataSerializer.cpp
++++ b/gfx/layers/ImageDataSerializer.cpp
+@@ -288,16 +288,16 @@ already_AddRefed<DataSourceSurface> Data
+ RefPtr<DataSourceSurface> result;
+ if (aSurface) {
+ MOZ_ASSERT(aSurface->GetSize() == size);
+- MOZ_ASSERT(aSurface->GetFormat() == gfx::SurfaceFormat::B8G8R8X8);
++ MOZ_ASSERT(aSurface->GetFormat() == gfx::SurfaceFormat::OS_RGBX);
+ if (aSurface->GetSize() == size &&
+- aSurface->GetFormat() == gfx::SurfaceFormat::B8G8R8X8) {
++ aSurface->GetFormat() == gfx::SurfaceFormat::OS_RGBX) {
+ result = aSurface;
+ }
+ }
+
+ if (!result) {
+ result =
+- Factory::CreateDataSourceSurface(size, gfx::SurfaceFormat::B8G8R8X8);
++ Factory::CreateDataSourceSurface(size, gfx::SurfaceFormat::OS_RGBX);
+ }
+ if (NS_WARN_IF(!result)) {
+ return nullptr;
+@@ -320,7 +320,7 @@ already_AddRefed<DataSourceSurface> Data
+ ycbcrData.mChromaSubsampling = aDescriptor.chromaSubsampling();
+
+- gfx::ConvertYCbCrToRGB(ycbcrData, gfx::SurfaceFormat::B8G8R8X8, size,
++ gfx::ConvertYCbCrToRGB(ycbcrData, gfx::SurfaceFormat::OS_RGBX, size,
+ map.mData, map.mStride);
+
+ result->Unmap();
+ return result.forget();
+diff --git a/gfx/layers/composite/TextureHost.cpp b/gfx/layers/composite/TextureHost.cpp
+--- a/gfx/layers/composite/TextureHost.cpp
++++ b/gfx/layers/composite/TextureHost.cpp
+@@ -182,7 +182,7 @@ already_AddRefed<TextureHost> CreateDumm
+ aFlags &= ~TextureFlags::DEALLOCATE_CLIENT;
+ aFlags |= TextureFlags::DUMMY_TEXTURE;
+ UniquePtr<TextureData> textureData(BufferTextureData::Create(
+- gfx::IntSize(1, 1), gfx::SurfaceFormat::B8G8R8A8, gfx::BackendType::SKIA,
++ gfx::IntSize(1, 1), gfx::SurfaceFormat::OS_RGBA, gfx::BackendType::SKIA,
+ aBackend, aFlags, TextureAllocationFlags::ALLOC_DEFAULT, nullptr));
+ SurfaceDescriptor surfDesc;
+ textureData->Serialize(surfDesc);
+diff --git a/gfx/layers/ipc/SharedSurfacesChild.cpp b/gfx/layers/ipc/SharedSurfacesChild.cpp
+--- a/gfx/layers/ipc/SharedSurfacesChild.cpp
++++ b/gfx/layers/ipc/SharedSurfacesChild.cpp
+@@ -241,7 +241,7 @@ nsresult SharedSurfacesChild::ShareInter
+
+ SurfaceFormat format = aSurface->GetFormat();
+ MOZ_RELEASE_ASSERT(
+- format == SurfaceFormat::B8G8R8X8 || format == SurfaceFormat::B8G8R8A8,
++ format == SurfaceFormat::OS_RGBX || format == SurfaceFormat::OS_RGBA,
+ "bad format");
+
+ data->MarkShared(manager->GetNextExternalImageId());
+diff --git a/gfx/layers/wr/WebRenderLayerManager.cpp b/gfx/layers/wr/WebRenderLayerManager.cpp
+--- a/gfx/layers/wr/WebRenderLayerManager.cpp
++++ b/gfx/layers/wr/WebRenderLayerManager.cpp
+@@ -512,7 +512,7 @@ void WebRenderLayerManager::MakeSnapshot
+ #ifdef MOZ_WIDGET_ANDROID
+ SurfaceFormat::R8G8B8A8;
+ #else
+- SurfaceFormat::B8G8R8A8;
++ SurfaceFormat::OS_RGBA;
+ #endif
+ RefPtr<TextureClient> texture = TextureClient::CreateForRawBufferAccess(
+ WrBridge(), format, aSize.ToUnknownSize(), BackendType::SKIA,
+diff --git a/gfx/layers/wr/WebRenderTextureHost.cpp b/gfx/layers/wr/WebRenderTextureHost.cpp
+--- a/gfx/layers/wr/WebRenderTextureHost.cpp
++++ b/gfx/layers/wr/WebRenderTextureHost.cpp
+@@ -159,7 +159,7 @@ int32_t WebRenderTextureHost::GetRGBStri
+ // XXX this stride is used until yuv image rendering by webrender is used.
+ // Software converted RGB buffers strides are aliened to 16
+ return gfx::GetAlignedStride<16>(
+- GetSize().width, BytesPerPixel(gfx::SurfaceFormat::B8G8R8A8));
++ GetSize().width, BytesPerPixel(gfx::SurfaceFormat::OS_RGBA));
+ }
+ return ImageDataSerializer::ComputeRGBStride(format, GetSize().width);
+ }
+diff --git a/gfx/thebes/gfx2DGlue.h b/gfx/thebes/gfx2DGlue.h
+--- a/gfx/thebes/gfx2DGlue.h
++++ b/gfx/thebes/gfx2DGlue.h
+@@ -68,9 +68,9 @@ inline gfxRect ThebesRect(const RectDoub
+
+ inline gfxImageFormat SurfaceFormatToImageFormat(SurfaceFormat aFormat) {
+ switch (aFormat) {
+- case SurfaceFormat::B8G8R8A8:
++ case SurfaceFormat::OS_RGBA:
+ return SurfaceFormat::A8R8G8B8_UINT32;
+- case SurfaceFormat::B8G8R8X8:
++ case SurfaceFormat::OS_RGBX:
+ return SurfaceFormat::X8R8G8B8_UINT32;
+ case SurfaceFormat::R5G6B5_UINT16:
+ return SurfaceFormat::R5G6B5_UINT16;
+@@ -84,16 +84,16 @@ inline gfxImageFormat SurfaceFormatToIma
+ inline SurfaceFormat ImageFormatToSurfaceFormat(gfxImageFormat aFormat) {
+ switch (aFormat) {
+ case SurfaceFormat::A8R8G8B8_UINT32:
+- return SurfaceFormat::B8G8R8A8;
++ return SurfaceFormat::OS_RGBA;
+ case SurfaceFormat::X8R8G8B8_UINT32:
+- return SurfaceFormat::B8G8R8X8;
++ return SurfaceFormat::OS_RGBX;
+ case SurfaceFormat::R5G6B5_UINT16:
+ return SurfaceFormat::R5G6B5_UINT16;
+ case SurfaceFormat::A8:
+ return SurfaceFormat::A8;
+ default:
+ case SurfaceFormat::UNKNOWN:
+- return SurfaceFormat::B8G8R8A8;
++ return SurfaceFormat::OS_RGBA;
+ }
+ }
+
+@@ -102,9 +102,11 @@ inline gfxContentType ContentForFormat(c
+ case SurfaceFormat::R5G6B5_UINT16:
+ case SurfaceFormat::B8G8R8X8:
+ case SurfaceFormat::R8G8B8X8:
++ case SurfaceFormat::X8R8G8B8:
+ return gfxContentType::COLOR;
+ case SurfaceFormat::A8:
+ return gfxContentType::ALPHA;
++ case SurfaceFormat::A8R8G8B8:
+ case SurfaceFormat::B8G8R8A8:
+ case SurfaceFormat::R8G8B8A8:
+ default:
+diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp
+--- a/gfx/thebes/gfxPlatform.cpp
++++ b/gfx/thebes/gfxPlatform.cpp
+@@ -987,7 +987,7 @@ void gfxPlatform::Init() {
+
+ gPlatform->mScreenReferenceDrawTarget =
+ gPlatform->CreateOffscreenContentDrawTarget(IntSize(1, 1),
+- SurfaceFormat::B8G8R8A8);
++ SurfaceFormat::OS_RGBA);
+ if (!gPlatform->mScreenReferenceDrawTarget ||
+ !gPlatform->mScreenReferenceDrawTarget->IsValid()) {
+ // If TDR is detected, create a draw target with software backend
+diff --git a/gfx/thebes/gfxPlatformWorker.cpp b/gfx/thebes/gfxPlatformWorker.cpp
+--- a/gfx/thebes/gfxPlatformWorker.cpp
++++ b/gfx/thebes/gfxPlatformWorker.cpp
+@@ -64,7 +64,7 @@ RefPtr<mozilla::gfx::DrawTarget>
+ gfxPlatformWorker::ScreenReferenceDrawTarget() {
+ if (!mScreenReferenceDrawTarget) {
+ mScreenReferenceDrawTarget = Factory::CreateDrawTarget(
+- BackendType::SKIA, IntSize(1, 1), SurfaceFormat::B8G8R8A8);
++ BackendType::SKIA, IntSize(1, 1), SurfaceFormat::OS_RGBA);
+ }
+ return mScreenReferenceDrawTarget;
+ }
+diff --git a/gfx/thebes/gfxUtils.cpp b/gfx/thebes/gfxUtils.cpp
+--- a/gfx/thebes/gfxUtils.cpp
++++ b/gfx/thebes/gfxUtils.cpp
+@@ -1082,10 +1082,10 @@ nsresult gfxUtils::EncodeSourceSurfaceAs
+ }
+
+ RefPtr<DataSourceSurface> dataSurface;
+- if (aSurface->GetFormat() != SurfaceFormat::B8G8R8A8) {
++ if (aSurface->GetFormat() != SurfaceFormat::OS_RGBA) {
+ // FIXME bug 995807 (B8G8R8X8), bug 831898 (R5G6B5)
+ dataSurface = gfxUtils::CopySurfaceToDataSourceSurfaceWithFormat(
+- aSurface, SurfaceFormat::B8G8R8A8);
++ aSurface, SurfaceFormat::OS_RGBA);
+ } else {
+ dataSurface = aSurface->GetDataSurface();
+ }
+diff --git a/gfx/webrender_bindings/RenderCompositorSWGL.cpp b/gfx/webrender_bindings/RenderCompositorSWGL.cpp
+--- a/gfx/webrender_bindings/RenderCompositorSWGL.cpp
++++ b/gfx/webrender_bindings/RenderCompositorSWGL.cpp
+@@ -7,6 +7,7 @@
+ #include "RenderCompositorSWGL.h"
+
+ #include "mozilla/gfx/Logging.h"
++#include "mozilla/gfx/Swizzle.h"
+ #include "mozilla/widget/CompositorWidget.h"
+
+ #ifdef MOZ_WIDGET_GTK
+@@ -92,8 +93,8 @@ bool RenderCompositorSWGL::AllocateMappe
+ gfx::SurfaceFormat format = gfx::SurfaceFormat::UNKNOWN;
+ if (bufferMode != layers::BufferMode::BUFFERED && !mSurface &&
+ mDT->LockBits(&data, &size, &stride, &format) &&
+- (format != gfx::SurfaceFormat::B8G8R8A8 &&
+- format != gfx::SurfaceFormat::B8G8R8X8)) {
++ (format != gfx::SurfaceFormat::OS_RGBA &&
++ format != gfx::SurfaceFormat::OS_RGBX)) {
+ // We tried to lock the DT and it succeeded, but the size or format
+ // of the data is not compatible, so just release it and fall back below...
+ mDT->ReleaseBits(data);
+@@ -127,7 +128,7 @@ bool RenderCompositorSWGL::AllocateMappe
+ size = bounds.Size().ToUnknownSize();
+ if (!mSurface || mSurface->GetSize() != size) {
+ mSurface = gfx::Factory::CreateDataSourceSurface(
+- size, gfx::SurfaceFormat::B8G8R8A8);
++ size, gfx::SurfaceFormat::OS_RGBA);
+ }
+ gfx::DataSourceSurface::MappedSurface map = {nullptr, 0};
+ if (!mSurface || !mSurface->Map(gfx::DataSourceSurface::READ_WRITE, &map)) {
+@@ -242,6 +243,12 @@ void RenderCompositorSWGL::CommitMappedB
+ }
+ mDT->Flush();
+
++#if MOZ_BIG_ENDIAN()
++ gfx::SwizzleData(mMappedData, mMappedStride, gfx::SurfaceFormat::B8G8R8A8,
++ mMappedData, mMappedStride, gfx::SurfaceFormat::A8R8G8B8,
++ mDT->GetSize());
++#endif
++
+ // Done with the DT. Hand it back to the widget and clear out any trace of it.
+ mWidget->EndRemoteDrawingInRegion(mDT, mDirtyRegion);
+ mDirtyRegion.SetEmpty();
+diff --git a/gfx/webrender_bindings/RenderTextureHostSWGL.cpp b/gfx/webrender_bindings/RenderTextureHostSWGL.cpp
+--- a/gfx/webrender_bindings/RenderTextureHostSWGL.cpp
++++ b/gfx/webrender_bindings/RenderTextureHostSWGL.cpp
+@@ -36,8 +36,8 @@ bool RenderTextureHostSWGL::UpdatePlanes
+ }
+ GLenum internalFormat = 0;
+ switch (format) {
+- case gfx::SurfaceFormat::B8G8R8A8:
+- case gfx::SurfaceFormat::B8G8R8X8:
++ case gfx::SurfaceFormat::OS_RGBA:
++ case gfx::SurfaceFormat::OS_RGBX:
+ MOZ_ASSERT(colorDepth == gfx::ColorDepth::COLOR_8);
+ internalFormat = LOCAL_GL_RGBA8;
+ break;
+diff --git a/gfx/webrender_bindings/WebRenderTypes.h b/gfx/webrender_bindings/WebRenderTypes.h
+--- a/gfx/webrender_bindings/WebRenderTypes.h
++++ b/gfx/webrender_bindings/WebRenderTypes.h
+@@ -105,7 +105,7 @@ inline Maybe<wr::ImageFormat> SurfaceFor
+ inline gfx::SurfaceFormat ImageFormatToSurfaceFormat(ImageFormat aFormat) {
+ switch (aFormat) {
+ case ImageFormat::BGRA8:
+- return gfx::SurfaceFormat::B8G8R8A8;
++ return gfx::SurfaceFormat::OS_RGBA;
+ case ImageFormat::R8:
+ return gfx::SurfaceFormat::A8;
+ case ImageFormat::R16:
+diff --git a/image/imgTools.cpp b/image/imgTools.cpp
+--- a/image/imgTools.cpp
++++ b/image/imgTools.cpp
+@@ -425,8 +425,8 @@ static nsresult EncodeImageData(DataSour
+ const nsACString& aMimeType,
+ const nsAString& aOutputOptions,
+ nsIInputStream** aStream) {
+- MOZ_ASSERT(aDataSurface->GetFormat() == SurfaceFormat::B8G8R8A8 ||
+- aDataSurface->GetFormat() == SurfaceFormat::B8G8R8X8,
++ MOZ_ASSERT(aDataSurface->GetFormat() == SurfaceFormat::OS_RGBA ||
++ aDataSurface->GetFormat() == SurfaceFormat::OS_RGBX,
+ "We're assuming B8G8R8A8/X8");
+
+ // Get an image encoder for the media type
+@@ -474,13 +474,13 @@ imgTools::EncodeImage(imgIContainer* aCo
+
+ RefPtr<DataSourceSurface> dataSurface;
+
+- if (frame->GetFormat() == SurfaceFormat::B8G8R8A8 ||
+- frame->GetFormat() == SurfaceFormat::B8G8R8X8) {
++ if (frame->GetFormat() == SurfaceFormat::OS_RGBA ||
++ frame->GetFormat() == SurfaceFormat::OS_RGBX) {
+ dataSurface = frame->GetDataSurface();
+ } else {
+ // Convert format to SurfaceFormat::B8G8R8A8
+ dataSurface = gfxUtils::CopySurfaceToDataSourceSurfaceWithFormat(
+- frame, SurfaceFormat::B8G8R8A8);
++ frame, SurfaceFormat::OS_RGBA);
+ }
+
+ NS_ENSURE_TRUE(dataSurface, NS_ERROR_FAILURE);
+@@ -522,8 +522,8 @@ imgTools::EncodeScaledImage(imgIContaine
+
+ // If the given surface is the right size/format, we can encode it directly.
+ if (scaledSize == frame->GetSize() &&
+- (frame->GetFormat() == SurfaceFormat::B8G8R8A8 ||
+- frame->GetFormat() == SurfaceFormat::B8G8R8X8)) {
++ (frame->GetFormat() == SurfaceFormat::OS_RGBA ||
++ frame->GetFormat() == SurfaceFormat::OS_RGBX)) {
+ RefPtr<DataSourceSurface> dataSurface = frame->GetDataSurface();
+ if (dataSurface) {
+ return EncodeImageData(dataSurface, aMimeType, aOutputOptions, aStream);
+@@ -533,7 +533,7 @@ imgTools::EncodeScaledImage(imgIContaine
+ // Otherwise we need to scale it using a draw target.
+ // Ensure the surface is initialized to clear in case we need to blend to it.
+ RefPtr<DataSourceSurface> dataSurface = Factory::CreateDataSourceSurface(
+- scaledSize, SurfaceFormat::B8G8R8A8, true);
++ scaledSize, SurfaceFormat::OS_RGBA, true);
+ if (NS_WARN_IF(!dataSurface)) {
+ return NS_ERROR_FAILURE;
+ }
+@@ -545,7 +545,7 @@ imgTools::EncodeScaledImage(imgIContaine
+
+ RefPtr<DrawTarget> dt = Factory::CreateDrawTargetForData(
+ BackendType::SKIA, map.GetData(), dataSurface->GetSize(), map.GetStride(),
+- SurfaceFormat::B8G8R8A8);
++ SurfaceFormat::OS_RGBA);
+ if (!dt) {
+ gfxWarning() << "imgTools::EncodeImage failed in CreateDrawTargetForData";
+ return NS_ERROR_OUT_OF_MEMORY;
+@@ -603,7 +603,7 @@ imgTools::EncodeCroppedImage(imgIContain
+ frameHeight >= aOffsetY + aHeight);
+
+ RefPtr<DataSourceSurface> dataSurface = Factory::CreateDataSourceSurface(
+- IntSize(aWidth, aHeight), SurfaceFormat::B8G8R8A8,
++ IntSize(aWidth, aHeight), SurfaceFormat::OS_RGBA,
+ /* aZero = */ true);
+ if (NS_WARN_IF(!dataSurface)) {
+ return NS_ERROR_FAILURE;
+@@ -616,7 +616,7 @@ imgTools::EncodeCroppedImage(imgIContain
+
+ RefPtr<DrawTarget> dt = Factory::CreateDrawTargetForData(
+ BackendType::SKIA, map.GetData(), dataSurface->GetSize(), map.GetStride(),
+- SurfaceFormat::B8G8R8A8);
++ SurfaceFormat::OS_RGBA);
+ if (!dt) {
+ gfxWarning()
+ << "imgTools::EncodeCroppedImage failed in CreateDrawTargetForData";
+diff --git a/layout/base/PresShell.cpp b/layout/base/PresShell.cpp
+--- a/layout/base/PresShell.cpp
++++ b/layout/base/PresShell.cpp
+@@ -5124,7 +5124,7 @@ already_AddRefed<SourceSurface> PresShel
+
+ RefPtr<DrawTarget> dt =
+ gfxPlatform::GetPlatform()->CreateOffscreenContentDrawTarget(
+- IntSize(pixelArea.width, pixelArea.height), SurfaceFormat::B8G8R8A8);
++ IntSize(pixelArea.width, pixelArea.height), SurfaceFormat::OS_RGBA);
+ if (!dt || !dt->IsValid()) {
+ return nullptr;
+ }
+diff --git a/layout/base/nsLayoutUtils.cpp b/layout/base/nsLayoutUtils.cpp
+--- a/layout/base/nsLayoutUtils.cpp
++++ b/layout/base/nsLayoutUtils.cpp
+@@ -7022,9 +7022,9 @@ SurfaceFromElementResult nsLayoutUtils::
+ result.mAlphaType = gfxAlphaType::Opaque;
+ RefPtr<DrawTarget> ref =
+ aTarget ? aTarget : gfxPlatform::ThreadLocalScreenReferenceDrawTarget();
+- if (ref->CanCreateSimilarDrawTarget(size, SurfaceFormat::B8G8R8A8)) {
++ if (ref->CanCreateSimilarDrawTarget(size, SurfaceFormat::OS_RGBA)) {
+ RefPtr<DrawTarget> dt =
+- ref->CreateSimilarDrawTarget(size, SurfaceFormat::B8G8R8A8);
++ ref->CreateSimilarDrawTarget(size, SurfaceFormat::OS_RGBA);
+ if (dt) {
+ result.mSourceSurface = dt->Snapshot();
+ }
+@@ -7102,12 +7102,12 @@ SurfaceFromElementResult nsLayoutUtils::
+ : gfxPlatform::GetPlatform()
+ ->ThreadLocalScreenReferenceDrawTarget();
+ if (!ref->CanCreateSimilarDrawTarget(displaySize,
+- SurfaceFormat::B8G8R8A8)) {
++ SurfaceFormat::OS_RGBA)) {
+ return result;
+ }
+
+ RefPtr<DrawTarget> dt =
+- ref->CreateSimilarDrawTarget(displaySize, SurfaceFormat::B8G8R8A8);
++ ref->CreateSimilarDrawTarget(displaySize, SurfaceFormat::OS_RGBA);
+ if (!dt) {
+ return result;
+ }
+@@ -7380,9 +7380,9 @@ SurfaceFromElementResult nsLayoutUtils::
+ RefPtr<DrawTarget> ref =
+ aTarget ? aTarget
+ : gfxPlatform::GetPlatform()->ScreenReferenceDrawTarget();
+- if (ref->CanCreateSimilarDrawTarget(size, SurfaceFormat::B8G8R8A8)) {
++ if (ref->CanCreateSimilarDrawTarget(size, SurfaceFormat::OS_RGBA)) {
+ RefPtr<DrawTarget> dt =
+- ref->CreateSimilarDrawTarget(size, SurfaceFormat::B8G8R8A8);
++ ref->CreateSimilarDrawTarget(size, SurfaceFormat::OS_RGBA);
+ if (dt) {
+ result.mSourceSurface = dt->Snapshot();
+ }
+diff --git a/layout/painting/nsCSSRenderingGradients.cpp b/layout/painting/nsCSSRenderingGradients.cpp
+--- a/layout/painting/nsCSSRenderingGradients.cpp
++++ b/layout/painting/nsCSSRenderingGradients.cpp
+@@ -1160,7 +1160,7 @@ bool nsCSSGradientRenderer::TryPaintTile
+ {
+ RefPtr<gfx::DrawTarget> tileTarget =
+ aContext.GetDrawTarget()->CreateSimilarDrawTarget(
+- tileSize, gfx::SurfaceFormat::B8G8R8A8);
++ tileSize, gfx::SurfaceFormat::OS_RGBA);
+ if (!tileTarget || !tileTarget->IsValid()) {
+ return false;
+ }
+diff --git a/layout/painting/nsDisplayList.cpp b/layout/painting/nsDisplayList.cpp
+--- a/layout/painting/nsDisplayList.cpp
++++ b/layout/painting/nsDisplayList.cpp
+@@ -5043,7 +5043,7 @@ void nsDisplayBlendMode::Paint(nsDisplay
+ // we're going to draw to. This will include the same transform as
+ // is currently on |dt|.
+ RefPtr<DrawTarget> temp =
+- dt->CreateClippedDrawTarget(rect, SurfaceFormat::B8G8R8A8);
++ dt->CreateClippedDrawTarget(rect, SurfaceFormat::OS_RGBA);
+ if (!temp) {
+ return;
+ }
+@@ -6870,7 +6870,7 @@ void nsDisplayTransform::Paint(nsDisplay
+ RefPtr<DrawTarget> untransformedDT =
+ gfxPlatform::GetPlatform()->CreateOffscreenContentDrawTarget(
+ IntSize(pixelBounds.Width(), pixelBounds.Height()),
+- SurfaceFormat::B8G8R8A8, true);
++ SurfaceFormat::OS_RGBA, true);
+ if (!untransformedDT || !untransformedDT->IsValid()) {
+ return;
+ }
+diff --git a/layout/painting/nsImageRenderer.cpp b/layout/painting/nsImageRenderer.cpp
+--- a/layout/painting/nsImageRenderer.cpp
++++ b/layout/painting/nsImageRenderer.cpp
+@@ -469,7 +469,7 @@ ImgDrawResult nsImageRenderer::Draw(nsPr
+ return ImgDrawResult::SUCCESS;
+ }
+ RefPtr<DrawTarget> tempDT = ctx->GetDrawTarget()->CreateSimilarDrawTarget(
+- tmpDTRect.Size(), SurfaceFormat::B8G8R8A8);
++ tmpDTRect.Size(), SurfaceFormat::OS_RGBA);
+ if (!tempDT || !tempDT->IsValid()) {
+ gfxDevCrash(LogReason::InvalidContext)
+ << "ImageRenderer::Draw problem " << gfx::hexa(tempDT);
+diff --git a/layout/svg/FilterInstance.cpp b/layout/svg/FilterInstance.cpp
+--- a/layout/svg/FilterInstance.cpp
++++ b/layout/svg/FilterInstance.cpp
+@@ -666,7 +666,7 @@ void FilterInstance::BuildSourcePaint(So
+
+ RefPtr<DrawTarget> offscreenDT =
+ gfxPlatform::GetPlatform()->CreateOffscreenContentDrawTarget(
+- neededRect.Size(), SurfaceFormat::B8G8R8A8);
++ neededRect.Size(), SurfaceFormat::OS_RGBA);
+ if (!offscreenDT || !offscreenDT->IsValid()) {
+ return;
+ }
+@@ -714,7 +714,7 @@ void FilterInstance::BuildSourceImage(Dr
+ }
+
+ RefPtr<DrawTarget> offscreenDT;
+- SurfaceFormat format = SurfaceFormat::B8G8R8A8;
++ SurfaceFormat format = SurfaceFormat::OS_RGBA;
+ if (aDest->CanCreateSimilarDrawTarget(neededRect.Size(), format)) {
+ offscreenDT = aDest->CreateSimilarDrawTargetForFilter(
+ neededRect.Size(), format, aFilter, aSource, aSourceRect, Point(0, 0));
+diff --git a/layout/svg/SVGMaskFrame.cpp b/layout/svg/SVGMaskFrame.cpp
+--- a/layout/svg/SVGMaskFrame.cpp
++++ b/layout/svg/SVGMaskFrame.cpp
+@@ -68,7 +68,7 @@ already_AddRefed<SourceSurface> SVGMaskF
+ RefPtr<DrawTarget> maskDT;
+ if (maskType == StyleMaskType::Luminance) {
+ maskDT = aParams.dt->CreateClippedDrawTarget(maskSurfaceRect,
+- SurfaceFormat::B8G8R8A8);
++ SurfaceFormat::OS_RGBA);
+ } else {
+ maskDT =
+ aParams.dt->CreateClippedDrawTarget(maskSurfaceRect, SurfaceFormat::A8);
+diff --git a/layout/svg/SVGPatternFrame.cpp b/layout/svg/SVGPatternFrame.cpp
+--- a/layout/svg/SVGPatternFrame.cpp
++++ b/layout/svg/SVGPatternFrame.cpp
+@@ -370,7 +370,7 @@ already_AddRefed<SourceSurface> SVGPatte
+ }
+
+ RefPtr<DrawTarget> dt = aDrawTarget->CreateSimilarDrawTargetWithBacking(
+- surfaceSize, SurfaceFormat::B8G8R8A8);
++ surfaceSize, SurfaceFormat::OS_RGBA);
+ if (!dt || !dt->IsValid()) {
+ return nullptr;
+ }
+diff --git a/layout/svg/SVGUtils.cpp b/layout/svg/SVGUtils.cpp
+--- a/layout/svg/SVGUtils.cpp
++++ b/layout/svg/SVGUtils.cpp
+@@ -488,7 +488,7 @@ class MixModeBlender {
+
+ RefPtr<DrawTarget> targetDT =
+ mSourceCtx->GetDrawTarget()->CreateSimilarDrawTarget(
+- drawRect.Size(), SurfaceFormat::B8G8R8A8);
++ drawRect.Size(), SurfaceFormat::OS_RGBA);
+ if (!targetDT || !targetDT->IsValid()) {
+ return nullptr;
+ }
+diff --git a/widget/gtk/DMABufSurface.cpp b/widget/gtk/DMABufSurface.cpp
+--- a/widget/gtk/DMABufSurface.cpp
++++ b/widget/gtk/DMABufSurface.cpp
+@@ -948,8 +948,8 @@ bool DMABufSurfaceRGBA::HasAlpha() {
+ }
+
+ gfx::SurfaceFormat DMABufSurfaceRGBA::GetFormat() {
+- return HasAlpha() ? gfx::SurfaceFormat::B8G8R8A8
+- : gfx::SurfaceFormat::B8G8R8X8;
++ return HasAlpha() ? gfx::SurfaceFormat::OS_RGBA
++ : gfx::SurfaceFormat::OS_RGBX;
+ }
+
+ // GL uses swapped R and B components so report accordingly.
+@@ -1662,7 +1662,7 @@ DMABufSurfaceYUV::GetAsSourceSurface() {
+ LOGDMABUF(("DMABufSurfaceYUV::GetAsSourceSurface UID %d", mUID));
+
+ gfx::IntSize size(GetWidth(), GetHeight());
+- const auto format = gfx::SurfaceFormat::B8G8R8A8;
++ const auto format = gfx::SurfaceFormat::OS_RGBA;
+ RefPtr<gfx::DataSourceSurface> source =
+ gfx::Factory::CreateDataSourceSurface(size, format);
+ if (NS_WARN_IF(!source)) {
+@@ -1692,7 +1692,7 @@ nsresult DMABufSurfaceYUV::BuildSurfaceD
+ LOGDMABUF(("DMABufSurfaceYUV::BuildSurfaceDescriptorBuffer UID %d", mUID));
+
+ gfx::IntSize size(GetWidth(), GetHeight());
+- const auto format = gfx::SurfaceFormat::B8G8R8A8;
++ const auto format = gfx::SurfaceFormat::OS_RGBA;
+
+ uint8_t* buffer = nullptr;
+ int32_t stride = 0;
+diff --git a/widget/gtk/WindowSurfaceX11.cpp b/widget/gtk/WindowSurfaceX11.cpp
+--- a/widget/gtk/WindowSurfaceX11.cpp
++++ b/widget/gtk/WindowSurfaceX11.cpp
+@@ -24,13 +24,13 @@ gfx::SurfaceFormat WindowSurfaceX11::Get
+ case 32:
+ if (aVisual->red_mask == 0xff0000 && aVisual->green_mask == 0xff00 &&
+ aVisual->blue_mask == 0xff) {
+- return gfx::SurfaceFormat::B8G8R8A8;
++ return gfx::SurfaceFormat::OS_RGBA;
+ }
+ break;
+ case 24:
+ if (aVisual->red_mask == 0xff0000 && aVisual->green_mask == 0xff00 &&
+ aVisual->blue_mask == 0xff) {
+- return gfx::SurfaceFormat::B8G8R8X8;
++ return gfx::SurfaceFormat::OS_RGBX;
+ }
+ break;
+ case 16:
diff --git a/user/thunderbird/stab.h b/user/thunderbird/stab.h
deleted file mode 100644
index 6f70af398..000000000
--- a/user/thunderbird/stab.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/* $OpenBSD: stab.h,v 1.3 2003/06/02 19:34:12 millert Exp $ */
-/* $NetBSD: stab.h,v 1.4 1994/10/26 00:56:25 cgd Exp $ */
-
-/*-
- * Copyright (c) 1991 The Regents of the University of California.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- *
- * @(#)stab.h 5.2 (Berkeley) 4/4/91
- */
-
-#ifndef _STAB_H_
-#define _STAB_H_
-
-/*
- * The following are symbols used by various debuggers and by the Pascal
- * compiler. Each of them must have one (or more) of the bits defined by
- * the N_STAB mask set.
- */
-
-#define N_GSYM 0x20 /* global symbol */
-#define N_FNAME 0x22 /* F77 function name */
-#define N_FUN 0x24 /* procedure name */
-#define N_STSYM 0x26 /* data segment variable */
-#define N_LCSYM 0x28 /* bss segment variable */
-#define N_MAIN 0x2a /* main function name */
-#define N_PC 0x30 /* global Pascal symbol */
-#define N_RSYM 0x40 /* register variable */
-#define N_SLINE 0x44 /* text segment line number */
-#define N_DSLINE 0x46 /* data segment line number */
-#define N_BSLINE 0x48 /* bss segment line number */
-#define N_SSYM 0x60 /* structure/union element */
-#define N_SO 0x64 /* main source file name */
-#define N_LSYM 0x80 /* stack variable */
-#define N_BINCL 0x82 /* include file beginning */
-#define N_SOL 0x84 /* included source file name */
-#define N_PSYM 0xa0 /* parameter variable */
-#define N_EINCL 0xa2 /* include file end */
-#define N_ENTRY 0xa4 /* alternate entry point */
-#define N_LBRAC 0xc0 /* left bracket */
-#define N_EXCL 0xc2 /* deleted include file */
-#define N_RBRAC 0xe0 /* right bracket */
-#define N_BCOMM 0xe2 /* begin common */
-#define N_ECOMM 0xe4 /* end common */
-#define N_ECOML 0xe8 /* end common (local name) */
-#define N_LENG 0xfe /* length of preceding entry */
-
-#endif /* !_STAB_H_ */
diff --git a/user/thunderbird/stackwalk-x86-ppc.patch b/user/thunderbird/stackwalk-x86-ppc.patch
index 9428e7238..df9ebfd94 100644
--- a/user/thunderbird/stackwalk-x86-ppc.patch
+++ b/user/thunderbird/stackwalk-x86-ppc.patch
@@ -1,16 +1,16 @@
---- thunderbird-52.6.0/mozilla/mozglue/misc/StackWalk.cpp
-+++ thunderbird-52.6.0/mozilla/mozglue/misc/StackWalk.cpp
-@@ -41,13 +41,7 @@ static CriticalAddress gCriticalAddress;
- #define MOZ_STACKWALK_SUPPORTS_MACOSX 0
+--- thunderbird-52.6.0/mozglue/misc/StackWalk.cpp
++++ thunderbird-52.6.0/mozglue/misc/StackWalk.cpp
+@@ -50,13 +50,6 @@ static CriticalAddress gCriticalAddress;
+ # define HAVE___LIBC_STACK_END 0
#endif
--#if (defined(linux) && \
+-#if (defined(linux) && \
- ((defined(__GNUC__) && (defined(__i386) || defined(PPC))) || \
-- defined(HAVE__UNWIND_BACKTRACE)))
--#define MOZ_STACKWALK_SUPPORTS_LINUX 1
+- defined(HAVE__UNWIND_BACKTRACE)) && \
+- (HAVE___LIBC_STACK_END || ANDROID))
+-# define MOZ_STACKWALK_SUPPORTS_LINUX 1
-#else
- #define MOZ_STACKWALK_SUPPORTS_LINUX 0
+ # define MOZ_STACKWALK_SUPPORTS_LINUX 0
-#endif
- #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1)
- #define HAVE___LIBC_STACK_END 1
+ #if HAVE___LIBC_STACK_END
diff --git a/user/thunderbird/webrender.patch b/user/thunderbird/webrender.patch
new file mode 100644
index 000000000..cfc920cfd
--- /dev/null
+++ b/user/thunderbird/webrender.patch
@@ -0,0 +1,28 @@
+# HG changeset patch
+# User Petr Sumbera <petr.sumbera@oracle.com>
+# Date 1648114576 25200
+# Thu Mar 24 02:36:16 2022 -0700
+# Node ID 903e5f164c0ed424492eec6f388c03cbbcf99913
+# Parent 20d81e68da033746bf81acbb08490f16679853da
+Bug 1716707 [s390x] Software WebRender does not support big endian
+
+--- firefox-128.0/image/imgFrame.cpp
++++ firefox-128.0/image/imgFrame.cpp
+@@ -382,6 +382,17 @@ mAborted = true;
+ return NS_ERROR_OUT_OF_MEMORY;
+ }
+
++#if MOZ_BIG_ENDIAN()
++ if (aBackend == gfx::BackendType::SKIA && canUseDataSurface) {
++ // SKIA is lying about what format it returns on big endian
++ for (int ii=0; ii < mRawSurface->GetSize().Height()*mRawSurface->Stride() / 4; ++ii) {
++ uint32_t *vals = (uint32_t*)(mRawSurface->GetData());
++ uint32_t val = ((vals[ii] << 8) & 0xFF00FF00 ) | ((vals[ii] >> 8) & 0xFF00FF );
++ vals[ii] = (val << 16) | (val >> 16);
++ }
++ }
++#endif
++
+ if (!canUseDataSurface) {
+ // We used an offscreen surface, which is an "optimized" surface from
+ // imgFrame's perspective.
diff --git a/user/thunderbird/without-jit.patch b/user/thunderbird/without-jit.patch
new file mode 100644
index 000000000..dff372ec0
--- /dev/null
+++ b/user/thunderbird/without-jit.patch
@@ -0,0 +1,28 @@
+diff -r 81fc811c3c39 toolkit/components/translations/actors/TranslationsParent.sys.mjs
+--- a/toolkit/components/translations/actors/TranslationsParent.sys.mjs Thu Aug 08 21:26:29 2024 -0700
++++ b/toolkit/components/translations/actors/TranslationsParent.sys.mjs Sat Aug 10 16:45:13 2024 -0700
+@@ -618,16 +618,25 @@
+ * Detect if Wasm SIMD is supported, and cache the value. It's better to check
+ * for support before downloading large binary blobs to a user who can't even
+ * use the feature. This function also respects mocks and simulating unsupported
+ * engines.
+ *
+ * @type {boolean}
+ */
+ static getIsTranslationsEngineSupported() {
++ try {
++ // Ensure WebAssembly is supported and enabled (may not be on tier-3).
++ if (!WebAssembly) {
++ return false;
++ }
++ } catch(e) {
++ return false;
++ }
++
+ if (lazy.simulateUnsupportedEnginePref) {
+ // Use the non-lazy console.log so that the user is always informed as to why
+ // the translations engine is not working.
+ console.log(
+ "Translations: The translations engine is disabled through the pref " +
+ '"browser.translations.simulateUnsupportedEngine".'
+ );
diff --git a/user/tiff/APKBUILD b/user/tiff/APKBUILD
index 7bb89ee3e..200ea8a91 100644
--- a/user/tiff/APKBUILD
+++ b/user/tiff/APKBUILD
@@ -1,20 +1,23 @@
-# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
+# Contributor: Sergey Lukin <sergej.lukin@gmail.com>
# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=tiff
-pkgver=4.0.10
+pkgver=4.1.0
pkgrel=0
pkgdesc="Library to read, create, and manipulate TIFF image files"
url="http://www.libtiff.org/"
arch="all"
license="MIT"
-depends=
+depends=""
depends_dev="zlib-dev libjpeg-turbo-dev"
makedepends="libtool autoconf automake $depends_dev"
subpackages="$pkgname-doc $pkgname-dev $pkgname-tools"
-source="http://download.osgeo.org/libtiff/$pkgname-$pkgver.tar.gz
- "
-# secfixes:
+source="http://download.osgeo.org/libtiff/$pkgname-$pkgver.tar.gz"
+
+# secfixes: libtiff
+# 4.0.10-r1:
+# - CVE-2019-6128
+# - CVE-2019-7663
# 4.0.9-r1:
# - CVE-2017-18013
# 4.0.9-r0:
@@ -36,7 +39,6 @@ source="http://download.osgeo.org/libtiff/$pkgname-$pkgver.tar.gz
# - CVE-2017-5225
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -49,12 +51,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -64,4 +64,4 @@ tools() {
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}
-sha512sums="d213e5db09fd56b8977b187c5a756f60d6e3e998be172550c2892dbdb4b2a8e8c750202bc863fe27d0d1c577ab9de1710d15e9f6ed665aadbfd857525a81eea8 tiff-4.0.10.tar.gz"
+sha512sums="fd541dcb11e3d5afaa1ec2f073c9497099727a52f626b338ef87dc93ca2e23ca5f47634015a4beac616d4e8f05acf7b7cd5797fb218758cc2ad31b390491c5a6 tiff-4.1.0.tar.gz"
diff --git a/user/tigervnc/0001-CSecurityTLS-Use-size_t-as-argument-for-new.patch b/user/tigervnc/0001-CSecurityTLS-Use-size_t-as-argument-for-new.patch
deleted file mode 100644
index 1c608048c..000000000
--- a/user/tigervnc/0001-CSecurityTLS-Use-size_t-as-argument-for-new.patch
+++ /dev/null
@@ -1,66 +0,0 @@
-From 065a471d16636c3fba5da8aed86ffa30dcfd489b Mon Sep 17 00:00:00 2001
-From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
-Date: Wed, 20 Mar 2019 13:22:51 -0500
-Subject: [PATCH 1/2] CSecurityTLS: Use size_t as argument for new
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Using an 'int' is invalid, and produces the following output under GCC 8.3.0:
-
-tigervnc-1.9.0/common/rfb/CSecurityTLS.cxx: In member function ‘void rfb::CSecurityTLS::checkSession()’:
-tigervnc-1.9.0/common/rfb/CSecurityTLS.cxx:384:11: error: specified bound range [18446744071562067968, 18446744073709551615] exceeds ‘INT_MAX’ [-Werror=format-truncation=]
- snprintf(certinfo, len, "This certificate has been signed by an unknown "
- ~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- "authority:\n\n%s\n\nDo you want to save it and "
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- "continue? ", info.data);
- ~~~~~~~~~~~~~~~~~~~~~~~~
-tigervnc-1.9.0/common/rfb/CSecurityTLS.cxx:380:26: error: argument 1 range [18446744071562067968, 18446744073709551615] exceeds maximum object size 9223372036854775807 [-Werror=alloc-size-larger-than=]
- certinfo = new char[len];
- ^
-In file included from /usr/include/c++/8.3.0/ext/new_allocator.h:33,
- from /usr/include/c++/8.3.0/powerpc64-foxkit-linux-musl/bits/c++allocator.h:33,
- from /usr/include/c++/8.3.0/bits/allocator.h:46,
- from /usr/include/c++/8.3.0/bits/stl_tree.h:64,
- from /usr/include/c++/8.3.0/set:60,
- from tigervnc-1.9.0/common/rfb/ConnParams.h:26,
- from tigervnc-1.9.0/common/rfb/SMsgHandler.h:28,
- from tigervnc-1.9.0/common/rfb/SConnection.h:29,
- from tigervnc-1.9.0/common/rfb/SSecurity.h:47,
- from tigervnc-1.9.0/common/rfb/SSecurityStack.h:23,
- from tigervnc-1.9.0/common/rfb/SSecurityVeNCrypt.h:32,
- from tigervnc-1.9.0/common/rfb/CSecurityTLS.h:34,
- from tigervnc-1.9.0/common/rfb/CSecurityTLS.cxx:36:
-/usr/include/c++/8.3.0/new:122:7: note: in a call to allocation function ‘void* operator new [](std::size_t)’ declared here
- void* operator new[](std::size_t) _GLIBCXX_THROW (std::bad_alloc)
- ^~~~~~~~
----
- common/rfb/CSecurityTLS.cxx | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/common/rfb/CSecurityTLS.cxx b/common/rfb/CSecurityTLS.cxx
-index c6d1e310..235df45d 100644
---- a/common/rfb/CSecurityTLS.cxx
-+++ b/common/rfb/CSecurityTLS.cxx
-@@ -383,7 +383,7 @@ void CSecurityTLS::checkSession()
- size_t out_size = 0;
- char *out_buf = NULL;
- char *certinfo = NULL;
-- int len = 0;
-+ size_t len = 0;
-
- vlog.debug("certificate issuer unknown");
-
-@@ -403,7 +403,7 @@ void CSecurityTLS::checkSession()
- "authority:\n\n%s\n\nDo you want to save it and "
- "continue? ", info.data);
-
-- for (int i = 0; i < len - 1; i++)
-+ for (size_t i = 0; i < len - 1; i++)
- if (certinfo[i] == ',' && certinfo[i + 1] == ' ')
- certinfo[i] = '\n';
-
---
-2.19.2
-
diff --git a/user/tigervnc/APKBUILD b/user/tigervnc/APKBUILD
index 1bbfcb8dc..cc4406240 100644
--- a/user/tigervnc/APKBUILD
+++ b/user/tigervnc/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=tigervnc
-pkgver=1.9.0
-pkgrel=3
+pkgver=1.13.1
+pkgrel=0
pkgdesc="High-performance, platform-neutral VNC remote desktop application"
url="https://tigervnc.org/"
arch="all"
@@ -11,18 +11,11 @@ license="GPL-2.0"
depends=""
makedepends="cmake fltk-dev fontconfig-dev gnutls-dev intltool
libjpeg-turbo-dev libx11-dev libxcursor-dev libxfixes-dev libxft-dev
- libxrender-dev libxtst-dev linux-pam-dev zlib-dev"
+ libxrender-dev libxtst-dev linux-pam-dev pixman-dev zlib-dev"
subpackages="$pkgname-lang $pkgname-doc"
-source="tigervnc-$pkgver.tar.gz::https://github.com/TigerVNC/tigervnc/archive/v$pkgver.tar.gz
- use-intltool.patch
- endian.patch
- 0001-CSecurityTLS-Use-size_t-as-argument-for-new.patch
- null-termination.patch
- initialise-var.patch
- "
+source="tigervnc-$pkgver.tar.gz::https://github.com/TigerVNC/tigervnc/archive/v$pkgver.tar.gz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -33,18 +26,12 @@ build() {
-DCMAKE_CXX_FLAGS="$CXXFLAGS -faligned-new -Wno-c++11-compat -Wno-maybe-uninitialized" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-Wno-dev \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="333910f567e6b5e4a5a22d898b2d4c3f4b834cb4cc8fc13ff55d31401894c0d5122a127692ec5eb51e412c945ff3ea5b8146f9ab22cbe1e47541e09239ec8c9d tigervnc-1.9.0.tar.gz
-5c1cee98b7ba41c7cf121480fdfe16d5ef17c9562ff2ba3ea4e74235161fc63e2e3ed63e788c0aa999610b660b394c1269d6fdcc9716c5563651fd67d723f619 use-intltool.patch
-189a51a542b368e4db22174d09f5b656848e94577bbf93b2388f54529f1c7c2d32e5b5283551b3fb067ba21f6464f60989e22d4cd11ed3d87d5c931301555b49 endian.patch
-f95328f6b669e6608b9971de3db25d5eb26a733fbe32f13291c309ed57eacba6c86461a516c3b8cdc12ff7482ee0249a45189864d473d52df81df0a3541d95b9 0001-CSecurityTLS-Use-size_t-as-argument-for-new.patch
-82566734e5288e899048b918ce47f5abc3b94196e88d54fa0b0ef68c20d1fcd9d5854f36a0043d28f81dc6213c9ee8cf55fb187aeeb8add5fc31765f6a5b23bb null-termination.patch
-a7fb612d7e3625b66db66ffc7e3f28f2e47f79b858ff1fd9e403576ef2b8ff7bc8cf83a6f67439de6242e4a11a0144119d040f8f9e917e17a8af512b47067360 initialise-var.patch"
+sha512sums="9190dbcd3b57ba52286c158c0675104d68463d7e3ea8e23493514b64451ddb511f3daf0f177339bc231155daea376d9c8dc58216663e10aa12f67468f4559da5 tigervnc-1.13.1.tar.gz"
diff --git a/user/tigervnc/endian.patch b/user/tigervnc/endian.patch
deleted file mode 100644
index e09edf9c5..000000000
--- a/user/tigervnc/endian.patch
+++ /dev/null
@@ -1,51 +0,0 @@
-diff --git a/vncviewer/Surface_X11.cxx b/vncviewer/Surface_X11.cxx
-index 3523da3d..6562634d 100644
---- a/vncviewer/Surface_X11.cxx
-+++ b/vncviewer/Surface_X11.cxx
-@@ -109,6 +109,7 @@ void Surface::blend(Surface* dst, int src_x, int src_y, int x, int y, int w, int
-
- void Surface::alloc()
- {
-+ XRenderPictFormat templ;
- XRenderPictFormat* format;
-
- // Might not be open at this point
-@@ -117,7 +118,37 @@ void Surface::alloc()
- pixmap = XCreatePixmap(fl_display, XDefaultRootWindow(fl_display),
- width(), height(), 32);
-
-- format = XRenderFindStandardFormat(fl_display, PictStandardARGB32);
-+ // Our code assumes a BGRA byte order, regardless of what the endian
-+ // of the machine is or the native byte order of XImage, so make sure
-+ // we find such a format
-+ templ.type = PictTypeDirect;
-+ templ.depth = 32;
-+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
-+ templ.direct.alpha = 0;
-+ templ.direct.red = 8;
-+ templ.direct.green = 16;
-+ templ.direct.blue = 24;
-+#else
-+ templ.direct.alpha = 24;
-+ templ.direct.red = 16;
-+ templ.direct.green = 8;
-+ templ.direct.blue = 0;
-+#endif
-+ templ.direct.alphaMask = 0xff;
-+ templ.direct.redMask = 0xff;
-+ templ.direct.greenMask = 0xff;
-+ templ.direct.blueMask = 0xff;
-+
-+ format = XRenderFindFormat(fl_display, PictFormatType | PictFormatDepth |
-+ PictFormatRed | PictFormatRedMask |
-+ PictFormatGreen | PictFormatGreenMask |
-+ PictFormatBlue | PictFormatBlueMask |
-+ PictFormatAlpha | PictFormatAlphaMask,
-+ &templ, 0);
-+
-+ if (!format)
-+ throw rdr::Exception("XRenderFindFormat");
-+
- picture = XRenderCreatePicture(fl_display, pixmap, format, 0, NULL);
-
- visFormat = XRenderFindVisualFormat(fl_display, fl_visual->visual);
diff --git a/user/tigervnc/initialise-var.patch b/user/tigervnc/initialise-var.patch
deleted file mode 100644
index f58a4dadc..000000000
--- a/user/tigervnc/initialise-var.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-From 44cf1d64ecf80c061c0a2b0f0167094e58782102 Mon Sep 17 00:00:00 2001
-From: Pierre Ossman <ossman@cendio.se>
-Date: Mon, 25 Mar 2019 16:14:49 +0100
-Subject: [PATCH] Don't use un-initialized stride to base constructor
-
-We can use a dummy value here as we set up the buffer and stride
-further down in the constructor.
----
- vncviewer/PlatformPixelBuffer.cxx | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/vncviewer/PlatformPixelBuffer.cxx b/vncviewer/PlatformPixelBuffer.cxx
-index 1e9803eb2..ff1935e74 100644
---- a/vncviewer/PlatformPixelBuffer.cxx
-+++ b/vncviewer/PlatformPixelBuffer.cxx
-@@ -36,7 +36,7 @@ static rfb::LogWriter vlog("PlatformPixelBuffer");
- PlatformPixelBuffer::PlatformPixelBuffer(int width, int height) :
- FullFramePixelBuffer(rfb::PixelFormat(32, 24, false, true,
- 255, 255, 255, 16, 8, 0),
-- width, height, 0, stride),
-+ width, height, NULL, 0),
- Surface(width, height)
- #if !defined(WIN32) && !defined(__APPLE__)
- , shminfo(NULL), xim(NULL)
diff --git a/user/tigervnc/null-termination.patch b/user/tigervnc/null-termination.patch
deleted file mode 100644
index e80a4f62d..000000000
--- a/user/tigervnc/null-termination.patch
+++ /dev/null
@@ -1,39 +0,0 @@
-From 7240f62ddc06643f982456c05c11d8afe5422069 Mon Sep 17 00:00:00 2001
-From: Pierre Ossman <ossman@cendio.se>
-Date: Tue, 26 Mar 2019 11:11:20 +0100
-Subject: [PATCH] Handle server name overflow properly
-
-We need to make sure it is null terminated on truncation. We also
-need to avoid giving a too large size argument or modern gcc will
-complain.
----
- vncviewer/vncviewer.cxx | 9 ++++++---
- 1 file changed, 6 insertions(+), 3 deletions(-)
-
-diff --git a/vncviewer/vncviewer.cxx b/vncviewer/vncviewer.cxx
-index d7cbd6e36..4a8370b95 100644
---- a/vncviewer/vncviewer.cxx
-+++ b/vncviewer/vncviewer.cxx
-@@ -411,7 +411,8 @@ potentiallyLoadConfigurationFile(char *vncServerName)
- newServerName = loadViewerParameters(vncServerName);
- // This might be empty, but we still need to clear it so we
- // don't try to connect to the filename
-- strncpy(vncServerName, newServerName, VNCSERVERNAMELEN);
-+ strncpy(vncServerName, newServerName, VNCSERVERNAMELEN-1);
-+ vncServerName[VNCSERVERNAMELEN-1] = '\0';
- } catch (rfb::Exception& e) {
- vlog.error("%s", e.str());
- if (alertOnFatalError)
-@@ -541,8 +542,10 @@ int main(int argc, char** argv)
- try {
- const char* configServerName;
- configServerName = loadViewerParameters(NULL);
-- if (configServerName != NULL)
-- strncpy(defaultServerName, configServerName, VNCSERVERNAMELEN);
-+ if (configServerName != NULL) {
-+ strncpy(defaultServerName, configServerName, VNCSERVERNAMELEN-1);
-+ defaultServerName[VNCSERVERNAMELEN-1] = '\0';
-+ }
- } catch (rfb::Exception& e) {
- vlog.error("%s", e.str());
- if (alertOnFatalError)
diff --git a/user/tigervnc/use-intltool.patch b/user/tigervnc/use-intltool.patch
deleted file mode 100644
index 930bf21eb..000000000
--- a/user/tigervnc/use-intltool.patch
+++ /dev/null
@@ -1,32 +0,0 @@
---- tigervnc-1.9.0/vncviewer/CMakeLists.txt.old 2018-07-16 14:08:55.000000000 +0000
-+++ tigervnc-1.9.0/vncviewer/CMakeLists.txt 2018-07-25 05:43:25.670000000 +0000
-@@ -66,14 +66,7 @@
-
- configure_file(vncviewer.desktop.in.in vncviewer.desktop.in)
- find_program(INTLTOOL_MERGE_EXECUTABLE intltool-merge)
-- if("${GETTEXT_VERSION_STRING}" VERSION_GREATER 0.18.99)
-- add_custom_command(OUTPUT vncviewer.desktop
-- COMMAND ${GETTEXT_MSGFMT_EXECUTABLE}
-- --desktop --template vncviewer.desktop.in
-- -d ${CMAKE_SOURCE_DIR}/po -o vncviewer.desktop
-- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/vncviewer.desktop.in
-- )
-- elseif(INTLTOOL_MERGE_EXECUTABLE)
-+ if(INTLTOOL_MERGE_EXECUTABLE)
- add_custom_command(OUTPUT vncviewer.desktop
- COMMAND sed -e 's/^Name/_Name/'
- -e 's/^GenericName/_GenericName/'
-@@ -84,6 +77,13 @@
- vncviewer.desktop.intl vncviewer.desktop
- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/vncviewer.desktop.in
- )
-+ elseif("${GETTEXT_VERSION_STRING}" VERSION_GREATER 0.18.99)
-+ add_custom_command(OUTPUT vncviewer.desktop
-+ COMMAND ${GETTEXT_MSGFMT_EXECUTABLE}
-+ --desktop --template vncviewer.desktop.in
-+ -d ${CMAKE_SOURCE_DIR}/po -o vncviewer.desktop
-+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/vncviewer.desktop.in
-+ )
- else()
- add_custom_command(OUTPUT vncviewer.desktop
- COMMAND cp vncviewer.desktop.in vncviewer.desktop
diff --git a/user/tint2/APKBUILD b/user/tint2/APKBUILD
index 90d37e258..3366d4afb 100644
--- a/user/tint2/APKBUILD
+++ b/user/tint2/APKBUILD
@@ -3,27 +3,22 @@
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=tint2
-pkgver=16.6.1
+pkgver=17.0.2
pkgrel=0
pkgdesc="Simple, unintrusive panel/taskbar"
url="https://gitlab.com/o9000/tint2"
arch="all"
-license="GPL-2.0-only AND GPL-2.0+ AND MIT AND Custom:zlib-optional-acknowledgement"
options="!check" # No test suite.
+license="GPL-2.0-only AND GPL-2.0+ AND MIT AND Custom:zlib-optional-acknowledgement"
depends=""
makedepends="cmake imlib2-dev glib-dev pango-dev cairo-dev
libxcomposite-dev libxdamage-dev libxinerama-dev libxrandr-dev
- gtk+2.0-dev librsvg-dev startup-notification-dev linux-headers"
+ gtk+3.0-dev librsvg-dev startup-notification-dev linux-headers"
subpackages="$pkgname-doc $pkgname-lang"
-source="$pkgname-$pkgver.tar.bz2::https://gitlab.com/o9000/$pkgname/repository/v$pkgver/archive.tar.bz2"
-
-prepare() {
- mv "$srcdir/$pkgname-v$pkgver"-* "$builddir"
- mkdir "$builddir"/build
-}
+source="https://gitlab.com/o9000/$pkgname/-/archive/v$pkgver/$pkgname-v$pkgver.tar.bz2"
+builddir="$srcdir/$pkgname-v$pkgver"
build() {
- cd "$builddir"/build
cmake \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_SYSCONFDIR=/etc \
@@ -31,13 +26,12 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ..
- make
+ -Bbuild
+ make -C build
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="25eb3d96f68da1d09711c2f3741e964c880ba911efe3b90b7ebdec4e4734eb7b76d8a84a34431c6a55e785bbbd7ebc8ef447beef2bb57e70f728d28b78b3a81d tint2-16.6.1.tar.bz2"
+sha512sums="2b309fd1ab01e5176cc95e0651f28224b158c2bafd58cfff19840b0f8e880e9f4dcefeff32bc66d5fac11d932d4ee668ea7ddd7bab860f9edcfcdb7074e0e0ed tint2-v17.0.2.tar.bz2"
diff --git a/user/tinycdb/APKBUILD b/user/tinycdb/APKBUILD
new file mode 100644
index 000000000..434e4273e
--- /dev/null
+++ b/user/tinycdb/APKBUILD
@@ -0,0 +1,26 @@
+# Contributor: Alyx Wolcott <alyx@leuhta.com>
+# Maintainer: Alyx Wolcott <alyx@leuhta.com>
+pkgname=tinycdb
+pkgver=0.78
+pkgrel=0
+pkgdesc="A constant database"
+url="https://www.corpit.ru/mjt/tinycdb.html"
+arch="all"
+license="Public-Domain"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://www.corpit.ru/mjt/tinycdb/$pkgname-$pkgver.tar.gz
+ Makefile.patch"
+
+build() {
+ make prefix=/usr sysconfdir=/etc mandir=/usr/share/man localstatedir=/var
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+sha512sums="8930086b8e7fddcd4dbd3354c5f5ee05171df68fde1cc222b6c402430042b6e761efbad7e5fa8de18e1d36390f1526cc3e605c5086fe1c363ba1df6c03201553 tinycdb-0.78.tar.gz
+199774ee259bd6ba91ec000485c959e9632f2766203c479ffb81144d4cec39b25a1df9e9b3b676217044e2d65275ef80fbc1fd97272bce7a91fe0c1232a5dc40 Makefile.patch"
diff --git a/user/tinycdb/Makefile.patch b/user/tinycdb/Makefile.patch
new file mode 100644
index 000000000..27d32dff6
--- /dev/null
+++ b/user/tinycdb/Makefile.patch
@@ -0,0 +1,19 @@
+--- a/Makefile 2012-05-11 14:17:47.000000000 +0000
++++ b/Makefile 2020-02-25 05:56:34.969771664 +0000
+@@ -6,14 +6,14 @@
+
+ VERSION = 0.78
+
+-prefix=/usr/local
++prefix=/usr
+ exec_prefix=$(prefix)
+ bindir=$(exec_prefix)/bin
+ libdir=$(exec_prefix)/lib
+ syslibdir=$(libdir)
+ sysconfdir=/etc
+ includedir=$(prefix)/include
+-mandir=$(prefix)/man
++mandir=$(prefix)/share/man
+ NSSCDB_DIR = $(sysconfdir)
+ DESTDIR=
+
diff --git a/user/tinyfugue/APKBUILD b/user/tinyfugue/APKBUILD
new file mode 100644
index 000000000..e4c0a604a
--- /dev/null
+++ b/user/tinyfugue/APKBUILD
@@ -0,0 +1,38 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=tinyfugue
+pkgver=5.1.6
+pkgrel=0
+pkgdesc="Powerful curses-based MUD client"
+url="https://github.com/ingwarsw/tinyfugue"
+arch="all"
+options="!check" # no testsuite
+license="GPL-2.0+"
+depends=""
+makedepends="openssl-dev ncurses-dev pcre-dev icu-dev python3-dev zlib-dev"
+source="$pkgname-$pkgver.tar.gz::https://github.com/ingwarsw/tinyfugue/archive/refs/tags/$pkgver.tar.gz"
+
+build() {
+ export CFLAGS="$CFLAGS -D_BSD_SOURCE"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --enable-atcp \
+ --enable-gmcp \
+ --enable-option102 \
+ --enable-python
+ make
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="
+5bc7103408bf52551f8439867695a5173130f5a5a4916be131a860e64337bc44c250e48973323dbce6b113bb9a61baede8aee1d66f2f437ac5abc7e82c522967 tinyfugue-5.1.3.tar.gz
+"
+sha512sums="1213795f5604d4c99cb43c3336f378eaf9a4e1b57e6831a7c14a9d1bce8de3540d7a6c4e35502c27a50dcd15b3afa1b9d06c35433ded57c7f3384ba362d036fe tinyfugue-5.1.6.tar.gz"
diff --git a/user/tinywl/APKBUILD b/user/tinywl/APKBUILD
new file mode 100644
index 000000000..f3ea5459e
--- /dev/null
+++ b/user/tinywl/APKBUILD
@@ -0,0 +1,27 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=tinywl
+pkgver=0.18.0
+_pkgver=${pkgver%.*}
+pkgrel=0
+pkgdesc="Minimum-viable wlroots-based Wayland compositor"
+url="https://gitlab.freedesktop.org/wlroots/wlroots"
+arch="all"
+options="!check" # no tests
+license="MIT"
+depends="wlroots-$_pkgver"
+makedepends="wayland-protocols wlroots-$_pkgver-dev"
+subpackages=""
+source="https://gitlab.freedesktop.org/wlroots/wlroots/-/releases/$pkgver/downloads/wlroots-$pkgver.tar.gz"
+builddir="$srcdir/wlroots-$pkgver/tinywl"
+
+build() {
+ make
+}
+
+package() {
+ mkdir -p "$pkgdir"/usr/bin
+ install -m755 tinywl "$pkgdir"/usr/bin/tinywl
+}
+
+sha512sums="2cf848aa67f41089b60cc7d01c3a344ebaf7f5bbced459675fef885cd4b3e6b99d9a49d6b127518314d0ae38e52e9aff7991611592b2add4cba96f15aa0bf1c6 wlroots-0.18.0.tar.gz"
diff --git a/user/tinyxml2/APKBUILD b/user/tinyxml2/APKBUILD
index b210bfb7d..4b096d670 100644
--- a/user/tinyxml2/APKBUILD
+++ b/user/tinyxml2/APKBUILD
@@ -1,14 +1,14 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=tinyxml2
-pkgver=7.0.1
+pkgver=7.1.0
pkgrel=0
pkgdesc="Small, efficient C++ XML parser"
url=" "
arch="all"
license="Zlib"
depends=""
-makedepends=""
+makedepends="cmake"
subpackages="$pkgname-dev"
source="tinyxml2-$pkgver.tar.gz::https://github.com/leethomason/tinyxml2/archive/$pkgver.tar.gz"
@@ -23,7 +23,7 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
@@ -35,4 +35,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="623cd7eff542d20b434a67111ac98110101c95a18767318bf906e5e56d8cc25622269f740f50477fe907a4c52d875b614cb6167f4760d42ab18dc55b9d4bf380 tinyxml2-7.0.1.tar.gz"
+sha512sums="09d5f37018f79a593ff35e33d4296c9ec643a22e83c0cee4c37949300f86201eee07e9b7e6ba55044d8abb438d5d21b70d5843a96ae4652389bb164047ec31e1 tinyxml2-7.1.0.tar.gz"
diff --git a/user/tipidee/APKBUILD b/user/tipidee/APKBUILD
new file mode 100644
index 000000000..a4b9a855b
--- /dev/null
+++ b/user/tipidee/APKBUILD
@@ -0,0 +1,88 @@
+# Maintainer: Laurent Bercot <ska-adelie@skarnet.org>
+pkgname=tipidee
+pkgver=0.0.6.0
+pkgrel=0
+pkgdesc="The skarnet.org web server"
+url="https://skarnet.org/software/tipidee/"
+arch="all"
+options="!check" # No test suite.
+license="ISC"
+_skalibs_version=2.14.4
+_execline_version=2.9.7
+_s6_version=2.13.2
+_s6net_version=2.7.1
+depends="execline>=$_execline_version s6>=$_s6_version s6-networking>=$_s6net_version"
+depends_dev="skalibs-dev>=$_skalibs_version"
+makedepends="$depends_dev"
+subpackages="tipidee-dev tipidee-libs tipidee-doc tipidee-openrc"
+source="
+ https://skarnet.org/software/tipidee/tipidee-$pkgver.tar.gz
+ httpd.run
+ httpsd.run
+ logger.run
+ tipidee.conf
+ tipidee.confd
+ tipidee.initd
+ "
+install="
+ tipidee.pre-install
+ tipidee.post-install
+ tipidee.post-deinstall
+ "
+pkggroups="tipidee"
+pkgusers="tipideelog tipideed"
+
+build() {
+ ./configure \
+ --enable-shared \
+ --disable-allstatic \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --with-pkgconfig \
+ --enable-pkgconfig \
+ --libexecdir="/usr/lib/$pkgname"
+ make
+}
+
+_makeservicedir() {
+ name="http${1}d-${2}"
+ fn="$pkgdir/var/lib/tipidee/services/$name"
+ mkdir -p "$fn/log"
+ echo 3 > "$fn/log/notification-fd"
+ sed -e "s/@S@/${1}/g; s/@V@/${2}/g;" "$srcdir/logger.run" > "$fn/log/run"
+ chmod 0755 "$fn/log/run"
+ echo 3 > "$fn/notification-fd"
+ sed -e "s/@V@/${2}/g;" "$srcdir/http${1}d.run" > "$fn/run"
+ chmod 0755 "$fn/run"
+ fn="$pkgdir/var/log/$name"
+ mkdir -p "$fn"
+ chown tipideelog:tipidee "$fn"
+ chmod 02700 "$fn"
+}
+
+package() {
+ mkdir -p "$pkgdir/usr/share/doc" "$pkgdir/var/lib/tipidee/docroot"
+ make DESTDIR="$pkgdir" install
+ for i in '' s ; do for j in 4 6 ; do
+ _makeservicedir "$i" "$j"
+ done ; done
+ install -m 0644 -D "$srcdir/tipidee.conf" "$pkgdir/etc/tipidee.conf"
+ install -m 0644 -D "$srcdir/tipidee.confd" "$pkgdir/etc/conf.d/tipidee"
+ install -m 0755 -D "$srcdir/tipidee.initd" "$pkgdir/etc/init.d/tipidee"
+ cp -a "$builddir/doc" "$pkgdir/usr/share/doc/$pkgname"
+}
+
+dev() {
+ default_dev
+
+ # default_dev please stop being stupid
+ mv "$subpkgdir/usr/bin/tipidee-config" "$pkgdir/usr/bin/tipidee-config"
+}
+
+sha512sums="1a8ae1f7293fc7a1db1f0f4dd0752388f58e134c3f0847a768cf56e2e5a21b7d037f71f3d9e4ff16ab986c699d39827e53b467c8b13b0b9dad41b6fd742c9a5c tipidee-0.0.6.0.tar.gz
+560048b2b767053770e37ce3fd69540f2fad23236f012da115c1f985240f42d0bb7809630d8991e39169e255e3d36ebfdc85f895d16675119a95d3a6e64fd2b2 httpd.run
+1c9333785c63662039580504dd36af21d05eb9972e6770af17e87e062bd7d9fa67695f4120221e241e10503ca0fb3b5347f032b6c1eef309f2ff8cd636266f2b httpsd.run
+b5af306fe7040f966b13da84bfb0c4b528683c03205519d08fe429ee826ffad27c9ddb32be8c8bf8b42ce7964ef15572e3c66a96494aed833ee951c769f81bd2 logger.run
+bb2681a3000133724bb8fd4918bc3209ea676c2e4f96ad8b298d8e7302aeebd6876341ea205f2d808f34e4c9b5c138bba032694c6069c17026b0ddf23702f9ba tipidee.conf
+7a999200ad21b2b0737ce82136bc8e055d7ab4a865b7727e6dc8df0eaeea6ace11eb5756b64231ce7938d11b5ec218944173ea1df3db059d033bf3f848c9a608 tipidee.confd
+5001d079b1ca7920d163cc2d58a5855e2740e72ed85df25414b4719c52133bd0f2f9e69c63c57f31645159189fc046c7d213048fc1cbd0f640336e43874e4482 tipidee.initd"
diff --git a/user/tipidee/httpd.run b/user/tipidee/httpd.run
new file mode 100644
index 000000000..8619bd856
--- /dev/null
+++ b/user/tipidee/httpd.run
@@ -0,0 +1,19 @@
+#!/bin/execlineb -S1
+
+fdmove -c 2 1
+emptyenv -p
+fdmove 1 3
+envfile /etc/conf.d/tipidee
+unexport HTTP
+unexport HTTPS
+multisubstitute
+{
+ importas -uSi TIPIDEED_IPv@V@
+ importas -uSi TIPIDEED_ROOT
+ importas -uSD1000 TIPIDEED_CONCURRENCY
+ importas -uSD10 TIPIDEED_LOCAL_CONCURRENCY
+}
+s6-envuidgid tipideed
+cd ${TIPIDEED_ROOT}
+s6-tcpserver -1 -U -c ${TIPIDEED_CONCURRENCY} -C ${TIPIDEED_LOCAL_CONCURRENCY} -- ${TIPIDEED_IPv@V@} 80
+tipideed
diff --git a/user/tipidee/httpsd.run b/user/tipidee/httpsd.run
new file mode 100644
index 000000000..bfc3eebd0
--- /dev/null
+++ b/user/tipidee/httpsd.run
@@ -0,0 +1,23 @@
+#!/bin/execlineb -S1
+
+fdmove -c 2 1
+emptyenv -p
+fdmove 1 3
+envfile /etc/conf.d/tipidee
+unexport HTTP
+unexport HTTPS
+multisubstitute
+{
+ importas -uSi TIPIDEED_IPv@V@
+ importas -uSi TIPIDEED_ROOT
+ importas -uSi KEYFILE
+ importas -uSi CERTFILE
+ importas -uSD1000 TIPIDEED_CONCURRENCY
+ importas -uSD10 TIPIDEED_LOCAL_CONCURRENCY
+}
+s6-envuidgid tipideed
+export TLS_UID 65534
+export TLS_GID 65534
+cd ${TIPIDEED_ROOT}
+s6-tlsserver -1 -U -K 5000 -c ${TIPIDEED_CONCURRENCY} -C ${TIPIDEED_LOCAL_CONCURRENCY} -- ${TIPIDEED_IPv@V@} 443
+tipideed
diff --git a/user/tipidee/logger.run b/user/tipidee/logger.run
new file mode 100644
index 000000000..3f1785703
--- /dev/null
+++ b/user/tipidee/logger.run
@@ -0,0 +1,5 @@
+#!/bin/execlineb -S1
+
+s6-setuidgid tipideelog
+exec -c
+s6-log -d3 -- t s1000000 /var/log/http@S@d-@V@
diff --git a/user/tipidee/tipidee.conf b/user/tipidee/tipidee.conf
new file mode 100644
index 000000000..40bba13f9
--- /dev/null
+++ b/user/tipidee/tipidee.conf
@@ -0,0 +1,18 @@
+# This is where the behaviour of the tipidee web server is
+# configured.
+# See https://skarnet.org/software/tipidee/tipidee.conf.html
+# for the full documentation of the syntax.
+
+# The defaults work well, but here are some example directives that
+# you can uncomment if you find them applicable to your setup.
+
+# global read_timeout 60000
+# global write_timeout 60000
+# global cgi_timeout 5000
+# index-file index.html index.cgi
+# log start ip hostname request resource answer answer_size
+# custom-header always Strict-Transport-Security max-age=63072000; includeSubDomains; preload
+#
+# domain example.com
+# nph-prefix nph-
+# cgi /cgi-bin/
diff --git a/user/tipidee/tipidee.confd b/user/tipidee/tipidee.confd
new file mode 100644
index 000000000..d47fb589f
--- /dev/null
+++ b/user/tipidee/tipidee.confd
@@ -0,0 +1,33 @@
+# Configuration for the tipidee web server.
+
+# The IPs you want the tipidee server to listen on.
+# Comment to disable.
+TIPIDEED_IPv4=0.0.0.0
+TIPIDEED_IPv6=::
+
+# Serve plaintext HTTP? true or false
+HTTP=true
+
+# Serve HTTPS? true or false
+HTTPS=false
+
+# If HTTPS is true, KEYFILE should point to
+# your private key, and CERTFILE should point to your certificate.
+# KEYFILE=
+# CERTFILE=
+
+# Total authorized concurrent connections. Don't go above 5000 or so.
+TIPIDEED_CONCURRENCY=1000
+
+# Authorized concurrent connections *per IP*.
+TIPIDEED_LOCAL_CONCURRENCY=10
+
+# The server root. Make sure this directory exists, is readable by
+# the tipideed user, and does *not* belong to the tipideed user.
+# The documents need to be stored under subdirectories of TIPIDEED_ROOT,
+# one subdirectory per virtual domain you're serving.
+TIPIDEED_ROOT=/var/lib/tipidee/docroot
+
+# Also check the /etc/tipidee.conf file for detailed configuration of
+# logging, document attributes, etc.
+# Run tipidee-config after editing /etc/tipidee.conf.
diff --git a/user/tipidee/tipidee.initd b/user/tipidee/tipidee.initd
new file mode 100644
index 000000000..f196bcd23
--- /dev/null
+++ b/user/tipidee/tipidee.initd
@@ -0,0 +1,64 @@
+#!/sbin/openrc-run
+
+description="Start/stop the tipidee services"
+
+depend()
+{
+ after net
+ after localmount
+}
+
+_get_services()
+{
+ list=
+ if "$HTTP" ; then
+ if test -n "$TIPIDEED_IPv4" ; then
+ list="httpd-4"
+ fi
+ if test -n "$TIPIDEED_IPv6" ; then
+ list="$list httpd-6"
+ fi
+ fi
+ if "$HTTPS" ; then
+ if test -n "$TIPIDEED_IPV4" ; then
+ list="httpsd-4"
+ fi
+ if test -n "$TIPIDEED_IPV6" ; then
+ list="$list httpsd-6"
+ fi
+ fi
+ echo $list
+}
+
+stop()
+{
+ ebegin "Stopping the tipidee services"
+ for i in `_get_services` ; do
+ s6-svunlink /run/service "$i"
+ done
+ eend $?
+}
+
+start()
+{
+ ebegin "Starting the tipidee services"
+ for i in `_get_services` ; do
+ s6-svlink -t10000 /run/service "/var/lib/tipidee/services/$i"
+ done
+ eend $?
+}
+
+status()
+{
+ for i in `_get_services` ; do
+ echo -n "${i}: "
+ s6-svstat "/run/service/${i}"
+ done
+}
+
+restart()
+{
+ for i in `_get_services` ; do
+ s6-svc -rwR "/run/service/$i"
+ done
+}
diff --git a/user/tipidee/tipidee.post-deinstall b/user/tipidee/tipidee.post-deinstall
new file mode 100644
index 000000000..9912c9503
--- /dev/null
+++ b/user/tipidee/tipidee.post-deinstall
@@ -0,0 +1,3 @@
+#!/bin/execlineb -P
+
+rm -f /etc/tipidee.conf.cdb
diff --git a/user/tipidee/tipidee.post-install b/user/tipidee/tipidee.post-install
new file mode 100644
index 000000000..425ab5aaa
--- /dev/null
+++ b/user/tipidee/tipidee.post-install
@@ -0,0 +1,3 @@
+#!/bin/execlineb -P
+
+tipidee-config
diff --git a/user/tipidee/tipidee.pre-install b/user/tipidee/tipidee.pre-install
new file mode 100644
index 000000000..e92fd1d0a
--- /dev/null
+++ b/user/tipidee/tipidee.pre-install
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+groupadd -r -- tipidee 2>/dev/null
+useradd -r -d / -M -N -s /sbin/nologin -g tipidee -c tipideelog -- tipideelog 2>/dev/null
+useradd -r -d / -M -N -s /sbin/nologin -g tipidee -c tipideed -- tipideed 2>/dev/null
+
+exit 0
diff --git a/user/tk/APKBUILD b/user/tk/APKBUILD
index 8295ec4fc..8e98bc621 100644
--- a/user/tk/APKBUILD
+++ b/user/tk/APKBUILD
@@ -1,23 +1,21 @@
# Maintainer:
pkgname=tk
-pkgver=8.6.9.1
+pkgver=8.6.10
pkgrel=0
pkgdesc="GUI toolkit for the Tcl scripting language"
url="http://tcl.sourceforge.net/"
arch="all"
options="!check" # Requires a running X11 server.
license="TCL"
-depends=
+depends=""
depends_dev="tcl-dev libx11-dev libxft-dev fontconfig-dev"
makedepends="$depends_dev libpng-dev"
subpackages="$pkgname-doc $pkgname-dev"
-source="https://downloads.sourceforge.net/sourceforge/tcl/$pkgname$pkgver-src.tar.gz
- "
+source="https://downloads.sourceforge.net/sourceforge/tcl/$pkgname$pkgver-src.tar.gz"
_major=8.6
-builddir="$srcdir"/tk8.6.9/unix
+builddir="$srcdir"/tk$pkgver/unix
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,7 +25,6 @@ build() {
}
package() {
- cd "$builddir"
export LD_LIBRARY_PATH="$builddir"
make -j1 INSTALL_ROOT="${pkgdir}" install install-private-headers
@@ -53,4 +50,4 @@ dev() {
done
}
-sha512sums="b9c811ffc8326331ae03c6fb25ea71f7a5eaeebd9d5a16a51a1671d0f0422268bd351b077e17ae925f0a7eddac9642aa640658615c52d4269c299373af031a92 tk8.6.9.1-src.tar.gz"
+sha512sums="d12ef3a5bde9e10209a24e9f978bd23360a979d8fa70a859cf750a79ca51067a11ef6df7589303b52fe2a2baed4083583ddaa19e2c7cb433ea523639927f1be5 tk8.6.10-src.tar.gz"
diff --git a/user/tlp/APKBUILD b/user/tlp/APKBUILD
index 54f478361..ca7208b5e 100644
--- a/user/tlp/APKBUILD
+++ b/user/tlp/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=tlp
_pkgname=TLP
-pkgver=1.1
+pkgver=1.3.1
pkgrel=0
pkgdesc="Linux Advanced Power Management"
url="https://linrunner.de/en/tlp/tlp.html"
@@ -13,30 +13,28 @@ depends="/bin/sh perl"
makedepends=""
subpackages="$pkgname-doc $pkgname-rdw $pkgname-bash-completion:bashcomp
$pkgname-openrc"
+install="$pkgname.post-upgrade"
source="$pkgname-$pkgver.tar.gz::https://github.com/linrunner/$_pkgname/archive/$pkgver.tar.gz
$pkgname.initd"
builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
make
}
package() {
- cd "$builddir"
-
- make DESTDIR="$pkgdir" install-tlp install-man
+ make DESTDIR="$pkgdir" TLP_WITH_SYSTEMD=0 install-tlp install-man
install -Dm755 "$srcdir"/tlp.initd "$pkgdir"/etc/init.d/"$pkgname"
# We don't ship systemd
find "$pkgdir"/usr/share/man/man8 -name '*.service*' -delete
+ rm -r "$pkgdir"/lib/elogind
}
rdw() {
pkgdesc="Linux Advanced Power Management - Radio Device Wizard"
depends="tlp"
- cd "$builddir"
- make DESTDIR="$subpkgdir" install-rdw
+ make DESTDIR="$subpkgdir" TLP_WITH_SYSTEMD=0 -C "$builddir" install-rdw
}
bashcomp() {
@@ -44,9 +42,12 @@ bashcomp() {
depends=""
install_if="$pkgname=$pkgver-r$pkgrel bash-completion"
- mkdir -p "$subpkgdir"/usr/share
- mv "$pkgdir"/usr/share/bash-completion "$subpkgdir"/usr/share
+ mkdir -p "$subpkgdir"/usr/share/bash-completion/completions
+ mv "$pkgdir"/usr/share/bash-completion/completions/* \
+ "$subpkgdir"/usr/share/bash-completion/completions
+ mv "$pkgbasedir/$pkgname-rdw"/usr/share/bash-completion/completions/* \
+ "$subpkgdir"/usr/share/bash-completion/completions
}
-sha512sums="3400f2b6c249fd2e1bbbc61f23e3450ff90fabb8dd74f2903ce1f0d07e7ce3d1e61b07295736138d4697235dbee9157d3f32a8d296a649c93f73e03e3555af1e tlp-1.1.tar.gz
+sha512sums="7ebb14ea797ad8aae613c537de51107a3c7430b5c6ee1407e722e2069ed5376f88ab3dac613651fafabd92d219b980452f236bef33e8a655b1abbfed5eded1b1 tlp-1.3.1.tar.gz
e6de216b2540413812711b3304cdc29c8729d527080cfd747ba382db50166dd21c6c27ff467f9f2a967e92007c7a311b00e88262952c34a22f417578c66cf4e7 tlp.initd"
diff --git a/user/tlp/tlp.post-upgrade b/user/tlp/tlp.post-upgrade
new file mode 100644
index 000000000..6adf68850
--- /dev/null
+++ b/user/tlp/tlp.post-upgrade
@@ -0,0 +1,14 @@
+#!/bin/sh
+ver_new="$1"
+ver_old="$2"
+
+if [ "$(apk version -t "$ver_old" "1.3.1")" = "<" ]; then
+ cat >&2 <<-EOF
+ *
+ * tlp has moved its configuration from '/etc/default/tlp'
+ * to '/etc/tlp.conf' and '/etc/tlp.d'. Additionally,
+ * these configuration files are now parsed instead of
+ * executed via the shell, so expansions will no longer work.
+ *
+ EOF
+fi
diff --git a/user/tmux-bash-completion/APKBUILD b/user/tmux-bash-completion/APKBUILD
index e34f15ea5..7639c2f7c 100644
--- a/user/tmux-bash-completion/APKBUILD
+++ b/user/tmux-bash-completion/APKBUILD
@@ -1,5 +1,5 @@
# Contributor: zlg <zlg+adelie@zlg.space>
-# Maintainer: zlg <zlg+adelie@zlg.space>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=tmux-bash-completion
pkgver=1.0.0_git20170805
_commit=847eda60c4664bfca833a086a3e2167957c26be0
@@ -7,17 +7,18 @@ pkgrel=0
pkgdesc="bash-completion files for tmux"
url="https://github.com/imomaliev/tmux-bash-completion"
arch="noarch"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0-only"
depends="bash-completion tmux"
makedepends=""
subpackages=""
+install_if="tmux bash-completion"
source="$pkgname-$pkgver.tar.gz::https://github.com/imomaliev/tmux-bash-completion/archive/$_commit.tar.gz"
builddir="$srcdir/$pkgname-$_commit"
package() {
- cd "$builddir"
- install -Dm644 ./completions/tmux "$pkgdir"/usr/share/bash-completion/completions/tmux
+ install -Dm644 "$builddir"/completions/tmux \
+ "$pkgdir"/usr/share/bash-completion/completions/tmux
}
sha512sums="6c4c761aa152d1352a575c91e2c375d3f19ad01263b603b9e0cde4bdd95ce478c93bb55bfcd9fa5332cde12399e1e1e1c062e6be2ed7403b96e808275401effa tmux-bash-completion-1.0.0_git20170805.tar.gz"
diff --git a/user/tmux/APKBUILD b/user/tmux/APKBUILD
index 7b1cf3986..5edfa97f5 100644
--- a/user/tmux/APKBUILD
+++ b/user/tmux/APKBUILD
@@ -1,19 +1,25 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=tmux
-pkgver=2.7
+pkgver=3.5a
pkgrel=0
pkgdesc="Tool to control multiple terminals from a single terminal"
-url="https://tmux.github.io/"
+url="https://github.com/tmux/tmux/wiki"
arch="all"
license="MIT"
depends="ncurses-terminfo"
makedepends="bsd-compat-headers libevent-dev libutempter-dev ncurses-dev"
subpackages="$pkgname-doc"
-source="https://github.com/tmux/tmux/releases/download/$pkgver/$pkgname-$pkgver.tar.gz"
+source="https://github.com/tmux/tmux/releases/download/$pkgver/$pkgname-$pkgver.tar.gz
+ no-yacc-needed.patch
+ "
+
+prepare() {
+ default_prepare
+ autoreconf -fiv
+}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,19 +31,17 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -Dm644 example_tmux.conf \
"$pkgdir"/usr/share/doc/$pkgname/examples/$pkgname.conf
- for file in CHANGES README TODO; do
- install -m644 "$file" "$pkgdir"/usr/share/doc/$pkgname/
- done
+ install -m644 "CHANGES" "$pkgdir"/usr/share/doc/$pkgname/
+ install -m644 "README" "$pkgdir"/usr/share/doc/$pkgname/
}
-sha512sums="7839ef748ea55df8c02c727047f65bd235b5e3b8ab23157246071e1b9954fa269594da9fbd0fabf6a850e3b5dfda962a0a067c1507411c92a84d1db2666ecf37 tmux-2.7.tar.gz"
+sha512sums="2383e99aec2dcdb1d899793d5ecab40a68b921194f84770d3f4d19712bfc85590657a99d2a9a7bec36d4ba5ab39fa713f13937b0acad3b61cd9b2302dba61d43 tmux-3.5a.tar.gz
+54494c910f361e23433f276c49e6257b1ccb028ffba1af032e5494e786eb35506d495714916774956db875306e090edd0c2bf8433b2cffc50c4a25d45dfb0594 no-yacc-needed.patch"
diff --git a/user/tmux/no-yacc-needed.patch b/user/tmux/no-yacc-needed.patch
new file mode 100644
index 000000000..1e6c706b3
--- /dev/null
+++ b/user/tmux/no-yacc-needed.patch
@@ -0,0 +1,26 @@
+From 00812c9053a0b1067f833925b726086a67d8528d Mon Sep 17 00:00:00 2001
+From: Nicholas Marriott <nicholas.marriott@gmail.com>
+Date: Tue, 2 Aug 2022 11:52:09 +0100
+Subject: [PATCH] Check for $YACC, from Wei Shih in GitHub issue 3267.
+
+---
+ configure.ac | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/configure.ac b/configure.ac
+index 276f71c8bf..8e84604289 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -267,12 +267,6 @@ if test "x$found_libevent" = xno; then
+ AC_MSG_ERROR("libevent not found")
+ fi
+
+-# Look for yacc.
+-AC_CHECK_PROG(found_yacc, $YACC, yes, no)
+-if test "x$found_yacc" = xno; then
+- AC_MSG_ERROR("yacc not found")
+-fi
+-
+ # Look for ncurses or curses. Try pkg-config first then directly for the
+ # library.
+ PKG_CHECK_MODULES(
diff --git a/user/torcs/APKBUILD b/user/torcs/APKBUILD
index ef7c3cb23..efb66c3bd 100644
--- a/user/torcs/APKBUILD
+++ b/user/torcs/APKBUILD
@@ -2,16 +2,16 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=torcs
pkgver=1.3.7
-pkgrel=0
+pkgrel=1
pkgdesc="The Open Racing Car Simulator"
url="http://torcs.sourceforge.net/"
arch="all"
options="!check" # No test suite.
license="GPL-2.0+"
depends=""
-makedepends="freealut-dev freeglut-dev libogg-dev libpng-dev libsm-dev
- libvorbis-dev libxmu-dev libxrandr-dev libxrender-dev libxt-dev mesa-dev
- openal-soft-dev plib-dev zlib-dev"
+makedepends="freealut-dev freeglut-dev libglvnd-dev libogg-dev libpng-dev
+ libsm-dev libvorbis-dev libxmu-dev libxrandr-dev libxrender-dev
+ libxt-dev openal-soft-dev plib-dev zlib-dev autoconf automake"
subpackages="$pkgname-data::noarch"
source="https://sourceforge.net/projects/torcs/files/all-in-one/$pkgver/torcs-$pkgver.tar.bz2
torcs-1.3.6-as-needed.patch
@@ -22,7 +22,6 @@ source="https://sourceforge.net/projects/torcs/files/all-in-one/$pkgver/torcs-$p
"
build() {
- cd "$builddir"
export CXXFLAGS="$CXXFLAGS -fpermissive" # GCC 8
autoreconf
./configure \
@@ -36,16 +35,14 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
data() {
pkgdesc="Data files for TORCS"
- cd "$builddir"
mkdir -p "$subpkgdir"/usr/share/games
chgrp games "$subpkgdir"/usr/share/games
- make DESTDIR="$subpkgdir" datainstall
+ make DESTDIR="$subpkgdir" -C "$builddir" datainstall
}
sha512sums="14b88624803c746b2f356fa185aca5be56b7d7e5192fede11307474100328bfaa67eafa61e84987bbad04590ae5740127e015707723df6d2c3197bb867818101 torcs-1.3.7.tar.bz2
diff --git a/user/traceroute/APKBUILD b/user/traceroute/APKBUILD
index 8eac94eb9..278a1d1c8 100644
--- a/user/traceroute/APKBUILD
+++ b/user/traceroute/APKBUILD
@@ -6,21 +6,18 @@ pkgrel=0
pkgdesc="Utility to trace the network route of packets"
url="http://traceroute.sourceforge.net/"
arch="all"
+options="!check" # No test suite.
license="GPL-2.0"
depends=""
makedepends=""
-install=""
-options="!check"
subpackages="$pkgname-doc"
-source="http://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz"
+source="https://downloads.sourceforge.net/$pkgname/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" prefix="/usr" install
ln -s traceroute "$pkgdir"/usr/bin/traceroute6
}
diff --git a/user/transmission/APKBUILD b/user/transmission/APKBUILD
new file mode 100644
index 000000000..a8d45dd8d
--- /dev/null
+++ b/user/transmission/APKBUILD
@@ -0,0 +1,102 @@
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
+# Maintainer: Dan Theisen <djt@hxx.in>
+pkgname=transmission
+pkgver=3.00
+pkgrel=0
+pkgdesc="Lightweight GTK BitTorrent client"
+url="https://transmissionbt.com/"
+arch="all"
+license="GPL-2.0+ AND MIT"
+depends=""
+makedepends="bsd-compat-headers cmake curl-dev dbus-glib-dev gtk+3.0-dev intltool
+ libevent-dev libnotify-dev openssl-dev qt5-qtbase-dev glib-dev
+ miniupnpc-dev libnatpmp-dev wayland-protocols qdbus qt5-qttools-dev"
+install="transmission.post-install transmission-daemon.pre-install transmission-daemon.post-upgrade"
+pkgusers="transmission"
+pkggroups="transmission"
+source="https://github.com/transmission/$pkgname-releases/raw/master/$pkgname-$pkgver.tar.xz
+ transmission-daemon.initd
+ transmission-daemon.confd
+ fix-release-tarball.patch
+ "
+subpackages="$pkgname-qt $pkgname-gtk $pkgname-cli $pkgname-daemon $pkgname-doc $pkgname-lang"
+
+build() {
+ mkdir build && cd build
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ -DWITH_LIBAPPINDICATOR=NO \
+ -DENABLE_QT=ON \
+ -DENABLE_GTK=ON \
+ -DENABLE_CLI=ON \
+ -DINSTALL_LIB=ON \
+ ..
+ make
+}
+
+check() {
+ cd build
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ cd build
+ make DESTDIR="$pkgdir" install
+}
+
+qt() {
+ pkgdesc="Lightweight BitTorrent client (Qt GUI interface)"
+ depends="$pkgname=$pkgver-r$pkgrel"
+
+ mkdir -p "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/transmission-qt "$subpkgdir"/usr/bin
+}
+
+gtk() {
+ pkgdesc="Lightweight BitTorrent client (Qt GUI interface)"
+ depends="$pkgname=$pkgver-r$pkgrel"
+
+ mkdir -p "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/transmission-gtk "$subpkgdir"/usr/bin
+}
+
+daemon() {
+ pkgdesc="Lightweight BitTorrent client (daemon and Web interface)"
+
+ install -d "$subpkgdir"/usr/share \
+ "$subpkgdir"/usr/bin
+ install -d -o transmission -g transmission \
+ "$subpkgdir"/var/lib/transmission \
+ "$subpkgdir"/var/log/transmission
+ mv "$pkgdir"/usr/bin/transmission-daemon \
+ "$subpkgdir"/usr/bin/
+ mv "$pkgdir"/usr/share/transmission \
+ "$subpkgdir"/usr/share/
+ install -D -m755 "$srcdir"/transmission-daemon.initd \
+ "$subpkgdir"/etc/init.d/transmission-daemon
+ install -D -m644 "$srcdir"/transmission-daemon.confd \
+ "$subpkgdir"/etc/conf.d/transmission-daemon
+}
+
+cli() {
+ pkgdesc="Lightweight BitTorrent client (CLI and remote)"
+
+ install -d "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/transmission-cli \
+ "$pkgdir"/usr/bin/transmission-create \
+ "$pkgdir"/usr/bin/transmission-edit \
+ "$pkgdir"/usr/bin/transmission-show \
+ "$pkgdir"/usr/bin/transmission-remote \
+ "$subpkgdir"/usr/bin/
+}
+
+sha512sums="eeaf7fe46797326190008776a7fa641b6341c806b0f1684c2e7326c1284832a320440013e42a37acda9fd0ee5dca695f215d6263c8acb39188c5d9a836104a61 transmission-3.00.tar.xz
+d31275fba7eb322510f9667e66a186d626889a6e3143be2923aae87b9c35c5cf0c508639f1cb8c1b88b1e465bc082d80bb1101385ebde736a34d4eeeae0f6e15 transmission-daemon.initd
+a3b9ac2b7bbe30e33060c8b6a693dc7072d3c6ac44f92ddd567969d8f57a0bfc1a561e781ae167703ccb4b2fd5b0e6d8f8a66c5ba14fe01d8d89a501d4501474 transmission-daemon.confd
+4d6a9fa4dc49ff785847c20097e1968373b4636da7c70e17912aadff31ff182a8fb31a81e278531296040cf2de6077c6a446a54146c9a92571f6a9d9b4aed661 fix-release-tarball.patch"
diff --git a/user/transmission/fix-release-tarball.patch b/user/transmission/fix-release-tarball.patch
new file mode 100644
index 000000000..b4629345f
--- /dev/null
+++ b/user/transmission/fix-release-tarball.patch
@@ -0,0 +1,2511 @@
+diff --git a/libtransmission/Makefile.am b/libtransmission/Makefile.am
+index 0885fab0d2..d9a61c12f1 100644
+--- a/libtransmission/Makefile.am
++++ b/libtransmission/Makefile.am
+@@ -316,3 +316,6 @@ watchdir_generic_test_CPPFLAGS = -DWATCHDIR_TEST_FORCE_GENERIC $(AM_CPPFLAGS)
+ rename_test_SOURCES = rename-test.c $(TEST_SOURCES)
+ rename_test_LDADD = ${apps_ldadd}
+ rename_test_LDFLAGS = ${apps_ldflags}
++
++EXTRA_DIST = \
++ subprocess-test.cmd
+diff --git a/macosx/Makefile.am b/macosx/Makefile.am
+index 27abb77b66..5a6fec9ef8 100644
+--- a/macosx/Makefile.am
++++ b/macosx/Makefile.am
+@@ -95,6 +95,8 @@ EXTRA_DIST = \
+ InfoTabButtonBack.m \
+ InfoTabButtonCell.h \
+ InfoTabButtonCell.m \
++ InfoTabMatrix.h \
++ InfoTabMatrix.m \
+ InfoTextField.h \
+ InfoTextField.m \
+ InfoActivityViewController.h \
+diff --git a/po/LINGUAS b/po/LINGUAS
+index 08629cd1b2..6b3145a37a 100644
+--- a/po/LINGUAS
++++ b/po/LINGUAS
+@@ -68,6 +68,7 @@ pa
+ pl
+ pt
+ pt_BR
++pt_PT
+ ro
+ ru
+ si
+diff --git a/third-party/Makefile.am b/third-party/Makefile.am
+index 9f66878d90..33df96d42d 100644
+--- a/third-party/Makefile.am
++++ b/third-party/Makefile.am
+@@ -22,5 +22,8 @@ SUBDIRS = \
+ $(UTP_DIR)
+
+ EXTRA_DIST = \
++ curl \
++ libevent \
++ openssl \
+ macosx-libevent-config.h \
+ macosx-libevent-event-config.h
+diff --git a/libtransmission/subprocess-test.cmd b/libtransmission/subprocess-test.cmd
+new file mode 100644
+index 0000000..4d08d06
+--- /dev/null
++++ b/libtransmission/subprocess-test.cmd
+@@ -0,0 +1,48 @@
++@echo off
++setlocal EnableExtensions EnableDelayedExpansion
++
++set __argc=0
++for %%i in (%*) do (
++ set /a __argc+=1
++ set "__argv[!__argc!]=%%~i"
++)
++
++set "result_path=!__argv[1]!"
++set "test_action=!__argv[2]!"
++
++set "temp_result_path=%result_path%.tmp"
++>"%temp_result_path%" <nul set /p=
++
++if "%test_action%" == "--dump-args" goto dump_args
++if "%test_action%" == "--dump-env" goto dump_env
++if "%test_action%" == "--dump-cwd" goto dump_cwd
++
++exit /b 1
++
++:dump_args
++ for /l %%i in (3,1,%__argc%) do (
++ >>"%temp_result_path%" echo.!__argv[%%i]!
++ )
++ goto finish
++
++:dump_env
++ for /l %%i in (3,1,%__argc%) do (
++ >>"%temp_result_path%" call :dump_env_var "!__argv[%%i]!"
++ )
++ goto finish
++
++:dump_env_var
++ if defined %~1 (
++ echo.!%~1!
++ ) else (
++ echo.^<null^>
++ )
++ exit /b 0
++
++:dump_cwd
++ >>"%temp_result_path%" echo.%CD%
++ goto finish
++
++:finish
++ >nul move /y "%temp_result_path%" "%result_path%"
++ exit /b 0
+diff --git a/po/pt_PT.po b/po/pt_PT.po
+new file mode 100644
+index 0000000..d9346f8
+--- /dev/null
++++ b/po/pt_PT.po
+@@ -0,0 +1,2402 @@
++# SOME DESCRIPTIVE TITLE.
++# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
++# This file is distributed under the same license as the PACKAGE package.
++# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
++#
++# Translators:
++# Gonçalo Matos , 2017
++# String YM <inactive+StringYM@transifex.com>, 2017
++# Rui <xymarior@yandex.com>, 2019
++#
++#, fuzzy
++msgid ""
++msgstr ""
++"Project-Id-Version: PACKAGE VERSION\n"
++"Report-Msgid-Bugs-To: \n"
++"POT-Creation-Date: 2020-05-14 18:55+0300\n"
++"PO-Revision-Date: 2017-01-26 19:47+0000\n"
++"Last-Translator: Rui <xymarior@yandex.com>, 2019\n"
++"Language-Team: Portuguese (Portugal) (https://www.transifex.com/transmissionbt/teams/33778/pt_PT/)\n"
++"Language: pt_PT\n"
++"MIME-Version: 1.0\n"
++"Content-Type: text/plain; charset=UTF-8\n"
++"Content-Transfer-Encoding: 8bit\n"
++"Plural-Forms: nplurals=2; plural=(n != 1);\n"
++
++#: ../cli/cli.c:114 ../gtk/util.c:92 ../libtransmission/utils.c:1694
++msgid "None"
++msgstr "Nenhum"
++
++#: ../gtk/actions.c:31
++msgid "Sort by _Activity"
++msgstr "Ordernar por: _Atividade"
++
++#: ../gtk/actions.c:32
++msgid "Sort by _Name"
++msgstr "Ordenar por: _Nome"
++
++#: ../gtk/actions.c:33
++msgid "Sort by _Progress"
++msgstr "Ordenar por: _Progresso"
++
++#: ../gtk/actions.c:34
++msgid "Sort by _Queue"
++msgstr "Ordenar por: _Data"
++
++#: ../gtk/actions.c:35
++msgid "Sort by Rati_o"
++msgstr "Ordenar por: Percent_agem"
++
++#: ../gtk/actions.c:36
++msgid "Sort by Stat_e"
++msgstr "Ordenar por: _Estado"
++
++#: ../gtk/actions.c:37
++msgid "Sort by A_ge"
++msgstr "Ordenar por: A_ge"
++
++#: ../gtk/actions.c:38
++msgid "Sort by Time _Left"
++msgstr "Ordenar por: Time_Left"
++
++#: ../gtk/actions.c:39
++msgid "Sort by Si_ze"
++msgstr "Ordenar por: Si:ze"
++
++#: ../gtk/actions.c:53
++msgid "_Show Transmission"
++msgstr "_Mostrar o Transmission"
++
++#: ../gtk/actions.c:54
++msgid "Message _Log"
++msgstr "_Registo de Mensagens"
++
++#: ../gtk/actions.c:67
++msgid "Enable Alternative Speed _Limits"
++msgstr "Ativar _Limites de Velocidade Alternativos"
++
++#: ../gtk/actions.c:68
++msgid "_Compact View"
++msgstr "Vista _Compacta"
++
++#: ../gtk/actions.c:69
++msgid "Re_verse Sort Order"
++msgstr "In_verter Ordenação"
++
++#: ../gtk/actions.c:70
++msgid "_Filterbar"
++msgstr "Barra de _Filtros"
++
++#: ../gtk/actions.c:71
++msgid "_Statusbar"
++msgstr "Barra de E_stado"
++
++#: ../gtk/actions.c:72
++msgid "_Toolbar"
++msgstr "Barra de Ferramen_tas"
++
++#: ../gtk/actions.c:77
++msgid "_File"
++msgstr "_Ficheiro"
++
++#: ../gtk/actions.c:78
++msgid "_Torrent"
++msgstr "_Torrent"
++
++#: ../gtk/actions.c:79
++msgid "_View"
++msgstr "_Vista"
++
++#: ../gtk/actions.c:80
++msgid "_Sort Torrents By"
++msgstr "_Ordenar Torrents por:"
++
++#: ../gtk/actions.c:81
++msgid "_Queue"
++msgstr "F_ila"
++
++#: ../gtk/actions.c:82 ../gtk/details.c:2839
++msgid "_Edit"
++msgstr "_Editar"
++
++#: ../gtk/actions.c:83
++msgid "_Help"
++msgstr "_Ajuda"
++
++#: ../gtk/actions.c:84
++msgid "Copy _Magnet Link to Clipboard"
++msgstr "Copiar Link _Magnético"
++
++#: ../gtk/actions.c:85
++msgid "Open URL…"
++msgstr "Abrir URL…"
++
++#: ../gtk/actions.c:85
++msgid "Open _URL…"
++msgstr "Abrir _URL…"
++
++#: ../gtk/actions.c:86 ../gtk/actions.c:87
++msgid "Open a torrent"
++msgstr "Abrir um torrent"
++
++#: ../gtk/actions.c:88
++msgid "Start torrent"
++msgstr "_Iniciar Torrent"
++
++#: ../gtk/actions.c:88
++msgid "_Start"
++msgstr "_Iniciar"
++
++#: ../gtk/actions.c:89
++msgid "Start _Now"
++msgstr "Iniciar _Agora"
++
++#: ../gtk/actions.c:89
++msgid "Start torrent now"
++msgstr "Iniciar o torrent agora"
++
++#: ../gtk/actions.c:91
++msgid "_Statistics"
++msgstr "E_statísticas"
++
++#: ../gtk/actions.c:92
++msgid "_Donate"
++msgstr "_Doar"
++
++#: ../gtk/actions.c:93
++msgid "_Verify Local Data"
++msgstr "_Verificar Dados Locais"
++
++#: ../gtk/actions.c:94
++msgid "Pause torrent"
++msgstr "Pausar o Torrent"
++
++#: ../gtk/actions.c:94
++msgid "_Pause"
++msgstr "_Pausar"
++
++#: ../gtk/actions.c:95
++msgid "Pause all torrents"
++msgstr "Pausar todos os torrents"
++
++#: ../gtk/actions.c:95
++msgid "_Pause All"
++msgstr "Pausar tudo"
++
++#: ../gtk/actions.c:96
++msgid "Start all torrents"
++msgstr "Iniciar todos os Torrents"
++
++#: ../gtk/actions.c:96
++msgid "_Start All"
++msgstr "_Iniciar tudo"
++
++#: ../gtk/actions.c:97
++msgid "Set _Location…"
++msgstr "Definir _Localização…"
++
++#: ../gtk/actions.c:98
++msgid "Remove torrent"
++msgstr "Remover torrent"
++
++#: ../gtk/actions.c:99
++msgid "_Delete Files and Remove"
++msgstr "_Eliminar Ficheiros e Remover"
++
++#: ../gtk/actions.c:100
++msgid "Create a torrent"
++msgstr "Criar torrent"
++
++#: ../gtk/actions.c:100
++msgid "_New…"
++msgstr "_Novo"
++
++#: ../gtk/actions.c:101
++msgid "_Quit"
++msgstr "_Sair"
++
++#: ../gtk/actions.c:102
++msgid "Select _All"
++msgstr "Selecion_ar Tudo"
++
++#: ../gtk/actions.c:103
++msgid "Dese_lect All"
++msgstr "Desce_lecionar Tudo"
++
++#: ../gtk/actions.c:105
++msgid "Torrent properties"
++msgstr "Propriedades do torrent"
++
++#: ../gtk/actions.c:106
++msgid "Open Fold_er"
++msgstr "Abrir _Pasta"
++
++#: ../gtk/actions.c:108
++msgid "_Contents"
++msgstr "_Conteúdos"
++
++#: ../gtk/actions.c:109
++msgid "Ask Tracker for _More Peers"
++msgstr "Pedir ao rastreador _mais pares"
++
++#: ../gtk/actions.c:110
++msgid "Move to _Top"
++msgstr "Mover para o _Topo"
++
++#: ../gtk/actions.c:111
++msgid "Move _Up"
++msgstr "Mover para _Cima"
++
++#: ../gtk/actions.c:112
++msgid "Move _Down"
++msgstr "Mover para _Baixo"
++
++#: ../gtk/actions.c:113
++msgid "Move to _Bottom"
++msgstr "Mover para o _Fundo"
++
++#: ../gtk/actions.c:114
++msgid "Present Main Window"
++msgstr "Mostrar janela principal"
++
++#: ../gtk/details.c:486 ../gtk/details.c:497
++msgid "Use global settings"
++msgstr "Usar definições globais"
++
++#: ../gtk/details.c:487
++msgid "Seed regardless of ratio"
++msgstr "Semear independentemente do rácio"
++
++#: ../gtk/details.c:488
++msgid "Stop seeding at ratio:"
++msgstr "Parar de semear no rácio:"
++
++#: ../gtk/details.c:498
++msgid "Seed regardless of activity"
++msgstr "Semear independentemente da atividade"
++
++#: ../gtk/details.c:499
++msgid "Stop seeding if idle for N minutes:"
++msgstr "Parar de semear se inativo por N minutos:"
++
++#: ../gtk/details.c:517 ../gtk/tr-prefs.c:1253
++msgid "Speed"
++msgstr "Velocidade"
++
++#: ../gtk/details.c:519
++msgid "Honor global _limits"
++msgstr "Respeitar _limites globais"
++
++#: ../gtk/details.c:524
++#, c-format
++msgid "Limit _download speed (%s):"
++msgstr "Limitar velocidade de _descarregamento (%s):"
++
++#: ../gtk/details.c:537
++#, c-format
++msgid "Limit _upload speed (%s):"
++msgstr "Limitar velocidade de _envio (%s):"
++
++#: ../gtk/details.c:550 ../gtk/open-dialog.c:368
++msgid "Torrent _priority:"
++msgstr "_Prioridade do torrent:"
++
++#: ../gtk/details.c:554
++msgid "Seeding Limits"
++msgstr "Limites de Velocidade"
++
++#: ../gtk/details.c:564
++msgid "_Ratio:"
++msgstr "_Rácio:"
++
++#: ../gtk/details.c:573
++msgid "_Idle:"
++msgstr "_Inativo:"
++
++#: ../gtk/details.c:576
++msgid "Peer Connections"
++msgstr "Ligações a pares"
++
++#: ../gtk/details.c:579
++msgid "_Maximum peers:"
++msgstr "_Máximo de pares:"
++
++#: ../gtk/details.c:598 ../gtk/torrent-cell-renderer.c:195 ../libtransmission/verify.c:272
++msgid "Queued for verification"
++msgstr "Na fila para verificação"
++
++#: ../gtk/details.c:601
++msgid "Verifying local data"
++msgstr "A verificar dados locais"
++
++#: ../gtk/details.c:604 ../gtk/torrent-cell-renderer.c:199
++msgid "Queued for download"
++msgstr "Na fila para descarregar"
++
++#: ../gtk/details.c:607 ../gtk/filter.c:586
++msgctxt "Verb"
++msgid "Downloading"
++msgstr "A descarregar"
++
++#: ../gtk/details.c:610 ../gtk/torrent-cell-renderer.c:203
++msgid "Queued for seeding"
++msgstr "Na fila para semear"
++
++#: ../gtk/details.c:613 ../gtk/filter.c:587
++msgctxt "Verb"
++msgid "Seeding"
++msgstr "A semear"
++
++#: ../gtk/details.c:616 ../gtk/filter.c:589 ../gtk/torrent-cell-renderer.c:191
++msgid "Finished"
++msgstr "Terminado"
++
++#: ../gtk/details.c:616 ../gtk/filter.c:588 ../gtk/torrent-cell-renderer.c:191
++msgid "Paused"
++msgstr "Pausado"
++
++#: ../gtk/details.c:653 ../gtk/details.c:733
++msgid "N/A"
++msgstr "N/A"
++
++#: ../gtk/details.c:664 ../gtk/file-list.c:636
++msgid "Mixed"
++msgstr "Misturado"
++
++#: ../gtk/details.c:665
++msgid "No Torrents Selected"
++msgstr "Sem Torrents Selecionados"
++
++#: ../gtk/details.c:695
++msgid "Private to this tracker -- DHT and PEX disabled"
++msgstr "Privado para este rastreador - DHT e PEX desativados"
++
++#: ../gtk/details.c:695
++msgid "Public torrent"
++msgstr "Torrent público"
++
++#: ../gtk/details.c:739
++#, c-format
++msgid "Created by %1$s"
++msgstr "Criado por %1$s"
++
++#: ../gtk/details.c:743
++#, c-format
++msgid "Created on %1$s"
++msgstr "Criado em %1$s"
++
++#: ../gtk/details.c:747
++#, c-format
++msgid "Created by %1$s on %2$s"
++msgstr "Criado por %1$s em %2$s"
++
++#: ../gtk/details.c:877
++msgid "Unknown"
++msgstr "Desconhecido"
++
++#: ../gtk/details.c:919
++#, c-format
++msgid "%1$s (%2$'d piece @ %3$s)"
++msgid_plural "%1$s (%2$'d pieces @ %3$s)"
++msgstr[0] "%1$s (%2$'d pedaço @ %3$s)"
++msgstr[1] "%1$s (%2$'d pedaços @ %3$s)"
++
++#: ../gtk/details.c:925
++#, c-format
++msgid "%1$s (%2$'d piece)"
++msgid_plural "%1$s (%2$'d pieces)"
++msgstr[0] "%1$s (%2$'d pedaço)"
++msgstr[1] "%1$s (%2$'d pedaços)"
++
++#: ../gtk/details.c:969
++#, c-format
++msgid "%1$s (%2$s%%)"
++msgstr "%1$s (%2$s%%)"
++
++#: ../gtk/details.c:973
++#, c-format
++msgid "%1$s (%2$s%% of %3$s%% Available)"
++msgstr "%1$s (%2$s%% de %3$s%% Disponível)"
++
++#: ../gtk/details.c:977
++#, c-format
++msgid "%1$s (%2$s%% of %3$s%% Available); %4$s Unverified"
++msgstr "%1$s (%2$s%% de %3$s%% Disponível); %4$s Por verificar"
++
++#: ../gtk/details.c:1010
++#, c-format
++msgid "%1$s (+%2$s corrupt)"
++msgstr "%1$s (+%2$s corrompido)"
++
++#: ../gtk/details.c:1042
++#, c-format
++msgid "%s (Ratio: %s)"
++msgstr "%s (Rácio: %s)"
++
++#: ../gtk/details.c:1084
++msgid "No errors"
++msgstr "Sem erros"
++
++#: ../gtk/details.c:1108
++msgid "Never"
++msgstr "Nunca"
++
++#: ../gtk/details.c:1116
++msgid "Active now"
++msgstr "Ativo agora"
++
++#: ../gtk/details.c:1122
++#, c-format
++msgid "%1$s ago"
++msgstr "%1$s atrás"
++
++#: ../gtk/details.c:1145
++msgid "Activity"
++msgstr "Atividade"
++
++#: ../gtk/details.c:1150
++msgid "Torrent size:"
++msgstr "Tamanho do torrent:"
++
++#: ../gtk/details.c:1155
++msgid "Have:"
++msgstr "Tenho:"
++
++#: ../gtk/details.c:1160 ../gtk/stats.c:133 ../gtk/stats.c:158
++msgid "Uploaded:"
++msgstr "Enviado:"
++
++#: ../gtk/details.c:1165 ../gtk/stats.c:137 ../gtk/stats.c:162
++msgid "Downloaded:"
++msgstr "Descarregado:"
++
++#: ../gtk/details.c:1170
++msgid "State:"
++msgstr "Estado:"
++
++#: ../gtk/details.c:1175
++msgid "Running time:"
++msgstr "Tempo em execução:"
++
++#: ../gtk/details.c:1180
++msgid "Remaining time:"
++msgstr "Tempo restante:"
++
++#: ../gtk/details.c:1185
++msgid "Last activity:"
++msgstr "Última atividade:"
++
++#: ../gtk/details.c:1189
++msgid "Error:"
++msgstr "Erro:"
++
++#: ../gtk/details.c:1193
++msgid "Details"
++msgstr "Detalhes"
++
++#: ../gtk/details.c:1197
++msgid "Location:"
++msgstr "Localização:"
++
++#: ../gtk/details.c:1202
++msgid "Hash:"
++msgstr "Hash:"
++
++#: ../gtk/details.c:1208
++msgid "Privacy:"
++msgstr "Privacidade:"
++
++#: ../gtk/details.c:1213
++msgid "Origin:"
++msgstr "Origem:"
++
++#: ../gtk/details.c:1228
++msgid "Comment:"
++msgstr "Comentário:"
++
++#: ../gtk/details.c:1256
++msgid "Web Seeds"
++msgstr "Semeares da web"
++
++#: ../gtk/details.c:1260 ../gtk/details.c:1316
++msgid "Down"
++msgstr "Baixo"
++
++#: ../gtk/details.c:1312
++msgid "Address"
++msgstr "Endereço"
++
++#: ../gtk/details.c:1320
++msgid "Up"
++msgstr "Cima"
++
++#: ../gtk/details.c:1323
++msgid "Client"
++msgstr "Cliente"
++
++#: ../gtk/details.c:1326
++msgid "%"
++msgstr "%"
++
++#: ../gtk/details.c:1330
++msgid "Up Reqs"
++msgstr "Pedid. Env."
++
++#: ../gtk/details.c:1334
++msgid "Dn Reqs"
++msgstr "Pedid. Receb."
++
++#: ../gtk/details.c:1338
++msgid "Dn Blocks"
++msgstr "Blocos Receb."
++
++#: ../gtk/details.c:1342
++msgid "Up Blocks"
++msgstr "Blocos Env."
++
++#: ../gtk/details.c:1346
++msgid "We Cancelled"
++msgstr "Nós Concelamos"
++
++#: ../gtk/details.c:1350
++msgid "They Cancelled"
++msgstr "Eles Cancelaram"
++
++#: ../gtk/details.c:1353
++msgid "Flags"
++msgstr "Bandeiras"
++
++#: ../gtk/details.c:1770
++msgid "Optimistic unchoke"
++msgstr "Desestrangulamento otimista"
++
++#: ../gtk/details.c:1774
++msgid "Downloading from this peer"
++msgstr "A descarregar deste par"
++
++#: ../gtk/details.c:1778
++msgid "We would download from this peer if they would let us"
++msgstr "Descarregaríamos deste pare se ele permitisse"
++
++#: ../gtk/details.c:1782
++msgid "Uploading to peer"
++msgstr "A enviar para o par"
++
++#: ../gtk/details.c:1786
++msgid "We would upload to this peer if they asked"
++msgstr "Enviaríamos para este par se ele pedisse"
++
++#: ../gtk/details.c:1790
++msgid "Peer has unchoked us, but we're not interested"
++msgstr "O par destrangulou-nos, mas não estamos interessados"
++
++#: ../gtk/details.c:1794
++msgid "We unchoked this peer, but they're not interested"
++msgstr "Desestrangulamos este par, mas ele não está interessado"
++
++#: ../gtk/details.c:1798
++msgid "Encrypted connection"
++msgstr "Ligação encriptada"
++
++#: ../gtk/details.c:1802
++msgid "Peer was found through Peer Exchange (PEX)"
++msgstr "O par foi descoberto através da Trocar de Pares (PEX)"
++
++#: ../gtk/details.c:1806
++msgid "Peer was found through DHT"
++msgstr "O par foi encontrado através da Tabela Hash Distribuída (DHT)"
++
++#: ../gtk/details.c:1810
++msgid "Peer is an incoming connection"
++msgstr "O par é uma ligação a dar entrada"
++
++#: ../gtk/details.c:1814
++msgid "Peer is connected over µTP"
++msgstr "O par está ligado através de µTP"
++
++#: ../gtk/details.c:2082 ../gtk/details.c:2854
++msgid "Show _more details"
++msgstr "Mostrar _mais detalhes"
++
++#: ../gtk/details.c:2156
++#, c-format
++msgid "Got a list of %1$s%2$'d peers%3$s %4$s ago"
++msgstr "Obtida uma lista de %1$s%2$'d pares%3$s %4$s atrás"
++
++#: ../gtk/details.c:2161
++#, c-format
++msgid "Peer list request %1$stimed out%2$s %3$s ago; will retry"
++msgstr "O pedido de lista de pares %1$sexcedeu o tempo limite%2$s %3$s atrás; a tentar novamente"
++
++#: ../gtk/details.c:2166
++#, c-format
++msgid "Got an error %1$s\"%2$s\"%3$s %4$s ago"
++msgstr "Obtido um erro %1$s\"%2$s\"%3$s %4$s atrás"
++
++#: ../gtk/details.c:2175
++msgid "No updates scheduled"
++msgstr "Não há atualizações programadas"
++
++#: ../gtk/details.c:2181
++#, c-format
++msgid "Asking for more peers in %s"
++msgstr "A pedir mais pares em %s"
++
++#: ../gtk/details.c:2186
++msgid "Queued to ask for more peers"
++msgstr "Na fila para pedir por mais pares"
++
++#: ../gtk/details.c:2192
++#, c-format
++msgid "Asking for more peers now… <small>%s</small>"
++msgstr "A pedir agora por mais pares… <small>%s</small>"
++
++#: ../gtk/details.c:2205
++#, c-format
++msgid "Tracker had %s%'d seeders and %'d leechers%s %s ago"
++msgstr "O rastreador teve %s%'d semeadores e %'d sanguesugas%s %s atrás"
++
++#: ../gtk/details.c:2210
++#, c-format
++msgid "Got a scrape error \"%s%s%s\" %s ago"
++msgstr "Obtido um erro scrape \"%s%s%s\" %s atrás"
++
++#: ../gtk/details.c:2223
++#, c-format
++msgid "Asking for peer counts in %s"
++msgstr "A pedir a contagem de pares em %s"
++
++#: ../gtk/details.c:2228
++msgid "Queued to ask for peer counts"
++msgstr "Na fila para pedir a contagem de pares"
++
++#: ../gtk/details.c:2234
++#, c-format
++msgid "Asking for peer counts now… <small>%s</small>"
++msgstr "A pedir agora a contagem de pares… <small>%s</small>"
++
++#: ../gtk/details.c:2537
++msgid "List contains invalid URLs"
++msgstr "A lista contém URLs inválidos"
++
++#: ../gtk/details.c:2541 ../gtk/file-list.c:847
++msgid "Please correct the errors and try again."
++msgstr "Por favor corrija os erros e tente novamente."
++
++#: ../gtk/details.c:2603
++#, c-format
++msgid "%s - Edit Trackers"
++msgstr "%s - Editar Rastreadores"
++
++#: ../gtk/details.c:2610
++msgid "Tracker Announce URLs"
++msgstr "URLs de anúncios do rastreador"
++
++#: ../gtk/details.c:2613 ../gtk/makemeta-ui.c:493
++msgid ""
++"To add a backup URL, add it on the line after the primary URL.\n"
++"To add another primary URL, add it after a blank line."
++msgstr ""
++"Para adicionar um URL de cópia de segurança, aadicione-o à linha após o URL principal.\n"
++"Para adicionar outro URL principal, adicione-o após uma linha vazia."
++
++#: ../gtk/details.c:2713
++#, c-format
++msgid "%s - Add Tracker"
++msgstr "%s - Adicionar Rastreador"
++
++#: ../gtk/details.c:2720
++msgid "Tracker"
++msgstr "Rastreador"
++
++#: ../gtk/details.c:2726
++msgid "_Announce URL:"
++msgstr "URL de _anúncios:"
++
++#: ../gtk/details.c:2810 ../gtk/details.c:2967
++msgid "Trackers"
++msgstr "Rastreadores"
++
++#: ../gtk/details.c:2834
++msgid "_Add"
++msgstr "_Adicionar"
++
++#: ../gtk/details.c:2845
++msgid "_Remove"
++msgstr "_Remover"
++
++#: ../gtk/details.c:2861
++msgid "Show _backup trackers"
++msgstr "Mostrar rastreadores na cópia de segurança"
++
++#: ../gtk/details.c:2959 ../gtk/msgwin.c:431
++msgid "Information"
++msgstr "Informação"
++
++#: ../gtk/details.c:2963
++msgid "Peers"
++msgstr "Pares"
++
++#: ../gtk/details.c:2972
++msgid "File listing not available for combined torrent properties"
++msgstr "Listagem de ficheiros não disponível para propriedades de torrents combinadas"
++
++#: ../gtk/details.c:2976 ../gtk/makemeta-ui.c:442
++msgid "Files"
++msgstr "Ficheiros"
++
++#: ../gtk/details.c:2980 ../gtk/tr-prefs.c:1164 ../gtk/tr-window.c:646
++msgid "Options"
++msgstr "Opções"
++
++#: ../gtk/details.c:3002
++#, c-format
++msgid "%s Properties"
++msgstr "%s Propriedades"
++
++#: ../gtk/details.c:3013
++#, c-format
++msgid "%'d Torrent Properties"
++msgstr "%'d Propriedades do Torrent"
++
++#: ../gtk/dialogs.c:100
++#, c-format
++msgid "Remove torrent?"
++msgid_plural "Remove %d torrents?"
++msgstr[0] "Remover torrent?"
++msgstr[1] "Remover %d torrents?"
++
++#: ../gtk/dialogs.c:104
++#, c-format
++msgid "Delete this torrent's downloaded files?"
++msgid_plural "Delete these %d torrents' downloaded files?"
++msgstr[0] "Eliminar este ficheiro torrent descarregado?"
++msgstr[1] "Eliminar estes %d ficheiros torrent descarregados?"
++
++#: ../gtk/dialogs.c:113
++msgid "Once removed, continuing the transfer will require the torrent file or magnet link."
++msgid_plural "Once removed, continuing the transfers will require the torrent files or magnet links."
++msgstr[0] "Após sere eliminado, para continuar o descarregamento será necessário o ficheiro torrent ou o link magnético."
++msgstr[1] "Após serem eliminados, para continuar o descarregamento serão necessários os ficheiros torrent ou os links magnéticos."
++
++#: ../gtk/dialogs.c:118
++msgid "This torrent has not finished downloading."
++msgid_plural "These torrents have not finished downloading."
++msgstr[0] "O descarregamento deste torrent ainda não terminou."
++msgstr[1] "O descarregamento destes torrents ainda não terminou."
++
++#: ../gtk/dialogs.c:123
++msgid "This torrent is connected to peers."
++msgid_plural "These torrents are connected to peers."
++msgstr[0] "Este torrent está conectado aos outros pares."
++msgstr[1] "Estes torrents estão conectados aos outros pares."
++
++#: ../gtk/dialogs.c:130
++msgid "One of these torrents is connected to peers."
++msgid_plural "Some of these torrents are connected to peers."
++msgstr[0] "Um destes torrents está conectado a outros pares."
++msgstr[1] "Alguns destes torrents estão conectados a outros pares."
++
++#: ../gtk/dialogs.c:141
++msgid "One of these torrents has not finished downloading."
++msgid_plural "Some of these torrents have not finished downloading."
++msgstr[0] "Um destes torrents ainda não terminou."
++msgstr[1] "Alguns destes torrents ainda não terminaram."
++
++#: ../gtk/file-list.c:624 ../gtk/util.c:520
++msgid "High"
++msgstr "Alta"
++
++#: ../gtk/file-list.c:628 ../gtk/util.c:521
++msgid "Normal"
++msgstr "Normal"
++
++#: ../gtk/file-list.c:632 ../gtk/util.c:522
++msgid "Low"
++msgstr "Baixa"
++
++#: ../gtk/file-list.c:845
++#, c-format
++msgid "Unable to rename file as \"%s\": %s"
++msgstr "Não foi possível alterar o nome do ficheiro para \"%s\": %s"
++
++#. add file column
++#: ../gtk/file-list.c:957 ../gtk/msgwin.c:289
++msgid "Name"
++msgstr "Nome"
++
++#. add "size" column
++#: ../gtk/file-list.c:973
++msgid "Size"
++msgstr "Tamanho"
++
++#. add "progress" column
++#: ../gtk/file-list.c:984
++msgid "Have"
++msgstr "Tenho"
++
++#. add "enabled" column
++#: ../gtk/file-list.c:997
++msgid "Download"
++msgstr "Descarregar"
++
++#. add priority column
++#: ../gtk/file-list.c:1012
++msgid "Priority"
++msgstr "Prioridade"
++
++#: ../gtk/filter.c:299 ../gtk/filter.c:583
++msgid "All"
++msgstr "Tudo"
++
++#: ../gtk/filter.c:585
++msgid "Active"
++msgstr "Ativo"
++
++#: ../gtk/filter.c:590
++msgctxt "Verb"
++msgid "Verifying"
++msgstr "A verificar"
++
++#: ../gtk/filter.c:591 ../gtk/msgwin.c:430 ../gtk/util.c:717
++msgid "Error"
++msgstr "Erro"
++
++#: ../gtk/filter.c:880
++msgid "_Show:"
++msgstr "_Mostrar:"
++
++#: ../gtk/filter.c:884
++#, c-format
++msgid "_Show %'d of:"
++msgstr "_Mostrar %'d de:"
++
++#: ../gtk/main.c:314
++#, c-format
++msgid "Error registering Transmission as a %s handler: %s"
++msgstr "Erro ao registar o Transmission como um manipulador de %s: %s"
++
++#: ../gtk/main.c:480
++#, c-format
++msgid "Got signal %d; trying to shut down cleanly. Do it again if it gets stuck."
++msgstr "Foi obtido o sinal de %d; a tentar desligar corretamente. Faça-o de novo caso fique bloqueado."
++
++#: ../gtk/main.c:616
++msgid "Where to look for configuration files"
++msgstr "Onde procurar por ficheiros de configuração"
++
++#: ../gtk/main.c:617
++msgid "Start with all torrents paused"
++msgstr "Iniciar com todos os torrents em pausa"
++
++#: ../gtk/main.c:618
++msgid "Start minimized in notification area"
++msgstr "Iniciar minimizado na área de notificações"
++
++#: ../gtk/main.c:619
++msgid "Show version number and exit"
++msgstr "Mostrar número da versão e sair"
++
++#: ../gtk/main.c:637 ../gtk/transmission-gtk.appdata.xml.in:11 ../gtk/transmission-gtk.desktop.in:3
++msgid "Transmission"
++msgstr "Transmission"
++
++#. parse the command line
++#: ../gtk/main.c:640
++msgid "[torrent files or urls]"
++msgstr "[ficheiros torrent ou urls]"
++
++#: ../gtk/main.c:647
++#, c-format
++msgid ""
++"%s\n"
++"Run '%s --help' to see a full list of available command line options.\n"
++msgstr ""
++"%s\n"
++"Execute '%s --help' para ver uma lista completa de opções de linha de comandos disponíveis.\n"
++
++#: ../gtk/main.c:746
++msgid "Transmission is a file sharing program. When you run a torrent, its data will be made available to others by means of upload. Any content you share is your sole responsibility."
++msgstr "O Transmission é um programa de partilha de ficheiros. Quando abre um torrent, os dados deste serão partilhados com outros utilizadores. Qualquer conteúdo que partilhe será de sua inteira responsabilidade."
++
++#: ../gtk/main.c:749
++msgid "I _Agree"
++msgstr "Eu _Concordo"
++
++#: ../gtk/main.c:980
++msgid "<b>Closing Connections</b>"
++msgstr "<b>A fechar ligações</b>"
++
++#: ../gtk/main.c:984
++msgid "Sending upload/download totals to tracker…"
++msgstr "A enviar o total de enviado/descarregado ao rastreador…"
++
++#: ../gtk/main.c:988
++msgid "_Quit Now"
++msgstr "_Sair Agora"
++
++#: ../gtk/main.c:1038
++msgid "Couldn't add corrupt torrent"
++msgid_plural "Couldn't add corrupt torrents"
++msgstr[0] "Não foi possível adicionar o torrent corrompido"
++msgstr[1] "Não foi possível adicionar torrents corrompidos"
++
++#: ../gtk/main.c:1044
++msgid "Couldn't add duplicate torrent"
++msgid_plural "Couldn't add duplicate torrents"
++msgstr[0] "Não foi possível adicionar o torrent duplicado"
++msgstr[1] "Não foi possível adicionar torrents duplicados"
++
++#: ../gtk/main.c:1363
++msgid "A fast and easy BitTorrent client"
++msgstr "Um cliente BitTorrent rápido e fácil de usar"
++
++#: ../gtk/main.c:1364
++msgid "Copyright (c) The Transmission Project"
++msgstr "Direitos de Autor (c) The Transmission Project"
++
++#. Translators: translate "translator-credits" as your name
++#. to have it appear in the credits in the "About"
++#. dialog
++#: ../gtk/main.c:1370
++msgid "translator-credits"
++msgstr ""
++"Gonçalo Matos (goncalomatos);\n"
++"Rui (xendez);\n"
++"StringYM;"
++
++#: ../gtk/makemeta-ui.c:70
++#, c-format
++msgid "Creating \"%s\""
++msgstr "A criar \"%s\""
++
++#: ../gtk/makemeta-ui.c:74
++#, c-format
++msgid "Created \"%s\"!"
++msgstr "Criado \"%s\"!"
++
++#: ../gtk/makemeta-ui.c:78
++#, c-format
++msgid "Error: invalid announce URL \"%s\""
++msgstr "Erro: URL de anúncio inválido \"%s\""
++
++#: ../gtk/makemeta-ui.c:82
++msgid "Cancelled"
++msgstr "Cancelado"
++
++#: ../gtk/makemeta-ui.c:86
++#, c-format
++msgid "Error reading \"%s\": %s"
++msgstr "Erro ao ler \"%s\": %s"
++
++#: ../gtk/makemeta-ui.c:90
++#, c-format
++msgid "Error writing \"%s\": %s"
++msgstr "Erro ao gravar \"%s\": %s"
++
++#. how much data we've scanned through to generate checksums
++#: ../gtk/makemeta-ui.c:113
++#, c-format
++msgid "Scanned %s"
++msgstr "%s processado"
++
++#: ../gtk/makemeta-ui.c:183 ../gtk/makemeta-ui.c:434
++msgid "New Torrent"
++msgstr "Novo Torrent"
++
++#: ../gtk/makemeta-ui.c:194
++msgid "Creating torrent…"
++msgstr "A criar o torrent…"
++
++#: ../gtk/makemeta-ui.c:304
++msgid "No source selected"
++msgstr "Nenhuma fonte selecionada"
++
++#: ../gtk/makemeta-ui.c:310
++#, c-format
++msgid "%1$s; %2$'d File"
++msgid_plural "%1$s; %2$'d Files"
++msgstr[0] "%1$s; %2$'d Ficheiro"
++msgstr[1] "%1$s; %2$'d Ficheiros"
++
++#: ../gtk/makemeta-ui.c:315
++#, c-format
++msgid "%1$'d Piece @ %2$s"
++msgid_plural "%1$'d Pieces @ %2$s"
++msgstr[0] "%1$'d Peça @ %2$s"
++msgstr[1] "%1$'d Peças @ %2$s"
++
++#: ../gtk/makemeta-ui.c:444
++msgid "Sa_ve to:"
++msgstr "Gra_var para:"
++
++#: ../gtk/makemeta-ui.c:450
++msgid "Source F_older:"
++msgstr "Pasta da f_onte:"
++
++#: ../gtk/makemeta-ui.c:462
++msgid "Source _File:"
++msgstr "_Ficheiro da fonte:"
++
++#: ../gtk/makemeta-ui.c:474
++msgid "<i>No source selected</i>"
++msgstr "<i>Nenhuma fonte selecionada</i>"
++
++#: ../gtk/makemeta-ui.c:478
++msgid "Properties"
++msgstr "Propriedades"
++
++#: ../gtk/makemeta-ui.c:480
++msgid "_Trackers:"
++msgstr "_Rastreadores:"
++
++#: ../gtk/makemeta-ui.c:500
++msgid "Co_mment:"
++msgstr "Co_mentário:"
++
++#: ../gtk/makemeta-ui.c:509
++msgid "_Private torrent"
++msgstr "Torrent _privado"
++
++#: ../gtk/msgwin.c:146
++#, c-format
++msgid "Couldn't save \"%s\""
++msgstr "Não foi possível gravar \"%s\""
++
++#: ../gtk/msgwin.c:209
++msgid "Save Log"
++msgstr "Gravar registo"
++
++#: ../gtk/msgwin.c:284
++msgid "Time"
++msgstr "Hora"
++
++#: ../gtk/msgwin.c:294
++msgid "Message"
++msgstr "Mensagem"
++
++#: ../gtk/msgwin.c:432
++msgid "Debug"
++msgstr "Depuração de erros"
++
++#: ../gtk/msgwin.c:457
++msgid "Message Log"
++msgstr "Registo de mensagens"
++
++#: ../gtk/msgwin.c:491
++msgid "Level"
++msgstr "Nível"
++
++#: ../gtk/notify.c:207
++msgid "Open File"
++msgstr "Abrir ficheiro"
++
++#: ../gtk/notify.c:212
++msgid "Open Folder"
++msgstr "Abrir pasta"
++
++#: ../gtk/notify.c:217
++msgid "Torrent Complete"
++msgstr "Torrent terminado"
++
++#: ../gtk/notify.c:233
++msgid "Torrent Added"
++msgstr "Torrent adicionado"
++
++#: ../gtk/open-dialog.c:256
++msgid "Torrent files"
++msgstr "Ficheiros de torrents"
++
++#: ../gtk/open-dialog.c:261
++msgid "All files"
++msgstr "Todos os ficheiros"
++
++#. make the dialog
++#: ../gtk/open-dialog.c:284
++msgid "Torrent Options"
++msgstr "Opções de torrents"
++
++#: ../gtk/open-dialog.c:301 ../gtk/tr-prefs.c:275
++msgid "Mo_ve .torrent file to the trash"
++msgstr "Mo_ver o ficheiro .torrent para o lixo"
++
++#: ../gtk/open-dialog.c:303
++msgid "_Start when added"
++msgstr "_Começar logo ao adicionar"
++
++#. "torrent file" row
++#: ../gtk/open-dialog.c:318
++msgid "_Torrent file:"
++msgstr "Ficheiro _torrent:"
++
++#: ../gtk/open-dialog.c:321
++msgid "Select Source File"
++msgstr "Selecionar ficheiro da fonte"
++
++#: ../gtk/open-dialog.c:331
++msgid "_Destination folder:"
++msgstr "Pasta de _destino:"
++
++#: ../gtk/open-dialog.c:334
++msgid "Select Destination Folder"
++msgstr "Selecione a pasta de destino"
++
++#: ../gtk/open-dialog.c:455
++msgid "Open a Torrent"
++msgstr "Abrir um torrent"
++
++#: ../gtk/open-dialog.c:466
++msgid "Show _options dialog"
++msgstr "Mostrar janela de _opções"
++
++#: ../gtk/open-dialog.c:518
++msgid "Open URL"
++msgstr "Abrir URL"
++
++#: ../gtk/open-dialog.c:524
++msgid "Open torrent from URL"
++msgstr "Abrir um torrent por URL"
++
++#: ../gtk/open-dialog.c:529
++msgid "_URL"
++msgstr "_URL"
++
++#: ../gtk/relocate.c:60
++#, c-format
++msgid "Moving \"%s\""
++msgstr "A mover \"1%s\""
++
++#: ../gtk/relocate.c:76
++msgid "Couldn't move torrent"
++msgstr "Não foi possível mover o torrent"
++
++#: ../gtk/relocate.c:111
++msgid "This may take a moment…"
++msgstr "Isto pode demorar um pouco…"
++
++#: ../gtk/relocate.c:139 ../gtk/relocate.c:153
++msgid "Set Torrent Location"
++msgstr "Definir a localização do torrent"
++
++#: ../gtk/relocate.c:146
++msgid "Location"
++msgstr "Localização"
++
++#: ../gtk/relocate.c:156
++msgid "Torrent _location:"
++msgstr "_Localização do torrent:"
++
++#: ../gtk/relocate.c:157
++msgid "_Move from the current folder"
++msgstr "_Mover da pasta atual"
++
++#: ../gtk/relocate.c:160
++msgid "Local data is _already there"
++msgstr "Os d_ados locais já estão lá"
++
++#: ../gtk/stats.c:69 ../gtk/stats.c:150
++#, c-format
++msgid "Started %'d time"
++msgid_plural "Started %'d times"
++msgstr[0] "Iniciado %'d vez"
++msgstr[1] "Iniciado %'d vezess"
++
++#: ../gtk/stats.c:91
++msgid "Reset your statistics?"
++msgstr "Limpar as suas estatísticas?"
++
++#: ../gtk/stats.c:92
++msgid "These statistics are for your information only. Resetting them doesn't affect the statistics logged by your BitTorrent trackers."
++msgstr "Estas estatísticas existem apenas para informação. Se as limpar isso não afetará as estatísticas registadas pelos rastreadores BitTorrent."
++
++#: ../gtk/stats.c:96 ../gtk/stats.c:123
++msgid "_Reset"
++msgstr "_Limpar"
++
++#: ../gtk/stats.c:123 ../gtk/tr-window.c:687
++msgid "Statistics"
++msgstr "Estatísticas"
++
++#: ../gtk/stats.c:129
++msgid "Current Session"
++msgstr "Sessão Atual"
++
++#: ../gtk/stats.c:141 ../gtk/stats.c:166
++msgid "Ratio:"
++msgstr "Rácio:"
++
++#: ../gtk/stats.c:145 ../gtk/stats.c:170
++msgid "Duration:"
++msgstr "Duração:"
++
++#: ../gtk/stats.c:149
++msgid "Total"
++msgstr "Total"
++
++#. %1$s is how much we've got,
++#. %2$s is how much we'll have when done,
++#. %3$s%% is a percentage of the two
++#: ../gtk/torrent-cell-renderer.c:59
++#, c-format
++msgid "%1$s of %2$s (%3$s%%)"
++msgstr "%1$s de %2$s (%3$s%%)"
++
++#. %1$s is how much we've got,
++#. %2$s is the torrent's total size,
++#. %3$s%% is a percentage of the two,
++#. %4$s is how much we've uploaded,
++#. %5$s is our upload-to-download ratio,
++#. %6$s is the ratio we want to reach before we stop uploading
++#: ../gtk/torrent-cell-renderer.c:75
++#, c-format
++msgid "%1$s of %2$s (%3$s%%), uploaded %4$s (Ratio: %5$s Goal: %6$s)"
++msgstr "%1$s de %2$s (%3$s%%), enviado %4$s (Rácio: %5$s Objetivo: %6$s)"
++
++#. %1$s is how much we've got,
++#. %2$s is the torrent's total size,
++#. %3$s%% is a percentage of the two,
++#. %4$s is how much we've uploaded,
++#. %5$s is our upload-to-download ratio
++#: ../gtk/torrent-cell-renderer.c:91
++#, c-format
++msgid "%1$s of %2$s (%3$s%%), uploaded %4$s (Ratio: %5$s)"
++msgstr "%1$s de %2$s (%3$s%%), enviado %4$s (Rácio: %5$s)"
++
++#. %1$s is the torrent's total size,
++#. %2$s is how much we've uploaded,
++#. %3$s is our upload-to-download ratio,
++#. %4$s is the ratio we want to reach before we stop uploading
++#: ../gtk/torrent-cell-renderer.c:108
++#, c-format
++msgid "%1$s, uploaded %2$s (Ratio: %3$s Goal: %4$s)"
++msgstr "%1$s, enviado %2$s (Rácio: %3$s Objetivo: %4$s)"
++
++#. %1$s is the torrent's total size,
++#. %2$s is how much we've uploaded,
++#. %3$s is our upload-to-download ratio
++#: ../gtk/torrent-cell-renderer.c:120
++#, c-format
++msgid "%1$s, uploaded %2$s (Ratio: %3$s)"
++msgstr "%1$s, enviado %2$s (Rácio: %3$s)"
++
++#: ../gtk/torrent-cell-renderer.c:135
++msgid "Remaining time unknown"
++msgstr "Tempo restante desconhecido"
++
++#. time remaining
++#: ../gtk/torrent-cell-renderer.c:142
++#, c-format
++msgid "%s remaining"
++msgstr "%s restante"
++
++#. down speed, down symbol, up speed, up symbol
++#: ../gtk/torrent-cell-renderer.c:162
++#, c-format
++msgid "%1$s %2$s %3$s %4$s"
++msgstr "%1$s %2$s %3$s %4$s"
++
++#. up speed, up symbol
++#: ../gtk/torrent-cell-renderer.c:171
++#, c-format
++msgid "%1$s %2$s"
++msgstr "%1$s %2$s"
++
++#: ../gtk/torrent-cell-renderer.c:175
++msgid "Stalled"
++msgstr "Paralisado"
++
++#: ../gtk/torrent-cell-renderer.c:207
++#, c-format
++msgid "Verifying local data (%.1f%% tested)"
++msgstr "A verificar dados locais (%.1f%% testados)"
++
++#: ../gtk/torrent-cell-renderer.c:236
++#, c-format
++msgid "Tracker gave a warning: \"%s\""
++msgstr "O rastreador forneceu um aviso: \"%s\""
++
++#: ../gtk/torrent-cell-renderer.c:237
++#, c-format
++msgid "Tracker gave an error: \"%s\""
++msgstr "O rastreador forneceu um erro: \"%s\""
++
++#: ../gtk/torrent-cell-renderer.c:238
++#, c-format
++msgid "Error: %s"
++msgstr "Erro: %s"
++
++#. Downloading metadata from 2 peer (s)(50% done)
++#: ../gtk/torrent-cell-renderer.c:262
++#, c-format
++msgid "Downloading metadata from %1$'d %2$s (%3$d%% done)"
++msgstr "A descarregar metadados de %1$'d %2$s (%3$d%% feito)"
++
++#: ../gtk/torrent-cell-renderer.c:263 ../gtk/torrent-cell-renderer.c:269 ../gtk/torrent-cell-renderer.c:282
++msgid "peer"
++msgid_plural "peers"
++msgstr[0] "par"
++msgstr[1] "pares"
++
++#. Downloading from 2 of 3 peer (s) and 2 webseed (s)
++#: ../gtk/torrent-cell-renderer.c:268
++#, c-format
++msgid "Downloading from %1$'d of %2$'d %3$s and %4$'d %5$s"
++msgstr "A descarregar de %1$'d de %2$'d %3$s e %4$'d %5$s"
++
++#: ../gtk/torrent-cell-renderer.c:270 ../gtk/torrent-cell-renderer.c:276
++msgid "web seed"
++msgid_plural "web seeds"
++msgstr[0] "semear da web"
++msgstr[1] "semeares da web"
++
++#. Downloading from 3 web seed (s)
++#: ../gtk/torrent-cell-renderer.c:275
++#, c-format
++msgid "Downloading from %1$'d %2$s"
++msgstr "A descarregar de %1$'d %2$s"
++
++#. Downloading from 2 of 3 peer (s)
++#: ../gtk/torrent-cell-renderer.c:281
++#, c-format
++msgid "Downloading from %1$'d of %2$'d %3$s"
++msgstr "A descarregar de %1$'d de %2$'d %3$s"
++
++#: ../gtk/torrent-cell-renderer.c:289
++#, c-format
++msgid "Seeding to %1$'d of %2$'d connected peer"
++msgid_plural "Seeding to %1$'d of %2$'d connected peers"
++msgstr[0] "A semear para %1$'d de %2$'d par conectado"
++msgstr[1] "A semear para %1$'d de %2$'d pares conectados"
++
++#: ../gtk/tr-core.c:1241
++#, c-format
++msgid "Couldn't read \"%s\": %s"
++msgstr "Não foi possível ler \"%s\": %s"
++
++#: ../gtk/tr-core.c:1337
++#, c-format
++msgid "Skipping unknown torrent \"%s\""
++msgstr "A ignorar o torrent desconhecido \"%s\""
++
++#: ../gtk/tr-core.c:1612
++msgid "Inhibiting desktop hibernation"
++msgstr "Impedir a hibernação"
++
++#: ../gtk/tr-core.c:1616
++#, c-format
++msgid "Couldn't inhibit desktop hibernation: %s"
++msgstr "Não foi possível impedir a hibernação: %s"
++
++#: ../gtk/tr-core.c:1649
++msgid "Allowing desktop hibernation"
++msgstr "Permitir hibernação"
++
++#: ../gtk/tr-icon.c:57
++msgid "Idle"
++msgstr "Inativo"
++
++#: ../gtk/tr-icon.c:80 ../gtk/tr-icon.c:102
++#, c-format
++msgid " (Limit: %s)"
++msgstr " (Limite: %s)"
++
++#. %1$s: current upload speed
++#. * %2$s: current upload limit, if any
++#. * %3$s: current download speed
++#. * %4$s: current download limit, if any
++#: ../gtk/tr-icon.c:109
++#, c-format
++msgid ""
++"Transmission\n"
++"Up: %1$s %2$s\n"
++"Down: %3$s %4$s"
++msgstr ""
++"Transmission\n"
++"Env: %1$s %2$s\n"
++"Rec: %3$s %4$s"
++
++#: ../gtk/tr-prefs.c:258
++msgctxt "Gerund"
++msgid "Adding"
++msgstr "A adicionar"
++
++#: ../gtk/tr-prefs.c:260
++msgid "Automatically add .torrent files _from:"
++msgstr "Adicionar automaticamente ficheiros .torrent _de:"
++
++#: ../gtk/tr-prefs.c:267
++msgid "Show the Torrent Options _dialog"
++msgstr "Mostrar a _janela de opções do torrent"
++
++#: ../gtk/tr-prefs.c:271
++msgid "_Start added torrents"
++msgstr "_Iniciar torrents adicionados"
++
++#: ../gtk/tr-prefs.c:280
++msgid "Save to _Location:"
++msgstr "Gravar na _localização:"
++
++#: ../gtk/tr-prefs.c:287
++msgid "Download Queue"
++msgstr "Fila de descarregamento"
++
++#: ../gtk/tr-prefs.c:289
++msgid "Ma_ximum active downloads:"
++msgstr "Número má_ximo de descarregamentos:"
++
++#: ../gtk/tr-prefs.c:293
++msgid "Downloads sharing data in the last _N minutes are active:"
++msgstr "Descarregamentos a partilharem dados nos últimos _X minutos estão ativos:"
++
++#: ../gtk/tr-prefs.c:298 ../libtransmission/torrent.c:2170
++msgid "Incomplete"
++msgstr "Imcompleto"
++
++#: ../gtk/tr-prefs.c:300
++msgid "Append \"._part\" to incomplete files' names"
++msgstr "Anexar \"._part\" ao nome dos ficheiros incompletos"
++
++#: ../gtk/tr-prefs.c:304
++msgid "Keep _incomplete torrents in:"
++msgstr "Manter os torrents incompletos em:"
++
++#: ../gtk/tr-prefs.c:311
++msgid "Call scrip_t when torrent is completed:"
++msgstr "Executar scrip_t quando um torrent terminar:"
++
++#: ../gtk/tr-prefs.c:334
++msgid "Limits"
++msgstr "Limites"
++
++#: ../gtk/tr-prefs.c:336
++msgid "Stop seeding at _ratio:"
++msgstr "Parar de semear no _rácio:"
++
++#: ../gtk/tr-prefs.c:343
++msgid "Stop seeding if idle for _N minutes:"
++msgstr "Parar de semear se estiver inativo por _X minutos:"
++
++#: ../gtk/tr-prefs.c:365 ../gtk/tr-prefs.c:1258
++msgid "Desktop"
++msgstr "Secretária"
++
++#: ../gtk/tr-prefs.c:367
++msgid "_Inhibit hibernation when torrents are active"
++msgstr "_Impedir a hibernação quando os torrents estão ativos"
++
++#: ../gtk/tr-prefs.c:371
++msgid "Show Transmission icon in the _notification area"
++msgstr "Mostrar o ícone do Transmission na área de notificações"
++
++#: ../gtk/tr-prefs.c:376
++msgid "Notification"
++msgstr "Notificação"
++
++#: ../gtk/tr-prefs.c:378
++msgid "Show a notification when torrents are a_dded"
++msgstr "Mostrar uma notificação quando são a_dicionados torrents"
++
++#: ../gtk/tr-prefs.c:382
++msgid "Show a notification when torrents _finish"
++msgstr "Mostrar uma notificação quando os torrents terminam"
++
++#: ../gtk/tr-prefs.c:386
++msgid "Play a _sound when torrents finish"
++msgstr "Reproduzir um _som quando os torrents terminam"
++
++#: ../gtk/tr-prefs.c:412
++#, c-format
++msgid "Blocklist contains %'d rule"
++msgid_plural "Blocklist contains %'d rules"
++msgstr[0] "A lista de bloqueios contém %'d regra"
++msgstr[1] "A lista de bloqueios contém %'d regras"
++
++#: ../gtk/tr-prefs.c:446
++#, c-format
++msgid "Blocklist has %'d rule."
++msgid_plural "Blocklist has %'d rules."
++msgstr[0] "A lista de bloqueios tem %'d regra."
++msgstr[1] "A lista de bloqueios tem %'d regras."
++
++#: ../gtk/tr-prefs.c:450
++msgid "<b>Unable to update.</b>"
++msgstr "<b>Não foi possível atualizar.</b>"
++
++#: ../gtk/tr-prefs.c:450
++msgid "<b>Update succeeded!</b>"
++msgstr "<b>Atualização bem sucedida!</b>"
++
++#: ../gtk/tr-prefs.c:461
++msgid "Update Blocklist"
++msgstr "Atualizar Lista de Bloqueios"
++
++#: ../gtk/tr-prefs.c:463
++msgid "Getting new blocklist…"
++msgstr "A obter a nova lista de bloqueios…"
++
++#: ../gtk/tr-prefs.c:488
++msgid "Allow encryption"
++msgstr "Permitir encriptação"
++
++#: ../gtk/tr-prefs.c:488
++msgid "Prefer encryption"
++msgstr "Preferir encriptação"
++
++#: ../gtk/tr-prefs.c:489
++msgid "Require encryption"
++msgstr "Usar apenas encriptação"
++
++#: ../gtk/tr-prefs.c:511 ../gtk/tr-prefs.c:1256
++msgid "Privacy"
++msgstr "Privacidade"
++
++#: ../gtk/tr-prefs.c:513
++msgid "_Encryption mode:"
++msgstr "Modo de _Encriptação:"
++
++#: ../gtk/tr-prefs.c:518
++msgid "Blocklist"
++msgstr "Lista de bloqueio"
++
++#: ../gtk/tr-prefs.c:520
++msgid "Enable _blocklist:"
++msgstr "Ativar lista de _bloqueio"
++
++#: ../gtk/tr-prefs.c:534
++msgid "_Update"
++msgstr "_Atualizar"
++
++#: ../gtk/tr-prefs.c:546
++msgid "Enable _automatic updates"
++msgstr "Ativar _atualizações automáticas"
++
++#: ../gtk/tr-prefs.c:747
++msgid "Remote Control"
++msgstr "Controlo Remoto"
++
++#. "enabled" checkbutton
++#: ../gtk/tr-prefs.c:750
++msgid "Allow _remote access"
++msgstr "Permitir acesso _remoto"
++
++#: ../gtk/tr-prefs.c:756
++msgid "_Open web client"
++msgstr "_Abrir cliente web"
++
++#: ../gtk/tr-prefs.c:765
++msgid "HTTP _port:"
++msgstr "_Porta HTTP:"
++
++#. require authentication
++#: ../gtk/tr-prefs.c:769
++msgid "Use _authentication"
++msgstr "Usar _autenticação"
++
++#. username
++#: ../gtk/tr-prefs.c:777
++msgid "_Username:"
++msgstr "_Nome de utilizador:"
++
++#. password
++#: ../gtk/tr-prefs.c:784
++msgid "Pass_word:"
++msgstr "Palavra-passe:"
++
++#. require authentication
++#: ../gtk/tr-prefs.c:792
++msgid "Only allow these IP a_ddresses:"
++msgstr "Permitir apenas estes en_dereços IP:"
++
++#: ../gtk/tr-prefs.c:816
++msgid "IP addresses may use wildcards, such as 192.168.*.*"
++msgstr "Os endereços IP podem ter caracteres-curinga, como por ex: 192.168.*.*"
++
++#: ../gtk/tr-prefs.c:835
++msgid "Addresses:"
++msgstr "Endereços:"
++
++#: ../gtk/tr-prefs.c:935
++msgid "Every Day"
++msgstr "Todos os dias"
++
++#: ../gtk/tr-prefs.c:936
++msgid "Weekdays"
++msgstr "Dias da semana"
++
++#: ../gtk/tr-prefs.c:937
++msgid "Weekends"
++msgstr "Fins de semana"
++
++#: ../gtk/tr-prefs.c:938
++msgid "Sunday"
++msgstr "Domingo"
++
++#: ../gtk/tr-prefs.c:939
++msgid "Monday"
++msgstr "Segunda-Feira"
++
++#: ../gtk/tr-prefs.c:940
++msgid "Tuesday"
++msgstr "Terça-Feira"
++
++#: ../gtk/tr-prefs.c:941
++msgid "Wednesday"
++msgstr "Quarta-Feira"
++
++#: ../gtk/tr-prefs.c:942
++msgid "Thursday"
++msgstr "Quinta-Feira"
++
++#: ../gtk/tr-prefs.c:943
++msgid "Friday"
++msgstr "Sexta-Feira"
++
++#: ../gtk/tr-prefs.c:944
++msgid "Saturday"
++msgstr "Sábado"
++
++#: ../gtk/tr-prefs.c:975
++msgid "Speed Limits"
++msgstr "Limites de Velocidade"
++
++#: ../gtk/tr-prefs.c:977
++#, c-format
++msgid "_Upload (%s):"
++msgstr "_Enviar (%s):"
++
++#: ../gtk/tr-prefs.c:984
++#, c-format
++msgid "_Download (%s):"
++msgstr "_Descarregar (%s):"
++
++#: ../gtk/tr-prefs.c:993
++msgid "Alternative Speed Limits"
++msgstr "Limites de velocidade alternativos"
++
++#: ../gtk/tr-prefs.c:1002
++msgid "Override normal speed limits manually or at scheduled times"
++msgstr "Ignorar limites de velocidade normal manualmente ou em horas programadas"
++
++#: ../gtk/tr-prefs.c:1009
++#, c-format
++msgid "U_pload (%s):"
++msgstr "_Enviar (%s):"
++
++#: ../gtk/tr-prefs.c:1013
++#, c-format
++msgid "Do_wnload (%s):"
++msgstr "_Descarregar (%s):"
++
++#: ../gtk/tr-prefs.c:1017
++msgid "_Scheduled times:"
++msgstr "_Horas programadas:"
++
++#: ../gtk/tr-prefs.c:1022
++msgid " _to "
++msgstr "_a"
++
++#: ../gtk/tr-prefs.c:1033
++msgid "_On days:"
++msgstr "_nos dias:"
++
++#: ../gtk/tr-prefs.c:1064 ../gtk/tr-prefs.c:1137 ../gtk/tr-prefs.c:1219
++msgid "Status unknown"
++msgstr "Estado desconhecido"
++
++#: ../gtk/tr-prefs.c:1090
++msgid "Port is <b>closed</b>"
++msgstr "A porta está <b>fechada</b>"
++
++#: ../gtk/tr-prefs.c:1090
++msgid "Port is <b>open</b>"
++msgstr "A porta está <b>aberta</b>"
++
++#: ../gtk/tr-prefs.c:1104
++msgid "<i>Testing TCP port…</i>"
++msgstr "<i>A testar a porta TCP…</i>"
++
++#: ../gtk/tr-prefs.c:1130
++msgid "Listening Port"
++msgstr "Porta de escuta"
++
++#: ../gtk/tr-prefs.c:1132
++msgid "_Port used for incoming connections:"
++msgstr "_Porta utilizada para entrada de ligações:"
++
++#: ../gtk/tr-prefs.c:1140
++msgid "Te_st Port"
++msgstr "Te_star Porta"
++
++#: ../gtk/tr-prefs.c:1147
++msgid "Pick a _random port every time Transmission is started"
++msgstr "Escolher uma porta _aleatória sempre que o Transmission for iniciado"
++
++#: ../gtk/tr-prefs.c:1151
++msgid "Use UPnP or NAT-PMP port _forwarding from my router"
++msgstr "Usar redirecionamento de portas UPnP ou NAT-PMP no meu router"
++
++#: ../gtk/tr-prefs.c:1156
++msgid "Peer Limits"
++msgstr "Limites de pares"
++
++#: ../gtk/tr-prefs.c:1159
++msgid "Maximum peers per _torrent:"
++msgstr "Máximo de pares por _torrent:"
++
++#: ../gtk/tr-prefs.c:1161
++msgid "Maximum peers _overall:"
++msgstr "Máximo _total de pares:"
++
++#: ../gtk/tr-prefs.c:1167
++msgid "Enable _uTP for peer communication"
++msgstr "Ativar _uTP para comunicação de pares"
++
++#: ../gtk/tr-prefs.c:1169
++msgid "uTP is a tool for reducing network congestion."
++msgstr "O uTP é uma ferramenta para reduzir o congestionamento na rede."
++
++#: ../gtk/tr-prefs.c:1174
++msgid "Use PE_X to find more peers"
++msgstr "Usar PE_X para encontrar mais pares"
++
++#: ../gtk/tr-prefs.c:1176
++msgid "PEX is a tool for exchanging peer lists with the peers you're connected to."
++msgstr "O PEX é uma ferramenta para trocar listas de pares com os pares aos quais está conectado."
++
++#: ../gtk/tr-prefs.c:1180
++msgid "Use _DHT to find more peers"
++msgstr "Usar o _DHT para encontrar mais pares"
++
++#: ../gtk/tr-prefs.c:1182
++msgid "DHT is a tool for finding peers without a tracker."
++msgstr "O DHT é uma ferramenta para encontrar pares sem um rastreador (tracker)."
++
++#: ../gtk/tr-prefs.c:1186
++msgid "Use _Local Peer Discovery to find more peers"
++msgstr "Usar _LPD para descobrir mais pares"
++
++#: ../gtk/tr-prefs.c:1188
++msgid "LPD is a tool for finding peers on your local network."
++msgstr "O LPD (descoberta local de pares) é uma ferramenta para encontrar pares na sua rede local."
++
++#: ../gtk/tr-prefs.c:1244
++msgid "Transmission Preferences"
++msgstr "Preferências do Transmission"
++
++#: ../gtk/tr-prefs.c:1254
++msgctxt "Gerund"
++msgid "Downloading"
++msgstr "Descarregar"
++
++#: ../gtk/tr-prefs.c:1255
++msgctxt "Gerund"
++msgid "Seeding"
++msgstr "Semear"
++
++#: ../gtk/tr-prefs.c:1257
++msgid "Network"
++msgstr "Rede"
++
++#: ../gtk/tr-prefs.c:1259
++msgid "Remote"
++msgstr "Remoto"
++
++#: ../gtk/tr-window.c:127
++msgid "Torrent"
++msgstr "Torrent"
++
++#: ../gtk/tr-window.c:227
++msgid "Total Ratio"
++msgstr "Rácio Total"
++
++#: ../gtk/tr-window.c:228
++msgid "Session Ratio"
++msgstr "Rácio da Sessão"
++
++#: ../gtk/tr-window.c:229
++msgid "Total Transfer"
++msgstr "Transferência Total"
++
++#: ../gtk/tr-window.c:230
++msgid "Session Transfer"
++msgstr "Transferência na Sessão"
++
++#: ../gtk/tr-window.c:255
++#, c-format
++msgid ""
++"Click to disable Alternative Speed Limits\n"
++" (%1$s down, %2$s up)"
++msgstr ""
++"Clique para desativar os limites de velocidade alternativos\n"
++" (%1$s rec, %2$s env)"
++
++#: ../gtk/tr-window.c:256
++#, c-format
++msgid ""
++"Click to enable Alternative Speed Limits\n"
++" (%1$s down, %2$s up)"
++msgstr ""
++"Clique para ativar os limites de velocidade alternativos\n"
++" (%1$s rec, %2$s env)"
++
++#: ../gtk/tr-window.c:310
++#, c-format
++msgid "Tracker will allow requests in %s"
++msgstr "O rastreador irá permitir pedidos dentro de %s"
++
++#: ../gtk/tr-window.c:380
++msgid "Unlimited"
++msgstr "Ilimitado"
++
++#: ../gtk/tr-window.c:451
++msgid "Seed Forever"
++msgstr "Semear para sempre"
++
++#: ../gtk/tr-window.c:489
++msgid "Limit Download Speed"
++msgstr "Limitar velocidade de descarregamento"
++
++#: ../gtk/tr-window.c:493
++msgid "Limit Upload Speed"
++msgstr "Limitar velocidade de envio"
++
++#: ../gtk/tr-window.c:500
++msgid "Stop Seeding at Ratio"
++msgstr "Parar de semear no rácio"
++
++#: ../gtk/tr-window.c:533
++#, c-format
++msgid "Stop at Ratio (%s)"
++msgstr "Parar no rácio (%s)"
++
++#: ../gtk/tr-window.c:761 ../gtk/tr-window.c:787
++#, c-format
++msgid "Ratio: %s"
++msgstr "Rácio: %s"
++
++#. Translators: "size|" is here for disambiguation. Please remove it from your translation.
++#. %1$s is the size of the data we've downloaded
++#. %2$s is the size of the data we've uploaded
++#: ../gtk/tr-window.c:771
++#, c-format
++msgid "Down: %1$s, Up: %2$s"
++msgstr "Receb: %1$s, Env: %2$s"
++
++#. Translators: "size|" is here for disambiguation. Please remove it from your translation.
++#. %1$s is the size of the data we've downloaded
++#. %2$s is the size of the data we've uploaded
++#: ../gtk/tr-window.c:781
++#, c-format
++msgid "size|Down: %1$s, Up: %2$s"
++msgstr "Receb: %1$s, Env: %2$s"
++
++#: ../gtk/transmission-gtk.appdata.xml.in:12 ../gtk/transmission-gtk.desktop.in:5
++msgid "Download and share files over BitTorrent"
++msgstr "Descarregar e partilhar ficheiros pelo BitTorrent"
++
++#. Translators: these are the application description paragraphs in the AppData file.
++#: ../gtk/transmission-gtk.appdata.xml.in:16
++msgid "BitTorrent is a peer-to-peer file-sharing protocol that is commonly used to distribute large amounts of data between multiple users."
++msgstr "O BitTorrent é um protocolo de partilha de ficheiros ponto-a-ponto que é comum utilizar para distribuir grandes quantidades de dados entre vários utilizadores."
++
++#: ../gtk/transmission-gtk.appdata.xml.in:20
++msgid "Transmission is a BitTorrent client with an easy-to-use frontend on top a cross-platform backend. Native frontends are available for OS X and Windows, as well as command line and web frontends."
++msgstr "O Transmission é um cliente BitTorrent com uma interface fácil de utilizar sobre um código multi-plataforma. Existem várias interfaces nativas para OS X e Windows, assim como em linha de comandos e baseado na web."
++
++#: ../gtk/transmission-gtk.appdata.xml.in:26
++msgid "Notable features of Transmission include support for Local Peer Discovery, encryption, DHT, µTP, PEX and Magnet Link."
++msgstr "O Transmission tem funcionalidaes notáveis como , descoberta de pares locais (LPD), encriptação, tabelas de hash distribuídas (DHT), protocolo de transporte micro (µTP), troca de pares (PEX) e links magnéticos."
++
++#: ../gtk/transmission-gtk.desktop.in:4
++msgid "BitTorrent Client"
++msgstr "Cliente BitTorrent"
++
++#. Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
++#: ../gtk/transmission-gtk.desktop.in:7
++msgid "torrents;downloading;uploading;share;sharing;"
++msgstr "torrents;descarregar;baixar;transferir;transferência;enviar;partilhar;partilha;"
++
++#: ../gtk/transmission-gtk.desktop.in:21
++msgid "Start Transmission with All Torrents Paused"
++msgstr "Iniciar o Transmission com todos os torrents em pausa"
++
++#: ../gtk/transmission-gtk.desktop.in:25
++msgid "Start Transmission Minimized"
++msgstr "Iniciar o Transmission minimizado"
++
++#: ../gtk/util.c:36
++msgid "KiB"
++msgstr "KiB"
++
++#: ../gtk/util.c:37
++msgid "MiB"
++msgstr "MiB"
++
++#: ../gtk/util.c:38
++msgid "GiB"
++msgstr "GiB"
++
++#: ../gtk/util.c:39
++msgid "TiB"
++msgstr "TiB"
++
++#: ../gtk/util.c:42
++msgid "kB"
++msgstr "kB"
++
++#: ../gtk/util.c:43
++msgid "MB"
++msgstr "MB"
++
++#: ../gtk/util.c:44
++msgid "GB"
++msgstr "GB"
++
++#: ../gtk/util.c:45
++msgid "TB"
++msgstr "TB"
++
++#: ../gtk/util.c:48
++msgid "kB/s"
++msgstr "kB/s"
++
++#: ../gtk/util.c:49
++msgid "MB/s"
++msgstr "MB/s"
++
++#: ../gtk/util.c:50
++msgid "GB/s"
++msgstr "GB/s"
++
++#: ../gtk/util.c:51
++msgid "TB/s"
++msgstr "TB/s"
++
++#: ../gtk/util.c:122
++#, c-format
++msgid "%'d day"
++msgid_plural "%'d days"
++msgstr[0] "%'d dia"
++msgstr[1] "%'d dias"
++
++#: ../gtk/util.c:123
++#, c-format
++msgid "%'d hour"
++msgid_plural "%'d hours"
++msgstr[0] "%'d hora"
++msgstr[1] "%'d horas"
++
++#: ../gtk/util.c:124
++#, c-format
++msgid "%'d minute"
++msgid_plural "%'d minutes"
++msgstr[0] "%'d minuto"
++msgstr[1] "%'d minutos"
++
++#: ../gtk/util.c:125
++#, c-format
++msgid "%'d second"
++msgid_plural "%'d seconds"
++msgstr[0] "%'d segundo"
++msgstr[1] "%'d segundos"
++
++#: ../gtk/util.c:258
++#, c-format
++msgid "The torrent file \"%s\" contains invalid data."
++msgstr "O ficheiro torrent \"%s\" contém dados inválidos."
++
++#: ../gtk/util.c:262
++#, c-format
++msgid "The torrent file \"%s\" is already in use by \"%s.\""
++msgstr "O ficheiro torrent \"%s\" está a ser utilizador pelo \"%s.\""
++
++#: ../gtk/util.c:267
++#, c-format
++msgid "The torrent file \"%s\" encountered an unknown error."
++msgstr "O ficheiro torrent \"%s\" encontrou um erro desconhecido."
++
++#: ../gtk/util.c:271
++msgid "Error opening torrent"
++msgstr "Erro ao abrir o torrent"
++
++#: ../gtk/util.c:594
++msgid "Unrecognized URL"
++msgstr "URL irreconhecido"
++
++#: ../gtk/util.c:596
++#, c-format
++msgid "Transmission doesn't know how to use \"%s\""
++msgstr "O Transmission não sabe como utilizar \"%s\""
++
++#: ../gtk/util.c:601
++#, c-format
++msgid "This magnet link appears to be intended for something other than BitTorrent. BitTorrent magnet links have a section containing \"%s\"."
++msgstr "Este link magnético parece ser para outra coisa que não o BitTorrent. Os links magnéticos BitTorrent têm uma secção com \"%s\"."
++
++#: ../gtk/util.c:723
++#, c-format
++msgid "%s free"
++msgstr "%s livre"
++
++#: ../libtransmission/announcer-http.c:221 ../libtransmission/announcer-http.c:389
++#, c-format
++msgid "Tracker gave HTTP response code %1$ld (%2$s)"
++msgstr "O rastreador forneceu o código HTTP de resposta %1$ld (%2$s)"
++
++#: ../libtransmission/announcer-udp.c:273 ../libtransmission/announcer-udp.c:423
++msgid "Unknown error"
++msgstr "Erro desconhecido"
++
++#: ../libtransmission/announcer-udp.c:513
++#, c-format
++msgid "DNS Lookup failed: %s"
++msgstr "Falhou a consulta de DNS: %s"
++
++#: ../libtransmission/announcer-udp.c:616
++msgid "Connection failed"
++msgstr "A ligação falhou"
++
++#: ../libtransmission/announcer.c:1150 ../libtransmission/announcer.c:1469
++msgid "Could not connect to tracker"
++msgstr "Não foi possível conectar ao rastreador"
++
++#: ../libtransmission/announcer.c:1154 ../libtransmission/announcer.c:1473
++msgid "Tracker did not respond"
++msgstr "O rastreador não respondeu"
++
++#: ../libtransmission/announcer.c:1218
++msgid "Success"
++msgstr "Sucesso"
++
++#: ../libtransmission/blocklist.c:63 ../libtransmission/blocklist.c:360 ../libtransmission/utils.c:258
++#, c-format
++msgid "Couldn't read \"%1$s\": %2$s"
++msgstr "Não foi possível ler \"%1$s\": %2$s"
++
++#: ../libtransmission/blocklist.c:103
++#, c-format
++msgid "Blocklist \"%s\" contains %zu entries"
++msgstr "A lista de bloqueios \"%s\" contém %zu entradas"
++
++#. don't try to display the actual lines - it causes issues
++#: ../libtransmission/blocklist.c:403
++#, c-format
++msgid "blocklist skipped invalid address at line %d"
++msgstr "a lista de bloqueios ignorou endereços inválidos na linha %d"
++
++#: ../libtransmission/blocklist.c:460 ../libtransmission/rpcimpl.c:1650 ../libtransmission/rpcimpl.c:1664 ../libtransmission/rpcimpl.c:1687 ../libtransmission/variant.c:1226
++#, c-format
++msgid "Couldn't save file \"%1$s\": %2$s"
++msgstr "Não foi possível gravar o ficheiro \"%1$s\": %2$s"
++
++#: ../libtransmission/blocklist.c:466
++#, c-format
++msgid "Blocklist \"%s\" updated with %zu entries"
++msgstr "A lista de bloqueios \"%s\" foi atualizada com %zu entradas"
++
++#: ../libtransmission/fdlimit.c:168
++#, c-format
++msgid "Couldn't get directory for \"%1$s\": %2$s"
++msgstr "Não foi possível obter o diretório de \"%1$s\": %2$s"
++
++#: ../libtransmission/fdlimit.c:174 ../libtransmission/file-posix.c:243
++#, c-format
++msgid "Couldn't create \"%1$s\": %2$s"
++msgstr "Não foi possível criar \"%1$s\": %2$s"
++
++#: ../libtransmission/fdlimit.c:195
++#, c-format
++msgid "Couldn't open \"%1$s\": %2$s"
++msgstr "Não foi possível abrir \"%1$s\": %2$s"
++
++#: ../libtransmission/fdlimit.c:207
++msgid "full"
++msgstr "cheio"
++
++#: ../libtransmission/fdlimit.c:212
++msgid "sparse"
++msgstr "escasso"
++
++#: ../libtransmission/fdlimit.c:219
++#, c-format
++msgid "Couldn't preallocate file \"%1$s\" (%2$s, size: %3$<PRIu64>): %4$s"
++msgstr "Não foi possível pré-alocar o ficheiro \"%1$s\" (%2$s, tamanho: %3$<PRIu64>): %4$s"
++
++#: ../libtransmission/fdlimit.c:224
++#, c-format
++msgid "Preallocated file \"%1$s\" (%2$s, size: %3$<PRIu64>)"
++msgstr "Ficheiro pré-alocado \"%1$s\" (%2$s, tamanho: %3$<PRIu64>)"
++
++#: ../libtransmission/fdlimit.c:235
++#, c-format
++msgid "Couldn't truncate \"%1$s\": %2$s"
++msgstr "Não foi possível truncar \"%1$s\": %2$s"
++
++#: ../libtransmission/fdlimit.c:553
++#, c-format
++msgid "Couldn't create socket: %s"
++msgstr "Não foi possível criar o socket: %s"
++
++#: ../libtransmission/file-posix.c:153
++#, c-format
++msgid "File \"%s\" is in the way"
++msgstr "O ficheiro \"%s\" está no caminho"
++
++#: ../libtransmission/makemeta.c:54
++#, c-format
++msgid "Torrent Creator is skipping file \"%s\": %s"
++msgstr "O criador de torrents está a ignorar o ficheiro \"%s\": %s"
++
++#: ../libtransmission/makemeta.c:209
++#, c-format
++msgid "Failed to set piece size to %s, leaving it at %s"
++msgstr "Não foi possível definir o tamanho das peças em %s, a utilizar %s"
++
++#: ../libtransmission/metainfo.c:759
++#, c-format
++msgid "Invalid metadata entry \"%s\""
++msgstr "Entrada de metadados inválidos \"%s\""
++
++#: ../libtransmission/natpmp.c:30
++msgid "Port Forwarding (NAT-PMP)"
++msgstr "Redirecionamento de portas (NAT-PMP)"
++
++#: ../libtransmission/natpmp.c:73
++#, c-format
++msgid "%s succeeded (%d)"
++msgstr "%s bem sucedido (%d)"
++
++#: ../libtransmission/natpmp.c:138
++#, c-format
++msgid "Found public address \"%s\""
++msgstr "Endereço público encontrado \"%s\""
++
++#: ../libtransmission/natpmp.c:173
++#, c-format
++msgid "no longer forwarding port %d"
++msgstr "já não está a redirecionar a porta %d"
++
++#: ../libtransmission/natpmp.c:222
++#, c-format
++msgid "Port %d forwarded successfully"
++msgstr "Porta %d redirecionada com sucesso"
++
++#: ../libtransmission/net.c:323
++#, c-format
++msgid "Couldn't set source address %s on %<PRIdMAX>: %s"
++msgstr "Não foi possível definir o endereço da fonte %s em %<PRIdMAX>: %s"
++
++#: ../libtransmission/net.c:339
++#, c-format
++msgid "Couldn't connect socket %<PRIdMAX> to %s, port %d (errno %d - %s)"
++msgstr "Não foi possível conectar o socket %<PRIdMAX> a %s, porta %d (errno %d - %s)"
++
++#: ../libtransmission/net.c:436
++msgid "Is another copy of Transmission already running?"
++msgstr "Está a ser executada outra instância do Transmission?"
++
++#: ../libtransmission/net.c:445
++#, c-format
++msgid "Couldn't bind port %d on %s: %s"
++msgstr "Não foi possível vincular a porta %d em %s: %s"
++
++#: ../libtransmission/net.c:449
++#, c-format
++msgid "Couldn't bind port %d on %s: %s (%s)"
++msgstr "Não foi possível vincular a porta %d em %s: %s (%s)"
++
++#: ../libtransmission/peer-msgs.c:2134
++#, c-format
++msgid "Please Verify Local Data! Piece #%zu is corrupt."
++msgstr "Por favor verifique os dados locais! A peça #%zu está corrompida."
++
++#: ../libtransmission/platform.c:472
++#, c-format
++msgid "Searching for web interface file \"%s\""
++msgstr "A procurar pelo ficheiro de interface web \"%s\""
++
++#: ../libtransmission/port-forwarding.c:29
++msgid "Port Forwarding"
++msgstr "Redirecionamento de portas"
++
++#: ../libtransmission/port-forwarding.c:57
++msgid "Starting"
++msgstr "A iniciar"
++
++#: ../libtransmission/port-forwarding.c:60
++msgid "Forwarded"
++msgstr "Redirecionado"
++
++#: ../libtransmission/port-forwarding.c:63
++msgid "Stopping"
++msgstr "A parar"
++
++#: ../libtransmission/port-forwarding.c:66
++msgid "Not forwarded"
++msgstr "Não redirecionado"
++
++#: ../libtransmission/port-forwarding.c:106 ../libtransmission/torrent.c:2302
++#, c-format
++msgid "State changed from \"%1$s\" to \"%2$s\""
++msgstr "Estado alterado de \"%1$s\" para \"%2$s\""
++
++#: ../libtransmission/port-forwarding.c:196
++msgid "Stopped"
++msgstr "Parado"
++
++#: ../libtransmission/rpc-server.c:1096
++#, c-format
++msgid "Couldn't find settings key \"%s\""
++msgstr "Não foi possível encontrar a chave de configurações \"%s\""
++
++#: ../libtransmission/rpc-server.c:1230
++#, c-format
++msgid "%s is not a valid address"
++msgstr "%s não é um endereço válido"
++
++#: ../libtransmission/rpc-server.c:1235
++#, c-format
++msgid "%s is not an IPv4 or IPv6 address. RPC listeners must be IPv4 or IPv6"
++msgstr "%s não é um endereço IPv4 nem IPv6. Os RPC listeners têm de ser IPv4 ou IPv6"
++
++#: ../libtransmission/rpc-server.c:1243
++#, c-format
++msgid "Serving RPC and Web requests on %s:%d%s"
++msgstr "A servir pedidos RPC e Web em %s:%d%s"
++
++#: ../libtransmission/rpc-server.c:1249
++msgid "Whitelist enabled"
++msgstr "Lista branca ativada"
++
++#: ../libtransmission/rpc-server.c:1254
++msgid "Password required"
++msgstr "Necessária palavra-passe"
++
++#: ../libtransmission/rpcimpl.c:1674
++#, c-format
++msgid "Error uncompressing blocklist: %s (%d)"
++msgstr "Erro ao descomprimir a lista de bloqueios: %s (%d)"
++
++#. first %s is the application name
++#. second %s is the version number
++#: ../libtransmission/session.c:769
++#, c-format
++msgid "%s %s started"
++msgstr "1%s 1%s iniciado"
++
++#: ../libtransmission/session.c:2170
++#, c-format
++msgid "Loaded %d torrents"
++msgstr "%d torrents carregados"
++
++#: ../libtransmission/torrent-magnet.c:310
++msgid "Magnet torrent's metadata is not usable"
++msgstr "Os metadados do torrent magnético não são utilizáveis"
++
++#: ../libtransmission/torrent.c:616
++#, c-format
++msgid "Tracker warning: \"%s\""
++msgstr "Aviso do rastreador: \"%s\""
++
++#: ../libtransmission/torrent.c:623
++#, c-format
++msgid "Tracker error: \"%s\""
++msgstr "Erro do rastreador: \"%s\""
++
++#: ../libtransmission/torrent.c:916
++msgid "No data found! Ensure your drives are connected or use \"Set Location\". To re-download, remove the torrent and re-add it."
++msgstr "Não foram encontrados dados. Certifique-se que as suas drives estão ligadas ou utiliza \"Definir Localização\". Para tornar a descarregar, remova o torrent e torne a adicioná-lo."
++
++#: ../libtransmission/torrent.c:1868
++msgid "Restarted manually -- disabling its seed ratio"
++msgstr "Reiniciado manualmente - a desativar o rácio de semear"
++
++#: ../libtransmission/torrent.c:2078
++msgid "Removing torrent"
++msgstr "A remover o torrent"
++
++#. Translators: this is a minor point that's safe to skip over, but FYI:
++#. "Complete" and "Done" are specific, different terms in Transmission:
++#. "Complete" means we've downloaded every file in the torrent.
++#. "Done" means we're done downloading the files we wanted, but NOT all
++#. that exist
++#: ../libtransmission/torrent.c:2164
++msgid "Done"
++msgstr "Feito"
++
++#: ../libtransmission/torrent.c:2167
++msgid "Complete"
++msgstr "Completo"
++
++#: ../libtransmission/torrent.c:3466
++#, c-format
++msgid "Piece %<PRIu32>, which was just downloaded, failed its checksum test"
++msgstr "A peça %<PRIu32>, que acabou de ser descarregada, falhou no teste de soma de verificação (checksum)"
++
++#: ../libtransmission/upnp.c:29
++msgid "Port Forwarding (UPnP)"
++msgstr "Redirecionamento de portas (UPnP)"
++
++#: ../libtransmission/upnp.c:200
++#, c-format
++msgid "Found Internet Gateway Device \"%s\""
++msgstr "Foi encontrado o Internet Gateway Device \"%s\""
++
++#: ../libtransmission/upnp.c:201
++#, c-format
++msgid "Local Address is \"%s\""
++msgstr "O endereço local é \"%s\""
++
++#: ../libtransmission/upnp.c:228
++#, c-format
++msgid "Port %d isn't forwarded"
++msgstr "A porta %d não está a ser redirecionada"
++
++#: ../libtransmission/upnp.c:238
++#, c-format
++msgid "Stopping port forwarding through \"%s\", service \"%s\""
++msgstr "A parar o redirecionamento de portas por \"%s\", serviço \"%s\""
++
++#: ../libtransmission/upnp.c:275
++#, c-format
++msgid "Port forwarding through \"%s\", service \"%s\". (local address: %s:%d)"
++msgstr "A redirecionar portas por \"%s\", serviço \"%s\". (endereço local: %s:%d)"
++
++#: ../libtransmission/upnp.c:280
++msgid "Port forwarding successful!"
++msgstr "Redirecionamento de portas bem sucedido!"
++
++#: ../libtransmission/utils.c:270 ../libtransmission/utils.c:271
++msgid "Not a regular file"
++msgstr "Não é um ficheiro normal"
++
++#. did caller give us an uninitialized val?
++#: ../libtransmission/variant.c:926
++msgid "Invalid metadata"
++msgstr "metadados inválidos"
++
++#: ../libtransmission/variant.c:1211 ../libtransmission/variant.c:1235
++#, c-format
++msgid "Couldn't save temporary file \"%1$s\": %2$s"
++msgstr "Não foi possível gravar o ficheiro temporário \"%1$s\": %2$s"
++
++#: ../libtransmission/variant.c:1221
++#, c-format
++msgid "Saved \"%s\""
++msgstr "\"%s\" gravado"
++
++#: ../libtransmission/variant.c:1264
++msgid "Unable to parse file content"
++msgstr "Não foi possível processar o conteúdo do ficheiro"
++
++#: ../libtransmission/verify.c:220
++msgid "Verifying torrent"
++msgstr "A verificar o torrent"
++
++#, c-format
++#~ msgid "Server returned \"%1$ld %2$s\""
++#~ msgstr "O servidor devolveu \"%1$ld %2$s\""
++
++#, c-format
++#~ msgid "Error opening \"%s\""
++#~ msgstr "Erro ao abrir \"%s\""
diff --git a/user/transmission/transmission-daemon.confd b/user/transmission/transmission-daemon.confd
new file mode 100644
index 000000000..fcf37c791
--- /dev/null
+++ b/user/transmission/transmission-daemon.confd
@@ -0,0 +1,14 @@
+# This is the transmission-daemon configuration file. For other options and
+# better explanation, take a look at transmission-daemon manual page Note: it's
+# better to configure some settings (like username/password) in
+# /var/transmission/config/settings.json to avoid other users see it with `ps`
+
+TRANSMISSION_OPTIONS="--encryption-preferred"
+
+# Run daemon as another user (username or username:groupname)
+# If you change this setting, chown -R /var/transmission/config <and download directory, check web settings>
+#runas_user=transmission
+
+# Location of logfile (should be writeable for runas_user user)
+# Set logfile=syslog to use syslog for logging
+#logfile=/var/log/transmission/transmission.log
diff --git a/user/transmission/transmission-daemon.initd b/user/transmission/transmission-daemon.initd
new file mode 100644
index 000000000..0c9e36644
--- /dev/null
+++ b/user/transmission/transmission-daemon.initd
@@ -0,0 +1,73 @@
+#!/sbin/openrc-run
+# Copyright 1999-2011 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/net-p2p/transmission/files/transmission-daemon.initd.8,v 1.2 2011/12/04 10:35:07 swegener Exp $
+
+extra_started_commands="reload"
+description="Transmission is a fast, easy and free bittorrent client"
+description_start="Start transmission-daemon server and web interface"
+description_stop="Stop transmission-daemon server and web interface"
+description_reload="Reload transmission-daemon settings"
+
+rundir=${rundir:-/var/run/transmission}
+pidfile=${pidfile:-${rundir}/transmission.pid}
+config_dir=${config_dir:-/var/lib/transmission/config}
+download_dir=${download_dir:-/var/lib/transmission/downloads}
+logfile=${logfile:-/var/log/transmission/transmission.log}
+runas_user=${runas_user:-transmission:transmission}
+
+SSD_OPTIONS=""
+
+# compatibility for upgraders
+TRANSMISSION_OPTIONS=${TRANSMISSION_OPTIONS:-$TD_OPTS}
+
+depend() {
+ need net
+ after firewall
+}
+
+check_config() {
+ if [ ! -d "${rundir}" ]; then
+ mkdir "${rundir}"
+ if [ -n "${runas_user}" ]; then
+ chown -R ${runas_user} "${rundir}"
+ fi
+ fi
+
+ # In case no config directory option passed use default
+ if ! $(echo ${TRANSMISSION_OPTIONS} | grep -q -e '\B-g' -e '\B--config-dir'); then
+ TRANSMISSION_OPTIONS="${TRANSMISSION_OPTIONS} --config-dir ${config_dir}"
+ # put download dir location on first run (and take it from config later)
+ if [ ! -f ${config_dir}/settings.json ]; then
+ TRANSMISSION_OPTIONS="${TRANSMISSION_OPTIONS} --download-dir ${download_dir}"
+ fi
+ fi
+
+ if [ -n "${runas_user}" ]; then
+ SSD_OPTIONS="${SSD_OPTIONS} --user ${runas_user}"
+ fi
+}
+
+start() {
+ check_config
+
+ ebegin "Starting transmission daemon"
+ start-stop-daemon --start --quiet --pidfile ${pidfile} ${SSD_OPTIONS} \
+ --exec /usr/bin/transmission-daemon -- --pid-file ${pidfile} \
+ $(test ${logfile} != "syslog" && echo --logfile ${logfile}) \
+ ${TRANSMISSION_OPTIONS}
+ eend $?
+}
+
+stop() {
+ ebegin "Stopping transmission daemon"
+ start-stop-daemon --stop --quiet --retry TERM/45/QUIT/15 --pidfile ${pidfile}
+ eend $?
+}
+
+reload() {
+ ebegin "Reloading transmission configuration"
+ start-stop-daemon --signal HUP --pidfile ${pidfile}
+ eend $?
+}
+
diff --git a/user/transmission/transmission-daemon.post-upgrade b/user/transmission/transmission-daemon.post-upgrade
new file mode 100644
index 000000000..e0aaa8e02
--- /dev/null
+++ b/user/transmission/transmission-daemon.post-upgrade
@@ -0,0 +1,10 @@
+#!/bin/sh
+
+dir=/var/lib/transmission
+
+# rename config and create compat symlink
+if [ -e "$dir"/.config ] && ! [ -e "$dir"/config ]; then
+ mv "$dir"/.config "$dir"/config
+ ln -s config "$dir"/.config
+fi
+
diff --git a/user/transmission/transmission-daemon.pre-install b/user/transmission/transmission-daemon.pre-install
new file mode 100644
index 000000000..2e26d48d7
--- /dev/null
+++ b/user/transmission/transmission-daemon.pre-install
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+addgroup -S transmission 2>/dev/null
+adduser -S -D -h /var/lib/transmission -s /sbin/nologin -G transmission -g transmission transmission 2>/dev/null
+
+exit 0
diff --git a/user/transmission/transmission.post-install b/user/transmission/transmission.post-install
new file mode 100644
index 000000000..6002c7430
--- /dev/null
+++ b/user/transmission/transmission.post-install
@@ -0,0 +1,12 @@
+#!/bin/sh
+
+pkgname=transmission
+
+if ! apk list $pkgname-qt $pkgname-gtk $pkgname-daemon | grep "[installed]"; then
+ echo "############################################################################"
+ echo "# WARNING: It doesn't look like you installed a GUI or Daemon! #"
+ echo "# transmission is just a shared package with assets. To install a GUI, you #"
+ echo "# can install either transmission-qt or transmission-gtk. To install the #"
+ echo "# daemon please install transmission-daemon. #"
+ echo "############################################################################"
+fi
diff --git a/user/transset/APKBUILD b/user/transset/APKBUILD
index 8b063867c..2b387fd02 100644
--- a/user/transset/APKBUILD
+++ b/user/transset/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=transset
-pkgver=1.0.2
+pkgver=1.0.3
pkgrel=0
pkgdesc="Transparency / opacity manipulation for X11 windows"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="libx11-dev xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/transset-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/transset-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="f7a658cae70e211a0455420efbfacee0f3032821d94e7a80ec6db32ced716c1ce013f38713915505998071c312cedd1bad08575dbadfbbeb94361b048623f874 transset-1.0.2.tar.bz2"
+sha512sums="5e46713653f1c50676381aebe6bcb0adaa4c5d51217f54a3e73fec69a3f201871f0d3b65759e30bd871f439eb3ccf037203d5efc9b26a60a4f6fa02d0ffdca41 transset-1.0.3.tar.xz"
diff --git a/user/tree/APKBUILD b/user/tree/APKBUILD
index 84c872d47..fcbcbf694 100644
--- a/user/tree/APKBUILD
+++ b/user/tree/APKBUILD
@@ -14,12 +14,10 @@ subpackages="$pkgname-doc"
source="http://mama.indstate.edu/users/ice/tree/src/$pkgname-$pkgver.tgz"
build() {
- cd "$builddir"
make
}
package() {
- cd "$builddir"
make prefix="$pkgdir/usr" MANDIR="${pkgdir}/usr/share/man/man1" install
}
diff --git a/user/trigger-rally/APKBUILD b/user/trigger-rally/APKBUILD
index 07e4de092..14e56deca 100644
--- a/user/trigger-rally/APKBUILD
+++ b/user/trigger-rally/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=trigger-rally
pkgver=0.6.6.1
-pkgrel=0
+pkgrel=1
pkgdesc="Fast-paced rally racing game"
url="http://trigger-rally.sourceforge.net/"
arch="all"
@@ -14,19 +14,16 @@ makedepends="freealut-dev glew-dev glu-dev openal-soft-dev physfs-dev sdl2-dev
subpackages="$pkgname-doc"
source="https://downloads.sourceforge.net/trigger-rally/trigger-rally-$pkgver.tar.gz
dont-strip.patch
+ sdl2-compat.patch
trigger-rally.desktop
"
build() {
- cd "$builddir"/src
- make OPTIMS="$CXXFLAGS -Wno-deprecated-declarations" DESTDIR="$pkgdir" prefix=/usr build
+ make OPTIMS="$CXXFLAGS -Wno-deprecated-declarations" DESTDIR="$pkgdir" prefix=/usr -C src build
}
package() {
- local _icon=""
-
- cd "$builddir"/src
- make OPTIMS="$CXXFLAGS" DESTDIR="$pkgdir" prefix=/usr install
+ make OPTIMS="$CXXFLAGS" DESTDIR="$pkgdir" prefix=/usr -C src install
install -D -m644 "$srcdir"/trigger-rally.desktop \
"$pkgdir"/usr/share/applications/trigger-rally.desktop
@@ -41,4 +38,5 @@ package() {
sha512sums="feed805858ef63907bb10088761f1219b22fe55ead268511ef73b18aa0f18d79e87d4e2cbfb76361b1dec3949b59464af33efe31e81f06ae7e163430f3336669 trigger-rally-0.6.6.1.tar.gz
a81781058177e012daaad58d72e4bdbdbc2730b1df76941ba03f06367545b213ba82a33bab46deba31570973deb1802a3d459704c3a963c38eec69ef82f228d5 dont-strip.patch
+e16fa74f1554cf8202f1ae5994c8f65eb311bf85ec9e89989911975db54d22c8e7dff559952e730972011b7dfabfd6aedb8c9f1d6292839734bfee54796b743a sdl2-compat.patch
ddaf7d89353280f7952d6cffd06182ea28640473e18eff06809c48477349248f57922eaff9bf816261c32f8fdc167d933f345422f9885638041dd9f5e5ac0524 trigger-rally.desktop"
diff --git a/user/trigger-rally/sdl2-compat.patch b/user/trigger-rally/sdl2-compat.patch
new file mode 100644
index 000000000..ae3f7c609
--- /dev/null
+++ b/user/trigger-rally/sdl2-compat.patch
@@ -0,0 +1,11 @@
+--- trigger-rally-0.6.6.1/src/GNUmakefile.old 2020-01-12 09:46:17.392027213 +0000
++++ trigger-rally-0.6.6.1/src/GNUmakefile 2020-01-12 09:56:43.744640443 +0000
+@@ -26,7 +26,7 @@
+ INCDIRS := -I'./include'
+ CXXFLAGS += -std=c++11 $(WARNINGS) $(OPTIMS)
+ CPPFLAGS += $(DMACROS) $(INCDIRS)
+-EXTRA_LIBS := -lSDL2main -lGL -lGLU -lGLEW -lSDL2 -lSDL2_image -lphysfs -lopenal -lalut -lpthread -ltinyxml2
++EXTRA_LIBS := -lSDL2main -lGL -lGLU -lGLEW -lSDL2-2.0 -lSDL2_image -lphysfs -lopenal -lalut -lpthread -ltinyxml2
+ LDFLAGS += $(EXTRA_LIBS)
+ INSTALL_PROGRAM := install --mode=0755
+ INSTALL_DATA := install --mode=0644
diff --git a/user/trojita/APKBUILD b/user/trojita/APKBUILD
index 429226f42..6c6adf815 100644
--- a/user/trojita/APKBUILD
+++ b/user/trojita/APKBUILD
@@ -1,25 +1,48 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=trojita
pkgver=0.7
-pkgrel=0
+pkgrel=3
pkgdesc="Qt-based IMAP email client"
url="http://trojita.flaska.net/"
arch="all"
-options="!check"
license="(GPL-2.0-only OR GPL-3.0-only) AND (LGPL-2.1 WITH Nokia-Qt-exception-1.1 OR GPL-3.0-only) AND BSD-3-Clause AND GPL-2.0-only AND GPL-2.0+ AND LGPL-2.0-only AND LGPL-2.0+ AND LGPL-2.1+"
depends=""
-depends_dev=""
+# Font required: https://github.com/qtwebkit/qtwebkit/issues/933
+checkdepends="ttf-liberation"
makedepends="cmake extra-cmake-modules zlib-dev qt5-qtbase-dev qt5-qtwebkit-dev
qt5-qttools-dev qt5-qtsvg-dev ragel mimetic-dev gpgme-dev
- qtkeychain-dev $depends_dev"
-install=""
+ qtkeychain-dev"
source="https://sourceforge.net/projects/trojita/files/src/trojita-$pkgver.tar.xz
use-qgpgme.patch
- fix-gpg.patch"
+ fix-gpg.patch
+ CVE-2019-10734.patch
+ CVE-2020-15047.patch
+ attachments.patch
+ fetch-task.patch
+ testfix.patch
+ plaintext-upgrade-attack.patch
+ pwstorage.patch
+ segfault-sorting-mailboxes.patch
+ signedness.patch
+ statusbar-fix.patch
+ deprecated1.patch
+ deprecated2.patch
+ deprecated3.patch
+ find-gpgme.patch
+ "
+
+# secfixes:
+# 0.7-r1:
+# - CVE-2019-10734
+# - CVE-2020-15047
+
+prepare() {
+ default_prepare
+ sed -e "s/--dirty//" -i "$builddir"/cmake/TrojitaVersion.cmake
+}
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,28 +51,36 @@ build() {
-DCMAKE_INSTALL_LIBDIR=lib \
-DBUILD_SHARED_LIBS=True \
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
- -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS -Wno-deprecated" \
-DCMAKE_C_FLAGS="$CFLAGS" \
-DWITH_GPGMEPP=ON \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
-}
-
-check() {
- cd "$builddir"
- make check
+ # test_Html_formatting: requires X11
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest -E test_Html_formatting
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
sha512sums="fe4d9316f97d913619f27d24a5023c3d8dd4a6b9fb058651be12c67188f394aa8cbb60c7593e5eb28fc12fc883b76deeeb5f4f631edd255fdec4c5862c9a91c8 trojita-0.7.tar.xz
740c2410d7236d722482f05dd1d2c681e35543620823cb7c1396710081f9de4f6ae530c5b5442ecf5d08a8e552f0697f3a35bf51e07a3b4336dec7021b665706 use-qgpgme.patch
-9d0fbf7c0b0f6975990a7705f9d43043e5807401cee179d7a07f9514856332d6bb1aa8448e84d0083003c34a3bb181080b973e8c1f77d1b5a8930d07d57702da fix-gpg.patch"
+9d0fbf7c0b0f6975990a7705f9d43043e5807401cee179d7a07f9514856332d6bb1aa8448e84d0083003c34a3bb181080b973e8c1f77d1b5a8930d07d57702da fix-gpg.patch
+db96a566924b5d7b80787ab624af3726d5dd3459653192436a377d6482ab73801a7dcca1df1b1d937cf0d0798b827e04f8ef2c1124f91dc9da3e8036ef61e28a CVE-2019-10734.patch
+2477612aca1e558fa3ba2b434a701cc255c573ac7e2001e7b5921c9b991f7c95720f53b70b49824e36bafb53ab53477950cb8d436e637fda4d59c7ec5883ce5f CVE-2020-15047.patch
+714b6d3b8a791783039f51d98b5d14b2b01ec3228993500623c980c09d04c38e6f26d236efa7fc722d68cd72692b646e5c4b2ca13d3d9b342e2072afb466ded0 attachments.patch
+af6d1951fe89a1347b0793175e2348c9cf883792bd576cead9cd70b83546d3dd29a59390c167e76d67413f822368d16892f11dac08da2ce0d9ed53e51b2c0d52 fetch-task.patch
+762c10e004e51d229f5a88410b049716abe3bd25f7ff904b031c1d6ed4a637449e47e2219c5ac85db36517d7599f48cd8a15a0cc2d87ba9e5cba79d483bf8d84 testfix.patch
+1ed2feb300304c58902e034767747610641c998b7a33fede01ff850b298074a04b0aa23332f8b37ecd9d798c35126d0d8f2e7560699c672a2195f110891cbe1a plaintext-upgrade-attack.patch
+86f5dce6bbc7926105bb2950aa15ca469a65cb29d1197d660a3de8ebbe19bb54a945803c542540c168f0b9dc3bfbde58e160bb4f47e0c418fcbb81744f3f60a2 pwstorage.patch
+93b8e795ef3f4423f1a1cce4ca87d146252af33259be2ed597af822a5c8b4abca2292055799c5b5ab70983b8dbba667e516dfe28e6c26705266f3f05b275ad4b segfault-sorting-mailboxes.patch
+83fd69307bb6c34c72a566e06674cc63f330d967d50812067c66633d9cfeb450410257042d489d4be591af383725e5d5f465421675065140fab6c6a40ab55484 signedness.patch
+b17f19a7c9a02fbf711b6e960bf9679caf591c35b59ec636293d341286135aaef7e6d137076502a2087375d30bf75cd5c8d67bcf726f75b0ab76aae0d8f24927 statusbar-fix.patch
+7a7d71e415c2b3e11c962eedf5fe3b5b22579fc86855a904a8d4c1ee2bf300d0872e0a9081644c33b197b2ad5eda9b0209fe7bccfcce466efd9924ea52282fe5 deprecated1.patch
+2f1c1de165f8fede77cbb0fe9a5cc1139def4d903692adefcc25a14fcec0c50f1070d458ddaa17bdb2c999f54c3dbf6e6403ccd5c897f4c861a1df7d121e978a deprecated2.patch
+bce7713fb5bef29b2b189d281dee57ddfc57f1c0601f424aba2185668215878b9bfd3bb80f0d2f8b73219e782db5e64973e79190fe62afa8ba98327535139146 deprecated3.patch
+51a5d0a0f48cbc88d8eaaf24a3820f6045402dff9e4e1958aae2211c5273798e935667af843e707731de546ba28f66e8cc4588123ffea5a4ad6c7b3ca62055f5 find-gpgme.patch"
diff --git a/user/trojita/CVE-2019-10734.patch b/user/trojita/CVE-2019-10734.patch
new file mode 100644
index 000000000..d52edb042
--- /dev/null
+++ b/user/trojita/CVE-2019-10734.patch
@@ -0,0 +1,104 @@
+From 8db7f450d52539b4c72ee968384911b6813ad1e7 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jan=20Kundr=C3=A1t?= <jkt@kde.org>
+Date: Thu, 25 Jun 2020 21:39:34 +0200
+Subject: [PATCH] Prevent a possible decryption oracle attack
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Thanks to Jens Mueller (Ruhr-Uni Bochum and FH Münster) for reporting
+this. The gist is that an attacker can embed arbitrary ciphertext into
+their messages. Trojita decrypts that, and when we hit reply, the
+original *cleartext* gets quoted and put into a reply for the attacker
+to see.
+
+Fix this by not quoting any plaintext which originated in an encrypted
+message. That's pretty draconian, but hey, it works and we never came up
+with any better patch. Also, given that Trojita does not encrypt
+outgoing messages yet, this is probably also a conservative thing to do.
+
+Change-Id: I84c45b9e707eb7c99eb7183c6ef59ef41cd62c43
+CVE: CVE-2019-10734
+BUG: 404697
+---
+ src/Cryptography/GpgMe++.cpp | 2 ++
+ src/Gui/MessageView.cpp | 9 ++++++++-
+ src/Gui/PartWidget.cpp | 8 ++++++++
+ src/Imap/Model/ItemRoles.h | 2 +-
+ 4 files changed, 19 insertions(+), 2 deletions(-)
+
+diff --git a/src/Cryptography/GpgMe++.cpp b/src/Cryptography/GpgMe++.cpp
+index e012f603..716b8aff 100644
+--- a/src/Cryptography/GpgMe++.cpp
++++ b/src/Cryptography/GpgMe++.cpp
+@@ -267,6 +267,8 @@ QVariant GpgMePart::data(int role) const
+ switch (role) {
+ case Imap::Mailbox::RolePartSignatureVerifySupported:
+ return m_wasSigned;
++ case RolePartDecryptionSupported:
++ return m_isAllegedlyEncrypted;
+ case RolePartCryptoNotFinishedYet:
+ return m_waitingForData ||
+ (m_crypto.valid() &&
+diff --git a/src/Gui/MessageView.cpp b/src/Gui/MessageView.cpp
+index 7d649308..c95e0878 100644
+--- a/src/Gui/MessageView.cpp
++++ b/src/Gui/MessageView.cpp
+@@ -354,7 +354,6 @@ bool MessageView::eventFilter(QObject *object, QEvent *event)
+ QString MessageView::quoteText() const
+ {
+ if (auto w = bodyWidget()) {
+- QStringList quote = Composer::quoteText(w->quoteMe().split(QLatin1Char('\n')));
+ const Imap::Message::Envelope &e = message.data(Imap::Mailbox::RoleMessageEnvelope).value<Imap::Message::Envelope>();
+ QString sender;
+ if (!e.from.isEmpty())
+@@ -362,6 +361,14 @@ QString MessageView::quoteText() const
+ if (e.from.isEmpty())
+ sender = tr("you");
+
++ if (messageModel->index(0, 0) /* fake message root */.child(0, 0) /* first MIME part */.data(Imap::Mailbox::RolePartDecryptionSupported).toBool()) {
++ // This is just an UX improvement shortcut: real filtering for CVE-2019-10734 is in
++ // MultipartSignedEncryptedWidget::quoteMe().
++ // That is required because the encrypted part might not be the root part of the message.
++ return tr("On %1, %2 sent an encrypted message:\n> ...\n\n").arg(e.date.toLocalTime().toString(Qt::SystemLocaleLongDate), sender);
++ }
++
++ QStringList quote = Composer::quoteText(w->quoteMe().split(QLatin1Char('\n')));
+ // One extra newline at the end of the quoted text to separate the response
+ quote << QString();
+
+diff --git a/src/Gui/PartWidget.cpp b/src/Gui/PartWidget.cpp
+index bb27604d..96eff338 100644
+--- a/src/Gui/PartWidget.cpp
++++ b/src/Gui/PartWidget.cpp
+@@ -378,6 +378,14 @@ void MultipartSignedEncryptedWidget::updateStatusIndicator()
+
+ QString MultipartSignedEncryptedWidget::quoteMe() const
+ {
++ if (m_partIndex.data(Imap::Mailbox::RolePartDecryptionSupported).toBool()) {
++ // See CVE-2019-10734, the point is not to leak cleartext from encrypted content. Even when Trojita starts supporting
++ // encryption of outgoing mail, we will have to check whether the encrypted cleartext is from the same sender, whether
++ // it matches the list of recipients (which is dynamic and can be set later on), etc etc.
++ // TL;DR, this is a can of worms.
++ return tr("[Encrypted message]");
++ }
++
+ return quoteMeHelper(children());
+ }
+
+diff --git a/src/Imap/Model/ItemRoles.h b/src/Imap/Model/ItemRoles.h
+index 4588d4d0..00adb3bb 100644
+--- a/src/Imap/Model/ItemRoles.h
++++ b/src/Imap/Model/ItemRoles.h
+@@ -193,7 +193,7 @@ enum {
+ RolePartSignatureVerifySupported,
+ /** @short Is the format of this particular multipart/encrypted supported and recognized?
+
+- See RolePartSignatureVerifySupported, this is an equivalent.
++ If true, this message part represents content of an encrypted message that Trojita can attempt to decrypt.
+ */
+ RolePartDecryptionSupported,
+ /** @short Is there any point in waiting longer?
+--
+GitLab
+
diff --git a/user/trojita/CVE-2020-15047.patch b/user/trojita/CVE-2020-15047.patch
new file mode 100644
index 000000000..6199c01fd
--- /dev/null
+++ b/user/trojita/CVE-2020-15047.patch
@@ -0,0 +1,88 @@
+From 77ddd5d44f2bf4155d0c9b6f7d05f01713b32d5d Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jan=20Kundr=C3=A1t?= <jkt@kde.org>
+Date: Thu, 25 Jun 2020 11:30:51 +0200
+Subject: [PATCH] SMTP: Do not ignore TLS errors
+
+This fixes a CVE-2020-15047 (category: CWE-295). Since commit 0083eea5ed
+which added initial, experimental support for SMTP message submission,
+we have apparently never implemented proper SSL/TLS error handling, and
+the code has ever since just kept silently ignoring any certificate
+verification errors. As a result, Trojita was susceptible to a MITM
+attack when sending e-mails. The information leaked include user's
+authentication details, including the password, and the content of sent
+messages.
+
+Sorry for this :(.
+
+Now, this patch re-enabes proper TLS error handling. It was not possible
+to directly re-use our code for TLS key pinning which we are using for
+IMAP connections. In the Qt TLS code, the decision to accept or not
+accept a TLS connection is a blocking one, so the IMAP code relies upon
+the protocol state machine (i.e., another layer) for deciding whether to
+use or not to use the just-established TLS connection. Implementing an
+equivalent code in the SMTP library would be nice, but this hot-fix has
+a priority. As a result, SMTP connections to hosts with, e.g.,
+self-signed TLS certs, are no longer possible. Let's hope that this is
+not a practical problem with Lets Encrypt anymore.
+
+Thanks to Damian Poddebniak for reporting this bug.
+
+Change-Id: Icd6bbb2b0fb3e45159fc9699ebd07ab84262fe37
+CVE: CVE-2020-15047
+BUG: 423453
+---
+ src/MSA/SMTP.cpp | 11 +++++++++--
+ src/MSA/SMTP.h | 1 +
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/src/MSA/SMTP.cpp b/src/MSA/SMTP.cpp
+index 3a054516..ac1eefc5 100644
+--- a/src/MSA/SMTP.cpp
++++ b/src/MSA/SMTP.cpp
+@@ -21,6 +21,7 @@
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+ #include "SMTP.h"
++#include "UiUtils/Formatting.h"
+
+ namespace MSA
+ {
+@@ -32,8 +33,8 @@ SMTP::SMTP(QObject *parent, const QString &host, quint16 port, bool encryptedCon
+ user(user), failed(false), isWaitingForPassword(false), sendingMode(MODE_SMTP_INVALID)
+ {
+ qwwSmtp = new QwwSmtpClient(this);
+- // FIXME: handle SSL errors properly
+- connect(qwwSmtp, &QwwSmtpClient::sslErrors, qwwSmtp, &QwwSmtpClient::ignoreSslErrors);
++ // FIXME: handle SSL errors in the same way as we handle IMAP TLS errors, with key pinning, etc.
++ connect(qwwSmtp, &QwwSmtpClient::sslErrors, this, &SMTP::handleSslErrors);
+ connect(qwwSmtp, &QwwSmtpClient::connected, this, &AbstractMSA::sending);
+ connect(qwwSmtp, &QwwSmtpClient::done, this, &SMTP::handleDone);
+ connect(qwwSmtp, &QwwSmtpClient::socketError, this, &SMTP::handleError);
+@@ -78,6 +79,12 @@ void SMTP::handleError(QAbstractSocket::SocketError err, const QString &msg)
+ emit error(msg);
+ }
+
++void SMTP::handleSslErrors(const QList<QSslError>& errors)
++{
++ auto msg = UiUtils::Formatting::sslErrorsToHtml(errors);
++ emit error(tr("<p>Cannot send message due to an SSL/TLS error</p>\n%1").arg(msg));
++}
++
+ void SMTP::setPassword(const QString &password)
+ {
+ pass = password;
+diff --git a/src/MSA/SMTP.h b/src/MSA/SMTP.h
+index 453407d3..913bb873 100644
+--- a/src/MSA/SMTP.h
++++ b/src/MSA/SMTP.h
+@@ -43,6 +43,7 @@ public slots:
+ virtual void setPassword(const QString &password);
+ void handleDone(bool ok);
+ void handleError(QAbstractSocket::SocketError err, const QString &msg);
++ void handleSslErrors(const QList<QSslError>& errors);
+ private:
+ QwwSmtpClient *qwwSmtp;
+ QString host;
+--
+GitLab
+
diff --git a/user/trojita/attachments.patch b/user/trojita/attachments.patch
new file mode 100644
index 000000000..38d11316e
--- /dev/null
+++ b/user/trojita/attachments.patch
@@ -0,0 +1,68 @@
+From cf2364b80fa8ae844df8350cd5833d47cce235f2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jan=20Kundr=C3=A1t?= <jkt@kde.org>
+Date: Mon, 9 Mar 2020 08:24:48 -0700
+Subject: [PATCH] Fix possible crash when downloading attachments
+
+Turns out we've been happily deleting network replies from the
+QNetworkReply::finished(). That was never a good thing to do, but it did
+not use to crash with older Qt. Now it does.
+
+After changing to deleteLater(), there's a window for
+already-deregistered replies to generate events, therefore the assert
+has to go, too, otherwise Bad Things happen:
+
+ (gdb) bt
+ #0 __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:50
+ #1 0x00007ffff16bdcd2 in __GI_abort () at abort.c:89
+ #2 0x00007ffff2400bcb in qt_message_fatal (context=..., message=<synthetic pointer>...) at /var/tmp/portage/dev-qt/qtcore-5.13.9999/work/qtcore-5.13.9999/src/corelib/global/qlogging.cpp:1904
+ #3 QMessageLogger::fatal (this=this@entry=0x7fffffffc990, msg=msg@entry=0x7ffff2690b10 "ASSERT: \"%s\" in file %s, line %d") at /var/tmp/portage/dev-qt/qtcore-5.13.9999/work/qtcore-5.13.9999/src/corelib/global/qlogging.cpp:888
+ #4 0x00007ffff23fff7c in qt_assert (assertion=assertion@entry=0x5555558451d7 "reply", file=file@entry=0x555555841a38 "/home/jkt/work/prog/trojita/src/Imap/Network/FileDownloadManager.cpp", line=line@entry=142)
+ at /var/tmp/portage/dev-qt/qtcore-5.13.9999/work/qtcore-5.13.9999/src/corelib/global/qglobal.cpp:3247
+ #5 0x00005555555da840 in Imap::Network::FileDownloadManager::onPartDataTransfered (this=0x555556a20990)
+ #6 0x00007ffff25f1bdf in QtPrivate::QSlotObjectBase::call (a=0x7fffffffcaa0, r=0x555556a20990, this=0x5555569f99c0) at ../../include/QtCore/../../../qtcore-5.13.9999/src/corelib/kernel/qobjectdefs_impl.h:394
+ #7 QMetaObject::activate(QObject*, int, int, void**) () at /var/tmp/portage/dev-qt/qtcore-5.13.9999/work/qtcore-5.13.9999/src/corelib/kernel/qobject.cpp:3787
+ #8 0x00007ffff25f20b7 in QMetaObject::activate (sender=sender@entry=0x555556a21370, m=m@entry=0x7ffff3f96b00 <QNetworkReply::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x0)
+ at /var/tmp/portage/dev-qt/qtcore-5.13.9999/work/qtcore-5.13.9999/src/corelib/kernel/qobject.cpp:3658
+ #9 0x00007ffff3d3cbf3 in QNetworkReply::finished (this=this@entry=0x555556a21370) at .moc/moc_qnetworkreply.cpp:385
+ #10 0x0000555555709485 in Imap::Network::MsgPartNetworkReply::slotMyDataChanged() () at /home/jkt/work/prog/trojita/src/Imap/Network/MsgPartNetworkReply.cpp:112
+
+BUG: 417697
+Reported-by: Stefan de Konink <stefan@konink.de>
+Change-Id: I79f340c5a471430a14474472513d0a055c7238d6
+---
+ src/Imap/Network/FileDownloadManager.cpp | 10 ++++++----
+ 1 file changed, 6 insertions(+), 4 deletions(-)
+
+diff --git a/src/Imap/Network/FileDownloadManager.cpp b/src/Imap/Network/FileDownloadManager.cpp
+index 16b6c8df..c3f72176 100644
+--- a/src/Imap/Network/FileDownloadManager.cpp
++++ b/src/Imap/Network/FileDownloadManager.cpp
+@@ -139,7 +139,9 @@ void FileDownloadManager::downloadMessage()
+
+ void FileDownloadManager::onPartDataTransfered()
+ {
+- Q_ASSERT(reply);
++ if (!reply) {
++ return;
++ }
+ if (reply->error() == QNetworkReply::NoError) {
+ if (!saving.open(QIODevice::WriteOnly)) {
+ emit transferError(saving.errorString());
+@@ -192,11 +194,11 @@ void FileDownloadManager::onCombinerTransferError(const QString &message)
+
+ void FileDownloadManager::deleteReply(QNetworkReply *reply)
+ {
+- if (reply == this->reply) {
++ if (reply && reply == this->reply) {
+ if (!saved)
+ onPartDataTransfered();
+- delete reply;
+- this->reply = 0;
++ reply->deleteLater();
++ this->reply = nullptr;
+ }
+ }
+
+--
+GitLab
+
diff --git a/user/trojita/deprecated1.patch b/user/trojita/deprecated1.patch
new file mode 100644
index 000000000..e09c0c573
--- /dev/null
+++ b/user/trojita/deprecated1.patch
@@ -0,0 +1,369 @@
+From 297f0d5a1df9c1b9ca5e9287bb2e603985c232cf Mon Sep 17 00:00:00 2001
+From: Heiko Becker <heirecka@exherbo.org>
+Date: Tue, 1 Feb 2022 17:06:49 +0100
+Subject: [PATCH 1/6] Port away from deprecated qSort to std::sort
+
+---
+ src/Imap/Model/MailboxTree.cpp | 2 +-
+ src/Imap/Model/Model.cpp | 7 +++----
+ src/Imap/Model/ThreadingMsgListModel.cpp | 2 +-
+ src/Imap/Parser/Sequence.cpp | 3 ++-
+ src/Imap/Tasks/ObtainSynchronizedMailboxTask.cpp | 2 +-
+ src/Imap/Tasks/SortTask.cpp | 2 +-
+ 6 files changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/src/Imap/Model/MailboxTree.cpp b/src/Imap/Model/MailboxTree.cpp
+index e61f59c5..d9a03fc3 100644
+--- a/src/Imap/Model/MailboxTree.cpp
++++ b/src/Imap/Model/MailboxTree.cpp
+@@ -590,7 +590,7 @@ void TreeItemMailbox::handleVanished(Model *const model, const Responses::Vanish
+ QModelIndex listIndex = list->toIndex(model);
+
+ auto uids = resp.uids;
+- qSort(uids);
++ std::sort(uids.begin(), uids.end());
+ // Remove duplicates -- even that garbage can be present in a perfectly valid VANISHED :(
+ uids.erase(std::unique(uids.begin(), uids.end()), uids.end());
+
+diff --git a/src/Imap/Model/Model.cpp b/src/Imap/Model/Model.cpp
+index 1d539e22..aff8ea43 100644
+--- a/src/Imap/Model/Model.cpp
++++ b/src/Imap/Model/Model.cpp
+@@ -25,7 +25,6 @@
+ #include <QAuthenticator>
+ #include <QCoreApplication>
+ #include <QDebug>
+-#include <QtAlgorithms>
+ #include "Model.h"
+ #include "Common/FindWithUnknown.h"
+ #include "Common/InvokeMethod.h"
+@@ -350,7 +349,7 @@ void Model::finalizeList(Parser *parser, TreeItemMailbox *mailboxPtr)
+ ++it;
+ }
+ }
+- qSort(mailboxes.begin(), mailboxes.end(), MailboxNameComparator);
++ std::sort(mailboxes.begin(), mailboxes.end(), MailboxNameComparator);
+
+ // Remove duplicates; would be great if this could be done in a STLish way,
+ // but unfortunately std::unique won't help here (the "duped" part of the
+@@ -406,7 +405,7 @@ void Model::finalizeIncrementalList(Parser *parser, const QString &parentMailbox
+ ++it;
+ }
+ }
+- qSort(mailboxes.begin(), mailboxes.end(), MailboxNameComparator);
++ std::sort(mailboxes.begin(), mailboxes.end(), MailboxNameComparator);
+
+ if (mailboxes.size() == 0) {
+ qDebug() << "Weird, no matching LIST response for our prompt after CREATE";
+@@ -1259,7 +1258,7 @@ void Model::copyMoveMessages(TreeItemMailbox *sourceMbox, const QString &destMai
+
+ Q_ASSERT(sourceMbox);
+
+- qSort(uids);
++ std::sort(uids.begin(), uids.end());
+
+ QModelIndexList messages;
+ Sequence seq;
+diff --git a/src/Imap/Model/ThreadingMsgListModel.cpp b/src/Imap/Model/ThreadingMsgListModel.cpp
+index 29786022..76ef94c2 100644
+--- a/src/Imap/Model/ThreadingMsgListModel.cpp
++++ b/src/Imap/Model/ThreadingMsgListModel.cpp
+@@ -718,7 +718,7 @@ void ThreadingMsgListModel::slotIncrementalThreadingAvailable(const Responses::E
+ for (Responses::ESearch::IncrementalThreadingData_t::const_iterator it = data.constBegin(); it != data.constEnd(); ++it) {
+ gatherAllUidsFromThreadNode(affectedUids, it->thread);
+ }
+- qSort(affectedUids);
++ std::sort(affectedUids.begin(), affectedUids.end());
+ QList<TreeItemMessage*> affectedMessages = const_cast<Model*>(realModel)->
+ findMessagesByUids(static_cast<TreeItemMailbox*>(mailboxIndex.internalPointer()), affectedUids);
+ QHash<uint,void *> uidToPtrCache;
+diff --git a/src/Imap/Parser/Sequence.cpp b/src/Imap/Parser/Sequence.cpp
+index 31b257bb..0e2cd314 100644
+--- a/src/Imap/Parser/Sequence.cpp
++++ b/src/Imap/Parser/Sequence.cpp
+@@ -23,6 +23,7 @@
+ #include "Sequence.h"
+ #include <QStringList>
+ #include <QTextStream>
++#include <algorithm>
+
+ namespace Imap
+ {
+@@ -114,7 +115,7 @@ Sequence &Sequence::add(uint num)
+ Sequence Sequence::fromVector(Imap::Uids numbers)
+ {
+ Q_ASSERT(!numbers.isEmpty());
+- qSort(numbers);
++ std::sort(numbers.begin(), numbers.end());
+ Sequence seq(numbers.first());
+ for (int i = 1; i < numbers.size(); ++i) {
+ seq.add(numbers[i]);
+diff --git a/src/Imap/Tasks/ObtainSynchronizedMailboxTask.cpp b/src/Imap/Tasks/ObtainSynchronizedMailboxTask.cpp
+index 9d6f8279..89fdf4ef 100644
+--- a/src/Imap/Tasks/ObtainSynchronizedMailboxTask.cpp
++++ b/src/Imap/Tasks/ObtainSynchronizedMailboxTask.cpp
+@@ -974,7 +974,7 @@ void ObtainSynchronizedMailboxTask::finalizeSearch()
+ }
+ }
+
+- qSort(uidMap);
++ std::sort(uidMap.begin(), uidMap.end());
+ if (!uidMap.isEmpty() && uidMap.front() == 0) {
+ throw MailboxException("UID (E)SEARCH response contains invalid UID zero");
+ }
+diff --git a/src/Imap/Tasks/SortTask.cpp b/src/Imap/Tasks/SortTask.cpp
+index 347ec85e..8c2b4d69 100644
+--- a/src/Imap/Tasks/SortTask.cpp
++++ b/src/Imap/Tasks/SortTask.cpp
+@@ -179,7 +179,7 @@ bool SortTask::handleSearch(const Imap::Responses::Search *const resp)
+ // That just doesn't look like worth it.
+
+ sortResult += resp->items;
+- qSort(sortResult);
++ std::sort(sortResult.begin(), sortResult.end());
+ sortResult.erase(std::unique(sortResult.begin(), sortResult.end()), sortResult.end());
+ return true;
+ }
+--
+GitLab
+
+
+From 268637f7b63059a065dffcb87c13166ebb0d3d3f Mon Sep 17 00:00:00 2001
+From: Heiko Becker <heirecka@exherbo.org>
+Date: Tue, 1 Feb 2022 17:31:43 +0100
+Subject: [PATCH 2/6] Port away from deprecated qFind to std::find
+
+---
+ src/Imap/Model/ThreadingMsgListModel.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/Imap/Model/ThreadingMsgListModel.cpp b/src/Imap/Model/ThreadingMsgListModel.cpp
+index 76ef94c2..58b606a5 100644
+--- a/src/Imap/Model/ThreadingMsgListModel.cpp
++++ b/src/Imap/Model/ThreadingMsgListModel.cpp
+@@ -1130,7 +1130,7 @@ void ThreadingMsgListModel::pruneTree()
+ Q_ASSERT(parent != threading.end());
+
+ // and the node itself has to be found in its parent's children
+- QList<uint>::iterator childIt = qFind(parent->children.begin(), parent->children.end(), it->internalId);
++ QList<uint>::iterator childIt = std::find(parent->children.begin(), parent->children.end(), it->internalId);
+ Q_ASSERT(childIt != parent->children.end());
+ // The offset of this child might no longer be correct, though -- we're postponing the actual deletion until later
+
+@@ -1175,7 +1175,7 @@ void ThreadingMsgListModel::pruneTree()
+
+ if (parent->internalId == 0) {
+ // Update the list of all thread roots
+- QList<uint>::iterator rootIt = qFind(threadedRootIds.begin(), threadedRootIds.end(), it->internalId);
++ QList<uint>::iterator rootIt = std::find(threadedRootIds.begin(), threadedRootIds.end(), it->internalId);
+ if (rootIt != threadedRootIds.end())
+ *rootIt = replaceWith->internalId;
+ }
+--
+GitLab
+
+
+From f06067dfa9bbb28cc385e526e9a7b261fe8448bc Mon Sep 17 00:00:00 2001
+From: Heiko Becker <heirecka@exherbo.org>
+Date: Tue, 1 Feb 2022 17:33:32 +0100
+Subject: [PATCH 3/6] Port away from deprecated qLowerBound to std::lower_bound
+
+---
+ src/Imap/Parser/Sequence.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Imap/Parser/Sequence.cpp b/src/Imap/Parser/Sequence.cpp
+index 0e2cd314..55adb6aa 100644
+--- a/src/Imap/Parser/Sequence.cpp
++++ b/src/Imap/Parser/Sequence.cpp
+@@ -106,7 +106,7 @@ Imap::Uids Sequence::toVector() const
+ Sequence &Sequence::add(uint num)
+ {
+ Q_ASSERT(kind == DISTINCT);
+- auto it = qLowerBound(numbers.begin(), numbers.end(), num);
++ auto it = std::lower_bound(numbers.begin(), numbers.end(), num);
+ if (it == numbers.end() || *it != num)
+ numbers.insert(it, num);
+ return *this;
+--
+GitLab
+
+
+From b7e9532a3209d64c15937e29b359be40fbd2fff7 Mon Sep 17 00:00:00 2001
+From: Heiko Becker <heirecka@exherbo.org>
+Date: Tue, 1 Feb 2022 17:34:15 +0100
+Subject: [PATCH 4/6] Port away from deprecated qLess to std::less
+
+---
+ tests/Misc/test_algorithms.cpp | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/tests/Misc/test_algorithms.cpp b/tests/Misc/test_algorithms.cpp
+index a9a53745..86ce9e16 100644
+--- a/tests/Misc/test_algorithms.cpp
++++ b/tests/Misc/test_algorithms.cpp
+@@ -21,6 +21,7 @@
+ */
+
+ #include <QTest>
++#include <functional>
+ #include "test_algorithms.h"
+
+ #include "Common/FindWithUnknown.h"
+@@ -38,9 +39,9 @@ void TestCommonAlgorithms::testLowerBoundWithUnknown()
+ QFETCH(int, needle);
+ QFETCH(int, offset);
+
+- QList<int>::const_iterator it = Common::linearLowerBoundWithUnknownElements(list.constBegin(), list.constEnd(), needle, isZero, qLess<int>());
++ QList<int>::const_iterator it = Common::linearLowerBoundWithUnknownElements(list.constBegin(), list.constEnd(), needle, isZero, std::less<int>());
+ QCOMPARE(it - list.constBegin(), offset);
+- it = Common::lowerBoundWithUnknownElements(list.constBegin(), list.constEnd(), needle, isZero, qLess<int>());
++ it = Common::lowerBoundWithUnknownElements(list.constBegin(), list.constEnd(), needle, isZero, std::less<int>());
+ QCOMPARE(it - list.constBegin(), offset);
+ }
+
+--
+GitLab
+
+
+From 42ea2f0ec8de8fc2ea3e607d0b694dbd30e3ffaf Mon Sep 17 00:00:00 2001
+From: Heiko Becker <heirecka@exherbo.org>
+Date: Sat, 29 Jan 2022 23:54:40 +0100
+Subject: [PATCH 5/6] Port from the deprecated QProcess::error() to
+ errorOccurred
+
+Raises the Qt requirement to 5.6.
+---
+ CMakeLists.txt | 3 ++-
+ src/MSA/Sendmail.cpp | 2 +-
+ src/Streams/IODeviceSocket.cpp | 2 +-
+ 3 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index a3d54166..54512029 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -69,7 +69,7 @@ else()
+ set(QTKEYCHAIN_DEPENDS "")
+ endif()
+
+-find_package(Qt5Core 5.2 REQUIRED)
++find_package(Qt5Core 5.6 REQUIRED)
+ find_package(Qt5Gui REQUIRED)
+ find_package(Qt5Network REQUIRED)
+ find_package(Qt5Sql REQUIRED)
+@@ -183,6 +183,7 @@ add_definitions(-DQT_STRICT_ITERATORS)
+ add_definitions(-DQT_USE_QSTRINGBUILDER)
+ add_definitions(-DQT_USE_FAST_OPERATOR_PLUS)
+ add_definitions(-DQT_USE_FAST_CONCATENATION)
++add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050600)
+
+ if(NOT MSVC)
+ # We're using C++11's threading features (std::async in particular), and that requires "some threading". With GCC and
+diff --git a/src/MSA/Sendmail.cpp b/src/MSA/Sendmail.cpp
+index f72f4927..d88d16c4 100644
+--- a/src/MSA/Sendmail.cpp
++++ b/src/MSA/Sendmail.cpp
+@@ -30,7 +30,7 @@ Sendmail::Sendmail(QObject *parent, const QString &command, const QStringList &a
+ proc = new QProcess(this);
+ connect(proc, &QProcess::started, this, &Sendmail::handleStarted);
+ connect(proc, static_cast<void (QProcess::*)(int)>(&QProcess::finished), this, &Sendmail::handleFinished);
+- connect(proc, static_cast<void (QProcess::*)(QProcess::ProcessError)>(&QProcess::error), this, &Sendmail::handleError);
++ connect(proc, &QProcess::errorOccurred, this, &Sendmail::handleError);
+ connect(proc, &QIODevice::bytesWritten, this, &Sendmail::handleBytesWritten);
+ }
+
+diff --git a/src/Streams/IODeviceSocket.cpp b/src/Streams/IODeviceSocket.cpp
+index 7998028d..90f8470e 100644
+--- a/src/Streams/IODeviceSocket.cpp
++++ b/src/Streams/IODeviceSocket.cpp
+@@ -141,7 +141,7 @@ ProcessSocket::ProcessSocket(QProcess *proc, const QString &executable, const QS
+ IODeviceSocket(proc), executable(executable), args(args)
+ {
+ connect(proc, &QProcess::stateChanged, this, &ProcessSocket::handleStateChanged);
+- connect(proc, static_cast<void (QProcess::*)(QProcess::ProcessError)>(&QProcess::error), this, &ProcessSocket::handleProcessError);
++ connect(proc, &QProcess::errorOccurred, this, &ProcessSocket::handleProcessError);
+ }
+
+ ProcessSocket::~ProcessSocket()
+--
+GitLab
+
+
+From aee63baa14f3fc318d4aac67b2c740067ffc7929 Mon Sep 17 00:00:00 2001
+From: Heiko Becker <heirecka@exherbo.org>
+Date: Tue, 1 Feb 2022 17:52:12 +0100
+Subject: [PATCH 6/6] Port from deprecated {from,to}Time_t to
+ {from,to}SecsSinceEpock
+
+Raises the Qt requirement to 5.8.
+
+Not raising QT_DISABLE_DEPRECATED_BEFORE=0x050800 yet, because
+QModelIndex.child() was deprecated with 5.8 and it's quite frequenty
+used.
+---
+ CMakeLists.txt | 4 ++--
+ src/Cryptography/GpgMe++.cpp | 4 ++--
+ src/Imap/Model/Utils.cpp | 2 +-
+ 3 files changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 54512029..e2cd9108 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -69,7 +69,7 @@ else()
+ set(QTKEYCHAIN_DEPENDS "")
+ endif()
+
+-find_package(Qt5Core 5.6 REQUIRED)
++find_package(Qt5Core 5.8 REQUIRED)
+ find_package(Qt5Gui REQUIRED)
+ find_package(Qt5Network REQUIRED)
+ find_package(Qt5Sql REQUIRED)
+@@ -183,7 +183,7 @@ add_definitions(-DQT_STRICT_ITERATORS)
+ add_definitions(-DQT_USE_QSTRINGBUILDER)
+ add_definitions(-DQT_USE_FAST_OPERATOR_PLUS)
+ add_definitions(-DQT_USE_FAST_CONCATENATION)
+-add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050600)
++add_definitions(-DQT_DISABLE_DEPRECATED_BEFORE=0x050700)
+
+ if(NOT MSVC)
+ # We're using C++11's threading features (std::async in particular), and that requires "some threading". With GCC and
+diff --git a/src/Cryptography/GpgMe++.cpp b/src/Cryptography/GpgMe++.cpp
+index 716b8aff..78f8caf5 100644
+--- a/src/Cryptography/GpgMe++.cpp
++++ b/src/Cryptography/GpgMe++.cpp
+@@ -366,7 +366,7 @@ void GpgMePart::extractSignatureStatus(std::shared_ptr<GpgME::Context> ctx, cons
+ } else {
+ signer = QString::fromUtf8(sig.fingerprint());
+ }
+- signDate = QDateTime::fromTime_t(sig.creationTime());
++ signDate = QDateTime::fromSecsSinceEpoch(sig.creationTime());
+
+ if (sig.summary() & GpgME::Signature::Green) {
+ // FIXME: change the above to GpgME::Signature::Valid and react to expired keys/signatures by checking the timestamp
+@@ -462,7 +462,7 @@ void GpgMePart::extractSignatureStatus(std::shared_ptr<GpgME::Context> ctx, cons
+ if (sig.summary() & GpgME::Signature::SigExpired) {
+ ENSURE_LINE_LF(longStatus);
+ longStatus += tr("Signature expired on %1.")
+- .arg(QDateTime::fromTime_t(sig.expirationTime()).toString(Qt::DefaultLocaleShortDate));
++ .arg(QDateTime::fromSecsSinceEpoch(sig.expirationTime()).toString(Qt::DefaultLocaleShortDate));
+ }
+ if (sig.summary() & GpgME::Signature::KeyMissing) {
+ ENSURE_LINE_LF(longStatus);
+diff --git a/src/Imap/Model/Utils.cpp b/src/Imap/Model/Utils.cpp
+index 00b3d4b3..b09341a6 100644
+--- a/src/Imap/Model/Utils.cpp
++++ b/src/Imap/Model/Utils.cpp
+@@ -343,7 +343,7 @@ QString formatDateTimeWithTimeZoneAtEnd(const QDateTime &now, const QString &for
+
+ // Got to cast to a signed type to prevent unsigned underflow here. Also go to 64bits because otherwise there'd
+ // a problem when the value is out-of-range for an int32.
+- int minutesDifference = (static_cast<qint64>(now.toTime_t()) - static_cast<qint64>(nowUtc.toTime_t())) / 60;
++ int minutesDifference = (now.toSecsSinceEpoch() - nowUtc.toSecsSinceEpoch()) / 60;
+ int tzOffsetHours = qAbs(minutesDifference) / 60;
+ int tzOffsetMinutes = qAbs(minutesDifference) % 60;
+ // The rest is just a piece of cake now
+--
+GitLab
+
diff --git a/user/trojita/deprecated2.patch b/user/trojita/deprecated2.patch
new file mode 100644
index 000000000..968f06ec4
--- /dev/null
+++ b/user/trojita/deprecated2.patch
@@ -0,0 +1,28 @@
+From 2869c385e72932cbed7398742b8a4d5e3feda765 Mon Sep 17 00:00:00 2001
+From: Heiko Becker <heirecka@exherbo.org>
+Date: Tue, 24 Mar 2020 13:14:43 +0100
+Subject: [PATCH] Fix build with Qt 5.15.0
+
+QPainterPath is no longer included via qtransform.h (since
+5.15.0-beta2, 50d2acdc93b4de2ba56eb67787e2bdcb21dd4bea in qtbase.git).
+
+Change-Id: Ibb59e769bba8514d86aa886afee26a2395d458ef
+---
+ src/Gui/Window.cpp | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/Gui/Window.cpp b/src/Gui/Window.cpp
+index 65ba2463..8d74874f 100644
+--- a/src/Gui/Window.cpp
++++ b/src/Gui/Window.cpp
+@@ -32,6 +32,7 @@
+ #include <QKeyEvent>
+ #include <QMenuBar>
+ #include <QMessageBox>
++#include <QPainterPath>
+ #include <QProgressBar>
+ #include <QRegularExpression>
+ #include <QScopedPointer>
+--
+GitLab
+
diff --git a/user/trojita/deprecated3.patch b/user/trojita/deprecated3.patch
new file mode 100644
index 000000000..9f1ab3e7e
--- /dev/null
+++ b/user/trojita/deprecated3.patch
@@ -0,0 +1,37 @@
+From 39772585033c1c0aff96f297e93de7be53f9b114 Mon Sep 17 00:00:00 2001
+From: Heiko Becker <heirecka@exherbo.org>
+Date: Sat, 23 Mar 2019 01:17:11 +0100
+Subject: [PATCH] tests: Fix build with Qt 5.13
+
+QTest::toString(QModelIndex) was added in
+7ef0b575b38d267bd3dc14ff46935d556562ff00 and thus causes a build
+error with Qt 5.13 because it's redefined here.
+
+Change-Id: I015800e49cf8d0e87f3541642406396f150d0eeb
+---
+ tests/Imap/test_Imap_BodyParts.cpp | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/tests/Imap/test_Imap_BodyParts.cpp b/tests/Imap/test_Imap_BodyParts.cpp
+index f1c577fa..b6e0421d 100644
+--- a/tests/Imap/test_Imap_BodyParts.cpp
++++ b/tests/Imap/test_Imap_BodyParts.cpp
+@@ -51,6 +51,7 @@ struct Data {
+
+ Q_DECLARE_METATYPE(QList<Data>)
+
++#if QT_VERSION < QT_VERSION_CHECK(5, 13, 0)
+ namespace QTest {
+ template <>
+ char *toString(const QModelIndex &index)
+@@ -60,6 +61,7 @@ char *toString(const QModelIndex &index)
+ return qstrdup(buf.toUtf8().constData());
+ }
+ }
++#endif
+
+ using namespace Imap::Mailbox;
+
+--
+GitLab
+
diff --git a/user/trojita/fetch-task.patch b/user/trojita/fetch-task.patch
new file mode 100644
index 000000000..378db6477
--- /dev/null
+++ b/user/trojita/fetch-task.patch
@@ -0,0 +1,204 @@
+From b12f18885861b125ed139f83fa27491d4b3f9f4e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jan=20Kundr=C3=A1t?= <jkt@kde.org>
+Date: Mon, 2 Jan 2017 19:01:16 +0100
+Subject: [PATCH] Refactoring: move FETCH finalization to a corresponding Task
+
+The tasks were always meant to be able to directly perform these
+operations. There's no point in stashing all functionality in the Model
+class -- that one is way too big already.
+
+Change-Id: I9adfefbdf2d7ecd3d060e764ace5535be10dd0d3
+---
+ src/Imap/Model/MailboxTree.cpp | 16 +++++++++++----
+ src/Imap/Model/MailboxTree.h | 2 ++
+ src/Imap/Model/Model.cpp | 28 -------------------------
+ src/Imap/Model/Model.h | 1 -
+ src/Imap/Tasks/FetchMsgPartTask.cpp | 32 ++++++++++++++++++++++++++++-
+ src/Imap/Tasks/FetchMsgPartTask.h | 10 +++++----
+ 6 files changed, 51 insertions(+), 38 deletions(-)
+
+diff --git a/src/Imap/Model/MailboxTree.cpp b/src/Imap/Model/MailboxTree.cpp
+index 8c28775f..47ea675c 100644
+--- a/src/Imap/Model/MailboxTree.cpp
++++ b/src/Imap/Model/MailboxTree.cpp
+@@ -1556,8 +1556,12 @@ bool TreeItemMessage::hasNestedAttachments(Model *const model, TreeItemPart *par
+ }
+
+
+-TreeItemPart::TreeItemPart(TreeItem *parent, const QByteArray &mimeType):
+- TreeItem(parent), m_mimeType(mimeType.toLower()), m_octets(0), m_partMime(0), m_partRaw(0)
++TreeItemPart::TreeItemPart(TreeItem *parent, const QByteArray &mimeType)
++ : TreeItem(parent)
++ , m_mimeType(mimeType.toLower())
++ , m_octets(0)
++ , m_partMime(nullptr)
++ , m_partRaw(nullptr)
+ {
+ if (isTopLevelMultiPart()) {
+ // Note that top-level multipart messages are special, their immediate contents
+@@ -1566,8 +1570,12 @@ TreeItemPart::TreeItemPart(TreeItem *parent, const QByteArray &mimeType):
+ }
+ }
+
+-TreeItemPart::TreeItemPart(TreeItem *parent):
+- TreeItem(parent), m_mimeType("text/plain"), m_octets(0), m_partMime(0), m_partRaw(0)
++TreeItemPart::TreeItemPart(TreeItem *parent)
++ : TreeItem(parent)
++ , m_mimeType("text/plain")
++ , m_octets(0)
++ , m_partMime(nullptr)
++ , m_partRaw(nullptr)
+ {
+ }
+
+diff --git a/src/Imap/Model/MailboxTree.h b/src/Imap/Model/MailboxTree.h
+index 5cfd843a..137d4a5f 100644
+--- a/src/Imap/Model/MailboxTree.h
++++ b/src/Imap/Model/MailboxTree.h
+@@ -55,6 +55,7 @@ class TreeItem
+ friend class MsgListModel; // for direct access to m_children
+ friend class ThreadingMsgListModel; // for direct access to m_children
+ friend class UpdateFlagsOfAllMessagesTask; // for direct access to m_children
++ friend class FetchMsgPartTask; // for direct access to m_children
+
+ protected:
+ /** @short Availability of an item */
+@@ -140,6 +141,7 @@ class TreeItemMailbox: public TreeItem
+ friend class DeleteMailboxTask; // for direct access to maintainingTask
+ friend class KeepMailboxOpenTask; // needs access to maintainingTask
+ friend class SubscribeUnsubscribeTask; // needs access to m_metadata.flags
++ friend class FetchMsgPartTask; // needs access to partIdToPtr()
+ static QLatin1String flagNoInferiors;
+ static QLatin1String flagHasNoChildren;
+ static QLatin1String flagHasChildren;
+diff --git a/src/Imap/Model/Model.cpp b/src/Imap/Model/Model.cpp
+index e62ef3dd..dc985d44 100644
+--- a/src/Imap/Model/Model.cpp
++++ b/src/Imap/Model/Model.cpp
+@@ -500,34 +500,6 @@ void Model::emitMessageCountChanged(TreeItemMailbox *const mailbox)
+ emit messageCountPossiblyChanged(mailboxIndex);
+ }
+
+-/** @short Retrieval of a message part has completed */
+-bool Model::finalizeFetchPart(TreeItemMailbox *const mailbox, const uint sequenceNo, const QByteArray &partId)
+-{
+- // At first, verify that the message itself is marked as loaded.
+- // If it isn't, it's probably because of Model::releaseMessageData().
+- TreeItem *item = mailbox->m_children[0]; // TreeItemMsgList
+- item = item->child(sequenceNo - 1, this); // TreeItemMessage
+- Q_ASSERT(item); // FIXME: or rather throw an exception?
+- if (item->accessFetchStatus() == TreeItem::NONE) {
+- // ...and it indeed got released, so let's just return and don't try to check anything
+- return false;
+- }
+-
+- TreeItemPart *part = mailbox->partIdToPtr(this, static_cast<TreeItemMessage *>(item), partId);
+- if (! part) {
+- qDebug() << "Can't verify part fetching status: part is not here!";
+- return false;
+- }
+- if (part->loading()) {
+- part->setFetchStatus(TreeItem::UNAVAILABLE);
+- QModelIndex idx = part->toIndex(this);
+- emit dataChanged(idx, idx);
+- return false;
+- } else {
+- return true;
+- }
+-}
+-
+ void Model::handleCapability(Imap::Parser *ptr, const Imap::Responses::Capability *const resp)
+ {
+ updateCapabilities(ptr, resp->capabilities);
+diff --git a/src/Imap/Model/Model.h b/src/Imap/Model/Model.h
+index 46dce087..114e29ac 100644
+--- a/src/Imap/Model/Model.h
++++ b/src/Imap/Model/Model.h
+@@ -492,7 +492,6 @@ private:
+
+ void finalizeList(Parser *parser, TreeItemMailbox *const mailboxPtr);
+ void finalizeIncrementalList(Parser *parser, const QString &parentMailboxName);
+- bool finalizeFetchPart(TreeItemMailbox *const mailbox, const uint sequenceNo, const QByteArray &partId);
+ void genericHandleFetch(TreeItemMailbox *mailbox, const Imap::Responses::Fetch *const resp);
+
+ void replaceChildMailboxes(TreeItemMailbox *mailboxPtr, const TreeItemChildrenList &mailboxes);
+diff --git a/src/Imap/Tasks/FetchMsgPartTask.cpp b/src/Imap/Tasks/FetchMsgPartTask.cpp
+index c7a49437..40e7ec81 100644
+--- a/src/Imap/Tasks/FetchMsgPartTask.cpp
++++ b/src/Imap/Tasks/FetchMsgPartTask.cpp
+@@ -121,7 +121,7 @@ void FetchMsgPartTask::markPendingItemsUnavailable()
+ QList<TreeItemMessage *> messages = model->findMessagesByUids(mailbox, uids);
+ Q_FOREACH(TreeItemMessage *message, messages) {
+ Q_FOREACH(const QByteArray &partId, parts) {
+- if (model->finalizeFetchPart(mailbox, message->row() + 1, partId)) {
++ if (finalizeFetchPart(mailbox, message->row() + 1, partId)) {
+ log(QLatin1String("Fetched part ") + QString::fromUtf8(partId), Common::LOG_MESSAGES);
+ } else {
+ log(QLatin1String("Received no data for part ") + QString::fromUtf8(partId), Common::LOG_MESSAGES);
+@@ -130,5 +130,35 @@ void FetchMsgPartTask::markPendingItemsUnavailable()
+ }
+ }
+
++/** @short Retrieval of a message part has completed */
++bool FetchMsgPartTask::finalizeFetchPart(TreeItemMailbox *const mailbox, const uint sequenceNo, const QByteArray &partId)
++{
++ Q_ASSERT(model);
++ // At first, verify that the message itself is marked as loaded.
++ // If it isn't, it's probably because of Model::releaseMessageData().
++ TreeItem *item = mailbox->m_children[0]; // TreeItemMsgList
++ item = item->child(sequenceNo - 1, model); // TreeItemMessage
++ Q_ASSERT(item); // FIXME: or rather throw an exception?
++ if (item->accessFetchStatus() == TreeItem::NONE) {
++ // ...and it indeed got released, so let's just return and don't try to check anything
++ return false;
++ }
++
++ TreeItemPart *part = mailbox->partIdToPtr(model, static_cast<TreeItemMessage *>(item), partId);
++ if (!part) {
++ log(QStringLiteral("Can't verify part fetching status: part is not here!"), Common::LOG_MESSAGES);
++ return false;
++ }
++ if (part->loading()) {
++ part->setFetchStatus(TreeItem::UNAVAILABLE);
++ QModelIndex idx = part->toIndex(model);
++ emit model->dataChanged(idx, idx);
++ return false;
++ } else {
++ return true;
++ }
++}
++
++
+ }
+ }
+diff --git a/src/Imap/Tasks/FetchMsgPartTask.h b/src/Imap/Tasks/FetchMsgPartTask.h
+index 4d5b591f..a7e4b2c1 100644
+--- a/src/Imap/Tasks/FetchMsgPartTask.h
++++ b/src/Imap/Tasks/FetchMsgPartTask.h
+@@ -26,10 +26,10 @@
+ #include <QPersistentModelIndex>
+ #include "ImapTask.h"
+
+-namespace Imap
+-{
+-namespace Mailbox
+-{
++namespace Imap {
++namespace Mailbox {
++
++class TreeItemMailbox;
+
+ /** @short Fetch a message part */
+ class FetchMsgPartTask : public ImapTask
+@@ -48,6 +48,8 @@ public:
+ protected slots:
+ void markPendingItemsUnavailable();
+ private:
++ bool finalizeFetchPart(TreeItemMailbox *const mailbox, const uint sequenceNo, const QByteArray &partId);
++
+ CommandHandle tag;
+ ImapTask *conn;
+ Imap::Uids uids;
+--
+GitLab
+
diff --git a/user/trojita/find-gpgme.patch b/user/trojita/find-gpgme.patch
new file mode 100644
index 000000000..9666ebf44
--- /dev/null
+++ b/user/trojita/find-gpgme.patch
@@ -0,0 +1,14 @@
+Derived from:
+
+https://invent.kde.org/pim/trojita/-/commit/91087933c5e7a03a8097c0ffe5f7289abcfc123b
+
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -95,6 +95,7 @@
+
+ trojita_find_package(Mimetic "" "http://www.codesink.org/mimetic_mime_library.html" "C++ MIME Library" "Required for client-side MIME parsing" WITH_MIMETIC)
+ trojita_find_package(Gpgmepp "" "https://quickgit.kde.org/?p=gpgmepp.git" "C++ bindings for gpgme" "Needed for encrypted/signed e-mails" WITH_GPGMEPP)
++trojita_find_package(QGpgme "1.8.0" "https://gnupg.org/related_software/gpgme/index.html" "Qt bindings for gpgme" "Needed for encrypted/signed e-mails" WITH_GPGMEPP)
+ trojita_option(WITH_CRYPTO_MESSAGES "Enable support for encrypted messages" AUTO "WITH_MIMETIC;WITH_GPGMEPP")
+
+ if(WIN32)
diff --git a/user/trojita/plaintext-upgrade-attack.patch b/user/trojita/plaintext-upgrade-attack.patch
new file mode 100644
index 000000000..f3c30b9aa
--- /dev/null
+++ b/user/trojita/plaintext-upgrade-attack.patch
@@ -0,0 +1,221 @@
+From 27573cf04802fc2fdeb7f7beace4612b22ea1942 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jan=20Kundr=C3=A1t?= <jkt@kde.org>
+Date: Sun, 30 Jan 2022 23:56:31 +0100
+Subject: [PATCH] IMAP: ignore unsolicited LIST and STATUS before we're
+ authenticated
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+These responses were combined with legit responses which arrive from the
+real server later on, after having authenticated, and as a result, a
+malicious active attacker on a network was able to inject extra fake
+mailboxes to the GUI even when upgrading connection from plaintext to a
+secure one via STARTTLS.
+
+These two responses are the only ones which are handled by our pre-task
+code directly in Model.cpp, which means that the state machine has to be
+checked and messages which are received prior to authentication must be
+rejected. Since this is really a pretty serious violation of the IMAP
+state machine, let's not ignore them silently, and simply treat them as
+any other unexpected response.
+
+BUG: 432353
+Change-Id: I9292fcb20215ebe4dbc7a103fc9403dfa97b258b
+Reported-by: Damian Poddebniak
+Co-authored-by: Espen Sandøy Hustad <espen@ehustad.com>
+Reviewed-by: Caspar Schutijser <caspar@schutijser.com>
+---
+ src/Imap/Model/Model.cpp | 7 +-
+ tests/Imap/test_Imap_Tasks_OpenConnection.cpp | 122 +++++++++++++++++-
+ tests/Imap/test_Imap_Tasks_OpenConnection.h | 9 ++
+ 3 files changed, 136 insertions(+), 2 deletions(-)
+
+diff --git a/src/Imap/Model/Model.cpp b/src/Imap/Model/Model.cpp
+index 7a393c7a..79e34658 100644
+--- a/src/Imap/Model/Model.cpp
++++ b/src/Imap/Model/Model.cpp
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2006 - 2014 Jan Kundrát <jkt@flaska.net>
++/* Copyright (C) 2006 - 2021 Jan Kundrát <jkt@flaska.net>
+
+ This file is part of the Trojita Qt IMAP e-mail client,
+ http://trojita.flaska.net/
+@@ -519,6 +519,8 @@ void Model::handleList(Imap::Parser *ptr, const Imap::Responses::List *const res
+ {
+ if (accessParser(ptr).connState == CONN_STATE_LOGOUT)
+ return;
++ if (accessParser(ptr).connState < CONN_STATE_AUTHENTICATED)
++ throw UnexpectedResponseReceived("Unexpected LIST response before authentication succeeded", *resp);
+ accessParser(ptr).listResponses << *resp;
+ }
+
+@@ -547,6 +549,9 @@ void Model::handleStatus(Imap::Parser *ptr, const Imap::Responses::Status *const
+ {
+ if (accessParser(ptr).connState == CONN_STATE_LOGOUT)
+ return;
++ if (accessParser(ptr).connState < CONN_STATE_AUTHENTICATED)
++ throw UnexpectedResponseReceived("Unexpected STATUS response before authentication succeeded", *resp);
++
+ Q_UNUSED(ptr);
+ TreeItemMailbox *mailbox = findMailboxByName(resp->mailbox);
+ if (! mailbox) {
+diff --git a/tests/Imap/test_Imap_Tasks_OpenConnection.cpp b/tests/Imap/test_Imap_Tasks_OpenConnection.cpp
+index b72898c4..953fe6f9 100644
+--- a/tests/Imap/test_Imap_Tasks_OpenConnection.cpp
++++ b/tests/Imap/test_Imap_Tasks_OpenConnection.cpp
+@@ -1,4 +1,4 @@
+-/* Copyright (C) 2006 - 2014 Jan Kundrát <jkt@flaska.net>
++/* Copyright (C) 2006 - 2021 Jan Kundrát <jkt@flaska.net>
+
+ This file is part of the Trojita Qt IMAP e-mail client,
+ http://trojita.flaska.net/
+@@ -611,5 +611,125 @@ void ImapModelOpenConnectionTest::provideAuthDetails()
+ }
+ }
+
++void ImapModelOpenConnectionTest::dataBug432353()
++{
++ QTest::addColumn<QByteArray>("garbage");
++ QTest::newRow("LIST") << QByteArray("* LIST (\\HasNoChildren) \".\" x\r\n");
++ QTest::newRow("STATUS") << QByteArray("* STATUS INBOX (MESSAGES 123)\r\n");
++}
++
++void ImapModelOpenConnectionTest::testNoListStatusUponConnect_data()
++{
++ dataBug432353();
++}
++
++void ImapModelOpenConnectionTest::testNoListStatusUponConnect()
++{
++ QFETCH(QByteArray, garbage);
++ reinit(TlsRequired::Yes);
++ cEmpty();
++ QCOMPARE(model->rowCount(QModelIndex()), 1);
++ ExpectSingleErrorHere x(this);
++ cServer("* OK foo\r\n" + garbage);
++}
++
++void ImapModelOpenConnectionTest::testNoListStatusStartTls_data()
++{
++ dataBug432353();
++}
++
++void ImapModelOpenConnectionTest::testNoListStatusStartTls()
++{
++ QFETCH(QByteArray, garbage);
++ reinit(TlsRequired::Yes);
++ cEmpty();
++ cServer("* OK [Capability imap4rev1 starttls] foo\r\n");
++ QVERIFY(completedSpy->isEmpty());
++ QVERIFY(authSpy->isEmpty());
++ cClient(t.mk("STARTTLS\r\n"));
++ cServer(t.last("OK will establish secure layer immediately\r\n"));
++ QVERIFY(authSpy->isEmpty());
++ cClient("[*** STARTTLS ***]" + t.mk("CAPABILITY\r\n"));
++ QVERIFY(completedSpy->isEmpty());
++ QVERIFY(authSpy->isEmpty());
++ cServer("* CAPABILITY IMAP4rev1\r\n" + t.last("OK capability completed\r\n"));
++ cClient(t.mk("LOGIN luzr sikrit\r\n"));
++ QCOMPARE(authSpy->size(), 1);
++ ExpectSingleErrorHere x(this);
++ cServer(garbage + t.last("OK [CAPABILITY IMAP4rev1] logged in\r\n"));
++}
++
++void ImapModelOpenConnectionTest::testNoListStatusBeforeAuthenticated_data()
++{
++ dataBug432353();
++}
++
++void ImapModelOpenConnectionTest::testNoListStatusBeforeAuthenticated()
++{
++ QFETCH(QByteArray, garbage);
++ reinit(TlsRequired::Yes);
++ cEmpty();
++ cServer("* OK [Capability imap4rev1 starttls] foo\r\n");
++ QVERIFY(completedSpy->isEmpty());
++ QVERIFY(authSpy->isEmpty());
++ cClient(t.mk("STARTTLS\r\n"));
++ cServer(t.last("OK will establish secure layer immediately\r\n"));
++ QVERIFY(authSpy->isEmpty());
++ cClient("[*** STARTTLS ***]" + t.mk("CAPABILITY\r\n"));
++ QVERIFY(completedSpy->isEmpty());
++ QVERIFY(authSpy->isEmpty());
++ cServer("* CAPABILITY IMAP4rev1\r\n" + t.last("OK capability completed\r\n"));
++ cClient(t.mk("LOGIN luzr sikrit\r\n"));
++ QCOMPARE(authSpy->size(), 1);
++ ExpectSingleErrorHere x(this);
++ cServer(garbage + t.last("OK [CAPABILITY IMAP4rev1] logged in\r\n"));
++}
++
++void ImapModelOpenConnectionTest::testListStatusUnsolicited()
++{
++ model->cache()->setChildMailboxes(QString(),
++ QList<Imap::Mailbox::MailboxMetadata>()
++ << Imap::Mailbox::MailboxMetadata(QLatin1String("INBOX"), QString(), QStringList())
++ );
++
++ reinit(TlsRequired::Yes);
++ cEmpty();
++ cServer("* OK [Capability imap4rev1 starttls] foo\r\n");
++ QVERIFY(completedSpy->isEmpty());
++ QVERIFY(authSpy->isEmpty());
++ cClient(t.mk("STARTTLS\r\n"));
++ cServer(t.last("OK will establish secure layer immediately\r\n"));
++ QVERIFY(authSpy->isEmpty());
++ cClient("[*** STARTTLS ***]" + t.mk("CAPABILITY\r\n"));
++ QVERIFY(completedSpy->isEmpty());
++ QVERIFY(authSpy->isEmpty());
++ cServer("* CAPABILITY IMAP4rev1\r\n" + t.last("OK capability completed\r\n"));
++ cClient(t.mk("LOGIN luzr sikrit\r\n"));
++ QCOMPARE(authSpy->size(), 1);
++ cServer(t.last("OK [CAPABILITY IMAP4rev1] logged in\r\n") +
++ "* LIST (\\HasNoChildren) \".\" abc\r\n"
++ "* LIST (\\HasNoChildren) \".\" def\r\n"
++ "* STATUS INBOX (MESSAGES 123)\r\n"
++ );
++ QCOMPARE(model->rowCount(QModelIndex()), 1);
++ cClient(t.mk("LIST \"\" \"%\"\r\n"));
++ cEmpty();
++ QCOMPARE(completedSpy->size(), 1);
++ QVERIFY(failedSpy->isEmpty());
++ cServer("* LIST (\\Noselect \\HasChildren) \".\" \"xyz\"\r\n"
++ "* LIST (\\HasNoChildren) \".\" \"INBOX\"\r\n"
++ + t.last("OK list done\r\n")
++ + "* STATUS INBOX (MESSAGES 789)\r\n");
++ cEmpty();
++
++ // Mailboxes "abc" and "def" were reported by the server as an async replay after having authenticated,
++ // so there's no reason not to trust them. However, they were received before a LIST was issues,
++ // so they should be probably ignored -- but that is tricky to do properly with command pipelining, etc.
++ QCOMPARE(model->rowCount( QModelIndex() ), 5 /* empty root, INBOX, abc, def, xyz */);
++ QCOMPARE(model->index(1, 0, QModelIndex()).data().toString(), QLatin1String("INBOX"));
++ QCOMPARE(model->index(2, 0, QModelIndex()).data().toString(), QLatin1String("abc"));
++ QCOMPARE(model->index(3, 0, QModelIndex()).data().toString(), QLatin1String("def"));
++ QCOMPARE(model->index(4, 0, QModelIndex()).data().toString(), QLatin1String("xyz"));
++}
+
+ QTEST_GUILESS_MAIN( ImapModelOpenConnectionTest )
+diff --git a/tests/Imap/test_Imap_Tasks_OpenConnection.h b/tests/Imap/test_Imap_Tasks_OpenConnection.h
+index 4df65c05..6a0e2704 100644
+--- a/tests/Imap/test_Imap_Tasks_OpenConnection.h
++++ b/tests/Imap/test_Imap_Tasks_OpenConnection.h
+@@ -70,6 +70,15 @@ private slots:
+
+ void testExcessivePasswordPrompts();
+
++ void dataBug432353();
++ void testNoListStatusUponConnect();
++ void testNoListStatusUponConnect_data();
++ void testNoListStatusStartTls();
++ void testNoListStatusStartTls_data();
++ void testNoListStatusBeforeAuthenticated();
++ void testNoListStatusBeforeAuthenticated_data();
++ void testListStatusUnsolicited();
++
+ void provideAuthDetails();
+ void acceptSsl(const QList<QSslCertificate> &certificateChain, const QList<QSslError> &sslErrors);
+
+--
+GitLab
+
diff --git a/user/trojita/pwstorage.patch b/user/trojita/pwstorage.patch
new file mode 100644
index 000000000..e0cec35ba
--- /dev/null
+++ b/user/trojita/pwstorage.patch
@@ -0,0 +1,52 @@
+From 7481e43116995d744d485655b1de6494d771227e Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jan=20Kundr=C3=A1t?= <jkt@kde.org>
+Date: Thu, 16 May 2019 19:28:14 +0200
+Subject: [PATCH] SMTP: Store correct password into the password manager
+
+The configuration ties the SMTP account with the IMAP account (in terms
+of per-profile access), so it was wrong to use the default account name.
+This fixes a rare configuration where the user is:
+
+- using a non-default profile,
+- requires SMTP auth,
+- *and* uses a different set of credentials for SMTP access compared to IMAP.
+
+Change-Id: Id6d341d14bf795943d8f3b7b42fac587a062141d
+---
+ src/Gui/ComposeWidget.cpp | 4 ----
+ src/Gui/SettingsDialog.cpp | 4 +++-
+ 2 files changed, 3 insertions(+), 5 deletions(-)
+
+diff --git a/src/Gui/ComposeWidget.cpp b/src/Gui/ComposeWidget.cpp
+index 104d2790..9fb3192a 100644
+--- a/src/Gui/ComposeWidget.cpp
++++ b/src/Gui/ComposeWidget.cpp
+@@ -660,10 +660,6 @@ void ComposeWidget::passwordRequested(const QString &user, const QString &host)
+ return;
+ }
+
+- // FIXME: use another account-id at some point in future
+- // we are now using the profile to avoid overwriting passwords of
+- // other profiles in secure storage
+- // 'account-0' is the hardcoded value when not using a profile
+ Plugins::PasswordJob *job = password->requestPassword(m_submission->accountId(), QStringLiteral("smtp"));
+ if (!job) {
+ askPassword(user, host);
+diff --git a/src/Gui/SettingsDialog.cpp b/src/Gui/SettingsDialog.cpp
+index a6e9b6b6..2eeb8b12 100644
+--- a/src/Gui/SettingsDialog.cpp
++++ b/src/Gui/SettingsDialog.cpp
+@@ -1078,7 +1078,9 @@ OutgoingPage::OutgoingPage(SettingsDialog *parent, QSettings &s): QScrollArea(pa
+ connect(smtpBurl, &QAbstractButton::toggled, m_smtpAccountSettings, &MSA::Account::setUseBurl);
+ connect(sendmail, &LineEdit::textEditingFinished, m_smtpAccountSettings, &MSA::Account::setPathToSendmail);
+
+- m_pwWatcher = new UiUtils::PasswordWatcher(this, m_parent->pluginManager(), QStringLiteral("account-0"), QStringLiteral("smtp"));
++ m_pwWatcher = new UiUtils::PasswordWatcher(this, m_parent->pluginManager(),
++ profileName.isEmpty() ? QStringLiteral("account-0") : profileName,
++ QStringLiteral("smtp"));
+ connect(m_pwWatcher, &UiUtils::PasswordWatcher::stateChanged, this, &OutgoingPage::updateWidgets);
+ connect(m_pwWatcher, &UiUtils::PasswordWatcher::savingFailed, this, &OutgoingPage::saved);
+ connect(m_pwWatcher, &UiUtils::PasswordWatcher::savingDone, this, &OutgoingPage::saved);
+--
+GitLab
+
diff --git a/user/trojita/segfault-sorting-mailboxes.patch b/user/trojita/segfault-sorting-mailboxes.patch
new file mode 100644
index 000000000..833110983
--- /dev/null
+++ b/user/trojita/segfault-sorting-mailboxes.patch
@@ -0,0 +1,72 @@
+From d4e01b6b2cf476f4892b24bdeaae67f5b9ed2ee2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jan=20Kundr=C3=A1t?= <jkt@kde.org>
+Date: Tue, 1 Feb 2022 21:04:14 +0100
+Subject: [PATCH] MailboxNameComparator: implement "less than", not "less or
+ equal"
+
+This comparator is used for "natural order" sorting of mailboxes. The
+usual way of sorting is via a functor which satisfies the Compare [1]
+C++ named requirement, which is effectively a "less than" operation.
+This code implemented a less-than-or-equal, which means that it was not
+usable for `std::sort` which would segfault:
+
+ 0x00007ffff354a35d in __dynamic_cast () from /nix/store/b0p7nvkwxr65q016zsqicrd4bcg5bv1s-gcc-10.3.0-lib/lib/libstdc++.so.6
+ (gdb) bt
+ #0 0x00007ffff354a35d in __dynamic_cast () from /nix/store/b0p7nvkwxr65q016zsqicrd4bcg5bv1s-gcc-10.3.0-lib/lib/libstdc++.so.6
+ #1 0x00000000005d316c in (anonymous namespace)::MailboxNameComparator (a=0x520041004d005c, b=0x12ac740) at /home/jkt/work/prog/trojita/src/Imap/Model/Model.cpp:74
+ #2 0x00000000005e1d46 in __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(Imap::Mailbox::TreeItem const*, Imap::Mailbox::TreeItem const*)>::operator()<QTypedArrayData<Imap::Mailbox::TreeItem*>::iterator, QTypedArrayData<Imap::Mailbox::TreeItem*>::iterator> (__it2=..., __it1=..., this=<synthetic pointer>) at /nix/store/v819nrv8d33ns36gm4v9vqydq1v95axi-gcc-10.3.0/include/c++/10.3.0/bits/stl_algo.h:1909
+ #3 std::__unguarded_partition<QTypedArrayData<Imap::Mailbox::TreeItem*>::iterator, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(Imap::Mailbox::TreeItem const*, Imap::Mailbox::TreeItem const*)> > (__comp=..., __pivot=..., __last=..., __first=...)
+ at /nix/store/v819nrv8d33ns36gm4v9vqydq1v95axi-gcc-10.3.0/include/c++/10.3.0/bits/stl_algo.h:1909
+ #4 std::__unguarded_partition_pivot<QTypedArrayData<Imap::Mailbox::TreeItem*>::iterator, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(Imap::Mailbox::TreeItem const*, Imap::Mailbox::TreeItem const*)> > (__comp=..., __last=..., __first=...)
+ at /nix/store/v819nrv8d33ns36gm4v9vqydq1v95axi-gcc-10.3.0/include/c++/10.3.0/bits/stl_algo.h:1931
+ #5 std::__introsort_loop<QTypedArrayData<Imap::Mailbox::TreeItem*>::iterator, int, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(Imap::Mailbox::TreeItem const*, Imap::Mailbox::TreeItem const*)> > (__first=..., __last=...,
+ __depth_limit=<optimized out>, __depth_limit@entry=9, __comp=__comp@entry=...) at /nix/store/v819nrv8d33ns36gm4v9vqydq1v95axi-gcc-10.3.0/include/c++/10.3.0/bits/stl_algo.h:1962
+ #6 0x00000000005e1db8 in std::__introsort_loop<QTypedArrayData<Imap::Mailbox::TreeItem*>::iterator, int, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(Imap::Mailbox::TreeItem const*, Imap::Mailbox::TreeItem const*)> > (__first=..., __last=...,
+ __depth_limit=<optimized out>, __depth_limit@entry=10, __comp=__comp@entry=...) at /nix/store/v819nrv8d33ns36gm4v9vqydq1v95axi-gcc-10.3.0/include/c++/10.3.0/bits/stl_algo.h:1964
+ #7 0x00000000005dd6fd in std::__sort<QTypedArrayData<Imap::Mailbox::TreeItem*>::iterator, __gnu_cxx::__ops::_Iter_comp_iter<bool (*)(Imap::Mailbox::TreeItem const*, Imap::Mailbox::TreeItem const*)> > (__comp=..., __last=..., __first=...)
+ at /nix/store/v819nrv8d33ns36gm4v9vqydq1v95axi-gcc-10.3.0/include/c++/10.3.0/bits/stl_algo.h:1979
+ #8 std::sort<QTypedArrayData<Imap::Mailbox::TreeItem*>::iterator, bool (*)(Imap::Mailbox::TreeItem const*, Imap::Mailbox::TreeItem const*)> (__first=..., __last=..., __first=..., __last=...,
+ __comp=0x5d3130 <(anonymous namespace)::MailboxNameComparator(Imap::Mailbox::TreeItem const*, Imap::Mailbox::TreeItem const*)>) at /nix/store/v819nrv8d33ns36gm4v9vqydq1v95axi-gcc-10.3.0/include/c++/10.3.0/bits/stl_algo.h:4899
+ #9 Imap::Mailbox::Model::finalizeList (this=0xbfbdb0, parser=<optimized out>, mailboxPtr=0x7ffffffe4438) at /home/jkt/work/prog/trojita/src/Imap/Model/Model.cpp:352
+ #10 0x000000000061d512 in Imap::Mailbox::ListChildMailboxesTask::handleStateHelper (this=0x124d790, resp=0x124e840) at /home/jkt/work/prog/trojita/src/Imap/Tasks/ListChildMailboxesTask.cpp:96
+ #11 0x00000000005deadc in Imap::Mailbox::Model::responseReceived (this=0xbfbdb0, it=...) at /home/jkt/work/prog/trojita/src/Imap/Model/Model.cpp:220
+ #12 0x00007ffff396918c in QObject::event(QEvent*) () from /nix/store/fwc2c76yqyyj0pj6abvsyzlgd2r1rvr0-qtbase-5.15.3/lib/libQt5Core.so.5
+ #13 0x00007ffff441776f in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /nix/store/fwc2c76yqyyj0pj6abvsyzlgd2r1rvr0-qtbase-5.15.3/lib/libQt5Widgets.so.5
+ #14 0x00007ffff393c40a in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /nix/store/fwc2c76yqyyj0pj6abvsyzlgd2r1rvr0-qtbase-5.15.3/lib/libQt5Core.so.5
+ #15 0x00007ffff393f451 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /nix/store/fwc2c76yqyyj0pj6abvsyzlgd2r1rvr0-qtbase-5.15.3/lib/libQt5Core.so.5
+ #16 0x00007ffff3994d93 in ?? () from /nix/store/fwc2c76yqyyj0pj6abvsyzlgd2r1rvr0-qtbase-5.15.3/lib/libQt5Core.so.5
+ #17 0x00007ffff1883aab in g_main_context_dispatch () from /nix/store/1qiv23m1q9fk18rwkzrk29ciz87030lp-glib-2.70.1/lib/libglib-2.0.so.0
+ #18 0x00007ffff1883d58 in g_main_context_iterate.constprop () from /nix/store/1qiv23m1q9fk18rwkzrk29ciz87030lp-glib-2.70.1/lib/libglib-2.0.so.0
+ #19 0x00007ffff1883e0f in g_main_context_iteration () from /nix/store/1qiv23m1q9fk18rwkzrk29ciz87030lp-glib-2.70.1/lib/libglib-2.0.so.0
+ #20 0x00007ffff39943f0 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /nix/store/fwc2c76yqyyj0pj6abvsyzlgd2r1rvr0-qtbase-5.15.3/lib/libQt5Core.so.5
+ #21 0x00007ffff393adab in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /nix/store/fwc2c76yqyyj0pj6abvsyzlgd2r1rvr0-qtbase-5.15.3/lib/libQt5Core.so.5
+ #22 0x00007ffff39433a0 in QCoreApplication::exec() () from /nix/store/fwc2c76yqyyj0pj6abvsyzlgd2r1rvr0-qtbase-5.15.3/lib/libQt5Core.so.5
+ #23 0x000000000047fafb in main (argc=<optimized out>, argv=0x7ffffffe4b80) at /home/jkt/work/prog/trojita/src/Gui/main.cpp:205
+
+[1] https://en.cppreference.com/w/cpp/named_req/Compare
+
+Change-Id: Ib88e377fafc94de7160c63832c8115756d360732
+---
+ src/Imap/Model/Model.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/Imap/Model/Model.cpp b/src/Imap/Model/Model.cpp
+index 79e34658..1d539e22 100644
+--- a/src/Imap/Model/Model.cpp
++++ b/src/Imap/Model/Model.cpp
+@@ -76,10 +76,10 @@ bool MailboxNameComparator(const TreeItem *const a, const TreeItem *const b)
+ const TreeItemMailbox *const mailboxB = dynamic_cast<const TreeItemMailbox *const>(b);
+
+ if (mailboxA->mailbox() == QLatin1String("INBOX"))
+- return true;
++ return mailboxB->mailbox() != QLatin1String("INBOX");
+ if (mailboxB->mailbox() == QLatin1String("INBOX"))
+ return false;
+- return mailboxA->mailbox().compare(mailboxB->mailbox(), Qt::CaseInsensitive) < 1;
++ return mailboxA->mailbox().compare(mailboxB->mailbox(), Qt::CaseInsensitive) < 0;
+ }
+
+ bool uidComparator(const TreeItem *const item, const uint uid)
+--
+GitLab
+
diff --git a/user/trojita/signedness.patch b/user/trojita/signedness.patch
new file mode 100644
index 000000000..693baf67a
--- /dev/null
+++ b/user/trojita/signedness.patch
@@ -0,0 +1,71 @@
+From e4478df9389894b6498ffe252310cdecd1e58904 Mon Sep 17 00:00:00 2001
+From: Vicente Bergas <vicencb@gmail.com>
+Date: Sat, 3 Feb 2018 19:02:38 +0100
+Subject: [PATCH] Fix signed vs. unsigned math on ARM
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+On ARM systems, `char` is not signed, but unsigned, and therefore code
+like qMin(-11, ...) doesn't really do a correct thing.
+
+Change-Id: I1e03570c8a809cd6d8c699b3bc138a6bd05ce53c
+Signed-off-by: Jan Kundrát <jkt@kde.org>
+---
+ src/Gui/Spinner.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/Gui/Spinner.h b/src/Gui/Spinner.h
+index b8b06b85..2f60ce45 100644
+--- a/src/Gui/Spinner.h
++++ b/src/Gui/Spinner.h
+@@ -82,8 +82,8 @@ private slots:
+ void updateAncestors();
+ void updateGeometry();
+ private:
+- uchar m_step;
+- char m_fadeStep;
++ int m_step;
++ int m_fadeStep;
+ int m_timer;
+ QTimer *m_startTimer;
+ QList<QWidget*> m_ancestors;
+--
+GitLab
+
+From 2202821fad977923d2f69c044ad09b3dc46c804a Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jan=20Kundr=C3=A1t?= <jkt@kde.org>
+Date: Fri, 24 Aug 2018 13:44:34 +0200
+Subject: [PATCH] Fix comparison of integer expressions of different signedness
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+ src/Imap/Model/ModelTest/modeltest.cpp: In member function ‘void ModelTest::data()’:
+ src/Imap/Model/ModelTest/modeltest.cpp:422:27: error: comparison of integer expressions of different signedness: ‘int’ and ‘QFlags<Qt::AlignmentFlag>::Int’ {aka ‘unsigned int’} [-Werror=sign-compare]
+ Q_ASSERT(alignment == (alignment & (Qt::AlignHorizontal_Mask | Qt::AlignVertical_Mask)));
+ ~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Change-Id: I7007e1c0cba20b31d76f6426548ad4fb43480017
+---
+ src/Imap/Model/ModelTest/modeltest.cpp | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/Imap/Model/ModelTest/modeltest.cpp b/src/Imap/Model/ModelTest/modeltest.cpp
+index 24046a24..d2c8fcac 100644
+--- a/src/Imap/Model/ModelTest/modeltest.cpp
++++ b/src/Imap/Model/ModelTest/modeltest.cpp
+@@ -418,8 +418,8 @@ void ModelTest::data()
+ // Check that the alignment is one we know about
+ QVariant textAlignmentVariant = model->data(model->index(0, 0), Qt::TextAlignmentRole);
+ if (textAlignmentVariant.isValid()) {
+- int alignment = textAlignmentVariant.toInt();
+- Q_ASSERT(alignment == (alignment & (Qt::AlignHorizontal_Mask | Qt::AlignVertical_Mask)));
++ unsigned int alignment = textAlignmentVariant.toUInt();
++ Q_ASSERT(alignment == (alignment & (Qt::AlignHorizontal_Mask | Qt::AlignVertical_Mask)));
+ }
+
+ // General Purpose roles that should return a QColor
+--
+GitLab
+
diff --git a/user/trojita/statusbar-fix.patch b/user/trojita/statusbar-fix.patch
new file mode 100644
index 000000000..4eb556465
--- /dev/null
+++ b/user/trojita/statusbar-fix.patch
@@ -0,0 +1,167 @@
+From 654188c2806c376a4c2b9cdf44e48172c2255a18 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jan=20Kundr=C3=A1t?= <jkt@kde.org>
+Date: Mon, 3 Oct 2016 22:09:17 +0200
+Subject: [PATCH] GUI: Prevent excessive newlines in the PartStatusWidget
+ crypto messages
+
+Previously, there were extra newlines in certain scenarios. The long
+text should never begin with a stray newline.
+
+This might make it easier to see the linked bug.
+
+Change-Id: I72188b08f1562b6cdd30849f9958fdcc9f0504b7
+CCBUG: 369832
+---
+ src/Cryptography/GpgMe++.cpp | 65 ++++++++++++++++++++++++------------
+ 1 file changed, 44 insertions(+), 21 deletions(-)
+
+diff --git a/src/Cryptography/GpgMe++.cpp b/src/Cryptography/GpgMe++.cpp
+index 54275f73..e2fcdfe7 100644
+--- a/src/Cryptography/GpgMe++.cpp
++++ b/src/Cryptography/GpgMe++.cpp
+@@ -290,6 +290,8 @@ QVariant GpgMePart::data(int role) const
+ }
+ }
+
++#define ENSURE_LINE_LF(X) do { if (!X.isEmpty()) { X += LF; } } while (0)
++
+ void GpgMePart::extractSignatureStatus(std::shared_ptr<GpgME::Context> ctx, const GpgME::Signature &sig,
+ const std::vector<std::string> messageUids, const bool wasSigned, const bool wasEncrypted,
+ bool &sigOkDisregardingTrust, bool &sigValidVerified,
+@@ -447,30 +449,38 @@ void GpgMePart::extractSignatureStatus(std::shared_ptr<GpgME::Context> ctx, cons
+
+ // extract the individual error bits
+ if (sig.summary() & GpgME::Signature::KeyRevoked) {
+- longStatus += LF + tr("The key or at least one certificate has been revoked.");
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("The key or at least one certificate has been revoked.");
+ }
+ if (sig.summary() & GpgME::Signature::KeyExpired) {
+ // FIXME: how to get the expiration date?
+- longStatus += LF + tr("The key or one of the certificates has expired.");
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("The key or one of the certificates has expired.");
+ }
+ if (sig.summary() & GpgME::Signature::SigExpired) {
+- longStatus += LF + tr("Signature expired on %1.")
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("Signature expired on %1.")
+ .arg(QDateTime::fromTime_t(sig.expirationTime()).toString(Qt::DefaultLocaleShortDate));
+ }
+ if (sig.summary() & GpgME::Signature::KeyMissing) {
+- longStatus += LF + tr("Can't verify due to a missing key or certificate.");
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("Can't verify due to a missing key or certificate.");
+ }
+ if (sig.summary() & GpgME::Signature::CrlMissing) {
+- longStatus += LF + tr("The CRL (or an equivalent mechanism) is not available.");
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("The CRL (or an equivalent mechanism) is not available.");
+ }
+ if (sig.summary() & GpgME::Signature::CrlTooOld) {
+- longStatus += LF + tr("Available CRL is too old.");
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("Available CRL is too old.");
+ }
+ if (sig.summary() & GpgME::Signature::BadPolicy) {
+- longStatus += LF + tr("A policy requirement was not met.");
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("A policy requirement was not met.");
+ }
+ if (sig.summary() & GpgME::Signature::SysError) {
+- longStatus += LF + tr("A system error occurred. %1")
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("A system error occurred. %1")
+ .arg(QString::fromUtf8(sig.status().asString()));
+ }
+
+@@ -478,22 +488,28 @@ void GpgMePart::extractSignatureStatus(std::shared_ptr<GpgME::Context> ctx, cons
+ // Extract signature validity
+ switch (sig.validity()) {
+ case GpgME::Signature::Undefined:
+- longStatus += LF + tr("Signature validity is undefined.");
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("Signature validity is undefined.");
+ break;
+ case GpgME::Signature::Never:
+- longStatus += LF + tr("Signature validity is never to be trusted.");
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("Signature validity is never to be trusted.");
+ break;
+ case GpgME::Signature::Marginal:
+- longStatus += LF + tr("Signature validity is marginal.");
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("Signature validity is marginal.");
+ break;
+ case GpgME::Signature::Full:
+- longStatus += LF + tr("Signature validity is full.");
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("Signature validity is full.");
+ break;
+ case GpgME::Signature::Ultimate:
+- longStatus += LF + tr("Signature validity is ultimate.");
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("Signature validity is ultimate.");
+ break;
+ case GpgME::Signature::Unknown:
+- longStatus += LF + tr("Signature validity is unknown.");
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("Signature validity is unknown.");
+ break;
+ }
+ }
+@@ -844,7 +860,8 @@ void GpgMeEncrypted::handleDataChanged(const QModelIndex &topLeft, const QModelI
+ if (tldr.isEmpty()) {
+ tldr = tr("Broken encrypted message");
+ }
+- longStatus += LF + tr("Decryption error: %1").arg(QString::fromUtf8(combinedResult.first.error().asString()));
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("Decryption error: %1").arg(QString::fromUtf8(combinedResult.first.error().asString()));
+ icon = QStringLiteral("emblem-error");
+ } else if (tldr.isEmpty()) {
+ tldr = tr("Encrypted message");
+@@ -852,29 +869,35 @@ void GpgMeEncrypted::handleDataChanged(const QModelIndex &topLeft, const QModelI
+ }
+
+ if (combinedResult.first.isWrongKeyUsage()) {
+- longStatus += LF + tr("Wrong key usage, not for encryption");
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("Wrong key usage, not for encryption");
+ }
+ if (auto msg = combinedResult.first.unsupportedAlgorithm()) {
+- longStatus += LF + tr("Unsupported algorithm: %1").arg(QString::fromUtf8(msg));
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("Unsupported algorithm: %1").arg(QString::fromUtf8(msg));
+ }
+
+ for (const auto &recipient: combinedResult.first.recipients()) {
+ GpgME::Error keyError;
+ auto key = ctx->key(recipient.keyID(), keyError, false);
+ if (keyError) {
+- longStatus += LF + tr("Cannot extract recipient %1: %2")
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("Cannot extract recipient %1: %2")
+ .arg(QString::fromUtf8(recipient.keyID()), QString::fromUtf8(keyError.asString()));
+ } else {
+ if (key.numUserIDs()) {
+- longStatus += LF + tr("Encrypted to %1 (%2)")
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("Encrypted to %1 (%2)")
+ .arg(QString::fromUtf8(key.userID(0).id()), QString::fromUtf8(recipient.keyID()));
+ } else {
+- longStatus += LF + tr("Encrypted to %1").arg(QString::fromUtf8(recipient.keyID()));
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("Encrypted to %1").arg(QString::fromUtf8(recipient.keyID()));
+ }
+ }
+ }
+ if (auto fname = combinedResult.first.fileName()) {
+- longStatus += LF + tr("Original filename: %1").arg(QString::fromUtf8(fname));
++ ENSURE_LINE_LF(longStatus);
++ longStatus += tr("Original filename: %1").arg(QString::fromUtf8(fname));
+ }
+
+ if (p) {
+--
+GitLab
+
diff --git a/user/trojita/testfix.patch b/user/trojita/testfix.patch
new file mode 100644
index 000000000..efe36d053
--- /dev/null
+++ b/user/trojita/testfix.patch
@@ -0,0 +1,85 @@
+Required for plaintext-upgrade-attack.patch to run successfully.
+
+From 91d19cb8530cb8df6ec0ee0580abcd98f1957395 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Jan=20Kundr=C3=A1t?= <jkt@kde.org>
+Date: Mon, 5 Sep 2016 12:47:28 +0200
+Subject: [PATCH] tests: fix more memleaks
+
+There's some progress, but still plenty of stuff to do:
+
+-SUMMARY: AddressSanitizer: 77490 byte(s) leaked in 1010 allocation(s).
++SUMMARY: AddressSanitizer: 7720 byte(s) leaked in 95 allocation(s).
+
+Change-Id: I133fda902a9bd3f9fe697d7ffe8c57a159c887d8
+---
+ tests/Imap/test_Imap_Tasks_OpenConnection.cpp | 16 ++++++++--------
+ tests/Imap/test_Imap_Tasks_OpenConnection.h | 14 +++++++-------
+ 2 files changed, 15 insertions(+), 15 deletions(-)
+
+diff --git a/tests/Imap/test_Imap_Tasks_OpenConnection.cpp b/tests/Imap/test_Imap_Tasks_OpenConnection.cpp
+index b3a95636..c40297ab 100644
+--- a/tests/Imap/test_Imap_Tasks_OpenConnection.cpp
++++ b/tests/Imap/test_Imap_Tasks_OpenConnection.cpp
+@@ -35,12 +35,11 @@ void ImapModelOpenConnectionTest::initTestCase()
+ {
+ LibMailboxSync::initTestCase();
+ qRegisterMetaType<Imap::Mailbox::ImapTask*>();
+- completedSpy = 0;
+- m_enableAutoLogin = true;
+ }
+
+ void ImapModelOpenConnectionTest::init()
+ {
++ m_enableAutoLogin = true;
+ reinit(TlsRequired::No);
+ }
+
+@@ -56,13 +55,14 @@ void ImapModelOpenConnectionTest::reinit(const TlsRequired tlsRequired)
+ connect(model, &Imap::Mailbox::Model::needsSslDecision, this, &ImapModelOpenConnectionTest::acceptSsl, Qt::QueuedConnection);
+ LibMailboxSync::setModelNetworkPolicy(model, Imap::Mailbox::NETWORK_ONLINE);
+ QCoreApplication::processEvents();
++ delete task;
+ task = new Imap::Mailbox::OpenConnectionTask(model);
+- completedSpy = new QSignalSpy(task, SIGNAL(completed(Imap::Mailbox::ImapTask*)));
+- failedSpy = new QSignalSpy(task, SIGNAL(failed(QString)));
+- authSpy = new QSignalSpy(model, SIGNAL(authRequested()));
+- connErrorSpy = new QSignalSpy(model, SIGNAL(imapError(QString)));
+- startTlsUpgradeSpy = new QSignalSpy(model, SIGNAL(requireStartTlsInFuture()));
+- authErrorSpy = new QSignalSpy(model, SIGNAL(imapAuthErrorChanged(const QString&)));
++ completedSpy.reset(new QSignalSpy(task, SIGNAL(completed(Imap::Mailbox::ImapTask*))));
++ failedSpy.reset(new QSignalSpy(task, SIGNAL(failed(QString))));
++ authSpy.reset(new QSignalSpy(model, SIGNAL(authRequested())));
++ connErrorSpy.reset(new QSignalSpy(model, SIGNAL(imapError(QString))));
++ startTlsUpgradeSpy.reset(new QSignalSpy(model, SIGNAL(requireStartTlsInFuture())));
++ authErrorSpy.reset(new QSignalSpy(model, SIGNAL(imapAuthErrorChanged(const QString&))));
+ t.reset();
+ }
+
+diff --git a/tests/Imap/test_Imap_Tasks_OpenConnection.h b/tests/Imap/test_Imap_Tasks_OpenConnection.h
+index 30f531a2..4df65c05 100644
+--- a/tests/Imap/test_Imap_Tasks_OpenConnection.h
++++ b/tests/Imap/test_Imap_Tasks_OpenConnection.h
+@@ -78,13 +78,13 @@ protected:
+ void reinit(const TlsRequired tlsRequired = TlsRequired::No);
+
+ private:
+- Imap::Mailbox::OpenConnectionTask* task;
+- QSignalSpy* completedSpy;
+- QSignalSpy* failedSpy;
+- QSignalSpy* authSpy;
+- QSignalSpy *connErrorSpy;
+- QSignalSpy *startTlsUpgradeSpy;
+- QSignalSpy *authErrorSpy;
++ QPointer<Imap::Mailbox::OpenConnectionTask> task;
++ std::unique_ptr<QSignalSpy> completedSpy;
++ std::unique_ptr<QSignalSpy> failedSpy;
++ std::unique_ptr<QSignalSpy> authSpy;
++ std::unique_ptr<QSignalSpy> connErrorSpy;
++ std::unique_ptr<QSignalSpy> startTlsUpgradeSpy;
++ std::unique_ptr<QSignalSpy> authErrorSpy;
+
+ bool m_enableAutoLogin;
+ };
+--
+GitLab
+
diff --git a/user/ttc-iosevka/APKBUILD b/user/ttc-iosevka/APKBUILD
index 1003816b7..11366476e 100644
--- a/user/ttc-iosevka/APKBUILD
+++ b/user/ttc-iosevka/APKBUILD
@@ -1,10 +1,10 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ttc-iosevka
-pkgver=2.2.0
+pkgver=2.3.3
pkgrel=0
pkgdesc="Monospace sans-serif typeface"
-url="http://typeof.net/Iosevka/"
+url="https://typeof.net/Iosevka/"
arch="noarch"
options="!check" # No test suite.
license="OFL-1.1"
@@ -13,12 +13,10 @@ makedepends=""
subpackages=""
source="https://github.com/be5invis/Iosevka/releases/download/v$pkgver/ttc-iosevka-$pkgver.zip
https://github.com/be5invis/Iosevka/releases/download/v$pkgver/ttc-iosevka-slab-$pkgver.zip"
-builddir="$srcdir"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF *.ttc
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF "$srcdir"/*.ttc
}
-sha512sums="2124033ef1685bac662d3c30a9930c050f285e4ffd8133ea7a76aaa165cc0be96913545dd21c43a87e330ef4150f69439d742f3f016ac95b2837515bc2f1eba5 ttc-iosevka-2.2.0.zip
-1905f564ef2fe4f32e079b9aec10d4ff184c93ed1d1e691e5e7c7f0ba6656936116239ca73899a7406836e628deb6dec2483a937c9093c2a7364380dccb872b2 ttc-iosevka-slab-2.2.0.zip"
+sha512sums="8943c1f8018469091d56adb731337c194e3b0c348a6c8b06a61f53410220aa505aeb03d6afc207c056a31f8e138c326b67595d79475d162bb172f8a812a3fbdb ttc-iosevka-2.3.3.zip
+5caea2c5ed7729b3939b7470ad33b9ba0c068ea22e2db36ad46e3fd8cb78c22d917fb083a0efd672b77b12df73bfe6b75cf64742fb769e1fef036e421d4399d0 ttc-iosevka-slab-2.3.3.zip"
diff --git a/user/ttf-alee/APKBUILD b/user/ttf-alee/APKBUILD
index ffbf879a2..05d3333bc 100644
--- a/user/ttf-alee/APKBUILD
+++ b/user/ttf-alee/APKBUILD
@@ -15,8 +15,7 @@ source="http://deb.debian.org/debian/pool/main/f/fonts-alee/fonts-alee_$pkgver.t
builddir="$srcdir"/fonts-alee-$pkgver
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF *.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF "$builddir"/*.ttf
}
sha512sums="fc91a018c0757fce1b899ecf736260b96c7acc9c8ec626fb8d53f8e002d89ca23bdaf3a5712e747cfa63f53463c5471da292af715968a5612a17d7499222bc45 fonts-alee_13.3.tar.xz"
diff --git a/user/ttf-dejavu/APKBUILD b/user/ttf-dejavu/APKBUILD
index b69fefb4e..d6f53bad1 100644
--- a/user/ttf-dejavu/APKBUILD
+++ b/user/ttf-dejavu/APKBUILD
@@ -1,4 +1,4 @@
-# Maintainer:
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=ttf-dejavu
pkgver=2.37
pkgrel=0
diff --git a/user/ttf-freefont/APKBUILD b/user/ttf-freefont/APKBUILD
index d4a67e4a0..9320aadfe 100644
--- a/user/ttf-freefont/APKBUILD
+++ b/user/ttf-freefont/APKBUILD
@@ -1,4 +1,4 @@
-# Maintainer:
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=ttf-freefont
pkgver=20120503
pkgrel=1
@@ -13,11 +13,10 @@ source="https://ftp.gnu.org/gnu/freefont/freefont-ttf-$pkgver.zip"
builddir="$srcdir/freefont-$pkgver"
package() {
- cd "$builddir"
install -d "$pkgdir/usr/share/fonts/$pkgname/"
- install -m644 *.ttf "$pkgdir/usr/share/fonts/$pkgname/"
+ install -m644 "$builddir"/*.ttf "$pkgdir/usr/share/fonts/$pkgname/"
# Licensing exception is discussed in README in pkgver==20120503
- install -Dm644 README "$pkgdir/usr/share/licenses/$pkgname/README"
+ install -Dm644 "$builddir"/README "$pkgdir/usr/share/licenses/$pkgname/README"
}
sha512sums="dcd6f525e8f97631c6f84ab4cc2a31af4614dcdb9a4d434bd890baf18e0c2934032f2915384fc27fbecf60d259d792e48f52d357b07e3ed2616d3c8c3544268e freefont-ttf-20120503.zip"
diff --git a/user/ttf-hack/APKBUILD b/user/ttf-hack/APKBUILD
index 433d1c1f4..d5fbf1b07 100644
--- a/user/ttf-hack/APKBUILD
+++ b/user/ttf-hack/APKBUILD
@@ -11,12 +11,10 @@ license="OFL-2.0"
depends=""
makedepends=""
source="https://github.com/source-foundry/Hack/releases/download/v$pkgver/Hack-v$pkgver-ttf.zip"
-builddir="$srcdir"/ttf
package() {
- cd "$builddir"
for variant in Regular Bold BoldItalic Italic; do
- install -m644 -D Hack-$variant.ttf \
+ install -m644 -D "$srcdir"/ttf/Hack-$variant.ttf \
"$pkgdir"/usr/share/fonts/truetype/Hack-$variant.ttf
done
}
diff --git a/user/ttf-jetbrains-mono/APKBUILD b/user/ttf-jetbrains-mono/APKBUILD
new file mode 100644
index 000000000..54857a62a
--- /dev/null
+++ b/user/ttf-jetbrains-mono/APKBUILD
@@ -0,0 +1,25 @@
+# Contributor: Jonas Vautherin <jonas.vautherin@protonmail.ch>
+# Maintainer: Jonas Vautherin <jonas.vautherin@protonmail.ch>
+pkgname=ttf-jetbrains-mono
+pkgver=1.0.6
+pkgrel=0
+pkgdesc="A typeface for developers"
+url="https://www.jetbrains.com/lp/mono"
+arch="noarch"
+options="!check" # No test suite
+license="Apache-2.0"
+depends="fontconfig"
+makedepends=""
+source="https://github.com/JetBrains/JetBrainsMono/releases/download/v${pkgver}/JetBrainsMono-${pkgver}.zip"
+builddir="$srcdir/JetBrainsMono-$pkgver"
+
+package() {
+ mkdir -p "$pkgdir"/usr/share/fonts/X11/TTF/${pkgname#*-}
+
+ cd ttf
+ for i in *.ttf; do
+ install -Dm644 "$i" "$pkgdir"/usr/share/fonts/X11/TTF/${pkgname#*-}
+ done
+}
+
+sha512sums="c7d980f8aa16f0773510d71c1b96bdf0d6adc73bef188a50b789517eb4c5eae98fa4feffc0d75f504a31b913d5531f03a709cb87584171f37af662e3c88e4561 JetBrainsMono-1.0.6.zip"
diff --git a/user/ttf-noto/APKBUILD b/user/ttf-noto/APKBUILD
index 21c83d972..54e7c3e9f 100644
--- a/user/ttf-noto/APKBUILD
+++ b/user/ttf-noto/APKBUILD
@@ -1,8 +1,9 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=ttf-noto
-pkgver=20170403
-pkgrel=2
+pkgver=20220420
+_commit=c8729a9e61b2a54a9d2b4c61a82d4d93213bd6e3
+pkgrel=1
pkgdesc="Noto font family"
url="https://www.google.com/get/noto/"
arch="noarch"
@@ -12,22 +13,39 @@ depends="fontconfig"
makedepends=""
# added fontconfig configuration from:
# https://github.com/bohoomil/fontconfig-ultimate/tree/master/fontconfig_patches/fonts-settings
-source="https://dev.gentoo.org/~floppym/dist/noto-$pkgver.tar.xz
+source="noto-${pkgver}.tar.gz::https://github.com/googlefonts/noto-fonts/archive/${_commit}.tar.gz
40-noto-arabic.conf
45-noto-sans.conf
45-noto-serif.conf
90-tt-noto-sans.conf
90-tt-noto-serif.conf"
-builddir="$srcdir"/noto-$pkgver
+builddir="$srcdir"/noto-fonts-$_commit
package() {
mkdir -p "$pkgdir"/usr/share/fonts/$pkgname/
mkdir -p "$pkgdir"/etc/fonts/conf.d/
- cp "$builddir"/*.ttf "$pkgdir"/usr/share/fonts/$pkgname/
+
+ ##
+ # FIXME: some fonts have duplicate names; we copy
+ # new files (and skip ones that may already exist)
+ #
+ # $ find . -type f -name "*.ttf" | cut -d/ -f3 | sort | uniq -d | while read k; do find . -type f -name "${k}"; done | sort
+ # ./NotoSansTifinagh/NotoSansTifinaghAPT-Regular.ttf
+ # ./NotoSansTifinagh/NotoSansTifinaghAdrar-Regular.ttf
+ # ...
+ # ./NotoSansTifinaghSIL/NotoSansTifinaghSIL-Regular.ttf
+ # ./NotoSansTifinaghTawellemmet/NotoSansTifinaghTawellemmet-Regular.ttf
+ #
+ # Avoid using 'cp -n'. See #990 for more information.
+ find "$builddir"/hinted/ttf/ -name "*.ttf" | sort | while read k; do
+ if ! test -f "$pkgdir"/usr/share/fonts/$pkgname/${k##*/}; then
+ cp -v ${k} "$pkgdir"/usr/share/fonts/$pkgname/;
+ fi
+ done
cp "$srcdir"/*.conf "$pkgdir"/etc/fonts/conf.d/
}
-sha512sums="f8f1414b5b6f793e86ef3cc6a6320c4545f079b337c7672cb8cccc3c50d21d353d81557da4a555cdb6524c79be3e4c167f7d5aac102c38d64926f3b1887ca7f3 noto-20170403.tar.xz
+sha512sums="8d9a2b32bb49e4dc2e341141322856bd7da337de7176ecbb04a742e483f00d283afa33e2c601d0ee78fb4677166affdf9ac83083bda9d5b82e495a8986ece8c0 noto-20220420.tar.gz
47396e7a4e5dfb38d3df6dff0b4584757cc132f393d3410463eefc3dbb5f2af592a6b07a4c098d8c594be03f23e4eb84b76b672245fe0cea816927cf535ea270 40-noto-arabic.conf
748dfecbc3ad5c3750764e6ae889bbc4e614885237bb91ece138d2dc5014fd41ea6361b32982cfa4e76c7c092e0b93f90cccd0b92acbd408b7c302c44c1523e6 45-noto-sans.conf
5059295a1c36c4ec4aae61443221ee74876315127895da0773e4feb77e70cfc4b7923dde8f6510d6cf9de019082e15f1f4fd4b53f0bce4d2a681541f2de587df 45-noto-serif.conf
diff --git a/user/ttf-sinhala-lklug/APKBUILD b/user/ttf-sinhala-lklug/APKBUILD
index c487c96f4..dae2dfe1e 100644
--- a/user/ttf-sinhala-lklug/APKBUILD
+++ b/user/ttf-sinhala-lklug/APKBUILD
@@ -14,8 +14,8 @@ subpackages=""
source="http://sinhala.sourceforge.net/files/ttf-sinhala-lklug-$pkgver.tar.gz"
package() {
- cd "$builddir"
- install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ lklug.ttf
+ install -m644 -Dt "$pkgdir"/usr/share/fonts/X11/TTF/ \
+ "$builddir"/lklug.ttf
}
sha512sums="d1b1459981f1d80acd17aa09a2171e17ad246d98e00035c9592a6c93d89423ccb20f440c3eaccb21b9bb5fae2ac8eca5458715fe8a60e7294f75f9fffe3417aa ttf-sinhala-lklug-0.6.tar.gz"
diff --git a/user/ttf-sudo/APKBUILD b/user/ttf-sudo/APKBUILD
index 385b2bd77..142aa4449 100644
--- a/user/ttf-sudo/APKBUILD
+++ b/user/ttf-sudo/APKBUILD
@@ -1,24 +1,23 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=ttf-sudo
-pkgver=0.37
+pkgver=1.0
pkgrel=0
pkgdesc="Monospaced font family for programming and console users"
url="https://www.kutilek.de/sudo-font/"
arch="noarch"
-options="!check" # No tests
+options="!check" # No test suite.
license="OFL-1.1"
depends="fontconfig"
-makedepends=""
-source="https://github.com/jenskutilek/sudo-font/releases/download/v$pkgver/sudo.zip"
-builddir="$srcdir/sudo"
+makedepends="unzip"
+source="$pkgname-$pkgver.tar.gz::https://github.com/jenskutilek/sudo-font/archive/v${pkgver}.tar.gz"
+builddir="$srcdir/sudo-font-$pkgver/sudo"
package() {
- cd "$builddir"
- mkdir -p "$pkgdir"/usr/share/X11/TTF/${pkgname#*-}
+ mkdir -p "$pkgdir"/usr/share/fonts/X11/TTF/${pkgname#*-}
for i in *.ttf; do
- install -Dm644 "$i" "$pkgdir"/usr/share/X11/TTF/${pkgname#*-}
+ install -Dm644 "$i" "$pkgdir"/usr/share/fonts/X11/TTF/${pkgname#*-}
done
}
-sha512sums="9622d6f6aaf6724255d62b655b9bdb0fb9b67b66aa367f10df6fec5efd1d68e6da34a8b58bee04fb1d277bb225ed7bf17491e50e27a13383c7c9a79172439b4f sudo.zip"
+sha512sums="428f190ed48e60534c805deca2f8ada90b703eeb688154c4784f29604656734a21aa6fd02f4f91f45a668fb601df2bfe221bb4015d2d6efd8875c7373adb31cd ttf-sudo-1.0.tar.gz"
diff --git a/user/ttf-terminus/APKBUILD b/user/ttf-terminus/APKBUILD
index 532c7fa36..6b6ea19dc 100644
--- a/user/ttf-terminus/APKBUILD
+++ b/user/ttf-terminus/APKBUILD
@@ -1,12 +1,12 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=ttf-terminus
-pkgver=4.47.0
+pkgver=4.49.3
pkgrel=0
pkgdesc="TrueType variant of Terminus Font"
url="https://files.ax86.net/terminus-ttf/"
arch="noarch"
-options="!check" # No tests
+options="!check" # No test suite.
license="OFL-1.1"
depends="fontconfig"
makedepends=""
@@ -14,11 +14,10 @@ source="https://files.ax86.net/terminus-ttf/files/$pkgver/terminus-ttf-$pkgver.z
builddir="$srcdir/terminus-ttf-$pkgver"
package() {
- cd "$builddir"
- mkdir -p "$pkgdir"/usr/share/X11/TTF/${pkgname#*-}
+ mkdir -p "$pkgdir"/usr/share/fonts/X11/TTF/${pkgname#*-}
for i in *.ttf; do
- install -Dm644 "$i" "$pkgdir"/usr/share/X11/TTF/${pkgname#*-}
+ install -Dm644 "$i" "$pkgdir"/usr/share/fonts/X11/TTF/${pkgname#*-}
done
}
-sha512sums="500e0aa12223f958dd0b00d1637ee26370700f937998335d54bc94528045157c5646ff6a2b35c37b44b765d36ebaf26cbf50458819debd536b29cb393833a584 terminus-ttf-4.47.0.zip"
+sha512sums="32a5e5d9fc3d068447afb5b38a6183fcc012d17bccad37116a8f508d4b1bf5a5b3d1a71cff0d750cba83fd2622c3917402358236562886456692928c62f6307f terminus-ttf-4.49.3.zip"
diff --git a/user/tumbler/APKBUILD b/user/tumbler/APKBUILD
index fbf615688..d7198fc2a 100644
--- a/user/tumbler/APKBUILD
+++ b/user/tumbler/APKBUILD
@@ -1,23 +1,21 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=tumbler
-pkgver=0.2.3
-pkgrel=1
+pkgver=4.20.0
+pkgrel=0
pkgdesc="Thumbnail generation service for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-2.0+ LGPL-2.0+"
depends="dbus"
makedepends="intltool dbus-glib-dev gdk-pixbuf-dev curl-dev freetype-dev
- libjpeg-turbo-dev libgsf-dev poppler-dev ffmpegthumbnailer-dev
- libopenraw-dev"
+ libjpeg-turbo-dev libgsf-dev libxfce4util-dev poppler-dev
+ ffmpegthumbnailer-dev libopenraw-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/xfce/tumbler/0.2/tumbler-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/xfce/tumbler/${pkgver%.*}/tumbler-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -28,13 +26,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="aefe284c3baa1d8eaf79c9bdb3cfc044ee6a1f36be34efd67541e6310aa275b5235b29f68483b7b7b5a8df699a8b3db8dc75569ec2b90253756fd6285a2e3816 tumbler-0.2.3.tar.bz2"
+sha512sums="9de43565099c61c8a5227fb69e99f432d44435e717524f71a2c8751ef67d23d0aa06ed63aec15f035fcdbb0940a9a583bb724e59d27d600814c983269b937783 tumbler-4.20.0.tar.bz2"
diff --git a/user/twm/APKBUILD b/user/twm/APKBUILD
index fad37c996..bb2f4b3da 100644
--- a/user/twm/APKBUILD
+++ b/user/twm/APKBUILD
@@ -2,7 +2,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=twm
-pkgver=1.0.10
+pkgver=1.0.12
pkgrel=0
pkgdesc="Tom's/Tab Window Manager for the X Window System"
url="https://www.X.Org"
@@ -11,12 +11,11 @@ options="!check" # No test suite.
license="MIT AND X11"
depends=""
makedepends="bison util-macros libxext-dev libx11-dev libxt-dev
- libice-dev libxmu-dev"
+ libice-dev libxmu-dev libxrandr-dev"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,8 +25,7 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="1280683fce7ebbf5670239cb1f3cee2b40612bd9850d98827e793cf8bf298bdb58e48387cab943ea6befc6f7b34da2567353c22b8eaeb8bcf1b9e303cd7e6a9e twm-1.0.10.tar.bz2"
+sha512sums="f3d68df7e06516f6b74f19181efcfd9db2479c8ea0c72c3a6ed0dc1b222405b40d81a2dea17b662955e0c1783e87d0d3eb067c3b6e7c6eed8c0d38d03d362260 twm-1.0.12.tar.xz"
diff --git a/user/tyrquake/APKBUILD b/user/tyrquake/APKBUILD
new file mode 100644
index 000000000..84a5087f8
--- /dev/null
+++ b/user/tyrquake/APKBUILD
@@ -0,0 +1,46 @@
+# Contributor: Ermine <mustela@erminea.space>
+# Maintainer: Ermine <mustela@erminea.space>
+pkgname=tyrquake
+pkgver=0.71
+pkgrel=0
+pkgdesc="SDL port of Quake"
+url="https://disenchant.net/tyrquake"
+arch="all"
+options="!check" # No test suite.
+license="GPL-2.0-only"
+makedepends="sdl2-dev imagemagick libglvnd-dev"
+install="$pkgname.pre-install"
+subpackages="$pkgname-openrc $pkgname-server"
+source="https://disenchant.net/files/engine/tyrquake-$pkgver.tar.gz
+ tyrquake.initd
+ "
+
+build() {
+ make USE_SDL=Y USE_X86_ASM=N
+}
+
+package() {
+ # no install target
+ install -m755 -D "$builddir"/bin/tyr-quake "$pkgdir"/usr/bin/tyr-quake
+ install -m755 -D "$builddir"/bin/tyr-glquake "$pkgdir"/usr/bin/tyr-glquake
+ install -m755 -D "$builddir"/bin/tyr-qwcl "$pkgdir"/usr/bin/tyr-qwcl
+ install -m755 -D "$builddir"/bin/tyr-glqwcl "$pkgdir"/usr/bin/tyr-glqwcl
+ install -m755 -D "$builddir"/bin/tyr-qwsv "$pkgdir"/usr/bin/tyr-qwsv
+
+ install -m755 -D "$srcdir"/$pkgname.initd \
+ "$pkgdir"/etc/init.d/$pkgname
+}
+
+server() {
+ pkgdesc="$pkgdesc (QuakeWorld server)"
+ mkdir -p "$subpkgdir"/usr/bin
+ mv "$pkgdir"/usr/bin/tyr-qwsv "$subpkgdir"/usr/bin/
+}
+
+openrc() {
+ default_openrc
+ install_if="openrc $pkgname-server=$pkgver-r$pkgrel"
+}
+
+sha512sums="ecceeecb43866c10c0669b4362ce2eda7a790c502764b3d644566e7637ffbde0548676c9dcea07963db0d91d83c248e3497603c0a3a2e1a12a1418a82c07179a tyrquake-0.71.tar.gz
+eff93a1df0f6492c4063332c73382f8893c8a94f26e387ecd102e32a3f6a2f154a1abedecb26ccae7c25c1356ef77cc129508e1215b8320a94c4a55cea1d4aff tyrquake.initd"
diff --git a/user/tyrquake/tyrquake.initd b/user/tyrquake/tyrquake.initd
new file mode 100644
index 000000000..25231e8d2
--- /dev/null
+++ b/user/tyrquake/tyrquake.initd
@@ -0,0 +1,14 @@
+#!/sbin/openrc-run
+
+name="tyrquake"
+description="TyrQuake QuakeWorld server"
+
+supervisor=supervise-daemon
+
+command="/usr/bin/tyr-qwsv"
+command_user="tyrquake:tyrquake"
+
+depend() {
+ need net
+ after firewall
+}
diff --git a/user/tyrquake/tyrquake.pre-install b/user/tyrquake/tyrquake.pre-install
new file mode 100644
index 000000000..73f8ebcd3
--- /dev/null
+++ b/user/tyrquake/tyrquake.pre-install
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+groupadd -r -- tyrquake 2>/dev/null
+useradd -r -M -N -s /sbin/nologin -g tyrquake -c tyrquake -- tyrquake 2>/dev/null
+
+exit 0
diff --git a/user/uchardet/APKBUILD b/user/uchardet/APKBUILD
index 08770a326..fd815f6a0 100644
--- a/user/uchardet/APKBUILD
+++ b/user/uchardet/APKBUILD
@@ -1,20 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=uchardet
-pkgver=0.0.6
+pkgver=0.0.8
pkgrel=0
pkgdesc="Universal character encoding detection library"
url="https://www.freedesktop.org/wiki/Software/uchardet/"
arch="all"
license="MPL-1.1 OR GPL-2.0+ OR LGPL-2.1+"
+depends=""
makedepends="cmake"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.freedesktop.org/software/uchardet/releases/uchardet-$pkgver.tar.xz"
-sha512sums="eceeadae060bf277e298d709856609dde32921271140dc1fb0a33c7b6e1381033fc2960d616ebbd82c92815936864d2c0743b1b5ea1b7d4a200df87df80d6de5 uchardet-0.0.6.tar.xz"
-builddir="$srcdir/uchardet-$pkgver"
+source="https://www.freedesktop.org/software/uchardet/releases/uchardet-$pkgver.tar.xz
+ no-debug-suffix.patch"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,17 +24,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
+sha512sums="4a5dcc9ff021352f3b252e103ff1475cec62c974294b264ee9243f024633c3ae44be8c7733608624066113e635f8b156ecb08c8ff87c736d04b07641eb166382 uchardet-0.0.8.tar.xz
+2e6f9d34daa6ba7dab07843368017448a17162d4d55bbc01665d00afa61a36f8b44fd6149706b806c8980632bdf33d073e0a93559d809852e18460551f330ecb no-debug-suffix.patch"
diff --git a/user/uchardet/no-debug-suffix.patch b/user/uchardet/no-debug-suffix.patch
new file mode 100644
index 000000000..f12bb565e
--- /dev/null
+++ b/user/uchardet/no-debug-suffix.patch
@@ -0,0 +1,14 @@
+diff -Nurd uchardet-0.0.7/CMakeLists.txt uchardet-0.0.7.new/CMakeLists.txt
+--- uchardet-0.0.7/CMakeLists.txt 2020-04-23 09:48:58.000000000 +0000
++++ uchardet-0.0.7.new/CMakeLists.txt 2020-06-13 08:26:38.946585352 +0000
+@@ -12,10 +12,6 @@
+ set (UCHARDET_VERSION_MINOR 0)
+ set (UCHARDET_VERSION_REVISION 7)
+
+-if (CMAKE_BUILD_TYPE MATCHES Debug)
+- set (version_suffix .debug)
+-endif (CMAKE_BUILD_TYPE MATCHES Debug)
+-
+ set (
+ UCHARDET_VERSION
+ ${UCHARDET_VERSION_MAJOR}.${UCHARDET_VERSION_MINOR}.${UCHARDET_VERSION_REVISION}${version_suffix}
diff --git a/user/ucpp/APKBUILD b/user/ucpp/APKBUILD
index 9d45b1d0a..59f118c41 100644
--- a/user/ucpp/APKBUILD
+++ b/user/ucpp/APKBUILD
@@ -14,7 +14,6 @@ subpackages="$pkgname-doc"
source="https://gitlab.com/scarabeusiv/ucpp/uploads/79f08e39c676f15ed8a59335f6c9b924/ucpp-1.3.5.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -23,7 +22,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/udisks2/50-udisks2.rules b/user/udisks2/50-udisks2.rules
new file mode 100644
index 000000000..4c6088eaf
--- /dev/null
+++ b/user/udisks2/50-udisks2.rules
@@ -0,0 +1,28 @@
+// Source: https://gist.github.com/Scrumplex/8f528c1f63b5f4bfabe14b0804adaba7
+// Original rules: https://github.com/coldfix/udiskie/wiki/Permissions
+// Changes: Added org.freedesktop.udisks2.filesystem-mount-system, as this is used by Dolphin.
+
+polkit.addRule(function(action, subject) {
+ var YES = polkit.Result.YES;
+ // NOTE: there must be a comma at the end of each line except for the last:
+ var permission = {
+ // required for udisks2:
+ "org.freedesktop.udisks2.filesystem-mount": YES,
+ "org.freedesktop.udisks2.encrypted-unlock": YES,
+ "org.freedesktop.udisks2.eject-media": YES,
+ "org.freedesktop.udisks2.power-off-drive": YES,
+ // Dolphin specific
+ "org.freedesktop.udisks2.filesystem-mount-system": YES,
+ // required for udisks2 if using another seat:
+ "org.freedesktop.udisks2.filesystem-mount-other-seat": YES,
+ "org.freedesktop.udisks2.filesystem-unmount-others": YES,
+ "org.freedesktop.udisks2.encrypted-unlock-other-seat": YES,
+ "org.freedesktop.udisks2.eject-media-other-seat": YES,
+ "org.freedesktop.udisks2.power-off-drive-other-seat": YES
+ };
+ // This is a terrible group choice, but nobody on the Horizon team wanted to
+ // give admins 'disk', which would be so much more appropriate...
+ if (subject.isInGroup("usb")) {
+ return permission[action.id];
+ }
+});
diff --git a/user/udisks2/APKBUILD b/user/udisks2/APKBUILD
index 2374ff4ea..41fc57eb4 100644
--- a/user/udisks2/APKBUILD
+++ b/user/udisks2/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=udisks2
-pkgver=2.8.2
+pkgver=2.9.0
pkgrel=0
pkgdesc="A Disk Manager"
url="https://www.freedesktop.org/wiki/Software/udisks"
@@ -13,6 +13,7 @@ depends_dev="acl-dev gobject-introspection-dev libatasmart-dev libblockdev-dev
makedepends="$depends_dev glib-dev gtk-doc intltool linux-headers"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-libs"
source="https://github.com/storaged-project/udisks/releases/download/udisks-$pkgver/udisks-$pkgver.tar.bz2
+ 50-udisks2.rules
O_CLOEXEC.patch
"
builddir="$srcdir"/udisks-$pkgver
@@ -25,8 +26,7 @@ build() {
--sysconfdir=/etc \
--mandir=/usr/share/man \
--infodir=/usr/share/info \
- --localstatedir=/var \
- --enable-compile-warnings=minimum
+ --localstatedir=/var
cp "$builddir"/data/org.freedesktop.UDisks2.policy.in \
"$builddir"/data/org.freedesktop.UDisks2.policy
make
@@ -38,6 +38,8 @@ check() {
package() {
make DESTDIR="$pkgdir" install
+ install -D -m644 "$srcdir"/50-udisks2.rules \
+ "$pkgdir"/etc/polkit-1/rules.d/50-udisks2.rules
}
libs() {
@@ -49,5 +51,6 @@ libs() {
"$subpkgdir"/usr/lib/
}
-sha512sums="dc0087ed2d3ab71dc66f63f868a6e2cd0e4e7578c40b2240739cecaffd6f50f5a2cecfc7ef7df9304e291d84ab12f59a940b9fb42b34a5a60d12061e6aaffc1a udisks-2.8.2.tar.bz2
-269ba55cc755e2a484670258bc530790691b66c9fce9479a2a17d78cff5d52dd1be89290979efd44a0ba82be665f52a356a57f2cbb67951d91fe09d4e24c2a6a O_CLOEXEC.patch"
+sha512sums="314355c9b0cc562b2359ea77137b3f2189c48e642c67cc9d9ed07048176967b67e78dfb3190dd160db2f92e8143a4f005bf2cc1aa814388a79201705e5297d0c udisks-2.9.0.tar.bz2
+e2b2cc10868ca341603c3403631b9962c9c776bf96f4ac2c764425363ffdbe1cd9c35233e568f84b276a1f6702b1ac5b9a14b4a62983067c44c433b58d1b7175 50-udisks2.rules
+4352d63458ca51b362844d60109948ebeeecdc492a93443b391c0d75b6fff0c0af5018c8a8e441fb37bffd59c734298eaa936fcb0cd4c42ac55c1298b398b1dc O_CLOEXEC.patch"
diff --git a/user/udisks2/O_CLOEXEC.patch b/user/udisks2/O_CLOEXEC.patch
index 790fc2d8b..99d3c7fcc 100644
--- a/user/udisks2/O_CLOEXEC.patch
+++ b/user/udisks2/O_CLOEXEC.patch
@@ -1,6 +1,6 @@
--- src/udiskslinuxblock.c.orig
+++ ./src/udiskslinuxblock.c
-@@ -24,6 +24,7 @@
+@@ -26,6 +26,7 @@
#include <sys/types.h>
#include <sys/mount.h>
#include <sys/stat.h>
diff --git a/user/ufw/APKBUILD b/user/ufw/APKBUILD
new file mode 100644
index 000000000..10ea2ab5e
--- /dev/null
+++ b/user/ufw/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor:
+# Maintainer:
+pkgname=ufw
+pkgver=0.36
+pkgrel=0
+pkgdesc="Uncomplicated Firewall"
+url="https://launchpad.net/ufw"
+arch="noarch"
+options="!check" # No test suite.
+license="GPL-3.0-only AND GPL-2.0-only"
+depends="python3 iptables"
+makedepends="python3-dev gettext-tiny-dev"
+subpackages="ufw-doc
+ ufw-openrc
+ "
+source="http://launchpad.net/ufw/$pkgver/$pkgver/+download/$pkgname-$pkgver.tar.gz
+ ufw-0.36-bash-completion.patch
+ ufw-0.36-move-path.patch
+
+ ufw.initd
+ ufw.confd
+ "
+
+build() {
+ python3 setup.py build
+}
+
+package() {
+ python3 setup.py install --root="$pkgdir"
+ gzip "$pkgdir"/usr/share/man/man8/ufw.8
+ gzip "$pkgdir"/usr/share/man/man8/ufw-framework.8
+ install -D -m755 "$srcdir"/ufw.initd \
+ "$pkgdir"/etc/init.d/ufw
+ install -D -m644 "$srcdir"/ufw.confd \
+ "$pkgdir"/etc/conf.d/ufw
+}
+
+sha512sums="b32d7f79f43c203149c48b090ee0d063df78fcf654344ee11066a7363e799a62b046758ffe02b8bd15121545ac2a6b61df21fe56f8b810319fe4dd562cbdadb3 ufw-0.36.tar.gz
+11a9cf4906fa0bd677e745615b3c4d663512a1d05f9c21149d09624237a88938b9ed83b8ca876dbcf9bbac41a4bf7155eba76ec32778e025f013e1ffb07e4abb ufw-0.36-bash-completion.patch
+228ed40f800b8ed4bbc217df9478c1c0be5eb1ec154abd2d3a3cd6c92902632f07ef70c3ca3f2478bfe501735a0f6f0b7fa8d8f4991fdaead4332e4c65bad0c9 ufw-0.36-move-path.patch
+f6cb7f6f7713d6f2c78c0b0254f385701f28b997931007997f0702af0dcd0d1b1bf08617dbb3abd21219c23a63ec3286e019896253ff7e9bdbb218a5bb17dd80 ufw.initd
+a010532c97b9cf83f1fb5fa707228e0542a8b109c76e5942aaf2d6552c63e033d32e39e5a6ac87cb9e2ed4c3fdbc5d03c75127e6378665e592b143bc1eda52c7 ufw.confd"
diff --git a/user/ufw/ufw-0.36-bash-completion.patch b/user/ufw/ufw-0.36-bash-completion.patch
new file mode 100644
index 000000000..927af244e
--- /dev/null
+++ b/user/ufw/ufw-0.36-bash-completion.patch
@@ -0,0 +1,16 @@
+--- a/shell-completion/bash 2018-12-14 21:25:55.000000000 +0300
++++ b/shell-completion/bash 2019-03-21 01:26:46.152181981 +0300
+@@ -57,7 +57,6 @@
+ echo "numbered verbose"
+ }
+
+-_have ufw &&
+ _ufw()
+ {
+ cur=${COMP_WORDS[COMP_CWORD]}
+@@ -91,4 +90,4 @@
+ fi
+ }
+
+-_have ufw && complete -F _ufw ufw
++complete -F _ufw ufw
diff --git a/user/ufw/ufw-0.36-move-path.patch b/user/ufw/ufw-0.36-move-path.patch
new file mode 100644
index 000000000..1ba9d117b
--- /dev/null
+++ b/user/ufw/ufw-0.36-move-path.patch
@@ -0,0 +1,174 @@
+--- a/doc/ufw-framework.8 2018-12-14 21:25:55.000000000 +0300
++++ b/doc/ufw-framework.8 2019-03-21 00:12:37.852104313 +0300
+@@ -18,7 +18,7 @@
+ parameters and configuration of IPv6. The framework consists of the following
+ files:
+ .TP
+-#STATE_PREFIX#/ufw\-init
++#SHARE_DIR#/ufw\-init
+ initialization script
+ .TP
+ #CONFIG_PREFIX#/ufw/before.init
+@@ -47,7 +47,7 @@
+
+ .SH "BOOT INITIALIZATION"
+ .PP
+-\fBufw\fR is started on boot with #STATE_PREFIX#/ufw\-init. This script is a
++\fBufw\fR is started on boot with #SHARE_DIR#/ufw\-init. This script is a
+ standard SysV style initscript used by the \fBufw\fR command and should not be
+ modified. The #CONFIG_PREFIX#/before.init and #CONFIG_PREFIX#/after.init
+ scripts may be used to perform any additional firewall configuration that is
+--- a/README 2018-07-24 16:42:38.000000000 +0300
++++ b/README 2019-03-21 00:18:18.253205303 +0300
+@@ -60,7 +60,7 @@
+ on your needs, this can be as simple as adding the following to a startup
+ script (eg rc.local for systems that use it):
+
+-# /lib/ufw/ufw-init start
++# /usr/share/ufw/ufw-init start
+
+ For systems that use SysV initscripts, an example script is provided in
+ doc/initscript.example. See doc/upstart.example for an Upstart example and
+@@ -74,10 +74,9 @@
+ /etc/defaults/ufw high level configuration
+ /etc/ufw/before[6].rules rules evaluated before UI added rules
+ /etc/ufw/after[6].rules rules evaluated after UI added rules
+-/lib/ufw/user[6].rules UI added rules (not to be modified)
++/etc/ufw/user/user[6].rules UI added rules (not to be modified)
+ /etc/ufw/sysctl.conf kernel network tunables
+-/lib/ufw/ufw-init start script
+-
++/usr/share/ufw/ufw-init start script
+
+ Usage
+ -----
+@@ -152,7 +151,7 @@
+ that the primary chains don't move around other non-ufw rules and chains. To
+ completely flush the built-in chains with this configuration, you can use:
+
+-# /lib/ufw/ufw-init flush-all
++# /usr/share/ufw/ufw-init flush-all
+
+ Alternately, ufw may also take full control of the firewall by setting
+ MANAGE_BUILTINS=yes in /etc/defaults/ufw. This will flush all the built-in
+@@ -260,7 +259,7 @@
+
+ Remote Management
+ -----------------
+-On /lib/ufw/ufw-init start and 'ufw enable' the chains are flushed, so
++On /usr/share/ufw/ufw-init start and 'ufw enable' the chains are flushed, so
+ ssh may drop. This is needed so ufw is in a consistent state. Once the ufw is
+ 'enabled' it will insert rules into the existing chains, and therefore not
+ flush the chains (but will when modifying a rule or changing the default
+@@ -303,7 +302,7 @@
+
+ Distributions
+ -------------
+-While it certainly ok to use /lib/ufw/ufw-init as the initscript for
++While it certainly ok to use /usr/share/ufw/ufw-init as the initscript for
+ ufw, this script is meant to be used by ufw itself, and therefore not
+ particularly user friendly. See doc/initscript.example for a simple
+ implementation that can be adapted to your distribution.
+--- a/setup.py 2018-12-14 21:25:55.000000000 +0300
++++ b/setup.py 2019-03-21 00:44:49.603002503 +0300
+@@ -55,7 +55,7 @@
+ return
+
+ real_confdir = os.path.join('/etc')
+- real_statedir = os.path.join('/lib', 'ufw')
++ real_statedir = os.path.join('/etc', 'ufw', 'user')
+ real_prefix = self.prefix
+ if self.home != None:
+ real_confdir = self.home + real_confdir
+@@ -132,14 +132,20 @@
+ self.copy_file('doc/ufw.8', manpage)
+ self.copy_file('doc/ufw-framework.8', manpage_f)
+
+- # Install state files and helper scripts
++ # Install state files
+ statedir = real_statedir
+ if self.root != None:
+ statedir = self.root + real_statedir
+ self.mkpath(statedir)
+
+- init_helper = os.path.join(statedir, 'ufw-init')
+- init_helper_functions = os.path.join(statedir, 'ufw-init-functions')
++ # Install helper scripts
++ sharedir = real_sharedir
++ if self.root != None:
++ sharedir = self.root + real_sharedir
++ self.mkpath(sharedir)
++
++ init_helper = os.path.join(sharedir, 'ufw-init')
++ init_helper_functions = os.path.join(sharedir, 'ufw-init-functions')
+ self.copy_file('src/ufw-init', init_helper)
+ self.copy_file('src/ufw-init-functions', init_helper_functions)
+
+@@ -220,14 +226,19 @@
+ f])
+
+ subprocess.call(["sed",
++ "-i",
++ "s%#SHARE_DIR#%" + real_sharedir + "%g",
++ f])
++
++ subprocess.call(["sed",
+ "-i",
+ "s%#VERSION#%" + ufw_version + "%g",
+ f])
+
+ # Install pristine copies of rules files
+- sharedir = real_sharedir
+- if self.root != None:
+- sharedir = self.root + real_sharedir
++ #sharedir = real_sharedir
++ #if self.root != None:
++ # sharedir = self.root + real_sharedir
+ rulesdir = os.path.join(sharedir, 'iptables')
+ self.mkpath(rulesdir)
+ for f in [ before_rules, after_rules, \
+--- a/src/backend_iptables.py 2018-12-14 21:25:55.000000000 +0300
++++ b/src/backend_iptables.py 2019-03-21 00:52:10.416829220 +0300
+@@ -38,6 +38,7 @@
+ files = {}
+ config_dir = _findpath(ufw.common.config_dir, datadir)
+ state_dir = _findpath(ufw.common.state_dir, datadir)
++ share_dir = _findpath(ufw.common.share_dir, datadir)
+
+ files['rules'] = os.path.join(config_dir, 'ufw/user.rules')
+ files['before_rules'] = os.path.join(config_dir, 'ufw/before.rules')
+@@ -45,7 +46,7 @@
+ files['rules6'] = os.path.join(config_dir, 'ufw/user6.rules')
+ files['before6_rules'] = os.path.join(config_dir, 'ufw/before6.rules')
+ files['after6_rules'] = os.path.join(config_dir, 'ufw/after6.rules')
+- files['init'] = os.path.join(state_dir, 'ufw-init')
++ files['init'] = os.path.join(share_dir, 'ufw-init')
+
+ ufw.backend.UFWBackend.__init__(self, "iptables", dryrun, files,
+ rootdir=rootdir, datadir=datadir)
+--- a/src/ufw-init 2018-03-30 22:45:52.000000000 +0300
++++ b/src/ufw-init 2019-03-21 01:06:32.720483789 +0300
+@@ -31,10 +31,11 @@
+ fi
+ export DATA_DIR="$datadir"
+
+-if [ -s "${rootdir}#STATE_PREFIX#/ufw-init-functions" ]; then
+- . "${rootdir}#STATE_PREFIX#/ufw-init-functions"
++if [ -s "${rootdir}#SHARE_DIR#/ufw-init-functions" ]; then
++ . "${rootdir}#SHARE_DIR#/ufw-init-functions"
++
+ else
+- echo "Could not find ${rootdir}#STATE_PREFIX#/ufw-init-functions (aborting)"
++ echo "Could not find ${rootdir}#SHARE_DIR#/ufw-init-functions (aborting)"
+ exit 1
+ fi
+
+@@ -83,7 +84,7 @@
+ fi
+ ;;
+ *)
+- echo "Usage: #STATE_PREFIX#/ufw-init {start|stop|restart|force-reload|force-stop|flush-all|status}"
++ echo "Usage: #SHARE_DIR#/ufw-init {start|stop|restart|force-reload|force-stop|flush-all|status}"
+ exit 1
+ ;;
+ esac
diff --git a/user/ufw/ufw.confd b/user/ufw/ufw.confd
new file mode 100644
index 000000000..900d3bf67
--- /dev/null
+++ b/user/ufw/ufw.confd
@@ -0,0 +1,5 @@
+# If equals to "yes", warnings that firewall is disabled
+# (using `ufw disable') will be suppressed and the service
+# will be considered started.
+# Default if unset or another value is "no".
+ufw_nonfatal_if_disabled=no
diff --git a/user/ufw/ufw.initd b/user/ufw/ufw.initd
new file mode 100644
index 000000000..bccd83ddb
--- /dev/null
+++ b/user/ufw/ufw.initd
@@ -0,0 +1,136 @@
+#!/sbin/openrc-run
+# Copyright 1999-2012 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+depend() {
+ before net
+ provide firewall
+}
+
+start() {
+ ebegin "Starting ufw"
+ _source_file || { eend $?; return $?; }
+
+ local enabled_in_cfg ret
+ _check_if_enabled_in_cfg
+ enabled_in_cfg=$?
+
+ # Avoid "Firewall already started, use 'force-reload'" message that
+ # appears if `ufw enable' had been run before start().
+ if _status_quiet; then
+ eend 0
+ return
+ fi
+
+ # The ufw_start function does the same: if ufw is disabled using `ufw disable',
+ # ufw_start would not start ufw and return 0, so let's handle this case.
+ case $enabled_in_cfg in
+ 0)
+ ufw_start
+ ret=$?
+ eend $ret "Failed to start ufw."
+ ;;
+ 1)
+ # see /etc/conf.d/<name>
+ if [ "${ufw_nonfatal_if_disabled:-no}" != "yes" ]; then
+ ret=1
+ eend $ret "Not starting firewall (not enabled), use \"ufw enable\" first."
+ else
+ ret=0
+ eend 0
+ fi
+ ;;
+ 2)
+ ret=1
+ eend $ret "Failed to start ufw."
+ ;;
+ esac
+
+ return $ret
+}
+
+stop() {
+ ebegin "Stopping ufw"
+ _source_file || { eend $?; return $?; }
+ local enabled_in_cfg ret
+ _check_if_enabled_in_cfg
+ enabled_in_cfg=$?
+
+ # Same as above (unless --force is passed to ufw_stop).
+ case $enabled_in_cfg in
+ 0)
+ ufw_stop
+ ret=$?
+ ;;
+ 1)
+ einfo "INFO: ufw is configured to be disabled"
+ ufw_stop --force
+ ret=$?
+ ;;
+ 2)
+ ret=1
+ ;;
+ esac
+
+ eend $ret "Failed to stop ufw."
+ return $ret
+}
+
+_status_quiet() {
+ # return values: 0 - started, 1 - stopped, 2 - error
+ # Does not execute _source_file.
+ local ret
+ ufw_status > /dev/null
+ ret=$?
+ # Return values for ufw_status come from /usr/share/ufw/ufw-init-functions.
+ case $ret in
+ 0) return 0 ;;
+ 3) return 1 ;;
+ *) return 2 ;;
+ esac
+}
+
+_source_file() {
+ local sourced_f="/usr/share/ufw/ufw-init-functions"
+ if [ ! -f "$sourced_f" ]; then
+ eerror "Cannot find file $sourced_f!"
+ return 1
+ fi
+
+ local _path=$PATH
+ if ! . "$sourced_f"; then
+ # PATH can be broken here, fix it...
+ PATH=$_path
+ eerror "Error sourcing file $sourced_f"
+ return 1
+ fi
+
+ if [ -z "$PATH" ]; then
+ PATH=$_path
+ else
+ PATH="${PATH}:${_path}"
+ fi
+ return 0
+}
+
+_check_if_enabled_in_cfg() {
+ # Check if user has enabled the firewall with "ufw enable".
+ # Return 0 if firewall enabled in configuration file, 1 otherwise, 2 on error.
+
+ local sourced_f="/etc/ufw/ufw.conf"
+ if [ ! -f "$sourced_f" ]; then
+ eerror "Cannot find file $sourced_f!"
+ return 2
+ fi
+
+ if ! . "$sourced_f"; then
+ eerror "Error sourcing file $sourced_f"
+ return 2
+ fi
+
+ if [ "$ENABLED" = "yes" ] || [ "$ENABLED" = "YES" ]; then
+ return 0
+ else
+ return 1
+ fi
+}
diff --git a/user/umbrello/APKBUILD b/user/umbrello/APKBUILD
index 33b82b783..76ee7e7d2 100644
--- a/user/umbrello/APKBUILD
+++ b/user/umbrello/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=umbrello
-pkgver=18.12.3
+pkgver=22.04.2
pkgrel=0
pkgdesc="Software modelling tool and code generator"
url="https://umbrello.kde.org/"
@@ -14,12 +14,11 @@ makedepends="cmake extra-cmake-modules qt5-qtbase-dev qt5-qtsvg-dev kconfig-dev
kcrash-dev kdoctools-dev kiconthemes-dev kdelibs4support-dev kio-dev
ktexteditor-dev kwindowsystem-dev kwidgetsaddons-dev kxmlgui-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="https://download.kde.org/stable/applications/$pkgver/src/umbrello-$pkgver.tar.xz
+source="https://download.kde.org/stable/release-service/$pkgver/src/umbrello-$pkgver.tar.xz
hax.patch
"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -30,19 +29,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b7ba29b05e5997d9e7ef07c261198bc47910e75668bd619e1f14bb850d5e09fd07948e7d56e2604287384e1c331a882f40b4540c116e9a7b2cfa2078f57b4a90 umbrello-18.12.3.tar.xz
+sha512sums="67b3d573cccd0bdf4ec7accea53c5059e6b676525952ea4f66aa1eff0c8cfe3593587dc1e3302fc6a0e3ed9e5a08197bc4abf9d1138d7affbda9579913e4ac3b umbrello-22.04.2.tar.xz
fcbe03a49d5420bf17383e5e6d4bac4377c1abfcafacea20ac37409457471537067efe3236647fb3570abfa410a4a3870b1638bb1ef880a24e6f60e2b189a562 hax.patch"
diff --git a/user/umbrello/assertion-fix.patch b/user/umbrello/assertion-fix.patch
deleted file mode 100644
index ef86e6546..000000000
--- a/user/umbrello/assertion-fix.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-From af72e059f728d70e43ac3ea03653865585818e66 Mon Sep 17 00:00:00 2001
-From: Ralf Habacker <ralf.habacker@freenet.de>
-Date: Fri, 2 Nov 2018 11:38:37 +0100
-Subject: Fix 'Umbrello fails to start due to ASSERT failure in QVector<T>::at
- "index out of range"'
-
-The backtrace shows that Qt wants to access tree view items that
-have already been deleted. To avoid this, graphical updates are
-disabled when creating the new document.
-
-BUG:400501
-FIXED-IN:2.26.3 (KDE Applications 18.08.3)
----
- umbrello/umldoc.cpp | 4 ++++
- 1 file changed, 4 insertions(+)
-
-diff --git a/umbrello/umldoc.cpp b/umbrello/umldoc.cpp
-index d4099bb..af5c889 100644
---- a/umbrello/umldoc.cpp
-+++ b/umbrello/umldoc.cpp
-@@ -442,6 +442,9 @@ void UMLDoc::closeDocument()
- */
- bool UMLDoc::newDocument()
- {
-+ bool state = UMLApp::app()->document()->loading();
-+ UMLApp::app()->document()->setLoading(false);
-+
- closeDocument();
- UMLApp::app()->setCurrentView(0);
- setUrlUntitled();
-@@ -465,6 +468,7 @@ bool UMLDoc::newDocument()
- UMLApp::app()->enableUndoAction(false);
- UMLApp::app()->clearUndoStack();
-
-+ UMLApp::app()->document()->setLoading(state);
- return true;
- }
-
---
-cgit v0.11.2
-
diff --git a/user/unbound/APKBUILD b/user/unbound/APKBUILD
index 8838db965..5d773aca9 100644
--- a/user/unbound/APKBUILD
+++ b/user/unbound/APKBUILD
@@ -1,10 +1,10 @@
-# Contributor: Luis Ressel <aranea@aixah.de>
-# Maintainer: Luis Ressel <aranea@aixah.de>
+# Contributor: Mira Ressel <aranea@aixah.de>
+# Maintainer: Alyx Wolcott <alyx@leuhta.com>
pkgname=unbound
-pkgver=1.9.1
+pkgver=1.17.0
pkgrel=0
pkgdesc="A validating, recursive and caching DNS resolver"
-url="https://unbound.net/"
+url="https://www.nlnetlabs.nl/projects/unbound/about/"
arch="all"
options="!checkroot"
license="BSD-3-Clause"
@@ -14,13 +14,15 @@ subpackages="$pkgname-dev $pkgname-doc $pkgname-openrc $pkgname-python"
install="$pkgname.pre-install"
pkgusers="unbound"
pkggroups="unbound"
-source="https://nlnetlabs.nl/downloads/$pkgname/$pkgname-$pkgver.tar.gz
+source="https://www.nlnetlabs.nl/downloads/$pkgname/$pkgname-$pkgver.tar.gz
unbound.confd
unbound.initd"
-build() {
- cd "$builddir"
+# secfixes:
+# 1.9.5-r0:
+# - CVE-2019-18934
+build() {
# cachedb, dnscrypt and dnstap have yet unpackaged dependencies
PYTHON_VERSION=3 ./configure \
--build=$CBUILD \
@@ -47,12 +49,10 @@ build() {
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -do unbound "$pkgdir/etc/unbound/var"
}
@@ -70,6 +70,6 @@ python() {
mv "$pkgdir/usr/lib/python"* "$subpkgdir"
}
-sha512sums="5dfac7ce3892f73109fdfe0f81863643b1f4c10cee2d4e2d1a28132f1b9ea4d4f89242e4e6348fdadf998f1c75d53577cbf4f719e98faa1342fc3c5de2e8903d unbound-1.9.1.tar.gz
+sha512sums="f6b9f279330fb19b5feca09524959940aad8c4e064528aa82b369c726d77e9e8e5ca23f366f6e9edcf2c061b96f482ed7a2c26ac70fc15ae5762b3d7e36a5284 unbound-1.17.0.tar.gz
de9dc269553f5449c1757690c2a8a3b9f228964f5672d721cfdbc29e6fab8954907fa4fa3761dd6f705b3ccd2f729cc6e2fe870107feb68cca611589f8306b94 unbound.confd
6627cbcbcb4e04f596e7e0ffdbf80ceb54cdb59144cb89896e53503dfb41b99fd77d8b85d05e6670f77023b6eafec8885b00c0c8e4e34e3e638c52c037a7985e unbound.initd"
diff --git a/user/unicode-data/APKBUILD b/user/unicode-data/APKBUILD
index 5cbd55565..a1a6d1deb 100644
--- a/user/unicode-data/APKBUILD
+++ b/user/unicode-data/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=unicode-data
-pkgver=12.0.0
+pkgver=15.1.0
pkgrel=0
pkgdesc="Unicode data files"
url="https://unicode.org"
@@ -10,29 +10,26 @@ options="!check" # no testsuite
license="Unicode-TOU"
depends=""
makedepends=""
-source="https://unicode.org/Public/$pkgver/ucd/Blocks.txt
- https://unicode.org/Public/$pkgver/ucd/DerivedAge.txt
- https://unicode.org/Public/$pkgver/ucd/NamesList.txt
- https://unicode.org/Public/$pkgver/ucd/Scripts.txt
- https://unicode.org/Public/$pkgver/ucd/UnicodeData.txt
- https://unicode.org/Public/$pkgver/ucd/Unihan.zip
+source="Blocks-$pkgver.txt::https://unicode.org/Public/$pkgver/ucd/Blocks.txt
+ DerivedAge-$pkgver.txt::https://unicode.org/Public/$pkgver/ucd/DerivedAge.txt
+ NamesList-$pkgver.txt::https://unicode.org/Public/$pkgver/ucd/NamesList.txt
+ Scripts-$pkgver.txt::https://unicode.org/Public/$pkgver/ucd/Scripts.txt
+ UnicodeData-$pkgver.txt::https://unicode.org/Public/$pkgver/ucd/UnicodeData.txt
+ Unihan-$pkgver.zip::https://unicode.org/Public/$pkgver/ucd/Unihan.zip
"
package() {
- cd "$srcdir"
mkdir -p "$pkgdir"/usr/share/unicode/$pkgver
- install -m644 -t "$pkgdir"/usr/share/unicode/$pkgver \
- Blocks.txt \
- DerivedAge.txt \
- NamesList.txt \
- Scripts.txt \
- UnicodeData.txt \
- Unihan.zip
+
+ for i in Blocks DerivedAge NamesList Scripts UnicodeData; do
+ install -m644 "$srcdir"/$i-$pkgver.txt "$pkgdir"/usr/share/unicode/$pkgver/$i.txt
+ done
+ install -m644 "$srcdir"/Unihan-$pkgver.zip "$pkgdir"/usr/share/unicode/$pkgver/Unihan.zip
}
-sha512sums="e3ead1233c29a13d46ffcc4b1c8b685144444579fb9231189f2724d9161adcdba39e9dd468c2d791af32538aa6d3f39f1e3f19c6d73eab432ac006526dc6c3ae Blocks.txt
-2cfe840bd5c72a7a47a15123e936cf96677ad66e2caecb7f580b98de83054a17cf49cd26b6470084979bdb3cf8818ea9799dab220108b7bf3a813f65bb1ed86e DerivedAge.txt
-de087e89be129928de87ebb9370f95ab9964c491a41f306791884c6d0452407b8530b7d47804cb3f0442e29d4c98d84867c82c90b46f3fbc1a7ee3fb6ce97005 NamesList.txt
-d25c87b58df3096d1dc26a81edc01eb1d08c62510b38854683ca91978a2a4df12ca0b29731c8d0211555387da604b5e8da7d5f5a5f9d57052f1bc502ecd2154e Scripts.txt
-be1844662041d022c57c2f81b971d395a0ba3a5824de4a5c1c8076ed66955f590a9d624d8abc189a66b7d35ba7fa7d63be727e8bdd9c3dff01251a34f2b84729 UnicodeData.txt
-7fdefad078284c14a9105655d1cb4d2b0dc1c89c56effe92ffcbd5a30b325559a56d97574b6077144d7a4ed02df6e6a402a2a5360e4abc0c84bae5c589044375 Unihan.zip"
+sha512sums="39e0f655d9f744272c55a17f7525f11c156bf989c662ba62a6faa31eecefbaa01da2665da4a9d500e74a811351a97467ad43397f8d61ac5521bf1c691d11249b Blocks-15.1.0.txt
+274289df082585af82c6b5423c35699439d4cac7000a728a8402d26a3ebe4795f4574ba8ce92cf45ec4f0acb24228b45f8d5626ad96de2cb447d5806420ef3e1 DerivedAge-15.1.0.txt
+83b91f9d3b30b1e03f9e23303b16a5a31c404e1c52468337e73153025cc79c5ffe7ecd104425dbb030519295ec8522ae87e68aec937c6b99e7b63cdcc4fd8f64 NamesList-15.1.0.txt
+aa211fdae622d2600c5e1b76a018395ea588553e1f2809d327c0f7fd481c3b851d46affeb89b62ea8f762af792fe116c4be8afba56600687dfa82269e6a5a87c Scripts-15.1.0.txt
+e10cc48161b177428244762c641ff96200da64a91026f6a6230fbf84ada3db8e7c9db4f56bbb5118f18f862e0172bd95de6db5e77bc97453ca927c4be50ab17f UnicodeData-15.1.0.txt
+fc1a32fc68b3e1d2d358fca91c2cd6c1103557405e91ff558585f18a2e9b1ee6f8af89e7ee922ff36cade67a5cf4f5b4042ba97d350af7b92b18f161eef5ec78 Unihan-15.1.0.zip"
diff --git a/user/unifont/APKBUILD b/user/unifont/APKBUILD
index 70182158c..b7949f605 100644
--- a/user/unifont/APKBUILD
+++ b/user/unifont/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Breno Leitao <breno.leitao@gmail.com>
# Maintainer:
pkgname=unifont
-pkgver=12.0.01
+pkgver=13.0.03
pkgrel=0
pkgdesc="GNU font package with all Unicode 11 characters"
url="http://unifoundry.com/unifont.html"
@@ -14,14 +14,12 @@ subpackages="$pkgname-dev $pkgname-doc"
source="http://unifoundry.com/pub/unifont/$pkgname-$pkgver/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
# Build fails with parallel make jobs.
make DESTDIR="$pkgdir" -j1
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e44678acbf696d0529f3c2fe7fe796d3d6908a54b8eaa3f7cd5717d5bebc2698aed7f4e5cde4a954330d8bcaac6a5886839afb854d271ac3a03b460f774215c1 unifont-12.0.01.tar.gz"
+sha512sums="5dd6576bbc158e5dac4f8812a724c4fc8ed2702b7ea22d4b2d9265d9d58bfddc4d4607eacdb7053896559b218986bec3709cbe734656a7cf9daa328de4a21bee unifont-13.0.03.tar.gz"
diff --git a/user/unittest-cpp/APKBUILD b/user/unittest-cpp/APKBUILD
index 62a54662c..647b16973 100644
--- a/user/unittest-cpp/APKBUILD
+++ b/user/unittest-cpp/APKBUILD
@@ -8,12 +8,12 @@ url=" "
arch="all"
license="MIT"
depends=""
-makedepends=""
+makedepends="bash"
subpackages="$pkgname-dev"
source="https://github.com/unittest-cpp/unittest-cpp/releases/download/v$pkgver/unittest-cpp-$pkgver.tar.gz"
build() {
- ./configure \
+ bash ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
diff --git a/user/unixodbc/APKBUILD b/user/unixodbc/APKBUILD
index e631d0f45..592feea9b 100644
--- a/user/unixodbc/APKBUILD
+++ b/user/unixodbc/APKBUILD
@@ -1,9 +1,9 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=unixodbc
-pkgver=2.3.7
+pkgver=2.3.9
pkgrel=0
-pkgdesc="Library for accessing ODBC data sources"
+pkgdesc="Unix ODBC driver manager and database drivers"
url="http://www.unixodbc.org/"
arch="all"
options="!check" # No test suite.
@@ -15,7 +15,6 @@ source="ftp://ftp.unixodbc.org/pub/unixODBC/unixODBC-${pkgver}.tar.gz"
builddir="$srcdir/unixODBC-$pkgver"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,8 +27,7 @@ build() {
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
}
-sha512sums="a87afeaaa0476f4ae6345c7021b3af52718944e599abb595c864d9126744a21341889802512a1de3ebaf86ac89e7f8b1bbd7f8f5285e8f4bccf928bd1585ff70 unixODBC-2.3.7.tar.gz"
+sha512sums="6637eab751401522e0af775cb104cd07693b82927453a98e5af28e079f4b9f40e1cfab8cb36f509c46dced89b45244bc5ed1a3dda17ba5a52a844e8e82f187bb unixODBC-2.3.9.tar.gz"
diff --git a/user/upower/APKBUILD b/user/upower/APKBUILD
index ea8652b3e..d74044821 100644
--- a/user/upower/APKBUILD
+++ b/user/upower/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=upower
-pkgver=0.99.10
+pkgver=0.99.11
pkgrel=0
pkgdesc="Power Management Services"
url="https://upower.freedesktop.org"
@@ -9,9 +9,9 @@ options="!check" # Requires running dbus.
license="GPL-2.0+"
depends=""
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-makedepends="dbus-glib-dev docbook-xsl gobject-introspection-dev gtk+-dev
- intltool libgudev-dev libusb-dev libxslt linux-headers polkit-dev"
-source="https://gitlab.freedesktop.org/upower/upower/uploads/c438511024b9bc5a904f8775cfc8e4c4/upower-0.99.10.tar.xz"
+makedepends="dbus-glib-dev docbook-xsl gobject-introspection-dev gtk+2.0-dev
+ libgudev-dev libusb-dev libxslt linux-headers polkit-dev"
+source="https://gitlab.freedesktop.org/upower/upower/uploads/93cfe7c8d66ed486001c4f3f55399b7a/upower-0.99.11.tar.xz"
build() {
DATADIRNAME=share ./configure \
@@ -34,4 +34,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="aefe1b2ff5a390f1ea9676fe7e753750bebc56034365a9183e946a8463904047da0a4ac71340eb2efedc16bce6f6d9ef4609ddca37dc1fc31b56bcdbfbbfa59d upower-0.99.10.tar.xz"
+sha512sums="67219a0beb98c97ac4512e4fe8ba83fc80a1035d1edb5367dda6911da50c672b047051f2f528e8703be29ab47547d92b6c71a7ef695226a1bdb5bc33e6d18803 upower-0.99.11.tar.xz"
diff --git a/user/upower/daemon-fix-get_critical_action.patch b/user/upower/daemon-fix-get_critical_action.patch
deleted file mode 100644
index 6afe9b7a9..000000000
--- a/user/upower/daemon-fix-get_critical_action.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-From 28cee8e2845b094488c337c4ecfa84ada0b6be60 Mon Sep 17 00:00:00 2001
-From: Martin Pitt <martin.pitt@ubuntu.com>
-Date: Tue, 23 Feb 2016 09:51:07 +0100
-Subject: daemon: fix get_critical_action()
-
-Fix copy&paste error from e7e9156f that called the wrong _complete_ function
-for up_daemon_get_critical_action().
-
-https://bugs.freedesktop.org/show_bug.cgi?id=94262
-
-diff --git a/src/up-daemon.c b/src/up-daemon.c
-index be14cbe..e95f904 100644
---- a/src/up-daemon.c
-+++ b/src/up-daemon.c
-@@ -435,8 +435,8 @@ up_daemon_get_critical_action (UpExportedDaemon *skeleton,
- GDBusMethodInvocation *invocation,
- UpDaemon *daemon)
- {
-- up_exported_daemon_complete_get_display_device (skeleton, invocation,
-- up_backend_get_critical_action (daemon->priv->backend));
-+ up_exported_daemon_complete_get_critical_action (skeleton, invocation,
-+ up_backend_get_critical_action (daemon->priv->backend));
- return TRUE;
- }
-
---
-cgit v0.10.2
-
diff --git a/user/upower/lib-add-propererror-and-cancellable-handling-to-UpClient.patch b/user/upower/lib-add-propererror-and-cancellable-handling-to-UpClient.patch
deleted file mode 100644
index 47e2f4799..000000000
--- a/user/upower/lib-add-propererror-and-cancellable-handling-to-UpClient.patch
+++ /dev/null
@@ -1,184 +0,0 @@
-From 932a6a39e35754be571e1274aec4730fd42dba13 Mon Sep 17 00:00:00 2001
-From: Martin Pitt <martin.pitt@ubuntu.com>
-Date: Wed, 18 May 2016 09:22:43 +0200
-Subject: lib: Add proper error and cancellable handling to UpClient
- constructor
-
-A GObject's _init() should never fail or block, but this is currently the case
-as up_client_init() connects to upowerd on D-Bus. Convert this to the GInitable
-interface and provide a new constructor up_client_new_full() which accepts a
-GCancellable and GError, so that clients can do proper error handling
-and reporting.
-
-This changes up_client_new() to return NULL when connecting to upowerd fails.
-This provides a more well-defined behaviour in this case as clients can check
-for this and our methods stop segfaulting as they have checks like
-
- g_return_val_if_fail (UP_IS_CLIENT (client), ...)
-
-Previously we returned a valid object, but trying to call any method on it
-segfaulted due to the NULL D-Bus proxy, so client code had no chance to check
-whether the UpClient object was really valid.
-
-https://bugs.freedesktop.org/show_bug.cgi?id=95350
-
-diff --git a/libupower-glib/up-client.c b/libupower-glib/up-client.c
-index 5b2218f..adc0b9b 100644
---- a/libupower-glib/up-client.c
-+++ b/libupower-glib/up-client.c
-@@ -39,9 +39,10 @@
- #include "up-daemon-generated.h"
- #include "up-device.h"
-
--static void up_client_class_init (UpClientClass *klass);
--static void up_client_init (UpClient *client);
--static void up_client_finalize (GObject *object);
-+static void up_client_class_init (UpClientClass *klass);
-+static void up_client_initable_iface_init (GInitableIface *iface);
-+static void up_client_init (UpClient *client);
-+static void up_client_finalize (GObject *object);
-
- #define UP_CLIENT_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), UP_TYPE_CLIENT, UpClientPrivate))
-
-@@ -73,7 +74,8 @@ enum {
- static guint signals [UP_CLIENT_LAST_SIGNAL] = { 0 };
- static gpointer up_client_object = NULL;
-
--G_DEFINE_TYPE (UpClient, up_client, G_TYPE_OBJECT)
-+G_DEFINE_TYPE_WITH_CODE (UpClient, up_client, G_TYPE_OBJECT,
-+ G_IMPLEMENT_INTERFACE(G_TYPE_INITABLE, up_client_initable_iface_init))
-
- /**
- * up_client_get_devices:
-@@ -434,11 +436,10 @@ up_client_class_init (UpClientClass *klass)
- * up_client_init:
- * @client: This class instance
- */
--static void
--up_client_init (UpClient *client)
-+static gboolean
-+up_client_initable_init (GInitable *initable, GCancellable *cancellable, GError **error)
- {
-- GError *error = NULL;
--
-+ UpClient *client = UP_CLIENT (initable);
- client->priv = UP_CLIENT_GET_PRIVATE (client);
-
- /* connect to main interface */
-@@ -446,13 +447,10 @@ up_client_init (UpClient *client)
- G_DBUS_PROXY_FLAGS_NONE,
- "org.freedesktop.UPower",
- "/org/freedesktop/UPower",
-- NULL,
-- &error);
-- if (client->priv->proxy == NULL) {
-- g_warning ("Couldn't connect to proxy: %s", error->message);
-- g_error_free (error);
-- return;
-- }
-+ cancellable,
-+ error);
-+ if (client->priv->proxy == NULL)
-+ return FALSE;
-
- /* all callbacks */
- g_signal_connect (client->priv->proxy, "device-added",
-@@ -461,6 +459,23 @@ up_client_init (UpClient *client)
- G_CALLBACK (up_device_removed_cb), client);
- g_signal_connect (client->priv->proxy, "notify",
- G_CALLBACK (up_client_notify_cb), client);
-+
-+ return TRUE;
-+}
-+
-+static void
-+up_client_initable_iface_init (GInitableIface *iface)
-+{
-+ iface->init = up_client_initable_init;
-+}
-+
-+/*
-+ * up_client_init:
-+ * @client: This class instance
-+ */
-+static void
-+up_client_init (UpClient *client)
-+{
- }
-
- /*
-@@ -482,23 +497,52 @@ up_client_finalize (GObject *object)
- }
-
- /**
-- * up_client_new:
-+ * up_client_new_full:
-+ * @cancellable: (allow-none): A #GCancellable or %NULL.
-+ * @error: Return location for error or %NULL.
- *
-- * Creates a new #UpClient object.
-+ * Creates a new #UpClient object. If connecting to upowerd on D-Bus fails,
-+ % this returns %NULL and sets @error.
- *
-- * Return value: a new UpClient object.
-+ * Return value: a new UpClient object, or %NULL on failure.
- *
-- * Since: 0.9.0
-+ * Since: 0.99.5
- **/
- UpClient *
--up_client_new (void)
-+up_client_new_full (GCancellable *cancellable, GError **error)
- {
- if (up_client_object != NULL) {
- g_object_ref (up_client_object);
- } else {
-- up_client_object = g_object_new (UP_TYPE_CLIENT, NULL);
-- g_object_add_weak_pointer (up_client_object, &up_client_object);
-+ up_client_object = g_initable_new (UP_TYPE_CLIENT, cancellable, error, NULL);
-+ if (up_client_object)
-+ g_object_add_weak_pointer (up_client_object, &up_client_object);
- }
- return UP_CLIENT (up_client_object);
- }
-
-+/**
-+ * up_client_new:
-+ *
-+ * Creates a new #UpClient object. If connecting to upowerd on D-Bus fails,
-+ * this returns %NULL and prints out a warning with the error message.
-+ * Consider using up_client_new_full() instead which allows you to handle errors
-+ * and cancelling long operations yourself.
-+ *
-+ * Return value: a new UpClient object, or %NULL on failure.
-+ *
-+ * Since: 0.9.0
-+ **/
-+UpClient *
-+up_client_new (void)
-+{
-+ GError *error = NULL;
-+ UpClient *client;
-+ client = up_client_new_full (NULL, &error);
-+ if (client == NULL) {
-+ g_warning ("Couldn't connect to proxy: %s", error->message);
-+ g_error_free (error);
-+ }
-+ return client;
-+}
-+
-diff --git a/libupower-glib/up-client.h b/libupower-glib/up-client.h
-index 79c2d9e..5b9af3c 100644
---- a/libupower-glib/up-client.h
-+++ b/libupower-glib/up-client.h
-@@ -72,6 +72,7 @@ typedef struct
- /* general */
- GType up_client_get_type (void);
- UpClient *up_client_new (void);
-+UpClient *up_client_new_full (GCancellable *cancellable, GError **error);
-
- /* sync versions */
- UpDevice * up_client_get_display_device (UpClient *client);
---
-cgit v0.10.2
-
diff --git a/user/uptimed/APKBUILD b/user/uptimed/APKBUILD
index ace7b6884..fb2aa98fb 100644
--- a/user/uptimed/APKBUILD
+++ b/user/uptimed/APKBUILD
@@ -1,21 +1,22 @@
# Contributor: Bartłomiej Piotrowski <bpiotrowski@alpinelinux.org>
# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=uptimed
-pkgver=0.4.1
+pkgver=0.4.6
pkgrel=0
-pkgdesc='System uptime record daemon'
+pkgdesc="System uptime record daemon"
arch="all"
-options="!check" # No tests
+options="!check" # No test suite.
url="https://github.com/rpodgorny/uptimed"
license="GPL-2.0-only"
-subpackages="$pkgname-doc $pkgname-openrc"
+depends=""
makedepends="autoconf automake libtool"
+subpackages="$pkgname-doc $pkgname-openrc"
source="$pkgname-$pkgver.tar.gz::https://github.com/rpodgorny/uptimed/archive/v$pkgver.tar.gz
- uptimed.init"
+ uptimed.init
+ "
build() {
- cd "$builddir"
autoreconf -vif
./configure \
--build=$CBUILD \
@@ -27,7 +28,6 @@ build() {
}
package() {
- cd "$builddir"
make install DESTDIR="$pkgdir"
mv "$pkgdir"/etc/uptimed.conf-dist \
"$pkgdir"/etc/uptimed.conf
@@ -35,5 +35,5 @@ package() {
"$pkgdir"/etc/init.d/uptimed
}
-sha512sums="5dfe79aebab8c8daca3a3ec88d54e312446fc7cf8b54ef1414cbfcb3fb25053ef31235de4b42cb14fc7352965b77ca2875c753b97b4d61178792a5484715e23a uptimed-0.4.1.tar.gz
+sha512sums="035caba32182a807312b587b3cb3b6322027b7c8f3e69a3f0b52ea4f44ecfc40505fe58b6a1b56a87a967f1f8b1fbc075414a04b60717577e32972feadb9bc2d uptimed-0.4.6.tar.gz
0884e9f5ace5a69b8eea4401c7f3b84f0a434f0ceb2b920919e83f318eb9e54182932de174cf1666ddddbab84c146781f3dd78571e80cc274963a72bf4f53a6b uptimed.init"
diff --git a/user/urw-base35-fonts/APKBUILD b/user/urw-base35-fonts/APKBUILD
index 40b0da945..3d1388740 100644
--- a/user/urw-base35-fonts/APKBUILD
+++ b/user/urw-base35-fonts/APKBUILD
@@ -10,11 +10,10 @@ options="!check" # No tests provided.
license="AGPL-3.0-only WITH font-exception"
depends=""
makedepends=""
+subpackages=""
source="urw-base35-fonts-$pkgver.tar.gz::https://github.com/ArtifexSoftware/urw-base35-fonts/archive/$pkgver.tar.gz"
package() {
- local _fconf
-
mkdir -p "$pkgdir"/usr/share/fonts/ttf-urw-base35
cp -a "$builddir"/fonts/*.otf "$pkgdir"/usr/share/fonts/ttf-urw-base35/
@@ -23,11 +22,10 @@ package() {
cp -a "$builddir"/fonts/*.t1 "$pkgdir"/usr/share/fonts/urw-base35/
mkdir -p "$pkgdir"/etc/fonts/conf.d/
- pushd "$builddir"/fontconfig
+ cd "$builddir"/fontconfig
for _fconf in *.conf; do
install -m 644 "$_fconf" "$pkgdir"/etc/fonts/conf.d/61-${_fconf}.conf
done
- popd
}
sha512sums="897fef5968d659ff49dc144f6c94513b32f8d9167c4fabcd7c3b13d2ce4c82d4182b25528291a36158d7a6e1cd864c67d22ce64a2c55dad4e984305f2fd65a91 urw-base35-fonts-20170801.1.tar.gz"
diff --git a/user/usbredir/APKBUILD b/user/usbredir/APKBUILD
index ef23e2697..51b5da16c 100644
--- a/user/usbredir/APKBUILD
+++ b/user/usbredir/APKBUILD
@@ -7,12 +7,12 @@ url="https://www.spice-space.org/usbredir.html"
arch="all"
options="!check" # No test suite.
license="GPL-2.0-or-later AND LGPL-2.1-or-later"
+depends=""
makedepends="libusb-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-server"
source="https://www.spice-space.org/download/usbredir/usbredir-$pkgver.tar.bz2 "
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,12 +26,10 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
check() {
- cd "$builddir"
make check
}
diff --git a/user/usbutils/APKBUILD b/user/usbutils/APKBUILD
index f174c0265..f83165da5 100644
--- a/user/usbutils/APKBUILD
+++ b/user/usbutils/APKBUILD
@@ -1,20 +1,20 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=usbutils
-pkgver=010
+pkgver=012
pkgrel=1
pkgdesc="USB utilities"
url="http://linux-usb.sourceforge.net/"
arch="all"
license="GPL-2.0+ AND GPL-2.0-only"
+depends="hwdata"
+makedepends="autoconf automake eudev-dev libtool libusb-dev"
subpackages="$pkgname-doc"
-depends="hwids-udev"
-makedepends="eudev-dev libusb-dev"
source="https://mirrors.kernel.org/pub/linux/utils/usb/usbutils/$pkgname-$pkgver.tar.xz
hwdata.patch
"
build() {
- cd "$builddir"
+ ./autogen.sh
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -24,14 +24,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="8bc197307bc34b38c406c58c939be32f0b20ce9d3e7c977472fe4c3d47e791765432e381fd8d7393df621bbd4bf159ca24a08b22441770e7ae464e767f99a2e3 usbutils-010.tar.xz
-8e2839ec483797f6f97c0258f8fda0b3a56858787a69fe04ce7c0e8a98fd0f4d6640c68df9294d0e9bc36c57f7c6a44d74882176477ea3ffe44716d5bbb35a82 hwdata.patch"
+sha512sums="e26a60229e6eed5de670d6511dd1fa5ee3453cc5a848820531b46a1678b69378a2a45c29e24a218a8e7065c2c345356f03a2992f8298ddae6c8026d181f8de66 usbutils-012.tar.xz
+73cd69a7d80e2d48f303d11cadc7c68f64857ff3f8fc0625b179c0fa320553a4691050e24790bcd98cbb8b7b3733f875b45a6d1ae47aae2eeeefe0ca5e7c7c7e hwdata.patch"
diff --git a/user/usbutils/hwdata.patch b/user/usbutils/hwdata.patch
index f7c081fd8..fdeb9d17d 100644
--- a/user/usbutils/hwdata.patch
+++ b/user/usbutils/hwdata.patch
@@ -1,20 +1,20 @@
---- a/lsusb.py.in
-+++ b/lsusb.py.in
-@@ -96,7 +96,7 @@
- return True
+--- usbutils-012/lsusb.py.in.old 2019-05-07 14:35:51.000000000 +0000
++++ usbutils-012/lsusb.py.in 2019-06-20 05:12:17.940002816 +0000
+@@ -67,7 +67,7 @@
+ return type('MyEnum', (), enums)
def parse_usb_ids():
- "Parse /usr/share/usb.ids and fill usbvendors, usbproducts, usbclasses"
+ "Parse /usr/share/hwdata/usb.ids and fill usbvendors, usbproducts, usbclasses"
- id = 0
- sid = 0
- mode = 0
-@@ -520,7 +520,7 @@
- print(" -c use colors")
- print(" -e display endpoint info")
- print(" -w display warning if usb.ids is not sorted correctly")
-- print(" -f FILE override filename for /usr/share/usb.ids")
-+ print(" -f FILE override filename for /usr/share/hwdata/usb.ids")
+ vid = 0
+ did = 0
+ modes = myenum('Vendor', 'Class', 'Misc')
+@@ -463,7 +463,7 @@
+ print(" -C, --no-color disable colors")
+ print(" -e, --endpoints display endpoint info")
+ print(" -f FILE, --usbids-path FILE")
+- print(" override filename for /usr/share/usb.ids")
++ print(" override filename for /usr/share/hwdata/usb.ids")
+ print()
print("Use lsusb.py -ciu to get a nice overview of your USB devices.")
- return 2
diff --git a/user/user-manager/APKBUILD b/user/user-manager/APKBUILD
deleted file mode 100644
index 7864d7720..000000000
--- a/user/user-manager/APKBUILD
+++ /dev/null
@@ -1,43 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=user-manager
-pkgver=5.12.7
-pkgrel=0
-pkgdesc="Manage user accounts from KDE"
-url="https://www.KDE.org/"
-arch="all"
-license="GPL-2.0+ AND LGPL-2.0+ AND GPL-2.0-only"
-depends="accountsservice"
-makedepends="cmake extra-cmake-modules qt5-qtbase-dev kauth-dev kcmutils-dev
- kconfig-dev kconfigwidgets-dev kcoreaddons-dev ki18n-dev kiconthemes-dev
- kio-dev kwidgetsaddons-dev libpwquality-dev"
-subpackages="$pkgname-lang"
-source="https://download.kde.org/stable/plasma/$pkgver/user-manager-$pkgver.tar.xz"
-
-build() {
- cd "$builddir"
- if [ "$CBUILD" != "$CHOST" ]; then
- CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
- fi
- cmake \
- -DCMAKE_INSTALL_PREFIX=/usr \
- -DCMAKE_INSTALL_LIBDIR=lib \
- -DBUILD_SHARED_LIBS=True \
- -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
- -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
- -DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
- make
-}
-
-check() {
- cd "$builddir"
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
-}
-
-sha512sums="286b4adc7ff01c25f1f32bc64e9f119aa693d74e0468e575c792d5357df6066c18de233eb78acd5ed4288518902461ffa7408af8d559e8b5f4081893bdec7f8f user-manager-5.12.7.tar.xz"
diff --git a/user/userspace-rcu/APKBUILD b/user/userspace-rcu/APKBUILD
new file mode 100644
index 000000000..e36f0f6bf
--- /dev/null
+++ b/user/userspace-rcu/APKBUILD
@@ -0,0 +1,36 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=userspace-rcu
+pkgver=0.14.0
+pkgrel=0
+pkgdesc="Userspace RCU (read-copy-update) library"
+url="https://liburcu.org"
+arch="all"
+license="LGPL-2.1-only"
+depends=""
+makedepends=""
+subpackages="$pkgname-doc $pkgname-dev"
+source="https://lttng.org/files/urcu/userspace-rcu-$pkgver.tar.bz2
+ endian.patch
+ "
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="7297e51012f4c44ee27c0e18ed9d87bf24be34db68a5398394c1e683a045bb561cf74aa913398404c0ed5cb8011af728ea12947717fa5f27627e5ca78e63a40f userspace-rcu-0.14.0.tar.bz2
+07935ed9741554b2cbc343fdd6218172deca4d4167b31b92f2be82623c5d83191472da2b4bee5adcd59e3d4bec3751d3e793cc720b822b6060dc588b8ee58f16 endian.patch"
diff --git a/user/userspace-rcu/endian.patch b/user/userspace-rcu/endian.patch
new file mode 100644
index 000000000..d80495c8a
--- /dev/null
+++ b/user/userspace-rcu/endian.patch
@@ -0,0 +1,11 @@
+--- userspace-rcu-0.14.0/doc/examples/rculfhash/jhash.h.old 2023-02-13 11:51:12.000000000 -0600
++++ userspace-rcu-0.14.0/doc/examples/rculfhash/jhash.h 2024-08-10 18:35:07.651374111 -0500
+@@ -51,7 +51,7 @@
+ c ^= b; c -= rot(b, 24); \
+ }
+
+-#if (BYTE_ORDER == LITTLE_ENDIAN)
++#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
+ #define HASH_LITTLE_ENDIAN 1
+ #else
+ #define HASH_LITTLE_ENDIAN 0
diff --git a/user/utf8proc/APKBUILD b/user/utf8proc/APKBUILD
index 8b3234adb..459901e02 100644
--- a/user/utf8proc/APKBUILD
+++ b/user/utf8proc/APKBUILD
@@ -1,24 +1,19 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=utf8proc
-pkgver=2.3.0
+pkgver=2.4.0
pkgrel=0
pkgdesc="C library for processing UTF-8 data"
-url=" "
+url="http://juliastrings.github.io/utf8proc"
arch="all"
license="MIT AND Unicode-DFS-2016"
depends=""
-makedepends=""
+makedepends="cmake"
subpackages="$pkgname-dev"
-source="utf8proc-$pkgver.tar.gz::https://github.com/JuliaStrings/utf8proc/archive/v$pkgver.tar.gz"
-
-prepare() {
- default_prepare
- mkdir build
-}
+source="$pkgname-$pkgver.tar.gz::https://github.com/JuliaStrings/utf8proc/archive/v$pkgver.tar.gz
+ https://dev.sick.bike/dist/$pkgname-testdata-$pkgver.tar.gz"
build() {
- cd "$builddir"/build
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -28,18 +23,17 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_C_FLAGS="$CFLAGS" \
${CMAKE_CROSSOPTS} \
- ..
- make
+ -Bbuild
+ make -C build
}
check() {
- cd "$builddir"/build
- CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+ make check
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir" install
+ make DESTDIR="$pkgdir" -C build install
}
-sha512sums="3935cd280e14ed570caa89a983b2d56a981e74da9298a1ea26064da78ece288ff48a73306446d3e1d777e6ecd8ea881f7a29169eaae2153cb015daefb8df8656 utf8proc-2.3.0.tar.gz"
+sha512sums="2bbd056b488cd30faca26618389d8af84edc39ade9b705e147b676bf39eee65b40239d01c32c46dfc2a289d79e869ed1bb3c347365603dcaab2f69e34427441a utf8proc-2.4.0.tar.gz
+1d41e9138ef2f41a0bf79e0613695c516da87f79f53032476d585f91040f9c6231f4e67944b43ffa16d7d96cfd3841c15d7f09a7178f45ac6b6b3585e97050fc utf8proc-testdata-2.4.0.tar.gz"
diff --git a/user/util-macros/APKBUILD b/user/util-macros/APKBUILD
index f5b24e8b2..2866ab043 100644
--- a/user/util-macros/APKBUILD
+++ b/user/util-macros/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=util-macros
-pkgver=1.19.2
+pkgver=1.20.1
pkgrel=0
pkgdesc="X.Org Autotools macros"
url="https://www.X.Org/"
@@ -8,10 +8,9 @@ arch="noarch"
license="MIT"
depends=""
makedepends=""
-source="https://www.X.Org/releases/individual/util/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/util/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -20,14 +19,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
- install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="3f51504b27f0478c136126f15110cf3cdbba218c4d74a8e974cca1381c6e8364609bd0c444f2fb19aa86a7f4e848dfce4f4da940463b224036f75a60b3d88619 util-macros-1.19.2.tar.bz2"
+sha512sums="5f44d73c18ff87459cd94a68a961465b3970a36f0b55be65c0ec228320a675561eb24a1b1359745124302446a1a3fadc2f50d3378f439df5bd3e866cb8015286 util-macros-1.20.1.tar.xz"
diff --git a/user/uwsgi/APKBUILD b/user/uwsgi/APKBUILD
index c009e1ff2..c9652f331 100644
--- a/user/uwsgi/APKBUILD
+++ b/user/uwsgi/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=uwsgi
-pkgver=2.0.18
+pkgver=2.0.21
pkgrel=0
pkgdesc="Web application server"
url="https://projects.unbit.it/uwsgi"
@@ -17,7 +17,7 @@ _plugins="asyncio cgi corerouter http logfile php python rack psgi"
for _plugin in $_plugins; do
subpackages="$subpackages $pkgname-$_plugin"
done
-source="https://projects.unbit.it/downloads/uwsgi-$pkgver.tar.gz"
+source="$pkgname-$pkgver.tar.gz::https://github.com/unbit/uwsgi/archive/refs/tags/$pkgver.tar.gz"
build() {
echo 'plugin_dir = /usr/lib/uwsgi/plugins' >> buildconf/core.ini
@@ -83,4 +83,4 @@ rack() {
_plugpack rack "Ruby Rack"
}
-sha512sums="6561703279bcc4a81311d033810ac066d0f113bab13b0942f3eef86cac29c584a6641b52476840d6895151aee5ed064ae2d03b18932cf7f47e62f4eeed76da61 uwsgi-2.0.18.tar.gz"
+sha512sums="36a9c1b87a4c3d08482b9045d2227f56b006acb53f38ddf1b510880ae5fc24c0177a077338ec8af3ef0b8f8e220bc4fc7f8311dab8066e13cbcbb616f736c795 uwsgi-2.0.21.tar.gz"
diff --git a/user/v4l-utils/APKBUILD b/user/v4l-utils/APKBUILD
index bf53d6890..4387a4c1a 100644
--- a/user/v4l-utils/APKBUILD
+++ b/user/v4l-utils/APKBUILD
@@ -1,55 +1,37 @@
# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
# Maintainer:
pkgname=v4l-utils
-pkgver=1.16.4
+pkgver=1.26.1
pkgrel=0
pkgdesc="Userspace tools and conversion library for Video 4 Linux"
url="https://www.linuxtv.org/wiki/index.php/V4l-utils"
arch="all"
license="LGPL-2.0+"
-makedepends="qt5-qtbase-dev libjpeg-turbo-dev argp-standalone linux-headers
- eudev-dev alsa-lib-dev"
+depends=""
+makedepends="qt5-qtbase-dev libjpeg-turbo-dev argp-standalone-dev linux-headers
+ eudev-dev alsa-lib-dev meson"
subpackages="$pkgname-dev $pkgname-doc qv4l2 $pkgname-libs ir_keytable"
-source="https://www.linuxtv.org/downloads/v4l-utils/$pkgname-$pkgver.tar.bz2
- qv4l2.svg
- qv4l2.desktop
- getsubopt.patch
- "
+source="https://www.linuxtv.org/downloads/v4l-utils/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
- [ "$CLIBC" = "musl" ] && export CFLAGS="$CFLAGS -D__off_t=off_t"
- LIBS="-largp -lintl" ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --infodir=/usr/share/info \
- --localstatedir=/var \
- --disable-libdvbv5 \
- --disable-static
- make
+ meson setup -Dlibdvbv5=disabled -Dprefix=/usr build
+ meson compile -C build
}
check() {
- cd "$builddir"
- make check
+ meson test -C build
}
package() {
- cd "$builddir"
- make -j1 DESTDIR="$pkgdir" install
- install -Dm644 "$srcdir"/qv4l2.desktop \
- "$pkgdir"/usr/share/applications/qv4l2.desktop
- install -Dm644 "$srcdir"/qv4l2.svg \
- "$pkgdir"/usr/share/icons/hicolor/scalable/apps/qv4l2.svg
+ DESTDIR="$pkgdir" meson install -C build
}
qv4l2() {
pkgdesc="Qt V4L2 test control and streaming test application"
+ install_if="qt5-qtbase-x11 v4l-utils"
mkdir -p "$subpkgdir"/usr/bin
mv "$pkgdir"/usr/bin/qv4l2 "$subpkgdir"/usr/bin/
+ mv "$pkgdir"/usr/bin/qvidcap "$subpkgdir"/usr/bin/
mv "$pkgdir"/usr/share "$subpkgdir"/usr/
}
@@ -62,21 +44,17 @@ libs() {
ir_keytable() {
pkgdesc="Alter keymaps of Remote Controller devices"
- mkdir -p "$subpkgdir"/lib/udev/rc_keymaps \
- "$subpkgdir"/lib/udev/rules.d \
+ mkdir -p "$subpkgdir"/lib/udev \
"$subpkgdir"/usr/bin \
"$subpkgdir"/etc
- mv "$pkgdir"/lib/udev/rc_keymaps/* \
- "$subpkgdir"/lib/udev/rc_keymaps
- mv "$pkgdir"/lib/udev/rules.d/* \
- "$subpkgdir"/lib/udev/rules.d
+ mv "$pkgdir"/lib/udev/rc_keymaps \
+ "$subpkgdir"/lib/udev/
+ mv "$pkgdir"/lib/udev/rules.d \
+ "$subpkgdir"/lib/udev/
mv "$pkgdir"/usr/bin/ir-keytable \
"$subpkgdir"/usr/bin
mv "$pkgdir"/etc/rc_maps.cfg \
"$subpkgdir"/etc
}
-sha512sums="451e3af203b43fcf9fc61e00a236c030c932eabc0b749269277fc42da05464a2b74581255e7d9bbbac35b43ece318b640c3fde8d074c71723a3594a27ee982ff v4l-utils-1.16.4.tar.bz2
-bc18280046c15b19984103f7c2bb44a0aea79715803c64f0c64bc932499c09022c956914c3b15ae59499adc09f6fbff5378be45707fe851250f495a26b63d682 qv4l2.svg
-6f74aa524b3de420eeb8de788ff3f717020732a3f1f6530caee50e63aae7eddbe5f551ffc50065c9f5d6078c13bace089948ecdcacf01f8b82c1a44960e06315 qv4l2.desktop
-9a4f6d0a44d30bb7afe4db8b40074d362f240cae1f1b13feb0eb2b1b666479fc6f73ef27542f6f80fb1b922c9540feadc9ff8563890ff3041d3f7fc62e504e29 getsubopt.patch"
+sha512sums="a3b12b311977afec410db8b430696e923a24e04f003a5891cc77ddeb667d0b98666a06d31a439c95ce57d9e9c9c2593c5e9dd9e7cf2be002adb95db5b8f00ac8 v4l-utils-1.26.1.tar.xz"
diff --git a/user/v4l-utils/getsubopt.patch b/user/v4l-utils/getsubopt.patch
deleted file mode 100644
index c476e5ed7..000000000
--- a/user/v4l-utils/getsubopt.patch
+++ /dev/null
@@ -1,36 +0,0 @@
-POSIX says that behavior when subopts list is empty is undefined.
-musl libs will set value to NULL which leads to crash.
-
-Simply avoid getsubopt, since we cannot rely on it.
-
-diff --git a/utils/v4l2-ctl/v4l2-ctl-common.cpp b/utils/v4l2-ctl/v4l2-ctl-common.cpp
-index 3ea6cd3..291fb3e 100644
---- a/utils/v4l2-ctl/v4l2-ctl-common.cpp
-+++ b/utils/v4l2-ctl/v4l2-ctl-common.cpp
-@@ -692,16 +692,17 @@ static bool parse_subset(char *optarg)
-
- static bool parse_next_subopt(char **subs, char **value)
- {
-- static char *const subopts[] = {
-- NULL
-- };
-- int opt = getsubopt(subs, subopts, value);
-+ char *p = *subs;
-+ *value = *subs;
-
-- if (opt < 0 || *value)
-- return false;
-- fprintf(stderr, "No value given to suboption <%s>\n",
-- subopts[opt]);
-- return true;
-+ while (*p && *p != ',')
-+ p++;
-+
-+ if (*p)
-+ *p++ = '\0';
-+
-+ *subs = p;
-+ return false;
- }
-
- void common_cmd(int ch, char *optarg)
diff --git a/user/v4l-utils/qv4l2.desktop b/user/v4l-utils/qv4l2.desktop
deleted file mode 100644
index 55e369c7c..000000000
--- a/user/v4l-utils/qv4l2.desktop
+++ /dev/null
@@ -1,12 +0,0 @@
-[Desktop Entry]
-Encoding=UTF-8
-Name=QT V4L2 test Utility
-Name[pt]=Utilitário de teste V4L2
-Comment=Allow testing Video4Linux devices
-Comment[pt]=Permite testar dispositivos Video4Linux
-Exec=qv4l2
-Icon=qv4l2
-Terminal=false
-Type=Application
-Categories=Application;AudioVideo;
-
diff --git a/user/v4l-utils/qv4l2.svg b/user/v4l-utils/qv4l2.svg
deleted file mode 100644
index 3d4f375cc..000000000
--- a/user/v4l-utils/qv4l2.svg
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-<svg xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:cc="http://creativecommons.org/ns#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" inkscape:version="0.47 r22583" version="1.1" id="svg2839" height="297mm" width="210mm" sodipodi:docname="Novo documento 3">
- <defs id="defs2841">
- <linearGradient id="linearGradient2963">
- <stop style="stop-color: rgb(255, 236, 187); stop-opacity: 1;" offset="0" id="stop2965"/>
- <stop id="stop2971" offset="1" style="stop-color: rgb(0, 0, 0); stop-opacity: 0.498039;"/>
- </linearGradient>
- <inkscape:perspective sodipodi:type="inkscape:persp3d" inkscape:vp_x="0 : 526.18109 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_z="744.09448 : 526.18109 : 1" inkscape:persp3d-origin="372.04724 : 350.78739 : 1" id="perspective2847"/>
- <inkscape:perspective id="perspective2935" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
- <linearGradient inkscape:collect="always" xlink:href="#linearGradient2963" id="linearGradient2969" x1="-719.14288" y1="494.69958" x2="-324.21902" y2="968.98529" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0512, 0, 0, 1.05137, 651.058, -25.2444)"/>
- <inkscape:perspective id="perspective2992" inkscape:persp3d-origin="0.5 : 0.33333333 : 1" inkscape:vp_z="1 : 0.5 : 1" inkscape:vp_y="0 : 1000 : 0" inkscape:vp_x="0 : 0.5 : 1" sodipodi:type="inkscape:persp3d"/>
- </defs>
- <sodipodi:namedview id="base" pagecolor="#ffffff" bordercolor="#666666" borderopacity="1.0" inkscape:pageopacity="0.0" inkscape:pageshadow="2" inkscape:zoom="0.7" inkscape:cx="376.9721" inkscape:cy="468.42546" inkscape:document-units="px" inkscape:current-layer="layer1" showgrid="false" inkscape:window-width="1513" inkscape:window-height="1044" inkscape:window-x="1941" inkscape:window-y="0" inkscape:window-maximized="0"/>
- <metadata id="metadata2844">
- <rdf:RDF>
- <cc:Work rdf:about="">
- <dc:format>image/svg+xml</dc:format>
- <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
- <dc:title/>
- </cc:Work>
- </rdf:RDF>
- </metadata>
- <g inkscape:label="Camada 1" inkscape:groupmode="layer" id="layer1">
- <rect style="fill: rgb(173, 160, 127); fill-opacity: 1;" id="rect2959" width="498.57132" height="402.52496" x="101.42867" y="345.21906" ry="15.848869"/>
- <rect style="fill: rgb(214, 207, 189); fill-opacity: 1; fill-rule: evenodd; stroke: rgb(0, 0, 0); stroke-width: 1.09651px; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1;" id="rect2955" width="366.37466" height="268.80539" x="172.03215" y="409.8259" ry="24.860613"/>
- <path style="fill: url(&quot;#linearGradient2969&quot;) rgb(0, 0, 0); fill-opacity: 1;" d="m 111.92284,745.80915 c -1.7443,-0.70488 -4.61634,-3.11878 -6.38231,-5.3642 l -3.21086,-4.08259 0,-189.14299 c 0,-136.34795 0.46823,-190.05871 1.67748,-192.42365 0.92263,-1.80438 3.11889,-4.44845 4.8806,-5.87571 3.00442,-2.43405 17.98923,-2.5971 241.57759,-2.62843 l 238.37448,-0.0334 4.90427,4.38251 4.90429,4.3825 0.39257,189.41161 c 0.43575,210.24489 1.09242,196.30432 -9.4544,200.71175 -4.34407,1.81535 -40.20923,2.12038 -239.80015,2.0394 -129.08065,-0.0523 -236.11926,-0.67193 -237.86356,-1.37681 z m 413.94314,-69.49552 c 4.39946,-2.22093 7.85143,-5.43895 10.06966,-9.38725 l 3.37535,-6.00784 -0.36571,-118.16973 c -0.36124,-116.72035 -0.4037,-118.22058 -3.46195,-122.31682 -4.69144,-6.28374 -10.15101,-9.79936 -17.39001,-11.19809 -8.54594,-1.65125 -316.90144,-1.65125 -325.4474,0 -7.68,1.48394 -13.16379,5.20817 -17.88452,12.146 l -3.40519,5.00442 0.40173,119.03503 c 0.39878,118.15286 0.42505,119.06645 3.54637,123.27494 1.72955,2.33195 5.7842,5.74954 9.01033,7.59462 l 5.8657,3.35471 164.49565,0.0248 164.49566,0.0246 6.69433,-3.3794 z" id="path2961"/>
- <rect style="fill: rgb(25, 20, 8); fill-opacity: 1;" id="rect2980" width="63.072273" height="39.050926" x="499.38467" y="744.74005" ry="0"/>
- <rect style="fill: rgb(25, 20, 8); fill-opacity: 1;" id="rect2980-1" width="63.072273" height="39.050926" x="130.56888" y="744.74005" ry="0"/>
- </g>
-</svg> \ No newline at end of file
diff --git a/user/vala/APKBUILD b/user/vala/APKBUILD
index 3e6b0d5b0..d48752097 100644
--- a/user/vala/APKBUILD
+++ b/user/vala/APKBUILD
@@ -1,15 +1,17 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=vala
-pkgver=0.44.3
+pkgver=0.54.9
pkgrel=0
pkgdesc="Compiler for the Vala programming language"
url="https://wiki.gnome.org/Projects/Vala"
arch="all"
license="LGPL-2.1+"
-makedepends="glib-dev flex bison graphviz-dev"
+depends=""
+makedepends="glib-dev flex byacc graphviz-dev"
+options="!check"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://download.gnome.org/sources/vala/0.44/vala-$pkgver.tar.xz"
+source="https://download.gnome.org/sources/vala/${pkgver%.*}/vala-$pkgver.tar.xz"
build() {
./configure \
@@ -23,11 +25,11 @@ build() {
}
check() {
- make tests
+ make check
}
package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="f074d537db94772565003a097c6a29e0dfcd58680baeb321ad04dec8ea056319eb8b7059117c259523b7570841651c2935feef06c03e3d82a11a94a293349b5a vala-0.44.3.tar.xz"
+sha512sums="74a06321ff9d713a5aa8d390e3b9f0dd1249c5292ae84b8089f903639731bf56b064b536972ea65de377775f1a569a4abf4c86bffe204d19453af44d5ee5107b vala-0.54.9.tar.xz"
diff --git a/user/valgrind/0001-Ensure-ELFv2-is-supported-on-PPC64.patch b/user/valgrind/0001-Ensure-ELFv2-is-supported-on-PPC64.patch
index 5272406ec..247657759 100644
--- a/user/valgrind/0001-Ensure-ELFv2-is-supported-on-PPC64.patch
+++ b/user/valgrind/0001-Ensure-ELFv2-is-supported-on-PPC64.patch
@@ -1,35 +1,35 @@
-From a5224eb31a4c8a680587e74cc402e5ed92ead216 Mon Sep 17 00:00:00 2001
+From 1278e5015f6925d86274d6363c4cedf2ce47bfcb Mon Sep 17 00:00:00 2001
From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
-Date: Thu, 27 Sep 2018 15:42:40 -0500
-Subject: [PATCH] Ensure ELFv2 is supported on PPC64
+Date: Tue, 14 May 2019 14:07:50 +0200
+Subject: [PATCH] [PATCH] Ensure ELFv2 is supported on PPC64
---
- coregrind/m_dispatch/dispatch-ppc64be-linux.S | 107 ++++++++++++++++--
- coregrind/m_initimg/initimg-linux.c | 5 +-
+ coregrind/m_dispatch/dispatch-ppc64be-linux.S | 101 ++++++++++++++++--
+ coregrind/m_initimg/initimg-linux.c | 3 +-
coregrind/m_libcsetjmp.c | 7 +-
coregrind/m_machine.c | 3 +-
- coregrind/m_main.c | 19 ++--
+ coregrind/m_main.c | 21 ++--
coregrind/m_sigframe/sigframe-ppc64-linux.c | 3 +-
coregrind/m_signals.c | 11 +-
- coregrind/m_stacktrace.c | 12 +-
+ coregrind/m_stacktrace.c | 12 ++-
coregrind/m_syscall.c | 9 +-
coregrind/m_syswrap/syscall-ppc64be-linux.S | 19 +++-
coregrind/m_syswrap/syswrap-ppc64-linux.c | 9 +-
coregrind/m_trampoline.S | 4 +-
- coregrind/m_translate.c | 23 ++--
+ coregrind/m_translate.c | 26 ++---
coregrind/m_ume/elf.c | 8 +-
- coregrind/pub_core_machine.h | 12 +-
+ coregrind/pub_core_machine.h | 12 ++-
coregrind/vg_preloaded.c | 3 +-
include/valgrind.h | 16 ++-
memcheck/mc_leakcheck.c | 2 +-
memcheck/mc_machine.c | 3 +-
- 19 files changed, 206 insertions(+), 69 deletions(-)
+ 19 files changed, 205 insertions(+), 67 deletions(-)
diff --git a/coregrind/m_dispatch/dispatch-ppc64be-linux.S b/coregrind/m_dispatch/dispatch-ppc64be-linux.S
-index 91bd3b236..eb8026c7c 100644
+index c5592d4..292b236 100644
--- a/coregrind/m_dispatch/dispatch-ppc64be-linux.S
+++ b/coregrind/m_dispatch/dispatch-ppc64be-linux.S
-@@ -75,14 +75,26 @@ void VG_(disp_run_translations)( UWord* two_words,
+@@ -88,14 +88,26 @@ void VG_(disp_run_translations)( UWord* two_words,
.section ".text"
.align 2
.globl VG_(disp_run_translations)
@@ -56,7 +56,7 @@ index 91bd3b236..eb8026c7c 100644
/* r3 holds two_words */
/* r4 holds guest_state */
/* r5 holds host_addr */
-@@ -231,6 +243,11 @@ VG_(disp_run_translations):
+@@ -244,6 +256,11 @@ VG_(disp_run_translations):
/* Set up the guest state ptr */
mr 31,4 /* r31 (generated code gsp) = r4 */
@@ -68,7 +68,7 @@ index 91bd3b236..eb8026c7c 100644
/* and jump into the code cache. Chained translations in
the code cache run, until for whatever reason, they can't
-@@ -385,7 +402,9 @@ VG_(disp_run_translations):
+@@ -398,7 +415,9 @@ VG_(disp_run_translations):
mtlr 0
addi 1,1,624 /* stack_size */
blr
@@ -79,7 +79,7 @@ index 91bd3b236..eb8026c7c 100644
/*----------------------------------------------------*/
/*--- Continuation points ---*/
-@@ -395,15 +414,25 @@ VG_(disp_run_translations):
+@@ -408,14 +427,24 @@ VG_(disp_run_translations):
.section ".text"
.align 2
.globl VG_(disp_cp_chain_me_to_slowEP)
@@ -97,17 +97,15 @@ index 91bd3b236..eb8026c7c 100644
.type .VG_(disp_cp_chain_me_to_slowEP),@function
.globl .VG_(disp_cp_chain_me_to_slowEP)
.VG_(disp_cp_chain_me_to_slowEP):
-- /* We got called. The return address indicates
+#if _CALL_ELF == 2
+0: addis 2, 12,.TOC.-0b@ha
+ addi 2,2,.TOC.-0b@l
+ .localentry VG_(disp_cp_chain_me_to_slowEP), .-VG_(disp_cp_chain_me_to_slowEP)
+#endif
-+ /* We got called. The return address indicates
+ /* We got called. The return address indicates
where the patching needs to happen. Collect
the return address and, exit back to C land,
- handing the caller the pair (Chain_me_S, RA) */
-@@ -415,20 +444,33 @@ VG_(disp_cp_chain_me_to_slowEP):
+@@ -428,20 +457,33 @@ VG_(disp_cp_chain_me_to_slowEP):
*/
subi 7,7,20+4+4
b .postamble
@@ -143,7 +141,7 @@ index 91bd3b236..eb8026c7c 100644
where the patching needs to happen. Collect
the return address and, exit back to C land,
handing the caller the pair (Chain_me_S, RA) */
-@@ -440,20 +482,33 @@ VG_(disp_cp_chain_me_to_fastEP):
+@@ -453,19 +495,32 @@ VG_(disp_cp_chain_me_to_fastEP):
*/
subi 7,7,20+4+4
b .postamble
@@ -155,12 +153,11 @@ index 91bd3b236..eb8026c7c 100644
.section ".text"
.align 2
.globl VG_(disp_cp_xindir)
-- .section ".opd","aw"
+#if _CALL_ELF == 2
+ .type VG_(disp_cp_xindir),@function
+VG_(disp_cp_xindir):
+#else
-+ .section ".opd","aw"
+ .section ".opd","aw"
.align 3
VG_(disp_cp_xindir):
.quad .VG_(disp_cp_xindir),.TOC.@tocbase,0
@@ -169,27 +166,23 @@ index 91bd3b236..eb8026c7c 100644
.type .VG_(disp_cp_xindir),@function
.globl .VG_(disp_cp_xindir)
.VG_(disp_cp_xindir):
-- /* Where are we going? */
+#if _CALL_ELF == 2
+0: addis 2, 12,.TOC.-0b@ha
+ addi 2,2,.TOC.-0b@l
+ .localentry VG_(disp_cp_xindir), .-VG_(disp_cp_xindir)
+#endif
-+ /* Where are we going? */
- ld 3,OFFSET_ppc64_CIA(31)
-
- /* stats only */
-@@ -479,6 +534,9 @@ VG_(disp_cp_xindir):
- /* Found a match. Jump to .host. */
- mtctr 7
- bctr
+ /* Where are we going? */
+ ld 20, OFFSET_ppc64_CIA(31)
+
+@@ -584,44 +639,72 @@ VG_(disp_cp_xindir):
+ li 7,0
+ b .postamble
+ /*NOTREACHED*/
+#if _CALL_ELF == 2
+ .size VG_(disp_cp_xindir),.-VG_(disp_cp_xindir)
+#endif
- .fast_lookup_failed:
- /* stats only */
-@@ -496,39 +554,64 @@ VG_(disp_cp_xindir):
+ /* ------ Assisted jump ------ */
.section ".text"
.align 2
.globl VG_(disp_cp_xassisted)
@@ -260,7 +253,7 @@ index 91bd3b236..eb8026c7c 100644
/* Let the linker know we don't need an executable stack */
MARK_STACK_NO_EXEC
diff --git a/coregrind/m_initimg/initimg-linux.c b/coregrind/m_initimg/initimg-linux.c
-index 61cc458bc..19df79705 100644
+index 8a7f0d0..6891641 100644
--- a/coregrind/m_initimg/initimg-linux.c
+++ b/coregrind/m_initimg/initimg-linux.c
@@ -1117,7 +1117,8 @@ void VG_(ii_finalise_image)( IIFinaliseImageInfo iifii )
@@ -274,7 +267,7 @@ index 61cc458bc..19df79705 100644
#endif
diff --git a/coregrind/m_libcsetjmp.c b/coregrind/m_libcsetjmp.c
-index c73180640..ed96f4739 100644
+index 85ffc12..51273a0 100644
--- a/coregrind/m_libcsetjmp.c
+++ b/coregrind/m_libcsetjmp.c
@@ -35,6 +35,7 @@
@@ -306,47 +299,53 @@ index c73180640..ed96f4739 100644
".section \".toc\",\"aw\"" "\n"
diff --git a/coregrind/m_machine.c b/coregrind/m_machine.c
-index 31b0e1b6b..eb3e6a4e1 100644
+index df842aa..de37070 100644
--- a/coregrind/m_machine.c
+++ b/coregrind/m_machine.c
-@@ -2035,7 +2035,8 @@ void* VG_(fnptr_to_fnentry)( void* f )
+@@ -2073,8 +2073,9 @@ void* VG_(fnptr_to_fnentry)( void* f )
|| defined(VGP_ppc32_linux) || defined(VGP_ppc64le_linux) \
|| defined(VGP_s390x_linux) || defined(VGP_mips32_linux) \
|| defined(VGP_mips64_linux) || defined(VGP_arm64_linux) \
-- || defined(VGP_x86_solaris) || defined(VGP_amd64_solaris)
-+ || defined(VGP_x86_solaris) || defined(VGP_amd64_solaris) \
+ || defined(VGP_x86_solaris) || defined(VGP_amd64_solaris) \
+- || defined(VGP_nanomips_linux)
++ || defined(VGP_nanomips_linux) \
+ || (defined(VGP_ppc64be_linux) && !defined(VG_PLAT_USES_PPCTOC))
return f;
# elif defined(VGP_ppc64be_linux)
/* ppc64-linux uses the AIX scheme, in which f is a pointer to a
diff --git a/coregrind/m_main.c b/coregrind/m_main.c
-index bf4a71284..102235dca 100644
+index 21df679..855c933 100644
--- a/coregrind/m_main.c
+++ b/coregrind/m_main.c
-@@ -2274,7 +2274,7 @@ static void final_tidyup(ThreadId tid)
+@@ -2303,7 +2303,7 @@ static void final_tidyup(ThreadId tid)
return; /* won't do it */
}
-# if defined(VGP_ppc64be_linux)
+# if defined(VGP_ppc64be_linux) && defined(VG_PLAT_USES_PPCTOC)
- Addr r2 = VG_(get_tocptr)(freeres_wrapper);
+ Addr r2 = VG_(get_tocptr)(VG_(current_DiEpoch)(),
+ freeres_wrapper);
if (r2 == 0) {
- VG_(message)(Vg_UserMsg,
-@@ -2306,9 +2306,11 @@ static void final_tidyup(ThreadId tid)
- directly. However, we need to set R2 (the toc pointer)
+@@ -2336,13 +2336,15 @@ static void final_tidyup(ThreadId tid)
appropriately. */
VG_(set_IP)(tid, freeres_wrapper);
+
-# if defined(VGP_ppc64be_linux)
+# if (defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)) \
+ && defined(VG_PLAT_USES_PPCTOC)
VG_(threads)[tid].arch.vex.guest_GPR2 = r2;
+ VG_TRACK(post_reg_write, Vg_CoreClientReq, tid,
+ offsetof(VexGuestPPC64State, guest_GPR2),
+ sizeof(VG_(threads)[tid].arch.vex.guest_GPR2));
-# elif defined(VGP_ppc64le_linux)
+- /* setting GPR2 but not really needed, GPR12 is needed */
+# elif (defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)) \
+ && !defined(VG_PLAT_USES_PPCTOC)
- /* setting GPR2 but not really needed, GPR12 is needed */
++ /* setting GPR2 but not really needed, GPR12 is needed */
VG_(threads)[tid].arch.vex.guest_GPR2 = freeres_wrapper;
- VG_(threads)[tid].arch.vex.guest_GPR12 = freeres_wrapper;
-@@ -2610,9 +2612,10 @@ asm("\n"
+ VG_TRACK(post_reg_write, Vg_CoreClientReq, tid,
+ offsetof(VexGuestPPC64State, guest_GPR2),
+@@ -2657,9 +2659,10 @@ asm("\n"
"\ttrap\n"
".previous\n"
);
@@ -359,7 +358,7 @@ index bf4a71284..102235dca 100644
So we must have one, and that is what goes into the .opd section. */
"\t.align 2\n"
"\t.global _start\n"
-@@ -2656,9 +2659,9 @@ asm("\n"
+@@ -2703,9 +2706,9 @@ asm("\n"
"\tnop\n"
"\ttrap\n"
);
@@ -373,7 +372,7 @@ index bf4a71284..102235dca 100644
asm("\n"
"\t.align 2\n"
diff --git a/coregrind/m_sigframe/sigframe-ppc64-linux.c b/coregrind/m_sigframe/sigframe-ppc64-linux.c
-index b16606c22..cc657838f 100644
+index b16606c..cc65783 100644
--- a/coregrind/m_sigframe/sigframe-ppc64-linux.c
+++ b/coregrind/m_sigframe/sigframe-ppc64-linux.c
@@ -263,7 +263,8 @@ void VG_(sigframe_create)( ThreadId tid,
@@ -387,10 +386,10 @@ index b16606c22..cc657838f 100644
tst->arch.vex.guest_CIA = (Addr) ((ULong*)handler)[0];
#else
diff --git a/coregrind/m_signals.c b/coregrind/m_signals.c
-index e572f17cc..52d939057 100644
+index 7591eb3..51fce79 100644
--- a/coregrind/m_signals.c
+++ b/coregrind/m_signals.c
-@@ -889,7 +889,9 @@ extern void my_sigreturn(void);
+@@ -897,7 +897,9 @@ extern void my_sigreturn(void);
" sc\n" \
".previous\n"
@@ -401,7 +400,7 @@ index e572f17cc..52d939057 100644
# define _MY_SIGRETURN(name) \
".align 2\n" \
".globl my_sigreturn\n" \
-@@ -904,9 +906,10 @@ extern void my_sigreturn(void);
+@@ -912,9 +914,10 @@ extern void my_sigreturn(void);
" li 0, " #name "\n" \
" sc\n"
@@ -416,7 +415,7 @@ index e572f17cc..52d939057 100644
# define _MY_SIGRETURN(name) \
".align 2\n" \
diff --git a/coregrind/m_stacktrace.c b/coregrind/m_stacktrace.c
-index 24f1409dd..9be4c6da9 100644
+index b3ac89f..5ff90ef 100644
--- a/coregrind/m_stacktrace.c
+++ b/coregrind/m_stacktrace.c
@@ -726,7 +726,8 @@ UInt VG_(get_StackTrace_wrk) ( ThreadId tid_if_known,
@@ -460,7 +459,7 @@ index 24f1409dd..9be4c6da9 100644
ppc64-linux. If LR points to our magic return stub,
then we are in a wrapped or intercepted function, in
diff --git a/coregrind/m_syscall.c b/coregrind/m_syscall.c
-index 5948cecf5..c1cdfab27 100644
+index 5948cec..c1cdfab 100644
--- a/coregrind/m_syscall.c
+++ b/coregrind/m_syscall.c
@@ -470,7 +470,8 @@ asm(
@@ -493,7 +492,7 @@ index 5948cecf5..c1cdfab27 100644
asm(
".align 2\n"
diff --git a/coregrind/m_syswrap/syscall-ppc64be-linux.S b/coregrind/m_syswrap/syscall-ppc64be-linux.S
-index 16e9cedc0..db0d8b4aa 100644
+index 16e9ced..db0d8b4 100644
--- a/coregrind/m_syswrap/syscall-ppc64be-linux.S
+++ b/coregrind/m_syswrap/syscall-ppc64be-linux.S
@@ -76,11 +76,24 @@
@@ -534,7 +533,7 @@ index 16e9cedc0..db0d8b4aa 100644
/* export the ranges so that
VG_(fixup_guest_state_after_syscall_interrupted) can do the
diff --git a/coregrind/m_syswrap/syswrap-ppc64-linux.c b/coregrind/m_syswrap/syswrap-ppc64-linux.c
-index 6549dd1b3..4ecbe38a6 100644
+index eada099..7186fe3 100644
--- a/coregrind/m_syswrap/syswrap-ppc64-linux.c
+++ b/coregrind/m_syswrap/syswrap-ppc64-linux.c
@@ -41,6 +41,7 @@
@@ -575,7 +574,7 @@ index 6549dd1b3..4ecbe38a6 100644
" .globl do_syscall_clone_ppc64_linux\n"
" .section \".opd\",\"aw\"\n"
diff --git a/coregrind/m_trampoline.S b/coregrind/m_trampoline.S
-index 0488b54bd..d00916aef 100644
+index 0488b54..d00916a 100644
--- a/coregrind/m_trampoline.S
+++ b/coregrind/m_trampoline.S
@@ -469,11 +469,11 @@ VG_(ppctoc_magic_redirect_return_stub):
@@ -593,7 +592,7 @@ index 0488b54bd..d00916aef 100644
.align 3
VG_(ppc64_linux_REDIR_FOR_strlen):
diff --git a/coregrind/m_translate.c b/coregrind/m_translate.c
-index 3602a4663..bdd1d50ee 100644
+index 3602a46..6dd2845 100644
--- a/coregrind/m_translate.c
+++ b/coregrind/m_translate.c
@@ -1006,7 +1006,8 @@ static IRExpr* mkU32 ( UInt n ) {
@@ -606,7 +605,7 @@ index 3602a4663..bdd1d50ee 100644
static IRExpr* mkU8 ( UChar n ) {
return IRExpr_Const(IRConst_U8(n));
}
-@@ -1234,7 +1234,8 @@ static void gen_push_and_set_LR_R2 ( IRSB* bb, Addr new_R2_value )
+@@ -1234,7 +1235,8 @@ static void gen_push_and_set_LR_R2 ( IRSB* bb, Addr new_R2_value )
}
#endif
@@ -616,7 +615,7 @@ index 3602a4663..bdd1d50ee 100644
static void gen_pop_R2_LR_then_bLR ( IRSB* bb )
{
-@@ -1263,7 +1264,8 @@ static void gen_pop_R2_LR_then_bLR ( IRSB* bb )
+@@ -1263,7 +1265,8 @@ static void gen_pop_R2_LR_then_bLR ( IRSB* bb )
}
#endif
@@ -626,7 +625,7 @@ index 3602a4663..bdd1d50ee 100644
static
Bool mk_preamble__ppctoc_magic_return_stub ( void* closureV, IRSB* bb )
-@@ -1285,7 +1287,7 @@ Bool mk_preamble__ppctoc_magic_return_stub ( void* closureV, IRSB* bb )
+@@ -1285,7 +1288,7 @@ Bool mk_preamble__ppctoc_magic_return_stub ( void* closureV, IRSB* bb )
}
#endif
@@ -635,7 +634,7 @@ index 3602a4663..bdd1d50ee 100644
/* Generate code to push LR and R2 onto this thread's redir stack.
Need to save R2 in case we redirect to a global entry point. The
value of R2 is not preserved when entering the global entry point.
-@@ -1366,9 +1368,7 @@ Bool mk_preamble__set_NRADDR_to_zero ( void* closureV, IRSB* bb )
+@@ -1366,9 +1369,7 @@ Bool mk_preamble__set_NRADDR_to_zero ( void* closureV, IRSB* bb )
gen_push_and_set_LR_R2 ( bb, VG_(get_tocptr)( VG_(current_DiEpoch)(),
closure->readdr ) );
}
@@ -646,16 +645,17 @@ index 3602a4663..bdd1d50ee 100644
VgCallbackClosure* closure = (VgCallbackClosure*)closureV;
Int offB_GPR12 = offsetof(VexGuestArchState, guest_GPR12);
addStmtToIRSB(bb, IRStmt_Put(offB_GPR12, mkU64(closure->readdr)));
-@@ -1424,7 +1424,6 @@ Bool mk_preamble__set_NRADDR_to_nraddr ( void* closureV, IRSB* bb )
+@@ -1424,8 +1425,7 @@ Bool mk_preamble__set_NRADDR_to_nraddr ( void* closureV, IRSB* bb )
);
- gen_push_and_set_LR_R2 ( bb, VG_(get_tocptr)( closure->readdr ) );
+ gen_push_and_set_LR_R2 ( bb, VG_(get_tocptr)( VG_(current_DiEpoch)(),
+ closure->readdr ) );
-# endif
-#if defined(VGP_ppc64le_linux)
+#elif defined(VGP_ppc64be_linux) || defined(VGP_ppc64le_linux)
/* This saves the r2 before leaving the function. We need to move
* guest_NRADDR_GPR2 back to R2 on return.
*/
-@@ -1648,7 +1647,8 @@ Bool VG_(translate) ( ThreadId tid,
+@@ -1648,7 +1648,8 @@ Bool VG_(translate) ( ThreadId tid,
preamble_fn = mk_preamble__set_NRADDR_to_nraddr;
/* LE we setup the LR */
@@ -665,7 +665,7 @@ index 3602a4663..bdd1d50ee 100644
if (nraddr == (Addr)&VG_(ppctoc_magic_redirect_return_stub)) {
/* If entering the special return stub, this means a wrapped or
redirected function is returning. Make this translation one
-@@ -1692,13 +1692,14 @@ Bool VG_(translate) ( ThreadId tid,
+@@ -1692,13 +1693,14 @@ Bool VG_(translate) ( ThreadId tid,
vex_abiinfo.guest_ppc_zap_RZ_at_bl = NULL;
# endif
@@ -683,7 +683,7 @@ index 3602a4663..bdd1d50ee 100644
vex_abiinfo.guest_ppc_zap_RZ_at_bl = const_True;
vex_abiinfo.host_ppc_calls_use_fndescrs = False;
diff --git a/coregrind/m_ume/elf.c b/coregrind/m_ume/elf.c
-index 21eb52bcb..f1e6b4728 100644
+index 21eb52b..f1e6b47 100644
--- a/coregrind/m_ume/elf.c
+++ b/coregrind/m_ume/elf.c
@@ -847,8 +847,8 @@ Int VG_(load_ELF)(Int fd, const HChar* name, /*MOD*/ExeInfo* info)
@@ -709,7 +709,7 @@ index 21eb52bcb..f1e6b4728 100644
info->init_toc = 0; /* meaningless on this platform */
#else
diff --git a/coregrind/pub_core_machine.h b/coregrind/pub_core_machine.h
-index d6af843df..400148d57 100644
+index d6af843..400148d 100644
--- a/coregrind/pub_core_machine.h
+++ b/coregrind/pub_core_machine.h
@@ -60,12 +60,20 @@
@@ -736,7 +736,7 @@ index d6af843df..400148d57 100644
# define VG_ELF_DATA2XXX ELFDATA2LSB
# define VG_ELF_MACHINE EM_ARM
diff --git a/coregrind/vg_preloaded.c b/coregrind/vg_preloaded.c
-index ad033432a..f300fbe80 100644
+index ad03343..f300fbe 100644
--- a/coregrind/vg_preloaded.c
+++ b/coregrind/vg_preloaded.c
@@ -45,6 +45,7 @@
@@ -757,7 +757,7 @@ index ad033432a..f300fbe80 100644
address for the client request, but return the function descriptor
from this function.
diff --git a/include/valgrind.h b/include/valgrind.h
-index 577c8f05e..99e058ccf 100644
+index cc8c2b8..3d30e7f 100644
--- a/include/valgrind.h
+++ b/include/valgrind.h
@@ -143,12 +143,20 @@
@@ -786,7 +786,7 @@ index 577c8f05e..99e058ccf 100644
# define PLAT_arm_linux 1
#elif defined(__linux__) && defined(__aarch64__) && !defined(__arm__)
diff --git a/memcheck/mc_leakcheck.c b/memcheck/mc_leakcheck.c
-index 782244481..c239f5b10 100644
+index 7822444..c239f5b 100644
--- a/memcheck/mc_leakcheck.c
+++ b/memcheck/mc_leakcheck.c
@@ -653,7 +653,7 @@ static Bool aligned_ptr_above_page0_is_vtable_addr(Addr ptr)
@@ -799,19 +799,19 @@ index 782244481..c239f5b10 100644
// more level of indirection to follow.
if (seg == NULL
diff --git a/memcheck/mc_machine.c b/memcheck/mc_machine.c
-index 5ed101fca..70c64b361 100644
+index 4ce746e..e03ab33 100644
--- a/memcheck/mc_machine.c
+++ b/memcheck/mc_machine.c
@@ -132,7 +132,8 @@ static Int get_otrack_shadow_offset_wrk ( Int offset, Int szB )
return GOF(GPRn);
by testing ox instead of o, and setting ox back 4 bytes when sz == 4.
*/
--#if defined(VGA_ppc64le)
-+#if (defined(VGA_ppc64be) && (defined(_CALL_ELF) && _CALL_ELF == 2)) \
-+ || defined(VGA_ppc64le)
+-# if defined(VGA_ppc64le)
++# if (defined(VGA_ppc64be) && (defined(_CALL_ELF) && _CALL_ELF == 2)) \
++ || defined(VGA_ppc64le)
Int ox = o;
- #else
+ # else
Int ox = sz == 8 ? o : (o - 4);
--
-2.18.0
+2.21.0
diff --git a/user/valgrind/APKBUILD b/user/valgrind/APKBUILD
index fc710b4b2..b64d13df7 100644
--- a/user/valgrind/APKBUILD
+++ b/user/valgrind/APKBUILD
@@ -1,36 +1,34 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=valgrind
-pkgver=3.13.0
-pkgrel=5
+pkgver=3.21.0
+pkgrel=0
pkgdesc="A tool to help find memory-management problems in programs"
-url="http://valgrind.org/"
+url="https://valgrind.org/"
arch="all"
-license="GPL-2.0+"
-makedepends="autoconf automake libtool bash perl cmd:which"
# from README_PACKAGERS:
# Don't strip the debug info off lib/valgrind/$platform/vgpreload*.so
# in the installation tree. Either Valgrind won't work at all, or it
# will still work if you do, but will generate less helpful error
# messages.
options="!strip !check"
+license="GPL-2.0+"
+depends=""
+makedepends="autoconf automake libtool bash perl cmd:which"
subpackages="$pkgname-dev $pkgname-doc"
source="ftp://sourceware.org/pub/$pkgname/$pkgname-$pkgver.tar.bz2
0001-Ensure-ELFv2-is-supported-on-PPC64.patch
arm.patch
- realloc.patch
- suppressions.patch
- uclibc.patch
+ ppc32.patch
+ ppc64-support-tkill.patch
"
prepare() {
default_prepare
- cd "$builddir"
aclocal && autoconf && automake --add-missing
echo '#include <linux/a.out.h>' > include/a.out.h
}
build() {
- cd "$builddir"
# fails to build with ccache
export CC="gcc"
export CFLAGS="$CFLAGS -fno-stack-protector -no-pie"
@@ -47,12 +45,10 @@ build() {
}
check() {
- cd "$buildir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
# we have options=!strip above so we strip the /usr/bin/* manually
@@ -60,14 +56,12 @@ package() {
strip "$pkgdir"/usr/bin/valgrind \
"$pkgdir"/usr/bin/valgrind-di-server \
"$pkgdir"/usr/bin/vgdb \
- "$pkgdir"/usr/bin/valgrind-listener \
- "$pkgdir"/usr/bin/cg_merge
+ "$pkgdir"/usr/bin/valgrind-listener
fi
}
-sha512sums="34e1013cd3815d30a459b86220e871bb0a6209cc9e87af968f347083693779f022e986f211bdf1a5184ad7370cde12ff2cfca8099967ff94732970bd04a97009 valgrind-3.13.0.tar.bz2
-71afb12748f69f0976a299c65572818b70cbce5d04f230a49a50f114351d8083c59a9e197cefbcb9145806797ff4d1d54488f50342b680c9a2b76e4a7f7cf305 0001-Ensure-ELFv2-is-supported-on-PPC64.patch
+sha512sums="3e86cda2f2d6cd30807fac7933ba2c46a97a2b4a868db989e6b0cceeadf029af7ee34ba900466a346948289aacb30f4399799bb83b97cc49a4d2d810441e5cfd valgrind-3.21.0.tar.bz2
+f90aa3cef5d3561d4602ff63b8f355b8427cbe6bb2ecd6bfc2e2bb063915fa40a70d923dbc60a643ee3fb7bcfbbddac049c6f6133c541189dd82b891f7ad9dbc 0001-Ensure-ELFv2-is-supported-on-PPC64.patch
9ee297d1b2b86891584443ad0caadc4977e1447979611ccf1cc55dbee61911b0b063bc4ad936d86c451cedae410cb3219b5a088b2ad0aa17df182d564fe36cfe arm.patch
-57086a768f3876b26b0e507bc159a73f0955f03d5af8cc30e21103e348ca67f2e58b5555a5a97f299751c6602692ad43d8346bb68a80917d740fb4d65bba9665 realloc.patch
-d011b2769d35ca3206967e6dac9f3fb24a6496e5bbfdc73342382245c89375b09d6948b10ba3cf8aa0050c79c0dd13b75764aec0ec5c6ac479fa930941067747 suppressions.patch
-d59a10db9037e120df2ee94a103402ca95a79abee9d8be63e4e1bca29c82dca775cc402a79b854ec11a2160a4d2da202c237369418e221d1925267ea2613fd5d uclibc.patch"
+25804fafe2372808c29233ec7415a94633ef17c72c9bd1d78a5c1da53fad2ed8e76da2d0923ff0a73fad8a86b7709c5ea3774b35be6a5b4c1ef1a55bc86b2c18 ppc32.patch
+daf819d0f9bbbaf4243c7bf931fed840f1f55304df1b45d4a72ceaf8403b8e0e1fc8079343b86106f0741aa812560a466389d7d3878c5547f3ff7a9e46e63df7 ppc64-support-tkill.patch"
diff --git a/user/valgrind/ppc32.patch b/user/valgrind/ppc32.patch
new file mode 100644
index 000000000..093eae132
--- /dev/null
+++ b/user/valgrind/ppc32.patch
@@ -0,0 +1,15 @@
+--- valgrind-3.21.0/VEX/priv/main_main.c.old 2023-01-07 14:48:48.000000000 +0000
++++ valgrind-3.21.0/VEX/priv/main_main.c 2024-10-01 21:53:47.879017945 +0000
+@@ -2047,10 +2047,10 @@
+ }
+
+ /* ISA 3.0 not supported on 32-bit machines */
+- if ((hwcaps & VEX_HWCAPS_PPC32_ISA3_0) != 0) {
++ /*if ((hwcaps & VEX_HWCAPS_PPC32_ISA3_0) != 0) {
+ invalid_hwcaps(arch, hwcaps,
+ "ISA 3.0 not supported in 32-bit mode \n");
+- }
++ }*/
+ return;
+ }
+
diff --git a/user/valgrind/ppc64-support-tkill.patch b/user/valgrind/ppc64-support-tkill.patch
new file mode 100644
index 000000000..b763be05e
--- /dev/null
+++ b/user/valgrind/ppc64-support-tkill.patch
@@ -0,0 +1,14 @@
+On musl, the generic support works fine.
+
+This prevents spurious memcheck and cachegrind failures on ppc64.
+--- valgrind-3.19.0/coregrind/m_syswrap/syswrap-ppc64-linux.c.old 2022-06-11 03:12:37.140000000 -0500
++++ valgrind-3.19.0/coregrind/m_syswrap/syswrap-ppc64-linux.c 2022-06-11 03:13:33.550000000 -0500
+@@ -852,7 +852,7 @@
+ GENX_(__NR_madvise, sys_madvise), // 205
+ // _____(__NR_mincore, sys_mincore), // 206
+ LINX_(__NR_gettid, sys_gettid), // 207
+-// _____(__NR_tkill, sys_tkill), // 208
++ LINXY(__NR_tkill, sys_tkill), // 208
+ LINX_(__NR_setxattr, sys_setxattr), // 209
+
+ LINX_(__NR_lsetxattr, sys_lsetxattr), // 210
diff --git a/user/valgrind/realloc.patch b/user/valgrind/realloc.patch
deleted file mode 100644
index d0eb795b8..000000000
--- a/user/valgrind/realloc.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- valgrind-3.13.0/coregrind/m_replacemalloc/vg_replace_malloc.c
-+++ valgrind-3.13.0/coregrind/m_replacemalloc/vg_replace_malloc.c
-@@ -765,13 +765,15 @@ static void init(void);
- DO_INIT; \
- MALLOC_TRACE("realloc(%p,%llu)", ptrV, (ULong)new_size ); \
- \
-- if (ptrV == NULL) \
-- /* We need to call a malloc-like function; so let's use \
-- one which we know exists. */ \
-- return VG_REPLACE_FUNCTION_EZU(10010,VG_Z_LIBC_SONAME,malloc) \
-- (new_size); \
-+ if (ptrV == NULL) { \
-+ TRIGGER_MEMCHECK_ERROR_IF_UNDEFINED(new_size); \
-+ v = (void*)VALGRIND_NON_SIMD_CALL1( info.tl_malloc, new_size ); \
-+ MALLOC_TRACE(" = %p\n", v ); \
-+ return v; \
-+ } \
- if (new_size <= 0) { \
-- VG_REPLACE_FUNCTION_EZU(10050,VG_Z_LIBC_SONAME,free)(ptrV); \
-+ if (ptrV != NULL) \
-+ VALGRIND_NON_SIMD_CALL1( info.tl_free, ptrV ); \
- MALLOC_TRACE(" = 0\n"); \
- return NULL; \
- } \
diff --git a/user/valgrind/suppressions.patch b/user/valgrind/suppressions.patch
deleted file mode 100644
index a91b93fdf..000000000
--- a/user/valgrind/suppressions.patch
+++ /dev/null
@@ -1,24 +0,0 @@
---- valgrind-3.13.0/configure.ac.old 2017-06-15 13:37:01.000000000 +0000
-+++ valgrind-3.13.0/configure.ac 2018-10-02 21:46:48.710000000 +0000
-@@ -1034,7 +1034,7 @@
- musl)
- AC_MSG_RESULT(Musl)
- AC_DEFINE([MUSL_LIBC], 1, [Define to 1 if you're using Musl libc])
-- # no DEFAULT_SUPP file yet for musl libc.
-+ DEFAULT_SUPP="musl.supp ${DEFAULT_SUPP}"
- ;;
- 2.0|2.1|*)
- AC_MSG_RESULT([unsupported version ${GLIBC_VERSION}])
---- /dev/null 2018-07-03 06:46:12.010000000 +0000
-+++ valgrind-3.13.0/musl.supp 2018-10-02 21:44:57.240000000 +0000
-@@ -0,0 +1,10 @@
-+# musl does not free `dso` structs allocated during linking on exit.
-+{
-+ musl:dynlinker
-+ Memcheck:Leak
-+ match-leak-kinds: reachable
-+ fun:calloc
-+ ...
-+ fun:__dls3
-+ obj:/lib/ld-musl-*
-+}
diff --git a/user/valgrind/uclibc.patch b/user/valgrind/uclibc.patch
deleted file mode 100644
index 69281ab2c..000000000
--- a/user/valgrind/uclibc.patch
+++ /dev/null
@@ -1,10 +0,0 @@
---- ./coregrind/vg_preloaded.c.orig
-+++ ./coregrind/vg_preloaded.c
-@@ -42,6 +42,7 @@
- originates from Valgrind.
- ------------------------------------------------------------------ */
-
-+#include <features.h>
- #include "pub_core_basics.h"
- #include "pub_core_clreq.h"
- #include "pub_core_debuginfo.h" // Needed for pub_core_redir.h
diff --git a/user/vamp-sdk/APKBUILD b/user/vamp-sdk/APKBUILD
index b97a8c2df..f0620a97b 100644
--- a/user/vamp-sdk/APKBUILD
+++ b/user/vamp-sdk/APKBUILD
@@ -1,21 +1,21 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=vamp-sdk
-pkgver=2.7.1
+pkgver=2.10.0
pkgrel=0
pkgdesc="SDK for developing Vamp audio analysis plugins"
url="https://vamp-plugins.org/develop.html"
arch="all"
-options="!check" # no tests
+options="!check" # No test suite.
license="BSD-3-Clause AND MIT"
+depends=""
makedepends="libsndfile-dev"
subpackages="$pkgname-dev"
-source="https://code.soundsoftware.ac.uk/attachments/download/2206/vamp-plugin-sdk-$pkgver.tar.gz"
-sha512sums="91dd7cae72334718dcbdac06b1ffa3f3ba76e977b82b928ab634d9982aa15ca4e30978a7778215753c61e56831077d7634d24e65e468ab6a8a87a5957fb09bf3 vamp-plugin-sdk-2.7.1.tar.gz"
+source="https://distfiles.apkfission.net/src/vamp-plugin-sdk-$pkgver.tar.gz"
+#source="https://code.soundsoftware.ac.uk/attachments/download/2691/vamp-plugin-sdk-$pkgver.tar.gz"
builddir="$srcdir/vamp-plugin-sdk-$pkgver"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -23,11 +23,11 @@ build() {
--sysconfdir=/etc \
--mandir=/usr/share/man \
--localstatedir=/var
- make
+ make -j1
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make -j1 DESTDIR="$pkgdir" install
}
+sha512sums="153b7f2fa01b77c65ad393ca0689742d66421017fd5931d216caa0fcf6909355fff74706fabbc062a3a04588a619c9b515a1dae00f21a57afd97902a355c48ed vamp-plugin-sdk-2.10.0.tar.gz"
diff --git a/user/vde2/APKBUILD b/user/vde2/APKBUILD
index f30051321..b9a93beb4 100644
--- a/user/vde2/APKBUILD
+++ b/user/vde2/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer:
pkgname=vde2
pkgver=2.3.2
-pkgrel=8
+pkgrel=11
pkgdesc="Virtual Distributed Ethernet - User mode networking for QEMU et al"
url="http://vde.sourceforge.net/"
arch="all"
@@ -12,20 +12,19 @@ makedepends="linux-headers libpcap-dev openssl-dev python3-dev"
subpackages="$pkgname-doc $pkgname-dev $pkgname-libs"
install="vde2.pre-install"
source="http://downloads.sourceforge.net/project/vde/vde2/$pkgver/vde2-$pkgver.tar.gz
+ gcc8.patch
musl-build-fix.patch
+ openssl11.patch
vde2.pre-up
vde2.post-down
"
prepare() {
- cd "$builddir"
default_prepare
-
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -37,7 +36,6 @@ build() {
}
package() {
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
install -Dm755 "$srcdir"/vde2.pre-up \
@@ -53,6 +51,8 @@ libs() {
}
sha512sums="b502ceac8eebd30694a25d913c1d321b58ec8ae97dec0b09acc40455f7a97c05040ff395242c144580a9d9d5cb19292055bc94133ea1bde66bfdab40844533a8 vde2-2.3.2.tar.gz
+abf09ff1f96998b48225dd0b0bb69b72c3c2cbaa3faa96048977083f0a8c72b16f052a71da22c6fb0712dbad531c5fda6f6e5abeea41c8f33edba2bf5a702dc3 gcc8.patch
52d02c3a5a4f5526ed2e653e5720f012501215c0440e26105c585ea0501423da04047f6bad13a71b7378397a9d9274b191007d839876b675e206ed5be0f25372 musl-build-fix.patch
+e24f7728030c1bc89b885c58ecf443d0f7297f6c9f73d87fa37092a691dfac191e65fb07a11ed44b718bbd18011fdb4e034f66ef63a8fbb06dfb06fd51c3826a openssl11.patch
71b29d538bba80b881f239d683215279089c14e8feec05bf27c159ead51094cdfb168281900fa4527f588c624e8f7687df8d3f79377e07d13ad64de613177df3 vde2.pre-up
d1cf18146145dbe608842c694b05d2906e36553b0ba3fa1ec2e53dbf06027b9e4937ea61aee77c1ccbb73b818f19d55787051eb6d5b09a38c7d18a1dad629190 vde2.post-down"
diff --git a/user/vde2/gcc8.patch b/user/vde2/gcc8.patch
new file mode 100644
index 000000000..0dbe083d0
--- /dev/null
+++ b/user/vde2/gcc8.patch
@@ -0,0 +1,44 @@
+From 67bc8443ac7e8144a78d84dee30a5cac3b5c99a4 Mon Sep 17 00:00:00 2001
+From: Romain Naour <romain.naour@gmail.com>
+Date: Sun, 27 Aug 2017 23:56:05 +0200
+Subject: [PATCH] fstp: Add static to inline functions
+
+From [1]
+"This is needed to avoid a link error where the inline functions appear
+missing at link time.
+From c99 standard inline function should either be declared static or
+have an extern instance in a c file for linking.
+This fix is necessary to build with gcc 7; for some reason it was not
+trigerred before."
+
+[1] https://git.buildroot.net/buildroot/commit/?id=21133ada326c87627f7bdee4493d8086587c3cca
+
+Signed-off-by: Romain Naour <romain.naour@gmail.com>
+---
+ src/vde_switch/fstp.c | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/src/vde_switch/fstp.c b/src/vde_switch/fstp.c
+index aab7324..b1e7ee8 100644
+--- a/src/vde_switch/fstp.c
++++ b/src/vde_switch/fstp.c
+@@ -30,14 +30,14 @@ static int numports;
+ #ifdef FSTP
+ #include <fstp.h>
+ /*********************** sending macro used by FSTP & Core ******************/
+-void inline ltonstring(unsigned long l,unsigned char *s) {
++static void inline ltonstring(unsigned long l,unsigned char *s) {
+ s[3]=l; l>>=8;
+ s[2]=l; l>>=8;
+ s[1]=l; l>>=8;
+ s[0]=l;
+ }
+
+-unsigned long inline nstringtol(unsigned char *s) {
++static unsigned long inline nstringtol(unsigned char *s) {
+ return (s[0]<<24)+(s[1]<<16)+(s[2]<<8)+s[3];
+ }
+
+--
+2.9.5
+
diff --git a/user/vde2/openssl11.patch b/user/vde2/openssl11.patch
new file mode 100644
index 000000000..227312eab
--- /dev/null
+++ b/user/vde2/openssl11.patch
@@ -0,0 +1,92 @@
+--- a/src/vde_cryptcab/cryptcab.c 2011-11-23 16:41:17.000000000 +0000
++++ b/src/vde_cryptcab/cryptcab.c 2017-03-20 22:54:20.452975075 +0000
+@@ -22,7 +22,7 @@
+ exit(1);
+ }
+
+-static EVP_CIPHER_CTX ctx;
++static EVP_CIPHER_CTX *ctx;
+ static int ctx_initialized = 0;
+ static int encryption_disabled = 0;
+ static int nfd;
+@@ -30,6 +30,10 @@
+ static struct vde_open_args open_args={.port=0,.group=NULL,.mode=0700};
+ static int verbose = 0;
+
++#if OPENSSL_VERSION_NUMBER < 0x10100000
++#define EVP_CIPHER_CTX_reset(x) EVP_CIPHER_CTX_cleanup(x)
++#endif
++
+ void vc_printlog(int priority, const char *format, ...)
+ {
+ va_list arg;
+@@ -103,19 +107,21 @@
+ }
+
+ if (!ctx_initialized) {
+- EVP_CIPHER_CTX_init (&ctx);
++ ctx = EVP_CIPHER_CTX_new ();
++ if (!ctx)
++ return -1;
+ ctx_initialized = 1;
+ }
+
+- EVP_EncryptInit (&ctx, EVP_bf_cbc (), p->key, p->iv);
+- if (EVP_EncryptUpdate (&ctx, dst, &olen, src, len) != 1)
++ EVP_EncryptInit (ctx, EVP_bf_cbc (), p->key, p->iv);
++ if (EVP_EncryptUpdate (ctx, dst, &olen, src, len) != 1)
+ {
+ fprintf (stderr,"error in encrypt update\n");
+ olen = -1;
+ goto cleanup;
+ }
+
+- if (EVP_EncryptFinal (&ctx, dst + olen, &tlen) != 1)
++ if (EVP_EncryptFinal (ctx, dst + olen, &tlen) != 1)
+ {
+ fprintf (stderr,"error in encrypt final\n");
+ olen = -1;
+@@ -124,7 +130,7 @@
+ olen += tlen;
+
+ cleanup:
+- EVP_CIPHER_CTX_cleanup(&ctx);
++ EVP_CIPHER_CTX_reset(ctx);
+ return olen;
+ }
+
+@@ -138,19 +144,21 @@
+ }
+
+ if (!ctx_initialized) {
+- EVP_CIPHER_CTX_init (&ctx);
++ ctx = EVP_CIPHER_CTX_new ();
++ if (!ctx)
++ return -1;
+ ctx_initialized = 1;
+ }
+
+- EVP_DecryptInit (&ctx, EVP_bf_cbc (), p->key, p->iv);
+- if (EVP_DecryptUpdate (&ctx, dst, &olen, src, len) != 1)
++ EVP_DecryptInit (ctx, EVP_bf_cbc (), p->key, p->iv);
++ if (EVP_DecryptUpdate (ctx, dst, &olen, src, len) != 1)
+ {
+ fprintf (stderr,"error in decrypt update\n");
+ olen = -1;
+ goto cleanup;
+ }
+
+- if (EVP_DecryptFinal (&ctx, dst + olen, &tlen) != 1)
++ if (EVP_DecryptFinal (ctx, dst + olen, &tlen) != 1)
+ {
+ fprintf (stderr,"error in decrypt final\n");
+ olen = -1;
+@@ -159,7 +167,7 @@
+ olen += tlen;
+
+ cleanup:
+- EVP_CIPHER_CTX_cleanup(&ctx);
++ EVP_CIPHER_CTX_reset (ctx);
+ return olen;
+ }
+
diff --git a/user/vde2/vde2.pre-install b/user/vde2/vde2.pre-install
index 3c3e08d47..3c86dc732 100644
--- a/user/vde2/vde2.pre-install
+++ b/user/vde2/vde2.pre-install
@@ -1,6 +1,7 @@
#!/bin/sh
-addgroup -S vde2-net 2>/dev/null
-adduser -S -D -H -h /var/run/vde2 -s /sbin/nologin -G vde2-net -g vde2-net vde2-net 2>/dev/null
+groupadd -r vde2-net 2>/dev/null
+useradd -c vde2-net -s /sbin/nologin -g vde2-net \
+ -m -d /var/run/vde2 -r vde2-net 2>/dev/null
exit 0
diff --git a/user/viewres/APKBUILD b/user/viewres/APKBUILD
index 0185ca839..b5b52bd01 100644
--- a/user/viewres/APKBUILD
+++ b/user/viewres/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=viewres
-pkgver=1.0.5
+pkgver=1.0.7
pkgrel=0
pkgdesc="View widget class trees in software using Athena widgets (Xaw)"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="libxaw-dev libxmu-dev libxt-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/viewres-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="fe573e9b5ae679b65eee95733cbea20c86c92089c3a2dadfe977bc9c54d1f58c5e5f4663e51a1cf206543a43592b3a3c266da1769279f08be85c66b0aa5b0f7f viewres-1.0.5.tar.bz2"
+sha512sums="75878faee001163891adf8472c79b31273f794e23dd775c80b33acdd1ce76df708eb27a49c20f79b7101ad676e1d50d9c857c2e2e0930c6209eeb7af8a11397c viewres-1.0.7.tar.xz"
diff --git a/user/vlc/APKBUILD b/user/vlc/APKBUILD
index a06e293ed..bd23a9899 100644
--- a/user/vlc/APKBUILD
+++ b/user/vlc/APKBUILD
@@ -2,7 +2,7 @@
# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=vlc
-pkgver=3.0.6
+pkgver=3.0.20
pkgrel=1
pkgdesc="Multi-platform MPEG, VCD/DVD, and DivX player"
triggers="vlc-libs.trigger=/usr/lib/vlc/plugins"
@@ -11,35 +11,10 @@ pkggroups="vlc"
url="https://www.videolan.org/vlc/"
arch="all"
license="GPL-2.0+"
-options="!checkroot textrel"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-qt $pkgname-xorg
- $pkgname-daemon::noarch $pkgname-libs $pkgname-plugins
- $pkgname-lang
-
- $pkgname-plugins-access:plugins_access
- $pkgname-plugins-access_output:plugins_access_output
- $pkgname-plugins-audio_filter:plugins_audio_filter
- $pkgname-plugins-audio_mixer:plugins_audio_mixer
- $pkgname-plugins-audio_output:plugins_audio_output
- $pkgname-plugins-codec:plugins_codec
- $pkgname-plugins-control:plugins_control
- $pkgname-plugins-demux:plugins_demux
- $pkgname-plugins-gui:plugins_gui
- $pkgname-plugins-lua:plugins_lua
- $pkgname-plugins-meta_engine:plugins_meta_engine
- $pkgname-plugins-misc:plugins_misc
- $pkgname-plugins-mux:plugins_mux
- $pkgname-plugins-notify:plugins_notify
- $pkgname-plugins-packetizer:plugins_packetizer
- $pkgname-plugins-services_discovery:plugins_services_discovery
- $pkgname-plugins-stream_filter:plugins_stream_filter
- $pkgname-plugins-stream_out:plugins_stream_out
- $pkgname-plugins-text_renderer:plugins_text_renderer
- $pkgname-plugins-video_chroma:plugins_video_chroma
- $pkgname-plugins-video_filter:plugins_video_filter
- $pkgname-plugins-video_output:plugins_video_output
- $pkgname-plugins-visualization:plugins_visualization"
-depends="ttf-dejavu $pkgname-plugins"
+options="textrel"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-qt $pkgname-pulse
+ $pkgname-daemon::noarch $pkgname-libs $pkgname-lang"
+depends="ttf-dejavu xdg-utils"
# Generic dependencies, then X11, then multimedia libraries
makedepends="autoconf automake bison eudev-dev flex libarchive-dev
libgcrypt-dev libtool libxml2-dev lua5.3-dev ncurses-dev sysfsutils-dev
@@ -48,7 +23,7 @@ makedepends="autoconf automake bison eudev-dev flex libarchive-dev
libjpeg-turbo-dev libsm-dev libx11-dev libxext-dev libxinerama-dev
libxpm-dev libxv-dev mesa-dev qt5-qtbase-dev qt5-qtsvg-dev sdl2-dev
qt5-qtx11extras-dev xcb-util-keysyms-dev xcb-util-renderutil-dev
- xdg-utils
+ xdg-utils libglvnd-dev
a52dec-dev alsa-lib-dev faad2-dev ffmpeg-dev flac-dev fluidsynth-dev
gstreamer-dev gst-plugins-base-dev libaacs-dev libavc1394-dev
@@ -58,6 +33,7 @@ makedepends="autoconf automake bison eudev-dev flex libarchive-dev
libraw1394-dev>=2.0.1 librsvg-dev libshout-dev libtheora-dev libva-dev
libvdpau-dev libvorbis-dev live-media-dev opus-dev pulseaudio-dev
speex-dev speexdsp-dev taglib-dev v4l-utils-dev x264-dev x265-dev"
+replaces="vlc-plugins vlc-xorg"
source="https://get.videolan.org/vlc/$pkgver/vlc-$pkgver.tar.xz
check-headless.patch
disable-sub-autodetect-fuzzy-1-test.patch
@@ -67,12 +43,28 @@ source="https://get.videolan.org/vlc/$pkgver/vlc-$pkgver.tar.xz
omxil-rpi-codecs.patch
tar-compat.patch
test-s390x.patch
- vlc-libs.trigger
+
+ $pkgname.initd
+ $pkgname.confd
"
-# secfixes:
+# secfixes: vlc_media_player
# 3.0.4-r2:
# - CVE-2018-19857
+# 3.0.8-r0:
+# - CVE-2019-13602
+# - CVE-2019-13615
+# - CVE-2019-13962
+# - CVE-2019-14437
+# - CVE-2019-14438
+# - CVE-2019-14498
+# - CVE-2019-14533
+# - CVE-2019-14534
+# - CVE-2019-14535
+# - CVE-2019-14776
+# - CVE-2019-14777
+# - CVE-2019-14778
+# - CVE-2019-14970
prepare() {
default_prepare
@@ -81,13 +73,13 @@ prepare() {
build() {
local _arch_opts=
- cd "$builddir"
export CFLAGS="$CFLAGS -D_GNU_SOURCE"
case "$CARCH" in
arm*) _arch_opts="--enable-omxil --enable-omxil-vout --enable-rpi-omxil" ;;
aarch64) _arch_opts="--enable-neon" ;;
ppc64*) _arch_opts="--enable-altivec" ;;
+ ppc) _arch_opts="--disable-altivec" ;;
x86* | pmmx) _arch_opts="--disable-mmx --disable-sse" ;;
esac
@@ -151,7 +143,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
# delete cache as it's autocreated by trigger
rm -rf "$pkgdir"/usr/lib/vlc/plugins/plugins.dat
@@ -161,47 +152,27 @@ package() {
}
check() {
- cd "$builddir"
make check
}
-plugins() {
- pkgdesc="$pkgname all plugins meta package"
- depends="$pkgname-plugins-access
- $pkgname-plugins-access_output
- $pkgname-plugins-audio_filter
- $pkgname-plugins-audio_mixer
- $pkgname-plugins-audio_output
- $pkgname-plugins-codec
- $pkgname-plugins-control
- $pkgname-plugins-demux
- $pkgname-plugins-gui
- $pkgname-plugins-lua
- $pkgname-plugins-meta_engine
- $pkgname-plugins-misc
- $pkgname-plugins-mux
- $pkgname-plugins-notify
- $pkgname-plugins-packetizer
- $pkgname-plugins-services_discovery
- $pkgname-plugins-stream_filter
- $pkgname-plugins-stream_out
- $pkgname-plugins-text_renderer
- $pkgname-plugins-video_chroma
- $pkgname-plugins-video_filter
- $pkgname-plugins-video_output
- $pkgname-plugins-visualization"
- mkdir -p "$subpkgdir"
-}
-
_mv() {
- local dir=${1%/*}
+ local dir="${1%/*}"
mkdir -p "$subpkgdir"/$dir
mv "$1" "$subpkgdir"/$dir/
}
+pulse() {
+ pkgdesc="PulseAudio support for VLC"
+ depends=""
+ install_if="vlc=$pkgver-r$pkgrel pulseaudio"
+ mkdir -p "$subpkgdir"/usr/lib/vlc
+ mv "$pkgdir"/usr/lib/vlc/libvlc_pulse* "$subpkgdir"/usr/lib/vlc/
+}
+
qt() {
pkgdesc="Qt frontend for VLC"
- depends="vlc-xorg=$pkgver-r$pkgrel"
+ depends="vlc=$pkgver-r$pkgrel"
+ install_if="vlc=$pkgver-r$pkgrel qt5-qtbase-x11"
cd "$pkgdir"
# scan for elf files that directly or indirectly depends on
# libQt* libraries
@@ -216,32 +187,6 @@ qt() {
"$subpkgdir"/usr/bin/
}
-xorg() {
- pkgdesc="Video LAN X.org support"
- depends="xdg-utils vlc=$pkgver-r$pkgrel"
-
- # scan for elf files that directly or indirectly depends on
- # libX* libraries
- cd "$pkgdir"
- for i in $(find . -type f ); do
- if ldd $i 2>/dev/null | grep -E -q "libX|x11|libxcb|libGL"; then
- echo $i | grep libavcodec_plugin.so || _mv "$i" || return 1
- fi
- done
-
- mkdir -p "$subpkgdir"/usr/bin
- mv "$pkgdir"/usr/bin/svlc \
- "$subpkgdir"/usr/bin
-
- mkdir -p "$subpkgdir"/usr/share/vlc
- mv "$pkgdir"/usr/share/applications \
- "$pkgdir"/usr/share/icons \
- "$subpkgdir"/usr/share/
-
- mv "$pkgdir"/usr/share/vlc/skins2 \
- "$subpkgdir"/usr/share/vlc
-}
-
daemon() {
pkgdesc="Support for running VLC as a daemon"
install="vlc-daemon.pre-install"
@@ -249,8 +194,8 @@ daemon() {
mkdir -p "$subpkgdir"
cd "$pkgdir"
- install -D -m755 ../../vlc.initd $subpkgdir/etc/init.d/vlc
- install -D -m664 ../../vlc.confd $subpkgdir/etc/conf.d/vlc
+ install -D -m755 "$srcdir"/vlc.initd "$subpkgdir"/etc/init.d/vlc
+ install -D -m664 "$srcdir"/vlc.confd "$subpkgdir"/etc/conf.d/vlc
install -d -o vlc -g vlc "$subpkgdir"/var/log/vlc
}
@@ -262,46 +207,14 @@ libs() {
default_libs
}
-_mv_plugins() {
- local plugin=$1
- pkgdesc="$pkgname $plugin plugin"
- depends=
- mkdir -p "$subpkgdir"/usr/lib/vlc/plugins
- mv "$pkgdir"/usr/lib/vlc/plugins/"$plugin" \
- "$subpkgdir"/usr/lib/vlc/plugins
-}
-
-plugins_access() { _mv_plugins access; }
-plugins_access_output() { _mv_plugins access_output; }
-plugins_audio_filter() { _mv_plugins audio_filter; }
-plugins_audio_mixer() { _mv_plugins audio_mixer; }
-plugins_audio_output() { _mv_plugins audio_output; }
-plugins_codec() { _mv_plugins codec; }
-plugins_control() { _mv_plugins control; }
-plugins_demux() { _mv_plugins demux; }
-plugins_gui() { _mv_plugins gui; }
-plugins_lua() { _mv_plugins lua; }
-plugins_meta_engine() { _mv_plugins meta_engine; }
-plugins_misc() { _mv_plugins misc; }
-plugins_mux() { _mv_plugins mux; }
-plugins_notify() { _mv_plugins notify; }
-plugins_packetizer() { _mv_plugins packetizer; }
-plugins_services_discovery() { _mv_plugins services_discovery; }
-plugins_stream_filter() { _mv_plugins stream_filter; }
-plugins_stream_out() { _mv_plugins stream_out; }
-plugins_text_renderer() { _mv_plugins text_renderer; }
-plugins_video_chroma() { _mv_plugins video_chroma; }
-plugins_video_filter() { _mv_plugins video_filter; }
-plugins_video_output() { _mv_plugins video_output; }
-plugins_visualization() { _mv_plugins visualization; }
-
-sha512sums="7c72e98f30ce5c5a94d74e097fa9960442f89240079b042a729f8a33dd7fedee2538c86c99738ccef2eb27f29055f0221d4c70316e3312c5ebba9565eaa15c52 vlc-3.0.6.tar.xz
+sha512sums="02e58fb52dd75bf483ac4b298aecf86463b13d4782173d164adba6e4552d9262ff5e2ee1cbe1bce2c8a809801b79f328c6a8c475d34ae62aefaea02ae5ade406 vlc-3.0.20.tar.xz
22d80df599b8b65a5439cefbb7140af8e9530f326d54945da3769af65f37518b99ec2cc8647aafd2763324a0698280915afe043cc87e5720c4694881ed35bffa check-headless.patch
e214b407235cb3afb8bec93f20c9b42957b57e6fd3960679d3d4235e77762e03e64d03c01f00ef63d589e7c85aaad02ce6abbeeccd66b1867bc92451a5b5e9b0 disable-sub-autodetect-fuzzy-1-test.patch
e063c727d952465bbea33f669db49190427521dc8e2291e9a5cbb0f5e8e879bd3ba76855e44bd4630948e30c4329d27bd928f95de20fe1050d5e839778a4d012 endian-fix.patch
63adb16b3a1927ee3de27ac339cbfbbaa346a69928c527f883259d1e03b5cb59f26a55feeda767837b448c455de584abcb53dc733b2845c0cc13621d72e7f6fd fix-testing.patch
35f83e38a6a0dd1e3c37e3dc6d63b1406d2f9454ed246854c1408d6f35ad74b743c5b0dbc19442bab65aad4268707ffa85bfda9e72b2d711c1d3412d955bf150 lua.patch
e13e398b7bfd977f6e099bcb6cf8dc5cd5bad6dea3eff715881826246dc4329468846084aff2576de2b7fd28d3f06e7c327a6e4511a28d22e5cd198a81146c89 omxil-rpi-codecs.patch
-a117ca4d7fd66a5f959fdeaddfdce2f8442fe9f2c13995bb7f4792a7745c00813813aa962f76e957e3b0735344a5dc000e0644ce09f23458802a2932231655c3 tar-compat.patch
+3557686d76ab26fd401cb8758944b23173e6983f55b34d923d6808a2cc1f8efa9d0de58ab3b1664c713a579d1a94c4fcd8d731327eebd23c599bf037571e5406 tar-compat.patch
c0107655249687655846a9547ca1a5670b9207443180600e7a149c69ffb96d7226787c19b018d4033db9b284c1a5faa8d7d42188ed40c3b8bb051256febf11c5 test-s390x.patch
-b67b6e21e9d4027aef1006e6057f9ba8e65ce3895b08f7b911b1675cff9bc423f64ee2c187c584860e9e5d4635a30408a7781add9694d9bba753eac37f357406 vlc-libs.trigger"
+55e245190b443dde9c7215ea5210612fcca164900a9a4b025ccf0d1e3fc5206d00b52355b256974421e37c609875627f1db19f0f5a084511aec0daf677ecc9d6 vlc.initd
+d89190dca1b8b2c3faca5863dc6c7e6eb24e05178e6f75ed752fd3c6a73cb8a42d2625b6e56453296b7096ea868be642ecd42745dac20e7f13fc67dd3c3c7c49 vlc.confd"
diff --git a/user/vlc/tar-compat.patch b/user/vlc/tar-compat.patch
index 34169ef56..6cbfb88ce 100644
--- a/user/vlc/tar-compat.patch
+++ b/user/vlc/tar-compat.patch
@@ -1,9 +1,9 @@
---- vlc-3.0.1/share/Makefile.am.old 2018-02-06 18:41:06.000000000 +0000
-+++ vlc-3.0.1/share/Makefile.am 2018-04-05 23:19:37.081889895 +0000
-@@ -94,7 +94,7 @@
- $(AM_V_at)rm -f -- skins2/default.vlt.tmp
- $(AM_V_GEN)GZIP=--no-name \
+--- vlc-3.0.11/share/Makefile.am.old 2020-04-05 13:46:34.000000000 +0000
++++ vlc-3.0.11/share/Makefile.am 2020-07-07 20:50:05.832207915 +0000
+@@ -97,7 +97,7 @@
+ GZIP=--no-name \
tar cvvzf skins2/default.vlt.tmp \
+ --format=ustar $$tarsort \
- --owner=root --group=root --directory="$(srcdir)/skins2" \
+ --uid=0 --gid=0 --directory="$(srcdir)/skins2" \
default/
diff --git a/user/vlc/vlc-daemon.pre-install b/user/vlc/vlc-daemon.pre-install
index aed6c1893..5ebf91ac7 100644
--- a/user/vlc/vlc-daemon.pre-install
+++ b/user/vlc/vlc-daemon.pre-install
@@ -1,15 +1,9 @@
#!/bin/sh
-groups="vlc audio video"
-
-for group in $groups; do
- addgroup -S $group 2>/dev/null
-done
-adduser -S -D -h /home/vlc -s /bin/sh -G vlc -g vlc vlc 2>/dev/null
-
-# make sure vlc are in all groups
-for group in $groups; do
- addgroup vlc $group 2>/dev/null
-done
+groupadd -r vlc 2>/dev/null
+groupadd -r audio 2>/dev/null
+groupadd -r video 2>/dev/null
+useradd -c vlc -s /sbin/nologin -g vlc -G audio,video \
+ -m -d /home/vlc -r vlc 2>/dev/null
exit 0
diff --git a/user/vlc/vlc-libs.trigger b/user/vlc/vlc-libs.trigger
index c13bace99..163806314 100644
--- a/user/vlc/vlc-libs.trigger
+++ b/user/vlc/vlc-libs.trigger
@@ -1,5 +1,5 @@
#!/bin/sh
-exec /usr/lib/vlc/vlc-cache-gen "$@" >&/dev/null
+exec /usr/lib/vlc/vlc-cache-gen "$@" >/dev/null 2>&1
exit 0
diff --git a/user/volume_key/APKBUILD b/user/volume_key/APKBUILD
index db26d40e2..69da50792 100644
--- a/user/volume_key/APKBUILD
+++ b/user/volume_key/APKBUILD
@@ -2,45 +2,49 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=volume_key
pkgver=0.3.12
-pkgrel=0
+pkgrel=2
pkgdesc="Storage volume encryption key management library"
url="https://pagure.io/volume_key"
arch="all"
options="!check" # well, this is busted.
license="GPL-2.0+"
depends=""
-makedepends="cryptsetup-dev glib-dev gpgme-dev nss-dev python3-dev
- util-linux-dev"
checkdepends="nss-tools"
+makedepends="cryptsetup-dev glib-dev gpgme-dev nss-dev python3-dev
+ util-linux-dev autoconf automake libtool"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang py-$pkgname:py"
source="https://releases.pagure.org/volume_key/volume_key-$pkgver.tar.xz"
+prepare() {
+ autoreconf -i #998
+ default_prepare
+}
+
build() {
- cd "$builddir"
- ./configure \
+ PYTHON3=python3.11 ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var
+ --localstatedir=/var \
+ --with-python=no \
+ --with-python3
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
py() {
pkgdesc="$pkgdesc (Python 3 bindings)"
mkdir -p "$subpkgdir"/usr/lib/
- mv "$pkgdir"/usr/lib/python3.6 "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/lib/python3.* "$subpkgdir"/usr/lib/
}
sha512sums="d056154c9b9d23e4eb661946dd59ed97e116903a3afcff9d9e29258408082f33dcbb69958724143f6bf191a3da488a03b6c02af287790990ed6459e29d66553c volume_key-0.3.12.tar.xz"
diff --git a/user/vorbis-tools/APKBUILD b/user/vorbis-tools/APKBUILD
new file mode 100644
index 000000000..eaf358c07
--- /dev/null
+++ b/user/vorbis-tools/APKBUILD
@@ -0,0 +1,43 @@
+# Contributor: Nathan <ndowens@artixlinux.org>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=vorbis-tools
+pkgver=1.4.0
+pkgrel=1
+pkgdesc="Tools for Ogg-Vorbis"
+url="https://www.xiph.org/vorbis"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="curl-dev flac-dev libvorbis-dev
+ libao-dev speex-dev"
+subpackages="$pkgname-lang $pkgname-doc"
+source="http://downloads.xiph.org/releases/vorbis/vorbis-tools-$pkgver.tar.gz
+ CVE-2014-9638-and-9639.patch
+ CVE-2014-9640.patch
+ CVE-2015-6749.patch
+ "
+
+prepare() {
+ update_config_guess
+ default_prepare
+}
+
+build() {
+ ./configure \
+ --prefix=/usr \
+ --enable-vcut
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="d2473f2e8e6726b5a5083f567797ae42bbb7fa3f26aec3f7b83e641e028c64726299f71a9d75258595a53cf29c18acb84841bcbc39509258d2c8df859e4e3b99 vorbis-tools-1.4.0.tar.gz
+fbe006c1de1b5d03dd84a3213d840468658129bc83f1fad9bcb738d53fd0f76b5f2ebc17b95c456d8b73456b313282bad5e08703649ba8b506371e6c8b466557 CVE-2014-9638-and-9639.patch
+9cb9ca5a7cc648e75a4b0027f29f59edd81156578864c46cc2ff773435175a35ea2f31da480e983d05c23d1285d59f0f8a0ec97dd57ba8c11ee5786b619fbaa2 CVE-2014-9640.patch
+bf49f572e023678a12d764e459d518f067499a07bd9fe6c037e00730349e066d96174a52043f61dff44fd788b336018c68ae4d26ebe279dc6bf0a07852048ff0 CVE-2015-6749.patch"
diff --git a/user/vorbis-tools/CVE-2014-9638-and-9639.patch b/user/vorbis-tools/CVE-2014-9638-and-9639.patch
new file mode 100644
index 000000000..2585b47be
--- /dev/null
+++ b/user/vorbis-tools/CVE-2014-9638-and-9639.patch
@@ -0,0 +1,87 @@
+From 3bbabc06c4b35c84f6747ed850213161aca568c7 Mon Sep 17 00:00:00 2001
+From: Petter Reinholdtsen <pere@debian.org>
+Date: Tue, 22 Sep 2015 15:14:06 +0200
+Subject: [PATCH] oggenc: validate count of channels in the header
+ (CVE-2014-9638 & CVE-2014-9639)
+
+Author: Kamil Dudka <kdudka@redhat.com>
+Origin: http://lists.xiph.org/pipermail/vorbis-dev/2015-February/020423.html
+Bug: https://trac.xiph.org/ticket/2136
+Bug: https://trac.xiph.org/ticket/2137
+Bug-Debian: https://bugs.debian.org/776086
+Forwarded: not-needed
+Reviewed-By: Petter Reinholdtsen <pere@hungry.com>
+Last-Update: 2015-09-22
+---
+ oggenc/audio.c | 18 ++++++++++++++++--
+ 1 file changed, 16 insertions(+), 2 deletions(-)
+
+diff --git a/oggenc/audio.c b/oggenc/audio.c
+index 4921fb9..535a704 100644
+--- a/oggenc/audio.c
++++ b/oggenc/audio.c
+@@ -13,6 +13,7 @@
+ #include <config.h>
+ #endif
+
++#include <limits.h>
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
+@@ -251,6 +252,7 @@ int aiff_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen)
+ aiff_fmt format;
+ aifffile *aiff = malloc(sizeof(aifffile));
+ int i;
++ long channels;
+
+ if(buf[11]=='C')
+ aifc=1;
+@@ -277,11 +279,16 @@ int aiff_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen)
+ return 0;
+ }
+
+- format.channels = READ_U16_BE(buffer);
++ format.channels = channels = READ_U16_BE(buffer);
+ format.totalframes = READ_U32_BE(buffer+2);
+ format.samplesize = READ_U16_BE(buffer+6);
+ format.rate = (int)read_IEEE80(buffer+8);
+
++ if(channels <= 0L || SHRT_MAX < channels)
++ {
++ fprintf(stderr, _("Warning: Unsupported count of channels in AIFF header\n"));
++ return 0;
++ }
+ aiff->bigendian = 1;
+
+ if(aifc)
+@@ -416,6 +423,7 @@ int wav_open(FILE *in, oe_enc_opt *opt, unsigned char *oldbuf, int buflen)
+ wav_fmt format;
+ wavfile *wav = malloc(sizeof(wavfile));
+ int i;
++ long channels;
+
+ /* Ok. At this point, we know we have a WAV file. Now we have to detect
+ * whether we support the subtype, and we have to find the actual data
+@@ -453,12 +461,18 @@ int wav_open(FILE *in, oe_enc_opt *opt, unsigned char *oldbuf, int buflen)
+ }
+
+ format.format = READ_U16_LE(buf);
+- format.channels = READ_U16_LE(buf+2);
++ format.channels = channels = READ_U16_LE(buf+2);
+ format.samplerate = READ_U32_LE(buf+4);
+ format.bytespersec = READ_U32_LE(buf+8);
+ format.align = READ_U16_LE(buf+12);
+ format.samplesize = READ_U16_LE(buf+14);
+
++ if(channels <= 0L || SHRT_MAX < channels)
++ {
++ fprintf(stderr, _("Warning: Unsupported count of channels in WAV header\n"));
++ return 0;
++ }
++
+ if(format.format == -2) /* WAVE_FORMAT_EXTENSIBLE */
+ {
+ if(len<40)
+--
+GitLab
+
diff --git a/user/vorbis-tools/CVE-2014-9640.patch b/user/vorbis-tools/CVE-2014-9640.patch
new file mode 100644
index 000000000..f21994b58
--- /dev/null
+++ b/user/vorbis-tools/CVE-2014-9640.patch
@@ -0,0 +1,51 @@
+From 514116d7bea89dad9f1deb7617b2277b5e9115cd Mon Sep 17 00:00:00 2001
+From: Gregory Maxwell <greg@xiph.org>
+Date: Wed, 16 Apr 2014 23:55:10 +0000
+Subject: [PATCH] oggenc: fix crash on raw file close, reported by Hanno in
+ issue #2009. pointer to a non-static struct was escaping its scope. Also fix
+ a C99-ism.
+
+svn path=/trunk/vorbis-tools/; revision=19117
+---
+ oggenc/oggenc.c | 4 ++--
+ oggenc/skeleton.h | 2 +-
+ 2 files changed, 3 insertions(+), 3 deletions(-)
+
+diff --git a/oggenc/oggenc.c b/oggenc/oggenc.c
+index 4a120f3..e7de0bb 100644
+--- a/oggenc/oggenc.c
++++ b/oggenc/oggenc.c
+@@ -97,6 +97,8 @@ int main(int argc, char **argv)
+ .3,-1,
+ 0,0,0.f,
+ 0, 0, 0, 0, 0};
++ input_format raw_format = {NULL, 0, raw_open, wav_close, "raw",
++ N_("RAW file reader")};
+
+ int i;
+
+@@ -239,8 +241,6 @@ int main(int argc, char **argv)
+
+ if(opt.rawmode)
+ {
+- input_format raw_format = {NULL, 0, raw_open, wav_close, "raw",
+- N_("RAW file reader")};
+
+ enc_opts.rate=opt.raw_samplerate;
+ enc_opts.channels=opt.raw_channels;
+diff --git a/oggenc/skeleton.h b/oggenc/skeleton.h
+index cf87dc2..168b8b6 100644
+--- a/oggenc/skeleton.h
++++ b/oggenc/skeleton.h
+@@ -41,7 +41,7 @@ typedef struct {
+ ogg_int64_t granule_rate_d; /* granule rate denominator */
+ ogg_int64_t start_granule; /* start granule value */
+ ogg_uint32_t preroll; /* preroll */
+- unsigned char granule_shift; // a 8-bit field /* 1 byte value holding the granule shift */
++ unsigned char granule_shift; /* 1 byte value holding the granule shift */
+ char *message_header_fields; /* holds all the message header fields */
+ /* current total size of the message header fields, for realloc purpose, initially zero */
+ ogg_uint32_t current_header_size;
+--
+GitLab
+
diff --git a/user/vorbis-tools/CVE-2015-6749.patch b/user/vorbis-tools/CVE-2015-6749.patch
new file mode 100644
index 000000000..b83f70cc2
--- /dev/null
+++ b/user/vorbis-tools/CVE-2015-6749.patch
@@ -0,0 +1,46 @@
+From c1059cd1e5c9278fe73a044d0e0792cac75f44b3 Mon Sep 17 00:00:00 2001
+From: Petter Reinholdtsen <pere@debian.org>
+Date: Tue, 22 Sep 2015 14:56:58 +0200
+Subject: [PATCH] oggenc: Fix large alloca on bad AIFF input (CVE-2015-6749).
+
+Author: Mark Harris <mark.hsj@gmail.com>
+Origin: https://trac.xiph.org/attachment/ticket/2212/0001-oggenc-Fix-large-alloca-on-bad-AIFF-input.patch
+Bug-Debian: https://bugs.debian.org/797461
+Forwarded: https://trac.xiph.org/ticket/2212
+Reviewed-By: Petter Reinholdtsen <pere@hungry.com>
+Last-Update: 2015-09-22
+---
+ oggenc/audio.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/oggenc/audio.c b/oggenc/audio.c
+index 477da8c..4921fb9 100644
+--- a/oggenc/audio.c
++++ b/oggenc/audio.c
+@@ -245,8 +245,8 @@ static int aiff_permute_matrix[6][6] =
+ int aiff_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen)
+ {
+ int aifc; /* AIFC or AIFF? */
+- unsigned int len;
+- unsigned char *buffer;
++ unsigned int len, readlen;
++ unsigned char buffer[22];
+ unsigned char buf2[8];
+ aiff_fmt format;
+ aifffile *aiff = malloc(sizeof(aifffile));
+@@ -269,9 +269,9 @@ int aiff_open(FILE *in, oe_enc_opt *opt, unsigned char *buf, int buflen)
+ return 0; /* Weird common chunk */
+ }
+
+- buffer = alloca(len);
+-
+- if(fread(buffer,1,len,in) < len)
++ readlen = len < sizeof(buffer) ? len : sizeof(buffer);
++ if(fread(buffer,1,readlen,in) < readlen ||
++ (len > readlen && !seek_forward(in, len-readlen)))
+ {
+ fprintf(stderr, _("Warning: Unexpected EOF in reading AIFF header\n"));
+ return 0;
+--
+GitLab
+
diff --git a/user/vte/APKBUILD b/user/vte/APKBUILD
index adcc489d5..749f9b859 100644
--- a/user/vte/APKBUILD
+++ b/user/vte/APKBUILD
@@ -1,37 +1,33 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=vte
-pkgver=0.56.1
-pkgrel=0
+pkgver=0.62.0
+pkgrel=2
pkgdesc="Virtual terminal emulator library for Gnome"
url="https://www.gnome.org"
arch="all"
license="LGPL-2.1+ AND GPL-3.0+ AND LGPL-3.0+ AND MIT AND LGPL-2.0+"
-makedepends="intltool gtk+3.0-dev gnutls-dev zlib-dev pcre2-dev
- gobject-introspection-dev vala vala-dev libxml2-utils"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
+makedepends="gnutls-dev gtk+3.0-dev gnutls-dev gobject-introspection-dev icu-dev
+ libxml2-utils meson ninja pcre2-dev vala vala-dev zlib-dev"
+subpackages="$pkgname-dev $pkgname-lang"
source="https://download.gnome.org/sources/vte/${pkgver%.*}/vte-$pkgver.tar.xz
exitcode.patch
+ gcc-volatile.patch
"
build() {
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
+ meson -Dprefix=/usr -D_systemd=false build
+ ninja -C build
}
check() {
- make check
+ ninja -C build test
}
package() {
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" ninja -C build install
}
-sha512sums="74a6404d4e8f13e8b006c59e8cd63e660407ef217c1f80bfd7d0b72c395411558929760c1d98eea9ecb9010df725506c31c953b23e541c03f4a8a93e78066436 vte-0.56.1.tar.xz
-4987254439a136f66a7b7be1300f5efbf85db74bdb64fdd8d0c9a555173a172b4fd519174f932e73d58a2618ef37273e82fe681bb129891f2792a414025f6c61 exitcode.patch"
+sha512sums="8942809d20ff845142dce8cf48b4eb6f9e4f333dc2647cceb0538112d5e10096ff836f24da1f0c34cc4bbee4f6c585c3feab33934c257887a82d6c67bce11402 vte-0.62.0.tar.xz
+4987254439a136f66a7b7be1300f5efbf85db74bdb64fdd8d0c9a555173a172b4fd519174f932e73d58a2618ef37273e82fe681bb129891f2792a414025f6c61 exitcode.patch
+8d45f85a451868ec49fc263e60a1ab943ecea172ec32091ac9e2b85f0e9c7091423313eb4bbe037eac2b75086cd8c9d307bd0c37d58d4051742d9e2c579340a4 gcc-volatile.patch"
diff --git a/user/vte/gcc-volatile.patch b/user/vte/gcc-volatile.patch
new file mode 100644
index 000000000..924d4e16b
--- /dev/null
+++ b/user/vte/gcc-volatile.patch
@@ -0,0 +1,45 @@
+From 89e9230dc1a27b89cca16de32e903918a27b8e42 Mon Sep 17 00:00:00 2001
+From: Christian Persch <chpe@src.gnome.org>
+Date: Mon, 16 Nov 2020 20:27:48 +0100
+Subject: [PATCH] lib: Drop wrong use of volatile
+
+---
+ src/vtetypebuiltins.cc.template | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/vtetypebuiltins.cc.template b/src/vtetypebuiltins.cc.template
+index dade41de7..3a50d4011 100644
+--- a/src/vtetypebuiltins.cc.template
++++ b/src/vtetypebuiltins.cc.template
+@@ -11,9 +11,9 @@
+ GType
+ @enum_name@_get_type (void)
+ {
+- static volatile gsize g_define_type_id__volatile = 0;
++ static gsize g_define_type_id = 0;
+
+- if (g_once_init_enter (&g_define_type_id__volatile)) {
++ if (g_once_init_enter (&g_define_type_id)) {
+ static const G@Type@Value values[] = {
+ /*** END value-header ***/
+
+@@ -24,13 +24,13 @@ GType
+ /*** BEGIN value-tail ***/
+ { 0, NULL, NULL }
+ };
+- GType g_define_type_id = \
++ GType type_id = \
+ g_@type@_register_static (g_intern_static_string ("@EnumName@"), values);
+
+- g_once_init_leave (&g_define_type_id__volatile, g_define_type_id);
++ g_once_init_leave (&g_define_type_id, type_id);
+ }
+
+- return g_define_type_id__volatile;
++ return g_define_type_id;
+ }
+
+ /*** END value-tail ***/
+--
+GitLab
+
diff --git a/user/vulkan-headers/APKBUILD b/user/vulkan-headers/APKBUILD
new file mode 100644
index 000000000..90cb90654
--- /dev/null
+++ b/user/vulkan-headers/APKBUILD
@@ -0,0 +1,41 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=vulkan-headers
+pkgver=1.3.294
+pkgrel=0
+pkgdesc="Development files for Vulkan"
+url="https://www.vulkan.org/"
+arch="noarch"
+options="!check !dev" # no testsuite, headers-only project
+license="Apache-2.0 AND MIT"
+depends=""
+makedepends="cmake"
+subpackages=""
+source="vulkan-headers-$pkgver.tar.gz::https://github.com/KhronosGroup/Vulkan-Headers/archive/refs/tags/v$pkgver.tar.gz"
+builddir="$srcdir/Vulkan-Headers-$pkgver"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="a2a2ccd2fa64acebb2ed3d54b9954d3a465b30542b72cff71d321ba49c75f1396519b8510159140d48e4ebae94169a6dccf21a85586079a10b22c4affd0944b4 vulkan-headers-1.3.294.tar.gz"
diff --git a/user/vulkan-loader/APKBUILD b/user/vulkan-loader/APKBUILD
new file mode 100644
index 000000000..6ba3c9ee6
--- /dev/null
+++ b/user/vulkan-loader/APKBUILD
@@ -0,0 +1,42 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=vulkan-loader
+pkgver=1.3.294
+pkgrel=0
+pkgdesc="Client driver loader for Vulkan"
+url="https://www.vulkan.org/"
+arch="all"
+license="Apache-2.0 AND MIT"
+depends=""
+depends_dev="vulkan-headers"
+makedepends="$depends_dev cmake libx11-dev libxcb-dev libxrandr-dev
+ wayland-dev wayland-protocols"
+subpackages="$pkgname-dev"
+source="vulkan-loader-$pkgver.tar.gz::https://github.com/KhronosGroup/Vulkan-Loader/archive/refs/tags/v$pkgver.tar.gz"
+builddir="$srcdir/Vulkan-Loader-$pkgver"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="ab040f54bacb0694ba373c8d2d2cdf450c7b74467d8deb62fb3c47340156eb5c77e6122d6450cbe6db9e66100a6000ad677acfd45a391fdb4c157bd9c0736e07 vulkan-loader-1.3.294.tar.gz"
diff --git a/user/w3m/APKBUILD b/user/w3m/APKBUILD
index 134acd67d..702675358 100644
--- a/user/w3m/APKBUILD
+++ b/user/w3m/APKBUILD
@@ -2,6 +2,8 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=w3m
pkgver=0.5.3_git20190105
+_pkgverp="${pkgver%_*}+${pkgver#*_}"
+_pkgverm="${pkgver%_*}-${pkgver#*_}"
pkgrel=0
pkgdesc="Text-based Web browser"
url="http://w3m.sourceforge.net/"
@@ -12,11 +14,10 @@ depends="compface"
makedepends="compface-dev gc-dev gdk-pixbuf-dev glib-dev gtk+2.0-dev imlib2-dev
libbsd-dev libx11-dev ncurses-dev openssl-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="w3m-$pkgver.tar.gz::https://github.com/tats/w3m/archive/v0.5.3+git20190105.tar.gz"
-builddir="$srcdir"/w3m-${pkgver/_/-}
+source="w3m-$pkgver.tar.gz::https://github.com/tats/w3m/archive/v$_pkgverp.tar.gz"
+builddir="$srcdir/$pkgname-$_pkgverm"
build() {
- cd "$builddir"
LIBS="-lX11 -ltinfo" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,7 +30,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/wavpack/APKBUILD b/user/wavpack/APKBUILD
index e59ef255e..4edead71b 100644
--- a/user/wavpack/APKBUILD
+++ b/user/wavpack/APKBUILD
@@ -1,9 +1,9 @@
-# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
-# Contributor: Carlo Landmeter
+# Contributor: Sergey Lukin <sergej.lukin@gmail.com>
+# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer:
pkgname=wavpack
-pkgver=5.1.0
-pkgrel=4
+pkgver=5.3.0
+pkgrel=0
pkgdesc="Audio compression format with lossless, lossy, and hybrid compression modes"
url="http://www.wavpack.com/"
arch="all"
@@ -12,25 +12,33 @@ license="BSD-3-Clause"
depends=""
makedepends=""
subpackages="$pkgname-dev $pkgname-doc"
-source="http://www.wavpack.com/$pkgname-$pkgver.tar.bz2
- cve2018-19840.patch
- cve2018-19841.patch
- "
+source="http://www.wavpack.com/$pkgname-$pkgver.tar.bz2"
# secfixes:
+# 5.2.0-r0:
+# - CVE-2018-6767
+# - CVE-2018-7253
+# - CVE-2018-7254
+# - CVE-2018-10536
+# - CVE-2018-10537
+# - CVE-2018-10538
+# - CVE-2018-10539
+# - CVE-2018-10540
+# - CVE-2019-11498
+# - CVE-2019-1010315
+# - CVE-2019-1010317
+# - CVE-2019-1010319
# 5.1.0-r4:
-# - CVE-2018-19840
-# - CVE-2018-19840
+# - CVE-2018-19840
+# - CVE-2018-19841
# 5.1.0-r0:
-# - CVE-2016-10169
-# - CVE-2016-10170
-# - CVE-2016-10171
-# - CVE-2016-10172
+# - CVE-2016-10169
+# - CVE-2016-10170
+# - CVE-2016-10171
+# - CVE-2016-10172
build() {
- cd "$builddir"
-
- local _arch_opts=
+ _arch_opts=""
case "$CARCH" in
x86 | x86_64) _arch_opts="--enable-mmx" ;;
esac
@@ -48,10 +56,7 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="4c31616ae63c3a875afa20f26ce935f7a8f9921e2892b4b8388eca3ccd83b2d686f43eed8b9ec1dead934a1148401b9dced3b05f509b7942c48d7af31cf80a54 wavpack-5.1.0.tar.bz2
-67d02dd744c638d126cf5a894d1ff2c39726bd4d3771ef7410ea782e5c9a0f9341909432bd4bea9b8959891c38699601c1aac2da6e0eaddaa5a4d679e7f58dd2 cve2018-19840.patch
-dba007fa8cb2537b6f6c8ee559a98e501e948260ce7e7af7d3fdc8c9145bbbbf85c8fed8030de354459c4b08d3015a0ea769a948636bdfd66e567c0a2d2493c6 cve2018-19841.patch"
+sha512sums="2c5038abfbe7ab3b51fb30b3fc8b636117e9afe1821c40832fbdfb960d1153e0cb4a68dd84a89b205c3cdc10030d3aa7a7340b296d9c148e8847471c2e7c0cd1 wavpack-5.3.0.tar.bz2"
diff --git a/user/wavpack/cve2018-19840.patch b/user/wavpack/cve2018-19840.patch
deleted file mode 100644
index 2da022025..000000000
--- a/user/wavpack/cve2018-19840.patch
+++ /dev/null
@@ -1,25 +0,0 @@
-From 070ef6f138956d9ea9612e69586152339dbefe51 Mon Sep 17 00:00:00 2001
-From: David Bryant <david@wavpack.com>
-Date: Thu, 29 Nov 2018 21:00:42 -0800
-Subject: [PATCH] issue #53: error out on zero sample rate
-
----
- src/pack_utils.c | 5 +++++
- 1 file changed, 5 insertions(+)
-
-diff --git a/src/pack_utils.c b/src/pack_utils.c
-index 2253f0d..2a83497 100644
---- a/src/pack_utils.c
-+++ b/src/pack_utils.c
-@@ -195,6 +195,11 @@ int WavpackSetConfiguration64 (WavpackContext *wpc, WavpackConfig *config, int64
- int num_chans = config->num_channels;
- int i;
-
-+ if (!config->sample_rate) {
-+ strcpy (wpc->error_message, "sample rate cannot be zero!");
-+ return FALSE;
-+ }
-+
- wpc->stream_version = (config->flags & CONFIG_COMPATIBLE_WRITE) ? CUR_STREAM_VERS : MAX_STREAM_VERS;
-
- if ((config->qmode & QMODE_DSD_AUDIO) && config->bytes_per_sample == 1 && config->bits_per_sample == 8) {
diff --git a/user/wavpack/cve2018-19841.patch b/user/wavpack/cve2018-19841.patch
deleted file mode 100644
index 6872ed91e..000000000
--- a/user/wavpack/cve2018-19841.patch
+++ /dev/null
@@ -1,29 +0,0 @@
-From bba5389dc598a92bdf2b297c3ea34620b6679b5b Mon Sep 17 00:00:00 2001
-From: David Bryant <david@wavpack.com>
-Date: Thu, 29 Nov 2018 21:53:51 -0800
-Subject: [PATCH] issue #54: fix potential out-of-bounds heap read
-
----
- src/open_utils.c | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/src/open_utils.c b/src/open_utils.c
-index 80051fc..4fe0d67 100644
---- a/src/open_utils.c
-+++ b/src/open_utils.c
-@@ -1258,13 +1258,13 @@ int WavpackVerifySingleBlock (unsigned char *buffer, int verify_checksum)
- #endif
-
- if (meta_bc == 4) {
-- if (*dp++ != (csum & 0xff) || *dp++ != ((csum >> 8) & 0xff) || *dp++ != ((csum >> 16) & 0xff) || *dp++ != ((csum >> 24) & 0xff))
-+ if (*dp != (csum & 0xff) || dp[1] != ((csum >> 8) & 0xff) || dp[2] != ((csum >> 16) & 0xff) || dp[3] != ((csum >> 24) & 0xff))
- return FALSE;
- }
- else {
- csum ^= csum >> 16;
-
-- if (*dp++ != (csum & 0xff) || *dp++ != ((csum >> 8) & 0xff))
-+ if (*dp != (csum & 0xff) || dp[1] != ((csum >> 8) & 0xff))
- return FALSE;
- }
-
diff --git a/user/wayfire/APKBUILD b/user/wayfire/APKBUILD
new file mode 100644
index 000000000..b1f8ab2d1
--- /dev/null
+++ b/user/wayfire/APKBUILD
@@ -0,0 +1,37 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=wayfire
+pkgver=0.9.0
+pkgrel=0
+pkgdesc="A modular and extensible Wayland compositor"
+url="https://wayfire.org/"
+arch="all"
+license="MIT"
+depends=""
+makedepends="cairo-dev freetype-dev glm libdrm-dev libevdev-dev libglvnd-dev
+ libinput-dev libjpeg-turbo-dev libpng-dev libxkbcommon-dev libxml2-dev
+ meson pango-dev pixman-dev wayland-dev wayland-protocols wf-config-dev
+ wlroots-0.17-dev json"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://github.com/WayfireWM/wayfire/releases/download/v$pkgver/wayfire-$pkgver.tar.xz"
+
+build() {
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ . output
+ meson compile -C output
+}
+
+check() {
+ meson test -C output
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C output
+}
+
+sha512sums="572bfbe1821490842eae33285a0a5607f70b96b0d5b994246ffe6f0bd74ef03d8d699f3f429bff4d376a0a9390312aa67332e8f614fefa2400e0b844b2d74ab9 wayfire-0.9.0.tar.xz"
diff --git a/user/wayland-protocols/APKBUILD b/user/wayland-protocols/APKBUILD
index d5779a4f4..b5af36542 100644
--- a/user/wayland-protocols/APKBUILD
+++ b/user/wayland-protocols/APKBUILD
@@ -1,38 +1,39 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
-# Maintainer:
+# Maintainer: Sile Ekaterin Liszka <sheila@vulpine.house>
pkgname=wayland-protocols
-pkgver=1.13
+pkgver=1.42
pkgrel=0
pkgdesc="Protocols and protocol extensions complementing the Wayland core protocol"
url="https://wayland.freedesktop.org"
arch="noarch"
license="MIT"
-depends=
+depends=""
+makedepends="wayland-dev meson"
+subpackages=""
provides="$pkgname-dev"
-makedepends="wayland-dev"
-subpackages=
-source="https://wayland.freedesktop.org/releases/$pkgname-$pkgver.tar.xz"
+source="https://gitlab.freedesktop.org/wayland/$pkgname/-/releases/$pkgver/downloads/$pkgname-$pkgver.tar.xz
+ tests.patch
+ "
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
+ meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=plain \
+ build
+
+ ninja -C build
}
check() {
- cd "$builddir"
- make check
+ ninja -C build test
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" ninja -C build install
}
-sha512sums="f35c21da289038651b75af064ec7c10779158829f578e7320faf401e980da3c958d85e5bcad00994c574cac6319a3ab975aa5483a9b438f781b767bd6303e194 wayland-protocols-1.13.tar.xz"
+sha512sums="ce85fecbe886264eaeb34c7992d4e493295f57f6213d5a2ec04b3471daee04a4225b1a7e77a27ccf39306074780553ec1383c55af30cc2c78942b40cc5777c1b wayland-protocols-1.42.tar.xz
+adf31ede543514317d57dbd4966034ffbd03e0745701d69c9a852d4b8388542fbb350ce3b32020192dfdbe90fe3a9a1e0ce1d472d9a8be695006652b704ab3f6 tests.patch"
diff --git a/user/wayland-protocols/tests.patch b/user/wayland-protocols/tests.patch
new file mode 100644
index 000000000..d8d5dc3ca
--- /dev/null
+++ b/user/wayland-protocols/tests.patch
@@ -0,0 +1,53 @@
+Upstream-URL: https://gitlab.freedesktop.org/wayland/wayland-protocols/-/merge_requests/363
+
+From 8b4c76275fa1b6e0a99a53494151d9a2c907144d Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Fri, 8 Nov 2024 11:27:25 -0600
+Subject: [PATCH] tests: Make build-only tests actually build-only
+
+The goal behind the pedantic compiler tests are to ensure that the code
+that wayland-scanner is generating can be compiled in pedantic mode by
+the system C compiler.
+
+Trying to execute the built tests may fail because of undefined symbols.
+This affects certain platforms more than others; Linux/musl and Darwin
+are examples of platforms that cannot execute binaries with undefined
+symbols. This meant tests needlessly failed on these platforms.
+
+Signed-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com>
+Closes: #48, #228
+---
+ tests/meson.build | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/tests/meson.build b/tests/meson.build
+index aa216ec..5a93bb3 100644
+--- a/tests/meson.build
++++ b/tests/meson.build
+@@ -1,4 +1,5 @@
+ prog_scan_sh = find_program('scan.sh')
++prog_true = find_program('true')
+
+ libwayland = [
+ dependency('wayland-client'),
+@@ -100,7 +101,7 @@ foreach protocol_file : protocol_files
+ test_source,
+ client_header,
+ server_header,
+- code
++ code,
+ ],
+ link_args: extra_linker_flags,
+ dependencies: libwayland,
+@@ -111,7 +112,7 @@ foreach protocol_file : protocol_files
+ '-Werror' ],
+ install: false,
+ )
+- test(test_name, pedantic_test_executable)
++ test(test_name, prog_true, depends : [pedantic_test_executable])
+
+ # Check that the header
+ if not protocol_file.contains('xdg-foreign-unstable-v1')
+--
+2.40.0
+
diff --git a/user/wayland/APKBUILD b/user/wayland/APKBUILD
index 0c774d994..09dfc1f45 100644
--- a/user/wayland/APKBUILD
+++ b/user/wayland/APKBUILD
@@ -1,44 +1,42 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Contributor: Bartłomiej Piotrowski <bpiotrowski@alpinelinux.org>
-# Maintainer:
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=wayland
-pkgver=1.16.0
+pkgver=1.23.1
pkgrel=0
pkgdesc="A computer display server protocol"
url="https://wayland.freedesktop.org"
arch="all"
-options="!check" # Buggy.
license="MIT"
-depends="$pkgname-libs-client $pkgname-libs-cursor $pkgname-libs-server"
-depends_dev="libffi-dev expat-dev"
-makedepends="$depends_dev doxygen xmlto graphviz grep libxml2-dev bash"
-subpackages="$pkgname-dev $pkgname-libs-client:_libs
- $pkgname-libs-cursor:_libs $pkgname-libs-server:_libs"
-source="https://wayland.freedesktop.org/releases/$pkgname-$pkgver.tar.xz"
+depends=""
+depends_dev="expat-dev"
+makedepends="$depends_dev doxygen xmlto graphviz grep libffi-dev libxml2-dev
+ bash meson"
+subpackages="$pkgname-dev"
+replaces="wayland-libs-client wayland-libs-cursor wayland-libs-server"
+source="https://gitlab.freedesktop.org/wayland/wayland/-/releases/$pkgver/downloads/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
+ meson \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --infodir=/usr/share/info \
--localstatedir=/var \
- --disable-documentation \
- --disable-static
- make
+ --buildtype=plain \
+ -Ddocumentation=false \
+ build
+
+ ninja -C build
}
check() {
- cd "$builddir"
- make check
+ export XDG_RUNTIME_DIR=$(mktemp -d)
+ ninja -C build test
+ rm -fr "${XDG_RUNTIME_DIR}"
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" ninja -C build install
}
dev() {
@@ -48,11 +46,4 @@ dev() {
default_dev
}
-_libs() {
- local name=${subpkgname#$pkgname-libs-}
- pkgdesc="$pkgdesc ($name library)"
- mkdir -p "$subpkgdir"/usr/lib
- mv "$pkgdir"/usr/lib/*-$name.so.* "$subpkgdir"/usr/lib
-}
-
-sha512sums="64eca2b1c0bc7913508a5499dae87e2723c712d8024acbb4c77c3c4a6c20de78c10704ae9827fd034116ca540a547aeec28c5a1e3bd382b23f85231424b0f49c wayland-1.16.0.tar.xz"
+sha512sums="818eda003e3f7aa15690eedb1ff227a6056b2ce54bf23d45ffe573dc40a914623c5a1358218b59444dcdc483db0503324f0d27091d0ea954412a8b290de5f50a wayland-1.23.1.tar.xz"
diff --git a/user/waypipe/0.9.2-fix-compile.patch b/user/waypipe/0.9.2-fix-compile.patch
new file mode 100644
index 000000000..096e4851b
--- /dev/null
+++ b/user/waypipe/0.9.2-fix-compile.patch
@@ -0,0 +1,11 @@
+diff '--color=auto' -Nurd waypipe-v0.9.2/src/secctx.c waypipe-v0.9.2.new/src/secctx.c
+--- waypipe-v0.9.2/src/secctx.c 2024-11-18 14:29:20.000000000 -0800
++++ waypipe-v0.9.2.new/src/secctx.c 2024-11-25 10:20:47.643421280 -0800
+@@ -2,6 +2,7 @@
+ #include "util.h"
+ #include <sys/socket.h>
+ #include <sys/un.h>
++#include <string.h>
+ #include <unistd.h>
+ #include <wayland-client.h>
+
diff --git a/user/waypipe/APKBUILD b/user/waypipe/APKBUILD
new file mode 100644
index 000000000..311c4e8c6
--- /dev/null
+++ b/user/waypipe/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=waypipe
+pkgver=0.9.2
+pkgrel=0
+pkgdesc="proxy for Wayland clients"
+url="https://gitlab.freedesktop.org/mstoeckl/waypipe"
+arch="all"
+license="MIT"
+depends=""
+makedepends="ffmpeg-dev libdrm-dev libva-dev lz4-dev mesa-dev meson scdoc wayland-dev wayland-protocols"
+subpackages="$pkgname-doc"
+source="https://gitlab.freedesktop.org/mstoeckl/waypipe/-/archive/v$pkgver/$pkgname-v$pkgver.tar.bz2
+ 0.9.2-fix-compile.patch"
+builddir="$srcdir/$pkgname-v$pkgver"
+
+build() {
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ . output
+ meson compile -C output
+}
+
+check() {
+ meson test -C output
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C output
+}
+
+sha512sums="0ffdb49cb5dbee717798721505e4661710fcd234a55bbfe2452888024d4a8b99a0e0e99cdce23ba0b92ee456aeb9f14324baba1c7c5724cb8cca7bb6e9c276bb waypipe-v0.9.2.tar.bz2
+30c818075c95b198d351cad94e48e3d7eb3dc18f9b38964c2090483131365bf37f7eeb12ba89f17822c8cab9dbb658e7e2efcc81f0433e79c9a2cdb8bbf92dc6 0.9.2-fix-compile.patch"
diff --git a/user/weechat/APKBUILD b/user/weechat/APKBUILD
index b298be73a..72991c3c7 100644
--- a/user/weechat/APKBUILD
+++ b/user/weechat/APKBUILD
@@ -1,65 +1,66 @@
# Contributor: Leonardo Arena <rnalrd@alpinelinux.org>
# Contributor: zlg <zlg+adelie@zlg.space>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=weechat
-pkgver=2.4
+pkgver=4.5.1
pkgrel=0
pkgdesc="Fast, light, extensible ncurses-based chat client"
url="https://www.weechat.org"
arch="all"
options="!check" # requires all plugins be built.
license="GPL-3.0+"
+depends=""
depends_dev="cmake aspell-dev curl-dev gnutls-dev libgcrypt-dev lua5.3-dev
- ncurses-dev perl-dev python3-dev zlib-dev"
-makedepends="$depends_dev"
+ ncurses-dev perl-dev python3-dev ruby-dev tcl-dev zlib-dev guile-dev
+ tk-dev zstd-dev cjson-dev"
checkdepends="cpputest"
-subpackages="$pkgname-dev $pkgname-aspell:_plugin $pkgname-lua:_plugin
- $pkgname-perl:_plugin $pkgname-python:_plugin $pkgname-lang"
-source="https://www.weechat.org/files/src/$pkgname-$pkgver.tar.gz
- libintl-fix.patch
- "
+makedepends="$depends_dev asciidoctor"
+subpackages="$pkgname-dev $pkgname-spell:_plugin $pkgname-lua:_plugin
+ $pkgname-perl:_plugin $pkgname-python:_plugin $pkgname-ruby:_plugin
+ $pkgname-tcl:_plugin $pkgname-guile:_plugin $pkgname-doc"
+source="https://www.weechat.org/files/src/$pkgname-$pkgver.tar.gz"
# secfixes:
+# 3.4-r0:
+# - CVE-2021-40516
# 1.7.1-r0:
-# - CVE-2017-8073
+# - CVE-2017-8073
# 1.9.1-r0:
-# - CVE-2017-14727
+# - CVE-2017-14727
+# 2.7.1-r0:
+# - CVE-2020-8955
-prepare() {
- cd "$builddir"
- default_prepare
+build() {
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DENABLE_JAVASCRIPT=OFF \
+ -DENABLE_MAN=ON \
+ -DENABLE_NLS=OFF \
+ -DENABLE_PHP=OFF \
+ -Bbuild .
+ make -C build
}
-build() {
- cd "$builddir"
- mkdir -p build
- cd build
- cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_MAN=ON -DENABLE_TESTS=ON -DENABLE_PYTHON3=ON
- make
+check() {
+ cd "$builddir"/build
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"/build
- make DESTDIR="$pkgdir/" install
+ make DESTDIR="$pkgdir/" -C build install
}
_plugin() {
- local _name=${subpkgname#*-}
- local _dir=usr/lib/weechat/plugins
+ _name="${subpkgname#*-}"
+ _dir=usr/lib/weechat/plugins
pkgdesc="WeeChat $_name plugin"
depends="weechat"
- if [ "$_name" = python ]; then
- depends="$depends python3"
+ if [ "$_name" = spell ]; then
+ provides="$pkgname-aspell=$pkgver-r$pkgrel"
fi
mkdir -p "$subpkgdir"/$_dir
mv "$pkgdir"/$_dir/${_name}.so "$subpkgdir"/$_dir
}
-check() {
- cd "$builddir"/build
- ctest -V
-}
-
-sha512sums="3537c3032237b0f1d103849516ccb461a29e13bf37f021af7905c75a3dc7c70fa4a76be2e8559b0299165c114d0408f3267fb74eb21a70f1661e6dac35e3bb9a weechat-2.4.tar.gz
-59841bc343b1d10a542631eb01380789f96cac896380dbb3b159444c4806bd6367952e457b9ffd42fb87c1e19fc77eba78c38fd2178ef202ab9f7f1a543417ca libintl-fix.patch"
+sha512sums="686eb0a57f6def4826ad88b6bfdef6d1e074375d756289f9f3a8046828d22eeb9313278398a619e6c18b16b4baa87753ae9fac82c7fff52ed4d0906570514d06 weechat-4.5.1.tar.gz"
diff --git a/user/weechat/libintl-fix.patch b/user/weechat/libintl-fix.patch
deleted file mode 100644
index a67cb37b6..000000000
--- a/user/weechat/libintl-fix.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-libc gettext is never sufficient on musl
-
---- weechat-1.9/CMakeLists.txt.old 2017-06-25 03:20:52.000000000 -0500
-+++ weechat-1.9/CMakeLists.txt 2017-09-13 02:30:43.577284569 -0500
-@@ -162,6 +162,7 @@
- find_package(Gettext)
- if(GETTEXT_FOUND)
- add_definitions(-DENABLE_NLS)
-+ list(APPEND EXTRA_LIBS intl)
- endif()
- endif()
-
diff --git a/user/wf-config/APKBUILD b/user/wf-config/APKBUILD
new file mode 100644
index 000000000..8cbb8b130
--- /dev/null
+++ b/user/wf-config/APKBUILD
@@ -0,0 +1,34 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=wf-config
+pkgver=0.9.0
+pkgrel=0
+pkgdesc="A library for managing configuration files, written for Wayfire"
+url="https://wayfire.org"
+arch="all"
+license="MIT"
+depends=""
+makedepends="glm libevdev-dev libxml2-dev meson"
+subpackages="$pkgname-dev"
+source="https://github.com/WayfireWM/wf-config/releases/download/v$pkgver/wf-config-$pkgver.tar.xz"
+
+build() {
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ . output
+ meson compile -C output
+}
+
+check() {
+ meson test -C output
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C output
+}
+
+sha512sums="ac2ca69b7d96b9b145a4789f004705a2d7b323e6724e429a1e5a4544cd56828165a01f48a9863ceb92004c51c8f05729468f4a32c37545716f8d537d39e3236b wf-config-0.9.0.tar.xz"
diff --git a/user/wf-shell/APKBUILD b/user/wf-shell/APKBUILD
new file mode 100644
index 000000000..309aceafe
--- /dev/null
+++ b/user/wf-shell/APKBUILD
@@ -0,0 +1,36 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=wf-shell
+pkgver=0.9.0
+pkgrel=0
+pkgdesc="A GTK3-based panel for Wayfire"
+url="https://wayfire.org/"
+arch="all"
+license="MIT"
+depends=""
+makedepends="alsa-lib-dev gtk-layer-shell-dev gtkmm+3.0-dev libdbusmenu-dev
+ meson pulseaudio-dev wayfire-dev wayland-dev wayland-protocols"
+subpackages="$pkgname-dev $pkgname-doc"
+install_if="wayfire=$pkgver" # Wayfire wants this, but this needs Wayfire to build.
+source="https://github.com/WayfireWM/wf-shell/releases/download/v$pkgver/wf-shell-$pkgver.tar.xz"
+
+build() {
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ --wrap-mode=nofallback \
+ . output
+ meson compile -C output
+}
+
+check() {
+ meson test -C output
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C output
+}
+
+sha512sums="dceb0234302ceb51ac23576752d65cf122755bd044bc98e4ca92e0b8e6715063cdebdf35e82e5dc033effc288228622886e1a0e25b4bd788f6d32f8b189c1cfe wf-shell-0.9.0.tar.xz"
diff --git a/user/wget/APKBUILD b/user/wget/APKBUILD
new file mode 100644
index 000000000..53803f238
--- /dev/null
+++ b/user/wget/APKBUILD
@@ -0,0 +1,37 @@
+# Contributor: Nathan <ndowens@artixlinux.org>
+# Maintainer: Zach van Rijn <me@zv.io>
+pkgname=wget
+pkgver=1.24.5
+pkgrel=0
+pkgdesc="Network utility to retrieve files from the Web"
+url="https://www.gnu.org/software/wget/wget.html"
+arch="all"
+license="GPL-3.0+"
+depends=""
+makedepends="libidn2-dev openssl-dev perl"
+checkdepends="perl-http-daemon"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --infodir=/usr/share/info \
+ --with-libidn \
+ --with-ssl=openssl
+ make
+}
+
+check() {
+ make -C tests check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="572aa54717e51a9eb9959e127c7afb696645088f32ff7df2cfe9d243957e34ee235e98988fa94649df023d2e3d62b6973e8c9f2eb92beba820dd96d5de2a950d wget-1.24.5.tar.gz"
diff --git a/user/which/APKBUILD b/user/which/APKBUILD
deleted file mode 100644
index cea55c32a..000000000
--- a/user/which/APKBUILD
+++ /dev/null
@@ -1,34 +0,0 @@
-# Contributor: Stuart Cardall <developer@it-offshore.co.uk>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-pkgname=which
-pkgver=2.21
-pkgrel=2
-pkgdesc="A utility to show the full path of commands"
-url="http://savannah.gnu.org/projects/which"
-arch="all"
-license="GPL-2.0+ AND LGPL-2.0+ AND GPL-3.0+"
-makedepends=""
-subpackages="$pkgname-doc"
-source="http://ftp.gnu.org/gnu/$pkgname/$pkgname-$pkgver.tar.gz"
-provider_priority=1
-
-build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr
- make
-}
-
-check() {
- cd "$builddir"
- make check
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
-}
-
-sha512sums="d2f04a5c5291f2d7d1226982da7cf999d36cfe24d3f7bda145508efcfb359511251d3c68b860c0ddcedd66b15a0587b648a35ab6d1f173707565305c506dfc61 which-2.21.tar.gz"
diff --git a/user/wimlib/APKBUILD b/user/wimlib/APKBUILD
new file mode 100644
index 000000000..a4e365ea6
--- /dev/null
+++ b/user/wimlib/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: CyberLeo <cyberleo@cyberleo.net>
+# Maintainer: CyberLeo <cyberleo@cyberleo.net>
+pkgname=wimlib
+pkgver=1.14.4
+pkgrel=0
+pkgdesc="Windows Imaging (WIM) archive manipulation library and tools"
+url="https://wimlib.net/"
+arch="all"
+# If the test suite crosses a clock-second boundary, the test will fail
+# because the mtime of the src and dest will vary by 1s. The test suite
+# then hangs waiting for the mount to umount, requiring manual operator
+# intervention. The tests pass on ppc64, ppc, x86_64 for me when timed
+# correctly, so for now we disable tests.
+options="!check"
+license="(GPL-2.0 OR LGPL-2.1) AND CC0"
+depends=""
+makedepends="fuse3-dev ntfs-3g ntfs-3g-dev"
+subpackages="$pkgname-doc $pkgname-dev $pkgname-libs"
+source="https://wimlib.net/downloads/wimlib-$pkgver.tar.gz
+ header.patch
+ pc-fuse3.patch
+ "
+
+build() {
+ ./configure \
+ --prefix=/usr
+ make
+}
+
+check() {
+ PATH="/usr/sbin:${PATH}" make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="f3c25ee14fe849f452f004ce8137ef040410ea048555ae71180086f010858b6ed593c8881b805bac65f9ee878bf11661a7f17677c6c24e2c77149c35ee0cd853 wimlib-1.14.4.tar.gz
+25a410614b4d4a16f16149c09bb1107a5678d49b729ecb55fe5641727556f6eb8a0e3473331ae738e3747652674d78c32be0d6da57c2aa414bd9fc636c27997e header.patch
+e58429f3256e85e39558920be295c93645ec0584cf71282e01102c62b05b51fab1c3c1b62a8edb7be8bfc2427d2464400154ca05ad07e02548cad140f781aa7f pc-fuse3.patch"
diff --git a/user/wimlib/header.patch b/user/wimlib/header.patch
new file mode 100644
index 000000000..71255d446
--- /dev/null
+++ b/user/wimlib/header.patch
@@ -0,0 +1,29 @@
+This patch should be removed once the following musl commit lands:
+
+https://git.musl-libc.org/cgit/musl/commit\
+/include/stdio.h?id=05ce67fea99ca09cd4b6625cff7aec9cc222dd5a
+
+These macros are also exposed via <linux/fs.h>.
+
+diff -ur a/src/mount_image.c b/src/mount_image.c
+--- a/src/mount_image.c 2024-12-11 21:13:37.806412788 -0600
++++ b/src/mount_image.c 2024-12-11 21:18:32.528640110 -0600
+@@ -53,6 +53,18 @@
+ #include <unistd.h>
+ #include <utime.h>
+
++#if defined(_GNU_SOURCE)
++#ifndef RENAME_NOREPLACE
++#define RENAME_NOREPLACE (1 << 0)
++#endif
++#ifndef RENAME_EXCHANGE
++#define RENAME_EXCHANGE (1 << 1)
++#endif
++#ifndef RENAME_WHITEOUT
++#define RENAME_WHITEOUT (1 << 2)
++#endif
++#endif
++
+ #include "wimlib/blob_table.h"
+ #include "wimlib/dentry.h"
+ #include "wimlib/encoding.h"
diff --git a/user/wimlib/pc-fuse3.patch b/user/wimlib/pc-fuse3.patch
new file mode 100644
index 000000000..9c8743b31
--- /dev/null
+++ b/user/wimlib/pc-fuse3.patch
@@ -0,0 +1,31 @@
+The pkgconfig file for fuse3 is called fuse3, not fuse.
+
+Otherwise, we get:
+
+>>> WARNING: wimlib-dev*: Could not find any provider for pc:fuse
+
+We can't patch the .ac file because it hardcodes the git version and decides
+that this is wimlib 1.0-BETA6 (or whatever).
+
+#--- wimlib-1.14.4/configure.ac.old 2024-02-09 17:36:25.000000000 -0600
+#+++ wimlib-1.14.4/configure.ac 2024-12-11 21:27:27.638385598 -0600
+#@@ -156,7 +156,7 @@
+# disable this feature. If your operating system packages
+# development files separately, the package you need to install
+# may be called libfuse3-dev, fuse-devel, or similar.])])
+#- PKGCONFIG_PRIVATE_REQUIRES="$PKGCONFIG_PRIVATE_REQUIRES fuse"
+#+ PKGCONFIG_PRIVATE_REQUIRES="$PKGCONFIG_PRIVATE_REQUIRES fuse3"
+# AC_DEFINE([WITH_FUSE], [1], [Define to 1 if using FUSE support])
+#
+# AC_CHECK_LIB([rt], [mq_open], [],
+--- wimlib-1.14.4/configure.old 2024-02-24 12:41:27.000000000 -0600
++++ wimlib-1.14.4/configure 2024-12-11 21:27:48.176175338 -0600
+@@ -16032,7 +16032,7 @@
+ printf "%s\n" "yes" >&6; }
+
+ fi
+- PKGCONFIG_PRIVATE_REQUIRES="$PKGCONFIG_PRIVATE_REQUIRES fuse"
++ PKGCONFIG_PRIVATE_REQUIRES="$PKGCONFIG_PRIVATE_REQUIRES fuse3"
+
+ printf "%s\n" "#define WITH_FUSE 1" >>confdefs.h
+
diff --git a/user/wine/APKBUILD b/user/wine/APKBUILD
index 99cf1f2dd..ee5f01e7f 100644
--- a/user/wine/APKBUILD
+++ b/user/wine/APKBUILD
@@ -4,41 +4,44 @@
# Contributor: Martell Malone <martell@marinelayer.io>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=wine
-pkgver=3.0.2
+pkgver=8.1
pkgrel=0
-pkgdesc="A compatibility layer for running Windows programs"
-url="http://www.winehq.com"
+pkgdesc="Compatibility layer for running Windows programs"
+url="https://www.winehq.org/"
arch="pmmx x86 x86_64"
-license="LGPL-2.0|"
-# As of 2.0.3 most of the tests fails
+license="LGPL-2.0+"
options="!check"
-subpackages="$pkgname-libs $pkgname-dev $pkgname-doc"
+case $CARCH in
+pmmx|x86) options="$options textrels"
+esac
+depends=""
depends_dev="$pkgname perl"
-makedepends="fontconfig-dev openldap-dev libxslt-dev libxxf86dga-dev
- libxcursor-dev libxrandr-dev libxdamage-dev mesa-dev flex-dev bison
- libpng-dev libjpeg-turbo-dev freetype-dev ncurses-dev libressl-dev
- libxcomposite-dev libxrender-dev libxinerama-dev zlib-dev
- cups-dev alsa-lib-dev libxml2-dev dbus-dev libxi-dev
- gnutls-dev tiff-dev v4l-utils-dev udisks2-dev autoconf automake
- openal-soft-dev pulseaudio-dev sane-dev eudev-dev
- "
-source="http://dl.winehq.org/$pkgname/source/${pkgver%.[1-9]}/$pkgname-$pkgver.tar.xz
- no-pie.patch
- winhlp32-flex.patch
+makedepends="fontconfig-dev freetype-dev ncurses-dev openldap-dev openssl-dev
+ libxcomposite-dev libxcursor-dev libxext-dev libxfixes-dev libxi-dev
+ libxinerama-dev libxrandr-dev libxrender-dev libxxf86dga-dev mesa-dev
+ alsa-lib-dev cups-dev dbus-dev eudev-dev gnutls-dev openal-soft-dev
+ pulseaudio-dev sane-dev udisks2-dev unixodbc-dev v4l-utils-dev
+ gstreamer-dev krb5-dev libgphoto2-dev libusb-dev bison flex
+ autoconf automake libtool gst-plugins-base-dev"
+subpackages="$pkgname-dev $pkgname-doc"
+case "${pkgver}" in
+ *.0*) _pkgver=${pkgver%%.*}.0; ;;
+ *) _pkgver=${pkgver%%.*}.x; ;;
+esac
+source="https://dl.winehq.org/$pkgname/source/${_pkgver}/$pkgname-$pkgver.tar.xz
+ headers.patch
+ printer.patch
+ rpath.patch
"
prepare() {
- cd "$builddir"
-
default_prepare
aclocal && autoheader && autoreconf
}
build() {
- cd "$builddir"
-
case "$CARCH" in
- x86_64) _win64=--enable-win64;;
+ x86_64) _win64=--enable-win64; _ldrsuffix=64;;
esac
./configure \
--build=$CBUILD \
@@ -48,87 +51,52 @@ build() {
--sysconfdir=/etc \
--localstatedir=/var \
--with-cups \
- --with-curses \
--with-dbus \
--with-fontconfig \
--with-freetype \
- --with-jpeg \
--with-openal \
--with-opengl \
- --with-png \
--with-pulse \
--with-sane \
--with-udev \
- --with-va \
--with-x \
--with-xcomposite \
--with-xinerama \
- --with-xslt \
- $_win64
+ $_win64
+ make LDFLAGS="$LDFLAGS -no-pie" \
+ tools/widl/widl tools/winebuild/winebuild tools/winegcc/winegcc tools/wrc/wrc \
+ loader/wine${_ldrsuffix} loader/wine${_ldrsuffix}-preloader server/wineserver
make
}
check() {
- cd "$builddir"
make test
}
package() {
- local file
- cd "$builddir"
make -j1 DESTDIR="$pkgdir" install
- case "$CARCH" in
- x86_64) _wine="wine64";;
- *) _wine="wine";;
- esac
-
install -Dm755 tools/wineapploader \
"$pkgdir"/usr/bin/wineapploader
for file in msiexec notepad regedit regsvr32 wineboot \
- winecfg wineconsole winefile winemine winepath
- do
+ winecfg wineconsole winefile winemine winepath; do
rm "$pkgdir"/usr/bin/$file
ln -sf /usr/bin/wineapploader "$pkgdir"/usr/bin/$file
done
}
dev() {
- local file
default_dev
install -d "$subpkgdir"/usr/bin
for file in widl wmc wrc winebuild winedump function_grep.pl \
- winedbg winemaker winegcc winecpp wineg++
- do
+ winedbg winemaker winegcc winecpp wineg++; do
mv "$pkgdir"/usr/bin/$file "$subpkgdir"/usr/bin/
done
-
- install -d "$subpkgdir"/usr/lib/wine
- mv "$pkgdir"/usr/lib/wine/*.def "$subpkgdir"/usr/lib/wine/
-}
-
-doc() {
- default_doc
- rm -fr "$subpkgdir"/usr/share/man/*.UTF-8
-}
-
-libs() {
- local file ext
- default_libs
-
- install -d "$subpkgdir"/usr/lib/wine/fakedlls
- for ext in dll16 drv16 exe16 acm dll drv ds ocx sys tlb vxd; do
- for file in $(find "$pkgdir/usr/lib/wine/fakedlls" -name "*.$ext"); do
- mv "$pkgdir"/usr/lib/wine/fakedlls/${file##*/} \
- "$subpkgdir"/usr/lib/wine/fakedlls/
- mv "$pkgdir"/usr/lib/wine/${file##*/}.so \
- "$subpkgdir"/usr/lib/wine/
- done
- done
}
-sha512sums="dbd0f242c5eace297ad16e314b8ad139e7d430de7eb8ca52b2006d0b80db4809e28a0e785d404a65ea1acdb56e7f06ebfc9a50071db1edaa6180c8835e7c4b13 wine-3.0.2.tar.xz
-d853875f7d659617bdfba364704abd75b760d12977f1f13acc73acb3c8fefec0549677fb79a4f8955e073d64078b3071d63d97262522e22b7832a66d3d820a9c no-pie.patch
-522a94a31fc459e80ea7dd05f7aee64f6ae666ec05236d06614acde118d5c60002e0f253ae75edb5f02164f22937ca89578504b690d1a5611bd60f703c8f0c00 winhlp32-flex.patch"
+sha512sums="3f0477c26f293cf928acbdae2ffb98740ac227a605ec90f3ab3d35c0dbca2037529ff4e4de0b69cc975579ad14dc2fb8b52e050cfd99cffcc627418cf8cb4346 wine-8.1.tar.xz
+04b4035ad7db762bf965bce095457be9e96292a799c4443c9b93fd572e49371a4bfe297bc3cf720c1e1f7338585767309ec9d84e83db64109883c1782cef40ba headers.patch
+26c72d45329eaf6f0f361edf08a2984ecc99d892bff3d0932928514db5882bebd5744627aa3a63f0715fc308e12364879356d5e94b334d7c6dc9ea3ff854e423 printer.patch
+ade85bee3df634bfb69ae6a27f262708c68c0f9b7be894b44c17fdf14ce5fe8093b1ce2eb7ecca2ca245d9f9b7a1e62ff061449e44acb277c1f03a44449d5191 rpath.patch"
diff --git a/user/wine/headers.patch b/user/wine/headers.patch
new file mode 100644
index 000000000..73ca8c7db
--- /dev/null
+++ b/user/wine/headers.patch
@@ -0,0 +1,24 @@
+These are needed for musl/POSIX.
+
+--- a/dlls/winebus.sys/bus_udev.c 2021-10-23 15:38:33.225064731 +0200
++++ b/dlls/winebus.sys/bus_udev.c 2021-10-23 15:39:06.662064765 +0200
+@@ -29,7 +29,8 @@
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <stdint.h>
+-#include <sys/types.h>
++#include <sys/types.h>
++#include <limits.h>
+ #include <dirent.h>
+ #ifdef HAVE_UNISTD_H
+ # include <unistd.h>
+--- a/server/security.h 2022-01-29 08:23:43.759508270 +0100
++++ b/server/security.h 2022-01-29 08:24:07.976443565 +0100
+@@ -22,6 +22,7 @@
+ #define __WINE_SERVER_SECURITY_H
+
+ #include <sys/types.h>
++#include <unistd.h>
+
+ extern const struct luid SeIncreaseQuotaPrivilege;
+ extern const struct luid SeSecurityPrivilege;
diff --git a/user/wine/no-pie.patch b/user/wine/no-pie.patch
deleted file mode 100644
index 5fb5d87b6..000000000
--- a/user/wine/no-pie.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/loader/Makefile.in b/loader/Makefile.in
-index 8190037..437d4d9 100644
---- a/loader/Makefile.in
-+++ b/loader/Makefile.in
-@@ -26,7 +26,7 @@ wine64_DEPS = $(WINELOADER_DEPENDS)
- wine64_LDFLAGS = $(LDEXECFLAGS) -lwine $(PTHREAD_LIBS)
-
- wine_preloader_OBJS = preloader.o
--wine_preloader_LDFLAGS = -static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7c400000
-+wine_preloader_LDFLAGS = -static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7c400000 -no-pie
-
- wine64_preloader_OBJS = preloader.o
--wine64_preloader_LDFLAGS = -static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7c400000
-+wine64_preloader_LDFLAGS = -static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7c400000 -no-pie
diff --git a/user/wine/nopie.patch b/user/wine/nopie.patch
deleted file mode 100644
index 54eb141be..000000000
--- a/user/wine/nopie.patch
+++ /dev/null
@@ -1,10 +0,0 @@
-diff --git a/loader/Makefile.in b/loader/Makefile.in
-index 8190037..b4f2902 100644
---- a/loader/Makefile.in
-+++ b/loader/Makefile.in
-@@ -29,4 +29,4 @@ wine_preloader_OBJS = preloader.o
- wine_preloader_LDFLAGS = -static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7c400000
-
- wine64_preloader_OBJS = preloader.o
--wine64_preloader_LDFLAGS = -static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7c400000
-+wine64_preloader_LDFLAGS = -static -nostartfiles -nodefaultlibs -Wl,-Ttext=0x7c400000 -no-pie
diff --git a/user/wine/printer.patch b/user/wine/printer.patch
new file mode 100644
index 000000000..6ccfab003
--- /dev/null
+++ b/user/wine/printer.patch
@@ -0,0 +1,13 @@
+ dlls/winspool.drv/info.c | 1 +
+ 1 file changed, 1 insertion(+)
+--- a/dlls/winspool.drv/info.c
++++ a/dlls/winspool.drv/info.c
+@@ -1136,6 +1136,7 @@ void WINSPOOL_LoadSystemPrinters(void)
+ WCHAR PrinterName[256];
+
+ /* FIXME: The init code should be moved to spoolsv.exe */
++ SetLastError(0);
+ init_mutex = CreateMutexW( NULL, TRUE, L"__WINE_WINSPOOL_MUTEX__" );
+ if (!init_mutex)
+ {
+--
diff --git a/user/wine/rpath.patch b/user/wine/rpath.patch
new file mode 100644
index 000000000..9f65cf034
--- /dev/null
+++ b/user/wine/rpath.patch
@@ -0,0 +1,11 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -859,6 +859,9 @@ case $host_os in
+ AC_SUBST(LIBWINE_SHAREDLIB,"libwine.so.$libwine_version")
+ AC_SUBST(LIBWINE_DEPENDS,"wine.map")
+ TOP_INSTALL_LIB="$TOP_INSTALL_LIB libs/wine/libwine.so.$libwine_version libs/wine/libwine.so.$libwine_soversion"
++
++ # do this at the end because it needs double dollar for makefile
++ WINE_TRY_CFLAGS([-Wl,-rpath,\\\$ORIGIN],[UNIXLDFLAGS="$UNIXLDFLAGS '-Wl,-rpath,\$\$ORIGIN'"])
+ ;;
+ esac
diff --git a/user/wine/winhlp32-flex.patch b/user/wine/winhlp32-flex.patch
deleted file mode 100644
index daeb790c2..000000000
--- a/user/wine/winhlp32-flex.patch
+++ /dev/null
@@ -1,9 +0,0 @@
---- a/programs/winhlp32/Makefile.in
-+++ b/programs/winhlp32/Makefile.in
-@@ -1,5 +1,5 @@
- MODULE = winhlp32.exe
--APPMODE = -mwindows
-+APPMODE = -mwindows -lfl
- IMPORTS = user32 gdi32
- DELAYIMPORTS = shell32 comctl32 comdlg32
-
diff --git a/user/wireguard-module-power8-64k/APKBUILD b/user/wireguard-module-power8-64k/APKBUILD
deleted file mode 100644
index ed1fa1ba3..000000000
--- a/user/wireguard-module-power8-64k/APKBUILD
+++ /dev/null
@@ -1,32 +0,0 @@
-# Contributor: Luis Ressel <aranea@aixah.de>
-# Maintainer: Luis Ressel <aranea@aixah.de>
-# KEEP THIS IN SYNC with the other wireguard-module packages.
-_kflavour="-power8-64k"
-_kver="4.14.88-mc13"
-pkgver=0.0.20190406
-pkgrel=0
-_pkgname="wireguard-module$_kflavour"
-pkgname="$_pkgname-$_kver"
-_pkgreal="WireGuard"
-pkgdesc="Kernel module for the WireGuard VPN, built for easy-kernel"
-url="https://www.wireguard.com/"
-arch="ppc64"
-options="!check !dbg !strip" # no test suite
-license="GPL-2.0-only"
-provides="$_pkgname=$pkgver"
-depends="easy-kernel$_kflavour-modules-$_kver"
-makedepends="easy-kernel$_kflavour-src-$_kver"
-source="https://git.zx2c4.com/WireGuard/snapshot/$_pkgreal-$pkgver.tar.xz"
-builddir="$srcdir/$_pkgreal-$pkgver"
-
-build() {
- cd "$builddir"
- make -C src LDFLAGS="" KERNELDIR="/usr/src/linux-$_kver$_kflavour" module
-}
-
-package() {
- cd "$builddir"
- make -C src DEPMOD=true KERNELDIR="/usr/src/linux-$_kver$_kflavour" INSTALL_MOD_PATH="$pkgdir" module-install
-}
-
-sha512sums="e3035030299f5a6ae3ac0c2e35dc2d54745cda8f31185b21c6590f1ddcc9c7a83bf7b71cc71f6d48ed6dc8f2b31f3c704f8fa85685d4113f4c560f7eba7b7d5e WireGuard-0.0.20190406.tar.xz"
diff --git a/user/wireguard-module-power8/APKBUILD b/user/wireguard-module-power8/APKBUILD
deleted file mode 100644
index 260d22029..000000000
--- a/user/wireguard-module-power8/APKBUILD
+++ /dev/null
@@ -1,32 +0,0 @@
-# Contributor: Luis Ressel <aranea@aixah.de>
-# Maintainer: Luis Ressel <aranea@aixah.de>
-# KEEP THIS IN SYNC with the other wireguard-module packages.
-_kflavour="-power8"
-_kver="4.14.88-mc13"
-pkgver=0.0.20190406
-pkgrel=0
-_pkgname="wireguard-module$_kflavour"
-pkgname="$_pkgname-$_kver"
-_pkgreal="WireGuard"
-pkgdesc="Kernel module for the WireGuard VPN, built for easy-kernel"
-url="https://www.wireguard.com/"
-arch="ppc64"
-options="!check !dbg !strip" # no test suite
-license="GPL-2.0-only"
-provides="$_pkgname=$pkgver"
-depends="easy-kernel$_kflavour-modules-$_kver"
-makedepends="easy-kernel$_kflavour-src-$_kver"
-source="https://git.zx2c4.com/WireGuard/snapshot/$_pkgreal-$pkgver.tar.xz"
-builddir="$srcdir/$_pkgreal-$pkgver"
-
-build() {
- cd "$builddir"
- make -C src LDFLAGS="" KERNELDIR="/usr/src/linux-$_kver$_kflavour" module
-}
-
-package() {
- cd "$builddir"
- make -C src DEPMOD=true KERNELDIR="/usr/src/linux-$_kver$_kflavour" INSTALL_MOD_PATH="$pkgdir" module-install
-}
-
-sha512sums="e3035030299f5a6ae3ac0c2e35dc2d54745cda8f31185b21c6590f1ddcc9c7a83bf7b71cc71f6d48ed6dc8f2b31f3c704f8fa85685d4113f4c560f7eba7b7d5e WireGuard-0.0.20190406.tar.xz"
diff --git a/user/wireguard-module/APKBUILD b/user/wireguard-module/APKBUILD
deleted file mode 100644
index 4bb25ae3e..000000000
--- a/user/wireguard-module/APKBUILD
+++ /dev/null
@@ -1,32 +0,0 @@
-# Contributor: Luis Ressel <aranea@aixah.de>
-# Maintainer: Luis Ressel <aranea@aixah.de>
-# KEEP THIS IN SYNC with the other wireguard-module packages.
-_kflavour=""
-_kver="4.14.88-mc13"
-pkgver=0.0.20190406
-pkgrel=0
-_pkgname="wireguard-module$_kflavour"
-pkgname="$_pkgname-$_kver"
-_pkgreal="WireGuard"
-pkgdesc="Kernel module for the WireGuard VPN, built for easy-kernel"
-url="https://www.wireguard.com/"
-arch="all"
-options="!check !dbg !strip" # no test suite
-license="GPL-2.0-only"
-provides="$_pkgname=$pkgver"
-depends="easy-kernel$_kflavour-modules-$_kver"
-makedepends="easy-kernel$_kflavour-src-$_kver"
-source="https://git.zx2c4.com/WireGuard/snapshot/$_pkgreal-$pkgver.tar.xz"
-builddir="$srcdir/$_pkgreal-$pkgver"
-
-build() {
- cd "$builddir"
- make -C src LDFLAGS="" KERNELDIR="/usr/src/linux-$_kver$_kflavour" module
-}
-
-package() {
- cd "$builddir"
- make -C src DEPMOD=true KERNELDIR="/usr/src/linux-$_kver$_kflavour" INSTALL_MOD_PATH="$pkgdir" module-install
-}
-
-sha512sums="e3035030299f5a6ae3ac0c2e35dc2d54745cda8f31185b21c6590f1ddcc9c7a83bf7b71cc71f6d48ed6dc8f2b31f3c704f8fa85685d4113f4c560f7eba7b7d5e WireGuard-0.0.20190406.tar.xz"
diff --git a/user/wireguard-tools/APKBUILD b/user/wireguard-tools/APKBUILD
index 493da9d37..a874bdf9e 100644
--- a/user/wireguard-tools/APKBUILD
+++ b/user/wireguard-tools/APKBUILD
@@ -1,8 +1,7 @@
-# Contributor: Luis Ressel <aranea@aixah.de>
-# Maintainer: Luis Ressel <aranea@aixah.de>
+# Contributor: Mira Ressel <aranea@aixah.de>
+# Maintainer: Laurent Bercot <ska-adelie@skarnet.org>
pkgname=wireguard-tools
-_pkgreal=WireGuard
-pkgver=0.0.20190406
+pkgver=1.0.20210914
pkgrel=0
pkgdesc="Userland tools for the WireGuard VPN"
url="https://www.wireguard.com/"
@@ -11,18 +10,15 @@ options="!check" # no test suite
license="GPL-2.0-only"
depends="bash iproute2"
makedepends="libmnl-dev"
-subpackages="$pkgname-bash-completion:bashcomp:noarch $pkgname-doc wireguard-patch:_patch:noarch"
-source="https://git.zx2c4.com/WireGuard/snapshot/$_pkgreal-$pkgver.tar.xz"
-builddir="$srcdir/$_pkgreal-$pkgver"
+subpackages="$pkgname-bash-completion:bashcomp:noarch $pkgname-doc"
+source="https://git.zx2c4.com/$pkgname/snapshot/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
- make RUNSTATEDIR=/run -C src/tools
+ make RUNSTATEDIR=/run -C src
}
package() {
- cd "$builddir"
- make WITH_BASHCOMPLETION=yes WITH_WGQUICK=yes DESTDIR="$pkgdir" -C src/tools install
+ make WITH_BASHCOMPLETION=yes WITH_WGQUICK=yes DESTDIR="$pkgdir" -C src install
}
bashcomp() {
@@ -33,14 +29,4 @@ bashcomp() {
mv "$pkgdir/usr/share/bash-completion" "$subpkgdir/usr/share/"
}
-_patch() {
- depends=""
- pkgdesc="Kernel patch for the WireGuard VPN"
-
- cd "$builddir"
- mkdir -p "$subpkgdir/usr/share/wireguard"
- contrib/kernel-tree/create-patch.sh > "$subpkgdir/usr/share/wireguard/wireguard-$pkgver.patch"
-
-}
-
-sha512sums="e3035030299f5a6ae3ac0c2e35dc2d54745cda8f31185b21c6590f1ddcc9c7a83bf7b71cc71f6d48ed6dc8f2b31f3c704f8fa85685d4113f4c560f7eba7b7d5e WireGuard-0.0.20190406.tar.xz"
+sha512sums="6727ea65551dbb064457449b93a943bd6534ca93bc7fa5704c2f6826266c98688ee9ea28731fda57a5245d5f63c05f3899fcca54e40c0b6251b7c4796e957445 wireguard-tools-1.0.20210914.tar.xz"
diff --git a/user/wireless-regdb/APKBUILD b/user/wireless-regdb/APKBUILD
new file mode 100644
index 000000000..7096fddf8
--- /dev/null
+++ b/user/wireless-regdb/APKBUILD
@@ -0,0 +1,22 @@
+# Contributor: Mira Ressel <aranea@aixah.de>
+# Maintainer:
+pkgname=wireless-regdb
+pkgver=2020.04.29
+pkgrel=0
+pkgdesc="Database of regulatory radio restrictions"
+url="https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb"
+arch="noarch"
+options="!check" # no test suite
+license="ISC"
+depends=""
+makedepends=""
+subpackages="$pkgname-doc"
+source="https://kernel.org/pub/software/network/$pkgname/$pkgname-$pkgver.tar.xz"
+
+package() {
+ install -Dm644 -t "$pkgdir/lib/firmware" regulatory.db regulatory.db.p7s
+ install -Dm644 -t "$pkgdir/usr/share/man/man5" regulatory.bin.5 regulatory.db.5
+ install -Dm644 -t "$pkgdir/usr/share/doc/$pkgname" db.txt
+}
+
+sha512sums="736b1dabfa35bd2639ec8b50c12aa1f04ed7cd5cd9c4db2b4cfc58fbbe21713196bf6d92e4bdb46e328ddcef220e0737fe34fc41370b2327786bb5d93d7ba2e9 wireless-regdb-2020.04.29.tar.xz"
diff --git a/user/wireless-tools/APKBUILD b/user/wireless-tools/APKBUILD
index 0d5cfcf02..e8c000ea5 100644
--- a/user/wireless-tools/APKBUILD
+++ b/user/wireless-tools/APKBUILD
@@ -4,8 +4,8 @@
# Note: Sorry this is disgusting, I blame the author for archiving it using a silly naming scheme
pkgname=wireless-tools
pkgver=30_pre9
-_pkgname=${pkgname/-/_}
-_pkgver=${pkgver/_/.}
+_pkgname=wireless_tools
+_pkgver=$(printf '%s' "$pkgver" | sed 's/_/./')
_pkgmaj=${pkgver%_pre[0-9]*}
pkgrel=0
pkgdesc="Open Source wireless tools"
@@ -16,17 +16,14 @@ license="GPL-2.0-or-later"
depends=""
makedepends="linux-headers"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://hewlettpackard.github.io/wireless-tools/wireless_tools.${_pkgver}.tar.gz"
-
-builddir="$srcdir"/"$_pkgname"."$_pkgmaj"
+source="https://hewlettpackard.github.io/wireless-tools/wireless_tools.$_pkgver.tar.gz"
+builddir="$srcdir/$_pkgname.$_pkgmaj"
build() {
- cd "$builddir"
make
}
package() {
- cd "$builddir"
make INSTALL_DIR="$pkgdir"/usr/sbin \
INSTALL_LIB="$pkgdir"/usr/lib \
INSTALL_INC="$pkgdir"/usr/include \
diff --git a/user/wlroots-0.17/APKBUILD b/user/wlroots-0.17/APKBUILD
new file mode 100644
index 000000000..1da1122f5
--- /dev/null
+++ b/user/wlroots-0.17/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=wlroots-0.17
+pkgver=0.17.0
+pkgrel=0
+pkgdesc="Library for building Wayland compositors"
+url="https://swaywm.org/"
+arch="all"
+license="MIT"
+depends="wayland>=1.19.0"
+makedepends="cmake elogind-dev eudev-dev ffmpeg-dev glslang-dev hwdata
+ lcms2-dev libdisplay-info-dev libinput-dev libglvnd-dev libxkbcommon-dev
+ mesa-dev meson ninja pixman-dev seatd-dev vulkan-loader-dev
+ wayland-dev>=1.19.0 wayland-protocols>=1.21 xcb-util-errors-dev
+ xcb-util-renderutil-dev xcb-util-wm-dev xwayland-dev"
+subpackages="$pkgname-dev"
+source="https://gitlab.freedesktop.org/wlroots/wlroots/-/releases/$pkgver/downloads/wlroots-$pkgver.tar.gz"
+builddir="$srcdir/wlroots-$pkgver"
+
+build() {
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ . output
+ meson compile -C output
+}
+
+check() {
+ ninja -C output test
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C output
+}
+
+sha512sums="ca7314d7dca3ddac3e6970476b4145a0a2566a6632054f406c6e74ea7280a805cdf9b6972cca15c3170a5f41c83677768843b648b6b98ab6428e4ecde43aa4de wlroots-0.17.0.tar.gz"
diff --git a/user/wlroots-0.18/APKBUILD b/user/wlroots-0.18/APKBUILD
new file mode 100644
index 000000000..b320ab773
--- /dev/null
+++ b/user/wlroots-0.18/APKBUILD
@@ -0,0 +1,40 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=wlroots-0.18
+pkgver=0.18.0
+pkgrel=0
+pkgdesc="Library for building Wayland compositors"
+url="https://swaywm.org/"
+arch="all"
+license="MIT"
+depends="wayland>=1.19.0"
+makedepends="cmake elogind-dev eudev-dev ffmpeg-dev glslang-dev hwdata
+ lcms2-dev libdisplay-info-dev libinput-dev libliftoff-dev libglvnd-dev
+ libxkbcommon-dev mesa-dev meson ninja pixman-dev seatd-dev
+ vulkan-loader-dev wayland-dev>=1.19.0 wayland-protocols>=1.21
+ xcb-util-errors-dev xcb-util-renderutil-dev xcb-util-wm-dev
+ xwayland-dev"
+subpackages="$pkgname-dev"
+source="https://gitlab.freedesktop.org/wlroots/wlroots/-/releases/$pkgver/downloads/wlroots-$pkgver.tar.gz"
+builddir="$srcdir/wlroots-$pkgver"
+
+build() {
+ meson setup \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ . output
+ meson compile -C output
+}
+
+check() {
+ meson test -C output
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install -C output
+}
+
+sha512sums="2cf848aa67f41089b60cc7d01c3a344ebaf7f5bbced459675fef885cd4b3e6b99d9a49d6b127518314d0ae38e52e9aff7991611592b2add4cba96f15aa0bf1c6 wlroots-0.18.0.tar.gz"
diff --git a/user/wpa_supplicant/APKBUILD b/user/wpa_supplicant/APKBUILD
index abbcbaff0..c4ae69a6e 100644
--- a/user/wpa_supplicant/APKBUILD
+++ b/user/wpa_supplicant/APKBUILD
@@ -1,22 +1,23 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=wpa_supplicant
-pkgver=2.7
-pkgrel=0
+pkgver=2.9
+pkgrel=1
pkgdesc="Utility providing key negotiation for WPA wireless networks"
url="https://w1.fi/wpa_supplicant/"
arch="all"
+options="!check" # No test suite.
license="BSD-3-Clause AND Public-Domain AND (GPL-2.0+ OR BSD-3-Clause)"
-options="!check" # No test suite
-subpackages="$pkgname-dbus::noarch $pkgname-doc $pkgname-openrc wpa_gui"
depends=""
makedepends="linux-headers openssl-dev dbus-dev libnl3-dev qt5-qtbase-dev"
-source="http://w1.fi/releases/$pkgname-$pkgver.tar.gz
+subpackages="$pkgname-dbus::noarch $pkgname-doc $pkgname-openrc wpa_gui"
+source="https://w1.fi/releases/$pkgname-$pkgver.tar.gz
wpa_supplicant.initd
wpa_supplicant.confd
+ wpa_supplicant.conf
dbus.patch
eloop.patch
- undefined-ref.patch
+ CVE-2019-16275.patch
config
wpa_cli.sh"
@@ -32,6 +33,8 @@ source="http://w1.fi/releases/$pkgname-$pkgver.tar.gz
# - CVE-2017-13086
# - CVE-2017-13087
# - CVE-2017-13088
+# 2.9-r1:
+# - CVE-2019-16275
prepare() {
default_prepare
@@ -68,6 +71,8 @@ package() {
"$pkgdir"/etc/init.d/wpa_supplicant
install -Dm644 "$srcdir"/wpa_supplicant.confd \
"$pkgdir"/etc/conf.d/wpa_supplicant
+ install -Dm640 "$srcdir"/wpa_supplicant.conf \
+ "$pkgdir"/etc/wpa_supplicant/wpa_supplicant.conf
# work around netifrc braindamage
mkdir -p "$pkgdir"/bin
@@ -84,7 +89,7 @@ dbus() {
install -m644 dbus-wpa_supplicant.conf \
"$subpkgdir"/etc/dbus-1/system.d/wpa_supplicant.conf
install -d "$subpkgdir"/usr/share/dbus-1/system-services
- install fi.epitest.hostap.WPASupplicant.service \
+ install fi.w1.wpa_supplicant1.service \
"$subpkgdir"/usr/share/dbus-1/system-services
}
@@ -96,11 +101,12 @@ wpa_gui() {
install -Dm755 wpa_gui-qt4/wpa_gui "$subpkgdir"/usr/bin/wpa_gui
}
-sha512sums="8b6eb5b5f30d351c73db63d73c09f24028a18166246539b4a4f89f0d226fb42751afa2ff72296df33317f615150325d285e8e7bda30e0d88abcdc9637ab731d3 wpa_supplicant-2.7.tar.gz
+sha512sums="37a33f22cab9d27084fbef29856eaea0f692ff339c5b38bd32402dccf293cb849afd4a870cd3b5ca78179f0102f4011ce2f3444a53dc41dc75a5863b0a2226c8 wpa_supplicant-2.9.tar.gz
11eed22f6e793f40c788d586c715deecae03c421d11761b7b4a376660bce812c54cc6f353c7d4d5da9c455aeffd778baefb9e76d380027a729574a756e54ddcc wpa_supplicant.initd
29103161ec2b9631fca9e8d9a97fafd60ffac3fe78cf613b834395ddcaf8be1e253c22e060d7d9f9b974b2d7ce794caa932a2125e29f6494b75bce475f7b30e1 wpa_supplicant.confd
+f8b224b6c5a8adf378d8224beb49f2a99817d303f7e6a724943ecb3313ae85ce0fdd8291a20c95563470681ebf5d991ffa31094b9171e470e9690b38bba25738 wpa_supplicant.conf
dac56bc505a51167042ebe548f0e81a20a5578f753af9bb7ec3335a542d799c6e8739681ef7c8f7747a9bc954f8aa6f1a147250eacba17fd7fff80c4e53638ed dbus.patch
2be055dd1f7da5a3d8e79c2f2c0220ddd31df309452da18f290144d2112d6dbde0fc633bb2ad02c386a39d7785323acaf5f70e5969995a1e8303a094eb5fe232 eloop.patch
-5e790b3ae50f3d29cb38f73cff30f8994798e7bdbecc9f852def910a8150c1724c051bbb52603fa9c6818c950a5fe347bccd21848427f31f54d641ae40621c3f undefined-ref.patch
+63710cfb0992f2c346a9807d8c97cbeaed032fa376a0e93a2e56f7742ce515e9c4dfadbdb1af03ba272281f639aab832f0178f67634c222a5d99e1d462aa9e38 CVE-2019-16275.patch
221660fa0350442a7d8371686b2118861052a4613fb352b7f80079e3750b82f4e48efc378b9d617455007d1106552b695fdca506a3c338283986641f3848b202 config
45d3e70c47d0f7d6dc6730853af8cbcb40ed0713ee7b1069698f5a635939f273f66e72d4221e064c3c71a92154cf07841c8c0d4fc14d796dbb6fe0d92776ee2b wpa_cli.sh"
diff --git a/user/wpa_supplicant/CVE-2019-16275.patch b/user/wpa_supplicant/CVE-2019-16275.patch
new file mode 100644
index 000000000..d764a9db0
--- /dev/null
+++ b/user/wpa_supplicant/CVE-2019-16275.patch
@@ -0,0 +1,73 @@
+From 8c07fa9eda13e835f3f968b2e1c9a8be3a851ff9 Mon Sep 17 00:00:00 2001
+From: Jouni Malinen <j@w1.fi>
+Date: Thu, 29 Aug 2019 11:52:04 +0300
+Subject: [PATCH] AP: Silently ignore management frame from unexpected source
+ address
+
+Do not process any received Management frames with unexpected/invalid SA
+so that we do not add any state for unexpected STA addresses or end up
+sending out frames to unexpected destination. This prevents unexpected
+sequences where an unprotected frame might end up causing the AP to send
+out a response to another device and that other device processing the
+unexpected response.
+
+In particular, this prevents some potential denial of service cases
+where the unexpected response frame from the AP might result in a
+connected station dropping its association.
+
+Signed-off-by: Jouni Malinen <j@w1.fi>
+---
+ src/ap/drv_callbacks.c | 13 +++++++++++++
+ src/ap/ieee802_11.c | 12 ++++++++++++
+ 2 files changed, 25 insertions(+)
+
+diff --git a/src/ap/drv_callbacks.c b/src/ap/drv_callbacks.c
+index 31587685fe3b..34ca379edc3d 100644
+--- a/src/ap/drv_callbacks.c
++++ b/src/ap/drv_callbacks.c
+@@ -131,6 +131,19 @@ int hostapd_notif_assoc(struct hostapd_data *hapd, const u8 *addr,
+ "hostapd_notif_assoc: Skip event with no address");
+ return -1;
+ }
++
++ if (is_multicast_ether_addr(addr) ||
++ is_zero_ether_addr(addr) ||
++ os_memcmp(addr, hapd->own_addr, ETH_ALEN) == 0) {
++ /* Do not process any frames with unexpected/invalid SA so that
++ * we do not add any state for unexpected STA addresses or end
++ * up sending out frames to unexpected destination. */
++ wpa_printf(MSG_DEBUG, "%s: Invalid SA=" MACSTR
++ " in received indication - ignore this indication silently",
++ __func__, MAC2STR(addr));
++ return 0;
++ }
++
+ random_add_randomness(addr, ETH_ALEN);
+
+ hostapd_logger(hapd, addr, HOSTAPD_MODULE_IEEE80211,
+diff --git a/src/ap/ieee802_11.c b/src/ap/ieee802_11.c
+index c85a28db44b7..e7065372e158 100644
+--- a/src/ap/ieee802_11.c
++++ b/src/ap/ieee802_11.c
+@@ -4626,6 +4626,18 @@ int ieee802_11_mgmt(struct hostapd_data *hapd, const u8 *buf, size_t len,
+ fc = le_to_host16(mgmt->frame_control);
+ stype = WLAN_FC_GET_STYPE(fc);
+
++ if (is_multicast_ether_addr(mgmt->sa) ||
++ is_zero_ether_addr(mgmt->sa) ||
++ os_memcmp(mgmt->sa, hapd->own_addr, ETH_ALEN) == 0) {
++ /* Do not process any frames with unexpected/invalid SA so that
++ * we do not add any state for unexpected STA addresses or end
++ * up sending out frames to unexpected destination. */
++ wpa_printf(MSG_DEBUG, "MGMT: Invalid SA=" MACSTR
++ " in received frame - ignore this frame silently",
++ MAC2STR(mgmt->sa));
++ return 0;
++ }
++
+ if (stype == WLAN_FC_STYPE_BEACON) {
+ handle_beacon(hapd, mgmt, len, fi);
+ return 1;
+--
+2.20.1
+
diff --git a/user/wpa_supplicant/undefined-ref.patch b/user/wpa_supplicant/undefined-ref.patch
deleted file mode 100644
index 97a8cc7f3..000000000
--- a/user/wpa_supplicant/undefined-ref.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-From f2973fa39d6109f0f34969e91551a98dc340d537 Mon Sep 17 00:00:00 2001
-From: Jouni Malinen <j@w1.fi>
-Date: Mon, 3 Dec 2018 12:00:26 +0200
-Subject: FT: Fix CONFIG_IEEE80211X=y build without CONFIG_FILS=y
-
-remove_ie() was defined within an ifdef CONFIG_FILS block while it is
-now needed even without CONFIG_FILS=y. Remove the CONFIG_FILS condition
-there.
-
-Fixes 8c41734e5de1 ("FT: Fix Reassociation Request IEs during FT protocol")
-Signed-off-by: Jouni Malinen <j@w1.fi>
----
- wpa_supplicant/sme.c | 2 --
- 1 file changed, 2 deletions(-)
-
-diff --git a/wpa_supplicant/sme.c b/wpa_supplicant/sme.c
-index 39c8069..f77f751 100644
---- a/wpa_supplicant/sme.c
-+++ b/wpa_supplicant/sme.c
-@@ -1386,7 +1386,6 @@ void sme_event_auth(struct wpa_supplicant *wpa_s, union wpa_event_data *data)
- }
-
-
--#ifdef CONFIG_FILS
- #ifdef CONFIG_IEEE80211R
- static void remove_ie(u8 *buf, size_t *len, u8 eid)
- {
-@@ -1401,7 +1400,6 @@ static void remove_ie(u8 *buf, size_t *len, u8 eid)
- }
- }
- #endif /* CONFIG_IEEE80211R */
--#endif /* CONFIG_FILS */
-
-
- void sme_associate(struct wpa_supplicant *wpa_s, enum wpas_mode mode,
---
-cgit v0.12
-
diff --git a/user/wpa_supplicant/wpa_supplicant.conf b/user/wpa_supplicant/wpa_supplicant.conf
new file mode 100644
index 000000000..b8876ffd6
--- /dev/null
+++ b/user/wpa_supplicant/wpa_supplicant.conf
@@ -0,0 +1,4 @@
+# Enable the control interface for wpa_cli and wpa_gui
+ctrl_interface=/var/run/wpa_supplicant
+ctrl_interface_group=wheel
+update_config=1
diff --git a/user/wv/APKBUILD b/user/wv/APKBUILD
index ec9a0a081..d86534b82 100644
--- a/user/wv/APKBUILD
+++ b/user/wv/APKBUILD
@@ -1,16 +1,16 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
-# Maintainer: multiplexd <multi@in-addr.xyz>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=wv
pkgver=1.2.9
pkgrel=0
-pkgdesc="A library that can load and parse Word 2000, 97, 95 and 6 file formats"
+pkgdesc="Library to load and parse Word 2000, 97, 95 and 6 file formats"
url="https://sourceforge.net/projects/wvware"
arch="all"
options="!check" # No test suite.
license="GPL-2.0+ AND RSA-MD5"
-subpackages="$pkgname-dev $pkgname-doc"
depends=""
makedepends="libgsf-dev libpng-dev bzip2-dev"
+subpackages="$pkgname-dev $pkgname-doc"
source="https://www.abisource.com/downloads/wv/$pkgver/wv-$pkgver.tar.gz"
prepare() {
@@ -19,7 +19,6 @@ prepare() {
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,7 +28,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/wxwidgets/APKBUILD b/user/wxwidgets/APKBUILD
index 51b93f709..1fdf5b8c4 100644
--- a/user/wxwidgets/APKBUILD
+++ b/user/wxwidgets/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=wxwidgets
-pkgver=3.1.2
-pkgrel=0
+pkgver=3.1.4
+pkgrel=1
pkgdesc="C++ library for creating applications"
url="https://www.wxwidgets.org/"
arch="all"
@@ -12,13 +12,12 @@ depends=""
checkdepends="adwaita-icon-theme ttf-liberation"
makedepends="glu-dev gstreamer-dev gst-plugins-base-dev gtk+3.0-dev
libexecinfo-dev libjpeg-turbo-dev libnotify-dev libsecret-dev libsm-dev
- mesa-dev tiff-dev zlib-dev"
+ libglvnd-dev tiff-dev zlib-dev"
subpackages="$pkgname-dev $pkgname-lang"
source="https://github.com/wxWidgets/wxWidgets/releases/download/v$pkgver/wxWidgets-$pkgver.tar.bz2"
builddir="$srcdir/wxWidgets-$pkgver"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,13 +30,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e0c6cc58f87c7534be100b098b6db4c5a7a6b7972a8ccc0573dc38cda1b098e1d9f3ea541771173889806f093b4fb5bc0f2b57952eedf907fe7e5d7c01840cf6 wxWidgets-3.1.2.tar.bz2"
+sha512sums="aabb257fa222eb819f1e16086977b0ecfd3eb3406d695e0e642ffdb8b4dc586a9721404916be4756a2d92a1a8dc41b661b54717a64e03850a8a92d32d45ece14 wxWidgets-3.1.4.tar.bz2"
diff --git a/user/x11perf/APKBUILD b/user/x11perf/APKBUILD
index eb39a1193..af91f6759 100644
--- a/user/x11perf/APKBUILD
+++ b/user/x11perf/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=x11perf
-pkgver=1.6.1
+pkgver=1.7.0
pkgrel=0
pkgdesc="X11 server benchmarking utility"
url="https://www.X.Org/"
@@ -11,7 +11,7 @@ depends=""
makedepends="libx11-dev libxft-dev libxmu-dev libxrender-dev util-macros
xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/x11perf-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/test/$pkgname-$pkgver.tar.xz"
build() {
./configure \
@@ -32,4 +32,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="b386151bfe3d7c04ab9953ae1882f3c5b627d6d1afb9a8cfe87c58236a88883fc11bbadb2226b9aa61df84b4fce625a1c9e3d146a124ac17e8d7d605b35d9c0b x11perf-1.6.1.tar.bz2"
+sha512sums="de8185bfbac15fb5eb15c18ba8450d8e383e1356675e0368c9a443d4c2d14245fab87ac0aa4ddcc5ebf731af0ad1173f53c6937104c1be824bfda5b58112fd5e x11perf-1.7.0.tar.xz"
diff --git a/user/x11vnc/APKBUILD b/user/x11vnc/APKBUILD
index c68858df3..497c6f127 100644
--- a/user/x11vnc/APKBUILD
+++ b/user/x11vnc/APKBUILD
@@ -2,26 +2,28 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=x11vnc
pkgver=0.9.16
-pkgrel=0
+pkgrel=2
pkgdesc="VNC server for X11 sessions"
-url="http://www.karlrunge.com/x11vnc/"
+url=" "
arch="all"
license="GPL-2.0-only"
+depends=""
makedepends="cairo-dev libjpeg-turbo-dev libvncserver-dev libxcursor-dev
- openssl-dev utmps-dev zlib-dev"
+ openssl-dev utmps-dev zlib-dev autoconf automake"
subpackages="$pkgname-doc"
source="$pkgname-$pkgver.tar.gz::https://github.com/LibVNC/x11vnc/archive/$pkgver.tar.gz
+ time64.patch
utmps.patch
+ gcc10.patch
+ CVE-2020-29074.patch
"
prepare() {
- cd "$builddir"
default_prepare
./autogen.sh
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -34,14 +36,15 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
sha512sums="69f65ee312f8dede6051b401304987502a213c6c28c7f41e855734f11de1fae14d5d493dc9c28b2e4b7c0be55f8dbd3b35dd2610aae910183772c3e626736fec x11vnc-0.9.16.tar.gz
-8aaa6d1fd9e795a60cad162f2b21fe96cd3a7076a0c4fae6e6b0021881bd019312a678fa3ed69b694da36ee64cc0601812da5df96c6461baf68b7e70adf6cd4e utmps.patch"
+764dc0d22f4b167b7683b1551a6d8cc8ea6745fdd9791422404ef604186930615b52ef1bf66fd03dd9c6eed18845ff4a1e5a235eee80810177e082359a8c4766 time64.patch
+8aaa6d1fd9e795a60cad162f2b21fe96cd3a7076a0c4fae6e6b0021881bd019312a678fa3ed69b694da36ee64cc0601812da5df96c6461baf68b7e70adf6cd4e utmps.patch
+b7b774c155f326bca1fee4bed22609f1e0236dae5cb2fea96bab18301bc6ae8f9c7fb11ba1950eb9488683bd2d3158b7b16a71948f2c8d483594e36625b3d470 gcc10.patch
+7e038a13c18933532725e73769ec44a325064165e7d041e697cb28e8b19c4471ea19e598cb3f59a55375ac0ebebd11c618ecc085a0112f733fdaa3f702ffa444 CVE-2020-29074.patch"
diff --git a/user/x11vnc/CVE-2020-29074.patch b/user/x11vnc/CVE-2020-29074.patch
new file mode 100644
index 000000000..2982c59b1
--- /dev/null
+++ b/user/x11vnc/CVE-2020-29074.patch
@@ -0,0 +1,11 @@
+--- x11vnc-0.9.16/src/scan.c 2024-07-23 04:47:17.680000000 +0000
++++ x11vnc-0.9.16/src/scan.c 2024-07-23 04:48:25.080000000 +0000
+@@ -320,7 +320,7 @@
+
+ #if HAVE_XSHM
+ shm->shmid = shmget(IPC_PRIVATE,
+- xim->bytes_per_line * xim->height, IPC_CREAT | 0777);
++ xim->bytes_per_line * xim->height, IPC_CREAT | 0600);
+
+ if (shm->shmid == -1) {
+ rfbErr("shmget(%s) failed.\n", name);
diff --git a/user/x11vnc/gcc10.patch b/user/x11vnc/gcc10.patch
new file mode 100644
index 000000000..a32d5785d
--- /dev/null
+++ b/user/x11vnc/gcc10.patch
@@ -0,0 +1,42 @@
+From a48b0b1cd887d7f3ae67f525d7d334bd2feffe60 Mon Sep 17 00:00:00 2001
+From: Alexander Tsoy <alexander@tsoy.me>
+Date: Tue, 28 Jan 2020 22:21:01 +0300
+Subject: [PATCH] Fix build with -fno-common
+
+GCC 10 defaults to -fno-common
+---
+ src/util.c | 3 +++
+ src/util.h | 6 +++---
+ 2 files changed, 6 insertions(+), 3 deletions(-)
+
+diff --git a/src/util.c b/src/util.c
+index a82a1a42..6a52ebf4 100644
+--- a/src/util.c
++++ b/src/util.c
+@@ -47,6 +47,9 @@ int hxl = 0;
+ #ifdef LIBVNCSERVER_HAVE_LIBPTHREAD
+ MUTEX(x11Mutex);
+ MUTEX(scrollMutex);
++MUTEX(clientMutex);
++MUTEX(inputMutex);
++MUTEX(pointerMutex);
+ #endif
+
+ int nfix(int i, int n);
+diff --git a/src/util.h b/src/util.h
+index 35c1afd2..99b5dd1d 100644
+--- a/src/util.h
++++ b/src/util.h
+@@ -102,9 +102,9 @@ extern struct timeval _mysleep;
+ #ifdef LIBVNCSERVER_HAVE_LIBPTHREAD
+ extern MUTEX(x11Mutex);
+ extern MUTEX(scrollMutex);
+-MUTEX(clientMutex);
+-MUTEX(inputMutex);
+-MUTEX(pointerMutex);
++extern MUTEX(clientMutex);
++extern MUTEX(inputMutex);
++extern MUTEX(pointerMutex);
+ #endif
+
+ #define X_INIT INIT_MUTEX(x11Mutex)
diff --git a/user/x11vnc/time64.patch b/user/x11vnc/time64.patch
new file mode 100644
index 000000000..663684716
--- /dev/null
+++ b/user/x11vnc/time64.patch
@@ -0,0 +1,78 @@
+--- x11vnc-0.9.16/src/uinput.c.old 2019-01-05 13:22:11.000000000 +0000
++++ x11vnc-0.9.16/src/uinput.c 2020-01-24 04:49:39.479206612 +0000
+@@ -710,6 +710,7 @@
+ static void ptr_move(int dx, int dy) {
+ #ifdef UINPUT_OK
+ struct input_event ev;
++ struct timeval tv;
+ int d = direct_rel_fd < 0 ? fd : direct_rel_fd;
+
+ if (injectable && strchr(injectable, 'M') == NULL) {
+@@ -720,7 +721,9 @@
+
+ if (db) fprintf(stderr, "ptr_move(%d, %d) fd=%d\n", dx, dy, d);
+
+- gettimeofday(&ev.time, NULL);
++ gettimeofday(&tv, NULL);
++ ev.input_event_sec = tv.tv_sec;
++ ev.input_event_usec = tv.tv_usec;
+ ev.type = EV_REL;
+ ev.code = REL_Y;
+ ev.value = dy;
+@@ -755,6 +758,7 @@
+ static void ptr_abs(int x, int y, int p) {
+ #ifdef UINPUT_OK
+ struct input_event ev;
++ struct timeval tv;
+ int x0, y0;
+ int d = direct_abs_fd < 0 ? fd : direct_abs_fd;
+
+@@ -773,7 +777,9 @@
+
+ if (db) fprintf(stderr, "ptr_abs(%d, %d => %d %d, p=%d) fd=%d\n", x0, y0, x, y, p, d);
+
+- gettimeofday(&ev.time, NULL);
++ gettimeofday(&tv, NULL);
++ ev.input_event_sec = tv.tv_sec;
++ ev.input_event_usec = tv.tv_usec;
+ ev.type = EV_ABS;
+ ev.code = ABS_Y;
+ ev.value = y;
+@@ -950,6 +956,7 @@
+ static void button_click(int down, int btn) {
+ #ifdef UINPUT_OK
+ struct input_event ev;
++ struct timeval tv;
+ int d = direct_btn_fd < 0 ? fd : direct_btn_fd;
+
+ if (injectable && strchr(injectable, 'B') == NULL) {
+@@ -959,7 +966,9 @@
+ if (db) fprintf(stderr, "button_click: btn %d %s fd=%d\n", btn, down ? "down" : "up", d);
+
+ memset(&ev, 0, sizeof(ev));
+- gettimeofday(&ev.time, NULL);
++ gettimeofday(&tv, NULL);
++ ev.input_event_sec = tv.tv_sec;
++ ev.input_event_usec = tv.tv_usec;
+ ev.type = EV_KEY;
+ ev.value = down;
+
+@@ -1230,6 +1239,7 @@
+ void uinput_key_command(int down, int keysym, rfbClientPtr client) {
+ #ifdef UINPUT_OK
+ struct input_event ev;
++ struct timeval tv;
+ int scancode;
+ allowed_input_t input;
+ int d = direct_key_fd < 0 ? fd : direct_key_fd;
+@@ -1253,7 +1263,9 @@
+ if (db) fprintf(stderr, "uinput_key_command: %d -> %d %s fd=%d\n", keysym, scancode, down ? "down" : "up", d);
+
+ memset(&ev, 0, sizeof(ev));
+- gettimeofday(&ev.time, NULL);
++ gettimeofday(&tv, NULL);
++ ev.input_event_sec = tv.tv_sec;
++ ev.input_event_usec = tv.tv_usec;
+ ev.type = EV_KEY;
+ ev.code = (unsigned char) scancode;
+ ev.value = down;
diff --git a/user/x264/APKBUILD b/user/x264/APKBUILD
index edae76ade..2ae88e2eb 100644
--- a/user/x264/APKBUILD
+++ b/user/x264/APKBUILD
@@ -1,55 +1,51 @@
# Maintainer:
pkgname=x264
-pkgver=20170930
+pkgver=20191105
pkgrel=0
pkgdesc="Library for encoding H264/AVC video streams"
url="https://www.videolan.org/developers/x264.html"
arch="all"
-license="GPL-2.0+"
options="textrels"
+license="GPL-2.0+"
+depends=""
makedepends="bash coreutils libx11-dev perl"
case $CTARGET_ARCH in
- x86_64) makedepends="$makedepends yasm";;
+ x86_64) makedepends="$makedepends nasm";;
esac
subpackages="$pkgname-dev $pkgname-libs"
-source="ftp://ftp.videolan.org/pub/x264/snapshots/x264-snapshot-$pkgver-2245-stable.tar.bz2"
+source="https://download.videolan.org/pub/videolan/x264/snapshots/x264-snapshot-$pkgver-2245-stable.tar.bz2"
builddir="$srcdir/$pkgname-snapshot-$pkgver-2245-stable"
build() {
- cd "$builddir"
-
- local asmopts=
+ _asmopts=""
case "$CARCH" in
# ppc requires AltiVec, we run on G3s
- ppc | pmmx) asmopts="--disable-asm" ;;
+ ppc | pmmx) _asmopts="--disable-asm" ;;
# VSX was added in power8
- ppc64) asmopts="--disable-vsx" ;;
+ ppc64) _asmopts="--disable-vsx" ;;
esac
# note: not autotools
- CFLAGS="${CFLAGS/-Os/}" ./configure \
+ CFLAGS="$(printf '%s' "$CFLAGS" | sed 's/-Os//')" \
+ ./configure \
--host=$CHOST \
--prefix=/usr \
--enable-shared \
--enable-static \
- $asmopts \
+ $_asmopts \
--enable-pic \
--extra-cflags=-fno-aggressive-loop-optimizations
make
}
check() {
- cd "$builddir"
-
./x264 --version
}
package() {
- cd "$builddir"
-
make DESTDIR="$pkgdir" \
bindir=/usr/bin libdir=/usr/lib includedir=/usr/include \
install
}
-sha512sums="7f0d33f2955dbc8958ad739cfe69b9083ea376d21a4af469a6a44c8db8089859cf0a94018a1cdea49ce4c3b4a1b635cc304208d0492d901fd99a1337ac2c5d57 x264-snapshot-20170930-2245-stable.tar.bz2"
+sha512sums="5a5bc2bd322af8544a6e7d89d6c56d1b609f8a69e177b20964fda1b5c8ad3a0ca77ff00b8ec47412a0c069afac677300c1d26aaaa704cf9be93df27f189171d3 x264-snapshot-20191105-2245-stable.tar.bz2"
diff --git a/user/x265/APKBUILD b/user/x265/APKBUILD
index 5ec4bbffa..9a884cd30 100644
--- a/user/x265/APKBUILD
+++ b/user/x265/APKBUILD
@@ -1,23 +1,26 @@
# Contributor: Carlo Landmeter <clandmeter@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=x265
-pkgver=3.0
-pkgrel=0
+pkgver=3.2.1
+pkgrel=1
pkgdesc="Open Source H265/HEVC video encoder"
url="http://x265.org"
arch="all"
options="textrels"
license="GPL-2.0-only"
+depends=""
makedepends="cmake yasm" # 2.6+ will use nasm instead of yasm
subpackages="$pkgname-dev"
-source="$pkgname-$pkgver.tar.gz::https://bitbucket.org/multicoreware/$pkgname/downloads/${pkgname}_${pkgver}.tar.gz
- x265-unbreak-my-arm.patch"
+source="$pkgname-$pkgver.tar.gz::https://download.videolan.org/pub/videolan/${pkgname}/${pkgname}_${pkgver}.tar.gz
+ x265-unbreak-my-arm.patch
+ x265-arm-asm-primitives.patch
+ "
builddir="$srcdir/${pkgname}_$pkgver"
build() {
cd "$builddir"/build/linux
- local cmake_opts=""
+ cmake_opts=""
case "$CARCH" in
# unfortunately, AltiVec code is very broken (more than 1000 errors)
ppc*) cmake_opts="-DENABLE_ALTIVEC=OFF -DCPU_POWER8=OFF";;
@@ -47,5 +50,6 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="bb7665194ddd4bccbb91c16337463ad4ef32111a1e7779e4cc16964df0992aa99e578cb74fef0edbf41119105e4085574247f60541b0558cc36730ea12d2c6ba x265-3.0.tar.gz
-ac3ecc613fe4da11672de8f397b5541fe2af29b7dd91a48859bfe8824934a5966c41ca30de242564c46f1a0cdd2a0da9331d9f547fc21120066fb3c45347c4c4 x265-unbreak-my-arm.patch"
+sha512sums="5cb29b9d4475c1f686f6e31e47ccddde3db1639d5dcf9c058513389a9fdeb35a83b14e30e59498a76dec74bb0b410b6d8f5b1b45d18927be9811bb6a40d8d568 x265-3.2.1.tar.gz
+ac3ecc613fe4da11672de8f397b5541fe2af29b7dd91a48859bfe8824934a5966c41ca30de242564c46f1a0cdd2a0da9331d9f547fc21120066fb3c45347c4c4 x265-unbreak-my-arm.patch
+94c0894c1bc0ccdb21526df0ab5fbd5d3c9fc4ff7ad93ab9cb2fbe831be49f01624136c0e9d8968ea44d8c91e42bf790b2c75e7afe313532972ebe154cb76627 x265-arm-asm-primitives.patch"
diff --git a/user/x265/x265-arm-asm-primitives.patch b/user/x265/x265-arm-asm-primitives.patch
new file mode 100644
index 000000000..f49aafe57
--- /dev/null
+++ b/user/x265/x265-arm-asm-primitives.patch
@@ -0,0 +1,360 @@
+From <https://git.busybox.net/buildroot/tree/package/x265/0003-arm-asm-primitives.patch?id=57d4a27eaf1a9e59d767c321e7b7500c5060a2ac>.
+This fixes build errors like:
+
+ cd /tmp/guix-build-x265-2.8.drv-0/x265_2.8/build/encoder && /gnu/store/cd5q2pni1d95fs3cdabbclyh9hqhw2nq-gcc-5.5.0/bin/c++ -DEXPORT_C_API=1 -DHAVE_ARMV6=1 -DHAVE_INT_TYPES_H=1 -DHAVE_NEON -DHIGH_BIT_DEPTH=0 -DX265_ARCH_ARM=1 -DX265_DEPTH=8 -DX265_NS=x265 -D__STDC_LIMIT_MACROS=1 -I/tmp/guix-build-x265-2.8.drv-0/x265_2.8/source/. -I/tmp/guix-build-x265-2.8.drv-0/x265_2.8/source/common -I/tmp/guix-build-x265-2.8.drv-0/x265_2.8/source/encoder -I/tmp/guix-build-x265-2.8.drv-0/x265_2.8/build -O2 -g -DNDEBUG -Wall -Wextra -Wshadow -std=gnu++98 -fPIC -mcpu=native -mfloat-abi=hard -mfpu=neon -marm -fPIC -Wno-array-bounds -ffast-math -fno-exceptions -Wno-uninitialized -o CMakeFiles/encoder.dir/search.cpp.o -c /tmp/guix-build-x265-2.8.drv-0/x265_2.8/source/encoder/search.cpp
+ /tmp/guix-build-x265-2.8.drv-0/x265_2.8/source/common/arm/asm-primitives.cpp:437:38: error: incompatible types in assignment of ?void(const pixel*, intptr_t, int16_t*, intptr_t) {aka void(const unsigned char*, int, short int*, int)}? to ?void (* [2])(const pixel*, intptr_t, int16_t*, intptr_t) {aka void (* [2])(const unsigned char*, int, short int*, int)}?
+ p.pu[LUMA_64x48].convert_p2s = PFX(filterPixelToShort_64x48_neon);
+ ^
+
+Downloaded from upstream bug report:
+https://bitbucket.org/multicoreware/x265/issues/406
+
+Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de>
+
+--- ./source/common/arm/asm-primitives.cpp.orig 2018-05-21 02:33:10.000000000 -0600
++++ ./source/common/arm/asm-primitives.cpp 2018-05-28 20:38:37.302378303 -0600
+@@ -48,77 +48,77 @@ void setupAssemblyPrimitives(EncoderPrim
+ p.ssim_4x4x2_core = PFX(ssim_4x4x2_core_neon);
+
+ // addAvg
+- p.pu[LUMA_4x4].addAvg = PFX(addAvg_4x4_neon);
+- p.pu[LUMA_4x8].addAvg = PFX(addAvg_4x8_neon);
+- p.pu[LUMA_4x16].addAvg = PFX(addAvg_4x16_neon);
+- p.pu[LUMA_8x4].addAvg = PFX(addAvg_8x4_neon);
+- p.pu[LUMA_8x8].addAvg = PFX(addAvg_8x8_neon);
+- p.pu[LUMA_8x16].addAvg = PFX(addAvg_8x16_neon);
+- p.pu[LUMA_8x32].addAvg = PFX(addAvg_8x32_neon);
+- p.pu[LUMA_12x16].addAvg = PFX(addAvg_12x16_neon);
+- p.pu[LUMA_16x4].addAvg = PFX(addAvg_16x4_neon);
+- p.pu[LUMA_16x8].addAvg = PFX(addAvg_16x8_neon);
+- p.pu[LUMA_16x12].addAvg = PFX(addAvg_16x12_neon);
+- p.pu[LUMA_16x16].addAvg = PFX(addAvg_16x16_neon);
+- p.pu[LUMA_16x32].addAvg = PFX(addAvg_16x32_neon);
+- p.pu[LUMA_16x64].addAvg = PFX(addAvg_16x64_neon);
+- p.pu[LUMA_24x32].addAvg = PFX(addAvg_24x32_neon);
+- p.pu[LUMA_32x8].addAvg = PFX(addAvg_32x8_neon);
+- p.pu[LUMA_32x16].addAvg = PFX(addAvg_32x16_neon);
+- p.pu[LUMA_32x24].addAvg = PFX(addAvg_32x24_neon);
+- p.pu[LUMA_32x32].addAvg = PFX(addAvg_32x32_neon);
+- p.pu[LUMA_32x64].addAvg = PFX(addAvg_32x64_neon);
+- p.pu[LUMA_48x64].addAvg = PFX(addAvg_48x64_neon);
+- p.pu[LUMA_64x16].addAvg = PFX(addAvg_64x16_neon);
+- p.pu[LUMA_64x32].addAvg = PFX(addAvg_64x32_neon);
+- p.pu[LUMA_64x48].addAvg = PFX(addAvg_64x48_neon);
+- p.pu[LUMA_64x64].addAvg = PFX(addAvg_64x64_neon);
++ p.pu[LUMA_4x4].addAvg[ALIGNED] = PFX(addAvg_4x4_neon);
++ p.pu[LUMA_4x8].addAvg[ALIGNED] = PFX(addAvg_4x8_neon);
++ p.pu[LUMA_4x16].addAvg[ALIGNED] = PFX(addAvg_4x16_neon);
++ p.pu[LUMA_8x4].addAvg[ALIGNED] = PFX(addAvg_8x4_neon);
++ p.pu[LUMA_8x8].addAvg[ALIGNED] = PFX(addAvg_8x8_neon);
++ p.pu[LUMA_8x16].addAvg[ALIGNED] = PFX(addAvg_8x16_neon);
++ p.pu[LUMA_8x32].addAvg[ALIGNED] = PFX(addAvg_8x32_neon);
++ p.pu[LUMA_12x16].addAvg[ALIGNED] = PFX(addAvg_12x16_neon);
++ p.pu[LUMA_16x4].addAvg[ALIGNED] = PFX(addAvg_16x4_neon);
++ p.pu[LUMA_16x8].addAvg[ALIGNED] = PFX(addAvg_16x8_neon);
++ p.pu[LUMA_16x12].addAvg[ALIGNED] = PFX(addAvg_16x12_neon);
++ p.pu[LUMA_16x16].addAvg[ALIGNED] = PFX(addAvg_16x16_neon);
++ p.pu[LUMA_16x32].addAvg[ALIGNED] = PFX(addAvg_16x32_neon);
++ p.pu[LUMA_16x64].addAvg[ALIGNED] = PFX(addAvg_16x64_neon);
++ p.pu[LUMA_24x32].addAvg[ALIGNED] = PFX(addAvg_24x32_neon);
++ p.pu[LUMA_32x8].addAvg[ALIGNED] = PFX(addAvg_32x8_neon);
++ p.pu[LUMA_32x16].addAvg[ALIGNED] = PFX(addAvg_32x16_neon);
++ p.pu[LUMA_32x24].addAvg[ALIGNED] = PFX(addAvg_32x24_neon);
++ p.pu[LUMA_32x32].addAvg[ALIGNED] = PFX(addAvg_32x32_neon);
++ p.pu[LUMA_32x64].addAvg[ALIGNED] = PFX(addAvg_32x64_neon);
++ p.pu[LUMA_48x64].addAvg[ALIGNED] = PFX(addAvg_48x64_neon);
++ p.pu[LUMA_64x16].addAvg[ALIGNED] = PFX(addAvg_64x16_neon);
++ p.pu[LUMA_64x32].addAvg[ALIGNED] = PFX(addAvg_64x32_neon);
++ p.pu[LUMA_64x48].addAvg[ALIGNED] = PFX(addAvg_64x48_neon);
++ p.pu[LUMA_64x64].addAvg[ALIGNED] = PFX(addAvg_64x64_neon);
+
+ // chroma addAvg
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_4x2].addAvg = PFX(addAvg_4x2_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_4x4].addAvg = PFX(addAvg_4x4_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_4x8].addAvg = PFX(addAvg_4x8_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_4x16].addAvg = PFX(addAvg_4x16_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_6x8].addAvg = PFX(addAvg_6x8_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_8x2].addAvg = PFX(addAvg_8x2_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_8x4].addAvg = PFX(addAvg_8x4_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_8x6].addAvg = PFX(addAvg_8x6_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_8x8].addAvg = PFX(addAvg_8x8_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_8x16].addAvg = PFX(addAvg_8x16_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_8x32].addAvg = PFX(addAvg_8x32_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_12x16].addAvg = PFX(addAvg_12x16_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_16x4].addAvg = PFX(addAvg_16x4_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_16x8].addAvg = PFX(addAvg_16x8_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_16x12].addAvg = PFX(addAvg_16x12_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_16x16].addAvg = PFX(addAvg_16x16_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_16x32].addAvg = PFX(addAvg_16x32_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_24x32].addAvg = PFX(addAvg_24x32_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_32x8].addAvg = PFX(addAvg_32x8_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_32x16].addAvg = PFX(addAvg_32x16_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_32x24].addAvg = PFX(addAvg_32x24_neon);
+- p.chroma[X265_CSP_I420].pu[CHROMA_420_32x32].addAvg = PFX(addAvg_32x32_neon);
+-
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_4x8].addAvg = PFX(addAvg_4x8_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_4x16].addAvg = PFX(addAvg_4x16_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_4x32].addAvg = PFX(addAvg_4x32_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_6x16].addAvg = PFX(addAvg_6x16_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_8x4].addAvg = PFX(addAvg_8x4_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_8x8].addAvg = PFX(addAvg_8x8_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_8x12].addAvg = PFX(addAvg_8x12_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_8x16].addAvg = PFX(addAvg_8x16_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_8x32].addAvg = PFX(addAvg_8x32_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_8x64].addAvg = PFX(addAvg_8x64_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_12x32].addAvg = PFX(addAvg_12x32_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_16x8].addAvg = PFX(addAvg_16x8_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_16x16].addAvg = PFX(addAvg_16x16_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_16x24].addAvg = PFX(addAvg_16x24_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_16x32].addAvg = PFX(addAvg_16x32_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_16x64].addAvg = PFX(addAvg_16x64_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_24x64].addAvg = PFX(addAvg_24x64_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_32x16].addAvg = PFX(addAvg_32x16_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_32x32].addAvg = PFX(addAvg_32x32_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_32x48].addAvg = PFX(addAvg_32x48_neon);
+- p.chroma[X265_CSP_I422].pu[CHROMA_422_32x64].addAvg = PFX(addAvg_32x64_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_4x2].addAvg[ALIGNED] = PFX(addAvg_4x2_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_4x4].addAvg[ALIGNED] = PFX(addAvg_4x4_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_4x8].addAvg[ALIGNED] = PFX(addAvg_4x8_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_4x16].addAvg[ALIGNED] = PFX(addAvg_4x16_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_6x8].addAvg[ALIGNED] = PFX(addAvg_6x8_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_8x2].addAvg[ALIGNED] = PFX(addAvg_8x2_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_8x4].addAvg[ALIGNED] = PFX(addAvg_8x4_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_8x6].addAvg[ALIGNED] = PFX(addAvg_8x6_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_8x8].addAvg[ALIGNED] = PFX(addAvg_8x8_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_8x16].addAvg[ALIGNED] = PFX(addAvg_8x16_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_8x32].addAvg[ALIGNED] = PFX(addAvg_8x32_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_12x16].addAvg[ALIGNED] = PFX(addAvg_12x16_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_16x4].addAvg[ALIGNED] = PFX(addAvg_16x4_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_16x8].addAvg[ALIGNED] = PFX(addAvg_16x8_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_16x12].addAvg[ALIGNED] = PFX(addAvg_16x12_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_16x16].addAvg[ALIGNED] = PFX(addAvg_16x16_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_16x32].addAvg[ALIGNED] = PFX(addAvg_16x32_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_24x32].addAvg[ALIGNED] = PFX(addAvg_24x32_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_32x8].addAvg[ALIGNED] = PFX(addAvg_32x8_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_32x16].addAvg[ALIGNED] = PFX(addAvg_32x16_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_32x24].addAvg[ALIGNED] = PFX(addAvg_32x24_neon);
++ p.chroma[X265_CSP_I420].pu[CHROMA_420_32x32].addAvg[ALIGNED] = PFX(addAvg_32x32_neon);
++
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_4x8].addAvg[ALIGNED] = PFX(addAvg_4x8_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_4x16].addAvg[ALIGNED] = PFX(addAvg_4x16_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_4x32].addAvg[ALIGNED] = PFX(addAvg_4x32_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_6x16].addAvg[ALIGNED] = PFX(addAvg_6x16_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_8x4].addAvg[ALIGNED] = PFX(addAvg_8x4_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_8x8].addAvg[ALIGNED] = PFX(addAvg_8x8_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_8x12].addAvg[ALIGNED] = PFX(addAvg_8x12_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_8x16].addAvg[ALIGNED] = PFX(addAvg_8x16_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_8x32].addAvg[ALIGNED] = PFX(addAvg_8x32_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_8x64].addAvg[ALIGNED] = PFX(addAvg_8x64_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_12x32].addAvg[ALIGNED] = PFX(addAvg_12x32_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_16x8].addAvg[ALIGNED] = PFX(addAvg_16x8_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_16x16].addAvg[ALIGNED] = PFX(addAvg_16x16_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_16x24].addAvg[ALIGNED] = PFX(addAvg_16x24_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_16x32].addAvg[ALIGNED] = PFX(addAvg_16x32_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_16x64].addAvg[ALIGNED] = PFX(addAvg_16x64_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_24x64].addAvg[ALIGNED] = PFX(addAvg_24x64_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_32x16].addAvg[ALIGNED] = PFX(addAvg_32x16_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_32x32].addAvg[ALIGNED] = PFX(addAvg_32x32_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_32x48].addAvg[ALIGNED] = PFX(addAvg_32x48_neon);
++ p.chroma[X265_CSP_I422].pu[CHROMA_422_32x64].addAvg[ALIGNED] = PFX(addAvg_32x64_neon);
+
+ // quant
+ p.quant = PFX(quant_neon);
+@@ -402,7 +402,7 @@ void setupAssemblyPrimitives(EncoderPrim
+ p.scale2D_64to32 = PFX(scale2D_64to32_neon);
+
+ // scale1D_128to64
+- p.scale1D_128to64 = PFX(scale1D_128to64_neon);
++ p.scale1D_128to64[ALIGNED] = PFX(scale1D_128to64_neon);
+
+ // copy_count
+ p.cu[BLOCK_4x4].copy_cnt = PFX(copy_cnt_4_neon);
+@@ -411,37 +411,37 @@ void setupAssemblyPrimitives(EncoderPrim
+ p.cu[BLOCK_32x32].copy_cnt = PFX(copy_cnt_32_neon);
+
+ // filterPixelToShort
+- p.pu[LUMA_4x4].convert_p2s = PFX(filterPixelToShort_4x4_neon);
+- p.pu[LUMA_4x8].convert_p2s = PFX(filterPixelToShort_4x8_neon);
+- p.pu[LUMA_4x16].convert_p2s = PFX(filterPixelToShort_4x16_neon);
+- p.pu[LUMA_8x4].convert_p2s = PFX(filterPixelToShort_8x4_neon);
+- p.pu[LUMA_8x8].convert_p2s = PFX(filterPixelToShort_8x8_neon);
+- p.pu[LUMA_8x16].convert_p2s = PFX(filterPixelToShort_8x16_neon);
+- p.pu[LUMA_8x32].convert_p2s = PFX(filterPixelToShort_8x32_neon);
+- p.pu[LUMA_12x16].convert_p2s = PFX(filterPixelToShort_12x16_neon);
+- p.pu[LUMA_16x4].convert_p2s = PFX(filterPixelToShort_16x4_neon);
+- p.pu[LUMA_16x8].convert_p2s = PFX(filterPixelToShort_16x8_neon);
+- p.pu[LUMA_16x12].convert_p2s = PFX(filterPixelToShort_16x12_neon);
+- p.pu[LUMA_16x16].convert_p2s = PFX(filterPixelToShort_16x16_neon);
+- p.pu[LUMA_16x32].convert_p2s = PFX(filterPixelToShort_16x32_neon);
+- p.pu[LUMA_16x64].convert_p2s = PFX(filterPixelToShort_16x64_neon);
+- p.pu[LUMA_24x32].convert_p2s = PFX(filterPixelToShort_24x32_neon);
+- p.pu[LUMA_32x8].convert_p2s = PFX(filterPixelToShort_32x8_neon);
+- p.pu[LUMA_32x16].convert_p2s = PFX(filterPixelToShort_32x16_neon);
+- p.pu[LUMA_32x24].convert_p2s = PFX(filterPixelToShort_32x24_neon);
+- p.pu[LUMA_32x32].convert_p2s = PFX(filterPixelToShort_32x32_neon);
+- p.pu[LUMA_32x64].convert_p2s = PFX(filterPixelToShort_32x64_neon);
+- p.pu[LUMA_48x64].convert_p2s = PFX(filterPixelToShort_48x64_neon);
+- p.pu[LUMA_64x16].convert_p2s = PFX(filterPixelToShort_64x16_neon);
+- p.pu[LUMA_64x32].convert_p2s = PFX(filterPixelToShort_64x32_neon);
+- p.pu[LUMA_64x48].convert_p2s = PFX(filterPixelToShort_64x48_neon);
+- p.pu[LUMA_64x64].convert_p2s = PFX(filterPixelToShort_64x64_neon);
++ p.pu[LUMA_4x4].convert_p2s[ALIGNED] = PFX(filterPixelToShort_4x4_neon);
++ p.pu[LUMA_4x8].convert_p2s[ALIGNED] = PFX(filterPixelToShort_4x8_neon);
++ p.pu[LUMA_4x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_4x16_neon);
++ p.pu[LUMA_8x4].convert_p2s[ALIGNED] = PFX(filterPixelToShort_8x4_neon);
++ p.pu[LUMA_8x8].convert_p2s[ALIGNED] = PFX(filterPixelToShort_8x8_neon);
++ p.pu[LUMA_8x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_8x16_neon);
++ p.pu[LUMA_8x32].convert_p2s[ALIGNED] = PFX(filterPixelToShort_8x32_neon);
++ p.pu[LUMA_12x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_12x16_neon);
++ p.pu[LUMA_16x4].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x4_neon);
++ p.pu[LUMA_16x8].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x8_neon);
++ p.pu[LUMA_16x12].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x12_neon);
++ p.pu[LUMA_16x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x16_neon);
++ p.pu[LUMA_16x32].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x32_neon);
++ p.pu[LUMA_16x64].convert_p2s[ALIGNED] = PFX(filterPixelToShort_16x64_neon);
++ p.pu[LUMA_24x32].convert_p2s[ALIGNED] = PFX(filterPixelToShort_24x32_neon);
++ p.pu[LUMA_32x8].convert_p2s[ALIGNED] = PFX(filterPixelToShort_32x8_neon);
++ p.pu[LUMA_32x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_32x16_neon);
++ p.pu[LUMA_32x24].convert_p2s[ALIGNED] = PFX(filterPixelToShort_32x24_neon);
++ p.pu[LUMA_32x32].convert_p2s[ALIGNED] = PFX(filterPixelToShort_32x32_neon);
++ p.pu[LUMA_32x64].convert_p2s[ALIGNED] = PFX(filterPixelToShort_32x64_neon);
++ p.pu[LUMA_48x64].convert_p2s[ALIGNED] = PFX(filterPixelToShort_48x64_neon);
++ p.pu[LUMA_64x16].convert_p2s[ALIGNED] = PFX(filterPixelToShort_64x16_neon);
++ p.pu[LUMA_64x32].convert_p2s[ALIGNED] = PFX(filterPixelToShort_64x32_neon);
++ p.pu[LUMA_64x48].convert_p2s[ALIGNED] = PFX(filterPixelToShort_64x48_neon);
++ p.pu[LUMA_64x64].convert_p2s[ALIGNED] = PFX(filterPixelToShort_64x64_neon);
+
+ // Block_fill
+- p.cu[BLOCK_4x4].blockfill_s = PFX(blockfill_s_4x4_neon);
+- p.cu[BLOCK_8x8].blockfill_s = PFX(blockfill_s_8x8_neon);
+- p.cu[BLOCK_16x16].blockfill_s = PFX(blockfill_s_16x16_neon);
+- p.cu[BLOCK_32x32].blockfill_s = PFX(blockfill_s_32x32_neon);
++ p.cu[BLOCK_4x4].blockfill_s[ALIGNED] = PFX(blockfill_s_4x4_neon);
++ p.cu[BLOCK_8x8].blockfill_s[ALIGNED] = PFX(blockfill_s_8x8_neon);
++ p.cu[BLOCK_16x16].blockfill_s[ALIGNED] = PFX(blockfill_s_16x16_neon);
++ p.cu[BLOCK_32x32].blockfill_s[ALIGNED] = PFX(blockfill_s_32x32_neon);
+
+ // Blockcopy_ss
+ p.cu[BLOCK_4x4].copy_ss = PFX(blockcopy_ss_4x4_neon);
+@@ -495,21 +495,21 @@ void setupAssemblyPrimitives(EncoderPrim
+ p.chroma[X265_CSP_I422].cu[BLOCK_422_32x64].copy_sp = PFX(blockcopy_sp_32x64_neon);
+
+ // pixel_add_ps
+- p.cu[BLOCK_4x4].add_ps = PFX(pixel_add_ps_4x4_neon);
+- p.cu[BLOCK_8x8].add_ps = PFX(pixel_add_ps_8x8_neon);
+- p.cu[BLOCK_16x16].add_ps = PFX(pixel_add_ps_16x16_neon);
+- p.cu[BLOCK_32x32].add_ps = PFX(pixel_add_ps_32x32_neon);
+- p.cu[BLOCK_64x64].add_ps = PFX(pixel_add_ps_64x64_neon);
++ p.cu[BLOCK_4x4].add_ps[ALIGNED] = PFX(pixel_add_ps_4x4_neon);
++ p.cu[BLOCK_8x8].add_ps[ALIGNED] = PFX(pixel_add_ps_8x8_neon);
++ p.cu[BLOCK_16x16].add_ps[ALIGNED] = PFX(pixel_add_ps_16x16_neon);
++ p.cu[BLOCK_32x32].add_ps[ALIGNED] = PFX(pixel_add_ps_32x32_neon);
++ p.cu[BLOCK_64x64].add_ps[ALIGNED] = PFX(pixel_add_ps_64x64_neon);
+
+ // chroma add_ps
+- p.chroma[X265_CSP_I420].cu[BLOCK_420_4x4].add_ps = PFX(pixel_add_ps_4x4_neon);
+- p.chroma[X265_CSP_I420].cu[BLOCK_420_8x8].add_ps = PFX(pixel_add_ps_8x8_neon);
+- p.chroma[X265_CSP_I420].cu[BLOCK_420_16x16].add_ps = PFX(pixel_add_ps_16x16_neon);
+- p.chroma[X265_CSP_I420].cu[BLOCK_420_32x32].add_ps = PFX(pixel_add_ps_32x32_neon);
+- p.chroma[X265_CSP_I422].cu[BLOCK_422_4x8].add_ps = PFX(pixel_add_ps_4x8_neon);
+- p.chroma[X265_CSP_I422].cu[BLOCK_422_8x16].add_ps = PFX(pixel_add_ps_8x16_neon);
+- p.chroma[X265_CSP_I422].cu[BLOCK_422_16x32].add_ps = PFX(pixel_add_ps_16x32_neon);
+- p.chroma[X265_CSP_I422].cu[BLOCK_422_32x64].add_ps = PFX(pixel_add_ps_32x64_neon);
++ p.chroma[X265_CSP_I420].cu[BLOCK_420_4x4].add_ps[ALIGNED] = PFX(pixel_add_ps_4x4_neon);
++ p.chroma[X265_CSP_I420].cu[BLOCK_420_8x8].add_ps[ALIGNED] = PFX(pixel_add_ps_8x8_neon);
++ p.chroma[X265_CSP_I420].cu[BLOCK_420_16x16].add_ps[ALIGNED] = PFX(pixel_add_ps_16x16_neon);
++ p.chroma[X265_CSP_I420].cu[BLOCK_420_32x32].add_ps[ALIGNED] = PFX(pixel_add_ps_32x32_neon);
++ p.chroma[X265_CSP_I422].cu[BLOCK_422_4x8].add_ps[ALIGNED] = PFX(pixel_add_ps_4x8_neon);
++ p.chroma[X265_CSP_I422].cu[BLOCK_422_8x16].add_ps[ALIGNED] = PFX(pixel_add_ps_8x16_neon);
++ p.chroma[X265_CSP_I422].cu[BLOCK_422_16x32].add_ps[ALIGNED] = PFX(pixel_add_ps_16x32_neon);
++ p.chroma[X265_CSP_I422].cu[BLOCK_422_32x64].add_ps[ALIGNED] = PFX(pixel_add_ps_32x64_neon);
+
+ // cpy2Dto1D_shr
+ p.cu[BLOCK_4x4].cpy2Dto1D_shr = PFX(cpy2Dto1D_shr_4x4_neon);
+@@ -518,10 +518,10 @@ void setupAssemblyPrimitives(EncoderPrim
+ p.cu[BLOCK_32x32].cpy2Dto1D_shr = PFX(cpy2Dto1D_shr_32x32_neon);
+
+ // ssd_s
+- p.cu[BLOCK_4x4].ssd_s = PFX(pixel_ssd_s_4x4_neon);
+- p.cu[BLOCK_8x8].ssd_s = PFX(pixel_ssd_s_8x8_neon);
+- p.cu[BLOCK_16x16].ssd_s = PFX(pixel_ssd_s_16x16_neon);
+- p.cu[BLOCK_32x32].ssd_s = PFX(pixel_ssd_s_32x32_neon);
++ p.cu[BLOCK_4x4].ssd_s[ALIGNED] = PFX(pixel_ssd_s_4x4_neon);
++ p.cu[BLOCK_8x8].ssd_s[ALIGNED] = PFX(pixel_ssd_s_8x8_neon);
++ p.cu[BLOCK_16x16].ssd_s[ALIGNED] = PFX(pixel_ssd_s_16x16_neon);
++ p.cu[BLOCK_32x32].ssd_s[ALIGNED] = PFX(pixel_ssd_s_32x32_neon);
+
+ // sse_ss
+ p.cu[BLOCK_4x4].sse_ss = PFX(pixel_sse_ss_4x4_neon);
+@@ -548,10 +548,10 @@ void setupAssemblyPrimitives(EncoderPrim
+ p.chroma[X265_CSP_I422].cu[BLOCK_422_32x64].sub_ps = PFX(pixel_sub_ps_32x64_neon);
+
+ // calc_Residual
+- p.cu[BLOCK_4x4].calcresidual = PFX(getResidual4_neon);
+- p.cu[BLOCK_8x8].calcresidual = PFX(getResidual8_neon);
+- p.cu[BLOCK_16x16].calcresidual = PFX(getResidual16_neon);
+- p.cu[BLOCK_32x32].calcresidual = PFX(getResidual32_neon);
++ p.cu[BLOCK_4x4].calcresidual[ALIGNED] = PFX(getResidual4_neon);
++ p.cu[BLOCK_8x8].calcresidual[ALIGNED] = PFX(getResidual8_neon);
++ p.cu[BLOCK_16x16].calcresidual[ALIGNED] = PFX(getResidual16_neon);
++ p.cu[BLOCK_32x32].calcresidual[ALIGNED] = PFX(getResidual32_neon);
+
+ // sse_pp
+ p.cu[BLOCK_4x4].sse_pp = PFX(pixel_sse_pp_4x4_neon);
+@@ -722,31 +722,31 @@ void setupAssemblyPrimitives(EncoderPrim
+ p.pu[LUMA_64x64].sad_x4 = PFX(sad_x4_64x64_neon);
+
+ // pixel_avg_pp
+- p.pu[LUMA_4x4].pixelavg_pp = PFX(pixel_avg_pp_4x4_neon);
+- p.pu[LUMA_4x8].pixelavg_pp = PFX(pixel_avg_pp_4x8_neon);
+- p.pu[LUMA_4x16].pixelavg_pp = PFX(pixel_avg_pp_4x16_neon);
+- p.pu[LUMA_8x4].pixelavg_pp = PFX(pixel_avg_pp_8x4_neon);
+- p.pu[LUMA_8x8].pixelavg_pp = PFX(pixel_avg_pp_8x8_neon);
+- p.pu[LUMA_8x16].pixelavg_pp = PFX(pixel_avg_pp_8x16_neon);
+- p.pu[LUMA_8x32].pixelavg_pp = PFX(pixel_avg_pp_8x32_neon);
+- p.pu[LUMA_12x16].pixelavg_pp = PFX(pixel_avg_pp_12x16_neon);
+- p.pu[LUMA_16x4].pixelavg_pp = PFX(pixel_avg_pp_16x4_neon);
+- p.pu[LUMA_16x8].pixelavg_pp = PFX(pixel_avg_pp_16x8_neon);
+- p.pu[LUMA_16x12].pixelavg_pp = PFX(pixel_avg_pp_16x12_neon);
+- p.pu[LUMA_16x16].pixelavg_pp = PFX(pixel_avg_pp_16x16_neon);
+- p.pu[LUMA_16x32].pixelavg_pp = PFX(pixel_avg_pp_16x32_neon);
+- p.pu[LUMA_16x64].pixelavg_pp = PFX(pixel_avg_pp_16x64_neon);
+- p.pu[LUMA_24x32].pixelavg_pp = PFX(pixel_avg_pp_24x32_neon);
+- p.pu[LUMA_32x8].pixelavg_pp = PFX(pixel_avg_pp_32x8_neon);
+- p.pu[LUMA_32x16].pixelavg_pp = PFX(pixel_avg_pp_32x16_neon);
+- p.pu[LUMA_32x24].pixelavg_pp = PFX(pixel_avg_pp_32x24_neon);
+- p.pu[LUMA_32x32].pixelavg_pp = PFX(pixel_avg_pp_32x32_neon);
+- p.pu[LUMA_32x64].pixelavg_pp = PFX(pixel_avg_pp_32x64_neon);
+- p.pu[LUMA_48x64].pixelavg_pp = PFX(pixel_avg_pp_48x64_neon);
+- p.pu[LUMA_64x16].pixelavg_pp = PFX(pixel_avg_pp_64x16_neon);
+- p.pu[LUMA_64x32].pixelavg_pp = PFX(pixel_avg_pp_64x32_neon);
+- p.pu[LUMA_64x48].pixelavg_pp = PFX(pixel_avg_pp_64x48_neon);
+- p.pu[LUMA_64x64].pixelavg_pp = PFX(pixel_avg_pp_64x64_neon);
++ p.pu[LUMA_4x4].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_4x4_neon);
++ p.pu[LUMA_4x8].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_4x8_neon);
++ p.pu[LUMA_4x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_4x16_neon);
++ p.pu[LUMA_8x4].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_8x4_neon);
++ p.pu[LUMA_8x8].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_8x8_neon);
++ p.pu[LUMA_8x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_8x16_neon);
++ p.pu[LUMA_8x32].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_8x32_neon);
++ p.pu[LUMA_12x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_12x16_neon);
++ p.pu[LUMA_16x4].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x4_neon);
++ p.pu[LUMA_16x8].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x8_neon);
++ p.pu[LUMA_16x12].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x12_neon);
++ p.pu[LUMA_16x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x16_neon);
++ p.pu[LUMA_16x32].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x32_neon);
++ p.pu[LUMA_16x64].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_16x64_neon);
++ p.pu[LUMA_24x32].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_24x32_neon);
++ p.pu[LUMA_32x8].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_32x8_neon);
++ p.pu[LUMA_32x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_32x16_neon);
++ p.pu[LUMA_32x24].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_32x24_neon);
++ p.pu[LUMA_32x32].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_32x32_neon);
++ p.pu[LUMA_32x64].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_32x64_neon);
++ p.pu[LUMA_48x64].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_48x64_neon);
++ p.pu[LUMA_64x16].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_64x16_neon);
++ p.pu[LUMA_64x32].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_64x32_neon);
++ p.pu[LUMA_64x48].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_64x48_neon);
++ p.pu[LUMA_64x64].pixelavg_pp[ALIGNED] = PFX(pixel_avg_pp_64x64_neon);
+
+ // planecopy
+ p.planecopy_cp = PFX(pixel_planecopy_cp_neon);
diff --git a/user/xabacus/APKBUILD b/user/xabacus/APKBUILD
index a7a26217f..94b6dcdb0 100644
--- a/user/xabacus/APKBUILD
+++ b/user/xabacus/APKBUILD
@@ -1,30 +1,26 @@
# Contributor: Horst Burkhardt <horst@adelielinux.org>
# Maintainer: Horst Burkhardt <horst@adelielinux.org>
pkgname=xabacus
-pkgver=8.1.7
-pkgrel=1
+pkgver=8.5.2
+pkgrel=0
pkgdesc="Simple X11 abacus widget"
-url="http://www.sillycycle.com/abacus.html"
-arch="all !s390x"
+url="https://www.sillycycle.com/abacus.html"
+arch="all"
options="!check" # xabacus does not ship a test suite
license="MIT"
depends=""
-makedepends="libx11-dev libxpm-dev libxt-dev libxml2-dev"
+makedepends="libx11-dev libxaw3d-dev libxpm-dev libxt-dev libxml2-dev"
subpackages="$pkgname-doc"
-# Refuses cURL user agents: 406 Not Acceptable
-#source="http://www.sillycycle.com/abacus/$pkgname-$pkgver.tar.xz"
-source="https://distfiles.adelielinux.org/source/$pkgname-$pkgver.tar.bz2"
+source="https://distfiles.adelielinux.org/source/$pkgname-$pkgver.tar.xz" #790
build() {
- cd "$builddir"
- ./configure --prefix=/usr
+ ./configure \
+ --prefix=/usr
make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
- make DESTDIR="$pkgdir" install-png install-xpm
+ make DESTDIR="$pkgdir" install install-png install-xpm
}
-sha512sums="6e126d79c606f5d10689bc6f495f3e586351ce9500f83c0a03ac772471c9f788e08efe228356da1c1479acc8b2d5f406b6d82ac78066e18ed8ac6e24502524bb xabacus-8.1.7.tar.bz2"
+sha512sums="0a2437471f92eb3ee10891b86b30eb3e4868016c4cad22dd3027fc84133b3661a472e9e107c0ebf433b638522c8238a1d2c3192f31221ae6dc3dc839ca8aaee5 xabacus-8.5.2.tar.xz"
diff --git a/user/xapian-core/APKBUILD b/user/xapian-core/APKBUILD
index b11d45db9..54298c775 100644
--- a/user/xapian-core/APKBUILD
+++ b/user/xapian-core/APKBUILD
@@ -1,31 +1,26 @@
# Contributor: Francesco Colista <fcolista@alpinelinux.org>
# Maintainer:
pkgname=xapian-core
-pkgver=1.4.10
+pkgver=1.4.25
pkgrel=0
pkgdesc="Open source search engine library"
url="https://xapian.org/"
arch="all"
-options="!check" # https://trac.xapian.org/ticket/764
license="GPL-2.0+"
depends=""
depends_dev="zlib-dev util-linux-dev"
makedepends="$depends_dev libtool"
subpackages="$pkgname-dev $pkgname-doc libxapian"
-source="http://oligarchy.co.uk/xapian/$pkgver/$pkgname-$pkgver.tar.xz
- timeval-t.patch"
-
-case "$CARCH" in
-armhf) options="!check" ;; # FIXME
-s390x) options="!check" ;; # FIXME
-esac
+source="https://oligarchy.co.uk/xapian/$pkgver/$pkgname-$pkgver.tar.xz
+ sortable-serialise.patch
+ timeval-t.patch
+ "
# secfixes:
# 1.4.6-r0:
# - CVE-2018-0499
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -37,22 +32,20 @@ build() {
}
check() {
- cd "$builddir"
- make VALGRIND= check
+ make AUTOMATED_TESTING=1 VALGRIND= check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
libxapian() {
pkgdesc="Xapian search engine library"
- cd "$builddir"
install -d "$subpkgdir"/usr/lib
mv "$pkgdir"/usr/lib/$subpkgname* "$subpkgdir"/usr/lib
}
-sha512sums="fa716d6f8c04edb297d99dad4d7835f7874837ab3c39d7017e43708cde6992c596e579418be17b79772e002bd23b94169812523a1abd9519b1dd3df474f027d9 xapian-core-1.4.10.tar.xz
+sha512sums="e8069f2cb75554978716a99580fb57fc73bbdd607c82394f53d07205d8c78fb59265004be0c676a6806bb2840a3933499dfc867e36a28855278569a0676d469d xapian-core-1.4.25.tar.xz
+d5c6dac118b96ed66ce7d01c0d8c41b4765397e56fec5ea64cd1d223e4d152c9bb9171bbd8bd804d1285103850ae8a1d21fe137e906da94c42b421b0e6e2a49a sortable-serialise.patch
639c0ecd75be0627d334628b5adf581a7da92c4f86dfb86a92669368ff8a874d4bf4e344b8f3b1276d22d126d2bc44c8ab727e39e1c29c0358fe7bbc8aa8050d timeval-t.patch"
diff --git a/user/xapian-core/sortable-serialise.patch b/user/xapian-core/sortable-serialise.patch
new file mode 100644
index 000000000..d7cb9209a
--- /dev/null
+++ b/user/xapian-core/sortable-serialise.patch
@@ -0,0 +1,15 @@
+Discussing with upstream, but for now, this does fix both the test suite
+and operationally the ability to serialise +Inf values.
+--- xapian-core-1.4.25/api/sortable-serialise.cc.old 2024-03-07 16:57:54.000000000 -0600
++++ xapian-core-1.4.25/api/sortable-serialise.cc 2024-05-30 00:49:54.835053392 -0500
+@@ -55,6 +55,10 @@
+
+ // Negative infinity.
+ if (value < -DBL_MAX) return 0;
++ if (value == HUGE_VAL) {
++ memset(buf, '\xff', 9);
++ return 9;
++ }
+
+ mantissa = frexp(value, &exponent);
+
diff --git a/user/xauth/APKBUILD b/user/xauth/APKBUILD
index 08542ea77..0699d73ae 100644
--- a/user/xauth/APKBUILD
+++ b/user/xauth/APKBUILD
@@ -1,7 +1,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xauth
-pkgver=1.0.10
-pkgrel=2
+pkgver=1.1.3
+pkgrel=0
pkgdesc="X.Org authorisation settings program"
url="https://www.X.Org/"
arch="all"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="libx11-dev libxau-dev libxext-dev libxmu-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/xauth-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,9 +24,7 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
- install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="1ddcd80848c4efffc6d0a576177f92a3ce47eb871a6c7e2097d96491aec027404d437e0bd792714ef423989153a9644f5ff179bde4dfeb4b340636d642d5849f xauth-1.0.10.tar.bz2"
+sha512sums="536434f6c607673c00b9658ea591bf32419cc151d138f991ea38167220563519a6a84a5504003da15820f2a7ed50ea2449c6ce9c991d1446ee9a7305c647d694 xauth-1.1.3.tar.xz"
diff --git a/user/xautolock/APKBUILD b/user/xautolock/APKBUILD
index 71fd17994..a614dfb54 100644
--- a/user/xautolock/APKBUILD
+++ b/user/xautolock/APKBUILD
@@ -1,29 +1,27 @@
-# Contributor: Johannes Matheis <jomat+alpinebuild@jmt.gr>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=xautolock
pkgver=2.2
pkgrel=4
pkgdesc="An automatic X screen-locker/screen-saver"
url="http://ibiblio.org/pub/Linux/X11/screensavers/"
-arch="all" # this might not build on aarch64? removed from alpine commit
-license="GPL-2.0"
-options="!check" # This package has no testsuite
+arch="all"
+options="!check" # This package has no test suite.
+license="GPL-2.0-only"
depends=""
makedepends="$depends_dev imake xorg-server-dev libxscrnsaver-dev xorg-cf-files"
subpackages="$pkgname-doc"
source="https://www.ibiblio.org/pub/linux/X11/screensavers/xautolock-$pkgver.tgz
- processwait.patch"
+ processwait.patch
+ "
build() {
- cd "$builddir"
- xmkmf
- make
+ xmkmf
+ make
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
- make MANPATH=/usr/share/man DESTDIR="$pkgdir" install.man
+ make DESTDIR="$pkgdir" install
+ make MANPATH=/usr/share/man DESTDIR="$pkgdir" install.man
}
sha512sums="5f9dcc25cda706610e77a74235c4b421ca3a833d154b1a269057f0774579e1c6ec36fe0e5be5fadd6942ce8c1640a760f891397586b162e6024b524635153d04 xautolock-2.2.tgz
diff --git a/user/xbiff/APKBUILD b/user/xbiff/APKBUILD
index bef041c3c..c0b637644 100644
--- a/user/xbiff/APKBUILD
+++ b/user/xbiff/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xbiff
-pkgver=1.0.3
+pkgver=1.0.5
pkgrel=0
pkgdesc="Local email notification applet for X11"
url="https://www.X.Org/"
@@ -10,16 +10,9 @@ license="X11"
depends="xbitmaps"
makedepends="libx11-dev libxaw-dev libxext-dev libxmu-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xbiff-$pkgver.tar.bz2"
-
-prepare() {
- cd "$builddir"
- default_prepare
- update_config_sub
-}
+source="https://www.x.org/releases/individual/app/xbiff-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e9fa72817cae5fd6c052a4a59fcd6c696ae9d3f5fd8eecb0e9b0d8994258201cf5f4ae99845dd03e3da56e378eb214658e4450c9291a29399d9ece8af3b9f9e9 xbiff-1.0.3.tar.bz2"
+sha512sums="4dd8943daf670dffb6e108b192977f6ad313d6b0535da0c809699e05f0509aba45be81c72af341e1fef31f59d0a5f209d87441230b3fdcecb4a7a8fe7a9c0658 xbiff-1.0.5.tar.xz"
diff --git a/user/xbitmaps/APKBUILD b/user/xbitmaps/APKBUILD
index 47ca8efca..1c37e85fe 100644
--- a/user/xbitmaps/APKBUILD
+++ b/user/xbitmaps/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xbitmaps
-pkgver=1.1.2
+pkgver=1.1.3
pkgrel=0
pkgdesc="Built-in bitmaps for X11"
url="https://www.X.Org/"
@@ -8,10 +8,10 @@ arch="noarch"
license="X11"
depends="util-macros"
makedepends=""
-source="https://www.X.Org/releases/individual/data/$pkgname-$pkgver.tar.bz2"
+subpackages=""
+source="https://www.X.Org/releases/individual/data/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -20,13 +20,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="eed5e2fce9fc6c532984e6ed1262e440591e311ca6c61a7fe7a5c877df84bfc2d7aff388fb9c894fc098785b8e5352f0bd7c918252247a040cf123874847450d xbitmaps-1.1.2.tar.bz2"
+sha512sums="b9a7340385fcce2dcd0204f14a462685b14b72ff58f3ec53cd76695bef2b02af902bdac809622dcb27fd4075d5ba13587b5d059530aff502cd5288d161352814 xbitmaps-1.1.3.tar.xz"
diff --git a/user/xcalc/APKBUILD b/user/xcalc/APKBUILD
index 752b66ba9..54b715405 100644
--- a/user/xcalc/APKBUILD
+++ b/user/xcalc/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xcalc
-pkgver=1.0.7
+pkgver=1.1.2
pkgrel=0
pkgdesc="Graphical scientific calculator for X11"
url="https://www.X.Org/"
@@ -10,7 +10,7 @@ license="X11"
depends=""
makedepends="libx11-dev libxaw-dev libxt-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/xcalc-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
./configure \
@@ -31,4 +31,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="890cb9399e3c55816318ab5f0152ddba05ee141cbae6032759a3b762742ab54df8fcf0394dacc539299f93f27cbbb17aee5cbda5dde8b169a7099f20a1a38388 xcalc-1.0.7.tar.bz2"
+sha512sums="51da677dc88bcd7299ed8d678cb26b048fdb82a1983e1496a06253ee2dceefca4ac87d1a74432b4a76dcc11921a61339bb3d292607be46228164140b430bbad2 xcalc-1.1.2.tar.xz"
diff --git a/user/xcape/APKBUILD b/user/xcape/APKBUILD
index c560795e1..34ddcb85a 100644
--- a/user/xcape/APKBUILD
+++ b/user/xcape/APKBUILD
@@ -14,12 +14,10 @@ subpackages="$pkgname-doc"
source="$pkgname-$pkgver.tar.gz::$url/archive/v$pkgver.tar.gz"
build() {
- cd "$builddir"
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" MANDIR="/share/man/man1" install
}
diff --git a/user/xcb-proto/APKBUILD b/user/xcb-proto/APKBUILD
index 256d44c84..99152ef05 100644
--- a/user/xcb-proto/APKBUILD
+++ b/user/xcb-proto/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xcb-proto
-pkgver=1.13
+pkgver=1.17.0
pkgrel=0
pkgdesc="XCB protocol descriptions"
url="https://xcb.freedesktop.org/"
@@ -8,10 +8,9 @@ arch="noarch"
license="X11"
depends=""
makedepends="python3"
-source="https://xcb.freedesktop.org/dist/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.org/releases/individual/proto/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -20,13 +19,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
- install -m644 -Dt "$pkgdir"/usr/share/licenses/$pkgname/ COPYING
}
-sha512sums="002aa2aa0ad503977e03419c6f136f1e3aa8c787916830ce6d6be8f81ca99edc1d8fc5f71ce8c592b490cc767bf6567695f0bafe55fe3f743076bcddbaac07f7 xcb-proto-1.13.tar.bz2"
+
+sha512sums="34c3795e5a48a66d89b72ee1777fb0bede489d5ec07018e6c9ef3c13bdd60b0358fc2c04a1f0ed0acb5b681aeeb92033db579036e4f5edd967fe56714c03acdf xcb-proto-1.17.0.tar.xz"
diff --git a/user/xcb-util-cursor/APKBUILD b/user/xcb-util-cursor/APKBUILD
index 76f6d2016..10f5c19e6 100644
--- a/user/xcb-util-cursor/APKBUILD
+++ b/user/xcb-util-cursor/APKBUILD
@@ -1,22 +1,22 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xcb-util-cursor
-pkgver=0.1.3
-pkgrel=1
+pkgver=0.1.5
+pkgrel=0
pkgdesc="X C-language Binding - cursor library"
url="https://xcb.freedesktop.org/"
arch="all"
license="MIT"
depends=""
depends_dev="xcb-util-dev"
-makedepends="$depends_dev m4 util-macros xcb-util-image-dev xcb-util-renderutil-dev"
checkdepends="check-dev"
+makedepends="$depends_dev m4 util-macros xcb-util-image-dev xcb-util-renderutil-dev"
subpackages="$pkgname-dev"
-source="https://xcb.freedesktop.org/dist/xcb-util-cursor-$pkgver.tar.gz"
+# TODO: temporarily fetching this tarball from x.org mirror. Maybe should
+# change back to freedesktop.org once up-to-date tarballs are available there
+source="https://www.x.org/releases/individual/lib/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
- export CFLAGS="$CFLAGS -std=gnu99"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,13 +29,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="7be0950d9cef455e504ef5ac6c1872cc05bb27d1a8c844e0ddb19d718145ec05891315af6237e46ba615d01edc2d152c8901c8bc644a386d10757352a77fc57f xcb-util-cursor-0.1.3.tar.gz"
+sha512sums="e2d14c3f0ab117524ba90d1a992b61717ccee04bc9e66c587a6a0f10571f15e89fc5db3413882ca7ce14ebc07b6b7b0a4ddecd59ba910e6ca654ea9b1c705ed5 xcb-util-cursor-0.1.5.tar.xz"
diff --git a/user/xcb-util-errors/APKBUILD b/user/xcb-util-errors/APKBUILD
new file mode 100644
index 000000000..9ad227e4a
--- /dev/null
+++ b/user/xcb-util-errors/APKBUILD
@@ -0,0 +1,33 @@
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=xcb-util-errors
+pkgver=1.0.1
+pkgrel=0
+pkgdesc="XCB utility library for readable X errors"
+url="https://xcb.freedesktop.org/"
+arch="all"
+license="MIT"
+depends=""
+makedepends="automake autoconf xcb-util-dev python3"
+subpackages="$pkgname-dev"
+source="https://xcb.freedesktop.org/dist/$pkgname-$pkgver.tar.xz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="e883e178921a6f783e0100acae66eaf0ed13fc169fd21b0c313d7a70c9358c129b01b117675eda50e258e8b3b27ff7b21aa4d15c4da69249ffc6bbc7dcf87d4a xcb-util-errors-1.0.1.tar.xz"
diff --git a/user/xcb-util-image/APKBUILD b/user/xcb-util-image/APKBUILD
index cd4ffccb2..79a496096 100644
--- a/user/xcb-util-image/APKBUILD
+++ b/user/xcb-util-image/APKBUILD
@@ -1,23 +1,20 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xcb-util-image
-pkgver=0.4.0
-pkgrel=1
+pkgver=0.4.1
+pkgrel=0
pkgdesc="X C-language Binding - port of Xlib XImage and XShmImage"
url="https://xcb.freedesktop.org/"
arch="all"
license="MIT"
depends=""
depends_dev="xcb-util-dev"
-makedepends="$depends_dev m4 util-macros"
checkdepends="check-dev"
-replaces="xcb-util"
+makedepends="$depends_dev m4 util-macros"
subpackages="$pkgname-dev"
-source="https://xcb.freedesktop.org/dist/xcb-util-image-$pkgver.tar.gz"
+source="https://xcb.freedesktop.org/dist/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
- export CFLAGS="$CFLAGS -std=gnu99"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -30,13 +27,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="2e580d205e4a054763146c70d735014c7e018322a43c76b07a306c091dca81b140cbbf6db41252e9204ff742f119b69e143b3fdc1fb13bd9d0b9e8e22eda2cd3 xcb-util-image-0.4.0.tar.gz"
+sha512sums="9b47ba38b91196d76541b6ccabeaf291d3b91036f15422909cd6a79b3fd1a9786d5b1728e411bc41cfdf3d60a253485f4ef7c65ffa6ae646fa93439ec782746e xcb-util-image-0.4.1.tar.xz"
diff --git a/user/xcb-util-keysyms/APKBUILD b/user/xcb-util-keysyms/APKBUILD
index a1d23fba4..d5782b73d 100644
--- a/user/xcb-util-keysyms/APKBUILD
+++ b/user/xcb-util-keysyms/APKBUILD
@@ -1,22 +1,20 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xcb-util-keysyms
-pkgver=0.4.0
-pkgrel=2
+pkgver=0.4.1
+pkgrel=0
pkgdesc="X C-language Binding - X constants and keycodes"
url="https://xcb.freedesktop.org/"
arch="all"
license="MIT"
depends=""
depends_dev="xcb-util-dev"
-makedepends="$depends_dev m4 util-macros xorgproto-dev"
checkdepends="check-dev"
-replaces="xcb-util"
+makedepends="$depends_dev m4 util-macros xorgproto-dev"
subpackages="$pkgname-dev"
-source="https://xcb.freedesktop.org/dist/xcb-util-keysyms-$pkgver.tar.gz"
+source="https://xcb.freedesktop.org/dist/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,13 +27,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d92959e11241e479a8f6c55d2a1f0d507a8e7baa8dd469b01167b6307ed87bba26e0c68808cf0de90ba4d6081aad786276998b9784b81433b4f1cb9054573755 xcb-util-keysyms-0.4.0.tar.gz"
+sha512sums="dd53a36b52647f22bf0da8cded4b2974a51899eaac799797017ed8534f14bc2d2d339a14fa5ef387ae4528b7d9a5d31920bb0c71b09ca34f58e5081e768e2bbf xcb-util-keysyms-0.4.1.tar.xz"
diff --git a/user/xcb-util-renderutil/APKBUILD b/user/xcb-util-renderutil/APKBUILD
index 07bafe5ba..b3ab17303 100644
--- a/user/xcb-util-renderutil/APKBUILD
+++ b/user/xcb-util-renderutil/APKBUILD
@@ -1,22 +1,20 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xcb-util-renderutil
-pkgver=0.3.9
-pkgrel=2
+pkgver=0.3.10
+pkgrel=0
pkgdesc="X C-language Binding - XRender extension helpers"
url="https://xcb.freedesktop.org/"
arch="all"
license="MIT"
depends=""
depends_dev="xcb-util-dev"
-makedepends="$depends_dev m4 util-macros"
checkdepends="check-dev"
-replaces="xcb-util"
+makedepends="$depends_dev m4 util-macros"
subpackages="$pkgname-dev"
-source="https://xcb.freedesktop.org/dist/xcb-util-renderutil-$pkgver.tar.gz"
+source="https://xcb.freedesktop.org/dist/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,13 +27,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="c666f9eae18fa3fb603086e86ee4efc66dbed17b696bec637f07ea1334715cee01e03db26340ed3d1338887f4940cd3a435e4df8b36e59f439a0a2b8a0879463 xcb-util-renderutil-0.3.9.tar.gz"
+sha512sums="9cfa9201be2df7c0b832e1e1fe506e7c7a1e0f2b1b1d4a4b58620eadc241190a36478fa3ea27c32047fa79bf199f17dcd0b106853dbf5eda8cd584f3fc2b0c15 xcb-util-renderutil-0.3.10.tar.xz"
diff --git a/user/xcb-util-wm/APKBUILD b/user/xcb-util-wm/APKBUILD
index 1443773fa..8c8c53156 100644
--- a/user/xcb-util-wm/APKBUILD
+++ b/user/xcb-util-wm/APKBUILD
@@ -1,22 +1,20 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xcb-util-wm
-pkgver=0.4.1
-pkgrel=2
+pkgver=0.4.2
+pkgrel=0
pkgdesc="X C-language Binding - ICCCM and EWMH helpers"
url="https://xcb.freedesktop.org/"
arch="all"
license="MIT"
depends=""
depends_dev="xcb-util-dev"
-makedepends="$depends_dev m4 util-macros"
checkdepends="check"
-replaces="xcb-util"
+makedepends="$depends_dev m4 util-macros"
subpackages="$pkgname-dev"
-source="https://xcb.freedesktop.org/dist/xcb-util-wm-$pkgver.tar.gz"
+source="https://xcb.freedesktop.org/dist/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -29,13 +27,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="063d852367088a7129aacce95e7d81cb0925b146191e1114171e58f5a65dcb8cc7f4fb5a9ecb49e9da2e2d8be75375f5cfaafc04b756179750e230fb486b9e22 xcb-util-wm-0.4.1.tar.gz"
+sha512sums="eab6588e6a47d28a3b25ecd13b5018529419db6b49c74458c093699b60a194933be1e1f6f7799abf03344f7ebc7af88586ff2935938d53644bdd5c763a7fa9b0 xcb-util-wm-0.4.2.tar.xz"
diff --git a/user/xcb-util-xrm/APKBUILD b/user/xcb-util-xrm/APKBUILD
index d368f1544..801623644 100644
--- a/user/xcb-util-xrm/APKBUILD
+++ b/user/xcb-util-xrm/APKBUILD
@@ -1,4 +1,4 @@
-# Contributor: William Pitcock <nenolod@dereferenced.org>
+# Contributor: Ariadne Conill <ariadne@dereferenced.org>
# Contributor: Jakub Skrzypnik <j.skrzypnik@openmailbox.org>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=xcb-util-xrm
@@ -8,12 +8,12 @@ pkgdesc="Utility functions for the X resource manager"
url="https://github.com/Airblader/xcb-util-xrm"
arch="all"
license="MIT"
+depends=""
makedepends="m4 bsd-compat-headers libx11-dev libxcb-dev util-macros xcb-util-dev"
-source="https://github.com/Airblader/$pkgname/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz"
subpackages="$pkgname-dev"
+source="https://github.com/Airblader/$pkgname/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,12 +25,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/xcb-util/APKBUILD b/user/xcb-util/APKBUILD
index 90b9053bf..4f7e85e59 100644
--- a/user/xcb-util/APKBUILD
+++ b/user/xcb-util/APKBUILD
@@ -1,19 +1,19 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xcb-util
-pkgver=0.4.0
-pkgrel=2
+pkgver=0.4.1
+pkgrel=0
pkgdesc="Utility libraries for X C-language Binding"
url="https://xcb.freedesktop.org/"
arch="all"
license="X11"
+depends=""
depends_dev="libxcb-dev util-macros"
-makedepends="$depends_dev m4 gperf"
checkdepends="check-dev"
+makedepends="$depends_dev m4 gperf"
subpackages="$pkgname-dev"
-source="https://xcb.freedesktop.org/dist/$pkgname-$pkgver.tar.bz2"
+source="https://xcb.freedesktop.org/dist/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -23,13 +23,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e60aaa6f582eacd05896c5fd7c8417938318a1288146f3a5b339f77eed24e211c6099963f8813daa621c94173d2934228936b491c0ed79b09a8a67d835867d0e xcb-util-0.4.0.tar.bz2"
+sha512sums="da67f2f017d2a1788dcf35f28d6956e171303a622a1dd085cd3d69fdb2ed77965d83c557cc926ebf9b32e905eb2cbb5921987250192d78a2f5edc4d437ed7d2b xcb-util-0.4.1.tar.xz"
diff --git a/user/xclip/APKBUILD b/user/xclip/APKBUILD
index 19125d29b..dcff75e1e 100644
--- a/user/xclip/APKBUILD
+++ b/user/xclip/APKBUILD
@@ -10,18 +10,16 @@ arch="all"
options="!check" # TODO: this package has tests that require X
license="GPL-2.0+"
depends=""
-makedepends="libx11-dev libxmu-dev"
+makedepends="autoconf automake libx11-dev libxmu-dev"
subpackages="$pkgname-doc"
source="$pkgname-$pkgver.tar.gz::https://github.com/astrand/${pkgname}/archive/${pkgver}.tar.gz"
prepare() {
- cd "$builddir"
default_prepare
autoreconf -vif
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,7 +31,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
mkdir -p "$pkgdir"/usr/share/doc/$pkgname/
diff --git a/user/xclipboard/APKBUILD b/user/xclipboard/APKBUILD
index b0219ea81..779314f2a 100644
--- a/user/xclipboard/APKBUILD
+++ b/user/xclipboard/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xclipboard
-pkgver=1.1.3
+pkgver=1.1.5
pkgrel=0
pkgdesc="Clipboard viewer for X11"
url="https://www.X.Org/"
@@ -11,10 +11,9 @@ depends=""
makedepends="libx11-dev libxaw-dev libxmu-dev libxt-dev util-macros
xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xclipboard-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="84a51d11851756422eb23e67b2721d2bcb2ac248fa32c0837423b6169144dff76717c22611ad3c93633e09a44dc70c847a2470d3988eff0b24d77e252a4e147e xclipboard-1.1.3.tar.bz2"
+sha512sums="9962b8d19e6387c9af87a47d66d81577ec3e2ba1d0aa6f6ca8fa89664ccfb0dd20906e143a4d19a303a4eded4f29c4bd40868477fbf754a79cdb48256846a8d3 xclipboard-1.1.5.tar.xz"
diff --git a/user/xclock/APKBUILD b/user/xclock/APKBUILD
index e2f55308a..9e23e7427 100644
--- a/user/xclock/APKBUILD
+++ b/user/xclock/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xclock
-pkgver=1.0.8
+pkgver=1.1.1
pkgrel=0
pkgdesc="Clock applet for X11"
url="https://www.X.Org/"
@@ -11,7 +11,7 @@ depends=""
makedepends="libx11-dev libxaw-dev libxkbfile-dev libxft-dev libxmu-dev
libxrender-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/xclock-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
./configure \
@@ -32,4 +32,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="1272221ace3657505bae1b22f181e9ecbf1710900c89a860c8ceae47ae31ca5e75b6557c37dc0a881a0a24c9597b9a07f46200926feb1013f1e2e995111a7646 xclock-1.0.8.tar.bz2"
+sha512sums="059ea986bc7537c2796e8855676e8357bd8a7852fbac0839b3f8a9e3ffa088de41bc4e4961973353f0a7b7293366b81bc764d74f3dc4e90e361da06185d976e7 xclock-1.1.1.tar.xz"
diff --git a/user/xcmsdb/APKBUILD b/user/xcmsdb/APKBUILD
index 973f006f0..fe272467d 100644
--- a/user/xcmsdb/APKBUILD
+++ b/user/xcmsdb/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xcmsdb
-pkgver=1.0.5
+pkgver=1.0.6
pkgrel=0
pkgdesc="Device colour management for X11"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="libx11-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xcmsdb-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e47bfce87d7531e7809c300e01120c3e8d6001130d9a6c9f6de5bc19651d8712d273a6f54452223bd8c4bff4612b5ecae8db45eddb022da945ed6e14c9c84ae4 xcmsdb-1.0.5.tar.bz2"
+sha512sums="e47d9498ce496effbc44a66e70af91d9fe65c344a17916fd4990a4c84fa8879aa09b6695aeb6ef595f475c16a13c7c31d4c48449234564de7de38d7436764fae xcmsdb-1.0.6.tar.xz"
diff --git a/user/xcompmgr/APKBUILD b/user/xcompmgr/APKBUILD
index 6149de629..35d86936b 100644
--- a/user/xcompmgr/APKBUILD
+++ b/user/xcompmgr/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xcompmgr
-pkgver=1.1.8
+pkgver=1.1.9
pkgrel=0
pkgdesc="Small compositing manager for X11"
url="https://www.X.Org/"
@@ -11,7 +11,7 @@ depends=""
makedepends="libxcomposite-dev libxdamage-dev libxext-dev libxfixes-dev
libxrender-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/xcompmgr-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
./configure \
@@ -32,4 +32,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="ccf29426ffb0797a53653d1ce152de5eee0cec284811fed4b8e634ea0d948180531e4619d96f47e4f9594432c57322624fe0fdaee2c9200efac427fc0904953d xcompmgr-1.1.8.tar.bz2"
+sha512sums="699117492af7fd84b36d317dcbf422d5ec86a7f21e29370caa737cd940d8ff866a5c8704ba2e7bd17a64e085d77fd23b628263d619813dead85cd669ff5b860e xcompmgr-1.1.9.tar.xz"
diff --git a/user/xconsole/APKBUILD b/user/xconsole/APKBUILD
index 4bbac0359..97f9e39fe 100644
--- a/user/xconsole/APKBUILD
+++ b/user/xconsole/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xconsole
-pkgver=1.0.7
+pkgver=1.1.0
pkgrel=0
pkgdesc="Console monitor for X11"
url="https://www.X.Org/"
@@ -11,10 +11,9 @@ depends=""
makedepends="libx11-dev libxaw-dev libxmu-dev libxt-dev util-macros
xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xconsole-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="89f391058ea99904587bd1dac9e31fa3ff06cf63b899abe6c06e4897bbc9919500dd4773873b1a452de4f54cc6999bd496022b6d8df9d4147804448abbdca2f9 xconsole-1.0.7.tar.bz2"
+sha512sums="1b5b1e1e15e3b988c159e924ac5c51734c4e37ed112815fc6bf6e36f80e840ccd904a4f0b0f27191e0dbf656d367a38873fd493a266887daa111e5266eebf37e xconsole-1.1.0.tar.xz"
diff --git a/user/xcursor-themes/APKBUILD b/user/xcursor-themes/APKBUILD
index 72a65a9b9..ddc786c62 100644
--- a/user/xcursor-themes/APKBUILD
+++ b/user/xcursor-themes/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xcursor-themes
-pkgver=1.0.6
+pkgver=1.0.7
pkgrel=0
pkgdesc="Built-in cursor themes for X11"
url="https://www.X.Org/"
@@ -10,7 +10,7 @@ license="X11"
depends=""
makedepends="libxcursor-dev util-macros xcursorgen"
subpackages=""
-source="https://www.X.Org/releases/individual/data/xcursor-themes-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/data/xcursor-themes-$pkgver.tar.xz"
build() {
./configure \
@@ -31,4 +31,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="2ad3586a5571a5ddc0001187362b54b839644916164834213af98e58698044aec4392dd6e1e42f1794fda85c8fedf259b09214a9636bd0e71a1629c710f198d3 xcursor-themes-1.0.6.tar.bz2"
+sha512sums="910925dd17c576028ae0d9dfe5683888648b941806b53cd9ff74ed18ff2de537664b07ab4c647a55290aeba37f6051f322b29e8ecd54f348e32abe2ccea1c902 xcursor-themes-1.0.7.tar.xz"
diff --git a/user/xcursorgen/APKBUILD b/user/xcursorgen/APKBUILD
index 7e00406e0..a376a16ef 100644
--- a/user/xcursorgen/APKBUILD
+++ b/user/xcursorgen/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xcursorgen
-pkgver=1.0.7
+pkgver=1.0.8
pkgrel=0
pkgdesc="Cursor generator for X11"
url="https://www.X.Org/"
@@ -10,7 +10,7 @@ license="MIT"
depends=""
makedepends="libpng-dev libx11-dev libxcursor-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/xcursorgen-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/xcursorgen-$pkgver.tar.xz"
build() {
./configure \
@@ -31,4 +31,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="bd13ad23691d3daa2d5dcdc5902cf62e3dcb97a0289aff362e6cd85866a1d8cafb64f98800a75bfb4cf1f3c76244ca20201847dff594543d136d0abaec7011d2 xcursorgen-1.0.7.tar.bz2"
+sha512sums="dede5b9e1e09f9253365bbb83fdab26c681641913f3586cef52d4802db9cecc7e252344911cd969a873c3a5c5ebbd4b862f786de263f92ea1bcb2df90236f9c4 xcursorgen-1.0.8.tar.xz"
diff --git a/user/xdbedizzy/APKBUILD b/user/xdbedizzy/APKBUILD
index 5d190e7c5..a16dc62fe 100644
--- a/user/xdbedizzy/APKBUILD
+++ b/user/xdbedizzy/APKBUILD
@@ -13,13 +13,11 @@ subpackages="$pkgname-doc"
source="https://www.x.org/releases/individual/app/xdbedizzy-$pkgver.tar.bz2"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,12 +29,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/xdg-user-dirs/APKBUILD b/user/xdg-user-dirs/APKBUILD
index e754a868e..75baf6fd7 100644
--- a/user/xdg-user-dirs/APKBUILD
+++ b/user/xdg-user-dirs/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xdg-user-dirs
-pkgver=0.17
+pkgver=0.18
pkgrel=0
pkgdesc="Utilities for locale-aware management of user directories."
url="https://www.freedesktop.org/wiki/Software/xdg-user-dirs/"
@@ -14,7 +14,6 @@ subpackages="$pkgname-lang $pkgname-doc"
source="https://user-dirs.freedesktop.org/releases/xdg-user-dirs-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,8 +25,7 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="a02cc251f2d0a8bd0dad498901c8c6fbe8dae0e0e156abcaf27b1ded376a1ed369c2e59201d56ab4e38c9d521026fa39199177f3868c30e5c50cc03665dc335f xdg-user-dirs-0.17.tar.gz"
+sha512sums="f523b2ba4f840a3c2a5730f72182fb5bb798187db769bfb7d36e9f780442813278a2c1bad656b4fb38428131241a51d07200a62b4d7b935d49a74be53f969716 xdg-user-dirs-0.18.tar.gz"
diff --git a/user/xdg-utils/APKBUILD b/user/xdg-utils/APKBUILD
index 08766dfaa..ff09bfff1 100644
--- a/user/xdg-utils/APKBUILD
+++ b/user/xdg-utils/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xdg-utils
pkgver=1.1.3
-pkgrel=0
+pkgrel=1
pkgdesc="Basic desktop integration functions"
url="https://www.freedesktop.org/wiki/Software/xdg-utils/"
arch="noarch"
@@ -13,10 +13,14 @@ makedepends="libxml2-utils libxslt lynx xmlto"
subpackages="$pkgname-doc"
source="https://portland.freedesktop.org/download/xdg-utils-$pkgver.tar.gz
xdg-screensaver-mv-T.patch
+ xdg-mime-gnome.patch
+ xdg-mime-plasma.patch
+ xdg-open-failure.patch
+ xdg-open-spaces.patch
+ xdg-su-lxqt.patch
"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,9 +32,13 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
sha512sums="d1f819a211eb4104a90dfdc6fedcb640fd46b15ccfc8762266f8f538c49d74cb00027b8c1af991fb2a200acb4379986ae375700e06a2aa08fb41a38f883acb3e xdg-utils-1.1.3.tar.gz
-db0896979fbc3b575826b4d732658564d08bcfc957b3fa1490fe02e4cc7b52adfa1e05956432a732dae8f50145e0040bc145739ba5692ae1b86fa74be8174436 xdg-screensaver-mv-T.patch"
+db0896979fbc3b575826b4d732658564d08bcfc957b3fa1490fe02e4cc7b52adfa1e05956432a732dae8f50145e0040bc145739ba5692ae1b86fa74be8174436 xdg-screensaver-mv-T.patch
+f8a711f349a690a950339574209fdaa6e06ef05644d8c83fd90b0c6abe9f64a457320e02a53c3cf4a68630fe15872c2786189c34014635169c8ba40e5fe0f693 xdg-mime-gnome.patch
+0270c722a4655815c7d2c042340c2bc16b1d99d1b1e4f4bf160c549afbd5620b88dfaaf31f2bbd1bafcf8d153f40e72af53006b94651a3a787c0dccec63dbb0c xdg-mime-plasma.patch
+17d1941fb81cb8b0bf23817b4d57c603bdcb4abc2919d8c6ce0dff4ce27cc83b33454740c881a67f9d9cb329ba1ea941067fcaca1fc82900d94c540699bf29cd xdg-open-failure.patch
+8f3888313dd74a6b6332aa8a41525d517e47bf37450fd361543df06146ed91e8d5a2be9762a10535a557b88f7c3d0c47904b0a250109f7d1a783d9ec30aaba04 xdg-open-spaces.patch
+48f7f976cf54741fb8fce7f559a0bfd08567363759e7788b8607066a32b0666e8ba1d4c7d2f9599950df81f0b71bd8114b20e937ece5ad88ec7f378ac8e8a9ac xdg-su-lxqt.patch"
diff --git a/user/xdg-utils/xdg-mime-gnome.patch b/user/xdg-utils/xdg-mime-gnome.patch
new file mode 100644
index 000000000..327d6968b
--- /dev/null
+++ b/user/xdg-utils/xdg-mime-gnome.patch
@@ -0,0 +1,40 @@
+From 0547886c0a7ae79145998495a6e3af6a1450d0c7 Mon Sep 17 00:00:00 2001
+From: Martin Puppe <dev@mpuppe.de>
+Date: Sat, 13 Apr 2019 12:46:44 +0200
+Subject: [PATCH] xdg-mime: return correct exit code for GNOME
+
+If the desktop environment was GNOME and none of the commands for
+detecting the MIME type of a file was available, xdg-mime used to return
+exit code 0 even though it failed. The man page says it should return
+exit code 3. This commit fixes the issue.
+
+I have considered returning exit code 4 instead since that is what would
+be returned if info_kde() or info_generic() fail to find a tool for MIME
+type detection. But I have decided to implement the behavior as
+specified in the man page.
+
+The exit code of an if construct is 0 if no condition
+tested true [^1]. The author of the original code probably was not aware
+of this.
+
+[^1]: https://www.gnu.org/software/bash/manual/html_node/Conditional-Constructs.html#Conditional-Constructs
+---
+ scripts/xdg-mime.in | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/scripts/xdg-mime.in b/scripts/xdg-mime.in
+index 0e567c7..034d0ef 100644
+--- a/scripts/xdg-mime.in
++++ b/scripts/xdg-mime.in
+@@ -84,6 +84,8 @@ info_gnome()
+ elif gnomevfs-info --help 2>/dev/null 1>&2; then
+ DEBUG 1 "Running gnomevfs-info \"$1\""
+ gnomevfs-info --slow-mime "$1" 2> /dev/null | grep "^MIME" | cut -d ":" -f 2 | sed s/"^ "//
++ else
++ exit_failure_operation_impossible "no method available for querying MIME type of '$filename'"
+ fi
+
+ if [ $? -eq 0 ]; then
+--
+2.21.0
+
diff --git a/user/xdg-utils/xdg-mime-plasma.patch b/user/xdg-utils/xdg-mime-plasma.patch
new file mode 100644
index 000000000..38b5f4b28
--- /dev/null
+++ b/user/xdg-utils/xdg-mime-plasma.patch
@@ -0,0 +1,61 @@
+From cf2a703b19d64f939890dcea79b3bd8d2a9a08fe Mon Sep 17 00:00:00 2001
+From: Ongun Kanat <ongun.kanat@gmail.com>
+Date: Fri, 12 Jul 2019 16:22:35 +0200
+Subject: [PATCH] Fix xdg-mime for proper Plasma 5 support
+
+This adds checks for Plasma 5 and runs kbuildsycoca5 after
+updating mimeapps.list file. The path of the file is
+detected via qtpaths utility.
+---
+ scripts/xdg-mime.in | 14 +++++++++++---
+ 1 file changed, 11 insertions(+), 3 deletions(-)
+
+diff --git a/scripts/xdg-mime.in b/scripts/xdg-mime.in
+index 0e567c7..1ac6a3d 100644
+--- a/scripts/xdg-mime.in
++++ b/scripts/xdg-mime.in
+@@ -133,7 +133,10 @@ make_default_kde()
+ # text/plain=gnome-gedit.desktop;gnu-emacs.desktop;
+ vendor="$1"
+ mimetype="$2"
+- if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
++ if [ x"$KDE_SESSION_VERSION" = x"5" ]; then
++ default_dir=$(qtpaths --writable-path ConfigLocation)
++ default_file="$default_dir/mimeapps.list"
++ elif [ x"$KDE_SESSION_VERSION" = x"4" ]; then
+ default_dir=`kde4-config --path xdgdata-apps 2> /dev/null | cut -d ':' -f 1`
+ default_file="$default_dir/mimeapps.list"
+ else
+@@ -148,7 +151,7 @@ make_default_kde()
+ DEBUG 1 "Updating $default_file"
+ mkdir -p "$default_dir"
+ [ -f "$default_file" ] || touch "$default_file"
+- if [ x"$KDE_SESSION_VERSION" = x"4" ]; then
++ if [ x"$KDE_SESSION_VERSION" = x"4" ] || [ x"$KDE_SESSION_VERSION" = x"5" ]; then
+ [ -f "$default_file" ] || touch "$default_file"
+ awk -v application="$vendor" -v mimetype="$mimetype" '
+ BEGIN {
+@@ -207,7 +210,7 @@ make_default_kde()
+ }
+ }
+ ' "$default_file" > "${default_file}.new" && mv "${default_file}.new" "$default_file"
+- eval 'kbuildsycoca4'$xdg_redirect_output
++ eval 'kbuildsycoca${KDE_SESSION_VERSION}'$xdg_redirect_output
+ else
+ awk -v application="$vendor" -v mimetype="$mimetype" '
+ BEGIN {
+@@ -576,6 +579,11 @@ if [ "$action" = "makedefault" ]; then
+
+ make_default_kde "$filename" "$mimetype"
+ make_default_generic "$filename" "$mimetype"
++ detectDE
++
++ if [ x"$DE" = x"kde" ]; then
++ eval 'kbuildsycoca${KDE_SESSION_VERSION}'$xdg_redirect_output
++ fi
+ done
+ exit_success
+ fi
+--
+2.21.0
+
diff --git a/user/xdg-utils/xdg-open-failure.patch b/user/xdg-utils/xdg-open-failure.patch
new file mode 100644
index 000000000..022d4614d
--- /dev/null
+++ b/user/xdg-utils/xdg-open-failure.patch
@@ -0,0 +1,43 @@
+From 0ad418b2543b532ec82298ac2660d3f222f10882 Mon Sep 17 00:00:00 2001
+From: KARBOWSKI Piotr <piotr.karbowski@gmail.com>
+Date: Sun, 23 Jun 2019 11:39:40 +0200
+Subject: [PATCH] xdg-open: Exit also on non-zero exit status from 'Exec'
+ .desktop entry.
+
+Currently if the tool that was taken out of .desktop file Exec field
+will exit with non-zero exit code, xdg-open will then fallback to
+open_generic() from search_desktop_file(), which will lead to opening
+again the same file with the same tool and ending on opening the file
+with web browser.
+
+This may lead to situation when for example text editor that fails to
+write file on exit, will open the unchanged file with web browsr.
+
+Another real life example is if one were to exit from mpv with
+control-C, xdg-open will again start mpv, then it will try to start
+x-web-browser and ending with starting a browser from list -- firefox in
+my case.
+
+This must be a bug as it's not docummented anywhere. If we got to the
+point where we exec $command_exec then xdg-open must exit even if
+whatever was executed by $command_exec returned non-zero exit status.
+---
+ scripts/xdg-open.in | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/scripts/xdg-open.in b/scripts/xdg-open.in
+index 202f3e3..7cfdde0 100644
+--- a/scripts/xdg-open.in
++++ b/scripts/xdg-open.in
+@@ -325,6 +325,8 @@ search_desktop_file()
+
+ if [ $? -eq 0 ]; then
+ exit_success
++ else
++ exit_failure_operation_failed
+ fi
+ fi
+
+--
+2.21.0
+
diff --git a/user/xdg-utils/xdg-open-spaces.patch b/user/xdg-utils/xdg-open-spaces.patch
new file mode 100644
index 000000000..7583a9dc3
--- /dev/null
+++ b/user/xdg-utils/xdg-open-spaces.patch
@@ -0,0 +1,38 @@
+From cc686869e9801b09abc29a3e72718ae0520aa97e Mon Sep 17 00:00:00 2001
+From: Dominik Schmidt <dominik@schm1dt.ch>
+Date: Sat, 8 Dec 2018 19:56:44 +0100
+Subject: [PATCH] xdg-open: Fix unquoted variable expansion when looking for
+ .desktop files
+
+The recursive find algorithm for the .desktop files has an unquoted path expansion
+in the generic case, when no desktop environment specific tool is found.
+Hence, if we have a directory layout containing something along the lines of
+
+ ~/.local/share/applications/foo bar/
+
+Then the recursion will expand into searching in:
+
+ * `~/.local/share/applications/foo`
+ * `~/bar/*`
+
+instead of `~/.local/share/applications/foo bar/*`
+---
+ scripts/xdg-open.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/scripts/xdg-open.in b/scripts/xdg-open.in
+index 202f3e3..b3e0ba9 100644
+--- a/scripts/xdg-open.in
++++ b/scripts/xdg-open.in
+@@ -328,7 +328,7 @@ search_desktop_file()
+ fi
+ fi
+
+- for d in $dir/*/; do
++ for d in "$dir"/*/; do
+ [ -d "$d" ] && search_desktop_file "$default" "$d" "$target"
+ done
+ }
+--
+2.21.0
+
diff --git a/user/xdg-utils/xdg-su-lxqt.patch b/user/xdg-utils/xdg-su-lxqt.patch
new file mode 100644
index 000000000..dccc4e214
--- /dev/null
+++ b/user/xdg-utils/xdg-su-lxqt.patch
@@ -0,0 +1,28 @@
+Upstream-Bug: https://bugzilla.suse.com/show_bug.cgi?id=1120397
+Upstream-Bug: https://github.com/lxqt/lxqt/issues/1653
+
+From 132cbff34f00f67a83ea58919a982abe600f25c3 Mon Sep 17 00:00:00 2001
+From: Fabio Pesari <posta@parallelo.eu>
+Date: Sun, 7 Jul 2019 13:08:33 +0000
+Subject: [PATCH] xdg-su: Fix escaping for lxqt-sudo
+
+---
+ scripts/xdg-su.in | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/scripts/xdg-su.in b/scripts/xdg-su.in
+index b7a9865..65463eb 100644
+--- a/scripts/xdg-su.in
++++ b/scripts/xdg-su.in
+@@ -84,7 +84,7 @@ su_lxqt()
+ if [ $? -eq 0 ] ; then
+ if [ -z "$user" ] ; then
+ # -s option runs as su rather then sudo
+- $LXQTSU -s "$cmd"
++ $LXQTSU -s $cmd
+ else
+ # lxqt-sudo does not support specifying a user
+ su_generic
+--
+2.21.0
+
diff --git a/user/xditview/APKBUILD b/user/xditview/APKBUILD
index 7de93902e..3ab4ee644 100644
--- a/user/xditview/APKBUILD
+++ b/user/xditview/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xditview
-pkgver=1.0.5
+pkgver=1.0.7
pkgrel=0
pkgdesc="X11 ditroff viewer"
url="https://www.X.Org/"
@@ -10,7 +10,7 @@ license="X11"
depends=""
makedepends="libx11-dev libxaw-dev libxmu-dev libxt-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/xditview-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
./configure \
@@ -31,4 +31,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="e20c903f38394b496111267e142d84d11e69a3b89f91869652d1f2ee5c997a13f90bfa2966651b42cd3979a330b348a6e397cc6a74c45b1f3f91643e7c06765d xditview-1.0.5.tar.bz2"
+sha512sums="da7e80cd9fbb5da0ec4949c6fed0bad135a2490767f030e60f1c51a9f5a62379572bf8b4dd6dec2fe824152d090470e62fce12c9144aaa1be1b48ddbc3b2910b xditview-1.0.7.tar.xz"
diff --git a/user/xdotool/APKBUILD b/user/xdotool/APKBUILD
index 3aae63783..af14cc595 100644
--- a/user/xdotool/APKBUILD
+++ b/user/xdotool/APKBUILD
@@ -11,23 +11,20 @@ options="!check" # Requires running X11 server
license="BSD-3-Clause"
depends=""
depends_dev="libx11-dev libxtst-dev libxinerama-dev libxkbcommon-dev"
-makedepends="$depends_dev perl"
#checkdepends="xvfb ruby-minitest cmd:which lsof xdpyinfo xterm xwininfo"
+makedepends="$depends_dev perl"
subpackages="$pkgname-dev $pkgname-doc"
source="https://github.com/jordansissel/xdotool/releases/download/v$pkgver/xdotool-$pkgver.tar.gz"
build() {
- cd "$builddir"
make WITHOUT_RPATH_FIX=1
}
check() {
- cd "$builddir"
make test
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" PREFIX="/usr" INSTALLMAN="/usr/share/man" install
}
diff --git a/user/xdpyinfo/APKBUILD b/user/xdpyinfo/APKBUILD
index 903b9a11d..a496d8251 100644
--- a/user/xdpyinfo/APKBUILD
+++ b/user/xdpyinfo/APKBUILD
@@ -1,18 +1,19 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xdpyinfo
-pkgver=1.3.2
-pkgrel=2
+pkgver=1.3.4
+pkgrel=0
pkgdesc="X11 display information viewer"
url="https://www.X.Org/"
arch="all"
license="X11"
depends=""
-makedepends="libx11-dev libxcomposite-dev libxext-dev libxinerama-dev libxrender-dev libxtst-dev libxxf86dga-dev libxxf86misc-dev libxxf86vm-dev util-macros xorgproto-dev"
+makedepends="libx11-dev libxcomposite-dev libxext-dev libxinerama-dev
+ libxrender-dev libxtst-dev libxxf86dga-dev libxxf86misc-dev
+ libxxf86vm-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -22,13 +23,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="2c9097c13778c7a7fe5a9b3ee04b28512ff6028231eca91ecdf6104c742be470678920d37a4f540fece7e39dccbea34802271f359ab80618027b2856c8912e7d xdpyinfo-1.3.2.tar.bz2"
+sha512sums="9ef9f5c10e15a40895e8f008896b960fdd438277657c7159d16f05db79cd2374cfaca4af2f4e59335824bfd2f74a045ef89dd99ea4130ed436ea59fbbb1cbe12 xdpyinfo-1.3.4.tar.xz"
diff --git a/user/xdriinfo/APKBUILD b/user/xdriinfo/APKBUILD
index ae39b7f97..073432f4c 100644
--- a/user/xdriinfo/APKBUILD
+++ b/user/xdriinfo/APKBUILD
@@ -1,19 +1,18 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xdriinfo
-pkgver=1.0.6
-pkgrel=0
+pkgver=1.0.7
+pkgrel=1
pkgdesc="X11 DRI information viewer"
url="https://www.X.Org/"
arch="all"
license="X11"
depends=""
-makedepends="libx11-dev mesa-dev util-macros xorgproto-dev"
+makedepends="libglvnd-dev libx11-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xdriinfo-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/xdriinfo-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="7ddd9e19abaef93e4d85004293528ec3814ef84c470d496dbb8dc8313d804bb7520406de8d33d2bc2b3af942bd0a5d5032a109b2726438a966af63ea680a102f xdriinfo-1.0.6.tar.bz2"
+sha512sums="a368cf32c606ca78f3a23bc5d88fb57b9c1a3827d0fec3e48cee153703135e47cecd3db8ee0eba93f309d7f03b4306c3f2e7f46f36d0d2970671c5e5b78093ad xdriinfo-1.0.7.tar.xz"
diff --git a/user/xedit/APKBUILD b/user/xedit/APKBUILD
index 3ad25658c..b93a2a764 100644
--- a/user/xedit/APKBUILD
+++ b/user/xedit/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xedit
-pkgver=1.2.2
+pkgver=1.2.4
pkgrel=0
pkgdesc="Simple text editor for X11"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="BSD-3-Clause AND X11"
depends=""
makedepends="libx11-dev libxaw-dev libxmu-dev libxt-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xedit-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="24d8e23a2ad1a2e81f6606928bb032f25b70b76da83b65341367bc4111d011abe89f9e30402d057854f2ccdaa9c1ef0d7c55bf29b81ab2d050a8f448cf3eeb5d xedit-1.2.2.tar.bz2"
+sha512sums="30819ec491f9a02db95c20eb8653389b29bf4a4a5c54701d156db67fcb8fade5276dcb3a656dca245c958d75d0ee6fe50ab207e040ce0065d9d9a1bd58d5b24c xedit-1.2.4.tar.xz"
diff --git a/user/xev/APKBUILD b/user/xev/APKBUILD
index ba8aafedd..acec66ec4 100644
--- a/user/xev/APKBUILD
+++ b/user/xev/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xev
-pkgver=1.2.3
+pkgver=1.2.6
pkgrel=0
pkgdesc="X11 input event monitor"
url="https://www.X.Org/"
@@ -10,7 +10,7 @@ license="X11"
depends=""
makedepends="libx11-dev libxrandr-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/xev-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
./configure \
@@ -31,4 +31,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="47cc7ac096e77cfa4e687914d767263cf3e1dca5bffd0f68c7ba0fe751b248c8a16525bd2da4d6efa0ea8d637831c893d41c9687cace4aaa9c0909a45ef1943e xev-1.2.3.tar.bz2"
+sha512sums="aaabb635622abfbf0b7ef2a1978070a918ea94480f375dd0798375274cf378ddb25007cc42426bb2292ed65c8af922f88e6a04c5a2f6cff3fadb0194b53eb7e7 xev-1.2.6.tar.xz"
diff --git a/user/xeyes/APKBUILD b/user/xeyes/APKBUILD
index 76edc0272..b2658c35b 100644
--- a/user/xeyes/APKBUILD
+++ b/user/xeyes/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xeyes
-pkgver=1.1.2
+pkgver=1.3.0
pkgrel=0
pkgdesc="Feel like somebody's watching you"
url="https://www.X.Org/"
@@ -9,12 +9,11 @@ arch="all"
license="X11"
depends=""
makedepends="libx11-dev libxext-dev libxmu-dev libxrender-dev libxt-dev
- util-macros xorgproto-dev"
+ libxi-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xeyes-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="008d76f03ddabd3d86ad9e52a540504553b94cb7a6743b20cf08897549eb27505667365ab9af21956a1b5ec7297acca8903a326536e6195a30e643cd93297ee0 xeyes-1.1.2.tar.bz2"
+sha512sums="6108a476cd0807ce2a522d905894817f7f14f653f928c218c96c078f0822d9abef5fb941d3e7163a1cadaa7d74f1bd09bbf60345a7ac0fe906667af5a0490906 xeyes-1.3.0.tar.xz"
diff --git a/user/xf86-input-evdev/APKBUILD b/user/xf86-input-evdev/APKBUILD
index 3339d8caf..0896f48fa 100644
--- a/user/xf86-input-evdev/APKBUILD
+++ b/user/xf86-input-evdev/APKBUILD
@@ -6,14 +6,13 @@ pkgdesc="X.Org generic input driver"
url="https://www.X.Org/"
arch="all"
license="MIT"
-subpackages="$pkgname-doc $pkgname-dev"
depends=""
makedepends="libxkbfile-dev xorg-server-dev libxi-dev libxrandr-dev
eudev-dev mtdev-dev libevdev-dev"
+subpackages="$pkgname-doc $pkgname-dev"
source="https://www.X.Org/releases/individual/driver/$pkgname-$pkgver.tar.bz2"
build() {
- cd "$builddir"
export LDFLAGS="$LDFLAGS -Wl,-z,lazy"
./configure \
--build=$CBUILD \
@@ -26,12 +25,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
diff --git a/user/xf86-input-joystick/APKBUILD b/user/xf86-input-joystick/APKBUILD
index c71441234..36e59b8f6 100644
--- a/user/xf86-input-joystick/APKBUILD
+++ b/user/xf86-input-joystick/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xf86-input-joystick
-pkgver=1.6.3
+pkgver=1.6.4
pkgrel=0
pkgdesc="X.Org joystick driver"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="MIT"
depends=""
makedepends="util-macros xorgproto-dev xorg-server-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/driver/xf86-input-joystick-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/driver/xf86-input-joystick-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="541c993bd37dd74d96d90060407d9fb9ebd3fbca352189a08c6b0c899c84609a1b5a3c1ea3febb4ceb5e2b881b54e45c75b8f9b2e475e16d7cffbbe42a3221e5 xf86-input-joystick-1.6.3.tar.bz2"
+sha512sums="4e9127f125543060f9e6bc4b0aa384bc98a92acc52bfb240c9a114c565e0b24d2e9dcbc0e866845abc8aeb1e1a6c78cd5e3f0c0f22007aa93460b6a1910d67ef xf86-input-joystick-1.6.4.tar.xz"
diff --git a/user/xf86-input-keyboard/APKBUILD b/user/xf86-input-keyboard/APKBUILD
deleted file mode 100644
index 600a12ec6..000000000
--- a/user/xf86-input-keyboard/APKBUILD
+++ /dev/null
@@ -1,37 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=xf86-input-keyboard
-pkgver=1.9.0
-pkgrel=0
-pkgdesc="X.Org keyboard driver"
-url="https://www.X.Org/"
-arch="all"
-license="X11 AND MIT AND GPL-2.0-only"
-depends=""
-makedepends="util-macros xorgproto-dev xorg-server-dev"
-subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/driver/xf86-input-keyboard-$pkgver.tar.bz2"
-
-build() {
- cd "$builddir"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --sysconfdir=/etc \
- --mandir=/usr/share/man \
- --localstatedir=/var
- make
-}
-
-check() {
- cd "$builddir"
- make check
-}
-
-package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
-}
-
-sha512sums="d1a52d10039096d0d5e09750b6a8c2388345748331615af93e5be499646c3bc5fbbfc897fcebdeada5efaafff94f26a2ab84d6e35f01a875b8b9956a42015df9 xf86-input-keyboard-1.9.0.tar.bz2"
diff --git a/user/xf86-input-libinput/APKBUILD b/user/xf86-input-libinput/APKBUILD
index 4c168bea9..e6a91616a 100644
--- a/user/xf86-input-libinput/APKBUILD
+++ b/user/xf86-input-libinput/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xf86-input-libinput
-pkgver=0.28.2
+pkgver=1.4.0
pkgrel=0
pkgdesc="X.Org generic input driver using libinput"
url="https://www.X.Org/"
@@ -11,7 +11,7 @@ depends=""
depends_dev="libinput-dev xorg-server-dev"
makedepends="$depends_dev eudev-dev xorgproto-dev"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/driver/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/driver/$pkgname-$pkgver.tar.xz"
build() {
./configure \
@@ -32,4 +32,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="da6eb632180649853b3aa2fb88debd6aafe5ede24a5f4a04a21cf18fa97fd414d300b86cdf8a42027c98ac89f1b9f88034fc9e364ac3a02fa38872e57b542a84 xf86-input-libinput-0.28.2.tar.bz2"
+sha512sums="b286b5425aeda5cfecd1de7f59663d169b95ffc55474dfbf28c2e13e5221cbeecd472d40b6094c0a937f83db67bf58a7fe0e07d25b6a6945d3fd669e717fc0bf xf86-input-libinput-1.4.0.tar.xz"
diff --git a/user/xf86-input-mouse/APKBUILD b/user/xf86-input-mouse/APKBUILD
index eaefa3bb0..624281462 100644
--- a/user/xf86-input-mouse/APKBUILD
+++ b/user/xf86-input-mouse/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xf86-input-mouse
-pkgver=1.9.3
+pkgver=1.9.5
pkgrel=0
pkgdesc="X.Org mouse driver"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11 AND MIT"
depends=""
makedepends="util-macros xorgproto-dev xorg-server-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/driver/xf86-input-mouse-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/driver/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d99f5b4b1ef1aa4cbf1a92549e412f54f121bc804e4d6643248ad7ea18081b38b958bd289dc8476ebc0f6ef5f7424c2f2a8abcfaa30cae5378829549af6b148f xf86-input-mouse-1.9.3.tar.bz2"
+sha512sums="ed9bd9cb9a05dac0ff1bfb4e4704cb2e94117afb400aa9e0b7ccdbb102bc6db1b0d3af7cb6f99d0892f8fc306f1643286291c0fa7114af8e65864412bd6c1afa xf86-input-mouse-1.9.5.tar.xz"
diff --git a/user/xf86-input-synaptics/APKBUILD b/user/xf86-input-synaptics/APKBUILD
index 5d45c4602..8c7a4690f 100644
--- a/user/xf86-input-synaptics/APKBUILD
+++ b/user/xf86-input-synaptics/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xf86-input-synaptics
-pkgver=1.9.1
+pkgver=1.9.2
pkgrel=0
pkgdesc="X.Org input driver for Synaptics laptop trackpads"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ depends=""
makedepends="libevdev-dev libxi-dev libxkbfile-dev libxrandr-dev libxtst-dev
mtdev-dev xorg-server-dev"
subpackages="$pkgname-doc $pkgname-dev"
-source="https://www.X.Org/releases/individual/driver/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/driver/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
export LDFLAGS="$LDFLAGS -Wl,-z,lazy"
./configure \
--build=$CBUILD \
@@ -26,14 +25,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="978eddd456aa7361047bc3d72e5127b24b13de29b0dddb6a0acc9f9da93931baa2b22fb5d1e6be164f629a11e5d97d753b835426435396b45b1af5eb8d546c3f xf86-input-synaptics-1.9.1.tar.bz2"
+sha512sums="6fd46505f22bba79f612fbd48dddd4818f7d874cc29caac71840744de27f1d224c68861e3a18d2a866b78178924d2f093f5260e27b221aa1fb17dbc09d66b649 xf86-input-synaptics-1.9.2.tar.xz"
diff --git a/user/xf86-input-void/APKBUILD b/user/xf86-input-void/APKBUILD
index 9ce25b0f7..dde425ba6 100644
--- a/user/xf86-input-void/APKBUILD
+++ b/user/xf86-input-void/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xf86-input-void
-pkgver=1.4.1
+pkgver=1.4.2
pkgrel=0
pkgdesc="X.Org null input driver"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="MIT AND X11"
depends=""
makedepends="util-macros xorgproto-dev xorg-server-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/driver/xf86-input-void-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/driver/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3cbcba9510635fc4a3b610fb940584417d4b3fcace88670b1289906a7da15614e9a286590cecd1840af4bb3bd0c62f246522b1203700067ec384c3cc11b7e94a xf86-input-void-1.4.1.tar.bz2"
+sha512sums="f266494bd0ab62d2e20048d5557cb4724cc704be06b7f04f55970aad070887ca8940341c4a4929bb48a46b4d040e03c4d09ce3ae85b94ce23c70faf28486005d xf86-input-void-1.4.2.tar.xz"
diff --git a/user/xf86-input-wacom/APKBUILD b/user/xf86-input-wacom/APKBUILD
index da4162103..a1d6375a7 100644
--- a/user/xf86-input-wacom/APKBUILD
+++ b/user/xf86-input-wacom/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xf86-input-wacom
-pkgver=0.36.1
+pkgver=0.39.0
pkgrel=0
pkgdesc="X.Org driver for Wacom tablets"
url="https://linuxwacom.github.io/"
@@ -14,7 +14,6 @@ subpackages="$pkgname-doc"
source="https://github.com/linuxwacom/xf86-input-wacom/releases/download/xf86-input-wacom-$pkgver/xf86-input-wacom-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="2618bb53f4d6ed4166cd738022efcd3f35b31e27b04b8293834a1650131f2cbe9e1f11594bbcfb309861360311ae68dfb179d86d27fcb57033847a7b26d6e832 xf86-input-wacom-0.36.1.tar.bz2"
+sha512sums="9ad92c86c4ba3587d68e2107057c89dfe8628c0a2ec882f5a424ab4983c18ff6048489d7f6d3a8de87403744f74de1982de25327fc955bb5c21346a242e0aaa3 xf86-input-wacom-0.39.0.tar.bz2"
diff --git a/user/xf86-video-amdgpu/APKBUILD b/user/xf86-video-amdgpu/APKBUILD
new file mode 100644
index 000000000..c8df25305
--- /dev/null
+++ b/user/xf86-video-amdgpu/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xf86-video-amdgpu
+pkgver=23.0.0
+pkgrel=0
+pkgdesc="X.Org driver for brand new AMD GPUs"
+url="https://www.X.Org/"
+arch="all"
+license="X11"
+depends=""
+makedepends="eudev-dev libdrm-dev mesa-dev util-macros xorg-server-dev
+ xorgproto-dev"
+subpackages="$pkgname-doc"
+source="https://www.x.org/releases/individual/driver/xf86-video-amdgpu-$pkgver.tar.xz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="bf26f147629a34e84a0ae8435119e170b9c95edafcab1995b63bb8f55abef32f2efbf4536eb070e64b2ae1460424b1b27a4206cb9836d33ddc6dfbee404f718b xf86-video-amdgpu-23.0.0.tar.xz"
diff --git a/user/xf86-video-ast/APKBUILD b/user/xf86-video-ast/APKBUILD
index 0d90f631b..ec34729eb 100644
--- a/user/xf86-video-ast/APKBUILD
+++ b/user/xf86-video-ast/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xf86-video-ast
-pkgver=1.1.5
+pkgver=1.1.6
pkgrel=0
pkgdesc="ASPEED video driver for X11"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="MIT"
depends=""
makedepends="util-macros xorgproto-dev xorg-server-dev"
subpackages=""
-source="https://www.x.org/releases/individual/driver/xf86-video-ast-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/driver/xf86-video-ast-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="067c2ce3e74c83fe1531213308753cb80482d177c93009c99dc49e95bfa6ff058d81cc716d6c343b9ca1e0eb7aedf3b84beb12ad08b8cd4d9f43e11f9e192e8e xf86-video-ast-1.1.5.tar.bz2"
+sha512sums="8482fec8d6be577f293cb820e623544475163f713fd74ec415f899bf5e9cf9453ffe4f96e141da3671437ebf616b47395d30d4b10858053c5893f5f5b7575ef1 xf86-video-ast-1.1.6.tar.xz"
diff --git a/user/xf86-video-ati/APKBUILD b/user/xf86-video-ati/APKBUILD
index 4212237c5..fc2090f95 100644
--- a/user/xf86-video-ati/APKBUILD
+++ b/user/xf86-video-ati/APKBUILD
@@ -1,21 +1,20 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xf86-video-ati
-pkgver=19.0.1
+pkgver=22.0.0
pkgrel=0
pkgdesc="ATI video driver for X11"
url="https://www.X.Org/"
arch="all"
options="!check" # No test suite.
license="MIT"
-subpackages="$pkgname-doc"
-depends="mesa-dri-ati"
+depends="mesa-dri"
makedepends="eudev-dev libdrm-dev libxi-dev mesa-dev pixman-dev util-macros
xorg-server-dev"
-source="https://www.X.Org/releases/individual/driver/$pkgname-$pkgver.tar.bz2"
+subpackages="$pkgname-doc"
+source="https://www.X.Org/releases/individual/driver/$pkgname-$pkgver.tar.xz"
build() {
export LDFLAGS="$LDFLAGS -Wl,-z,lazy"
-
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,4 +27,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="e04c5395e3a49d81b8f7a4b0e11fe8c9ebd17af056a4eab4541873796dce05b103c93fb185f3a00873010df0655cd7311e6d27e177aeb7345c4c8017bbd1eb17 xf86-video-ati-19.0.1.tar.bz2"
+sha512sums="fba9ffc7b0eeb0c369eb1a6f8ef0bb3061cfeca26bc269baf6e3d16dcd943fbf4092f1e37adfb1bc71051cee0b7a0e6fb253f0b8bcd210732ccaf99e8f2356fe xf86-video-ati-22.0.0.tar.xz"
diff --git a/user/xf86-video-cirrus/APKBUILD b/user/xf86-video-cirrus/APKBUILD
index 1c26532ea..25f9ba8f7 100644
--- a/user/xf86-video-cirrus/APKBUILD
+++ b/user/xf86-video-cirrus/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xf86-video-cirrus
-pkgver=1.5.3
+pkgver=1.6.0
pkgrel=0
pkgdesc="Cirrus Logic video driver for X11"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11 AND MIT"
depends=""
makedepends="util-macros xorgproto-dev xorg-server-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/driver/xf86-video-cirrus-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/driver/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="6aec70f943d9bf7455782d300bd5e1caab5c90408cdca25b9a3ef314e565082f3249a179fb508be36a61c8a34006c0ace14b9aa41f724f479511a906fa8f4798 xf86-video-cirrus-1.5.3.tar.bz2"
+sha512sums="d18260bdc486fbadf619e41a9e9d9ad08bda2434b877ab7504ba13aa1fdeb1f87bb397d9090d5cf0883325ad08799115d5f0ce098b5f75088a06b0a96894ed76 xf86-video-cirrus-1.6.0.tar.xz"
diff --git a/user/xf86-video-dummy/APKBUILD b/user/xf86-video-dummy/APKBUILD
index 453dda88c..fa974d45f 100644
--- a/user/xf86-video-dummy/APKBUILD
+++ b/user/xf86-video-dummy/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xf86-video-dummy
-pkgver=0.3.8
+pkgver=0.4.1
pkgrel=0
pkgdesc="Null video driver for X11"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="util-macros xorgproto-dev xorg-server-dev"
subpackages=""
-source="https://www.x.org/releases/individual/driver/xf86-video-dummy-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/driver/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="f534113fd9987e44d2e0d0c53bd1b71be4ba69ec239ecec4aba8fcdcc10597722c54cbc01da38e0975ac7660e4e4028330e4cdd369e755c25ec059d2dfabad80 xf86-video-dummy-0.3.8.tar.bz2"
+sha512sums="ff7fd8b668e5e9f40a5d27f82599b7a455a8162fc1a247195335c17980f00ce10ae6b2c062239cbaa67d8684c86174f85b398dd7f7065d36f69294bd6f2469de xf86-video-dummy-0.4.1.tar.xz"
diff --git a/user/xf86-video-fbdev/APKBUILD b/user/xf86-video-fbdev/APKBUILD
index d514f987d..b78739650 100644
--- a/user/xf86-video-fbdev/APKBUILD
+++ b/user/xf86-video-fbdev/APKBUILD
@@ -6,13 +6,12 @@ pkgdesc="Framebuffer video driver for X11"
url="https://www.X.Org/"
arch="all"
license="MIT"
-subpackages="$pkgname-doc"
depends=""
makedepends="libxi-dev util-macros xorgproto-dev xorg-server-dev"
+subpackages="$pkgname-doc"
source="https://www.X.org/releases/individual/driver/$pkgname-$pkgver.tar.bz2"
build() {
- cd "$builddir"
export LDFLAGS="$LDFLAGS -Wl,-z,lazy"
./configure \
--build=$CBUILD \
@@ -22,12 +21,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
diff --git a/user/xf86-video-freedreno/APKBUILD b/user/xf86-video-freedreno/APKBUILD
index d46d2b23a..4eb0448e4 100644
--- a/user/xf86-video-freedreno/APKBUILD
+++ b/user/xf86-video-freedreno/APKBUILD
@@ -5,7 +5,7 @@ pkgver=1.4.0
pkgrel=0
pkgdesc="Libre Adreno video driver for X11"
url="https://www.X.Org/"
-arch="all"
+arch="aarch64 aarch64_be armel armeb armhf armv7"
license="X11 AND BSD-3-Clause"
depends=""
makedepends="eudev-dev libdrm-dev util-macros xorgproto-dev xorg-server-dev"
@@ -16,7 +16,6 @@ source="https://www.x.org/releases/individual/driver/xf86-video-freedreno-$pkgve
"
build() {
- cd "$builddir"
CFLAGS="$CFLAGS -Wno-error=deprecated-declarations" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,12 +27,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/xf86-video-geode/APKBUILD b/user/xf86-video-geode/APKBUILD
index 0ba4f2954..22a81e7df 100644
--- a/user/xf86-video-geode/APKBUILD
+++ b/user/xf86-video-geode/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xf86-video-geode
-pkgver=2.11.19
+pkgver=2.11.21
pkgrel=0
pkgdesc="AMD Geode video driver for X11"
url="https://www.X.Org/"
@@ -10,13 +10,9 @@ license="X11"
depends=""
makedepends="util-macros xorgproto-dev xorg-server-dev"
subpackages=""
-source="https://www.x.org/releases/individual/driver/xf86-video-geode-$pkgver.tar.bz2
- loader.patch
- randr.patch
- "
+source="https://www.x.org/releases/individual/driver/xf86-video-geode-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -28,15 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="f0b1c5edf1c226a4379aa9a4983e69cbaced0618868a7902de41a7754c148324c2a4ea73704aefd96f48d36f035fb2c8063604c26e21e986e4f90c3716578d41 xf86-video-geode-2.11.19.tar.bz2
-a6703c78f2790ff67eb812de3afcdff0a86b6dee8469318ed21e8a50af0a286a087739917e7559d920085563b62eaf9874d54397e88bc810e65bd6ffa7d0830f loader.patch
-c4b1d09b17e84a3aa842e37f6710fcfe420c2cd9a3efeac5ea50c0d3eb7ebbdb370536a86e1741c89fe50ae38b22d9aecf1d6919077a1579209f2f70c2e0b099 randr.patch"
+sha512sums="e12f74268ab7d16b57644a9465b4be1ca28d250625a31b8810e19a1f94a17e47e0a258455155fd8f336fa59fd78160cdf3763aa94b85c6ccc2c42edf3b65bc61 xf86-video-geode-2.11.21.tar.xz"
diff --git a/user/xf86-video-geode/loader.patch b/user/xf86-video-geode/loader.patch
deleted file mode 100644
index f318fbb17..000000000
--- a/user/xf86-video-geode/loader.patch
+++ /dev/null
@@ -1,48 +0,0 @@
-From 09aaa3d1fae4aeb099b16e7a046151761bcdea95 Mon Sep 17 00:00:00 2001
-From: Adam Jackson <ajax@redhat.com>
-Date: Tue, 24 Jan 2017 09:53:06 -0500
-Subject: Remove call to LoaderGetOS
-
-On OSes that don't have a /dev/videox we'll just fail the open() and not
-initialize the Xv adaptor.
-
-Signed-off-by: Adam Jackson <ajax@redhat.com>
----
- src/z4l.c | 13 -------------
- 1 file changed, 13 deletions(-)
-
-diff --git a/src/z4l.c b/src/z4l.c
-index eccefe8..be0d345 100644
---- a/src/z4l.c
-+++ b/src/z4l.c
-@@ -1709,7 +1709,6 @@ _X_EXPORT XF86ModuleData ztvModuleData = { &z4lVersionRec, z4lSetup, NULL };
- static pointer
- z4lSetup(pointer module, pointer opts, int *errmaj, int *errmin)
- {
-- const char *osname;
- static Bool setupDone = FALSE;
-
- if (setupDone != FALSE) {
-@@ -1719,19 +1718,7 @@ z4lSetup(pointer module, pointer opts, int *errmaj, int *errmin)
- }
-
- setupDone = TRUE;
-- LoaderGetOS(&osname, NULL, NULL, NULL);
--
-- if (osname == NULL || strcmp(osname, "linux") != 0) {
-- if (errmaj)
-- *errmaj = LDR_BADOS;
-- if (errmin)
-- *errmin = 0;
--
-- return NULL;
-- }
--
- xf86AddDriver(&Z4l, module, 0);
--
- return (pointer) 1;
- }
-
---
-cgit v1.1
-
diff --git a/user/xf86-video-geode/randr.patch b/user/xf86-video-geode/randr.patch
deleted file mode 100644
index 9c2b34ac9..000000000
--- a/user/xf86-video-geode/randr.patch
+++ /dev/null
@@ -1,30 +0,0 @@
-From 8382e6bb0c76a8029493eae3f2d7a3dbfd0cfc12 Mon Sep 17 00:00:00 2001
-From: Adam Jackson <ajax@redhat.com>
-Date: Mon, 5 Mar 2018 10:28:15 -0500
-Subject: gx: Fix RANDR initialization for xserver 1.20
-
-xf86DisableRandR() doesn't exist anymore, and we don't need it anyway,
-the core code will notice that we set up RANDR ourselves.
-
-Signed-off-by: Adam Jackson <ajax@redhat.com>
----
- src/gx_driver.c | 2 ++
- 1 file changed, 2 insertions(+)
-
-diff --git a/src/gx_driver.c b/src/gx_driver.c
-index ab57df1..4de336e 100644
---- a/src/gx_driver.c
-+++ b/src/gx_driver.c
-@@ -1426,7 +1426,9 @@ GXScreenInit(SCREEN_INIT_ARGS_DECL)
-
- /* Set up RandR */
-
-+#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 24
- xf86DisableRandR(); /* We provide our own RandR goodness */
-+#endif
-
- /* Try to set up the shadow FB for rotation */
-
---
-cgit v1.1
-
diff --git a/user/xf86-video-intel/APKBUILD b/user/xf86-video-intel/APKBUILD
index 6727ce394..2679c69a5 100644
--- a/user/xf86-video-intel/APKBUILD
+++ b/user/xf86-video-intel/APKBUILD
@@ -2,32 +2,29 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=xf86-video-intel
verbase=2.99.917
-pkgver=${verbase}_git20180803
+pkgver=${verbase}_git20230318
pkgrel=0
pkgdesc="Legacy X.Org driver for Intel graphics cards"
url="https://xorg.freedesktop.org"
arch="pmmx x86_64"
options="!check" # No test suite.
license="MIT"
-subpackages="$pkgname-doc"
-depends="mesa-dri-intel"
+depends="mesa-dri"
makedepends="xorg-server-dev libxi-dev libdrm-dev mesa-dev libxvmc-dev
xcb-util-dev eudev-dev util-macros autoconf automake libtool xorgproto
+ libxv-dev
"
-source="https://dev.sick.bike/$pkgname-$pkgver.tar.gz
- pmmx.patch
- "
+subpackages="$pkgname-doc"
+source="https://distfiles.adelielinux.org/source/$pkgname-$pkgver.tar.gz"
giturl="https://gitlab.freedesktop.org/xorg/driver/xf86-video-intel.git"
-reporev="3d395062ce73f85e8340218df01c2ebf4bc25023"
+reporev="ce811e78882d9f31636351dfe65351f4ded52c74"
prepare() {
- cd "$builddir"
default_prepare
autoreconf -vif
}
build() {
- cd "$builddir"
export LDFLAGS="$LDFLAGS -Wl,-z,lazy"
./configure \
--build=$CBUILD \
@@ -40,11 +37,9 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
rm "$pkgdir"/usr/libexec/xf86-video-intel-backlight-helper
}
-sha512sums="a96e627ed1b3fb6b66f02caaafb0f94967df9a2409158aacc9d8958538ef47bd84176ce71a4785f21944beb764450b1560c6dc59eef435f75959e27704be41f1 xf86-video-intel-2.99.917_git20180803.tar.gz
-13694f8829ec59773f764817467052d5d4b93b5de16d8cdacc08ced48608b46008414be1f5f118e5f327c401541477c3418f510ada9cfb290a11ac2e5590b0f3 pmmx.patch"
+sha512sums="b8663b30d3aba74964ea8509ce1e7bf6ef5c9d95c500900d2a88e71abe48dbe7f96650e115566673e982d0923b5a7aacce3b56def8c75c37e59542fae5c44b20 xf86-video-intel-2.99.917_git20230318.tar.gz"
diff --git a/user/xf86-video-intel/fno-common.patch b/user/xf86-video-intel/fno-common.patch
new file mode 100644
index 000000000..5c0640f9f
--- /dev/null
+++ b/user/xf86-video-intel/fno-common.patch
@@ -0,0 +1,24 @@
+From 7ca3a0d0d9a2de49db30708d38195b6585df4ed8 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Hanno=20B=C3=B6ck?= <hanno@gentoo.org>
+Date: Sun, 2 Feb 2020 14:18:39 +0100
+Subject: [PATCH] Avoid duplicate definition of I810CopyROP in i810.h and
+ i810_accel.c, fixes compilation with -fno-common/gcc-10.
+
+---
+ src/legacy/i810/i810.h | 1 -
+ 1 file changed, 1 deletion(-)
+
+diff --git a/src/legacy/i810/i810.h b/src/legacy/i810/i810.h
+index 347188c9..901b7e64 100644
+--- a/src/legacy/i810/i810.h
++++ b/src/legacy/i810/i810.h
+@@ -322,6 +322,5 @@ extern void I810InitMC(ScreenPtr pScreen);
+ extern const OptionInfoRec *I810AvailableOptions(int chipid, int busid);
+
+ extern const int I810CopyROP[16];
+-const int I810PatternROP[16];
+
+ #endif /* _I810_H_ */
+--
+2.24.1
+
diff --git a/user/xf86-video-intel/pmmx.patch b/user/xf86-video-intel/pmmx.patch
deleted file mode 100644
index 7edddfb96..000000000
--- a/user/xf86-video-intel/pmmx.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-diff --git a/src/sna/compiler.h b/src/sna/compiler.h
-index 0f3775ec..c4056913 100644
---- a/src/sna/compiler.h
-+++ b/src/sna/compiler.h
-@@ -32,7 +32,7 @@
- #define likely(expr) (__builtin_expect (!!(expr), 1))
- #define unlikely(expr) (__builtin_expect (!!(expr), 0))
- #define noinline __attribute__((noinline))
--#define force_inline inline __attribute__((always_inline))
-+#define force_inline inline
- #define fastcall __attribute__((regparm(3)))
- #define must_check __attribute__((warn_unused_result))
- #define constant __attribute__((const))
diff --git a/user/xf86-video-mach64/APKBUILD b/user/xf86-video-mach64/APKBUILD
index 2fdbb93c7..87a878e55 100644
--- a/user/xf86-video-mach64/APKBUILD
+++ b/user/xf86-video-mach64/APKBUILD
@@ -1,19 +1,18 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xf86-video-mach64
-pkgver=6.9.6
+pkgver=6.9.7
pkgrel=0
pkgdesc="ATi mach64 video driver for X11"
url="https://www.X.Org/"
arch="all"
license="MIT AND X11"
depends=""
-makedepends="util-macros xorgproto-dev xorg-server-dev"
+makedepends="libdrm-dev util-macros xorgproto-dev xorg-server-dev"
subpackages=""
-source="https://www.x.org/releases/individual/driver/xf86-video-mach64-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/driver/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="687f6ac60491b704d5c4788463763d2f4bf725611e10bd2163156963fe0a8fdbffe0a1b7c737eff131f01759e43b5ec3544a7dabe66a67e85b286dcb969da2f1 xf86-video-mach64-6.9.6.tar.bz2"
+sha512sums="a511525ceb8eab95d28e815f462897ead8b99ac455c548598cc061907636e1acff8cad66621feeb33558dbfdbf59ca0648422aae8edaab7d1dcd7e386348177b xf86-video-mach64-6.9.7.tar.xz"
diff --git a/user/xf86-video-mga/APKBUILD b/user/xf86-video-mga/APKBUILD
index adfbc5b31..9af9c5ece 100644
--- a/user/xf86-video-mga/APKBUILD
+++ b/user/xf86-video-mga/APKBUILD
@@ -1,19 +1,18 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xf86-video-mga
-pkgver=2.0.0
+pkgver=2.0.1
pkgrel=0
pkgdesc="Matrox video driver for X11"
url="https://www.X.Org/"
arch="all"
license="X11"
depends=""
-makedepends="util-macros xorgproto-dev xorg-server-dev"
+makedepends="libdrm-dev util-macros xorgproto-dev xorg-server-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/driver/xf86-video-mga-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/driver/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b92006486aef815ff4399f291d610c65d88c0b32a9dae97658c644715ff62b221b01495b5c7a2311745e26f699c1c1f753b81c7bf54cf75567af9f78ac015540 xf86-video-mga-2.0.0.tar.bz2"
+sha512sums="d9a0abedb71f3354788c2f91b770bc00c4118cfa2c99072dea82c28f025bc87bb88ebaf969962a8f0e97e1ff7938aebd9c682b730b0e07d5174dd9e8dc2cdfb6 xf86-video-mga-2.0.1.tar.xz"
diff --git a/user/xf86-video-nouveau/APKBUILD b/user/xf86-video-nouveau/APKBUILD
index 40c9b8f82..c626524b6 100644
--- a/user/xf86-video-nouveau/APKBUILD
+++ b/user/xf86-video-nouveau/APKBUILD
@@ -1,16 +1,16 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xf86-video-nouveau
-pkgver=1.0.16
+pkgver=1.0.18
pkgrel=0
pkgdesc="Libre Nvidia video driver for X11"
url="https://nouveau.freedesktop.org/"
arch="all"
license="MIT"
-depends="mesa-dri-nouveau"
+depends="mesa-dri"
makedepends="eudev-dev libdrm-dev util-macros xorgproto-dev xorg-server-dev"
subpackages="$pkgname-doc"
-source="https://www.X.Org/archive/individual/driver/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.Org/archive/individual/driver/$pkgname-$pkgver.tar.xz"
build() {
export LDFLAGS="$LDFLAGS -Wl,-z,lazy"
@@ -32,4 +32,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="41b7839c37372660968ab7da2bc3d9feef3cab4e994d05d4ba6e59071f0d1b1f8d7dcdbcb15a42a375a556d28dc067f9ffe45d73c1d121ad307d199107ade3e0 xf86-video-nouveau-1.0.16.tar.bz2"
+sha512sums="1330fa72f76a6fdc13e7bfa932627091d2735ddb277f6a24d4fefa79fad5f354c6bb661093f26b33770275deca435c3b018f451a6e6254fe35892c59c13e28dc xf86-video-nouveau-1.0.18.tar.xz"
diff --git a/user/xf86-video-openchrome/APKBUILD b/user/xf86-video-openchrome/APKBUILD
index 10832e4ae..7846e5efc 100644
--- a/user/xf86-video-openchrome/APKBUILD
+++ b/user/xf86-video-openchrome/APKBUILD
@@ -8,18 +8,17 @@ url="https://www.X.Org/"
arch="all"
license="X11"
depends=""
-makedepends="libxvmc-dev xorgproto-dev xorg-server-dev"
+makedepends="libxv-dev libxvmc-dev xorgproto-dev xorg-server-dev"
subpackages="$pkgname-doc"
source="https://www.x.org/releases/individual/driver/xf86-video-openchrome-$pkgver.tar.bz2"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
+ export CFLAGS="$CFLAGS -fcommon"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,12 +30,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/xf86-video-qxl/APKBUILD b/user/xf86-video-qxl/APKBUILD
index 3106debc5..312448601 100644
--- a/user/xf86-video-qxl/APKBUILD
+++ b/user/xf86-video-qxl/APKBUILD
@@ -1,20 +1,21 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xf86-video-qxl
-pkgver=0.1.5
+pkgver=0.1.6
pkgrel=0
pkgdesc="QXL video driver for X11"
url="https://www.X.Org/"
arch="all"
license="X11"
depends=""
-makedepends="eudev-dev libxfont2-dev spice-protocol util-macros xorgproto-dev
- xorg-server-dev"
+makedepends="eudev-dev libdrm-dev libxfont2-dev spice-protocol util-macros
+ xorgproto-dev xorg-server-dev"
subpackages=""
-source="https://www.x.org/releases/individual/driver/xf86-video-qxl-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/driver/xf86-video-qxl-$pkgver.tar.xz
+ libdrm.patch
+ "
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +27,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="7510b2d037b3e978df6063b29e2406f3d1270695a239f29fdaec9b1dc65a30ab10cb959f15eb336f78e93aa708d41c64c5ea43803958feffc64542229605b782 xf86-video-qxl-0.1.5.tar.bz2"
+sha512sums="f6a42355915d2e8f8a842dc24fe6d012d123aa6d23eedea1a4771fb08f88e0298d76741755b88304d76c66b3aae15f9fca74d062be395e499a82ee8f4507c7e0 xf86-video-qxl-0.1.6.tar.xz
+9f8bc0c32fa1633c95dfdfba630c3bfa766d4d137a37e28900256223b0a0b31d9cd368981d8b95392ef9ace8db4e11ef62fa1e7c4fcc895ff206e3e35b32c853 libdrm.patch"
diff --git a/user/xf86-video-qxl/libdrm.patch b/user/xf86-video-qxl/libdrm.patch
new file mode 100644
index 000000000..8e95dd77a
--- /dev/null
+++ b/user/xf86-video-qxl/libdrm.patch
@@ -0,0 +1,25 @@
+From: Matteo Bernardini <ponce@slackbuilds.org>
+Subject: Change header inclusion order to avoid xorg headers catching stdbool.h
+
+libdrm commit e641e2a632d779f638ac2ba983b9fceb20b3fac4 added
+stdbool.h to the library headers which conflicts with xorg headers.
+
+diff -Naur xf86-video-qxl-0.1.5.orig/src/qxl_drmmode.c xf86-video-qxl-0.1.5/src/qxl_drmmode.c
+--- xf86-video-qxl-0.1.5.orig/src/qxl_drmmode.c 2015-03-30 16:58:56.000000000 +0200
++++ xf86-video-qxl-0.1.5/src/qxl_drmmode.c 2022-02-10 08:59:13.221017000 +0100
+@@ -33,7 +33,6 @@
+ #ifdef XF86DRM_MODE
+
+ #include <sys/ioctl.h>
+-#include "qxl_drmmode.h"
+ #include "X11/Xatom.h"
+ #include "xf86DDC.h"
+ /* DPMS */
+@@ -47,6 +46,7 @@
+
+ #include "qxl.h"
+ #include "qxl_surface.h"
++#include "qxl_drmmode.h"
+
+ static void drmmode_show_cursor (xf86CrtcPtr crtc);
+
diff --git a/user/xf86-video-r128/0001-Fix-output-detection-on-non-x86-and-allow-override.patch b/user/xf86-video-r128/0001-Fix-output-detection-on-non-x86-and-allow-override.patch
new file mode 100644
index 000000000..83f70bef6
--- /dev/null
+++ b/user/xf86-video-r128/0001-Fix-output-detection-on-non-x86-and-allow-override.patch
@@ -0,0 +1,197 @@
+From c0d6b63859c4ef67bc87cf2efae1d608db176286 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Sat, 11 Nov 2023 21:15:29 -0600
+Subject: [PATCH 1/3] Fix output detection on non-x86 and allow override
+
+This exposes a new option, "ForceOutput", which is read when the VBIOS is
+inaccessible. With this change, r128 is usable on at least PPC systems.
+
+Signed-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com>
+---
+ man/r128.man | 4 ++++
+ src/r128.h | 2 +-
+ src/r128_driver.c | 29 ++---------------------
+ src/r128_options.h | 59 ++++++++++++++++++++++++++++++++++++++++++++++
+ src/r128_output.c | 11 ++++++++-
+ 5 files changed, 76 insertions(+), 29 deletions(-)
+ create mode 100644 src/r128_options.h
+
+diff --git a/man/r128.man b/man/r128.man
+index a93157a..c465531 100644
+--- a/man/r128.man
++++ b/man/r128.man
+@@ -94,6 +94,10 @@ Beware that this may damage your panel, so use this
+ .B at your own risk.
+ The default depends on the device.
+ .TP
++.BI "Option \*qForceOutput\*q \*q" integer \*q
++Force a specific output layout. This option is only read when the video card BIOS is
++inaccessible (typically on non-x86 architectures). This allows you to override the
++default output layout, which is a single VGA output on port 0.
+ .BI "Option \*qPanelWidth\*q \*q" integer \*q
+ .TP
+ .BI "Option \*qPanelHeight\*q \*q" integer \*q
+diff --git a/src/r128.h b/src/r128.h
+index 6ab6beb..1ddb0f9 100644
+--- a/src/r128.h
++++ b/src/r128.h
+@@ -66,7 +66,7 @@
+ #undef R128DRI
+ #endif
+
+-#if R128DRI
++#ifdef R128DRI
+ #define _XF86DRI_SERVER_
+ #include "r128_dripriv.h"
+ #include "dri.h"
+diff --git a/src/r128_driver.c b/src/r128_driver.c
+index 6791290..213b948 100644
+--- a/src/r128_driver.c
++++ b/src/r128_driver.c
+@@ -67,6 +67,7 @@
+
+ /* Driver data structures */
+ #include "r128.h"
++#include "r128_options.h"
+ #include "r128_probe.h"
+ #include "r128_reg.h"
+ #include "r128_version.h"
+@@ -114,33 +115,6 @@ static Bool R128SaveScreen(ScreenPtr pScreen, int mode);
+ static void R128Save(ScrnInfoPtr pScrn);
+ static void R128Restore(ScrnInfoPtr pScrn);
+
+-typedef enum {
+- OPTION_NOACCEL,
+- OPTION_FBDEV,
+- OPTION_DAC_6BIT,
+- OPTION_VGA_ACCESS,
+- OPTION_SHOW_CACHE,
+- OPTION_SW_CURSOR,
+- OPTION_VIDEO_KEY,
+- OPTION_PANEL_WIDTH,
+- OPTION_PANEL_HEIGHT,
+- OPTION_PROG_FP_REGS,
+-#ifdef R128DRI
+- OPTION_XV_DMA,
+- OPTION_IS_PCI,
+- OPTION_CCE_PIO,
+- OPTION_NO_SECURITY,
+- OPTION_USEC_TIMEOUT,
+- OPTION_AGP_MODE,
+- OPTION_AGP_SIZE,
+- OPTION_RING_SIZE,
+- OPTION_BUFFER_SIZE,
+- OPTION_PAGE_FLIP,
+-#endif
+- OPTION_ACCELMETHOD,
+- OPTION_RENDERACCEL
+-} R128Opts;
+-
+ static const OptionInfoRec R128Options[] = {
+ { OPTION_NOACCEL, "NoAccel", OPTV_BOOLEAN, {0}, FALSE },
+ { OPTION_FBDEV, "UseFBDev", OPTV_BOOLEAN, {0}, FALSE },
+@@ -166,6 +140,7 @@ static const OptionInfoRec R128Options[] = {
+ #endif
+ { OPTION_ACCELMETHOD, "AccelMethod", OPTV_STRING, {0}, FALSE },
+ { OPTION_RENDERACCEL, "RenderAccel", OPTV_BOOLEAN, {0}, FALSE },
++ { OPTION_FORCEOUTPUT, "ForceOutput", OPTV_INTEGER, {0}, FALSE },
+ { -1, NULL, OPTV_NONE, {0}, FALSE }
+ };
+
+diff --git a/src/r128_options.h b/src/r128_options.h
+new file mode 100644
+index 0000000..cce765b
+--- /dev/null
++++ b/src/r128_options.h
+@@ -0,0 +1,59 @@
++/*
++ * Copyright 2023 A. Wilcox, Tulsa, Oklahoma.
++ *
++ * All Rights Reserved.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining
++ * a copy of this software and associated documentation files (the
++ * "Software"), to deal in the Software without restriction, including
++ * without limitation on 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
++ * NON-INFRINGEMENT. IN NO EVENT SHALL ATI, VA LINUX SYSTEMS AND/OR
++ * THEIR SUPPLIERS 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.
++ */
++
++#ifndef _R128_OPTIONS_H_
++#define _R128_OPTIONS_H_ 1
++
++typedef enum {
++ OPTION_NOACCEL,
++ OPTION_FBDEV,
++ OPTION_DAC_6BIT,
++ OPTION_VGA_ACCESS,
++ OPTION_SHOW_CACHE,
++ OPTION_SW_CURSOR,
++ OPTION_VIDEO_KEY,
++ OPTION_PANEL_WIDTH,
++ OPTION_PANEL_HEIGHT,
++ OPTION_PROG_FP_REGS,
++#ifdef R128DRI
++ OPTION_XV_DMA,
++ OPTION_IS_PCI,
++ OPTION_CCE_PIO,
++ OPTION_NO_SECURITY,
++ OPTION_USEC_TIMEOUT,
++ OPTION_AGP_MODE,
++ OPTION_AGP_SIZE,
++ OPTION_RING_SIZE,
++ OPTION_BUFFER_SIZE,
++ OPTION_PAGE_FLIP,
++#endif
++ OPTION_ACCELMETHOD,
++ OPTION_RENDERACCEL,
++ OPTION_FORCEOUTPUT
++} R128Opts;
++
++#endif /* _R128_OPTIONS_H_ */
+diff --git a/src/r128_output.c b/src/r128_output.c
+index 1d98fb9..05b8c1f 100644
+--- a/src/r128_output.c
++++ b/src/r128_output.c
+@@ -44,6 +44,7 @@
+ #endif
+
+ #include "r128.h"
++#include "r128_options.h"
+ #include "r128_probe.h"
+ #include "r128_reg.h"
+
+@@ -425,7 +426,15 @@ void R128GetConnectorInfoFromBIOS(ScrnInfoPtr pScrn, R128OutputType *otypes)
+
+ /* non-x86 platform */
+ if (!info->VBIOS) {
+- otypes[0] = OUTPUT_VGA;
++ int outputs;
++ xf86GetOptValInteger(info->Options, OPTION_FORCEOUTPUT, &outputs);
++ if (outputs) {
++ otypes[0] = outputs & 0x3;
++ otypes[1] = (outputs >> 2) & 0x3;
++ } else {
++ otypes[0] = OUTPUT_VGA;
++ }
++ return;
+ }
+
+ bios_header = R128_BIOS16(0x48);
+--
+2.39.3 (Apple Git-145)
+
diff --git a/user/xf86-video-r128/0002-Only-try-to-init-XAA-when-XAA-is-available.patch b/user/xf86-video-r128/0002-Only-try-to-init-XAA-when-XAA-is-available.patch
new file mode 100644
index 000000000..5a2167609
--- /dev/null
+++ b/user/xf86-video-r128/0002-Only-try-to-init-XAA-when-XAA-is-available.patch
@@ -0,0 +1,34 @@
+From 4f9f1ba9d55dd946b81c7bbb640a24010b4ce16c Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Sat, 11 Nov 2023 21:19:07 -0600
+Subject: [PATCH 2/3] Only try to init XAA when XAA is available
+
+---
+ src/r128_driver.c | 5 +++--
+ 1 file changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/src/r128_driver.c b/src/r128_driver.c
+index 213b948..109c290 100644
+--- a/src/r128_driver.c
++++ b/src/r128_driver.c
+@@ -1862,14 +1862,15 @@ Bool R128ScreenInit(SCREEN_INIT_ARGS_DECL)
+ }
+
+ if (!info->noAccel) {
++#ifdef HAVE_XAA_H
+ if (R128XAAAccelInit(pScreen)) {
+ info->accelOn = TRUE;
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "XAA acceleration enabled.\n");
+- } else {
++ } else
++#endif
+ xf86DrvMsg(pScrn->scrnIndex, X_INFO,
+ "Acceleration disabled.\n");
+- }
+ }
+ }
+ }
+--
+2.39.3 (Apple Git-145)
+
diff --git a/user/xf86-video-r128/0003-Disable-Int10-support-on-all-non-x86-arches.patch b/user/xf86-video-r128/0003-Disable-Int10-support-on-all-non-x86-arches.patch
new file mode 100644
index 000000000..cd8b6887a
--- /dev/null
+++ b/user/xf86-video-r128/0003-Disable-Int10-support-on-all-non-x86-arches.patch
@@ -0,0 +1,48 @@
+From 4d54c24e7637a82838b5b79caa8a09bbeb8f0d99 Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Sat, 11 Nov 2023 21:25:09 -0600
+Subject: [PATCH 3/3] Disable Int10 support on all non-x86 arches
+
+---
+ src/r128_driver.c | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+diff --git a/src/r128_driver.c b/src/r128_driver.c
+index 109c290..499ecd5 100644
+--- a/src/r128_driver.c
++++ b/src/r128_driver.c
+@@ -961,7 +961,7 @@ static Bool R128PreInitConfig(ScrnInfoPtr pScrn)
+
+ static Bool R128PreInitDDC(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10)
+ {
+-#if !defined(__powerpc__) && !defined(__alpha__) && !defined(__sparc__)
++#if defined(__i386__) || defined(__x86_64__)
+ R128InfoPtr info = R128PTR(pScrn);
+ vbeInfoPtr pVbe;
+ #endif
+@@ -969,8 +969,8 @@ static Bool R128PreInitDDC(ScrnInfoPtr pScrn, xf86Int10InfoPtr pInt10)
+ if (!xf86LoadSubModule(pScrn, "ddc")) return FALSE;
+ if (!xf86LoadSubModule(pScrn, "i2c")) return FALSE;
+
+-#if defined(__powerpc__) || defined(__alpha__) || defined(__sparc__)
+- /* Int10 is broken on PPC and some Alphas */
++#if !defined(__i386__) && !defined(__x86_64__)
++ /* Int10 is broken on non-x86 */
+ return TRUE;
+ #else
+ if (xf86LoadSubModule(pScrn, "vbe")) {
+@@ -1006,9 +1006,9 @@ static Bool R128PreInitCursor(ScrnInfoPtr pScrn)
+
+ static Bool R128PreInitInt10(ScrnInfoPtr pScrn, xf86Int10InfoPtr *ppInt10)
+ {
++#if defined(__i386__) || defined(__x86_64__)
+ R128InfoPtr info = R128PTR(pScrn);
+-#if !defined(__powerpc__) && !defined(__alpha__)
+- /* int10 is broken on some Alphas and powerpc */
++ /* int10 is broken on non-x86 */
+ if (xf86LoadSubModule(pScrn, "int10")) {
+ xf86DrvMsg(pScrn->scrnIndex,X_INFO,"initializing int10\n");
+ *ppInt10 = xf86InitInt10(info->pEnt->index);
+--
+2.39.3 (Apple Git-145)
+
diff --git a/user/xf86-video-r128/APKBUILD b/user/xf86-video-r128/APKBUILD
index 094b11633..cbd4bccf7 100644
--- a/user/xf86-video-r128/APKBUILD
+++ b/user/xf86-video-r128/APKBUILD
@@ -1,21 +1,22 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xf86-video-r128
-pkgver=6.12.0
+pkgver=6.12.1
pkgrel=0
pkgdesc="ATi Rage 128 video driver for X11"
url="https://www.X.Org/"
arch="all"
license="X11 AND MIT"
depends=""
-makedepends="util-macros xorgproto-dev xorg-server-dev"
+makedepends="libdrm-dev util-macros xorgproto-dev xorg-server-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/driver/xf86-video-r128-$pkgver.tar.bz2
- xaa.patch
+source="https://www.x.org/releases/individual/driver/xf86-video-r128-$pkgver.tar.xz
+ 0001-Fix-output-detection-on-non-x86-and-allow-override.patch
+ 0002-Only-try-to-init-XAA-when-XAA-is-available.patch
+ 0003-Disable-Int10-support-on-all-non-x86-arches.patch
"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,14 +28,14 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="0e667e2cfa8a87a00846361d86528c93754c403c812b66798953fa4c857b2143b2c4c44885da467e7f910d8cb910b69492cdcb6f25e2197bae6617364d152e38 xf86-video-r128-6.12.0.tar.bz2
-45104ea2da49933f6d40834badb58c4db8706a9bf3080df7b2538f4cb1e7964b900c10b47386b9502bb4abee796b5f40f30252d1526e26d860b833c4dabca8ba xaa.patch"
+sha512sums="18b2408fe68161c32f84c7147717f8e6c6377e81e9d59e2f098843c54cd0ae757aab5059568da8c71ef38100807d56ee22447417c236c1b3deea292bb676e700 xf86-video-r128-6.12.1.tar.xz
+2b4e4769ef05a2daa552a15adc92ba2b8fc3417e6e43111715ea0c8b0c7a77a97e94b858f3062cf71a73beed0a6f487e765b505e96b7636d881dc10afe4eba5e 0001-Fix-output-detection-on-non-x86-and-allow-override.patch
+490f598f268d3ab3c19deed1f1f1d64a5f4c628cb8fb0f15448942480f13517ad7a3eeabcc9fcb3a98e9988aef96870c44ec4d96743fd742050971387e11cb67 0002-Only-try-to-init-XAA-when-XAA-is-available.patch
+f5871aa1cf8231bd8c983cb78c0602991facef4be04aa12d3f08258cf40c9e1087c55f275efb4e27dc934e55b40805a18acfcc8454ab97dd75adaeb5a09917b9 0003-Disable-Int10-support-on-all-non-x86-arches.patch"
diff --git a/user/xf86-video-r128/xaa.patch b/user/xf86-video-r128/xaa.patch
deleted file mode 100644
index 3ede81203..000000000
--- a/user/xf86-video-r128/xaa.patch
+++ /dev/null
@@ -1,21 +0,0 @@
---- xf86-video-r128-6.12.0/src/r128_driver.c.old 2019-01-05 15:59:11.340000000 +0000
-+++ xf86-video-r128-6.12.0/src/r128_driver.c 2019-01-05 16:16:10.810000000 +0000
-@@ -1887,14 +1887,16 @@
- }
-
- if (!info->noAccel) {
-+#ifdef HAVE_XAA_H
- if (R128XAAAccelInit(pScreen)) {
- info->accelOn = TRUE;
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "XAA acceleration enabled.\n");
-- } else {
-+ } else
-+#endif
- xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Acceleration disabled.\n");
-- }
-+
- }
- }
- }
diff --git a/user/xf86-video-rendition/APKBUILD b/user/xf86-video-rendition/APKBUILD
new file mode 100644
index 000000000..47a6ca4c6
--- /dev/null
+++ b/user/xf86-video-rendition/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xf86-video-rendition
+pkgver=4.2.7
+pkgrel=0
+pkgdesc="X.Org driver for Rendition graphics"
+url="https://www.X.Org/"
+arch="all"
+options="!archcheck !strip" # Includes ELF firmware files.
+license="X11"
+depends=""
+makedepends="util-macros xorg-server-dev xorgproto-dev"
+subpackages="$pkgname-doc"
+source="https://www.X.Org/releases/individual/driver/xf86-video-rendition-$pkgver.tar.bz2"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="5a23a599488946499e9bb3dfaf553cd68b6a1555a9c46b4038f355038a28747715bb940c52170f909917386911c8ae2607c669ba28f24a6c10ad375dab4535aa xf86-video-rendition-4.2.7.tar.bz2"
diff --git a/user/xf86-video-siliconmotion/APKBUILD b/user/xf86-video-siliconmotion/APKBUILD
new file mode 100644
index 000000000..d7e9725e6
--- /dev/null
+++ b/user/xf86-video-siliconmotion/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xf86-video-siliconmotion
+pkgver=1.7.10
+pkgrel=0
+pkgdesc="X.Org driver for Silicon Motion video cards"
+url="https://www.X.Org/"
+# Requires kernel interfaces unavailable on ARM.
+arch="all !aarch64 !aarch64_be !armel !armeb !armhf !armv7"
+license="X11"
+depends=""
+makedepends="util-macros xorg-server-dev xorgproto-dev"
+subpackages="$pkgname-doc"
+source="https://www.X.Org/releases/individual/driver/xf86-video-siliconmotion-$pkgver.tar.xz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="d8bb90e636598ed20a32bdc049fe42420d9e6093429f09c3a886a7e78d3813c8533abf67c4fed084be97dd7553a1934c49aa9f94d1083dfa64ab36867ae55fca xf86-video-siliconmotion-1.7.10.tar.xz"
diff --git a/user/xf86-video-sis/APKBUILD b/user/xf86-video-sis/APKBUILD
new file mode 100644
index 000000000..60f1503f0
--- /dev/null
+++ b/user/xf86-video-sis/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xf86-video-sis
+pkgver=0.12.0
+pkgrel=0
+pkgdesc="X.Org driver for SiS video cards"
+url="https://www.X.Org/"
+arch="all"
+license="X11"
+depends=""
+makedepends="libdrm-dev util-macros xorg-server-dev xorgproto-dev"
+subpackages="$pkgname-doc"
+source="https://www.X.Org/releases/individual/driver/xf86-video-sis-$pkgver.tar.bz2"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="5aa101e5217f15667f2c94f7a76f4afcf47717b61f5d206ce65efe35dc3f674ca294f98ca8586971c6467f31decdd94d8255ebfc7dc220fac0179afc61995952 xf86-video-sis-0.12.0.tar.bz2"
diff --git a/user/xf86-video-sisusb/APKBUILD b/user/xf86-video-sisusb/APKBUILD
new file mode 100644
index 000000000..0e0707aa0
--- /dev/null
+++ b/user/xf86-video-sisusb/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xf86-video-sisusb
+pkgver=0.9.7
+pkgrel=0
+pkgdesc="X.Org driver for SiS USB-based video cards"
+url="https://www.X.Org/"
+arch="all"
+license="X11"
+depends=""
+makedepends="util-macros xorg-server-dev xorgproto-dev"
+subpackages="$pkgname-doc"
+source="https://www.X.Org/releases/individual/driver/xf86-video-sisusb-$pkgver.tar.bz2"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="6edaf54bad80a261fa22606cad6619992e04560e132b3e68be30c80ebf2e599bc157118e725f67c5d96adc09ed036cc0c78ae0e0ce926708726f953a2fc34f02 xf86-video-sisusb-0.9.7.tar.bz2"
diff --git a/user/xf86-video-sunffb/APKBUILD b/user/xf86-video-sunffb/APKBUILD
new file mode 100644
index 000000000..98d5bec50
--- /dev/null
+++ b/user/xf86-video-sunffb/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xf86-video-sunffb
+pkgver=1.2.3
+pkgrel=0
+pkgdesc="X.Org driver for Sun framebuffers"
+url="https://www.X.Org/"
+arch="all"
+license="X11"
+depends=""
+makedepends="util-macros xorg-server-dev xorgproto-dev"
+subpackages="$pkgname-doc"
+source="https://www.X.Org/releases/individual/driver/xf86-video-sunffb-$pkgver.tar.xz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="114f46c284278aa4683cd057015f66634992dc9e104ccb3a0f4f070c10cb7b2e1c656657e9aebaa8dbb9ab3391b2928ec673757ecaae00be8da0a62ee4a86166 xf86-video-sunffb-1.2.3.tar.xz"
diff --git a/user/xf86-video-sunleo/APKBUILD b/user/xf86-video-sunleo/APKBUILD
new file mode 100644
index 000000000..b77dbc884
--- /dev/null
+++ b/user/xf86-video-sunleo/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xf86-video-sunleo
+pkgver=1.2.3
+pkgrel=0
+pkgdesc="X.Org driver for the Sun LEO 3D accelerator"
+url="https://www.X.Org/"
+arch="all"
+license="X11"
+depends=""
+makedepends="util-macros xorg-server-dev xorgproto-dev"
+subpackages="$pkgname-doc"
+source="https://www.X.Org/releases/individual/driver/xf86-video-sunleo-$pkgver.tar.xz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="9ba8da706e77ed781ed7a59aae6152609c9f3dcad74c5b1b5b40d82b75b67b8a252beb175c7b4449d18d0d77694b17a1adfa17f96d9d61d79f336bc49f19e06c xf86-video-sunleo-1.2.3.tar.xz"
diff --git a/user/xf86-video-tdfx/APKBUILD b/user/xf86-video-tdfx/APKBUILD
index 7f8252934..67a98da9c 100644
--- a/user/xf86-video-tdfx/APKBUILD
+++ b/user/xf86-video-tdfx/APKBUILD
@@ -8,7 +8,7 @@ url="https://www.X.Org/"
arch="all"
license="MIT"
depends=""
-makedepends="util-macros xorgproto-dev xorg-server-dev"
+makedepends="libdrm-dev util-macros xorgproto-dev xorg-server-dev"
subpackages="$pkgname-doc"
source="https://www.X.Org/releases/individual/driver/xf86-video-tdfx-$pkgver.tar.bz2"
diff --git a/user/xf86-video-trident/APKBUILD b/user/xf86-video-trident/APKBUILD
new file mode 100644
index 000000000..82c0bfe8e
--- /dev/null
+++ b/user/xf86-video-trident/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xf86-video-trident
+pkgver=1.4.0
+pkgrel=0
+pkgdesc="X.Org driver for Trident video cards"
+url="https://www.X.Org/"
+arch="all"
+license="X11"
+depends=""
+makedepends="util-macros xorg-server-dev xorgproto-dev"
+subpackages="$pkgname-doc"
+source="https://www.X.Org/releases/individual/driver/xf86-video-trident-$pkgver.tar.xz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="86f349ccfcf7c704e77a95882f63ac92f55819a3a00388f294777762fed04dde2197dd6124cded9e787af1982fecc43ad4d0af34307845e616a73d5a2ba750b9 xf86-video-trident-1.4.0.tar.xz"
diff --git a/user/xf86-video-v4l/APKBUILD b/user/xf86-video-v4l/APKBUILD
new file mode 100644
index 000000000..2437720a1
--- /dev/null
+++ b/user/xf86-video-v4l/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xf86-video-v4l
+pkgver=0.3.0
+pkgrel=0
+pkgdesc="X.Org driver for Video4Linux devices"
+url="https://www.X.Org/"
+arch="all"
+license="X11"
+depends=""
+makedepends="util-macros xorg-server-dev xorgproto-dev"
+subpackages="$pkgname-doc"
+source="https://www.X.Org/releases/individual/driver/xf86-video-v4l-$pkgver.tar.bz2"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="ec39b2fa70143b8662c3bd8ec094afdfa245687072d19164eb6b6c3e96aaf39a4d7708af60be975fcd07927cc9055812a67abb611a98cd27b3d548d8c2249955 xf86-video-v4l-0.3.0.tar.bz2"
diff --git a/user/xf86-video-vboxvideo/APKBUILD b/user/xf86-video-vboxvideo/APKBUILD
new file mode 100644
index 000000000..1fdaf50e2
--- /dev/null
+++ b/user/xf86-video-vboxvideo/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xf86-video-vboxvideo
+pkgver=1.0.1
+pkgrel=0
+pkgdesc="X.Org driver for the VirtualBox video adaptor"
+url="https://www.X.Org/"
+arch="i528 pmmx x86 x86_64"
+license="X11"
+depends=""
+makedepends="util-macros xorg-server-dev xorgproto-dev"
+subpackages="$pkgname-doc"
+source="https://www.X.Org/releases/individual/driver/xf86-video-vboxvideo-$pkgver.tar.xz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="a0428e81e2861d59d0cc0e75fee14ba320322f057257568e10eb6347a55d85bcc1ba8973e5a2dfda7f5f24bbefefad7f7a555d4af2823a7b0ccad2c18105139c xf86-video-vboxvideo-1.0.1.tar.xz"
diff --git a/user/xf86-video-vesa/APKBUILD b/user/xf86-video-vesa/APKBUILD
new file mode 100644
index 000000000..ad4440802
--- /dev/null
+++ b/user/xf86-video-vesa/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xf86-video-vesa
+pkgver=2.6.0
+pkgrel=0
+pkgdesc="X.Org driver for VESA-compatible video adaptors"
+url="https://www.X.Org/"
+arch="all"
+license="X11"
+depends=""
+makedepends="util-macros xorg-server-dev xorgproto-dev"
+subpackages="$pkgname-doc"
+source="https://www.X.Org/releases/individual/driver/$pkgname-$pkgver.tar.xz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="494e117c1e6e0ce4c66ac7798de54667862c62605bfd76dd9373447d40dcd0521100810c9285cbe9c159440e217954c0cad6d5219c5894e075509c7c0bc353c7 xf86-video-vesa-2.6.0.tar.xz"
diff --git a/user/xf86-video-vmware/APKBUILD b/user/xf86-video-vmware/APKBUILD
new file mode 100644
index 000000000..a4c0b399a
--- /dev/null
+++ b/user/xf86-video-vmware/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xf86-video-vmware
+pkgver=13.4.0
+pkgrel=0
+pkgdesc="X.Org driver for VMware's SVGA adaptor"
+url="https://www.X.Org/"
+# Requires kernel interfaces unavailable on ARM.
+arch="all !aarch64 !aarch64_be !armel !armeb !armhf !armv7"
+license="X11"
+depends=""
+makedepends="eudev-dev libxext-dev util-macros xorg-server-dev xorgproto-dev"
+subpackages="$pkgname-doc"
+source="https://www.X.Org/releases/individual/driver/xf86-video-vmware-$pkgver.tar.xz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="7cacde21a490501dd9c2e9121040274c1f6ef64e6dc0ef49946b400f6297fab73a6e9548e45fe8930cee9028e65e45aaff9ba489dd69ac75a5133114726bf55d xf86-video-vmware-13.4.0.tar.xz"
diff --git a/user/xf86-video-vmware/fix-stdbool-includes.patch b/user/xf86-video-vmware/fix-stdbool-includes.patch
new file mode 100644
index 000000000..27a8e7592
--- /dev/null
+++ b/user/xf86-video-vmware/fix-stdbool-includes.patch
@@ -0,0 +1,60 @@
+From 50ab008cb965dc9e47e0a84a1950e2485bbd3c44 Mon Sep 17 00:00:00 2001
+From: Martin Krastev <krastevm@vmware.com>
+Date: Tue, 30 Nov 2021 11:47:39 -0800
+Subject: [PATCH] vmwgfx: Change header inclusion order to avoid xorg headers
+ catching stdbool.h
+
+libdrm commit e641e2a632d779f638ac2ba983b9fceb20b3fac4 added
+stdbool.h to the library headers which conflicts with xorg headers.
+
+Signed-off-by: Martin Krastev <krastevm@vmware.com>
+Reviewed-by: Zack Rusin <zackr@vmware.com>
+Signed-off-by: Zack Rusin <zackr@vmware.com>
+---
+ vmwgfx/vmwgfx_driver.h | 6 +++---
+ vmwgfx/vmwgfx_saa.c | 2 +-
+ 2 files changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/vmwgfx/vmwgfx_driver.h b/vmwgfx/vmwgfx_driver.h
+index fa8e308..467fb21 100644
+--- a/vmwgfx/vmwgfx_driver.h
++++ b/vmwgfx/vmwgfx_driver.h
+@@ -36,15 +36,15 @@
+ #include <stddef.h>
+ #include <stdint.h>
+ #include <errno.h>
+-#include <drm.h>
+-#include <xf86drm.h>
+-#include <xf86drmMode.h>
+ #include <xorg-server.h>
+ #include <xf86.h>
+ #include <xf86Crtc.h>
+ #include <xf86xv.h>
+ #include <xa_tracker.h>
+ #include <xf86Module.h>
++#include <drm.h>
++#include <xf86drm.h>
++#include <xf86drmMode.h>
+
+ #include "../src/compat-api.h"
+ #ifdef DRI2
+diff --git a/vmwgfx/vmwgfx_saa.c b/vmwgfx/vmwgfx_saa.c
+index 0881e2f..457f397 100644
+--- a/vmwgfx/vmwgfx_saa.c
++++ b/vmwgfx/vmwgfx_saa.c
+@@ -29,11 +29,11 @@
+ #include <xorgVersion.h>
+ #include <mi.h>
+ #include <fb.h>
+-#include <xf86drmMode.h>
+ #include <xa_context.h>
+ #include "vmwgfx_saa.h"
+ #include "vmwgfx_drmi.h"
+ #include "vmwgfx_saa_priv.h"
++#include <xf86drmMode.h>
+
+ /*
+ * Damage to be added as soon as we attach storage to the pixmap.
+--
+GitLab
+
diff --git a/user/xfburn/APKBUILD b/user/xfburn/APKBUILD
index e9e904448..53d876d1a 100644
--- a/user/xfburn/APKBUILD
+++ b/user/xfburn/APKBUILD
@@ -1,21 +1,20 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfburn
-pkgver=0.5.5
+pkgver=0.7.2
pkgrel=0
pkgdesc="CD burning utility for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
-makedepends="intltool libburn-dev libisofs-dev gtk+3.0-dev gtk+2.0-dev
+depends=""
+makedepends="bash intltool libburn-dev libisofs-dev gtk+3.0-dev gtk+2.0-dev
libxfce4ui-dev exo-dev libgudev-dev gstreamer-dev gst-plugins-base-dev"
subpackages="$pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/apps/xfburn/0.5/xfburn-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/apps/xfburn/${pkgver%.*}/xfburn-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" bash ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="37574aa7dcec65c26a8fd5019c3776196763fa1ebb0f531002f5bcb72a6eb0ec19ed994dd14726988766d890ef257c39c26e64ca3f5944386c03d9b54c26a90a xfburn-0.5.5.tar.bz2"
+sha512sums="7966fc32a71b029f3e511565bcb751b06a9b87c2b434c9d546cccc1ba43479b1d1b17c9afe743babd08192e39907e4967e755a7b5fd72df3906645cce50db9a9 xfburn-0.7.2.tar.bz2"
diff --git a/user/xfce-desktop/APKBUILD b/user/xfce-desktop/APKBUILD
index 7044a7dd7..3c74251c8 100644
--- a/user/xfce-desktop/APKBUILD
+++ b/user/xfce-desktop/APKBUILD
@@ -1,28 +1,25 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce-desktop
-pkgver=4.13
+pkgver=4.20
pkgrel=0
arch="noarch"
pkgdesc="Complete XFCE desktop environment"
url="https://xfce.org"
+options="!check" # meta package, no tests needed.
license="NCSA"
-options="!check" # meta package, no tests needed.
-depends="xfburn xfce4-power-manager xfce4-settings xfce4-volumed-pulse
- xfdesktop xfce4-appfinder xfce4-panel xfce4-screenshooter
- xfce4-taskmanager xfconf xfce4-dict xfce4-panel-profiles
- xfce4-session xfdashboard xfmpc xfwm4 xfce4-terminal
- xfce4-notifyd"
+depends="catfish gigolo exo mousepad orage parole ristretto thunar
+ thunar-volman thunar-archive-plugin tumbler xfburn xfce-plugins
+ xfce4-power-manager xfce4-settings xfce4-volumed-pulse xfdesktop
+ xfce4-appfinder xfce4-panel xfce4-screenshooter xfce4-taskmanager
+ xfconf xfce4-dict xfce4-panel-profiles xfce4-session xfdashboard xfmpc
+ xfwm4 xfce4-terminal xfce4-notifyd adelie-fonts"
+makedepends=""
source="org.adelie-linux.about-xfce.desktop"
-builddir="$srcdir/$pkgname-$pkgver"
-
-build() {
- cd "$srcdir"
-}
package() {
- cd "$srcdir"
install -D -m644 "$srcdir"/org.adelie-linux.about-xfce.desktop \
"$pkgdir"/usr/share/applications/org.adelie-linux.about-xfce.desktop
}
+
sha512sums="362793e478e3fb0c6d7dca1f52f582a641ff4582ad0c0d6d1cbe28f1255fc6cd7918ea6b24a5d905a59275f67c44703bf8c78580642c4e0147b539842a6f372f org.adelie-linux.about-xfce.desktop"
diff --git a/user/xfce-plugins/APKBUILD b/user/xfce-plugins/APKBUILD
index 8b9396447..f21472b7d 100644
--- a/user/xfce-plugins/APKBUILD
+++ b/user/xfce-plugins/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce-plugins
pkgver=0.1
pkgrel=0
@@ -8,17 +8,15 @@ url="https://xfce.org"
arch="noarch"
options="!check" # no tests
license="MIT"
-depends="xfce4-battery-plugin xfce4-diskperf-plugin xfce4-netload-plugin
- xfce4-systemload-plugin xfce4-verve-plugin xfce4-clipman-plugin
- xfce4-indicator-plugin xfce4-pulseaudio-plugin xfce4-time-out-plugin
- xfce4-whiskermenu-plugin xfce4-cpugraph-plugin xfce4-sensors-plugin
- xfce4-timer-plugin"
+depends="xfce4-battery-plugin xfce4-clipman-plugin xfce4-cpugraph-plugin
+ xfce4-diskperf-plugin xfce4-docklike-plugin xfce4-genmon-plugin
+ xfce4-indicator-plugin xfce4-mailwatch-plugin xfce4-netload-plugin
+ xfce4-notes-plugin xfce4-pulseaudio-plugin xfce4-sensors-plugin
+ xfce4-systemload-plugin xfce4-time-out-plugin xfce4-timer-plugin
+ xfce4-verve-plugin xfce4-whiskermenu-plugin"
+makedepends=""
source="dummy"
-build() {
- cd "$srcdir"
-}
-
package() {
mkdir -p "$pkgdir"
}
diff --git a/user/xfce4-appfinder/APKBUILD b/user/xfce4-appfinder/APKBUILD
index 575436450..34126ef9e 100644
--- a/user/xfce4-appfinder/APKBUILD
+++ b/user/xfce4-appfinder/APKBUILD
@@ -1,20 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-appfinder
-pkgver=4.13.2
+pkgver=4.20.0
pkgrel=0
pkgdesc="An application finder for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
-makedepends="intltool gtk+3.0-dev libxfce4util-dev libxfce4ui-dev garcon-dev"
+depends=""
+makedepends="intltool gtk+3.0-dev libxfce4util-dev libxfce4ui-dev garcon-dev>=${pkgver%.*}"
subpackages="$pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/xfce/xfce4-appfinder/4.13/xfce4-appfinder-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/xfce/xfce4-appfinder/${pkgver%.*}/xfce4-appfinder-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="96ac782c785649ddf75f8659f9cf10f42c37bab647824f0c76714baca0b61904fa8ba6d23dc1574aae5fdf2538201936d26b42ea6c0f5d5f0f9d71c8ba0a51b8 xfce4-appfinder-4.13.2.tar.bz2"
+sha512sums="eae593d075cfe091680fc0093236e95172fddab88a251765e1c6574688a5456fb03f3547eede1d2c6766f8b05b18f0bcbeae607e61d97ac92a927dbe2283790f xfce4-appfinder-4.20.0.tar.bz2"
diff --git a/user/xfce4-battery-plugin/APKBUILD b/user/xfce4-battery-plugin/APKBUILD
index 9cb4c146c..d5b9ac54a 100644
--- a/user/xfce4-battery-plugin/APKBUILD
+++ b/user/xfce4-battery-plugin/APKBUILD
@@ -1,20 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-battery-plugin
-pkgver=1.1.2
+pkgver=1.1.5
pkgrel=0
pkgdesc="Battery monitor plugin for the XFCE panel"
url="https://xfce.org"
arch="all"
license="GPL-2.0+ AND LGPL-2.0+"
+depends=""
makedepends="intltool libxfce4ui-dev xfce4-panel-dev"
subpackages="$pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/panel-plugins/xfce4-battery-plugin/1.1/xfce4-battery-plugin-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/panel-plugins/xfce4-battery-plugin/1.1/xfce4-battery-plugin-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="51778d00c34c41bdad234893c4a91f3bd562481df343d811e266719cb7903f60e1d56ba39f64f14ab882ce6419d0f0f4010aa112e9d0059133e7e4d30470f491 xfce4-battery-plugin-1.1.2.tar.bz2"
+sha512sums="e6e09a4839911dda50fe1fed100d5fd46f6da47e5042529c2cbffa5498babc838bed56178baa23d2162b70cd6e5f005276d4b9f1fc44a1891737c94c2bf525d0 xfce4-battery-plugin-1.1.5.tar.bz2"
diff --git a/user/xfce4-clipman-plugin/APKBUILD b/user/xfce4-clipman-plugin/APKBUILD
index e96f04999..ecf17f84c 100644
--- a/user/xfce4-clipman-plugin/APKBUILD
+++ b/user/xfce4-clipman-plugin/APKBUILD
@@ -1,20 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-clipman-plugin
-pkgver=1.4.3
+pkgver=1.6.6
pkgrel=0
pkgdesc="Clipboard management plugin for the XFCE panel"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
-makedepends="intltool libxfce4ui-dev xfce4-panel-dev libqrencode-dev"
+depends=""
+makedepends="intltool libxfce4ui-dev xfce4-panel-dev>=${pkgver%.*} libqrencode-dev"
subpackages="$pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/panel-plugins/xfce4-clipman-plugin/1.4/xfce4-clipman-plugin-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/panel-plugins/xfce4-clipman-plugin/${pkgver%.*}/xfce4-clipman-plugin-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="28bc8e2be8dd3eac13a7988b68933ce84dd8cc756f0a19636cd5850d6e36714a73ad9650a28ebfc54d9ad3adb23c242abf89806124b4e00fe7d1701be1b52414 xfce4-clipman-plugin-1.4.3.tar.bz2"
+sha512sums="4f6bb8f56111903af576d06ce5883e8ada2cb3ea377e09a79d2c5fb6f37743dac621649465a573a8a29a1fb884e7608a53dd6486eada23c7f8ee6401237988af xfce4-clipman-plugin-1.6.6.tar.bz2"
diff --git a/user/xfce4-cpugraph-plugin/APKBUILD b/user/xfce4-cpugraph-plugin/APKBUILD
index 3aef0d879..16e92c6af 100644
--- a/user/xfce4-cpugraph-plugin/APKBUILD
+++ b/user/xfce4-cpugraph-plugin/APKBUILD
@@ -1,27 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-cpugraph-plugin
-pkgver=1.0.5
+pkgver=1.2.10
pkgrel=0
pkgdesc="Graphical CPU monitor plugin for the XFCE panel"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
-makedepends="intltool libxfce4ui-dev xfce4-panel-dev"
+depends=""
+makedepends="intltool libxfce4ui-dev xfce4-panel-dev>=${pkgver%.*}"
subpackages="$pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/panel-plugins/xfce4-cpugraph-plugin/1.0/xfce4-cpugraph-plugin-$pkgver.tar.bz2"
-
-prepare() {
- cd "$builddir"
- default_prepare
- chmod a+w config.sub
- update_config_sub
-}
+source="https://archive.xfce.org/src/panel-plugins/xfce4-cpugraph-plugin/${pkgver%.*}/xfce4-cpugraph-plugin-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -32,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3d1246958dd30638104f14a8b0078e25c05b67b42da953a97cb51d2b04e70d3f1da9d42ca4f4575b7114bce5abc4cb94d598737631536c0575b55d9a391e210a xfce4-cpugraph-plugin-1.0.5.tar.bz2"
+sha512sums="414c2a5da9576d2ed1f5478a07ff5c51c45eaa0a8432a31b6fb2408b81f5ab4485e3b10486af26cf33a18d23e2dc3afe21bf88630e4db91adcfa3e0f80468cf3 xfce4-cpugraph-plugin-1.2.10.tar.bz2"
diff --git a/user/xfce4-dev-tools/APKBUILD b/user/xfce4-dev-tools/APKBUILD
new file mode 100644
index 000000000..f474b5120
--- /dev/null
+++ b/user/xfce4-dev-tools/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=xfce4-dev-tools
+pkgver=4.20.0
+pkgrel=0
+pkgdesc="Developer tools for XFCE"
+url="https://xfce.org"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="glib-dev libxslt-dev meson"
+subpackages="$pkgname-dev $pkgname-doc"
+source="https://archive.xfce.org/src/xfce/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.bz2"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="2ee8d0e4512c326ad404310f15081a8c6eec026634bcc2e76873cecc5b4356c3425d883c07f05e5a76a500c135d62809e6323f318ac6fc33d16023a9c5bd5441 xfce4-dev-tools-4.20.0.tar.bz2"
diff --git a/user/xfce4-dict/APKBUILD b/user/xfce4-dict/APKBUILD
index c85e672d3..32824a9f9 100644
--- a/user/xfce4-dict/APKBUILD
+++ b/user/xfce4-dict/APKBUILD
@@ -1,18 +1,18 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-dict
-pkgver=0.8.2
+pkgver=0.8.8
pkgrel=0
pkgdesc="Dictionary application for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
+depends=""
makedepends="intltool glib-dev gtk+3.0-dev libxfce4ui-dev xfce4-panel-dev"
-subpackages="$pkgname-doc"
-source="http://archive.xfce.org/src/apps/xfce4-dict/0.8/xfce4-dict-$pkgver.tar.bz2"
+subpackages="$pkgname-doc $pkgname-lang"
+source="http://archive.xfce.org/src/apps/xfce4-dict/${pkgver%.*}/xfce4-dict-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -24,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b22edae6adc9e965d8d59156d7b241e6454be9af1c7cd2b6264987dfe9411293987065b179a362651ccfc1f0423a41672803467e6df5307b998c5c359e487b5b xfce4-dict-0.8.2.tar.bz2"
+sha512sums="db1919f3d29245cc02ea8e4f898e8d389c426a574f6227bcb0504f2f4506220617bf6ac4b8544e85e00c8d7818ad06a61e2daaea1883a6badf9b394d2b481398 xfce4-dict-0.8.8.tar.bz2"
diff --git a/user/xfce4-diskperf-plugin/APKBUILD b/user/xfce4-diskperf-plugin/APKBUILD
index a1bac7cb1..c3dc0dd17 100644
--- a/user/xfce4-diskperf-plugin/APKBUILD
+++ b/user/xfce4-diskperf-plugin/APKBUILD
@@ -1,20 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-diskperf-plugin
-pkgver=2.6.1
+pkgver=2.7.0
pkgrel=0
pkgdesc="Disk performance monitor plugin for the XFCE panel"
url="https://xfce.org"
arch="all"
license="BSD-2-Clause AND GPL-2.0+"
-makedepends="intltool libxfce4ui-dev xfce4-panel-dev"
+depends=""
+makedepends="intltool libxfce4ui-dev xfce4-panel-dev>=${pkgver%.*}"
subpackages="$pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/panel-plugins/xfce4-diskperf-plugin/2.6/xfce4-diskperf-plugin-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/panel-plugins/xfce4-diskperf-plugin/${pkgver%.*}/xfce4-diskperf-plugin-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="ba01ec30e31db0c936b2b18df7c68883f89c6c4d5b82392759c25ef41fa89de37e2e635abd169745a9790d81af5b327768eb62ec3cc369f85e2da0bedc4c7cea xfce4-diskperf-plugin-2.6.1.tar.bz2"
+sha512sums="8d9dde5534ff2ff99955e7d19b9fd1a0ca6e481f978462578c246c30febc9c2d16c97362014c05b53bd2e895199dbfaa2bdee459b84de3df94f86791d9b07b4f xfce4-diskperf-plugin-2.7.0.tar.bz2"
diff --git a/user/xfce4-docklike-plugin/APKBUILD b/user/xfce4-docklike-plugin/APKBUILD
new file mode 100644
index 000000000..7d68c8b46
--- /dev/null
+++ b/user/xfce4-docklike-plugin/APKBUILD
@@ -0,0 +1,36 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=xfce4-docklike-plugin
+pkgver=0.4.2
+pkgrel=0
+pkgdesc="A modern, minimalist taskbar for XFCE"
+url="https://www.xfce.org"
+arch="all"
+license="GPL-3.0-only"
+depends=""
+makedepends="gtk+3.0-dev intltool libice-dev libwnck-dev libxfce4ui-dev xfce4-panel-dev"
+subpackages="$pkgname-lang"
+source="https://archive.xfce.org/src/panel-plugins/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.bz2
+ $pkgname-0.4.0-fix-missing-include.patch"
+
+build() {
+ LIBS="-lintl" ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="8e96abbde0f9f81bb4797302aba3a711307ab46c832aac92351e038543e078bbf42f86785ee06c28c9d38dff0655ee2933247e9086ba0925f5aa05416b3ef708 xfce4-docklike-plugin-0.4.2.tar.bz2
+6613eb5214bd88319f0bd9414cc6378647d7dd5b7f8b5624e72d8dc1ea8a7818033a3a4c9583dbe296398eb40ce1f093883fe74e31fffdfccfd2271771540da4 xfce4-docklike-plugin-0.4.0-fix-missing-include.patch"
diff --git a/user/xfce4-docklike-plugin/xfce4-docklike-plugin-0.4.0-fix-missing-include.patch b/user/xfce4-docklike-plugin/xfce4-docklike-plugin-0.4.0-fix-missing-include.patch
new file mode 100644
index 000000000..8437b4947
--- /dev/null
+++ b/user/xfce4-docklike-plugin/xfce4-docklike-plugin-0.4.0-fix-missing-include.patch
@@ -0,0 +1,12 @@
+diff -Nurd xfce4-docklike-plugin-0.4.0/src/Helpers.hpp xfce4-docklike-plugin-0.4.0.new/src/Helpers.hpp
+--- xfce4-docklike-plugin-0.4.0/src/Helpers.hpp 2021-07-27 03:48:58.000000000 +0000
++++ xfce4-docklike-plugin-0.4.0.new/src/Helpers.hpp 2022-06-13 23:22:13.807662271 +0000
+@@ -19,6 +19,8 @@
+ #include <string>
+ #include <vector>
+
++#include <libgen.h>
++
+ namespace Help
+ {
+ namespace String
diff --git a/user/xfce4-genmon-plugin/APKBUILD b/user/xfce4-genmon-plugin/APKBUILD
new file mode 100644
index 000000000..752150d42
--- /dev/null
+++ b/user/xfce4-genmon-plugin/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=xfce4-genmon-plugin
+pkgver=4.2.0
+pkgrel=0
+pkgdesc="Cyclically run a script and display the results"
+url="https://www.xfce.org"
+arch="all"
+license="LGPL-2.1+"
+depends=""
+makedepends="intltool libxfce4ui-dev xfce4-panel-dev"
+subpackages="$pkgname-lang"
+source="https://archive.xfce.org/src/panel-plugins/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.bz2"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="e0166e879244d039097f46526782f2232bea6a94eb260f2558a6daf62e82a5aaa68a44749eb95d3d7c212155e36887fca8b41fb558427a1812c614569b4c11b3 xfce4-genmon-plugin-4.2.0.tar.bz2"
diff --git a/user/xfce4-indicator-plugin/APKBUILD b/user/xfce4-indicator-plugin/APKBUILD
index db59691a5..252c21e31 100644
--- a/user/xfce4-indicator-plugin/APKBUILD
+++ b/user/xfce4-indicator-plugin/APKBUILD
@@ -1,20 +1,26 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-indicator-plugin
-pkgver=2.3.4
+pkgver=2.4.2
pkgrel=0
pkgdesc="Application information plugin for the XFCE panel"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
-makedepends="intltool libxfce4ui-dev xfce4-panel-dev libindicator-dev ido-dev"
+depends=""
+makedepends="autoconf automake libtool intltool libxfce4ui-dev
+ xfce4-panel-dev>=${pkgver%.*} xfce4-dev-tools-dev
+ libayatana-indicator-dev ido-dev"
subpackages="$pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/panel-plugins/xfce4-indicator-plugin/2.3/xfce4-indicator-plugin-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/panel-plugins/xfce4-indicator-plugin/${pkgver%.*}/xfce4-indicator-plugin-$pkgver.tar.bz2"
+
+prepare() {
+ default_prepare
+ autoreconf -vif
+}
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -25,13 +31,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b1fd065c8221ae91d95b540411317cd67bb9b26d46c7cfe85ec90d7ccdcd11e7b8832008c8b6fb5c257e0b1a08360f00ad9da5520108024cc36c63d865ffdca6 xfce4-indicator-plugin-2.3.4.tar.bz2"
+sha512sums="ed778cfb2daa55edded450114b9ba83ca6050a549572d6f09294b9e89cc927f8abc79deb008f8ff6933dab35a16f5ba819b14d1d7f6b7464e1cd809aabaaad6b xfce4-indicator-plugin-2.4.2.tar.bz2"
diff --git a/user/xfce4-mailwatch-plugin/APKBUILD b/user/xfce4-mailwatch-plugin/APKBUILD
new file mode 100644
index 000000000..f085a2659
--- /dev/null
+++ b/user/xfce4-mailwatch-plugin/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=xfce4-mailwatch-plugin
+pkgver=1.3.1
+pkgrel=0
+pkgdesc="XFCE panel plugin for monitoring mailboxes"
+url="https://www.xfce.org"
+arch="all"
+license="GPL-2.0-only AND (GPL-2.0-only OR LGPL-2.0+)"
+depends=""
+makedepends="exo-dev gnutls-dev intltool libxfce4ui-dev xfce4-panel-dev"
+subpackages="$pkgname-lang"
+source="https://archive.xfce.org/src/panel-plugins/xfce4-mailwatch-plugin/${pkgver%.*}/xfce4-mailwatch-plugin-$pkgver.tar.bz2"
+
+build() {
+ LIBS="-lintl" ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="cc84c0511fff983283f6af132ff224f62373a1bb608f14b332a75f259f7842491b09f7d9f9d833cb31f81eb392a1b55fe4bf6da8a15b4c62abd2e9640392fb1d xfce4-mailwatch-plugin-1.3.1.tar.bz2"
diff --git a/user/xfce4-netload-plugin/APKBUILD b/user/xfce4-netload-plugin/APKBUILD
index 139ec29b5..96275d6a9 100644
--- a/user/xfce4-netload-plugin/APKBUILD
+++ b/user/xfce4-netload-plugin/APKBUILD
@@ -1,21 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-netload-plugin
-pkgver=1.3.1
+pkgver=1.4.1
pkgrel=0
pkgdesc="Network monitor plugin for the XFCE panel"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
-makedepends="intltool libxfce4ui-dev xfce4-panel-dev"
+depends=""
+makedepends="intltool libxfce4ui-dev xfce4-panel-dev>=${pkgver%.*}"
subpackages="$pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/panel-plugins/xfce4-netload-plugin/1.3/xfce4-netload-plugin-$pkgver.tar.bz2
- no-sysctl.patch"
+source="https://archive.xfce.org/src/panel-plugins/xfce4-netload-plugin/${pkgver%.*}/xfce4-netload-plugin-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -26,14 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="34144bf2d95f71276f8b5f4cf417d97d380233805c6fec1b7c559fee5b11468a421d3691230e01d89b40289d5ab22a472dcbef2a7ee0854abd7213e0ef0a3ef9 xfce4-netload-plugin-1.3.1.tar.bz2
-ca7f5cb8282de4b46a7906570becbab6caa9670d91413945b92d849a5f1127befaf6274031637cde23731f4d78b9145d5973a1406d5c49ba4a0f7fe21ad2a6fd no-sysctl.patch"
+sha512sums="b860ab96e9a78099d0250f8bc5fe7a2e9fadaccf5edf6f67fa02a4c65ef0f1948fa8409506db873ff6a6fbfeb2df0c59fa1979b01ba6df5df6b645f4c842eeb9 xfce4-netload-plugin-1.4.1.tar.bz2"
diff --git a/user/xfce4-netload-plugin/no-sysctl.patch b/user/xfce4-netload-plugin/no-sysctl.patch
deleted file mode 100644
index 5bdab0807..000000000
--- a/user/xfce4-netload-plugin/no-sysctl.patch
+++ /dev/null
@@ -1,11 +0,0 @@
-diff -Nurd xfce4-netload-plugin-1.3.1/panel-plugin/os.h xfce4-netload-plugin-1.3.1.new/panel-plugin/os.h
---- xfce4-netload-plugin-1.3.1/panel-plugin/os.h 2014-10-26 10:26:36.000000000 -0500
-+++ xfce4-netload-plugin-1.3.1.new/panel-plugin/os.h 2018-09-08 18:22:36.103957974 -0500
-@@ -170,7 +170,6 @@
- #elif __linux__ /* L I N U X */
- # include <stdio.h>
- # include <sys/param.h>
--# include <sys/sysctl.h>
- # include <stdlib.h>
- # include <stdarg.h>
- # include <unistd.h>
diff --git a/user/xfce4-notes-plugin/APKBUILD b/user/xfce4-notes-plugin/APKBUILD
new file mode 100644
index 000000000..ea9531c6f
--- /dev/null
+++ b/user/xfce4-notes-plugin/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=xfce4-notes-plugin
+pkgver=1.11.0
+pkgrel=0
+pkgdesc="XFCE panel plugin for sticky notes"
+url="https://www.xfce.org"
+arch="all"
+license="GPL-2.0+"
+depends=""
+makedepends="intltool libxfce4ui-dev xfce4-panel-dev"
+subpackages="$pkgname-lang"
+source="https://archive.xfce.org/src/panel-plugins/xfce4-notes-plugin/${pkgver%.*}/xfce4-notes-plugin-$pkgver.tar.bz2"
+
+build() {
+ LIBS="-lintl" ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="3644049bb2aa77bbed5b391f47d67dbf6528cb535448287a28a011d78a6fb31971a3556fe37ad380858d2b561ef67fee2bc93c4ed0c19c75c564d832cd4d47f1 xfce4-notes-plugin-1.11.0.tar.bz2"
diff --git a/user/xfce4-notifyd/APKBUILD b/user/xfce4-notifyd/APKBUILD
index 8f0240ab0..adf0a6f81 100644
--- a/user/xfce4-notifyd/APKBUILD
+++ b/user/xfce4-notifyd/APKBUILD
@@ -1,21 +1,21 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-notifyd
-pkgver=0.4.3
+pkgver=0.9.6
pkgrel=0
pkgdesc="Notification service for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-2.0-only AND GPL-2.0+"
-makedepends="intltool libice-dev gtk+3.0-dev libxfce4util-dev libxfce4ui-dev
- xfce4-panel-dev libnotify-dev dbus-glib-dev"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/apps/xfce4-notifyd/0.4/xfce4-notifyd-$pkgver.tar.bz2"
+depends=""
+makedepends="intltool gtk-layer-shell-dev gtk+3.0-dev libcanberra-dev
+ libice-dev libxfce4util-dev libxfce4ui-dev xfce4-panel-dev libnotify-dev
+ dbus-glib-dev sqlite-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-systemd"
+source="https://archive.xfce.org/src/apps/xfce4-notifyd/${pkgver%.*}/xfce4-notifyd-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- LIBS="-lX11" ./configure \
+ LIBS="-lintl -lX11" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -26,13 +26,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="eed16d863dddfe29ce6dd1e34260ae64f558bc5ffe5af837e293a9492b728a400338b950116fb934f0b3d0a76ed8fd280aacd075d44524be614bb27257b99a9e xfce4-notifyd-0.4.3.tar.bz2"
+sha512sums="deef625fdb7828ac25a3eeb2c5e5813f285310354b33a81e1c7943024d9dee9e9b5765f94f7e7ccedd1998dab77eb2c62a2803864d56aed6f831f08b910f0071 xfce4-notifyd-0.9.6.tar.bz2"
diff --git a/user/xfce4-panel-profiles/APKBUILD b/user/xfce4-panel-profiles/APKBUILD
index f30ebb39a..cf6742f78 100644
--- a/user/xfce4-panel-profiles/APKBUILD
+++ b/user/xfce4-panel-profiles/APKBUILD
@@ -1,7 +1,7 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-panel-profiles
-pkgver=1.0.8
+pkgver=1.0.14
pkgrel=0
pkgdesc="Application for managing XFCE panel layouts"
url="https://xfce.org"
@@ -11,23 +11,20 @@ license="GPL-3.0+"
depends="python3"
makedepends="intltool cmd:which"
subpackages="$pkgname-doc $pkgname-lang"
-source="http://archive.xfce.org/src/apps/xfce4-panel-profiles/1.0/xfce4-panel-profiles-$pkgver.tar.bz2"
-sha512sums="2d7980a79250414cc4611ccf573c2a3ee5eb510cf3ef6c32035ba23197eee1fded2e158cb50714dd935070916b07b3f33db02570f3d46a598144b4a2d3979ff4 xfce4-panel-profiles-1.0.8.tar.bz2"
+source="https://archive.xfce.org/src/apps/xfce4-panel-profiles/1.0/xfce4-panel-profiles-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--prefix=/usr
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
+sha512sums="e316e9d4f0d27b16ce83a50adfe1a3fe2102b7f5c3ed9e9ceebf5968e265064b4d4ade1e0dbd84180758a9c1fa72d8df1fb4d06a631d07956ea8add0f66da984 xfce4-panel-profiles-1.0.14.tar.bz2"
diff --git a/user/xfce4-panel/APKBUILD b/user/xfce4-panel/APKBUILD
index 4e70ac9d3..b622fc195 100644
--- a/user/xfce4-panel/APKBUILD
+++ b/user/xfce4-panel/APKBUILD
@@ -1,38 +1,39 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-panel
-pkgver=4.13.4
+pkgver=4.20.0
pkgrel=0
pkgdesc="Panel for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="LGPL-2.1+ AND GPL-2.0+"
-makedepends="intltool gtk+3.0-dev libice-dev libxfce4util-dev garcon-dev exo-dev
- libwnck-dev"
+depends=""
+makedepends="intltool gobject-introspection-dev gtk-doc gtk-layer-shell-dev
+ gtk+3.0-dev libdbusmenu-dev libice-dev libxfce4util-dev>=${pkgver%.*}
+ libxfce4windowing-dev>=${pkgver%.*} garcon-dev>=${pkgver%.*}
+ exo-dev>=${pkgver%.*} libwnck-dev wayland-protocols vala-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/xfce/xfce4-panel/4.13/xfce4-panel-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/xfce/xfce4-panel/${pkgver%.*}/xfce4-panel-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var
+ --localstatedir=/var \
+ --enable-dbusmenu-gtk3 \
+ --enable-gtk-doc
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="16a3680aa2ab7fa357ca9d477ea0e41ca159a2c626fe65454ccdca339bb501ff0979264f5a4ae4728e3c0efe24e193eb28e7b5d1e003fecad8ab36b8457203c8 xfce4-panel-4.13.4.tar.bz2"
+sha512sums="431ff1736a62bdee4a7a9a5e7b8aa9f0cf779ce5454503c33fc0ffb82b6cd4bbcbc5e1fc99c092e31f0f702f459cf31336eff914a41b618043f83d2a40c9b049 xfce4-panel-4.20.0.tar.bz2"
diff --git a/user/xfce4-power-manager/APKBUILD b/user/xfce4-power-manager/APKBUILD
index dc6232180..6efc54433 100644
--- a/user/xfce4-power-manager/APKBUILD
+++ b/user/xfce4-power-manager/APKBUILD
@@ -1,22 +1,20 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-power-manager
-pkgver=1.6.1
+pkgver=4.20.0
pkgrel=0
pkgdesc="Power management support for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
+depends=""
makedepends="intltool gtk+3.0-dev libxfce4ui-dev libice-dev libnotify-dev
- upower-dev xfce4-panel-dev"
+ polkit-dev upower-dev xfce4-panel-dev"
subpackages="$pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/xfce/xfce4-power-manager/1.6/xfce4-power-manager-$pkgver.tar.bz2"
-sha512sums="b81ce1b35892a6cd0b1d4fb590ccc25b906cde6f782de2fffbe78ea89e00df15e51ea1f47576c173b7512cd617f5142868fca8cf81519b6fe165a5ecc67a5478 xfce4-power-manager-1.6.1.tar.bz2"
+source="https://archive.xfce.org/src/xfce/xfce4-power-manager/${pkgver%.*}/xfce4-power-manager-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -27,12 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
+sha512sums="e61762b4ff374562fa3d70b1eb7c9928a1a7197df5b597763adf16435183fd693307267f37f0eb7dd08b573664a397d2fd22674b5db7e07ee9302089772ff6e7 xfce4-power-manager-4.20.0.tar.bz2"
diff --git a/user/xfce4-pulseaudio-plugin/APKBUILD b/user/xfce4-pulseaudio-plugin/APKBUILD
index 8a1e6cb34..afe52ae23 100644
--- a/user/xfce4-pulseaudio-plugin/APKBUILD
+++ b/user/xfce4-pulseaudio-plugin/APKBUILD
@@ -1,21 +1,20 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-pulseaudio-plugin
-pkgver=0.4.1
+pkgver=0.4.9
pkgrel=0
pkgdesc="Pulseaudio plugin for the XFCE panel"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
-makedepends="intltool libxfce4ui-dev xfce4-panel-dev pulseaudio-dev
- keybinder-3.0-dev libnotify-dev dbus-glib-dev"
+depends=""
+makedepends="dbus-glib-dev exo-dev intltool keybinder-3.0-dev libcanberra-dev
+ libnotify-dev libxfce4ui-dev pulseaudio-dev xfce4-panel-dev"
subpackages="$pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/panel-plugins/xfce4-pulseaudio-plugin/0.4/xfce4-pulseaudio-plugin-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/panel-plugins/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="e7b778c78ede9ad62afaa379941ce03636a79dd000e40e748079d3e0f3c71f2e68e32cf85e527be4e1192074652714db4b7c5707b727066198c2ea43184a71cc xfce4-pulseaudio-plugin-0.4.1.tar.bz2"
+sha512sums="7fa29e85146e8cbbd420aed11050924fbb9c1a93657da1a4d3e207f5a7cc7fc99acdc41b467420a8948535a7f45e2a8e6d63f79df3cef228ada810566f15c263 xfce4-pulseaudio-plugin-0.4.9.tar.bz2"
diff --git a/user/xfce4-screenshooter/APKBUILD b/user/xfce4-screenshooter/APKBUILD
index 1443db9dd..d1d14bc33 100644
--- a/user/xfce4-screenshooter/APKBUILD
+++ b/user/xfce4-screenshooter/APKBUILD
@@ -1,18 +1,18 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-screenshooter
-pkgver=1.9.5
+pkgver=1.11.1
pkgrel=0
pkgdesc="Screenshot tool for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
-makedepends="intltool libxfce4ui-dev xfce4-panel-dev libsoup-dev exo-dev"
-subpackages="$pkgname-doc"
-source="http://archive.xfce.org/src/apps/xfce4-screenshooter/1.9/xfce4-screenshooter-$pkgver.tar.bz2"
+depends=""
+makedepends="intltool libxfce4ui-dev xfce4-panel-dev libsoup-dev exo-dev pango-dev>=1.44"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://archive.xfce.org/src/apps/xfce4-screenshooter/${pkgver%.*}/xfce4-screenshooter-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -24,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
- make DESTDIR="$pkgdir" install
+ make -j1 DESTDIR="$pkgdir" install
}
-sha512sums="e5797a6defa4df94c552e8ff39b21f4203b6795669e8145ea5ef609fc7b29bcfa846b19b253b39b12ab0e6c130c7f9e67dd5aa628cefe9b063fb9f74dd2c3ee1 xfce4-screenshooter-1.9.5.tar.bz2"
+sha512sums="aee31311faea2bb08d5e29722da190b0c7e2b37948a688a49212cd57cc4efc3f43b3c1588d9326f97eb174771412c60707cc88ae2ee0596546e9750a06112588 xfce4-screenshooter-1.11.1.tar.bz2"
diff --git a/user/xfce4-sensors-plugin/APKBUILD b/user/xfce4-sensors-plugin/APKBUILD
index 376b6786d..a46c852f2 100644
--- a/user/xfce4-sensors-plugin/APKBUILD
+++ b/user/xfce4-sensors-plugin/APKBUILD
@@ -1,20 +1,20 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-sensors-plugin
-pkgver=1.3.0
+pkgver=1.4.4
+_xfce=4.16
pkgrel=0
pkgdesc="Hardware sensor monitor plugin for the XFCE panel"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
-makedepends="intltool libxfce4ui-dev xfce4-panel-dev"
+depends=""
+makedepends="intltool libxfce4ui-dev xfce4-panel-dev>=$_xfce"
subpackages="$pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/panel-plugins/xfce4-sensors-plugin/1.3/xfce4-sensors-plugin-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/panel-plugins/xfce4-sensors-plugin/${pkgver%.*}/xfce4-sensors-plugin-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -25,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="77f6df354c883f9f0b99856738e0976e7bddd5f16c90a8715777c4f4d6debe116cdc21c2e0efbbe9f371d36f9469797d3e631854c33f8561e3ff32291cdef35a xfce4-sensors-plugin-1.3.0.tar.bz2"
+sha512sums="45a5df383cc950f05f33d3d658b4847890e4136d6c72708a4218f1460a27d44a07a3f726d6c509bc706b963041a5dab3259dd94127636fb196d47ab9a0d6f702 xfce4-sensors-plugin-1.4.4.tar.bz2"
diff --git a/user/xfce4-session/APKBUILD b/user/xfce4-session/APKBUILD
index 05c391a80..b8d637ab4 100644
--- a/user/xfce4-session/APKBUILD
+++ b/user/xfce4-session/APKBUILD
@@ -1,22 +1,22 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-session
-pkgver=4.13.1
+pkgver=4.20.0
pkgrel=0
pkgdesc="Session management for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-2.0+ AND LGPL-2.0+"
-makedepends="intltool gtk+3.0-dev libice-dev libsm-dev libxfce4util-dev
- libxfce4ui-dev libwnck-dev iceauth dbus-glib-dev"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/xfce/xfce4-session/4.13/xfce4-session-$pkgver.tar.bz2"
-sha512sums="5845e3591919e23ca176199e81075a097ef9d65cbcf23b34d84afc649a307bfa8c6492e3a01855cacff9328da809725213ec1fa9d76024c0a0c25cce3c51da1b xfce4-session-4.13.1.tar.bz2"
+depends="iceauth polkit cmd:which xdg-user-dirs"
+makedepends="intltool gtk-layer-shell-dev gtk+3.0-dev libice-dev libsm-dev
+ libxfce4util-dev>=${pkgver%.*} libxfce4ui-dev>=${pkgver%.*}
+ libxfce4windowing-dev>=${pkgver%.*} libwnck-dev iceauth dbus-glib-dev
+ polkit-dev"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://archive.xfce.org/src/xfce/xfce4-session/${pkgver%.*}/xfce4-session-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -27,12 +27,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
+sha512sums="2e3b1280830fe3b26d39e87fcc26fd2be6df5f1328b64529c46cc51fe80abcc07b2996fd07af331ee2a502f025f40576cfb49a7ddaa9cc82b1f3cf17484f1dd6 xfce4-session-4.20.0.tar.bz2"
diff --git a/user/xfce4-settings/APKBUILD b/user/xfce4-settings/APKBUILD
index 4b894e6ee..6da8c83e8 100644
--- a/user/xfce4-settings/APKBUILD
+++ b/user/xfce4-settings/APKBUILD
@@ -1,21 +1,25 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-settings
-pkgver=4.13.5
+pkgver=4.20.0
pkgrel=0
pkgdesc="GUI settings application for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-2.0+ AND MIT AND LGPL-2.0+"
-makedepends="intltool exo-dev garcon-dev libnotify-dev upower-dev
- libxklavier-dev xf86-input-libinput-dev"
+depends=""
+makedepends="intltool exo-dev>=${pkgver%.*} garcon-dev>=${pkgver%.*}
+ gtk-layer-shell-dev libnotify-dev upower-dev
+ libxklavier-dev xf86-input-libinput-dev wayland-protocols"
subpackages="$pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/xfce/xfce4-settings/4.13/xfce4-settings-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/xfce/xfce4-settings/${pkgver%.*}/xfce4-settings-$pkgver.tar.bz2"
+
+# secfixes:
+# 4.18.2-r0:
+# - CVE-2022-45062
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -23,18 +27,17 @@ build() {
--mandir=/usr/share/man \
--localstatedir=/var \
--enable-pluggable-dialogs \
+ --enable-upower-glib \
--enable-sound-settings
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="5e7b13b25767091ab0b1a5683359f33e4a86151dd9321681fc4d896fcd9cc569effaebfbab70bc734e07041e9fbb1c3015f9a177146de8a128c4a539462dba5e xfce4-settings-4.13.5.tar.bz2"
+sha512sums="ab728bfce9aefe14c59dce0f93a84d395826ffc37d3a7bafc40fce61055ce4b7d9265c65460bf7ee69e4c8f4efd7e0b88b3670d859d48d4602c17acc20556528 xfce4-settings-4.20.0.tar.bz2"
diff --git a/user/xfce4-systemload-plugin/APKBUILD b/user/xfce4-systemload-plugin/APKBUILD
index 7545e3a0a..ada0713b9 100644
--- a/user/xfce4-systemload-plugin/APKBUILD
+++ b/user/xfce4-systemload-plugin/APKBUILD
@@ -1,20 +1,22 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-systemload-plugin
-pkgver=1.2.2
-pkgrel=0
+pkgver=1.3.2
+_xfce=4.16
+pkgrel=1
pkgdesc="System load monitor plugin for the XFCE panel"
url="https://xfce.org"
arch="all"
license="BSD-2-Clause"
-makedepends="intltool libxfce4ui-dev xfce4-panel-dev"
+depends=""
+makedepends="intltool libxfce4ui-dev xfce4-panel-dev>=${_xfce}"
subpackages="$pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/panel-plugins/xfce4-systemload-plugin/1.2/xfce4-systemload-plugin-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/panel-plugins/xfce4-systemload-plugin/${pkgver%.*}/xfce4-systemload-plugin-$pkgver.tar.bz2
+ fix-failure-due-to-wrong-var-type.patch
+ "
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -25,13 +27,12 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="92930431383c128e449545b15a6d50aa6e236685619cc1abf0b60979f8a25010eb82ac4428f3e0e7eaac1468c3b101d6a0ef5d39e556346e74f4dddfffaa446b xfce4-systemload-plugin-1.2.2.tar.bz2"
+sha512sums="f432988f439e5fd7ada16b3e6eaa42b3351531ba3e2b63e2570387bf4d7e605ff9d5a97fde3f5f5eb323ff08aaf3c050f161a5768392b80aa99fabaabda82431 xfce4-systemload-plugin-1.3.2.tar.bz2
+2d31ce9fbfb172d377142eb3be5cdc0a969b230f48c822ecd32a76a9cef128d632bb4223442e855f2d0ba12d60a141830b8121f0e3f45f0a15dc9b08138f6455 fix-failure-due-to-wrong-var-type.patch"
diff --git a/user/xfce4-systemload-plugin/fix-failure-due-to-wrong-var-type.patch b/user/xfce4-systemload-plugin/fix-failure-due-to-wrong-var-type.patch
new file mode 100644
index 000000000..3fa8535d9
--- /dev/null
+++ b/user/xfce4-systemload-plugin/fix-failure-due-to-wrong-var-type.patch
@@ -0,0 +1,25 @@
+From 13a2e3ecb4b6cf6aad26c6b1d2388ef6922a5c92 Mon Sep 17 00:00:00 2001
+From: Akbarkhon Variskhanov <akbarkhon.variskhanov@gmail.com>
+Date: Tue, 20 Dec 2022 13:50:40 +0500
+Subject: [PATCH] build: Fix failure due to wrong var type (Fixes #25)
+
+---
+ panel-plugin/network.cc | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/panel-plugin/network.cc b/panel-plugin/network.cc
+index 6a85dab..3de831d 100644
+--- a/panel-plugin/network.cc
++++ b/panel-plugin/network.cc
+@@ -114,7 +114,7 @@ read_netload_proc (gulong *bytes)
+ gint
+ read_netload (gulong *net, gulong *NTotal)
+ {
+- static guint64 bytes[2];
++ static gulong bytes[2];
+ static gint64 time[2];
+
+ *net = 0;
+--
+GitLab
+
diff --git a/user/xfce4-taskmanager/APKBUILD b/user/xfce4-taskmanager/APKBUILD
index daac4f234..bcbf0223a 100644
--- a/user/xfce4-taskmanager/APKBUILD
+++ b/user/xfce4-taskmanager/APKBUILD
@@ -1,36 +1,35 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-taskmanager
-pkgver=1.2.2
+pkgver=1.5.7
pkgrel=0
pkgdesc="Process manager for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
-makedepends="intltool gtk+3.0-dev gtk+2.0-dev libxmu-dev libwnck-dev"
-source="http://archive.xfce.org/src/apps/xfce4-taskmanager/1.2/xfce4-taskmanager-$pkgver.tar.bz2"
+depends=""
+makedepends="intltool gtk+3.0-dev libxfce4ui-dev libxmu-dev libwnck-dev"
+subpackages="$pkgname-lang"
+source="https://archive.xfce.org/src/apps/xfce4-taskmanager/${pkgver%.*}/xfce4-taskmanager-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var \
- --enable-gtk3
+ --with-locales-dir=/usr/share/locale \
+ --localstatedir=/var
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="670e8fd09bdaa85dc822dd5a7b055f898941e8079315843344e4dae12e2c0a14049b58241fb58f170461e7b8829bc479bea1a488b756210ef91ef8a4d7ff3348 xfce4-taskmanager-1.2.2.tar.bz2"
+sha512sums="b9c8a3d088b116ba51e3db8685052f68702283509d7a7a9e7a54c079fcdfefa22b019bc0f1572546907da1c8fcd0a98ae4320f7b99a3e77f49ed1a8e86f41a80 xfce4-taskmanager-1.5.7.tar.bz2"
diff --git a/user/xfce4-terminal/APKBUILD b/user/xfce4-terminal/APKBUILD
index eca6f23c5..99c6ae219 100644
--- a/user/xfce4-terminal/APKBUILD
+++ b/user/xfce4-terminal/APKBUILD
@@ -1,20 +1,20 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-terminal
-pkgver=0.8.7.4
+pkgver=1.1.3
+_xfce=4.18
pkgrel=0
pkgdesc="Terminal for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
-makedepends="intltool gtk+3.0-dev vte-dev libxfce4ui-dev"
+depends=""
+makedepends="intltool gtk+3.0-dev vte-dev libxfce4ui-dev>=${_xfce} pcre2-dev"
subpackages="$pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/apps/xfce4-terminal/0.8/xfce4-terminal-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/apps/xfce4-terminal/${pkgver%.*}/xfce4-terminal-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -25,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="de56c08d5be47583484acf9aa5b3c0a0f14b1ac2790e0f6b59db61f80d71f871ff87e94f9353a0cc187cf1d9dff643e40ce15ed60a24d550843d898eee3d62dd xfce4-terminal-0.8.7.4.tar.bz2"
+sha512sums="12d489099851b281d3ac83a4d9b2f459ed8442899823edba36055a0aa731d1821686f400d5d370833077b0ccf930cb3dfdf5800af58dd2339377dd7e902210b9 xfce4-terminal-1.1.3.tar.bz2"
diff --git a/user/xfce4-time-out-plugin/APKBUILD b/user/xfce4-time-out-plugin/APKBUILD
index 910bd6425..977be675e 100644
--- a/user/xfce4-time-out-plugin/APKBUILD
+++ b/user/xfce4-time-out-plugin/APKBUILD
@@ -1,27 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-time-out-plugin
-pkgver=1.0.2
+pkgver=1.1.3
pkgrel=0
pkgdesc="Forced computer break plugin for the XFCE panel"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
+depends=""
makedepends="intltool libxfce4ui-dev xfce4-panel-dev"
subpackages="$pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/panel-plugins/xfce4-time-out-plugin/1.0/xfce4-time-out-plugin-$pkgver.tar.bz2"
-
-prepare() {
- cd "$builddir"
- default_prepare
- chmod a+w config.sub
- update_config_sub
-}
+source="https://archive.xfce.org/src/panel-plugins/xfce4-time-out-plugin/${pkgver%.*}/xfce4-time-out-plugin-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -32,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3f49664fc8fd947627e40de0338e3a115806045c97fa08fd678fdbb831947bcfe14c02e9961d671ce7546d4913fd9319322476df590a70458bdf86fa3bd43464 xfce4-time-out-plugin-1.0.2.tar.bz2"
+sha512sums="1abb5b8efa985b08968c49bb01a6efd49bc43f16f4b80f892086643444979dab3b7819d7f7e51e4c898c92387c213684b0c28765624c1f04303c0674c5b91930 xfce4-time-out-plugin-1.1.3.tar.bz2"
diff --git a/user/xfce4-timer-plugin/APKBUILD b/user/xfce4-timer-plugin/APKBUILD
index 6e76d0772..526249a26 100644
--- a/user/xfce4-timer-plugin/APKBUILD
+++ b/user/xfce4-timer-plugin/APKBUILD
@@ -1,20 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-timer-plugin
-pkgver=1.7.0
+pkgver=1.7.2
pkgrel=0
pkgdesc="Timer plugin for the XFCE panel"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
+depends=""
makedepends="intltool libxfce4ui-dev xfce4-panel-dev"
subpackages="$pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/panel-plugins/xfce4-timer-plugin/1.7/xfce4-timer-plugin-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/panel-plugins/xfce4-timer-plugin/1.7/xfce4-timer-plugin-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b4d00396f5be37d009cdb50baea8804c4b06a6f0b821d66751fd07ca21e186c01bafeec5170209b5de69559803e0ac54d9b56266f193b65ac056cdd52bf5228e xfce4-timer-plugin-1.7.0.tar.bz2"
+sha512sums="11a3b146c56f1526530b7f810c76ba95ef4dc7c113fa0ad2839494a5bc66c09f4a3ff966bc5d76055482a284c6c082b08a4b6af4684e5ccdec67946b0cdd820d xfce4-timer-plugin-1.7.2.tar.bz2"
diff --git a/user/xfce4-verve-plugin/APKBUILD b/user/xfce4-verve-plugin/APKBUILD
index b4b386853..2fbaf3ff2 100644
--- a/user/xfce4-verve-plugin/APKBUILD
+++ b/user/xfce4-verve-plugin/APKBUILD
@@ -1,20 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-verve-plugin
-pkgver=2.0.0
+pkgver=2.0.3
pkgrel=0
pkgdesc="Command-line plugin for the XFCE panel"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
-makedepends="intltool libxfce4ui-dev xfce4-panel-dev"
+depends=""
+makedepends="intltool libxfce4ui-dev pcre2-dev xfce4-panel-dev"
subpackages="$pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/panel-plugins/xfce4-verve-plugin/2.0/xfce4-verve-plugin-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/panel-plugins/xfce4-verve-plugin/${pkgver%.*}/xfce4-verve-plugin-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b6be658f5996857e1c5696dc66f973fa5875ba95682297ad157e107abae821023cdf7101ba5f8e5358740549e392b76bf7d1dae252f43bf1a7e8716d798ed39a xfce4-verve-plugin-2.0.0.tar.bz2"
+sha512sums="acfa0c9ee19904a0cbb5118bbb3324499a6fcfbf881478bfb745e0675be89aacb4ccd23137ba78fab0fe77e2e4b67a0c815cb3f37ee8132ebc09aecf9aaf1d1e xfce4-verve-plugin-2.0.3.tar.bz2"
diff --git a/user/xfce4-volumed-pulse/APKBUILD b/user/xfce4-volumed-pulse/APKBUILD
index 4550ee2f6..8bb611822 100644
--- a/user/xfce4-volumed-pulse/APKBUILD
+++ b/user/xfce4-volumed-pulse/APKBUILD
@@ -1,17 +1,18 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-volumed-pulse
-pkgver=0.2.3
+pkgver=0.2.4
pkgrel=0
pkgdesc="Pulseaudio volume manager for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-3.0+"
-makedepends="gtk+3.0-dev libxfce4ui-dev pulseaudio-dev keybinder-3.0-dev libnotify-dev"
-source="http://archive.xfce.org/src/apps/xfce4-volumed-pulse/0.2/xfce4-volumed-pulse-$pkgver.tar.bz2"
+depends=""
+makedepends="gtk+3.0-dev libxfce4ui-dev pulseaudio-dev keybinder-3.0-dev
+ libnotify-dev"
+source="https://archive.xfce.org/src/apps/xfce4-volumed-pulse/0.2/xfce4-volumed-pulse-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -23,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="da190cea2b3993717f35e1ded058613df99f8fa223a90d379d95dff0bc9d44f4fba15bd23ff1b54f11218d20518092d14a2f2b808d4984673d3bb77616c2f3e3 xfce4-volumed-pulse-0.2.3.tar.bz2"
+sha512sums="3867806a41d088a016085b64ba2a7878d50535b006c07f5f81882cd4047d013c6ef4cfc5cd34e6f21209ad301db91d44206632b60ee0e7226742af72fbe58484 xfce4-volumed-pulse-0.2.4.tar.bz2"
diff --git a/user/xfce4-whiskermenu-plugin/APKBUILD b/user/xfce4-whiskermenu-plugin/APKBUILD
index b562d6126..accfa2675 100644
--- a/user/xfce4-whiskermenu-plugin/APKBUILD
+++ b/user/xfce4-whiskermenu-plugin/APKBUILD
@@ -1,20 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfce4-whiskermenu-plugin
-pkgver=2.3.2
-_pkgmaj=${pkgver%.*}
+pkgver=2.8.3
pkgrel=0
pkgdesc="Whisker menu plugin for the XFCE panel"
url="https://xfce.org"
arch="all"
-options="!check" # no tests
+options="!check" # No test suite.
license="GPL-2.0+"
-makedepends="gtk+3.0-dev exo-dev garcon-dev xfce4-panel-dev"
+depends=""
+makedepends="cmake gtk+3.0-dev exo-dev garcon-dev xfce4-panel-dev accountsservice-dev"
subpackages="$pkgname-doc $pkgname-lang"
-source="http://archive.xfce.org/src/panel-plugins/xfce4-whiskermenu-plugin/$_pkgmaj/xfce4-whiskermenu-plugin-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/panel-plugins/xfce4-whiskermenu-plugin/${pkgver%.*}/xfce4-whiskermenu-plugin-$pkgver.tar.bz2"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -25,13 +24,13 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ -DENABLE_GTK_LAYER_SHELL=OFF \
+ ${CMAKE_CROSSOPTS} .
make
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="2b9557b29d1b30b5d46df5f182d64562873defd59cd36e6444da4b73bbdf3835cfb17101f11a3ac6e9f875a9dc4d51e2301a420a888bfa1d7fdc6ae715d92443 xfce4-whiskermenu-plugin-2.3.2.tar.bz2"
+sha512sums="ef4fe09fe69f1d6a5b0ab54a6cae48319c859b6b9d16facf39631814986d852913410a1ca1b32cfa7b355dafa78a6d91c12843b0c685e24bf168d6065a5f6099 xfce4-whiskermenu-plugin-2.8.3.tar.bz2"
diff --git a/user/xfconf/APKBUILD b/user/xfconf/APKBUILD
index 09144df61..4ab3cebc2 100644
--- a/user/xfconf/APKBUILD
+++ b/user/xfconf/APKBUILD
@@ -1,22 +1,20 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfconf
-pkgver=4.13.6
+pkgver=4.20.0
pkgrel=0
pkgdesc="Configuration framework for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
-options="!check" # tests require X11
+options="checkx11"
license="LGPL-2.1+ AND GPL-2.0+"
depends="dbus"
-makedepends="intltool gtk+3.0-dev libxfce4util-dev"
-subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/xfce/xfconf/4.13/xfconf-$pkgver.tar.bz2"
+makedepends="intltool gtk+3.0-dev libxfce4util-dev>=${pkgver%.*}"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-lang $pkgname-systemd"
+source="https://archive.xfce.org/src/xfce/xfconf/${pkgver%.*}/xfconf-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -27,12 +25,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
@@ -43,4 +39,4 @@ perl() {
mv "$pkgdir"/usr/lib/perl5 "$subpkgdir"/usr/lib
}
-sha512sums="0eaa1ad428be5bea97b891a6bf0488293064e31d4869b70389ded940a23f9d8cffd0801dd98932658a67e57d6a0da95998872202cf7756aa24caa8f9d2c5f755 xfconf-4.13.6.tar.bz2"
+sha512sums="87ae4e9366cccb6c2f13229539e8317d26bfb3fc5333e769ec2de1b596e04348595bb2e85ca90fb63c6c64968e5108e59490700028aeb077b32b9cd03062d9e9 xfconf-4.20.0.tar.bz2"
diff --git a/user/xfd/APKBUILD b/user/xfd/APKBUILD
index ca4f5188d..7d2bca476 100644
--- a/user/xfd/APKBUILD
+++ b/user/xfd/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xfd
-pkgver=1.1.3
+pkgver=1.1.4
pkgrel=0
pkgdesc="Display all characters in X11 fonts"
url="https://www.X.Org/"
@@ -11,7 +11,7 @@ depends=""
makedepends="fontconfig-dev libxaw-dev libxft-dev libxkbfile-dev libxmu-dev
libxrender-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/xfd-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/xfd-$pkgver.tar.xz"
build() {
./configure \
@@ -32,4 +32,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="68e2d4ce5e24215353b6f3231191d69639c4dd90a703e03ccf152bbfe4012da071c387ba289f918fb0336a3be9ee49dc05cbec7273fa85f5e476ead7e10795f0 xfd-1.1.3.tar.bz2"
+sha512sums="fa1f8a7b5d89be20fb2b1e3e0e8f4d7f9463e91fd385d21e1403a398c2e263112043b568417c420c5ee33bec60e06658498dd55df6d7ac19da3af0844f932209 xfd-1.1.4.tar.xz"
diff --git a/user/xfdashboard/APKBUILD b/user/xfdashboard/APKBUILD
index b192385d0..3232d994b 100644
--- a/user/xfdashboard/APKBUILD
+++ b/user/xfdashboard/APKBUILD
@@ -1,21 +1,20 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfdashboard
-pkgver=0.7.5
+pkgver=1.0.0
pkgrel=0
pkgdesc="Gnome dashboard clone for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
+depends=""
makedepends="intltool gtk+3.0-dev libwnck-dev libice-dev garcon-dev
libxfce4ui-dev clutter-dev"
subpackages="$pkgname-dev $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/apps/xfdashboard/0.7/xfdashboard-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/apps/xfdashboard/${pkgver%.*}/xfdashboard-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="5d32aa3a49e02d85ca92bee6aa37a3b743e50ca5d992128decea5846e8c9008a9f5bdb98cc0ee3e980761a6538a4867ff28410e066ef22f0aa2c2bd4c5ce1523 xfdashboard-0.7.5.tar.bz2"
+sha512sums="7c7da3d544de4eabe9f31c2744d7b862ed71a7e7bcadd40b61d64ce7d480e627c86992979718110d65d1534f50fd87d8241f509b26e0603b93443b4cca873d1c xfdashboard-1.0.0.tar.bz2"
diff --git a/user/xfdesktop/APKBUILD b/user/xfdesktop/APKBUILD
index 75dcffed9..f01be7143 100644
--- a/user/xfdesktop/APKBUILD
+++ b/user/xfdesktop/APKBUILD
@@ -1,21 +1,21 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfdesktop
-pkgver=4.13.3
+pkgver=4.20.0
pkgrel=0
pkgdesc="Desktop manager for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
-makedepends="intltool gtk+3.0-dev libxfce4util-dev libxfce4ui-dev libwnck-dev
- exo-dev garcon-dev libnotify-dev thunar-dev"
+depends=""
+makedepends="intltool gtk-layer-shell-dev gtk+3.0-dev libwnck-dev
+ libxfce4util-dev libxfce4ui-dev libxfce4windowing-dev yaml-dev exo-dev
+ garcon-dev libnotify-dev thunar-dev>=${pkgver%.*}"
subpackages="$pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/xfce/xfdesktop/4.13/xfdesktop-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/xfce/xfdesktop/${pkgver%.*}/xfdesktop-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -26,13 +26,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="5d828ad653b46ab1edc8300335321bab48e0ad2be1ae02944eff553375a6059513aeb363c73aaec1a6958dd3f1c873920287ad911cfe7b8096b447f1b8165ce3 xfdesktop-4.13.3.tar.bz2"
+sha512sums="84b0c87c9678d3d6170af3d6edabe983282b0bd4d696e32d3a1eaaca99651d56387a9767645d5b48afdc517a18503e42fdaf0a72af9a73144475fb3b6183219c xfdesktop-4.20.0.tar.bz2"
diff --git a/user/xfindproxy/APKBUILD b/user/xfindproxy/APKBUILD
index 430427fb2..bca667899 100644
--- a/user/xfindproxy/APKBUILD
+++ b/user/xfindproxy/APKBUILD
@@ -13,7 +13,6 @@ subpackages="$pkgname-doc"
source="https://www.x.org/releases/individual/app/xfindproxy-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,12 +24,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/xfmpc/APKBUILD b/user/xfmpc/APKBUILD
index 0b13bd5a2..31a3f5df5 100644
--- a/user/xfmpc/APKBUILD
+++ b/user/xfmpc/APKBUILD
@@ -1,20 +1,19 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfmpc
-pkgver=0.2.3
+pkgver=0.3.1
pkgrel=0
pkgdesc="Graphical music player daemon client for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-2.0+ AND LGPL-2.0+"
+depends=""
makedepends="intltool gtk+2.0-dev libxfce4ui-dev libmpd-dev"
subpackages="$pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/apps/xfmpc/0.2/xfmpc-$pkgver.tar.bz2"
+source="https://archive.xfce.org/src/apps/xfmpc/${pkgver%.*}/xfmpc-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3f592fdd559817051f7720bafc07fc66b39f682cc20286c12d54c4bd607e85bb0a722c567264a29224971b4ac14db51b0b44b233a16cccd9d17579a50549a3be xfmpc-0.2.3.tar.bz2"
+sha512sums="771835828cd89298d79c31cec2716b308889e6b835a2b16d0ef25eab6ed1667b055158f845ebf897df8f3f9f45a07fb6ad2994a9981695e74be2d56408e4abe0 xfmpc-0.3.1.tar.bz2"
diff --git a/user/xfontsel/APKBUILD b/user/xfontsel/APKBUILD
index e34c9d2ac..28f7e071a 100644
--- a/user/xfontsel/APKBUILD
+++ b/user/xfontsel/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xfontsel
-pkgver=1.0.6
+pkgver=1.1.1
pkgrel=0
pkgdesc="X11 font chooser and exploration tool"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11 AND MIT"
depends=""
makedepends="libx11-dev libxaw-dev libxmu-dev libxt-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xfontsel-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="2f6bc51549a302404cdaf9a5a825add383953fcbb2a0c7076691cefd4dd7e4a3c772c047be74101c8486f75d03ce0bd3e65ede14e91732cf2a932810441c9099 xfontsel-1.0.6.tar.bz2"
+sha512sums="fdb1f20dc86e2e74da77ef5e62d9465ea24d1af965f1ff3a6334ffefb239130fcf28f7cde9b4e7d7e6c9cf12fcb637784e7af209cffcee3dbe304025d33abcdd xfontsel-1.1.1.tar.xz"
diff --git a/user/xfs/APKBUILD b/user/xfs/APKBUILD
index d7e0fdeb6..1c60c0b96 100644
--- a/user/xfs/APKBUILD
+++ b/user/xfs/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xfs
-pkgver=1.2.0
+pkgver=1.2.2
pkgrel=0
pkgdesc="The X11 Font Server"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends="xtrans"
makedepends="libxfont2-dev util-macros xmlto xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xfs-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="557b08aa07919239ce345d60b288b886640200bb1a59649fc890c3ccaa8559cc6745189614e696ab1b390ec024b393be5493787b7b0d2b3545b342d743c2e0ef xfs-1.2.0.tar.bz2"
+sha512sums="e8983ddade7015c87db1278093701b9e62c7d09003150ed7347a9b83b8f245e8ac9fe2d86d61bb4469bbbea86a71366ef299541793326d9dbbb1b9c0572bcba9 xfs-1.2.2.tar.xz"
diff --git a/user/xfsinfo/APKBUILD b/user/xfsinfo/APKBUILD
index 4c3805eff..f99ba89d0 100644
--- a/user/xfsinfo/APKBUILD
+++ b/user/xfsinfo/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xfsinfo
-pkgver=1.0.6
+pkgver=1.0.7
pkgrel=0
pkgdesc="Display information about X11 font servers"
url="https://www.X.Org/"
@@ -10,7 +10,7 @@ license="X11 AND MIT"
depends=""
makedepends="libfs-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/xfsinfo-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
./configure \
@@ -31,4 +31,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="901fc3817d7c95f2ba75ed0c51de91abd8efa67bbb93ad6b7d66e56a2f721af9db364e92f9ef2e719835fd48e934a5ea7402e5565c0ccd9b6b82633e869dc57b xfsinfo-1.0.6.tar.bz2"
+sha512sums="1914916bf995c08a520bd009ddfa57c7e4a997a829380232d359f9bf68852c67650efb8f1fe3cc8a11889b2ec067f50ac38df711ffaf4536802a0b530dc1789c xfsinfo-1.0.7.tar.xz"
diff --git a/user/xfsprogs/APKBUILD b/user/xfsprogs/APKBUILD
new file mode 100644
index 000000000..8d717f51e
--- /dev/null
+++ b/user/xfsprogs/APKBUILD
@@ -0,0 +1,54 @@
+# Contributor: Valery Kartel <valery.kartel@gmail.com>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xfsprogs
+pkgver=6.9.0
+pkgrel=0
+pkgdesc="XFS filesystem utilities"
+url="https://xfs.org/index.php/Main_Page"
+arch="all"
+options="!check" # No test suite.
+license="GPL-1.0-only"
+depends="$pkgname-base"
+makedepends="attr-dev bash icu-dev inih-dev libedit-dev linux-headers
+ userspace-rcu-dev util-linux-dev"
+subpackages="$pkgname-base $pkgname-dev $pkgname-doc $pkgname-lang $pkgname-libs"
+source="https://www.kernel.org/pub/linux/utils/fs/xfs/$pkgname/$pkgname-$pkgver.tar.gz
+ no-utmp-header.patch
+ scrub.patch
+ "
+
+build() {
+ export DEBUG=-DNDEBUG
+ export OPTIMIZER="$CFLAGS"
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sbindir=/sbin \
+ --libexecdir=/usr/lib \
+ --enable-editline
+ make SHELL=/bin/bash
+}
+
+check() {
+ make check
+}
+
+package() {
+ make -j1 DIST_ROOT="$pkgdir" install install-dev
+ find "$pkgdir" -name *.la -delete
+ chown -R 0:0 "$pkgdir"
+}
+
+base() {
+ # Everything except xfs_scrub, which pulls in 50 MiB of icu libs.
+ pkgdesc="Base $pkgdesc"
+ mkdir "$subpkgdir"
+ mv "$pkgdir"/sbin "$subpkgdir"/
+ mkdir "$pkgdir"/sbin
+ mv "$subpkgdir"/sbin/xfs_scrub "$pkgdir"/sbin/
+}
+
+sha512sums="bfb3c98e7571180f1c5c130ca9aece5dde97bc6c628dc3d6560b0da75e5b43e8febe3eec193d3db2ec877b3a27258c53c033c7ed3d881efd2d4e3216033aaf2b xfsprogs-6.9.0.tar.gz
+29c77c550fa8f7a0b3794649d278a2cb3a65c9368db19415866910160adb6d5a52f1be4f8713b58c5c87f149b6212c068ae27a4547a6c4e4fe7b1584e1261dae no-utmp-header.patch
+d83e2ae819a338273fae7999a0ae1376faa593308974f93abc6db140b134ec98f855a2ea5585583f739b041fbb5d4b8a0d4d27ecd73df6c34cd799b2cee55b9a scrub.patch"
diff --git a/user/xfsprogs/no-utmp-header.patch b/user/xfsprogs/no-utmp-header.patch
new file mode 100644
index 000000000..f272bc152
--- /dev/null
+++ b/user/xfsprogs/no-utmp-header.patch
@@ -0,0 +1,20 @@
+--- xfsprogs-4.17.0/quota/report.c.old 2018-06-28 12:00:43.000000000 -0500
++++ xfsprogs-4.17.0/quota/report.c 2018-07-04 00:50:44.940000000 -0500
+@@ -8,7 +8,6 @@
+ #include <sys/types.h>
+ #include <pwd.h>
+ #include <grp.h>
+-#include <utmp.h>
+ #include "init.h"
+ #include "quota.h"
+
+--- xfsprogs-4.17.0/quota/util.c.old 2018-06-28 12:00:43.000000000 -0500
++++ xfsprogs-4.17.0/quota/util.c 2018-07-04 00:53:25.470000000 -0500
+@@ -8,7 +8,6 @@
+ #include <stdbool.h>
+ #include <pwd.h>
+ #include <grp.h>
+-#include <utmp.h>
+ #include "init.h"
+ #include "quota.h"
+
diff --git a/user/xfsprogs/scrub.patch b/user/xfsprogs/scrub.patch
new file mode 100644
index 000000000..a466aab34
--- /dev/null
+++ b/user/xfsprogs/scrub.patch
@@ -0,0 +1,49 @@
+From da3ad6ffc9ecf75ebb734bbb863c1412d11b9beb Mon Sep 17 00:00:00 2001
+From: "A. Wilcox" <AWilcox@Wilcox-Tech.com>
+Date: Sat, 10 Aug 2024 21:26:57 -0500
+Subject: [PATCH] xfs_scrub: Use POSIX-conformant strerror_r
+
+When building xfsprogs with musl libc, strerror_r returns int as
+specified in POSIX. This differs from the glibc extension that returns
+char*. Successful calls will return 0, which will be dereferenced as a
+NULL pointer by (v)fprintf.
+
+Signed-off-by: A. Wilcox <AWilcox@Wilcox-Tech.com>
+---
+ scrub/common.c | 3 ++-
+ scrub/inodes.c | 4 ++--
+ 2 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/scrub/common.c b/scrub/common.c
+index 283ac84e..bd8bde35 100644
+--- a/scrub/common.c
++++ b/scrub/common.c
+@@ -122,7 +122,8 @@ __str_out(
+ fprintf(stream, "%s%s: %s: ", stream_start(stream),
+ _(err_levels[level].string), descr);
+ if (error) {
+- fprintf(stream, _("%s."), strerror_r(error, buf, DESCR_BUFSZ));
++ strerror_r(error, buf, DESCR_BUFSZ);
++ fprintf(stream, _("%s."), buf);
+ } else {
+ va_start(args, format);
+ vfprintf(stream, format, args);
+diff --git a/scrub/inodes.c b/scrub/inodes.c
+index 16c79cf4..f0e7289c 100644
+--- a/scrub/inodes.c
++++ b/scrub/inodes.c
+@@ -65,9 +65,9 @@ bulkstat_for_inumbers(
+ error = -xfrog_bulkstat(&ctx->mnt, breq);
+ if (error) {
+ char errbuf[DESCR_BUFSZ];
++ strerror_r(error, errbuf, DESCR_BUFSZ);
+
+- str_info(ctx, descr_render(dsc), "%s",
+- strerror_r(error, errbuf, DESCR_BUFSZ));
++ str_info(ctx, descr_render(dsc), "%s", errbuf);
+ }
+
+ /*
+--
+2.40.0
+
diff --git a/user/xfwm4/APKBUILD b/user/xfwm4/APKBUILD
index d560fff66..7c269a647 100644
--- a/user/xfwm4/APKBUILD
+++ b/user/xfwm4/APKBUILD
@@ -1,40 +1,38 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xfwm4
-pkgver=4.13.1
-pkgrel=1
+pkgver=4.20.0
+pkgrel=0
pkgdesc="Window manager for the XFCE desktop environment"
url="https://xfce.org"
arch="all"
license="GPL-2.0+"
-makedepends="intltool gtk+3.0-dev libxfce4util-dev libxfce4ui-dev libwnck-dev
- gobject-introspection-dev vala-dev"
+depends=""
+makedepends="intltool gobject-introspection-dev gtk-layer-shell-dev gtk+3.0-dev
+ libwnck-dev libxfce4util-dev>=${pkgver%.*} libxfce4ui-dev libxi-dev
+ libxpresent-dev vala-dev"
subpackages="$pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://archive.xfce.org/src/xfce/xfwm4/4.13/xfwm4-$pkgver.tar.bz2
- fix-mask-length.patch"
+source="https://archive.xfce.org/src/xfce/xfwm4/${pkgver%.*}/xfwm4-$pkgver.tar.bz2"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var
+ --localstatedir=/var \
+ --enable-xi2 \
+ --enable-poswin
make
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="2ac5acdefff3a89b8525719b345dfeb2dc71104b4da341afe99d7c57c049753c4cdb81a512d1f344e5fb463c7143673e83316b63888777bdcf254c4a07ca8320 xfwm4-4.13.1.tar.bz2
-88733a4d69b58b0c98f2f46694ccc8bda4e5bc1b565d952123cee466b3f89f95d72fc28c8e9c173dcc0aee606c9f4b085d891004d769b74ad0c7084d8dec00a9 fix-mask-length.patch"
+sha512sums="1fa22d5bdf44d5907cbe362d20b7a99a610cfd38954a6cb5b7efad3481de5b450deb4fbf14ae2c1642ab5f7a39179016bb0f1558fe2941997cd931e9f8cc8dc8 xfwm4-4.20.0.tar.bz2"
diff --git a/user/xfwm4/fix-mask-length.patch b/user/xfwm4/fix-mask-length.patch
deleted file mode 100644
index dd050c8dc..000000000
--- a/user/xfwm4/fix-mask-length.patch
+++ /dev/null
@@ -1,12 +0,0 @@
-diff -ru xfwm4-4.13.1.orig/src/device.c xfwm4-4.13.1/src/device.c
---- xfwm4-4.13.1.orig/src/device.c 2018-07-29 16:08:54.000000000 +0300
-+++ xfwm4-4.13.1/src/device.c 2018-09-12 08:49:18.130254993 +0300
-@@ -301,7 +301,7 @@
- guint i;
-
- xievent_mask->deviceid = XIAllMasterDevices;
-- xievent_mask->mask_len = sizeof (mask);
-+ xievent_mask->mask_len = len;
- xievent_mask->mask = mask;
-
- for (i = 0; i < G_N_ELEMENTS (core_to_xi2); i++)
diff --git a/user/xfwp/APKBUILD b/user/xfwp/APKBUILD
index 46540f2ce..07d72f7b5 100644
--- a/user/xfwp/APKBUILD
+++ b/user/xfwp/APKBUILD
@@ -13,7 +13,6 @@ subpackages="$pkgname-doc"
source="https://www.x.org/releases/individual/app/xfwp-$pkgver.tar.bz2"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,12 +24,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/xgamma/APKBUILD b/user/xgamma/APKBUILD
index d93f3853b..c0af0c45a 100644
--- a/user/xgamma/APKBUILD
+++ b/user/xgamma/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xgamma
-pkgver=1.0.6
+pkgver=1.0.7
pkgrel=0
pkgdesc="Tools for manipulating gamma on X11 displays"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="libx11-dev libxxf86vm-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xgamma-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/xgamma-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="2d41798e15ac8c6f6731a2da29589207d936eaee1223ce6f3ca948e67d63c5c8b955d11c7db092dcd8c66a6209bd15c1de3dc1446dad4b4277134f010c6fc47a xgamma-1.0.6.tar.bz2"
+sha512sums="9eeee9b537dcae9e4d153774eb632a6a5e8dd32bebadc9bbd897a773e5b56f76848f32a1699b8c921d3094760c42b5083365d853b89ab31fd85c7a0d46feeceb xgamma-1.0.7.tar.xz"
diff --git a/user/xgc/APKBUILD b/user/xgc/APKBUILD
index 8e55f8a4f..f581dbf81 100644
--- a/user/xgc/APKBUILD
+++ b/user/xgc/APKBUILD
@@ -1,19 +1,18 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xgc
-pkgver=1.0.5
+pkgver=1.0.6
pkgrel=0
pkgdesc="X11 graphics core demonstration"
url="https://www.X.Org/"
arch="all"
license="X11"
depends=""
-makedepends="cmd:lex cmd:yacc libxaw-dev libxt-dev util-macros"
+makedepends="flex cmd:yacc libxaw-dev libxt-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xgc-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="5943d13b9e0ed5e1b66d26eaa4b39d16d71f0df23e3ea93bfc397b6303516b161c2b60b24679ed75b640bf2493e66682d35efc7cedd41c5b57caa65f309a8314 xgc-1.0.5.tar.bz2"
+sha512sums="f449b9b2d313aeba1fe9bf33fef90291776403f1fdf4afc507c4b973045c97fc8ded65ddec4f8c58727e7e4c7c4ad6a65ae79581eb4bdfe9c79a5f909dbc0a1f xgc-1.0.6.tar.xz"
diff --git a/user/xhost/APKBUILD b/user/xhost/APKBUILD
index f263a2a79..56236a6b7 100644
--- a/user/xhost/APKBUILD
+++ b/user/xhost/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=xhost
-pkgver=1.0.7
-pkgrel=1
+pkgver=1.0.9
+pkgrel=0
pkgdesc="Controls host and/or user access to a running X server"
url="https://www.X.Org/"
arch="all"
@@ -11,10 +11,9 @@ license="MIT X11"
subpackages="$pkgname-doc"
depends=""
makedepends="libx11-dev libxmu-dev libxau-dev util-macros"
-source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -24,8 +23,7 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="670a8c97291565f6c36c94e135f7bd60a572bb42b4fca9d2460823db0d0576187c64f9b876ed60d348029d3f74a732862eea4ce889a6b6b9c97665746a38b1d7 xhost-1.0.7.tar.bz2"
+sha512sums="d281a0df0a036d693ce7dbe0d1d53839110d203f42454bf4d33a49fbfddec078149969b6ad76641e40e207ddc8317ea563088c59025fc57d8245e5ed27f79818 xhost-1.0.9.tar.xz"
diff --git a/user/xinit/06_move_serverauthfile_into_tmp.patch b/user/xinit/06_move_serverauthfile_into_tmp.patch
index 99e8a6754..d128e1141 100644
--- a/user/xinit/06_move_serverauthfile_into_tmp.patch
+++ b/user/xinit/06_move_serverauthfile_into_tmp.patch
@@ -7,14 +7,14 @@ The trap patch didn't seem to work on reboot.
Index: xinit/startx.cpp
===================================================================
---- xinit.orig/startx.cpp
-+++ xinit/startx.cpp
-@@ -273,7 +273,7 @@
+--- xinit-1.4.2.orig/startx.cpp 2022-12-03 22:18:43.000000000 +0000
++++ xinit-1.4.2/startx.cpp 2024-08-30 09:47:01.763977101 +0000
+@@ -272,7 +272,7 @@ if [ x"$enable_xauth" = x1 ] ; then
dummy=0
XCOMM create a file with auth information for the server. ':0' is a dummy.
- xserverauthfile=$HOME/.serverauth.$$
+ xserverauthfile=`mktemp -p /tmp serverauth.XXXXXXXXXX`
- trap "rm -f '$xserverauthfile'" HUP INT QUIT ILL TRAP KILL BUS TERM
+ trap "rm -f '$xserverauthfile'" HUP INT QUIT ILL TRAP BUS TERM
xauth -q -f "$xserverauthfile" << EOF
add :$dummy . $mcookie
diff --git a/user/xinit/APKBUILD b/user/xinit/APKBUILD
index 37556cb27..6fc1441a1 100644
--- a/user/xinit/APKBUILD
+++ b/user/xinit/APKBUILD
@@ -1,15 +1,15 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xinit
-pkgver=1.4.1
+pkgver=1.4.2
pkgrel=0
pkgdesc="X.Org initialisation program"
url="https://www.X.Org/"
arch="all"
license="X11"
-subpackages="$pkgname-doc"
depends="cmd:mcookie xauth xmodmap xrdb"
makedepends="libx11-dev util-macros"
-source="https://www.X.Org/releases/individual/app/xinit-$pkgver.tar.bz2
+subpackages="$pkgname-doc"
+source="https://www.X.Org/releases/individual/app/xinit-$pkgver.tar.xz
06_move_serverauthfile_into_tmp.patch
xinitrc
xsession.skel
@@ -43,8 +43,8 @@ package() {
mkdir -p "$pkgdir"/etc/X11/xinit/xinitrc.d
}
-sha512sums="6cbc5d025a891c419f3f4493381b2fca57a67d78df866d2f16a83426f86bad6eca7f240fac12b25cbcc63df0fec41f625407184e044898602d66483715315340 xinit-1.4.1.tar.bz2
-2296c10a5d74bff42d9642a4787dc3f2b77492fc81174af48dc88cd3c8fa49c7f70147b790d8c82c2df6c910d9d412965999e7a342ca28697a97b5d522669edd 06_move_serverauthfile_into_tmp.patch
+sha512sums="4b62c2edd97b40133577cbba88b3f31b36c5634b4eb667ef0c302e8358dc1c55a255abe42aaadc910d8aa9ea0e3add157a12a301382f1cdbe091df4e1215fae0 xinit-1.4.2.tar.xz
+2c4527cdb7d56b129266c7ba68018eb1b0b794a8a1c0b0e532b11afc243fca36e2f94595b79cf65b6e69d89640edaef94b14295d163cf49d076456ece654d9fb 06_move_serverauthfile_into_tmp.patch
1b19f800d1f64e49b533929ea6b9580d6dc24b680e1461edcc5784ba9fbb387fef57576b1e3d4bc67cb0ff2b248b670c148a3c7a350e1062bb9b95e9a2ba7805 xinitrc
448bc6c7987a4735b6584e307cd5c53092b1a338043293f5f110d11818dd1b80508401a3b6f09525c82a16a88f293b37011d8ca112460b0f95d26897e3e0619e xsession.skel
b311032a751bb21d6c49ffe1dfc67beb577b5d5bec4a4c12612c4c0f9b9d6d2a07f7435c7d2fe9ab4c318546ee0cb9d4ff3f7ef908e756a818da529e913e667d Xsession
diff --git a/user/xinput/APKBUILD b/user/xinput/APKBUILD
index 2cb5822fe..a22c54024 100644
--- a/user/xinput/APKBUILD
+++ b/user/xinput/APKBUILD
@@ -1,20 +1,20 @@
# Contributor: Johannes Matheis <jomat+alpinebuild@jmt.gr>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=xinput
-pkgver=1.6.2
+pkgver=1.6.4
pkgrel=0
pkgdesc="Utility to configure and test XInput devices"
-url="http://xorg.freedesktop.org/"
+url="https://www.X.Org/"
arch="all"
options="!check" # No test suite.
license="X11"
+depends=""
makedepends="util-macros libx11-dev libxext-dev libxi-dev libxrandr-dev
libxinerama-dev"
subpackages="$pkgname-doc"
-source="http://www.x.org/archive/individual/app/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.Org/archive/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,8 +26,7 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="dbef3a87dd47bb8c593f1305bea7978697a12434a4992584e4124d745bb366812366b44fc205159137a3db6f7b8338effd1b90641a194497b19159b9fd91939e xinput-1.6.2.tar.bz2"
+sha512sums="6734860852715e5cb9d26259a173e42413fc037546ed7fa4173ffa802c2619ee0322bed228a28cd1911be759d860070867d9b89b115f37323cca1c9ef75354b9 xinput-1.6.4.tar.xz"
diff --git a/user/xisxwayland/APKBUILD b/user/xisxwayland/APKBUILD
new file mode 100644
index 000000000..70c570c5a
--- /dev/null
+++ b/user/xisxwayland/APKBUILD
@@ -0,0 +1,32 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xisxwayland
+pkgver=2
+pkgrel=0
+pkgdesc="Determine if an X server is Xwayland"
+url="https://www.X.Org/"
+arch="all"
+license="MIT"
+depends=""
+makedepends="meson ninja libx11-dev libxrandr-dev"
+subpackages="$pkgname-doc"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
+
+build() {
+ meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ . build
+ ninja -C build
+}
+
+check() {
+ ninja -C build test
+}
+
+package() {
+ DESTDIR="$pkgdir" ninja -C build install
+}
+
+sha512sums="b89e19c85a5cd7e62a52e22772f80f03bfea069e31412ca11ac38174c4a2994be559e9d5fb49e6d1921b3f1b06ee71b50ede48990a1e7804a96207b08fc7827f xisxwayland-2.tar.xz"
diff --git a/user/xkbcomp/APKBUILD b/user/xkbcomp/APKBUILD
index b79b4593d..5476a4d5e 100644
--- a/user/xkbcomp/APKBUILD
+++ b/user/xkbcomp/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xkbcomp
-pkgver=1.4.2
+pkgver=1.4.7
pkgrel=0
pkgdesc="Keyboard layout compiler for X11"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="MIT AND X11"
depends=""
makedepends="libx11-dev libxkbfile-dev util-macros"
subpackages="$pkgname-dev $pkgname-doc"
-source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="b00d1eb08c19be86044418c8ea3bfc3c3973406c481878270138a70ed9dab348acb8e4d0af8678879598ffbd7df1c640a63d0abad3d7481758be99af8dd7734e xkbcomp-1.4.2.tar.bz2"
+sha512sums="6f468dce9d2499ab1022f4288d46f66af149dac0a161fb5b9dc0c262bc70c2c3d254db2c6fb5df1e2793c822e2d55c6da5fd037ce523a555b7c3de23e35c49ef xkbcomp-1.4.7.tar.xz"
diff --git a/user/xkbevd/APKBUILD b/user/xkbevd/APKBUILD
index 2402772b7..e615f534f 100644
--- a/user/xkbevd/APKBUILD
+++ b/user/xkbevd/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xkbevd
-pkgver=1.1.4
+pkgver=1.1.5
pkgrel=0
pkgdesc="Event daemon for XKB"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="MIT"
depends=""
makedepends="cmd:yacc libx11-dev libxkbfile-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xkbevd-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="7628eddd0e1dc0c4df8e61eb3f6a6bf0e9d92a87e96bb2f5248ba5bd3d99d868885c36860b78e8ea2eaba3bb9a420067ef95c4d58c1254fa3d12fb25dd4e60e7 xkbevd-1.1.4.tar.bz2"
+sha512sums="9e4a56484771e5eb5444fbd11e7d0bb952a2746eea79b84298e2000ada96896d501b886727c4ef08c120b5dcce550fca2d3e3dd762f4ca0327c38d9609961c5b xkbevd-1.1.5.tar.xz"
diff --git a/user/xkbprint/APKBUILD b/user/xkbprint/APKBUILD
index 3661c7da9..c4ba6c1b3 100644
--- a/user/xkbprint/APKBUILD
+++ b/user/xkbprint/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xkbprint
-pkgver=1.0.4
+pkgver=1.0.6
pkgrel=0
pkgdesc="Tool to generate PostScript descriptions of XKB keyboard layouts"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="libx11-dev libxkbfile-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xkbprint-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="bb65a93ae737cd4b78787fef51972f4d0072a272166f82103bfaa92cf275db6363fae3530539b7c9a4139f6b87512019ac15ab3478d4ad05967ad18a8e80033a xkbprint-1.0.4.tar.bz2"
+sha512sums="a1c2401b2a2ef4c6bd2efc18923ecb176adcf38b6c5dfdce25f22f1f5ab21e25f494b25dac25b1765fb9a0f6acc24d191cd41b9a098a9e3c6eaf9a9df490be29 xkbprint-1.0.6.tar.xz"
diff --git a/user/xkbutils/APKBUILD b/user/xkbutils/APKBUILD
index d627a69a8..e8d9375e0 100644
--- a/user/xkbutils/APKBUILD
+++ b/user/xkbutils/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xkbutils
-pkgver=1.0.4
+pkgver=1.0.6
pkgrel=0
pkgdesc="Utilities for managing keyboards using XKB"
url="https://www.X.Org/"
@@ -10,17 +10,9 @@ license="MIT AND X11"
depends=""
makedepends="libx11-dev libxaw-dev libxt-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xkbutils-$pkgver.tar.bz2"
-
-prepare() {
- cd "$builddir"
- default_prepare
- chmod a+w config.sub
- update_config_sub
-}
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="5bb6cb52ac02a4ec18332559853815585ca86e00e8c6452483af10c4db75811fe00952575dbbad5b7d03b9d6498830fb45d617b1b3c5c1cea8445f1131856a4d xkbutils-1.0.4.tar.bz2"
+sha512sums="78fb7ab4ef6642040992529444944080aca7a2ec4118f9a64c45dacc37e4041181df7bcd1f4270e11b9fbc8bd60a131b4702d2aa95741d89c54582ff8a8f896e xkbutils-1.0.6.tar.xz"
diff --git a/user/xkeyboard-config/APKBUILD b/user/xkeyboard-config/APKBUILD
index 9a49f7ffe..fd865dcac 100644
--- a/user/xkeyboard-config/APKBUILD
+++ b/user/xkeyboard-config/APKBUILD
@@ -1,35 +1,30 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xkeyboard-config
-pkgver=2.26
+pkgver=2.42
pkgrel=0
pkgdesc="Keyboard configuration files for X11"
url="https://www.freedesktop.org/wiki/Software/XKeyboardConfig"
arch="noarch"
+options="!check" # requires gawk
license="X11 AND MIT"
depends=""
-makedepends="intltool libx11-dev xkbcomp"
-subpackages="$pkgname-lang"
-source="https://www.X.Org/releases/individual/data/xkeyboard-config/xkeyboard-config-$pkgver.tar.bz2"
+makedepends="intltool libx11-dev python3 xkbcomp libxslt meson"
+subpackages="$pkgname-doc $pkgname-lang"
+source="https://www.X.Org/releases/individual/data/xkeyboard-config/xkeyboard-config-$pkgver.tar.xz"
build() {
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
- --prefix=/usr \
- --with-xkb-base=/usr/share/X11/xkb \
- --with-xkb-rules-symlink=xorg \
- --enable-compat-rules=yes
- make
-}
-
-check() {
- make check
+ meson setup \
+ -Dprefix=/usr \
+ -Dxkb-base=/usr/share/X11/xkb \
+ -Dxorg-rules-symlinks=true \
+ build
+ meson compile -C build
}
package() {
- make DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" meson install -C build
rm -f "$pkgdir"/usr/share/X11/xkb/compiled
install -m755 -d "$pkgdir"/var/lib/xkb
}
-sha512sums="5c8a31f7a6ad5daed8a3fceb56230b2e2fc04a25f52a43b3b4ea81e4a6ab15c52869f749c4b747d855cd4b618c04bcbb40e85dec7eab31fbe3bd45e8c9b755ef xkeyboard-config-2.26.tar.bz2"
+sha512sums="654436ae21b9deb3b193847403b652cc5c19aa665a9c9168598fc6ac7af83ac04d40684d9eb99dd4db97c21e5100cfeed06b25e2b041eb9fdf3c05ef95a891a9 xkeyboard-config-2.42.tar.xz"
diff --git a/user/xkill/APKBUILD b/user/xkill/APKBUILD
index bc4d3cceb..6d06d93db 100644
--- a/user/xkill/APKBUILD
+++ b/user/xkill/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xkill
-pkgver=1.0.5
+pkgver=1.0.6
pkgrel=0
pkgdesc="Kill X11 clients using the mouse cursor"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="libx11-dev libxmu-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xkill-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="4603a1794f114f5cea2c885020c9d073c8421d1e785c99ff6b936ae97139c8dac8020a187b5bbd0fa6d56ed6fab879441b42ba900cc5f2f5a534dafdc86b9249 xkill-1.0.5.tar.bz2"
+sha512sums="a755a8db51d7860b9942161776390007b9b530c2f7fcf8ddb3383311d36d185a6f08a44c5f6f7735576b146902e66aca21cbd7e746c1289d035e79332e8173b6 xkill-1.0.6.tar.xz"
diff --git a/user/xload/APKBUILD b/user/xload/APKBUILD
index 71414484b..c2acaf520 100644
--- a/user/xload/APKBUILD
+++ b/user/xload/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xload
-pkgver=1.1.3
+pkgver=1.1.4
pkgrel=0
pkgdesc="Load average monitor for X11"
url="https://www.X.Org/"
@@ -11,10 +11,9 @@ depends=""
makedepends="libx11-dev libxaw-dev libxmu-dev libxt-dev util-macros
xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xload-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
CFLAGS="$CFLAGS -DRLOADSTUB" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -26,13 +25,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="8dbc4f0cee7b30d7381be819152b27653d9b0049266e59bde2e2c972a88c4f2bdea766fc407bbdfef15d0aab30fedc756189a1048170a812853133a5094fe7a5 xload-1.1.3.tar.bz2"
+sha512sums="114babe4e5a60f4713f9e4627ee0a1bbb2f1f238cb46f24c38aecff67f25e6b0f58cbd554c71095ddc2b01398adbfa379550a34c23c413db52157648028554f2 xload-1.1.4.tar.xz"
diff --git a/user/xlogo/APKBUILD b/user/xlogo/APKBUILD
index ff675f734..e665bfa17 100644
--- a/user/xlogo/APKBUILD
+++ b/user/xlogo/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xlogo
-pkgver=1.0.5
+pkgver=1.0.6
pkgrel=0
pkgdesc="Display the X11 logo"
url="https://www.X.Org/"
@@ -11,7 +11,7 @@ depends=""
makedepends="libsm-dev libx11-dev libxaw-dev libxext-dev libxmu-dev libxt-dev
util-macros"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xlogo-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
./configure \
@@ -32,4 +32,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="0d78e269b0be3c5de71de7f362b896bfd9934ecd9d0361b3302399b1269e029c4a9f35418d792121a1edc34405d753f9d69c996cc3a69ac717f2b0d1f736406b xlogo-1.0.5.tar.bz2"
+sha512sums="f0c921e0e34d2c0959d95ca0fcb7488395043280b8b35bcad4e8a528224f2b38581fbf60e82239d06760ecd637692cb29c3b1c0c46ac7f269f692a139d954ea0 xlogo-1.0.6.tar.xz"
diff --git a/user/xlsatoms/APKBUILD b/user/xlsatoms/APKBUILD
index 5e9ff64a0..701e8760b 100644
--- a/user/xlsatoms/APKBUILD
+++ b/user/xlsatoms/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xlsatoms
-pkgver=1.1.3
+pkgver=1.1.4
pkgrel=0
pkgdesc="List interned atoms in an X11 server"
url="https://www.X.Org/"
@@ -10,7 +10,7 @@ license="X11"
depends=""
makedepends="libxcb-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/xlsatoms-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
./configure \
@@ -31,4 +31,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="c267ccfdc5a83e834bfb5c3b144e22642badcadef4eb146eeec2df6fe6f85e9379500ae4219912c70fa2e535036a1a96cf496381f5d814e79af075e03c975f30 xlsatoms-1.1.3.tar.bz2"
+sha512sums="82f0d1e17850770537eac82947eff4514639f8122bd864e02685ede49db110a4c90c7782702ffb677a2b581f3eacd10dba80e63e29e7a1ed1c9255ee163fe0c4 xlsatoms-1.1.4.tar.xz"
diff --git a/user/xlsclients/APKBUILD b/user/xlsclients/APKBUILD
index 81b470a1d..509411bbc 100644
--- a/user/xlsclients/APKBUILD
+++ b/user/xlsclients/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xlsclients
-pkgver=1.1.4
+pkgver=1.1.5
pkgrel=0
pkgdesc="List running clients on an X11 server"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11 AND MIT"
depends=""
makedepends="libxcb-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xlsclients-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="42fd848d88d3cf31168a37fed63f9f5b60ddc4f36be2956b354e574c93129d75f29e005d6631784380bcef27860b54c64f419ca18ad77f092f4520dec47b10f4 xlsclients-1.1.4.tar.bz2"
+sha512sums="3896643378603876438772475e89ad5c066f98c16593245db5fa066418ff793798247f976d2bf7aa401d2590fc9807b80c9758bcbcc91566f02ceb856d9702bf xlsclients-1.1.5.tar.xz"
diff --git a/user/xlsfonts/APKBUILD b/user/xlsfonts/APKBUILD
index 054386397..dcb6ef99a 100644
--- a/user/xlsfonts/APKBUILD
+++ b/user/xlsfonts/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xlsfonts
-pkgver=1.0.6
+pkgver=1.0.8
pkgrel=0
pkgdesc="List available fonts on an X11 server"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="libx11-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xlsfonts-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="052a3b1dec23cb20fdfacd4500cb836feb3b888bf568a548ea71deb58a4ba10a1ad5392d658e95272c6d4a1832edf1f19c3de2498b78dca82c43ee52800a30c0 xlsfonts-1.0.6.tar.bz2"
+sha512sums="401c86d902f173c440c08a22067a51e7238949c8d3c71eba7a8df11955edfec27525c8cbbcf2e96ed444fa20b15f98cf65a01343215d1ed9ba84fce849d02927 xlsfonts-1.0.8.tar.xz"
diff --git a/user/xmag/APKBUILD b/user/xmag/APKBUILD
index 85191ca8d..b35dbf999 100644
--- a/user/xmag/APKBUILD
+++ b/user/xmag/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xmag
-pkgver=1.0.6
+pkgver=1.0.7
pkgrel=0
pkgdesc="Tool to magnify part of an X11 screen"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="libx11-dev libxaw-dev libxmu-dev libxt-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xmag-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="98f3c8e0c58f31cd4f1736ba9c5cd68dba3b2e2de6191988de8ae3e91b1d310803461840189ad56be45ee57c9ca05a2c63544a49b02ce6f79f2ebc14c59613de xmag-1.0.6.tar.bz2"
+sha512sums="d35ac5d977b9f3bd03fb919bf178f68bdbc6ef2a57915b407d836fce0582f5cb78d0b79043bb6f8d015464ca113deb09469c3b724aed03901a4c3fc4a9982984 xmag-1.0.7.tar.xz"
diff --git a/user/xman/APKBUILD b/user/xman/APKBUILD
index 8bc1b8a44..be5a3f303 100644
--- a/user/xman/APKBUILD
+++ b/user/xman/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xman
-pkgver=1.1.4
+pkgver=1.2.0
pkgrel=0
pkgdesc="Read manual pages from the comfort of X11"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends="groff"
makedepends="libxaw-dev libxt-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xman-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/xman-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="785e973eb15b0300de08aace24f3604dfee61421c7f64ea4cde2e280480bf5d3ad797ab8208668dc023a375494f8db7534fbcaa1c1ef16e79464fdd017b5da68 xman-1.1.4.tar.bz2"
+sha512sums="072dba172fd30606c1e185c6e50b3b9a9ec5e430eb2ac7f0c476e1c2de998e8c0b5fbf53de20a7339d39a8990255e77fe72d3928b43d055e8463f8069389d192 xman-1.2.0.tar.xz"
diff --git a/user/xmessage/APKBUILD b/user/xmessage/APKBUILD
index 145daeec0..544ee0c8b 100644
--- a/user/xmessage/APKBUILD
+++ b/user/xmessage/APKBUILD
@@ -1,17 +1,17 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xmessage
-pkgver=1.0.5
+pkgver=1.0.7
pkgrel=0
pkgdesc="Display a message or query in a window"
url="https://www.X.Org/"
arch="all"
license="X11"
+depends=""
makedepends="libx11-dev libxaw-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/${pkgname}-${pkgver}.tar.bz2"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -23,13 +23,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="a8423c3986b1576fa67800c315a605a527bb9a8f594ac269a736ae7b91eed0d4d83deb89148197dc3cd3f0e51894146958ce2979f78e97dcdb99c5326e34dabe xmessage-1.0.5.tar.bz2"
+sha512sums="0c44f7973f7ed8d7993aaeb457a8921301cb0de905e45d92bd99d49463223b54c704a28bef376fe6038b4aec7156be873a34294741c8537bb7a5a57e1f152cce xmessage-1.0.7.tar.xz"
diff --git a/user/xmh/APKBUILD b/user/xmh/APKBUILD
index d7594e546..541b1c716 100644
--- a/user/xmh/APKBUILD
+++ b/user/xmh/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xmh
-pkgver=1.0.3
+pkgver=1.0.5
pkgrel=0
pkgdesc="X11 integration for MH message handling system"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends="xbitmaps"
makedepends="libx11-dev libxaw-dev libxmu-dev libxt-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xmh-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="acc1fb65fe69891272a25f3f45e7e1e7c57ad075bbaac7b3b53577853fbb07598d3ad3ea01130db6b10e3c347550ce23d709363440cbd73897bc39411640c251 xmh-1.0.3.tar.bz2"
+sha512sums="fbf5c7e7994832b1df0db9464aacddba6a445c6fe6b8d2e09c311dc27edb96f6e198816ee21b5ee361fb9637302ce54da2691c784e03ab5c1af8590f00b48bab xmh-1.0.5.tar.xz"
diff --git a/user/xmlsec/APKBUILD b/user/xmlsec/APKBUILD
index fb55ea436..b8edc8b29 100644
--- a/user/xmlsec/APKBUILD
+++ b/user/xmlsec/APKBUILD
@@ -1,54 +1,68 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=xmlsec
-pkgver=1.2.27
+pkgver=1.3.6
+_pkgname="$pkgname${pkgver%%.*}"
pkgrel=0
pkgdesc="C-based XML signature and encryption syntax and processing library"
-url="https://github.com/lsh123/$pkgname/"
+url="https://www.aleksey.com/xmlsec/"
arch="all"
-options="libtool"
license="MIT"
depends=""
checkdepends="nss-tools"
-makedepends="$depends_dev libxml2-dev libxslt-dev nss-dev openssl-dev
- autoconf automake libtool"
-subpackages="$pkgname-nss $pkgname-dev $pkgname-doc"
-source="$url/archive/$pkgname-${pkgver//./_}.tar.gz"
-builddir="$srcdir/$pkgname-$pkgname-${pkgver//./_}"
-
-prepare() {
- cd "$builddir"
- default_prepare
- ./autogen.sh
-}
+makedepends="gnutls-dev libgcrypt-dev libtool libxml2-dev libxslt-dev
+ nss-dev openssl-dev"
+subpackages="$pkgname-dev $pkgname-doc $pkgname-gcrypt $pkgname-gnutls
+ $pkgname-nss"
+source="https://github.com/lsh123/xmlsec/releases/download/${pkgver}/${_pkgname}-${pkgver}.tar.gz
+ testrun.patch"
+builddir="$srcdir/$_pkgname-$pkgver"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--disable-static \
--enable-pkgconfig \
- --with-openssl=/usr \
- --without-gnutls \
- --without-gcrypt \
- --with-default-crypto='openssl'
+ --with-openssl \
+ --with-gnutls \
+ --with-gcrypt \
+ --with-default-crypto='openssl' \
+ --enable-md5=no
make
}
check() {
- cd "$builddir"
make -k check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -m755 -d "$pkgdir/usr/share/licenses/$pkgname"
install -m644 'COPYING' "$pkgdir/usr/share/licenses/$pkgname/"
}
+dev() {
+ default_dev
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/xmlsec1Conf.sh "$subpkgdir"/usr/lib
+}
+
+gcrypt() {
+ pkgdesc="xmlsec gcrypt plugin"
+ install_if="$pkgname=$pkgver-r$pkgrel gcrypt"
+ mkdir -p "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/lib/libxmlsec1-gcrypt.so* "$subpkgdir"/usr/lib/
+}
+
+gnutls() {
+ pkgdesc="xmlsec gnutls plugin"
+ install_if="$pkgname=$pkgver-r$pkgrel gnutls"
+ mkdir -p "$subpkgdir"/usr/lib/
+ mv "$pkgdir"/usr/lib/libxmlsec1-gnutls.so* "$subpkgdir"/usr/lib/
+}
+
nss() {
pkgdesc="xmlsec NSS plugin"
install_if="$pkgname=$pkgver-r$pkgrel nss"
@@ -56,4 +70,5 @@ nss() {
mv "$pkgdir"/usr/lib/libxmlsec1-nss.so* "$subpkgdir"/usr/lib/
}
-sha512sums="261528086adc379942861b5950e5b34ffa52a49d0fedcb46bece50c920fd56af4f0472494419bfa5e3cb40abda335b3e9c11466c42273f125b50d204b4604798 xmlsec-1_2_27.tar.gz"
+sha512sums="f38ccc7af0026973a94b1b6f95accd70a2a2c4398985a0002c66d7b43bff6d6bcfb09ae62046cbdac82a0890622aead2df710cb0ab373c3bdf6159797613cdaa xmlsec1-1.3.6.tar.gz
+d29fad9689d6c8d9583802143bdfa38b27fbcc2e54232a052138da08f495b40de677849e3c1062070ef2d2efe59357d6efa6b7df429ea6563ea6b6cb126c3b6f testrun.patch"
diff --git a/user/xmlsec/testrun.patch b/user/xmlsec/testrun.patch
new file mode 100644
index 000000000..6666f7d28
--- /dev/null
+++ b/user/xmlsec/testrun.patch
@@ -0,0 +1,11 @@
+--- xmlsec1-1.3.3/tests/testrun.sh 2024-04-05 18:19:20.980000000 +0000
++++ xmlsec1-1.3.3/tests/testrun.sh 2024-04-05 18:19:36.110000000 +0000
+@@ -769,7 +769,7 @@
+ rm -rf $tmpfile $tmpfile.2 tmpfile.3
+
+ # run tests
+-source "$testfile"
++. "$testfile"
+
+ # calculate success
+ percent_success=0
diff --git a/user/xmodmap/APKBUILD b/user/xmodmap/APKBUILD
index abf6c45ba..880eca560 100644
--- a/user/xmodmap/APKBUILD
+++ b/user/xmodmap/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xmodmap
-pkgver=1.0.10
+pkgver=1.0.11
pkgrel=0
pkgdesc="Utility for modifying key and mouse button mappings in X11"
url="https://www.X.Org/"
@@ -10,9 +10,9 @@ license="MIT AND X11"
depends=""
makedepends="libx11-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
-build () {
+build() {
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,4 +31,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="324c7dcef843186088f16b3bc47485eb3c9b4331e56ce43b692deb4bb3d4f4f27512480e91a379cceac8383df920dc5e37cd825246b50b6343291cec48134c04 xmodmap-1.0.10.tar.bz2"
+sha512sums="a78f916f048d2017f079733becc99232c087c360ece61ec6c4fa4b5b130b96a1b10c4ce1b64a15bdcab7ea05de3c7f16035503d5be6f8ce1a7612ce71d558510 xmodmap-1.0.11.tar.xz"
diff --git a/user/xmore/APKBUILD b/user/xmore/APKBUILD
index 75514d1f1..02d05f7be 100644
--- a/user/xmore/APKBUILD
+++ b/user/xmore/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xmore
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="Display text files using X11"
url="https://www.X.Org/"
@@ -10,7 +10,7 @@ license="X11"
depends=""
makedepends="libxaw-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/xmore-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/xmore-$pkgver.tar.xz"
build() {
./configure \
@@ -31,4 +31,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="e3e44831cd87a54bb585f80ef0d87f69dc35f6c834a73241aad9f6e2b0999b53c51a0a3f915a94ae4d6dc9bdfb9f60b6576f0bdcec441443abd98efa6c51b1d3 xmore-1.0.3.tar.bz2"
+sha512sums="52ac9bca78431f5f830b4607ff2cc375ab90e11380e0d4d3e591689359806cc7c7ec92c713d4d65742f40407e4f407c372759e5d03e30a30dfd866e6d5c6f6f7 xmore-1.0.4.tar.xz"
diff --git a/user/xmoto/APKBUILD b/user/xmoto/APKBUILD
index 62bbdd1e7..280fc3dd5 100644
--- a/user/xmoto/APKBUILD
+++ b/user/xmoto/APKBUILD
@@ -4,28 +4,27 @@ pkgname=xmoto
pkgver=0.5.11
pkgrel=0
pkgdesc="Challenging 2D motocross platform game"
-url="https://xmoto.tuxfamily.org/"
+url=" "
arch="all"
license="GPL-2.0+"
depends=""
makedepends="bzip2-dev curl-dev glu-dev libjpeg-turbo-dev libpng-dev
- libxdg-basedir-dev libxml2-dev lua5.3-dev mesa-dev ode-dev sdl-dev
- sdl_mixer-dev sdl_net-dev sdl_ttf-dev sqlite-dev zlib-dev"
+ libglvnd-dev libxdg-basedir-dev libxml2-dev lua5.3-dev ode-dev sdl-dev
+ sdl_mixer-dev sdl_net-dev sdl_ttf-dev sqlite-dev zlib-dev
+ autoconf automake"
subpackages="$pkgname-doc $pkgname-lang"
-source="http://download.tuxfamily.org/xmoto/xmoto/0.5.11/xmoto-$pkgver-src.tar.gz
+source="https://distfiles.adelielinux.org/source/archive/$pkgname-$pkgver/$pkgname-$pkgver-src.tar.gz
stupid-lua.patch
utf8.patch
"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
rm -r src/ode
}
build() {
- cd "$builddir"
./bootstrap
CPPFLAGS="$CPPFLAGS -D_GLIBCXX_USE_CXX11_ABI=0" \
LDFLAGS="$LDFLAGS $(pkg-config --libs lua)" \
@@ -41,12 +40,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -D -m644 "$builddir"/extra/xmoto.desktop \
"$pkgdir"/usr/share/applications/xmoto.desktop
diff --git a/user/xorg-apps/APKBUILD b/user/xorg-apps/APKBUILD
index be8cce184..a40d9332c 100644
--- a/user/xorg-apps/APKBUILD
+++ b/user/xorg-apps/APKBUILD
@@ -9,16 +9,15 @@ license="MIT"
options="!check" # Metapacakge
subpackages=""
depends="appres bdftopcf beforelight bitmap editres fonttosfnt fslsfonts
- fstobdf iceauth ico lbxproxy listres luit mkcomposecache mkfontdir
- mkfontscale oclock proxymngr rendercheck rgb setxkbmap showfont smproxy
- transset twm viewres x11perf xauth acpilight xbiff xbitmaps xcalc
- xclipboard xclock xcmsdb xcompmgr xconsole xcursorgen xdbedizzy
- xditview xdpyinfo xdriinfo xedit xev xeyes xfd xfindproxy xfontsel xfs
- xfsinfo xfwp xgamma xgc xhost xinit xinput xkbcomp xkbevd xkbprint
- xkbutils xkill xload xlogo xlsatoms xlsclients xlsfonts xmag xman
- xmessage xmh xmodmap xmore xpr xprop xrandr xrdb xrefresh xrx xscope
- xset xsetmode xsetpointer xsetroot xsm xstdcmap xvidtune xvinfo xwd
- xwininfo xwud"
+ fstobdf iceauth ico listres luit mkcomposecache mkfontscale oclock
+ rendercheck rgb setxkbmap showfont smproxy transset twm viewres x11perf
+ xauth acpilight xbiff xbitmaps xcalc xclipboard xclock xcmsdb xcompmgr
+ xconsole xcursorgen xdbedizzy xditview xdpyinfo xdriinfo xedit xev
+ xeyes xfd xfindproxy xfontsel xfs xfsinfo xfwp xgamma xgc xhost xinit
+ xinput xkbcomp xkbevd xkbprint xkbutils xkill xload xlogo xlsatoms
+ xlsclients xlsfonts xmag xman xmessage xmh xmodmap xmore xpr xprop
+ xrandr xrdb xrefresh xrx xscope xset xsetmode xsetpointer xsetroot xsm
+ xstdcmap xvidtune xvinfo xwd xwininfo xwud"
source=""
package() {
diff --git a/user/xorg-cf-files/APKBUILD b/user/xorg-cf-files/APKBUILD
index 5a438d2bf..dbd076a7c 100644
--- a/user/xorg-cf-files/APKBUILD
+++ b/user/xorg-cf-files/APKBUILD
@@ -1,20 +1,18 @@
-# Contributor: Johannes Matheis <jomat+alpinebuild@jmt.gr>
# Maintainer: Dan Theisen <djt@hxx.in>
pkgname=xorg-cf-files
-pkgver=1.0.6
+pkgver=1.0.8
pkgrel=0
pkgdesc="Data files for the imake utility"
-url="http://xorg.freedesktop.org/"
+url="https://www.X.Org/"
arch="noarch"
+options="!check" # This package has no test suite.
license="X11"
-options="!check" # This package has no testsuite
depends=""
-makedepends=""
+makedepends="util-macros"
subpackages="$pkgname-doc"
-source="http://xorg.freedesktop.org/releases/individual/util/${pkgname}-${pkgver}.tar.bz2"
+source="https://www.X.Org/releases/individual/util/${pkgname}-${pkgver}.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,12 +25,9 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
- install -m755 -d "${pkgdir}/usr/share/licenses/${pkgname}"
- install -m644 COPYING "${pkgdir}/usr/share/licenses/${pkgname}/"
+ install -m755 -d "$pkgdir"/usr/share/licenses/$pkgname
+ install -m644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/
}
-md5sums="28649f34fa23143f1945aa2750e1472a xorg-cf-files-1.0.6.tar.bz2"
-sha256sums="4dcf5a9dbe3c6ecb9d2dd05e629b3d373eae9ba12d13942df87107fdc1b3934d xorg-cf-files-1.0.6.tar.bz2"
-sha512sums="1749a5fbcda2c15c300028abce79a3304cfb10f215bf98cf30558144eb64f9fa06a69203159f44405224ed567ac5bc0ff1222e3656367f69acc99f44871424fa xorg-cf-files-1.0.6.tar.bz2"
+sha512sums="cc633af889cd82346c3098df9185245c21aa9db7484343f8be9719f6e0b1fc0a9b09afb13b9b864668aa51944f2da797bbe896c807f629e89fc91506e6e63fb9 xorg-cf-files-1.0.8.tar.xz"
diff --git a/user/xorg-drivers/APKBUILD b/user/xorg-drivers/APKBUILD
index c6442655d..2a12b0087 100644
--- a/user/xorg-drivers/APKBUILD
+++ b/user/xorg-drivers/APKBUILD
@@ -1,26 +1,36 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xorg-drivers
-pkgver=1.0
-pkgrel=0
+pkgver=1.1
+pkgrel=2
pkgdesc="Drivers for X.Org systems"
url="https://www.X.Org/"
arch="all"
license="MIT"
options="!check !dbg" # Metapacakge
subpackages=""
-depends="xf86-input-evdev xf86-input-joystick xf86-input-keyboard
- xf86-input-libinput xf86-input-mouse xf86-input-synaptics
- xf86-input-void xf86-input-wacom
+depends="xf86-input-evdev xf86-input-joystick xf86-input-libinput
+ xf86-input-mouse xf86-input-synaptics xf86-input-void xf86-input-wacom
- xf86-video-ast xf86-video-ati xf86-video-cirrus xf86-video-dummy
- xf86-video-fbdev xf86-video-freedreno xf86-video-mach64 xf86-video-mga
+ xf86-video-amdgpu xf86-video-ast xf86-video-ati xf86-video-cirrus
+ xf86-video-dummy xf86-video-fbdev xf86-video-mach64 xf86-video-mga
xf86-video-nouveau xf86-video-openchrome xf86-video-qxl xf86-video-r128
- xf86-video-tdfx"
+ xf86-video-rendition xf86-video-sis xf86-video-sisusb xf86-video-tdfx
+ xf86-video-trident xf86-video-v4l xf86-video-vesa"
case $CTARGET_ARCH in
pmmx)
depends="$depends xf86-video-geode xf86-video-intel" ;;
x86_64)
depends="$depends xf86-video-intel" ;;
+ sparc*)
+ depends="$depends xf86-video-sunffb xf86-video-sunleo" ;;
+esac
+case $CTARGET_ARCH in
+ aarch64*|arm*)
+ depends="$depends xf86-video-freedreno";;
+ pmmx|x86*|i528)
+ depends="$depends xf86-video-vboxvideo";;
+ *)
+ depends="$depends xf86-video-siliconmotion xf86-video-vmware";;
esac
source=""
diff --git a/user/xorg-gtest/APKBUILD b/user/xorg-gtest/APKBUILD
index 572976147..81f81517b 100644
--- a/user/xorg-gtest/APKBUILD
+++ b/user/xorg-gtest/APKBUILD
@@ -1,15 +1,16 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xorg-gtest
pkgver=0.7.1
pkgrel=0
-pkgdesc="X extensions to googletest"
+pkgdesc="X11 extensions to Google Test"
url="https://gitlab.freedesktop.org/xorg/test/xorg-gtest"
arch="noarch"
options="!check" # tests require X
license="MIT AND BSD-3-Clause"
depends=""
-makedepends="libx11-dev libxi-dev util-macros xorg-server-dev xf86-video-dummy"
+makedepends="libx11-dev libxi-dev util-macros xorg-server-dev xf86-video-dummy
+ autoconf automake"
subpackages="$pkgname-dev"
source="https://gitlab.freedesktop.org/xorg/test/xorg-gtest/-/archive/xorg-gtest-$pkgver/xorg-gtest-xorg-gtest-$pkgver.tar.bz2
remove-ridiculous-va_list-hacks.patch
@@ -17,13 +18,11 @@ source="https://gitlab.freedesktop.org/xorg/test/xorg-gtest/-/archive/xorg-gtest
builddir="$srcdir"/$pkgname-$pkgname-$pkgver
prepare() {
- cd "$builddir"
default_prepare
./autogen.sh
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -35,12 +34,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
DESTDIR="$pkgdir" make install
for i in gtest gtest-spi; do
rm "$pkgdir"/usr/include/gtest/"$i".h
diff --git a/user/xorg-server/20-modules.conf b/user/xorg-server/20-modules.conf
deleted file mode 100644
index 4ddcdd461..000000000
--- a/user/xorg-server/20-modules.conf
+++ /dev/null
@@ -1,18 +0,0 @@
-Section "Module"
- Load "exa"
-# Load "wfb"
-
- Load "dri"
- Load "dri2"
- Load "glx"
-
- Load "int10"
- Load "vbe"
- Load "fb"
- Load "shadowfb"
- Load "shadow"
- Load "vgahw"
- Load "evdev"
- Load "fbdevhw"
- Load "glamoregl"
-EndSection
diff --git a/user/xorg-server/APKBUILD b/user/xorg-server/APKBUILD
index d76a21347..2c64a7c54 100644
--- a/user/xorg-server/APKBUILD
+++ b/user/xorg-server/APKBUILD
@@ -1,34 +1,72 @@
# Contributor: Łukasz Jendrysik <scadu@yandex.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xorg-server
-pkgver=1.20.4
+pkgver=21.1.16
pkgrel=0
pkgdesc="X.Org X11 server"
url="https://www.X.Org/"
arch="all"
-license="MIT"
options="suid"
-subpackages="$pkgname-dbg $pkgname-dev $pkgname-doc xvfb $pkgname-xephyr
- $pkgname-xnest"
+license="MIT"
+depends="font-cursor-misc font-misc-misc xkeyboard-config xkbcomp xinit
+ xorg-server-protocol
+ "
+depends_dev="libepoxy-dev libglvnd-dev libpciaccess-dev libxfont2-dev"
+makedepends="$depends_dev meson eudev-dev libdrm-dev
+ libepoxy-dev pixman-dev libx11-dev libxdamage-dev libxinerama-dev
+ libxkbfile-dev libxkbui-dev libxv-dev libxxf86dga-dev libxxf86misc-dev
+ libxcvt-dev mesa-dev xkbcomp-dev xcb-util-dev xcb-util-image-dev
+ xcb-util-keysyms-dev xcb-util-renderutil-dev xcb-util-wm-dev xorgproto-dev
+ xtrans openssl-dev perl zlib-dev
+ "
# the modesetting driver is now shipped with xorg server
replaces="xf86-video-modesetting"
-depends="font-cursor-misc font-misc-misc xkeyboard-config xkbcomp xinit"
-depends_dev="libepoxy-dev libxfont2-dev mesa-dev"
-makedepends="$depends_dev autoconf automake libtool util-macros
- eudev-dev libpciaccess-dev libdrm-dev libepoxy-dev pixman-dev
- libx11-dev libxdamage-dev libxinerama-dev libxkbfile-dev libxkbui-dev
- libxv-dev libxxf86dga-dev libxxf86misc-dev xcb-util-dev
- xcb-util-image-dev xcb-util-keysyms-dev xcb-util-renderutil-dev
- xcb-util-wm-dev xorgproto-dev
- xtrans
- openssl-dev perl zlib-dev
- "
-source="https://www.X.Org/releases/individual/xserver/$pkgname-$pkgver.tar.bz2
+subpackages="$pkgname-dbg $pkgname-dev $pkgname-doc xvfb $pkgname-xephyr
+ $pkgname-xnest $pkgname-protocol"
+source="https://www.X.Org/releases/individual/xserver/$pkgname-$pkgver.tar.xz
autoconfig-sis.patch
fix-musl-arm.patch
"
# secfixes:
+# 21.1.12-r0:
+# - CVE-2024-31080
+# - CVE-2024-31081
+# - CVE-2024-31082
+# - CVE-2024-31083
+# - CVE-2023-6816
+# - CVE-2024-0229
+# - CVE-2024-21885
+# - CVE-2024-21886
+# - CVE-2024-0408
+# - CVE-2024-0409
+# - CVE-2023-6377
+# - CVE-2023-6478
+# - CVE-2023-5367
+# - CVE-2023-5380
+# - CVE-2023-5574
+# - CVE-2023-0494
+# - CVE-2022-4283
+# - CVE-2022-46340
+# - CVE-2022-46341
+# - CVE-2022-46342
+# - CVE-2022-46343
+# - CVE-2022-46344
+# - CVE-2022-2319
+# - CVE-2022-2320
+# - CVE-2021-4008
+# - CVE-2021-4009
+# - CVE-2021-4010
+# - CVE-2021-4011
+# - CVE-2021-3472
+# - CVE-2020-14360
+# - CVE-2020-25712
+# 1.20.9-r0:
+# - CVE-2020-14345
+# - CVE-2020-14346
+# - CVE-2020-14347
+# - CVE-2020-14361
+# - CVE-2020-14362
# 1.20.3-r0:
# - CVE-2018-14665
# 1.19.5-r0:
@@ -57,47 +95,43 @@ prepare() {
build() {
export CFLAGS="$CFLAGS -D_GNU_SOURCE"
- [ "$CLIBC" == musl ] && export CFLAGS="$CFLAGS -D__gid_t=gid_t -D__uid_t=uid_t"
+ [ "$CLIBC" = musl ] && export CFLAGS="$CFLAGS -D__gid_t=gid_t -D__uid_t=uid_t"
export LDFLAGS="$LDFLAGS -Wl,-z,lazy"
+ _fontroot="/usr/share/fonts"
- ./configure \
- --build=$CBUILD \
- --host=$CHOST \
+ meson setup \
--prefix=/usr \
--sysconfdir=/etc/X11 \
--localstatedir=/var \
- --with-xkb-path=/usr/share/X11/xkb \
- --with-xkb-output=/var/lib/xkb \
- --without-systemd-daemon \
- --enable-composite \
- --enable-config-udev \
- --enable-dri \
- --enable-dri2 \
- --enable-glamor \
- --enable-ipv6 \
- --enable-kdrive \
- --enable-xace \
- --enable-xcsecurity \
- --enable-xephyr \
- --enable-xnest \
- --enable-xorg \
- --enable-xres \
- --enable-xv \
- --disable-xwayland \
- --disable-config-hal \
- --disable-dmx \
- --disable-systemd-logind \
- --with-os-vendor="${DISTRO_NAME:-Adélie Linux}"
+ -Dxkb_dir=/usr/share/X11/xkb \
+ -Dxkb_output_dir=/var/lib/xkb \
+ -Dsystemd_logind=false \
+ -Ddri1=true \
+ -Ddri2=true \
+ -Ddri3=true \
+ -Dglamor=true \
+ -Dipv6=true \
+ -Dxace=true \
+ -Dxcsecurity=true \
+ -Dxephyr=true \
+ -Dxnest=true \
+ -Dxorg=true \
+ -Dxres=true \
+ -Dhal=false \
+ -Dsecure-rpc=false \
+ -Dpciaccess=true \
+ -Ddefault_font_path=$_fontroot/misc,$_fontroot/100dpi:unscaled,$_fontroot/75dpi:unscaled,$_fontroot/TTF,$_fontroot/Type1 \
+ build
- make
+ meson compile -C build
}
check() {
- make check
+ meson test --no-rebuild --print-errorlogs -C build
}
package() {
- make -j1 DESTDIR="$pkgdir" install
+ DESTDIR="$pkgdir" meson install --no-rebuild -C build
chmod u+s "$pkgdir"/usr/bin/Xorg
# Don't conflict with xf86-input-evdev
@@ -128,12 +162,14 @@ xnest() {
mv "$pkgdir"/usr/bin/Xnest "$subpkgdir"/usr/bin/
}
-xwayland() {
- pkgdesc="X.Org server for Wayland"
- mkdir -p "$subpkgdir"/usr/bin
- mv "$pkgdir"/usr/bin/Xwayland "$subpkgdir"/usr/bin/
+protocol() {
+ pkgdesc="Xorg server protocol file"
+ depends=""
+
+ mkdir -p "$subpkgdir"/usr/lib/xorg
+ mv "$pkgdir"/usr/lib/xorg/protocol.txt "$subpkgdir"/usr/lib/xorg/
}
-sha512sums="f1c92ef6d7613e0636973d3395b48dfdad42230847ab1c8b1cea84647a968f649f9aba97bdb01c10ee8351cbe954d4e6ca4a0fc84bb8fa662d49c8ba2aee00a8 xorg-server-1.20.4.tar.bz2
-30a78f4278edd535c45ee3f80933427cb029a13abaa4b041f816515fdd8f64f00b9c6aef50d4eba2aaf0d4f333e730399864fd97fa18891273601c77a6637200 autoconfig-sis.patch
-b799e757a22a61ac283adbd7a8df1ad4eccce0bb6cac38a0c962ba8438bba3cf6637a65bb64859e7b32399fca672283a49960207e186c271ba574580de360d09 fix-musl-arm.patch"
+sha512sums="38fd4232a293a497d13f8b57e85e84cf6a531453a7d8d5de1a77d67ceaf8714d5770951a8a21f1b3f519e83be1fc0926dce269846e75a8b11aa1062dd507f67d xorg-server-21.1.16.tar.xz
+d77151bc51766e1230a121c008ac1d0695275bf889b1db4b3330c1f8ee720b0e046cc935fa14aaef40b02fdea508e84e53959b560131ace14ace14943c8eb734 autoconfig-sis.patch
+c68d6299928032806ade94b4848f147757d6571a2f8830922a20c9e1053fe42700e5c9e196ad58ce5e5536cf034260f973edd6e2792c9bacf4e2d70660949a4a fix-musl-arm.patch"
diff --git a/user/xorg-server/autoconfig-sis.patch b/user/xorg-server/autoconfig-sis.patch
index e97d82114..2c1824752 100644
--- a/user/xorg-server/autoconfig-sis.patch
+++ b/user/xorg-server/autoconfig-sis.patch
@@ -1,6 +1,6 @@
--- ./hw/xfree86/common/xf86pciBus.c.orig 2011-09-24 10:53:45.421697668 +0000
+++ ./hw/xfree86/common/xf86pciBus.c 2011-09-24 10:55:56.416250708 +0000
-@@ -1200,9 +1200,15 @@
+@@ -1231,9 +1231,15 @@
break;
}
break;
diff --git a/user/xorg-server/fix-musl-arm.patch b/user/xorg-server/fix-musl-arm.patch
index e661ae175..7d6cc3762 100644
--- a/user/xorg-server/fix-musl-arm.patch
+++ b/user/xorg-server/fix-musl-arm.patch
@@ -1,20 +1,12 @@
---- ./hw/xfree86/common/compiler.h.orig
-+++ ./hw/xfree86/common/compiler.h
-@@ -721,7 +721,7 @@
- :"r"(val), "r"(addr), "i"(ASI_PL));
+diff -Nurp xorg-server-21.1.3.orig/hw/xfree86/common/compiler.h xorg-server-21.1.3/hw/xfree86/common/compiler.h
+--- xorg-server-21.1.3.orig/hw/xfree86/common/compiler.h 2022-01-02 22:41:56.000000000 +0000
++++ xorg-server-21.1.3/hw/xfree86/common/compiler.h 2024-08-28 09:24:45.059582654 +0000
+@@ -518,7 +518,7 @@ xf86WriteMmio32Le(__volatile__ void *bas
+ barrier();
}
--#elif defined(__mips__) || (defined(__arm32__) && !defined(__linux__))
-+#elif defined(__mips__) || (defined(__arm32__) && !defined(__GLIBC__))
- #if defined(__arm32__) || defined(__mips64)
+-#elif defined(__arm32__) && !defined(__linux__)
++#elif defined(__arm32__) && !defined(__GLIBC__)
#define PORT_SIZE long
- #else
-@@ -996,7 +996,7 @@
- return xf86ReadMmio32Le((void *) ioBase, port);
- }
-
--#elif defined(__arm__) && defined(__linux__)
-+#elif defined(__arm__) && defined(__GLIBC__)
- /* for Linux on ARM, we use the LIBC inx/outx routines */
- /* note that the appropriate setup via "ioperm" needs to be done */
+ extern _X_EXPORT unsigned int IOPortBase; /* Memory mapped I/O port area */
diff --git a/user/xorgproto/APKBUILD b/user/xorgproto/APKBUILD
index f1f802e13..460afcecb 100644
--- a/user/xorgproto/APKBUILD
+++ b/user/xorgproto/APKBUILD
@@ -1,8 +1,8 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xorgproto
-pkgver=2018.4
-pkgrel=1
+pkgver=2024.1
+pkgrel=0
pkgdesc="X11 protocol headers (combination)"
url="https://www.X.Org/"
arch="noarch"
@@ -10,27 +10,27 @@ license="X11 AND MIT AND BSD-2-Clause"
depends=""
depends_dev="util-macros"
makedepends="$depends_dev"
-install=""
subpackages="$pkgname-dev $pkgname-doc"
# Taken from the .pc.in files. Check these at every bump!
provides="bigreqsproto=1.1.2
compositeproto=0.4.2
damageproto=1.2.1
dmxproto=2.3.1
+ dpmsproto=1.2
dri2proto=2.8
- dri3proto=1.2
- fixesproto=5.0
+ dri3proto=1.4
+ fixesproto=6.1
fontsproto=2.1.3
glproto=1.4.17
- inputproto=2.3.2
+ inputproto=2.3.99.2
kbproto=1.0.7
- presentproto=1.2
+ presentproto=1.4
printproto=1.0.5
randrproto=1.6.0
recordproto=1.14.2
renderproto=0.11.1
resourceproto=1.2.0
- scrnsaverproto=1.2.2
+ scrnsaverproto=1.2.3
trapproto=3.4.3
videoproto=2.3.3
xcmiscproto=1.2.2
@@ -41,20 +41,21 @@ provides="bigreqsproto=1.1.2
xf86miscproto=0.9.3
xf86vidmodeproto=2.3.1
xineramaproto=1.2.1
- xproto=7.0.32
+ xproto=7.0.33
xproxymngproto=1.0.3
+ xwaylandproto=1.0
"
replaces="bigreqsproto compositeproto damageproto dri2proto dri3proto
fixesproto fontsproto glproto inputproto kbproto presentproto printproto
randrproto recordproto renderproto resourceproto scrnsaverproto
videoproto xcmiscproto xextproto xf86bigfontproto xf86dgaproto
- xf86driproto xf86miscproto xf86vidmodeproto xineramaproto xproto"
-source="https://xorg.freedesktop.org/archive/individual/proto/xorgproto-$pkgver.tar.bz2
+ xf86driproto xf86miscproto xf86vidmodeproto xineramaproto xproto
+ xwaylandproto"
+source="https://xorg.freedesktop.org/archive/individual/proto/$pkgname-$pkgver.tar.xz
xprint.patch
"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -68,14 +69,16 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
+ # libX11
+ rm "$pkgdir"/usr/include/X11/extensions/XKBgeom.h
+ # libXvMC
+ rm "$pkgdir"/usr/include/X11/extensions/vldXvMC.h
}
-sha512sums="2db682d10280ca58cdc04d8eb9fef30c111d4cd379de9fec86cff317865b859a576de5426447be9231d24be9762cc1d684c57383a99ad499398e8b7d62b1c03c xorgproto-2018.4.tar.bz2
+sha512sums="63955cb604ff831575af2193548857c1b99e52d00206ea9421ce99e145094bcd907388c4574bc32174a01cbe2c940b0377bf75ae7d2c0f953157dc9c32e5a07f xorgproto-2024.1.tar.xz
18fc5228bb53eb15cfa0018f718e06faba0384a41e3aa0006fbf63e2a98779fdab527ea9eb8e22bb6a6f1ca02340ad8dad1260ee16e75f0416461ccefaa6df73 xprint.patch"
diff --git a/user/xorriso/APKBUILD b/user/xorriso/APKBUILD
index ebaff2e24..7839a47fc 100644
--- a/user/xorriso/APKBUILD
+++ b/user/xorriso/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xorriso
-pkgver=1.5.0
+pkgver=1.5.3
pkgrel=0
pkgdesc="ISO 9660 Rock Ridge filesystem manipulator"
url="https://www.gnu.org/software/xorriso/"
@@ -10,10 +10,9 @@ license="GPL-3.0+"
depends=""
makedepends="acl-dev bzip2-dev zlib-dev"
subpackages="$pkgname-doc"
-source="https://www.gnu.org/software/xorriso/xorriso-$pkgver.tar.gz"
+source="https://www.gnu.org/software/$pkgname/$pkgname-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="39d74cff30532fba8ac3851245802323babbd2877129ab5bb14d0cab830ee3f2f678f41d922f3c12cb2c642f66f22006bc4ca457e6c1f766f3d1dbce37d29d31 xorriso-1.5.0.tar.gz"
+sha512sums="7a0b74c608a9693f1ee72c3444d0798918dd0b851a9c77a1185f306cb76f36a6b1b014c915cb3f38885d709026db69da5ed0f11583cbef82b56aad629c01802f xorriso-1.5.3.tar.gz"
diff --git a/user/xpr/APKBUILD b/user/xpr/APKBUILD
index a8980c5c4..a95c7c202 100644
--- a/user/xpr/APKBUILD
+++ b/user/xpr/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xpr
-pkgver=1.0.5
+pkgver=1.2.0
pkgrel=0
pkgdesc="Format an X11 window dump from xwd(1) for printing"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11 AND MIT"
depends=""
makedepends="libx11-dev libxmu-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xpr-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d5dfb936ec4ad0067d02654dec8e862fe337ff6a2c2f974b2b3a612a829c2e728a0d51e7aba00ed2a94dc96dc50cc69f2c59f522e0635013f5f4f5bb3f4ab967 xpr-1.0.5.tar.bz2"
+sha512sums="49538a757aa60e754ecd39273510a6e49ebb77b730be62e3fa60f00261c9c1e208d39e1ca3c61889a5ad7fc7c2255fa1f669fd19ecf98e18cb8aa9189cadc15d xpr-1.2.0.tar.xz"
diff --git a/user/xprop/APKBUILD b/user/xprop/APKBUILD
index 1339105a2..22a4175f5 100644
--- a/user/xprop/APKBUILD
+++ b/user/xprop/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xprop
-pkgver=1.2.4
+pkgver=1.2.7
pkgrel=0
pkgdesc="X11 property inspector"
url="https://cgit.freedesktop.org/xorg/app/xprop/"
@@ -10,13 +10,16 @@ license="X11 AND MIT"
depends=""
makedepends="libx11-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.X.Org/archive/individual/app/xprop-$pkgver.tar.bz2"
+source="https://www.X.Org/archive/individual/app/$pkgname-$pkgver.tar.xz"
build() {
./configure \
--build=$CBUILD \
--host=$CHOST \
- --prefix=/usr
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
make
}
@@ -28,4 +31,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="6e770cb89ba87ae057858cc9f0f5498979e78c3ef66ce86361b7c646cc0b70c41a18d76e55ed7225fe715b22b62bc07c56272519a2631b92832e9403ce260da7 xprop-1.2.4.tar.bz2"
+sha512sums="84ada23660e2aef7024352e1a774f920e86c55fbfda486c087b9f41f8da30a84734fe753b62432f3df16913e86da4a18ce04ca018091d444cef727de97bf94f1 xprop-1.2.7.tar.xz"
diff --git a/user/xrandr/APKBUILD b/user/xrandr/APKBUILD
index 44137b5bd..dd72ee662 100644
--- a/user/xrandr/APKBUILD
+++ b/user/xrandr/APKBUILD
@@ -2,20 +2,19 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=xrandr
-pkgver=1.5.0
-pkgrel=1
+pkgver=1.5.2
+pkgrel=0
pkgdesc="Command line interface to X RandR extension"
url="https://www.X.Org/"
arch="all"
options="!check" # No test suite.
license="MIT"
-subpackages="$pkgname-doc"
depends=""
makedepends="libxrandr-dev util-macros"
-source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.bz2"
+subpackages="$pkgname-doc"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,9 +24,8 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
rm "$pkgdir"/usr/bin/xkeystone
}
-sha512sums="11d8fb1b98fbe215555d5bb875d82f80a7fd6a61c93ebf175c226f4f747570e8d18980add54a4b88d20dc637155074b2a558b34f035d66a465f324281d65f9e4 xrandr-1.5.0.tar.bz2"
+sha512sums="b536e8f1e04094894aa52ae496725c58691b043860b3327c41d737b07b642a939733321b62f698032b11ba857208a6177600a3ca3295ff1be6ade4341cdc2747 xrandr-1.5.2.tar.xz"
diff --git a/user/xrdb/APKBUILD b/user/xrdb/APKBUILD
index b82a20f35..25b720ead 100644
--- a/user/xrdb/APKBUILD
+++ b/user/xrdb/APKBUILD
@@ -2,7 +2,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xrdb
-pkgver=1.2.0
+pkgver=1.2.2
pkgrel=0
pkgdesc="Utility to manipulate the X11 server resources database"
url="https://www.X.Org/"
@@ -11,7 +11,7 @@ license="MIT AND X11"
depends="mcpp"
makedepends="libx11-dev libxmu-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
./configure \
@@ -33,4 +33,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="14e1cdfb2152fb28f1f4641b177ab236648d7e967a95b952bf4cfce8d3e1ef085e85385354e3381aaf644462e8888a1847f755ab4016ecb4cb4a715b001dd2ef xrdb-1.2.0.tar.bz2"
+sha512sums="c8a6fc94e270e9cb5602e055150553de103d545298285157ecd8924f163a10ebeb9acfff56d1fafbf48d339809c76340213792478cdf3270012d3cd05486001c xrdb-1.2.2.tar.xz"
diff --git a/user/xrefresh/APKBUILD b/user/xrefresh/APKBUILD
index e942b954b..d24725975 100644
--- a/user/xrefresh/APKBUILD
+++ b/user/xrefresh/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xrefresh
-pkgver=1.0.6
+pkgver=1.1.0
pkgrel=0
pkgdesc="Refresh an X11 screen"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11 AND MIT"
depends=""
makedepends="libx11-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xrefresh-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="361e97fecfc2706d5eeab69df0d4dd4baa55b6783cfddabf51d8561b7c930d71ce6c217e0512c6564208d69b04f89c69ea8c0bfb2e4f6cc25b062b55e4db3674 xrefresh-1.0.6.tar.bz2"
+sha512sums="d46988c0423c3c6efb21a2eec0df427934d041afa6dcbbfd33f2dff19bf5e077baf10bd96780d98326d3a3e34cbf5824da822b6cb0091873cc1baade0aa05c26 xrefresh-1.1.0.tar.xz"
diff --git a/user/xrx/APKBUILD b/user/xrx/APKBUILD
index 97e71a06d..f2e79d9fb 100644
--- a/user/xrx/APKBUILD
+++ b/user/xrx/APKBUILD
@@ -14,13 +14,11 @@ subpackages="$pkgname-doc"
source="https://www.x.org/releases/individual/app/xrx-$pkgver.tar.bz2"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,12 +30,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/xsane/APKBUILD b/user/xsane/APKBUILD
index 05cf220e4..73df03ca5 100644
--- a/user/xsane/APKBUILD
+++ b/user/xsane/APKBUILD
@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xsane
pkgver=0.999
-pkgrel=1
+pkgrel=2
pkgdesc="Graphical scanning software"
url=" "
arch="all"
@@ -12,15 +12,13 @@ depends=""
makedepends="gtk+2.0-dev lcms2-dev libjpeg-turbo-dev libpng-dev sane-dev
tiff-dev"
subpackages="$pkgname-doc $pkgname-lang"
-langdir="/usr/lib/locale"
-source="http://distfiles.gentoo.org/distfiles/xsane-$pkgver.tar.gz
+source="https://distfiles.adelielinux.org/source/archive/$pkgname-$pkgver/xsane-$pkgver.tar.gz
xsane-0.999-lcms2.patch
xsane-0.999-libpng16.patch
"
build() {
- cd "$builddir"
- ./configure \
+ LIBS="-lintl" ./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
@@ -31,7 +29,6 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/xscope/APKBUILD b/user/xscope/APKBUILD
index 9b4ce4205..a7e5a5dd0 100644
--- a/user/xscope/APKBUILD
+++ b/user/xscope/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xscope
-pkgver=1.4.1
+pkgver=1.4.4
pkgrel=0
pkgdesc="Monitor communication between an X11 client and server"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xscope-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="0b35bd51ed3118bde72359280a610f6f3f7d5e62f1673e493f13d2118ce07bfe4ae7ccc4231556d1c24f4bd7add88c46a4ea478d825fc9cf3fd723dc662d2874 xscope-1.4.1.tar.bz2"
+sha512sums="3a9fe1e58fa7671a91a2364d7b50cf005c9b1aac18b958e8356d5733e0758534d0974c6b982935270f17277224d4efe9b2e4553f45fdb7b3aab0cbf059a8b843 xscope-1.4.4.tar.xz"
diff --git a/user/xscreensaver/APKBUILD b/user/xscreensaver/APKBUILD
index 06f648560..b54cc04a7 100644
--- a/user/xscreensaver/APKBUILD
+++ b/user/xscreensaver/APKBUILD
@@ -1,37 +1,46 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xscreensaver
-pkgver=5.42
+pkgver=6.08
pkgrel=0
pkgdesc="X Screensaver suite"
url="https://www.jwz.org/xscreensaver/"
arch="all"
-options="!check suid" # no tests
+options="!check suid" # No test suite.
license="MIT"
depends=""
-makedepends="bc gtk+2.0-dev intltool libglade-dev libice-dev libjpeg-turbo-dev
- libx11-dev libxft-dev libxinerama-dev libxml2-dev libxml2-utils
- libxrandr-dev libxt-dev linux-pam-dev mesa-dev mesa-glapi"
-subpackages="$pkgname-doc $pkgname-lang"
-source="https://www.jwz.org/xscreensaver/xscreensaver-$pkgver.tar.gz
- xscreensaver-fixes.patch"
+makedepends="bc gtk+3.0-dev intltool libice-dev libjpeg-turbo-dev libx11-dev
+ libxft-dev libxi-dev libxinerama-dev libxml2-dev libxml2-utils glu-dev
+ libxrandr-dev libxt-dev linux-pam-dev mesa-dev libglvnd-dev xorgproto-dev
+ desktop-file-utils elogind-dev xdg-utils"
+subpackages="$pkgname-doc $pkgname-elogind"
+source="https://www.jwz.org/xscreensaver/xscreensaver-$pkgver.tar.gz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
--prefix=/usr \
--sysconfdir=/etc \
--mandir=/usr/share/man \
- --localstatedir=/var
+ --localstatedir=/var \
+ --with-pam \
+ --with-shadow \
+ --with-elogind
make
}
package() {
- cd "$builddir"
+ mkdir -p "$pkgdir"/etc/pam.d
make install_prefix="$pkgdir" install
}
-sha512sums="84cde9364c933de720acd51a0bf75eb4d0642d60f62b92de89d932233eb5abb51e1edb53cd413b2dc4801a02cb68652a28d7d1f83cdaa8d8cdd1fee7d651eefd xscreensaver-5.42.tar.gz
-1df5d3a1456990eb0b2a9efb65fcd26ce576e470a0d6ee268e84e4b399dda930f5ed0960d185e55a7fdab10e5dc42fa2c90060b16443954ec2fce306c8855b54 xscreensaver-fixes.patch"
+elogind() {
+ pkgdesc="$pkgdesc (elogind integration)"
+ install_if="$pkgname=$pkgver-r$pkgrel elogind"
+ mkdir -p "$subpkgdir"/usr/libexec/$pkgname
+ mv "$pkgdir"/usr/libexec/$pkgname/xscreensaver-systemd \
+ "$subpkgdir"/usr/libexec/$pkgname/
+}
+
+sha512sums="a333d4921ed3a8219f3b672dd68543aea31fcd64ea6766143f1c7f6e5ed3bc7122355635d5afba1632457ad71a11cabdc7b2756431e4f1dc7e0426ae0896e6db xscreensaver-6.08.tar.gz"
diff --git a/user/xscreensaver/xscreensaver-fixes.patch b/user/xscreensaver/xscreensaver-fixes.patch
deleted file mode 100644
index 0f5381902..000000000
--- a/user/xscreensaver/xscreensaver-fixes.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -Nurd xscreensaver-5.42/hacks/fontglide.c xscreensaver-5.42.new/hacks/fontglide.c
---- xscreensaver-5.42/hacks/fontglide.c 2018-09-02 17:56:45.000000000 -0500
-+++ xscreensaver-5.42.new/hacks/fontglide.c 2019-03-24 14:09:46.559263834 -0500
-@@ -2421,8 +2421,8 @@
-
- textclient_close (s->tc);
-
--// if (s->b && s->b != s->window) XFreePixmap (dpy, s->b);
--// if (s->ba && s->ba != s->b) XFreePixmap (dpy, s->ba);
-+/* if (s->b && s->b != s->window) XFreePixmap (dpy, s->b); */
-+/* if (s->ba && s->ba != s->b) XFreePixmap (dpy, s->ba); */
- XFreeGC (dpy, s->bg_gc);
- if (s->charset) free (s->charset);
- if (s->font_override) free (s->font_override);
diff --git a/user/xset/APKBUILD b/user/xset/APKBUILD
index 9abfb3d46..958f94dfb 100644
--- a/user/xset/APKBUILD
+++ b/user/xset/APKBUILD
@@ -1,19 +1,18 @@
# Contributor: Sören Tempel <soeren+alpine@soeren-tempel.net>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xset
-pkgver=1.2.4
+pkgver=1.2.5
pkgrel=0
pkgdesc="User preference utility for X11"
url="https://www.X.Org/"
arch="all"
license="X11"
-subpackages="$pkgname-doc"
depends=""
makedepends="libx11-dev libxext-dev libxmu-dev util-macros"
-source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.bz2"
+subpackages="$pkgname-doc"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="f24714c9a82081a09d3054bbad98553de9366992f22eaf3e2bcadbb58fad1d3dad2547fef6fa9898d8a9df064573c29df9d82a5c801fa92248604c95f65dc83d xset-1.2.4.tar.bz2"
+sha512sums="12b53d7cd6b7ccf6515c03f68151490fce6b2629e99b8d85ac5d760f4ed93394a457213c3947533809fbbb04acd1ed260aeea1256099a10397660eef3088150d xset-1.2.5.tar.xz"
diff --git a/user/xsetmode/APKBUILD b/user/xsetmode/APKBUILD
index 37615c3f3..09a038202 100644
--- a/user/xsetmode/APKBUILD
+++ b/user/xsetmode/APKBUILD
@@ -13,13 +13,11 @@ subpackages="$pkgname-doc"
source="https://www.x.org/releases/individual/app/xsetmode-$pkgver.tar.bz2"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,12 +29,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/xsetpointer/APKBUILD b/user/xsetpointer/APKBUILD
index 0e0d5f697..35ca4aa67 100644
--- a/user/xsetpointer/APKBUILD
+++ b/user/xsetpointer/APKBUILD
@@ -13,13 +13,11 @@ subpackages="$pkgname-doc"
source="https://www.x.org/releases/individual/app/xsetpointer-$pkgver.tar.bz2"
prepare() {
- cd "$builddir"
default_prepare
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -31,12 +29,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/xsetroot/APKBUILD b/user/xsetroot/APKBUILD
index d5d6d4d9a..f5d199fbb 100644
--- a/user/xsetroot/APKBUILD
+++ b/user/xsetroot/APKBUILD
@@ -1,18 +1,17 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xsetroot
-pkgver=1.1.2
+pkgver=1.1.3
pkgrel=0
pkgdesc="Set the root window (desktop background) of an X11 session"
url="https://www.X.Org/"
arch="all"
license="MIT"
-subpackages="$pkgname-doc"
depends=""
makedepends="libx11-dev libxcursor-dev libxmu-dev util-macros xbitmaps"
-source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.bz2"
+subpackages="$pkgname-doc"
+source="https://www.X.Org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -24,13 +23,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="0b9df1b72305e5c24f1e1664578aa4411a5ffcdc5d318458117594e641f01c34700205b0d16c08abf4a8106d36128ccdbe1ea1f1035fce9018d6b52801a8b72b xsetroot-1.1.2.tar.bz2"
+sha512sums="f333d1bfd92bb943044da36331ae2cf68a811c8f3891719d9ebc1749e2dd0c67068f86face0794c3c4ae584c4dd189bad4998dccb38fe1ac37a8921e5713e7c0 xsetroot-1.1.3.tar.xz"
diff --git a/user/xsettingsd/APKBUILD b/user/xsettingsd/APKBUILD
new file mode 100644
index 000000000..77bf659cd
--- /dev/null
+++ b/user/xsettingsd/APKBUILD
@@ -0,0 +1,41 @@
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xsettingsd
+pkgver=1.0.2
+pkgrel=0
+pkgdesc="Small, fast XSETTINGS daemon implementation"
+url="https://github.com/derat/xsettingsd/wiki"
+arch="all"
+license="BSD-3-Clause"
+depends=""
+checkdepends="gtest gtest-dev"
+makedepends="cmake libx11-dev"
+subpackages="$pkgname-doc"
+source="xsettingsd-$pkgver.tar.gz::https://github.com/derat/xsettingsd/archive/refs/tags/v$pkgver.tar.gz
+ endian.patch
+ "
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ ${CMAKE_CROSSOPTS} \
+ .
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="da2a82d0b3f5061a1fad7632d800539f4e81bd3f8631dd724705d0601556c044c62da7469a974cbe8f6d8e070247493ac5776bac966cf36f1fae825562457baa xsettingsd-1.0.2.tar.gz
+bfce6288d2c3f5a15a26f2de842b800317b15e2668f587bf05b72b7be62ccc5cf4cca28023db38aa8b1930d8410d9d7b2e1130e7d04333440ac4b64f6be7682f endian.patch"
diff --git a/user/xsettingsd/endian.patch b/user/xsettingsd/endian.patch
new file mode 100644
index 000000000..c5ac01b85
--- /dev/null
+++ b/user/xsettingsd/endian.patch
@@ -0,0 +1,76 @@
+--- xsettingsd-1.0.2/setting_test.cc.old 2021-01-08 12:00:13.000000000 -0600
++++ xsettingsd-1.0.2/setting_test.cc 2022-06-05 22:19:35.511364966 -0500
+@@ -53,14 +53,20 @@
+ IntegerSetting setting(5);
+ setting.UpdateSerial(NULL, 3);
+ ASSERT_TRUE(setting.Write("name", &writer));
+- // TODO: Won't work on big-endian systems.
+ const char expected[] = {
+ 0x0, // type
+ 0x0, // unused
++#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
++ 0x0, 0x4, // name-len
++ 0x6e, 0x61, 0x6d, 0x65, // "name" (multiple of 4, so no padding)
++ 0x0, 0x0, 0x0, 0x3, // serial
++ 0x0, 0x0, 0x0, 0x5, // value
++#else
+ 0x4, 0x0, // name-len
+ 0x6e, 0x61, 0x6d, 0x65, // "name" (multiple of 4, so no padding)
+ 0x3, 0x0, 0x0, 0x0, // serial
+ 0x5, 0x0, 0x0, 0x0, // value
++#endif
+ };
+ ASSERT_EQ(sizeof(expected), writer.bytes_written());
+ EXPECT_PRED_FORMAT3(BytesAreEqual, expected, buffer, sizeof(expected));
+@@ -74,15 +80,22 @@
+ StringSetting setting("testing");
+ setting.UpdateSerial(NULL, 5);
+ ASSERT_TRUE(setting.Write("setting", &writer));
+- // TODO: Won't work on big-endian systems.
+ const char expected[] = {
+ 0x1, // type
+ 0x0, // unused
++#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
++ 0x0, 0x7, // name-len
++ 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, // "setting" (name)
++ 0x0, // padding
++ 0x0, 0x0, 0x0, 0x5, // serial
++ 0x0, 0x0, 0x0, 0x7, // value-len
++#else
+ 0x7, 0x0, // name-len
+ 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, // "setting" (name)
+ 0x0, // padding
+ 0x5, 0x0, 0x0, 0x0, // serial
+ 0x7, 0x0, 0x0, 0x0, // value-len
++#endif
+ 0x74, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x67, // "testing" (value)
+ 0x0, // padding
+ };
+@@ -98,10 +111,18 @@
+ ColorSetting setting(32768, 65535, 0, 255);
+ setting.UpdateSerial(NULL, 2);
+ ASSERT_TRUE(setting.Write("name", &writer));
+- // TODO: Won't work on big-endian systems.
+ const char expected[] = {
+ 0x2, // type
+ 0x0, // unused
++#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
++ 0x0, 0x4, // name-len
++ 0x6e, 0x61, 0x6d, 0x65, // "name" (multiple of 4, so no padding)
++ 0x0, 0x0, 0x0, 0x2, // serial
++ 0x80, 0x0, // red
++ 0x0, 0x0, // blue (yes, the order is strange)
++ 0xff, 0xff, // green
++ 0x0, 0xff, // alpha
++#else
+ 0x4, 0x0, // name-len
+ 0x6e, 0x61, 0x6d, 0x65, // "name" (multiple of 4, so no padding)
+ 0x2, 0x0, 0x0, 0x0, // serial
+@@ -109,6 +130,7 @@
+ 0x0, 0x0, // blue (yes, the order is strange)
+ 0xff, 0xff, // green
+ 0xff, 0x0, // alpha
++#endif
+ };
+ ASSERT_EQ(sizeof(expected), writer.bytes_written());
+ EXPECT_PRED_FORMAT3(BytesAreEqual, expected, buffer, sizeof(expected));
diff --git a/user/xsm/APKBUILD b/user/xsm/APKBUILD
index f3e42cd18..c5031732e 100644
--- a/user/xsm/APKBUILD
+++ b/user/xsm/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xsm
-pkgver=1.0.4
+pkgver=1.0.6
pkgrel=0
pkgdesc="Session manager for X11"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends="iceauth smproxy twm"
makedepends="libice-dev libsm-dev libxaw-dev libxt-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xsm-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d4e4da7c309a4eae126d2b58a13684f4dbc06b09f76dde9c89c707375df2843614f3d83bc44f9cd02f239200db3397abd86796dca0dbafc69f60482b0af5a176 xsm-1.0.4.tar.bz2"
+sha512sums="ee4e9b4ab6be6773e53685540f807b03d553bfecc26c4e85fe12daca486fdeb66c594c6eab54043a8c149112c7a3ed18e463d68d7aee62e93a06c091ce39c268 xsm-1.0.6.tar.xz"
diff --git a/user/xstdcmap/APKBUILD b/user/xstdcmap/APKBUILD
index 076ac3256..101cd793f 100644
--- a/user/xstdcmap/APKBUILD
+++ b/user/xstdcmap/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xstdcmap
-pkgver=1.0.4
+pkgver=1.0.5
pkgrel=0
pkgdesc="Define standard X11 colour map properties"
url="https://www.X.Org/"
@@ -10,7 +10,7 @@ license="X11"
depends=""
makedepends="libx11-dev libxmu-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/xstdcmap-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/xstdcmap-$pkgver.tar.xz"
build() {
./configure \
@@ -31,4 +31,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="2adbb0aec1766341e04090efa962241ff6c9e32c612851b7221cec0ee16852107d406a08ec5251070f39df882c13e3c8c9edcd88f278187a9f373e1727643a8f xstdcmap-1.0.4.tar.bz2"
+sha512sums="3f2047af1d328a34d38ededc13de00298db3300eab1d1dbdff7d2aa4a3cd543a79305bfbd2e6424c5e023cf866a4f7a70aa9a3014444d543268d2f812a322a49 xstdcmap-1.0.5.tar.xz"
diff --git a/user/xsv/APKBUILD b/user/xsv/APKBUILD
new file mode 100644
index 000000000..dab03c7dc
--- /dev/null
+++ b/user/xsv/APKBUILD
@@ -0,0 +1,156 @@
+# Contributor: Gentoo Rust Maintainers <rust@gentoo.org>
+# Contributor: Molly Miller <adelie@m-squa.red>
+# Maintainer: Samuel Holland <samuel@sholland.org>
+pkgname=xsv
+pkgver=0.13.0
+pkgrel=1
+pkgdesc="A fast CSV command line toolkit written in Rust"
+url="https://github.com/BurntSushi/xsv"
+arch="all"
+license="MIT OR Unlicense"
+depends=""
+makedepends="cargo"
+source=""
+
+# dependencies taken from Cargo.lock
+cargo_deps="$pkgname-$pkgver
+aho-corasick-0.7.3
+autocfg-0.1.4
+byteorder-1.3.2
+cfg-if-0.1.9
+chan-0.1.23
+csv-1.0.7
+csv-core-0.1.5
+csv-index-0.1.5
+docopt-1.1.0
+filetime-0.1.15
+fuchsia-cprng-0.1.1
+itoa-0.4.4
+lazy_static-1.3.0
+libc-0.2.58
+log-0.4.6
+memchr-2.2.0
+num-traits-0.2.8
+num_cpus-1.10.1
+proc-macro2-0.4.30
+quickcheck-0.6.2
+quote-0.6.12
+rand-0.3.23
+rand-0.4.6
+rand_core-0.3.1
+rand_core-0.4.0
+rdrand-0.4.0
+redox_syscall-0.1.54
+regex-1.1.7
+regex-syntax-0.6.7
+ryu-0.2.8
+serde-1.0.92
+serde_derive-1.0.92
+streaming-stats-0.2.2
+strsim-0.9.2
+syn-0.15.36
+tabwriter-1.1.0
+thread_local-0.3.6
+threadpool-1.7.1
+ucd-util-0.1.3
+unicode-width-0.1.5
+unicode-xid-0.1.0
+utf8-ranges-1.0.3
+winapi-0.3.7
+winapi-i686-pc-windows-gnu-0.4.0
+winapi-x86_64-pc-windows-gnu-0.4.0
+"
+
+source="$source $(echo $cargo_deps | sed -E 's#([[:graph:]]+)-([0-9.]+(-(alpha|beta|rc)[0-9.]+)?)#&.tar.gz::https://crates.io/api/v1/crates/\1/\2/download#g')"
+
+prepare() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ export CARGO_VENDOR="$CARGO_HOME/adelie"
+
+ (builddir=$srcdir; default_prepare)
+
+ mkdir -p "$CARGO_VENDOR"
+ cat <<- EOF > "$CARGO_HOME/config"
+ [source.adelie]
+ directory = "${CARGO_VENDOR}"
+
+ [source.crates-io]
+ replace-with = "adelie"
+ local-registry = "/nonexistant"
+ EOF
+
+ for _dep in $cargo_deps; do
+ ln -s "$srcdir/$_dep" "$CARGO_VENDOR/$_dep"
+ _sum=$(sha256sum "$srcdir/$_dep.tar.gz" | cut -d' ' -f1)
+ cat <<- EOF > "$CARGO_VENDOR/$_dep/.cargo-checksum.json"
+ {
+ "package":"$_sum",
+ "files":{}
+ }
+ EOF
+ done
+}
+
+build() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ export PKG_CONFIG_ALL_DYNAMIC=1
+ export RUSTONIG_SYSTEM_LIBONIG=1
+ cargo build -j $JOBS --release
+}
+
+check() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ cargo test -j $JOBS --release
+}
+
+package() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ cargo install --no-track --path . --root="$pkgdir"/usr
+}
+
+sha512sums="6db4e6e13613feb645bd71d9a1c9b7c9150e04f9880731bea143248ceb5c460503799d6f487f3c983f613964a56c998ba9d325cc1b61def8db0b63e74e387ce1 xsv-0.13.0.tar.gz
+4250dc8fa38ad74e0c25375744f34eb06ff3bddbf16d6b4d757a9053ca16c3945d15c8f9deb11ea55d30b6d1c1744c4bccc388a4413b723a429445bf5ef3ffa9 aho-corasick-0.7.3.tar.gz
+811b68ea24a836980026abba12598b35359abdff5660e6e9d3cc65e3edbedcd10dffc208900af5d4c21e983e1218b5fb5499117c05ab60b3e4716f0529b231ce autocfg-0.1.4.tar.gz
+2ef6b986926a4671dd945583730b0bfd4bd5e75b62a8a70c2875328157ba95f2c1b17c534d905e9b287457bd34363c1a33fd3dee9217c371032393ebbe206a8f byteorder-1.3.2.tar.gz
+45f7322217d291b3905ffdc45cadd5a7a7baf440f9a82a5b5596192ed0ac54353a3ecae0326d5807aae99bc4d79e0406d71bd65745ec8d9f8815a7c9436d648c cfg-if-0.1.9.tar.gz
+87c669ad5e5216c03bec9c32136af45e8dc5e1d43fa6fc06374d2ea7dea9b13f87458ca41c4bf2f615686a128664f3360b911c8f74c9091b70431b4d3adc31bc chan-0.1.23.tar.gz
+d3e69e0a93b55617b79a32e4429ea56eee03b5b01a9a62a132a41c0a4961db1bff418681ac3ebbfa30cb0c82ce2beeab2d9fa469a0514e5ff9ef64b969de4acb csv-1.0.7.tar.gz
+fc223ef33b83ae306f6cc5a77b08323a802f8fa39054ad9c4cffc63ba3195344319bb66471d164fa6eed7ef3bec11fb8308b78a4fe42ff91413e9441f021d439 csv-core-0.1.5.tar.gz
+a1e928d3879d1490ade4f7172fe0cfd4221d28637109a65f856d277b88e1c7d823f447c82143d541c1b2b6fcec3050b8ea88b3dc9d9ef2e36b5ff97d84de66da csv-index-0.1.5.tar.gz
+f5dd97b4dbc9109811a83dba45bb09018f394adf3f5389cc62f7d42749c90dc337b7f5efdee569150a70194f5bda777a22107123ec7341a38c4f9923bb6f9f81 docopt-1.1.0.tar.gz
+81d6e80f3da3ce12295ce8d85bf174eac3ee3dcc7d57e5a65f2ae91ab4f3dcf294582788af24db9ce2f18cb0e43080fb1baac76929dacec32d5ba4d09928b962 filetime-0.1.15.tar.gz
+ea9f5beb0dfcb023c22cfc2b37ce52dfcf3a2cbbed0f79ffffc332878858386805c65dce8469a431002367562d857a6c064e075688540c27fcb4056a110059d2 fuchsia-cprng-0.1.1.tar.gz
+f5e04bd908457e7592243ce64a99c5283428b767f4cc17d77946770411b06fccb0250625263c3e84a02a018ea7e8a0e4216e1929a71988bab8e1dbf603d3801d itoa-0.4.4.tar.gz
+08288790139876765b6d4a5988f47fd2a4bfc77c2f2406ad44e64920a471b5655c7f54cb197e5a40c29ee8b42aecbbefaac2b6f4a7dd2b5e24dd92c46cb9b822 lazy_static-1.3.0.tar.gz
+9127ad9a94f75655740fc3a2278c7a17d5f03c4cd12c8833c1a1ecb7a860ec8581fbc969f5c2e23b8eecb9131d9d8271131ad6a675b785f18fb55d830bcc0491 libc-0.2.58.tar.gz
+3844c771f97531ae7312c6bb0cf74ccaab94925f68bf1172419cc44fa4b5373f3ac6b42fb6d0ba636a970b295ea5d1b5abbe72b4da67a103e8dc4ed48a0cc5cb log-0.4.6.tar.gz
+19bb5fe9c4ff471e2f8cba0e3be3ebb715f0eaf3d9c012c05833e78243d8baa6b98e14eb4c9a900caca48aa539483972f4ff8e5a47aec5141f96f3f23fc24088 memchr-2.2.0.tar.gz
+a3019e45744245837b2f146ab4213746c93a1ad701958dd418272af89451b843f9b643eac673c1397f6079da7709c7e9ff46e0e829a4cf6092772c9d77bbc534 num-traits-0.2.8.tar.gz
+f1f7408dc1cfe7c718928d8e3e219e3001ce4207467a0a129546f2729ba43a7bf334cd5d328a7f8f8b1c276382c8a0f9d7abf60a3ae2c32f4adafa96c6ea62cd num_cpus-1.10.1.tar.gz
+73a8de3f1d76a8baf2d45afc1497bba8c0cbf231bf9b6750b9cee2473f492d5f3957ac149998da720acc8287c96d604971b51dcdfa629523bbdd97c297856ac0 proc-macro2-0.4.30.tar.gz
+18483a244f83d64f298bcf6f71c137043dd1c28e22da6baf13760b2a39d77f84d2b7b651facb378b8559eb3d3a4cb53c16671128358e4a86e90e55e66d7ee41f quickcheck-0.6.2.tar.gz
+5d58945b0c9b41e368458a1661ae7b2ceed2e3285d377088afe5fde38e1db945ab42326d096cd6d13d82f5f80fe73d204c5fbe3c7abdea149eb6d7ca7c5e6798 quote-0.6.12.tar.gz
+a4f46fb7dfe39677dfc112eeb56fb3c28cec4cdaaf95f336f2a494f0b2b30fdf22ceb9ea956f90e13c7ffe711a68aef9fc1a80d9a911d93221ae263c243fb2c3 rand-0.3.23.tar.gz
+a91c6da7188b426bf9cb832892ee2af87c4cd65fad505c34e9c63343da71efe8c0c67b75c405dca5345317b7940d1d0fc0b20be85afd6b3089203e5698d86f0a rand-0.4.6.tar.gz
+5a7ae601124502bede760fd3179c2b28059ebc3b5983bfcb6b8fa62fb58df95cedc1aeb2734e792d894dfa4620801c13c29702f9cbee64243121575d4b6b9114 rand_core-0.3.1.tar.gz
+f80e76dabd3308a12880a9aa8b7be83db39b02778c95bb63f862488789a2a67e2f08d4f2dd1ad803c61df0a9fc7f6620aa753b3bf394542ce27c89189a911845 rand_core-0.4.0.tar.gz
+6476275d124bee28747191471e8d8f321a3b1c148c1f2a7ece4175f5244a7de90afe5f99d2eba5244d886b92e38232398864bf90e6d434b09494533942c8d894 rdrand-0.4.0.tar.gz
+38ee15c2fa470428329b3888fef1f1b5bc57ffae96b6ec505fc051f33a8da86512afddfeb6966cb2342382a5cbccb624a825767d3492b3d6d21d6f8e97e57e9e redox_syscall-0.1.54.tar.gz
+17a06dc448c1be0910ddf5c03979fcd151d0a40acec5fedf96febe0f0fc52bda0252c40f8e7a18dcf3fa13f82f8a5b406b18f59e43713aec2adc2cae068f9120 regex-1.1.7.tar.gz
+630e998b26ea7571591ff4259a5119d7762567253564b4a958cfd0f3f4de5857894e12eda469d940d8ed5572712b345e2859de282cdebf89a5108b97da71a073 regex-syntax-0.6.7.tar.gz
+15a17fa06cb971847386013b7bc80e0483bb30f62062ac1e3200d588cb52771a7d34cdd74aba51de46341d303bd29065cf1f8cdcc17c23576cfadaefe63384b4 ryu-0.2.8.tar.gz
+a8a33cf76a4f899205b2ede5e91859e03d038b178f685a36991c1836ab0c37f91ff50db4145e825838ac0fb4c526c9f496d00f87ac1790d101f4e83779fc5124 serde-1.0.92.tar.gz
+37da456bb1392e4eacad07118dd8a6590552f455151f35bf4b350305772eddc8b232b61c36940c287df85b61ccc9867602cfc7012f7b7b645ab97cff45baeaab serde_derive-1.0.92.tar.gz
+520a8486f5d10b66a93e3b06e83ffb369bc0ee187fd53204d00076e62d402e37ab9fdcadc286723155a487f99324a64487cdea767b715d7494b82beba636d0fb streaming-stats-0.2.2.tar.gz
+2054444ea844a25f573219a4993986b69ff8c5dc0dfd2dd06fff638d596c8c5b5a1bedafc2bef3a1b9c146dd47a0769bbe039c54fd8e2a5d9894f29ab9f32838 strsim-0.9.2.tar.gz
+7cd22f17d3740223d94b64405ba6283fb90a4ec170bd55de652a409a537b5355717dfb09dab991e1bbb799e57d1d48fc07c061adbe35f5b7da3bcdcdc8723ddf syn-0.15.36.tar.gz
+ed80e5e0d31f5941c63bf8f311b71919bf9fe84d872dcd31b37a1eac57a4efe4025b56784fd4083b952c7cae47f08562d10ed679cff0edb8b8dc57ff87ac7ee5 tabwriter-1.1.0.tar.gz
+cd783d3d9caec43868da1f6118d4c4d520e03b9f1049d8f15d2c12482989401d3aee748e04a149953d35e5d6487355c2891d44569ef688bc1d45f01b6461d253 thread_local-0.3.6.tar.gz
+e46733ea55a27a32868596562bbaf1e50508dea58359006cabd160b06cec4854c97b5d253cdcb8bfd60c7b3a33e496bec4159d0621efaa3cdcbc77255be4f275 threadpool-1.7.1.tar.gz
+50a796feb198012241d73001bb53c8e3d3168df379de91d7ecaccfd829b08a356afe3db736fb8cced8748141d7a9e4b157440442c425816c78c0615c08e20f2e ucd-util-0.1.3.tar.gz
+bd5ac5f0433953d79408074239edc7c43ce23d56659d467805d81ab01c576a3cf77ccedb3bba41d48bc4ad46a8905ac8a1927b99312053ef6295fd940a6766d2 unicode-width-0.1.5.tar.gz
+cc5343e2166938322cfd7c73f1f918f2a9c46846ac0ef55933d1e44cdfaf6f7da2b7ff18b68e356c47b6d8ba5565eda0db42c347dcbde830683f341ac2b1849d unicode-xid-0.1.0.tar.gz
+24907ad7ae1a02713e6ecc62e0c73488abea338f0dd3b49291b914ca907b3a220cb90f8ca409c6aa57d2e0e5d8ca8c44cd310081ffe7be9208952d73ec53b9f8 utf8-ranges-1.0.3.tar.gz
+6871b93ad8d48e39b90cb7b31b3132f84665f965b4dfe06fcebdfb873e7d099007cf3d7a50e832a941c3425ad2f39c3ab48a77151e60863685b97fc05c71d134 winapi-0.3.7.tar.gz
+a672ccefd0730a8166fef1d4e39f9034d9ae426a3f5e28d1f4169fa5c5790767693f281d890e7804773b34acdb0ae1febac33cde8c50c0044a5a6152c7209ec2 winapi-i686-pc-windows-gnu-0.4.0.tar.gz
+4a654af6a5d649dc87e00497245096b35a2894ae66f155cb62389902c3b93ddcc5cf7d0d8b9dd97b291d2d80bc686af2298e80abef6ac69883f4a54e79712513 winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz"
diff --git a/user/xterm/APKBUILD b/user/xterm/APKBUILD
index 3c8e5f5b4..ec6384a96 100644
--- a/user/xterm/APKBUILD
+++ b/user/xterm/APKBUILD
@@ -1,13 +1,14 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=xterm
-pkgver=344
+pkgver=390
pkgrel=0
pkgdesc="An X-based terminal emulator"
url="https://invisible-island.net/xterm/"
arch="all"
-options="!check" # no tests
+options="!check" # No test suite.
license="X11"
+depends=""
makedepends="libx11-dev libsm-dev libice-dev libxt-dev utmps-dev libxaw-dev
libxext-dev libxrender-dev libxft-dev freetype-dev ncurses-dev
pcre-dev"
@@ -16,8 +17,15 @@ source="https://invisible-mirror.net/archives/xterm/xterm-$pkgver.tgz
posix-ptmx.patch
"
+# secfixes:
+# 390-r0:
+# - CVE-2022-24130
+# - CVE-2022-45063
+# - CVE-2023-40359
+# 368-r0:
+# - CVE-2021-27135
+
build() {
- cd "$builddir"
LIBS="-ltinfow" ./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,7 +33,8 @@ build() {
--sysconfdir=/etc \
--mandir=/usr/share/man \
--localstatedir=/var \
- --with-pcre
+ --with-pcre \
+ --enable-sixel-graphics
# This is NOT A TYPO!
#
# XTerm does not use ld(1) as a linker. It uses a shell script
@@ -41,9 +50,8 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="872f69e13ad8e26de355f7611dabc7a66e2f6b00313b440b8054cc4fa0fbde936dd8d54ec09c892e8760080acaccbd8b7e72cdcbebb291dd92e01593eb14e91a xterm-344.tgz
-e29ef756243faa6f5ced3c74d6879b4fc8f9839501becae49af4f458d0f499bcda40a0eb66dada9cae8bf9789256daf3d1605ac1b5b4301654d8b5ac6eaca81d posix-ptmx.patch"
+sha512sums="865ae292a56635ec2811a950763da22cbbb4de463bee75b4595b7387a09227f612c5620986e431631c3d73fe783d862fd9a6694c54c33898327339467b7085b7 xterm-390.tgz
+6811cd67ffe21dc23c9ad6a439291bb0b3c3d347f4d5e2cd65de9f790fde2bf7323fe9f1b309d95ac98a3ffaae5989bc73a2c5fe08aa9f6a2c6cbc3b9adcf8d9 posix-ptmx.patch"
diff --git a/user/xterm/posix-ptmx.patch b/user/xterm/posix-ptmx.patch
index 351aba9ab..6d1a859cd 100644
--- a/user/xterm/posix-ptmx.patch
+++ b/user/xterm/posix-ptmx.patch
@@ -1,6 +1,6 @@
--- xterm/main.c.old
+++ xterm/main.c
-@@ -2654,7 +2654,7 @@ get_pty(int *pty, char *from GCC_UNUSED)
+@@ -2892,7 +2892,7 @@ get_pty(int *pty, char *from GCC_UNUSED)
close(opened_tty);
opened_tty = -1;
}
@@ -9,7 +9,7 @@
if ((*pty = posix_openpt(O_RDWR)) >= 0) {
char *name = ptsname(*pty);
if (name != 0) {
-@@ -3735,7 +3735,7 @@ spawnXTerm(XtermWidget xw)
+@@ -4040,7 +4040,7 @@ spawnXTerm(XtermWidget xw)
/*
* now in child process
*/
diff --git a/user/xtrans/APKBUILD b/user/xtrans/APKBUILD
index a65dd7dc3..69731a797 100644
--- a/user/xtrans/APKBUILD
+++ b/user/xtrans/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xtrans
-pkgver=1.4.0
+pkgver=1.5.0
pkgrel=0
pkgdesc="X transport library"
url="https://www.X.Org/"
@@ -9,7 +9,7 @@ license="X11 AND MIT"
depends=""
makedepends="util-macros xmlto"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/lib/$pkgname-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/lib/$pkgname-$pkgver.tar.xz"
build() {
./configure \
@@ -27,4 +27,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="4fea89a3455c0e13321cbefa43340016dbb59bdd0dbdb5b796c1a6d2a6b1fd63cf1327b769ab426286b9c54b32ec764a50cd2b46228e4e43b841bda6b94de214 xtrans-1.4.0.tar.bz2"
+sha512sums="e8091f11d4ad2b14e01de3eac56bdf2267ea26687ce66e3056374d0d02e049480c0b27c482f8828a0efd086f1e4c485108ca4dce3f83d66c1896effa3b38b228 xtrans-1.5.0.tar.xz"
diff --git a/user/xvidcore/APKBUILD b/user/xvidcore/APKBUILD
index db9e20006..6d200463b 100644
--- a/user/xvidcore/APKBUILD
+++ b/user/xvidcore/APKBUILD
@@ -1,6 +1,6 @@
# Maintainer:
pkgname=xvidcore
-pkgver=1.3.5
+pkgver=1.3.7
pkgrel=0
pkgdesc="Open source MPEG-4 video codec"
url="https://labs.xvid.com/"
@@ -14,7 +14,6 @@ source="https://downloads.xvid.com/downloads/$pkgname-$pkgver.tar.bz2"
builddir="$srcdir/$pkgname/build/generic"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -23,8 +22,7 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="3297243400ce9ed2d0083559ee15fdfa422e585114c4e92c72fe702f43fea4af9fe4e9e794630959c220222379fa329452c4163a395f4ba1998c9be03a2e9441 xvidcore-1.3.5.tar.bz2"
+sha512sums="e2b22e7a7e103af7adcc999d95484f991a0a33df02b912fe042b2e23d2af07381c737d23158dbf0fad770ee680572f86fbe04ab2ef33c81e2e0180ead2acc8ed xvidcore-1.3.7.tar.bz2"
diff --git a/user/xvidtune/APKBUILD b/user/xvidtune/APKBUILD
index 4c4e9d8b7..14bfd27d2 100644
--- a/user/xvidtune/APKBUILD
+++ b/user/xvidtune/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xvidtune
-pkgver=1.0.3
+pkgver=1.0.4
pkgrel=0
pkgdesc="Tune video modes on an X11 display"
url="https://www.X.Org/"
@@ -10,17 +10,9 @@ license="X11"
depends=""
makedepends="libxaw-dev libxmu-dev libxxf86vm-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xvidtune-$pkgver.tar.bz2"
-
-prepare() {
- cd "$builddir"
- default_prepare
- chmod a+w config.sub
- update_config_sub
-}
+source="https://www.x.org/releases/individual/app/xvidtune-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="0f8a4fca1b544ef8f9623246fb0ece75739a0889f2e729c040cd768c595f0bbbfa3a665576369032535c34c7d55784a29b62f0d51432bf2b75d2cec619db7352 xvidtune-1.0.3.tar.bz2"
+sha512sums="747d5358f4f7d3d7db508c3f034711ce4b9dd278160d35312e9c4d1604623e84a2438d039b536546fd2df7db8c5ea1907e8a6101985fad2932b6dee5a62c7b80 xvidtune-1.0.4.tar.xz"
diff --git a/user/xvinfo/APKBUILD b/user/xvinfo/APKBUILD
index 311f48b01..34ddb8aaf 100644
--- a/user/xvinfo/APKBUILD
+++ b/user/xvinfo/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xvinfo
-pkgver=1.1.4
+pkgver=1.1.5
pkgrel=0
pkgdesc="View information about video adaptors attached to X11"
url="https://www.X.Org/"
@@ -10,7 +10,7 @@ license="X11"
depends=""
makedepends="libxv-dev"
subpackages="$pkgname-doc"
-source="https://www.X.Org/releases/individual/app/xvinfo-$pkgver.tar.bz2"
+source="https://www.X.Org/releases/individual/app/xvinfo-$pkgver.tar.xz"
build() {
./configure \
@@ -31,4 +31,4 @@ package() {
make DESTDIR="$pkgdir" install
}
-sha512sums="85e1f936c5c826f0fdde3670bd77d5cde8641c6e8e7849e42142e91b5aa01d7e0e60d2b064eb6fef4f5666321813ca2dc9f9656756ccbe6dcda37b119ee8a63e xvinfo-1.1.4.tar.bz2"
+sha512sums="18467161b248c68f6bde15e1c1b4b8cf812daf46777602558aee5fb7cb4d2649218de88fa93842fea4f316d954440f03a37d71fa4fda92eda3c7d80970e19cbb xvinfo-1.1.5.tar.xz"
diff --git a/user/xwayland/APKBUILD b/user/xwayland/APKBUILD
new file mode 100644
index 000000000..1b2959de2
--- /dev/null
+++ b/user/xwayland/APKBUILD
@@ -0,0 +1,53 @@
+# Contributor: Łukasz Jendrysik <scadu@yandex.com>
+# Contributor: Natanael Copa <ncopa@alpinelinux.org>
+# Contributor: Simon Zeni <simon@bl4ckb0ne.ca>
+# Maintainer: Ermine <mustela@erminea.space>
+pkgname=xwayland
+pkgver=24.1.6
+pkgrel=0
+pkgdesc="X11 server for Wayland"
+url="https://www.X.Org/"
+arch="all"
+options="!check" # requires piglit, which has no stable releases
+license="MIT AND X11"
+subpackages="$pkgname-dbg $pkgname-dev $pkgname-doc"
+depends="xorg-server-protocol xkbcomp"
+depends_dev="dbus-dev font-util-dev libdrm-dev libepoxy-dev libglvnd-dev
+ libxcvt-dev libxfont2-dev libxkbfile-dev libxshmfence-dev mesa-dev
+ openssl-dev pixman-dev wayland-dev wayland-protocols xorgproto xtrans"
+makedepends="$depends_dev meson"
+source="https://xorg.freedesktop.org/archive/individual/xserver/xwayland-$pkgver.tar.xz"
+
+replaces="xorg-server-xwayland"
+
+build() {
+ meson setup \
+ -Dprefix=/usr \
+ -Dipv6=true \
+ -Dxvfb=false \
+ -Dxdmcp=false \
+ -Dxcsecurity=true \
+ -Ddri3=true \
+ -Dglamor=true \
+ -Dsecure-rpc=false \
+ -Dxkb_dir=/usr/share/X11/xkb \
+ -Dxkb_output_dir=/var/lib/xkb \
+ . output
+ meson compile -C output
+}
+
+check() {
+ meson test --no-rebuild --print-errorlogs -C output
+}
+
+package() {
+ DESTDIR="$pkgdir" meson install --no-rebuild -C output
+
+ # Part of xorg-server-doc
+ rm -f "$pkgdir"/usr/share/man/man1/Xserver.1
+
+ # Part of xorg-server-protocol
+ rm -f "$pkgdir"/usr/lib/xorg/protocol.txt
+}
+
+sha512sums="b6dcc87f5c4d880cb23216518171a704c2a501803ac2efd9d01760895d755a617cd82313c6516f27a888b0581c64d74e3f8db5c238e1ae0d13da6cc1a547c02f xwayland-24.1.6.tar.xz"
diff --git a/user/xwd/APKBUILD b/user/xwd/APKBUILD
index c7bd606be..7c219156f 100644
--- a/user/xwd/APKBUILD
+++ b/user/xwd/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xwd
-pkgver=1.0.7
+pkgver=1.0.9
pkgrel=0
pkgdesc="Dump the contents of an X11 window to a file"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11 AND MIT"
depends=""
makedepends="libx11-dev libxkbfile-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xwd-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="6fdb0a115ae505169bbc7fcc45580daf26bced2e26e0bf9a877636016038931a8386e8edcbe015f4024be508d0461906adef4834cf22a445e3c282f0b8fad17e xwd-1.0.7.tar.bz2"
+sha512sums="ae59661b05160f5658920fd79031b6b8548cb7bbfc734194edb0acef5c95f76b210ca4443e9506fc1a0cb9df47ee7c22948502971afe578b44c75aa2a1138d56 xwd-1.0.9.tar.xz"
diff --git a/user/xwininfo/APKBUILD b/user/xwininfo/APKBUILD
index c9afec639..1d8d7c717 100644
--- a/user/xwininfo/APKBUILD
+++ b/user/xwininfo/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: Natanael Copa <ncopa@alpinelinux.org>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=xwininfo
-pkgver=1.1.4
+pkgver=1.1.6
pkgrel=0
pkgdesc="Window information utility for X"
url="https://cgit.freedesktop.org/xorg/app/xwininfo"
@@ -11,10 +11,9 @@ license="MIT AND X11"
depends=""
makedepends="libx11-dev libxext-dev util-macros"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xwininfo-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/xwininfo-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -27,8 +26,7 @@ build() {
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="d3ab103a0a311e08d1eabc4346750c21eb7d2fbcdc27cab0989a2624b9cd488911614fcf9832603353450114b1231a8f8262cab16e090a0d458d83ec7b6b959b xwininfo-1.1.4.tar.bz2"
+sha512sums="c6df4ed3dcf97772450612f2786ecab8313a43bb78e0b8020cc9ec228b3f466f55090313ad02c8159a73a6892d117322ad85e28d9d76e38bb84c9750712c20bc xwininfo-1.1.6.tar.xz"
diff --git a/user/xwud/APKBUILD b/user/xwud/APKBUILD
index 72f7e9e50..0b7c4d19c 100644
--- a/user/xwud/APKBUILD
+++ b/user/xwud/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=xwud
-pkgver=1.0.5
+pkgver=1.0.6
pkgrel=0
pkgdesc="Display the contents of an X11 window dumped by xwd(1)"
url="https://www.X.Org/"
@@ -10,10 +10,9 @@ license="X11"
depends=""
makedepends="libx11-dev util-macros xorgproto-dev"
subpackages="$pkgname-doc"
-source="https://www.x.org/releases/individual/app/xwud-$pkgver.tar.bz2"
+source="https://www.x.org/releases/individual/app/$pkgname-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,13 +24,11 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="27a0ce7481978ae6cd94b0d94374af72185e270d68f2496620e148bb00945427c4827138d9efc48745e6382e3da3390ed0cdff7dbd02dcf9706e8ecccae97184 xwud-1.0.5.tar.bz2"
+sha512sums="a7b964d9ef13e4726b2ef84dcc1040cdf510c8031c3e6e1dc1c711e65d9e56f1fc5921a7af3dbbd898b861c79e9da6242da23c2e73816e39152ae719052293e9 xwud-1.0.6.tar.xz"
diff --git a/user/xxhash/APKBUILD b/user/xxhash/APKBUILD
new file mode 100644
index 000000000..ff9328e9f
--- /dev/null
+++ b/user/xxhash/APKBUILD
@@ -0,0 +1,34 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=xxhash
+pkgver=0.7.4
+pkgrel=0
+pkgdesc="Fast non-cryptographic hashing algorithm"
+url="https://cyan4973.github.io/xxHash/"
+arch="all"
+license="BSD-2-Clause"
+depends=""
+makedepends=""
+subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
+source="xxHash-$pkgver.tar.gz::https://github.com/Cyan4973/xxHash/archive/v$pkgver.tar.gz"
+builddir="$srcdir"/xxHash-$pkgver
+
+build() {
+ make prefix=/usr
+}
+
+check() {
+ make prefix=/usr check
+}
+
+package() {
+ make prefix=/usr DESTDIR="$pkgdir" install
+}
+
+tools() {
+ license="GPL-2.0+"
+ mkdir -p "$subpkgdir"/usr
+ mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
+}
+
+sha512sums="9dbf8424b355d6551c18cff7ed7dbd26d4e5735b9a07fe54911b7438d6ffed3a3c2429ac09b616de630ea16cf32ff73529b6c3fad4af78ae0cb2b06155086aea xxHash-0.7.4.tar.gz"
diff --git a/user/yajl/APKBUILD b/user/yajl/APKBUILD
index 6a1f5991d..51f0b920b 100644
--- a/user/yajl/APKBUILD
+++ b/user/yajl/APKBUILD
@@ -1,41 +1,66 @@
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=yajl
pkgver=2.1.0
-pkgrel=0
+pkgrel=1
pkgdesc="Yet Another JSON Library (YAJL)"
-url="http://lloyd.github.com/yajl/"
+url="https://lloyd.github.io/yajl/"
arch="all"
license="ISC"
depends=""
-makedepends="cmake"
checkdepends="cmd:which"
+makedepends="cmake"
subpackages="$pkgname-dev $pkgname-tools"
-source="yajl-$pkgver.tar.gz::https://github.com/lloyd/yajl/archive/$pkgver.tar.gz"
+source="https://distfiles.adelielinux.org/source/$pkgname-$pkgver.tar.gz"
-build() {
- cd "$builddir"
- cmake -DCMAKE_INSTALL_PREFIX="/usr" .
- make
+# How to create archive from git:
+#
+# abuild snapshot
+#
+
+_gitrepo=yajl.git
+_giturl="https://github.com/lloyd/$_gitrepo"
+_gittag=$pkgver
+
+snapshot() {
+ _tarball=$pkgname-$pkgver.tar.gz
+ msg "Creating $_tarball.."
+ mkdir -p "$srcdir"
+ cd "${SRCDEST:-$srcdir}"
+ if ! [ -d "$_gitrepo" ]; then
+ git clone --bare $_giturl
+ else
+ git --git-dir=$_gitrepo fetch
+ fi
+
+ git --git-dir=$_gitrepo archive --prefix=$pkgname-$pkgver/ \
+ -o "$SRCDEST"/$_tarball $_gittag
+
+ msg "Upload $_tarball to mirrormaster now."
}
-package() {
- cd "$builddir"
- make install DESTDIR="$pkgdir"
- mv "$pkgdir"/usr/share/pkgconfig "$pkgdir"/usr/lib/
+build() {
+ cmake \
+ -DCMAKE_INSTALL_PREFIX="/usr" \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ .
+ make
}
check() {
- cd "$builddir"
make test
# make test-api just checks the return status of gen-extra-close
# and also forkbombs, so elide that
}
+package() {
+ make install DESTDIR="$pkgdir"
+ mv "$pkgdir"/usr/share/pkgconfig "$pkgdir"/usr/lib/
+}
+
tools() {
pkgdesc="JSON tools based on Yajl"
mkdir -p "$subpkgdir"/usr/
mv "$pkgdir"/usr/bin "$subpkgdir"/usr/
}
-
sha512sums="9e786d080803df80ec03a9c2f447501e6e8e433a6baf636824bc1d50ecf4f5f80d7dfb1d47958aeb0a30fe459bd0ef033d41bc6a79e1dc6e6b5eade930b19b02 yajl-2.1.0.tar.gz"
diff --git a/user/yakuake/APKBUILD b/user/yakuake/APKBUILD
index 91dd88bf9..774065fc1 100644
--- a/user/yakuake/APKBUILD
+++ b/user/yakuake/APKBUILD
@@ -1,7 +1,7 @@
# Contributor: A. Wilcox <awilfox@adelielinux.org>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=yakuake
-pkgver=3.0.5
+pkgver=22.04.2
pkgrel=0
pkgdesc="Drop-down KDE terminal emulator"
url="https://www.kde.org/applications/system/yakuake/"
@@ -11,12 +11,11 @@ depends=""
makedepends="cmake extra-cmake-modules qt5-qtbase-dev karchive-dev kconfig-dev
kcoreaddons-dev kcrash-dev kdbusaddons-dev kglobalaccel-dev ki18n-dev
kiconthemes-dev kio-dev knewstuff-dev knotifications-dev kparts-dev
- knotifyconfig-dev kwidgetsaddons-dev kwindowsystem-dev"
+ knotifyconfig-dev kwayland-dev kwidgetsaddons-dev kwindowsystem-dev"
subpackages="$pkgname-lang"
-source="https://download.kde.org/stable/yakuake/$pkgver/src/yakuake-$pkgver.tar.xz"
+source="https://download.kde.org/stable/release-service/$pkgver/src/yakuake-$pkgver.tar.xz"
build() {
- cd "$builddir"
if [ "$CBUILD" != "$CHOST" ]; then
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
fi
@@ -27,18 +26,16 @@ build() {
-DCMAKE_BUILD_TYPE=RelWithDebugInfo \
-DCMAKE_CXX_FLAGS="$CXXFLAGS" \
-DCMAKE_C_FLAGS="$CFLAGS" \
- ${CMAKE_CROSSOPTS}
+ ${CMAKE_CROSSOPTS} .
make
}
check() {
- cd "$builddir"
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
-sha512sums="17640590bb87b7c27e1e336cb82141b986103af95cfae2da129b69537d89a78eb0e21a6f5fb9ab26ed9e572f9edad055264f642afee6012e1a5a5c55d9dc2d22 yakuake-3.0.5.tar.xz"
+sha512sums="f4048905ee11031987cd9cc0ae9a1a2a7e1bbf596199ac2092cea06118ea61f3735f36cb8c2a4b1e34dd593c3c320c6a66438bb7d2ee9c63c6bf1f2bed32c7ec yakuake-22.04.2.tar.xz"
diff --git a/user/yaml-cpp/APKBUILD b/user/yaml-cpp/APKBUILD
new file mode 100644
index 000000000..53f41b87b
--- /dev/null
+++ b/user/yaml-cpp/APKBUILD
@@ -0,0 +1,39 @@
+# Contributor: Alyx Wolcott <alyx@leuhta.com>
+# Maintainer: Alyx Wolcott <alyx@leuhta.com>
+pkgname=yaml-cpp
+pkgver=0.6.3
+pkgrel=0
+pkgdesc="A YAML parser and emitter in C++"
+url="https://github.com/jbeder/yaml-cpp"
+arch="all"
+license="MIT"
+makedepends="cmake"
+subpackages="$pkgname-dev"
+source="$pkgname-$pkgver.tar.gz::https://github.com/jbeder/yaml-cpp/archive/yaml-cpp-$pkgver.tar.gz"
+builddir="$srcdir/$pkgname-$pkgname-$pkgver"
+
+build() {
+ if [ "$CBUILD" != "$CHOST" ]; then
+ CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
+ fi
+ cmake \
+ -DCMAKE_INSTALL_PREFIX=/usr \
+ -DCMAKE_INSTALL_LIBDIR=lib \
+ -DBUILD_SHARED_LIBS=True \
+ -DCMAKE_BUILD_TYPE=RelWithDebugInfo \
+ -DCMAKE_CXX_FLAGS="$CXXFLAGS" \
+ -DCMAKE_C_FLAGS="$CFLAGS" \
+ -DYAML_BUILD_SHARED_LIBS=ON \
+ ${CMAKE_CROSSOPTS}
+ make
+}
+
+check() {
+ CTEST_OUTPUT_ON_FAILURE=TRUE ctest
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="68b9ce987cabc1dec79382f922de20cc2c222cb9c090ecb93dc686b048da5c917facf4fce6d8f72feea44b61e5a6770ed3b0c199c4cd4e6bde5b6245c09f8e49 yaml-cpp-0.6.3.tar.gz"
diff --git a/user/yasm/APKBUILD b/user/yasm/APKBUILD
index 9452da3c0..aa20160a9 100644
--- a/user/yasm/APKBUILD
+++ b/user/yasm/APKBUILD
@@ -1,22 +1,24 @@
-# Maintainer:
+# Maintainer: Zach van Rijn <me@zv.io>
pkgname=yasm
pkgver=1.3.0
-pkgrel=2
+pkgrel=3
pkgdesc="A rewrite of NASM to allow for multiple syntax supported (NASM, TASM, GAS, etc.)"
url="http://yasm.tortall.net/"
arch="all"
license="(BSD-2-Clause OR BSD-3-Clause) AND (Artistic-1.0 OR GPL-2.0-only OR LGPL-2.0-only)"
+depends=""
+makedepends=""
subpackages="$pkgname-dev $pkgname-doc"
-source="http://www.tortall.net/projects/$pkgname/releases/$pkgname-$pkgver.tar.gz"
+source="http://www.tortall.net/projects/$pkgname/releases/$pkgname-$pkgver.tar.gz
+ fix-pmmx.patch
+ "
prepare() {
default_prepare
- cd "$builddir"
update_config_sub
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,14 +27,13 @@ build() {
}
check() {
- cd "$builddir"
make -j1 check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
install -Dm644 COPYING "$pkgdir"/usr/share/licenses/$pkgname/COPYING
}
-sha512sums="572d3b45568b10f58e48f1188c2d6bcbdd16429c8afaccc8c6d37859b45635e106885d679e41d0bee78c23822108c7ae75aa7475eed5ba58057e0a6fe1b68645 yasm-1.3.0.tar.gz"
+sha512sums="572d3b45568b10f58e48f1188c2d6bcbdd16429c8afaccc8c6d37859b45635e106885d679e41d0bee78c23822108c7ae75aa7475eed5ba58057e0a6fe1b68645 yasm-1.3.0.tar.gz
+3d88d39dd4d5315cdbe7fd7f2da682eefd186e5e6ee740436d90167f12defa08d4785eb0b48af82464d0beb1b382c47413f033caabd942285833310f80b3482a fix-pmmx.patch"
diff --git a/user/yasm/fix-pmmx.patch b/user/yasm/fix-pmmx.patch
new file mode 100644
index 000000000..f8032dcb2
--- /dev/null
+++ b/user/yasm/fix-pmmx.patch
@@ -0,0 +1,91 @@
+From afbff931d56c467791b0347c784ebc4a7c73014d Mon Sep 17 00:00:00 2001
+From: cryptobro <andrey.roussev@gmail.com>
+Date: Tue, 12 Oct 2021 12:29:10 +0300
+Subject: [PATCH] Fix UB/crashes
+
+Sometimes you may encounter strange errors like:
+libvgstr3412_x64_asm.s:4473: error: Unrecognized register name `%ym'
+libvgstr3412_x64_asm.s:4473: error: expected `,'
+make[2]: *** [Makefile:576: libvgstr3412_la-libvgstr3412_x64_asm.lo] Error 1g
+
+Valgrind shows the places:
+valgrind /tmp/yasm-1.3.0/yasm -e -p gnu -f elf64 -DPROC_TYPE_X64 -DELF libvgstr3412_x64_asm.s -DPIC -o xxxx
+==8224== Memcheck, a memory error detector
+==8224== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
+==8224== Using Valgrind-3.17.0 and LibVEX; rerun with -h for copyright info
+==8224== Command: /tmp/yasm-1.3.0/yasm -e -p gnu -f elf64 -DPROC_TYPE_X64 -DELF libvgstr3412_x64_asm.s -DPIC -o xxxx
+==8224==
+==8224== Invalid read of size 1
+==8224== at 0x4846C70: strncmp (vg_replace_strmem.c:663)
+==8224== by 0x43125C: expand_macro (gas-preproc.c:915)
+==8224== by 0x43125C: process_line (gas-preproc.c:1174)
+==8224== by 0x4317A2: gas_preproc_get_line (gas-preproc.c:1336)
+==8224== by 0x402A13: do_preproc_only (yasm.c:323)
+==8224== by 0x402A13: main (yasm.c:724)
+==8224== Address 0x4fa7330 is 0 bytes inside a block of size 4 free'd
+==8224== at 0x48430E4: free (vg_replace_malloc.c:755)
+==8224== by 0x43151D: expand_macro (gas-preproc.c:936)
+==8224== by 0x43151D: process_line (gas-preproc.c:1174)
+==8224== by 0x4317A2: gas_preproc_get_line (gas-preproc.c:1336)
+==8224== by 0x402A13: do_preproc_only (yasm.c:323)
+==8224== by 0x402A13: main (yasm.c:724)
+==8224== Block was alloc'd at
+==8224== at 0x48456AF: realloc (vg_replace_malloc.c:1192)
+==8224== by 0x414887: def_xrealloc (xmalloc.c:101)
+==8224== by 0x42F1A7: gas_scan (gas-preproc.c:440)
+==8224== by 0x4311FF: expand_macro (gas-preproc.c:906)
+==8224== by 0x4311FF: process_line (gas-preproc.c:1174)
+==8224== by 0x4317A2: gas_preproc_get_line (gas-preproc.c:1336)
+==8224== by 0x402A13: do_preproc_only (yasm.c:323)
+==8224== by 0x402A13: main (yasm.c:724)
+==8224==
+==8224== Invalid read of size 1
+==8224== at 0x431268: expand_macro (gas-preproc.c:916)
+==8224== by 0x431268: process_line (gas-preproc.c:1174)
+==8224== by 0x4317A2: gas_preproc_get_line (gas-preproc.c:1336)
+==8224== by 0x402A13: do_preproc_only (yasm.c:323)
+==8224== by 0x402A13: main (yasm.c:724)
+==8224== Address 0x56c5581 is 1 bytes inside a block of size 13 free'd
+==8224== at 0x48430E4: free (vg_replace_malloc.c:755)
+==8224== by 0x43151D: expand_macro (gas-preproc.c:936)
+==8224== by 0x43151D: process_line (gas-preproc.c:1174)
+==8224== by 0x4317A2: gas_preproc_get_line (gas-preproc.c:1336)
+==8224== by 0x402A13: do_preproc_only (yasm.c:323)
+==8224== by 0x402A13: main (yasm.c:724)
+==8224== Block was alloc'd at
+==8224== at 0x48456AF: realloc (vg_replace_malloc.c:1192)
+==8224== by 0x414887: def_xrealloc (xmalloc.c:101)
+==8224== by 0x42F1A7: gas_scan (gas-preproc.c:440)
+==8224== by 0x4311FF: expand_macro (gas-preproc.c:906)
+==8224== by 0x4311FF: process_line (gas-preproc.c:1174)
+==8224== by 0x4317A2: gas_preproc_get_line (gas-preproc.c:1336)
+==8224== by 0x402A13: do_preproc_only (yasm.c:323)
+==8224== by 0x402A13: main (yasm.c:724)
+---
+ modules/preprocs/gas/gas-preproc.c | 6 ++++++
+ 1 file changed, 6 insertions(+)
+
+diff --git a/modules/preprocs/gas/gas-preproc.c b/modules/preprocs/gas/gas-preproc.c
+index 94d8f5da3..8f4c79323 100644
+--- a/modules/preprocs/gas/gas-preproc.c
++++ b/modules/preprocs/gas/gas-preproc.c
+@@ -912,6 +912,9 @@ static void expand_macro(yasm_preproc_gas *pp, macro_entry *macro, const char *a
+ char *end = strstr(macro->params[j], "=");
+ int len = (end ? (size_t)(end - macro->params[j])
+ : strlen(macro->params[j]));
++ if (!tokval.t_charptr) {
++ continue;
++ }
+ if (!strncmp(tokval.t_charptr, macro->params[j], len)
+ && tokval.t_charptr[len] == '\0') {
+ /* now, find matching argument. */
+@@ -932,6 +935,9 @@ static void expand_macro(yasm_preproc_gas *pp, macro_entry *macro, const char *a
+ memcpy(line + cursor - len, value, value_length);
+ pp->expr.string = work = line;
+ pp->expr.string_cursor += delta;
++ if (pp->expr.symbol == tokval.t_charptr) {
++ tokval.t_charptr = NULL;
++ }
+ if (pp->expr.symbol) {
+ yasm_xfree(pp->expr.symbol);
+ pp->expr.symbol = NULL;
diff --git a/user/yelp-tools/APKBUILD b/user/yelp-tools/APKBUILD
new file mode 100644
index 000000000..eb54a844b
--- /dev/null
+++ b/user/yelp-tools/APKBUILD
@@ -0,0 +1,35 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=yelp-tools
+pkgver=40.0
+pkgrel=0
+pkgdesc="Gnome documentation tools"
+url="http://projects.gnome.org/yelp/"
+arch="noarch"
+license="GPL-2.0+"
+depends=""
+makedepends="itstool meson ninja py3-lxml yelp-xsl"
+subpackages="$pkgname-dev"
+source="https://download-fallback.gnome.org/sources/yelp-tools/40/yelp-tools-$pkgver.tar.xz"
+
+build() {
+ meson \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var \
+ --buildtype=release \
+ . output
+ ninja -C output
+}
+
+check() {
+# Add test instructions here.
+:
+}
+
+package() {
+ DESTDIR="$pkgdir" ninja -C output install
+}
+
+sha512sums="b89e514cdc2c6ff96097af0cab5694e9f1dfd2a125e08f99a69c0e7dd51e1e1a859c2e6eec656ecea6103bfc65733e1256a77ef992454db4a554567b46fa2628 yelp-tools-40.0.tar.xz"
diff --git a/user/yelp-xsl/APKBUILD b/user/yelp-xsl/APKBUILD
new file mode 100644
index 000000000..795137f9c
--- /dev/null
+++ b/user/yelp-xsl/APKBUILD
@@ -0,0 +1,33 @@
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
+pkgname=yelp-xsl
+pkgver=40.2
+pkgrel=0
+pkgdesc="XSL stylesheets for Yelp documentation"
+url="http://live.gnome.org/Yelp"
+arch="noarch"
+license="GPL-2.0+"
+depends=""
+makedepends="itstool"
+source="https://download-fallback.gnome.org/sources/yelp-xsl/40/yelp-xsl-$pkgver.tar.xz"
+
+build() {
+ ./configure \
+ --build=$CBUILD \
+ --host=$CHOST \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --mandir=/usr/share/man \
+ --localstatedir=/var
+ make
+}
+
+check() {
+ make check
+}
+
+package() {
+ make DESTDIR="$pkgdir" install
+}
+
+sha512sums="d365d6d873878a640244053efa9f2b9f7330a8bbca1c47073f0617c1f9150f58e91b48ac7d28e5b65fd113d612afd65b5f9c3d16a6958a957130f85d2f866483 yelp-xsl-40.2.tar.xz"
diff --git a/user/youtube-dl/APKBUILD b/user/youtube-dl/APKBUILD
index af5d02712..343603636 100644
--- a/user/youtube-dl/APKBUILD
+++ b/user/youtube-dl/APKBUILD
@@ -3,7 +3,7 @@
# Contributor: Timo Teräs <timo.teras@iki.fi>
# Maintainer: Max Rees <maxcrees@me.com>
pkgname=youtube-dl
-pkgver=2018.11.23
+pkgver=2020.07.28
pkgrel=0
pkgdesc="Command-line program to download videos from YouTube and many other sites"
url="https://youtube-dl.org"
@@ -11,11 +11,14 @@ arch="noarch"
options="!check" # Takes way too long, and uses network
license="Unlicense AND Public-Domain"
depends="ffmpeg python3"
+makedepends=""
subpackages="$pkgname-doc
$pkgname-zsh-completion:zshcomp
$pkgname-bash-completion:bashcomp
$pkgname-fish-completion:fishcomp"
-source="https://github.com/rg3/$pkgname/releases/download/$pkgver/$pkgname-$pkgver.tar.gz"
+source="https://github.com/rg3/$pkgname/releases/download/$pkgver/$pkgname-$pkgver.tar.gz
+ tumblr.patch
+ "
builddir="$srcdir/$pkgname"
prepare() {
@@ -27,12 +30,10 @@ prepare() {
}
check() {
- cd "$builddir"
python3 -m unittest discover
}
package() {
- cd "$builddir"
python3 setup.py install --root="$pkgdir/" --optimize=1
}
@@ -65,4 +66,5 @@ fishcomp() {
"$subpkgdir/usr/share/fish/completions/"
}
-sha512sums="d4d2813657972c37d3493743a44055d7a776aeb5c5a97902e07caa317a3b2db30332507c37b56b3d8554e0bdc2a0ec6a9862977b449b363343a4de2df12bf059 youtube-dl-2018.11.23.tar.gz"
+sha512sums="be18cd53577a1e750a9610d481225b5683414ee4a095aa90b1a9ef150e9009bec4c2188f19f13505c88ac0179872751a07f5fb4b591beca3cefd11ccf071132d youtube-dl-2020.07.28.tar.gz
+5760d06e6bbc1eee2c6be2d1f580f86b3cfa5f4bc44a62fb8145ce1cd41352ecf2f65d65d79a2d7f1ec129a34c28a7ec3d0d328c907e743bfcea54c65c71285d tumblr.patch"
diff --git a/user/youtube-dl/tumblr.patch b/user/youtube-dl/tumblr.patch
new file mode 100644
index 000000000..d34a79da6
--- /dev/null
+++ b/user/youtube-dl/tumblr.patch
@@ -0,0 +1,49 @@
+From a4a199b4dcc3e778621c4268a5dba615cf6f44ba Mon Sep 17 00:00:00 2001
+From: rafinetiz <rafii.netizz@gmail.com>
+Date: Fri, 18 Oct 2019 21:17:00 +0700
+Subject: [PATCH 1/2] Fix tumblr permission denied #22755
+
+---
+ youtube_dl/extractor/tumblr.py | 3 ++-
+ 1 file changed, 2 insertions(+), 1 deletion(-)
+
+diff --git a/youtube_dl/extractor/tumblr.py b/youtube_dl/extractor/tumblr.py
+index edbb0aa6944b..71ced801859e 100644
+--- a/youtube_dl/extractor/tumblr.py
++++ b/youtube_dl/extractor/tumblr.py
+@@ -165,7 +165,8 @@ def _real_extract(self, url):
+ if iframe_url is None:
+ return self.url_result(redirect_url, 'Generic')
+
+- iframe = self._download_webpage(iframe_url, video_id, 'Downloading iframe page')
++ iframe = self._download_webpage(iframe_url, video_id, 'Downloading iframe page',
++ headers={'Referer': url})
+
+ duration = None
+ sources = []
+
+From 43a19105d78c5c297d91936798d341f89919e9b1 Mon Sep 17 00:00:00 2001
+From: rafinetiz <rafii.netizz@gmail.com>
+Date: Fri, 18 Oct 2019 21:45:12 +0700
+Subject: [PATCH 2/2] Fix coding style
+
+---
+ youtube_dl/extractor/tumblr.py | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/youtube_dl/extractor/tumblr.py b/youtube_dl/extractor/tumblr.py
+index 71ced801859e..61b0c1db65fe 100644
+--- a/youtube_dl/extractor/tumblr.py
++++ b/youtube_dl/extractor/tumblr.py
+@@ -165,7 +165,10 @@ def _real_extract(self, url):
+ if iframe_url is None:
+ return self.url_result(redirect_url, 'Generic')
+
+- iframe = self._download_webpage(iframe_url, video_id, 'Downloading iframe page',
++ iframe = self._download_webpage(
++ iframe_url,
++ video_id,
++ 'Downloading iframe page',
+ headers={'Referer': url})
+
+ duration = None
diff --git a/user/yubico-c/APKBUILD b/user/yubico-c/APKBUILD
index 926ecf235..ce5644929 100644
--- a/user/yubico-c/APKBUILD
+++ b/user/yubico-c/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=yubico-c
pkgver=1.13
pkgrel=2
@@ -8,19 +8,19 @@ url="https://developers.yubico.com/yubico-c/"
arch="all"
license="BSD-2-Clause"
depends=""
-makedepends="asciidoctor"
+makedepends="asciidoctor autoconf automake libtool"
subpackages="$pkgname-dev $pkgname-doc"
source="yubico-c-libyubikey-$pkgver.tar.gz::https://github.com/Yubico/yubico-c/archive/libyubikey-$pkgver.tar.gz
- use-asciidoctor.patch"
+ use-asciidoctor.patch
+ "
builddir="$srcdir/$pkgname-libyubikey-$pkgver"
prepare() {
- cd "$builddir"
default_prepare
autoreconf -vif
}
+
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -32,12 +32,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir/" install
}
diff --git a/user/yubikey-personalization/APKBUILD b/user/yubikey-personalization/APKBUILD
index 2973d09f3..5f01b39bd 100644
--- a/user/yubikey-personalization/APKBUILD
+++ b/user/yubikey-personalization/APKBUILD
@@ -1,27 +1,30 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=yubikey-personalization
-pkgver=1.19.3
-pkgrel=0
+pkgver=1.20.0
+pkgrel=2
pkgdesc="Cross-platform library & tools for personalizing YubiKey devices"
url="https://developers.yubico.com/yubikey-personalization/"
arch="all"
license="BSD-2-Clause AND Public-Domain"
depends=""
-makedepends="yubico-c-dev libusb-dev json-c-dev asciidoctor"
+makedepends="yubico-c-dev libusb-dev json-c-dev asciidoctor
+ autoconf automake libtool"
subpackages="$pkgname-dev $pkgname-doc"
source="yubikey-personalization-$pkgver.tar.gz::https://github.com/Yubico/yubikey-personalization/archive/v$pkgver.tar.gz
use-asciidoctor.patch
+ json_c.patch
+ gcc10.patch
+ uninit.patch
+ wipe-mem.patch
"
prepare() {
- cd "$builddir"
default_prepare
autoreconf -vif
}
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -33,14 +36,16 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir/" install
}
-sha512sums="436c9807e488f7b324b892da7bfc7ea93e2b746cc3ae075822e9e8bfe478ef8e61c194127e5d4f50f6c1d9512292640d033464cceb6b8a18069411ff7993cc52 yubikey-personalization-1.19.3.tar.gz
-d6777a43e5e57430268bb50ab704641465a7314b15fc821d8bfa7f0c6510829d0118ced426cd5f8730589efe6264df6b82fc70e8bfe3d8b7d735e51339a25af2 use-asciidoctor.patch"
+sha512sums="a38b26700793f0a801e5f5889bbbce4a3f728d22aaecf8d0890f1b5135e67bed16a78b7a36dbc323c5d296901f6dd420fa658a982492a0cd9f0bbf95a5fbc823 yubikey-personalization-1.20.0.tar.gz
+d6777a43e5e57430268bb50ab704641465a7314b15fc821d8bfa7f0c6510829d0118ced426cd5f8730589efe6264df6b82fc70e8bfe3d8b7d735e51339a25af2 use-asciidoctor.patch
+a8bc7ae71d0a05476688abfaea070ca7dc2eaa68e033524d4a1b2b6240eec2932d867e9eeaa248874a04f254618cd79bf9ebaa17421938b0c2e62502bf90c055 json_c.patch
+063acafb26941bc061d8613187bcbffe3fd1ca19a7c5346b0c347e052a30e4b4c750f4a40bb59b479173dbc7b5458383f5d5e25e385539b127cf4d9636caa549 gcc10.patch
+1d29331994f43a99e2cb854ff3ff8302800102e7c9eaef30228efa8ddf9a188279fdb4981b28f64141cfa5659af11af9325ecd249041b745c1cd0d55fe5fbd69 uninit.patch
+cca0729be2337923ab758fcf4a225d40cf12ac79fce609904e536ff811abec4231ecf58d47096587c974223335b35ec6c63ab4fc872cbfabf1f49f76313c8541 wipe-mem.patch"
diff --git a/user/yubikey-personalization/gcc10.patch b/user/yubikey-personalization/gcc10.patch
new file mode 100644
index 000000000..0e09e821e
--- /dev/null
+++ b/user/yubikey-personalization/gcc10.patch
@@ -0,0 +1,25 @@
+From 09ea16d9e2030e4da6ad00c1e5147e962aa7ff84 Mon Sep 17 00:00:00 2001
+From: Klas Lindfors <klas@yubico.com>
+Date: Mon, 17 Feb 2020 08:58:33 +0100
+Subject: [PATCH] make header declarations extern
+
+fixes #155
+---
+ ykpers-args.h | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/ykpers-args.h b/ykpers-args.h
+index 2a63268d..9ff455a7 100644
+--- a/ykpers-args.h
++++ b/ykpers-args.h
+@@ -33,8 +33,8 @@
+
+ #include "ykpers.h"
+
+-const char *usage;
+-const char *optstring;
++extern const char *usage;
++extern const char *optstring;
+
+ int args_to_config(int argc, char **argv, YKP_CONFIG *cfg, char *oathid,
+ size_t oathid_len, const char **infname,
diff --git a/user/yubikey-personalization/json_c.patch b/user/yubikey-personalization/json_c.patch
new file mode 100644
index 000000000..ca5a918d2
--- /dev/null
+++ b/user/yubikey-personalization/json_c.patch
@@ -0,0 +1,83 @@
+From 0aa2e2cae2e1777863993a10c809bb50f4cde7f8 Mon Sep 17 00:00:00 2001
+From: Christian Hesse <mail@eworm.de>
+Date: Sat, 25 Apr 2020 20:55:28 +0200
+Subject: [PATCH] fix boolean value with json-c 0.14
+
+Upstream removed the TRUE and FALSE defines in commit
+0992aac61f8b087efd7094e9ac2b84fa9c040fcd.
+---
+ ykpers-json.c | 18 +++++++++---------
+ 1 file changed, 9 insertions(+), 9 deletions(-)
+
+diff --git a/ykpers-json.c b/ykpers-json.c
+index a62e907..15ad380 100644
+--- a/ykpers-json.c
++++ b/ykpers-json.c
+@@ -40,7 +40,7 @@
+ #define yk_json_object_object_get(obj, key, value) json_object_object_get_ex(obj, key, &value)
+ #else
+ typedef int json_bool;
+-#define yk_json_object_object_get(obj, key, value) (value = json_object_object_get(obj, key)) == NULL ? (json_bool)FALSE : (json_bool)TRUE
++#define yk_json_object_object_get(obj, key, value) (value = json_object_object_get(obj, key)) == NULL ? 0 : 1
+ #endif
+
+ static void set_json_value(struct map_st *p, int mode, json_object *options, YKP_CONFIG *cfg) {
+@@ -50,7 +50,7 @@ static void set_json_value(struct map_st *p, int mode, json_object *options, YKP
+ if(p->mode && (mode & p->mode) == mode) {
+ json_object *joption;
+ json_bool ret = yk_json_object_object_get(options, p->json_text, joption);
+- if(ret == TRUE && json_object_get_type(joption) == json_type_boolean) {
++ if(ret == 1 && json_object_get_type(joption) == json_type_boolean) {
+ int value = json_object_get_boolean(joption);
+ if(value == 1) {
+ p->setter(cfg, true);
+@@ -230,20 +230,20 @@ int _ykp_json_import_cfg(YKP_CONFIG *cfg, const char *json, size_t len) {
+ ykp_errno = YKP_EINVAL;
+ goto out;
+ }
+- if(yk_json_object_object_get(jobj, "yubiProdConfig", yprod_json) == FALSE) {
++ if(yk_json_object_object_get(jobj, "yubiProdConfig", yprod_json) == 0) {
+ ykp_errno = YKP_EINVAL;
+ goto out;
+ }
+- if(yk_json_object_object_get(yprod_json, "mode", jmode) == FALSE) {
++ if(yk_json_object_object_get(yprod_json, "mode", jmode) == 0) {
+ ykp_errno = YKP_EINVAL;
+ goto out;
+ }
+- if(yk_json_object_object_get(yprod_json, "options", options) == FALSE) {
++ if(yk_json_object_object_get(yprod_json, "options", options) == 0) {
+ ykp_errno = YKP_EINVAL;
+ goto out;
+ }
+
+- if(yk_json_object_object_get(yprod_json, "targetConfig", jtarget) == TRUE) {
++ if(yk_json_object_object_get(yprod_json, "targetConfig", jtarget) == 1) {
+ int target_config = json_object_get_int(jtarget);
+ int command;
+ if(target_config == 1) {
+@@ -275,13 +275,13 @@ int _ykp_json_import_cfg(YKP_CONFIG *cfg, const char *json, size_t len) {
+ if(mode == MODE_OATH_HOTP) {
+ json_object *jdigits, *jrandom;
+ ykp_set_tktflag_OATH_HOTP(cfg, true);
+- if(yk_json_object_object_get(options, "oathDigits", jdigits) == TRUE) {
++ if(yk_json_object_object_get(options, "oathDigits", jdigits) == 1) {
+ int digits = json_object_get_int(jdigits);
+ if(digits == 8) {
+ ykp_set_cfgflag_OATH_HOTP8(cfg, true);
+ }
+ }
+- if(yk_json_object_object_get(options, "randomSeed", jrandom) == TRUE) {
++ if(yk_json_object_object_get(options, "randomSeed", jrandom) == 1) {
+ int random = json_object_get_boolean(jrandom);
+ int seed = 0;
+ if(random == 1) {
+@@ -290,7 +290,7 @@ int _ykp_json_import_cfg(YKP_CONFIG *cfg, const char *json, size_t len) {
+ goto out;
+ } else {
+ json_object *jseed;
+- if(yk_json_object_object_get(options, "fixedSeedvalue", jseed) == TRUE) {
++ if(yk_json_object_object_get(options, "fixedSeedvalue", jseed) == 1) {
+ seed = json_object_get_int(jseed);
+ }
+ }
diff --git a/user/yubikey-personalization/uninit.patch b/user/yubikey-personalization/uninit.patch
new file mode 100644
index 000000000..713ce1699
--- /dev/null
+++ b/user/yubikey-personalization/uninit.patch
@@ -0,0 +1,204 @@
+From f86b334504693afe9ee6ec61416182d23c66e1ad Mon Sep 17 00:00:00 2001
+From: Gabriel Kihlman <g.kihlman@yubico.com>
+Date: Mon, 27 Apr 2020 14:52:53 +0200
+Subject: [PATCH] Initialize bufs to 0 to avoid potentially leaking
+ uninitialized memory
+
+Based on a report from Christian Reitter doing fuzzing with MSAN.
+
+Extracts of logs:
+
+==16111==WARNING: MemorySanitizer: use-of-uninitialized-value
+ #0 0x4d59d4 in yk_write_to_key
+/yubikey-personalization/ykcore/ykcore.c:715:8
+ #1 0x4d9c00 in _yk_write /yubikey-personalization/ykcore/ykcore.c:233:7
+ #2 0x4dc74d in yk_write_scan_map
+/yubikey-personalization/ykcore/ykcore.c:357:9
+ #3 0x4ce352 in ykpersonalize_main
+/yubikey-personalization/ykpersonalize.c:423:9
+[...]
+
+ Uninitialized value was stored to memory at
+ #0 0x45392b in __msan_memcpy
+(/yubikey-personalization/.libs/ykpersonalize+0x45392b)
+ #1 0x4d52f7 in yk_write_to_key
+/yubikey-personalization/ykcore/ykcore.c:689:2
+ #2 0x4d9c00 in _yk_write /yubikey-personalization/ykcore/ykcore.c:233:7
+ #3 0x4dc74d in yk_write_scan_map
+/yubikey-personalization/ykcore/ykcore.c:357:9
+ #4 0x4ce352 in ykpersonalize_main
+/yubikey-personalization/ykpersonalize.c:423:9
+[...]
+
+ Uninitialized value was created by an allocation of 'scan_codes' in
+the stack frame of function 'ykpersonalize_main'
+==18180==WARNING: MemorySanitizer: use-of-uninitialized-value
+ #0 0x4d5a24 in yk_write_to_key /yubikey-personalization/ykcore/ykcore.c:715:8
+ #1 0x4d9c50 in _yk_write /yubikey-personalization/ykcore/ykcore.c:233:7
+ #2 0x4dae6c in yk_write_command /yubikey-personalization/ykcore/ykcore.c:288:8
+ #3 0x4cec93 in ykpersonalize_main /yubikey-personalization/ykpersonalize.c:440:10
+
+ Uninitialized value was stored to memory at
+ #0 0x45392b in __msan_memcpy (/yubikey-personalization/.libs/ykpersonalize+0x45392b)
+ #1 0x4d5347 in yk_write_to_key /yubikey-personalization/ykcore/ykcore.c:689:2
+ #2 0x4d9c50 in _yk_write /yubikey-personalization/ykcore/ykcore.c:233:7
+ #3 0x4dae6c in yk_write_command /yubikey-personalization/ykcore/ykcore.c:288:8
+ #4 0x4cec93 in ykpersonalize_main /yubikey-personalization/ykpersonalize.c:440:10
+
+ Uninitialized value was stored to memory at
+ #0 0x45392b in __msan_memcpy (/yubikey-personalization/.libs/ykpersonalize+0x45392b)
+ #1 0x4dacdb in yk_write_command /yubikey-personalization/ykcore/ykcore.c:280:3
+ #2 0x4cec93 in ykpersonalize_main /yubikey-personalization/ykpersonalize.c:440:10
+
+ Uninitialized value was stored to memory at
+ #0 0x45392b in __msan_memcpy (/yubikey-personalization/.libs/ykpersonalize+0x45392b)
+ #1 0x7f6fd2ea32f9 in ykp_set_fixed /yubikey-personalization/ykpers.c:787:1
+ #2 0x50193c in _set_fixed /yubikey-personalization/ykpers-args.c:900:2
+ #3 0x4ed040 in args_to_config /yubikey-personalization/ykpers-args.c:558:9
+ #4 0x4c865c in ykpersonalize_main /yubikey-personalization/ykpersonalize.c:167:8
+
+ Uninitialized value was created by an allocation of 'fixedbin' in the stack frame of function '_set_fixed'
+ #0 0x501130 in _set_fixed /yubikey-personalization/ykpers-args.c:889
+---
+ ykpers-args.c | 8 ++++----
+ ykpers.c | 12 ++++++------
+ ykpersonalize.c | 13 +++++++------
+ 3 files changed, 17 insertions(+), 16 deletions(-)
+
+diff --git a/ykpers-args.c b/ykpers-args.c
+index 53f7c22b..62ff7b2f 100644
+--- a/ykpers-args.c
++++ b/ykpers-args.c
+@@ -548,7 +548,7 @@ int args_to_config(int argc, char **argv, YKP_CONFIG *cfg, char *oathid,
+ else if (strncmp(optarg, "uid", 3) == 0) {
+ char *uid = optarg+4;
+ size_t uidlen;
+- unsigned char uidbin[256];
++ unsigned char uidbin[256] = {0};
+ size_t uidbinlen = 0;
+ int rc;
+ char *uidtmp = NULL;
+@@ -787,7 +787,7 @@ int args_to_config(int argc, char **argv, YKP_CONFIG *cfg, char *oathid,
+ size_t key_bytes = (size_t)ykp_get_supported_key_length(cfg);
+ int res = 0;
+ char *key_tmp = NULL;
+- char keybuf[20];
++ char keybuf[20] = {0};
+
+ if(keylocation == 2) {
+ const char *prompt = " AES key, 16 bytes (32 characters hex) : ";
+@@ -865,7 +865,7 @@ int args_to_config(int argc, char **argv, YKP_CONFIG *cfg, char *oathid,
+ static int _set_fixed(char *opt, YKP_CONFIG *cfg) {
+ const char *fixed = opt;
+ size_t fixedlen = strlen (fixed);
+- unsigned char fixedbin[256];
++ unsigned char fixedbin[256] = {0};
+ size_t fixedbinlen = 0;
+ int rc = hex_modhex_decode(fixedbin, &fixedbinlen,
+ fixed, fixedlen,
+@@ -898,7 +898,7 @@ static int _format_decimal_as_hex(uint8_t *dst, size_t dst_len, uint8_t *src)
+ /* For details, see YubiKey Manual 2010-09-16 section 5.3.4 - OATH-HOTP Token Identifier */
+ static int _format_oath_id(uint8_t *dst, size_t dst_len, uint8_t vendor, uint8_t type, uint32_t mui)
+ {
+- uint8_t buf[8 + 1];
++ uint8_t buf[8 + 1] = {0};
+
+ if (mui > 99999999)
+ return 0;
+diff --git a/ykpers.c b/ykpers.c
+index 7941d0e3..81cb0dff 100644
+--- a/ykpers.c
++++ b/ykpers.c
+@@ -264,7 +264,7 @@ int ykp_get_supported_key_length(const YKP_CONFIG *cfg)
+
+ /* Decode 128 bit AES key into cfg->ykcore_config.key */
+ int ykp_AES_key_from_hex(YKP_CONFIG *cfg, const char *hexkey) {
+- char aesbin[256];
++ char aesbin[256] = {0};
+
+ /* Make sure that the hexkey is exactly 32 characters */
+ if (strlen(hexkey) != 32) {
+@@ -311,7 +311,7 @@ int ykp_HMAC_key_from_raw(YKP_CONFIG *cfg, const char *key) {
+ * and 32 bits into the first four bytes of cfg->ykcore_config.uid.
+ */
+ int ykp_HMAC_key_from_hex(YKP_CONFIG *cfg, const char *hexkey) {
+- char aesbin[256];
++ char aesbin[256] = {0};
+ size_t i;
+
+ /* Make sure that the hexkey is exactly 40 characters */
+@@ -351,9 +351,9 @@ int ykp_AES_key_from_passphrase(YKP_CONFIG *cfg, const char *passphrase,
+ 0
+ };
+ const char **random_place;
+- uint8_t _salt[8];
++ uint8_t _salt[8] = {0};
+ size_t _salt_len = 0;
+- unsigned char buf[sizeof(cfg->ykcore_config.key) + 4];
++ unsigned char buf[sizeof(cfg->ykcore_config.key) + 4] = {0};
+ int rc;
+ int key_bytes = ykp_get_supported_key_length(cfg);
+ YK_PRF_METHOD prf_method = {20, yk_hmac_sha1};
+@@ -931,7 +931,7 @@ static const char str_extended_flags[] = "extended_flags";
+
+ static int _ykp_legacy_export_config(const YKP_CONFIG *cfg, char *buf, size_t len) {
+ if (cfg) {
+- char buffer[256];
++ char buffer[256] = {0};
+ struct map_st *p;
+ unsigned char t_flags;
+ bool key_bits_in_uid = false;
+@@ -1131,7 +1131,7 @@ int ykp_write_config(const YKP_CONFIG *cfg,
+ void *userdata),
+ void *userdata) {
+ if(cfg) {
+- char buffer[1024];
++ char buffer[1024] = {0};
+ int ret = _ykp_legacy_export_config(cfg, buffer, 1024);
+ if(ret) {
+ writer(buffer, strlen(buffer), userdata);
+diff --git a/ykpersonalize.c b/ykpersonalize.c
+index 15338c6a..2c991e32 100644
+--- a/ykpersonalize.c
++++ b/ykpersonalize.c
+@@ -48,17 +48,17 @@ int main(int argc, char **argv)
+ FILE *outf = NULL; const char *outfname = NULL;
+ int data_format = YKP_FORMAT_LEGACY;
+ bool verbose = false;
+- unsigned char access_code[256];
++ unsigned char access_code[256] = {0};
+ char *acc_code = NULL;
+ char *new_acc_code = NULL;
+- unsigned char scan_codes[sizeof(SCAN_MAP)];
+- unsigned char device_info[128];
++ unsigned char scan_codes[sizeof(SCAN_MAP)] = {0};
++ unsigned char device_info[128] = {0};
+ size_t device_info_len = 0;
+ YK_KEY *yk = 0;
+ YKP_CONFIG *cfg = ykp_alloc();
+ YK_STATUS *st = ykds_alloc();
+ bool autocommit = false;
+- char data[1024];
++ char data[1024] = {0};
+ bool dry_run = false;
+
+ /* Options */
+@@ -184,7 +184,7 @@ int main(int argc, char **argv)
+ }
+ }
+ if(new_acc_code) {
+- unsigned char accbin[256];
++ unsigned char accbin[256] = {0};
+ size_t accbinlen = 0;
+ int rc = hex_modhex_decode (accbin, &accbinlen,
+ new_acc_code, strlen(new_acc_code),
+@@ -261,7 +261,8 @@ int main(int argc, char **argv)
+ goto err;
+ }
+ } else {
+- char commitbuf[256]; size_t commitlen;
++ char commitbuf[256] = {0};
++ size_t commitlen;
+
+ if (ykp_command(cfg) == SLOT_SWAP) {
+ fprintf(stderr, "Configuration in slot 1 and 2 will be swapped\n");
diff --git a/user/yubikey-personalization/wipe-mem.patch b/user/yubikey-personalization/wipe-mem.patch
new file mode 100644
index 000000000..a5ef05e8d
--- /dev/null
+++ b/user/yubikey-personalization/wipe-mem.patch
@@ -0,0 +1,29 @@
+From 13f69440ac7cca05a94bd9cf9011e2ea352dad68 Mon Sep 17 00:00:00 2001
+From: Gabriel Kihlman <g.kihlman@yubico.com>
+Date: Mon, 27 Apr 2020 14:56:00 +0200
+Subject: [PATCH] Wipe stack memory containing key material before returning
+
+---
+ ykpers.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/ykpers.c b/ykpers.c
+index 81cb0df..2413b35 100644
+--- a/ykpers.c
++++ b/ykpers.c
+@@ -280,6 +280,7 @@ int ykp_AES_key_from_hex(YKP_CONFIG *cfg, const char *hexkey) {
+
+ yubikey_hex_decode(aesbin, hexkey, sizeof(aesbin));
+ memcpy(cfg->ykcore_config.key, aesbin, sizeof(cfg->ykcore_config.key));
++ insecure_memzero (aesbin, sizeof(aesbin));
+
+ return 0;
+ }
+@@ -330,6 +331,7 @@ int ykp_HMAC_key_from_hex(YKP_CONFIG *cfg, const char *hexkey) {
+ i = sizeof(cfg->ykcore_config.key);
+ memcpy(cfg->ykcore_config.key, aesbin, i);
+ memcpy(cfg->ykcore_config.uid, aesbin + i, 20 - i);
++ insecure_memzero (aesbin, sizeof(aesbin));
+
+ return 0;
+ }
diff --git a/user/z3/APKBUILD b/user/z3/APKBUILD
new file mode 100644
index 000000000..10e2636a0
--- /dev/null
+++ b/user/z3/APKBUILD
@@ -0,0 +1,52 @@
+# Contributor: A. Wilcox <awilfox@adelielinux.org>
+# Maintainer: A. Wilcox <awilfox@adelielinux.org>
+pkgname=z3
+pkgver=4.8.17
+pkgrel=0
+pkgdesc="Mathematical theorem prover"
+url=" "
+arch="all"
+license="MIT"
+depends=""
+makedepends="cmake gmp-dev python3-dev cmd:which"
+subpackages="$pkgname-dev py3-$pkgname:py3:noarch"
+source="https://github.com/Z3Prover/z3/archive/z3-$pkgver.tar.gz"
+builddir="$srcdir/z3-z3-$pkgver"
+
+case "$CARCH" in
+pmmx) options="$options textrels";;
+esac
+
+build() {
+ cmake \
+ -DCMAKE_INSTALL_PREFIX="/usr" \
+ -DCMAKE_INSTALL_LIBDIR="lib" \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+ -DZ3_BUILD_LIBZ3_SHARED=TRUE \
+ -DZ3_USE_LIB_GMP=TRUE \
+ -DZ3_BUILD_PYTHON_BINDINGS=TRUE \
+ -DZ3_INSTALL_PYTHON_BINDINGS=TRUE \
+ -DPYTHON_EXECUTABLE=/usr/bin/python3 \
+ -DZ3_INCLUDE_GIT_DESCRIBE=FALSE \
+ -DZ3_INCLUDE_GIT_HASH=FALSE \
+ -Bbuild .
+ make -C build
+}
+
+check() {
+ make -C build test-z3
+ build/test-z3 /a
+}
+
+package() {
+ make -C build DESTDIR="$pkgdir" install
+}
+
+py3() {
+ pkgdesc="$pkgdesc (Python bindings)"
+ depends="python3"
+ mkdir -p "$subpkgdir"/usr/lib
+ mv "$pkgdir"/usr/lib/python3* "$subpkgdir"/usr/lib/
+}
+
+sha512sums="95517014ec1798c2552253dd5cde6f955896ab297a4f56294f4bc6f2c5428069015f513c6eb9a090a809cfcf4cb1cc38cc83818f19b5b1051e4e6c06f973747d z3-4.8.17.tar.gz"
diff --git a/user/zenity/APKBUILD b/user/zenity/APKBUILD
index 234508b94..81b28d77b 100644
--- a/user/zenity/APKBUILD
+++ b/user/zenity/APKBUILD
@@ -1,5 +1,5 @@
-# Contributor: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
-# Maintainer: Kiyoshi Aman <kiyoshi.aman+adelie@gmail.com>
+# Contributor: Síle Ekaterin Liszka <sheila@vulpine.house>
+# Maintainer: Síle Ekaterin Liszka <sheila@vulpine.house>
pkgname=zenity
pkgver=3.32.0
pkgrel=0
@@ -13,7 +13,6 @@ subpackages="$pkgname-doc $pkgname-lang"
source="https://download.gnome.org/sources/zenity/${pkgver%.*}/zenity-$pkgver.tar.xz"
build() {
- cd "$builddir"
./configure \
--build=$CBUILD \
--host=$CHOST \
@@ -25,12 +24,10 @@ build() {
}
check() {
- cd "$builddir"
make check
}
package() {
- cd "$builddir"
make DESTDIR="$pkgdir" install
}
diff --git a/user/zola/APKBUILD b/user/zola/APKBUILD
new file mode 100644
index 000000000..d9f6e7103
--- /dev/null
+++ b/user/zola/APKBUILD
@@ -0,0 +1,1138 @@
+# Contributor: Gentoo Rust Maintainers <rust@gentoo.org>
+# Contributor: Molly Miller <adelie@m-squa.red>
+# Maintainer: Samuel Holland <samuel@sholland.org>
+pkgname=zola
+pkgver=0.19.1
+pkgrel=0
+pkgdesc="A fast static site generator in a single binary with everything built in"
+url="https://github.com/getzola/zola"
+arch="all"
+license="BSD-3-Clause AND MIT"
+depends=""
+makedepends="cargo oniguruma-dev openssl-dev zlib-dev"
+subpackages="$pkgname-doc"
+source="$pkgname-$pkgver.tar.gz::https://github.com/getzola/zola/archive/v$pkgver.tar.gz
+ ring-use-generic-implementation-on-non-sse2-x86.patch
+ "
+
+# dependencies taken from Cargo.lock
+cargo_deps="
+addr2line 0.22.0
+adler 1.0.2
+ahash 0.7.8
+ahash 0.8.11
+aho-corasick 0.7.20
+aho-corasick 1.1.3
+aligned-vec 0.5.0
+ammonia 4.0.0
+android-tzdata 0.1.1
+android_system_properties 0.1.5
+anstream 0.6.14
+anstyle 1.0.7
+anstyle-parse 0.2.4
+anstyle-query 1.1.0
+anstyle-wincon 3.0.3
+any_ascii 0.1.7
+anyhow 1.0.86
+arbitrary 1.3.2
+arg_enum_proc_macro 0.3.4
+arrayvec 0.7.4
+assert-json-diff 2.0.2
+atty 0.2.14
+autocfg 1.3.0
+av1-grain 0.2.3
+avif-serialize 0.8.1
+backtrace 0.3.73
+base64 0.21.7
+base64 0.22.1
+base64-simd 0.7.0
+bincode 1.3.3
+bit_field 0.10.2
+bitflags 1.3.2
+bitflags 2.5.0
+bitstream-io 2.4.1
+bitvec 1.0.1
+block-buffer 0.10.4
+block-buffer 0.7.3
+block-padding 0.1.5
+bstr 1.9.1
+build_const 0.2.2
+built 0.7.3
+bumpalo 3.16.0
+byte-tools 0.3.1
+bytecheck 0.6.12
+bytecheck_derive 0.6.12
+bytecount 0.6.8
+bytemuck 1.16.0
+byteorder 1.5.0
+byteorder-lite 0.1.0
+bytes 0.4.12
+bytes 1.6.0
+cc 1.0.99
+cedarwood 0.4.6
+cfg-expr 0.15.8
+cfg-if 0.1.10
+cfg-if 1.0.0
+cfg_aliases 0.1.1
+chrono 0.4.38
+chrono-tz 0.9.0
+chrono-tz-build 0.3.0
+clap 3.2.25
+clap 4.5.7
+clap_builder 4.5.7
+clap_complete 4.5.5
+clap_derive 3.2.25
+clap_derive 4.5.5
+clap_lex 0.2.4
+clap_lex 0.7.1
+codemap 0.1.3
+color_quant 1.1.0
+colorchoice 1.0.1
+colored 2.1.0
+console 0.15.8
+const-str 0.3.2
+const-str-proc-macro 0.3.2
+core-foundation 0.9.4
+core-foundation-sys 0.8.6
+cpufeatures 0.2.12
+crc 1.8.1
+crc32fast 1.4.2
+crossbeam-channel 0.5.13
+crossbeam-deque 0.8.5
+crossbeam-epoch 0.9.18
+crossbeam-utils 0.8.20
+crunchy 0.2.2
+crypto-common 0.1.6
+cssparser 0.33.0
+cssparser-color 0.1.0
+cssparser-macros 0.6.1
+csv 1.3.0
+csv-core 0.1.11
+ctrlc 3.4.4
+dashmap 5.5.3
+data-encoding 2.6.0
+data-url 0.1.1
+deranged 0.3.11
+deunicode 1.6.0
+digest 0.10.7
+digest 0.8.1
+displaydoc 0.2.4
+doc-comment 0.3.3
+dtoa 1.0.9
+dtoa-short 0.3.5
+either 1.12.0
+elasticlunr-rs 3.0.2
+encode_unicode 0.3.6
+encoding 0.2.33
+encoding-index-japanese 1.20141219.5
+encoding-index-korean 1.20141219.5
+encoding-index-simpchinese 1.20141219.5
+encoding-index-singlebyte 1.20141219.5
+encoding-index-tradchinese 1.20141219.5
+encoding_index_tests 0.1.4
+encoding_rs 0.8.34
+env_logger 0.9.3
+equivalent 1.0.1
+errno 0.3.9
+exr 1.72.0
+fake-simd 0.1.2
+fastrand 2.1.0
+fdeflate 0.3.4
+file-id 0.2.1
+filetime 0.2.23
+flate2 1.0.30
+flume 0.11.0
+fnv 1.0.7
+foreign-types 0.3.2
+foreign-types-shared 0.1.1
+form_urlencoded 1.2.1
+fsevent-sys 4.1.0
+fuchsia-zircon 0.3.3
+fuchsia-zircon-sys 0.3.3
+funty 2.0.0
+futf 0.1.5
+futures-channel 0.3.30
+futures-core 0.3.30
+futures-io 0.3.30
+futures-sink 0.3.30
+futures-task 0.3.30
+futures-util 0.3.30
+fxhash 0.2.1
+generic-array 0.12.4
+generic-array 0.14.7
+getrandom 0.1.16
+getrandom 0.2.15
+gh-emoji 1.0.8
+gif 0.13.1
+gimli 0.29.0
+glob 0.3.1
+globset 0.4.14
+globwalk 0.9.1
+grass 0.13.3
+grass_compiler 0.13.3
+h2 0.3.26
+half 2.4.1
+hashbrown 0.12.3
+hashbrown 0.13.2
+hashbrown 0.14.5
+heck 0.4.1
+heck 0.5.0
+hermit-abi 0.1.19
+html5ever 0.27.0
+http 0.2.12
+http-body 0.4.6
+httparse 1.9.3
+httpdate 1.0.3
+humansize 2.1.3
+humantime 2.1.0
+hyper 0.14.29
+hyper-rustls 0.24.2
+hyper-tls 0.5.0
+iana-time-zone 0.1.60
+iana-time-zone-haiku 0.1.2
+icu_collections 1.5.0
+icu_locid 1.5.0
+icu_locid_transform 1.5.0
+icu_locid_transform_data 1.5.0
+icu_normalizer 1.5.0
+icu_normalizer_data 1.5.0
+icu_properties 1.5.0
+icu_properties_data 1.5.0
+icu_provider 1.5.0
+icu_provider_macros 1.5.0
+idna 1.0.0
+ignore 0.4.22
+image 0.25.1
+image-webp 0.1.2
+imgref 1.10.1
+indexmap 1.9.3
+indexmap 2.2.6
+inotify 0.9.6
+inotify-sys 0.1.5
+insta 1.39.0
+interpolate_name 0.2.4
+iovec 0.1.4
+ipnet 2.9.0
+is-docker 0.2.0
+is-wsl 0.4.0
+is_terminal_polyfill 1.70.0
+itertools 0.10.5
+itertools 0.12.1
+itoa 1.0.11
+jieba-rs 0.6.8
+jobserver 0.1.31
+jpeg-decoder 0.3.1
+js-sys 0.3.69
+kamadak-exif 0.5.5
+kernel32-sys 0.2.2
+kqueue 1.0.8
+kqueue-sys 1.0.4
+lasso 0.7.2
+lazy_static 1.4.0
+lazycell 1.3.0
+lebe 0.5.2
+lexical-sort 0.3.1
+libc 0.2.155
+libfuzzer-sys 0.4.7
+libm 0.2.8
+libwebp-sys 0.9.5
+lightningcss 1.0.0-alpha.57
+lindera 0.14.0
+lindera-cc-cedict-builder 0.13.5
+lindera-core 0.13.5
+lindera-decompress 0.13.5
+lindera-dictionary 0.13.5
+lindera-ipadic 0.13.5
+lindera-ipadic-builder 0.13.5
+lindera-ko-dic-builder 0.13.5
+lindera-unidic-builder 0.13.5
+line-wrap 0.2.0
+linked-hash-map 0.5.6
+linux-raw-sys 0.4.14
+litemap 0.7.3
+lock_api 0.4.12
+log 0.4.21
+loop9 0.1.5
+lzma-rs 0.2.0
+mac 0.1.1
+maplit 1.0.2
+markup5ever 0.12.1
+matches 0.1.10
+maybe-rayon 0.1.1
+memchr 2.7.4
+mime 0.3.17
+mime_guess 2.0.4
+minidom 0.12.0
+minify-html 0.15.0
+minify-html-common 0.0.2
+minify-js 0.5.6
+minimal-lexical 0.2.1
+miniz_oxide 0.7.3
+mio 0.6.23
+mio 0.8.11
+mio-extras 2.0.6
+miow 0.2.2
+mockito 0.31.1
+mutate_once 0.1.1
+native-tls 0.2.12
+net2 0.2.39
+new_debug_unreachable 1.0.6
+nix 0.28.0
+nom 7.1.3
+nom-bibtex 0.5.0
+nom-tracable 0.9.1
+nom-tracable-macros 0.9.1
+nom_locate 4.2.0
+noop_proc_macro 0.3.0
+notify 6.1.1
+notify-debouncer-full 0.3.1
+num-bigint 0.4.5
+num-conv 0.1.0
+num-derive 0.4.2
+num-format 0.4.4
+num-integer 0.1.46
+num-rational 0.4.2
+num-traits 0.2.19
+num_threads 0.1.7
+object 0.36.0
+once_cell 1.19.0
+onig 6.4.0
+onig_sys 69.8.1
+opaque-debug 0.2.3
+open 5.1.4
+openssl 0.10.64
+openssl-macros 0.1.1
+openssl-probe 0.1.5
+openssl-sys 0.9.102
+os_str_bytes 6.6.1
+outref 0.1.0
+parcel_selectors 0.26.5
+parcel_sourcemap 2.1.1
+parking_lot 0.12.3
+parking_lot_core 0.9.10
+parse-js 0.17.0
+parse-zoneinfo 0.3.1
+paste 1.0.15
+path-slash 0.2.1
+pathdiff 0.2.1
+percent-encoding 2.3.1
+pest 2.7.10
+pest_derive 2.7.10
+pest_generator 2.7.10
+pest_meta 2.7.10
+phf 0.10.1
+phf 0.11.2
+phf_codegen 0.10.0
+phf_codegen 0.11.2
+phf_generator 0.10.0
+phf_generator 0.11.2
+phf_macros 0.11.2
+phf_shared 0.10.0
+phf_shared 0.11.2
+pin-project-lite 0.2.14
+pin-utils 0.1.0
+pkg-config 0.3.30
+plist 1.6.1
+png 0.17.13
+powerfmt 0.2.0
+ppv-lite86 0.2.17
+precomputed-hash 0.1.1
+proc-macro-error 1.0.4
+proc-macro-error-attr 1.0.4
+proc-macro2 1.0.85
+profiling 1.0.15
+profiling-procmacros 1.0.15
+ptr_meta 0.1.4
+ptr_meta_derive 0.1.4
+pulldown-cmark 0.11.0
+pulldown-cmark-escape 0.11.0
+pure-rust-locales 0.8.1
+qoi 0.4.1
+quick-error 2.0.1
+quick-xml 0.17.2
+quick-xml 0.31.0
+quickxml_to_serde 0.6.0
+quote 1.0.36
+radium 0.7.0
+rand 0.7.3
+rand 0.8.5
+rand_chacha 0.2.2
+rand_chacha 0.3.1
+rand_core 0.5.1
+rand_core 0.6.4
+rand_hc 0.2.0
+rav1e 0.7.1
+ravif 0.11.7
+rayon 1.10.0
+rayon-core 1.12.1
+redox_syscall 0.4.1
+redox_syscall 0.5.2
+regex 1.10.5
+regex-automata 0.4.7
+regex-syntax 0.8.4
+relative-path 1.9.3
+rend 0.4.2
+reqwest 0.11.27
+rgb 0.8.37
+ring 0.17.8
+rkyv 0.7.44
+rkyv_derive 0.7.44
+roxmltree 0.20.0
+rust-stemmers 1.2.0
+rustc-demangle 0.1.24
+rustc-hash 1.1.0
+rustix 0.38.34
+rustls 0.21.12
+rustls-pemfile 1.0.4
+rustls-webpki 0.101.7
+ryu 1.0.18
+same-file 1.0.6
+schannel 0.1.23
+scopeguard 1.2.0
+sct 0.7.1
+seahash 4.1.0
+security-framework 2.11.0
+security-framework-sys 2.11.0
+serde 1.0.203
+serde_derive 1.0.203
+serde_json 1.0.117
+serde_spanned 0.6.6
+serde_urlencoded 0.7.1
+serde_yaml 0.9.34+deprecated
+sha-1 0.8.2
+sha2 0.10.8
+simd-abstraction 0.7.1
+simd-adler32 0.3.7
+simd_helpers 0.1.0
+simdutf8 0.1.4
+similar 2.5.0
+siphasher 0.3.11
+slab 0.4.9
+slug 0.1.5
+smallvec 1.13.2
+socket2 0.5.7
+spin 0.9.8
+stable_deref_trait 1.2.0
+string_cache 0.8.7
+string_cache_codegen 0.5.2
+strsim 0.10.0
+strsim 0.11.1
+svg_metadata 0.5.1
+syn 1.0.109
+syn 2.0.66
+sync_wrapper 0.1.2
+synstructure 0.13.1
+syntect 5.2.0
+system-configuration 0.5.1
+system-configuration-sys 0.5.0
+system-deps 6.2.2
+tap 1.0.1
+tar 0.4.41
+target-lexicon 0.12.14
+tempfile 3.10.1
+tendril 0.4.3
+tera 1.20.0
+termcolor 1.4.1
+test-case 3.3.1
+test-case-core 3.3.1
+test-case-macros 3.3.1
+textwrap 0.16.1
+thiserror 1.0.61
+thiserror-impl 1.0.61
+tiff 0.9.1
+time 0.3.36
+time-core 0.1.2
+time-macros 0.2.18
+tinystr 0.7.6
+tinyvec 1.6.0
+tinyvec_macros 0.1.1
+tokio 1.38.0
+tokio-native-tls 0.3.1
+tokio-rustls 0.24.1
+tokio-util 0.7.11
+toml 0.5.11
+toml 0.8.14
+toml_datetime 0.6.6
+toml_edit 0.22.14
+tower-service 0.3.2
+tracing 0.1.40
+tracing-core 0.1.32
+try-lock 0.2.5
+typenum 1.17.0
+ucd-trie 0.1.6
+unic-char-property 0.9.0
+unic-char-range 0.9.0
+unic-common 0.9.0
+unic-langid 0.9.5
+unic-langid-impl 0.9.5
+unic-segment 0.9.0
+unic-ucd-segment 0.9.0
+unic-ucd-version 0.9.0
+unicase 2.7.0
+unicode-ident 1.0.12
+unicode-segmentation 1.11.0
+unsafe-libyaml 0.2.11
+untrusted 0.9.0
+url 2.5.1
+utf-8 0.7.6
+utf16_iter 1.0.5
+utf8_iter 1.0.4
+utf8parse 0.2.2
+uuid 1.8.0
+v_frame 0.3.8
+vcpkg 0.2.15
+version-compare 0.2.0
+version_check 0.9.4
+vlq 0.5.1
+walkdir 2.5.0
+want 0.3.1
+wasi 0.11.0+wasi-snapshot-preview1
+wasi 0.9.0+wasi-snapshot-preview1
+wasm-bindgen 0.2.92
+wasm-bindgen-backend 0.2.92
+wasm-bindgen-futures 0.4.42
+wasm-bindgen-macro 0.2.92
+wasm-bindgen-macro-support 0.2.92
+wasm-bindgen-shared 0.2.92
+web-sys 0.3.69
+webp 0.3.0
+webpki-roots 0.25.4
+weezl 0.1.8
+winapi 0.2.8
+winapi 0.3.9
+winapi-build 0.1.1
+winapi-i686-pc-windows-gnu 0.4.0
+winapi-util 0.1.8
+winapi-x86_64-pc-windows-gnu 0.4.0
+windows-core 0.52.0
+windows-sys 0.48.0
+windows-sys 0.52.0
+windows-targets 0.48.5
+windows-targets 0.52.5
+windows_aarch64_gnullvm 0.48.5
+windows_aarch64_gnullvm 0.52.5
+windows_aarch64_msvc 0.48.5
+windows_aarch64_msvc 0.52.5
+windows_i686_gnu 0.48.5
+windows_i686_gnu 0.52.5
+windows_i686_gnullvm 0.52.5
+windows_i686_msvc 0.48.5
+windows_i686_msvc 0.52.5
+windows_x86_64_gnu 0.48.5
+windows_x86_64_gnu 0.52.5
+windows_x86_64_gnullvm 0.48.5
+windows_x86_64_gnullvm 0.52.5
+windows_x86_64_msvc 0.48.5
+windows_x86_64_msvc 0.52.5
+winnow 0.6.13
+winreg 0.50.0
+winres 0.1.12
+write16 1.0.0
+writeable 0.5.5
+ws 0.9.2
+ws2_32-sys 0.2.1
+wyz 0.5.1
+xattr 1.3.1
+yada 0.5.1
+yaml-rust 0.4.5
+yoke 0.7.4
+yoke-derive 0.7.4
+zerocopy 0.7.34
+zerocopy-derive 0.7.34
+zerofrom 0.1.4
+zerofrom-derive 0.1.4
+zerovec 0.10.2
+zerovec-derive 0.10.2
+zune-core 0.4.12
+zune-inflate 0.2.54
+zune-jpeg 0.4.11
+"
+
+source="$source $(echo $cargo_deps | sed -E 's#([[:graph:]]+) ([[:graph:]]+)#\1-\2.tar.gz::https://crates.io/api/v1/crates/\1/\2/download#g')"
+
+prepare() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ export CARGO_VENDOR="$CARGO_HOME/adelie"
+
+ (builddir=$srcdir; default_prepare)
+
+ mkdir -p "$CARGO_VENDOR"
+ cat <<- EOF > "$CARGO_HOME/config.toml"
+ [source.adelie]
+ directory = "${CARGO_VENDOR}"
+
+ [source.crates-io]
+ replace-with = "adelie"
+ local-registry = "/nonexistant"
+
+ [profile.release]
+ lto = false # Adélie bug #1256
+ EOF
+
+ for _dep in $(echo $cargo_deps | sed -E 's#([[:graph:]]+) ([[:graph:]]+)#\1-\2#g'); do
+ ln -s "$srcdir/$_dep" "$CARGO_VENDOR/$_dep"
+ _sum=$(sha256sum "$srcdir/$_dep.tar.gz" | cut -d' ' -f1)
+ cat <<- EOF > "$CARGO_VENDOR/$_dep/.cargo-checksum.json"
+ {
+ "package":"$_sum",
+ "files":{}
+ }
+ EOF
+ done
+}
+
+build() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ export PKG_CONFIG_ALL_DYNAMIC=1
+ export RUSTONIG_SYSTEM_LIBONIG=1
+ cargo build -j $JOBS --release
+}
+
+check() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ cargo test -j $JOBS --release
+}
+
+package() {
+ export CARGO_HOME="$srcdir/cargo-home"
+ cargo install --no-track --path . --root="$pkgdir"/usr
+}
+
+doc() {
+ default_doc
+ mkdir -p "$subpkgdir"/usr/share/doc
+ cp -r "$builddir"/docs \
+ "$subpkgdir"/usr/share/doc/$pkgname
+}
+
+sha512sums="0d3cc7733e01e4fb5ca73969d04484c4525e9d6175ff555fbf521d6793071dc6797de0c519b1a06704e88291ed0e849530ef0786630370f806113b791b692cda zola-0.19.1.tar.gz
+79b474e02e0ecec86615e371879c6386cded892a988b3d94beb6bd471ea833f5832a26404c1d34efc7c0227c043b60d37304ab1c5f9a2c2fe4a1e704cc1fadfa ring-use-generic-implementation-on-non-sse2-x86.patch
+b334f51bd369348b4446805b4f624ec9b4cc8eefcc53ceb57b523ff55bf018d1dfe23259daf48d1878170ad4fcb44181d4738456eb5e35ede6932ff29686268e addr2line-0.22.0.tar.gz
+7ab190d31890fc05b0b55d8e2c6527a505e06793d5496be0b3831e0513412f9ba97f8148f6f68ed0770fa9cd980a5092d885e058becf1d5506b7c74b82674aa1 adler-1.0.2.tar.gz
+63677b2001d633ecabb36c08bd92e00b5fa71f24aed1c4601d12d846ea06aeaf093c37cfe1f6642147800caa6c749e9a202aa21f9ab4799efa379ad0d952a2ee ahash-0.7.8.tar.gz
+47d211b2422de0b381dfe32229faa346406eb7a22dff867dc04c22389609a8671ce3218e662000c49891a06c259d82e0ff4413740f007729d80e097a6c3f0d9d ahash-0.8.11.tar.gz
+ad31f3d1b3fe41e593d4ca7e721bbad62936f2e6a17fd1e0997353edb6fc906d1bef2b79f0ac7c7676abe637bbabb23ff22059947be379a2441011f8178983c5 aho-corasick-0.7.20.tar.gz
+ba422a54688c4678fcf16e34fdf3ed06c333e6e3fc8b75af9272a215add494d43ebaef319021134b61327fd5d3572aec0dc655b714ffb3bc71ba3c265c9ebb69 aho-corasick-1.1.3.tar.gz
+aa091f85a361f512e18453a55c847825f43ae672e5b11e47cf9b8b413df9fc37732653d89c076309ec567a6136274aeac5ae1339fe441ebb0e98339dcec524f9 aligned-vec-0.5.0.tar.gz
+84f523eaf7db9d98e44c7d1198fae40e59e838dcc9fc256ca7ef3f3d243a767755f318e516411b4feba4ecb26e30e77d501e9163f996b4d113804e5f2c41a65e ammonia-4.0.0.tar.gz
+4294024c21ddd0090c42c8eedf708d40d917f55ad5a4cb7aa3e64cfb6551b6df60f2e36bc08620c1d2fc8c7ba7207411518ee5c8635f60ed8ad9efdd458a2077 android-tzdata-0.1.1.tar.gz
+b09f51339f9772c0e2e4241b36cf51573c6b96b19ffc1fbbc94b1c1d1d2fdfe8eac3134af54174a675ab05d18ef4f6bcb2c7fcc20114bbeef6e17e3692202191 android_system_properties-0.1.5.tar.gz
+65ece20958e3fb1ed4a5ff1d45f5bfdcb942c64994a3d14eefb0dfd5b04f433f6e1b06ebff240c67ed8ff7cc01d93ca0acf8c8ea29cb41309c6c882e7c192b34 anstream-0.6.14.tar.gz
+e20d49f7d148e03f7b127be7802e0b6b7a2b05720614d46c2ade5e440ce322b44ddd3a9239b897886faa03ed1cb30f947ee27d3811fa83dffba10b3975eba7ed anstyle-1.0.7.tar.gz
+c1dac475df77d090a4d2041ba40ff418abe66e93e4ddda54653bf024fb4995e431166684343509a2337bc813fe06f362d3df8a1d7d05d177cec1a488bcb9942a anstyle-parse-0.2.4.tar.gz
+321ddfa7b090142116c96bc8c70d81cec3e816922249ae0f07389e2d1b62c8b40636675ccfdfd23d52e29c162ae7d929637dfc7d697dafb79e596d04eb8cd90b anstyle-query-1.1.0.tar.gz
+55217c65fc9ec674e5b4dd70716a221bd108b507dce9baaeb542f0e0a47027ec7fe61f9cd3cccfda43e4a4cd785b42f13400daf89884c32d3768e48bdff2d179 anstyle-wincon-3.0.3.tar.gz
+3fe4e0c10c32983c3c725a5930f0bf7c752942c6dd0818b93bae9808e72d5a87725733a85b11cabb8fea630f524fd4b7a13160112f8bb7cc24515bcc384d6dbc any_ascii-0.1.7.tar.gz
+3853da32a2c53d73969bb29a1e622f3a6d5832d8888dc6bc8eedb76394b392f983aa3fcb1f542933e238841486106f0f38e9a2400c12c7699baba0ebe1d8193a anyhow-1.0.86.tar.gz
+faab26c44f25d2c7298add2a657e4010d9fe24b3a61e2270bc6feac05cf2a82895fe225d2fb1c6b63e6c7da54e061955503f39322b96dbdbc4916601bd5e5ccf arbitrary-1.3.2.tar.gz
+d9d48c48eea230cb0d246857e0ba60316a76c0e214ba8fabdd42573559ff574b6867bab67880f1b8b7107ae9980fc026410020c3d3265309950c671b4faef582 arg_enum_proc_macro-0.3.4.tar.gz
+91e8f70330c515c966d78ae235e890594f9607381ac738a2c3586b53f01411e98d1687494f39ccc365948ae60497df3dfb2be18e26ab7e69bc0966b6c250e1ac arrayvec-0.7.4.tar.gz
+73aaf6411a552b24ab69d2f13e1c5880a96f84cb1b62dcf67a15f4889f80947c085826e4ed2fffd5cc28351842538d0de91ede45397d349099602c4719f559e8 assert-json-diff-2.0.2.tar.gz
+d7b6c4b9a0f898d91ddbc41a5ee45bbf45d1d269508c8cc87ee3e3990500e41e0ec387afb1f3bc7db55bedac396dd86c6509f4bf9e5148d809c3802edcc5e1d9 atty-0.2.14.tar.gz
+a5570b955d57a7183ba148b335837dc5af24b202e80681027536d33fe2822509ba644fc70c29f018c893285ced2bf6774f44ca6c59f7c7e2226d5349cf7c3635 autocfg-1.3.0.tar.gz
+61c0dfe3e6e26210ac9c44616111f4200cdd473c68bb2424de6654637cb09a7089e958076efa69b35b351e5ee0fc7d45e580ce7ab51d5953b924cf208439ddb6 av1-grain-0.2.3.tar.gz
+baf7c88c5de8fae4d6066baa43684ad7bab684baec7125f850c4f668ee232eedbc0a9c4d802fcba23be3aa735a6dcafb8e6954e6f753d1b3b2482f80cf990d2e avif-serialize-0.8.1.tar.gz
+dacedfd32cb91fe408e4f395441baf09c0a4b3bc4ba8f79d088359455cc903c93d24969567c7c5b2feb806433ffbb63a526d73f53caa4bee9c51961b61f831d9 backtrace-0.3.73.tar.gz
+c6986d88dd9aa081d914f35b4174be4ba874848657ac4b5e63b9b45af765d973289c548ccb5a01584edfc0d8d79ff5be25b51365295d6e7a311bd7f0ae3c0cb9 base64-0.21.7.tar.gz
+91cf2e4e7fc8815f9b8a86a7fa722a20eee3dc1dd57111b29e420de87ce7836bcdb1db01d3cafb9a977710ef63e7cc41b7772762323e68e0e832156858aace20 base64-0.22.1.tar.gz
+bc612e61f649515b451cff062e94142650083fa148307660125ddee6c48b7775bf704a659d693d8b36c1a7b5b5f474bcda5f841b6d643896c48755c5f76d25db base64-simd-0.7.0.tar.gz
+49e39d71214dbb623a18e3852f6f2f2a5c3f951b64107d66c8adaa95a442a3283fba978bca41b126c9879b12833b945f478d2c77d35482b3577fc1a894e8e5f3 bincode-1.3.3.tar.gz
+99bacb002aa9ef89cef1403429807042135898614df85e59475772b90d2d21972ddc77ef9b129ca931355ff11bfb3de66b55b828bbf792f76300fc5cfef066a8 bit_field-0.10.2.tar.gz
+3c698f757b5cc62f815f9a1cce365c3d2dd88e4db71f331dff8bba86c2865f755b81cb4c9bfc59bd86b7643b0943f9e09a7c4f8ad75eb2ab0e714803d0129f62 bitflags-1.3.2.tar.gz
+75d7a89e53e5e7582591932bc430e6a1db7ed0f914ded6dbcf957125be52975598df7fee14ef816f66544432ef0505f0a081f3794d17138ec429e283fe14fcf9 bitflags-2.5.0.tar.gz
+86f0fbc327c4d0ed142dd5b0f62a8e2ae23a5060520c700fe1356d0416f8883328a7d029c9d6093336774c172aba67b372b57219a896831c79198c5f2fb5c7cd bitstream-io-2.4.1.tar.gz
+83d643c5aca020ebbe9094b5aaba6a796e7c3c509228a4348444e57a06bc3a5dd042eed57a2254d91661e73bdab2bc0d1bd02be376906acc6b6d75b5354a8d8e bitvec-1.0.1.tar.gz
+b7d436d8e627e16e6ddc300ee8f706a6cef28ff6f09eff848eedee46f84bdcd03601303c92ab8996042e55922866a59259948177c0a4496eed723523e77f6fdb block-buffer-0.10.4.tar.gz
+74c8b89777a006bd72511b32df94f8bd78e2b53c30d85d39ea3c52acf199c357140fb6181f7f7ab5e30dd80d37181582cad740c95b89328a7a4b0f84f77ad6bf block-buffer-0.7.3.tar.gz
+acf5369cdae38b6b1a5c1561a9df18b8a39c8fd434fa50c49a8f73d2654a835269b7b22876354c903514c49c77aa860c68cd84d3c1efcb36bdfa8b01af300a9a block-padding-0.1.5.tar.gz
+67e9f76719310de60f46adf3c39768b4dc078d4c32dc6bdcec1a94cd9f630c5238e427ed84cd6ec25a44f54e84adeb795a0e92060a5372d9fb9ad9f0914e3172 bstr-1.9.1.tar.gz
+47a9949b7196791af2507d6e3a28843da67621e5b56177d3b13477e070487cdd1059207588a55bf1a393df9118e71e3024b439a3c6281b6c12b5bdee66b237a6 build_const-0.2.2.tar.gz
+1833cd69a22d495643fbc04319cca6dc1909c980eca67bfb3aff08af50166dd88aa1210a331353469e3b614613f590e10aea63d7f196e96a3da355b1988f5325 built-0.7.3.tar.gz
+a51b75c36f6794db444cab20eeb24f42a319080ecb486a56d254d6f873f3d188b5ccba11db30c068bd0c52c4322d4a3f5f5195c81c94b0bc04387030418835b1 bumpalo-3.16.0.tar.gz
+18e0f248a1e9780706e3a184d63558f03f30002646abc6d46ef49db9d5f6768af3d24d210b688aa4ad33d41248429e4df46bc3926f27851f90c92d260e5c4baa byte-tools-0.3.1.tar.gz
+49a85f9bbfe8bccceffcd94e3eac1f4407d93159358428ea07652714e06e97fbcb41f22f72d9d10318bc9a019be8afc99727764162f18e8de01ea4069f44dda6 bytecheck-0.6.12.tar.gz
+57f8480ddb76d8620095962acd203231fb7938c0caf9c216d89466f22464a6970f13adca5f4d5b10c9e1ec99d6e0b260ba7586c2bb895fad0380f8f9ac9a4fc8 bytecheck_derive-0.6.12.tar.gz
+5984dbb71fe22371db00ca56675f409cefcf7c093f406ce1abc330a0b1535f30a43a520fb64d66c04a181a4f05d956300e35f77b43aceeb161eaf8a2c64df614 bytecount-0.6.8.tar.gz
+09677bedb7c480a8abd345cdb710765ddc332fe675e64591cca05d73adc281a29475feff954e4c5eaa9fc55f2508ac44b44007c34593c71b255d6c4b4d92781a bytemuck-1.16.0.tar.gz
+96caf981177f6ded9f27f025922cb94eb0cd9de5303bd91680099912d922092e77b7361efa70011e84f1595e443193e4f1b354443b9980c123f6ae573b236f7f byteorder-1.5.0.tar.gz
+d38837acc5926fe98ddf4336a603412f678b5f46d53a7eb926a8885d28aa24d51e3968f0eb2e6d2d7711e5ba30b8006a27076ea596b0699e93ad3d9e05483c4c byteorder-lite-0.1.0.tar.gz
+5f603532ea2f04cbc53044422feed1667bf0486af398c9c8e2ce7b4601b37e1c47223201970fb0d17fed77fef7e89961e0ac05a30e6cc9bf13462d98bc587250 bytes-0.4.12.tar.gz
+6507bc4274204d0a19b6a95c3284c52245c71cbf5f2dfb5cd372193d989e49869ec557c0c4e449e96ed4e3028c90606dfb0dcdc1d72bb234a36bc5f344c0a7a8 bytes-1.6.0.tar.gz
+2f6c9a0869b3b636b011390efade0085ed5fe616ecb33ff586c948779b9c9bea9169cb1c31441b0aeb63dbaa35cdb76b6e67ace38d561e2c150e06853a2b1757 cc-1.0.99.tar.gz
+9c05863b5f35bd8652ae08d432f9abca8ce7fae5784496e1e46081bfea4efbd1b045283c4eb20062b76294f89f1970b337730111d638e65d731b16daba6e8d2e cedarwood-0.4.6.tar.gz
+1077d113dfe080e0e78e25c40f32c9f14988d2dbb76bb783ed3e8ce13c58e5dc0dd549362d2f197b69cfbffcfa3ebed385a0247f5928dcff8be7d0b055be1041 cfg-expr-0.15.8.tar.gz
+9d22616bfb4a75770a828a0a3cddac6787297a5fdc53eb17e25811cc94de717f2de8bd66d53c5d65ba1c83d8892aefee5ae758cf56a1ef0a0c3120f70b244339 cfg-if-0.1.10.tar.gz
+0fb16a8882fd30e86b62c5143b1cb18ab564e84e75bd1f28fd12f24ffdc4a42e0d2e012a99abb606c12efe3c11061ff5bf8e24ab053e550ae083f7d90f6576ff cfg-if-1.0.0.tar.gz
+238828445c5b48ca41ff88825af0a1ad30494e423bb6f89b6d5e4d26042afaa1ceb0e32041f7cddd79c3e15c6c82a1ddb9469c4b63a1ac52d4bcc1174900f880 cfg_aliases-0.1.1.tar.gz
+858e47e3facebd5383e71898f26b27d92fe4a69027e2cc47da2af59975ead7767355e0b699f4228eabe76a3eff8b2519c7cecf8b60dc3fc60fbf9b28e2f3d4d9 chrono-0.4.38.tar.gz
+a0c281985ec81d722583e412d5d9c4235e550ce01b9bf36cb9d6a2a37370d0c0a194a1818e6779fde1bd0107c06dceca624cdbca2aa094821b80ed91f53fb5c6 chrono-tz-0.9.0.tar.gz
+4aab68db4cfe816c8de21165858b969cdf8ede3c6f19be5150ebcc3237e40d052716650bb0cded7867e8e6d78e5fcf37e274b961108e3a025dc312078edcb0ba chrono-tz-build-0.3.0.tar.gz
+557c8932175d7ecd077b32b68904924e52dd46d04fd04ba36b3a9dfd7ab1dbe8c2128fecfd75d0388b21fca4aee55a941794181cc2910a4d4eb3c54e9c7e73ea clap-3.2.25.tar.gz
+f126132811696d5fcac0242264121a08c1f7c59b4830d73b6b95b8c5b31a2c11928b0d7026151a5d1a0108aa912d7c6157652193ea1ef5a980669bdf388d5bfb clap-4.5.7.tar.gz
+df0ef9adabb61538619d94ead0768fb8291cdef48c0cf47b323aa366fa2564d89ddf65cd0ef0b7162ef5e590be26a357cc775ae5278abf8048c05a5fbf58b5cc clap_builder-4.5.7.tar.gz
+b127163fa81c3934436481805179ae198b932ec3fd6bf0453b75c0d3672a7c3aa5d022411e88c7284de843c944da633aa566078714a495233eea9b992de4a609 clap_complete-4.5.5.tar.gz
+c98098bfedb8b681d72eaedb946d9867fd068d9be31137fe1fb5d821cd68afec48e7d2963adb2099aa760c702d5b75fb0ed45fc62b83d7f26edc8cecc03ea5d3 clap_derive-3.2.25.tar.gz
+90c2110445c832d81cf66287ebe32155c6bd72a0a75cdbceef4e411d4b9d83268af244adab6755379b6970b5d40b39a9f89df9ef8786429fe73d95a3eee1c134 clap_derive-4.5.5.tar.gz
+6c05e5fd850befd45be9005af7252385f2304aa28a107413bbe329d97aea835f7acfd0bd169c99f69f466ab93d6e1c35d73a4e48343457a06fe2d6be5bedde0f clap_lex-0.2.4.tar.gz
+4cdede5eb9fa527567e9f3f94fd8fe7e1022d9e9236e78d30b3068befbaadedd778b5464f800e74bf187c44af9df582365f4d41a0113f8ab0fe9abc936171fc2 clap_lex-0.7.1.tar.gz
+58cf60c2161f4c208bc98e8377104be4ca4b2827444a8c1310f2d60cb13775d7158a6d30a88321b308938d635ae92c5a41c5d4fb73a3d86499c29ddf6f86eebb codemap-0.1.3.tar.gz
+690c928bda4b7b57425f38ea68ac89cde2473b7a91b7e62c04a8f2c5a0fa3505e26b065d48b7ad0a8bb491f92f600f896fefdad3ce0e86e43cbf4f9a89e94201 color_quant-1.1.0.tar.gz
+3d216ba46cfcca5c52a56884ed09fe7d6d350ccb44144a60c75006582f7f9a28df21d44375a8cb304c721b9de615875675b3a03c485eb209b2a12d745fa609cd colorchoice-1.0.1.tar.gz
+fa70f18fb29f6870a727d8243808c96e9497f8302f5f2b1748f9d9e396031e9c53a025b8edc9c8c9a0f8cfca12e5da73250a71e382b3074e9415b85bc004769e colored-2.1.0.tar.gz
+b05e49ed145785e29631d481885788f0cc5574d4d7c4d90280dfedaee7f8c1515072c9c4cfe6bd2e017230cd228157222af7e7d41a9fce697cd1888095df4de9 console-0.15.8.tar.gz
+8fa8bd982f13c304d4e04eeece975045657706a3cafed8655a4a4b6e3996304c63be6d88f625d7218246c1e30b5eb228449dcd5ff81d5eb2e106f0e5214bcb3a const-str-0.3.2.tar.gz
+5ec41cd39f82276aeb831d498908bc472b10a1f198e526a0242bc8f8d9525897654d444801c2650ebec5ef309f9fb2d3d249b40c1bd71ff607dfd1fb6f241862 const-str-proc-macro-0.3.2.tar.gz
+82d0878a1b9e3d56b3666fb5a78f92c6f7806d01665c242c06a640bd6b1fd36260211e92dc05e1a16d1430622bfdd650aabb0b5bd8e5592f74abdcf412448e33 core-foundation-0.9.4.tar.gz
+24a8958cb16b081862a9000affb0147b8b3be1a664b834c3dbddbff03e709de3f4060ff4800e5a35453f4392ccf33168e8b864be71b17be38cb264a39b915100 core-foundation-sys-0.8.6.tar.gz
+52742595702fc3371d4126fb355f3d7a6da514a94e43170f1db041cc6c560027f92115eab7846131dba1018ca5c72003ae36f945c1de88d57a0e7f66331623c6 cpufeatures-0.2.12.tar.gz
+db0b3d0ca197cb2a2049720b753061f1532d1ba2c86c7befce36a18cb4e8008b061e39e26960b4d9dcf1e7ea55348f55c441da5d17cd0a424402a8489d52ed1a crc-1.8.1.tar.gz
+c7608d33022062e217d3576f536ffbd51479855a5e5874529c71db2bf6a937ce04d814c39cf777309c38445393bf43cb9996161947e28738abd432f11beb7266 crc32fast-1.4.2.tar.gz
+0f31223a7099f84e39e6b76b19cf26736e0c3907fffc2ed3eb0012c7984b1993570bf6d155eba5bfb82897ef0e4fc93b89096071410bbac256ca6be9a9568ff8 crossbeam-channel-0.5.13.tar.gz
+0f0c9745763ab156136227cf1415de514952a3f8282ffe413cc249f9f4b345b029940e6a6c87b3be8331a7c783655a35b89c7a2547360ea5ae10aa64ba7ae864 crossbeam-deque-0.8.5.tar.gz
+0a8a199b9d77f4e28e91fe0a0cbff7e0dec58cac283631fd972477fa912d2f6ddfddaed2c695e4978b01cb5440b702822af6333e7c3dfbcb9a2c2086999516b2 crossbeam-epoch-0.9.18.tar.gz
+7175eadf9fa7c526fa11ff87e40ff203f0e7a4bcec15cb972f924f3c7ff7cc20b6e2e8dbbc1ede142a0207cd2baa4f446deb25d825d28a54cbd25c263701bfaa crossbeam-utils-0.8.20.tar.gz
+36dc0aebc41a3aac5f1b178a7e61b65bcd9bb5c8539b2024f79428200f7c62daa7098af55c6ab0765febd2f8969bd6c0ac8096f73cdc0958e5c4e4eb6a4f7025 crunchy-0.2.2.tar.gz
+471dbc43f517089d2cfe0868e29510c6ca579875b3bb5d013c70796db969b609b6c4bb35c9a07b9a2917012dc5708b717d48e317a20038adbe7e7039bf3ada6f crypto-common-0.1.6.tar.gz
+a84048742745953365ae57c9189da7885d58d58ae4f9682a4be61a9d39285b586cb421c3a53989143052629969c96bac155fb04a4f20af97967756bc3150ddee cssparser-0.33.0.tar.gz
+afc79c4028ab81864cb36c752902f36839c97a043f31f0ba3eaa6d81509dbdaa515c9433a0aa81122388975cc9a8f8930f6b0282ed5f428261f7e04637d546bf cssparser-color-0.1.0.tar.gz
+21d2f8bcaad0a8fff865b23bb2b59dcc5165f8861c4b9d7d70e9f302b58e2cc5ef8555bcab97889bfe81889a2b27863c755494baa64a52c65cd74687fe58b124 cssparser-macros-0.6.1.tar.gz
+1b9e870c433e4d37e61cd604d2712c59ccd392cab55b8c88596a7094245072dcae02ecc80d3ee7cdaaa083ec2c2865b71712330c55e93715917a86106a2230ed csv-1.3.0.tar.gz
+0445c8a4d4d0f90f03e5d6507c26454aaeac0b355fb39d19e1676a7cb27b4372db3541367ce838d38151862b7bfbf19750cb550e24e74ab5e07ae9bb4edeedee csv-core-0.1.11.tar.gz
+c09c5bb87e4116e4f2604023d9a94afb9985678a4d02aac17baf5b5d13d0ac7321e07dd7b20ed620af9670926acdb6b78be37a56c8be171c21975d34ebf0196c ctrlc-3.4.4.tar.gz
+15079a921d768224defebdf8d5339257c9e94a46d115b37ddfca8eb83718b2448555a8982bcf0381a915d292aff9d271a89d3398d2ae2f396dd581cc6883963a dashmap-5.5.3.tar.gz
+a685c7bbd251a5738b27ac3ac8121a0db049221510c99e0ada6f245ed7499d04ec29d725ad01c688ad283e3d2d5aae0751685c804f6d95cae84e63a160d04c9c data-encoding-2.6.0.tar.gz
+d8b149626dfc6506a776780012240db75e07ea8c2cf671995cc0278f1f5961d6c70145a94adf200d847bbf91e9c35165bbc7fdb64e73e049d3e95534846fa8e3 data-url-0.1.1.tar.gz
+48485666d3e50eb7976e91bed36bddbaea80fac4ac664723130069bd7d17893b6d1a2b82a4c3dd61677162e4305ba5ea8aec7bc2793d1b8b92dd1666c204fc43 deranged-0.3.11.tar.gz
+39e5de0d1ed93bf3fcd37e87a04ac3b23d3a50d28b37b0962b30f9461753b3c1e3639c9760101bbaf1d4269c7eaa8568764b481d3cac6faa6b9580f51d11144c deunicode-1.6.0.tar.gz
+0dd8c012468ab9011b89413ea4d3647d95b1f683b020a0e6274c95ed5148638b56fef19cd9044c837ad53715b582b88eed277fe96e917c27c5d7abdbf7c3794c digest-0.10.7.tar.gz
+186c3ddc01fefff6a134ea0be633a9fe8067b8db34f31e9991069e7a9b82ed595a1105283a87e3021af2337ad332faf1b85a6bb513a4482df7d24e3e7a5ba055 digest-0.8.1.tar.gz
+a1de2c200584bfac640f8b84b5103d8687919cd29f59a14898e98d480f476a8e4dc06e3b929af479d536cd02186e2a9be72e6414338bc117b97bc0d160029592 displaydoc-0.2.4.tar.gz
+e98ff9646a3612bd41bb6f278e7b6e9a0c58747f8b82524da814cf51b7f06c76ad4d65b502ac5740e818744abb295f78f15f8262d0b50ced1523f6d1a26939ba doc-comment-0.3.3.tar.gz
+996814e68f67c77d68a0e3195241f7034575453401370a1842c94232a35aa41c832f788720ee68947662ae0e8c7595df736810a2b392871f57e6ccb47f55a4b9 dtoa-1.0.9.tar.gz
+da4d7c318b7146775260de71be363fa257ce9b1f7fcee8f5213cf905211379c5f58496d2070a001fd74fd4570a7de2a1ddf4d02e617dae6977e7a1e29b8817f2 dtoa-short-0.3.5.tar.gz
+88e1ac4053c39740cf643a8fd445f2d939a8398e952b4b66ab38bb48bd54bc7a976967c4bebab36fed66c4f5fb76082e9c6d40e146914283fca28f31af0e0138 either-1.12.0.tar.gz
+2f65cc09ac0a9a806fe36a617fe1fd8b6eddc2fa427012ed3fa2eee2f05743089820a801063d0fcd38bf5269b70b6b5f5ad0e6d706cfd461fcf4a62a9f956361 elasticlunr-rs-3.0.2.tar.gz
+64193d6ac75f66d58ed864169b5d6228ede36dcf100614395e086bc8e847a3ddd287734d88e8ed50f38c679a99c80ec68449175a67d8ee03b02ec1cfa9d55e77 encode_unicode-0.3.6.tar.gz
+10c186e0f6ffcffeacb11a66fa39960454955b4827dba03e13d9ab5294bf14e77faa8e64956d5c3756fbb7e930081b7b301db8ad6873a6e8d44a7f9d98566e4e encoding-0.2.33.tar.gz
+879fa0b9a294f3a73a4b224318ce5e44bc1ad0496763a518cb9ee251a4cadeb08885df97eb72f27a1e331f36d46a96824f98b7d128d879c0639405a10e08b8e2 encoding-index-japanese-1.20141219.5.tar.gz
+0e79eb9b01fe0354532dc7a8ca55e6332add19827905340560ef9b0e4725becda68ffedd5d18b9ac9d0c4a1b64fb337a9a31de5891b9e6469478fc974e5f9884 encoding-index-korean-1.20141219.5.tar.gz
+caffc2a9b77545c2cc22bfcb38c886fba21e765ef49a3cfcfff88ebd76064432638bb432cd57a7ecd23bf2ea074c400c1f043a0589e5aa28024ed3ae0f59be75 encoding-index-simpchinese-1.20141219.5.tar.gz
+648a5b9dcbdd40184b6026f6d0593df3b75c5eed554c19a199810c99aba857fccbab2acbf5b047ff42a75a6a3f6e8211a07e70e6fa4048f07144f9132af7d17a encoding-index-singlebyte-1.20141219.5.tar.gz
+3b23213433947af7c56e9ea3e4eaf937b8083ce7e9e481b1351925a6da647be6a037b505116bab08ce73727bec75550bccb877ead6cb7fb0473bb3bd3d40833d encoding-index-tradchinese-1.20141219.5.tar.gz
+0635e6a879d59aa3373e1c0cae6f61b9bd11138691a1113f3639a1d16ba894c1554f29a6d347353f02395508be4da8a4b16b17db3339cf970a62267874fe93a6 encoding_index_tests-0.1.4.tar.gz
+e23b87003814dd6e7e17924bd1f53989a5008dd1da07baa23c40d2a18dc1ab2d786d61e2c304b3f60e73be5f180ae2deea3b4499c0157b6afe3c9273d2f739f6 encoding_rs-0.8.34.tar.gz
+a3ee86e77d980c2eefe4be32d75422aa0f9a60a43fd11bafaa3c9e556584cf65c36976a6aa650f87426edfd82de0cbb919e0906cdba6db8b486b4dd4b2583bbe env_logger-0.9.3.tar.gz
+b2bc60e804c1b02c461dcefcfd60fc37145af710d183ebe65f9a4d63f2b2072d23193f98dc550a9213c7fdc6a2a837af23b04a89294ebbb681a4aaf5d5031140 equivalent-1.0.1.tar.gz
+777fbac5730d420d58275ef63b7579997d8e6c72106d483ee1e3b1f1ce3977f1f66c56870a05acaa4cfacacb820eaf963e9c763748759cff3668fa2e6f89f04a errno-0.3.9.tar.gz
+eeab15189ca6801d3b3748c88395de9d2a3fd970f182f70bd39ff7dbc960bd27d06191a42d1a5cb895a334787f18dd3ff31af74d223419e1845396a5f696dd1c exr-1.72.0.tar.gz
+d57242c54ea3283185eaecbf8d96a4c9decbada3ae3aceb516a79710be9bf038a6e06a29b9ba4ebcd41b8f42943a3024a983ea23e36b17edc445a8c4980f2893 fake-simd-0.1.2.tar.gz
+ce776a3d0fbc108017c93ce9bff7c9e7e65590acb149dcd55c2f349d2077ffdf5ac6427753732f60cd7acf141ef6f89359b2e7d9368016be53b24e8703e71104 fastrand-2.1.0.tar.gz
+a38b493eba656beb97275faf5a2f32c8a2c2cb12c5d5c280d37bbcf1406fe404151fd6312ec496aafdce802ef08745a6927e571890f9b290010ca5ac45ac9bdf fdeflate-0.3.4.tar.gz
+f6d77d9cbee1d95415ce64caebc4c6e662a8ef05a72b59e4daf941f9f0746706156372dd2d9702ca0bf6de800bec05f9b35d81b573965583df5aa35f86d768c6 file-id-0.2.1.tar.gz
+8d5ac82482758577d1d0669abbe7b880efc44958687bba745c9ee4a5c16bddb44ec0fbe9c29cf424e7120905f3c3da607f3a7ca1e50287154c0475ddf2148bf3 filetime-0.2.23.tar.gz
+21528f80c1709cfa764723dce012903581dbc2b63ecad194ec601fc75103307e1b2ef17479186ad895ad957c9a33c6fd666b2981382a8a68ca78dfac7cb5d578 flate2-1.0.30.tar.gz
+29e499f3de970d2d400c3826e912a49a01408dae8d933068dc94576cb0c2ca0e42ec4a9ebeffd17a20f56869f09eec04a2b90a335bfaa6462b8df474b2a49fcd flume-0.11.0.tar.gz
+2195a4b34a78e2dd9838caf0ee556bf87cbb4a8ef5505aac663b614eb59dcfc0c40f432463ede41ecca57bfe7711f72673d39a85fe03d426f1324097d5628334 fnv-1.0.7.tar.gz
+bf27b8243ed482c202d120383374f19ff09422535e24b9c1aebccc66529bf300ca17b8bbc76d67f98ac092e614497afe3add9dc68aa69c93074df05762f91232 foreign-types-0.3.2.tar.gz
+bafdb2143e136fb0818e2ffd90b5c862b7181647d6568947d4e4531012bbf7a57b597221ec7056c1b562dfc0c3b5dead26d1a4111ebc15e7863737a873518a4a foreign-types-shared-0.1.1.tar.gz
+c65104e2dc08fad572bb31f981700fd43dd29fcff42b01c7ccdbd3d4c23dec12360aed3f1b5fc4766fee386d418a65349b2941b8735f788cb0d35d631a6a8dd1 form_urlencoded-1.2.1.tar.gz
+e702686629557b879efaccd37b03a7ec515eeea29d8f8ba46f82b8b68ad157ef9d6b188be031f806d8fd27d4e9d2689cdd6bfa14e4ff77493a7d0be3ef1238a7 fsevent-sys-4.1.0.tar.gz
+a43ee59452d49742111e506d6bdd8b8399a3a646e08648e25292864d7f71460c1dd1f2d77b8efa8ed09ac21fa4ff0442a2709f16d8833a3849bde0c388d83a93 fuchsia-zircon-0.3.3.tar.gz
+978b7e8795a5877a68409ed3a1d7b4246263f8e7e7ce9ba8a022643be98f58f329cc1c234717df80a509db849da4394f39e90a8e2a6f56f8fa8dd3c07e7d4386 fuchsia-zircon-sys-0.3.3.tar.gz
+691e1c275b648110ef42c4adece8178cf037bad40d469780280eb2ebe07aa4b0406737c5ba02c9f9f63ee57a99fec27e5e51712e2113655f7522c8678f689155 funty-2.0.0.tar.gz
+4cee071c067c879742839d3d32192ca94ee2f9241468656357c3aed116cb7c656bf81722f32b67d60214b7db66858dca6443f0d52f0ff2114fc70971bdddd2d3 futf-0.1.5.tar.gz
+689531748821529c528772a6dd0f27362078ff5803d2e0b431ee5a0ecf8787b5a15262d65d52f48486ded46b88f7a9c477ad95cc2c5a3e8f5f9b9f53f367832c futures-channel-0.3.30.tar.gz
+3c7259ddacbe02e47a84178b75e5f13523bd0c8f8bc0b2375f7ecca60b7075695ee0a5cc4e1c1de26665cf250271173be803661e2f2f53e2a3b96380a8efe7c4 futures-core-0.3.30.tar.gz
+077acf5eab1101917b5b4b4b83347d30d533110d9a34c2de6db1411ffae0f0530f457033c5a5c14249119e89375c9f12127790b46e486dcd003a12a6fad48bc2 futures-io-0.3.30.tar.gz
+1c198da8f4118d9a9ab2b597e3f7b4e1ac7094dfa547bb81f3c4148c45216ef55b309255849174a517ebddba6c874283425f1df6e56e2ba5150af091bacf46a3 futures-sink-0.3.30.tar.gz
+c190fa0acf7ff15fa67fe172911cfae803b2a8c08168570a5518a40767d08134f147259a413ab25c45cac5dbf2f601a9753c77ab0eb2c180cad2fe48cfe3867d futures-task-0.3.30.tar.gz
+7faae5aa35641d858d0f5430e4a69acd4ba9037852ad73c5a890bffeed411d28820883e18bad4ca8f7b0a765f9f4c5dbeaf5d0cfaaf90c2c69846434ae091951 futures-util-0.3.30.tar.gz
+638e1c0a4e7f365483a329e715afbc2e57e47c03b32e0e1818c879baa96996e81dce8ab39320e24a3e1633f73dec1e5f18a06c37f3ad38043002fc99b55efc38 fxhash-0.2.1.tar.gz
+f92002b549aa9db2a80f65c50357c1f0f490a63e104fae7a271e0b16d6c43ec9146cb7f371f00eb1575a1bfc713ded3beb51f9e96ede93f2ce66ebf78ec85cb8 generic-array-0.12.4.tar.gz
+363a7b04e4102f9ca63d429721c1ada6272be6bf0a2e97da681faf76381f73f0e3acb86623b9ce2dae441de9fda704088391779b9769ec02b3c8c9f9f35f897d generic-array-0.14.7.tar.gz
+c5450c522c07c7a38b326f9a9062bac7d089630219d577ea4b55abad4e0c31d17b7cde385fc43912dfa100b42334e7a52422c55fda8b738caae428c6f9addb53 getrandom-0.1.16.tar.gz
+04789a53d3f4a84862e1e8b2113641af67e471b468de1222470d5e6cef0015232463a2cf3c3518dc2a533b3983b175a7c8922da00665bcf71c1e4e279b67e6fb getrandom-0.2.15.tar.gz
+48840cb01c4887e832ef30e9f3162dfdffa42a184ba585206ae4c48ff3bf94548f006ac6b120377546156933c222d7cc8326aa63e439477c26e9a2616b083825 gh-emoji-1.0.8.tar.gz
+7e76ee111c6a94763c4dfe01faf4cb0b5272d5041e2b2b8f4db666debf647e192b963c6fb3228cdde28e1d112830c2aa31eaf0551d712ea9963e41e47e26fb26 gif-0.13.1.tar.gz
+a6b591d48dbe93a1fa6b814759a5cb61fba0838288840667aaecf01346a3ab862fbfe1cab51b057a425ba9a0ce35c8421b28cd5195464be881f38905062f1446 gimli-0.29.0.tar.gz
+29368160138bcb7ea5660f9f30c5711cfca8bc8ba836bbade3fbe8c424e7b4118daf27cffa677962e37e36f025fd2bb5a9c2aea865b0ff155cace455dfbb658b glob-0.3.1.tar.gz
+e83e4f5e42a97609e2579b09f49c2cb0a76a94e7e2975c5871f2c5af5d3b809736e0a7b220404c582f4a0c7eebdbfad6cb432e89b26401b58f2b253f8c0151bc globset-0.4.14.tar.gz
+9c95d6832950b35cf6ac87bd986116a75c847f11dd2e96ec0cbeb6c223ff901c949429669698cd75c4244a60c3de7df9adec648bc531303cdfba889e09f29448 globwalk-0.9.1.tar.gz
+c0c87bbebaaec67ff6ded1ce72b99009a58b254bd4ed8da284372a06d5d7332e0603e2ede2746d7e4f446bb69c892a219cd40202ac9e9fd833588dd6a6ade78d grass-0.13.3.tar.gz
+7ced90e2d9a01c0a02f6fc5099c4a1e9ec5bf2d05e16080a22e989a29716f7ef3f206040fa2d3a3064c13978c3393cb698052be513977c84a290057e38231469 grass_compiler-0.13.3.tar.gz
+3e1fb02d42d86c9fbaee6f10fec78eebd9a31a70efbead1f4ca22664ee0e96809a52b06e23a9b6f5d0646422dc8054b5ff5d82644ef65cbc0ed2b3729d849163 h2-0.3.26.tar.gz
+0bce235583ca128723186e1fb50f636b519bf826c942f02c5b969db4117baa87c644665c541991c16d1f1dd97c7233c017a513d45075fc72c5d99ccc7c1ac193 half-2.4.1.tar.gz
+b3700fcd659a21a6b9b3777c18b37a83bf25542b4e8f2b963779a122f5d22e1742c064cfc03e649583e7dd5c6e90ca8407f8c51a0e8755f6a108682853022f76 hashbrown-0.12.3.tar.gz
+21dae7a283326d21e16bb32ae0dd1481c4936939a32a06478a3351c2dec97941be532437b808e99ac40e7900a75433fe0efbd852158659a682461245e19d0e70 hashbrown-0.13.2.tar.gz
+215ea860bd3de80e2dd2d4647c9dd31c0ac895ea7c08b87256dc11d36407e412ffefaebc6cdbec024057dd4f24b3762b4fe427be307e15d1e68ccfde89a99742 hashbrown-0.14.5.tar.gz
+8c80e959d2f10a2893f9a71994720f90747742bb5b61fc0a539eed3ea5679b140c48fd7f7690d7122cd6af5f7f20a19d412e3569fe741c6d31f6b2ce1e0b80e8 heck-0.4.1.tar.gz
+f044fc9c3d22466629fd8f772ec0555350fd611c0cfadca51d99a3d2f10e155f77c1091916c8a95a6b9b499f366c2e99a5fbf45b010f988bfb9b2501bf9f6a76 heck-0.5.0.tar.gz
+1c877fcd562b15d2de9c151fd6c5f3ea4bf48abcb799e6139a180ffad5d64b632f0000d5707bbd92ff23a0e5f349157b9e0f5be8b50f03680b0fa47315dbb78a hermit-abi-0.1.19.tar.gz
+8d736fc122da78e9ba8b546868d0770837ea0b4951ff027f1b5593dedeb9831c082dad1868659422fab5527711ffed18d4428d519a830a3434d4594a1af6c868 html5ever-0.27.0.tar.gz
+e32dd4600aae7e26f1d530871815b30fa0b9bf95293005649bd9a7bc4df7f69a1d8de503d1b8873e67a5496e644d0a47db2a0680fa1e9058bee4dcecccebee58 http-0.2.12.tar.gz
+fd74fcbd25044aefa183e3caad6cde0967cbb00b6d80addec2589d037b752cdafcdfd02d29d38a12b5c7d87cf1cb5e5ed80488057735b9dd73e03904006a5462 http-body-0.4.6.tar.gz
+16f9baeb1b00920b4a29c93556482a2da38b58aa661b87c6b543b551c731a037c9ee6a4c535f03c62fbd30f2e5433ddc9ef1a5e9373a2debd930fd1cb9ba304e httparse-1.9.3.tar.gz
+0586888fe89f40b838d5ceb083084d0b8058feff1d2933faedb96896dc86eec68b541a0374a508fd11b86eeadab3c62f88568ffe2c53206fad438373a50b2e5a httpdate-1.0.3.tar.gz
+0adb6825650fa074a0ff33a4090563987ef311de5ab23e12f715286d8198310d17cca9028f41b8ef0e17d15b939e50d165419853ffde6a7ccf977d33acd920fe humansize-2.1.3.tar.gz
+3bf29ddd1391d82897c22baa0ff3ed58ef6d6959859f1f8ed54d324caba5b6fb4422e56790511ce82f902cd11467f93c8ab7fc7b0e0bdb719308a4d0a446ae0c humantime-2.1.0.tar.gz
+998c0ae60a6fd2b80717da1aa9596553489a8af890f34d9d9e6b0afe1e7e8960645fd5cbcf1379bd14d91f006fd4eb1c45e0d1ac5d3bd68731395c1b51b1dd07 hyper-0.14.29.tar.gz
+f30e83408376b985ee9df26728f8183a7048d4586c5fa3d797cc837931e13300018929583a087767bd19d4bd60d85ea1c2696601c236fb65be9a6805ef6fc193 hyper-rustls-0.24.2.tar.gz
+45dc16cc9ce48706e0b3575dca35ba1b6b3084dda8c2cc489d126e1c4f0bb96a9b2baa860d09f68c5e0a48c2a69e3eaf62f4f0406fffc4efefcd79d26c82896e hyper-tls-0.5.0.tar.gz
+5619b994d3277f56e65322a7903e4c5e03928a87bdb72831cbef88788aaf5573b8460abc0a4d5488c5df7052bb978531d973dd66002b0ec4a3af468928c9b722 iana-time-zone-0.1.60.tar.gz
+448224ecafa935472ff6f0aab7cb71f9dabdbe71569c4b94fcc65baea925ef48841577687c9a31106a1826c2105e8dd73c748e9d27fd002648e5b0ce838af6b2 iana-time-zone-haiku-0.1.2.tar.gz
+127f1c91101ba69405b10a2590579606df766166fcf1fe6aa9a74c4900296425cba5c47a391a53a01b02026af5581f068fce4a7a400179809f7ed9922b94c0db icu_collections-1.5.0.tar.gz
+4b85f0e7cc73166a542b2e502b3ffae1f30d2a9609ab83acf98e90b0edb37fa8ae4592f61ecf48a0ae0779fdd376abeff59e1d5cb97475012eda99ce2a97da57 icu_locid-1.5.0.tar.gz
+1779078e2ef9859bee2bfd5414ad7e4b0f0a40e6813f4ccf8de2bbe8c764fac7f99ef001cce22332a8b3840af22e9c7fb7cc0341cf8ba61303794ebe87071e63 icu_locid_transform-1.5.0.tar.gz
+1c00fb962eb4b8c759b1120313bb890f4388d579890d7450b798d6266a7d6adcbbebc8a8dad2f267668ca6f1c059d0bd2209eafbe2a72f4558c85258eba57405 icu_locid_transform_data-1.5.0.tar.gz
+22612b86a24e3ea222469392763ae9d40dcbb37191dd8b9fa1c64332463a4299a53275a1cd3deb7e0f057d137f4312d990762f9925d0ceafbc8839d67c425a13 icu_normalizer-1.5.0.tar.gz
+222fbb819791fb4ec7889e45ed3032ac8d4753e2e9cdce9d0b3f79128baca5ce64157a8a58ecdf39cfddb6c2395001e3cc8828ed51803e85cae133c247cb338f icu_normalizer_data-1.5.0.tar.gz
+a5ec9036b5c8ae35cd9afaa143ad29d0656078e1b5f2c589d7ad6a9e4755c4a383e45c2a3b9335455f414e4d068f7e8f7b41e9cc79309c84ac769c40634f03cc icu_properties-1.5.0.tar.gz
+c651d0a50c229acafa648ce234a73bc1d0a85a8bf2369fdadaa62badc741c35e8a7d5392fb1bdb7b720fe2e0f883d1309c78de4ba913691969e5367a4e8bafac icu_properties_data-1.5.0.tar.gz
+6c11d89c7d2b788a44757f02b0e298b558ebe174fe917664401d91109cdc7bd1aba5526b3cdcee1f066018de1b775bc9dfc294bdfb40476c53d552bd6f29d6a1 icu_provider-1.5.0.tar.gz
+a0dd58d731556a010428fe4aebbc9dbcd626b46d380cf28ba5236ec8824045a20f6f2ec986e0c1e791bc8bc2b692a10306f448279f079b4c37237e4a3c3cef63 icu_provider_macros-1.5.0.tar.gz
+9230b6e7410532190e77c9783da477c3f09b34cdda8376ac813bf905b116e6490470afd93fe2bcb383a0234074605de5e93780873685020732cbdea422eaad29 idna-1.0.0.tar.gz
+9647a4887258dd970c87798dee32a16c1cda75ce3e352829f78d97e1b786d67f74d89b2fd76d48a607fe795213965c04c9dfb47713f8fa80561f87ac465956d9 ignore-0.4.22.tar.gz
+4252672cb5b5fde61e9c7fce1712997ea082e3e7d5350970d597c0a1421b21078e1b4c3088474c4b500f396bce604d0749085fe4cdfe1c3b5f3d1ffcd39c1b04 image-0.25.1.tar.gz
+c983df0b31990c0d5c1176d94a659f4f1d45bfe41eef77e4734916fb04c2a1870de3b40fb252668142c1abfc1b33682f624e301e17815609bb5b3011b94e6d04 image-webp-0.1.2.tar.gz
+cb58823cd0357c4cfc6daf3052b59e7de105acd85a1f8bdc49bee65f4d8b88ecd8a59ebaa7d157d91f643449f6c071a113d998f50a2ae9bc04dcb7b635c805b8 imgref-1.10.1.tar.gz
+2aa8069eb07a814c8fa3e11296c9f032ef60963520d7786ad20cca5cb7e73b8f76d97722a994d65295bb713020aadce5008cd3df5e99d8bd968ef1979f910a37 indexmap-1.9.3.tar.gz
+53211c4a9003d751feb6dcdf1a76495764cbf32d24bbfe2be7023946622ef4f2b07a6de57109e5d24ee01892f4b2be0e0692e10cd31fd39c4ffdff4d37abe9ea indexmap-2.2.6.tar.gz
+39c3db1b6da620df9eaaa41cc20c2f22b9a372e181ed7d8ba0c7ad4e711ba4486bcec7ff86bb4d814d9c53e071cc4e43845567069e45b897c562cb677fc872b2 inotify-0.9.6.tar.gz
+dae749f32c533b0c9f99963d97a77dcbfcacf173ec8fd7a02f275804f9925e867b4dfdf6be52c3c3c3de136d64e6e7d6b30a3bf804a01608cf974b0cc2e346da inotify-sys-0.1.5.tar.gz
+6d50e49af1b76ac53962565d37e05a3fa5b9dae47655529cb675b498a0308ce6008d9c2821e4cc323c2e05560f76539572a7d8881d151e015b32444b02175e5d insta-1.39.0.tar.gz
+87d2b732a9104d1a094a15ba6fa642641690aec10bec065d02aff5830f54a0fed02ff5de4bd5c237a91d34cd81da0ef11cc37ded3d4ac640de9dcb96fb73fe11 interpolate_name-0.2.4.tar.gz
+e23fcaac239807daea20ddcf2cdd4fb858ba1aa970ce6248f70f0fba5bff7ebdb27247c0997ac0ff2791178f86ff9657e473d8f64b86c644763e5b3474edd158 iovec-0.1.4.tar.gz
+8ce429ba2bae53cfdaf8a7d6bf980e10b9dd515446ef3ed4e4e11432043a18e09454260567419818f523bc589fc367194bc345660f2cc808d281db235d3e0b54 ipnet-2.9.0.tar.gz
+759e00292710b685954df031ef96bb650993cc3384cf03760ebaec377524cadc929c6561dde5fd3e14d71f9f122c86495dcf9893d1216d99055048542123ff06 is-docker-0.2.0.tar.gz
+69ffd419eb4de2e50ef4e61efca76ec4547216957d5422ac7b2bde85264080c2f522714aa40b5a6566c25eaf791d12ec0df09afe3060cc43087d18510f33d049 is-wsl-0.4.0.tar.gz
+c07d5076978e4c5d8d6a191d8880fb62643161979c473564881feb17726cd9ac8da25c40094ff12727dbdb064fe88fbda1867120a2c3fda1051bcc39380645d6 is_terminal_polyfill-1.70.0.tar.gz
+d03c3cfba9841776913bbb6daad0c8945830c155f32ae4b48872e0f937c75a443f0ac9a0355f43b359ff75232f38b15f4f6d446b4be30b00b4209cf66ef770c3 itertools-0.10.5.tar.gz
+0d9c1849dcc0ddf7555b0aeb7e4f2ef3b101cfc6f03310ce1b6072d70ac8c8d3387ef4c726146102012e75171e0b0bf13465704b6edfc02752e349dc6af7cf68 itertools-0.12.1.tar.gz
+7e22dffac34c9c9f432daef395e0ec710ed658164bc9cd9fc6445c9f984c912a10bac556214a026bcddbe27a3197b35b0c87d6709fd605062637d086b2d20311 itoa-1.0.11.tar.gz
+d83bbf82706cd113115840d098db9135e9ae848c87d1f0037402f112d759ac259e2808b138378bfeb1717881c60b9f5385053f53bef644cb8e444a2f57203fa3 jieba-rs-0.6.8.tar.gz
+0488e5eafc5a99583d4626ae8900d49082aa09228b35a8992d8e715b5a39aade47f51562dc4db8ac41305e069988c4c63e1c78e92d65561e3e8a09d4dfa5fe25 jobserver-0.1.31.tar.gz
+103b7602876069603620cc2b5530e84fdab88ec96855a821606560a67cfa26f628b401eace62ee793e6c16ef282f958ed789f5db725ff901124fe6c9b123de00 jpeg-decoder-0.3.1.tar.gz
+506722e6dc13484828a4147d974822ff9d103d9e7db58a48181b0957770d9fc43b97605ced105c5b680d8b2cda5fa1705f605707611cb48ed8a45a96d5f196b9 js-sys-0.3.69.tar.gz
+22e0be2cf0a95c61259c0785e680a369ebc5f40219a13f1070175372203fc831844b451cb7f1374b58042ba6a73c9bdbcafecab6371b6ea18d6d18c9f08c419c kamadak-exif-0.5.5.tar.gz
+682bc7c629aefd035966a2873518fd60719121cca7d63d89d6c97ff5306f24d8b5055a3c91b4eedaec22b1d5dd3fb8b48ff7341a05bbd72d86e06c422dab473b kernel32-sys-0.2.2.tar.gz
+c8734fa2cfbf8b8f173604acf5d13ad4cc2739c879387b548a1200f8383b81a1b72315449eb73844e4b82280a4c29901d20c12cdc746d48f9047db89849985f3 kqueue-1.0.8.tar.gz
+6650aef7efd7fbf4f9b6c8c6e4c1a91b79636423d46a0173dcb99de74e6f277cb02ada01cb62aa71c3f174a2c28db62a708b0aada9480fc5bde613204acb30a5 kqueue-sys-1.0.4.tar.gz
+c3a14f9b65c3add25398eb69f6162e349866cf13bea0eb3fd85abe1d4f159d5ffe26b7890964dae696a9f7e1872b09085e8f7a57db2fef87418bade94188bd03 lasso-0.7.2.tar.gz
+e124c0521ec7c950f3c4a066821918da7a9c6e711115d98009ae7c351928fdddead852e7596fea5937a9c30e4e4ce8eee7099b20248b5d6e3b2494b6a6d88cb8 lazy_static-1.4.0.tar.gz
+f9d627afc28b61e9687a3f72260eb013401fd64057647641ff2e763770d7380ab1d2d8cbb4a3c8818d53d504c618a3b46aaf701f72f4d7b25d226042824c2f8d lazycell-1.3.0.tar.gz
+ae8fce41c9a934999dad672ad74acabac9d7998aac4f1d03b54910d4b941375b9e9721cb1bfc8cd7cfcc4206fc0b18d725b0ea256a3a10a125a8d5848ed761ae lebe-0.5.2.tar.gz
+ca7885bc22b4b67053aa7c83299459d5b1f5e627eddbde4827b6a5bf09827ef81d506a445a5a742bc6736cb9e02d7f9b458f16b87ad1af038ea4559ca0184c69 lexical-sort-0.3.1.tar.gz
+05354bba532b8338bda1f88f12c7f3893429734a06e33925fca2b99d49548ae5216e2cd84e782d2368a2dfef20b0e035e2dcad8dd13ede7119462a8c639b2807 libc-0.2.155.tar.gz
+8c1e4d8897edce34020ee3e507fde3da357324c15e5288c6e4fd553ce876d2f9b7b5cc3de39d03aea89faa5fa75bbab52f671ff1777054739a888aefa3651c57 libfuzzer-sys-0.4.7.tar.gz
+753df71bb2c838abbac360db2e4400c2d931185ecff993da51a979870f2c3f7ac017380fadee4622102fb4b37ebcc1960b0cbd295afc9cd1cb3307524e1f39c5 libm-0.2.8.tar.gz
+07d57a78696e09ae7566c2948ca78624c6c50df5c4da63b83d6234142a4739c07da7abfba7f6c4613681fc699470dcb4b8e9a6ff024debc10f4e84b782f0fa61 libwebp-sys-0.9.5.tar.gz
+502a6aa0959de7459987f894b1dad0c095e0d1aa20e0daeaaf18157e2d8e4b154e35cff02983378677bd4618397dc73d7b7b82c5ab0a43a974a9ba4dd6970446 lightningcss-1.0.0-alpha.57.tar.gz
+9077b27619b6f6d1ca800702bc9cbfae1f2060902d6ece6b2713a47c47202f6df37ed22fdbd534e0a1e76dd13d2e3921a026698f0a924d391baa6cd3a79f4acb lindera-0.14.0.tar.gz
+d06340f34bd758412ee5a83a69e021d0277b469ce2d04becdcf529351471bb5252e12ad386d4b360e0812d26318375fb99b6f17421c23f10f70832feb1c8dae6 lindera-cc-cedict-builder-0.13.5.tar.gz
+544c2ae6115fe21244749d78d87cd27cfce05d77e9752aa02313ac5b3c9f6bef7ed14f936276eea19dbcc2c2e4e76797ae0b6b6298ff3c0e7bf8fadf2a7862c8 lindera-core-0.13.5.tar.gz
+65410cb8476f0ff54f4da06a13e68919c4434fc295d275c871a1793f76bd4661f2a93a81be592673b4a7d0e6f4c55f06dd4f2111f52a45da59fb26672ce39d19 lindera-decompress-0.13.5.tar.gz
+f7ab561c06b8133c58b6b48b0265beb497e6a5d45a68fb0e350dbfb828bbcea21f3ae7d1be9cb3eb63455a4c0c264697c9057b773eaedfd3cc12fa1d70e6efe4 lindera-dictionary-0.13.5.tar.gz
+a6fd14b45e1dd1d010a46836f755b448de1599f8f5810e7056dee4aa20d84950709dc0a30c439d9e1e7048f35285603fa5578a2b9000ea6d816f09865a00ff00 lindera-ipadic-0.13.5.tar.gz
+f0830820fb83456921aea78e6d0a4d0df357242bf7764acce988e4f488a3905ad9bb3239485834151eb965d62cf006e4aa4125dbd7ff87eded17f91b961bd46b lindera-ipadic-builder-0.13.5.tar.gz
+c28408d5b00a00116d89d46b729a9d0cf11b2f28711d70104c32b23258fa59c1e985e6a8e4c8f6f765fce37a231fdf669aa1658dc27c67447d0ba35aca310d74 lindera-ko-dic-builder-0.13.5.tar.gz
+ea49a1ca66cd7f03d52a9a70c5dcc07a1ef10ec9e70b3f89d01b467845ca2ce1722fb518b43558b2f6f7d97b83ea8b3d8815fc1a1afe1feab510634cab0a8833 lindera-unidic-builder-0.13.5.tar.gz
+0fdb591ffaee918e32249a83cc28b72bcabb1259b0531cc4cc2a2241f1dc4fef27af41d5e8da150b9629de025ed60d25240bbffd02f4121f355433e7dd13297c line-wrap-0.2.0.tar.gz
+031a87645381c96beff33572e4bac1a9877e52fd2f99d39918fbede17d72291b35e2eb69e07edec20c3058554c35cc38fe85b8f175c2a3c69366136fcc71f707 linked-hash-map-0.5.6.tar.gz
+28149660bd975ede05624af3582d5c78f498239f5d89713c2c32f5372fc16f4ca024dec35f81ea973a2cf986098890395dbda06ac6cf4ee29df3f9a0e11eaea7 linux-raw-sys-0.4.14.tar.gz
+2c3bc6c4cbf6609f3cc2d986e701d23b73f5bac55995887c90aed01bf4392a42c718a69c0050296fa635a46f7cc9ef3dd6c6a2a505d3cccc690899aa345455a8 litemap-0.7.3.tar.gz
+525d971f495449bbd02eb70fcd84d4aab05ca582142144a5f314f9aa67ad4c5b4c98dc919a416d0ed2e555063eab037a441d671d56b633f2cb75dfab5d99bcf7 lock_api-0.4.12.tar.gz
+0becc1a06b6e7048cff6c0bb8df49a16ac4772133c00239e9e9459c0811e7715c500f440cf1a9aef8d7ad74f57434559ca9b55917f588b8e476cf36eb6d4e10b log-0.4.21.tar.gz
+0a04d4e2561963671f5aa1c9af09470d0a8d30bb02299ab08c7dcec70b1dd3f9380244a59a4da1b8b269967313d6645a154a3dbe92fbae0e43cba6e009e6b7b9 loop9-0.1.5.tar.gz
+74a00d76da2322d7e72a3a9cf9900a5fe861292f9afa4a363b2a9c6820801d504f1ab0a0e618a95e0b5b9d4933c8b060c125e061307601c6f62cada561edf8f5 lzma-rs-0.2.0.tar.gz
+dbc6def04c482911ace311f34be79992fa04042c7ce36b71459b5af5c1c43e9fa66b6b40f63f8c3647daba287bf1c1be9b1a8031ead1d855f99a988898c96f1a mac-0.1.1.tar.gz
+917b5cf665e12b687035c895b60b2ae05622963f495f5693515fd24d56f49e95a06ffced68606d061bd20822c655100035930673fd4b0d4790168763b6961a9f maplit-1.0.2.tar.gz
+5063b6591c63897017d79f64d11cc13edce2e8e21462df8a00166d582e83af3132ea7f4e50af4f248b56b75cbd12c6f89b7433da14147c76004fb2ffeda02b92 markup5ever-0.12.1.tar.gz
+2248c6192238a8eda2dc389a5c27357555607b726d195c36c4cf647f793a4a9e17ecdf5145b5a4d8fe6eba7f9b23c7b2db1cbd553f5610d25976e3709bc2fe4d matches-0.1.10.tar.gz
+6f4e0e2a342fc86b5d0626a08779075c68911ffd3f837ac6ab2c15c821ba96e50617cfc9df9d16bf96ae57fa1802c5549e21d67f79e4e1c3f10bce04b88115e9 maybe-rayon-0.1.1.tar.gz
+8d0e8b9c30208897d4b1b920f1bdcccd0c2b75d92a06abe4a1b2407938768abb6487d63de56c6a80419798fe69517210643dfaf11f5f5540185f0eccf220adb2 memchr-2.7.4.tar.gz
+e6d2ca92bb58fc747c1bb65a7f9023e5dbf4b94966003a72e4913bcaaeccdd6752725cdbd5081e0fd69d9e8f364d79664fcbe70061737d5c39e5b3e3a154a0d1 mime-0.3.17.tar.gz
+acfbbfdc5bd725edde43e4915858b8d016e90a5b483664f0bcd5e8d2b0b3684bf0f6020aea147b5bf429f218a7af8080761cea4c5c04b68fa66fd6a676376908 mime_guess-2.0.4.tar.gz
+616fed1dcd105b3b34eda59e11a091ae1c62c1bea9313301c683782fdf13e5355266396e96e782d25609bed71dbe5952ca7604504196df36870281831709f407 minidom-0.12.0.tar.gz
+92d8ff03891dc9f0b8bcef8e61bebb14eb100767cfc565a873c6f88cef3719f8aa96392207f011210ded0e4bd4a5ba8ddb35d65b33fd8e7a319aa5fba6131c48 minify-html-0.15.0.tar.gz
+b726a960f5e756e41ea0291d09c25d8bab62ce08e4cfcc0e3d0aecde6b9edb01790d0ed7f073f475ce0ea8772ccf1b4d15e697c6dbbcd1df9234303a76367c46 minify-html-common-0.0.2.tar.gz
+d20d8b089731452c877baf2d0f536877438be584e952424cdddb0b8a1f359655f09de54a8bfd1de12ac8934afc987056b537f9cdda338f4a8049fc1f00a3ddb0 minify-js-0.5.6.tar.gz
+385fab51884bdcc7b0f2728a219ab164d0dc8efe42160b918f2c09f79ecf853fb12bda006d11e649f097bae1499dcd41ddf2a8784ee7d178cf2c28059e46078c minimal-lexical-0.2.1.tar.gz
+b9e2cc214d6213fb343cacc5f87228487592883fc8f7cf46c9a26b7148691783b2729ef80c0d0e11fbedf6edb1332dd87d88b253f7c2e645fe86ff2ffd47121f miniz_oxide-0.7.3.tar.gz
+ea95d15072fe36524a85b50108415a809d7ea3744deee45e4b6a1b763a11c88cda6dbabe4f8d01945a5edeb52296a74fcf457c85be3032c1311a35025860d05c mio-0.6.23.tar.gz
+9a2806ea78b0637d0cf92448abcd50bc5d09bd80da0f37752c847bc98d014baae7a5cc4d929de98be6283c76d82ccab1f1467aa6ab583a4e782d97d5592b0bb1 mio-0.8.11.tar.gz
+2d92e5afb34ef4c7d00c78d6ed15d4e786aaa9b57ea6e2743b996b8377389c9ae058a6aa227c5c66c39a2f86a7bb0b22a13c73a3e35c4b7c65b7b01fcf7fa232 mio-extras-2.0.6.tar.gz
+e42012f67e1c5a475d1c9790bc731add53f7a3838d36f8a701f69974c3ff33d31364006220e69c8f37bae2eb31055ee704c42b64241d13be528c768ca5c3d6ba miow-0.2.2.tar.gz
+5ef5aa972a45c8b6ff74b88cadf6bdc3e6465b742b08f1b1f12e72f5276adb2f1f7320c051896af3903acbf8849d0fdd034ab6d36ac75773bd1399c79f006fd4 mockito-0.31.1.tar.gz
+395a11830264269602b4dd0a7bd296298cea606d21f3ac122a815954da2e370b21e820c6df9916325ffcc9789d57fa8ffc9b65f4d1562b760bb3cdb286d7b709 mutate_once-0.1.1.tar.gz
+15fbc9d02134d3d55334d2f02fe4f64be50db991d75720b38d802088f06cf5f844cba6b25dfd7beb92f2cd367ba477ec2098e3c7336c4e5a5a7fd39c753fc723 native-tls-0.2.12.tar.gz
+3e36acae8205a9cdbe4337fa487a61989e17de0e584b586f3826c10d0df96c886cce374ddb918dae6b00544780e28d8e0e9d40da07a7d97f05cb5dd3ba622187 net2-0.2.39.tar.gz
+73a61acbc9b20b3595925360827ba8798f3338471b291fa37c72a1c9505b3ec9f688808fcaac9a2eb494e5f3ea5331d30545d5f21f89559111bec6126ac90b48 new_debug_unreachable-1.0.6.tar.gz
+73c0c94b360f4fc81ff07a13692b2a5b5ceda3a7203bdf1e526facabd36cdf160f0ae8fa479e31a4e4237c09bde11e9bf821aa496311cac8614f9c5626f8d69a nix-0.28.0.tar.gz
+1ffce08dde299bc0e0367ad59c7b6a83e23decfa11115ee076ab91ec53cdd9ef37e4c2103c96eff23a7b6b8b5c3f67c83ce1917928c7d4c6462083bdfa0c9cad nom-7.1.3.tar.gz
+57a890fbc9e5529f7b3fb1fa2ef02dbe55cd619d1c2b50ce286ad9436bf4d4730e58139892c90e9a6387a00065305925e3deef71bf45a0308110f229a21d8c31 nom-bibtex-0.5.0.tar.gz
+cdddf8b6ba8215d2dbb9849cd1696d46f7ff355541341ff85b6b33974b8d25f9294534b76f5b366451a678fbc6e4d2e1b373602d39a69d389c0bea77c4b07163 nom-tracable-0.9.1.tar.gz
+9d3826d6197816b627abd0bd4dc214fc4116399fae1280ec13511e1fa065e3ec257e3f10f76ee33046ed4cc52c993f3ffd25356bf5801628109bae7881e3ad86 nom-tracable-macros-0.9.1.tar.gz
+9c697a577662c3b11f790e4964e0c2bd423ced2442c1dd8d663470f1391353938886664f2de5b337681d82ce49ddf9bbc7aeff5eb7e90a24ffea6dd9bac73815 nom_locate-4.2.0.tar.gz
+a5ad22e815b8c574b42f7b70486a3fac319c24334ade74726ec07b976a838954d1de2d3632fc55ce6c8de2673e62b987fb4607a49c576f60959b1609e47b3771 noop_proc_macro-0.3.0.tar.gz
+58a44759d96c3ec7c431a37d92e1c1a0f112d75fac9651e9fead7a3a1de46074d79a251320b0522891711879da4ab42dd008c5a28a994039890f8d434d215e69 notify-6.1.1.tar.gz
+2dfa90add844b25f2c111f086748b29388a58904d1dd46773d6c4c3cf9613b181def28b24ea974739234ff60d2423c965f98e4be8b330bc075153a870d2b0f1d notify-debouncer-full-0.3.1.tar.gz
+0d3b1da7f37a441cae0bc276b5b9b8aaad2f5a7ddc3a1c9b6c6e09be70147f7430604c74c57a79dce12d32c242393c8031ec7bbe9b1cc6fb6e496d6fd151474e num-bigint-0.4.5.tar.gz
+7884c0c6599c66e40b9a79435e1bbcec60aa7e68b59686922dfab19ccbcac6a6e54f208cfb3d5a8a12e86e4dd67e09977d60b69ef6940e308a28256733f36100 num-conv-0.1.0.tar.gz
+55b951470a07dbce489ee43e1540056123d3eb7b5240903cd348951b81ef5aa5b2b1db311d1219bec8ad191373d0079bf40861e3f45380f8d8132f39d33b4f4c num-derive-0.4.2.tar.gz
+4bfffce4b0b24a49cf3b8617bba0213769c9bbbdf111801915c2c6b524a8c54ae728b2e8f0901d367ec1d5a4129e9d76597f5df1c3bfd65459a02b0dcc84eedc num-format-0.4.4.tar.gz
+e27986d91f6c6dc3d5a0900defe28ab5f47905cde3f84d0914b7acee076dca8fec6fdb7b631ac94d3a31eb01ecbc5854e51afc3187cd1abfa21e1bfafdc700ae num-integer-0.1.46.tar.gz
+0999130db45e5d877d1e2232c8900cc633bd39e749186b2ef4ac4343b958dcc80edcc2247df5f229546dcb3537fd45984a7a459a9bd8f62aee69a0239fce0b62 num-rational-0.4.2.tar.gz
+180018a5eceb45085e4e8d103ff21bb4d5079cea874c42a0ad4c76c99d275d434bbc1cc289f0cdec172866daa89dbfe0871410b2cc3407233fe1129786905956 num-traits-0.2.19.tar.gz
+60eecfe49c1afca8efa320c5f4d0cd794f6adf8924193682c903307f484ca0a1ddb56102a772232aca040f29651bbe26ddc1c4939e1f030e229d179837e06bda num_threads-0.1.7.tar.gz
+5a75b296bde7a01a9a5cb59da98b7599b51c3ccdea2c135c5291ed10af8b1fab46dfe936e43de617328c216fd113913545fdedde00adf22fca251149b22bd6bc object-0.36.0.tar.gz
+4154876afd34a699ee650d1a8a1c5ee5a25f0ebd9388b8bef2564e33629fae68f113d7507488c68abbe7ea1acf9bbc41813cbbf3ef3e464e3f3b9cc7a51d870c once_cell-1.19.0.tar.gz
+5d388d35eaeb4ba4876b5a683010e4e38c7c54abaf15c900681a7c9ed199b6b7ff414aa1d6246153546680eab28505cfda359c3d5df5b9fd3a5cdbfba35953bf onig-6.4.0.tar.gz
+26a7dec69abe1535d575e7db63448abd898d363ef42352605e7b7d046b5abac5733e3cc05b7d442ce67db9366dc96d4a7a82a7f486d3b9af6d298b49b0baa864 onig_sys-69.8.1.tar.gz
+7aa44aedd3fa5a6ed3d60239c23dce4cb7b27693e110140e6b332579bf1c1b773244f12271ced975e53caf68f3f381a7edaada573efb982d2e13d638a3a6dd40 opaque-debug-0.2.3.tar.gz
+a74b68b459a221992771a4bffdd7c928a8949a0e59f0a53c7448598e5b23a0646d1e4072062ececb744f4ac7bfe5cc213dc1cd807afea74cfafe52c61100be8f open-5.1.4.tar.gz
+a1fa9f71cfebbb37ed9d4a902360f2cc95a78f55b5da5d51eef69db38cef016fc03236485158d689ccf054e04937b8cddf88e3f0f31672997fb30c6cac73cbf6 openssl-0.10.64.tar.gz
+57e75c84f78fb83f884eeaedb0dd135ecb40192dad2facd908e6a575c9b65b38a2c93bca4630e09ea5a82c77d8bc8364cb2f5778cbfe9d8f484cafe3346b883c openssl-macros-0.1.1.tar.gz
+7e560314150709a34520472698060c4f29689d4e608dc4dde146140aa690350d3603279c693367deeb0f21ab34ef61956143a3447827a2b7a3d578b9ccd6552c openssl-probe-0.1.5.tar.gz
+7ecfaa0b49cea5c60f6f063fe5217252a65b27c5e6d1185e0aa1bb4b59c4cf9bf326840e8795a870a537c18ee5a987feedaaf2dd767cd6f1380f25468a1622bd openssl-sys-0.9.102.tar.gz
+977c0fe9891c021914153d6a081c3789018fcd1830224f5c6768d0c75ac8ac4919638bb0a41949710fd5e699b162d9290a5379cc6251535a127e212f5b86932d os_str_bytes-6.6.1.tar.gz
+2195750f3e84212e0155b880d34e6ac8cddedef6b445e7e059ea62699d4b9d0e571a3515a42c679ef58242857d48b4c3e7a9b5be359df6481bf864016d8f6b65 outref-0.1.0.tar.gz
+820a2824635d9d9c5645aa9b34bd2600631050f064660525e88f7272fe2f167a5350c4bdce4937a4052f603f52347a6b6324aa1c80cdbe97c9ba3599e0d94500 parcel_selectors-0.26.5.tar.gz
+aafa4bd6f6babf5b8b75bae0ca18a495bf1193f0f7c6856438331472e53d6994d4b6cb9ad99db5230c7a6b0eb37a137465e9bc643d5bb5a9bd699ebc8cb34fd6 parcel_sourcemap-2.1.1.tar.gz
+368c17203fb5b9e4ecfd4857e3b1ab96b86da3770b8f21be392818c845952f72dde1072a10265760a62aa8a1dd65332bfd585667444e5fbb9dbe3280b5862703 parking_lot-0.12.3.tar.gz
+4f30fb60ded274d3154ffb00f6f50ac284b6fb97daebc1a2ac897ce97fa8e2ec6ff30cbdadf3b7419617a410fa7525f30ef5e580334e07d4420f4c0200a57389 parking_lot_core-0.9.10.tar.gz
+fe68e3c696c17732cf7c8dea1090fa1eca092bd1ea817855e6621170b28d97b33e5aae87c5b7a3c76df45f7244b4dd80e6b95d9c1bd51660cf22a9c07b913a50 parse-js-0.17.0.tar.gz
+88f581dadc306585addac8a16fd3bf56f13f6b933689dc6bea36a07d9b283f9c77ed68f4175d676574062b911e3b1220bc82a79fe59ea551a7dcfee91ac74ecf parse-zoneinfo-0.3.1.tar.gz
+5026d3ec7141ec4e2517a0b1283912d0801e9356f77b703d954b379439b8d85e3886d42fb28f7835edaeeac465582da14233564fb010c71425a59c9e1cbd46b4 paste-1.0.15.tar.gz
+c046707586f25f13d2f9fa452ea340198f6d2e6333ca3af806b9d2d1a61d46b033fffad60d1632ec16062fa79a3710d695b923b831a7db52602b728ed31fc3ab path-slash-0.2.1.tar.gz
+a646f271ce81d5f6d4a8e0d98a2c802a8796a961cf8fe8177911e7757bdaecd8b156ff22046f1663a9efcd5fef1e6f000e5509d3949dbaeb494126b7e8a546b7 pathdiff-0.2.1.tar.gz
+5951ea8315e52cf3acfbaa023cb9e13a136b114c54a7da0bd44619ae24cd2159d4a96469d7572a2fdabd94e19513a033387117d7ca81d0eb409fb383e4acda44 percent-encoding-2.3.1.tar.gz
+3facdb4a8bcf0356b702cbff4d314db32a80b33fb3512e52c31114a3f666414a49445a1f502c911cccfb28b7390fa058207570bf9127677815842b4988d1f34a pest-2.7.10.tar.gz
+c63ec4c6849b27946f68afeb0eed6d3f3bf6160bf73ef4228c3303b5b9271e30db8e93d01842ab3cf1ea6a987f33b1e4f55ef4bb62fdf7d9ec32220193ba2b89 pest_derive-2.7.10.tar.gz
+8fd4678f445780cccdac73c51d75a823a9b71c9b9c52c9fd4dca32b2bc4e8a8b33e68d8d90bbe039e4fb2fd9eb8247bcb7911019325c1137ff4d9d835adb0f59 pest_generator-2.7.10.tar.gz
+8c931690d025be0af8ef3ef997eb95d3ebcef47ce0672544a632c77281651f2d0c9c34f1b477426164b169bab638171853bfdad2696d32a90ac22a8bb143cf6e pest_meta-2.7.10.tar.gz
+84568d6d1baa7c4e6faf5f3ee09133e736977286d7cb7630a59a53fc8ea15d0d41b9242f8929184667ce576cc9946da55d1e8bc06e98824f163c91c6aa05e073 phf-0.10.1.tar.gz
+97752bfb44f3d1f9347b4ccfb6fa2fb80b3263d6f67aa703c52ae90d693c537a0db878acef828c79bd4c41e8f7ca0ea45588dee073d12c9bb0f2980c511b65b4 phf-0.11.2.tar.gz
+dab91b53c72a5b9b6c4773b9f16d2cd58f65bdd9fb975257b8d107d4509b44f5ce8b92ab59a60171207e025688cde54ef97c9973c4226a8765f10f35c4f6f1b1 phf_codegen-0.10.0.tar.gz
+0a11be13927f6d4303a2f10bc3a0c986dfcc4bc91c9e885e8912d077e434098f75ff4ed9633085ccfbeb052d573721750fb80c7a19ee1e75fc09660aac2a6c5d phf_codegen-0.11.2.tar.gz
+b6542d816b2e963c169df695d332f92237ba380f49bf919021514a16aef71de8f4f70b9612356db9f345f3f0d3656b2b39a4f34f8ffa8515510b81f1b19cb9f7 phf_generator-0.10.0.tar.gz
+122ee5ddb1f65f386d35e438396eafb7c9f2b1254daa11aefe0a6a45aa0662190c0b7fce32b6e003b04d022e60c2af4e355f995d5ddbd1b58df93eedacb809b3 phf_generator-0.11.2.tar.gz
+ea6acfc43491af1330d32860103ad60f29566f6c32d43bbef254f23da0f17cc3723b1d04153fa41f82c01d3865e0e16156b9d2dcbe6a52532b8f268f3a55df7c phf_macros-0.11.2.tar.gz
+f088a6836a28afca7a2ef5440d7aa953227785d52aa0b9fcb76c88d085fe7f0e68732f2354c9f8dfc0a90ab1b8ac214f28549780e6f32d857ff7e8963093d9e5 phf_shared-0.10.0.tar.gz
+f2cf9e8ceabde75bb7548e5a47dece9a8fb7eea4a6c5568675e7bd735860c3e51181d749a26cd3dcad1476ec22d524ccb77a956dd267cd0f2b7dfb81db9abcbe phf_shared-0.11.2.tar.gz
+f90a6b9f5ab8701718f72677a4f3597c1b9f32e5fa53198b47a94696227ea37815997599abaa6058b217c5b32a94602582c6b13fdb66e2d683bc98921de95293 pin-project-lite-0.2.14.tar.gz
+828422b8440cc82ac6b0743e0112fa7540d437aed457564999092b1462cd7672cd6b1f0201b67075431aeedd3d9c5127468a3dd028744109944f7f023c82fd70 pin-utils-0.1.0.tar.gz
+e4bce232e1e1cbb17d1c08c3de4dd12613f5a5238f831c2a765b6ede9b494e647d2416a7d9a0c926104e24066dd1b38df8df98a6c55d62f25060f80eb33d064d pkg-config-0.3.30.tar.gz
+fdec4ff7d080668df45e6a26a92520f72a3fcd58638238f42603723ad0cac48ea5df41c066a19f6f6e1207263cea02c775495b1ecf6e09ef101ffdc157cccea6 plist-1.6.1.tar.gz
+064a932f4c48c2243286a9b4cdec0487cc976291bc8ecf4753691afdfe43acda4b17ea8d48ec933f309d158df28f40ee93b5b32b3ab5252e2e7aa1ee1c0e4e84 png-0.17.13.tar.gz
+0623f92e4d6ab284b3f6dae58220d79d9185df4a738999d68040c50d72fe0380d70358cb622f079c629bab53bb03c6e085e165d5bddfbeea84245864fed90029 powerfmt-0.2.0.tar.gz
+539d916e7e5869d832045c1aa88aec519bd000227f9b01d4dd0bfc9ffb640d5f5eb21b05eba718174773c97192a655ad3cb31b53ceb914dd19179a6699b3583a ppv-lite86-0.2.17.tar.gz
+a118a98286a47e2f0cf35d2678d0325c18b9b7d5bdf40ceadc16483b282307fd1498434d5bdfa25477a4f420d97c34d786e42e9fa70431b788b4b8fde9718e05 precomputed-hash-0.1.1.tar.gz
+8a47bc9d3e24e9561d1e384d8f5a633284c2cf9b5e6733c5f9d1dbfe1870ccc8e2152482852e50b551cecb68e009148585b910ffb0508a7b4875598eaf8657db proc-macro-error-1.0.4.tar.gz
+2606afa9ec78d7dad4500c98d3a5ecbd02c6b53ab829c742bed7f57b322a95238ab4e01cf268746815f1424fd9b02eddfa30e72f98c66106f57765f3d3116495 proc-macro-error-attr-1.0.4.tar.gz
+54c61dd0581bb5802e077a58fa41f113aa1fab59026478268ece293f2643921b7649844c1675a21a3a21674cdb3ccf94928e5bd069a02bf6813ccc1114d37262 proc-macro2-1.0.85.tar.gz
+3f944c6e219e2410be4b555c4421fa26cb4b6ebdde3058c8c191c12290ba1009ad28f2e021d1d86feb71d29bbd717050a6567a2ef8b40a5d431fb8ca1b03925d profiling-1.0.15.tar.gz
+3cbe321aac42213ff4edae0847d0a5b18cd6c4ff1fac651f0e750ff189f615121cbfba8a0fe5ed58984933b9a671fd0a55120dada664b77efdf4c9d945ad5cfd profiling-procmacros-1.0.15.tar.gz
+9936264dd52ae40e6afc8cef8914dbdc5767f397b91ea965d65275fe547a2d9cde7ccdcf908f787e25f84fbc23a2e30df895793fca308e09f48f2adf2e30d2bf ptr_meta-0.1.4.tar.gz
+15a72b2c36e9d1761c4dd42cee1623c2d85c52eadc3c3102c8334c14c9c5db9a43d74dbbab1d14a2600d789917fcb5bc2652877b172aaa02c37a6868462ff20e ptr_meta_derive-0.1.4.tar.gz
+80e485e69fbf7330737bb35befb41b587bf0e5fa6e04c628e0da77d8383a5a2da3f765a696a877d605b5580f85297e723c76e0c0f6bca0235e83a683f67cba14 pulldown-cmark-0.11.0.tar.gz
+b8244d6c93a983bcade5e1ff699f334aa72eb638b7e4d22cc746b713b1d0144e6c1eac243476362a77bfed37a3a13a6315ac8d57920dadee7d2734f4d96023e0 pulldown-cmark-escape-0.11.0.tar.gz
+cddd35f6d288c863a0790a1e0213004d93b0c2dfdc5cccb22fbdb726b0853f776d3c6b03e2082d76f827c41f9831fed762a6804d186447e18e61f903f827c51c pure-rust-locales-0.8.1.tar.gz
+884cde33bfb2d02716daa5f309890093bdb7b3f53eb06aca0b6eff0b7a66fd67cb8b9acd510d19e3ae7718930add971e871532a1605e4989639bf72f59329377 qoi-0.4.1.tar.gz
+e028deb598466ae91663e5d090606be4f117662d0fa6e0c0b0043c7261f26787057e84e644cae72a45b1a0a7b1fb03fc9712faa3abee94b97ce2c8d25c365c32 quick-error-2.0.1.tar.gz
+5fb06d85f520d628d6fd38e06b8540385d47c9c56d489e2900f25e36b51aa071255e800a9549e147bd80b8e6d4f927841a4b0558b2f40e23213cb292d207d859 quick-xml-0.17.2.tar.gz
+9b1f4f9c32694ccb244938a9a4e9373c3902314afb6af5d2f6b1be55e5ec63fee5cf1085f8f32161570cc10fdd96f3375c7564b1d884bb152542b86593f175de quick-xml-0.31.0.tar.gz
+ab1d8b2dcdcc1ca7b26116556ca8c7b832fb718b4abd7f2b0029ad2066a008864faae845075a627382777c5f1a71b06d1ee94a2cf23e0f1aed014af981501aa5 quickxml_to_serde-0.6.0.tar.gz
+f1f002a912692f7ffd4912ca980ec57ff4aca3a7d9e2e42e9e3409e2105c9f59d86c05719f6af309bccaef2f8843b0848a6e3afda3356e045d8e7cc5956ae685 quote-1.0.36.tar.gz
+51e23cf52997b46c0018a94b0259b29d7bf33ddba19f6db406ca57ee5b1417d7e5f27dda3bb487d0099886011a97f238e8b3dd4d6c86e8464c0b471c1a7622a0 radium-0.7.0.tar.gz
+f9b68ef9446f1ca2c8092c50990f15c1b4cb5529eeeac4df8d69755e0b7253c663c587775e7cb0a7298c31edb444975dda34926759306541f6d43d0d3cf57b7e rand-0.7.3.tar.gz
+8b33a8988906ba5e2057a9a84bdd11f867a5536c22f5056eec59ed4ec4e3a6da2fd773da4c0510d343762e5a4ea0f007db4c4a7cef87a47f90e36c1a84d86fb2 rand-0.8.5.tar.gz
+1e2117442e4ffdd834dcbf0ea1829e73202c0ff9041d5969d81a59330242145f2753f2a56de2fdbff65f26cf0d227c7d08b2094ab2f946b764aef88106a6ac84 rand_chacha-0.2.2.tar.gz
+8198c580b1b9b0429758ffa49cd8138fa3ce724f0dcf73c767ea7e55611d6a2e4c7cad9950896510def500ce4062b594386c947ac3d89425b4e5c9b04d0b8075 rand_chacha-0.3.1.tar.gz
+4f7500b35e165e6c817fdd67a50745d5497d24e554bb554705097e37258751e8755c4d6b8a69fcb5e1977708ba78620bc35d640e4e018fcd4e88d9dbdbebdcbf rand_core-0.5.1.tar.gz
+36c67eb845aa2ccca49d6d680f28d418229bbc5a050729e487fe6b9f9f384fdd7b8d67fc6508b90b79ffb3c26688e72feceb3ecae57d3d7f59338aeb62296f79 rand_core-0.6.4.tar.gz
+bca185612bed5cee4da76fb68fe854105da276f5bf2da464e596d586b925df798cc692ed881e276ab77c36b4b0551930966c93656be122ad05899d87853533b0 rand_hc-0.2.0.tar.gz
+23b0f5827945bae8b3d2109e46d67fbdc85e961a5d3c6a0e0322ee8c568d7b807f62b0b2abe199bc4eca00dd5eb5bca0bd9d509b2b9ff1975b38092224850ee0 rav1e-0.7.1.tar.gz
+01f099fdab28820cc569a08bca19d1b044e357165ee977fe6be4490b20cf7cccc93655cf646d9e90dea2758967fae1c263970d919cf1feffe6b7c5265dc47e10 ravif-0.11.7.tar.gz
+3f628c58f3af3cbd1f245ca1be9c8393eff41112891fc4e676a2b9e26b6cba7cb80d7b6ce46e75bbb65e42fc00c5c0bb6b6a4b59092882f03febeb31f9cca5d3 rayon-1.10.0.tar.gz
+33d0297b682f131c50e1eabc3be583211a5abe790301cbca91bf510e43d6714b7564ca39fab7c4bf6f02aa0df6bb394f386a61320f21ddb6bd7aea1372b5e99e rayon-core-1.12.1.tar.gz
+073ed9d96090cf46eab9877742277a013c62d8da86d9caf2310b4fa868af306511936553579e01309f27067d344226cc8dc5e3aef01d9b900da2febd33848f8d redox_syscall-0.4.1.tar.gz
+b7e39a08e220153370449cec7b058c2dbc4916ff7be01b34658e1793035323ecc28f40712194cb9bfc9b863e4bb316e58662721eb0e54f68f09438bd880ea032 redox_syscall-0.5.2.tar.gz
+177fddb001e14281510e34070f88f8e5167278a46f1d93d9286d9606b7673346f504e4064d7ad53558e6988a400c728e33b663ab398fee12ae23fba7158da5fb regex-1.10.5.tar.gz
+b19d00d64bb8cd833cfb35fabb162b9481716f4b7f6035c1c8f1de4e0f90e00823d006e057aa3505aeda48c9e1802e61173c4a2878891129a3a918727e43b0d3 regex-automata-0.4.7.tar.gz
+10719c138d9aa304106fcbf77da0b01645d1b6fbc621abb639dbd43ed5fc3dbd22aaad8b86df55a60e7b2b4fc347b6f41419131d7b047273e146073250d892ed regex-syntax-0.8.4.tar.gz
+fd5c88d370865870570859a110245e009eba557225e4297783a606227b13b42abf0c7e69a4beb5093a5a9dabac1545afd988f4c831abe912c21ccd8013c30382 relative-path-1.9.3.tar.gz
+2df17191ce710e09927f6d17fa5e3432a154d605cf3b58bdd6a3037d69cc0b017007e23c16526a8879a89cc49e3a47d38ae5f6aca8b42cd05624fd15c9dc3529 rend-0.4.2.tar.gz
+95e5c2e375e345a3ac9d4f4b4fa9aec28f45a457c1615d303d4b4dddb639749995ef2834a6f8659f5f0cbb49e0876e89c9925bb2b2ba62207e393c9b12e58ad3 reqwest-0.11.27.tar.gz
+72491fb2c315ee347c7474e6f9b3d6eaaf1db66ddf163214df8466a4a8ccb0aaaed76fc4c72808b70bfbcdf9dc2a109511ccf8e405e4a006b349030e8ad199a8 rgb-0.8.37.tar.gz
+e4966409a4078ee43bfc9cc659d08ad28419effe2a729c8c275361a7fe0620a3c727009bcfb1d0bab265af2bc107b50c19d868a4e80da7a8bb55f97e8b214358 ring-0.17.8.tar.gz
+8401efd3bd442862b6c4c62f22289191ca9cddab8d67dd6361c9f5722e4265c1a3941be20108822480fae8d567e7b2b0ce1d66200fbc5931d775225e9d6735b6 rkyv-0.7.44.tar.gz
+f4b56d92b529a4b5915799a5de6b4e3ef8d006237b43ac78323fe2ea774a9c14581c09d504dbf31c58494ab2a56039b01ce646e9f6a9798cddfe5b23a400e663 rkyv_derive-0.7.44.tar.gz
+f8a934d3809e417c43bca53478cef0a7a18d908620175c84cfa2cdb8c85775b52cc641fb7eb12c80c483e0c17eb500dd3358ace858aceaa810d3ddbdef902d91 roxmltree-0.20.0.tar.gz
+b9453a0984d41e5a692e5ea1a8a7bc6142de30f7b345a269489b8d4ebe3b3d442e7fe5f338c72a790521dea7a2ad9605c0ca8218a6b76d8bc5e19ae02cf711d7 rust-stemmers-1.2.0.tar.gz
+eb897c35300b87766e6105917a907fca1c5b1f7691fc03c6c1aaf38075ac883a73d1eb54a245d13ba59c7b0f0333d6543e23fc1b1c542fbbd5c750a84660b9e8 rustc-demangle-0.1.24.tar.gz
+84e673ea9b046f7b989d47f2c4505557fbd5de991e6fc9f56a03605d40e0b4ba5427cd566954890153cc033ccbec6c984306634571935bfe0d4cdfbe56f39544 rustc-hash-1.1.0.tar.gz
+717cf26e2ec792b41819ff964888adb265a215d2b6c6e2b7a8ca1f7f793b713b853bba9cf03c2cc88b0f9a5eb1a0478faedbc05526f39bd81583e7b1f764756f rustix-0.38.34.tar.gz
+7e48a990ee69fc298df45d9a0de9b5a33a56261ec3f79ff16065cbae7368705c1f3432b77e3262a6141df68b19cbedcccf16eb271a54202049435c63454186e5 rustls-0.21.12.tar.gz
+bc748ee06f2c101d8e54e8c4555e88c5ca824ac7bb0182f8e49bfe1fc66d418d2a3da8e454f3741697f491ad0c7bc8e924a752697023a191c1bb6eb98c48aa37 rustls-pemfile-1.0.4.tar.gz
+680e3d52f699c9d6200e2e738a4245a5114fc7122546c07d3f15f1e6741a52275061b3e016c2240f1dc3eb9f701f7346193bd82e827274fb73b8e9e0d5af4e68 rustls-webpki-0.101.7.tar.gz
+a9b2beac778ec47e6be303148d7512ee681bd2361f6e4ac6db32c8b4baf86a8c5eb5b0d02eacd6131ae88c7b5105c57018c3050676e0b3dd1ed9c4d2fd650e84 ryu-1.0.18.tar.gz
+3ba35309742c8db63210d9ea78bff4ecd80471d69e6238eb96c7bf0673814f221e2d838fe6311bfc5a0e71b4a7ccba33e07859c0b9cff2171969ff08a4214a7c same-file-1.0.6.tar.gz
+dfce25e3b8bc09d8dd1fce2783fe02ec83f74697cb24aa212ef9369a628685ba488f821cb3e5f863798e0e59995038c8d748f74b89f7929eb8cfd804d5066b84 schannel-0.1.23.tar.gz
+6247719a15fe1e4e2d179127b9a934bd2f99367724f41175ed9522f58824b6bc69b35002eae66b35880375ff61d77ac43ddaa78cbde7160a35183a1da32d3fbb scopeguard-1.2.0.tar.gz
+6030295b3b11411f5a7e518db1066282bf11a279c27414c5e959cd430e9fcbb7358e5d69bcc68c8bf696d4c1d9579ed7218b7f9dfbb61de2271c4c3d3316fb7e sct-0.7.1.tar.gz
+4d9111dd2e491c7f6d49e0b79a3c23628c02d6603ac46e88ed137ca737830003b549ccb38087679de2cf0b02a53065b89f8d79e0ac9ddb66844d970cc6383f8b seahash-4.1.0.tar.gz
+7a1a1d1b807cfcc0c87b27a13aa0007d5c29560a45f20963cc84fc705385554b969b4062c7f8b15fe793291ab624fb2a5257c05d140c53200c2eb344547652be security-framework-2.11.0.tar.gz
+e3848a45391ebd98026ecafb0777852aa826b465613ef184cc33cdbaa75fb91053d46d417dfda6398339abd3b67788a567562e99b3c509b676b7ee5a4372acd8 security-framework-sys-2.11.0.tar.gz
+a8d302589244e41f6f675e8d199b2532b29f62b63e45aee141a93dad96033e4bbb27ed01c11e329ec2266cdcc6f2a40f41dfc7d1b9bada69aea81d35d2d82cec serde-1.0.203.tar.gz
+b2aeeab33395ac11ebdbd922fcdbda29f2592e7a20e78aef250713baf269cacf497271be7aa407f657aba33da132df0e035be046fef070f915f234097d1dd392 serde_derive-1.0.203.tar.gz
+363443af23e8e03dd17c0efc94b376f0d89b596c74d70d0437471e78bc20c6beb61da59404ff150af52000162f6df728ce73475feb828c453e58ea43e66ca056 serde_json-1.0.117.tar.gz
+e07254723645c80d10c1ab9a7282251fcafa0b5144991568b1b1f85e7c8c8bbd82b5992f2ed73fc7a988f6a0175fd79fc927c6b28b7420e83269c3364d7ead4f serde_spanned-0.6.6.tar.gz
+b209ad01b6565e95c1d5b431a3f4f8a0df3d11c2a06a44123048bfa4b34ebb6807eec593f0c1c89de3a06ac3786a14747df9c70b4f4d5e4b72b4feb53084eb60 serde_urlencoded-0.7.1.tar.gz
+64329436d18bc3b1a0737afff7c8727f7e04c71b2bf6022f597a45f0860fa3a678eac688f61f0bf7a7846f98809f427c9907625e1d00c8691c383043c1cffaca serde_yaml-0.9.34+deprecated.tar.gz
+65ddb7bd8f0157d134e70f7c6d6abf7aea198cb97da17b418a265642c5930b8cbd9c8e0b97b557102787cc842cddc93213d669345c2aaac6a1e7146765b2d5cd sha-1-0.8.2.tar.gz
+3be73133a6b7690e14acaead47914dc92395dca4191fb657a2ea186fefd0ccd94d12a1121d63a26027d9a9c62b775c53202473edc461587b9dcd75472af77785 sha2-0.10.8.tar.gz
+f8c856e100fe8761e13268a9c8df5a18abb127dd1e46c22044e19b3816c617d8e39280b2a0bb444fd14b3cdf13d3e44c8201fa2a23a5941698137977391f8db8 simd-abstraction-0.7.1.tar.gz
+2976bb7fa153854ecd0d68ccdc108bf81d5da374839d53ce9dfb27e80d8db258bb817ea3dac73921e408541d75e2797b6d20fa63c42c1e8a935b6d75dee14bac simd-adler32-0.3.7.tar.gz
+20577ab7615f955ee3a88c617630fc6c88703d455629d5b3838a551baebbeae8c64a2587871ec5a4fb6bc203945cace50593a238e4765b5fa2313bac30237ca7 simd_helpers-0.1.0.tar.gz
+9f821035e147c035707910227b51e01d3f761ab8b578d95a86a776b2a4da01bc4d8ef28df7ea2c16ca125a2699d8903b826ad07a5937728e33dd58753ebd704c simdutf8-0.1.4.tar.gz
+7206380b6e4eb496b1dddc4501ac03d716bd6b5228971a35ca71f507940e799410dffad7e50e52c6f8fcd43c570ecef23220962fb057100665343498a5ce118f similar-2.5.0.tar.gz
+601121bd41da896142dc6ccc74a6eec3ebee3e976857ab8b5d21e915fdc8bc6e979af66a489c406371fbbbfc7a13338cc4b3744aa981206e43c53998f3e1699b siphasher-0.3.11.tar.gz
+b6b5423ae026472920f7c9a4abe0962314140a36dc562c0a9e3fa60725b2b8b7a8b343110d9d4c0e18fb318b0103e14c0ccbc9ae350d5563a5ac80c35f228c40 slab-0.4.9.tar.gz
+7ba0f946e60d2f5923cb21ae044dbd2c0e128bd77bc5eaf7171eb0a53584f61ac472bc937d8b600441d92aa6f916baa9797439c992e3a7cd6530243e8cdfc9c4 slug-0.1.5.tar.gz
+a97c758b668e40ad9eb572e65feeae4954e09200a04ab92e26a13b48894381cd3a3d2571070c4b7a5e181182e1ede9688f990650342ec69ecfe1a264d234c679 smallvec-1.13.2.tar.gz
+ca37157bfa970cf3cee8b45c7fe64930becf2ffbbc309ea4613be968400279b70edd084d159f65b76fe1130917312d81455023c0d7c1bab7a59c79542aef9dcd socket2-0.5.7.tar.gz
+b15ad66ba9b308937f34ea166b799676fa45c67224e10cb57530fe33d2a8317ff3e3db3223a3249fa2862cc141c964d2130d3f39910a86ac5ef8aaf8ff4bc6ee spin-0.9.8.tar.gz
+a13cfb22723f1f2cf089b2d07d657846f50c37bc0438d1a76096bea30214cad226b7a422c21f9e191ce87071da8a141d61882aedf9e0203a5fffdfda86a5fb03 stable_deref_trait-1.2.0.tar.gz
+03f9cdd2c01c0f233284851f17eaefebd68a91ae2ed2b231fab2d6d6476bd19e0696d7d3a74fb6ecb2ec36b89e79ad966ab73051255c9e194bcf9c5029fb8479 string_cache-0.8.7.tar.gz
+01b9b1a865878537f657adf908159fd04f3f2ba4e70f8c632b73d0ed5a8a09fe2bb9ac8ac4397dec1f50d771dec33fc5d3f9e68dbf80cc177118665b2c67e864 string_cache_codegen-0.5.2.tar.gz
+78b318532addfcf5c1ccc1e14539e258aab9d3cd893cc45d82342549bde838c177d90f13c560671f8f32929af47d0b467db35e6876bd7697d8b3f9e055aeeac1 strsim-0.10.0.tar.gz
+0cebe0155a92640e56db9a599ae62078cbb32e1d2da8bfa67ed0e8f410a7558dfcf7b3c2720ff5913282e291ecf076aed9fe9bf84c8d44e814a642b1bed3335c strsim-0.11.1.tar.gz
+49212066047848e5289969614bf9a763f55f6a1cc746a1c0814d0b5246fd0c41a69294e05860e1aa27d732a3085df45c16791e6d956249f5f3f7201d1d18f6ce svg_metadata-0.5.1.tar.gz
+12816b9e8cf984024b2fbce9f0ae14cf94d4d2c06f08cc54fb793ce78770bb4cc1288eb7df0ba5e8e937756e1e8e295c53fe07a0c5dde1ea8ddba03b6203b37d syn-1.0.109.tar.gz
+60a617bfd37d74c52e4d4d63ef0a27a2f9b982469a6926922f2f6e96754a0c66affb0847b9a44d505c053cbd788b97e998efb8d1e558ea00ae4a0b7f15bed9b0 syn-2.0.66.tar.gz
+ca7cd7a6dd242fa420e8dba820117d85b1b11ea6a9fd99c92a5a260f12263cac0c034c9f9fe10090d5830fb5bf5eefc8a5a0d0b5a40f3f809d69e5393693d5c8 sync_wrapper-0.1.2.tar.gz
+09024193b44fc9a8901bda845b9f86c57dad65d0f53e309b2e7e968538fab6f67db1c86e5e52a2eb8fd116dc073e3ad10983bd60764662ec6ba94fee22a958aa synstructure-0.13.1.tar.gz
+52780b693e484da02d773e9cca460e6b20d8aee436ba96c2e965a078e24b88dea35a03e692c5f7e3d02c82477093a592078e8686a6c9ccc7a2df9a6e20577c2b syntect-5.2.0.tar.gz
+af77ed5be890e826b9b8f975bd2e63f3905adb24a597069a887ff2a861820f1ed40582b918f35c3d4eb063800e179b93e5acd7d5b48b147e9b16e3cf4c12840f system-configuration-0.5.1.tar.gz
+764168ee5efe1ba82e847ed74a14d1f5f1892735e98657c3ecaafcb4b405d4f779592dfaade252f6a577ca2cfd5cd5e467c0b6326bbdcfa573c3ab01cdc8fc34 system-configuration-sys-0.5.0.tar.gz
+a81020d5cbccab3c618f17d691d76a058c634ff9e3615cafdc95ec002d8f1533586ce9ea1ad5da8ae3945be7dfd3d962cd7dbdcc95f0614ed5156bfb3c6c9c42 system-deps-6.2.2.tar.gz
+d69ff11a46e2fbc276212511878f48eb93640c0b147df6578ea057b23625f9366a7fc3926693fc3809688537af5ca919c91605beed364decf83c35a032310995 tap-1.0.1.tar.gz
+547d4a10cca5b593a04e3775bfc175a3a4de27f3c4dede305c6d50b63b4eb38152c6f06280098f14c4fadcca4cc9aa98626ea50aebe9bab2cb7b7f4e0c4d2b92 tar-0.4.41.tar.gz
+3410ecc0faf854f49c41c99f83972960e67065b1e0e78557a7c4996d996109bfd167d2121a019f5256f996c896cd45af032038ab7918fdcc6ee6311693ce951a target-lexicon-0.12.14.tar.gz
+bac7515b85b0d01ea914b527f0fadd3a4d8e77c9eabe786977d2625d8a3e91decaec502dd15bab4d49a43597fa7cf7660fff4be1b043112d13b542a72443bf39 tempfile-3.10.1.tar.gz
+53f074aec6e59717fca280b1764f6c2e0a1c073336f48d012ff268a7189697d42d24a91a6a549c7d9e1fe8b0006e34c219f4dba3cc95247d3905c6f8a6a8186f tendril-0.4.3.tar.gz
+1bea8153253c1c301077bda258bc88ff2f4092efb67066f07b46754df00a01908e5aacaa41df089a73d5d8ffc49e518b6d0312a7d6846d5b548c85298bde6150 tera-1.20.0.tar.gz
+b66aad157c4fa2985f764321d157dfb1f0325fd633811870db7919b5579bf7bc19fefe99e1c706cdfa67504c37dc2ca3d283e11d1bb516edcfaf1eb7747a778a termcolor-1.4.1.tar.gz
+9d6836759dcd71a61ab4e395db7c1a75a14ac3102a36c39b09868ba96d28a2265d8ded385942e55cf95dafc7f4b53fc498b30b6473cedc9b558977878e831b3c test-case-3.3.1.tar.gz
+2c58aa3c9051b99c269168d5d321c73314188501fd33170a8a5d44e860354f5a399545abbdf50478a43d13e15ee9ed53d4a9c800b263a5e42b97416f96e2c0e3 test-case-core-3.3.1.tar.gz
+3383ad7fa23f09b3289e2beefb2a2ea6bb7f7f48d71339b4c1e613c4807e83e4ab816b1c36369524d65aec7929064d2951c758d9c88164e7792a0a46fbf2d933 test-case-macros-3.3.1.tar.gz
+3a8d2036c8e4b88866d68b8066a2991756f6bd4ac5c726e63fdffbc894fbdc03bf8b6e0ece4b96684c8e1facb6413190768d51a8539094efe47977c120d31f1b textwrap-0.16.1.tar.gz
+9c08b868eaa47178ee60733aaeeda60dc46d58d2b9c15985ba3dcae4923e8edf02b97556df52f508753b0ff52782f6ca3227e9ef6343066e5d5d3a89e03f3f15 thiserror-1.0.61.tar.gz
+b43bd2ba6b751b777e2fc78aac92a3e662a1876f704625c4e894019fc68a6b7628b9c3b7ddfbd2cb15fe6fdc0ff679ff94b0c47e2660a40919000ad2fe1cfeec thiserror-impl-1.0.61.tar.gz
+82419e671c6a896f1d639d46a3c5a019e3bff6c75d961b838f5311e5ecb31c3baafc5f88fe928e88f6b3b31881a867ea4ca9905f43e3e24f77f183260dc27b93 tiff-0.9.1.tar.gz
+83da6e27691d1f0ef37ed276528e927686a06dab4811b6e29d625ef7a0f7c30fbb86896d74a2b087726e7a24a951b0a83aa1f5f22d711ead54f447d36ac47133 time-0.3.36.tar.gz
+3861724c23cb806829a01186deb5217ae8252c20af622975264e6670cff528f42155039e4937756a9eb312a5580ffab07949437d5504d684a0e70755046cac52 time-core-0.1.2.tar.gz
+557786115add272290be8305ab79c44f5b4425b64eb698492fe300f15879d9e013c66933cae8aa8faad9c109e2917e7a0e43c8a5eed7f4b0f0fdad092089efe4 time-macros-0.2.18.tar.gz
+a33051848de248cac0a2d151760a78cb3aa62c787d84ff7aac38b11c0660e9188e4d43d43a77fb8676e49ac6102015e9c3db057848d809e71981851875d0fb25 tinystr-0.7.6.tar.gz
+e5acaf353c58c60ae5556130a934f1048abb79cf6668ae467d308bac44b689d8a9997227ea879f4b5fe50f29cde8761801b088d7149bcd063b973056c381921c tinyvec-1.6.0.tar.gz
+10008c7b3a3d50c94b9c370015b76ee082f5dfb6dcacf014dc2f2dbe92f903618d10d0202b21f48fcf98a94ae76fb712db55a5e8ad353645d378cf0e6ec74f7e tinyvec_macros-0.1.1.tar.gz
+4bc16fe979f2261cb17f007ce8ebb05b915be79c1000c5c429744cab01755b933908aadba0005c84faba6bf5d486ae6e3aae6c8f9bf0d6a5dc0ab6d0390ebae9 tokio-1.38.0.tar.gz
+bda2e77671e030a021f628ad760b3fbdc26e7483a5f9ef6c6892ae0fc38b538d52d527805c020d578079896d50fff0bbc036a87cc91604904840d5b7dc181914 tokio-native-tls-0.3.1.tar.gz
+93098f34d117107214e2e80e0e6c030423850ba160d1858b5149c165643700d308dacef7723e45b79fc911ba13bc1bf363c89ccac047cc6636e48a9a5a9502fa tokio-rustls-0.24.1.tar.gz
+09956fc3eac8587f48cc739370883b96d19eb3de19293d240396b64b187178adc081248a5ed3d15accf97c27f9aabd0e6a1e3e2a194f330a0efcbebcd5055360 tokio-util-0.7.11.tar.gz
+eddb82aeb8fdeb5436579292c6f7a64a90a2c7bb54070beb437bc7890b99795d0505faa8d6451a99e8bcf440f78db8a1b273a697c8ad44275cc4163a9ee49317 toml-0.5.11.tar.gz
+31af40bb5d8a172f45b5f0ea7f089862cfec57bc9bcea6559932b045efefe9e8be349df24f55d6ebe536f414fc35950f6545a4703e13a202212eec9fed6ecf62 toml-0.8.14.tar.gz
+710182bcca90f0d830423df41ff0f8e7bd10b866fd7ea1f6d37a315c7b4732a3b6fd61cf411b28051959034534010f24e250e10282c4e5a2539c2858f447aca0 toml_datetime-0.6.6.tar.gz
+fef6ca35315482f635bfe35c2c6753d09f9bd33681d8f032f448fb9c6f494d30fc5789d96f99657879be9fdd7b35a640d52fce7722fc6ca05d8b9d5ed91903c4 toml_edit-0.22.14.tar.gz
+f4578421603067fa708c4ad9eca5ca096b5262b6d51a404f37d9fbb6c64f027cec6114991e4b7f8324cb756c033971a384f1804add28e00d0cd6b2ee01d9e005 tower-service-0.3.2.tar.gz
+5622188a45dddc0d6d3a8244a9b12db6221f4180944ce1019d18f4e613e4bd113dae5d45fb57dd0754f6e8e153b047cdf00c8f200782bb2b868bc2d423d99275 tracing-0.1.40.tar.gz
+164f79cacfcca533a53b7dbbdc2015aaf851a16e00c72fbc4e5f515b6a6dedfa464e964810009b54f08cbcdc5a314e50245ac7b1b01a71fce4c63db135bf5521 tracing-core-0.1.32.tar.gz
+433db3c52f55d78220db414ef6a7367791dd66eac935f41dcda85ec9200f0eefeab6e8342e70aabe35c300069c0e7b7c4f8d63a2334b52a081cc98416371ef08 try-lock-0.2.5.tar.gz
+99773d5d9f850c0602db4bb67dd062b0ade6f086e155216f1bb2fb6569461ba7e1b7c2f2af81ea8833bc3bfcf3fe5033edecb7c438adae63f59d3e30cf63a508 typenum-1.17.0.tar.gz
+00d9732797029c16d84fe518b2d90de841b87b5ed6c3628b9f097f5340f1e50778749db18f22e4ecc513f53624806ddc3484e5cc9ebffdbb6c0c800bef817e95 ucd-trie-0.1.6.tar.gz
+ef969968c61eae6a7d68e6ccb0b40f6618a69bfc4714b51bf4ee8c5ec4532d10b9c6675a4cd5121c904a578ceec7c6471d1496fedbf121059f076ad1c5ccb70d unic-char-property-0.9.0.tar.gz
+bb0ede1695f4f016bdf9ec83bb49639527248c175c71d24993b8651ea6be0a411251ed8518893101dd5e96fd2913cf15ec27799c677ddb08b8e408da06ae0ceb unic-char-range-0.9.0.tar.gz
+9212f99afd4c694a3a671963d63e5349f81adde6d5f50c92ec39d15e7ee24aa91eee63ba578a857c8b21380937860968a8e13cd16bb0ee0c0ccd96b3094ad155 unic-common-0.9.0.tar.gz
+e006351fc040df380947ce60e057e130180a021dd4828c6525fe974ff2af432f9cfa024cf01e0b445fc6dab510b34d612eb27412831b1628867433a14f16587a unic-langid-0.9.5.tar.gz
+a9bc573585c4fe456a42c5d097a0e74748f22ca6384317a61bb50f428e95fa3ab164ffc3f9e16634f1fd241b6c2ac892fde089469e52ca8c27766e86b9d35f33 unic-langid-impl-0.9.5.tar.gz
+cc2a27459dca554a78ce24fee42f0e4d0fbac37c42b4c5a1275f9e3b412cd1c813a4b4864857ddc33b549d99f10c9ce9c277b00f9fa7d93f130f5e47106d8fb3 unic-segment-0.9.0.tar.gz
+04aab71f97785453dce7f561acfb2382a23d60a68735f3664577015a256191463dd6b1f90694e4440c4889eb9b6380c16c7a0ec2dfc2d49fc44a284eeca43c09 unic-ucd-segment-0.9.0.tar.gz
+153219ff18be02e23ff3dc90bba11fa8c7cda11b972e0d84500d9a0742fb7d84466f2cc63ee278a24098c39634e50742af3317cd942f4ea882ef5a2a8e003d7b unic-ucd-version-0.9.0.tar.gz
+c2b05a3bbd8996e1cf65d7458f5ad95de9797c8349484f8db04967bde15c1f057f62b2f7a60e7367871512071ed5076c0da042169dbbdcaf4d6c16cae62da828 unicase-2.7.0.tar.gz
+bc1824e1e4452a40732fc69874d7e1a66f7803717a314790dcf48867eba34bc9441331ef031e386912e52c385645c25b6ed39d4f149973b5b97371b1b96b1920 unicode-ident-1.0.12.tar.gz
+4914543cf022680f341c4a235f6d9204b3ac9a9098f34a80ee8c94e3d8ccbb82e78af016978eda910987533044593ac629a35286dc80707d349b33e405e86bef unicode-segmentation-1.11.0.tar.gz
+a42c95eaed1ae2e438d3ba19ccd92337327c34f6174a43db80e1f37c507154249c7510e93f81726890c6032c89fe21b1876582afb7fbb811e3931480c4727712 unsafe-libyaml-0.2.11.tar.gz
+5929e4079c1c2ff933ae8d8f59a2ecc7a424e71a20d1b8821f75925af68bdf82604b024c008e5464b02e25ff093e561a352b685e755b3d0b27e4c30254689416 untrusted-0.9.0.tar.gz
+1ba5cd14166517a5114feee1f7d2ae7c1d2763a34c0e331171f9cc07fc35bcadbb0c87318533fd07b4c01e052abd88ac417fad7f898abe62126919e3f02c0528 url-2.5.1.tar.gz
+6bf0787cc297a1ac4e47389464d05ef6850602f549621687e776618bec96c1f7bacbb1ac8faaa63e5d28d975b850db8d6c784eb66e2466128f0521b91c14015b utf-8-0.7.6.tar.gz
+44dcbc5a7db149392fdaa31862be240f78fc5d7616f54be32cfc8f3adbee310e8681ae1bbe6edaad8a7fe6e7759dbac8ae4f69d0dbdbe5350c21dccdbbe975fa utf16_iter-1.0.5.tar.gz
+a72671995b3eb295581c60dc632e4a25ba257227fb5d58a8bec322428b6d69529bba79a6f02b8e7ee6698b7779d9d6695f5badad73e07c254b00c9d6256c9090 utf8_iter-1.0.4.tar.gz
+f3dbf78fe924f1dc3cf9498b6e43fb10174699463f31091a7a8136d8f31ec84fc00e80e3d8551b7e86257e8b3573cfddb56fc0de797fdb2cde0e962a8f239266 utf8parse-0.2.2.tar.gz
+fe254f0bf6b863538ce568405569a4c755b33bce561148661b10985bf4485fa7ee7a6ec650d93656552b3cdead46b2074ebfd45b040edef19cd1648300f68ed5 uuid-1.8.0.tar.gz
+4b42945193b5fda130bb54fe36abc6ced6b408a15d80352af21b01cb0881408d4f5127f68ad1b1dbb513358743ca8655545b55f45a2299de01f51071569f13cb v_frame-0.3.8.tar.gz
+7322a21e8811b2fe4e79e09dc321458068ecdf1953f05d36233f3278ecc0b1dfc64194db7010dd46fcf692285f42475beb090c6c6cac0c8f9fe0eb5c770e3172 vcpkg-0.2.15.tar.gz
+b799c1713d4bf7af00f9c6d562d39c5e916f37350c2f3f57119277725b81c93246d0b1410d4ee981694bbbb731460b6512a813fdde1cf25949cd45fb3e70bd6f version-compare-0.2.0.tar.gz
+b172dc9a3759a4a683ffc39b9a40b03b9974b626a088217de87090466cef695226557c226cf3e469b2b25ee7297b7eb0d7719878cab42457f80146a81943c0c8 version_check-0.9.4.tar.gz
+b2c071a4ac3669cd469b1fb52963aa25ef268bcd02d45470e9533eae5d93478172798ffc5c25079bc5579be6fcc43700899323808006c6bdb6f9c665bffb8160 vlq-0.5.1.tar.gz
+da36a121dc6656942dc9cd9887fcf4f6eea7750354ef3f59c7c25d836e7afe06f33260b4d55d0d99421104ed4ce56ef2a1f0f4c3b713766fff90548c21793fad walkdir-2.5.0.tar.gz
+f93f765113f035e134b967e8eb3f4511b8e03e793a47899b614d826afac02348fc02865c298a10410ecec4eb64f35f66c22bcbdbe36ed0c4c1665dca1db4d526 want-0.3.1.tar.gz
+043500ab28cd9cb779475255da5d109ebab7fccca72b64873dc28d77bc5a157ba8d96b9e8f05223b5b36c7089bb7b4ba87657fc69bac16b78972f897294a865f wasi-0.11.0+wasi-snapshot-preview1.tar.gz
+dbe641f796ee3a5daafcaafc911ecc6dff170340f477c2df7a61fb4858a85aefc2637c9e61973ecce66a987aa8e08a736273a4aad3ef47eaf61ed4268dbf9c47 wasi-0.9.0+wasi-snapshot-preview1.tar.gz
+6e46501276c0d4befbf930c816d6ae6c3764e3b5ce0ef4aafa627a6ea371f1a056ecc15970a817e9e9bf51c0a2ffa57df427d758b2d367beb6a474d75b8939a5 wasm-bindgen-0.2.92.tar.gz
+22e4f5848d62bd1fd55f4f054ea1293e223b3cd6f916bde2523eec10388e733623492c3a3246d61831e696dffdec5d000b95e9aa1217be6e38dd6459872166aa wasm-bindgen-backend-0.2.92.tar.gz
+0a77203499381b6bc4e9258480d7ef499d9c26b195baf38d0b7b228872f844d24c827cd57c8e2b0176927fd5957428084f53fe80cf60b35b7ba02d02b27a4682 wasm-bindgen-futures-0.4.42.tar.gz
+78d2ddac88a9ca3ca5eef8a7af81cdf2366187a67d844e69f65f6893d1949f9723ab5f2be762c2217a5c21aee2f3dbc2d5d55ef0c9cbf0dec0d52d67a6ba7462 wasm-bindgen-macro-0.2.92.tar.gz
+92543d2aad0b25798ec20e68832b823610c2c01401088cd9cac1684a86ddd1b567b3e2712acb862060f9c645a0df509b01d9834fd3e13cdaab97960f66d8daa7 wasm-bindgen-macro-support-0.2.92.tar.gz
+70e3a22731ed8aec428433bf30500eb3f62e3b7f4f1be34d8bb3b6f34f99690fc85d49eb413caecab807064494cfec64242c6a42709dffd638046e370bf86e07 wasm-bindgen-shared-0.2.92.tar.gz
+78b79ceb6a47485c766ad660bb8b971ba549424542a020c35c7db64a19f7b161617e464eaea0602f433b6ac4973b8d1a86a56e76dcda179ccea60aef1245347b web-sys-0.3.69.tar.gz
+78ba3534a46887d899a44a287c6d0d3b799c7fbb8efc3505e159563daa182237610419ff115952bb790164395faa349ae817b05c93061a70c5931582c5d64657 webp-0.3.0.tar.gz
+4891aa5c6a5bb8a4d6bd730fca5ab5bbddb5a39b9267c81951ca8d3ff0dbcd305b498328f99b2da79ac65cdc9dfa42c40631a4f8d6975ac6f4ed9c85a8d2178e webpki-roots-0.25.4.tar.gz
+6012de47d6bb5177820be9794e70ce6354577247750b8a125dad1d3e093d96cacba62471d8f67f056a72447bb6bf7fffabc6254ae96d93014a5200c71d571c97 weezl-0.1.8.tar.gz
+115e6f027cdd4a56f77ca24f4ab249d2a6cac1e1f955c826a9b6ee05db4861790a533f5e674aebbb540370fff52ed41618c2cd7c906e73200e92df213109cebe winapi-0.2.8.tar.gz
+ff8b7b78065f3d8999ec03c725a0460ebc059771bf071c7a3df3f0ecd733edf3b0a2450024d4e24e1aedddaecd9038ce1376c0d8bbf45132068cf45cf4a53a97 winapi-0.3.9.tar.gz
+8b0a239e205a5368892f41c870a8a7ea16e3468c364b03382bef7fa3a2e7159b09c07661e95b1227578f6d72c14879daa4444b28c51ae20ef15d985d59ca5a77 winapi-build-0.1.1.tar.gz
+a672ccefd0730a8166fef1d4e39f9034d9ae426a3f5e28d1f4169fa5c5790767693f281d890e7804773b34acdb0ae1febac33cde8c50c0044a5a6152c7209ec2 winapi-i686-pc-windows-gnu-0.4.0.tar.gz
+e186111398f9f0f0686e791ad0d72c39205e5f246b6e020df413e477ee07f32e91d09405c61dc92752f061f54fd7533435545c1a151477b40e2d68acc94a57fd winapi-util-0.1.8.tar.gz
+4a654af6a5d649dc87e00497245096b35a2894ae66f155cb62389902c3b93ddcc5cf7d0d8b9dd97b291d2d80bc686af2298e80abef6ac69883f4a54e79712513 winapi-x86_64-pc-windows-gnu-0.4.0.tar.gz
+0c8f1c7e63c11bdcf1361150ecc83abbfba8da2c6d28523799bd286bf8aa1df61ffed19175e8cb3ef516a9afb6248b640c2101a2e0c09a99bfd7a18c6741bd36 windows-core-0.52.0.tar.gz
+bdf534bcf3face31e9ebe11427a911a53f89f4ff5eaea8cccd094e139bfe14b2aec602b1cab1df774794d999477439d9adc6b627a8e33c20334fc348ba2c47ed windows-sys-0.48.0.tar.gz
+24ee0df246c2b456a4987a9124786a28acd358768cc7d1305bccd81bc5bb8822b81a03fb18d35174a520b911c6d9b685f81a34ab319fee13da3b985273584f03 windows-sys-0.52.0.tar.gz
+e079eeef255a046be7f8e6a31c14f7b230254ebcf05eed2944827bb3d2a0dc30940d87593cf544d5e7ef35f6312b99430efcfb01421d91b02bb9c4bef7d98709 windows-targets-0.48.5.tar.gz
+d00d7bc7eec3c10272e803ee5c9ea0d9b07c43311124dae975b4f5aae7408c5f2ccb2fe6e68228ea3d4e70b6b658382cac6992ea177f43a9cba2ef95c4fda0ee windows-targets-0.52.5.tar.gz
+20158d31454488f6053d3ad7b97d7fc6eae6cf37e4ba0e50c28bd29b368505eed64199ae31104d5f97b66846be54e5ed25c0ad31ea850819205c573a31ac0996 windows_aarch64_gnullvm-0.48.5.tar.gz
+b4cf511025458fe30d5b11368af285610e1654a8986ea9f78fa81b8bb87d38a00c4869441c62692534df66d06baf14c8a4d17f8eb06468eb260b99e2fda6439d windows_aarch64_gnullvm-0.52.5.tar.gz
+223f016c6f1a44dbc5c8a8428b39438f75380ea06951b7c26ed0877b19d79410c6fde5e4c7f2c839b6e76159131f39a1230e0e3a208dfc425ba9117e3665c4ff windows_aarch64_msvc-0.48.5.tar.gz
+c8974f81e37a43d92c4a8b142705e36b7acc58d9150d80ffa3997433da878044c467a2d9167ba792d37a183a0082d912500fea8c8fed743f395b63ca62a5758d windows_aarch64_msvc-0.52.5.tar.gz
+931ba5c1e4eb8ae73248e00d9611298d1c4b4b0dae719fdeb9243930cd420a103a7bc2738e0a4887c42c8f25728d6c5d64ad141dc092bc3f1d0f35dbe37d303a windows_i686_gnu-0.48.5.tar.gz
+cc3e0362fb62dd5e8a855bda3be0177708ec8629ee9685f1f9aaac3f71a8cb082387388bdf49b09d3f5ee24a636b0b4f933d2c8bb75db434ee0192c8ce0547d2 windows_i686_gnu-0.52.5.tar.gz
+da45c882248070911bf55698f62c245cb081a23254cdcf578df053905adb9117454235e52dcf1dd97c0d2248f92ff1d2fd3e18844a7be8d93ba08590c1eca22b windows_i686_gnullvm-0.52.5.tar.gz
+70e2fb4fdb006a4cbd43ab2c7e940b277a15fb1790dfa2d1fc1f1fd18bead4886f6dc046e44326603e4894d988578917b8932aba5d9a6a4cc8424911cad9dc7e windows_i686_msvc-0.48.5.tar.gz
+08c96f8e9385ac121549bae8ed228741b32004be20b2955d163a98d4b62af464f1682cb813681fa22823d20646f19335cf0a66203a876b105e119e05a4db0634 windows_i686_msvc-0.52.5.tar.gz
+1d6056fae430b3d042bdff3c6217c76be4b8b9f5dada9bad06beaac2db7d7ab9b0a82e44f498ec88e61afa73e99f56d84d445dc3847732b9ce5d947e08485f74 windows_x86_64_gnu-0.48.5.tar.gz
+d9bf91765d02d2727344e42081f4bcfa73be97991495126f7e633f27e56a261ada3a8b865a559cfe71f9bc9aed5b14504f89138796766937b3521009726dfab8 windows_x86_64_gnu-0.52.5.tar.gz
+c016d5b5e73832b61ff67929d92fa8c16e154656294357266ad29ce1f44db4ca2d2935dba31a6b571187dc838b1d22f1e3b41fefffd1d719a338439adf1646aa windows_x86_64_gnullvm-0.48.5.tar.gz
+22a978c40df9705cd94e4c52f2b706e477e667b564c608d0adb144b38cb486c279c09d1eb1dd2d6c7bd3401b75a2dc5eafe0f7d642ffe6453f394d1f59483a08 windows_x86_64_gnullvm-0.52.5.tar.gz
+fa1c5cd14ca2ff0082e2504cf59d317dc4dc6f7138d35c12f95d4476a9c13d8b7f5537d0ee251eee7c99411ad31b22263171b7fbd391daa5d3ea3488ceaa61a0 windows_x86_64_msvc-0.48.5.tar.gz
+81176090dc725d7fe3867e6322fdc4a4065168580847b35e6f8da345f685c4f66a81e35cd1880dbaabdd4cdc82446dde9d6a0e583cf0b7fe47dda8bc8002f1c6 windows_x86_64_msvc-0.52.5.tar.gz
+a8a94c26afc4cc4db6ec2e65e7bff325fbe6816d4a80fb97e2014e202af0f549a77518f0435157985822aa9fd8642b95258b6cf87a9e695f4b9a11b5fe514d86 winnow-0.6.13.tar.gz
+2f52a9e3ab794665263499c88dfdf06009c6477d180a90ebbe86e786ae7f5003c9dc8b3c26224024e79450f3b94688000458f2ea8b1ae1c3691453c3d4df4787 winreg-0.50.0.tar.gz
+9f61edafb4a262b56d130e48ac6bba94f5a432bf0a8c20243e6c8fa98c3f9e0d2ab00a77b35a2e49dd63585a272af597e236e089641b5f488760ac42d22f5a67 winres-0.1.12.tar.gz
+655a207b8082bb88e462f992ecb4833cef9d590da06d6356b41d109df2862b49ee5705189c78a607b549e7343035119d158020d58fcad49608e51659357a83c1 write16-1.0.0.tar.gz
+818b2546c8ec25816aeaf5e31a1ded927d197bf7256e7c5073738c2709bc58a95d382a0256eb38a99235ae83729b578701261866d42ea3357a26024906e196c1 writeable-0.5.5.tar.gz
+256c9b6bb69fcb5d421fd38474ac5c1be8061e38c6909c3de0ddff85237815b02eafd7c13be4a75517ff754db8f102fd1a963e63edccf5236d2ee489071ede5b ws-0.9.2.tar.gz
+18356861fc595efe7d0180afb8ce7649da35a4f9ba456271d2068679ab258a861af32a2e016e241fbfbf5f6ef0eb33127b26eabfc11428af39506538faa4821f ws2_32-sys-0.2.1.tar.gz
+15d86c167145c90e3fbabcefd11754fb1cb835896e32d1bb7f4b027e5b2092f5fdbdca4062c129bc38e655cb87c6a3f4e181747ee25d89db5e01fb1fcac18fe9 wyz-0.5.1.tar.gz
+4047abda42b949cf58f820e15ee99850de483857bbaaef737eeee48e1a2132972470f15bb2ddda56438f6a934918be96607a8de518a5a3dcec7c8ee6c00ad280 xattr-1.3.1.tar.gz
+fe3ed58997146ea715764e2318f01df4a7f38159302cd3705520036fa1e275bff67b97a1fe98e612820a7085b19fc176020b0c7eaa529c39602b9f6c32be62d7 yada-0.5.1.tar.gz
+7621dc8dfd5e7d4a7a8805b2a7e8319b63b852367655f2359d4e3e8fec6c4fad52d75c46ce1161e4c674eac0780b757ce9d34e664e304d8d2beec7afa0363ea0 yaml-rust-0.4.5.tar.gz
+b3d1456e28d53723470644ae15a4298fa96a79593d90729221ca4e45a6f09de4d7c554703425c61595c4e78959652122db95865c0337cc0cd6a4ec57d7bea84d yoke-0.7.4.tar.gz
+5be38b8ae8dcb640a3fcb097e5b118354b45a41a0367afeff3c2ba5d13458524e88f9433848f09c670533d36a49a0e2b393e23368921553b5bb008e66e8e4a40 yoke-derive-0.7.4.tar.gz
+4d27b1230ebcea4e9d4c15f38a979aa3fe8b23833e95df781a0a67054e920637642b89345596fe331907edc27abab83c766967f2a04399a6fe0a4e89fa0dd148 zerocopy-0.7.34.tar.gz
+1bd93062b0d2c699066f8a991326b4470426aae0517d33748a8f0e52b009fc46e6b0b238abe97462a2e13c870fa3d0d070615870e6dbbf8b6991c0e3fb5c3e63 zerocopy-derive-0.7.34.tar.gz
+11f37a67108185a8090cda71338b02492fabd15e6cfe018833a165cd869ed65338e12d7c5680ffb0b763fc3acbdff6fe4df30457653dfe4d79ecc864b69d780f zerofrom-0.1.4.tar.gz
+f2ea4650fcb4e7c3583f0f7c6146c7734cf6e80e07d92c330c6bc6a0a4e0fe14ae3393845713331240c70685e92eec114565c5be21189e687fe6232aef75a9c0 zerofrom-derive-0.1.4.tar.gz
+159cb90d2ee2a2662429141e0948cfb44e7784ba35e92c32b2ac7183d6b69a9318b0617ff4de7b87831f9727f9d5c9d7d4fd3a9b1f54e67ca29a4ed6afc8d046 zerovec-0.10.2.tar.gz
+da4a056e9147142e51a58c3b16a12179433fc889b4efacbadd1294bb5a750860201a472bf7d72a10e7e82e95d97761a67ec93a727620c1c1844a15362f6736ea zerovec-derive-0.10.2.tar.gz
+1106ec19018c7db15ef5c1db97883f8125e647336aab1579f02123b83452e97c9f2b53ebea72f4845e5b79f048e5802917a2d9fa215c9cac3892c3a1b14074eb zune-core-0.4.12.tar.gz
+0de30f310121c1fed42612b7bcb50631d699195a77c7ce4094729f502e63d1ae38034d6054d95b6825e7e9a2afb7bb614ff123e12736163fee04a46ef1dc56bd zune-inflate-0.2.54.tar.gz
+15bbe43bd963138a6750939b94225039b778fceb4af369438425096a2700b25083555c371a5cb80f5f3456664f072bdf5fee9ffb886480bebcd0939dc775eac6 zune-jpeg-0.4.11.tar.gz"
diff --git a/user/zola/ring-use-generic-implementation-on-non-sse2-x86.patch b/user/zola/ring-use-generic-implementation-on-non-sse2-x86.patch
new file mode 100644
index 000000000..e0b17d163
--- /dev/null
+++ b/user/zola/ring-use-generic-implementation-on-non-sse2-x86.patch
@@ -0,0 +1,430 @@
+Patch source:
+
+* https://github.com/briansmith/ring/issues/1999
+* https://salsa.debian.org/rust-team/debcargo-conf/-/commit/ace5e3fc96a8b0d85150c399d5f79c314abd4a60
+
+This patch was modified from upstream in the following ways:
+
+* sed -e 's@rust-ring-0.17.8/@b/ring-0.17.8/@g' \
+ -e 's@rust-ring-0.17.8.orig/@a/ring-0.17.8/@g'
+* remove `use std`; replace `env` with `std::env`
+
+Description: Avoid using the x86-specific implementations on non-sse2 x86
+ Upstream has said that the x86-specific implementation requires sse2, and
+ now enforces this via a static assert.
+
+ This patch replaces all checks in "src" for x86 with checks for x86 with
+ sse2 and also inhibits the build of assembler on x86 without sse2. This should
+ cause the generic implementations to be used.
+
+ The changes to "src" were created with the command
+ for file in `find src -name '*.rs'` ; do sed -i 's/target_arch = "x86"/all(target_arch = "x86", target_feature = "sse2")/g' $file ; done
+Author: Peter Michael Green <plugwash@debian.org>
+
+Index: b/ring-0.17.8/src/aead/aes.rs
+===================================================================
+--- a/ring-0.17.8/src/aead/aes.rs
++++ b/ring-0.17.8/src/aead/aes.rs
+@@ -149,7 +149,7 @@ impl Key {
+ target_arch = "aarch64",
+ target_arch = "arm",
+ target_arch = "x86_64",
+- target_arch = "x86"
++ all(target_arch = "x86", target_feature = "sse2")
+ ))]
+ Implementation::HWAES => {
+ set_encrypt_key!(aes_hw_set_encrypt_key, bytes, key_bits, &mut key)?
+@@ -159,7 +159,7 @@ impl Key {
+ target_arch = "aarch64",
+ target_arch = "arm",
+ target_arch = "x86_64",
+- target_arch = "x86"
++ all(target_arch = "x86", target_feature = "sse2")
+ ))]
+ Implementation::VPAES_BSAES => {
+ set_encrypt_key!(vpaes_set_encrypt_key, bytes, key_bits, &mut key)?
+@@ -180,7 +180,7 @@ impl Key {
+ target_arch = "aarch64",
+ target_arch = "arm",
+ target_arch = "x86_64",
+- target_arch = "x86"
++ all(target_arch = "x86", target_feature = "sse2")
+ ))]
+ Implementation::HWAES => encrypt_block!(aes_hw_encrypt, a, self),
+
+@@ -188,7 +188,7 @@ impl Key {
+ target_arch = "aarch64",
+ target_arch = "arm",
+ target_arch = "x86_64",
+- target_arch = "x86"
++ all(target_arch = "x86", target_feature = "sse2")
+ ))]
+ Implementation::VPAES_BSAES => encrypt_block!(vpaes_encrypt, a, self),
+
+@@ -219,7 +219,7 @@ impl Key {
+ target_arch = "aarch64",
+ target_arch = "arm",
+ target_arch = "x86_64",
+- target_arch = "x86"
++ all(target_arch = "x86", target_feature = "sse2")
+ ))]
+ Implementation::HWAES => {
+ ctr32_encrypt_blocks!(aes_hw_ctr32_encrypt_blocks, in_out, src, &self.inner, ctr)
+@@ -263,7 +263,7 @@ impl Key {
+ ctr32_encrypt_blocks!(vpaes_ctr32_encrypt_blocks, in_out, src, &self.inner, ctr)
+ }
+
+- #[cfg(target_arch = "x86")]
++ #[cfg(all(target_arch = "x86", target_feature = "sse2"))]
+ Implementation::VPAES_BSAES => {
+ super::shift::shift_full_blocks(in_out, src, |input| {
+ self.encrypt_iv_xor_block(ctr.increment(), Block::from(input), cpu_features)
+@@ -365,7 +365,7 @@ pub enum Implementation {
+ target_arch = "aarch64",
+ target_arch = "arm",
+ target_arch = "x86_64",
+- target_arch = "x86"
++ all(target_arch = "x86", target_feature = "sse2")
+ ))]
+ HWAES = 1,
+
+@@ -374,7 +374,7 @@ pub enum Implementation {
+ target_arch = "aarch64",
+ target_arch = "arm",
+ target_arch = "x86_64",
+- target_arch = "x86"
++ all(target_arch = "x86", target_feature = "sse2")
+ ))]
+ VPAES_BSAES = 2,
+
+@@ -387,7 +387,7 @@ fn detect_implementation(cpu_features: c
+ target_arch = "aarch64",
+ target_arch = "arm",
+ target_arch = "x86_64",
+- target_arch = "x86"
++ all(target_arch = "x86", target_feature = "sse2")
+ )))]
+ let _cpu_features = cpu_features;
+
+@@ -398,14 +398,14 @@ fn detect_implementation(cpu_features: c
+ }
+ }
+
+- #[cfg(any(target_arch = "x86_64", target_arch = "x86"))]
++ #[cfg(any(target_arch = "x86_64", all(target_arch = "x86", target_feature = "sse2")))]
+ {
+ if cpu::intel::AES.available(cpu_features) {
+ return Implementation::HWAES;
+ }
+ }
+
+- #[cfg(any(target_arch = "x86_64", target_arch = "x86"))]
++ #[cfg(any(target_arch = "x86_64", all(target_arch = "x86", target_feature = "sse2")))]
+ {
+ if cpu::intel::SSSE3.available(cpu_features) {
+ return Implementation::VPAES_BSAES;
+Index: b/ring-0.17.8/src/aead/chacha.rs
+===================================================================
+--- a/ring-0.17.8/src/aead/chacha.rs
++++ b/ring-0.17.8/src/aead/chacha.rs
+@@ -20,7 +20,7 @@ use super::{quic::Sample, Nonce};
+ not(any(
+ target_arch = "aarch64",
+ target_arch = "arm",
+- target_arch = "x86",
++ all(target_arch = "x86", target_feature = "sse2"),
+ target_arch = "x86_64"
+ ))
+ ))]
+@@ -75,7 +75,7 @@ impl Key {
+ // has this limitation and come up with a better solution.
+ //
+ // https://rt.openssl.org/Ticket/Display.html?id=4362
+- if cfg!(any(target_arch = "arm", target_arch = "x86")) && src.start != 0 {
++ if cfg!(any(target_arch = "arm", all(target_arch = "x86", target_feature = "sse2"))) && src.start != 0 {
+ let len = in_out.len() - src.start;
+ in_out.copy_within(src, 0);
+ self.encrypt_in_place(counter, &mut in_out[..len]);
+@@ -91,7 +91,7 @@ impl Key {
+ #[cfg(any(
+ target_arch = "aarch64",
+ target_arch = "arm",
+- target_arch = "x86",
++ all(target_arch = "x86", target_feature = "sse2"),
+ target_arch = "x86_64"
+ ))]
+ #[inline(always)]
+@@ -128,7 +128,7 @@ impl Key {
+ #[cfg(not(any(
+ target_arch = "aarch64",
+ target_arch = "arm",
+- target_arch = "x86",
++ all(target_arch = "x86", target_feature = "sse2"),
+ target_arch = "x86_64"
+ )))]
+ use fallback::ChaCha20_ctr32;
+@@ -169,7 +169,7 @@ impl Counter {
+ not(any(
+ target_arch = "aarch64",
+ target_arch = "arm",
+- target_arch = "x86",
++ all(target_arch = "x86", target_feature = "sse2"),
+ target_arch = "x86_64"
+ ))
+ ))]
+@@ -219,7 +219,7 @@ mod tests {
+ let max_offset = if cfg!(any(
+ target_arch = "aarch64",
+ target_arch = "arm",
+- target_arch = "x86",
++ all(target_arch = "x86", target_feature = "sse2"),
+ target_arch = "x86_64"
+ )) {
+ MAX_ALIGNMENT_AND_OFFSET
+Index: b/ring-0.17.8/src/aead/gcm.rs
+===================================================================
+--- a/ring-0.17.8/src/aead/gcm.rs
++++ b/ring-0.17.8/src/aead/gcm.rs
+@@ -57,7 +57,7 @@ impl Key {
+ target_arch = "aarch64",
+ target_arch = "arm",
+ target_arch = "x86_64",
+- target_arch = "x86"
++ all(target_arch = "x86", target_feature = "sse2")
+ ))]
+ Implementation::CLMUL => {
+ prefixed_extern! {
+@@ -185,7 +185,7 @@ impl Context {
+ target_arch = "aarch64",
+ target_arch = "arm",
+ target_arch = "x86_64",
+- target_arch = "x86"
++ all(target_arch = "x86", target_feature = "sse2")
+ ))]
+ Implementation::CLMUL => {
+ prefixed_extern! {
+@@ -236,7 +236,7 @@ impl Context {
+ target_arch = "aarch64",
+ target_arch = "arm",
+ target_arch = "x86_64",
+- target_arch = "x86"
++ all(target_arch = "x86", target_feature = "sse2")
+ ))]
+ Implementation::CLMUL => {
+ prefixed_extern! {
+@@ -339,7 +339,7 @@ enum Implementation {
+ target_arch = "aarch64",
+ target_arch = "arm",
+ target_arch = "x86_64",
+- target_arch = "x86"
++ all(target_arch = "x86", target_feature = "sse2")
+ ))]
+ CLMUL,
+
+@@ -356,7 +356,7 @@ fn detect_implementation(cpu_features: c
+ target_arch = "aarch64",
+ target_arch = "arm",
+ target_arch = "x86_64",
+- target_arch = "x86"
++ all(target_arch = "x86", target_feature = "sse2")
+ )))]
+ let _cpu_features = cpu_features;
+
+@@ -367,7 +367,7 @@ fn detect_implementation(cpu_features: c
+ }
+ }
+
+- #[cfg(any(target_arch = "x86_64", target_arch = "x86"))]
++ #[cfg(any(target_arch = "x86_64", all(target_arch = "x86", target_feature = "sse2")))]
+ {
+ if cpu::intel::FXSR.available(cpu_features) && cpu::intel::PCLMULQDQ.available(cpu_features)
+ {
+Index: b/ring-0.17.8/src/aead/shift.rs
+===================================================================
+--- a/ring-0.17.8/src/aead/shift.rs
++++ b/ring-0.17.8/src/aead/shift.rs
+@@ -14,7 +14,7 @@
+
+ use super::block::{Block, BLOCK_LEN};
+
+-#[cfg(target_arch = "x86")]
++#[cfg(all(target_arch = "x86", target_feature = "sse2"))]
+ pub fn shift_full_blocks<F>(in_out: &mut [u8], src: core::ops::RangeFrom<usize>, mut transform: F)
+ where
+ F: FnMut(&[u8; BLOCK_LEN]) -> Block,
+Index: b/ring-0.17.8/src/arithmetic/montgomery.rs
+===================================================================
+--- a/ring-0.17.8/src/arithmetic/montgomery.rs
++++ b/ring-0.17.8/src/arithmetic/montgomery.rs
+@@ -128,7 +128,7 @@ unsafe fn mul_mont(
+ #[cfg(not(any(
+ target_arch = "aarch64",
+ target_arch = "arm",
+- target_arch = "x86",
++ all(target_arch = "x86", target_feature = "sse2"),
+ target_arch = "x86_64"
+ )))]
+ // TODO: Stop calling this from C and un-export it.
+@@ -168,7 +168,7 @@ prefixed_export! {
+ not(any(
+ target_arch = "aarch64",
+ target_arch = "arm",
+- target_arch = "x86",
++ all(target_arch = "x86", target_feature = "sse2"),
+ target_arch = "x86_64"
+ ))
+ ))]
+@@ -201,7 +201,7 @@ pub(super) fn limbs_from_mont_in_place(r
+ #[cfg(not(any(
+ target_arch = "aarch64",
+ target_arch = "arm",
+- target_arch = "x86",
++ all(target_arch = "x86", target_feature = "sse2"),
+ target_arch = "x86_64"
+ )))]
+ fn limbs_mul(r: &mut [Limb], a: &[Limb], b: &[Limb]) {
+@@ -223,7 +223,7 @@ fn limbs_mul(r: &mut [Limb], a: &[Limb],
+ target_arch = "aarch64",
+ target_arch = "arm",
+ target_arch = "x86_64",
+- target_arch = "x86"
++ all(target_arch = "x86", target_feature = "sse2")
+ ))
+ ))]
+ prefixed_extern! {
+@@ -236,7 +236,7 @@ prefixed_extern! {
+ target_arch = "aarch64",
+ target_arch = "arm",
+ target_arch = "x86_64",
+- target_arch = "x86"
++ all(target_arch = "x86", target_feature = "sse2")
+ ))]
+ prefixed_extern! {
+ // `r` and/or 'a' and/or 'b' may alias.
+Index: b/ring-0.17.8/src/cpu.rs
+===================================================================
+--- a/ring-0.17.8/src/cpu.rs
++++ b/ring-0.17.8/src/cpu.rs
+@@ -27,13 +27,13 @@ pub(crate) fn features() -> Features {
+ #[cfg(any(target_arch = "aarch64", target_arch = "arm"))]
+ use arm::init_global_shared_with_assembly;
+
+- #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
++ #[cfg(any(all(target_arch = "x86", target_feature = "sse2"), target_arch = "x86_64"))]
+ use intel::init_global_shared_with_assembly;
+
+ #[cfg(any(
+ target_arch = "aarch64",
+ target_arch = "arm",
+- target_arch = "x86",
++ all(target_arch = "x86", target_feature = "sse2"),
+ target_arch = "x86_64",
+ ))]
+ {
+@@ -47,5 +47,5 @@ pub(crate) fn features() -> Features {
+ #[cfg(any(target_arch = "aarch64", target_arch = "arm"))]
+ pub mod arm;
+
+-#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
++#[cfg(any(all(target_arch = "x86", target_feature = "sse2"), target_arch = "x86_64"))]
+ pub mod intel;
+Index: b/ring-0.17.8/src/cpu/intel.rs
+===================================================================
+--- a/ring-0.17.8/src/cpu/intel.rs
++++ b/ring-0.17.8/src/cpu/intel.rs
+@@ -13,11 +13,11 @@
+ // CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+
+ #![cfg_attr(
+- not(any(target_arch = "x86", target_arch = "x86_64")),
++ not(any(all(target_arch = "x86", target_feature = "sse2"), target_arch = "x86_64")),
+ allow(dead_code)
+ )]
+
+-#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
++#[cfg(any(all(target_arch = "x86", target_feature = "sse2"), target_arch = "x86_64"))]
+ mod abi_assumptions {
+ // TOOD: Support targets that do not have SSE and SSE2 enabled, such as
+ // x86_64-unknown-linux-none. See
+@@ -29,7 +29,7 @@ mod abi_assumptions {
+
+ #[cfg(target_arch = "x86_64")]
+ const _ASSUMED_POINTER_SIZE: usize = 8;
+- #[cfg(target_arch = "x86")]
++ #[cfg(all(target_arch = "x86", target_feature = "sse2"))]
+ const _ASSUMED_POINTER_SIZE: usize = 4;
+ const _ASSUMED_USIZE_SIZE: () = assert!(core::mem::size_of::<usize>() == _ASSUMED_POINTER_SIZE);
+ const _ASSUMED_REF_SIZE: () =
+@@ -43,7 +43,7 @@ pub(crate) struct Feature {
+ mask: u32,
+ }
+
+-#[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
++#[cfg(any(all(target_arch = "x86", target_feature = "sse2"), target_arch = "x86_64"))]
+ pub(super) unsafe fn init_global_shared_with_assembly() {
+ prefixed_extern! {
+ fn OPENSSL_cpuid_setup();
+@@ -57,7 +57,7 @@ impl Feature {
+ #[allow(clippy::needless_return)]
+ #[inline(always)]
+ pub fn available(&self, _: super::Features) -> bool {
+- #[cfg(any(target_arch = "x86", target_arch = "x86_64"))]
++ #[cfg(any(all(target_arch = "x86", target_feature = "sse2"), target_arch = "x86_64"))]
+ {
+ prefixed_extern! {
+ static mut OPENSSL_ia32cap_P: [u32; 4];
+@@ -65,7 +65,7 @@ impl Feature {
+ return self.mask == self.mask & unsafe { OPENSSL_ia32cap_P[self.word] };
+ }
+
+- #[cfg(not(any(target_arch = "x86", target_arch = "x86_64")))]
++ #[cfg(not(any(all(target_arch = "x86", target_feature = "sse2"), target_arch = "x86_64")))]
+ {
+ return false;
+ }
+Index: b/ring-0.17.8/src/prefixed.rs
+===================================================================
+--- a/ring-0.17.8/src/prefixed.rs
++++ b/ring-0.17.8/src/prefixed.rs
+@@ -44,7 +44,7 @@ macro_rules! prefixed_extern {
+ #[cfg(not(any(
+ target_arch = "aarch64",
+ target_arch = "arm",
+- target_arch = "x86",
++ all(target_arch = "x86", target_feature = "sse2"),
+ target_arch = "x86_64"
+ )))]
+ macro_rules! prefixed_export {
+Index: b/ring-0.17.8/build.rs
+===================================================================
+--- a/ring-0.17.8/build.rs
++++ b/ring-0.17.8/build.rs
+@@ -430,7 +430,7 @@ fn build_c_code(
+
+ generate_prefix_symbols_asm_headers(out_dir, ring_core_prefix).unwrap();
+
+- let (asm_srcs, obj_srcs) = if let Some(asm_target) = asm_target {
++ let (mut asm_srcs, mut obj_srcs) = if let Some(asm_target) = asm_target {
+ let perlasm_src_dsts = perlasm_src_dsts(asm_dir, asm_target);
+
+ if !use_pregenerated {
+@@ -454,6 +454,19 @@ fn build_c_code(
+ (vec![], vec![])
+ };
+
++ if target.arch == "x86" {
++ let mut havesse2 = false;
++ for target_feature in std::env::var("CARGO_CFG_TARGET_FEATURE").unwrap_or("".to_string()).split(",") {
++ if target_feature == "sse2" {
++ havesse2 = true;
++ }
++ }
++ if !havesse2 {
++ asm_srcs = vec![];
++ obj_srcs = vec![];
++ }
++ }
++
+ let core_srcs = sources_for_arch(&target.arch)
+ .into_iter()
+ .filter(|p| !is_perlasm(p))
diff --git a/user/zstd/APKBUILD b/user/zstd/APKBUILD
deleted file mode 100644
index dc23629a8..000000000
--- a/user/zstd/APKBUILD
+++ /dev/null
@@ -1,27 +0,0 @@
-# Contributor: A. Wilcox <awilfox@adelielinux.org>
-# Maintainer: A. Wilcox <awilfox@adelielinux.org>
-pkgname=zstd
-pkgver=1.3.8
-pkgrel=0
-pkgdesc="Fast real-time compression algorithm"
-url="https://facebook.github.io/zstd/"
-arch="all"
-license="BSD-3-Clause AND GPL-2.0-only"
-depends=""
-makedepends="lz4-dev xz-dev zlib-dev"
-subpackages="$pkgname-dev $pkgname-doc"
-source="https://github.com/facebook/zstd/releases/download/v$pkgver/zstd-$pkgver.tar.gz"
-
-build() {
- make PREFIX="/usr"
-}
-
-check() {
- make PREFIX="/usr" check
-}
-
-package() {
- make PREFIX="/usr" DESTDIR="$pkgdir" install
-}
-
-sha512sums="5c1c0a7a998b814a9edc1466f6d321b0d8ffcf927295fd5499137c9075a8823be03d98f61ea5212d1969f8d52b32e940b1cc10d1507d7702424ea2eea0e79a1b zstd-1.3.8.tar.gz"